From da0200d1bd8de7a94a3e982b349f384fd3885164 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 13:20:28 -0700 Subject: [PATCH 01/43] Initial commit and fork of theme --- .github/FUNDING.yml | 1 - .gitignore | 0 404.html | 0 Gemfile | 0 Gemfile.lock | 0 LICENSE.txt | 2 +- README.md | 20 ++-- _config.yml | 47 ++++---- _includes/adsense-under-header.html | 0 _includes/disqus.html | 0 _includes/featuredbox.html | 4 +- _includes/pagination.html | 0 _includes/postbox.html | 0 _includes/search-lunr.html | 0 _includes/share.html | 0 _includes/star_rating.html | 0 _includes/star_rating_postbox.html | 0 _includes/toc.html | 0 _layouts/archive.html | 0 _layouts/categories.html | 0 _layouts/default.html | 20 +--- _layouts/page.html | 0 _layouts/post.html | 2 +- _layouts/tags.html | 0 _pages/about.md | 25 +---- _pages/categories.md | 0 _pages/tags.md | 0 _posts/2018-01-11-customer-service.md | 31 ------ _posts/2018-01-11-quick-start-guide.md | 27 ----- _posts/2018-01-12-is-intelligence-enough.md | 19 ---- ...never-stopped-worrying-never-loved-bomb.md | 13 --- ...tions-for-creating-new-site-with-jekyll.md | 15 --- _posts/2018-01-12-press-and-education.md | 20 ---- _posts/2018-01-12-red-riding.md | 16 --- _posts/2018-01-12-tree-of-codes.md | 18 --- _posts/2018-01-12-we-all-wait-for-summer.md | 11 -- _posts/2018-05-12-about-bundler.md | 17 --- _posts/2018-06-12-acumulated-experience.md | 16 --- _posts/2018-06-12-education.md | 51 --------- _posts/2018-06-12-first-mass-produced.md | 16 --- ...8-06-12-powerful-things-markdown-editor.md | 104 ------------------ _posts/2020-03-17-welcome.md | 19 ++++ _sass/_stars.scss | 0 _sass/_starsnonscss.scss | 0 _sass/_syntax.scss | 0 assets/css/main.scss | 0 assets/css/screen.css | 3 +- assets/fonts/casper-icons.eot | Bin assets/fonts/casper-icons.svg | 0 assets/fonts/casper-icons.ttf | Bin assets/fonts/casper-icons.woff | Bin assets/images/01.svg | 1 + assets/images/1.jpg | Bin 190169 -> 0 bytes assets/images/10.jpg | Bin 246378 -> 0 bytes assets/images/11.jpg | Bin 90189 -> 0 bytes assets/images/12.jpg | Bin 111407 -> 0 bytes assets/images/13.jpg | Bin 42701 -> 0 bytes assets/images/14.jpg | Bin 57704 -> 0 bytes assets/images/15.jpg | Bin 70673 -> 0 bytes assets/images/16.jpg | Bin 84026 -> 0 bytes assets/images/17.jpg | Bin 82673 -> 0 bytes assets/images/2.jpg | Bin 65754 -> 0 bytes assets/images/3.jpg | Bin 154025 -> 0 bytes assets/images/4.jpg | Bin 259454 -> 0 bytes assets/images/5.jpg | Bin 55534 -> 0 bytes assets/images/6.jpg | Bin 66726 -> 0 bytes assets/images/7.jpg | Bin 67400 -> 0 bytes assets/images/8.jpg | Bin 164902 -> 0 bytes assets/images/9.jpg | Bin 51708 -> 0 bytes assets/images/avatar.png | Bin 24906 -> 0 bytes assets/images/favicon.ico | Bin 101879 -> 5430 bytes assets/images/jumbotron.jpg | Bin 381204 -> 1385015 bytes assets/images/log.png | Bin 4911 -> 0 bytes assets/images/logo.png | Bin 532 -> 0 bytes assets/images/logo_no_text.png | Bin 0 -> 55661 bytes assets/images/mediumish-jekyll-template.png | Bin 1239255 -> 0 bytes assets/js/ie10-viewport-bug-workaround.js | 0 assets/js/jquery.min.js | 0 assets/js/lazyload.js | 0 assets/js/lunr.js | 0 assets/js/lunrsearchengine.js | 0 assets/js/mediumish.js | 0 changelog.md | 0 docker-compose.yml | 0 favicon.ico | Bin 101879 -> 5430 bytes feed.xml | 0 index.html | 0 site/_config.yml | 0 theme-LICENSE.txt | 8 ++ 89 files changed, 68 insertions(+), 458 deletions(-) delete mode 100644 .github/FUNDING.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 404.html mode change 100644 => 100755 Gemfile mode change 100644 => 100755 Gemfile.lock mode change 100644 => 100755 LICENSE.txt mode change 100644 => 100755 README.md mode change 100644 => 100755 _config.yml mode change 100644 => 100755 _includes/adsense-under-header.html mode change 100644 => 100755 _includes/disqus.html mode change 100644 => 100755 _includes/featuredbox.html mode change 100644 => 100755 _includes/pagination.html mode change 100644 => 100755 _includes/postbox.html mode change 100644 => 100755 _includes/search-lunr.html mode change 100644 => 100755 _includes/share.html mode change 100644 => 100755 _includes/star_rating.html mode change 100644 => 100755 _includes/star_rating_postbox.html mode change 100644 => 100755 _includes/toc.html mode change 100644 => 100755 _layouts/archive.html mode change 100644 => 100755 _layouts/categories.html mode change 100644 => 100755 _layouts/default.html mode change 100644 => 100755 _layouts/page.html mode change 100644 => 100755 _layouts/post.html mode change 100644 => 100755 _layouts/tags.html mode change 100644 => 100755 _pages/about.md mode change 100644 => 100755 _pages/categories.md mode change 100644 => 100755 _pages/tags.md delete mode 100644 _posts/2018-01-11-customer-service.md delete mode 100644 _posts/2018-01-11-quick-start-guide.md delete mode 100644 _posts/2018-01-12-is-intelligence-enough.md delete mode 100644 _posts/2018-01-12-never-stopped-worrying-never-loved-bomb.md delete mode 100644 _posts/2018-01-12-options-for-creating-new-site-with-jekyll.md delete mode 100644 _posts/2018-01-12-press-and-education.md delete mode 100644 _posts/2018-01-12-red-riding.md delete mode 100644 _posts/2018-01-12-tree-of-codes.md delete mode 100644 _posts/2018-01-12-we-all-wait-for-summer.md delete mode 100644 _posts/2018-05-12-about-bundler.md delete mode 100644 _posts/2018-06-12-acumulated-experience.md delete mode 100644 _posts/2018-06-12-education.md delete mode 100644 _posts/2018-06-12-first-mass-produced.md delete mode 100644 _posts/2018-06-12-powerful-things-markdown-editor.md create mode 100755 _posts/2020-03-17-welcome.md mode change 100644 => 100755 _sass/_stars.scss mode change 100644 => 100755 _sass/_starsnonscss.scss mode change 100644 => 100755 _sass/_syntax.scss mode change 100644 => 100755 assets/css/main.scss mode change 100644 => 100755 assets/css/screen.css mode change 100644 => 100755 assets/fonts/casper-icons.eot mode change 100644 => 100755 assets/fonts/casper-icons.svg mode change 100644 => 100755 assets/fonts/casper-icons.ttf mode change 100644 => 100755 assets/fonts/casper-icons.woff create mode 100644 assets/images/01.svg delete mode 100644 assets/images/1.jpg delete mode 100644 assets/images/10.jpg delete mode 100644 assets/images/11.jpg delete mode 100644 assets/images/12.jpg delete mode 100644 assets/images/13.jpg delete mode 100644 assets/images/14.jpg delete mode 100644 assets/images/15.jpg delete mode 100644 assets/images/16.jpg delete mode 100644 assets/images/17.jpg delete mode 100644 assets/images/2.jpg delete mode 100644 assets/images/3.jpg delete mode 100644 assets/images/4.jpg delete mode 100644 assets/images/5.jpg delete mode 100644 assets/images/6.jpg delete mode 100644 assets/images/7.jpg delete mode 100644 assets/images/8.jpg delete mode 100644 assets/images/9.jpg delete mode 100644 assets/images/avatar.png delete mode 100644 assets/images/log.png delete mode 100644 assets/images/logo.png create mode 100644 assets/images/logo_no_text.png delete mode 100644 assets/images/mediumish-jekyll-template.png mode change 100644 => 100755 assets/js/ie10-viewport-bug-workaround.js mode change 100644 => 100755 assets/js/jquery.min.js mode change 100644 => 100755 assets/js/lazyload.js mode change 100644 => 100755 assets/js/lunr.js mode change 100644 => 100755 assets/js/lunrsearchengine.js mode change 100644 => 100755 assets/js/mediumish.js mode change 100644 => 100755 changelog.md mode change 100644 => 100755 docker-compose.yml mode change 100644 => 100755 feed.xml mode change 100644 => 100755 index.html mode change 100644 => 100755 site/_config.yml create mode 100755 theme-LICENSE.txt diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index b6a9a503f4..0000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: ['https://www.wowthemes.net/donate/'] diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/404.html b/404.html old mode 100644 new mode 100755 diff --git a/Gemfile b/Gemfile old mode 100644 new mode 100755 diff --git a/Gemfile.lock b/Gemfile.lock old mode 100644 new mode 100755 diff --git a/LICENSE.txt b/LICENSE.txt old mode 100644 new mode 100755 index 61f4e6478d..23417c87d1 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2019 WowThemes.net +Copyright (c) 2020 Aidan Pine License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md old mode 100644 new mode 100755 index a1ff70173f..19b4e226ed --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ -# Mediumish - Jekyll Theme - -[Live Demo](https://wowthemesnet.github.io/mediumish-theme-jekyll/)   |   [Download](https://github.com/wowthemesnet/mediumish-theme-jekyll/archive/master.zip)   |   [Documentation](https://bootstrapstarter.com/bootstrap-templates/template-mediumish-bootstrap-jekyll/)   |   [Buy me a coffee](https://www.wowthemes.net/donate/) - -![mediumish](assets/images/mediumish-jekyll-template.png) +# Mother Tongues Blog +Welcome to the Mother Tongues Blog repository. ### Copyright -Copyright (C) 2019 Sal, https://www.wowthemes.net - -**Mediumish for Jekyll** is designed and developed by [Sal](https://www.wowthemes.net) and it is *free* under MIT license. +Copyright Theme (C) 2019 Sal, https://www.wowthemes.net +Copyright Blog (C) 2020 Aidan, https://aidanpine.ca -Buy Me A Coffee +Posts are copyrighted by authors! ### Contribute -1. [Fork the repo](https://github.com/wowthemesnet/mediumish-theme-jekyll). +1. [Fork the repo](https://github.com/roedoejet/mothertongues-blog). 2. Clone a copy of your fork on your local 3. Create a branch off of master and give it a meaningful name (e.g. my-new-mediumish-feature). 4. Make necessary changes, commit, push and open a pull request on GitHub. +### Acknowledgements + +This blog was created from a fork of the fantastic [WowThemes Mediumish theme](https://wowthemesnet.github.io/mediumish-theme-jekyll/) + Thank you! diff --git a/_config.yml b/_config.yml old mode 100644 new mode 100755 index 8f192fabcd..a44c01771c --- a/_config.yml +++ b/_config.yml @@ -1,35 +1,26 @@ # Site -name: "Mediumish" -title: "Mediumish" -description: "Jekyll template, Medium styled, free for bloggers." -logo: 'assets/images/logo.png' -favicon: 'assets/images/logo.png' -baseurl: /mediumish-theme-jekyll -google_analytics: 'UA-46278016-1' -disqus: 'demowebsite' -mailchimp-list: 'https://wowthemes.us11.list-manage.com/subscribe/post?u=8aeb20a530e124561927d3bd8&id=8c3d2d214b' +name: "Mother Tongues Blog" +title: "Mother Tongues Blog" +description: "Smashing the lore of language technology!" +logo: 'assets/images/logo_no_text.png' +favicon: 'assets/images/favicon.ico' +baseurl: '/mothertongues-blog' +google_analytics: 'UA-100872710-18' +disqus: 'mothertongues' +mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' include: ["_pages"] permalink: /:title/ # Authors authors: - sal: - name: Sal - display_name: Sal - gravatar: e56154546cf4be74e393c62d1ae9f9d4 - email: wowthemesnet@gmail.com - web: https://www.wowthemes.net - twitter: https://twitter.com/wowthemesnet - description: "Author of Mediumish, a Bootstrap Medium styled template available for WordPress, HTML, Ghost and Jekyll. You are currently previewing Jekyll template demo." - john: - name: John - display_name: John - avatar: 'assets/images/avatar.png' - gravatar: b1cc14991db7a456fcd761680bbc8f81 - email: wowthemesnet@gmail.com - web: https://www.wowthemes.net - twitter: https://twitter.com/wowthemesnet - description: "This is the author box. Write a short description of the author here. You are currently previewing Mediumish demo, a Jekyll template compatible with Github pages." + aidan: + name: Aidan + display_name: Aidan + gravatar: 7623fd3eeb0acbe1084fecc20c3093ae + email: hello@aidanpine.ca + web: https://aidanpine.ca + twitter: https://twitter.com/aidanpine + description: "Lead developer of Mother Tongues." # Plugins plugins: @@ -63,8 +54,8 @@ kramdown: # Adsense (change to "enabled" to activate, also your client id and ad slot. Create a new ad unit from your Adsense account to get the slot.) adsense: "disabled" -adsense-data-ad-client: "ca-pub-3412143450191416" -adsense-data-ad-slot: "1363087678" +# adsense-data-ad-client: "ca-pub-3412143450191416" +# adsense-data-ad-slot: "1363087678" # Lazy Images ("enabled" or "disabled") lazyimages: "disabled" diff --git a/_includes/adsense-under-header.html b/_includes/adsense-under-header.html old mode 100644 new mode 100755 diff --git a/_includes/disqus.html b/_includes/disqus.html old mode 100644 new mode 100755 diff --git a/_includes/featuredbox.html b/_includes/featuredbox.html old mode 100644 new mode 100755 index 90f1b2902d..f5fc132550 --- a/_includes/featuredbox.html +++ b/_includes/featuredbox.html @@ -3,6 +3,7 @@
+ {% if post.image %}
@@ -16,6 +17,7 @@
+ {% endif %}
@@ -46,7 +48,7 @@

{{ post.excerpt | strip_html | truncatewords:25 }}

{% endif %} - +
diff --git a/_includes/pagination.html b/_includes/pagination.html old mode 100644 new mode 100755 diff --git a/_includes/postbox.html b/_includes/postbox.html old mode 100644 new mode 100755 diff --git a/_includes/search-lunr.html b/_includes/search-lunr.html old mode 100644 new mode 100755 diff --git a/_includes/share.html b/_includes/share.html old mode 100644 new mode 100755 diff --git a/_includes/star_rating.html b/_includes/star_rating.html old mode 100644 new mode 100755 diff --git a/_includes/star_rating_postbox.html b/_includes/star_rating_postbox.html old mode 100644 new mode 100755 diff --git a/_includes/toc.html b/_includes/toc.html old mode 100644 new mode 100755 diff --git a/_layouts/archive.html b/_layouts/archive.html old mode 100644 new mode 100755 diff --git a/_layouts/categories.html b/_layouts/categories.html old mode 100644 new mode 100755 diff --git a/_layouts/default.html b/_layouts/default.html old mode 100644 new mode 100755 index 337b917db3..3fa6a68be8 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -36,7 +36,7 @@ @@ -49,7 +49,7 @@ - {{ site.name }} + {{ site.name }} Mother Tongues @@ -75,22 +75,6 @@ About - - - - - - - - {% include search-lunr.html %} diff --git a/_layouts/page.html b/_layouts/page.html old mode 100644 new mode 100755 diff --git a/_layouts/post.html b/_layouts/post.html old mode 100644 new mode 100755 index 418d42cede..cdeda5e829 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -54,7 +54,7 @@

{{ page.title }}

{% if site.lazyimages == "enabled" %} {{ page.title }} - {% else %} + {% else if page.image %} {{ page.title }} {% endif %} diff --git a/_layouts/tags.html b/_layouts/tags.html old mode 100644 new mode 100755 diff --git a/_pages/about.md b/_pages/about.md old mode 100644 new mode 100755 index da251d91cf..de24d09b00 --- a/_pages/about.md +++ b/_pages/about.md @@ -1,6 +1,6 @@ --- layout: page -title: Mediumish Template for Jekyll +title: permalink: /about comments: true --- @@ -8,28 +8,7 @@ comments: true
-

This website is built with Jekyll and Mediumish template for Jekyll. It's for demonstration purposes, no real content can be found. Mediumish template for Jekyll is compatible with Github pages, in fact even this demo is created with Github Pages and hosted with Github.

+

Welome to the Mother Tongues Blog.

-

jekyll template mediumish

-

Documentation

- -

Please, read the docs here.

- -

Questions or bug reports?

- -

Head over to our Github repository!

- -
- -
- -
-
Buy me a coffee
- -

Thank you for your support! Your donation helps me to maintain and improve Mediumish .

- -Buy me a coffee Documentation - -
diff --git a/_pages/categories.md b/_pages/categories.md old mode 100644 new mode 100755 diff --git a/_pages/tags.md b/_pages/tags.md old mode 100644 new mode 100755 diff --git a/_posts/2018-01-11-customer-service.md b/_posts/2018-01-11-customer-service.md deleted file mode 100644 index 902b51bfc7..0000000000 --- a/_posts/2018-01-11-customer-service.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Inception Movie" -author: john -categories: [ Jekyll, tutorial ] -tags: [red, yellow] -image: assets/images/11.jpg -description: "My review of Inception movie. Acting, plot and something else in this short description." -featured: true -hidden: true -rating: 4.5 ---- - -Review products, books, movies, restaurant and anything you like on your Jekyll blog with Mediumish! JSON-LD ready for review property. - -#### How to use? - -It's actually really simple! Add the rating in your YAML front matter. It also supports halfs: - -```html ---- -layout: post -title: "Inception Movie" -author: john -categories: [ Jekyll, tutorial ] -tags: [red, yellow] -image: assets/images/11.jpg -description: "My review of Inception movie. Actors, directing and more." -rating: 4.5 ---- -``` diff --git a/_posts/2018-01-11-quick-start-guide.md b/_posts/2018-01-11-quick-start-guide.md deleted file mode 100644 index 178e04003c..0000000000 --- a/_posts/2018-01-11-quick-start-guide.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: post -title: "Let's test spoilers" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/12.jpg -featured: true -hidden: true ---- - -Director Roland Suso Richter's enigmatic psychological thriller (direct to video/DVD) was based upon screenwriter Michael Cooney's own play "Point of Death" - a title that gave away the film's entire plot twist premise. - -As in many similar films, such as Jacob's Ladder (1990), Soul Survivors (2001), and The Butterfly Effect (2004), events and people were thoroughly distorted and confused because the protagonist was at the point of death. The tagline was misleading: - -"When You Don't Have a Memory, How Can You Remember Who to Trust?" - -The mind-warping film opened with a hospital patient Simon Cable (Ryan Phillippe) awakening in a hospital with little knowledge (amnesia perhaps?) of what had happened, and why he was there, etc. He was told by attending Dr. Jeremy Newman (Stephen Rea) that it was July 29, 2002 (Simon thought it was the year 2000 - he was confused - he heard a doctor say 20:00 hours!) and that he had died for two minutes from cardiac arrest following the near-fatal accident -- but he had been revived ("You're as good as new"). Dr. Newman: "Simon, this is the 29th of July. The year is 2002. And your wife, whose name is Anna, is waiting outside." - -(The doctor left off four crucial additional words, revealed in the film's ending.) (Spoiler: Simon had died and was not resuscitated!). - -A major clue to everything that truly happened was the scene that played next under the credits - hospital staff failed to bring a patient back to life with a defibrillator after a car accident. Chest compressions failed and there was no pulse. A second major clue was provided by hospital orderly Travis (Stephen Graham): Everybody dies. No mystery there. But why and how everyone dies. Now, there's a mystery worth solving. Probably the biggest mystery there is. - -#### So how do we do spoilers? - -```html -My hidden paragraph here. -``` diff --git a/_posts/2018-01-12-is-intelligence-enough.md b/_posts/2018-01-12-is-intelligence-enough.md deleted file mode 100644 index 707f8d97af..0000000000 --- a/_posts/2018-01-12-is-intelligence-enough.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "External Featured Image" -author: sal -categories: [ Jekyll, tutorial, web development ] -image: "https://images.unsplash.com/photo-1541544537156-7627a7a4aa1c?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=a20c472bc23308e390c8ffae3dd90c60&auto=format&fit=crop&w=750&q=80" ---- -Education must also train one for quick, resolute and effective thinking. To think incisively and to think for one's self is very difficult. - -> We are prone to let our mental life become invaded by legions of half truths, prejudices, and propaganda. At this point, I often wonder whether or not education is fulfilling its purpose. A great majority of the so-called educated people do not think logically and scientifically. - -Even the press, the classroom, the platform, and the pulpit in many instances do not give us objective and unbiased truths. To save man from the morass of propaganda, in my opinion, is one of the chief aims of education. Education must enable one to sift and weigh evidence, to discern the true from the false, the real from the unreal, and the facts from the fiction. - -The function of education, therefore, is to teach one to think intensively and to think critically. But education which stops with efficiency may prove the greatest menace to society. The most dangerous criminal may be the man gifted with reason, but with no morals. - -The late Eugene Talmadge, in my opinion, possessed one of the better minds of Georgia, or even America. Moreover, he wore the Phi Beta Kappa key. By all measuring rods, Mr. Talmadge could think critically and intensively; yet he contends that I am an inferior being. Are those the types of men we call educated? - -We must remember that intelligence is not enough. Intelligence plus character--that is the goal of true education. The complete education gives one not only power of concentration, but worthy objectives upon which to concentrate. The broad education will, therefore, transmit to one not only the accumulated knowledge of the race but also the accumulated experience of social living. - diff --git a/_posts/2018-01-12-never-stopped-worrying-never-loved-bomb.md b/_posts/2018-01-12-never-stopped-worrying-never-loved-bomb.md deleted file mode 100644 index e790de4793..0000000000 --- a/_posts/2018-01-12-never-stopped-worrying-never-loved-bomb.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: post -title: "Never stopped worrying or loving the bomb" -author: sal -categories: [ Jekyll ] -image: assets/images/14.jpg ---- -> I’ve been through fire and water, I tell you! From my earliest pebblehood the wildest things you could imagine have been happening to this world of ours, and I have been right in the midst of them. - -So begins Hallam Hawksworth’s The Strange Adventures of a Pebble. Written in the 1920s, the book was part of a series which also included The Adventures of a Grain of Dust and A Year in the Wonderland of Trees, all of which were supposed to introduce children to the world of Natural Sciences. In each of them, Hawksworth personifies the natural object he is exploring, and using a mixture of folk tales, scientific facts and colloquial, friendly explanations guides the reader through the history of the natural world. It’s a real thrill of a ride, dramatizing the life cycle of supposedly dull things. The Adventures of a Grain of Dust begins even more loudly than Pebble: - -I don’t want you to think that I’m boasting, but I do believe I’m one of the greatest travellers that ever was; and if anybody, living or dead, has ever gone through with more than I have I’d like to hear about it. -Hallam Hawksworth was the pen-name of teacher Francis Blake Atkinson. He was married to the author Eleanor Stackhouse Atkinson, author of the children’s classic Greyfriars Bobby, which was based on the (supposedly) true story of a Scottish dog who spent fourteen years guarding his masters grave. The couple were both committed to education and published a weekly magazine for Chicago high school students called The Little Chronicle, as well as working for Encyclopaedia companies later in life. diff --git a/_posts/2018-01-12-options-for-creating-new-site-with-jekyll.md b/_posts/2018-01-12-options-for-creating-new-site-with-jekyll.md deleted file mode 100644 index c71c09e484..0000000000 --- a/_posts/2018-01-12-options-for-creating-new-site-with-jekyll.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: "Options for creating a new site with Jekyll" -author: john -categories: [ Jekyll, tutorial ] -image: assets/images/13.jpg ---- - -`jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: - -- To install the Jekyll site into the directory you're currently in, run `jekyll new` . If the existing directory isn't empty, you can pass the --force option with jekyll new . --force. -- `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) -- By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called Minima. With gem-based themes, some of the directories and files are stored in the theme-gem, hidden from your immediate view. -- We recommend setting up Jekyll with a gem-based theme but if you want to start with a blank slate, use `jekyll new myblog --blank` -- To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. \ No newline at end of file diff --git a/_posts/2018-01-12-press-and-education.md b/_posts/2018-01-12-press-and-education.md deleted file mode 100644 index 98e8c70d58..0000000000 --- a/_posts/2018-01-12-press-and-education.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: "Press and education" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/7.jpg ---- -Even the press, the classroom, the platform, and the pulpit in many instances do not give us objective and unbiased truths. To save man from the morass of propaganda, in my opinion, is one of the chief aims of education. Education must enable one to sift and weigh evidence, to discern the true from the false, the real from the unreal, and the facts from the fiction. - -Education must also train one for quick, **resolute and effective thinking**. To think incisively and to think for one's self is very difficult. - -> We are prone to let our mental life become invaded by legions of half truths, prejudices, and propaganda. At this point, I often wonder whether or not education is fulfilling its purpose. A great majority of the so-called educated people do not think logically and scientifically. - - -The function of education, therefore, is to teach one to think intensively and to think critically. But education which stops with efficiency may prove the greatest menace to society. The most dangerous criminal may be the man gifted with reason, but with no morals. - -The late Eugene Talmadge, in my opinion, possessed one of the better minds of Georgia, or even America. Moreover, he wore the Phi Beta Kappa key. By all measuring rods, Mr. Talmadge could think critically and intensively; yet he contends that I am an inferior being. Are those the types of men we call educated? - -We must remember that intelligence is not enough. Intelligence plus character--that is the goal of true education. The complete education gives one not only power of concentration, but worthy objectives upon which to concentrate. The broad education will, therefore, transmit to one not only the accumulated knowledge of the race but also the accumulated experience of social living. - diff --git a/_posts/2018-01-12-red-riding.md b/_posts/2018-01-12-red-riding.md deleted file mode 100644 index 66ad47606a..0000000000 --- a/_posts/2018-01-12-red-riding.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post -title: "Red Riding Hood" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/1.jpg ---- -The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. - -An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll… originated with us”. - -> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. - -The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. - -As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original — which sees Little Red Riding Hood being gobbled up as well as her grandmother — is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. diff --git a/_posts/2018-01-12-tree-of-codes.md b/_posts/2018-01-12-tree-of-codes.md deleted file mode 100644 index e5ccc4fbab..0000000000 --- a/_posts/2018-01-12-tree-of-codes.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: post -title: "Tree of Codes" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/9.jpg ---- -The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. - -As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original — which sees Little Red Riding Hood being gobbled up as well as her grandmother — is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. - -> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. - - -An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll… originated with us”. - -The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. - diff --git a/_posts/2018-01-12-we-all-wait-for-summer.md b/_posts/2018-01-12-we-all-wait-for-summer.md deleted file mode 100644 index a8683bc721..0000000000 --- a/_posts/2018-01-12-we-all-wait-for-summer.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: post -title: "We all wait for summer" -author: john -categories: [ Jekyll, tutorial ] -image: assets/images/5.jpg -rating: .5 ---- -As I engage in the so-called "bull sessions" around and about the school, I too often find that most college men have a misconception of the purpose of education. Most of the "brethren" think that education should equip them with the proper instruments of exploitation so that they can forever trample over the masses. Still others think that education should furnish them with noble ends rather than means to an end. - -It seems to me that education has a two-fold function to perform in the life of man and in society: the one is utility and the other is culture. Education must enable a man to become more efficient, to achieve with increasing facility the ligitimate goals of his life. \ No newline at end of file diff --git a/_posts/2018-05-12-about-bundler.md b/_posts/2018-05-12-about-bundler.md deleted file mode 100644 index 5b289c0374..0000000000 --- a/_posts/2018-05-12-about-bundler.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: post -title: "About Bundler" -author: sal -categories: [ Jekyll ] -image: assets/images/2.jpg -rating: 3 ---- -`gem install bundler` installs the bundler gem through RubyGems. You only need to install it once - not every time you create a new Jekyll project. Here are some additional details: - -`bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. - -The `Gemfile` and `Gemfile.lock` files inform `Bundler` about the gem requirements in your site. If your site doesn’t have these Gemfiles, you can omit `bundle exec` and just `run jekyll serve`. - -When you run `bundle exec jekyll serve`, `Bundler` uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. - -For more information about how to use `Bundler` in your Jekyll project, this tutorial should provide answers to the most common questions and explain how to get up and running quickly. diff --git a/_posts/2018-06-12-acumulated-experience.md b/_posts/2018-06-12-acumulated-experience.md deleted file mode 100644 index 40b880569e..0000000000 --- a/_posts/2018-06-12-acumulated-experience.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post -title: "Accumulated experience of social living" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/15.jpg ---- -The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. - -As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original - which sees Little Red Riding Hood being gobbled up as well as her grandmother - is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. - -The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. - -An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll... originated with us”. - -> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. \ No newline at end of file diff --git a/_posts/2018-06-12-education.md b/_posts/2018-06-12-education.md deleted file mode 100644 index 50e19abe61..0000000000 --- a/_posts/2018-06-12-education.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: post -title: "Education must also train one for quick, resolute and effective thinking." -author: john -categories: [ Jekyll, tutorial ] -image: assets/images/3.jpg -beforetoc: "Markdown editor is a very powerful thing. In this article I'm going to show you what you can actually do with it, some tricks and tips while editing your post." -toc: true ---- -There are lots of powerful things you can do with the Markdown editor - -If you've gotten pretty comfortable with writing in Markdown, then you may enjoy some more advanced tips about the types of things you can do with Markdown! - -As with the last post about the editor, you'll want to be actually editing this post as you read it so that you can see all the Markdown code we're using. - - -## Special formatting - -As well as bold and italics, you can also use some other special formatting in Markdown when the need arises, for example: - -+ ~~strike through~~ -+ ==highlight== -+ \*escaped characters\* - - -## Writing code blocks - -There are two types of code elements which can be inserted in Markdown, the first is inline, and the other is block. Inline code is formatted by wrapping any word or words in back-ticks, `like this`. Larger snippets of code can be displayed across multiple lines using triple back ticks: - -``` -.my-link { - text-decoration: underline; -} -``` - -If you want to get really fancy, you can even add syntax highlighting using Rouge. - - -![walking]({{ site.baseurl }}/assets/images/8.jpg) - -## Reference lists - -The quick brown jumped over the lazy. - -Another way to insert links in markdown is using reference lists. You might want to use this style of linking to cite reference material in a Wikipedia-style. All of the links are listed at the end of the document, so you can maintain full separation between content and its source or reference. - -## Full HTML - -Perhaps the best part of Markdown is that you're never limited to just Markdown. You can write HTML directly in the Markdown editor and it will just work as HTML usually does. No limits! Here's a standard YouTube embed code as an example: - -

\ No newline at end of file diff --git a/_posts/2018-06-12-first-mass-produced.md b/_posts/2018-06-12-first-mass-produced.md deleted file mode 100644 index 605b9519df..0000000000 --- a/_posts/2018-06-12-first-mass-produced.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post -title: "The first mass-produced book to deviate from a rectilinear format" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/17.jpg ---- -The first mass-produced book to deviate from a rectilinear format, at least in the United States, is thought to be this 1863 edition of Red Riding Hood, cut into the shape of the protagonist herself with the troublesome wolf curled at her feet. Produced by the Boston-based publisher Louis Prang, this is the first in their “Doll Series”, a set of five “die-cut” books, known also as shape books — the other titles being Robinson Crusoe, Goody Two-Shoes (also written by Red Riding Hood author Lydia Very), Cinderella, and King Winter. - -An 1868 Prang catalogue would later claim that such “books in the shape of a regular paper Doll... originated with us”. - -> It would seem the claim could also extend to die cut books in general, as we can’t find anything sooner, but do let us know in the comments if you have further light to shed on this! Such books are, of course, still popular in children’s publishing today, though the die cutting is not now limited to mere outlines, as evidenced in a beautiful 2014 version of the same Little Red Riding Hood story. - -The die cut has also been employed in the non-juvenile sphere as well, a recent example being Jonathan Safran Foer’s ambitious Tree of Codes. - -As for this particular rendition of Charles Perrault’s classic tale, the text and design is by Lydia Very (1823-1901), sister of Transcendentalist poet Jones Very. The gruesome ending of the original - which sees Little Red Riding Hood being gobbled up as well as her grandmother - is avoided here, the gore giving way to the less bloody aims of the morality tale, and the lesson that one should not disobey one’s mother. diff --git a/_posts/2018-06-12-powerful-things-markdown-editor.md b/_posts/2018-06-12-powerful-things-markdown-editor.md deleted file mode 100644 index 2d0f3f594f..0000000000 --- a/_posts/2018-06-12-powerful-things-markdown-editor.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: post -title: "Powerful things you can do with the Markdown editor" -author: sal -categories: [ Jekyll, tutorial ] -image: assets/images/16.jpg ---- -There are lots of powerful things you can do with the Markdown editor. If you've gotten pretty comfortable with writing in Markdown, then you may enjoy some more advanced tips about the types of things you can do with Markdown! - -As with the last post about the editor, you'll want to be actually editing this post as you read it so that you can see all the Markdown code we're using. - - -## Special formatting - -As well as bold and italics, you can also use some other special formatting in Markdown when the need arises, for example: - -+ ~~strike through~~ -+ ==highlight== -+ \*escaped characters\* - - -## Writing code blocks - -There are two types of code elements which can be inserted in Markdown, the first is inline, and the other is block. Inline code is formatted by wrapping any word or words in back-ticks, `like this`. Larger snippets of code can be displayed across multiple lines using triple back ticks: - -``` -.my-link { - text-decoration: underline; -} -``` - -#### HTML - -```html -
  • - - - -
  • -``` - -#### CSS - -```css -.highlight .c { - color: #999988; - font-style: italic; -} -.highlight .err { - color: #a61717; - background-color: #e3d2d2; -} -``` - -#### JS - -```js -// alertbar later -$(document).scroll(function () { - var y = $(this).scrollTop(); - if (y > 280) { - $('.alertbar').fadeIn(); - } else { - $('.alertbar').fadeOut(); - } -}); -``` - -#### Python - -```python -print("Hello World") -``` - -#### Ruby - -```ruby -require 'redcarpet' -markdown = Redcarpet.new("Hello World!") -puts markdown.to_html -``` - -#### C - -```c -printf("Hello World"); -``` - - - - -![walking]({{ site.baseurl }}/assets/images/8.jpg) - -## Reference lists - -The quick brown jumped over the lazy. - -Another way to insert links in markdown is using reference lists. You might want to use this style of linking to cite reference material in a Wikipedia-style. All of the links are listed at the end of the document, so you can maintain full separation between content and its source or reference. - -## Full HTML - -Perhaps the best part of Markdown is that you're never limited to just Markdown. You can write HTML directly in the Markdown editor and it will just work as HTML usually does. No limits! Here's a standard YouTube embed code as an example: - -

    \ No newline at end of file diff --git a/_posts/2020-03-17-welcome.md b/_posts/2020-03-17-welcome.md new file mode 100755 index 0000000000..37f42931a0 --- /dev/null +++ b/_posts/2020-03-17-welcome.md @@ -0,0 +1,19 @@ +--- +layout: post +title: "Welcome" +author: aidan +categories: [] +tags: [] +image: false +description: "Welcome to the Mother Tongues blog!" +featured: true +hidden: true +--- + +Welcome to the Mother Tongues official blog! + +Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. + +Here you'll find small tips and tricks for developing language technology with a focus on Indigenous languages. + +Be sure to [sign up]({{ site.mailchimp-list }}) to our mailing list to keep track of new blog posts and any events. diff --git a/_sass/_stars.scss b/_sass/_stars.scss old mode 100644 new mode 100755 diff --git a/_sass/_starsnonscss.scss b/_sass/_starsnonscss.scss old mode 100644 new mode 100755 diff --git a/_sass/_syntax.scss b/_sass/_syntax.scss old mode 100644 new mode 100755 diff --git a/assets/css/main.scss b/assets/css/main.scss old mode 100644 new mode 100755 diff --git a/assets/css/screen.css b/assets/css/screen.css old mode 100644 new mode 100755 index b306d2cf27..a598d67f4a --- a/assets/css/screen.css +++ b/assets/css/screen.css @@ -280,6 +280,7 @@ span.post-read-more a:hover { .mediumnavigation .navbar-brand { font-weight: 500; + font-family: Amatic SC; } .mediumnavigation .dropdown-menu { @@ -305,7 +306,7 @@ span.post-read-more a:hover { } .mainheading h1.sitetitle { - font-family: Righteous; + font-family: inherit; } .mainheading h1.posttitle { diff --git a/assets/fonts/casper-icons.eot b/assets/fonts/casper-icons.eot old mode 100644 new mode 100755 diff --git a/assets/fonts/casper-icons.svg b/assets/fonts/casper-icons.svg old mode 100644 new mode 100755 diff --git a/assets/fonts/casper-icons.ttf b/assets/fonts/casper-icons.ttf old mode 100644 new mode 100755 diff --git a/assets/fonts/casper-icons.woff b/assets/fonts/casper-icons.woff old mode 100644 new mode 100755 diff --git a/assets/images/01.svg b/assets/images/01.svg new file mode 100644 index 0000000000..1a8ec72c6c --- /dev/null +++ b/assets/images/01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/1.jpg b/assets/images/1.jpg deleted file mode 100644 index bb467b5ad8a2cebd949979e58162ee78c8747876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190169 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 diff --git a/assets/images/10.jpg b/assets/images/10.jpg deleted file mode 100644 index 8cb636350712d5194d61202224a10df7d23acf09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246378 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

    if!#z@t> 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

    ', ': ' | replace: '', ': ' | replace: '

    ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} - }, {% endfor %}{% for page in site.posts %}{ - "id": {{ counter }}, - "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", - "title": "{{ page.title }}", - "body": "{{ page.date | date: "%Y/%m/%d" }} - {{ page.content | markdownify | replace: '.', '. ' | replace: '', ': ' | replace: '', ': ' | replace: '', ': ' | replace: '

    ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} - }{% if forloop.last %}{% else %}, {% endif %}{% endfor %}]; +var documents = [{ + "id": 0, + "url": "/mothertongues-blog/404.html", + "title": "404", + "body": "404 Page does not exist!Please use the search bar at the top or visit our homepage! " + }, { + "id": 1, + "url": "/mothertongues-blog/about", + "title": "", + "body": "Welome to the Mother Tongues Blog. " + }, { + "id": 2, + "url": "/mothertongues-blog/categories", + "title": "Categories", + "body": "" + }, { + "id": 3, + "url": "/mothertongues-blog/", + "title": "Home", + "body": " Featured: Welcome : Welcome to the Mother Tongues official blog!: Aidan 17 Mar 2020 All Stories: " + }, { + "id": 4, + "url": "/mothertongues-blog/robots.txt", + "title": "", + "body": " Sitemap: {{ “sitemap. xml” absolute_url }} " + }, { + "id": 5, + "url": "/mothertongues-blog/welcome/", + "title": "Welcome", + "body": "2020/03/17 - Welcome to the Mother Tongues official blog! Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. Here you’ll find small tips and tricks for developing language technology with a focus on Indigenous languages. Be sure to sign up to our mailing list to keep track of new blog posts and any events. " + }]; var idx = lunr(function () { this.ref('id') diff --git a/categories.html b/categories.html new file mode 100644 index 0000000000..2cabd7dc1f --- /dev/null +++ b/categories.html @@ -0,0 +1,213 @@ + + + + + + + + +Categories | Mother Tongues Blog + + +Categories | Mother Tongues Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +

    Mother Tongues Blog

    +

    + Smashing the lore of language technology! +

    +
    + + +
    +
    + +
    +
    + + + +
    +
    + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
    +
    + + +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +

    Explore

    +
    +
    +
    + + + + + +
    +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + diff --git a/changelog.md b/changelog.md deleted file mode 100755 index cc8838c3dc..0000000000 --- a/changelog.md +++ /dev/null @@ -1,67 +0,0 @@ -# Mediumish Jekyll Theme - Change Log - -## 2019-05-16, v1.0.36 -- docker-composer.yml -- better responsiveness for 1920x1080 resolution - -## 2019-04-02, v1.0.35 -- Fixed Github pages issue with ratings under 1 -- Added support for local avatars - -## 2019-03-22, v1.0.34 -- Deferred font awesome and google fonts - -## 2019-03-22, v1.0.33 -- Added image lazy load (config.yml - lazyimages: "enabled/disabled") -- Added object cover images instead of background images for home featured cards -- Removed disqus count from homepage for better performance - -## 2019-03-20, v1.0.32 -- Centered avatar image on smaller devices -- Removed .html endings in cats/tags -- Added Linkedin share -- Added Table of Contents (toc:true) -- Added Paragraph before TOC (beforetoc: "My short description here") - - -## 2019-03-20, v1.0.31 -- Added adsense support (activate via _config.yml) -- Fixed share for large headers - -## 2019-03-20, v1.0.30 -- Added Tags support -- Removed Google + sharing, no longer needed - -## 2019-03-01, v1.0.29 -- Fixed Jumbotron categories link - -## 2019-03-01, v1.0.28 -- Added blurred text on spoilers -- Added half stars for ratings - -## 2019-03-01, v1.0.27 -- Reveal hidden spoilers on click -- Syntax line numbers -- Post rating stars -- Fixed category links with more than 1 word - -## 2019-02-14 -- Fixed Feed site title not showing -- Added 404 page - -## 2019-02-10 -- Fixed CSS Jumbotron categories - -## 2019-02-09 -- Fixed Category links are now compatible with Github pages. Archive still available for non Github pages. -- Added Search -- Added SEO - -## 2018-11-08 -- Fixed reponsive footer jumbotron for tags - -## 2018-11-07 -- Added external image support - -## 2018-09-12 -- Added option to disable comments in a specific post with `comments: false` in YAML front matter diff --git a/feed.xml b/feed.xml index a6628bd842..32f1077cc0 100755 --- a/feed.xml +++ b/feed.xml @@ -1,30 +1,30 @@ ---- -layout: null ---- - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }}{{ site.baseurl }}/ - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% for post in site.posts limit:10 %} + Mother Tongues Blog + Smashing the lore of language technology! + /mothertongues-blog/ + + Tue, 17 Mar 2020 21:13:26 +0000 + Tue, 17 Mar 2020 21:13:26 +0000 + Jekyll v3.8.5 + - {{ post.title | xml_escape }} - {{ post.content | xml_escape }} - {{ post.date | date_to_rfc822 }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {{ post.url | prepend: site.baseurl | prepend: site.url }} - {% for tag in post.tags %} - {{ tag | xml_escape }} - {% endfor %} - {% for cat in post.categories %} - {{ cat | xml_escape }} - {% endfor %} + Welcome + <p>Welcome to the Mother Tongues official blog!</p> + +<p>Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization.</p> + +<p>Here you’ll find small tips and tricks for developing language technology with a focus on Indigenous languages.</p> + +<p>Be sure to <a href="https://mailchi.mp/b87b1fbde236/mothertongues">sign up</a> to our mailing list to keep track of new blog posts and any events.</p> + + Tue, 17 Mar 2020 00:00:00 +0000 + /mothertongues-blog/welcome/ + /mothertongues-blog/welcome/ + + - {% endfor %} + diff --git a/index.html b/index.html index fcf06c0e08..6bbf56cd31 100755 --- a/index.html +++ b/index.html @@ -1,9 +1,139 @@ ---- -layout: default -title: Home ---- + + + + + -{% if page.url == "/" %} + + +Home | Mother Tongues Blog + + +Home | Mother Tongues Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +

    Mother Tongues Blog

    +

    + Smashing the lore of language technology! +

    +
    + + +
    + @@ -13,20 +143,62 @@

    Featured

    - {% for post in site.posts %} + - {% if post.featured == true %} + - {% include featuredbox.html %} + + +
    +
    +
    + +
    +
    +
    +
    +

    + Welcome + +

    + +

    Welcome to the Mother Tongues official blog! + +

    +
    + +
    +
    +
    +
    +
    +
    + - {% endif %} + - {% endfor %} +
    -{% endif %} + @@ -40,11 +212,7 @@

    All Stories

    - {% for post in paginator.posts %} - - {% include postbox.html %} - - {% endfor %} +
    @@ -55,7 +223,83 @@

    All Stories

    - {% include pagination.html %} +
    + +
    + + + +
    +
    + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
    +
    + + +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +

    Explore

    +
    +
    +
    + + + + + +
    +
    +
    + + + + + +

    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

    %%8ex0jaZ5Wj+5CWY@adaR5fA|7NZC3o4 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

    `eAT97_YOVN-D>DsvN;=1M%Pv~tD%v!}?r^8- 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 &a&I7F5flrdcijQt*A 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

    |M4h`otbR;Qv=LA>)E5jDO*j-? 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%0Dl~(~VKTq!oLQVzC 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

    8?wKT6hr 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

    pk^&qpK5BkUSU6b-dk9i*mAv4nhUIRtZh)l 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 Mo@k=6dleJ^*+EaP=>Px# diff --git a/assets/images/6.jpg b/assets/images/6.jpg deleted file mode 100644 index 8624ff00c7130e967b4fb1da8c3912f8872ff406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66726 zcmbrk2UJtf_V^om?*sv9(u<&gp%)eD(n}yTktT%Ry9$Vi2+}3=4hbZ*(3^CSA|-?_ zy;tc?AK%|y>)!j`TL1rh>;L8?XMM6~&zaeKX3p%KIe(}AE&`}ERMb@fI5;=}wYvlG zcbVKoT}jDGS6@d({iX6<1^_^=_R`VS4VM}KaB=na)K`7ZVPXp5AQ}eX0!RRa08s$I z+Q!RW%Rt2taF^7Tl{mcal>XuWq_auD-IV}O97^R9t+%=iyG{EHv{kIujN=|61i;%a-R^G}=I zZCz~t;jTN5^7XO1W4xDl9O>(5=Xb{wcg*eVy1_0E3000+uL2{(IY=UKM_Ye8Zq9B#o*Z88);4w=!vD`f{C`~Vznb-5?RcnfXK&|e=XzI_@!cqMbalAvZdY4J zZ$~#*4oBDjRS*9k7W=O@{Dc1**LOfy@CQI|B?6!xp$FjY4Fd4#$N+feS$8=&|L(V! zB*uV$W*(S*<6qmS=lp*=;l|zl#PxD?;P^+Zq;JS!4@(18@QO0m1+=fFwW`@D!j7&;aNF3<0J9OMngF4ZsE93Gf311KtB70iOY10m%Ru zARABsCBia6NDXaU*bJalhf_;g;dn;(o{dfs4Ui z#NEL?#RK4x;W6Mnz!S!k!c)T2!Gqx0<9XtR;zi@7;N{^V@fz`Z@y78M@pkbp@d@$i z@Hy~>@n!MV@Qv_o@ICND@ni5|_$BzY_+9wp_)GYQ_b{l z2~r4(2+#!G1Q>!ff-^!wLIy%ULPa&vMY@>ud>@^W+6dZw+D_UPIy^cqIwd+Ax^TJzx^B8PdO~_W zdUbjy`p@*`^uzRrKw97vpfS)Nm=0_KE;8UT@G__~I5WgCR5464T-{^6_w1hCy-)X$ z_r~s>Gu~%>%4o+J&4^;eFkUfnFex)Znc|u1nC6-BnFX2knEjZun7f&G@6+Fxy>D|r z`hL~@85Ud?K^A?MAeMZVL6%ciHda+uch)r4PS#yE2DYbcPHahRt!!KDbnFW3j_gV7 zZS30|K#pe|&K%!3x;PFWusl$E;PW8&!SI7?PCiZ}&M;0C=R6lFmlT&hR}xnT*C97M zw-$FWH-dYHhlEFp=M7IPPcP3oFCQNR~ ziiC;OiR?e(egt_G|ETxTpU0rb&W{To&x+EDYKVr3Hj4fh6BM%%OBb6Erw~^We=A-u ze)L4>iQSW|CsQCgkQV48r~`B>At~W0ft1*iLewZ?wI-1r)h#aR0iAKEC{q}uG*KDAA<-LjLnOR(Fp zm$y%_-*k|7NOahGqxdG}&90-8Bh2y0NzEzS=^Uy9Er$Me20No%h+ST}G`P~bLS4Ju z*xdZxM%{(nBi$E0WIU2R4m~wJi@b2WEWGNy>F`Z~1ZE!W$Kw`=cI-<7;4eGh#< z6!thQA?zd^9Nrkg8u2b-<%8-6L?mUTXC(Hc?8odV{3yq$;ZNe9(mwr(wv8V6{P=Uq z=bIRtn1L^%U%q|$8*3js948T%^_B3e>(|M6#rTp0nuNfFl|-$?+9Zyo=%kZmtK|Na zCn?#fq^Ulsi{D;;t54%j`{D zKg(Z~*CU0IxhMwI=L$fDPsMiStIEkL&8m)SscK{mPfZ4z4jo;KQyWlwSofxGvEH

    7R|Ga-*$d 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 X@(+Vnas{i{>=Va0zA-C(^LcC;NSo>?l!=m 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 TGc-|6kjPloW;9VqrO^M`p*M_N diff --git a/assets/images/8.jpg b/assets/images/8.jpg deleted file mode 100644 index 23b9222f9f11485ae4323c1b7980debb96f9c64a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164902 zcmZsi1za0V*XR@63$#G6;vU?s#oa@2w-U5yad(Fz4HOS9#jQYbr?^}3LZLVXO5xJ? zdA{$yzx%tBoIU@YJ!j_3>};|-yZgBK_zi%sB&R3`00Mykg{KeTaZ>?9)(d6>04OT5 z0x$r8CwT@$0-!#T)05yoG3JwYe-bhvDggMT1D=HZUygWUW+3u^@{yjH`^ld5NhdrB z&lA6R(k)K{i$wX4&Dax{J{dyP)%2h0RFRft7gXf|08XFs|CaqfTGGnd!kSvc*4f?J z&DQxXwF>Nwt-GtUvm>F*{M01p?ppa_?M2oFCs7q@hCQ~rtJZ@*&v%YUoF{Fm{c7?}5u&EI~& zEBMDZ=E?Wjznt>K_yzyBEr3Gw|HSaOUBG|&uP+eskIfSTkp7F2|BF!&|CFEkR3_Sg zg7EP{FYxg2Ui@9)y&(9H8Noja=U?^zy8g5N zxb`#zsULp=@cwfo0Ia(H2Kv|qAiw}r00GDV0sxQzh(rK<>;u$3H4FLg5&gdj1r-Sy z4ITK@vcDVtH~X(00EmK$h7Uk`>J$`YR1{1k^rylAKqO=o0stx@4cc>BZXQX^7gAd0 zE_4>b$>>C`A^El4Q>Vnd^pKQ-p3O6vx^sdjcVr}FR8&-SBoy?&fgu5q2?$YWXt^by z^GIoGp_*H`p3;S+6x6+NN$#26I+qS6dMbn$V(IoifAet}fb+Lb0we;!Yrs1^MG6hxlS2f%|?~|8@5O-NYvHyLxER4 z%fgmku(=>J!HWUUOdTbM&!zldC{Q<-eQpB~tIj`y+S!yWN2?{UV;J=a{@?=jf*L0- z2i|dy(A`(Z$#t!K@uP{ei(1uWS&dIXqG;b8nmQ7zrH6wb0qhv0_mO@ugpE&#o5N!L z*sff!c|sNcvfCjje;eqYyl{V(hY62EXeD`Y9iHEs=gDxtx3+1uY^?GF5y-}UN~UuU zl6Vb&SZpEeD_|CXmUkSB#GdJURDw$4Z5~dS*cjg|RH~b%cA*l&cc2Uy^Lq%z2bcI) zq3}hOG?l!L?jGCQlPq0pc8ttSJc(^E(b;9QQzk@O^fp8#R2|DNYg%cd4;tyG@kWZT zc66%&5ifIdsD>SUB!mk{6J*M1(ia}Hf*kUEytfm}Mv8lUC~1pm+`a}rPQs3%SP`Px zObe7xOvpCr!#1}XWNvRV5U8Oy1bVF~mr2tAuEkHA z2}&*Xbm7yoT?3xWwt5bvUP%rDJ^EE36dImz%7`0%FLU#xY0wbB+^Q!MGV^sz*rLx& zg_}xCb7+J=kOD=hJ3j_Qx*858q2EHZ@A+AN?B}*+(IdJ-?-Ya`c<@r%z0VydhsV@_ zeRKb87q=IqalI-0am6%&3&B5cgJxhHAagbU9CGhAFuj=h@>z$(RpKkm;v6^3fSs{~FsjSPF;lFPE z`L@eKPnu@b#{V)YbiJPhNm2!_GJ8OtO6jxl^(BbQ81+9f@=ESY%$ZnCL z++6E;m(yG~=zDKfZMf&n}tnr>q>k*$R%(kz_fTQm#SyUHC$86a%GlC;>rqXGl1GA{GJY zi*;~OnVz#$X=Z?3Q3k2=hG|#WUY3x`rnZ^^Iy&{f+R39N!0LvRQ3st?Hc<mh0!dr*|i&Tek|r2Ww~qi6c1XzF$Y_;$fVY5 z&*>9+6HtaE?BfIKh}p56aLcZ(lNF$ji#huT!DO|*3hoh8hF0hwE#noNJ%uLOj=kXx zD~oa();4KU!DSO^HH8r7-J&?ejIwAm$MSne6W#6zByhfMTPLap1n&7O#MJFV$e-6c zy)j}Twj)i~j6HIfn<$wNacg0Xj=6uhCbhHjyy1Oqdx1(-rDGJUgdM){cT(TQZ=wDC zbSQppZ>U)b2WyaS>b3v{1A&h-<8Q0I;X94#2q$Zyq@h#dRbb8HimspA_jxOx^$$*v z{N2}x7^NsnB3CeJSPI5;hBCgBgR&@0^N>CM;1l{s$r%CxIC#m#y|^IDK!Kl`$FnYr z5bXc{ez12JXM{`fl8Nry1bFMg>1dVHVBs^<0O5c%Mq)2k00>llR?p&UEnmA!kSW~3)L z?1f4SsfGcInsJ27chTmN+V&L$vOAWroSeetL_Pb2L)-{H)CNVtT#cOu9)VV?Me>6a z2SaV15DZ6I8&$Ok{NOQI!4hcg zo-P&sKm^N4DSt)j3iQMf8(#gk+>V-0A^9FcmoM@47qaoEFtTDX2$I0HKEXVrqvYpw z@rdVX+m4{Y^xY)ZqYS6xrhVirQm@izp<*RwBJ(1%E7y0>rr!N{18XL?HFzTjpyouy z-y$kCKP}Ug-#FE>AnS73_3*gySL_)5<^o(H#XwGU z{R7cKU?inDyDXh$yR3%IbOfor)VT2ONW3MfarcG5<>kQYm>NM#QJB*q?q@?J1CYKS zCqQ5~*jWsdD<~H~_$MOBH#FLtoy|L2b>S_yYu@^77e{MG6Yz*(^e1F9rk97GfLRT za%`2WJ~tUwr=w)n^jBl!3Zm1(P}rjAWG*}a`h5kYm9b!K zuvG8AGS4CzOxeWcZBD;l6X-G2+~woQ_-X)SrWSE0C7(df0_jnQb&o=>-G?$R9KRAT z99j~up}eA_e3%>hUC~77Kh?VdVwW=|yiA>a?X^kIoq#G+ZM1|Qto#T7MlX%o8#ZGGEF_+m_CL|Yrbx1Z{I^V4)BAkTg zA3CRXo-co_LdHuu**A}Bq-UXL@wUTM%U`rGIX9SIG|QBB{p|fs5lIhCsG#t@L7I5` zaoBq@6c>8n7RH+V0>BcO`cM&TvDal`pgd|Bud&Qe{Y*@eljIHQsC6BUQ=`)%x(=mU zjwU~=CCTtWQu(1BOxcgAv1Y1>sZwzcIN1kZ!0)sQCVZ)Nx4utSI@z^;!R{z$(Iv}w zK!#k!|9*vxY|q9J&m~;!5-Zz%(D--gZa7c#N7uGnsrTG6fi-dAl%E`cB>`{y9j^&( zs`d5KFZ#_;z{9y9cog7yprnJ2&U^9+|4hdq(921wqp?nkI$i1-CTzPNZrcyeb@E7S zg~&g`GQ$S3JcDL!E;Uw(HROv~`-T(sC(mn!O)Q8_n!Gr8DALsjeRoVFE!W#%{ zWs-NBlAZDC0>R#g2*;nv!K|wRNfxHI>BMo|+hx{W-B}nRJ zxRD;<*(i~hPFh_0u`Bzb%R4R?!o|7|g@WdR+fj;1Kr9m@%VJ(X?N+og;Q&5rpRHXG z{iiZDVR!seR%>sX-5S2*SC-`7lc~?I_e#f3+KFD5E$G$ia6R#mQ!}F73c6G{(UBVK)i6NbpLiYOEv7 z7}C!QB;cGO#vkD%(6zbpAeo(~GUC_3D7LULh`NpRq`$A}vKUIm$;$dE+{e#=<@UI+ zms(s+KJ#0yG<|w3+}X1u{Nbn2*RIRV@In1TL^d0pO$GP3>Nk!UWb&6u@6HFsC(AaM zii0G{N57Yrem}I~=&I1~lR7HiTXuFp78N4w2^LA0%%0S>o{A_j;54^ZV3aJEwOloB zXZw+mlirM*s8Al;(YInf$9F|wE74oNCih3)ty6^gLRiryc8Gd1jL}7R^+tys?gUwWJ=Xb492#2xG{t3MI0%uwnAboKV+sD zfxLKKF<7<=!hyd1VB~CEn5yELb`F(Cc-0RMLoS5~qkO^i@7q|UrZ_f<5 z&D3;ii(OE4vF!)Y(rB(Yb(}_0|G1)%^NoRrhW{;x8VKaUEvqicTvbpl!wJoyKlU`4=om2DUfP?f{skQ5@4}Ws5goE6s6R8LzGlHMr+D>B2WM5LkjNs_!aa-2R?c=f$R;*GJ1tc=U7JhfL5N&Kf; z^cl*x-(sV4kr*zQH5=fURMOF2IuUD8OIJSlEAav?&Z^j^CZ&ckAOi3Jd5*F zYPr-a0wpD+w#c+f7oH^WwOuzMRXtfXYU0>d?6RKnFb|?l#Vp=<0Gn-OU@|J5)jr*+ z{wLlI4ax|SHQ2C*@w(dtH@}ve7(93o?JXmvtCqFA0j7A)oNjd*($;~te-1L_iqqz{ zmxuC|C?;o2uh!nb>#}}Eu1+&@Oh=ZscX%975x^eB$=U--b$1`0^tL~50@tJh4^T_T z&)e)H;Rw1Gv>Uj$a@SS#-qxM9MUuoLfX?X=ki#*cGbuOWMwX%@TJ#&Z@f;=?I-G9P znDv~^bav6KUxGT*YGfh!kluVOP3zCkfbk_GHJ^62LtWJMh8Ov&TSE1z9L#+?r8T_Q=4)N>53+@|c#?Wl)THV`dc=YYJVcqPlJ~ z#B#PZJ|g~3a`Fg>L$-H|I3q!UTAeW{>2yOeCN-7)TNgI+o?YBVWGusswr$XV`R6_x zq!>1%5q6lCC*;Ou)|_oRUD*#Rv+&EWo>3LohQ9Ed^mh78_k0oWS0@jI!C)%B-7?(; z&06|{^~G;UlPNi;$n#mG_-OSBvdiU@Bz{^4YfqD$1|R6lgW_J2pHz!p{=nd^jo z$kwjMFAIfE>}Gu5=db(*xcExJgS}>IG}ZJka8miw_@9-_%}|~=noe5G5~q$;kTNic zFlG^o{Z!+}lCtJkIoB^^p(Bfmmp2pr#;UDk>7P$qpWPf3_cPO?M`+g!-5MrzL&wWTc$pFa4-2&~qNHFFSb1jf^1KLo=wQP?_;Fum*BttkHus8ptD6cLb?j zq^)sQmoKM025>*zE2>UIvUK~w-5u^OF!hWpQQ+`F8elYlN=T&N&rZ0mNL!@2w+y-c zMpjBO)@~8=Q*4Ok%j&1+g7+;>I}dub+Rts9ScN~-J_3|(Mb=;kb`0jL`jDIVp-k(v zUu@O=jI#pZWo5*Ie@wC>V|oN@g8@@yPu*>%g;aDqG7I87N$inh<%j40ZI z_*X44Nl!|Z@!cN<%J8g%*hPnJ)gF;4kM5j88__sok9?_r=_7 zye!l}Uf1rv){kAfdu_dqnHL+D-_b<+r+@;xJiD6X(J{M2m)b8JdTg8VshC1TV9T)!vByO$h}67U8WB`2loBz9Mff77QGVZKAEO*OE{!O5cY z((Q2?Xiu%CQI$#NVOgBFVF+W|JxIhmvES_L5%ay3i#<9UX)Fzcgi%D$^T*;7C04i} z8rk%Ze5&X_zsX-U5kwS?;F5#P8EsRa<`+>E)OI*OOuzQUs?raxTWwz0%>;(bS}obw zol2{#+QI`@fdflS76CaHp4fto=2A0r&u?EY}k)h`lz(s3TtNL)dPhdBnNeWy(5k5YWrkR zKpAlq;{b-xvaOq4xJIMCs{(QM&TO2{f~P(5bmVU2Guz5S6%(Gwm=Wz^Q+jc}$%sgO zvIzlYA_+%-?$|i%S5rC`;?x1KQff^%ko3St?b#;x>#nhrm*2Yco@_*Q zjqIB`^9skdfk%mEf&Rz%*h3q7pOq$T)ng_=5btd!V|BdID*l&a;yoi@c$--2t?!FC z!f`|j;G(~?>aa0dHVHO`w#4@p>hcJ{A4V4tP-v?vN{t1s|Iq{LOK&OKqE-rM(6tQ;La!- zITtU!>-Z6%`#Gwj70vct4T^-&HvfcBAWiX@d8HR^+#dwH#n*vu*&)jx5AT|AYY6bZ zVfWoW!{0NKRJzdJKTex?o_J%EZ0Q-PR+6mE3GF0!1k9E;j%F9kR|p!aT$_KGSx}~9 zH_zk-$0|bEhdM62q&y0cSXfsr5F*<)5?9WYKJ7K2Ewd5spo-lkdWtLgT> z@J`oElm0L&h6$dFBZ7yrPiUeXoKLs-016yro|E3$Z&DOEv?cNuB#=?eMZ?Uc&1u8f zHzh589XZYg&1%a4a_ZT&pOdCA8mddv%3Ks#&AMcE9Tjuwb11QgvJW5P7*dRzwG?j` z>Dd8VF7PRe<-}yu`YG5cToo&aThRE(mVXUYx#jc}{|@7J*Nsxx=j;uvu2(20NXb(= z`Wor72Nt#H$Ti5DfzSmIU=@_Pc@^Y<>+F&U)vT<7uS1TVU#*=@|H%vA_^41UwvC*Q zMHZQoBjP>JQ4PuBhIB6UkQh+ra7Js^ z1wIOdb3HUstqjW!+ZQ+3k#XY>*`15E)n~y0KdKjP9=PM%Dl^e;WFmGMnxmc}@IA+p3Tp4WcoytSqasw-v5RIR?Y=eta77 znE!pjitRv3fk1pQ!2s=#Wb9JlGvBJaFBERRTA_qO;TewrSA3EUMD=^_A=Y{Wpx(Kp z#=$hiYX`Z8uIKYJUvgA&xZJ_kZZ|EIgw!qZCc-F-DayJ>At!T`CJ8TZ+M{OrwS9k_ z$T)_v1grAtC!9&UpeA_f?C3{nP03?4URIThB?H=W32o+u&W+1$V{tjQcY_R@&@<~T zo74Nw(pvjfse+Vp4pumR0e1F=yirEg% zug#cV8ZO(w#zK>2#@<-jvVEYxN>-AsD|Bz1yL+Z;5W?xqoX9#+w-8?vkzZEEdZh)( z?|w(tNHgV0*2(Ec=_p*TmoL;Qc*XI0ji(~*zg0;EQ^p~ ziffs}jtzbCW|*YGLGCm-ej**_F00~HE@6xn??31K^UtcdE+f*C>xnc!*!(thuU$l^ z0MYwg<(y9r4IERsV0D+UsPjox=lxE*V7x&njoeTeSb#f z?%qUDS`h^@&7c~qLuX`|pf5nAlga1XhV2l0gTmV*`d2nhlY74J>?$=Dly`~}@XfUf zVxRtbE>6oYXZ5up(<50XXbAHeTFR?&!@e(@myKKn*+-dLa3QuI7nugI!|yn0+Mmc% zDlK(fzh)KRK?OVqtmmNO$e%ussD?pCiyz@9BK#Qo1I zcVi`^+x3COb~!i)(Z}664H4X$~&k>tuU6n$};xEXrm8 zyWZ}%loTGSs^AEr+d4A$-B5Rwczc>vU=y!yWf$ScH@|wUNNRV*+^gfq_|@J-lS&xN z#&S7j8#Dnfw+XO)i;{+%9e4S)lY5CI_{J*OE^xZgFzKhlZRBfhCxJzmR|1&E&C3EO2CEF0RmP-HA6~}_ zVZ5c-ydBWC=Vb^}wcST6j%r;f(Mba0`WsNyJ#6&H{V4;c;o3@jUFIN;TDHtg^=d(_=pgwIc*-znCYmygt{d+n!lIFx#b zFjOD8R}hr1vHF=#=;Z3aCILueF@a5(hAEatqYMbdFobpVV2*73=!)k`B+`D=Vg%&4 zX~rEA?(@m8!69Q#y*sVt^?*DvF#+xAA4XGnFTct-Yxi?ZEe%aVS(2zj%Xh}t2Zu(^ zMU`zSfVD4Q*~lsPA7>{tM;iDpuU@?Wk+v8DiWk*mAN(-q=k+kb7D0t$W1__m{|dw9 zL$`ukKb^=$^_S^;gcfR?x6J1fZn|GaC)4G|{@6`5T7IpRslSa{5iWMdKRg}Yvr5dk z*L4q)ERdjGdWPq}k@0f?4Go&H=cfE&9Hr5f%(l8q!KvSHHWu6Y>0}mg$lOVdN^%p} zrXe8M&ZxAcrOQTDA5M%}HzX4j^a$t_KjJ>%Hf;9o2lZv|YG_Zjdo;{B{2*MiN=l(p zJOCTvEnN0r8zKQl9s$Kfgo5qrlzt5ZFxWLW4+cS7rPY^9T*p&upz)2~ud36r`(}a_ zG4J45sZnwF^5vz5@}rLM-{j^{7_P{UZ{6H)X{TBh(klj>dbeV0f^2M+uxx>!hFd~y zZMycBjyFZ@s>kG~$BwAZ`1IY@FhEGSm%N^d9^Xc0%@U*kOx>nzaEG_Fl3DwfnfX>Kylq;rn&AmwC?}>>v zmE<8}6@lLcj$RTLQd>IR8`EM?Cw%0(k1=TVZiL9`q;QXxm3Y>Q=xS#(S+muecEn9U zi9!VZj}sUAv7*H8d4x?Y(Tt_g`LmW8=|{pMXeH1!1rOaEBRB3<#MLH`V^HtzUwz7# zCV#d;$L_B^R@ck9JU#m(t|%;wA?EwsUR5k4)^WY&UTeiAkdCg8^ruH=8`jshJ~_P? zLHP|s22yPfmD|OS0Ac~r%!<}!2>-3ZX^u-)S(*E81vip`K7W~2Q{E_uyg71|qRMAR z3fcPVOc`+`EO)gkuYSaZ!TjeFPcjanIOI8DULZk7TlUBD+(?uL?KJvtF-xbXr`z{+ zza6VcAhY7)s;u(^77?`f%~HlvxW7a%6FVYLTU&lU*kZfb9=D|Dov!FW{8Kti>jBjq zL&+&3!Q_O4B}7nANZxkpf>!eqlGvV8g+OI#A+%D44d;Z4>oq%$!;7lpS%h9h7cI5* zpN*2u5AbNJlUGA-=pW>g6;Q<0#WRn7s>7H6JWwzhss^FHTe)wsD)_zZo`5vM<8Z;6 z!Cj&1J~c8`9`VzXzHvxU1GBNsW%l|_eQL4#C}K)u^_X>QH6zmY{Fc{_Kf$OSmf$bb z8n!;NWAZcC1aan1P<3sB!q2g1i3NYy|fZE|>E$03rnLtWzZGkDZbt zdlMMzvLRa_GK z)`JTQK;Bf<9h4}~Ft^{m3+Qa$Mc)w-#9=LcvloM2RcI9{P0x>0)mm#;#|3jzgv98_^3AKYDpjYxUHB4te@T`ZUW0U;SS$;n$ZSl=!L(Ov zHvC}cXk#H;{o>H^5%6<>6&kP@f`{W~C1zw&>VRn)V_DCTKjsEHBy{r7vr!AKW*$OX zE_B&iQL702(K1LR`Zo9TZ90R_{>IbImVNEykx#|F>3OcB`U)3p-`V}V)6JfB>XBrk z%ziKM<|m$(t-Pii!oKy{7Luh1qg`0$gw3iQn(y}URVMmo9XyaPGzu#bTC>l_1U#`%BwRqQ5g@S5HeD8V@U+OAQ|44T5kB`av&r_ zFv#h%I*VNeO#~{eI7-dwlRq^oF|w{N)$f|+=nO7Um$XyOJggt*m^L9o+q)aNGGy58 z3k24)FnT`vYfy|y9|xD;y{;Z?s}eV;ld@CQS#Y!Gt59!IIPv*>T;xqHBk2bTgW&Q! ztZ2e$yCO48aVajK;Kjx>IfiJ#Tk4jU(B0c?`decSffO2C1ocs$I_YX?Jm%YZs_r7X zx6MzZtTcfqhdM;BWVHN}&#fYjAg8W6ozBu{*gg9x9)w@A?CJA%fedVY7ZZVV=#@6wi{?XmoEQB3>#vJ)kV$#)L@?)m3-w+8uv#SOD|{CE^1glM(?`ObPaIAbtuW?8 z{WVKDdXEtHfSpAn|D)$@38pvER->n9mTc6|+6=R;Inz$F8D6TBf8FP{n3_$tc_X3d z%6DKIOU`#>N7W2UKDe=oi4w)vo#PqqdvVdv@ahdvTlcpkV3j?p1>&geFRnZH$I*SK zh1v6jGxq1$u!deJoh&Fn*$k_0QkHVExQL;f+c;soK4`3DFdoVp!bACkYKFM%o^d0n zWmc+D|AqTSjNMXZAzYy-lO(0z0;n<+b9I-kLd z7$arKFPJhMU_4`^6U)sw8#zJtT zZysYEk&wdDFdHN?hFc^Xz2chxm9L1g%-Fcy{sAJo2%#G>XLU;}7(TT7hIo!%8k4$M zPu{|?%5zfB(ALI1TT=YY5Xlec5pWKlJ$-Kb24`=xoE5?orig2$3bIL!CP>2O(rkzg zB)Rn|)yX7q_`*pNq4dTVUiS?=!8}sIMsz@zQ`PFq)>_BR*zHr@N%PiEuZppT={bi< z?x$XI6;6&i(h~eVXzd(>wJW2p`j~v7uL*JVus*+6#K0n@T6tkkn^b?CAG2-c0#y8eMQF_UVktDz>(;%0lW>$B5EGohETr!6hXEFddS3r$zuoYspPYRd}V zkNcC|)O@RmR;Z+lan|^4roh+e3U@rZTZr}ZMaUrH6IWI7b(@`+v>VD+AHITyV@Lb- zm$mM4azZ}@w(XCw!@5JSa+w;^q7Z9aR=feIzeLUIah%UG>NVO*0F??unUjSBRp|NA zXqK1~>7IrPjw8szr-&M$-*wb{l3m` zj5-UMyy?>jEH*DFF(!h_(v+2?t{iQb0D|#asz@+b5oqzYJ&NUr80-(_&!|!dlXS4@iR@pX=fPS^5v7h=k>zVh@@fi*1-;BUph`J`U*vllhGv>9<@ddf zfMnscGL~|h;OtrTh?l;k(ve$T3uc$f~ol^2qOxy2G#~FUDAQaq~=}WHR@HZ77 z5jCJ44s&y-@ReEL#bS;ta69$ernN^vEOWEjyNg_{{b^-!6|MX-rJ&W}y~dN>-4?+a z^DyYtRz)Z19hBZ6gJ}b2sBFEeBqYUS5AvS5=skkivZ#OXo#w++DR&|w3SrZl!{_Em%o$y&(SA=e-JQV&kVcSANV-fU zV@U!ps5nk>EX7eGozqc9ph~y?<;|2yQG$w-6Zap8nyD4ZxZ%|pnzN$ZBcPflyC6}E zwn{>Wor$%N)d_%HVj^OI!dfoR@oNiC^inSAf!2F0FAjoi8#m$-8;M? zY<^d~{&C^vtcQ5TB`4wC zwB6TVt#Gtznaw+gqLKjZfdXNw7Ogs@*nl+$qpLrw?=p8=G-!Ar@F+wF3 z8r}*D6ex~MLw*jbC>G@$fjhJ~(tg!2&%La+(qr8Y9KWxX2m%YQ8}|^g7|bX$>Jvxl zby<6mSURc~eIc42jsAqVOy8_ZZBq@f@Hd1nNM}M_!w+`w2fXd8R_32m93vQ0ML0f& zZA09wpy_e4*=6U@#UlQ_k^Go_yK;H9EFHXT5j^!{l_T$>rmm=)7(?JsyDBOdIh*Os z`CXyCcm&;v-^}BJX3AMV{s`>+u9XZaYKqHPj`XUp7?0 zlAka&L4bouVs54?>Of0vzMlkO!oA|FW}0@rDGua1n3?IH@=U=5qE_vQLxKQ#P0)K=BQ#OTgCM<~TRJEn!{1MV=g1}hj12iY+{ zy|YWbMXqp($$+eA4%Nk6?WHJB@GM&W8E`k;9%#+rJ4zcYBBu`jQv14=u{r8{3=_jU z;>BFL1XWhA#+Cl{I7^SDs$tjV)e(hheap0B2-*6k2c>$2nZUVu)Lp17=z-|QoPlec zukqIJeER9p3k->;Eo4jm#wia!h*lGDknj&uZphq|-(A4llzeeh1sZ9c7EovBbbu#6>_$#o_+-$*Hr-^mv zNX{5HU)sSnx?a9jX=uuUWkv6<01Hckc*V> z<+wn3NS%(h4wM^7Xbz}{8vGgiriRGlGBvJUHRRq@Z>Y`H+3CIP`?u-uvaP*!c{*9! z%wZJ#7Uq%|q*i?bQ@raoE! zwzgd#Y_*wQ=wyx89mWLkzU_Q%O5%f*Wa?x($8*KCORY9rv|2%=ri_Z$v(-iL)BPlV zR)4q_6zjDo$IW5Fc8H_xK22OE%X-frF*2X+MF&~MjVWJAE% z6h<+3Q9sHo0Wu8Xno03Z=8u4@L^_@Nh_;aUi?0saZ4D5?h?}rIb5ZySudnC?+r(sZMN{}PG0z_2Gz^jh)bRo9G3>5V0_0xp&xm2Pi;aNIhy z_=?v-yA7?WqSRat+K+tpTiJcZHpFL2<2JyW*^)j+JRfWEg05!6KUQC{Q)CvO+6sO5 z*1`x$8Z`L^BCT{0T5O?M7;Ui0p&GrImC$7=c=W9XIXAv&f1h|*IcwgHvcN7=hs>C7 ztrz*Nlb@0RTV#=vc9z@I>1_lui)i%YBUm|Rq-O?{B+U?fGM4DN0T zw>SQje3rI$!_VpVuW=Y{r8a`i54Bdtj!r4VtKD|0d{9E@z#Xx8D(W=*avyH^@ozm* zVnfQU;q$ojk0W+%!T=mgC@UR~Z?jwRjjWQnN=s_&)Ysy7 z9UF&jnOWq@I%wjXlCn^fIpKDvwAtzcR-JmeGkj6J&EVgQqh(U4WjFU4p?EfS^H@Gc zJ&O5JT8Q7nbVzpd_(M-+q{*1`V!e?o1T0AEr9`v4;YrnHEEVFL04?RB)DV`om<9Vx9w?R8&n+XB zC1N#WC|leHd(Q&F_Mh>A@AF4wmMpu$ffXOxhUvpAH&fHZkprtMi7Yf$Pii+C@bEsZ^NGg~vE%&sukFknW_?*Nq4v zqQDNB7i@h5yz==D(O3$$f&9v$rxG@ihtE#xPTKHg8W?yePzX1uWLEaaUmtM1?T|P| zM()ih=~&x*&~w*|AkG%Ci@SRtwOO7v?y2~JXQqf!ED(laZm}Qe(XM{N+19fC{or6Z zlC#N#H^ciu=k9(c-*Y1OS+PGvR|95MQtE9xF2c{pKeMEzhmf-h$T@zQu1G>A6^?cJ z&`I?@#NgWoY}}RXCMCg&&-S=7l$0Gt8Dm_zu>0dnnESS8Ue2ueN%K_zOSnQqn&+GM zdwf@QRW$h$BcvKBqdYal0FO|!#c)bvC+EAjVf_k=veR?Z+M1166Qg@VA#J5}q;NWD zE%==Uh=YHoSP>;brtQw_o3**^1yj*j{a6o{LuS(K)cIwGmiECSaj9d+&#FhjJJRy1 zVd&x?7rCb=fjzRcc7;V6)IU@?%An>h9Y7J2^Gx2DP=M{G(^dcFKPdpLYYm)HyEcirpz{mscJ!$Ff?x zea?(W?*K0z+G=9%x?U{)tczNA;;BrJiTMbbl&L(gx7V#PG+J9ttorgNz{udPU_5!l z{DJGZ5kWr&$XzPKEKT8oj(E4Ms8@Bi_>0&q2`ovxl2WJpV+N1yGzZ3;TX=Ah{~-6g z{bsL=txj~pN29d2$GhdkSY+puDIb-TNg$n2M)oZPJ>^~q3#&Vox=+!V)E1 z^lsaH29z-G%?_1$Upd9T1988Lf0~XL5y8?+^n=PVvKGQf_$USzs2NXum-qJlJW3&g z>o%TQC}Tf|FIf+#V=pBAvjpdg%x6K?QPaQm+hvizecGzYL#H7fg8Ni&18I^%% z{(cW&PmfvV1q9fu!=$~0o0W%~K=9yod~xMCj4(l(KqH0p#bN}m2hxVO)5hnUOYw|? zZbc{O^#=l|ol&fu5vl1=etMg2?4XV!>i7|rYq`$#;au^}{%=K5xq*8aCT>1yx*Lk@ zUg^B#u8HhVZKte6pPLD#*eu{lkcx8dUZZz{s!_ustgbfyTZ}BNdi@!dj-~Ggxw|_N zYnf%5>bdhX5>E&>-P#MQw3?Z?ww89HDgEu7bW8VEb3|RXxSeTl{9U$qFEazV&9Lv{ zG9iC+HXZ99>Ty$4UM#_wY9s^ZR2YNAw6^lcSc+ew5pZH;B1@;oNQ&qO!6Sp_Bg*QJ(_4ix^@{cY8|{7fk?*my zpr0I)bWL1_j=M9KE~t4~#(Hu%L+UBPj`HI*{GU@O$5yP}8xKpZ9kr*DEKfX;{anjm z)FStTS;E~eutw@LtSev)%_0bA1Xbkkt+E-YhPt8*p=aXLtb_b)12)d|(CVoNAt*Eu z@*~dYlda_lOo zD0W^GcY+h6j=0IB?AfeXv7s|RpVAht#1*hr$XZ}o5HlwoRxq}d`n{Do)z!r+oATX?>O^K6!sa|k#4qObSOTRr?uH_C%~(=P+(wH1J|jZt)KMT zP~4c}c`E`DA66`=qvn;A&11g;ZMf8LSHAUh&t#IJ$AL%sJ_0zu4X_rjK4U)NDIKmK zD-w?>>L^bppy0-(lZ(_z|Kk4(H^GspLaGFRGq5++GR#}v;Ic>gecx232 z6RzhvDeGy`g&P|_-AVCoqQRGy9*I|S?aW1GRBmrS)#8$`)x=y=Ci#Qwby5ePO4HMO z(ha%dceT-nB=uek9n6W}to?XZweGdkh!hM`iW#}-60%B${(48y(w6b)w&+K=qIBC|{}?OU&Z)435Q`qzO*nMQZ`?g5zQ)GT%>bgA^LZyG>y*=!%P=)#9K9RaL)f>@4ds}+WNTfJq$q*J!3+GFnS+tl;~j?b@UR9!RU+< zA~^`6htYciLA$vNkpocn$5`+nZ*dY-rZ@&0AIu9>g3*4}%q zwb%Zw-}>#jKD!e6s=%(=kKXFRw0{GUs~=Y+8Zk7fyuqI=<@dE4-$P?yf7}`p z?-DL%@Jt3tEVUU5B&WOSYMPBG-CMa1r4rq{j2GuFsLNR~(DVx~&#Vsb-Acr*BFp|J zZK>2S!WVG1Gc`&ycYLMO6&U*T<2S#gU!AkNg4LqGjlwF~ z`wBU$Hu}Bwsc$8o^5DhAnJtkr>6xO{Mu3Lxh!K5-L6SUAhZH7cjG@Zv<2F90I7xj`HRvybn|gsu$x!=*InEzNO&yi= z{EHBWDVO?%_9D)>TczrVM)jv$t6L71kGfFWFvGsnXs>s5wr&m&vha^i8L=al8z}`j zy-99k`};KRR&vd1919IKni4wk&=z#*@4Jc>98^`pL9c(dE3?mLJB(PEduArvBkYro z7z{>`u`+Ek7fh<~zoqmb;0*I-Q`)p~hOVv)-XavkV|9uSG&sUHG*qf}va~@zhFo(J zm`we%(++RfD-d_VX;rm;H4THO@N?ez2$ zlK1)-h#y02;pdgVzDdgIUXo6>H&Xk`SC|8@VliT0Wxx01Wpb^Q?)$lU1J!A3t1|5V zu0Rrh;r{1xTjj&wh$@I?Nt0Tkl!-5c2O3)WT?P%Jao*YvQ=bf;&M)+ONYBu#9&&Bl zEoNFZyD*ybjB;OLQ%!j|4BgBC=q1HkraT&_y@<_WDEaca*gy3W`QAKNbVMRKonNDe zsWTGDORm4iR(hB##l>HD(HI(VMS%a{Q*A5he-XT>rIr;uZ_e;41bjbK$udp7sAXla z_qS8M98OFDv?1|?rLI9uhy0*MoXX^jD8W|qDcYOx9X@6%?;{iR2r|ESl&hB%i(Qh@ zvlL8(_nci9bcm9x%({&Gdy(8NtAE5cacO1mp{PMdrzTk}P=II-A>kjlT^KUfGC4T($S<(1J`etl8E#|lB^I8iV0>Up)ki&tDP3INsOpe6 z%0nBYon}-*Gf)PoilcUHpOWHp4*fT{>{-oyjj&N06uSkc!7keG>x!0aKCi^X!;6b| zw)6$SYui~yV_&bXnsaSKiTv-O{Y7#|&}a6~{{|$~O+}byB;K9YkkKtIxmLj%UtwfW zBQ@r8^mSGnGs5%a*D%XaKGyXe4O`~v@KeTaRg^Cy3T|mjZ)Z|#1(c0p5n^s-9cYC=017EF5?Yqy*G8{Z)@wTC6(wMd9_RkYi@I z6ER7Sz{hIr3mp?NaXt{Ew5K9@8<^H6Oyb!Ad+inDGLBImD|yJGRJ!@CJoA&6v!1ei z&Q4l0;?wVv%j8K^iHinLK_3{giD%xB-M+_v*%9(z=~o^WX*T&^xH?Ex7>ui>i*;L;1f{(jg+Rj-2 z{9@1l{Z^zy@cn2S-?w3sykDCW7L@oQHkO*l=ocBz!hfjx`Seb5<7E4?CPZh^YMe9! z32vACM*UYw#%m+2a=W9NKA-)6--wtvxbgSe--miV|KaV(OUVGr+J-3V!++=@EdM8% z2lPL_f8~L}|K#1^0oeo8SA=fzP`E2p0GNkL384GMf{{^>mF1yQ18C)BWR&1CJX9M0 zoqpqgr2lgsFypUd>2Xm$D7=z?kR^>2vJT~dzqIZd<@c+gb2iI4o8_F%a?WNsXS1BM zS6noXv91W;tiGoU>WZ*(~R5 zmUA}CIh*C2&2r9WIcKw+vsupBEaz;Nb2iI4o8_F%a?WNsXS1BMS6noXv91W;tiGoU>WZ*(~R5mUA}CIh*C2&2r9W zIcKw+vsupBEaz;Nb2iI4o8_F%a?WP?|DVnB4{b&07a;{;$-cqyT({d&Z2s1`_`0&F z>)-DgZ4GsFZkbt_>KhvC0U!!6h0(wm=N~}D0swygA;A_mwfSuA?D;OtQ1C4D04*R3 z0InE(Aj(o7{p*m1dOCb~N}*r+Kil`^e_>cik_KjceE&)Rf23G3fx#gZj*A(kw7feO zkD=%|iuMf;3H+7*g`zp!e12)FUlbXRU`hok8uCkf{!2^zQ|4b<^Ott_^LM9|`BmpY zcR%-EdW51A!$PqXO>Iok31K*FI7Kf~w4iUOAC97br)Um8tScS>{-MkWhF~#X6fHwZ zXADML=uos80MIdd{+D+9FCButO{pgU=mZ2t1mirtLij{5qI|L{D$0BY*l=HLNQk7F zE5^q)*qu)&z%S6%KLP;$)#hJ&0c^kemXFfOin1z-ijs0tlicd7rq_;qdn zRpQ9}pKAuLP7!&($eAK;Zis(M(S6G{(JksE%5J>|7-DI=ac$%zJK=}pDxzJHPknR?^mZ{ z0(=8PgZc1*t{5zzJDS0cyumN)G7X*UgyT8u)eR z*<2(4Yur;bCI6q#|LKG3A?05xJkFEvSF(-;nhz5i9QI37?ulO?Gynr|3E%*@fvdoE zKm?EkO1fU2n4zSVgj*)xIx!ILLhOF97q|Y0n!5*gDgOH zAQzA)$R896iUQpSrGN;aLQn;$9@Gx%13d$cgXTeNpm(4>&^OQ-6*Uzj6$ceB6^u%n zN|{QF%7_Y0btQERbwBkeHHrEy^+)PcFfEuJ%m2GDP}`vcjn)ii5uEJ4n=`MCACeYi8Zd%0gj!B8=%IW!zv3Vi|nc!lGN>J`kDnc_L&y~=x&H;}i0cbNC%Rj#X=SG})hUmd!-ca8m;#x>lv>}yZ1?ekHnh>ic^UzisQsf#OEbwBvd5)B`PIWBpD^OB*P>dCErPLNf}GUO7%*8k`|P< zm(G+PmHtacLB?06T4r6AO%^E|E88#oO-@V>BUdE1D9c7@MUEIT8d(|@8of6bGY&THM^T}Ws4UcmiI9oENv|njYG|5e z`r1s`EXZuYoYvgTyvTgVLe?V6V$_n|@|IbdnLYe(yP>mN3{ zHUyiuw$iqDZ71!Zb~w97_807}?TPj$4tfqb4%?0jjtP#-PQp&NoyMJ^&c4o%Z(X|O zdaKig#>K{^!R4o`scWU{iJPHYvD+7n4kizC;I8SO?Y@Uq#}cq)4|NZM$F8TkXO`!l z*A1^+ua7t#Tp{kOw}E$=_YWUapIV>4eQkVO{pkE${QCUa{C)gK0pIO6ZP({*4>JGpnGojp8t0Jx47T7qi;sn#W2M9#7xJ^#1dkU@7vt( zkK>Jtj@ydA8Q++|oDiI_@<8=LSt2+QmpGFopHz_aSF(HZM2bvGZpzP8OzK3MY+8QW z-{~IdGY=IXmS)gq_-8C<-pH&Yuo5B(TUn^Ao@~DC+QGd;6PvybLf=KAN==7$z;EIcFWl3p$v zE>13)EX^-lEw8RPuDo4!U)^2vUHkef?A0IZ(Hk@y$*);n=Wg~-<8`P+|%Ei+jrRCJ_tPc<72`h>tXRHkxyNp zH9t>%vHi0BHTdh_-%^jbk7|$M$Inm9PBy>$egES}^6%Wg*PSY#j-J_^k^cz)dEsaN zpQ3;E|7G;o#@~K_|NZwmpaZa6WMpP!U}0urW@BYxhloHSTwD;@>q5LD2zhli6?tVP zO#??0OaIV9^_ZX|C9y%%KQ5jz(@@O zs9303C=O9F^B^wGy*$TFOY6FbwLW$l>M>0hytKo6k>I$``M1+2*jrg5=0dX7ufg}p&mm6 zORuE94%qwgq9P%SrXAuoRW-viOF_<9mkfc5^qRPC6g(-GK6)`7$tj4?oU;XBKz>qB zeH^UBjIFCWduMyty`NR44FzmF_OhazH0J^SSV$dU%%W@<>z|9b>>p07m}~6{B$^oOTdA3>+tvos z1dYA(N9yS}<&r6sq;BzQ zOe%`4zEU4H$qs#@y(e1< z;RDG4x-vR0^tvP3NHO;w0Z5`3n|uGS7U&qj*vtfyu749~{N1Z@M#KAt^ z+EQVx$I8v3+=}VwY03};$=}Zi4Bquh~=`;(a#mK%*iIY*H!aJ%j%A4 znvoK=o0BHs@4A-6v>`BM9WEs0YfUmkwr&)7io36CrDKoRWHffefI5)6sB!j)HEwJB zi9G07VTIg?3Y-6kEIWv?8XoHcE=QncOk(u~xD6+J z*c%{OI%uLP3u-!0U%jRq1jYcOH!}iUnkywt%xL^%F3`u`2U{kFu$gtN0Z#$93K{S- z+4LNwZ1htMC>9FykqaE`E|{r`$U%-%z2xHrr?yk;%4pJIlYshYM3OJMu#GZUvLuW_ zGCG9l7whqa2qI9lO7$-k&r=IuW&}gs380mUE2^5B}&yOLnEKs zBlOS6{*^u=gH|>vB+B?Dr5b}0Su?P*O$AwX#GE9H4t8rX7eEL(@{&L4x^|xK977QR zcxC1Sd_Y2++*2T%p2YGLldVmonIq1!K<#EFVBDwkYk&eV)oB1Bxqz9#KpB^^Ec@O_ zO{(hWNah~MN7#ZDxINJ~HUp$%LNQ#(9R9deT^Ya(0s^Qk`bet@k z8-I2Joghvb`HZohnsSG-!Knj_pgP*d?4e?if%dJ+D}q?cQI;L(MJX+M#t8Tb2_iER zC`JfWX`K&@`?Ax7UKVE+g%kA6zyLMM$tWl3zKK{4QW06`@)VZ=8$=a zNIs0c1iyAUXCEi@455|oU{a01F~@Rcn$Vro^63)dlmvPuDh*p+ zLiS|4Me8zW@YE4cBOgP#E~84P+&48tjw zvrq>Wa$%~arU6CE$|m(t1{1Y5SO!#%dse1ca3I-hW6s(V3|JBD1zlym$BI&fEIX{g zBy_Z<3nMF9&s-u$Add^)FisROW)TO=TDrVO@e?X4k=E1#NKq70U}wxqiI1Q{)Ke6E z#>59igDRM)swp-zPL5DR=aL161JY58N1t`Q%Ad(lOdDM_vfH9w0F7>gu-ykYvo*7r zTPPZuu>0HjG5G7w>#)4k20#s0XjQZ_5~!j5h0`vKJbbjC`DYl@)t{-FJ#z#v+%NV;=*5v8( zCnvm%Aru^w=(?w5EEpCFF) z4MaVIls;#TML_!V%Ja~LfB>Zx5(|NvY%;p(8D57Gk71nJmbPj^eZa~U3>nEb`=|a zOZ6UxeZjdMFvp5=O4#NZ2iq!tJ9Q3aZZXu>?x?ON)bY6)>LI(?Ecxb~I*n6^mvw)2ebr)yTmK7sagOJbD;W)#LLPwp!JMm(+YN zRdfsGxg*=q3YmnL<)M35Hs^%B(_MRoe=jtBafGGm^}h{YGU%kuDjT)RbG zm`}-d!|7plOfap0tB&SI{31@In89%)*4jcOcU2}^hn?8!d!S?~XRm3DQ*=Kbkc;dK zjwHPAF5-7gQNM1Na9PnKO~5LRW-OmSmMR)>r#KmuiJL!~&Iy>}%&C~GNlY5Mr_TYop=^Q@9OWarTMcvkGdyC(MII8H$UP7S8>*PF{@ zss&zEw8P&PGA_q^bQ7-YdBFEO?Z@G0L(LKuY$_^xlo}cx!;)QLB{+}bNJz9s57edf zN|5-#?3Q-qmM|=$a0VO4v5(sm?I1yu7BCXMvz7{YH#9n1u)oGyIiDoQ-;A{kgN>W* zrVJELucy9dNDh*$=%byCM>VC!)zz2iF!rmQ6wmeJIn4{23W$ysi3!nOAc{$##KQk+ zD#XzE{!J;X?rB#Cwh!O&wo4faVyKZu5099m7dLq~!#(W%ataP)r5jr_yd!PDhAnsW zeLN1`UJHBF$W~)P2P2NiK#;G3w7H7gjN=rHwUF91u_8jYT3)g960~!Q#WI{-0QhB= zhh_DeB&Px26;7CwPVP7@ks-UOO2H%9mOqhG=7QaZU#sHUQiIT>CY{q_K*jR{e z1LKz6;#kMHUzYVYijW2XF_)1w$m-0chlarmbSSY}#_A5?(yCe^>;e~dM?B*q;0EDy zgHZERj0PjCF(IDN;<(x3*s^aMvQrZW2kJ8pn-BsHnuWln(xMjo7wg$XWUZYsIk->Z zl~}1miD^-lWlJAINy2;FimIs_vSDao?EOGDSGQ-035dQT)JB?m5_p|v2Xn_4Z)vXB&8S-v3U)F7_l*xn9VAw?YA^A)VPzVs0 zY7k6p*6FC$%yfyPlb~mk=IXBtvVu3cBfF3_7G{Rpu#L{9J&sWY*=m+Tt!$3MSQcYe zB%xY!lHDElDjRL&izE=AQ5ld)k~{7tN0mmRFc`&D|JoSYeetI zNgASKsS2kp^-`6512B(kywX zz2QbCJmwO$QucfzNzEMe7SURofE+sje6e)C*E1eR*3s7&&G^CKE-5cbs!ChiYq9Fv z8|>W-?$@cu2#Vx38G{IBl%s5CbEQFfre`+o z#1FY}Fvgh~8WRebH#$)hMfDzaxmsq?EVjfrLb9d~J3#xv-jE|hiQgbFe?+mvj^gFo z>UaY>hKw1ffAR!w5^W@Q>n_w24$@Rg3*R5Lq_ik36=K>BdRy-|R=;vsL|GuqGn3&= zlcHm0F?|@yGB_H5y5tLKF+As-;1d?!Vl?2L3|`N^k|PrhN)l(G0#OM**N+2z@a!9| zRcQ$#7B8z`zk4}Ay3(`Elqm&T?A5*MO6=eFg!e-2E#4qHGBQ}2Cm}J3keDu}axWci ziWGfn8Rzv@A_EsE&Muc@uymi&zf6p1H2+vuAc0eISUN~dpZDrpjCna_3W8HivYvng;Hwvx%hn{+MW;y* z01OZvPT)mm97m=Yy##-cmMi?3;*uht446@KoIxm>a%~c_b1S{eQ|R?36Kw5*ce-P} z(1MwXZ2&Eu3&lQD+Pf-H+_B1^oE%tBATodeIU{#fADXzfXia*K8jeb%d~0-#HXD5d zGE-~;IVUe!Pu{xF)23fYU$9e9QF_wl*b+}X@AeD{J}9l!3Rwx_eo02% zL=~_5cMJ8mH=v_qh%Lm5#ct4bP5uVRQ+H}Nh(HNUR+z?k0*=t6Ja?vbG^#Myl8l82 zX)(tl-LnO=*;Xmb?It!jA6QnP__|G!eLgb8gui+mMI~BaA8N?yUX|S~*A$$REjRKM zl;{>sX$&7kAVv{Mv0U}NVprl64Yezx=NSzuS-n}^1s28n3M7%p>;?h=rUX#vC{N!s zpVG3KMO;!Ct~D>y4^1xUtReTR13+}o>RvLkxBv|VLh49$#)uW$yJ$W@L<(mclgQ1l+mXZ&xDdyv z2~dOKl=bYmD7}TCD|MmS&PZK5B9P)Bb=6s7n-(0$F@~!!iiI2Z1;vUs_2_2PM+4;m zA}M6qiB+m_xR%A9RTQ zZ`(Jm4_3n08S?7CH97xm8+`4$>sscl=-RMcTHup%H|meWh11V1HcI-qx?bCMZv}%K z${$20n8WCb_L7lkd9|Rom1A`pLjm8&QvjE0LMz*~NK0Q%34d(oCg|b_4lkBl#nPO^ zWNFx##*`GaU8&3s+)a`@BL(cUI|Y4I8l}u#>eyY9xfl!p>I#nS*jNYmY&J7wHGhue zeM~lPIC!}@(*)X~on4t-Ni;`-YsBi2NQ(x79vdTNE%1!fh_gmNz(&gd)iZZP0}x{Y z+-}<2O*p19s=IhOnr}t%$g-!KXr2{GINGnADc(RHk1eiOWp!HC;H`IZ3LMn@yO9~( z7WLW?{_fm0$qpwuq;6~*suCh(keU4}+BLEYh>&QhwE-Q1%iv)sZcPOzTGVUUL7NZI zM?dvLfan!~@@~FyQN00qc$IKHH&l+(AfpKi!} z#+nF<^`nMlF_O(jR-4k$I&GOXAda`9onYx zH_q+MUL;%1tL-VJCU?{1Qr_FuhFWa5(p^HgTW`lVX-nlPQR0x4h#nuefjbP~bB`Al zO#~$!os36ylV&!^JwtB-^Tl)p6D|zU5F9e^`xOq`=!|To6Ic2EPbqrAW zMBLj-dnHL*N=#(VRh!c0m&6=cDWLOsYz7Jfo* z_PDp;yhl@CHe8&oJifAnD~4fSNRCP5#j)ey%Dj2}zEO#Vd9^v+V3|ayjmDNvwW1+q zZb*0i*8n$j>`Q(t=%*1dmA<1wBRAfTgjVQMfpGgzQT@^OXBqB(Vwbi0XlnPcM&+KD7_ zCxb>X6_&myDY>{>NHc%rshd_s1@F!ZmV=K~tiYoRDQcF`6be@n0?W!KR%Sed>(N0nHZBGz z7P45?2sIUVm2fY03e|a{V=A~sD)lPO{UIX>*+xbxQdrw@5JyIrIKo#?#q~9}b<_Aq zeN)XsR^2MS{2o3^d@PAWTT&Y?Ul|8H3yjpbXMchZA#1VL*N+!$3~oHMyryV5AZ0P_ zb}={hDdYiPA^1Z*%LvaBee=61k4t9g?Gl9vF-z?#z53vqXRy2ykKK1WAC0CT!z#$W zGm7NJh4u}>=L1Sd2qkqJr9L6C95eo|%oGW8V*Z}w4pv%cVt<^Kko$pN>|)dLebpVO z9`b9kOwG6oDuxPlG(ZBt3p~jd4vDqy>bx0yYZtXE^JBeeCE5Ux0*igFevLbF-yLc! zQ0eiK=v$qWy`*JT-Dlk#+#eVt$--3uOJ=C%16(-x+}vCMBzy6ID0`WSEjhAlXXf$6 zqgKoAh_%wZOBz3yE@oL)iIhH?*Fu>ka$hHuhQZ%)^BIA6g}kONqohR_xo?^e*D5;w zT*h(^ZIE_#i;g4CPESVfLc_)adU8hTc6UlJxJ99hg*srul3#@)z>c= z!DA+;+xksy{F&2cVy|vvh=IEe@m{&bme3jdk@88Q=#Bfq@2ib$I4=mBiXHX{gxCnR zYC!?PP#SbJy1o2@NIk(`2i8FFE4**=ff9=_1~KLo>06fgwgrFuX4v#jd?n!|nU95}B$el)ziOx-jO%$MJnVb5CFrn)^HdQo5My;uHl9M(AaYdxr(x_IQ zwTtYYOTh})-EYO7u8w(w1*-IJBGc9h z1{-9iT#?lglh}th3}@of8WHPx!P?Nt2PU-(yv1u@-#BwyJ#t-Fua)#Z5L9+=?rm}(1Ru=H;o@pMj#@UpFECkdSi0~qqR zZVJ2`9V~KQDk_=d11u$*%6C)59Zl;08=yi7fI{E>Rx z7tvVWDO}ls6BxHLq!!}BinnJM-H$hEA^!Ono9Z%aIv;fUpy7rpA~K9qFeH?PG;4OXJmB`qd)D&-_~zyS+f2%TUHBRCkDT)ted}O zs$e;5+)l#y%I>9Zs{LVOIO!xNb0;&QDD#0*&5TL&&ieuQ?onCAEI#3mE7ZM7j#8|2DpJ{-K=z zU2gj3{cpA{C@FPEi|2QMM2!( z&pPA-^HgVDa(~nY)E>?dCQy6R2 znK}MF;D!=utF!dXXXy4;C-h~##={r-Xkk=NZK zM#@{wloTTZoC>~u&i}T%L-wxlcaFr?eP&KB2=q?9+%{?)H#L9VvbU=APn2N8QEm6P zp|AoTB7yyrMlD zCDW3Mb=mO%{L#ohsi4&z@A<$ZYOUl4x$(|toZ4o1I12-5@<`f+DXZWG=a`_=0l~WjYZEUiPOzIu7GPc8mi+3{L90gS6HQe$b?9~tZt9Uy5nfy?~U%mF2>=AL1bkvEs^Yc&W=WX(eq|Ay02kRRJ zcFx|$?X!D+}(>5#23;nrrn= zYLB@|!jZ$`{3P8&L~w8E-77%{j^hjZnO9bB`E1Y3O%B)cIQBlz@*%4nScv8RG;KOj z$-TW?{0GK8L=QX7Yis8eRkAuiyfRzmKe@ABRJ}*yl$==Zb0DI<&_gpGb-U!P-lcJh zjgdn4)*L>p!sY(-VVxwUehW8Q^L$`EFxVf4_uf*Ee3`@JF#Fr}6~wz{`C$~He`l_E z+GAmIiTHf4!GgE2ac9)gy*njm zX`)b%pwoM0Ij}ohYwkGKg8f@r_`8nkj(xmpuT_eF6ySSJul>dw@#u`yTU6FQ+ncwJ zIG*MBJUD3Te+N$T$KAXC8~f^Jf$O+B#Awk~;>nGBj40(l;3LmMgAOd$W?QyKja8`5 z5GMYnH{Y%ly^o@^XqOIG<&*@R&POj3~->;SIIR!S(s&wEPEjQttUo|qJxVy2L;?xBJv&bu7WkW^-)Kb6%^F*!AN7sq>A#lWIlhVIjXI0yaespb!YI?=Nt2TY28(&eMbkQXe)wW)a#4s>VuMR!|cy6DhP$(rk|VPc9*$dXYCApPE!`#OGz$1R!~`~Ag`*gz-+@G zl+7=6EHFj-%#zge>sO@0+BYT%igyLQbNwGxDAqiEtj;`wg(GgClPT$3^~TK?YdfEOmp;o+k`ijA1Il*y14dWK z9($x&(z1QZc6bsATFkyd%Bp>c_y5_QN^UXnc5f`)zGO81T`BxJb4!`(!1N1qVaV}V zdVc9%pu={NQnSZV@QLdR&yR=$jat)`wdK!I8iZrz)G`;VI)+*cnH2xX?LYDfU)wnelK(g(9Ux!!q)g?N;ES}5QOlmb$4t&v zOF^R!O|p}%30+pi>YF+*-ZShKmHMVxKE6jDGM?#Jm(0@jT9P;pF!qE=zKkO44EyyR5oe$W zqctbOMRt1ccP~M+EUTOPuNi-nM)%Il4wR+62p!xszBBmeR#j_R?UmvC-Hru6-23dO zb0-xM!-6xCe~4TGgl%FC6=x1{Z1({svh@=WCRqrSc=DcB|NDy@`Oc8(iW#v^@E zt)k?x^+b|hPDuaZ@cc|DF1OTqaBG-UG_I0Z+NAgz+lBwWz0w@?E%Kgk$c&CcQwaJP zFW%y_=An@@K56ea?Nss5RI}vF^+Uj1refjn$BPez31kq2I*Sc>LS$ z(Mv&lcHTaAxS7YNk>1-u>r14aGg2*&jYfnubT>G1=*GPr5BEaUJ15&7lfL7iB?0-z z(s>JqCEYiPa^_L%nL9pDine<5jQ7>`fE(FAGOVvSdeJ>i78CTf+B(x1HE|>_2Lgl*!?8Lu%$xN&YCL`b6ipfgqfOHC+kQX4MJ8!joYSCtAAK~;r>Kt zmTkSU6eXb5mDF2m?E^X%Sk%@6-gTZ<1Z zOC=>c*0YEoa!L^;LuHuNZ9_KBetj)H-|yjf z?@U`s)?VBx++9iD>b&2ZYby6O75{P4yKr6d>$dw2`KZ6+I|svo&l%abfDodKm_(&@2luF$gh#K0jDZ8a~S)05kt$rF587`gvNbmK!TF}~fg419T zTIHZssjOBi>o?5giLj}pE~d2KZ`_`>$KSliXZm4)Qj||eknODFBk$h4=^sCDST-HY zu0KEwW^VOc+obt+4z=D$*;OlD-F+kZ$XkxYC|970FI-0qlolVvZyYE@cdbO-MJcO1 zW{&cqpWkTJ?_KVEUE-)7r8Mbe`9AD;O201xvYh`}-SNQD`3||I^Iof5$EVqBxJ8J0 ztqOif@8sy@+orxptzg4pYKzFyGmfJ@J}y7WtHjWhX;X&9fmvS*)Cq@v(EOz$ROriZ zD{6@=j=eU_f;*zVXMKpHx>;u@N>m+f&H%;R5F_mriVExIb@y`iy>wsD>i2R&4`$~_ z?*txeRp!-0a4lphg6+wu=I+jZ;Y*kHmxPcOlln+LmFfWB@fG2cukhpHTD!EiBGsRt z(w+1Ablq?dEc43zQfE~5MvVr0WR^BtA{^aL0!E*dJaoho2MaOn0jdaNX~`WpxnVu4 zwdH42zw%?Av?J~n=kS>mNMCbAB-!%ny&;nVQY$-GgSFV+j^d|JUlBrw+k0;iN8Q44 z%N1uwpDkH6T9c>Q%gGv>{U*JMvqXVt^fRI7J)OYgLX&j#dnpg-(= zI)ZNwU^4euOr$RL3Jso=;xD%N4<5HjYaYpbzun*Y+AmMhY4AICecF8wss&XEd8~38 z04kA9XqC!bpHYaY*_a?1S|BEErv~>GW*VeACK4NLl3(wS8jdVZe+X&0+aM>m8;SQ= zoc8BcTX#DcU!Pi0x^>yqm<;vE5vnAaZS|)_UWJZ*t1X(J+&c|hgcYj6(@WakB%Hp{ zc&y^$Cj8^P%6e4m~qxow8o+1$mH(`ef^352xbwkkJb!O?m1( zAHN(v(8ofj{Nl~JW~%kF8;tag>^(_R*4Tos?a&rUcA-V5Z3mCB61PmVnIK8$7Qdk6 zO~g^e$@~#(ds?9L&%5m{h-1n!)l}GUNm*>3jQsj4?Q_*7#R0W4hZp;)JqVZG?Ss5K zmy4oQF|Da0 z40&f#b0v30s=L!smX!TtOU-_hD^l&zsJhRS8+r-6Dn~170kiA8s`we7H_U1B$hOH! zDM|+{kkgCyLmXt6VYwc52U%s(N)gL8*BXbLgMI{^A*Nt`KDqBt5Z&9P($k2?sogof zzz}imO;%W-uPjgr8YNp)taPf}O>^Xzh*`vQ*-gVOJw zPV}9r^j@~PWbBh`DonWp9#{XszD_&c&`5A1J|1kBHld!mIP>l3>^f=+M+pp%lSa{< z9sT%m(nHRB>2@*Z=5t=P4bDu6W6A=dlXE-0sKqI4R`|h92{97xcK73tTg&k5;mXkK zwtZshQLjis70K|u?a#A9y%)^iTx9mon|;E&tcoz7Cm&CdcQZ74#99+@jBVr zzmNL!G*UiY_4LeheR$X7@WndWtvO`-pv=g`q!d~jpfh$TT$`Kqq;`B}b8^zxCyVLJ zW*C3P5aZH_^u56n-K$wCCVqIvZY{X5O~HO3 z#sQ=9ecGDU)8l91(Td)dW0PmEurZlr z@hK0&#Wp_fEUFyqa}GIW;kQrlYjGzx9iO?XZmrZWQhw7Rg{^+?828D>8Nph*uOeOY zGD&kPC&b#pkZCYG1v%rkkHdNVei(hJal($w}{~`#x{`n*|>1B3z9f3PM#q`w;I+mYqqr-iXz^1Ku70Hh8KtD7Ggi7 z%!l-5CRk82To?hVmQS0zA1PaomM($ug=T0Rs@R%r94Vh0O4$H+ZH~9lx7B#%i)qCP zk_N*{U%z~ECT)d?Zx2V`KQVIhq%5xELg)`n&_S|OMu0gTz>NM1CgDSfphh#V|3nqI z=tHbsaEZX8HD#%pimstVQl8*^v_zOKv7H^A=O5Z$@GVYISryD9#v+jp+Hu@I66lMK zn5XLPq9zmJb*1K%W5y1?h}eYlIUulnpxota{hp5FP@GrgiOh?-oN`HWu69=(CH7mh zzmPwbL-5viBWyC`EmX}H-w76SnzaOi(wur>Z4GL1ni>k3otduZOL=MOg{so*HEs#| zn|tH`QQB1=2ts~-;kG#j+x$B0eZJYw7pt319C%0azECCg-O0-7#bkaRwwh&y)h38c zgd$_Fid>!gk&4eFRV6evJPYGhb~OpBTP@oIGh@60k@4UD9gcKWPRZ$sy>j`G5*xul z^JlbGxC3Y)Y16W}Mfy*ET)D39ZR(TEULsnzZ;H z#S%nLMG`qG1uZqBz7s*4YMv|Zz}mGd4^G9Z(w5C{yCI1e$_-~1XRSR^cEd7-?~ZzS z)i&k|!FM)#B|2AjCZdgWmt0|!nQdX8XBvS6r4=6ZZg(9!Z+d-W94za_%=j**j_>2n z%X;nowc=yhsuxu{`0h^N>$#w!CAa!bO|oEI4l5BzS{5X(-ExX7O043sCKESaW7R`v zE(l#6TCux@@(hPt45I|5XSB@;r8a5~spdHs?ZzKZtyFNrrI;HOq%*6A?Y4Zf#OKUc z8pgBhZW9~hkltRC;QTj!5Cywm^LU5y{U!@2{F`-A{jKbiu$MmE7d_Bz0Yln{Nd3@K zec80P7?%$l`y1WgstGQ|c}1VqC^wSHW@|g^yV~O=!Ir%$fnl?~z~=Rn@RKJE1-q_A zO~}bPbY)OccrbSScxCVKaA*5SQ~v40rA|pB?P$u_(XzbTwJw?aQU~aNzkjXVWlFks z5#365fc;e%bafl7aon=f$J1oq>BCBhOiAc=m3Z3ASojzvQG>vl+`?)F#b$zv4KbbJ z$DY|*&|%6>?1Ja7(Z!g%6LsA{a&NGnp5amTb`1K6VDWE;)NGeIE}T(2k}rMM{X)(CERv$Zz8`#R>G)4=$^RHUz66bZqhK@wBJ9fv%ovNT(0ptC6P1Lz>)?4aVfHE zdNZX}WsaYOXOGa9&;2!Cs*CO>_XJapTk9vcOwRI%ROb%Odn$%UL z#^SJEr&(ObPSGs!Ry%SB z7CAhp6*1vTv2f!LCvOZJNt{pklrH8Y^=FoKh;4O4M`-K=v8T1o*bCyxrdDTs;{*`g zm~gNe18piVQ9tG*MvN1EiVwGm{KLBW4Vpq`9B)Rbu^CE>S-u}ucQ%%LpK4$4yE%Zr zGXa}`?`&h^q)UM|)Lyq@oa#r+)ELD)g5E(L-&sHQ#I&=D^*kWDInRNc({+TPPkg_u zFAF6$Q&+aBK+HQwvvEUL<)t}qg}dhAhKDpRG|{iHh;|Vk=R*#s>S)+g}lTPzF$S}0O88_1ME_U945 zq>1dKCzx>w5#lQr#LH^1Q`>U28X0S4%z$HOG~CyN2GR3*0;& zox=ormJJRd;mYIaMn00DhV_6TGj(ct_*DCYcF|QZa5AGOQL=95%c(r@<>XPY|Lhxj z=#fszo!7Hx=;8!{t}sDe`(mL?fllwn%sXdmNOu?Z4NY~e4*ABDEkZ|IKQD&@d~@p` zwQm3XXdQ4sXY5<)O{(VJaFfmy$zKf@5%YP1SZP65sTQ;qFUk8w6ruCwSatFDd|dap z*7zP5R2dqhSYg+mCq>M~NZ7vHbtcCzq{sR!zDy`mHd1@@{NZ+khFV@#RS92Mdw8Wh zIQ!vFJaNw6W66Q%sY@IONx+@IMu87+59b&E>lXUI8n@7j8dju~nVb^h$vCFu$~$H| z6BZH~zDMm9R9ixsnA{9MeiAIfGv}jFnb{4*l+N(yZ&I7g=n?H1jc$3}o`TvJ{(MW` zu5p0_?UJQ?A;*-1i|+ZXJK+5szEAmKOGg8~F)NGrw-wZ!R%VL6uGOzaG3Z;exUuM> ziixrr-(-`<@GcNh< zrg5*uII%OsyP42RBG*Rd)YH7Hw|UDH1pE{3cfM_iJ$2q(e)R!{1y@&%A2vj-*C_z& z^|!}G+e#TV!^pkjdDz(Im{~fRtZMaDG@ui*%R>%wDu3A}IPSXoscVqr(fvW7S91z` z1jpeWH7b6Vt~7@K^{a*_+Z}=FvM5T#(d>qyyjb0IPgs{~bpu~G!qkPRmF8PXc9cVe zbw*N34Fgtpb@Tu0M2Qpny+PrLWMM=;QNUH8_+fMAGjKwtoO8NQaLDDN#42;=n=T+QzHh6>So6O zV^dQ*emu6o;b5sHqvK@WPV#a3CrzPX{6z^_jo$FqjQ6g6*i@~i;;dcD{JebNPnFR9 zjJ+{I+SPsOonbYkkZk`r1?_r6?jb*>+G|~PbIx>UbD34ZpA42PtY1=)chICTf&*NL zN3pd>RCMF&0YiegNhTQ+_+T0#?LiTnmr@z!XDu&I_TgKVJAOE)eb+}$=5umpcQk)H z`rF&s*WAf44n{;rzYLh=>|A4g60F-AavU2y{RCC+#c~L)St{Ljtg($y+jP=Rv zd^o29Rw3}&wb4HF6aq`*88hOeSx?ROygn_)T34fsyq$M@QBE^s&XaP~6zxYSvES94UVV=M{=3Sfb&`T| zSs?i!{Tibu975ywRE}_yKZo5cX11v(u*hwY#mUAIpu&`=d;*^gHd+;2T5A6!uw=H@ zf6lBnXb{USgEj`2w36l=)Lbv-*M%^5&Ht^bccN;;>wdA0IUT6CQ?Q=erZo6l>Sjad zBl8BwU(bM!;C=;9T^r8lGEpv>%Aa*CwD%hWAWk!3k+9bhBv|rc}$b&<-w#HxOKTw%#)=dk(ZBA?{#?<(5;6e+JpOmdB zT6_DGgY7^hWUW8*yIIZ9IoZWIarARrn);N&=NBv6qNQno)doogJI}nK2V4dg4buhBqxAn0dxzFlz!uQgvV zwZ;jRhkJ$Z`!?@DB}QYgtV)^1ivDg1XF^V@ zWP>0Bu#a1CJ5MS2Mc#%h)Nj*1_Tr66$>dg8q{k*@aWEhnd>@ZQ6dAP5j93R-^aMzI2jYivlYOv#{ zz|tV9I^V15sT{Y7bEzoIocvW%Ww+3*7v_ZLkOe{S{hoWp+Lfn}en*S+E zOC}%u3gOZa8IH4HQ7fX?#E+eDw^!huU(e|l$X4kSr%>sGEf5MCyodp=mpZVVlFf zY$;E%QumEKuCIhu58 zsqZJB^xK*~371O?Tg#Ijh?V&93!>>=csCC7fkbc*3>W7R0i6o!_ALoRf}HxtA@}CVEdwu8i;Lk zF=baUEVjOW@t2^Crg5qR?kv)$$_+|7u6t3AZrNN`W>uPN1JaK*HoE&f$4*wyIuGBj zHk`LjHP;BK_~JhmD<7+CW#^Pc3oAFhm}CJr$;G0ZO5*@;w9ccImF+SMT*Qx$Vnde} zj(Ep5b{Jc_bnYamZV$W3j}FV$td2Kml*nz5Qk}vgz*U9whWRT^LWPm%*O|dacZ2V0 zWm!s;WPGOh)!UA5EUe6=y!X?{Z{YF)XUyh1LxYR+X?E#wJCgCuX0v2@oPpV-AB%xc zTXewBhMFq&=L=K8l8>?xV}DzkOfQgURY?(O74J1BO9`r#SDArXEt-X!J2h?AUurT) zx;31mVjfML@sC~B(iivmUGA34j+mSwHNBb$&uN|Rlpu!}bK_*7#sV9xypV?&-f=oF zzkieT&zSDr52KUFmC;Gc)W?Qnl0PaL$h@WPE(dn+bKb<8i$+T7~K)~)fm>&vAz7m3kj=X0eYm#7+ggrfOy%5z@+?CIa3|{Ye}zgVvx-X({`50d!~36I}kX zmUV802F+>culnu0X$`n{s7tv7Jr5E_wJWfWEx*YJe_&8+$5yd@Yvxr0G}ph>q}=C)DlR?GpiUVRNEd z8_h3u>z|rG)wl@vGKAR-Erl%`&>QV$?r-PE!5SmlHp<`hpHY;3sX+od>&FO2SJGcJjfU{MIY4c;k*URpjq=-Lj4B;?L{$X@qdc47b;ci zi;jzxJ!ttgcnwv)dsEWc;_T$^9ajZSSAR(-UhLZ$zakKZ<>7=$GmhA)@xVYk!md-9 zWP|JS#Q10Ffr+h-VR=pJ5p;zL-9PhyM&A#_D&UL+iTJzIv-AR(olxDnA5}8dzrJl6EpcG zX(k#Bp0~w|GmnklHGDi#@!Q86wa@u(Byp?#YUTYQMedK}pQ>M34H!M)91ywD{0HZ+ zRvuJl=i9UYF#Yv&1-E%hj!2CXfA+7bw_eHq$;1`GX3JtOG9o(yWxq+d_4fl!eYxM2 zUeT(VJwxVq1cF}iHrz;MkxnYV(<~pdt&pqi@E`Hj`>ju4Z#GStBmN#rXRi3m^Wm)V zo&3#L+Xe6CW?stWC*>c#G=ctZm{8WenQDCa>r9gWe1Vckzp#ra{sDNX^oZk6eXASF{}Fv0!pJ~#lTqNOUw^)m8H25o zDVz?cb=RG2qQdiptAg)LU-+)hurlA7-c13LS3u9E_0DaRnmuF|uzj1Qm$huL&Cqk5 zp}vjx-%J{s2?&T&^(rB;=Q|UvJ$d!Oea7L_+|>X-=}hm;^gB~0 z+SiQH7=HdQ_`ax~h3`yAvV6JbNf@|b$_akl%o|N=~{wwm;?lo4!{ooWD zL!b<;g?jM3aC9$sqhLPGeVvT)cs4(`I}c+7k()z1!hzgw5bw26*h-B14m8m&U8>2W zXXhHn>zj4T%yn_<-UGvYi$9G7~RUl4APa%d>zZOPO zY+rT#Tw8LA-h5L~y398|sdB%Tg+LiO4_SgZ8t`t=kqR zd+Ze&BFdivx&3l>q>S~yGyRu9{#x%|mp>Wl5EJ>9CWhdg%7C=f`+GsXZm zhka))3X_apoie0CLTlV5UH5Q8+zBLl+r*G5SMrpHky!kF4D#84!gf93fFb4|EpuoG zJ>3PazD5of=SsEN&+(=b$Y1(C?=HGe;?dA&cuI( zIqD4x^lY|oD}VtxGub{5g}X`|q(UN1!Vr}01xpFyxkP;3!uD+FO=J7Y`rt`#h5*RQ z+nGTAtPxTeppHLa-r!kv-&u;@Zasmlu-uIok;OlG@(R^Kll;!)^_|JS&-*)*McR`y zrNQnTAPYvo;p)YArstsZKur>-LlWdCkM!?MWqqM5-&7!OQSK)#dQxR4hD%YoBG`0} zGUE({Y~O{mf*KTtM1HeZ*jwNheLa@+Rh3_j)41EJ%x8s@{XvqF-mwCA5Rf0qfNTfh zYL_85%6BF^7}_z#iY#mN^S;>22mFLo1kcb4Ua4>E^>?O^jK(rb$#w&V6ajB=()Z93 z$pX4-$}t;%`o8pM;dVcbyt1Ki6$oJE0_{j8vw=9}Zyu#7 zuIe4meVUbO+6(BL4m=ABRHL)rw&Zkt-6arU>344Ml@lVMuqE5~Nw$yWu<289KUv{q z-3kSL?ARRYA=_OZk}m>~PabW-CV!i__$EsWlI^=Cg-xemzBBR0K=H;t^Ri3avft9x z1n<)CE)&St7vGsys~HyK0SM6s37Z>Wo^wkX|8*iZPbgCKxLzP%jU5ok-Z}8)sgjYjWXf|F* zw+*m3%RIel-+d1XJDdA7>0S=IZs2rig`uH|w~gy39YI+|O5!kWzg05u$uqBR;ZNO@ z4AeG*xHf+n3)h7`LuQ{DUooo2&_OZFNYA||X=pdd9nO4#_k9HS9?&x=qcYexTgLMp zwjrQcZ81s*p5?Aoz+=)A=9Mq9B2S*VyAwfA?cI|Z_JW5MB8OJVr@I$i>GH^dK?mf@ zDw&&I_OeLhmiMY`-z74A9m!l^L*Xy=Zah?W@E#!&cL;Sbiv+#*o4^q-6o(M(2En`Z9U;Z8k`}8g-ua zR>wOicoCa^KM7(;GbWId$Okb5_6;S4<4=UExhoyCn-sR^hj}nQUws*jiS4tzEKSK8 zUT6;OxeH;R5m-FxW9gUGw^s$N$hrZ!&18lyg*>*Bn$+C$FrQSD_xpmrGr5r!I3X=f z?-=$zmVWv_&@iqKzcWcT+|5FwgM_d`Z%$rs%)`Es)%3k^j``g*Xrey}cBXGTJuEVk zh5vyGu21ucx80k5XcU8xE%$T#fVpV-U!S7fyAmhPb$sIk@NeU);|6Ah%7KZ^6#7#$ zmiOIl(nlQ`$@`3(_Mou=?#&=?JSee;Q6B>pTyz-bLN+&PSl$*vLI@=?8n-i?Ny-)!9YofvF=KS@PtMAvim3X^mI`)2X#x}PDGt90o?i^^DrLz9MZ zE4l7-h(8cjJ`z2;Yi&-)pU~U;$p`;)GirsbDFaX5ybn-2988y*EFQA5wtlhHGGE2T zC3XT+ZFBQyKI@iMf&46_#DnBYap)W}U>IV-CBtzh@}zsu2B`6~R>m-}!*Hg+Qj{=C zI8Qk5t{ulTL9@jSf+us6?;Um}=ypR4Q05Da!WKBHpV9BU1Tv6kMU)`5pq{QmTj0ie z3G)X%{CMdghf)8(Gy#Aq5TXLpmDTR@*$pvb=>UqCppb_7+W z6sMz6_O__-(CptBH@Eu;pLL&g)VWupwPq>}DxuN!qPtrm-0t8M)w1AF%uwr@!`3_l zvT6*zc*^~wubDpUMsz*t9t^|cm4?0yn%pFOX%^1CaD{gKK%_YX+1+hFXq<$Gdashn z>;oLaVm!);4aQhL`@bKPkD@r<4f<1GpVW@c4K`~0@9$142#^^jFMfsfnBLaGAo z)a(GV&2hUW4>fzY{Ogl?38MyZ8w0E{KPVH#%$1v&rO`AhpB%6z}^vNkxk;Dz9z z6SjbX3kt*D_z{UJCJvcJvMx70g`J8ju*k_=kxuaWw;4W$eR^lf`(CzvL>f0Vyh4eo zFT(SVJQ;c{J4)0vrNzPCoyZoA?1<$Io~zE7@riwB8Yw^258m=Gnirb0>4za?>q)F! zD;+e5K8VxM#XOx)J`?nB{HiR$!;7cpC>Mx+bpGhe2=YtHjHz3t=z1W#?mSRG>Ro=d z-_XdHQiVvqW}&I5I8JjrNPKd&ZE+%8p`e(v|>nAL8_AWTnzT${RYPS(rAwK`J|jvE){JPFmgi;E_5K@|B&Ame943VrAucb#9_FiDY+4)Dpo? z%8B|3YUO%@&;=pwZN+?X@jFISCB_feBGcE-0ZsvM{Iy>AIoeG`jxdG(1Tm}#pss0Vs|q(oWAm}_ z_#Dv#gYnSn9?7$va(06*0{M8Atf1)mkw6yG#hY6NpmPlV6E2`Ez!4>dG}!|# z15)yB;dpHe7UpcP-;{K6&DgMGs-i>ByVd90@a*PYY@(JupcSq#bm=XDUbd4JeSmSe zxV*>J!z^vqdvg56?=Z^fDeEwmr$K3l0NF4+LeV}@_`ZHB5kJhr47dYEx=orSsdgN`?Bq6XH9QUS9^lxWvu6t>w3x)zNT% zSpp^B?B2&x$(vn%;lLfog_kBM_1-12sz{qzQhq0rlAWcR#+^XoFff!V50*^>BrVZX z+W8<=X{;>I%?;N=aVXVXNo$+df3>wIUAhfzEocFlkobt8&8ODqa%x|JVTdX(qBrJN z(1P#{=>43RY;U36LBrgSR3zYLxqBlEpu3z>*&RQQb@$e1`K&9iG1@_Eg$ zDX?KWn{>3_lw5WewhpakC)-T0+osv|hr@)os;#I;|-np46=4PcsqtRIh*O82~Eqm3| z7_s|j9xCOX&TC0-vNVk@>iYAsC=Kr5Ri%X-g0|GCTO$wih;Er z&QeX0+OE+#RArS|{Wv{ae^U;hRG6cs%2T(eHcCRh$iCD?%4z(WCI)tnm;;!u_X$-T zROHwZI05=&S$e4rSPU)`LH|OJaS+GVqj+}0@FRrBgpuQy|E%jj_Vh?Sa?C*V|94x; zaJGV3lk+nRs_~XUHc+}+UM6LW7DSNdzmuemMQHKdZO#?N8>U5czGQDGK%MX{CF#TY zLZ9ZW2)5eqtd6Q_xN+a_0GvPLih`a3oRZNRN4Wa>iK(x0^@cl;nF^9}X!kig0l6`i z%x<-LP~e7wJI=`zTci<lQWE)-! z6UtsVUQof*LFO&*wxo1qJqz{ZmNnsU>8Kv6PjArCT^~8qtxPpU$+zV}yJeNg^bwm? zW&Bs6O6m!}KX;IrX}sGem%hiYGu|lK%X@N3T`bRJ(SY8MQ4d2&51i`Y6Yt4<|nno)EQr+*X1~y6EK?3Q`CUK6NW2)DDVUbxM^TyqU zj0e*Ck&Cv^j)gG%4@_8D1eE=#)8Cm~)Okin+T=|_suv&;x*_B1dD6O`)a2>`q`W0v z%qYVs&#eJ`^K_Q~xGBS(9TB(irg|Ghhzl~R;XlpEwtj(MIb5lHyGArJ6|=Q2_mj8F z$S}w?Qpr4~&Ew7nJb1)I&NyUguIZpJrD6^JzYi%!M44cU8x2}Uwo6~p7R>`<0^B&f zcyw~)ks7xQSWQBIAMnceKnuvG6to$t7X{P;NTP7B&>HzCYQu}-fb$pK{%pY!#i)2y z$3}N%)2inDo(V&4HL|?ntURr`qC=MPk24-I*0Sl%{_Q_KE;dlHLh^=~0wUmJBjx{D z(?9Fy_nK*_FgfAspgvCzMz#URuK`D1Nmq)Qo1%N%x^~u&_fFW2W+xm(U+CkFvwn_P zY#W~c4Q^BnhTUO6tu{h%TXDBVYlFvN1VW2%VzEMtW zv}d7IIq`$;$bp57ydgrRv=YS-5(qpSU~Ws*M@K&VQrVJOBb{lER~law zk)yI{SS_t;a}*kG1nF+xQCVVp{ISnmGhvS&;V%140#umu%*ZSuyTuSe=;q}OBRXMt zc=y>F^uQQ-ogf}D_sRn)OR6+fe!Vu%k_wQhIG^&ESvyp2KFIKo@cwhr&(=hzE@&IB zQx~6d-aQ%NiaH}GaP3@7MazK<9CXJ0ee;S$pYc;jQ(eP{p?E{Y=3mXBonMmDGy!|Z z?rh?;7zLi!Sm+kbjmNrQ_BmS(72$7k0Grp#@Z8ykcTrVrf?11{ltTFs;@_D{nnGSG zm4&&pv;@&JzD*YMczkx9{zC;osB8hxPL7qA%c%A$Mj77ty9TRX`s;f%&u!{{&`ZEz z!j3MpV$?EQ*F~?!fQwNQv6$UfY@(M^$qGIDV6AeoZF0aS&*@vHh{r2-`;E+`=fo+Q zJ>^&`3-u=|y1FaxpIK5DN}WQhDXHkZ0xREmeqxUIg%r4?g2Sw-apcmKvpLl-^o(>lHl+Vy7=Y24Nqbc7M3C+iMS;a zWi!X%9K2V&;frgWf$V@Y3`C@Ad%C0Y{d#oj*9X~~;K)JQ2-mhT%|FgcBjlNTRW1UI zb0|lr7v|PLt70ia5YpliK?#<&I&z!#=sVNawPw*)B13G=Mz~7rl&Vqak=P5tJWaZ-xHjJk(aNJT_=u zpBy#TT!uhh<_oyjIn?#@u=O(no*L=%vW<(f%}=Pq@OAFd9HK!))`$@+5-iYERIpbja)vr)htil2#b72znJyzGrXN*U@Xj->9Ou^ zp&cZE;J;U);l{?6t&8zbjsbo7P$0ZZ18Ze#`lqfM+|YQo`KwnYaq!!>1VDYrgS>F5 zPV;kV!<<3mk@y_*J?9VH7K<5vAc--9wYQi`wvQiD6`WKZu5%$VRFFM?HTK|_z3hFi zP_urgv|CZsZhwPLV5u4Xn9QNTkFRccw1BTn&}E!0@+wZ7t{5Z-=26&R7{rm(4CU^b z2q-B5%fs=2=0u9&NzGXQh)MZ0? zM&iXqEv+RggPL0&%_dUC(MEJ&lAE*2fo}NY$NFiG`aIU2Y*0rJ!>l3Key?)!hV?Mj z>#6&#W3$u(se~)MS>ZaY6czXloZ2&anb_df#@Ja~W@21qHuxmy*?oLiV``UJqk9JC ze%Qv{TzGswcfuswVLQ9`N|Yh!sC!!FI^^v>7Q{Hmv6I*;q8NGq&`iw@pnLP(x9La; zu?XPXSKqP#wcj#J*^)c9E38%jK-=JoGbJl~gF+A));!Gk;(NQTt@x0pWVun#|GZ32 z{?{|McGyUEtLetbW$(tGF3%F%>B}Kcs&JH&;E1cq5w{xXeOGw-q0+p*{yylaqt}@S zqFb4gy4^YKm?pV1wPQJ*m-cGS%@H$Xo;B1X_ikO@_(3v%Z0XOAG4X6C9JTodZ<^Mt%sa-XSDHCUQ?J;_*5T}I;G{4_ z>cSyTepTb$hMO%C*DYO;@MHy#GGBDWz`mR_5{eN#O^W6L+I*ox+3YJiorTE3PJc}5 zi200xgsFMbOTYwOrj8y5J3ZrIn~dpJ8YvCPiYAZA=;RrAm}sSmusf&er#4DG{%npR zv&9rhc`@@0$-1z^e6|ca%Vcy({eRi(!qh7s+2l4#XW(z5u%^0|R1N}|LhHb_4K0Ws z&TfPm<_459qr67aplz)1p(-)Ip%N@Xnz=T7L+N-~TU`2pd);bnH+^t3E-mC^nvrjZ z{9uo}cpZ18VUb{C@7HiH9%1^snj8b6Rjbuom3pO&p;$99(g=mCt(GFqg~D$L1{W8Xlm%+B#z)j`8CIct`^FPG;g z*+xDjy}1ZxPDMpQ*xi_ggXMV8YM@dW8(=g5!*6`TT9|6aD*p%2P5CAYKDt39^a?`CwA#Vb_Bq?s|rj?jt&i9i~? zs_kJS5$%^5c(1UBH2GE3$TpsI0a_}nlB-;xX&lvk*azR>aLjIwWGhAvS=Xv|vHPs? z)mOEe29CAs2OY14iQJN$t2XGBD!Z&YNcU^JyNUo@Idq1dt;#o-b6D?-e_57}d7S-a zIQ29|SMcEHgpC7_v3)X|>Y(X{3mcnvmC{a_s#ePDYe(~hZT9mgSfxeaHjhjscZHFl z)Je32pRivGy?S0h{*Ja(s&B89%M;VV>TKuok&;Q}^4O?sUubaB*+o+0vtfs{5k?B4 zcX++bjNF^>VDVpilzv|6vjyl5`t2qv!f~ax6%fa6J1yZ5+g8^+aC|u^&RbT#w>rxy z@DoOIsmWo>9uYNJefHm3-)x%2EQf#x#Zm0zu$}XC8Ca@I%7xpplaWNgb3;527Av}+ zkjAbr8y3nTA|9rDaJIB9HM=^pvckp-&~8bKdNXKQE1IM&)leF?Q)BozYF6xgKY?=D z>r_Xl5)P)`36Fi&zE^xl!8{9+Io&BxRMeyC&&0Te@MT*paL;r&DL*C zqPSX`-=`14JU?DL&u)Hk-@Vo}!yL@oOS#kqxJOB6tzAaYTgO(9H@kDC(sawG6qt(( z{D}T)<-I0;+%YZa1Zaoa*N?!C|L%8@I>3Cl2BehKqrD{6hMW)tkU+)c{qu|a#5CJzuGEo? z9tCbtTr_{PfQg_Ea1f(zmYW7s8Uo#O%Rdl}V*3es@%Kpl!pT;X>2`*`@WpYACEZq< zH8o(WWPQf;&d8_+aa^a7m@9VgzFa<$-fr zCpiA!_g|&LrGpl7T5I_HCgbP5OYVI^)oyjG>7m|Ljt48!Nj{%E0b7``D6CnEF53xm z1}7%&X?vQQt(KlG9ARJ{%qr|c6ZxkDv0+}uX@D8t(~S$q@agSl4M6s@kv-3izBB2_ zS6qQTg!ong-f@(& z`!T+Vf%U>w4y;mGNkL`Jyp=M<>1MPA~ejH*reS*P)9tsuIwC? zjtjtNB%S5Wme|PT2FX)h^tBAkm3)ygDyCi9mijqYgwdTV_s$KqimLEKaJZAA z_o%_ADd+#df&NLjD9hJ#_x8VP=-`@2CwFa1PG zJvS7iKpr~&UHQDXA~tJym@gxAm33!5$RZEqvui+peshB~(+B>hDh2^*cb&Z?4Yms+ z&<9<@kt7j< z*A>zCwS?Kt{3JsmgzC^%4%6T$fdHq7F9$pZ!hDwgzq6-*#ePQ!;!1&k*7MU{_5ig3-frSVCpvft*ghn*kiaTJ{vtn zOS9jb1+#NTWm%*tDTJ!-6j@9M5r&n+y;s5@FvN>s9?-(Q`n+6!YXy7wcf7+ny=_2Fx%>Yo&5>p?jmrHjt&ED1NJ{eLzyC&UEa;Y} z%6pv-DUC&Q8rmf%xw6xN;887Oucw1rWynPRJTaqtAFrK~?8ud~T&3Arm+Lw|h2D?X znwlz^Jgm?beT3GA`U~5eghm~gHaTB4VER1=tq!1|>=vp#flG1hoeos0@MK0<5&!_ZlO)7vLe^rZu*CeU?2cy3aI_U5qqRG98EC%50DIHhu*lU#vZ#%8J-^jYh-_G^=S+lTtQL3qV zb_Z3TE-zU*cybNrR!{vD&+{7Xh#Zr*v3|UcIF<-1Q{HivcXm*%$gPBMH_3lz0+g&* zxIe_vO^BvOYaUZ5g@c$3p{)xah1}Q|pN**|wMM^C4RHwZe~MSdl99Fv!&Qfu8*9&% zkno0vuef<>IVJzlyN@9!>ipg$Zj-~2kY~p;-+rbIafE@6HA}QZ^ zl@ViW{&xM(|8nGcWJ2DjB3{IN$Z&ab(`T*OM_aObOonH8c_!`fS_Wc1jYtvw2fMw3 z%IC$o<`hb0M5U`#Z9`tKjb&+W;mTt?gq;y=5snp>**apnH!nF>6j{@~*QM`7NC&f9 zj83;WNQ(?r^m27rfiiuUP6up4fjjY!E$L^N^<%73`C)pL8(%Z*2|Jsz&Bw=8hfbkt z7ZGdROSvX-Db=8(&h!rtHjl)<9(6Q7Vfc5GgPQ<0Ka+cQNc{y_s@LTo#AySIw;4@$ zTy8-Td>g4_sXNA9>G2M#I~lJqHH)Hr0A(j%leQdTsL^|Tzo14!(CSf5>et`2uj(}* zyhl>f5~6T8q>8H}<4(c65~K>M&l7_g?NZ=Z7Any@2VJZILKgh|=IwZoWQ{rwH+Fu% zKtCU90#JERXyPNppa+z8iE;}YKnl^z>YMrFb*d(tSLGmdlsln}Z>Zq7aid2wiz;kl zk$H2@+2AoTvf9E8enTe5@r;?xR0)oP3}*6-vNe_ba78MMp;P7dH$+-O&}X&grDBpX z7gR=cz8q$~EJvD@b`$-;a;wfi?ESmaUl6M5r0l3QYM$ZkteV3l|0u$iP5Gf{n4q$Q zrKgsv`*n@W?xA1*Eg42q`XKWFj&Qd%c8(G_T4MC3bycOn%=nyq^4~u7G?C0ye$huMHJ(#pR@VSau*dqhE zV_VrUybja~3maVi^-NLr%0Vlzl7dzPIA-0bL<%E5S`&Uh>`(43Dj0Z8^q1pG>E_n0 z_|A0HDIz%d9|RAJUEHiw_1?*jU%>-ZV@HNfx@uii&g$^kyPk{m4Y1wI!L{p_5!OQd zyK`ZEO)cG;X0LR;TzDxt=t@mZ9Et3uXg(&T!g8KQN;>`@PwyVc)c?niccIKByJ6i(lv7De+msnjLaDxtwz(X81T|P=&1e zW4w&+G8W0wfR8)dHH=caU8bf?4$eZBtP0aSG2W#wTLQHEI7c~;nckd;qWRE#0wJ`V z5&ip#vz*Vcc@aUi*L>YvDa5y_d!eC+8>nG;J$5cB`|3Vm4@#nKg`gkMl$h~sha?qz z;>vBWVyT(U*MfhrJVP6M`-}C@7p%};a^WF~R)vx3>>aD8iLuHki2uFkIkw~zv9mV) z7RNvBJXo?T0WZYL!SrAMs4{i6)b$t7+v}$C^mv53ftib%g51LogQu5d*Xz}#uUVrD z8umX?nx(9(4t+L(M098jk%M5;Z1kLV)71X6*yO(cgM^*CC!`N zI`_7;=DKs<1Y%7uGJoyi)Qiz|s!rV0N9=9G0w4tnT@tm-Ha~5AA-vi!X{gktMEN?5 zP>2tvnAf0Pp%8_m-JzN2yawmZ_oU7BNE2l~n3gq1`ihYXuzT z8%E3zHYmCZT_de zpjbSst5mFco*b*H9NsEOYl+J9)ob(077#+LEJZ z&E5^{(|6AH2KBNeS(Q;)_53UpL+r_+lOp+dMr~f{7&3Fka0je6y610x?ZTyMTy;LJ zx&iRsY2a?IzAt{5C#`ZVv&N(KX7QuXf{L1u1n|?hhS!~IYa-OW3lGvzj6h^wxvu-$ zbMA&jNl=c0;kNIeU0>PJkr!l8djAOh#!1^k;;N2vHuab0-+8fWbIjL+2PRt|cA3vk zthzW^jjBW#o(Pi6LAE&@XWg7)-Mo?U{GYQ2S0cB9zQYzBW3-HsF)?SQLN5r$3{KsL zaF?`!oaXPYvj|J*jhZ9AWy7YBtb*RFH-DjZ;7LyYDmtjbBM`$W!NwHzi0#}FU}Nj* z!|aTg={L>}S0+Avqb6tjjP2b*^$DF79Es_MvTL}oxJl-eg0QO{O_iUg@)Tmt&3MacEYt@!(IXXk7B(iFoNT5#7;^&!`qZ^nN@e|7rE z;Ed2WEiy}FdSJzjN~a=r^!XO*{XzG43R)*rrkZc|=W@-|zB8H>^;KRL7QTJso8i9I zzm;kAK`-X%+4G61En}5@#}eBHi`?(qhbk7Hk&2D|KG^H%Y7eM7&g8LI&#J<$RnA$U z+M)=Y#M?q=t=+Eh_|onnH8z!r9TsqgJGNQKJD0o0Z_NwevM;PWI`!yd*#m3c!uZJ8 zn$BB2L+=s_dkbfv+ekJJ_uy*VIlsCO(fN0SRR$#QDfEfFF4TXLH0oqu_mhFv5WP~f zR2FaVFd%I^8)v@k^ooKz&Vq`K^x9dGA@Qn&#bw8PcXE^0%`Ik|k2^c7ss!5d5Kxb?mX#VidvWN*ob5JC+@9>XtqnvT@5xfF2|?Z0#V;iqzI`Xs9)@nbCG*=L*VNAD0Ik#sa3lTR?nXA zT?wUTAwI|zW`8~jWY;)OH1KvHr>{R823?o;-Eb`^q$F9tXT4AC5qpZ5B215uv$MSy zC|u2&5Ucz1cGtWfocaC1x=~m2eNtSOir|&OrFpJHhQi=NviiQa>hFW9Z*!6;a>ZGN zW^asw`rh(SH|xE7nY#T?srKOwnU>W-4JCp%P^nnjyYZ^LvE^j^x@ypd_4h3OO-K4# zUuVb$w9$O2->T@XO}z89@*oArxvMO(7atGVDm2w!WBY|t7fRr_eJdroQcJIj4I7E; zLARwM>k0G8Pm~;+dat#}%N2S|yr1$n{ghramh;iVi(J?tKjC?ay}XF0}rX6)YY6+OMW1l1lOdWPO>ry+0$b$)%d^PESBJh|Q-5`+Dc+<^*J4D&3sr7yQ~E8Ou7v zf?9mtOuG5wK_Nc=>|JN#;~Zy4wD|*QaA@nyYm(bX^hQBX;A80;!|N_IV)!Pk_1MH` zZ)+ag=JR<}uz7nQt!G~kQk%B=5m6z7U>J|SJ2WIieS+T}*ZlOb*DfkglM?I_nn|FX zR69z3jM6~gfBC)Ud%Q}Lj$ZUUCp{xme?aM`9)!9 z&Wzdi!8>7V(SqsGulpeE<8$ zBdU7eFUl2ZvLob-KL3iHctLoBz|JIrlUt80?%>#Hh=LW9L3d(~V#whH2nHWC9faUN zp25M}lwlEsJat1=o9c7NqhA{`Ed#k^`+T4Apade^xrSa~MRl79>b3SEX;i)mLj2j~ z;#x6i=diC|XTfT6ys@EYMKkLQ@m-f}oo0+XJ>%7qwPXYKEpg5D%EK9xvU4{%%p6Q` zb_C(oli&VK+gIyK5LFJd2K95a?u||DKS54gxw_|oSNy>%{Q9ozGR`0$kz7A$$tvNS zich_qe>I<+hdc3OU)DT5*edw+C>ND6B&23v+d1F#uDn2Z1R{H9l zxB7-hBB~z*KkP_7T{@t5;X}N+V&yID_{tN<^qc0$(1L05c#cw6Q>jxS=5=$uj%4kl zJk}Y97jV~(`~0?6cWl^rVyUw1B+b@<+!1{3L~`N8Qy1;`AM%SOK4pe-3s%o%Xke>p zRNJo1p%-GC`@aWJ=~e3ux*7?B24vLr>>9)TdZPXg z&+7GvtuUVc4iU(HI;wvXxqk?>$@Yt)TtZW5OE<}bO3GPdq) zBCaM>-cYsB`aE|IhqLhhIHYKdcI-So1nc6*Ry~1YiGY1b-MnV0>5kg44>Kx!wF6oY zV|2krYA}Bt$ijr@xST4>H!%hUI{`WCY9?NC5C>{;ne17;{>8D0l%uQgP07fE7=5Xv zZV!@ca&|@8d1daTjxO)_&S7ks;|-Qf?k9VB<8AxIS}*Zn-k7taS4l?JkdHUpt^}r( zUdpuh&x|j&A7NVuk_W?r@ZPsI-Us!N8-0MSsINV~PEM753E1Jy*qnm74p5Jj&nBY* z*cHq@q~EM7DD)na_NmuI6{xPhGKi_;pB%cUeI(}HSdr_AsRQdWH&Q@r%58CSw zb*-$i*Kg8)t-}pZ+PaoGm-hF~N@nq@LIqW&E6U3stXFZOT|=QD5D4z|#QJnc((mjJ z$w&RnLPsB+@ysgSh3uhjMSpVTjl*788=7-z(DRQWIXb7KDk&mKYCp`^UXZw6Clqs$ zPb{)!Z!}g8IZc!*l;7eg>BI>l-lQ{Dm3?A_U-B2vRlDD{*Npt*hIC^+;y-+YwbBUY6G*mcD>^lgEJM!HZ%a-;(L=(Q)?gi{#o2Jl-~(exo=g?cn3| z9JwQVHd!L{<`-Ungc+0%)4b@(QxJqubLCbu@0TqQG zaUe!fi1pj+HXRy*nF9k{`zpsQm1FO{XKJm;znM{Ab*y2^Z@Ud_G{Qn-*sw8ZjYmts zfxe@MW-u>TIhBwn)^L3lw}+~;KP$z$ylpC-!af;QXG*IKS(oU9az&Eus@WtZAH2rE z43&y|o$PvVTjH}?;~^cSU1Iq7wD()WO&#^~bC1to&ZOMXG)*e<#&f8edM7sDK3Es- z_2n`nfi#!5lh-CWKwf;*mvf%j^TSr&cV6Bn>2HQ))vX%7hNz~G7vLELZ-1_!s;~1B zQxg{`67UeHP)j~Qv3(%)L&j#-Q=7P$lfPs-bT`6ZZzbm_tqGD}nN0=6M4gWKmR!91 z;?;}VvmdKv_C!>Y*%neX`;vfku1L|53+C;t_fh{2#A{2o4S+sxnRE}9U=w^gM3quQ zuTycV+k3rtG=BNEVeg(%RXl`=$>=*b%g@BTMLJbXK1-c3v3Wnb)sV4=IPXAr0V)c% zuHt1eG?nJBBG+Z5oNe(*eRTaF>j(FaRyDTTP=3}ys`m{3^wG2z!-g>a zQS{p&I{Yk9N-Y+!1wOh8(%$@aMGz#WRVS;XV;{QhwPwQkPM>7SE~}KLl*c`D0%q{A z9EP7^1k{>HXzDtG4k%|F4#q&u#ik0-nHGqNAQhUfNOcB;^mTqV=I6H7(Lqj|_k?7l z_MP8Xg$HF(61sO!FL%H-&1Z)L(o2_3o0mQ<1>^|quU}~kdw&9xX~-AU54lbtGF5|y z5a|pn3MjkzVh-F>m0pO?VMZI!@|y3Xc;ClVBTWs4rB&x1nX?sZA9aJ-DEZRT^btPX zVZXOEl%X_|JhQXZJJgehj9qOP{t!gVY?gab;)7o3kXmjtDAC`HEidHetno#W&q(O!=^EekBCx`0j;4qvv6$Gq#BH+4FE8 zaiK$f)eD_ACE8`H75F@?avC!T1wTH^i9qgazICKGHcwURiL|c%;%F*W|IAm9G)Puw zxM5T*O(YCa1-3RBT^GKB(aL>)$i(F26&=KNh_~?*b9(t_Wm>tWN!4lb1Cj=WTXDKZ z;=7*_6bqc^KOQi3QOCAkG%4>q)-9x;^6iia`dO!RKms;dPhV}uX&-1XTUNd&@4Asu zRX-9!iCT7j45p+zK)kRSQCbWdWPJj6T*Yx`@%B_cBUiaR6 zPhH$W>@eYQV6M1JYP2VIn)eT94x{dIvu+&xvT?%H_unmia`-9Txam4Z>XX^bS}eU) zBcV+0u78-O{HztXw>Xw9o*-((@=v5?L{HBq#DK>}`-r)c#}*SrlChKD-s^|S)71Zg z!ya=dGSTA*tQGiGk2_0R+a%5;&+mB@c((6hoT;?7B;8r$i(;Mj_iys>{RgINE-><2#(GRm#f=5O9LJq3X{cV5mc&-|Th0-nL(?8J-_F|+@E z-=+5MUpyS{1O{G9`3$~Da{IIE4qd{;V&C4&_oUJ4%DYdBtSlt7iSyaw`iJ$uD1P~{ z?R{6Ce8d5Kli=UctHjTw9 zFstc^k?y;WU|jaR>w%1FwzoRsCVRG^d;8*JL3+c!{2HMcf<%&KRQwmYpAXlr z?Nts@pLJlmF*q*AP3rDe`XpJJ2Hg!feqkRHAqv+o@1ot6`sXAuH8wZH?FvR-3S$~{ zyxy{MTw!{lE9Q6Afj#5k&(+UgaY_8d%&{eCcz9cHeBKQ3QC+IdR9P8tW1 zO!+tNGJL+W#EftT90=YkQK0Zp4{}O*9JRjxmXKQ>{myI;-aHWASdPx3Qmn->zIC?Y z8RVayr>4@BPxm0<7jGHIrrBjg|MawZA3e<-9myMkx0q0k@;YU2+U$>bM%agze}9yz zn8`V7lCxK&=8Vty{uYDXEbC>XXf(&TTqE#RT;9u=ZU@n$Rwn5paUyYf&k>LJkD5>q zM}T*#%WbdMwG!_5^%FL2G$6#+ts+Ug=@~yr=|!(EnE$)YzMAI!ta~5-z)Jw*)c+sG z0q5`nR15z<*8&Qvv)A(AVK*WSt$XZLAU@{*0^Od!K(`s^wPEvT*Qm~4UIb%XrN_AY zZ$5Z!s{h$#)v+y=Qr+B~GJCT+7XxJnknWN@?gR+raLdv@GHc5n>80D3fO6`o(9-lw zjlX5aB`8o?*6$bF2G=)#0)?cjK69~he|8C#zG)c({!S6YeP9{wQ zqOtR$bX_wlK)q+C=hq;%dD*SxsK$}dZ0i}$&YxXCNx7Kjr(r(aQ>jzzdwjrXNaBW1 zsBWfUWF&u-L)4I*W&@YJ11fr$UX!Y$`>TfxJ&cOiwJiSQ(Qx01)+vd-!?x(5khMHy ztJhe|u#>xXZb;1&#*4E0sm)P*VenAbi-MFlEqrTA<6Nw<48LWkxbzw}#rUbBc9v$8 zyJklYoJekY863&5&98zVDhSP*=J2i#83w%SV1<_Q&tAtiH-stY&mHm!Lk}Iv)R@)l z9`#-|vCRUWdef7N3I3Q_%~_tywPxg6g@!T=J-V*q)Lyu4F(5#t;X1lOIz#`0v78#y z>%|POH||bJ_`;kjuW>_C#(MU}=yam7G|8h|;QV-0q*2wo1idY)Z$M=fVDr3d%?@07 zVl+A511X*v?VpR4r<=)VX|nqPd81mU08M+x!dnAg07fOq*&ed4y|3xmT!q0GXWbnb zo%wElq01EA%Ne%*h%}m^Y1-8$j=G~{mh)+iP22-fR%6R)o(XEYx)ude)?3)?Yc|KJ z-$e?nu3S}fyKk&=vO#vpJ3Dtst6V;7vb_kKBvx$?xn){Q8K-YFEi;P<*NANW3C4|` z0}&EaLkyYUj5YFa`T8-_bEEU77D8j)W7tMh6%SdfU{oF6ak56yFx_l)*m-$9q2s;2 z_v@@Pgm~?jxH(%s&MG)~s2m#q(z=Xl+#K?_rLU>ly+yhmV&4+^Skpa3`I6ksp{d~v zfHC1ZG+wVnT24AlGW@ak!V`Hsqk)pFpLqlVtKjzJ75M@j8%v4RELLlkCcY2QqGu`Y{HTxh;K2i1iL8vf$;Y}M}t)F6W9ZaK2>%xPZ>L7MQgVC zLmHBV+6acWioI#8T5G)SLaSZ4L;lqT7lt|B8vRzjGHg{USEW3hhkKu3Q6SA&R5be5 zYc!==E&2rQ5w^Dq@*UbO`_Th_^YamAya>tD%cUVEDtzmxg{;PS%~+gSuEEFz`i&fF(CJn;o&(HJ z88_^Ut-nJE{3#cVruI??2vwBg!ri`EXZ*=f1==4w@R2NdbcjczsW&}QmmY*{^Ma!@_b>Jsv& z_HchA_PzuB&b;+hk8Yv#pfbZm^CNl6Ck0Uwk513HW>n^RR0C$}I5pDzQ9G+;u)5MJ zB@))6^5HS!G2BlktR+ceA+tAKBZT!Vd;F??08}ep_sYx>+wJF0c=??kP(VstTe(ITbG`p5AM=!3=`YmI|tv*QOG$ zYo#DbZW|pMnH8v2tFxtk=V7cosSE7E`xow6o&TtqBjJIG4GFdx_#ok-T&;{HZb2^o zCP9=oeNqa#aMi?W>SCd1qc3!n!v~7H91Kq=K#L!n6i7UP`JD`3;yH6d)7K5m~3|m}ok~o*% zNW^fS_$to=CC+=Ive+xkIQ!C?Lc(|G!SxoCkcsM_8KXVTGqyuZR#h@B{z(UrcavW# z&Uz)cNyAYj>x}qIoa>1&d!_B6(858V>K0C{EM8U)iw`NG(r!MO0`>zJD{nIF zr)2HUA1CM?e8A8ep*3c*=-l9%;@sm}?@Z8U2Mqh07AC8sYpU1q4z}#3D0laT@RLkm ztX;@jylsv9GSg^1W6SYi->7yG?)Z@D`KX%Q0juy_zUE7OadiRt3>57Xq|}=!(2=6X zazyqL$dOqhRI@@FGg6Va4YRN5dyV8=$(RYWXGUE)CKFV=!D%I})=}_HY zVxhcd{ZUzF**TIt?SVDSZ@ZsHSx#10r=0L7 z(nkX{WClVdvYT>5LN3XwEw>D*ybOug#E{uPV|$81^z)Qw=tthECih>$g%ovURaNxK z8NEWjMonR&@~j>~&YG1MKUQ5VteoDqoY8dXQ+n@My*F-w#)yy$o@AiWhZ4=`*M6d^ ztV-yO;jY}E!ER$2UQ_6LMg^@e3-*$Fy;fy@N&yPPg|&EW*JXtsr<+wc_s?4WvXbr* z#d?P`1q<6=%b!`V(Jr=V$M_R)jCFLi^p_;I9XynU=@xtdmGsPop z`nA!S?I)@&d;N~8+`rSqE7pxx{s>d~sgiT457HzL6l{m>G#1L!$?qBDjy;}6^^j5N z1QVH1>40xgCmL|VgwZYRcgZT~4O?6GfP7Bzp=cv1zV)^o4m$FwCPfytE$Q>`OZ;|! zZgHR_^b#;jfNHiGtSH^M1lYe=Vl|(3r`ByqdTK5;n{IDlS9tb})N&yTM@U`Xk}!e$ z9zw<2P<0tWS86g~nOL8eJ1se<+mjfhQylV2F+*~(4~lBeQdudrb01an35rh{8<;y` zmtDvJCCW!kIVFLXGjAwY^eVTlC1|gd`YG$W->@OEkx%++<9ajh$5Asm1z~c_t&io- z7HpkX@2ipsy~wv~)SR483a)9ZDhvx!R2rvO_OS03grRjuDlE8jS$+hIRdOafc^?Uf z$4#zOpz}g16$dtqAtt8fQ-~Zfyo}Xry2I#l8@ok_wcy>TVnxPJaRQ{SbB5MTz0+Tx z<~-6_@FE8zb~0rKZP7mRa2x16&4RR6NCVt=2cp1!q$(#-;pKPG~2wd^sSSyc2%4;U9-TS@zKaNqt|8%G6`ft zDBC`(DlR-~F4p_8K*c_A`SRxl{>(5zO}d4Ks|i*FukI8M?xcD<42G%1Yl*b~KpE(g zOnRi%fZU(u3P_@it-R5ccL>osklvJKn@^K>!88)R1H=THp8x_n%cMlPz8nBI8kCWQ znkygZQLQg$hVErt0g5bjTKSNtGQ0+CxTATy$ZEl+I6-E3XoGY{Qs3)EisdcvlRi5V z-eWNTr-zfDNw+{pM<=x8&>>VFnV>PlC>T_f1NTtdYc@KTIUyxpA^C55Rl^xNl5^=J zkIf`zEJW6+rfsNr*DA$!$+^ltU^S@&-UaaX?cED-_W=va|LvIV0z*&-59=J;V;Kl_ zBgUXlMPDw^)eGu$|2MyCa@RoILzoY!jqJf#P{Nd#Al6K{R$H|PkbQY)h|^a#eP$?^m?4;0M31jS!5iC$A`bhIOyIZecF(| zvG;AfCr7&y(N(?+c~8qGS-zPV+p~+2J4kqyKBqQ_EKTsBSLpwKK}-9PMj8aW{|;Pj zNJGM?Pv?=)I^<|MjwK35H_Zx$o?|`6*u%vSYU$)Ner;!7K6v-GY^6;<#c}b=!&A@7 zG~{OG@#X`FF4;Hnta(ez+CVeMi%AaGiu2|@d~dAl*FWD$lMt>GVDBw^Q61JVs-@pe zwoVFHJoZJpEKJG0ZfVIa;HySg@h#C!&%w;MCsJ=^Z9evUMKUISi;gEQdH%axGu^zc zPcel_hn#UY>>Z@>@;Z~QIer^&)_7KoL-{r*t(8cUx<&46 z&ThC}4E<&4qF2hQk#r4pkOJAZygxGE!V>-utDetmKp>^cqQ7ML?`gx5-H`awf1lc> zpB1)&u!L>*pB2%2s&?>5jc+iwQ*PLN0jdoG?~X zm21;E-vE2H*5ov+!4OSZ}9 zjM<8)d-kNJ%i1CO1B7Qm*7Ao8C-UNpe3-s#n9F2e7FoQ?CA+m=P7%)gZ|#=)FRy~p zvOyF<`ttL}^OIrqusVyi_9c`}X?n}$XW6X#H)P!fnu)rFbhlBCnbowzy_SmNB|$)@ ze1wNq(z}1kjeaT5H5Yd4<;}3_9+xZg>g`8&``PSwn_rb_sN0Mg=K(&V<&X62sVD7q zSx?T->B_e8SRQ+}NEQT?)HT#?IsR*S@|+8CBJo09f=zaQquQeN7p!Goo%aGM1*uqY zcgNC`SiP_8pl%cL=fSEJV`j`+d1mgQ*hPcbQ-LUloJ3DWxO}=g@xDQs>77gDX}96j zsph>ytWtN4W-@t}w2T&MI6R<>aVywCl9gm-QF_eXyL7?jX%ey*<rPobIl{B)*y35%S<%+>ZtPd@pavq=eTBKo4r1?$w_0_kC$Q=j(nE{MLB)vU zsrPoh>)R%fiRY89 zProBQU!TBLn9lpQ#26(Q`92O{FbVSgp1$*dws=t!Sx}oCeNUlSU;Dq~ z^GGVLc>KRdT8nZxyEASk%=w2CA4uiFkC%761fUb6i=N0p`|)y|=sxP=v3F?-crWg@ z_J0>-Da~49i(lM7x;QxR3OfJ+d zE=`f2H{S=aZ9Pz2vin%~SwcBi3oE>5u;l?U!*$H%=|QngmlZ#*syEB`aHkD~8H{td zcEHctrOH36|PxJQMZ;^ar*AZ?W<+NA@&5>AY|)Jt&+*4 z;JE(+$;d`*gXSJ=wWJWv&Qtok@)O5>Q|)kxowT$)h$YLhN7J6^zNv9F z10rdQ9r1Ft<-S63+m@rS;CHQZ%8J+YZ&$fw&8}`cZM_r#;vvjBmI&f zE89k;Wo7|m(5KdWGYazFX505Ke1uBf>ROc)JoUqMDB_^V`Ef7_R4+fjG*lQ zkW84YaVw#TUQkfKcFl3HSg(E~qB1+s6E?=uLJSETxxXWvmBb~wuf_;W?l)vC9WBGX zjUT5y6^rzu(8uzBFmr_>DbXtR#^iv^oRei=zki4RDmzm5M5)*m{if`TGBzBi4(UQ3 zZfrgtb7r#ng9iR+Tl$iG_?sq4uOXRY+!vA0!>rg~8?*1@$GHeE@iUg;Mg)SCsq<>P zsoBEER>`0bzvk@+bt|}gYA$O!lpQD=^4)#x8(ky3OH}!7!`kPeP>0S&)76NlxW}jj zk5?1zOnsV=np|;`gFHOU_;s%I3!z)0??NqZXh_QMq1BaxBEHva>TDjX>a5TzKD+B# z_%=>!_XD!mbL5e-K3Mp8uKAx`Hwfh>emEmr#G>W*XO~y*)YN+|8jvtv`|5T!WEBeg&H$RpS8$MV2_TRVrZNYW# zl-H%^AE#Y*tHI73dsVUY%dhIU@>y^CO6hC&W?E8V%Bd!$_Y1!OMrQwEot6Cm&UPx@ zS!r~mRxLr^+k%Y($j zfyZJl7gV{iJ4d;^Q~dvrecA#gbC`+}!GpugQ06iP`!>|}rD+;)wl?^;We%qb+^Bqt zPG09$V;M?vCTg-2-l5BjqUf|^%4cA_SJ-}Zj8OV4X!_xq8Jt)qF-IIv8CrewtlfTy zTP4uhKuh+L0~mKhK2zK(#0KsL!3L(=T)U~BiubxT4Etc=i#nNNQj4* zu?0F}1GtLlDGi5L5>Rg-ll*Z`Wr5Oxpo^N|I^f$x+k|HEb!kGJ{NAZNn!!bG6l&QGxB@ zR~@G_4;|#p3tn!>{&3%F3`PXzY_w1YE`S8Cbk{?J_+-bBS|}7OKy>H^N#qTX*?)F% zy1=!E=2HCVTt~U22RGM(}zW6id0Z#x|N+5zZ3=NNP z6MS4dwbdNl`PTEM5oALhw)Uy~0^`XvrNed=9$goP<>WT%sGotLq++`FUx6c6D-V3c zx|ZySuHwO|B&XyfX*_pwpe?87KvH9)!DU1dlu*URFWAJpA#|C3S8+Lyg!?+z_7M9T&3o8Uu@Ui)+644<)+O*~5 zaDWqtb@>BF!vxQWJwswZgCKYtqJ!r~MH%75qIfd{foW+$*thKF;gMclaM^9pz`lnS;XpBbc!B8%Ud@p!YAO@^Fq|UBW#MvgSqDdjbitKJ<>s7NYK|PRC7R4UpN0}~Ihdac4hKGzE^w+p zn+C*(B^+fclLIa=MTwYuakjX|M3OvpwG6e7%DBwzwtPIO^Y7F5n%%;O3xW&)f8VGl zvpxetTI|lId{Swm`F2N&lEx*5W~3sT zx}mF@3wq%e<%7_euEk47M@fgqTmA?R^2bO29f@FHQi`pHhPY@zB2zE1RBqlNtQR&- zh00_d9GRjBE1Car2)G8O^2Ewb)e@+4m3pt^42t$laPvd({?)q;EhYC>9UOM0ebrYF z;sJ=#mmKL{I>UkicmQ-T1Eb?X(f&FD6i$t237GpwOh!Lz3yX)Pf~jEY43ou66>&ud zm;mZQis*BA#A5#={z8O6u$!xBj`FdQ;C(XPtknwKbcZq!hFkh98L=L|h^r7aeMku; zHVEV51%C3ufYN{nOy`Tuf>r}|JGhsod%V;vr6LYt;co01-x!9kjH4vJ&w9jH#T+x_ zxEhdJ+L_0b(YO|nE>=3%fu#zraHa)R%n%3|Y++qnt?h9v1WSO#i?i@IKRaG`0oCSJ z;oZ3%55(1O_8gVjQoxA@#P#E$~{McxS&;VSw}9|u2NVI2Pm_iOghEd z&~Qu*fu-%2sI`#kigxcl=)*+nV+3xM>6G(*`*dU50zo{KSZ5w%MsyLbHN=?A!G^Y;{(MbG9?*@F5)QESqmBwu&DcLoz zB5h1Jplu!?M=H1sh&()Orb7s$2BI9M3cLq7oDH=ErS4l4ciuUiX1mvQV7ZEeiucE$ z@^dBd;MZCD%542R&>9~j)D|{pXn43^JE9l%gA2IKFraME3pqJ# zcPQYd%yx;(WeV3q0fD=qP z@PND^ChM;Pfu7UV3PKKrJvw+Z)g7j?zbJUG$XeV*5u?L;X;M@V=iF=uCYL3&`sT7zt1p=yq!LJm`OFT4ys+{eb zoY1)mP;M9dCTenM>YHE>i-=DEA$46lfmAf5rU2J*YYU_^XeS zo=#?9+C#6&Vvv$pY69YHw2$K54>>CN!$8_8Y_)k9++hyPrrHDlKFCbA`_>2mSi|57 z5AOe(>5y6ltU9+35!pwh4GUdeM%dbD+YM(77!6#PkU&{pw(;G9vo;oOHdr&jRE~6H zaMgWBPEKwHT!u0N(0;?^Z^M-;|I-toH^=#8v3U_!23N%Jko_3M@|CQo@qXIz-X?xN zyVG2|rwT1>FM6=vGFjby>mT01_S3{zaEF{)LI@9*)mhq;0AR}B27w@Zfd;Ij=GgN; zb>hk}>ijvt{cs{a`@C=1X!s%qRi6!jte4TSOhhgz8 z94t;cc*UQNhwW5ny6d?);Y0}0a1K?Fi z)P+;@XOEzZB#`;IRh~h;s@>gnrAi`)0X0G-TshFkznutrzyJ7WFWKU+>_) zp;Hqm%DQ*iS-9!0 z7$Tae*z>IF{wG<~@(n9Qze=<{*3BdHzt!Guj6A|eKA5W=Xbi-(>*c$FZRc|UffKr5 zvo2vnHog6p(fTxZ>O&w(05uik($yUQssxbN7)aUcF=lZc+(U2W{{;jJEHjgq=5fai zd)}~nQ`=YsjZ{WOQFINZz^AjzM6EfgD5KN!qgED!_yo(E7~xej`1yi%V2CLyBpa}! zReNwfj-915UOmZJeC&UzGZpZ5a9NhTQ*xy4$nw6dtZPaoff8BDgysS`*hxY_K+>y( z5Kj5aP77D1sRlh*)t~CT3Ypp9m{=CJvZ4&7y9GbbuhXZTosyF=xljm7aOVY<0H(#2 z383@98VZ;-$eXLGQNHg(K7lTunRfhVmQ3>Ykv(LPhR&7VH(6k1LmOpWt-FjmRSkB? zPc3I0IEVfLL&V#NW9l33d^8%GH<_xo4CQVbvfrLR@@he>M7aV}O z#xwWQ%HPiBN7A&sf<9C*_3d`>Ikdw#uUZBKT4e!7 z;|-4$M4*+#pVWx)z3bB)uTQHHLEE+76B-2G{ zt(jKOc($5N>M<)njX9fxluOi4$Fm!?{Wu{Qka3`p;IxAp;~_Cw)X03F$c=}7IYlz> zm2JSG5C)@}t(S}bQm<4sjuNpu)9EgNB3OOmlTl<#T^tpR7coumQA_Z@LA(Hy1XeX72LJbbTu1fUSTOML8wbjhziRZpwv4)$H;WvnTWTD`6c4#LLH47eEh z|6%CNlZr3>{Qvp$^LTvTpZELue!kADqkhj<-ye~yI()MHwS^#2khDhLnw6WX z$di?YyRiRf3W=f{s|)!6H!3rpYpPj4)SCTI{Lc;1d5}%5*s7xv8e}Q(pXo@tFik$( zvU>WlY0OhqIAvyp!N{vGXh=5$I|HVC(8zqhP;;MpII`C&jAc*a&!hxuPod)I( zKB)3V%zJFbp-JWjLs^gFn_mI=1bfeJw=hK~j3>h{i>S*r{L?E^C|BI7rK3j`xiMC` zTTDzxDZmAgq$~}yS&AP$*enKrC|Rx;KxqRv<0@|Kqf8^+-_a_bqq38g;%AV+b|qs_ z6U0QRP(Pi_FA1Bk#`oH5sf!oMC-sHL`{OT=&3 zR5KWE8_*t&YKWuCSe3vTC zcV#`=zpXC-F^=PPYg2M6PF#keLa%0kR^t728vNfK)9s6D+CHe>vw;lP2wu>+OOMd! z{vKG6Pi7Wms&{z>MRBj(9&R~KPlSAR#{R%7l^~mTP9s))8;sTJ*~tS_AMkO_zk!@W zo&v3CqR^`sSHZjqii~A5e)z`gTr4)08qgyTggLsYOHNc3w)-uk)Nv?ZkKJNg6!8=> zyhxJ>Mn-3N{4g6Co9-?e;pTNaFp8zAS}2y0D*TO2pMijlj+{>kW?RW3GsQecX;bf& z4(Xk>7h8hV$dC1@akSqlnl+2gVBb<2qzkE~z3avzy~0L|pXG(^`ZYOBRgKB>q=plg zdZTByltI)dli3v%^JT*dQo7nE=GMT?RE9J4@E)}w1+mvRg@F}XLS*{ zHnVb%#r*Jz0(i1+Gr-DJCPp1mV$>)pcU=&R6FLv)AfvkSD^mYAcGy`jrKN`|bG1uQ zK~Vw8&@wkHdxtK#QLiePA6W4{wmjG3k%#VEvbXem z8RAyL&#o#ykhL3>J$kGA)+?gQ^w#c=Fv$SrcnO^V1!c;XZQt}`xIU|8pyTN4hrdxP zgN@19kFd@Mq^tJ=fh!lP!_4xpBFRcJEzYmD8r6P}mcZW2DL06W>*gH#!D~W8!^C7t z$Z;zpoS*pBDHP_OH##|38AwUhwK`ltabc>oia=?9)P#UF8{WT-xz8ZvEP_VD!B8y& zr-Mew1XnUeF<4)mS*fY=1qtWq+1q>5naGAi5V<`poO4R!l>tnuOCQG%j>M06_6- zv+~x5m85-I1GB-->bwNRKn%4}{Gx0+q<*Flnyx65UcY#y<+g$_97&KJ$5)CaCs6b(_RV`^9{iCG z_}YCfxt0K@Bg?4_A12t(3*w%kezOGC^Kv*jq`pLNSN(jwPgd1dK=|o() z_29~8h^K<8de7%iyXE#F+lJN_R?fxopkWh%)me@hKpWA2g7tnt#D|$;y1<7$l z8D@UN6g^SKRz?{gC=sO$&K8H!-yE#GXIK&@INFEn%kMoskGvrYP=+gMqt)A0U!tS> zin@l|n98&(ZaP(+G(9<-aShK1QCYdbT}=J$;g9wE3?4^wd8@(VSC8-rdCg;T;yt%n zbZd0ZY|g~X-t;%?<%d>~9o*ONLN%zMf$Sm#TF6f*sIB5ptBr_-y#*5*6b0-f1V%Fb z4&}d>cy#mNbp|p3#=34W5h_=hi66Qm$&l;-0U}(iE`OtiJQvG-CkH@WY6Y&*>qrR* zQSvJiKft!O;;oBTL$#N7EObmTu{>Q(6bT1}2I~c*rt;b0W7qSSHvwW|vfuyL=Xc|h zrtZNG2ZZk&P=;`Az20jgyUannVp`}l72zrpqZ8oR1XH9REP$sM9>D|QAEAb&Xi0aN zxU+{j;IXn<>4EYzi@ZRqP3xmAYLBJ&%rx(COs0OPqoA8ZyRV|}sSk*Wc3=Ep*jUG6 zb+5#p&0|E*JEwTGJd-W4f_km*NAXf_z}%GYY?{U2eDcBWKa{y8pKL4psXBJ|@<0LF z*^1m|rslg1LK}&vsRy6eJhkeBD~hy0*QCTaZ!)#!?ew_guJJaw7FGcaWkKXF!2abcQmn(-hwK@vbzK6w( zwsu%W=S$dnlycMX;WnRTKWz$~^|zW;MV;c;oowh|Jn}hTHTv38OlBk%Xyy+qFGk-i zZ)-*Oeio17D3xH!zMDxD&i8}6=F5R)yH(XwfcPVW=X$%eDnS0LB?_#7a0R|pCdxaa;6imr!#)d1<>PNCxGKM948EJg@GARpX0 z39tL)Gk4rFWM|`;C7@VIKPV$0{GymfbO==QeMx`NgnXS@{l~TQbd*bQD6}7Mt{7&; zjuUGZ${M?@?)OZGNE@14ZZj{L8io!iA6={m6z4g`0HZnBeb-ks#E;Pf5&vSDcaP0& z1g56~E>iN3^^J|AZ~cZAyu_tH*fKClm!ulLlFfB#Kx2|wj!@%0YR+8&JTbkSDKKvj>`ZQ&fK6A3}!s{57 z&8Qv4#dqsyK+26;UZrIZKY`#cHVc#aotgUcMHs@RFR6M9>)x327RL(Fv2~CNQxYyR zf(La-fATwMN_yIZOv!0euz4wBF@N~-CO8T-O=?m)bw}dR6U+zl3;Z&1R5{9xk3&wF zW=bD1yvF*U_^Y0)CG=`kjHCJ&X*a4z5E#;9!tN*qJdof&$Cj1>3C$k~eiYTN%b12jMm`U91NcZkde`w}VT}dk=XouB7h4HXs`k{q)ReLqub=FP zia$2=xS?sk5{MQT1u;v?d7%yM<4uyK|K`&!^JKs9SJA|}LqZ6<0wL+L`P}D2v-`10mJ6Mzz#G7MmCw* z`wk@1OC+V&WjdwT)zdW=uua3;h-3diuDL9N!qb)`t*BSBt_C%tbX4ziK0XlvvXy`b zqv}d47u;M;e^XA=nWgx+OX(;q@~UwUQgE)Pc^ZjFl*`O!Ym@Ra8O|n$v|(Fg)8shw z`}NNYSjpLt8GN`<+vrO)(T-A;Do{U^+;LA?Q)p4rK-)FS0GkO>(FRdIz|?%}Wjd%W zyFR<($0Pn8KpPA~{*i$Meb0^75nW%P5Gy=K{x$Ba4s`ld<_((O&vNFq6vPO3>g6tL zrwiD1>p2tsBQmvXP3kOgCHMpGiSbFIiyJDv+mJIjb`SqWgY7`Cs4?xJO7~z z6HWL(7ZK3iQO^Y#mI>i(6SFTJPn_m|-v#_^GoIsU-G?lR`xc}|k1fJk%RXA6d1pOJ zIgF|+JZRX4iSLH@CANqp<&ADplj&rrg|RT0KNgOAIMOfVmAp<4UIe|niYT4u~qONJLR(!YFizrj>8`2 z115AIy)U_axhIn?Njw|bHr0gg&KSs5d0blvH+>pM&Rp9;o`R9*i%s16b$u7f_@TuW z7%_F?hJ`5LjT+P?)hkO8s%CRm%$YQdx{8rEIbCqZiz!NAv4VIc<_o=3%%C=+Ha)2C zsD1s2%G0PvQv-!~qXM@dKcewTpEH$weCmsrOXYQbPl&&}nXIJ5gX&UlgljD{p$VPwBi{) z`4reDcD6iqZlv}QhL(2>w&^#og;*UH%QJS*e?Jrp?s-C+aw$>1R)7zc$zNH@GFOi| z*r_fXFM&NRN1OJ*JW5eLWE=Q!7LB=a<-GP)muSwaueL;eDgJlLPub&88v#x)=kUU| z@^atoS8h?YmhsdI`P9s>yiddFL~TOAgq9#U=#4qhs?v<-dEVo+xS2<~0f82xEH0xf ze7D3Su^LrqtY$LOxcwXWZl6lqD10a+C;aE#x+B65a>;evf7NNz-6fFR$heA z?S?8jVB*SJQ%i03rRGb<=9P+5clNM}c{@j6_Z;ss_Ew<2jFAB-k38L;fids59`aoB zGkzB};^W+|_;jVf3?%!-!cL~gfYoEd838A2`YpAfzOGX-YQyQLkU3*rhIS7XwK-O^mgT>#JCKQ13+KNDzO%KQ8gcG& z^zIyruYWjQg$OdasqU`9SBKiVkQ0m9!XK6+6wixhWonUVp6$bEg`>{5i);E#YiIpM zNSpYFbRdl3@v^8 zEFPDgV|{QoT_eVe%ge>9)&C4CB(_`>OHo=IenNE)k*ln3*|l&q*}s`FOmVFvu=K5y zgA?-D>#GTa)K;I4$cR;x zu}W~q1_m=btWe&iGytsI%kgi_MtHZa#??4Pbj4 ztJ=!uL+U$Di9CQ}|AA=wfs{y*&JbqcT86Cn>?Qa?RcOm%@7i?AEHPy$L&r77;S%dM zqTJy76qX)O+seO!srV7Y7=HLw9YitTe*ed%FZ#Al&U$Z zMtQyC5CVfG#Cjf>&_L3Ud=%t**ygir-wA>Vq^w<9wiD63A~@NQ7~PjUD&#|2xI{~{ zl0=p)n}xtY^~EBF_PRUz7svPYr_uz4rUkiskvaLoARhQ%)+RD=`|!|(sICbDOUR{4 zM|jy08w|SMirqrc&t?-&I8EqSnY<`yR?w8H*ye)sQ5AWTER3n^f+{W_?SoXqK9vx@4G#E+DSs$T=9$+ zi~*bM)wol3-cF8oKCS`Cz_g0X+`SFC5$SkPx4ZQk`k3{@Ivj${5Zo@wnD zwu(zWCC`5$HkOdbrdqoVy*@Si(;7L%waB&C>H#a9HK?Cl8|ioPh(*B)$_e}muN}*DXy@jUY%gBm7HDB;_C@0 z<+A3p2}^6((57L-Y0S*(vD1hOfsc@%eu~Gj>83GLD|l#^0rzt&4|3}*W>SpOI@AP{ zCtK)Qyzk^JHYJ#PKEM%NJNBj=X@pHeT<>!^;pjry>Xu)gtV%=rpBoA%?4dK!Gp&KA z;K*rrG~t}HR-0gdX}hrNso944NswE9xGphe<)4bLC}Oslu_i#`X^Od`Y5bQaTrXk0 zgz!4=&@V}}YF)}D&Io+m?7BPY@%yv(CE^>aU2~9khw!st=WcBUt9Psr@-OVAdod%u z;!%QVAvM0v!-h&@JFvlq3%Cl0%4_ThAZ;NP%krAZ5ru_4b`kj9`+C^{^qSV~;m|e+x%T%!I!?TF=!z%DkD=(a6>UV*2dpJ=-orxzXNtrz zcA2Ui!MP4{SB@xQ#hz0vk7s=YVmQMs_kjgKKS@ZBWx8^?&~ipuE#L`eHM6)Pru9xe z$-Zfe;8?<)Y=6pvBW-WB5`(aqCHyP1q4Q?9wo-M5o?Ev5Yx}@FO0^urSp8xAj#KYGtH^@tJpfhqTrKYJZtr=eY2>F_DmFg6TMYMb?73^8 zGtp;Z^x;B+Ci*c;UrpQs9_Ub-AcPZTjqB)5qkOt!%0&Mjpr?J^vVFEI{A?^W#ap_^ zPmh*NdTws@kSX$+i75gJ+>G;mv+~7kslx?M$;vXng~zL@^Wsw-5~DXU329Od2(qyHS*M+lS|}8y;<&?JB_d&WN|71MyCL zRT1`0F&4))6j%09hW0hPq%+vGV0n#juGrl)L+YgBNW5mfits}Fc%!r}fhT+zC0T?_ zD|N;Q!7r{^f10CsQPf18cC$?e%%>&bfJ32fll8Nz=)h7!{*U zN^K+<^FkNpz^;PW1l-X10@EW=0@4robu+hVi8%TL2#q`!*r2%-n?o+-+~XIe7si{t zY_xkn;=}z|i*7DFDO;d;OZ4a7{!pjti*{?f*C<&&s`M`CnQv==6?BT3K$se{1r?S- zXLy8y7$0hM7HoXkqo6;mCLPBgS$Q(hg6vftwyzV%qSe%ZZBWK5*}n%;^q47?%K1|x z#Bq7z-vb357oIwCt~~ABf3k1gi{WS5W6{`{@->gz{i7N3?@#HZIv_Xy-Fy0yu4a(j zBoPg_HQM{f%^Sa7oCk~cDA`fAQ{uH5xcG8fFPb4F3yQ|yUKWrrAr)&=@c z8t6dsyPoP^gXP!TY9?!ECJE18VD(U4PJx!wjy!;zso{E~nSahm$Ru~-<;%6}*g?Fz z5$#mLQAxm-?qk>qi&V$hw-UMh{Dm{B%a7d>uM$obKDXE_tpYCu8*63Is&SObxcUL* zKARZ7-f&8n^*4ouoY}PI+5D#<+6lvIX@cdNPvkqX?Ub8bPW`#@u6d%Nw{(o7+M^y; zfm>Yh;Jnq2ohY8nj;oU9Jp0{1*JK%$4aEB*rck)B%-Eyuw=1*R`l@G+{hG$0HO5tt zW%WE`D=7t7rAG;6Ik9Y3v+#rLoVVb{MW8}ylrA(0h!cq#FV)}s2O>t zG=-1dvh1>Xen~p@_^zb%lH|HgGLh>lTxG4weJqk6s#0`@8{Xq~OumsiAAG9*&!eN; zVuFprzDcp4l6n=$1p}x%v@fl}*(&7<%PIP~3sT^2lMsP_l=ttmJ~R7UB9)GlY|H!> zRF_<$)Ty^3PF#MIc(ej#YFb!QsEPl2rGZU~VPJF++m@v+)8gb&@S9N6Q4>_N*-4}D z<7)!rh&Zz+MnG8W^Ii3}O`UTV+9778M}pRpL^B;*hCY0e`Fmh(Klzp27}uc-#RgOh ze#t9&JZd}rU4XyAx*)|t0qI1A_zn^^1Lpup|^!G8g-g0 zBT&D^1Q}BuJ;7+r<0Toim}Ms96Za?UYNd=MmhSI6dV0maWeJLD)N#-;Y8=)6F~#jB zv7Y%-=mR<|qMTOlh0s{yU1Q7$1RgBC)WayOpl6aM92dU{0Uxkw&etJQk$08lv|up@ zJz`pEO<@s)GhZ$SOTbbpOO+JKvLbb_^x5jK$U6Fi73F8urtYYQPm;0!$nHqDG{IHw z3uVYUKnjTN=6<&kaka0PYova!;QEihj4Z++ih?>`%85|)*>ufAcGnyWz3vOQm*(x0 z?SxH3G2NUELMDp9c4%5MZ+KWVcy){34C9Z>AVLzR*I>bLV`>n$VLw5{KDTw$ua`Sk z6;El?Q(tM>4#dQE^!tgw?7g31c-v`cZ*1)DJC5y3*BtYUgS+y_Uc86aUX9Te=lRZ7 zFukSPsD|m3d9eQ%oqzLvr$-wYFAPxN<6$g~#s3_ugv`#iX<5jvCo?vV!G%dlVga_m z(6uBHt?IzyEWPl;wi7sUWr@>&4-8d5D77bzVE1?OSxnQych0mEdl}gca}pk&!aOp` z#O-+JmolMa690H6=^d{l@Cbr?JR0qDyUZSgPBw7T{$}?e!?}Ev}2Xwje>`R>Q0YjU4ph0MIptB5{5#` z@HS)GMJsd|L_WaEL8J=3jl2r;Y_gm6V+ZO!mtDhDStpk9B0ZLWLTL{e9$D(N(ID{K zpyi(~M{i7BLOCy%)CCV3d-Vrd0t2zWb-;KDr&d<+l6KZ|taC}!_m8ciaHM+>+A<4$ zW0z5)_8Z`t*pD9+Bk~5ONyg&$-z)1<19>lIg*->^Ad1n%o}USU$-Il z%}gI(&P2S}NK3{admazD7!O&E4z~l(@7+`F_!Zg{)Muym36E%$N~}Za$gY+Y&edGs zl@oz2$s%Sa@6%3PX|==>b!)QB3#-<=Q7MEEC`_UBnuXm_0bYJCMZ`A)mw-~7cxb*Yh5AWJM4Db04d>~%HIWD-S(p;8TmIhMXc~D$LUVN?oatHPK*7o}nBZp|CELrFyZllvE zvg^vumd({r=$39T@c83Ew489xO0i1dk|O zM5EQT(5>6Z>me#)Vi%s_PJ;I6*wJBMv|s(uu>V70jgz9WEaP1X>2B)V+00#}Y2#** zRZJagQ=MNunA>XXCkwI`@GU&vUTJsDP!F|I6TFe%yr%L2?w*=$V|w$wIp#rWy1IJK z#HA_z1C+~-%<1=rbF?|eY11}6(|AfjGVUL4YLO`wLDl~yg5TJVQO0$=>pgQ1_SB8I z%#lt|$#Qz;=uEjxn46f42V1`A?ENwUWI#WV@IB84VK(Y7rnrZl*!4;k|GguqSg78( zaw0YAwl+evwSLkBp}#SdrbXdB$0`&+?mmFs`pHL0)3e3H< zm=vBb!E4>4AIb)XD*AG0sSK&Z=o158a_`GYG0f|icaX7zpKE%z+|Tz4-7dtWb_IOm zw_Uo$3*c@Q^6NmQQ|z1u=Y+8|RV7vfVdDPr`yL37;riGxSk4TOY7?*V2u0~}EEt8! z8J6@J5ZH2bFI#b+^_orndr}>_*zcyfXa`{}%)5D|QNQfsfBLZgg5oqKUWK^!)@6ZL zU_N{+RX?T(hfleex9piyew6Pei1*jny~2>HZcGEkRN8a}*)kp$rh>%f*U-`^B?Pxe z`~}=F7oDYyjE2g@>r1s*Q7~VOz2^MLA$pmq9 zaqo-i4L9>mz}ZFd|G1SRql(7A=NX`nsxAMTg~Li}v<}2-BU8LmL4zd3V(PfM|JFvR zm2y{!U@ZCW5L%tX*;U%ya#|-e`Ry_-p8k>H`^3v`@ta>k&IV0=n?3W&Lbljus5T5& zR#b&0uT^S7b)?3$@QX9Nf)A6MdTV9pwDcEQMwfZ3L`#nJS`MwPY?^8P_kfr1ovy%; zmm6i%f_i+(up(xyV$1{(1X*SVZ)$1O&Wo8{@$RCoh=;n?R8K|c#bF-hck8*b)DDd< z_nTV_$5GJd*w%XSrYEOHT$D}tyPMkShPnkYzjfqT{hfJ+)v*FQ^664$vYd^ko+;tt zQ-0jV{wiE6cifrq0my#$2>Ut9A$bVm@439F>h_tyULdUW*P1AUl)6xgF-BO)o{p@^~1e3sMVA+I?2e0Cj{{yeRu z&EuND9Z~a{g`V+9INJY1J?C)`!t|-hVrn)5|4=Yzn_V6ABG~-BWiDGnGT$GOsf;|Y z1mHo0k4*0m(6;wznITViS~V3xU);zt&-(lz>xT=_vF9}79KXEVz@7w%T!O)FQ*DC+ zEWEF?qDK&7iFab>OPm(bI8@}(<_**ENtUK8`)Vr+vKYZ)`&xX|n3yN&#f68sdik4$E=d4a&z85OY$WExx;Jmh!v-#<`) zL6+6p>r=&**XviV83#luB$*@cUcW<7>p?gGdTgyk;=uF#QyiTWkG7S6z>vdSAT+vbyDX(`b? z0k2GziZFHSrE9Qlr$1&ur_Ckc^YF>b-M1+V+^hRrl2?Y0+?QE)-`3cXlUre}lxv=; zA3d~qqrcslgC(yHnJzev=3MNH zaCyFIpS`M;mt31ZryAa9Wthw-p<>qxY;?yA#~w&{GleXLXia9-w!cL~C}etEzl%1u zX5Xsm{r3R>?WaGQ3s_R;Ps6m!tv`=%1xG$lY*^KcaPgfX7R;!D=T2LRoGj#eq>$so zw&6iblAniu_%RH)yD3c{uFr(gaq^8Hn}kEIu7lM=Xsu$pE)W(i{JiHqt-v_Js`40bbUHl0MDEdp{8qZJW2Jv_6 zQ*6eqXhLZlGU1||u6ln|J7=8Np!F|Gwv>>UB<+uG zm5b=kMqOk>nRh>)hKYPxt-kDv?e50??o5|?sE%F&`=K-aUCI zE*8DFd`Z74uK43;RnT(8QAF3I1>&9zFREnajH2~WT^`VVZ^IurB?CA=MmHTEh7saJ zEu!?@;>w=f3yGW)Ya@6I8(Fe}{^Pr0@PdzrcnfVItUNI3ct^Qjfsnwv( z=X0xOsY?xOg`<2@mB&WD$s3f$2dTPmSr@nqJT>{9?HDU%_`z4bSz6fq5dOXXNErM9 z5b^l&C3%Y|xmI0%ma;0GOlhbedIIbs(7HyaF_t@w)hQjB?pJu1QPFQPW4+)-ojiw9 z?u5Ing;t2yDtUTG#Pyk)aQVLJ2TZz==AwpKcqx_%=%zJDi+mRuwLz&Y-|BI;(~;fu zmyDT7!vilba(qOiqyPE>%}Ug8?NYDc}cS3q0svb1pPVka-Wy7p?I~} ze%t$C(~1&ai){=rKk#zNpI_&UPSCofR;W2fCCBi=)9P$4wN6=qb5%!bhFjvZdEAfV z7y0%w05dsmEX+(49QTFrW)X=0Nk3HViG0VB3Po$JJxD0fU{+iCaS-)12i`C7A+HzR z&$E-|6AKBZ2^UMMIvnOCU0pNf-RCEHdGe>58+JYxv@B@BADTTWbXtT@g8^exC(=sk1V2ku4H@(1#@LtkP#Oh(a zZA+jBDwR7KlT$#5?Lo5kO^L}oJmWy z%Tlaf-}B=4+K`waDx#r|fa!|JW}Ve1=*Dt-WwK;93eHgK*qTPnW3pr~XA)X5rzrnZ zAT{?oc5^V+FRw~w!#FuQkIa_a$de{9eXHPB6NpfKVaf-a+C9MElLB2{=yKZVuJ z*eh%wA;M|Tu$NiL;pB%Pj>!S4H9>g`ewE&#<@X=ra2{(wTa#ScsECxLcjJlptQtC_ zU@b`Nzkq;Op3%QmM8cnLfX)pM&WYS5G*g!|mC72DoQFFBzD zqR4lF8~wgZR-`~6@oCG@RpTP=H^*VU_fT;#HSr(XqYK{6e-h0ar-qi&EUXd~3!;{^ zxC}`#W4BYtp}Y5GuQ!xx|2=@$s@qnr*3Y3l+Utrsy!e2Cy9dU;$)VgLy)kA+nZCo^ z^H=SG($4Wo$CgZ^#YuBoMX3L|d=erI@mm9o^=1JudnM3tl`%D%DQVCCq}kxpYq4AM zL&|r<(3{&#_p$e*bfp!GkL{%VJz$Z&F#YAw9DeOwra9(4ElTqi0Pcjk{g5#lOh|OF zE2{C`$O5`SHS{)OTP>JZZqgG!f_baEQ+W1{Isq!GqH0q}%C3muTHSD2EED!P?DDp6 zQ!iLa@LbU;Hn48VU~2~zc+juA_EW~DWrBC1GGvQ#*r#M+s`1pe+~@)Z6WjBMC&OW< zN3ncJA+E_Gta3Q1d%Z&E>jet6Kh59x)T#Z-rU2R~Tk8-;FFO(EN=FKM*K*%vDXMRZ zGc}uJYbD;ka^#g8N^Du?b&h@QB}G2nDq6ABO~W5l65Dt9W4+ht zf=sgnVcz>b8Ep(WtYW|KXF)z4eGy3SRKc4xs*U}@s3`MvX5InO&XTc5xix5uO^q>) z64Q|dsH#tF0?K_vIf%G-p+R@pNwn{Xd^4bPBuaf1kgBiCUxYmz7i-F&u8Uk3YkXW8 zei(N6kNOvX6HKfPEZg_O<8RcVlz?sIjw1O=XWn$)t@#+Qox__j0HZ2!eHZ@de=Re; z+<@DvI#s$zY(FG&wTPhUo0zPe^Pwmqq(&?Ox>ouohc44@4t?eW`%kYmASk&!WJlJ+ zsQp)mIcZ}Vdy;zUL>Q24t!5_+2k3d8mpyMuR!B0%l`vBj2MWBEHpK4Y&_Sj!%sw_$ z)s^$HZx<9O__l5MRNlUJh-7+=a|-j`j4*A)=+{+6i0>-g*>vtr;vrH5$Qv|rvz(@4 zY)^?6<1$`(`SVsz->6p1ztHBVZqdc2*d0Ktk0uK+w*tm$b<7q02s73{_ZVE8pl*n^ zvockLcMn5@mjofnVSa*Hq8XD&cABa z+%jqnMYML7hUblsL~olIm`eZ1t+q|DS(zV05iU*%V_6j?( zm78cMPz50BkF&aebX>0R-bt8U-pe1u`I0)^yz3*D4jYg?CS-J(hKMCjq)*}4N6Fd$ zop)4Dj+;DyD;6$Xrdxs_C$sSL)vVBxlHW3LdcJKlc*f0+*c=wu`PDrw@ya;w2?hwT5Xv z8?7Y1jv?Z!^A_WCNG4R~E0-w&ej+n!aUB@P5zBALG+3@^n|?Uo-2)Bj zD@EvYTXq?tDrx4CHga7pETdsl2UEL~bv|o8sH{;AD-L#3`0s&dGd6(W(JilOVTKdl z0SGlraj_KagWR)jy3s|P5@-D&Ca~g+a{?lPF&#vDs))V>CKD5%%SYvUm(6}gJ`Rad znBzVtu!`T%@hZxl|BV*s7DI(J&0j|fa;85Vr|9<&5~?>7nBS8P%Ls`@2G~Mouh?5k zA32Hd0`W_+8U>sW1DdVK+gTXio2XhWt^wD)Y8SLaff8}WG}QO=K{gQ*e&zYHYtPlj z%YedT@Z_=I3u8m|%RHLkT+53t3s4W{HV5;==zF@Zz?cD7L4B~dF!$QQSR$!lI8LiT z^H@Dz6uwUMQ1aFt!gYKAWHZ`otT5H?kdxxaB!R~PWvu%e&CX=io7C2!PeaAG{-=8E zb3??YUfovEsWEMW`JIkfCA=-XeJQ$SoPWnbSvv9uX6)3~G?@DA`hAxi{R z2Z4DU|7-XfMd|LL_*S`JKo3u2iB~G5;0#k3+`@$Y*bxiUW13Hv?_f{m(l-gh*pBQN{sYSBH+gTF6lERDW)GLDZ8A13YW-Pviff!UQYfPfL z`TU07I?BU6ajr~%Wf(iUrX)D((@ovOKRpEI6`1Q+wCDak0J%zO;Q{XNb3hUj-l9Lz zK^d?U5b&b*B35I36BX+4_+6BN4rEn%ILTrjX`CNc;kz%RdYg3K%vvsQa8A^3Mihzm#kz9?AsE${*;>8ze&(t_WwdHm~!j;_4_KEtp`EPhN=c~Cnm8KqRU zvahTW9mT_@{2;c8(93B;wRplbr`SoLB9t)<3=l(vs zs&20Yv78>=bZu>Rej38vw_)W)QC#2HwKdPcROm|_(Hq!0@WTgp35># z-5N04+^ya5+15+>C?Vkw&tEDYG(xYAJ|#@u>oG?Yp^`b}+u+6G@uw)LfVY?mUBgDk zM_RB&m@6=OZv1<@0heK)6v`~Nj~vpzYsfxtP}RZzqZQvk{a0aX@N*@YVv@ISaqwL3 z@rTGxvdm#}UK;}@!c)gTcpNJ?7PZr}&f8SKf-&`j-Nm01S%%czI;^>T{MoUoui+~< z;`)g`%Y7t$C8#m5AZDgO!J4g`)RCS4gXBW;^lsX5WqZBD*qMhjMo$mZ4{_J6kV|Ac zEVWkel~^%Mk!v;lX{}43=azY((?_ka#$YE)q1Qjl=D;MX^Z)y2(%&)Ze=hhm#J~fug zw>5ZPhx&U!%TSjeW_eQCL}sx5-INCDUZ^5f}7XjFv-PC%%i3=Cnt_hK58)o-^VnHuZaS zqAz=5mihcYJ;i?9ci=ZGEj47fODo*YqQ0uI`4wQ$Tj3u>-MquY$@eb<2|vQlPNKMD z>SE!bif~Z%{UFEi--m7z0y*{8l}&In$KBu09RcffR?woOA1QVkRC=&eX}fU98srXq zXDxT&*&OY0YA&F@CKn6L0+cv&NZ>b+6{nA4YJL`c#Yx_FU17M5Spc>bJ(nqG5j0kk zGjUGx4(CD|6RJfpmhsj3gyDVR_mYQ23$df8D!FlT>%?P(tla_bHLRz(9tx`!q z9K3KsMjma(-l}cCWIg%6;#R!aAE zoFWBN-~Z*A7`ofSwqYHG`IipCD7szI7x!k&#D??N!ol;H9Y|El%MlXBg(Lh^FG5Is z=fk~uh~Y|piMT#O7upP~lsr{%rm;Zdo}GBJ(f6Sqy&Bhodyx3YR-GH1{8F(@4Aj;@ z_;5C)q-9!sSe&7I+i|M7JXQ?zaL(qH_U74E^3=QCzHlZteh-NwAA&&!jh(hi`{^=O-K7-P4&*pySWodk3gFv1OC4(xS1K zg8g=Vs7JQdatm*CSm$b9As9pN^Ov`&Ro3(U#QZZVq7XjWdb_kn|$9# zH-zEpRqr2+6&lqLp>H_juKGGh z_7m4?06QpE8mt%0odMr!AnqLx1aMHoty|Kpf{7Bdz zb*VKprrsKpwViUJnD|L{5~*S-{SnOvx<74*P!Mw#T8&5(F7u+@mf3Nzuc}j7B(GOW zcBm~{$r>Up?wwrSB?eI-Vv`ks8 zzblE+mc|r8dL+V0R7Db1159yrZ%E=*@v4Xy|C6WbkuCS3azOM&0}`@3#o~ImeA~Ic zrMI+mfTCYU1GM@?G-&IeE>qgmP!}4O;R*uaEf!>K;+nm}%43hV)Mw39C7#$p#0VYo z-lVM7oyb@b`mo3QCb-AN)BAq%2c;)MP|Q)L1)7WHHqN_7dZ3|LNm-l(Wq|=`^bT=a z9P?!yLhE5P`<+pq0D67eg@K4|r^j?g37!{_*9&WVfn}TS>G-19N?hZHtdxUV9~0%v z{+9!4bVKR6z_dVZ)jNF-4q@6Tu3Qjmt&F@S#L!7Tc5vG;Y4g$&64-P3J$3}lk=NSj z?J3aLS{=J=$~*%xzixSRoC#euyQY9IABhle^y|Z_Q1XgLGLb$Lc;FhdSL)C9j~ual zkky1oa7d?12)nV?WF>#Wz4jnStD)qau?(UDaeknrs<0fF@fOItlAa%OENKj{cW^ZN zUZg?{A(~|;inj5f^s(4#0^v4>Ot5fDVz2_X5JK;5DyfUew4ZFQ>wba%SBV{po*7ZrZd4)m~&gf?L>Mx~=!i6U~|)me@q z9=EHwYYNXqBFgGk5Rf3Qgmg!@gt61aJIZm=!NCCYH`aJ>W`I#MCU2NR68^3doT-eG zb%seCuY*bLNCYulbBxp)-pW5`78yDR&iF~Y$Do@*(A9-vT5aHzH?nHbRBy69ICcm9 zdTw&6D~e@vc-x#SJxx;y63P^@A{K=}tY>=-klXOE3UpCf-w_I^6bdmar5s4hfo1zw zdJz)~QdGZCV0rJ1KRwnY_j=+&j56L#a}X|JYObyum%hXvOZb6yB1)7dA%Jd;L`sUS z(OfgH5<-R{ub|5#YEEJUoHZ%DzwM`ISWtUY$-M4N?89J~z|t732%$RVyvW>1lmZij zaZ+o(CODNlpTI)uFz=0SjQti1B{U`TOlFu=LKR4x$(14TpoeJyLargC`&AItKRR$> zLlf6Gwb1gPdf6qO2NI}kwn74*NAX#YQaJRedLIT!kz`ITNfJA%S16upy+S58?e`=v4m_6@1uaJ5_ zW-wmaj)FxF44lKrg+T!jIX>>t_U-=`e3&zOVgD7SSI41{5TYv5O0 zKi6avKS_L14^uAyq-_a@TYE*}T|Ej}xbZ*2J8i?z-`_v_b74_yc+ZP_Jx!Rrp6L|7 z_DyE$_#`$!62EN#=u3{SXSSbpr04!d8TH4KUXk5aqupN`)6dw;FkC;FsXoHa1!jYa z4&L^)m3z`NJ2+axC3%fZs?U3s0R?6iaG<^{pRm5Ghc?ExKLykR7XxBsp7KmZbn`0T zd&RG12}`y|P_9}VwIY#TJ%MT!_an-Jd9aeu3WXN@k=Nkwf)%2TiJw`Y~T$ zq#gP*UmqB<1>Edg?dD}btdC)%i-da2MN(T3Oq4MjL*l)r49**862fr0Nv&k!erUr3 zO!ezWY4cQ(#vHPC?O?zkKw_|ocRSa+AQFL{HP^xJA3(A+r?O4sEih#WlcHUERczD> zTlxs^8ah6VMXz0%D@UCxJ(sG}Y19dazzfRY702|tz-!6jceW@|{rx7n=>y`<+W3WP zQr|`=>9DtkxT9TnRCXoED`xc|s!Uiql_`=kKTx`RvXKj22&|++NRm&HPo__E%qKjS z;h`QQzT0r7L~~RygP@oHx&1U|OyG(j?_*h+#pE7`tPd<>d)AEJZF9()SR-TaI~_#5I?3}a|lhAd3s-(5HasHMW`2=Ox|CA-|-NiaX4@`97f;ldRKf#DTXjdNq! zDIGrOi!iMxzf~t1&zVGEVlMD$b&Wm&pd7?Eufoo9Jju_;};XYn^YkmtxW>!T$)_{M1`7$g0wtysj;K@C%ObS6CMeYdV#=Cf<2xbhw z8Tl8t{2AOYmwp!n3pCn%6W#y8w|6(Ht7VqZ&9TOVn@@E|M&LkZzVhyX<5*#jDxj^4g+wBC z=!v#LekCVF#pu%=)lVr@#Npyb`9C+}l{6_8m0zGPrVn2~iEC9?{=?3oSVU5V>XR2V z{>7}3=RRKa^;CsVVjfGRT&Z;2z*HXzEE`E8?fcWEu`r7vEyMuYS9{7i}Nz1C7aH3;8(CHUd5f~&5LjD@%p}2fK9Ck2nMO>f(DwxFW{wY+YTkq#Isi zKF{?k_Na4f=?*QUgS9!i!^uhZeFGl>CF$nrj%$+1;z>R#juiV)H901rsHwvV`i>7? z<_O=l`dpQ1C_5#P7)PUu{&GU~K)-Fy?1Y}u1DGgWNWbH3k(ONU+IAI5^I#JXrQHi_ zQvvJCPyTIIQa`+2MBW*X!BSoIq?f?Z_kV7`uWt}arQ9zOXHS}FnmG&ICNptGetSEV?+j}iW46u8>TyjGre-Ey#0xn@bp z53J5L(>syu;_MuO)XylK$Lcz>jSI?4)pHj0R<96;5L30N6veJA@+D|F7A@`gB$KxM z%1c%0AUWnQ&bh0(UDqeC9EYwh$SCzp3Ta#UN>F|?xDi5Q?%iTjje4D{q|-R_2RG|* z!Gs2GGOG2|bm#8KBqK9kMDF9Yq_(vlQu&e7y4zRao_y&EOL@A%58g>IGuJpaYq4tI zqo-!dGPC6gjruMc{6(D1diH{9?A~}AjfAcsnmgJ_?9m%m)tKy$feeEoQpa^;^`nCI zEPKa1Am``_ttKaxX8+3%oX<(afr@w<>xA$*xAX+0nX6t4y_2@A*HD`Z|2sFyG>(u3 zw^kH#&@Ju%BbZkPQ8Q13Vh#UuX{43h&xs5D;NmAdD1AU zPi};Y_{^v{lh;Z!BvjoGNznnNxZln zb^OSUjLxTWUY0FBrlqVv!}8UOpPf2lG8M8-S}TDL5gb5@>lKUhQ4ggE!+NP^60<{W zg36FFhU`Q~@K;Oc+8^y8VD>sJ>J66dP#*S? z{YUW87hA6e>e*xH(*i%fIpJNW4;3Uw4%HzK_>I-s#G!|hiqr4UH);cKmnHiYyAF$C(jKs1 zXV>8qe%J{!bE@vX3Wa|JYZSXq(ONuI+RYoCo4RmIDueBn&#h-f|{VVoX9HhH zFT_&sd3K19X_3#_xNh3qe3nnW?3y-B7P9FHpQY)$SRZ@ZYotTDd2_w$a`@GvegZFO z{=4f!r)6>IJ9zxYszYIYjO0Ppy(Yzw_J$!SDL1~thtK9{CK%Z`Xhp?nIxSkj{%bm6 zE~P{+)oSRg7u`{&9E%2WjWIpmw6N{B7vjEQ!fK5&9Bs-o53%WtM?@ON6x+SkT_$%r$+K0AUyW`8A=E4>K4A5KIY`QSVR$Tqo+*dkM zG8^JJYC~M?4SpP4uRM0n1A`c5WU#p6O~NPPZXQJW#*L)t7{H_3t-ny3qOO+t=$u^j zC)GoLx&d}dOyY4bd#ucWpGIqU*^NzGWFNW2(Y&Lgc4yv>`xt-peq#34l$LPIlWkAw zbP0-QDJ=D4z&`$Wg-nuPy|KIV0w6d^Hre z__WKXsMSmBsAc&O;v4Cf>5+Fn&dk1VSaBAtG~~$1I!x=^$I9lhDWmwd&Oa}P$y63U zq>)4kcr#hv-8hzKe7UHPG0ov2nBCGdA%42h&X!N6{3|=+j7P z$9uq2&#+UY4P{*LfHX!Y>XUTiwKwffzY_V}OfGXsPnBZ9K85_9Sl>5#0@0BScIjot zYqu6OeCLE!KgT}T*0#DwqUBb2Xz$Ays7a1KY8#%QilW{ZWDqudUG)0q{)LYM9TRcX#BC9?Stw z{A-agW>%k1ct3Te_HALaMPVQ+UGsZ2@2B^hbp|b?3#V{J19V~KH{S}3o85LNYS;(I zsY^%^L{S&faJu)iU!0Qyc{|Y}t!DS~3GaR8ztNlimhEIMQjNbIUa$?BeRwE)SF82tPIa!W z%ql4;VuFo;$+`C8=d0AWH^ZvGz7lPykLWRM5|y=A4-rZ^tzaw)~5w&Z@RX=gfV!PBhi=muj^`9K=E&HQ!X z?A_(3+V@)5Ssn2Ph7^}sVPCGWDd{sA(6`!;QSPg2gN!%>cE|}yoKI{&@-UIn{SvF| z8^42kDJGfRXRS6$MkU9=8kKRc5!#1Ve(poMr=Z&C+vjiiD#?Xa0m)w8Lpj1D^1$g$ z4|!UHhMX~bIxbf*Wl+U^?S@L$F)Lq>mdk;aktMYH*TaVc5rSKs)f(342lvFkE$d3{ zGF+^Y+&|p_HDe-#-rW&!T5IvMalzgHofI$NBUU(GLLtBpPwz;9Ymqp<7h3Wmcv%;< zsam@~S9-rVPb?ftGLUn(2z!G}mcTHSX+Ie77Uk55tXFChb^LYFU4EQ46keM3Lg7(Q zv7L~)((`8yLf`B)xpLo>SN46mPPEBMDv!PCmeTHV@c!vlQk{(6oVTbc_tIWC3U%1(rJ2e7k+i`d+fT&`#Px$j!Ux7uGR;u&%*u zR@A9Ci`nX(b9NM?;9V|GbGRL^KEK?A+$&?)2Ih}26{+_|ZGA=oa{fCi|H)POw!~3D zc1hN*9GhjQ%{dKxq(H0B82)&YbY;Q`+**h0slM>D{xlZiO#`J40~LR}ea zDbxv1D;=_fEE_EFFFS_+$5)jGOavbW8*DF46|o~5P9LU`UjHKy zVu;jM82$-9g6NY~eD--c+eJRiav!Pl=y2aPGy6zn??~$QgDjSgcJrh@b zWg~QwHN+okUQ-NZ9imE?({Sag0XE#fIxM|G2NGxd04B-vn{|>UK~98HVqAm7@vW|p z%%Y_hN|NV`4evfs8?CUC;Qz3}KIo^Ln&%fN#~P%zy8tLBMf z#BZI{$4{nIO80((X9dWwy7u%1VAU|@+~3Vn_sRRGCVGy=Ojjo(3@wC*ez@W@0mk8P zk}o}`UX7V5ho%J<=8I=*lpvm)GSG1GQZih$fVy?A#(p0&_esJesSqdkK{XPt4<8kU zvEOlqgf!=_sJZ&Cr?3=k3Q3U&%!&%kSk}&98-C=b&_62xrk#vh03tq)OWHhMz9Fh4 zlKEPhI#VCUvsn$KlQj}af8Q$=^dOaF#cxxbO?D`T|G&z-&>U6 znD~#N%Vv;-W-_=_=VWQ4ojxYAaVzIjcrrv@Dwi)b)}aqO#31ciEEwC3(G_qS+5fSj zd)0gV%`Nf|dyd|-Up{|aI@*wDpI(~ZmxPv4BG%`$U3rfztKm;usq?)FtZz>RTHt>D5Ys=P4EQUtlA~>W zN#S`YIq3d{N;w%Wj7X*;X_Y4mv>ZASa;CB#FaD3=>g3B>TEJ#Jcj{tTZ+`~Q@^|KXx(K@b?1xT^7eJ0GKr z{{i;!zf}R9is!2zKh$$Ao$k~+$VPTn--uYkp9g_k0^ZStQ#`89?uU>o_6C%Qb$5MC z4(#f0FuanvTvKhro#I3ukRaA`X{K`-!YOW>6jgpk`$hj?1Yb>DDJ3XcY^gsq88NO; zNSKlgu}KMk2<{ub5E!7Q3Wz!Kj_p4>MdiINUM*q;JL3iUA61@o;lRwtfA#bfyXf&e z6q{J3QqxC*b$a?`P5s^#w{CwuQf?;tdT|+~N^6kqupIq02m~23HEmBn@<*9OY`v7y zk#$Vq-S6NiQ%8QzHyN5QrM7cSxbYAKL&gX2j_p zJ-t}GVHEucKhvp9q77Bp>sR<|`SRmoWm%iiHaw;!_)RK$nkzR?uwaLx1PGyu?s5Zw z9Ax2(JqdY;z~~9z3}t3Rqr5I6^-Ce$XiI;3VK8DqEDr&y=(U{(g0ywVWTm8kgQ7tw zi1?7$!!d~RogIjnW1*x27XEkL;#B4 z4uFENm?G$ZR*FK%rKF_SxPgIcU|d~#qos5v5aeJAzdWF`ml6QQ%d>*?U@*W@FAy*C z-V=hL$CHP6@m03*s*q$97Yd>@1{O+HHdU2P1ZbO~L^04Ju%uN&coe9V_#98W=>4y~ zo)m(9(~}Y84G*&;$J5csD zDIan}ch@Z7x@vtI{pGumDTzz`hS-rf_MTXasx5+5xObg?4xj$USn|NR`k0PQ{t?h! zlqo4flvGI|;)}i+Fx^Cx-2NkKnn0h`*;@=E%{fIQ!`i13$RZ z`R{)e401g@d_hR7;ekB>lm+bR+CrTw8pd8%xM=6F0z+oV^?K!(_KD$Eepd2OAfIa^ zl4bBIb$rwm@ts}l(O1%cpfLpeEVX_*sQVX~uANtHkKZZ88+FEi2mJZZFNva_HXSLx zxLcrP^rcXkzsZewY>v**5W@a{4FMqxt(|4~IVe@mZ)bO>3NApp0|VU9uQ}lPQ_>-% z4dVZq1C_kPhfq8p0{Cr5&UdAPdyICY;dE*#7#$GnpTZaQ;d_f!<)$Av0wh}I_H$*B z#2fmJ_k;Qc#PzOtL23*l@beI{sBo&U{r0BwFV_Pq0`O*^MoP3PU!cYyY7d@Aa-vZE z$~bLjlZ0w>J>yz@wO< z!PpO`xIDe-3u|Z4b?yNu&nWInm@V;)L13(qo>sJ;L==b_d--)BdMrTg zI1ZgeqBvH?ucDn_N+WI`JEn1DuqKYdq2lrUDpfebp;$^iu4l*-12;}c*7E}M^aFXH zyG|kJRH%@c*J$0JKu~_3+JG2p0R0Ys32(Hz{7IApVu1IEmKG+do02UpFJ&8r+6dr> z!Y#e61Z#;VCy9yqNY>k^im?z+2wtY9&oR5+tJn_?I;9L zp$TQgj9(LZcp!k3jBGQ92duyma3_(hxzTC%pz539mMQ#f^U-Jsc&okDcfy_hX>Bb& zh@J%o%FOmqKTdgbhCrF~(;7*bQ^pn4J*e28QswPW%s$f+cSiuI487~@VBB1PNxx}^0^ehHT;CcaqK(-h zv0w()g~>wjWd14HLwbAG_zGk&X6L<92bD{J9)b=GX03h(K#fzTdLy=x@zH7wDGAA5 z<>5$;sr@2Ti?UhViJPP&l$HCP29+nyt0MBPl*QwC+&RMMZhO$zDs4CnX;V456R#uK zh)G{L;B@&ByAjO_>E+RLt;03GaMeS2^)McQ-^h;Vw|1eq&p2vI)Bi*7@Cx{eQwyY5`0>UDuaMipu{(EuQk4=@hR zLa|-US_F!+f0lwS0(a1B*Oi@@H5t#Wm8)n?J)||ew{WE`^ZxN<5i4o`Z?5-Zi{3lj zmDD+q02%ZqIQj=`9^@La+SJ4!*Qf(!M5BXb>gxQ64k|SH2YT)4(CY9|+XC7(^T{jT zTy1L#;r>E+oRPgzMI!<+B?Un~NF?`ips14GZXDF;-DE^j-Bn5h6tE; zs48h%F?jTRp!4>a33mXH9xo&t!0ypGS7SAxoNDSyK)N^MchjDgn+iLb8g)gJFQx%{ zIbuw)-Vx7WxH4q0_HSTsHZnz6IJ;3Nl*T^Z=Wje>H5+I&Qyv~&Zd4}0&zeSRlyw*R znI`(XFccwTPYqf@+NXcOp@ID-2|%O)@L7Urb}uKjV3I+i>xO*nYF*>CDDDH8ADoy{ zg~{Y3D-dck=XU|iN4p{2P=MY&gN`kv-jiaESZ%g&XT+W32u4v2LvcDP3CI) z0m``s^m6&D(pM-4dU4|Atg@PhUI9=r3O_M$8T0BmF6@Pa2GMybb|+ z8YiIi>46ZzetPDQg%xWr$+#L}jZ@r<7>K5a>*KN~GP2MH{R&mjDMe$NG39aC-WqIU zyHF}UwtwZhRjG0MfPyjlp?#t+eTa{zC+X1r=`85|sU z=ShmE1eLMmEv1g=YKHpuKLWDvqBd2$opDRT3;QMj#{64~460|4swVTY=YqYZkx3FF z^$rLQDvjPgAY~<=+*%R6it|R0V+iXYPZ_OrTASDjn$unv-MFk4O!uC%tVfA%9~?F5 zDCh=czk3g_cS`T-kuo38-LqpjoBbf6Q8rqO8r@vOipR`6gMXiFc^-{Ze^#EwnhIBa zhk8+92kA}8Hs_bc#U?@-e#&!j2#t>9X!*1gQM*pmSX2zr3yO@=it0j8n_6lTG8mEViaHUX)Qls3 z32b@{d7zG}xnb?^@0GRW9Z|Not1o6vqtYBK6V}#QMXNu{{B7 zDSZwRA7a{I{7YPhQ~u`P6?()fvSrGY0NXa(CqoP9ubG+(Iyz{Qhsdg2)bmt&^?+8S zMW402>^Q^o*x#&>lUFGKjo9ta$&a3BxFeV#W$)0km?5OC%*#0S1R%-I!x_3O26?3v z*Pr~e2p2SeFL5E~6qG#KREE9h(1H4`ccGqsw5jO!TkUgkX?!|aLGXjA#rC&p@KmB+ zl}UDqvGVA%jlC$w1^ZrA{K>D6ybo6wJY9Fj99>k{7UnjNhi`K z?r8h4lwz(MniH48j*L3Ai++*8fAExFQ%{lfYKDTjTcbr_=o=U2> z&(_Xm9yx5SU!wPorEHn zDc`Dt?G3g~NBFJMP|B~ddAwoKew6Go_A{~;J+X}*BC7t<7fLY5bL3;-yey--s|N#O zjg>y|BP(6+mD#t%lvU?W`c}iKs zIw)R(v+o%*mj;xiHcXSpd8ZFfQ6c*IwD>_NNC2`@l*8Htq{~D@I)dNTvg1V1o`?uk z>>>4jPv%)I6hlE46CV<#_AiSXwzZ*AlB3}FL4vR(RjAy;dEh*1;FbpT5>FJhz<+~D;*}C>K zY9K2PPDMj@M$#rl^z%S_bvin($$r+T;lOahHT#s5_=6ORAERzrLEvLZnIC|a!}te% z2nf@!%&A^MQsDip^e5}WnRXJ%h?Llp+U{D7N17C3G=Pqk4s=9Xr&TBMKVF}yzFUjpX5_ZLO!HiR7nxRY+8odyS z$@G|Y{7oXQi&;yf6mfMmLzX)@FMO~NdL7%3S03iCz|xV2a`nR~O#?mB$_ElqBgTIG z@vf+HapA&{si8enQaGIBN;8;5rv65ue(BkQWi-}^nSTt7{t{LwRV zV>@!y!V&(b0mkv6gAZawxQ4ijH5PR&gN_vc0s^DdaqZJvYspSRzIpjNmhjN^M6QKp zA@l(hLeiv}r1`pE1VN=*Ro9|g?r5FfUmpvp$T$fwb7oHX86s7VKXj;LBNB#Rd!-3W zBd%sx}^$>7>`fYwS< zIl4(^t<2HB7gUFdZGzCANJdI=wMlmgs`YYkDB0QHaN=`0ytIV)F9IT>|4Zf&5)cp) z&_X~kE>-dS#&$lDMz;T#%^~_Pn{xwjD$)A_?2`GTLWawry<)lW8xISqTmgG@(!^e3 z!&o?Fj=Qqs)4oqknk+UCnXO(*Ot5gq{H<5ytSv2Xa9U0hi5ljO8xN8EN05k6xdd^I%b*-FVRU(?E9i9RAkHj@FMEHSDK_Gnt<0Iw<& zd(__y;`Tdba8Xlf;3KTZrOT?B$Dc06=+zMM4q6MKqeQk{->!I{8{zZ?N_u?iX+@sHG%; zkQE8BnZP$6OUqHclM}+C$cP_rAKq`%=5?^02$(dCy=f8G5VGHN!+J@ozCSBwbcyvi zYPwDEO0L)C!Q7bL5PS7GHDdLoQ$d@FC(W z@yFY?8Em>qW()&1*^qi*!6HZXH}#_;^`vSIXASw(qpPU<+RiG5A`RmqD_IxkKXtHS z7Gkm3RgphU7o&;}PB|f|1;d?hb*1CJ2Q4(E-F^F;GooqnZ(YEDQF3Zh1|N-zwBmpC z=pw`l7&-0bw#V_iiTqU?$9iDSEojL9$9_f?s4bEa zqsIBR3wi^-9GXj_qNG#~FjXy$`_EX@ikwqUfFnQ8@7QjVrix(zKvS5_)0A1lW<1=*MBnxdyJndN60Fl zRl=-GC6R>yrEW*|zf^zIn=C?z>6O9%wZa?4dx{Sx{)3xO#G(V;;PsKDq$$f@m|nx5 z9J335Y^NR+Kbik)+=NAT#fjiuRq$xK@g2@3M?=4~_y%m2`c?mm#d__P$Q)A#;>WZ0 zzqTG-_@?-vU^lU0!5-*@us454NWM_j`L1p)r?!S_@?H94!)^YXy3m}JflkTcB*p!v zQG6%ID+R+cX1Bvhj4WcocD|3w*&AA6@isFnQ!A<1i-T{Ho&G8FfwX) zZZ7SNz3}&B=O-slZ{$*RlY>YA9{e^Z=i+})*u|*GpHBD+Kh|r|Y1s9` zqq5NOgO|T8Cspr$o}9eDVYSznD^0T&T%p8%vk1e5#6sjS&&@3$U78Xq&x@^7u*5IaBJa_x92Dn--rXGL z(cG=NmV@=UaT5W?FsFRi&zy@gwb%&RnqWiQLvq%f!-jd@)b6=N`wJLS@28iN$^^1< z>3XDr*V0&ybZ3>}SdU{QKkQglV0f}!lhiUnVhqxK?%G+k%nqNjoo~? zej?%|)qmy%{^Sf(W7fC1+f7Y+(;Sx?&}e0=ZFh2rY-;b8NO3W|*l-2G`EY8^unJbiCxvuazu)}Y6G9Me79S^UKuRweMyirWU?kS6EL z_wAqi=2{1`JQoQByf5V8-rc^VHIj^qO4w&=y!w$Y-5$7B_QOGsQM(p%U3dSxezw;E zy4W>t?C)4~i<^D@ zjDsvSm#F+mOHh&Ty>~q# znXl5ke0Q2?F}a?)iZQGs9tIWZdvXUZ>3;?tR;{SN6h%FqqRzVpm%Oc39w6G!_x zI<~0h8FW+nr007sKINx`!}@ZUpkLDU^SD_CISrRP>--$4#WBsIev~hb9I%s0QaU96pb|(ZO9BRqS|VipLq8ww8xlVcY67Ak@L#2)IS18rKMK( z4asWj`k4%8ZTZjNjvusA!=$cD-&jRYTi*_~T!SRcKMdJmsS6c2+tFZH(kbXp<4IhZ zbIybv^Uzhk|5fx7wCg4yPdh-U7S=oxWO z-F(@ku)hNnSmy}}5r|zD8L0gXGDnS$-)FjgBj4V3&Ww4Pph-#UJ^lMBlK5aG;P`2c zz*4CmOrf5d)qLg4_eyl3!KKE%A_6) zRJrm0={8>EMJ>$vA1;scSr8kxraU{*S?g%VH3rAk_p)yF4|Q(o<*iYEFsSX|TU76& zv-!fXKlDik?EIe ze!DLks)c=VAindwrn%NP^tCG^mC{0S3lu7LJdP}M+>_e7lXBJJ6Rn?8=Rsz-Rn!Dm zt7Y7a^Ciq=a$!#kwiuQ9w4xT2QfdfTJrS8OZj2OffPp15@)rd>E@i8SMJcg7C6#F| z?XePn51TpM*n*M&2p(P+P@WP>oTb|#36rs!`v+Ju`dNxi?_FDY-uu<(62Amy+?VL( zCR-v8?Po&yjFuX;vTl-2 zOo^OJ@x5L$_1p{9PCq5sYEPHIh)g-kMst~x(nZrn=d4`ie2lc}jQ`Sy%C9%{we4@$ z`)RJ^8_X;nC3VivF?rBgG1++P9!%+3dsDzlGZ4$jP!E6%Ad)WMJ?Gh>{U8yIse@*yRk; z!B+i_;nN@os{L6-2am>He&MlzPlE<#Lwf!}Sz?Y2)DMcq%4a)>X=pY*dx7-~%IP-Y zPsli*{?+yTN8lk>%P*H{jcvo6d?N-adIVedr}xX}`JPt(wyVjV-ob`W2JxibiY7y- zTU~7S^KK0<@CC@ew!KiA>a8D6Jp_9XMx#aIf1v8_#JC07(JpHA=U6AW(3$KhP&Ts_ zM}b#QR6Q-6muNpY?bNYnabZ?!sX8a_w29W0=mZ}u97YK61#lbJZ71!hv5f4Ije4x~Q+fktl@mqO( zi)A}8W}%W3Ty^2d`Ju+FOOdqSh&5_W@1anGwODPgwlNmi=)0rsI`08MtBl$(HL%{x zm#Nmc1{B>yyV+)4k^ItIWNWJ7w^ChygJ}0jfyZ!^Ir2oUeBnNaIg8WvXExEZV$@12 zS$t6B{jmj4mK{h@DO#q<-2C(kNxdL{^|{XA?y(5pt^PHU`Zj2Q27GfwwDftlaFk4& z*puBZKI72ohyD{{S7hYSgnzME=Mt>X^y@zYT8kNs|7M}j?{Rk!IO|YU-rOZ6mol*7 zlOv0V-3GVhToUn2&a<=HpR#6@_v7fP;6_Mij;$pzJW$p%ezOIdL~D?l)k*e_JJv8@ znA~@=6fOMv8k@L~?ROCNsfqK9j)leH7D4YlBqEX(d6OfnUGTzNM82e6k=!C0_u@~ReaiWm(lUF?y2KE`>hmPAbB?Z>#? zT?7sGa?HqTswaNB0xgt;2Iuuq?9QIYzv;;7nU^e9dy~qEy{%~aocS{IoVd#uqy6Vz zJwzPLIIzn`zf|v%s@jo}@yF4csLg6?1xfi$`&{Dc7`z4!3B6Di{MNjDYjB{)RliX; zuwbBQT_*vS3hEGCvgc2}YLK@L9U<`mZ18DQtBhWR_MG22CAAApdubFjwxi@2M6QTT zNSixdpz#$NCFV*KP$adp()Ls_5lvj_rJNgvl4dsG-!VXyGnfz6I&xrow(Wf2Z1@0q zpfZGJBn{PFq;XzhY?k!e@RvBe)qOA%?``>9w0|6_jb>C5Z5zt@)s)jSYV|7$D<|IT zl#wt4L;nsS{Kj1Ha;vvDduLI|l03CvZ^+#{@F$xitf9NFNI^*cZ})KGhB zv%(|OCX9`?0sIjy@q(Z`((0;fp37nppv>|{@_@c)hss|8JO3$)`GP7YKG*IF)yj2- z0VeCRH3ofUv63U*=!yLpk^!!w-RjPolG}^eYPD+ub-jWPqN%@}b8XBB9>c1ci~5sA zbJ5RJWt_2dRmr(&vtLJ92p}_J$LXF}rLGKSf%>y2W-9I?{1axU)TRQnLBApbbba>Q zH(Lyn_>r9%v8xT_%*GS};dJ_)WF;&(WsYIHbj(T^BbU=KHz78NHo_hZD7a4V$cQO? z5k76$09Dj}asCX+zA$e?oZKMRvJ6`fj*DdV2Z%pnnddRv-V9d3?uN=hp)a7~++S_0 zusNc+q_i=C8k5>-AC}m4jb?IUv6)^O-o3oP5=zYgeB@NSTz}z8jPK7J*>Qmm#IsQd zLot2F{9~=6D7F?|8XgRA(4{!7{U|5C&FVgHH!R9DNUiG+^?zN(z4&SZZcm5~*4vaOql+&(jqz~lkuHzzn2?{k$3qS$DV`XiT`XRNfVB0iG zK3!dpT)Txokkop8Gf`zVclrfN5?B_|xEptLUR=ajPajRW37dnc`&f79F z$lMhox|~xM$z`m|+>6nY`z80ShJ&e-N?$6r+$DF`uy0b)$lOngHj;@tzqj-A*dKQN zygsk%^L2T@-+y|Q;Os^|I&uE%gLj&sXvG;=2UKnFR{m!#yKWP*{48eBBR+d6y^tF@ zzU&`!xVFd$%{((d=lfz4>^27%(jDD1WBCYIBYk5CY70~MXg&Qh`$m6i{PW-{Pl%_ITX?q-Epy9=iI-M67d^u}<2dwe;6ti?Jg0CskbPyDqB&t;oS{>Ug`>i00vukY=stjalv?2PiU#^dV&> za6*PHMl05iRd`KrT_)pwdbjOgKZ@jw^cC&gj$PQ*4oghcLOF6!nI!^e<+&@}WjrSm z`yN-iRDrhiCR4t|cKz973q-Z6r2m{!eyjm0_vMH~&Z^c$Cz-djiIUXTrIFO@8W~~q z;&GUxs?!I}7v4dSV@86qr2VKbjBK^kk>2x~smt^;ZsvC4cWOCqKy5Kpjt;a0%SrD- zv@r`dE2hB84EdoV^sq?Bco#CUs#|9VE90 z#X%4?e((hIlc01iqcb~%9n6|8tk%YQ1mX!~TsA71gU;6NBgDWP2)YG(d{&A#E(iRl zujpbRIA_{SQxKvN%rpM2KX`%rILhc!UI&UujMc(A`4RWaHA2Cp<-w*%)I=uw=`?psAZ=v24?r<^y6`53cudeg8 zz+_rz|L^RjxEQF`<0QBp!e(V?f&{0&{MBM;Mg*FeNx&i;-U_|RN+EayxWg={3+ia+ zs}T@@!+3~GY6;y9{11W0#n7^KJFHR>Ubk5tf?&EE|ChKv<$}D(Tm3Qdl_=MQm^>3B zx~bfE!;?#&sQ(Qwq?5Vg1QkE&+5nT1$RVF*NOk{-E0HM`y9%cv|8)$)y3Jy?S$+6L zOnrf6COO&L%UFz+jY;V&34Wg(%0{cno6ZI(KTc+Idgx`Q^K?8Q z4@jNN208{bO$R3dQv=6}&EWM4@B}!XnCvEtlW;?~kZU+*-C;;P&b_Y6yi+k&Fics@ zPnS9>8?|Da5G^F-cepwAaHt!`L-|rUun07(&m~HySf#3aPy>*+Mkn8tUn{I?eWaK~ zl2PLEodgmPDzPvN&Fa=2CKDWN_kIw(rsa!sXBiS4OtKDO9*#hF3uZu>zyJVcP;IF~ z0^9+b4W6OE3sg!XS(P^PFyw@Q!1OJms0CM)&g#jY!LIou3afhQ(Tf-%H7=gj4S6u* z_dUVvzqSzyl{2_XzPm7_PBMFf#-E`WR4?{ zCy1@?YtgHaj#$NvZz|5>6crI9?Xz{qQLpbIAS7TDHTrZz#++M zv<^(el!n3C&We;p+&oQC=cDF0e@lEvB`{2`K@pp%^E}ZFSX)FBhBsF$V)eQ8((yzk zyuM$}Y+qhL_iW?s z(vKF$pzJ>lHMV}!w~A42Yaht=Z=so2MDn3*iY3;8n12#6Ao!zI&ZO2*yK#U5F81#u zPDe)$hg4!?08u-V9Y7`P=m58^qqC!r$S6Q$2ESwxln>bns4?>nHxY5>-r+{JrSh{> z6lhHViYWvHnPM(z_TQ@A)`C9&Fov@QdviRKf59zhb#sF0(K4nPO){siAKT~=6Zp3W zKPwK%SDIPI80(W#g-!l~ZuyxwpXqedLtgnY-2Z2n6x|K@D;Rah1_b{SS^x~y*@1wB z3Umd4#vRd8m2i2=LsXHh-rgpcoKnnoMd~GSxL`-7#6&T4Xz#W3Ajz~46MZ1)s z!9ibX>}`o&MLM3CQ>5qP_eEkTw@)8*0_b>y99CZ>F;%JNP%^Odmc-j1!nD%K?igD4 zTiW!>iU(%IbtaCMxpiA_SUdhg!WUywVlBgl6O~7zz;`+_+8i(&v^ri~Yep48BV)Fi zUXmK)i$Cgy*j@RP!ZtJHfvM+H_hAmuPMqD;u7kphldg zy9YMlrmC^u$8C;-Z_EJC_8+B>m89#ypr|LPUH(WVpv;{Hv_5=8BwE8O^<&7AbM+fIlVDI*mK>JHQht z!fj3tBS?_H(xDA^0PZ80q2~R;t7DB|&@~sWxMPm2VJ{`#Q87VIAa@s_D4pAl7QPis zJWK2?z?*g*FV(Wfuu8$F{`KdU!gd?>gOw8ovr$`VwIoJctn~3x<=ezA5s^L3>fr4H ztvF1DB$~>*vS=sI8g@abo(8B!lS=#DcU^I4T*6VcN;Jm6pG9 zqq^s4UVJuy+V8_&W}?me8RBP$h;o25ATR-a0}@0^z)|@eXtLpo#pKIVoLIhD1l=^4p^gIag(_nCYjR$kJBr#? zatGIyoy7>KN7YpU7xVOlf&Ih4nW6+j^Tny0Z7obzJZ8Z*LLy{+5tE7KparD}{5;Og zRak0nCt(Mng3sa>6aS4`nVG0$H-k6EvjS<=s@W z{%8&$L~%8h$9RL}Vmct2?0?4x-(9_@-P>FM>&CD+AOei)n-g=GgN-v%?d}Fu#~B{1 z?wCP_8HH%(JfUQv5PXIwIfX@sS|Kc`6(AyiQ0gqq+kt2BC2ACIo0-a7B_< z-uXBkR8~uzqOEH(a9R=o^kIM}0EDM%OUR*;cluR=WQT(u_TGZEus(7s_3(_S}xvZ!2RCmj^`v zs||jsVptgf5n<{cmq6%v1%v)-5IAMuKD0d{_sq&x9U~}(l#$f}itAJq+7bnFxDvo! z4w{7)R^;KaUip3()HlsIda&ex%|gY{I*}xs5A=^XgAXnQ4N?lyN9n_vi4$$Mkk$Ev ztEvTQbaw;qO`pH(f^4Hegx5;s7<9@0k!x?KTa#le#-x~cI4~qgC3umU?D49o`INrn zOB{oj$n8Zs7nZTuJ=rc}n9@hy;Rl(6rgDthkWp?Jsyi??0nkWYgov>1s)H+V;JZ+D zh1?Fn6&-`VO;zE@KtuXwGfEC(WyAO~C75IO& zU5ZM8trFa%LKbab>Ji0)$!93*QB${x-X4@MT(x-yZee_gCeowLzMt;H6RqMK*Fp6J z7=#>}>W*d=16n$BLV#RX70uXoHiGfl9Xl65^CgGLI(Bd-6vgW1mjG%dNe;8-#X_iw zXiCXj@KS;(ZmO|7EwHtcToglt3EXHIqY{+RcS5 zC}^XT<066Ci3eBYxfztPGH3e`aip0pPt1Uza1m$Zh1k&h!3E&} zsc0Kax0?$<4ufG0IH(Hn#KLqP6cdWs9^rOIXl%NO$u_R6 zCZvmq=@epNjR%H}gJ0NPvx#D_Ht(;aNIwNEemi>M~AzMiYHj*>os7gAs#NNOiVH`ePC`-9n7|tj*e<* zg`rSFsss`q$ym1Gl@GQiNxK!~<}55j<4$!GmL^%&^dTBfiBojDa=%=37vT-UoIs|# zd53N^#nS}ha2-SXIK`~9R)Mde@7pkL10W9AngWDz0~(r1SuC4bw>2ls_TfX+4q-$4 zm~%|-uYXgvLJ0YSAw#OnV`xfJzClC+AQY7%MBt?Wba6?i&_##|jQ-0wE^Xua^|EsA zrx!ij)b`*TueuZ`;=1<-E%010I+2Hp|BMz}x&|3yK#b4=Vp`Kt&-G|1!lzblrZAjp zI-5$z!-X)Vgk7aK9?6xehbMr(M+y$a1B?Kd%Ek!T(>q}!=N*ZMrj=MWi)tmJl_D8p zf2J1Q*+DP~`?S?@N^Y2BF08zajcE$aIX1AdtLCsM#lYNq=8aZ@#{F)zqPZbE6y=qT{F--$QcHkOZ%|IQ-o8O1 z!c*xkw@wI#7_#|EqURHLmCWoDpECe*jpJH@a4*GBGe|LWd+F6_`mZf;zU3@^3Wim+ zY!!M8Qg<9G2>RXqw~Ge>*7fQSEoRxut`(3$kkr1`M0Ll()Mh|%BDm_}F`*KX87e@^zMqK3poPsA76t7Y7)7fB9E0xLZkPW5ycIKfbj~bM!s_)VV9|)#8 zWo^o&(zkSvGUR>KDMpx@c*KYb&WyZM5M+`}r# zna1^?9Kxd~u;{2`Q{ig0#H0q4D7+xB+v1G6ShCz>(NSgt0;+aM0NXt_m6$p$LdZ7z zG6GOaA+3iiKr)lDN)r6KZpa*Lhw$=MKFQ7eF_$sZ-<#iRB>!iOS@XA|?9%KuxB5@@ zsO7>DjvfP5&jj4Xr5T|I|9F`l^Gn-g`Gbf~mJ_9gX*Ropj0wfmPFKwoI4A4^gEh#; zDA(R1CFo%=V?2=anluNT;LIgdNRkI1xF6De9CEIdb%p zf=QH0Tw=c3yqB(7n4kPysZlU};f*o+AF){=%!=*kZs6vQ?qzGawtca2+2@K)z<856 zsx2PFsmpKQMOw;-}pQn@wWO>h{tdET-KY3k+|X(Kjk#k+OXvMm%k9xViLdJ_F~G%OxmtfT7N zx`)4XW#nnkx@~dPfpi=lj|98q8V+R7p#+d4Op!XKac0F0&E$&Z8L(t8 z>2HeLIvhL2kZSm_aWIXW>6HqF$k4qhUSia7!SpoKFdrsoq(?g2BTh&U|Mf4G0sv^l zp*JX59`?0Ojom&74M$=(hWTb`F3nUZCO@k?HuH^hY+U+)|8i)Y&)4P;HoilB2YO_h z0_O0cCGWE&ptxPNJW)+ybA1CaOs}N;L>*p0x}AKgHo6eu5IpLL^h6?BD{@;E;ttZs zh${MV`>!YzNwuASei#7my`DN)yOaQmbC5MouV} zAeyo=PL?+^F6eVdCBroPlW-|jWh7z4Ce)DP6a;YAgb-)d2+o(ETiMe4o)Vzo1(W1} zga9xydB-)8k>a-Z>R^?sSR))5*o0Tg;h5lkrpGnA>zXS1oxO<@kOtSf>+bZogPunPyxF5<7+J4o@v9!1Kvqn3ESsvZKuh+d6^V z%Q%f4s9o%p_)0zaHho;N3`mgHgQ1$W3M330`&^O$ItD(%QHO&`=^95&ZDT-NF%J(> z{OuIOjF^k@#pS0^;LZ?;Qz(-YJ&OyBJhb}fOk~5Jj?^b z2A*-cn;v^{xU*JZmOfrHmM=?yJDT9<+;t`dRw?ah$3QB8pG$mGHpZma@#YG-4wm7n{NPA!C!jS5`kv`nj zqP5A_2K(7_Cb1!Jt1k9b`}nuz4)x42wf_to%x&@l?R0L+GYQ+$ywHZ5d!7z%jt2;w zvhvV$s2M5~iC7s(nhh0@p)RQcS%D%ko@k!oIPmC} zJ*Zp>SbTE|!4Zy0>D#pEaO@26c4rkwnA&8g?sT`S8OA>A?`B_*PQW=}cOZHOGvv9lA_9P$B3w-`NS?4n0Zv}s#3>L0 zPd4PV-X@z1*|QyElVFS z!NJ6UWYX1xw~w4EzF-AZQzQ}C-Nn;=j101|n|yY@n+wop)fbJ5*!Ys*Y?4$)^D_OZ zpI&@pv`WalG)C^C!^+4NFfqxa%>Nq}h^aeOJGQ}qJ7$%pyh>uRX)?)96mLfe(h&v& zu}BUFQ%oPn$%Ek0=KxXEV(`LKTu4lInXHMpEv0ZyCjGD5l~7bF6rE&8ptyE49I>n zt~F_^!+JOcsbptLVhQ3JHQ3XfX855 z93Nc7F6;O%ye4|SsHbsZd`9dW>E6@!IZGYSnAnw`FJ0p0?O`(dT@gt^J&*!*smKtT z(oQuC#)s`_9C&nxPt#Q2g8W8EPmr_|8_ab{LW2ZsIs|0xP)w#rJ_?E75uh?gxHHrp z<6y(ymANY$fo4o^7Rn4gI`x$wF>z*0r@+Ufur3GeV$>@2wqZ~`Q$=(UGvm5%FIre`u6}M`Y+m3K5OS2DHf1U`a$D(sd1Ki?* zLwQOZ<(HD+x#N{0k|MixL#rN&j1l z7t91`B_<*~B1)?In`S44*etIEhw!p(8AErH8U4XA=XbwbpIIgk2o%k`ep%T{b_hVL zX%kFAo8~7yo3_8&cC;zdKRgAa<}#R(QhlvNWz4mL9ywc5GQ!QAz1uTAq+RCgXzgwZ z?|7)$ALjiu+7>%@b5|oIJkr4yqG^e>Z9=APh0Y3)OF_$=4=B z?RJVb0_GqB&&M4|KF6;2r)V006I71kA&3NPe!IkgfLO3ok51FdQVKql6U0y0;Mq#F zUC^xc?+S=VJRxRskY}-qE#A-Y{0TOb&bX}p$>oK*Y(u8d zitu7+IfWd3WzFd1tf!CIpyir&nb3B@;yk-Oh=m;#$Y^k-%e*S0)vgYXB}X=F@v-w_ zOl}V-xv_CtY5+ZhBneCMXRRJ}1BtRSW(_SGC(B`&6ZJ`f1vsdq)DFJZN@r^uKJwc$ zwuaI!3cHfnjD-V-1rl}+XoDmG;?4FSBg+;ccynp{7m2y6cI79$SqOZnU~@obrQ;{Z zTM&4>c`)U#pl-dn!v3b)ef(CCEO(hSPfRx5`gtzWV3QnRwIW+x$P2WP!59Z{?g0Hu z)q%IgG^H^N?@xHN#1}U3 zBrF@A5mcGCl-q-J@5(k>5?Z)lpK?8MJ&&p zpN(O{I^Za#FKznh>76Akb%RK!P6kj&0a!wm2+F8nsetLWJ=rvHP`TPIq^^Yw71lmS zrF1n4L1Sa561yV>IZ%s9)d!_L2rjh!Ox=?!s{Orz0414m1)HWuvx@%ZIu)#kGG{e#|t89`>mWgmw>%kzzw z-A`9l zbUOw!Jy?PrHU>!s?Ic<>3`-SI7KE6xBIY)Bg7qw9qy$p;6TCI&MB_3CHhyVoW=J`3 zEm*+&)98dH&9orAiBcKTQg7J)`pITJL+Yyf$ckuAX{m9*byyBzYUWj*t}WXjngY!s z5vd)P-M~$uq=aX5RwVLh39 zxC>HrJXnqaOV;6GQLGNpR8KZK?;J+Azw$~SPxSSU?XJ>OyhsN~Em{eR`z@GkYld;%bVDiy$=T1gZ8G_nGF;fTc24@QKr(rXjFQErgv$*G$iZ(|4EP zr#aPw&8pF%Iq!9oB&5jAvF0Vl%(oUz7CmxZzn?5~R|xp`!23ZD4 zr%H}mGhBTY#87U-+o}k6b#*Pt&GvWoIag+{?Ck>{!HSp!>k^;g;Fc@1 zl=r^%*=!2@Vr4`w`z+}kgz9+M+2SJ4Ni?!-F7U7A%OlP~ukDI!W?wb*Cp8gM?kre0 z;rH*(JZsjU2pR->^aL>sQ)fJ+J_d}7c*z5EWpw~N+n^d+)W=O~`-Q$D`aMa*2ZSSN z{;o$<9;tT-51~APZUp1a)01+ib)KEcGc79CfbMy{;Hycf6(uez=dDR! z!b*5N{>eRA6t|)G;CVag{bbhPb+Jmbt><|~N-oL4H1j#;fMEBwNwpvF-6C9Q>5hqm za-lj%Mh;BnT{yM|8yC$BVd&@B6X})^l z_UUCT(%sS0Wbn3RY5Z10-<*4Opaidi{!KAuEn;E`#rSK{q;tAKUNryP+f>N&tYA7X zP&G4iH7zY0p^tmY*yG)wm^`pU^ma+9MQ54nF<;)?KVoyfo7i_TZ>uU%6cd4~ufuM? zU9~j^9o~^JlM)eFCDp)WHDJjj&ZTCqlzp#)y>hd!L`!NVr$|fDQZIv83VyFbjmQ@U zcFl~81TFrQlN@#u21?asoNnH*?n0hlPWrn{=3&<&#!B@!9Pb0{NQPyj(dg!7TO~rpoZHGPup)H^z|v4 z(%u)4J~KON{F2&GH+CFnZE@1A^sa_*LihY?=(CrYzhOp(X zyWY<-5eO=JFvz=CU@F{Gs(z-egjnDm{#bd+7dQyGt6tJ29cOEwtY;~q+h!a)9E;tl zr!7A5`TbVG;;FTAH52SXX61EVn#+kTqgSQOl}2&@3}-EQ|KpD1bklbomo}ub-!)}4 z?+rY>azePj`|7dhagDD!T6rZPZ)Af;As@P}>e1tPheHMr1g{Mb?_zdfTD$Ba}?5;Bpp#)z>Ik1R)mMRPLuI^M#_8diZTXIjB z`mS|@-fzzFsq13vVzq+4x@Wm1cm5GO@#I&+4ql{_E#tJEH|)x$lHa#(wp1F~us&y3 zT-myfnXN8J35ZTrJto`nmd?t!FnB-h_TPES6QSm%NBTqk{i3ETB`v}_qw?f6zgzSm zzZPEG?ixU`I!i>MuV%}S%B7+glW|y1D67{pOi8Uo0HUA|J-V9jNN{!_=F)Y+SstvR z;ofY>wEvwY(z6IxsH6OG(9B>dqc_BF(7p?UuHNpM>fiB+%iB&j$j*uD61$Sj1_Or& zJ~YllGlU)9zGR?6;4$JLu0F0h^}HgpYf-CVWzVgrW1jH~BeP*JKb^-;nfgvPAC~z1 z3euY!uLOG5WfxSx1#k@+O~o_tr>G~hdijQt93?@r5L8EKT^8{(&CU>fCoc|Dl&Jhw)d6osrTQ0 zNru+1-dl0g*B$eWy4gg$JYcfb`rwD2;hC4eL=yo_17+J&A1FS5`W&0O>oL23^Ojsu zmA3rC8>At`-NN_|VfIB1Sr&Gxi)WRh*<9Xz-5{r8#z6XY4!;>k1Lyk~ijBpse71B& z8Mc~7+;ZFvmc;rTFSzj~t9{$7w%sE}DbCxSl3J*U^CX`6nga$R3TO2fxH8iXXeD&~ zE#5>)qCJW=jKIhtaM*F860GA)eIAo{l0P#uCDxVNm1%EpZ)AuDi(UKOlnCD2$kI}y zmm~8(NK8%^Bw2EDLhj92UZ0Eo^Fu$6zh0PH!$jX`psu{1=Y20?EYEb#^v~b1*&rP% zy;^P_V5^z-1u>v8k&mT3`gE;egZ?Vwm7l7^#(Hc{L|0rS_2+O4>BhO4;Ry$o6Dn2O zV%c|Q`p0D+o^`LSP`2Imgt>nPRco4q-=ncKEk)xG=8z*^VUN7&EO2H(i_-rcKS|4` z{07OkOZrpz%IBFh^2=SA74c3PudMG0DF)hbQ!*RVz##?q=LAC1&<-e2JIwYvpw_S_ zrH@DItB)z^&RMz?+jmHm?&48w=L<1tt(96EIFGm>X`J-yZnMu;d8}o#xyDqu{7hGT zOq6wdZf|FcdxK$<>98#c9i{_1~)670=?^36$NC@E6M zBTH!XwweG(Fy!AYEcACvNOjZ&S^Jz0@LPndw5kOcUv`jtW%SM5j^SS1R z!I5e2`WapEvwzp!MmBslMEC`H+*6P8_3jGIDbwtGV*T8}^0<1kbMmuhUrb-Qhcn$H zsBgh53C*;SyY-e5^sH<< zs)vRt^P=|;?PiX(SN&?8cR;do# zs&ML>>WR+`%e-FD3MPA?*7Z4ME@Q1?=i&=r7Z8=TFATeT96Nc`g|jZ!`~Akz?7Pto zvFAg+hA-`Z+c=sKB&5(?AoVd50iKHvsu@{<;W7yrl&KW%*y~25I+mSfiKcQpq-F&Q z$LP~NykKLcwHZi!b9D+)az!#wGb@uKuYJJVCwRJ6^oec-j=c{Rxbex#vT_r0Jxe~R zZ;!PY+Bmwdz#@J+txGL+Uc?ugpLqg~hgIgkTX>%?MeRxUFlcQt`QUwG>u$VHs^abW zXu56XrBN17DwptJzGMR5qnNwZln)2%Ytn}qdV&A>yVOZf)7MD#&BNZ6bx&XSB2#)p zyMMf8Q?v1Xbx}wA-QkBcszMFr0&`QgANnfo{%xbk7+j=GI?2_vt{*FLh_|n(p+CUS zK+NRpajd+RST;YrjSV7?eA zVHp7YAFf|mcoXV(Keh@FcGbv0r%c{gDb=e1Vc8>n?^<}Cu1=e;Rnf-L zb#2kEQ7z9gB+ z$BsU9d4sGvXJ*oRh*&iSy?%oyHvJ-?A-c`CzVE8e#8Aju^t1t_dGx@Uvd!BolZw-= z;Yw?kt*(^g8e^`}J+yT9hjQ4c6|9O^=Eb<2$h=ScCbM{Hhi}X6!tGTEW0Gwh3C(T3 zQXMu!Y7$dTAMe@V88IWrv#|yp&3{xfrcsK8THEh+b;^s5)Yz=)rHC(y2RdgX4CK^m z@z%`mTJO_0r(`;-0s2`UP=dPQ;*Lh&$xi-QCVIcL=k2f1(|yB)sQwA{C57-rsR75J z*rRhpO;;P6m*%EQSU0PK^ahi!m>SB3{tDu39DJW`XJHX>DuM7xC3yAGGOjsjIV$xF zr>ObB=oE8$#b@OL_tc|^yk))W3%j}qVua7V0~V4s&B|>qL;DUSpJfK!mC&(`(2P%EBhuw8ye`UR-NRkiz*Y{-wJaLhDp<#Ii6vW6DfETq2;mM0GkH!?zr;m)ekK%=&29&+)7xP zh9gGdPYT0jV&(X4Kb`9jJDyb(o5RG{iLwxX1hap7c2|2YJFLY(@BC;g|6t@Zq^>gA zv#_wxdC&Qq^U?0>f_)@C!P3YXcGCE-Sij|e#K!lp%LY7xf2&`=vfa&Ik-;n+TUdzt zuttxOFW1m}QoiCSIjj3|@%4u8*~4p>%!x`J+mTvI`cAE$WgXfJ@o5j^Imf)3VKa`u z^__K=P`e!PY-Yx2cko9&wnP1qTBpwB{GmK(P+GPlzf8~XF0%Cc;NQhvu{yTO1_<7S zo6sk?X`10_iz#oPvK!5-&e)3KvAFCO^FKSS)%^-T2VD7dwP-#3JEQ-E@e;1Qyv!v3 zqgP^T=QAFunPHY&bEvL*`DUi6{VaiaydbVt>_Wxk%+GBe5U(?TTh}2~^0a$?-rL&u z+M#X#M0V!U8$8VQ!*dxb%C`P8y}hl{k;WNk6~b`g$!`j+qg1q)mx2Wus*whE*q_~x zcI7V2tBT5xT@cr}IU_c-Wb3kPU2C+WLTuU=AJ`!*q^O#P{EdYU|8zJJT_+LwS%9}% z!K%7}r&8(k9x-OW^@e1DbQ2?f;W>;pz&4>a9#EGubQYKI&CT=w)o zYvC{gTi*B4JIaRfNa0anqh<=X@`cQ(XEL#61`~!Uk4#l?kE%6s>?CH5!VE`E+QA{I z|7-b*wGi1`_V3HUdhHsZs4WoPRih#gPIUS$k4Sau`EQ`=j(}c3=E7eR4nYeeZx-Aq zGEQuF8^8XKa_vnMYbE1Gq3xsXv8I2-EWbm`ItrH!U)?Nz^sFf5FYc_tq77d5Rb^deLTVE;6IW@+RBASoU1R{h<#hGami=N369}w131=RkLbj zASh>7pLNB|>1Q(M3uPC1TCEPKwc9E*zxxr)(~g`wj$*65{rXEe15T+aO;ZsCC?gAP`G6wx8(tAV;o9E8gUH!9Zzo7IluTKHRf`)jEuyQ6 zjuqVQ`A9QV(mHcT$Gn=jJ8em$`$#9LDUn>x4mzAocW;xmBFLPz9_??Xh~-(QU+eu4 z%|@;cW4;pCVKqIxl)(q%-w!9^&bti$Zr7tb4U4U!+@9SK#u%#)Rh7lt291}Z9z`fT z3MjMKGh(7p<9(=zg*Ce~wxHc}cIi{`rRVT_n8(lg^)bWl zEV6qbjlBPaF9khQm$ft+Z(No%?H{`HG!PRW%QMa2hpg92dUmN*ks$Ey3jrIb9X9$) zMslBB6@B?_|7#zBagfK>o5>jgokI}?8^KdtDvvC{SVmNpS^RgAG6nJ)>sd1 zY--Vysg%pRTYWeWsbXXHE<~MCR!cFhdg31NpsuJoS^JZyKrmX&+v>P_-T(Nf;{Hyy zg-X@wv@(x`)`CbSgS}!su%-aJr$Lhbeh+LZP0cf=cBazyW(k3@rD){Xuapjy1}0@f z`$zqtULL)o$*jNH&+UeO%t_MaOG-yde}(h5JvF-~*)AtEwfDV`P*J*mz4UJiVCL19*lQoSZNHXVnnG7TP5n<+=H5k3tA?eU!#Zm)$S1cCNTH)Xb>RCP8c6~( zR2;k^;mG4%@yDV&K6JNgBA+V67s86IIt&8WLTtR@*}+|qgp&hdDQ`1QR222MrWdJ? z?v;B}dM#BSwpaO!6)pd51$p9)Zu_~tGoOnZBU`F3tJSFJ-{2m0a&tIs*vp>Vk z_WjI=(OgL2h7E^bZ>l~mi>NNl1_LAii2Zu6{RnRUkTcit{nfXdu>svn4t8n;p`dLV z`_*jO0{-H0fMNX%8nS)wyVS_uZWe6?a`^D9RHCM-GP$|4^8S~#XFok{q!#}d@sF6b z;hvOV4ZrO!?%kq%*gV~5Y1b@&`Nx#Y(xU6P#g`QK&j&C6T z#Oe;lmTYl;WF5~x_3V_RtR1!?wsYt&?y1pnvgGhw(uJO{Ra@gXy6j_j!_YFbqO64v z-wA6956bvsMnJWJ_xngne0Z`dIU*YC-YZy59AYYj&lNb)PgP6co3O zHM$@E1}jO{w3lDkj~`cPrFk%4(DZzLn-I~+w&Rxgl5PompY^`=XqVRDNXFCV08P9O z1qRFaO>vuT>Qb)U=RIMhJrh0QpdQ3c^>&=AW6W_Sj(=_at89gED*8u~*3e}8LlXv4 z=X=W~<;2?GV*^Wq3T6gtt~_}eqqs7o^JH((()^}gj=>pA%fuuaLHt#10j!XAWGOg_ z&OYwD*V}N+@J*&IpFOc8H)_DVv49?!%VstP#HNUs`Ifmqs`e7gmWdgS*b=2%^vLH~ zFCCG5Y&xx6b>ctK(&FELG+H&qMHl@e#!hx_mtEUJ5e)9GlQf)Oiz~slGFG92(>`DuJJtukT7(3WJ9^TGm!j04+26kIz4 z_E6A{T@2iKaPxIUz?>`m#UWdaX#+c1%4NWbe6t$8nX=V#zF$RmUi|vRx5de>En>>r zMS;-x;r|A<1h9}g)$?lqx$2PK&kjVMcXaeK;8mY{*I12ljg6|td<<905UiV)zGz5| z9QgI%hD(T9=l<73P3Kbw7yc2W7)U_7`cgNHwnSOi88$_wezJWZwr*ysBEu>|-_|qF zV@|J}e^PH5>3=l-kz8MwnK0me`ViDU3Tyfe8De}%{FU6Jv%a4+e3HG{c5xx5^eAPW zp`}?DthJ^3$QoME{$2S{qE*WC)s$C(FdwC;n40k1*FVafIkG;^5{%SdmqS;fx~c0r zzXc$F1UY^FWfys+VC|5l;adJJ->kfv&%dd*4jv7Y%*@HXS9m1t%G*y_6YB>4LbG== zs>V^`RY(8meUhywcSYfF_wCfj`*y!=pUz>W9#3?>{<-+hZkW zh#$NC%$K@gqp&wK;wQA|`t&BE%*Mp4fEVIPQI%z9XU-FHW#IgW!xFLGk&SshbHT+f zH+qO&lQ&rL^ z3+{SuP4~urgqdh&{B%#8X~yK!=ow}eUXNQ{W5#+N7>l=g@(xfwMqK>$MCjzlU7JFD zRz%^FQD?zDbpt7%OCv{2Av-SDK%0ip?4`KtbLV0Q79uB!=i{L(VDmrZADf7{q<{sQ@Ew^rP$;ddcf zr1p=PZ1+M>>d!`lcOS_=-O{%wwf{aR`Ia?QJ9%A&tw7yhktOo&C<`1kw2)w7qM)-k zn{Au#Oi%loOOactOW9*Z&z5FNgFF214Xvh%*Jj>+PbVkY(2O?=8eRr+HBTPG@f9j zbiK6P_^kHPXp@xKk~oRk4dYul)vmaR#p*w&11pqn=1Cfnko1eC%gGV;*Ar@V1PZF> zFRIl2x?%tA&G&M@``DfYy#Za?G;LKOBV+ouG_C^iYIO3jtKIg?-uo6SKG~;90gFAq zxz*T*vpo10ql9j|8V#rOxZ2A1$__J!m$1h8!(Y46N7gv{yY!zG)_KkhTxskI-4$2z zzgeQE?n^UB`#r946AqP-c{Z{|?__<8U&99_Ni3%0`E-fCw?oweMlxAGpO$X*5|h<8 zP1LYq(?1$##i!oyro}(oXGdD&uy#2OjcJ=fxq8<9I*x{&bT&=(r_9r9(wmCsO$ z)2VAFYCj5MX1a|$KSX4)cfAPDA>IyTkq*_8Pb$qNXou&nVE^va&`s~)>leVum09m4 z)_0#-?tf5S5EY**BwBxFaHQ_b{CWxUmg8^C3>f0GA5Gev^R=pK#U>9SH}dZ5j*q^` zS)2%ZP!-W}pn_sjel#?0S zVow}Anxh&?Xqs3R;FH?v7YEbpD-h%j=#S9p*G8FGOv-=u3|u>Z_2{Fkz0WOTQ`Y4Y zW3(nvtIO{X$0fQhIH_^)CN-sqb+Me!FK?cHdXQ)(3gAoT{Mi>PQzK4WnxCJe{G?s{ zzUMscPFHr=xE{3ew#n+dhJ}jBZ{GQ?`-O2i^rfB4ltuj`Unh~M)<)&cU$MPa zkiC8x3169OTSh+b2Nx{82h}^LH&LA%gIgteB*?d(r)@8z%jrgj(F@8FR&lj9R912a z@$u--4cm9;$|gGcX>DtyPtE>6lqH47vJ>N4Y?XN{^Pul7da=`Nn%u zwPbI9`re$kO=8C5#N=1z@2wgcZQ_49=33Pk$0nRQ06l7Uw%bOX@BZH8?^mkwL+npk z-tf7vkFVNHao!x1KRT+lyT$lq*1hdrj}Ct{bg=*84o1qEC%-S89reFDh-5}p^-6lIfw#OCa*Yy~``BvYO=XL$E z0CRX?F#n*zRb7pHAO9>hz*eX_e13PMQ`hK5&i4XxbDCLN?bsUj8vNSDz`pxrb<7XV z;@xkSY)5dv?uH#qjW3eF_FK{lT*vCs$s}>q`b27(LdnO?LqCswj~JjuTPFO)I(U$j z!Ae!!yoT}ERcl+GeddZMOt zKF@!7S({E?IkKAYrAYk> zd<0yJxfy`Yd)~$W_zUIBn!Noj>ZfO(%a+l-fV_f(SYA5Vrej@v*UEKPx_MD96V-9L zroqP7_@S<`I+>86kUfmn~NKcQK2+3ZjFk>D($VkV=F~#b=+&z zuGyNQ_HGcW#AuBsMrqMY?IQLbwfBkLoBsU%f$yB}obP<^^FHr02vk4ng2e6% zOcnOQs|Pv!-r*L(@Lk=wegi>Xk)7Wo{Un( zg!IjY`!Z&v;gD_**82)&J~xR|EK+nvvF}=zu-w_C>hs7~e8LS)B0xUiX;x7BG%{;V z7AIX;iwWed37xr*Na%u8Pj{(*PGssECXG}UJy0sY+fEWoyEbXdCVGoKn6^mE)l{T5 zk{sx;SbS)zniKcap66hFDe}e|`h5!z1An6tzMEflMBmCdGdtLnrYWXZa=h_gT@`nM z)CzNqcN>t3{Q;^U!jqH^2dNnwP?)y(o(N!LiNi-m(- z+!A&AAMBausQ#?X4jwEtZ0+jo6GLL&w@sG_tJMoU^nz9Zj!=RI|1sSEORduP*3L2a zP&P9CPGyejSFjnz8FBVL+dIyVa8+PE4m=ci$3p&8;N8;uWLNde-~TQ2_P*#y`Mj{x zE&Z!L`zMdlz+A_-Tgu-~Kr3Pm(y#Cj2^8>CC-SOdjCVj{F-bkWLt`RZcKYG!>X+Y< z5+vzUVV0CRXItk5F%44Nqc=SE7RtI~^C`a54c~GXP1G_%;~Z1xcqMJe#*vjY0kSbMcgIC$2Cjv zI_wGa^y=SNP6bB1V!y2%-}1q9cvphzG%aoBnj4Z81t)>SNoGg-vrkn_1%xdU^~j+L z+{&sp_%adc03H%`3_)i5Qg`-m_kqX2i>sBw zPTzBaJ70I>&M!@!j|0#TPLQt?>>mB+QJ&MAS82xvvZ-C^K&Q4#!Rs~c> zX={}C?1213cFrxTr*kwLw!av&TgYZ@)~`ESEZ?cFc6v`cUG-&RHhic3r(AFf8k7S* zkCkHLT#XdMI4I5{*Hi3=4Z4;n?NbAIy;2Aj^(ASw9hkt{`+b3b@)jlq>{bLe5q>-6elWWprXGg zZ%4YrgVd*Q${7l2$*COUh{}nrRMrme6SV?Vjo~|Xl4Xg*yr4>-aN8^yczlE7>)b$x zHhs0oUmkmmS1A{G23zN?gw@o+(m6n0zs_9WA3#&7KAXHq&cS|1L@dWa`1ts>67zcF zY_g-ovBjZnI`>ti)_AO~(s*~W-)6BVc0Y5l;S^Y1A7A8fh18`Z8m+yLT{TCl63m*0 z%XRW!!hK#nbiaFxYySb0(WUuiF~v)BCOPvKTFS}qE+de}zPo7~#ZRN(hzXJ7K#ED- zbHSF2yRr*dJK}9Frr28DQjPxe49;2EM7xmwN;i6bDpmSYSZcI8?k9JLgwgEFn&l8E z%;Y{-fSC1pc};zUw+b`%$ky+rY=3~&>M|8(GK{Pwa&#WA>}QS6g&4dbc3Sz^CGY|B z!P`j8K&BO8tXl-7Y=KZXX4WT!2}TU*gb{))3@2xG5>)z?_!nHgyw@-a+!QrH^K+sj zXqq0raj`Jf+$zmtqE@71EvEKt_{O_gbYaW*qZ2G7Z?LJj|LNbs7f)86Zn;K=t|WCR zEZY>(-KaFG^?zG_YqA#{VyU3(lvgNBZT|fR)yKk_jUXp76+Uo1m-jaihT}Y`9XmAI z9FOSZ>i!<+4rBlP%*~I_kT*Y*&2a^PPcChsLjr6MZ`Abg*Nguu<$d(??>3dkvI>rv zw0z>NXRr<)!;&}CY3_ytQ!uH)-RrmjpZnW)Mu#!?fNqH+pLIWfD`~F>ebY5@r~L!q z;+ivJ8P34F_4m3^cf$Mij1U?MV!G&Rvl}P6NsXnptb}w6@A8@L@B@_EmF}#l&Pzk3 zM88XL@39Myb12L4b-%;5ulPwA=_sR!dGBq~zNF&mrGCBuYWY0JXtDHw$D*Nhv6Z=| zuWV_vjOmfar}l|&tlUBm5o=O9(3u-OCza)7fR|UsI%;A-=(Qct=>=bl)aX-W_N>hc zhB+HOO1tCr+o!W%z>TOzb3`7~3fVm5|Td#JI>u&e9e|x-RhWY(NUUQ%S7yW>L zdCZfRCMY7$%SfQdX<^p!t7qA=50@5rJW=)rjnm^PwHF1Cq^C0OdH!7^djkS?co%r> zhZVecsP{8O=dpma#+zaCd=O^uiFEHhsoR}JP`!Z8G*(B+*FCs6*b9`^2b&9jPowdU zr%irS{X(7>xbQuJ_@g$MOLe(dwYCuA4-Xyp5O_m-Hk*R+aUD-j#>m#~VB z9`oBUU)8=rbw=KBmWT=tP*2&7UE6fq1ccq-EO^!Myy0Ds%U3_L4J4X>9kWs?#-n(D zH~V|UsBe%!gvEL~;l%mk`uTR9V7Zy%$puDw=y}3U%f}lX=Q+1*%l7c5MTCS<|I!lUa%jm@>v}@!n^ziJc<7wxw3O*ltwN}_Ny>ImTBKX+lcWB_wQf24Dk1cX)M;r5#NM%YO!X+2&VO8Z_i@||NFnr5#g>} zH>y48+myO}7)W7u1VIJv8a1^mIbP(ws_SB`bL8}eDPk!syVj1XGs1=?CQRTDVEv*6 zSkRFRGj0$Crw#Nlq}SitfcJ1){qVQoPRpg4#}0aYX9m#zfR@M``d4ISKx*|r1~A4+ zk^1I`gjxqkJ4^~exCe259XwgY;ms_J6qqy+H1;-whX_PH{kW8wyc`_7u`W0;J_moC z%~%|i$S|KveXD}Q(5R5BpIhXkmt9KM^}phwf~KxOt^6GMFVpqf*ajX`ah!9YLJWO* zaBVus&kkZ8XAen6trI7Jz9r?$maYd(jcw*x*}fw{n$`3oe9JBTq}?{ffhQYEpckI+ zsJtzf3i@(uB8~!Bcn;5eOMbqN4l||;f7O_|!gnU-L3-%H61A`-!AO4SmY`bj)nC9n zk>UFv}adQ`^4%UE_nRHLIp0z&MUKPdNSnP*(**TPnTsn5^ zAQYoxiPEGadZ;4}8z`hW0LVZ!EEoJ#IYBsH3Oa_p_AoHTOS_ zU`u#j+%GENxq9rzI+m~&UCXfBA&u^T8`Q+llFk#jpR;b33RrfM10`3d9kz6{m%06C z4oG{Jv}yZ}v5>-GiJN&4;uy?Wu~6Pk$Gk3jcPM*;1xe|M|0!zgC)*=c?sa!AE}s1xUCupUQC{bH@#VXzuU=#`MoWYQCYCA+Pn0X{9`%^+ zE1Xvs%RJqySZ?f+c^_$RN4b3|Akzf4Z=Uxan+F)W9qNUj{d|gSSgo5^ zEzUM3g}T#>^kWSR!ZgOOK9iplTFxDJUIHu0WNHPpCmlc{+}qb5CT0!hx@ec4t2Y;h zWfu`jefejC+lc$ep8LaUf<{)pHw8)@Czfdp$?3XzAENVIf>QKIhPwZ;TO2Prf82a* z7^5ymgEavETke72{YO*`m+ol?($80b+HnO`$COix)~XEo8QRd+=x|6`{F@}y06{Xj zeYO{}ydLN}ILBQMdhoasdofM!qfyrfGu|ZwtYLqDw=HeZDmw48DtgtNG6{qvN zMsuiDic&jM1eVa*d6yG4+k>`HldBqhC~QGdRXe^Sue|v92M|}}d$krU5E+)s!6I_@ z{}0HzW4V3?I^_G+CRLBj!WoxEAHwZo%`7h3g@YMaLVpNS6|Sd(mF-R26Vz+GLUVub zJsR+N(AzrE8C|2K6pv5MNL@Lx=oq^Xp4&VnTM9oTgi7P{hj5@NDuJ*Wmn}%(IWe z!2GEt?KW4ZujChC7qYvK9IEj;W4X`fzsb-vi+z`uHS`J^O09Q}eBRPIjZP|BLwdM+ zPQv-!VYO-X1U;>8XH}o#jvw$0 zY3WEOaobAAbC$g=i#W`nKx|BA+-VZ{&eCQN1PGTs>%imJdYEm43a0a*%)Dc#J=6L+ z`HpOR23Je_F&4BHQSo}d56G-4GcM-q$+uSr_`R;a;;0c@uh;*wSQM_fU8oh=_U*qv z*GE9=hv|OfROVf?r5>&*DzfTKip}o$(@FQ@dh<-HuM(h;p15Rhc=gS7+RjNc?6_b4 z6FNzO*sjo$Lxk(Pj+DCITB3)qf{0-CMrwC`I0KFwU%^vBT&uCN-$6adgk5v2?>y&z zV5IzwzW1>+{&mT(Q1d}^m#>R|IE85`TGKqyRW2}DGbjdf@VA#~MPH`h>tItQ@`!~8 z=6Dqdvl;b zr#6Y^u~L>+&oVEWnj<1Ak0KJ}U>MK@C_koO?(>$66925g$;*bzQC!AKo2Pnu#dBJh zN3^rmbU@`N18lJrDQlJp%T(WP1lFbov$)m|zeiJtqY4kjml(iG9&@g#RZ)1nHkE~` z)>3{~HpjX1SOiw7WT!FLIWhgl2EKmdwL)Tj>bb(Zt3_UdZLK9EbR7^D@K&#~;C?OGqtD;Xlt(0k%zs)(vsJ|{^oFOeC-7W^Fuz+I} zf$IpU7F_i?B#+_}`(EJk<4bp? zKd|{@SPSmv-tZ9@?FO3gymV<`Gj93oDDiIZK&_ZX$ErxvK(iR^`K&dgvlMiw{yh}} z{95m}MkEc`45a4uVlO?ruA>W^U0cO84{pAw&fRgkfNfq81($XXu4~Up>wPP?7tgb@ z@u)+7*@>YuTfVp2L6I#K6@hP6ANU@5KcIr*F=sYy2$m{o?MEp&a{8*d3hEa#P}%e= zhcwR+Lxt?m(xvS65bZ*RQVEG#Zl@6S%cySqdcW^KM5~7UUk-3p%l~~&vxtE)Kwn1kR^Uim2dRc z>ONWf4`7se3mkJt7A3Jhy}~E$dKmmmvu}!|Q5`R=puB_S$+G?WHmrlAJiWK3^K<6q zFIbJ#J0KSwy8c^hqrS#XoD58)EUqtP z3mvc|Ck+xqxp8H{?yUvd!Ny1D*RnmByrmf5+Hnf4f@->X3%mPax9BktWFFgiZNYxK zdi~OJI;30nr&)t+BNfq&WtV`9#hGK)1~r^#`5omJ4dUrnUYm~`*ru6m@7DU(@}ywY zMQeLO@4n4|Pg_>;KvrK|fd2#Al8I zHb*+b!gP`zH4wA7)GiL_GVwmyzgwE8nh>iHA6gIvVar+ZZv-2AL908F5)LtCo+8vo z9N&W8`ED$4Na{$_pMQk*|Ei$@@maL?RreK3tquMvucNFux!SDkM8j}xB}Ud#KekO; z1@km0--fB2RmqO}!1HUSB`xwl!Ms3AL55C`0vxh7#&kDnTi z(f*twwc@B(Qr6=vYZ0?*6i|R<`vD!O_9ge0TIdpz`)>sO{^L#8|2A(Z=^W}z?uu&- ze`yO!BiV<&P@NLYd=$M8{@pSH$Z`w__g-c-2q(YM{?$umq~e-bIufz)+ut@R#L!TY zS0&%#1%WQZ6ZH>*UBm!HPu_TJc_j9CiQ`R)fHdJ#?AWGz(u&(CCbf|se*!BC57Ybu zpq(Z-g_d*&JV^SnnElif2Xz9+GrhW}Q2or{*ApL)!In#-7qw|BF%3MdP&M`d@8!|O zXe;Ut`M6SZg!>aL zPX)Z+-KV^A|B-WYI2#jwJhmOb#AzK%YuC`mmewc06*y4i)L{V4%5C+jdQ9dNFxm*r z9^2*sTbzET`e}eJig?#&405aaL}G_v6K`VC%6@bS+QlR(n0KHCs$1<3fM2E7>9O6X zgsy2HCjUOs?Tz2>Q9R<&M3;ZsM_JM*0R>1 ziJ0E++C5~{c$dAibn2U$#itc)S%|E_TWR|_B(J(?C8q#Y9k3Qvv|jVQW}pe1Qf6oOU5JjH_4Qm!?tL;}9)0QU=1mf*;;RSU@~cw@jx zGg0oZT>5O1%R^bm*nr9|&yce#%RvgDrK8YGs8D4100F&fCD~~6uF1`zO_(;LE)#!Z zf6qMgGAaap@K3aOuu+>8{a{!4%VXu`wFF}=CR+H3VdQ5ls6?E?tCksEgg?-aZoU_9 z>%a0@fpt@F=;YZtL&K1lt$Z<;{SHUQe3?RsRa0e}@|-}|{A%=G4>^Q!_@%pM{He_i z-Ltec;r>QJ2H+4Ij9)8)1E|l|pvp&OkLNlBK&$U4e6#n*CcgA|8I|9ti2(fVry#NA zOX4!~t5z=l249}x62~VW^peJk1Et9plAr6~BfvUC>Iph-AqY3g$evfUWg(zE6yIJe zd6~A!D>Arh4i4}zkAEMZc$zVv`KapSK3B9>d`5VEO({bUa)A_Vp>Llwt@^EAp+ zifmYZ9K_mfqK9gh%}kmKxDvHUU$PZ6Z2mY9_6z?F42+zPSWSoC`HGw9KNRU+cH!LY zMaikQ&52p8)`rjf%^R7jF=0j!ph-=m) zYs5Sp^-9Gq=86yzx_HcO-xbXd;6Cy?uymwml#@?3UE2} zUoTC}g*sprSCB8TCE!I%Vv}Q9vJdL%$Yvp18Q$;MAP>U_T3j0vM4y$W)Ef1kKdNIy!st}(-)v@S6=RM~l=UarUl z^DvP}l;D7v+aCb)^+;-fxn;oo!g}dJg231p}UNPsGKQMS9M?Y3#SVrSbqE#*39K zFS3;s=^VP=#K8xWMQI1wVP5*-aF~~tPy^Uz`43>~;I-Az#Sh7)x_tZ7wpUH|Y4PDk zF~?#c=|b4vN44iZV0%xqJ`y3SRjFfNzsTZ=;bB~4`oKG;@zi`f&Y87A&U|wfCfJ{&%o0-*L+#$DA)Jg7x{4T*@Ave-rcv;N2Pe6ACiGQqyEt>n?BA z`1{b&DH;OJ!`NUGMSYE&$#jGMQ%BaDL26;_?je0oU3Pk)BVAJ326Ys!R|76CUf^8L z;jU8hzfohQPpejRW(Nh3|MoXN^i~p^Op;kA?`Dzp+MCw=YtMaER2?7njbEESFRCSP zp3V$I&przLHOUM;Ed$b)p}6)=do4Uem}$WT*QG->uhqL5dmmYRSL1;lw>Uk%G11(~GMFnU|c#S)66CaMtDZxpFm1ULf>;SID z_*q%gLizEReP>~T+_8^OhF`RgIU7N&f2>^DaIap*hi{vLCz=#j0H+>yk+pg$*2erA zr?GXX71ne!@>@GggF<&x(5qvr-*c^I7= zt#8y)?%aPZwiG#m4IR@~T?+E-a&<0TMUAMnSiQ~pUF3htSy=_Q`!J$;wEwesIM#jk-}6p_q-bQ z20w_T2hT;ws08=*s8f$Xb&8TznJqv8=@aeyREN=PafzyNe}Ni>^{YPK+Qm4Ki&m-n zI2I_^86MLX;dO^7X2Nt&Y=de6cJsUfLcB{1vB&Nc3N-QHCr2%O-E)a@l(!m{6TN=W zl1%~m@0K7lSznGsFD}G|eT8}W2a${8w4yoOOf#h{MIL0^FUdX2V8HfIZWkgg@HC=z zqH!_yvu3kgDIoOj7@o-O{aIHs%3S*4?O-xUUfBM2EmVx-A70PozI1+<(UC)5cc{)W z!;0@)7zsXV=+-(#e}9cIMCn=|6o;{nUkfhMpg&Gj;oEBByZ+g_I}|6{k=O*nJx$PZY+M@XEl zpJGrhoQ%q(&QHv3yG43_$r&?)dtT|{U~-x65+hSomzK zQSQMlDB$<`+tZdAp{d5ph_TGX*M2lQzHM~^Zr=N0QABuqtUTQM>CwySyS!h$qL*|{ z0XpA{on7at=186@;w;)BW_w=#tr+`T{}9g<68%HHG+F2W!A<_7>?s0-N5hgGmcm zh;VV^x-_n$=%oIae+uq}`R(q$Vb!j%nlclDew#zs|B2}9YSpz(tJ zpfvvVjuwj$uQP}a<6D8{gS?9t`Ap&}4(rx&_+Dk!3Fs$TS537cCWofAUC~S2J+KY! zMLzmOuu;4u(0abQGb4{`&1DxVgg61q-|0>U`(-I$1pw*XD)~ zP2nWs1M9%T*%t_nmZf;=L2tmgcN{yF-E8Rm|raE#kh<#gPW#XZi{I*yd_riza= zq1Dw_t(N0+>91QUgm7MCWC~mQ$FKVyT73ergJ9d)BURzBq8pA+{TVLIY}7;~6m6Ju zS2HlJF6i&di8cqp{Xy?oLZSxEI;a((44w+8)eUUK6u+NvMU_mf@RzHOdXS;};l3Kq z#;HebnXGk*CLzL-7(W0*x>J7sSm=LV;f?ii>I6R=59-4(gIrI>Qk20aI6b z{m0qYl*UdkC)5-f#4VVQ#d{a9SA;CuEz`Y$4i>9ibfi!7TTc|}?r>mh|NBX3b^Lrs z*(zT}r{~ozme!4Gp_Rsqhd)7CtjGUa*FtQL?S?eOA8HIY$~$@S9j)sk`Clq3Tv*@C z#$lnC$+OJ)A#)JimXuQmZIBw7}7h)o@OHyusI zha^QjOE;DYf;*?LD2vzD3tx|cUqD|S$^ADv5Oh(P^hTQG9y>|Fj4LTVyeXO2`--i8 z`y2~1d^C|X>YESqV>P9p*%NOeYGHb=83=EOybK2rdYYtfX%mup4H{i;b(OvtUA}#{ zHwnuc92%q&gJk3`TW1Ks!0yY`+Mn5}UF$mLf)Pi7GT4Wz3-;>3+@LErkanN!9P&2b z(0x8UrS+s@i74br^DpHNQHN&O0`KX133eXzBqYWp(<&Z*y59~@(;IeZO*)WBiV*t2 z^byruze+=<$~&rRp|F5_OIDU=1MM^>gJS(NxUY;EBG%lz^S;uFsjSMWq*T4Nr4DUt z=UOjznOCz8S;u6Zcm@vu-y$lHvwD5bcP@{w9JbZJoIjPZ} zhYZA3UUc`xE?i&NeW$aJ!q}ODvk#F}OVNH{4%X`q8C=%j2=uG(4w* zdyGx`tSPggc4RTe^I6O&PW@(xQz5~fF!Mm%#Ke+9Yn#8@zR%bc5+-$Y_)Fieh~ieh zq5B8GX!NCeb<{~l%*^@JwOL+}LB)yBGKnLw0@6pO$@2v3oW&R1$0x`Z-fqx4=9}z~ z%R^r?q4QrtZ3^86!IJ#7ZoPe{eWm)1`~ze5^82z}dyAM1!(5#lzNV-Z+Y?j|uWomP z{H1Q87?11l-WgUMt^hQuR(~EOW)ZAy^w&^0e;JcaN&X^x2tmOn)i*Mi0G&)Ux_uJd z4RR{RAiJbi4EX?)>h$&+St{Mr?gkcfwER8Zw8~VV%7`?#XJn&q$8Y3;2z!Jx4eq*I zOL1m1G_Oa`#UhY5q*_RRc>o;Q_d>T%R#S1csXtf+DepTRx)b-A(PHgm=N0|O?^*Oado;;>YVuNE8oQgQpORf6iD>!F zYd;KHs<2b87T9>brX=3T4I;kuRS1+2bsF+KOZMeht@a72WGnu;t#mW64OfRzPwV^Y zeHKm`?B#Bk_Osho%lg5rqCatJIN$rI7ejf4JP+&mTXmoe`86zKsbUY~)-FuV?qwxs zVC>fD&&LFHO}hF4c+Q*IUX-M_H}87cC~SjP5c2Q_Ga%{FpwO8LNY64 zJ7&X~(SJ`fAgXf~H36p?R@q>7`i-SnA8$oaWn43kduT{W^p@r(seeI}EYJ^#7-@b% zALz>R>$HBjN%VrV#pmlZF?5?3pu(dqevQdjFX{B37W^QuR_<f z;>$oBJF4{2x919nk^ZVY*&S53{UQB-0m7JmUn|W9r(1nJI<{N|^=B#gU36^b zqY*ccXs&o8ojOxuUa7SCQ=Fm9sz;$G$K?_fSC?egjuqkzd_#Alcbt!oVHFknMWf3%2vxoL%I}Ta2r?y#X7J`* znqBpsAk=BZS=`Muy2cCBGMCnq4==qm)Yshk&lKllF2UfxE{7lN(=eH<)hGIUvc<(5 z?x_G9GD`}SC9h>m6)UpAVdU!r@jaKLsWUQQ1C7@!-#Mn@*-LiWa#u$w-31kVreYB| zdC5yq5RVI&Z{c=q<9GGpw11K5(QhD+f+zJ;4rpsZ78JMY|M-|p4-&jRa`H5`PwNU? z308n>gQcn+bvMWTHc5l<>bMt0uSa;MIR1iIZ4Sl1KWj{>*MX#@O%xT)E=)qoSC;=J zts0UUO_EPy<}R3SnR+RPjgp*&3nYC#*9A?D|8=7kBx80bQhq2cX5+pGX(2`=k+MPW z_TdMdDW}AEdTX)d_nHW zVsO|sxydIT5MV?02bW(bXAhxfE*EOtiq2r9z%oR_UJ_^03bXik;H1Qn{M{f)^gj$2 zUxkF5d9)=?!AAY0vw%Nv_7n;r__ww*-vgxB@^g2%qD>Vo5=cBHrx1B9tWZJ=hOkyZ%P`{S*J&+&twazZIs~ z`~eglS8;hU3qq5H2f>NNmh$6*?V1Xp*q=wm5a1Vf5fHA9{_uc5S*>( z0&8=bYE&`Sm@G2&GYdr{J_pv7}m>RBZKhbSn9YW_pwJ-feE#&2}_8E7K(}Vca zpRcx2fFF4?GXPlfnR!uw%E}er>PI5J^X2q&ayP)C&`Q9pOqZf0(xO-!NuD2iG(gWX z-#sN|mfzT|7U5<_lHuX$u(H+@Q`lvC7_Q$wpQ(69HP3`5=`P_0FICgKZbhmP?6u5r zaa_{`G=y;IuJygn6L+q9D6H0nKj9CcAt5o0nFB(SCxQa#8Hbru1Coe%8S6@yG_p(Ic+Z|WP0K?1r*_Ph zyEXUL)zf?P^oP@&ls@0`Qq)B5Z`OX_hEPB_$ggRV5&I!D+xnagiYCV6dgxvy{$O_Y z_QY>pSQVd3@vZms<^@LkenB7v`b%Hb{Q*3?z8$=uveA)&z0}Jl$@M!oI;52?_G6Bi znJE<^sS@#}5C48Wj2@v|7nCAZTV z%uQ{FB(>}vFzRQ1U#U-_xN^5Gx2CntfF(UW2lyGIQYda*MdbT@<;F-N?7tRJ3B<<8 zM!GOFVmR~z&7JwNA1PS6*zsp~N=TPO(;=!Qzn9tCiYd@f;h@rR!G?X`373um70YBE zmBB39zYA%>G&8427`x|&y)q}ec!DTaRak~^VcM!4s?Vcl&DLRY7|dGbuG#~R#0%c? ztbRry-5%APJ15VO)x!1%`3@lMHwRUj_9Grrce=|6f6WZ5soi$TgvFp7 z?kP)e<<3y~uc(c4o;V4Eg04@8B}T+SHo7NwR>Sz@y+2+p7ZDssI+Gp)L0`-9JZM3B)7(lf`iPb=F>A|blt=Abt zLLrKN-ZA=z0x`CQKgL_ny{VmgkCP%gmY@6R_!0GJzH@he;DKaN`0I!2eIe#I1R^1BO3cF1F;CbxDY$}!& z1be|@o>m1BvnZN74_mgxhIHxL4wkuf)t80kOLllYi&g);rX(7*9`U~A2)<0?`*LD= zfPRWYnecrD1K zo^|EZT&tMW7MnY4(RrhkKNlnc4N?{Qv2(= zLOaK@2OTDg#Ru*Pw8$6+RvzGcNB27nSM4nXMV=PGlhpmZbR^oUp90MxUZ*^ZlG!Z~ z6X7DKazA%Ttp%d52j`WD4#}Yp;ocTdCCtW^tVMNhUh5h1($J{ml3nTWQ#8=IkzJ*G zjL=-D6zx?ew5PR5am?i;{2!Ve$8C!6ZbgR9AZeC>yF{whQxP4=C7s4*_~qc&$JZDQ z%=*yV>u@t$^=1l5ecUS)C06wy}$gPn~3lwSguT}Pw?@~!!?GJVR&1>*P z2eajLoN;8z)!a6zcx)(SPjycE_l?TR^{D4nehUe6YlXK#?ZQIPLAQPrdIZvFDr=mF*b4Z9%`*8!^i0NVFvdG^+#Kk%m+{xii-{8^?zQD8^~fmfxg>-Vho zL2A?Ykc4^4-jugyi!xy&os-kZC?f8V+mZQDwQXt8+{2r+WOb$r3L~z94->o7gL%?s zFV#r;@+$lLECp>-WBxFrMv$SD{ZK=(vdMB|XY3;ttGWb4# z5@OU|5y8l$c9@?u(op^`$VE|1M)pHm2}r?~I%hNS%@F1`HYJv3jcS!_Kdrp|@CEw& zJ)rqQx1yZIMwr~%xYsQ>=V8ri?awyDV3@qXK2>}F&eRE(M@7Qs$||nb%=@_v4#s?V zE^C9x>UkvIWoWK5*33a~p`tnRDcWSz{6$|u!)NG=px7ap4?*h{&JRhLWA( z?KtKA8w{I$5}rHm?PMjO2j+bcMJ%@Ob=O_4*abU+j2I)p8^+bTMGRF{>J^h-M(l$n z3`^^IP14c>K0UxjCs4fAN)g0bB-sHA>_7O?jgThG4G?1e{pjkeJI@6|iY_c}8GDeH zYB4HlA#VGM))t0w4XeHTWSVjBAX_<@{4;mHUd0)3@{_&ezfn~-CK777Av}p1NXvTD zXr=9+@X)*N-m%-=CLAvz#|j2gJ{`lw{#jPU56Th@&3^zB0sx@#0asSsjSnFxyg`FN z?*mI@OlU;1tBSHN7hwHZAl;&DZ>7=UKM%@zCWm~rIqDFTDz8JwHLImqkdJj6N?&LG zCk)YxqPXU zN8LnbQ0VRaRe|+p%}>`g=2f&yI4$0WHmxez>{Eoty=|ts7Jc`rZIom0Z98JFN{kW` zbE`-jd|N>&hrp7I95zBv71xgM2KzKA<=(7-3StjEOcm;b5vg?PvvuSi5*Y; z^77D>GUBV*u6D)SR@tSW`szV2noDH|$mWJKidDO}- z8Dc}<&HL4+f56U5BK`S-UoI(lph``IpV|W15I8xV#v9*)mKEqIyX|vSIecA#m?PC< zUt|{AHh5~$7j9`X;~P>m+22SYS*7skzK#w z|LHy%I*sl3MqXI*@+9_G`&#VWef1b#<~Ajv$%Pq*-6u-#lpq{e(mef?(&PdiOy!L{ zW?{$Hzk3n^6jn|^eTFMF?Z^zrV-(Go>%U$EHtDOE<8(q!moZuhU6hJAWfY6F+OOH? zAjpQ7N5_H{PR~&pGtu?n%1$npZVL)~XV>g&-jmc)cbkV=j_bn5%iA`gs~{Uiy9!Er zpQNy~H_#y=%Gn!va8LFH@g?`z@L_Z?*3>4lUAL<;G?yaq0af;rBL$yh_~i~a)3V34 z!D?-5E7W0fNc+J)n4QMY=((gh=W9%K^K(Bc!MTPGz1vHT`;GEk1)@d?BFq=(do)bg zN9t&D%8Vq+YMVzRp*FbXf&n1^Zc)jqz1B!bARs+u*^RXNr9^CL9wsm58F-Rj;6e?) z`x*ByoA4Cd;j{!>bM;?X?DAhME!+o*&>5gYcLGC<%D~|Y(c*yiJgM^g9{PJiT$24p zA4<+@!$Kb!8U3X9vY+B{;cyVI`?$4D-jGj9`($i3|2KEV5;ykwkx<=h)?inu zQ`@oNYj8z1G7(-OP4Z%0t9ewdGJAU?Q7Qh=+w;mMEM=TmVnj+?8g-%5Ly8cRr&+{D z`fO47eT6Q*y_F`x;keBH6i>zvJGb!p1<|1vmG0CJJqh>>j`V&&w%4^ll_i{7MYA+~UoJmIC zUkX3Rl+w75IW_TxQ;pEmeyS}SSJ7lgVi-;qPiwgft@EcrE!p!Kl3cvY?QhKa=*I*C zU&e3+C4X^@XUtoPjdGgwJf%n?i;}VhB{WmaV>THT+^NA5sdT3x2^El-c&Tx^^`1&9 zXm6(+f+t{<;!WxWjp(wLZi@aR0D_}+7%uVl0$KSM0if#kDNmt$>~W}Nr|iNs*rUSZ z1KCkf&mt1NJ^O7)Hw9~<%42gCJ#l^YP~^%gm|PxCM73jqyDIY#bn?IpzvX>}ijPtKue+7FKB3LfQ|| zy~0_|7UC=A$eEp_ZFu6S#4*U_UOx5r@nf*76OWwk%5SUAv+`l8)1MxehE1cuJ?R3f z1v7+u<>A?TULPti8VQAHA%^OP*sg&D4GNcDn&;1@qDXuX9cpXbxz5|!(>p54C?y2X zyne#)ojr2Pze->0hHCKJMh%CGreIJ;0ho@8#F@?mB+WcTakd2$f1dd*#T+c&SwQ8* zi3Z7?wO@#6|1&tTydd;*`x})hBaNb_GxZnigFf z9$~lm2k@pZ@0RwSF32ZajV6Qb>&$7`W`aFFnmEVc7Fl8`M-+J!=3H*{o~XK z2Z_;R6hV!&r?!>^2`#NEMcZ?V8nsm$B(XwlD%7SmiqL9lzgm0m9XnN8D^?H$vG?dN zzyIL#xt`~KuIs+<_xtsJQ^jNqmLAW(!}B#vL1unP8ZyP$4Yd61RT0a-ko>-O{$_ zJ2bO|#M)XQA?q*8vEYxHNPQg)_q*b9?@j6+g#M`gfxI0H_&ySDc|*43ES!lJCE zaw^*FS1_mVdgZ@b8AvzooZS{tVZ0ZTxnEq1J%s>^<^Jp98*zFQNJ+1*5UNZ#X8Bi2 z+Yz#%DJRhOTfQ3#HbIP?IIdTG6=h&JxL3D4xYim|J)N<-#TtoCipyTYH|5?@ky}gS z^|5>*4JewcRb5mO8}L`yt@u4&bq#@Y3VdxRB)qF6B&yo3cQ0aWpeA$+@riT$57WbF zNkxe-*S*H?A8DOh1T5qoHFRT#A1b{Ddq=XRPIBMex%l*kd92eW0ky8Lc?-i65j3DFaem=$b~EUG zRo(m9SpmX$_}APr-{`~=R|YmIk~b?w!&So=E~HcClW?9EyE_-1imxl!q><8h)Gl{} zx|+T6VcA=e1{2K7oQj;~6OFUdG7rrUwE(7BCM>B@tLDmtGmUfN73Ze(4f_EqE|hFq z9$bs~j6)AS;Qc*>0mZ5R%=P^k&zUsCWg(P650vLVlvyQ5#D~I9bFQuWiSuiudoVk_ zJj9@eDo+}2Y>K`fury&>tMxKrYsV7Sc~;P<5ZvBdVXxnY%!Pf1(}{i}(iH+ zjl$Y-#{^b4wnLWW6K14aLF+$wKjnZ!)rHc9mA6kz#`vAI_P3p&Ijm{;#;jwJvDEq? z!L!d$MAE4Z4zl@QjA#(>%z>jKv#9*Zr+OeO>yCR0ySqqb9) z%9hdyN&3Ko#kZ)T0g|7##xumvkQjyqe!XjCD4Q%$cHLJcY_sV&Qc|MVw+>;r?4g{f zaNz_9A!`(G4wug@rF4kLmP+u!(&{a3ha#tyAI1=5lU7GlXJy`;cit4zQ0RlRP=+&( zOdmIj=@qlz10%BoQaPPxdlK3*gW{xyw=4@cQoo>OuK1Ce?quVu|5;IerKlTvNxqftWzSL9u}~T8GkxiH1Nn|97*>jcBUndUqI1q{T5bR`XlwF9Mm`Ax#<Ba?@ewxvQFlj z-$D7>$V%9c(xY&~JD~-W>KEp+AKJ=kvAz9bI}I{G$|?%5QmP?zZtNQInsX}ww#~U| z-szIR7p&+PxWCK9mpIDgx{`HflsT(Jj-~}k&Ck;HBjGSjd~OOfFHq}TY)aN`OK0eI z1;6{ZDOGZSnA+a$m{W0$6dzy^ECVjf-3q$?9Alh z-~OK5u)r9)2^>2?C&8W7|(MTD<;eo5?;QPUAFwp}s6S0KoI^+N8|IMFB9D?9mS$YVFZjhFG> z{la6ikGnz_e^bSb9Z=ZjRioq%vASK3CxBK#OWJRh)T`8GASbJ@p-#Iol#C(UZg=0- zB~h1HeqKFHAKS=`|1U?VG+7cwk!Ijx;Fd@DrS-Sy;T5_*Q#KG!8R{ByPA2$b2+sCB z0dZptK1$hC+dhb?W0q`px^P-M#&K^nR%8BXn?WGGAKvNa(N+xx^4yatF+UMlW(I-ZM8<{l*zR+aC{*}A> zsovhvAb&1#)`thXYPV?2uZvp9>EkKbxn-1dF)D%STn2*U{tDekZ#2y!W@)_%r{=W5 z<3CIe&UVe8x)*V2QiI~Ao-FCqE00w7Sgb$Cw!ryppUV6_<02X72S^Vp@#^qrEl?i% zc$F+Mamn*L!*3Kc1(8j6C6~$uwv!6(fr~@{Nq2bWqqG2vgiwn3x!%8-c}={>4WEKk zm#bLcoa6$y0KlPLXKe{KeZ`P#TrWyOR8#R~YPWxrw>2BE;N_3H%!;0$)4*X# zc^D~vC!Ta2*9nerF~^I~l3bG(F#{hfP|0HeJ?4CdxF@7dG!01uqjO7y{=udHle`FA+85(Wd>sMW zb`+iOw85_!F!>{pqQ>{;O|p2*%Np$9>??c8Ke|MT>hD_*Q>+b}E1MG0s1mR6>|7ZSYn7vU;a=BNi8Xb;;5IQF7d74FFSztu zU|iWKcl6Mb3H-#$`kB`VrI)Aqa_mMr#8a>b?cOMU&3eQZ2=68SKt0RK{#&b#8mRoX zTjz6ym=OIs2;}?b8v2xAwyifsE|eHA{=;-$k*e1+9hcAa(g%UPHF`~3AY#HRm4C?_ z$dBgTPegC;-;iq!E*wR-4_j7^#puoy%iG76a|JABmEL;O+wm3O_5Sp6n@C1G&5_ej zq;FNjBgd#?)Y_yOB1t-cvPS0D@9lOeGoXWVmce>Nxq|Q4q4=3Hk5opZZg*_KPj{XdhdA$>b%&0aP zE3kG(oKMvYPnszlKjTx8gd{{V0nA?M$BoPvV*bH=w6^x6F&93)YPK3MwKQt8`Rn{y zok!#uFPRfxB+V#inH}_0>5wOdIk*5Io5-}R>0w5zN7$tI7~1YOI<2Lz7`tqRRcuB?~s?F?6%zzm}9}w!&Q+8uZ zz9t60lH5yLehm{g?K1uT1^i*s=_1q;jOho^=VnofDkZ{%UUPtL^JnksIeV`Npnvq% z5l5CILY1wP+6=tMbwi z-#oCZxyv27kbxJ1H=4h{8ogm42HCzm=Uaz_>V0njvt($xM;-dSbuaiAq*8n*^+|=w zMIP`&FW`BWiR$^~*xZ%gpNMqBt~0B24);~15j6iOY8f!Xm!Dj_@%kIi)ZLAjUBYmt zm0}KVmfh`;lDTMJP6vX&Bej}8;*03Y9Wm_;B?ZDh!v8HQY1!k)AEu|Pllo|W8!(7b zqE#afKUmiw4H5uz&b*Gg)dX08BQtMMr;(QOYWnxEFYl(ZT(w*LjPS!sxR;KeJ~Weq z5M-x#;!$nS@}z~$5DEGHtdUQkoL)RJh}W;=O3r_ml+#uvQ;d`8@`lKWy>k9uR&4fP z@-An~(shFE!e5q?&?DK3!fIx}ghKEkazjO~9CASw}weg}nZgsF7HIZTbxAErTNLC==hWXUCdh@35r zM_LV|!4hq|yz#j#zZxAWhli81lEpCNyTs`nH5W2j_^j*0OmA|tVo1e>Vrx#pXY5f7 zHuu^>?7s91(63%GQv7P=)1FX9Bq|7VI-_ZP*TP1^7oT)+PbdBllgiWxwIg6g`hwkh zp40BiMc#i?QGb{;rQ;e&nful5+?RAZ8-j)eKJ2eY21#$7wVoy|(8mL1b&0}Pf{YlFPc3l1)~Bkl5K+i$9jNUf=2nFU$&KrLw33#*@4Dg`AYxZXSx z`(81c)V^?_H^ld7B&f-@GvcSnDSKPxoj}-MO+KI7`)Bu$If0XB9tW6H1 z_I!dPB=}NJ`Rcp2F?CWc9CzIA;<k5(Ak~v z^Yuo;C)4{hUXY+7Yi1KkGKo~x--8gv;BsSj6-qCdoMCQq9&U`4FYk)i{H``MWBOHA zaR+95&O&W~#Qmb)xo~tl8|z(8Aqx5a(Se9Jp7)?;m z#!St=ILZxCU86ixQM`s8*_vS9_bj2rQMzEp;!DQhkiB2v`fsbulJ|DzUd# z6nyBMJu&<2&$Y+n;hQ@b5hhX_9&eRpr-? zBl=L-R7D27`AvxaI{kdS)j**W2vm<&AAr4S1=u`5mr#fr4IVdKxz-v)9Vgxo1a&%G zTLyAi8Jn!Hb#DCA6Zbj--Z+-mWb_*8;eJTEiP9G`g!I}_Ll-oc+H)Ihkr z;5)4*1!CP9ZfOXePP3U#t$2SlNJEs#1?FTtMrKbRt%V?VIw77}VDcIqzi!`I`5bB@5gWG9-}C<|>u-sj zm>rP%^e!;zJEUo8R5O8>-V;^Sl?ID9Zgv}UstEy>pQI;jOefJ1!|6p|T@V6K6$gZg z6)P3H{QH|lp!Jl63NF{@RBLA4y}K>4CBw*r*B>aWiDvERG0R^k=AxzIbfM#K5vC3D zYJ4DPbmx|bZA6{+;<(<+?RlBiU*8JZ*98eXJC=gbsIc(&K5iuT%L&#Nb~Bytb-gk} zP+aj9YaYqQ6=r2%yeF3?F?=j!?dCPzbC@BP`Lge{0~@DMzxiScGy78L;q zw$YA*$ifDxbdL@==xM+J#x`uIi@lb!Ozd!RKSb8zX+qMmsOj2##!!LRDP?5!Rc>vz zEg%(Ft0?hnPy<=5%r&*E?mt(~73t~ASFa_Zn@x%+mOcUf`Y2|-E~M6g03xo2!YbyA z^XZdJO3w9iiAVSa)v?o5I?EVR8xnRDDm`P$6AC@31astCqWrfi_4P)SiV~wngv?fJ z3|LAJ#&16K+-UcbP>lKEc*wTL*4y5q{(OayncetMPGF;YNdOnOv{aj5)E#I9CvT~_ z$8gFH3~{tgtC{FDSi?<%OtjD1x8$C+z7c~(IzTmp?sk;KNDbY+N{xL%CslAOZ6rIl zyM{g*KsFaV!0aBJ$XY7I{-6{PU>Vnk;B4 z+;TwQ3VC$JyJ|y-uX%|#w&~2^I(+hZp0QOp>;m$#$ziL_E(hTvR=8{#7B0uB6JQlq zvi$4gSpjT77pv)5;4v6U|LWxE$mUi1?YJmuCRWCNymxN(W?Gb$TjA8h_Gf$YZsU$( zT2e!F0ojLaM>YAqOn*Un2-F;@Ub9)`B}8oukdaw5N%NL?g#6AB*x?W5>5IJ&zKNd% zC7#sf+AjDTDxxT|g`dAt_KeEJNgQ(CMuBa=&#YiAs77)ON{cCQ@l zA{OSdpPkvMt=06gtr8UDcZBI_tsDn7i)KP>g?l@YXq984>zN$qDqj0NjaL!$_(o}u zLr-NDK97O5IlinWUN5 zBwVmWYNZP%SlB2EPASbsyjAF3>@h-Iy}yJKdc1tAlBadUvBLGuu2T4z1X}*-9M(9) z*H$!dhJ(Gz`N)c|aXlJh>9+O?m?>3GM@#VDr1u3Se~O76)v>y!6hfymA>zxF-tRs1 zXtfke(kphg>CZZ;a6yf?E-fDl=zBC5D&-ahN5*cb<1W67WlI;j-vM2}yuaYvX6s9`U$? zp>7r$FT|AMMm$|Zk`*J=t^yJ`vh8z=j9mk7U*1P(-hJ+3*QT3<@k+&11DUR--;H+I z_L7{4S7q(rt4rdUt&M@nxOkO9Aa#qlL!gcy08BTJEi83X*TyL}qFsJI>RAj!i2AG{ zMp;`vs%`Lykxv;p$yhUgF_Yc!` z6(*?pq~&(A*#d0-)yCvpnkJg*R??+g`>19Q>(1Y| zzeACl);}m(w7LB`)Dc@K)!Mm%G=L335g%`Z?J2^6$b!do*DVQEs=0GCYO51jwQEK< z)mAq6>~BY%hS_aS zPuXWV1sX(l;EwClPckK~!%coreS}yOi;PXc>mt7R^TgB23)wd1>4&WrU?4n6v#17fv8XSjsUKB@>{9JsxriEyb%YlOkSkd7;Tz$B)5ELq{aeu&B zj+rR*uO|PBD_y+$#wbPUb4qiJkZ}ckX#;ysE~*WzKA6RHF7!+Dq#PaZJH!`~!@vu~ z^bVI-EAk%KxK#qc&GsNx$L5{sAA_qc&g5nH|4HM@7sx~P&GIK))^5pm+EXW1r(vBz z@=c~S22mWK*cWm)@uxy*dSP)sh)yr+!fIoZsIvmgf-lG!9Oa?an zPu5aa#?)u3yn?LXtrfZb2#Cn74k9S zB*8QA*)2}G%IEj#wi?|X$j0u#D9ZWWUP42e-bUFkx;5mBMewX}2>*Q@e@TIiTmXG4 zNpDh3tUfxbV$vWnOKgxMX25QazOXNQsOcP=q8GYfzM^?=H4B)!&Fh{pKlmY}!GKtl z0e$)lPR^(J9Yi~p(Y-SW!QX4WK%D|lvYT9=&R=JA(Up~~?UXweN?%0XPE!lJ#q{1~ zEOe#Im^wv(KM!`{jwuK;8P~tydY<-5&k8&B;(|KA=yc&{QG3MJ?ZM>2{XmYr=SQwY z!5b33ecsa2iL{yff4yJE7^{i(l6;@}S_ITYHXE5zhjYFBX+L*8!SP+5iF_RpNc7Tz z!vt-jB6HYHcvwa=0geS_iy3xhkc7zd9+>{*T-LO{*(~R@=hARenE25}x=}Q=T+0#c zqLtk!ti06XcL_e0I;iZ1z$84UiH5 zDqF{IucXrQG;D<}uI{NFNZU_7VL0KoTUUfcHtA5LmiSQB zz{;V>+<~v2FXz=~5ZSX*-Gf;^@5@Zuh!S+S201cp+dHP6Vc~jXLCDWD!IfK*w#Fa4 z?m8|7#dwBG-cy8OOPvKTq0|Ggwo5OT^s4i4$ee(qnu6{4E*;+_sK+Tdmt3|2o1wE9 zdz_QgX)-!piG(clF%l2=J=04%%=gWk$+^$FFkShIkg27?kYzOpO-0+^99sN)SbDmm za`^`H0LQ({L9-UE#SN(yeDc)lay}K>TzhJ%FvHuT@ zFVw|ScHm(*W3$He-mrpJhPnA;?yWXI>8kxIgynPCYWqDWGN zZ|)^+(4*ND!-~1G&dhmdPu(~gLE)SEa5*6ErQ1FW8q_sa2k)=xbw6#&#*}(rY z$yD|aFSnT&4I%X*`c=majee$U6R>;=_%pEPw2`|FBMe8SF~r=|p|qpj49s;lpl!^^Hz6`7 zShlk|hGgaSgvN+zBAeC|gAxpx2X1Z`c6toMSTZK(gD2YN#2#Y}1Uq67K#_6OII&we z0FkHNHc%O8XcHzpP#V!#F2a(lQumy1yPPb*qHvsn8yt`KJ#A$=%B-JmG;-m{dOET)eGiSd$DD6@+Q*lHUkXr0RJ z3a;+C&M}B!hydKH^`?#@(J{PhvD4|pIsi;4{U4;Kf2In%RZUecL$f#YC9z~g@EOzF@2J3FMMUybh`DvI?ppLYX<;Bt}T zS*PXhIHWhXonP>J+(IVNxqUmk=Wx_Tr9pAJZMIhGL-1ly@h9y1NyGkZ=#e?yR)}14 zjMrGNZ!|R?>#}i|y7-W;;pWE2Q+lMWHk!00j>wWpb8n8wpu^@@rwS@0*pF1=tn908 zrM4u`o`$eZUN&tY$kacB#?aX7_JQS8m}3uFZtFoTcT6ELAmJbGK=ebPh6-kJPuK1Itp8iEMLJ@} zE9%tPN^WK?^VSJTx=r)mBQdX}om7{HBStqo3L#metBuXc7n8|Qoq{R<6j3<&t`K6~ z*V?Ca7PG5p<#F$2@X}9Pc{#+`PUvYOKL{hGrZ|;c7uxAxuIzjwfjZSnq&XV4|J%K= z^fsWBF1&jS5?ha17rU6#N~SSFoJ25GU2EH{>AaczsBL7U?1g`Y#|xA{ulQi_NWqko zt}&qo5*i_39~)S~Nk6^~l#lvoY^BW)Rdu*3CZ{r5J%!YerM<0-cCWTHRVA@oZ1;No zwNMdT`*oZpuJk}~3Y-Vb0vl*@q$aRroC&&*TP}T*9L|Qq>^qK<`93OJyY~KocH}xjJ0RqvwvKf zhX>HMX=CWh@-slxy(%f9%87ITtI!=NLVoH3ASn8LPan9e{3{iGM4qu9`amP6SY)F! zw3e0y&z<^bX@8-~TDd~(9ZnR+SP2z0yjMX6IwO|IgKj#bL|S);{90@THZ4*3R*G1T z5tQJX&evaehi}Fu=tz*^;^HAS>OA#u5DY}pt~_YVPmGom1>Pc@ROK9r;N^ugE(M#X z-SlFqZN)*j{g;2WQY0SE3JhRbnYOI8p+}yAN0$zrd{B<*zcL~vkK9YA)aDbo7}B1w zA+4=OquoVE;jYuDam?a&Q1eyp#wq#cPYZ2jzEhm(t4y!eiZGiB=?xTisc}NZXluI{ zePZxE`LwdhbmQp4Zo<2}BUa#hg+9?fG+m9;UC}W`bQj9cUMB*JcD7e^=ElkmjiZ60 zNTZ=|4^o@j7=azsMF+{}pX))w>#~RG8aqY?{URvS<$%+w?xxKzY>a=^@wJpi8|0en z<}n`g+hM6cx^-Ic!Ruc`m!3)IxjCw?JPY8^g&(?Abo(U`e4mFG5~#k1pfo1!?P%#EABz z5~7PsTb?k_L*BX29?66c%>;h2tGrnt!G2e5YsHDV3}e?ijDME>mP5aLb;rQxxuZr` zkkF>zwq*0END+(PuTZG?QXL-Rg>UbMXT&L$J9kXSG%sHpPOW%|aGJT$hpPvdgn>rQ zqrDVuu%Y(leD~1&P^$%F3-Ncx0v+>b^l@S+R-=UMZ4fo}u&{{z!vCssTmOU_dtpnF zYz>ibbPJ?yQ5vvu=#2|%{hzDAE9p*1FeZ||wRV#d=!Cj^+V4Nv6f_m}&nP=A<(xn0 zNi4eVxN?zn%X8$VjOM59A9WwIeGS_U9>Nr{C)o!+EDg7NpZNp@e;}Z7a<~OtGz-;p z&F##!&uKuzJ|q*Rd~R9}G3C$R<)NAvZ}4{BGHP>u=M#LUkOJRV1a;NZNd`gFr*-Gg zyYOFb4%y#s#OhEb)CMCLr~b~K4&j4h?kpo@i3N7&dUNAoDMGQWkfLF%Vx!(mUdmxe zk(%}uuf)p7U|mM(hr76FPs~sCJ6Bt|Z;kst#%FPboBy3bUF`pLVA6SDe6O@TZa`5+xIb0;;gXKL<{L}f=L*g zZ+nCy2DfUj5m$|B`b^YOf7lF(Z-?PO>Z!s4+_zZB2!xD-pB*1e-9zHqE2&<9ro6yv z(vt~ylZ+yOL=-D`O09y)B08#usf>UMFGW`&eYy<|qDRaz?X-Fe&yUuw1H=8)Impw6 zdm-r48oJQaKxaDv9f}I8!g5iI@=4QvApcPmSn7C7Gzl-tVN%Q)tKS`5v2m+g#S%c|Z-qrsd zIEk}-=Qyo#9Qifo@w4Q`&w<3pz=qn_NnKj@6V)6vu;M~odEu8K;%kOFi}86ct4~DA#MoBoa=|d#|hDR9ryQB@zn*x;Y`u{ zcG>rLz1bJeEd4hINr8zcNgUf(+@N*Aivb2Zsr)pn_Zk9WHPN_QP1>zo-d5@7H~hDN zOC}2UY&+}REBsQYdtL;b6M0H^Of(zlXm2m^RmXh*BNHadNE6}k%rdAqfYBlrtH_xb UKHR75vT7GRVCa#yp8uKnKd1l3JOBUy diff --git a/assets/images/9.jpg b/assets/images/9.jpg deleted file mode 100644 index fcc872ce95dbf2050980136a3df238e9849f6e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51708 zcmbq)2UJr{*X~I|FCq{WkS0w6f|P__#n5{PDbh)h-jQlS2~9eLUIK(FQUs(cO?p>~ z(gdkeRY35@|6S|*zI)fYW&L+f&RI{UoY{NN-ZRh1nf&?qX9>8fp`xw=fIuKXjc@>e zR;bL>m6dJu40Ki0wUC4Y0H9LSLb-c@uL6LZyRWx_>Rk>qa|;gA5daL310;Y50NC35 zcxoG}7y*Q&j#TFGAyoQ{|DAr!0E9aMz@(s>9tX$2^Z%a^t-YtWF93k_2(`r=9DVEw z_$dKD4Dj{*o4-%MP&?PZ7)N1kC-=&kaSuzX%xW=4k5!07O)O^L-udT?km1fT_HV z43r62768booc{yc{Rj4S3?#@20LmVoLEb257heuOdl-j^l$0cgnq$C2M_*q-JzINM zTW<#rWe+z`TlXLU_($iztpK{ew&frgSzJU)TwG98h+zJIrT=5$ziR!T!QZj{r^b=~ ze~lUF+R(rA{@wQ9c^-uTAbCQt&C7r1*<}L2n`Z#PIQQ>7?tB2Cc?tlHqyM4LwZH!2 z;_K@vedkUZ~@!^Zy*2&0V07YAO?5|qyktV4=4ukKsE3hcmuQoT|h4| z2#f*Kz&x-7di3&u{yCCu`_W1aTIYHaS3q)aS!n{@mJy>BqSu)NN$lxkf@QElb}f+ zk;IbZkkpWLl8lqAlAMr|k}{DBkjjzjlG>8`l17ncl2(#-kWP?(CH+N4NybhlN~S_) zLFP{Om@JK~oUEN}f^38Aoct;|54kkCF1Z7F5P1T5F?kF5DEU|Na|&9DTNH8>Migj@ zNQw-KYKk6;1&Sj|N=i;jDN21x6lDZu2IVWte#&LaQz|+tekx@uODaFAc&bvWPO48- zN7U5Rywr-+7Sz7f@zi+gchsM$e_f%!B6LOlio=!gD_K_>uS{Ioqaml^p;4l-rU|A= zqp71ArP;YkewFvC@>ScbVOO)RHea2+dO}N2D?+PF>qZ+(TTVMb`;Cs2j+YKe=Ro(A zu88g(-6}nVo{L_Y-k$ymeKCCx{Z}Xn^cGYdiiXBOtDqy$eFi!PID-j8AVU^I8^h8y z$Ti+;>en7#OSty>+RU}H>#Wz6t~*|jzFvKO;`&d<8;pvKj*J+_8pdhHGbRouB$F#s zBGVhDMP?#qerA2<0Onlg9_F1J&>J#0>~COhyuLBV0%qZ7F<^PbQp7UEa>B~Ss>n;^>DSWVWdvnhWy)o~$=;H6lr5HB zmE)ANl`D{2lIM_rAfGS4q;ONgR-sT~MUhL5#@qEb_Aor;4*mh04AvLiLeqry8-Erdp!ftU9Z@y*gffUqeD8 zRO7uSm8PL4R&zy*U&~voMH{TGp`EO~pu?l%uJcA0&{fw>)?L)QrRSyhR-Z&)Pd`h4 z-9W@3#GucR-q6Od-0+9dU84k}d1F3fKjUr_8WT$syva|~d!|XIOJ;Y>Ld^!vnaxq= zO%|jUCKe?YC-;%}Q}2JZL|8^y&RE^D3bY!qX10E4-DX2$V{23QfcSywgYpNzZFOx6 zZBOjf?XvCm?Un7*?YA8i9a0=N9pxO895g2sXnWSx)S9b zHTzuVdEN`67pNB_(PGh=(U%wp%!e4^n6#MRvG%ba;zZ&y;{L=t#g8P2C*-~)dFlRg zCQ%`=EQvNLIB7LmJGn81BL$OkoNALgkOoi7OQ%TpOJB;+%4o{u&U~5q8|#9d&bpgb zlg*MHo&7V%A!j02F}FI8H7_RbEFYEsu|Tz;v5>bgt%#(^zi7SKq___!iNlvLm&BA@ zl)9HLl^K-1$4lVxYylK2yqq)09rlsMn(A(11o2^-G3~dSR6zxyj z|8xX*oOF72?sPeKt#;dV&%ZN!H}zis{YZ~yPk*mU@4G&wzK(vm{?-BMf#wgAAKna# z4>k@Vh8l(u!wn7k+_#saXmcn<|@QTlcrVZhLN@??mm=?q=`t?bUx*{64gAw*U3O`{2)E>=DyZ z=`sAc`$X^L^AEQl=RYyOn0}R=N}l$enVxN&2mB`eopAxXXt~t9T=?Vm=g*&c;3)ux zKp;dAB4T19!qP=TLPkbPN=8OaPC+=R>8Y+z5kB;^P+A(o$;QaQz{tkM%EHRU&%?uy z5Je!7mZ1ON8~o`6Xvsjw;4KJ<69ChKAhe)A??D6t3nC^^2SWPGQ~oAGPejBdq-5k2 zlve>T2m%2UK?q_Kcnm0%PzDgu64TujQ6iz&wt?gnk7~kg>v-5sT zPI2uzBNHpC8wmOrDtSf3yX?zC8cHf^4E3s4UKP_np?Wxz3=Jm>mT?qF*!9oGyCz= z-15rm+Sm1sZ<|{OheyXJKYso?Jp%!df7JPxM*pD?EkPeJ5n&ie|LOw*2mDo*mWcSK z2nn5%KB=u2J*Q|S8T4*qL2VZ~mzcpmgPr#{#WimDGS9(ZmHtbk|2Ksm|F<;ymqP#2 z=g%BK1pyHT3_=Si02f&$$r>mT3#K@dbU((DL^aaA()B`cI%jcJGRbG$l>#uX2SPPfj%G26QKX~rhw%*quoAm;IK6Yjdqv5I&m9ZIpiKg!@ zr`oLmC$fJ06uku{BmQ^8ap?nC8RCJUcD>Q#%JgPHBPf<_S`JEQeAtI$GpnHTv5Q&{lj6Bpx(^C8gR z6bW#MA{|ImYnZ9jmQG)5SUN_yX-mW1Wmrxr38SpFs4tdaaa$mHJ$5E2BX}a3_!_&x zB~rMlJZp=@M;#RIch9=qqbzf)$8IB2`;L*1!IN#p9dqhr-P>MzW$QS{dLMfH?C_r}v)y1@VGtjrkUS{zO^C4JyQ7`IR zvRaCU`7tC~u&FtJ7uJjkRAwo&Bk}_?idu5Y85$9b4TLY&FEzMmWizKRR~QJ2@akeM z;)|h`GKq;=T@}1oGMwit%oW&@QBFDMN;0D;n4h`{;mI;-jsm(cFG2ctDaAo+<-8B&Yi(B6e?SXhW!KE<$Bf*q-f6uHtPD4xO$`0?C)z%RHG zajP&hm!IS%1<;@~Y-FxfdOe@gys-Rv>31l|4pYvCqgJGW4^3(s1yyJ&@(v53+qWbP z>2I&+w3NFS`GIR48tz)ZJkpw1>=9)#ai~L}AC||F4HWMo?4>lZ?GcmReE2B}6VP33 zf-Ol6-%2_-=b88OG!)n*im$UoAaj@v#-M}VgbwKmB%FE`bKscj^wFL-G1dlo0V_H6(-HMMdSn|S$eVDd=HZ^gWcVE5 z#|WJhQ@qkygmL2mWH_;2>e~6>WX`l?D6j{s|BR~N>rBhjr$~nH0Z0iq1^9%EHs&2F z6P#!K1uiZcf{`#*)YbyQ_lP5=`4DClDZcrn^!jNf4M>Cc>R1%~18VqYQdH>^;|RP` z$s2Glv7ibWp1;QpIjmMvh(`j6RIhg#@>qKQWTRRUI7FwW`5KkE_FhDW^aO(ggXBgJjv7A=aZb&BvzZIDRMU5l4*7|fEf50PVN zy=irAO>9c9#jv1agNyOY-bl^4Jd8gdEwLnp7qqztFnxdquAo{fbi5RjCvLk*D7l?O0i*={BOV}@NQJZddj4t5DM0*M=X59 zAX0k{sUfWgc_v*r3jckem~rUI5B3=*O4gb0;T5G%LO*CK38>JJEC$D?OiaTVEsAyF z5@pxAiu13)yo{W9_fRUym$>0UwB19!o48K@mnQn#~9DQi3jPXakB+r_z3K zQerO>xUt2#t8FY*AtSd5jrYM=#K4;?sh^Lbn&As$kg~EP6&JA9q&Gh&su&BTG)VX% zleP27f9hi&=U{Tk+bI(JF(c zA6QB8IweSlI?=pmbL$usIOUWaz(5`h-0d!AnYsUJL8^*x6r6g(`h3hsO>I%PzvQM0 zx|4w}(L{xRj2!dQP)vs;gIJaWL5|L3t^;`^<#bRubv)EA;%Wq%#L^gR?^{AlBFT_D z@o2h_XuU$#M({f5nnv;vLX*fq1g#8znu!;~=4VwPuX9FTFgKTK*I>iPdYW9a2FCgIj7Lh`6hV0Mvfp*stU+#Lfk@h5hUU^2!)ly8a*C7_ zQNuz*Qx$BmNaN^XIrR!QD_K=V+DIKKeD~xJ43Pl@;id|8!vpwN{dqVeV6S3_pT)<3 zs9ds$frG_hrHZbXFf9r~2N+>qnu&^VAf*XPh*7(=w4?|M^5T*)NRJGBTvL&zN9J$% zv9v+;EjJX0CJgZ+isb6LoyGZN2P&{*J)*#pL|u3ah?S{y1&aiDZbIuP6{$*{iu&Le z^&lbi+kRrH*TfDQW>`gyNvc%@hi&4p^9vnsU4$bkE6TFsnzfd(N%BNN>V1x>{q9c# zg?r0(4!46budXH=5Fs2*$`Zv{8?LALm^R@6J(8eE^-aU_CF52Dy9oY=Qo|Ccil$OG zD9Bi;;(;E(z?V;AmkvFHEs%+`Oh45!-0Xfy1CBL}ER49J{|b+%28<4mbVXu~V+~!v z&y$mtBIr%U2rilbgrusRuzc^kfW$H2sluE{MQVcD^@R~EFc;{K;r$nG_ofAfr(c>f z@bdM@M{pJ6g<&F!v@3B9k_4yWm{+u@#aL1RPoO(SO;Ed>&KNhLxipLrQDCWE4pJs! z!4NN|sk0<&ST2nERJbIaVwZ&!X2-bm4U~cuqgJxw(aI|PZe^YNSPOUl7xwt)Rq`)m z$8HwpDB|+L7z={IkuuPxe8L(UkAA3+0shK_m&_+gM8b;TpbzV5uO@cYw@qdqV%J-w zsUh0K98%Dx60lP;XJYx2=6q@@42rYvX;j9<7)hj;wy2;(eYUYlD&F$SlOYDCq}mAs zRfMBDXKJ6lqBu&OvHa01ev)k8VUg>Q*eP67WlBi))ZT(Yvx%VlC^VA9Rm3c+ir5Zi zd0S&Eql`htg{RJtk2g;be0?IjT1>wMA!6sHh1^%dKQlJsFz$iAhb|k~C1U`6Rd_SB z9#}AnFmQ^+0{$=*%mwr@pTbQ(;#v;IrIg@sJUmc99|;APwPnY#e4q>*I0p&v!n%`E z^oR;`v`BIkDRrQ8d|)M=VHFsv(5$2gUY}~p&4*h_iiud(DZz+ok?Ly^NXxhuVg8^* zLiIp@Pj!q1AL#DHN{;$4;ckKXdPqPJ8euRALLCno9;guwg9&87m=}Wb(&-W6f8pR; zn2QATZZ_e1)G?NNM7~XU5lsvbLlSHBv1E+MDa(MCFd@2cX?GWTqN{aWz}vK#=b?Ai z%N?`e(8SfNi($uj#N6D~PSb?SN)L5b*U25H5Ah<_4m|!N11bZoNvqHXeU?N+r#*7cJjk<$IR(NqDRh;6dVH-CbXqcL_h)=1C0u*QMHRC%go=A9G+Cog}eEjF1! zqkF3SgO~vyIO84GlcX$33!+PD99!Oo?iRM~xvt1qN?3cq86+s!FI+y^=EqWfLI4O# zClUOA>O&|1{cVVpkD%}@nHU3MJxdJMBiNA=aHojtP>?#7ur!z2VX1|*0U3t31En_i#2L0%;|nlh>$#_z_Td3 zbOw$hFxJi`0cuy=BVMNLr9n(!3yM?(AHWa;j78A;?kQl$knqbuDWQ9eFu&+D+ZND( zG^Hl2K)T4g)G~esirQGqsT+7oW4cfFoUzkx#~%4fAK^QgGPa!dh}%x-2%{#}O~@GW z2d!y?6Q;BXp(GLQ1pz4>g6ZX$%=J&{42JyL#?A;bCz8}YyK`DhL8QUnu+SWZyzQ&c zHbHCH<3}i!>ue3378&WJett8rA+f$SygB1v3=PNhd&f;6CftIFGxb-oJ6d0Fi%Dso^k*mY|sFZe%?&d7en=hs$w#I8)B=Ejo zeL#v3)je8;?p=d#JX8rw-4NA5&Mi4(zw%~U?`vv`2W^AgrM{_enwcGNa*ZjL7#6akl2eW*kZESWz0m0+C~ z^gBacN^+$RZz25bOMkDAzNz#nBJYonv4Xg}PR?)ELl64ID-60GuZ9!~%Y$&D(Cyo|VLGhJ(na2++Ag-X^ zmT4ig#}oA+nkK{;Wo?p_G4Og?5iXx}VucXZkZ*(s3sQ;{BaX?gd~&j~$o1meBKlx4 z#p_cCTAUe-cFCUkgoqa6=ig?zhde{Ov+rs@EqpEgYdQIx)H0vzjNU5VP`8HE0=h3o0hLfsVqWb0jALO&AGwrU! zekiIizOj!Nv+>JfmouQ6dyB>z-l-Y`7n#LvQic~uCJ9*e#G9o|aWu>s!CEV677n) z)~`hIv*N>KMIiJ(12$REnl9D^%VeIM*kkN4j93SkWwqCTr~Q;Jo6k?rrj2kHg)v() zn=04wh!~4`M2(;iHRrOpBd8|E960%7dzFn|jxfEbVi9y4%I%F7Ex2n^7*BUYvWoK? zu_8~bxP*b575W-46N98w`S;t8f@h`Au-r}k_>{ty{Mp)%4j@bU0{?=6TagxTObZ_L zb0u2SSD;U`Bfjt-etG7#B678qvQew>oYlRyl5rPI(#44nbk&GnJJ;IaJ`|g4_sr^H ze>i0oA5xaE?{(}l6@!gZDH(UTtwli08EiB`XRnCa6y`hTY;v~V@Q0f2Xy z#=4u|ZE_^6We?zVRQJUNrbFabsqOZJEyPLMf?1R!E9A}IgeyIo4S1T~f6k%SUccMj z3a0ij5-oF(L~P9j7^q+6ZGW65%5X#D44OJp3SV;Nm*AdW(hh)G-Zn2R7%1{8^%tPm zqc&YM6uf@*_oRC1lA&6~)hj6f2|oN=y=(W(dL#`d^aLp1LbJ;0)t_JjDCwW$KJ%9m zjStHtnF|q%jj%PS*xqD;7%#^^WWiXzt1Z99RKey_DMr+uvh+H#AHN=oc`X5X@;Tdv zA>oF25Z_|-CL#kZOq7s6w!1N^EEE+D4)!}bvpU4?AoBV=}t}}+dlH>mz zi1WSXP_DzTh%V8VWDZcW->8XB+_Jd$qn&GVMO5AOaP;aQAT4?_+rN)t{p|X#z;etR zku7Pz=@`i4&Y*sp_66bJ729pdO6D2gmcZZ1OmxpVs7q(%h{J+igN@{`%&=H*j-%U| zr-~P9>ctd?7g@Y-%u6B;GLw6kUC+@BMa+f)dpGPh2PayRqMcf-x00+1GGGRWxPBUpT8?d9n_J~iVDY}<*!axRkM7OO-2S#|Fvy?@U>3Ct}vA+ zj+IfgCCY@AO!kQlW!Qx2&EsA9QGBi%t?K#Vb&m<@lRv-{HZJMBr)i&67X_c3T4pEH zQ;+8jCUm!J{pwm_n7-txdc5&rLa@3to&CLS#D4gaF6Jy&g_kjwgtbbpHNWc9-t33> z_UL(vFQ%o#?B*fDbuH8K?190WF#~f7wS_NI8>#NFi(RoOIp}!d>p^TzZfAA&biC9x-vECOy-R&O>tKXB-R1+HywQ6z3%Xhb?$K;wu7CnC& zS}p#zGvPIcDerY`f%5xY#jeS34}`eG7MRtiR8Ft^rPd4JGcIz22?t@7jXd zTuX=XX=seLi(;JSLVhc61zDWdw7%=EcQG_}!s#P@1_XG|>f;O@GD|54k1*9S zSJpC$al^dmXhu{9zE%YmF>YW;cmfBUa`Ydp7xzJrL1H>(op{CaF(nn)$5OkDEUvD9 zD69bON;(4%lq|uG5zm)ThHto8HVi-?Og<9?#8?bBpFQK_i~tu;iem}9jZOTJxIB)d zN4RzrKBCK1&Ffc4D**Q7UrOEQ=PZSGaj+O|E)+U_?kyC41CQaoB4$Dq@w0H8x%sww zgvD(4S2a$Ek)&EfJXuUYWJCUGp7T2Ao~nd;mhr`#tv8Yo+jtQd6!M$?*HmPpPCF}uR`5^ zCzRCDnDCizS;XrPknXX^{9^;PHk-M171}hiLpA%zD^NTe5qMb#uT(cdtlEp+t`@PJ zPRsi&16vkJKzr;-Qx0~!b&@s&I#r3j_-gEK^B9$$jP`iRxYC@6`#iEFu6TS>6Fv0n z$*ncC@yyJx_%rh`X`K)0pJUs^RN_(oG;ecLcjug+jY%g-9`|S#Y@*!DH7I@vXue2h z0olkr?)Cg#`PBesqggi@6ecg+(7qN_T~RpKb1kIulA&Q)?cq>F&;wJ`GPq%hWTl(@ z6jIo66}xM`r>`pVq?FJ5l+Dkw^aj6M{oW(xd5a*$9aaIV*Cn39{0jAN(r0R&Tjr=k zPuztDHu)}p!0LmH4nrJj_Hz6xqN>^oo2*2Sf~q@4hC|ySOuF>XpP9+@YJ59%9Z!{x zzvFApVMxxPT>`EMx;**T%*btVXZU{Hp#V0`Z9)!VUqEixDM(<$}k2H`!K`&IjJ|Eh7n=*tSWzf!Go94PF=PK0huY98@vpy(?S03pB|QE9wZ(Ot`Z#bdS#O0E(i7Q z+sFIOX*bE-fg{u<4!8=4j8++|`8Bsw&eL|@O})~;&{n;I59!-@;yfM@{wyebUeW{A zU&MQU_%`&Mm4?_@U}3M_Mni`Nyz=&ExDe* z)*i8#el?8>318`;LG)(Vsd~A*ubc~=NPpH>p0GS>*Kqc=>euv+M@fV5y)M!r^OlW9 z>cHFv$Nf61ICsBLAx83KHs4#W*S3EnPOW8xyIMcE=Sov(9AtB!KAdcfL;c)S*x4NL zxgWk=us<6mFR*RRIPKWTptG=u!truM* zap$q;$D183!I;V9rSPbetW}}J6*KIjaUgj(yKSmW1~@B?E2cl(O7d`xr!22Kjd2y)ch9SI1Ao!1pejSm zsZ+b*3a+O0N#cwGx5H(F*h&+B%?boKB1YeLyr{bMVfeN`pV{iAd3b&XF@KH4;WHVRea$K>w8ZOv5BsLP|G z8l($3s441PO=XcbwwtZ>E=&CbWZqBz?i?3e#Gm~tVLqwu)b*4-AN%Ef4)6DF<`nUl zb*Pyz;|k5}8{LD4@5opo+2HWECpD74Ji?tzEnRbA(`#S>j@xcrit<4V?n#o@OCc08 zpn)2(S)pX5{fk!m$aU0MXt@#O!U-3CS&d+;tx?*w7Ax#qVO3$3&|drzlgJY1;eO?2 zq}7{&+p)n^7aMZHzCHFY`evSK7;htW%459Z>SMlDt^EPGf}s~Ur^}&-$%m><=$2WG zZ0O1(U$ZwuYgM>HI{U|B)6ojQj&eI*)-)Y6$&xQoU$t0tHPQP3Ji=QW({N{O*E>eA zLQT8oh}-kszTd8Ay?ehQN$H{hj~Ab@_aG*UiRPsU=6u;+(w5cTLA5jC(5&gPORh|E zU4jD%$c3pzY-}g=w#KqK-j)lpb5x&xKh@Eu|68Em{>Gd2N5VLZy04|I*G9uLkI^BH z`=MRowW?)b_+v9U>ca0_o+rEXwFQqpNBlaeQrJ~T$x^nK(M2Z5FX1^7a9+V-&v2Z5 zKfW<9k2!!zlREZ#Tf>5Cbgt{c^#&*_R21h-OXMm}WZy7g-mA_TRcNMtA+nn^{T@&d zyMMB&4eRJK&q5btU)@9(u#U-e1BvSP?v=C)~w?>y!dwbf`PV4*TOSb)~~|w z`O%%$=S=>LpBUKIOY5Vzjj@4UTQH5{YloWa6m*Yn{iItPZyIA#+tyi?b4BtjA>ROuTuSSLk$x z;X+$h$8Pp>rPmH6(36<~yh9Ocu&$Y^7*dYxSyCS#xJ9wvgWsKbAL5-o8=pI4C5*kY z4J!;eA5NB2_`3kSnHnf00M6*emGut;hPTm1yBY>KeMS1JJMf4JhcVK}ViGIp*4Lsd z^;VwfXzkM)xty|iDVF#KSX>N5lL{GpHa+vuXkJ@WAfr~xFbXn*lY)1~y~Xju-FhNK z3>iopRGD)ME0-p&u5}jP6=#02Ui5GmLHEn1K>t@denUFr{ika4T*W|pD|dV(->~7WWeHi5YvB#m7 z;o)2L-0!av4r`jyG^0lkOe{0q8{Fd25NkopK~@v(L3-mFDY5dak8LQd5j3Zt~6!svQ%dMLj`F}tW&MPPoV3pevCRy}$duHk zf$FFkMYZan2*!$;s-p;j&x5rmWh({OH|Tgu??YvK4xkF2`Fo!IVUcm=~Nb;Lzm_vj_9aL1DB+NZ)lz(f3&(?a_+ z;;E40h^xsiV|?lmT*#qUvZf+Cb6rUYcaj{E!7w+^MZfWcZX0#+_T0bc1tXVilt?er7L*gOb=CGm`RldeX2*TJ`)MO|8>3K{>QGh=})F> z3L48L$lI<5)}kx2{>GR>yo#tn+|IFlAAi?a4f5#o&u{*#dNJoK35|Uh%a*_!6FKyj z`I;YM|D(Iq$acq1vmgttAG!LE6XwFbK898)wDM<9M18lc`=o#(t6XLHAR+2yowb_X z8-uBM;_uN@ond6L_qOEX`A;^P_7x@?-?<~W!Q;xW?=lQs&`u_ygLog zu(Lxj2l&^Tdd!I&Bsl(L5hdKuEMMY5Po=$=N9pze}HdwWh{AE z&hU(C3td{9+wSj>O`*k)^%Fb$8jWW2KYnral)mys!|g{^@qG36^H}$9WNV2wX(QJF}bM*9RS{3ZBL2OyY7nLlV$fJ|KIK;U*>v~@aJ|S&ei1MDc2F zoVqB!Nov>TM&`!HY}U4THx-S)1Zn=e>%JuPChzyruxPPwF@oAcyAygtn0H*<>|e3t z^cMDlVNX8#UAT7F->@=Rs+?ao>tu3#X2{_cS?~1r=d-KQncM-SOb<;*M&E0Vz@Y_H zw|5$nV+#V-sz(dD);^+Ve2mkJOn%2bI)x)Y53q>#FFoF6?pSf{u7*?gHqm$>3Wyq& z%M#di$Z8B67?*=iwv89L+#xAk?F+LjOdC*pA6X--@QQBOCgTU+iT1Of@_zvGbX(!$ zU1lGTw{^~$78b5)$q$eZw_|NTSttG16vt|{ zz^u*gi#_Df!_sHn%V|w*T8jhBPXt)lS0J~xMCMwxt~eS}>z6Ya?fPBc&5FHKr!F|F zY-!AlfSn&(nCdQ@`fq*Zb)pS( zogb6+Z2RfeyUa-UyR!rAw1Y18vfyqwM8ocpF8#V)5;U%^U-1e41aZQau+*lp_Gw|u z^rrw*?D~|(sT1kVjI{@*n}IuQyst}Pt62BZG}?q!-_e}zP!kbPGtK$dyl=s22}^@A zGG;f`1mAmBb190jJn+8U7R^GOe%t;H0dpHwAh<=?@_G;lzweOck;)AaqH_MVS!d zSKX)kjQA-8!nkD5o?kBgair*mU++$+*XK8Gzh1|lQT#moV*6ys3uT)1Oj>s_1t;J( zqn)|ZhI=R{&~*#8mt^{-wvGk%<`$-vE5RM<uMA7v=O;+4vW;$hmvz z60Nf447xD~=o>F`_ANqt^Ek^0+bvx`R$y&88@`@qzv?#ez;mgx<4j#vFL%{&KO>Be zKIb8t=aYWVMjMKj8fJa6Ez<9MRGf4^^3is|V!eF&TomA9;1Jky<+xgDJR-;cfn+{+ z`kk`$Go#tsrxtB9yZ4(XZ_~%OkG~##hR}66E*2B=)Yht|cB=g){n~%6!|LiqoJ%;O z?XEaqpvIRd$IcHk28q}SrJhHDx9?4#I^GaUQ)LMD@^1?rsymq^ml)u~^+-~L&5;DYdrz(M zittltOOc=@)i#8&$HZmJ`-D=B)X-qi6v(&3b&hI`h}Bf-)LSrUXSWhYa*f0?I_cgj$s-oN<;R3^v>$Fa8(C# zO~FExM=43=#qs{huZqayz07bwc!SZR%9iERvTKph-_xwq9B3A$&eoF3C+1z{o#<|T zsjqa)h~Ux8^lkIZmHHi;?~~j2mrc)&Y0ge*hE~g~G{T-2NrPyXE#D@-WtbZ(+F9MS zq?h$>?SDEOgnCVSSO!CUj_NlK^mil zv8V@Qm5^exlMFFn9D|XZ4mDBCtp&t}kH`_tOdDwaiM1b$E$D3aFfV5Ehu`a;k9@=v z#sWjF<8%!TxFxF`IVg%Kt3Rk_UpYBw4z-XBk-at25WPFB;f;QO*iUTx;S`>voqLiy z;V?V2p4sZOJ3RHh2wCLKH&tbl32YiCty1b7DVs2O1zKddbi-~r;x!ncS>H^T3|i0K zZf#5yq`ekmzbbtBgE(aU2CJ;RAkOuXbjL*;Ur?MrP3m0 zx3$q<{_7x}l3d>;!~CN7$3f6<~*qhO>zhR z%%z(aUs;^iUV7y^b#R69lx?Kj!-7bFBH#B%k3S8DaXWUW1VRdP-*bH{+#M`90m1vs0j z80e~0*X#edYY9b9_!XWe%^JA!=1-VPZlHvO=v1`I*%wRg!dt^rwXeiAzt&5)^L~`n z$35$XvWs|v*)Dh!%d*m8Ggya(7m;;U2qwh5cTBDlLZ!8eEzeUrm|GxFz-sKXvq!U) z!c1DZUIW!8gXDCWZ&t4d`p_4TD6ufTn6~+^Z^N9EPt+z;s}{DZUR|a56seja*Xv3$ z-EOfEak=jhP90X2vLaQWxfXKCDef&PsQ07{Pa09u^42yBPI}(ZyHyi&6d_57_czZk z!r?AkQ_)LcwsDL)dEq*HtxV13>g^?3r9J9o+~ z2p=KQ)hPQeveW?9qKM08J|kagn?DaalDpU)ap}6XU(=Lor@}4)pLz3=W^o|FUN7jW z;pKSb%v-*deYVjwFVy^s&cyk+4#LCtQrn7gV%|FK))S42;Es0|g<c(d+K=escUYdbIT`=JDhEl>W=?<>t!P| zj@taZ+z*{j$3hLDC$J+X6)vu6`ck*(_R-U|T%)>Gc24zGUKVxwqw`8K#z%y0vWVrES&w@gE|w zH{9ph{dCE`my5Hl1y37#4clc(ZEGJ9hd72zGMSjJ*KVp(GmL#B?*FdlUOP6cu&%#u ztSa7DHlGtbZ_r-F)_c&xTjySSF}uQFa)$RMyd#nQi7(AqWpx=CKCua|t&*lSjL*?3 z;Tz=7eTrG~5FGMmyCPzh!5t;F8ENFsMR$|+ocVb5MP;*8&7hn7f&J@`cCfcRqpThM zN2727zZ$LmlQH_6i?OSTm!lrNttAH`rTp)(bK^pPfY6A*O>11Bgleu#@34aM(HYcH zm#%QuO8?lnXC&A}Dkmy*t3oqzrsDfbyFrP}b(2!ra`^9ru}!^Ldsq6mdkB&pUj%J% zY@;jo$osAP#mL9bWTw(`Of2(D=9u;sPpg=NW<7y0QUfu|GW2-duU^;5E++=hqqhMG z9%4}q0!8f&$!iv0j&ATP?P69R=KVxjS>9uzxQrO^A)kI{@Utqg>-$=WJ3rPi*w5MC zMP+=%wfM<}hs|=e_0Vy32_U=v2k`H}{R%5e<+r#f4iOTxFgTW-HDTYZlXz(Nc4%c> zVZr9BWqhSVz)h+1FGI7&p8j*;oy0+(pjNWsP@O-(5w%WO_C(eN^?~<#6mfV^O*0p3 z2}wmJX_Z~jDS{~v`#Zkz5&7Z~*K9mfk;{O7rieKwS|tl}#O6hkwT>`i{ehtR_+9(x zd6g}JI(&H77R1o>*fVq%Kh7fRtiSFxQ!X24_IUYuaJJ>zgQ>n3FcZsaccGr!vV}k3 z*TRDvlh0@Qj)>vk_LRO`!UGH8+uqWcpL=e%1*dlc$R*m)#S5m_p^H*g8MxuFx>V;q zb&E&2h=+15tkUh;F1@a~aiFG7IqRkXp)@<<^x)p$!pv$)Hm zv8EC6FcFq`GfGiFF8fCrxt$ABp~JA4S9$*xv?UhY7k>o?n=(xrMRGchz@EeR193g@ zUL{PnARmLUMdXXZQcAUJm4qE<6(2pW$%uaU z>L=p2>Z;%krwrJ9u(u6HA#iE)3o&9&t(Cci+6ZD4S#cWr{z8YZg*gvfLaj#aG#-L` ziFQP2(Hg=k=fqMpx6mutVMEiav$qrbB(eOiDhn$}`IXm3)87&}n?A?M4;`UZ7oG8^ zOY@PtmbQNYtGwU|b($pk)bza1rdvVPf-7mn9d#ceR=4?HekS`c~$5^IYe)TbUM*xNIEIK`9=UwLCK6 zZEQo<{Zn+tkDgx)h7s7Fn(!Lzn;HX-U&s&D;{oGtw_E#)nzzrhPh(ragq@AviGFe1 ze}R68J>j`t=;2tJxK-|2n^|Utd+!iSa_P5jGMi++b%T*jM^50QrkCZF=F;zuO-e^M z2N-r9p!+P05wWT1$@2E_!JvsM?MDXz{#yx_Q5zu|pSBHyKA&vNx$U3RIUGt>^=}AT zQ)>ytu2t1JH{4Ci;gjEFy_KnQ)=y`2ezBc8SzCm&HsxP zoPha<3Zh$bty>c5D;KARD%G8aQWw~FhiXZDz5uB9qT5XH^*D4Yfkp0(__))!A2_aid6 z@u}NbouYKHWRIqc)YMAfA3vEmOm&Ic1V&dvgb^R-#l38*_DdYCy**Q^CvCiz?D>jo z?5m@jt1(+(>gfw6SlraVu?_NjqkoCK6kcv2K?$49C7qI*5r8R5)` z%cnq!Xp;|HIS#{lAY32Cr)0EkAcS3-FgB)PNh62J$o1Ce&EGgb#HR}0rM?-ge4EN> ziK39jxWSzd+|R(r03i6_AW2-=kuDT8wC$SZd}jK=heem;?|bW+;MeP)+EWj$Hm(~a z{D=$Z2pm-XnL&O!z}~R$@CWcQ4=Uk9C;J&t8$7WY7`e40{IQj}m;@h%S2nqF>#nIF z#1LN|G1WOENTGiRR#6sI`4!Gl2CZ8C1-fMAs8C*wyd7$u_edM*W z@l%hCP$Wvpdj&?|TEBIICdV^;y!`(F-x21EMtdW7O8x*r_@x8uC|;HZr?=wm>jAwI zPi=go&9`JptW{LoR5mb3kF@402enWtbH=MQ2pxqpugg+@ z+v3B~1BHwF)7MV#-b_s^3knX}sh(j6?$~VjZeIRC&#UJ(8k7bWDG$Sg8nA4|!@8WR zs&!T|pHZbA2(>Hd;B=@mhUYU%8C$JZ;!%`h8B-gAFjHBtgCtngR|~-I_3DWyHdlWh z%r^ZWES+^+Q~&$^QN%z6i6JGZG^1g3yaj1#w#g`^VRSbtCEXySq;nexqeJO#7%e%v zJN@qSd;I=B=bv*PuXCR}uIqVcbiMAzHQY-5g703aWZkgK#2wdO%%o1X`a2o=%B=!A zXVd!(6J^>?(K{q`m5H~u{vJ^yIUNVn4hft8`-l(s3TG0GViip^FcNBv8*%t_5qK7v z%6nSUNHt#WCOF+x`4k39Hkm-J^L>1z6*54KItQS z@$cfbSACyriwVInwFwAW&j0Fw-(%;rko(nn@4n){V};VAzpAI`QU~QDx=mx|?e-}7 z?aP#o8}Urz;H;zZn~|%QhZAeXU=MjRHYuClrcX4Fi^&%)kpcAeYPn}KZd9SN3}qa6 zZS}+isE0jc6LGJk7cum(tQ1P0qhmFq1J#_g!C&fPb{?P&gFS`|2*R}R-3_^3yf(uh z=4$M#`zW{=IcNrGCMHkji416r5muc~kP1+dsRxYNqbxuCBY*&N(5LVa)4uqnm$wqe zaW}_l5-TNF3HYptfdg~8aY!R<1px5abaN3KjK3cLG7;ZplAIv)WsKR6Jul}ABf?tK zM_V_i_{ok*A6XCj-l43(+&B29^B3&5iy6LGBof$VY2fE3^kb8(BNg)N)GJc_6A!*^ zL2xsO!%`a-a!fV%(8oRUjAIol9RuU`AYFWXbOxAA*(8Fr29%!5eNR{2nwyCAEL)QV z|MZkm=_wT&)N3DTk=evY?A^#nS33&4xft){g>YjOZtw5e(uYr9T~@& z$4~;Dv?$^}L>?PC@I-E_zEfTuTagi20;~FtUknXhfH8YFQR#lz4Qs*ymBIvYhm=M? zJPtXiPy>1~(au^KJFzN>r5{;WqpdhYTGdZVTIRzQywE(w%ai(1Qobz}z&)4u4`bR&K$y;r>anDvjx&$ILyZ||Oun}r?s-{| z2kfxP-93ygPEL@kOqacfnS_9$4s9~?kKhwHplJ=Yv>y#$X%uxX4qwjqDON|+z&Z5y z>$Y*53SzzuB3FzY^VO^gw<{ml>W~?_4;p_2RKe4^2Lc|hI3DH3bm;iBmM!0XxLtXc zSo{uEA^+RP%_b)bjN;w38?K7yjBzmvs7%a=x4Wbro`G{_&j0>K<09eU5dp*c$&RWXfp&lAeLF1+dgB28%5rQ4rY)wi>D|N+K z5%;@6c&V4IF1beZ$)3Q(@bjmnHkS_VkRW5K4!_r9d&`Y~4aOQ5mFTgn46j#DE4kvG z^3b9f<|fkWrG5jxix#hGRk`15kpNKVkf0o^ONY1NK;8&BaXOT!bk-p<7I*=nv>9#} z2N%~$Oc#{-Z)|aB*fMCBrY5jX#EN{R{&OBpc#YiZ|_4O4LWrj_=C?rx4Bf0NFmhyJwaeI z3`&fH@^Zs;I&^d(!A?E&N1R(N+khr5nIyC96{L+#mOIlwf)A4wl>+Z zNDydknN#dZKGtON9sfDuCc}?@#Z9x(WnwAn^4{(^JX-FUSZQdV2;B5HZtToo;rCBQ z#1B%M0Y1hbSe6%6m7Huels8fEhV&cCdx5oT#1u?ehx$j*t|EW(108bX=Z7rYrHikyTyR|@t!Z6c1F*6!@ng(cw9R4*alr?Vin9*q1*YMwkVN^&?N zD#v|BffVTqIsCLf3>^apvn$Lc4mLCA3PFR?TaZW=6h5o*ir2=&m9wl`xTvN14GG>Hv}1DMUJ=c>8jvXI`OI#zkWAFIPX zmoD#<2qD&OhNRo)ZB;C6q+$$2UJ`=whwp<1Y_b;O0x~>?=@nX3j$6oz{ha?ivh2Ab z@+Nl7X;E2XUPG)OH|-i_$lN>>xzzx^Kxq2W@;=I&Q!dFa>BVldJrOn4wlCrk{EzB< z>>TVg@bC-QeQO1qa#J14`(NW-3lcisH6Xlj-%vUh%*&|*u%`pccoV?=^m&~ zPI!i&VYo{q7R0?_(PQ(EKoaiR_G4`As?o2|jRnrwJhoH<;2lz52=z68unw{pgMX`O z)Kt&_j5BxZzG!Vee{<;lG5>Dl-8JCjB@^xQBW7gZ9%h$of@+~Xtd-Mhi1%K$A(dV za)h^c9z3VS{(>i+L#60t$X(b5Ge(YgtJ9pAqMv&=XDoG@J-{`nstHJbBl4Jx<9ue) zB$@lIyw+k(LS)0q)a6na@(qsj>h=6g{Ve=1=3t`Ak_FzpsMAJ#?P*412D1;+Hyk-0 z9pJaK7LF{keG}=JQziRFv{+4``CAgP?uykrmQ^o7q_+K0f~mELHbsYmI95eLgl&MR z7-RV3tc1*#)*sLDD>eBltRgTsy3b|H?Tz!fgtb!{=NY^WW{=@q( z*r&@M`(VOSK+L=zHulMqxpdMBu2wOkuR;iN9H@%(rY7DB;Ym`gGD|(2=(k0=Z0p%R zgipB{llC-~KX;7ZsDY>Rz;AH<7jhDRmP`J8=2YiYALP7Z9IKUFd7_J z$I+n|-@E)KSuT9&SgaGiT)N~W#MTE%T)bA{_P1<$rY4rRB6LghmOxF9NFD;YkMu35 z&2ug3tFtz=Sv8{_G5}w64>%3HsSlqG$tkfjl{))s5TuqdB?H^R5J(S@ood|-ICcwH zqMQ7ZEs<8%@Zr3>i`-{)xA=sXzC{4H6|BFWXBr-+F<|soKeN#c7FS295a20Rg7Tu= z=su>(;%zt*PZ*x1{CP7$j8P)(hex+o?>KZ*457>3?a!~9f3!|w@TF>)Yu4W6ec>tPe*_jaOcJj6)~aKG_+3-4B|gm! zB^AE2TsxhN7|hdn91o7Z8X1zWbGd>R<83>e(=c7dN?;86^ zo1X%TCfTueQ6}O*h8_ z&zFBBQz`HComF=^5@zob*i?3MLi33C#cEiGLAj;*jAH6CvA^-c)bKui2GE_ zPbRvGubnejHS#fbk?Ch>vV+|(deKX>;a3tLs=!sBGoSkhw~A!Y^m3j%i*0LK=gP^x zi}%|e*~$G!pvpE=7sYdrdYu63W_!5L9rp!zB@vQsrH%XLiFL-B{tn4 zEv4cb;#*R=-)!@7DxA;0emD+RB~+sIfb~(Vu7JEgnzF`Hl#Dmn6e0w}69#@h5kA&l zF161iQU3Y#zh~o9MTv(RKS{sYv+V$hm3t?qT@nm#8lvGh*4gUfjB`J{ohmGVo07i; z;8o%0kHygZBrhgb>!mSGwgO2A2v0Q?MRlm78#i*YDrZ6@0N@q$i(=qowM%Bzl1e`N zLWc6YO9^@~pHQ8GZABy~7K!!kL(?@|{yvLXuOT!Z! z@Bg4S6+?L+?F3eV$xLCYNso}yFaM6#J#MS$L9M7oysc6;pmneN#6g({F6~n4Fhlk- zoT@SRpK{q1h5ac)tUdDX&AbB*^>fIaIbkSv0BJ&iKGfQ!=up_Xx3C ztR93*3&$C%|4^?og*Ui!|JD1$$@du8Z(l|56Gr= z>BCuhYRKD=xye&WcRvPu_pVC_W%5hwn`gky3gt#MwHjM)^_}d}E3_guH$4zYEa`yxERf@%MvcC1EcbR({R| zs2mBe#CYGit*Ep1bI?UhOBXXt4 zK@(QE-s)=i;AI>r$H<(j*wEq32 zeUwmBe+g!#)xZ>S8bGO5)8;{QNB83&0qlUN;dwOt0xJHe6~s3hX4ZURl>(4x+azR!#ioQKWXoh z+AowtiUB&$X}KjNByx{M4`D%boGz^Od!Em{@2jgMm-(O{!>HOs0ViZ5IhyWb53n3A zOTgkE<+YO7l<+_q-(=B7aS8wW>ORRTm_KX+~qG|TdvI(rDZe;e#28?H@jcA+6Rj8 zh@!^K3wA6WRHc=Z*sPyPYDrHf5^fqRSP2XBh4>`Sb;PiZVO+fTf~~#$(FBhl!LT$- z3SjysNG``D((M}Qb~(42n<4wLP(2@@PJ6wZsY4SoW$Esp)L^&#>@$Ve4X`1w?S*Yy zHC&sUymiir8npbWk#`VmrJnI|srWQ-(l}6xGj&f-o!i-^dE1oyxys=%gMv5lHW$O~ z-Laj{OdL~~I6FfUnqn6{>%2f5MO(E7X{MmlkkNTwP;xAFMEcFmcL+bgn)+2YKxitbm#(BJGL` zxxS=Zl)5dK4-7LO55V=P9-Gqa_w|BW&15F=H{-;(5 zdR7@r3gVTmvQ%JxSXP34^&Be&&y9AfK|YzIwdh>T$;J=3%_T4QHTNkE+@)cDv>Yqk z&vFY@7I}7fKAX^xE*Z%cT(n-zMXES$8s0F7C_CYfjaN}j_tYt|EW~kH`qEY{Ejri! znU4grMXVLd#9hq<{_B#YExPxx9)BWvKKH<&p=z+JPlH;FJXVs?zjS6ZeQu)6n zJKGLWCH5IL#$M_4bn}Ah5;X*$uv(^md`yUClkoq%@X(TLf<-L1mEz9+NDk*%P*NF2 zD!LDBfI7awen130^L&jRGPX{WB!qS%0XZR=pQ-V4s^#W{d+lD6Bz#d~$3iD}4!@elD>z~&Bhoz2%iN5`W(NIIJI8>at6N~>So50;<6aJy6SI}9 zAJG1Q7dMKFUKS!`TaV+>u1tm5_yW`=*2ze^)HsGwnplo= znX_nd%?*pPqo}IST`rz1WS{rz%C-Jd|7`qtvzTc$+zxR`{ji!A$LEc$iq}&9QN1_A zHKoV($qC}{<1H@D!8tU$Oig`};RX_wPr+W;UnQm=am2h0wcArY$5ldp_cuEb30{IP zKJa&TD84gJ!_Da>o9_{W!O8=w$^0G{9(AWbBn!#DYs{}Hm)79a+}~^2TXr~&+LWZu zOrzZI?yU3d20A?feX7C|*rO1;5zr0a2>>?aN_dI3|;gujL8NV&hfZ7D(O6klK#-DKdsPFnKz zgC4ZWqrD>==g$(4XA62ID(!WG-?1Rj zd=&*^?dQ1Q+~f_yrSFY}&VUkv&uAhdXb$Z>zG4?i7cr{%09VJcmv6D+gocRAmS1BC zMkr+5b9D2rQiv-INnd?tUuP}$ilRQ+^Yo5J4in3kvpVYClxH)OeAs{A5+wM$mDqc4lJlk!Wj@V3eNbQZjW*%-ER>R|uW1nfLr{&e_2zRB9;4f|4^{AofaE&Z+F$xwXpNZQ7jz(zb9|?NsNNY_ZjkeW!2*|zi)iny=HhvzN zgg_P#JNzPimi`e`>1mK>}cLIkxq5MLJ z`;5c_uItprYOo&U*s+Y;lH_E@hqrBY`Jy#@r!}e!0nr$}Nt6J&C(TXFQ7QT6`7n_e zGA~O1i=NWZy76FQ5ww`5mvW7T$V&*7yFGO)vP~A5lOFE?KNaY?NAx}~MFXk+Co$H~ z+goRZsas48kk)9A@DN`yR_j~TeEe74fZd2X9w2(4Ioi>E}wEejMj6U}an##_R=JEptPtpws9~)3NzPGWND^ z-DsMy8Ifnms=!IiqwjXFnVWO6ucIyA7~c$N-&Xrwdp@ zaep2rLRm&|Q?vKA?KxwHhL76=m|j$#;f|=m@o2MJ?cwhCSdQ9Eo!K>8e~ZdJNt4z| z`A6^Cq=u0uHyxVk>;82s1I9%)y4Fxb|_Z~_*Z0I^Rh-* zP5JbN{ph^DfPtZd^fLd@Qa3skS!f#GkCoK&TUG;`e_Va>K1UQ#ze}Giv&+AV&A;$z zOBn3dd+zUmSoOT=;)~?FuqYl2;`lSuI|6G-8^5NfdYj1*=u(85O~BUW=CwHii@>bS z;UhwNi9o)$)vlx@a`!pdfm3g) zN)LE_6th+lm|$8k)fEe5Sq!e7;T*QbWv{y#a~ZfPryeV-Ds-cfi7?bi_!{}3wzG>7 zo{K<^i~DRq0u*f(F|U*0R+s2@g#@+LXx88F~XkVI+2E`ht9|V`Q%ISaO*LW<&vBC6gb`|29tY3HQ)azyHs~pAe4u_ zY%GG8$P9lUuhH>ykfurb8ohgA`JU1;q7tH}<~eAmi>U+*nt42_Y+7R)cm* zb>csCEYZR2RE&R${@iHGe^6p0W|fl#%)LZ%5e9v;5nZ2l!m#3?4-?kDgwCeyXBLn3cGQ z?XR9m48^yeC1xAyxHCTciqX@KhA2ydlsMhe?U={h$NG;CDfyi9ML5;-Q`-D)qC^hZ zLLsDF{o4uWkwK7$r3W#s+=Z$F+vHr~b=Q{<>*#7NFuw$C>H~v!?lFNDJq|A-J|=eM zz~)slrsAnuvPBiSyZp~EA9TYBbeWxElXJ~oDJASpfd@g!Et8mfhsOHem1T9@fm%*2*5;k5xbx?bY_ZqM_N zU>LOkcogY`xaEna0C1ugJk;m9))F~-hvvQA=WZ!S`~^Ai1xy6}ilZ31KUQGG2Yo3b0r2hc2=p+mt|C_&V*Y;y*DBUiFBvb$ZV2=Hs;%( z$#@{E>(}VQ7kzb#>7LSe8WV2saiTV&jR2Tn)OgNN-O?c@FEj*z zp{juk-d93@aV_2K_|uo}2cNY?uUY*zNZ1_+$fo8RSawW=cUk{Y_8nUFRo5r}7@qi# zAgRg^SvarPn@a-3XWqV;qs~B6Wd9b}@ST*JAHS(Jmm~Vev?w~a4O*-f34L-yZP9c%~6EQQHrf0}!#Ex1Yp6vr?GS;ra zM?{Ko{{ehkY+}r<%yg7t1o@RS8P#QGI;zA3p_Dtzxt4&Z%E}c}<^90*Au5Q!7`>(~@!8DOOXAMB8n@)pd8rQ67= zj7BDn84DJ~U<+A#?^G+cAy?%xi>OH)Ir6zV(>802o0s)HsNNl$> zWzZps+aU;ERhGUwf3r4uw&Rnv4WM;hq1M*i?~PaOvG=LU&S4V?@4Ai4+5qyX$q#?y zIe28yNfJO2esC%M`l9*hblR86Do&U$)2tzMJo0`3@zps#!wKBE(Oa7BLmK_r!LxxH zWjUVSf92e@PSZUEyY#&9(E&tjM)Dm5+SSJwax{2US~DcpcHJXp*vBL(R0UsxZ?!EE z=?}Fz91e`YD9DiZc{|MgD3_d~$UP32kpn<2?&Aevc2C+=H zv~!h&RYXH<1c&3RSQP9+rtNGqs6y81JPjv<^!yRMj5|Dn}K8iC7wCo`7%u9|=#mWPkB zryhY$GS0v56(%x!D7_gvB&;RV8Y-DnC(>lme+2VdzpqZws7B05(G6xu7bMh4B@F z{l+Qc)PGC#(-gmZSY#(wO87S8%P)S_4%z22LLZ;-vH$)bhPIqs3lW0{&Q3k044P2G zrT9_ZAGCJnY~DhRzOedr|L|=ZB9B?Y(`dsH>Q!+} zy8`(2ioBHmmgjVV2R#FW3b%NaRrq8JX(OKW5aw}TNpvw1n{S;-J1n#jR%^2p)_o%)eG%L+?K% zA=0lqP>*r_8h2BD`Unti)?^|Q*x_1z+_M&~<}GCTTqk(s4@5$Rr`^37Q2*_1gu9-P zMdQBF0adPRBtQMn^>4s&wYlvZh3vb@T8(8;WASi&WrR`WAYfa^L(Q)XxBva_nPocK-tUvJW7NWn~N3#)dr0|mG7Nj{)e8==o zk8Mq*`K|eNMbQm#MNsCM^9Mg3l^=)-Kjs`%Om23k=ZyMR5Nu~w^huT4CvvLkZYdy@ z!xPVM=9hK{egi&lFOn^!h~V;Q13tjo=SIe*88tCeC!LxL=!W;HuR_0B(;N%s&8+3% zp)cj@)78*t5Gfs=?=>oL?cH2yG=*sM+zr>>|CpP2%2mp## z9}j^}lYT3=~ggDT_uT-w;{lBUAcs{t=Kxv@dh^=EI`36B;a9zcW$4C(!xu8}TWsl)>+J zI_;M8_V**q&z{zvd zv8fGDp_iG8yMp-AmKix{8Oj>1IRnA88WjJVd4Eu>Gy7+vvgdVZB?}g5s2LgYPfVr62y7?6~k{s-;}SlHz$% z%YHt<`RQ)g1MH|Og}UIHgCQxIR(b*)URlDd<5{MV9v*4<&3nSnCVoC*N~2;}>#JU~ z=hO5tqCua@k|ya@AC5Dji=1DyCeLLZ5T)pxZu{x!=wW5%I|KcT z@S&`92>l)VFUmX1ZO zmU$ixSSfD;GmEX^-0dYL;@C+B;sZ$wrL}a+Z6l_o?-MG5B=UZ0g>WMSm0SV{*`Hn= zby)szstFcYarQ8jHKlO2q{!f_VanNQF{3B6^KiTHdZGx?2e_U%9q!*A`xdFK>?#eZ zCP~t(Q&Fq-Grz5|3HS~c12ssx0gm?1`Z5W1i+zA`$KU|l<(p_R^IFr5$qDXPO4OxP zpADUXf8Nx)b%C}K+>4&|C+NZ+r(-n4DFbasnli}el&>NX>Ze|!%qYmV)+Z7YU~0&g zVj4@O5xgCmnLc_wh&ESwMYcr+6`?2ZI!4toK)U+j->Q=ET2XU2(4ygBOJ8`<1|`Mi zIy|pTy*g3Q%eHTPjCgy3 zb5Hh?h0n9QIPNNNgjj7X1{+~L|n|V zs_qoz?{cak>k6h%Fvrw`l8tdu*Gv`*fH^VH{5!{D20FY_R7UU~OUA;zNq78m6`2ybYjcks!5Z z!G${2r|2sA^iNok5(5qUX%Z&`7j4}!oAnO{28a)*d7t{CCdf<*kzNd`%M`c=?x;!C zQ}e~~R^<*MF`$(C6d=wfsCxd`z*amvxY-mje>biNT@wS9MzYXhisPL%x`%^P)qx+2 zJ{u4k4gNa747W)})`5gd@;#>;yy#RS5!&?%337pm%0IB8S3~!aiVq^&5GTdVdu4;L z6qWP$Hc_?r2CdKeKWHU>!)#EA+q5>DI?p$ihK}!(&ggmHGYS?bi<;l@sw`O@t-xUu zhKQ5O?iH(6q5flS04A7Ae9oh}!jFV=t;_xd;en>uEC`Ygv%6Gy9yhI?q0c+7d=tGc z+dcHdS!uaG?lpPu+1=Z|r6pux{dxXVwLXJ!f@0wSuxe=c`?tTCM~L4UIjg%KK1rjg@-`(>M#^w zokF=VA06&N;Oh25{c$H;i4Voi_$W}n zyjuwk3%0joSkHiDVD#zqD4leVtnfmR#40Cc&1a*_Ut}nGZ-{XAy>4e{wsC)&Z;j6w z;3w6pkE_8crFjS72Fv{ zo^a%!)U{we!ulUZ zd!GdSWvWqpEMIUWg(Cv-r5u66_EzsI=X6P`_dcw83^E^IBXpf;-$ZF%nzuhs9jW&0<;0Y79)WJUr4n)7roCiERfQ`98Rj7zyp85i?P-qY=kmx$?9P+4*z zp_?TS|F&AFx@U?z+;Ay-?M|gi{wPk-^H&@-7oI{nRiw(1<(R z#wCn&ZwPj}Heq^nXNGI?CJS!bHdszin;MK?Fy_mgpsdbMLBisXgde?9GnX7KlD_58 zjdbH7H_a{gwe+*fv!f!edo(r4m?1pUgG*)U?}gf{xm*_mY3Cc}PT^7tr#f`!esDsa z#@fWBr+V(^qh`-BM*69Zb3vfLk`T7(qE>Bx{d72~9O5Wkk;zNAnCw#LZC=&*`o@Nf z;g{4O=HvJDoNu$-|D!oA3UZ<2Q0wHsJNvQ}DQ#4HiY*2K_b`+o#+ zLy8uwzQ5Nuq2#mari`$?oUuK|haVE=*ni(_!>?)8BZy<1RcUuW(m$8*-|ah;+%&C7 zfa0_yL-d{K$fr==cHXVsH%E*3ost?m_gUuod+)&AHub#0cB_IapGCLm5{#m_xSuZt zLHA9g3s{j&H##-ND+!(r%BJ7+S{6aYmdlURO+-JEYV#YMAxkbSXojX&zc8c%4f-xZ zRoo;_xpPNFgWXF+^KR!@ZblWubm&6#m-X@D&KSFB9L}Nsx8=|6o+97R)Ha5s&xp+Z9xCC%|W?7NJXqCX+-#*};Q6YLe*+ayG!|#h(Qa`+w zIqHhCf;U4w;#-Xx>{t{IZPSfpp{=P(s>?`l$6K`om+l=h;TLz%2%qhA9J@sO0TGjpQcG!`taX*+dCAVwAI)aGWOkuHHfK`4 z(}ANb;;2B~Z3EPIn5~Jv^3$CBcO`ax3-&yB)~uf6PE#eI_;wMYVZuQ zu@CWQUL7x|Ir07}!3}o1DyU;GB_q=9@QY==FctcHPRU)CC z``=7>Z)tEokjYj^96=bb4n63puhWmeS`tw)#rBpQ#TN`X7x zRhAs00caQ`0is^9cjZyWl=6v%87stSSy6U4H3bwcMr~}fg_6c{TCH{xIhK}H*;UJ% zF@5VePb?@~2sQe}3xO949vEfss8wd!X-=ju;jH)Y7j2BQY zd$pE3i(kMvVebiALnuoK)G?~$69r{Dvh?}0HnCFM$-SCdomdSSZ=nVpf@0YCNP8fncU0oFm4$(efyP<8 z!^oGsm%RMHO%&H)E>`cP_VS+z<~;1<|9!vSD*YFsK_2b<`zwR~`ZXB$#{`6cA)jhn z6zh|s?;ZLCI*(~`I>RxSV_JpG5!Nz!daodI)K2=DSj0 z{T%La-8t8l3D?V!<*xx?Rf^R4b!PyCqUgj#`*Z1J5LdP6dHExZnN;BFE)@Myb~~f}C(M-Q*m@+dhwk}DHPYy$6OMAZ8<61+#ZN%Yc;%p_1vPy` zDjpIdShn^o{ob#c_0|-l`^S`P%B=V~JlW-LEr-soabBT(aNV?ye7-z=DkmSXI*B-g zrcb*}Scb>mpK6;7=%pjRQV2V`MnAY%;7IF>oAQI732N2UC{cg^!#2}+2LvQ_A0)+p6ynWquX z0S*ToEYn%so5s&Eb|6Vl^MN$L&kVW0ju8tJ$Ft9gOW%^cHcu5R&4oLzZ$6-=J^^F4&)@5kq>Oaj}%zZuube+B84}8@Q)v72~%P# zP5|3oJZP30-Zarnfk>nC6H%)@9#s*7TVU?@%GbS?pt9H*x%gNSwuJCf7w2Lc&ds>l zCOi84y!36~|4|=BegLnl?hacAwF|B8r#^Vf@S(qX;w#+8M}p5R)^0QU-pxi*#>7n* z_+%x{u>8*wM?Q}tFhEdjExcWATEh631WWP^h&M9EXd+6wDkv#LV11l;X%sgzucy`~ zDiv1hXk*n+&iphpX#h&Uj8vhzq?041JJ!v(^ALXz?}^!`WWO4B#?;f3rZ$OV#Y+D+ zWkgmsP*nNTV|%@^;UGXm0PE5>dK${CAC?89Qt*9InGiVcbRC9iN*7YmP~<*6kyZ@z z42jkYiL^fEP=$<6DAt|su8sDHD>jyVqK6uqn?6f>Z}l+?cJYru`A}{7JNE4cNy+px ziJLOPtb9M-r6DS7D3UtdBHV5JK^8FJbbDKnD}phkl&v>kS#>$Ox<+y8@aP8nC@lLW zjn7Se!6~+QThQ7Yl3-i&(w5*+sY^0jIWmorV&kmef9PIAf}}ts`=c6A`&NoZ(RZe# zd;F`m+qD(lqG*Nyn*RgGKsdixMX1keZc@%DKi1qa2Oi2jYsaC0%yDj{aM(U&Pg<2~ zHyHl_+o@{J@mT!71feWWF+tR_r%n;Pw!6D}BkP~|NiH@Pcp!yI&n=u+HFe_#FSa?= z$>0Q1-^#p`!uqF#yhU+#mPT8pw2yto%)6Td(Q|>5+ZD6@t7wm#TXPDj1xV^~>T2p> zzN=Bg5jiQOn}UZWueSP_(8bFcO-~I7%A0K|x$|DyJ*6TlKsQxIU z;#aVZ)tN2PMmWmkpTO1KGs3#2qQlCvkc{IfnEc7FyrQ(RkClQU$55iZ2gAt(_hEKP z`>=Q^g#>%_HNiaEGJm_JCG#AzO+EUldL!fI_Hh$1XjEJyjBN#(2XaXDuQTxt z{eAuQwH*;qVltiNw@!QHyS*XJ(S}XGI*F>sG_ijAWZ$!Z*B0I%jwWezwrL4JCzp==WSZ?f8KG!0-`mP`$YIMLob4cIj%(jn#&#C+H~dQU zhwYfegFk@=y6qzV-&NZpXqMK|ZVGNWSb;sVMl)YA9~AN|O`%6Ltx|97tHs-`+>%Lo z-1MpVd5NPnIpx@RMmpWaG@s&nWcJa+;QN@PRC199iAO?JvObl{OJk(TV;uA7a7vDf za*%@AJ&N_OK)KRiPJ!A6H<-rgBLXzXeCO{G=~x!G_aji}5yU=ugLI7m;aL9wdp$8< zM@JEft4&IhaJ#$apEG|rxA~J+h7vR7t7)XHl7*7==1B8T_(Ogj>YKM|Fr)Vc8YUl| zar&RY&j!v5L-vbudKGQLzQIjXO_2flWF&LOe=}J3R+?qUA~L^1K(BU&Wtvlx<-}Hk zT^yS}a}$u{wbSRpVds9liZAa+=jG49;|P=N`mdS?KnM&!16)0~hjm*ksUf!U62~lO z429VkA52&1RQfKJA!RWVPg9dzd-w;#B1MsGqb{VK&B-U+n*00*5n>}5EKO-mTir?v ze>W}FLvoTr&;+agnDtXwAu1r+&>!%^z`TzZ*Og;u~g$W=lJb zye#|zeFJo>6G0%kww4(|igU;ZAbJpeEA#jJN5WnyonW_Bvbt_nPBycDbRU08`X}MV zhln)mX=1*WlFcRG5=ePnxyc#(s(m}x#AEO@FgTi=wCd4mUNM!W8K==(srtrOjK*d- zN-?V{Rh#&#K{!gATHUA7pI0PO#KZ?DpI-Hgs%lGaVKXk{ynOQ4&UT%@o~l_5@c z$T`QgeLC(&FxbU@SDIn57#v)wRKA+4t!#bn4y7DT2-Jg3KF>of^u_8|6&LnV9E|>T z)2Gg$9<_4{sepP{jH4MnVvhT?v}PTYGsYcC@Om2OZu~!YaLma$T$=6Wl0XL0o@&ZD z+B3##?{9aaCB;2@o<@8fb^KRtT9&>Og z&lSA{a7V&`D!K*-lT(q+H57+)SZ${U#Z-*sRL5meS0?i~rQR`6fCx0~C>+xe@cu~rN@BONK~=0+{Z8Q>ppT9A}rTlhtELYxxOXlE*t zd$Nlxs(2hws{L_RxM90-rnH&hgT-Ge{{SL+nO}2fBymReYOrL;1E@4$4!mZUE&7j} z$f(bZ3?F)7F`VG^>rzP|h;Yht&|{p|9JeT&hQXHQjYYldedFf$Zbx-AZgvi$vWzUe z1J;_8MDlVEt!VCzo4!pln|OiqmpJj(Azk)8-Vj8{>nX|b%LUonn2uO1%!n|HfsQ(U@RL!fWn zS%9(=j=4Cl68b312A1)Z6Y_;Mx2#?)XK5-F_2;#DCZVg??%EC)q5l9rwXIHBNhN&* zv|9B$s1gA#$D4ZNJBh27*LquTLn4+_$EdF{u%Af0mP{kyU|_K$j`iqErP;lu!opq| zC5_fOLIxd`yvoyab8OZjphv(A% zIOx(4mw(#PA>u^XSdUX2n@Ic#s;Ai(&|xQF>qA$;qXsDm zA{j?dm53bIvuOI~hc!5Jr^^k}`lO27`;6whFmk6|X<8iJV}E%+L#g6nWYW4JxNNy- z;w)VAfzq)g(Qj@L3=j$DJYZL(8E-}c+s1=EbCdd2OPftjLGs=&xZAh&uT5pN-m;XR zrh@wXlC)zL_?!y(S;U!Zt)tLZ>>5^&Z-#k;F!gG`FNf{sjCr>ct9L$S38Z*_*-l8^ zj;z~{>s>LyP>a%pUt7uC$>M5FYf-Nxha|dsa}opY1u46eJVw|am=%QDhL%i=9m#OK z1q)e?cXsD&R!&FvoSauj)+s{CPAmK;Ke4GTd1U5TR~)mX=yCg({39X5BW zi7u!Y9!yElr!_Bl{AjJ-wmhyis1KOpue*I1{w54J*9(~)j zUV}@+<%*9@wWQNIJT@zG&e+L=pT@PPg@yEjZ@bjxo+e3rPTi5u>V6-OQ_}A332)y- z$`7IJe*<5VJ|Kru)3uA6d+5rvEXuMBs{%N|Be$h~&fH$dYMWGi-nH^S#E%Fry5DTK z2rkrMso+XI55LyGY2aQU!{qqMQm(H?wXXjFmG|^#<(yxX;&U7ngX&<&sZ3Nml$ps}|R{(5Va;Z&Ia5Bk-@3uaIT_(Y!r3MoHh?mWlVX(ES3YcaN(} z--Qb4>1vU)x2$Z>*1v_`Iq*iF_b|(>TSO-dhS<@PMt=BVUb(1SY4=WK)Ab8`ggGEZ zBCyBdUy3%mm4u0dbgJFK&+|30ZL2g6S_`d&cS#5IHThO+z%s>RCtYJCr#oMoH@&?N zr^@)>>J(!^<&F@8cIB6SbWMJz>q(yG(f(yC&w8D_L3R|WowoXQugnWSA9#YsU4&fzUE@t36I{%3RJe2Q_m)@2+205v&(k@q&K zb*o1-ay9spRTvY-#|`vx&){p6@gZkzFiRuJB$mP2H$`>%nBj?FPc`zb*TzjU=3g>> z4sz^%`dug_4{e}T&l7xS(DjS;xcOWur> zB(&P;w{mdYU6n?sJTnN>Y3S3EZFT66e7Lif_%T37Oc?(FzzU(ITFe;`n9+R95rK}q zfv=k7__3onIMZ*z>HfAcSQh^P5%id6G94!E+i@Tn*ZKbkcO(p&=cM?~(XJxU6nj122lN&76nJAar%6R%r5kigEAnT|*Ww(qrDonX z67zC@~hJq>eQ72PVHYB>3Ha%GuH_m9dZw$#L|+BDwpY zj@stt5ZlBcuIc!om&xW)n-K9pB)7uZ?2O20YCB z4oRwa8teH)tVIX+pZqKG5>JgjD{P}{Fv1vRf|O6EL7I)eB}poeH(j}T8`4fQ_~O0l z9vVBEt_^sk$`@~J8{PHkgt`ubcb@2y` zZ2TvEu3hSPm-kI|EW3<$ao}wn0lG{N#<&YzN5mSyiJ%u!fOf2m;xY8jM*_W5OYkM# z>aW_bJik#8^GW)%_phVNctVa%QmuJs5>;moR^t@ix3X4tK5HAqxct>pr3{iToM(0I zD#5mO zaLyTYF-oFXiuF^y+fBc|`h1VD!(y?q!h0!U@RVTHnuXF{dRy~9BGS`b+P`GdZe)J* zN(kMK`v!lVaC)uItnx3~r+0Dp6Q}@ia64D)Z;iez_)6x|3sa@)7f2X7AuDAYu=}}U z8bZFn4A+q9egV1h5Q28Fwb69-m^)kBKtsqr@!rywch9Lf^cCz^;+!TLl%6V!qT;o? zPTsmFf05x~a>!Px&4sB(yrkOq6W3qnZKRi}z56BjOI1xm^H;ia9hguS6U#{`;4vMr z4Su%VJ*SjNj1D@Uwep{b#nzh8S!s=JX#mR>@^{?dY{{TK&raHbMu2^jqZKAflkKJ#~aFe^`f03+ND z%&2z&#~+cc6ufCjTy1ZD^~`CyzL%@nEybn$GsNF@qL47b_Z{l&kuR8^yljE;k<%6P zF;Q_%Nl87LXTQ(Pjac;=nnH}BdwW)hxsgZ=qX(g?64{-*;|2N8;Zzm|Xvgn340x`N zM%Ma~&UGn%s#Gw}?*5gFsp_`&@fkOc2O~9BSuN33Ta5G5x7N6=LfFo-L_mC;3=YPk zO~o~RdKDC#y^js?7snVheQL#Ihc>LtvM@P5nfxp2ts`Bt)huDUw78B~rCh5i&szN4 z_=oW4RJ($7TWK5;SvHK7ubF%sd+~q5I+K5A+0P_Juwi~yL7(oNbM&v5hCdfdtd&Sg zac`p4dJ~C{vwZQ^FLb&eylFImfJZ0NujeB@tIK>Ht!f(2hwZO#G^>q1;!KHc=i!x? zjF0wDYV?R_2jwFNy?t_VloQugb#-U>obaDAO>E1Bi6gZ?C$Y^!SPTpn^x~ugq0T+% zM&Mfl!1}c zy-Yyu!KjLZo&_eD(;6lu;~Dp-`Kjy8Q)tupK_8DwcGV*|$^LaZlujoZ;Yq2y=|8$F zJxg=-=~HcQK~khPypAU97Rc$JL(O89yFro_n>-I%*q6(GRn7sd*d>kbFecttqU|H; z&r12}r77<9*`|7Ma#7oD^fYa4*dfYoE!5{U=}MN^GqiH&n!2*cG7Me#IULgjZZZpG zlar3*_7&9_MMWihE$(B??%OL62_3&o3Y3K>YLSYY%Vh^SW<2px5ry=vmCWu3jt3P9 zQZhSdB-AWQf=?O#RM9GI7(X#TmT11V9g6bKv9K8&^ckZvvVu0?a@^7zbSxaKZGw3# z{Jymf*bu~afyv8arKXd8Jco6mhc&{f-IJVrx$Toxqq_|@))^Sd<2gQ+6ycm1M;YJ_ zzzSHSo5kd)IhQ zGV6oKeroCWu`*?8e|NpX1cAnSXV$oT$zzn^(FigIsso zE!mi?PPjc-e4q|E_OB}!JI|4K)a# zS09PRM`dd`R+Os{23Kk70L^)ii8Y-@7H2wmF|Xd-PbcaD{Hi1Sx>viq+RQJ_Kl3>m z{8ge{&SaYP*r6E;na1OeopD-rekb^Tf<>A|!kjY|%H;cFBDh_Na}!PWdDWRX*sQyQ zat<-m9S&>D^*;w)YWHl>%Op^Yg1Z~$80t6}=BkWk87U3HlJ{kC)(((y3%bS>7lgwL?t~tpg z73Y2|hvQAcD&FchH&Mcv9SGW|A&(f`eR|i>!xdVbe}xy?&y?}2(u)9@$X#z+O8sM zGfr39oOHjdXO%22C9BR*rv<#XOV-Dy>5$mZ;i)X8`#t@nQK}nxP_mp3gV5K@+Mj^D zJZ5?HZC3k5xKqSZ?vgC}D-1f1&c8wYG2qEk!B`ndW0p7xl76+=TzDOB*JPH8f7)gl z{OiB!)0#@A8k}w2-LJUXrXLH-7aU8Q@{332ZJ&?6J@{x~Oq#vCcmRTzK#%-(LHSop z5A9v8Td+-E!*g5qEf8efBjZA;Uc*n|3eT`+|s96J> zc~3e0<8A&`CYA8}!kTTwa@$zJ9Ex~kja2@4&3eGbFgjM0uvTx{P1Nk#x8G)UQ^i+N zcX40gMrW46(gSJKKD$Il^e^X*%#t=O7}%VK%SuS%XCoIV&udLud4oVS~Q zGJs2E0}&6(jErD#K9!^8u{|m_iHYf59G+%e=36fvO;B)pX1W%H0m&boQE12EQ^?Ea zIoDR_6^A@?6(cwm*)(AEtl2G?=Zbux%$dkRZyxcviLXI`DqEeMaa^pH>=+(+?N;Eu zk|W5#u8LDhnAE1)GB4sJvlg#Cn1IIs^{--(MK~pTp2obRTtI}Xj2iYZ_-9&5$D3ag zsKK^iYMN$)t3a!HZmvMW$fs+s(TDP{n{{u77t1rrrrpPIxyXuKBjfAP{*~<0t<+nu2FxY-7_E`esj!%&?6@oo{h{iEAI1Z;|;{d4S6Cx2aZwbsGL8G?&fw`JX#o z_*YSja@^RXW3#D0k^cY++QzBs+IAT1sxcfY$b|N|U=kU#a8^+gBa+Ntat>qg^EB^oiXy(D=vl@ES znwOS~@AyxVr|_1fkCA6~2m1kE`5NV}biGyrLtNd*&-}Evf9ab0M*B%iIlQZz4MNgP ze-dZ%BZFKe#l5g|vtOPs_FNVIV!ZigG-VsPzno;3SunbG`)5eTHclz& zu|8&tMb<8Yg|WF+?gA1tK*oC&V*L4R6kM&mI{zZ*(M?9qF(OtSpmuK5g>>-=G8e*V-Cy!@Kz--KhBL^lbo?wY7%YF`q_# z$MmnydvA*uvP6ae%DZ&@&!+rO;B6{F8fozA z+LNP=^4wlB#8({UpJM)1^E6%p(m%BsZuRRVkhd0=NN%6#U*$pX$*)(nvioXgEmBFc zfrz*=%Fe^FW+Z}rdQ}?@9@afzNiUfTd4b*#op~UT$Dtj0?O&VL;;d|G@=}~31pX;2 z$^H6%2ia5MJPhkfwj^6*HaoYmD zKSKCmnlhl5w{2oj2C$7PDv-%n)H1QbTT7oQgvp5QxYHI+XfRV@HTJzi_Q(L1694nRH(c`Z?ka-p8 z)-M2+33m#9Qg8?!xjn1plxFhm4`p(a$Tq6XU8JSKS3>b## z&MTR^(Brs`)9lE1LPIrGz#jGx+upMA7qg&3~zep-G9$l4d}H{tt; z_QR}NvB&zWh=fiv+Xa)Qbdr2&4k@-yZO zIKddhqmOUnWur;>wc|Zn=G`={0(-z*eDPT@iyg~I>=Xglt$LS*{0XG!f4jBO^yrTm zeu(I_|>%tnGAS8j!kUU)}$d) zHj@X;Bi9DB(k9>@YaL86Nq}*?rcG(95~t?}6_T=MyP{x>uZ;2Onv-v-_XeP0l_zIT zzvD=O#&FyoMOFNTVnPNo8=vJzm(&x%>M8l>IT`+R24Z+`{6(yWZaUA@|101OPqP7+=SAq}qsN%PYGD3{wnq-clzF)iF9safE#tJE2 zYR#Ovo}Z91%sXVBn83iNc}xc4N22{bYQGJ^I46_OYDYV80LVYewb3n!*5av@ob(>2 z(wN^nZO^$B>|t~FbJyCU&U%gyQ=D;1!$eQKXE`Go;Ab9y({@C8Awl3SMmp2H)fvir zpI&-ZCY~7Ebd12~fDTE|Yzjzhb1DfH6R^q0PeGj5HF)tntO+}MU=9Y}{Cn2T_0UL| zsyKHzQaQ$Z{sOqUuOibCKt5Q^TS;bN$0w3;>sDeY$fQbk9zek7zH?miW~mpXc}FF&lYzj_ zO;XBviJTTV=V<$*rDqtV5`32jV>vi6gMs{5!5I41t+Ko1mKg`-Ty@7B{xvG@Tb9+4 zXvc0cay{}t8qK^(k}y2LBV3s-!E6G_Nb*f6T%*wZ_q>dM6cH{p5tz5#}&-S3d+AAWs3J}7oaydO) zy=ncCWoXM?Aqp_KA9;x5JxM+5qp-9=I?d-Jd25Wa4t)iD^kAn^w%)Iy=t@mRSuH!6 zmy< z3g0wi$ks2H8$nfIr2P*?$I`aq(12KE{?U_jp-(DNxa1rh9=)rUwwA#zVvVo!=8Wbj z*^gWf=aXKgW1?w~JV9l?BxF8&p)RWV#Yle)unpHmoI?Y*LBv5#MV``*cH_!59 zHgGe8jL~9^WaCj@%q3=|u(-6Yyw?TKY z5BQ@`}TFvuXSl}tZ#2D zE;kIlsWF|z^#l=LcBYz%VH$m*$ubvbC!Bx!>sHdRD&02MERF73d; zGuX%{L!b6r2lcOcytbL-M3QJZ!ey5XPDg6xZ#1_sd8n%=%+2MbVVLeD3=x81R)BqpyYMc=F6?<{CPv5N-}1umHqvL)5@3F{^fk4_7ci`l z%96(1hmC`&{6%~NdEt#GQMwCtrCHn#S;O0*AQs0UgOTaYX-V*tM@w`%HO8T%T(Bff zVIhZSp(qa0J&3PDmSrUEB%a+G{{TP8;!-h`%&%{+Suzl zE%rsV^}NJ&RFE+rQPfwZ3`H3&CXNYFtsUVnTWD~xvxZ9CmYlGqiMMg5aU6!o;%QWEyij?X?N;9_aMfV?_ z5=p7U!b-$@lZvG^#nj9D`$*o+egC?E6XB>ZZar~?7 zu>41Ya#~70eSZV<>f9ZfQi5yQRGQk?kK%l0@!E`STf1Vt3>OZ7eFkw{{m|5$lOKq$ zLG+#^n0{mfUslQBE6F6=5Z-+;lloK_pA2=VVe=-A3uQeT;zfmixpFJktHfDih3ev> zmwC1Mvz~@YpE>D)omRY+U%Qz|`07vXVSxILgx~ej&6JC9fj0! zDx+N?7XJVpkG8__uM*Ws%Pv%t{{WwykpBS5V`umuouBbDMh9iD{04Sk{gSjiuMynF zF>B_coagOtw0ZbC?6vyR>|7UlA7l(_5sa&I-p>RtqvTbM=COE?6DNdX}I zy+G++4PH6H+xJu!yE>D%;I4f&9t*~)e)&P$e`gs#mD`E&h5rEjBvv-wY156s$NIRh z46Hr=L4XIjsy3RRiOMsth6<2`lJb&pKRWv2>*4Z?W-V(n5$p1RGq(pA#dMZm3h!ky zAhl&8Ba-cpM ziRE&u&OpenOkW-H%Fs{pJFq+rQAYEH7{1X>>GN#-ksl8{eL5fX%XJIdD3qUGGHR{w z!yRcQ3q8&3%w0em)-i+EJ4Xap?Iq8KH0f29V^9pu_tIiA`Ow!R($GU%p37+wh-ITi2T9@BK|8-mGXs--#wR5|I$>t9M~*J&lD7b->u z2+lV2uO_b*V`|1xRV0&IE48ud!-TMj##L`p&+Yr${{V{T#CAUqBZ=-BTST{J04Ndf zCoS|ooY!-0;K^W#8X1bIPviMH1ml6}UrpXzstF|XLiwDIoO;)sYThw|#$dDFL*%l8 zNCS3P>t8ifGQ3lrp1QVuMI5dW_h788qDLE}X!B}TH$P*UA5pWE$8!KYs64BHe()ou zbyoU*r{*+wR#WiXi5BOtQ_sD4Mz!O8E)9CuRnxT@R`w(@fRGoCRL*?4K*mR>aa|3c z#{U3_x}D0wW#L;=PabTtylOr0a!q)vFuR;(PoGz2mrpyLZwWefdmj6y*u&*pD#v!4 zKm*Q*q2TAQPCu1(8kPQ^VQ%d;(#Ak+44iZwtH_!^ih8CV^If*Gg@zg{D{@?Y9!&oL zDu!Q#9v{?7&3~xs*KN*3w;2TcfB?a%samX;yGk+jfBcQgimlOn*=f9Ir(9f0H1zYB zu>pzsSMlTz&aFjdb9l=xrFh#(+R=s)$BbwAdYa$Tyfvd}QTbM|Ix3dixNihE*V4L) zAhWq#N|Eg&Bjf~U*1Y*bP2NuJd08FQ<29_L-Y)I~r%K+RU>H&k;Cpu!)o8e@Xl$Iho%K05 zukFml8G?dF;6?x^x7NBSWsXmj%B7d(VfE;L8p?5QNH1)IcsV%l*P5;+wvTf%Y%B)v z!=d~tV(k9_GTOTQjb$)Kj5jM4ZKoWcKut`_5!eh2jO2Is{3{?Dxi`M2*>&SD?nYNsN@Wundj^H zR8pmz>}7BU03(BtDzLSGJ9Kj?Rs-c>+s-VT=m8ptwJOVlB0w9 z*EMqu!5?)GJ&*YMRV_YgEhG>#ONJz-c^vgz`*jqzZCI_6cRQggra|D3&GX(DR49LC@Zl0 zR4jNo=zIJ6()`3=k^cbKphWGou0O9sQEiv~pVpu%bAnId?Na%V{nkH?D<)OiG38D*O=PXohmyKE1}8T&(fG3bI5F-ymqYu>$Cy~ zG{!dkl5w6WveR9MuVSQL0U6LCl3$ryXhU z^9x(#XO{)e>=njxMstppRRg*>;4wYMF`l)s&=dn{$j?($r$PZ@ryz0lG-#Hh)$ERL z;pZ*5Ng3IY22XCakRp(vk<5FKI3L12GHa%i);S|8@d66q=g{@1E}Vr5l2viQ9@Wg# zmbY4(Xu30xxQclhP)0T|%Y4J~$Gur)V5&Crj4vHOD(Y8G2&DBS0rPqe)t@blvM5o3 z>5eLS8rJ2hCv6UWLlyg{1A)c}1J~=;ukCo@2Wa_5eaEINW(_mTC5(fC&~s3jCprD$ z9Opb$#wjgHZMGl&zRXJX}N_!iImE1XI z+mpr*OkfO(=8=toXxW&UTEQ+sO83PhbiRgJ(qV;p+& zPHQ#DGmt?-Se)=aRpSHNy)CrMprwTQAYpz{)YmOOh>w<>tZ)~sNXv#4OjzbSYg#)L29&6AwJu%~!Xydq+K7jz` zc=WDkQ?k6evk@)94i^ODo;p{NR;*m4-LJOCr%sfTidV70%p()qTkchnj_<$#au3?5aG5{Fq?OYW44VBHSJm8jg z$YM@w(y38Gm6E=fIVr|Ye9ldItWX>HRZz> zh-=)JExt!|=+nCAN?#=3-?`=1-w-YiM4CLZ?HOmcZNu;lgIY5DOz?fYXxF!oVZ7}h zX^h4R^xSx_Pgr#1asr?}!o25P@P?JEuaS8l+9Dw39YJ1wje1ecaa7X0l|zN#@Y8SH za9&ORr(I#MXgBePwbU)=Q^+YQwtp(<#L5Q%SI2k1v#)?#_qJ<2l%(f2^E7xrKyggc zej50*O1wq4@s_0|K=Bimd=E^KUaT``_NiadoN~(`{tEX002F^zeTLI96x9dwBS>_8kghS|Gt#p5^xqKv{3UizP0KiUH!`R8LYL%e{ zzw9Lih8vrIoE>GuI zq0zM6{{XvzR1u7U+PJE54kw<}>B2s(wr>oB32%O-NqQv}`koUc7K(+0SGNZ|C{=_X z#jO5&-U zW2#h9mLgVbW$v%S$89{P15Pc+4;!Yne)IfKpJMReh;HqH)I3FV7%ah~vk7XL2LOD7 zcRyN4JQd-qYl89F2`0`&l9Mx%Mh;o>YuAulLpvWV5VAMRk5gT&7M7dU)-X49{A$)zT($X(vv|n;Oa>qnvY{&*qG6z6Cy(_M;vbT9=jbUOy>UwkTYrngR z5+)&VD+^7$Sgsf_``rypYq(35y~%V`qS{7avW+7-Mg%JWr?)*TF7Hf%#1c2CAY-Q( zuScB6Apqd>{OYvUk$HVdAaVFpok?=&_9`^v&9>)@Txp(eX1LX9UsleiN;c6WjBOf0W))+}j2@?w4RWibUqg5M zvl^jL08x{leAlnW%`~M(aKoC@O*SP1@LtIbj=uAO}er^`-FKD`cd#==DV(jHfU zdsfuCDomT5w-M8d=wps0QO842$tYEBYGWxyYVM5X6yAr9OQM5u5DWoAM*{}E6G+e_ zjYe3L$vpL_mM!xMHk{|0>>z!oJk(+2`T3uH3#}E)W!UHM{5x$Ww1AFB%n#DM+HV5r z5~7!|icFGl<99!ed+!bnbH){2!w0V()!kAlwJR-7ST}23=y^mQ6SKFs5v7y}xH!aP zBhs@pts~3TB`jC{&;Z7J@m{@v#Hl14@l^$qK|h+@?ikH;%2Ssuwog-7!U@XjR)aGu(1MScXBap5>!x(m|2OHPcF7?5(x*F{vMVKAN6; zslwi2ZVnrv9lfecJ2f_O$RM~eu=x-3u4(f|rusb%qN6Bn zsxDhum^dyD{A;^MRZcNFn6N)+aoE;?v6JQHSc9CNx%Cy%%N$aS zV+N=grBDdx6-~4xlO&Ee3AC^zaw^U_;0}4L^7APf916Cs2^?@}QXejayo`;!8b#cs z0tX%GyO1_{9<^v}D}Y5-kEuI!Atwho9`znbI3tdu{3=38^r~bw;-~PaWg=2g91+3j zf2A-Icq5U;Ld&^%>MFv#dj?O|ngQG}>&T;YezgdYD`0Xc`KerHZ=2g3Q$s0k*r-5k zbj1M+0!hVqT(2_i$DCA&PYTMk9 zpxhogBN*#ek>71K?{2=?;)hb|@&lHZbOLR@Ug!x^;~YJu8j#7HN8tGr+FY!yNIQt`0?W3mRL`w6F&>szyzx z&~Ry8bvkIFK&pUaJ!$vSqzG}Gft=Kls9*}nGhFtgYjrO5&kf%_t4f~HQ))50=qh}U zYnoO^8*_CY*K+%|f`1z4bjv5Wb0Z=7i8ZLY51Vu43ATngZ+h<~vRg%1<6+aScnb%J zoVlc|qtg4c*m#OCR*bcNT?ydR?CovT6$F8jPpxyJVdgg^Vulu}A598RK&mD`hLOKWwEndId59+j)7TzQkbl>k;Iqaw7MQcMDIisQUP z;!Q6>un%z~0)M(PPvu>ajH4&oKZ`l<&1Gx3XuS_zzi8#cE)T9Mw8;;UsCwgy@T*^l z{u#Q84Uyb-L_Fv#AxcRyzwDYkPdRbL(0&&lIEu z70O)dG01SLN8wSW(hOrXE>yWvRw45@%-gxtC4_so5mONqWb;^m+GST9)?Bxx^PJT< z(o0C{3C-@=)A@dL3;|jZS)@le8TGC*E3&-_tIerCJJW-L*4m0(&r6+?OK%z+fOA-} z+uN6R2mo%QwQ_S_yN-sbE##o^NTOBM{t%5fZTC7~_(yb;DRE^M?+?HXxEfUlBw*&IhINegz#f&(9}?T`#E`K3D;8f7 zS&_s}e*;^&(R1cf*RG5eI=q%}b~=ljo#;SMT7yqh6}pYM9M?9Q{kAxP{{SOTmtBu% z%Wom}!J$f@KQ}XNF2ixD%gf1R-*SxXJoyeVHxpfUpLG*P6dsl3w;H9xmf2?f`&BDv z)i)BbxX-n7Dzb#MgysJLZnJq)=32=wneMl7v&Dg4e>5^j&fqccSmteYlNfRMS2b~^ z>vI#5_%!NNoVAV~qke=_gkz(t1dmCw)^zrLl1!n8y>%^hV#skikbUdtl<=+A{mmPb z>sr6?j$eU=4nG>@g?!4*JT1|@so?ij?e`v$b9-kLOnl&L0^7toS(pc7^{zR*F{qQu zx%_HK{4015`jc46=8j3n4QqGQ)qP1OoooE;dwr&_q;OH!rD#5{YT3ksyhS`WsW07* zt&IydqINdxQ@9me(o}k)|xCi%@jV`SKBfW9ML)JgLP8tTY{n1j^ zVK4cIXlv@L{$8i^I~cXN0}P?TuEyU}vT^sZUQ)Uqt_R!|Fwu3N?uyzU+7aG^e$wxMntB0)?ya7Z(}SCqDit)EZMp&B;6r;L7eue8VQ^;tA$$%X#_pYc6m z%tr(;rcUuZBySbx38w47V;`+c{g!w>qvQz}+XlR}_$Fh5CoA-+;qZ0p9Es=eX( zqIux9n){h_GdciIAah0z(dsIpw!9<#X!_!mL3R{_C*z8>N~iMvBy+?0kv2wo6y{~d zYKvQ60;EU??~zwb6A{#YRcf728D*IZKjGl4L z4vk09IpN%>Kw-~nasiH=D$un7cJ8Rnvy26h)hbi$Pds~(^fcEzXRS_S3&Rp=5(EvA zAs)t`vY%uxX%e7xsNA4F#?r>LBKw8yYJW2_Q%s3Z-fzyH zbm$LJn$`>`+$dCOFR;Ghds?5&$}4LK?N2t)k;toA6ojp5?BV>Vo_Tj>Y16Gw@Ct#n zix&IQgIi#VGAVmHf64((1hV_S;q%Y=pWb99lVqJE6z}ZYEdKzj6|a#^BpN-PKjmL= zbI&-$_X zR+iyLY4S(17c{%FfV8(>iHe1^+d|unV?RpO1W-*Jk?e=fF7NLvrL-zIQB0D~2017* zSE#4S9>V5**->rcUW-#0qa*Irw7sb1U4ggUqAcLuor6BLFWF%|R;>(BYOK2o@41-P zHrunXQmwQ<^UPL|rNt{pvJ1ZED_Fu`I|Ws^(RBIo=0J~*nHjE@igsOs@43mZhxC=k zEo1)xzC~RcU81hli9q^R{V?^S%dlPdF;`Bv1MUitSV8^4TNGlKEPEl{_cDf`20q}X z9Xb#0irA$Xqn168b3W!b*dYGkrwa%N@QT)@#V%O(LCpKJC+tvva8pfbg1Hde&{ z0IMIBA+WXo0G@04R*vNqxdx6^*g2neW{WFeKh=-QpY}*U=a~Ge{{R%Z6zsbLW`Efr zAHY8rRoJq16>PfD;&ChDN*MdYub zrSg-|RN1A?Ar;JEbON5Lzul>`P2J5a0HQVYr)*zJP1M}dvmS$jk4kpc^rnN&HJFNa zWRmS)N?nWTRea3Un~fTQKE?E-YWh?g%`W3lP#?53}^vNYnoFUp46MEbMHU`#-g57Q*%qY zmw?yvlyn7o+zS#AYyo@ZZuIq56Pn^6j4AB zZ*0`NjTBG=vS|r4Q9uH*%}7|$MF0xMp)T2?iUx_1i4<-$Q9yMZSmKv)qKX7K6Gl#G zqJSThns{SH6agk_xinEg2~N!vP&NS4nkb+{K{WiDD4+$&rwS;b29r%DiYNiOG`XUR z05WL{8YrNB27+nXG*Li?l4(KWiYOWac&39z6adpkNTP}XZaZbU+m0!rjTBG;xaO6ehe{}_eE@KF z#ZIhE6jXrmRNh7giYNkgaz#s%MHJTHAtsEPD5kdoGsPxoqNoFLrQB$ufgz=hFuPGj fC$I~=)MiEkiYicaAbW`irB(Y}zSL1d1b_e8a5{x; diff --git a/assets/images/avatar.png b/assets/images/avatar.png deleted file mode 100644 index 719801d8241a1f2fa7971b3dc125d2d880b6ab45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24906 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 FzX1Rv?;ijF literal 101879 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%0DPIoqP*)V;fFgKF&E!5urRCMDNz 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 z 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�WbS-d_NL}!w(bU>0yEHWx3%`R_ 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%0Au-H$?*&rDthU30IZ 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

    uBR<(V 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

    C27pY+y3H;XA#L@AuK8QLQCf)|Wyv6!#rp&^q49 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≠JG`X)##EyZO@Y~@)Uv>*}_ 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 zio)33�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

    *K&Q=T-&{SvZ-mN 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%0D=~$D(&jpUv;=BX*Hmm< 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%0AEYINI3TSXTv19C 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%0DPhHyjOk3y0CVs`oX( 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

    BD-pvqw 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

    IgqldnumD*>ze=a$S!|q^6!+ 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 z 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

    ', ': ' | replace: '
    c+^zB1v%z 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

    ;i}a|YUM=8)Y9)FrnV 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 z zKUE*ODh(t>g+0l23cOgm9BH@G(pg3~5tN)IDaHzvarQcDRHjQ}Cwl9dvGwGSM5KKe_eQ_HGDPbi62)TPXl53c_JB`|(H zyFz7XOli}bsv!)Ru#%@2CP$R+ML^y`ALy&?M{kf@ zcZEgTbrMXd(Ww;i+ub#4N}lW?#rhjo6bjU@fB1ql$S82W7u*tu5J5+E9rZopilA@_b+1@0G{wC z=2OKv#8aD<1vK`lj?CQkL^hze6zY5`L;F*bl=}gId~20>T=;o$a2s+S!D7_X*^?d9 zD~v;2SL)19b+k_fs1C2t6S!?Ir;c-s1LGRmYUfUZ)s~|i-z+BTl{L8(>T^q;s)VrM z5SmC*2IPPoBxO6cj~M;A)~iaIY7iR(nMBkseC!gisY`bI4W# zcAheM{`%8esC%Rn1Ad8hfHeJOKNcV%wi}TY&5*F-KDnmARCNKlUZcpuc=P?Vh1Cz- zFh4aRqjMcQrgovVONUvQm%B4&MsvR*Yf?~_7yV;sE65&k`T_5)Pj<4=8y~7Idzv9d znre>33VTqPl(ORfp@h1Eha5pTNG#-#w+P@ZUOehluKh+}0sP%u<0J1Uq|=7=ij_bm zz@4TePN%xjc;jLn+LVpZH7FYRy3oQU>d2<3Sr909Ja zI!&h$9ZCNHJeFpSep#963PRP4m}V^LHAf(tTVd&K2Gq4lSXXf@AZN~Too9C!5?C8E zfO;!@CxRdXIf9FFzL^P$Mv7R4Rj#;%$E6`FZe+I|Ru`2dr3|(Q3R;Qxz}1{QHOE_w zhV$e<&tyd>2Sa8(e;}n)h-^{Z{1LfngEp5OGqO6@+6yWzqxp{=%NY0{1fE8?+)4VL z=aH$T^XKdn(=#L;xg7pTYt=MHlShc!kV%r5=sQ>1aah9EqECzioN@E4R;)D~;~0tb zNXN^_2Y&hXQQFOJLLR9*^zr2(q=sqKrkw1lOeAe5Dddt)LPiF?Eu9}DKrl|`5%Gu+ zK><6_rBh#!(&SXoD^n04(_l8O%^)~3+eHZ(3dkjYr=4=Rg({AIkR_nWKh8+Hi@=us z)9oqh>5`g#4wDXS`KgyFrH9@L45bKdIV3FcjN==)8r5M)zN?%Elqadkf+jkDB||Oy zD!p8*$C)~}5#>D#baI#7l&2X%IYI&w8#^(R%0_YLTd%I|?dTT_5y~MmpIAnrf!q&} zRyDw=nQ|gpamQgtL3TRO0$YmM%GBGNNF~F;9x^kpC2g#~#3uyr-~1vOt*5} zu}h*;U{~9xxbu}bE;lkrPWD=g(#z>cP&-_8YF5OY@CLcR5?@q%SwuKM`IG68~4kZB!wIVjB7o>W1^uDXL-T)PUeR=$j4r2 zt~M0x~$Xk$NZ+aDq@pP-uYB` zP(qrfzbh(QT22zRg@8Zis{rFU=Uo>~!^y#M$%QoJY!B5XR*Z>N1vu=){Um6;>5RNG z+MQX?^3jZpV;(b&Uu^#X4UwnKFc5o3vV)@Lc0D4ZDX~`_w$|cf)krE+sAN|K%v zZh)u z_=EKsDMcOncd2M?2r68MTvAi8hcW<90DSq@`#@VyR+#HJ3F*ukC9WNL{F2R7+hRha zu#Wp=;!;$d`EerwY6Rme9yFC$UFLVNR?~5Lhv%p8Ermuf(M6LjmmhLEU0S8GLY_g- zaVN-c&O8m=57SgNrmKrv^5yeOQk1$$gBa=ZS_WZ|mlrVxOj$@$-!c)nr3weqw#ddw zB;y$U^<^poW1XDgpG5fGq zMMOI49fMPC1(PN+*D6CPAeM5i;YtZghZ#E2a{9FB`CLb3rOj)aGb9-cPT;6Wu2mzo z8P?lcko(lh2u8<2op%F~cJNcobb zH2QiRsnVER&qrGhqq!C4`wys~dXTn)h)UFx`APGkO5;l$;y+RIT?#sbU`O-SMx9}a zbs3fU34<;4IJP3sgWqYvvy8ghld*e1=N=W~I--?F3VH!K+!&8zy2!>ufEb?OgZn8k zW%udT65C8J6EycEu_L&YmYvV5xD*Bgl%RgcOFm(e4E+_(qzRG^>E569j!lOhbinjR z)ZBSa1ueD%%T9aCK=rHzdx65StoJT!oMF&;V=Flf$ppbYd8fNf#F;i+gfzNMGMwY3 z_EeRRs7?YSD9Cdz02iDe&Hn)0>jw}nrpD(}h{tZYPCVvG)JIdY+N#Ym7Zs<_n1ZGr zh>0uikn-GC(p&9}qyz4J>m9HG_%je=0b0`CM04MeQEJ6Hw>C`{3lL0J;lgrk+TvR7 zwvEUGw9?d}wMs*I&eC^aYtqxXq#o*yJHXSi_f=JM4M@!Il@p(OLZ#AT#A=CAlM-@6 zGLW!{&B{ZWA!}m_3nUIxk*!X$b$7@u5wvAHTGtrW{PiiBsc{~8Y+EtfsLQWKbFkc! z>uknlDlI<;g2}HtK@5Hp|&k)RiSCBzv45b(Ze0iqgh98yk##)pP@DJDd+_^;VTp$jggQ zfl)-HDtuR5nHEcHK}*l8APgsYPQp@BF@Qny&b$}f18$@i!*L+*`YxHJP0TPsC#c#M z^#zNHzb@IZ(!;TBdKgVwuFWl^xa>y~Ptm}O<6%k5>MB|Ej&gIaH^!Ml)}>pg8LIyP zD`#g8ZasgrF2@e4>Vdd`+{hArI;+urLz0>^l<``f7N1RkxRK;B5j!2)ND?1X)Ix?c zl?;LbBP!R6x8W3BSh}N0Cm;-&>DVsiO5QCZC9OL_1`qlAE@JBUSRmMR2p@-Ch`OuQ zX;CE9>5dU1G=|txwv;^DQi6utI0(*Cr4yXsYw6z)aL3+L`yrzGRE}Qab3A})<@v5{ zONUVMzezg~01h7Ge#=Ui*PfeJt{P3%Qj(!~SKzfqs7Dae9;ddWkQ|b56wtuR$;eN( zvE2L-#As7}3Swxr#o(8H?{2-7H5wlI@jmc~=l=kg?yP>Lb!mMjwr$EyCJWOezZg!Z z#bs+KTQ9g&?{((_zn1Aa%8#qtjd`vU@af{WH7eBd#tH5^4xwwOcIp&^DmEL}1fPCs zzTvnk-9xu5Ys#NXk7?Xigw`%)Q|gh!%5t3CXM3^P{GrsITtUDGDGKBRt(JDQtS)O? zRC#?mjV#pNgQR5ijlU(%HD%%KhX8XvTy!d+X8Nt)_4-5g+p{{WU(l_>GAS4W0W;Z#f6OjfI>$UhIRaXtC;TCHk$l>mm8yA#{| zb=`D5+tce3*>(&&f}KR7P@Z<1MrORG^77FYYLgWm#}uLv>Xon+_`*_7++)jA_@9Vg z>!n5Sae{Qp?g;*roQ#co{{V+B_1Ztee~EC`{viicblw5P^ILAO8B;~QCU{_PCoeru zZp*%Z`Xux^!s%laI#24$QelYRt7PV@=Cljj^FV| zRSwqbZ*E=X5_&hF{DRR&m94cmG=SGQZhXagfz*zoblRiTD{lSiJ&vnb(^kZ)y$YgI z^e5*-SnNn`1xh4zTd$3UlF5b`+g%>R4&=W4h=hkdvaV$igx0tEG5m2 zjy|ea)0uuV*ilg8M!kCR>TON;8Hyg0F@Kr&$T{{WqWY7oyU8TpC#*(Z8c9Jpe_qrk1U)a1@oh~=QU z0hilPX~NTJKg?PP2~t7vjO1fh*s=7>t5j(%JI+5oUDa0=E07!`CS#&Kn`reWYM`}x zUTe7v5+095r?%5Dp|>0?FTDF3PGoVBwOK&)j&gKwuWa%y>3DdT5=k@AAMO0siVk&O zE1DWPf%(bX(OC6A!ri7+YW0={QHoe{6EM)uVcAsEI+M|gZ2JJ9KwrPEh$OE2=&IV4>0OQh9;XF>IHdHJiNrFilbp9X*Gsvqx&qkOf(9;`(AoLN@K{}IIS+wiT zI>ZY7xanv0VC& zr&-tl8OdqfXIYAtc`CgLD8m%0)BaYQTK2Z2ieP9P zoh0YqB0j0dq)?irbx)_(CsJv1>E@|d6^iXTy4g!gT;v&16CfZdPBvUE?jT@$jiBmV zRcosZY@_S8?%D08;%9%tf1Zlq{w*LX@$5(sE^RY+n0X+NsEakT6_2XQJl%hw))+J65VwYF7P8*a@RQ z4vZtd5cEmQXZa2Vp<7gzo&i}0B|Lq#;rK7W^ypSEs}GWJf6DCFxTfYAszbLBKA+`q zC1$Ang?$rFE!PJ3B`hsT8Fb~*jNkiPHA(oH&4$YWYL50=Z#HmykWIF88`Q>qGt z`|Z<~^l0ipks%XF5?wn|aILBd#z`Lf=Q*z~0!EdkmAoN><%wF{gqVO zQv^1T)<;{x1u9xqwMUOX8osE8m`6rocEy)lrz@nE#fftC?c0Xh>jl+NgF~rOWg-Pi z3gA5*lDH~(7F|+Yk>TtmfAaSvayeA^MKf^Qmu9CjN!!zJqSZ#72qK|#Pa@C`dyUBS zAg;##6)jk{t+`fWi*UlbqtGi8AViY|YT6h?h3_(9NGM!MDodLjNefE0r72NK3fFDa z_dL;SUe*S?E$l&Q?~lmkQ{8%cw{J&wn;zVh)xAii)mwU{38iJZwHfB2-NJ&lu;=o_ zjk%BjDJNK~P$A6?5GHZAx@Lw3^ApdPqVnDh8l_rN(*=&|mK3sb5`lnLqBjr*05~6P zYiNUona%?rK$lxi$1XCN*?N_Hr54{b;)^yCZzMQ(0Em1`QuVc?P2WOwvZYDZ13yNjeU zI*8@i+{$#BvF!_~iEokg?mE+tLy%Nd8*zyUKq*#2w`a~duI8mWEb$x__#alC%;@IM*YD{5{0$P}fSa0nkBlJdSo*8)r@A>pBScKGD~zr}}ejP-=ZdsnI6D zRf4+odW<>Iq{-U2uR02ThBIpfDJa-UD)N#(GJcO|M!f*m)qbcEF$A8abSPWDPxQ%u zsQyZ?>`K)}i(RL+FSv>=t6z-bK@wqsI{mnaPqDMNeh-eN6k&JisQ>nB@WK--~T|x;>!)i>BmqeBVY6cn- zB{b_Ur_+`cRDekJHm`xM6>EXu7G<>~{{R;>^(hU#K*3M~JCD>OTy>a~*5rN!^msCB zNscT_p`zL%u_3{-L~4r-f`VI0ibmW6fUkXXtlLb2DhEq*AE-Unkx{fjZ9glcmIMBK z6|2-i))uOiC`-Aa)&Bqhg#j*7;~~*KhTYm#{KTy)d4#AbWdxn7P}&Mkx|X*TE*NRm zW3>s=;${a){FQ%esvb2nNH`=N`yO8DpQ;vB)m&z6UX#=z79~O|)>lwa4gMt2N|<>r zfR&|}HmM42VB?WM^~C~s5lSq?~-z1AfC6545|%bmFZs#9xhp-EXO2>_qW6b{iy zzMi={*@2D!0A;LGd#U)YX)K*HxSonFcf*lDs8^)fv=&&QMJ~>As|U3q*(|!^Q?Xr) zb^_EuQW5DR3(o}T+f;2}8&SqiA=r=Kvdl{6BlDZ=pK0YDV3IP=NqUNwxO(@6gSQ#kGE(OF5Y4jDP+`l%E-{#j`hz-kcDoITvY{#IH3`U_ydj0) zsmJ4^{{W^eq-SbK2hK8as-GFDZ%AnxoOk~Km6`ONSj{<;xG)FIZP`9Zx9E@B45lp- zgs8V=I&1aHjCM00u?6(ToUZBRDOxrZ>>%@xzN)8E?^9mMfssFWc2%>7QKn_X&&xCZ z6a7}xq}D9xl*XT^B8*yb!Mb@ut7{#_pgDEnxuW zK?l>#xbhGnbl>KpS1oFxOK!bQW)jQ|^wL z-&TE61$v)cqh0W74pS+KOVtX4t~B>zOqbhE9$Se*ij}t^Io-|*ul@R;hf2rP3% z7at()9hX|#*ivqw@FZ^R4`IvoQMgwJQkKf8@vX+E+VZK5Rj4%Uibna2Ky4~%#X~KY zjDS_Ub_Z||%nrFXRyNG@)p>16f>Ia#^R*7O>;WY?LMTTEIiNTDCZm>Ku+0!P47`!^=gE*3%N>oTKjomy_BmdAUK?QNCjMLo5pQw(X86-XaUhZ z&pD5wS{mOIF9h`Ltm{Llba}NSXo@v8O*GOXA?cHu+WH9C>rS?`t7?)lgzo3ceYNL! zmk+GbJylfAK;f;%2HD%yblsnLqq5Q>O__1p)i)TZQbY$6 zC+XitTu%Pk3P|6OH+arGcuNn6Zg^{>4I>4v5D%wy)oYk@Q)uKrWR<_xOUlZ7t8_ZI zO(_-F7nKrqOP~v*3G3|7LBbZtZ)wD6N z@fZer{{W^YRF=TL>lNrUJGRZWovcQT>{t)bYNWE%3T*i0_ZJ#Ojp%#@r>wXScY3>JCF=urb&qIK?~0Xbr$n9{`g@Xl(*;5`QX9!p z4+w4`AT28i^rvaZgPmjI_N_Dt4TJlxzr%#ot{UP?a!7Ch4@1#&Q~hU~)Jmdjjmo0b zE4FiL&1RaCTzZzI_Cu1`eF@%#9F58g04stHyxl5yR&3Qx#KDpWPeb}IQC*xl<<0Q) zgNcw@PpeKn)bhD@RG*|;*Ohh%tlRdmN*kP}T^I4h+4S5(V9z;ot5-OX8@PKijSQ11sWyK(!b(zvN| z(=JOzOp1gTTrN|jw564yiE)++208r5R~tyxNCW2|d1rJyhE;J9&`fs=iTXEeUN+-( z`H-!r=bj;bp%#$r$ljA)`5!q-?3{cMns| zyH94L8bU>Gn6$*J*IRK!+=^tl;37j$AcEVdRtkHmSLMJ7P~%9_=9tqUs$foP3~hxDiPYs%DiNs{jY8g^ zSEE!5&};KI(qzp+{#v`KIYwM;Qow; zTeM)x+e#va=BhM@ND7Ld4k@(^Ew=!`_ahwL;>m-$%Ij=>;3Kd2Q~t8s)LVzAON~T? z^ymf%AFeOg3W3( z@t>zml)wpjl?;~Uww!DZp+jlo3LJ5*6x>GNRYhB7RB$fkk)CR8f3t4Z?YPk`3Z(ZU zP_{^`KOsL_%d#18IMjw6+7*;5(x#Mi{W&~obxDYX<%O7YgNYr1k7SKvnF6&(fpDUh zi3@5w!r-~>=;&@kNzNQej<5r*r*=bXN>-3a=Yyd46N8mgX$oRN(trB|*?lu^ReEVa zv8qtg-FBLj_-*qs!A@O5B8KShcG3Y$$N;un@Kb=WbnbtXOSbN;x1%Jzt|jODa6YS& zI)iU?+}f{~rdI8{$%iAsUAI+iy%Ky!RvTW~2*Qx-Sqn&5AxSt291U`+I++kb1Z=vN z_I04VRB3N8aPMQXna>sr*Rsxs%8&aR(NesZ=Y)xWf*fcOKI5EYM| zX{PN>mYj23`q#8=o#B$*TY>nU>D6?t7x+5sg-VG&eZ_K9E%wsLCO(^B?lDH;q@gaBVt0fjEx%-9@?)cG+Dqx$CrQ^}=a}BZ?9v%2JRY zN}Ix&QrbV6D)0#-Kdzdan*4!<)pfOYR3Xln5$XA_N$kG4bYi^<1umz4(IUGJBAlYj zTG$8+Z2thtQ>SZ)$o#v$ah+3M;;RfXp!LiUgSaKtNYPF~=fCQpmlyE?{4~)nXCy8~ z4y{qFsVSP`6#Ma|IMTpI_8att^MZG0@2u6$ce~2%E$k%x($(NqGAcVj9JPl2rODRX zz7=TJ?+LXU1H#F>YpG2&xXvL_BBV5wrKu=&UBm*V=LB((LDk?sqeH`_A#q8fpkUYm zxSxGXd5fiqZd9Q^3W*|+>*_s-GKv&bG6J03*;ecv6{PX!8rDqiv(vL{99-6rPdNwt zrkK|i>uOVL@u}!tNp40CM7GPyb?}6%hSYWd?gkD}cDSB=>W2VK#(s-!H-?<;?J3gF zthW4moVigGEvkb(x}6nK3K?nT0I=gl(v>8jk^+W3(sDHj)ZD6dYCcGhn#!HZ%{H1K zPKz=er-P4C>j`DKF?(N?Ot`keTX^>b?)MqhC59kuu4!m8a6;PYq?pQmn#uYY6-#eLcP88Xf#QXjcbzD<jwI{!V<1e&7mXW-3z|ZTeYBW;{ns)`w@{DwxAv2`C(>l!pnBpf+MCQ`m$}?T} z+e0TVx|Wclrw9X%0m0|zQk_j$P7Z?SIDF<67gW9~wK|=sCC~CZ$jq&UeCVppLT9Evq7j)9}PPOsOSJ+fo`##^JQ;%H8^z z>q->EjpP&pta}|fVIn#9*ed?lN{B9dHA%*-Io^<^6w9jRw5wC;{a%9IXSq>w4BM)n z==?l0Ath1QCNK+1cM-Kml;@CebzXwsHu23~YPPNjG|Abxk3vpmIissKb)Nh3t?O+U zMZT@Dr^u#&%(xCXqL3KLQdZbJb+-kgT)|GFw)NpJ190IEslxe@f@dr%Rqmvlt`7J|- z)vDJx8G(~KD=}2NHshknqeP`Zu0>Qfs)8r6RpmF0~QiUrEOXvNJknlI<=zrmCw6?RP z{U8wHF_7Rr=Lt(r^Q8468+PqA@o={_PAZXZJKAod(`_8O+w7>G>QjS-r@-FBsuwX4ynbP`+1;(kDGqYhJS?xxk*hRp(-8mCBc=*+~F>{?P# z`bj~LElmL6Pp2)cZe?e}f#Y3{7W=LpR9CMRXuoljAL{Aqskfrt4*t)ugoZW`K+rVAaGzyuEK z+1T6L)^VyF8rF};hZE_LeUrRvuCjwmw{Hs9)zK@cOoi7ZsQ1*j#!uBP?1eg#oNhaU zhB?-jIvu$q@>{BaTdzRY?!aU7_Ei*zsxDNkbh}PWM!&<#aS&>RrLOZJ?<)!0>I%=d z8S$*QY^L~qK{`x`-B{7!xG|Y=5^;~`Wl&u(D>M2>R;yFDwI<)IxVw#}WS-k`atX?QKq0I$ru0+eoCI{rKefFs;$#$AR&jhLb6cgNN&0tJA6j~?aywYIBV`QGVnJod_VcVT^E;aUTZ-=N z-ca`5QcoJRwe85Co<2)gg-Bbrkfz?|Jk#nE{ioA-T|s(@deH5rDE91G4Y^&mleuwT zWRRB(O~ph)MDnsm#jnVgS&PqOP+{Q|ORRqCv28|}b>4N>LF zvn9w`VoQzy<3+ZDHx}@7g^#d0R))3m1QlzUS@bkZiwN@&K*vd$&oyyg)w_;|X+f1P z)BH}`qJ|h+XbRZ6Ybwcl3sq#$EW2 z%Vp2^XGbmA*E{t$A~iv$$5+$;0Ec4-A48H*oT0|o!Aouo6=ygxLZ>h$((+^myy~cO6?kTXn;NR6xpbdDmvp2ouS1 zt|`{>d^#Wk;ylF5zPm0V>Qz2PO5%Q{Z=#_61^EERcA%%9TW%#=RhJe#eY2cvTo$yt zAS-KJ22D3qFL3nv2wN9LE?YH=ZVhS_IBwF}ZRCi4re&3oL#}uP0l@=Y>x;GkTpS$( zlCq7f#Sp^M-B~ho9S23x&@EWhX_2oQbA`qvu!O3Hlr{9NW0KMo=c~4}`jq{~yomV5 zfT&nZKau2DLXQll=7z`(9FLf%$_MbpN$S1D4r>)Q?IA5sN!uiaG86gBDpE(IC&GZh z_}4na<1%jDP2^}G!912r+7jT(4U;j`=(|6raqL?zoGpsQHVkQyo>L6SWyC&}p&Vzv z0Nf9p<6j*3%I5Oo;r;{5nLL-Ju(xHaPl_P*KjUR~yJz&~=z1KgdZ9nJ0c>C^KLcMe zZT|oewAHUr?zftatA@eCv0oGmG7AXY#1thU4Y<$g^R7#2*1L3xB>?tPZeReTZPq^> zsWsYgh-Ze8y9LjlKHBI~vhZ66erUGwj%2nB?3^wcQYr9I>u7O8INh~83@6({m7^Z` zD!;aPWl*;-R+8gx(bF9+I^f)_;1rN@G0)pxtA%h=MEH#`)pIz59B?4_=&vg?@p_dO zJer=xwBl3R%5X|TMh-su%f{~rX=5F>>FHN%%(Q%#^=;Y}Dl4+2NNPHOJCaBRM;^mo zK9j1|ewKxKVLoHG(Qv0)dXSnWE=1T8*^ok(cBq1+*wDPQ*dsVN$j@U*qW~L#vsq?uBeyviI)QCOvr9SN>NFgr4C1fjO&?W z!JAp3&jfZ|o1PfhO2V2w> zwL6yi{T2PvXK7-Jgg@GlvNB##2WTF1oqYR^YVmo6Qz(Z?IgBae)2Ou>?ZIY4N_>;r zOKJp+9(-$%>NQ&3P+@DP$5Ru@SKUXmoUXuJPWy3zIZD)Ua5*^l*6t0&KFd-_C0Smm z@LbWkT+s)nb@;NSB`&?$$x|;WMImS3gZ9_AtH$WLppYeb_tB{L#~`M*wIa11OM%6y zmr#s?nem<(2TO{+|#Fxp&HaD^#NH-gg39`eGy7YsZBch=CnMkBlYRnlurWD(WOHZo-4iD)EUb}$Y)Tv0s zpV4ivO@)nnkxYsO7MRS&)$}zGjs3=dDz@@I$2!vb)$Sjoaou5cjXlYU*)v+7#A|A- zs+%f#j_XUvrdXUWnY->kCtfPjP7+ z{{ZJ-IJ&1++4^0{WAMQ^RG(h#JBH(;&yz@!pvu`h17wAyJ8Dpv?O! zZY}&q;0f+FUMSb;cLhH0Vux|K=~M?+rd$MquuexO+dBO-X>mfOv8_Tf7Y41pM}QxI zo30d96sayoZ8Zm^kd&()wt(Z0oocXsClJ@2AbnN$7H(rh!$!)nG38QJ;+#osXY(Oh z!Op!4n@*^~!sXPUcOifO)$++C;2iRQ?XRq`O7LU^bM5yT(IPfVKt@*tV~psu;VEcD z{-u3~8g_|lIzWV~Kq)8TKljxKbqWN4bDnXGe)=+*7<>J^X~nA)#*5P?u%JZDVpBaS2*}K|GCBapYkmcq+Zsoh_E7IXWZg-xi+AzK%a32--OG zj05}Y#_;;C2gIK-JFV9vQ(6j>(4fSp(VKo7B0IAwoykg0eQN~ZkWMwn;}>;nR4sd? z2Vq}kzyU{%{{RUE>2b+wMjKCb5>6H8&VRnJI08UBE1XWCo@p;S`WR*B6t;j`yJY%F z&yqd=0DVzdX?7CSIa+EPtMbCKpxH`W$tME?$KUUyE-j`bny?Qf^HoPs<)Uzby^hS*~kVy(pM0v_>uO>_t1|EeSb0ZJ|34JNTT-u;g zNcPC%+g$tCxz$@GUqzri2*R1%#Jz0W%{rwxDl#eSnza&KaIB=OE`Dxv>~&ild_&q- zK+bZo=dM>q1IvQid zaV!L_sEKg|5-_4NPn~?*#dF-?<0?csz$m@2!!KNN)bmJtu?^L>mjF^iihv}fy~FAx=i^i{#E~h1)F9+atXi8W zO{O*HKCtHg^1#L8%F&IawzVv64A(s@}!6R#c=LC=m8SruMtgL8z zNGmSpIVYvE*{EBs?ZO^(Db#{S;uk(W^y(7R3P$v)H5Q~woh8{)Kg2SriE+iKl*DKwV@T%-13pFx z_d4YUhJXN!PrB-~>HwaJirb`9X4ju$TvWc?hmsxMR8@q^SV~f??noO303Z+Vt?sJk z(F7R6!BOt}(~wlM<#A}3^mMBTsLu(Qul|^zl>h*9^QZp+xg%U#Z#fQj@PCoAHm)vd zCy`EdG$o0ywv4H`@tj)5e^c-u}Thw-@iNZ9z)X6)7qn#wGPin5)h>$~-0vVR!2`X9VobSaeCv0*gKxzz==G4!Nv zbrB-}03jEm99huTs!M32ooDKW%?(YHk;tY$As;xinUoBRRCzz2}xqykiv ztf?%a2|JGo!12!>Pa|DAAV~E^&oL>Q`a)w+pg@n7VXa^)Itd9pWc&M*&(FTS4Vyu@ z4m-lmTzBT67E>)hNx4+=1BIs=X`+9j4!RJqpNynqjdXZ{iuAx&vF_{5OK6NVo0>Ax zk~c$fWw1zZa(DzIJ3+_WRo#GSpH!C*bdfk)HAoRE6-7iBh9B0ur~7oF!*y9E|?}ethdyCWo=b*(*~T1mluffBlHbz{`_RrJs|# z89F^+$V3AO#NTDPBkb zoQ^ryHoHSES{u!|Rz09WAKFwRqJZp18d*|=IWi;0UgNz82vHbbcW%%1XLsLSdmuG9 z_E|07TqN$SN+l|vPOrB}iy0}W!flmCjQG8|5RjvjfP4(#YJ-S9g2(`pQoTQp%+Xdvw3pE$GE2!> zBr7XYjz)ZB4Ohi#IgDnL8CK8qmfNpA5}QzJGpb<-jvc}Y1g%^Wqvcr#-&pNWiBuP4 ztkp40M^#@(?lF7V)TU%eZkthB-8Oyb6xZ;=9!FgRn=g2JNkY~J=RhvR@<-9kcwl}wLK1=xX4R=rX^u- zAvhn@pbyACF{-#VM_g2Bs!M_1N-d_=J)jN3o^zu=hNJ&hEvQ(!= z0QD2k>#ldiHC)C&NslypbX#e(1l`is1<3{i>#sxpJB~s~ z3ir;uM-_RX=L&Ezb^&Q+XVo&}BoIB9q_(}gMUO3-YGLVZM957QA*Y@y?Dt$k zNDE%Uw{gkFzE4`}t<1iwi=5X$Cy?knF7*m+pz_vWJ9WZ+f2vQXSeNs3`33@7xMot> z`f!$tAwyFsj=~B6DMA8>0DSA-d?!t>yrNy1U?zE!GJVzepi#CZm@^BJ`j1JcLg^1n zsloGUAg33U33JtH4a!M5vCtA{vymg{ctK=-i~JD2?MJX9vOKUCt|aR^6JZm?P7#b;)~1 zhZWVg^*$X!;Kaft(MFq`34O65mXFLY{;mCIf901SOSi+&BX{CqDVmv9hCD zm9=-aUsj>kbLRCMeHUh(HollH0FfWg{_3a|iiKsGbefaNlOnlpQsmX&?KXwTe8?{; z*A#@Lm8oqZN>`O&XFB$^?P=S+t)?I}m>n>yG#D!w9Hm@6UbSdK+oZ@b9C6pE>Yn1A zko$niC4~1dw+PM_N00Ux@LU%Du)C`V@y5e!_Fita)mJ_Xi3^Z=%T%aFxa&5{Qyu>R z54Q@ErfDlzafZ~(DOw9@UhRYx9#f3u=U+tlW`#Ffishrk*6%kx`Sn_8Jk((>$(2hY z;jPvYDAg*GCl(k)Rtu}$+hw&CCA5E)Ad+x3=#9NPd22u<&$_y;XTR?qf@3I2X^f2I z9P2|$rdMPC01WIl+NeFUv?jGwuQgU_E-WHKDYT;|AaMZgJ*P=hPCwILFXF~FrmaGB zv=P{o1u=1MM&Wk#4y`)7)0;|NUDVHzxvwd1I@4z)0GyB#0pTEP=0=lQUZWZyZ|=P- ztY}rF*ExWaC*RpuQPf}O^%b4=yP;5GcnnqSi8GYu8R_Jf?72!k$5J(&h4Rwc0g!>(+ay!JE7SNxGamBw{+31DK+Vds6RgBxM_0SQ!OKWNKl)8Gh{Y| zkL4_qf;k=m#~S&y<+VFYm-r)0Hk*b|-Y$Z3)o;C_PMLX*N0RGPao>(v-(lUt$HTKq1oRHVshIEAT6?xck&JPZXA0N`<~6$x!w z8|sf_yk47W(xp|ndBGr^za<6!Hq>d>KSsWX5flCzdb}HG1fW!8I>KFiByb9V$e z8P}?lA$hXU9N@g0tVdz7F>SUGw8~!94l(Hp{{VBHU$)5!Oq7%*$52)`7YW`^zaIK} zer%OW*cED&6ikZ}Yq8_akBMxdUY7z+3bC#*oNXx&#hnhP8RfA)0CG%8 zXi-Yg<497Hay*VOLEw%EAd#w`e5*ZI5b@o2RikX%-~A77*M$-gb`CUef>`pe;>4BST%0AJ0YWB?vbU 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

    QqZmRjwrm(`lzC;#qvR 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 w<=vqCz*Sdrd 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

    gv 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 z�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 z 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

    Ku&Vb^{d*CKT7lecZJQHQy;h+No2 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

    L_&tC> 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

    %a^X;^3}KT%x6E3TF7pf2BP5+`nzvq@4Xk% z?F}$st76>4XwZY_s^+F&q|RK3pjt+0b{Sr=j4Wy+9UO_lRKc$xD9K1`Q;GmN+6yr#yA;Kz5cMcbah1F2ivHctII%u?DwTL6-Rn>ckCc(Wl$}u(u=a zF9o*_w@^XKYfm>|aVbqCzN7U!HAvlJ6;82)Vz`3TEn$=l5C%0A{QxPGc-{_d3!(uO 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%0DS$e|p`m-p$@x~h^ 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%0AQH^-5aEwmQv=yZm{gyc3uPgTAP`fkx1 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�NJauMFZ<}?3V!)GY@EBV97Ea#CQdCj+~K-rn6{b zVGY7M!1{Ll*TXURFSUTYa>n9qk+%v52gBV{DGbI>=Vmb2@6KVgoRD`qDX z`r;v;n2NBFVA46;6Gj%#h-Q!{UNj`C#ijPTbv-^tixe_t)+iW8&01NPb~^g>OV{-y zKlFmGU%H@fo3mJ3)n-!_ER>%8Q%`lh|39lY)~w-RQ)W0m&A)RjOU5MYohW}ENDODp!~{*(RZ74`_94vR?RnTW z0MGz!GHW!WIq`iH<26b8W3CvcjF2C{GT@(loj#{!&%m`OV&Zbz4#ueR|8IpDa_RGs zYMjT;K-2Gk3vb2g@3Un9cf__TiGUhjqJVn@_QcqoaL#ZfBI7qgct*=$jl$qNUe2|@ zT)pIm>s5y!`WC=T((-Rer6DWG{Py!Go(_qvmnKihoMQLlhtDpM9 zkL#zt@W*xY<_%rHdR;g6E?UNYczUXL9zD=kzV&Ur_WHLqAB}b8!bM%Xa#Uxu?rHBF_5(v=W#(@%sRl!s^HV z4N^~kFwtp$q~3U{&c>!b@rh6Bhd=chUAuA9!FVwAADx`);b~v9!cvb<4)pfh@9A6L z{GJYHW$C$(tN7f#W=81#jNXCn@WV`Ce~#zD5>+X z+Da1m+}lVa-tO-98$FZg=b498;Mp4455gG;c})9YBX zt@R5L=6bI3-__E}f5&Ig9)CET8?=mg*(B@tnr)tVvZ#utD*;lRB{-MD?sRhmHL9~m zV@OWs@#d)SnO}K&S;Cm@qP{_CT~uiZt((RBZX2C3Hw330hdH)RM-Vr>hScj%8ioBjg_hmd_~z^Q1K&^4uHz` zUg>1EbhiwDyMkG&5eNi07RmIrdQsJS!NuC;ix*X>cJ$rXzpcwxuITW|iGhgjPTS!| znw8XT)K#8KxR>caih-TBF9-O?Yuf6fA ze&f~e>fk-8bkfpt1R#O88zC&=%jvL?1h!?_bO23f0EmIKbACZ{sEX8sp0v(VLMq~kMEmhH@b|FdNh? zLc&HWRWq=H1r)OWbsA&xU34&2`rP&XGoTOv1s#6A2L*Hf!}S_uD#vwNN|acV{0{GF zur$fq&A_v_Y6LyOBC^CVFp&A>4{NEY8&Hx2#O9oi;7+$ka=SW$D!OZ759ouUn4Dj%?!;g#mN>a6- zn{7v;YYb45*{)m@j0yh!X@jB{HiFH@+6pKFTLe%jQso19vu|;dOVJ@8Pp1YvESn$p z?9m9|$#X--4ucI90SDG*XVZSvB(qz!N{9@LXJP;&mvi$h*%08f3(%aK16#6g$4D?sBWNqE0fHILJf_J6m{YH}&He+h zG~;bDFo;%x@!D*uQfru90+2WC9c$1ZXnXHc0G9?3Wac9tnymM*{&+32c?WZ`CJ;Q- zJM})uXTf^2FD(TMfMEgOL>La?`&exOs0HI5Fw~4V#{P^Ds0d{P{Hj*!nlEC%fVFKl z(R`uK#)dlEJ1Uy7idQ8~zN!Yj0~ew&BH0_*qe) zuM*ftgKvQ?!^o^?nmFuGfTlE?_>Qb~*=FOsr3Pvk0w(4vn>9F}N9b0iTnq2Jh0MLw{EbGpL1HJq3NJoR2Za)8#e)bpttd9FDed$ZTqEUZe zwTcI?_8;6=xmwnU^&i!eR@&$^)FvElRk9B*>o9VDid;bI7Jj`vGxicJnUepu8+@yk zn_B>*ho?RDdNF_8e00&g2(WX_n#_KYK?vAsmh}^#dr`mk>gzfgL}NF@T+v8`omJFs zyQ)t-e^sCRq38Adjf>jb-ms$L)=&MVr&c6$zW)d1Yq5uA)_H;zf_0d`O8}9~7xu4I z;rk3`_SkuLW&%;T_qK{Le$4BF9~w5$DfG~5NCIJV5Ey`3dTo})XHmZIr*CjbRXvWA z7S~5_$O%7yL;C&UFXW(@_45f(^BjS54Vd~omkv(`Ma{qqkSg0wWGbk!SyFuxbJLfX zJ>|_}V@1pUtY@{_It1(-CYoQj28h$eC30^c8(UV;QLo~Y38OIV*AKGEtB zK=h$>v@i7zRbbtqX_}Ni*qB|ow5wnG`JdCzeBle)*}142moMqc_O{0oOaE{((f-Ma zzI*qszV^-6^wyhidcWM++R)WYSG3jbs?%zEKC+%^ziNxitgWgtmW0)TD|nc(v90HcDGg7?5fzT|G(_LX^`dD zdEWQjeebm^?TlPx?8kAiZv|OG-?Vn z-F@%DfVW*KsR6^?H0}63-*40iY0qHkb`Be|fU#h?J)aTcHEI_8kY&~*OiCJ-?1}k& zo?rXGC(;wIVL$6<<_rW4_I#+^B47x=RaBk9k}Ud|9XuAC%V;fl|CN+_$pXXg0a)o! zqI*HU2|7-}%)?4Bs7sZJS?)gG> z%Og8_w7;LyXbU3uVed{?rw1by3c-Y6v$ECM(&ddys;a7T2{~#_6Qrk>!j&!E?mm2= zS@%eV(o(ZxNxi{bo%P*dUsaJp$}9qm^$VHl#YBz#nJ^E`Oeyf{BaPONRoOv`OPZoI zIUT7mU8%exIX5~@fS&bITQ|49T~{|>PoU;osvsz2YyaM!G?I4KcFfc{=pL)TTxtlzl8u%nrWEtAC6;>WxlMiG*-P5mT35Th1>Z)E z#;$JOd`YX>zGkyiks4K8Rl*yxFxO1@#Wu9F^|Ctkt6CP8T9pQxFYz;dpyS~keevDT z>z{u5P2G88CLK3boYj5pys26sxeqTcfCneTo9P)0%IMxE)~3Ug!gn<%HWTQDk68vL z%*0BP+AwwrkgL;KOVa$RHrBUPZ+Fb50e}nUOUW$HNM0`(aKyJSm^KTuVazxH>`6eD zfwZ*HW$7dvdT#^?a%eUUY_j15JkFa^*iiQAO9|$HV7wO_cY}1(na>eW)&7V{_U%nG zvemRv@2st9ZGGJUA^?N07a?L7q+0+123}KY`N_$NuW1V)1&>b_Z2b2OV5J1;BpV9} z`P3jJo9xWs<@IdbGpI-xo!@oJbS1!N`xIt>DUQbgEx{#|v(PAmBU$2EuNwp*#h8>% z2cA{1BM7!(_8*OFxG)2g_e6rq=kqMUEJZ@aR|Xq{1sb3h*O#I;1Ck-r3y;YxbI-E+ zGvM8<4;m9Qzs~m~$teverzCjZ!+xy>7-Br~J;IO}GZ~o3$Hh2nw>usq03t9DV9^0e z0G2XG1yhj_CgjNh#_%Tt&@kWloWK4zpDa`K(sp>K!ukYQfhh=3hIb;8Wad(sVfLL{ zE&VJ^7fUr8EwdK}{S%4MpA^am063k_%~~OS8<1-;9~(rpOwtw}!7yZe!YFj`4j?x^ zVt_pku$x9$8Z5N*Y&rOhd&GFOry_G~&CG5<$c^=;W}~Tn9oIIt4EC9gm!9*?EJvll z^TK=cjPt&I!X%apGfSDake4rKV-0%&(l=Uw8XR{3Mp{gC@OaPn{K}2zyjiiI*9;jq zK|CjZz5$%=e>)w!nIojm`0t(^`?Kt6>IP%XnfR}cW=l2dHH}UWRc|)D`KYzlBVitf zVA>Rt2o95w&x8d^=|2OI;=c5{8d>^2*4ECh8l4T58xf#qAd`6w`6I=9jW8e@8w4D} z%%_pWJdFoxG_z7!Jtq)0)L;57z&g853VdPCjrkvi*J5oolSSzhkYJmi^)IgZz< zeJ4q2gh^6{VO%%Mat(mH02>#vUeQ2gwhgc~5jFw_17N$v+?Kzh$+C1P6dtl}(y+#< zs5*@3#D=$B1Yie#g3SNcmPbr+hz3@gjVFHIus4{EB2Wv@R>MzNU(6O>J1W&^GT9EI z$9S2kcl1#G-mwY`f;PuGI5_ZnM@l^GXc~0{L7H89c%b8h2L|xN6CPWQg&rMu^@TUy z)o4*rsnXK-|G__^kA2@C(igvcORs(IGrIN0D;f;;%`~kLa8YMHg-JH^rnl~(vzkhc zj+HGATN({)C4>iVyV+E)+w<=;RtCLZq;dlyP%AbXPT4*@JaJ$p_dWu@kRBIo{b68~ zE0P&cY}h4T*=*|IbZiDN*E&d)4E8LJX3Y%gCUI%kch>doFJ05Ozx=#@`Y->NPZkud zKI7vG03;B_926AgTJ{eOhE=Rv0RnRUZ9x=eUCvVXd*mjn0SdowlEj~dP)2jmby#Zn zx)#CO%IwK3E>FQviGd6FkS$3#Uce1A;_^e2*qjD#F39HtkBNFJA**LBYR|I|Lm1sDs#J(C|X>FdV4RJCzOrMfZaxdI~6dB8_`6VS=G&OdOk(og-w zAJZTG;UCcTtCzLAwyrkb%qh~G>qWp2$K2}=^yc07^!YD;QD6M>>pFaR==r$bsD^)a zyQNm65dnuZ`PqM(Q5rIOs|b@F3e68{OB$`SNd(aj#v^qJh3j>7dUT@hDK;lFv$tRR z&u_AttlHLmHugL)T1xx9BRx1e*53UGdhIix)!nz> z(PDj9g_l08;tSuR)#dA2uC1%sX{*wz>T0{L_p`r4x?WhRT`HnnNCsg| z+zfEj|4&THDh$#yYmH*_-lGwa27U{{dKctM$9SH zZ|BDlKEWIdU?U(YOjy*Ji*iwqdP|)UipP>aO ze5g_DK$Q&==a*Veikh5^)lkKS70Kig+|$w4+BI#KZ>m+=)=BrF_V(Y^yYIcL>1q;k zvI?MWK}FaL$N+2r9jix#KE>ouz*Ausk%8gSwo(JxE!2P80hCnUsA=Qsj&9$2&kTn3 z_L@44P2GRAr)mw~m!b-jxi%Xe%?Eh8g$GV|Jkp3_0@e<|UIK0iz1rQb>$|?~rat(- zm(*@=tI^u@rmfxDHY0DjI@EN07@fNn{X90(_-g^UZEAh(rfRhf6$%p#Ci@zU-qT?5 zMZNdvwtnq1xAnzW=PDjIR2sp^q}Zo8h4q6E7fWQUNWq>9#$Er!0|5EL+|_*jF%DBcLg)AAo(@Xb=&IHoL3%U;LaUo%7#8711W44k0xUZ_c8VhP~Y-u!O+~DgR^Ch7>_Ui@c zwiLUldcArk&11aMq(O4KT1*VG;Qb6BQ){#hteHtYpJ+ZF>Gb$mTf3K3Z+3jYSq=G& z`D7TLsAkUBVlxb&SgqKjuy=Iq;GpeGm+h@hVNP*x8<1+ln+t%=*{BDt-OVgKO96}v zmd?-JpdiqO;-Am1H(H*X@%@A)F&Ye<01g9oV`EF5tsPa(eh&{lucPCTiZ4qr?~$+* zu;uQIudxG*%o0u_*VN=PyD~o$DO`p5Gl%VYti#X;yq(V-`qZpfT|;bcZbmb*0+%_frn_48Q7v>QZAZ-3X>B?VEC@`Y{z})`v9W`4BmBW65;J_>qBoJ#j^yZFcL$+S=_=Is( z#jYh7^9|qsSXX>^SZ~;1^GtD%y_t)~hS^sDrn9L5>*;W0P`*as7nTc7Xb-RL03xHY zfNemju+X4;ph5T8W09Kg?YG~yB>+B}G@Up%#vb0Yc=EpU)i0~ntm*KWM!}Yj4)=Bc z(ShzAjx;NjbaFb@jTb(oAO5L7t@_$Ez4o~;=qq3NwBCK^H7zw!nVN-=NYntr+Jwh~ zP{4{7Wm4ZaT@P|^R`ao1t-65&s}C%}#fzJO!>B>p`4j@NL*HarePFchn97VxI}Fd6i@7nHp1zVgoPCpzE%gYq+R%qgri z%WRXWsK-sPM9=k~ZGYw`-4HgC6n@)5OH3547fHmfm42A-#;(a|z zK}$3XX@;B}l9;9ygcShM-icPjE}NbNil(R^*4j!%o!t%n?9cvL{n;P+gx2c~O$n_n z5^@_}$9`(e{G$m${Tu&2K0VR>lViPp|AD^p=G(ga-d#6Z>>7zWYC6_pGBj{%PkYu? zu7ewE;gyd(9_0&U0EZZ2r-BD$r=y$CKc^2qb4@Q?yR1sBtUA8GwT4MB%v%o+yV@Jm zv0K-0GSum+sK+#1CIcP3`>sCsE5E9HZ@sM*A+*oFUwZLdrR(ogVfV6@C{wTyYgDvW zE9+*hq30VlbxKP$3oGv$3ymOCkG&CSZ^~DC~TX(iF~`pRb(E9xTz6*v>KVEI9x<``0qY0>F+SB|y=T z##3iyB01v?+Y%FDazi0CMA)b0&xyuHdiFExG=(A=kWG?$_SEA-Q4a?J_ zJu%r6IksZi2PBk>T+_rth3QFy(RF-5YLyASf~=HSu!V&i3P($6Z@ADHD+BiMe%`pw zG~xpYjpj?(_3=fJmG2Gp(h85#m3m7U+a;5XJ~4d?ie8vHzv=$^6cqiYyQRPLgba%Q zT|iN~^GN86s^OQ`?r2E&%}Jy|InPGUbn5EWia~;hhsR#5kS~mebM3t|)bZX-m0D4Y zB5VUZMvK~Lw)E{E_^29{Ed!Rb`ADU5%|QUe-edI+?`zsU@@54`bm zotrAoE1C?)Iyyd3uXn7I(*r#|KJdg=Vlnaz3qXlv6ZWG^wvZhIn82*DQF+LS3V6R1 zr1eH!b(J(YooHH;Cbg+n_<#}?Fdmx`gg@38N#A0wCMngGniiw6DzI#e6`gbk>T&&9 zK*RDcsQs&wYUPDqyt%25fAqt8{+Vyn_SOq()HhVF0{AsmtpZ>6G#MkIM<$JA2G$~- zN&=O(RH-y9pIpq3G#=m8{_sn>wf{wZ<}>&7>ZiwAoUW-dhhZAsuSg9|g;@d$*)*A1 znHZs7h*Nc#|DPEG035s?KnwW~UW{yb_;moJ@VjIqRy9j>eQiC$R7z#Fnw_+1jl!7y zdr0QP`;6l-bE;DIMv*T|8M3?@#-JtE32cKIcP8IYa&t?_!=o=c)A*)_R68Ub84Qmi zfZubv`ATXx!onf58z^cFh%jD~$#@jD@j8Qoscd&Kn}7m8UrFxiG;SLDN#^bXIc)&A zhB?7Ir0?hKNvE9q+#=uynL5`BurJH{VH1RpA7B_DGav=QqajrXv;i22fCC5w;a6%u z+az1(zH>gj|G8&oJyL)P)kC8Sh) zTRF7b9v55-{t)&8;1gpvDl~r{Y%YH<7{o5j3_?ao+MoZ~f9HvAlKy;&=Kug807*na zRIluYzabJk8Yw(eY&>8)`g!Hvr>4(j64ny-Q5_96n-I`~ZzDd6;d^PhCGsaE*#`Q+ zVPFIWU`p_hgK+>)=73}L-(grzV#8g;hnIU(w2A=PF1})wQdm9!t^!JW-^%!M02^z| z*i27YjD!l=#}rRvKkr51vk3r;2Xk*x5^lLgBTlN_B2H18r zRVTdDWEge39%B=NV_F^WDB1W40Fbf7`Ao;*H*8Pkih(X~mJQ@D4NO(4b^D}otsLr; znp0e>0Okq?E@2q8H#TE??(|>6@MvHm_YQ^_*U>;G_a}7hXTHpUhW?ou?0|0JNy&YI z;mWb|ETH%Z@Gg$UVNGcc^qhoT-yWyzFFWDgiiDBhN$Y}D2^GL@*}paRCs}5itV7He zo%lJ14b^PI&@8AAGr7^U-zP5{Vq;K=&@*Zs&)vSBk!lZU%a~^E!Lo;jP_@;F<{F#t z0{*qE3sDnz=9>QsTs?`n&I#RD7ExIHBYmJgr5~o&of0*RMyYAwewIfdqc) zIXt*G(&^EGDuty6-9t0Kk*5RB@7=rO`@uK^zzF}&mAZ!qI@-Idqx}ckxq4Om$A{Wj z+tL31L*04sNRLji^pQ^ba}DPueb4v*us-(vKdOW7OmDvWioX2nr?kI+M~gY~{-tZn z8dB04jC>lNB_~A}%XL-j9Sui#gw7niwAOBUji1j(!BU;acxH~uV|9rS?R2J3{N&3} zk@Ua+Z=ca8o$skisf8L*i85I!FRrKzT~nkD&^M@1OmpMlH-7G?l5A%IbRSoV(7pg!Vk;Jy>kP;tHNudXF@(WFR90xdCcsIem5*joZfF zz(CIhA9jOx`2meKUka$XNGFZ=F*n_Zk=`d=AK2e!xzbcMARUd0>%ID^QE@n&UJ z%wJ2`f!RycOwk|}@CSfuGLQ85h48MAdor0X{D*kL0gU}QJAtC!84h&7oJ{k7I;Z=r z)o82&e|PfyBtX#-$@5*UVEP{)*+*2}V}GyEKh=t#N8)Vwt#WM~Sx}PdO>I7NQ-AR< z{QLUJ@B3bLN>v@t7n+rd+NhMZMh=9>QA!@CMo#t(0LQMC)Ahs?)jpu}nOXAKXpDv< z-M#-H0L2nDB3{Eyt+kpFPTOc$>CF70+i+}R+=eYiJab%p8{4p+do@o@ z(bT;4cT!IvR2%WyknjgfGPAQi)%fSB_pG_(q;v=DEnzhLej(GQeB#6D(J_a%IE(j>)|)gx1NHc-#qv7UwS5h zqJQ;&`C~dhISJ4#fi~?H!8Rq!5L~$9jYjuv1yD3I>tn6m(f)DQU@8R@8>c~cq4(Z8 z)xm?IYOR_obv7zv73KwP)_3*c7eA_YeJv6Kk+m9-S!g=y>hRtz&8H{ATyt42>G*h} zjjd<2xp~Q;YXB+*OA*;*8zwX@xFviy8J$2~8+OG;(! zu05w`w_jGPvg=Le@$rEUjt+EqxbI+q{&?VxIe?+VnVCgPB-65Ki`2c46viSDMRR5Y zhJ3AAEvrcy{b->+KyFJ~6blBCDMZP}zXNv%XKFMPfun!O*dr|r`DGn3M ziZN?YECHhVwHd54Q!Eu1mWEK!Cwd-I$IL#>8)pCt7bA&vm;;3JwKd?7Ksd9Qu@Okg z^;y>M;v9gO0*&jR7>*Hi6lvf2D}y2&FW@8ZN8xEeErG@SJp-UH`e6P>;7Lk41}HH& z0E;jJP%K-Q{C_jck`E^rDg&Qc4(|<53h_ESE(0|IgaA$wu3;v3+QsC1&wFu?GBApt zqd}bHOPt@^{&cWp@jk9rEE7kJ+) z-w0z0-$btCU;6p~;E95w*RO2*{s;FjSYZHyu)rAm4&|{&9N^D963kZ%_1GLOrY=I6 zyJ+5kfCiJcU=RmjGs3XKfH@}#16;s%EAuSlKkD@Kb5=8(8UP7?$729#emVxyNdfF& zo5EP-+Sif4cTX&v#SgjFS@+M(zf1CH7?eEcq|x(LDyPsPnncUF0XUA!ARfu-lc7d~ zq2~`8Zup7fF^Nof(m&Se$&uD~E~(ks^flwlaz&@02U7(`JI2yxedB{nv#{THklxnT zj!Fc{HJjewlu7=^bFtr3vtHMDFfg-4)w&yKW)m{b0i0$4q7yRKul zv&O~qW3Z9?Lh3qml6^!2T;>=9Q04y-N|oopY!Acr;l48-nFpt%kvD}{IncPN*wO=g zld0=BzdwHpgk6p8r&_NRH5>QM6opyIhVsj=eZdTFY#L~&!$4)cKD={B2M_M3d;CaO zZam|l$X099b=I8+5A^u(BpPFkQmDY}a_!ECZ&wcPC`rH>@*KhyUr?vO)7uD|` z`o8m?)e5y!)xfCh%mr&$UDZbWLSWWF4H~5e5AZW)ZCQFe5U>JhOdYh)M9)08slW7> z{(v65`?mh4|Ne`5>-Mq3G5|#xi)M2HT&Dn`%mz(W-dVjDAYZ_F30^zrj(S0luiH2os6!(c}=El3PSgwnL>74k8!6?0OwKHlN&Ef!s41Au+>(AqpypktIX@s?8 z{3A0!FJ{E2yP1DKjRym(Ny;BJ3v6_M_&Lip0ecbX8O=f4khqrM)Pvm@YLx7c8X;9d zIteDAVR!qt13)DfDD$Gzv|*^N9HxYw!vb{$jc9;Gk8yk+rQUp|qxn(?i>3CaV+~LN z5axsO3BNNK^n7nJOTg%eq%x`7V}b}Uw0Eo(fBGjXpd?|gH7LqnB>5G`V4*82HP_X8 z?pgiVAO2DO@gMpDy|lZd@uFbhX;~_1y;9O4cUjO8KB9x6PDg!>=R-Giu{fzT*L5%)>(OAOlhI6%Ckq|S zrQUR;{{Frmyz+|P{^YM~eE67zQx!HZN!MOb;h7I;b^Tct);G1Hf!A(Jt)|q#)}yMO za#`=MSG83vs#z+jRRoX=P>z3d&QW=#<``?d!FU=mD=qQaUP&h-(&%H2+^9-hWK`I9 zlUJq$_+$nVRcd%^E`!J58pyDw_bU;gl%JQg$fUIYz%JL%>xCLRv#6s6PQge?CF!Qy znH@!XEuWukIL_yna|S7^8K9yqEZ9fm=}e80UX!+5I<*{qX`fG;oB1o(_h*fYILR~y z@|+RJX@)9I4Bj6ylf&{DZ^^?nG5FaJb0)`A>Ct4Vaf*cEGs04a_X^Jn_Ws%bw1KZ^ znfoc*ByfcerqaVHfO1JcHhJnPdUoT!3IFmG6#XW=sTWTPQ1n0hzkfz|_a1sOrVwN{ zs1+;PS_|-UIGv&aw6`cF4&baeZmWe# zAeJP~!76K1^~T9->dg+-ZWZkTb-Yg}Fc?eZ_%`cp-Prn8?KECcSv8GDr#d+~(4+l_ zLdrWC64rryVIIK-oU7Yg-uwISFigVSJCa<@^h@3JEZ9MES1ZCYS!#;hu9m`A@P4UA z0(eM>qccaC0~c~J#-9=(jqVfD%+v*Q&|}D%OE5*NW$o-rH(zY)rI&8%=CdEx=KA|o zC7=o*5$PV50maxvtqN?i!q*cpX};)bGJB-%__ppo`ij2#_MU$0H}-V*_E^(yRpkYn zqF69ut&5FxX875!FP(SZaGO1wzMsLEEJ2>|cpZrDUM2Q6h; zJd!u3`#MF~8ci?yFl}Rl2oo?oJ_*u5!e~#&^cAeh@HWk|t2mzUiOqm!{(T3{05YUx z;HWjCh|bK#%%S0 zpPMzBSypE6!K6*nNzU79cbrzu z+yQ8w0b|}fk8i*r#$XpoT@H zv;+JhjpmF1Mwm&xZKUH*$lPRPFVWR}VlPp=5&0bai2*O|4U13W(PQBoiBBhNb_2)zLXPajs64SkXN~!DwDvd*KzD$Yf1-u_?1|~D31duJfV8g37uNm2gFoy!M z(FZUGG+}<>+Q4KCU_FAs@+Qy6l|tG0JF+)?r1`RMG~rb+AOQiZHA^N9a5Kh+eY2XA zF4c3uWCqhSn9iOjjYAYP8xt^AHA~B&D0L2=(NjR+xoTDB$Y6WH^ki#qTZvN9b0ExL z&dC8)UPseNqGui4fAB!>e)V-NCO!X*nzB-Dg?#?uBb{{n_IT@Ttm~jR*Sin9y7|Fx(~tbb zpVY9lu3!Hrzoz?NeN_+d-O><`cRcbmSG!qN6W>;toXjh{n1-POTKF()^5b z1RRBt3o|s^u+Yc(>7V&Q{qdiAS&Q)l{exflZT&ZY|I?bPtp3Q{(2%q)sda;qm&1t8 z5{l3F>S+Z(M-DSQdJ!zWef!oEo$vpR&+U6WI?yu9+3jB&^7h=|w|^*gD?YS2tR#mQ zW%+87veKZXX_c9xNh}o*an`~+04e*G1~3!M>IiM&_gv+|xCY2Dc$2(8(|e;>pn+so z+l6CEcx8ZK8BF!x16YKa9fy(b#99596*sxT9KcFOa9t;6kTc8ajVH%V&kWY=mFjm- zwge8T$?K}0?<9@);}qwg+z4XaBoH~+qnUM=d~GvOoNNGWY0Y}WKEZ)Y3(WxiX&f*Y z@NeqI>CAgL*w0;Rqs3Au__wEEIKd1BY@(L5kLc7ODSu##E(g6}iuSq&M3K?!BtTJ3 zhthQ7rk~d({)7Z7`5zQjAo#Y?QDx_nUiyxg^+$i;d-dHfe@N>a>pEFTN8^Pi%Lw(| zsTQ0SmxF);2#c?1@dij1Xf)Szv|Q>@Z>asjP>*|k z^=SO9RvL4vg|hmKrAE~5ilHNHpO!SM0ZrU{EU`cS5>_7 ztaRm?w7I2Kt*Is6{RFr+Ybw;L+Nf9czGmI&@c^I=vqSNrEUQs0sEPMJdx>PB;Bd+m zB;>k_X5Xr)(PF9N*+Qq(V8xZT>NTw^d`feoe3r=v-WlvoKvR#w)Ic~Nvzf`9fc!M% zZRcXkhou$?vPRXZCYp05ZyI-dnOE6Le1Cpr zp8oCYbp@V+qF=8o`wjBGfTDlr7k@@4gft*mU~wf>XpRgV7F0{!!9Y_2IFgKnNihoN zg0?ocbUHY32!JQ8A`A9P{r$1td;P?T^b3HiwW`+zQO-B7(u>Mveb z6V0asJ-qj}j`!bFt-4ULTGVj1QmMACOP8Nlxzq@$3(N^RO(pz9BiN)+S?LRVzp3Hk zNS8Lsy1v%Z{RcgbnGPx7wA4mtTQ_$;qL!}M{C_Yw)ZU}}I_)0C#%><$IyObHMQ4kt z&l`}`;4L*cY?lNam^qq4e4?0&1t&UT$Y!GZ#z`XwB)Jt}D6mYVfll}fGf z@L6#lBTeTg>JJ}k|KMG{d-s7}|I%H(`Q;OJ_lvd@&2j$ONwy|q6`j`H?gV?3 z&kk9AfPpMl+>-#LU{A%*@_h`THawgx8%s>f3~(Z!=8Fw+4iOoRhd$OU-{t2SEaY|h zz1P>*{aWr-W@G|*_OoLjmUUCqD;_S$@Vi`5S-h=bu>7#C*TLmIB4f0AwNY2dDr)8S$K;XPRZ#Ix_(T!Ya-?e#SkxX+1E06Pxm9bjXl)ljJl zGcnk0Fg4j2OvVFskB{wr*}|*4(KKjg7DKga;Mwy5*Q-(Y|4X%&*^q#pNaq1XIX*K* z*`#p(X{^EMb6UKCoRDBU>^(6wvxNxri_aT2?P6{~gt;dIdQfT%gSnJau3%AVdRjH!K?h^;nv* zZ7>e-xES}HF=lR?Uz5Pq1c(6WG8T}8I|)9m6U;B3|7ct^+TLhI&{tyQT4ujANX?wb z8j^iCxo#};oCohoIG%$au|qHrjr{|%?Fgx3-o_5dfepys-CSFxP`si6Tff%H=n)|0 zMp7ktTf<&AYq)Rgf&fnvTYJK_2ulveW>y#gjKK7a=O_8Vrg=Wk^=?WKj8Z6QIGm^o zV{$fe7*erX@;rwx98EZ`PrZRhI6k=xUr(znxTg!erF)v-TYGw>DAx*tls$T-_V15x736o#c;Qk17jfqH3++cnO>?kv{+!VLd`a|XK15R_I<&N z)D|Xg7Q}N&tM||S`JdG9{hn*8mLBVW{)JEJ7k=SYHxb5@rQl&>@j(q6{(a|ujyWzT zZ`jXRxw)1vA_3E!-^vLbK7!*Ng^@H0-y^Z-p^vP3|P5wn;PT3 z4m4KIrS|9Eh6%Pv^O!+G&%;S2lK{X7WJ+oD97|@drsp^VTt3!hD`e1>ADA5-UZSq& zGGLiN-E0Ryt!n`IjHH$%yb)8K>Zf>pu4$YpWe@FSk(FvLm-PIH$F4iK=?15!vs3S> zi?Fp|Ub5IHe%F>VCNdC8a~>3BMr*nb(VLI;DwSNu8w1Ks48LN`L97S)Ik%T}3R+^E zdJc!3i`vKQC^GuFru>_xz5SISw<<>kJH1B=tkBSkuNM74XR(4Yg!# zfF(K``!#0p85B)<;|ZH|-H(M%wIX5vvbL_)_O4$3&LfG1PGzy*@RSL0H5_DfwIZ&zt*>g?ADj_D3e-9~S5@4( zCXrCTu_NtXR$*g9OVk*gFSZ`-x>gV(sugY4s=8FKYmGI(TvCl%5fH5?HLW%v4W8yr zGz@G9kO0L1(qo;(@}j#~>CRwcALg}k(W&;$Qo-OTAhIKq4}3CMugP8beD2DG<(yV;89l6YK+)u*$~y1b1Lo(- z0Z-Uwbe9F~kCzSs#Lb+!KY-c|A(0a#8h?)Fc4V`~IR%rc3Qli~7UUr=aLJ z2)y-mIgF>E=-1`4e&f6;o8+JS`#+|7jZFZ|j8ZJ94mv1lV{KQHF^PT@$ZSZ1z8Kjq z1+BN%RjSu@c>GvJ0-5YZSF{QK-ra%jymhSMAl4ULxv zdhtd_&uwn%tM44C2liG(P_oo|V@L1X`iM4aH+)W~-9zmkJ~Sx0umsS8B1_3AzF8&! zP6(lKah(E}P_`j+_PpuT*a%{Zr1~gy=v3#aocCe|C*izQ4w-lqJ>hj1el09Xgo6|` zpM}}83xU+dE-b4mE+e4B^nMDf@=TlCMeXdi)!8Vk(I#=XptZHSZd|{lE0>;CyLH6{ z)L_)rad%&bCx?1)??`vvJ=XpAdOCPG)^b+!q7f}~B(Z6sO){h`6-u@988~)v<8`(# zNXM6%gBKa3nQcfXn9wH*8(5-sn4u(>*8!sNTSfj3C=#1PzTaxKy#a(V%I~;Cn7kT! zA8&^7QU!drXJIVp85G1;AlNej-ovo5Yf^(YLoY@Q-KC?v%&V1pUW z&vGzRmX%{S5G>$ewPu-l9s_(n%&F7UQ_C{rT1Hwl_XF(Xq2d4lAOJ~3K~x{D@TOa; z*E@A#ngMS%sv$px4M+`t4){8K6gGR>*ztQX4fE$`(6&*BfgDYV;c#HdX9jv50>yKj z$DX}G8*1T8m@EP)#xu~9fmeQ(?|rbpr7ocz1?GG6L)(uc2UXPBXU)(x~54VHGSwd@{==@|Bs#rUsGytTHJkz|tF3ihpFX zi@CkPSQG3~3-60(kY+~uw`JS*JY?M9rCU&~0>I2%I7!cP_yz-rWdM%xO%rIbLTM0V zh2tjy+w3|vRY`IWz@0bUAwTB6knE0JeC*`*@sPllH8VK*WAC=fNT-K~sx@1xcRGF! z*r@rLosR7#3IJ(Vse{e9hGkU%IOkLKPfv7wbflfjS5yZv6z&yCl3&m#ej6VPY&vFC35F9E<|{3kFg1EXm^ z;w`gf3QSHIdie6y$~BF9u)aqIMO}j|V1*Lov{JQ!1wg?nh0$=}>yG3fh74hxqd{Ls zkM{KF&MmJE+n26+Z8N~d{g}`6sbBk5)v7TjH#T?Oc-VjZNOvCW>0~(9X?Ls_p1Y(@ zyQBLDUER8Os70l%-}fVbRNwaT@6+vj$NK00_?Pwh&-@dWmVIrs>$YKt;6vu2U;_gb zSL-b;=HVuXgt$zd30s+Fc_kVj`48YZ=lSx7Z|Zx#=i9ZjwbWZ*J=TBs_y3XC6KXF; z@Q4}{Iv({y_Ra%Xf?Zy(sW%+Cah#u#j5#!#wKOjPJe}A0w{O4mMCbee^bQV_!T8Gc zMkrz;K*YY{Y5foIFYrIBkWmOFpa~HCOoE%5r)G~^xe*LU`?8v08|z-EI>OJJf4ka6 zew`%Z!M+UuHP@4YxiN=?m%D56)NITuh787pt|8k?B~};f8h{%=guB7{@q4^qs!yU` zNh|h?x1U{x>@o_u4y76DeX{xGLuB|<~8-jt}LHaGR+^Uvu!KlGwL z{L%}0;n^GZ&7RCwCf$suGc_u8gHC0djMb8Tf_cteqb2rZzdz7`AUfCIF?XU;2(aD` zu3@b-M-ed4u;0^oKGk4Z)QsA$#5^(A$#|xtqZ8eI<8{6J)i-tb_HFf#juHzt@8d{! zt4j5j3hgzO>MgD6ZU38aC81&{Rt<_4npK~tI0pzC)v6ja%>gcx8h~}w%th8D)Ng>< zfgmPEX83q#9}17NVp+%2g$`h?0>)88*DGetV$ml04^?AHpW5w08(O5#2!vY`yqs4+5qO}s_te8iq%YqIj(jR*Y zik>fi--LgA3W|Oc-qeey1StA%|Lq@i0lCp>Xmhir#cFC65S_+WeM6-}T_@dBVd+i5 z&g6qv8jE|q+|cf&8#+2Y&}edMf3b2gycI{YnT{Wgb@%lX^&S(>QITp3RXeb=NNq1^ zt9?!HyY#%SZa<@1wWIlBq~rZ}^xoUAXj$m1)+yLne=%!oYx4zlT00@1G6N4ubreLy zSx>J%{0&WXsBe35Q`a^&_13LpoeYr{uI#mWxpPzR+xoCN)l2pvJUDu+~8w3x$<`SxS&)Krng2P&`1BR2-&>HkDv$ zF^@$oGBXM^0R4yFVzB^IG`U?_ews|7i_!TlmN=%Ezw6C~E?=o@YimuNPTM~}?GAKw zG*Z7e)A7+ngB}GBpNBM=r6I{3!+j=ejMCzoi@)5dPhHvz48#lw8A!X3ww(dFi|j}* zuE~FqO){Q^5v)`7X0=wSg%_JQ!gz|+y{U#NQ$@OKHYTa_DPb2$39QA!O4CVr#bwab za!vcBh1X$bm-4xJb8Vm!nQb*fH()J$v+Shm2sO$8VwRxuS{G}H?UtFFnW<=&s0)^Y zH{*Fjo`FfHh)VSU>FwN~?M?B|!jXg)jJ24q&L zfoNozlVFM>tLDD2!DW*X8x6phB-^#rnClZ85!)45ULSyO0MjAI=8K>6zS(wwe+TdY z2#1wIgvIbY+xL;=X&8GXQaeFC*q;E)91~+P7nClZk{_zaEz+qpt}=Vn*B-X3LEG?j zWrKzd1k7T-_m}_5&py#j^48XdpO58YYS}c!t0nYi`W3?;Fi8a`{az%vCofuphXQnq zz#N_%2hb#D0MD##Etp4PH~L;7nFe%XZiL;<#(+5uK$)M94P;VOkMQU%m(|1vl#Qp^ zh5#bL`l{BLqszVzk;EO6WiwA<*zsJXF~a*q!aH*X3~xeLBE_1C6~GnN%WTv)a}G&v zXJgxJJid_X54*=YIXcp%tJhU+F(<`mI5f&YCC_Xrz|J}LD`78Cu9h_$4)yrqeOnOh zUb~@s3jT4i4dXny<-tg2ZsS@2>Y1MaYlpSQfkk+V#wMR@!3KiQGy~I;H;VWaEC&nI z0ZqvJgVmqI*YM0XW4T0ACM-T+d2;@svw(WBel0x?azn-A7=SE=SKw{QGeYnV>{T}D znW4jTKvNNKQ|5EC8!J^c6A0+%F99&&DH&Etya)}Eiy;L7WWH|jK_ zrp)&x9UttQUF;yOLiiOMsVEeL6$a}K9+?3^N20ye7>q?f@4>jl4j{nfB-OW?W5x<> z6$}8a8JvK%jDu+euHk(OE0V+VHJ^sPi049sArVqX6N2~iT$-9(UN8N=EA_jl-s~Ir zoa0@LbQY9kY!$cdr?YW+!Sj#B{7*{iR>j<=r)p z&-U83CZn$Uy@B4mbxWtinHiZkZ|rD&t!+=l+YgQnjBe~+(~tg}e@fTi|53gEr8o4c zPyUMT-ujYCi=oOz)I?*~Uv5a2E4I)nm7*4a=?REN_{?}bR1+!dS|=%4Xgo%9fw5XF z7u9SMzBf^=-qGuC+=k5j#+s;cv4cw1IVtVD-EQgdv}blv_(Ddhgu?)zNfP*E z9_v_ghScpR9JKU>^&1Hu$(UO{GIPTdGck4r8OzN;NRYcTz;f=_8O+82#pVzRl4N^4 z56c0Uu*qN3*C+ui*?Nj`9IUV8JsL>hS?x&!#u#3zG2=Q1nCJIOIA-{B1`v}^AnNvL z&}1tLeik5TyvG@+ncmNUBETl~tN$8xh=I^RI2||!XveWTnVZIW@(neE@hqf@fm|A;S%AY)yK}8LhsX>lSoOej;rZL6h%mZ^n@h|I+54H_=XdyQ2TR(| zJ!&qFjT(f%bNu$VXAR+5WzMBxi+tXHpGhiHL+*RwaSYI}1-om$;_ z5$v-9n~r%l0)QhUp?7kk-sy?2J0M_Y&)Oabl>}=_ER-?lk0Obg&`VsbRq7>i+A7wbOjH%(_6qtvV3Gw{2B z$hpaupLo|lDe%?LSM1^9Svv>(qR0=0U;YYvqeT93xMMK5Ghi7nkG()VEy>rP=0_rh z#5o3g+wW&)cMv?nE`tEGNMP#WJ8MNiu&;fdJOOT~L_Od=mmjDgExB2O4F?TVzsvjd6f}&ryOZ$!S#(<)K^MCxeG?)w#4w+R+=L7jsr4pb} zz0uOqXZRu#jsPp=&aGE;>-H8?BaJfAi46inU5n?e?x-xb!hyX}zH03c1x#j}IQ`;p07Z zPY<0IJfFf8gY_9<1L2PtpcKW6{i$XXO%`lEFg#zl6YXN;Q`N>|kQY2Jwoyb| z{^O!9I_mCQC1rvqZwe}+U>61ZuvSV)%8{hTaj?N!F0;KhU4AC!=*Z(oY8h;ijV<1C zAsJiD2~bJiYzD1DvT1*GSRTeI=oUIlFgE69p+xFnH0Kg~^-NwA3u4}^o^4oD;8F%k z^GMG?A{GL?KR~6~9X*TXl`MW4qRMJcQr z!XR4)R?Jec2U$+!%>{7+Wzu;>2oSQtkodFla)%WY_#_L@i+=zKfL;rG=Y`)~6rg+_ z?*T}WH>F&m?6(%l!ByYO%vgv`a|&c)lblX3E#gA_6E~)apvpC=Vtk8 zz82hvV34vg#;Ra4I;yTxt z20)NyCy<->fD!C_T&ehY*rWjBz)A+hF)(6PZxmyE9*Ot-AI2*IN_H9g=9vJXfx$H|%SDtz)1I zwL$Ehi%!R8o`vDaq&1$*e2>hS14#3vi46qF<>A?!?-}z8Kb|jOJ1*@n3o{9e1`6ih z!DF*Zwk};(rO^rBQ38bKb3J}|PmM-hTf5gReFq5hHJT)LCD!@`OyR}nX3A2PW;>Jz z(~0&T+}GyzWp#FT!$WjB4NuW>**=!`q=il6GYFq*Td#1f*tjCMHsd?Z=MJ=r@FLFx z$PbeRgx8_utC}||0T73WD#r&n%xAL!%&aIvHwc@m)|x&Z<{;(|OBB<%cXNS;0W8`& zEYYa}umDBztBws8&n;l`Y-7-B@i`@Ll3+Qq7yx#%o^-oCkBwkxhX1Dl20q(?SK&j* zXP>dx=1Wx@wFDe4yb0x4IHu`%Y8DWlu?AV$Ji(x*DdYgIndh3bbM`vKAw>wC8OLVs z$Na{1=bi#wXa82l7~rl$+8k5`upeyOumv~|-UImH9`XBmV{Bh#Td2hR&Kd>qH}3b$ zl3_#56`YMm21VVF}36Jl2huUe-_i$$wYn z=C)pY^)(VzztMB&-A z8DNM&pb22#GJN^QCL+c>U=~`caig+~x8vFenK8f_Pwy#&Db!L?j|TfJlG@|-$ybmU zM6OfRq-Tx!R)QdbRJL6SFI7NGQwq{P z2k+cSfKPsii8bfBJVopHcih0u66QE}1HkD*SlN!BcVg!dU`tya3CsWITPi9jcIZ$xQW=e(8+`gg)JOM?gW37gLY1oV8`ID0f zSmNLKjE+aP-C#YkEkg3B=KmQq&K4^P`7$V&y{+vBO;g8By^;#`rs``O+P-p0S9aHR z{qiL}d*fN%xN%L_ukPx~)}}U_P1OO=%$ko{elQy9wAVW$p9HZs?8j*MP(u`}6-`&t z!D&~&`Gwc?#aCa`;r%;0dU#*G(_{5|{QyE)L%5IWe#F{>3Zr5Ww1_;OwYkw!q1IA? zW+~?YzzIlNj(_|6Sj?0NjS4W9f`~l}>z-k4<_T)VWaSkBT*1Qh-Xeu9W#4S$@u?|j zvVbjQ$^j5^+zF)Q4YI9;naMOX0bQ+TS=fr^+`cCEdkSUi|XuJ1iTVmb471Ci;OV_o;T#J=ThKbS~Dp2Snglb=QQoG38?mc4Jz zwDn+QCmz%pKJVAiLCGm{$>}232LVop4F)JF)^ID>ohC?dzKOZ*k51NiX`*1AK|vbU z8PQBNVJi71L&V9TsO#w2TyOk`KlT(9J)dU3>HhW<6#b^VrN8rp07d`ofBwVPX)iJS z^pcDZM|4>l)v~rX)-4-iV@jdU1dXA$H()BMQE6#yZB0ifN1DyYS{1?zkd?rx?W>gz zAI)_CR$q_rb-jsoXVl?E(9uiUZtdz@Ui^rjfA)ham+F?$zxw%K(YSY4t#(0+(o+2) zAr3cmY5N6lyi1ja{q2xeEvi#}?!8~u^B-(!y}rN7AJPlEA6K)o z<>DBI$HBovJ$(E?<5AyiiSdYYbE)euZ?G@OkDYMN#=;97UU?A)!585jOtdj$=gKQK zxq+DGu4;rNq#Dtae011yyKQAav;b3d5!c2ZbpFhkwB6-4b1ti8;>DH(QItjxEm)_N zt}HAUd_JRVpJe~G1b~qh3mo0x^A2KS2wX@d%s}Tw0Q7ejm8pci;05FjT#}(h@J9q6 zvEg!9kAsxh_`ynnFeuC4=lhq z2VEq~0y_L=OvR=jfROhOnRIL%Gt0?9WRk}7Ic6p%xjLIuK4-qd3lV?A*bGDg5q@%+ zjmf>CU}J-8pfbrHxx!B3rqIdB=y|hyK`MGysHEi5%y!6Lms}72Sf&rKYsqT(YZ^q) zKy~VxW?4-39nB2OTnGWmdgDSWW|BK+{)9L1NkYbCV9=HE2QUp-lFlQf=5bH_?99Ta z2xb*5Q>3KXOEMT-0T7rSb>ZJ!=gbt%vVXJckZ0qCO3~)$6kx7muy-&VSf&p^&UhOR z2EMldo&=l0H0=-iJ~v*NnWv0}PG>Ew6bSz@K(k6AEYi`@kv|K@5Oa@NOO*(Git!cF zS4%Gwpqhi0%)Xk<^wJ8@cknRU?O0z9|n9b64>N*Wh)FZ(- zaWmEYApDtpIwQGk%#gdYGq}S9l;NY>S?t1o{3H`Q)8RByIi>j98c=)CjJEuZgtXDymp$sV9s ztm6f<63oC1hDHcW*mWgN+qpD6lknW^IA_4- z=6=RUlQ2H&7i!i(Qi1^BlLGD1@cPBzfpk&i7T&qtR5oWkHV? z3+-XiG@fZWo~kgKsbF8xnO4*|laUJJq15kcb$XQ2=TB4^^t9}s8Wc5?)Zu>)UpSZ8 z+n+YENO>j<^ttrP3Ecj%7mR>zi+#m-pP>;9zNFLqepsl@4f@#rlY>Y3ez-yVL+sN z?FWF(XjR2V$LaEg?aR{ERaG{3ROoEjCv{Z^0IjR&|HFa>6s@RHE@-<_(oVIeHcAZg z60iqj%}jf1#yH=v*)#e)eLX^n(s59GrP(~je5~cnPXLA9PSRkrEIx-$h0T$}aTifv zM@)Y| z(^{KYv55_jLVyeCCNb73K5f9%0EDpuvTr+fMQ+%`wC3}}&)P&3Kht4Nvf|Ovs!38Lk1CvrZ9;5CsXy0q<7ys zQ1=)a6pR;&oTWFrjY?Y|`Idi0-}?UVv`^gQy*KsxtG}XRv8!4e@QI+3nl?H&wYBlA z%4JwRguIkAE|2ua;jiocA8Z&DJw2M+FA6DBtytI1?eEa_&2QCmCMV5PB%huhsnw?Wwk_2ThqWFOPy8Lk$yMPye9w1xz%@||^ z98EyU*M4^X_ZcvD;d5dkkCHHhzu9|>&pVTqrw}4GaIkq83-;QnH4MU-fw@3dT{9R; zg$S5nZ_83C0-2DYUXbfM>?X-SIF3dmx%j*m4lfu@Q5<4y32x-q;YEo;ny0jafep@|_sXp5d>lEMJ{VC^ zL{jkmjlcDmpIFhve1GNgme~=osbDU8{Fw!3sMA2%c-S-36J-E^A)6OM=j_Xtc6^cM z9&!MNE1^aX8=Au)wmXzJM**S-`!F*lkonO-BY>t@2u7frAWVP`ivT3Fd9$xM>>;E} z0q{%ZI&$Y=QrB8-vsWy=8;wG$%^VG2$hszSBKl?lHrLjCzmYL(KGn&=BlY_|UAg*9 zFd!{6WT!vT{-cNLtZis*`?AXQU_#S8qp8Mw*%uY&Bw((a0rM!BDWX?P-G1xK+P-{6 zTbG}S@SWAnz$4d<0-m|cUX;nRHY^_&!LC96ZYJi)jkjQFghbB1sXPO0;*!kW&#Yx& zVGog?A%mC(D+#s=*=P82t|DBCxoa}gbUaC{N*V?MEc3ka#cO!ZgB22C67U`g{hfg7KoX$!KmaK(&WkVa5F^-RZ8{?tOWp}IqZdy zMF7#+Xrg)w#$tX241)#C(5&NIHyCO$8QZ=9z^`7z^AlM*mMh7J6^SY=K{lVTo)e4G z$8BF*f79a~pE@?^tSMHjuy)ZH;W*1hOXstFM{XiUBQrKmFi$w&Dn9Os?TXZNHW@gm z3o8aQHQh7@wx z*Tab7*&7j5*YB&*Y^dDeyh3Wrnnzd?^@o)gv$=ZRV;%4B+2^x&a_W1-wPZs*7z{P( zpX#kIy`qhcb+tMhIy^j#^(Baiu-X7d97eN(EqYgP-{040S=D#{ zzCWbz{lPz?hmTM6h0lFfdw0L0{k?Z}e6+7dJs3nILfMe~*Qik=7;oi9C*W^{+HnqU z4m#i?64zn((tN?zh@om@jd%o*={p0`dRsEm; z?^kp*1fZAdm4bfg2XE-7f9fNe45s>je)%o^!(X|hlip0<@h#8l|MmK7q)^a z3KRN_nVEo?9HkWF&=p$pZ(JE*IG!#wn3EWeEII5f-19Slk(z(JZ<5(ZLUX*!xu`vP zm!=QNtjM!YTmo!E>dJec2Y9mA@KLcwm}Q!P>%>^i&HrEsBoEZgL{0vQnGu>fa$mcf z3MOaB{-atC&%_)Ew3MWjlxQ6<+3)aMQv6~Y9Z04p7q@eI|tasrB%^^ zKa~_blo`$8;~74_0jh_mwS9Zj*ob*7G9WxQ13wJE&LnqtqbvoPg}^VJtE+(&!1Y0+gn@;(DJkYO{U7BG}v9B`5oUb|$_7LPbsJ%qiCXGp(Dyd~k64e!+6TTb6iK{+{` z#T_trgaC1ovIR>mZ+r~UC10fMahW^LVMZUXy$Dp=RmGjJv1u%IHSibao)fnC&UcEYnMB^_52bIOdg1Sa#j z$dAm_MADMjYP@%_e8SVu9oWo}Op6`Gaxig1p5^i)`M3cJ;;%PO?942mhq-)Fc5Vy`tq2-2{`Kb;SN9##u( zJSX-r;9ReJYT%U5gayyJQXC@v1$+Py!Yn^~kmm7~{~gj-WUL`i&R(OuPqPVI5{V}7 z9~LCpUy%3ttN-!OJ+Y#R`To-GhQR@tn`~?xB*P{RKSX5f3pN%Js?w^rd<~px>$xq! zXL~CqhBoiTvskG$J(t4B^cHSTz!Z%MLRzMYaUE4QK~(ro0uYhrUTZW`dhgPJCD)He z2_TOp=>Q!bk4u9$4nnace4%D%Er7hVfp!y%4M$>=GhSdq5)K3?Xau-gj{z*<$yRYAjEUu&I~nP3hBacELO{r<@8)7WM&HRumi z#ix>I0EQS=5w>8V2~yU0ioHff-P2QTZV>Pl)(zZ$JkCRnAhSDt4r#47D>8-FMbj(h zBARkuXZ>?PQ&{ORZz@SW5SAc}b6C678i1k(Y^~_vc9kNaDy=8nbNo%20|CuxdQ8Vd zgQC1{0V|UGjr9>e&dzO_Y1r$k*=||=V`;M2lCjrko^{qpH(Qe-am*ICC}cA0TG3gv$0A7i8~l4krsIgC1@WCw8eD$~1D8As0`K!}x#D z4l+@TM%J0vVM>=aP?=8A&sPE@|HTbh5CYP>rG)yZo2}_`h*Wq^0#;g~l->)l=8WkV z7t;VdMB_78Eo%Bjq+nx97T(%1w{cAYoPr@5wKid4ZVHng?|K?fO+d8Z5W@K$u->Vl zG4nGX#;g}seT1zBfcEKhsiWCU`}4W(Edmss0*cc78IH~RbPyBo1&G+~s(@;)-!)@Y z-D9WEBdafDfRW})X7%}^#d?Xd#7I>B|Cw4YUF{Su6*n#o8Y>gI9ucIpEM-DR0xrFl z1vvl(bE5WL0QfQ-mx7?o9Q3HOa!;%95ccZ`T*%#A4^lpwIwmZ;mNW{H%eOaFSih{* z#;#V|msHrfq!sITXH9ChB!0&X(GuMd`--A`*)3PJTUcqgR#tPl^#6D36*X8J__$Xr+W=@`2 zV+8rdp-u^yPf%f8mYh45Kv&y=rMbfONlImps~jCqQ_t04#84ob$o7}(! z$jTpByG^{HsU^~!GhP<-c+R|6ur<;GBAM01+i;)i+j2S)dv*nIyl z&TUV>^SgZoo`Ryk+gJ1(?ETmz|MY+IeOj(&YIo{-?%8L&sUhZA;~5Nhdv06))?3*S<>| z>(}g2`grz^9t?g%mFhsxtTir*fgKXSZI~^E)3^X;D+JccgCj*o>mlWT@lQ zBb)OF5V93()l~vOBB^;#l#W&0=lc^6I|->ie~Jcbd9gH8e$2R8g27%0R`Kkl2Y6;hW6K}|avT#We#x6(oJ5u%5(haV2viLeRZs=gt@d*J<}|xqeZN-p8)MG3cU4H9 zxZX#HwXgO)=j>*!@0)Xevl;)D2JG{%Z1snDflR}MlHjKb#@J`{3dq~$^Z0xJ;J>-GO%wC|v-eNrA<6MdaHyCGmZ}37 zuK=xKg>E+LOMsU=CM_MhW`DxE;@?eK2~=ab0WfnQ9p@3JzFS&O!NbyGY)G(pU}IZ$ zQ3OUe>^(hu2J>h?!f{~sImy(%PJljQv#lwVA&0gXFhvc(IE}~TAw^-1@xlC}a3jh7 zmQh&EGY1;0V@ayfo(&9 zM};S>K&%MJbFSOUp;DgfY!_lxDf5<@)O=tK0RvtDU6Rc=T1_)q=|P1+QOsZsa9|$* zF-&Q_UkaO|f0whV0A{0C5%cjlwySxR2riUwCNE{%6TL=~C)!hYp<;y!kYZ-rmloep zo{`yj7~}q>o>#^YMW9D-y%FQ9M_N-QZCxy4I2=a5e--EFXK{RT96c2Ye85-OAT|Jn zV!ZzLJMr@CZ^djG@pw3k*3rHA8-M#hj~Bk}!|{dB|51GEcmA(9fBaT#))V=dBAFGp zXS-Fgz9nlN2j|sj!{sI}DSqKM+pI-bKt1CCCip@H(uOQ&rZJyW(4*)*mpq?_VXiJ! zw(;?Q=ey%){`&W6?)ZaGeKkJuiLb@i-n@wAn!UqTVATiTSBqcxPd^+#`Pcqx{N``H z692iOH7V(S!_1}*F_~(E5R_FUK_1Hw;EO`=$fXqJnTT37K*lwHkM_Dce~M7WT7qyT9E zQ30n3ECndiT!Hlr1*vi=W)%EbD|BNnZmQsp3>k2HQ;hz46K^l(@y>V_ldS_XrRk>t zFYoI`#B^e&=wujyhv*Pc^h$p(G8dz)fDul>jU>nZ6q_&kedh2U1)Alb$<$ zvnDBhMYb#RXq8HFP_9IW&_NX+9b_lpO>Josz^P&2aSb6wwM!8-EV;MXEO~b)@<|$o zY1}4_O3YsbQa#m*tTBbHDgQ(e5_l=%gE? zabFWP-i{m=3M8umU?5%8qMQA8HnEzoL~HMM>T&0=6L*e|qN)H1CxG_H(-=@`l<(p; zrjwc0!Glguspx0t{WyOxi??3AiopepATxoqlbA2#L*My>@saQRq3EAJj@MrOOcbk+ zqJ3P6b*T_nml56O2jji(|IQe0Pvi0A#poO_;_Trhp6#__GAzd9vvpMBFy7Pq*0|sM zKop}I)5##FEc{}$EaTDHgLv@hVKP(K$!-T$WpFbCQ$B=nu(zz6RP+o8Wgv%s&C>Rp zAgT*}KFs;Rm!;8`N+_W=fk#N!C9_L|Lw=GXb=_q};-V#kP0W{~RUYu^NFGh37cOub?6Ij=FX1|4>!P302K~~@}}IbHU8{HYKc9cu(Du7kxncoWCpyeNLumutHnXD zr_CbZ1&3oSA7}&tnrRa+5DuUX|D#sRY4zzq%f0R7>SA;{`IE)FnydkG5zQ<)nD} zlKx;Lp+jK;UIn-=0K0f?OYfC#oJ`+&oeT`;ppOg+WFTd}m}>0921`)}8pAL-?K^4- zfA$N76?XIe9k697yxFO90S)79<*#(eO) z@+d15H0J2v?Ayv~$pbgpX#f@i8s_%p_j5Q@9`_16xxtF%Xa4Trzg_wKb9WEL(kzvb zRGX!t0|r=}08N9#%+*{!eIyBcN-h_(t8D*E04mzMR%@%>NOYbP+PA@qpcxB1s5h{$ z{Q3Z&08p^dD0I|nEp5&T_XAkTg%kBLDS4Z1G?Wxg|KV@g)IpFU2J<7&G}orXabjHy zv`h0NU)MZBafEe%@Gx5KX4IRVC|7NnfK<8<6BOUriB5roVn}JD zARN5OC}Op`J$qjXP=@W}z$)Z~SC8I~!@JMM!JYfD+}g9XT4^V)PxAOh9?r%aDLm|I zfcNA{jY@*&O`CeLa{Z?Q3sRxPewQ4eJm*RNDFDv}n9Q8AvDf699%tjL@y{GG)O=j{4 z1_WfiFG}ZIi1BQq&_0f1Fg7X1FqcWH2yjV&21T32OlN99@TF3Q&k2rL0_FaHadoYajDa21;`}yjkjNwVx~t3jE$w&z9yJJnWK^M-~c8*jwJhmWJ&Y{eUo`f)j4#{K6%7=QEU{!Vo7JR6_-{XdA$f98`h89a=|6#J8z zf@T;W0M~dC1Aey~c+I!u2{*(hg>?jf{AANWAfwi*LNPk6wvz454z-0ysjyax@p8G2 zbzvQ?Mj<}; ztjKIP12l|3{Z&pKwsXn*DnUtEc7Fp1y}4)C9(L>dA*7URw4C02IGCb&ZPM)~z~_2@ zY`|3>sA)f*tx5!p?%Kp_1ZRPIr5G&|!!^G!N2kywnC!f@*rkBE_6^0pU?%XI!u=+y z?Cnctm`XY>f6cYpc)Hz0pMCFo8^g^i&X!9tMF&c@U&nI3wzM1q2+#U>EKoFHg$~C8 zMK{B~0n&Mr&Z`)PR6esp9Z-|}zZ{B_ZdS!j_E!pJaxjwt$@Gy~rit}$v(KA~xD1je znY+>I#5m0BM)H{ThJMFj_0KuH$D92G#0q;ALT^-6o~E!p0Y#g!ZMLI$a2(r%lPKJ| z7lq@yv4wPj4>cA-6nH5Pp_)Lc1Y5M?^`y8dM!iss`?YesP_4whQaM^M{EHC>C@jlG zfp0L4#fAhFFD8IeYkC411+3YZQ=p~_{vP9cZnE?}Sw-YZfZQus&y{cN=fYQ(K}p8& zwSk15dz~LmPS8Fk*+8iIQq#FW3hOlcfn0z^v82Y2Grky{Olt zhyzQvQrtun>Ab$Tjb)(_{Z+*Id>d1qC)yyr24h9HlI#yWgxq(=reU*VX<>Hmj}BkI zwfX+~0o(uW-D-h7DEe-->=W|3Y?}U)U;J1sx3j1p-9*KEYSlY=_MD9elgkyi)bE}W4T?&a8!(X z^M0(W)#x2nqkFK7w;sF}y-FiW%lE`|a1gQXM6=wBZu8J`yZJ~-!)#30;14EOae96l zOJrpWz?PKKs*0Y0J;~-%c#dV_N!E?zGaYC+{A9mLGv=Izmp4d06q$XnK(>~DagH>=w&sb^Zh-%oPw1Ts1)(3@0Wd)g1P0xHir=k1B65AR9>)aNhgtA%8-1ymc)+t${-s69N;Iv z!+{(hGyur#lL>-))K$IGNj?@gdeFKD&Uk2^1CRDG9DYK{2>^y#%oH z`vPTdfNmM^<7;Li8H6>kn*4_ntC{a-z}Ed{kTA2KGtkPv=_h2CutIPCp5Fr|lMnEj zIf&OF-_s|Ifdt58An+#o5h_&x03ZNKL_t)j$&&;ac7A@U=gi;ZS+aLwW|s1Iz)P+Z zkbrB(Ta@pcIqX0%08y?9mXE-1{6)nAGlMpJlu8(vy=9YE9(EwI6JY*IVCRkzi<}AD zhGtU-`OKotU`7T<*;oRs@I1?iUEsCB5FN-;r8&2=4rZH8{DWWqZ*OhW#C-qEF{$l@ z1o^;cGkN<)!V)!;-RxW0svxx{oI&zbB+zWY?K#Y|gLfp7Uya4}DkhVWrNIJOmpWtu zims5SZeWPw@r#6fE#Qj-ajd5DOJlm?Sx{fh=MGd$p#i){v0PJej^_^Gi{}y$inh%K z5VyU3Ynk5w`C+^XtmWS1C3+U)!7z^QoJ6r)*PMea9O?deG!O{XJ~*5TR?LtEEEIj$nDCE zR0@NDHv+EZua2iLg^0BP9{f}R1@ReOvA3D~`d|oR(*U^7-i`6S*x33AzdHq%abT@f z1xCTBm37eC!0KW;)@#AG22O*G+3$~{fA%;Qqf1#_z`90K4*>b*o3E?Aj*pMkUgP0V zbAtRnVc)J+@#2dw#-m3Mqt)xh+ZW@QFH12PE#du zIDhn3%qF9l%%?G7o+wxClPcSTQq*}i6>PT#pm^`8RN^cT#p%pD%so5!Jztb`kok28FbuXQUDH`L^S7X zol7h}UW%QI_EbqSY`@JUwPg)Vex}}u8tgKtV(=&bDd3Z^9!YR5>1U2*+<4FHR}i?8 zfJnd3?qzpCo4=Nrav6K$1yTZdX53||tQcV0l(@aH=HLrvh9;&V_mZy7ZMJh{RpR@C z{oH093jwmWluC%P2?I(Zz$cXbQ&~0z%UDOXR8-1+w^EEY**^e53Gk#1szn%wfVKue z4Tj=z&G0S9Xt9jb8J~+-79+;1MO<=LE7zjGSjGtZ64rdB&M%@sxXfr2F&bJfPjDUC z5IK3Cpg#rUd2cG;OHV zNkr!;3e8q*u>oSAid6{=Q-~L^?JI-`7NUhM4hn+8I-aYSqXTInB91DRIH^^lrQT;w z#zMj01N?&(Ep>>j+5LBqVWFFe4efEBF<}i`J$Pm+YTTvpL6fPCXlhBD=giq%?2nI=}I}=?5+`K9h$h_i=sAmac2P%52g6+@@zAP&9v! zKONzmt~&vvyJ`Lq^wD7S=x`j%kTArd!}d_uutb7drQMld~laObVDJ6K+8jRx)GHoMJ7o*mDSA0~%Z8Z!2v?4-eW=DZ?UJN3B$f zPOB3wQe(HPxEfu?)#xe)laUxY)lwzK(~Uq;z^~Q35SI@Z@%F2iv7By#AO#p-^>QPQ zTD_=lk+)sM!C@iFjb)4{%ec5I#hv@#6VIG{FgAs=cw_K;(I}VWxbpo`+q^GgTlL|y zSc&Bt-zX=|FBUVU&yQh_PR9bfIQ+6f;Ugc?_lr|{7o_Ec0@eawOG0c8 z1hydSwdB?Z+M}Z*u|V`b0)QRnLK{m?OPX`3ntU7^Y74$c+Y_(@5CB+$EVp}bAm)l- zWtd#BY?5KTB+r$KJn95iO4@D)CLcM3BzxllplWN70Dvr?8qg-Tryrj2LjaK7^PhWPmaQxdJhf1L*)^yN4|M&WusBRo!1%&Yz{@yq;Kf zZ2VGq)J=dF?>PaI=^!MA*790*uKQ2^u9;n(3k!S?wiR>6-zT1OIZI*;WPGr}> zoadx!ZH`NTyU5Lv;xYc0Q7Tp?ABOpfDLr$cLeeT`r-@-EpgJ-2VEw|*W7&{5BV%rv z{8tIs0Zavq*u-Wrak99=lsq;$3|fY})Zqv~wo+?FrQWoy3&6MnkCL4Po|#*KB4p1l zeCRnYxd1Vl45Lz5$8>NR58r+#dIv|*J~)u9eLgc_IvI^58$LL^D+ZtlfEv4n=wFdSHR?0e(j-hHh#oOtTJo~64g-Yg`$=KeK?asi8? z1jk&)H7p*n$t~s98nbqwSY~Z8XK-x-0TbgR7bwgwO^k33e;WU0`pG5>hBeH{9L|*d zLNgUKio$%-BDOl6S*Ws0j(X3X%{~k&w$k2M`rfmH>zT0sT|E#+kV?HGzrS8P?SsZ z_noZWz-XSIT_D*el?d$ThFNuiI%XO3#Y}#t_+S=yjp?u->-p3w2r-NOe9b5GXu`%;da(>86_`~h7bFp7 zGf4Q8if%~y32`|;l??IX{8X%an7q^JA}$_3h{@Gy;6aN`3B^X%xR+k~nhG4Oxs`G? zrsJ^~J+Llm?~99my#D&@@#xVzadhW6zWUOead31Jk1qx>S(f9wKKkSFv7i3;W3t@D z=RWtDc;#zfisfVwi{(_$wVu&(IcD>j7^ED6YZcq3z%HV6fjpdX*6X%a;OSotHD@8M z7rU2Yf5`mL$L*1|$H#(+;G+mkq5MZUa=A;UF!9KQI< z%eOk;|F6{-lI+|eQW6#?puwA#?BSV!5BYZ*6cjZAa54c688p#;E$v}hORc8ir@bem zVVNV;FBDp(hVch1RTYt3UE5hHWZ={cGS-qL#br;C0{&q4!kqK`k)_lr^ht_`3}$4O z;I+)vm}^4S5{P7=$Y80FV}GA5w?PsAMJ(Es(w#9?ofE`hg{cVx-|b*9*vv8QXcM6k zwi@RHoiP%F7GM)!QJ&G6JX`@%o!kw8*3r2OwfiR8<%lkOd)c6DW4N%Qqbi@|rP`Ut z_i8?i%lRs%_(~TDYg#KfX1LtO`C=It0HE|M)-ot)u+l+3Px?HC#NjBm!=Zdd3zKnd z1&YcG%}mhb+2}TNK~=z!J`J4i7^FL#iT7;jwGHX(V+Zb~ z`EQ4gtNqRBGg_EH!yS8BzrFJ*rH~etaun*VD721Z+v+J`X?u8V#we2cZZ8VhZqxuy z>#=2zL0BqY;4luW zY{3GymuRC@6x-2OK|UWCKzF-YKbTZEj6a195!{r9ujrn6oL`3%*}lSK+8}9SeDbw? zuHPmy#xPhHhi9+J;vDZvZ`WF~voR#0yTj2xgvF3)`qexB(c&Pg~$~NvzNd zUVF8PWm1vkJ%0wA^FGRMA8B66gr!vMNk=o?@L%cgnWDRg^(p+z9u$2FJN4!*Nk0Ee zKdi&8k_-t4kzW_U9vgBm%A)Wm>5JGFHJA>?=ro#=9>e6@1fb(I=1UHKYp1i8O3|)2 zk$eNzCUfeO*bmrDpVM&FI#* z(P^xr+jCX2Ka7~o+wt7p?~mh?!+3lC$yl$)@oeiSqf`7=`*=zIUsF|fIJnY*0`|wl zM{mc)<>Q!5M*_WcpiUqi39@+s=Fr54m{U0%BUROM0<)wqX@kc?A^9B4D^i5z4QhrD zY&L*7AH{@;!zn6J+p78bT^`8?N>Ucl`r&=xS{Cacvz65u;PB;KF2 zEz;&JSI+kcNT3613g+Qw0ZO?rm`KaTT0lHs7nlf82EYkx36MqU#Dt4DWJxk~1?~W- zI&e(ESh`L76Y&on)Dz&vb^5?dpi|ii%4x%<#r_6hnbXblftBwQ0+OYg0w;BFu-wvz z&y{`oQgB2DIOPqR06K-BBQ!BvvDT8>UX@q7%2 z{kXci+7%=iCk|dJC~OJ#SOyvMMupeSfO3}9TjE|xwg3b_0q_|Z%93nAYz}dLO~1C} z`OT&d?YS_(b+Lh$PhGthlgU)9C~XkeiGizU)>3qUp$uY6=9(D1w14)H{m1|G*KYNY ze9|sN6%fCGhpuIgpQ`wNoc@mj?Dlca8* zedcTmN{s0iY{3MwxnGgY+5?vH3!{|ah3#?{r|-NK{r(`Heg1{0x4UYG^gtmj2rEa4z~tw0n(8juVXg6iu2RQ@&51mJ_TZI<}0z+ zs}u$W?lE=@b^-<|97ct;h%u?=&4#TV0MaFoce=RN2cBsie3_e)kDi!LfHRiNWo3X9 z=Dj#%AOO%?0R{NYDO`#9w=95GKg$6Ph9~oin2%dM!wL`t^o8{_1L%U;h@Hkvhd$c5 zC4kW$cuEfD`3G2JUB#PoG1qg&J_Gr(=E^jW;Yo@YEMW9(0%+&pGlzLGK9=$~)qDmZ z3S$*ph7?YMSE+nvVe+$INb?zz{C2k;MFkJh{r2+43l>(e+OU*;bmt1sqF*SY7G#l; z0v%v|&F3nlIhcu5U57E@Ckjx?b3Os+ODR3sM#Huy6?=sz?@roD3Gsl{y!K+Iy;7~( zuqpw`K8I!ieSTMI(~KF`8W)LlP!+Sc>|hlsRqDDw_7{8)n~2$Xtaf7V8eW{4sf2X_ zY;5K)=E({2c*6f&kVEl<4{W(si4qnxX&se6FaDvcWz5C{0qoN;^Z!giW;{~>uZ87A z<8?@I3t=$xX}t2vD{*kpjYhL2rYO$=&pn_rlJ4<%8ejX$m!m(ph~D8roSj`tRTR}m zymLB^RW#!xKk%dRy+8U>aWS05pZwA1;?bM0#AZoBdn%u5n5fLlgV9*eVw3p;7OoDw z1}m8(P$3C06=>;Tn@+o>`5&bL&jPGdz>622yD!%EI}aaf3@uQ9EU@X>MyrjQX%+ne zRv>;h`56Fg`9KmPSJ=cCzW(a1&iDUY^|{?)UiKR|rQ{iyN=4?3oM`+2@M-^(Ql=AF zlbM(TR|SM^odv*nOw7{E%+y}UoP@Z6}B$tPrke`7Z z7^MPh0xWillLTlczF}Ubu3?RIBfIuU*S>r6jO-*qv*wTl`FLM#A5lI9bgI29W!HQx z1pz^`_}v5ZSRQX|)osfB29p#I(eZi{eaU;W9{yMPojd} zK;Cj+c@yp~6jL-o?ee$Hp4mp-xA=jx_iVN!n!VVz52JW=CpO)Kh*md>?QU%FEN5@e zC)OrV!r7Cf;3yTMQ!mGRs+H&fx&eM}OHmCH%?r`uJX4@Z4`>bO>9cfkyNZ)4ymQ!# z?7b}a1{|!*j>6y~;aXyB%T>%QZWlDX&ca5ff2AoC+L`tV*i>W!MM_!MGn0TkC%32K zMYhP;F;s6bQd1b4ThRZLGDg8p$>t*MI~*!z`FeiVS&J-M_Swt5vvZJ^Wv ziaGF&X9B4_Y4F>auqLsOlxJ~fo+r>XfwB%fvtMdvZA(s%!Y;|?VTVfjRImhpu!B-4KH0y0`dWX|tY)g1sIgL*&h-6C6CRPk?~Q(ZG3M*@cu)IBqP6{Y9flRKpfIH5owvoGY!dyev*-^m zc>1@57ikl=lTD{!q#baZyyC=y%E|OMu9<^pmbP0;J38 z1En3~1H;b(oYm`=$&2ZjSfy0wOGSk(^{DI$%v|d*#W=Jykv=Wypbd*p%q7@TRGF2Ik@#fUP>@ zDuc#ZB5#KHH7E`UmB(6^;TzcZ=B=U-53|GobtO$kHawq4f6!O(240+e=A?Q&UoS4s z6v&as0{c3wJF0}F=vgw$5a24`m&TxcSk3t~qcjTu4HjR#hS&+G}8FzrhZH=?d7I5B0 zAK8*10aqe5hc5&7fUUN;pa_IDS52TNARRuQ3U*?gm#Q(HFQQei>NVuSxGhAZ+Y=Zn zUsL460CZ}1Y#6XxX&PiK8H8ax07fb)c)gO$yR==!Vls}GzVg*LxqnYUDpFmA{_S z;x(IQ^vWus5Y=|q!HIYk&!$nS!R&RRQ0q?)RH7h5o2*uP<^a|>n&3rBAydRH)@*DfhF1}TTbH(rj_d>EUx=K@qAjCE8__#Ok^6SxFPbe{fn(Ke#h zs42jtUMa=>J4dqec<|^V707sQSaSfFZ5LuYg-x{E^?2dEC-FTW{q}hIr3dkcpZTip zLB8gU*Bc&^%q^e)>g|G}|FZVNt}r6+z?4j#3nrPdr~P0C1rq3<_ludurN9;8O=dg_ zo}gGGFF(e<0UEQlG7{>5ll1ZlxJctTfsA6V%6HU#lQB~Vyj-VW3-Ay^a}Am$9L#%^ z1WsgNW5)u`zamV-d^zSS5fc(%=4c*&FYR~)((rx#jMjY5+hVS!cl4H7P;iEU9b-3jb-1vn*8xCrR87VrZAH0BHf^H0ouCzZ1X0ho>og&4v}-xg!KnhO-e z`bI*0f|s!65P^g}E`=x06Mgnwti9~hxo!YZ_CpyICGc}PH7E*;6g9wPWIs_3tdu!VE?1KssL%`?COqDY~yR*wyHId)gfhZM|e z>9ZWsDn`7w)rtei5!vRa5Ya3Z;{XB;DmKn3Vv<&(!kMwKi5l0yz7Wuqe~V3uG7~U# zV_!{J(elUThIqyp7asa1xnv6rGoAHQ-sF3(lJ$ds)_`9Ei&L9AgUNeUL-5IeG!-RO zcuQ<)&bE3j6-chVgfqBlP}KgMdRkKfg@5a`lz?h;_OIuMq}msduMjxdPDG41+nBB* z=G#InDJc3zbWhpSQ{Ka=_@MXAEK``EB-N+)24sds&F@pJn#yN4^eip453{{O!en=A zzuRm#0Mpqy%`%BX>+ZM?k>lSVz1oAKPcv+`2SuOe-c6wB&;8PmTRN{Q-$pD^=4`+X z7B)%7br1z0M1r=8yZ3rgZ&so|a*}kVW}|Qx27yE=6oSQvjfW1yRO|t4kf2qYanL%9 z!)_-!Ee`2bd1E1mdvtalXIBqmwS^JdiNSCdZ@)Q;(d9Zy>vf#88qr=CqETH$wO5Jh zaut_nt7tXf7mdSNY^sCkls_1UrH{mRU5rA-3^&!1m1Mq%%geJE4zFUdnn{{VU<8LM zr3~jvF9%()SRLfoN;@|&2J`EJa4i-%Gk{@bqbHXJuhfl1&ROp$yb6LTl|g6iILPnwKG`0CaUw8WY4`R@G$?9jB|rhJy_^Ke zn2-!!o^uASRB=u6`V7>{V=o?w`Ed@xu40}dxY(kyY!{(TxV$qz8MBW;nxk@)$+U?4zL3Dv!xKv905_Q8v9G#V&` zDKm+&)L_T}a09wA&j5@9cDi3}6(H7^6BaZE0HGKf9Fp0xz?>S7N4gdyvtk-A7G?_r zXefCeK$Wz01APE6JOf+{%rP#+VBA(VA{?m?;rl%TLnd*IYDX+kTO$|$1-%-pU9RSFh*N?OdFJ})@@mVOpmn!wj^MeZ7n$T znNf?D92O#MEWjCiMB;bL+~?32ib@nH@Ycd_5^#hHzc$1Q$}UE|Oz06n>MAPrmOMEP z-g%-D_@CJP2AGh(0^USSXMj@x@@8-Ib4&b07qfUkI`&``ckbVh!{ZZ$4=~pP-T}&0 zTHWYf2fZl(03ZNKL_t&?-H}Jvl3<@C^&Xy|d#~Oi&Fa~>0K5Bh^5T|8W3bM zinm^QIS#wMSn)i<=B-oebm)?f2Nbv(ttgkB>dicb%w2tyKu#CuJg)+zYQ9UMZJz50 zvM?BH+l7^E2nh7i9JJoV`RRFdj}D{V1rSZF)Y(KVZuF|KoGE0uICky1%=%^au%)K3 zxRlPqI!NJDp1EGbcNPT95rAupWi%QD`y~%W?RzNrY&CyTL}u=^4=fDevXnP?U}u$x zKuOs~T+8cuFWQN9jDX6~XejlK+CmBSK5EiW8T`&`g1u~uV%Y-_b1nF!@ig&T6ag56 zfF`rSmG*X3fB=|llCj!@nsj-w+7l?6*C3uN?H3BL*RT^{+|RVn3BTjXFh28{PwSch*)jZgpHr{blr{9(ju-~tP5UkR$%6u z*jxIU^hW||yuWf-q-JEblNDvWs=<;pf2Du3WzNM!m)x&kH#=@-V8iUOYnJ;pEPBl% zO&4z{)QHgTv?gLl^7+hP72qk4MFVTT?F3>w*J!7pcS*`jS@VyRv(6iip!N? ztXNPSLwNvWpD~yHkFh<$b|CGIv(G*Al57wt{vf+&4S;n|fedLp9@5i^fl=%zX5)zI z*k9vkcgl|hD5sY8{`i`>>7kH(Mfrw6^aOY+*is98+GE&O$25NTMV5`3oMzSfU+&9TuqqmTIwKJ?3|+ z6$dTx@3K8WyX9K6OQq<+7%fK}lnMewVSQ5c0}L0rV;j*d!Um;S2?N+3m|}}2c{%YN zoUnL)0P^%au`k0blXG|qzttHm?TPau3|z z<~GKoRa{;aqg;z<-KoYw{e?KGe_s?g^(d6t@Ycn0UE)DC9>nG4c}!>Hz^WW(0YJ@s zGEIyU2Oc3M)bzJb$;MO`mAq_8Z)V$=sbi_Hz)!%Y6y}qwwOW{|Fel*XIBAT z-ZeODMyHrniS=d~k$rCzo|KZ-Ih2c?BRQJEMlp}dmMCY?R&{%Pc3@n>vddNX1W57z zydQ_CUhlvx&BTmiY|4IMLl9F(hffZ}mRuK;e;Wr&UrPphO!4$(7#!_9NzCqo2 z{MtYH^;;iz*W{ejz)(IU_s_l9q1_R*&ngfyY>abyE zIXgpuK0spnn3O06@$LTu9DsAcyOj$8tJ~>7XC4zWh?W=b7ikQ0s^#I+rw%xgT%0 z&hb43_biYN!on$WHXOxbJkskP+_@K3lDH+Kh0zHR%N)9j^LO6VGk)^SbMjtAR^8%| zg^GYfFXM|%dzm5%Oh)jYrrAjIsaPPEewv-SD{S3hi;BsYeMn{H;beL-K~;EhLOt*8 zbEAETDagr7GbY9UD!}Z2fK;y2V33&|_Dtnj;}(~bahyMRM@0d#b6XS`Y%gMI zqNVeIOJbTT48&`%0$jxEHuFV=8koK$gUhp$;tjS70P{5~H8?af->9u%XZe`|)SiyU zasT<}qts@26#Wd6cmPE2_fYYb@GzQll|CI4%u-lu{Xug|q{9k3|z9Ov0<<6D~8 zEzCa(AY)7=38R5!=2rvb1krU5kF1hlOu#;!P1GiJ+GsY7`DmbPD=|j_3RbJ~{Zt`U zYotMHYy`MJigo;qJ(OWa+gfQcn@6o$wgjHS5bZu3#Q70_HX^`_{yJrHdgb2n4fk^F?i#!H<+R>Cd1-eO4I-obQ8U1Io|jD z{kXgwM!(NEH-pdx!c<&L9*CuieM*n-bmH&)XFnT1`|tg9Y*(%LH^2Fb_}BmY{~2ee zr(#Mq8#Sp6`opot|0ln2yP)X*QG3n>={%2QU?gDyDrzTCR4Z(vTk;3s!gZ0;g$&I< zyU*k&sMjzfRQt<}qH0%}n4*cnmzh=GTiTi^OKX`%>?4?F`t&_BE3c)k=6j|-&RB)W zaegjz%?T7u+t2*lX0RqkD?csEp9Iq6y>-Tdv#%=GWI}>(LgOg|ZE4S{aBt@F~AJuwx=;>Aj`SIp9k`c6w>Qhdf?309DIydIoX;U-C1RBdChF2~32k3J8l0 zP%3U@kkQ1ObUo@5vqRO>Igly!hwSwd*eTv+nhOl2QaDL9(5)d>7ZD=n$l_s0Ltse0 zx>)&WKf}Ia$0+qV)N=Ogc9BPKN{^?&RZpMT5-|V6;GVBT0cI1PGs2k?kgSXF^zjWu zW6en#IB9OV2_&a6pD!c35ofYhX0U$e#hxj8^Vxmc{=NrApSB+TruzXD{f&SA>+z-6 zJ{zZlw_W|^sfRf+2cW441jU26(kMoyfyB;>RJEo!TTSQ+Il)5-@E}pk34IaJrnKsH zG-1tD9E8K>oAmnGf<*eIG8Ag1Y8-YB;{Kic@hvZWdpvjl{hH`Uv&V6I^;W$3@RgX% z&tkJI#^CK*oWI_WLU9;`1;So>d>V27cpl|eDc*DMxj1TkchrjAs5OvIcO(TJA(x+y z#7KkH#C^eF>i7FG8{?tK7Q<{sv30WK7B-3`@-R&-!)Ad3U{Y0BKyR`RC^`8Uu&0K% zS{Z*N5Iq^n5Ma-wi%6bcYc^770a)xxik8DxL1 zUUG=btV~P8?ac`|1#?hruOc4r1Iy|;tR?BXgFMXc^ybH2l}LFzot_S#cy;CwB)~U; z#%UE}V+1%ORzd<7xj+2fcu9ew+T;`z*u)r@$Cws&+SR}}ADIoxwQ&d)Ft(uY0FwjQbg=<1P6N$+Ag|yb}plJC==4kJl+3`zs8>sm9&twVQWiDssf z{*;dwvqWW20H}vY-ejUa;CinQ;e>^mk*ZBgv8aB_Aiw;-5-6Hq zGlR5~(OBbwe#zsI>*8zn*_{i#6iAMwI0dG_ScEsHy+y_LVSLE6-+c=soeiZd z0|Z`seDfM+-7?->OfaBZ6Ele&G;@I2+nbm#%pwI`ZM0iT%oey!NK>&aP>&R1#_ec0 zi2mSGfjdV>$9nJiVj>?@_Tr6tOP;s3JebBm{hxm0RzcDGhjmFwoA@}=E_fJfM-F=p zpc6?m05z5XSRB-1%KU|IoMe3fD$Ip0w9wA#4}t043LD6R1!^XsZ5l8;@w0_zsJ(4D zWV;x2(H}*(cchK_b_L696}4uEL>)8#lJ}DFo<{fqM`0Xl9X?mY7xhT8T_#h0yM zzsU7`91q`kEqX^M(LTPTaR#^wOA=5NkW-+03XWi&062yPt3ug)CZ9^$N#ianEfRZ+ zXJ7X$Z%KzmFdw_9l-eVK0rH520i5P^{VBx<%Q{6i%SKt-YWSonh{NLfR<~<)L9)5X;eCL)9R8Q`cBYFB z?h)_=;65CWR47A{06=Q6Vk61^bTo=)qZys!V}ZXsgR;+WwK?%cVPg6kY|$NkYytn-X_g8UeBE=szn z#JEjM`_6Ay9@c3+Wq-qbngMN?^w=0Nzw12$KhTC4kG42)2;}veZUA;T8pXlkp^8$n zW+1eVxitBgPKN_a>C45aHalW}18$FC=4)N&xyH(3XM#{J8fPlgJ3B88rNn#~q*c5xnuy>5)gBh5Ljc2^+qcr;Ssf^l$q`Y`_V zi(iOFy_O1IOR?)VMG8z#qAZ+>d*&+Ff0>ySlrotDpL_59SB0A%xfnDS;SeV~#GVWRWB`u5wI7L1RIF$lNg`_+0-sKTj-u z-h%Z&=JU<09i+)?*tTdCzE#I7F5k4<59zyTC(`~jGXA!nQ=72`Kg6)J*)+g{h+D++sx`ok)?p~(R#w>W-C6b&R{a2YJbC0^CWU;PpRYOa9hNnKxx+h$3G!a|^1m=;>k`{JsgBOklxpWC9OREH$ zt1kdXH8^9MVL#XggH2TRYwm^B)UiFZyUxmaz{kP)_9zaYJ!*FTC6oL zYlDG~P<@I7j5|CdwX}^+Lu6W(3ZvP?Xx*_HrBXyP&~OSSlfl!-iW1}RhA=!GqV>ffqp+u1tQ`2rlDZWgrk92k3pP;EpEyY#~cB2 ze{1AHN($Ghzb{)&XP$UOaerD3GmTOl0eRV8s^TEccc}9^atmHLdavr$=UH zOD;5v8<~K>#X>VH_AnAZO_0Yn!WNa!KaEE36CP=qz`QHdx z+bQccQl$7UhiW@^z=Nd8S!v!Q)Qw_01rVKFdoJWm0KbAYGdZgqubZrjTrNEH*o_Ve z2uS?2BP#q{yd`t3Eo)Xe-lK<-sI&`Kj;V8S2*L?`0mXwh=Ma!l4kV)s8a=cUX8ltV zq70oW1w#ZOo|}mj5MDBE;TrkH2INP7&90i->JS0G#)}@+HncNC2R?aJKa)t7J2`{T z0nMjbJO7Hr$fWpH!_)&;X)#5xnt$}PKEg6!0ipKVk>7O)3cFAXYRUr^jUF~*%eO*# zJp!B;N;?31uRb$(s`fn2e_0Fp>zGTI>xSSd=+RyJuAtXt>_L|9Ko5_pl3NxiSQrHe zwD;Ud%Vis6Au(r)b)j(0z53M+l5cRP*CJa-<{D7^&mUW@5Ng>5o9|EGXzH=6{ebdd zt;d9cmxW55$EV~wYrC;0{0~hYB|<=+F|TgML~*`mbmd@fK{i+*b{qTz@IOdq z$>BGEKnbjan9<)Ir;dX!uPNUAKOm#3AIB6ia@qP9}idptStWMz$6d&xbE7 zbrm#eT0a(pT>VW_UQ&|@SHFL8d%(rhg-id|5AW+|yR>4s{Mcbqz$dmPg~ zew87p6a?BGqQRwUKxy~x(ILZqx!D6>rkNk+UcHOvnvstJ*wFZ8U!7Wr zmD%@}mAwU%iQ7aT2t$bEz7(X;B6-KQz6c(uRn<7gnVTrme%9Ts*xQM!G11%bi8Chr z4Gn|o-kSjiSnFyWZUyeKdxZ&I2z4Rj$kBq%JN_~E!i3nBV5|U6#B^zx=Vx!^+gSgv zC)`#}j&?jSy6mZ(lcCH3RkV}mDJP{5qD)d&%k(}9 z*Jizn|Bi44Sql*8jp1=T-N?i)V}JFYtH)9@_;4moD^BRp>g46WnUa`?3cq9+22c|S zc*%;t0I+mpZd+O;`-Y>zuI&zi0(90QF}D(MN9C0=}OG z0brPyG0X)9V>aBXLnA7R$Nn4BRXZ(560vSgKd?K3hOFb}@Fr%U)r=qsg5xAwab}p; z2BnxB8T$`HuU9{w+5~+`DO8VR-SG%L9(gTKPDIcHuVD=be!qUHUY>aL2WQ!~ zg`&6Y8kto2BIY3QZ+r}@wZx?k0eKi^v3rv;Q8(4II3;nJKx9yBkyrKKwB?=HB-hZI zzrUS79rilks34#4L>a`+mfB6uu!eSV3NPSpiRkBmYJsgqZ{@FDmd{=CVgLT_K0ZHm zyvhi?MpHc9&-@-07{BH-4X+eVb`kHtz0d#-YS-e#y3)yk#f?)_%C%Pf;WK5c5e_uE zHi{%3Kc|%a=QjXIT6KKI54|GColinVP*)m(u7*Lx_`YILsaA5u!k0lq8OhYGsIY9< z4T6*mrq+FCgo;o@>XfnxJAnj9?1(a(PNMX0Cq!P>1hk!Le3NFy{sQVFL$GC(wk>$b zXS8wkooGHTzRb}FG-mk&0d(rGUzD2}bW8J3h#LB*ILQ+|5%w}QirPR-dfYXCdna&c zS16_L>Yzk0UPlGd1TE~u*EaXaqwNS_@uJU*ja>>R$%J=hn#iG}?hTUKpreB3 zMWCQAmF-GiRH#OcyU;FWm=S8q3UjAC)mG##wDa;)<}1)pc~;AARDfq8n1H_rsVZn) zcu2Zw;I zNviA;jIP3ny1$~U9_jYu;Gd+m5evXAG3%>su;_p<)l(&E1!j z&I>^_&=Baiy;5w*3A`Vi&hFgNHc1OP;TSC7yiSEv(lt^%7)(%HdQ89TO4R7Zt_y87 z;33K6^Xv=x1JI81td@D4ot6P0R5qz+OI$rZ+&g~v z=eL%I-sBXPsPgHm!-Nu>Sn%r)YWx24fowQ!BUBjp^^H5j3VAROrmP9Qv582T#V?vs zRS|T-)kHCfcUBlS!2!RiXpO2&u8C(C&V@LQwCNZG?o<5J9ez7HX`jtp@w#4bnE@r%YHtbZIRozEwHKm`lU4 zjwFwmr{7sdwLP`))VeOz!s3ySX$ryO4jm%@Bu))b>J;AxXUb2P9n2|LnaQauM=0Z7 zmI=zmqP=njViH2F2elwt-En9uUbL(BXW3LSNQM@hQ@N{c0}7iXvV{GXK?pQ$A>v+e z@jAx26HdNvQl4w}1HPaZR)^ae{ficqUwT=)*yz#eF+SzR@{}1woDC|Q94pAm!U{E` zwWm}NEQw#}s6}5{0A_@(rmkXcLJdlklXiTYj<_4t4^(8qjZL-}>bq~7#SB-Oi1=tC zN(wHToj=|^?%y0aDO7v-n_B;Ogi{OusiIkAV>d81Jl5-b5HiRLcOuX)Sf-W+69hhx z!)4)2Gz)2V`(2=W=FmF?NRSt%cN$hrc8tV8N~G}FY#5ZWVy%*HjH&xskQ1Jy;sevD zh%!+}xW;aNJUj@~hm63_>s>%vTWQ2cfyk^HP~o^K%%O7-vXI(j2TG&zAIhm3OvhTA zK5SdFJKUDHnTI^tGq@JxuF-HT987EbF4zVm#9Imw^NU5KpAz$OvQBii6ja+Ku@+xsY=x2 zHV|6mDf9DfTED0lq#)%275CDEBrvU0X%vj@D8;v-z`~JXw5mx4{Rl#1U>~8uQ%$;v zZjcR%emRd>G25a9X+{*I*G@(E(J3b+E;B%o?D%liW+9K=j|S&FHts<98BUZ)ChYG_ z^?}`y)Oq|x!)u*#LX)Y!ZY`Dx@#-scp4J0Tq&kQCx8TV z`d=;pq}-8{LUOmCW0zAfqf`g24Q1I_14s6=*AMIK86iWLK}s>xD8gHkY@c!Y8fGk8 zM3efsN5pb=d+>9Ed67G+<8CE!D*_DOz*=ti35;X+8wv%vftglwJumoY9ZA8T19d+G zfNDakLMx!chE+n?tcT~Te^<6O#jTwM@n-=Jn4;Aa-*_Rb2Q6e)7<&~Nd{{KEL*8AG zj$9a!+?a94%$%@OYNoMr3wZcKg<}3_oilh~2MInP+IO4fOOG`Pex@*v{vNY#)s6Ey z0gfg=erR5MdDyk-ig&3aa1PH4l0>_KHzYzETQGhSW{Uk zN?$W5QZIAT97}$aonKq_y5x`~-fV*?Y3ea_dcRmxMq+<;aUYyVIb`q^)0>|>x3-t@ zfi@+0E(`fm*~XUoDmvzV9H?WyuebjhG&9MRvXl~fSDAAykj4;u5wgo{t zG14kU^W{XIZ^vDPNL});C@h}&Ay0ko;{i0|YGlt~5IGqc$hN{bHPWIMOF>0kSf~}d zSs5dC0HTASo?Ok`uB@utv&-eUIPm+zG+QL??t{{oCdm%PtjZ2rP#p$Sw!N;|UrI3L zlGIODq0Up8Je=c*sB)AGGINF%em=}T>Y@b3i&ny-9ZCvLLsvZvMxWJh2Q_rdHS&a` z;CG9l)g4mWZq2<4n_&evujzYMFbzlLM_Qlc0dsg3OeEZ7JS9^&%nokWmx*d5A>P%| z{r{ciM(F=^ez$sP1nX<8NNGB9canRFyq>p zvI4V(Z)>H+7Le@v=JUt)%rBd&58FPR-_F?@#xFryGUGU!w$P3KwZYXq3HLhwirC-V z3z)I6g*5(4bOwZoMVoTVRDPd?a0S9bR#oTSe4>Qdn8pV=c1NoYw%mxl=QId79W39z z+~D$$3fmyYNLMAT8A+HnhW@CEvtYrS$BnY>;`_36@16_-V z(Ks{C+GtWmBqa1?aX@4vG?k_%#Mx`zS|?MOFRT|K=qz+!v>?Y4(s$FXu4}$dB~%j< ziB}84q)L@&))%Kykw2wBydxk6=KR6eoydg{L zC{rOtAk7swmS1_n168)omf4XhDPyfm31 z^;*Ow@h5`O&yV2LjAt{2M<+%YHeNoy_`rvRz#~9--B&Vit=?GSKt85*ehhz}6z_ub z?z3bM{6^XeIzpcBOXo5@pMBkaQmoEuIvD-}mDLC=x~!4?aIO}((G2+Eyzy@%kJMKf z9s|XTOuDWzt-War*15N}2jVDO7)|*NE;uCip2hjhR{4ofTa-^5UJADdWFluKtkG!3 zm{AS_gNd6n!HH#s^T`+MB5!w%EuKMMj5)Ar;+G9Ro@9-0CLfA1KFHz717jrkR%Kgp z`~~OKD3Fd_&M@Cng7!C!&7%WbfiG@EKTlkV*7Q6Hjl(umoHap$sjIN6!O@XHS9s{tR8Q3BX6^i3@d5yx4g~ zQR+b@n>MW&)|>783f=uyO9c|DIPiM82}W4l%7L-4Z6HOH+VSB-TXFVUi~Hk+aiV#z zWseI;S^NC+a$E4aPNjx>+lD!SV)(Xya**d~5c73Zg=J%+4C+F;3AK((^_xqYgEL)a zI))7xaYOg-v)>0ME|P|Oa`B2fSji1C^N6S5X;oRWjPzOW{OZ@mk#62~V9)E!oF!7D zVyzrA27F?*Qq*H9{Prbd=AbBL#mNF0Xs&G?HgqC#_VXOQ3w}Sa^;4XLNODF_Tb7<#0BHc+BJp^#jW;afakju)lO2fvytM zaGKGtduXPgJ9$%VRn&Jih9yQ z6yiTe`BESB&*109vpY}=D^DnZANfeR)~pGB#AVga>0E3d9yZ5;mqdEeRdSpo~eq>vDi&J+zpUV5Q=!0pP_~ zo&R#|CFTKPKy&KW51jxF8T~aHT}h@hs8ikKFIZnTEE@QnAwv z&y2@lE*Rk;-y+3FlQn1d)apP`ICFmP^1$1r9(8(=i5+*GFyo22k67}$JhyayLt2ri z%=bPHRi=JsE0aN?8Ha}qR8j59&jQ+*fk}#`5AME$N=m^0PGb(2-5+~P^W0DU zDyKj8laNMq1CY9H#Y|L$O0S%sAXcEXpevXHwmf>|Re}VDVT4WzjcP!h>xId5wCRR2 z3F#-6B_*~XnIZV532H(`S%;w}aTFGHG}mMlE4ba3A+kmqjaG}0AWUdzDr)Fy?W2zA zw~(+h{ft2dq-L!UwJ-b#WNF2p`o=`BiGTMnL;GKvvaC&?iZ8LPK;Jgxc1+mFe?!_) zSI>`&VzJWoDeQ%x{=RermjO+@>F>Rg$EYX&w05NnhY#p}@+?z@R{#m|RUI1Q48*!{ zBjNOiPswawvhX#H;>ck{SmyzRD<}*3rmysParL^|XR-er#H1o3R9(wr13 zRji27m(xSdbdGe#Z9IGPxz1MBcGowf%&1jJsi9|H292Uqkadq31-mAC`2{c+80R_; zQ%D9smIjaVIQW3hrHJ`Q&|N4WMs?VZ5?k zGaFWFvNA_NrjyMAy_|6@F)?q4?*UsBIT0>#E(8tPW0lNWvtX`bGed1Tr(#q>It)_feiI?i5!^8nRkUxtu)NdE}VrurNI@c?v3 zbJkMoO!I4}*&)0;C6~fftBrjyB!VoyCq$D65IPf7;a#M+;5M*x{?q$f=$dfQ+-QU^ z*3BI_9A@t}14d6d<$P%UoMje<5ThYx#ah2;oCL!_@p*9Hc5$DZz7p>KPPhfs}^L6Wt z@}2#239abmW&UHflB4H#UvmJ@@MAybcEy%)?B*;uni_2#D}v&I!ULTYp}=~5Lazn7 z=18R#Cn!G+D{hrpqAye(<$di{ZwyP=J`3Dip5gNcJjdnz&zgpvGr#Zt=e}!d!LbWR z$6b(jjJ1xzltmCDns@H!slPFv2Q*KGe|r|I6&GypfCBeD`-$e$sGFe?_!?oPf77R% z_F_+%@J3DF^4|U`*^QfppddRYd%8{U$l~M8#h}FyYa+X8RkjwZTaI^WB4CxCBITJK zsYK6KrtdKAq7t{(jgeV4Y1s>+L{mZGI^0ZI7sI`BNmS6)j09aRk2d$lufY;)X^G{1 zZdZ1UCo|^vWs2)C48%J4Bf;{f^XRZO@GY#5Sy(Xa#3A*B(PTj9t`$6cRBDd^5?;x^ zu>m(d5eHf_m>tJ))21UE!R3dLWH+*~*C;sjoM=NED>)U$6^2m)zX?qNoQy8rmj`Cu z)uSDS*D2(UF{y0~TPEhFF00P$ZqwLDXFQY5eG)=T5Y!k;w*;%t$M^H??KH9Cn9F!IPOs0gINa>M-Ofrne-bn3t@#YX_D>X*ySy9cQy3U$ZK7#~d z+B1kSC%pGv7bEorhdVsph7lvlV`*F`2U$qFJ&_wYhcGn`yH+RI{)=tn%S|6YuP@ax z&Y(78yG~m_D8>wt3lmaA|g<5*Kk8I7W`j;-7K(MaJs_q29 z3kN|HyToRAgJ38l>VcFnpE|+A3M-R;Ys3mhgWqY?aU9Z9`NqDIoUuoU0&5r;7>v5{ zEq7jdBoybZ%_S!|0@X{!CUo|8M=n|wati_3La$WCU;}~U%~fGpwm-SWH_#AM@wG5v z*eYzK-U`SufkH|}W+{3}0OJQ76nrLhv|F3>3sxSaMLW_1@jbdz`sHA2Mw{R()geu@ zO)x7iI_8a(Xhmy7cK%WeRO#8ZONW60u|#sxGe^jVCCih?Y|@h}+2&tZOC97v4s4^a7i&E7`aBVVei(Dm^SgH z=8!_<2GeKSn`%}3mUvLOnhHf%$^#nW5tbEKSv)a8xV;9k=f2P>poKWfH?_WtyD&bN3SQ02I5 zz(pu^INgh-mcsb*G3cNKDTe(gYAVj81hpHv^cBVa!yjJe0)=8vFRWPwPMphnZN0K) zkx(PwJJv1Nww3su#U>%nx0EhKpzJ0{P;{&WZo?zC;g;m*Iy+h8r+wILI@}qx2|?fb zlj4m*n($9hmvI%i2v9)Yu7t6bO6@@w$~gpe0LYvc>)(P}l*#6$nHh{58DSF^l#z5r z`bH{tG_H>20c}$3j3;Pvqq#9o54_(t)EKrG7|~6}-(*N=Kz$_hTXl9&c2PrEe*(P9 zZ-L^3KT7)y4!U4o}ZSzRK<<^%eF%>Q+sE;tA&e1d8Ve z`YK|oy2-P5<1tCk7Yx9gwa_&^VlDU*bIX3@8sLffdbQR=cyp#wazi)OYDcqQ$?-b5 z4ga7{=#i&Z_|f9t>&l)mO?**g<2UW;=lC%?{{bKF)c5eHc`zOL(dBjXv}(fDo4U(n z4}S@JAhlLB8c%!;A^uD>- zG1w2DU->`!sI#!ov445LW4v@MfOK%5>>T@k>soDm>i+k&SFw(f;E90p_AO=rGr);p z?3FI4#oQ7cRMZH(Xt4N)mshv$9>>Ynrr&i%kLI&yhhy+R0_}Zo|F^yCiQ)fte!z~t zvB0(9ieMKYp6B;fRi7MUr+yjL0JRt;JV}nXvOSt z_{-+Mt@OVCua%zN=66p(H~$gv#;k1+p!DXq1I9NSz$$I%79(KX&=D9^(1@^ZIQK7! zTF0RMT-QHBx>sB|I{f!n6)gQvRgfe9ud2QS*8l~LD(h+WA8KUOcPnrkD~JwoPR;Wr zyjQ|~A8+V$lZY3`s0ZsON!mx(L{PWLh}H=Q5y{wU}JX*X&oXd0<5BWi$i{U(|Gb%8{`>o`xfk0xW~_(mW&BT{eHh_ zd+vBLu*`F;>*Gi&{#`6!!JOuWh{p8%i>2@fhzNGWIzEd$4a2QWnf*&*Gl zn0-`jf1XSR12FxE1ZaKB=yc?A5sCVYqZs%+fx~GKO=N@^3@TXZKg1rDX)-CK0Hz{B zkidfW^##q=fMS^dDVR2qh;ncp;!vq^96nXbttKC3mjHCZM#Os+ONSK~M%KX+qW|KXeCDsc~FBe?9#3ofg!~DcdVGua-{X;=ldd z;|B@Y&=WNGO`wzhM`{0%B+kO83v3a8`T<2ULY4A6g7*8&gR-1TRL>;M1S|Nm=uNOM9_7(5EuR%j7>Ve~;Cwb1sg^)?3Z z+9XSX)BBvjE^F>U`E(E?JZ$kk=@ko)M##QItxD1#L5K?n!A=Jm?rs=sBz3LJDE5(1{s2+^#2{uMyUU>Kl@?P*?%nq z3LY?Mx3H5wwK;8U_d8Qp)?``>>_xQ6*l64wNdTr5aU}ONdI}#oK3@y~v&9n%GLL&M zHr9uPC|_enp~f+aTU;m)21+Vk0%F7@$V0B6#td?Dja4oAdmT;cY=cF*s%kQ?-6z%n z_{bd+Vw6D7Ys&0TqW<}A{D$V7DTzw#8^14-KG%eNX=OvMxDgb-xo(n^t^F|_!W`t) zKQoO7M3wUce+x$4N$J3hAA}5wreG}T*UAJImb^&og6*?WBgWtA-S`)##=Rl{_)HH9 zxS>nEp$|zIl+*S8o~2h4P9|3q_K_e#`WIR4y?jg@`eFP0pM4dhmKC~_KgC<89!C|k zdC=>cy9P1rz7yP;KXrG+r(y2U*=;Fd3H3Zbw`Klp{H2Eb*f;GBG^O^qt{nb2Wl+mI zp;lFc2%ko)6YZss1{Zq+l`?j^4)waTKjr1TpAWxQM_jp=bK^$k@T52vW_ds+Qeiu! z9m#>834CxtI-VU0`7Qx7uQ@}~SB~v6e*c?`BO(b%nHzrzPsu5zlJ#4EDTH}7C^~I| zLZZ&T^tl;7-oTAJZ{|iB^MOMFh9Q(*BxAVz7O+X!+BNAj{9i7>9%PRP;@fvIt0+Mi za#-_^P@O}-<>TnLdTJ8!yqZCG-v;bqrf!1uSg!dfkY~<6Gx2Ge=YEra0*2{TQZFs7 z`QHr5RoJ#*DJxrWC3jVA7kz|rc8eW6Cr9u z9XT4Isej4|s%RwSXH<)%#kpRt`Ka|5n}}I5sj{&%NAKpoV_8Bf?9&E*BG{~x5@>Uo z>6Kee2#Cc{^WoIuU#wb1qRnD>JKELvEp{^Su1YD-Dl1}h=E*I_pJ;UF`=`9wVOc^b zn(SesQoa9SNSzehn;W$oNA9^GnK+*Igx`6?fFPj@lUk+?88p4g$|v*q`(fc5h6| zh};PPD_E~yz|FCBWUHT^V^?_?c1RU)R{^1QB;VMv9=^kVcdFnwbxeb3L{BR2rwx}< zKA~~i-l_S)baxyY*`I{=t@C-ttMyfLU7qlZVfPkcL{(f#g(XSnS}7YHpZbQ1lIbF8$cBL-SBWn z4llzicOF35YH1|Er1kh0hRV*VXXv$~-Y(%QKeAOY24j&}8XtcMc%iI9C>Aw* zlRCFeBgi`-Yo{)8ppys`eX34}7 zk9%X>HYcZ~G0b8OuvL&qdqcgo0LA5^?NG_Yx|Enco|98P?lJxQeu{$@24b0EdxT7l z6RnOsCyg|eQfJWD)b%8B&}YY+1BZ>->n$&*xDoNVdU>poU&s{*PfI{%e@3 zzJaz-_`5qamOo@NXwwX=#MfCX%7Ss$R+o>sI2^9V$*)W>ydA7r$fJ@*bd`OL)T&== zWxu+Fq8+LxLIN*@Fg-hIL+;WCB<;?`)xNzlGYUGu?5{79L9HEj~)j{7*PJ62&Zi0Zy8&|yNY zFLJHaUZ-!)3bTD7oLxr)$sIG_(cWzQv8S2^ed#kyNN?iGhE$^^Z2*&xcrId@t-?+H znKYr%S`B@RdALM`N39dQHtrfpm?(PzW!tX47|8&rh6XK{+STBS$d=?E4Ph z7}pntoyD~py~bMc_(-|%;8`cUnvaE1>0W%50 z#OrE3R7X~y&l_EzpMr(e8!T zmoSw96YF^}CAp7<7GQLazb#{OD2JElm_Mw|&7-TigPinql~BHkCX6F;vpcXN9wLJi~#~?&!u%(Ah%}ZW5f%IP1*`3A~QZT28l~V4-y@dYm%^K zM@5n^3CcHtZeqz6+=Xs)0-r1PE-PuyX8qXa>*b;%3+Q9j*`kZMC${{D@tqdXpUG(Y zZw-Hay3q4LrAr+OB94B?d0qMPoRe+JK`q5R)o8#RJHe=lI99v|q{b`VmgU*^CR*OpPYq5BSmCdPM zM8!zzWb!~Z_mC&DE10lf?Kic&B@*gi)r*@2TNPGYQ2gBsH{XXeLc)A584#G=)}+(G zFhgm=+rw{nh` z23O_BV))#<#bU?GpRSV?Gltv7(}Kvpo$lbF68p$!IO#0=ki0-=N`e={%?kI$U(w%L zLb?;i4~VkeTDN^ZYyz!Xz91B^wZ^Qp(wX_l)IN`wk6JC7#%;&M9)IzdF?8v>v);FT zb8PuA8Ory#3b@~~We;pe2RKXdWYlf(#T`fJE;dL;!X!+Z{XERNq;eE! zkd1_yEsdSDdm{XnBV!C%PDQxX;X)KQ<#d}Wg5%B%C$!3><_Q~(ho#z33jWn_EX$7V zm@g@5*W)J`T#XmJe*3zNw13_qBj#uTjdReWq|XOg)#SjoGFBFrnvC^^05e4;fq7)L zno3Shvv%8dM}HVjySTFx*326;HH5ItE+uAtn3TuWBTn>@jP)_)d3&f#J*`Eua6M*p zKVl_78qgP&H4!IEPMEg&?u{%~uF`Ewx+KW7IDn1VCROUONGcyGNRL#=$>g=?%tyU~ zmQdLJsn3=!p(fx8meh-;@)L)hR2<*f-u2QLdP86>{AhUD{tA<8cxTXHjqh>9q;^iP z{NO$)gTwQ9M~7?*3YbJ(w4bAQeGoxvv6sdzuX>`mO8MdA(xSDhB+&Zfq^Q}PFk9mg zv`TTI{X_gAa)6l;sWQ5su~yX65>0#<-}{6G`Ql;vbA{_I-!MT#KMR>|qZJZzB|Q?E z_o_^<1)|AyJ90Xp^M)kyOJG%M5r(ag=?8~ASuYs9$K4Txt=QpA7Oq*{}woX#O20`9nQb~N<+ zlMQ?UOgjNgrEQ0{ke#yOEhtGvXC@!=EN*675^MX zZqA5bIk?YgyKbKRl>e(}=w)KCB2jtk-z(qWIP$Pfb^ZKmajgj1F<&jEyv+?m*lznw z)FeHbuCghbH0Ol%Hz=YnTxxDz{$>T`_?!3p^lwNO#d zn4%f7@mpv$>B6C)qYT#A(ZcvX&y3tU5}6#;x)&EdVbr`&OzCNuxU~UhC1wm@J9h7V zDYGfoS)0cxfZc>L4v@v_3&hO;7Hx{SKC4RxHwV3tF4dF8rT|`) zpXMs3bX=U$%4rA{$(gx$6N5Rri+*|}2ql92F>gIb9u%dOLR1Y_0*oAVUUr0U98k)< zxA4)yn*DJQ%=ax=@{WXJM|$a_7E>c=^?A0UqNWtK3(;u!+#f{6kflv`WvJr|svQLO z8R3RBHyab1N;EGAss)9YLzs)C$qBAXJ*NT>*Vk!hOV!QfuO%DzO55#-apteZ^!P7R z7UQ0pZS1?UAd78zSjeL*7sGo?vTCJNNYpXJi`@|7$VPV-D6RusWxjqp$Sbea zZIov11RD`Q8$ed$9VH&8Wi(vGYkpaO}NGlCd?ZBBhB9W^C}IfF1m2BxSvRD zo@owD2f8j_e4qT58e8w?j(>m`ZRJBI6?fGMPA~el1moisV3N*E-}HPUmOMq`v9sZ| zC9ivee#Rk|XqzpvFd{MQq|b4o1x#aI%X!!c;3VJ)yBot~?7T48?52|ZFxP!5GIwV_ z-oX(yTta10&YmJ;i&3+H;(1rVxi*p$R8xF_&64X&WeYC6(^ddWtr2cz1Lr6NZmN&Ml9EE zw?>vz({>MwqO{6ODt=-i0fM7k_{i~F-syl7_mn!M#0{Q^w&z+>A>MxanN&RP!?4zg z=zkt7gyv_3A<3#b>^E8QW1-2z_84^dZc(RGK-gLkwGJ6-VR9iYSF0ihGV z%w0CP8nMh-CJ^>^`ef#=@jxl-jur=CzxJKEIz$zAm494I-h19o{)s?VkGHUCuQQR& zd!>}XOwj>zjI2&d`kdt zqt!IATU0>#*{&EP4#8Psltas2oqyowq~!cdcSz54E`_R;XqMp#6lsFgV$>f4vK=0} zyvapCS_uH(Fgkn1$LtNA8Q7IaBu{8CsS==>Sx^V;Ccnnm*<-nmKQd@ifk!DSW+bZK zLf2yW%ex^EzGBj`dpndL&@7j}T&$3iS~V;=U2UG{d^}g%@nL*`^5Yv@jMdMHP3%mt zYC5TG`wDB+SsNi_ykGhJyKHoId@WtZz*G|_00%FgcERRl$IhsSQR=l)wVy+0z2BM~ zhD6BbgKeY0T09{)tqO_z0{P?DN&H@0#9dPS#=a#P2wxcecG?&~yMk3FA2g5X{!Bx=!zbLSc2 zQ-2qoLn_lDF&HW*(Cd2;$G`z^7uCeS;aZ4U5h`rUncN{(AO%)~`lAkC%Yo&O%!$pL zKmOHZ8F3q*kQf4{;3>eF7!2UxDR6Fo$hX$YPJmj@f^C0FdCdiw$m~*n9UhlIdR^R?E~>|zq~W?w&JWtq?r#SUMw@!3uH`OY(NIiUy*Hg z@z6JEu6YqE!qxw7XeNlyF#8qN<#DuYltmMv+TX+|->Sq3L*N8k;V;PqZF@hE|3AJ<0~A56Jxr4lBwxV$C&(Xqx)|CSu5Y<^I5C_GP^ zjhxQ1!wbkjwX(475@DJnTm6{FeFDHqSYV;xpSgB7Tn=ZczfY4~_w|40wS)(9a0$ z_>huRKR*>?(2iuiqC#1;aF>Y1z4;zLD01G%KvmSvS+U~A;s;Keg5kBE4c51UHS~ocA|nUGmORRDRrLg;J_P3$4dHC z*sdVc6s z;=Odlh_&@;CQiCG)P@U7btMTuHgl582WF6BASC8b>RdH5gRI1YPRA$5X|ix{A!pPXHq> zqTsptl547$-^oTW*3!n`%y*--GXC;pl5I!@+8wiIwaDYQ44O0NreX$~x&pTploLlz zPh%qDLn9$q)x1K<`|QYRPB6O`4dF+weEJzC#l8#6@(= zP*$qblZi2b|3sW1ioNSwc5*!PM*nqu5$wqZ|FsDUri2PrBk*wa- zbgw*=^li$ITW@^%rUPYg!yw$himNYf>C`_73pfpk-;QKj-Gk-r;Vg5G%p$%s zX3^B~3s!OCjq5bKn&4HIQEXMeSF_RB0TW=rrOEur;5Do~VXnM|f~87%r3E`+-&a>l z_bH$X2o>_EO1+a!0EUoU^c?-ngkgH!Q1=-P9f|`n+E*4jJm*^;`!AEHlRhk@7VzTPbg z<|?)Ri3n1AF>Z2GpDhPq&AUNJDf4d%vd50z>n<`^_BWD-9L+{7Xw)xrQ{8z}S?hS&Bv5w77BIX<`?QN!F(QANJlVDvs#y+Drl=1Pku&F2P+J39iB2-3bsv z2=4CQxVyW%1q)6fxO?y^ApdvXPiEGvH8*oHH(WHms;f?&IZAqv0!`mHd6`4Juw`9B?LZfi%xJTQcGXj(u7_&BPY?~%NWtt=@<_cWOn746E*A+9K>z@alPZSwNP(QcX(TUq&H6~ zN6hGrN($c4fQoh}PTA2^8Fkc!qt}JE_hi?+`p$tReLB_PoC-}bUNl%}?)z|02je_L z5ysiUzHV8S%iN?BrKVq8e3Be}3@r-s$1uyjUWlyI4HZkUFP`UEX(qH7x2&Z#N5=ae z+5l8|Uu=_KX7)))#@HoF9!fdkca@;7_>6;bh4Yf5_U~Wq6iKzto8FY&v;3e)N47>Y zh7r-|S0XWXJfm6}eGo%F(!~_1DXGL{HCOh4tMZ-mttBUjy1`OfjsPc7W?Qr6@-$3w z(0e3|8;YN@6YiGTJlL1;s(v#ravY8w5#3~*38bttP^5p$92};;)H;YTZ7m8J9f_v4 zgTn5BV zQqU3*lcT7t1J%j6+@Y=MMOBP*QWVbC^C99(bh_;Bf!sIwVnLOVKzYvx0- zHH|(BUt>Upof+zOPv)+AXxRb94a(Ki+UF{bs=leQ;ILw=BS`Qu(JZ zi0x3=<%a$Z_k(u%e#LCo$>g#-FZ(XRlmAlG4vdU;n(CocV&%~69!Elb^F72T(b(L9 zwOcM(vX|k%vf>iM8=$E_(}}JGp6z6vN5VGA-%LrI#Pyg;Lk4Db4OiG6yhRUY+ZWl( zl9VHy%5IG9?B1p#eIO&aD8dNNO68+U0x7vCWt$3)(37&!MZRa@2R4*vs`bbRWo%%n z{4D2tmU--ttOm?=V;1boH3rG@*Fkq^*@}~Z_l^lodnxMCD{MLS2Kj(oS=6Y6c~_kfw%4boW;r z42MP>MuQjMy>rJQbKwkTq|VLV_SdM;?~7nrXx8t(+!s2~`dL!(d8~S^0WZB@hS?L9 zq1ts)?ne&W6kq*U{_)wS>V{EmCBWM~1`QN1_kqp%OoOQpUXw-k zwp^o6h^?Od{wm*8-0;M_4$04b6=d(*wqT0z!FZzGnyN`rS%$(SFesdb=%G5IBdg`L z+GDmqTa`bB_5LrSXqTyxv+V#T*1E~;ZO4_JSMeP&jb4!-Hj==a(#_CP_b8^wV(5YK|qRWDMuL^vy`26yYxeS z`*+_R)G9anTY_+gS|`O|Be^2J(8!TW6L&`Sm)8u*&y~L-FdiQj6Z32b3p3SDYO43V zX$tHsASM#*f3%l=ZDEb??*CnqFKvQaxL|0zYM%cwaTynD^e%PbwnznhGi-J}~i(IOqqsMb0#esH@h@ zDn|v)(8P*V*QS0v^c%GoHVnd%U;cocNU5adl5FG-*Cj2J8uZj$e^S#3n)l6c4iXEu z>n5mFg0?Om6`{W=Q{Y;wgw>rFQ&DB(XU$m+i&p0G32Jc7+Y~1gnp}RdI(@cA4ghOJ z#vYyEowcEmYKbQ|2A!FB&T#1AhnW68fxgBGRgAvxs+Znmk8_flm>!8p%B4VA`nJ0{ zojQZ*ti-b_dWRp=_wnSnHL1c?rdy9bm0UiI4|K;s*g_NC0_nMRyvm1;P3b@VWkR!& zZnVg6R8$Bm)P5259Z@>9$Z#JyO6rJJtjpX*qe5Nr1yHQaTp698TbR;SPJqx=HH-xY zAPlRb&c8C!<4DyXpB(ckQBPCvCyI<|xY{^`=B+kbj#B6jBJRL>owZEG`v%s8hOhlC z6Scd@RjT^Z!Fxq~qYAg7qiEhmZfCVhxyDPu#7Mc+kKaH-U~~mSDk>3({92&0Ti0T` zvJ}`F42bFsA{V&?8G6&W&0|y0mqDm#9)+-W&3B&|M#FLt8?qpsM!4nOuQ0g=Yv)Np zIY}qp{5Cy@X+)YWSRLSLCKj7Qp-Kx*b0-P;R|7=n`v(Heo^a8KX=WmOaj|9!a)ksV zy0lXp3|b)@&#rTdL>%Jq?XwS%=XmC^j2ly8EwJ7jo4}z+YQD*&QK4zmb|ZzDvdk=T=0J09 zau9rf->V34J!@F&)@+uO!2NHw4;69PnwDX~YAHKX@>NOZGJM~ry3Ok zdBMFsBDJf!I$;Luo7S2N(?6ukzG$%O-B9VzCaaT!b1y zoQu#4vLU6L|F8g!MM_Q+3KzSmZea!CqlNU76~v&b3Ssi2{Q1pkOtYOoEApL&xF&_~ zTSpPsDh{@>r%9L+SK}ZaA=g_>RcDD%PT&TiZdj|)=eCJ)fX%dOK~q@aUFGFFg3g)%D1XUFba+0M062NuI_0+S_5`(nfe9T|^Qsq@e z2zvY7nvBVwJZ!X1NxtP)34@tQ*S?Qh*=II~y)|^6edEK2RE>ik>)c*OTiUR?Wt`5{ zgehlhJ*GhwC8C>IG*!ZPB?m1rC0hrSg{g0;s6!s-+pVix>|r2gbNZe3bF>2JQ`QZn z<<<0rSnf=5*6ckR8^~zn+e%)?a)bp z_O|SH$O(V7ZxXQSHOM2Jh!vW+fcMphbtrR-0X znfssYD)_5kN-Z^&A9y7gfUS#bsA$aJy$4f@`Kt%gl#FTg)&e{2>P%8 z3#$1*BohS@3NR&JDj(pj-CmGJUf!u~Ga*86;Nxm+`?mm3*Z?lr@0G|lb*|qSR;>1N z5LM>nlWU#HF#hN}G=8}&vp(;JU|dE9@*OHh$n;RQ-3{SPKwyQ(`o}6tg|gt)ArdM~ z(UBIUzaoCVR_9mBg2F)N`fH(f#iwh6DLYC9uBi#88Sj;quFXl#G8$wr)3NBg<(m!0 zZ_G(Pj!p`Ypq$`}y9exIyOUGAIMh^)ddvyB1v!mRK9nUrx`Z#sWgO3wheQAdZHPQ% z>epvyId;S3_jFACN|x?m8>s6Wt&>>j$Gz@ zH+oftwqt`FtswO4GKKR7t?M|K4)x!CGH5wPEgWZ+3kRvm1WX&u!HR8fenIFXa*VM8 z3EknG$=m*~BqD?4+i`=mf2U^heGt!qARZv{Y$x??K%2ULW8J9#Qkt?>Db z4f{d^a4T=|ffz%r+b8gt*W(Y*eg~j}b|ERu0_PLq4S>KSf;pU+A0xpC?SnnJf=lh1 zx%t#@fPn^BLDDhP^`*tT!)YT!=Rsi~40y^7kdF(C*%Le|e_GuwV5fjOP=$aRim}C9p4zZV1;8T%C3620 zl4$!a#I|uyFIPgoKC*&T%8k5S(gS#D7RCf~j!>fb#14Jaej58EXZ-cRFFTDyFm+S< z()KnL2Ga5H<~(LrdZiWISQ|OQz02n|n!99H33A}s|DT8AuZLE;e8Ebo@LRcO`ZtjW zz{yL8!%<-m1QW87ZQLuh-Mq$*FI1gKrkGHzz%fA*BxUf8xf7K7cO?)CQ-&;O~w2Y$Jx^}Kqs<3A)McuspI@<@~YPr zlcOAmuFsE&2~7|{N;0l}xoDHJ)S)Y_0Z#7s?g;c|ymID71Li}#r)tubwm z33DN6AFS77mevV^LzxXoR7t{vgU0y{bzXs}%Dc|!v~(Sd4qcc?sAbNruMERR8G29A zggIzTLfkeHCr+*{Yjx4b07CSwsh4Xvz_=&wTZ-eyvkGPBzt5nbH;$iX<8B%N1>NUkwqo9$KNjpSVp_H)9+lru?%UDt!q2XNi%g%MMnRTyW+tTg|@IFH59gMuMD z%f-b|NjDD~CosGf)*gmg2i1J}yTCql$?p8F7Q=K@t&jocg$nR>Gs|~?%J2Zj4xOln z=v(QIL0!J)VYlj#o{8e#%4~$C6Uv}J55AMIcupFTn2IB9w($CrO-TII_e)hauW&4) zk`UkMiMFF8;~2NwTUv_*Z6+i&VYN(rTsxqH@DaYV_Pv9ut)DAl|5o?oc1f=LP>ZNaBpPn)C2xwkBf zxKjax7z-H~@I~B=gb%d$2W=kcVv>>!P^Ed@{m$oe>Fra2gh$_Xy9#-P%BxqLjbwx#N&y4itEv1Z%>7t z6to9bJH+@NMofgRlcfRQ0K8QD(!e38~9(iA6pJ+`$!6W`BHQQkDIiHp@7srzkd zTXueam>?~*V!vJ0e>bS#q5#k9szn#kXKVIYC+{v|KSP3Zsk_S5!15+p-pLbXbYC@a zrC>H@DWD}1p)6f&?PyK>D+~D=-phVd{^}lvRt|Kp*v1?97bkW5cH6J{+duGY8UVk> zCbnh@I@DDvSxY};mTfV*)$f0x8WL(@qnrIvtetmh%2w^Nw8`~q#A9xg0IW&gW(_6B zG}x->@0UcDU}JO}P_3O&I9ukmyYq~Wo`VzY}H+9L$FjUWpP^BoKJ7KtyIKZ zyd_Ngs&Sh7zq9+_Zj$&)-V%r&L}vHsZdeYKy{UJ_9{ErQ)(J;6vTA%!mGsN*H3)}V z?q>R{h|kr)lNx3fFVP8@#SQN^>f9xRh=K2~ScBR)&Nu_`+%Rf-Iv-{AR%30lekVW< zoZ=m296Y%CC6=XF4F(f_j9uFk+&drJ?S=b73_3U>GM9kn5N!8I-V@=fxxfZiUM-@( zwjP#N+6}e~G{S3#%>4x}CI+Iu7`zvmbq>M`kF0TLEH`61C$0*Um`K7*;@cA`qHe^d zD(bWIjhOD@hgGP4@YTnCv|}i>zaJ4k=x7rw7U9fI=mzjgv4cpQMs)`DX`jEa=kP>adRxBKqeg+gAd<=CP%MRM*g42_0ckq)aVh6K<~=W%TT_()c983dxU zB*{nw@zdqy2urE*sPC=!8dPF<9n|jxBa@Z8mvwdW=$#3%70XZ>?0$c&t~u(q$Fj+) z1>qDP$J<;Ep6Oesr$bS3*_EPIn8*~(*cc;6HqB&M$kKWww`{0qz^1{`HQln!K1gH{Sx%_i|ft?)Ij678e)ffg$>Y`%-<)CuY zNqk&YjUNn}gU7G;jcMn)5R4Pmp4i(XX22X1_6za}wo36Hh1kmZU`v)f5V(Yvrig?g zJ(6W=A+L1`yjLpFTXN#jhpj3QHU*2`rilaR=mWR&aNtPqv#Jrq=aj30JtRc>l^EpY z^j(MrpVMbo=q(AwQ@3rnko(8o-V-{#>T2a23XD5k(7c^=)?xEhu;}pP-Bze%nA5ZC zCX_oDN110Y5fOwG4^0=nWiHu{yb|vKh9!;9KP>v5+`Q{>*Xsbjt1d@Iw*TN(+LrcT zwS9+_kfWp5F~2y_B!x@?_X0u*V{Ox zis#j8KNTFzLf4*v_TY>f6@gVYx$lj$ZSxg#M4!t>WY8Eb7fjT`?6Wgn zH>*FQ?L{|IjI@R1?mY)>KRehr3iBD<((>NOZW7P8*umo6ixS zfAs#PSHc(*G%v;pb+QXIto2H^!{e*rRcaX$QK)`1n_}!?M{py0)CU~|LsHL`8!es7 zD!t~>uc+_- zCYQVe2CO8TzJuoSD-wSKk#hm#u^_ea={>n7bFv^GTB#c8$+@8ve&WMmccz5P>F*#7 zgv`B27R9l#g>2ORZd(Rq8@xD~neB|&OEO*_J_ffsDOY#fJ@(U9Oy2{eM`K9d6?K<)V5uN(K8k-Yruk z9~W7zQB@Iu^7k#2ACu(Lqitq3S`lCmo%*uC!tJkw_|?T)uI~Ugl318P^Zr8MuJ74* z4R%KRebCgQ^2cVl%e-ZEMjF}Q=?$=8XTEidx52 zWIs@ z=W?yZirMV)D58K0+ijb+=?EkxQpc%u)A(_}J`*w_;LMk&My=J#e1Z_pg7n#h7Y&gP|E+nFAZ@EW(c$YRm*}wh~8b znCxT?W#NHWV5vC568`PRrs_bzM@g* zAkeuE?)e)$5I(_77+KE@3i`pFLwddOwlDTOx7_k6y}C-j#WDib;9G>h-H2KWO79$I zW&nrG;7krhh!7T%r=meE#2fzv>S^BZU}bD^tMr=tAb)LoYDK{oe6dW7qi_0GS(8hf zL6l$8Rx}WinZf?ExIFiSGK%ys3XpPQ9)@$)c|o-Om;zlHC|B$>QBZYhv6vjxqX3b3 zlc1k_Fe{V0m-=b+!#KcB$b{;xs^X^Fd+^cWp8lPl^KzS$NO7pc+_?IX^(Z`GN3Y)W zE>PM&(w!A4BhdV;CVn5(`P%AI5N)$+!qt^Gr2k7SFOF~rjok_6%?~>Nh%bL$z$UpZ zMf!C@xLA!~wKA&ZNLFoU^!neI^ z*ZhdGmZc+R&mB^4HprN+OaH#&tg`=54}x$f2~7R57m@rrYcdp$K+x|Xgsg^6Y0fjP znpvfiDlj9?D?}Q@{g3T5XNhi-m!Yl;=i;^7tT(?}7{vxGe?1`~#<~7}(j51^wQ+(V z!KU+Y<_KRJClQKT3yR5{M&9(PNeb$QlkLG@l>D!*O4zZLo0Z2vKAVFzFQXHw)qIJj z^(N3GUI)cjQuN7W9c}qf)=cF5-d@Zvg%J(Blz+fSBtVjIO+(c>-zRb`agL%IM7(hY z`1}Q*kBJV3-mT1{LG~BIz8SZCsE#~D@o0+Ek5@lXr*#ikc`XdI2@v4tFv=seW+0nS39lgw5bI#e?%ffQj8+`0}Nyo zjpmmfJzUniB-+LV+io&4=mfZp!T`T!#~C)rb*(zOo4WllCRQQZY%6kI&SD#&AS_NW zg393CFE-K4-=(z@uzH%jwGkW%NG~lUHhz#IkQ;QK;c;lgIf}*vzSQ>%p+0-~!bTFj zOt)v+Z~+%0Z;5Y}MZOW6jKhefq$P=*3IE(sv-D7DvY6nxIXs3)CIZ#mV=waARFa3j z|8{1NDi^8Jm~Gl0&fjSD{n<<0NwiGP&R@o_NbTq>u|ccIdl;W-Dfk6RlG6f<#TWK5 z&WC8OdsM3H5WwIKvwcfu@Y*Dd3oCe8%PpW#Ttcd3_5MtnQJt(M>VzgU<$$h-C5z-;@+20Q&X!Ka_oyjEk z5m1314j36RH$0EP0mSZIsG!$}T}ALI1M`XAs#`Kr*61)H@fjO``C{%xIk7cEa?@2- z_Z8nD^$?_1ONtbPcPw~}j-DVLb_seEd#GpU@BVF$zQ_~{f~grc{}b$esse7jV{!A5 z4Em`ic9Tu%&f+jJ`EEj)L_4y8`d1nqP~Fu_*JZj;ggUD8qt?Y)uR(i+N?IwI^T9@m zc|he-Fjm!&&tZKFxf)MBsPzI56R}cJcA6xrG+fzh_8WFbwCqJ8y-}s?I5!dKIxAuR zZF{M~!>?jn)ad)weqzNKjiI~w@sQvl)R8G8Rtl69+U>d78Jc8^cM@ZURnCD_4MZUW zj&w!Lpjb(gbMme^%@TM#*E2zpl?aQa9pHAe3Dfx1V9Xi*YA91ZK;V54t)E~>|*uHMS~Rtn2IWVLBe-|s7~c-OBTDW zEd*kZ50I^@wNQXd?L(%q!l4z+8|d{JU$l$q0?B=P@f5Somey;&Ce@x%`yIrRKzwtl zO{!R5%R=NhPw(u{R0)L`?ulsrcW>7vG$)(b+vyaPD7((P-Kwe3#5ri;Y;A1{o;r6s$et8XB9JbV=Hdah59!ca%b+AaKRGnJ@3Hevv_P?%m_IXtedp#8`7 z&kfQ40=QBZ`P$xjC!+^fDPpu?Jj4<0oNtY42h?m=@NWNI)*tTSfcn-sQ#>4pS|T*t zr(BOa#9`Jsa@My1306=Riw!nE!{D_$TkRKcpL^GNhIPvRV^BF5m_5I4Dik^vcm;WyWO@Um*92-i({ae7v_I-d@1dJ?kg<0a0+-6uE^X7%*ERpE9)9JaWI2hj&n{ppGMq z6>)iBlcosttQx)4C7ZR@7WT2U%|X&_4$O$K6Jv_ ziE5UJR_*h&E*oOQbJCp7KS} zCsI?@&xg3#gG-|@qn{WRncLVbVLBRThxo8SFKCnKF|3za7mk(cF%vqURR3)TGLOJL zJAX$#t+IbS!e71Gj-YW?Vm}xyakVrS=Ce)OoF)#VD|s?^V?0*Cmzc`GDAl}wiQRmX ze@Z{RC$PTfR{6w!y89scuVnu|d|zA}vViKkuG*^EtBSidShS(G!n$tv^aJhnE=yOR zS#Q)JU&VTKSmrauw$0u#db-^_z%3DD;)>#c?mTOuz=D(F6k}u7m-1_$D%feXb!Fr- z*mnKiydWgFBqJVB-Sus!bHmqAJ&8e9swP*-^)^TU&Fa1OyK3fCwH&OQ zmGkwsn<|`B`F@l(x_Y5`e>RBIUCfy|wz;DAd9nr-vHJ=njX$;o@SzJ|&u(Jkvt#_I z_vVj@m=ydE3-G^yA~a{xj8(u`kM8y=Ns*ttmQ$mR`C=hDplu?sHQZVkD3Tt;w-P$L z`ea)HqShn7t2$R+(g~U(A!4LKv|ZU8h52P~90lmKA%&GV`7SsK4FekZ>bWvmaligp z8&nf&DR}SGmDz9MM}XH(;$bfOzFuZi787p)i--oC;km4{H+)cPm7RS`H_l&-?uUh~ z&dfuq9R~@FCP_h=L94KJ@C3^g%Q2Ri(`-S9u)@`yaul}$lATo;1{LgWuy3l_bxrnC z%v}tTN&M@;Y^kmV)*Z-m5}Nam9#i=8(c4HdtbKA*KZyv?s>FhlN;kNlab@AEsERzi z>wo00myxKmv$H81??&oKjpzjT+>IcDZ@Hw_3#ajs@QS!cnFFz`kC@1Na)0Fu1NMxQ zuE3J49-8`tIqHb}MwK`11m`#GlCkPsi(h7qvs2yE@0;gNf>M5;$%3)uQT2RD3+9Bz*5d7w$QEA|IPPfn92d9Lff!U0 zTJ?^ux#|iZF0Sz$@iiL~nIhDHu-6nT(D+YWg>}tyUXGjk;}3ora?Sc`*rAQ+kDX-i zH|Rc{;8@`?7lp@KJZqU$aGJ72_G0h#84iRTf8$!Y5TnX&rE$nwydt2Cs0Vcx3q&%YpM{--ZnfrQ%W1`11Y7yc63If8G^ z;8INpZ2Jg%VB_^w39tI%kmTa+5R>Y~f;!EtXodB|H&K;%nXOnOSJ*4+UadUl7XERKa4Q&2l`o?9QaSJBb46 zb2WErA|sjCcB-;g6D>^{`h_@%iwx43^^KuJSIIYGP*;hLti(iwu-H?m65!@Dy<|u^ z!=ds%r#=aU{mW+xE25+D=ReV-;fgLoY-xjh>yUj5Q>qn^wR5d~9RsD&NllR_?oAH) zCKPb!1&U1Oy-9#N07R%Ji23%8nGc~)ky4#NRMb-*)$gCgBYsbY{A-IB-@I1TPrW|$ zl_!_%Qj;y`4j_nre)9?03CDFe95Ld_c0Y_2c#fUI;rMftvx5Y<@#TQGZ+5EaTwX1Z z1>{Hpr|$l8tV?{gs0>j;*7@K|_NEih2c7kwWXgj*Dn@Ae#ic@OnT0ZNg5rQ-UP>&$ zHml45F^dK86N-UN5McOy`m`yWXL7*!1w4>0`ti&S%=x{Xc$M@Ri_SA10E9!i!vpC# z|9>Xc|Est$i#Zewu8D`UmskeD;D3OEzk1fce5`Y%j9AK3UzD)T% zcNe**;4!7$DJehk3ERDR0K?sj&lLmuT!&D*Y#y)#U0?cg8p#0#%7>Nr+$IF~MC!gi znm6?WhA*`D6>Z2YcnkiY0LVl*o{Jc=)92|2pv1oo)-v$`PVf_olK=EfP&)zPO4d&1 zCSo{WYRytMC4ql^d&YC5E_)DSdfkjvi=JVPZ$I`6EQvw9zVTcXkU}qq6aBwB95NNx z!nx!b*?&c>wOYmzPOagFri1RaPFJE0Fgfu1G>+i)Y^4f$o=3Np0%741OBeXwlgb*|_{-J{r3 z>WV(~4^WYT>9Ue9xH+Uba3Y#x(gnujkte7qOQM3laQPSgfev7bL+zOXAsE)`xWzr9 z&riM%60q8sPY+A4JP40cM}7*8Lqq_eBtPMB(W;E~Gaw`nFa1NqH#4`V|Ik9-IVLT} zTZN-a-?Mr3QgAV4lyVm4=h|Y;YXe5j^(g@dpjlUhZXxp93g5^R5)`>AR97@$^3t`` z4;FISyq|xrf(LNW?@bTypH|Op24tH-2YnM)!|K&(lR6ZUm2S8;MV((?J#|0^paXhk zkgT?j)bJbd8!Zr!)sQ}oR)n}uDRKVzfvE6x`0!7+FpfGcR~op5t1J{f- zNPqFo;Zq<(sh}6|l1zpl;@U7&zH-wM;KCIwCXnx$t&RDj+~;wwuPGzx#AY#%r(6^1~uOJiK`A9!h14Edqe;yD21o}-}l;&Pt(F6D*XS@ zW<1eWLP0WVb75#BTSjEV!cGf(EVLtHkpKLcNqfI7+-`)H;CX#kDj1PLeevp2L3zl8 z=EUwr1{q*x^!hO^y**!ve3l1T^MMEAA%GL&Z+g3z&year(6JQ2meS37O>t<--z1_S zAtfWd>cYz}bda32#_%FkQ<)V%HK^EAgRT;CV9@`MAFwA~$~5WRP^mL2_a-}k)anwKY7pP|9l4C9=ykY1+54wK zu~6xQk`}iT5lHc0;aaHfx0A15b5`3jXpdkTZ#H5S0U4ks5Wvv{!U&&R$8*+*f?>Ud z{l*UT`I23J()Pn?A3x|;Ui@*T7qiNmxWB;`2VbWKQ3t*F_SzZuK9uH_aem%98Kw{_r+`+Za9Px=>HEek^POTd$8SUz5ud^*Q!h0V@i zYDlO-*}C>G%hC&6g9FmRph~C2$^p8O1qh1tU@7I677QY73R6MHbKCuD$OOEs0hMI$ zRnX9VsJ@I1_S&RE_T+;~|ELR^iZPr}HqLg@6|7lKq zry~-sT_R)L{GYK8#xt2o!4cO(wgj~Imd-Y^8CpS+YUf=TDxR?Hl3TTw3U619okNeD z4lw*i6hVIhWSCcL1(r0A4;2f?d*|}*2Njo&gc>RSp$11_hI`r5;{UvKuiAU* z5+X)zn%eU+$2$A#_fmG>ZGyy>F2wo#AXAIzscb0*ojhD}();Wde242vv9OFz>+^4; zZsg?J+07G%d8U7?9=|y>^u94;bXO@-A4@Z*HY*%gRn8ag(Sj_ zl|BA;qMCy&yy$Yu_^H@P_p@(H`c|Gy!E81VUKk^TJZ*mQ)rdnaf-f-tTL5iuxxwP9 zX$05D$1+wd!1`AWmlWVPDiLslpU?cSbb;+18TtR9&Hy8t>ZU;;_4{N4;jk zrYi09`ofF8F`$^pq=1^Ry%OTD?ngA4{__<~(fH}-EYoG0S#o8hwAru{u??CXn!_BE z0MwcmgaRTWMh(O#DDKs`;#}^-JwFpggyGLWG+1CU>APR2ePP-r{i2E81~QyjNZg-z zg|#XJJLHH95BsNtq_ulD27FabK|w)2x%W~Nosll|Qse7qkPNeBel(kBV*T>m)G zYG&v(8QtCGwIer_7UdVw)GHEMG#nvcFqzcqlpGR9tGZy$h$=&?#Noy~IP*#mn}@5M z-BkS5BD(*1GmDky=9%Btqm)1?Vw4mki4vUX8enkevT2xVj0;1Qs8+OFQ?esG&KVp! z%1&|>YQXd%5Rr9-##vmRC?SG8l-0vLG+aJ6-;96PiOK*eps|TMuBBdyz;cOxFhv*7}zt$^;#V?uB6TwJXlELzZ0Jm-5-ZfRY=d& zj<54MlpjUV1(66{lSR2(10^sf%kvHHO(bX2g!blkV~Euas4&YjR5-)hz^~*-P6QF5 zA>7w2C{~W7FhgnwwXmxB&Q0pI;oV5OsO(0fYmpN%YRR4rN{RS3<0+n&C8OQmV9^y6LOERlLE=2=@e+;SoRY}i;ZMAtORfvM{{ie@9i zFhh~hkOR}#16&8a=%nN3*zTP5l3%wsu9}VSp921#ss%Ww(Jx$GBELN4*FHU>QjOk;ok$#*s_*};BysvWBZ)jp4kE2G4upN1HFNN5Juwx@0w0oYVoAtmaQ5KCW z^Xp`4bH4m~s#^mX-!9N~R@|=~A>7d=RDNE-hkc~P$`@tGVA(a6pM$IDkMxrv(J;>w zqFBo%;4};$O9t83NcMk3F5sZdWx&6k&_3K407XtS*n(_^<*6=>tb9v^{0hS03UqoK zee!@ThSSIz(A}hnhI;G#^&|<%%1~-sB+d0r8WA-RqGsN*=fQDIfE~9-3>0bXy$TQ4 z?6rc8!O;t?LMuL*VhU#iug0C7&+WRIJKPh4JbGig0q`1Fi;6%BSsax_;s1)(EhZ>_ ze`ivi>q)ziA(|5?`%YOwK=en)gfqmctlOxTLd@8Y$sLVUmW~*7@ms0d!`I{Z7MskE zhEYkSNy^`r| zI!1eDZVOya1ok`y>p z)gjo}xW5zB6k<5FbHctArJA&yBt^AX!j2ldBpI_GORBF=%|-M?wy8ycH?bgYx=Yp! zcMllO9xM$*erZ0=^tLylr_BSYRV|9R7gE4F!RNd1QzPerg3JR+4OHPP#Y@B|Xk6yo z1g4k<@(7MyzTNW35`N-C`e^h9j!{Jh18YVnCUAN|_lEUPNI^ zgx{E=0q(tAUw5tVWASI?4tND6hGgZV?nSZoQ)So_PM7(iU1S<}chGvG!_D|vRSOBI zW~B=O-m*RE*6auZ3PkBIoNY=uos<}phx0{UCfb@-s?<(D2CWa3(B#5cC1jDBdZ?wo zCUUkKGpir{3e4t~S%61-5Io}S^Q)g}oaC#OVNenX7ak91Mo<5tZTx{YPMBkv{_e;H z9XhhJs=dw!Hpf!e;*2sp4?wuZ!s3l=zb>;Fbn*ZZmsxeR0;5PjE>m=O`tN`h6Qd}A zVAW)0Q{^&f77)&Ye@;d>Fk7a29UCR@t;kj#7K{KWyX zr~d@be=d)WG^u8j?#qsk(RJ>g6Awsx?0k?G3saL@{KKAA+`?jJAxcTGX1zb-)<(P7$Jf-j9!TJvl{cf*J}IR#%3M`D85^ing($2u zLkY?=>>AlRv!8iZ!d4z_;OoVjk(9}~dk!+`-VyR0y`eHsz|)H?iNK>Otn!2t|3c5c zDA;RtIWx5!{oLaYsJzqxVG2krhk*8(SvJ{Q8R`pefVF^pJi0qN*^yrq;zR!|bNtUqXImNvnC&==OV<^tTz%QvKgkDj>KsBMorM;)D< zg^IRoYvqCp!Rrx+?55)_xRMKH@~#w4Z-O$asy=_Gku&1iOA(kH?$R&YJ}h(W>|^-| za*7I&3jaN{0=<}{wVuAFxajR}U(MH)e)$bb+oVbxsGA|ud6Q+75Tle&cVmIg+|)_;mb+sRYxW!PuOb`*kZ?ip6(WcKOOrwr;+yp5go$^inso z{Ic9Aale2XRro!xj|`R?eGW=KIjn(OjEYJwsma{4ac(G#z_4 zY-lgRiKE4pPlIZ`wLU!YWC)VR+4*d~ySYOk>c!^<($r^B5z1?P{?_u|-OpBk@BQv9 z%E+rkK02~H2|{6CSOzQt={;G>KPf-`1$pH~KlfskoqBjwZQ3n5|8}x{t>;T(23 z{zEx8e>^GHfnw0&usb&EldXnFQVRBxst>ASrRxS+J+XwJL#h| z->Wk55~s_c-YVzce|egma}=%I;`w&Iu4G?@@)Y8hQcw@K%eu=lXdeOD&{OUq9ZKj1sdm_8oG%jol%umc9ISz3R_9d$@IVJr{f|~D${Abo=CBPK(O(cG6b)QVo1IQA-@?*JP&`W=w*RvBIY8szp zo<+FjZyB=QsH{bx{JUJ2kR|FLy+xC>)D{9kFnAn+mRO=JiAe=qtg_5!h~fjti+`+l zn8Oi+g;C9G5=4j(qQLghQ>612BtgZ(DQ5j8EDjU|V)75kq1f|eplKvM4YjvPzsxp` zMY{YX?%*%RWDDeFh+ zmvfRP!3$hu{yH^Jt3iaLpd=E~qBcVaW6dc`aL@<@d8Ai*_@szDPwT6&FSTU1Z`c5( z#TfbZ7{IukzGmiRii)KJM8_%+J$o970t@?j%mt+xgbBP>KY^om7VDqy!{g`YK{wne zB|6blY6MgB-2W791o_>>XJJwIU-cbhjbIirq^3wagaQlRIC~S}uO2G7&xcQnwib`~ z3{E6ia57+MJrjQaV@Bpqn7BN@l39YFg$pCs2G%~`rvqcCf5mN3T2U{GqU}qm95)Ac zMkFw60;3o+pr@o_rQAmWg(5orV-cG3?aYvlqk%*~M~p3y{Ll}Y=o!k#eUK#3tE2vL zRIX!w$n|pJO$ek;PYSz_K>JG-9QUeu=I`gRag_^b0HAnI4iC^Sfm%9#%=z|1gHOEA zs-3RSi^^V23HG?xX6+;)aeOwAy;{Xzhc^GS>Q=R%BPGr9q8 z1E753f?mo)ag{OPlb=5+23)mdR!7bg!bmV@X72tw2^aS0*S@{nT|MsH-*{|D2$;SLqc;RD*Ny>6S`ju$=AF84k{ z(U1GeGp7m;?E-Cs&b*(EJ%4sP%=C|~6_kFAy-TIb2`v)NVt&@Xr|xE?GjClj{7M)9 zku53X%fEL7D1$;#uq(a^RJ>;hz&(0mmZ;A@k|6$d zPj2Xw!{RSK-@96HxW0J(fP>f_@Vz4uk38Qv#NWeZV1--P+xSnIt6j z`(KZI2l~4YSZ|yeAFsp;{;NSaKKJNZ$^P-7K*?Dk-ah9H=|UC~|M;yo;Z`Ar{=p%4 z(2KOe(39*T?_Y!V9k`%1Kk3!CFblinUFU`S<4cl8SOjIbG(1RY-L* z`!hh0nT%A}PWJSieVRs>O6Om^?*TzxM?YVnF@o{@S1MWojn2$GkKIQ{?>-BBUo7*& zVib-JIY?G#L%GU4N%W5yd_D-*7>nKfXY)ziSQxR%-*?ztevE?r0iv2X8Zzcn=wqlM z+@w(&9;6-C=IYJ=EF38H$xsD9k9d<#=~LK)5ueBhx*2JM6-A()dmAv^tDa`Be)pYv z%Jn~w;c#MG7j3Yz)lV}CsNVTRr8c2+sMzM&;EqnCxNM_pm{byh+K&Wd9h{o5``cmo)T>99HAa+zZrH+EPsS(2ZxrUN$Ev^{LbB|&ZBrQF(VVKdFt;4e zEc1aQHt)xNaVD2Co0>PA!?@M(2Pv8;{_CShdb?my0iX`lJzv$;Alid%k5fNrU7vNV z-2?29p{Cn|viEN!9@Q{GGca6!qak}_kb5`=ZRv??p&>Q{_wdqlVj)pQy z0|;*-c@M^xdq79%GShi&r&X_L#f-$@+K2q>v@NYpuHPL zco)Z4#=k2n_ir2uw--56`|;XRwl7j>G|6=u?<@4g!SMH_Zeej!r#aHztrYITi+5op z8_a=1H)hgMy{k$Y=)UDk-Vhv|qb(J}JQfzDhCq2T54#w#47kYF#6f?TzGPzBQ#wOZM z9C}kp@_7Cs!y$Q#L8Lg!6h(S`{1<3wp%J7bgC>#Hk*|YT;aoK=4b2ya$FAdsE&HOZV?CPk?6y8UA^|^CRtdKNS1EO2l$+(AQ8zac8nA8N&^x z0na8#%t^aFQav7(ISQHbc6nH;E%(IpVlonaDYtg}^@D(|w6#T21J4jx zKs63ehU`Z$>n+r0N@u7EEI4R=Ar%0#QMn%WcRj__QEm+c;o(Jfhw~+Y@U5UwOa5@0 zZ_me}TNMQ$`?6SKA^!xs2Hg%5+T|El%&?onzNrEm)9RP_m0GB{+lPXN3ob zfAZULQ-Yv?t$FUf3*N&STjYcZDEQ>IxpYLGxTe{Yur0F<)v^o>e8%6f>u=PX2O*gn zFA0eKh{X6YEoDXGc`#cgrr^!X+xsFBIe~)m!Ls012ix1ke1!A^`j3{r`f?7xui?x~bg8Kv|2W}*Y)yhht2ywk^I47?nq$j& zsY{rA*x_he^ zt32Ga6_Afuq*8-Jx9Lf?ezioxL%7moy<)Z8n-%Muhdv|l6n|*1D>5Ej)+6GxtcvYE zuYpLqkNf9kqUI}<+RvIF-aZPofl3-^SeV-%wwyj+e#hFZ%=5jlF$(J_(tz0rCrcei zY-d^Y>k|qsTgnzmC+iJ0Nhf(h#L!d;j!-Q_dF^@D!>Xu^B0VO|+7_saeD@8_B!BbM zhQo5VDXOO+|8+`1c(w)T^DN@NI_lo1#;@S6PQI|w97fCW%sO}eO7isx3WL1`Uc)=< zD+li7z_zrp5VdWR8GiFMucj-4v(7?ZXu9%8DS^t?%O)cN%@@AYt_d_>(mtnX5=4D4 z%M(qxPE{gEw8oU>CULvp-c0YMk@yvtJo1_~dp`Q?lB=cHG_L$s#znQAHg*&WO8XU< zA~c$Y5WPH6{wsvgA4;-Apsp$oKXCYJscRzwm|p%ul`>vIds`<6#7>9qn~G34<@5v!|a9iVSHX8 z3pqS>r;R)L64s1gd%iT5fw`GV(-MpCTiC!Wpsm6p4VnU7@YGh!j2q`_PPi2jc*Y8p za+9h_aPi-z$(~+9X7nE`TifvFD8{U>`%-dcky2A-G!I6DH4(TdvGpIr6EoiJR%^n2 zUxFi+Cz4^sriA-O(vSq0P1&?6L1L`VSW}wxyS{qmU!24N6I1?&L~oYXG%r{;k;Wzb z);<9@J=9`g-eI?e!$dAss0FlECSsC|8KU55%VLS^&BJ@n)e?1&obXl z=p|fHF{Xp;IOK_<4c+of?@Zfnb0^UXUFdDjKz1;k`W;X(NHFTxP;wxs1P86VJHaj~ zr%`h|9moAcUX6g@H$f_W5w$cG0?oE-!!Q{6T1((-r^U!!jF2s5O+_1R^sSQASGmgV z+J3g5Yoh(j-j(um8f9T-@Hc1b6DYmj*8H%0k$GRUwbY3%Brso=pyhBN1sSvL8}c5K zw^YXh8Ajn}FRrZ23wTxz7InyXxA4tSeQ?^8t#@KKwr8Ka^4oU8T|e?B%cx^vf0JZi zqHL;_1u8vz<8Y&``V(y@I9~5t(dOr*w*Szmml>+xE-}MBpUFfUrz97S#tPOrJXc@9 z7s=EqVIs@!zKdm69===)>XKUuBR`z|7b2NP5D0Ovq{66g4$omzA8mFWNlpCf}frdz!&HGR8*9rT< zn%q+#t#8?qk#jDC1IdnpVg)bMhkLTV@M0=f!Z+C)u>7{}+7fM0-(PQ*;~@0`z9Qib z+*e2F=f@K~RsIbYD)pbj+FJoSdPL$dbAjR4TLZtoo^&@LE$oLUoT+F?VJ`Wtd*~5s z5(?3D5W<&W}l0Y!p#&p=sN&rdO_jU%PzX2u+f zH=_H$8o4;wq9RR$M~GsmH}=R4rk^w2bWZ$<6;ey zKC1HIVGvMA9>t6+3vB&4K4kv>AkK#e)|^0B)=qK_@1?x#g0oe+?^#-iotaEH-thb^ zwxNPU{q65QNQf#475kqa{NPkb1M7F5R1z+DM*6 zWr3$mS}IK@6&Dnj^R!8X!!Xv7x3RE?hYXZ@tB;%h%iPanbZYqXYN?XbL2RlX?bw(V zJEtHKVwihz!`G2h>?HjZN`r*sn-avh3tf-W3~LSjBK$60^ZUlr$i)I3^bO(_oHK`N7I zoz+4*cH@#{*WVVU9ZrRrPK{XPYe^Wz23%ymUIC@v25qgUO}bo~Aah@Gu8R1I`Vwdw z8f}MFFUK}9pXV06l2h8(Ddx3YV;AJYg?O+R(q!fcXX=p|-@L7DyT8wRKOoHzhf-^N zMa`nPEB&%mG4)_sLqx~zvfu73jAnVRH9lhLgoSsP+Xt7#D* zyz9@@skR71v%fHaHo8G^WbB}s01|BO&&~Di?&PD*x}`$ z+(Xy;&@s8`p(MRjm&L&zTK1a3tu>USLLtxmt#>pwXho+ypf2neCMddxZN$d8W^pYj z7bJk!AoUeEc%O0&&0UtYc-MTqX%+G>v1k&pl_6c#C@{nPsOzGr;bORD_tRirW5hfg zX5(dM+K2xRQ-`ys>!o}Fb^`6`^lME_R;AJAA{)=%v1EY`AHJB%P9vSKW0zrN0cL9wcUGypgy1H|z1?4XtG$OM(1-%Xe}FO6j>@ycVq_4Yt!#h1D7LAClm2g~_{XgtqkYW6zE8nhc);W z+APVmWh6@`O0;(LxwAo2`J`bs_FBF=0ZM0#Zcz2^bD@#jb@oX~?cYv|EH17wtKxybT?mN&nD2cQXK;)9 zt>x+%?(mXq=6Kp*PP7fI&-~*z2%5ynbUs9l0EH24oK1NF+4k65hk#?}Mbp=mif)O> zE_kY}x)V3Wc*|Bb+D7QhEZ<(RxmIYxy}*za3C<)QyPZ+~p3ASZ?BQhK(pDZnw zI-?)^8vQ7b7#_hhhB^8Kh<&g4w`u$61!M$phC z>ibS(*#4cJRfjNfvyMvHPXj2d4<$l{1_6&UkQ}XX^h%_0Odk_nmEaBXo8shZ1Z=yl zT|V?Los@X*Q(eoKjwJ}9P8684OPFN@LqQ~mJ*2|&c-M*E_%fqEalmhizDp}BX^}Z5 zub0-WqJFY2jMocdAU=FSx_I|NsIa%JdpuCs;bsKRXK;v$MQQuT+!lMW%7hs1&xMy) z9JATZ%H3jGMgJe%%X($WP>5vJ%c^TA} zuY|SFB@oio!{sMfvuAV^lrkUhQ=jI_2-W&pQpEzyAChvXWjn=tH>3?w@Khk0x*x-0 z!0*~0nNL&uB{5(m<6zodOSx5)CJ|CN% zZ8fM9uzCf2{1AiLsQsxm8(B60c@({Iw293j9e*>i>B+l8qWEG1ln?<&P=NEMo-IC| zMpYVdw8=73-dPkvz#47InB9wFFkCgs2v{8YWL3kZ3LE|rbrvXWJN!QpszBbqr+3hL zhDV8j_lg%dcrKbBJY_fV(!P@rns<%w|J&^SeHG1n%hvq`3gH zhU4C!iAnFGeqBAHAI4#8*V^-5UL!VcyXuNcVWUwv7WrFUeW|y<+RM&x5AmtW^eEqa z*1B3Y=n+vv-d_l>H+x%+J^siObZa&p?Gp{>+|E%PepN4bUdv_~n*9fhS%9xYsI}Gv zs7hX-=+zHYBP6p@pNAsL<_sen{4_|eFC|q^ih44w#?xo!dd%K5wK-%4STVcQxRLkk zdX)V%e8=`2uk)XV3trn$cb(|<&bH3)2TB%V9i%hy8+Uj3hE&C51~b+z)Y2;U-44?B zEUtr^#!{`=W-y8%OyYqtpp-dK^%y(qd-4!L+8rA@%$ZMgk= zL$gz^@$aCy^FO}`K0k!HTCL9yy>0v*-6oztql=OFOZ_AHk;9!pW`AQ&jYTCN6gzAa zH|b~i-Aqc@pwD76?wiS1g~}1Vn)!5upJ_Cze}^KVdP?-yk8GYih7ca8<9dLM zwOajh#>kD}0jiwcgKeB|jEn2j?ArpYzUm$FzKd03aB`r^s&L5Ap2*ZvhEf zZW^V@ZjAQl2eOFFv!MyBh0*YXz^`b0Ub?ldvm*E2Z#%j%gpCV1Q+ZuEzLM@LFWJcS z9tb&p9L`qdd?OGg;-TcRNn*%ER*s!1y78@cfs7-9BL-EO9XkBTm=snt+tta?M2f3I z%L^}(&3v_+HfS<6Ip2M***1K|7{HJR0x6+bsBbnSKLiRwg8DeC|;i^+p zb^T(r5Vd9E-L9I*T(8IW6_zg(6@!`M-?_AuHO0bgx-8npH(0(q!DI4<>Es^KeorwM29hVs zTUPQd9yoQm-QM#54H4~U~hD)r&oPzn_a>8$4OWmtxVC{Ibvi)cg&5bNupUNCliig8%n+lAj7Sw zRg?QxCbsWY0$L&xnhy;YTI;_(UQJCCEM}7#M7?>84}EXr$j!@eDEMWV(}r8(=B=57 z>VVl}dR^^;{q(gWM1aUBbAR?jWuUA+i>$+(lSAwgCF}x^|7?&-(V&UA3k9>JE}a(o zxo=Wj_~`r1b&2$%`{fB{3;Tb}0`nCkJ|9tlh0Wbb(yLI;v(7?e&^4&LW0}f>Sg^!$ zKfo#Qz?TW(?J{mHZkzh4ECVA;tOwQ6IoI0S&T?{{6%fZ_48Ie8UQ8Z%!JDB%)^*%Y zDVUeexBP6`*TcJRm1c4;#frQMGivsOVCFQQ_Y7|H!VA@@@I9lT$#(E#2P#dGgrbMh zVjI0Luf*i@c)^0)Xzwj>CCRr|5{6F?32dT=tnt`U<@Ev#ZkOuTNU}7!@IsCdk*{|Q zVB`D1v8Tk;G(lHcTH@gf)zUn@0+rfr89P4p#babtTg>eT_7piBQhS^~o}B5YR8G^Y z57$Gl;TWwf^sd0QPZ}rJV;XK*{tfuV|JK@b2q%uxr#1%7Pg)i^`gDNRB;~y@O zicw)OIp*kYvpC5z0CvtPUnn+TXTdfet!+?Dr#-^Eui9)g;`EfPiA>Mrss3pB3YcwX z4i}!c6*S869o6y#3i^pXU^WBc=c zepYHYO!vxL2@gzjx5AVfI*jb^B6BX(ZlI3>aP35|*I0fMASjj}hPr}D0mAE;_eaUf z_>mqu33-yu+rObNRc~MLi`p#`-*6Gfj&eUQ-nX!oscOmlF$K}n+~GJFboh06EL-Xl z%t^~z6g|l(vvU=iq#EKIJs@IRXme}-$wo6d8~5c-H~Wluu@<}b8Q)ix^+Q$!^oao3 zY)qWjUmfPN>nsnLAa4G$&-hN(ZzP@EKD#s+qyu=QfiJD;OO=Lv#%0>O{?LyoAvgs= zsR%b_@C)^k5wq2XI9JSvZ`SaY$HC8F51-UlG3WE1yd9As)})Hx&URH&8=N;B|0(oeS;Hj)i)JmG-)Qazk>ZEXK5q z?3!5#n+eTb7f!euQ;7K|5D6iXCd|eM@olie_f!}iieQTv(nmLDW%r+^Uy6zM_&et!CcB5~MR2ck!ArX6j{u-YDlTDM{oq$_NNCkbT;A zDr!Akw_=0BR!Z#`f8^1Ee;L`@;BT%l7!-2W8_#J@cH*02hTMPaBkvm_h(5bqRD^=a{Hj0U{?BIDxXpMRyh31v0 ze)k>v6{)^Q-UzUlZM5`7J3v8Pek&}m1m;OTSDqyAi5lD;tM=w}d9#-Wxj1Spukq2N zv|F%d?ce4j$i8GyehJB{5$RDLf5Tir2nUiEyN4kfsQiQ91?9I-3T4?vf|)|TUyQQQ zUzhFflUIGsHvM{dC(B|UL<)V>O7pbWVD9EM4}G^k5(|32`k(Dx@NuN*Ygn<}0q4a& z_XW)Hw=g-zb>V2uoHI*2h{@kPLOx!Tz(KoC+(Krbs_C)sC(OnG?RfTp7BXMFd9_0g z|5!Kk}Ssm(`w1xD|;%sjOI^dbGBnTbc9C+aPq$|`*w+=pq z2(8MRIM?!zqoLMR05^J3j?nsD9*Gy%k6=EfHD80BetSfocB1||QS^@WsE6ssV^85# zoOGWXtk@A5ZUCVDpY}8jA0a%J$n0{1_+%9d*bV=w{>cYVLBiN(>gk~FKi<<^e*14y z_e4B5T;B=#7>k|eBo9>b>gyP{I?qQz3nB>5IhD^v_#nB6jj%xc|7rnhC>E{Rkl`H9 z;lVo_ERStdRsU_CmwJ)UksxHdz0luG`*9SjlOTRJLkDqM@-OLy4Nkn2^og|r=)c4MEKs0x2HeD+ONSW({ zZb?hxt9f%5+~vbQp;i&nPqwaY3Fuv(8f zf521R{gRw16RbJs0bvSt&pNWaxsOF^biLfa?CemXRnzKm3AVPR2LffFYJJj#$AnQB zSsek9(VGvdcWuNKm0WyH===OX0o1HN+UFB3!nazPcyhW~$#27WFG6LE-@0~x>-#+P zSR_(uz5!c{i-0LgYAV3Bx1+eN@lTxC&%LSPM8ML7DmRnDKt}g7msk7>=qRDk4BbN1 z-$%*x_L>(HJ0dMVUb}tZW|{!VoOeKy#ZZ*241-(#O7ti7JTsC zPT1{^T&kW{^(V?#Ve}v-m&{$(dY~odt<(nx|B8KuD_?drLCP+78{Ry90gbs|7%;bg z@#3b}ELIY0W3pt-D0*tA(&j-uT%W#(GgPcO?}VvVq~L?3RvD?6*{k8om3XVSW;t%u zPSQ((%zhwNgE;YxspCiUlq4|@4v0*SL zC=f&v#&>lcn9{l^X3ynU6}J=EQRc(Og4}=vy81wkgbC-QYyO%k;l|xTtx3b{NkCzO zj=kGE68plUL6xE>OtSu}A;gEPa3>WxMD{U?HYq%BDeKT~|3DD_4)N%+5|Qj?aYw!AjBNxGD?8Po0qNqqw3X&O9~WCSD6P}BT^A$*cW3lR*vHd2Bd=zzq4{fv}M z5_d;=fPOYr6-o(gB5t~gfjLFj&(P+b3j%28rfgWAM535tx?iA)YyCLkV7UF2~1r@ouq{^G89QBm6YRe2?a$!p28KQ2}>uW0}bg(xY4zn44 zTw&_Kx4yQHlIyEzh<6>MY^rnkY09o`>5F}C7I75^z=MD+@o%mb?f04;pI|n9H1-7u z>5;SyqbM(8e%h{87%UlYzo$&&ak50NznV_(eT9$FwYdXt!R zj@WPU>WJ<+$4cw{Fsp4nSAEm{iY}v0gXTdzPds2D=vda@LoU1HUgLh(TE|_Q%p6hw ziuU($sQoU%P5zF@CjK_5h_8`Hw@pG`@qk&Xy_=PDLLMe$wv;>5*APyy6_ms^VW2uY zm4cQj`kXA&d!|7|&wmr)KuqlfeE^|;|_E-Y@EU`dx z{h08mzhL14fty zAw2cL)dzWEcfto*)2H(Jc;Mf?9Lb=PDD%tKJ@&hJEzDr>WSL}sMP(jq&_rwP7H6vz zcPYEHH}}5Tq1TV_tf9>kyMSp91k8=UgO`08JWrea>Hxo2w&4uJnc&}=I8FS6i{q3< z$*C|DHWy}Y##qKD9f%ZU5wJ|9oHwt{wT0_gj2O{-lY@rgLN{7BjbEBy!$>+Z#clo~~2kabOP~&Fb`Sz6?Q7W=*C-D=Oh<11j z(ZFe_5pxwz*kjn2pJ#xoH2cbJuZ3QPBwRHmC6it;L7`lO3i3U7$7x55Z3jtXXuz|6 z@W8J9fLo+p1@F{}NT^@Q5{10z<1tlzb6^Cw{lNJ^uvXT-o7Bbt*3;H*F`)kRZfUh_ zyyo2v27IW=YTL~gKKj-Oj0hCOb5xxf`k6Xv1m*55j8H67A6*LoQM%y1U$k|xZ83o4 z@M+RgB9Hhs;;!^um*~hR*?s{?G=NpH)gpJ9(E(^lAQ1q-I_S19O7cW9A8&|fKZ*gG zv}o|tI*I)E-Pc_kVA@HfK$@%7aD43(0Ah*=2RFot2mZr~FQf)#o^WTUIF89USs2H* zdmPNh(JjcC=JhX=-f$xznrQ_6BcpF%18TrIzXS;U1F^1>t#MB$DtQ_NiL)Zpe@`%W zeq2I<(7J!~FGDp#WD`r4Pxzf%1NhmlCwnw6gH-}E$^WBWVU z*11L6tLN*32+Qr(V)ZI3pUYn(_7=V0UF}(Ld$1}SRLXp^Noy>!EF~X;hX7y0NGm52 z@cYCjn41L;?>ZlCIH)tTC1`muL>pv|y~)cdP_%;7`Vs!f;!vnushG^Ow)ub(X|x_j znoiG}>kP4O&p$m`?pCJLa{PleJg39?4ClDjoFu+siT~ADr{ABFXRLq$G0=gtdB{E! zVxtE`1`w(oR+W*oKFETgOVM=MDu_eKDEBmhFdM2wxNmhG&f3Y; z8yrH!7S$hDXx%}<6Mzdui==cr%zG4u(f6;mTxK0t=5Z_Zt=&DO10ZK!@gLeuY2)QV zn!`7}GHZTF*^PVLeP}e3p+hlYo=?%C!~+Q+cndUa{YQa!1%w0PNp}*CCo21z$Z7ov z7%L0{(W7?yX-lN4q<%u~`%ehIe8Djy;^1v*yRwK2gZtVyQQFA;+t&fNQudTeq{uQjeUs zRMRp2TVvwaead1SM>pAF!B&jM9nHK0itFQ}oP39+n4rQu{-xFQSjItk-mum1Xh5)~ z>Zg^iH|XB-1=laLZE>SCU`7Vx8Tlhtt(;vGbsbLM6UUeYBM7m2P_u@;HYym?${ z>%X72zxvU+{ad6X>iNW#h<7jQ(~1-S@Z_ny_NCUI!_-B}=LEiCK`E20nb@}qnYzV( zBH`y- zsK=0YZbUSg{g#KkgXJyYR+kulJ^z%q(EhD0gOOWCj%Q{ZLlzH$FW6QS_VEk{Ys{hF zsv0W)u5^W}{arI_aK*0ucM2lOZT{N{%oF2+#c?W}Bg82#+F$=k+DspYwb|B^Z0+0{ z-Y?`LHy2piUKG?Ouxy12yHXn!!5nxWZUV(u%YSeZl`N9RjGFyUe7$rkUy=Q|@nXY$ zv0git&H>067UBKSqhM@p_V@zKNRYwh0dB$w>zI7X`$R_^x#cAOocZ`|(Pe`}^2w4b zC5q>{ys>Hx8P~IX{^xMan+ND_fT=sZ+-5>uhE7w5=Te-xEzURUCLtl?PWkaSZuy?@ zAyg39wJjV}B4$p>`7-28;L{LZ>_dOgWx+=htCzDQ!B<*`(Vke)NHJPBtsq3&ZP;h~Wg2Y92;axz4+c6D=iX1oR=7{6gcZrw_L;d7nY}W>E={=V|9&exummc0f3=zktlSZ#od?iVQSwPtU1%)^?a*k)Ts3 ztADL_21I(Jt%Ptw9PkJ3T1IHvTxEA9S8A$l!fO!pv-ym#Oj-ZiYRl2*T6pFwIgVxI zDZSOdhSj4{0io?@aIGoaVqNb6lTyGzjUf^>Z95QZLjg`-qp2WFV8$@-9eLVa-*!rm zmt$piv7>{hx?)W2&<}am?_tGyvZoPWWC$*LtN$qs7YEhG&n?Znz9#mK5nvvfGo6GJ zWPB&qgAw7cOYQs$SIQJ&r75!O7j)Yji909#0V^KPI?TI1=}BJwTwa>*tB?OKrxgQk zPb6ssu-_NycDEb+tK1iTdy{XJvnNuSUFPw*G^^i!=vce zl~+Y##;dDc{%I^w`Z0^|tS^*olBK%`OlaRdi5L$7SO(O|tu>Zb9y>f6gPpS1x|wuQ z5{r@wuRq)&$sEs}$fff((qoIdH8{nh>Nh{qt!{Lbd&$V4@tMlmG}R^l5fMuTOF(MO5HBUG&(Ml1bE zzlJj14_c2b`cvgS$e-1D^E=LtvZkAW4jT|SG-gFCyFTGuxO zV9Zhyc0kmzes(iF4`gtJ*wvZJ@$w6ktWBCe2A&WA7hn&q_wQ-GUloD+skc(^;`|7*nu z#~5)&UCgikJn1XCm4iEtc4`4Vln(*%ttYy@bHcFVp)!<$0D!8zWI6e-zGSnkoE@FI zU*vT0ZPtR9Jzh#Ht`K}v*}h{+$9HrlNo7NIE2m($y`=iqYyRV2PE}h<#h@wK(|#8* z3_U7?*?4}BVL>AfgYDfR-PLB9*LFt**G{r1H&vuAvm4X=X>eIv{Q~-LhWK*tgp@El zAsKu~VB?QsQ~WSg%9HS^sP3c$&@+=hizjAWwXE)9h+n8%Q`(rRP(oQZTh@4#_0}tz zSD91b^uiJF!gjaaR_qrkZrPSMVj?AiZq^1A_+ z7C+N;(VCULTH@bPtoT^GGI_4{K&D`rM@@Nq8ql=D^90^kk@G-8M znkq9x=|^8_Lt)d0-iv;05FW4ok0r$!s+Y$ikL1f{yl#gKr@rylmQnZQ6Z#%;NfR<~ zRVi_;eyt8c6LzUP0tHy;!2pnkNbOG7=SDmw7y-ykZ-Ls2D;G$Jk5o$(_y{ohuUMdQ zb7*-n9n?PKRp)YC$qq?sxb0`ev>ZDBgd^%_?|3MRgX4W*HfN8WeMfSyaX%3>%~P<% zCw&YJ@h$+_xwv?7AVX*49k~GDt`!JswbUUv z-<7c6HD>ZU=vU3%`C&0!jHgjwEKlHJCA&j~Q)f}+xE$avXn@-C?MpA>r@Bt#^D|dR zOG!CM-BK>87DVG4j~5ONnK7P2IRPVghnj;`%8=cdhiD42JfKi28j3#3_no((%147} zG>E--_MYy)M2toYL@|qVx$*I2pFM}#`E`3Nv9xV%Pqkl=0_*C`tIu`YK_FpdUb9ww z+c)h+Dr1^P49{lf*~+Un2Hy#1&C!SyMiSo&uNBS+|GKQ=`?>I}=Cx#D+pG1g%#3$G zzbL@1$j_LbSWPh&!q4UXUNucTw(LrGpCi_6c7%rU8jrrXYrID5UCC8T=g%?NhTjcq z>;>O`^>wvw^6tN@X&DrfHCab*JmgudAxnQlOe#zu5Xn#pVqy(d5s~9x_(%oMs*^cx z!)K_#$}VI@Z{y@tWK-~VxAqKon--1WieJy)PH0P-0asM9qh&6$WapRJ2|7!_Ez;BS zgOZvYi_`n*7;+Rc+D|T<74+bHPpipJvOX z6NK8y_Wd(`p*zp?7q!o)3^qDQoxIj`o5o3-uAaSr&_Wg}*4oQyEn}zD7ntwGPOewF z|MBK;!=4ThS!qJ8T3HCdrDSXJ5kR~od(v5P1Rxu@r`az>AK|CJr*^Iv0r%XEFe%ev zZ?Z2AH#0bldQ{UCHB4BWP}U{eQig#qMOUN0GMcDZ@P6IQTFC055@PgbO=nTUYNQ7) z&XHxM=FW$q*RS2y8(L3+{|#TPmvv#J#ar-(Xmr&XXQL+?c8BFOFk6n#?>WFyzxyX75fQeBm>;`$H)`KNQej+ zQI1!DZ$rB&y=Z#pd^<5WQpYdzCvOO8m&&8h#dD|9Li`K-aWr-5^%=K9O z^Votd6xLsi@>`O3y({u{+Y^LP{0AX|h|9S=eUVW`T@kglAGeN0kJAl5S51fJQvSsp zA_QHQRB}Mzq?7^{_|hCu<$wDzk_sb?VgIXhWBUhIl9`{M_X{9+g?rhLAnuS)BjD|( z{)06W>(~EuavZ=EA`w+Z9;*?Iq1jKeStF6xg-sa)<)Oqs!Xh%rnRoIu+h0Qe9ZIg% z3h2&&i%117f>K81L#67yj6dIJO0{^9az1sTPQz7p|Bv_qGh8c+fIP$aJO)JA2}>EQ#HJMLOMVYmFWZ; z>pff3^{Jt)(5JruN%!CR6vVZV13t=jMm}?`ATE+<|0H|(5=nni+$b8yPMR~xY$+fqvD?CUU~5HaNFGx0I8-qkC>N^s+Qubq^u^}b zo*);w7|dJ{5eYY(A2++odN?X=FyF5)-&JP2I6?P|a8PeN`lu}O27~n}hXGLqcDp)$ z<^mvDmy(hElLZq0d5>ZEdNt0IHNOM`K8>P-fIiOibW0X7 zB&>dGXN|m_NXf#uq!bBx`?stn0N3^=&jWJ>cs>vhwWO2lX~;hYS=TO1lOz9j6A)%{z+$6x0yZwmY_0qz3V=>a<^G2I) z8Zn0r3BagyY61^+GXYBADe-5R8Q30;BUjFG_?%9ECAwG$K%s$Ar2w~u*^J&11df*F z^H#>89um~kPH7w9lAVw2WQPOF6Qu`_{i#S)(*47&-$t(U98j3nzL&EvL*@9mJ$m_M zE-3BWamy28wchSMc=92WNkHU^^$~gIp$OPxue+6zcnQFLXE%doUv_;TWwvPzK3E+aPa_N#fRlh_)(uzgXE8d{6s%UexNEE`Xeh7E^OuZf z2D-BWh0P%_8wtu6UXg!Aw^YBbasCPuDW4WDK^bWUuy7F^zBpFT1VrG1k)pfe#J9Qn zBt9t_1LOOg^)yAF=h7T(n><;xW&Fg#$<*UhR%Z-Fv8lqm^p&0d+oD@PYReb8Qw>F# z7DTc>+LSp$saMaFiP9m3n!sqkXzKJ=G|AQB030t?JG){?=6_q7)e>QY_>jh;OxJ5`Rk6E?>rKONQ zo!h?eX4Y~0OwHIjS-8|1K{kFc2fv zHX;cDUCg&1`ZcLAMsC{#ic~^utiQoh;3-&Y*?Tv6k;G>be~AnGP9*!?qjymJJvzEA z6=W9vMvv;tkXaVPFVYv4)L)XJsEAhDjk9c~F*hZ8myR6xDyQvnV6K~vZ`?1}vqdA41WLh@=$p~c~NP7EyoZu%}qNyi~sMDk%mV)>m!VyjE9>VU( z!iqm`v}Pu0d}wLAYEmYcL+_HF;{o%`X|({24M|$3IvW#h!g8r$8(#!vWe0HKzIv7W%32mQx%+F9_#ulRDl`Z0wxw zaQ`Zlg)0?k7qiHBkbr}ER}|F-C2Rj+tkhgC9KH=fBgS3CunN4V^n)HqJi_9fPl#2=;IL~{w z|IVa&aaarQ-T!0nEra6xn|485LI^H_zyv2~2p*g;5Fl8P;2t12!C`Rs5Q1wUxNC6N z;O-3WFu2R!lmBzJ-m3FHr_TAXwOd;6gi)!kS3Ee$fK*-9dw%(hYnxl;Uf z!vTQFQl-vkL;qV%_|7=@@ctxj2$k~*VdnN3Z4P~Ixzs*6lP5LE_T;2^q=*^_;!0y# zC^1#y0Y9yLT(j11DG+^na!vo@VZd4fy%*t(DU?1~aCEESS%9vsa#?CS??2{?KoS*m^*(xfgGJ zmDM3#DJ|UFnFCdpV#yaVGGYM!J+5X5HLs;}8e<+xhFcF(YxqI!nx9JTOndo~m@2dY zrK;Ed6zE^Qr*$U+`#le);9!=n+RIBvw{6ITBub2mo|(fY$uJT)lvFGj3=~Fz#vi*3 zmFUbowhQSR@$(J>uu&x~HVUjnBGt`SZAU_BGF(v>=-a_H4p#O&=AV9%BRjvTdm{4} z>!JbP(!3L3`BtwbsK5OLc)0CvYJ9}WD1j;7g(=Ks^JT^J6%yC(lV7jPTyp1?CyZUI zsy>J59aIb-hOy`K;0~$uuMzzAR^r0=eC>c#W$x;6M|pqZdYx93nK!3!AOLkxP>PvJ z*3Kf#8Q+uQ`nYo(JY4bPH^$iT1mVT^XPR@a*)0c(A8bEaAu1l7xJo=@UL%(LQp!cn zKYd2DJ64k))foBLJBtJNohe!+-j5T2rFzVuKKkA&(0h8EmA|Oh+Jm)nfoU0H@Q zp99Rmvfh(Zttz0n>1Pv--#hO&6jkdxt)uUvexP6en(Jc6AhG|Ht8E6?PPHLZ?Af4NG4IwpTA`_@9%I#$~}KV#b0qnbbasiVezex zpYwpBY#E9G{j-1zCabXb1wLHY`aiexSJ03mnZ$j(N$%L_*EdpL&EYX#{>IS>h4qk~ zi`=+V1zIQ0VqfDX+u}|1@68YU%&a+b;?Bz|n=&*oGC`h5Xb+3D9RU%s{0!$rL$^bY zSwrhi`6c_9-deoez9*Y!jlw~D=Y7NIthm_kbrHhxm(L7F-x_+&6FL?1GqTP`P21PW zn54fdm>XXV!+7Rl!drjq;iT|QL4Hz4*t5=r2Hm9QRnH?E9SE2>01X?}Y=-IKnT7nt zpFpH|*y_&|pG63^Hy}?*p7BO!P&@kpIOU^%)e$|{)qQm_^5SAHPZ~WJm?29+Jh7a6oYmF8`|CD)?)Bg#X|X04&rR=>OXBS#M@a zJ>n=JPofP!yV`SXp9r_H;pT9L;qQO8N@rpHTM4QI?0+0HCD{F)Qk7XIojWDDZ6A`j zGaSXr{exM@#6GXUF{`N9-}lL}KJdj1ghw~kH1cq>v+-dxv?m^JaTrMu<5TJ5Yx;>$ z-QK}h>EfS-ooA56`nxo200`L#l^R_FN_$CWeQ7;t+7;d-6o4g@A^4|7$3anp53Y{l zKb;lmc1cdmnm2|i^`sshemKu+WD&Uw!9}_& zs{;p)Sv`R|3Aq!o>QTDz+bhN;V~)?QSe;cGqQt6Jr$kIIvkOO zZ|-4hOI{5)Bt?2bB+a(?TSKW`b(N-e`*lWFn|?SeM+8B3U14lpJ9TU7UVT{QUnjqY zvuglieOkRc9qyT{wkZF)Arl@R&iCv6_+PIj`PYwYjTkiZ7Sh1;QyFCcI6puxB`=L9 zfL!)SCH5tCxs7jdfSQ(T9`=Y(3E9!#ZjkQNL{Zx|(3o4GQYy_nI+fzAkS#%40-SNIv735B;(ZI+F2A+L!Yc>u> z7IuM(L5`3??G+pSM@iF`9sRma*qxf!%DDVKER@y3C;`+)&fpu9{@9qgtNehA$4)4)K2bRkkP79^TW3tV3Tq?<5R(p+TN+U^I{ODrP+k_3a%ctxb3j`ziz_wxJfHw&B!s}_0>rh*R#w;c9& zd};iiXr@~hqI^a0JjB z(#G5Yw6%nJ#<}$dx)nikd+FMDEDU_ah8TaHW>==*otfv+Ezf#ZhzJsLBU~MhrjdHh z%Ns<%Ag}M~xin95cGAz@^EoCaLA?%tJm}fVaufPdE3#hCW%DUTN{bVc#iz*SMk4H@ z6h0hTHJjFoN%FECRQ7f-Ij>>Y2@xqd=rXO+xDS8Ag2v^hVR+@#%L}wQ%(C3%b)_6| zbl*)ey+V*&FTTwy+(1GCtwQdrU<8kfx1LhbDsmv*|EXiLyssF9=#|U#uL3)@PCZhZ z(ho^z7F?3shi;kn2mpCDAaN^80iW^n{xYlMqUFJa9Vly4bjL@mUT;OYS4wp4E83}# zt*%lJr3wTE1fXiWtOU%Q9xE(kr9ZxqPZwTeP1S3<5Ny1gvpC+JZX_eIp7ADPR&xtt z4FTEJey^3p$ZTr~qq}7ORMfd@h>Syd^(?35n$~lb1Ug|)c-egU$y@J%Vqe|nhA}iV z=a&lw=2HS6&-De`w0q#Zi+rd~{7i?4|DI+f3J@KtMPdBd%_yNj^b^-AG ztA}UuQRlI*IMeUmc-{&*>rd8a&p3@wx^!rDVV;sVZ5*2pr5sBr9ZL<65v}H3o%VL% z7@3%$k?4KJoGR7|iY-)gbq{}XtQ?#nPKfn-3>XlProNxIBOofQn%!XILu-%-E%wkA)E@`Ue+-^vjHfCqJq=IwB z&(2VWFF+jRDj2^C)rwCJ1vogvvZNwcMtDIT9(oV-IUtuOxu(QQHW8VT97QSWK2Zm^ z2t!(1dg-@YZBZ-r&JUPJ?^;5JJte9gbTNLlET$>RC~@(cF1<%0qSxo#+AW){8iWiB z{c=2yYGD8ZA^2zNbMVg~rG;KVt?4N_Vluz;jCx#oBO$n-G#1IDV%Gcd3OT)7#N$p+ zNU3tx{K~5=c$BU+hk1HsP~<_=a`xh5ctn)jYA&us@?Z`_Alf70YVH+{|HotJV&X>S zo#8Zoznyo`j<$PfJB^+f(y*{2QtsB~s5*jq@!MTeu_ocw$4VYw-p5Xhqjaw|tAKB( zCJ~439-m0DJI5}@y$;!%L!EVikP>$Wf`O?L?hVw&-hCbi9G%Gb{}VkXz0*DKNSDs* zp=T&c85@tKlV|=)92P2f_7E`kbkkv%%V|_IWxSppruli&r#DodQ|1pX?(Tt+5o-g9 zl`fk*SyxME$}UICzmJRkqE@z7p0lKUK`bUS&vRcjEmo5%rtcg{dW7K)<2~wj^faG& zS~gnhAfAbHinly+XkYS@3n1msl-(Cj0~09_-hjlAVrli6w~|^bJ||zN`RUW2M@_@s zc3G^w9N!#p=Z7ISA0J(?;aj2wYzbdnHGE6R5`FI~CcQ;&qP^O4ANR5F*qiP}sDNg4 zzPSQc!|P5)UHAU}qe$mR_aaT9l|eEh@d8|dD8c)uhqr%_`Hr$}R{C~~__*z-lChsC zpq!if19#@G0avs`oYB0Qmh7(az|;#@5NNM7^(@pDK~cgW%-d!A>}c6IH4#W!gbzif!$G1n)vl_ zOom@31_<4f$#^Ps+7#h5VEWw~6LHg>K&G)94S+j5d2!o`Ji^~wT%krT!%=ri=C1@+ z&9q3*FUhSk)NEY6k_L%K2-|ZKuy@%*E{Xf5cdZbs4uzoU6l5f#G2xF(xt@q3M}J7- z7?B(T0B~i7M9pxe<(zPD+_bcxe}AvYeH?PVM-y-M|FT2#GgIs(HLl;-UVa+iPC)(lt~7d-=(}v|wP|J8$|{9&ImoUv7|mz4Sx4 z6v$zeiM_OV7;^Jq7oP8}%XyfA!z7vXX#nWXy!^)PW!ltCl5VxWpnJE{)CEjj(qtJP z6B?96ei#{s5MDwa#H=)=B&Ck@JTIl}U?i07yVcA`An3i@-EU_v!UoTC*4jPT#ahxQ zxzz#-_RAU)p|4kb%}1A)E4fRj^mj{M*IJERUUz&CEloJfKKIaWue(`Lr%mInQG&>x z6;IMl>6P`g3vA#PLP?EftGiHDRF|drwXu z*0IgwiCp7OPmK{>D``v+ylcWq&32xSm%p?D0PSF_auyfht8Q zvKf*YFR$w_a&PnK-JQvo@#A_X-G}9z58*{C9y0(+%6ZCz2qXt zz6#R2(M?GbC}b^sufp4SP2|$A&_vvmp4zqO>`5U2JvP^_+JP*b_ubc;?9mFJV0j&| zhCK%0v|#r%dm)uJuFx%2;y{k68ud>li!>`=TpqZSKAuhMU0hO4-W91=6M8*HL~XOJ z!2q~}mLNJMuLzuTF{A&Li2we8HC=VMhtY{DRjH?CyC+4UK~Ax}`mVmk6xL`*;@s^B z9G5=cIqqM_c(r*wUOfiHFvzdrcpWHTWk)qqD0~oEV-0KBttVN5J9U`tjjBT_7Oqp$%a{=aj3SyFSV_ZW^qOOD8gw__bHR}Zk2 zI1n_lGI#5ERsk9&%fQ}A4s{Ze?2&BTIExZILaAADA!36z;(2-X2y64W;^{tuN;)2| z3)$BaJBFW^0~{;=5R&LtQG(t%%s;@Lw6$FS_eZ%TUxde!6Pi4>t2^y?k1BHzDG?P}ToYKi{+dA?Z1fw9H` zgL({I;|{;@klD^j?$cyBYI`hV*5qauH?wNDPH~v}nM|A_0SMN=3cGKA=h7BSev}%N*0~e2b)*b) zjrlF1oASo%EPqX1+iaPr)RUv6VTJB$Tj~LGe#r$}E&VrA5J(`@9#CMWL&23m5_*<3 zf0XT254~-OCFnoik4}_Oa+oJCX+wX!%eC)WnV@ktygUQOGFCiio>Soe3OkswSGX0a zkz1+ReZac=l7&Z^9ohQI5k5?yYmwgdVo08t1deqGILee8hO6d_v zP!eD|in(%PfC1{-^NEljhdvx{9Zk194u`Buh&O!Mb-SD2Y6&SUX?Q_kp|-p*i>iG) z$9z02a)|jqxB#s}QHFhE951|_o<(`xVwBuEv$yrmU^G`;lDnMCO)vX~4WE|OU7?aJ z_Yw@da>~V*s{6{8&Uh2_D7bOTv^=gKcgAf0-yY5+s(^v|5Vgh%JyLGDJCe~2C5SSy zb(7g6L?!qK`t*ML(1n*2HW6zm{e0w=-8zDGi&rM=dQE_WWslQ~E{XRU=WqQvwIE8o zUlp9R8~sqU@xKYkg@uJ(Eu)JBw_Js_v^FfAvq84sf!cd}-}it+Gq1C{0EC#{a&aV& zznzM3>hUO{wCTQi3;6bQQKW0k*MFl!cN)OV@p@*r%m*^w4Bk?9xO=Wg0rQfXb=_X2 zLG~GkQUt?5w*kqv+ZND{vv&$Bv$>I3YNbX!^Lha`ck^8IUit)^!$WJ|Npym9DFt>h zGYxa{66AJaN}7IrRnjjS&sv;dr*Tt-o}Mt}7H^Qt2G(g0I5^9hhBj2DVhcDZAnSc# zIT$jQmAY$n@u z-$EZfAy*xs?k(X4CvyReEA9hbH_QqX92yA4W z&*Ow;$!`9c&CcD-3`UyQA+7viS~n{BP{(xhiPc>v`#~#!wZoQle;Gb1+KJzDDp2;E z_H33NkDZR1aW%~XFcd;5{3rrDyn$oF4ORwFUb`J}YB#d|xR+0Y=7gJgrTjcjW z4CwwZ-zxcXe&P&%^|t0ySHOI&o}CgGkMdcF+$$}_v%qNQ7+@BiSniH;`VFDy!L%o~ z*LA#C$aLc-H${vy)PvW$>0IsZ5ca^fbTjq)BjEuD>A)qEH!uTGjd@8PNfNjkw+x{b zUZ4*z^dFb<>`tih854lx(I$G$X9Uc7icrGd45$J6CD6Cw;X{a`+6R`7S>>(Q&Bjkp zPs7Z3l9qgABD&C~Qd-95na|D^G*b9IhUS?a&g)eZT%CxGWV_40PQC%~$%K0iuJV?N z{7RU&-?Cbmy6!h zv|uJr9Rl7ESygkh`LHODo%&D`_eFOy2PQBmDzOT^mH%dVDoyl5|<2vm+Ek77V8&AL48Jy+>%tvf|Hgofy zc;*3$10i$vTxCwgnCj8ugP{}KJ}?ihbpGzKJ!6&?XwSp_0N`QU;|-GKbDKrqsK++b z@>+d*<9$d^;W0eKPJ}4wTGH~-C*rlQy;Jw-SF`+8vK z{dyi5tMJl?8dLCkJ*Ia3yKFcp@!V|taq1Z`tRn44nA(@soFb>65ZB* zs526ctftF$l-kNd2Z>9isA;-LfT~5Dk%J{lY4gr!ILI-)Nmg)k583rpE7A-VXuc9o z`E4D0`0*a5YPk8Xuv|H1rsOtcf!V*`FQL|vfv42JMZ(iOicxu0}dB(GWVjj(8Zmsr!ZLI$}mDP5~zW@~Tr z67rwjQXoG-zLIUZcUm~3DSdN6buO+^M(FN(I16f`s{!S*^BwlkI#q!c?fe-0-Oyhl z#?03s_t4)d9{`*~m3bezaGDc z1nXwt(sBzxYQl)~{6PNm-u(iWX!Snh1(3AA{fe7cL-LnQ-Rv+^!BTk~*UN74Q_be5 zoe2s_%QBL-{XJk8Q;+3?Js)QI6=*%q+B#hB=7-I)lxHeji|KU#7OvgkJRx}Eue21o z5$Gh==fgOo*`kl$53<_4UCHZV0g~Uq2nvy}B}-Vk24M(bB`sswlLb%iWt{r~DZAk< z(17-?W>cVBQy@`coWc1Vk$TNnOtytuV!i7Hzon4#FCvB}J8&q%Ilqn#s6wkBCff3~ zr~~AEy8bWwuj~K4#=aAXtUh->;j; z^kqNtg=W%W`m^%hEP7Y6RQG9_uq6)5Mqa|hR{9ZG3OSoX3$W(%C2|m9AmN_~&#}LO z#@F$T@B$Jt0UQNb;XpOZ=PX9excBNO9bjbQAiKM3n+Mp3+_7Xry_7ePoG>p7yC9}S zQot+#ntt=~4oe}g-D(HyMc|({Ss)r>0=I&PJ~x-D5E&Z4li&V;q9QMY(dOhrGm$BT zn@-`ymY&TcUawjbxXEy1z%Ie9eCKsX;=J7GSopMLlMeoumjmH6Dw(}MJf}^`^^%3a zXV#dte}MeI^_u)1@U8>s+-?R5&)u_gfJYxVVTIsn?5mxgsFjkI2K3v9VX+qiZ({QI z_jrohA|5@ltRF_LW?W|LKU|&|!f6S%{}4X3%1oM_mDbFFVHvGN|IijT-9K?hIsuw! z%_XN?*l^zTz>UWc(*tnHMndSLc5%s&uP;h4lDT{_F0Bf-fn^QXG7`K-P=%j zbUhJu9VY2&Z|eK)Cgb{LT&K9fqp7BsT2eh_=npK1iCe-!0H>&DCVRH zSnl7#r_JAI?2n+4m%Y2<0$T51JN)yzL2M%|uYtnM$Uj^X%9~aKfECg@0K*Q{K|f#1&8tVC4Lsa|F<8^_r~Ge+VaVuIT^E zT%pUWwWzg4COnW1oo^hV%J2T9}6?P_uZ-hQ#deNn(=Am^2q#pEFJOnCh=CLHn5i zW7Zi|2Z&5Q__+Gb>|(gve+fxvKB5{Y9-z>-XY@b?NQ?+Wl6NSDA9=L)`Y&6GR`CTQ z$4r&wY{kccKc>y>Y$XtUxGF#o15ASft|DNWf4qX?pxZfT|6<&Y6k>(b+W*aq4|o{B z1foL{oGAKlUba#|DNW#_>I0m<^xwahy#aHNKJw-7Xb!jt|MRPr0!U3B&WykLx1xOW zMh0*!g=ntyzZK;rqB8(6>Wvio|9d(9%J&Qy3E_y4O8@tM{&%8yqb%TM{AXeQ=RNw* z!uL_jF6cZ^W!0>6bL^olu<;fxs|@jAh#x1~S=>Sg!r;?9eR$}Be~JP-Ly zs?qd%`{f=v!B`b51NXRxTwQE{-wF%sRfP zDRE@(pT#`h(QXvg(PWa6=BtQ#(|e-WX53vOyFl^Rs0b~5s?!Vc+zs1|OQ{Eg7$L=? zs;q3L-LNnOTs4C78mive-j0+MK~H8Twq0ADV_Qn6Es-_ad1r_`Xfj?oZW&@>ZZ>(h z6@`E+ZE0-W`Di-$2urdppFD$TzTxpbK2{2!Sc&zpbU^8s+*2=icu}o}+`e6RjV7P2 z)tPvWMkd#yh!sIEF?uiJ82tE_S0qX@YvWq85OXgxgFBq{c~`}Tkve}lA@ipQqm2^| z7L7NX99rsT`iH-83x}7_W>Hg|cQjMHRy4J*S4mcg*u7BMH0?R)(_9};`@B@)fbM+PlvF_CXh*W0t(QZcIoy1Y~`Oyc-bajRMUa2AS= zs|t?r$Qx~`&PQ&oX6B_9p7Ie({qoVyc5#BOO%e_-YrNA_tOOBvVt`iEc9&RbR+<2n&^>yO>fBgHuQLu11J~kJE#PIpfO{cDyyvx-lTr*RT40sJG?qm$#Ap? z^F&8)X~uyH+&QKQ3xr8l`bhSd0{M27EX_(C^gB1ERV@M{Rej4I&RVsJplD4jSt;;6 zTDL`3UbVy`@pNe3ZEy0yt(3$)p#stQ2klYIpGp?4j@eX6Ax8$kfPf10yluOeQ8J#T zZFi&4wrx&My>b)3NXLs~O4}AMuJ|p^nrwUq50CFuF9z|R97`2(*^DNk{Ld-#kb;fs z-y3Udq@aAUi6^BIAvKJ1FNc0k5?Ye@s38}tArA(i+K5WrE%x^E#j$9G(#ggdI2ga6 zp~=#1AbJRSlgYEYfm$j(Erp;2BPJQ);|!vKy5gd@eC3U#6!z`sE$N~oS2KV>o^o@I zsH;nOIQ%*-%1C?Cpc_#<4FO4{X;``)XjIuBuWfjD1y0v=!AMBJLe}~Q26$LunUoE)8t+8RK9l58};Ej&7j*YoRVYk0a<%nt(SDBV{x_`~VHe9mmi$Ew+N+{f>i zV22X(ws9AhCwGn9@|}aKLqv`%b!(h5(;Ky~o(D%dZZm9aqTS1uvZud}rv7TxkcQ6F zDH4|AZE&YO%D-Dxmj_$r&Gd@XCdss7-}f4^IevUKr^u-${7ByMNMPNwnsx*`JLlUD zKxrChlszscxC?I98R2R4RJ&E+^Gp*tXfEgliPiZ&{Lpq?-$H2)+iSF8%NG=ba=6Ir ztp9fMdLxL+!02q-@(1Q7Lw?!pJm=+08e~L!YcRGcHy7Mz?{NL<)$fFv;nRK1!M)y~ zUFrT?;bRMx{@ciJ{Y0MZD7$xT(22*AGa-xFthy9#E&2pc9?SsNS03y+xM5a!u!;`6t4b!ztE-128! z3oG9uCK3EOOt6r&$^@u?Cb!i_8?f-{Xs^D+7BBkOU4NQMoJSDx-}$s=#cXL`C3pO5F- zS|2_g8em;EwqhM(X(HW<)AlaMVwXB?#8%gCesR9BMykj35blDJWijVDNM8{Lpt zf=OnO%F0IC>ngDY9~ZtrV8=an(COx2sT^3_LjIcW;*kWGf+9&Yp1H|yBc@-)?|X_C zE3~+e>vqGsbyJB}v-1QTkDn@~-w$i(ArSY1Su{zlLfjZ6t~2&_uzsBm=3M4d9bUYB z#j2N3g0x z?krMJq0wyZ73bmPbh#Urk)x8#r~#4r0kx*?*6$EJj`uIo=zZl2%nFU*oJ;B3tWUuQ z;#Zc=o8af>GyRrzI5`Z&H|U zLum+)$nNy%O|XdV%WtTu#G{CKR{Xf4LeW(krw{Xw<3|!7m3TXY8qI8|)7oHQf8u1; z@Cm7=p>X!hCsf)K(Q%KK3b;hBNPNG`wy`sV8&^X%#KUp@m{;d&7@34|@0|7?@kCai zx0~t_5C8HP)JFz7g|J^9e^0}30r^uqbCa9# zNE{Lw2K2JY!4@|jQN%-Ck|!F)C}F89P2*swS=FiaC$IN6zJ<8$@@a2F)`o|ddpV&! zl~PeFodcKygG2BW;y*NKXp(aeV^CN<+ZoptK1cH-Yv&bV2z$|FazJKTcSz*2!Ccx! z^y$NDI~K2@;pF4+QnH}*SDhWt^q_{G7yLNf!;Aw6h`tCxlts7sL8jjmjjdqP%*Dp^ z#Z})E&p_{)i_<>jL{yE)4=;&pzAv3z+&`RFu&kJ+Z9_!iP$4RK!o8ltAyw=Cv;vmm z-XSDNLrsJAvfxQ7rmWhV_MW|I*ii%YdIi(7HKF0W0zcL(m5)B*6lX)e^=_>a8<3` z7ATH9bfdn;a-;V-oVi+z6j1h-`3+(n{!`oeaCBF}mu#lI@4Uc{8OTRRrW4N}=vj(I zBVC)s!iyyw(<2w>fp3@%i?~&1WV&V8Vn$QR{+TBf6**~oN9+CNhCg?2vGJunB_ltq zd~?zIf;H0b18aL?_M2l{J#ND4Ne*J%&iGi*sGMrmm^tKYORm?S#K0B0nzi{Jnu0tE z%~2Pp4j%HJY5wy_M(F_&;ZBpb$iBhgmZ*@HE%Hq4DN5k9NSp0 z$s~jjv)eynfKjRN$&l{T4%&ijQxPFdYk5h($YQ?v+xjD)JQbT!JR`K#_V>?}+ySeS ztY{d2GD3f6jG>6GLUG~mR`6D31-*@NCF9xduYA9lpEBHm!Irce3rMCE#zNwBs2@~N z|FD;i4+hJWLvt&JqW3VUb#Z)(3P6~jB=D&J2q3*CepwoV%^7Rf_)c7jq{~n(HgkhT z1`K)v)vV~r$^<5l`qqD>d)iwsDEaJpPrzO+5_nPgrx}U-Z%l_h+oT}T!hnn= z@wE&;b1%%rRk|}0HmU|!ilzWnW8%=>xXNCVuSju1!s;6OynftFhbr`zt%UuN6n_wu zG8{uFK9HhqJ0K}N`DoC4a_XTcYTSLkY+Bj7akYo}ew{P+W)ftG`x&JIP0U|Xs6AD{ z`8X>b0s?v7T;}m!{30Mw@0MmH$}Fl5nY8lpFk&8hJx)(${x| z$9CU1koih7z6$t!*Vb0_q-Pqn<&%gve?O&@sITt*L47+*yGZ}@%F_~USJb^^lF!NE zFd7;LPzJ1QALC4%?+~}Hkzr%#t;(zQ=yRRAsqn1UsTGub zn=4r?m~1gcH9*(RM?vRdI9!MxE;R^KPxyUu3ZyV4G=hvjvKQ7^V&x?`8ZrLa z8gy17mOj&?41-zru3^7yL7D`=GFQo_0hc!`Kp+*phN^fb8FV%mD2(P>FI1~6nr@s$ z?$MRBg(5&TmkN6e3TvKQ{9CUGQ*(dF|GuWC%TNSnUm15l`|{G9SZg3NT>fzuRA#f5 znR>B7Z26&{SU?QR7hzD1{1zSE<;(@kz2P=*+8pWK-Z_)zAbrv~T0!-@i9K$vWLBln zik5xMGSzDG2Em$x*_0@9-qN)uo0c%%B?v`4yCQ47uXuB?HV?1kM^Ajlq~>%6AJWR@ zR=Z_=d=>#g##z<>!3D5Rch#qaS(uu_@~i7CVU>05>c{fFxa0a%x7X_mjYR@u&j*SL zV=1{%Z8urpHNdJ47}`3ew<<5+>^1fXT}t=hmM2LRBnE7iCq!R0Gf=qW^QD}5f)=NR zlhyB&0u$@63^SJ{-z!}z7Zn)c-)gU+>eMJmWihP690iT~T_BB+AAt;1KO{;M!A{Sg zDIjEBJVY&=vbg^yB$Pv1mbMx#s!y;sjk$bVs5@A&b~;t4asT0jRN4hH*8F9xsYga> zG8{jkS^=a<;u z0}7-~WN2o;wenQ{C=@q|d=cVXd|0QmeF9d{H5s0ybcQW;H9X!atZaGkp=7y|)CC~j zeWj%A*s4scG4)q9z`1|jUPeGY9{JiVXd7MV>D%y6hxzMEd7{t7MQj7d_79u5l&Ui(f+H!Vh<^tzXZveR1?8K9 z<#xu70SwXdNEt9)=Zr69*7r*6Y(}tg0gl+*(C_U2q*Ep`XIN!Tk@N1b2 zDO;KXTp^LtSQ^~e8H-x3%Rw@LCTOa}_F0L=rT13lQ+`usOdK>5n)7^jcOF-ZLhGb~hnwF{ zpBybV`j0BFFe~%{Jbf#K1G1Y450uHbn$^#oYLZ;kFL6~%sGK)Huk(~rwbb~W$lwKp zMnR}>M3Q~B@Q%9Hn1x9+wkS`YS8zU;$*W?#zUp_A92p4FsSJ3Hfs0Co=J!-kzEx0x zFv~TaNofvyeR(u1`en*zN^Fj8ywD5d@1KgD?DnRt?zVHGJw3m@{N0T7I+9uZX;@N_ zz^If-Oz+f(>VZ)_QVHqL+q21%9K~6ltB5h#s{H8p4x*|^eEL;hvVEqShT+G+%U=a9 ze4;U-`t5vyMqzO=B7!;0F+=CESha2&s>Y{85}B(GE1xOWpHSWj`eY-=J0V?%GbMYV z*A+z}^#{EE_$L{6E^xB&?Km55u%@y%>txCkW{UQY1^PmIKl2KoWGgk1F%hcvBPe+9 zl#yiC+~T%e_kfn;AFps2U7u@=j$k$BPi>qwk#Z#hWlBn9CMg%Ga zXBfbWKn0ojE|lkIO>d~qc_3*}={&5J+D4m#g%L#;dG#}oAI^&H>R+72RPFR$I@118 z%KSPdr<#Bz%KiAqSJJRrLlyd#AGgzBk~qt%Dos|vV3TCw!p7@_M!W9oM*bOrB`kfa zF8vSou-%w4<69}JRO^!f8BwCW{k8fxK87N=LBkenqDC=z!Qa4|7aJ&9m_mysI<`-p^UqfM1bG8c?@Ox>Fxuy(qFS zT3vK*39xBAr?+0J4T(6%X8A$#ZJ1~vbA5C*5rsOZJ#yl3hhsoc)L@FI=O8`sWz4eV z&9g03xB2-7h2p`_?&=p@KV3pw3%4w~xj{ctYYqzvI zzM@CrPg-s@!5u`qnBN*JI;HT}&pocISJNh&8+W`E!s&aHF)voV(@3{47cLn*CAPIL!5);iBvq8{GZ}yJYt@nv9Z3&zV;6wtS z&NlkDDj)Rd&A*ya)YT#ulEBDBxSbrfyIS@jM3eK$^rUB4`jytd_S!!U@$B8xECl%x z-*Ky#=9JV$pv-#rVDzZMt4UMz+6EEPZvuWBVWn%UgEoeztDlQ(;*|1T7~@p(6V54) z)2oPi-h|^xraTQ&OQ7@2Knr#9W80m4=a7V5rKRJKj2;;uMDvh~YHaUHh;_%BkuXfX zWm?sY7m1@?HBVKais9~#4Y})+y6PK#By$#de6E>V(E8;dgNS%cdBTlII>u z%n1t`J)492%0r%^5#|td&^ypB`T1ga@zs~CR2N?`}>E|SAs-YzhYoWvZHew~SCj8Plf(9&@== z(H_w0bu~RKutzQmGiI0vJI17qZgKd=z1wSkO-a*mZ&Xl`%Qei2O1c}ixzaT<%Jwpm z`8A3wF=YBp>cfIU1x$K((eB(Z4HhK;J)3)5m($~!{#NRJOM2GVDW6h^kj5)A9Ec;x z=s9m!F4z5wp0rDUQ%>K#F9N|5Rq4ebXHftWgp(B`52;h!J|Aq; zr>;EH-0bTINtk_<8E?A&z!IU!G3$GedtS)A@m;U?j6`u|9P@gJ=*Ln6-ZCH4`wuZTP;@GlmvCiB~YA0!wgFRm}M1Up79h=u%W5DMX+2 zvwbA~%R8Iib%xH@&(E}R27RM6>B26=i90?LKl_|x0O~L&KeWbru*OQ1@8wgkMS`ky z(WTmC(o`49kzEw|VW4Ke<@x^2P=SDLBX5ZioGh-4$;yckJ`zH8{^BFb(~w9vNxYtQ zv9lL+!N#>0qmfB6f5h9Qe!h=2BhL1XN)e^D3dVH80Bae5WJ!3-s?^%%x{<7x8huIF zT7s*yPZ>!_y5?mkGLg8NlrWm)8wUoJH3Y&(Fz5L4mZZ*)hoi|IzFj7SGXz0O7-f{A zMxyEHJ`R<*ggl#bbl5}B15vKx`E2KEU0s4;%XUpcLmA!y)%`9z)zCKP(w2x*lBx2F zA06%DcyvtsmF7|}n=?QB>UhK`LJ2LQADQBKNVNg=m}oGztnRDQcUC1jS+JSw zPw&ZU{J2kC{GZrhH0ivUxwUyzVc1VNT$NvVhaSeO;fL5VP#|jXIpbwjV zr#mN9Emfvqv_ll_UCXe6hzUJye|AB+*v0s zd+Kb`|%09Vz^S_`!hlqINC#5H6{M8V{1}bC8j9<;}2M5)w>TY-S>H1 z+`2!rUb{6D;0KmwsH$%79v3K13ZW>KoTt-lbLiC4NJh0frS%Pb?DNej0LKuNx&G-8SE`9kl_#mzM4lIL zcWG?$^Xow7+QqIS!>*c_tI{gws5UEXYT!0hScj?#HKYYRH*~=?*{{U!sNCx(cn@L)f0hS zMTfL*82{oXpm{Ei^-@1EG-auOwlg730~PIyF#R!^Tj^YNp9 zbGc`GNb%&wAf?l?1CpxaMYywZX4m(?0jG8(Fi`?WvUB9mvlkHZsCUO>Z&ohvpQ@^} z&2_yfu%N5rmEA5STp@Ic_+F0gr%9ezjFxhX-h1e@QuWRy`d8W~)THRE4Vf~<|Z&*;*Xx!pI_>?zeMEK<~Mv+K>1dTvE?|_ zL6CO&_|$b!RDn^`xZ6o7G!#XZ(6ZPmSZzXT9w9X&Ky!`Ce7?nh8upUcH}k{H4?ok40^_y=M~;0i zyy^lo)ywh*=U}aL(CU3u&GDMnZC=egAD2kI_C&1Gwd&tqB-1v{-kjw9>RL=jp1jwk&;S1vFGoe)P&ab=_7unBnt&M1MPuGWyn&zqQTiZ+=}WPY#KZCbd~R+?yK?pN7hG5AvLyD^Ec zHuWS=r6RLCyR-mi%58^tuO<{z`#wTj>L;r?9UjAp;?etWc`N%)(V_=*D)}-BO81km zoonzKo#fOA4Q5~=xl9Cl=YBjjFlhI!$Q8L@qX+pGFR`tiJz}=FycO4t-FCd3Z}$!R z%H!7qyRQgMJonXUnN;_Ooq8%FVVynGtse*s*>B%>yJjssqjsJ8=`zS9IO(j6Se_^A zK4NVBVS%==i8wT=i!f_{$}Xe8<>1e;nW!l`__wuA&v!hTzw^Wyozc~oFVnC9j%{%K8Mra(m#`DE_3lP zlPPh_dE>IIo8{EeL6g-%z{&wEtqE?@Uv3v1F-o)gZd7B;$}i8sZPl`7J}20d>J+{%@u=}BRK6bF z{a!jdPc)cjrBuqNJ026vAcj#FN%%ey4IG6OKa(kriY!@X@WjArC`n^ZKwxf_s`x3* zWRASIh?_?a>w6YWhCR#rrw-{ZjY*!K;~Cq(wglf^Y|9dWV-*eLeKRYepNy(rV~2LT z+9(ed_Ap>q$c*;&rK!Ani`h8nHl6;N@hvv#E;lG3zVG&fsT;`M1heeRW#W(LOP;)F z>~fntJJSP@?nsC8`w(ah*Z&3CKqkKwO}E9fpy-i$Zxi+=>XqF;{r=m}Em*bxPJ9Op z5S`Snq_;nEO=6j5mJ}q3a37s^{S=BG*SS8&-=9L!=lJ2xbLoVlSMUFCYTz$Q1s$AQ zbALhrLvqwdGYo-N6NAGluvdk1zXp7I2>(tE`TZ80c3?te8NMC^f*924@nm($gcJ*S z^qA~LGhs`JFPnT%2jo0Vn9riNRzUs20{Z6{;VczsLaGZ#RDpH7$n3Q+xU&!EZXNz! z8-7=PPHht{g0)10Z5udkYmGXCf6502U>Wsl#&t!>s>Pw%>hoEKyEE&%(7sVpCxJ!` zk&c*|K9aDs@ik@>rtdnEC@5d>R540rB{QoV&qpS3B3Nw(5z6OQu(Y{|%`?lQ6uorr zGFB^RP|h!*m@A?{wP=>UpoF3^j1ed*9*Rsx6QJ8`qt<+g{YSro+iN4A%}GZ0Lar=I zQ9r}vI;6;qEAF7*X`tJzqFy_|*7gBDzO#p4e6ovQ->;$B3DIY!O2R*Ky_I%UD}EBVL*u6mo)hSlz+Hty_4w^$`vZ z?ji~sV;O$q4%$+4t?HZz@cB{&EQzPQ94?-J12=Dc8|&+rQOGaDb+Z@@+o&Es#=YBr zhtKc*1jDci>TGkFA&Qv{imro_2b4V*NJ;cH<&0T{?@i=a#U%R>IO!5&2R9xjZcjvXW(8>WnD6sb(~_O~4-kw8;}? z6^zFFD)zs!exW0|tcJG}jJiIu*_?n;U8rCpHLi#f^!LQyHN(VXgravp5h%L*@BuEL zTg91mT07`9#e)-7kE`#NdIRaTCo-m5|4(D7Ac?nvNJ8ap=)5R9Ba@)Z08b`fvWb)g zj52`|S8qi@%0&hRqv`{!9;X9I%4EXkB|N_;;q@}@NO*K8ov zk^9#FXUAPU%HN)b&(G5}eI?tZCml(3!dG$uzqON$dc9HolLfuegxW+s$Rd^T&@$H| zeZFa_Mk|W?fodDYTX}r)bA0IOZ|z2((F4a=StgIP)#-wY6)({aL*$uIsoNDOTB{S5Hc+n}N?3iT+m!`MSv(sp zpqT`FvN-JH>a{EQ?)ScpS6_P-S1w<|+Uf?1MJ9XXxItEpN8YFQa;E{5@=7KnM;P&8X8$fEs7HI=AhGgWjFjykTjIszdQ{o6>tHk&M(;+<8`r-Rm6&u02F zH&G~dVROPkWPW1WxUsJj{rT8J(WJ0m+kQ^)y;M*d+wIuD6N3fQHpgSIWO;0O!ma#6fx0O@|rk^=?o9qLc>NjkkF;{&^T%EZly|eLpVqD#i zc%SN6lH=3yuygfz)9V6BXnCZ5CJrXoF1ZKd#9Ve>F)AH9 zZkZBRZ}%PD?`UuyH)07|Fp8ubHyca5v7Bp-t|w-}&HBM96n&Da{+#S{3Pqoj2lb?v zDN51(f1{??BU69V*p3=FRW5R%>~;g7)54%u1$GYM-aEwLlPcU#50Trh3lz1Ujp-I} ze3eC^sf5pphbOb1)6dg*8#+S_n1IQ^o@P0R+QkKQuP(tkzl32qiy_r(>==4I45KbG zhb;_l9l-gdhU~*Cyk@ADk;$&rfT8pN%0gQWW3y^elZBix)F@j;x^E7cBkamCWL*;( zk+x_%s|pK37>3R>;ZG8l$hil+H%G#ssT373n)4;u6z`dex8A@(Hwe)TLzK_1qO!q6 zON)5v#cQ~F`5IP>>!{?HQOuQ4$Q3jTy+BbyZT+#~>P%|X>l2E$a8Q4Mt^2=(H|V06 z%Sp(7FEAJx(BG9-|aP4)X+ z*t~+XS6|2Z%P-)y8!zF-i)XRER7NT9AfNBU^%-Wzq&Mp4*kh8RFarHUJDn!NZVL$8 z=(nrr9&Vv^xQ*uij-31PK@*P-n%Jthu-j;>`j$SUP7bB=rYJa9R?Z6CCCCiI0JZuK z4r>okt3ESq*+xXPlEg%z7*o*8mQa-8^V@em!q5NyuTkCI#^v+t*jOz~ z@+ZDiI`}b3hs=bVpN$fOB@~!iajhbhFf;-^MVUNHRiez`%=$Alic$LZ_9Vd>Z%NHI zSceB0~FiJoquePo&m|xwVZHu@in=pI+OXK-u z4T}ebvCr4v{Or_I^hx`xFMGc<6yQ6NG}-^M&-XNrXS0$stc$ze(W~QeXDce@-O{(YRVwEncdA^6$wPk$sowxD!J8$9U%@=TX<18wbMNx~2Ws9cK z9D^B?##-qK>a=^D1vkG4_&jdkdCEM!P4bw@cID|q(fmZWOe+$YrGHF=hcVUQlpUv) z?f9|ARc`5ac$RnON$Z3_o+;OwRFF+N?$PUtsn3ymol>xl?>nx*oL;V4F4C$dAdh^S zhD2tBKR)6Zuaz9f=x}NRXifkot30)PC$Dd^Dl<;J8DE!;PEyc%gyo&!rIPcHwzqY~ zBn=%c?#1^t8vlOXpeQ5Q*!LQs9~YrU0H&ewG__~CuF8`VSE~g6O#Ceh(9!p5d8UzN zI&T!MJ4QCW5W|c%Pg(|0x@4^wrmTa%%p)p$a51)(JTrK zpBD=ODk?RjeWx3u-HT8@vx3rk1#9aIxN+k$u3x!^GfU^NR9ZthUq;T)!*jFnB~y5; z&QlXq^=6Iw0b1P}wh!)N=i!HN`yG_>c~Pg9a#VX1h&ERaUUDei4_iegp5k@?E@i^%6GL3s_vppitKA@t(_Y zZG}wCHcx0wRVRJUT8%2YjUDuwd+4_g(5daCad3$J{X;z5Z{TsQg~zoz_8T2^m|RP& z5tx0wfMRh8`TPR1eqMZ4X?h(5EwnpT`5pAbvB9COi*`^jHUJfss6tWSE8xx7{uFP# z_NT~a7bP(knX}Z5A?+WSh%CaRhd;*OegA)l6E=}^BIKODK+&@AqU5{cDN6fW*Q1qz zgP=D+hicJYAJwprn)r%32!A^%hxqLwq8RqkO`FB9ej6xCcv&fegu(Ea)%j+8$IG!rfO|muZtY@jdew$D4 zSw8kS6s6q=RiXjI=lg6^8FJ3{)GBD$pJ5Ao001BWNklB3mjzzdJ9EuTWo<6+h{`1Qn`SaUb%^P zzx^Iwd+ilmI(HGv%PS}pN+yJ!)AUm)`Yb`wTp@p?^4O}DW-XH-;52X|Z~cTSI}dQ4 zk$4W%T9X-c%C^}xg2C$d|91ljV zC6extz7LLv;)U6iAYcj^Zs`Gw3|kQA@5{tSUU2JcGissOD64E9Q3xlXUuOfTR^e6RT+wBmHJeb~z%sfw!W4#7hGI9>8@aS3UXC#9-GtU?D zRBdWfCq4!NhCvUVUWC$_B^1{xSXr&$;>Ar|yLt^*&tAi7WmA-*IZr)BEfgI+K6Y*d zkf7gbfJUc^t-agWee@9!HBrpxC4|0|FH6EEs#hd5MxbbjDBy&OQ1nos=*PGA@xezs z`0T*}f>6VfGe%wLLxbM=diTwp;+o^V?^}G11|L1=~xAqWOXMlWWfC3mk@1UGjC`v#`*vv}J*QCqr^YjyC7<~^CJ|7U$ zIWD|h7AwmuxOn*-UViyHE?zm0#U(=7k|td;NjYT5XxB2tfYh!^ce`DAhk`DjILhZBmJSl)swzPyl9IA9x+ncEPS}Jgh?-SIojUsMI);Rzhdao74i5Krq;F?i zStwNi*N5->(tkVRFYcn=Y{()4vL%#OH*oFcx8Ua&)dSNKl~X13$iuSsaopw0L zz|S&jLi-zS_cV&&Nq=|@0!_A!jb;OT`v-XRXdAox2P2hex1*u++@{@W3KTs&JQQe3 z&(U^Um7-j9VxPfdvh5p94w+;y@8kT1b9m>yZ{eHYd>c2eUd8&_2Fj%c39lFHBcU0| zsD<$glAc`7y60IC;W)tXMfQD?=PS> zROOaD*eocT24!|XJ#RAjcRnCGzW?<8Aqiyc_$4vB(Rq>-$#kHboCBp{rT%|YE)!It za{dY6bG+OPrAd6Kmo)vFG!)(}NT(LKj*QJxPkj7cj>DUin~m<%e3pU_iPN_sE9b4xPeVI3iaDgj& zi5vt;5UPKx^;hySq~H4_xa4=E>on?M+xOU7APcZOcFI$9QaL>-6dlc%6Op8LK4Ray z(L0~C7cxN9z9%vlJluO~|~>=8MBS7 zUm)aA8p46=qPtu~^vVVXZ=6N{!lH!Fs~?U7M-o5 zIzQ^G2TaE!^@PXuv#vl$rCL z3a*^FiuHvvC>Iux_Y25UJ;-D`)UBF^TkccTavJj73~JapxQoXRJ`fMgLXI#si%OCH zj|_ohq9+q3-3t%}O|+;KrKjj4Rf>N2$qpVosG;5MiJDbP$#LN2$|#mM@yfM7!gpT# zBiy{XjLnNa7M2;}?jn2lbtd!WV9doqfLK31r!nn*bbk`v zgrffvFTU`*@G@CZ#ANdfZFhB`Fo@u|4qElk@%=ylS7_{fCfVl&jKV?Q8=}laOBqeb zCGS)wBTB^pkYr2EsE|leXK^U3@pfXhuwXOn@~ajaw|%#jJXfNlDQQuP}m z3Rf|`>V*v8kKmE~D8#J9l(eXAQ-4Bf3o9AG1 zHL*1_^J=!OLAQgj-9*?p0K%47TzF0&`&;+nJADbG?}t=a_mL}>6pH5Z;$`e*^XdW3 zKB(0~uir!?=wt2TO}zNlcad>(vh*U8HES{Y+>L&In-?5IQL!)R5jHZBk=nk{r&>Jl z;_3fPm~z~evfZLDHG@uGJ3=wt%fuhVfU#%Vp^lmbdVXX!( zK5>77QQL0GLRvym=4D+hFE8PZx8B6Jzx^&=xp@<3&YZ*I;*wY}Xb3&m$#h|NG?7f+ z>5O-4+C+ZR=O@{ATKPQ*pg8VXq`!aOp{Tu|G{j5a=d7|!1DJH^Z+hP}C`&RuTOTJq z2Ze?vnqx|+?yTpR2HVO0;J9m4C^{WJ>hvT2e)8W6MU(e<q|zAt8WSK)2badp-OOK1)Sy_q*#Xt`m810a&-0#6tFx2t za~g1)_ZTN>YsSky9&{d8zmiaNEctw@Fl<@HU-YD~^=7W4EP$3y3BdvE7a z>7yP|vL*$uMocifjwO1`iFOk6JoWKy(&w9GE0)|N$t;rnn|)^WgWab#zCZchpYCze z5;%pTCoQq(Y=`U5zWU-bf@)xfY?gS%5l|Mo8M(LVf7 z_EFqzAw%_^$)-wJD2<0?tkxeM+h&taO4LVB--wiwu(Q*;N%~cG(u?bvR z1r~}JQpw5xq8^-92ZPV{G5q->IJfqZ-Dx4))9_Xb6D8r&lmSVyVWYBC6mVH42O{v% z4w?JPolr2_S70;ji6l*ZQ6*V|%|D@uWVnrZZjQoe6RTpJQf4&4R4&gjdLMcI%6SQ& zTmg=)b{DNEMCI%n7S1lCyimZ!i|e>_=>pEJoW~hvpf4^-q9rOt8G4_DqFV5(6b*V^ zG=n;JtM~BvXFo$fYM@*wBJ1WQgMG2UkUn~yWi{%a9%x}pvgwJh=hhx>-QK|`clPl4 zy&CF`0Fm6EF_3o)$QRe~^3^}W@4opT;+0ocarTOjg{2${We2W6(TrpxxAj4N93dg} zty&d_4{u@j?gxmPyXds)c(i+n{aPE351V+fSI2(6jShX!q;oc*3vl6r%3&>c33_&z zfm{cv@nC+wRb=CuAW$^xm+{s&{$srP+CN9JP=V(UkuPY*buP<_f;!X3;odEL|KI*A zbZd{{4hHZu^c8iGb%!Xq%sx+W9uM*)q?`5#Q6H`T0PTT;HhnKyFYui?P>Gau8)r@W%$FrtV9JFXf_T6MF<%#gYP39)sUW;vowd z&HJ2lb8vmlNKdN*8lZ>mLu}vv74HA~C-8<5Ru+q35y`R&LF1r5@*c8KRQ4B}3WcNg zJs}jeK-6BJhJ7*wRUs*rqx?GxsQ~RM=nVP-CG9m6m2-L|S>`3t(ok#*m;jAXl#k9P zVG@Ww21ONwQt>YSqUxxw+2_r>&1+`cAld8_;qx-!)Cz82KVo5%U}}iJe*e@{^jYa9 zzjjd6pf$cf-F6$jP6PdR4a2C7A;YU%bqshESA#qFlIP`>l!V z;&$6CBtKyx%DQkA2-K|A>e$)c$K%J_*rO8EKvBZbD4-2VPn4q7`k{D<5{eR}GT9Qr zsBJ%OsH7}snZ-i-iWZ7_T)%l8-}~-&@W!jJ;L@cl5<*`r7G=z&ktWA0MJL_rG;lEK z^OI~ltyoV2DxUDs;8}vACsm0i?>RkwKCbN2kZQcGovjp2EB?~$^sIC1cP7zLa?H;$ z`V19k`uSQQYUc+@8=&Nz!OU1jW2#y8WD@WhhcMHXqRHb5g5>yP!pX+Qf{C&A*#0A+ zrSIt^C~CJ)k0X=iGJg7TrRX#$n!e=mXE{(o&crb3Sou4x?Kln^&fDh93q_OLrR(Ih zIy(+Lk3PXkbvssynhD*MN@k&>)S?-De$w1vTD_II0_Xo`4lg+?rbKcfd5IGr{!%_asr%sSt|;FEo1ZXdwkX(7){@6J%XB?-P5 zCQd+S6RA+yWCw@9HPzc4O zFBZ-aj56GP1a?H3srQu(OST=P2>ci-#~^x9nPwyzO}>ytF;Ar^p{TC767bMdv>5~_ zom<7yxfPTv1)Mv-BAH(=Zd}6V(giFO7E$mEnhZx)@#4vr&4nRQwBJP|sAFsQHtyZ| z8PM;bkS`(c=TR;eQDCAb$ujP1avWyM4FhyKEz}!TY;W)3vwPdP_1Qii+^b=Czk#4< zz>hpf7oNX>YnOf>zx(#Tz*}!z!KE8HEG%VEsL=b9eyL_4N6Q0~`IsVPdPX*?huFUN zYdrk)eT0o2blM&4*4lWuUB!cg2KH)gG`pdw0&VtkNqj|+%}JPfPWm#KJe6ZmboMHK zJP1^8SU=-R$o%EY@8R9I|0UK}E+Jn4{DNlUl}9;r5%s$G;OBpVpZ&xC0XJ$PGw8$f zAX(_C7%gU86f%4-V!tSY;ehrE{efhh?=q{RyA0)XtEJeuxjAH_2(oUCCI05E$_#p z2W}2Gd*tzp-?A-bl^4WJcd|BY2&!`3H+GbGA zCG8deBS+Q-O6zPQVU$g@G!2T{iJ_|Mbn)Q(KRZ>5K5>WjCGYt4g`zzK?G^?>2T`jA zcNijUHf6D9f9F2@j3!!QGy@er#d1-i2^^R2a~^$gp{@wFHdGe|QAd&h)`J1gzx++C zU%Vb?v^Ep$FZt0t=Z71IqFh|2Qj{6!#j4q%Oe zV4qO5)kL?`Mvt~5y*_$jgig05P?RvVexOkN8wIPLL3>u6E@wxH-qCf-l_fSwg7Iu8(?1$OK> zV_qd!5;7e9`^lkbI)wblHJg)-Er`oPrP?ATf98R$_V{TiI$j?%!tOXIH|hIHuy~dl zR!6r_21Um~uP&_1t4aY(YHnoVkDM<7xTf7hGQn$dUlA~*RI=0FCDof+!GjeM#2&@7 zM(}9}f0Fn0xcjqZki3sHJWJm5yzj_pUYJO#70*K~RJ6XZBYDx(@;r%BbZYrXx&&j@ zFqV@*qsWraIe83uPmHS9j`2_O47lxaD$QxfJMMhyb3OTI5)`%1dC~&FaZt3jzjLY- zJ?VpgjN{5|gVw8&|3j znZ@19Agp*8oGSyDD{w9@!da`pDdi+ncc$CJV5foM?E|>Cs=!_oxlSK06KiLc|y@bE-NAR652c*q8mhLhJj?CUpTvh@7X{VV+F2mc10#;0(?j_m8Z4sz}gS?rROd~&9kC96yHz-D>sqI z{Y4GvGf>bfL~X|}enQDXt-MdV8cYbEb+fW)5VWhXX1l*xGMg%w-(yvgI$~A?esut~Z19>MI@=j%^fPKj` z#$(WPZ-{QxM^_Rv4Mg!xfGU~ng;eO^GYLgiZETwjh1wi=+VV_>&+ED3#4}R1wrv~6 zp=E#hlfQpzgQnB)`SD)z>jp(NR)bwQ6D+mS>$Wjua-V>UH9d4&hp6vAz_8Z>*vGRk z4tpq-7vWMJ>gO;Rx)^4B^lid5E<{8j++l=%CX0phFXH?QZ@>}gWhStvO3~Et>nIeZ zw{@@2Hj0geT9L#+=NL$I%;1h=Dz=MEnnk7P_Rbz2Z|~sXu!`xah)>1Awgp2fn# z0ty9edZ8gJHfplwkS z@Qg!I6?5qKM{TAi!JjlZwddB)6N#1*N|wBU9$rJ7Q>CxxO%fR_IE-fwL!jNku-S&w2;m%dG2CebyKQ9Tw}osogin0T6R0G0_sk*AxVee#9o=Xz^%BZ$?7d z2}Sw0Rk3kz`VaPvT8)087JTZF##f_c&|*CXjb~4C5FuWqzK2}aLm}s(RLF^^sPF4> z2!J|Nb@b>dx`KssD=01$u(`P;Q1tx9d90S!u*l5oS@oODGvShWf@<0)40Ej6&BPIW!ZtCD2W0YCS$zZF`_7-?4}R|*ym+ICl?4xe-i6~v(phGhWu0|_ zP>RgG*~Y#5xA2?y{~EiWe~hTzM6(lNyVkSFD@E(!wQNyY@X?xcm()ubn}m=)-dc*xkC1_ka9<;$Zhv z4Eu+0`XM~H$U0P-4v}-|FPcG?5K$Hg?7PB&hszR2$O$b!&t|c(v4#sTT*uWHZ({xI zMJy~Vs*;*@*@T;`2Pdn(Ld0~(JQ~ax?;jnY=>W&tItcLQdv1Ot;7m4(2U}@is_NW0 zo2e+OMHN0oFX-ZM`yQHG^i=Jmn57a*fwg*M=|m_)$k^`*EbLL)Der}zH})q|s4v&U z=P0Tr>ocnAReFpvaR}k4%|K5jDKpX2vO>H;O?G&~XXdve{OJT#l+sglAV8l`lv(Jl zGKy`E8vC>UNNqC-m&}AG5r!j+B#Pn{lGaH#cBfGE*ly`7+u-X4MQy>! z;z75CsMExt+rlskkQqh@yEPna-$$=qN3DLS;qQYXmKImxWsC501$ce|L)S+*jNmvv z9KJi91{|u1JP*s4UdG0i*VJ2VRO_E$2K1FZ<)?fi@f_}<-=j*@Sk4UTf1MpIm=2x( z$ZPzhS1WB#pWez5TAdCKt93ly*}?YKHmcQ{gvB%CJfl9?CyEtG*hRC^K#fqeQ5D4~ z!|XeqwzR1-&gpB^ka(%v1TTzsa5JbZRPe&h8~E;bzm0Fa@j5P;Ec6mW@6*?OJbXSm z)S3iI?Rz*4tjz*$qdshkS7~zMJPCMAoJ4<#p2AOCDVm0&^OWVZIyi6nNe`GR!)ZY6 z=($d|Krji4jzieEZ4wJCS=H5_QI3NN*E_46rhR9}P@0D-uJzN(E&2J;W9rz>DlOCX zT!&Ui+g+=q)iIQMg(f}axtm>p9>FYA7IqvYi}z;UrciQxJfmaEap0Of*7&{HXd%6W z(b&$8Jw!($lf3V-GM!LKr$NR^FMpT7aaS_8B>NT&i&R9Z?>1{o$T;kFKXOn6lGFj&rEu#yKB zazHT)WR15;H~{wAaJJeQ?zP}|ddNruAX&Rqby_b{|3}*qC;m=$x)zFNnFZd{#68yU zP_COHxDu`#iJzfOOl7)&u@aYtlQ1hWIEfov9+&>5o`lR7^F9hWUjQk~Onf>eLwSg9 ze~9v#Wh|awLB5>B=9y(&yK)ID3oBSGtzfybf(k?Evt<Y4T&Re$BjPHKFq? zU)Bk#Mm0=cnhgb>vRI>wGzzHAwq_tIYEd(AwK{8C{9koVP z5-l-=o>njK|Wu=g^TC$?zi8;I}D+}at*7i>nNAYVlBfcAv=ke zF;C(K(i6($By`$jbK2+0a+$TwJp0dktdrKwrwv65g~CZM`M0+HG%$Mf`6LAf779(i ztn|JH)uj@yYu~M=O7Tw;Vy4xr(+Xi4fQkDOyU05ZM$^Ze1nTU&pywF3pGa#s6k8ts z;d~>$#_=SZc5G~|i!9{Pv5yK>_^(1!O|YqOaxxT6KF{Pft={)dlv`r!*s~zKw?&(W_qRBD2jK(J_rpKY^ICwVpTM5`cM-hxRnN)9+pG|_I z@%dvhijAnU^L~2_{nyUP>}mCV8+oFd=o4EO(-sRRwZ*fxo%T-7^A5+)Lbp!WnIxPY zzt^MhH=|N()zj?rC#jdu+qS1r^m%(?C%j$>pZ}}>PJto4L%RbwogPpRF|2lh-7c`# zfxFj6widt(n0Sey(neNqLg?675Qs8dUP8i|$(BikeD%pB7!@c(wIzKGO{i&az;M$^iy(J?!8-vtH*55t8lP|2!7l*EZrGj2Mbq!RYu9Wz>LbCL(QYjS0L> zOu^$5genxxiod9+YfZ-cFzll{7@&N12}|c!kt_PxIJ1lk7tdm$R6)5|!Rq1$Rx2B* z6qZo(OUQB{V^RVW*z`oD5{ai+5JjT8JlO9d=V-Qjs$mIY`P?*~pzjJHCzUr&K8Mo!I?i0bf%Dg2z~cHQd_OOPQ%zps3V4fG z_-&%4co1dlaC(rUgZ*(8s7++lr)RLf5N7ZagHt_@0zjK|i5uDENHTzs-BeM;#9X~j z9sN!dPRQ`wE;673iV)b`tAXJ<=p3kmyVu2lYH^coKDjb0?Fv2W5{d}!s|njw?MlTd zJ$~cK{6N%B{GRZX^^CxjO5;wqClJ09s#=s#RNrg0tB^V&i!u7SfLNoVkZL|!t#{Dl zHYVI&eMbp5bRovRf62NgDpUY}c?v~O*h~HPHlO5SHE9C)+q;4<^T@H{nri8GvyPp| zpX0MnevJ=)@l!nf{1J9{w$W--Q7RVk+M91#gc|tR@(A(skQd38Z zv9kLF_%sVF#Q;gY7pEN~S#Q$k7(c#x^Nt`*s=`fzqE?fqeOMe8uVX6(r1}nXexu1` zIi^ekQBjDS_uM9fo7N{$dZyz) zGtV&3-_F~T+oqMb$#!b=yi)ZiU54{QQ7vOzj`OxUN4J~wY{u@%syOX(rx_3HbtXZ- zZfMIl>E~&mnH6EE$U(1Niq_;+ILTd{v@M=z`+2sRRBzJz9eIBTL)2^gPt6|dB;|U# z?UR+jDHMIOa(iy}5-9qw|7!`qa=JaB(+8S;pdKM}7{J}@z@bvK5r}ta#sE>FAqhyp z#zFv&gc~!2p6WxwzC7}|tUwbg?@ae6|B8ZZKrlg25u(lPr~)Az3|xpGXpc%!Leabj z6g>r^zAK8u5hw}!aGD`9^$<=ggiC;C1{2a98z@TksNH7_h?#H_+i4Ms=5m?^o^Vf9 zUdB(<3@$inV8W$|1E(oZe^Ns%5SE^zS@jgn6N-wWP&*#_9(MYDRL(77VRIR7E`yb| z1)RHh2Bl&F}{SI!PKaZ8A5?n7U%Duz-0q)%T0H6H)2WULHE#c>qIXUW~*$&VSnV^Enfix?n zCIOEpTgicjRf-D4OAJbn8-OPtmmJT)KKg=65+{0n8r3N4up|%j7z)m7(R4hF$f8vP z{dfg{W|(NnL5>Rr4v=#lStRg%^^z3`O%-*Pu+W27E@SD!MQmKXf%OZQQC?h;L`DR2 z0zxJ9K3<8ngVp4~Z&GN7HAUBb;|YLGuB88};@J-Lk}IQDU1}8s{LW^LA8jXUQcnzgD57389QV?N~m55 zN5#@YJ!g50FbD;dN+>9mp%Pl(M>puB(FxJ)M(9SWBDIQA2~#uICHE^ZLkFb1UfMm# zbxTwEtJUU=i%pvv8}#Lvp(d^WEm0Y&L6Dynm7+PHYgzFsYZEJQr%O-Or0 zOOa5OqRcqIwY81i-91UV)M_de?HQ%0hR}D=Zne;AG*GP_iVrEn=Uc7D7!(yxWof6i zPiJHh`$Ude7M2$9;wv}tz3;w@S6+Sv=g(in^71kYg(9+Ec5bC;y8oSY|MN^@kK5+B z@8`LWlRg`6|4#*q&NI%Mw#_U!I05gBeRTA>PSQ_WkTZTXn_$QSs$_)9v}ZjT{OQ&f z@J#|L>Ep!^Rj>ExamN*!V`^)2ut}fUV_7K5g>M@vCJ89To8E=*XXTgYO@@PWq1leL zl4GtUq#TE2@%2wGo1;)P`Mfph=eUA*93aNy-Z9WQ!SWzkj>+;q4shFTlaP0O9Gpr7 zJO&KM0eTvWPOC356pgRc-nTwGjhvbUPt(_ST)Q;w8jgdaBVTD5zgrNh`4?fyi3eipv!$uEIEkdRmB2VRIgOH=A8QhI8r_Bf0GmWDKG8`~#xUnnY z!UT6zKoSfQ0`VvI;iISIKonP|r0Ou|Vwm&bWIY-_nt{4r z&#*TXpqpuj$OL_OqmhE?StKQO&xHD#!HX#wK{UpfQ3e1;nU=L#-~}uyfFUHI%2gF; z8fIcU(e%K~uGr3c03(p>xuV!)_&gyc?FV>GG`psHtrPW7IlG9`>H-`;gUV6~XD@D| zR4!m~p@Pes7jS<0JSuth7R~#)g!0dX024k(Av$4*Mr(jZmGF+|^A%$IgrijD$?Qxg zSwR<_PE!)tv|1q!s~tRev@KBd?q?t4_MHzAcAE(cf%Iyku>qh5reDFvrB`wG%8OV( za|We+9#PoE{@&-umuO{1Pp_ym=U0wC^GlVvV{8#S(itnsk< zlMK40J`9J#-4%*z2t7mT2}&6mD9M>zA%#as4a`MYT1siF)inb_6+@n8;)fwP0uT4vq#M zaduH#>+K-L4t7)_piqq`9=-(5-W))R#=70O(2;IZU-OnAQr)oXbt4cslnrZP@LLkUGqSbY#m zBBrPtib|BAz0>KT(F)NJD9Qv(+%FE#lQ4P{B5y4|EF9&#*dH+AnzjRxsNJ=(;b&S0 zjV?l7BkM=1pG%#@5P$KrA3wE~kFmG2 zi{+(dtSm0UV{}CnpuT+{pWnTO!s0r9@RJX4`_5e~RLWRiS;zIO7jX8{Wdxam_`YpL%}F>MMCbNhnISsQ6-Y=)(4y{jT?gp(xuv zF8nlGZR{Q#;PKX$KvD4uZ8S~hd2Ls9+pZ`@89raHtEVWHqD?~44n0SWa$lgRff6PF znGqARkXtO^;?)bH6#d4VZ{W(6Ygk)bN2yps)-R0KtYwlpp`a&0%HzQ0m$lD4&pmyv zlY$6)j;9Sp>GL`du(Xr?C`^C$#%%Xkr+GNqf&Sw%4HT;a$S$yX;vWD%B`ohOh zl=dCEw_W(=cFBIw!q6CsN=+HFGqv_kahZ(c+OcFwi3Makx6;|39ybobPCpA3d5qr6 zL`eH_?Z#MnB^97k!llztEIrpqe?Ms)Vb3|Ko=$&vOtR5YCiYlqnf4U5&nQ{PlGm98 z$mzN|=^dwvQy+om+pyQD$Fa|b{~lFpr;o4GvH0DRV@X8BWGjaB^-Oy&()T>=-si0k zN9OG*kKSq5VHXjS*KO^@PQ&MC^&rpxcc)PF`G1Bp??9mF|L~tvk|{vcY4Tzb;J}veg;Edfv7gzgIKynZ&QZ;hdoh=+ANWBee?*V%Frkc)5hf1 zf5$fJ0>C_~HBC6Vz**ygN{>Plf)bfb*rU#H!eAviBujQs_U{oCb$LEbxFo+Oq?*@C z*b?^o$gdPpTCKq0wH32iIkSSLwMDFNtl-+YOE|xDRuV2{Jtk|)!xK-hc#uIwTqg=~ z*leMC5Tf5^ru&?nkC0C8*He`*e+ZUZoi^HSszrNfcYCPTI{5s-7H-|TjXSq~i3blq z!Eg|W%1C^NY}ko`LsDO)qcy)?0h#hL3Z+#P3qFQ}Q2g$q<^eK;NK|)ncE@@_azLk# zS_exOjg7C`PMf@pI&~ZBk$4kkb($86vM8t$l@NL+N|Izr8XC^v5HRS$ z9S)ImGLmtg3elXGLBZ!U&cM$?5^3?B;Kb6)`*16ZC~Ta?^7%_x-n@YF(kgP(jd-4I=d&UYd-TahI3>QX^!7CAIT)FdR3BxPoj zAOKXe({ll+*JpVTMcpp#l7Y5%oX;9;G$~qV4G>5QA^zW={lh5~eMb7#uOk#?y^DI0 zWD=LjujeD^hUj!#=(n5b>_5czqkGssXyO0<%O8mPd2MY8D~pSG>y1~icK#yvnzT0Q zq0?+5VAKCl67SKoiX-UGABwf0$1%~ zj{8a9pPonlckI18?j1VrJhPzav^GfkvqWT_J%fuc^QFHqEJ_mF9Hk!wYgv`9!mqJb8b!^maIsParZC(Sn%bR&hG zi@filkk6u6$RU@{3)m2tA=&8F`n>04(2RO$bi1gv+hE3M+mlc^8c{7ODlvM5D(DoN z+T-6t3F~*M)-q}=S!X3s>-8o3ypd{+!sn&awITKD=x%mIB_hqs(Oa5&K zS+?UEU6J*4o#SmxLs5^{#gIV(48{|bq40!`GG{bq;*vmPNT)b3crfocVtvc{U&`~@ zX28csg=oIOXXGKrY`x2CD4x5BrE{0Cu)Kj%c|pCNM2QvGBJrOyN=epJNv360%w~08 z2e~?+79UT^4zH71H6PHw?BHD|)O}ez=o@t=Ukt0*wZ&z(Clu8IO9rmz>-miWfyvAU zy-?n1xlReUsMqzEA@uD|R~D1FSf)LOU5M7d zx#-O(1wWU?(#ir}f9)lF=R5D=)mL7{xpU{SxVS74E38+iQ1sadpPvUZ9$(YG*cMNE z4YT0H@mG`va-$YfM?whzHVcaCIP9o$^NT=HdwzQlM`4jUUjlwwfGKaH+Mkd8BSg-cCV@XqifWeC6LaolVpUsjCS6l{ zUNrYJqq5UJ7o!v%ua|N7d>V?TZM(D#R7gRkvRs3_c2q*>oYa=nwC6Poc1|kC>F?0& z7Ge?i+>X(Nr`hL^ZZZH>-ETIj)qMWN)ZrR#h8GRULTPF8nRfzAx)T|A+!mNm<4d-ORM8gBawJX z6ttpFWpXN;tSSaQ1TS8}M|outej%%BS(j<;fy&ww8T7@^vx$1UB`}GL=KH{3!;5K+0SBwOtL>n!pL43OxHJ8&9mLv=b{Gz-a<5W@T6F1$`C* zH*E;KC}tVvtmQ4LWvOJ7EBK@iRXQ*O!AC%C%KIVpR@9JmM|y8F7FF~&gQeomdfx}&!BSt3YIp{qq4A! zY>wW4zJSGe5NrmCqKss{)$+Dk(`~r9EI7!EpvjpOlImiDlneJY@2VXDTVE~0O@)tY zv_EZtXa~`DFhqE%3Qc-~5{eGt$>2vH69F!dO>f_RuZ#bmy*G`KEX&TrzKD3SM@BBS zuf6y5-aWlc_v}LrhqQ*4DN2yY9})yXqGSs&BtepY`HyW$7|4bx5|#uJlx2Z7WO)$; z1Nui9hPaFtisB5XIZN-|Rb5N&8S9G|i}9UvPrMs1Uu;=bomI`uMs{XpyyfoqobP_; zJBV69_WewLu}{awz2* z^g>}#5#VpNLSc&XXPazMhS2liLBIk9X;~J@Jm2SMPWQOqXC6A$_@%7FV2IvmBtMrZB%gx5m3ke>m$828>^Ri%Bz%5$FB#K*Fo-Z5giaDf*DxLwQdg8&=v|P;vRyuAe+nqt zXyf+w4zAs}fvv4A9PIO8v#GX}Bw0~uoPHFd!^j-b6g|-F^9Orq5ESL1G_{!BVU#3N zl(m);G2BA*&?}$Mqqb7TV^2JSFMQ#15<-9V@>QH#KZSC+Dq7jLHYX!=V&>5#Xyp`P z4x>GZR+;8Z`}@`+0LdcP9M$2r`;I$&zEmnrwB90hUKGGgf`a~wW&uRWK|b$&vp%0! zpV?-(+6l33aah|ke*WPM?D|dw$vd zHj${Z4K7GMcUm(xcVW=n1$brp+6)T(7vYZVj<1!VF8vO=8;1RRYr zKr|Ym8FsOIu#ZNwiGH_-p=6WKDGSt2J;{Rc08u@SvJ)s(E!F*ELKY&2$I_m~)yb1YZS6b6bZ4JpBzRxd{6U zE%zcxx+6?PYK-Ls92Dn6h_NH&$SzzdqgX2=N0CZGzhtQez@^78;+0pP#!HVrh07Zc zpcXaF_&memyR8Ep zH1;IqI0~sP8i}sx?XBB*^Y_1lciw&zy>7!}hB}=`XAnwQpsrP`sNV+XylrsqvnQ}d}+aVf_E*eb&r2}+& zk+MA%&q%+YM*sjI07*naR2FuwtQvi?!>M=dK+%YaOsGrBdj_%&_?n{9R+`&v%s{s! zO_GC3S4erszxa2*b!p$hE64>F>aHycD9QwFJoPjXN83EvuD{|~D<0*PtfJ`(;5L-dfo7mjm z5+-PeiI$?st;_1LM+8NwDcWdYf3G3?{r>)*FhvQLO42%ak2%7+{yWV(9$*H6=!#x` z=psJ%`YU+t<(Ki;qmSUs>9eR-R}kb1D)*8SrJ-k2c(Vb zWV^-x=6H@XtjFWm*3QF|{_r@SWKYfnMaSS!9G0G}zkk1hph+Oi+Q+Y#{vNYO{cH3y zrz`JAIVF4mA9VH0;kUm5wv**PoKs-px;dce;d)GJXQq9w>(M0mnC9E1`FP3kCH?M^ z9TuBsP9kc2VidQC9fI0lto_D>g%nWK+CEt}za5ifV{#s+C&lu|j@kVFJH(foAbMoU zW1i^V!T-T*-~M6NePmisB0m+pj976zA4B)KU0Ix?oyX-rXqnIvQua)BgWs@LnN zR4WL|1>{N$2M>_R1sIBcC=d?%k`RdE|NA@p7=%4!n2Mg@Pk(^HkfPztR_(M;$Qbob zWCd6m^%3Nl>?wnCDTh3nYYca#)?hS3G*tE}tCY_W>{7r>*$reZYSwSob1;k~YkRMs z5tbN3(Ixb4V#A3~?G{;pZS&$!0$c(j<@inDNQKaqt>~NsmW`R|*=7O3Q`K`M2vuDT z@P*Gmg|B_?RXld}S=7p_3j883pf>s~px;2Jy@|Kq|31F+{rB+p2O&^6kM+}+arV@C zR4O$D`7ENaiEd{f?N$T5P9G5gpfE(M+r^DrxA68mKg8bdmgp)46ssF2?-{(;>B5lpQ{^K zx%3Fu&Oe0m$~toSf{a0C@69=YT#c1UP*hKlElH4r+=fgv#1PF$0O@?5nz01P>2Nzi zeWyU7EK>`oR4~;TO$0>=q9lzRGd|3C;?J?eFCqAxo9cW^dr(3{bVn5&Cx9CSWWdVH zk?D686m9RL-`dA8YzrVO##4^YG+Ewc29GdcXubmzw7o5TJ&jBrAUOW317OXFleJ3# zA%=`bl3BUc4$*8fiI~ekPZpJ)m53aI0Hg$)9SfY`D0O|iy*@e&!;kv%JC!?lU_pRh z#+=OM_~^(OF)zWwVbpy-`%U3cXPpEgj`-+Lyr2#x0vr#|yE&YeAvm6a6~^QD=fsCF?AlpVk+5+)AB8SBs~_%e3bQ^1v^<2-Hu zPjj9ZvDNJPX`sin&-^m|K?OyvZ5IQ67Mt*kJZn}zCEt<;4Ec6Wa?H#ElFa7t-x0R~ zZCYP9Q*FjrH*+~qbRI}!pZo9h>*D)wNq{d2M*962*I(zQtqb<|_*pSiG}-1!;5GSg z^Npr~qDk;>QBZW+cpU%TBVt&YljAK}&tw_X0LPe#>{dMISDJ63v4JZsuL$$61> zU9uef_ukg6W3%t?X8li|mEHm;py;Q3WJvh@SAR@^s$A4Zu1|eVhNhbq=ivq*GtK}J z%MPGMyqyy2N+(HbXy`j*oWGWfB~+^w3A-v*OURc?3W^4K#@S++WyX0;Xu=S#{oOt6 zZ|)%MhRBgU;4}~=n8BBal@>AyZJz$AB7{nm&gBDRp_s5^Hq_XfbPbU$aotnTfL|9vu|54MkWz zjvYuAhA=1zj`DB0tgs6OKqaFzpBLnjEV@cL!WUn?j6d>+zJNy_eg^r%x&UFS`#J#n zZDjfpFzn#w&WHGqzyB6~=X;yDz0;Qr!ugXjN=J|Ys%a=l$Mbz~)MUIczr z!odmQlg(^~i?$1=m7H3LVJ)CzU)ep~ZkwrAkj)k(j4{uo7XpkbTUuJ(0ncm?IbiUF z!!-juLvPJ+j}HJ?4jHd5Jj&RnVq_6y6=0OCRn-$RonB#}Vkit)VG>JNJ=dBLqfP@+ zo4R)dNn03p8VcU<*n+1i1Sbusb$X^+He<7z%z$I0dP3*|?z+tMmVBuz%xAKvnT45P zDFIHGan&7mX!cD78Rx=<6D?tswOH7sB!x`*$?S2brk;T zZ=Qgn_sh2WX#_=WZjTw$j;SY%@py*|)rG;w;Rgm3)B7tw7s5af#(ActCgRoA2Yr6cd-a#+@9l_!Z*QbvGLT^qQL zP%oN^^!%?yfl&oTx$Z~UZ!~dxa~s!%DXO4oyVX)z6JhIXkI`-*@Y!m$u)nvXnxgyr zXttUHic)SwHECT$iaP+dgC71ip84T|2&@Oi)f zX@KP-Am*Y|_ijGR-Z>5Av~e`ehBQ0UY*hbwX>Af8DyW~NHos|R#sQDVc{U;^z!sgRhhW_<_n^}~S$~dXKmDa(MB^}-&(m>BNTa$kqlR~^k z^{e1P`x&3qbD@((jX(vBY+-aca6)WV z4RPlp$;31U;23|3A=>2bphiy^WK7B;;o>8PVdt?K)^lT25Po5M5ri3y1oZv#OK0%YUwauBFI+{o zutpl9idu`l>Hygx+jfZU#x4Bz@4boN`R)yTbhC+0*pm>3EQS(pO(q{%ib@Jrc4oU1 zVsm>B+dHZ;s(>ZidL%4cW$tMhD#0Ldp&f~-ABcB9Nj)9#_8=07*hVDSy3u~9W;O3CMB{dxA>I0L<7^0NI^ejzJi z@&rl=n3kxWOIBzphgy+ZqGT!uC>F?+&WWBbSq#^kVil!T{ zngEQSnFgMP=^7|%j}r;LCu~3n}f(DQzGqCTSeZX zpeV<&GLw5`hlZN5p7%5CUi3)&nutk&QDK=ni4QNhm`3dwu+QKG6umcF+0svq9Tpu& z_LWd$So*p5!wutc=!Gr|5r%Vp5K6+I|LGTh37a3^l!J_1A&-ma&*SCio<_E`f}MT= z-QE!GRvTyPWqkc7zKp2TM6OW8V3b9O1Nd zi#(7-sb~ZUzmjrAX|=QGbA4kXxr0Ue12i>6`C^-dT=7@%A&;<3jc#phmo6)(T^A|AT( z5Y{)=Q7)F{V9)lNNxR2sj5|?b1?ET}zheSii z>y1Sg#R+G1eTeNZzg_&c_WwS%#l7S^$?@r5W1l6Tq1UKp<+QJv<1!H*?>{3sPWV}} z?bF6*vd;3%#9>Za-TXe$(4|Sq0R7zgi>{#7_Et6yf&87 z^Xng%%h%;S%oJT@4$oU}@AUJuaWbu3X@5TnpTE-{xWDf|0Y&fc{<-7Q(P(<+rPnpr ziQp8GRJ;ASh9@T0U^^Fx&>MO`sipVh2 zyD%ah3(|$(G7%3CJNI_>u(QMPt_}u~0v%DWi~gV|;jv_{6&MB|WboLz3Z8$ehL@ka ziYFg?3~L*wkuR=@ZWmc!H@B|ihws0O?|%Ol-u(U!KE8E;;eZ*&ssETkwUR?FGf+KM zGVla!BEXkHyEnpiqlZ?H4ujjQT#%W$)qcCAZLWtGQe)(~(^c1Q5}r-%Ndkr9FsUA- zeF-p?%i!Eb5kL0IIsB0?KaET0E+H4xG0YV(qE@PS_&i;QE$b8I&!0jcup0um9t z?2UllaD>q5UfRZJn~sGJu}YF`ihb|cvQ|qoez?^}L)CI52q%U?nvl8I;AtC{-#61( zPVqQ*ZkYpqIWGhp3`pcG)o_~|^Np`Sh zq!$M~);#6h=fQ=oEo6H~y->zCL2=2K%6Z*wU=%hm>g;34tl0!eCAXLY)?-E3Ns@(@ z&1GC=dkLeQOwc}M1qK>s+UpC**^_ld>q4fe8H=Ll>q1z0J(;AUCn`TV1__YrPZ^KH zk%ZUt;DiSP5{f@DK9w1)A@oE1@4xjM$Lb_M{P4qfyl;FO9$;fQsVVwt14V7!P~549 zVZV!Bzl&e^@BasE-`tWzi+rhwv!_qvnI|4YP+3JgTSGL=i0t8}Y?8sWu zi-stcE1stG314)UBd%+#f}+CQ;_0qqiwaIH^5+^tf9UXQP8hw7;Xaw7V^Eag^S7|M zy)BV8tyWXkSoRY47m)@bC>n-nw_5_5@)|NnRZElyQL%2I>_-Af@}yYTUfFx)Fo?Rf zz?rkB@Y3_o;>8!9#lu&wVExnvYLw)Wh?lhS;k2Wr;ndDzbP}Trc$&upS^d)Y@}OKK zQcNG)h1C1)KDJBe*Z{NEu6yB>-_M}vymfpQkm=i@X?E_sXQ%buv}exyyRC8a-f8xq z4?M;8=wu=#e=PW*lXynnVbe5VZvrTDb8aZ}Mdh&sxDp+u*q$OB&h*=#_ZawTzx%emF(uQ0Lm!;8x+YnZX?08Xg>MVTZFUEss5a7} zW*-B49-B5f*2Dz$WSge-&3HU`5m?j4t=}(`eHW7wrp+IJJo;nM+R5zqX>-LNgVTJd zw0G;Zi-DqAhQmzJMaH#17MHnx-r6v0jhXhIw7;K#qKmflgL&NvDEeUb+rp(LDEjR4 zuWGhA<6ikjtha#sK$X7jrZ4I*v@{3`g#guh4fTz66l)danJqoXjOjTs zq_Y9<4TQ-hI-=n~w66~K8wfigh6FSiVmpYC8AZqpA~09{daZ~zo?FA~uRMwuo_iMc z)$_>YYZzvV$YzSdPV0}_xV8Nee()AEsegdq``%6L?smm-AuzL2Bb!YDCdt&w@BRoO z9f?5}oBJX5T7AGmnnedoPw!?KXa43kv8mWU9QY(jbZ9Giq4d<+lw?FMOx>QvzirgB zc;nd({PfqJ#b+LQ1VK-`1!JeK1N(5I`Cvt$?h)m!N$~lIRYd?#8ijrMR4{|`~GAN_8dKxR2AI9q0 zD=1giQOFfFt9+0Z2aq6r9G(?tqSv{^e`|jj$xYZbLjr#U{Fq(6gmPmd7?o&))b||tD2&|aT~K6lxb?8$+!@PkLy(@qd~`8fm;1L!AY_{wQd9*btK5# z9t{-u&jtb}3dlO_iRLJnF*|Hw6txg_Lt$Bw(JluTOc15?%tP}o>W5NJvdZ}m0>v6; zIut;Z;3iq1^clnn$STW092Rj_6x|%~@P*9uh-^^>;iqOk)%0z@i<e{d z`+CIWb0NZRTbQH-N&At8^>b5ExfMOAmT%ELS76c{Ymvwq^|4m3;mOAy##2u`iYu4T zV|{&9Kv5oo%>xN!e2V-EC6RgpiYl1nGM+h5RDn^Ji9qXQf+pYY@|$Z}r+L}y7Z?IK zZcwyXEKU@2Rvi}sLH&oNUBB!z7HLCXGw-=R7&Hsu5KGkQsr%1O0+LC4eGHI!;8_wt z@&Tub^16dzkrZ;WVsbc5#veh^1kjph%WC~%yKP#V`2CyAK5ymqqlIGkW48Zd@AE;? zWcwvQOZLMwP}B!TlR#dYPnFj0%Q8ii;GhpgrhPVTocf?BpJ8pAoM%43n*40qoE+QW zw3vki5g#yFL{zf>ti6)s*PkD0b7@+crqv_;y)q)kq=~fo6+iFjnxe_)F1m&+a@`_r zlU8^8+X*PTNGm_M*PMW&4{qNrRC0o%&p-F-nAWdRsgo!B_BWrUXq%E8=sWQ%Sxh{A zPvHW%kZ-$}27qmVd1mEaUBT+c8Y(MlKnHopA|vRO%^}OvB!;L`!!KkuTqXkQFvE$k zTC<}bG6YZvmW=v%_(C0Ded7#Xf9+*ly!14(!3u_CM~D$ky+&m{^!iO)yZ$}=;QQal z@BW7m@zJ#wdIUfQeF=A_rlDw-_7yx~I5$ihL%6S|x+0u2%4k&p(DQz4|=r)pg{v zRb+yautgctJ{U!4b`S98TW{mrzx{o@_u)Q1-sxhm(LuME7{cVu(|U54HFhv@Xluq8lb`bL^_Ha2t=9Mhy+D!IUr zbO~YhG;TCO7Bid^cy&OS8>iEZ<)eb4I&rie^h*s_W@)yNdeP=|4A)YS6>zjvQ0a!X zavtlI0IOvMMr)MjnMc^_JQ<8#?r|8Q%VAM}G zp+=Vh%8td&s7UHM5s(w64YN$Q(P|w?sBDp1zO_{ZL0Q7jX^`7IRF-HAg3^#yCtg8K zVJN%nt>2XWscar)sKy|&`{M*)DVgbeJ+WIyH13=xogBnSVl%B1^=irLBvYA(9HV{@ zgD6C9(3K4J{azQK;~a$;_VjNAN?8VDk8)l}9SFn{kR@O#&+WSd4xP_Kc7{0_rrS#} z!1P)jh$=uQ$FXCE3Md*zi25S|MWew;0MamW8S4iF0Z1cB96|@ow5rtk`9J^72~%{T z&FLOrq)t#g$JJpYNd6!*AC=)}4xTwxB2&zH!F>`vbUR)At^f9KqTA;D8Hfzdh4W|e zl`p-4C{x0%eTFaRu(!XDOBYx1^{>8x#{M3v^)=)QB?N&3Mcv+ZkGtxDeY_767<*o1 zas(805f2$gS8&JCgJA*uM7KGH_onHKT0c|br_&83G1kqkZCt;38=IRu*xNHuluUa@ zI!GEp+0*6ltjB$oGDO^4oqnAIL|GPsp`vXa1oBhD;cf4r#ES&b4^S-Tapl4}JbdK> zE}YxITD>YVNwn!GHItGTF_s!pT_ic+rmpmm`sboRO`}Lb&|JQV9Fq?UYn8yU>T27* z=nRU9L)X~GSbX^WK>$Vl)|dx)%xXE`?urjy=7X1u_eOkW@?B|lSQHfX*G3=wN^1+h zUj94%znh&p_K93LzS>4^?-wZwCTOMXkjE5tbKT061ZM3S@jFyocixxPCCL=EIT0VW z9}Wed*XOpT`5>{C&p%vG+T}h-mu$0nplEU~`)wV!*=(lhw0ikqsNddp{WSj~IUbUl zq{%YMvuA+cljBe2(p0V_?jyghMmk6v_sM!J3c^}DPaF5M#)iHlPRy*oA7&|!$0m>I zmN2!J@$=@*k9lJ}`T4YcA#Ke#*x5Wb(!-t9`{drmTHpi}U96oR*sBPNzVQ5OV*o0- z@T6_hws86e#kc`n7G?vKY;k4Sv3!X(rv6TFCSS~>R$svyHK;0O zBordJ5lLczZkwPe^(=v6rjLL*>qVTaix-|)$B%vC3SNBqHLR>ZieaXrVwMC$GkMjV z$>cB?hS=VD8*lyaJ9zVV-@#jN?;slG(G9zrC`A}|swF7E=#W6<2<<*_s}Z8vr8^KP z5Jje_%fc=j7y&EsVw~<4jii}6STT4!-uxW{P=L`4L+3RsJ;5S1N(f@9mLfBpUp!U9 z^G|NzYhQQ@&piGR)~o9Xauv}P?PGv;)W!QB-^9QF-5=tIKe~mj?GU&3LNr<(^g;qg z45=gQ&qUx|e|g}SXlN2zW`dzCG`qTd^WUn0$#x0{BXkBMw4)K)k};m_T&F?gGP|cu z7*?6jQ4Q4?v=cCknv%jwS$?V=Ix$TcCdtnay}=6~SHs5x`>Cs%WwI&*MRVAw=CM)9 zW35uaO1Xe)xqzUciKrwjF_T5UwvLtaS8?j0$53B8jRLd8JExQL!Vj0Xwvag^4ylH} zCk=Bex3*Oe{iugdtASQ?Uy^iHYIPKgE64{$7uIN@@XG2`CZ)i5<4|+H!|w|^(gI>j ze=EDv$|B{F31F;I_it)yQPWe{-O9$~Pt(nnWkGfx&Xtt1SSL{0p5^`sw8gq_Z{J9rRQ69H#8 z=8bhbWKuQBUf*+B=n0DUM|CQB0Lbn^@pqR92ga7~_ z07*naRN2O@%`IHJaZ9q$lPTJ09H7_d;W0r`J!lqYCiiPbUpT1~WrwOPizWG^HezI&`%j~emUp*0aFHSvb>9o`*iQzP7L%q^06e$hFCxyYcGH7oG?Z2W^deo&pH7`@4r5|t0kh7{Nf9r zn`%r>+cc*xrU_8g3M-(fV?vHMH~|lVARnN*QbT=h6{T`XfeD86apNX4z_A+$mULRo zj2enAS1Fr8F*`sYY*EtiI(Y55Gx*Bu58=5NUqiY62!>e#gF|JAW(s45U4PWY_V(L& z_wDcChu?c2Kl;%Yq9Kz@^aT76y)1^y_abGNNeDgAqNZp&LNgp9OHkA$98m92jVIj% z3>;GD!(yD1r+Rj}raG=MU@V4|d7MtWRHDh$TpMe*sLmp=QVww8bQw=PvWDlMe+Z90 zavmG&YbX|3rva|r*uf9px`wyk+r-vZh`s%uutdoeVKN%aG^>nWFL8}y|I#xPJxu@w zf})ubiuoMM4iqI|D@@V;5M44vhd{eOLW`lx1A?Vw#TaRJx+|^90gjpJWf8YcM+5Me z`${!-JWZ%Y3=drP(-z| zDhZwF=xQc;&0KHw({T`I9kvi1Gome1y)u>+-1LoMakkxIfH=a=`8K295Bc$pVq>xi z03P+7cJ4^RKKWHDl?7}i(Cdy$Fbq5BH4iZA9$*wUG3d51phGS5RYTeU-nDd8oZmc% zAh6$UVc6b7V`m3{_wW6(9Ei!b9OQ9&eHCB&!mAjSR&nbsgqfO7(h&hM`YP}C(Z%1QD$YL*ieCC^d;Q9UnXyXM`&*D|0eL=%*t=uLv6 zAK#J?`kn0^wA#!*Plj*?dD9tp;>U7O=cH(SxgJ>y36ACq$QK+aS}e*Qk}pyYrXXu( zK2NEmKn~ril_J(xDyUbBsFZS|p)FEKE-@!t%in9|cacF+RzDBA`n{HdqLSg5_FsTp zp^PjK4fA9uyJ#O@)`^MtTvwccqLX8CUZSN%0Gw%~{3!Px<(`QZIz{&}S-v#j(!ekO zXVSM(Ng_Ke^ACGXp+{{onDw|s&=%W^@!^~A1NeaHtkq;pBsm0TPJ(L5XCy(< zqXMG7jW?}+N$@vmcbhHi|J?^M(*e!thyT<1{qP!aZ$Z)Ix;B4Th_5gSv1RV@$JCrMHd~35B_y0py-3&hcjzHqv@p= zU!SS_pT6)4Ss#-w~m1+gG+KK>qe3pdy3Okb8 zi8*14iUwA%Cr(8%I}%W|AZ`T}FGIZg>=}IFm5X@h`BzXs^(2Pb8tI2Xh5%4OfhkaP zaThmlejgva`+dCqgX?(r-91G80$RdGZ9A|N=tYrg1k#}#0IhI@20@X?B^(f-kE{l# zALv46rJ}y9z(hE+njHB}mnmF#c)r5@SO#FMRjEjc?l2Hq!f}_UP9cpFMJ)Tm|Z!ksb&W0xPHP?q$X|;opu8UjeQx% z<#H93YF(MBlGwwtnJRFvV4#N0`^lEfkWohIK*Jb0f4z1z)SJ3l<8XYkqeSa8)>=v$ z9pW@QAl2T+Ha1fm&6&*U$oUK@zo7P62ADk7X%coudWNLQTF8{ z98ldKJ^#s-ViFXktcjB&acoiQyUKwHfl=9mv&b?Totncc6WBs>2zgpXEM8Dz94%z$#Am2I}peYy_BJ^8lwEkb(gGA0;7d;3Hd?^ z#ZpoJO*^e5K&gh+69lc4@~9U1dj^GotW!q193CkOh-xH_YPU0VKExnw3Mk6`L-ylb z9y#t+#VP`VqfS?JY%96U^e3Qb`k20#ps2r(FEgX&gDSJ1Ht+uAL9u~&{=uxh!PkF` zK|PI}vHF?Du7P$wE7a^F0~=?x$%L&mh1Hx^H}Qqso@8Z+>zE`7`2V(OHJu&)y-8d5 zko`EN3#@!ez%#ZFV?9Y9{PpYQzstYIp5ebbd0(Y1QdO+`fKUZ(rEhZOK(iQZ`$VPFBE2UC@9MR;;hwrorXmx7ea=ai_<{103nuK z7Ugmod zN(7R~7R>?$0Y$ZK2@G|do@h(JQ6QA;=0m|lM^lam$D15O`z9M{oJdDZyJ@k6-aX4~ zq>J!QC5+KZ<&s0$xF(`NmM9%Wf}*uj9&5FNFh;AT0OfohMfQnf)QE0sv4EA+=Wy!M zRh&703ANgqIGemiokcYujFDgrWc#DY?H-e+=`kvQe1Eo@)` z@7H@ZWX--LQAs!jH>$gQL%g0&I+3a=`T#RUT|3GAF#yg5E^u$!+ulU; z_D7O5=^y;cKM_!r+B8A2gmb4);n`=NL@!%Ldq8$x5$$Fh&piDwUj6KIlCWoWb=@7_ z>4DkF*X$NJ1d6(2H4Ol#T#eHeB`ckIu!c-H$b^tw@5DXRHFgFl%D(2h6NWvpU8pDe z&im9!|5&oma}DEqR>&7nDVAg%R_PFXehiv$O}B$L0-Xh3Pf(NqXqoax0gB}k3dN!T zqNQR1g+d;MVjhJcK&g-wt?@#@dXQD;w9%c;t-R6Le!>#vo}&qtL=uHb^>~mqj070Y zute^il7<-^1tUfs99;R~U9UL{*N8_Ir~G?fEIEgyhryL(B{lHjBtjy^HQ6NO6yQIhpY zYd3q}v^p;`zLU1%ynE6BNx$uXeP`p-XiTeZGO$!`Nk3ydflW=wJ0c>HkXc4=D7_q<$^`W=Lsl!)E0j5?mGcR zAG|(Ws>H?=UFIfRC{$N)GSi$fMaQ~}qESU4&1EcgS)O&VGtiH~C;>$#SIVL&ECd2J z1n~%BXwbCycD!ydKyJt+LnD;(S(M4d%ViK``*`eP4KF-Z#}iLp#uHCHkF`?|Arq_u z*^)fJKkOmw?cmnOKfuTDzm01jZsMbln%FxSpw%5=rx~Kv=?aLUWCj9-ng~dAMF#{Z z$#_+ukY6l2nPCj4r6wb5d_R;1r!Z15C@1! zmjZ&K%skJeGed%*11Kmu62=@ejF067QU)9ADrFH#g;~z_M7(S2uuU2n<9|Ed*R-3G zZ?yK;#^(65zHzKw(R!t1YYwGS5fy^@g#v12h7gv8C0Z%wP$oc~qxKpxIL+QmX3ff} z(^x-$38&7SN3B|SpeVy8l}&5!7eG*0nWk$M>%OIFi^ia+0_9{eOOmQ?2M7B*=yX~r zluE)*EftyEj0{YUnRp)i?dNBq*D6eYWpj=LO;xbftJ zqPm{wWQoJ{38*TVDvTmayyZmaS!M#FVW%b61J5IaW#I2(I*G!&MoXp#~f?e!44@Oc42$%+n{pd_QrP=?rBQnrZe zfdfSy2+M0YNB*yqL`%zTH}~Y)c;EW8f}(oZXbJ3eZOx$5YGL=*N9Y{vtvBHSI}&<@WOLX;DzU&5~k?t>gu6`n0wMepOS~#I;WBz zOkSlsv4WziEh?-uvPH>+m&4YA%d+k@f*cmc$mn>Tx5FC&MMLa0n)vwUZM^%zN4R$V z1`hTQq>s6-RZ3-4%T)=BmvD7Ckd7HWT!%Hod``mSg*{&^%1>r6Cny>eb10TdqA$vW zz+xdU_FAD32s1RFafi)&2hdHhx(}Z-tVBOKh@FzxjUJP)1Ei)?`dsq_xQkE+I2}#)IZ!6 z`^9OdjM>p%NV@nNV~t(bT7WOTUh-Xx(Fts{J{4&Om-#)H69Ehj^-5LZrhK>acb5K)Ea&*j3sew?U z^cE?D!=$n#79Zy^nl8huX#|te?Ap(`U}2TB!?Tli-{H zbUbWu_JnV6TaqO$*Q8j!mU}Xrwm9ALZq?#s(xrogZG=%zk}i>HQc3kXrxR~CR$>WC9<@bgpEm-_&Z5hTtm2iNZ7qAzp=^x*>C;&u_Ze? zNwnl<%J?wv!3ITraLixNBsn1u8C?{G9PDJc$7ay)b#U{;5AaLB_)8ds%sk%XCMSuO zo`3dfjEZ$M`vv4nWwhHJeD=ks@XS+BqSa_%rCyf^1h;Xxc!s%V#vj-VlAx$dAEdg- zSyIRQ$jIKHEb{)4yDx#sy!4%ZaR4qs(Y`IxBOHH?HJeRjJ{ZL!nxZY-yuF1Fu6>Lf zH*cfeY6~dJb(#lvm10F>dF0?q*Jk_DHJ$GcP;g=Mxq^nyGi1J0D56j#d$cI*P=cX( z{+oz@B^8{_s< z!FbhAx3M$!H;jznfO^wP_veJ@6X}YP4Xo}7ocZ;^sGGlz%{yPCh7wv^l$8{&5=%=F}r`9436iqIs{CDzirt_Fw zY!vXa@Ocf1C&*K9p(mrPK8yH>fCMgcssW-7hC_xKI zgzXW+kRh)GG^ig+fTJ&QYc%*(AIoK47mci;hNqJ{iL4}B=@3YjC|%Zz`i#`rq~6y6 z{ltDe27^*gnx%bQ;w2vxwSLf_#;kPOrgRKMD{P?ts={X46$G4Qr+3MmT&RU4vT|S$ ze>a6!2^S|Q>O$ugs8ZI4utLcg&ABi+(G1fvkTJ(L4u?au`hBz`Ws34|)EniO=0-mJ zm1fXL|0fKYMK-rIV?Yv**h!=8)sr1E8x)P1yG-;@tyi(Jv5u<`UBbC@XN4^jg*~(y zEexYRs^t>u)iTQE0`dXdSd;!RVb3t?k#K-=y^gihXL08A83{?HqbD-7WS=?>UBCVs zI?u!vd7T%D1WY~<>>G8Gql;sOOr;*#qTARz*hQ{Tz}o5=RLV7Rg7taI043mP?~w3! zFNB^BtT_^7iu(FmI&9PsQqYqOD9dEu*Vs_^WsZuKl?+*qdU-FyL74z-5UI{*5D2qL zLf9m6=R7M8>%fI@y z6HxS+_tkhUz5hW`e{RQ#&Ej&KlW#iJa!}_E8Aa1k*yk#*GUQ>xXoL^neFuN<7yhn< zDs%oIm&2LUYk2AT=P)SNvEK`jFO{&rcYrrudjU^B`50Qw1JqVl=K_hTP16kK|TZiRvE*Hpkl5w6%l_W%7nWH6!$@6z!Q^+Hr zOixZ3q70X(8OF6%YyxM)>Bg^n%h;9_)do8_;~vw)sL$|uYKnHXT|_^$fJ~8~Xm!jK zrA=uO2j;;0;qyt`YS#Ez#GaUT|DyLkNTBGvxwI_UbvLh11F(Eh(l5KsI~(UV?kpI~ z`i^sR9QrQyi`pSfP-k*Ql#~#;9tWn{d*%V6z8yBNUH#9ejVpg#FZ%37K+#2?Wj0~j z^~ru-w%`3{TA3G}Uw(h2&wcec=7FNi^wFKJ33uaN^PVxwckH{~f7w3fOJprcMx9;e$&wyr>?~4Oe-2pPlkI%M6kW6>AI$4cK+y-Y-xe-4LD3hU zdp&VIop{p4oW7x@+!2F;mVxS(xnOOz*(GzTg_J9+OG2?E{Fm9v6@cS4qJiZyM8~JO z9?NY+z#}%)CpSz5juiCM|LF9|yZJ6abS~>P;MA!+&Yh{CzFtPYlotS_+3cdxiqP2W zq17BBin16oQA)3`$zYh!X{h1w8h$te38966?6W*_E<7xg9m?+nsR(%Vn0%?n1Wsg# zQA3abi-yC|8KT2uY=*Hz?)D2m5rHk{5@_d~711JeELsbB9|KS>v4(FL#GOfIWDHUZ zcU1aCwLuMB=I`Quu}@w2wrM=F$3>0QwYjiBMnH)gnWK@gM%l+KFY8NIXgC}RQMQu%t1k*G@xsM3IJ2>aLb)vA z+jLA@%_gF5Pk>S~YuLsFsw3*EMiC+ccx2d?im29CaQgHatgUUJSSUHeO+zW!Hq>wP z%cY>8I;|Y*mMJ4g`Gc`&xiYU!@6+0u3{Qd|?M@TByPF8Z4p!@@up&vG3Z6!rhEMX# zSfU1s>bO<*v^f%FG-<*n%dTq7Z~ZC!C(idM;seKhZu4HpfD6la%xKO-jz!+XvM_X$ zA^2+WDln>bbehEdh!aFJz|)~7XfF)YAv&G5yq~NlLO24T60jv$8HMO|8^{nCknGIt zX6lFb1i+24z_)3 zxEL1)i0XljCW*9tf_phNM`aul7!}|%k3ycHs z`d_w}>D*(v+)u8*gC2&$6y+gR7$<$?!CRq>Ouj1F=QVuZ)ny`_a+1Yo?@eQn`ephg z=KAL5_OY(_rIOkfv%aR;Kg)t!{`Ij_>>$7Em(`5OV?Q2^z#&az}o>{cl zr}+WP%uTy?qW-Qwt>gUq9i^_x`Yu|(PwKi^by}t^wVsPJMGrqao+y*+irV`2wG2~q zk+o#mI*u(DPqHqpuaeJAYiIv&2Roa`w%&hIW9<*}drm;nPkHYPDEjlyEEw%ZkID$ei*)Q3YLODR#P;3cUJ@*5t-X zyf(q~^L2qFTz`msFp!Mw4EYibLJ1k8CMgrPkg1RpK$O6hI>f4>NpMR*%n>uLGeL|d z6JnP2Vj++O3HiJxGLqyk1aQb6vryWB(;s!Aw89)!=qF}M*uO1&-c`p3MOlBAVd&aD zY2-~a5+{bNr$sij%;pXhRi`E^&J4FeGCs)QW!Nv-b)u!JImWdQon6Q_Vi-O9nhX&# zb}1o1O;tMF44?11FnWTbl7PxF8;2MmBlJc6I<(;==G!!5{ccaoneTC6Zn0Fwxl?ug z)K7d#7*yvjox^&49mNWhgOPEWLzmgf+syV$R;|;-9Ymt*NkEiiJ?j{e)s-67HrBAd zzJW56NjS!)g`3k|wWJqf6i5blhSw`&)I!(w0K(cd)`|5E2?Zhhh?8AOJ~3K~y~f zNqce_5{bFT@J`i#B_Nt}ps21XvP9;x_$zIKQY+)))k}E%+1F66Z=l(1W9RlJzVemV@a%I>q1|qyQmKfRupLf( zV)*eV*CBWHP3$W<6m@&5(#jX1goQQI%1MC1VUw_agvw#dT{xBSC~MssK9==9mCbKv0IRGufiB_mv^a z1a}19X&;#Mj*W>lP}Ih*j%V5eEFVEpW}ok1*dr*~b6V~+R16fY2q-F%5)KqK`$5OI z&Yx-a#G(%KqSq}mNFF3mbeVchyVhTy76qTuY}wTQOo>|a%aH`W{C|rr;l?`Wl>biB z0@5`7C&$=ijqd~$T@=7d1A`VFqw}si4p4MneWn4V^Ty?LP&D>6W`UyoY+ie%jmLTA z`XoP}Hm2@%z0#krw53^o)!hU|7pdd4zE}iso!5{4TGH6vIyU=$UO7)bzw;J20Y&e; z4e#qG&`EyzMS`Nry40Wia-pmmxfNriE}xJ4R6mg8c-wqbU|$SnvJPCLB@5N&rJ}P( z_LXF0b|8vjoCcUNn|e~?&qB?0xgEEwZD_K%(S^to#A7%(|5Jcvte-jdBdoSsR)Vk+ zCNA0Ig}0$>G{+QW7<7S|!-I?fqq%_02r^o;0wQ*qp<0qG32DtGWpWyBlEFTHrZlGq z>iYE*VyDZBE!Q~4nSnyFGe0S5V2yETbMQb>Ne)FYi}jEUu{ji^j}-9CY3c{bw9P(} z4D@0w=x4$LaST1OM0pPxz&cvA?#dK}0HX|}59!dGA?tt#3ss+}w|7mNk$aR)FKHyq zddAGnn_vU8wwEjT;;T>LFaDW7h7Ygb!p)t1tk+MYT&tl}u1dHe*~pzR6sW62NC0yJH7wcV5qLCLbZ- z!1iLhcbZMPj?5&}p~P>qT-VL`S}H z&=Bx}^HzasGKSrOiX?x^2n(Ha%F6tg{=07-o6&Rvis~43ae#L2sehPz7Xhw}^^oT8>Eb)Yk3 zjSdGYA7GlIl4PkQe@kYc*XPGf(Fwc4d-<|9#In~<8wJM=iZar||4OUZqTuE9kshzB zc8xvL2b`w8$G_IMWqsf-Y5Uq9Z+3+bOicI$4)98XqGs2~{j_jtpE?^PX`d&3kww9~ zWLx{--Ml_oWc($snPtaXJ0<&YTAAkcwg0?izozx`vh`WydVj3gzCNyxa9z?Fk7?yy zp@CUZ=Ck`uZw1 zHr7zBRFMxf3%og`{G0$J!47KDN@6dOZ&22=u|*k{EhfFNHjOP4YtH)Zry-h5TGT_M zv5WovU3q4$x{gY9Rp+}fMUDBXt?N4vno(X8Ct29M%}HZ!8jDo!m1`A5H8542bAqBS z@siG=flJPzV^GQ=<54G0kW)}o->c#M28wc)ScZFJ#wp8Gle#exlVp#@2w|r!U?^Eo zVYiER^FYRZwOSPxY4c!D7`?)XE0$!9;({pQ_`{K8<7WK@l+FNqySoA|2aB@DEi5V&&Q3Rdq^J<_X>tt^FIkMc83PS z2IY~J1v@JcH3^Ek^U2XrLY#{w)%-0KOG1X0F-Yy(VTAwqAATGE+dujhnTOp@N2OE9 ziU#o1i=V?YFTVj~^Vq(%i9h~Fzk&KnAam^CU>~hk2ai7TxG+Y2z~h*^^uB!kEKroK zty?KW$;p~j9p+Ici)g?DS(PTyeO>-P0g(Fpo7f$USn2oWU{aZ&YO{%rWr@YaJ~3$% z2e*zvBTGO-2B^vs$pN<Hc#V6iwO^bM2!a^5k{V`IBDe$r{cA{F9(4{o}^L&av6|^ZNPZ^E+>W6HxTd z+wi`A0zuKA{PI`T&~-qfgiA}NZdw*<9Fy6mfFZ+LH5)X;z4~N=3HTxK-WX7o1WOhs z<_uWT#bj8luwXP}DvfmoMfEwNx#hC8CyglI5HTYwb@3aK*J#E%y+JjP9r4nExEd}& zV9&x`_47DMlsTXZ@@gUh2^SMkia?ag2?#q?41ATIqysA70*X3Dr~FN|5~W^F4^dl9 z9UgOh1R8WYt!fDB5K0=EX#?w!5i3cO%so(th78wIAwWrhUS*A12)#%fL`)o`A;kP9 z8&n)11Dd7D^l!qL8x7DW!&GDuMhF4N64lJ}bmb+-6T|P>-mXI9`Z{OI@1uJ$Y5caC zw;3lt7vL= z`PI4z=TXKOLA_3=iJjd|DQCT=ps2FH$OuwU)Mty@_+uRiM%uVcyUqtiB{b6Yx9^NI zA(E8J14bouKFJQ(sUYRzn54ERzX)oIqfY?U5-thYsq9SuSuC$53ll(>8l)NO@I?ZG z^4XQLf}&eDZ%8{;t2G40qJ+z{@0oCfW!~A|k@Aq;%R`>s-Cb!nCU#=IJDrXk_)wC7 zU;Lb9VdiIoyq$IjKmT9JeDY$0Hn66e(C>7Cab@9Wu-j+=Aorbc+fB*M?5AS~eO+-t3wb5B@Wg zpr{JfxG#x@VT-HGh=h`JFBSc9?vq@D32ZZjKDGhWo|%OFG-(l&9S$L!VK-hlepHX# zw4R-P<=Yevbd{1h5LEURi44)G9E8AcdH z9iZQp@Ok-Sy}8fj%g7cg$T&Fx*_S4=&&$QB;jgMz5SL?FXW1Wtv+kV+9`c^!21R+G zHy&~caKUWqdElqn6t=h8^=WOAv{QXMBz}$&*bj%;suGvWLEu`$US>E!!pybt)hhL;JW z!2y7pWXKP3oYZ^q4LLJbCK}&#y98Wx+1WKNJq9IR*q1sbG!&Rf7I+9C}U&1EG~ zQiZyxxh#rKSCoywP-HTeH2hnu?*pR79HCDo%u(6c*mpq0Z!(^SBXouXNwUO$OUt+< zIRYdbYu6c)R!;?(T|eD}*)$6jo%K4A49Ep2<$%BT=l?KX{>*9o&JRCE;q=2;Uq6j< zsVZZenz95$DWyOnq#E{WWE)GA+2Z{CiP`Qwz;T?E!)bm-Q5XCBJ7~1_Q7zZ8QeT(E9t2v+sS@8G7!I?2~>_jQPIuSy6OB()!zj znI4bD;{`>zSMY$5YlbpKsW}{%(dL`!iZXS$0#h+#&*r19Z>$gJ4v;S>bN$1QZs5kv zTiDs!Lg(N>*wHs`Uc;?xABa4M9N@@-We$Zx85bXU0xy34D~JYp>}_qLdvF`2V2G<% zFXHo`e_h6|CR?)keh(JwPst-^f}(Orr4l_N`5|lk00YV(2zWy~N+nXn&hce;lEA1t zd?jQq2hDo^I%dtq2eJ-M^`kOe(#$dA)5$Ez-tM%d-7IlTPz6@y(0j~cjXO-8#rU|_ z-*;`^`Aku2IcF%#;)9|>MWq3nM@E>UWn?^w8GWx0N?DYIv)K$bPO^~_;k0+^OfND_ zx3-RtImGo|qz%UQYTP$gcb{oFtv-|e=4Y3l1e{~=+cAMB*4jzQr#PZ4KE%{AvC|Y3 zO&dF01ISY|pZOr>XlVHl{75w6K~r5%@yD61ySz3Dj?T0pmt?y6 z&st`Tewsj0o8ybjv9$I&1d56_^AW$?x{=lwi-36d0&tvHlX-w=TKg_im*jirkI!_U zE{!Q_w%H=%fBt*twb10})BNfQ|I~}rOunBiQSkv<`^RSAFIVG}tB=wGC!pw2TI~V4 zhep$%`sx2nL*6k&AX!m0<2pmc`8xqp4RsQ^bSsUYdVo&Ln^5oMXG z0U=q)d7S_m%A8cEfq<%p(CY8XDD?rDq~T@;Q~JW_7@1>x%}d}UEDTNEE5?o(V5*fV zfSjN0RsO=DWBpRF)CJm`!RD>^qFw43srGZs=Wq;BGW}+4JoXvOW+87W2Ws-3R6zL9 zjwK}->&3Di^SK<#g#eX8PBX|71b3lEbg+BWM{zLfyVbZgJVX4M6xFPJ%XYg zA@K@I%GeZ%3NkavoQW9_1{g9?5<^&XWP)TgshP|Zemg)k-q2lGnM-iN5c+nziAHlz zK)$v0Qz+zXgt~===`%q6?l551|Eb_5K^i*mjy>&+2V)Z{;2lp619#=`Y#VCQN*fI) z!{&oPogF&PPFIv;)0`762Z3X@J3&>JMI{CJjvUJ*?Dl9JLT};!!VB+H_F^cY@}S?t z?&g-M1^hab6&pZS?TinC|WIq+hViFcnZ z-N#;>d7!9)i?ZtptG*9`MJGT}-47-}Q856#WR&g@*+D&GM>$k<43L^};*M{}5hzjy z{ZQ=+i`8+FGjinXqB-oqSnZ(rYr+l_yDFY%$^FB?D+!U8Xn{VmNl?@!QyOK1xuB>% z-)D-(?IP#ne)NHf%TE~@vw(zYPP0Agkdy4*d)%NX_daPMFZ#p&ZTjK!00uh{^}*4! zddHyXSiCfC z=CvoF=!4mB3zwQs@}K?LKMv+pmrUyfL<1n7)y(4jX<5f<5HsvO?2(nlP|-fZ{s>_- zl(1<6LSj_7@KsvfWL**DG~p=)P?gCbj@~%TT>q}2=)!fG07b_eozuVa7qvsis0+WJ zG~0b6-9r5}{!4+sIPtx}H^QDU=AuP>o3U+4sT|XD+}h3+5Z@vJWx5RJ6GpeY%CFmm z17YBy#m{@r#$p|8R1VXjQzx3BXr+)xxxn8c$(HyxN$Mn^XipL~2w3FK&>1?PXXw4? zh$-MF2^NI0qQG(AF-1EgW}qJlQ|$E4=x43(5;kxJ{5z9^s*hXHeZiB2s+&9Q!HD1bW09l=RHpPy+N`U1)t z5X$!v7?n_Dk;u?Y^9tIs9?CRPJv$!k^fW|uIKaW)o+R_A)@sNF0lL&69S%^;7bJ9_ zAZNfs1dX*Jv0qMhR4xLULt#(@gQ-;%1Ym{aGlYij^6g}E3y?b{V zgWn(gUHr{{xEnGT(8ewx6Z~fp+biytQ1=Z+fQkz^*#>Umh@yu&q z27(H%efSaH|IrT+Huq63qPB*55v0G-(F;89FERBuzp{LZIcao%+&!(Gwl@LtxNz z`z9NOOwkfDK}q&k?jZ_5DMeM^A2T7HmFLE$j>$=qo5_j zikYxB^vA72+sJ$I_V)3GQ_{ZgcH26=9VjZ1CF5^B0JV0U2Bi34r~#zb6u$jB1}^2p z_;AMuOKtBpAkhd9K4@z&y)lYy4b&w^0aQPlMaQO_14ckd0Y&u?EFQ<~D9J03QQN== zMJGTHH;9sch}A*6J6;2q1<+@$Wb*(X|K7CzORLA7uAFxh^i7sOKBTnyyWHL~?jxDh zF&IZ6{K#Jkrsy4mqD%X7%a?rCxJhf{v^u5vrZdN*Zfaga!DQcgat4RGH9l#Z<&UMc z#4>Zl)(U_9n$@4lb;SooU78HtFC5A1gekiGSbdQ0H~~c;q~1D0S!p!=g+KjsU^a2) z4GOX&6oL_o%(Bi5<;*hbSZZ`62{iOVGU9+vcYtm*M7K8-aFm(171nh6nPeK0-DTWA z0;FWpSy;K#PNQQ;K$HwpO$wmqlo>+CjPt9v?51S*F1q2SJ%65|V}{YR>!vN-rq?xg zb&R6#F)Akv2k#&AHUl9Yi3EZIzzT|HQE{50g&;EqMG0Jzg-51nkC|&NoY`fWEo3sv zDwW8#oN9{EZ((_|8POG$(D}g-;RqmOl$n&rVfbc<3ou0xRNQ|7Q-vW6O(x>|9@C8U zq!D_Ap}){A>f8{3%Oj5={`${<6EA<}0{+#ne-CfH^)b$#KZmvT4V2eb5mai(6iNb6 z3J@qxD%r8l@fh@lDM(FGf}-cnoyEq+2Fm3Mf?Qsl7Q2sQo}g$>vJX>pkYTQ5j52gQ zC%~N?9!MWC=~rGDqtY)-&f(Y;A`ao417myZ<~=|+Y@^lKL$lqKGOW}$5afyubWxy0 zvfGojEzU915h!Ci25Qt1@tqXkF)~n7pXCf9C)40NN@T?9p^Jv{((%z`N$U8L*~%{h zz|_y9$qLeTQ zvVml{Z#4GgS~5kc)pj7^$Sq-p@_N%-C2-nmHqmUi)i7P&~ixG#|g`Gi1Gb-p#*d?(~V2@j$oVM_~RiAj|lGun)8J&^FVu-$xc^HJ6g zC-=gKmkW7}q7dE2J{o&FKtIH<|K@Mt@`ckV3|e^qowu>qXrUi zkKlzjzKTk91-Eb9!oT~C-$XUjMWeBg`q^{%{Ez=6p8U+Su~xMQlHHpgdvKp>>m+TX zG&^QI_9T0Ij|)0?LAM@}1)N1TC?HEFn-@cI2$b*usHB}_Hd*o>1*iPuTX#(9flIW+ zrZMpRJviMCaWK6XawzvW-N&JTtpr9LD9ZgU3Nd2#`4O!N8W%Z$fG9K1i|%$Hwuad= zQdh?+oL?TjREuLkumfJ)Uy@NO23+$F14YM>sob<xz??-B9<|rv`wo}E z#+$7ih8enC3rC2JORMKH{WqiQn zP)v134HR|%c8;DogtNf0WEU;6F{T+ZNn<8y7%c*d&KfR@ZuGLix(B7b(?4LFw~0*y zMHxO{3Nn&#DeqW`T;K^dg(3TRAX$)Q;io>G0HPTbgfXfilay6ZhM)YX4p{qFVjbZ(tEV};BRf8*!>FkX7{JpSK* z{XM+%&JCP#plGSSid?0Npi~iuV@ywBNPJ!$5Qb_q3q9Fc1UAVOU0q!jCSg7(An%eT zu}%_RKG00-1mBd|HUL?pvCeH)Lbi3&)`Uyqp=QN{M!AZwL^Eyh5QDG3r_lhG!Jv}l% z86H2@!&4B*vc<~tT=E%Bc&0KNHdhI7^2;O$1SAznfWSG#aoMGO*^IC^1&np=&U=`R zp6yPMo^37;`f!M5b6=7vQ3sa5HZ??B%@%6as??RAu{_L9-)J=Co0;qhj5ZDq1jPQi z|KhJ4o6&R@q(hd*QlOoryI&QK~a7(KsW#ZAOJ~3K~w=2B$PU41^OVqF_~me zk47>^MFzs;GGwDw2LDRA2=sc`+1|v5AANx9A701r|KJDc_u7b>JEEc6=!C*(UR|jQ zJGxjZ36ZuI4K6Oit-A(^6N`}k$qr;$RoXvYu z57Gyt)V6aDzgMm#kfb22%Q!E;s+18W12TiYBv=~tI~Yn*!bo*)c?=g6kqOG0eV)=N zA`xQ|2nLXvj6)nw?Xxwl<#a!{FSoZ47#7K-BFN%c*Rpq-iqKu@dNyt2*v{LuRNNr0jzbCS#* zVFxLTAb|<{Ijwz??YPMJNSlZA?wi-fhwqOMPY(I2A*JL&nxdTpC^48J3zC) zo3CNd^g&VE>ra@X%e44|ckKx%`r!51QYEI7{BwWeXM~lO84fg@+5pk4hSBFp4U{l< zf)+yoMcW}6g=C0Q6Ky1VXrc=$Y)=~X-YVx9FJ!Qh9WXXYU6>dD!utq}5ggT!dV(Y| z=yJb+qW-3uRwi=Y)WQM z7lx!)19fRNoSyec!n4G^ste3SS_HmBgxwZ)_I8A+cINB_)M~489}{k|?FqUF^Hf-t za?Y!%Ts&5Y>4Vx>_QTq&+%_+Kr{As-Ty*IIa(2(_DeXTBIeErl}T>i{wapBRYQLfeT&fD+c`n&Iy(;VYSd)8NmkFEh-uCDH{Pg8OQEG~6vLyv033amZl>P5Z6eOMd zS)i!w8@hS8J!JA{+Eq}Mt#0AMMwPzh4;SrLww@iOk_Xl_I=ME?o6;PHMHFSN&@If zP&5hDYoFR7jrTD3;PE=;f#^1tCc@!`8LcB%K~a^-;cXHXBZ(#T8Uu9=@b+yDTj%W^ z@mSQS&$HA0Ywi?8oE$dGFN%xU!pmH9H|sMCkegSgY4^^%FKyjlpd zmKw2fGMz>3AG7G7^4A`XdeV_>0vj=7boo(`R_n>XEz$G>{a(z1iMdy#v2llnQ1n0j zsc*`aSppGRNa#Fq&;s=%vqJ%Bo6LT?6@Z#<>lKW`D9wdwedMVis&YgZk5k8?`q zb*AhuYc(icGvyDnk-O5G=?s?2#n-=p(|50 zb|iD2T!24D+3pq&Z;q9-6oo}QHZ-ydivIuXy=jnS=XE7^a(ypfu9aC^FF%ab&$Lb`rdidYxFLlgKdS+;?_#o5gbuMfAez)64tJRi0RY3XSK-L4h)>%W` z&J$*9*nLU@Q>mmG=LWFidYy>Fb<^ng+GuQVATb(XcjE>&Hr7zDZXy*QVp#Zz3`1HhmKsT^&}UJ5#r}Sf{lDM%f3MfBgY4IXKHu+oZs**2*FET(VSj7hu~C~p zyk3PrJLq0B$90&y6UOi(2k+6$K47Dp`LQqY@c!bH$ zKMg_AFMjFEs^iDPI#NhS^+i)GJRy^x1_aYbCD}=IMF*lGN|2N(GfaI}BRWWb7Sl15 ztQ5q{6snWtdTXZ2d&$wZifW{Kc64F8ohZ?*G-4DiJ<1{;HMYWzMf5s0J<^_Y5GXp& zV4DYu(vYXa%=Gz8Dq%oTQ&rxk4-*t+(GRIUuZdv7616GxEW|U>@gab!=r!_*7zQfe#e$?Z)m@8@Fnm82V93rnTWy~2XMeVARUy<0*xdJ1 z>MRgpHOImrtT<3{`rrfA5*<&(;o{F^?DARoGyf&HJRXh&$mVDsZS8ilXN^;qEJ9 zH4>b%eqY!g;WOSYD5`tqbo#uq>FsymaN7NM9vBsFv%tv=Nu@}jOTk|jmSSP0@t}{G z6k6(HJZxb+(tVBc5<{xmv*1!9Eug67UD+oV3q_t^3-nnBS?(QG#g#pZ{A9Pr|e%^6W-{@AJcPgRr2x;uMaxYo4eZv0xw?7{AY)5IggMiWf z`}b%p(ZkM#+j+k|{s*A_Ke2H{!euYJzSXQA+j@W4Hat1*)?45N z6utGfyCcpdDEj16Ul3!`5(;U{v6wT#QM+`jJ}7mS2#V5RBq*XGTvCA zMbod8Yd9Urk%dh(e@xZSuraF#@7sR+EsWuX?^eOfSq4+sIJC@(qjs`&W~?zcwFuA9 z<$A9{Q5wdnWCD%=qfDPqDELj~MHaLf4l(EtRX291RgL+XRH!FdPNpa`+L)$Iuuxc} zjNVh{ODM%Ef523FGNA~JQdWW8%~WKJP0IX4D%5vJkYY?cMx2*G;LHcbqQ;bMlY=(L zdFLIa&lEsT!AbCYgn#|de+3`8uz)>c5#3PguL=V?Hi4JR`k*L*NBY7{XR`pIO$Fy?j-y3??AVdd1Q;EN!yv#Y!4y_u zCz$7EkWMSusuWfIQoPZoqUkx^P6zd74cptB(m%_~t0F#U@;_q&SF>`V+5C#DcTWM5Z}GqZAqal zC!LYwS&g1-Rz5$^AxO%;CJ@eRc6&YK@_G5ZE$Q<;{QB?y{;?TNCz_&~kuZ-b`ayxB zfq_l=nISrzo)%&24v40 z`TBKSed}#hw{D`}YoNBXjbV=g8qO_Bnj}*0u?x{yvhws#5j|PfL zs7KalNulTNIac=GB*s9SuF10;(c1w&V_omJZ@!COwi)!xX_Z#Hi`Ci0Br9C2JBe0 z3{n4Blf@ApCvsg=*vl4#vo?*rr>_qxpr|sGMec`%CYhSXAduKnv>Ad5^waKwf=_a9 zW5XCn!}uxlbkKwGYBfKm3-8Sjm>tCyz1_9!g91h0ujib%4;<8n_VZcm->v$2hXq9s zdbY!~mH*t~F&R1WD1haxc^cjy=6xQ%$6?-U9x%H9xmMfR2CSx^#-`0j=l@~aan?JA z$HabZ82wDfO@LJIVVmml>T^UvQC-`V2^(&U6HxT9y?AFHcLIvunf-R?r>2wq#HT*5 ziva-%rf|s@!A(=Zg)k@6cn!OY5p~hKlEp-SCeXvxMU0UNy&(c*K`h^YAorEBDO ziTR_gRv$e!{49Fyz3KC0^N`({O2mXInq~^Uussu!N-W^oV2r_tMYYIA90?#qcZ?hj zn>H`{mjs~sHBZFybbl8m67FiU%!9a^DCCGC01k}@XL&M&ZVoB;`(81t$ zzuQ5hUB}kemOT5)$|@G9kxDj(XrrnwDZxipKvpd;H3TehYv+S|J?A_PNnU6vm3t0F{3!uOOPIeF03#+$1}W*WvG$rDGj;4jEy~j>iIu+Vp$Aw-%{V zXFq%o{*Biqpv?E7{-+eYN~HwMC{p-$Wvf?qGzi-5PG(Si?J)-on*)E}>c5M7LcN7Bhi{ zVZSGHn}Lsv=OI_BVD;?1IDh}c01ZL%z8Iym*sV2Cy>SJbSKb7=HI#~3JoU_%@XJsC zs>pW?M?Lh(Y-CW4YgT1Npzl?hB+hAGl9M<`EDz-{V0SF{wP?Q82Vq zN4HT$yVXLq)J&}97e5+K?tgl(XD37x?Y?vi#Q|U!sz!W!< z@ev|kXw4Z@EGxu3wa-HdB4J94&Bm+_-IIA8yHBh3`ZVDp436?xzEgN?YQ2Im>)F1o zJ|7vvGG~o^g)Qi$_nBtC&9g(_@Ac+R0Y&Zj*sndp?=tVb!uw#jsFrR2@Yp*IskFZw?GT|ABm`+fR48bssQ-shZ_@ZhsG8@tE0-oM{# z&&l-(YaL~@p0wB<*8&7ZAN$0Ud!is#JUSYI(WLj;`W;bYJsJfH8xgZ2MB&dTF)cPh zu#V1_8lW_CLh9It0ibxU>X?$Dr^NvbcS1HgF2q_mCc3cgx4^5NW-pmUckHm+70ioD0uQBkMU*FigQaf?)|6 zAKhLbt@Z$&&JgYP0PQXdIt(cRh7pVL_`9_N`dKH9rD6dKg&cBT1{pVw-}=hOaCR|+ zZ$A4P>ODssAH>O)9LjgC*+i$?m%>GqA8<2i0mul7v0zyyn?YfrfW?(%oLW7FLO$zj zc+#;D`3eINvOk1@I97ek==`ycCRvYk8p4i==#+}X=1S#aGD2*SLLCi0ZwJk0Lzs`d zyIa_;Hc%*(P+3}(6nX(d<4H{kq*fYPqe%rn$jH$Oy~^sgfr#+4%j~gLv`wX9EtH^A z0``6QZppN2=Fu?a@4OzJRgJ`sq^f&(9$0YHX9AfNdc8Ks?LgKJnfWHb!t<>o#kLiP znK{4&GusUTGo4gg&gK0a*O4}`&X@wUJ*nEANW|c|9;&sPJSSxmI2QyX?@Uomg9=6cLu)Cuk!||-`?ZnF?j%wnV`0ZBaLx+!ee@{f zz$^^W6jkRUs@cciIUX(WAo|1(HG~rqAYsuw31ub{s5P2cySahgon36)xPkQ>*U;~_ z5XTU`c2o3586**qmC_e!7nyt!`SJ?RUU(33H;;|2ZR~DuV)yb}=(lSqmOOm^3s2*j zFMUOHr={@QSX2IWeg^UxWJ{AxP2Ew4Y;Xfms3gz()xsaH>xMzm!*b>vhj?{;r<#Mur&)(+=3N2ZND37sY&7Nz4*)TwB0g&)D z!;U0_U;;P|``~`1pyLqZeis<_09KtRL$uRCr&U9vx{2y;72DN1s`U;!14{8wBU%9~ zj#rV3pq@SF1J_zfcPD$9Y*bB&*Py+5F9vq`K9&he&{G0%v~_|M?cqQ{Q3Y|iR`5S2 z(?T*9;z%Z9NF`IU2RNA=5*ZIpArG%uMy9lY9PNfmMKT7y@WtOa*7bht%0=`CeaRpZ zP?WZT1pKJY$?Oyh98RattBr2n-+u=3lXoBLM%@ zxDtR?L2VX^-^MGw=eckVGKpy-|3cZYg%I?0bd@~Npvh+SZ!21j(W z3>!wXHneaQm!F3joU<$ljG1-6FL=c1d|tZM|Is50fkps1Tl zK)%VUG=LGE^br}N1J&5Fg$ASu2^|6gb^N9iEyaP1=BAdx5u;?R^0V@-eG@|;T4kOI zQ0)g-Fyi~#B@)8!8 zmr*VhG|gS~yiDq%N$<1Tobe=Ch(RJ4(SME!1#r~lBI}U_fp`zwHZg*syf%TxL=s7Y z-*E-u>5!5E*=kbvvW{k}j+^V7q8?jZD8tQUgcVA|Onh%Cs**M-{s{qX$lfG?NGFwm z2W1)3)KN7Ki)ajLE~Wz6Atb~ax9opm&ysBuE-J->T-5wDjz7VlC@4w*c4*Rud4qmW zbw#z{QB%eY*_||0!;U@MM~W($FEM1AO&Ry8G@Y%OfTBE~X~ouFBXhPt==u6=ycdfs z@n3@8ya$=0e78)-GmNFNe9rsT>s3kh|LSl5vtxCV|2}Jq9ych;u_P>Y(Jt(Xd_}u6 zz>xdaBqnQz6c!7CqG4dl21hvGc?{bNT#5`+dSdYy>Wv0kosP^$hq4+1PR5XR z(^4UI*zX#>LFUTzPYo10i)Tf@cIU&XcSS1}p(@u??2gRg$|Hx$4% z3{`SPm5~>K&br@dF(%Fr7B1uZzm zq<~*6ZFHhTpeVC%W(BH`2#VVDc?Fkr@3$<=DH~))_4#>rkaa-mSTd02gQAo!;dj3y zpr{mB>NU}CRMDtzp}M+f-oFAAg}>rvxLX*rWmIVSNL;&RKwmzbjjmnQ81F z+9@4L{})g+m4=&fRnjK}iU#A8j6c1Ph(hr?5@a?2E&JXC-_@=$HoOEnkq%M`Wmb$EbF$ugSnrgk&^ zios}roz9vB`YYKpK8rCvNnk91Iqg5q!VrHl(MNK^z&j}+1TWQh(l3>l6M$WSQSRef ze3--p5;{oyAi;ydFM^^vQ0*9`8)WQFJ}rwJhZ!_;2H#=&c)xa<={Ft{ptQcm-bdTZ zf(`Fc;Q~vyGNn(lR`xxRG34OPG%~xGVRQyLMcE=)~Euc z0+w19g`^zO=(PP4!+=Z##i_^;mtSslSST3SeEWpdSa2!o(7SM1oM6=aFt=7WkRs%OTs<^(si=Evj zI{jhDuu<@ifa+qYfYZwrR2GWJi!NvkzxvtxP;!U(+n>CR=D>rK&4{zr?F~_{w|#BT zdV_32>VYyPJE70Z0z5?zrE(GF$|9ClmQgO2kQDZhMyCnJDvqds5FTzUF4y6gfWwk9 zIFJ;2O%J3_sA`3hMJBA?6q%P~f~1u_Z3+dcHYr&}nwCcJuhFPU@u16Bu3>F$8%ZYv zFPjxdilC@CPH9a6XJHkl){}+P>9nP4J)fJ-3da-~wQPIWVZkTW{UT5+3{uV+c|K(| zSxq(pPDHEJrlKeVgz3Ffg+3ma0#(-FArAH(qlfps30xkO9l%txl+&S2pd~ zYP4#4FH_`I(~*DY^N-|uGqDBXJ)a#;I-I3J!gpKs z^T-wqn4&hI7~Yc!idsgsXazbtCpD>8L7zlADWD9;DnThO)&fKgdT6&ADvu+QDFX?B zNnyAYnOKzG$jW-mIY>8>p(_>*yZr7uverHNvB#yzqSX>q1xGGfal@`N>^xIJTBSn> zkTO`67J!ri2m+*<0TQsB42euSG(s$y?&LdwZF&??RQi|XHagE--@_HZ)r}XnlBUrc z2A@=k*qZ^P8=rON4rYq#{F`Qq${t}-%%ea_6r9l81ptlx*>_UKR2!xQvD6 z6_l1%QC>NVg;QryURf2Ol#&!nE9Z}Oy}xqt=SZhrBq@oLa*%Q|h|>&?{&I(5Q5<5Piu0u6{4dNDRlE7HU;6<|v#xO%@Xelgm}B>VPoaK_t{=Ale9%0S z^>?uSpnzp;O!+0+!wk45(H{?Sx%vx?M}6G0^a&&=3MLFq+R4B7AR^@58Gh#=18r& zb!_YX5nl7;&|7SQ6HxRP8}3dyjZX5zAAQ_^-0(uW-^OSS5gYN1ZiZ3NG<>atHZWe3 zX@D#M-$e3J_3Mni~BVt8Sj*FWJ! z&w`?wBChESfpK{2py)wK0tYSl^U@3~@Hy4ip zi*rxbAPpDQ*&Ga+KBa6Bf`GPdM8htbz+x$jb7vNC{!9gDR*P6%ETd2;AY)RjtUAd!v5B{?Y~afE9ZAm*v$BYCxv1@xoZw5Jy&w5R z56}MWU3ABJWO6xS54Kx9wA(CPLYB%9?M~OEo2v#VjdOw*xuS<6LD9tu7Re}~erL+n zv_Pivn_@xY6c`7Ej)2b^C1OkmQ?y@uS}e#EgOHT-p*qv_=Ey)zrCb@eOn;Y(t-`J_ z%%ZVYRwui$(X8XrTkqhdmtIG$*+q#dfcc#C51Ay{EUT?Ma5J8y1Pb%E*_0~rbWknx zQkc7rBgbdG46<1Tr#1ad*`*fLB#*)ev#)5`K40ciL$oiKhz;6|841Vz(n zalZS#t~?W+N-{-x9+{!+=T5sL@4?FSa!&?!1fY&%cXvld{69Ehitbr{584xsVi50d z;2&@LJfBVED+WVJWv_2lSjW$fAY&juH)lSrmD(}D%; zF{#RAv9ZXPN^(#)l=DCXDD`?B?N(C)BV=TAUUA%06O_l1Nycy8YdGinvi=tGCA8ap zj3z8B#{H0BRG_(K3lB^IdIpIKJ1UyC%QZD6Y;Mj+4M+sVQ%v1H<;a`=OkoQ~`|ZPQ zYe`=dz&ixnMAPCKNTHW(s8SuWn*v ztBG!3)1oyaNbL%y8KLp>9aVEiD0`=UR z7yyoI#!@1wfjrSG=P}gi%;r%jFQc%yf`#SND6gJHapepOi_7o|MI>Dh#p3d@Imxu| zuU&dk^u-w{W$HZVwMgP5IPcO^#S_(@p9V(5{b}cVc?T*Dn)P zw`jAqYpmTpl@d=q`oRFbUK`zRN7gB>5ne85f{<#n+Uwi3&|Z^9mkrkFdPIv#gU(78 zmE0$>ADZnNs?9AlJ9Sw<3%LR+#U<5b4aT5i+53}yf_3Z={CDq1)qH&S>y0ZH!Hg>P#-qlA?c1|h4DPSiv z*q8%BP;-d(U>g_Leu0mj{~Y2m7qQ8}fTCQCl|aB!vJ!YDn3?M1@{KpJSUioqyI}sV zfkOsrthOncqhqG!k4c^wU=&LtAxk^w&vajg+bjyu&1=u_Ui@C!QHLL%)4*tSUXU+4 z4=b2Are+-^_S8aRa*w*{Q_shwVx7q?Hpy;i(+#PbBf}(qw zqW1CC7YQgCd!1JkX%9vD^prqE-EMHaO|rO699}AhT$%tL)BjW$p2jeX z0SyS8v5NU%EQKZd!?C1hlcC6TD1xJ6IEOTm!cM?`3o<_wojJpjRKlXw*rHaZ)vMa8 zWfN_u@O_R7icW2Q5#5}5_p$A3^%VI#s{{)uN+VxDzPP5((?K^)%aQ5^P7Rp6w3rza>(q|t)$r<9W zzyAhCN!1Q(w>zj-8|e4dAR@rP0y{SC+z>SdU@KJ$$d~dcE)-ENFJg&ol1x@wR+%&k zY6_E)nxJG*nj#2x49RR1Co|ANQ&x`xhXgQ$#Y_fgk{}1a*&gZ$X&RCLzC{lEJu*4B3fSY}&_ULjNO+_XG@#>=8mEDFeHfk&&;*=o0>fD27S7Fk&+6_L+- z0#Fm^=D6?nx>{6d`PKpsp0G41Zog+G~SuZPNM^ozw z2(u3-aFS_pboh*94HI|~t=#cg&gJ;y{p`9Xb0U=#rm0P{<2C6R3%Du3{7~OvGLiIo z*CjJl!B>LH0`R2MB4c3X0QfV%2#WF=tyV*R|Mh?Td&g!peVCb|QG?&^BX%u2tYI2G ze)_tBbd@*@A%@!rp((0UcOrA3*KMM`eG}bg14!o(%jD7SQ&&`3(bmbgM!vki0B5R) zYtz$tO)V&t)f2|qgHE+G>U>GnqH`1(@vbUu~}Dj@3g@)dvr_!CYGUX!BSmQ2s~*Z zPg80&AZqnil?0{$js;G21=p_+1CdnsLI%pFQ}AYji6S4vK4jl>&($E1$jb=UEg>_A zEJ{dYde;2Vjqhko(Qx{_R%s8?=j}c0zlURrhElAJet!At7VTR_t=Kl!<6 zjq8{uWX9ucAux_FUV~cHGWJ-wQ8FwTv`Zk7(!xFrvdJ|PDWtOnc*P1br6uGlE67(? zkXu|ucA)|{S47J3kjs~kb-iDE`&D^%?*9qO)cBw%*=u~4pwM9eI_=f#v^ujow5BV# zhtuTk*c*-2ma%id%IFC2YBDrL>)aGywClak8fO7T7Fq0f<(t_t+;bh*+oLIJWq1Nm zRizJTy{hC@5V&EVs#<^oqV;wI)y5WT%`FT^eH1b!td!57m|Kv7b+Tr@&+Ey4d*4C+ zLUeA|0@G*M;X&XF}z0pWw z7)@r5k49$;mo{ERu~5c6#fOnZN+iH^Wns!YnWAG4 zpr}c;2T&bs;m1Gw4j#VmahzH>k2u$Fl^NAN+K@~zNuU>NBZVyDu>l5&IMO3N>;d3* zq>%A+dn&;oI#9&{f@#GJ?yx$_dm+<;b%H%K12c7 z@cZ(!>el+Pt@r!&<;iF7O$(fWqVG*RerT^Epy)?FHTU@rS|F?*iVxU?#M8qYR~U%2 z4&S`R)q^aRfvyFsjiz zWf~j=iiY1s0a0ZS2(TK`6rH74Y8!GtP*fJt87)3<5f6i+^7B5UDS8biF{#T)W~FLn z(!f{dV_bnzI>Uyc!%L5cCT-qE_;uA+ZB-L#x2f#G@7k_paS%WhzJ-=tD@7eFERv?Y) zw3C9D&0ul4jAEq-C*umZxKv(5E~_A}0D-2WyzO&>niB&G(0Q@xfWqF9K|~gk8e*13 zNya2~xCkN=Q028#X{P^sNG2Vj#VC2pXsHb;EzrPQm)^nme()ULdgq#ev6V^%rBX@z zT>yy~viY18Vj=*@_9WP7$9k*XM!n9$Lj(}hSSS{d&u0xAC5~7!AqA+YqewQI1$A79 z1*^1J%s@0k)!8M;%li_5)O3FW+kJm5G6k1y%QSvX<5dUDHEl_tXknowW1Y_`MH|>A zAOke5AS{nJpe>(E3N$5?;)LyUXvPuw`xcqWrG(` zlgS`+sYsfoF$HNk(iJ|YWfr`CPOCkLb-%& zE~`bItn>zTNQWb|82})!g$z*91%)!f)0%)UU?agH;}8voJ=AMeDcHgQ%U}>gtKG9@ z7kyTkK7>AqzXuwp)DJ3#SdJFdvh5yzXZag}DN|)S{I67nrW}j_SZpV&MX2}ZZf$`Y z+c#m~?t=nMj{=H{J{@HYLZIk`73f8Oj$k^U+Jd5F>b^HjQQKGZK+#!D(fvTtz`oK- z@LXdBtd>Blk$WNF%e{_4K>o|h^X(eC)pb;FUdQ^?OSpdJGOk^_j*ZQ#Xn{*$R#SG& z7*htURu85QxnX!3K$Lc(0Hfw#Wr&)}@h0HSRe-?14Sd_rg|W;rMroI{GMSl~A{E?I zx>qr9ko2-hXG=(B7vK~Y;T9`!ON(#|MWnrg?711Qcx+BG?faWo-jGa;1T#f!wg}&u ze-oW?&Lss#`85qbSxs%#n6>MW9W!fyd${^;*RB~tkOTk66Ci7U^&S9pgy*K+! zI+{#T34(Sp7<6Uq&<0A0BoQ^p_ZEh-*Y+hPM9RrzK5;Hh2$buZ!LixywXjuN$98Q~ z0zWx7i_?|6Q7NuS29FN4*#V!UtogTktoTs-o;)1_+6!pTFTOMj+?iUpkKkv74?W5r zx*sqa_0yt0=0V_X_;dZ4`vS=Vsw*nFY$mJX;>HW8cGmIGsmD-qmK6vWoeb)Vs@&90 zXC1GtKZnm;_zL1sIV;(ZP5Qh3uIn6QC`YryfP#@dOlgC;<{9sbinsKLjWmZo^r9bWj^=!0G6_<@9ym8({P(<0|^D z2LZX^&-cST=FJ&@Jv;$LZ*{4=W6nDPMemrdy0r&=zd%vDctjWFd5duP@4~d=#=!LM zbP{{*1Zqi8m{DPzZ0@ir&VT9p029Z+FWlQQ&6U4|$qN^Mpe`C0&jsq-wfL?>E} z;+R$tl@xd_z+nLkwGWlWXNv+Ej*i?B1gaD%V zpIgR*7fzv4E((j4_pG6?mo9JM%8eat?NsF+jI0vGJ++#{#~!{5AOFZXoIA6M za%lDmtAm78c3^j1ojA zFi18f8LlgjE7t<>pL&JFN+~H8g&Jqgy9tv-NS6o zlVC@m?6skeSu%=LZ*0t&`2<&=pM&5xSQ9hR!aF*JkWZaSU+3R&o;TQ#md)=OBtr8Sv9}xHy zT~g|x^?UL&zk8BqpTV#HKK9yZZ(bD;D9$v^+@fkPOFDZ{Y)Jr5A7s=yW8a@+*&b`17c$**o+|+f3O-W` zf@>ewLeV%*yAq&c&`1iUF|a|lX*vxzO~$s}Bh6xDv?iO4I;yo@0VXopA{q@XexhK9 zO|#z16b&$iko=5N^?asZ7*yf>mEc*}B{Z7M0-^|DOJGF>y-CGHa5)kDYs7z7SF{ch5nWAA}e4fp5%S=&IU~#`fOS3@HV2od8bC!D|^{`oNY{)1q#!R1Y*U+inL~Z>#cGup)#*OPzX5RLXyn%dcE zB={se*6|Q?vxqx+k-$iLMI^}(^>RpOa!5NaGMUn`f}-nJE~!!k{_DoPf#ukV4ZOO>o^n*U^J4(}-YVX{y zN5j6zEr@0^`_xK&gbIGyHD3Q!JyA0XC8KLNVgQ%v&J!dPj;tNDk9J#I*xX%1y;DWT z@o;+KES5{B;F7r?XF9V5-fg=5`@d>L_riVmIx7(12MVIk7XaO}o_rR_a}ZD#ZtH`t zIqUQ2`-R6``1pB1R(P+Ncm3#^DA$s4!5x;YP6DGNQ^;t7_2xCaaqW35l~3dR(j#!= zOpm9LteV99celHXpI?0zPu=rnq>`?r$XktCWt1|Quhr!zsXo5*v%kQ|?ctXeAHm%V z4~SmrggT|7S?Y%q&>C*z8_)d-KKICP;B?_GjN%T`lw2X`zmH_YfgoX|0N=de@qQ!v zFrerxf7SL~@R9@~0aqpVCF^$DMbbJud)g{uU@^i^P}EB)D9Y4%n?6s6 zhu0$ul#Ea^5qksG6lMB6znNA~$8R8om`oa%Nu{CPCXX0mT8Q~3o0a967-Pt4Q3;Ju z&$CfSDfASnK)+`*Hh%~MmBy_#*Rxe*!_1{%12Io(t`Y#A*17W$P&tJTqB?!z5UI4i+w1l3KMHyJ&q0?)iUf;s? zn>X?EUtGfXe)uY`T;334nk-dTgkLHau)J83Z^t9Z#fr&sJpJkW;7xk?&W~P0bHEC& zDYQCWY;V_4uagPrz+nNAq#C2WzNUOre~h5$(rQ_%&$GHabvw(YvH)zBVMPrz3(VM! zmu<+O$>y+ZDGLOsGht`tMAE@nsg+De77So2E<2FyE`r65qX4fs9>T^@ho{r)VsmpF zFTV6De)`jwu(`PfFO!vmPz3x4e7Y`~t`#gTFUj+_J1qf4NvBZYbO@%<+p6)&IGL7Y zifY<9zjzFFI0>LyW(t8qrrYy(vgG(oWP-52*cQTuGX-H}{EBm@fG|_k+pV^MrONQ^ z3mB<+N-T^)ATwdwNDFnb4f!r)ka8T_LN!beW)UU!2m71p@{|qWeRvPP1OH~3c^Nk) zAg{Cy3wyBu)np9UamA4ykS#nIsHP}E(Ows1#s1EJ^9RRfG<_J;=MQqij%wKMcRd}3 z0XV1ok*;L|wtoPqD4l!G*?zZ;_QqB0UcH2Prie-L6p++nOA6rXKESypML`TJPFQTB zt4%Fm2D5am`YGsAY)rQd77!uJ(|1yY5$eM8@_wqjuJyYA5l9S}QQ-jF1hsk%+uK_* zo--cxhE?~ObB_#gk*|>SM9ru$u?c+-@kwpFlhtQ;wxG>zN_aS+YGqaelOlv>+O^#> zb|gL8fTRStSl~@q+X@2l`dal~+sEz=8lds{t&tu3)~q_;-eJ&506^VS_Xjw%z=p9h zv_i3Hwwi(;0*Z1R5V*GT9~Kx4+9f>xgP%j``=L}~YtQI$L7H)pK5vU@8GA5PC`Z@t zs6}YN>~N7NzIO;X*8+hI3=Bmgfa&vOijLcLbZeVvZr(t1=Q?&bZenL+OTc%snwgY}?1TG*%NTpPZ ze7C-Xt@;hrTRSpFmP@B`YT+zAC$CvX!WJ~jkF=rvNQ$m!Q&r$hCR%v4xYfNR3Md^6 zirOW^7A_5*A_$%Y?G*Y{ezeyQue*m?^$z=fvjL>=TBse!<7Tg2;r9uSo%M|2favtv zW~Ek?`DxSGWnYR-&>wg4%H^M6yS0IjUU(8Kxzk9n61;$%eT?IAbjB?__xAVj=-E%A zm?@#tA0RdvBa^25m5v9gO3&C&s)xV$(VyVQFFl7}f99Xyu?tU%UEUqHWK1U~F=X8$ zhLa)QTzeirdHtLC>ZkuJoLl&)6kJSEy2M{!Ra;cj;iF6LoZz11N`wmV&Fibf*k1Dh zK->O%udRfQS^J%^Zs$C+>_G2Pu=1e2_Aujn-ZA@uz&z&!6uq6+{qUcA0*Ze4`{=fw za5gBamHH0z<;S~1QCoYeAN{ecj}S9w)?zF!psl(~ZO3E+8A+e#zcF|YQ$4^U=5QW?`|WvQXShf{|jFj~oK)N1l##HW~6WLORPF(@8@P6T8xsPA z@i_7Y7mq%27Ee8XKOVer9+jmfWV2SB3?S)X%5u=wW16`-@ZCWZoz@Pvwr=8; zH{QlyKl^k1;ur5Am2iY5S}EpGDHf5>X0TAo3n-eTewdrY)1Q6-sX+(d{{BlC@IJ8= zYPBjhw`yp$dcqRSxMY(gkap9;dK5MmCIX69mKRW}sO~A5nB~%foTIW1Mpi(|=c<#c zY?dJ9&sbl=Xt9ny-_QaI%7*QuKTsVmeiNjW>hnzdOKR$w6dIy7FCCTG1f5VcT8=k-k1W%3W}1!rj9qi z(rKoe2A~JW9j{ODQ#4q453+^G(lZt4JuhPl&II7A=s0rV8sIt^;~K=u^CpH2d(w1sJ{I&Vs0Me^4*BL8T5x_N2!*xD1#XwPYT6Q4?3BUK!wOo zIBA*3!fXqHy0&V#0u36-Q&2$D(OHe!&Is;_RtkgfZ_|cVQ&IOKt^nObW`Uwoa8Ux9I*#mKqkXYIC~Esd^d8MT zv+Pq!>Eyb4F)pe1TXw@6&bo-KNA`DvPNvn3Z*cE(#t=_DfqNYD> zztT1`Y*AqsbKDwcC}ntT`nG`SK8sSvi@cw&XPXckQi>n?6~Gdh#8ZeR9RWpsVAKGl z$y7$hn3p|XQ1r^hmyAX^*|RAm(=4u(mh2T4Tv8BN3mpdgn`Hn5wE_G!GX!`?S4(@0 zj+J1H$zE-;Uu2CD7Mw{x4rO53b$~#%0xLFcpX&hExs=$hVyhcKRAg}c(Qh_qv(_+h z#67v&??{l9AqBGh7pRXm=D-E+fCIw7Zg}0+H9_TC?3b0p3jZw(ZXN|B zp0)1n_bkCP#Id$}3D3Xz9V{*0jfd|3G_uJ&;!;qMTJs5v#$Ej4#!JX&^0>Qn9&cTH z1+9J+58v}7+<0EHGDed);*$xQ!v?W5FDV$^m|KN##fd%KhTu0fdF-^CZO-|Qay9Udc+s8*|n=`{~x}En1&Y~c4 zcq~N0^23jb`8E^@I9g#?K{L3Fq!ow z@9nb``Lj(W3es8p&3Xpk!d_DiK6QSi(z`YMldLA36vm{RNh9q!$mAWkIaUaFP5Mzx zn2N*h0E12s{dQ0OoiM^Fj*7OUWmYJIiNK+1Gt!_mQcxx`uAs4i2m&}#XOlmxv;doe z?Jhtx0Z{_7WD;2|QS(xo$-;h&;r!VOp8VwfcnIc{)7X(=JvU!w>B@_!K0TtB= z)95M-3NS5oJQ^swNkGHEv1c=q_2PrRhLXj9EOv;Y3xAE?~SJ7#Ak?}lK7Aum5PIjf2%Oc~sqLIpCEd&(!&Kw!d zW?NXG3e0L+F2NI9Sz3xm8Q_ut3g4ArjCD-yvy(N->h=7)R)mk6%JW*~o&YB2v8`fn z0U)*u0oiuDYxEK|WsZHw`|@~Y20++jycVBBs@ao0>Nse(TGEDOuZr#|Q}-vfKol8U zx=KmW8gcUUSOU2Og$WeXu@ngiQ=m+kMwABNz4}A^+durbC!pv)`@r1w)O>I|j;5}; z)1auN@;Pt z3J_)3{}$_%_ab|{H$bb?Mx)i%qG%Ri3I#p&p{E%o7Ay(C7Xv!XU^6M$8|Z2Vz+Onp zG}JOdFwxFmuIF3}Q}Ujo5iBgzz1cB`?bq;ehXqB$<1K0{DW*IUEo;#gHO?_p=vjqc z_BSD|@tD01ue5L|AniZjL7-?TeO^J)fW4|~pYByru)_~}`uluPXenTd>h<)S&uy5Z z{SL<62F9%_`i&|&tzES0JLtA4K{CQb08NIbO`%6&Bdb=W-~$36=rj2`vql$G_s(gs zOxTJd!(_5w{5{ly4|Z=fI`Yz(G08p>tzGUx0+1$!-5pQ6BH6=g^DM3uPqP@1D|^Us zgQ9DfFKUlSYB~YYfGJAGsK^8uiH>O?B#`Nd&MzHTdx;Z1D5|#$hFrJ;eWdPytR@C{ zm(^MNQsHl51dC=m=R4;o8NVhy-rPX?R?T!jOHFJk@ezh%M>0q(pr{m}OrzedVY_)1 zgJBmXZyBc+?nd4#Ng*dG4Cm9_4WrQ(b5n1?+%FthFb^)22QBR} z!9HTVxEX6!a6OW0TKM^;@8IHf0-wuR$}M7b@eCFg??utcATi9~M(Zuy*t&}Q&U^%~ zUi>~TUVa{5eDa^+T;(AXpi0S_ydkAovHlJ&-2Dl-Datv>>TA;a?fjeF z9#K$q9w<1o@22|ZaBUupkNIP2-WcNgebAVVo;zzCgx}?$akAfg?>E+Gjlt+1djg6c z)Pi^R=O>`(o!x&2KK<>2qSh3MMwKkU<8Op!*PE9RECHR*F(#e>B zq6)%kQ6E-0C-^3eNb@h*83LFRkP~n=NXw9o((o~8sMEai2)w$k02_P=(FyGJH65Rf z2D32}jIpb?jdtw^icT%`!uqgm4jb{CuHZRsD468QP~}UhtSXw7%35Ug^-Ru1w&WpK z^pG!Sktx6!UO(5baB>h>|B_f4=*DxZ_m0`#dbXWCCR zMQz%;}3m6S6DrekPz8@RG|72o^e^Z5V1_Y$_ZJIbC+#c|<61z-H!LwMrR`*3>cF60X< zNMwqV!j?>VT2#O=MfqNS#apS)-a)_DK&!EZD{EKq?B6|)Z~e{Bkx95XwX}#+OJ(G| ztX#v(Wdz`4spWWLf~TK&2)+6?{^p0TVHl^_zk_PMj?L{|DGWvC7Au~UX{h5=S+}Ag zTFhaAMV7J|VZ>I-izpOIQX!s>oc&^R3e%FQ?@XU%I++3XHAOZl$6J<^&NT(AEgOTE zqeDyJh3qb-amzRsJw2w-Y1LV)i%S;c=GHDQzk3Z=uieDj+6H#EcO~^RUnrnhEFzoD z2`Ea?J(|x z&Pj7!vbedv<#So27#ux><9(1}br?`|o}+5tOZu6tDr$>Lkr?(D*An)t0;9V1k})4V z(X6>OI%^EsArp}M0Qn*%yXV#9Uy!s>16ip&%ps{F~bpMg-vmFv?B;5>B1VmjA=?o=fJS0taMK-r^tn2;G#&v%W zB?FUf$o-%D8|Si>6bL)~!Pwl(Kn})I0E|Y#D_$#*E}F$k4ySETM4OStFzs9w;FFRe zVy_$N1OY=$pN6oYa0ZnQ3JbK6Aki1SbQWsr4Z29gl7>vwo;2G6jUloItr z!+S+|{hGdy{cVDq)wl8O=l&EgU;G~8;{jI6=TRx&i`C`3aX;Ck#T+hPeFc?;Wz@E> z;U_=;fANV&e-)44_iJ$CTE~Fn_3Gvu_>bTJKXLKK2F|YBgMa(28nS3Lk#iS zJ3qsZe*R5tHs8eRsnhuKlfQ?%OOFaO70DPjHebV!e)^|q4_f%@)Bin6xeKNZ*^X99 zWLm#F+{U`b&97b`1@dN%%UNxy?Kyq)-hC|i{6KKhWRuLF7l;33YK+Z8+0Eq+0!5=^ zKK%QB@5JlYwl|J#y+3?wog8_qEpP&g-fGL;A?FbkedME0s4?I#B(u}!qd;f$6{F5X z_;`PVI|Nfyj1kdonjjU2q|vh=5J_9Ar>4%B1x1-|PCtyy7yoZGW<_&qwpNWeobed) z)R4?)uu#lN0V1B$?e@@WchT$)&}jDr9HrwCx5CvSgUmW&vm%;PdxtL_V4YfmY}B*T zcagLuQ4}*(bNN?GE}dv~VLC~|7;;j`WYh5S4)WzZij_PTDtVMD1h4YK=u0rIi@I|o zR`2XfF`8zrf%;Yz&Fw1M)du>kmOdf~%v9qEh66g))MX{hcBBl?k+z|{i!GYKK)OkP zvWA8N+3JL=W~hFXNx{Mp*2v|%@*N4bx=suaKCp^Ue*Bkk|Alj?l$Mba)}(@f%}yOx z*RJ5l&%cQ8eD`^5Y_#O>lnHp~p(T9zi;oJJy0mx>UUnG?w*be>Bbj9Syojsn5EUPt zDX9Ytggx28px;KPwS}9TSMc1=U&3E}<9Wo!37lH2V0Ez~>CVIqoJ<<7=fabevk4x1 z@GM5{CcgE9moWnMC1a>H8)$aA!c=A&tD7c+G%aJ8jvoQLTt1I-r6{0vI^!Ud&7x9X z5>S*nq%sN&n?iv>l{bj_vJFO~&lu^J{bCJowm(_0wm+2VOVE*;n=R4m6#ZK%R6>VV z(@3obU$fo8wQD!+^WOO1A}66Rb=h^at-l7Av3k-~Y)U9-GnhVbT;0ubBrK&+p}S8YcH!O;O9j z{~(@2f)iwq_j?M8zWA)nmGs$Krg>)Pwla9KAlv1$%n!i z$YhyWl7mB#RP?(Y-Zcx7fZfzYPf>$4p@kD!SW8!424VSm8eH4#a%|;J zREEp0A$FY$c>^H=h@CsL)}~-D+6!*Y13JTPJ~h81%a^W<#^|Q;jtWU-+6nxt{pno zhLaXvdHV+u>n(5sir#wL-4SQLm!N3W5Ss0T%ua7pW5d`NMstY2QU8+cP^l(sG|mVZ z(P$EIO;WYBs<36L(Ona#%v9&L9bs8?{GBP|o|8r~lf>zzA{HwI)8fK5?e&JJHM-cY zcd)tJM!QEq$!eQTM|AzoS*^YqW`nhvj9!?jkeYUqNKy_!oJozOYWlG1Ub40VMeD8M zkw~h3DARH?nKZIR7sYZ8#l?c?R4y(pVxe3>p5P8sxncxGSzVm0yq*-@X*L?DZ||bE zv4z^^E;`i~hW#OWZKhWf95RKf2Gjx_D)W}0s4#zmA{k)~Cz~3hLj8OXE&M_4N@XKB zTD%~xU>RF)Fk&GQAfHbPDEjEb_u$;wGsx$Pay%U_t@vHVm22o;p? zbh>b}DLnqzUHI}BKZg76yAP$(-Eh4nq`Zy!RH>k52J1ufA#&BF^)Ot zbqB)2WW{I#$s%b$098`FHN}r0A_2%^iQsh!DK~{&zKErzWt2)4(Y6$pB&8o%oTpC> zBLjd77^{Xi0S=ib)&VpiLg1h(J5rBTV1j951EzJ8EkXS@lm3-Rq=mgoz?SDQ)pc!c z9dBKF7u6aI6~)k~w{Y|3P1KtW0Sr%{K7*B0tH|cEMptc&#l=Nw1CA{V`tkV%2px_T zgcQJbq)bf)It*~ipY3ysLu2*Z1SC~Pw6Z@3{`{uqC;KMDA{M4?IB&?%)RbCfa$1d5 z21>}V<7Wg#IVM=FN#JIJIPn>`Td8%LQB)>^N5TstcNzYV`J+%oGqz>ka0{B|IllzP6Ll1my^geAOO7GA<8&SVB z0Y~JET)0_JG{W}A6)RN#)|U-x#Y96lvA zM41uFg3vzK^(`r~8bDvPL|bTeYG}51F&uRqg;?CdvL1k0(og%GEWU-2fuY??J5T!3WXO<=pLg+zd9SHO{^*mGb$M-NpkLCl^9L(G|W9amE@xxdDAN=s; z@8Tm5d;$-hc?_4|eHkyj_C1Wp9XQznyix@Z-urRfc;^jlZ?EHvpZ#5Yksk3$G!wF?%-d3?VrOLdua5w@xxcXjhEl}5iqJ@ad`osdF&tJ!txVH zA%V5)ui#tH{%@#uUdLUlkKmbK{vS}x-{Xsh$XJUpd%$Lv1?_9w&TOW83YmqwbCz$u z-&mPGcltE@==KsuRxy?;E`p(hc4+2EPds}$jj6UlLD0=|WxmaGv;;vP)aj5@913H2JV2tf*8*5uF+}Nn2 z)}lyzQ1BtTxmZbnSurnbSg3&rBvJ`DZUQMcfsB`yVm#@zz87s)0+WN@5Q8rNWxB5# z@S1+i0vXh(a!^?CP+2abvbuoEN*R?(MOcS9FAtYO|1{tXDAynK#5ioX>uB!oqPn($ z>WvLaqwlnO=(PLj_83(kp+6W(wRmv?h6*@KaVjH{Zw+0$0gE9-XWJD1k*cN%GKW~u zGmQ}b001BWNklFA6SY)waPPfKxc8UNU}a@Vn1{)vD`RLl z?4hx{fwk*b@#6EZ;`Nu`L9;!;R!Z!Y6R<`~%1p&mfhlh^A;f=}<}^ zV;T=4SkB%u+H_2VBS<)G3-~zb*3hWkz&meW#&`bqMeJ@juuv*X5e}Q`PuXjR~a^)JfcNz*z4=32(*}>NKmRyre(Yw#zja)t_#!QL@&{!CzKa{HN z_I@@senh6EVPf)qq~O$e>=%}@T421kRIZkyNGXvXu!WEU<2WHqRGWq?jA`ltx*549 zfk_J{6EG5k-2f5;U<#h?-TIm1*Mbl|~{f|yGMeY6&1-%Zvaoys978DJGXCldA^au}Q7~kTp z{nK<`8VOUhyKx0;&wUg9S{0cKpFryLeOOpIjeLO>kOM}B0BobN==kpJ>|$qU2g}P# zD3{AJR}Aq|wD~9rAz&!yfyhi~ksj(uQv${U6FNr}oX}!s$`qyVK`mV;qeaqWt|bkt z$NH0@0ARb>#I2GuaFpWgBYH)dp=XACa+TtBo%5De|o#8a2>u zU{Guw0eW=b=C{bJ3PKmZrUxU_!=Q6Gl4K@i^EqVPERv3U z?4T%h#l;FTps0e2#tx4%Y$NPWO|Q1!$|BZ&)#+tHC(9r`tfYy@N(;3!_*U z_1-2nH{XGmh@s?_F&V|s={3-qh>C!yC{z_#t_xc4SehS{{a^-{}i8o{EPV1M}7tM&0YNTrN6+%t3SawK1QLi zDkHYjY~bOKJcFk`{$HY;Swbh)#UFp;f5CTu@*JN0>_0-$&EfZ+{tYB24&L2-4d491 zpP}8^K_Q#LBM&`^hc7&hOe&Af?bq?mzxp~Fy;qUSl<~DM{~IhXjM$yBl0KH@8w=b!;>K|9|F7X!ss7B-P^iF^jkK`)iSV$Q?q#hikoWk-q@ z5ftqW#@O8M;PQ~FAPN##IJHh9leh^Q6_TxBp`aXE2 zGf0vp>Xs0XyO>L+7@|*>wJD;&drIoPVR1;scav&QHZ#X6nQ=_XC$Pft zKqH%J=ww_qC{xgAiXp0+s7&8=#7S+`8-7YWfm0glY&U|;T+7muPR#S-0=~0<2quw{ zCsnh%TAYdfCn;g3kQ0GTg4R}7l-JVR)68z|GUcuT=zJXr7hQ)_} z8I=bgLprNL2QFU1ux8cwP7k$O6`f8OON$kgQg4|{nuWl5Mqq~p(x~q%MPU*NnFq3m zn0-_oP^~I1SrLIF!Z$>Art&S)`dxD|-wtxjIA@hsQxg9fFfj*c`bMNU(!zk-d)>wjLygos# zeh0l)9nIP%YCBul+1|wZHq)HD==I}bgK*3ekRpIDK}4?Sq4B6pJ!4-Qtz0S5V^iae zK05Esc_nrRS#C0SlmSZpQjrsqF|D8|$7y#!aCU^@Kv|?bHzREBvh0T|E6WntB`{hd zW3-TmM=77Qi$dXenW6*^b=_0@*Mtguz>4diopZKd?NO|xZO;|J*aTy3k5ghJ%n0@G z!$rc(q2QW2cV$eC`ZA_zi!l3%nM5{SUZsRJkgbFR+7~K&BhpH?kEM{(0A#}U8StG9 zkxHcDIXM9+NdzE6wBFc2Z&1TvT*unxE9f+KP{|dMprlQ|g;;`X4H6fafg0b4wER7oSByQO%UHa##leqGC@N;Lvu?L7-@K zj@#q?KAA&0i7sc+HBrV!=v<%dF%x9tx}>&{UPreql~A!Dxc=Rz{~Ea$TYX*u^9UGj z#@noSQonGTwH$5V@cI)Sce9T5-&SQDy9(?%=zmE%xk7BKU8UO2_{g2pbCh?I6pTl`f}PgR!>dYqS`G+(jg)bbI`au=<|77pX`;Pd(FCz_QA9SjXjPTeBrOD^QFGU z{IBBzMT0<45F`kLqR}=uVT#_S;q)Ot{R9;Kkay7SK3*6Uow-<<)T3D&s2;DIqE!C$ zH+Sn$OzVS1H(eWr4sV*4QBQ{;Y^d>EyU7XM8S+^)YbOW;`bNBodQWYnW*aFuX)NYl z+_jX$xwB=I%dP;F@l*n>_7FEVT6pvFHr~3rfm(}TlB$o16JS%0_%|-(F-DKAewEsS zHl2XaqUR+9DDm=16c!wK`4n=6jIcf(m)c;eoYe16P_K4T+iIcL=waAX1D#hPKtzYl z%ep9(bEvG8P+2WwX>}1L0oY1#oh-bxC(%W+9a&(gH|(L)YoXn&qP4q)`uaL{Z`?$4 zr;b*wjdq)cO+Eb`fc zq?F~dc};7gZjYpKk5Q`Rv2wbE%2Hl5QklY-WSV^}hEA)B+WI=Kz5W(1{^AYn?ljP! zOz{7+_olIuq}P?$$;gPv$UXC|weQ{RmEB^CY)T?U_D~WejU84f(!#=_>Tb_ zhJVZ-12*7){^7BK!K@xp8hGT9?O8mdnXyEPVs}#%*&Dl?UA@#^Z+|cMB_eVOt%R(XHhy*_q#53qmGlGawX&6CMRr*s0#Q8W~Am&stcToG0> zTXhMzkX^0L*hY8DFhip-L`0p{5!?7R*v=R8sMe}#vNWPLs4@+xd&=ZfUXu?{t0~)t z^PK=Ik3nFEKo8s7C73q)VU_{PV@ilfP+BzL6dY#q%O5pv%7QW!JXbyl_K=lIK(^o4 z!{GoUGImY7zh%o=_j+p(C5C6dKYN{(4d8QWXM4+%v+@G}@V6hf&)dZAZUEO` zbbq@u5zGh+X!bCgX?DJS(w}$7=gXGKwrXXgMF+RA|MrV;yZ~pu@bhpBRoOfgJkTPC z)!yZpvQiuAgij7>z7v15rM=zh8fJ4AqPcBbXN}<(kFU%gSBg4nGH5_j$@{0GtsM=A z!l)jbwotOH`9mOsdobq?fg*wd0%~%%-s^xbj&q#p%=p?RWFo;SX$^kqv5B=PRBco z|DFS*>DOs{{2VMN3rq`2EMAg1nQnuXb=DNL((R8HT$VcI0(ddI9Gm&D)B9qV3y9ER!Fl}^J zb&qtUJ7yxxUcG9}4-zs06J^>?$0M0{EK;)LguoA@w#4CG!*L6S93-*!AJ& z7`v5`$$E&UBMe6oCLoDn1(ou7R4QlS7wRHQMdK~iHTU2;s)29Ko`j6R`6&AOBr{|L zNMkITo)>a$O?;{Y*3dXC`_^^@9nxbw%(z`#kmhDicd`dltB!Wk+1@&l%s9*lm9^GJ`g^cwx43#y!-)yPyHt)^Tl9-&-QJ%U_g zb1i4*JOgI$lxsUG=HUA}(E;{4H}J}vFXGKNUd6>TPvED%^a9?w`Wjxn{D(NUbPiwr z;$Op=^~Z7h_PhAwZ~dRx-n&9yB;iVwDbfWP(i{{hF(egXMl3BUBE zpTpC~AH#O%D!%#F|AR2xLcck{Pd@X@`0S;>gyz9b{Lvr%1M~)OA)0n@?&8nl7rypi zBReUIJ}Hg$G9b{-ZYs_RcEK5Lvhle{x3B9sFiEJr2f702{7LO<^8$$>56#F#N9|Mk znyHKnnxmy5OglEY{%T&VCS)pO!nq(nGc8m-{tT2(4F<&ktX!Ls4wCP)K=u950d({q zj*21DuT1a9AGL?t^S1cJB7px86ur+I^C^4zLs0ZncEj%XbS)^Fp4f91fNq|)Li}OC zs01!|R43T4A&t`%7G6BKQt*W5>Udk5|9 zUGy7W^x8vd)sG?rjE<)WV=^SB!Zcz+pic6}N!zwun^sHP6I+@+ei9Xfr{d8!1Tp-0e-=`oa6Sb>)^YS>wqRO=|B| ze0=e%kK&onKZ%uNk02-?M>bzaHeW%;%OgpAIEgEpx3G7a5G50g;ttxow{ZLN+qnG7 zcX0jP%NRC$m<)#~`wmK;F*oA55_9A8cXp-9>_JzUdy1p=YiIwcPTDW%YCYtTO zFw!Uq&?QhYRQ4v#zzA9rIAju}PV_~1xg6;1PG+ZVH)pa+;Ietpkd}ICtL$iYC{&-pyZPNh;75R+grS(yCcaR@rv)_mLk&f{9WQeFlNit?ISkdl8V z=)<;HnsV@3+UE*|K)xG6U|~BG6b*+M4*N!$z>)XLaS7ZSS9=1S77VsQztuq5HfJ+4;JCH-PAV_q7juJ%P6e4T`GKQX+cJ!}cD=-5u0UoJJTsB4f5`su#VyLn-i{JmK#O_`}QECEm-w^4ABi-k< zAesh6HEuhcxZ1VRUU%Cv5%)XjcbaJI?qGX+12=Bp!i|kxZ0xqt>JAl{H7)ZR ze_24(6wd|0*4RR>y%YhAjFK^^Vj+>wYUjedu+DKJ&zX6VzK(~!jsX;GOiHcYU17prDE@mo15GV!&0hTTqc zqtA>1kF4x~VOtB?L}NXjBPIv>NKllYlad%n4NeP)&eucR#(pP|B%0cWjhi-5OYb)} zD-($(#_KGK&4?c=TVXY659Ni_N?g$tjc1%LaW{7?A8 zPyZSkjR}6^7k(AT%MRYX{RZCK{2tzW=S`eF_B4LxCw>jdB*dTm@jphh`5KVvW2ycW ze*M?}CZ_QUJhvuABP5YZNXxBvkWE}<+3AsS1h`M<)C3-tgkvf~sf#T6gJo*YZ}7}} z!OnLn${tFv=U}|fPkT^3$l=&c!F??T==&Id$iqqCOh23{YAuG|`kY$5OT`;6RJOdWeplf;))&HIcX*O_E|3-a?)46HcGok+-!FYPn zvq|64l^?CJ6@3pY#hiemXHV8~e7%fZ;ES91&VC2iZZ~jktBvi}07IJANb4cnwK9+( zFq^<*m74}gV*I3_rJ4cAm5`QSvSHYgMYmPzht^k%SUX-uq3WYl4&;ZQOV*txo+IpU zcW|)XLANnf6Qto-05X0?PBa$-RBA=kRx7Bl*HB-fxy6!#qItH@Gg)P#L@e6P+q79>CBWN7bK?s3ufL1;zyBI; zzWo-Wb_32d5&c%i*h@6paYA<83-f`%)|joQ;D7rF@@ygX(CPKjZ1m9$N5Uqmm5OK& zhr$SzK#;ESWMGj&5x9uSSb&Fdu88XKGdOYS5^Ad}sMc!6d0yMe89<1!kWIW4=ag$@ z$Fs6IOl?<^hB<@7GC5{UQPJ$u`zD%CGKbZ4t3MbBV8R4~v!T`QVsm>Jy*~A{$npxM zO?^0|7Fi{)`NjDQKwDht$+7IzDZGN~3#(R^Nt6nx$?JNet{s@m&9 zFj9XM6s4I0-$x@EULS&@yno94Bx5=fHeA}p-a6Ow*j6i47on=@QDSXjO$C1lck=ak>9ZFtu(lm z4!$jbF-uX*`b?0&-R>Za)XZqkj+;ty%W=$c%{7|yjQiD~KR`qma4E9P+ic0`=wbo0$O<3FAr5x8aO=i3bUGcBt5rPu*b_K& z_N*2hCQ~WKge*WBqbT{_skUF6oE!xV+k(+7wwP&O8g`3m^OU5{6pS=c=Dw!SagXO( zwp3%s1sRw|c15F*`x>$rkdA|wK2*lBWS()e*eQDt#zYrBG?9HVN$ zluih(gv%YEs0M-NT4^EG#*TVT%${XFgP+It`LNePw|Rhry=~mSeG^x1+`_e+TiDob zq0?t^&cuQm2+pEIX}%>(RL~`Tjg$$cgGWJIdmUtNHL?`uXtRzCd!E8=vRbL84b*;~ z%!`yEAosAPdKGJ{Y@c7n+WIP1mzPkdVOO~<225=AUtT`*K-YURMJ-UQ*J4gWSd8hd zJkJa~UucyTvcmlC3iziidq?D&?A%l~HUYso06hao5{@kv7!zTkJM1!%?jD7=j!q&RJ znPpcAG6d8aU-L7JwkG3yuHQ27bZjUzs*l6hN1mCjVfHol+~aYGTRZQeHFzIe2XEu$ zm;MB;y$PHo05UNmbdb$!EWWmS498C#M=qB~b2r5HtsPW~S>)@h__bg8Z$*CUfBx4tS{|$C-?crSVkyTbO{ zZ}o9&w}Xvli2ZJah{F0=1w?5$;d}fI1U_4F36L5SB>}|dPJH7j9e}CXNMoTXyu6R4 z)gsnURZ*@fuvskS#DSi{Mm$Q;X%Dfp*}}nA7u^Gbq9cqbrb!@Cm~1YByoXY?fZ9qK z_0<|`78I@3PzZ{m=c#Ro$`l=sBE$w19WEKHg^F?kgbmo3ez z$wChuKC@IB@ekE z19oGIRw-MT`hB$b8fe_!#s2MWuybk<$LNQVv@VsZ9-jK#2|V-MBRF>YJPNf_@CvKQ z`c*i70q_c#X6YE8ptpAe*I#=HSKs(9c5mN8*c~7lMqtAefkLtZ%lQCBhb=G(f>Pd? z?l{Qi3-I#=kv-tJB>3HEcF}4@h=)TIi@q9^AcH}aAfz@P+uf%QMq@IAwQXujy{udw z6E}ccu4DcDC9I#jh?Ntk5aja$T8N&dNetwQTWJCzS7@*^3uq-FrUREUw9|=*1q7LB zN@d-&TIxMa1UMWFdg%9iqM=4pF*^M29kekR&`e?^OjxoS=_=2VhYU+HDh7j4KoK5? zpeUIzWGxdkvCILUCqa)+t1Wt>44iG7F2{keE?ozKVP6t_^K$GNi=g!@A zU-Ty! z@&QUkm8Ot2N@?o|M{2Cb_Iol%ZF0ea!`{vouD*X6{canNJ^mCv^TZPf@&(beR+$cV zMi{NM6maliV`e6+lWGU%1tkb$*T?zVdAPM(k~aZi$ELM;6VDA!o`^}wXGw&I?XH7OXWvIb5nqk!+?T- zPof)n_;YP4uAimsVQYq>1u8wBGDX?VFvfHgVc6}U-Ppt4?iOy`xQ=T#HgNscHn#RV z=*vE2*h5xxbtYkCS}iRWYo@TaGb=D;V@(++sxEH26%^pnx9IU@JXm8O)6zUk@C_)+ zV{(3SFI%ctMB{g5by@U9mupqjYgJ*2a&PB;aO&)n4|Kg}QJmL6O-L+pW$cQ?k9mi%)U?}*tWVVxrM@{Os{&+2S2RIZjBW^i z>HCCbYKaqctheVc01dwrb-UTw(MCAzORK+X-ZR!2U>H%exQmG3=%^zgs-FeQr81Vv zYpMzAF~%z*>rr}%h2sYL{S6F<4ZzKzSU!zP{UU<=DqOd03Oyl`aU_N5i7>dyrpzJh z<>C5_8`!C(u^|IWN(IQ8Wa;z>7}cBj?9aEmto3(h*0QCj-`sT#Bnjd`p^PGi;X0Z4NI3+jjhmQ?D`W)pdXcA8QgNTKMcF z>+Rsi#w+;#$TKO3Mm#_aVyzq;^fkER2!rfP}e&!_dwG(*rl{ay6WfhN{eGK~>SFyA8I*<(! z6i(oU7ydH@`7&=Ahdb+ot^4wkk#H#T}x-nrxc^KSfMg={ELFzdPZ~O z$fL)!E!gNfp~Hl~4W2+yKJ{3P2Nq+a#n;{~=3K-ln zeq^3}2#Ws5+{&ZB2tmiF?foi37XA5_O?1`Y<1CV4iOU+jo31$Ei42@^LZboY98f! z5%tw7mR9SiEY(r2Rz$~>U=bOa!V==fKZ-C4`xtiH7&IE_>>QxK-$v945f5Y0Emhq{ z1_=bp2>ht_leC(eb{i?+OR}MxoiK|{O^>WeGC_Th#!&%$w#x@SMc z1+TOMH>dz^5gE5E!1t|pU&mYD`a|se;4KVVEllYOKS_}1O-f)46+*1kN+{)B1OZ!w z7y~BAS86D(oNxq*Ym zzKkW;3j}>P7epoF1j4+k?MO&B5RF4 z9KiG0HU=CVG~|5*14|XQoT&+s1wMJ6JT}1)UN1@5&BGcS@wF@jupP^?azui{w3!n$ zB^XJNnb%ug;WdSra9T+h)+-cPm&fl&dvXp}>6NVHLDx|GH5{r=Y< zXp;O86rJxe66%||w#Y8{_p$YBkZltQn*?fN%<;=}poy5Quqk#?x% z^QCZN;{|>{%El1nq?wekxQ)KAEWFdPuwO3!;4N(2-oR5&J&n&k^9=kTKz|UT(QYf- zifnt+F1pyl#?O*#V%CjxJfUpYWCn`b*DfYSHsN6+E%E|n#rr;%>q{t;(Jrj=k2ebJ zvDy70Any?jnZ@z;VM&{PUR~(9Hmk&eB1hcmvdGYY#yrx;Sp-+@b+UtS4qjStMnO^T zA(T>J5z;c`ZL6e!f~IIUWB=J9tsh{|M9$Na#AYl}WAZfvU*izNP6w^VF1EHear5SN zT)TD~w>I{$b(XiBF5rx;&pNp!t+pU;Dt_emSd2^4^X$U_ zBOXs&&T~F0m6Cv<^?FSJ(t5RwYPl>@F*)u9u7_uS{DlX)-cu8NK8Ca)qZ)+PAZHGk z@p`7)q8UH%UN5dc(lx|b&~~mEvod8F+tyv}{t#eV;$sysNGQ=U83L0~43@Hf364** zBF4BHNQ()ay;rs{qT&YzSf$(ni}s8W`WOya)a?oZfHQeKW~?v}T~QiqPR0XF#{&ee zgG#xGTB(k5NkP%9SAypigsndT*DFf@Y$A#dMCU)7TScLA2D!p9I8H${LNQ@H7)op? zEOXJF&m-g2;N(ikX4yfa1OS#><{*=@m<4Q{PgrGU3kzHUC5{`$7vju*6lrgc(Hv@F zKCCUNEYnVm9|$CG`uy4P^!`enTL{@d8!8%pffj`z{*HId8d7%1i(oTkz3Y85xH?_iKP zC@r7C@wE&1)*J8O3!ndK+Bd=abl^T;GQB~iGB5MkM(0*LCKASHv0 z=8d+vDba?hEva6wxi=O_mP>3=WF0kHFi|Ol`C6;Gq59n1P{|gc^ceJy;QUvnH*cJj zoM`Zx8WUC;PsfNkTO$UoarYQw%5S+jIG)BP_wqREb@#Fdr}xmK08x7lJ`51$-yeda z_i~3my{~x)ihg?U-94Ro8WgpRszVEk1eHby$Ox`8=(#hXpSQKx3cU?FZJ?D7VAG3F zy8S|2CQ}K7U3_GdURV(CmP8zN0aW9?J$qmS{egMIo0#xtK+%=ptY6Bw(+nZB@{{lTrVrZP!vzlCMdeyMPs{zeq$)D^KndF85(0a$dM_U^HHn>DA)6- zEmu)rsi9m~$5S$H*s3l7q+tbFP&Dke(ceEncejaQqldUp#^Xq|?WS~GrKTL)Hw_>v z1_Khv7}0D4iVCAIm5fNjVVu_q26=uUAR2!&(WUsk4f14P7RTcZ{G5YgQNc(d8qw4z z9HO~@fZdHfbPhVgSmlEOqa>~g;QJYzJXyhGPaMO!M^0kt#7X2UYoaMS^-6FvIb8ns zOL*_)KSpbV75}Lu_(6$I<000TiipD)?e;)4Lf2PHsMRWn2L#5Z$QG(tKK~@@ryoUT z5@XodM&cHbE0xjQ-vlkJ8aq4UwA|~Dk;%HKEY%P!pT@bTejM93ui)zU{se=@9yE9AG%;VbJRfJCY#8L9>JH-6r}&CK7br9Vxi&Yili8l?-M$ zuUjqZbSWURcI+6+mEz2VLBUH1Ksbt&&B-xDRvCd20uIz4<-8T(Fh`>z1ylHqnNaaO zInEW>ROfmEpB$Uk)t&(=XIZI8b~hz2CUQ>v%{7eANeizqN9P)f{4BD21T1C&hG`2` z@;O&U&yZt_j`Gw{jWxN;s2(b>@vuLT=PfIizzvT@0G2Jq_HTTxutlwty|hXzFv|D- z)BpQ-9%zz$H&AqO{k^A+P{ zW{+Lm_l^Qb(|aiy%Z)};B~N5Mn5UrpH$ev$uQ*1F#e#sREPe^|pK>rp4_Au}Oc0gv z!wv|Z6Xhyc;NkpHhPZK`HsFX&S@`*CP@`ZQ0a6+;jmbb2plph6r;Rth_X@VQHt@M0 ze-2MQ{WM(Pmm>NeHW&v(NUaEMi^7FrPD_9U>hLwjWw~CSWqA@E!0}qa~&Wl?KmCP}E-2 zLtv=^MSbeK7Xks$`BNzsP%h+AWU(%vlemuU;lK3Pe(Qm*_teL>55Yvzpp$8BJv=uK zcb{14DjSR2bxZEDiRCzt#E{9zBj|Ng?NnS*9-H{ zRa`|{rd5VZM}U#`kg+os#_424CVEedIs3zw#ESo^Gl*5n#~4qTpE@|7>_#`#rqhI+qCWivSoPrRd~S~9H%I3L^*CU1g0!f zFm47WP6dg78kt}P88;A+PUfgc0a##(3xd&iHcJc38jO7epp!UXTkw_H?95oRI@hgs zyxg%Fw5a2A&fuHf?^Gv|-edc7*hPGCoLj)0+LaC&yrOBT@)H@#b+BMXaMYSIDblNq zd+NU$cDbyqW-k&cF8(cH5iYfI94Z(YkZpz{n^;(YwOHr>gdqO_jx!RenQ4YGT^^Zi zAnPCt@gmbD(oyow1i&TxUD@DT1k;DvBaSvzC>3RtWuforl@R_H77H_@#Hu}vi zG&bMITD6Q^Hinm*ps=)p5qwY?AUnz6)UlH|d+Y>q8BcUYSJpm@eDyq#Er}!;2@jeN zsuUEbiEh7~D+-J%0IEQvT^rN;jqZ55J}cQpizSDspNnHk7vcFhGbWW%WYHa0$E3W5 zazJVzEZlGT98DY-_ly}!-~7##wxnRoIHW%uqExI%*IxQNd=x)#JS(I2h*dB?Z87f>|K6tw~Ve9Y{??;({&W67Cls}KFZ|)NoFDm6?Z4ep)wGYqJB6*vm2q?C+mU$jDu1w zkJS?u6sV_Jr7oie&)meKXpBy0i2dy@n%iA*C>)1mnrRZjm?Y;CL}W`(4yCHHO>4_F zl*PQKj6ht_^T-m!atMY^F^NNrSxxV>(LZRQzt<9jp@?8@G{z)0?Jm^V6h;pNv?(V1 zTyAM%RHXNd0h|QI=DtdzZJl6^n=v&w#nIFArIm=I6zltH>3WF^V&I?WI4* z@H#wPan_oWS$$0?NaSi5uykA3lHkY7E6%y@`5 z|M*{E?}N7yb_Sw9I-JswDHNcX;5QkgBZ7vk`1(1Vy7UNs?8{#g%~5!4zaj(KRo16r z8tE8N)&^O_WK!uIvy4j>?6-5&N@3`D9E+h*uirth-A1?5MYGWo$NBw62W?(!VKq_i zA=EZ-m%%1=0%Oy9uf6V_R8a^L7<=rPm-rk_(FRf{+TMF|A)A;7BW zQE6aI`3OFOpdf)}D9IJIOlbz8+M;9&+qQh3KW74e^EquP);2{R*D^)z+Go$3$N9bA z|Lq5wB!3hrx(Hl;RN#5P>+eHQblyIxxrJ&JQZJcfkier=)3S-=QAxmu-4o8McB_q6 zyA6k}j%J_LwnGKyWbb3EgN*gO6fl_75WL72SisWx$nna#F1n{|4K;0?QkW9}>_8L0 zV9C*+EPluLH9#VXvO|fTDNXzcG|b9)olZr;GnYa6(^wTJyy z4k#u3I7%I-u0h-NWF&KV=`8FRUO6~0Gv$g%*T zG+4`Ia}qNHj4eV;CVfn%1JOl=TSC^WA>&nrDJqnQNe`KX?fQ`vm7rN5~hJ;q$mo9&U!jfC)U8IbsHHy>}HKZ0%tC zpo{IjJ&7mFERZahaC>JDkA2~1k?q`sJ00NCvtPmPL0^a`m%sll)bbfr3Z5AIE+1RR zc$z`49pc358qOVGLy!P@CnJTqa`6=4tRwN3Fv${hFUh>)byS02;d|(BP0VI&QGtIA z0xAD(0CE{3#=Kaye5jquvB~Shdt>J#nYZ?sW(}3pjSN)IKLXrj64Ol0>=8UT*`S#M zkj>AuKxG_?1VXAyCnawq}S|SMvi+&Bb5fi8VZowf4Jw(CPunBD>Ed>I;iD6 ztQCE%Rts3I=iz%=m2UTA>~uoxb|b?Sok;6^-lxO5gHq8!x!|B)&!bQd#K?$%on-*= zbI1&&lYFN)LT@laJSGt2O51yFts;PCQ1p>6QDc#tkG2eTTA?`4w|9H!w}zO6)cVxx zLl!DoK0)9~+j*s4K)G5#WvPtX$`T6IGV+DI2!Q(x@Dde4rzm_p>|@w&VQ|nyZ?7$S zqGK8?g(ES-;9fWpr*O8Euo}xBt2v|hfdL&iPYXWH0&T+-wfC6clfWq3#$7ijEKzNp zXAng|FOgPwYHpGx8h8nEK7%U-X9=i<{UO2u4H(E?jAVn1snI&24%GxJ%Klg3>p-!LQ8YmR`WqPR-o%N|{1|pOZs6UQzk%Ibw^7Oa z$QC>VULMtB>nNXk3@4uWA`bR2g5kQ0a=+y zP@vW-gU@URm6a7d@%-oU#PeT-S6$MOP`b%9KxJ+yEK-y7%@TgL&`S%uYM(L?WQE)6 zqj6r4?Ma}o*YBd&X`@F_wAsei<}Pk;?MdrA^$p2XqYfTFiJ&h5&oCxqlR$ZbLBB7- z?THh|asJ{XvOcgKpAWX=GAZt~+hVdrxAy*Eh#?J^oD7O38ZEK4Of?gOBF8G3o&+r& za0M?p~m zVtukfH0js#P>`9gnYGtvvjT7mpgI|=ew^lO7&2yQE>pDNzV{s+xV;F|Q1WG2<8zm5-do=-4ZlfI2T=%Ij z%(+a^AQw;`q97d<)k+0O+h`tiaO~JI)uvQYJ~-6r%xJ+*#;+u{#--Mpexzat8$;NnB@GlR zusCNk@pLK6L9-mPfY==(Y?pg%+p{r-E(0`MJgmchzsIr1Q#?ea2ZZq?390I!s-cS( zK_&K)?_`osBhHvMRI#AU{5mMpN8>Qn5oi2GM$%|P(>m2(W`JXvfA;qs-zNoxYtWDa zfjIYgJTX^NfQ0{!!#>*02KEVxZf)V_#wKpw*ut&tU9`JHaafiSWh4${W*CDkS-UMb zJS)QM{YvNaX+YD?CtgmK05TjWX@OQPJdSy}v<6IN0YFTD2m*?pBEc#JJ=It-16LSz zMpvH4B)aba|LfoTKOX3M&;41L#fO-@M(1yKopf$l0)z#R>>6a}kg|o99d6eO1vK=U zSvD~5m9*XS`p($e9KsVg;}CAN0XKXHUVIf!CN%BOywh}UC#aG~CX<7cVF71$hs>Sg z80Q=aF`W)DiMyDLx&QVs8d0`~E$u8&l35rdo1rP@SPJ`}Q2+oS07*naRAP9?qef&E zS%<|O0()b?;SV)DjibF`q{>|4=VvL&R7FA%)$t7=G(cubCMt`rV}#=z!ps?rbI%|t zoEIQfK~ckwOLhE^5vm0-le5fB$COdZwVQ=tiRl~`UuVeHY}c91T{B2$N&_hx-Yf?* zfSAQf4-qrXC{HhMGtgGT&Iw#hWNeGBvCtA}0Kgw(bR|piy3byz6aQ4z8SgmHz>jBSx`B(7TtKY_?KS0>tKsld9 zrR1TuvWo5?5@z|+7aze=J_B#OhhybB>iKg(wvLHgLNxIZjuQ-G7jEe!yy7Y*lL(Z; zk-~%EiCh!)``Bx%ar|7`ZnmJ=0+*G*n2z8u?%)sehm4D9wy0>UWo(ZlD-&56(uw3A2hApS5B9OX zb_}`TFjMqyAz1qF9~TtWLc{z>HeQ~uhj*UELs0a7?#!p}wGTnjPv1SeuQRqrOMH`M zp;>T15_tj1=0;2RdT_horH^Z$n+2%mU=r-6K0_0g!vO4I?WZ|~Up4>%L{sjLcZiUu z7B%TAASjwaEuRxmbfpqtZHd8>Zt|T$EUxprUAE8DXlbk(nAG$19Tf8piiHfym7D;3 zWYP&6joY~?&arKdUGH?0@AhM1ppp?uJxm-gJMt+CsT>v zJQrsle;hyeSAP|S)l~tH8LCs%UUeFj8Dlk;B)G_Cq}__wS?3OeK?dH+)+WP<0jYq? z)V7Qx3XxND#l&}E&@3QKZ`&mU(e6C#T80U@V_mKH4OytT2N2X0-Cm1L-3NU1pemx=IwcI)Q3X9z zzxRFstGizZ)qGTD1m|l;x(No|4)$+c#m0Nz$M;`(8Rbd^&-}zs;_Rc3p;)LOo1-{~ zCU=yq5T=r0=*;euB$c-CrwJ&p@u1g3zuOgKw?vqt%0`uaiRZ$kl>1O7L8V-lbxaCh zvRY`Ho30<+JJj@v^MS>zQhf#O&HC6w zxffaeNyZa{FhZ|4R1Lt%7}wr^7ys_x{=fLj3oqac&;OLHcf+uc{YDF6I2G`f=g9(* zGbMjXd6SD{_-Vz{(wfuwij=oY-?!mMB5d7~|Zx6ROx3RIk zjm^z{Z0_u%J0M^-FJ>s)$##YkV4 zHl`Q=Y>754wrqzcLyy3s9-9m{%cJMoN)U(b>q8`D_9a}aI42B%FN`;3v~kU#iIbWH z(Hy8KKRR58NE|h#RKv0?5(BQmAuzN z%e}J2A`KhoBfLO`_e zIX|S>pan{0opOV)&hexTXp6j*6S;RXA8T%6(A-72n1|=925r_YY6lSkJjrvWh~fb{ zA*EyJ-%y0-SKwp`tn(UEg3G$E>z*WK0@Epw<#(GLz~j$o3$4AEFzmjAB<>*}IB>>2 zxK0_l;u>=K3WlRB-rtRIYbV0){uIq?iQtF;>=!GQXDVYk1^q;z-oDl(HV16)wH$if`yp% zL)ZyMCN|%vE%??{i5W}A$&0_kG#en{J#c(64rA_MZ2c4fl>&R_ZI#0r_zscZ&sY{fvj8=)GLQPw#6Uf})?^dv{M~Zb8w-pnaCu zo9gjB9W3>t^rA6KmQr;2qZXBP0xGA$OL|Y8C@TtM& zh&qCk1W}Y=7^pbHW3shUy#4Ld3Ml1=hUP~K%*#Mc~92tjf17Zs}-P`FdDxj#*%w(aNAXu^B zph8_yKLgjxz$4p{`aZ)x!eNBYK^xt658ZBzc$^@bP;)YaW5-IkaIT7zrmIdo2F4?IGM4sM{_wGG+L;xuHfwX69_6b#DfqhpTPRX zvzTT}Nb<|bRn{?WZ)5lJ_fS864*g~Wx8HgR{mB#;&R&4$jPR|0`$rg0GI;)LFQBq| z4p-lL73I|`jy?0!=L`F2NuSDH2vT;=&tgN=^71V(w@Y%wg9X>#CUIwo7#6`j%1I6^oe6T{98o{WP? z+S!?uQqPz7*cDc4zptiFws696%je{pnE;W`5meU<8Q}kYd%KHIu zK5Bosm(RN2{pEgNujgmuW_SVvvMynvO(VhJvpN1l{dkP8CTj~&N;yMf)!8#s6V0;X;t`%Kn=YYth}S(SWY zmqRidV-QlyEsKI^Mf>OshFY}AC<~lxn(oh(;h4(4BLxTk&zf=w>ry-5!$Bl^VPtia z{r$b~zJzbT_)Ywc|Kh*I`iWD5eC_Pgd}j~G){YCyn&uIbc#|z^*o|rShNR*P0A@NN zN*6~K|J#BJT=#0V8fq*uN-Ole1LpH%s>$6a3W^FY%1v6?qEmuC0+6VvjhZcyiDNov zq$|dN<}=2Sj^4xIu!0hN&aQpJ7#+tL8IVsq5a#kNc7I8OqK6YplYraL;&>3I*a%Z< zl@f4en{zb8utzDE26p!MaeHG6o7;QX+}g#?K?_4V&s$)}Fh#AoHJP$hU)BE z{LzArtN`XDtmMO->Lu~Nd?!!8ONPvRvg1r^xMe}gXA=-D1KA3YUDn?YwLz%)e>U&5k%gz82hJ@5EO+gYnYPJ2{uop0*Jaki_vdgpBZDq+_E`-fR=={aC(>9egXolh<9XS2_e&afD6(uL1^gHYP8Ghp6BCMK_? zVH~IQDEZ8IrglM4)RWvo&7_nKYxtf90A=BhKLlQ>7f*21Fq>J#a}rF3ZH(BFlyxv+ zOv?E_=^+}mFiu>I$kd&T(T%!@lZnVwk(k0U>t<;Hn@1s7MIl%bKvjz)kWQ>@G6lKz z9yl&F0+;Wj#*1{`OC?6{8+x}qst@+;_#^SHdrB7PRtd0gr5zNnUd-1 zOJS3Y;mmj{nz`d)2k^?6mLA2l@TiO}cHFVaP+7c;Qx(*oCa&ZR%KtZWK|Ba}r{zXy z5hp`Xlyiy2HZylDh$=7EctQJJ$l{h>4U?;KKC&>O1tDSoT1`*x zXr4$ZEJI;3W?hm;nsrC!w<&rtCfIAX(C+rIR9_a^xchl5#sNpgq3PG$Pn`N;peWDp zq0!R)+@(+7YafE5pT2u`UuR5E^yw$RaOgcYiI9!=aFOz!j%_#N^de)QO9xQtP1^?4 zHgIF`Y#&DgqDJI-7TnHW&DQM0r+FtRYTM_1EakE|wp7AOjhavlVt{r(!d@rBZYRcm zFTx-mnYM2lPEb?Lkv4kI)r5oX#MW>^S|*LAG~0i}h)(Y2I%XiCrBA2x0+U`c

    xW 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

  • v!sLD5Fz05@*j#N~Ic;Kt2O92~ST7={Aw6TD>N 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

    @(9wnC*o8y_)|<vnV^m& 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%0Do~5=c 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�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�=Er5fv_bQ?)Q`5`nbvO0(lgR+%!5&VI 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

    w92A?Hk$$6y?T*ey?z5~@$tWc- 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 ZKeLj+xxa1O9nUfVfv2mV%Q~loCIE2S9PR)B diff --git a/assets/js/ie10-viewport-bug-workaround.js b/assets/js/ie10-viewport-bug-workaround.js old mode 100644 new mode 100755 diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js old mode 100644 new mode 100755 diff --git a/assets/js/lazyload.js b/assets/js/lazyload.js old mode 100644 new mode 100755 diff --git a/assets/js/lunr.js b/assets/js/lunr.js old mode 100644 new mode 100755 diff --git a/assets/js/lunrsearchengine.js b/assets/js/lunrsearchengine.js old mode 100644 new mode 100755 diff --git a/assets/js/mediumish.js b/assets/js/mediumish.js old mode 100644 new mode 100755 diff --git a/changelog.md b/changelog.md old mode 100644 new mode 100755 diff --git a/docker-compose.yml b/docker-compose.yml old mode 100644 new mode 100755 diff --git a/favicon.ico b/favicon.ico index 861e06368e910eee3740bf05a0a4f84a12a38d14..f93bb944c4db67391a3948cac93157d33babae4d 100644 GIT binary patch literal 5430 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 FzX1Rv?;ijF literal 101879 zcmeI530xIb8^$l9f(vSuDRt3xtj^7eVLV(DVmw0g$rr8 z;=bS>U~2BN2m_dIfrPPcnuxNxD*&iniQdC$z8bLO4rEHiU1Tnq*qLqP-0 z#^7w2YHu*~N7~OXeY={yjo~`>xw(n$#s))~XKV~LYo>26b1@hiwna&2v0cJoh#zZX zC;`v_%?k$>l@+h&#aYM@ZUI_++eH-^CjoOWkOo)l_ zs@T5#zOyT94BL?KX6-$#{M_s-mrI;8(Pnk;f@K{VuWh=@uxFBsYf7@yS8v>((d>gl z`BobWeRHbB#68}XPJQF;U{mthUVT3w8a=)Kgx(!}8U`Nyd34?O)nc!Ao`0@w_X(S? zBqY|G@N+mXQrbfueE)N&X^4TzS=dJOs z<==_&e*0~&Ez!&S&x{*0*^s}vVNw;t&e9F-Z%*kmv-XTm!PkrJpZ%>}-L@yb8Fk1b z!ezayYn^NF4jdS9Cp3CS>ehtO)dwuzTDf|qI-^fb?>z4Hkiez=?S^#e^6IFSqXrLl zSnSn*ZKA(d_=$Q~_u0+=(eBH=wyQpD?ViwVOSeJqycDoHU~$UE@#U^OH!mXme!}|$ zH#PgQ!-y?!t!&-5if=!hZC=WRoeAD6D_(V4zr!OUq~w$?2dg(28I@=|F8PzbHQXbj z!V0X^ZW-~Tea?h z%arfNb+6p~X!2{3HM_1`xi+arO0(e(^~Q~!9P?_3UB6Xz26Su@v2J|G-8=4^C$Djd zzqWAQfm2_19=ErFqwma8#ocyK>r`X?mopCq&RcZRF}Zor!{1WMB(@E2>e*w}^1#tu z?rrq~AfyL{$g-KtZ+u?EBrO&pjEvGHU6NTCT;fl^Hm2qs{61uNB_7E7*Vbyb+bU zwm#k6b8uLKAn(w_zwdrB#A3dVdtoi5nZ*88C)_Gjm0{_`Zhb>)tdE~L7DSpR_T__y7F2*%v z{SQ-5jZF4E`7F;dOTRqhh1M=!r9se!^=BNn^h`}%Fu{L7pFc~N zsA%)#VoL95w8!TD(qoAut9A)mwES|iXD-@2bMd3Z9}ns53AScF=P4klv5M;oV!14 z@Y@4ddUzylUYhjT#LLTWMPF#?dUxN-DwmpES`t;d!fPYuI(~mVdY_leoT!mwoH~!H z@*v^x!cozYo7V&!N&aP2nb8lY^=@LgtC79^s5z?w&bLXJRcYqzX@7Q{9d&Ye;P&|y z8W&9n>>5=l=+^%3r^{}i^?s;x-GfP9@iDJW`Q3lUaj$lz{c7}Eb}M*Wn0M#!M;`8d$!$l3UFGn*RW zh1v!9r>uw#|0rp3V)^;qs|;(f`j*GXu?uGI@O{6_j)wkqt~_7IZ|Dp0ol?T*muh|> z80S6un$67-6K{RBv`U5HyMMd8c&W#OTc3M)b`4pxVv|q&yskgYs?cG`k}~I9IXKhX zq~mdi$|w4jT2(hSe7*aj(pR=j4!xOB>gKEQ@zL$tk4y7iR@LiRkAv^K?T#7m9JJMN zGrC~?m-nZ}k4QaqblERqrCao08#ef}4lX};9~0KmJ?;4Z0|$Q{*5F*hQANTI-RQij z@fU4(ebe~SES7$87pCQ_9dp5Hu&3+2>))^6pSJwO&5wrf_X!V=kDlv$*JoyIp$X** z+#G(e_pyGl(>Dh6p1a#^Tfo8|tJ|LOe%E0{;(_2T5k1>ah`AE$JYdJwq{|Kd7_ngG zlli7w`vLj=$K>z6b?G}V_4E!e;RW`|Ez0#-Tf7v6gc*N{>ZyA=StU1(y#YWoHyhD1#| z)+KC12|hDqW^O?~1&(`<4SKKT`ef#HZ`!I! zaN}N+sv+&i9eDoW14_Et7f|43HG zY3zIASSNuid|sF>PAX}E^Z>yycx}8|?c3m(yTBRVTBh3HTFO4DSGGO9YX2v?WGAJ@ ze|FS+QnnA0O9k8D@f`;yiN^jDf|2m~G$5Jl=8H4#6C8s#7dP|px(M$Vd0~9UlKg;l ztl$E?xwwDEu?2#r@Yb@ys5nG$06xtOiP(Qh-~*r6?LQSU$o@zj&Be_;ye`7No)^aF zWl0dye+q8Hn~QrRjx85>z+1~y`&&!dC-us(?ryoND}Mq)yHpQ{z8pbkx?O z#=lk#%hPK7Tdtknl4|_xRZ4$8HU9N$l~GPL{xec1XO5}ypEEjYYfIg^n7akXH73Xxz+gBqf+L1^xpr^qbh#S3K;`z z1^gbEyfD4(&+iBd74*o9Kyl8eVf&UB0w4H70`~2^Fh891S3xvfeuQe~;TeRQ*$M5ut z6C}W!i+cr*@m+y50oF3T?SBUW+!A~ZUrtaOJ}>OQIO!ol9K1Ol<8h4NT}Qk@Ufj2e z;=GbTq!|;*===ZpoqXR38pB)5RQp>?*(deNwx?I^|3sJUq}2G&j(ShZ>K*^7C?Z*b zbW1_QCskQJ#b=Jff;sSfCn48?x%vMAj@=i`gs&lZ0Y10P5hrpIguwG&N*I^9xM$B<#)+O6Y=FNf zVBgg0s!h+rv5A5=;jLw={jH_!lX{(ze45&y->J>kX>m+y)-dd*G-&)E(srPAXf391d5^x;8 ztRX+r)-sNvUV?q_+VP?%eHLZpytM#nc~7Rd=I2=BQNNGiB)qv;<$Zy^H)twwgtwMi zGXAykUqWE=+UOmu6)5Um2!0W8Em|8#R?|@^|AB@ANL$O;=fVX1KT4)zO~rmb$4K0e zX1fz>YO2~ly&tIdPyatTruruLv42XmdH4?gsfJQW+Y5Lv;Jiv~fL>!>!g6*R0+C)V zI0vtdL!0J%wd4-c@;yPj-V%fTgEVk$R-VfiX&HmwxV8CNUTQ$UAMm-4m|Lr&wkaAK zAYDno*sNuG$3H*&;W`UpoKj!jtF+qxgl+k5=!vw8pd7p&;~Jm*pSZ3_f2D!v)t<{# zn)4^;Tgh0Y`wG^=n<~S7JkMu>hVT^y&%o=k;>c7%z_z0f5@U@_#Xx--pM>Yn4O8u( z-X~Q1XFUI_@t^T%eA>r9@0Y&|I7iJ8@Sd!l&#qvbpKX()fcHMa_r!UE@8PFtn1=M% zf*;}63qs+~YtS=~CL{j<4b_k?Blr-WpT7{}_eY-RoZtX_sDPh!%n|s*%XM%pxwkxQVphN4L4hUuOEk0Th_mH|k63%-EYUXM1-=Pf>e5k4n| z3#boum9TGY5wMR@3z7h|_326fi83AdficTA zKZW#l0sEl2x{deC_GkaAslg8E+%VPte{ZXQQ~UQrCtD$4KR525a{CO9aXu$}R;nl9 znA)L%V_lZve9bw4a7@U#ob&7n4N*u(3*zCKm#`gVT^V`K6`_K4@KrU~BQ1^Z6Kw^Y zzYc5A-dh+iuY+(*a}FSJKpQt>=6#V|1@b-fF47srE04t?-&#QcJl~Nd`H{{I`w%CQ z^YE`o%h-%PHI5UEgO~Ok65};+{xvRZ?QOQ>1i=V+bH;acxgPN%(hD^3z0uln8rQ!A z=j8lLI)J<|)&A-I;NRN*+WUVfIw0pUhUe>=2u5dlAEe#Q*Nv0q}3v^gt)0|fA>E#qU%jGgeD*)>@gy;cV&Z1es?>VeK0`XSBdXTodfDd07|rJ*F! zGVVf1OMPsS{NK0L*9p_^59;l%qx88|y%Ewj=DHj3n*Y9fJ^FkK^ zuc3{A_xG1I*dYCHH`V_C?jFFg%lm<(Jkk=*vCj*f;T;7P;pMzZpBLkZ_ZH3pg!ez* z$0W{3%eZ+Bl?1#ld9S2brW8;LCuBzZ(7;|Lve)RXK0v~rnZ$HPho$sG3wu0+m18*HGht7 z+oh$&;os{$9)Fo_8=P+NF5w$$NFT3HwizUjJU(t_o24I_IL>r0{?N7k=sO?m;+P*X zrx`NcX0#2{Lh%#Xkw0tOC=&W;c6xNRtRd6wN14=*{|5!Cp;x#8KVV~U#!r}=!LSQ| ztxl9F1(X6x0i}RaKq;UUPzopolmbct6AHY5eg6Uc?z*Oe`tYxS?0)Z-E9!Vt)G6!c zcR;=fEH%cI5AZuB-v+W?#?P4f9b#Fr2FT3s@EZrl3I@Qp1lhfQ57g0H)G6!kitR?g zQe#Y9JLm)k0oKdd31g0Cmoe20CQ& z|8`^lSAV^vEN$h+^`AjROMx|>f4FY-Pw)SKAV#iT6%ZQ0S!AZ#KLRynXZIxU*TL$P4ff2#?REI0OR>d#(5jZ&H`W12;>8L zjqMQ#*gmp8jw$v9)>Q>$#mrs5teb1Y69MPJ%;szxiM ze^3xm1C}>s+%M~98;1jGC}U)ucfhNlG{}mXx_*w?n}BgLW}asO7zJDa$G5RLV22an z9JCY2*rboeK8~khfO+J8`l+A~s0a!HW8*cw0)7IAfwnBu$G}=p3}n?zT|dWG6xati zR(X!yAP8_y>!$QK=zOINY4kz z`+~86b^HO0>*hHp0!!}IpP?N4xVFxN*ruM|fNds^ah$QA@%qBRDzFZ00ny+Jka>+g z`wy>+pWVI$0su9T`Phe(z)`?+a{Mr^?ch9+TFLyz&Z3;z;Rv#xB|A>2EaO5H^&>t-3>r3 zSvSj5bLwMUcRcoe37UYSfOAAvZ7K?||1fq*EYd-M)(G&K@*-edj72*y7{|nIUJvVH z{!`#1@CMKtb?5}9170WF{w`oyQ+3LHJU8=EmxG`)s0u7Kj@en@cW_w1zR&xY);Jyq zgKdEQQ9J+2*rey2!PtfXj`z&0Ju-X(IKJ8Lruq@!@1Ga4|z&^+}Yz=CFa==n6kAm#a?}GOM+u0L%fS18@Ag?Vy0w@R^ zKrv7P6c-eNF90kxmbC+{mvufPJhyr8;JKA41(X6x0i}RaKq;UUPzopolmbctrGSwF zR{t&ogKw&B+6}w3|3hyOaSMOPw0F8=Xvpic4K>*LNnf0cF|faTtiYA!H*VO38hrim z#U0Y8-FYNa+GB6^mU(o7Y6!9>=mj2sPXtzS)b~U{5M@dMrGQdEDeyEaP#qW79B>W2 z4QK+mcAXWgipmUt4Nuby8RPgAt?H2H|j<=Ampre9;$P)lU06$}4nrq=%F@A=y z5U>vNHE;!b%@!H?`OGpP>)>ZR4MAo$2N})+J~Ht$%=3VsgHjW{HVGM7j&+dV0NX&X z@iT>9;0BO&>_)mP$jqiA!x_MGcfm=(w$DoZA0vM>kmufobUmQg@*^YLP^-aKY`51@ zfr{T?Q2ML>qsFhAf7JY`?q8e-)cx0B$nNuljz^EjS&Z+$J8>j0o`3G)ynGHT1+w$} zwjbr+0(vc{p5OTVd~HGzNM#;QLZ{5D!?MYzFN>W~P1qOhsn? z-drtEB(s9zcs}?~!37}CeHm%KN7(~CRv4N3fkYtdSci0LkeO-Ymu35)ke+up*3EPK zgCro!Q-_hj5$Lhf$TS+T{be0Xk!}hyGgI;JL81DY6%@y7z^?&}S)QAIJK*ms>oK-B z-vhPfr(v5*)0vs6`2R$qFTv}X6~=MSJ;#9d+)VRbFaXpAnb{y@;5(K-{WLV)SwYCexJ0(zGA=~@Lna~TRDHl0k+3Qz`5*u@DAYb$+4U?j&0WQ zF8Bpp2aKOFoCfa!J>y3kKl>lY;c>wJ90Ps=y#VLKHv|pfI|81U`J`@aw?&{8;O}+v zx~_u7fb)wRU|(T9Y?n?T81PzU9n|hSpm+U(YaM4qdComy;3E(Lcs;C-`ws!mY2*N4 zT=JasY;)?(b)W*^L$DjLO{i%yI0CkTjbJa}^|5|g57X4Z4X|zWm_IU|1+0VTiUTD9 z#~#lk>(0!x|FR!T5zt#KV}8|ugTvNL!F@Y?lS4P@jPY7aa?bHMhe@%+_5 zYry&WEASnd2RPsHzSR}f2G0Rg#xdvuSjTYiIhYOR1J*Ga^Z^`SWq~z}b44k@Yk3{K zDZC@RyjCPLHTKIFz-xfxmvuRT!a$i)Kq;UUPzopolmh=S1=4>T2@isg%yR$0F4Zp8 z77xpL?`_lLcwpMwKCpRo+|bKVlku`W>`eNad{TX2kH61r2whTb(){pbnq8fY%k#m@ z8MuMRzo%6~{hk)&P^J{fNP&7d*b{UDeAmdx_&&q;IOcDVQAQl&J0jOen3wAnrGY8? z2|Kxta2+s)jEv{z+9mU^%qSy{am_UnFfZSm`Tl3h_@0;s5X8X^aL5Lt$E@&=RfwB^?>V6=8W^-F~GdP1FlJ# zGCBV|#6dq$#8f8i%+fxDS zW8S%dYqq9Lp8pmOo(C+m5HtcWfGXf^umSMgBoqt+N#GFp0K5z;1Fq*z2G;=d{sGzo zbG8r%n2+oAfX@rma}l@z7>7JB>k0#X0oRRbWxz0x&85#Ah3)o*uii~C9 z-2gS71SW!RfEpJDTH|mm@G0;DY`;>#QnNw90>EBin@L4HjyJGJ`B{$Tl_>?3 z0vZL<*A4#u^M;SpPW=?$dE*m7SsR-h_}o}vcf-%Sc-qbfPJcf``W~)Ra58iTkJl;k zKh^6L({ZVs54Bba8%sca?M|dQ{|5l=ym=7Yi-6W%!bUP^r`?J4U~m~!)a-v6$}h(C zXy;sH}&w Date: Tue, 17 Mar 2020 14:03:09 -0700 Subject: [PATCH 02/43] added travis integration --- .travis.yml | 18 ++++++++++++++++++ README.md | 1 + 2 files changed, 19 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..8d22b516cb --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +language: ruby +cache: bundler +branches: + only: + - release +script: + - JEKYLL_ENV=production bundle exec jekyll build --destination site +deploy: + provider: pages + local-dir: ./site + target-branch: master + email: deploy@travis-ci.org + name: Deployment Bot + skip-cleanup: true + github-token: $GITHUB_TOKEN + keep-history: true + on: + branch: release \ No newline at end of file diff --git a/README.md b/README.md index 19b4e226ed..8bf8b03f95 100755 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Welcome to the Mother Tongues Blog repository. ### Copyright Copyright Theme (C) 2019 Sal, https://www.wowthemes.net + Copyright Blog (C) 2020 Aidan, https://aidanpine.ca Posts are copyrighted by authors! From f1ba229933b3536e8cffa1976af32a947e9fa80a Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 14:08:41 -0700 Subject: [PATCH 03/43] new travis build --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8d22b516cb..1caa0e6115 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,10 +4,11 @@ branches: only: - release script: - - JEKYLL_ENV=production bundle exec jekyll build --destination site + - JEKYLL_ENV=production bundle install + - JEKYLL_ENV=production bundle exec jekyll build --destination docs deploy: provider: pages - local-dir: ./site + local-dir: ./docs target-branch: master email: deploy@travis-ci.org name: Deployment Bot From 9e55bd3b393b7ef317fff32f57641d2cdab0eb39 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 14:12:40 -0700 Subject: [PATCH 04/43] exclude vendor from build --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index a44c01771c..e38d05b76f 100755 --- a/_config.yml +++ b/_config.yml @@ -60,4 +60,4 @@ adsense: "disabled" # Lazy Images ("enabled" or "disabled") lazyimages: "disabled" -exclude: [changelog.md, LICENSE.txt, README.md, Gemfile, Gemfile.lock] +exclude: [changelog.md, LICENSE.txt, README.md, Gemfile, Gemfile.lock, vendor] From f17e60bb65ab10939fdaaece6dc4843edec37596 Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Tue, 17 Mar 2020 21:13:32 +0000 Subject: [PATCH 05/43] Deploy roedoejet/mothertongues-blog to github.com/roedoejet/mothertongues-blog.git:master --- .gitignore | 5 - .travis.yml | 18 -- 404.html | 219 +++++++++++++++- Gemfile | 20 -- Gemfile.lock | 81 ------ LICENSE.txt | 8 - README.md | 24 -- _config.yml | 63 ----- _includes/adsense-under-header.html | 12 - _includes/disqus.html | 14 - _includes/featuredbox.html | 61 ----- _includes/pagination.html | 25 -- _includes/postbox.html | 51 ---- _includes/search-lunr.html | 21 -- _includes/share.html | 34 --- _includes/star_rating.html | 9 - _includes/star_rating_postbox.html | 9 - _includes/toc.html | 87 ------- _layouts/archive.html | 21 -- _layouts/categories.html | 23 -- _layouts/page.html | 24 -- _layouts/post.html | 181 ------------- _layouts/tags.html | 23 -- _pages/about.md | 14 - _pages/categories.md | 5 - _pages/tags.md | 5 - _posts/2020-03-17-welcome.md | 19 -- _sass/_stars.scss | 137 ---------- _sass/_starsnonscss.scss | 92 ------- _sass/_syntax.scss | 69 ----- about.html | 250 ++++++++++++++++++ assets/css/main.css | 338 ++++++++++++++++++++++++ assets/css/main.scss | 15 -- assets/js/lunrsearchengine.js | 52 ++-- categories.html | 213 +++++++++++++++ changelog.md | 67 ----- feed.xml | 46 ++-- index.html | 278 ++++++++++++++++++-- robots.txt | 1 + site/_config.yml | 1 - sitemap.xml | 19 ++ _layouts/default.html => tags.html | 115 +++++---- welcome/index.html | 385 ++++++++++++++++++++++++++++ 43 files changed, 1801 insertions(+), 1353 deletions(-) delete mode 100755 .gitignore delete mode 100644 .travis.yml delete mode 100755 Gemfile delete mode 100755 Gemfile.lock delete mode 100755 LICENSE.txt delete mode 100755 README.md delete mode 100755 _config.yml delete mode 100755 _includes/adsense-under-header.html delete mode 100755 _includes/disqus.html delete mode 100755 _includes/featuredbox.html delete mode 100755 _includes/pagination.html delete mode 100755 _includes/postbox.html delete mode 100755 _includes/search-lunr.html delete mode 100755 _includes/share.html delete mode 100755 _includes/star_rating.html delete mode 100755 _includes/star_rating_postbox.html delete mode 100755 _includes/toc.html delete mode 100755 _layouts/archive.html delete mode 100755 _layouts/categories.html delete mode 100755 _layouts/page.html delete mode 100755 _layouts/post.html delete mode 100755 _layouts/tags.html delete mode 100755 _pages/about.md delete mode 100755 _pages/categories.md delete mode 100755 _pages/tags.md delete mode 100755 _posts/2020-03-17-welcome.md delete mode 100755 _sass/_stars.scss delete mode 100755 _sass/_starsnonscss.scss delete mode 100755 _sass/_syntax.scss create mode 100644 about.html create mode 100644 assets/css/main.css delete mode 100755 assets/css/main.scss create mode 100644 categories.html delete mode 100755 changelog.md create mode 100644 robots.txt delete mode 100755 site/_config.yml create mode 100644 sitemap.xml rename _layouts/default.html => tags.html (59%) mode change 100755 => 100644 create mode 100644 welcome/index.html diff --git a/.gitignore b/.gitignore deleted file mode 100755 index 8312df086d..0000000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -_site -.DS_Store -*.swp -.sass-cache -*~ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8d22b516cb..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: ruby -cache: bundler -branches: - only: - - release -script: - - JEKYLL_ENV=production bundle exec jekyll build --destination site -deploy: - provider: pages - local-dir: ./site - target-branch: master - email: deploy@travis-ci.org - name: Deployment Bot - skip-cleanup: true - github-token: $GITHUB_TOKEN - keep-history: true - on: - branch: release \ No newline at end of file diff --git a/404.html b/404.html index 622a70154b..f910c71d68 100755 --- a/404.html +++ b/404.html @@ -1,10 +1,215 @@ ---- -layout: default -title: 404 -permalink: /404.html ---- + + + + + -

    + + +404 | Mother Tongues Blog + + +404 | Mother Tongues Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    +

    Mother Tongues Blog

    +

    + Smashing the lore of language technology! +

    +
    + + +
    +

    404 Page does not exist!

    -

    Please use the search bar at the top or visit our homepage!

    +

    Please use the search bar at the top or visit our homepage!

    +
    + +
    + + + +
    +
    + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
    +
    + + +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +

    Explore

    +
    +
    +
    + + + + + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + diff --git a/Gemfile b/Gemfile deleted file mode 100755 index b8073827f0..0000000000 --- a/Gemfile +++ /dev/null @@ -1,20 +0,0 @@ -source "https://rubygems.org" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# - -# If you have any plugins, put them here! -gem 'wdm', '>= 0.1.0' if Gem.win_platform? -group :jekyll_plugins do - gem 'jekyll-feed' - gem 'jekyll-sitemap' - gem 'jekyll-paginate' - gem 'jekyll-seo-tag' - gem 'jekyll-archives' - gem 'kramdown' - gem 'rouge' -end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100755 index 52ff7c4619..0000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,81 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.6.0) - public_suffix (>= 2.0.2, < 4.0) - colorator (1.1.0) - concurrent-ruby (1.1.4) - em-websocket (0.5.1) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) - eventmachine (1.2.7) - eventmachine (1.2.7-x64-mingw32) - ffi (1.10.0) - ffi (1.10.0-x64-mingw32) - forwardable-extended (2.6.0) - http_parser.rb (0.6.0) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - jekyll (3.8.5) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (~> 1.14) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-archives (2.1.1) - jekyll (>= 2.4) - jekyll-feed (0.11.0) - jekyll (~> 3.3) - jekyll-paginate (1.1.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.5.0) - jekyll (~> 3.3) - jekyll-sitemap (1.2.0) - jekyll (~> 3.3) - jekyll-watch (2.1.2) - listen (~> 3.0) - kramdown (1.17.0) - liquid (4.0.1) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) - mercenary (0.3.6) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (3.0.3) - rb-fsevent (0.10.3) - rb-inotify (0.10.0) - ffi (~> 1.0) - rouge (3.3.0) - ruby_dep (1.5.0) - safe_yaml (1.0.5) - sass (3.7.3) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - -PLATFORMS - ruby - x64-mingw32 - -DEPENDENCIES - jekyll-archives - jekyll-feed - jekyll-paginate - jekyll-seo-tag - jekyll-sitemap - kramdown - rouge - -BUNDLED WITH - 2.0.1 diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100755 index 23417c87d1..0000000000 --- a/LICENSE.txt +++ /dev/null @@ -1,8 +0,0 @@ -Copyright (c) 2020 Aidan Pine -License: MIT - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100755 index 8bf8b03f95..0000000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Mother Tongues Blog - -Welcome to the Mother Tongues Blog repository. - -### Copyright - -Copyright Theme (C) 2019 Sal, https://www.wowthemes.net - -Copyright Blog (C) 2020 Aidan, https://aidanpine.ca - -Posts are copyrighted by authors! - -### Contribute - -1. [Fork the repo](https://github.com/roedoejet/mothertongues-blog). -2. Clone a copy of your fork on your local -3. Create a branch off of master and give it a meaningful name (e.g. my-new-mediumish-feature). -4. Make necessary changes, commit, push and open a pull request on GitHub. - -### Acknowledgements - -This blog was created from a fork of the fantastic [WowThemes Mediumish theme](https://wowthemesnet.github.io/mediumish-theme-jekyll/) - -Thank you! diff --git a/_config.yml b/_config.yml deleted file mode 100755 index a44c01771c..0000000000 --- a/_config.yml +++ /dev/null @@ -1,63 +0,0 @@ -# Site -name: "Mother Tongues Blog" -title: "Mother Tongues Blog" -description: "Smashing the lore of language technology!" -logo: 'assets/images/logo_no_text.png' -favicon: 'assets/images/favicon.ico' -baseurl: '/mothertongues-blog' -google_analytics: 'UA-100872710-18' -disqus: 'mothertongues' -mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' -include: ["_pages"] -permalink: /:title/ - -# Authors -authors: - aidan: - name: Aidan - display_name: Aidan - gravatar: 7623fd3eeb0acbe1084fecc20c3093ae - email: hello@aidanpine.ca - web: https://aidanpine.ca - twitter: https://twitter.com/aidanpine - description: "Lead developer of Mother Tongues." - -# Plugins -plugins: - - jekyll-paginate - - jekyll-sitemap - - jekyll-feed - - jekyll-seo-tag - - jekyll-archives - -# Archives -jekyll-archives: - enabled: - - categories - layout: archive - permalinks: - category: '/category/:name/' - -# Pagination -paginate: 6 -paginate_path: /page:num/ - -# Other -markdown: kramdown - -kramdown: - input: GFM - syntax_highlighter: rouge - syntax_highlighter_opts: - block: - line_numbers: true - -# Adsense (change to "enabled" to activate, also your client id and ad slot. Create a new ad unit from your Adsense account to get the slot.) -adsense: "disabled" -# adsense-data-ad-client: "ca-pub-3412143450191416" -# adsense-data-ad-slot: "1363087678" - -# Lazy Images ("enabled" or "disabled") -lazyimages: "disabled" - -exclude: [changelog.md, LICENSE.txt, README.md, Gemfile, Gemfile.lock] diff --git a/_includes/adsense-under-header.html b/_includes/adsense-under-header.html deleted file mode 100755 index ee815bad21..0000000000 --- a/_includes/adsense-under-header.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
    \ No newline at end of file diff --git a/_includes/disqus.html b/_includes/disqus.html deleted file mode 100755 index af4d8719c9..0000000000 --- a/_includes/disqus.html +++ /dev/null @@ -1,14 +0,0 @@ -
    -
    - - - comments powered by Disqus -
    diff --git a/_includes/featuredbox.html b/_includes/featuredbox.html deleted file mode 100755 index f5fc132550..0000000000 --- a/_includes/featuredbox.html +++ /dev/null @@ -1,61 +0,0 @@ - -{% assign author = site.authors[post.author] %} -
    -
    -
    - {% if post.image %} - - {% endif %} -
    -
    -
    -
    -

    - {{ post.title }} - {% if post.rating %} -
    - {% include star_rating_postbox.html %} -
    - {% endif %} -

    - -

    {{ post.excerpt | strip_html | truncatewords:25 }}

    -
    - -
    -
    -
    -
    -
    -
    - \ No newline at end of file diff --git a/_includes/pagination.html b/_includes/pagination.html deleted file mode 100755 index 5cf9c93e10..0000000000 --- a/_includes/pagination.html +++ /dev/null @@ -1,25 +0,0 @@ -{% if paginator.total_pages > 1 %} - -{% endif %} \ No newline at end of file diff --git a/_includes/postbox.html b/_includes/postbox.html deleted file mode 100755 index 80160e2d43..0000000000 --- a/_includes/postbox.html +++ /dev/null @@ -1,51 +0,0 @@ - -{% assign author = site.authors[post.author] %} - -
    -
    - -
    -

    - {{ post.title }} - {% if post.rating %} -
    - {% include star_rating_postbox.html %} -
    - {% endif %} -

    -

    {{ post.excerpt | strip_html | truncatewords:30 }}

    -
    - -
    -
    - \ No newline at end of file diff --git a/_includes/search-lunr.html b/_includes/search-lunr.html deleted file mode 100755 index 55865c004e..0000000000 --- a/_includes/search-lunr.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - -
    -
      -
      - - \ No newline at end of file diff --git a/_includes/share.html b/_includes/share.html deleted file mode 100755 index df5aae16c0..0000000000 --- a/_includes/share.html +++ /dev/null @@ -1,34 +0,0 @@ - diff --git a/_includes/star_rating.html b/_includes/star_rating.html deleted file mode 100755 index e81dc72d49..0000000000 --- a/_includes/star_rating.html +++ /dev/null @@ -1,9 +0,0 @@ -
      -
      - - - - - -
      -
      \ No newline at end of file diff --git a/_includes/star_rating_postbox.html b/_includes/star_rating_postbox.html deleted file mode 100755 index f511462aa4..0000000000 --- a/_includes/star_rating_postbox.html +++ /dev/null @@ -1,9 +0,0 @@ -
      -
      - - - - - -
      -
      \ No newline at end of file diff --git a/_includes/toc.html b/_includes/toc.html deleted file mode 100755 index 8051f497d8..0000000000 --- a/_includes/toc.html +++ /dev/null @@ -1,87 +0,0 @@ -{% capture tocWorkspace %} - {% comment %} - Version 1.0.6 - https://github.com/allejo/jekyll-toc - - "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe - - Usage: - {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} - - Parameters: - * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll - - Optional Parameters: - * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC - * class (string) : '' - a CSS class assigned to the TOC - * id (string) : '' - an ID to assigned to the TOC - * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored - * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored - * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list - * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level - * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content - * anchor_class (string) : '' - add custom class(es) for each anchor element - - Output: - An ordered or unordered list representing the table of contents of a markdown block. This snippet will only - generate the table of contents and will NOT output the markdown given to it - {% endcomment %} - - {% capture my_toc %}{% endcapture %} - {% assign orderedList = include.ordered | default: false %} - {% assign minHeader = include.h_min | default: 1 %} - {% assign maxHeader = include.h_max | default: 6 %} - {% assign nodes = include.html | split: ' maxHeader %} - {% continue %} - {% endif %} - - {% if firstHeader %} - {% assign firstHeader = false %} - {% assign minHeader = headerLevel %} - {% endif %} - - {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %} - {% assign _workspace = node | split: '' | first }}>{% endcapture %} - {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} - - {% assign space = '' %} - {% for i in (1..indentAmount) %} - {% assign space = space | prepend: ' ' %} - {% endfor %} - - {% unless include.item_class == blank %} - {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} - {% endunless %} - - {% capture my_toc %}{{ my_toc }} -{{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} - {% endfor %} - - {% if include.class %} - {% capture my_toc %}{:.{{ include.class }}} -{{ my_toc | lstrip }}{% endcapture %} - {% endif %} - - {% if include.id %} - {% capture my_toc %}{: #{{ include.id }}} -{{ my_toc | lstrip }}{% endcapture %} - {% endif %} -{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} \ No newline at end of file diff --git a/_layouts/archive.html b/_layouts/archive.html deleted file mode 100755 index ca47d31da8..0000000000 --- a/_layouts/archive.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: Archive ---- - - -
      -
      -

      Archive of posts with {{ page.type }} '{{ page.title }}'

      -
      -
      - -{% for post in page.posts %} - - {% include postbox.html %} - -{% endfor %} - -
      -
      diff --git a/_layouts/categories.html b/_layouts/categories.html deleted file mode 100755 index 75963ad94c..0000000000 --- a/_layouts/categories.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Categories" -layout: default -permalink: "/categories.html" ---- - -
      -{% for category in site.categories %} -
      -

      Category {{ category[0] }}

      -
      -{% assign pages_list = category[1] %} -{% for post in pages_list %} -{% if post.title != null %} -{% if group == null or group == post.group %} -{% include postbox.html %} -{% endif %} -{% endif %} -{% endfor %} -{% assign pages_list = nil %} -{% assign group = nil %} -{% endfor %} -
      \ No newline at end of file diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100755 index 1c7bfccae9..0000000000 --- a/_layouts/page.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default ---- - - -
      -
      -

      {{ page.title }}

      -
      - -
      - {{content}} -
      - - {% if page.comments == true %} - -
      -
      - {% include disqus.html %} -
      -
      - - {% endif %} -
      \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100755 index cdeda5e829..0000000000 --- a/_layouts/post.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -layout: default -disqus: false -archive: false -post_class: post-template ---- - - -
      -
      - - -
      - {% include share.html %} -
      - - - {% assign author = site.authors[page.author] %} - -
      -
      - - - {% if page.author %} -
      -
      - {% if author.avatar %} - {{ author.display_name }} - {% else %} - {{ author.display_name }} - {% endif %} -
      -
      - {{ author.display_name }} - {{ author.description }} -
      -
      - {% endif %} - - -

      {{ page.title }}

      - -
      - - - {% if site.adsense == "enabled" %} - {% include adsense-under-header.html %} - {% endif %} - - - - {% if page.image %} - - {% if site.lazyimages == "enabled" %} - {{ page.title }} - {% else if page.image %} - {{ page.title }} - {% endif %} - - {% endif %} - - - -
      - - {% if page.toc %} - {% if page.beforetoc %} -

      {{page.beforetoc}}

      - {% endif %} -
      -

      Summary

      - {% include toc.html html=content %} -
      - {% endif %} - - {{content}} -
      - - - {% if page.rating %} -
      - Rating: {% include star_rating.html %} -
      - {% endif %} - - -

      - - - {% if page.last_modified_at %} - (Updated: ) - {% endif %} - -

      - - -
      -
        - {% assign sortedCategories = page.categories | sort %} - {% for category in sortedCategories %} -
      • - {{ category }} -
      • - {% endfor %} -
      -
      - - - - - - - - - - -
      - - -
      -
      - - - -{% if page.comments != false %} -
      -
      -
      - {% include disqus.html %} -
      -
      -
      -{% endif %} - - - -{% if page.rating %} - -{% endif %} \ No newline at end of file diff --git a/_layouts/tags.html b/_layouts/tags.html deleted file mode 100755 index 751999617a..0000000000 --- a/_layouts/tags.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Tags" -layout: default -permalink: "/tags.html" ---- - -
      -{% for tag in site.tags %} -
      -

      Tag {{ tag[0] }}

      -
      -{% assign pages_list = tag[1] %} -{% for post in pages_list %} -{% if post.title != null %} -{% if group == null or group == post.group %} -{% include postbox.html %} -{% endif %} -{% endif %} -{% endfor %} -{% assign pages_list = nil %} -{% assign group = nil %} -{% endfor %} -
      \ No newline at end of file diff --git a/_pages/about.md b/_pages/about.md deleted file mode 100755 index de24d09b00..0000000000 --- a/_pages/about.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: -permalink: /about -comments: true ---- - -
      -
      - -

      Welome to the Mother Tongues Blog.

      - -
      -
      diff --git a/_pages/categories.md b/_pages/categories.md deleted file mode 100755 index 5e0add40a5..0000000000 --- a/_pages/categories.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: categories -title: Categories -permalink: /categories ---- \ No newline at end of file diff --git a/_pages/tags.md b/_pages/tags.md deleted file mode 100755 index 49b2c7580b..0000000000 --- a/_pages/tags.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: tags -title: Tags -permalink: /tags ---- \ No newline at end of file diff --git a/_posts/2020-03-17-welcome.md b/_posts/2020-03-17-welcome.md deleted file mode 100755 index 37f42931a0..0000000000 --- a/_posts/2020-03-17-welcome.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "Welcome" -author: aidan -categories: [] -tags: [] -image: false -description: "Welcome to the Mother Tongues blog!" -featured: true -hidden: true ---- - -Welcome to the Mother Tongues official blog! - -Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. - -Here you'll find small tips and tricks for developing language technology with a focus on Indigenous languages. - -Be sure to [sign up]({{ site.mailchimp-list }}) to our mailing list to keep track of new blog posts and any events. diff --git a/_sass/_stars.scss b/_sass/_stars.scss deleted file mode 100755 index f578c30613..0000000000 --- a/_sass/_stars.scss +++ /dev/null @@ -1,137 +0,0 @@ -/// Credits to https://codepen.io/damianmuti/pen/KmEMdR - -/// -$rating-min-value: 0 !default; -/// -$rating-max-value: 5 !default; -/// -$rating-steps-value: .25 !default; -/// -$rating-color-empty: '%23ddd' !default; -/// -$rating-color-full: gold !default; -/// -$rating-color-hover: grey !default; -/// This variable is a map containing the "d" attribute of each of the SVG icons -$rating-icons-paths: ( - quarter: 'M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z', - half: 'M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z', - three-quarters: 'M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z', - full: 'M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z' -); - -/// Creates a dynamic list of values that increment each .25 from 0 to 5 -/// @return {list} -@function rating-values() { - $rating-values: (); - - @for $i from $rating-min-value through ($rating-max-value / $rating-steps-value) { - $rating-value: abs($i * $rating-steps-value); - $rating-values: append($rating-values, $rating-value, 'comma'); - } - - @return $rating-values; -} - -/// Generates an SVG with a given fill color depending on the type of icon passed as parameter. The SVG string is scaped for cross-browser support. -/// @param {string} $icon - Type of icon. Accepted values: `quarter`, `half`, `three-quarters` or `full`. -/// @param {color} $color - Passes the fill color of the SVG icon that is being generated. Note: Hexa color values must be escaped for cross-browser support. -/// @return {string} background value. -@function get-icon($icon, $color) { - @if not index(quarter half three-quarters full, $icon) { - @error "Interaction type must be either `quarter`, `half`, `three-quarters` or `full`."; - } - - @return url('data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22' + $color + '%22%20d%3D%22' + map-get($rating-icons-paths, $icon) + '%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E') center / cover no-repeat; -} - -/// This is a CSS-only star rating component that shows the proper rating depending on a data-attribute value. JS logic behind this component should round up values per quarter. -/// @param {number} $star-size [20px] - Provides width and height for each of the stars. -/// @param {string} $rating-element [button] - Element to use for each of the stars. -/// @param {string} $interaction-type [representative] - Indicates whether this component should be clickable or representative. Accepted values: `clickable` or `representative`. -/// @example scss -/// .class { -/// c-rating(toem(20px), button, clickable); -/// } -/// @example markup -///
      -/// 1 -/// 2 -/// 3 -/// 4 -/// 5 -///
      -@mixin c-rating($star-size: 20px, $star-element: button, $interaction-type: representative) { - @if not index(clickable representative, $interaction-type) { - @error "Interaction type must be either `clickable` or `representative`."; - } - - #{$star-element} { - display: inline-block; - float: left; - width: $star-size; - height: $star-size; - border: 0; - text-indent: -9999px; - outline: none; - background: get-icon(full, $rating-color-empty); - - } - -@each $rating-value in rating-values() { - // Get the next higher integer. - $rating-value-ceil: ceil($rating-value); - - &[data-rating-value="#{$rating-value}"] { - #{$star-element}:nth-child(-n+#{$rating-value-ceil}) { - background: get-icon(full, $rating-color-full); - } - - #{$star-element}:nth-child(#{$rating-value-ceil}) { - // Evaluate which fraction of a star this value is and add the proper background - @if str-slice("#{$rating-value}", 2, 4) == '.25' { - background: get-icon(quarter, $rating-color-full), get-icon(full, $rating-color-empty) - } - @else if str-slice("#{$rating-value}", 2, 4) == '.5' { - background: get-icon(half, $rating-color-full), get-icon(full, $rating-color-empty) - } - @else if str-slice("#{$rating-value}", 2, 4) == '.75' { - background: get-icon(three-quarters, $rating-color-full), get-icon(full, $rating-color-empty) - } - } - } - } -} - -/// Convert to EMs function -/// @param {number} target - The value to be converted -/// @param {number} context [$msuxf-font-size] The base font size -/// @return {em} value -@function toem($target, $context: 16px) { - @if $target == 0 { - @return 0 - } - - @return $target / $context+0em; -} - - -.rating-holder { - font-size: 16px; - display: inline-block; - background-color: #fff; - border-radius: toem(25px); - box-sizing: border-box; -} - -.c-rating { - @include c-rating(toem(20px), button, clickable); - - &--small { - font-size: 50% - } - - &--big { - font-size: 150%; - } -} \ No newline at end of file diff --git a/_sass/_starsnonscss.scss b/_sass/_starsnonscss.scss deleted file mode 100755 index 348aac8027..0000000000 --- a/_sass/_starsnonscss.scss +++ /dev/null @@ -1,92 +0,0 @@ -.rating-holder { - font-size: 16px; - display: inline-block; - background-color: #fff; - border-radius: 1.5625em; - box-sizing: border-box; } - - .c-rating button { - display: inline-block; - float: left; - width: 1.25em; - height: 1.25em; - border: 0; - text-indent: -9999px; - outline: none; - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0"] button:nth-child(-n+0) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.25"] button:nth-child(-n+1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.25"] button:nth-child(1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.5"] button:nth-child(-n+1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.5"] button:nth-child(1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.75"] button:nth-child(-n+1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="0.75"] button:nth-child(1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1"] button:nth-child(-n+1) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.25"] button:nth-child(-n+2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.25"] button:nth-child(2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.5"] button:nth-child(-n+2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.5"] button:nth-child(2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.75"] button:nth-child(-n+2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="1.75"] button:nth-child(2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2"] button:nth-child(-n+2) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.25"] button:nth-child(-n+3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.25"] button:nth-child(3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.5"] button:nth-child(-n+3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.5"] button:nth-child(3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.75"] button:nth-child(-n+3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="2.75"] button:nth-child(3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3"] button:nth-child(-n+3) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.25"] button:nth-child(-n+4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.25"] button:nth-child(4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.5"] button:nth-child(-n+4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.5"] button:nth-child(4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.75"] button:nth-child(-n+4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="3.75"] button:nth-child(4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4"] button:nth-child(-n+4) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.25"] button:nth-child(-n+5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.25"] button:nth-child(5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.5"] button:nth-child(-n+5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.5"] button:nth-child(5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.75"] button:nth-child(-n+5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="4.75"] button:nth-child(5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating[data-rating-value="5"] button:nth-child(-n+5) { - background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } - .c-rating--small { - font-size: 50%; } - .c-rating--big { - font-size: 150%; } \ No newline at end of file diff --git a/_sass/_syntax.scss b/_sass/_syntax.scss deleted file mode 100755 index 938050726f..0000000000 --- a/_sass/_syntax.scss +++ /dev/null @@ -1,69 +0,0 @@ - -.highlight { - background: #fff; - border: 0; - padding: 0; - margin-bottom:1.7rem; - .c { color: #999988; font-style: italic } /* Comment */ - .err { color: #a61717; background-color: #e3d2d2 } /* Error */ - .k { font-weight: bold } /* Keyword */ - .o { font-weight: bold } /* Operator */ - .cm { color: #999988; font-style: italic } /* Comment.Multiline */ - .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ - .c1 { color: #999988; font-style: italic } /* Comment.Single */ - .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ - .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ - .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ - .ge { font-style: italic } /* Generic.Emph */ - .gr { color: #aa0000 } /* Generic.Error */ - .gh { color: #999999 } /* Generic.Heading */ - .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ - .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ - .go { color: #888888 } /* Generic.Output */ - .gp { color: #555555 } /* Generic.Prompt */ - .gs { font-weight: bold } /* Generic.Strong */ - .gu { color: #aaaaaa } /* Generic.Subheading */ - .gt { color: #aa0000 } /* Generic.Traceback */ - .kc { font-weight: bold } /* Keyword.Constant */ - .kd { font-weight: bold } /* Keyword.Declaration */ - .kp { font-weight: bold } /* Keyword.Pseudo */ - .kr { font-weight: bold } /* Keyword.Reserved */ - .kt { color: #445588; font-weight: bold } /* Keyword.Type */ - .m { color: #009999 } /* Literal.Number */ - .s { color: #d14 } /* Literal.String */ - .na { color: #008080 } /* Name.Attribute */ - .nb { color: #0086B3 } /* Name.Builtin */ - .nc { color: #445588; font-weight: bold } /* Name.Class */ - .no { color: #008080 } /* Name.Constant */ - .ni { color: #800080 } /* Name.Entity */ - .ne { color: #990000; font-weight: bold } /* Name.Exception */ - .nf { color: #990000; font-weight: bold } /* Name.Function */ - .nn { color: #555555 } /* Name.Namespace */ - .nt { color: #000080 } /* Name.Tag */ - .nv { color: #008080 } /* Name.Variable */ - .ow { font-weight: bold } /* Operator.Word */ - .w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: #009999 } /* Literal.Number.Float */ - .mh { color: #009999 } /* Literal.Number.Hex */ - .mi { color: #009999 } /* Literal.Number.Integer */ - .mo { color: #009999 } /* Literal.Number.Oct */ - .sb { color: #d14 } /* Literal.String.Backtick */ - .sc { color: #d14 } /* Literal.String.Char */ - .sd { color: #d14 } /* Literal.String.Doc */ - .s2 { color: #d14 } /* Literal.String.Double */ - .se { color: #d14 } /* Literal.String.Escape */ - .sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: #d14 } /* Literal.String.Interpol */ - .sx { color: #d14 } /* Literal.String.Other */ - .sr { color: #009926 } /* Literal.String.Regex */ - .s1 { color: #d14 } /* Literal.String.Single */ - .ss { color: #990073 } /* Literal.String.Symbol */ - .bp { color: #999999 } /* Name.Builtin.Pseudo */ - .vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: #008080 } /* Name.Variable.Global */ - .vi { color: #008080 } /* Name.Variable.Instance */ - .il { color: #009999 } /* Literal.Number.Integer.Long */ -} - -td.rouge-code { width: 100%;} -pre.lineno { color: #9999;} \ No newline at end of file diff --git a/about.html b/about.html new file mode 100644 index 0000000000..1609b6e6ee --- /dev/null +++ b/about.html @@ -0,0 +1,250 @@ + + + + + + + + + | Mother Tongues Blog + + +Mother Tongues Blog | Smashing the lore of language technology! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + +
      +

      Mother Tongues Blog

      +

      + Smashing the lore of language technology! +

      +
      + + +
      +
      +
      +

      +
      + +
      +
      +
      + +

      Welome to the Mother Tongues Blog.

      + +
      +
      + +
      + + + +
      +
      +
      +
      + + + comments powered by Disqus +
      + +
      +
      + + +
      +
      + + + +
      +
      + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
      +
      + + +
      +
      +
      +
      + + +
      + + +
      +
      +
      +
      +

      Explore

      +
      +
      +
      + + + + + +
      +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000000..011422c31c --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,338 @@ +/* We need to add display:inline in order to align the '>>' of the 'read more' link */ +.post-excerpt p { + display: inline; } + +.highlight { + background: #fff; + border: 0; + padding: 0; + margin-bottom: 1.7rem; + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + font-weight: bold; } + .highlight .o { + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + font-weight: bold; } + .highlight .kd { + font-weight: bold; } + .highlight .kp { + font-weight: bold; } + .highlight .kr { + font-weight: bold; } + .highlight .kt { + color: #445588; + font-weight: bold; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; + font-weight: bold; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } + +td.rouge-code { + width: 100%; } + +pre.lineno { + color: #9999; } + +.rating-holder { + font-size: 16px; + display: inline-block; + background-color: #fff; + border-radius: 1.5625em; + box-sizing: border-box; } + +.c-rating button { + display: inline-block; + float: left; + width: 1.25em; + height: 1.25em; + border: 0; + text-indent: -9999px; + outline: none; + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0"] button:nth-child(-n+0) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.25"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.25"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.5"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.5"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.75"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="0.75"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.25"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.25"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.5"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.5"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.75"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="1.75"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.25"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.25"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.5"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.5"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.75"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="2.75"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.25"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.25"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.5"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.5"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.75"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="3.75"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.25"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.25"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.5"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.5"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.75"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="4.75"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating[data-rating-value="5"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + +.c-rating--small { + font-size: 50%; } + +.c-rating--big { + font-size: 150%; } diff --git a/assets/css/main.scss b/assets/css/main.scss deleted file mode 100755 index a7e8b9b25a..0000000000 --- a/assets/css/main.scss +++ /dev/null @@ -1,15 +0,0 @@ ---- -# Add a comment to make this file sass-y. -# Change this file for any custom CSS. ---- - -/* We need to add display:inline in order to align the '>>' of the 'read more' link */ -.post-excerpt p { - display:inline; -} - -// Import partials from `sass_dir` (defaults to `_sass`) -@import - "syntax", - "starsnonscss" -; diff --git a/assets/js/lunrsearchengine.js b/assets/js/lunrsearchengine.js index e158428acf..7dfa154f71 100755 --- a/assets/js/lunrsearchengine.js +++ b/assets/js/lunrsearchengine.js @@ -1,25 +1,35 @@ ---- -layout: null -sitemap: false ---- -{% assign counter = 0 %} -var documents = [{% for page in site.pages %}{% if page.url contains '.xml' or page.url contains 'assets' or page.url contains 'category' or page.url contains 'tag' %}{% else %}{ - "id": {{ counter }}, - "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", - "title": "{{ page.title }}", - "body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '

      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

    • ', ': ' | replace: '

      -j4;iqBha=hyE>FD)y`?3YPCPcKRQaZ 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%0D=ZzKxm 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 ()$jf%#gTh9s1$WS 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 z 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 WWESU)Ono2#0000KY0)c>a&f8j+>660>8QA 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�%8S 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%0AhO*GchNSN`G>&MO~6)yNSP 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 Oi|6@q=|a33I3S^Kx2n#|rmN>wNq8On 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

      ', ': ' | replace: '

      ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} - }, {% endif %}{% endfor %}{% for page in site.without-plugin %}{ - "id": {{ counter }}, - "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", - "title": "{{ page.title }}", - "body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '

      ?8T`e`dM=Wm)|THVTSsHS^vIl*D)HL&+*u$?8 zgi13Boi&zcK9~#yIo^LH?r|yL3}lg!sdZ4(rb|Yn(N|?ko8RX!I;lfc*IZ_E2~wG1 zhZ|Wb2}xRTLY6b<^wu+3veHIlrVU>HV9)Qgr9OhUplZjG-Gv*u7e+%-(5;-;4@7x1+f`rdrzm-u17vjJ++^~ zV5zJOmC<$0N{kfT?t&g zG1VlCVx*Q*c4Y zl&n1*>|AA}p~M{WNY~XRNPiXky;~Ty8v6WbNl}V?G+@_^PaYuXYmKw?2qH>J>-Zi9D z17j+|jnZwYOugG%NenhKlq)L7&Q6Plp)-`A36$!#(E3nT;&(WdmP&>P_ttPrO3)$W zApmLi6n3a_>060bQjv}dPK<{t-%lP=w%K`ZAf@#sZKM{`yl0W~@-&y}ZNLX_J`UmRajM%?yuuCw zd#6=I?J`Skp_Z0{9C;W7?imN;gU+*xl5>)o)bk}YCYl>cr8ZXdf&T#63tt_=I0IqG7DgPj1Oa{3^exN^G8s6)^&w6q&musw$wR@T1ioy7S60LH3}rE`xYJ;V$Vo!{tnG^pU{$_1zl@J?_>piJ0=DLywI03Hv{ zfke*X7-d6l?;P{M8ixuOK}A`|m8C>{V^AYZN#>K?}iVMq4kMiXoiRH6YH_r~x3G(bz@YDMmXLV?4QpE7ZW8QWB^Y;>5VXIcNszT1b{!e`|4;+9C;#lxWG9h$S2t8p*9LBeSUo)|c`{{uSY>V7?lfUx$81bVhv;;u6vQ@hP zo(7vxQS{mhMQd~rd!PZ52ir~vJd-y{AzIWjNgvqhfdL@s5@aZ-fTa(y(+32kX@rqM z$;yxIk3W4jrDLKH6ypPoXOd4El8X;?MUS{2p~=w&5aHD(Qq~4ka6QN0O{k`8k0jMo zs?%uWWQ{XJoM0_9n&)AnRXbU@WY-;WPN>GGg>Hu%Cm9|Vta(w^ zhO{tsE4OQGDdg^=5@h`>a=3`X(sJXg!mv-AYWB0laMia(rln6Wlo?F&V#{%srgp&& zg0Q2E6PyA7_|@&HO|C4Rk}${wqDN)WoGgb+$?cUNY#j0b0DT&j2PBmnsHJ5kd$y3I zC}0v!;CSO7Z@#G+%4%)WBPj9X!VaNw01<>WB|+~c zP+bf)l#FDre;kzOoM-1kma;s9Qh6wlWI~NPoZu&z7pb&2hZpj4EQHiHLcYIpO@;dbD^`3pXivB`FLG2$la%KlVs*4L z0tQw?<|yT&?p;#1Ij}85KFaZ=57UJUB%o6ZNLG$Cm)q<>*TiORy2};^l z?%7g#O50c8&ZC@2L6A2`RBgAt&#TeGmZ{gr&rui)9UL1Qit&kWL6B=l!)?j!?%m ztBz$DM&3@>QsRh7fq6E$oXhK|D zi+)LMC0n+qj0Fw{Jn^O?1Ob#@{Sk$<%R5w7NX`OFp2T?=I$4}$67mv@Dn?MEmXb&) zQoQ8*ey7_?63@+RkRQra)>6{IO4I2)`;6+wf;LN9pbbb&!h2~-RD|%AXWX7S`8q9Z znMRdeK};i2<~vPgFErdZV+wXcj_&KDjsWD5<5*o)o+N`Or$y6kCpnyhd6lyf!$^KJ zHB~TUNmxNG9nK{O^A!vXke>rl!^NEwKSc|L4WOn9qv82aGf!c*Y3Wey;B$fFdGnv0 zUq!eD=PH`FA=9K`H-jCNrE78Kdznh*C0Hm);X6-|Pq7)-p7@^a^li_JNL05X9|KdG zPRB>$9fnrE5lzo{G~K4CI2!^wPa>i z0>0f^hiFsZ{6*H()3k=$4ODxD0Un`%q$~sK0PQ|?^SjG_E5f8vIF`8{b#U#BM)HgOtWQK@srpgdEDdik~W7tZccY8Vb7(1MkuALvi3=U+;-_)gl8 z7T2{a7l_dR02RO=^t6b`=vSP5ojq|X$cFc3I#(IUk^5?2 zbJU*r-lT#PkIVb()%-cYuQ+W-X}o=U1mU%E=6XMK?yzxcwzXO`QqcZzaH9{n^o6pN zB&8uCAo~(I9Q^Cvvq%P4k#kJ+M#PrD5AH`NYR4)60N>7+%I%UJO-{&eGw3No6qyYq zFLG7sUOfK*eP=FnPIgZOgw-jQ-tI_BgC(^LBN<3ZyZScQ}BZ zv>jFY7zuYlm8$htl}boru~dwgB_xJY$S){1lk0GVkdTCD)TJm5eE$HC{{Yl}7i&bm z+M}wzHl`*!%bHyB>UyO{VO^NDnClEQw0R{Z zzfs<-ZO`kCd}_B8<9u$QxvN)O4j9LY(mflA_FqV{v$U|Mr%VmW{{WsrMC4yBP^UX< zE{=*V3XTiuZI;}5#Gs@oyrqn9&TvWh)=STXFDO;}MR6{0#QoAb0(vf+c)c2wg*rrO z>%LTl$CUi0S1WN-Nk}bVg{8RJUgwtuB!wv{*h5Ll2Mw#pPCVp$YduC1w9%^FwkfW0?||b-$aIp1j~G5N z`|9d=-BnnJx=Lj2xE@F?DGq_P#Qy-e8oyAC94w`w$jN02TZsWdetTr|k9|Vq0EBX5 zc2E2|QtN({AOZ@ps5KM568+v-S_o5XC%wOM_Bk53$k{#}yeD|IDNxoI1?M9XjFhX- zzc|)+(QCf;Qq*f)A|+jRw@{HSO~9>`Ga+0zHvuT)*;v;O?}zF0Gb5tT>Sdma-DEbj zrD<4kD&;F2kJycJNGma`q>vWk5|S{UQa!$ZbEF`I1xPtt31tV$K;Ypx&V-bFP_~V2WZnnzOu z1tzL29Ovoqd<-2Ca{j3sMt9jLD3Hk9Sv>y$@7qiEw{=b6VH5C33CQ|#Pq63v>Au$f zstN$2nmk0LkES1gJpTZ$h`Mp+fuPo^H>#%V`^L)FULgw#Zud;qNLQQX@bI#resM&WyGYBj42r8oo1(hR;PR6)Q4=i69ss2bpSLnoIt+u^)Lv>xGbao1rz zJFUw;pIKc71d4qjm*YC6BfhzbL$U*8f}owFXE_)rTP*JG!vh0b4ab<7TwWzb2b5)D8atYh?W0`z{*? z52SF{)Q|4+x9KHCZ*Gs=6@tvVpH(ge#!8TxbgE)lr9f}2OIK(*4g{f}a#D4;aR#1CfN2!jS+gaonJu;?g}UQp zB?T%`SIFZ{ONcbMVO>I&mjYmp%aZS_-KsUMe%Y1gU#Bj87G!%`serbY`DBGK=t>$8@EV6UvfL3IJ>572aG6*aQMja7dnu>9+LT$GnKw{EgL7 zLR~J?yLzP5MLBKKE=dxj&#cy%Q;UewkOEy}azcZLwvn|!l&C9roeMhD9bK=e?+ufe z2s!ufgm~pj%%*EnX19inb@h&l!LL*(bV?N|6J=ZU*p>GJ=@lr{VkJsSMqDT{nOn-p zIXJ-A(rH$sN*pTGc;wN~{{R-p)qL`W&E3OG*+Hxu7aqQ@=DEV}y(8GyQ&2j0(`r4r zN}iCXZ~KG(4N_H{y7XwOLSz*DZciuMTplIyv9YP3(uZ;yPPp$My6QXOw%yWe-CfT= zi#VQ&zrR0m`dD4Y>}1JlN8PrNw733<{q^SG#dxjtO=abj&r=Te zX#H1m&w}vVDtd((aO;>_mor^VsZ_doc~q~KEic8Vu}*2|QBtQNt;X`Fl!Z7)a|47C z#Psdb`*wu7%8UU}-b=JnsE zwaKcXLZMLQwFLKSaNeXLYmtNb+HofVN65#%o{z#em6|HsKCLoF+TaD!tH&wOcZFL` zM@~+WpH!7z?54`1(&JFlNs;hrZ+l)ta#c{_6XubX^o%CxVII$-F54vop>+7tRZRchTmOR80>6$bwR4V?RI zy4$i99Wow3!BSRvQb&xZjO$Mu;@0k{Gyx!F@++yqt?n5?q5F>9mpXMagJVC`_pO&H zwdr&UbHB}UWkj(`XttcGxawF^mQFLS6CXsd)^)z3KM^`wyF6~CYkdr)_JHA#1f28i zwCHkdDjjRNU{e@sL#o1@TV2QZc-ljXR`KvaAEv%b$1LwJYM&9r2OKaF@)7#3tr}MT z2y?RL@6*(j(R^LCcvV!xdOVth(DP;?oP zdM&t9?$=?ar7lv?shIB4A8la*OqfD8Yh*p-g;o?DCH6EZ}wM#GPE4EzwhOCl=O=_nxEW~8) z8xPV)*z3yp3SXaXeG7;DM{?@Tp;G15Dc~?kBj5YI@D&W;Hr8a+Z4lRxOp$^;SEF4A zii+h*f{K+sWE!m|hTLOJmWIKO`{6kSw#nJYKCXUs^aoTR85!GkhS<4`q{1QzI2a?a zU;o$Twy94#+lxZjOKgm|(wBvhJZ%`~_SfhGP&A2|UoI3*om)anwBxBBy{hm+NH|Z% zH2R4sigVp*PHIzmj*_G~yE|4eoO==Tt0}iK?Ug014ob$KDjN!DFSgo$IR^(nsOM4C zgN&o%I1n`{4YN_324dtWDadjfP?Ug>w5uZ^ka^a7>vq&=1MdaVv8-qZPC*G3vWkD_YxJl?BIWph#mRZccN8bd_C$8}e3Ds>Zw*4MU=Lt)iC1 zhEq!_>}@-e;exQ$wb>FA;pK$*#vn9c>T0MY;`Dsw1ljAhkf#Kel6NlwLC+;BPB;VYp-#555g)Q!yI%l|%%-%o;YQ=M;eH1jhq>q9 zSI8?M5xQNs5P%k?DYYwxm7fFPr|qN931P&gkt4n~G~;~!a7V$&Is2VW5ONW4A#TT# zr%+o^O1Z*{mBGguAHI>)^C@)zAqrZN9Yv;}bRo=dNhfNsbBqr-(~{Tj1cd>F>}EV$ zNbjk@Jx%V&10L8uHBc~}t)57Wohd~iEh$hSIF$Q>J-+(2l_07OFfx~j>Ht>dFK*+V z>ioI*BOmLlomr=R6pwxwU~PEjY(*5)6M^3mDtov(V5 z_C{Cva7I6;RMewaksI{nuBUL=An)D&m4^kxv>Yy=D3_4p6O1G)1pD#ttqmOks)r#5n{5Z)>F8Iobo*5=NfVV z65|N!j#x`~YDsj7MbdyU$WoKEj~rv4*GL673_>m@7TYh#NLxt?4?XA#S;)dcIOoUP zRJxOJPQe0Q$b`!wDRIQAPQ;J~_QCS3;~#(1T9`l{R5YE*%1Nk-4J{5R3>~bzbGL)a zN9p#_)It3eknM~oh9$^@ALtvD9%pxR3*{+M9FPx;{OX5NZBwka57k)fnyngI?0cfN z+8jgj9(bX)$EC##f~9efIt~y(0S1{8aFk`SIUmblFw;YFoZq*AJRJP#Uo_5sO6JpR z#^43E$|-C$P!e2ly3}su0*wCv&LnLL9~k7H8mZnZh|)Rd(OAy~pz7(4L3j9tt?}+s6be%IlBY%T44)T@V5@f04F1q{{U?`1D5Isf*~2G4W%Rl zy+r5Ma7q6FrkK4|RoZeE1Qz!*l0p9f>1pJGe4XDPu9jyoqX_p~#VJGrwk06C6kK_y z6O*$$eI#?|RBD&O1{IEA>a`qhZ(&U*4mK8dxS%)(fHFBF-&#YNGH_Ha>-1U;(|)NP z*4=T=&>_-{l%*qragS|SYv?-+rPG{cZ?dTnT#vEU1T=6~kLv_-GwsHaz&=Svop(__ zQks?t<5>|?1aAF7TO+gwUnuDsGNm?gMshoP2rw_W%1{lOe?(5ZE9K@ zK_Ljwy1sLwS{h~qsp1p4gp;Mfq@*@nQ6)&nq>=CA+-kVs5i&Q;Xuf0%G*|eyJ>iE)H$e9B(9$&-s(yeRk6lYJxMtB&bnouC=j@?;7B2FGa;51 z)89_Ly8=oNfu21_+>bwfRO)WpQ#JZ`PD^FE48|@a>Y}CGeL*8~26A!-fRmH@YNk~z zaf}#2@aX7;blE{jEKBjqQs4?okWU0CdmT8g(}y)u=9cVMqv0tCQ^2{}Nlb>5g#(X# zdy(gjT+ZCpW~Opbifb&P$J-#dJpqMy-<~jhV2>J}JBfm<5bTAhm~uj6wvpUhV3`T> zoaFEa=yi9B+{!@j48)>ivNo2~lsXg<+yrhw@<+%TpL?1F9f$m+P#xZun@UvLjt0Zy zBZH?gxj9dOCz9Gol@aom)^|OOurPW3{f?Ge_T?iQCPq`r9%a^kj-b+8Lil|^;NW-z z_tsL<9jS&>mxl--g{1+>wD~M0E+%9Isb%JpO0bi_1RrmGUsy7$PbVrvwBXEkTeIXE zT&7uh()wSWDF2ae=rB!X^TMFRtcF-jyDQwRItE~7Lu2g*9s@u zV>+R(eLPI`R=Lb@j%lB|{7DZoUL|c|O*Y@DD+};)eTKB@ZAOC|{S`zO;POupo^o>m z)a8A%kdz}OVEM*9`1aO%trXoIRkXjVASp#UgEC~2r(?fP540phnCQc6BaN;gdVnX~ z4P&iv8r%?I!5saH(%KAX{{Snrbnd0GZ3v2RiP)Uq`I6BAVO*3Q%1$tRdDbUhKk$h6 zNb8$AVCtzPbZmt#k4j~rleGa0Dz&G66l(N%P~zp{YEQ zgD6C7@w<2a{&YM@Po$+$A0VBc+LgE&8)SgPQ#{lSP z9FvJcB!S?lk~sSfO$i**l@F@{L1X|p`294cp-3TNl0XEWbH^Tj#~L~igD9U=vU9f_ z{+c=y7LKS)po5&`kLf?}s2M5&s4O!*BLpd4c7x;Zs43+g2;WqapGtsG{MhlO&}S$X zk+KC%1Kb?{0IrCpi$)S(SV;gBf(JPq==f^D(u%3-AD0UI^P(vtc0~I3JReC<7#eQ~ zD)a&*qM520@wd+hQ^N_GG1(XE9Kp)5pBeF~;e^^m?vW0Y&hkkA08Ko0Lmbh&=Lgq; zj~;pbbTp^jBB|8wIZ!H2Kk#v)8c@&xM-Tj++2`s0)G$Piy z6;cv0wImb$Uf;fSLkf|UU#rG)kV)~6wxMD$dMqcBTtmN{M$r;a)=T^0eBUUA9F0676e130#^wpx0eIR3WimNF~ zeD2OhNdRfZ300p(r2WMmlouA_d=E$?B>WGJGpIn7s@jRF?F0M;Tuo|C%UFHnyd7<& zCAnd<+(H6IaF2BierygjTUWzmk)BJ`+VJe?VURcImy-gXqRG#k{3ShtfpbP zMPehhDad6ky4*w{AUx7|Ap?XbBmkxO89Fj4Fu3HNs=5>%S=fNysmi_@rbko;p`r|? z+)5r{Zg(F}P!-SZ{k2uQjb}{Hpu*L1*3f2<2hK`_35(AT1eB4L9y6`NisuuAL^_!d zIUX=BK7y4vqBt4(KW#ULSOGW)7V0qw!IDdgQb8#=MtB)Kc=M{AQ=+p^R3wi{St(X< z5P2kyF^_C&08ZIR=SCL0`x-{{pd$xj$o~L0-&QtUVGUEbOGaFw0oAQ2LwmOO$QyI< z&mKH!Ue*VJIp~Xt8zdQ>}6d1*mxk$sR$|x}1d!#uI>f!k+q4J7@A^+a6CEr$88# zx?D=sJ=rOeQ?&|j1zppGkWV8c<5p=5iOlp)2phz$id?0{b+>&kJb*xLINH83gy&UU z(hqDYA!|umT$brusYzKXQWSDg{lBo)l!P!qN@^LAm8_L3xSiWjvZ917K%D2_9yN53 z6+||56|CFa9B{OPsR>2`a6mZYR~G8$0S35q1#U%tGl^JsI*O1IO7p^2Pk=Q|Y7cMS zAv+5WA!$6BG8A5l;2{K#(K~(ltS8iy;3WQE*Fnx9CVkedi26%&N^yxEY=**N!*%`V{{W?>ODZ682?JdF z%iC%Mc=cGx+f##nQd85VQPZKM`T~C>>?o`4_mb>qT}cZx`7WU(5ym#|&z}SSy7}i5 z{{X5y3d-y3kGT87JW6ul!`#GsuT5+4we?CO=Rp8|7h+T{uSTs2i*7Bp%hTFIpD#Sy z41l$RfDi&p*&KS0AAcJ0zYu&j+t!==8t%Jj0tt8|9%dRR9U*t@c!;JvD$Nw!d1gMn zS3R-Nh14X>tk$mu+wvO{9;k1OrY5rUU(D~Qt< zdOT-}@g6B?DO?duKL=@G8~L{+thUxPEZ$2T=;bDTqmWLQ+jbT84b(dw%Ri`X$@<0? z`|PQwpJ}wI)H{-$i6hbnCpg!R;cmXLsh4=R@dg2qIS{wkdt3>2pb+BrrNVeKaFE_+p#O@gC)oGC4XP2-FuU&6ON~NJw?K##^l7VGYm(z?Uk^G^qp`AiOJtIKom2k+Qh3?3wrwiqp{_Ezy%pv(Kw&TPe+iG6W74d`b@2cN&T4AMWr$wc{WaQEihtetS78eB{@hIFe z$0{Qy9yQ70yjq2YFBa+0(r{q@i$%SOx_+8X$P!k(XIPyDi7}f*g-Tk~iA=a%Wl2FP zJmVS2_B?BW@ZZEIiVBr#J&mRvrH%WqG0!GU`Yl{u!j+@i%0b22Wyh5COP8ob5Co?y1rS1{21A>7?AmCm_b_RdW)c&?!=a##Xf-_SJ%% zN~{jMB@&a|3J)P`S0oYrwGP`OrDC1>WiN9oDpxzz=Rfw)4b{yf+6c-bVyX1^hzd~{ z!Qcb$fu?m`I0-{QT8<@by0pdwEwBk5$5yn54>CDB454B546R8aUQ|iQBz?48!LUHI zpS-PW8t{<{QxRo2x9QKQAhDd3DO>`Qb;rK51QG^Tdz)}uAVTRT+D{7$BoyTXBmK4K zi`OKGFjmqSaDbwtkDqM*+Cxwv=K!`++Qw2h9ixX`Z7ve?L-i#jVZ3{s=l1iVrg^I+#3jC@ka*gB@#FT@dQ|Zo1R{NC z+*9yybK^R14-%QRUeur06s!dxsCZAth^39wz2(CRs;=C6oGB0_#S+l!N<#}6{ldM7 z`PGbOobp<2uN_U=rV6j%M@^g!6{s^MQz|O%BCE5$BRh=ZLbH;eV0B5LT6H&LxE#O2 z@BOdsWISQxzurShw^uq{Yw6*Hk%?*yVJ1jpOJs zuPn?7?31>r)aq4cqN|cbXRai;wbLHS1;}AIIY}7w`~!_@F-OV{9nAhqms+!~SRBv0 zv<>Ag7GkOM<;tZ~W>%xjbI}o&3RsSxcN1qIRu?`hB*FR#dbFUuv2&zj*_O$2RuTQ}3sWI_Iz9YH4+Yk1S z)UHa4cwJTcby`eVMTtx}`VGTSl#RFx^5bdsFC&eh0k1Pztp*0(dGsn;YSAW3~-mr66aKnxsU zWNV+nz8cqT18dY03%v4OfiUB~SE;w-e`>z)ydc*J%T6)ODV3jUrVmD}+Lga4_v`mO zC>4IEKy|m!(;bH7O^GSu0Bpv1cn$n0B{(BkuB!h4NK?}UY(#mdspku~!{)r!bjgr9 zMDk4bMbUiJ`Ws#9CA(qLEB!;ZZn~p1n+>T7EVl+*cwJ5%IIS-{TX9(-B%mi|cpx8n@^*al&^1GFbg>Se>!nu}Kj z(|-tRXSiW~G)}{fDD&G+0@k3PA3pl>_kSAQ+*Z^mOZyr5F3pz)p>Ib;69b;9Rcwm| z6iazG3gA^PK?Q$M#m2-X$BYzLjH&mPxko3RqxRQtgz)|`dsJOIk!2yiw`BSSj=kNi zx|Xo#bQ_39u1KuLy83NPjY^WU8ET%RE$`*Zn({{Df=ZLIJbJm;sI5#rgaRj&Zlm1h z+X8lTgrCSRgJ!{~)F=GHgvs7yA!(M-S8sdqpB0ADL?0)rB2%34Z4q@^wG z3BmZ%aXQ!39}IDhqjasT=Q~MP1({2M7ISRGsMBpi>Xf8Y<;Yu&zTy7>DoU2T5$71! zo8lZo;iOb}bDTMh5$ciCt1=H%XL=Q5Tvr=yNlgZaQjqeWVqGS3+HvQKvZ4~ToufX= z#=W-zyu7+=0jkX;Z0*Oo!Ne|}2Z;Q(V3<++!uz?b`dy7TlyrmX$4S zyi$_saDlj|ISr(1+SRvZ2ZA4{k;-6v*1KBF@I$t25+@R^ZnV==Rg-1f?#iRm_Cj3R z-1IhFP@Lm=1#8GsiQIkl->5#(W8gNkS~qZ!G25wJ8V0QzhO3(AJ>*H{9K8f|T;W5j zTfHu()#*=Ah0|H7zNW;G7VMV7!5f=c7#a3RI!+nG=!!+nr>qas%o@HLM6;Twwf&ldLjf8IyWbf0gg z`o4FxNA~UQ-A5BxmsPncu1%=58L15hX~8S*gsgs0Gn1Ws>g$KxS~i>9H94msZ5<(X z3#pI;WP#TT>YFNEt!B$rQjr?y`WRv8i&I&Bw+PRm_yGIyuc7eIgXy$7qiKiGs>#pa zW4XaQE)6^JR;zS8wZOp><#6h`)is;arvduKYTEjiYGnzdC4y46NI4rCN2GDaPP|7F z_$k&c6s&b{DswR>6GYk3RH>Gno!)a?YTaa z$HCW>yRf%oM~6^2om8Swo8)E<>|s1qRfk;3IZD zj=lc?2cb&fHm-qAsKhp6J=a3tiBx4LHonk&+nYWofA#YIU;>jr&O`Aq{3^c%|%Ey`hjUj&`?3h3Gs~k0MkG$zaP^;Q#9l( zwcjq7OnGAq2vHkO2wwyHeCtd-P%1|xxP2iA5mL7EkoGyx#-XMU-b(i^hWn03a6a3L zQT&TQ$NJ+{xHYFARNg6x2+dC|g%pf92W*!xPyYa&?Ts;{UB2CrHJnBkKKIlFDGdgk zLVuW1#^q=8e)?KepqVN?+dxPmDqC-%^>%i7Z{eDX-5D_kroO_it6rFir1 z3DbC>2q~OV-$O^#mqGSg#&(hb=XR-S+Irl62Wi!l8-l3RCZ207;sb`t zc#B%| zp$-A-2N*o3KI9!%NCjCYGFGTk3d3t{KxfNfe|&H?UiL5!x|rC46#2suZJ32j~I{pS{+NX|QW@=ku* zl}2HuQ>Dm(%3%b&oI2P(lb_5z(hiuH?hy{tf)PtwklT!sFfvIQGv-+y%Ny6Mi%8(n#I~B=uJP*)(XH*X-Bwo?FGfI+` zb&#d+8&|mG4j~V+I~+$SIQbg1 zJVZ3^kOEJbrzj6PwPh`q*;-1F;RGdEKN`ENdU4kpbxnt z<4NK)v@ng40LD>VU??_~Be&dESH?zEG+Ocyfx0V6Q^;G0P~6Lbut?{RIMW|4{L#T% zq9mqN!|$absV4|pNCf=wJ@rwj*I;s1ia6AHqR5JS>mov#?jPkg2pf_(BI+krqgptO{FoLD0W+`Q-N4k@_6~qJnKkv zh=#-@EY3pQ-x<{{^*e>BJ902Kf#U%9#;Au30F*FJR`hL=%P3s-oe54+^!ZA_SCpub zFiv^ZHD%M~KKm^Kn^-Vq3)9|S;<5q#ht8C+x!Q&$0~>;iCPD~pP9?V0fR#1?2|Vye9~x?G zAy7$ql$xFo2H4sX*d&vjjN{x7pPe?CGK+(V6UimC6rr-|10a-)?LP;fZ7?Ke5Ohj9 z!cvkufzXkSspBAfef0yoC1&YGk+dx&p}b=W9Fl+7X*D9qpE5+W>V{IS{{H}&gy4JQ z+e5?v#4Fm)aSH>ADq2WdfEh0&9x>x5OhDZzGrBSmR8p<@1f(cu1f=`?=}WmnA)|7( zT8<+=>rO~fWk7=Bz&imRoRQ@Hw1%N`a20{AC|jq>!0ky&h7_!FNg(nDm&at}CD2=r zi&{Kcs4le?v?WiVhSuto5t4Wua1XaSwZ@rfB;X*)aogsF#;OsX`gKKGpD9Om4ISwU zPro?Eovx_><2#lP66(tMNj||p8TZwc$k?P~LwRKpx?8GgAV^SN z66BPV=}0;8ofljHcEWcwIAkr!jiG9c+;&}B*=!*Vpab4elL+=su%^!9MxVjZ;>! z65|1*b*`N^Jm_f3a!gv2FD1&O{{TOVUsGD@+mW-ZxGg*@Xq4Xtu_FVmkz_UpH@$d6X#X< zt$34z(4CgHQ!W!s{)#0v5)m!=o7Ey}TqVYxNh$;K6p($!x>RZcz|tUgSSmHmI;Kj| zX%d}n@aOz1%^@Z^ad|@5xP=3c86GuroX|%x*--NXY^38(mcqy=Qi2Eb3RQ!T2P5B1 z>J4y|8uvT0d4oAWY+r+jV1I%{iy(WfHbZn_8SJPW)iw z90UI2RTB1Yk<^-V)eMCxnM|-jLf#+BCmpo}a!B^~(O}fldL(FbaD|7MWk@b4ge>iB zEaZiJXU23K#~qWnH11&qQZ%_~il}b~64~0csAMD&<30!Jqis>N$qpN&a|qa`XIe0v zA=b7fvOk!E$NvCQHLb4?7$`c4=(d}GIeke(+mb+1{Ej&O+Ctu2Bd1OhN~N*jW9HakUy3b5=kQ``g!)o zsxEURf}ND}mAuWPbwyBiBH~DnQiX+~&Uqt*jQ#bRweSbXmX&L4nw365I<;h_Ia((MlafB4ws)jsjI10S zA8l0Y_aDRVnA}*mI*ImDD0CQ6nGp;~^4l52huT7)R`1M}C}-231OB?s`mTA^Bz6Z2 z6@Dx!$AHlv>Hw7C7J&jb^+$&uDxD;$Y@i^W!wODEfPKK=>0MRMIVAe5&f|4l(%5L8 zU_nn!M?zDa0(c+WRh7-Da_93~iBd3>k59=yF{Oo0Wh!u^!bjT~&`jI~u$Ixr)6c)o zbeffJbfvT45rRA&Dw~K(6SRM(KHsL65DrQAImrNwoMTKxs~HG^YEr!@$LPzbgLT3>tnj(*x;)f&=%@I?Bh_(%l%jEzkJJG7rvxPA3!0|UV0K(H#cW+5b2 z;z8b^H*$TmjTi-AI)W-*K=QslfcMlbRcLU^DUgg1P6+3oMvjGJTwAhF>f0k5xESZ> z{@R`y2uYlz7f_Czm8g^VIN*F^PANF68Y46O_gaos;XtH@nak6f5?`g4=vZ6jn^YPBEZx1J$nj}o7r>{fK8rXA{0(|P`@Z?$! z$+ku5Ac9hqKr%#ysrA#Jbtp@!%E(SWa&SE9{5CX9D;Z3a9LiQ= z7a)i%I2~IAs$8J2N&w+Na5>i@^>sT@!+8bit!)Js=n<=#{T6rRBA+4^HhXah1UBY& zsVG)SN^mlzE6L{?M-~?X@Ji^mqgdE!gxmEk#*WiUac{n+15d5bI6s?efjl35JEi21 zAS~{?Ef^+tl-6gp&eoK*DSJ?n-~;cEYz-d>m4VMLJFF6_J3o~2++>iV$2&$32lhIK zlO|odwUyr1o{LsleF}9hD5_iPD1Bd_*btyjc?W~5DTa{)V4GBq_Bp+aY`X;{MVFE-gu$an0Ol2jYGle(Lb8i`1{miV%LXIVEj44ngCM;Cq3sR4O^+I3Z@P#<0T<>tauFabhrtPNpM(I0Csr zSvbk}`|7qpc_fKdhf8pW=wmd{Qc#sG9Jb;?+Mi?kokLaSURVeOc{rNsTaj3&G zIj10jQkx_yf!&d5O}QPi-v815}8 zQZPY6yJ|tf^TF4P__N^4KZsZvapf)9zyjbo#PjaEd>7&?jusDvknO?Ps&cOy9nEvX zdIUCOQs@(uWvS^#Bv~qn>m`&SE-l1^fu9GTes%fZkJ|8F169DMkBIm1@2;6M@G zeJ;xG^6rRrT`+SE<^KQ)%6C<6Yj7Gfbc$_CL?&HR*Ew;=p)#jbNFl}U3Q;@+lkK#7 z>%iIY%Juc%Qma;*H3`xSa(Nhy`mK)e{^dqB-nl9-Q>I=w?KUrR{{T%M1I#Kaqt&4n zn~=V75=C2v8pQ)Tei8V_3ee7gTvOEq0uA4m-J zDo@jEdg2A^ifyqKaAK{g6xmhR8whl)?Nf+#;tG`9(99_UQug&7S$ofK@9zZ zu4IESx_Z>SE`w2eE#T!YH5ytr*>u`s*nb@DbnR&&Zf?)3z#jU=@b3?{x4xlNQ>^)L z)O49A@crSW$3&M^YBqz590UW-6_n%!wmz?EOh=tjP)nPFSH?;~{Gk1{`!|Q#TU!Ts zOw#AUb|919F+Eqx?=CA`L!RL1!0fcQp5us9zMssk*~jUPbu^fe788u6qe5*X0Drfo`qV(5J~mj-f8Lw$+s-1mx#F`cECM8!E^HJeGxCdZ=)onI$fl zVw3?II(NEvkd)ygz!}LWfH^wyKM{Ou!+0>z_lMOxQwJy1=07#)_!q-hTu06tTS#v5 zG40htrS(3KPj*dip-~XgO^T@T=}JkKWk@8cC9cX8r5s?4Cjj|4*TA@+8sgk$=+|XO zQERacE&w;PXa4}oE9utU7Q)VeW7^m0GcYIL_FFMzSMHdyYEtQLDvux~=#JDDBS>ha zJhr4IE7;agAYnw4opEly1a}Oj<5Y2dSBU^ioM-Vrx#cBkv*K3wb#&8dEN%|XZ=h9G zZ>H5t)>`LPD%C2KDq55rJ+U61`Dq{qY3u?D5R>Q&K0qg4m*H=K_@zo-GikDgH-ip$ z{{Sbex=PE%`2CG1mOa{tj1FHcC{04Q)EfqYRhC+}oMnxOZ7xj`=eo+3+hw4}<$6<- zz&~@L#{LMP_c8akn%@w{0$fCIksy55D-I<=#EV*R-OLCd@}i-hrQFpt+!UG{PQPu& zVO4v4C%TED^OPs)usein51;xige%a+m=U%w{C3(Z{&DRci z(>bRxBbc4N7Y3&vwY{a`+%_Hk(I6hMog8i&B&@XPS^)*8fGNs-hCQ|PS`})#lS|vB z#AUJ!9+S;@%A^{HOSJ*cH(M~+a#V!CVU(%GsD{Fp6M^LVlt3J4TvufZMzuo?Xp&-o zBv>5xhBQek6Leh8QK8ixpw=LvaCw^%aU{vXNx(|qP6kQ#PId8)Img+=-0foKr3U4$ zZ6i*Ycl)KJ$5I!y;r10Rzym{Eck=@1^n#eE7cC*_ukKJD@=utp&(a zYTtsDV;i%B&a}0XAuEd5Vse6pT~Shq0c36%(ms|pL9Y(LPYHEh(3PMl{{Tvoa6EkL zDQ*-kAq24MTgz>ywYU|i^XK12oD-6XDP|+MqS;(!DYdI>PK1(@e&0F{aO72tr1;c! zTZo}ngTcrU-E{BUunZKF?nj&r542Ju9zac2-SH%2y6M|OO+gfBY*botQ(8{PU2!BN zlH%uYx?dFTCfOHm-B7gVE|i_6NB;n+`No)p?({`lp(JG^Jmelg(E?CwiNHn=HdT~>ox{|ka!2W) zK|tYY$y|=Z&PNJyO%2LGAZ{NC&WUKiTWnqhPceY23Y9z}vrM}wGb$0}IHMk=PbEM& zKlL!J$vaPlV_f?7jxO;V4S47>e?{!6UC^&Xz^>Og4UEEXybbd@Z6dR3QR!8Al$8+k z$*HD4aSHs*IENZgAde~F>sx8nsK5bXgCaq~<+0XOHPdsdFguq1;H@~_Ouhuu0=dzu z?IH8|YBA--l}`iZ$C9D9KFPs4O76O(B(bg?TJO+_LeGR-S9G%Bq<05bx@VbubtXBH z9wmnr`PFr=>7+}RU{fP7k@=S6yPti3I~z)VGpeTf`3-AFS0B(V?y%u>i18~q#ByVQ zQ~D@_FJG}OYUO_Gx9D}mFsB4bkS9ruBV=tIh7{57?ap$g44q@E!tUKJ@mg^?Y5H_s zt3D@TO1Ff-;k0HxYLcsU6xp=aEtaUY2})5zPA$mbxTU$sf(pFLu!1+DGK*0NJsL~JJlihPJSlWO5 zgaZ>C{nV|E>@?F`%C;wiy8xea{q$l_= z^4q^svZWLy0YwTUKHB-!dyf(GFx;3p&pylPmXuj$*0rW|gD3r8lr8IDq%&;RDKltt z;4^%oGe5(u)G29k_!Q=yb+%{W(40v^P+3PT3mTB~J8K#_l)o_;BX_S9a^R#}aTD~dxJ^V(Iuj079 zxD6-j0K~5?!nmypf77Nkw0-AFxh#H%-1h~vtB$Km{{RdG1iJH)QkPN?v61}eFpcW} z04V2NE)D+xO=(&*KJvSbX_mF7Be7Og_`Ua!H0{~_HtymG9;GncbSui@mHzrE(h}O7sIA1*khKO~LrTH=az=Jwa6so=D%6b*x3wsYl%3}8k;U7u`!7B(cyjtnR?3WL!5VXBhcaR@+C2dQdO^SvbejO)x>gJ*O0 zfFYxCIX>$Z-L1pucmcy#Q?T?>YtN`%6uaut>K6=Dspew1%t};6G#5 za&j74l1pkS_fmX~aV@?gx4Nor=-Zl2J8FaVUWUxP66d(;jiVnl)%-h9V&C@^Dpg)X z@l`EiBub!J3si-iB>_bGbMkdX{hJ;}vkg1IRMv2xIWg$2>*J$M*thLwG#sT9QdE?Kl&u)fJc2dm_@5M^Z%|UV5W)Gbml3z7X*H)HiO$KI+p;bGsogdElA@O+ zv1v5ZQfG%ZI=N{XD=S$GBz${o>HHe>SK)J2r##$b{{V%@w4w!O(A>ntU=Bknc8aAk zUFix8yGE@1H)1r2bu}dS6c8{E8z`D`)<4m5zP}y-lCS_O7*cI@C)X%m_I> z^sZ~TGxa&bG#t8m_E3md<$j!rqORoXycZ*4l>3P9w&H-nDo`OnapN8}+2H>G64Pik zDLL8*gE@ofR|>ZX2CI8?!j0K|Ok35NZq+U5m3fULY!~7;u?!@6Y$3EOaX%-Wa_@M@ zgH%>~8B#v%ogjMkS|7v9&XyMdcLya}h=qIK%! zsEluNONZ5;gp6zEY^PUesa>;m>y)F|277qdpAxPV>$6b5y{dQE7>Avmhl186Y+kf~*g?*Ro@t$2EX&xgVOzTC152jsF0dU6XC}n%9qK((gJ_ zYL`vjQ=Dklbv5UHmFe%VC_{!m91XS)I8w>L=Nk5WEzN7on9Q64?8kLoz@_0o#ru@Z zp68Gey8qFrBRw6ubZ@1D7F*#saZUuR@$MF+{QGO~?sJ@E$X*T4C7`qjQK_|+LwUzg z(xbTQ!kq~v1CL?{0BSLX<^t!`yUM~N> znJl-uFL0$Km5vC9WSJT-x>!CMCN(M`V$HzKwK)^xpcR>|| zAug@ZS06ZJXFuF&D>#S^-8jHb353d!r^880ZQ~(4aqoeoH6j5yPT7PFMN4S&|sPgYA!eYV9qcn$HLf#yq9F(UC+OLn_Ml|}W2nY%26SKn5*Q4uRKjYA7fQDK+dTie`Qh}z&M+>ay; zT*|I!fUGPDx9DAA#@8L-wp5edZwGgre|=ioq0=G?SO8?L)*|>=c?}$uc2qeh=O@Oi zbEABqV1>5zDN8-TLn|0lWT+heqd6JXZLS74N*WI|S9{E<#~Vj+lz;UvuwW3pzRVGFUGO2~3iLK`7XgaSbr@sp(v5g;fV zmAKR3B`QOOE)oDz3BXbI$obV?6sIJGwe@m`rQntNvXu}rKfbCoK*&HiIAtH|Qnhc| zQk3CY00igQfvMp_Ez)KagEPPj7;|Fy+>%M-lg5?IAt;IDluc1hJla!~0zoX04nZ7q z=lkl$gBdcF)N_RE8la^u8`>#tut#Yp$J`wwpbheqNgL%HPhc&wTuUsdDJvWY2j~yZ zoq!Rxeu@@{9IcS^a#Tcgr46NC6O{#h)t{5`r~zn~APGPnc)IGOJ_~?Zm9`BLEZdc5rf z^XFI7VH+iLxvdvmeM$*rDPcf`xY+dh{;ct>05%f0QG!wlTh5^@2AY!URsu1M5$;u@ zKptr!IjD6)RqArWpKUOd9CIJc3L8iq@uY3YAbFG`PD0vpkX-tC2ti~rkd&k-0l>lB zPN^4ANSTyNNZl0D>Oqe5VwcukJ*Jm~hW`M6eE$HZtQR!3X?7HI2^dMS7OJ;MksL7{ zIcIUeDksi8z|&N#L;(g$LrueUv(Ou6DI;`%1{b@PC4TA$;A*Da7dkdjQU?i{x=u=8 zT%|ZlL6X`EvJ!oV>#c_53~59+k{4jS7Nj&!(5~75X2m>Sx>gQ4eB@Y*xQ*6i3;u7IYtsFR$>OsdmW5zS8 z%UIG0R+p2>3S-IHmAX{1f}#*WPJdr*LgvmChaH9%`9M zRqbv=a-FzO$Wp?IPi&+Tc*yhTjbU>E$t5dJ4^_r7R3rT(iye~7ISn+0tJ zqkMI3*dK4eB>d-EL8T;|{b5pA{kHG2vu(vb%y~tcOAJ)yM{XJ(kVhS?sY^)bg0IYd z$H>U9^Map^3-A-9qh4bVbVF^=h3J4#6h zBiqieWlD750Ae@&5{o*ufpIcHjIC;n8oX4-eyG#ZqiiccAw{s#lt#gh5{##hk2*Bp zNXVxE{bgpaZ&iabeyN$}P?wJ84J^BdBRH>C0P&piMzu1bh@DFVsTQ~wVLh326*oB& zBTWUhq3TO5FD;i;0$mF{VFYqB@5Zwlb&L_Gp`M?**6W&2X&QYGAhn;CsLcel^Q)uO zh>9C+WUWd@7uqMr60$k@)3T1IObtUncra|@SlBjNg06Mw!_DyM8GTUlo#dQfNS9FwxZuTeNKHAeA426-bj(J+bTWpsa zEjY*uC`ka6pZ@Ds_+`*{NF~0Dako&FFSNA}a+Amec_a1JZUpWXt$6iLZA>n1X=^KC zvA6`|0G>Jc`|5(i-0V{ms6bl`vfk6RUB2447C_t-6fjQX$j6-rJd}+Ao9wpC#UZxi z$8@_K4_4wg5PonuAo$XFK$&pLQ&2eL1FF?-n^2Ut+9+GloKfw#kdjb%$UNtafvZhs zG)~T1Xi{_b$m*S;+I66`qE$6fV@g7dIm_GXP{By;g>D63ag9{_+C+I>ByK;-(@NFl z$6Nu{N93JTV%A=5M9G5z(1V9o@jHrqWhn~5J~$eq{^Lw?aUCI0`V1pASl@NG9@Cnr zmAS(z7{J~(160f$A*Me|`I<}2(nxLQN$z|D3s1Ub6Dg28_+t08do_}2y z-t-GCYwJKD5`C1)lS^_ORwJ#@vcf_)4=3(@zqYegsi@CYz`MAn_e(+dPbg?MeMFJ$ zPO8CJ^=cSfDQPD=NEr4WGz*es?vxCmC?^=m#!tR<3yJ|M8V4Y&IOC7DhNT05H@}a42~c4iBOmhB&%Q?l>Q7ZC zDCi{$IrR@d5AHP%R47(L_9-M}^MR0mOlfvQNLt&$B%GC}89e)Y9W*O+fwILqurrZ_ zpKgEOQ%FQatS_Z0QO_juan3aZWhn+=EZ$afco^gM(TG40JyHr;PuQOuM?a=?Kvuch zicFM{2s?rEgZ}_c9HkO*%>i&9%1@6z{{U@BR|;k`3o?HAS*sKiQ3K5^qd z2-9wq06kF(lmX-QkXBQY6}XegIx9mRF(MIEa)f{tk%R4>5SCz`i7m>cMqW2m4GQ1Bd#QuSaH;)w$qgak%Sca1nZNp zURQptF-*qky-zu{EW}Y>eQ%s)DIRggtO9=Ug-MdN+htC;3Q0S+6%>8Eoavl&gqlR8 z-*M)_2pK6ml)P|L<90{Jg*M5_P>?XUmnBXy8J62W@a%-C#RGy#$OL;F>Z3@9l1>o> zkb$-~ASu=1I2#UdG4cE87iS2-0v60!4dpFFiiry=00~Oo+OxqT#va$QIuYFq#Q0C)`nR>Pd(Y&NKqAf!|zEe%tW196&4 zP~)A`!65kHa(wCG)ZHLSJ$4JBPfMBSFa~kWMWn!Osft}VNmB&w1?&;|MsbfLKfbpz zv2$VZJ(haKgpB~lbs>X6kr;O>QX7UJY&g?{E+IijDMnMmRC(4~w=FnkbLg+7Z60SB z3A%JuLRs4}4uzE`x91}~9G-k?+Gk%SO~4EoO>93;YJ7+#wY3&f0+#BzJGdn&9>AV8 zq4cUcp1ep|Cs4>+p_F&s?5DQg+^GsXk^)D8pPghbaT(oM)vG1;-F)_$3?X24(T_;u zlaHNSNH{kpN>bU`Xv>TWmf(DVq>OF;r4BLn&a_jh$`orf?ui+R3QC`O{^#xh-os4ke}tG?j&=JjeOhVd$-$Fp;4`94R|_<&N>g^UeDpiGNn3=)MT`Xk1lzV zmyubaT+64_C{4kU8l4$5@cb6k%Mx9Tr6o@joz4~He=z=Ujdu8L{azt$Ql%=+rVET0 zK?5D|8o7708*5pVsxUZ)iHRTbsHiu!VyDz+AV+M|S^A{XD$canT3tW|YKoPu8Au!u zc_+Zezdv4R{{X+!sdZCW4*-@uz(mA{N%Hjq0{0bwWvBFiwnhZ|j%xa*wNr$Jvnn7A z)D)koku3=*N&(7773u^Z8vEB4om1%$CwQK z{{Tg?4r=Pu$*onVMoaY9oMxL6D__b>Dppd0pm|zxlB{6s!u$iqDp$U^brw{r%8rv# zq0&GcgGk%5?fgM%)>B|{4I#K|M2Y8=!!nMNgv)HIOYWlzN(ZHQKIho|_4bxtmYq8V z;@HwgR)tQdZ&71DnuSodv?QtM%|&tN90^WJ8f_kJUuW<+tQp@g_M zu_Z_f2uipr2v9gUC!A}G#(p8;d`6+SyrgJdFaiVgkPm%1BeoYx!q)Q9q|+j$H&5L; z_LO^~zhYSye0p6{i6-KWT3JIYr@Grg=ax4qZKQIZR6xM=jy&ta{9$u{cE;N9;ZBvi zNG_>@>dx#2%?q``SjNA_s!OU78cg{|PgO(JZuk~uz-iXaIz=*zHauyv8-*mg^TnUc z6yxLbH-b38O1^Qg2TO*&=9x8~9PmqKAP<-DuT5RdqVQ>KMtytAp1D0Y7fdGAl}-F= zlUuGKZQF}kmh?vyygIdvgSkU$v7c9yt~sIhYxXcdOM_3FU}Kl_WF1kDrtLe*uj<`R ztVocHdZi7OTJTWJYLz(*h9o97HnxWq?w0+6aF93yIXd)I{u{TbA9HOX<0DhGdAX75 zup5Um8vw4Yw4=$F9s`ucQ!4PbH03n6B`Q-Mp5Ejq0Z8K{q-1>SKf}Kg*RtX?#Y=-t zjWbb|aLja>&q#&LyrW93Cu(Wc5F>f?{Z#4m5wy%^OGQ6#?!q*kw4{&ePr0r_$I$PB`d`4u*bSEE(u)-$9 zb!q3cT_kN$;NSy~eQ~&d#5{lEi;6eZDEM}?$-`gaHM6^(;(YKIR;7)P45s>8gQ~l> zr+NX(R`gm*CRB_s#bTnQpob??<0vjeC|8B8q=B#xoNLnYPx`~cICF))vnpIvogjdG zIp_UHOpis*q42%k!4Irjz3mR+~cUh0Xx5^B;=4j+V+<= z=i(k7z{{Tp#2#-C>d@{>oojT?7j#_eLZNBEcHX7D)P4E`wFSj8s!~w`6MIYs$VYr| zaUh(jX~^Vpp9hV3&KLgxN;oeLu4@BQqt4o$vF5w{L;j%g8`=VkgILkfeFsFMZAw4W zyp>Z?F}dEUOHn(H4(umx-H8X-0k30k!7L~O##0&GoS&KH*?F40Uh1jTUVR427u5QN z)a5NA)UH$Mk`jrd4{QG7OXkWjj!nw7R7yDoPp({G-6Y*Nh(u@k+Mhy=UoTwwIlb z+K1@9GcK$JNN5Gam}tkkXtcUza=l-NZdKu$d#XsA_0E)#>W`_E4eCfa@^ErKHO=CD zBCieryflNc1$8X$Y243-e?{8A;p$}xhH5co?6_yB#r{%~TTW7xC}(gUtQ@H49@_9c zUyM+s9Yj@gYJvC+N2%%Ab*kG6ntY&v)Jl1y-n6> z8$te1Si+QyWD*a#*Y2JNd@t;1+7W9A3TMy$3qhkgZUD673W31vQl_bsie`=m(riW1W0bBeOAVqIF%$ zLuqvs#E6Po$p>R)l&iQ>ul4!Y=YBWwZxDU#Rkg2aQ1fkP4}C5g3imcV8kT@HvZH-6 zeF!SBe)&aSTTEQ`;w?&IQu?cI&PtqRl^~>sL?kO4ln5T9kTQL>#p1VIX6oK=ud39d zKltea(NLa6{{VL#;dSio?X92vDs2y(o&HHqnar_ZNPeL}sY0sUGK{vFaS3q&$c03P z8%xU11B2U09yOxR;v0J#2AkU|hM+!Lo*-zS^&Xv7974{u)yMSev@`p3?0TzdQ|Zf% zPn9l7iuA;UnrhL$Lnt4Vl=?si*k_G;{uBQIT5W0D_-?gxo)6un{{Y9@UhZXaE`AZM zCB~?Zr+<)7Y#32k!dCJnEU8IL$w1zb;Ekk_uc7=m@dpy)LDg<7{?AB#*>Q8->L3N@ z@9e4Bz-?V_=Z`8*Fp*LYw8JZq;sJ29gzmskz6Zv=gTSW+U|@Aa0!l!)DogE0ZVRs9 zg0{m)9Q=|8zOD@o6Cit~@SiaXe?YYB?f16QAbHLe zlwy&W7LR%Sl)W7~lTk!O)fs7(L>pLKHv3zE@!cvpC-1Byi3&vMlRbY$ZA!Mfe9r{- z1x+DX6lkrbE-;yENgEWu>A>gp{q>5c5UAsW3y|(2UH2Ow&Zl?&cwxlt?1O0e4ME7{eyD{clby%o?f(ExXb=@d;V2s<;b$Y*kMz(kjg@A3A?;w2 z3I71DhP4Au=*mmL1dI%Otwc3DQ7Ogg<%-HPhA!|8EIpte?<5aS!B#Fx1cf%gXYZ+-v zzfh;flM)n{yHh8qrVDu(SxCv_&mV0XmAo=1nT3+x$<^t;qedDQ-qit<`y_L#q%33t zJEnTH0O}civ^(8pz^A)vC|O6i1aqN>Z|u5OS7w;e%=Ott-?t(%6p9VR{UPeJ{liTX zlG@*Nj&|iG#Glhys=k?aURds+w$>Xp&J;i4Hp$ zGiNx|h7#c%uX+}R4E(7&!gz}<&Y~Lg%z{h4MRe`>BddsOoYs>tTc_q#XsDE`v>&09 zd(s%4PJFj2qPN^|r7J&_Hq&ZRzt-}kytVF9lvplSN8Kl*yDwPJNNPf{T;b#=*f zOEpZvb&8F&!kLP+yoV#bF)JhaiAXz}PEJ54Cr??Ib*MSz{ul%9#F9D_$xazhhSIvw z#+uc4EQmua8Ck+p&UNG|#8S!(YY~rBs;z08Vaub(*zaf zaHNp*hdmev3;wSISa`1uqjzOh#5J#EI6gelFhuhm7t%fs;}51CZcMOwfD$vexK5oj z{vGLW^giUc`kQjQ3huYzONS0D)VSN!I;3Twup$Bg%vS+yg!x|Mox@)_w{1E#=Bsry z9F6349T(8;-1~?4PS~BfN2;Iy01lU9vn&QH7foUL4zpI70N&GNspcot=eC!o!R|P- z+i|50>L-JqMoxzVZ905MQ%TV$enXZQ2jYq)wpFQ&>5Z~?!1rAU`**D4nMiNHOq23oC*ii&6(9XDV0AFxt`qZj5~~qdahWv= zoh}L#t*+&WQILU+?WbtnoO*VnC+A$M&ULuePM8Gqbm~6GE7aRsQoMhIabEz*VclNpR#;w&DN}FvRWcKi615C3moDaPnhgF!jfN>&5>xhnnenn-CE?5wLM#fM3>!% z0j_(EvinL(Ltyc>c{umi6N_;+RHLI)8uJ;95Au{z((OgiPBilW01B9&bg@oYrrMDy zw6#7`rt0ss9hblQk{ow%Pd+d;=NZDD{{S_2Io*MV$DmhfAVA9LUYhk@Q{ZeCkpNzXkOyixHJ>ZUDqr-T8~6WP}oXa zafr!wr8X@!rrnN^e6m|{w)YS7Z6{cGW%UQu7NPY+rZ<^B`z<#Xu48n>jQ0w-sncnl zKuZxvkxuVubrcZ!A=wR0B0Kej|TW&t<|j7eIZB#4JEqg{Z3v+_lr}e z{{Rh)bDgmyNcQNTdNUftq|SO2i{Yxv^-7>>wEXIO@af?|;I!k4JKb|U5|n|icM{^( zd@6vX@Z!-s32)G@-L*FWYPdmxw&7cMrJUgI-72Q*vY@<; zs!C9zaNBMItRN5HJe_$vuZV50uiN1;>ua+kancqGrkDNG<=JtCX88Pd^}~Te5#u1O zxa_d60}kDU)U{nMk%8 z2-ueii4wU55s$@3$5>5rRgix6=!S@dpgKuMVX0bN5CS15vZBNjJmM zZ~Kn0`s&MCn2AJ)+^LN7=`JPpga*B{kbVZcSDa$T?z`*TYVfzzKw$KZ%GTOdTS`o=&7i4Co4$}#%Tp;B!#G{EaN}h zR=LIaJEC#P6iG>Jw&Q9+KBVMi54Ju30DVBjcgQHrGPMG?GNr6#4UA`>a0lB_&Vz*s z07o>NN=$H4=GK$pC(iG&<2o;KJ<(%lGPhV_Gp(t>pwiNCvZY{n`5MmWyI`DSbp0L; zHElLtQozXdq~P)FoQxmeRKByru&ixS&Q_&FQJ6sbHe`KPPkC!tDOWz6APzYDojoem zN%Ij2D><)?B0Wz30J70cQtEQz1{R{E1Ifw%04UR!5=0cV>6YeEyCo?tB}!**Hv%)q z#-2$ty0FvKo|sD^mYY-IYFcup(lAq>Vl|$u&oufOBbwhuJ|Y`&MnR6^5)`IfZA62g z%7UDae>y_<9i*pqCb;0|x-_aJi0FN3dLzZr>W>}Jw-T&zl;b(kWy4%R&N_^I(YUj9 zF}Oa8K9}5NrJ~wg3BnE&o;~xPJnLtM*LjvFIol&dTP-^8q1Ib`?0KL^Ae`iX*G*Nr zn;WKM^q$LMoVXkbQXW`d*3f+cB!9N5Er>Zqt~1FdwmZ!IG>_)G+OpfIK0ZJr+e{s$ z(mmB~T8%?2sr3aZTZtIKBN*WG&UJT+(jh4r1!}36ONA~tdw3XHFp-~pf^*|c9L||b z0V}zrq@a`hwGF$I@$5*{Gsy^?rO`EjTvo-p%V1|5@_5KU154rKJE+ddV#SSx%(YiM&XV=X$aH=Y_!)RLuqZfF_xkU1Gm6Y9yc6w#;*(xGSl-^ z33lsc?$K;5=G;;e0zpX|lb(IJ{`yc0ObC?jAtEWvEh3=X>%(BS;&zR9A$L%aQ*8U0lH+fKoMwn%@tE;1m#c;X%ZmqBEOX)>NN zj^RLiCkF}#b`RekHI1x0rYBKIqD)7V=zUJO-y0M*r#~m;Y23#*afCs}QlfLEuG8me zE*9m8nBIZuJAjW&l!P?2%GHGg3~fJuel>4|df_wxC2Y3*IIk_Y6uB-s(QN_5 z`c@B~2b^lRG4F0Ml>>7l^jp#81jcQ)!$sC|645v*K|FZ>0BuzIWVuuwDrh`EZ06SSm9kTKbDTegyNGLfGef`ESes49Vo zM^naH+b!%XQc6_3U?_dY27sm+Gbsb4r3nE|GUCwM6`tA~86zIWUi|3knIcdwYf3AD zl()G}D{>dL!Z_RSl1H6J0^_QhY3rJ{7CoZrzF71q0%wQAtIMng9Zz&NJ@&Ec@mPh5aJTr6}cs~B>5*f_|&CyN~_2t zq(DDaD$&r!&+eWrny80Sr@2#T-S2oo( z9EBlORVr#yV$#o62-28<(Qi%#DYH}1o`|A^Fy9Aw=MVG<;Q-Dg=dUF)#8ka$r zApLP#Tw9L??Chl}R$Dx6$sBlBk~MQ_x~S7o40h|^`3Tj#r%%m7bJaA-xWuXQ9Yi?b zse7D4+fLPo2upw?!U-wh4hOchQ?k&(leb@&s={wIzf*uS%kx?*QGTm3JZGDxQ)*j_ zSp=;OE0m!?oZu18bz=saLr^Yo{ML67BsT#5NwuiOfMfQ<>4sM0%p~DHl1M2Y`>~x~ z>bkts6B+&1aX>=aimF{gBf>2$Y$?OI1dvpaQ-y9ScgRwArA{7r zQ8+n1Go*f@_dZI{;6z8du&K5iRW!$pCM_$U9hcDi$xCro9$#!BMCZ1wkN{C1IXT9- zmH4~pl6352zxiFtTp5pMNe+qZo9El~>MIgqnPKU1q^Xt1Wdn?5C0)f29Au36=T_6b zeR9|42*6oUr%@R**B( zWWx$vIp~gv#-BT{}HhZdX8(N_9J8tUEitI@( z_oF(8g1@O4Jb%8q#iST3&%M=Y{qYNPZqd8?h~)jWAy5f^;T(jgZc~+i*Y(i?P=X94 zP?pHSN#oz!Iyng+BbqJ|l7x~E_Zn$Cp`?K&D2;%Txk(^#!13|Ul*vkF5z_Dk0GxB= z44neWM6|}}?k!n6Ju1f|jGX`{br=L?6M7YZ0o(__jSvcVC4<>X%8vsI&ONju5*DSK zak2_Q!1p}p5S7g#7`PLH6iFPM9O+>Y3$Rgwi5T62u110dpd#)7pI9V&^T+z>ku%X^ zumK@NoMl7U=!BqU0$d(Lcqfehzd8gbJtZKuDMeU7A3p>1(+CPc-cb{~7*a-083QEg ziY1`tP$&fQ5`J^wXbhy(P7w(z0YfPVIrIBq=%<|~3P&nF!}Z5M>8603Z=KMRaBwlW zV;?{{Xg*QpqJ^az;oVpg6}m1qU4`2&xLnI0Sw4WgSvE%1En$ zl>z?%t3UM9Cu>kBDOm*mx`PN7%F=goJSc;X0q6boYfPsEEp-(hN%qG+bofL^y46#N z+(A$7I2veHwX!xyt7s}9g>is9f2NojK(~}aOsJIMB_nqy9)H_LGLV1_nMvRz4Z}F( z9P$t7bkdtvt&unc`wu>K309I~H%1Feh{C*i2galoOhlt@Avj4Kd;b9MjY2b&1CdLd z5~US<9C4`~6NVl^09hmqc{~hz=$67v6`4}MJ^=UqbqI}=o{J8Dq=SwL#yQjwgdS-! zgORx7*q_r@N|T+DQiO$im5@gujA=g#5OmZq)6mXD8&I$I$w6cO{!2vTpP58$D%{fx%u}ytzmrZJ<)1Wq_I<=s;&PtM`ct5e$JGu_6$ZNEf)Zw>nwyUVLI2?K> zXCzxrOnOOzs;xkTsuKz+5E*S4{OC~L^2)iwzt>!2LgAt{X>T+5y}1SI=v-PD$2knjqx-{D#h!M$i>r;7g!3WU-1dKS^oKpY{ zmNB(zPaG7G2+n=<9jADdgb*Pw83;fm_Y&w|2*|>JW6qJzo{0lsEpy z@y8z7)M&=oNdaqxmexb5@1$Wt1xJhzW9_0wF@lfewgQ-M6B-?c7O;_z0YjA(qv4N>+LCdV4{`^_ znarsY0y3Q35gaZDvg(||u-eH^;ys3`8pg?7WUVz2!VudbCA92?+Nf5TcRIprIZm@)&P*ei3_XozRfYHd5Ks?IVe{x$W?iU(q#4lz^!AfwP=Zxc4 z(;VSK;k2zL(cOLTscbmH@MF$N!S!cwTcOg%ovp9-7RQN z=fYILNK!U}O27J_eCs)_2L~vT0c@faHyddzB@L+x33V>3IT^?}_BumaqfC@o1Dlkh z=;=v)zUp5}@TQcG97o6`@J67yz{l*AGz0slnH0q~g`sg0mWaxoKme2E5J&p!Lu!q~ zm6|&vLPFa@mAx$`BWJldJZe^Oe^o#P6bq2^Z=r-oa-&kRBS+#}Z@Vt;Cv~ydmSwgGy*Kug%K%Ded?eAWpt*^jpwR(NM9jDo-wGObS+LIxq ztfl0z(m_c|)&Nmi9-p0leE7eLak|${W$R^wBSSzN>@sFK&gW-ASyFR!bh)_6%&npFW}p&JEm5lSIYMd zr^;Iy@*GI!xqlKGv|mm8v~wHJs^^$?^f;Gg4xbg|MY@$G4!HqAMZ|itrJ+qcrovnv z6}X&h;hb8HaeH2aS{%UQ(GVJcotLIj zz~egP{9W+}72%=ow5BQ28`OIXoa6np+T5R03jPzrE$YCk@=3^JP6u~#3I#>9SccU? z=D!ro&&1@pQ=eI!^XZO=j1B0G3L41np|U|yAt3oY>+^>h;+Ho~J`FbOd7LylsXW|w z(BE9IqgvY2aLF*=X2(wDN3MRS+r_7@IxGq_bWAcDrz%od@3z_$5SN)iLXr-7!c~#y zC(gJQye94M6zf!|VhMtD`fvIvQmb0|VcVkSX?H92Rx3~^(#2kW)*CvT72C4WpgcFG?p%!>{?8T z64-{YV;YMkFUUh!;Z2--=g+piwVhbDW845I`%H%Ws*3|%17&e^?oD8(HCmNVej;6- zBh*_$${J*>e=+2%85@VE-<@-Kmku|9@>=o-tB?LYJF0azR7OC;v}rPC&$!}9w4_k3 z5hbY+DwOKX_hP1+$`zG7u--Uu1GM{}ZyM%s+p2so&t8xu84WDd*B^eLMO|BSQLr3Y z>AIFwI(J^9x&j*4^Bd?ovW<6_b#4 z>6!44#8#Avp;4uei5gmPe-m2+ONUVln(i-WSoxe}bulW;ZijJ8TAqVN?k&BgaG1#_ zaN$KH=b!Jdy8Jsvj|JiM?XIqMkUsn2oBkE#FU?LNaO#xULFu}zF01mHXheQR!Er*j zYBBQbREC~ybJwu&g*An6NaZRc@2@lQcf|Y#>5sB$t6k%rDQiQ&{{Uox>$>Z3ei45{ zt7B9OThI#dRGZAg&6`F-cT8xTRs$;ZI)uasT< zLwRXz+AXN}FktF&Fgi~%y~QpYX!?$>`fX-84c*vxP`YnM??v3ZDN^G^Lqry;Yk5(^ z)0}Q>B&}si!Nxsa{0)0=hdvnp0K8FUM!li0&ztXjhF2qr@p?9`hXPL63!tI&n(VAo z=F;wa%ClZ+x0!OBDc~ixy*N2ri7pbK8Qe4HUs<*Ia8slyT-S5i8*0)7cHic_d$^-T zLi=hUPVx!=012w~>3!QmpF+2KeL7tsHv~B!j~P;n?k+1TZ@TAs-R?ENfO};mjy!A2 zd{@EjXj`_WEIMH1okP5@Pw@T4df~zF4=9233R^(9Y#OCr>5o;pDs8t+X%OPq9gd~P zdDJ!#M0XUBq@_oMlgab13-JAq3$UqC*Az7e^T{&199j2u3mZk+bdNFQeO1%{0MKIC zewRX*4yL+f=k`GZkDLf9IO0CCbRqNS_H8{Yb_i0hmt>7!rRtm-r-VYvpYcIfjTZh=t zt8Zalmn|Ak0-+264Ij? zz6Ju^bJP7JI{B{__}772wr^8s3f3q}p^dPo~3i;ae?Fs!eJm{l`fqZl)PI+0O|F8OC|nv3=7j z*%nnS0ttsOL#KTHAJKEeoGTp-aU{ftZR*u?LAWXH!>6L7X^B8G6-uc%8}GQ4`iYjH zoCSW|Yvy)eA6f9my^XVD#No50qB_9ydai}v1G=pNm9#g~N}1ZVT20?3XVcRu@?tjIDK_@H5aq9|PJ&ykX+>=w2 zNFP41rtxSnVrS{1Hpp2yC>YP{udhD4ow;5N@e70air+*OV*x2jha=K4q|~v#v-y%% z^DV8Q0CODp&l;`JR1SW_3w^mxpsOoN)A!XzlS-PLa8sjGBap1C^#p2{QgUMKLFBd( zCNaSaNKSt*jV6a6NFJ$lyp0m2wb`PyQp~3v4KkIuJxeQI(4V%smsia%qzN$GlDgKsG1P3ThA>O{ zALrFs$u1IQ#F zf3}3mqd*1<({YH-INPqqY1cu+POY?+r~d${Q5he$o-qpMRd^>!AP(uaYf&70Wu&c9 zM&%@{2Y1Ilbpv6r1W#qUjcS!))d_QYPbEWFYgIR^3ZlY@+liX+FSj2(%oEDM^T5|8 zxv5N+x1U~X*tFBDOgzkwyF8Q!ugmHTYk9`%bLg}yC%+y&J`{92Ca*ne;|@5o5XjGf zkV)37@c#g_YHP-r$dA=$;39#$Bh9Q#oCc4QhV+_)R-n`=)Jjc4EINh9BspDjQ-50O znZY5osX*+&_{O|-y#ZRgX@?P>OWAQtp=WCQhY2GC-F4+YC0d5I+lOp7R&B)*E=*}D zWt5+1TrQ2+{{Yef*RV9}QZUUXdf>00yxLu`z3+2Nc|`n@(x?+Ev)Gp@#_8-K1WJg~ zyUTl?5*LK+NcZw}u+wv+Q6Asra~;HJ(h$H&>PQ3Rq|K@%6|{uC{O1P7*~kC^?39lh zE_-K5S@c(XHHN_KH(No(xVI7RkO@fB&X|RW(FAIC3aY88xi6368kt~Qcg$OIwP`?R zsYbWnv);K|l+^YY^%WN-PsZaCav*Zjx@N6rTKDU>6^mQ9s#KWw97mqFexgE9?0Va8sk)k6C|k@Z zy&wnCAxT2Ji`lg2UO}%k+%`Xi^YlL@^e+(7%l!{8L+Gk|)~#UKw8}N5CW!*twdq$J z+8jm^6%9j?J(z4Z`_p4(NJGKZtSQW#l6mJ^xLsD--s`E6rU4n>pLOT{CbGGGo4hZ- zEhi)r-(G6BMV~{k?hmT5sS)cnTZEsjTxpDkVjyx>hg?dM+CTI(IoG#0o*~sjmze$| z5klMRX zC?usRL#`vXtdq_O$G*I!*B!jB`j+O1Z6IVlrgeKSW575IC^N<`GVa?dZkberbY0y@ zmvz=D)Y`MuS5Zr&vmp?myCkPArP&N&E)?;d+-F>C;$KP}Niol5>#0=+<&Arxqozpx zmnqM$8br$4E(ptNu;Xc9L_!kmMYNH^(zaBD;QJ{f2VOw%w=+vykuyK@DeH)Q^5p?j z6&XTP>UJ|Fm1iSqI6r=M+-QLis%SjQbBy%15ZtNkx|UXO)TH1NN8eObW~>D6$eq_= zbgQYbpwlH%YWHsE-Uu)w)T61$!2o_v3C0h(*Uz};2POU`IzFYQ3bB_D9#;|@=_=W$ zQ*XP1Llua3d<&j{l@}k28hNF_NlD}_MF=Vw;ElsWgz-KZ!=44*3ZN1`^t6Y13dwsmrC*q#{a$xlkK%^#=&rq?dpjhBzRN zcrF*hO?R4J4bZMy(&m|mW>0mU5oa=(jwsbC^43xsebsS~a#XBwu5a0e z28Wuy;5^1E_N9vDjj_Ir=R|vf7%S$V*FSXM`!G4bCU-RCT)R z;p=;LG}ESB`N1X|^5(F8rm+F$2O&SQZ=BG#SX>mfE+ex40Gf)kWe=_Pka<$w-c)ip z!oRkSejjk+A5^rrpuir12U9vp!Jez3e};ac^iAuEu|KJlnDx3vuTEUbR4T7@#qT4M zU5LU+kfV=CTDJYQ+2C9voeJ)%_O;G{TRGG0aJbhr>YDVaHguii6Ysn$>!&fSEB^qf z6|SfBf||`v=7JLA9Rj~pLxpv)8scPb5pTdLQtfPs3;Nv`wyLdk8OHq{ujwy(gs%A zTX<|?G7zTIQVro_7=a{AyFEHVVTm5K1DNQ))qL4U}LZ(yyL*A8lU32+mbu+o4h##vF9M=5i7U z+s};WpY5rhSV=L-XJSjN4ZBzXkTb?cc|W#*b0!Yz&17yS z=N{UksbFlo0bfP0uIONt@g|ctF+i3!A%2xQl?9}qa0vGv`p(iOMtUnMFw^_#6iA>B z*nOwvsf7*8OUhvdUc=Hde@$FXVYClvOe(Rl0#N=w;#3h04i+~k22`N30Q|n9J%^1c zq<3*uI<)Pw-4t}bV@p(}OnRU<2IC-tfx8M*iac<9<3sHY1h5DLa(_jww);W*-$f&O z-g20fNc=#^B}fZOStkV}aAlzUx!112;41iu)BPGbXt8HR(+tf~Qp8 zP*seF0)QNSw2dL)LxiOv^a++vvdGl8E6vN1C^nZ9xlxwet)pQBJ5iVQ(5| zz6vz0U0IGMCztICH08V7fg-5v#Z%sEYF7bBD+(%B0d2v+81fFc3$0HLXw(lqzKfq; z%u}bVpEpnPqYk+xu)8V91rT6cxH5?ei&cV$m_LOcwgeCJuJ z({UqC+|bJ3S#`eNRHv4|1PrJ9X&M^sh7xKUBBiL$EoxfA!5)@BD)%3Aok@2fpHzjd z*lG18wn=3rd0TF0)D!QYIqCn`0)QNj?WEX#zp!t0ashnSJaPtRVFuuQIez$g4uAst^$<3 z%K@->N{7KC!PP~8a#k_G;3N{F>Q!0427|i6>}S;9z{` zO&W}%=V=hOaHXkAY!=p$lCV6J#twwx2FEhCT3>9XrMv1W=WaT62gj< zw5XuvBw&SZ{{S&Oewfr0@Tz}AU#V*tN>JGY1Pqa%kWZ1RprarT=_cknry6yXmJ;TD zN*PEg{1qy-ZFP%Zg!;m5uX|Jpy8_+5P=O&G_}Bcxg4$5 zN|ao6Ygr(u`2cu4XxFIr`JiD45dk`waS{IjC6L%c3evXn7NvOrkO;ul4X*cYe`KVf zdHBIaL2o5NNmGRY@O{!V;C$)W*G9oBWOqw%V|$FEKW$6$u%ZA`zTY~9xROx-f{+mq zhl-NoRu{<*sX-|}ZN5%@v_(-HA{@1{rlb_DA@2Fv+{RD|9G-k}s{}c{KQzF=OE}Fz zB*SPSw8lo}vFh-73BV`EjZ`Wy4MuX5f!8P=jO&FCAqFzmkQ+*e3g?1H1Y_TgM%Dwk zLCpma(%Ngh>fLE>l;i~~B&dH#9AiiAZgBtu2o~t(v|K@sptLYu?x`qH3P?%{zrQ-t zAFM>G%t!@ohGr^5Ee4CoN%XjtdKZDp7w!-H>ZxQCD8VHMW%vG^Hvq(VEI5Yw%R5!b z!mvi{XGAy&mqL&Q?LpMVjKgXuQz1RaB#idiOJzy?#AEHQZS~V_sSN;^ z6VGVtD|MF-`$LIwfy=tyt63D7ABOhpGG3}xH>a?s+by)>P#4>AC{a))M`$|BYsPBU zbAhHbx15~%E!TV^l`SEaCC=s3_Qj}N2*lBN~5c$t>o@Z_fnvi)RB~@Xb1BVjs}fV`c$=3gV-jvrpKKR zI(w-FdfJOdgG8^%G9H0(U_f;Nw4uZ$B}E}AQkCa9-K;iTMfIw_h=5z3fAR8KuPnR< zwb3nh$rf$oHQa{!L}S5fWlaF&~w%5aL@T7ZRX16sz+NInp`w;60$h6AI4+wsnvU$7LRp z+?SBjOl30PaG?)w0ZQAzAQQkKd+VW1%^dU5XCR%D(d9{|NbRL8@!L`*HrWeGlj;Y? zNC%w?l-pQleI;2dFO-5tHqeDm~R4b_vd7QPC}I zE#VF--Q2V`+M5y(kT$x~mI2yMbMLAtIJvR}pI^J!rm2SlK?AlHr1^25b*NAf&}GF1 zm7T>YDn6fAoDVv-g*P-8Jd`T9JdKf@arT3*CFc~RFJnkhM$M_@_SKIn{WTiaxa>3Y z_fS*^a+GeU#8!~-VoMcw<*12RN|L0l8$j8!18QYtt6gygx-LQv|W3{qAs`rP~wGCB}f3-fASC(E6>7wmjLYgiVq!cf1)RgU4 zr-P4uV6AgO_YPodgbCLkQ`u^xLG;=j>VebvbLCC$Nt){c5>Og2(vuAmQVY^!6p*KI zLW+t=Qd9}@K6Pyn~#<3))!M24fa7&Mf+`jWGmZe zYSZ;6xZ2h|B?M%1@tll}R%(Zc=&Wm8!44TxC^OXe@JQr16oCPsTNlr8CT7 zLrsrva;>2m0$9*jwnl_3gWLG+(sq(^5DC!T zM>om}ToR>zWbl0Z;AmkXmZO!rJP@FNsQJd00ZQ2208t6Sa17%lV>&6^XOc2kfsNdJ z@tp`t=EBC-Q=Pdg{{YpDbErpDt^lHUP8JE;ublCt3A79zNSm-oQpwxn+uKGZNgJZ6 z#drW8+dOE(c7YqB6=&Fhc*deL*C)w&4YGk*Rz`negQBB+xkdH^IZ^)r zri`LpJdp{({OA7wsP@n6sEh;4-6mFqk5aHsHsEK@m;=cG2{;KAEh%0&D(4_$kG_Zm zg!+kUN4Q)WDlMzZf9uq^mR-!W0bo8;`b52AR?}SNaOwVz$I)qC2G4PVsNJdeoq>(GImjo%&isG89*m_IR39V)#8E#d9s>a ztTe2Iq~xAeoRj_ap|lZmOL;8?Nefz)u@3GWgT^&xm`|Q%YZur)5Tp+r6P-4aj)GR( zZO3qK5&}Q^pmU$wRk)GKE=IyuY&%o}!6VKNl&e7yo8DlONI4+qqdWX0I7>nTC!a!ANH9P2}<>29Ji z*OJcpmZEY{olsZy!l)5}0oO|hu#`_-0YEvOCA`@@Z8-1h}WtR^2(srN$$NG8u z>04aWsic`~Dnn%Kl5H+TLKP*z@Hi=K0g|6^RCDJ{`hmyGgzY{aKuI+FTU550Y$Pa_ z(t)^)oQ&=~<3-Ill2CYS%$2tlqPLqaJfh>J&z%EO1VoUarQC#f zTcMc`mgdWz&^R)NTeG7?e;I2`9dzFI{=lhI8u5HTubrM6Wmrm$2U%8CYj4?g-Xq{fMZ`J(5ZK{%?O z>Ksb`rJ`RrOob~c1tZ5Apj8A!ACg^8wiJx`nGHZMKl0N_=?mJ~gq< zacr=wLz+g}TdG_J0dg~CN-4q{Qh587XWLZhsO&hQEtE+W7m}BIU8Srgu@n=4O20QA z!8&So?E^B4oC-Xr8~#L9LM}L<3f@9M!q1R0Msc9loSDE;zyXwJDebMYlsM}sPIvD0 zFDKw5A%Dc&XUw&(dHiMJhP+8eP9sh5AXf=$5i@5K?BsT{{RA^N%aHV!t*!-Z&{G5Dyzu< z01#rQE@kfmVKit{s)m;~JAy(^_^!;5${cC6Ata^6IsCJq9{&KGcyGiP6-cD=9PoFY zGTylh>Mo+%4G*R;ckEQki5S%?_SLTmwIbT2! zrBUvy_xwhUEod1aBPmu=Qc{(1pM72MP1U_lCef|U)MOJOra!m*?y~XLxz^5hkmx<9 z_xUcN3siDgmbMrNAwggillC7P{WjV`-*QjpzGU}jB{Mk75#=~OeJ$tCs=@yg8s7+zW_4T(I_MCW!!w6R7Dc0078!8?X=Z$;^ z;|?dnopLO=b6DDp`{tP6v3SAsUr*pR+(GmmUb~!G$PgfR9M=}keoaOU3LJ6-m4JZ} z#O!U5GEf0H3C?m!I`Y=mRW7dSRa`YFv5sWE7*vrA$FG_=8rxX7r*VGqh$ z)Dnk7P6cDuMt7*3akOg%?*yq;&X;P=)8zhsX^lWzj4Kw4c1fmEU#Z%WsuU}JX?N)< zvU`($t>%aGUM@H}E@a>iGpg!*4a6?#HnmDR!7v`t5!)PxRY<&|*A^GIS3auGlVnBe zQsQ28iqjVTz?iN5R3);B8(oawZ3~)Bu#LC)oYG>s?zQ=Zn4{RmHKi z<~lfU3onHS&mYc-YP?q|l(ZUm;gn@k8EMMEk`%QnE2navaVQ1F;U{s%RjRl%C|}(Q zSG8Q$IQd*M8s#cH(qz*G&H`hvWv4RTb|Y=bp4Z|qqc|51tkYm5!`d7UV3M7QBw%?z zI{F6@_%gMTEopPwe&d=XIkA^@mCCl_bncrY7|17M(R3xdSep``OkGA5 zNFI~49CDm%?q3Mfxv#@1{h_izfbZ^aDegIi^ZqSDlP(Bh$K~76Xjf#{s&WIg+pbJR zm(t;Yoy<1dM~4(t->+~_<@YDt4RO99{{W`8{ARJMQN$PkY9+vR(%b;OCk^(dbEs85)khfO2(OdU(UXmnJjkyW5Yr^RUw3QUM9&uIud zdyZ|&R^jlFcu$`?`S-^bTvo4#LTR?tI(#}|vybjOj{R4EgEoVjYBkP#xt9~aV5x?> z%$O^rRBh^Ti8hYouFQGWce}}PN$rJ`!P?HgT%wPD2e z*>w$p{8K=xyeXB6Y#IdToF9fZ$Z_cIm63#ca#F2(?i2B?Dx|jlSs#cApH&*OL@r{jY%(b@H zSpDK!A);_4$93BHM}SwcW9n6yb_Ac~C?zhbO0LmSP_D*6tO?>o7@{C$NLm{yPR6${ zI})5_WMkuASB_A zAT^_(FQ&=&r+1Am)}1m#6-l+nZY4GXYOR)@hT0SV04=~!ouv60AFi8)d?a{1K@>GJOwEcvs&Gd)CcT2pJjKTQ$z9LXj2dFzAdRK6eZs zje6cc@JAKn7FrF_pwYWn*{J@((jj@98@?OEuC+CV?&?pJdoE?D^PQKUpmaUPQ6L@gvS84aW~jD+sNQjWd}#eeB_Ya#ZLRI(>7rPIiB@EGTL96A`=*>i8}Q=l~i5uH&n>K9hqojqnti#5tz#_1+M zG)jxf`iS#_@}h@WAucvY({AW+UglS zQ}73A;N#f)XvkU2gM@6T3=#WkV5=H%j*y;IdCwf^6Ui)-gg_EW;~75sIZ}BbAm`fy zMG*xX)#reJ_wAsAnh>qh+7#ySl%*wVT8`9!2alNDb^>>&RU#;CCx1maNYFQnn0;ZrOtf|f37F2*S;OpYw7vHs)f77YsIQAM@&@^)O z=Dx$g?IO@OM}z>#m@fYSQ;%NC{^`$F6IMh@Jz6xXe4g8F!@YLY?ANs@gP-X}>(;biUC);upi>01&U!10h8(NEG_@xmSTXi3=_?OG=Cs zx3W3P8w3>}-$?2@+FJmEHva%Cy~3}ZZ&jo^I-W{}qx9+8C1_P=SERK>l!m1yTGr#8 zg|slFJkmjzyk_F0z`>sWSI!s@qI~JQ;^tK zldvCb>w7Q&nO<`CkOo{KIAo}SubO9+TEWEBvieUdO0 zoc@}oy?+U^U4`G_^dE5XO|1l;>Jus2OvV>jqEaQ*D{!O;@nbOBTa>kt&+{GH-ofMF zT*mP>-OB@Y9$bgbdYW7crK`0)?PGi7`T(eYq6+=lQK7-FThZq+N`1+-2nc+;A{(tF zloxOURr-Uh*Ojhm+vqN66PApX)!|mQzB`{wQ7+uLK=xBknoWeaBY*X+xGlz%OxFg+ z`+)F+k?T<(eR=ygmRz*z)0N!f%oQyvG>H(efb2;VK9v(%hENNRH0nrEY2Gd8LnsHh6i)+b85#XGhwU?72+Hr=@b?M=3;;9B9hJi!*{w!)ZB8;N?O?48l6RyL zoVZQ^KVhze0i2(b^YtkQzlvmwCC=j+sD}cP zN-a3o6w7kR>bjebU19KDC%Qr=EhQl02fBb1GJnw6VI8s~!ENA9m+ zbrzD~f8EHH#NBy*asDo8RLHbhhJ#IgD}gQ8LE3bu=f_*>4@n71P~cKmlqjf>Gx4sS zDn_-%y-Hbk;^-r&-)@QiB(F-J1#_P0)C9&HAmAPFwCdJPeoU7q(O8Kd;BnpXq(zeI z634=~$RQ{MdB6i+x8hzF&L?L2RUfAxcoNb*2wyDte*Ls=T4PY@q&j_k5( zKQ;Dh*B&bx*MP|UEsT7&B~VZGroGhLmXS`o?g`PTY$b3Rah0GYwjEIPMMlJ>gq#eJ z3CF&@KL@8(&vTyrP2@I?-iw!aa_VgYn2hr2*mYG`P~cH%mt{tWXRsZm#$~n))H~h| zxJKs`7H|$TkJnwxx{NgC&;nf{g}QS&T6RZEZf>O1orxAgYNiV+D1y0dH7#gtWVX|8 zDLd2u0Mz)`8lh<)(mK0zMb$xYWWn#Z%{niqcC3`5Jw^JB2CC3ka)zjZDPchEL0jrq zDONn=8qOKv0{7}8*=Q{}1VnUJ6h4SqUxhI$y1iGNjQP@-IIITl@gowO@jB30X%(g^f0S=`tF5tS%y zPm*<}^M*e4&2tM#J064dR#YwU%e6q9Vtu-jx{?P^*o93HyVOf|G)D}1)ap%D+PiJZ zNcA*jq^T-!9vtoABf!_semUY6l&+a=MS#>`^EeML%;m%_wpPWgGDzlmkv)1YR_dFm zwr*Hxq}mZ)wqamYs>+7*?XvQYOQAc7Adi!-hXrFVC?D$(?pXl4w`G0ZHi~U+Atdh^ z{r%H|`pFiZXDWnf&_FB)lkx|+Q-f89NM(ZUT zigw_D(BOHU!Bzb(`mJ6S8B(ItnxdLJ4oImbh^azMcEQTPP}q`j#&zngJ{qYpt573% z91hDJO0TH)vGE;aBlk`2P^=q{19wE|aN$Q<33XLzuSl47@>F9*+LVHRbx^H&YV$#^ z&-y@*nO%n1(seLs&;CSyLn=#b+np${Q(l_gpAGnoC^m-{)VS!#<0yGb!OzD!~J!FOgGmV|3jHG=jn{)yDxXIZa&P;cxtl-g{?1VXkxd=M#44 zSpNV}Y8#~nd)-3dr(MM_uS0BfLlt=&ft8GwPD4b=NH zUhrMFUY+}>{bGY{TXqU))T-0&S88$tw+qjZ%WokhcGA`fSx33?uS3JQmCb66Ygr8^ zJyO%A);6Qu;$0938xP%j71C~=KSGI2Nf0%Lr_d2h`mxIYdV5FeF zxbjggiB2#WY^7>RBXCy)YWnQf!qVB5Z4z=?W6?V5prlwg-KUSFQT8T@J1GPuk3=VZFRxRZ!%X%iJ2?0xKv^qkRnDZP` zoxu8!=Jtw5$}pU(?VV$-bx>uXcEqi0qd~5Un|l6AMw(?2aDpSreljAQwGfiB>tx|+ zQuxTvo;8%*Ro50)fVD5&Cvh8zCyZ*x+SD!;9W&VM zs-<}9j5L}#Z5ybpxS^IKujzzWUP)W{mi6j#sb6l#l^bm<0OL-{; zDMI|H6W||=ag7SFmu~4`*g<(tG^Li4>o~~goPmt^(5F;^2_7W|Qy~a0txfIaDhCH? z`Nujk;OGKTX)RldhRS$S+fi602?XbljQieqsmD4IrIBzn&3={Prmp|Fo#pLp~2WvyP>0k zq!2OS=s!T-WlaQR6bq#}Af?90QCTWOX;B1`X+RDeqFn)JdSb~&!`tI4Q5oao?WTqWS)I{-q13jwRM9S=;YkOD4;*8U*G%S# z0(VB2R1G?}7Sk-GI`Xl$AmohlJmdcW8U>ur-B587w;Pd#I@-u(akAQ(RxqD_Rqy)h zr?I3+%C)YMgu9?EN^vc2V5e#bBhUH1`1aLI5xL4^4hgXP0-75bDlM`^V*poW%IN>)I^w*&3&HKCN)=q@r67MM>o*)=#3)h0^OG^GkslAd@2 zI|=d#)_UxvQPA8bAJdtFh}B9YB>IU1MYS5|7c>TiXbouQN*3B&hSvOqN&0sg z4bMX=D0jFyLCC>LD#mpjVCfMviP>LHqd9}OC8Y`?R^&(irNjgfx?0p}R~ zPON=E&_QUE(NG-bxDmf}RnCa1rRXlIL-JBWl%%APqH&N&$Ul8BrBE|V!~mGMmlM}@ zDsAYgQFTr4Q;i1PTZH!(PY355dku5ls9w?lyg2?R^0w4n}5JL4GyM~)sm1p;;e zMgbV|G~u-mnVZINh=%|=cU$zgSf$N{Sd4@TwB@DN+;D#>C`cn?jii9EK{?e|1=Uz- zyJORTWo0LtP7fI)-7!s(5>jNCD|5W@!jRf_qdUpMeg`-l>s1O)U;)DeuIN;D@+N+Z zUFw3FjIg-mfTXsS0fiNjkADOo8q~@8SWLPom!b|T|R|w6;vsPB25yk_u?w=!)dthwz(vnx`vQZxbQpy$DLK-vZ*Iq zJh(XqIvvw^RRe=`IFry6lc_IM5Na`(2AZdWn@pD0lD*%NJ5&OcK;V(4Y0*!}Wzoo_ z&{oExzFjarFg&Foh%nIq*RA{q@YcxGp-R`fNSda?^#h2r)f>n=Lzn$a*X~ z9WnrZQ`4osmK;oVzU+9ZKr3?2_+D9LPG%H9f1D-RL&$+a@p!p<; z#F)tZ{%c|lCVO)3TVkbKZVd0jW13ummkVqqwWljq5EKD#1JXe!$<-G(Y&6+koiadq z)!(qny4}@*eJ9MoAjZKs-BapP?;}1G*mZg}CM!^+ptjmSItr9f$N(uRQNVLMvy9~G zt`$v!)xx73$GOCe{Iko^Twh)H9wVFx01t0Z)l4m#m3EZPz}+si+CLJE+x2E=F&_^! zP+LNhUqgo=D1uT(J@rl1Iu$f)2ODW8e`sAw4XLH!hkTh-WV?1`YUCphY)7`b*=~Yf zRCP35$?dI5$l#5^NjM`ProBBI#yXRl=9!PZ6D!QV(xWQ}G>8Xdh*Jk^vTE^UF0&Of zj^^DC%0Xdjb(6ISY@jCy_!t@a*ECspM0jWAo%*he>%OZCY6;HgfA~%Gh_dEX;=*zY z=0ojTx$2qQ3s<;81vV#b|U9lU^j6rQO{x*epm8htXDksLb9vg3x>RuP2&>sV1F@G{xK{dI4DBQ4rBqr-gt+shIG?O*aBH-FNyu}@81br| zP`k>}j_W1sXi}o;bxf168~oJGxl36JQ5!#`c;`x4(Rin{G!PcodBcp5cI5o={q&kZ zRBRHdbdEOp7#QdF(1e6@K$pt78-VaQ<3zPtq-o@~0>Q{oAo$7fbc(nnql}ymPEW_a zf*NCVBp!Egf6M;>eE|uB@q|om86fg`0P&)%Y#x6_o{}?xNOHqVHI2F$Te!OY`ovtBabSLaju{xS%NS%T}x-sD+o(6QlD;Q481LR)q%oE^x*#huB0GiWI*9NhTeWWYC^Tc5|b)W$ST{D!9VoT0Y||B211YK z!hk-aIMGTQ9Fl#qNK#6DBlOOWq{RCq*3yc~i1Xn`{@P&tC0ZjLJ$rb zQOk%UY7~6Lh=rtY}t%9gwuvT*g$a{2z^2 z07N`W(^A~Q10?+F(FvRk%4(MI#@wk&2f^{J30k_xsBYG_cl3esDN;BF-6 z8OE#t?wd+olN=-|$Ci`01q7pZ6OYU}13C86IG#ZrI+7}MuiqH*eCfae7!ATQ98nlb z$K0Q7Lkgqj!ch-6KI7bvAEuOmfn;o!?;K=g6YQ;5rCcNotwpbKlld-{J}Gd~8or6vHQ_cnM(8lzb)t62Qwi=6eowwVwVm83awG+NIK@%BT2ip? z81kg8b1kSfHVHf96*$6{;X;FCIE8LWO0c2_oNYW4sxGY`PM?;kY2;uZqSbH34Oc;? z*LF-TLND)rMAo8h$JMFK<>m3Xwv>zwzDV)$sts5i-RQLak;Kd4sXCK%*zp>21xa${ zcbslyQrJT&N^!BqRCyr#=l0a2t1&)Z!(K)br8I$r=I}2H>k_4^G z5?ezX#nN(=9t`;9gOYy;4+bBK)6UhW~k>g83y%!xd2&Q@-YT-%F`=Ge` zAEIexnXRe$PO4iyg(LAj$Wjb-sA04y9!^Nsmp+^TG{-EAs*7p|L2HLxDHHU2rX@0! zaa1jtwF`E-;+v$@W21XdIL{96ZM7-X?Ee7Nl!NV^WMx}-xzw9bHlue0_2{$;PYlxVb;;u;xcB3Xes@n|r zBqDHIJ-~yFqru#v$;UX?KED=qn`R6D0NbCU)o;TeT=~FY{{T?IQ68$Qn-&yncG9@1 zDUg6nc+}|gUVZnr_-nG$q#TYy(o(PQuZ?_J@dZ1&<-cvOZurX_)8V*s9KMU%*zo#v zm>OxcfN()v%H6*vfz$hmi}r+~DiU9vQ)+yc-kZB_<{4+TxHS8!Jhn&1a0b3W>cZ=Y zv6l5?PRC3FM)Nz5b?c}zRVO;6{%Su@r&cJF?KE4nn5kB3kkdN9XSnBPH6SVC+&Hg3 z7OvyPujZ?6(2S)ZDCb?@iRjxF4;uu7kSFA*qW2d7C(>e5M^pNZTNV4F1bUM{g{CZZ zDwnW339iG*L0VE)q7Llvq>eCt`rzDqC}LQ0xUmAIf5fJj#ZKHhZJkEL&44gf)E51qNh30P^6XHnTq zI$FDOi&jJ?4BBnyHVKU?Rd_V$ZhOub076^zjl}wWSs>wFHLjh_-`X1$nM#A40dqk* zS^e407Hhgp4c1wzIWCx`*)!@6uAzC>BScFNVhWU5id}E|in5}N6@FBsI{UW`_==Ch zZFk!Em)dDoj|`KnkN&y+7niBSDDf79PLW|7_w?+YYId8heJi$=9;+@Kh8F3YB0G(w zcJgh4Mi}b z)t-$iTrSM0(i}^0mW1O0wW>}^@!+h02e!XF{8M|vJZ~3;wd`$4C54d(nUS3IUrXVZ z_lDoXyDcPQL$~RLK-9W1;x0 z3IUj|y|cQYq7*_$f$`40T{?EQt#PF0RewAdi0Ikt&2t0l)o_qm{_cLN-eS3HS1B~w zYHO}p@ZBq8r*v?K5XWvfN_(?qx;t+bICn2#2}jA-o#X!i7V-A@bgbwG+sKnSJwWLQ z+3;Idywr2GKb&$YpQM#Y*4uqZZL67y5F<2Y(y4NrQ%kEjQd1#O+d)wjd`oPMM3vZev7K=rkliVw5uu&`4X{dQdzmEN^V5hN(pLnYB8TcI7%E*!-J2? zursd}dGJRSvYWasd7w@l-Ts*M2^)1y#IV6|QhO@ex2p|PB_fRcIIKS7ORAZ!6`k#! z?KUM6w~(x0DEsl_UA`aiC&U-*`$(t#BL_={lJVP4-m5eCougf#yfpqw&9ORmVcV2i z6+))mbi+daxH#)_7qxFK#G^bUgrtBm{k8gsfwb7!QfsMcds~2Wrg>^!8tR*C+&G5~ zCB(=-qLftnarm6bu;EqdFnbKEwIIoCI`bsuJND-a9x;t{oyY0e(REt>R!-*)2i;+* z!=F+5DYy~K`@Pn?)=8#41{F@X0orRRQjpaiM0vB{bzjovG2{HFkUVR_@lX22!R?)< z*goR3j72bXx7^`&ZN3Y?s>1ifDS;%&)TvQeq}8rE^{+&vOO(YvL0X+mhS-#d>Khha zOp<_-6`iR`=g$LPV~Bs&OZ#S**P@6XdtgXK zR+kLlmmJ0YJM^lwg6bj%RDa?F2}w(vJd!d2;AhUhL@xNp#MdsRM_XxMkl%)feH~~sI=K)~qo+Co*fq)-y z{X}Je>Veal)##F$@qp3?slZCAvC^KOU9ij6yn3bE6@y+9&V~J2CRV}7YHO@y~t6&rwCZv~*qxCAvYWbw!?WUsj5%^LiB`z@?Z2$me-+}EE)+#ZK*WZ``W%v@E*j>TkUDQFJc}7qktK94rqnIg(=BplM@wzX zare|m1?8b5i~v)wrF=8-XA`!h9afvoFlK4PUFrjuGl=lI7dnXmyn(q^Y#J)nOl``d z<)*0}q4iUtFw)~XzCcloR+k$jdjdvv_O1uMmq+jZOL|8ijJ6({bWPq%yZnIWXr*bq+S_ohsa?3U?^2L||ti4*+YuV?&8otZG&w zojH)%4=1oY0JB}!wxvKam!70SF{QEkl@@9eJIGj32gc;`aj#MKj4w9?;Htj(>AgO$ z4G?Lx$h601NG{H-rLXvf@_Ae2l_flquO#>bUU!f13Vc?9YY1cdfF$~r+Tq+;_NUHu z4ny`z({1}^kxhD&Dz=})+;SteD!v4G?Y9hW*xPAN7FCZK=il$}AB%V`&k3QejWudC z;lZ-gJ8yv;_g>$J-7@9kNC1tGB^G|`@UABJ3e~QksPX_cp!C}dvBWPei#$IKrM%AS^`P}js?g$F2u!*~LD`S0 zomOI|qE!}BNgvE@kfrv(@q^D9*Qww8J4~I5$nx(t|RdEjll6KgCmo9 z`UTm{I^zNrI;k!v<7O~+QD-f(;=G>FSvVZz zLx9{;adRm>w8!^z`7Q5INH|v9XK)_hZF=ESoAz^0p$GC_c(uUfXWasvJRGfA`)bW0 zM(U18&AO4FPI7(Dl(j2?9MO_{gn*uWc*da+jDfjZ2w_+!2h)x}T`6`{BpgaOilTR8 z$Nu=z_=$u>CaT>&ThP|D$Zix?5?_8nY(C}?GIqA25P13i+UDQdRJ@8|`f2_k1i1PW zf%28z;TP0xCBd#Wwr+H=dh`632~;FoH4CZXMUhghRc3Q>b5Uq{8Q2BcxFn2%kTU)nZ}7G)BN zKk6H*t|zV=v7SnpYX>2}*VEl%!;BOP)#iCr?fKwgP$|-D#z6#!jclL%1plV^TVY zO0;WtEvrVjE0nst_hr=0PBc|RV3qAGva+n8{1oS2KKZVF;Vl|!PhHp6IBgnkv?EcC zIqV@c$Lbv>&uXZvij7~lRaTIeLu^7^$DUHg3!!OBqqY)!5=YLpIhQVReQGW+GFkeN zxo&MbZ5{{Lkh8WgVv zuqb1wd!y>*mx*wO)nFGyH10IC=jF*ftE_NQQ2GaK3)VY{J-ISXA;mJ=p5t;9Painf zS(U2j)cR-H%|EL0_Z$qd;8Lg$V>tRLY`&zxTy;T(MyppFOKDWlmIPSQlCO7_B(yj_ zNgCx{RApZ_h>mV>Z|nLmMZ#=uEn5bwbNE^dpY$K9<^HI3zMUp&Yp>4V{EfFpHX>EOl3snN|58|O1BZ@Bx77l>Rub5(lp5ANhJ4O?jAg# z>kh{u0bA7SEK}5oH3sCdaZ{M56-JW{wu6xhfeCZ-XCux?)!ZV3ZfnDYfISu;iLW1T zXwyl+IJ;w+Pt$FxoC>N@3i6owsPFB5AlhDVtn;+G*b6E6<6WE19LBw(iF0SZukyHd zd|9=rI;F!KE$IX4)g>95_APnmDl}(f!9-&o6-t@gnBuq_mP7bcYCQWKYBz;k(RAw8 z-}Id)>ZNWmWm%2z%R`6vjC~a1#kC%$PDH9}5?-%WA0iw-Q?nNH#{{_Yz)s`;0M!Jf zYe1()*`?2>-~f}(JIt<4#ob%Sz^u(iA`i#`8+2EEj)e7ks}5nGPl&?+DncT&RgUY9 zB|MOlH#fNB{MzR`;u}3@Q{{V&Dr|`|lXo`(5JCi%EGV7(q7RaDmcjB0)!>-y@ zG)S|)sSZ0WP9+L58fDfL6xQV9a>hXS7}sNnG4*U}e{2H+Kk+hubN4YTE1wGMCx0!AFU}&IQXotViczmULi(4$5$W_mk3JMw5!fNAZzD;XKiqF z$D#d~(;ZaR8RgSq?5>`P^+xLI2U5CyZd;cu=(hE{O_HjtIdWf+)A5P}IV*8U z3MbQ$GDjM28EsVDurQVx+zwymaDFGbpw1ZKQGwEV?>xRsyl$D|pF*nCe-3h~^z1Ed z(;FL>@_;*A1K&FOrF}x1vlJqHyQ(Uac*TuoI}s=8 zE%VP`^?mYkiHKVjIs#(>gO}cHwgUpWSt;Cvv#AI?-1%qhN?nWci9dc}n z^4u$K8w{*8hJ2~T$s3X|eTsiwasDO0bqaAnOTE8!eWVvT&)Ia(OwG5`dzBSRt-z@h z5XzWtqx8+Y8LiwH?l^FPp9J~W&u#ea-Mv#$)QBA0_>Z7Gy%x%}b(WGa49`T*C#Ccz zWn4E@H~xs$A6v9F$*Q61Z>>dJ3PMz*4CJLb)T!}3)zv`SB1htAX$~E-wA|DWd43`? zL64$xqg~b#q*HCWvf|9S*(y@rWp1%bOoWe0SGQ;!`<^~^(W_?0u>GRj!zb|)34_iu zuv4nQB*7A$=UP2Tc*jheHk(*Ag{e`O8O9_+aRbKbEUhW`01rCC--keObt;Aq*$3o> zN**cJ+%&Cjq1!cUBd4_`F(x&kUz-t3%!f>Ly5b`fmm4kvl(t8l5wBNm#Om<+B7^FO z1Aqt;eb&o98q)6*@c?r>dn#X`w~f;EK{h;#u{1uPh|6|$FtU^A1CoQZs3`g1>%@Ft zV`-!9B9V1jfI<2dRXe)0-WtP#bN*#bE}QKoyXCt!x!s`KRHos#F=O8)>dR)z3< z`Np``oITGJe$h@G_iQmACAi$SjX=soj2!n>OV-m>?w-M_%W*6{9kQsBVWCPbr}~uY zfxsmDYrjVKz`r!cM=(zQiw!%X<~f24o_nrzp2XT}<-&ncks(hY34NuwgeeD{EECV~ zuX9T1JWK|KLtPms_eG-D>U90omX!OfO;S?y6f7YQE7&>4a6esFb8gzBQ36LbZ3^zD zNo$Cldai|ksx_-Vg2ZNOrn6LJZVhch;z3COcFL4JY99b=%{PM6xT~lD8hQRFF15A& zTN-0an>?Enr{DBVb{AM`H44Q-Wz9K;<3^0Kgt)%iRIKL-N4Y1)G#J*j3w6RjF~&{+&bIK27x5AsOu43c zw+l_>-8*_g=O?E!dnm>E(^jl&@{w;-tD^3P?4cX+HO6^{eyIc{=29dQrKP2vr0@v` zUha*hJ7<6#OT7U1$Lg}*J59E;gUod8E7<=4;cDJ~#E(_Crxx5qn9Wohny{2LxZtS> zLNkmKF|AD{wI3&SnY6)eCjo*p*?<4l)dWVxXs(qtE;K%%zNB!islWsO0272v_T~0>mtx@GY{KXWOvUezFa0BN=-7&tXGyq_f=*19_r5D>}l%GPDHx&WrDdPbA z>p$CoFn3xS#*>#qlOgIeVTKbLG>G{-$!}_#UIr8ZIV0>&u|2mBmj@7e4$GxZy%z2o zeuXu?E>e>z;HMeh@|IoCptKXWoNAtyj&*UTreu|tp`FAd`c{OOik762wZ@JV2b22g8c5m_wxLhaCC2)4+ML2h<~$>Umbx9~m6uLA2sEILFi7IWMT=qyVw1o6ssN30l_)wFaKT z!+}Zn=j?s-#@H54B_$fgl|1FL!jF$dfAN*D~SfZEX+5@xjF+=An5>?D@+!tw?%eso?ybO`yYU2Nbpj7rmK zDo0_M(8GdJQCdb$G0Id&zD|LeI*dZ6!y+IOoZ#E_8OuxZqPYT}y!R)mAt(fSN&>J{ ze#1hw?K%QA0`8lib-vq&KBO9hOHRb6@n)()A{4Rz01OA!NpJwBK|bx0Gm*$3>pOUq z`J5xSRkge}o4)JtH|^|>?UOnx((Cn>L^2N7OKT1+pC8NTKH29-{^>*e4D{dXlCKDB z3>RbbT5Z`CWUf-dWT06{6;i!RI4y-BSJ*_7BUtS&L3$ zo^eW$*^vn$%8W)mZ!{Ij4d;grKKiBnN|}%bITL_?WnC*WT?F8789vKVba&AzWOPb> zC}FPahhXl6E0n0DDBui?jabXJkR%NJm4eI6LwR+CX>=K}kr^@GW1%MxM21Fn!aiJ(EzT*EGwAq-7OQ8TxrEGt$rnNNXOXl9S4bJdQnv zmA7I*(tVN|Te2033MdjTT(dYjreA6<7hu z3vq6?#CULaK+Avw z=RQFi4rG`TAyfz+sEd-hEr5h6qk={T?Jr1spafi zf{!C<=URMfdl^1~HjGMEpHgRX+Cob!DZ>3(3+DS-B=@p{A&LIu-14l zBuL#<>g^^PAtWkaR?~=TQ*v2&jmtS`qaT+Wx%=uGA%;kgujH)`1vxDh1V&5AsVp?+ z(X|T;c||7+B&d9N8P2nZQ<4b%0xe-^E^+y8k#=;KAgya@QKY!`*ASt?nn3igApT?T zom$#WYsO?p)ia(zkeK9Dkb+Q^E%#ToQvpEQgy%bkJzQ&JDeCM7%A-?J%G_CssOx#M z)+Q9A>Nb?ASR5%h`6N6KK#_B(okV@d-g4=l zx1C1D-rkg{3eISNh9$FJ3D5>zgSU9YrI zt&hFiT!xo}wN0(Wk>^^S!>Lkl{@=;-f|}Rj6Rew&uejVNRGL(V(zvhGs8tmu0!+5n zhuV7>3My>l86O(S;8kJBYn$>Rbq^b~c$T^J-RXqx)aF|3wyLA+Ws(Z^GM3iv20dgC z2i#{=y3x+gpR9$YzY$wB344$JC?(b0K#qSwf3hzyY9w3J;EOef3>F z7|a(_1dr!5ulSDKlMZ%M6-?76Fs}QLKQV3unF~%?TNoJ~vUeqDIoeWv{@UF_-R!^s zH>WUvWtOiSwS38OK8tmV`jc-|C=SO|)+!7*#L9!jCPLX)J>pS>RHw~=Q z5NA)}o~py~6$el>NIB=u6h*2f5#>|R^V3$`DCmxqk_lKrDjDQ^pB~>j>X%j;hyqEK zf!spOLGxp>nT1ng#!EEFj-}GdkR?gOt8XVbZ*e>y1Ro<@@kXPaFCr&kw4Oh0O}<8% z{&z{SIT6F3{b!1`zSMNd4rNIuD}~0El#p3;zqO|>E!dm z(3dg!CRuVERk0{-emk3%6`v=O=k)RItqiwoVu@+LH>04WGW4asF7 zDCH^`DPO2=1bcC(brzZKsXTh25u`_{T9O)VOG^Homk#ithno&0C;~TONAIU=U~YdU zo%~{*r>qZCq>OC?aTxyqT}Kw4N~6Rp9O^$czL)@| zAxc`dj3+BTJ-i=nRUm8!$sxR`;g=tp*kYdWc`pT3E43YwQyNW+iKKSzMW zK;UGbzdUNAP?gQ8Rqo$)v|32ur)ozbB#-sb)$>)fkd#jYg(oBPbLTo#NhKS22lH+o zc4r!pkbx-u)`oWwN(Uql8eJtwAmAg1o51yM`wa~xH-_PrihZ>wj1lgVbpuFA1*TC; z$>4BBUGUa<2zJ&@IL<9kfVU+u}e|mARPHQ{{XI{RuR=>*B6mPnE837bNYT=m0T~FZc^TV+ zSI53M)D0*(sDZqoQBv{>MmGF2B0MZLE9)CX*+U-WnSm!MXpN+p2-&($Omv3;{!xFJ3P3FNEV$3IV6uHdkrvh zfz2i%B(*3Ll?7wY1~kDI2peG#xOU_ZKK}r19%u?#MG83J05OB-Jn9tH2QAViL;-?R z=N#bUOoooDSzEyz{($M#nuCTC1#Xm(qm<{yn+gKZQVZTausjp-rVy+IEmgRANdt~^ zs~XiE8?6TdRm$4u-`iHUM>HUEO^z_q^MG(Yj;;?OJ7D2!DiSa-4nB0^sVYDm(G>** z4az7!0UkfsL{%!do=Crkq;M6J_v1v>l+DKbC4_Yhr)GHPBT1|&Ft!mEI3PNr2go1k zp{$^CfU?f)AZ0(&Nz~L))H$S7&OD3^^P(Jtg|1p}-0*TvjFn)1F}g?T+6u@~PEVx& z0Mk-RBB6|>-37qfcO)qY+7*CFA96hEpdwW9HEy0E%A-c6n6E;8>2EBmRMa|@ke}#F zN!oUg^Bm;;wavV>ty$oLG>wPuyL>+Wjk^n6(n;L@-4?n9xa{PvS(YN@Dsmcj;ahQ$ zo^S~BsvSbOYzB$yxr*eO)=O02_`70@Ly0n@_CbSOXe>CQvpUWUtv6#7(!KCQ}e*r)|04XG$fLQ;|kxEjw_ zfYNq#ynC%|_^P;U7PS<0PpGlN(#_Q+u%n%bX^;o#Lt{t(08iPvC8YbDtl#>k?ETUQ zvRXG*FKzEGT;?jPd|__SjMJx&jt4qN{5fbNPNv5~Q@7&F-Hw-fguITeT~8#mKAI9# zovU0l78F4L0MwF5&Z{2{+f2zPx^wYO#736=vQ8E?};gYbbE*FTYqbYgh6zdk0DZk1R3q6&CPHpxhorwUMM+^DrMWVJS1B1^anQl+cDcMZpLU~U7` zkTvJHbzm!s6(XaWIRG*{kIUw}&bicdfdlALJw&r=mQ}+ZnQKRO1vVtOP0y-S91E3D zT(km-QUkoL2@4xN0VBZo);p`pX5y)?rG>)VuYeVVhLB63VPbdkC0 zIVNMj3`px4_Da29Z~SpO-=WwPN|jBPQfmk(1ef5L~A5u>v!gGX-Yp=lm z8@S@M+Rq%YJMRZLG=H>DE}Y7j7qo2~uB^Ge#JG1c)4D8**HP|dOSBVPhfS|j(Y=H| zmKtqurFmNsR0b1+$S3w0(~pMjIDN~VT0>ZL$R*hv_uJ7>%GBx*V-6GR>&ZCUU0J=F zwTvejnQ&F&&2j{TGFzfkkEhdyoNt|(JgLtE<6h#A#g%Ou>UE#uFt^GaC8MF8=d#HD z8phNQVRH{|eN|7@8C7acX}ZHU;}WXNVW29K616kwJIiToDOoM}C10C4*CwUgc!Bd* zmUIEFBe$2Au2)`w0g<4{?oYXuPujDq56GEErBJDLDOW6!Pn5Tt0}6K~J&f%wa!4x9 zuDrBsw7*-Tn2{f^Ra=RP<`wA2MlDJ;LXd9zifROeGMF}9w2th#(su@lOUnLQw<%jx zw45j8>xp&7c%3>r>Ci1>q>8mcV<2+_f89p-Pn^q#Lnc$@`O_%Lkg7GQPG8{hT3Xdf zs;x_xOj^AzwjRk2HVDc}c+PXKhr-_-YPZqE3mucC!|u9%pr)&88scdUE;&BRtmzG6 zp9bQoG}QsB?5ONJ9*(`m#i_+B0D<`ie0sRY-0IFZYHGzo^4f9rF*<_o+QXwpo6b+>qN5Sd3#yjJD1iNNsrv=fGDQ_jbP=aZ5{fw%fv~OCCberOoFB zyC0hJxBmbRQge+)z2V(vS7AV=!<7wl#P(oDjTtf}rf;Ef+9NqBNKrWP>DQ>E{{UKe zJsWUtsnn%VU{h$veo8`gmb{f#C^y6ahd5a%~tYP|Mu?xF2o(rYcv zq}wvn1`^6#O;JnmR!NM0Y}I#sP)DhroM<+tU8y)MR~IT})`4MMisYCEZ7t{|7B zhZZ)YZqt=ul1@Q7>wJ5|xIH^>v|mV~(HdGqKp*HGPq|I-rxmYSp`aZuIg$&Dy-KAY zjcd_dZq)UtG)wxK8ly_8)ElA~7ykeb`(+4l2NWAp$p9p*d*?qo_uLPM zT0V)ZU5>;FAdVebm2vpEw+A z>CfUXrop6th2tsIvZ+#CQyjNiQ>@#5g$AcmsnsM(j|mENGZ44jQb*+&+%lv3jbW?D zn%3$Xd*puWWf~S$AE#L}wg~+d0YmFIOsmS34HSCxT7*TdC~BavsDlR?dFa8#V0j@a zC)gc%3cvLov_p%iIA$fV;p%!Wu=sACs0Mx1JE>RYn7an8PKLUinw42f`Z;TW)E0K5 zl8CXEwY-S@VNV}YzS{HrOX4SA)Fsu4Xlw=mC8YJ``mU!BvHLsWw1DbMr|Zp3x;tsx zlB^3>d`RqE)aKn43(nkI0dmmx)g>=RB;{?Os1h^&y6A8l3u~)gG>I;mb58CZmzUz4 zV&#f%x2yl)f z?R6MT0@5V6_FSqz72n#JkbO|I(-xFjhfugDSLtOfnL?!IUfhA}QXFq;k=*lvz}J!D zfAoumn)K^g(=CJMX>rm=aJtk!J-RfU%ESV8fj*F|nq?xDNgCPUI8$1KYsjZlDTM(K$eSsqoCRN*YG~zT0pMd_ zC;0lk%WJWMT8Q;h(XHiVDrIoG`SbB zaHDZtInE3x@R9oSD$|cWiHx-_8^P$$59K%#LRF3roqO&deMAoZT&SgxGCX|sGn4*Xp-|w17mA0w}4Wx5>5yp@O)@^LZJb{ zY`3^|Ck;Qp(O0%-P`ZURt3G93xXm)(u1uX3HtjklAR;p*L55WM3EZa?Jy<`!yoFmb z>yzej^F*(#I`Go5b#{Ow^&7&m9FoUz(#1L~79J%^r!a+mI!cBWwF^>@_d4~|Xn0K0 z3CBKbbg>M^&*laG$`Dnjx5>c_U7M(KN6 z;r^fsuyLElKUa$B8)pGD#OZCVOp4?RO#7CR3DQ*LNOiewp+#JhNl_%9xz4dWgjqbv zqTi_cO6b%0uZYtgT7rMt59pX0=r>7ParrLV>Z>_5ec5l+=ggblSpKIwj}W3h`o5nI zv}RjHpDFz1QvU#mxQ$Xttl&>bACOihB8f=1qM`-AOou~)IQmEoB03N2+W?>3oo^4s zY&r~nOOW@y?w7ce)S3L(CDrM%Zho=Xqt#*w)P{>KKObuLl7#NS+kiw~}bk}I* z9;@qr3EZI1(9jf=(T#KMjbcsw%%b3wH35sjDMID$yXYq;mt;?$%p}SzC11P zsD|LlR(c0*Wk_uu>~QHw+&_P9dgBLjzGhxPnJ7xsatS{tJ~-5X5*G4y?~NjF_h<^H~`9Xk)LDZNl~tINB|N>$79&`D_0At;ayXCBnG%- zZms_S;YQe_wbQC?LWLf`QAwl8a*0^2&w8O5X?@346;CE}apXdf(MU?#Lt&BzAVO9HbG*A6?~MAHq?YGQVD_QyYO!x7mV(sesdrDcF<1 zd4^%F)TQTxYGm#!$_P$#k&SBL&#O}Pj+h2^5I$U&mH5&04Xc9&caEHo{4M~-Ksmp~ zysM^*Z%vZI*j&XnL@4hsYFt;rBa!;+>9ncpbZov+Yi=r30Q})_o#R~TPf%DRt(R2G z5_~eBrl#A^!l?a2EgY>Qa&p?0;BP#9YsK+@h-$UYw|hZoJBc5f`mYAywC(9?nVpQE zs9gO}ozf#NW0sXNvu;^$tT9Gitl;x zolv!>xM`2gU!>Z+<2=f24oa^^sa7k!6%ng2(x&9DJO#AGhXS}LZ6j_8)ou@@=F_8h zsgBNFBzu)(qN#_|1jgeFQiXqYoBj?RQVedNTJfZWDgpXyFMXb0Tu z-Egmls8ghBn}Qg5mmT@Q{sqqsbux4e_mJP8R2Th&)E=NMntUn~km=G~OR=goX${lm zN=k^rrKtQDphjrPKIIPwJc=W9SWw*hT9XZ=rAt{j+@!D0sQ&=Bw&w7-RMg{; zdVH5QjlP$>91))B&fTV4t~L0hG&rxzlA=()(owYlaICsUf3}wTt#%OIWHfjElRDgy z;sb>ayR51eN(8AC$P9|I&vBO;P~5fWDhM2N`|EEE;&s_kt$FhILYu?ME+Zbw7g2#t zwWzV*sKJuL>JiH?$9bTnIHe3_DpwgE_}8p|jN&{pH10a3qCXMKf}2>o{Wxoy?PkCQV#Y52ur;$Sv2<=iD$%bA~}5HxZ|g2?_-djG4rmU409L> zWAzdvA9N4hV68-4y^pCa40M70$CRs%XGMP$sodQ{xTrC$c5P4i+m5|(RTn$x-&o)D z(5dN54JF4E0M6yBBye@E)X`vjnnth0a!m9S`YwfcKJKWd_Q@mBpnq}dM|Esy{KgHQhxGHgFvRhC9 z_#EUB#{=h7Rj%q-AVSnE-1h2d!f%$tH1w3NNN^q&lo9~X$fN%t@La2|H z(i;GfePLvew(VLP;B_C#S1@^@Dh!8NV6=xGP8G0%cKhHF$j`L&%7gC-{9&l29hn+PtM2Ui{YX<9je3;^#hJp)gXzz}^5JARBJadtyWhZ!( zyzZ;0>5OGXSbAK9wJAj2K91tx#K2&aF9lw4fnLDdBla zd}l|(Z5n=f1C*H`G_@P4#I-!mgDL3g4F#fDLQ12&k(DFC#@=)K>kSIb56|80)hTZy zy3vHiHX(UZL#{0VeqwefY(Uc6KkoXK&__FLI((?`S(%)~-kmlAW*9xXJbDJ_zc+6Leg#{}t~ z`fU*79_eV&bL6y4Covh*PwmNw;#AA0W2@XA*`838pE&dP)_1w0rZ$DI!zG@4N6kqo z6nTs?m6%bgG^&bJ?`}enrHZPgEUpKoT%HcIXzPvScw?Ykf6z*a}mB zPWw!U5W-I!s12kZdC2EiI+&|Okok8pIaCL@*3@O9d2&iSRE;*WsLo6LPB=n9q^SkO zIN%<&_P;lzbD!<3^eo)g7wI9#@pkT3suu^w-%#jeshr26zY)<5=Gt*;X{j$V%2bk( z;VQuk#yH934P|K|()o^3a=I_6N#Ak9Cpf}pa#U6p!_gF2-uZ^*Ipr-#LyGjFV6VbX zIQG^09!^HtkgBO&l!$XogCYpoYqac_(Nc1(!sEm{Sxi>Q-m{&hKqru&el#MUG?{nN zVilQC%Z>`ykqVz4RJx>Fb1lF*RTMabwZM|rp0 zN*HZv2WnCV09HI78s-~mB(&~xjn`egLXl)t8I9!plPW6|*;<}lM0QSnXQl>ImNba@KT56y5P$tqC zil@-h;)k2>4ekE`U!a8LU#72pqw9vbj-IfiFZ?NJV|~QJa(1HCQX~hF95o?HDh)7G zw}lPcf%p4(BUwJo>Q5lLLQ2)!TmnXW2u%|unCfq26!!|ZrDd;Dln>=z-f(;XeYJJH zEm$wY$WE7RwWiFaO=+W0hWcu*9gZ|qP>rDEl&6o&?d0Rmv{R*8k%keWJ!+KS1U3qO zt5T@7mT9u-tO_M;AuUKsxTi~9A~xlpn!?sMTslfw zQhx~C(qbvL+jxCKm6GaKlYkVj@}C|xTUcwfIFT{vtMLHxfzSCV?R8g3X@d$JhNd`Q zQ%OkOwIGa>jO2I#>Z3{lbetxsRKRI65{ z=~GyV8>2b(E<->}7NWyjsQOt+^sE7#6oqo6gTeRH3T@`;JrR3}XpjW0AsM$zqN37f z?Lkk}a@w$b6ey8{rfbW7;e}XiZdRHov@(Ua5!Y4RNK;Bu(%C>G)(%PBPwaK6x0U|@ z9DKJ>vY5b=^jh+0w%|x{gE+`jX+d?ul@)Qy#s)yh{atqR&*C)k6|Q{zq;=M&Sqt<@ND z5VnTd3Vo(r5|Uc{jt!*y;|IY{`s$JmJe(@305A-MNjCG91jb!FF&+5K=Z%P2JGX9M zKBJB@PPJQK#D~cV#UCCtz>j3CDh)ZRdcP8!5bC7wOeTkYBOv%%PDej&SyJWhcaTmu z**Kv^jsBzm095|~Y(H#Kr=@jxwF>{Qq}54I9N&N=@8O;GwLkw{a64n}=n$#o|`)8PLAZBpjByQb6= zqb#QYD+0^l(pW)J&ImjwC&%bCn$sL2yBw%`M&L1(4nJ)cy$zB|ibw-t zBy*B{1LIAtE}_*Z+%TLFkO>DM>KBrZutHQvN>q|kl1DiAAHJrdQWME;r3pDuY-D-T z6aga=l3RIJLNE`EbHwE1z$MvrIlBROOevh846Ny<2r<>T^prB z2sl%Of#YvFTy#^#1Y_!yQqq--V2t?C0ZLF?-7Fly!b+8ozZ~jmRgtLVC3~tsBOv_b z=S!p&Niud=hu4BqfA{Wn3qmjk;Gzi&D#;+@&WU0rxJNSF@(=*`_djh70U&7zKB+{N zaG(7n#-@bC1VZxjyD1;~babi72#}f;&VBhH3}0o@1Gf_HZbSH5)G6b&G3luV@X zm0*B>Olf>Ri3l8)35X*AD?Z*2jZX}x4a}i4n?b@)KKc37@QF}|A4G4iPUP~SG3&wO zP*O@-j3*$FNjUHZm%}LOj!01@uyP0_d!ITkVNm5_#3xuDU+0SIx+ww0CKM%@1Polfx0hrbIudvjRMp_LES+F zk;(C&Vl=^}DUwkOql_QaX`wW82njr4TZTXP&VWZ;WQ3kh-zh&l`+I1N6l4=SAUr39 zW8ZFg8j}gecSwSuNCzLG`O{%Jc;*nL(3OGC^WbMtgs05j%N%(`dWVh%Ff;>WWR$}} z!NLyq)bd9o{{Ul9468^EI4GU=)BwN(%P(3#BuVF{PxD(4)h$Up0# z7^*CG`=BzikO|Mg@r@A3Ks3tNQ`}_XN;%!{rVUO+iAC;UU>*to08JP~1IZzrZo-I9 z`u^Hv(m8}}*d5O&_dI-PLWTK`OB6!=SR9NHuli~M2__6ARJ5rnNCaa%`Qt=Nav;b= zPzvOe#~Aj}P-6)Vpd1b{?sW2)8X&18 zq)GyYHjqa-{{X&>pg~!%ZQOtRk*O+TQPP&kAd~jSfh9qNg4=CbNC%%M8X@Hn4(1k` z5mCy#5->S9(iVi;;3Y#V+l2A$j~V;tO92q{fr{xV@=~Ade|-=Fn$qcEd|@Q` z$=T{x*|~okgz0k=nDY;WB&R=z){vhUugpa9C1o$W>y4YL~sb;llIU)V4-o{DwftxPpj^9rO+qxNAE(7Ty-h1m=3}E$Dd); zhN8woP!QvT2`-lu+FWe;ARlAM*T_CMzqPu$rB02*>D_>I0_M|ef867=^vd^N572cg zE@gU5G+nvLF7yNZE@N^pRQj7#dZz3eB~pP+Y537Z=?Q>jD|QxB+(1`tJQqWF+@DVK zldqQiMe!lFZ`toIomQtkBU@YO@5rxb!>p~S0{TqS4=srvh}8M=DKV9ECef8%VvAj7 zq^s~{s(5OeKwr?r%Scd4l3HY7;XV|38uRuwg*&=u#SF*)03Pl${l}@?_g%KRrkpjV zXL-VQxNe(nrCXPN!nSHm(u=~N`s%VnZYhZ?!l0qqB(23ZPUgTIcuqBE9kzM9Ee`|4 z&X5eX(f6^)^Ho(X)(IZHktav7@5l|%s&D@QhwG8zE}>=IiYt#TEwWU#MoM=nOTg!l zan9X&+Ep(2bB#tfTM37^ai7J|N~gxAbwE+p?TY=g1<90{Enlrvq9w`I1T7UMA;!Sk zll^4}ISJZ9`yFZfeG9kgdyNv)f%iB1PrAll9TSBKlU`kE={0#@S4@vXOH}#R#Fy5H z&P`TSP?)6d1w$k!cd-36>1bKo(4r}lT=$u4ngM~-m3h|J20-=ZQq+4zy6qm3G5B(A z>2;Uf{3fvMrK$9{9FkmQDM3HV##Q4O;Okv`d%Gt1j~b~FwwycVl=K}=v*0)wKP54= zUAyJCRRY#}{{W)f5({+;y_Z^mnFj@7#|wmH0qQEweon5T@LgUg!&-~kPDajn^7={7 zqOQLYw&C@(IFme}ne<3SxoP!hC0_Lz>9a0YBc_!ZnGLDfb6ZlBfUrswHtgdl&M~{4 zaBetlTUHxJH^*kFE^KOSa$UN0n*RVhoLE4>AejY6YB#*wK{VRM3WG?m$F-hexRv;c zakhfi(whQNAT4XyqLh=zIrFWyZK(Hv+OMMXCNZlWIV?4p9Za- zy?d)Zn^d28KJ`iKoKjZZIriw3F)3kBHWH;DsG9D1-GVoH@vcQ*vQn-G*$b)8%o}=gkQnr4U=TPSg z^H8zchGBI*(Ob0Z%4QYuO^t5WYbio$HI;=%sIpc;Y$M$V7|B*t1~H85!Em9(cy6a! zIK86|A9<&*zoNFI#Yl68{_vG`Pur?uixNzVyEP~-u^IOtazoNKp3>M`sz?b(IV6yN zGp|9wI7NOduI#k8NzX~{vl@(|bm{=@-9x%!#xzCbf-r-&z3Y{o*vseLen)2s2H`Pj!1)_I(B_>N0IwycVjenq7rYamD>S zxL^#!l9xAb9A|$RC+)9k@bASuCg6wHBGS3UI3Ee!L!JGnqVoJs+UbT1O-g*6BU?{a zg;e!BsGVw|T|&~g;?N+oD55PQG)z=vxZ9}*y6X8YhSYX~aC~7n*Sx33F1$f&!(PI{ z{{ZfWrc1Z;Y_qq7Sw5fIZnYP4)sO!GCv{tyH|$!3o}0$H>K9*9E)}?I)1(K`DGj#J zQDq2F+?C+%D)2MLHQ{*Y1HIx`-}{!np{277oky%pLiKz)y_JQyeJv~wz;*!t0F|js z=@t7bAdvGarPC>KUQNLsMAGtc>Y!h#mX%SZn-2 zZpyw8cA|NVuBqvdOlk3G4?P-MDXh)f%!e)Je-4)TNCiejv)q3q{{Z&2BaM46hW;J2 zt8UtrOP+ckC?2|Uerw6`kBe*5so_#%K^)JRpGm+>eP*?~F=X40TvsKX8hu(=TU11M z-!rGlP{vmJ+)~y6HHrev6qc ztAdmG8l+$GW!=$e45|g0Z5c>RDsrj|CH<#rlmZ%01tTDw`Pa&t_i7{nConc1%jz_q z4rIXkuD0nd&u>$#rY!q>i-NP?8K67=018@6gWNzWUgDOL4g%HB&pP$oFO4#l5k;W* zg!3L;{)@$NP6X%PRj>DH#;hNp>Q_+3izvX1g|*shGe}2eB&`S_V5BVapbr3@dizE) zlLJW_xvvYv>s6~zxK5wu>MeF#6?*I>u|ug(r_@SIO}7qFj)w}*J<)=lquifuaDFD> zBZ;&)x&uM{P9H}8vajHrQk|*N_JTxb@jDRqB;0tyX-XnF^&f9MTX+ z0K6P^J5rn-#Qwfczdv2^XIi-1wV;MinZ@DGkL?66tWmBiL%<%U<&FnGecyyB9x<4gLEkmm7 zs^CW_yP~CP#$tt5?YN2pYD|b`JV(C$;3;L8H19FnX4K|jx;|U4eb$<)vwsfch z%5?)>_{hh(nOmOFU8+P5%76Skw{S+T!-E{xsC8F^qMuWU;X?{xpnHuavXv!j3jD=h zk*>wf&)BH=-)J;PA~QX`*FN&ew{H~9Ce-b*9p!piZPz6J83pQYE4R9B{G*B z&M=iAfKQRg{WZ?A{{X6&w)I=$*K6oZIJtzl4!VRD$>JXZQGGXf40~z}#;yBhOwlF_ z&-P=^j;EKBhKs1~6puU;?XR-X_~(IDYe>AMnEX+b>-w*o)!`ScCTPDMmc*0@Y&|MU zRMRXVt=BL}2?ILx2KtAE<9LlMiI7AeMVgJRYSl#`(j0jax2lTT*S)!SG2Nt0S97?w z#2F|oNF}mCA*JDDalyv8Tr1-4AH-^!G~K44F$bUfNWoohEAZXjlS`cigP8q_nD)*F z&bB0OXPFrFai%Y1oKbC{!${(f}q`65i{z;Yz5;i5lv^YO)uGrcRKrrjAI; zf0ePYl#lYQU+J%cd_wz97j)*@&}U6`p65DxhHvRB?7TDWH*|q}!$Ry$} zqtqueR=C})#;8xHrZVXam6l3X`BYNaNy$8n0x_XL<7%1n(3=4#*G$478rGwX;U4KAG#C@k)6QhKojR*X!u>e3o24$3n?|;P~n{S z=Du_BAr7t{NG@=b2lV8nfSv~@K1aC5y-M@LPc@2CiB35KJ_n6R2)KeG5p&PJefZQs zWGnz=45%kig=l+&c_Z!#1!@5yKbc;@X-W-}LT{TgH{sLV?UXY=7L} z)GnJYX;c7KY=5b{{JE{E6>hCO+!zoo3N1dQW>rI@B7B>fFkT zfj~QOb+_T#MaAz1IW8Z@)ffdDZx|qx39200vVu)kjNLR89^qnAW%~V+l%**={GS^2 zM8A-q=XLY?bZ8t3kb8*wr(`HNk&rnY6>tl40A(r|E;YtZ{k+LZ)2k^;PNN0IUN z)YKCPh>88xhx{Z48MbSUOSGynWLhYJcMJQ-Ckc8uC z{;hn^;wyK5++M&N4j|$&KauRd<-n`5rMn0-f%Axk&ixnYU2^a0efiYt^C&sI=3A(qfa>Lsr&Z@4RO+|?08^{ipHRAwRE>I8C{muM&T2APVSwCc`v^fpEud`* z8-t4(bM)6f^M`$w;L;90U5TBy+n4ISHQ94d*@Ol&ARWw!$=-Vm1-%!m)p{M1Cfu+e zMYRH=(?UgDraKi*CsVCi|4AUn^ZRYwHot`sZL4+E_*5&inXQ$21L`)h3xwy66MLUH@+74I2!#MG?)OQBAMDhv&5!f{M^ zlp@Rvo-3w9Kscz(tRG3_c;g4;YolyKsOoP%yQZf|!90qawO^!E*!l>unWi-{Xlv`` zKDP@kUA#=Q3yr22ycBar9nwl(3bftAvh6{lcR5fr z$xBHbZS%^3I`Fr4TuQ6-R-)E5*aTuWrfOk^nw~vex^u=wksh+hqAc>wU*IlBiUg z8kIH1vgK6|VQWq?jlQ&?pTCWHqrolgDtLg7+J>m~Xo}l4F?;`06EQjEhR! zq{O+QG~(Ts>K%3FLIz6RSLG)ogRZrU8Fw`5)~NDM*ogfCs-^2|v@^qKGmfYC_e_-Q zs=Z9RVqBe4yc?^zL_*kRo@HQe8BXMY0Rtnz8o_(Qs8VC-aQbDYe)Jhhb4I&#_>RMQ zCaeCjSH4A7;j`T~t+?`=O;&3RxS5p)QaMj_^VM;CYIc4yw9tw22pZVo{UzpAdXPOj&0lt@^h{y5}DT?}WIcc0NcGHS>wab=qhflqq9GTCZ+)Z$~iB6Epzw&~$3LQ0Zy55}L0 zvi9}UOzB`B{gd0#YfFQHG5pzIQTne^w?3JOROL;1)V9;fVp`z_<2rpy?y|IPByciy zpN3ny(d{*i1F$kafog3kRVccnTr~}Zerl($UrpavqY>ahFk(ZJmf5Bm3y{!K6@;zF z7PXg_Rh1Q!pN|^#bnWgn__YWPBg)q89eq_^Fl%&=e*V3?E~K)o?yg_`ap}~E7DUSB zsnh3JmvGeyZ|IWJFtwLndT)u{z{xmu%*LIr5x0%MjCPl zF^z|EzyH^$WvZtRsKBCan@)4Lh_M~sf~5{pLe6;i8vB(hY^zM_^1Hql&fMy(t)Zs} zVYpIy{VCa0D3O?LRPUob!zIL_C<;8Uc^MfR$7^ubRyzFMfuEAqe{5Xj7=_ejQ0~aSFHaXECjFsx}-XVhV0e zI*D&Dbg2>@d9^7oBor2v>_Gmc{)e4usdZZ5Ls|s<)*lv?7YLGiaw+yza#Unf+lB-d zdpnk;oF}*AcOFJQHJO&d(rOu6Yu&u!U~^3o?FxjJS5aZaRa<$|hT^iXQVHcMIr;X_ zjcGU3^o9%(%&he+pW%nMAf~ii)0=d$P)MiE*rm4tWN%gv+vCoxea$wQ9%0v#&S~j7 zUB5(>mRVv;Y`ZlgLQ;?(*hm|{&5i~?T?QRZC89^K?x+lIs9K5ovL1D{x)@{G|+^3tQm z<@w0=Inp;%TtIuYo>PFVs^=Xz0y+SdO+uW8#6wMHJjnwK1c3HW^>0o;*I13U!FFm( zN6A)8v#0V}PB^7RTXEcq?7Wh-Jg}9vM<2^s83cLO$`IGVkl)QXt5!6$3Gcdf30(R# zR;sRvf)j

      ', ': ' | replace: '

      Qx7I!8@o+G~3Mu{~8Zm5d8;yoszVgM4^uM&)EahNmI9C4vlwM=1j%8;Vue8wA z0*`!a#6eaw!xol=^^B%LcDjwh1$lazE9XC$K?#+#?VAFH8>;$5ttZ+!3qtFaXPKY} z3!h)+Ayt^|_KCs1u}~#19{&J%kXi!&09OedD%8(RDRFu%%vDMT-o$QJkC+w)Rjb3+ z1h>Z-HysyFD1$>q$o~M$2x(5;<=HtaW+HjF)A@lLZ^WVsjx$*Jng^s$;TA%@UKoSZ z#f64Q%r^b2#mnZVDRqif`D*Xcq@X zLSquWl<|7ky~5Srue)8j$8$UB_bC*`^ zZod(waOXeXqH}f|X!h&o3P!O$Eq;>3MUf%4=w&r91Pe-rVL_nv;=W_58b)qlN_&YA z(6WGegII!5TWTOuBWSZ9_lUSEsG*|m=gh@?l^WqZcNilQw4_^k4;;YX1O;6bAxp7-@3GV=?4{>^j<4Z;@Qv(8d@5ByE2vb9FsHMnh2+<1EwdU^u<}n)0>GOOC zh%M>_Fc`*qhu!1=bDbX-QIuhEWcxym!RVM! z1Iq+{a0oYoTq^1gLGD&bfH9d#aH~NSCf<&w*33$UmxyqEWnT)L z`KW`l%reIigePUas)}w8E z-xuvF*5}Xc$0Y+?pGa61y?C_9@qIwB-Y}I0 zV9Wmiabkp~Y2f#kEY*~_gtR}dB5H`P5roXw_c3;rCjS7p5Fsk^99$`?wyKN|6JR)dsPn*QgF|dZ*$7TAqR_V$B=s-%E zYkPr41{{b1tV@>=BG*BwdXQ_CWIpq$&=Lj8o|i0ZSWP8+6t)V#mkqLzu5h2C&n|8-^?tor+ugOQEvu$d+T&AyT&R z^$YJ>^DWKJR9Ib{R*z_A2a&Oq&xXhkR^Ey{^@wEXB`a6{veSoz5Tlm&5~P)S)f+I>oE)&Lv9K zoGAB=)I_GesQu;xVYN@Uq^Ik~Azcr(CP%Zf$YW`wOAq#D+eqhr8!J@c|aF*MT z-YkdBHA>Abnwa@5H~B)tC8ha(BFKV)U<{tO0k^{;h!LC>*N7&((!e~-fl3QZ{{Sd8 zV``#Sl}oHX@h*!NvEdJyf>xDi=2fGBA&+=4Z@S5O#^y;`J0p(J%K1vXQAp`yJ)9JZ zzfv`v>6^Phawh@iCcD75i_l9+9|Mry;S}Yd4qhe@qZAZrFV%oh2}80O+@r+lfK?X& zkCEJ`D@&Aw+wU*XK83FC0W#il5w4b1&l;ciy23+=+QzG74B4+p&}f)axCK(T3y8~wa*m%dPCez(W?;U} zYCdI6za_ErF~P`Qq3{B~*e>O))oK6^J%KQAvEtSxduAOCX+?G!?mA zvk=`%T`US=vR&%{W(A<2a*nkRoE3db*nG^*^)kn=(LJmkVncB5kKmlPSDEqh%CgXH z?qydo@|zC2?pi2TjYP&?)eWY?@M$wqXP7pMc9P2493A~2Mi1Ki!(zjLAC};YQ=zZ1 z7PhWlJZ=gDHZMJDQ$zNC^7fgc^7G71a@h~ym}6Tg%k_sM@X>v9ai%C9fASQe+ko0W zVnYSt{t@ttZRWDSQNX6*w$=CkC8+~^2ZJ$n%4ExkAONff{6*LW;F(C$ZWVANa91Q# ziF&*KB15-^pP0bpa?;8xS2LyiKy!2y6E`iU(PvWgBV@-lP{DLspYj1H1DYut(vZ#; zVq*jS^qFt9)EmL$#8iVDZBD)8Ze!K?g;#ky72{JVqh$|{{UX+da6d5KQnlv!>ZL23 zqhmGGSB$=qk*uq7(+!jAsHfgKR8+xH4v&Bl|4OBxmUog=! zFHp&aZZlOk5L#O-jnkM5VENodB_2X@75@NUC3)poPgo$Q zOuGK@v!E{!wwuwC`1q9#D2Zy9Cbua&QjERRevsnCoMOiiNY@j6~zw$XWYG zx}5@8N_OXc$3=n-50A$&2+&<+x@*!`L8Ffq`^A02DOw-5F_J-}kn*y{E7xu->kZZl z!#WgRGY8<{hf-6)m)$R0xAUOud z`o-ciJ)nv#4a6{>!=x@PjU4_WMt&fvWh`mzij`|`iOohDMC+4b=hiLB1^YxIAYgrq zKJtTObSO?fW>TCQqp3=_*k7|Tp<69b1;W{FGJ{k+mLMRl=b_@I+M@urU*c~3W2iO_ z$SSpEFK`tNx_0Lm8-S{)$H5l*N$S}t(4ox)_=8-lVYykLxe-pQobDAuTeDW5?=z+j zBX3?t6YXf%h^6U9t;ZJ-~A zyu29$Q10L`<2-a~9{!S(`XZZUGh>tB&DGXyevh zF@!1c7g!2JDjiKJNlx$MbQp;{^%r~(x_+iO) zxO1Ep3@-s0YBPyVmso>Qy+;UdwiR0}cmtVd1DCnXF`0cdCy2qS`oR@N=>8!IXP!j3 zXm$E94ngXEW?LuE@d8b%Gzti#{uEPnp%`gnw>|fp(j^^tu@X5vly~{Q{+xV79 z0io^lsZ<7x-`-k4U6m{#s#y#K8e#pvn6YCRGXYjEu;pP@^hx=RwRSMFg~lC~_Ju76 zs-mMk@_#X`4k~RcE%@~Hnm`T{)*&v|`i0D86`xp&aD09s)eHc#{_&>fN!3z*Vm7}2 z0K_hsWD_i+0N6Fxtj%;+%QS4;qVag+sbz^SiaM^LcqQ^*-Ypg$FuyS_woWOSy8ELt zLb=iqG})wpxt46spm3@vVg4gZwr8vZ$a$k|*O$}N zxUw~143Efs#q)In%&E47jhqs;15c-j2Ox^}8y{GA&RS@p)-iQ(;|~FY(K5I#Ac_64 zEuz`%u4*g#=si!^VMvP$fMPMNW@@3J&WZ=p5RJ9B9=FbToX0R7ygzs+L8k{T_}8>T zM7YkEV}9hYl%=L*oN zspW#ohf6!Ms2eAyPB^#kqJYKz}HH@IGJQtrVqb>)K z^$TOixMTbEoY0XeHJpxE2N7WuTyN{fRd%!m$HiVTb?HXR(#2g+#>0`6#5bn^@i-Wq{x{Qm%W zX;aj{w5X08jgNf8sZcma_kiTvjXy||M_HkL=Tx2*eW29uAJYVFOs0$Ufd>%;4_TI9 zR1n}d2FJ`AH-azPqjQ)64!1M~g33E=mN)Vrlr{`(uP+e~wtdJRvB)Q`AcHf2)v-Q9 zui*yTu0mLN^Dutl`IeeoirMvsAP~-mG>Kj+6fAka;!p%9gkf;Z_%zBmJw_s0*BHcB z97=or;2i5(jzNb@d-_Kg8}N{01AAxY8UvcDGc@{7$sU6tZG)Y_(B>-(^DzM^tiQyu zJwTyaZ}9?t(LXRH>a;7EwCz=oUXV>J_xvCtAg`>iiN`kAf)*IP;v!n-Fn8GrB4xD1DoITEQF}~LYHqG5{s3u?-5^` z5DS#o^2VSRv7h?|V#Q}rxJ*(t^x_t@{U72Y(v3O9GEF}TLd9;LU|qCPuE~pR+@aVh zd6)X`bLa7KMyi6|Mz6ee;y3&iTy;knJ>iOh8F;L-oxn?0NwH8*bpnPb0D5mFjVA zD?TFYF$SxxP9IrhX15DFxaMDS-9rYI^e`^kUtf#5t?R^dVfBKeSubD&b+RN@u3*+$n_EOuQ`cIGJ508tU!c!mLK zkVg22g&99G^Oylag?nCN-2&}&M{}n~B$Wv6^dD$C5C`i5z^`b4(`2-tMcme+AI!#4 z)C>tEt+YsI9S9Q5XtARvP=2})DER{Q*MJw@8O*@8E=2>kUjYZ}(0|gUmgc=ai z9pYZwBC{1L&8d;5II9l}nC-xAmKuiM<)$`%^q?~m=~w;LABn&`I$D?)%DEE zX~Kp4F|`+SL;EoaM_Lm7lDSg2z^~pbmiiedQN4yRRi*TPnfpowEphyzC1mY^)}R<= z!-MSsDjLmxVwSWP(5UTLy#zpnFBxJcT?4=7I)>YO9K?ykC&{sPM5XkF-p!1;7Pj{{X6iXoam=Bdzl<@WFg_i!E#Sm^o4k zZlVp0NX8nK9U%kD-W3WjMiI$X^wekrAn3$SmFW~9-s-9*xii;rY(nwmg%TD@hmaxT z7c#h1DZz-q2;S^!x_sr(0jEY)8$B@zLNLd#qfnM8%MC6?X&#SMbC>OL1y#QP*@7yGi zSA|Xo<^$i7g(|HMZL$(8&;{lAnK%M;bZ?gx6Hko=;Cw(Pic?)4JtY9RCB~Y(?&@lp z(&Ds+Yu~7CMN&)|ywF8*DXMQl^HH#X%ayOKarBn;-KHh{(ytMYw^GE%9BtxKMIvJs z#REdAm>W!uU$?BQsPe@C2Zk+f%w1dJ84Fr%GcvjnP<%E>^t8s4B6@@%e~? zHCe{xWPy>qwvj>r<(9kg9DfL+vDBzmYb^@+g-XGAJP4bCk&}x#fRO>ENWkDhT)t`r z?PDo2TeS+Q$*jxRGQ1pTH!M(CGznNB+*0MS;Sgu}?d{x8bqcO2_n8V&a@xnzUxC0d z4*X2AtBtGWf`u;72fQ*Myw==PFEX}+OV&MK?n}N8fpql-)~=u-x`AMqiec*tLTz3$ z@d^4$QDTAf^qa6TV{8o#rP8lFCBS32sPijHdE`g3vG|r`4Us%8mkF&vvaj9(sRb(6 zxSx18ZYQGf{K_n_vIVp1Zy#99Jl_l}S(3QXoA(9(_%Xgg|H=TKD(qnM}S8VHLhF2uVCsJLOEf&#BZ zmko!Ja7qSv)+Pxa-@;-ydBX-nUkC3JS!)d^_JEa3SOl?^CoWF&F1JI1^!FoO7M7wb z6c@|y02aD3M+C917vfa~vY^ZF9jLqlec~H^fcr}M5>ySUJ#JCeOkjQ>X+`vc!d1sl zn4PP|i}MDfMwHwLOurALZ+{{v6s2m3hjZBc%QZM_pWk$Fi&{=L%=s^ z9?9BDNR0gN&=%7Tq5#6}E56B+aeH7>Ywe%T{U1U~cQ` z?h0crteIhH=t9?mzpf>;4qU&+3Z;jL5SAIn9J_xi0Gn^JT9-Pg$zO4#n2xmw8?)t% z0##O0D3UBGgMn+jOS8LnBP+JFv}4v4vK9wpM;}>8S_yUAyMU^Y3NdfY9crpyD*dhn z7aY77=MjQH4Y>A~s8!b^JWCJ@PH%_Ixrdm}e<$Ws<2Yd`HJM3GvW5@5pzLl6t_^zm zl))4S4{7PEmIy*<?i<3iw}Z}WKGAM{y0+_?RYGp`9kZU)1C|odQWRrX0>nsl=o*!S zE|eYeKbR*>3TR8*QfQG{ukR5C$w06MPg{W7;gHAd&PC(IN|K3Vf>{TXi|Nc|Y-utn z*Ku1U!(oFI0IBeGz9w*lWgk(Q&?MJWm@?wZ94Uz75z8A%aEhdu9@B(f@&`!fxK zSd~?C==p$T2|y`^;6te?PpnzNLZooOR8pCHK|IE4ipz9DVs05+RaL(?HdPBtt4%{T zP%Ahyx|FpQtuE_PLbO@}*ZUuMH^Px$B5x#R4x$=>u@`a4mIjy8x%xBgc)|S=@5nD*av79GA_A?lqx9@i!p$L%Rvi^UWQ=b~O zU4IhV4&p#nbP-g-xd~udyv}wYKS-8V{$owN#l`_62mQtghdPE*Z*y7;4s9*u=Yj1_xCeXsh^$by|$6aT?09H^K1`3MsaD$I@L(xafd@ zYM=ow&;Y2E!|!Im6`B4et^WW=q{=q(jhRh)Lr{uyLlYVgFfEEeW`euf=@Wu0$`5@~ zSdJ&UTXKb2lb>i*q)Mb$(lq1TUzlGA^T_-7U=6RJ%NC~b=`M!{#8s}IAfzmsdJ!P_ z>U0&Bl4EX|m~458pg1h=0ILPOctO{%3;-|CaKTJ&_+#Q+X`UA-ecY;;9;H-88zxVz zGNoBsg(!}h5&kAX_`(BWwRmwHsCsapnDAHQ7x|c=zMAdvEqS@!M1llMGD@z_oM6mN zEfmiO7T%#ZJr*8p22ICbpU&T$#Itcvt;=Vc(^}yl?ruz zGQjn0Q1*Tyw#2a^Z&&>QSwN=0VihE!6!A5;$M)L9tz2DwOVvwg5Hdo&pd#&Ithzkl zwQ0(&YY^645}_mfyAI&n6~13#S+d+AXTf=#9u4hFf4;I7#@(fIC_v&B)QDE ziB)K2Y!MY3O`j6asb*auzE!_ifwa&F`$n9PZ{acqG?dpo${1)3-UiCz_9f8(@rqPf zmy_+8h08s^65!cQV8jbx+28Y+C{bvTz2oxyM9D>XhpR!-LZZ;;N9J&|j0?lv99Eto z#QU=$r<&yhf^WhMF?Tv=E#G1mscba7bU+WWHAQNPe@E#BBU}i$?S7;SAPqJg!jMZC z4{%wY_)^`%s&Xv4eA|8HhWmL6*~ghi{Xl)7+bVN)2>^xFqjDqGqoNxKQQ3VapwtQr zmhC`+mSaOw^7f64uLK5^1kGuPMlaq=*af8@v{ILQzYvJv8O&f7Q_LnJS>hmEy*PTCavHVN+Eu=2Fl4gi@&+GaR{Trs4_|dJs#O-hO3@whjLPcNpXw^Y}ujH~=^6 z4YMN{v8F0rWbPV;flIa5#4-(N^yEC$z-3@%rM$k;LF_Qvsb)|N(x}>hc$8+OUGGkO zaV;f)Hw-h!go-)^QLHN=>=AIZn@3?rV^oC%Y^1)upf*t7XP6<{Ixq}M0BBVm)#hnS z(w(|TwE98Mk!#3VnaOKqzY}8NaGmeOBANi$;c#N$w+JLqyRUg(sG(W*1;?reJ&E+F zG1kyM!RJ}?13fe^b)8WH!mQGp(mA{7ih@N|VwmbMQ$XM?<(1%Gk7%_-r};$2bSZTcs+CoFU{-4!K44hg zNY&Ro#HSLBKwd_KQyUWH2Ouye=1~aI#BSNzDW!d0rG+`vbR#`X6M$P54`$ii$Q^J} zvmU5vwPK3twPI@z+BCLN=5NpxqxOL$;~A)sWo24k{h6K9!Mfq}jxgA20zn({)k)y; z!j~e7{*8Leylz&<;xN!VO)k$7kS%f#5P?9q=Nk^Sp);UwaqYrWDOyA34)39>;|QQS zIJaj29DHS$t=M$h&A0Z6#Fxs(bIamW>~Jz{;95qAcom9r0-y3HOum8Vs094YE92RV z&P9fgHimw&PN1lxG+9?s-k`0mUh$R2ATP|TT8jB2rMxwicBUQo8m*2AsldB}b8PM` zYZ8QQKG303vdcEu{UQR8d6j@bF8hc;P^0_JSBUV`4M2T$h>|hLvcaP)-_i>M3K|m` zv}J(|gm%Dp4dYR$BbxCm2p0wmtrH=wO52!H(q^j&t9Xj6D!nHJ3z(@ccrzGTE6GxU zv(a;resQco!J`n>&+p6>Y{;!(>}&I<(p;7GSI!_`f4}n`&yqdH%1w4cU_%;J{KS9D zm2IxTTk$e2TgwZJ6L?9@! z93A|KN*H*GRS!5R89@80KM^=xZU7Ab0N0r61=|-Ke3<4aYm19kUnJO_ItWS)J+SAW)Tw-r~m7GlpS_J9SutF`os z)XFq??p(DFRQ^)+U$B=Ys>;&?<=~f2z9gfUU+bu6r&(4^Q0gVBrE>?{#Z;xcMHh7W zh+$k4GhyjWxumM{jOsF@0lL4RXfh&~Zd1iEk=iTdbBN(pG8_0rI^=R`f*TfqF<y+$%QaX1>J)$wF;7_MFj}ZKyx#*` z-P}`FMbD!3xP$=Gu3csCKQKg`yJ>lN^q0Y@7tt-)P2qmA@mH~P9az~($MGIj2#yeR;s_}B@tXs-c$?GpEK{!=w-r)3YQ1>08 z{K}mTR~C9nz6=&$#Hj(D>JFfALI5uh6)-{u(v|1YmwZ;sCn@F(s9SkGpfx2Gq5Mig zWLtH7Y>OBw)2PIy%FEZ|yv`wq3`a)P6)ze=_4kH!FF9 zU(Ub8Eo9>mFN4smDdfSo*v!BIuUFb2a_ski2bDsD~k+l6lmr3lr6W5ej-RBn1A9?+pZF3 ziarJo(G?ein^MziFUm!^uU9y~a6lZc5M^OsIHe7CYjTOa{6Sv8y~oGpEM5vP;GdPD&{1QNg~UOgW3p3CUk2LxtQ1_4I<^&J+Gc?8Nzw9ig%)x_o=w zrByz0{g^za`#$o9fp05u0Zho=1_oRVCrs6DXY~jvtd1jq7(l(^q0GgNMkzdR5Y%H% zC8Jm31q4%P1-q{0avcm?X~$cbPMEFSe`VaEXe!l;(?t@rf+?|eov)81weVzP6>0oS zLToZ9f9%{zceI?yO_}u|BJD~q+3MyHBrFV99th0g zVFrQ6iII^51#-xHT)|wqwNmcB-jbB)NTJ`R^8|n$d371cQ0Pi&Sfp|sfpAvws3Z^t z4ZE<$JVk)4ASsJ%&!t2V1XyszD@D@bQ1i0D+BvvuLJ9ytBiwHW4{;}Aj!s|_AYoE* zD1vhNsX{1LQUNWrJFb?g-NMSf;jjp*E{SN!9UMeJ-u%s6L(KJVQY=(a0OLTyYJS(0 z47>sCxPwsz*eO2nlMO6KSKI@4U^(#~=owp`m(y|9BtX+8_8P^yB{RFh|Y8u+zJ<639`LbA6L#rz1|^&a6#(o z8Z+hggDXJ~gGCvHLQtu}p=XUt_2a!!lZ2V5(tou=Ur8c#x)|boB(ma2O6PgbJSEXj2MOc(gsV6zk^L$9ODfQTbty>)6#e6vj3~F#H=#XQ z6)c7z!!vE+@rESef#JmUBOzj=jLv@q!wS|moyto-u`vT0KQsliu5A3p3fWdx{$ed} z>f>nFW?6nEPuQjwU&Z|4Z?H100X{*L9UFxb#f^(aN#;i*M>B z+hyQ?i~-6Axf_yGCFzSyL6jAy?%_u7h^$=8uQ0(z{E$40w#X9l`GW=qzp9yZAM3;x zI|bPsGOOAQM34ZaB0EFE_Y-cS`(YSfjb;g$1_2VtGKEG4%H!5NKGi}5TJIu|+(W1M z#zOivL`1MPPS-H&^?qdvUHwuoNo?}7)6!tVONQ=-`O7m{eK1i^1=Lpb`w)v_)1FLJ zwdlmoZY4NB6I}lQccgfzLD=EcwHDAq%KOEQq-a$mR=R*D)xAsD zJxDjpevL}5OVEN7aSZf#43~MA;kiPZ;hs%O5;?$ys|&Fu)UO2>%XKeqvW8gGv_#hs zLLsxsOU8D%s*JH9)f0>NsM%v6&hD7mwy-o^*D)`Y2zM31o_Z_<(vVrp3A?iq5}-9&(QHP$=Xr<_JzJ;K@;9pFtvZ)BS7v31I)^y z3sA3XIRYFjUFRV*EJv8A)~>IH3y=-@g0Ouz7P!=EoE)`vEo!I>R~#a=HEi7*DvUr- z+F(&3r(#f`dn@EkdUtIP7M}iE#167U(w8yb!>Yy9-}PIN)`tl5GA_L3nHn!b z$eWdSIm~c{uXZ3sBWb7FInoQZ8OYV*V59??xYD>`VN!$oFaXir#X+zr7QP{bZQ$>&LIFMC>E|zz~4=77z0bhy|Ae21t5IGmpOy^MYf9(EyZoJ`iip^7gWsB z@f@f943$6d*;Tfwj875CNwj@0elHyg$sfW*!&j3#@Qi zznBI`dB*-Oa)4H^Il`76R@xhzIc>e&etmvNa%s+s?m<*_34DK6Zypa;P z%VKO6GYaRmG4OgalvC)+fxm>_D_4 z$Q?N&eZ(ZRqdv*KcyhAR{ZwTi)#(5gmEJxP4u&=`0ZLqFsI_p_LtL1!0`L2JLbq18 z6@KT(yJWaBdeNUBy`bo)0Uzq*&Mi%!9vqiypx}2%oqS=j8YgN^>XT) z*3k$M${WOLr zpU2iS0g%Dmu#B!l->mP_FbLqTK}G!dnM(%2h1J)Yd(0)!09_tIj$xb-viC(P3l)Hhmd#?S4}x7IO$;Q+Bx!U+VI8T#<$a~? zy_Np=_L&y1V(+LxZ9*%Jq)r)3j0?q(-!$iA?G$a}fj(vKJhwS#_JfY+3MtzbivSe5 znQ^IS3h@NV8_b*sk4T|wG8vv`MY5_uRxEhE${WilYsYfSN+|u=rWZv)K%wmC6$01> z`nD?b3n6T%VOHKH;(;E$pHnOFT@0;yG^%k$6<8;08pvIDk!gR z-@LF^ZAp2>4{+`SaciPn3N6dHaGn34q`0PhkzID-LsgD8}NLoQ)i!|r|}RN~J60Epnx9;-h|M5fx& zuZVxj{7aw5_?%D1ej?w2_<>RS5j!zwh~41_L`t;233NWi5hmO9j&pL)ceEm^o?;FH z_+}Je=`C#rA@`(|MK<ya+mN$$WD%c163g{{Uzqp`a~=asH2ZBrF4>2|$RnR7G>g zWy5M&UDV0}pEUK24y0e@Lz#&=wB`F9Q#s1Oa z#z3)gnu`($3;i%M0+`n2;aeHo>`IFz_J`^~t;;Hb3+5@nOppCaW*m<(&NfBYk`&ch zDt(9AJIa+{)^9nEAZu2$d#}HwQb0C2X@$+Ud`380OJcTN(Tmajs(=&X-HSzc9&lD` zx1YSRtcGgbOO6g0TYSd^P=xFIa^O%bTDer0(yK~I&0#a8WIcp{>v zY17W*R#Y%9xvsf_cw0e|xZZUPP*eauhTG)VQ!o;$1iE~|sk(sR{Kj182T=`&p%9`+ z-47IkC}{I?vYrEfh-6b72A`OU(qXgKT?ncKPVd$_;sr{f58&8>QaZmiXXJw6x_6;ki2&#XpNM6!;ryUrj(L^Ce}>)NIs zTSbE$_XgC$@d{&xp=(>ddW$I(I4_!|ON#S`ldJ0ENSm7aR(0zFL~F9U)&A3$r6M}h z#I<8OpuXv7CD^dw7O2E2aG*_(UzBY-08=>bEYh4Gy=CfU;L5j`4;N9KM7ZzQpNfZ& zH(}rv4JdMpZ;qmXe6di)Pe*VK-DT8nR@v1al@|mYthYRSK^Bb6Jld3~8+h{^=~aoA zO#x-v;8YYmM!Oga(a#YB2;tAfOa#HLF5=8a>#26W@~bjc$_veUOd=rLx0r6pab_T? zztGamCb68sTEos^N)!6xGo?M>v;oVQG+W^kZQk&2h%NeK`A4j9Tki&U`X88@`mtiP zGFTIn{WUgKnz3)N40YBU=*lA0$N)Z06Wtj6YaHq*qG{Im^lvD?aKocDKq`-^ylh zYYe3eznWnThlK%od#32>_LXk_SqZCc4!>!6)7l}f5b2im70J+0C#iwSQI|r$DifrZ;$Dh1D z9wE(8KTH=bN6I!wrjP(gfPeuSYoG6#j?`+<7!P~;Krj%5ZO!_w0hQ@nTtCKUO^t4W zOx$DMKo(oaTS)vB*NXLrZa!IMk*2#0)p~tk(n-Kw<1wTLz%&LM^~@?l7e(OTWyB*4 z!Ui(q%P2uW0u)hySyc2C*jBx*`pi_?9>#|Asb`xVRoZI2!ph!2an5Fw$_HWJm=*{F zDEs4dK!qTC4M#qBC0=Gqx`A8XaZ={CdFEJYIf+Jmt`XU7<>G2>3xM3Q(SuCED=bkn z(D}rwA##pz*k#jSOwK!G#w>X9M20TX{9MPz9s}v~1VbUR-aCfFVx~OSqpcTQOCL$a zi=aLF$7_X?V*0+HNV1eLzjTA0imxvIk#;SiQR=`TDZx$d6N;Sy;naGmmX)jaVc?7j z+uBUn3g% z*rSZ-xA=)%_WQ8>{~2YEPViz%%xM>?}8a8`rED;fIrUPiS?6C>r_hzU)(g zZ~#w8N!_QfgNb&)j+vZU#m&&f(^9=NK)8wkt{qfUR?5P=iuXfmidsf80LBW4a_&@W z&ubdOg>Z!KI+cUm@HG*#033&M_qJtf8}O=!Q~JYi8s(q$C5y0#t{Z?{pa|c8q;y0@ z3>%gj9JXp$5--C#J=6J(sza*72;uv`iGE)pLeJ7<623p?7m78hFLm@NVgx%n1|>FN z-4*$ms;}$J5`Ln~{z0ghE_;E|_8fGYF@*a?I5pqkhUFf^Gr{zTw)>?-6EDp{*OQec z1-E*FvM$|*E#Dp?LVYz-lSTYgBdHD*@|8>FQh8ueN#QvIzth@pai2J&ja|F6<;!Ts6|T|^@aeaFo;Tk^(aGF zM}UGLTQRGJplh-cwGmTkh#^5^m&8e=UCOwCb#Y*D2p)eBrW?DxrHZRpl{1o}n!*h& zVTU9YTQc#3@i5raI6n{ovH)hY6P>utM$5_RDQz^Jpqydva1gJuT#G>KpIPMiKqcH6 zvPROc+`{SJV5+nZprB;yH4Cg;;h$((NKuMkh?J%k-R3=}K4QUGrRo7~4v9dtUpY%S zeb+Ku=2BDC97?Uj4JojXbd|*fQ9_rJ@0$6Pt3Xg%loz3`!b4g>1_Ju}M;FB}AXhDF zRYHr+*>>|}OG!*<)0ZE4uP73+SbvCoKr-;k{sZF>+F(iU^Wq{1918<~n2DCIVxF0v zdo~`wG0m|F^~H546h;MySNjseTM{kw<$IWmeUo<|EO;s&I(86NBn!&pwcY#>xj5rh zoYUe^Tj0G^=+2{qni|!6&a)D~+8T3Q#*1Sw3$DA|7TRd)*Y*sQSsl>1l;9E~lrJEq$2Z0*%a;^QP3$@}Fysr>y6=7TZ6%j^k zs~9=q8q^nA7VqQRsIn#$@>JDIM`G1KWSL4%mYP?O0m`Wo6#OQBnc9xOM zc-OR}T0DN764fna)YG@pVXvh><&o$Do2XzX#&S{ZD{UtEk(yY;MyLE}={_lgKLlh^ z$g⁢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 diff --git a/assets/images/11.jpg b/assets/images/11.jpg deleted file mode 100644 index ca980bb975f8d71f30dddd98498ebd1e541af423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90189 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 c*n9aCMhxw;YCkrNe;HfQq+V~vBp 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 diff --git a/assets/images/14.jpg b/assets/images/14.jpg deleted file mode 100644 index 9562bb8515b68bec06cf231d1794e2bdcbdbe442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57704 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�b 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�kgf8Ke&P8tA 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 diff --git a/assets/images/15.jpg b/assets/images/15.jpg deleted file mode 100644 index dd781e4fd8298ddbfa4069a6d51bb85dd0328f98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70673 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 N@c#geb-e>)SWV=(Iot;|-s_$O)a)Q<*d0e) z3>xw&?SmqKFh^SL!eikz%}#z-Oyb4hESzdW>$6AL*1xqc#F*oRJ=9OLu26j6TEX$x z?G59980kOR*UbXkoCXM(V~)I3PbNF)WPMnZ)GT?$cgI|pj%KmE|#N?X(l0RsDSHK$Y zg(kIhrKhL)m4L=a z3x%)kWhuBj-@ATY51)eHBq6-HLbpS-fN8d#bKSzLoyEW(oqmOUV`hg?hSN*Y5v>v> zK5$Y&C$Ps%R|DbSg|~Xeo9YrL+5Dm#r%y`rF?c5k%|=d6F}qD4MVDqC+Em=)pr<=U z-^}|T!M+x|{=u_$bqr8@n)HcuO9+#6*8_R&oL7|iPTRx@Z5HWdXq0Uj>BV;Q_-9z2 zG&$EvwFG_UJv-JbT&nW1j!$~( zf8idULK;_8Dmqm*)2)$-l5Bxqe4|&H+A)gd+};ixuuZu;oXg83ZVpE^Cz|F^R1#|I z3uTm$Hwv=Ok>W&91#w&9=BmC<=W4#Tg{;ntM{BjZ4fjFnEA77pYx4=M;S+6Kjl(tY z;nY!MibXv40=<92`j&2yxd7t5OfD%VwE;f!KVOf=@gv%Q|BME^D6+}l<*IwSQ+%EWcpO|Geu2zWCRh~ zjJKs)%_n-BmC5GFerj-5r}LVS15@w%4>G~v3H%2C&-zco88Mjn&rsME;T zRork7ONO9tr~LGr^ertqi-S!esrYJcThgPccJgFlNb5nzrAhO8Q%-w|tLjCSx{w?i zk7&hD#XE|-neyMUNTKzl+DBfMcPmQ!cD8z8({g00QSN-*r{CO<2kFwT<(BWncb5_{ zJpSpJui?P_tJ)JyOQjQ7#{^~AnN!Ogx2ohEeJjQEcwS8o;?WctEOoXEydDzm2nYW9 z2EKu@h8qhg#8qjKA2fva9eCoo%Uwp+JGfdf z%*36<;Qj+V3h?Vyrsc}&-6kLLk_>`1{qYUSfgCzmaxas=J;1vwy|Yl$4WN>Y8WBUk$G;bd511 zff6PBeO z^(Sl1jOQF=btG5w^*$iX@K(admel0p<9!vh>0|XOnQj*n8)d0kQf|> z5fXN>?ma78M$|2yU9y16dU8e&s3N>iT)4Pv2;zBuSk6#=?hj%|*0Qv%N!7Wjk+cHE!L3U@6tWD62)Q*{1xXwe7mTY_1jp-V;QF0ZwkUpQ4drqGuQlV@y#sU$N0qcYQHT%w4kHTZ%rl79U zy1DtbD-T}{Cmv^O=+B@2Cj32`=6hXdPFdxi))O4I(2=@y&PQKPe+u~9O!#@K-Dvmg zHQm%#ZVN`2D~}`tksA@iFF4)Bez;m)8;#kwD9gvqj((L!??<<|432{>&*NSuYr)tI zb|Q7*K1ozw^5wd1D_^5ex$WirM~lMIjVVW&LHn-uX>V^degIzDHNC^wNdu+SZL`bU zmMnceLF{Yaw0X512TTxZchRHDJhK5g+O5V3&tIoX{RG!O4{5i$vfo2=me*l+tfmnm zQJkCxKauTUGWfsta@93E>1Bh&kxWB=?kOWNu*a(|;a`#CI5Rw@QF75!N$EJsKZ0#D z^jtR*_yUT?Fg zl8X1aw2QW>uIsVeDZ*EGX-9uU&-Hyq9VM-;w3x#AEFS}_p6ut;*RWb^dLN4P)Q;-e zCAy0nRk&iqqA?uv>*-p48U3I9S97Vnnxv)+cVNtLJn0nk@{Wu3Kb3xocyqv>7VzDg z$EWELLR=E^U^}yVvo=Z1eZEh^Ii?~~l}Wk^-t^@cdEd*(`Ao-%@Dvh^BC5WMEm>Q; zKOX1s=ZZBQR%j#8uAb&*+RTu)#T^0$=oEh{^vkb=z9nl*T`JNyjbLYMsby9LyuuC> zwgxz_*W|YX!iEVHk7bYD<<$+Q}`g=6tmH z#~IGtC_*}0d!GS#bHmqK5``$nH33ExjA#67tFn_(gW&G9HME=Lx4yVo3yr`=9E@P~ z105^rZC?J-Ug9sX$eR?&Ba|O1sL9Wu;=H_R=S}!PmeUQBT}LeLhp00#Y=7hR^m#5* zgu&CyDN>&`Cl;l3Yf0|4-1$t$A6pZN!c?4XH7oDBKPh$Sb)8#Kd#l-+dD&HW6$1*R z3ZM)C0O?!}&W$Q$mCb#&G-$EAXIjjk!%#RZ%lcOJayTej2_%)3w6Z?7hIEyaRz3^3 z(;oz~aa@hgn9Mj%K9%>>-V2Ic<#?`g=fJ2`fSi3R!=6isi@I$0>1OzOZqe{OnlV4a zShHxGPa?kOy6`bnAyc2FaF@Ogo;Asglk~1fgT>QbPevHLEc&D5kz+JpaI*alE2`7H zN8&v(!HViazujVSUavogB#$gtk4#rNK9i7sUY^y*Ix~`Lq!hhT*&39zadz}N?IYt? zh^!bH5bf`@*V5V_$GtTg8Kl43#~YE(EA!u2NNu7!htuA;8!r!DYPTE8ksWhKhp>a~DwCBe{?ZoGGt%KX;U@^Hl$2%G zP(N<<9}DNvn)#2!zXIM^+*yZTqoI$!N0r$u!Tb#w~$!kmI+Xy>+@#3D!7bp8a&vHElBHcbzL%64vj}@HKQ*nJ2Ue~$Da;-d85HH z%VzV!LHX0>75Ry&$33OwsU&QqG2o0>^|G4YgQ(kn@uP4@Jc{s78hi`*dE+Z*-D48S zM-m_k+4_q5{HKX9v?UlxDJdnSUcYhk8IDnisT-!#Pwg!}^ZABtLyT>#$F{nY=knVg zxUbnC5&pz;#lB55Qy`3xlCDAgMSNxAzlHuk@acPNttr|y7!t&Vl>Sxvg$(ZnTFRY8 zf903D{{R!=s%4mnUDS(9y44>l!EYpy1r3Z>qiI^6sbc^Z_eDtOgUxU=EY{Mh5+iQAv+Ls(S0gvJh zLF4a_R(H0KYob`2baT(j6n;X!0fz9ZVAp-&Z7Snb)gapmbXNs{_O0=G%}RJ#%5Etr zyUVLborK76?-dS5H+fz#zq+61eyw~U*EN~+c%!+u<7gp>>P>o_*Zw4u@T$gEAl;X> zYIq34{e>AezFCQJf-%y%xO_u(adxnOXELTvT#hUF#~meC5jiC#%_l1_Jx}XA8}@V} zn@-VD*ULl8wM#u#=6LpRD~@r%s)IzkW!bb3a%-^Hb$w3W?V`4TFvlkyE112x)!xk* zZVpJuQPR8_(}SF()SidEPI9yoaaxol(r*wH z>23oq39eTZlr2H;*P+^*eD|onM7H+!ix%}8v0asxqN^IbcwN0kdHgolk;cF<+G}e} zu#9dkDLLvZuAHjv$r!7Yl`Hjn9{q2tGr*0zsP&?_NF;$GRSnQlQq->f;=P=I=i5I= zhlW^x%ftS3jp3&4aKrJgv?{{WY#{OYs# ze&`-9+ZEpl`KC)YMk`q2F&Eu^$2{;D4oxE0{k+Zrv@5Uq`)X*>ZpZw-HFkzVMkxU~ zu8(h5y8Dh7g2LZO%l`lZXCS&Q_J8B?s&DLj@A>;R*n(<(!n1gax9RsIXy7o``+xWo zIA83YL?8J3H8=KM`Tqcyqg|koQ@09VS*zMVax_>BKY9NE;7sDim4E*LKTS*hn|=QP zKPJ0S!h^RozOz%Z`-}R9AETH41kONdx8L*fX@^eKJ6#&=PAWhKDt@t3vipbi8ZWHB z@FsDCPrt|fe3}NGsDIDRc6&jiXT2X;pJ@HXEDbL5{{X<5$*qm}AM5FU#i(cfeRZ1; zttdlL^@(eMCh<$!OS1cl z_7wjBnqPUCA-MkiI6*)6>qm7cYF^S^m)tcK+q|dz`(q2LAY5AE3+E4FRZlSu~#(4{U)HT!`*PHm>_B&k) zV$K(SMo+NKYYEB8Bbu!`aD=6X-rnWK4r^(C#>Pj~e?C5DWlDvfH@`C__v)cEV-RMW%p2IAMrk|8a; zQwL-qOSoXLKD~&hY3m#aUS--(QfupviXIP}T+*Yvu(nscvqtjObCy=*pwC}WEAv|S zTDoOu0|74Jr4LnaLOpBo?kK=wFd4OJD7PBT&J(td`=#i9fs|sYVsJFo(sa^{msM`R zGubtt6U4&>!r);^J^N<7eob#vxYccz)n9OY0qT8zm9wO27k9Fik}tUGNs)r1llh$b zSF>q4L|RU*Z6QIt{ll{=4}WUoqm|DQMl~x_LX4!L6xvS9x!Gx#ccO6+ zV3HlXfIo(7>_l z1YnfhPf%QfE6gme+C@^67}a{?k)N-6^b2eIBN*LucN5f;jMv@a>q4Ydxwl?N%+;qT zyIW#u2|}q8rdZ&ICvf@`RE?;G8bcmQISbaeR^k~kh6m7|{{TwnHEXkPzsyI*+^JKX zKFGiffRqjzoQ5N6rOaf}~MJ5>oJv~8K(FnD3WBccBQ_1BeM zU-@SeM*EK>6)Jh@RpZtsQ{T(wK( z`DNq31ks7aLOheF%Dc52{y|EVpEPB6*Rv}o?WO=_l!o}u_@(GyW<1fHN$xKQCp2ZSvD09ks6-S#&|!8 zHRzIE!7rN(Qju@C&2w_Y4LgtGKEtAl@?RKT#e1hCqTvkwSYJiK1Nl~UYB*r3{`Z~Q z?pt$f)5#grik>Du?<(lK8Tw~{rn=H>?oqSm#H>G+S|1Iy20t+v^sk{l97vP+Qq*-Z zJh7j_vOk@Av57q^>8LtVqfPSf75N-hDppk{l)Ao$#Qy;Bt?xiPh{w{gZhjwMs3k^4 zecEAKr6szz8*8K4(SKxxh{Q$wN9Oh4hOQxUrV?@OT#d$rgb^foKH|SkCeiI*B*qE) zR||jOy*}ZKG-E#1&nz7|Z2t4E8I4%AbkEG2?+L*sa-zI*#GV|sw6%8_1P%p$m23VA zcy}}-j>5ivUxZrrwW^6O&dYWCst;enu~|GN?>MV>J!of+D&EoGvH81U@Y7M(ZdPYF zgdPQZ<)_0|wS{AeJ9<~>{+aNr?5eTGHmLTk+mDB`#z2hjKJ-s5rq!&HTO#9~G~4EF zz1jJZb>QoZRQs7H+PHh42gu}^AWAay1_PMl!zC+xara-~dek#2@QP5cc>e$_ zwO@($#*6WTOuX{j?Xi&9<8aM;TI*gJ)L;eDHza!+{E(l(QGy;MbRh6oBDd^i@m`QX zhT+`@@V7PbmH1~DOPS$uS8wdpSNoal!!g6ux3!>`oi}g5`s>I40JGo= z%m~jNYxLj5pR-kzK4i8R7;};X43DLGHkt67#F}mLnPWkQ`@wQ6n>XSNMk)@R;NrB= zKBs0|l~AGYMcuxwbUoimnd8!-l-rWbqvQkDyGt9nF843kS|Ed|7|mkYHmPGIXf1r; z2Ws>gFSQ@BJkMvaWA68_fO3oHmFM?mg-HuG4XJDFomJ*4@uybdb|TfCmh zA!L9vzwpkKQZAa2n3EEw47qX3oHNT;ja<7^wVGyY99<2sY)ivhzIo zwHw(jB$eX`K;UAz*zWG`6LgK+(!CE*)KqEa<*jz7_eicHEop9!*zI<4)YcUs+luy$ ze78Gk%_S$uwJBM=ht1v?jPXUJw=rC?SjkgW*H@L95ri*l?*rquYqu!(l*gRAwH?1z8Q$ATFory^psEMdby+?=iHA*YFl%+1r zx8@92hx|-ychVwBMnHYvk4pAjH>G^P@pkmZW{c>#{7*{k!_!i$6ptS=#QQ8ANlRpp zjb_wD8mb)N7dWoYOUU(Wh!jh*}E*W`2aF#rC73yjq-sE0tss-s~*SRB$E( zo}FBC>zdo}?}l}Yi#w;5XhF9lXV1HE&)>@D<;O$byvt4Tm7LZK42&2$;baGqoM$!a zo*vTF!VFU@q{V>&vJ`hG9SN@vrXLN7#HqC9B~7knD_;9^F21MG)2&{OCmj;zy_&td z*_QPyKMmSh$n(hZ+z@_YC*E&m$0D1e>gXU?$bEw)03dPi>r-BMHqBL}X{U`r0|f2^ zKArPgHeLph1TbHrMn5TR@_jhtHTmv4DdH&O6zE{6#tJrm&Bxxm-QL&vpIwH=<&wj= z)Wl87_xID&(#Naldfd{Gre7&|AKv5fu9{sNM!Pb^`gN;`OP7$ugL6nWvu*=Bh&_7O zB-$Olk_gu8_k;WEx1PKlb6q8)M*@7)v&q3KMg~2r@30ca(@KsmF_pD*=1qEA{EwW( zDiUs`88z8ir|Nt$ao}xxONwJQn>2Ru%IbuMf0sA~O7%D$O?!@qYimA~ur!`qvh>eV zzy7-VdfNS_42!dF+!6dI^RJ(0(c4JAnlCD4wH&51vj>nf(}Tr$m2%7`UZGZ<>Qj<% zlakxju7|MsgFL3)Hy9+IHtJ4DKZo_N z9kss;J_!sDMe2F4TC>$rBLq+AO5>l)rYqOVvG`fhoFi4i$3*1Qx8Kn7aky&HsTnwP zU$V9Sh4$_GR&|x5PjCmGF`j_nekQwHt#0M7<3&{fbUuLk8te%3 zrW_o>b=~Zr^iYYK%1bvqWcO3N{k9uXcs~R{An?nLu zXxvZaYv?_!Aybx4Fp!t9L z^~7p7R_i2f8V7d4;7~z>E(i!Lzc)PL9Z{5Q#f#^IqEvpM^KpzU17TuK`$bLasB09gYnIE<1si%(~q=rgssgL_M2Uo^o%J& ztYrC8YiHZD$#6{%~*5GlZjw=%IG++O3{@mzMHs7rHd6%^ari3a2+EhqarA|?^wiJF)dN+1aP??ZFGeOs)F=0QKv@A=Dmw$c}g~ zl0KF6CYXkA3hFoqC+E-5{{Z!?-^r`h#$oY}Yk0L4(ImD<1}>avVkmO-cW>36{{Zl= zTxoZ(j)^)j{{Vp?{{Ra2s`NJmOZ2Zm<{~I6gym65H8k@T7*UdYQxXfiQZlw;x zEU17U#}(q2-U7Kyk@HvCCN=b`&1{X@tDZ9W zkx_La@W}WwUj$tS%fs~Ip??L)!*g5kJ*)2bv5fUmQ5`-e;Gm_;LfaetXArud08QY@ z7-en#QSDrYq2UBEkRTxaEA+$rHVwGgG4!f3Xm(7b7+0Ta##C_f=yXRLiI4m_`2(tW zHPsFjXX#!esrV*M-e;D|!=W5k?iI&@^m((o0Bf4M_+_EZ8DA@{d37?%Qur!zp2aNY zQMWxd&%|}R@phRRTYHx(I&R6Xi$?gt;)@9ccY(GK;uZR#bMRYDlrZ0c+lul%XZCu6 zazuVv9;bs}EsNnSE+scAblZJby8iR(Fx*oLc1_JMJyGIb9{BU2$uNrQ;DhRat$inD z<3A7Taj1q!hz z&pdaeON~6pK0}_>)yAF}Di|{49M*i+dR+Gb(%>!!12xS$bu6tIJ$A9#POLed+^yc^ zi!^u`Ly9W+iX{MfqlznTTE1U#(a%rJ{bne%){J`6ER7O zk6K*PZGuQSt0SdX%}f|#vv)U(R~!vLG?^6b!l2!HmH{}YhBaJBDdELr*O9uC(^6dK zpMgybDGO9;ZFSt5lkup;f{?g1Jgly0_a^3-nuuf8f=KU0g5;Sr@by?oeJR3K^rMyb z1vT8WzK}?B%|pEn86LGfzDAt>Waa&+47FD#lr}KcQ#nH094*2PG5S$<49D69Qxx)irn|~ayOWw43 z&(2MInN%-}UP$;ZFRr1I)L+dcm(N4u3+tV?7LA@vpVGNYi@)^wx&AXvzm=Ni6P^*& zekQq1LT$H>*%;hKerKK0jIq_7x_+nbyeV1#0Ak@T^|Jg`&!99tbIRHom4?zs;a_U} zH`gs1HQgbOR#JB-d~?%|eJk@bP1Jm|oR6Wep!`3ns(Eb9l{m=HaC+C}^_5IDWi*qs z(I2SALbW?;u70(Rde-j68feHVAy;o){{R;r)zjEo#pFpXtekh-{Y891r}&=sODN$| zfdS+v0f%kg_3oY;@qCa*vF;#uQ|n%~A338c>z?b~w=-Q&GOhw@4aZ$}@;-ogOC)aS za>s&)Y5L=lSeJ;QhU=!t;CZTe_Q=gpi^Q)uQGj+fRAblrR2TY%w627l5c``SPL;kh z5reHpcDGI2jsD^&M-fhI{H}HSd`lZ68;F?W=2c>Hee;U$Qbd_qT`;b=Vbl@QzGS+) zj#gtFoHp*fVx!Y%xLNR$x{kwf72#0NsA1(AD-9sG-5OMml`^XPfqu_!`N7A zdX2%IK}bL$-0{=*=mVyH%|;`ryf>Y@X0;Tr9&2>dhAd#=U`$mI#)ffYnN7b zJCG{KPJZa?>s`299#@xO>Q$9&MB3(*=d5|3YbW>|)v$m6My_W+-Ntn}d2M8^qVqc2?-NIB6Gv@i6-fh(Ml+xG zdHriX(^k~38dD^KBtSQ+{JnVOo@>Z&yjrqGyHOQX@Oz(3=C~=mPc*L~mRyj;^T0m! z@)*7(jBzk>*ZE<9{f1DiW^Y^Z1^6z#xHtxSl;!V;Gyb?EO^Ww8_?%AFo7<{?w z+lu)tDyvubj_sbz`C^i_j@rWE)=*UPIj^)l4o$|Ba~Ee>GCerrz7x`AEg)h@IO*T5 zeX;Pu;hE-)pOhYd5ns`qF-MY$zuM@2Wt&w_zMT>7KMJjgwz|3}{b5wc`=9>0`Z~Oi z!8U@%$t}-a(lPv6y-sB8Fbue|XmQA$&l^tok=|nfPIbrKM?073 zb6ke2qxio{iP`Oh=m#c0z4!|K03g*_A&JHrLHgIpW4L1_#l_zYsmcASe(OG;3&eS@ z9k1UyiG7*seqO52GKpojnk<~1=tX4eS8z!fh({ZN!Nq==UTHdP(XzYXYua@$hhGr1^YYsz>M8mX1#%ZgXmGlgg+043a+x2274R9S4Cc5P^Hsw+ zMn7sE@;=iq&hR*?TAgU7`aK!WrkAHG0p3FLT+;b;xzS3TircEdGzf(|$~7&-xW;II z7^J|aZE;Ju_o%m-t^1+dao(NH0|ulOEVO_VQikG?FBIT|6%C_!rYItv_)>_)Ax0G! zMyX2M591V@xTBuplZr)MiN!k$PAgIEJ#$6JZAalpYHk$!QvBGZ6*nr&$cU?Ftv`0& zw4@qMq|>;$J2Bgo(|`x1K=Cjc6vb>)Nj0M*nWVVxF8DcS3P}1kEQj%n)#B%~g>c%y1^27}P-KoCOUcl$kFElgk~dG7SSFqnFIn zo4Oyciu|JZ$#fr7n3M9VvCrdQtBoNMx%5-~tMQxT1>rZ-L7$k)6YxJVuc68=r&>*X zF#ONVxYfp3Y#lW1?JFz%wLV>)x7ssz;g9E<<#jd8j>EAH_!{URl_%FA{VNz0l}YRJ z0DlfE;&WU&c)dEsuhjjIgz=5#QRY@^QFirKG9b9x!}YI6(sff20g1=A737W#QZo8< z`c|YjBr^5REAw1t9ZKn=_FOeWZ(`n&NE*(UcM$Y5wM2PKbI-q8*|)xmNk4fr@Hod6@Kxtp zGIo9ix8s#&Li_B<8i`@e%V71`5N5J$8?J`GOrvRD%gOAc6_ztp5OP z-I6#!Upa2LC)S)ZEM+)y#-m$bR%1LB8A|Re?mhDRUXX5Nm4kDgrxoX`;zpZ0t`2$N zpHHoDa_V!&$9VGwI*!%J&m2w*5V>re_ZhA{Mq!MpC#(C;s#rP^OGDZv@e+vml#)lS zU_XiC8QkO%)aR{uRPS^aKqOLE9>a>t`+I~tjz~OKYZqOp-MybrGQO`*vGghNOO+TU zeesIIxz|ztSCj&Cit!iKN#Hg=A5PVl_evW($tRvqN{QleQ`4EtYoW%CDC(k?yPmIe zsX2@lY=O}F*B5oF%*XGH5!1bLH+Re;3K(ac6aE#=i{d081I7+dAl6msRF@`=ZFVkb zr1ebdr@5KR?vns@6+&yg0>tM7AXhal+=Ow|_Rk;ws-W}Z2b_cY)|7A@)o-t>IBHk2 zwa&e-07k=h2Oia(=d_Z7eNA(#BQR`%mQp`Ty%Q2tf!4oD%dlLrT3H`GUlF5MJu69X znX&$JUu=9Z37gq7&LdyuYvH{$g0UQo@@wrshs+i$Vh{SmKK}ryD~kQUC8x<4-EI1x zoa3j@T3Ylz*3uci)(>r@575^|Ya-tdF@X!70rsvlN|cMm9f1J-S%3P~)!LciQoJ5c zKRWx{S}xxem5&xLYwdS*b;=`E093hCSYmeD_j#diMtM>ziPMqXs>efg0qaYVSiM8gY7DXn>awy=` zT#8-5Qn6PQ&;g{~#W1iO)g;NfCmHWcRfFVafa+;kkC_tZG=x%uJ5+K?iZV?*JLo3W zwKMKkQ5o8K?Ot>f z5;#y)s~)|puD6Mh3}cGB62f`F$*YDwI5m}O{La?5sjWIzSGdJvnzXDvYOcqpggLGj zk=Cw@fQol&qlX8Ikh1|$;#!xHHfoII?Km}Bd(eaoXV$XC@?2$OJq`_Y!i@BG(B_?3 zZGB2%WofaVmC_<$4k@s~wR4VY`l;_#R;~111x^iW`jGi3dWyxp(DeJXD=oS(KBBr! zxiugHxg43;mLz?5Ae-I$w^qwThqgxTC`wV(h*hMjcI`b=RWn9yVx*<2)TmuCLd{sQ zV$a%p1hMztTL|f!@9+IfB+h;AbK*YdI@k3Xb#^|Vn(ti;ABzOUkZET8X~fVNGG%^m zKC~x-N?z<-4e}9Sn*Rf;ggNTYr$4%-?dZB7nru1ItT28CLY#s>m6P1gVaPY+)E|Ch z0bzK}@+$KB#~5W&Uje@H#rzoDTU0}A65;%S>uF8?x9{1r5BP-RqTg}=GV=$Qrt<_f zo(Mv{W4GM+AD%xmM7B|C&cRC-gF6^OZ1v%D!kd=i=AGpc-}I0#&N4Ax%n-iG(b)&0 zsLTRCd-`P4bnIYJG*3~6(oro#V zqZ#%sM%xOPdvTJ^r;BK9z`YKjiIFrhEQ1OST{qte`Z&mu)CnvSHKbp4hZvhUfDdms zy9!d!#r-3}iV;7iUjB)wns=zqB3K;Q#=vHE*HD|a#4QGcc2U3qQd}Xy=@g*#Sc_uQ zskxIyy)S^0wm^#2d;;?YP{2iGuYqQB^YA4TxTUF@h ztOz$V4cpxG$Yn_gLvR0Q#nD?G*3Yc{q54zGmO-ySz=;N{gZo6`(Z3(B{5@ZX?{Rob?=$*a6>QaPCdPqMurQW^Rj2Q%XtR3r`0X5Y#NYU z(jVaE6;)6I@I=2>$AT_0xI8O~#wm#dF}vNsr0YZnT^g zwQLfRO!%Yfp0XxO03Vm;sD00HE;|J=Q=%d_#hEfYn3rLi&g4(`anQPe| zw*eJRWL!7H5It}}9qD|>d0(Q0PUhW@9EL7UXy*A}6zj2Kx{|>uG}lMd zm}&-@GA!^_bHGmAMJPx9mf1_)hY~B89JYFqx2S#+^9l85WUODK^~zOcSdxVM(m zX(KoyT7FOeS<>UU#KGO`HhN;J(%@PA-k@t22Px@vGR>4O!eV^tWgV3PS|TrOcysj=joG_{F`aU*6CT z?`Mg3zM2BnS>e{pVO0W(nY>||eH`}zR=Rd0*}91q&2>FzJ*XEo&EP$?vX~gYe0iQ=>na2TWhi=GO4^ul>kHP9LD>3kyD=TW>Cs+PC- zS^kytbR*b(_IsnN?DIiC!@;+EjE<~AhKgBI5>wBXYjYI4GBufCvT4y7 zAM0yoTXN+#9j@JC7lcnwQBT2-=cFwq$fxUGJGmWk+>Q4r@zxwZefA^TJ9E3qp_+2C zklm2}z)U6=C95+s=Dd{!`&;|`o^#ZuzRpzI?V2u=KvDyV`GMdo{k30Fe94_% zX0`z%d|Xr}3e2g)pYmDF9>&MUF}W(lgum6(_prnQd92yvOu~ScQN7_B#Pn#QZcNOO zYPBb0uk7V=h0~r}d;LC3;Yb#}qV&MdbQg;f*KT5Z))Vr0G0&r42>Km*~?qB zMbBGXi?%0HyrMdE^H?Us9%=9BSiya)r7=fl51R5kliog2f5DZr3Dsey6kMe{d4lW{ zAQOUnl#@K90uHEo7?L8n(H=V4tAo%4N&OJG-95)niUY&FqGHUtiBVSM7@fAsNM}}_ z>U55pQi53h@4rtI<`5tCkW}br5*d%~erDMztuK8sK*FeDZzuDv=T970xEI$(d(RQ9 z6>$1QvwQp$SG{P+yzNRg*klQ+0EPY|*&r+ia$h?a@9<_|t*M3`M4 zvBLiqM0iI~{%+NNRK5RnFco%bc_wmgbod4!koWk?rlKV96^=`k6t6%v%y^j^I3V?q z>iWGi`SpMQNFo7;15gGtn7tW*h#QI2`We*JBqd>PhRbya0}y>Kb= zk7QLtKYCd|uL6eS1zne3rTQBkS~5HETrx&B@#7?^q=FDF*nX??PoqNrNS^t{;1EZ7 zur?8UVnXiMz|aP9>CW1|R5Au#Q~V=2ejeZ+E{X>JBMHhPj+`owdKnuud4goS3f2XL z&lCS5BO6xiPjo}L-LVIBwE8z2!e9YM1Ar7W#VP-w?byjYiJ*S*S$U< zZrZR_lTKIJ?ReOs32}%+1vAS@LBDPB8qx%ymcRa?f$L2kU8tuy5==!F1{fS@++)`-%29ENfjgozNtO`jZ0Xfx}uc-M-rgd zcf|LXs4v_;3cznSJqMJZ4X^sdI^OWk!YWvBZN~g?ktc+`cSKkT*Pl86Hwza7 zf|l__x9u$=H1?3JY*rUbp=r?&{f{J8whct>&zMJeTT1W{>;T=}AU6m-K}9m1e;Df` zZNEdD1AC@(iwUVn80e5ONr{)3;YSgt_KQxZtE$UQx)cmU9Agi_2Gs$+6BoVb1Cr7` zGHfL|DI&U*Ea)HZ1olBktkOPPjqxkOtkvbdGg+|t2{_0WC!QAmBZ(6{1{#Mx_RL7S zX-)b^!Wl4(puN7YL53!Zz6Fej;*u9*g@HdE|B*EDovgb|v0fZ-|6uaQ*AxVwt6)u| zaVqq%76^H0Yu=IIHGOmU&K1F9yjJ#Fx>*H~IpVK;=$HDyVg_^&KB>v#WBH>K>GF>R zb~n%t*2azt(=cq`yJSp;Sp%MCUiup>!s_ht%+xym>puy71SwL!WowW=@X-yt ziOq=(7XsqYXBMN%ULf41=2`b0H5vX1JKN5?1mqwNlYJbcFDd>vyR8OUM~XjiGXca$ z>TCFQb<(*NE@*?J{YBog4C}`+zj7*JVW4x2&!Ruy(V{f%>x>$at%64y93)l3z|hTGPr(MZcnO zmEf(tj7(cuQy#v(>mC3rgqiMwfVLSj^r2CBB}l)>xkm>{!}BVdUOK`rv3)D`xx z)xi)q#_HlBz|{lUdQcR1hB=ktd#us)=?NJ<3-8aT;D*=OR0UUHL(cLq>$9Ef zLaAjQy|^Hm4j-T2^&C@~{EilC6C1pK9>wqKBcd9-O3a_XZ5~3KDe2VEvo{c_j31}Q zOu^H=G}#4H-NYKvSz#Z0>eAPt9JiiIHYPG8u(3jH;E{AmC|z24fLMfmmZc% zC4T8|E*b6spv#U+u@b+_yae3zXI_g;J~mNtE?jp>PX6Q^ij&(Fny$@L6&KY9xMy%P zbf}hS`eP+Fbc~-JzZHF#HWNkvaI$bmI+;NuFFMC2zZ1JJ=rA>`*kw=iEj1dop>Lof z6xpzx>moCG_dS)FzTbmN5l^)f@g8jcfRrSOg{JOAzUccb0XHT2iRAm>hUa0DUECR6 z85c!sax+%qy7HM}n0$spKO!(L!h>1=Kg%%Tsf(U1J!j7ydJ4*UNK_x@2zcsaB3)_a z5&f{}KzwZX8GR>=x33AyhJG0q_M9|hv-S+Qp2Rr5H>h~P52|Y(n=nZgx}rSi=`d#X z$2cumm5J+`(fKl00J{BdO*hrztn;15Pg|Jo%s7$a+iO7+O(JOS@U!N74%DXeMp9yo zVoaL369Z7`>!_3y@YfKDxgpF6$gydT*{k{q8RgrzEyTy+2%O9+a5Pb7werB4O;WG^ zvuwiI93hW?AZvg+n!ng`o~TwvNH{zQ%lZy`vK?8SSnEiPRWE+Oe79oYpEw~lZiah# za`$a9C2v988q(8VqJF0P6inr>U+3#J+kve?d6gZ76t~&-lgjX|_*8b&_~+f3i0ybu ze=AJ(Ph*$4=|XPGex)p(1aAyv$}j;HXuN|%c+EJJfiyMHZuiy&J})=D3T+pkXw~a= z--I-l9l2%d3K-6ZQtE1q8dmk^gmq}UZUmPn?&t-`)6RsIQ>iYf>)3o|C?|KgT+uv= zN&@!$Fn{KLExFz(FnG?xxm3vb+rG==T!vZ9Uabo_v+v@|&NwY0S9c6}Ag#9G>ApFmu4*k;>m~#7B`Rnz3_kF`cv!(J95e-1 z-2zqrdO?Zq;HAW~c1SxAwSthlfA*)6WIvFl-J|0S?M5+$>QoC3y@cos%!|D&QNjaR zyDFsUp36?N7VS4uZRuH07U&7}&~_^1t5i1ax(;sV@DGg0v6sG_qe7cYziwJDFM?06 zok%Z#&UedL#A@DhQ_9#e8~Ap=z&mYl7QX)spW)P14Ef<|!r7>joiaPBLbLd>h=w)6 z=>FJF>e&_c$HnlO)kgkYIxgpR7qkqnUa0MMsk*LoTHt2E`|M>ds{Cs@glwrgNRFPi z@kOVmerAY@3jd(uPP>WoS!6EdzSkG%dX>k{Q@O-AAL$?{_JQjXL`L<}`FZqRP0}2w znOKv-xWNaK4nNv7dR^^2t`v)7Xu9=t9o_XVqFwoS5gfN%wwyJ^$=uDr;Z>fIza!xDnunr&j zaF)}y=0s;PM|vVv z=h4!o1TQd9^YZ*B?k9e1?J?2fsp5{n>(L*pGFuX;jk}Vtp$ap07&NI*`&vJiPSYgN zI{!0l(5?V=d2aVeWFpQ|X8WsPc$mdoKa7^w+>>p->zCL`hc~EnzE`3_>CauYRs=T3 z^@27>vJF&;a@=NS;>B-m*~aqK%K67az3j=jvhOQ=Dnh}3tBy&zbh{SSSG;TDY3-CU zaIIlaIgjo(^(YWa7K(KMa4zO@e>0o;g=MK={$e*37h#9bUdMbXUNrP z8`DD2xr6H zxPNXAE75Rmy@phbkvW@Pai5eZdUnDXFU_DTAcMdZqNnQNaS#~!r9BZytsmj$Q16Kf zD~O)SSE-3>l^(9zT>T{5McX8;L3Y2CSjd=;m6xt%Og9wXp9Ww0~eK) z0~;nv+Ow9`A0*+)&7I{+mp^$EgFkc7UJlcTg)OO_Y3`@V-Dr@@KiNo606Cq3< z+DFe@{J)1&X@L=tw=$YqT0)+JfIY*s=KzsnNnh5Lb1(X~jU7E_w%;F6vI{0BcdF!-<%{ogqS(Pph*FE@>VSDx0?;n34 zEEGH*<6^z&Uv;{l(GI*&s>$K1W6_y4vvNt4`ao@v75+Z6g}#1Gh5ly3ik`?(t#pX*vxIR6lPKJ#&l;SdJwK*jm~ zLij`6Y}EX?rC#c4T&F|)a$;DSo61cg%h|<`)5*yY_h+YaHyV5~h>oZCz1k>|GL!qj zPP2sjZ}R!al7;y5Q|rsxc0gt9gUQ%T2Hpr zM-b$&K=SWrl5-(|H&dv75G!z(Ac8H?o}>`WpDf{_d;q;WG$RtjvQakKb`se z=)53Br_OduChvz6eT4EWsJnScQ|A2;O}Gd+`Vr*n?9ZO@0_%Dsl`<}+aQYF~^Dn5} zD6VgCorXZA4!yn#dak7&eUFN<8$-izV>#n&;a=12Yjsmq# zpVhH+;UhDXys4tS)W>`e+F8e^vnUjgV!i#c`t%*%qWD$aeug(@SK1)HI-yN(piXa9 zI3K&ng1Kog(ov=cvZq<0;Jt zA^9a+9ctd30i?M;zX}E6Lg{B)iC5WAUfnE8(w@9`6=D8#WD47&yd~d#px>W!q?GqY zZ;dL*yJ8CQ?q{~W1klx{?`A(?k?v}IOrXAe9zA7>3z|dR7mM3b$7n7E+?GgIS~06T zz#Pc9y$()2eBc~VTZMd($immRcd-16x`EMct|pM_tM)F~szhQuw@wU#%W5|antIIn zScnbq-VYmO?9<$C0KNWoFEo)ln4X+(U&zA!h`M9%;h#R*uECgJEfL6~gU~>>YWOpb zuCU+`TXGpcY@-snK{^1DAUZLz?;|MFI@aX}up7(b$6z!%zjG(*LQPi#6GGz0sNL30 z_o0lpq43JvU(Gli422@+wfVwJn%J1W2*tpU%_$nAEkE)U??ZVy#A-dpmJLWsSM@3! zUR3R|S$>ho*R%B~g6w5NW=GO3dIQltn$q9p7*Q)mf<7{!%evrxtuYzB%~r+(}p!tsY8WR*FH z*G9oI!UoYP6r-B)(3kcpP>n$G=xuNmufA23g6b=K*QkUCv)RQJ!yjVoJ8G8W^E*Ur zcc=S_?Pwlymd2l`wB zR3=(OJF26EkMYR)*@)5)fnyk!mILk3I3nmPo3*lWf73g7N`-1hmM25`wNBWli%i=O zQyp|kpPq(Hls^^TU{VJO-x|$*YKyPDM=V+(nycX({Yq-#7SC^A@Vx ze*{>faaRfWdfY+GqKy7|-|DMnuh2_<;cDRh*H5>1=7~gp11tglVn|Idx<9x-;vdNa z854ji!n#^j_d&CkgJjmUVmS2y**oH!W}Qm6b6)+00@-Iel@^c<{Plu~-qRdj?NXzc zpBdfXG|%UUG(mwBsCCOe&b{5`9y*C=D40LMK4`Au0x2EJ9jv-@*=28v`!uh!QhfWt z+*Y$~5<~8PYkzKX^@|(1)Xoi9w!V`Oim10|rP~RLo5rq56}DGBqnUQx9VT-; zG$A>psTd9O5dl%Wa>27C8pq$By1Jn-lTrb*`?_w3Pd(Z><2^K-QM&ho?bnQmhAYUG z$*OI`zNpxm8_4;gna~}pd{ie@*ymj=@cC)-Ka#Wn0j(LM_)&{((5n@CVw}82H&>wk z`ZC)em`^o7i+D@EX6CpshINI4R#sPvBClM{q!+x8fX7qe7vTOIrcj&4B10UElqHlO zr%y+lc|)WV6|BH<#)XJFEqku;PaiN3G`UT_oB=lm9H5m`DeOx~cXZsePK?|f8r7P|HthvH+Ffa$w=G8~&<Cfw29qUz9u_efzjxnf z=#~VeIaCnV%NO5RlaFBq#01O|1@CdD4!L50zl)1kez~>Ck~jKC`sEd2sgV>Y# z2K?q4d|FuehSZx>2Bom`haFV*l>6qAhU3A-5pxrH}uMDRA_%ENZT|e zrKoX(_}$$%r#R_%x{(RJ0*7($uL_vuG_rjiIz`lt7s?u!P(O*3(U;!lL}h|Krsesl z?Tp#{kFp7ep9stbgVcbKkK&=Z@(JC@wT{l&Vclx;WC2OX8IMBM1j4|6^yD0%6Ryz0 z&=Ae}nUwMr5@5oh_(U$M3y5>S2cdhL{3I3Mu% zwIIhW_%-UR$P9Z;4cE?;sjRAgf2hgai-A04sD6k>#|UWK3Ff$12C)`VS7yXY{Pv3m;B&McOXi9v-C0BE?~Q zv2EO3d!Dm5R(IjR|4N*VjV%OgPy1#0BG;xT|ASXjz9t5@?6WBbZxZ;PbrFI4rC zcVC|a*ZU|~Lot|v+$Mg_{QFWidr`CLp}=-rP%lHGL`LI_zClu$)GL?E{B(&gQuGYU{Zru9g*Yf5y9$;AKQ;FW zGCHG+nEBiCcKe|+s&p^*lfr*3U&k0PIhGbW_?ZmLf6Tsl7JoiSOm!s=s`14>4|kJ! z1MK;Y*9bJ0Pf+UJJa@aQVrbZ=G3_ z2$2;Fg6deI^?EwpH3eEeyBi-@SXfV1bg2g3)jmn}G>IEH&tC4#d9rkc;YB9jy{$Zh z6|FUL7uc-mpw%K8-YUo%PMYo1Nz-DS^gb%`xgrq1^?594nM)w2MtaWEW(2=N1wJ%q zID>3umMq#yI*B!br}}-sHYSa`pe!hds{{@cd9^=8_NAZqs9GlSS=BGf5+Cn(e!M@k zc&#Jf10r;UrOtDMHI+&mSI=tgRFxc(_E^W2tL*REEY>p?#F>g1sZwcc%p&HBT6~Zr z<&s6IPo%808~d_)L2c?Yk5_2*f0It6G}be!3fA)scq&(~DeY*y>e|sKg^sM>AL$d= zH5(@AnHD+R1Y(Bm2X`iXu>+7z2{a!Q&Xwq@}@BJ(JxhX1l z)$=a|a5*EfH#s7`dd>FVj>;>h=N(V;{gXrWfoAcD>1*Y4GzU{t33z-yc()9^8jA{Jo-D?wfu8gQT&hiI{MUDN}K3r3Wdcft*6@asF4T78LYLJ zq%98({M`IU;Di)XqRFRg8OlFqE*E{weE%^|rjRRK z9^0rayG8pXU0p+DKq1u4sH^vZ1zCYoWY(6!L{-S^3WmY%QnZswftmppxSc=6s+Z&K zb_HE8LCNVoItp+4l4@u!vFWM-g%by%ng*JHwZMv%=yy&Fg}AI`TMR!L%;%->INMPl zTTTD@;>59IpzkJRI6YZ#TSmd$M8G7cG*i}a+hd~VH-g1WOtz*3uq#dx+YQ+iylsb= zW^BwB<`Js=A`7aM!j9BkwCzc%(Q|N5o`8{`s~AE0DY5pwQ2X4_lc67yX{tukypMDv zr3~TC4XFr)V~}L`XJ4|U{yQgN&3T`2;r>Mf#8S5ZUc(tu$!M+4ovd7;#(#uAcPnxEX8@@76BlSevfXqM>6 z3#+KvQ@7lz@Q$+I5*f@J^}+wCMV?x-T_bY*Ucc$eFW|RP!J{J%U&SoQ0}Gk_HU^Uz z8CRG1Qk|rhpUyE@bJU=6Z82`Ld+zS`4S>W3Xstn=$WCePHN3*xJbC4u$UFGqXk!?) zgxia=sJA*wv8cLbt+O&;>z5{u>NCr}ayvQ3ro5EpO2@chb!S7&ni^B{v+*6r1f|J& zM%;>}?Bsr2uY2eA6-ezUJ=nj6e^z5)n0g@aoqFEm8F(=bJftW{IoFdTkE=}I77+FH zL`lBougNG1qdWjUQrhz~ol%{)IixBpeAVMhlev_NaJY`H#-%Lx*^MalJ!;A;_G5|e zQp*mfO%(iX<^HkW{-Zqv-v=#Z72p%-Fa{M$3htx%HOC<^+Lt^jAuZZHCFMgMQY^hZ zYTccFbRB^nM%M-y=gha(iu~g$DA5VvTK$-syg&!{m+y^6!&xup`br{2*7AN^*^g;O zibMQ*T^$xg&L6Iyb6D{ehTf%;Pdx&|(>d_$Q>Br~pTu9PmJZ#y!uYcwaqs|DCJDjS zaG9La_FoE~vfPK?GhL~FbtI=qvZ6Pa5?Mo~+{dR1x5`$m_-yEVhEwf;^cEuaC;kRd z$DxcsdRe06b}^TDsn(<js{f}HQZ*&ZLO3{T^s~L%;KtO1)ZA#gbqhCqzZmVC(5QC- zJhn~>eJFeJ(7W@8KIIFZ`Ku%HpOG2*&Cd_Y8^ltC zgnn&cK1V$zOjgx!iC!vM84Fts#_p+5bU|B}4raHnwhhp5nal9gS;>O;m|P`#;z=_} zzy1g6K*bsT!6*H!<)JTY+7_Nd0D1Lur!;`^)D}(gjO~er9ZCpHx2JWVgFQUjN^lE) zL|QCx&mFYpq)W1Hqzc-&r;5r z!?2^D%*s;Gmn5t5V!b6YDSC|gXj|vstQxc{zgb-`sEz~F(kiNz`_K-q@N6c;5Gl;i zp1Gur<8J);FCq0=(?<4mbq_`9LieZ~4PT3i+cH~JG}*52WgwqE^vEG^Z4|$yRnVaM zm^nEr{y0h#&GzB-XoS|A4tDhT&w9A_j{3a=wfV?f;QVhV8sMbH7us^#JGz+$eo^xQ z_HEpaa@DlLs7CIOe^%$SGb8UFLov!1xnDOOo+w6kC-u9S_;AZOylT)1VTt6YH0$^^ ze_Ee1QApxG5x?J>UoNWS_0ok+w|)LhnN@16hCX{aTsOu}#5R@}46M+zUyS8teq4|; z*|;GF#k3#n7*9#&MT|)(mHjD{-EFGAPi2DG<4+H&5X02wdn`>(01HZrCQiPx6rRML zhg8iJW-q!v&)>M2=R4&jLq#=#rb3685dg6XZJfJBuF;r~YxT5xz(%(#(ZYc{?eyI9 z+3PD1j(e3X3vk6AeQwZ@e)MK&3|q53yjQIqy<~EvcJu`{53I7h2Z~wyd9J#zjH8@}moL&pC2+ z-3KJF2#%2-m;tt&<@k>^e7ZX0&R!U#6Kfl8mIu6#C?;VZjqC6g{uYl`g2qDR`bP5x z45Ny?i_ARvg|&4a#*f`DdO?aJg6LH>on9yRW`9KELpy$DJT~Zf^H5!bZ!}UgTGrjM zG=V6f08NL;@n!OB7zmg=~wu zdt=Gqo9%g_i>z%oi`~tS(&5{QPn>3=<*%?Hd-_?C9gCRz&-R|5{inHRF~=x<6c`%! zvqLdHYdg9^_7UzgQ;ZO}E<))TRqQP4Q}%Zi%W>GJ@yPC|uR1XjW^$hV=y9symJicN z)_?p@n%4tKlmANetE*NRx>e6v{Y6OwNuRvui^GPW^c|2XZmgL%O`;0nx0U3KpG-Z0 z8V-+k=|$@<3Z;q%7dL|71~A_vnS-y+!$L;#(GDjm2r}ia6tC;TQ(;qS+wcvp(YB2* zA{MDaN3j>kj!Oi$>33UI!>k{L0B+>vkmu5?yc>&!zcqN&{r*M~a5mP0A?l6V3l|N( zAs6W<^en}}laI}LeRxywMaOyHhYrgxV19sF0{2G5wEmb817Mk>iEmEr`T|N5!f6DA(Glz>A56w#Z>?+n2U8{@Wqscg^Ue7s?sl`p~DV(S3Al|Djwriai$)K!s|vDK=fe z4^bgBIB<}MrgWz$pCnBgSNPxbwwv%{Udya0gnsCt*w|q*|Em0Ptk716)QsMk6PMu= zA<{CGMlB}vf-kNHQ+RvH;>3^H08)Wcu3p3?8r?0z6 z&;iET*9M1;SI&4N^_JU3kh%or0esy1qa&e&=lJa>p(%!7=D8^!`E_f0G@So09O_sdA^#M(8^w_uCo4b61e#{!H~1g zH=X6Z&68L02`Rg2(Q3m4Q40m>zI?99nBLIajVKLV>rzU;V)Yvl<_EK%uxlk*95Rbl zC!BgK!QEHbd>nNf1=3>OK3>UrF@%{8*r+OM;ucSrW)RB4Y#}D{jmHqW$52S%-Ugz= zi+_@EGRO#-%T)hh7tlDQnrL!HW0sVI1#kJ})0_Ds_?T^reRTC$ZYH8DbEG|dVZKjS z$D{LMRaW*Ya|mec>udEIpnvuAxt30bFxuLO)!vU7q^}rz6u+g_7U$_^PISp}EoP(g z_+(S1(pO@YL=6YqzzF8`aD5_ux7t-1SRa#GEWFTPoNqJeOuCB&4DcM;&1F{58;Ax!mJ zlKBMeC)js*n&#?952C2vWPH0-cLg`3W zLeQV0n4Prtg8*nz8tY8y$?@~gtaC<%*|&^|CfiqPpg(*>ex1)XGw_eu4c`cua#blL zf#((ux*I+P61iU48fZt7yM_@~$N`fTT2(HAcRhwAn=%ds;k5v6$>pkV&Te|idGxfd zWXc8hCXY#pQfxXVlP4+lf}JnWb4jvA3xhd7?LNZlc+Y;{^!uI;ZJ4`8Hx#|gj+J7f z;fzL^oZ*dPb~i}e*c}a%jCnq0K(P&*=cdKnmOYPE5cpN>QixgS{ILv%@6!b?Zka1!)qrQe(vz-h=>7(1YW%b=S(27?s9)5j@FeRzpu1z>Ru z+>$gyG+k$9eO|^6Eo+Yl_-pXoXopf2}K)t0AHJBPA=|bug zGIiq4uUoCO7Z%lr%S*Z!|AEupEp8S0Xq=Cn_c-?YF}oV6>J>mJ^47+tJ_`Nzc2r>a zyWlXt-(>q$h33t#cH7a49Q0d>k_xS1TLGiO+k8AP1)c`OPY{*s_H7y)BibE0pLHT3 zP5G<2rT3)_#btj#^g)@?Mfk8MRPJ6;ZX`T(4$V>%^;l^4zmbjgy@Vtql!#f?03a7U zG$On=Nm2g#Z4LKVH$3-qo+-TlIQpW zg{SLttad*)C}^ngIQTjxMO-UbJ^5o+roTy1xNul@_B{aeU~k97(1h7og0^dRQ&r@v z5onKBbp**LkR${B-0k{gJ)I6AveRdaWBr=rbHiCrrlp6lfb0#0%09=CBc9!Yzh^~X z`f??6+GZBNetl!nz0MR$++y|bk2dH=+DUScJG)xpyzd!kA%hE$8vLT^Ww!f!CAGHv zbs28LkgTwAD^6u5nVqARwuPsj147z1U`eIofO}cjz8Gh))0oqLd*M6!pA#6@^5b?- zr4iO}EzN1m*&@OVhei*Oe8%)Wx=tbyhEwCZB;bMn!XJOFL&Bd<3Dg^x^C&*dE*fvl zIkk~_+D58>W)JkV35&8;(HLzo-?PnWIvELKqwk;{;@`4NYdiT<+ZenHRbv3GgX9 z@;0oVv{)loRuc7!6?B+&|AFEH;VMrs>iU&1Sq>4~7@&3NQ`H;{s!qCo4= z*mnct_6MXqcdTgFwol=;FcC;)JY3<3O2VDq z1Y~QzKMo_X@htxrD*FM&52LjsE&2bLOQ5t`hGfe)|NkzMbM{in9)pFFTAyrd?0Mk70W^_lfA<8Q4Or>NMd;qbHMP^pzc-_?P?(U3}z9>XMEZ zQgLAgybi5Uhx{Tv(!i_NMcl{6Q$604hP4mQAg=6qU2w`CZ<~*w{2$~pYnvJ~hnTgi zXb`I^CPFfA6Prd)@0Bfx{<)&%SmkQy-+@YWUBCa|{SkSmktWe5BU5g`doVn%c}44x zUoZ&fE*9mg-pHo|K0lUuidO~gk8x|Qd^JB7cMsG~YUHdlK5Be}$f z67Vzu#@yH37x(b;$*_j5HBJ|%onL`Bf-@z`_|8(oj3rT3RtUE6v50>zC17d=bofj@ zhnCpQKN1q7WY8t-cwMw(Y&GCSY1$gp36VB4wGCS#!e>KXq+=yd;s{r?(lG?hmS!ix zOFRw^utVTaG4A3Qk%rXM8#fNHg||fp;1WFJK_4;TL$`BTaB74x_kfZSFTZdJCMqGW!1!Jx@6~P4#7yt+ ze11Xi9+bAV1J!9MONxdBk7OX{o%*MYYJc-lz`p6lB@ihlN4q zCwHV0Y6078aW2ELN?Tw$2cacvRC#}Fs@3z#EYA}V<<= zX@Q2+#M&%a=;DrnYUD_?&fP%cpLzHmC}4~M=y~SjtAc7M%45%Rwtw?%D|!q&Gyurd zj)e(F{M7nbQdaQE-NJEX`>p0jb{?Mf-|DVCEXbc4v@FsFVgjqnIUR3Ac67tDznN-} z79(2EfS>S^q&GhKO%z|wXde0y}W-&eo5>3TK^7rEEL|5Fq{z6!v$%V zC^l*#F>o{wamX+EU3_09b$PA@@Yms*WKnQ5UoFOEzd!4&*zesc<90TRBetTF>2-k2 zXM?7UL#Ma_Yu`?H2GS$4CbvB5U~kOki4$fe1~g4g*He9nk68u;+8aw&DEkjb+@8v?v^@Vf+F$@TO1fxY1> zwSolGqw9<9w0f#5_jDAi)%f zHb#Tq71-+i-iXlejP%AF*toYZQ3qbkMg{NoclfsC&(l9*E-leef9o|!KjEjbE36_} z%n_7-k(jPX-JdV`J;kM7%9pMS_nUEJ-&CFQb8W%9L|XNvh>!Kpz6C*h-yd(UQ$tig zTX@wbNGJM8d|^C(;6-7hbBE&6u)OC<>XEU|Oy}%li(*Q>XPlRU+y1#yJ_Tc`GAQ1F zSf#&=2j4eN7^cYRkG@*S=li(nOLxi(vqRLUA>6+SqbYkX{?)94nE_bRzwN5 zX#+VyQbaZXU$AVmIW8KeojIJQEpZi3UZjiP z4U6V?(28}yI&74791R&8jft}Tl9Zq^9CFHT(xlPeJ8HxdZb!f>gf-Wa2=|jN5hJkc z7gXQ?+C6dG`Sm%@6= zKLJjJm|J`Xb(FK_ak+jCakVou+g9K(O#GdIctjS@UFcio{PI#NNa4{E9z{<7#Q)jP& zWB*q`frWJ#v6~23H#%k!U~uE0c|8;kIQKnV+A3U##@j15R}6(Jcbzx>Be}T%J1{|P zh^WbLdhFe{VG4qKyyp`+jUSr3Srvkt;!{ow1y5wfT&6bK7GvQPf3ldPMSyyQAx7=a zxj_603a!x4R)^?}+dbY0xv?+mdepqOjsKOd@YR{{7lvbQ?#C4c4qic{liCg2j&c!G z^B88I#8boR+AM(JGk0fu>|8#eS9lXhbO%Zft zHEGSGaa2T#LKEgVZ;v5ENrFInssFNzxc`C-XCu<(5?{kA)FzH)*@-2&ThNDw9ZB*8 zQX)4h5Ag*W1zL5i9l|%?K=HPHNubXJeTnZb`;4$@A7Yds$Z^4L_;3wHuw1*SSgJUD zYP7dJMT|udghpQfd)V=EX|M#5Xo5IG)kIL+hUDFYM9Zn+H6ObyEA79jaTjcg=k(_h zY#E~2SUZZy_CpSxAhU4KS6D(cBfx}9mm^edQ=eGi@mQZ@TVXhuXxn+zwJ&NW`PIcl z@KE+1@ot~5B;cEbyRPqsp5+O)Mzf;kj?zJkf&}12iYd2u?thEAeKvV`%}3Y{SPXc3 z{}yN|y9vDNPqRSQ#9nCaZ$k!KAVxgp2nqs^(l2S7qNY$74m+o`n^oli7Jei_Lp))Z zy`BQ;37)|O$1Ubln^*lGE&NB|OZbZ$w!#Ri%2NBAYu(1RQjKS$8s7B{D6E%>!t6ex z4!icLc3)QY8G{r6$FfX6mk^yksWHp>L(Bl7Z7-bPQ4x_p^;h$;>}X>^m5uwg-hxor zfkDN6O(P63GJS8MkaU`6eG+{MfH%n;?xS}EdnjK3&C^>ljx+xpjuZyRn3AXg1<+3806N z#+c|;2Ru;@nV4ZxTKQzk-rYc$w;Z1ATl_?F^;CdgBaf4{Ek|F&b?bWjID9i)l5@l! z^7h$)Z3#s6dGVjLL0fl=XM+%ZMIYL?Y_Irq1RF6qp3gI1rh9VtX-|EJxXt;J7zlW) zl3Za8tsV;^RClug(2cmCaIK0!$5V4&W*W0&KkR06=-%0n1|DQjPFLL}|C=giSW!!t z3681leBE@@aMo}K^o3tv^zxwuC*_S;1nvFjT%%5CuITk1gG7*Ir-=qHPb(0kR3NL& z*t{p2f6tTydYoKPTtFC&m^HOJQoUh)6y!te$&cmmBnHFwI^q9Fh+4XW$5PFukO5*0 zJ8{_yUJrDX55TMXeo4`q?}($#Z~@srL!91w;)3aw3za?LGdrV1 zG93+JjiB_pXXzh_oTmrjlz0jdIpNZz4ICjRneHrH?CMKO`{CcbRrG%?esehxm=RE* zts!m;@IqjT>xL``4i*ENJe>Qu-WZVgkAy2wNBsz}(k{uLIZNfjp5J#Ayduo|HM5_} z?IUV})GM!mkPr%UdC;5Jd&_`4$3>HYZjYCO8$0(u0;ox?-U{7P*g7Q3lPC*xoO$_P zR_OZEeQ&!H0Nz>yL?0-`yrCFJxPhG&p22oaJigp6pc>W%y!#Q+uHE>976xwP-|Ceu z09}Wr^c+PS4W>478xkpgAg+ZKs*cmQrb_XCmz>1ne?N#RkoN)uAY3C3Q4>S#M*okZ z>yBsZYvYt!Evl^+MHHo|nyFEQw)UQ}wI~&P&j?kc_Es}hGxpwFiM?V|EB4-7e(!z% z%;%GPa&yl;=XuWae1{Y{9{T2Y=&&_8r_VuEI7sbJN|#j4m0eT3$>!HLHGkxt-`b6( z>jKn-f!lOM1n5a+T#g)M4~Q*fT}UkZUsF=}J4wh+4Dk8RI z{F33#HU7qC-b<(9d+&NwGYz3y-x~V=4M?cGK8CHkl&M~%fxj+*4NPLLw0Xiyf2GZt z&3!2d?sm#&Y6omIHqQX&ziq7K;5WaU{1S?j_E{IdI4cljcT%9Qe6q<={y)6AJXZ?- zo)_vF(AVyU*QITjY96!7Xg)uQ1mUBC3?;=Y=*06DqB0TYSx8^q4S@UThF~WkoF_T{ z1K4Km3y`L4h%l@|r=u5g1cJ1NYw`ZI9)#Lc|3xRL8<)QgfK}K&3qg>TxNza8Pol1% z^ktU|)k*W-<>=KKCe(*ekAtLcY9K+j88_n_X*?`1m33L$r)sBX0 zveLtoC$I`u?wHi|6erU-{nzU;XQ8g}&?Hfeox^-eRjs5u>h9KSzV%$s{)N|5iCzcc zw!FJYEQ7Q)9K|=T5%ybE!FaOv_)l}>^DE?nc^EBRTK}2lw~dt6^L(_vN8OJTy@rHF zU!u{hAS38td`mkLyPhu|zpX+fn_uE*D7~XWx_p+eUC3UIlWvlrQ}p&35*agJ`VJxc z?AFayDS+N4m-OxXr*7>U;x?H)_=eSff6_!Cj>1t@Per~YrkLA6xaSsDd+q|ys5(DQ znE)U2dFXF#VooiDf1RU#99ss2R?Iq6#F7=CzX(6n!hvC0CfX+gE=PQb2UpJ~*U(<6 zdn&|i`46n73ZmLZSBK>Kj`W1b;OZ6WE;TVZ=QDUa^5-+ej(Qdxl^0e%sPaDb-7Qbb zIa5f}x6~PLI*ADm25AdV&808oaxYVF;=M%`ucWj~0D-Yz^S$%qh;Pvuxv6UkvK%Up zlr!)O6=HWSy@s!XJ&WKl0WOQ&XJaR0NxNf~`8i(jQN!x=D)Se=&T=0+_Y?-rL>+}= z0_)K{vSQD*7>BYp2L_P(5BR8mPsUJU*`nu|HrNVhHE}V>^1`)?ctD-WVfOt*VvuN< zDOrj6P3$u3^`j)EGnB@s?$`HtJ@GJ2fAO&Qf@=m8wic7=pGOqk2l7xbiC;fSf9Zs0 zX%FS2*}X-ynMo}_Np|4KQm_WeIScg_4_29Lw;^!;m1A`>g2fm|u-G{nY>{$>{B^{6 zE)q%BD&Gb0dge-YP9#{zncHAXtDr4aG zA^9DDxOC`}LziRUzhrLVl;n`h<91Ge{_0*4zIyn0o93r?VxP66`R{-DZBd+G94nGN zDjJz!>sj!pC8y55vYa6lB^gd77&yUVzqRR_ly- zWydqXHN-*I0il0qb{NlLpVbx9|JeFOarrDu6@^CsYb(Vxeq5dV6j0%B@@M7GKT*eH z*(F2B>l-CyyE8fymZFoB3mGd#IWLZ)7$+?X1ZPDpUSw{Qta53EZvfqqcTe-lBLRQq z>E>CK*aibn{I}8Ou86rZm%&(fQq&Qmuj*!W|pI>~Tiu zeXv-ViGo$=6vVA^T;w8G(8+&fB~teG;NaD`&RFbCSTT9#UVu6{u(6apw4XIVRla5#__eU^UoXwe%4>nfA^&ygCm+ zbharT6Vce^QJ1HkPNT;Xx4WXh2RMMgtGpPi{lPKlELC+IsgS^>=~MkU_QWLa?Yz|# z)$M4_^7W*?3IA|+<6g}?5?QEC@qSt_lc@> zmw93^qx68Fyj5Xi1M{{vQN126?ItAZQubZV&SbJOt1iZI94gJxXq>j+C=f;!8~_8O z>ROJ*HrT{Ydxl8%v=^kKW55k%XI*Z)HOGC$%$DWMsKK1Cx_{*vgBrw(-c&?29%P#=g8W=JX4L!Z6Qd1S>KDVThEJxNy<8l1 zL*33@-!_V?#&)kJTX2X#JDvKkGWT2CE<3dj_XaC{kKZv~t~BA`LbNnJr6ZmUtoO}- z(o@Yt6Sf)2Lf3K=pHXEv_?gpPd|OvbOvvoNTPv_^!wOqc%PzD}{y$*}=5bRT-5n0J zcM+xyBWyn};kTvF-F-MU;V#Pk_uIhv{!_mD<=xT_?xJchL-bGcf^yW2^sX5xUWokF zhz(TvwwGOXJDj}#hHT@(SbZUId+LnK9)O@lmmO4*U6NRM}tlViEY?`|SrR z3%S{%@F`GZ`!#T+sRTCLMoqx{VQRso@-Jc-1^;W{wfLh4$^Iw&-UC&gx%r9A+o$WvWbl$sCWz$<@;D^fTSG8AvaUEL zw?niZ%ySOU(@@>ez3~!%f?&z{QcezAX|aT~E~J=?7v|jDPb&0vS=`-G$?VBA<#0=y z7YZo79laUyFzn$A&?w$*sm`4wz2(OxP+=D7MN?X>q)ts7k>y=z3!GAceRj9IUdM<` z2bm%1D?%|B;wxWmWUUC4rgzl#*<%r8W!zDo_t|GgD9m$nlx?pbW3~5NABP=wu4m7; zBsj>Kda~R|CrU;`tTH>cN9~zoAJ;O24PbH*`PReF=dUPky3Ke`?ebqj@kOhw7{5;vN z)D^iEbERXRPF(Hl95MkK^>mA1VO^!my($)3M~O}ah(}fHvuX|sfcf;T^p|5Mo|iv! zR(YD~iF!9BFu$oP)i&NY-d4?tD)=NH$5AMGq&=Z*s8yU*C}Q5LQ!2v`Ysl|14l!+D zsUKL#*=!@K%Azd@;ZgyY^kj*=|1|RBu{10V&sySbwdc^w=>PC494`;K%30&Y>U-;1 z4CFLe4BcsOcQ7{bYvMy({uu1*-(L8}F?lbouw8H!W!aP_yBY`^*2cb~zd&!M{}a6Q zFr!TnX8{QV9>7iytL0eBw@ZV(kUi@1Hp7kisWD>w%FvrPA2kYj+HQAVWp8~Q*Zf!5 zs$)n<5L!{Zrv?2+i_(yqZMyn&9ilM#_OYs$y1E@(M0aKRNXjc#%VMEu3Qh*JIBfRb zqGuV0_@k+&zaP-WD&_AP@w-&~A35;DmERA~dcroGY&RowNV4m*1@-Bj76bJoNznSg zr#=B>Wer*VB)Vc)fB0rzww;SL>uceA$c@Yrvw<_gKbkwbH)7h~;^hZ|Sz9xUe z(;6OH>^eii*E$Dl<+noancn)|?@QWw3Mcgo73=@$_GJ%&Pv|O zCDR81J@p(>SC)#!oB5T=L7!DpO7qF#c7Lx!-6Kw9=w1@flWSkA$jT)7q=wjS%qC|6OM^hS4l(via z{qg7q$BTKz{+bk9%DyC@YzWDo|0Nc>9B;%Ks(zJ)`GGYK%Y(%2IfAs26hE3%8eV)Hp3=(tLgn33B)KFi zAUyO8z&=P=&-8I~7XfTaL3{e>a3N!H>)vX6LIZ)s0I~0Gq34pzvfT0;gr5<)Fck2< zs%WiFTo}=IMf8`^%&G@5$A7iWu{GQDQO*A*lrl(dV|V&+wdP=@)d=B=W!o)k7LE~_d-&{ z*Sm;FdT!_i=Gzi>cUwHnS=y_q>OZ{Ps3hD7`fb#Ic=(7__~hGH3^d~%+W=7l z*H3S%@G+MUJ5bukVEBIT0yGsy8E%9-4rxrSR^a)H)-MyBqWz1^5wwa$_-NICLE6_< ztI{+m9xw}4Yy_y>_$2UROdvj*-HDesI~r?&$2Xx`N6kDJ@hSV7BjaoU#$cf!>H0ktTx^0#et&{>DU_XI>lpb6?Z&RsHW(8LAvaye9Lbl z@W@CBZxs`%j{WVjMBD%|Ku+)Dd|p1>s`9g z@7xG}>|Kh_w8?(l?$MOVqtSfDE+yCJZA)r`{YY(z@jRvaeJvg3WrGE_ZQ&bRCW9;a z4Qk=mI0pOzta2TpPrr^#!fT+)9dKNIVNsREqnSOUiCa(mEgwkTL@>o zE}p=;Z-UsR?@xGlK?dLc;zB6Vy5=HqPTlAwNEv^ohCQg3;eG^aLU1CjWUmnT4Z87| z^;?D9ZF@tyT=Rse1&OmV?k8e#s?VaY)e1C>Aova7wWii5gq24paq4mG5U`8P>^y=b zt1sL|8|*tP&TMgr*?D!5)~zD4r~Wv{ue~Jsk7fp5L22r+TW#!3xLQ`3 z;F-LxLu-UVk0D+DzGFL9oXdO;SoKbI-S2S(_j*X%s0XdjL9?RLYn7jq!UL}(rCo0P zH)!(1PN}Qtvsfp${?S*XFen9w#PT#l{r!w!tk6%Jj0ef1@!yN2s84bWpHXg@`~iA0 zx1!wDKiNKY7~aF~EVM$ZHx&}kOBMM;6JCL<5{8GJXjKwCM^Z0PyoUS@L5Je>RI3U)P9%<5xSmE@^1}8a?K= zA$wrPkStBJL(8AbqcX#^M822?6QiBLr2rmu?Q~8>+41SeM8f{O`o>QEkASSUJcn$f z+9>*A2Xes&`3Lja_`VqVY|!FA2^{r`EOiy(oZtvMp3Fd&}Y)1lA!~YMx-_g`P z#8L;vASq6R8^{0j-4@6)o?Xlc(mA=!z=qp|Ct=z7nj5Wx#WWWXDY54kHM5`emQzzs zqf!G>y1r8~3u76mWfjKy&De9ij-l@RmLKPHv#gy8pIw-R`+`L&;L>VurwQ=1^Lxd2 zNTsLu!{fd#^5RdX(69ggM=N&tt#_WtYtpc=e01n0v3!{QxbWqutO_iQp_#Mf9890~ z&xK=r%^POoIUOsY&L+P)E*ZEzwn*O)F{q5_sDv$?(C0Hw{a50#qy z&Z-h;RO^ACZDThU@^m;oz#m!3l64<(2ybdxTG(}Qh;LW#wI)+BIdO)H=+Nu*)pHrf zsytChkHUDaQ`FRjiC?*hHtka+q>Bd-1Z(o%mI#v2=knkpJgXxMBJX1B){V#~m zaPU?_tKRsd6PFBa2y@B5?pJ=md+0f0m;M!=u~DloQ^Szc9rGO)iM6m+3DQi=eHpcPgX`0I(QT}N8vgxd?I621MS=^u$)l+b~x zMe3T7>s}tA8in@-OR&cy>+!c84gDe>?OTR^nvsd>fOLhHGZpmFTf`WH?PH2bEt48IVT zs9=wQ>?EZrix8S8uD&#;gAgz#BCKmC1P#@jP;IS9L+7HUXc?qk%Y`43>(_@EwrL8B z7xrqp6n40c+IhQv`$!dllHZ;k1#v)v|19`kU9g3o(+bXXmJNTDhC88$`Y(c4`Inn` z1X`#8p|y$gny0y^*qqOv$pk5C1Ky#R$S)M=eG`4un9`zRtmhf3WlWq4AB0D-5+&$0 zF3NdB_eQCxT9nFxZ!G;hbIb4`6-|`B{$!3?qTP+#G-ouOefIwAG>iHy){OBMXBRL8 zDh;=t-zMze=2)H*w@%XYKhO}oWRU*Y*_cwKUyix@lQg7hSeBNM{an1jx1?WpFfz-b z_jj{1$ch!Tr6Q2#pv>4FJo(3^y-QfQ#L(!S2+SirN+jpZ4ICC3tYGpqwbHP+&eVY% zkl3MR7i|=(!i}=1br6gcyQF)<-D#Yw;tV}k&QWL zZPHo4Od$690)Pg>{V1vyg)*xD{5C(b*%CV=DCQl?q8_@+JIo`MsJi?9d@@xi97{VW z^VaJ~SLOp8#&D2v2K!!~+9faWMgaYi!=Riz1;6lU%8>lC(+JKDeYd)WS1ToJgjWxjFtBe$Z-qSb=SQnP1flgRBT zs1S=Q%hpkd?C2LxcPhqy#`7M(FN-4H((tSk=loGCea(oh>>Pac;)q!3UD6a)%mqX6xLc|5kS<5J z$=9vT;o+mV>0;Xvy5gMOK&#>@VhO}z%*28GsHKOmCT%m+>f`l9x4dpv>x}y98Mo7T zEF_=b(|H-CSRpWz{(@<|-(zPo+qI|QO&0aZ*_+V|#bud>#h3IG{*F{7hUmf9I%lQ) zj-pIMsa}kyomEqiq_dnw_G0Hc1_inK*W^6$lwN=Ny<%{~gyB!Mzm z(jwnkN!8cE3|OG@Dw zTK3*|B5{uM?c#g|_`T5l5*8UJFS2=zt-)uDZ58?E zxtrUgsyI%6fU-n>shasi`&X&W)L)4gl{_wf;X$9d&dl1q?5C?jeyY()6W$XgyZaDN z{g9P8A*~jYY$jqsy9cZA8Od@5jqG*n>o63|Sx!-_ll}bln4fbef0|<7JKUvct>ILn zg6t^n#GIY=dc2S1EI$ZuPcw_25oX*SGtbbY*~QN+pY4?%THN(ld z@@K7nrN#`8ER&|+qWU?$X9;J~>88x$y0d<`*#PmljwFerfzWZGg!uih4*_ikm594| zI}eY*=f-X|YnNJHDVu8dg404bzVwuQ$M5EwtlP=Rcs5xbY3z|GLSxn}^MgVF3a0{Uj@Tm5lE;~leMR_P%J0k!BXf1S0CN=l^wt!6p!zI08@F-Bf~ zlWd#b^}N`H;>K<1kq0=u-tNO>bK`Q5HD@_yV2YB*YuLg%RTBM5Mwz-G{9WXI>J?|z z`ZLD9uu1guCd*>^CSTW&-ga9$1m7hk5)Oos9JE){RSa-X)JHtd5RQxqCML%0NjtV9 zWTv$zdw|MYFYOO#dIDAQvApqRIB(Uc)5JOWjP zR3DIJ562LcLb&Cmgs}koZA&vJtg>G1?4~N9R3*VNh*)XdFb+dhEEoKMFOStFml{jW zD?^+EI(%$pDB_(Ev>%+K@F?TzS}WT!KbtAkr(^9VG%GxuUaK(Ng54jT>UHD{v)!^c|ce;Up~*_E=iH)5~lj3ok&Qi}u|)BguoY!E*>D1&;3*=jV)W5P-e9^4}Yl4j2}NdL<* zJ)Qb&N!`5wE8+il?`+tsuXWwdW#8OJn>CZz6Ef)lg(XJ{+S5%s~BGN(A>z1!ho zXPff`5`{CHsTqTvn!slJE^?}L=Ff8U8T03*5k6K-t$M6OMpE37jc^3nDTB3ELO&l% z+9^$GtSgYnwj>wM8X}WT<7prLhxeF~R&^Yj6Ll`gtEmI6UGYhj{Rm32h|b@B&mlxT z%JcDiOXaL;iS_q7e{A$SVKKVvkLU~#ZXj|FTFL!3!lz(VLF7^8$y)v1u66&|?E7DG zhIBZu?uqr(Bw5tmM7-L$u&Z*RaCYlbhK&;^QK<_2{;K4Mv^y?jl1v7_uZDFyigh6v zlje)RqY+45asE~mMXfX^nz9-*N*Ma}K2IX2=8KKY9J20;@x^~!{HD>bQ6Mm*^2_3w zFWS;7nXq5nsxKXA)OnU#ow^bvyH!pT>3*ii-r9yX!2KTvEWht zk0%sdBYD3gRP0Cak(P4fNJ1IzOLjf5z?J&=@%l8?w?cFW6g z?GP?YDk3PoEHRIhMNj(c!U(4W*|?d;fv10DE_!_?)Y<{#Vc z))hm~mXKF4>?QPiYOa@wiMoxZjq!UERPBg7;m^#L&Tb5|Um@LLe!z9gDg2$QN76cR z=#B1&Y6S%VW0%y*>2S-|P@#i1mhakspRj&kd;_y3X z_1$?nJk!egE8AG%+*mJHaZ-7-!8f}{d_DPw{AMu$gCFTbmz*{G>LgXHxi#fe|0!^n z`~@m&ZInd8_}ukv|e^uHYi>>4wfd|t#%m-t6BmhzPnSwCP9U&*-KxAJoyYhF9d zTFog!rV2hv(^)GQUN2|XUkG4wDV3-$8a8?0Yd&D4t*%Gu#Dz4ju0{3GskQzC4VASs zH*T`;nr(XO*0fZ z9_L+CQ4z_tvym(6gOIN?<1OpgQ^p%HK!iZ2Xh*faPV7tP&LDXgAu^C;Pzx zUcftHTxPF*MQ7%)qY$I7h+s1MQ+S zM@>agdxFB3h<}uv{R`|`&WH)+wZg)dERq5;U?sh4pNNa!$6&57o~OBv(-X;*uNpBg zST$_z^}le3X8*L^seh)zt1S8V;W1~ssmy(g-ZI8)x&?ODe<2x?-jiAw8-nl@n~f66 z5^?1(^NK9^&C?lZu_;%4vo*UPrfQ~PWC1fa8d!38%tXK?bW9y0+_USwPG^h)@Yvn zkhhAiJJSDdcmKl^i0g8gx|mC-|Lj|R_DBoWF{%S$Z{eaf7C^oIiphy&H)^(xwdFqB zGI`)JwA-`)z?Hoj4q4%vJf41}BI?}bW4|JzSn0UXDluHRkQy<(g(GU?bY)?SIbYn} zJ0cs~9s=B3GYm)TAeQoF8lNCu0vUH*Uc=$OM6h$Gmb~Ra>r_*B`Mlce>0rd0|L`6$ z1nb}WS2xyIHiUY-`nLA7lLggI=tNRFkDOV=N*ysY=q-q*UP@B@Sn6qAFxfGQ(1}Qe zGj5#TvA=lTJk{|Z-p9_{ClX`KC}W?T|HU zuwT1nY}VP;JF9bS>AVrHx#px=~audeBgkXz$IJ@xgIgU zczy#3_2Kc%>GNRoQ0Y9i`vE6648MIh`AEEZ93-S%f`1$Fwf|5-auyJv98BPNp8I%2G#rFSelYN*$TUieBG%19;Y zy9KbI@7WW-+2amDu)73>1Wg2DE%~;fa1$1=Pj*v*?NGlj zay+%|Z2Ym<>fO5mXNNQ|ji@Svze5@U+dgfxZet#(XCtehp|0@!Z#8}Ha(VM9Cuc{r z<902>In%>%z9m`PCklw85$l%N{A-Agqe{PpRlL?t=wRI>cd=RYe!qX98sHF&Z+x=6 z2p~LHN?Jx0QE&7aveJ;kS8*}BVIz0S@WrLp?-KV9V`;N$g)Yh?y7xCImi%uYj3UUc zmBfXsy-&PsJUki_UVSTd6`xyJkh^@oT-$N*$hw^e%o^L*_Rfv!=huU9H<12KhLNT6 zAuecit|QScanpI{l(7f~SL|{-KY#4^M?AHEV~tGo41ASSe7SzmWz3}b&8Vfz{$(2j zeZctC#L}koP=ZkPM3U+y`-Vs&v*2<_v2u$qbXW**{~PsW*(HBsP~XyEJ;f>*QID8m z2!zKh|5IMC(V&kBXB4HojFQxdVIm!&m^ecO+nG~^|Lye8;DtPd?s*hYU8g-({3p+H zdBWX2M0;mBG=_4!aEG5t{H#TC?Q>%G+WR&_H}=@Vf7_fFS2;*+6#LL)tpqN%!B0`e znj?b==28v(l-2q{OSOH|!@020sA%t%y8fQk?|ZZ!+)?p!b}N(`5XnzLn66 z>`_c**_Q)NE)n`Pve3sBAA&)en$bkUMT^!pF4E!*r?6Eg^3GzNU>h=Lc3&dViQRjY z)ofj#NofV^t7<>gzlgQ=4GMq!+%RQKdAdk9=9r(f%U+5BO8sqcEgip=UUFgFSbEuH-<+SQRtE^yJ{c;C4NR30{q&b? zME4g(!fz%f%im{W+O#|@k{?bY&!Vd0|NSX(xuMa3rk2xJvT{22?sCN>8XZ5k%XT>} zeDc0Wo;_}%;K$x1z^ERlUfA&eS;`q(ajDaTx@e%Q384@vjkeE~IeGWa=nBx+$!J6v?Y?QbRmmAF?C0pgV-^{MHsgO~#XNi7=r7t6u zQbL0B10g)dszH@!@2(zY%Tn65eT8QxT+G#|mGLC# zh2PQ?H{tJq)52YSNum?~aqp>QQ77%Ean;HDW2MifyU@viV<+j$*K#a`UgNsh&;yI= z$aM&>!;&kY2u;eic3@Ox%^CVnXY+(l*HU`XqhGg`>4oEk^3y*u1Ub~BrKdxzQ>Wq4 z4k}VBNuJz&F}H;)=9lmr>4#C5a<(n4R*+j|z9z~W*{oITL^N&z(Pcfh)`=MTByonb z{ORLRZaj_ChaKLlB8aJ<$s z19bVTmRNrl57*AJ0QkpXh2T5F|3jZ+imXll!`q}lIRA&ovhUA{?8s1&C2FA-Ro(mW zT%=ZHZ$lbK{bJe|Gg^LS+w&h@$*9&1oe>|e-1J@EqnNv3TD0RDJ+7MaVe7^z1au76oyo%;@Z6Gt)_sFH zG$Rw3xZ~PNht7|L_V{S=E*%ASYTh73VV9lf@oLV?CC;;~kQ=bYp_8{(Fcv4%&lkE7 zo^;nt34ncQ4I{HPJ1G_ZAHsi3okuJ&0EsfurKwR{Ooa={Sqot5fAFkoWg8@s1Ij&UoYplf}HShn?XR!=-M z%)`wiujweeRU@S2fO})JiCpQ^AHIPAFrQmQ&(w`IfWnu^y8xy$79#Js|GJZL;;IsG za4Ezxr$N4(v*Vi9pSB)0OK{_#c(5s1;^6FA+cc3!x3YKTK>&)_RRXw)L>+LLfQL zC%6f(JjfAiE$vxMx$1P?!RykdV4b3=#-IWmFq;CWe>^E1j2!a70pfo>U#P63i+ye6 zZ!}?qv9sJQB&(i5WgB;SC59U}Y}CSSf2X_bN!4|lb#ahYPq0IMd};6Z0-Pg&osJsW zlR0L(-6NpcsP>@9abwN+7)WFDkOCmmqc4zEN+;$oXs&1=%>-by>QNt&2yRIA2FEqm zi9NpN(%;5K-9`;NtI(|Y_^f34#Rkqzsx{uK7V_BP&l5Nrf6br&qBo0uuhS#i+DrKwCv4eFWn|zxODFWUWVLJg$#XZupDVVx54|GIp@PwkIWcDAb_nL?t*nfMWZpY!pq(Yy)u{k`7w#PE{%5DAU$W5*gzKES^tI_B=>w);)-S>2Ep{I;(QxP(-iu6j=!kHPrz)&W~OR(|gv;Yygazyr}LZ&L=}5nM~%QO92N)TE<*~ zM;*ubj8~^6BFjg7qxq0naRuG92H24+u&LV%U00sW{)cz&cG;3C(YtadY8clzC>upk z!%JcP5@OLB&fnAe?Z_@AMAvR+oe%BfAaYtdy3_i6Zti1q7IB(ums%9M!JF;iRqH{f z;Q^)gT?k@H@ph=y{)fr&aUKqDanl$6@rM0!))HcUG>#9z#uMF+`OqtE7TGO#VS-!B zi;ma``SOdu4l;gsq--t!;Q>3?d6)l;Ejxq!7sK_!BLdq>!YUB&{sd>Bv~~Wg?PQf2 zsyuru_ED!^M9g7i`pxTG=CKlj`B}s5So~=Fx3t}|@USZAq$p+Z?fX9-F6dmVnnd+N zTV|3;K6DA!U}=-Gv$J!WtvH_4&K$TMhGWB=t|D(_wQ9;geOR+&ql(*qdaODEHFvrk zPqAx|FQ!H=dxJzwgc2CP(hJy$TEBvO&+Z=FN)=^8N1Ng$cx@;-TQ{2dNUYT;;! z?N_F}|I_BN>M&2E+3)ibWE-9E_gB6Gp;wktNR=8lfroKXse}pW9Ju&zkDbn%&s_a% z0^Lt?;O`VRWooMmbx2Q@XVE>5+HcI-6)6KdwPMHixavVRTaU>Lq*y|)g*x?rBp;`~ z`E72Q2HjYT>H?7zhR+Wk++-P7XWf1|gjW^x=f8U&Kub$~9e?D(S!Jm0Wjm+p3F=#% zuHS#omuIj|lk?(cGJ7HXjt*movHu7VaAvxgSYEc$U8-QP0Mw)aq`sPF_5}~>Zhh3c zyb|g9gTe2$^;)5taxJa&Ee4|3ZpPWcr~O(xGX2Y|Ymi~EnuMj;k?zIh(J+nC{Q33N z_tI`e(7xZhMq+}749+nh(@P5=0RFsv*?4H3A_(h-s=FV{7HU5EkWFu(V~yIWsr@s4 z#s8gGGz0${YD8b&lWa(pa#ey|L3TdyBg|l`71?x>qVDZF3TStWy)rWhawX>Mk-H^# z=_lJ}8*@xD*hJTd!w>WTq3(Lb(wl?GFF#C9sDN#l01z6OPR64r zxTb4KI^w*;T+$smVxx%5S*;UkfUIjr1JPl>bVx#X7KGRV@I4XE{RBeIB6kD3LG~Yb zl%#oXNf{?y<m&A`?v%0H){vRHnR#JA%wyHa80BhXkgw4MGQe2lYgB?_-9LN%X0N2-usV?In zE4G%vAHv+iCZ83#<-I!Q_l%@dHT(p+Yl*CSIG#_^Z5;wEdZd)*39QD?>#8?uLr1gA z_=N~Cm0cN-od!gNh+3)ra{s=0=ZgUQyA>pkF!IQtj5>#w_Ff&$t?F`z3^ibl3vdG`+v^0t*PgVHsA;MoKiErKUUwWk_!~o=`Gwjr#WTv)5h9w zM)>!WNN*kW@zdq+Q)SMJ113jVH>#>%8uy|Xh5-2PME-`uKdwhA{w>#*+nisMkS(phN?}^1n9P$$C2?a$ zD%Tx)`rH7jXGgCgJvsc!Z2%XjQpE+uf3|1B=^3Y52L8BLx0|IF16Qf&{sVE!C~5nCIhdvGVePK7tNckNrQ^j;W9_T{Ey%v_o{U{ z58RRl+Sh;S?&k2sOb_N8e3EYaF1ECLWUJ;Io6Kq_vt=|FDt_8I;Dd!N+Lla% z$?t)U1}&H}h3Os7^2cK-I4Ok*E+hw`F*uuZ_Q{HH+ELD*)=pPW?*TVocM8&#d|GG;6Nx}tTYyaW75Ja9f&gF8{$y$@DxGVQ< zXn$S~AWF-)k#8#|Y-3H9h3r9*YqjPX@r=!Yr*!Wd?$t%{(pC3PP(MkjrMGMSCii0@ zk(~o|lDP5ECE7F>8>FO_^5B5S9X20rHv!Q~uR>i?pIt*6vrg*g1*IZs2%_}=*nY-a z2eV-A)!(0Bg%S_Fku3%6&Pp?x1ZfGeoSvXS%}!IZn!^4M&xG(Hp}kjy0K~fH{MW-T zVT{{cqKb<0#JnG5QPQ^!nkvP4YXJhUX}1%|U^)VCr%R|Rd+?T!9jFf#&^2Un6<>l9 zeR}=Y`_qO-W@~Zoirm>J^A@kr$3?U*Mi0NgP_2=u4@7h{xXF?+I0g(WbSG}h5P|zY z(?{18{wRPaw~DLiSLGWl<~%sP(5&w>ymaq8{>;ERPB2dLg#ENc;-Ec)))!H3)3f*M zi3ljrOSz+F{y=+)ATA?exX;k1{c?jfgR+LJgnHZHGU`A~|5E9F+}&T_RgcKRr2{h7 z{Qj(2$7pDelFPQop7E1{Z;T8l26oA&oi$9VhoyPd59VY~2#8G!__ZAPy`X{HNDH@^ z5xD|`wH^YRoi4Zz#UB_(d20d`WjT_@DWe7Gd05Pbr@$K+sa%);!=t269DCDx&mryfHxhjxcyhZcSF|R<-c`3(4d2@w|rc8w+iCn?hR-19Z|q?l74zotCmR1UrJST0|q**>CFZdT`0T zj=usGgi1B-Dr}B>1q;O-Np88oRdb&m*KoPb)WuP-;n+p+iF0S?6?EP=KoO*g^Hn^s zd|2~r>27$k>e=i+$7AHp=49vW8B6G}N1CIqHyBhAc~AtzgMRcy5_5|1H1#|mZnX4w z6U$NQ3MddD^O|4A;wGg2!_#5op}o#pg$}X_wXY-xQ5O^o7aGVmh;V-SHg46gQv-)) zUQcEE&YMuZ)Kb>zRG84LPo(4+z9kcg8f)>#Kx|tHhHGy=ww-+Hyezg$2wtKgyQS{e zYM*uoON=4)<-Lp{2_e_b=KJMO{==&+hTL&(oC@*mIUl~eCSd4BmP*Bv{&j320gn4R z?{OGNpb4k}le!{$`t;dGOZ|AOu2+8yXpl2Qs@Gcp4y{%3FmG1ZE<=rU zn;fP)Yv&kEnFA+ZZsyjDcG;S3E}}3Zt9~x%A^{a1E?E91-|gnM&@(XFLbX*(_F(ZJ zheRMEzZ6<^$?&_Ja2q-;yx+QPjLy*`nV=x0rf}}~F=y=xX9!Zd)uj{T( zJvpuRLnmGeUTe&$b=laj1-y55_-YUDd7bPS)rHrRlDP+xaM|ZwA%zkh?c5Eh`%QR@ z_V=j0dD>Yz0cEDIh=)~@E#>)7{1iDp@Oqhrj)$Ea9Oetd?KQ9cet~|KR_vB6=-rc9 z)^erU5WXl`5d7gsvoFG+>=Oa)Ir{<4R=?4CmZNZ}Y|8oG)s+D`Kl~%>E}@C_Z$K#w z;oX3aT7yE*wGQ2&IQEnnfbNaPQC~E4WFN|k440v9YmM=+Cndxo?xQ)!Cac~toqem|8+9sg6l%Rz+W^?FbC|kFLNwH!Ek*7pfsNxfC z8!Rw%=`r_mCij}=2Ea@|B=hZKq#r^oGq;cl_?by*^6X|UpF@rXj7uk3!51Uu?3ouR z0Y8|r0QKz_Vy^Hug5^i&mMc4OFzmk_{?2k2*CZiv5&HHdgXHIZ4M>GfBn`GJZf}>o z!SZC#*Dry55j2!D9ZUc?6HC+s%MjUm#R=2|wF5iFQLVSMK|#_FVNjRJf32yRxW!783Km**?I&y*2YP{VIXQDMJ)CHpIhHr zp_7pKA6{sSp=J0S2d*mkTnXc*0EmUvaR-!zX}3w-0w>ZVI&9{86o*tVC|z}m3n&?) zFPIa_5;JyyL=+HRS(m?ylLN7b>C!s_{Cv82-`?7K&=Hgan>LF$*S>bh#~XYR>Ct6% zb}K9Idry~4+%Rfj@zT7p>2b?j2GJL)xIUnu*U7#e`T@PtBail$0mg+xw;#uPIcnY) z_tL*rP!?@<=*a|>VZA1ytc|_F-x4}u;d=!db+&y+m?eX zP(<*#-eqys-o)wf%^eRU=ZpM}z^#VtSKJInp21P9b=jo!A|US&LE;p*3_|8^tq9;ZHq`FN~{00dY`5|lC>>|TG03Vf+q@6KCC1KqV=nO_5z%kw>(C&`chHNA z$8VW5C}~?oaN5@=)pID;>l;i5;%sL+(ke9c5`zGwZrt?VlJ?G~C#3-e@sG#SzN9|( ztVH!;8F@F7V~}=G1VQ>pM(Z)o*`&l+|EvdFErX404TPT8u<1)cj}hx1d&&%saa6#P zIhtu9@v)hA4EKf+JcaJk_?h`3L|@~^3hx%tw_SG;!8nuKM98XRmmGb#|J34^S{Y#) z2Yn=^*Jju6w)J>@o)zm?A>X$(+sEM))>iYpzjnr5@@!2#fx7)xVC;rqt65YTx*4RG zH*ZYN-T#Hab@5d|sD^`r(`_K)Q!e$-jKuO%5bk^AS3y59BT)X&g7{oQc4om&No z+%)5Vl2@3MB4d7)$uLnJ0~MjBKaoPaVc&&79Vy%*XvqHpbqtF0TI+oKEMv?{Pqo;t zeqs0w(e;|&^X^aNA5p_C>eF8{oHk5Uanq+5H6QkSlaftz2U4;b#!vhPqdKLyI1xAL zO;yEz&$syr(7<)AAC|w7lx!c4c=}V8$JhB*hxWXEJf;WgDTi1b{^(=<>U`L@_CFLZ zOu2u{-@%l=!TsF(@kiKX9Y2*_8nbhVN%|Ua)rUER{&aI<{{WNmLCcr_0MEw1?bc8> zkCWDz)@(QmTi&(Crl14loMYCL`&J@<)f{!}Nlz2}pNbo&fw%F024EX$GxvW=KFq)z ze|7ceM}=#N;PBY=5cp2FeDC7Y@7_%1G@cG_)f9ZLms902%Q>MQd^D4+zd-%R4YZ|v+0(rQ06+3`{0OzxdW z2~|yO(~A8MQJY`Vj4sKY+<>e|EuO@5uPM~^8SV^#FcA}-igGyUGuFB3Lv5{)IHOsA-*8WbY0EUS<(e=OCYsC|WSayQiXJ*1<(&SpzR$*id? z^PUBFCM7>y^`0a5V*`^l*>&1SHmf=(q(EJ;Sb6;t7eGbaPMnI#e_pe5@l~|9Lw_4*Z;oG!hj8{_vU;B$7X$vF;OXq6Y5=0gO=nS+#hek zzE-t4#{AHJyQB7u4l0FSUuRl2X=(7wwd{6K>H#s34;#2VoO)-qbP!&~U0WMYGIQ@- zf}-!-6?2Zb&07tI8$dq&c{SlwqfT2chu%@d){U9>%;o=5c+=gS8ANcJI_Ejgj{vEH;{fy00Y7^s#e!ty^FWDCt!1u$J3=^;Zv=SnAD{8O_zjnbU@#OJl;0_)fBrnb#m&gM$}!o z@6^@-UCc{oKU#%H8S7S1IqXGt#+)gq%B*=cE7h#mJe%yg4_H+8_N%FEr=tF~Dnk5Z z@mIdpZwUE_C)&B^Qd>st`5ly~Q{Hxp?!=DB`V(4$J9rQmY!ExwIXWSsL)0jkWGprf8C8BZCj3j;PV zr!{SDB*sV;o19bJ-ZW}UXtOXO$3M=B*!wd70C{Mr_R;QZ^=h4uKl?<3(y2Y%qdW>I zuVOKc_D9Q9oUFa)_mpJRZbA|W7&z%oi&MK}%MSghqP-~6r_1n1e#ea}^_0JfExWQ$ zw_O*vi>_iqqNCO?#{EF;%L#yVR5UkgSpra>V1_rX!B0^P-BDl4h}O ztwoJ^Jd?<#uo+(cXria>GMB)=uA#JZNO84zqKW|}sODm-2&aSmjTBUu{{R3)JBS1h zl&W&4+ocpy)q>f4$w11C`cehpa(WslsqR-{4+5+1JpBa}Rm9F)p{!V-Iqy}3jgmdH zMHRA2+Z^(4>t2Otk(M&UsRpYoj^R#mmF-0pvPk2o+LG6yO5#>9u{g@$1CEu?-7yZT zI$)AAc{EX7l(+lO9~RxdQT)oYMG_)Dz)msqbJY9QD~LhMZ*h_j4UBQxiYu~{ci*|< zVq+B-WV(Jv2%h00W?7sP5Ahz=jM|={lE)g{xK;qSLQY3~iYTvMojP)E@lSo%k?@$z zMj{ZW$yRaEZ6>#8DJP0GW(o_ZAMDjz&2vzAxpB*L?}3^quBS$dYSiMl=#QTI_BK$d z&55e?j`M8hF7NK9QzJjjNC)z+a^`1jWczW&6jt#`MOj$zr8&;4a+7VouIDvBIX?Bs z++*k9b@ZZ&%1xh1gWViW%Mh*xIX;!=m&m6kiYvy%Y<{Db=+Wi3sxW=)gqn&g;&D5l zvS2;}Es7eQlbmGrqKe{2vQ6vB#qN+VkS?}{iVC0d3OMn+3ccO}(q99^%RTvCWMP$y1bS=XIXT5hCbP)g> zXzfK6=;2c4S{_bgDSIcYJ*L7Ke68MC$UIl2>HSuUEA(74R$3o|W^KNEyV;%9sU0vY zu7@0PMHTGC{HqzeHdVF}fH@t-c3LwlxeSVOjg!bfN+_j>(vvXC(sd&FW#ypAH z5M12J8WNy>RmsnJa_R|?@_TVb72ku5TDywhvE=4eDkhSXO50q|4CH5VqKYfnvg~}< IG`q9^**M{M3;+NC diff --git a/assets/images/16.jpg b/assets/images/16.jpg deleted file mode 100644 index d58061114561c5a4c0763576ff996016560cec57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84026 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 z 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 z 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 RGat*98O0P))8-_9|JhaK4#EHc diff --git a/assets/images/17.jpg b/assets/images/17.jpg deleted file mode 100644 index 04c7c6d2743f21c8fd6a4adb8e7c4d1fbcbe2ba3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82673 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%0DL9mdph^W}>H*)d{ib~4b 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 _Uq9%$>O(d##0M|GTV_2r%~(c!qY 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 ItxS*q**2Yb?EnA( diff --git a/assets/images/2.jpg b/assets/images/2.jpg deleted file mode 100644 index 6b66d8c56de622d5d8683bb10ff24ee1cae9e583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65754 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

      + + + + + + + + + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000000..bdf0a77a57 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: /mothertongues-blog/sitemap.xml diff --git a/site/_config.yml b/site/_config.yml deleted file mode 100755 index ab5f00af2b..0000000000 --- a/site/_config.yml +++ /dev/null @@ -1 +0,0 @@ -host: 0.0.0.0 diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000000..65588caaef --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,19 @@ + + + +/mothertongues-blog/welcome/ +2020-03-17T00:00:00+00:00 + + +/mothertongues-blog/about + + +/mothertongues-blog/categories + + +/mothertongues-blog/ + + +/mothertongues-blog/tags + + diff --git a/_layouts/default.html b/tags.html old mode 100755 new mode 100644 similarity index 59% rename from _layouts/default.html rename to tags.html index 3fa6a68be8..1fe4624ada --- a/_layouts/default.html +++ b/tags.html @@ -4,36 +4,47 @@ - + -{{ page.title }} | {{site.name}} +Tags | Mother Tongues Blog + + +Tags | Mother Tongues Blog + + + + + + + + -{% seo %} - + - + - + -{% if jekyll.environment == 'production' %} + -{% endif %} -{% capture layout %}{% if page.layout %}layout-{{ page.layout }}{% endif %}{% endcapture %} - + + +
      @@ -156,7 +181,7 @@

      Explore
      - Copyright © {{ site.time | date: "%Y" }} {{ site.name }} + Copyright © 2020 Mother Tongues Blog
      Mediumish Jekyll Theme by WowThemes.net @@ -176,17 +201,13 @@

      Explore - + + + -{% if site.lazyimages == "enabled" %} - -{% endif %} + - -{% if page.layout == 'post' %} - -{% endif %} diff --git a/welcome/index.html b/welcome/index.html new file mode 100644 index 0000000000..da3fe0e5d8 --- /dev/null +++ b/welcome/index.html @@ -0,0 +1,385 @@ + + + + + + + + +Welcome | Mother Tongues Blog + + +Welcome | Mother Tongues Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + +
      +

      Mother Tongues Blog

      +

      + Smashing the lore of language technology! +

      +
      + + +
      + +
      +
      + + +
      + + +
      + + + + +
      +
      + + + +
      +
      + + Aidan + +
      +
      + Aidan + Lead developer of Mother Tongues. +
      +
      + + + +

      Welcome

      + +
      + + + + + + + + + + +
      + + + +

      Welcome to the Mother Tongues official blog!

      + +

      Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization.

      + +

      Here you’ll find small tips and tricks for developing language technology with a focus on Indigenous languages.

      + +

      Be sure to sign up to our mailing list to keep track of new blog posts and any events.

      + +
      + + + + + +

      + + + + +

      + + +
      +
        + + +
      +
      + + + + + + + + + + +
      + + +
      +
      + + + + +
      +
      +
      +
      +
      + + + comments powered by Disqus +
      + +
      +
      +
      + + + + + +
      + + + +
      +
      + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
      +
      + + +
      +
      +
      +
      + + +
      + + +
      +
      +
      +
      +

      Explore

      +
      +
      +
      + + + + + +
      +
      +
      + + + + + +
      + + + + + + + + + + + + + + + + + + + From 8e91792282b3549a43dffa9b3e105c4329ded18f Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 14:34:05 -0700 Subject: [PATCH 06/43] updated release --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1caa0e6115..91a1517035 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,6 @@ script: - JEKYLL_ENV=production bundle exec jekyll build --destination docs deploy: provider: pages - local-dir: ./docs target-branch: master email: deploy@travis-ci.org name: Deployment Bot From 2c0c5b932ded4a415820b6d2b949c850cec4a568 Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Tue, 17 Mar 2020 21:35:02 +0000 Subject: [PATCH 07/43] Deploy roedoejet/mothertongues-blog to github.com/roedoejet/mothertongues-blog.git:master --- .bundle/config | 5 + .gitignore | 5 + .travis.yml | 18 + 404.html | 219 +- Gemfile | 20 + Gemfile.lock | 81 + LICENSE.txt | 8 + README.md | 24 + _config.yml | 63 + _includes/adsense-under-header.html | 12 + _includes/disqus.html | 14 + _includes/featuredbox.html | 61 + _includes/pagination.html | 25 + _includes/postbox.html | 51 + _includes/search-lunr.html | 21 + _includes/share.html | 34 + _includes/star_rating.html | 9 + _includes/star_rating_postbox.html | 9 + _includes/toc.html | 87 + _layouts/archive.html | 21 + _layouts/categories.html | 23 + _layouts/default.html | 192 + _layouts/page.html | 24 + _layouts/post.html | 181 + _layouts/tags.html | 23 + _pages/about.md | 14 + _pages/categories.md | 5 + _pages/tags.md | 5 + _posts/2020-03-17-welcome.md | 19 + _sass/_stars.scss | 137 + _sass/_starsnonscss.scss | 92 + _sass/_syntax.scss | 69 + assets/css/main.scss | 15 + assets/js/lunrsearchengine.js | 52 +- changelog.md | 67 + docs/404.html | 215 + about.html => docs/about.html | 0 {assets => docs/assets}/css/main.css | 0 docs/assets/css/screen.css | 902 ++ docs/assets/fonts/casper-icons.eot | Bin 0 -> 3272 bytes docs/assets/fonts/casper-icons.svg | 19 + docs/assets/fonts/casper-icons.ttf | Bin 0 -> 3108 bytes docs/assets/fonts/casper-icons.woff | Bin 0 -> 2260 bytes docs/assets/images/01.svg | 1 + docs/assets/images/favicon.ico | Bin 0 -> 5430 bytes docs/assets/images/jumbotron.jpg | Bin 0 -> 1385015 bytes docs/assets/images/logo_no_text.png | Bin 0 -> 55661 bytes .../assets/js/ie10-viewport-bug-workaround.js | 24 + docs/assets/js/jquery.min.js | 2 + docs/assets/js/lazyload.js | 258 + docs/assets/js/lunr.js | 2977 ++++ docs/assets/js/lunrsearchengine.js | 99 + docs/assets/js/mediumish.js | 129 + categories.html => docs/categories.html | 0 docs/docker-compose.yml | 7 + docs/favicon.ico | Bin 0 -> 5430 bytes docs/feed.xml | 30 + docs/index.html | 305 + robots.txt => docs/robots.txt | 0 sitemap.xml => docs/sitemap.xml | 0 tags.html => docs/tags.html | 0 docs/theme-LICENSE.txt | 8 + {welcome => docs/welcome}/index.html | 0 feed.xml | 46 +- index.html | 278 +- site/_config.yml | 1 + vendor/bundle/ruby/2.5.0/bin/jekyll | 27 + vendor/bundle/ruby/2.5.0/bin/kramdown | 27 + vendor/bundle/ruby/2.5.0/bin/listen | 27 + vendor/bundle/ruby/2.5.0/bin/rougify | 27 + vendor/bundle/ruby/2.5.0/bin/safe_yaml | 27 + vendor/bundle/ruby/2.5.0/bin/sass | 27 + vendor/bundle/ruby/2.5.0/bin/sass-convert | 27 + vendor/bundle/ruby/2.5.0/bin/scss | 27 + .../ruby/2.5.0/cache/addressable-2.6.0.gem | Bin 0 -> 104448 bytes .../ruby/2.5.0/cache/colorator-1.1.0.gem | Bin 0 -> 7168 bytes .../2.5.0/cache/concurrent-ruby-1.1.4.gem | Bin 0 -> 353792 bytes .../ruby/2.5.0/cache/em-websocket-0.5.1.gem | Bin 0 -> 31744 bytes .../ruby/2.5.0/cache/eventmachine-1.2.7.gem | Bin 0 -> 247296 bytes vendor/bundle/ruby/2.5.0/cache/ffi-1.10.0.gem | Bin 0 -> 869376 bytes .../cache/forwardable-extended-2.6.0.gem | Bin 0 -> 6656 bytes .../ruby/2.5.0/cache/http_parser.rb-0.6.0.gem | Bin 0 -> 177664 bytes vendor/bundle/ruby/2.5.0/cache/i18n-0.9.5.gem | Bin 0 -> 61952 bytes .../bundle/ruby/2.5.0/cache/jekyll-3.8.5.gem | Bin 0 -> 112640 bytes .../2.5.0/cache/jekyll-archives-2.1.1.gem | Bin 0 -> 6656 bytes .../ruby/2.5.0/cache/jekyll-feed-0.11.0.gem | Bin 0 -> 18944 bytes .../2.5.0/cache/jekyll-paginate-1.1.0.gem | Bin 0 -> 11776 bytes .../cache/jekyll-sass-converter-1.5.2.gem | Bin 0 -> 5632 bytes .../ruby/2.5.0/cache/jekyll-seo-tag-2.5.0.gem | Bin 0 -> 17920 bytes .../ruby/2.5.0/cache/jekyll-sitemap-1.2.0.gem | Bin 0 -> 71680 bytes .../ruby/2.5.0/cache/jekyll-watch-2.1.2.gem | Bin 0 -> 6144 bytes .../ruby/2.5.0/cache/kramdown-1.17.0.gem | Bin 0 -> 260608 bytes .../bundle/ruby/2.5.0/cache/liquid-4.0.1.gem | Bin 0 -> 72704 bytes .../bundle/ruby/2.5.0/cache/listen-3.1.5.gem | Bin 0 -> 27648 bytes .../ruby/2.5.0/cache/mercenary-0.3.6.gem | Bin 0 -> 16896 bytes .../ruby/2.5.0/cache/pathutil-0.16.2.gem | Bin 0 -> 11776 bytes .../ruby/2.5.0/cache/public_suffix-3.0.3.gem | Bin 0 -> 96768 bytes .../ruby/2.5.0/cache/rb-fsevent-0.10.3.gem | Bin 0 -> 50688 bytes .../ruby/2.5.0/cache/rb-inotify-0.10.0.gem | Bin 0 -> 15872 bytes .../bundle/ruby/2.5.0/cache/rouge-3.3.0.gem | Bin 0 -> 331776 bytes .../ruby/2.5.0/cache/ruby_dep-1.5.0.gem | Bin 0 -> 11776 bytes .../ruby/2.5.0/cache/safe_yaml-1.0.5.gem | Bin 0 -> 30720 bytes vendor/bundle/ruby/2.5.0/cache/sass-3.7.3.gem | Bin 0 -> 208896 bytes .../ruby/2.5.0/cache/sass-listen-4.0.0.gem | Bin 0 -> 27136 bytes .../eventmachine-1.2.7/fastfilereaderext.so | Bin 0 -> 108872 bytes .../eventmachine-1.2.7/gem.build_complete | 0 .../2.5.0/eventmachine-1.2.7/gem_make.out | 30 + .../2.5.0/eventmachine-1.2.7/mkmf.log | 11 + .../eventmachine-1.2.7/rubyeventmachine.so | Bin 0 -> 896568 bytes .../x86_64-linux/2.5.0/ffi-1.10.0/ffi_c.so | Bin 0 -> 438656 bytes .../2.5.0/ffi-1.10.0/gem.build_complete | 0 .../2.5.0/ffi-1.10.0/gem_make.out | 50 + .../x86_64-linux/2.5.0/ffi-1.10.0/mkmf.log | 462 + .../http_parser.rb-0.6.0/gem.build_complete | 0 .../2.5.0/http_parser.rb-0.6.0/gem_make.out | 52 + .../http_parser.rb-0.6.0/ruby_http_parser.so | Bin 0 -> 118776 bytes .../2.5.0/gems/addressable-2.6.0/CHANGELOG.md | 227 + .../ruby/2.5.0/gems/addressable-2.6.0/Gemfile | 32 + .../2.5.0/gems/addressable-2.6.0/LICENSE.txt | 202 + .../2.5.0/gems/addressable-2.6.0/README.md | 119 + .../2.5.0/gems/addressable-2.6.0/Rakefile | 34 + .../gems/addressable-2.6.0/data/unicode.data | Bin 0 -> 115740 bytes .../gems/addressable-2.6.0/lib/addressable.rb | 4 + .../addressable-2.6.0/lib/addressable/idna.rb | 27 + .../lib/addressable/idna/native.rb | 61 + .../lib/addressable/idna/pure.rb | 676 + .../lib/addressable/template.rb | 1045 ++ .../addressable-2.6.0/lib/addressable/uri.rb | 2510 +++ .../lib/addressable/version.rb | 32 + .../spec/addressable/idna_spec.rb | 300 + .../spec/addressable/net_http_compat_spec.rb | 30 + .../addressable/rack_mount_compat_spec.rb | 106 + .../spec/addressable/security_spec.rb | 59 + .../spec/addressable/template_spec.rb | 1451 ++ .../spec/addressable/uri_spec.rb | 6545 ++++++++ .../addressable-2.6.0/spec/spec_helper.rb | 24 + .../gems/addressable-2.6.0/tasks/clobber.rake | 4 + .../gems/addressable-2.6.0/tasks/gem.rake | 93 + .../gems/addressable-2.6.0/tasks/git.rake | 47 + .../gems/addressable-2.6.0/tasks/metrics.rake | 24 + .../gems/addressable-2.6.0/tasks/rspec.rake | 23 + .../gems/addressable-2.6.0/tasks/yard.rake | 29 + .../ruby/2.5.0/gems/colorator-1.1.0/Gemfile | 11 + .../gems/colorator-1.1.0/History.markdown | 25 + .../ruby/2.5.0/gems/colorator-1.1.0/LICENSE | 21 + .../gems/colorator-1.1.0/README.markdown | 47 + .../ruby/2.5.0/gems/colorator-1.1.0/Rakefile | 6 + .../gems/colorator-1.1.0/colorator.gemspec | 23 + .../gems/colorator-1.1.0/lib/colorator.rb | 111 + .../colorator-1.1.0/lib/colorator/core_ext.rb | 9 + .../gems/concurrent-ruby-1.1.4/CHANGELOG.md | 465 + .../2.5.0/gems/concurrent-ruby-1.1.4/Gemfile | 39 + .../gems/concurrent-ruby-1.1.4/LICENSE.md | 23 + .../gems/concurrent-ruby-1.1.4/README.md | 349 + .../2.5.0/gems/concurrent-ruby-1.1.4/Rakefile | 346 + .../ConcurrentRubyService.java | 17 + .../ext/AtomicReferenceLibrary.java | 175 + .../ext/JRubyMapBackendLibrary.java | 248 + .../ext/JavaAtomicBooleanLibrary.java | 93 + .../ext/JavaAtomicFixnumLibrary.java | 113 + .../ext/JavaSemaphoreLibrary.java | 159 + .../ext/SynchronizationLibrary.java | 306 + .../ext/jsr166e/ConcurrentHashMap.java | 31 + .../ext/jsr166e/ConcurrentHashMapV8.java | 3863 +++++ .../ext/jsr166e/LongAdder.java | 203 + .../ext/jsr166e/Striped64.java | 342 + .../jsr166e/nounsafe/ConcurrentHashMapV8.java | 3800 +++++ .../ext/jsr166e/nounsafe/LongAdder.java | 204 + .../ext/jsr166e/nounsafe/Striped64.java | 291 + .../ext/jsr166y/ThreadLocalRandom.java | 199 + .../lib/concurrent-ruby.rb | 1 + .../concurrent-ruby-1.1.4/lib/concurrent.rb | 134 + .../lib/concurrent/agent.rb | 587 + .../lib/concurrent/array.rb | 66 + .../lib/concurrent/async.rb | 445 + .../lib/concurrent/atom.rb | 222 + .../atomic/abstract_thread_local_var.rb | 66 + .../lib/concurrent/atomic/atomic_boolean.rb | 126 + .../lib/concurrent/atomic/atomic_fixnum.rb | 143 + .../atomic/atomic_markable_reference.rb | 164 + .../lib/concurrent/atomic/atomic_reference.rb | 204 + .../lib/concurrent/atomic/count_down_latch.rb | 100 + .../lib/concurrent/atomic/cyclic_barrier.rb | 128 + .../lib/concurrent/atomic/event.rb | 109 + .../atomic/java_count_down_latch.rb | 42 + .../atomic/java_thread_local_var.rb | 37 + .../concurrent/atomic/mutex_atomic_boolean.rb | 62 + .../concurrent/atomic/mutex_atomic_fixnum.rb | 75 + .../atomic/mutex_count_down_latch.rb | 44 + .../lib/concurrent/atomic/mutex_semaphore.rb | 115 + .../lib/concurrent/atomic/read_write_lock.rb | 254 + .../atomic/reentrant_read_write_lock.rb | 379 + .../atomic/ruby_thread_local_var.rb | 161 + .../lib/concurrent/atomic/semaphore.rb | 145 + .../lib/concurrent/atomic/thread_local_var.rb | 104 + .../atomic_reference/mutex_atomic.rb | 56 + .../atomic_reference/numeric_cas_wrapper.rb | 28 + .../lib/concurrent/atomics.rb | 10 + .../collection/copy_on_notify_observer_set.rb | 107 + .../collection/copy_on_write_observer_set.rb | 111 + .../java_non_concurrent_priority_queue.rb | 84 + .../concurrent/collection/lock_free_stack.rb | 158 + .../map/atomic_reference_map_backend.rb | 927 ++ .../collection/map/mri_map_backend.rb | 66 + .../map/non_concurrent_map_backend.rb | 140 + .../map/synchronized_map_backend.rb | 82 + .../non_concurrent_priority_queue.rb | 143 + .../ruby_non_concurrent_priority_queue.rb | 150 + .../lib/concurrent/concern/deprecation.rb | 34 + .../lib/concurrent/concern/dereferenceable.rb | 73 + .../lib/concurrent/concern/logging.rb | 32 + .../lib/concurrent/concern/obligation.rb | 220 + .../lib/concurrent/concern/observable.rb | 110 + .../lib/concurrent/concurrent_ruby.jar | Bin 0 -> 137023 bytes .../lib/concurrent/configuration.rb | 184 + .../lib/concurrent/constants.rb | 8 + .../lib/concurrent/dataflow.rb | 81 + .../lib/concurrent/delay.rb | 199 + .../lib/concurrent/errors.rb | 69 + .../lib/concurrent/exchanger.rb | 352 + .../executor/abstract_executor_service.rb | 134 + .../concurrent/executor/cached_thread_pool.rb | 62 + .../concurrent/executor/executor_service.rb | 185 + .../concurrent/executor/fixed_thread_pool.rb | 206 + .../concurrent/executor/immediate_executor.rb | 66 + .../executor/indirect_immediate_executor.rb | 44 + .../executor/java_executor_service.rb | 91 + .../executor/java_single_thread_executor.rb | 29 + .../executor/java_thread_pool_executor.rb | 123 + .../executor/ruby_executor_service.rb | 78 + .../executor/ruby_single_thread_executor.rb | 22 + .../executor/ruby_thread_pool_executor.rb | 362 + .../concurrent/executor/safe_task_executor.rb | 35 + .../executor/serial_executor_service.rb | 34 + .../executor/serialized_execution.rb | 107 + .../serialized_execution_delegator.rb | 28 + .../executor/simple_executor_service.rb | 100 + .../executor/single_thread_executor.rb | 56 + .../executor/thread_pool_executor.rb | 87 + .../lib/concurrent/executor/timer_set.rb | 175 + .../lib/concurrent/executors.rb | 20 + .../lib/concurrent/future.rb | 141 + .../lib/concurrent/hash.rb | 59 + .../lib/concurrent/immutable_struct.rb | 93 + .../lib/concurrent/ivar.rb | 207 + .../lib/concurrent/map.rb | 337 + .../lib/concurrent/maybe.rb | 229 + .../lib/concurrent/mutable_struct.rb | 229 + .../lib/concurrent/mvar.rb | 242 + .../lib/concurrent/options.rb | 42 + .../lib/concurrent/promise.rb | 579 + .../lib/concurrent/promises.rb | 1936 +++ .../lib/concurrent/re_include.rb | 58 + .../lib/concurrent/scheduled_task.rb | 318 + .../lib/concurrent/set.rb | 66 + .../lib/concurrent/settable_struct.rb | 129 + .../lib/concurrent/synchronization.rb | 30 + .../abstract_lockable_object.rb | 98 + .../synchronization/abstract_object.rb | 24 + .../synchronization/abstract_struct.rb | 159 + .../concurrent/synchronization/condition.rb | 58 + .../synchronization/jruby_lockable_object.rb | 13 + .../synchronization/jruby_object.rb | 44 + .../lib/concurrent/synchronization/lock.rb | 34 + .../synchronization/lockable_object.rb | 74 + .../concurrent/synchronization/mri_object.rb | 43 + .../synchronization/mutex_lockable_object.rb | 76 + .../lib/concurrent/synchronization/object.rb | 157 + .../synchronization/rbx_lockable_object.rb | 65 + .../concurrent/synchronization/rbx_object.rb | 48 + .../synchronization/truffleruby_object.rb | 46 + .../concurrent/synchronization/volatile.rb | 36 + .../thread_safe/synchronized_delegator.rb | 50 + .../lib/concurrent/thread_safe/util.rb | 16 + .../lib/concurrent/thread_safe/util/adder.rb | 74 + .../thread_safe/util/cheap_lockable.rb | 118 + .../thread_safe/util/data_structures.rb | 63 + .../thread_safe/util/power_of_two_tuple.rb | 38 + .../concurrent/thread_safe/util/striped64.rb | 246 + .../concurrent/thread_safe/util/volatile.rb | 75 + .../thread_safe/util/xor_shift_random.rb | 50 + .../lib/concurrent/timer_task.rb | 334 + .../lib/concurrent/tuple.rb | 86 + .../lib/concurrent/tvar.rb | 258 + .../lib/concurrent/utility/at_exit.rb | 97 + .../lib/concurrent/utility/engine.rb | 56 + .../lib/concurrent/utility/monotonic_time.rb | 58 + .../utility/native_extension_loader.rb | 79 + .../lib/concurrent/utility/native_integer.rb | 53 + .../concurrent/utility/processor_counter.rb | 158 + .../lib/concurrent/version.rb | 4 + .../2.5.0/gems/em-websocket-0.5.1/.gitignore | 3 + .../gems/em-websocket-0.5.1/CHANGELOG.rdoc | 149 + .../2.5.0/gems/em-websocket-0.5.1/Gemfile | 9 + .../2.5.0/gems/em-websocket-0.5.1/README.md | 146 + .../2.5.0/gems/em-websocket-0.5.1/Rakefile | 11 + .../gems/em-websocket-0.5.1/examples/echo.rb | 24 + .../em-websocket-0.5.1/examples/multicast.rb | 47 + .../gems/em-websocket-0.5.1/examples/ping.rb | 24 + .../em-websocket-0.5.1/examples/test.html | 29 + .../em-websocket-0.5.1/lib/em-websocket.rb | 24 + .../lib/em-websocket/close03.rb | 14 + .../lib/em-websocket/close05.rb | 14 + .../lib/em-websocket/close06.rb | 19 + .../lib/em-websocket/close75.rb | 11 + .../lib/em-websocket/connection.rb | 313 + .../lib/em-websocket/debugger.rb | 17 + .../lib/em-websocket/framing03.rb | 162 + .../lib/em-websocket/framing04.rb | 15 + .../lib/em-websocket/framing05.rb | 163 + .../lib/em-websocket/framing07.rb | 185 + .../lib/em-websocket/framing76.rb | 105 + .../lib/em-websocket/handler.rb | 97 + .../lib/em-websocket/handler03.rb | 9 + .../lib/em-websocket/handler05.rb | 9 + .../lib/em-websocket/handler06.rb | 9 + .../lib/em-websocket/handler07.rb | 9 + .../lib/em-websocket/handler08.rb | 9 + .../lib/em-websocket/handler13.rb | 9 + .../lib/em-websocket/handler75.rb | 9 + .../lib/em-websocket/handler76.rb | 14 + .../lib/em-websocket/handshake.rb | 156 + .../lib/em-websocket/handshake04.rb | 28 + .../lib/em-websocket/handshake75.rb | 18 + .../lib/em-websocket/handshake76.rb | 72 + .../lib/em-websocket/masking04.rb | 37 + .../lib/em-websocket/message_processor_03.rb | 47 + .../lib/em-websocket/message_processor_06.rb | 64 + .../lib/em-websocket/version.rb | 5 + .../lib/em-websocket/websocket.rb | 56 + .../gems/em-websocket-0.5.1/spec/helper.rb | 173 + .../spec/integration/common_spec.rb | 111 + .../spec/integration/draft03_spec.rb | 298 + .../spec/integration/draft05_spec.rb | 50 + .../spec/integration/draft06_spec.rb | 144 + .../spec/integration/draft13_spec.rb | 104 + .../spec/integration/draft75_spec.rb | 123 + .../spec/integration/draft76_spec.rb | 234 + .../spec/integration/gte_03_examples.rb | 42 + .../spec/integration/shared_examples.rb | 252 + .../spec/unit/framing_spec.rb | 298 + .../spec/unit/handshake_spec.rb | 216 + .../spec/unit/masking_spec.rb | 29 + .../gems/eventmachine-1.2.7/CHANGELOG.md | 179 + .../ruby/2.5.0/gems/eventmachine-1.2.7/GNU | 281 + .../2.5.0/gems/eventmachine-1.2.7/LICENSE | 60 + .../2.5.0/gems/eventmachine-1.2.7/README.md | 110 + .../docs/DocumentationGuidesIndex.md | 27 + .../eventmachine-1.2.7/docs/GettingStarted.md | 521 + .../eventmachine-1.2.7/docs/old/ChangeLog | 211 + .../eventmachine-1.2.7/docs/old/DEFERRABLES | 246 + .../gems/eventmachine-1.2.7/docs/old/EPOLL | 141 + .../gems/eventmachine-1.2.7/docs/old/INSTALL | 13 + .../gems/eventmachine-1.2.7/docs/old/KEYBOARD | 42 + .../gems/eventmachine-1.2.7/docs/old/LEGAL | 25 + .../docs/old/LIGHTWEIGHT_CONCURRENCY | 130 + .../eventmachine-1.2.7/docs/old/PURE_RUBY | 75 + .../eventmachine-1.2.7/docs/old/RELEASE_NOTES | 94 + .../gems/eventmachine-1.2.7/docs/old/SMTP | 4 + .../docs/old/SPAWNED_PROCESSES | 148 + .../gems/eventmachine-1.2.7/docs/old/TODO | 8 + .../01_eventmachine_echo_server.rb | 18 + ...cho_server_that_recognizes_exit_command.rb | 22 + .../getting_started/03_simple_chat_server.rb | 149 + .../04_simple_chat_server_step_one.rb | 27 + .../05_simple_chat_server_step_two.rb | 43 + .../06_simple_chat_server_step_three.rb | 98 + .../07_simple_chat_server_step_four.rb | 121 + .../08_simple_chat_server_step_five.rb | 141 + .../examples/old/ex_channel.rb | 43 + .../examples/old/ex_queue.rb | 2 + .../examples/old/ex_tick_loop_array.rb | 15 + .../examples/old/ex_tick_loop_counter.rb | 32 + .../eventmachine-1.2.7/examples/old/helper.rb | 2 + .../eventmachine-1.2.7/ext/.sitearchdir.time | 0 .../gems/eventmachine-1.2.7/ext/Makefile | 263 + .../gems/eventmachine-1.2.7/ext/binder.cpp | 124 + .../gems/eventmachine-1.2.7/ext/binder.h | 52 + .../gems/eventmachine-1.2.7/ext/binder.o | Bin 0 -> 1364112 bytes .../gems/eventmachine-1.2.7/ext/cmain.cpp | 988 ++ .../2.5.0/gems/eventmachine-1.2.7/ext/cmain.o | Bin 0 -> 1346048 bytes .../2.5.0/gems/eventmachine-1.2.7/ext/ed.cpp | 2096 +++ .../2.5.0/gems/eventmachine-1.2.7/ext/ed.h | 457 + .../2.5.0/gems/eventmachine-1.2.7/ext/ed.o | Bin 0 -> 1863568 bytes .../2.5.0/gems/eventmachine-1.2.7/ext/em.cpp | 2396 +++ .../2.5.0/gems/eventmachine-1.2.7/ext/em.h | 308 + .../2.5.0/gems/eventmachine-1.2.7/ext/em.o | Bin 0 -> 2098568 bytes .../eventmachine-1.2.7/ext/eventmachine.h | 143 + .../gems/eventmachine-1.2.7/ext/extconf.rb | 270 + .../ext/fastfilereader/.sitearchdir.time | 0 .../ext/fastfilereader/Makefile | 263 + .../ext/fastfilereader/extconf.rb | 109 + .../ext/fastfilereader/fastfilereaderext.so | Bin 0 -> 108872 bytes .../ext/fastfilereader/mapper.cpp | 214 + .../ext/fastfilereader/mapper.h | 59 + .../ext/fastfilereader/mapper.o | Bin 0 -> 257088 bytes .../ext/fastfilereader/rubymain.cpp | 126 + .../ext/fastfilereader/rubymain.o | Bin 0 -> 376752 bytes .../2.5.0/gems/eventmachine-1.2.7/ext/kb.cpp | 79 + .../2.5.0/gems/eventmachine-1.2.7/ext/kb.o | Bin 0 -> 1330016 bytes .../gems/eventmachine-1.2.7/ext/page.cpp | 107 + .../2.5.0/gems/eventmachine-1.2.7/ext/page.h | 51 + .../2.5.0/gems/eventmachine-1.2.7/ext/page.o | Bin 0 -> 1367776 bytes .../gems/eventmachine-1.2.7/ext/pipe.cpp | 354 + .../2.5.0/gems/eventmachine-1.2.7/ext/pipe.o | Bin 0 -> 1447592 bytes .../gems/eventmachine-1.2.7/ext/project.h | 174 + .../ext/rubyeventmachine.so | Bin 0 -> 896568 bytes .../gems/eventmachine-1.2.7/ext/rubymain.cpp | 1515 ++ .../gems/eventmachine-1.2.7/ext/rubymain.o | Bin 0 -> 1537088 bytes .../2.5.0/gems/eventmachine-1.2.7/ext/ssl.cpp | 619 + .../2.5.0/gems/eventmachine-1.2.7/ext/ssl.h | 103 + .../2.5.0/gems/eventmachine-1.2.7/ext/ssl.o | Bin 0 -> 1407016 bytes .../gems/eventmachine-1.2.7/java/.classpath | 8 + .../gems/eventmachine-1.2.7/java/.project | 17 + .../src/com/rubyeventmachine/EmReactor.java | 613 + .../rubyeventmachine/EmReactorException.java | 40 + .../rubyeventmachine/EventableChannel.java | 72 + .../EventableDatagramChannel.java | 201 + .../EventableSocketChannel.java | 415 + .../gems/eventmachine-1.2.7/lib/em/buftok.rb | 59 + .../eventmachine-1.2.7/lib/em/callback.rb | 58 + .../gems/eventmachine-1.2.7/lib/em/channel.rb | 69 + .../eventmachine-1.2.7/lib/em/completion.rb | 304 + .../eventmachine-1.2.7/lib/em/connection.rb | 770 + .../eventmachine-1.2.7/lib/em/deferrable.rb | 210 + .../lib/em/deferrable/pool.rb | 2 + .../eventmachine-1.2.7/lib/em/file_watch.rb | 73 + .../gems/eventmachine-1.2.7/lib/em/future.rb | 61 + .../eventmachine-1.2.7/lib/em/iterator.rb | 252 + .../eventmachine-1.2.7/lib/em/messages.rb | 66 + .../gems/eventmachine-1.2.7/lib/em/pool.rb | 151 + .../lib/em/process_watch.rb | 45 + .../eventmachine-1.2.7/lib/em/processes.rb | 123 + .../eventmachine-1.2.7/lib/em/protocols.rb | 37 + .../lib/em/protocols/header_and_content.rb | 138 + .../lib/em/protocols/httpclient.rb | 300 + .../lib/em/protocols/httpclient2.rb | 600 + .../lib/em/protocols/line_and_text.rb | 125 + .../lib/em/protocols/line_protocol.rb | 29 + .../lib/em/protocols/linetext2.rb | 179 + .../lib/em/protocols/memcache.rb | 331 + .../lib/em/protocols/object_protocol.rb | 46 + .../lib/em/protocols/postgres3.rb | 246 + .../lib/em/protocols/saslauth.rb | 175 + .../lib/em/protocols/smtpclient.rb | 394 + .../lib/em/protocols/smtpserver.rb | 666 + .../lib/em/protocols/socks4.rb | 66 + .../lib/em/protocols/stomp.rb | 205 + .../lib/em/protocols/tcptest.rb | 54 + .../eventmachine-1.2.7/lib/em/pure_ruby.rb | 1284 ++ .../gems/eventmachine-1.2.7/lib/em/queue.rb | 80 + .../eventmachine-1.2.7/lib/em/resolver.rb | 232 + .../eventmachine-1.2.7/lib/em/spawnable.rb | 84 + .../eventmachine-1.2.7/lib/em/streamer.rb | 118 + .../lib/em/threaded_resource.rb | 90 + .../eventmachine-1.2.7/lib/em/tick_loop.rb | 85 + .../gems/eventmachine-1.2.7/lib/em/timers.rb | 61 + .../gems/eventmachine-1.2.7/lib/em/version.rb | 3 + .../eventmachine-1.2.7/lib/eventmachine.rb | 1601 ++ .../lib/fastfilereaderext.so | Bin 0 -> 108872 bytes .../eventmachine-1.2.7/lib/jeventmachine.rb | 316 + .../lib/rubyeventmachine.so | Bin 0 -> 896568 bytes .../eventmachine-1.2.7/rakelib/package.rake | 120 + .../gems/eventmachine-1.2.7/rakelib/test.rake | 8 + .../eventmachine-1.2.7/rakelib/test_pure.rake | 13 + .../gems/eventmachine-1.2.7/tests/client.crt | 31 + .../gems/eventmachine-1.2.7/tests/client.key | 51 + .../gems/eventmachine-1.2.7/tests/dhparam.pem | 13 + .../tests/em_test_helper.rb | 154 + .../eventmachine-1.2.7/tests/test_attach.rb | 151 + .../eventmachine-1.2.7/tests/test_basic.rb | 321 + .../eventmachine-1.2.7/tests/test_channel.rb | 75 + .../tests/test_completion.rb | 178 + .../tests/test_connection_count.rb | 83 + .../tests/test_connection_write.rb | 35 + .../eventmachine-1.2.7/tests/test_defer.rb | 35 + .../tests/test_deferrable.rb | 35 + .../eventmachine-1.2.7/tests/test_epoll.rb | 142 + .../tests/test_error_handler.rb | 38 + .../gems/eventmachine-1.2.7/tests/test_exc.rb | 43 + .../tests/test_file_watch.rb | 85 + .../eventmachine-1.2.7/tests/test_fork.rb | 75 + .../eventmachine-1.2.7/tests/test_futures.rb | 170 + .../tests/test_handler_check.rb | 35 + .../gems/eventmachine-1.2.7/tests/test_hc.rb | 155 + .../tests/test_httpclient.rb | 238 + .../tests/test_httpclient2.rb | 128 + .../tests/test_idle_connection.rb | 31 + .../tests/test_inactivity_timeout.rb | 54 + .../eventmachine-1.2.7/tests/test_ipv4.rb | 95 + .../eventmachine-1.2.7/tests/test_ipv6.rb | 107 + .../eventmachine-1.2.7/tests/test_iterator.rb | 118 + .../gems/eventmachine-1.2.7/tests/test_kb.rb | 28 + .../tests/test_line_protocol.rb | 33 + .../gems/eventmachine-1.2.7/tests/test_ltp.rb | 155 + .../eventmachine-1.2.7/tests/test_ltp2.rb | 332 + .../eventmachine-1.2.7/tests/test_many_fds.rb | 22 + .../tests/test_next_tick.rb | 104 + .../tests/test_object_protocol.rb | 36 + .../eventmachine-1.2.7/tests/test_pause.rb | 107 + .../tests/test_pending_connect_timeout.rb | 52 + .../eventmachine-1.2.7/tests/test_pool.rb | 196 + .../tests/test_process_watch.rb | 50 + .../tests/test_processes.rb | 128 + .../tests/test_proxy_connection.rb | 180 + .../eventmachine-1.2.7/tests/test_pure.rb | 139 + .../eventmachine-1.2.7/tests/test_queue.rb | 64 + .../eventmachine-1.2.7/tests/test_resolver.rb | 105 + .../eventmachine-1.2.7/tests/test_running.rb | 14 + .../eventmachine-1.2.7/tests/test_sasl.rb | 47 + .../tests/test_send_file.rb | 217 + .../eventmachine-1.2.7/tests/test_servers.rb | 33 + .../tests/test_shutdown_hooks.rb | 23 + .../tests/test_smtpclient.rb | 75 + .../tests/test_smtpserver.rb | 57 + .../eventmachine-1.2.7/tests/test_sock_opt.rb | 54 + .../eventmachine-1.2.7/tests/test_spawn.rb | 293 + .../eventmachine-1.2.7/tests/test_ssl_args.rb | 78 + .../tests/test_ssl_dhparam.rb | 84 + .../tests/test_ssl_ecdh_curve.rb | 80 + .../tests/test_ssl_extensions.rb | 49 + .../tests/test_ssl_methods.rb | 65 + .../tests/test_ssl_protocols.rb | 246 + .../tests/test_ssl_verify.rb | 128 + .../eventmachine-1.2.7/tests/test_stomp.rb | 38 + .../eventmachine-1.2.7/tests/test_system.rb | 46 + .../tests/test_threaded_resource.rb | 63 + .../tests/test_tick_loop.rb | 59 + .../eventmachine-1.2.7/tests/test_timers.rb | 130 + .../gems/eventmachine-1.2.7/tests/test_ud.rb | 8 + .../tests/test_unbind_reason.rb | 40 + .../ruby/2.5.0/gems/ffi-1.10.0/.gitignore | 22 + .../ruby/2.5.0/gems/ffi-1.10.0/.gitmodules | 3 + .../ruby/2.5.0/gems/ffi-1.10.0/.travis.yml | 43 + .../ruby/2.5.0/gems/ffi-1.10.0/.yardopts | 5 + .../ruby/2.5.0/gems/ffi-1.10.0/CHANGELOG.md | 98 + .../bundle/ruby/2.5.0/gems/ffi-1.10.0/COPYING | 49 + .../bundle/ruby/2.5.0/gems/ffi-1.10.0/Gemfile | 15 + .../bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE | 24 + .../ruby/2.5.0/gems/ffi-1.10.0/LICENSE.SPECS | 22 + .../ruby/2.5.0/gems/ffi-1.10.0/README.md | 112 + .../ruby/2.5.0/gems/ffi-1.10.0/Rakefile | 268 + .../ruby/2.5.0/gems/ffi-1.10.0/appveyor.yml | 22 + .../ffi-1.10.0/ext/ffi_c/.sitearchdir.time | 0 .../ffi-1.10.0/ext/ffi_c/AbstractMemory.c | 1109 ++ .../ffi-1.10.0/ext/ffi_c/AbstractMemory.h | 175 + .../gems/ffi-1.10.0/ext/ffi_c/ArrayType.c | 162 + .../gems/ffi-1.10.0/ext/ffi_c/ArrayType.h | 59 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Buffer.c | 365 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.c | 520 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.h | 110 + .../gems/ffi-1.10.0/ext/ffi_c/ClosurePool.c | 283 + .../gems/ffi-1.10.0/ext/ffi_c/ClosurePool.h | 57 + .../gems/ffi-1.10.0/ext/ffi_c/DataConverter.c | 91 + .../ffi-1.10.0/ext/ffi_c/DynamicLibrary.c | 339 + .../ffi-1.10.0/ext/ffi_c/DynamicLibrary.h | 98 + .../gems/ffi-1.10.0/ext/ffi_c/Function.c | 1001 ++ .../gems/ffi-1.10.0/ext/ffi_c/Function.h | 87 + .../gems/ffi-1.10.0/ext/ffi_c/FunctionInfo.c | 271 + .../gems/ffi-1.10.0/ext/ffi_c/LastError.c | 229 + .../gems/ffi-1.10.0/ext/ffi_c/LastError.h | 47 + .../gems/ffi-1.10.0/ext/ffi_c/LongDouble.c | 63 + .../gems/ffi-1.10.0/ext/ffi_c/LongDouble.h | 51 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Makefile | 263 + .../gems/ffi-1.10.0/ext/ffi_c/MappedType.c | 168 + .../gems/ffi-1.10.0/ext/ffi_c/MappedType.h | 59 + .../gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.c | 197 + .../gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.h | 53 + .../gems/ffi-1.10.0/ext/ffi_c/MethodHandle.c | 358 + .../gems/ffi-1.10.0/ext/ffi_c/MethodHandle.h | 55 + .../gems/ffi-1.10.0/ext/ffi_c/Platform.c | 129 + .../gems/ffi-1.10.0/ext/ffi_c/Platform.h | 45 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.c | 508 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.h | 63 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.c | 829 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.h | 106 + .../ffi-1.10.0/ext/ffi_c/StructByReference.c | 190 + .../ffi-1.10.0/ext/ffi_c/StructByReference.h | 50 + .../gems/ffi-1.10.0/ext/ffi_c/StructByValue.c | 150 + .../gems/ffi-1.10.0/ext/ffi_c/StructByValue.h | 55 + .../gems/ffi-1.10.0/ext/ffi_c/StructLayout.c | 698 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.c | 353 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.h | 95 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.c | 397 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.h | 62 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.c | 139 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.h | 89 + .../gems/ffi-1.10.0/ext/ffi_c/Variadic.c | 304 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/compat.h | 78 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.h | 12 + .../gems/ffi-1.10.0/ext/ffi_c/extconf.rb | 72 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/ffi.c | 98 + .../gems/ffi-1.10.0/ext/ffi_c/libffi.bsd.mk | 40 + .../ffi-1.10.0/ext/ffi_c/libffi.darwin.mk | 105 + .../gems/ffi-1.10.0/ext/ffi_c/libffi.gnu.mk | 32 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.mk | 18 + .../gems/ffi-1.10.0/ext/ffi_c/libffi.vc.mk | 26 + .../gems/ffi-1.10.0/ext/ffi_c/libffi.vc64.mk | 26 + .../ffi-1.10.0/ext/ffi_c/libffi/.appveyor.yml | 50 + .../ffi_c/libffi/.github/issue_template.md | 10 + .../ffi-1.10.0/ext/ffi_c/libffi/.gitignore | 38 + .../ffi-1.10.0/ext/ffi_c/libffi/.travis.yml | 34 + .../ext/ffi_c/libffi/.travis/ar-lib | 270 + .../ext/ffi_c/libffi/.travis/build.sh | 34 + .../ext/ffi_c/libffi/.travis/compile | 351 + .../ext/ffi_c/libffi/.travis/install.sh | 22 + .../ext/ffi_c/libffi/.travis/moxie-sim.exp | 60 + .../ext/ffi_c/libffi/.travis/site.exp | 18 + .../ext/ffi_c/libffi/ChangeLog.libffi | 584 + .../ext/ffi_c/libffi/ChangeLog.libffi-3.1 | 6000 ++++++++ .../ext/ffi_c/libffi/ChangeLog.libgcj | 40 + .../ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.v1 | 764 + .../gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE | 21 + .../ext/ffi_c/libffi/LICENSE-BUILDTOOLS | 352 + .../ffi-1.10.0/ext/ffi_c/libffi/Makefile.am | 166 + .../ffi-1.10.0/ext/ffi_c/libffi/README.md | 461 + .../ffi-1.10.0/ext/ffi_c/libffi/acinclude.m4 | 479 + .../ffi-1.10.0/ext/ffi_c/libffi/autogen.sh | 2 + .../ffi-1.10.0/ext/ffi_c/libffi/config.guess | 1466 ++ .../ffi-1.10.0/ext/ffi_c/libffi/config.sub | 1836 +++ .../ffi-1.10.0/ext/ffi_c/libffi/configure.ac | 390 + .../ext/ffi_c/libffi/configure.host | 289 + .../generate-darwin-source-and-headers.py | 203 + .../ext/ffi_c/libffi/include/Makefile.am | 9 + .../ext/ffi_c/libffi/include/ffi.h.in | 511 + .../ext/ffi_c/libffi/include/ffi_cfi.h | 55 + .../ext/ffi_c/libffi/include/ffi_common.h | 149 + .../ffi-1.10.0/ext/ffi_c/libffi/libffi.map.in | 80 + .../ffi-1.10.0/ext/ffi_c/libffi/libffi.pc.in | 11 + .../libffi/libffi.xcodeproj/project.pbxproj | 1043 ++ .../ext/ffi_c/libffi/libtool-version | 29 + .../ffi-1.10.0/ext/ffi_c/libffi/m4/asmcfi.m4 | 13 + .../ext/ffi_c/libffi/m4/ax_append_flag.m4 | 71 + .../ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 | 194 + .../ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 | 122 + .../ffi_c/libffi/m4/ax_check_compile_flag.m4 | 74 + .../ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 | 87 + .../ext/ffi_c/libffi/m4/ax_configure_args.m4 | 70 + .../ext/ffi_c/libffi/m4/ax_enable_builddir.m4 | 302 + .../ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 | 263 + .../ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 | 89 + .../ext/ffi_c/libffi/m4/ax_require_defined.m4 | 37 + .../ext/ffi_c/libffi/man/Makefile.am | 8 + .../ffi-1.10.0/ext/ffi_c/libffi/man/ffi.3 | 41 + .../ext/ffi_c/libffi/man/ffi_call.3 | 103 + .../ext/ffi_c/libffi/man/ffi_prep_cif.3 | 68 + .../ext/ffi_c/libffi/man/ffi_prep_cif_var.3 | 73 + .../gems/ffi-1.10.0/ext/ffi_c/libffi/msvcc.sh | 328 + .../ext/ffi_c/libffi/src/aarch64/ffi.c | 941 ++ .../ext/ffi_c/libffi/src/aarch64/ffitarget.h | 81 + .../ext/ffi_c/libffi/src/aarch64/internal.h | 67 + .../ext/ffi_c/libffi/src/aarch64/sysv.S | 438 + .../ext/ffi_c/libffi/src/alpha/ffi.c | 521 + .../ext/ffi_c/libffi/src/alpha/ffitarget.h | 57 + .../ext/ffi_c/libffi/src/alpha/internal.h | 23 + .../ext/ffi_c/libffi/src/alpha/osf.S | 282 + .../ext/ffi_c/libffi/src/arc/arcompact.S | 135 + .../ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffi.c | 266 + .../ext/ffi_c/libffi/src/arc/ffitarget.h | 53 + .../ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffi.c | 819 + .../ext/ffi_c/libffi/src/arm/ffitarget.h | 82 + .../ext/ffi_c/libffi/src/arm/internal.h | 7 + .../ext/ffi_c/libffi/src/arm/sysv.S | 383 + .../ext/ffi_c/libffi/src/avr32/ffi.c | 423 + .../ext/ffi_c/libffi/src/avr32/ffitarget.h | 55 + .../ext/ffi_c/libffi/src/avr32/sysv.S | 208 + .../ext/ffi_c/libffi/src/bfin/ffi.c | 196 + .../ext/ffi_c/libffi/src/bfin/ffitarget.h | 43 + .../ext/ffi_c/libffi/src/bfin/sysv.S | 179 + .../ext/ffi_c/libffi/src/closures.c | 966 ++ .../ext/ffi_c/libffi/src/cris/ffi.c | 386 + .../ext/ffi_c/libffi/src/cris/ffitarget.h | 56 + .../ext/ffi_c/libffi/src/cris/sysv.S | 215 + .../ffi-1.10.0/ext/ffi_c/libffi/src/debug.c | 64 + .../ext/ffi_c/libffi/src/dlmalloc.c | 5166 +++++++ .../ext/ffi_c/libffi/src/frv/eabi.S | 128 + .../ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffi.c | 292 + .../ext/ffi_c/libffi/src/frv/ffitarget.h | 62 + .../ext/ffi_c/libffi/src/ia64/ffi.c | 604 + .../ext/ffi_c/libffi/src/ia64/ffitarget.h | 56 + .../ext/ffi_c/libffi/src/ia64/ia64_flags.h | 40 + .../ext/ffi_c/libffi/src/ia64/unix.S | 567 + .../ext/ffi_c/libffi/src/java_raw_api.c | 374 + .../ext/ffi_c/libffi/src/m32r/ffi.c | 232 + .../ext/ffi_c/libffi/src/m32r/ffitarget.h | 53 + .../ext/ffi_c/libffi/src/m32r/sysv.S | 121 + .../ext/ffi_c/libffi/src/m68k/ffi.c | 362 + .../ext/ffi_c/libffi/src/m68k/ffitarget.h | 54 + .../ext/ffi_c/libffi/src/m68k/sysv.S | 357 + .../ext/ffi_c/libffi/src/m88k/ffi.c | 400 + .../ext/ffi_c/libffi/src/m88k/ffitarget.h | 49 + .../ext/ffi_c/libffi/src/m88k/obsd.S | 209 + .../ext/ffi_c/libffi/src/metag/ffi.c | 330 + .../ext/ffi_c/libffi/src/metag/ffitarget.h | 53 + .../ext/ffi_c/libffi/src/metag/sysv.S | 311 + .../ext/ffi_c/libffi/src/microblaze/ffi.c | 321 + .../ffi_c/libffi/src/microblaze/ffitarget.h | 53 + .../ext/ffi_c/libffi/src/microblaze/sysv.S | 302 + .../ext/ffi_c/libffi/src/mips/ffi.c | 1130 ++ .../ext/ffi_c/libffi/src/mips/ffitarget.h | 244 + .../ext/ffi_c/libffi/src/mips/n32.S | 663 + .../ext/ffi_c/libffi/src/mips/o32.S | 502 + .../ext/ffi_c/libffi/src/moxie/eabi.S | 101 + .../ext/ffi_c/libffi/src/moxie/ffi.c | 285 + .../ext/ffi_c/libffi/src/moxie/ffitarget.h | 52 + .../ext/ffi_c/libffi/src/nios2/ffi.c | 304 + .../ext/ffi_c/libffi/src/nios2/ffitarget.h | 52 + .../ext/ffi_c/libffi/src/nios2/sysv.S | 136 + .../ext/ffi_c/libffi/src/or1k/ffi.c | 328 + .../ext/ffi_c/libffi/src/or1k/ffitarget.h | 58 + .../ext/ffi_c/libffi/src/or1k/sysv.S | 107 + .../ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffi.c | 719 + .../ext/ffi_c/libffi/src/pa/ffitarget.h | 85 + .../ext/ffi_c/libffi/src/pa/hpux32.S | 368 + .../ext/ffi_c/libffi/src/pa/linux.S | 357 + .../ext/ffi_c/libffi/src/powerpc/aix.S | 566 + .../ffi_c/libffi/src/powerpc/aix_closure.S | 694 + .../ext/ffi_c/libffi/src/powerpc/asm.h | 125 + .../ext/ffi_c/libffi/src/powerpc/darwin.S | 378 + .../ffi_c/libffi/src/powerpc/darwin_closure.S | 571 + .../ext/ffi_c/libffi/src/powerpc/ffi.c | 173 + .../ext/ffi_c/libffi/src/powerpc/ffi_darwin.c | 1440 ++ .../ffi_c/libffi/src/powerpc/ffi_linux64.c | 974 ++ .../ffi_c/libffi/src/powerpc/ffi_powerpc.h | 94 + .../ext/ffi_c/libffi/src/powerpc/ffi_sysv.c | 923 ++ .../ext/ffi_c/libffi/src/powerpc/ffitarget.h | 198 + .../ext/ffi_c/libffi/src/powerpc/linux64.S | 228 + .../libffi/src/powerpc/linux64_closure.S | 488 + .../ffi_c/libffi/src/powerpc/ppc_closure.S | 397 + .../ext/ffi_c/libffi/src/powerpc/sysv.S | 175 + .../ext/ffi_c/libffi/src/prep_cif.c | 261 + .../ffi-1.10.0/ext/ffi_c/libffi/src/raw_api.c | 267 + .../ext/ffi_c/libffi/src/riscv/ffi.c | 445 + .../ext/ffi_c/libffi/src/riscv/ffitarget.h | 68 + .../ext/ffi_c/libffi/src/riscv/sysv.S | 214 + .../ext/ffi_c/libffi/src/s390/ffi.c | 756 + .../ext/ffi_c/libffi/src/s390/ffitarget.h | 70 + .../ext/ffi_c/libffi/src/s390/internal.h | 11 + .../ext/ffi_c/libffi/src/s390/sysv.S | 325 + .../ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffi.c | 717 + .../ext/ffi_c/libffi/src/sh/ffitarget.h | 54 + .../ffi-1.10.0/ext/ffi_c/libffi/src/sh/sysv.S | 850 ++ .../ext/ffi_c/libffi/src/sh64/ffi.c | 469 + .../ext/ffi_c/libffi/src/sh64/ffitarget.h | 58 + .../ext/ffi_c/libffi/src/sh64/sysv.S | 539 + .../ext/ffi_c/libffi/src/sparc/ffi.c | 468 + .../ext/ffi_c/libffi/src/sparc/ffi64.c | 608 + .../ext/ffi_c/libffi/src/sparc/ffitarget.h | 81 + .../ext/ffi_c/libffi/src/sparc/internal.h | 26 + .../ext/ffi_c/libffi/src/sparc/v8.S | 443 + .../ext/ffi_c/libffi/src/sparc/v9.S | 440 + .../ext/ffi_c/libffi/src/tile/ffi.c | 355 + .../ext/ffi_c/libffi/src/tile/ffitarget.h | 65 + .../ext/ffi_c/libffi/src/tile/tile.S | 360 + .../ffi-1.10.0/ext/ffi_c/libffi/src/types.c | 108 + .../ext/ffi_c/libffi/src/vax/elfbsd.S | 195 + .../ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffi.c | 276 + .../ext/ffi_c/libffi/src/vax/ffitarget.h | 49 + .../ext/ffi_c/libffi/src/x86/asmnames.h | 30 + .../ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi.c | 753 + .../ext/ffi_c/libffi/src/x86/ffi64.c | 884 ++ .../ext/ffi_c/libffi/src/x86/ffitarget.h | 147 + .../ext/ffi_c/libffi/src/x86/ffiw64.c | 308 + .../ext/ffi_c/libffi/src/x86/internal.h | 29 + .../ext/ffi_c/libffi/src/x86/internal64.h | 22 + .../ext/ffi_c/libffi/src/x86/sysv.S | 1043 ++ .../ext/ffi_c/libffi/src/x86/unix64.S | 525 + .../ext/ffi_c/libffi/src/x86/win64.S | 232 + .../ext/ffi_c/libffi/src/x86/win64_intel.S | 237 + .../ext/ffi_c/libffi/src/xtensa/ffi.c | 298 + .../ext/ffi_c/libffi/src/xtensa/ffitarget.h | 53 + .../ext/ffi_c/libffi/src/xtensa/sysv.S | 258 + .../ffi-1.10.0/ext/ffi_c/libffi/stamp-h.in | 1 + .../ext/ffi_c/libffi/testsuite/Makefile.am | 117 + .../ffi_c/libffi/testsuite/config/default.exp | 1 + .../ext/ffi_c/libffi/testsuite/lib/libffi.exp | 636 + .../libffi/testsuite/lib/target-libpath.exp | 283 + .../ffi_c/libffi/testsuite/lib/wrapper.exp | 45 + .../libffi/testsuite/libffi.bhaible/Makefile | 28 + .../libffi/testsuite/libffi.bhaible/README | 78 + .../libffi/testsuite/libffi.bhaible/alignof.h | 50 + .../testsuite/libffi.bhaible/bhaible.exp | 58 + .../testsuite/libffi.bhaible/test-call.c | 1745 +++ .../testsuite/libffi.bhaible/test-callback.c | 2885 ++++ .../testsuite/libffi.bhaible/testcases.c | 743 + .../testsuite/libffi.call/align_mixed.c | 46 + .../testsuite/libffi.call/align_stdcall.c | 46 + .../libffi/testsuite/libffi.call/call.exp | 43 + .../testsuite/libffi.call/closure_fn0.c | 89 + .../testsuite/libffi.call/closure_fn1.c | 81 + .../testsuite/libffi.call/closure_fn2.c | 81 + .../testsuite/libffi.call/closure_fn3.c | 82 + .../testsuite/libffi.call/closure_fn4.c | 89 + .../testsuite/libffi.call/closure_fn5.c | 92 + .../testsuite/libffi.call/closure_fn6.c | 90 + .../testsuite/libffi.call/closure_loc_fn0.c | 95 + .../testsuite/libffi.call/closure_simple.c | 55 + .../libffi/testsuite/libffi.call/cls_12byte.c | 94 + .../libffi/testsuite/libffi.call/cls_16byte.c | 95 + .../libffi/testsuite/libffi.call/cls_18byte.c | 96 + .../libffi/testsuite/libffi.call/cls_19byte.c | 102 + .../testsuite/libffi.call/cls_1_1byte.c | 89 + .../libffi/testsuite/libffi.call/cls_20byte.c | 91 + .../testsuite/libffi.call/cls_20byte1.c | 93 + .../libffi/testsuite/libffi.call/cls_24byte.c | 113 + .../libffi/testsuite/libffi.call/cls_2byte.c | 90 + .../testsuite/libffi.call/cls_3_1byte.c | 95 + .../libffi/testsuite/libffi.call/cls_3byte1.c | 90 + .../libffi/testsuite/libffi.call/cls_3byte2.c | 90 + .../libffi/testsuite/libffi.call/cls_3float.c | 95 + .../testsuite/libffi.call/cls_4_1byte.c | 98 + .../libffi/testsuite/libffi.call/cls_4byte.c | 90 + .../testsuite/libffi.call/cls_5_1_byte.c | 109 + .../libffi/testsuite/libffi.call/cls_5byte.c | 98 + .../libffi/testsuite/libffi.call/cls_64byte.c | 124 + .../testsuite/libffi.call/cls_6_1_byte.c | 113 + .../libffi/testsuite/libffi.call/cls_6byte.c | 99 + .../testsuite/libffi.call/cls_7_1_byte.c | 117 + .../libffi/testsuite/libffi.call/cls_7byte.c | 97 + .../libffi/testsuite/libffi.call/cls_8byte.c | 88 + .../libffi/testsuite/libffi.call/cls_9byte1.c | 90 + .../libffi/testsuite/libffi.call/cls_9byte2.c | 91 + .../testsuite/libffi.call/cls_align_double.c | 93 + .../testsuite/libffi.call/cls_align_float.c | 91 + .../libffi.call/cls_align_longdouble.c | 92 + .../libffi.call/cls_align_longdouble_split.c | 132 + .../libffi.call/cls_align_longdouble_split2.c | 115 + .../testsuite/libffi.call/cls_align_pointer.c | 95 + .../testsuite/libffi.call/cls_align_sint16.c | 91 + .../testsuite/libffi.call/cls_align_sint32.c | 91 + .../testsuite/libffi.call/cls_align_sint64.c | 92 + .../testsuite/libffi.call/cls_align_uint16.c | 91 + .../testsuite/libffi.call/cls_align_uint32.c | 91 + .../testsuite/libffi.call/cls_align_uint64.c | 93 + .../testsuite/libffi.call/cls_dbls_struct.c | 66 + .../libffi/testsuite/libffi.call/cls_double.c | 43 + .../testsuite/libffi.call/cls_double_va.c | 61 + .../libffi/testsuite/libffi.call/cls_float.c | 42 + .../testsuite/libffi.call/cls_longdouble.c | 105 + .../testsuite/libffi.call/cls_longdouble_va.c | 61 + .../libffi.call/cls_many_mixed_args.c | 70 + .../libffi.call/cls_many_mixed_float_double.c | 55 + .../testsuite/libffi.call/cls_multi_schar.c | 74 + .../testsuite/libffi.call/cls_multi_sshort.c | 74 + .../libffi.call/cls_multi_sshortchar.c | 86 + .../testsuite/libffi.call/cls_multi_uchar.c | 91 + .../testsuite/libffi.call/cls_multi_ushort.c | 74 + .../libffi.call/cls_multi_ushortchar.c | 86 + .../testsuite/libffi.call/cls_pointer.c | 74 + .../testsuite/libffi.call/cls_pointer_stack.c | 142 + .../libffi/testsuite/libffi.call/cls_schar.c | 44 + .../libffi/testsuite/libffi.call/cls_sint.c | 42 + .../libffi/testsuite/libffi.call/cls_sshort.c | 42 + .../testsuite/libffi.call/cls_struct_va1.c | 114 + .../libffi/testsuite/libffi.call/cls_uchar.c | 42 + .../testsuite/libffi.call/cls_uchar_va.c | 44 + .../libffi/testsuite/libffi.call/cls_uint.c | 43 + .../testsuite/libffi.call/cls_uint_va.c | 45 + .../testsuite/libffi.call/cls_ulong_va.c | 45 + .../testsuite/libffi.call/cls_ulonglong.c | 47 + .../libffi/testsuite/libffi.call/cls_ushort.c | 43 + .../testsuite/libffi.call/cls_ushort_va.c | 44 + .../testsuite/libffi.call/err_bad_abi.c | 36 + .../testsuite/libffi.call/err_bad_typedef.c | 26 + .../libffi/testsuite/libffi.call/ffitest.h | 138 + .../libffi/testsuite/libffi.call/float.c | 59 + .../libffi/testsuite/libffi.call/float1.c | 60 + .../libffi/testsuite/libffi.call/float2.c | 60 + .../libffi/testsuite/libffi.call/float3.c | 74 + .../libffi/testsuite/libffi.call/float4.c | 62 + .../libffi/testsuite/libffi.call/float_va.c | 107 + .../testsuite/libffi.call/huge_struct.c | 341 + .../ffi_c/libffi/testsuite/libffi.call/many.c | 59 + .../libffi/testsuite/libffi.call/many2.c | 57 + .../testsuite/libffi.call/many_double.c | 70 + .../libffi/testsuite/libffi.call/many_mixed.c | 78 + .../libffi/testsuite/libffi.call/negint.c | 52 + .../testsuite/libffi.call/nested_struct.c | 152 + .../testsuite/libffi.call/nested_struct1.c | 161 + .../testsuite/libffi.call/nested_struct10.c | 134 + .../testsuite/libffi.call/nested_struct11.c | 121 + .../testsuite/libffi.call/nested_struct2.c | 110 + .../testsuite/libffi.call/nested_struct3.c | 111 + .../testsuite/libffi.call/nested_struct4.c | 111 + .../testsuite/libffi.call/nested_struct5.c | 112 + .../testsuite/libffi.call/nested_struct6.c | 131 + .../testsuite/libffi.call/nested_struct7.c | 111 + .../testsuite/libffi.call/nested_struct8.c | 131 + .../testsuite/libffi.call/nested_struct9.c | 131 + .../libffi/testsuite/libffi.call/offsets.c | 46 + .../libffi/testsuite/libffi.call/pr1172638.c | 127 + .../libffi/testsuite/libffi.call/problem1.c | 90 + .../libffi/testsuite/libffi.call/promotion.c | 59 + .../libffi/testsuite/libffi.call/pyobjc-tc.c | 114 + .../libffi/testsuite/libffi.call/return_dbl.c | 36 + .../testsuite/libffi.call/return_dbl1.c | 43 + .../testsuite/libffi.call/return_dbl2.c | 42 + .../libffi/testsuite/libffi.call/return_fl.c | 35 + .../libffi/testsuite/libffi.call/return_fl1.c | 36 + .../libffi/testsuite/libffi.call/return_fl2.c | 49 + .../libffi/testsuite/libffi.call/return_fl3.c | 42 + .../libffi/testsuite/libffi.call/return_ldl.c | 34 + .../libffi/testsuite/libffi.call/return_ll.c | 41 + .../libffi/testsuite/libffi.call/return_ll1.c | 43 + .../libffi/testsuite/libffi.call/return_sc.c | 36 + .../libffi/testsuite/libffi.call/return_sl.c | 38 + .../libffi/testsuite/libffi.call/return_uc.c | 38 + .../libffi/testsuite/libffi.call/return_ul.c | 38 + .../testsuite/libffi.call/stret_large.c | 145 + .../testsuite/libffi.call/stret_large2.c | 148 + .../testsuite/libffi.call/stret_medium.c | 124 + .../testsuite/libffi.call/stret_medium2.c | 125 + .../libffi/testsuite/libffi.call/strlen.c | 44 + .../libffi/testsuite/libffi.call/strlen2.c | 49 + .../libffi/testsuite/libffi.call/strlen3.c | 49 + .../libffi/testsuite/libffi.call/strlen4.c | 55 + .../libffi/testsuite/libffi.call/struct1.c | 67 + .../libffi/testsuite/libffi.call/struct10.c | 57 + .../libffi/testsuite/libffi.call/struct2.c | 67 + .../libffi/testsuite/libffi.call/struct3.c | 60 + .../libffi/testsuite/libffi.call/struct4.c | 64 + .../libffi/testsuite/libffi.call/struct5.c | 66 + .../libffi/testsuite/libffi.call/struct6.c | 64 + .../libffi/testsuite/libffi.call/struct7.c | 74 + .../libffi/testsuite/libffi.call/struct8.c | 81 + .../libffi/testsuite/libffi.call/struct9.c | 68 + .../testsuite/libffi.call/testclosure.c | 70 + .../testsuite/libffi.call/uninitialized.c | 61 + .../testsuite/libffi.call/unwindtest.cc | 117 + .../libffi.call/unwindtest_ffi_call.cc | 54 + .../ffi_c/libffi/testsuite/libffi.call/va_1.c | 196 + .../libffi/testsuite/libffi.call/va_struct1.c | 121 + .../libffi/testsuite/libffi.call/va_struct2.c | 123 + .../libffi/testsuite/libffi.call/va_struct3.c | 125 + .../libffi.complex/cls_align_complex.inc | 91 + .../libffi.complex/cls_align_complex_double.c | 10 + .../libffi.complex/cls_align_complex_float.c | 10 + .../cls_align_complex_longdouble.c | 10 + .../testsuite/libffi.complex/cls_complex.inc | 42 + .../libffi.complex/cls_complex_double.c | 10 + .../libffi.complex/cls_complex_float.c | 10 + .../libffi.complex/cls_complex_longdouble.c | 10 + .../libffi.complex/cls_complex_struct.inc | 71 + .../cls_complex_struct_double.c | 10 + .../libffi.complex/cls_complex_struct_float.c | 10 + .../cls_complex_struct_longdouble.c | 10 + .../libffi.complex/cls_complex_va.inc | 80 + .../libffi.complex/cls_complex_va_double.c | 10 + .../libffi.complex/cls_complex_va_float.c | 16 + .../cls_complex_va_longdouble.c | 10 + .../testsuite/libffi.complex/complex.exp | 36 + .../testsuite/libffi.complex/complex.inc | 51 + .../libffi.complex/complex_defs_double.inc | 7 + .../libffi.complex/complex_defs_float.inc | 7 + .../complex_defs_longdouble.inc | 7 + .../testsuite/libffi.complex/complex_double.c | 10 + .../testsuite/libffi.complex/complex_float.c | 10 + .../testsuite/libffi.complex/complex_int.c | 86 + .../libffi.complex/complex_longdouble.c | 10 + .../libffi/testsuite/libffi.complex/ffitest.h | 1 + .../testsuite/libffi.complex/many_complex.inc | 78 + .../libffi.complex/many_complex_double.c | 10 + .../libffi.complex/many_complex_float.c | 10 + .../libffi.complex/many_complex_longdouble.c | 10 + .../libffi.complex/return_complex.inc | 37 + .../libffi.complex/return_complex1.inc | 41 + .../libffi.complex/return_complex1_double.c | 10 + .../libffi.complex/return_complex1_float.c | 10 + .../return_complex1_longdouble.c | 10 + .../libffi.complex/return_complex2.inc | 44 + .../libffi.complex/return_complex2_double.c | 10 + .../libffi.complex/return_complex2_float.c | 10 + .../return_complex2_longdouble.c | 10 + .../libffi.complex/return_complex_double.c | 10 + .../libffi.complex/return_complex_float.c | 10 + .../return_complex_longdouble.c | 10 + .../libffi/testsuite/libffi.go/aa-direct.c | 34 + .../libffi/testsuite/libffi.go/closure1.c | 28 + .../libffi/testsuite/libffi.go/ffitest.h | 1 + .../ffi_c/libffi/testsuite/libffi.go/go.exp | 36 + .../libffi/testsuite/libffi.go/static-chain.h | 19 + .../2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi.h | 57 + .../gems/ffi-1.10.0/ext/ffi_c/rbffi_endian.h | 59 + .../gems/ffi-1.10.0/ext/ffi_c/win32/stdbool.h | 8 + .../gems/ffi-1.10.0/ext/ffi_c/win32/stdint.h | 201 + .../ruby/2.5.0/gems/ffi-1.10.0/ffi.gemspec | 36 + .../ruby/2.5.0/gems/ffi-1.10.0/lib/ffi.rb | 20 + .../gems/ffi-1.10.0/lib/ffi/autopointer.rb | 203 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/buffer.rb | 4 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/callback.rb | 4 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/enum.rb | 296 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/errno.rb | 43 + .../ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/ffi.rb | 44 + .../ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/io.rb | 62 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/library.rb | 588 + .../gems/ffi-1.10.0/lib/ffi/managedstruct.rb | 84 + .../gems/ffi-1.10.0/lib/ffi/memorypointer.rb | 1 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/platform.rb | 170 + .../ffi/platform/aarch64-freebsd/types.conf | 128 + .../ffi/platform/aarch64-freebsd12/types.conf | 128 + .../lib/ffi/platform/aarch64-linux/types.conf | 104 + .../lib/ffi/platform/arm-freebsd/types.conf | 152 + .../lib/ffi/platform/arm-freebsd12/types.conf | 152 + .../lib/ffi/platform/arm-linux/types.conf | 104 + .../lib/ffi/platform/i386-cygwin/types.conf | 3 + .../lib/ffi/platform/i386-darwin/types.conf | 100 + .../lib/ffi/platform/i386-freebsd/types.conf | 152 + .../ffi/platform/i386-freebsd12/types.conf | 152 + .../lib/ffi/platform/i386-gnu/types.conf | 107 + .../lib/ffi/platform/i386-linux/types.conf | 103 + .../lib/ffi/platform/i386-netbsd/types.conf | 126 + .../lib/ffi/platform/i386-openbsd/types.conf | 128 + .../lib/ffi/platform/i386-solaris/types.conf | 122 + .../lib/ffi/platform/i386-windows/types.conf | 105 + .../lib/ffi/platform/ia64-linux/types.conf | 104 + .../lib/ffi/platform/mips-linux/types.conf | 102 + .../lib/ffi/platform/mips64-linux/types.conf | 104 + .../ffi/platform/mips64el-linux/types.conf | 104 + .../lib/ffi/platform/mipsel-linux/types.conf | 102 + .../ffi/platform/mipsisa32r6-linux/types.conf | 102 + .../platform/mipsisa32r6el-linux/types.conf | 102 + .../ffi/platform/mipsisa64r6-linux/types.conf | 104 + .../platform/mipsisa64r6el-linux/types.conf | 104 + .../lib/ffi/platform/powerpc-aix/types.conf | 180 + .../ffi/platform/powerpc-darwin/types.conf | 100 + .../lib/ffi/platform/powerpc-linux/types.conf | 100 + .../ffi/platform/powerpc64-linux/types.conf | 104 + .../lib/ffi/platform/s390-linux/types.conf | 102 + .../lib/ffi/platform/s390x-linux/types.conf | 102 + .../lib/ffi/platform/sparc-linux/types.conf | 102 + .../lib/ffi/platform/sparc-solaris/types.conf | 128 + .../lib/ffi/platform/sparc64-linux/types.conf | 102 + .../ffi/platform/sparcv9-solaris/types.conf | 128 + .../lib/ffi/platform/x86_64-cygwin/types.conf | 3 + .../lib/ffi/platform/x86_64-darwin/types.conf | 126 + .../ffi/platform/x86_64-freebsd/types.conf | 128 + .../ffi/platform/x86_64-freebsd12/types.conf | 128 + .../lib/ffi/platform/x86_64-linux/types.conf | 102 + .../lib/ffi/platform/x86_64-netbsd/types.conf | 128 + .../ffi/platform/x86_64-openbsd/types.conf | 134 + .../ffi/platform/x86_64-solaris/types.conf | 122 + .../ffi/platform/x86_64-windows/types.conf | 120 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/pointer.rb | 160 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/struct.rb | 371 + .../lib/ffi/struct_layout_builder.rb | 227 + .../lib/ffi/tools/const_generator.rb | 229 + .../ffi-1.10.0/lib/ffi/tools/generator.rb | 60 + .../lib/ffi/tools/generator_task.rb | 36 + .../lib/ffi/tools/struct_generator.rb | 194 + .../lib/ffi/tools/types_generator.rb | 134 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/types.rb | 194 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/union.rb | 43 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/variadic.rb | 78 + .../2.5.0/gems/ffi-1.10.0/lib/ffi/version.rb | 3 + .../2.5.0/gems/ffi-1.10.0/samples/getlogin.rb | 8 + .../2.5.0/gems/ffi-1.10.0/samples/getpid.rb | 8 + .../gems/ffi-1.10.0/samples/gettimeofday.rb | 18 + .../2.5.0/gems/ffi-1.10.0/samples/hello.rb | 7 + .../2.5.0/gems/ffi-1.10.0/samples/inotify.rb | 60 + .../ruby/2.5.0/gems/ffi-1.10.0/samples/pty.rb | 76 + .../2.5.0/gems/ffi-1.10.0/samples/qsort.rb | 21 + .../gems/ffi-1.10.0/samples/sample_helper.rb | 6 + .../gems/forwardable-extended-2.6.0/Gemfile | 24 + .../gems/forwardable-extended-2.6.0/LICENSE | 19 + .../gems/forwardable-extended-2.6.0/Rakefile | 13 + .../lib/forwardable/extended.rb | 202 + .../lib/forwardable/extended/version.rb | 9 + .../gems/http_parser.rb-0.6.0/.gitignore | 11 + .../gems/http_parser.rb-0.6.0/.gitmodules | 6 + .../2.5.0/gems/http_parser.rb-0.6.0/Gemfile | 2 + .../gems/http_parser.rb-0.6.0/Gemfile.lock | 39 + .../gems/http_parser.rb-0.6.0/LICENSE-MIT | 20 + .../2.5.0/gems/http_parser.rb-0.6.0/README.md | 90 + .../2.5.0/gems/http_parser.rb-0.6.0/Rakefile | 6 + .../http_parser.rb-0.6.0/bench/standalone.rb | 23 + .../gems/http_parser.rb-0.6.0/bench/thin.rb | 58 + .../ext/ruby_http_parser/.gitignore | 1 + .../ext/ruby_http_parser/.sitearchdir.time | 0 .../RubyHttpParserService.java | 18 + .../ext/ruby_http_parser/ext_help.h | 18 + .../ext/ruby_http_parser/extconf.rb | 24 + .../org/ruby_http_parser/RubyHttpParser.java | 495 + .../ext/ruby_http_parser/ruby_http_parser.c | 515 + .../ext/ruby_http_parser/vendor/.gitkeep | 0 .../vendor/http-parser-java/AUTHORS | 32 + .../vendor/http-parser-java/LICENSE-MIT | 48 + .../vendor/http-parser-java/README.md | 183 + .../vendor/http-parser-java/TODO | 28 + .../vendor/http-parser-java/build.xml | 74 + .../vendor/http-parser-java/http_parser.c | 2175 +++ .../vendor/http-parser-java/http_parser.gyp | 79 + .../vendor/http-parser-java/http_parser.h | 304 + .../http-parser-java/src/Http-parser.java.iml | 22 + .../src/impl/http_parser/FieldData.java | 41 + .../src/impl/http_parser/HTTPCallback.java | 8 + .../impl/http_parser/HTTPDataCallback.java | 34 + .../impl/http_parser/HTTPErrorCallback.java | 12 + .../src/impl/http_parser/HTTPException.java | 9 + .../src/impl/http_parser/HTTPMethod.java | 107 + .../src/impl/http_parser/HTTPParser.java | 36 + .../src/impl/http_parser/HTTPParserUrl.java | 76 + .../src/impl/http_parser/ParserSettings.java | 256 + .../src/impl/http_parser/ParserType.java | 13 + .../src/impl/http_parser/Util.java | 111 + .../http_parser/lolevel/HTTPCallback.java | 5 + .../http_parser/lolevel/HTTPDataCallback.java | 25 + .../lolevel/HTTPErrorCallback.java | 7 + .../impl/http_parser/lolevel/HTTPParser.java | 2161 +++ .../http_parser/lolevel/ParserSettings.java | 83 + .../src/test/http_parser/lolevel/Message.java | 374 + .../test/http_parser/lolevel/ParseUrl.java | 51 + .../test/http_parser/lolevel/Requests.java | 69 + .../test/http_parser/lolevel/Responses.java | 52 + .../src/test/http_parser/lolevel/Test.java | 16 + .../lolevel/TestHeaderOverflowError.java | 48 + .../http_parser/lolevel/TestLoaderNG.java | 212 + .../lolevel/TestNoOverflowLongBody.java | 62 + .../test/http_parser/lolevel/UnitTest.java | 117 + .../src/test/http_parser/lolevel/Upgrade.java | 27 + .../src/test/http_parser/lolevel/Url.java | 127 + .../src/test/http_parser/lolevel/Util.java | 236 + .../lolevel/WrongContentLength.java | 59 + .../vendor/http-parser-java/test.c | 3425 +++++ .../vendor/http-parser-java/tests.dumped | 845 ++ .../vendor/http-parser-java/tests.utf8 | 17 + .../http-parser-java/tools/byte_constants.rb | 6 + .../http-parser-java/tools/const_char.rb | 13 + .../vendor/http-parser-java/tools/lowcase.rb | 15 + .../http-parser-java/tools/parse_tests.rb | 33 + .../vendor/http-parser/AUTHORS | 32 + .../vendor/http-parser/CONTRIBUTIONS | 4 + .../vendor/http-parser/LICENSE-MIT | 23 + .../vendor/http-parser/README.md | 178 + .../vendor/http-parser/http_parser.c | 2058 +++ .../vendor/http-parser/http_parser.gyp | 79 + .../vendor/http-parser/http_parser.h | 312 + .../vendor/http-parser/test.c | 2876 ++++ .../http_parser.rb.gemspec | 28 + .../http_parser.rb-0.6.0/lib/http/parser.rb | 1 + .../http_parser.rb-0.6.0/lib/http_parser.rb | 21 + .../http_parser.rb-0.6.0/spec/parser_spec.rb | 350 + .../http_parser.rb-0.6.0/spec/spec_helper.rb | 1 + .../spec/support/requests.json | 612 + .../spec/support/responses.json | 375 + .../http_parser.rb-0.6.0/tasks/compile.rake | 42 + .../http_parser.rb-0.6.0/tasks/fixtures.rake | 71 + .../gems/http_parser.rb-0.6.0/tasks/spec.rake | 5 + .../tasks/submodules.rake | 7 + .../ruby/2.5.0/gems/i18n-0.9.5/MIT-LICENSE | 20 + .../ruby/2.5.0/gems/i18n-0.9.5/README.md | 84 + .../i18n-0.9.5/gemfiles/Gemfile.rails-3.2.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-4.0.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-4.1.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-4.2.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-5.0.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-5.1.x | 10 + .../i18n-0.9.5/gemfiles/Gemfile.rails-master | 10 + .../ruby/2.5.0/gems/i18n-0.9.5/lib/i18n.rb | 356 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/backend.rb | 18 + .../gems/i18n-0.9.5/lib/i18n/backend/base.rb | 255 + .../gems/i18n-0.9.5/lib/i18n/backend/cache.rb | 114 + .../i18n-0.9.5/lib/i18n/backend/cascade.rb | 54 + .../gems/i18n-0.9.5/lib/i18n/backend/chain.rb | 97 + .../i18n-0.9.5/lib/i18n/backend/fallbacks.rb | 86 + .../i18n-0.9.5/lib/i18n/backend/flatten.rb | 113 + .../i18n-0.9.5/lib/i18n/backend/gettext.rb | 81 + .../i18n/backend/interpolation_compiler.rb | 121 + .../i18n-0.9.5/lib/i18n/backend/key_value.rb | 177 + .../i18n-0.9.5/lib/i18n/backend/memoize.rb | 46 + .../i18n-0.9.5/lib/i18n/backend/metadata.rb | 69 + .../lib/i18n/backend/pluralization.rb | 53 + .../i18n-0.9.5/lib/i18n/backend/simple.rb | 93 + .../lib/i18n/backend/transliterator.rb | 106 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/config.rb | 147 + .../gems/i18n-0.9.5/lib/i18n/core_ext/hash.rb | 29 + .../i18n/core_ext/kernel/suppress_warnings.rb | 8 + .../lib/i18n/core_ext/string/interpolate.rb | 9 + .../gems/i18n-0.9.5/lib/i18n/exceptions.rb | 104 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/gettext.rb | 26 + .../i18n-0.9.5/lib/i18n/gettext/helpers.rb | 73 + .../i18n-0.9.5/lib/i18n/gettext/po_parser.rb | 329 + .../i18n-0.9.5/lib/i18n/interpolate/ruby.rb | 37 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/locale.rb | 6 + .../i18n-0.9.5/lib/i18n/locale/fallbacks.rb | 96 + .../gems/i18n-0.9.5/lib/i18n/locale/tag.rb | 28 + .../i18n-0.9.5/lib/i18n/locale/tag/parents.rb | 22 + .../i18n-0.9.5/lib/i18n/locale/tag/rfc4646.rb | 74 + .../i18n-0.9.5/lib/i18n/locale/tag/simple.rb | 39 + .../gems/i18n-0.9.5/lib/i18n/middleware.rb | 15 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/tests.rb | 12 + .../gems/i18n-0.9.5/lib/i18n/tests/basics.rb | 60 + .../i18n-0.9.5/lib/i18n/tests/defaults.rb | 52 + .../lib/i18n/tests/interpolation.rb | 158 + .../gems/i18n-0.9.5/lib/i18n/tests/link.rb | 56 + .../i18n-0.9.5/lib/i18n/tests/localization.rb | 19 + .../lib/i18n/tests/localization/date.rb | 95 + .../lib/i18n/tests/localization/date_time.rb | 82 + .../lib/i18n/tests/localization/procs.rb | 116 + .../lib/i18n/tests/localization/time.rb | 81 + .../gems/i18n-0.9.5/lib/i18n/tests/lookup.rb | 81 + .../lib/i18n/tests/pluralization.rb | 35 + .../gems/i18n-0.9.5/lib/i18n/tests/procs.rb | 55 + .../2.5.0/gems/i18n-0.9.5/lib/i18n/version.rb | 3 + .../i18n-0.9.5/test/api/all_features_test.rb | 58 + .../gems/i18n-0.9.5/test/api/cascade_test.rb | 28 + .../gems/i18n-0.9.5/test/api/chain_test.rb | 24 + .../i18n-0.9.5/test/api/fallbacks_test.rb | 30 + .../i18n-0.9.5/test/api/key_value_test.rb | 24 + .../gems/i18n-0.9.5/test/api/memoize_test.rb | 56 + .../gems/i18n-0.9.5/test/api/override_test.rb | 42 + .../i18n-0.9.5/test/api/pluralization_test.rb | 30 + .../gems/i18n-0.9.5/test/api/simple_test.rb | 28 + .../i18n-0.9.5/test/backend/cache_test.rb | 109 + .../i18n-0.9.5/test/backend/cascade_test.rb | 86 + .../i18n-0.9.5/test/backend/chain_test.rb | 122 + .../test/backend/exceptions_test.rb | 36 + .../i18n-0.9.5/test/backend/fallbacks_test.rb | 219 + .../backend/interpolation_compiler_test.rb | 118 + .../i18n-0.9.5/test/backend/key_value_test.rb | 61 + .../i18n-0.9.5/test/backend/memoize_test.rb | 79 + .../i18n-0.9.5/test/backend/metadata_test.rb | 48 + .../test/backend/pluralization_test.rb | 45 + .../i18n-0.9.5/test/backend/simple_test.rb | 103 + .../test/backend/transliterator_test.rb | 84 + .../i18n-0.9.5/test/core_ext/hash_test.rb | 36 + .../gems/i18n-0.9.5/test/gettext/api_test.rb | 214 + .../i18n-0.9.5/test/gettext/backend_test.rb | 92 + .../i18n-0.9.5/test/i18n/exceptions_test.rb | 117 + .../test/i18n/gettext_plural_keys_test.rb | 20 + .../i18n-0.9.5/test/i18n/interpolate_test.rb | 91 + .../i18n-0.9.5/test/i18n/load_path_test.rb | 34 + .../i18n-0.9.5/test/i18n/middleware_test.rb | 24 + .../2.5.0/gems/i18n-0.9.5/test/i18n_test.rb | 462 + .../i18n-0.9.5/test/locale/fallbacks_test.rb | 133 + .../test/locale/tag/rfc4646_test.rb | 143 + .../i18n-0.9.5/test/locale/tag/simple_test.rb | 32 + .../2.5.0/gems/i18n-0.9.5/test/run_all.rb | 20 + .../i18n-0.9.5/test/test_data/locales/de.po | 82 + .../i18n-0.9.5/test/test_data/locales/en.rb | 3 + .../i18n-0.9.5/test/test_data/locales/en.yml | 3 + .../test/test_data/locales/invalid/empty.yml | 0 .../test/test_data/locales/invalid/syntax.yml | 4 + .../test/test_data/locales/plurals.rb | 113 + .../2.5.0/gems/i18n-0.9.5/test/test_helper.rb | 61 + .../ruby/2.5.0/gems/jekyll-3.8.5/.rubocop.yml | 181 + .../ruby/2.5.0/gems/jekyll-3.8.5/LICENSE | 21 + .../2.5.0/gems/jekyll-3.8.5/README.markdown | 61 + .../ruby/2.5.0/gems/jekyll-3.8.5/exe/jekyll | 57 + .../2.5.0/gems/jekyll-3.8.5/lib/jekyll.rb | 200 + .../gems/jekyll-3.8.5/lib/jekyll/cleaner.rb | 110 + .../jekyll-3.8.5/lib/jekyll/collection.rb | 237 + .../gems/jekyll-3.8.5/lib/jekyll/command.rb | 78 + .../jekyll-3.8.5/lib/jekyll/commands/build.rb | 102 + .../jekyll-3.8.5/lib/jekyll/commands/clean.rb | 43 + .../lib/jekyll/commands/doctor.rb | 166 + .../jekyll-3.8.5/lib/jekyll/commands/help.rb | 34 + .../jekyll-3.8.5/lib/jekyll/commands/new.rb | 163 + .../lib/jekyll/commands/new_theme.rb | 40 + .../jekyll-3.8.5/lib/jekyll/commands/serve.rb | 388 + .../commands/serve/live_reload_reactor.rb | 126 + .../serve/livereload_assets/livereload.js | 1183 ++ .../lib/jekyll/commands/serve/servlet.rb | 205 + .../lib/jekyll/commands/serve/websockets.rb | 81 + .../jekyll-3.8.5/lib/jekyll/configuration.rb | 404 + .../gems/jekyll-3.8.5/lib/jekyll/converter.rb | 54 + .../lib/jekyll/converters/identity.rb | 23 + .../lib/jekyll/converters/markdown.rb | 104 + .../converters/markdown/kramdown_parser.rb | 126 + .../converters/markdown/rdiscount_parser.rb | 37 + .../converters/markdown/redcarpet_parser.rb | 112 + .../lib/jekyll/converters/smartypants.rb | 50 + .../jekyll-3.8.5/lib/jekyll/convertible.rb | 255 + .../jekyll-3.8.5/lib/jekyll/deprecator.rb | 52 + .../gems/jekyll-3.8.5/lib/jekyll/document.rb | 508 + .../lib/jekyll/drops/collection_drop.rb | 21 + .../lib/jekyll/drops/document_drop.rb | 68 + .../jekyll-3.8.5/lib/jekyll/drops/drop.rb | 212 + .../lib/jekyll/drops/excerpt_drop.rb | 15 + .../lib/jekyll/drops/jekyll_drop.rb | 32 + .../lib/jekyll/drops/site_drop.rb | 56 + .../lib/jekyll/drops/static_file_drop.rb | 14 + .../lib/jekyll/drops/unified_payload_drop.rb | 25 + .../jekyll-3.8.5/lib/jekyll/drops/url_drop.rb | 88 + .../jekyll-3.8.5/lib/jekyll/entry_filter.rb | 126 + .../gems/jekyll-3.8.5/lib/jekyll/errors.rb | 20 + .../gems/jekyll-3.8.5/lib/jekyll/excerpt.rb | 190 + .../gems/jekyll-3.8.5/lib/jekyll/external.rb | 74 + .../gems/jekyll-3.8.5/lib/jekyll/filters.rb | 379 + .../lib/jekyll/filters/date_filters.rb | 107 + .../lib/jekyll/filters/grouping_filters.rb | 65 + .../lib/jekyll/filters/url_filters.rb | 63 + .../lib/jekyll/frontmatter_defaults.rb | 229 + .../gems/jekyll-3.8.5/lib/jekyll/generator.rb | 5 + .../gems/jekyll-3.8.5/lib/jekyll/hooks.rb | 107 + .../gems/jekyll-3.8.5/lib/jekyll/layout.rb | 62 + .../lib/jekyll/liquid_extensions.rb | 24 + .../lib/jekyll/liquid_renderer.rb | 63 + .../lib/jekyll/liquid_renderer/file.rb | 56 + .../lib/jekyll/liquid_renderer/table.rb | 96 + .../jekyll-3.8.5/lib/jekyll/log_adapter.rb | 147 + .../gems/jekyll-3.8.5/lib/jekyll/mime.types | 825 + .../gems/jekyll-3.8.5/lib/jekyll/page.rb | 187 + .../lib/jekyll/page_without_a_file.rb | 18 + .../gems/jekyll-3.8.5/lib/jekyll/plugin.rb | 98 + .../jekyll-3.8.5/lib/jekyll/plugin_manager.rb | 113 + .../gems/jekyll-3.8.5/lib/jekyll/publisher.rb | 23 + .../gems/jekyll-3.8.5/lib/jekyll/reader.rb | 154 + .../lib/jekyll/readers/collection_reader.rb | 22 + .../lib/jekyll/readers/data_reader.rb | 77 + .../lib/jekyll/readers/layout_reader.rb | 71 + .../lib/jekyll/readers/page_reader.rb | 25 + .../lib/jekyll/readers/post_reader.rb | 72 + .../lib/jekyll/readers/static_file_reader.rb | 25 + .../lib/jekyll/readers/theme_assets_reader.rb | 49 + .../jekyll-3.8.5/lib/jekyll/regenerator.rb | 203 + .../jekyll-3.8.5/lib/jekyll/related_posts.rb | 52 + .../gems/jekyll-3.8.5/lib/jekyll/renderer.rb | 278 + .../gems/jekyll-3.8.5/lib/jekyll/site.rb | 483 + .../jekyll-3.8.5/lib/jekyll/static_file.rb | 167 + .../gems/jekyll-3.8.5/lib/jekyll/stevenson.rb | 61 + .../jekyll-3.8.5/lib/jekyll/tags/highlight.rb | 142 + .../jekyll-3.8.5/lib/jekyll/tags/include.rb | 235 + .../gems/jekyll-3.8.5/lib/jekyll/tags/link.rb | 37 + .../jekyll-3.8.5/lib/jekyll/tags/post_url.rb | 103 + .../gems/jekyll-3.8.5/lib/jekyll/theme.rb | 72 + .../jekyll-3.8.5/lib/jekyll/theme_builder.rb | 119 + .../2.5.0/gems/jekyll-3.8.5/lib/jekyll/url.rb | 159 + .../gems/jekyll-3.8.5/lib/jekyll/utils.rb | 370 + .../jekyll-3.8.5/lib/jekyll/utils/ansi.rb | 57 + .../jekyll-3.8.5/lib/jekyll/utils/exec.rb | 27 + .../jekyll-3.8.5/lib/jekyll/utils/internet.rb | 39 + .../lib/jekyll/utils/platforms.rb | 82 + .../jekyll-3.8.5/lib/jekyll/utils/rouge.rb | 22 + .../lib/jekyll/utils/thread_event.rb | 35 + .../jekyll-3.8.5/lib/jekyll/utils/win_tz.rb | 75 + .../gems/jekyll-3.8.5/lib/jekyll/version.rb | 5 + .../jekyll-3.8.5/lib/site_template/.gitignore | 3 + .../jekyll-3.8.5/lib/site_template/404.html | 24 + .../lib/site_template/_config.yml | 43 + .../0000-00-00-welcome-to-jekyll.markdown.erb | 25 + .../jekyll-3.8.5/lib/site_template/about.md | 18 + .../jekyll-3.8.5/lib/site_template/index.md | 6 + .../lib/theme_template/CODE_OF_CONDUCT.md.erb | 74 + .../jekyll-3.8.5/lib/theme_template/Gemfile | 4 + .../lib/theme_template/LICENSE.txt.erb | 21 + .../lib/theme_template/README.md.erb | 52 + .../lib/theme_template/_layouts/default.html | 1 + .../lib/theme_template/_layouts/page.html | 5 + .../lib/theme_template/_layouts/post.html | 5 + .../theme_template/example/_config.yml.erb | 1 + .../lib/theme_template/example/_post.md | 12 + .../lib/theme_template/example/index.html | 14 + .../lib/theme_template/example/style.scss | 7 + .../lib/theme_template/gitignore.erb | 5 + .../lib/theme_template/theme.gemspec.erb | 19 + .../2.5.0/gems/jekyll-3.8.5/rubocop/jekyll.rb | 5 + .../rubocop/jekyll/no_p_allowed.rb | 23 + .../rubocop/jekyll/no_puts_allowed.rb | 23 + .../lib/jekyll-archives.rb | 132 + .../lib/jekyll-archives/archive.rb | 124 + .../2.5.0/gems/jekyll-feed-0.11.0/.gitignore | 20 + .../ruby/2.5.0/gems/jekyll-feed-0.11.0/.rspec | 2 + .../gems/jekyll-feed-0.11.0/.rubocop.yml | 28 + .../2.5.0/gems/jekyll-feed-0.11.0/.travis.yml | 25 + .../2.5.0/gems/jekyll-feed-0.11.0/Gemfile | 8 + .../gems/jekyll-feed-0.11.0/History.markdown | 142 + .../2.5.0/gems/jekyll-feed-0.11.0/LICENSE.txt | 22 + .../2.5.0/gems/jekyll-feed-0.11.0/README.md | 191 + .../2.5.0/gems/jekyll-feed-0.11.0/Rakefile | 8 + .../jekyll-feed-0.11.0/jekyll-feed.gemspec | 30 + .../jekyll-feed-0.11.0/lib/jekyll-feed.rb | 12 + .../lib/jekyll-feed/feed.xml | 92 + .../lib/jekyll-feed/generator.rb | 111 + .../lib/jekyll-feed/meta-tag.rb | 37 + .../lib/jekyll-feed/page-without-a-file.rb | 9 + .../lib/jekyll-feed/version.rb | 7 + .../gems/jekyll-feed-0.11.0/script/bootstrap | 3 + .../gems/jekyll-feed-0.11.0/script/cibuild | 7 + .../2.5.0/gems/jekyll-feed-0.11.0/script/fmt | 10 + .../gems/jekyll-feed-0.11.0/script/release | 7 + .../2.5.0/gems/jekyll-feed-0.11.0/script/test | 4 + .../_collection/2018-01-01-collection-doc.md | 4 + .../2018-01-02-collection-category-doc.md | 5 + .../spec/fixtures/_config.yml | 9 + .../spec/fixtures/_data/authors.yml | 5 + .../fixtures/_drafts/2015-01-12-a-draft.md | 4 + .../spec/fixtures/_layouts/some_default.html | 11 + .../_posts/2013-12-12-dec-the-second.md | 7 + .../_posts/2014-03-02-march-the-second.md | 6 + .../_posts/2014-03-04-march-the-fourth.md | 9 + .../2015-01-18-jekyll-last-modified-at.md | 5 + .../_posts/2015-02-12-strip-newlines.md | 6 + .../spec/fixtures/_posts/2015-05-12-liquid.md | 7 + .../spec/fixtures/_posts/2015-05-12-pre.html | 8 + .../_posts/2015-05-18-author-detail.md | 9 + .../2015-08-08-stuck-in-the-middle.html | 2 + .../_posts/2016-04-25-author-reference.md | 6 + .../spec/fixtures/feed.xslt.xml | 0 .../spec/jekyll-feed_spec.rb | 474 + .../jekyll-feed-0.11.0/spec/spec_helper.rb | 30 + .../gems/jekyll-paginate-1.1.0/.gitignore | 16 + .../2.5.0/gems/jekyll-paginate-1.1.0/.rspec | 2 + .../gems/jekyll-paginate-1.1.0/.travis.yml | 21 + .../2.5.0/gems/jekyll-paginate-1.1.0/Gemfile | 4 + .../jekyll-paginate-1.1.0/History.markdown | 9 + .../gems/jekyll-paginate-1.1.0/LICENSE.txt | 22 + .../gems/jekyll-paginate-1.1.0/README.md | 31 + .../2.5.0/gems/jekyll-paginate-1.1.0/Rakefile | 1 + .../jekyll-paginate.gemspec | 24 + .../lib/jekyll-paginate.rb | 8 + .../lib/jekyll-paginate/pager.rb | 137 + .../lib/jekyll-paginate/pagination.rb | 86 + .../lib/jekyll-paginate/version.rb | 5 + .../jekyll-paginate-1.1.0/script/bootstrap | 3 + .../gems/jekyll-paginate-1.1.0/script/cibuild | 3 + .../jekyll-paginate-1.1.0/script/unbundle | 8 + .../jekyll-paginate-1.1.0/spec/pager_spec.rb | 134 + .../spec/pagination_spec.rb | 0 .../spec/source/_posts/2014-05-20-blah.html | 0 .../spec/source/_posts/2014-05-21-bleh.html | 0 .../spec/source/_posts/2014-05-22-humor.html | 0 .../source/_posts/2014-05-23-hey-there.html | 0 .../source/_posts/2014-05-24-whateva.html | 0 .../spec/source/_posts/2014-05-25-oh-yes.html | 0 .../spec/source/contacts/index.html | 2 + .../spec/source/index.html | 2 + .../jekyll-paginate-1.1.0/spec/spec_helper.rb | 97 + .../lib/jekyll-sass-converter.rb | 8 + .../lib/jekyll-sass-converter/version.rb | 5 + .../lib/jekyll/converters/sass.rb | 22 + .../lib/jekyll/converters/scss.rb | 132 + .../gems/jekyll-seo-tag-2.5.0/.gitignore | 12 + .../2.5.0/gems/jekyll-seo-tag-2.5.0/.rspec | 2 + .../gems/jekyll-seo-tag-2.5.0/.rubocop.yml | 20 + .../gems/jekyll-seo-tag-2.5.0/.travis.yml | 13 + .../2.5.0/gems/jekyll-seo-tag-2.5.0/Gemfile | 7 + .../jekyll-seo-tag-2.5.0/History.markdown | 118 + .../gems/jekyll-seo-tag-2.5.0/LICENSE.txt | 21 + .../gems/jekyll-seo-tag-2.5.0/docs/README.md | 33 + .../jekyll-seo-tag-2.5.0/docs/_config.yml | 10 + .../docs/_layouts/default.html | 18 + .../docs/advanced-usage.md | 140 + .../jekyll-seo-tag-2.5.0/docs/installation.md | 24 + .../gems/jekyll-seo-tag-2.5.0/docs/usage.md | 74 + .../jekyll-seo-tag.gemspec | 36 + .../lib/jekyll-seo-tag.rb | 90 + .../lib/jekyll-seo-tag/author_drop.rb | 87 + .../lib/jekyll-seo-tag/drop.rb | 236 + .../lib/jekyll-seo-tag/filters.rb | 14 + .../lib/jekyll-seo-tag/image_drop.rb | 72 + .../lib/jekyll-seo-tag/json_ld.rb | 31 + .../lib/jekyll-seo-tag/json_ld_drop.rb | 85 + .../lib/jekyll-seo-tag/url_helper.rb | 22 + .../lib/jekyll-seo-tag/version.rb | 10 + .../jekyll-seo-tag-2.5.0/lib/template.html | 110 + .../jekyll-seo-tag-2.5.0/script/bootstrap | 5 + .../gems/jekyll-seo-tag-2.5.0/script/cibuild | 7 + .../gems/jekyll-seo-tag-2.5.0/script/release | 38 + .../gems/jekyll-seo-tag-2.5.0/script/site | 3 + .../gems/jekyll-sitemap-1.2.0/.gitignore | 4 + .../2.5.0/gems/jekyll-sitemap-1.2.0/.rspec | 2 + .../gems/jekyll-sitemap-1.2.0/.rubocop.yml | 11 + .../gems/jekyll-sitemap-1.2.0/.travis.yml | 49 + .../2.5.0/gems/jekyll-sitemap-1.2.0/Gemfile | 8 + .../jekyll-sitemap-1.2.0/History.markdown | 187 + .../gems/jekyll-sitemap-1.2.0/LICENSE.md | 21 + .../2.5.0/gems/jekyll-sitemap-1.2.0/README.md | 79 + .../2.5.0/gems/jekyll-sitemap-1.2.0/Rakefile | 8 + .../jekyll-sitemap.gemspec | 28 + .../lib/jekyll-sitemap.rb | 4 + .../lib/jekyll-sitemap/version.rb | 7 + .../lib/jekyll/jekyll-sitemap.rb | 72 + .../lib/jekyll/page_without_a_file.rb | 9 + .../gems/jekyll-sitemap-1.2.0/lib/robots.txt | 1 + .../gems/jekyll-sitemap-1.2.0/lib/sitemap.xml | 36 + .../jekyll-sitemap-1.2.0/script/bootstrap | 4 + .../gems/jekyll-sitemap-1.2.0/script/cibuild | 5 + .../gems/jekyll-sitemap-1.2.0/script/console | 34 + .../gems/jekyll-sitemap-1.2.0/script/fmt | 10 + .../gems/jekyll-sitemap-1.2.0/script/release | 7 + .../gems/jekyll-sitemap-1.2.0/script/test | 5 + .../jekyll-sitemap-1.2.0/spec/fixtures/404.md | 4 + .../spec/fixtures/_config.yml | 19 + .../spec/fixtures/_layouts/some_default.html | 4 + .../_my_collection/custom_permalink.md | 5 + .../_my_collection/custom_permalink_2.md | 5 + .../spec/fixtures/_my_collection/test.html | 4 + .../this-has-non-standard-chars.md | 5 + .../spec/fixtures/_other_things/test2.html | 4 + .../_posts/2013-12-12-dec-the-second.md | 4 + .../_posts/2014-03-02-march-the-second.md | 4 + .../_posts/2014-03-04-march-the-fourth.md | 4 + .../_posts/2014-05-11-exclude-this-post.md | 5 + .../2015-01-18-jekyll-last-modified-at.md | 4 + .../2016-04-01-\351\224\231\350\257\257.html" | 2 + .../2016-04-02-\351\224\231\350\257\257.html" | 3 + .../2016-04-03-\351\224\231\350\257\257.html" | 3 + .../spec/fixtures/feeds/atom.xml | 6 + .../spec/fixtures/images/hubot.png | Bin 0 -> 54008 bytes .../spec/fixtures/index.html | 4 + .../jekyll-last-modified-at/page.html | 4 + .../some-subfolder/exclude-this-page.html | 5 + .../spec/fixtures/some-subfolder/htm.htm | 1 + .../spec/fixtures/some-subfolder/index.html | 1 + .../fixtures/some-subfolder/test_index.html | 4 + .../some-subfolder/this-is-a-subfile.html | 0 .../some-subfolder/this-is-a-subpage.html | 4 + .../spec/fixtures/some-subfolder/xhtml.xhtml | 1 + .../spec/fixtures/static_files/404.html | 1 + .../spec/fixtures/static_files/excluded.pdf | Bin .../spec/fixtures/static_files/html_file.html | 0 .../spec/fixtures/static_files/test.pdf | Bin .../spec/jekyll-sitemap_spec.rb | 207 + .../jekyll-sitemap-1.2.0/spec/spec_helper.rb | 23 + .../spec/test_jekyll-last-modified-at.rb | 36 + .../jekyll-watch-2.1.2/lib/jekyll-watch.rb | 5 + .../lib/jekyll-watch/version.rb | 7 + .../lib/jekyll/commands/watch.rb | 18 + .../jekyll-watch-2.1.2/lib/jekyll/watcher.rb | 127 + .../ruby/2.5.0/gems/kramdown-1.17.0/AUTHORS | 1 + .../2.5.0/gems/kramdown-1.17.0/CONTRIBUTERS | 65 + .../ruby/2.5.0/gems/kramdown-1.17.0/COPYING | 30 + .../ruby/2.5.0/gems/kramdown-1.17.0/README.md | 71 + .../ruby/2.5.0/gems/kramdown-1.17.0/Rakefile | 341 + .../ruby/2.5.0/gems/kramdown-1.17.0/VERSION | 1 + .../kramdown-1.17.0/benchmark/benchmark.rb | 43 + .../kramdown-1.17.0/benchmark/benchmark.sh | 74 + .../benchmark/generate_data.rb | 119 + .../kramdown-1.17.0/benchmark/mdbasics.text | 306 + .../kramdown-1.17.0/benchmark/mdsyntax.text | 888 ++ .../gems/kramdown-1.17.0/benchmark/testing.sh | 12 + .../gems/kramdown-1.17.0/benchmark/timing.sh | 10 + .../2.5.0/gems/kramdown-1.17.0/bin/kramdown | 104 + .../data/kramdown/document.html | 22 + .../data/kramdown/document.latex | 50 + .../gems/kramdown-1.17.0/doc/_design.scss | 441 + .../2.5.0/gems/kramdown-1.17.0/doc/bg.png | Bin 0 -> 56156 bytes .../gems/kramdown-1.17.0/doc/default.scss | 217 + .../gems/kramdown-1.17.0/doc/default.template | 62 + .../kramdown-1.17.0/doc/documentation.page | 84 + .../doc/documentation.template | 36 + .../2.5.0/gems/kramdown-1.17.0/doc/index.page | 113 + .../kramdown-1.17.0/doc/installation.page | 88 + .../gems/kramdown-1.17.0/doc/links.markdown | 6 + .../2.5.0/gems/kramdown-1.17.0/doc/metainfo | 13 + .../2.5.0/gems/kramdown-1.17.0/doc/news.feed | 9 + .../2.5.0/gems/kramdown-1.17.0/doc/news.page | 29 + .../gems/kramdown-1.17.0/doc/options.page | 49 + .../gems/kramdown-1.17.0/doc/quickref.page | 603 + .../gems/kramdown-1.17.0/doc/sidebar.template | 22 + .../gems/kramdown-1.17.0/doc/sitemap.sitemap | 5 + .../gems/kramdown-1.17.0/doc/syntax.page | 1799 +++ .../2.5.0/gems/kramdown-1.17.0/doc/tests.page | 104 + .../2.5.0/gems/kramdown-1.17.0/doc/virtual | 14 + .../gems/kramdown-1.17.0/lib/kramdown.rb | 10 + .../kramdown-1.17.0/lib/kramdown/converter.rb | 69 + .../lib/kramdown/converter/base.rb | 267 + .../lib/kramdown/converter/hash_ast.rb | 38 + .../lib/kramdown/converter/html.rb | 498 + .../lib/kramdown/converter/kramdown.rb | 438 + .../lib/kramdown/converter/latex.rb | 619 + .../lib/kramdown/converter/man.rb | 303 + .../converter/math_engine/itex2mml.rb | 39 + .../kramdown/converter/math_engine/katex.rb | 35 + .../kramdown/converter/math_engine/mathjax.rb | 58 + .../converter/math_engine/mathjaxnode.rb | 56 + .../kramdown/converter/math_engine/ritex.rb | 38 + .../kramdown/converter/math_engine/sskatex.rb | 97 + .../lib/kramdown/converter/pdf.rb | 625 + .../kramdown/converter/remove_html_tags.rb | 57 + .../kramdown/converter/syntax_highlighter.rb | 56 + .../converter/syntax_highlighter/coderay.rb | 81 + .../converter/syntax_highlighter/minted.rb | 35 + .../converter/syntax_highlighter/rouge.rb | 74 + .../lib/kramdown/converter/toc.rb | 69 + .../kramdown-1.17.0/lib/kramdown/document.rb | 141 + .../kramdown-1.17.0/lib/kramdown/element.rb | 522 + .../kramdown-1.17.0/lib/kramdown/error.rb | 17 + .../kramdown-1.17.0/lib/kramdown/options.rb | 681 + .../kramdown-1.17.0/lib/kramdown/parser.rb | 27 + .../lib/kramdown/parser/base.rb | 128 + .../lib/kramdown/parser/gfm.rb | 188 + .../lib/kramdown/parser/html.rb | 600 + .../lib/kramdown/parser/kramdown.rb | 371 + .../kramdown/parser/kramdown/abbreviation.rb | 75 + .../lib/kramdown/parser/kramdown/autolink.rb | 31 + .../kramdown/parser/kramdown/blank_line.rb | 30 + .../parser/kramdown/block_boundary.rb | 33 + .../kramdown/parser/kramdown/blockquote.rb | 39 + .../lib/kramdown/parser/kramdown/codeblock.rb | 58 + .../lib/kramdown/parser/kramdown/codespan.rb | 44 + .../lib/kramdown/parser/kramdown/emphasis.rb | 61 + .../lib/kramdown/parser/kramdown/eob.rb | 26 + .../kramdown/parser/kramdown/escaped_chars.rb | 25 + .../kramdown/parser/kramdown/extensions.rb | 203 + .../lib/kramdown/parser/kramdown/footnote.rb | 63 + .../lib/kramdown/parser/kramdown/header.rb | 69 + .../parser/kramdown/horizontal_rule.rb | 27 + .../lib/kramdown/parser/kramdown/html.rb | 163 + .../kramdown/parser/kramdown/html_entity.rb | 33 + .../kramdown/parser/kramdown/line_break.rb | 25 + .../lib/kramdown/parser/kramdown/link.rb | 146 + .../lib/kramdown/parser/kramdown/list.rb | 255 + .../lib/kramdown/parser/kramdown/math.rb | 54 + .../lib/kramdown/parser/kramdown/paragraph.rb | 62 + .../kramdown/parser/kramdown/smart_quotes.rb | 174 + .../lib/kramdown/parser/kramdown/table.rb | 170 + .../parser/kramdown/typographic_symbol.rb | 44 + .../lib/kramdown/parser/markdown.rb | 56 + .../kramdown-1.17.0/lib/kramdown/utils.rb | 46 + .../lib/kramdown/utils/configurable.rb | 44 + .../lib/kramdown/utils/entities.rb | 347 + .../lib/kramdown/utils/html.rb | 77 + .../lib/kramdown/utils/lru_cache.rb | 40 + .../lib/kramdown/utils/ordered_hash.rb | 18 + .../lib/kramdown/utils/string_scanner.rb | 82 + .../lib/kramdown/utils/unidecoder.rb | 48 + .../kramdown-1.17.0/lib/kramdown/version.rb | 15 + .../gems/kramdown-1.17.0/man/man1/kramdown.1 | 420 + .../ruby/2.5.0/gems/kramdown-1.17.0/setup.rb | 1585 ++ .../gems/kramdown-1.17.0/test/run_tests.rb | 46 + .../gems/kramdown-1.17.0/test/test_files.rb | 466 + .../kramdown-1.17.0/test/test_location.rb | 238 + .../test/test_string_scanner_kramdown.rb | 30 + .../testcases/block/01_blank_line/spaces.html | 1 + .../testcases/block/01_blank_line/spaces.text | 3 + .../testcases/block/01_blank_line/tabs.html | 1 + .../testcases/block/01_blank_line/tabs.text | 6 + .../testcases/block/02_eob/beginning.html | 1 + .../testcases/block/02_eob/beginning.text | 3 + .../test/testcases/block/02_eob/end.html | 1 + .../test/testcases/block/02_eob/end.text | 3 + .../test/testcases/block/02_eob/middle.html | 1 + .../test/testcases/block/02_eob/middle.text | 5 + .../block/03_paragraph/indented.html | 18 + .../block/03_paragraph/indented.html.gfm | 18 + .../block/03_paragraph/indented.text | 19 + .../03_paragraph/line_break_last_line.html | 9 + .../03_paragraph/line_break_last_line.text | 9 + .../block/03_paragraph/no_newline_at_end.html | 5 + .../block/03_paragraph/no_newline_at_end.text | 5 + .../block/03_paragraph/one_para.html | 1 + .../block/03_paragraph/one_para.text | 1 + .../block/03_paragraph/two_para.html | 4 + .../block/03_paragraph/two_para.text | 4 + .../03_paragraph/with_html_to_native.html | 1 + .../03_paragraph/with_html_to_native.options | 1 + .../03_paragraph/with_html_to_native.text | 1 + .../testcases/block/04_header/atx_header.html | 51 + .../testcases/block/04_header/atx_header.text | 48 + .../atx_header_no_newline_at_end.html | 1 + .../atx_header_no_newline_at_end.text | 1 + .../block/04_header/header_type_offset.html | 11 + .../04_header/header_type_offset.kramdown | 12 + .../block/04_header/header_type_offset.latex | 12 + .../04_header/header_type_offset.options | 2 + .../block/04_header/header_type_offset.text | 13 + .../block/04_header/setext_header.html | 32 + .../block/04_header/setext_header.text | 39 + .../setext_header_no_newline_at_end.html | 1 + .../setext_header_no_newline_at_end.text | 2 + .../block/04_header/with_auto_id_prefix.html | 3 + .../04_header/with_auto_id_prefix.options | 2 + .../block/04_header/with_auto_id_prefix.text | 3 + .../04_header/with_auto_id_stripping.html | 1 + .../04_header/with_auto_id_stripping.options | 1 + .../04_header/with_auto_id_stripping.text | 1 + .../block/04_header/with_auto_ids.html | 21 + .../block/04_header/with_auto_ids.options | 2 + .../block/04_header/with_auto_ids.text | 24 + .../block/05_blockquote/indented.html | 25 + .../block/05_blockquote/indented.text | 14 + .../testcases/block/05_blockquote/lazy.html | 34 + .../testcases/block/05_blockquote/lazy.text | 20 + .../testcases/block/05_blockquote/nested.html | 10 + .../testcases/block/05_blockquote/nested.text | 6 + .../05_blockquote/no_newline_at_end.html | 4 + .../05_blockquote/no_newline_at_end.text | 2 + .../block/05_blockquote/very_long_line.html | 3 + .../block/05_blockquote/very_long_line.text | 1 + .../block/05_blockquote/with_code_blocks.html | 15 + .../block/05_blockquote/with_code_blocks.text | 11 + .../06_codeblock/disable-highlighting.html | 4 + .../06_codeblock/disable-highlighting.options | 1 + .../06_codeblock/disable-highlighting.text | 4 + .../testcases/block/06_codeblock/error.html | 4 + .../testcases/block/06_codeblock/error.text | 4 + .../highlighting-minted-with-opts.latex | 9 + .../highlighting-minted-with-opts.options | 4 + .../highlighting-minted-with-opts.text | 5 + .../06_codeblock/highlighting-minted.latex | 8 + .../06_codeblock/highlighting-minted.options | 3 + .../06_codeblock/highlighting-minted.text | 4 + .../block/06_codeblock/highlighting-opts.html | 6 + .../06_codeblock/highlighting-opts.options | 7 + .../block/06_codeblock/highlighting-opts.text | 4 + .../block/06_codeblock/highlighting.html | 6 + .../block/06_codeblock/highlighting.options | 5 + .../block/06_codeblock/highlighting.text | 4 + .../block/06_codeblock/issue_gh45.html | 164 + .../block/06_codeblock/issue_gh45.test | 188 + .../testcases/block/06_codeblock/lazy.html | 4 + .../testcases/block/06_codeblock/lazy.text | 5 + .../block/06_codeblock/no_newline_at_end.html | 2 + .../block/06_codeblock/no_newline_at_end.text | 1 + .../06_codeblock/no_newline_at_end_1.html | 2 + .../06_codeblock/no_newline_at_end_1.text | 2 + .../testcases/block/06_codeblock/normal.html | 13 + .../testcases/block/06_codeblock/normal.text | 10 + .../block/06_codeblock/rouge/disabled.html | 2 + .../block/06_codeblock/rouge/disabled.options | 4 + .../block/06_codeblock/rouge/disabled.text | 1 + .../block/06_codeblock/rouge/multiple.html | 11 + .../block/06_codeblock/rouge/multiple.options | 4 + .../block/06_codeblock/rouge/multiple.text | 11 + .../block/06_codeblock/rouge/simple.html | 10 + .../block/06_codeblock/rouge/simple.options | 3 + .../block/06_codeblock/rouge/simple.text | 9 + .../block/06_codeblock/tilde_syntax.html | 7 + .../block/06_codeblock/tilde_syntax.text | 9 + .../block/06_codeblock/whitespace.html | 3 + .../block/06_codeblock/whitespace.text | 3 + .../block/06_codeblock/with_blank_line.html | 13 + .../block/06_codeblock/with_blank_line.text | 12 + .../block/06_codeblock/with_eob_marker.html | 6 + .../block/06_codeblock/with_eob_marker.text | 5 + .../block/06_codeblock/with_ial.html | 6 + .../block/06_codeblock/with_ial.text | 5 + .../with_lang_in_fenced_block.html | 24 + .../with_lang_in_fenced_block.options | 2 + .../with_lang_in_fenced_block.text | 33 + .../with_lang_in_fenced_block_any_char.html | 8 + ...with_lang_in_fenced_block_any_char.options | 2 + .../with_lang_in_fenced_block_any_char.text | 11 + ...h_lang_in_fenced_block_name_with_dash.html | 3 + ...ang_in_fenced_block_name_with_dash.options | 2 + ...h_lang_in_fenced_block_name_with_dash.text | 4 + .../block/07_horizontal_rule/error.html | 7 + .../block/07_horizontal_rule/error.html.19 | 7 + .../block/07_horizontal_rule/error.text | 7 + .../block/07_horizontal_rule/normal.html | 19 + .../block/07_horizontal_rule/normal.text | 20 + .../block/07_horizontal_rule/sepspaces.html | 3 + .../block/07_horizontal_rule/sepspaces.text | 3 + .../block/07_horizontal_rule/septabs.html | 3 + .../block/07_horizontal_rule/septabs.text | 3 + .../block/08_list/brackets_in_item.latex | 3 + .../block/08_list/brackets_in_item.text | 1 + .../testcases/block/08_list/escaping.html | 17 + .../testcases/block/08_list/escaping.text | 17 + .../testcases/block/08_list/item_ial.html | 10 + .../testcases/block/08_list/item_ial.text | 8 + .../test/testcases/block/08_list/lazy.html | 39 + .../test/testcases/block/08_list/lazy.text | 29 + .../block/08_list/lazy_and_nested.html | 9 + .../block/08_list/lazy_and_nested.text | 4 + .../testcases/block/08_list/list_and_hr.html | 9 + .../testcases/block/08_list/list_and_hr.text | 5 + .../block/08_list/list_and_others.html | 40 + .../block/08_list/list_and_others.text | 26 + .../test/testcases/block/08_list/mixed.html | 117 + .../test/testcases/block/08_list/mixed.text | 66 + .../test/testcases/block/08_list/nested.html | 17 + .../test/testcases/block/08_list/nested.text | 7 + .../block/08_list/other_first_element.html | 39 + .../block/08_list/other_first_element.text | 18 + .../testcases/block/08_list/simple_ol.html | 19 + .../testcases/block/08_list/simple_ol.text | 13 + .../testcases/block/08_list/simple_ul.html | 48 + .../testcases/block/08_list/simple_ul.text | 36 + .../testcases/block/08_list/single_item.html | 3 + .../testcases/block/08_list/single_item.text | 1 + .../block/08_list/special_cases.html | 62 + .../block/08_list/special_cases.text | 40 + .../test/testcases/block/09_html/comment.html | 18 + .../test/testcases/block/09_html/comment.text | 15 + .../block/09_html/content_model/deflists.html | 6 + .../09_html/content_model/deflists.options | 1 + .../block/09_html/content_model/deflists.text | 6 + .../block/09_html/content_model/tables.html | 14 + .../09_html/content_model/tables.options | 1 + .../block/09_html/content_model/tables.text | 14 + .../block/09_html/html5_attributes.html | 13 + .../block/09_html/html5_attributes.text | 13 + .../block/09_html/html_after_block.html | 7 + .../block/09_html/html_after_block.text | 5 + .../block/09_html/html_and_codeblocks.html | 15 + .../block/09_html/html_and_codeblocks.options | 1 + .../block/09_html/html_and_codeblocks.text | 13 + .../block/09_html/html_and_headers.html | 5 + .../block/09_html/html_and_headers.text | 6 + .../block/09_html/html_to_native/code.html | 10 + .../block/09_html/html_to_native/code.text | 9 + .../block/09_html/html_to_native/comment.html | 7 + .../block/09_html/html_to_native/comment.text | 8 + .../09_html/html_to_native/emphasis.html | 6 + .../09_html/html_to_native/emphasis.text | 6 + .../block/09_html/html_to_native/entity.html | 1 + .../block/09_html/html_to_native/entity.text | 1 + .../block/09_html/html_to_native/header.html | 6 + .../09_html/html_to_native/header.options | 2 + .../block/09_html/html_to_native/header.text | 6 + .../block/09_html/html_to_native/list_dl.html | 8 + .../block/09_html/html_to_native/list_dl.text | 8 + .../block/09_html/html_to_native/list_ol.html | 15 + .../block/09_html/html_to_native/list_ol.text | 17 + .../block/09_html/html_to_native/list_ul.html | 19 + .../block/09_html/html_to_native/list_ul.text | 22 + .../block/09_html/html_to_native/options | 1 + .../09_html/html_to_native/paragraph.html | 3 + .../09_html/html_to_native/paragraph.text | 4 + .../09_html/html_to_native/table_normal.html | 12 + .../09_html/html_to_native/table_normal.text | 12 + .../09_html/html_to_native/table_simple.html | 61 + .../09_html/html_to_native/table_simple.text | 71 + .../09_html/html_to_native/typography.html | 1 + .../09_html/html_to_native/typography.html.19 | 1 + .../09_html/html_to_native/typography.text | 1 + .../block/09_html/invalid_html_1.html | 5 + .../block/09_html/invalid_html_1.text | 5 + .../block/09_html/invalid_html_2.html | 5 + .../block/09_html/invalid_html_2.text | 5 + .../block/09_html/markdown_attr.html | 38 + .../block/09_html/markdown_attr.text | 38 + .../testcases/block/09_html/not_parsed.html | 24 + .../testcases/block/09_html/not_parsed.text | 24 + .../testcases/block/09_html/parse_as_raw.html | 35 + .../block/09_html/parse_as_raw.htmlinput | 34 + .../block/09_html/parse_as_raw.options | 1 + .../testcases/block/09_html/parse_as_raw.text | 33 + .../block/09_html/parse_as_span.html | 12 + .../block/09_html/parse_as_span.htmlinput | 12 + .../block/09_html/parse_as_span.options | 1 + .../block/09_html/parse_as_span.text | 9 + .../block/09_html/parse_block_html.html | 21 + .../block/09_html/parse_block_html.options | 1 + .../block/09_html/parse_block_html.text | 17 + .../block/09_html/processing_instruction.html | 13 + .../block/09_html/processing_instruction.text | 12 + .../test/testcases/block/09_html/simple.html | 60 + .../testcases/block/09_html/simple.html.19 | 60 + .../testcases/block/09_html/simple.options | 1 + .../test/testcases/block/09_html/simple.text | 55 + .../testcases/block/09_html/textarea.html | 8 + .../testcases/block/09_html/textarea.text | 8 + .../test/testcases/block/09_html/xml.html | 8 + .../test/testcases/block/09_html/xml.text | 7 + .../test/testcases/block/10_ald/simple.html | 2 + .../test/testcases/block/10_ald/simple.text | 8 + .../block/11_ial/auto_id_and_ial.html | 1 + .../block/11_ial/auto_id_and_ial.options | 1 + .../block/11_ial/auto_id_and_ial.text | 2 + .../test/testcases/block/11_ial/nested.html | 11 + .../test/testcases/block/11_ial/nested.text | 15 + .../test/testcases/block/11_ial/simple.html | 29 + .../test/testcases/block/11_ial/simple.text | 41 + .../testcases/block/12_extension/comment.html | 8 + .../testcases/block/12_extension/comment.text | 12 + .../testcases/block/12_extension/ignored.html | 8 + .../testcases/block/12_extension/ignored.text | 8 + .../block/12_extension/nomarkdown.html | 10 + .../block/12_extension/nomarkdown.kramdown | 20 + .../block/12_extension/nomarkdown.latex | 13 + .../block/12_extension/nomarkdown.text | 21 + .../testcases/block/12_extension/options.html | 21 + .../testcases/block/12_extension/options.text | 21 + .../block/12_extension/options2.html | 10 + .../block/12_extension/options2.text | 5 + .../block/12_extension/options3.html | 7 + .../block/12_extension/options3.text | 7 + .../block/13_definition_list/auto_ids.html | 15 + .../block/13_definition_list/auto_ids.text | 18 + .../definition_at_beginning.html | 1 + .../definition_at_beginning.text | 1 + .../block/13_definition_list/deflist_ial.html | 4 + .../block/13_definition_list/deflist_ial.text | 4 + .../block/13_definition_list/item_ial.html | 17 + .../block/13_definition_list/item_ial.text | 16 + .../13_definition_list/multiple_terms.html | 13 + .../13_definition_list/multiple_terms.text | 10 + .../block/13_definition_list/no_def_list.html | 2 + .../block/13_definition_list/no_def_list.text | 2 + .../13_definition_list/para_wrapping.html | 10 + .../13_definition_list/para_wrapping.text | 6 + .../13_definition_list/separated_by_eob.html | 8 + .../13_definition_list/separated_by_eob.text | 5 + .../block/13_definition_list/simple.html | 10 + .../block/13_definition_list/simple.text | 10 + .../13_definition_list/styled_terms.html | 4 + .../13_definition_list/styled_terms.text | 2 + .../13_definition_list/too_much_space.html | 3 + .../13_definition_list/too_much_space.text | 4 + .../block/13_definition_list/with_blocks.html | 38 + .../block/13_definition_list/with_blocks.text | 24 + .../block/14_table/empty_tag_in_cell.html | 8 + .../block/14_table/empty_tag_in_cell.options | 1 + .../block/14_table/empty_tag_in_cell.text | 1 + .../test/testcases/block/14_table/errors.html | 12 + .../test/testcases/block/14_table/errors.text | 13 + .../testcases/block/14_table/escaping.html | 52 + .../testcases/block/14_table/escaping.text | 19 + .../test/testcases/block/14_table/footer.html | 65 + .../test/testcases/block/14_table/footer.text | 25 + .../test/testcases/block/14_table/header.html | 117 + .../test/testcases/block/14_table/header.text | 39 + .../testcases/block/14_table/no_table.html | 3 + .../testcases/block/14_table/no_table.text | 3 + .../test/testcases/block/14_table/simple.html | 192 + .../test/testcases/block/14_table/simple.text | 53 + .../block/14_table/table_with_footnote.html | 25 + .../block/14_table/table_with_footnote.latex | 11 + .../block/14_table/table_with_footnote.text | 6 + .../test/testcases/block/15_math/gh_128.html | 2 + .../test/testcases/block/15_math/gh_128.text | 1 + .../testcases/block/15_math/itex2mml.html | 1 + .../testcases/block/15_math/itex2mml.options | 1 + .../testcases/block/15_math/itex2mml.text | 1 + .../testcases/block/15_math/katex.html.19 | 2 + .../testcases/block/15_math/katex.options | 1 + .../test/testcases/block/15_math/katex.text | 2 + .../block/15_math/mathjax_preview.html | 4 + .../block/15_math/mathjax_preview.options | 2 + .../block/15_math/mathjax_preview.text | 5 + .../15_math/mathjax_preview_as_code.html | 4 + .../15_math/mathjax_preview_as_code.options | 3 + .../15_math/mathjax_preview_as_code.text | 5 + .../block/15_math/mathjax_preview_simple.html | 4 + .../15_math/mathjax_preview_simple.options | 2 + .../block/15_math/mathjax_preview_simple.text | 5 + .../block/15_math/mathjaxnode.html.19 | 27 + .../block/15_math/mathjaxnode.options | 1 + .../testcases/block/15_math/mathjaxnode.text | 1 + .../15_math/mathjaxnode_notexhints.html.19 | 23 + .../15_math/mathjaxnode_notexhints.options | 3 + .../block/15_math/mathjaxnode_notexhints.text | 1 + .../15_math/mathjaxnode_semantics.html.19 | 32 + .../15_math/mathjaxnode_semantics.options | 3 + .../block/15_math/mathjaxnode_semantics.text | 1 + .../testcases/block/15_math/no_engine.html | 3 + .../testcases/block/15_math/no_engine.options | 1 + .../testcases/block/15_math/no_engine.text | 2 + .../test/testcases/block/15_math/normal.html | 29 + .../test/testcases/block/15_math/normal.text | 30 + .../test/testcases/block/15_math/ritex.html | 1 + .../testcases/block/15_math/ritex.options | 1 + .../test/testcases/block/15_math/ritex.text | 1 + .../testcases/block/15_math/sskatex.html.19 | 2 + .../testcases/block/15_math/sskatex.options | 1 + .../test/testcases/block/15_math/sskatex.text | 2 + .../test/testcases/block/16_toc/no_toc.html | 14 + .../test/testcases/block/16_toc/no_toc.text | 16 + .../testcases/block/16_toc/toc_exclude.html | 35 + .../block/16_toc/toc_exclude.options | 1 + .../testcases/block/16_toc/toc_exclude.text | 19 + .../testcases/block/16_toc/toc_levels.html | 24 + .../testcases/block/16_toc/toc_levels.options | 2 + .../testcases/block/16_toc/toc_levels.text | 16 + .../block/16_toc/toc_with_footnotes.html | 13 + .../block/16_toc/toc_with_footnotes.options | 1 + .../block/16_toc/toc_with_footnotes.text | 6 + .../block/16_toc/toc_with_links.html | 8 + .../block/16_toc/toc_with_links.options | 2 + .../block/16_toc/toc_with_links.text | 8 + .../test/testcases/encoding.html | 46 + .../test/testcases/encoding.text | 28 + .../test/testcases/man/example.man | 123 + .../test/testcases/man/example.text | 85 + .../man/heading-name-dash-description.man | 4 + .../man/heading-name-dash-description.text | 1 + .../man/heading-name-description.man | 4 + .../man/heading-name-description.text | 2 + .../man/heading-name-section-description.man | 4 + .../man/heading-name-section-description.text | 1 + .../testcases/man/heading-name-section.man | 2 + .../testcases/man/heading-name-section.text | 1 + .../test/testcases/man/heading-name.man | 2 + .../test/testcases/man/heading-name.text | 1 + .../test/testcases/man/sections.man | 4 + .../test/testcases/man/sections.text | 11 + .../test/testcases/man/text-escaping.man | 8 + .../test/testcases/man/text-escaping.text | 7 + .../test/testcases/span/01_link/empty.html | 5 + .../test/testcases/span/01_link/empty.text | 5 + .../span/01_link/empty_title.htmlinput | 3 + .../testcases/span/01_link/empty_title.text | 7 + .../testcases/span/01_link/image_in_a.html | 5 + .../testcases/span/01_link/image_in_a.text | 5 + .../testcases/span/01_link/imagelinks.html | 15 + .../testcases/span/01_link/imagelinks.text | 18 + .../test/testcases/span/01_link/inline.html | 46 + .../testcases/span/01_link/inline.html.19 | 46 + .../test/testcases/span/01_link/inline.text | 48 + .../span/01_link/latex_escaping.latex | 6 + .../span/01_link/latex_escaping.text | 5 + .../testcases/span/01_link/link_defs.html | 9 + .../testcases/span/01_link/link_defs.text | 27 + .../span/01_link/link_defs_with_ial.html | 4 + .../span/01_link/link_defs_with_ial.text | 16 + .../01_link/links_with_angle_brackets.html | 3 + .../01_link/links_with_angle_brackets.text | 3 + .../testcases/span/01_link/reference.html | 37 + .../testcases/span/01_link/reference.html.19 | 37 + .../testcases/span/01_link/reference.options | 3 + .../testcases/span/01_link/reference.text | 53 + .../testcases/span/02_emphasis/empty.html | 3 + .../testcases/span/02_emphasis/empty.text | 3 + .../testcases/span/02_emphasis/errors.html | 9 + .../testcases/span/02_emphasis/errors.text | 9 + .../testcases/span/02_emphasis/nesting.html | 41 + .../testcases/span/02_emphasis/nesting.text | 36 + .../testcases/span/02_emphasis/normal.html | 61 + .../testcases/span/02_emphasis/normal.options | 1 + .../testcases/span/02_emphasis/normal.text | 59 + .../testcases/span/03_codespan/empty.html | 5 + .../testcases/span/03_codespan/empty.text | 5 + .../testcases/span/03_codespan/errors.html | 1 + .../testcases/span/03_codespan/errors.text | 1 + .../03_codespan/highlighting-minted.latex | 2 + .../03_codespan/highlighting-minted.options | 1 + .../span/03_codespan/highlighting-minted.text | 1 + .../span/03_codespan/highlighting.html | 1 + .../span/03_codespan/highlighting.text | 1 + .../testcases/span/03_codespan/normal.html | 16 + .../testcases/span/03_codespan/normal.text | 16 + .../span/03_codespan/rouge/disabled.html | 1 + .../span/03_codespan/rouge/disabled.options | 4 + .../span/03_codespan/rouge/disabled.text | 1 + .../span/03_codespan/rouge/simple.html | 1 + .../span/03_codespan/rouge/simple.options | 1 + .../span/03_codespan/rouge/simple.text | 1 + .../span/04_footnote/backlink_inline.html | 79 + .../span/04_footnote/backlink_inline.options | 1 + .../span/04_footnote/backlink_inline.text | 38 + .../span/04_footnote/backlink_text.html | 9 + .../span/04_footnote/backlink_text.options | 1 + .../span/04_footnote/backlink_text.text | 3 + .../span/04_footnote/definitions.html | 17 + .../span/04_footnote/definitions.latex | 17 + .../span/04_footnote/definitions.text | 24 + .../span/04_footnote/footnote_nr.html | 12 + .../span/04_footnote/footnote_nr.latex | 2 + .../span/04_footnote/footnote_nr.options | 1 + .../span/04_footnote/footnote_nr.text | 4 + .../span/04_footnote/inside_footnote.html | 17 + .../span/04_footnote/inside_footnote.text | 9 + .../testcases/span/04_footnote/markers.html | 46 + .../testcases/span/04_footnote/markers.latex | 23 + .../span/04_footnote/markers.options | 2 + .../testcases/span/04_footnote/markers.text | 27 + .../testcases/span/04_footnote/placement.html | 11 + .../span/04_footnote/placement.options | 1 + .../testcases/span/04_footnote/placement.text | 8 + .../span/04_footnote/regexp_problem.html | 14 + .../span/04_footnote/regexp_problem.options | 2 + .../span/04_footnote/regexp_problem.text | 52 + .../span/04_footnote/without_backlink.html | 9 + .../span/04_footnote/without_backlink.options | 1 + .../span/04_footnote/without_backlink.text | 3 + .../testcases/span/05_html/across_lines.html | 1 + .../testcases/span/05_html/across_lines.text | 2 + .../test/testcases/span/05_html/button.html | 7 + .../test/testcases/span/05_html/button.text | 7 + .../test/testcases/span/05_html/invalid.html | 1 + .../test/testcases/span/05_html/invalid.text | 1 + .../span/05_html/link_with_mailto.html | 1 + .../span/05_html/link_with_mailto.text | 1 + .../testcases/span/05_html/mark_element.html | 3 + .../testcases/span/05_html/mark_element.text | 3 + .../testcases/span/05_html/markdown_attr.html | 6 + .../testcases/span/05_html/markdown_attr.text | 6 + .../test/testcases/span/05_html/normal.html | 43 + .../test/testcases/span/05_html/normal.text | 43 + .../span/05_html/raw_span_elements.html | 2 + .../span/05_html/raw_span_elements.text | 2 + .../test/testcases/span/05_html/xml.html | 5 + .../test/testcases/span/05_html/xml.text | 5 + .../testcases/span/abbreviations/abbrev.html | 21 + .../testcases/span/abbreviations/abbrev.text | 34 + .../span/abbreviations/abbrev_defs.html | 2 + .../span/abbreviations/abbrev_defs.text | 5 + .../span/abbreviations/in_footnote.html | 9 + .../span/abbreviations/in_footnote.text | 5 + .../testcases/span/autolinks/url_links.html | 15 + .../testcases/span/autolinks/url_links.text | 16 + .../testcases/span/escaped_chars/normal.html | 47 + .../testcases/span/escaped_chars/normal.text | 47 + .../testcases/span/extension/comment.html | 6 + .../testcases/span/extension/comment.text | 6 + .../testcases/span/extension/ignored.html | 1 + .../testcases/span/extension/ignored.text | 1 + .../testcases/span/extension/nomarkdown.html | 1 + .../testcases/span/extension/nomarkdown.text | 1 + .../testcases/span/extension/options.html | 1 + .../testcases/span/extension/options.text | 1 + .../test/testcases/span/ial/simple.html | 6 + .../test/testcases/span/ial/simple.text | 6 + .../testcases/span/line_breaks/normal.html | 11 + .../testcases/span/line_breaks/normal.latex | 12 + .../testcases/span/line_breaks/normal.text | 11 + .../test/testcases/span/math/itex2mml.html | 1 + .../test/testcases/span/math/itex2mml.options | 1 + .../test/testcases/span/math/itex2mml.text | 1 + .../test/testcases/span/math/katex.html.19 | 1 + .../test/testcases/span/math/katex.options | 1 + .../test/testcases/span/math/katex.text | 1 + .../testcases/span/math/mathjaxnode.html.19 | 27 + .../testcases/span/math/mathjaxnode.options | 1 + .../test/testcases/span/math/mathjaxnode.text | 1 + .../test/testcases/span/math/no_engine.html | 1 + .../testcases/span/math/no_engine.options | 1 + .../test/testcases/span/math/no_engine.text | 1 + .../test/testcases/span/math/normal.html | 10 + .../test/testcases/span/math/normal.text | 10 + .../test/testcases/span/math/ritex.html | 1 + .../test/testcases/span/math/ritex.options | 1 + .../test/testcases/span/math/ritex.text | 1 + .../test/testcases/span/math/sskatex.html.19 | 1 + .../test/testcases/span/math/sskatex.options | 1 + .../test/testcases/span/math/sskatex.text | 1 + .../span/text_substitutions/entities.html | 6 + .../span/text_substitutions/entities.options | 1 + .../span/text_substitutions/entities.text | 6 + .../text_substitutions/entities_as_char.html | 1 + .../entities_as_char.html.19 | 1 + .../entities_as_char.options | 2 + .../text_substitutions/entities_as_char.text | 1 + .../text_substitutions/entities_as_input.html | 1 + .../entities_as_input.options | 1 + .../text_substitutions/entities_as_input.text | 1 + .../text_substitutions/entities_numeric.html | 1 + .../entities_numeric.options | 1 + .../text_substitutions/entities_numeric.text | 1 + .../text_substitutions/entities_symbolic.html | 1 + .../entities_symbolic.options | 1 + .../text_substitutions/entities_symbolic.text | 1 + .../span/text_substitutions/greaterthan.html | 1 + .../span/text_substitutions/greaterthan.text | 1 + .../span/text_substitutions/lowerthan.html | 1 + .../span/text_substitutions/lowerthan.text | 1 + .../span/text_substitutions/typography.html | 40 + .../text_substitutions/typography.options | 1 + .../span/text_substitutions/typography.text | 40 + .../text_substitutions/typography_subst.html | 3 + .../text_substitutions/typography_subst.latex | 4 + .../typography_subst.options | 8 + .../text_substitutions/typography_subst.text | 3 + .../test/testcases_gfm/atx_header.html | 3 + .../test/testcases_gfm/atx_header.text | 3 + .../backticks_disable_highlighting.html | 2 + .../backticks_disable_highlighting.options | 1 + .../backticks_disable_highlighting.text | 3 + .../test/testcases_gfm/backticks_syntax.html | 20 + .../test/testcases_gfm/backticks_syntax.text | 19 + .../test/testcases_gfm/codeblock_fenced.html | 20 + .../testcases_gfm/codeblock_fenced.options | 1 + .../test/testcases_gfm/codeblock_fenced.text | 21 + .../test/testcases_gfm/hard_line_breaks.html | 3 + .../test/testcases_gfm/hard_line_breaks.text | 3 + .../testcases_gfm/hard_line_breaks_off.html | 2 + .../hard_line_breaks_off.options | 1 + .../testcases_gfm/hard_line_breaks_off.text | 2 + .../test/testcases_gfm/header_ids.html | 27 + .../test/testcases_gfm/header_ids.html.19 | 27 + .../test/testcases_gfm/header_ids.options | 1 + .../test/testcases_gfm/header_ids.text | 27 + .../testcases_gfm/header_ids_with_prefix.html | 3 + .../header_ids_with_prefix.options | 2 + .../testcases_gfm/header_ids_with_prefix.text | 3 + .../test/testcases_gfm/no_typographic.html | 3 + .../test/testcases_gfm/no_typographic.html.19 | 3 + .../test/testcases_gfm/no_typographic.options | 1 + .../test/testcases_gfm/no_typographic.text | 3 + .../testcases_gfm/paragraph_end-disabled.html | 31 + .../paragraph_end-disabled.options | 1 + .../testcases_gfm/paragraph_end-disabled.text | 27 + .../test/testcases_gfm/paragraph_end.html | 38 + .../test/testcases_gfm/paragraph_end.text | 27 + .../test/testcases_gfm/strikethrough.html | 27 + .../test/testcases_gfm/strikethrough.html.19 | 27 + .../test/testcases_gfm/strikethrough.text | 27 + .../test/testcases_gfm/task_list.html | 40 + .../test/testcases_gfm/task_list.text | 26 + .../two_para_hard_line_breaks.html | 4 + .../two_para_hard_line_breaks.text | 4 + .../ruby/2.5.0/gems/liquid-4.0.1/History.md | 235 + .../ruby/2.5.0/gems/liquid-4.0.1/LICENSE | 20 + .../ruby/2.5.0/gems/liquid-4.0.1/README.md | 108 + .../2.5.0/gems/liquid-4.0.1/lib/liquid.rb | 79 + .../gems/liquid-4.0.1/lib/liquid/block.rb | 77 + .../liquid-4.0.1/lib/liquid/block_body.rb | 142 + .../gems/liquid-4.0.1/lib/liquid/condition.rb | 142 + .../gems/liquid-4.0.1/lib/liquid/context.rb | 226 + .../gems/liquid-4.0.1/lib/liquid/document.rb | 27 + .../gems/liquid-4.0.1/lib/liquid/drop.rb | 78 + .../gems/liquid-4.0.1/lib/liquid/errors.rb | 56 + .../liquid-4.0.1/lib/liquid/expression.rb | 49 + .../liquid-4.0.1/lib/liquid/extensions.rb | 74 + .../liquid-4.0.1/lib/liquid/file_system.rb | 73 + .../liquid-4.0.1/lib/liquid/forloop_drop.rb | 42 + .../gems/liquid-4.0.1/lib/liquid/i18n.rb | 39 + .../liquid-4.0.1/lib/liquid/interrupts.rb | 16 + .../gems/liquid-4.0.1/lib/liquid/lexer.rb | 55 + .../liquid-4.0.1/lib/liquid/locales/en.yml | 26 + .../liquid-4.0.1/lib/liquid/parse_context.rb | 38 + .../gems/liquid-4.0.1/lib/liquid/parser.rb | 90 + .../lib/liquid/parser_switching.rb | 31 + .../gems/liquid-4.0.1/lib/liquid/profiler.rb | 158 + .../liquid-4.0.1/lib/liquid/profiler/hooks.rb | 23 + .../liquid-4.0.1/lib/liquid/range_lookup.rb | 37 + .../lib/liquid/resource_limits.rb | 23 + .../lib/liquid/standardfilters.rb | 456 + .../gems/liquid-4.0.1/lib/liquid/strainer.rb | 66 + .../lib/liquid/tablerowloop_drop.rb | 62 + .../2.5.0/gems/liquid-4.0.1/lib/liquid/tag.rb | 43 + .../liquid-4.0.1/lib/liquid/tags/assign.rb | 51 + .../liquid-4.0.1/lib/liquid/tags/break.rb | 18 + .../liquid-4.0.1/lib/liquid/tags/capture.rb | 38 + .../gems/liquid-4.0.1/lib/liquid/tags/case.rb | 86 + .../liquid-4.0.1/lib/liquid/tags/comment.rb | 16 + .../liquid-4.0.1/lib/liquid/tags/continue.rb | 18 + .../liquid-4.0.1/lib/liquid/tags/cycle.rb | 57 + .../liquid-4.0.1/lib/liquid/tags/decrement.rb | 35 + .../gems/liquid-4.0.1/lib/liquid/tags/for.rb | 198 + .../gems/liquid-4.0.1/lib/liquid/tags/if.rb | 114 + .../liquid-4.0.1/lib/liquid/tags/ifchanged.rb | 18 + .../liquid-4.0.1/lib/liquid/tags/include.rb | 113 + .../liquid-4.0.1/lib/liquid/tags/increment.rb | 31 + .../gems/liquid-4.0.1/lib/liquid/tags/raw.rb | 47 + .../liquid-4.0.1/lib/liquid/tags/table_row.rb | 54 + .../liquid-4.0.1/lib/liquid/tags/unless.rb | 30 + .../gems/liquid-4.0.1/lib/liquid/template.rb | 254 + .../gems/liquid-4.0.1/lib/liquid/tokenizer.rb | 31 + .../gems/liquid-4.0.1/lib/liquid/utils.rb | 83 + .../gems/liquid-4.0.1/lib/liquid/variable.rb | 142 + .../lib/liquid/variable_lookup.rb | 82 + .../gems/liquid-4.0.1/lib/liquid/version.rb | 4 + .../liquid-4.0.1/test/fixtures/en_locale.yml | 9 + .../test/integration/assign_test.rb | 48 + .../test/integration/blank_test.rb | 106 + .../test/integration/block_test.rb | 12 + .../test/integration/capture_test.rb | 50 + .../test/integration/context_test.rb | 32 + .../test/integration/document_test.rb | 19 + .../test/integration/drop_test.rb | 273 + .../test/integration/error_handling_test.rb | 260 + .../test/integration/filter_test.rb | 178 + .../test/integration/hash_ordering_test.rb | 23 + .../test/integration/output_test.rb | 123 + .../test/integration/parsing_quirks_test.rb | 122 + .../test/integration/render_profiling_test.rb | 154 + .../test/integration/security_test.rb | 80 + .../test/integration/standard_filter_test.rb | 626 + .../test/integration/tags/break_tag_test.rb | 15 + .../integration/tags/continue_tag_test.rb | 15 + .../test/integration/tags/for_tag_test.rb | 410 + .../test/integration/tags/if_else_tag_test.rb | 188 + .../test/integration/tags/include_tag_test.rb | 245 + .../integration/tags/increment_tag_test.rb | 23 + .../test/integration/tags/raw_tag_test.rb | 31 + .../integration/tags/standard_tag_test.rb | 296 + .../test/integration/tags/statements_test.rb | 111 + .../test/integration/tags/table_row_test.rb | 64 + .../integration/tags/unless_else_tag_test.rb | 26 + .../test/integration/template_test.rb | 332 + .../test/integration/trim_mode_test.rb | 529 + .../test/integration/variable_test.rb | 96 + .../gems/liquid-4.0.1/test/test_helper.rb | 116 + .../liquid-4.0.1/test/unit/block_unit_test.rb | 58 + .../test/unit/condition_unit_test.rb | 166 + .../test/unit/context_unit_test.rb | 489 + .../test/unit/file_system_unit_test.rb | 35 + .../liquid-4.0.1/test/unit/i18n_unit_test.rb | 37 + .../liquid-4.0.1/test/unit/lexer_unit_test.rb | 51 + .../test/unit/parser_unit_test.rb | 82 + .../test/unit/regexp_unit_test.rb | 44 + .../test/unit/strainer_unit_test.rb | 164 + .../liquid-4.0.1/test/unit/tag_unit_test.rb | 21 + .../test/unit/tags/case_tag_unit_test.rb | 10 + .../test/unit/tags/for_tag_unit_test.rb | 13 + .../test/unit/tags/if_tag_unit_test.rb | 8 + .../test/unit/template_unit_test.rb | 78 + .../test/unit/tokenizer_unit_test.rb | 55 + .../test/unit/variable_unit_test.rb | 162 + .../ruby/2.5.0/gems/listen-3.1.5/CHANGELOG.md | 1 + .../2.5.0/gems/listen-3.1.5/CONTRIBUTING.md | 38 + .../ruby/2.5.0/gems/listen-3.1.5/LICENSE.txt | 22 + .../ruby/2.5.0/gems/listen-3.1.5/README.md | 297 + .../ruby/2.5.0/gems/listen-3.1.5/bin/listen | 12 + .../2.5.0/gems/listen-3.1.5/lib/listen.rb | 57 + .../gems/listen-3.1.5/lib/listen/adapter.rb | 45 + .../listen-3.1.5/lib/listen/adapter/base.rb | 141 + .../listen-3.1.5/lib/listen/adapter/bsd.rb | 106 + .../listen-3.1.5/lib/listen/adapter/config.rb | 26 + .../listen-3.1.5/lib/listen/adapter/darwin.rb | 92 + .../listen-3.1.5/lib/listen/adapter/linux.rb | 106 + .../lib/listen/adapter/polling.rb | 37 + .../lib/listen/adapter/windows.rb | 98 + .../gems/listen-3.1.5/lib/listen/backend.rb | 38 + .../gems/listen-3.1.5/lib/listen/change.rb | 76 + .../2.5.0/gems/listen-3.1.5/lib/listen/cli.rb | 65 + .../gems/listen-3.1.5/lib/listen/directory.rb | 87 + .../listen-3.1.5/lib/listen/event/config.rb | 55 + .../listen-3.1.5/lib/listen/event/loop.rb | 117 + .../lib/listen/event/processor.rb | 122 + .../listen-3.1.5/lib/listen/event/queue.rb | 55 + .../gems/listen-3.1.5/lib/listen/file.rb | 80 + .../2.5.0/gems/listen-3.1.5/lib/listen/fsm.rb | 132 + .../lib/listen/internals/thread_pool.rb | 29 + .../gems/listen-3.1.5/lib/listen/listener.rb | 133 + .../lib/listen/listener/config.rb | 41 + .../gems/listen-3.1.5/lib/listen/logger.rb | 32 + .../gems/listen-3.1.5/lib/listen/options.rb | 23 + .../lib/listen/queue_optimizer.rb | 132 + .../gems/listen-3.1.5/lib/listen/record.rb | 118 + .../listen-3.1.5/lib/listen/record/entry.rb | 64 + .../lib/listen/record/symlink_detector.rb | 39 + .../gems/listen-3.1.5/lib/listen/silencer.rb | 97 + .../lib/listen/silencer/controller.rb | 48 + .../gems/listen-3.1.5/lib/listen/version.rb | 3 + .../2.5.0/gems/mercenary-0.3.6/.gitignore | 17 + .../ruby/2.5.0/gems/mercenary-0.3.6/.rspec | 2 + .../2.5.0/gems/mercenary-0.3.6/.travis.yml | 15 + .../ruby/2.5.0/gems/mercenary-0.3.6/Gemfile | 4 + .../gems/mercenary-0.3.6/History.markdown | 109 + .../2.5.0/gems/mercenary-0.3.6/LICENSE.txt | 22 + .../ruby/2.5.0/gems/mercenary-0.3.6/README.md | 250 + .../ruby/2.5.0/gems/mercenary-0.3.6/Rakefile | 1 + .../mercenary-0.3.6/examples/help_dialogue.rb | 46 + .../gems/mercenary-0.3.6/examples/logging.rb | 39 + .../gems/mercenary-0.3.6/examples/trace.rb | 21 + .../gems/mercenary-0.3.6/lib/mercenary.rb | 21 + .../mercenary-0.3.6/lib/mercenary/command.rb | 280 + .../mercenary-0.3.6/lib/mercenary/option.rb | 87 + .../lib/mercenary/presenter.rb | 94 + .../mercenary-0.3.6/lib/mercenary/program.rb | 53 + .../mercenary-0.3.6/lib/mercenary/version.rb | 3 + .../gems/mercenary-0.3.6/mercenary.gemspec | 24 + .../gems/mercenary-0.3.6/script/bootstrap | 7 + .../2.5.0/gems/mercenary-0.3.6/script/cibuild | 6 + .../2.5.0/gems/mercenary-0.3.6/script/console | 3 + .../gems/mercenary-0.3.6/script/examples | 18 + .../gems/mercenary-0.3.6/spec/command_spec.rb | 98 + .../gems/mercenary-0.3.6/spec/option_spec.rb | 83 + .../mercenary-0.3.6/spec/presenter_spec.rb | 39 + .../gems/mercenary-0.3.6/spec/program_spec.rb | 19 + .../gems/mercenary-0.3.6/spec/spec_helper.rb | 14 + .../ruby/2.5.0/gems/pathutil-0.16.2/Gemfile | 22 + .../ruby/2.5.0/gems/pathutil-0.16.2/LICENSE | 19 + .../ruby/2.5.0/gems/pathutil-0.16.2/Rakefile | 12 + .../gems/pathutil-0.16.2/lib/pathutil.rb | 909 ++ .../pathutil-0.16.2/lib/pathutil/helpers.rb | 129 + .../pathutil-0.16.2/lib/pathutil/version.rb | 7 + .../2.5.0/gems/public_suffix-3.0.3/.gitignore | 11 + .../gems/public_suffix-3.0.3/.rubocop.yml | 36 + .../public_suffix-3.0.3/.rubocop_defaults.yml | 184 + .../gems/public_suffix-3.0.3/.ruby-gemset | 1 + .../gems/public_suffix-3.0.3/.travis.yml | 25 + .../2.5.0/gems/public_suffix-3.0.3/.yardopts | 1 + .../gems/public_suffix-3.0.3/2.0-Upgrade.md | 52 + .../gems/public_suffix-3.0.3/CHANGELOG.md | 340 + .../2.5.0/gems/public_suffix-3.0.3/Gemfile | 10 + .../gems/public_suffix-3.0.3/LICENSE.txt | 22 + .../2.5.0/gems/public_suffix-3.0.3/README.md | 202 + .../2.5.0/gems/public_suffix-3.0.3/Rakefile | 49 + .../gems/public_suffix-3.0.3/bin/console | 14 + .../gems/public_suffix-3.0.3/data/list.txt | 12659 ++++++++++++++++ .../public_suffix-3.0.3/lib/public_suffix.rb | 175 + .../lib/public_suffix/domain.rb | 233 + .../lib/public_suffix/errors.rb | 39 + .../lib/public_suffix/list.rb | 243 + .../lib/public_suffix/rule.rb | 348 + .../lib/public_suffix/version.rb | 10 + .../public_suffix-3.0.3/public_suffix.gemspec | 25 + .../gems/public_suffix-3.0.3/test/.empty | 2 + .../test/acceptance_test.rb | 127 + .../test/benchmarks/bm_find.rb | 66 + .../test/benchmarks/bm_find_all.rb | 102 + .../test/benchmarks/bm_names.rb | 91 + .../test/benchmarks/bm_select.rb | 26 + .../test/benchmarks/bm_select_incremental.rb | 25 + .../test/benchmarks/bm_valid.rb | 101 + .../test/profilers/domain_profiler.rb | 12 + .../test/profilers/find_profiler.rb | 12 + .../test/profilers/find_profiler_jp.rb | 12 + .../test/profilers/initialization_profiler.rb | 11 + .../test/profilers/list_profsize.rb | 11 + .../test/profilers/object_binsize.rb | 57 + .../gems/public_suffix-3.0.3/test/psl_test.rb | 49 + .../public_suffix-3.0.3/test/test_helper.rb | 13 + .../gems/public_suffix-3.0.3/test/tests.txt | 98 + .../test/unit/domain_test.rb | 104 + .../test/unit/errors_test.rb | 23 + .../test/unit/list_test.rb | 239 + .../test/unit/public_suffix_test.rb | 186 + .../test/unit/rule_test.rb | 220 + .../2.5.0/gems/rb-fsevent-0.10.3/.gitignore | 13 + .../ruby/2.5.0/gems/rb-fsevent-0.10.3/Gemfile | 3 + .../2.5.0/gems/rb-fsevent-0.10.3/Guardfile | 8 + .../2.5.0/gems/rb-fsevent-0.10.3/LICENSE.txt | 22 + .../2.5.0/gems/rb-fsevent-0.10.3/README.md | 260 + .../2.5.0/gems/rb-fsevent-0.10.3/Rakefile | 33 + .../gems/rb-fsevent-0.10.3/bin/fsevent_watch | Bin 0 -> 42376 bytes .../2.5.0/gems/rb-fsevent-0.10.3/ext/LICENSE | 21 + .../ext/fsevent_watch/FSEventsFix.c | 626 + .../ext/fsevent_watch/FSEventsFix.h | 105 + .../ext/fsevent_watch/TSICTString.c | 373 + .../ext/fsevent_watch/TSICTString.h | 74 + .../rb-fsevent-0.10.3/ext/fsevent_watch/cli.c | 201 + .../rb-fsevent-0.10.3/ext/fsevent_watch/cli.h | 45 + .../ext/fsevent_watch/common.h | 22 + .../ext/fsevent_watch/compat.c | 41 + .../ext/fsevent_watch/compat.h | 100 + .../ext/fsevent_watch/defines.h | 40 + .../ext/fsevent_watch/main.c | 548 + .../ext/fsevent_watch/signal_handlers.c | 66 + .../ext/fsevent_watch/signal_handlers.h | 16 + .../gems/rb-fsevent-0.10.3/ext/rakefile.rb | 226 + .../gems/rb-fsevent-0.10.3/lib/otnetstring.rb | 85 + .../gems/rb-fsevent-0.10.3/lib/rb-fsevent.rb | 3 + .../lib/rb-fsevent/fsevent.rb | 157 + .../lib/rb-fsevent/version.rb | 5 + .../gems/rb-fsevent-0.10.3/rb-fsevent.gemspec | 27 + .../2.5.0/gems/rb-inotify-0.10.0/.gitignore | 21 + .../2.5.0/gems/rb-inotify-0.10.0/.travis.yml | 21 + .../2.5.0/gems/rb-inotify-0.10.0/.yardopts | 4 + .../ruby/2.5.0/gems/rb-inotify-0.10.0/Gemfile | 16 + .../2.5.0/gems/rb-inotify-0.10.0/LICENSE.md | 10 + .../2.5.0/gems/rb-inotify-0.10.0/README.md | 103 + .../2.5.0/gems/rb-inotify-0.10.0/Rakefile | 14 + .../gems/rb-inotify-0.10.0/lib/rb-inotify.rb | 15 + .../lib/rb-inotify/errors.rb | 3 + .../rb-inotify-0.10.0/lib/rb-inotify/event.rb | 146 + .../lib/rb-inotify/native.rb | 33 + .../lib/rb-inotify/native/flags.rb | 94 + .../lib/rb-inotify/notifier.rb | 315 + .../lib/rb-inotify/version.rb | 24 + .../lib/rb-inotify/watcher.rb | 88 + .../gems/rb-inotify-0.10.0/rb-inotify.gemspec | 28 + .../rb-inotify-0.10.0/spec/inotify_spec.rb | 9 + .../rb-inotify-0.10.0/spec/notifier_spec.rb | 170 + .../rb-inotify-0.10.0/spec/spec_helper.rb | 29 + .../ruby/2.5.0/gems/rouge-3.3.0/Gemfile | 28 + .../ruby/2.5.0/gems/rouge-3.3.0/LICENSE | 186 + .../ruby/2.5.0/gems/rouge-3.3.0/bin/rougify | 18 + .../ruby/2.5.0/gems/rouge-3.3.0/lib/rouge.rb | 84 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/cli.rb | 432 + .../gems/rouge-3.3.0/lib/rouge/demos/abap | 6 + .../rouge-3.3.0/lib/rouge/demos/actionscript | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/apache | 21 + .../rouge-3.3.0/lib/rouge/demos/apiblueprint | 33 + .../rouge-3.3.0/lib/rouge/demos/applescript | 2 + .../gems/rouge-3.3.0/lib/rouge/demos/awk | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/biml | 38 + .../gems/rouge-3.3.0/lib/rouge/demos/bsl | 7 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/c | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/ceylon | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/cfscript | 18 + .../gems/rouge-3.3.0/lib/rouge/demos/clojure | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/cmake | 7 + .../rouge-3.3.0/lib/rouge/demos/coffeescript | 5 + .../rouge-3.3.0/lib/rouge/demos/common_lisp | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/conf | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/console | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/coq | 13 + .../gems/rouge-3.3.0/lib/rouge/demos/cpp | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/crystal | 45 + .../gems/rouge-3.3.0/lib/rouge/demos/csharp | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/css | 4 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/d | 16 + .../gems/rouge-3.3.0/lib/rouge/demos/dart | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/diff | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/digdag | 19 + .../gems/rouge-3.3.0/lib/rouge/demos/docker | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/dot | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/eiffel | 30 + .../gems/rouge-3.3.0/lib/rouge/demos/elixir | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/elm | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/erb | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/erlang | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/factor | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/fortran | 22 + .../gems/rouge-3.3.0/lib/rouge/demos/fsharp | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/gherkin | 17 + .../gems/rouge-3.3.0/lib/rouge/demos/glsl | 14 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/go | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/gradle | 10 + .../gems/rouge-3.3.0/lib/rouge/demos/graphql | 17 + .../gems/rouge-3.3.0/lib/rouge/demos/groovy | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/hack | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/haml | 5 + .../rouge-3.3.0/lib/rouge/demos/handlebars | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/haskell | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/hcl | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/html | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/http | 14 + .../gems/rouge-3.3.0/lib/rouge/demos/hylang | 10 + .../gems/rouge-3.3.0/lib/rouge/demos/idlang | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/igorpro | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/ini | 4 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/io | 11 + .../gems/rouge-3.3.0/lib/rouge/demos/irb | 4 + .../rouge-3.3.0/lib/rouge/demos/irb_output | 2 + .../gems/rouge-3.3.0/lib/rouge/demos/java | 5 + .../rouge-3.3.0/lib/rouge/demos/javascript | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/jinja | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/json | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/json-doc | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/jsonnet | 28 + .../gems/rouge-3.3.0/lib/rouge/demos/jsp | 29 + .../gems/rouge-3.3.0/lib/rouge/demos/jsx | 17 + .../gems/rouge-3.3.0/lib/rouge/demos/julia | 11 + .../gems/rouge-3.3.0/lib/rouge/demos/kotlin | 3 + .../gems/rouge-3.3.0/lib/rouge/demos/lasso | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/liquid | 11 + .../lib/rouge/demos/literate_coffeescript | 3 + .../lib/rouge/demos/literate_haskell | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/llvm | 20 + .../gems/rouge-3.3.0/lib/rouge/demos/lua | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/m68k | 16 + .../gems/rouge-3.3.0/lib/rouge/demos/make | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/markdown | 4 + .../rouge-3.3.0/lib/rouge/demos/mathematica | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/matlab | 6 + .../rouge-3.3.0/lib/rouge/demos/moonscript | 16 + .../gems/rouge-3.3.0/lib/rouge/demos/mosel | 10 + .../gems/rouge-3.3.0/lib/rouge/demos/mxml | 22 + .../gems/rouge-3.3.0/lib/rouge/demos/nasm | 26 + .../gems/rouge-3.3.0/lib/rouge/demos/nginx | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/nim | 27 + .../gems/rouge-3.3.0/lib/rouge/demos/nix | 19 + .../rouge-3.3.0/lib/rouge/demos/objective_c | 18 + .../gems/rouge-3.3.0/lib/rouge/demos/ocaml | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/pascal | 14 + .../gems/rouge-3.3.0/lib/rouge/demos/perl | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/php | 3 + .../rouge-3.3.0/lib/rouge/demos/plaintext | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/plist | 142 + .../gems/rouge-3.3.0/lib/rouge/demos/pony | 17 + .../rouge-3.3.0/lib/rouge/demos/powershell | 49 + .../gems/rouge-3.3.0/lib/rouge/demos/praat | 26 + .../gems/rouge-3.3.0/lib/rouge/demos/prolog | 9 + .../rouge-3.3.0/lib/rouge/demos/prometheus | 9 + .../rouge-3.3.0/lib/rouge/demos/properties | 7 + .../gems/rouge-3.3.0/lib/rouge/demos/protobuf | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/puppet | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/python | 6 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/q | 2 + .../gems/rouge-3.3.0/lib/rouge/demos/qml | 9 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/r | 8 + .../gems/rouge-3.3.0/lib/rouge/demos/racket | 24 + .../gems/rouge-3.3.0/lib/rouge/demos/ruby | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/rust | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/sass | 3 + .../gems/rouge-3.3.0/lib/rouge/demos/scala | 3 + .../gems/rouge-3.3.0/lib/rouge/demos/scheme | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/scss | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/sed | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/shell | 2 + .../gems/rouge-3.3.0/lib/rouge/demos/sieve | 10 + .../gems/rouge-3.3.0/lib/rouge/demos/slim | 17 + .../rouge-3.3.0/lib/rouge/demos/smalltalk | 6 + .../gems/rouge-3.3.0/lib/rouge/demos/smarty | 12 + .../gems/rouge-3.3.0/lib/rouge/demos/sml | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/sqf | 14 + .../gems/rouge-3.3.0/lib/rouge/demos/sql | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/swift | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/tap | 5 + .../gems/rouge-3.3.0/lib/rouge/demos/tcl | 1 + .../rouge-3.3.0/lib/rouge/demos/terraform | 31 + .../gems/rouge-3.3.0/lib/rouge/demos/tex | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/toml | 9 + .../gems/rouge-3.3.0/lib/rouge/demos/tsx | 17 + .../gems/rouge-3.3.0/lib/rouge/demos/tulip | 13 + .../gems/rouge-3.3.0/lib/rouge/demos/turtle | 26 + .../gems/rouge-3.3.0/lib/rouge/demos/twig | 9 + .../rouge-3.3.0/lib/rouge/demos/typescript | 1 + .../gems/rouge-3.3.0/lib/rouge/demos/vala | 8 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vb | 4 + .../gems/rouge-3.3.0/lib/rouge/demos/verilog | 27 + .../gems/rouge-3.3.0/lib/rouge/demos/vhdl | 23 + .../gems/rouge-3.3.0/lib/rouge/demos/viml | 14 + .../gems/rouge-3.3.0/lib/rouge/demos/vue | 11 + .../gems/rouge-3.3.0/lib/rouge/demos/wollok | 11 + .../gems/rouge-3.3.0/lib/rouge/demos/xml | 2 + .../gems/rouge-3.3.0/lib/rouge/demos/yaml | 4 + .../gems/rouge-3.3.0/lib/rouge/formatter.rb | 76 + .../rouge-3.3.0/lib/rouge/formatters/html.rb | 38 + .../lib/rouge/formatters/html_inline.rb | 31 + .../lib/rouge/formatters/html_legacy.rb | 45 + .../lib/rouge/formatters/html_linewise.rb | 28 + .../lib/rouge/formatters/html_pygments.rb | 18 + .../lib/rouge/formatters/html_table.rb | 62 + .../rouge-3.3.0/lib/rouge/formatters/null.rb | 20 + .../lib/rouge/formatters/terminal256.rb | 181 + .../gems/rouge-3.3.0/lib/rouge/guesser.rb | 57 + .../lib/rouge/guessers/disambiguation.rb | 106 + .../lib/rouge/guessers/filename.rb | 27 + .../lib/rouge/guessers/glob_mapping.rb | 45 + .../lib/rouge/guessers/mimetype.rb | 16 + .../lib/rouge/guessers/modeline.rb | 46 + .../rouge-3.3.0/lib/rouge/guessers/source.rb | 31 + .../rouge-3.3.0/lib/rouge/guessers/util.rb | 34 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/lexer.rb | 462 + .../gems/rouge-3.3.0/lib/rouge/lexers/abap.rb | 240 + .../lib/rouge/lexers/actionscript.rb | 196 + .../rouge-3.3.0/lib/rouge/lexers/apache.rb | 73 + .../lib/rouge/lexers/apache/keywords.yml | 764 + .../lib/rouge/lexers/apiblueprint.rb | 49 + .../lib/rouge/lexers/apple_script.rb | 369 + .../gems/rouge-3.3.0/lib/rouge/lexers/awk.rb | 162 + .../gems/rouge-3.3.0/lib/rouge/lexers/biml.rb | 43 + .../gems/rouge-3.3.0/lib/rouge/lexers/bsl.rb | 82 + .../gems/rouge-3.3.0/lib/rouge/lexers/c.rb | 213 + .../rouge-3.3.0/lib/rouge/lexers/ceylon.rb | 124 + .../rouge-3.3.0/lib/rouge/lexers/cfscript.rb | 154 + .../rouge-3.3.0/lib/rouge/lexers/clojure.rb | 113 + .../rouge-3.3.0/lib/rouge/lexers/cmake.rb | 207 + .../lib/rouge/lexers/coffeescript.rb | 175 + .../lib/rouge/lexers/common_lisp.rb | 346 + .../gems/rouge-3.3.0/lib/rouge/lexers/conf.rb | 25 + .../rouge-3.3.0/lib/rouge/lexers/console.rb | 137 + .../gems/rouge-3.3.0/lib/rouge/lexers/coq.rb | 188 + .../gems/rouge-3.3.0/lib/rouge/lexers/cpp.rb | 79 + .../rouge-3.3.0/lib/rouge/lexers/crystal.rb | 430 + .../rouge-3.3.0/lib/rouge/lexers/csharp.rb | 115 + .../gems/rouge-3.3.0/lib/rouge/lexers/css.rb | 274 + .../gems/rouge-3.3.0/lib/rouge/lexers/d.rb | 177 + .../gems/rouge-3.3.0/lib/rouge/lexers/dart.rb | 105 + .../gems/rouge-3.3.0/lib/rouge/lexers/diff.rb | 33 + .../rouge-3.3.0/lib/rouge/lexers/digdag.rb | 70 + .../rouge-3.3.0/lib/rouge/lexers/docker.rb | 51 + .../gems/rouge-3.3.0/lib/rouge/lexers/dot.rb | 69 + .../rouge-3.3.0/lib/rouge/lexers/eiffel.rb | 66 + .../rouge-3.3.0/lib/rouge/lexers/elixir.rb | 134 + .../gems/rouge-3.3.0/lib/rouge/lexers/elm.rb | 90 + .../gems/rouge-3.3.0/lib/rouge/lexers/erb.rb | 53 + .../rouge-3.3.0/lib/rouge/lexers/erlang.rb | 115 + .../rouge-3.3.0/lib/rouge/lexers/factor.rb | 303 + .../rouge-3.3.0/lib/rouge/lexers/fortran.rb | 178 + .../rouge-3.3.0/lib/rouge/lexers/fsharp.rb | 119 + .../rouge-3.3.0/lib/rouge/lexers/gherkin.rb | 138 + .../lib/rouge/lexers/gherkin/keywords.rb | 16 + .../gems/rouge-3.3.0/lib/rouge/lexers/glsl.rb | 136 + .../gems/rouge-3.3.0/lib/rouge/lexers/go.rb | 175 + .../rouge-3.3.0/lib/rouge/lexers/gradle.rb | 38 + .../rouge-3.3.0/lib/rouge/lexers/graphql.rb | 244 + .../rouge-3.3.0/lib/rouge/lexers/groovy.rb | 113 + .../gems/rouge-3.3.0/lib/rouge/lexers/hack.rb | 49 + .../gems/rouge-3.3.0/lib/rouge/lexers/haml.rb | 230 + .../lib/rouge/lexers/handlebars.rb | 80 + .../rouge-3.3.0/lib/rouge/lexers/haskell.rb | 198 + .../gems/rouge-3.3.0/lib/rouge/lexers/hcl.rb | 163 + .../gems/rouge-3.3.0/lib/rouge/lexers/html.rb | 140 + .../gems/rouge-3.3.0/lib/rouge/lexers/http.rb | 81 + .../rouge-3.3.0/lib/rouge/lexers/hylang.rb | 94 + .../rouge-3.3.0/lib/rouge/lexers/idlang.rb | 312 + .../rouge-3.3.0/lib/rouge/lexers/igorpro.rb | 664 + .../gems/rouge-3.3.0/lib/rouge/lexers/ini.rb | 54 + .../gems/rouge-3.3.0/lib/rouge/lexers/io.rb | 69 + .../gems/rouge-3.3.0/lib/rouge/lexers/irb.rb | 67 + .../gems/rouge-3.3.0/lib/rouge/lexers/java.rb | 88 + .../lib/rouge/lexers/javascript.rb | 283 + .../rouge-3.3.0/lib/rouge/lexers/jinja.rb | 138 + .../gems/rouge-3.3.0/lib/rouge/lexers/json.rb | 30 + .../rouge-3.3.0/lib/rouge/lexers/json_doc.rb | 24 + .../rouge-3.3.0/lib/rouge/lexers/jsonnet.rb | 152 + .../gems/rouge-3.3.0/lib/rouge/lexers/jsp.rb | 120 + .../gems/rouge-3.3.0/lib/rouge/lexers/jsx.rb | 104 + .../rouge-3.3.0/lib/rouge/lexers/julia.rb | 167 + .../rouge-3.3.0/lib/rouge/lexers/kotlin.rb | 127 + .../rouge-3.3.0/lib/rouge/lexers/lasso.rb | 215 + .../lib/rouge/lexers/lasso/keywords.yml | 446 + .../rouge-3.3.0/lib/rouge/lexers/liquid.rb | 288 + .../lib/rouge/lexers/literate_coffeescript.rb | 34 + .../lib/rouge/lexers/literate_haskell.rb | 37 + .../gems/rouge-3.3.0/lib/rouge/lexers/llvm.rb | 81 + .../gems/rouge-3.3.0/lib/rouge/lexers/lua.rb | 126 + .../lib/rouge/lexers/lua/builtins.rb | 24 + .../gems/rouge-3.3.0/lib/rouge/lexers/m68k.rb | 144 + .../gems/rouge-3.3.0/lib/rouge/lexers/make.rb | 113 + .../rouge-3.3.0/lib/rouge/lexers/markdown.rb | 155 + .../lib/rouge/lexers/mathematica.rb | 96 + .../lib/rouge/lexers/mathematica/builtins.rb | 13 + .../rouge-3.3.0/lib/rouge/lexers/matlab.rb | 72 + .../lib/rouge/lexers/matlab/builtins.rb | 13 + .../lib/rouge/lexers/moonscript.rb | 115 + .../rouge-3.3.0/lib/rouge/lexers/mosel.rb | 232 + .../gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb | 69 + .../gems/rouge-3.3.0/lib/rouge/lexers/nasm.rb | 199 + .../rouge-3.3.0/lib/rouge/lexers/nginx.rb | 72 + .../gems/rouge-3.3.0/lib/rouge/lexers/nim.rb | 153 + .../gems/rouge-3.3.0/lib/rouge/lexers/nix.rb | 211 + .../lib/rouge/lexers/objective_c.rb | 195 + .../rouge-3.3.0/lib/rouge/lexers/ocaml.rb | 101 + .../rouge-3.3.0/lib/rouge/lexers/pascal.rb | 67 + .../gems/rouge-3.3.0/lib/rouge/lexers/perl.rb | 201 + .../gems/rouge-3.3.0/lib/rouge/lexers/php.rb | 194 + .../lib/rouge/lexers/php/builtins.rb | 196 + .../lib/rouge/lexers/plain_text.rb | 27 + .../rouge-3.3.0/lib/rouge/lexers/plist.rb | 47 + .../gems/rouge-3.3.0/lib/rouge/lexers/pony.rb | 94 + .../lib/rouge/lexers/powershell.rb | 679 + .../rouge-3.3.0/lib/rouge/lexers/praat.rb | 351 + .../rouge-3.3.0/lib/rouge/lexers/prolog.rb | 61 + .../lib/rouge/lexers/prometheus.rb | 123 + .../lib/rouge/lexers/properties.rb | 52 + .../rouge-3.3.0/lib/rouge/lexers/protobuf.rb | 71 + .../rouge-3.3.0/lib/rouge/lexers/puppet.rb | 129 + .../rouge-3.3.0/lib/rouge/lexers/python.rb | 247 + .../gems/rouge-3.3.0/lib/rouge/lexers/q.rb | 125 + .../gems/rouge-3.3.0/lib/rouge/lexers/qml.rb | 74 + .../gems/rouge-3.3.0/lib/rouge/lexers/r.rb | 90 + .../rouge-3.3.0/lib/rouge/lexers/racket.rb | 545 + .../gems/rouge-3.3.0/lib/rouge/lexers/ruby.rb | 439 + .../gems/rouge-3.3.0/lib/rouge/lexers/rust.rb | 198 + .../gems/rouge-3.3.0/lib/rouge/lexers/sass.rb | 75 + .../lib/rouge/lexers/sass/common.rb | 181 + .../rouge-3.3.0/lib/rouge/lexers/scala.rb | 143 + .../rouge-3.3.0/lib/rouge/lexers/scheme.rb | 113 + .../gems/rouge-3.3.0/lib/rouge/lexers/scss.rb | 35 + .../gems/rouge-3.3.0/lib/rouge/lexers/sed.rb | 173 + .../rouge-3.3.0/lib/rouge/lexers/shell.rb | 190 + .../rouge-3.3.0/lib/rouge/lexers/sieve.rb | 97 + .../gems/rouge-3.3.0/lib/rouge/lexers/slim.rb | 229 + .../rouge-3.3.0/lib/rouge/lexers/smalltalk.rb | 117 + .../rouge-3.3.0/lib/rouge/lexers/smarty.rb | 81 + .../gems/rouge-3.3.0/lib/rouge/lexers/sml.rb | 345 + .../gems/rouge-3.3.0/lib/rouge/lexers/sqf.rb | 109 + .../lib/rouge/lexers/sqf/commands.rb | 15 + .../gems/rouge-3.3.0/lib/rouge/lexers/sql.rb | 141 + .../rouge-3.3.0/lib/rouge/lexers/swift.rb | 182 + .../gems/rouge-3.3.0/lib/rouge/lexers/tap.rb | 89 + .../gems/rouge-3.3.0/lib/rouge/lexers/tcl.rb | 193 + .../rouge-3.3.0/lib/rouge/lexers/terraform.rb | 105 + .../gems/rouge-3.3.0/lib/rouge/lexers/tex.rb | 70 + .../gems/rouge-3.3.0/lib/rouge/lexers/toml.rb | 68 + .../gems/rouge-3.3.0/lib/rouge/lexers/tsx.rb | 20 + .../rouge-3.3.0/lib/rouge/lexers/tulip.rb | 108 + .../rouge-3.3.0/lib/rouge/lexers/turtle.rb | 64 + .../gems/rouge-3.3.0/lib/rouge/lexers/twig.rb | 40 + .../lib/rouge/lexers/typescript.rb | 23 + .../lib/rouge/lexers/typescript/common.rb | 34 + .../gems/rouge-3.3.0/lib/rouge/lexers/vala.rb | 78 + .../gems/rouge-3.3.0/lib/rouge/lexers/vb.rb | 165 + .../rouge-3.3.0/lib/rouge/lexers/verilog.rb | 165 + .../gems/rouge-3.3.0/lib/rouge/lexers/vhdl.rb | 98 + .../gems/rouge-3.3.0/lib/rouge/lexers/viml.rb | 102 + .../lib/rouge/lexers/viml/keywords.rb | 14 + .../gems/rouge-3.3.0/lib/rouge/lexers/vue.rb | 124 + .../rouge-3.3.0/lib/rouge/lexers/wollok.rb | 104 + .../gems/rouge-3.3.0/lib/rouge/lexers/xml.rb | 58 + .../gems/rouge-3.3.0/lib/rouge/lexers/yaml.rb | 374 + .../lib/rouge/plugins/redcarpet.rb | 31 + .../gems/rouge-3.3.0/lib/rouge/regex_lexer.rb | 442 + .../rouge-3.3.0/lib/rouge/template_lexer.rb | 21 + .../rouge-3.3.0/lib/rouge/text_analyzer.rb | 50 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/theme.rb | 214 + .../rouge-3.3.0/lib/rouge/themes/base16.rb | 131 + .../rouge-3.3.0/lib/rouge/themes/colorful.rb | 68 + .../rouge-3.3.0/lib/rouge/themes/github.rb | 72 + .../rouge-3.3.0/lib/rouge/themes/gruvbox.rb | 168 + .../rouge-3.3.0/lib/rouge/themes/igor_pro.rb | 21 + .../rouge-3.3.0/lib/rouge/themes/molokai.rb | 83 + .../rouge-3.3.0/lib/rouge/themes/monokai.rb | 93 + .../lib/rouge/themes/monokai_sublime.rb | 92 + .../rouge-3.3.0/lib/rouge/themes/pastie.rb | 70 + .../lib/rouge/themes/thankful_eyes.rb | 75 + .../rouge-3.3.0/lib/rouge/themes/tulip.rb | 70 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/token.rb | 183 + .../2.5.0/gems/rouge-3.3.0/lib/rouge/util.rb | 102 + .../gems/rouge-3.3.0/lib/rouge/version.rb | 8 + .../ruby/2.5.0/gems/rouge-3.3.0/rouge.gemspec | 25 + .../ruby/2.5.0/gems/ruby_dep-1.5.0/.gitignore | 10 + .../ruby/2.5.0/gems/ruby_dep-1.5.0/.rspec | 3 + .../2.5.0/gems/ruby_dep-1.5.0/.rubocop.yml | 3 + .../2.5.0/gems/ruby_dep-1.5.0/.travis.yml | 11 + .../2.5.0/gems/ruby_dep-1.5.0/LICENSE.txt | 21 + .../ruby/2.5.0/gems/ruby_dep-1.5.0/README.md | 197 + .../2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep.rb | 2 + .../ruby_dep-1.5.0/lib/ruby_dep/logger.rb | 48 + .../gems/ruby_dep-1.5.0/lib/ruby_dep/quiet.rb | 3 + .../lib/ruby_dep/ruby_version.rb | 58 + .../ruby_dep-1.5.0/lib/ruby_dep/travis.rb | 58 + .../lib/ruby_dep/travis/ruby_version.rb | 59 + .../ruby_dep-1.5.0/lib/ruby_dep/version.rb | 3 + .../ruby_dep-1.5.0/lib/ruby_dep/warning.rb | 98 + .../2.5.0/gems/safe_yaml-1.0.5/.gitignore | 3 + .../2.5.0/gems/safe_yaml-1.0.5/.travis.yml | 48 + .../2.5.0/gems/safe_yaml-1.0.5/CHANGES.md | 154 + .../ruby/2.5.0/gems/safe_yaml-1.0.5/Gemfile | 11 + .../2.5.0/gems/safe_yaml-1.0.5/LICENSE.txt | 22 + .../ruby/2.5.0/gems/safe_yaml-1.0.5/README.md | 191 + .../ruby/2.5.0/gems/safe_yaml-1.0.5/Rakefile | 26 + .../2.5.0/gems/safe_yaml-1.0.5/bin/safe_yaml | 75 + .../bundle_install_all_ruby_versions.sh | 11 + .../gems/safe_yaml-1.0.5/lib/safe_yaml.rb | 94 + .../safe_yaml-1.0.5/lib/safe_yaml/deep.rb | 34 + .../lib/safe_yaml/libyaml_checker.rb | 36 + .../safe_yaml-1.0.5/lib/safe_yaml/load.rb | 181 + .../lib/safe_yaml/parse/date.rb | 37 + .../lib/safe_yaml/parse/hexadecimal.rb | 12 + .../lib/safe_yaml/parse/sexagesimal.rb | 26 + .../lib/safe_yaml/psych_handler.rb | 99 + .../lib/safe_yaml/psych_resolver.rb | 52 + .../safe_yaml-1.0.5/lib/safe_yaml/resolver.rb | 94 + .../lib/safe_yaml/safe_to_ruby_visitor.rb | 29 + .../safe_yaml-1.0.5/lib/safe_yaml/store.rb | 39 + .../lib/safe_yaml/syck_hack.rb | 36 + .../lib/safe_yaml/syck_node_monkeypatch.rb | 43 + .../lib/safe_yaml/syck_resolver.rb | 38 + .../lib/safe_yaml/transform.rb | 41 + .../lib/safe_yaml/transform/to_boolean.rb | 21 + .../lib/safe_yaml/transform/to_date.rb | 13 + .../lib/safe_yaml/transform/to_float.rb | 33 + .../lib/safe_yaml/transform/to_integer.rb | 26 + .../lib/safe_yaml/transform/to_nil.rb | 18 + .../lib/safe_yaml/transform/to_symbol.rb | 17 + .../safe_yaml/transform/transformation_map.rb | 47 + .../safe_yaml-1.0.5/lib/safe_yaml/version.rb | 3 + .../run_specs_all_ruby_versions.sh | 38 + .../gems/safe_yaml-1.0.5/safe_yaml.gemspec | 19 + .../safe_yaml-1.0.5/spec/exploit.1.9.2.yaml | 2 + .../safe_yaml-1.0.5/spec/exploit.1.9.3.yaml | 2 + .../gems/safe_yaml-1.0.5/spec/issue48.txt | 20 + .../gems/safe_yaml-1.0.5/spec/issue49.yml | 0 .../spec/libyaml_checker_spec.rb | 69 + .../spec/psych_resolver_spec.rb | 10 + .../safe_yaml-1.0.5/spec/resolver_specs.rb | 278 + .../safe_yaml-1.0.5/spec/safe_yaml_spec.rb | 731 + .../gems/safe_yaml-1.0.5/spec/spec_helper.rb | 42 + .../gems/safe_yaml-1.0.5/spec/store_spec.rb | 57 + .../spec/support/exploitable_back_door.rb | 29 + .../spec/syck_resolver_spec.rb | 10 + .../spec/transform/base64_spec.rb | 11 + .../spec/transform/to_date_spec.rb | 60 + .../spec/transform/to_float_spec.rb | 42 + .../spec/transform/to_integer_spec.rb | 64 + .../spec/transform/to_symbol_spec.rb | 51 + .../gems/safe_yaml-1.0.5/spec/yaml_spec.rb | 15 + .../ruby/2.5.0/gems/sass-3.7.3/.yardopts | 13 + .../2.5.0/gems/sass-3.7.3/CODE_OF_CONDUCT.md | 10 + .../2.5.0/gems/sass-3.7.3/CONTRIBUTING.md | 148 + .../ruby/2.5.0/gems/sass-3.7.3/MIT-LICENSE | 20 + .../ruby/2.5.0/gems/sass-3.7.3/README.md | 237 + .../ruby/2.5.0/gems/sass-3.7.3/REVISION | 1 + .../bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION | 1 + .../ruby/2.5.0/gems/sass-3.7.3/VERSION_DATE | 1 + .../ruby/2.5.0/gems/sass-3.7.3/VERSION_NAME | 1 + .../ruby/2.5.0/gems/sass-3.7.3/bin/sass | 13 + .../2.5.0/gems/sass-3.7.3/bin/sass-convert | 12 + .../ruby/2.5.0/gems/sass-3.7.3/bin/scss | 13 + .../gems/sass-3.7.3/extra/sass-spec-ref.sh | 40 + .../gems/sass-3.7.3/extra/update_watch.rb | 13 + .../bundle/ruby/2.5.0/gems/sass-3.7.3/init.rb | 18 + .../ruby/2.5.0/gems/sass-3.7.3/lib/sass.rb | 102 + .../gems/sass-3.7.3/lib/sass/cache_stores.rb | 15 + .../sass-3.7.3/lib/sass/cache_stores/base.rb | 88 + .../sass-3.7.3/lib/sass/cache_stores/chain.rb | 34 + .../lib/sass/cache_stores/filesystem.rb | 60 + .../lib/sass/cache_stores/memory.rb | 46 + .../sass-3.7.3/lib/sass/cache_stores/null.rb | 25 + .../gems/sass-3.7.3/lib/sass/callbacks.rb | 67 + .../2.5.0/gems/sass-3.7.3/lib/sass/css.rb | 407 + .../gems/sass-3.7.3/lib/sass/deprecation.rb | 55 + .../2.5.0/gems/sass-3.7.3/lib/sass/engine.rb | 1236 ++ .../gems/sass-3.7.3/lib/sass/environment.rb | 236 + .../2.5.0/gems/sass-3.7.3/lib/sass/error.rb | 198 + .../2.5.0/gems/sass-3.7.3/lib/sass/exec.rb | 9 + .../gems/sass-3.7.3/lib/sass/exec/base.rb | 188 + .../sass-3.7.3/lib/sass/exec/sass_convert.rb | 283 + .../sass-3.7.3/lib/sass/exec/sass_scss.rb | 436 + .../gems/sass-3.7.3/lib/sass/features.rb | 48 + .../gems/sass-3.7.3/lib/sass/importers.rb | 23 + .../sass-3.7.3/lib/sass/importers/base.rb | 182 + .../lib/sass/importers/deprecated_path.rb | 51 + .../lib/sass/importers/filesystem.rb | 221 + .../2.5.0/gems/sass-3.7.3/lib/sass/logger.rb | 17 + .../gems/sass-3.7.3/lib/sass/logger/base.rb | 47 + .../sass-3.7.3/lib/sass/logger/delayed.rb | 50 + .../sass-3.7.3/lib/sass/logger/log_level.rb | 45 + .../2.5.0/gems/sass-3.7.3/lib/sass/media.rb | 210 + .../2.5.0/gems/sass-3.7.3/lib/sass/plugin.rb | 134 + .../sass-3.7.3/lib/sass/plugin/compiler.rb | 552 + .../lib/sass/plugin/configuration.rb | 134 + .../sass-3.7.3/lib/sass/plugin/generic.rb | 15 + .../gems/sass-3.7.3/lib/sass/plugin/merb.rb | 48 + .../gems/sass-3.7.3/lib/sass/plugin/rack.rb | 60 + .../gems/sass-3.7.3/lib/sass/plugin/rails.rb | 47 + .../lib/sass/plugin/staleness_checker.rb | 199 + .../2.5.0/gems/sass-3.7.3/lib/sass/railtie.rb | 10 + .../2.5.0/gems/sass-3.7.3/lib/sass/repl.rb | 57 + .../2.5.0/gems/sass-3.7.3/lib/sass/root.rb | 7 + .../2.5.0/gems/sass-3.7.3/lib/sass/script.rb | 66 + .../sass-3.7.3/lib/sass/script/css_lexer.rb | 33 + .../sass-3.7.3/lib/sass/script/css_parser.rb | 36 + .../sass-3.7.3/lib/sass/script/functions.rb | 2920 ++++ .../gems/sass-3.7.3/lib/sass/script/lexer.rb | 518 + .../gems/sass-3.7.3/lib/sass/script/parser.rb | 1001 ++ .../gems/sass-3.7.3/lib/sass/script/tree.rb | 16 + .../lib/sass/script/tree/funcall.rb | 314 + .../lib/sass/script/tree/interpolation.rb | 220 + .../lib/sass/script/tree/list_literal.rb | 119 + .../lib/sass/script/tree/literal.rb | 49 + .../lib/sass/script/tree/map_literal.rb | 64 + .../sass-3.7.3/lib/sass/script/tree/node.rb | 119 + .../lib/sass/script/tree/operation.rb | 149 + .../lib/sass/script/tree/selector.rb | 26 + .../sass/script/tree/string_interpolation.rb | 125 + .../lib/sass/script/tree/unary_operation.rb | 69 + .../lib/sass/script/tree/variable.rb | 57 + .../gems/sass-3.7.3/lib/sass/script/value.rb | 13 + .../lib/sass/script/value/arg_list.rb | 36 + .../sass-3.7.3/lib/sass/script/value/base.rb | 258 + .../sass-3.7.3/lib/sass/script/value/bool.rb | 35 + .../lib/sass/script/value/callable.rb | 25 + .../sass-3.7.3/lib/sass/script/value/color.rb | 704 + .../lib/sass/script/value/function.rb | 19 + .../lib/sass/script/value/helpers.rb | 298 + .../sass-3.7.3/lib/sass/script/value/list.rb | 134 + .../sass-3.7.3/lib/sass/script/value/map.rb | 70 + .../sass-3.7.3/lib/sass/script/value/null.rb | 44 + .../lib/sass/script/value/number.rb | 564 + .../lib/sass/script/value/string.rb | 138 + .../2.5.0/gems/sass-3.7.3/lib/sass/scss.rb | 14 + .../sass-3.7.3/lib/sass/scss/css_parser.rb | 61 + .../gems/sass-3.7.3/lib/sass/scss/parser.rb | 1343 ++ .../2.5.0/gems/sass-3.7.3/lib/sass/scss/rx.rb | 134 + .../sass-3.7.3/lib/sass/scss/static_parser.rb | 351 + .../gems/sass-3.7.3/lib/sass/selector.rb | 327 + .../lib/sass/selector/abstract_sequence.rb | 112 + .../lib/sass/selector/comma_sequence.rb | 195 + .../sass-3.7.3/lib/sass/selector/pseudo.rb | 283 + .../sass-3.7.3/lib/sass/selector/sequence.rb | 661 + .../sass-3.7.3/lib/sass/selector/simple.rb | 124 + .../lib/sass/selector/simple_sequence.rb | 348 + .../2.5.0/gems/sass-3.7.3/lib/sass/shared.rb | 76 + .../gems/sass-3.7.3/lib/sass/source/map.rb | 209 + .../sass-3.7.3/lib/sass/source/position.rb | 39 + .../gems/sass-3.7.3/lib/sass/source/range.rb | 41 + .../2.5.0/gems/sass-3.7.3/lib/sass/stack.rb | 140 + .../gems/sass-3.7.3/lib/sass/supports.rb | 225 + .../sass-3.7.3/lib/sass/tree/at_root_node.rb | 83 + .../sass-3.7.3/lib/sass/tree/charset_node.rb | 22 + .../sass-3.7.3/lib/sass/tree/comment_node.rb | 82 + .../sass-3.7.3/lib/sass/tree/content_node.rb | 9 + .../lib/sass/tree/css_import_node.rb | 68 + .../sass-3.7.3/lib/sass/tree/debug_node.rb | 18 + .../lib/sass/tree/directive_node.rb | 59 + .../sass-3.7.3/lib/sass/tree/each_node.rb | 24 + .../sass-3.7.3/lib/sass/tree/error_node.rb | 18 + .../sass-3.7.3/lib/sass/tree/extend_node.rb | 43 + .../gems/sass-3.7.3/lib/sass/tree/for_node.rb | 36 + .../sass-3.7.3/lib/sass/tree/function_node.rb | 44 + .../gems/sass-3.7.3/lib/sass/tree/if_node.rb | 52 + .../sass-3.7.3/lib/sass/tree/import_node.rb | 75 + .../lib/sass/tree/keyframe_rule_node.rb | 15 + .../sass-3.7.3/lib/sass/tree/media_node.rb | 48 + .../lib/sass/tree/mixin_def_node.rb | 38 + .../sass-3.7.3/lib/sass/tree/mixin_node.rb | 52 + .../gems/sass-3.7.3/lib/sass/tree/node.rb | 240 + .../sass-3.7.3/lib/sass/tree/prop_node.rb | 162 + .../sass-3.7.3/lib/sass/tree/return_node.rb | 19 + .../sass-3.7.3/lib/sass/tree/root_node.rb | 44 + .../sass-3.7.3/lib/sass/tree/rule_node.rb | 153 + .../sass-3.7.3/lib/sass/tree/supports_node.rb | 38 + .../sass-3.7.3/lib/sass/tree/trace_node.rb | 33 + .../sass-3.7.3/lib/sass/tree/variable_node.rb | 36 + .../sass-3.7.3/lib/sass/tree/visitors/base.rb | 72 + .../lib/sass/tree/visitors/check_nesting.rb | 173 + .../lib/sass/tree/visitors/convert.rb | 350 + .../lib/sass/tree/visitors/cssize.rb | 362 + .../lib/sass/tree/visitors/deep_copy.rb | 107 + .../lib/sass/tree/visitors/extend.rb | 64 + .../lib/sass/tree/visitors/perform.rb | 572 + .../lib/sass/tree/visitors/set_options.rb | 139 + .../lib/sass/tree/visitors/to_css.rb | 436 + .../sass-3.7.3/lib/sass/tree/warn_node.rb | 18 + .../sass-3.7.3/lib/sass/tree/while_node.rb | 18 + .../2.5.0/gems/sass-3.7.3/lib/sass/util.rb | 1137 ++ .../lib/sass/util/multibyte_string_scanner.rb | 151 + .../lib/sass/util/normalized_map.rb | 122 + .../sass-3.7.3/lib/sass/util/subset_map.rb | 109 + .../gems/sass-3.7.3/lib/sass/util/test.rb | 9 + .../2.5.0/gems/sass-3.7.3/lib/sass/version.rb | 120 + .../ruby/2.5.0/gems/sass-3.7.3/rails/init.rb | 1 + .../2.5.0/gems/sass-listen-4.0.0/CHANGELOG.md | 1 + .../gems/sass-listen-4.0.0/CONTRIBUTING.md | 38 + .../2.5.0/gems/sass-listen-4.0.0/LICENSE.txt | 22 + .../2.5.0/gems/sass-listen-4.0.0/README.md | 297 + .../gems/sass-listen-4.0.0/lib/sass-listen.rb | 55 + .../lib/sass-listen/adapter.rb | 43 + .../lib/sass-listen/adapter/base.rb | 137 + .../lib/sass-listen/adapter/bsd.rb | 106 + .../lib/sass-listen/adapter/config.rb | 26 + .../lib/sass-listen/adapter/darwin.rb | 88 + .../lib/sass-listen/adapter/linux.rb | 108 + .../lib/sass-listen/adapter/polling.rb | 37 + .../lib/sass-listen/adapter/windows.rb | 99 + .../lib/sass-listen/backend.rb | 43 + .../lib/sass-listen/change.rb | 78 + .../sass-listen-4.0.0/lib/sass-listen/cli.rb | 65 + .../lib/sass-listen/directory.rb | 87 + .../lib/sass-listen/event/config.rb | 59 + .../lib/sass-listen/event/loop.rb | 117 + .../lib/sass-listen/event/processor.rb | 122 + .../lib/sass-listen/event/queue.rb | 58 + .../sass-listen-4.0.0/lib/sass-listen/file.rb | 80 + .../sass-listen-4.0.0/lib/sass-listen/fsm.rb | 131 + .../lib/sass-listen/internals/thread_pool.rb | 29 + .../lib/sass-listen/listener.rb | 132 + .../lib/sass-listen/listener/config.rb | 45 + .../lib/sass-listen/logger.rb | 32 + .../lib/sass-listen/options.rb | 23 + .../lib/sass-listen/queue_optimizer.rb | 132 + .../lib/sass-listen/record.rb | 120 + .../lib/sass-listen/record/entry.rb | 62 + .../sass-listen/record/symlink_detector.rb | 39 + .../lib/sass-listen/silencer.rb | 97 + .../lib/sass-listen/silencer/controller.rb | 48 + .../lib/sass-listen/version.rb | 3 + .../specifications/addressable-2.6.0.gemspec | 39 + .../specifications/colorator-1.1.0.gemspec | 34 + .../concurrent-ruby-1.1.4.gemspec | 23 + .../specifications/em-websocket-0.5.1.gemspec | 35 + .../specifications/eventmachine-1.2.7.gemspec | Bin 0 -> 3599 bytes .../2.5.0/specifications/ffi-1.10.0.gemspec | 49 + .../forwardable-extended-2.6.0.gemspec | 20 + .../http_parser.rb-0.6.0.gemspec | 50 + .../2.5.0/specifications/i18n-0.9.5.gemspec | 34 + .../2.5.0/specifications/jekyll-3.8.5.gemspec | 71 + .../jekyll-archives-2.1.1.gemspec | 43 + .../specifications/jekyll-feed-0.11.0.gemspec | 50 + .../jekyll-paginate-1.1.0.gemspec | 40 + .../jekyll-sass-converter-1.5.2.gemspec | 46 + .../jekyll-seo-tag-2.5.0.gemspec | 46 + .../jekyll-sitemap-1.2.0.gemspec | 46 + .../specifications/jekyll-watch-2.1.2.gemspec | 47 + .../specifications/kramdown-1.17.0.gemspec | 66 + .../2.5.0/specifications/liquid-4.0.1.gemspec | 37 + .../2.5.0/specifications/listen-3.1.5.gemspec | 44 + .../specifications/mercenary-0.3.6.gemspec | 38 + .../specifications/pathutil-0.16.2.gemspec | 32 + .../public_suffix-3.0.3.gemspec | 41 + .../specifications/rb-fsevent-0.10.3.gemspec | 42 + .../specifications/rb-inotify-0.10.0.gemspec | 44 + .../2.5.0/specifications/rouge-3.3.0.gemspec | 25 + .../specifications/ruby_dep-1.5.0.gemspec | 34 + .../specifications/safe_yaml-1.0.5.gemspec | 23 + .../2.5.0/specifications/sass-3.7.3.gemspec | 50 + .../specifications/sass-listen-4.0.0.gemspec | 39 + 3050 files changed, 352492 insertions(+), 527 deletions(-) create mode 100644 .bundle/config create mode 100755 .gitignore create mode 100644 .travis.yml create mode 100755 Gemfile create mode 100755 Gemfile.lock create mode 100755 LICENSE.txt create mode 100755 README.md create mode 100755 _config.yml create mode 100755 _includes/adsense-under-header.html create mode 100755 _includes/disqus.html create mode 100755 _includes/featuredbox.html create mode 100755 _includes/pagination.html create mode 100755 _includes/postbox.html create mode 100755 _includes/search-lunr.html create mode 100755 _includes/share.html create mode 100755 _includes/star_rating.html create mode 100755 _includes/star_rating_postbox.html create mode 100755 _includes/toc.html create mode 100755 _layouts/archive.html create mode 100755 _layouts/categories.html create mode 100755 _layouts/default.html create mode 100755 _layouts/page.html create mode 100755 _layouts/post.html create mode 100755 _layouts/tags.html create mode 100755 _pages/about.md create mode 100755 _pages/categories.md create mode 100755 _pages/tags.md create mode 100755 _posts/2020-03-17-welcome.md create mode 100755 _sass/_stars.scss create mode 100755 _sass/_starsnonscss.scss create mode 100755 _sass/_syntax.scss create mode 100755 assets/css/main.scss create mode 100755 changelog.md create mode 100644 docs/404.html rename about.html => docs/about.html (100%) rename {assets => docs/assets}/css/main.css (100%) create mode 100755 docs/assets/css/screen.css create mode 100755 docs/assets/fonts/casper-icons.eot create mode 100755 docs/assets/fonts/casper-icons.svg create mode 100755 docs/assets/fonts/casper-icons.ttf create mode 100755 docs/assets/fonts/casper-icons.woff create mode 100644 docs/assets/images/01.svg create mode 100644 docs/assets/images/favicon.ico create mode 100644 docs/assets/images/jumbotron.jpg create mode 100644 docs/assets/images/logo_no_text.png create mode 100755 docs/assets/js/ie10-viewport-bug-workaround.js create mode 100755 docs/assets/js/jquery.min.js create mode 100755 docs/assets/js/lazyload.js create mode 100755 docs/assets/js/lunr.js create mode 100644 docs/assets/js/lunrsearchengine.js create mode 100755 docs/assets/js/mediumish.js rename categories.html => docs/categories.html (100%) create mode 100755 docs/docker-compose.yml create mode 100644 docs/favicon.ico create mode 100644 docs/feed.xml create mode 100644 docs/index.html rename robots.txt => docs/robots.txt (100%) rename sitemap.xml => docs/sitemap.xml (100%) rename tags.html => docs/tags.html (100%) create mode 100755 docs/theme-LICENSE.txt rename {welcome => docs/welcome}/index.html (100%) create mode 100755 site/_config.yml create mode 100755 vendor/bundle/ruby/2.5.0/bin/jekyll create mode 100755 vendor/bundle/ruby/2.5.0/bin/kramdown create mode 100755 vendor/bundle/ruby/2.5.0/bin/listen create mode 100755 vendor/bundle/ruby/2.5.0/bin/rougify create mode 100755 vendor/bundle/ruby/2.5.0/bin/safe_yaml create mode 100755 vendor/bundle/ruby/2.5.0/bin/sass create mode 100755 vendor/bundle/ruby/2.5.0/bin/sass-convert create mode 100755 vendor/bundle/ruby/2.5.0/bin/scss create mode 100644 vendor/bundle/ruby/2.5.0/cache/addressable-2.6.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/colorator-1.1.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/concurrent-ruby-1.1.4.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/em-websocket-0.5.1.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/eventmachine-1.2.7.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/ffi-1.10.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/forwardable-extended-2.6.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/http_parser.rb-0.6.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/i18n-0.9.5.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-3.8.5.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-archives-2.1.1.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-feed-0.11.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-paginate-1.1.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-sass-converter-1.5.2.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-seo-tag-2.5.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-sitemap-1.2.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/jekyll-watch-2.1.2.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/kramdown-1.17.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/liquid-4.0.1.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/listen-3.1.5.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/mercenary-0.3.6.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/pathutil-0.16.2.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/public_suffix-3.0.3.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/rb-fsevent-0.10.3.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/rb-inotify-0.10.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/rouge-3.3.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/ruby_dep-1.5.0.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/safe_yaml-1.0.5.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/sass-3.7.3.gem create mode 100644 vendor/bundle/ruby/2.5.0/cache/sass-listen-4.0.0.gem create mode 100755 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem.build_complete create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem_make.out create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/mkmf.log create mode 100755 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/rubyeventmachine.so create mode 100755 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/ffi_c.so create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem.build_complete create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem_make.out create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/mkmf.log create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem.build_complete create mode 100644 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem_make.out create mode 100755 vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/ruby_http_parser.so create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/data/unicode.data create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna/native.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna/pure.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/template.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/uri.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/idna_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/net_http_compat_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/rack_mount_compat_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/security_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/template_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/uri_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/clobber.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/gem.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/git.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/metrics.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/rspec.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/yard.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/README.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/colorator.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator/core_ext.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/LICENSE.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/ConcurrentRubyService.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java create mode 100755 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java create mode 100755 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent-ruby.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/agent.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/array.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/async.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atom.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/abstract_thread_local_var.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_boolean.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_fixnum.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_markable_reference.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_reference.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/count_down_latch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/cyclic_barrier.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/event.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_count_down_latch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_thread_local_var.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_boolean.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_fixnum.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_count_down_latch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_semaphore.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/read_write_lock.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/reentrant_read_write_lock.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/ruby_thread_local_var.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/semaphore.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/thread_local_var.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/mutex_atomic.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomics.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_notify_observer_set.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_write_observer_set.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/java_non_concurrent_priority_queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/lock_free_stack.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/atomic_reference_map_backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/mri_map_backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/non_concurrent_map_backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/synchronized_map_backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/non_concurrent_priority_queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/deprecation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/dereferenceable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/logging.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/obligation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/observable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concurrent_ruby.jar create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/configuration.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/constants.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/dataflow.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/delay.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/errors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/exchanger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/abstract_executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/cached_thread_pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/fixed_thread_pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/immediate_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/indirect_immediate_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_single_thread_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_thread_pool_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_single_thread_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_thread_pool_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/safe_task_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serial_executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution_delegator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/simple_executor_service.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/single_thread_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/thread_pool_executor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/timer_set.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/future.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/hash.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/immutable_struct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/ivar.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/maybe.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mutable_struct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mvar.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/options.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promise.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promises.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/re_include.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/scheduled_task.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/set.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/settable_struct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_lockable_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_struct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/condition.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_lockable_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lock.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lockable_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mri_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mutex_lockable_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_lockable_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/truffleruby_object.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/volatile.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/synchronized_delegator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/adder.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/cheap_lockable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/data_structures.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/power_of_two_tuple.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/striped64.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/volatile.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/xor_shift_random.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/timer_task.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tuple.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tvar.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/at_exit.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/engine.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/monotonic_time.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_extension_loader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_integer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/processor_counter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/CHANGELOG.rdoc create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/echo.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/multicast.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/ping.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/test.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close03.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close05.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close06.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close75.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/connection.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/debugger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing03.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing04.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing05.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing07.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing76.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler03.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler05.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler06.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler07.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler08.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler13.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler75.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler76.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake04.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake75.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake76.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/masking04.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_03.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_06.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/websocket.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/common_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft03_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft05_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft06_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft13_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft75_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft76_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/gte_03_examples.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/shared_examples.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/framing_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/handshake_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/masking_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/GNU create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/DocumentationGuidesIndex.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/GettingStarted.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/ChangeLog create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/DEFERRABLES create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/EPOLL create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/INSTALL create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/KEYBOARD create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LEGAL create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LIGHTWEIGHT_CONCURRENCY create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/PURE_RUBY create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/RELEASE_NOTES create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SMTP create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SPAWNED_PROCESSES create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/TODO create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/01_eventmachine_echo_server.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/03_simple_chat_server.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/04_simple_chat_server_step_one.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/05_simple_chat_server_step_two.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/06_simple_chat_server_step_three.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/07_simple_chat_server_step_four.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/08_simple_chat_server_step_five.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_channel.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_array.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_counter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/.sitearchdir.time create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/Makefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/eventmachine.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/extconf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/.sitearchdir.time create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/Makefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/extconf.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/fastfilereaderext.so create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/rubymain.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/rubymain.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/project.h create mode 100755 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubyeventmachine.so create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.o create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/.classpath create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/.project create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactor.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactorException.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableChannel.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableDatagramChannel.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableSocketChannel.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/buftok.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/callback.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/channel.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/completion.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable/pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/file_watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/future.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/iterator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/messages.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/process_watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/processes.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/header_and_content.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient2.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_and_text.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_protocol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/linetext2.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/memcache.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/object_protocol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/postgres3.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/saslauth.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpclient.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpserver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/socks4.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/stomp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/tcptest.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pure_ruby.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/resolver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/spawnable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/streamer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/threaded_resource.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/tick_loop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/timers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/fastfilereaderext.so create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/jeventmachine.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/package.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test_pure.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.crt create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.key create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/dhparam.pem create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/em_test_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_attach.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_basic.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_channel.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_completion.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_count.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_write.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_defer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_deferrable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_epoll.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_error_handler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_exc.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_file_watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_fork.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_futures.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_handler_check.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_hc.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient2.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_idle_connection.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_inactivity_timeout.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv4.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv6.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_iterator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_kb.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_line_protocol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp2.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_many_fds.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_next_tick.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_object_protocol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pause.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pending_connect_timeout.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_process_watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_processes.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_proxy_connection.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pure.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_resolver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_running.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sasl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_send_file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_servers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_shutdown_hooks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpclient.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpserver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sock_opt.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_spawn.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_args.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_dhparam.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_ecdh_curve.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_extensions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_methods.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_protocols.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_verify.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_stomp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_system.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_threaded_resource.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_tick_loop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_timers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ud.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_unbind_reason.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitmodules create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.yardopts create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/COPYING create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE.SPECS create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/appveyor.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/.sitearchdir.time create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Buffer.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DataConverter.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/FunctionInfo.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Makefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructLayout.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Variadic.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/compat.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.bsd.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.darwin.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.gnu.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc64.mk create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.appveyor.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.github/issue_template.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis.yml create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/ar-lib create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/build.sh create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/compile create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/install.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/moxie-sim.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/site.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi-3.1 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libgcj create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.v1 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE-BUILDTOOLS create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/Makefile.am create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/acinclude.m4 create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/autogen.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.guess create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.sub create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.ac create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.host create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/generate-darwin-source-and-headers.py create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/Makefile.am create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi.h.in create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_cfi.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_common.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.map.in create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.pc.in create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libtool-version create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/asmcfi.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_append_flag.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_configure_args.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_require_defined.m4 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/Makefile.am create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi.3 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_call.3 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif.3 create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 create mode 100755 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/msvcc.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/osf.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/arcompact.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/closures.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/debug.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/dlmalloc.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/eabi.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ia64_flags.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/unix.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/java_raw_api.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/obsd.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/n32.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/o32.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/eabi.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/hpux32.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/linux.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix_closure.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/asm.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin_closure.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64_closure.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ppc_closure.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/prep_cif.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/raw_api.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v8.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v9.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/tile.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/types.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/elfbsd.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/asmnames.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffiw64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal64.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/unix64.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64_intel.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffitarget.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/sysv.S create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/stamp-h.in create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/Makefile.am create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/config/default.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/libffi.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/wrapper.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/README create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/call.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float4.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/negint.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/go.exp create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi_endian.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdbool.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdint.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ffi.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/autopointer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/buffer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/callback.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/enum.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/errno.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/ffi.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/io.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/library.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/managedstruct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/memorypointer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd12/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd12/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-cygwin/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-darwin/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd12/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-gnu/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-netbsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-openbsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-solaris/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-windows/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/ia64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64el-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsel-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6el-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6el-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-aix/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-darwin/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390x-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-solaris/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparcv9-solaris/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-cygwin/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-darwin/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd12/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-linux/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-netbsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-openbsd/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-solaris/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-windows/types.conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/pointer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct_layout_builder.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/const_generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator_task.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/struct_generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/types_generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/types.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/union.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/variadic.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getlogin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getpid.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/gettimeofday.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/hello.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/inotify.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/pty.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/qsort.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/sample_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitmodules create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/LICENSE-MIT create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Rakefile create mode 100755 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/standalone.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/thin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.sitearchdir.time create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/RubyHttpParserService.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ext_help.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/extconf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ruby_http_parser.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/.gitkeep create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/TODO create mode 100755 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/test.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/test.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/http_parser.rb.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http/parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/parser_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/requests.json create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/responses.json create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/compile.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/fixtures.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/spec.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/submodules.rake create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/MIT-LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-3.2.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.0.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.1.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.2.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.0.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.1.x create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-master create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cache.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cascade.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/chain.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/fallbacks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/flatten.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/gettext.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/interpolation_compiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/key_value.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/memoize.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/metadata.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/pluralization.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/simple.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/transliterator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/hash.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/kernel/suppress_warnings.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/string/interpolate.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/exceptions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/helpers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/po_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/interpolate/ruby.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/fallbacks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/parents.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/rfc4646.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/simple.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/middleware.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/basics.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/defaults.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/interpolation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/link.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date_time.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/procs.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/time.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/lookup.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/pluralization.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/procs.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/all_features_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/cascade_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/chain_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/fallbacks_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/key_value_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/memoize_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/override_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/pluralization_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/simple_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cache_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cascade_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/chain_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/exceptions_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/fallbacks_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/interpolation_compiler_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/key_value_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/memoize_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/metadata_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/pluralization_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/simple_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/transliterator_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/core_ext/hash_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/api_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/backend_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/exceptions_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/gettext_plural_keys_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/interpolate_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/load_path_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/middleware_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/fallbacks_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/rfc4646_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/simple_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/run_all.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/de.po create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/empty.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/syntax.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/plurals.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/README.markdown create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/exe/jekyll create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/cleaner.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/collection.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/command.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/clean.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/help.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new_theme.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/live_reload_reactor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/livereload_assets/livereload.js create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/servlet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/websockets.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/configuration.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/identity.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/kramdown_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/rdiscount_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/redcarpet_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/smartypants.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/deprecator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/document.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/collection_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/excerpt_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/jekyll_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/site_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/static_file_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/unified_payload_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/url_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/entry_filter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/errors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/external.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/date_filters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/grouping_filters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/url_filters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/frontmatter_defaults.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/hooks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/layout.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_extensions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/table.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/log_adapter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/mime.types create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page_without_a_file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin_manager.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/publisher.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/collection_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/data_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/layout_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/page_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/post_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/static_file_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/theme_assets_reader.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/regenerator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/related_posts.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/site.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/static_file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/stevenson.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/highlight.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/include.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/link.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/post_url.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme_builder.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/url.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/ansi.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/exec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/internet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/platforms.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/rouge.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/thread_event.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/win_tz.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/404.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_config.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/about.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/index.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/CODE_OF_CONDUCT.md.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/LICENSE.txt.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/README.md.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/default.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/page.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/post.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_config.yml.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_post.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/style.scss create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/gitignore.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/theme.gemspec.erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_p_allowed.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_puts_allowed.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives/archive.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/jekyll-feed.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/feed.xml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/generator.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/meta-tag.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/page-without-a-file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/version.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/bootstrap create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/cibuild create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/fmt create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/release create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/test create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-01-collection-doc.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-02-collection-category-doc.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_config.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_data/authors.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_drafts/2015-01-12-a-draft.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_layouts/some_default.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-02-march-the-second.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-02-12-strip-newlines.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-liquid.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-pre.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-18-author-detail.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-08-08-stuck-in-the-middle.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2016-04-25-author-reference.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/feed.xslt.xml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/jekyll-feed_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/jekyll-paginate.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pager.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pagination.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/version.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/bootstrap create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/cibuild create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/unbundle create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pager_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pagination_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-20-blah.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-21-bleh.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-22-humor.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-23-hey-there.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-24-whateva.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-25-oh-yes.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/contacts/index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/sass.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/scss.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_config.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_layouts/default.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/advanced-usage.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/installation.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/usage.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/jekyll-seo-tag.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/author_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/filters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/image_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/url_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/version.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/template.html create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/bootstrap create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/cibuild create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/release create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/site create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/LICENSE.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/jekyll-sitemap.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/jekyll-sitemap.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/page_without_a_file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/robots.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/sitemap.xml create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/bootstrap create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/cibuild create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/console create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/fmt create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/release create mode 100755 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/test create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/404.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_config.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_layouts/some_default.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink_2.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/test.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/this-has-non-standard-chars.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_other_things/test2.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-02-march-the-second.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-05-11-exclude-this-post.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md create mode 100644 "vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-01-\351\224\231\350\257\257.html" create mode 100644 "vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-02-\351\224\231\350\257\257.html" create mode 100644 "vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-03-\351\224\231\350\257\257.html" create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/feeds/atom.xml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/images/hubot.png create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/jekyll-last-modified-at/page.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/exclude-this-page.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/htm.htm create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/test_index.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subfile.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subpage.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/xhtml.xhtml create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/404.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/excluded.pdf create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/html_file.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/test.pdf create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/jekyll-sitemap_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/test_jekyll-last-modified-at.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/commands/watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/watcher.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/AUTHORS create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/CONTRIBUTERS create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/COPYING create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/VERSION create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/generate_data.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/mdbasics.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/mdsyntax.text create mode 100755 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/testing.sh create mode 100755 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/timing.sh create mode 100755 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/bin/kramdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/_design.scss create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/bg.png create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.scss create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.template create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.template create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/index.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/installation.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/links.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/metainfo create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.feed create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/options.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/quickref.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sidebar.template create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sitemap.sitemap create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/syntax.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/tests.page create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/virtual create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/hash_ast.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/kramdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/latex.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/man.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/itex2mml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/katex.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/mathjax.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/mathjaxnode.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/ritex.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/math_engine/sskatex.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/pdf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/remove_html_tags.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/syntax_highlighter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/syntax_highlighter/coderay.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/syntax_highlighter/minted.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/syntax_highlighter/rouge.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/converter/toc.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/document.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/element.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/error.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/options.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/gfm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/abbreviation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/autolink.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/blank_line.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/block_boundary.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/blockquote.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/codeblock.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/codespan.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/emphasis.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/eob.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/escaped_chars.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/extensions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/footnote.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/header.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/horizontal_rule.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/html_entity.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/line_break.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/link.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/list.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/math.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/paragraph.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/smart_quotes.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/table.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/kramdown/typographic_symbol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/parser/markdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/configurable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/entities.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/lru_cache.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/ordered_hash.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/string_scanner.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/utils/unidecoder.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/lib/kramdown/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/man/man1/kramdown.1 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/setup.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/run_tests.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/test_files.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/test_location.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/test_string_scanner_kramdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/01_blank_line/spaces.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/01_blank_line/spaces.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/01_blank_line/tabs.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/01_blank_line/tabs.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/beginning.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/beginning.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/middle.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/02_eob/middle.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/indented.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/indented.html.gfm create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/indented.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/line_break_last_line.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/line_break_last_line.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/no_newline_at_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/no_newline_at_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/one_para.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/one_para.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/two_para.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/two_para.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/with_html_to_native.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/with_html_to_native.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/03_paragraph/with_html_to_native.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/atx_header.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/atx_header.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/atx_header_no_newline_at_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/atx_header_no_newline_at_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/header_type_offset.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/header_type_offset.kramdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/header_type_offset.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/header_type_offset.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/header_type_offset.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/setext_header.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/setext_header.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/setext_header_no_newline_at_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/setext_header_no_newline_at_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_prefix.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_prefix.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_prefix.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_stripping.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_stripping.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_id_stripping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_ids.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_ids.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/04_header/with_auto_ids.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/indented.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/indented.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/lazy.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/lazy.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/nested.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/nested.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/no_newline_at_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/no_newline_at_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/very_long_line.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/very_long_line.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/with_code_blocks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/05_blockquote/with_code_blocks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/disable-highlighting.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/disable-highlighting.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/disable-highlighting.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/error.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/error.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted-with-opts.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted-with-opts.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted-with-opts.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-minted.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-opts.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-opts.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting-opts.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/highlighting.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/issue_gh45.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/issue_gh45.test create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/lazy.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/lazy.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/no_newline_at_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/no_newline_at_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/no_newline_at_end_1.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/no_newline_at_end_1.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/disabled.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/disabled.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/disabled.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/multiple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/multiple.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/multiple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/simple.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/rouge/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/tilde_syntax.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/tilde_syntax.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/whitespace.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/whitespace.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_blank_line.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_blank_line.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_eob_marker.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_eob_marker.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_any_char.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_any_char.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_any_char.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_name_with_dash.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_name_with_dash.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/06_codeblock/with_lang_in_fenced_block_name_with_dash.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/error.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/error.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/error.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/sepspaces.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/sepspaces.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/septabs.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/07_horizontal_rule/septabs.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/brackets_in_item.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/brackets_in_item.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/escaping.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/escaping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/item_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/item_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/lazy.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/lazy.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/lazy_and_nested.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/lazy_and_nested.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/list_and_hr.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/list_and_hr.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/list_and_others.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/list_and_others.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/mixed.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/mixed.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/nested.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/nested.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/other_first_element.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/other_first_element.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/simple_ol.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/simple_ol.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/simple_ul.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/simple_ul.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/single_item.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/single_item.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/special_cases.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/08_list/special_cases.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/comment.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/comment.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/deflists.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/deflists.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/deflists.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/tables.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/tables.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/content_model/tables.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html5_attributes.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html5_attributes.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_after_block.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_after_block.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_and_codeblocks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_and_codeblocks.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_and_codeblocks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_and_headers.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_and_headers.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/code.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/code.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/comment.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/comment.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/emphasis.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/emphasis.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/entity.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/entity.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/header.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/header.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/header.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_dl.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_dl.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_ol.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_ol.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_ul.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/list_ul.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/paragraph.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/paragraph.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/table_normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/table_normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/table_simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/table_simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/typography.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/typography.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/html_to_native/typography.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/invalid_html_1.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/invalid_html_1.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/invalid_html_2.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/invalid_html_2.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/markdown_attr.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/markdown_attr.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/not_parsed.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/not_parsed.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.htmlinput create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.htmlinput create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.kramdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.man create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.htmlinput create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.latex create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.options create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html.19 create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.html create mode 100644 vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.text create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/History.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block_body.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/condition.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/context.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/document.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/errors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/expression.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/extensions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/file_system.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/forloop_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/i18n.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/interrupts.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/locales/en.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parse_context.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser_switching.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler/hooks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/range_lookup.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/resource_limits.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/standardfilters.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/strainer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tablerowloop_drop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tag.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/assign.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/break.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/capture.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/case.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/comment.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/continue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/cycle.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/decrement.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/for.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/if.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/ifchanged.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/include.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/increment.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/raw.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/table_row.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/unless.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/template.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tokenizer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/utils.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable_lookup.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/fixtures/en_locale.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/assign_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/blank_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/block_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/capture_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/context_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/document_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/drop_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/error_handling_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/filter_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/hash_ordering_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/output_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/parsing_quirks_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/render_profiling_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/security_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/standard_filter_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/break_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/continue_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/for_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/if_else_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/include_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/increment_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/raw_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/standard_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/statements_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/table_row_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/unless_else_tag_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/template_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/trim_mode_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/variable_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/test_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/block_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/condition_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/context_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/file_system_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/i18n_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/lexer_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/parser_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/regexp_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/strainer_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tag_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/case_tag_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/for_tag_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/if_tag_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/template_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tokenizer_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/variable_unit_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CONTRIBUTING.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/README.md create mode 100755 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/bin/listen create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/bsd.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/darwin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/linux.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/polling.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/windows.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/change.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/cli.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/directory.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/loop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/processor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/fsm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/logger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/options.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/queue_optimizer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/symlink_detector.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer/controller.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/History.markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Rakefile create mode 100755 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/help_dialogue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/logging.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/trace.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/command.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/option.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/presenter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/program.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/mercenary.gemspec create mode 100755 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/bootstrap create mode 100755 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/cibuild create mode 100755 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/console create mode 100755 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/examples create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/command_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/option_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/presenter_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/program_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/helpers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop_defaults.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.ruby-gemset create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.yardopts create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/2.0-Upgrade.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Rakefile create mode 100755 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/bin/console create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/data/list.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/domain.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/errors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/list.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/rule.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/public_suffix.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/.empty create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/acceptance_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find_all.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_names.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select_incremental.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_valid.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/domain_profiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler_jp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/initialization_profiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/list_profsize.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/object_binsize.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/psl_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/test_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/tests.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/domain_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/errors_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/list_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/public_suffix_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/rule_test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Guardfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Rakefile create mode 100755 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/bin/fsevent_watch create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/common.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/defines.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/main.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.h create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/rakefile.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/otnetstring.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/fsevent.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/rb-fsevent.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.yardopts create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/LICENSE.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Rakefile create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/errors.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/event.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native/flags.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/notifier.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/watcher.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/rb-inotify.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/inotify_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/notifier_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/LICENSE create mode 100755 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/bin/rougify create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/cli.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/abap create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/actionscript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apache create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apiblueprint create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/applescript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/awk create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/biml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/bsl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ceylon create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cfscript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/clojure create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cmake create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coffeescript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/common_lisp create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/conf create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/console create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coq create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cpp create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/crystal create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/csharp create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/css create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/d create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dart create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/diff create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/digdag create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/docker create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dot create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/eiffel create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elixir create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elm create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erlang create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/factor create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fortran create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fsharp create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/gherkin create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/glsl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/go create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/gradle create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/graphql create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/groovy create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/hack create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/haml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/handlebars create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/haskell create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/hcl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/html create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/http create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/hylang create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/idlang create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/igorpro create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ini create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/io create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/irb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/irb_output create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/java create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/javascript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jinja create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/json create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/json-doc create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsonnet create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsp create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsx create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/julia create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/kotlin create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lasso create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/liquid create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_coffeescript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_haskell create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/llvm create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lua create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/m68k create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/make create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/markdown create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mathematica create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/matlab create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/moonscript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mosel create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mxml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nasm create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nginx create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nim create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nix create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/objective_c create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ocaml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pascal create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/perl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/php create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plaintext create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plist create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pony create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/powershell create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/praat create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prolog create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prometheus create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/properties create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/protobuf create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/puppet create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/python create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/q create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/qml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/r create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/racket create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ruby create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/rust create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sass create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scala create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scheme create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scss create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sed create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/shell create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sieve create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/slim create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smalltalk create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smarty create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sqf create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sql create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/swift create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tap create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tcl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/terraform create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tex create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/toml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tsx create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tulip create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/turtle create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/twig create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/typescript create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vala create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/verilog create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vhdl create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/viml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vue create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/wollok create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/xml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/yaml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_inline.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_legacy.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_linewise.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_pygments.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_table.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/null.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/terminal256.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guesser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/disambiguation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/filename.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/glob_mapping.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/mimetype.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/modeline.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/source.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/util.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/abap.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/actionscript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache/keywords.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apiblueprint.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apple_script.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/awk.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/biml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/bsl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/c.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ceylon.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cfscript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/clojure.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cmake.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/coffeescript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/common_lisp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/conf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/console.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/coq.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cpp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/crystal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/csharp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/css.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/d.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/dart.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/diff.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/digdag.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/docker.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/dot.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/eiffel.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/elixir.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/elm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/erb.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/erlang.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/factor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/fortran.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/fsharp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/gherkin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/gherkin/keywords.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/glsl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/go.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/gradle.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/graphql.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/groovy.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hack.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/haml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/handlebars.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/haskell.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hcl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/html.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/http.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hylang.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/idlang.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/igorpro.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ini.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/io.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/irb.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/java.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/javascript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/jinja.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/json.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/json_doc.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/jsonnet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/jsp.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/jsx.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/julia.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/kotlin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lasso.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lasso/keywords.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/liquid.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_coffeescript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_haskell.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/llvm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua/builtins.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/m68k.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/make.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/markdown.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica/builtins.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab/builtins.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/moonscript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mosel.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nasm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nginx.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nim.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nix.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/objective_c.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ocaml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pascal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/perl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php/builtins.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plain_text.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plist.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pony.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/powershell.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/praat.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/prolog.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/prometheus.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/properties.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/protobuf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/puppet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/python.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/q.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/qml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/r.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/racket.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ruby.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/rust.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass/common.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scala.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scheme.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scss.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sed.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/shell.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sieve.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/slim.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/smalltalk.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/smarty.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf/commands.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sql.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/swift.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tap.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tcl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/terraform.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tex.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/toml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tsx.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tulip.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/turtle.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/twig.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript/common.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vala.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vb.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/verilog.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vhdl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml/keywords.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/wollok.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/xml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/yaml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/plugins/redcarpet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/regex_lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/template_lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/text_analyzer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/theme.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/base16.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/colorful.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/github.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/gruvbox.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/igor_pro.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/molokai.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai_sublime.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/pastie.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/thankful_eyes.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/tulip.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/token.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/util.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/rouge.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rubocop.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/logger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/quiet.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/ruby_version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis/ruby_version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/warning.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.gitignore create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.travis.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/CHANGES.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Gemfile create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Rakefile create mode 100755 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bin/safe_yaml create mode 100755 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb create mode 100755 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.2.yaml create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.3.yaml create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue48.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue49.yml create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/libyaml_checker_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/psych_resolver_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/resolver_specs.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/safe_yaml_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/spec_helper.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/store_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/support/exploitable_back_door.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/syck_resolver_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/base64_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_date_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_integer_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_symbol_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/yaml_spec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/.yardopts create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CODE_OF_CONDUCT.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CONTRIBUTING.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/MIT-LICENSE create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/REVISION create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_DATE create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_NAME create mode 100755 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass create mode 100755 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass-convert create mode 100755 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/scss create mode 100755 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/sass-spec-ref.sh create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/update_watch.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/init.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/chain.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/filesystem.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/memory.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/null.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/callbacks.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/css.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/deprecation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/engine.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/environment.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/error.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/sass_convert.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/features.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/deprecated_path.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/filesystem.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/logger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/logger/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/logger/delayed.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/logger/log_level.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/media.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/compiler.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/configuration.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/generic.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/merb.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rack.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rails.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/staleness_checker.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/railtie.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/repl.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/root.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/functions.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/lexer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/funcall.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/interpolation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/list_literal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/literal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/map_literal.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/operation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/selector.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/string_interpolation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/unary_operation.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/variable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/arg_list.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/bool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/callable.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/color.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/function.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/helpers.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/list.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/null.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/number.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/string.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/css_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/rx.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/static_parser.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/abstract_sequence.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/comma_sequence.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/pseudo.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/sequence.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple_sequence.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/shared.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/position.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/range.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/stack.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/supports.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/at_root_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/charset_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/comment_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/content_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/css_import_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/debug_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/directive_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/each_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/error_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/extend_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/for_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/function_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/if_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/import_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/keyframe_rule_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/media_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_def_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/prop_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/return_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/root_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/rule_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/supports_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/trace_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/variable_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/check_nesting.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/convert.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/cssize.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/deep_copy.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/extend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/perform.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/set_options.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/to_css.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/warn_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/while_node.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/multibyte_string_scanner.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/normalized_map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/subset_map.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/test.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/rails/init.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CHANGELOG.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CONTRIBUTING.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/LICENSE.txt create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/README.md create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/base.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/bsd.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/darwin.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/linux.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/polling.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/windows.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/backend.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/change.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/cli.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/directory.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/loop.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/processor.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/queue.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/file.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/fsm.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/internals/thread_pool.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener/config.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/logger.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/options.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/queue_optimizer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/entry.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/symlink_detector.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer/controller.rb create mode 100644 vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/version.rb create mode 100644 vendor/bundle/ruby/2.5.0/specifications/addressable-2.6.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/colorator-1.1.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/concurrent-ruby-1.1.4.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/em-websocket-0.5.1.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/eventmachine-1.2.7.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/ffi-1.10.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/forwardable-extended-2.6.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/http_parser.rb-0.6.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/i18n-0.9.5.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-3.8.5.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-archives-2.1.1.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-feed-0.11.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-paginate-1.1.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-sass-converter-1.5.2.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-seo-tag-2.5.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-sitemap-1.2.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/jekyll-watch-2.1.2.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/kramdown-1.17.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/liquid-4.0.1.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/listen-3.1.5.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/mercenary-0.3.6.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/pathutil-0.16.2.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/public_suffix-3.0.3.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/rb-fsevent-0.10.3.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/rb-inotify-0.10.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/rouge-3.3.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/ruby_dep-1.5.0.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/safe_yaml-1.0.5.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/sass-3.7.3.gemspec create mode 100644 vendor/bundle/ruby/2.5.0/specifications/sass-listen-4.0.0.gemspec diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 0000000000..175b682cef --- /dev/null +++ b/.bundle/config @@ -0,0 +1,5 @@ +--- +BUNDLE_RETRY: "3" +BUNDLE_FROZEN: "true" +BUNDLE_PATH: "vendor/bundle" +BUNDLE_JOBS: "3" diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000000..8312df086d --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +_site +.DS_Store +*.swp +.sass-cache +*~ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..91a1517035 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +language: ruby +cache: bundler +branches: + only: + - release +script: + - JEKYLL_ENV=production bundle install + - JEKYLL_ENV=production bundle exec jekyll build --destination docs +deploy: + provider: pages + target-branch: master + email: deploy@travis-ci.org + name: Deployment Bot + skip-cleanup: true + github-token: $GITHUB_TOKEN + keep-history: true + on: + branch: release \ No newline at end of file diff --git a/404.html b/404.html index f910c71d68..622a70154b 100755 --- a/404.html +++ b/404.html @@ -1,215 +1,10 @@ - - - - - +--- +layout: default +title: 404 +permalink: /404.html +--- - - -404 | Mother Tongues Blog - - -404 | Mother Tongues Blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - -
      -

      Mother Tongues Blog

      -

      - Smashing the lore of language technology! -

      -
      - - -
      -
      +

      404 Page does not exist!

      -

      Please use the search bar at the top or visit our homepage!

      -
      - -
      - - - -
      -
      - Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter -
      -
      - - -
      -
      -
      -
      - - -
      - - -
      -
      -
      -
      -

      Explore

      -
      -
      -
      - - - - - -
      -
      +

      Please use the search bar at the top or visit our homepage!

      - - - - - -
      - - - - - - - - - - - - - - - - - diff --git a/Gemfile b/Gemfile new file mode 100755 index 0000000000..b8073827f0 --- /dev/null +++ b/Gemfile @@ -0,0 +1,20 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# + +# If you have any plugins, put them here! +gem 'wdm', '>= 0.1.0' if Gem.win_platform? +group :jekyll_plugins do + gem 'jekyll-feed' + gem 'jekyll-sitemap' + gem 'jekyll-paginate' + gem 'jekyll-seo-tag' + gem 'jekyll-archives' + gem 'kramdown' + gem 'rouge' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100755 index 0000000000..52ff7c4619 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,81 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.6.0) + public_suffix (>= 2.0.2, < 4.0) + colorator (1.1.0) + concurrent-ruby (1.1.4) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.7) + eventmachine (1.2.7-x64-mingw32) + ffi (1.10.0) + ffi (1.10.0-x64-mingw32) + forwardable-extended (2.6.0) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.8.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-archives (2.1.1) + jekyll (>= 2.4) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-paginate (1.1.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-watch (2.1.2) + listen (~> 3.0) + kramdown (1.17.0) + liquid (4.0.1) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (3.0.3) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (3.3.0) + ruby_dep (1.5.0) + safe_yaml (1.0.5) + sass (3.7.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + +PLATFORMS + ruby + x64-mingw32 + +DEPENDENCIES + jekyll-archives + jekyll-feed + jekyll-paginate + jekyll-seo-tag + jekyll-sitemap + kramdown + rouge + +BUNDLED WITH + 2.0.1 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100755 index 0000000000..23417c87d1 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,8 @@ +Copyright (c) 2020 Aidan Pine +License: MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100755 index 0000000000..8bf8b03f95 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# Mother Tongues Blog + +Welcome to the Mother Tongues Blog repository. + +### Copyright + +Copyright Theme (C) 2019 Sal, https://www.wowthemes.net + +Copyright Blog (C) 2020 Aidan, https://aidanpine.ca + +Posts are copyrighted by authors! + +### Contribute + +1. [Fork the repo](https://github.com/roedoejet/mothertongues-blog). +2. Clone a copy of your fork on your local +3. Create a branch off of master and give it a meaningful name (e.g. my-new-mediumish-feature). +4. Make necessary changes, commit, push and open a pull request on GitHub. + +### Acknowledgements + +This blog was created from a fork of the fantastic [WowThemes Mediumish theme](https://wowthemesnet.github.io/mediumish-theme-jekyll/) + +Thank you! diff --git a/_config.yml b/_config.yml new file mode 100755 index 0000000000..e38d05b76f --- /dev/null +++ b/_config.yml @@ -0,0 +1,63 @@ +# Site +name: "Mother Tongues Blog" +title: "Mother Tongues Blog" +description: "Smashing the lore of language technology!" +logo: 'assets/images/logo_no_text.png' +favicon: 'assets/images/favicon.ico' +baseurl: '/mothertongues-blog' +google_analytics: 'UA-100872710-18' +disqus: 'mothertongues' +mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' +include: ["_pages"] +permalink: /:title/ + +# Authors +authors: + aidan: + name: Aidan + display_name: Aidan + gravatar: 7623fd3eeb0acbe1084fecc20c3093ae + email: hello@aidanpine.ca + web: https://aidanpine.ca + twitter: https://twitter.com/aidanpine + description: "Lead developer of Mother Tongues." + +# Plugins +plugins: + - jekyll-paginate + - jekyll-sitemap + - jekyll-feed + - jekyll-seo-tag + - jekyll-archives + +# Archives +jekyll-archives: + enabled: + - categories + layout: archive + permalinks: + category: '/category/:name/' + +# Pagination +paginate: 6 +paginate_path: /page:num/ + +# Other +markdown: kramdown + +kramdown: + input: GFM + syntax_highlighter: rouge + syntax_highlighter_opts: + block: + line_numbers: true + +# Adsense (change to "enabled" to activate, also your client id and ad slot. Create a new ad unit from your Adsense account to get the slot.) +adsense: "disabled" +# adsense-data-ad-client: "ca-pub-3412143450191416" +# adsense-data-ad-slot: "1363087678" + +# Lazy Images ("enabled" or "disabled") +lazyimages: "disabled" + +exclude: [changelog.md, LICENSE.txt, README.md, Gemfile, Gemfile.lock, vendor] diff --git a/_includes/adsense-under-header.html b/_includes/adsense-under-header.html new file mode 100755 index 0000000000..ee815bad21 --- /dev/null +++ b/_includes/adsense-under-header.html @@ -0,0 +1,12 @@ + + + + +
      \ No newline at end of file diff --git a/_includes/disqus.html b/_includes/disqus.html new file mode 100755 index 0000000000..af4d8719c9 --- /dev/null +++ b/_includes/disqus.html @@ -0,0 +1,14 @@ +
      +
      + + + comments powered by Disqus +
      diff --git a/_includes/featuredbox.html b/_includes/featuredbox.html new file mode 100755 index 0000000000..f5fc132550 --- /dev/null +++ b/_includes/featuredbox.html @@ -0,0 +1,61 @@ + +{% assign author = site.authors[post.author] %} +
      +
      +
      + {% if post.image %} + + {% endif %} +
      +
      +
      +
      +

      + {{ post.title }} + {% if post.rating %} +
      + {% include star_rating_postbox.html %} +
      + {% endif %} +

      + +

      {{ post.excerpt | strip_html | truncatewords:25 }}

      +
      + +
      +
      +
      +
      +
      +
      + \ No newline at end of file diff --git a/_includes/pagination.html b/_includes/pagination.html new file mode 100755 index 0000000000..5cf9c93e10 --- /dev/null +++ b/_includes/pagination.html @@ -0,0 +1,25 @@ +{% if paginator.total_pages > 1 %} + +{% endif %} \ No newline at end of file diff --git a/_includes/postbox.html b/_includes/postbox.html new file mode 100755 index 0000000000..80160e2d43 --- /dev/null +++ b/_includes/postbox.html @@ -0,0 +1,51 @@ + +{% assign author = site.authors[post.author] %} + +
      +
      + +
      +

      + {{ post.title }} + {% if post.rating %} +
      + {% include star_rating_postbox.html %} +
      + {% endif %} +

      +

      {{ post.excerpt | strip_html | truncatewords:30 }}

      +
      + +
      +
      + \ No newline at end of file diff --git a/_includes/search-lunr.html b/_includes/search-lunr.html new file mode 100755 index 0000000000..55865c004e --- /dev/null +++ b/_includes/search-lunr.html @@ -0,0 +1,21 @@ + + + + + + + + +
      +
        +
        + + \ No newline at end of file diff --git a/_includes/share.html b/_includes/share.html new file mode 100755 index 0000000000..df5aae16c0 --- /dev/null +++ b/_includes/share.html @@ -0,0 +1,34 @@ + diff --git a/_includes/star_rating.html b/_includes/star_rating.html new file mode 100755 index 0000000000..e81dc72d49 --- /dev/null +++ b/_includes/star_rating.html @@ -0,0 +1,9 @@ +
        +
        + + + + + +
        +
        \ No newline at end of file diff --git a/_includes/star_rating_postbox.html b/_includes/star_rating_postbox.html new file mode 100755 index 0000000000..f511462aa4 --- /dev/null +++ b/_includes/star_rating_postbox.html @@ -0,0 +1,9 @@ +
        +
        + + + + + +
        +
        \ No newline at end of file diff --git a/_includes/toc.html b/_includes/toc.html new file mode 100755 index 0000000000..8051f497d8 --- /dev/null +++ b/_includes/toc.html @@ -0,0 +1,87 @@ +{% capture tocWorkspace %} + {% comment %} + Version 1.0.6 + https://github.com/allejo/jekyll-toc + + "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe + + Usage: + {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC + * class (string) : '' - a CSS class assigned to the TOC + * id (string) : '' - an ID to assigned to the TOC + * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored + * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored + * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list + * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level + * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content + * anchor_class (string) : '' - add custom class(es) for each anchor element + + Output: + An ordered or unordered list representing the table of contents of a markdown block. This snippet will only + generate the table of contents and will NOT output the markdown given to it + {% endcomment %} + + {% capture my_toc %}{% endcapture %} + {% assign orderedList = include.ordered | default: false %} + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign nodes = include.html | split: ' maxHeader %} + {% continue %} + {% endif %} + + {% if firstHeader %} + {% assign firstHeader = false %} + {% assign minHeader = headerLevel %} + {% endif %} + + {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %} + {% assign _workspace = node | split: '' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + + {% assign space = '' %} + {% for i in (1..indentAmount) %} + {% assign space = space | prepend: ' ' %} + {% endfor %} + + {% unless include.item_class == blank %} + {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} + {% endunless %} + + {% capture my_toc %}{{ my_toc }} +{{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} + {% endfor %} + + {% if include.class %} + {% capture my_toc %}{:.{{ include.class }}} +{{ my_toc | lstrip }}{% endcapture %} + {% endif %} + + {% if include.id %} + {% capture my_toc %}{: #{{ include.id }}} +{{ my_toc | lstrip }}{% endcapture %} + {% endif %} +{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} \ No newline at end of file diff --git a/_layouts/archive.html b/_layouts/archive.html new file mode 100755 index 0000000000..ca47d31da8 --- /dev/null +++ b/_layouts/archive.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Archive +--- + + +
        +
        +

        Archive of posts with {{ page.type }} '{{ page.title }}'

        +
        +
        + +{% for post in page.posts %} + + {% include postbox.html %} + +{% endfor %} + +
        +
        diff --git a/_layouts/categories.html b/_layouts/categories.html new file mode 100755 index 0000000000..75963ad94c --- /dev/null +++ b/_layouts/categories.html @@ -0,0 +1,23 @@ +--- +title: "Categories" +layout: default +permalink: "/categories.html" +--- + +
        +{% for category in site.categories %} +
        +

        Category {{ category[0] }}

        +
        +{% assign pages_list = category[1] %} +{% for post in pages_list %} +{% if post.title != null %} +{% if group == null or group == post.group %} +{% include postbox.html %} +{% endif %} +{% endif %} +{% endfor %} +{% assign pages_list = nil %} +{% assign group = nil %} +{% endfor %} +
        \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100755 index 0000000000..3fa6a68be8 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,192 @@ + + + + + + + + +{{ page.title }} | {{site.name}} + +{% seo %} + + + + + + + + + + + +{% if jekyll.environment == 'production' %} + + +{% endif %} + +{% capture layout %}{% if page.layout %}layout-{{ page.layout }}{% endif %}{% endcapture %} + + + + + + + + + +
        + +
        + + +
        +

        {{ site.name }}

        +

        + {{ site.description }} +

        +
        + + +
        + {{ content }} +
        + +{% if site.mailchimp-list %} + +
        +
        + {{site.title}}   Never miss a story from us, subscribe to our newsletter +
        +
        + + +
        +
        +
        +
        +{% endif %} + +
        + + +
        +
        +
        +
        +

        Explore

        +
        +
        +
        + {% assign categories_list = site.categories %} + {% if categories_list.first[0] == null %} + {% for category in categories_list %} + {{ category | camelcase }} ({{ site.tags[category].size }}) + {% endfor %} + {% else %} + {% for category in categories_list %} + {{ category[0] | camelcase }} ({{ category[1].size }}) + {% endfor %} + {% endif %} + {% assign categories_list = nil %} +
        +
        +
        + + +
        +
        +
        +
        + Copyright © {{ site.time | date: "%Y" }} {{ site.name }} +
        +
        + Mediumish Jekyll Theme by WowThemes.net +
        +
        +
        +
        + + +
        + + + + + + + + + +{% if site.lazyimages == "enabled" %} + +{% endif %} + + + +{% if page.layout == 'post' %} + +{% endif %} + + + diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100755 index 0000000000..1c7bfccae9 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + +
        +
        +

        {{ page.title }}

        +
        + +
        + {{content}} +
        + + {% if page.comments == true %} + +
        +
        + {% include disqus.html %} +
        +
        + + {% endif %} +
        \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100755 index 0000000000..cdeda5e829 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,181 @@ +--- +layout: default +disqus: false +archive: false +post_class: post-template +--- + + +
        +
        + + +
        + {% include share.html %} +
        + + + {% assign author = site.authors[page.author] %} + +
        +
        + + + {% if page.author %} +
        +
        + {% if author.avatar %} + {{ author.display_name }} + {% else %} + {{ author.display_name }} + {% endif %} +
        +
        + {{ author.display_name }} + {{ author.description }} +
        +
        + {% endif %} + + +

        {{ page.title }}

        + +
        + + + {% if site.adsense == "enabled" %} + {% include adsense-under-header.html %} + {% endif %} + + + + {% if page.image %} + + {% if site.lazyimages == "enabled" %} + {{ page.title }} + {% else if page.image %} + {{ page.title }} + {% endif %} + + {% endif %} + + + +
        + + {% if page.toc %} + {% if page.beforetoc %} +

        {{page.beforetoc}}

        + {% endif %} +
        +

        Summary

        + {% include toc.html html=content %} +
        + {% endif %} + + {{content}} +
        + + + {% if page.rating %} +
        + Rating: {% include star_rating.html %} +
        + {% endif %} + + +

        + + + {% if page.last_modified_at %} + (Updated: ) + {% endif %} + +

        + + +
        +
          + {% assign sortedCategories = page.categories | sort %} + {% for category in sortedCategories %} +
        • + {{ category }} +
        • + {% endfor %} +
        +
        + + + + + + + + + + +
        + + +
        +
        + + + +{% if page.comments != false %} +
        +
        +
        + {% include disqus.html %} +
        +
        +
        +{% endif %} + + + +{% if page.rating %} + +{% endif %} \ No newline at end of file diff --git a/_layouts/tags.html b/_layouts/tags.html new file mode 100755 index 0000000000..751999617a --- /dev/null +++ b/_layouts/tags.html @@ -0,0 +1,23 @@ +--- +title: "Tags" +layout: default +permalink: "/tags.html" +--- + +
        +{% for tag in site.tags %} +
        +

        Tag {{ tag[0] }}

        +
        +{% assign pages_list = tag[1] %} +{% for post in pages_list %} +{% if post.title != null %} +{% if group == null or group == post.group %} +{% include postbox.html %} +{% endif %} +{% endif %} +{% endfor %} +{% assign pages_list = nil %} +{% assign group = nil %} +{% endfor %} +
        \ No newline at end of file diff --git a/_pages/about.md b/_pages/about.md new file mode 100755 index 0000000000..de24d09b00 --- /dev/null +++ b/_pages/about.md @@ -0,0 +1,14 @@ +--- +layout: page +title: +permalink: /about +comments: true +--- + +
        +
        + +

        Welome to the Mother Tongues Blog.

        + +
        +
        diff --git a/_pages/categories.md b/_pages/categories.md new file mode 100755 index 0000000000..5e0add40a5 --- /dev/null +++ b/_pages/categories.md @@ -0,0 +1,5 @@ +--- +layout: categories +title: Categories +permalink: /categories +--- \ No newline at end of file diff --git a/_pages/tags.md b/_pages/tags.md new file mode 100755 index 0000000000..49b2c7580b --- /dev/null +++ b/_pages/tags.md @@ -0,0 +1,5 @@ +--- +layout: tags +title: Tags +permalink: /tags +--- \ No newline at end of file diff --git a/_posts/2020-03-17-welcome.md b/_posts/2020-03-17-welcome.md new file mode 100755 index 0000000000..37f42931a0 --- /dev/null +++ b/_posts/2020-03-17-welcome.md @@ -0,0 +1,19 @@ +--- +layout: post +title: "Welcome" +author: aidan +categories: [] +tags: [] +image: false +description: "Welcome to the Mother Tongues blog!" +featured: true +hidden: true +--- + +Welcome to the Mother Tongues official blog! + +Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. + +Here you'll find small tips and tricks for developing language technology with a focus on Indigenous languages. + +Be sure to [sign up]({{ site.mailchimp-list }}) to our mailing list to keep track of new blog posts and any events. diff --git a/_sass/_stars.scss b/_sass/_stars.scss new file mode 100755 index 0000000000..f578c30613 --- /dev/null +++ b/_sass/_stars.scss @@ -0,0 +1,137 @@ +/// Credits to https://codepen.io/damianmuti/pen/KmEMdR + +/// +$rating-min-value: 0 !default; +/// +$rating-max-value: 5 !default; +/// +$rating-steps-value: .25 !default; +/// +$rating-color-empty: '%23ddd' !default; +/// +$rating-color-full: gold !default; +/// +$rating-color-hover: grey !default; +/// This variable is a map containing the "d" attribute of each of the SVG icons +$rating-icons-paths: ( + quarter: 'M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z', + half: 'M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z', + three-quarters: 'M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z', + full: 'M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z' +); + +/// Creates a dynamic list of values that increment each .25 from 0 to 5 +/// @return {list} +@function rating-values() { + $rating-values: (); + + @for $i from $rating-min-value through ($rating-max-value / $rating-steps-value) { + $rating-value: abs($i * $rating-steps-value); + $rating-values: append($rating-values, $rating-value, 'comma'); + } + + @return $rating-values; +} + +/// Generates an SVG with a given fill color depending on the type of icon passed as parameter. The SVG string is scaped for cross-browser support. +/// @param {string} $icon - Type of icon. Accepted values: `quarter`, `half`, `three-quarters` or `full`. +/// @param {color} $color - Passes the fill color of the SVG icon that is being generated. Note: Hexa color values must be escaped for cross-browser support. +/// @return {string} background value. +@function get-icon($icon, $color) { + @if not index(quarter half three-quarters full, $icon) { + @error "Interaction type must be either `quarter`, `half`, `three-quarters` or `full`."; + } + + @return url('data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22' + $color + '%22%20d%3D%22' + map-get($rating-icons-paths, $icon) + '%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E') center / cover no-repeat; +} + +/// This is a CSS-only star rating component that shows the proper rating depending on a data-attribute value. JS logic behind this component should round up values per quarter. +/// @param {number} $star-size [20px] - Provides width and height for each of the stars. +/// @param {string} $rating-element [button] - Element to use for each of the stars. +/// @param {string} $interaction-type [representative] - Indicates whether this component should be clickable or representative. Accepted values: `clickable` or `representative`. +/// @example scss +/// .class { +/// c-rating(toem(20px), button, clickable); +/// } +/// @example markup +///
        +/// 1 +/// 2 +/// 3 +/// 4 +/// 5 +///
        +@mixin c-rating($star-size: 20px, $star-element: button, $interaction-type: representative) { + @if not index(clickable representative, $interaction-type) { + @error "Interaction type must be either `clickable` or `representative`."; + } + + #{$star-element} { + display: inline-block; + float: left; + width: $star-size; + height: $star-size; + border: 0; + text-indent: -9999px; + outline: none; + background: get-icon(full, $rating-color-empty); + + } + +@each $rating-value in rating-values() { + // Get the next higher integer. + $rating-value-ceil: ceil($rating-value); + + &[data-rating-value="#{$rating-value}"] { + #{$star-element}:nth-child(-n+#{$rating-value-ceil}) { + background: get-icon(full, $rating-color-full); + } + + #{$star-element}:nth-child(#{$rating-value-ceil}) { + // Evaluate which fraction of a star this value is and add the proper background + @if str-slice("#{$rating-value}", 2, 4) == '.25' { + background: get-icon(quarter, $rating-color-full), get-icon(full, $rating-color-empty) + } + @else if str-slice("#{$rating-value}", 2, 4) == '.5' { + background: get-icon(half, $rating-color-full), get-icon(full, $rating-color-empty) + } + @else if str-slice("#{$rating-value}", 2, 4) == '.75' { + background: get-icon(three-quarters, $rating-color-full), get-icon(full, $rating-color-empty) + } + } + } + } +} + +/// Convert to EMs function +/// @param {number} target - The value to be converted +/// @param {number} context [$msuxf-font-size] The base font size +/// @return {em} value +@function toem($target, $context: 16px) { + @if $target == 0 { + @return 0 + } + + @return $target / $context+0em; +} + + +.rating-holder { + font-size: 16px; + display: inline-block; + background-color: #fff; + border-radius: toem(25px); + box-sizing: border-box; +} + +.c-rating { + @include c-rating(toem(20px), button, clickable); + + &--small { + font-size: 50% + } + + &--big { + font-size: 150%; + } +} \ No newline at end of file diff --git a/_sass/_starsnonscss.scss b/_sass/_starsnonscss.scss new file mode 100755 index 0000000000..348aac8027 --- /dev/null +++ b/_sass/_starsnonscss.scss @@ -0,0 +1,92 @@ +.rating-holder { + font-size: 16px; + display: inline-block; + background-color: #fff; + border-radius: 1.5625em; + box-sizing: border-box; } + + .c-rating button { + display: inline-block; + float: left; + width: 1.25em; + height: 1.25em; + border: 0; + text-indent: -9999px; + outline: none; + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0"] button:nth-child(-n+0) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.25"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.25"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.5"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.5"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.75"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="0.75"] button:nth-child(1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1"] button:nth-child(-n+1) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.25"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.25"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.5"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.5"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.75"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="1.75"] button:nth-child(2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2"] button:nth-child(-n+2) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.25"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.25"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.5"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.5"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.75"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="2.75"] button:nth-child(3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3"] button:nth-child(-n+3) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.25"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.25"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.5"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.5"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.75"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="3.75"] button:nth-child(4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4"] button:nth-child(-n+4) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.25"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.25"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M196.208 415.2v-224.8l-139.504 20.272 100.944 98.384-23.84 138.928z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.5"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.5"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M258.672 64l-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6v-318.4z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.75"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="4.75"] button:nth-child(5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M321.616 190.496l-0.656-0.096-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 63.024 33.136z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat, url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating[data-rating-value="5"] button:nth-child(-n+5) { + background: url("data:image/svg+xml;utf8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22gold%22%20d%3D%22M457.888 210.672l-139.504-20.272-62.384-126.4-62.384 126.4-139.504 20.272 100.944 98.384-23.84 138.928 124.768-65.6 124.768 65.6-23.84-138.928c0 0 100.944-98.384 100.944-98.384z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E") center/cover no-repeat; } + .c-rating--small { + font-size: 50%; } + .c-rating--big { + font-size: 150%; } \ No newline at end of file diff --git a/_sass/_syntax.scss b/_sass/_syntax.scss new file mode 100755 index 0000000000..938050726f --- /dev/null +++ b/_sass/_syntax.scss @@ -0,0 +1,69 @@ + +.highlight { + background: #fff; + border: 0; + padding: 0; + margin-bottom:1.7rem; + .c { color: #999988; font-style: italic } /* Comment */ + .err { color: #a61717; background-color: #e3d2d2 } /* Error */ + .k { font-weight: bold } /* Keyword */ + .o { font-weight: bold } /* Operator */ + .cm { color: #999988; font-style: italic } /* Comment.Multiline */ + .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ + .c1 { color: #999988; font-style: italic } /* Comment.Single */ + .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ + .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ + .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ + .ge { font-style: italic } /* Generic.Emph */ + .gr { color: #aa0000 } /* Generic.Error */ + .gh { color: #999999 } /* Generic.Heading */ + .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ + .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ + .go { color: #888888 } /* Generic.Output */ + .gp { color: #555555 } /* Generic.Prompt */ + .gs { font-weight: bold } /* Generic.Strong */ + .gu { color: #aaaaaa } /* Generic.Subheading */ + .gt { color: #aa0000 } /* Generic.Traceback */ + .kc { font-weight: bold } /* Keyword.Constant */ + .kd { font-weight: bold } /* Keyword.Declaration */ + .kp { font-weight: bold } /* Keyword.Pseudo */ + .kr { font-weight: bold } /* Keyword.Reserved */ + .kt { color: #445588; font-weight: bold } /* Keyword.Type */ + .m { color: #009999 } /* Literal.Number */ + .s { color: #d14 } /* Literal.String */ + .na { color: #008080 } /* Name.Attribute */ + .nb { color: #0086B3 } /* Name.Builtin */ + .nc { color: #445588; font-weight: bold } /* Name.Class */ + .no { color: #008080 } /* Name.Constant */ + .ni { color: #800080 } /* Name.Entity */ + .ne { color: #990000; font-weight: bold } /* Name.Exception */ + .nf { color: #990000; font-weight: bold } /* Name.Function */ + .nn { color: #555555 } /* Name.Namespace */ + .nt { color: #000080 } /* Name.Tag */ + .nv { color: #008080 } /* Name.Variable */ + .ow { font-weight: bold } /* Operator.Word */ + .w { color: #bbbbbb } /* Text.Whitespace */ + .mf { color: #009999 } /* Literal.Number.Float */ + .mh { color: #009999 } /* Literal.Number.Hex */ + .mi { color: #009999 } /* Literal.Number.Integer */ + .mo { color: #009999 } /* Literal.Number.Oct */ + .sb { color: #d14 } /* Literal.String.Backtick */ + .sc { color: #d14 } /* Literal.String.Char */ + .sd { color: #d14 } /* Literal.String.Doc */ + .s2 { color: #d14 } /* Literal.String.Double */ + .se { color: #d14 } /* Literal.String.Escape */ + .sh { color: #d14 } /* Literal.String.Heredoc */ + .si { color: #d14 } /* Literal.String.Interpol */ + .sx { color: #d14 } /* Literal.String.Other */ + .sr { color: #009926 } /* Literal.String.Regex */ + .s1 { color: #d14 } /* Literal.String.Single */ + .ss { color: #990073 } /* Literal.String.Symbol */ + .bp { color: #999999 } /* Name.Builtin.Pseudo */ + .vc { color: #008080 } /* Name.Variable.Class */ + .vg { color: #008080 } /* Name.Variable.Global */ + .vi { color: #008080 } /* Name.Variable.Instance */ + .il { color: #009999 } /* Literal.Number.Integer.Long */ +} + +td.rouge-code { width: 100%;} +pre.lineno { color: #9999;} \ No newline at end of file diff --git a/assets/css/main.scss b/assets/css/main.scss new file mode 100755 index 0000000000..a7e8b9b25a --- /dev/null +++ b/assets/css/main.scss @@ -0,0 +1,15 @@ +--- +# Add a comment to make this file sass-y. +# Change this file for any custom CSS. +--- + +/* We need to add display:inline in order to align the '>>' of the 'read more' link */ +.post-excerpt p { + display:inline; +} + +// Import partials from `sass_dir` (defaults to `_sass`) +@import + "syntax", + "starsnonscss" +; diff --git a/assets/js/lunrsearchengine.js b/assets/js/lunrsearchengine.js index 7dfa154f71..e158428acf 100755 --- a/assets/js/lunrsearchengine.js +++ b/assets/js/lunrsearchengine.js @@ -1,35 +1,25 @@ +--- +layout: null +sitemap: false +--- -var documents = [{ - "id": 0, - "url": "/mothertongues-blog/404.html", - "title": "404", - "body": "404 Page does not exist!Please use the search bar at the top or visit our homepage! " - }, { - "id": 1, - "url": "/mothertongues-blog/about", - "title": "", - "body": "Welome to the Mother Tongues Blog. " - }, { - "id": 2, - "url": "/mothertongues-blog/categories", - "title": "Categories", - "body": "" - }, { - "id": 3, - "url": "/mothertongues-blog/", - "title": "Home", - "body": " Featured: Welcome : Welcome to the Mother Tongues official blog!: Aidan 17 Mar 2020 All Stories: " - }, { - "id": 4, - "url": "/mothertongues-blog/robots.txt", - "title": "", - "body": " Sitemap: {{ “sitemap. xml” absolute_url }} " - }, { - "id": 5, - "url": "/mothertongues-blog/welcome/", - "title": "Welcome", - "body": "2020/03/17 - Welcome to the Mother Tongues official blog! Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. Here you’ll find small tips and tricks for developing language technology with a focus on Indigenous languages. Be sure to sign up to our mailing list to keep track of new blog posts and any events. " - }]; +{% assign counter = 0 %} +var documents = [{% for page in site.pages %}{% if page.url contains '.xml' or page.url contains 'assets' or page.url contains 'category' or page.url contains 'tag' %}{% else %}{ + "id": {{ counter }}, + "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", + "title": "{{ page.title }}", + "body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '

        ', ': ' | replace: '

        ', ': ' | replace: '', ': ' | replace: '

        ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} + }, {% endif %}{% endfor %}{% for page in site.without-plugin %}{ + "id": {{ counter }}, + "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", + "title": "{{ page.title }}", + "body": "{{ page.content | markdownify | replace: '.', '. ' | replace: '', ': ' | replace: '', ': ' | replace: '', ': ' | replace: '

        ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} + }, {% endfor %}{% for page in site.posts %}{ + "id": {{ counter }}, + "url": "{{ site.url }}{{site.baseurl}}{{ page.url }}", + "title": "{{ page.title }}", + "body": "{{ page.date | date: "%Y/%m/%d" }} - {{ page.content | markdownify | replace: '.', '. ' | replace: '', ': ' | replace: '', ': ' | replace: '', ': ' | replace: '

        ', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %} + }{% if forloop.last %}{% else %}, {% endif %}{% endfor %}]; var idx = lunr(function () { this.ref('id') diff --git a/changelog.md b/changelog.md new file mode 100755 index 0000000000..cc8838c3dc --- /dev/null +++ b/changelog.md @@ -0,0 +1,67 @@ +# Mediumish Jekyll Theme - Change Log + +## 2019-05-16, v1.0.36 +- docker-composer.yml +- better responsiveness for 1920x1080 resolution + +## 2019-04-02, v1.0.35 +- Fixed Github pages issue with ratings under 1 +- Added support for local avatars + +## 2019-03-22, v1.0.34 +- Deferred font awesome and google fonts + +## 2019-03-22, v1.0.33 +- Added image lazy load (config.yml - lazyimages: "enabled/disabled") +- Added object cover images instead of background images for home featured cards +- Removed disqus count from homepage for better performance + +## 2019-03-20, v1.0.32 +- Centered avatar image on smaller devices +- Removed .html endings in cats/tags +- Added Linkedin share +- Added Table of Contents (toc:true) +- Added Paragraph before TOC (beforetoc: "My short description here") + + +## 2019-03-20, v1.0.31 +- Added adsense support (activate via _config.yml) +- Fixed share for large headers + +## 2019-03-20, v1.0.30 +- Added Tags support +- Removed Google + sharing, no longer needed + +## 2019-03-01, v1.0.29 +- Fixed Jumbotron categories link + +## 2019-03-01, v1.0.28 +- Added blurred text on spoilers +- Added half stars for ratings + +## 2019-03-01, v1.0.27 +- Reveal hidden spoilers on click +- Syntax line numbers +- Post rating stars +- Fixed category links with more than 1 word + +## 2019-02-14 +- Fixed Feed site title not showing +- Added 404 page + +## 2019-02-10 +- Fixed CSS Jumbotron categories + +## 2019-02-09 +- Fixed Category links are now compatible with Github pages. Archive still available for non Github pages. +- Added Search +- Added SEO + +## 2018-11-08 +- Fixed reponsive footer jumbotron for tags + +## 2018-11-07 +- Added external image support + +## 2018-09-12 +- Added option to disable comments in a specific post with `comments: false` in YAML front matter diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000000..f910c71d68 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,215 @@ + + + + + + + + +404 | Mother Tongues Blog + + +404 | Mother Tongues Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + +
        +

        Mother Tongues Blog

        +

        + Smashing the lore of language technology! +

        +
        + + +
        +
        +

        404 Page does not exist!

        +

        Please use the search bar at the top or visit our homepage!

        +
        + +
        + + + +
        +
        + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
        +
        + + +
        +
        +
        +
        + + +
        + + +
        +
        +
        +
        +

        Explore

        +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + diff --git a/about.html b/docs/about.html similarity index 100% rename from about.html rename to docs/about.html diff --git a/assets/css/main.css b/docs/assets/css/main.css similarity index 100% rename from assets/css/main.css rename to docs/assets/css/main.css diff --git a/docs/assets/css/screen.css b/docs/assets/css/screen.css new file mode 100755 index 0000000000..a598d67f4a --- /dev/null +++ b/docs/assets/css/screen.css @@ -0,0 +1,902 @@ +/* +Template Name: Mediumish +Copyright: Sal, WowThemes.net, https://www.wowthemes.net +License: https://www.wowthemes.net/freebies-license/ +*/ +@media screen and (min-width:1500px) { + html { font-size:18px; } /* Increase the font size on higher resolutions */ + .container {max-width:80%;} +} +.mainheading { + padding: 1rem 0rem; +} + +a { + color: #00ab6b; + transition: all 0.2s; +} + +a:hover { + color: #038252; + text-decoration: none; +} + +pre { + -moz-box-sizing: border-box; + box-sizing: border-box; + border: #E3EDF3 1px solid; + width: 100%; + padding: 7px; + font-family: monospace, sans-serif; + font-size: .9rem; + white-space: pre; + overflow: auto; + background: #fff; + border-radius: 0px; + line-height: 1.6; + color: #333; + margin-bottom: -rem; +} + +.mediumnavigation { + background: rgba(255, 255, 255, .97); + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, .15); + transition: top 0.2s ease-in-out; +} + +.main-content { + min-height: 300px; +} + +.site-content { + min-height: 60vh; + padding-top: 1.5rem; + margin-top: 57px; + transition: all 0.4s; +} + +section { + margin-bottom: 20px; +} + +section.recent-posts { + margin-bottom: 0; +} + +.section-title h2 { + border-bottom: 1px solid rgba(0, 0, 0, .125); + margin-bottom: 25px; + font-weight: 700; + font-size: 1.4rem; + margin-bottom: 27px; +} + +.section-title span { + border-bottom: 1px solid rgba(0, 0, 0, .44); + display: inline-block; + padding-bottom: 20px; + margin-bottom: -1px; +} + +.article-post ol, +.article-post ul { + margin-bottom: 1.5rem; +} + +.article-post ol ol, +.article-post ul ul { + list-style: disc; + margin-bottom: 0rem; +} + +@media (min-width:576px) { + .card-columns.listfeaturedtag { + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + } +} + +@media (min-width:992px) { + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.8rem; + padding-left: 0.8rem; + } +} + +.listfeaturedtag { + border: 1px solid rgba(0, 0, 0, .125); + border-radius: .25rem; + transition: all 0.3s cubic-bezier(.25, .8, .25, 1); +} + +.listfeaturedtag .wrapthumbnail { + height: 290px; + flex: 0 0 auto; + height: 100%; +} + +.maxthumb { + max-height: 300px; + overflow: hidden; +} + +.listfeaturedtag .card, +.card-footer { + border: 0; +} + +.listfeaturedtag .thumbnail { + background-size: cover; + height: 100%; + display: block; + background-position: 38% 22% !important; + background-origin: border-box !important; + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; +} + +.listfeaturedtag .card-block { + padding-left: 0; +} + +.listfeaturedtag h2.card-title, +.listrecent h2.card-title { + font-size: 1.3rem; + font-weight: 700; + line-height: 1.25; +} + +.listfeaturedtag h4.card-text, +.listrecent h4.card-text { + color: rgba(0, 0, 0, .44); + font-size: 0.95rem; + line-height: 1.6; + font-weight: 400; +} + +.featured-box-img-cover { + object-fit: cover; + width: 100%; + height: 100%; + max-height: 100%; +} + +@media (max-width:991px) { + .featured-box-img-cover { + height: auto; + width: 100%; + } +} + +.wrapfooter { + font-size: .8rem; + display: flex; + align-items: center; + margin-bottom: 15px; +} + +.author-thumb { + width: 40px; + height: 40px; + margin-right: 13px; + border-radius: 100%; +} + +.post-top-meta { + margin-bottom: 2rem; +} + +.post-top-meta .author-thumb { + width: 72px; + height: 72px; +} + +.post-top-meta.authorpage .author-thumb { + margin-top: 40px; +} + +.post-top-meta span { + font-size: 0.9rem; + color: rgba(0, 0, 0, .44); + display: inline-block; +} + +.post-top-meta .author-description { + margin-bottom: 5px; + margin-top: 5px; + font-size: 0.95rem; +} + +.toc ul { + list-style: decimal; + font-weight: 400; +} + +.author-meta { + flex: 1 1 auto; + white-space: nowrap !important; + text-overflow: ellipsis !important; + overflow: hidden !important; +} + +span.post-name, +span.post-date, +span.author-meta { + display: inline-block; +} + +span.post-date, +span.post-read { + color: rgba(0, 0, 0, .44); +} + +span.post-read-more { + align-items: center; + display: inline-block; + float: right; + margin-top: 8px; +} + +span.post-read-more a { + color: rgba(0, 0, 0, .44); +} + +span.post-name a, +span.post-read-more a:hover { + color: rgba(0, 0, 0, .8); +} + +.dot:after { + content: "·"; + margin-left: 3px; + margin-right: 3px; +} + +.mediumnavigation .form-control { + font-size: 0.8rem; + border-radius: 30px; + overflow: hidden; + border: 1px solid rgba(0, 0, 0, 0.09); + min-width: 180px; +} + +.mediumnavigation .form-inline { + margin-left: 15px; +} + +.mediumnavigation .form-inline .btn { + margin-left: -50px; + border: 0; + border-radius: 30px; + cursor: pointer; +} + +.mediumnavigation .form-inline .btn:hover, +.mediumnavigation .form-inline .btn:active { + background: transparent; + color: green; +} + +.mediumnavigation .navbar-brand { + font-weight: 500; + font-family: Amatic SC; +} + +.mediumnavigation .dropdown-menu { + border: 1px solid rgba(0, 0, 0, 0.08); + margin: .5rem 0 0; +} + +.mediumnavigation .nav-item, +.dropdown-menu { + font-size: 0.9rem; +} + +.mediumnavigation .search-icon { + margin-left: -40px; + display: inline-block; + margin-top: 3px; + cursor: pointer; +} + +.mediumnavigation .navbar-brand img { + max-height: 30px; + margin-right: 5px; +} + +.mainheading h1.sitetitle { + font-family: inherit; +} + +.mainheading h1.posttitle { + font-weight: 700; + margin-bottom: 1rem; +} + +.footer { + border-top: 1px solid rgba(0, 0, 0, .05) !important; + padding-top: 15px; + padding-bottom: 12px; + font-size: 0.8rem; + color: rgba(0, 0, 0, .44); + margin-top: 50px; + margin-bottom: 62px; + position: relative; + background: #fff; +} + +.link-dark { + color: rgba(0, 0, 0, .8); +} + +.article-post { + font-family: Merriweather; + font-size: 1.1rem; + line-height: 1.84; + color: rgba(0, 0, 0, .8); +} + +blockquote { + border-left: 4px solid #00ab6b; + padding: 0 20px; + font-style: italic; + color: rgba(0, 0, 0, .5); +} + +.article-post p, +.article-post blockquote { + margin: 0 0 1.5rem 0; +} + +.featured-image { + display: block; + margin-bottom: 1.5rem; +} + +.share { + text-align: center; +} + +.share p { + margin-bottom: 10px; + font-size: 0.95rem; +} + +.share ul li { + display: inline-block; + margin-bottom: 9px; +} + +.share ul { + padding-left: 0; + margin-left: 0; +} + +.share ul li i.fa { + border: 1px solid #ddd; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + border-radius: 50%; +} + +.svgIcon { + vertical-align: middle; +} + +.sticky-top-offset { + top: 100px; +} + +@media (min-width:1024px) { + .share ul li { + display: block; + } +} + +@media (max-width:999px) { + .featured-box-img-cover { + height: 359px; + } + + .alertbar { + position: relative !Important; + margin-bottom: 20px; + margin-top: 20px; + box-shadow: none !Important; + padding-right: 14px !Important; + } + + #comments { + margin-right: 15px; + } + + .jumbotron.fortags { + margin-bottom: 0 !Important; + } + + .alertbar form { + margin-top: 20px; + } + + .alertbar span, + .alertbar form { + display: block; + } + + .alertbar input[type="submit"] { + border-radius: 3px !Important; + } + + .alertbar input[type="email"] { + margin-right: 0px !Important; + display: block; + border-right: 1px solid #ddd !Important; + margin-bottom: 10px; + } + + .jumbotron { + margin-bottom: 0; + border-radius: 0; + } + + .listfeaturedtag .card { + height: auto; + } + + .listfeaturedtag .wrapfooter { + position: relative; + margin-top: 30px; + } + + .listfeaturedtag .card-block { + padding: 20px; + } + + .footer { + margin-top: 0px; + margin-bottom: 0px; + } +} + +@media (max-width:1024px) { + .post-top-meta .col-md-10 { + text-align: center; + } +} + +@media (max-width:767px) { + .post-top-meta.authorpage { + text-align: center; + } +} + +.share, +.share a { + color: rgba(0, 0, 0, .44); + fill: rgba(0, 0, 0, .44); +} + +.graybg { + background-color: #fafafa; + padding: 40px 0 46px; + position: relative; +} + +.listrelated .card { + box-shadow: 0 1px 7px rgba(0, 0, 0, .05); + border: 0; +} + +ul.tags { + list-style: none; + padding-left: 0; + margin: 0 0 3rem 0; +} + +ul.tags li { + display: inline-block; + font-size: 0.9rem; +} + +ul.tags li a { + background: rgba(0, 0, 0, .05); + color: rgba(0, 0, 0, .6); + border-radius: 3px; + padding: 5px 10px; +} + +ul.tags li a:hover { + background: rgba(0, 0, 0, .07); + text-decoration: none; +} + +.margtop3rem { + margin-top: 3rem; +} + +.sep { + height: 1px; + width: 20px; + background: #999; + margin: 0px auto; + margin-bottom: 1.2rem; +} + +.btn.follow { + border-color: #02B875; + color: #1C9963; + padding: 3px 10px; + text-align: center; + border-radius: 999em; + font-size: 0.85rem; + display: inline-block; +} + +.btn.subscribe { + background-color: #1C9963; + border-color: #1C9963; + color: rgba(255, 255, 255, 1); + fill: rgba(255, 255, 255, 1); + border-radius: 30px; + font-size: 0.85rem; + margin-left: 10px; + font-weight: 600; + text-transform: uppercase; +} + +.post-top-meta .btn.follow { + margin-left: 5px; + margin-top: -4px; +} + +.alertbar { + box-shadow: 0 -3px 10px 0 rgba(0, 0, 0, .0785); + position: fixed; + bottom: 0; + left: 0; + background-color: #fff; + width: 100%; + padding: 14px 0; + z-index: 1; + display: none; +} + +.alertbar form { + display: inline-block; +} + +.alertbar input[type="email"] { + font-size: 0.85rem; + padding: 3px 5px 3px 10px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border: 1px solid #ddd; + border-right: 0; + margin-right: -10px; + height: 34px; + letter-spacing: 0.5px; + margin-left: 5px; +} + +.alertbar input[type="submit"] { + background-color: #1C9963; + border: 1px solid #1C9963; + color: rgba(255, 255, 255, 1); + fill: rgba(255, 255, 255, 1); + font-size: 0.85rem; + border-radius: 0; + padding: 4px 10px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + font-weight: 600; + height: 34px; + letter-spacing: 0.5px; + cursor: pointer; +} + +.form-control::-webkit-input-placeholder { + color: rgba(0, 0, 0, .5); +} + +.form-control:-moz-placeholder { + color: rgba(0, 0, 0, .5); +} + +.form-control::-moz-placeholder { + color: rgba(0, 0, 0, .5); +} + +.form-control:-ms-input-placeholder { + color: rgba(0, 0, 0, .5); +} + +.form-control::-ms-input-placeholder { + color: rgba(0, 0, 0, .5); +} + +.authorpage h1 { + font-weight: 700; + font-size: 30px; +} + +.post-top-meta.authorpage .author-thumb { + float: none; +} + +.authorpage .author-description { + font-size: 1rem; + color: rgba(0, 0, 0, .6); +} + +.post-top-meta.authorpage .btn.follow { + padding: 7px 20px; + margin-top: 10px; + margin-left: 0; + font-size: 0.9rem; +} + +.graybg.authorpage { + border-top: 1px solid #f0f0f0; +} + +.authorpostbox { + width: 760px; + margin: 0px auto; + margin-bottom: 1.5rem; + max-width: 100%; +} + +.authorpostbox .img-thumb { + width: 100%; +} + +.sociallinks { + margin: 1rem 0; +} + +.sociallinks a { + background: #666; + color: #fff; + width: 22px; + height: 22px; + display: inline-block; + text-align: center; + line-height: 22px; + border-radius: 50%; + font-size: 12px; +} + +#comments { + margin-top: 3rem; + margin-bottom: 1.5rem; +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; +} + +.article-post .h1, +.article-post .h2, +.article-post .h3, +.article-post .h4, +.article-post .h5, +.article-post .h6, +.article-post h1, +.article-post h2, +.article-post h3, +.article-post h4, +.article-post h5, +.article-post h6 { + font-weight: 700; + margin-bottom: 1.5rem; +} + +.article-post img.shadow { + -webkit-box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.30); + -moz-box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.30); + box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.30); +} + +.layout-page .article-post { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; +} + +.layout-page .article-post p { + margin-bottom: 1rem; +} + +img { + max-width: 100%; +} + +.bottompagination span.navigation { + display: block; + font-size: 0.93rem; + padding: 15px 0 0 0; + text-align: center; + margin-bottom: 0rem; + color: #999; + border-top: 1px solid #ddd; +} + +.pointerup { + margin-bottom: -17px; + margin-left: 49%; + font-size: 30px; +} + +.pointerup i.fa { + color: #eaeaea; +} + +.bottompagination span.navigation i { + display: inline-block; +} + +span.navigation { + display: inline-block; + font-size: 0.93rem; + font-weight: 700; + text-align: center; +} + +.pagination { + display: block; +} + +iframe { + max-width: 100%; +} + +.transpdark { + background: rgba(0, 0, 0, 0.75); + color: #fff; +} + +@media (min-width:768px) { + .jumbotron.fortags { + margin-bottom: -50px; + margin-top: 3rem; + padding: 0; + height: 350px; + border-radius: 0; + background-image: url(../images/jumbotron.jpg); + background-size: cover; + } + + .jumbotron.fortags .col-md-4 { + background: rgba(0, 0, 0, 0.75); + color: #fff; + } + + .jumbotron.fortags .row { + margin: 0; + } +} + +.jumbotron.fortags { + margin-top: 3rem; + padding: 0; + border-radius: 0; + background-image: url(../images/jumbotron.jpg); + background-size: cover; +} + +.jumbotron.fortags a { + padding: 5px 10px 7px; + background: #222; + border-radius: 30px; + color: #fff; + font-weight: 500; + text-transform: lowercase; + font-size: 0.8rem; + display: inline-block; +} + +.layout-page .jumbotron.fortags { + display: none; +} + +.mb-30px { + margin-bottom: 30px; +} + +.flex-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} + +@media (min-width: 768px) { + .flex-md-unordered { + -webkit-box-ordinal-group: 1; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + + .flex-first { + -webkit-box-ordinal-group: 0; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } +} + +@media (max-width: 768px) { + .share { + margin-top: 30px; + } +} + +.card .img-fluid { + width: 100%; +} + +.sticky-top-80 { + top: 80px; +} + +.spoiler { + color: transparent; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.4); + transition: all .4s; + cursor: pointer; + position: relative; +} + +.spoiler:after { + position: absolute; + opacity: 0; + content: 'Click to reveal spoiler'; + top: 45%; + left: calc(50% - 100px); + text-shadow: none; + background: #222; + color: #fff; + display: inline-block; + font-size: 13px; + line-height: 1; + padding: 2px 3px; + width: 150px; + font-family: Arial; + text-align: center; + border-radius: 3px; + transition: all .4s; +} + +.spoiler:hover:after { + opacity: 1; +} + +/** Lazy img **/ +.lazyimg { + display: block; + border: 0 none; + opacity: 1; + transition: opacity .25s; + background: #f2f2f2; + outline: 0 none; +} + +.lazyimg[data-src], +.lazyimg[data-srcset] { + opacity: 0; + transition: opacity .25s; +} \ No newline at end of file diff --git a/docs/assets/fonts/casper-icons.eot b/docs/assets/fonts/casper-icons.eot new file mode 100755 index 0000000000000000000000000000000000000000..0bfce34869bd48dbdd86565ed0f63188311ac6b4 GIT binary patch literal 3272 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 jum1 + + +Generated by IcoMoon + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/fonts/casper-icons.ttf b/docs/assets/fonts/casper-icons.ttf new file mode 100755 index 0000000000000000000000000000000000000000..f1b8da86f634bbb7876c537b21f09f9850c2b13b GIT binary patch literal 3108 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 \ No newline at end of file diff --git a/docs/assets/images/favicon.ico b/docs/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f93bb944c4db67391a3948cac93157d33babae4d GIT binary patch literal 5430 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 FzX1Rv?;ijF literal 0 HcmV?d00001 diff --git a/docs/assets/images/jumbotron.jpg b/docs/assets/images/jumbotron.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ccca5d891fa8a3352b85c8ab7ab79fed4569082 GIT binary patch literal 1385015 zcmeFZ{X>%X{y%|oVEYCb=mQ7o0rEUk*v&4#R-c-6bZj>kUuDr?2@5}Q!pU?OE`5V569})$wi|cy5 zUeD*_?$!G6`fnIvdVYRR$UE;G&)c1pl6@p~cXD>tJB3L(@A&Wbdk12L7v>}-f0~+4 zK9ZVt?0A^>%y)OZ$;VQ{ygvxq@3%iEGBy2J%;&kO37^LvNdElOWM+zYIGfBW3@OaY z$x6*nA{S<59?uIY4D=@;?ppj@URW`OtnLIWjvpl^nD?cvrIj z9tL?YbGLsGlMxWOlN{jZAN-CV^Bw=dU4H%{e#{U*fAW7G-r#JxDMv#@QM~`03;Y)5 z{hy2a?6c2yf3|0Lc5d1`{!AwG9lwBg0s?k{ckIe5I-Z|Yxa)Wx<$oU`Dm5=T_gGH; zvFzjIjUy%<$v%-E=I#9sIKw;tImO1)|8s5Z|NR~Q`}4nd;J8${<6iwmQY!&IR`t0es_uG-#xwj*8 zseuU<7~Hlfb#h)4O?E9P_(1P{@O}P$CefFp$o38c#Phi6Rx2fBb^P1O3q0QjCz+B)iP&jn!!(%=K zg>~?bfceh_al^Y=oxJGFQWG)gaBkKwqaKUsv8A8)^(QX)?!R+9-&KkpgT+Y)aXL!Rgvrepf3?~@tb*ng;rC1)+=a$Hi|MEX2&h`6+hAlVYL$SfH;s#p` zPC1oby3Cq>i^fAiajWLX_^4|1z7i=@}gLUT%8hRg;Y3d)7WoHucyMXzPB1;o!ghgLnKZ2MiTi(%)o7bqoMgSoeNus zve)YQF~4mJEo3qVTQ2QAgpH#z)=p3z>6Ln)@B!DC6+U3rqJbE&p<0iB0AzjKJfOeYbkg z+9!MZ?w#M)BK)$}M9@(pKF%e^f5m4H^ zZ5?tCI87MJG^1#Q#GD{1Jc)1(>f7GES~O%ihd{q1K@gwO%5jkTiD1gob?n zyIZ~$WSVEXDZ1%Pb>3UE$gmSiteLS6s`qQIU!9N#c_%X($(YR(b2f&`La>9 zUPHar;OG49kVSSe)N4fP6y5s`)o+aMARZLY2D$xFc@#a7n;S&M!|Vq?+tRnZF^eMO z0`2fNV%uzB>Q*U}H;VTCfVnWOr+Yse71v5_yo9JWG>S2)!VKCQE(HYh9BXt)*qTy) zh1{emNn@8x2~sbz-#om`6ZPJ0MkX5#jg%(O#@9u*5Z5#5Tx@BrqNF%Oz&PB2QhYTj zZl%jVHprw_(@ZnnEtG*@vSS|126E-t}fdzdf3I(H=94>KYd%V1=2BnA!@qSW zu1cHflgPxOd3`@PTIXLxk>F_4?0UQq>3N%p1IxwlWc@7_KF+LqVX32__1B6BSpO!$ z1wr^RLebpD)N&QxKWKle+MXTTVwkj(w#P9y&WPr=Se#I`(~S-n+oq+{>arjz_Pw3c z%WUhIdqDF?XClYgPU3|sj3`6{b68$uzY4g3q&%~Q7KVo$ejh*LcHM7J&(e~6hz4qO zlr^x@2ht}M9{tG8Ffhb5IBxvX+}cYj{n#c%GM;JGdSZCkXQ(m!oQfifFX#(BwrFMB z8?N}@3{RJo!|iq9}b6@thGgo zsC@;6gwm_V7Q^1iF%xrXA|r!SEwt}rnpkfxsP#KS(@;6)ho1Xm`X<}=>QuK+1Z}fG zkz;G$1d$0vUc-C3X|@?Xy8*^6DD~DX1O`eQ z1FIXAAG*f`*`D*{tyn55b8{MUm6WwV=J!7R9h6adiSUFs9LFFrz=|cqZXZOh5S=>> zO@H7tSqksqiA0l)Xo6VPX=pX*N11rqM24WozF^<9 zV&3`bOlvFa97hCueLL($D)hjkkqaK+DJEOn0TCp{FSQ%TwwM{_gofSoU*hm_RhuU59BU1GKKR1l)3{?I=3 z#Hwt<)02Pw1Q%P>Z458v3#O|VPd!xR7Of0fB*ypxQk9{2HGLrK7vvVLr0k88p^;;U z<}VUij+p3y_Qo9~_M6dw>VL)->>H6O1CJ)azRFJ=uT>!yhctgbd9er~ihm#v<^3jK+RaM;%eGyA2<1Dh$5t1tT%qZ&j+f0S_Go}1E>(^gw2!;< zuPdih-a5%D&MhL%Tyc=YD-(T^4u7zcPlZ#|yN6;AqA5LdO&9r-ifVXCZrLm3rCmGx zP)g2XNWeM&Bphz6p(q4xAMpscw;|3{zhA(-C+SEeq%oF;G$;RF@T8!^KF``i&`yCh zyzL)T))bZU3;%tE7fHM zeifBRA45-6H_y%Kw`XX=u0?bkK~FY(%kiM7Xv9}12cq=T%VgVRy`whrG z!`hh$ye&k1+UGZP98zj5w1S2k?E@nncOFz+iO&D{&Ww#GlvG`pSt-Nm0w1qoR@Q1x zJ{9uvNL+{f)|^9J&w72z_~6E3NLEZmWoKOX(vU^dhGq*YSs4N^z5P#lx{~yP3mi^D z53;(n*4Rkj>coF5n288~b^Vn_T(>^-BzS~@?};tM{rcqo%avQ*1EcSL!Z8;9oZ2sy z-{9j+lo!kQf4UT)_~?bIyd+&f=0uL!`KXeN@+LXWmylLl&*$K{t|dN+;w$k!#}yy; zgVu2BQW#iTCYeq2{%HZv{-LvW9U2#jy6Gat7L$sE3vZG7LMP9}mMz<=xC!>Z+4q=h zby@ob>2?^-(%PvYYK+G2`-h-#aH;K;X-WqB-+!U7*P;9si{>9Uxpx~4inKM*8~B3g z1F&nXT<{LWCWiof-fyOQ{CkPWP=7OXPSq*DM1R!o_6P9ti2`j-~!9r*zY z7xR^rBIJ~yMAFgKkPDgq1+L8JzHsY;B+Q7hXzogHzLQ?1PlQbp(x-TzyQOqVzauD7 zMrm%s4n*QIj;7K*&rgkc-qB@N{TeCCay{!oL&D28AdjXKyJ##Mzq4eq=+pA;+8MKZ zssP4nOwo@_G;kJIOQtfSu9K%XPi`)D?rbsKOnUoBWv#hW(L!k=4x5mdB9|8Q^uQBb z_lbp`x#`wc99GiRO|Xr>d8O8HokmRRIMa=LnqhiRTS?mRDwy$lNb5b_PowZe-G8)G zj*-eUi|hGZY{5zoG7Yp|sDDRjR1uzN9ZL}9dZBr|A_g(+l%X-Iabz-CmpLWy*@-dZ z7{pBU@O9_U{)6u%?FcnO7Nalm8@KJl$tPNlF)5 zTLZckH4D$3^xFfy9Ouy!#h{TP$psMl$vPl%gahi+vE=#Q>B)6AWQE7-*qMx48QEoRfEGXGaKx=w=u{rxSQ>bO4u zWU=wGvcffT^)+!L0t?JEeSK*SW~{ zWt4U$L@gg6j+<&GlWihl#3-hpohPf`FFGwACi~)SeUmT%730;)n6YZ+5cO>&^-hvH znl+X2F5&`Qu|in;h8l%iP*~Tlr+)NX-vG8|av3b+3yEzQn=ubeAX%yhsN~~Z(T`1+ z*s*7PA0|fdARBIRo?(gckcZ~Yta@Ui`I8;#2vC~k5gb?6DuCno*ol~4sDb}x1N$0I zKSIZ_Nadx*^*>*yvgr-Z> zE*lk>J>$NXLG~=zj|7xXg{SA{@ES1f)Zr_`JxZ@d5ZgAYP3GNi@RF z{=3LLPW&^*lF`uAfn%Gd!D4na_I(#)zDxp(r<&O|JvnJLKW%N@f4JAPu{;j(a7ys8 zt1PYRTjYvS?^}67N*V?$aq~`JALwg}77P)r-)V?d|LtPsY}q-i?}_oriLi#ao(kKVwP1vZKZp)+T_&~VnHd7wj^NE&sUkywpXx}2 zrtvg@tIq%NMZ3hwKJ0p`zbP;@?9JnRD&}y9Vw$jGOl`k%C3Kn-W03q|nX5mq5 zprU;7VQgPPnoevDQGdbFHjXUX+|}o%<)JK4Pe9vL*JgcLusrw}V1~Mjs4<|Xpo>f9 z86oNm9MI~mghCP+$u>tDTPq1nwY%tV(n*4-en*0T&^-W>)2<)e&LgjLG|=INM(>WPh_|edvnhU znIy_MFMb!NW!WcDQE0K-R_k|X{od1*U~YlJx$_S9FYgS}Qkp#G;|MlTWG0*V10N)s zBw?nfm+CydaKTO`xkbxE=icl6oRay-tXPM-p6a&~#~P<=jkzecU;YX2U%GjY+8oBb z*yawdKD5nIn`i9{4^eBm-PO*-H{U_K z!p2JfsVVArob#hkUZ)GT$UXQJJXtJZWl$ZV0mt){?MzUn&$tS+Y!23SC|1$p9pKU_ zpM-Uh*rQwMe7e59%r^XF;KJDeVazC>u(Hr7aPqGoLRx8fl6$~~pymRTHmAf2+VLP3 z3Gw@F-2k%Eyj?;QCpD8c08*NLu<(!s8^IAS`i_d`+q702;I&QDaZ<%H-cpA=DMcCm z*P*XM0?v5h$gXId?-IZe^1m)Ug2hn);(P$sjtxBqb+6_ytkbRAqneVDbFwA(vs+au z+p{S(gZAUBjEsGk^ohJ^Fiq9XXFV%xL2t|2&zBNT#UIe&CY`I?I6TUH)s402u1<;X zheJhr(;MxZo37P8f1C}TP*-Cn90@J6YeUF&=mQjMu9g1O=XcU^m`Po-_JVqlOlZ<< zQOK1=?g2W&m&nb94n#1eWjo+JrwGiVdw}#QjjngktQxrv$U%A&hFeMmz@iD7z?e&!4pxm>afv1Sxmr+uv#N6C4qv5Z8 z+MUycvOlf84DyZvV#u=TDIhMG`|=NB{|Ly0kd>F z@+*FMJ}7A0c{<#=>XvmWMBOYWqs=H2pvF%o6`hiK@ltq*w4aK~Mo3?gz}a(n|8%Wj zEL4HUb@FV?BF=ofksfili;S3)&VWHmNB5w{Sjt$r!RzS5Jo7q~0BUaR!_2BKG<6zZTLUoTkZ+%xCfV8RYlal!tR$v~jkLl4en5*dJMxzwG>OfwDY>7Lb^ z9DBZS-oKR|q497gJ#F^=XH*hC<^vtg#&P>wrpANi>OVKv>U-J)8P;J&xU1zxteYaY zTogp*Zwl5W=>YeJ$5-r`?k2U!ukdPa_Oh1Oc!nmApY0!()XpgbQ&DI-Hz())e!$>- z$=b$U^AY6a>1Mk0BRdTe8QsGA+KJl5F+8sCsZ@DMbqF8ziIzaN+4 zz$ZR-{sVlk58NwXe?W?iBkQx+;lW3 zY*6|Dtr5NIjObf30cu;>$#N|BXH{pJa7*_zuRhnK7o_XZ z9UxCmdZ5}j8i(-H_|D`paEk+xb{%snRTU?}afbtg^hDgc-Op>JAt#psdTbQ2FPLDh z(SfO^Z`72H3}S$OOCY`*{G29=A4fYl<7_D6sJanM=)ac&>glODGERh&xT=}jT`?cE$fqq&S2)j`Z3uu6&o~f{2^=!zz?TtZtl%2*=*&;-``tT zf2Z^o2@eLJN#1qkD>Z;N^8)+VR;le>x|>L$os(I4BK@?ELAq=-T(LiBZ$cdRe_oQ2 zvH#IgvvhJwfOPXBB&G{49Jk7V;f?4boZjY@OAdQIYZz^Bht3zwshRXup2MXtz z=dvRzk3v8KY!DUcv8RXB0tU7@6G~n~ z-Iia97(?j*0K;a*a(cj&t%Ki{Es>^zsBXToKqKyQM>YXUzziQwA4oWPG1{X%Pwy+& zqnT#yid7`4p^rtFSVcfsvadUdfMB{R&VkeW&}0`?Sf%0IKY&hRyyB!}$q-R&kFlL3BDa8E-6AhJ6!6 zL4V&dnNoWF1U1@muKw0)8aFOS6(vtv$khs=TR=2Q$$Ii0)q87!8D}DZkK5mGeKjTxJ}8Fg$C!pU`avg?LF` zeRE-tgWs`7@QD8Y!BU`ukaMFkP)e~DUOvthGIwmPb`F32M2^E8Hs-DUnK2Zlyy8}~ z7HKI-<|S-?Ciii9&i-Lg-WY*G!^5tLfh7}zQZqR{HbRQ7900lq&3Vq8w$xmYk3OPw zF+Q}d1A0y=AuNqGJW@fDyyPf94p$3+|R3O?ay zQs)7&LfpRyu*zv1Z)62X(Ulb4 z(M;pp}dbxYkz6k#2@4D?E;n1bJYv&vyE zE%uP?C}%c^$~lz69RpknTnob+iK77*5q62ZElZ&EAE3J_!~H`fEytc!rb&AceHP8FduMYnM)aJ_ z7U7%etx-&FQI&U|Jvxz!j?I(GURe<@E!1s&2OhIX7Dwp)stQ?JKe!RqE~n>aRH%5) zkGK{5s^>oMt-g3@mTj%)#AnWPuq+#i{A6JFHkVFq;fp5%;m=aq*rNMcramb)?>pc# zhz=l{oJOpme(7e8E8=GW6_Vr%T&UOWN1d`qt6GNwNU zWfi)iWw+YUON{XBQvQ1!25;EE+sK*{i0+@W#h?Lz8Z3u$d+u3d;2dpdFt|}O;vosQ;(e(W_M_G|4@_!`>dM) zDmw(`7IVW88*<@>nZcXlTaY`43r)`e22zgg9MMiV? zvh?<7!0AoF3j-zPGeE%U-Z|}R&jbJ~{#Y;ZF{6jcdXm8fHM~4-aUJ@*qP5}5yMI#p z>szro9YTY4yL^8mCJy!~BR&!13b{7g7&Y6z`uw_W# z7wgCA8`9`6UvP!3x_}Fm%RT&6J{x%?FzWX_Ox+0nw_6;>K z`DU+fEqv`)AmPH~p$scn&hDSoHoGl1PdE{ZTY3_AY~#Q&Xi%I}nE!1yF`8bJ~R#w+5Fsxdq=?S;i6<)ZGW zs^EI~)&c;Q$HCp-3;-QPl~mhG--33#7dNa^pFq@heonDpW~H&0hb+?LsrHX!tS|0q za@(&3PdJr zlikut$8!Tu&@0oJ{fIty_1VG4e8$`YQ1#J=wk)jN4x(~hii^)!O{z}i6`mI=dw4z! zbR)PW6vfu+bRn(^uU%ViByKKZ-m^3w@(2e`pQXZSXs*Forw%;P3WRnEBj)!HFVt)b zE$TPs6q?rZsgZT{*Lcqoi*>h^mx7}lRqFhAH31u$9_LI)06u!hiDF}8uITaU9zsdk zttnT1X5)x5n!NfN= zJwSMIS8Eksn7#!dsM#63=&Ynr;Fpb;Vz?n~!_f%UOLui6wldr3WN21?8eAAoj5Rby zaN>0u#X>86b*JNH6dw6xDvG}Y9*qF04$BED{O60jlC*JmSA$#D`FXKP+Deb|b}QMk znqIksQ+<`(z;ewq24P~NQYZzpV&f3Y(^24Z*NvQ5?QaHT49%OKTRAhNNrB6fW~1+n z1F45g9OZ?POVTrZKjX$<&-MRKl!`v&>dY|D0I}??i~ilXm1WQ{&kWFcc}8B2Ggxw7 z7+&-kSkfF=V)QVnrnQw_^YhVOmNE>a558J|F!d}E^4BR(Ed9J<+3WirDG3N*f3I-= zym5MR!Q2@{4d3ZC3^CR~{lQ+s7!zjtNu}_3dch8vBy7+b6nOwmF}NjA-Q!O89CGP- z3AAbIc4jndv+4o&z`ouRlIYITbhEEyWhZ9R>QM#(80iDQN?&0WS8+v}L=|u5Q2l83L(dTFwcP!fJn+8K@flv`tXxt)h@KN8sVvC>mv^-ch7E-}_Ex z3c(7zp_bj!YrW&Q14>m_Eq45fF0x}|@=Jiv_z8%V(4wBW=Rnek3w)oZg{j7cZrr=) zSYO>|+|v{#=Ql>*Al?4*{S*ziF3tD#oqshsh|!UW%Nv2VU#i-RkhRa8t1$1jf@MY7 zzG&(^v)xr9eO}GZVcH^GhV}FqYd>( zg>V|fT6N@WAaO){P6WUgM`HWNn8anEY-qo9Q%NqBUw-vO;O+ods2y^eZSDc8U9%D& zl^_BFgN8L~>!i1fP}2?NB^jZD4b$4yi zaQztl=G*7oKHS{9`{6{gsrz1C3bItLjIQ5#$@8q|InrM~dzc{zkkTjSbkZvV5xEUL z$YZXGRbY9a=8DAAKpks5+<{x90h(IN06~~(;3&N~eQ1l70xZL=FF4VCKE)aE)0ZBh zBf2T$V;~6yqAcR)tUO~N)hA-#E?szdNJwoZ#Z5e+>T*BKx$ZR@W(>R9x;;(3yQd-C z51{u^KAt!1%&^+rT^oYpc?{L#3T=wm6!54ffP5Ak~suq2`awl zgHFR`IQ*SVTOVUS=APv=*30Q1&Y4!gALfCVHqIWgXht{*ij;=@RHR*diG&SW_Re?H zP!z!ZoAw_1h@i~_R-aQWjQ;3$5#fp8W9r+TaoULmU6p5y1kQ|OP$+;(K=9q>%oN~l zX6;c|CKA`7F#x30IdI2jNUS>oddz*{v%bEGRp7B~I*5FAb?ua)MY17x`;>iqPcx)& z_3x*-yGrej_S6EVm)PcO0(TAMyXLehg@cCXP4FW8oPs7ga9@^2Q6Ye?F4>xeEF6r5 z0a6rDnMNuH0Sp6NI350bIOvD>;qV5|T1PWoCa2y?R#b5&5r)R;2^;YQ^}U*#cV)Wd z`TSHUbl`6DM$IO3JTxQ9u0sNY;S-keq2IUZ7Bce>0IYpa0F3e)880#fVmukdsa3u!`)pa zUJ!oH$g1D3x$n|js$v3h0$o*8u%K9BJsC*XwvDn>q(3a0AJD4-P;5Zh3#t!3qGOB% z01z-}>A@2z1ld9}{aobr*9c(Kor`E!!wAKmd{K^4=)_>Gf}#`IUR)+m7aZERYf`7H z!cOw~ic{tpw(-GJm;B`9S+uR+Vv%eLPRz-TmIC|x?)iD$ZBW&{Ji2s=KoNjsT{DyA zw+&a|o-!XL>S-&zZ8(A@1}3%F$dvh8paXkXcG(7iR&dwBlq zJn7)6zw@tkbfT@@^CyDH5t9mc6XFHlvYY#P)0eT);|)MXj-H;dn%E_I`c|j(Vrn$X zn(*OCR5rA{1_EW?*i*057M#Ktfxg0XbPbEdv&%Qo&*9NE5XsU&VZz1N%iGrgs`?$3 zF6(>D{xJ=l{5(1{H|~iTKpEfoFaBgpUnY*a*KiNhPUf(qf!Ix#b;5cU8Uj;ec#gF; zCTiUHr4aoOBHs*LTi`=-+^zBzHpr#%^L~a!<9uGlQF!sE54CigE`vAxy>UC)mv0>( z2AZh*gPX+1;v31?6-5XDKMS}YQL6NZm*(`XQDwt;mUJ=1Rsa0#M<0-DR5w79Pkr!Y!v^m%mJE}B33=%)OopGrWqeTsc6i&D`WQb&jMY3=g1PI0=Y2G zN2Z$E`M?vD8@%aSWgPpJs|LprYGG@i0C>$cq}3>jUr)gsu@Z8P60nX|`ochW9Td=z z_Y{DDoqxFeP@>%d0jC>s*w$m!{aVFOpa&7vIuxw)(=$Cx6m}fucN$I%B z_Un0y3g_FU-voJiZ`~@f;Z{N75ia<#xgkL{Ce%FVjVYui(qA^B#-|#-g2y1%0x=0O zJ3>>^P)Fk^8?t~Jz0ft&Uye9O49;&Zrnn zfR-|S6r|(!%zJf+T>0L)hA{KsDT60)imZ}SW23JO_&IJ7u${jfdedn;TxC|PQBP0uNPDsJXcCA4(xc`~7@+4QqMw$Og*k|5 zwg15w4MKwgD6)(6K=HaBkT3+gAeY%^f`BLtchu%G*FY*SJD*BeGb=nX@7JIO&L|Ri zJ|(E`$Yw1A8(ZN9412ae@b+-~9496>uTJKk2%-guuVJM|p7RY*p}E5#TK#Meu=aBz zPJp~o#UgFQkmMg<)~@E&^WXKWOe3}dl_a4ScGRpY<;SEf4`C({fqSK=4?4|&;BE`lIM!#|@D@Oj1VQ_`Asm3!&muc06m{t> zaQ$1|T&wq}WUYVQg3#DO$)ww-w|l-K4>QQgAf)W_tqDq73v_d|gSdRAZMu1TW=ALN z^}|)bG`Tu+$h3 zHmGQHm&2x~SD#Q?uvs=A8<4B8mMjTE7hYbEi7bn8cuQGQG-!~|I&|y0WLBYuf)?aJ zCiV#Mqj#XYXZKwBau1ywV*|0G;F^91b)L5D#*iId&hcN7d@vQ58Yu9OML_@#O5|M& z>aVLD1&QQQHgj?Lo+e@+c|v@Wgb=y~HWyg@bwC?%0r7!HMnBGA+-<$zsdJHI6CkMN z81vpvx=BH*ZKVf27&-dWavTsP_PcaG2~JERmns#_Thvuu1RYTC-Ce(g?V~>|B&7ee z4INDK$tiJZ-A*YmU+r4}C(ZyYUF;(Up`QzypXDBChJz9KQH@jb=9iRlFwEx;j}gVw zW+2w><3jfw;@okPFqnpFH_}H&l{= zqTfS1aAq0HArd`s7n!)F2^om-UjX4JC+8`9gTC%0O<|=O4J{|@ul5Z7zOmUSX6G(R z+znD^%OzNEuY$;PcE6ypJ8Dh>#NCN7gd|KG4XxU;> zyx_W2?1lDh`1Xd?L$B|2xrfvWgu!{nk~|$yog?Z_etq1j$O=N}QRv7q{Al6W#FLEu z=-{%X!Ek{7@w+4e38vfn{44Mu4Nj1GIK%af#tx;*21ypUe5U||BR-sRm6IJ`Bh2j< z%h}-Gua887I_a_+l?;KP z5+hqPaRa9&oVI}P={3ygMp=nL)O}~tXtevNdiW%^6~^#IN++h^3JS!_afnmsa!z37 zVfvHDC(_0vMWKdX$VY4g!I&EP@o|Mu%?x1MTt+qvrdXK|1a*E_MJ~U8&ZuZ|!d_yz zNVp|)je^tvV6X_Q$~|BuRClC@U+!X9gvjH=6b}^%sDVOx*w+vd1!SL?!yP^qFrt4I zMtHLR4%@Hv&1i@Qct17$xFHP(hKVNIy61qn2DAS;+2I8M>aAFXtCM|%={D<$t8|k? z*he|JWvntl6Of_Ns%L;$hVGn5QN}j;RUR)%$Zj3LWurpzt);Rhi?*SsLNy0uieR9cvhBw zQ*BQ1fZ@8gFVcANhdjvIl;VsGK?<2pRxF!{qan4(tXl*~6rTAs6`?#9Fg#zlY+^jf zh=*5K*McesXg8vE2Kag8W~8ehv|0|bEo9H3f)yJG1C`==A&t8>dp^{$(yAOkc0F&m zC5@1Ve0pi0lu#?1scH4Sj2;8NYrCw=Yz7@J%F7P;2&?JuHQ(g#%EIA&k=jXZif#No z0mO+OsWErmx&7qX|)y1$Zn2o{dsfIUqD&geDf(s$L9f9#mCR z9q@~TU~ALO?qSvr1*lnmT$k(XkRBmQ<=08s(YnkGHwVY_EaeI6TNlHwnm0`I%1#F8 z+>yX}>mFuK*ar2!m;c(W$Wik^z{_`FaOBa+JlVts&dF4M1kDD-DgDB4|3$=%a@^8K zVx>>TJABv=f}cEnF8a~+6=N=g4cJVih`e)`g487gNbWuINS{^l=FebOI5^6+StbV1 zObh~lLG)!*`1X|{&DO22ZGfz}C924m$tp3hvObiMSH{35v9pfah3?hWvYQubw#9!} z#L9(%a$<0A@60pRv|jNA(JyN_ikm>5&a2(nMz0ti4_(%kA*fngh)F>aw4SGw;ob@XM+v4() zoHNtb`sRbE_MZ28Q8fJW>M?%8dyOXiLcQDnoIm7RcrcEQA%XJb*w{v&Oco`)jg~{s zG#1!GBS6u)Tl%c5yjNhFaEE!_lO$iZzn%(VCV|r}m6ZR=i>F`}?$*$_e>MI|c5zc^ zNo@tpI9?V=oF2nKmJh5bdjX_m*d~`l)aM_7oJV&L zAFL>h;6wX=hNcjbDLmmm^xUfjpbWkM-a3i72viRP;)2sXL^#U^wA%ArY+Qp=4lf83 zy~(Xs`{uwD{7Whn-3{7OK#rU&v(mi%K>Qy~G!Epox#+slI`8I%?wa?Yv+lShv( zNKt~_JauS!D2B~)2Fsrlc|Dn7>IOd4d(YaNXBt5C{tAjLJ8re2*zEkHE(m&Y$}-Y9 z&t{ZgK6kiXhd_YTt*_u86h^qayE+Fd6upN@^j|W$tLu6&JQSuM5C`l* zw=2$&O%8&cy@U7qR-J&zbS_igI2(35{9j-fL3d=k!pdqW-w)EY1>c`Sb>FjG5cp+Q z#NBBK#At#9Zr?mLvQ|Ru2C{E5tzb1$(uXR`WYsIVL*6k5o7g={VYXK;&lAXS+ z-3|La&PRBH{0}?0%zMcoSo-KF|vg)A!rKilsGI5|P;W!=(HLE~{vTq}+ zfB-XP0$AiD^eV%AW1f|#2MP1yD1u73bO?xPyl3h?)vkp@7Cq;~&{IWxu(v9P6FJH* z(Ph5|5yl;eKdlVLx}jDx-uCr!>UHv;St68V2oU+OuRp*r*-ZBfwb=H(ij=~o1rP~8 z_sFBuEteUy_<>?7LyqBiVE9()^Fjc{&d|T_sNj}@y(j|dR|x)_`X38{MH9ftqL5YL zf8h$jc2};FLvRgDeXG6^xPJisa1Yui$YffA0wgiy`d!YU1-fxSV>dTF6Z$$pvTn9X z#7*ZpN^-ax*#o=!b|>`2GPpZYAD=;l@*&%p3bgGgU?*&bB9;j25KxBXfqVKV%0M)b zSM2>|4*!jIuDO-S|KxEl!*o0FTD8D8O&7;l0V3uAbZ^<=U=i39WodD#5b$!Hiar2E zz@rT_NkjpTd8!5kq56<(W_Q=K@1&9wNguodZ5v*RMD#EwUQf|0le&FCz(J=!o>i5B}9mjXLtB zIkaf5ey0Z6h9T(i^I^;Ps8P9^23{QDX~cG((5;Y(RDu0PEs91Z#O77VaZ#f8jZS$J zCFvC|$Eb-Mlod?WB>J1!@vb|hv50-=d`(xj02+d$3reta;B0n@Q5ElOx978Aq;^%>F*y(;8`?1>zDpb|wOB-GRY7YEIx$WU= z;DZeKMYm5RF9CDT4b}maX0WNz=_i@d8KfWFwlH1bk_0g5^kB4{i{d_d`*}xhv_bFy##_{ zlSMW}g6JZ}{`DMCs`u9vQxGN<3T$Ef=ccm4$?|LvbolsQfos9*^nufln)15W*g)Ai zb9gKk_3(8DUzBv@BHw3~R1Ta#GC}X?4849+$@w z!mI+l76ChQaWxsFALMpdl{w;>ndVj|HbBdD8RG1=GP z<76L5JY~_u?&a~w@Mq%LF2B{(#WTkM-~!SkPEKWT z`6Ef6GR->0Y6i+1b-?rc8#eMX@rURGdZhPaWlcXon-^;6p?{hX>%@afLzwW?iqO|e zNE^3-i?(Y+Xu*FQfP@hyu%#P{YJl>?aKhS)APVBb;JrmwG6>^}gl-_(#0EYe9BZ$1 za@J+nbAKlcM~S zR7L=H@!E!`4aiz*TKc3eI}g0q8*E7PDf>~8KE-L?`anfwrDq5PZp~uG;+j9$LnLrj z0zFc~dNb;Ju0l?(MzM=R)Ya$dp&Wt>a2z+b@$HWp+*;5*i7=UPmh;gbZD`xzo{AVi z9YP`|E7P=2akZ_!F2#Q)t4l#i=*2vd2bqX(P@skW#jgGiGEcb&Y{d2L)_C2rvP;3{ zI!bkWfLJ@Z4$XjEt|bYT{W~-6TcC;$3=aRsU=HS~+|^%*HOEKHx@>p#nE|f|^W}AD z6v(f)4NbpP$bA&VSQgmuAgXGAoklDN@FfZ21;o7E*q%F7nP`^DCRIQ{!^!~&g#d97 zc_n63a4$0ihXT&Jvut(Azz#S3<2OPuWQ0hF4J<0?mRfPNagp#eJ+%CRwxSfM)*r_F zdHt7Xf0I`kBqeWdu4=wEfBrc#r@onpw$bW$4nT6;2X`*NX?*fkVAXFM z$_puNJt(qsjrq3XG6GvSW_w|)xl|{_@8kMEU8sGE5^8Mpchj`eLBo|8^gntkY4TVn7LAs1P*p44axLh;k93-)rah zUl(-a^LbyM=XHBD*vHvx%p$9)!cDDJ)m2&shmgz8e;EB)M8D{cRftjj-LkRtTdUu* zG`XuasJMP=awDV|%n9!LkX^EzyIhJZxmtLzxkZt7?2<^Ic5klIUfpw9)!unQqGWvt zk*T=)rouM6E~^mKNn=%52Eo;Oy3ym{(1W8A$*1S1he8x*eaIZMz6>k*7XznmbSm#0 zkjU(aLNU8CA_=F(5w8$1a zkOZiik2Hs$s!kp95@go`LsV?IJ$xV1%|mW)xs^F3)B}uaew|LP&ULqknBMZU6nl08 zpvfSvFL9W+bOSYvXtH>C>7pBM8`=Qrxu0z@U3PY86O@W4T=xB*Iq&WcZp_k~`{R{O zRn}K4!-ExK+h6rMa_;VigKiAbyOY*R05z@RZdqgT^ngKne1{2hl#@<*S`R0Pw4~iN z(Sjx0wED7)u+C23&tVoGam6rH|wpAaJSb_{ic6Zx#a zva7SCZ0)|A6s0OZ`R7Ki#756&kpMu*Q;*N6tb6=yPZP|-`g{b|_DeT*gt)OfL*3Jv zhSJ6_qSeu5%$z58rvR0ZKQt?}6J)kFZ=eYmmlcx-Y)^Zna-Oxg9$p{p7q#}6ecjcn zFck99dxQNcsytyNe%rut5`+-5%g{1#$VnyU9X;gPMy|{4>Ocl_z`?eJn{4H+%IAX1 ze4^~&XocO$k~QWzq(@TyQ1f7gd0w9vZD7TyGKKt=F9|U|wMS>F+cy&jze5AEGpxbm z8I93{pAa7%v!68h`PHZkzMGoVmV$eyiD8;jWWK~}uWnDB;W6e%Le|;Il>k@?Zhx~k z%E;_Pcf3}{E>>j-3SPJcr;QS_U)lg#|2Tx!N2%2+fI}X98<(5MJmnw;`NcL_{$~>4n z2UW3YoJhCq9KPcXpDN;PmB5*{y#clWoK6S-OP_Y{@5fPe+~lp;tyjmR-UKP+{uFQL z$a5$eNZrOIyls4{L3j0PpP~g2{e31Szd-^iGNn3gDlPb6U>D^Xkb`Kbmlil^&Mc8~klV)xd(zir@_iWsYopF|y}4KR+~fhtM*6W1cStvzhj!;I2~aW| zB^;L%o#+BEl5QS^dyYw3MIlNGt5ykZNSKR?IPm@jmqkYLC!mb(xzOyZ4Ts;gp z^a{eapO&goG3#?+O?}{>aGL{mSFyi*M!-zi(I#gJWpeAF{3i9y#}h+S!J5us{n*f^@^SQM1Xd z{6!=8eEQcUZqDH+L(MIPR#5y?j4EK5Y)pD9?StRqQ*){Ux)5SS=!jb>N2<||seAi= z&v}&%2N2=bg=?jK0q=*$toJ2qERv$5hBwI_iF~8bN7|V|e>@ELO6w@mYJx)6o(eu# zR>m%Yt|@H)=e^gC<1j#21#vh4uPW?Ms32;UAe>rm?oM@G8p^i-k|l|!e6}0j8AEi` z>%Mob?&Ly~Lz58y=twVx2IH(F`?i)TP=O{Pr$YC0ioAKg_gX{IE%)dc8#$n0xQc3Q zOXH!78BzZ$@rle`18R12R#1DAG99H=HN~=TUFzbqdbQ@sV)t}qvXcP& z*~ndZ%Y`Rwk0^StU9s9U4XbQ(shr4iLK=w;FQ|*cG%P=ml*u-XYXgALkR0K2AHJ`H zZT&Q&sD=tr)q%-!bKEDe9v8>hIf5Q(Yku63-if6a)S<0;+StZUzH@FgBm`Mf>idmm z6J4C~kX_fW{`K3mz_p;`>#nbduTiCpa1Ro>H(Y;5w_ zd8M(Q$lQz+E??^^Krn6JdWaa4cEwMdJdVl>n(W6Y-GYaEMfZ=Uxc3z<8l>M)Xb;Le z#Y#rRRt}gE0`5wCgYY551|-!RKNme5UVbnrKNL!1&mn$AER{=3_^aIy20v_X62{=< ze-{}LLzyzlz?||{Otjo8+2rE{Jr87KyvcQ&NL(qQ%lB?jr_!t(F2}#*M+z>tVG$%%+ma%*>%fv^tB1(JU%s5ueZ2?#e3e;gIwb zBD-%T+>h><2**y;)KYT{FekmlYi&rQr&_!tCSR5mRTu_0=Z+(rjPJJDcT>Rzz2eJi>!PQZ6+k!?&5Z;8$@X4?Eyxfe{Gr zHErH&_H!n_PnZq&Zb!Gj%qYn?QC)VDB3C$z(Q(?ltIt09S9s88yUCL^HQEInF?2VE zJA*fsEIA=IC2N>gyuSS8GSYjph6E2*>xeoi{BB$XfkI%VildI+riM^B%3AbyPL-v4 zO@fSfUG%tYX9Az0TNtqty>?W@3TU|QW=n5lFGZ3{4iTmCc3pk9fWJ6_zfapVt35@F zii?PtAm;&+^bH*iCr??Y(t;8lBTE&An^ua`VW#_tbJKmN%l1vI@PyfIo_jxx(I7dg zg8PFLu~wTo3B3VaCo{r{Hl&=iSlv0CJA2Cbrnkq3-qd8a?r?!r!GNy!KnU%2e3+hK zUE69dqnC-Csxr2|Fe%>mdx*EjSm35|dmw&ioid63tbwCgPfpqsj6Evn{lk@I99T zoM2CY+?|`?3MlF+q#rw)Qpc!6-i@FpN^1JadG zk{7Ek$`Tx~Z7eC@&u18Laouch*~TXS{{3zI}!avuw6z3Mq1d&}#cnOXJGOkhn^b}_*LG)P_ z@!8u$N3-JSIV092kC{lYgLL5ZY*gFEKoQbq_drv1EE`-Ak z)71rhps^K$yp*+-|1NLG_kFMZ(!U*X82i<3UaOY=Cd?BSZrQ?>&d=#+!&+>e>S9Y` zPxsu)C7Q&d#lI+pg|!o$pd#EJW-KQ~O9z>w3w+&ukis8@$4afXp4X#XrPJ2?=gw*J z;p#bhn8){Nm(CQ%aw)bE8M_mDRUAZ)WdRa26YtH-DF>>TqGlz4+Bc@3l4n#5NR2Gf#P&UfohZ8$9< zloX{WG;yI9(+9vJ?fqEBo}M$5wt2+wyXh5h3-N8uNIzi^?^2rz^NkrW$VL0& zTK!)H0YVkjsoyQ)d`2Jwi7~ajG*X8=A$-<}>UDF|dazb!*5P)Yg~6zVK0T*Jd&1k( zWei{d)<>`bvasnIA*JY_EZ}W>dQG%~f~w|*b>w_h{OY|{Ju_kO!_srUv9~ABKtSP- z?oi1T9&+=ft1^uRK$O|{DoQ8PqsUHGU@)qZGa@OvmCd%*w4jR_KGt~kQ=i%lcQbK+ z-`x|tRs;Ec-^yWM7m;;GH73oh{+&HdG1Jauz;|P+BqAFR5{4Ir&m49GI!@ZWI zl>EGrk#mFBF6*5t!vjaDzFLkBFn&vNEqC0yD*HYsTDoyc)|qE-_=`{oq>52`F>8|& z45DCjYWbZah)QnxH$qICN{cil29gA@Y;WKb11Di)|BFy5y6@DnUyxvrQ=ZFKr~Rf1 zTq)XV8GbCdVGOAXKE=1Gfl+!jk_LjJKVNTdl{s8rI0nT(@w`HBBp3)}Np~rdqTIqY zc4@x{fY1Tm(&k0)=+XeXD(Sd1JlqXN!M2^l(UDMYy?KuqIH!MXl-oR(cV<51trTwF z;-V_;s+~j+3Kg#WEyyz*PSo5q0lAw11a+62YWKSNX9d9-1cwtXmNm<{hTikwBld3_ z*SaPk$dTm2XyhA~lTkJ9wo4-sEW<6wlT8G$V(HJ3 z%S*q($!L2rTpXpytQO?0;DdZ@N)zE9VF-!}EW=(ayC7(OWf?A|iKJd{x$5Ce^8197 z^NiQMFsymFcY~c%;SX5{qb#ZS2&cY@6c(Dv8^q)eSwu*{PVrQG6+P0aRH3cjOpA~; zxe~S}O-w)8ymzPIdfRtO@>+v1Ae9!4td1I4!~{ckrMdakd(|8NbG2c%k{)wpkU3W6 zwe=gMmmC+NwF@|ji>bOtB;_;s%n4)xk;w(0N8~H_+Mr^Zc&~v*A}EyXN0N7TGsiv*PLhJi%hg*3YYD1Q?+`<0bBL)*r+KY z0JpYBrAZnr8Qd~?E*p!L<5<7k?QwHm-Fg(1A`Z8OH8GlpL@pOX%A_WD4qEZnpaXrP zS)5`v-~K(lp6BPMuKLMWvxp^2bg@n`lw_cLtsFG@J&(jkJjRvg#s}@b5#Hzvx9p9F z1qdpyP&c!i@bynrhKpg5G4Uxt-3;o^QdZiH*sT~YDUr#CuJldOeOibawXg7y8>#Fh z0d_s{u2_e@0)Xi;hl<;+t1{70DH=D{4EekUYfY@Q(ArN`Vp%_xXmCW)enxSIA&%)` z`ha2Po}-czNYI^^#i!pa+~UTwQNJ%+PBR*#Y3_-sXU7##3=+i7Og{}q>9h^xK&R`(g(g-UtwE9n>_n!0vAABws@^(YHu(I{M2pV5bWKteBa))UC`DRr48_xFkjP0<-AKk>-Y~ig7cq#-Rdt2h}-|gT1cW z3a;)_dEr|crBUi(h_XqbI~v&KKp!U{A?U>g@Xla9-VX`sZ%ARB&`fxJD5EY#JJ;-@Mt zcR_-NEaGnX_Qt=(EewF0l>3Y3`vl2@CDO<4)tlXf=Dk(9tbayFcOn00(zy5!sE=hULYE4EI_Y-@AGcss*ZK( zk!LEQOMLIJSPdg}-Z%D5KuY;ibu!xda|8I&&%_os@!aa6H-u8KHlrfhtBwFns zd7m^6PC?d@37P1y?NO!;JdgI&!9Fb?ij-M!DlAJroaq zQS(^{9%|%1+|zE$o6PHL?u8uT^Z8lukvqA*`E&416jSdpx0d%cH{Wb`pVk9%mOBbG zX%smiPMEZf9!M^%_PCaY(is!6}Dk4S73pC|KaYGWhbDovZiRM zCAs1DQ)PbA3;1Zn&YHpxp!XmqrT5rV@HV_5do4iE&_r=#~i(>N{F%y-jd@6#&8MjtWYZz1%aUwN4iGerf3o&Z!G`ft>nDnr?9A= zhVeK{ghNe2?P=!;Bhfaf8C3sRy**P0FhEAPbCMO{G#5Xo zBLW#h;&m(0=OSsQ_L1>6la?I~$&{JpBj!WiJ@g=lRfUT*+|)7IDb+sUq%ra|_T6rn zHYKt@=&2Odsfm}74yw{>a$J_zCNx)e8Py?F%IXO?2A!`el7uh))K*iaX?%_r$#61i z&e^BHS*%Q6W7EU+SfEm=8;8MpF1_Jq>&GEf=O;aFI8$~~G&_7}u2mj5=n)at-}{|y zfH4E@A9*g_PDEM$scoB8?e5HaD$AkF_V;7HaR!n*p0?|`+d6>;g}2PPMjY_`+19I1 z4u(rFQAq*+Brjdx#!#GU2Ssx=Uajx~aJl{#{e$S5HE--1ee}3F709~25+X(pIfpcE+#=3;!YKUFL zCd`R>&@>w?HLnt$HhM(-WbPFaa&WJmDT(-hkw6cPv0hKI2%LRB6y5SikN=!BEv60( zJqgsa3dr9xZ-Forw)FM;GUQuo9uX3H zfXkdQC*16SaJ=|`gzG;g*FM$19KPCv7;_T$?$tPLdcyQk1kfcZkJeP ze%b#h{1fWb7Pc!Ze+t^h*4-)Wnt!`44%fDMhHY~c)v~8v)*+eb6{b7x~TD>IDj~*bY6MUpC=ex{j@|SB`C7-)f%@LEu1f!qzanMD* z6KgNp*_*!{P07d*@)iMwgT4EU@Js4kt2yDgh+w!$)03h$hlSjJ=B?!c?N>LeWWE$m z@e={qAlvq`Tgrf6E#!d-VSvO5xPm*v>SrhQkIfKUIaG zCdb;Tus*wq`%rK}_EwGd!-%af)~J3?E4^5-azy|cvsPt$ou_MNkq;aQN;EYeR_HY= zFNmUZ9?{Vh?WlD?YWQGI<8;mBEUf-lnj54!#R~u%8l11E2)AB|P&B%_Y*gjynS|@= z+k3|UFGR$@_YW1ltoSRR$N)U+=EnZ*$aXSD^T(m`Q%_nbA1;HyK@JCrCa{CBO6REsglyxj6KiXgk$w)W>g?mh8SfdRjUMSnS(mza*@`G;2 zh1_Y*CBtLC>lbcxNw$I1J@RG<=TI?+;?8q2dUlK9$O>n$jFIr6Z(ZoF?aN)fUPq!& z^GGagt>83JuzKDMx~>NDOP5jWKJPwx>mQ{s`FQu^;uuR5+bWifE{kS67t(@ojNGtw zot+|S;_e5iCO1QqxTu4PLt;-|Q}l2s;!JZ(xk@;k@<`$)%N9o=^uVZC*qtKCgehI! z>2s{zqS{J)(7;deXkN4 zJB^f_6!3T}u$(-^&eT@t11#7Jya{OuBPT_O7~(k;mXYj|R%Xnb6r4D<8>NYs2)G|s#bg_p&KaV0{5 zp%n(qF;X#jt^W6ywu(LztKS7vtQ6#v)K~Pl*Bxd#*s9E(uOgKmY-6HgZ5#LJ4deX* z0cZtuH>@V$#3Z;8!j?-SA+LB5G8Q77__NXDSVl)$B;*9q7Z2^3)BSlWI3s6I7pG5j zL%q2^EJtHe1(#-9b6qh<`I}Td=`xlJxox1p9nwwB)c(X7BZzjU z1}@Wi0^R_sh6Lm$xl?32LfMdV^Tn+goC-o4~oge~q`k3Ox$7?xZN- zYv^}_+N+|4o7z0%_w_V-a#D5+@}OF!oBc&NkNEjgHP&kSZ-y{n)R*_KsCIESq$s1UlabQ=3-ZzJMEEEms6TB4}`EXI3^OzS}qtj}M z6ZPfs0N|H)dId&0s7eT2L>bEC_?@0F}Zth3imEXy^}_%wNj1$I+l~;vqaSJ4x*BJQMP07yR zSyc0kw4lA{wA$q3OdY4+c#9(v z1SZe-9dz5tHzsj;bl*_-`{(tu6GkB%lKWHYz3_!Vzu_3yPr$$7$-Z4vYQVbKh<32F zrljBsjKqLRlFz;7e?=4bzILSw#MrtxIvdJoiL|Wou`U;ph^% z+*Zui;yL$rD~;N5&V0oTLHPalHfr6e?^b3Z03r~|)0No^_$ElbbJy7mw`^f|bcPF7 zCqR2vwkrd^!A5J_Ha)2v48#kfPwQ&5C7~$A4>pc^4^xLka!_Wi~0K`495ri`u+DTL-I;_vBv+s zsns}We5*O9uQeE+pk^Ohdu?COv~n~Xjg8r#{`rXtJ!I;f(?h?Tc`u`E--&(m%)1yN z8QgD9(Lei(u+mtHMQ1{bb$mWI#Iwi8w~1{ORc0vLrK&j7GE>oHB7XgC4OzY1)DJE@ zC9RIRwyyRcj?0~chxyH~q;mHXLB1s{r7|{9{5C8$0y*_c_VDVfM-t0%l84Wzo9C>O z1@&4%u=+!!g1f@T?YX}y%tRQYgfHE5o$S-7DndZYDSDKpJheV=_{v>cIHB$&ub;yi zhN$lQ5ZqWpZ!yi9n;MY$UNaPe<~s4UlZ08LC_T)bYwmUK)zUotOt*RdF4UPY*2@aO zmGAS9?ztE@iP*-N&7?=A@jQ3!Je)Bi$7*?#)8g#I>vaz9hmQC6kgX?{4|v?`>u))) zk>#SD+0r2QkK{X9!!ZtB8M5&67g53ndnxGUotv~2d%#?q4~o`4975Je8$aUL8kyWx z-_5!|qHZz9V-1gEZEw+T_7@<3?1h_mN@4@mbxCi~&5!&-r33pw-fvW9@3pJgG-l#! z8svLGCYC_7x}(VjVA!yytQgU!&0kt@Qglk>i9cY6#m4j*FE6%-(11*mr+z-C{`EZQ zB1>=>-G5)}9`OAhVYOfEu8+tFO&DIexR&mglGTv)s^D}OaRW2IoT^qT+T366|64SFaK?C!CM;mDop`|#Q-e*7AjhtEi z9k{OC5V_8tg=`@wuPJpNk`oV;bs3aDCl9<%33iM?%_O5nR|%F6*f!J4lP5vP5=!?A zR{=>0EUO8TrNvJU?y72yE(vWVw(elZZ5X4zunL7{NK8c8Ch7*vly8)|HBmr)en^hD znkb5&L`N?@%+^h83*U1wyN^;C9+c=p(lCXa-E76(wNLdExDgLr`&Ly!IdQFddA8Nu z)wI}&u=PJ^Z}|-#!d1b8mOtcdz2W(Fw@qDx*I;<`Q=O^DyYdnwp@ZQh5-D13YPhuO zm@i4AM~5H8J~sx##ax>wy(3*?ML`ktJ}+>*$LVmMpKXPpS{+veO0A3v(o*mAV9?6$4UoZ2SwVN^*$1%KW_RaGsfS8cjDiNKu3X3Q#) z7wf(mYCg;6n9Uh9hoMS3^QUh%pul?{M(JHkjF~kz=_!nWbN~dv-Z%(UMTkXvgT7mb zJesgm*FReU7Gf2>&W`oao`jv}lO=C3u(6)P9#oDG%;|cr*ZJNy8&1gvh{pY-5v|zS zs-pM9L!?Jmbl~u$w(Y)!X5mwo;Sve+I#~&ogFRPbk|{?(WR%*UayJ0B%}+K^nVH4} z?o@5VFe>4W50zbD6FfyBw@dX}CHTMBPSWNFD3$giySUnZJ>TH42V!@3oCS-1>_*gk z2%9c##h@iIqTJCbS*=SoOd-;mTkbL%u@x7P9MGNp{KAmD>01-UtGQV)3}$q>!59*R zn7eU=KuY$k_s!Pf{yuH)EYGeA#WqPw^e1ABRUWM7)SwOsXh>ZD1SUk*$X73|57=oh z4%^dy*gC+da`(?;XBZ>XuBQlQ2avULEco2`BnxqBp&*TXe2{5~-F1*F4zwRpf3+Wz zy(l$0&^h8ado+`^O+3+{b5p+)zJ-_6PEph3q2Z{ml`1lk+}KQ)HH|-mlp+2Cns}uG zTiVI}pnqm>g}!f#+na9@_kCXrT5;Ry-3h{w(7w~I8>mC!lSL6wnIg0UDG8A#HsWw* zz>Y_fFmPM7$^eAbhOC3RGYPpqR1v{R8Nj$9wQBV}ya;`kiSPHaNMJQ#y_jc{$HTCf z0jr6C$50jo;_88%bXP@Cmoohp?sw|Hg%lL~j9AAx4PyG5T|A8Bnz$n!H!rss@gS^> z{7QQ%PC77i(Q{bcFpgVcWJOB&{J@Pmx;nGIC=#w5wxzO2gRV#NR*GWQaOZ&}#?^zxkLSwY@1<^h#-tD8&mP-(ffI3@|Pv){p* zrHMX!wW?X$Dv|egPfTcylBg%`u2trtXs1eep~JvGTf?`F=J7pm)Val_*lCiUqc1Ja z0$-)8itMavPUOrFV0cOA){9%%68DrOWPbupmAkm}U1tqgQ$4Ytt@QB_E(zhgmCdKo zg;sgp-PhF@r0ZU#>H>~C9XJq0OjfeGpxPT1+sFvONYrpYGM+z%`}Lq3(OEj*O{hy< zW`RuGp_bNsXObt>hh&`a=6b1HpV$xR98R`6g!Oud@f{;kFbx0mgVfHoQJiHa;yEQq)lLc2FQ^Pg&vMcE5!>UN z>oj_H?(*#Es_J#wQ;KF~d_!aMl$!nbsu<-dOI7g4;mT*z%)A%L>L0R0r5_Mv6j>7l z1yrfo6WLjN)^X*vSsc(*iw^YvtNRUAMFuLH#))%zkiVzxq zXaZ~0?4H$)dj9aZgY8lJI`T800DzqyB19!C3a{{>mUC!+A6_j&S z%vBM39U^XTi5D4g$K@QQ=1k@?mK;=SFz_{c+zp`-bh&mKIcl;rDLI!?B6wA(3s%Pg zH)nCgF^FamE*b?*(IZ6H?GrZf~xI$^CA?{0f|bRIiY&FW!*e>_|V)SY+aI-5(n@sZ3u%dQVrPDUds; z=YKfI#o>Y)eb2?IqN{zUqy0CG*Y@MmI676jpEAq>d2y_xeb8B+xPm^Me*5PQ9{gce zYIty`SLyzR88COE*ida3*8MRP;%upsfda_{=~!WUR%brslfR|yPU&BUXzNTGpFI}v z!L5*8l+#}J^Y+jtAb(q)xiX|^Gs^%|Fp+@xMpZ}h!ZU#-Erc4>#SAobJE;B{yq6kM z@C}q7ybmp#iu)ioaotCso>IY)*NwQO%lL+$`Lo9|3RiPS)HljbN(!#LR26UiEJepo zT*hOd$8Dgx&MKWCz&ZLN*0$&;T)-#9!aK_vqaE47#Pg&(&e>|D3 zE%;VdRd>?6p2l7sQ#BUXog~;Bi89Z%H}(w)Q1K%`b0#7We&D0A&53c=MLZlkd;iv% zw-8Ve9%yw_v^eiqF}Z=--!rMCL`z5HmlScDB-~HIcJFH@msj5pmwp@7sYp_w1}u(` zWcmbr07;A+F`U=Ea>*uyX3Eiy2U;aJk}~^O{ztyviwFx!5LgK@XLPS)at|I!^JzID zTX}s6oB@Zp^j)SQ(Bj-!z~6_9pW^BKaBeKr9Lr+Exl!xqa|Y1B(Uxb?#|2Wy1BGA} zxjQzDZR!Wk5!^VYqA-^5twpw_N$wO#Oq)+jd?)J7Kt^KYp7vUUQ!adgVw2K`1JAX{ z%W)p#aK`lG!gS15(96wZHMtvtNY#yO9>qg)8b^ z7ed%Oox-tA)cvSkK!-_OBk0ro0Fp6S#O4B>qM=7%0Ei^uD!!;=*+~J42Z!C{1RZR> zHzm%c+M1!}hR|UDY$fELRTbXaRQq77FU>O*)}%^A2`7v5Q9XgNENO3;m08IfeovO* zfsf)5_3yc;OfTHxM!zm^m|c}aFCCRL`)C0NM2$a(jH6jhw=>*HfGQ_!jW1J>fU^ij z;J(RR9365;AVa9uB2k-cD|1J%qA8h3;*Y4upUBS&L!ZLi5SP;4%(ciW`Z7A+LQTZN zKk49lntjjej&|XC-R7gQl=@BcBc6DE1JGsLNAFHujKo>}a>MvgMj>xR&Ec9y@byMc zwM>@(?u2mY!f7aoGhGxh=su=a1=@CUww+bW#!3`t)Jm<^DyqF zb*am%6If;)H})Y;{S0FbRoC^j(yn>X`K%_7m5#<76W~}(Y{k>D@}~Zwh&-fU9#Lbm zPnI=SZvA%e>7lKwhujE0q(R-6QB0xT&Q_>hKKBE z9K(S|R6FJ&1!KslHjTB-exx@F(!zr`^ES}>Sq}0*YU$|m=nkz0I3=(6TB+A1*j&=1C#V3dv2&n zc?kDRHx9-;;ZqvVw>MUN+5dJya`il`XhKxCxum^>QmibnmpI7S8fRTv-iUhkmwm$& zv>wgQCBEM)u-j=dqHWugFa|6C!9O|8F1Py`j710Ae|`umEZ|D>ne4z=X&%`i&|{2o z@eMn+;u#_y7f0MImt435?)4E39w%JlQxYbWE1*J-`6pTll4`(0Ms+sVn+g9SytuAv zRLK=U8r~*;xx-O!MjCUaqzSkd$lK!k1EXwbSAovHA&tWiO|#40&Ri#DN`2=$Y> zSTzsI_t64`p-QlWRClU4SJ#drn-sa(P4Gz`YU>~O!E`ubM6cFR&F6;-Uf9_6TApQ) z(2-Mn{~CEtAzPf)j(_m}-Fz=!*gqKkPzn^MoFfTG-?<_`Go@Iob=TeZleawSNE1}$ zCy8SuJhFlwI>Gw0(Ua`LG>U_zfl94#>Ht?HNd+qQ7op*L-8zCMyIxQk>=GBo+&Y9y zMk-Iz=qY&R!ExH6L?s`XWVcV=Jvc`W*?6_P+6FQq0*WDU1tJmS>YkO zCml)WpJ9r1V4M?^Mv8jv$H5#Av)b%&m#b8 zluHN-B;o?otU6|1bT%z==u-|iCoa2x6*ZVmyI@&c5KNFe#^{G4n$I9Cn+)G7E?2LP z1LcbUVS$5|S9Hq-m)44%o3o3HALBS^rBCZIp2J2&8O`kb)RkVoFAtlkk(-G)o{>5i z_x80KCLgtR`F`Q=FU@zb*`!CVh5_Lgo59}E0pTGx(_+fxD}xaBM(DYUicSUZg<0f0 z2gkQLp?FGBiYmdUJdR}ai9&rsG`pb+t!?uR$6zp~fQ36J{%@UtM}pLG6HbL=sxx$Q zu9Ffl8#ib5cmROYh~4XEXAzEvcqJVnF@ZulWfurP7Aw!l9^-n?gQZ)yH56EWazbj9)N5QUE~A z)E&K?An6HSrX%G~s40=ipebs^d16`pxJP(Sizc+BbU(Z3cx8B*8^h(jVgs`XQ;`k? zUR=SB{K*!>6ogh=Xh8+Pa+4TgyvdapCX_>XG)CO1?&NF6fG6B{5qXfmt*L&@SehU1 zl%I}kq(Vrf*P=VZgvr1ej7L!&-HP87KOG*VsI5VYdTG}avop;EbzFVqS(ILo3jZ%U z#q^|41a3JxphSx5_yD zCQf3C1wA69xuy16e27_YKsr*_7@U&O>D8CEvTd~GObp2ENE5NMr>oH9p)?mH{*T(< zFc#U*TGmI$GvqD|9pQn5a?m9}@JLclHTUkB)S@7M@0`cvC%G__ovFY)QE4RPLn$&& zK>DrdU20e3uoWrP^Lm9Tl5||0idQb{W1`7+{@FU+RbXS_>_0@!^3b zbgt8s@fzIYH_OxE^?(=;6NsyDP$RW=cI67L#a?6!4%g_wMu;Idfmb8maUaBK#!=n( zU9&-ho@s8g-EFsI>& ze4gyBWfm%yV6uORPaYo{UpAXd8Op{SxTwylgi=_p>>Ts-quH~7PN+Zf*hx7>oy`q$ z*BNUq82 zH8+n$l|)cF^HGxT-*Zuwi=$WU72&NzScl#FSHhWJD?#EMk9A~zuLTRWfykL=qNh+oAa_yrCGWCxUd??=WZK# zMyxJpy)TpMWPnOoO?+IML{d(yz67FSsaWCxziU1RY6O(VuKF+ilg43-3>Ul8KaD=^ zlZ!ulq(8?R%zF%Rz4@kxq;Vwn)v>eIn-c~3;OJtY(|ii2IH-vypE??J13fp~u$$uS zyJxUOlh>OI@a!;&n;ma9{GoS~M-JTkLtAk;agldeLb+1#Vr}5IF)t&tZ?UHs6R<`f zy-`+1;w>zL-j~Ol-56S1i+;xilS_zat<${Ojcjocirc7 zrjenDAU>$<0;M*L{UT*IY=rCM#t1Y~npZ>|s(CIRGntUXRB%+5^{WOAP^GxAVc|=k zVy9lZS(tFbkE-FA_4F9qEf4O$2|AqcA~!;${df;*S(B*FL_$R1OeBy3GU%2(0Y(_A zjl(XA&VsepG zm=mLGr|^?vKj4X1nwu^MkL%dh$aC_LkrH{7mmNmC6CGo}0$T9}YlJ}+bKR?X6d1lQ*vg4d)mjIY^!1N}bR|?mW?w{!H}x`k zQajQ2DVsyk*i;qFwKlFqY=a|el zd?)}ko)ul4J?v*I@9X!Cn=4k5fOdUrHPNg!rn!=ln+9;90X#b#@haYIKPd0wI$6HLI{iwq=zfww zsdatCq59TNee$1+d&zGd3ivJG2o0+Km`GU$epdfZXFYVMd zc1q{<&Qs*h_DLop0nU8MuKXpdQju$%OSZG@B;u*iId!CuD*#*D`A7DkGuq|2b#@+# z6-JPZrwd3mb#dI!=jrPUfos=z*Hf-m28aEj>>v$gHgegtXCD*t!Q1*ii!tChugHib zB;r7O&`#Eq7Tlv=x5enqMAkI`YF#4RQ2y-Gr>&CXu|&>OY=UM^mba2rvf0kXL^fl_ zAO5q|oY+dxQ9@#DxIfq|FlP0EJGmwi0t^&t;)&PR)AXax;gXED^}khWGIbTHoR z`>CQL+#2>l?OJq_kD|?ci}j8jZCs0U85g-wd?tDy2iVNaBfNMk6fEyGzBU7s{~HWZSH_q%h6&Nj?<8p+Au!ag zM8v`|8l>4Uu9?AL7*#R7G){P@xXE)rrq)ncoaiW>TbYnjJl$$8sFoGHFsHY>VG5SBKF~%WURZskEK)9R)`e zE!{y~Jg`+wRB;}Eq|U_oieVgnvIT zXGEe*qp}}EgK`V?Fa-X?!;I_dgP7jxl*<`4DkCrh=cP&xkMl4I-?*unLpF?~zi+I_ zampRS-Cg{pIc2FRs*T$n)Ilab#U7xSANVeB33V@WJ%x7w^B#!yLU`7zSMVg#lG=_jD050^+e+cBicVMSz9?f)|$Hlzni?ZZe^8_4{aPGB?Ak zX|_J%^!{yQ=Fk${sIxhoglT&tpL&JsNJ@8+dR;1I9D0VBy(fj6_fj8~r-^2);#zI8V6K^i;jKgyGlk>4lpl|?*gyg(ZcU_tng zaejgX9)Lwz;6><6=OwzL;xxMYc7kp%YoCvz*&tE(Ig6u4<_*L25%2=Y96Pw`A> z55^X$qZLc`izrJ-D(5C$*PlkouWMFp%tQSEE&@kY`9A)fzNU>^EpMJ&?8^i{uvYEp zyEy#tRJb~R4r8#8>`jhOw$ z6#4t5u68TPu#q#wQtQrJkI$hmaIo>UDT&m^L#lJ@HY=G!syDi@O+wun?|_o~xbj9P zFbPzeQT|0)RJdV49A@8$OCLa;FR?t%SVB+o29k{X2rD=;PZML+hEZhi*`85F`OZ~a zYnfv{RZ?{lNfz*%c-M1`e&BPSDk0Z$+xPP%Ns~cA|7jv^amrnoge)tG%8$sdZEZ|m z?{%&uA0XjG6ybKSZHX1)Sx^eM{4L3zhZ8hx&&6WQS-OG_T>9A%QirqWjItCLvtH{j z=Mh3(d!0k5nY37buyfZe1yU+ zv>iJhM|FDaVS4Mu@s?iY9gl^`)(wL$9HVZ~lD!`h)IrDxwt6&~kMxCM(BW1;{q^gM z-v567#twJVHTR3>p0KT-e*N}`eV6`g^-lGbH#fMAd*;&LAFHQFp2gqw$&)?*XFqM7 zhiPXZ5lR!SyTD|+`Ov^NarhoYF7N>jHa&l804l1anR|fY-w~T+?5{X`s zF{lwy-+5%7`PJSvCyyNe=+`g5-2Tq}$CL+OoIJ9H|G8zCq-t)51?6tWl>2k{0l()t zZ-24wnwU2A-G6?p{HE2VdScgW$=>?!<*yE!F5ILYJiOX)YD>$efi(-wyK{$ zU_3q^eerM6H{MCP9NHE{TQ$5JLH=r||68>etseI72%GJdxHamOf23G;7s@}{>i48@ zy7%Gkd*=vd-$t*gdS?H!r2bD*$$$B)`rW=?hTl5B=cA0X=f6E!t@?dTw0pX3t}gdh zPwbkoI~%NA-gDdkPB$ecoVMNCHD8g`%^5jp`@p|h{U`T+8d2$*MOnFcJ@0kyca@@e zu9--v(@WG;pQ_%!xf#7#RevrHL}XAN9lXT!=!$7yx9o4;mGl$gP{dz^dtaQ6X0ErY z%lJoxk9PUbzpwPwcwczTBs{jTd$iF$g!jRSs~~TCZa?d*4yNa|C`KgyzR7~6t+lS- z?mC`)=fC0#*RRvZr~h>@ZCu(r@Nv(@&VOXBO&$xGst%ml+P9@GBkpJVr*^fMWfG}R zOM>!g>)X>EU)*c8aE)F#w9TgG#d@dd(5^qvWZZP?GwG~rku)EXH~qZp^YG06NozOL zAl-P_*u_(_-P+~1L#mENdAp5_XYNcPcAP4U<+BQ6Ke|w3d#>qwr{H`0-w3LC&(iOa zCi?A?n-R0htcb5}GF>-ZYV|&C_3&}ZnB6YI++|I|o(tdHm%G06hRKyT7Gs zY%clwXilEqxZmyf$-}C#n98QV2wxa>IZj&nzSAMQxcR8hr^!bxRgYV|o;tV3sMk;H zIHA+GyQ>=~Q%Kn!Zqb_b@?V=<54UjAieka^L+sy zI9wn5IiTXr?8W!@9lyEzJbQyLDjDhX65fikGSoA->3TpHwKA129706C*9^jc+J+9@@-YXZ^8CaCQ?NCONCTi90)^VCm4nL zHizR3`~drrk<(VcKR!G;1Kx~#dcNn574@AzC_OhuO4wDu5~fSkxriv-@J>Il-3O+$oQoQbVM~ylxT0W698S3-Cxnjc(A%4yy1?hy!r9ZH3XI_(M*-^ z3+v-KIn#n^As*c?kmN;+`deBA<*Z;5JaomNh}R96sDQ95*kgVS&XhCi2%8dOkE@Nb z=|k<3i~lLw#pV#ZL6~CH70{ny=9r^JH^3U}wGwojn==I-DAqrcVD;l|IvW+A0NN9j zIhkRdTVM>ZBDw*|{-nJhdIt?Mq=F7M`&0hKhA(knBW6V`fKQV@xl!&T%2?2qsv5ZBm%tsk%!{#_vcK{_koLlzjZ zM|skL{%S<5nCgBGcF&~h(?o4mk|~k8{6s3da|=k)*+~Vn(Po*hv<@pKw1Vm+>f^#LOQFP{?4!OK|~N0I2|@f&Av>z|VmeJ^*tITULta zUIg%}Rn3&m#drSt_r^gKDj0Yo6UST)NB%`st(d^kIsC86K3MsbVjZ7mgIC~;eAtU& zfUk#*NzxZ=rKQ=?Ak^7=H{fHPa`Z$tn9Y?qRfZwI)@tH>x|w$Vn)PZh$G@;g>EF}? zX=H;&ytQUY4&eRVy#|3T26v94T)CmIz!8{_%qFKV0)9$Yb{&W+Ktjqh5p|+s3RCmI z!cS6f_AZd|{z@@o!P*{7vL%1P*wYCr1v!8@ByEX(G?0=ma#370@h0%FLqYh#{9h-Y z_;V(FbRzOq+Xx1@whA@?&qi$xc<>OX*NQ6AqJYU4SiQUYUNr#A@>@+81UDGn z)U$Y#`&yxYH8``#;;%Lr6Jq}b>kMJWkxvuLXvRn$ue#1%0FFf#EI(<@^!3a<3e`{) z%X->MX8~zWBkRsZH;E`Wg6)E**ZQxlPz@v-)6Ej_ASm+m{qrxvD#rFehnpP?a>zHX zhJY*!*4Yp&w$3NWwp6VOmQ1!K%P-0c6r0}3${;*o8rlEm0l_-(m&Jo|Q5go;Z2*fT zgSJh_IlXW&N;~idq5q*<_=5+SA9OKXJf*>;_9!(dj`Y+YAJP9$|1~lzW~AO zJ}p6yk=KNcTXi5YrbJrlI!>JEnb$gch7 z1AVtL9lY^BVy}o?tX9;Fsi1g*Qd17cr*en@{fit{pjVbf3c%`paM!fTmNo8GPs{W|+0F!|E6fJF(@*elUODRAk|+^x46 zC$BC@xzxB>kbXHG5UGw*a+`FW@6B;1n1;9lbja(-UkY5;PiiJ166c5E(oAcbMa{&5g@Wrbn*LC)AeAR3 zx=G&JPvQQ3!k4ldRg(~_)GS6NzZhPiACA^qwXNY;u(@F1>?2UgJO02BCFA-lExNak zEq$o^*mTEzg4E!>xm?sqtbu|wX#4fNJXg3Do7?96bwWL=mjfTFn6x|O6R85f*7kU% zrjlk5n?D{grG9#L^eR3=q3%+sPkd!WM2+1jeJ$A`Osjk%?=eG3TG~wFAa>&sHO`yF z^{jAtq4~|{$8%X1tGwBcJzt%Cixn^3VCBgYDAtHg8R9DXY~ZrdIC0-TrMXvVkr2Rb zMG8CGZz+PVAHP{MK`hdW^zhnHzkgu`hSG`OUAgFVpW#9?kAG=%Z~Q)YM{=M@3KNIo zpy7cy;k_^`BMHGIN0JRc`|^Xwn@W|m6y}5!(S~Uyf79<$pJ$6?Kc5@9vpuu#3Ag7_ zWM%4oROalsrLdt?&^vfNd{U6Cw5N!RN|Nb*Ie){2YldyWr#5+ zV#&0FMBg70^Tr?Yg85T%lJ)BIo%c;jkj2x?-1>&S_0b6P%VuL+!XNx6RxeCYcW1Nm z37?OGU{drSF|*~%^Y7jHIB7kPiu@O0d38P|&ff1EQ(yE##KhsCJkjmy)n=M^LeL8j z?R29Exy;wIGX}nFe57048u^{7l=rMg=~LHxEc}%=90Fz0m6SEfn=dWV5|5WZ9B~2JDH}{}5ez z#QLa)dyLhs(NBHl#d_@57bHY9RQzttEhXpysKlhLyrEE{yExzEpW)D>)stK4r^BGpf@{=fS@ zy?RmJ+u4nBJ=)y?firck$B?ewrrNG%k}qjqwAwJcX}@FJ#Qtq)VfVfC$2x0RSvp;7 zMgjM_PxG2G#4nlFLaGe0Vzn3+y955;=L*m|Pn*6RJd@25Rn8oH%g zVaFu)l7GA8?VxQjv*mDyI$}|lZR9cjzASn${X%S{&xUrplH%wS{qK*8PW5&L9208z zDZ~(Y(@U6$a8CVs37r1~YFEb-)}!=dhx9LASB6){2@%`Q;$~yYusCkQ z7>j?*pRGC(+jFFr^qa@VA&O1{0uJQH7E-~IuuNFA<6`_;bxz{J%%=cDdPPM`zywdeZZmm zVTjmhM_g(QgVp>;R<)gT(P3`JBrz@TFnnia-ut_AVT1_W`wprv=!#LI1qSMkKCIrJ z;x!y(<{r@NS(Gg^S6ui`hh$D%1T|M(%BQ$q;bgKgtwBDP@k%sNMWJK@sB^9v#nGGB+=VO9k8R;U% z#a86RlGc~Ra$dQ#_>FQKZzJf}n0>e#sVDv*a@9YBWQB11B=KR=3@7j_dnBiZXl@u6 zn3kcldh&gl#2!7vVAA^C*En}>efgvPyWZVB*%{|zC%|_6oV+F_BWC3v&o3NiAiN}P z5{2+Ws-aCGb$ucSUeZ+nF<{t*I1DVmmqpHr!vMRt)iF-UCE21*&garct622>`Qc&a<~W7F;MPbK4m$NbtqXO=G*%WOI+xW|1ejKq3%SX# zbZ+ARN$~+{os(p#oTLY_PekvOiQQzSZ~@a(oC6e0*x|qn+WoFt1_f|99)O1=l{uu2 zhN`A!-w?KWEK9`h>0@ydt5&n{*f9*=t%VpOIQ3vNLuOP@^Mx z5J$7A-kcCjmuw(VJ7vl>l~p+|t(E2>U7*9UFU#Z$03oqB8YFV!yLq|Mof3a0Eh+_d zve0OWC@*;kCk!CD_NC9qi}dOo9R34`Sd$6q&p|0yX%MkGJ0lnzm6tqyNoIXH0NJ1D zviL7cS0PAQK|}#CD<@0%R+d>Sh-mr~rPi4oSAazaOr&1v2H&g%r9~j*w5UW-C}hMx zszcAzDkRIPKE19|49;?z_djr$VK$@En7{}t#7Zg$647pQ@~`jcOMj0=Z9bUy_jrR-SZZr`pJk(LF@F({qkug8?||9`jUU#1 z3OsfgAN~yd@w7cl;Im=p71}DAKLp3_xKHld>=C<&m_kxD>O63)|6Ajmd=_&->*;0? zYqVGi8M-ff&YQ~{>Ev?%e{?mzX+0DsfkDFa5?8u$b9)fp*2 zk&*VX$ui}X7HEe4yLI4-H{#`iP%;5Sz`{N(rx&v_wF{(CF{xvF`o5k7TL&jR7V-B5 z2)y(94)m(VaHr9#nEBHZfZG9xB5>xYYX8bXm+^>-_>I1A02F3|kQOWr|Cc?q!SMph zbL>_PjuqIadrox&Y@N}$g~EQm?Z4Cn?EQ`aX-w6P$%Qz_#&5D0RAJec}`8zAW|SjCCh8j=P0D;rL`K3sToO=mrKedt$(H`@4pd@9k;)_5`mg zMF6d3pmVkl5!>=KoVVrWkG%fw;B-ac2VibkCq*3XSJgv4!>qq>dv7sNf=-JrWU}J5 zSEX5@!*$obbdb?S=UkLpR*XUyzDD&0%8~(LCEq&IbiCQ-@r57c{O!gtrOmlF4Tp^t zSv)h6qD~%bJ?_$uLxB`?Yp0wsTLWj^v4nFPU6Ka}H>m#88L=97D+){nud4a#yzUmW z|6Ru=u$Qbc8mJWDka@pA1UMRDhR!smd3rdwGp|+Ee8FpCFRn?{`Mov|WV;|+=W^KA zuVva4Y~l1(omyJucIPC)en1B)1Ik=SZm@rFSpBGziE`$wq(X??<2454$~<$fySWfiEL@{&gL@KO~C+sP3>RyG4b1mH7frPx-NPoE- zXVUy+WW}Xhy!#jQ=UAR_3sh4OmG4cWRp5>i^(__WE%wvvGgcbc9bpCJfR`z=m#fpR z36NyeKZdoCR}L#|^Ff`+GO^FS#Ks%_tG6`5nwXZ5K8It6eg01b)TKRr9Whf<*gdNo zkCn`41&g`53x9vc+lZNQg53_|o5jF9m1JZk zg8)p5iySy%I5UM?_2GfI3CuvZ?Qf`{W9u+p|1B`~ccUz2-I;dAV34QYP|V1@4^9^N zRiwy=Zh&=Jmh`B`nj(#JKQ77n^YOa+m%0=U4S^2pwtlbJ)2#kW2C*+gI0qI~&ID-= zxd3;V5n)ipk`g>p4Q$RLumD485jnG%t?fg#nq7mjy{kUt*?Uc&?Ray!d!#^q9pr^oqO*nW{ZyzpH)jaj( zoU(Dm8O<-LIQxcgD}7qeo!g#TeK6oyB7T2L3EY8z<#G+Em4Ei|`8U-1&O{c$dS!P) zqcaHStX;W~T1`@s_NzynP|Hw%S0fr`1u3|i`lPz(T5#sewA;53{JL%Lt0vi59x!QN z<(Brgt-TwgCFasLnJ-lQg+DMsCrOch$*PPx9%hWUd7~AHGQRjW@Ztc+Y-71C&w6NK zvw&=?2SSPl>k?t*W4L{C7-Qj7hK#f}Od1ysNq$1O0f@o*eoP8{ToG*_F{5}(7$P?1s4q+n==l#k7DeJE={^n2?j%tEic@id|iw~ z=}c6-%v>q+G3=!?`1T{Faq%_38tGTY-1I)1B-v+d9+gCVgi<}{qql!6&5zN7i!AZq zMs>#DS0W?xvd+myi2SNm&(3wYCHoS#$QAXC?~db>0|dBWA9xf1Yw*8JI`HyFw`2k_ zmDXbK5=;b6nAF7zrcRLMD#Z~dne_1bz#5g&596?sSY6}~xo*TP#JVDplRW_RMPsSY zOqTo64K?rtD`G|v=*mM1fU2Htef>vwg6xt|o4|l(S(%$8BGFkQ0}|hFH5rnYz)Eet zFv`A%0ewf41$T^i@f@Ju8C;M?))Nb`n{%>hAOz_GNRnvQh{?&y)5l6mEMMt(+7MLa z|Gvtm&w#~IT-SNv8P9+MT;Do@Ga@e;z8RP`vl;Tavd&;?;FL&-{O(CI33g=lE39*JnUroJ!#NX!IZtzmk8cH8_R7# zaIP^l?E{l-WhrYJPE}8x!=%$N5#XSY30g!D{b<4i1NxG{X8j~WhBYI6-ZHUF-rfIc zORNozX51lOv7iGuFa;bRcm>yI1xZmq`bT!gP-#er$Vd)-d%Toc#qwnoOJ7SlQ(T2x z`iHHJbT+67Vn1d+CnLm~=*!salGx{P<$y3^_GG`ZL1g5O2<(i1@ewYHAT-PzWH(I= z5Lrci2)7x&npB^mIJo(M-lu32uE8O<$&ybDag&}7!N4>I4=6Adm*4xth<^SR==O1m zj74{MuGLdwr{Q$yj#d`ARbJJSm9FDem1?|5$FLY0F*zvbB(Uq|GFJWL1sabH4x5_) z8B0=6HF$hU=cs^gCC@7-!!j}>esN5Re2x86LiAHW)70!b4^7C)Jn*W4s%zsSaDCr^ zKj_pgPK-4K5#BFnWYz){nZ%qVUhV`lRsug2QM2+_-Bw^s z&|RSEcog5!{+-nB*GoF&UmHaNx!gG3sABY}nWc$ME`M-sgE#@%&%#fJ&uhX<|++nNqEO9rE~$yeCUQZN&+-^m6$wx@zA5c$>ppeuu_!F%3p8- zhoi7ogJ$~RY|DFlu#x@vV)_N?YSQorMlp6J9eaWGv_-g7E+1&0DNZ$z+d@RFSZf}X z{}|}S>jJ`Cws4DC2A)_B+HM$JKUL!URN7C3BiCo$yTaytVfflrWL6CC2YZ zfGn7USa$%l1guzc)d$}I2+>afRxRru9@Y6H12%o}9C8Q?_jSEe-QJL{%JMOeVuPUT za3hl1SADJaN|l>sK6vv5#rtDB>qv9U28q~<^1%`hAG-+4!tg(8I*9e=v$klFVOl^! z`y+4fgxtA4iX4ztSmo#Un&s<0&Uq{Oujo)>C!A4)s$UCgj&+40DHzoPqeoIepWdF2~F?kkO*6Wgn??_=wrkfD|A2Q;0mWBQ4A> zG}%z};vk9HR#(w7@!@00Y2(J388yZh8XdF%$yqr zlv2P#_a=))Kd}UldRVbn0C#ZL&cNse1L+etMMhXwiUifWC8ZF5CJ8+1D1a$hF}!%U zJ0l8|vdd$jHzk1!*iXc|;=W^(zuq9&t&E;CY~r!h$x@Ed-~~l7;piRUcQ^4T%8_)R zi?fCqiDAI{gJ8ABK>Puda;XRRi0@H~k##|*>4)Cnf9psiXY_U)Y!B?jps=n+rj;}o zx&ax4N!isvTPi6P1{e5g3HHa_{c!VM1AX8bPvzt<#vr0Vg+WyoFTEc^G_}_5T@e%}gy+HtSe^_Bn!o;zxP2;?;WgOB0Vo?+U64VxTL~E7~z~rga)V zm$i#|0uMC%8y6teQW}lbanIEHs`>n(URb)UlGhdiLC~yp>owH6Wz$U?3LKoX zVek#NjZnTx&12}b;>`T z>?Zx^`3PN_!oo)=(bXF4l9Yqr6)?G{E=tqr)%O`CI-;Bxbfy;G3kLD&)C)8u=SE2 zeOi*i&pr|p9DsUf&$E68(Iul@zQi>;es&$s%l*}@Rk|5f4Zj=M6UT_54=29G8x>_s zr2NLALRhm@ld5%M_Lb@?+#427^-Z29rLGz+B(*Xf@?du)144$!cSgQkP*W|6Jhr~j zDvZbg6%8eh2BhYqgruy;C9c3{q3u)WZ1p1*OdsAyR+9Npkl#F6bCI6gQjkVPDlmEL zQ}{}@$HP-dm9GePFuy0v&P;lLfXIwRvd9(MvSt|cOQ_dCtj)ILwCJI7S953(MVp|;C^9I{Jz*P@-R@+kS(o)- zpz3+0An8Bfn@svLqPLIB+v13#c+6p~cw^(by7#o6SkF6=>NaP4zM7k0<&nlz^I`x}(a+K$mrD+~}rsa?<0 zXjk7%K0uzS=4H}ZB|D{Qaq(;f|0u3+J<3fg4#}aIQmH63Dt3GH% zS~*UcO&?pnEM1KVw76=YLkav5e6;^wL8Aw4pCD~fo?c%W*9b;FRn>YnT-d#V>i@+MC*+nB z;!`HaKN@p7U)-d(Y4hu?;I59kQ0fKOe4hIp>s%S|>W}vAQ+0OlAZA(*Lkx*Q4F(XN{fdTeXwT$Uq^A(nlUi*PIIb%{(Xb;(JuH%BgZvK#$+q7@ zTg9xkUn!&do=h>li@dJd_{p&`Rn)$x|6>9N3!?hBq*l6e`zZW8hbyTunUwIzzA}yL zut)_tM_q1`HM#pox{u$m>q9Haupc9#aYF&~OzBwpNrE5Y?nl?nFA~mhOkmVL&o=%1 zG%sw{+5@uo)5@~u6^_Cu2TyKF0G%_E*%i2ZH&mTFa4pN(#1(jO5S;_t?^};$LHw#! zAe;`%waO;tp0W(p)=Uok&Wgy{(c+z1PZNAO3UXu?R@wmze~NLn ze}4`O4b|g^_c&yHUf+C}#u~Mv#rS%szuRCqj@kzwKIi#q4tK|ws`-$ZK#7X(8qKN< zao~>Vc=;gJdJ zg+A%(QrI01ttUHtW$nJ4Te?7~ofx`bPi<*58l||JEfzVg3Z`n^vRA#2)IDEJcVfw|JA3xzcfDn0l$x=?BZPnvY>0V1aIQqS#GUyL8`2LG4v(C6+0O!UZnEw$BE~S zFB(ZVs}mQGLLyh@imYa*)M#PvM8hY>8t@o2dFsi5Uu=# zfK|2TSjgT~M(r0F65rU(Jo7%ObrI1TjDuI3hl|-fA3*U{kP)6};lo!|M5;90I>}vt zE(JQkV3DqJ#1$=3QhS}Y8%bqfQnZkq3X8wMKq?OQ%OZ8?rabCh4Y|i@r)>Ny8>uOR zhSqTU&3Vb-`fX10LAIyFhu&&3173cLnNpvX>IP%zxE+;ux<+ktLdx2IY%7|=I|urp z4$TVu@lOnd>GSEQDo3SZ<}55-!&or>bYEa)iZf?jjPh=zjD?F`L_IWZ-b|F{tt3twd+E*ya1bDTyAi26l1kLi4#~6MP&W~ijidy4g|zd4_`^` zKGsf`l0<<1Ly_(`tkSY1etuQka7grTCfRc4B!$K3_NC;`e8DX30`vi0^c$yvqa2&` z)PTi7`cC3Zx2?xwBV-ZG+gyrbQb2WW9ek@*e$r(iqUZ%uuPnlUz(>7A z!=e%*#|qCNo00f)J!vhfv9amCmDA!oR;5%b4!Jy*Jg?U*zjEMnNhN{olPkl55t)Z< zrC&ojJki8}%#()nOY6G^!drlvXF$BnjD{S7CI#2@F@wFMk3HLC#yGx2I)G6&p0v$P ze*?csDykJmgNvJ|r94g=jaM$#o0ab#R-u4%({MS4ac6CJ%$!xazY{B2g--~ApH~R9 zkb$s%OXVdhWv4}~nA?)mlIoA;N=xGqtR>J3og7xU$F+Fd3H3)d)!+KJ-(Y7GG^Q$1 zUpF_VoKVm^&g!Bqr=s~Q@_O!fSuROd<*gE1ZEL}|Fj&m>M|M#%Cisz)Ja%Q?vwsri z|HKWNex9AzeI>r{Wx1Gdii}P%*pC}E;5Z;P^o^|==92{fwyHT~(=K9@9QCycJKXPI zZs+tDFLg`PEeDM|oP+;4p>1V-?`atcNTRHny1JhSR#*1Wf{ksh zY44P9zFKg>074Y#JeXZ|=SZqidA4OHFdMhYC*t63c81OUAKaIR>$!&<5g$P_5xpnS zC<8PQo8op$hT*lt=^_W>cBpH7m%ib@#M;!TmU3P>TXuuM(c86`ySPHf zI{}Ot|DdUvo*f+rCzX$*xXsDA)CHPRBf-?PrKRoIC5>655CW$kRlMO@{QRuSema4x zXeuJz!eeAWd4uRbKH>(+Wq`%*he80eyZ~V6&+Y@*E^x(qy8J`v#=T|CJ74#z+ePpq436;N^xHuFE#8N0nH`odTjoC5 zRZ5A73vm`p8Z~I8JgBkzZU4?+>+)??3etGGMDp9CrN<}EDleYk|4xMa6$WS2O1#sv zIaBh7B(Ofl@LVejeRn;(aq&gzh0iBDLUKKT}B8)Z*>2^Ou9rI6+mOoylO@gh)vF&(*dYSaE6n z)B{sVPq#Qo6NQeRl92s7ku*}%r_SJQ7O84W5v<9e)vx|8!^j*kRS+u7x7e!2Ul^<@ zk+R#p?Hs5rqZLZsvzIM8-B9|HRke+ev72FoKdwxKsE-6z!)^ zD!3?3BxVFecTSnZmhaYgX1e}}+NvOS!<9!cyMMGeK%?rp-q@?LKy=FJ@6vG(vIH>U z_^b?bkpUJ7g9ERV0f{Vwul_9okYb29l_VZuf8q6H5$@MhsVQ@$$LYP^TCrxkE23wr z3kr;6r8%tGjKyMr#abHHCCtH^8C;sjTY@>90nqwW6RGF>FuOawcZsKPe+P`3>E(7Y zv18Jm7D_~vzdVnuG=#zv6n?P!J@R($kPSbL=GZjkf19hi18sLZYbxx4_zG&HC0~Yi zzVi8(6MMGF=XQ^mG=?TLPiY;$DAxu(wi~~}`^+t2;g9R*(&28?$E56YKJ(m7`OZ`t zhtsXbE1^}pZu`M)S;2i7y1(xq+JAWVi~(;i;lA4TV{G;FK5il2ZGPh1Ut9TYcec;1 z?n55qP1ztS{i!#6tH|b3y0hA~D_>={oNJ=wu6&4`)s?M^Ot||7Ng93mmHeSWfy?H5 z(Vq=0ABC*{d6YjXiLK3i?ggmP<_?h$yvg_J@XSdLUW0;9c|8=7OOi=6erVd-Vo$`j zWIMs>CjQjxFr4B!pSod51}vnXOFHn16z}R(+rEMJJs*+2wC_lN-5MV5f}26u?9rI- zH)2Gdddb*)j5f=EuYa~YQw^lFR3MdCauh8SzVl6B!*m2RmhGBfGjE*<%S((awdGgE zh&CKLeaU$~Im?u|%-X3P+`nIO^XFQ+A+2ov+j5*+6Wj5ZXYT!1t?IWL?aJt?J>IN( z<&^XAl)|yb=Nqa$D8K4LHl#GuJcSXMT~E>axSRSXgNkh6hq!q*F(iII{rD_tX8MK& zd#QUIXQ{;VOqcdcv?AxAcD;vF>?VVLwciLR^_iY0begP35a$C5&RhIq$MqQLi%l z56>(68#kP*Zw@Fm>rwq}oiE2V*TayC_}6>0Ham2?F)3F^yX>*cFT`KX-8*%jeX;(X zFE%3e{hIDJ+Z(Y-qn79RYUe``mQ986 z_f@hoj|OZ;=b5sfd9Rb#JD~}tf%TS)yQk;5*0M`XL;|Ka(VrR@9*6R$n^kKQs!=C6 zFVHGcfmh9MM()Y`D#GU<%90@4X#y*@Rt?ck2@jrE4%4evo*YgM-+0S8t5f=VS66HI zYiZW)x7>C5UwxELrZ9cN($MS9M!&L>_HVfqGwn^|tJy<^e0$X!5 zk`uPF9WyUiYaRA!t2m#fDmvevYxT*5>IBC>#8>V#wKaEgQG%RllQ$^B=j7my(w5`T zKHXujxQlZND$6e<6!_5(o7;G)yt#boA9XV{hN}Zjo5KBz2<+VEABFN~>{^f;-l9Rl zZ+9*RY5npuTrFHKDCd0QVkzY|QCla{wjX-6Hae8~F%xa|s(AH)V;Z$szkqj9 zLjOOV8{>aYv}|wN-)Q>H99?-PuMC5pW-PWK7gu8u~oG_)@hlO$Gt2&k4paw z7#Q?REp-NR)fx%)6%-f$2)UWbyF`c2XOhs#TlsewOh>K{GoMxMy0UaDGSxEQ2rXXC z862-nBR#=G`(>O&|2SOn-SJm$rkmYS3UVx5Um=rDq94YWxFxRqp0KOgcM;+Wc0T>p zCfGcT2Z?wz>@$D&j@>2u#N1N~j=wwByK)+2{@t`irws0{kB`I*-kp@Rlq4nhwz+wJeJ3g#6De&PS&iFfi7mUps6cfJ=Iedq+$aD9x;kYl$I^WmNh7E!pa za+Og^;)m?$&CVM7>1*Ovgj9ZWFbmPMDl|~j6W{F(_lc5_J#z^<&@?HddUuLU3uFyO z&bQ@_Hz|GmYT+dj_i8BgYB`rFL2sbahaDR7QB;*ol?}^-d@PUpo2(I2Fa93-6gPhj z<61t0(V-j`+3&8ZCf-58{|ntUk;}aw-JPGZcS{nl7d~+*Io;UZi*Ovlx@FIK3rRa) zE|0AqM<}<;Xt8u_lW;5L!t~AaSp(4wlY%={Q8KR{9%1n2}eOn8J=4%w~oaS{>t;ljZ zk6E6Jrm8iJXMLFmVE0K(BrWcRSDsMWwQVshS;~IwRKSKSzjNVJ#UvcCBH1! zvRZjtx_aQGZ03@CToM=0bcWjQbhU>i-%HorCB=yW7Jphd>m45gDS+-cxNu7ks4j)? zynY)M)uk3=kF?MBr|Xr@^4Er*jh%ky2s6IYbjucNuSVSJjnVne=6p9~UYNeDeQY_P zrTDnrkN5NH!Kd^LwO*G_UN_rsnPZmwt(VIdpWWu^jqcamFR$jUxH#*ndwdd&yq!KR z#dD2x$2jc5Yt=2}F_yzV$S@d@b)DZg6vhv#qc2(t`pgwRD4(r1wG8B#P0)XM5ViG4 ztu5Wm<*~^e{4_u7?J5N_M9kuX>`vUEZ3FSwkxl*ksjV{$F3+AG7o$GA<i~isoafwpvT2gsm<7;hw{y*@k+(`e`%>zT4H`2+iRV@&$n(WYAj74 zZ>P*TPhL-ez}2i;YG}z@+3zcLW-YhQaj^h`$5`3x8~Jf-`KRbfPD0{JiL15AiT$DQ z%hg3t3|dSTy@R+hp#|$?*}5v#!o{^~9vzjkn!p*|;_R(G|B+PwDi-@w{Yb#s(t4}HGiRx^h z%f_^72>Pi*5*uIp`EVI^_T0tI<7}PH;P$HeFU!J(mp+$8kHdZFZB&6tVr zw~#hpU$je0{nk{^yXO)|VaOvWM;&4BgD+I}58{pq>Bvn6a@_i2qN$MZIM^!qh2LZc(5Y&(^HLvO zBi3bX-q31%@13;i_kA&^Xn<(RN!wcdHq&|Gbd&l}c9L$n?YG7mkCs^rMFa8C$Aiaz za;#ide0%$0pltuumf^KrF+Seb@5hB6_%>QtEbPt7WSOPgcpDC@mDqVKggr6k@qi(b z9tv2a_d)SLxt|$(EZ9CAWjCBMZTfwJ995!Osu%+Ei<>a zRm42b)g;YYlyf;^5gzqJ{pZ=m6)**sSu-*wWykS1Z`lPCQPl{{d^P#8Wc8D2Y*q1M60PtW z?5_>=R2ha_XFj!2R=H$o(~3%y+cuXI9SOu!U{ZoHJx-N>d}VK=6nXk0I6_m5?_641 z(QlBL?O$$lNlHyn4zSmju6iQj;Cp(_D6@U?24{;gOt5kM7Ru02YB6U;G#eGideSs+ zKFf&El4ojU%Ok_^dU@Y7L^i|X1_tC6%`3~-E)jF~xkF`99lVf%u9e|X!D6gj&znXO zX$2jYDqp-cGv3DX(Ec)yX3IE~+O-P(tu?mv8uj5^*+9~E#VT`mI9%exR{CY9{sIg3 zbNFw5znPQJx7xSMiZb}s`M$%l8e$IjUKMOCNNVLHqenenSHCaO z|Gx1kI*9WQyO9*HYNmpL2dO!Mz%)EocCj#xHKfXX<0-0D)JNW9(GW*2h5_oYPoxD` zjFj>POc>wPj81L{;6DNM5K3m9=tz(WWdjDw<9`*8-HQMB79*7htSO_#K2c7quun+ggLt)`0aG-2bi3*7$yM9*V})-?)`i;!?F* z@01|6m3Oc9zA$?da$wSoq~H^K zxjdh{aePt*iL)4iLECIWIsQr1nJPlX#iiHOB9fcu=5G13=82N%ip<~RvGavroKBkA zBz`p&x_Ka!m+-~&K>$Lxy;}agTQ1WA^}XxG%>O~=R7)QpeUp*(ss5Eb@y3+buIWg^ z&v*PGY+Y^BNo@_@gw)Kx;6e5D3O$o1w_a+XKX=Lc%cKvN<$%(EDc{G@!RC9&9FM8X z9(d*NJoQriA8ivJA5{m4^yVLJmB+u9^r#CkBrQIiy z9M49bn0XHG{nF#dYRoTJw?f4NskdzspRw*u8|A2Htj>DWYt!sbk%#O_i#PYGCEw`< z?nmA@etW4`4&JJTx0%6(uVe%NZ}6a;m^ax_W8m6K382^kxAU;8e>z z!SZ1`?;;-uewe}fcuw+@MIG9T1jqK037TiGrHD0kE!ZZB)^?Skyk`25a`5oO8y@h7 zo*KapGDszE_0>q93+^Yd67?Vd2l2NQt)=Gqg?>ivVJV^Y_xczT?CrnT zoahP7=k6viCOz+Xy~HNtg}Ss|tYOvYY5PCOZfe-f#W}%7`>@k9aHoLhJpjmrH2T?B!B`(xjLcapp}}rPtfXc zrA}^@0z#@&mXe_!IttDQlbvR(Nz7rW@uj1gRZ?MlgBsFHw#Mp2x@}pO`|>GLqp(JI zy2(lY+?`+-bR1wj6Y9Dy;I~a~qfGlK=h4afguJYV)^ZAl(tl&E;;TzwEDxgQ{oqHc zbWp|SM(ma8UNlqGxupIJE zbAj=ul)4H6k?uTuok>Ihi?=6{jDAz|qban7n|LQ7Abw>Y03W}NNlHKo1|`Cj>e-Dc zm)&S(*4tQ71LWgO<~gEBARr)Pn%N)%Hz_I4jmH`O`bk8FgOpXJ)PdT8Dsq*btwn6Q zqxt}JhN}kd1JuIXONZC5_gYrWY6amwbXbgA&QhX2khiLHcHyLF1Z@X}W57D1rxLWL z!sAdljzgci=(FLwmqx4u-C4@CC^Ys`msycK6(l<``6UYqR{$X?034rfdAD(kijKhm zbcN}u@GCkj%QYTzDJgbsE!PypPpW|>18_@OdzaAGWNc#;Z5)0O9gf*7$zW z!WuLau?9!gSLT^By6bF4c1LYT)RYmBKd28l*M6P#Co~dbSDLxtH&kjChUx>FP1=0s z2Iru@gpr-fZCi2rfsggot+=M`oIYy{xP5l-P2VM=`9xUDnIS4}GhD6WlaJ7G$@>jh z*M~buIZ>7s-;l%dSw?y_dYdAv5}^hx7|SSi$+8m4f=8DMFr@%LOrK$@Z!3M3;g4&H zJp`>*Tp`yajZJKI-E1>WtjcwzQX55agX(rVTlxid$n>~{Nm*Kf^PPZWS^og;3;_6p zM|0-+fr0Z~PyIVe0Bu5D(*Qfuns}w!6^XKHRQmj>l&1i&9np*x&w2XaULq~jy>)}YdT7diAQHN~ZdM`E`b zi&3b47P?FcGGonBzOq}99YayjKPlXBR!`V#HA|{gi^WF)r*AMMpV4$E@M_hmHSG@6 zPSJom&o%$k^g5ebx#&-qqq0=k{LLwQkbl2}ucueDwz&}FmGhc6m95S;>B&rDbsAjl zk=%p-02ZN#5~4x@{>NOpybYAR!Pr~q@k*7Bm=nz9I4#M}gCpu2N{Go|A5Zu5s$1c= z%Lmn3>UBQwboNZ2TQ*XhizZlx1~!DAe^9P9v%;pqsjbwq>NNy8(dmVyI+r!&F)1~7 z6#QTL4=WA<`sY?suD}aRFn8pGsTtNCo~hE6b4q2Or=0%))k#71xOgb|Kc=(XaOSw` zV1Tcsd5t@ss!aV~{tP5Mhg9l$DLDWgV5e*6*x_ldatn9LujW-~2;ctz5wc(Tl2oMU z;Xn>G+@nV0rMI+X!{ z0qfOE<-0|x7GLf*nG6H5TxV(WG56Ohn=4Y0m@BCI^qzHoC{!)oN-WjYHlDE1eL%H? z!jHawHSBn8#=1IRxL!Wylc`pgj2xy(3XtH$r8d?8+`ZluHL;Co`>QQVGYj zf5cs;>qs>UB~lBA^Y+VcBR>01Qh&axsqnSP`>tso;V8co_f?~7-U=_g!!z8_xH#YV?*khU@5;z3goKuK62f#mysnbtJX)e|F*4n2;F zg|L9R;He2fhF_S8~3Az$*6R_cQZ_i@z(r~9iK8|{>(;kj`ELS^+H&51Eo_Uh@XO>GV- z)?g>Uur`9VZ(c$N0OOu@v~b&k-9@lF<9^$!n{e8*;mf0@-!p|q-2H#4yyDrkDeXXt z+DTmLxN-G^<6;5YgU`u2^cKGkunDe7JqF(WRwG`uLm;)S`JbAsX%{Ssb#V0AugINP zj^rAJMz0_ktQS@kmr<0TLIC9}<32UM>d-cx1T~~M1`jcgUZ<#AcyOfGX>XTMg6A9# z>!~74vHCiTI&0FQR-{~vy4}TgQWB{H=zt|jf{^md4k#}UsZF4bzKmq+z`eJ8Y1Nnm zni-a{&^+Jjz|=8;Cp)ix`>P%n`c&}_9(RE=8*?z(-?F+d>&BCAe}OJqZP>-74K2*4 zu%A83K1)LO}`?q7CIm0Y!Tso~MQ8gXE-W1%!{oZZ*Lg`*y zid8Aq)<7*dXw=un!hZ~MD`w2=T&tPb)QPrbUYk{mQjZS}L@&XZi2(lqKkLIy#Y0QT z+xlIkwT2Aoh$KlbJPtjY$_=E0^hePBqN3u&G)4PN;5N2HK&2lW{D0wK@4%XC8(~@)Jr^EOaX52D?EO8?x#5^zzz-Tf( z*DHx}Shw+>$IQc7=3vhrKT5mX@A-Ds8JBK%JD5QIhm} zjZH1BaM^tgIV}i1u;bvV4XJ(th)Fp69b#sdxwOd|h&Y_%bLh0z)IoR$OvL)~QJGCt z96}IVEjI{yUi_tJ^XGT_YjX<+y2|F%`7Vv3{{RplOGBlmtwmK*qSHxcY~c8gm8l~M zDoT>9sDY9}!9RU@n!gQ~Rd$EzZy^$md&dAYwtAW7rj*{f+tQeI`ILEd^3YCO4>sc5 z3ioUfo!Iy1I>TGx`s{EGa6deHr)}WSN#)C*vTeBf*%`*(hh{>PDelQ}+OzG17LY$N zX_KAGNcUGCW2>#W3x}Gy08ZU~Pen_vjZ>w7fz0#oAG+uHQq?+Jl3a2536Qd|{FNog z)K4e4p~8>o0Q+mwQ>GZ$fg`5g$sEv5ns{&5-3;_q*p8-Jktw){B$&u?#I^jv=VC}4 zv|a{=X^>9jIGi+|yYgO} zg;Aqi8#mHq)17W7%ugcN$?upQ5;d-t+p^Iyn+B@wMfw#sLZ^pNCN)))4`5MYQNonc zU2R3gC1cp69|u-id_!>9H*5eo!XwL}uIoF&-W4|-3XOI-)};ACk+^Xmk_(ER2IJ}N zy;`&DHK{ihyBX_xxo*_5xecvpZO0)+Z73;H6q2P4yo98voaaetaO+$5)3~O=PN5HL z+qXD*GxP6`ig6oZb85<##rl}i(${6iHy_SQk!P06&d=Qu*uBhzklLJIB^yTof9m(w zuyjrvnfi5JNsn}DoJQT$+LhI6?M`DfYt_c;u_VKzU>N)Tgo zTb_>FacdC^X~8ND1g1t)!huOq9N|Q3&DPk({ z^}57iz+`;CFs_?EcS#s%Q!JjOORvtUwpzC>n$zwA+wI`tD^m@;03K3Rf;Hwilen4l z+*{}X%beEYJLI)`D>rcG{{T+e((*6~c0D9vKU67orV$N_gf|lGhZMuFFydT-+vx>G z3zCw1Ay_!>r8qbQ;ts^ZgSgLv5wG6)MDqJX&rOr6^2?J80a5p-RJwBLmx8j{##psaB+N4G}trAt!Ul zC$+C}T4{l#43`jM4>cXVXW#0TL1DR&s!=Pu)ojkRom7~U5MAsNml6Wjw77QRKw#@f z3^q>>CR$ndg+ZjZ+htwP47n9p)}4B`(}5kw`B7POx`Ag^US_pfYM}|q6JV;HDM9tK zA|iuirNES_AgJy^1f^gRoPq}XT9#MrnhhX;4D1L$pMGO?%DuI#X74+})i4HP6BELew_4iVPl6=7F5_JHYOsvFQ=(_XRSl(@e^q#DeWY48guLgaQg4 zZ*oe|Jm3+YHQar3N`sjsG>j4Vy^dh61-&V*8~`pG>f8SSuQg-R-ls;Zn|YNo!^JK= z0x})%1f>IWthc+=65ev1-0kBh8sn10Q$Yoh!si0PsplG$a#%IeNi5`E!YT4k}B|Gvf;xoDdcQ%LxPm35(x*44J&BX zs9*w5NXS+`o9TdDFzgO;dnC<9w^5j?O|fg#t91t>2V>5T(iKi^<^EQr$x?zFBl?DN zo-#SoIMQP^)Tq{gV1iDl>elXmUaPS~;p@uBEFclQfCpna`2tbyZk}~|sTsB++O(Q_ zR+99U)2a)0Qk0B@A=xh$f=?$YX&X)lt6A*$y@MWH`pGxfj;TTh_KTzN72gGzcrC;c-qXz-j=Xq53K#rIxAt*JpyfPhq#RagNPz`#}1q8rMmvcEoxTC{4?zO=`Y| zZR(^(R3E0Y;ZRDYqYpbRhZK#fE)-)qP65_h9}wJJz1}1^79BwB=>FY<2;~#rRh2kR zvvjqsAnK4?_nJMoAMREY^f}RI$xS^>R*@9qS|hEn^i`h?JkefKPI5j*u~Xs{sxWJo zA9y~6Bdi|Uhr%JiZ;>O_LaXx}mcfZ8nz(~`%g>;rl$vJ7YNFf>gDCl{q*k^w#Gxi^)0(BX!6(uMG_@iTbT+ zHCPm7E)1Ehw>+qzFyn|)`$caB(pX@E zHZAJ4KIYI{Xm$vYXK>^(sx-+74|C3Q;>$6q1qv{{ZT>+o52}?sHs8 zBYws4qJ{yY^@MB(`__C*{|ww#Q#6 zZNDW`?COO*zS3M_FeNhXRpG#(@IpWb^6m5P2E6h3LgogFtaqp*(`j8-d|f~~Uqpe} zk9k%D7nK?MWSY#m%|oO`X%d3mdAAnp4ySWv2tv0hN0jWqAw!S`4!GvRqh2XBq|_!h zI3s=ebDg1e9mFXXc&=~_iNOX(FMi6piPuYJr1ZAx)R|P6B_XyYhZ7<~0a@Ci7y-Bd z2Jn?-IpZTb?Nsp^&^={_%gJsv0(AOt zQp86XeYV_M@HQQa3JDp>R&sTD_-?C&m$k0vAeifsx()b&fWv8*HwgulBN9gCy~r6Lc2R^kRhZg}lovelu(Byz^-)LKb+~r6(aL>~(3b z-9Qo~?cH-}+tqUmn$lV@Pea`?P#&oz*B9cf|R2q0^thB zu+FaH1=d!gtG@I02X9l<_QKJ@Y}CYrEV!vtsO z#5w~UdBd{jM>$f8g|SMfu8{_{M5@^mD&y&?kZDt-RO3pQw{S@e;nXcT8Ctyuo!RrO z6u6DU%iT(&YKG*OG&RA#_>RLp7OK1^*y-_T0OOA&kv;Z^>V4I1dUTfVqr|CIqD!4# zew-UbmY!_)TuRlnyB#f+?n+m|94j8IV_uJjd{1pv&8JbVV0SQZJ33+~Xy=6IUatI`4r1<*fXm27&h%rTy|~+QYsVw01Sep8IEmj3S}}^yJKrh%GwaD5Rgy5 z7hiGKP;08vX*BgTYIocj&XKtVyvH=QJPEb5)2&c=fu!kdYVE1rLFAc@@pUw~hN$Wt zjTIzHg(ajkvJiV~N|k`Ez=AS;_0VSxwQwe$?%0DPIoqP*)V;fFgKF&E!5urRCMDNz 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 z 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�WbS-d_NL}!w(bU>0yEHWx3%`R_ z?@Cf}QFZ5Lzg?PRB#s5J#B>L+CRjn~6+wjf-r1P->3rngv*P{ez}XtE6O#RIun9dq zvD7-egzNjhp0%BdRU-?}w@Ar3g=Ez3(>lW^7((orq>Qs)#R|c{(&h#yDrJRU$0BA; zuaHv_Au;(waj_%c!f+rxWD7f={BU0WEKxYOEfNsDSv@U(zRbGYq&6C~Kf=Z_SXE)H}VaQC*+fXI0WR5-Y>*4&RZWft&yh8c0)%7t~DvmwEHLRjFd z;y`t(vAd?$2e9*R#-EFS-_Vwdt0rwXwmbe1Wg4=0kNz(s(64Cus^0Gb4PuoGGOCc7 z&l}!XEp0fZ!7-#dA%jM2R#htJ8~!P^fh8M`fYO`U@wq$o0*?8@PLndW_Y&CH@UsdT zbpSvNKz*>S{kiS)ASVT#4*K(SYm_ozt<2wLny&SFIQ*sr6ba;UnNP4Aw0K%Ls<$8> z@~@sINkp{wNjkuo*t_ox)iJ5bR;M7#%(e^Me`<0uY)Z%k z290+Ja(IsztB>~H&Uv4yMOc!hPT7o0m-+L(fkN`S4QY_VoN(-Z-pWR~u#8fx*pHHI zCa*7cDVUpU^TvQ7@SFW&e#1?_)T9nW^J)irA2wO=Ed_ZBg-piL%tG`L$dsN{BIw|br?Ket^!?CEi|iESs- z>g^i|L75>Y@7rp^CbW>R2RFRJirU*b`99LNd=G%)Wi%ew-E$_$LOC=u(ov`(j2K}f zA@QR*+EW)slD;n=@Q6MRIbJI3T zO7UZTy)(OVjkY;2{nDQ;>6tA%4Gp;LBb|RyA3*PrRa_2`otFo#Fi79&=`h*FS-ENR z$CnT_**o8@owGRi(d){s5uAi79To`MxRjdHhllOElOzySGe_YKOn--+y*_ zZs7wQvqW1_rhv}?=h8b(sh3cn{g_NQi&8M|N)m$yEslfADVWIf5+8ZloOSq{IYfAs zgs+zW5lxFwXx0lHkbn)#NDC){OwP{Np~<68-WF=kkU%wH>EB{Tx|JjymDE?Q#v}c9 zO7AxW#FNJcO5SaTcK@y`Pe}9{C|BW5d$dMdg$*U1`#ioLRqo1wu>hyyr~I@rImoJ2 zeeenVMB`z`knMKE6#gE*U;zn4q82||WKiAL7ZaH3`+E5zvG_Lt$YPYV zx`sXSCJ>lqk;k>_Yf8Me?>P*!AvXhP>JjmP-oa%q<=8)4s{dTP4rPDz&zclEittQ8 z82W*wm6Z%;LdIXH3%0_UADzU;Puaa3)7EZKX$so%8Wb)OkWiZZmXO76(rO31JREh9zOpx!io^Bo2qzgQBald@BfW&InelO7MDp2 z3z3^`hW@Rxti`q zc_W+{aw<}K2N&DRZ(SK!VAyC9bh)m^)y-R?k>T|`c(3oEeu2EFEZrS$2Uw-Y`#Iea znvXc^>rXt9oX^y^Fp}Ogk*f9bx*u2rE^~wm49%l}RuZ;%8zlHOK1+N6B$)um;$wXH zaubqn{n2Imhc_CRqjb?G@%74p0sNu_M*vEBt~&N!3>M}oh9gnUOlS$uIOwG%ey(#M}_AI)~?6e^mz_~OU2J&h#YXzhfF}V0bzYlDP96s8SZ-8U zwLgC*_7ytCY*U9v+=-VnKbI+)?-^mZ7;C+#NbW+VJ(Q0q@0nn))F|}e{VL(3(K)neT4TdOB_T$cZsPwR<8HL9%;Tn5}|1>qD?b&j_2Ns z8;>(9tv$IF#B5KfAREUg>d#oBddt1C04)1S+6O-y`^)Q>hiHSJI{i_f$eDwSDKe&$ zi>mzSdL>UsBA25)uY`Cs4tJ2Z)8zI3&JaHr^I-5(mkIIw772E>N1V1UBCm*%41mbR zwXue3xbov00?G|0BSDl-=eb6VHnjJ2ZSXAvBWr$2*WA;De%U*cZZ_!>jCC?&fODGm zSxS|rF?~!8rzTji>8J!Il)}O*$gJv%-a4wvJRo^Um>SB!ifu;uWk&3wvspmln6zSn zSL>OnuLE$8N-GBJORgKh6R}VH+KE*{Nin;NiTfqc@Cuo}HMThs^FdU>ox_%1!$KMf z=ZjM0Y|{|}35O*IinLF2(Aob==xI9uAmVHDhu`R|f&|L27^E@os?tW!Ik z!yzZqfL;XYYMA&&xO0{fZ$x|JUku6jag`YpYY#OdWqXZM7LUIAoQ!AGj0<+kB_OtKs!@(r4(8i0l)PD@9NsVicWRyvBfl<;}0SR!~8K2+0h zk*I@wW-Ubcx3Xy&Wtasn>C?HnAE)YRB$8xc+Wd7|alWZe=t`T6myEr@(7Ub5eL>}- z7kA90?F9swU{0Jlij`V9>eKh$I{YZrXTgbYLjx~kvq06}t#t!D5(BkT&)9%koY3A2 ziwZ{1>-W9g$|P;$vI?)UxGSTGye$wDpkG50;AF71=h+i04UY~xFO7;y;aet;Y|X+i zS%~+PeaaB2haZnjG(4yyE9QM*hq7IDHYB`*Haz0f#YX8i?c9W;FWU`=_WKzNOPTM^ zV1n{C|NcFj2Sn9+0ktIF-y_uV z5z#Q2dFI!&;gxxnQt3v9*2fJ~b18UEl#@OncV~p^q;>0-wCC!dbjjhJny4@)-5e9} z8gxIl?bDc~HquU9Wb%G$YeG(N%jq%qi? zw~q#sGQm>L3eB@t2-|0ohHe=+?-4;0!}M@U9u`G<5+SXgRyseueo%w~u^2gt!McgEi3tWyq-?6oa3w7Ve%?3P9|jk1atl@aNl!_< zt1$B>r`&+Lz@R`DexaVZ!R4?`Un0g}LZa`~)RQ}9N9(fhXO?=g2q}^3??Gq-i^Jl4 z36^28SQa$fTp0fk;_Hi{Xtx#c8D)j;h*B!d1h1E_pG9I?BV`emqRjPx6vgF7ZB}^b zclI3t`_A#aI%V+&Ck^>x0k}SpY3lNo-eF37U=6deP4T^n{#Gs_h2jdfKMV1bj^CD7 zy47*l>)?mH;S;tdH3#0m$BLfX2qt!!|5Q+CqXPzdXy%Uyc2)HLwlqtcbpk;85lGkq z7heoVPFTS3)xP{5lCVM6V1L%OT$a*az38Ix<_}GK@MmR+%}@F_a*-&O93AGcro6$N zRy&DmR{a(zjTk_khU;kmp3FDy(Z3|K3-gzmLsezb!iw62-CIkVBMih0Oh}D zHc`4U^{ELngJ$S0jQNbeL_1$sUV`A1R z%%Bgjqvc@%du{;Qa0qyLFQiK>WNimmKY<+~IlKvG28{HIduJ-7x`j(9)TZlxg3&qr z=}`_%ssWFYqj1N&)`&q0*aON>HNTRR{|Mts)JWnLp)lbdVzc3E^BPFH1$TBMf&6!T zcN-ynm`HVjzjJlJ_foQ%=5arUe!`IFFX(^SBqrz{RO2q>AHxKlQylzRgfAB)wf_fj zghItMR0CBJ9Ro_$HcxX=vzLc|Lq2byK&(0d4V*@>`t^|HpwmjVg!jJe#VT{H)#Ddq zPsa$y`c28HogX*CfI*T_>QGNzh^ZNGh%l@VNpk)SR>A80ayJJFY2|a%Xf*Z0lZmp0 zW2iox^RdYs5LXU>x>GA*bqw|5-U8p2ru1qtX3$h4m$i|k>cA35LMK-x)m)}qErE&# z$Ishp%mmX0O%b1#6h6#LVY??YE9416z}yYpT5@+^H7jI3?pHWll9wpEf%4kzTB)0Q z(yfdAJ+#!Su-5#K8=9ssRuN8f#Rn6$$4dba`DbcF^0|G7+{b|X59ajdWpnzo4z-!! zNIrb_7JToVu6{OXHg#r(+4v6)>lTiewOCJPUxy={g-JYZ#mtyRgU`Jt zdFQ@YMV1u29#ofEx<%weKr+LUPM_w(yoS!5hdTTn2IJ@sUP8k5!ZZRTIwjBh#BOiO#9a4PiOd>53kD`QQDBGj zMKA4R$KQjQpPMURdVnYISuhE<@Wp$yJ@3vl+J59OmH$RIWr$m07emfgT)|R;01t~x>8)PT8 zdAlmX$6P8{ipb&B_^gj;P0MBhDoSmEL5gdg-^f1%iK*6X{K-!X6t`obg)g@=SN^S{rg>vQU_iUjQ33zE$gRiJ3He<(Y>?asik%ck*% zMuxT40lnSJtO4>01#EYfMyQkq^<15T+WFoBxKe!fSXz6w&p+JSsk3w@8YwBImTse! zQcQSwPa`^)6Qv}-nv}$xFUCRc|N4hl{w>}`yGB<4u6}-wV1SG7XG6J{V#o;9fJ#U z%ZP0E7PT+zil)Edhn!bmH!s;W?o<->euZbmV`n42+1U9{3UvB+kwsJ9Bg=KK6;Zc> zVEi`eRt^ssSaLvJhtP-*!cmC{8hBuwb)`z;N3@jb^?65?1ik400G&^CO7esJ!hBuB zTQuaAzo!a{)cNRE736{!eCvJ0`n4mZ+2w=?WeT3l&pf} ze}H$tu0k@?(LX^C($K7f%GmN%o-BdmC(j9VH+-ya|>YwG0vZ zgfXKEV?^MaBrUF+wY#J~!1kll7m;Egh1dAUf7Ye6s=?)nnwZ=aTJ}bU2s9ik%m_x6 zk>*_3q%p6yePDP0qY&%^N3B6>TfU;b;49f38W%EhP^#CSZVNJl&Di|2mEIvU zwrn&h0e;apmH|Dmm=C|%8iRLFMy~ZJ35PH;yrrnB<~{`g-l*Ov=YG zi540mnffMKq-Bz`j_iRrNzli z56WjngAP!xPUI@o2EtwC1C0&Yy4G34qDx11ncpVcu&ui7fkPC$= zm8RRB%49`btjCO;sIF_YkkGWtEwI9^gdZYOEx<}A)UwSXi1W=^&i^6ep)tm7O9qqt zaD~$Sq41l1tyP=IVc>;QgQM#U^;>B_Z&%i{JHhWx4Tq}aZT#s}*ZDR_rfrXQ6J_7M zV*i?wJYDttqq@^xa%Tp^xlhLvkWXy>&@OJa9USMa=>-$5?gEOv%QOjM-bc)FpfMdE zddiW80PkXP8tuk%-ZP-_m+{7zU!g~nEtK{}>H{X4H|5nugF3(U@8KE3O+l-`3b>6k z>mkF26{Tn+R}#XQjQ#B-Z(`aPd9Y4wFNS(<`$uu0W?GxwsMhKYlB3gXnRHXZ)@DO_^hqtQb{y zR)yX*ov}q{e&SGkX8J_mV)Xq~QtVV-9~l`}m&<8m7my4fq1~PLGiMxy!C59-$CNR@ zVB5~d(C`v}ki3PMCI`de*wdJKDFJ>{UafOH4DOx)a*-aN@riP}i76b6y)sRHR^>V6dqld|IcYGay58CnPo!U>J>?HJ7lRgo;dTZeLvUhG#9 zg9ds63=34N0Yo7A0y9j9=r>^FAA?HH=i)+OD8=Cv6AX@kwuU%G%^4eO|K7HHjy5%} zH%&{CcxKn7h1V50?%S(9bILaAcGwxTsZ;<~rNe^)+MRw0p#Y~t!oIIyDsFY`C73J} zuCs@Fuz(ouM>g{Tjx__B6YeMUp1RY|1?ad-pXfuXI5r51~9RN?h?;k-z5ehKY??)q)<3+0?m9_AH7V`BEZ_WD@P zxIH}^26i^@CPYSgji@{5A0Yz_CNDdHxk^yriEa06lOn>g=!~cQ8MQM2JAQ``!J+rg#m8kj8ckR z_4yeBb#k;;N|fB;Kd_-{xVqaOkW-yN6@0&9<4U5htTd|(?DU8MDZx1r;Vf?)bzJ1% z`C;q_nYsz}lU~yxPy{F7O7lhcCP{h91>zOAnaoqNoog_S(XnY=KNaeO%WGkZRjRNIR%r5|+Pfgi}W&oZwQ=8>^ombv8(tB+#-Gek|s%S!z;Ay7kqM@ci>cerHNI z(VI7xONFXJud4z0$>lEtD$)Awpn^T3B4E{iU~;dEJG;LoJdakt?w&{sKWz0r9;x zqorGqL_X7c0n62u+K{26DLax`ElyZE&XO^H-i)!%iuf9b!Q=2~2J!P>Hyf@6)+>$j z@1j6zN3~)M6|aP20_gOM#bMich8Ibp@Gu&z`18 zaeaTOfQvljeCd9Gm#)k#`44crGqo)rF9RPEqSH(~7eVQ3V$Dhlpj26rnk(;QrL)wi zgP~5W!w{EVmaxh{23#VBDO^y!U$CQd-_0=Qi8`_Y*|081yW>k2i)6SZ?mxiBc;+2v zW<8sM0VzEM*(vDuVD=wkjxx>6bv&VbIg|V-82)${yJNwF%XSMi*$kcQm!w?By}`9% z@pLAdlwvNEG7b0O6dXHlUfhck~m3$AbxP-^c?c1z5(n>Ps2At^vftQGc8;m;Sj$TR7VHN|;Cr zCl#Np+4dynIJGHLVd7N^1Y{&v&8sd=VNqtKER&w{j_S!)L)Wn%Hco;FJvv$E7ab4m z0YOxT@v%1bgY~)r>Bm=ct&**3>gc$f4ORyWf^ij>!F2<*902MFE$PfR^1=O6Ka(cX znVWVh&ik|K&lnR!e+>Nu!$+iv&bj`{^kbjUd_UdIKxXL@c3KQS@(D^JZM*>(iU_ts0Q%T;&-bdo)P#C;Q=Ii*o%T9FHHc050M?i@(yQF$#M+1A zj1sJlLLKz6Eq@EA^vB4F>ehXd2aycJ=RQ~1mSnLqG>^vELa=Tuy^%QA3&kX&7@YcD zlFDFOZ^3gNiTKyl0W~^WimVtB&kowD=AfxJ`<_NUhX<7#^o!W1)Mm)(3ecW$qbTVz z?vpo?2+kltg%X)`gQ|JySUE9Bo&-32!2(2+IVuJs>13?t(vSf4V-2QZk%^_jez?Dp zcPiLti8SiaADq>Ch4=%x$k^cfNb+x$t(G^_^_O8yXS#$M%~84DWB7?As%5e>>4|h$ zW&{Q*6m;6du^u{>ge^3=6g5R)2S?oO(*e*9v6FJR*&PGf&l1kam7F9kDVkn~W-v4^ z$fU_;8D`)Ja>1|Qd<>hl*iNNmv7Bk*LUkeQr8}385&Nco9Z8L48;tC}?uo|+R^Hrf zOZ5zBL(8{T;Z6${haVi~u%4IIEc3EM8k^oK>-mWM2e7MbKr2<5KF!uiM0m8~+lu}4 z^ypYEjCJ~;Lt9P$Ci?JNsFw&!J1XObT%WbD_fOol;3}99qhIHhP0Ir%+Q=c~%tsGP zz}$jgI1^H(e3?E(vJ7oy-bxW^b+;ZJG54)`($xI?DFUp~sDl^fx=BjY3B#d&^-&ag zf7cbQ!4hn94`3UW;*@U;~#UCr?D#1!I{ z=K~0XDPbys1;dxX9O8fecKh4G6E2f}EI3=SPY*rbIKLLBGWA6MHm<#Kd+^Jt>>Nu* z^u~vVBJyV0?QvD7eL%jz^BR}fze}tUK~mDYv4<0Q0PC!c)k6Y3DCXpEV@QdQBP_*8 zu9Hp+W0{*RrU5p{4CKc)FW|%H&=#86r{-A}aiKW&k^Ts#HhwJmQkG%Pd?aZaCrVQ+ zrfy$nNR;)_=E|K5qsVt|L$^NusT0MpUWDcgGrQ=q6%7d++%bX>mB?#?T>@ZCAK+{c_p2~IVPPNgikC&;$QggDYv^6 z3&&cj^=8bckEDNLr3Dls;bS@0X#?Y7_Z#w_r#2`EqaVxNKSgS-1id~ynIt!E-UAtc zd?Iu6g>qcnu-#w$Bs0IQ9e&Zzxkw*XTu(_yU`uuy>2j1ZsAU?>)X?z&+^erW`=th4 zW4kUee#Sp#QyUIu#v3a7g_f5}n9O=@ZZ!1pR4BbqP|M!GI4rh~RLILRy&oVrz0_(G z(>2yJSM`cm{ldXXMC-=?o3Jnqd2}8IgI|&~(le0F-si$;;&(#pFi{nLQ5f~Pa5EcOF<6bjW6q2K(2dNQ3zhHDVXZGz*@C?hj+h)z zlI9cAG_8|70qT6Oe){xzAYZ$RN2TvGUR=B)-b;?gf1pR@?y|JMq>1dRiiBDzGcM|; z+Bj9(8vTUE9%*39ipGUr$;n}IUa)owoFVlI2tp0@3fWX*#ieC!aQg<47V)v_l=Yl; zS8QUKEXlpiG!Yy=Xh*fgWxV!e6#|rakiFr4b%RA2r!qDYt0~~}eOr@ax})ib&n~0; zz~QLL$~D&O8VE|kCl#}(8|K^?thl-aphC)F1sucB0O|UW$kneQN80^4X{C& z8FNX}x11U`f>4o6sPuS-$Bb_QovquFgd%FRo4jRH;x%}yU@qwX0*JfKQ|yburi`Kh zYF?%5SL*Xx?6aqwUmg5vYdu&=kpS+4BeM2tE?7>?>~+1<4g2LA(C2b;RuI-%$$eicq@Ng+U*j|MU87|PCBnMw zCSS)rL7=@9Vf=Kx%BnUpxuuBNfe`ZtylORk_(wd-2+CTCk6STQX`MnJLS=qmK<$Jwj@lkm|eM( z;iVfZ6}p8TdXiEy*RXU+Pxo>3v`$Z7OFC*(()(67!p;u-R{3eg?Li+uT4 zh&oDRjrT|R;rOP78nza4HHJ_D8LDd;WNDVBW%Fr$lKY)7HQQ3diLfkV)u9s;{0!zT zP$nh_%(v|oGg49F$NlhuZrf-44pyL6F{}mia_x3N8@H_|;l$&dXTjkBveL zR%eh(0XPWv=g46y(OOhT$<)9LbZTxs~~cF!<8LoW5Eo0D_-a>xbnBSnFrJB;krNaa1St6ll&%a)2%IlKz0Yh;z{@ zF&l}zIeww)6BrJ}8AjvhLS>Rt{R7+(emeQjP6P5`8nv z7GAuh8Qb!fJ6W!HOD-6!(w@?Qj-p64SNsRSapzqSP3L-zYoZyqeUu+c7OX;u5n!-} z$?p>e0|yW@*H!KwZlc;_G0SDHd)F9IYwF%$=$FyYN=1QMRN;)gO$0n-)We9WsY6- zm($2+?9j$!s-@r>#A~yFX(mS#3JUYUp zqxa5B`61{{mr2*MNYM|m3`s%K+>7sg?2au;0=xpEa|Qopy2h~SKPaKL9i}V6fDVFN zkrGd(@1XiWe6g>{cXGxBU(uDCS+*;AVC-c0`uS{V+r7&Lj(%EGYE~>2M*AG&-|yN~ zS>#tSI4lI;Rey;hj2f60^ro`Y@Ad9dj17GKd%Nf)M6P+PcQ}Gpt8v<( z8reQ`W#!umG-)lD85OGXz%lqW&1v8Ql?wSXbaFiKM(**|&jh#QsUJULe|it%cRFJq zaaA&;Iz80TJnF}ObG7M`pSwTulJrMJ&L|!qG?-H3(FSAbBznm9EpiC1{Q}y%Tr2Oa zyd*H%q){TWwx^K)t0u~5GMcCX=3BJ%vb+;?L+DkDb!(HVN$1ML9~9VKcNZ^&vXq$hPtbgtcxD{Qoz~$&K+G&HwL#D$TFX~BPMbK z47@|t<-(djzShDIPNRriaWi8re| zK2F(P53Hxm9#Q!G=+EZMc;&BaJ>y{>cr(Y7xhhHxP(9lE=dteYRHjoH+TLgI`G{zm zd(^@EQNhHb(xJ?!?O6%+e@Rasq8biOY`5#*o3fszc~}Nqd*S)_HsmlBPsfmLsj)xZ zPN<06Yytq-BvB>u8}j4Lq>b-W{!R>L@J%+xGyenEc)y8t+o;G|Tf%x6guO!7sIcGc z3o0HGXG+>tFLMJ3?$Wr2wecLel_hRBIr-O1gO`=xj9OfcTXZNWRdHMZXNDAHqIwZDHRl}MjA@D&8MAw#4qZtFxxmha+v-r%PTBF`P zxiOzA>;>2IAKqs>Xz(c%FhgUm{x@AUQ}c>fi%H&)6db6l|B`%ozbMUqi2oPg7jy@6 zZ^E}#j#$(e&fwyxPunlQl}v6ZmX8GB<}LBteBTZBUw;4nMd9zOg{AVQ5^ehDK4bPq zNPKU>l#?ds%)@I=zw12R5_gg_qvjf;*`mO_jofzg9I;caH`{8LY?mzWDOXY_0?Q=l z9mSS4N5Lc=Ned9GNySAp1;VbV=iy^*koJ8$Mg(!jK&M%Q`=aBeY3DXjJfBm~`B`!m zVH|%#v90eay_YX4xNU&n-OYCn>rD4$G~ReM0XKTQ2tL@ZSll9_Kh)bq6c6vVpom|Z zvu}@woZYu69}en%`r1)XHozv*ivK@=vZe04>roIeETtnX39l{w7{epzUii%hNav>( z_=x@uE}H7(#%rxL*;PZ%qXVTUKh0VEZ8FTS8((7ggVN3uMYiEe%CURv29`_U(4DvV z@f#*a@t&%A7}(0CzaKSDyAL$j-GwI<7&zMop4l!RQ5p7k$Ds#`ol=C@Pj)$+@6#XK^3$;TStzE72RB*cHSOjNdIojVS*iPy#@_?|`F z2v?J>Cy4uU<(hU%Nifj~2;~?52k>YJt#`KW;}sGM;o{+}p!)n-i5ycI;LEsv4r2yw zjI`R$oaJV)6L^ZRB=2g8SVi==Pz=+8+mLD4s(EBT>9GuyWjwb`BX|u^%P6v6%roih z1+kJ^tVmwDe11?LR=Ay2{&*W*A;g1yzOia?nVx2fygw6bJ-IqIqUMOPW{P;oQY+f!CoW7&4XdvWyp4-Y_MjxLCxyPJb%R7bP7p&YX zhzfrL!g0BOJ$|VQyTRdg3(b60IXPrfFB5{1vp9!k!FPHZY!H;+P2xH*ms08kxASl( zmZ@9oe2=x=*H^a?eu$X16}LM*ch{kZvm8@08yM>A#-(m-A(1H;8dDpL0R|SmCgY+( z`1|wf{dD7xVVc*Xy&UzCj}nX5ET(NV!PCZUdLQ6y&>Yfq@-~|g{8vcj=FL{$2lC&= z@j{sVmEGBVk@8bPdmE#qD0j_QI#vR5-!R&S{7{NFFgf6hFw^Tpf9)h9RoqKptR!C& zGm51AsQ^yDcdMf%9{w$li}C$zC6bP_u4}&J+&zzX!Rr+#fTAb~RMwssX&d*dsx;GS zrF|V-^koN)29M2BR?H84E3qw*6}Bp06U5E!9!X za+<*X>im@Yn{u=({xOjb=`ho0eUqJn;p4&HA{CoRp8vUzUry{$5weJ`gs_*d0;S*w zd6mKzn_hLK=bURnHDn+vH&tc_z{COeE&8F%JH1l~;)dLsF?*PjuVNsOMGQ~MJ`y+? zE6k#pS*%*yGHWHMnUlqoOQam6#T!9%LqqfSEk(3KQs6dfKn=zyDLKU)R7QjIlw**+ zh0Ym0^g?U~IaH6+r|`d(F>AZ3&V|L*(dZBEj)hx~CScJBA6`!=98mk`Z;?Ga%#A>lnp#?b$VEwbGbC{UHVcJ9 zQ5uDPw-LVxv$EnIKvCVEbfkE%Ub!NI2Qeghe=A0rU>%;Kk9HbvwiGwEX zDv4>)l9HIgDY{`&BLCOyk7Z};ov>8qD8lqnK^oZ^HlmQcsq4luSQ|)sWy>hi+iali zV=eS}k=8#Id4w)EK2E9f5SsX5rM4yu$cph;K)cQ|ci%#&5+w|S?Mjsr|DTU*l_JKK z*v5sy@UW@Fpma1(BV&IvRLp3uy`aOclqVP_&5-GPztJZkNseWd)g zZmbl@x3{$MFsutWi0VFQua7xE`IeA0(x+~zX&aK>aF$J+XaEwsQ@hjn>QF*bCKeWBI@E7_UuooyUVbL5yxmHpD5hVqXc zY6}xW+~9-XrB9wlUy|-#a`3y%uqY$80h@j->7}RMPrn5Z++Ap`+OQrus1;l{(Tg;i zAw59^livggXMZtv9fydHYRa29ASswl7nTDz4|~_5MB(f zn7v}&!&8}*FVm2c*f-SkobSL8atpz+|J}2qmu)vO`Dju(f&~~r><8wbz8aV2@15LC zD8#W(_Y0vLF^09m%U2gW$ z;A#Vqnz+c$?i6kjGUBI1cl>SVrW6}uc&Bq?t}KD)rTa0BQ{4s!s^tbbwQ_FT^L(0) zz7Ow3+VWwvNw&o+zN7#St^qOlCv_S8%tyLcuXKTc;^?S@YVx8N3Sr&BHJ|9eeaUB) z1{||*H};kVZG7lLL_`Hub(Xr)gxO(*Q}4rNCq_u$&;dJEh6n_*WM$>#beIAHlu)V# z!GwZ^FgB-jW!vH^mN64XwD1JNI4As)V+St4O3KT~-PgWsD(>%GTT3023H@X0ZMUTT zh-@}-?){r3e9u=ZqEGW*arq6mTsL;Zx3BDQGY??OL3#_ui@IkRRaYmo==a(3tuL#> zka@z>&nexHOx*`YVo!cb3@~{e*;@RvTe%qQZdT|Zhp ztWIdCC|pYX*?V8a`(B(V4~K5cWPt^%c~Xbf*&XSJPt&zLL+Uf3voHydCt)d9QK@PD z5dd6{ZP@`wZZ#Uzt8Q7bXm)MTNz5{+V7iSu9T=$HHTi~bvHrT5L7|>6*IfGE{nNc+ znn6V5eD5?rTm49I5lM>!ukJd7_u0EKwL3<399Aml zq;g%Ag8yFoPRa1Ld&V}YLt6BNi*C6N&gK`a05+9M>i0pqiaK-mp52rLc0AeT2_u1h zw&t&CzHHx^Q*6zr+h#rfqEDmX^Z^-JLN+UbPXz}^>i)ZDA?a}OYsfo$hFu% z$HsWBxb@TqHW@Qqi=B@;ZzbkeRPWqtU#g6xx)qD0y{(R8%{zB>gOY!sd#nsy4mkX? z5;K#@>q4eThiLv?Nga&-ig1)*!Y0=e%f79hM79JDDwRGCXrq&qW=v2ik3d*@vIVjI zB|QC`TdH*;`P~E#F>H~LA-11|cc(N~WzLB8s4$pXC}wO52$=o+VC94y-=AZwl@5r~ z+H#gHFgE#y3~pS~%BNap`UNFzcu-|Y zt;C%s{UMEp4;j4f+#`a>g(z7W1combzRz|lCYX_6)AixK=M^$hLdtYU<}9Ky&W3hM z5h)g2&78`7%M!RZs7IK#)A_R)?nU1!dm)LguQJuWOua}%7cxybz8$NH0bL8WVR~5a zZfpembX7$1vvIqZ2D$OU&Cj+tN18`PmID z<$k2n)$VRy+boF)w#kO5donhUOUen2OGvJq`&>G1Ni&LAXwbS2P3+R?yAR7+zAE?Y zNWjZc-o!mIr&8~oDX)@+$R@DVD2TdKfK z@fn|{*RPU#$O$;=+}m!da;;E7v9ZQ=l>d}qBk`&aNGA=kY_{wb)L^x3zvuODu{Vay zlaj5q!p<6@;xZb=6cC;#&)&YD+rqLBapss$T(jH!wNIbA_Al{H3c3HejZRz12iP4r zL+=m`@-iln@7YmquDGOqm@bZ)p^YXIZi$Jtw^8cJW19tSSHm4`oSdCzkge4gd@aL{ zECN&IWTRA%wzgg|+ll8ttbyY1& z>N&=l)nM{1dvJMd9t{GHID6Rov>x6cYWk_0Je|r|XE>F+Lf44TLMIVGjPf$O44p~2 zugSnSxd#n*KB#(owpLY}T8IPc`)R-^&PR$aEYmKf^UAck8Tl>eeO&^?reE z#4wC{U(TG+zS)z80{zb7DdQh+S8+ClONa@)<;iN6GOn3eezT99n?+7uzRZbuXjcYAbu?50#CMRLGT8lV}$I>54vj{q8_K5tOp%g^+!js9d^EI ziydrfXTZB^C5mp~PdKDR2K=RUu*o?(r_%)#zdqZyO#)14zUpU!hJjcM#g1V5xU&u$ zam=c9UjCcf5M=cuGNa4^wodx@7^r^FL7${7P3Jd?KSm8SQ}8?2;SM7`fQdIyqJRslwbdk@&;%GhlGH@-bm_*X1@W*r+>+!tD$d|Nv4$9T1;*@{B@kuZTJt6$#s<5of!m$NWrYF zq!|6FV2`nqwt;{r;coILAV`3eL^Q^-PMsg%n?4Hgd!ij|bDEx7gATeaKw{PSu$BECx2}WiV6$y#qfge>%$;Q6MBZSPEV+m-iy%1&I7wQ?7jLetMN)`1RTmn zYd4W5c>Y*IwABwl330=%k8rAC31kf2k)6gCt+7&b8J!@O8cBW$9F?_ZSId z*Sy(|!L|IMNH5`I)LRj#q;XHFw@x2~Ib zW=M%NW6D16#`pB3&(V7p(ozp6+X~vyA}qS0g+RdCsUCM*neO+oCNb5VcQV?hbGciC zw_?~~DRX_0N@}fbol1ukazlQ)hDqx3K$xk2MIPyiAH;}mn?++~FEPgd?h%VBv5M)v z)oGZk1v_Gn7^v{%^9=2`fh<-#&$te*G6}looU_eM%{FQ|7BmJ|M{pr?Vge3cj%#@@ z{|Cs96nf$O1bLsZ083LPLbH9jULx{Ww-eUgaG^>}y>X_i)uciywLk^*Zf*^H2TPicbd& z7rn)@k;kmj>&)}oT310o;I`E3^&cK90@SAF?-cH_6qRBTTXku}DsUDx*5_L0|DPKt8k6#o>i*UJ2w zq^*age@oea0GS!0{D+IdE-lmL*XPqGx7st@7}%>npZ1)A<8z-m=J+cQm1Aa;H1~!%3c0%+<*MA2>+6^! zXSqY_x8J|}fA7!x{dzs0kH_j&xy(?7hmNU(nDUSLR`%#|t=DXgvTNrA)2`I{xw`*i zGKJoVJBjr42w0qz7OY9+0q4~9Jdcl$2Gj-rXtei~fPeaR!&GyO+F_SpIwMdh`G3*eGQw{Y!|oP5L|DlLi=z1JN+_O^9l zFqk5492{>jFuv}hI_pELvN-_g%*2k8rpFL_G@_?XbtHJ8KdxYD{EGq?2xjSmQHuqt zXdV>eV$a9%Rw&wqYmJ6lWEJmi-?Ul!C!P*M{a0lv{`C$=D9d-F@U{yrbfgOc+bCr> zpS|-k_9j#R-p@tdi{_OHRnHzrPRK=iUrP_nYqLSfR6^OO zhjk=B|1T~XG1>=i3OS8dt?@aT9|dymtc@kJ){-iI-gG{IN{g?*M(bB!1Mr z3QIL>2y_H*b&o@!1BRLce8$KQ1$gUD;fWtBLS3ycbyqT`Dc56-?+x7bw!UAurEWVH ziV6HD&qv1u9M9nfj=CrVv`;BUMc_AVH+cE0U6?=WUZ(QZU%?T#T<~%G1##Cr0z&PD zELTjD*2V+9)e$T%X1l3|d-a;{-CnrveU;Z`FSka{iO*K3&X&tMbuX9h>AmzP7EP>}tD)%}rsp?#w7R4Bx}^qYCR<4h^bw00GH8|k8*e3rXN`bE*o3q>C193iD+ z(TV@%Hdpy8yP}LfdF1j;LW^u zX@4`i4f^BmBy!`e=R-DF6buFb6;v2#u-dJeH>CL(fKqrk*>R4;MaU(Y3Fl;&a+ zXsK|X`;dO^dJ4B|Vct+b2{bwDa5R0yvKeEQGrIrX;EgaB*C~DaMxa#xH5F~Q{({)~@SV{|j@6S|SDUV|9Ce@O!G-97v zC59M$N4pqRo~jQq^QOkHblS%$yy`vUm~(jAAUT>uW@PXj36e_94d^ zN!DizA5D~Ch!poEg2?JphQ?wGXA+D2oY|r_5d!$tvB0rv^lMC0;){7lhdE!7q4?$I zf4ErcwLK00lvBB{wFjN{I;9=x*(ZN+$tR zZ?I7gPdALNK6rB~Z#rMGi%%kx=tlgIybSaGvYOpBNx-7 z93eTiC?hBrD2)1<|818;_p5=EVB+R|ML)NO&6(1xtqMx@WiD{r*SftkD8@csEbVJRuup=-N^&qbLS1zK(*5y&ovTq>PUzqRUjv)aC0v^`W ziJm|;y(wYY^c%|_V|BF3T2+uE1GR-L{X9gT_J^p2!oLTL;#0sUN zQ_m4M#ea_xORM|iS09!M41#&k=%p$-*5I|Xj3NtFE;A)dxgbD!X9A;%nhyVF-&PU0 z+r*vIEHRtri9O{fufLUHie$m55V7@xUZpG?=Q1!CK9I*Y#3?peOQCepdyOu)Uz=r!T^u$mpaRp^=fWLsx{$#;)#hW+A9XHT?-2aI*wBaC^TSjX2(=P$} z=M0v7xsAP&pN$nrCLOr)+0)-m9noH_$v|1b{A8w8y)-Y7mHeTh+RUMg_krZJLv8l@ zH2p|#AH%(agG6MjbfzOBKM^bDIYUE&p z2749r&!$aWR#4m%a0+TzhWu)T}OYu=>1Nqg)>Q^SlpkwtIzHK$_==HX0CTC*E+YapIyZz1b zp6${cmXbukE(+rMiO*k>q$56n04jiylxePW#o5(+m>=6{*c2b;n^wzD~N z1T_&F>q|t7=A}Mt10JlGup~CVM6_%#SH*H)Cqxv+HRYD}CQS$<@;f)G=aR7_xTNfg|%q}u0b;uF@B<)&8xPkxlW zL*;6NF*p~odT+W#c8Ih40VBihEJ!l;_x`7i*dzEZflueDX*!Crtdl@sROb_e;%-Q) zZMn4iQ}AC@w2v$>BU2bmh<)LjA=eJ|B6<`@Xyu502-__bf4=KjS48}8i7YS6n5nx!MgS(yc&fXz=*Zjd*gA{v*dQdaQ7())n-i_pH*MGH_uvckCX8poSOiLCK zkcbT0Ye|dk5%&v7?+nczzPQ_^FVPRL6)xd3J_Q>5$%|;VuOtKHdA_&XMut92mMQ0u zn#$uh11n9;Txx#n?qQT=I%wFVNBulz>*U=qFOj`|odY2CV5dSJpGywJOIsdC%&%@+ z7kx9E2JvV#lDk`EV1&Qv$+K}4RU$5tDs8tKXw7WX z(>hwq)MufGLN*hVe{u~5l{Ih8*l;Y`mAxcfgDsk;KM~I;oB34 zte2j>xz3qk_ze_BrQB=t;q-pWm_0QpDTCdRk*oJudBRDos_PtKPJr*Mg?aIRWtm1z z;T_tTdR>&wgIJG*aJUm;vQUjurLMvgbyDRtqfavs^a|IQ2D6xkI_lE%E@a6OvW-(y zY-g+W8Uq+t$41Z5OxEA4ZtDl(=P6hEhppJt$}f74CQT!w%1~FXQC<7aOwNmcJ_*;@ zC7$@cht&O0^jxPYL#}D;PKI(ctq-rUK1iVOR`X`bf>r!;SE(P0?gs5LDS8RDNQ0v9 z1TaI79E_Mjxel^pKT8We3b@#I7^sR zhwYI<{i5RfuQvO^Qk$HnM%Dgl{a6tIj!t8$0!?}EZsJp3@!V*&sb_vFc%!`pcw)V| z^HXOuFF=Q{=c-e%P5Q)i7?UiOd9p`_*Zl!s__GO0%t)@o2XBPugz#o$p4s?oz9O`@ z>Kj~jLrD5}!-zuh?$ZEe*0l7uqmMrz2u#io(QfCel<+1&ArZ&jIX>a;=?of{Z9ukc zr{f4>K&`Zp#c>4qU7}*%8g8T9reAC+)>A0ARn`^sN?L1)B9;1xYYAeB0EhOnSoc$D zAiaxAAHu;nVIuE|S|m%2p}c-&lGhJnkT8i?$HZnC-ZF-dk_q>J?1uW<_+iVI4h}tB zwXg=ugItr^0N?#7vfOf;d~;v(CDqi>%3=N2j~}w0n~!-H)`I4ebbP%QZoK6MaX+!= zI9YY9P51)t9NucXV%-qLp~#Xs=eU0NLa{Q6(w4v==dtcIZ>^$?^-FeDNo^xJ-}Mu1 z6OMbDw<^gjn1^(T!6>*b-{9tQ? zFo!V8*#^w-pYMEaKn|v$p>rJcj5^NYdr_PqY^|DkeXEKEsXM8u=k8UuZx&mOQ~K}{ z%6ZqYQ9eUOJ)On2p}q<28E9%M+^e-S^IFD= zDITNywg-pkl0{c1u?1AS?P=6RE!T%i%?uN6FPaaRE#@JU(+(s2Fr?9rV9A#kkv&JD z9dXX+9zoG|%BRI{s%;|`*<$cnRUzfXG!c- zCQ}J>JQmo*43UjWys-r-Y3bB&2LOTGDhQT%tPQjt{^NFbz+y71 zn4wa4nWHygpX#2bm|-!uRpDAL%RWY`0H)+DK6fGZd|Tz9|EL1D_=NL@xDcMB2>-$p zk=?dG1`9O3)y%oCCrFgYLYh$aX|#JTj}C2`a-YG%=xoqNAMBLs>geh6lm!n z9gA4bkxI>rP4iv+B&sW3T`KI2TYf3VGk)|>ptq9olA^!U)PX5T+f~~%WcEc02oYs_ z-c;$bLC$FRvS)WyZ77>qZnk2iaOuJujZO9|Kvmjo>D#{e>YsSxPyVAZ+D$X|>T|>6 zx-VE{i-^fEpYitt4ts|acg03>a~MvzH=}hUD)Zh_sF=Rd#)Td%V*S23FIW}gtN4Ia zY>8*7 zHx!L^XNrOu*5RR_S|(p)jFF>dWQ89XXlR1oEFelGp`7FPiis%|*gjMXSK#$B*g@6TJPX zMyn3jTJK7sj$f5ZEd*{npSdCbKp2U(A%3Giy=no!GEW0Nv+wWc#X-MUqGUve3YRZs z9_n@Whs)>AzIPZ7?@|`K+;wtb8^v|gemYG6U&8!|<5V(COd_#0V~m%r`ZuJ8&8nIP z3KaXP$p|m^n$>IRx>Pv!B$+V?iB-Q_dIkroBcIh*-!Wckn#L#NwSky>#(K2RvN}rN z%C&9;dGQ4wyV`bFDsf(^NrOCTPivb*TqnT{;$mbZxl6nBiMfv?yWW-&CwJ|WI*f`& zf4w*l5nQY9TsEl{$i%Q~6>}6Ap5$T4MC`k$(nhpD`7>%d7z*Xm&zwfBv&QsV**Lo@ zR*nqCsLqC?{*GAPR(&X?zC@jE^74CZZUW`H!))^8Ibv~*{#;(qsv zxfR1hxD;oHaA~3>3|8>#^@VzUDyB~F$`Lkxo~}+8?iZlszwkYgz4hYRWs_XWA{<@( zHqPr55ZmQc7;t+C_SN_6*g(uzo2`Euxo9@qVQgwQ`m4|M6og;rd0rH{WA7_i%yqXP zV{r~oa5&VFeo>{NM9Vs31k4*u-y5PnT{m3%{?pV(n;Aa3<{(bxOP3#aZ)LBuM`!C8 zs5FhO*9)-6<*07GknYNSiCJOfN`)j6_HP)a!bU0m0Tl>?M|+Ct>#m!JV^3X!-}|_t zod*v&(xdN(hyTd<^x;y0V>;)UBQX zp4V}8956cY%$KFv+)O-NU#svtwyNQ6eBgHu9G=)n+~{}ylq~kU7?AFJ>D&@oEhO&_ znie`0l5VJJNYflUdR8{Z6AuD`s}thY>Ew--zW~wS$adPBshih-Rtk!DnI>JaHvW;k z{_D!yGtnn0DtSIRqq7eG)civmG)c0epxF#Y`!v?`_23@b5=PH&p$N@SGs6p|rjBRd zpJ~qr1XX#)_K#Oe&N|ev$2Arqr0{Pa{d%`B_D27)2XVTY*n6O$u6(>kEd@$)Gn&T# ze7(LTTIYYZ)#*l!)7_D|fNzId0V9kfa-kR0n*4 zjsevkEJaJJ96HQRP5t*&RA;0xqOz=5a=X~d>b?QDH{X59Klkl4-Sz5&GgtU@kG{4p z&V-PrnP^uV^50d+6yC68BjvmL8?*ijhc*kIabpBAkRV7 zU%{#prx}n_N(SqIxWLkx;vX5jh4PQ<-S1^ir>tW{4DLSq3z%Nxmk-TP8_-Xl%vx!0 zcA;W?+%AnCZUvOD^T{?|y7xP2PyQ63`J?6GKMU{qZ3CFY^|M_x#|*y!-+1%fdGa>g zeeLKRX1T$TR$(=^kS((v;M#9Kr|UAtY_V;g%y0yW8t8p=+1bdcvGm(jrmghG`-TW zzkuV8z~=dvP1S7UYR&^jos0oI!zy3#>SmS0(zM9q=ojp?kqeO{L~uT}9G$hbTR8V` z;dT7lon}Xd$FYABz+$?dP z5&|kXX?*y8X7amBjSX#gUMS7@>9cL`>Hh_QjQ4L|PjkK=b75#+e6CY3b?3#4ZkoLWuJU0u%1UMLd_a?u*5Cu${O_s_CD_+>kUYU?N^$<+ z>jwTyO==uJD&IJMX4=fej#Y-b{1Q}EYC!4#X?sdHo zhpR=o#8Z=G%bb(Z8x^0+yNq>CJe!az6&gz`XZ;W!_7f84t@=r2YkjP`W?B16!3*Y%veX)QQ*J zQ00z$^i!cfQ}q*5H9*b!=ojIUBUSiizB1eSWQFMQ3*2>eL>Ygb<5j(BmxZ}7O}lFi zxsi4X;i8i?h-C#Tm`c!Y>EmQ{aziU8DnA1n>eJOAW(pc9^ghBTHJ1>51%on78 z7wl^^Ym%aXf1tgS(ma*+k#AiWDWzj1-Y~+XGB}H9p+7cpi8t6KrWM4RKQZRk2t!iL z9D&UR-rPqh#=4iK<{Tgdm@AsSA`NLGntCKt)g{Bni6;|psdDqs^NyPQxo6+F9+fNr zRx8;(2fEfwYg)zr;|gOg2QYxpaWRNMZBi&!U`~j z7isid>epVr8;GN_W)mW&N_0gLfoo{#Pq2=em`8Mzan=fKo2pvo{^M_$T6U&=y1vaj zgSBfWI=0n8D$gmViS^fEW)LT7Vw%wW##OzS=l$%gdF3Be>P4>$ijsFq14IHgLCX-pnx;o~ir z`+7XC`-+VM8=`ahHnH1hX44tK`utSbCl?j?xEX{tQVynFYYG{aN#p&K7i!NG57F=$ zbuTQjAGOIi@14JWd2F}8ma#dZJI~rU6C8KK&iDHE4`n;#l-r+rFmd-#PEz8oxl9G5 zDkOv*lHn{`uI-}z=%Si+CmWfww~ZQ_uPgJzj>PbyZTY!efpDG{h?V4ww_A2*QdtTJ z_f9SYgrV zxfk>3m@K%=;rLqKCuhlv!i=Qyy_$<8HmmJ@0?5OV>bbWIDRJ z(&r6JlYa3@G7M?@gh_EBuxeWBMC!a4m(xnCKV+qMt2((@PNL_1H@@~q{rN78CD(bS z{GKhkHSc!OoxG;!VIVN{{$D^}+Ufy^Lk?rZHWuyMzjr~vX6;OJ=#|W5nJG+?M{bAWkiiuZH-b?015!EUL7l?L+Pk_ z%;#JuCl?G^Kv&ju#*ZV>R%Vmrt9?#Uf$iu9Jt+~d%Zjxcn`TmeHmAt*;!2LI_m$ev zWKewY(qF*4viKRoi(D?5r`fF%*|@#;Afc_*YjR=9otPK(xCVUFz;gOGL?4Gi)&S`R zxQyskoh;vi8Y^xEgPDonbv(KKgpwcLx=!-GV`z^&d*2jKP)S7^II2|hO(pabW3D>y zoM68VZ$Fh4eEYpKM-9(@Wmm(E$qE5E-vY0%-s>GK+$yEoRr10`s$YVa=m|ZnYo;EI zKrFZgW74~l@5hO(pI^xdb`zEv994j^D zW^Z%`Ivr`mvhMT7@LIS7{WP|%b~Jz71pnO48ExzG*3dqy#|U~|v#wq}xq6c#jMG9O zKuJHUB&^biEK8koOxCB&Hp|GpfoDH~jU$UfDIXy+Y>8YFMBOvviCbRfeNHGxDh({c z-%ABmNE&lm_q1GMvi4dM*$t+57kBbSDc{kO&Th!c zZiPxWW&M!j?uB|ie{>*v`h3V59>4Q5?8^m+JX@8Q1zf=79?eY}(J@eU8A?D)>Y71{ zL=&l`iueaYJ%(|k*EqshSxX6yB?x0s6pb_{55K;}=3H6H&G1nUEP$k4q)V)P$~U_0z}XW}klLXgv2MhCA(B-7c+9^@uQ`1zAz^MH~|37UF zK=Zy-s7jM?x5P|CNSwR{0~RlxYboZk3@G}=Nba#DozNYv?dQViVk<|iywKZfF@FJv z;RU6fz+4X>uuh?Y>_P>q zo3SUax^kBFrF%;rnt*lI69!kL%*!$ogw$n<_!@*wQJAr)^YiOiRbmP9`%~|ksze>c zT!C=#cDUL3q8qDKO8k#Q+*orH2ugq*}Zy?c^^b9uV(Zp%9u61mDCJDm$OobaYx z*pQ@=tdjUt0Pa{AS{R&}?sG|IX~9Y3jR~{k%>A_Q)>~-D(RS&V?=)S%*B4m|*2i8m z(@UH#=4QSB{9gtGxn~~R>!?-C3~|q;1j0}#Q5D-IX^$hi*(j0C^9%SUs0gBKSeln4CohQ=u@{(+BJA zaI2QPZ2mf@IIZb)TvJ!HgmX_?cHfb~8jErEIMD5uuF}nYHxguj`+8OZyGFQ&^Zc7# zBZB!g>q}wB%B@SX20KT3=UB_j16M<=1|}%I`}HFN3G}q=(|jkf@{pQS#i$zTnml_z zWMGi63Se|m=q&H)A+E$PWF%|4!)cxb_WF}&H)}NM+zZLeSNZYZf;BrF#R2~9t2ebQbt4FQz4qUzieac^WmM*aSLRg%YwUn)_C79S^kU&r8Xvu#pCBQhV(!5(rFfQ;^ zMtj3N$!%Vb8h&0rLjx$B#QpDtZfxjamQ&Vu&j8Qi?b`J6tt8-7+ismSN%~VSQG{WAuibBPkQA8 zUSc>_4TFoE*pb&c2r7+#(kZ~ba^{_KR zWEj*m;+#?4QmfroM`qg0+M;TL`^*FcB{CWyu#vD+)78;)9@S*QHzPTwX~gH~bi5jO~5;I@)(w+gdG_fuOj&ht## zucgIIl!em%c(k9cue`ONH6VN`(jelwJA0~GIyj~eM|7ti%NgX5djm3gmbehDa*~UY*lww$m`_>;gbm! zdvb5mw`Alwgmq-1tMI|$F@zsI%jnE4$m|TH+v$LytjNm zD7Dnlm9DOWEC-nw&LYf}Gnw_rFN4|zM2PE&g8xjOWX+zV7WX4{S63NWv&qr)@w*YF zlgf+ku%}w~Jf`VX*lyf3Y7`A>LaTm~dSWXmr^WrbXpv7?6^}d`Add%sP&CeJb=@lA zcD)`{L& zk7OlE(mGgljhYCh_bXZAXLZ$fgQ6dG|8Pgl?o~>4^*Jx{d5A1q8Y_5jZSr6Da7+9C z3fUosvbeZ_Eh%o6Rig3)og}`883nlb+LY9#sD8Ob_x`Hg)OU~ulD5{UQIR28&gSCs zoC5GKO?(SXx-B;Hwd%Lmyl}U==o2JhAy|s5r)6kNOJSlVRL2Ir;k(H>;wkIPfiF>0 z->W7C@YP&XG_Ka-Hr-bt`@H3ik6V2f!-zomyrqOE^(6q=>w`S_B~f^nzl;$hYKB^h4N zYoP(C()SfJN)d11jTfVCS(N`QGx|9tpEiEmjxt#GNMM|+d;Z;KIKwP+!&cWN^Bscm zQe2$MA;!U<>xCv2N9M^@|9GQwsLll0fPEwqY0A(L&&)f((*wNAIdJ>tBrvic!z z!C(>zbbMX!<@|l{P{ramw&_8$La`JMJFjPtt|6X5BX`M;O9jFIvkY!b95I+w1umWfwkFW76B;#4ozzTC?WX<~)c1 z&be2A0W`5=z27^G)Y=)iF6Qf5{}lD#27}dsBfb0es!TB!3x5pPCl*t3eLHqjk1JD# z{wUpkoHVysr3^8_Q9ral;`-RL_3}JIzn@qwt*iSrrKNm_EnV$Xteo?!hxZEnqc>km zd)CJouiARB=yb-ro!v>gha^BpZeJxNmIM1MF~D}Y-KH*iq^!@kijAkH32wG~x(g>6 zL0nh*6pK!Zd$zlxSVbXg3J)Rc)!!R^@!av2jkte#S+vRkOdS)3B9F z1wh>X$KDL8Fo>78K(mx?lScbF4OhBhYTJ!pc~|~N$tdrAd{EELG1=|tSG@wmdrYeO zW2ndLA!~n}L^-kt^;Rag8lE z7c$E4oQXqOR$}_|$`;_!21+J3q(iW=cq*J81CfJ z0LQ!6e*yfA7Jo^A{8wR^(GRSY=d^9_A@bgo2>Daq*cS`!?Ib;m5Z#&q(x}p}(TlBi zDO<)p@Wjh($iT`*op+|bKDxfp_Jf#%&3iY}d$?XG1fAN2qtjZ9jD1%jUEwSDvZztZ zRSpfG0*;l~?`E}HkgY;3qr=P8lzummQQdT$3f9gg~fg~a{>3MwJy>os2bx}xd${(ydG z%=+b5lI*4*-S{>}9?z`OPwzYrZI?KAdhM1}5No?s7mu?$J8Pt^&7XAbMoeYD2P$@$ z!qI-s5KpuSFszo(ZV;(HUD_zMNf>S}F(u!O&OTkRz4@HCjrqq$$V#;X%>JX9f8G8j z^!>%MVYNcmxX*_96zMa){Wz|mxFps6G1SG9fp5Ta z3)&>*lbkrhO=x5CSFn+@&%@Ct z`J+zh11(DXN}A$#qk6Z$q|F~RiB5tTrjAxOpXBD$X>s?IF)^(EeWAX{UpJQjX|S!{ z9pMbMk+~kWA6apxv=NgTI|}2pu?bX2(|W!xqFa93GHyMC+r)dK6AzD{u~_*!@W%C% zLb~@SbwsLvz+b>q)#3Xa_p8GP^3tW`o{4vBYWoNBSFSuEe0>%;=4Ej*W-r%NyuT-) zj|x`+$=4!Xj7(pa{rm&5-o@Wz73%$SdRgp43%0(()GEX6J^uaQ;Yvy11nDZgi=WTF zB!s}#PHDyV2%IjaAtk&j#vPsajVDp!ixmy6&h)4rxX3z~QT7b7JPXM?7r(l()8u z*i)8X6ZjqkSCPNk0ZH#9x`#+4)W6;#S&+-c25lINqS$8x$$Fh(AA~K%hpZ}M5VFlK z!S#fvcE_XZVp1l*zM>w1O`Hnoiud&sCQy7!IU`(Qam{O$H)R$a{gRIGJ%MV(qQ=OF z`!utp!dSy8myDqEwl4>`W6c`OJAoUOK6hDz8_o{WYTp|Sv-9x% zdskVp@WnUOkw6!Dm3+YOA(kd#vLBM(v-%i`%O=!11j^{y#Y!u*yL@`qj)X$Ds+Ql3 z0Ffz)wx7ukU!!k7m12<@Q)-{Xx*$(~9F$yf zZpnjt=d3%)g*m{i##Dyt)HlN=5&su(!v)5IkAGp7$n7lTxW?j_(Y0(4cq}&3mddTU ztr*T%o-By353-Ls(=^SC;GP2tN<}qP1K{;)K;!w?wun(MWMbkceVnHAfM(&P#ltO){vy&-#Aq6bW@;YL?o>`G~smpvyPAaL%w^iMrdZoWW|t> zpcQtTZ4D~9Qx8{44G1`QY1x_8GwH06uV%!Qi(CRzVySDW4ke%q_-DQ+Mk;i+vwyr) zv1Vt2=)#d}^n-#7dr%6uwHyS(1~#nlQ}q$?cFhfTKTg(v;b}nYkIEjer%m9Al9>1a zGA>OjwD4VgP{Ai`bGv%MTFv3CYd55^%6E7QxYF&V57@HV`@h{wa2{2Obm(5-%5HMu%*U|F(KKQbt3+39c`kNF31 z%Q4%hMT=UO7VEAO6w|s_Aj?aSqNKP(y2kx+96*OxKIOg^ zNrk$gRpU19iug{U`(!?Qj(m za{N4?&4LTM7n@g~Z*A?ioIwm)Tw#^q zbQgfbdglb%<9McaFRth3W>2sGK{I)s_Z4sKOpp?2W~3xfc#JC z9dZbhrD6buxbR;D1$WACG-oY_D+=XdcUWh^9vybp6WU4Nrx)1a}5s$(7URQQSv|5wz_l}B7RR%V$$ zaamB!Dg;n<8Jg@RAr$O+GfrPhl~0wv?dvq`BY766Jg_Taq&TU;ivlz_7EkUJYInNg zXQLn5nE+b%2Rv~h`SQW?0sw@;;;f|yr+!vHAt=9y@yG*Q=wVJ!z$%(x zQfJfTdFR(nQ#&89a>sNt7#!#a6(W56&6J9BY}-rss@$Fxap# z_=L7BOqVrt6yaV1x+s{Fl)mmHXCMn@``6&Cp(s7ERz>(#NRml=vJwo#4O(SG?4@PO z>DgIZV-j7SNj@bBE6M_XVi+Zm30SDZ+g|Diy=3-Dm!?&}@!mgkWvL$6KE!(RG^-ik z?i*Ya8AuGK)6okmI^UZJr!ree=-ri7vF@r%U~knZAIR%je+n<3k;3n|y~=ZHLJz?_ z?(*)ERoB5ms5gv{2wA6sYes41>3LR)tfgEhL3Qw*rfFAONjEVPJ=*RCtJ^m0>g#z| ziu41ABYcJ^cNGnmvUB z<`@otMWA0bK^_1s=F(ysL-{Y@kWSC6lS#Pyd#z60K?dvMw`Ap`TWeAZOpl#<81wOj zGoxTis76`Y&!yKkvhoT%`$-Qup(92I(TtzDIzwzBqSw<~LxUD#gMW0VtIQKDaThm4mRAhmFXl6=Ih{?n&0||Z^7a^BKCnXR&?dX9V zZX7*Ks?gSuzjd#a^Uiu%#0{-v$86Qd^<%AET)z#K7YpXal%)*WTgjNl`$~M}&FZ5i z`wy6>re2Zzr*|b3lkFd0C@v!}!${_?kOnQfhrZ2VkmTgo+|z3@_q);t{~eCLTQ?jX zCd!$bxl3C=U^)SfeF(5dCZ6C^ylRYg?cet&yWjgi`RB!32z9>YcIm@&r!Pf5w&*rh zoHJ-RT|2Nks0yjODz82=JxsQ>x}VLOlM|eelft~Lo2YV~()_c+Z`w8(*HPuNwEPzC zi8^FsE(FPEt?EsdU1wT)l{bwYr!Z?@&cNu7+xRlrmgi?B*6~a;iHRlv{(OGkT}Olj zsk&LXfokHm%LNilcbe$DZXkr?3P*M36yb_>kf7ZwJ2VOd1uR8R#oU~yx)qydN=+q{ z$eLgbs$!lJ8k3ul$`oq5#rto60blKPQ`Gyg90Eck7-G{LP_JzxBRZlHm7A9-Tup}`JkL#e;eJb6m@j$yo zegZ?Z98B^wW)j32Pci&Wb5|)v#xRwFNZC$do!-$wG=3yKi_pxZpliaB935Qb!YA^Y zm-YRaL8De_<5f8csgK}Y8q@qPHmOoaUO(ssM} zH5rA^Kv|B7W(n>PwBoK%{@gUeY@RI|CWX{iD3$F_JmM2Z)vflhpd@;$9*6-^i1GC& z+=%dVU?2yDnPa`i^xE^z2sBI7wK-R43#Kyh;c)~*;%taF@1GdCrAAfyK&%O@0I%M@ z_ZRSOWG%5;W9kCHWd-TZEKo1fZ@o~Mu2N3ZPus)gt$-nN0L2sgR|Pg{jDthGVbA3+ z!2Wo)c1bIOlmX=L5pV9gt7#h%;R=Iva@+$qk+-C%@~2y3<7f_u_eBo!0%ugCJQdtV zjJ;anp7>zN$7HPc>exQxYhky{s8Y*;1@0XV@val`kC#%0a4n81)|`4u9v205fP&94 zQvXsGEQnQ0l0Z%#Ro#Avfq{s-+>^(ls|O=o*O_G{xG*Un6n&*Q;^Wpe)R=L##8>Ge zCy_V+M`;JgR=P|W)K>yW7@}JX&gjT7x%su5ru5z5fQWQjPn^0Jd4BEY|E}RWMzZW( z!#x?Eamg9wgK!x@e}9l>6s#-Q5m!G5wkcr!cxjhWd^*L=qhu)KynpwoO(?z;mir&Z zH}Mv^zOcebQMcn5fK88yUQjo6x(x|5FsupGYba5eX*Ufh0%UrotqxRjm}}c$=r(X)4nn9qIn-47ucjivqLOjW6M|^_q zB8^V<(ks?FP|gxWZ#_T&431Xs6x#Y}O#umU$07YLhqnS`zG3_55i3QGAx5JH8ZuCqUu{=XX%Gc4hq!Gp zUbOIf5XdWL{~btjWFrmGC_3%K89*y_qxG@Y?Y zUdp`@E*R>!ptjQ~S#izs2>~8(2fnMSOQHrAR>MJ+xF(^agd~N7f_&tD{{T9x!6$TG zTvhvX>&gM%C2>~(B8?p0^BLQHI`=xbB%5QMCzTkfwbB(y+BzgUHdqL!gtYay; z=%|tdas4V${#&`hSuB=k#&5?gO;jiDzvSFC!zPa3S&VKNHV*0}Go-AdXW zwpoU@#xRutaH2e%>X$T`CCb*gHBdTJswk)Vh-4J2k4O3pYele}604}}VKqcG9^zX7#$jjktHOU{ ztu;j;B;=|ZUUQJ0<0)x%!7=2@Qo#)P01s^AvE7?uNbCkU5f6*l|r81cjmH8Y1^Zx+G zg&ToT>S=w=I0g?M@g;L&0+TqA8Hr$f}KxJFrZG43h z=|896R*>4Qor+gDhbLDFcx5DoybZz^-QfQjPl$GK8=SMKc#9?$Pe~viQVEZA`lxjU#%`pU2#*Q35*~f^B`X>6hSXBA_TyU3(tZag^w*@RTodIIyq2QefRlb)YI`m^%V>4% zZA*(hsb0WpnKd1wKewvgPSNgXiBk>wu4}t5exND&tVroAl37wz!Y()tCR2!Md=ijT zxEy;YT-vpG)vZTpqfVti!=>6^9op^6?^;<~ID<;#AbryyN`l*6JG3r!N{37o`ayjg z6sd|oj&B^VWLLJO89Z(tKV5k?Tw3u9<7`^mW)8hTYxD%-N$9$FH?{0oDpe=bm&_-} ze~0HG!jmPrd09r*#75FyYX>RAtLJg|RzFQc{{T#Ebra)M?A%ApiC5G3*cfky)88_; zXgwZwTl3`J)hFl1l7zJ$l+(nlvIqYFO?$}6=W2hxui>Bc+RlYv65#lah5m* zmRsM9>fl>>d!79Pe5ij9y*#T%W*_0RA+nG8FCtpUZ}bbwf74#I{0D{UAltLp5%pZU ze-vJ@>Ld~9p>?jAUiR!L*5xs%_eG4vkn@zMictRmY#vgrr8~*}4!rGef^8@~*RiEf z#OYC?-pzA?Bi(f<{6@;{E%9AUo`lD#?5e8Wr(s08-T~Txv^!vOLm_ep87%kl%Cf%(`u6C9!SrYied1!s#df052;?pjqo3H4ACeCA{2V zepxBXj?L|KTr^6I=e~lS6&Z4&QGEzP!Uj~^JQo%Zfrsj zbEIczAF8@4SELvcDbzXzSrTp+2r^*PX{emcbpHUE#Dbp#&Q+ad z(toGk2^^O?&c&4|&CMVqVoZL2l7)2{+L|GzRq=mTs_}tIQ&c(&>UE~G!+Xk;9kP6K zvPQhM3Kg4h4O*2A!}3}mGwd<+UE6zGQA&w7aO=-B^gUuUT~X(Vn`Tq(fjN8Z1W^ zA46l=QUE77_8OcQ{+wO37T#Svu>J-(hW#OP?)bHpJkq4yT}YKIwJeG)s^aFiEk>^~ z!nSHN9s%VQcoYCkyFqZ}K7a7O8=paOpzr2gxRUx?k_N zjwLDqAPo9EAMdLLAQK#d0$3@fxZ3a%vYr9Xp#%j$17fxrYT}(f6*}9E9oci18t+U; zeF@#bN+abx#h+}Dk>u+g%nD?a0B(80(QfKYey2erZ(i!}>9e$sk##~XjdnFmYBy4& zDv?*suavnmEUka?N&ILLH#8~%&j&~@b&)4HnW z63iB~WHI{_ACj!Pxl_0z^+xPfAu%eJbvUyY9V4>8uWPW60O7%LcR6d;MA^} zY97dR$qhLArTB`Sm1~AKS*GnGN%JuC9m4<8ro^WuNLrjx82qj$!2{c0sWgTG3*@b= z+4EsLDfdd7Q;(E36T#Y5kG81NIxCH8Q@V19<8jKLDnr5HhMx*3DJSJ5VCt%p>~!R< z6gx z4 zx7cy5UL=eXu+^v!EUk0d-P><1G(q0I-FABp*UX7Td{C9!7ubsp8Jz z2EfE8h)gNA7D~d<@8v-m@$JsB)u;&^lYt%6ntP~dw(ILdLzE!{132<_>aAd$0V(yk zjU4hBNLGChX0lPyC*3u$hsI23|Ir@`QY2hOV$)NMy}La7coLfuMA zk}fQz)JGxbA*DDlANR{0(b{J=kKNoCNQ^ACDuZ4;Ayn*>Qn~OJaNXWb3r{y zvXy#+Vvg&nbz$T@5`ZvUQbLoo{Aou*6S>ZFq?8MJ(gLG|m1BgZCki9rdmS)n=Bsr; zly&Ej;{fe&DIlq2a)puLe)?84LFAR$$S{gj@LmYYl6^xMBlgh^LCynkjFN&$$tzj) z4Dq5tRf2gZ9^#LvA65ncyuURMiY1-6<;koLJ729aMusnhi6hGhJK#4FEFCa{$ zktQk!ZO-!YNkfhju1}CO=9`X0BsC1B8!3{NmQYfVFohp|r_aWew?^t3q@6fPr7yIg zRHYKGHvkR+`}=97uGu!XHxRet_g_)N&7q_uPmzsO_yc8aC~zc{VIfSFscHeW zf6E6v{^vu(4!}q%7OkNvg{NYGaY_S{IT;*a>aPvJ%CYYbDIy}hfVWB%+1iyWCu)bm z`)a{a5LpMTYxf2Nry=)P*Om~;EmYb`)RboUn$t3YHW!CO{G4T zxC&6^S@!+3ucFrHsvF&(vb!iEE$tS27){OMT_0F_nED9bil3SJb_ zl)RFxgzZ0=YQWi9@&x54-wvpkkQ>P)0CI42OCx0q&&?>(lF(bJV7!$A5=I7rlZk}` zygZz(LiDHI2-tlm`C#MQz$aE{Yeb^Q>e(x@Ks%PnY%B98Jmh)jLRwWtx^m<5MB1bU zs3@r?)JgoK_R+^Q#wQDLw5cukx8Vxfci`ZUW9L;kf?+F+8C#72SzaAVA4ep481^UQ zRl0R;gwrcsqWW{*!W+R0BLHNaYR3lh-3B}-24nkz_F3YuqAIoA(w3e9Olx?BHm4_Tq%92L|^w2I-VT5HZ2=sy! zHs@-11N-~v=_OUE+XR@}=?QT}wey^EIrE}%w&{aF8jk48Ew#Bx;YS|-0QArS&fO`g zCLwIbdA;Z^bpcg=FjmlqzXWRj$ z4{L_Wbw>C=nSaVHlD8brRqgNOoev8$$u_J)*LG5ul$@ml8OR4X@yPhqjiv@sAjTHH z@qnI2IL1G=H1MlyT{8(>fH0y;mHz-I12`W40HM%KcfueeJSzZ?IO9KkLJ$roWI6Pe zB?PDwxk=+wbYrT;qqqjesJM^HpL6?o)CLlRJ0U7kR9BAMcmd!@-Mb#c_0R%vo&qC; zqyxAqMC1$%r}xvePbEZ==&`~aZ5vOmKbVd)sL=;0@&F(p!@vicbJ9OC2haY_kC$SU zJoH;FOmVS;xTQl1N3yf3-Aoki)VITB2}0XXqdSxd$VPrfbwM+NtpWy7*1QEI02Woi z2glzZ8h|7utwz!reZaN%0{Lk;d>vZvGjN8WmU9U!Dk=2yxE^!tKYbvS<-l%J zYP)YKB~6qeD#qU=kG8H7)nAt|iredKDJdxhXW!1>jA*%lrUOVxrMDeC0G7eVF^w@G z1xr9Cd8HQ9O{6E)kUus(j*t>lJASD&ZYK^Tw1xgf6VL0$nbFBu){V+sWsQF}|-g$={WSI@?XaFmq;w?rG2xDO~8Q9d+C0S1#9MN^nj zPQtu$wWlW^uBMf9SYMR7RL&B;o65OLy}tTbDWVp`ZV1maDV3IAWn0;B9#Tg+I<3P{ zAmkNwH@FbtxK_ondAm}a#V)dxmtc*i&ZdDjw~9`7_ncV40IZ9gwEv}V@IsKU zaG-h5&UNlubz~ebl-xDUaSm)Ai(hwbLz13-K_`U|eCgsPs%9Usy#6~QVVKTp?5 z1xN-ZYcF|OPyi1KNaM%8oJ1ybXJon?4kVqaK~VNq2iy13InbbB0c#XErw@;gPa1GS zk7VEks1lKdG}4cPk>kdJEjyI01Z{-kiRyGExhYZ{X*j~h5ACe(paxsAwXP=#&O6Nv zIFfgH3*?W}9~#Y3jyP88fS%DM3&{)589Q)z{WX-+AwvWv*`1}JsVWG2X(fKj!Q>yl zJZnWM2eLp1MY8=~Y`Q%RYb86_lhWD|;LJq;jtuXU3J5tYv3ak28P=+owgM zrS)gfZMi;1nFIIgqs|qFdrM@1Kt06zkgWS>+Zx>6q#xa2EyO}oYLkGH3Q566K^geY zp>QZQr2XhXl&vdC+6X_HD*NeV5S)NfiWC$(iCR7oG z^g1$^K^YsR(8G>oHk6N@#3!F`J~XA^CSlZIr$#NR{G=^xu@PZ7DcK<3MohC?9P*mF`N74p(`6o_T8@}r5bjLKIinL)* z6t;y7AcK?k)h3`jWUW9Y7UQJ$+QCXaC28=icqAPl19F%;M#!pU?H$Jz+*ctdl5_Uc z2WJT(+j2^THh=<~^k9?o<4EF4Eoq4S(h7TO_9yvc1Jpqn&%QLllaiJ0YjBcr4hM>q zzVvbV90}TYf7EAA2#6Rcx;Y{tE`=!tCZ#NsQUY!gv?v8BODJ1-_Z|p8KYc%gFjWq5*=s!UQc{O_Mlw>7 z&PTR1>}(kusW6WjYeK@plCTm7g}nqR<2;Iq1$Ro$LnY85P7Y#cieM*ppDM~6TPys39 z01sj`-WVnoZSv(N^rD0XrDN0qA16LESxQVoZ9oYL2H$aP2@7-5mv*Rso9*}0xqv%J z9Fz~$o@v;tJ+Yt6dC1`Way6P1d~dNzsSYW5SW2OyN7NQtXi6;VVx8ZIQbp@2i7b3aw?Q3V#}% zDm5qS>yhcy>PyN(*lE;llwNM1dzcES`Ec<&BaSniU*`)Jbkrks2Zs* zkoxF8X7I8J}C*BZHCe6$dH zt+a!SVr9J&H7XSlLvo`|bSg>}>20<58!I1~AY*~6Xx-Kh((RTDt{ZP$ND%JI2lWlQ zw2|mqPF+Fv$Nja~VdT7>Yg&|yI3+`j?@nGDyzf^h`}=8#Jr-huTBEH4d!v3m3mHGL zIyA$9z(uZ%Ef!o_3JL%V&I!gwHDka#pr7J47QCfkEyI9MtC9Na4Oc*0XtmLl<0WN; zfs@X5h4JUyYdt?Qus=@dtT<58!>do_{#r>G{Ylh&K{!@x)w0zie$^Kpbmu2v;1AU5 z!Hz&Bac8MQscB=BCo4zg3gl>bTDL*207}u3ImN5Eqy?N{Ab1~P_tmuMfrV8{?tV5+ z%)7ct3k9TL;XraR?X3@FHwvbg6P=d(J5uOUlBFPcQ1<(isvZdoLm(ZJvfNq^^4E~D z%Fa#(mXkrYn(0^zS_~~m#?TXrtQnZ&25~INb$LXr-V8U#-V7Hw@LK_DTBiN2cPO53$0`tvilm=3u z%Z>s$2PEg`&a4id(bhSn(NR(t{MLrkfN(keNz)k_U1}HEz3In@*)lml|so zDkQ)7np^2@r;^lCFow{*yd(ke4!HaR#*woX8s`V(#-bMfHG8V)(+vinr26_O9Qv(R zuCybz(2D9tCNi@oO4(Gth0!=p%XS$3lGcMzZb3Be!V zS?_GB)}rRpsiEibM8ef$R^6{2Gf4wz!sVuHPM}lnHA|4DD|ZXegC45-*5rnePD`nd z$O!;{>Q=r>#y$$W*P?t{wLcgRkUGv9&r(;=Y4JN((+5}dhv6}v#&Ug?u`+?wS#iV6 z)#X25L#3#$KQOS;lZ>hLMr9$8l>8E-thV3u*Nf8o_r;?S*>kbokN$aMhj z-~sIcX-0dgZ)||&-u!1GIvIAU0-To_?hifHxY~k;#?h@76?oMu=83OS^jKh)kmDVR z&+3-rhVZvEKS!OyK#~gHO&+Z}pvx=k1;&|Blv}TZ5wx(gC#H(!P0u8eX<>vnYDs^kyOEl`tss~Xf*56Pq5nXYq4M#chhOpAU+-mCA zc66Lt+nSWzM(!m29wBC@ZuiueT8J3(o&NxJ1gEORnO>+ysFtZ0-97ZBbu~&VX=y@7 zDq+;6w53_dNjW<57K|4>Tsy{Vnls`?{)1^=vhLxwb{Zc|(-;E><~CKwRxPS!zdqim zJ5iNWYU7pKs#c|8WGBjtC`wY>Nl5S$uD8cl_V$(zt!^9khaP`A{ME#MG~*_K zx4Q5tjDQIsne<;zw&2`6w^ct8#AKd_rf`_uxNUiNLSS08`jxFIFJ^Do$7!99dp61t z5L*N1l^s<=`-?Wrmq&&M)ZHFm_jB|MHTA89R|b&bQ>(Tg`0ehTt27G@sY`mdan$OK z%UM;!DY+6`j@id0UAI)D_sVgvId8^ztu0Tp0+EblYj>&t04n-CJBEVYZ!f7kX&Qe* zqP5#2_*0`g#b$HzX42j%dR%CgBDJiZ0YWyVKr8guQ-bmDh-&`;N#irkyZiH3-Pu@! z;s}nD107TKyh;s6Qfe(VSQbjN@z`+EB0kM>_V6x36(o zwC?XJRCxRc%GS60MwP&=eL|JHs#{QFNB2aKdWl`L*XJw?Hos?5skK;EjW|;smtUki z8ONA>JQ5IFQCFk3bNyM@M)u{lPGPmFQrv@=Q66L1jDzm21lF@{ONwoIamKB-?6{8Z z>P0K+69&_}qap-z>ysKQudUplcZp6vL*q%rzBS@^ZSd<C2f- zpr8Ds(o@$>q)3-Ge3vFMT9CiyyDCurVjE64Y^h4Y_{KHA;LDqfyRk}*y8$~?s@K$k z?TPnXo;yaJDtgUV0Uvd+6`J&>otEK@+l?X2dR<=iWO>2B*Xb*I6&Xkhgcl9VMv?3} zFPzn^*9p(M(^^*d4izO}{!lqM)~3UDOX3UxvQM`1RD;B&jLE`*W^+%j>bf&<%6CIFLSTMTI(b>VZ&}vzvzD zX;Eubr+)~!C^BA^0Jv7RDl8VAVa8NLj6Ts;2^h{n!POSmCia`@y}BMS;10*tY2q9- zTU7EAMBtzBu1=cVcBfLR&$IYEw8^E`pRQ6@AtF0z4Y#nZ4J2b|SLMO`>%(!oXIfTk z264GF@?O)1T?(?-kG-To7zBE5s#}6|sdb9HfZA5$^Ilq4yCnL~4!(oK=(Us>I|br+ z-B52TbeIeO)8|#aA!=+TWep@@1Kex%b7{0>?!FW%8QC3DC1+`UeB;nb!5^-VhQrA} zoo^w@C5@rXV2%f|`)5@+G#!(Nx-wS4ku^<*3$BzCxkHR+z*omQuS+IiCpBHnq|{$& zB`P>pGNpSEJ+Y!33I=D@BN;MxcN$jDeo6E5s~lSpReK((a0~7vI^bCYDndsm@0}^~ zi2*ar3@xNXiqe9yv=h!fMCagYqgBNKOR$e78aAK+paBIya7W)kl~Hb^g0|zwC6eM2 zvdc&LiaZSaa&<*V!R}U;QgejH7RyPMCD)U*Mrnr0FF2Ef@ufOi2Qqmk7Q}*FU=C|l zl*LBiw^Hid@=AOkenzcvao9jqI0s-Xa6@xDlD5^1BqW?4)EwvyK|s>n6htAMDG6H2 zmE~k`KYcTtQaPl-LWUVg<;)cLD>=?|3*31q8qj1ERF)fFR0Dw{^5kQmwxl?OH4RV} z>uZd#f0u<3k4eHu8m#LD2RE7eBce2RM&vl>^8v;c^P*}w+=5)6@`2ds2?`F7Kp+Ex zKVO|j)IAe5up(1(m`|fGpq%<0C136FtpW4Mq+B=yb>I2lm2XZ)OOe?FzGN;fq4Z1C@EPu#(e&S>X6gTC~J$clmVi!p624>xKcB~ z{{Xh3cTJU^W~}W7dtkQv@WG!!D#CfZj(cJ_*l_IC*ME08A2+`V98cnC-2!tCSr0 z9^>z)@w=4TTJ6&4iowYZVK^Y6V}bqjhNHTrAa1cuBxNW8C?nDVgWTi<24I|u8j!41C%qS&5s{|0U?Voe@&<%64kn|FODX?4(C~peN zv&qTl{d7ooJ(Y}zgtE(W0S>Fyt~VrML-f#TE!iOr{6}S^n6e33ZQrSmkV;rr3dsF+ zqs44wK|nd(Won@huoM=-C|NrP$v$#*VJ$lpkY-XZvaVEPq-Oy<{@e{a96G2(m9+(K zvih7;TgXWW2gc#={j`+>NQqZ6v85!53FT7h?=oa1hZR+hpd+*qhRSitQO}f~JZgZ- zjWHuh-#J#g?wf#c2Uk@bSJXJ@c^lIDypLi}&bE0#j!O`8o^=wolOe{NNmGT#7OX2N z9{zdNMS;h%xK(g&=`=c*omTY{r7r_<=k@z&mgyK($tMX=*-M)XWqU>z;(U>%)gomu zc489i3D}?I_EMp=B|K-J_xtGv`^qkJNba>ZILYp(BX0#K81wFRY=ebEoJPSSqT^g4 zAxZXD?g8`r>EJmqd8RSoV3|S)$^g*L(t=W>$`TGS{{VdgG{xY$N?r(hqS7M+eiN zPx|O+2W4YUqmz_mcT_nc0nT@19uLU&)G!ptIa^3`U{=>Rgd8m6Z>QuBeO6jZV)l*F zDV@D)O9f7(kQI*u^*VD*jnQixyF@L3^P7hSAaGBg_VcRr_eIb*MQv$PmN*AFSozQU zXt)p(>k^gTp8TN9jB6k$O}${{Sru z*j7L0q!N%m{CL)?PN*{BKboWLfx`zsL;^egy~*vZ2L~xR%6@fwZYj9N#bvEU%<7XM zC2DQQ4&t5=k%7*w2ND)zE)bPULdtU9;E{}ybfm{LLt$;H)`u7yy^;t0ef3_FR1Sd% z5QR8O)vyEXeE$HZgPj2obzl^ei%PgoMmQdy?}MgjJE;I*{%BFSsFh>^kU-#PM1(;* zLfmDgAq#nEPz2!v*+d@%>Zdpp0XCA*l<({cF~_W*&GGZ4(LZ}-402k^eQhUbP95^M zG3QnWPok~Pf{2$?^3tV)@<8#TS{fiD26sT5<9~QT8?q|13}C# z$=MGO?2-X)x#|dPsOKZW=f;VEF_i4;cSCbmdbaj4B-x)#2!e;+e}?J zlmL;Gb*VfRAcY^uF@b}i0zPSwkG(`Fq=W!Att$Tjpwy12ek76Jk`e~=5)`sC>Cdw2ag&kl`fBEap{jNZ zTrvu<6s4#DcjE{9>cZm)Yd-5?$CR~U4SG^CoOlD@_tFMqB|`Z<5{q2^M(#W;0!-_0a-Z>;~?;L!WR|o=1Gy%eyi8M($4U=PMnTM zKP0O*bt)2yRV371d(?)#kOvr6Gn39V9mML?<)#xefZMQdtMpGzT2PYeB*cPZyBrl2 zsFh@a&K3PXZDw~6d}(u}6|R>JqQ?idutJo?r2T4JbhMoux%%PB6-fU0Z6lO|k6g7UWj5(rocUeWG(=Uq!%N|ud=J5b~f-{Ekt zIHfD+15%tGWxJwNn6MX2bUwPe>W%M1F1S(=yPPk!jtB${^Qm3;;-JzQr?>7?(0>c? z&am+Azu`uuMO!5)2}7-@4&3yUu~{341IkG8gRS)HYW3*3Rc-Mg$m)n9k^u?|_W>RN zKljn`GO&i`P7Cq?W&z} z!k`5m3{@f*T~h^UR~tbJNdx1aG^O;P0&5+?{+{DkwV<8SICH{Lme%NT$7ZfLMhYVacNOQ~ za63{5zI3l4rUPfZ?47M_Wc-q0m7~&!2EpO93<3LT^$vTbbP~4_9eV=%=j4I^0G&{3 z35ZPqqNnOgl##h$c~Ct60Ir%_=#k6_<=yH^RN9(&{!mkm4KOfdC4T8JiNK|eromnYvRF@rQ zIm0MFlpmaZ{&cjg*-Ic~t*^SPSMNGuF_u!b5>ym%gd}o)`PQv)6(hdsc34_L3sG$d z86Xe=`)a4u2f0>>Jdg)>6*z>bvf05rk%Qn2=oUsfpjhqJDNZ51_{Qa66XR1zC0PbD zvc{cRP7ZsDByZ<|pBfHmlnF4lce>)zl;y|qv}gYSc-2q`qB$WX;~Uqx&`P)^N1jKw z8g{-mK+q?eBA2+H;*{6}(vgi2BV-FlRCTwIGQFt-JPvT$TjENv+LApf;y`nMtvU9`7$2^jIr^Y%s|N@| zPSmrJ+T2`1K+h*ooX<1^mfF<4sY_3(8$DYOCxPHi8cNng<{v6cPKBJ|81sYetHzjB z)~8Xsf{XOUvRy7IvK8qm&-T^cAUKIx+rARAgRW)%`>w4(Boav+eTmZ3AYuY%f>P1q zgtiN%IXsjr#(ndpsZvf7v?OJ_1+kUM4X6+EdwdKX1~{u(Mb17}m7u_WYLqGIc0dWr zagYEW!Ai!hHL0*mmGt;+dZz(yxf*PCL(aOE`+xHp?hWYuNB(tB+G&#!?zJ8XR5X%X zj#8S}S8Z)5Y;nLr+^q4XH8h+;u9psR%;U0c{7IyC(jn-%HhA9ggB4p40!`OVB$oK zgq0lne|ri+PP^ZN<6G2TX#^JzFitH%h2N_0{``OAu-l^R!)*LN26;NQUNhMAG zWSsJ#6M?Gf((r`Lm2FGV{!kNi!lk_1P*mkbmQtOPib5VreZffJfvptCi6#nHX{`_> zcil-IrOuB6Jwf2o*;pQ=5ypSaK6KP>Sm%~zS0?*}zMD0-?)2ssqRc+oY1YbBB{mxd;$7uu}C+T$w_i_LKaemI@@Gtl;B{LrB2xL@A32CN- zZMC0BJe>K@-$Ar9B&+Jy4iF$h)H4D?^4jpBfCdgVXM^2k)j36vDWtZh)gOAv&h=nu zzL6$n7CU)JA;cx}w4^0GjjB8XehAYRoiQlWGq443H1OC#^1d;Hv;nGLOs4TSL|cgi zVOHdkf`Fa}>7v$@;nT5AOJjnt*a*%7&mZ~Lko>}-?QqzvLIQ@E}6y<>{jC| zN=ky=2^jH`KigC~PbC8kE%4f2ZAA|RpXmeGYNAU{$_9w;k_ru!pr~<=SHIszCn{<& z3C29;l9wA!HY@CN#;AP)a;$A=KH93I%T5(- z9%u>3yr8h$HyI5xj^dMrtP|~?HO!%VLbIH}Wy5jNbnYyxTL!t!@}6aF8IGYNxa%^K zKPxVvDL-#ct?*iQ1a}KJ+T0zJk3?Ei*82iy;sQiPtwqKI45e(BJbm{Hx^V|iDA zt_GvtIhCAF6jI=$bp`p+7i!n3G>UdV`r#gAV*1u|{{Yg+$G0A?HO}HJtzCdntZ5!( zG&)DV%cp5l)(EW9UCImvJzPjqBQ(^~+mCjF9a>TlrJQ=O6Zi3?p-Jp)ImPFhcR$fl zR;UNd1JPp1ed3+pZ-qThDjiWUtGL2Wb5{{k7pQc&8D#ys2|~-EJpOkOt^((Gp7R+S8$H zX4_hRR_{BP9=(;&!`D^cJ*!%&^^{5#Bq5i@9rn`m>Su&)Ku}XD1CzU*d3Mv`mbag1 zxp{j|`o9SEBl1_=-P~Kz@To>Rb5*}lEl4)$nyYP^g~ea2D54vybqiA%8%mvd!Mh{j zJpJ|dW?K9$O3YnZJUoWsy1bd^q>fz|mZQXPu4)r-%`G0qb7d-n)EX^$QCO-bhdt)j zhg9sgP=%)+q^)H|2R{Vs%v*4ZJZ=Efqx*=`2c{QNwbN~bU74J7-DA_u`yK=&-8x}sq4QHb2jviqLqSaZ{TN(`Ykd<6&I-?;?PLd>lSal#E5%GhcIsw%~ zptM4$x`V)j2h$5d51}hU+$C+caN=`-e&ZbDR_Kw1NUfy6Ru@a!>CItxUrul7(QWv5 zs1Mp#0+bnXsqKUOr8=)s-RzO%Ys&G~*5U7M^NT(Wk&|qY_N?doOE#X zQC^-vuh`vYuUpc@^+Bja6#6|;AgTxn$XXb1m3o{Qz}K7jhT@%CwCd6Z90dOWr`38( zYcpyZTb6=yJN_aP)%#xIwRifPv z4lpp%C%W*wQ-|CN@2Q~Znbr7Xs{hobYIJCj9c3&}5}I0fcR<1a0P0Bj*Xl|)4yX*a z7se~lZ4v`atr+lUNm&r0szB#EMsPmoR=%qkJjNAlr1zW!vT5}`+FK3%I$kBc%OSL= z{{WXN_tkziJ@;2O(d1_cvT5?8r7;v1+o>S9qO7ERayZdtR=>^3QQ?4N{G_-6Tih!^ z;Ye0V2j@Ct*eQfy$`_rCsX6fOeEeYQ7ZJHiN?EoN6jr0_PbycHX$!H9kaMAJ#Zi#% z*5B;p<+ZEak74nu-rXWdm1PDxqk!2fQf+b6faLb&`ga|G@PEpz`{+@JY}iJt8plM* zSqF2nBZasNAzjBXt-EplZ0c6SOm45WE%64UfTR_Qw;#5q zm`joVQ-T(@(x8>>;{nmKou3afJg@%{l~_cjQJ@t*#QVzmb5sc zt>Ai-$xl8wIyykYM`UFkr=B?hjsmf>?my|ETHdNPxx#f~Jd&WP59KR4PQp(=1o+l> z)NDWq_;5^RFSbYrj^HN%6Y9sd4w75wh-v0if@9<)xQ4@+%9`VM`f;i}NWdj93kYco zDOYd<$WA9_$0tbdF3Q%Bc>uPR7%3xQ3qDRp2+|6fLBN2MDnhc$pmXI% z&mVtnG#$cL85^Q@+Xr$~r0vec4+rO+Hlxi#!MH0`q9YDmZGHCS;4M>2LzjECAg=Fw~ zC&xO{*B6ZJ5=((C!d)>QQOn0*Pv!^X?TsO-(XuV4t1%v{X$=>S7aHx9xTNJDlmp{GIzb@eFa)F&QiT+ifTaw2x#3?Lv9fZr)B<~?LkdXBR0+;N z@G+}ALCsAPGL&0xrOn#_K^~uPKKy700yjcH*(O4o3Iu|q!-pRK0B`%~%#|eb*sV|H ztpF{r<^ph%2;}(Z-&RQn1swn&ETyowP@S)<(v%a9PMgG>a!5;>afD|O=vx~O93yB0 z><^!|qg)`)$QhZGii7GU3veu@IZ98D+x61|-M~Ns3Rw{xQg*hnl^pOm=gxm^A*wm2 z0P|a`VX&R6Yz{C~pZEKIx~Ewu1ul>ZI|4XuYIUHuN^sUlQ1OhD{GLe-@IfUqxy7Mb_5*lx|jp}WGomn`_2fyDM&S9nq zD)T@=ad5{jYXYPpJ=M8}m%()A6a_#`LLr)b?d@e;DDjMa&lu4Zk5pb-(U?T~ou$N~ zzTVYw$T|ISrZnXsBqYrD6tmnrQ;*B@@y3`@5rmF=r3z>4SL8Y5sNfDyx%t#I3Feqq zBLym%K}kwd$38tEcpga_9u#v!QYyk-LR8=(Bgh1Sk8Kv<;Z*8|U z+FC&L{-YXGOP_$km=3Vh&2pQmLrvKP2Sbq-?|L zLXnzhIU%hYB_norPOdeH+I|cZW1gm@p8f z9U&dtKp3N>6a*xPbVzqdjtv!t)J6{xX%Pt>q0%9xlpvjgg7Cb1|A4dWT>D*TXZQV$ z4@jHZe_jiDr)!6EmYf8geXkH^bNIro~>0+_Jbt z7L-I5W&sP%^y89f^XK1vFv~{0X(U6%eL`SF$)#kD3<{YZyDyPf)ZG%kF@HK`7t>U= zC{OLo_g>iGZap zx{lFJ_V_0GPJdiD85~!S`YaspR7Z;Qh-Fut_19^K!r5(-q3SSAS|d_@P@Jq~4{bo! zTB5R;5nL~qQ>CNMSDNoIyCuO^+#;UTd{(D6ivXM7*GT9A9LXtrKVYnD5UFmcHURm`&=1Q6 zZmbHtGZTCDG7bQ@6su)@+8U#qw|YAHg1yFXr=^dF(U!E}O8a@}!;$1yl@V^Jy8hy?Hzy#21 z(zR53$L6TmaD4UroIdX?!x}Pe#6U#>`FkqRg4Ok>=c2ju6bb}Da&Z}J$NRO*hP^Uw zJ5|YKW(mcxMpV|b@)}l_3|)Kg&wRT(5J_L7g#995+*g)!;;(}_#FytP;_)Bm_kxYL za?dQi9lHkhJ13k7&B+tJp%kl<6k1(aqGT|6;i^09oSIHyq83oe+lWqzJ6uaR-)bD+ z5b?GbnO5RVO_>3HN(A4nY$)4)(E~m#jw6d->Pey@51dPkf>=4nc`F%tMrz&L$x?fQ zelBBrih_kX1|z(?Z!Y@MCQ*sL{Ny{N!Pw49&T&R(&3uA7)Eq6TQtPF zVZl%B29*7=Uq{Qor(4gz2W9IoU2cR-3OaL-R(wl+E`Ua^3-qSWA*}C?n`OGYGd1I3 zRRJL+tEsldr2)bNQP#m1HW8|R`lzg?FW_Y!n`K}A+jO8) zGUjlw@CEf7d$P7Dl;s}z_mAvWN${EQf92L3g|U)=Bfsn{jfyz?25NeIdUfHCU{6?E zlbClRJkI`3OavDA)xDTCvJpnzY_Uqpjs4&jHypEHpYT8k#4Ma!4xFKo@*#$Ii(QbN z3G}{O?8sk_jg6&)f%qjfTTb*U{J{*fo3%zI$mh}?q%NerdVG`ZvPd#l+DuvWIS|Q+#&Vaw9*Pgsdi}$WZ&A7ju;Et0iKav|y%Z^37C)JId18G>0c)<8 zr1eEpgUu(*Y#+~eub~^(0)>6cnc+vK@$nsJUUQEu70A-8we@Br-lGvB6K#%+x^OJl ztrEf*thn(2YhxIBW5Y%^!!n=O!bk(i)ofYVf_2eLuohNo7}7tS5K948i~ZFqfbz_8 zKz;a0c<|v;EW-D&#<7!o`R$-EQZG%00&MKWwTs>87CEQH@mLwX(vcW<2yexMg%cYo z0^4)^%45-Yvw|Fga_(Sk4a@Pl0Eq=7KR-D{j67^(b-%)weS$CXnJ*;s-5E#!F%QoD zWJ0y{#*3c}HkOqGI#-XNL)v8X18wXi^HEayNfp9A4vJu0lllGUY-)MKmEQ!i*W!>V ze^UY5BHk>)V;HW-fTZZLGiw_l<=jog4Kg8Eoqq9ldJdsZ6lJ|+m&D37*foUJH=+48 zFD<lH`Jftgk7U(ieUcdsrS+A21iZrSY~wEqb7 z5jQxk3zX)@Vu3sgS_1{_~pBPSaaBLe2N5$TR+@r9j7I zO6!)M`-Zxq6bEK`r;~0ys+Ni=7F8j|LFp2j$1j7W#lj84`Zo!|kG=0iDcWEH~tA8F1>xM%`rlA@o0T5e0IA>x!Bd00DrLt|ERVkj{PBJo7 zcl3up^k5zr8yy@hP!)MR(UNe@^khHCWD(+*tcBIOb6o~24=BiqftC>%{%cExa=N!*yDT6B~ z%D`obpOKbZv2J5I+HUA&mjtre6KO$Vyx3rhIX|GbI@*KLVy&_$O?ri?Y)v-r-z6 zc`YU)KLFS|?bX$py}{E;<8To;Fu?(ii=(&X+S0o66bT=t0sH%MzFGK|8z0K1_0QAm zP7Pvn7IhbdAp)wI%teTm644!mrUhM4qHk&$wh~N7M^frF+)Pa@J`JI&08M`q2V{8dTor`nP`}(gV<~UbXIa9nSR*%;>M-PNsqhIPu(`lnXI>gtULK zk&malD=Xt0u7z^%2&c+N>;v+Zx7zRcvU|CprB|`AYo|9CcC!JS2=3@ z*)5qR;9nLZ@jt-P!*I=n{{WNOQOasxL->}W6lzpPDl~S*BD-p2OhYn#9F)`RHnWi5 z0&u!A3a)DF5}hTS^DuLuV5hSa%I7gHF25`c5Zy6Prg*lsx1esY1It2Lv-*k~b^2sI9R&8!4zS{0 z?)vZcrAN=NhZK2sD$VvtL5|7?=rjRYnm&2uq;b#$W+d#IvzasuH5!?v3KKYv41C7Q zJz-6d?8sUCnjlgdN({5FFZjW*Lswcf;kFoz;4rP$dEtoOaQ--mN}l}XL5-{K%}u=8 zaAXoZ59PLhkb2uCF%CZ{l4Sd&?-qE$v)k{k%UZh){;o}&DDUnF7&Wi7=^c`!dXIJv z^|NZ(OshBEFXmSGOzhH=R(B4f<(sdrFG&3ATbF9L%?@b<`}8dc>u9Ewl~d%Io85`= z&~t}O0iU*JeyjQ<^)JGPt3s1jR&fZ&4h9NhVes>+q1Q7-8_2L8-FxkaXk*#SR#G*n0 z`;{KW*!PatCWzJjEF8rfmRN?A+1kNkigv58n~EKez@r~iGn8I$?nC6TGXDW;2B-c5 zFk8P_VM7@w^X9)0qZch1Do?$pu5u{;TH>?jOrhc-1L;f4?tRnZtJe3{dcI~-LVGuN zz&>0@fv?B%S(4cpi1;79(2?Ve;cXO{nND>5y{vsVnk?n_KU^PI+W*lWzEZwaP{CZ(LUwxP16gl*1cO9 zRxZ-Y0+^M4PwD<+-jhmJdtIZG7F^Z#;PkX0=tz~h`xKd9U=>FxakL@x`U7*zV}tYA zd;C_n z4?UGEh;*$Gm=p*u8v6O1f^I}G?a$2EgTFzP3_C_^oe1v&Wqzvl{Q4`Q)D=OwaW}PC zn3+Umt>&C@h~=%x5XQOY&E!pf2`S!BG}QSmQbJTaMn4=Gl1R1stv5JLJH_Qz>-S}; zupy(?Wa`Q!-nB^9fU9mkFEd33TRp-DqRHcTWjwgjKN!F@4Dq)o>P}|=ir@CtHNh1@?`JdVP0ec0 zS~BE9AO1I01x`Cp>R9~+hC|`j#gAefwtusD003QjPfR*FE%JJ*7(y)4UIK4DHO_c7 zryFw-t2JZWcTW%RDboILx|MhISVwc)!#WR6IiU>1V*bu8^kRpqXCc^fp*|kLhm(4F`LYJ9Pf^coGz&ry(4O+L3)X(-At4U}Dw(Y~( zU+sGylW!dW6KnRlizZ=*Ka!}rj@@q$g-+)6i;)+LzLo47+G~_iX5NO$=R+tguSNOR zLUe0*-QE0iQi7e*V&iJAA%~XdR$OCD+0G&m z`OR&*1*K=Ygp&M0uKXMfP#HHNwq&^q`|sh$J}`Sef9aWT=N#RtJBsCD4qMFT|1*83 zc`Y7>o$@Xa{7Ip={+{_y`WyoG|3Y|@rt)aT%Fx$T1dM@d_B5`!;`tl$^cmfR*p1!;zzeP$qRxb)!nZs{m&-C689Sk z$79aMn-WT)G@N%L*nXHWg@T2SXMI~artqPnb6l}+b90L|gppe%J{)9ROp*Aftg+?E z_9pb*Fl)Bqx0Y2aulX5zgkJ%ym(iTBeOTPpF!T~&DMl8W#Ntg7ZH%L$fa#Vxza3G7 zuRk!<-$inPVt3WLy`aUa`TI{Y<}WjO!1_c)o7$D?bez$t%8^bKRI}5Z&@K(78pmXi z<%K#ou{$~={s#K}!myrho#SjKGe-8dj50C=wMEmMS{}Im= zbGaWOCIGd4DT3o}k4q9F_mFWA?8zy>p%|}1|4yg#EJLHs>>|B;@8T1Tth!>8xT)K$ z`iYPpz#pn_TWAwksdXiFcJw|GHbk~~np4*%s9x>ebX6ui(^?2leb&4f4dAJafGoEjFbVB4rB3uFG)dm>lm>tk7w51=oMox>yW=< z8w)P|`xPujc~EsBJiDX+Ej3ERDWBirtGL~%MCArXGsQFtey|a%M$tSgBX&vZUsMx5 zFE;fkO{-v$$LUC2OrZA4>MFxp!mu{~rPe*(6zR31UIUB!5Yv_TymP{v=j5d#MOl!CA^0unctwut&gxi2(p9r~EWuVkT&!-fm4kue+AVIKnwN`%LM zJr+b&1`>>^7|f6R$$-}?Q%ZMQma%ua!xkr1GDnrP{+C@rk$nX<0w#&5HzUNVS)1SS zQSVQfioR4SJmUOXO$Ep{gXnCWj`K^kcib_s*i|83VnhNUtNP0QoX;G-^-ktWLB0zz z7#9x0^G;U>r!t)Bq_kA;m71=4(vVBfG|(DF5A3**LB7_#*WQi&^3;9`Pq}Qi^>Gh& z(|he&dk;cTBQ8nd+=>~;7oI{JLZHC79{OJv`ovEXMuUKAeNLmCuu;E|`AR45k3;6*v>Wh@M3K*t zKobcXP9wo&!+`KrqyuR+dTZUrJ3}2zge5nFG+QQ{QF~l%Dy73KS`&6UepkLJ88dvq z8^UDUAIMCBb;{}QNEd5GZp$ZeoI8c;Tk!ZaDFy=>>aQKw$ZnCZ+s9MnVd|=>*E#98Di#V$xn5Mp|IL+L+25SBYQwds-J%>{oGR0t)s=21Zew4@o^6z z+)s5f1>6l8ED#Uw_)L!iZ7i5aQtxJknZgdt22M#efrE0im+>e zBjja7e?O;aKyqR0g_7rERsWGNXbQlAKl$YmgR&*8xddfZ6K>}8Re@E3j0`@a{(D-1 zc(npcY6xhID<%-E=SEnT4I~@a1dOa^?+X|%dztP7KecS@gfq-Hti6JWi-b*KO44X# z7FM?k)jj+p*i$%v9Tk7rCvs}<#8!*`WSeNy4WQNO4a``JE)eL3Z-)G_XKBQiRO`T0 zmp!dj$DjA~#&U8JiR-;+e2u*(ozPmOuuOv4BOE1rjo|+6FdqW7JH40_n@fpwa~bHS zyVQ?+;*8&!(gxzLANlUk%PXFZ%EoBRUy}mO$H}^aE5r9cs4iT1O<=fLv&O9 z9xsTEnq-Q#LzACmCcAs_-mpOATHISqTzMl3vD|&VOxLA@82$db-e|@ z8;(wU@%3K6#7}_*^b!;+rE;7G-VvWkSUnEgShd}H*c3GelxOFxv#@jf^u(i@{-IBM ztTsZ#ihLRZHVd3`$Tc51yeRxW>}IKu#2FN>P4#1-XZrRv^DkA#XBhcz6h%L8J}3TX z#khQ|=3KUdlN*3hDYeYS(+(*J?m=4hAdR{;6-$O*@y9>IK~1t6zaw$foQiWJ;=ctZ zXE3ysIxaaB{B(TUgHxqFR;3HQ2#~tU4p@5im0}V2h6UdVT*)#XpB&PjZCtW;HD{x< z{sOJ5HKo~E+rCA|DCS>0uRY75p=%C2?Q&xVw zgSLGF&5S9de=+KDt@+xjn~U8jP-RL?=@*Ke?{B(UU0JB9wO^d+(OS2@zn2HS_ub|W2gqt+*npSLE0^~C8` zUj==Y5Cuz5H&ryQ!r%=AS-2?~kdi&RIRH{u6MND&b8MZxMzMu3-4XIqW0jQd9#e&0 zhSA9AQf*R=qv_{L*8oc2*&HNqO*GuwtKMXD$F$U2;V1)Z=LE(UE%l1Ajc3Oyya!ES zh>Ym-lgnm%ecw0<>Ns?h#A%$gPG2_nQM8ff94L0Lo|4Y83|WbAxZej8`tWWd_YyLG zIYAYj-gsbY{m~sWhw02-m!uI3yC{-1Ovp+rI8ZR3j|vFD-tAyy)i)5X9yoxCz|?G% z6!V|f8j$J&ekHNCkRHN{0(>|MUmU|^pvGQ&-#67UZw>-C5EFC^pN5l}D~(cW;sKMmEu;K^mTfJK=7TlXn=2+hJ(YUaosJ_*RS z^hYdvA-9HQQLl@qclepsPr*Y1NXrZ;JGkR3B@PmkI&NLH4*S`@j?_%`k86BlpwnD? zWh*90F-6tHd{Ja~t41WJR>kD5MMB_e4qk0GRD%*LL~%y9VbyWCtAV*-g7$TJ8=U7s zABf|hhrt%=;sbNoNJ{sn+%vRAtq{vQWZO`{TGO)sRzemm%AvFYZY0tt; zGU#g(BUGo`jrK zdRZ?Y9~a#-6PJE#!c24*bOkrbcrHMpj zdDGX8-UBRXjmi0bmwNAXX~X=B>=*n^I;SSMy^b+ah0^M8azJP#I?~H4pgd?Lb$+J?-GS?1imP^4;43EXm{;wMq^rII2@SIQ#59)`NQ* z!^rW;%|4CX!)!G(xuD)m*W+G~C{BBr=wvn@KXpuDb`;7t9+P^}b6qr2qNQaB6Lan- zLUr@5?9&*qP4R-ayf8Pm!O=d|r!j{h!CqpN5y??Cy#Xqz6 z{nxVU0SK_nYr0A?3Cf7COD6CaflDU*@e;t2D4^<~B-*Tt$m70GLo>+7P(psfwQ^9ru5<4|6FgflF3rSt`G-cUF^QL+T$Ux%Xzv2li3uZ|Rm`qrc z($(2|ogKANX}_y1Hp&ZAW=Y^mj2gIz@D}dt!v!Xdwh~HUiyGF%nulXGr2+~IHJ$jB z^3n%o*f0bgNjX0=RCUf#;A!pFnD@Lo)@EwSxRSeV`&QG?5Hi0=)jArUBCtI-mEGay zzqdmTV{d-o)}4r{RA*ho{IL;HJgz4Qlz#qdQ|7s^RW{=UjxJ*|mdqc?tu4;lDrb)a zBe@&Px2TU4Nu>(hlN_gT6+P4m8=Bu#&%~|6(we(HP#rjc@sTdWH`tk-LRyWdDyD{mmEd{%C3yYWy&zR zNL5e&#%p3EaV+yoG2CYNs$*iQh0fAJoWh$9)441m*P5MnRHsxsw;OQpS#s<`>8UqcaVWbu4;V@)87wocleM@+s z-Ew98HBeLgkECfYV6D7RU5L2u`Tf=QNb;y+J9RwKdh1`TWvqRo+gldX2E^g_iMV@` z{4nwP-8!3lQHGw|UxV6$&0(KD4*Y5~;MvS8uIl>r4AA;AHv}t15ZM4ECe%wQM;g8v z9$9}cHhONb<2hd}(YRgL%yJ&7%9J8JxlCH+%>3t%6)Fn;53qCcD)I~e>A&a2{{cE3 zWOHft;aE%utCZDMF-d%{|Kr=^-X`S-;NZA z2D9uz#R#CqrNO(}hc>t3G*4?DWG&>asJ!^>%v`2G8MiRVFcil3o1@tIHO(O%W95^G zdzk86`F9m&frAnC{2w!oC8uuZRnSw?4caQY8FI{8sTLFL@0&dT?kOb=A#rkCt!>Xb z92CZWeR`6g{jlbk7YEPPK+AViFWN(RACduNkGcH~-cY z(tc2SN;8>^iymyVEZ@N*UR`9j9Hl$AviWHbtbxPk>)$J!*Yij#4@)f93RX2Y&bd4^^Aa;_k*n=@l*RNaLqx$cCm`gFYAY%n35B>cxY-nOMILV10Yt zjG0kPQvL0V#{{-0%E>yV6a6+D)BIIRo)F2^h zgFm$)cue-haObtYNQ)g4qV?N{G~*8_WY5H}u6eI885h4vaJT~i=VSMmAgR$nHfwuse; z^as{XxFZ(f$+;BUynAoU^*r0}S>z-N$g<=YhZqmLfM%~l{K1l|0|IBbYs*7Inz?oB zN)!Wq1HTnNxUGBrm}rYh((h2sy&k15UGqCP)IrNw=e1)~y2#Gpqr0l!p5|nXu@A0l zbx{^yJYg10BGQj;aI)Q?&;B>4btATE-fxbmNUJrKox}8EkLh09UYFFd>-XC&<$sDy z#l1tc@JER46zQ2~@1xrNl$1kn{Y%j*IN?26kWiBdy0nTLm%0Au-H$?*&rDthU30IZ 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

        uBR<(V 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

        IgqldnumD*>ze=a$S!|q^6!+ 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 z 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

        c+^zB1v%z zN>8B+Zy>Csc+WcL@h~mu8iWC-GyZulMcceOMll~bT@ilS_GGnJZR>xitw6TzN^3G; z(`v1)^+l;EIF%F7loe$1g^`qlg%3L9{5M=y{=H`SZ+HIymflcP@OvA&tq;-%_i7+x z)pNDHX?FuIK&!I)=0~Tl4ZSs@s8xS~^==qY8{V zlXS-rsWjPzQQnBW;l;8QjpZux6VKaI$`0^T>y1#lC}{1L8FXZ{`%73-y+Gku85-r+aAUMP$`3xPuWfAMN?P`p5`3gd1JvPq zY0=63Nt|jOF_TX>4ZCkPYIfau*N4=}rS1Wq-tHb#MBzYshO{<~M*jd$RE^`ARJyGu zv@}UP&nff?udV$WqV*PzDvbUqCaq~NyHlrA8Csl@+SC&9DRYFlf#V|wS}B851VkWf zIfF?c1Ml<;j(XYCS$5P5C5uwnl~%NBFr2JYF7$43*&)A7h_AK1Np0BYm7pXj4sb@X z-di|R(@1a6n%89NblEN?#m9I$W406;+@wja+qYYEA`qH9HmWk|iU})rI3PNt6=17o zcVK&K$hO3}^HcA)yh`f{pXmwIH&>TUuDSgzO)jZROf^BNv-Fjwmcw!%FQ{&7a(4wI zj|UukYpL+X%ZsWW@I4ng`p5?Pn>|U8x+0q*RsBPiQm)E%t9GLL(^IyJGQ^e>{{S_` zjvPvW@KUeaUe>c4QHNev7?8q64=Eh^{M3T*{tmiZSGOtmr%IOXE{#ixCaF1cWi4Ud zjFOZk4q<6d;gf<-+g$3rBG#=UK+;H6+ts<&80Wd@7?`w+Sfv#$MPR=qtl3apR(HdOCeZC%z| z4N`79R#;5l{IA4XkOH?YYl5(3h2!$2BO2=7d`E4=?Aq$AlH(B52iG`UtLl!oC(8E? z{K6am0N895lhp2l-qrhlkv=tWcW}z@V^p#Zfh;y?Y7J;D zI1?`(rgVgrB9wZ2f4ODc>9?jb^hLr|Qsspzp5?mpj(;stY9*%`eYa9Z;#YzF_3SC} z3Osj)Qo3v0O9Z)%h;(zt-EtRhlwPrw97CST@@mrWQVav^N{V#@p>}nRTeNOlu6y;R z$gPO?1X?5@?1eIuy_aJKh)kBweI)@raB;@D*1s6sai+S?%9zv}Z|5XZ=8J>bf8I8C8)$@aowwcb1%2&EvaV2^;YV~Rb zF5GFUwN@cRd@2-`HwlO+`gefsNsTf)YC>EGC~z$}CkKx@YIVsnTu2|zN$A-y4jwzN4d5Vm??^45=xpxTOW94V99Rm0_?)#(lmuJYZEGc9b%tExI4l#Fq48+@9mH z!iY(ABhsPHLHHw8nk=b0hb4VC)CNn0Cu>rBH3Z0kb4`&g=i{i`^W@ESEku{W-o4wn zSAsqD#dV!JB=~f|o|ycV?XBWe8r8ryB@k{(D)Zhw^d+w=NsVI&@Ku}fNJOb(0D z4x3P~D_-7uolGoNt>>9S;xN><J2*U37Ci^&!Wq1 zdv8s}###>W1kX;YZ7PcWG24DMW%)G94N>m;E?Z6~)v&s|AgDK0g0dErzMstN3dVRT z*CUH?n+vONw^3_mB1zHoKk}ErrB#k|e1+Sc@%j|oT~}7`nk7N&Zug==s!^qPC>F#w z+6*c?Tq$uTl()TL4^UPXlj%^`gsR&sD~212RUJr()+CQ{)BaWyR;9IFJ`Sb<_kh&$ zep@OnH^j)d8x-g6C!Oj9sZISv*Sq<8xv?kfM0P+FlQnuDG$L>IS1|j|dC_ z_oJvkxK@gWtv?aX{{X~q{uOb5+qX@ZbyY3yq|oYghpO%+RI24QwKo|^f7OP9j>3Wu zjoBLN@VlB9mg2Re+H?;y9(=+&^ZgMO#0OI`1MZ#w0Cg>Qr}V299HcByg~pf^#i zHuQDIj~%2bD@jrmNGd_{Qb;4%9c} zb9s~h06E;R315-fagw)C8FjRksDN-i$3Ja-D!oG2Lx9tnmF3>R`O-29LcIbk`b;@V z4JslWI}2F;TDkB?x%k&NiQC)VS&+ck1VIsnWu;S1?rD%p^;7=d-#}B8#t_4fMqFnUK*Gx08%{=X@HO&F%3-yL0d=h@KCME>JNjY>6W5vd zN&f)&PF3!E_NPFdMU6%-RZL1ew^%!i5ac29m6sGy;Zo3c5RuBb<6d^?*JJe$=eqhe zdR7c+q-5y>JG8j<9hAb-y86G{x^2FyT#wf$uA@?FTUSGhdn}>s(w$RVlD1aaaVh{D z;|ofTF|H33s&#lp#t6%IkCjA6G)Cm*(|=$Y&_c8c`DkoxDm92=Uz>s+QRG#R2t@iFhOa~`TL}HUI&Ws%J$U_ zYLwVo3{C-`U&ZoOo!>>G^xjmbDD_FtE%l)==`DAfmV`P=+;otPDWsEv6nW1Y`W27G z4Xa(W1p)+p=8)z$-}wtDtDtHp9iZo+RQ_wI^!ltkTDyZ9^8oJz#16P!qkUOdMWxkB^pW+nY1Eoc0xc4# z%1bIkFe5gX`$_<0lg>{do^{D>92g{mS3|@uZ7yImoQ`MLqHg{zBiA~EH>Hx}GR?;h z*S5>IZ8A*tKzds*t9y+qA#>>NNT`qKz z&?g+TvgMfcYUR})RmWu4g?;Lx5lE|A20?X(Da?>rZfwVzX)=;=!Cn+K^Qt@|;_jx3 zmc(f?9&zUC&A?o05ca*bSbU#w2roV09D73O>C}#^BFCarWn4CmoYg(%oTynW2=iK% zPsjzgKA|dc++&1=6p!-)28E}<4X0Vod&`O2s3(1deDT>=!|bj!Kf|M?ry$fa{{WCU z{MB_+wyhdOTa3ej4&;S3DO?w765NwXfTxrarKUS-F9e=Kl1ba=+g`_pa5`4>+eyT^ z!|^zO`XU;-l&Dsxo0qxpFa$T!PUJ3+=;e0Uv?%lFv8{MFH9f!hs$^hPQxt>(RR%(N zQg?c`tDJv*cCIPaYcx{ZZ(n6yhYhvyd`hE9JcfR|pPH?|h&fe>b^A}K?nG?I@3#dB zLn#c(WeDXifKD6-KCK=ZN~2q$+pfjgrBa@nQX1Uz%>6K;l~$o#kz+X>$5;TNG8t5W zi7hvRM{TtqQW2g)eZ9535Yw1gyhk~l;aoi~s#O(tQ>h(A?>S9wBWSd*s$;R^ONyoe z?JZ6^l{X~?JQS>gJZD_)BY8sHYH`P^dRCPyklJI`8>x1c3D#=#=GR*ky7P>cw+^=+ zIvOq{9u%gCDrraD1C03NU!OiX_^?#hNwDS_0EnM|PN90bTrnTeJj5g=i^3#s+_sXFyV636esRFY zzW2j_>LaPKw8;c|WpKEywX5!2XtCRDTuXjj*Z?rE5}*+!W-u^$$0^UAbc9KiL6D5E%m`2;$RGC8=}OmWAc!R$ zIRghN#(DYCDF6h@IL>jL3@6Lhj zqf8VjO7ce1LGqs-e_a3(s9JL=OaKVlfIdC-325C^2|G$I6`x26_)yWt@`)pw+l39v zjFuv?%a5D_PC`H#B>jdpMa4lyh0fR_*BQY2B_q>kNSrD0AB-*lWx2YnpGU9Zay!W+o%4{Gn~P zcwJBvNzDv3- z7c6aGGfsU!WWz468OOU%x|O*p#W=ukX$f13!ha|u&N0c;0RI5J^HwsHz#I2lH8y6m zPx>}X(<+e)JIy$q%}83##CHhfZT9`OOB~m`SK<7T!(Ik6x_E}u5m;M~sSL;{OKi+j zi3n?8!-`T*B%Ey=ajIPGj-HuUcx;)EnsyZErNcbsN46B0DwU}GHmaCJ?MW?a3}04MTItHd$7d}W1IsLZLEDP>a9hLSKc7l5wV z-Ho~Pxa$qilCd$es--OluSiVLpOVY+D0K&dpt`lQFoK*n5tMJ++-!P^k0<9_S_7%; zXwU1>84evI*=$v-^jK0Lza_;vPK&iKJl4{XfrO=^3cG}#18BxP>Ra2r%`x|u#*Zu= z{{WoU+!<(>P@h?mC?+$A*%kptR9;XUQUM!Ml%OR9`S#OPrsq-6e(>kp)nd}(HV54$ zF{d3-O-2-C#!E8kAxl}_vVxovQ@{jiDO9CNzti8U6vm?hW47tVDN-YTD^FoB zp(|*&1gN1dEg*ofm0;{Z^YVE*H0e621?LJp>4BI$(=2yY-g&fC3KFHObdW~mrPIhH zL(wCrh3;34dt%UYCA8vxosz~dTvjHgIzcKy(MTO{ICmC7>H z7F)}8P?sczM#Lp+Sn!p4Nh3bsdwJJ6_adXj3HmDKz$RJCqtXC&WAc_8ZAfYc5*Sbz z8(!e9HFpjrr$(c}>u8NgPYoIy=Qc_uDJ-`Ee_>#P3& zZ)FzGG&KM)GNq7K@6;^|j`aC&tSi2h?MYD_1uPwQc!A zCyf63rk@aYT=5!}j&ty1DZ!|7Sb-$4NqS`Q7Aw0>8)V@l2`3;Blaha3Q{op?{{TvW z$bu92W}8l?N^+7Kb@mh4VJdJELwO|uLyyhIvel^il|x;!1)4^uNDEGZArqBEoLw?z zz84*sPm+}>(4v#J3)@JnzBJk($=nQr@k!fmK2AL0qm&LP&(5w(fQ!zx0OKuSp?Dk{$)9lUDmV)jyo z_1kon8e1R;QI{&>Wo3yGlBOJMbFaMWz(Ujp#3?)Q6@kgY*G`Q$Hj&pERR(DWKXs!$ z2$tfPR$7E*WSUYFwaF-7^(dz*2q!1@8nK_#Xz=&z(N|5b%n#>er9H<&CVc}i6HS88 z)59oQ+>ou_lqEq4^q+2Yg@BRb6R7sW(8H%W`KbY=RH4JBLWIMu%VDsm7bK_Yf#j?u zL%=}SE%z*`P?r&>ly0f1UR|qp^yZwY_Q&EKxzi;>g3`a{Jdmxk4m~ZSkf4+k?m6?U z)p(DC_ zKY>V%ZjlMN(Mznbl*J!R+ecwWRzNE$1S`*|`r((mz#W+qbf9JAvxWG&)lA$=cRP z4nCh#LDAu3J~B1Ssp6J^3_{gobyD5fIO)}06)UZ(y#=a#rk1bqW?p44Y*S)s1TDlh zw}gX$K*-1*ajYz6il5Oj&G{xz=(@EWE(B+&{&ZE6F_xZIjNxiqL3 z6Z2(#U;Gmx5aNWK2m9NIb!Tq}9R8Ymm$lf(wwsGa(swH(scDT^owt=DJ%!V6C+TfH zDe9twuNjRrmJ!>KpXG2u(zKFB(m3*bja6%K8qg}3^yW&q9SkAHeUIm|Xs4l59%g+- zsLdFP5!#NzikMhf!;c(N09F8fD1N!SBm( zMs3g(*h566E+i77l&u3fKCI}n-Hn63B&~EQf&^tNB21`nIK@1fu^6eLDq#x^rA(_R zc}w0&1pto(bNlJ-11dNjF@wJ(;{*}twh;RYhf9|lQAk{`|9^sZjiuabXvn&Tc>`?#I-D1-Mv7n*DEynR9amzZAfya zn4#CCCB^M!F`PhkNKi_HgJ|Gn=N>+H@rN9=xD@D6sjbeDq!Q>*Ylk}PK7OQf$AYc-#d?ueEQbP;-lSeD1#zq zHs!x1&=l%ZijHvr7(d#nWc68B)Q2fBEXC36(>9>(#?saGPCsr(XsV$lYIoF!R#cGQ zzyf?E`8xKD_+8vOhuR%bI-~&4!=|U<9$sBZS)BScDoK*b$@|223ajf~>qNGo((Ma& z4MJTia}nmzDwPBVdlX0T^mH^?Qn$!Pa4jxYb~ol&y(vst3FTSS~ovHN&auPK~jUE=$S(I8CxbY6s zPSZQ`j*92jeO4CNkin2~Kjd^%+bSI*VsAd6-zlrn?F+giuom=5D*6axVG3m}td(~_ zQBizgrNi;#&2gK{hPsulv)JdfgQuIb%=GQdCA0FoMMpzV-6Tl$>{YgCmZ0e^BAG(^ zcVbl{uw#FUoZVI`cRi`*K?^~X*-}x;3PWKd2UI)aXTGaw*K4VoWY2^59hr2GTrP!H zQ>{(jZx(PIPM9N{Y@+tBOd`a(>Gett87)Z=3^4{z>2b<4Nk zSelBuq>D|tSA2Ut37=gvLLF`p-Wx*YI^aq|+$$JJNmt0@I`=#$;b&F>^>ot?z=ImS z2IW;+g*F@z;A574pQ?fM D;#;P)|T1lrS{{WjNp(6UIG+k;l1(w8?nJP|HBo@nV zEBbN*an8G(PlDDI8rlxjX$a5^YUw}i-Z`bEpc4l>dvn=##WLAqvHlZ9p!7OVO`<~j z>S`A8M5&LwLyt1TQ=jEVNh1X9Q;OVAqz!z^=I~PS4RBpvV2Hzgf7E{bQM>8ogupT{lGN-Q8)6ey>fwEdHNbw6;rEZ5E$A z)F8GVJ4)DhVE`N@YHh@TT--vokOz|De;4qJ;^NzCuB_|;L`-yDt7&3 ztN!0qWXGjk4!HFVwi|jCQiP@(dR(PAd+nvHs|2A6M};0$w}O+eAAZ-d&Z6K6BoJ}{ zow15QRto7Q!Uq*D&(rm zQd@+@Es~PrTxlh1LyBI|8wb{N;~MrnBwcU{HJ@HIxI;k6E;~WmJMvjLg&hvVfyUc= ztKI1^sf?nis#e%xLNk-mPYnd90F)|PQUcmalmb9NIvsODj-M*5;g5Ow;6SNqgT(>$fdJ;IXNwF@_=)Wy&&N~HqdiCl5U5j@uliYOy ziGNugN!phd+M3u1fy^2a6%08BRn}Qp*!o?o_bQ9+eOZaf8mY)m_2#Nvdg| z{{Ru6i~DCX&Xe*%o+Fzy$&r|FA2G}hnNuci%GC~$(})lwQrBBF^-^LqLoZ9I$b`$1 zS)BzkKauJ~%UiwoJFdCu;{#lZ_Tu5yD!7)lq+>9_Fk1K%6M?2$0;G?;O9>-zb04_$ zPgcd54t={m-DjzEaJUhYm}`C{cANY?E-HMuFEa4j>YsJO?{F-CH6bMJBU%r|l`ZvX zwk-}3_nhrflOxj(LOImSiV=iTm>{>M}k06;Re}`YLH>smQos$eN%O-1@7#OX1|U+=z8#sCQx^ zE5Jja^HLp2SX+Cw=&UcU4N+!BfMj`jMCp4D&LnO=>4OkbvGr;g7;N(A+;>k?>-Od2 zYFjlr_e(33DAYOXVM5=Z0g9bIOfU;>)5hYr+lsU_Tw}O!g&}Dw!Pcuj5mJllv|KUI zfmtHN*hk zU}=x3T<1W%qT03<>fD#uZadG)qs?`PT!~Pf^$)m+GTTDb9Cf%z3J#=G|ZiWgO-BPk+eU09QhGXZI(PbKr65t?m!JpK8 zm1{=o%&wqWFe$e_)m31<9Mxw(A=cu_L`I4jL+l{sML6zm1YujS2O8#Z&xNU2-kR(q zL=e`*>7C&63YvDB9OnXaupE>vGexa;%z*t_*)Z_tB``#f<+wd1rK<&Pl<+cgQ{-#b zn8utfZgk+MiFZCJh;ERC*5j0gJ1M1-LSoTd6ey-5E)ceuu`GKBw|l6|4R+ zb@!rB;HHuUHN00BG`lbt(c_A5KTE?e?_?>-oC1I*WtTa zG(_7EJ0jto1tN2aeWa8y8jMO%2{~;BSZ6K>D$tQ3+%>*wGqqKx*QoV&k{OU5V4)15gn-`ARrsKPaqAapx^>cm$|DiWdF zmW@}t3Y~4V?Lk!}G=~u&PFW>lLt_fsN2EG;0mcT6em_p5HBd5oY<@}Ka>p~sGta8% z8xG!KicHD`JlB}cHq>+rLUMAu1xvFY`E*@+hBzDvJ z^Hm1!a8IUHD>`MW=TIr|t$CLX-zk>k+w6T(2i4PCZA2)EOkk6t;Xsuhh1gH)K$BT zl{US{Dg!A{ zbyh!Ei9|Bve}~*=PjN2HqtawYbt!!*!;Pt?T)-fVD;P?M%1$-3ME6xl0#2YigZ@gs z=r2%UTQs-nbPA<1>7L|DjpI`oFQO923Nlz%sVVH?JA5Z4T<3$5N#v9IU}^^^0z`$S zYhCo4Jr$dliz2OfUljS0B3XSVjRiA|Mr1gWoTu7aUs-YY+FNI`mr2|MMbAkb z@v4af?*ygqt>)F`9kaW$0F)2YYm@&~tCsUJqrnhTBaw3c+>;#_osP@#+z z?pLQu=V`#*JEe>cAc@&jH5*Ou;y0^}bdrw}Wk$rYX1b2AUv%dfkkklnq81j>)r*n*YO4+FY01BNKcKf&CQfUdN*tUXXPP!;& zru>)WIr&*jZ^$7{qj=oB0!bLgm|U^$(#Rxl9F`Z`R)WoMGr2Hea{>S#G|75&zMp(e zz3%>`+G=@rRWvzjvulsToUhZ}X$y+_=dWvT$z=$^LQ<6^aB_Lp>M(IT_56^1G2#YN zIshJMhdB4s%kx}?adl-=9G>Ml*|jI(CM;>%p`%(c2-uaOgKcq>E+aVyb(UZA!=LK=TM;3Z`!r|%>v)1RuT=# zP^qdkc$Eo`Ax07+GPNy+B*eZ*0fZWgu}d){Rb%Kyy^pxvWR@>EoP0 zX!kguRoPW8pHOWl8@TE;`kPZ3ZnP^>ZI!TKsnsK57b;30X=F5&q@re1%CbT6ua4K_ z6|d{Lz7uKE1O~K^J7bhad#+0=yqzxcw4Q~;dx;*rmjb;mWz|-VCb@D*s6&qtF2P%f zQlDZg0Z9s!lC-kE;(s!duu6tUCmQ;n4dIln+983ic2D!CK)nqxMgZTQe=bRRx1Fg^ zq0}C?tqD->3Y*Ttl`-eD3Pl}AK?mvi*(FaPl_@-J!16VH=M1l1`FIri0p_3CRZ+p_ zHM$2ZZ`M;}O5I26VAH8rV|GOPyDmkMT`F5}Ty5lSRCPF%lD6FkYJ!qRc{<>lJ`B0^ z%|O$E_=k0yQ`*xk)&|28K6qCz@aJ;XZ0@DAOt>qo#D^9+YGQ6lYi$U1ld+^WveV%% zVPDDxJ5(?-0oR}SiqhWh*j1*?gEGv>@944Jx9u$iK{LOWJ?C&0(fmsFcCiBBZr7n( z%1tIjR8%agC-YmG0~#m8m>q^F`0MUk|zuG5uG>msn4>9BGAIp#5Yi>U(G2lkdUVLa(0yr zYkk9MzVuV6{{X}Y(*VJDKf8(Q3?}e}N~P`+0mKP|)bjbRc2%zR0>i4@)fsKj64;+1CE5{=x1EyQ_4ZU_#z4UBx15~g zR5_#>3Ey){e8dnt?d`hhYLfbkZ3=B2n$@{B#->!`$1wvEp;n^AFQK%#zE)USJJXym z)Snn5RhlG?Lmi{_SNPzxflMFu2haZikrKLw>bI!Lx1>|(6sIZ@6*^3&qOA`78*&=} zsg|2UPh})!K#n(OjOesU+bW$wnRBto9DmQEscIFfgbO0|mtL}_xVX%dPmuh^76*O4 z(wc;_0CGYzxhNqeNyy}lXlIBwY|3!zFLW0>0&p?=6-V{*WkRPTr&A`^n|=*GjMX-d z`-$wyrIwonp*vN$gdCEeVtjk+E$uuPZPjYEd&?jVl>=H#n$(ms`u0 zoROE5qTyEk!v`T*KN|5@blm!_V+`jGE1+t*gIj=}ar}h;01nNwfiF5t**Rv z3#Rnwy)>;TUbZD3W0Gy^M5VY>0rw6S^zRTJZKbOOws;u?0Cmx8%{G5T>Ko}&sAK$< zM0alK^8D*PTKco{N*sX|rd*h*?lA69mA=3EC9*I{0FmQaYViw~1G_;| zoeM_EV|`1`fA9nKRC+BMB-=XQvh0g;UD4G$u6a}T`&%|iZW@&Gnq(-9sDXf#t0&t& zHR$Z$Gz4YQg1Lr^X&2Y3{7eDNPfmX7m4`Z@_0#py;W2B@gzJU6d5MNlTJ)+rtgIdW z3P@Pz-<@98kkVf>*(;vd45tKl{n8y%k7-iw0NtSDGhs++sd6SpL#;5|k05tqHq)g? z46h@0Pr&i2={3$eiofjo0Mv4M10()aa)9jypHqoGq-9~f&V|PaQj;MgER(o_u&Wuz zBim1M#^^Z8Eo+O0Km)X?jJr~+Ql_rzO)fo z8vv!j50cqFfC228N<@i{rEWfi<1Q!waJ3Qctyp+-AEarB z+Az1evl*AiOzrgDOY0Wsv~8MfrjWGMCrEli;5?UM)FMVG%T6dOg&^>xsXEgGAnt`0 zJa;wYW(AO#ZQ4(Cb=agojrdB%k{00_){ z{z|~gx@S{$6X^rGj`dQ6sw(KlmklpaCP8Lp3gY@@HT5kmI3dL=l@LM3Ms!#pZz?pj z0kJ&D%%;wn)+fTL#;4J0v13cDJ`&?I7)p?r6VD4$R0iS3F^yGN0y*QNx|`bBC85Wm zT@oxsT8pXN)q15Z_TO<0xfYu7Wyji(d2OPk?cCbA7~|VqtB2KToDtu3w$_`T^9|Di zc|8PZBL@Xg1IPNJ*L}DMYR1SmtejEQbyGUC>}pAxbv%-P}BgA;8*yRsEMaD z);2!tt?4(7Me8cz2&_(tamZ+_NkQ1+)SL{swJ0xzV=2a;Lxo9-$p~%OD1tmdg&yF?R;dgZEg4VPG3gKMY)}{l? z&V$VCPe2N>ZY$k%8)d3ZHi1)!{8;RMGgL%(BDWQ{fCc7XBqhZY`G(WaI_kaW(NS+n zjS@_g$V~d4OJ1{c^#WZ5!A7rCoeOD(AX+I>QYSK^loftZ6s0KcC9(&|*EX)A(m^xJ zy6D^1Wi}ju0P`5kb3K;x(|VsWC9M~zw)_R8ciE@KZaZvDrWSw>AzYsJc2w|%Lk_O;VGfyvLRe~2o$KSP{!kUsQ5^p1+}>VH$Zy*s58 zI?egiD&;~gVsNS3(Imu7c_^5`{!GRuutNPu$VnXjVXlR@0<@srETjWSf*=rmPUUm0 zZm3qHP*Y_%7%qYx+zIRGtRLa0_?ep$+D#v>4#{@gl~rmbF8D3|GGjR~aI5P>PVJ5wavip! z(fC{h4O6i>>a|+abua1@F@gj;+IcR2sP+E*r&4BgYQ1h#ZYy%2%z3cV>;)!V2SU4| zLWFN58ggmd?tLeshxFT}cMM*eN3yz=Z$hvt(yoZp=(Xo3GKdjeZ0%cdml{Ic zLY_*yZX=w7ouq4n@onR+xR;Mewd|=%A)q?H1v^Ya>=Eqk_-DrOn zpThk`l-pNVPx@-)3GcXCy383&sVe|&ZApqYZXk^J8yth`8P{L_met}{G^)1ZpnW!& zV_hPk`SMeSRCPKp)Lh`+xsK|b>Hh%mgHXAhdaZoi4A5XwwyHxhw!ZQ=eov_Y`Vg-K zk5Ya$_DW39Nd5(IsdHQg(r%D>yPu%_)iu@rm{$5Xdd#3tYrSsO0e;-9vO|$%G)8u| z@_i*p_a1)3TI$-h?9|gCZ45N@$bzC!YBN($ewHO4pw8!^EafU01Suof{+h>0fv!sX zg4xhFTJY)dq&l-M3zI3*NeW68A6sZyN?9x&pMUBxYpMV9LF%bTs_n(14-q@!Ll*(%IAAtq|G*4 zPA#76thk3`6#jIrD$Y~){dLu-Bu65-Z>A64%I+%{sMK8jlVcb3oP) zNs|NQsjKH{rRS0NqDu!)e|1LJW8ISPIk7(olWw3m_tjE6FD0pS`AFKA5Q3K+@wk3( zzPlEeR?N3<8t8z0(*vo=h+75QbTl=w{nCE8*;3aX5Z0>lsjS;oL2|=LcBxH}(%G2^ zurlLoWZx699uC&wfgx=Ctb9gS3AAS7yTh01ov-qEK0S*tr?G zZ5DRGk56ROVZ4-}hTUz_R-lru7K4I=`E~QUtgXZNsi{t*3toKMys#&p+4>ckwHZw5 zbzd;Z)iQk#@GAGC7WAn0A63|u8lxgqstmQww$$R{Nv7=e89kW^%j|^=IFxcd{&ndu z_=ArWwD9zRDmTm^hi9vHKDa2p-1fidV*E_KV7h@ z5TA!36z35+vc1nYBA)O{kl-iMp@pEQ>RWytC6wO6}p zSG?5Bq%Eq8Zb*dl$$6##OO6O#){4@Q%WQ=OovKk%Mlr5Wjj7oHPkCK_F8=@&1~JD- z7?Gs^0J}Sqy$=2;x;am)TlU@iMx`@EtF+{IuNu>HW3;)5eTG_wfSvdxyp$Xd{*}CQ zoQ&11sZ{eA1#RG$wOK{f+FVI!(%6sy%a2XItCH?%R=o<$w`&sXl|-#8slRv9qe4pG zr-({zm!5=V5*6E9g?RM^Hl%=f)Yo>A960z#2polecg1 zwyZT$Zkr-qAE(b-72c*+;yV2riCO|JO>FJnrlBHJie*O`Ax*uwateMu1+^=CN=_6a zo1MNOe#^+Whkc%>i&eVW$_azqx9?2#TtQQ!UG}F~sqEFl>}$4<3N1pM+)OyA@1@XE zq^Wz8xbkvxGBK|2!xbjM+Rm>xU&(PV9M`xK$j(8@$L76n>CMS;bvnjZPdb|wfp$}x zsl=&V@LN(=^UNp|%t&;vDwN*W9poe^dU2^jo9!frNGIv-)2i#6kx+u+llgN00EG(b zjU%UwQmi}L^oH1$?HV*{A7P!#Qk%+_QnEm6an4Eiz&vWFRB0MwbMjZyvo%;+=V@zB zWRWM(ZhcjEPN2}Q`gFKf)q0s>Po=W-sjW<8LT*C@`bmAQ=_Lc7Qho9`(D6V3yx?r5 zI%a{>Y`{ymV_TW&b zsiRSG#Pj#)tsADk^^epFje{b#)yCH5)Kei;}G?+Qg5Ho|i z>eSYwLt50QQc{7nw3Q5#uLV+zh}n5+?hG(hadcIidB%4XI?C0(N=fx2o&c*rRKGF% z>qUh(07~LqTsS+(nQHQ>b!r5fY8`3S?fz_aV|OFYJmXyo6e~8MshldGazqCVpXTfT z)AGmw3Bb?3bDui<6LP+M@H{1cU}yBy1gPhc%L!E^ zpbyM`+#NB>MiNp%OCe8(3Sfv!(*M>NFH>>#HAC+ zEGkO2Za5kJbfp%wiAE%+XTj%>zKV?#D+%4mJ`a=QODTg(LRW4<%b)ZgwuY%l2A)VV z0!9li>>4*g7D8|X!-=w)%t3`qm z=V43VEyN_A+bA2HS@^&j&BQK+r3Y0zfsW-pHiwX{ITYsF*z;86QxzdejS=;1+u3yg z08)59p~2@T^w-W$60KQ;J<~ZNR{C_Q(=(IW3YSq>rOJy_khrKr(bSj>)SLDH04Se0 zIQ+QfKN`zY=B|*l7XDosuql2i3hZhAtJ zl_exB9&ktl)Bd_qOlUE%S^rpNkgk`E###R5;rMhli=ezt@Y{B zXeaL;>Gk4qg!IK~BQMHnG8ZTi8;+3QZAl1D(xqwuLSQ=g@1M3N< zl`eWE3XMdRQj@)Iy!x`{^&O$M+auPqfywlz@2!;@#xi!IFN6V#lVtTZ-f1 zRY)$fqYZ$fmlA|>R<$Q)aB>a~J@r+|aiBoK>Z>HQmgF9xNZ*{(&?V1(D}FxYh>a}@ zQq~T41cUjK2pHSvTuL;Y+JFt?l2?CG*%RETD$rN;GZj>n)P@@fLoho!3j}i|Tpy(7Kb;2ZQ7(}p4K7ntA7z(o9jNWNr4Zs2aIfZ)3UJy$ z1fD&#^loX@c9wn~N|zrI{)e*CknDKuwJn$o$y{`#MS1edO5FT`VU;8lB#&}@cp6D0RSwzodcgf78yotnlsFJWY;OReX^<6r@@VrrKI0c1)Byr(G#nE8era zw&36$-ad7jrx2p!&OH>?3=j-@?wzO5->bCHlR3DvNl$hw3f_bq0kum>Rx$C8HHMA* zXgt6!Z^;7vI}9bn8hsi=k37O%WwygAeZ#yJ5E0zl_8G=T2C_b_OPm7}(Nb#@z7t%U z^x0A+H3grehT=zdc}9Pbf&oxcKuSqI0Q0RZvuhX)Lno(nrn3Z2VQH<3lt|{O7E_?h zclkZ_rwIpuLdG%2sPXpJmeFH`Ik5`g7EECO06C{9R@8TkPSqlQB{M4qb4pV7t!F7{ zEy2z}&Nv?fNNPQVct=Z5B`OzAlaJTgO{sQ`CXBejxUF}p4kkMb2?}uo1x3}VK#kbQ zDg%!ihUL!=*6a-b0K!iUxWZYQ+jN>;QRZN^9m-?fw;FLHYT7Eo0oXsQ$R6JMt(3(_ z2zCfg+CoIhMyy=%V?c{3DEdXSDKGY;fJ=#5H_ zYyq(3a-N>L;=fZ+W)jluR%Dn#2;Q{GKrNuB7%2rLl1aw1T-m=&j%a|^H|n7b-IC-V zq?)$cLLs<~k(RdsM3r`ieTuhwxf%Otf7_TGADz*0X*+I&L)&t)mm5>xMHLTH22`af zwp1Hh5DJ2MBp+DutLhn~dz_*w=m~cqDe84v9a2d%9FnvM*bjD?O1&vUPvslP<2cg? z=+gRQ5$P(bj}MNYET#%Qn<x8m>_dXNe8mjWWlYt{WP++ zBT|D*!KpW#cQNSRP7+k2F`ZQQI+yh~o?VikE?Q*%X`+30TsNpOCbZ%mN>$%ZJwYo4 zybazl$p_y&XN_s4XxfZ%Zpzk;Ssv-F`jc`hZamAXX^;VkvxOsad^FV?C@+x)d5SxeibaXbvCik{IWGA?k<7rUm1dp6?tn9AP1t4;FKccLN zBN7kMY*VDhfd-#Us>XIR&jq~=8&ahqY6Q2QRrVxj$Bk6>nyw{=Kt-*l=SVqH8mt<< z%TI?EjZbDISa4rzmsytZL`G{xNC+xk?cPd>NFLyL&aB}~r%CU9S48scy7uoN27+go ze$%pckfP;26*2LP2Rma85Zv{j_e}*25S91nzf_MQf_m zcHZI^P$EW=HHysWtt#)48|lqu&Bw77Gt2oaJhj*c2=5Z3^aj~| zNiU#BrIauJ3AVungpdN$u{(gk8&VHEo-wY4+ngKK-TJ3LbO1BokxmZHVy4n-F9kIr zmy}*C4%&+;8A|u1SyC6kQBd>g&aex5)ScnD;N*0bLuoiWc%A)Li;`tl8mF}DH0pFp zb9>g)U(0QKmAtpKjvv^cBaD0Nr%s5X=QugeoM-gxtfNe^xonf)^+bt266H#n4m)ur z)v(N7`-?*vX(R~+NgF>o@IQTMeOkeRq~LTJS^#r)pPD5SmY7q}(ez z*E_HQ{NrHqJSget-GM~t1UfM(#YYy9N7Xh!X&o8#|+{ zzMPGUc%&>zlL?V3S(sG0Dv$|4!d)NBCy~hVG3}oks<`lIIKY(6W|4v=TMu-~YF7fL z<;4+HwSV=>bWrYOp=(EFruHj>3#u7UkU7`SDtvQBlibEqcZkewEeXnADP3d?6Hj{AO zl~*2A#s><0$m(H8VZ=F-kT&{KIQP#dgfoe83WBB36zLB$SkN>6>CA<$r8;)Q4w8CE zk5RIxBgMF@0u;*hf5l?k)RvrqO$sS;JvFqbFk5K~3MdXOBn0wCI3r%Bn6;!H)_Gj> zE+ArhlCrqD&H>v5m6vGLFB`6f6X>6*O_u7*)R*OkBs|#iP_wfH5>5vv1Y=z5+tF=A zlHnKt#DGe6H&NzCLBFcCZeE)+YxNc_nNg+Buk3nEVG7%AOMS^nN*5mrSOL^DRs)U@ z6OZcST>GnlD80<6&_EJgaNfV*B+_7$E$Pqc*Rtx)pV7LP(-~Dhq+HI+rcb3)Tq%Kb zx`m=OCNsbAksEu|p5ab=g-4O&&b$v8eUA{QPRg5sE<4ly^SM2jN`vl<6Apne?0kXd zx$@-dQ=L(lG6lUtmY43S%r4=x>GEA}1LQJL>KSP`NmI(&QiKi1Y0sT^thgIEP;2Yd zZ;_`o$=JH^{$R##jGY{9_rqy(0ajNW@WsaCaGwyivhP<*b!n61iN>{MmUj3UF5${RvkXsH=(!q9A}sB`2K#=86)!?B|Jmo?g1f*|T} z^yb-Aj|Q7#Q8UO5)UMm1UfnsOHCXCpwNI){n&;8eZJ33ChnQaAhM7nTX(S_is@yOW zm8+gLpNLhV#A^X*P=Ok?5=!sIy>w^J~Om_T`CDWb{_ z5D>016uj$QUJt??z|&Rv#P1P;W1OAm*)?7vOIDUJgUpPdZi;sj_qVRP9Y&!FvZ_rl z>C;nkbwQR)%0$N6FRrN5Zh{+94)*u93RjKD8RJ=QxE+2QRhZW2KmbV8+53_@?x}sN zs=H$(;syt=uQeRF-0A&KrRcsD)OvM(yVFLQtFFHZ^DX(!)l!5x4s|L<#VIR8%I@zw zi1Z-uNXMe2IIFI-eV738nZ}Sdhhzc{-S@)I`ZsNPc7W3C9)xx+{MQIyH-)7#t$0zX zboftD&1O`(6~RfBHPv=xvfOkgE0q#t78^nU?Yv69Po!(<+%#1d%oRZnjDr(B^yB4% zw$ov28zkx*nbrA3`m2tGO@%(ma;tAy?be>5w)I*}6f75`BBd!2BCW@rE*Y&h7~1T0 zgsCOMv@aRPf&q6Rv{kCm(E5eOaUx9m&IhPn;b>SFTxhW%RAjWNwH2k>wZ74DmLRkc z+R)odR#fuRpimaI5L2`Oaj%GcM|Wy29?b=%q~xEy=r#dtrs{#ZoA*u#22ZKjlEJXZS$-)cUIJ2OT&j&ciqlG=!vUP zQ!OSN(hrz^%bWV=(@I4~t4g3wG)pSx|(eobYsnpRL4BB0g+Y@RuHOUbd zRXeg+gzAVYT9B1Eq6Sm>NGDx)d_k&X&+Ax<*p<6CH#2R#jkK_dqH!S{TEP$najahNT&YVsSqGN_(c&udA(4FTqq6&7%sY>>34m>Y7=eK!1BEd&-np1xPL-AdqlE zxYjqa*2Rvr4cAf415Lu#icT2IN}IxD#9vw}mtg%{g+ZmfFj^|cPbnJU+0mz1&0tF-CBJ!{ z9jBNa{;8VdP@gWYttUR*lyj<^iLq)7))=r}mmzJ{E0qwWM1dM}otbf;VJT9bZN(54 z+4UvQ<~DGmM{9zeVf5hDXc%vCkl=T0dS_yToaQ_FZJ8f*z-)W+{FIfC;fB?r((Q`X zy&3uO<3BnR^_f!TK8SJx+j(+gMlSyVB0P<$QF$9w*d!35G6nC&uDObO<)py?01h%F z?;XZh8smvnss^fruwVfiLFqgGiceK@r?l8MeKuw8wkq#h&`s?Q41)@#5fLUjs&g=< zI?_I=xJ~w(DQ&_~paQa$D;M5b(ztahmhW{&?Be06jBx-FreGetx*RQboGPX5P}**5 zi5W7|8VC0Y$E+?@i(9nsKBL^-QR*3yYT3_JGTULivAZj7SnA=u%=v1jpH27eS=PLWUX)CprriBzXvtXxIGcSNDJ9S=a1gcll2R>~04)?31Z zDNs8`Yf}_CUS2QgyT|t#eqT*&Za5ECt&iu*bvRhW8C5&{5+DylAA`xT6 z{3?@k!lc*g9aO&WrA?K1QR`4zZl3$Ew&ZoqN>;JkZMGADgcky~B&U?*-Bsqb(;jJx zG^s{{37tFX?saBNM43F5VyB-|gFpuXpyT&F@Tu!k#)SgSl~k*6HWS@emi zcB-{0dl0EiC^D6jcBg>hMp9GA$Dp|5Ep<~)o|n`oNN{sVW4$^@J(ofEwA^$DjYnfU z9@vG^y*|7sx1AP=CZ}#cZ(j7ttuZ#!t;mkl?)wp2W|=KP4L1B>6SO77Bq_iK{o6V7 zJXN)R(Xb; zPI>(~4(cP*>g>wp(bJxv&s{x))*6=tIZ|n!rIMtB$2@D>GQyiH zy0d=!gdE8EY!_aY8aj*g%a1&dqONTkT-tqB; zgTcnP)0W5xJj57M8jCc4#2~HcuLQ@AQ7#g)_S5Hk4k;vrD2>TVf!KXH#x(kic}lI& z=FY4sW7K+mO-Oc!9f=hgg%RaZJ=Nk$@N>#CG%S065aB>bc zlKz!zhG?ch2Xb%JXL%?u7}wr>8p^i&!zkLeLS=V9|#r7o{d zr&H?^rc%vDvuY_)aiONIMQl#yJ}DmF?<1?PzwEzXMOLs1@Z~nvZB~(vXYU_vh+2gzRQ$eR=-+mq zanG`cbWZlMqQ;v#eRgVkg;`Hxz8nctk428&TT~S^fD%fIK`SLk89Byv=l&|;w~ugZ z7(4-%#=*z?mRH+rX?CCoOi1)yg=M0tQI|ldF;`_U~H`QKqmm_Tn-1pUvpLBkOAyD1eTHh(03fdp^`BJ=lN#}Bi4Hp_?E5K>XgVUwPMq! zlr-xwmGndO!RsLbfR} zYyEkvF@Ib#VWHY34XI0dlK~B@xEjkvuc&a~C=zyzcskWZqpYkhbbsRzJ6r{mAngsVhl9Iuv zQK@awXH}-oj9Lno;#-c}$uk;8=9}80JBeF~1tmbM)JA?$z@7F?**GLht~!H$NUk?7 z`nbasQyu~&%%&1zY?1*a?8<^ukP-;=`vL8zVA2z5*5K9*c3xv$pTz~jD9EF9^@lAP zvz0MdRqi$ly+qAX-pO?-8yZ4=CLA{&C}4TT@w(tEEo0M@>*#!6sX|>__UPJr?Nwn^0Yie)RtUs|d1P zdX8M`6=L9u+cT&Y62qx1!jCW}Jos{!oRuL(K^{Fr8b^>uL23SMnw1-pK&Bg59K;gF z_Nd*-=vBWbr^Y?8F4Ly<237lZs2M_~7lvV%57aiU>Xq7-%f(=jlmZZ-3UE01$HsSd zv^aopU^5z=>B#JRjgB+Ta_=fuWm%{i3Ei#Q2he=wd4YJ(kv8qFv0HVTTG~sU$dMUC zOt~e4+re#+kdmb&|#wtUGgFlHQ~yfk#r}zGTxB zS~D2RRN0acj`~?S-kgp&I`XwGF8DKC)_`rnC9Wb!oar%`AgpS-9_JEv8PEr;W6@JxZt1;RZQo(jYLKQT*{@NmbsKVJDpRuLn9OYt zu$ZL{p|abl1hxqZ9<6%cfwWh*bDCt6u>%BinOnG3$fU!V1oqNSef4Dv_5y7b673zrRMzz;=kbc%sh>K*e%pi)?A$x|L}b6RmJLjpS^ zE|p|s@{f*m3+D?J)lkOiaGAjBy~DRG8*-gVpjxil?$Tnrm#LMwjUl-WtRyAGpr?}3 z^Pbr_*}=f8DN^vkVPl~pF#RrE7S>UFHbsnxiF*PEr)X=*@j zEmk^Im2OJWfS^ezSm&Km_GoYsjlo)6(B||10B%1t`PNF)6`MlYi%o|#=A{XWqp+WC z_gr!*Q?8*I9PLI3-VQmz!NAc@tKBmgN&sLcNcP9kQ(a58?K$u*s?^Gpm1v)dw6~*} z?W`uGmbW7)P6LTrG8{^P;CfDY)i)1u0ILH_np#MM)1v28Ic~waAoU{IlM<0~IazDy zY}gU^!$gRCOogzsur`(BauTF*oFBg~y|}4RK46YeBm5`ODfvJJfO95(T+>zZUAQi1 zYn68A(4f}kxhAnC*r`)4M+)ukW-EIbN~4kkfhrsv{k46~lPfeFf;o-<0A%9t!;sPr z*f@`tR3J8y3h<9ud8u;fTSE#&p8o)Qdehr=r(4{h7SSG;GM+JzK-ZtIOj=eT8IiyE z>aX!%P|JY;e?O9+D0bTKCZB^zsfd#4boEtYMU?6tY4+m}=Ad$wrDz8r4F3RaTq+8n zHO`Uz-Dc9~83XD2D9stl^&REbs5G}^Ty!VbIx^Zr!cb`#Q;TG>crAh4N|VUOeYM=P zVQVx_6;*1rt`2la{QWtU@ovJoD^Az0Hkzu-y6R2IJw~b2qs5y=lq9QscM$N{;}5Am zqM_wuAmov)p{{Ttq=@G~qN&#`bym6HImaQoP6t^SmC9FBP~z5KW}hL+keYNM4z14M zbe>eCD1n5P6M>-G2AoNiYxN1A=VZMW0Gm^Z9ogum#Ca}#M6%I%Hjtij+I>flVWV*I z04(&};vu4aS6_6;s&uPAq_>?0MGW5eJw*y?&=cYnLWvz?V&7@ej@rN(DbJj7rE5;1 z2+(Z-P`bOkqwqFlpKeQ&Uw)kIsHv;A{Q7hT9ZFzDc}=*5EPiD7Gqmo(P{%qoXt9pg zH#_%0KVNUJvRcyoZX;@u0&~>#RLY_-^l}d8j{&zll!a#*#*3;o*eT7&hGY+z$G3HP zrp&nNk>X6f9C~FQ-&9+E3ld%}tUn}Wwt;s$+e)}2Baa%X!Vi<=Qaa`JhL||Xh$a*o z{pmeRrT2{MO7|E@-9AKApa=63o!k_wz`@7QI>zD)NZE8~ii{E<&qK0j=?#@}^~H+axow(y?+azMRB4UB zBk30*rZTAvHs}gMGMt=|xAfL}bVI5DaT|A4SG{p=lG!_8{)Kf_qt&}D%VoQE>7_-Y zRA{BfYF9dB7hiK~Heqczll;xRB|$|B#!_{QiJ9J#v z=%pk`XcLL^DVI;|ufgvYt2G4AtWn!ja%ndeHPD0gN#PLImsRNqAcYKlzBE1+t4i{L zaA|AWatY6`p;Xo4M*0D95F!ki3FE4?AMvf_UXM_2t3|Fi8KXzCR=)v?7wyZ9gTy;k2wR@!tTuUmT z+G*5CvN7~abwMX3YRZwflAaG9HC2sT7c_iYZVzZUgN1^%$hc^22N6t1f*^xcp9gJd^d5zYE^lytW+fF(;jX|_v*Ve_-ENI{7p_H zmIjW-R7uN*#)V(Et%jF(MuSdmY**+rr!?DvNN6A}M z-{KC>wQWiVPh?f4Qcb}Xx_xF#$dxi1IZ#WjDT$9f$qfvpNk-pdlkKW)_)XnAg8B{* zqH^p8zdP-}Vz*fejHWY%%(j`P8K~t^ZoVcI8Pt9;`Xh&wsxkS zz~p&@Jr;|0vBqG`Vq_>i@`_y^qe!mO>R*a3NiEc!OKD}LZa^R<2_+!>;~Dde>!>TR zI6Mrkl_^wpD0vggI(w#x)ihP9tVUe6;~uV}lrMKBurcZ9$F`l}(rb4UVS^9;jGB!F!5`2HAu~lL#QEbs17siel=t)**GFsS=k*pvTkY=TJ=)2 znsis(OBG9^GXAAdB&_6pWjQCj5U>aiG?JX-IM*YK@v~~?vXfd|Mnj}X?Cq8dkF;s> z#-e%Qzcp*pn6j-qirtH9-!+TIk1)L5Ry&P-E9|s{`j*q>1=ctj+H;ZZu0IW{cYjgM zytWNzA`WA@PjB|o<*epOFf@%=JI60|BeVYiifN6`oo!WU6MBU?$p#%Js>G+5b=DBA zvC$;6g0O_({LU}HjxcYTu zO|FZs;*u-ZZNp8D+mq@lF1JhzM$|bKOYAI^E7Gv@fl2uzUp}|vcXWuMP8&!#lOK=$ zz)X7u$`7jTH64cT7z|IT#-+XdJ~0-=cH!wQZTM8Hh9`1s^+s0}hZh;*RK%sB#pXx} z=W}@}@OKSY@kty(&Anqw=*FIKBXPDp(>xcvxU`UVfJkqyaSD6XD^`~hpv=moHe=iq z;K_{?!;tGN$O~ymRD{YxoM`uf18Gnk;EgxKuYDH>Q!OkIV0ojl=POmEpM_PgGCIKq zexH)$K80G!z3jfD^u_lGYP(IYy-aB;4LX^0D8F3F65&d=65<939^`$;?t^yLQl(gC zSlOSu4;oHA*Dl(lsa`-IdD=R{tK^8qg`nFDb+bhrqL=YC~e8kL_!#- zmy&=IR^#DBXVt+{yysk>hwaF_6nAKGfzWb=+@n$T?<%#R%`px=OizALywjTEqcRS^*GCNob#A<_lQ zKZqRnI-`H4PFgU1mtoC&z-tURb2<5|d!|%6j9aycw3kGxMQ)hrmo>)AjkMYl9dM{8 zJ4--r-RuE6tKtq8+BVF%qU}_icZ{_3a=(S%e^4}tsWAY-GllDi@aIUNU!5H5jW*Jf zm^Fx(99o-ImAa)-43uqcu$LW4BshTKC{Q6=!2|^B=A1(7!E;F&-haaMm6+>$%_q$* z9!U-(9NpKnsZ+LhTJB>{l}NNCK(*tr^jiDXx}H=&!^?RPToGgw-3$~UsQ~hTN;ps& z*J%1rspW7aj(eZ@L;mvjQ50Gp;tY9kz#aFpxO1yDI)!STNP6Nkkki7e0)nMyz;>Mfau{vAY-mmEOPH3sXYms_^_tPRNWeYU8;2 z&q`dC&Zft8nG~sEN@S&(5gICp&hV8tl_A8fBl@+8^gK3)9%q{6Hn|s#rZ>4oU;mE6SB` z#iKJsl_UH?+Chy{ivIvHWVe8&Hne{E~9KE!Dl==-f&MFzH(s)WjJsx?$Z+h44d zx-C(4YFy}TU$Ey$Xt?yn5wc4!5|@Hx0mrA%c*z>jY0EU=d;aU3`ljWCi6m!GX@MU_ z)zhA!^#<#Y)&BtSeF55yDjMLuXkSga8e-BwS{{upq^YM=gOHHsaya|w(x+C~5aS1y zH4pHGdNgmt0c(p{lcm}<9{ob4?b?k-iPT0es(ncoNvf_)Lk22Lc#ORvKgvQK1%0O0 zM%*YA^XC}Us7`~Z=d3L?Lra=i&>GXR$phD#hg_4Y@v1WEGpO^MuC8*VO+<3FA+&?I zxQ3CG?Evm7PDVM^PO2El1UtVp_f=Z=6Nb*i{C@(3SNf9*C@1p5O-|w*HDVrTeL?iPl0Tb+wMT)EvGK1p#Vid5h{vMk+6r~ws2m(ZuX?jj zuG`hdD%5$3j%6ez#AM@Vx_vtI9}V47sYTSPHddSZ)M&Y}Ao5@T)bh+FBMBG^KKlCu zSAZ@tDE|PH2|xMc=Z!P6k-5l4QEU*TWGg)U{{U?c$=cVQ(ShChRh~Cwj2#mJC=tF9 zc^nIMak`8c5Yz9e92rWk>rnb{Ana4Fb8x}tmmAlcu$Q8P8bn_ zR7mo2bM1{W%2GlHP=r}|P1mL8QH~@U;Y9(0X9P*41 zNhda>=vfo6#1xNK+~`q$<%H zkmS@vF9#Oh{{YL|YrAk(AE{B2@gd{FLOgCYK&GX9QTmB3dDL3ZHQ!j^=yeNqoa$MQtprI4f3pDLmwHsw-WPWDQ4T<*p(Lk6+P8=RW)?tbIJU)fLiL z-tHFxd9>thz(~dq8Q^JY)bY>t0Fa1)BXyy=a?=Sh-3`cL3Yg>AB?U`Ygd}Gq56rA% zTioWxMmAP32JQa<2|9}|*Xoq_+j&WeB2#h1^r23?^R45$rc&pnq#${4f_;;$^xoPG zA~OWW-!&T23}QR&^iI;K4Y^y2wN#yj8@}eywEqCbNJ|`L4sw>$pKKC-+RIA)qKO5v zev0JTvNHi z0e8X@ocf6K`)c~l65TRCB}+++nfLt@RVt{pwcP?Ixj?0iHuYRIZun=mOiLK&De!azklD{{UE= zw71qmR-FD`NFV?(N%z)!>$QVXqG+Ry899rDR zGoQ@@H1qmpM;Wa|iimGhT~vps66+A$3R6o{goG8XSo4q5T3>GWNO*ub_D=vE!j>*0 zifQ8WgsEu)tm^?GA#QMixDZY~&Zwfo3Ji14Abr!NI*lYjWfvkFio>pUgf;?F3&_qE=F)PLgSS33 zpJ#7~O9?&7K*qSh5VPv0Ji{rX#7x+|;S~-NkfbmF0H!D>J^sa(2^R{gOaO#G942N0Q7V@8}PXj`|i{w10~ceV`sRn z-Jn(E4|APtWk$5loxhTnUQR!q(6Kr9Dj!f|B1A@zTbAl~K89LIA+FKjB&YP_=UnQ} z-V77BB6KlfgC%A0A*HVBnLe$E zh?i1`*rypON*#{lWU1vpJ#8UI4)7KH9#u(`y!h*aMniOY+f==Os5p8Z%0!xAjiOdO&SUjN2#)ON15eNo^@O zQRC13^~R>^u6wZ{9;x&}ke=LBs&sV9Zl1YM7k-ixc*2#x+w79B*BHsw)tK6_+4WR; zpOd^TswFxV8Ku?gj`v=Qz-`d+CBEX8NIQA_r;*R!-%_c!;Zs$W2e zj!LHN**06MAiU-Z&eP*=4~=VOpY+U-9mx{F1fBaP_;j^a=9j6o^*qyu6o^R4*t7tJ zA;Nt)UPwp-&ZyF9klk74c1tgCfK2}YFcU0TH7aDbCntO=Tz8~Hn7|<}9j66Y;2fwF z+gw-;iFfxgR$e0!iw)V04QaK!v&(Dov@q5Fs8(mfr?3#1KT_P8=|)nN#bg9F+4oT= zAZ|Z@wzM^^q{ld)G<{XHss}qr80*bQ>PI;SEeXQI++31lb*DZrHk?M~7{ z2GP$Nrb`+b0ifiWS}v)1M$z?66KPJus=#6TEOjC!HM1cV8SVZbOcDuHsV*fOmZuh1 zk4Gec5_s0jceS+K;Ox#IWb^@OqI8WTRC45ytwClg-hMS*Hzh&o0#rzHT3b;SAxO&$ zmERyNpd6tX89qTHN-kYd@>{17I48V9vt36z01?uE;chg|PBJL5s`WKgWF<~iC&`im zSwUCjLJCTDq$fK!6OMI`<;{6>sfYsusae4##1@P#sne$#V@)>WvXxYQA~$G|mqJy9 z?`dU4TT_(eVmUgtgM$lZYa`l_ouwei_YTBS6YDQ-h*K#qg;VbWb&(j)_wp=tmhK*k5< z9~#R>=lY^d&dHe%5aMB1byFTKN;GHcDVZKn`g&dxnC>{Hhp3biM;vXy#|P(KyF;#B z8*Z()bdm_$pJXvAQy|8D$nwY3FiXNSsmhi&0G`=a27G7xYMRu<4pOP8VZaQ|>E0DR zsWKB)T9Dl;J7B6A^faZZTa<-!kOw6D=^Xz60+`&m^FqBs%mKgibTVkofaCBGSz>5P zA8oclOGzWqxTo1^N%dz}S=<7`9&$64c&OGk3`gp%j+rWpZBuK;p!>{J{-x1Jb(Yk( zrACy?YFA;T?#|UGIU~S7ro3Or&AYi2MFTYd01(<8%3b;{t+A!2CJ%MJDzN}TqSYbZ zCYapkT#E8th=n}`q@Eu7b%h}+N>jIa89Rp=*AD05+qUTspbnJ{7e zEJ41RPlF*5p){vm9;5}n=KOg9DOLtGnbcoG+3%(dPNEM!-Il5~TTllW59Q1sQ^{;e zv}N?#ru_SKNf&LsQFbh(Hx2n6r=4_|)d z=T??fb~y-`{{YK%F;77u(PTla+jQEzI&CsLl?qixiB~aOQ>oh1-<_pAfZ_^=Z+Y4Q z=NZ>){{U9-s`R`%;#^=jJFjk{QqgPLW|<}3U>~Uo#?tBKZ>m+Bf|q$#%4|BMrFc6Q;l;z1)CPd=i0E~BpQE3nhn z?0R7Ss$T6dbk2_shfJK+uR^8AZ7nq9f~jb2#rD*Po_$*neQ8Ksl%ynKNkHF?c#&WJ z>r~dL-EVQs2yf6&my>z(Fu89xF8jsK<(bdyp*EEwp>{Uq`xmJTtW0jDQKr&enIx%* zh8tO^M1aJF5c>!P)znKV$pdM@BfS2K{{XAg;xkjEOui^IYniB#XQJO?mnCdB4omEI zoou8Hy9zkZ2XV;tbFVL9e(G&|ZRAhh)-_0-`jQGQ8s)WGS|br3B^RhS9^azEH0yvo zl&!btT9w&~sH(FS4XZTxQ^GLL0=A6uc;tE4M#R3oVro()zuin|(0MuF?mDW)xTfIx zo@P#V501ocxGKM6(yCWH_?C_LNPdesm+KOvNO-iCX^c47O+8}(mlC%MRM9)Xmb2~8 z**GieSEkooG9Julnf~GHxLup7Zl^7wFQ)B|CO&En4T@aYbs8->@o!3t3S3U0OJYcp znzLo#sLExsor#SZ*4qnK?Z6PQeYM{No$|Sk8bH%BcLpGSvYt9C()o9@?p13vQBbn2 z>V$P&F#Do3mxGPEkRrZEA-4h&;0OBC@1XjDfJ!v!y076nM&xo`>@3P%KI*dX3tEVq zYMoMpSf=$hTTiLKsEVe;u%e3_q?r}3G32iOQz<7Qo0yh)oL9wUvKKvl?44!W=k(2rx{4} zmdGCJ0Oae>aJyTpfXZGKGS+!z&DeC1LC?>jOl~WK=5Qmp4v$WL%bDx9Z$`@$m*8AC zS5$g{?3BFCdc4Dl5ZWhtqlo?0CBg{j92|HfUedh+&fM^SWB0)gB#E zs3-k0-8o`^?E#{k7`fBu-9W^miONnVw)sDiMcm)?7TER#_8NkkQto%oc)3OEC zN0e+q$v%h%yom%K=j6K&r$58RDuqU3Z&O`nr&gf5^(nSvDQ-ndhp8;d$q991JGP(< zak!m)=Zk!7`n4j)o{({@k2kR7Jyq1{Iqfnr(og8RenfgZ^cG|~hUjoBsSb;D z+B5~-cM~+}w(V+agN*5zRB;1bG&zx-!6R;?y1goQ$60B%T&vpSp<6%VYjT?9$@mKu=O@;f zn!_SW6;p)5Ty3`5Zw&UH!rtBL2~gZJabJWitm{x=xzb*AkU)YDD9)F3cO%(jy0UE$ z!tnZScQKp4`Y8>t#MzLDQ?pi$-M1Z6ZU&MGJD2GS+;;0pYi&4zYw8+}t(<~% zf21E=<6-kwxC&JPX(T)EV4VG7Q;{ZBs3MDe8p@+FR-WXD*994FEfL*wG7L7~Qc}xq zA#3hA9b+iS_TydZv}o7WM2R3}rZP5?H$9xXAj^ozF|?1U8?B3rtJUglCf}q|1UeHm zQ6$l>2#POEsl%Mwo7*|Wp3!l()UXN=4po!SI(mEtlgWGh(j!mdZf66MdUkCdW0!yV zKEsl9uz!dITTxW%dVNH%U2VfuYR%tTeaEIxjo(waIYQ9Vl7%G;SRqPEa!ypOW4`!S zoy(!s9M*0aFwjpw@yS$pWf!|uLi5-_Z1n+I_JvodeMfh@RC&rrO={KXv#FHh5=LT9 zX+clZAV?fWW?4`Q5*8A)B_SKI0p``P;kH`Hb4ANoMlxUhq_=HDksD;H38dE+w@$BL zG=KU>vg+w{Dy`xrQDe@5Q*BjQ2!~0CrsDnQ1+?B1+;v z+us^XIYJaL>K;g1P81Hi6nG`At)m}u)BSEuIctC1BnJb(BGU^=t{F@M0SA!$`zp?5 zuSs&fZQj=9-8%4-)VVU%Nx#0E=w3xxzvr5Kc@h+Gg1~X70>`9bKbY&Z+lPuSwlsqU z5GI*23qJ0$2Kk2w$x^FH#_%@D`SL#5Ty@kt$=kN-u2w0(T*W3-wxkHNohvTPj?ZAr zeZ9&+c|#*0oDMUupztdLYi!0kH37?D4q$DLYh^Z?Yz>)8boPrvuU;0tHJYr5DtWe~ z)+$m$P$A5Y;+#_0Sja7*Au0u9&PR-ExW;N%R4>!y$>si3?#rfJY3i-{E~e6Iti_o6 zZaS(|oEN1jOJZYW5PzMG;Yl73#-kc_VFwe9V?5Q7dQwp9uo#LQmm#9p(7J`}oV1j0 z+}nyuTatwZU;~AFbE}<9z#$gX#&hgGp)=Fyuf~wv_|C|k4rEm(pn{Nt5$4Godu|Nz zjoWZGk^5@BFhW2}KS&D4s#_&?)IOk4nyf>vP+pA|u|k5TWYZ*ttfghAkps5rLGMgpq6G)ttufsyqttxtSfYZ!?Pt9ymEXzuhQI9UG z2BR_7J5EWI@oC2DO{do2TvMEf6^x{FfC$%_zWCzy;f|)pum@ukslJX`$Z7JEA3&Vz z*D@y4NWU%b({(JLudv))N)#{oN7`Ey)i?iBD#*Lu@R9qVCM(hmquN1+tQP z)*px~o*>3kw=Q<%mgo3Bt8E%TYHY9)0naV_{)*S@Q%v0yX!N^&hc!R;ZT*()DHegi40WyNZy`N#3_cQZtNzc?UiYzOhQH zZ|Dk)F+E1bZl)eu=`as3@T#a%+iqZ(faE3;ys-KTl%_}j0CGZ)?W+qlH$gIx2*UMe z_-3!vr*z_7Hk)x8Lfc6Y!q`YlOLUdDAgm0iD+>JM1bgRSE8>?<;ap3`WiaA#GDoth zr%Q=|S7Fj9m79`SVySb+b(Y&h?^W4A?;)03Nqr=&g5s7^LI;DKV~lIkS^R5C^5K*z zQZntyBOaYrhZjJBy0NZUb&9m=D5O`U)2hlCq0!q6Zf!|Y1X8S=_f|>#!)W8!oqYy_ z01)gb;pM;tdTy$keGW0XDbYz`A{D$im%WEoxr8KpvUr^E7*K@cDDozqkM;`S#^CbEqsyOH?aTprthMM{I>icwuPTPXPg34;o%FI&pSqTKLh-1hsjWnA~!-0i%` zaeJFeRKk0TlH!T}T1FH4bE_Hy%mcSI&b@V7C85j$qlEZi#5en#?Spz^N`3wux;=gL z&#!VGz3nOVb74fD{23Jp%Z|*)hFFg5WjHY4b9Uqpe1LTwP84lwb%QkAJBt7EX_w4J47ZuG4@?l~Ol;6V^KNY*~5-WcsM?zp=8yX<@V z)~H;)Mzb8D+curk99tJ70WwVJ(H~e$N7;EPSVOM@(}Qk!2gaGNcy34NklN9>d8bY8 z5Hr)}7njwVyY=g$w>lglPNq~UZ^)+55~AY~n^T0MI|xxJ2~K|~7}E+N(>&GgtZ6jU zrcR%KuT^2(-FLg{7Svm1r;KL<3?ijnX-+XY=b~jSxZ;{pP^GqyKu}0Ka1V`nG4P{b zchQrbe2B`H5IgZ#W7wvo@CQz@Bfb!rX`A74P6;9gg3Yl4$qi*Q$Il^C+q zP^U?cA!0;zAv->*I=28^+mz&Td>v7JL6vEixM1!R)UR7i2S}cAy6p~@^`G(NSD3l( zOKy(1Y(-(4)}lqd4I0&>ge7`ouAek*u7uXjwS-xn&cD)EIiF=%b63xP&df?5e-*1}PhHUTBE z%5Z+#_8b#~+St+tiy*o+6S?*7wNRnqfE>WUHUo3t3zsiw6^g{gTvF(+Qa-u1-H9Eh z7Sj$#9+0*|zoZ{H<6Ww>!~zBq)4Znhq&RwKbd|Me&a6a~VWA0AZ?g!pv$e#%AzNEk z!^ufJ9C+6?*S-s+oG#6;4mVO`?(^yDx;OZKy;$gnP*qfZ&sX@u*o9CPtA4L3ahj>K z+aK`g{#yHPB#r4Kg^YlC){$^3w^K+nu^*9G9b-(?0=ae$LSNlGLY9P={%a#=xk3 zr)W{C6J{Z%X>ZJ@Fzgr=S5%gtDX64my0?8RMgmj{R5`&TPg16q!78&&wJK^7U~knP zo{2Q7j9L|7H&S|?QGNQe=#JaP#+YGE<+FkkFs!A*K*+&3Ins>52ia&WmSjZZn&t1} zV)%t~RxKJmG%az|3|TUvGxWu$ke<^a_JA04rA0&^P{#y=te171B1Sr`HuP!Ru;?I9 zAJ)FPR;^0S>7Bn(w`p`r{{T#C5E-~8z-_nQL8v-AGJ`S{R9f_4 zywX>+k-aGx#))BwV&85UNfm*U&Sb~YaV-wtw(2azepMy}N?k&uDir#(I+9|_gyXH3 zVKAk)o7h9GCp3%Wzbfi@bycr(jB*|RNDL+)ub09>$u~} zLTPE3;>m3f$5=wi+k>5M>@>vgHgunx>ihcwY-Booq_BpE3C z(WzHOGwLWxlET$ic^j0}#irVzjP*K^Ri@MF6=hkLWrsw+l(nsQoz{Am*0E(5tM+aV|;)St|g#xQgo;_>A&o9uMj z0~`xvmw9LF*;lhD)JwVqFQJJcH5L+;CR$XNOm~(Kbao05fRz9U2R#1(R;UL@C3`3h zJNqcSI*n@3szI(>mAC9$qK?wqjQdDiO-dnL_LK%vrT+j@6iR)wjS7Lz$M7p{>9&kL zjRf-t6X_~h*SOV3?cSMn1pzZ)Ukfi6*PXkKkIgFB3 zbn3Omzz8#u8+)qG>7CQ7nVS}En*v>{cEyI|KA@(1p-?4AN{41lHvuI9Lm^2}8mZ-_ znQRfwY^O%6DTlfG5`)FHL71h2mt-JV(JUlVGlRuQF`Y-ryO*QF| zX|*{sCC*c|`4n}!>;UT|lq{5$5~TnNFm>a+JAZ|3T+?0Er1?Q05%T=XYg>P?2O70t zP6P~&s;6e)zHbYn+UmoqO#s{VXK0Y0c02VPGUCWXvdhUpKs$ElBVvyq8rc3LO1o*+ zszVwx=HKVdbgJLdtx43`mWV!L8YFZ9O)hE;jd|Cq0$sm&LAatb^m8r-j>sL-;c>M% z*;rG}sb1+DaqxBLIR5~~Hr7=s)U>F_f%k-&J(dg3ENHL>)&xdc2kQ!}>pSr1wv~G7 zuQZbUC@s<@QDp?rZce~Jctntl9th=0&p6J#w*}&KxP`NBX*9Q1)4zVux_l&?`e1^5 z5HqM?e6mw#O|D+3U7aelWLuLX+STTX{{RY6;dYZAp&lZ+ZbVrsDMMs%tR4rAeD{w~ z;MO-Tsc^@F;%7-92Oq`jJi_spr-#ye^s(L>T_1Pv9>C>Lx2H|%Rc^IX9k`{(w|asU z)S10Hwe9&ZTtlT@(51>!lGE8%M|Hk1M!f}{+bM93c2%ELlZR9@2cS9Ip+cosHpJAT z_ETs-iNwFqHXtj1sXaNg{{SD8a@(Cemvhdz6et%pr&D3)YLF@&z2a0}N|7NSojD~c z8uK=sZ-~`trCzR>GS`wIpY3;J^jXc`wg*}VHr_U;e z>(N}7bVWpYGxs*2#K`Jve{wtJLkdztbKygb>xBC%R~HVab#T#8&N3tWNOsNxqR&Q^ z7HaWbF6w7U=Z;^xtorq5^_uOqWL#>SL3V_Ns!cxGtg{9!-?0AxE%26rA6f!1N}Jrg zbL3}U+u@AnK%@b3V(Qz-`slJS6h^;d^VY|gAh=*_8JgI%WF zRaWA;35r~(ZM-4V6h?avA#E$VlgdhnBN+3>zG=nyuL?X_^vyRmT{v+P@yyQITsl>Q zsyeBqb@zJT4k2iT7AV(lC~hnuFHrPhg>Sk*-_;oz@K1s_8u4U zbt7u(^#n14tiRB=e|?v+Zy2{U^`AD8kVI)dgC#O`6QvcFEh~kdpxpF|Eg_k`>rOi? z{URBC1S_=qQjlCw&xH?ub&)?PFIxKL)@JR+ z;&2C%!{6}@x)sZ=>JO+|YB|JULGrEI0y@ibUawwO1-!(oW(`2SK0MhlqOj>G!;H$E zB}l0^UkR@ygk%Koy||{mf)GkPcGi->a{64DK)NjLmLS{O}$iGu5@c|`lmH?`bPSTT<{sj^9d@gYUOG+3?>IytAz9MgY+`a2mNz&;)#s zs(WhJ4hEQDU}TJC-}!Dr=WDm5)QY02^ot5xtXHEdKWfUX$wN;|+=Qub!&Aio6qAjF z@;L`y--rBBUYt7c15C`lp!s9_g4;^HR@<4I8Ix~m)N*_vAz4_qyDf^9haq%rXNID4w#*u;#LpX)bWqR};-|3J} z+PtyuQ$>qv^=`%Qu=IQ^EYcKeA^p#}4o(zfzbgX#(y1KeowZYRTdowyar zq#en?!H$qnycC#PYmEkHZF;{o(Oo9Kt2C&6MWFR&)U7!priIFOYw=u=%9ih?VXA`% zV?jHC0br-tl+w-wswxuk*jNQXyARZsY)okp1g zS5WQ4dE9Xv`Z^8r>#9+wMP*owrr2lLCxszo{Ec@VV^ZRqg{%BFxJ#++soeL+p-o+` zt{|5+vE^X$x771;>yy+8okf!#EuRuJ%Wj28Ol$IBlm7tL*$v1>8{W&!k5X~!#@>8k zTJd(=HQYIlbB2nJI0Nq-^UBRmp|oonz)eHRqgFcq0HquFSG3|=T|%&HQr#$tChvBi zDl>-(`bzaZ*hwiT$nFFleYN_sj~``gVQTUHK~0(NBYx{ON)PcxOn@HK?J$2lu0j_T z!#AdPzewviknoMYA%f&T!;y#D|bwPjjDm<`yHdEsxhbLbN8rWL#VF#Ykw`H^<7rBjFQsgbH3lXJ=bUd02Q~)%XZzMTy}MRG-=8I0PA`w&-R~>A%&HK z`VQh7bHakT3g8j1F~eHhyQYHT&;iIhf6DY+HU9u-w5g@7a2fLgGy3{3J-V4rYpgeG zH&D3ldawTgSXzTo7ZkX2l?w?{R@`S9WhE^g#H8)YN%O|Og=s~O1U&x$`9#R~TzlRj zaOxDA!qcRa4W=o#S5pVfeRfuFMy_j<_;9mi(kxk#9HY40hwBn$DZwUNt}7^z+R_x+ zaV>u@)PfWM_Q=;*+K4V|;B+gEWYF5irB-TtvQ9DW{#8rXe!4N$-l5r-1!{!2uG{vr zly(}D@N_uh<{1q>2uf0ele20to_)2V%Iwpk>SO~Zevq{BK~2<{+C;!5#1I-Jh>U)# zvVVrIqSoWxT~muisYj|zex&PEDN|bsYz^UUM*!m+H>{E5fJ+H~tR z&upDBkIH+VYWVBTZ4zx84&t1s=(-mvPQa<59ik9Q+mNIsD#`+bK%{aB;OiYn0ZfU) z>{&I{8s`?k9H#@{n&+Rdxw?-uKR}{0S(QVl9_3WYWYpoilZg$+Uu>zZ+$<$3!SbAI zJqgIw6Z0xptkBlWTyrJ|m-AfNbW!S6HOG}$q%~BlQ(seW)#J9PvQoU25Vq0-D?(N7 z6aBSSTgrCs()W*l-C0y?rvhY7kw5>E5c}6~Ju|a}{hBeR*`k)?zOyyo?*Pj-j8s4bXo2kWG zleTYctw(6|qYKF!d<^T*S@C;Hj0Lacv3PYDA~WkMHZ3&UwH4GFqDHxG(5~e9Y%NK8 zBGZht`dsv>1oN~4J;56BUlx2%OYGGtPucFi2B2oA3<=!!?7Zf> zZ+0v7CDmVcI$uj_T(S}nkbVFk8u~X6uyw06u(eTK8xZ!nQNNk#Xno+Bv+_@>zq+{7X82HY-9~AQzLZPgeB7@}PB#a#R z`)KM4!qYf7LN^i_s)VzcCFH5$v8Przx}lYD_p`t6(|9?=Ls1|#yQk!oseTNj6qlBPB`Ro z&Xj@CAThZ@gzo2*6pvOF!T$QN6b?J1DQN_4Ad&6oAL*reJd&}qGqTL>+*UXvfIf8r zF_j1h4Mj?j2~kpk_&Ni+dZFBcM1Z14k>e!!=RkQq+7BgbktWo>LgOJmffAabl{@{cFU*NuJ6TA}qG zcQd@MlNiNSjmZhbnnMYHmPFu}s&Zo?% zI@=9@#kUxCpO~c*`>$s`wvdhjQJivk)xT(EHkUZS=(7jueg~v}sR@xPkl9r&52bRP zBfi7vC~>qNQ@DeZ$2^{W^^jfCtaXXfJF8mUY9LQ!+L)CYFD9Pj=1Wev0FxiW8*F5y zNR1)eL7)nwA93=g@Iri5iT?aly z{)rvsH~}?N6;nc28m&rxEF~d7Ng?L^Zr~{^KA+zlYWtd$i3Xd7u5eR$jUqXv;3_3% zxlt^{an_-Rnyb`hEl7?K$n>_^NCC`aDg$bB=RP$qYC3}&TtJrNtpcY}Zmp-7ZpHfhz93UrwkT9d;LtEc^X|&=nF&_O@gv)^ae?_eZ)~VJc zq3T-JuG*4WC9=eF>E%G@`Hn06+2if)t!=w)AZfg0{{TIcQKaWS0FruUN9pLDYc!Z} z+mA@@A*bgn5?0yROQ}z(X$K(gK1MN&3~6kuIBI$2`7DNPpKEY}@F zQq=3ON^NOVi(W=I00tCC7)Zd=y1VXQ;xui^Q>3^UIUSazJ~g!g_kNX$G8!c=OP+QT zkdRb{fIb3o=lADQ=B?FHrO-PhY>mv7zb9AG`X$1tR9a-FRAq?p)g*4*=?4i&{{ZTIdktSo$h3g&YCKE{ zpG1^dwUq=*L}kHZ z`sd4?uX|-GLPK^81{nZ%Etx+5flENKM0?HckfKK85nlGmIuz+Ewe!nzDycuaeos*?` zPO%xdf~Ki`$4Z_;PU#LjgrzvZPvl1L$_Lz?Et^0ebsT~Kh~H$3^(LUysVvpI)h8o_ zt;8Q$4r6m^N>llQa0ecBdmE?{$O;w+JdwoegKZ^prAK~DrIjT)0me5Hb}6iarHtSY z8mXb7$Fhy10$`r~R4$73SQ?;MlLdt(!lu*9t*p8drvVt-k;nJe%K8gi8Bvu3dB#-A zOy*X_8YF0@pqUcXn6P+h3y{$CxRu~2B`2OnKWv?4r9|o{V+eufInQMO0Cq~16~ea@ z9&?o1Y+-QANl8O;mYgRlNhMiugrz_cpM7bmNW2FPzncZ3>XQK*$&I?I_6;hhQ=?7# zl7<^gs7q<(Z-9+k$CdaiFoWu$2^~DFcI& zjGyhS*Op&qdzcBIPsvwSj*@w*+TgjP%aJkJ3}zqHcN$sT9_@jQ+Wy*Tg{C3VeXiH#*Lei3bJ9x+$8d@)|#%UWJ)4HJSQzC9@t_qC#uu`N)-ztjh zfT!t}tf3=m8Oce{oNJ)lR+0cYI6c(C00Kc*2pESsT4M&QeIh zG$kmv7J|4an>HD6LkfE%m=zekfv_ zJr1`TKueA|6i!yqZ;`l@kWxH(*2`*5YqZapZaaFZrX2v}_1R=LqCljl8FFOhG$wvk zcCdFLw=%9tCy)GVO;-DpBcXgoMWIfg+_t!kRyrxuzsXmgGB)U`ODLGCDpUa_H?6|1cFhfQa^sQRf0z`g` zdflr$$Q2ir^pt92TU!zVT$c)Rmeins<>c~rdE|ksIGZMrrZ;lv5L^HQ3LkdLhXP8! z3uaAD-JLBJO6AoeP>9@FXd9bt2v|zqOF!jEDedPXOQ#w5KB>w<0P9eo9Esq%mKm&uo$R8T4sX6cP&oKwDx)iAc*o-Jk z@?}JkRfx7;dSs-JqMp`J5L^gK*6PU06jDhY&%OtZb*fRM%3=tBat~#xgm`{@6yZe` zS=9+F(`o+zT>>)&xij2+C5UVMtz|^|&#*#9^XGxC1^ekzWVz5uz>U>)NbXOfktR~( ztx8di^whY(A(OeqBP5_DN?Fe2tJG7p4}9^BWOGZJ4rKFH7M@{NbsBAcu9$UZphpl2 zq&X>u6die#?88e>q?7`#PScOmUY5%8jk^snPNUZndP-j%l!ydx%<@|`ic_eeQW%Gs zjK1KTS8?#2%&?S#kW{XHe#7tk=rf2my=^fCzfzgi1FDTfJcwJcW<-NdOyZQiNs~QJ zZE*oe!T?IZLa-E+sPXbnH8_nERn4Z-L!nt*8Gr7krtYifAJ1=gEW zXvW>^2_$jJN`Of?N^#DSt*1(e(gAQgoRv*ECrdz&=F+C_RUC->uhQj~nWj?%Q6?vA za+IW~6r`0UU}G5Iai5)Kb*Qe#3W9YVj>~Jcwo6V@m1fziGeC(>eUGW6q)3?K#4_{E zsReHCQvU$v6rKhTDdh8~w7GLwTT~br9Kh)VlC71?u;5i;DrGzI*gO9Ko`ghtN6|8p z9c#O}Y8hTrm7E;;_SWjuEB&3?Fypa1e(I*QhryUV=jInMSOv)Sii{U2>a4p{mWZ^d z?yJ)oPd-3(MP8xmSOaG{@(9+#!uGMQFz#h;X#_#fV5Ib^$+xRe?OC*{teUeEN^4tK zU)7gX;Y*2ag#rTBo)WbjC(fR&&=g(amXokEiSAOin<@h@fzzkzu9){_B6aTun`Xuq zq!B<1r>5%}z4g{ZYmabVBUD4O7vgJ}|*WuP2ZnIaC z+ev1c6C{nw67u8e z*Sc1>CQ)k+D6$(p&s+SPV7iKyVw);-4VaAx+0K$Jb&!>^B zj<}&to4{f5THw$R-UFTn3x_G$b*WMeY*c9gj7Bo6EAo`84Gur}J%%5=E*IN~r-b6m zUqa%NGRr zpiK#B{_&g*z4Eq?Hs$X?Z(9$=SPh6|Y^xxSbnc5|yLF zX+d_f1k7cl{Y6;okmgH^fpLtV)Ad$3wXX{@?x|XxF16@WY&R)!q*balCmaysROIh3 zxYFG2y5lYYf~28Ga<>9~hE6BMxPKA0r&hb3%Am)Td7cK-oF7$btxk)yX)ccc0Ga9N zx;}5?GwkJ3DpIM+sJ9igxhgCsV?=%DGnRnd>cRmj&PevpJP({|V7V_~c93=^TnAoD zMRy0$kk&V#iTah#bE`c!lLF$kB}A$=tu1jrIkh5ee^Bk%R?dEC0VACDo#|1Us9*I1C~Z2R%(r-GcNxC zKeDphjcg*@RC;O<$|_yC4en`cMMb7?V<`_Pp1>sMYR@A-eQ`d~aw?XS18*!~_v`Gg z575YL8R`t5_NpJLl;dq!Q7?b~yFXc^)?0luN?M88b@?o`(`?BK8v_XBB>;doa8jd> zbHQu6quEFnhLGTTm=m79>qWauUJHb@?f^1BPnxZIv;@3=}A&hK^e{n&bwS2;>y)3i*rD^qY^hA;O-V@odgyc2ed-wj-A^z zN{u#L=``u$&!1FHHf_ZkGmj-r1&^wZkkVA5@6(dBqzn={2VX<{I+cxk3$*?tw@;qS z(-=0r52bKucH|_#URA*I#0r!~3sId;)I6!Kp+gM1uvcY0muT)#8hU;nGw@YzmBfP0aD8f`*ZCG1qB&!3)PPV=7 zb4UxGSjWb5`6mvyUo)*fo+9M36$-T}w-Rnv;+0e8u9>whHl|!*AhZy%>PY7v-cG(| zF7DaHA7yh;_;1Te$o~LuRacDKZ-da~C_d6u z>VZ>Xl>ypqwHy~WWkVae*Q%#Mwtx`>JO2PTPFe543yU@jhx2~6!?CZ6mWTYX&kp~_0!cbXrK<++24oI zcUIK{s1)nD>oSriF;SITrZD5wnov`)sO~?P6vOgxqrJn8`;WfU&NK7N-V0LH)p-S> zq``OIe{kQ*74D-i0J}_#0A!zE@}w6#cU4a2j^ruPs1{YX0miNiHd!W_Qi&*bl!X** z2fCnejAgPCLC-qHV(K*L9ZfH)`~HHNjtSTvXkY-VtNYCm>TE(YxPs+Lt| zT|!itYBu6(r(~AHfVO}*DpQRmDrqTJLX(ZdcDfus=7G2r?wA_~%v-Vb?0Ldc_plkr zftXJ}!#Do`L9Q}wWTE#`V|JInYPpIrJQ%+KGKwexd>l; zDX?~xsW=MPTZQo3yLXy_!N9jA!}^onW(4CulG|rWq|A^2g4X~KvD_nAm8%Z)r?Q&7 z=>oFl9-#BKH6|=X(_VuCL4D_UfS284V&}hp{}jx68i%iRmTQAvH^EygCCmHR;jlQ z)g|5yi%_V*nIsBm_x zUVD!GQCK~!p-i=e0v=jjo`7~ZGqzcJQO}<{ZCVe@3uGF`p*-cw6zT5LI$d=L! z%Zl7)t12rhM2N^{GFp)LZ7#%py`e2E63WiZm3Z-&Rc;+$?r9Dq@Qz0$#Fn~wjmKq{ zrlQlm2RH(IvqQqpd>lQOm)hcBQnf7;+=OkqYI`^ty)_Cp6%cLLv^9H1`bA;=5l{!D5_jEIacLbw?JY~Q7X3# zm~K@hnV}1A3~1C-C#ZIqB%B zWep84K9Tx=mB1gw3zP~3=B*2K{wO!L{EGYgqtryG>R)n0(V26y+mi#y?s^iV+e+}9 zk*}=$E+2Bw9r)xLGT7-RNz)j~0%3G*=^AVg)#w4h{(7n&bv^hrdVGn{WU}>iiPU+j zSnN9q1x&c0k&;#2Nl7QhG4HQu;h4&IJ3IY1_eP&el}v$4twU4Mg`eipJ?B*9J}7QjvDgT3)GA8;M47wIzlXCJSjqX5Tzu7Lr0% z2s?n!lc*gFMu$|uG5V{45~9}|qdM&9vYC{%(aJ@^6xr6DZTpqeChMi5d|_X1LKJ2;g4(0wg$GxS*c*SD$UNZcvSHB*upHwi zL~bJ<>awHoLqbbJcKDt<-SL2U}_ z3fa5g&jUL1SDX@+qsvC86VzZ1xL8Z|;jQ=o00mi92=tbInUzuL@h3qGR>zA|CpNw0 zdiJ0tCnF$lNXES7YLz6jStGUw`At@ZI$#&JJ^uhfl*b->bH1yyOm{Hj{Zy)SX4M{X zN_{GEgr_a7L-Qpm^Y0QGsgAhftI&6qUM>Mvo+{Aq2Oz){@HoO#+jJC-R+nUyH9A>xR99ONQ~kV?5SJ z)UQ$}A-EmA3UI!!N@q#pQ?1h>+C@>=fpoUSbxEg8g119&#FM;|l`uwIT7RS`omuej z539v$y5co79Op~gc{#qlI;(9c5H*rL4?ozbr&VZl>zk%@&aT!eUyetIQ2a6gi1Vp# zrsL?#X=Xrdg^}ezoyj1Boa@(co*#Eaz8qT9_?$j?{Zw-v372T^g1BC$xbUhmnr1(0 z3yvXkBRs;JEh|2>Eh^{J<0FHwPe?h;B$;p+Anu)w4{q{#5O-alNWEI3T2$E(2!HwPD|={=hQJAFDc+TBD_lUd&1q=bMbCSS z>N_rbj!$Uh(Z~!aUsCIA*RJ}_vo0#)Nv6@@J|B8IUX8Y3TaC1&6{TQ}grz`xf=3zB z5=_e0<}}8fD)lWUomP1jC)|xhQ!K5u$bD&8Qosu?xXwaSF^?YUC!C#J0Rsv+k|U=* zmmmKC68Eq8i>U5JZk=;AXY`WVT#Kf!0SacJ5a5W8ksu~A+fvF3UmLgcwC>f-q~4#W z)kjwWf|VMhQ;taUL~kv|eb*$+t~q$lw^-_RZ5FkiCYu}Z=`q|?xY447lirNVGFK`{ zN{LgPZY1O$G%yT|rD>}63RHv%{9aH`_c-$%8mY>K85K)_((G1h*DM!iI*J2AIr`@q zPyDqlra{Y!KqQ3f<`7O+8<&f5=Xin4VMA*W--L;s(o*9ut(C-B+TsZO$x!(R$keJJ z6!dCKv9{^vy=PTz)Y`PkEij3-=n1RRsxjs;{8=!c8{1G*ME2Z5f`XE=6b~30qyR_x zSBE*nQEP{&i65v?W)~&-OeeXs1O&R_&ut|BU`gX1aiw@s+21O8bJwU&(5W``OIe6F z4F;ttRZFrf<<{y^)_@xUwGT;3fmT7m&Z{NN+@{e^2@ZCn$e$?mOHgRn4PD62(W5_F zmrot`V#h&_;|OC5}F{M~0aEN7AAV1F^qOr}ZcyxRO2 zwbyF&+j>kFoql|OrGB9fqFGSelocW71K=E-El4@w>z886?DH^cBmV#y?iF-sRcM-T znLNfL(Kz&Dr_Ns0L`tu$8+Hnj_=;BgBN++F%3F2vGk`Jx)g(MYdr3a5Hl^vP2xh9%=k2r*w=l(_57oFPp(ugp?F z+??_?6+uR?M2nZSX63+3Y!mwtt*POk~@bbwE~=hs>zac?zL5+BV9)T-u%yF{uJJ~Z?Pia zg?ilA1PUz$6qynz=#AW3B|}jSw#v!~!W0#Of_CwdjS5!*ut+~GmUh*tUE-ZF0%B%9 zT-TiaM!4hD?)vO20u5S4sZezjpNUtDxb=44jyDMrgRA~)ZSC}_I4eiCthsr903aT} zqUgGnI$#%6YtF|^`Fk8L?6rEQNa`Ij(4ex3KUC#8xiRXYwKTV+Fgr8hhR^~_%z_kB zm3o^yw&W3{p>lNSsMUt09}T3i=cg$A)JFHUru6RPx-1*Ui&2G0>W~TP{a&9fQYp)t z=t){;z*0g&+es?GDNx8z$j-F58fCCC)NYpE@KkK-b9C;~C8yJvTq`o8F2kEzr_t2f z6;E4~dxQ!I1q>A@kLpR~CtiDs)pa)j(*$kYbX{r(mM}*8KW)DM*!Cn;D5ynRpGXEpCLVrWBO|l8|{p+?;sO`yDsc4mdrQr&W6y zu1UrOkWy!))vHS8v+SzH8I@J8ms_b)?h0(AJo2DyDSj&~xHk8>&esNVFf*NOs94{* zkUny`A>Ji3QlN85z|TDHvrJt~iAPnhf0^vRNG>V(maQFcRYElwE>V5Ke+ zk+>X>^7+QO*AV=f5`U1jSciq5O$#r#oz2T_@Wn=+xmx( zp-DJO*;*7-QC5t5hu8lA;hvFAhRq_4K&ZK2vs`ict-)V) z6Pb8}_3i>f((*?*NeK4BPL07Pk&XE)?U(@%s!5%}8}`P*4XHw6qfUuZq0k~psU{2< zwMyG)ivmJq0ItlbtfUmLaP*a*&5t=6qK#h>piW246K6_`wTfg;&<=iT^rrOkT}IbS zuh+s`EiH4YX-JHex`I6}w(4-Bk?CKL9y6d{CJNHmxy?F2A5}>I012T1k^Cz?w)%<7N{p2?cdv$~TOyKU0d5Y1w; zwrUQkDqGD;jPSw-ah0VzkAOkQJZiSmk)NWvuMsT<1QUt>02x*)X_9Q}&B;oGN2^1s zz#-*9c}Zw77j{&KRKIP$IMq*K1|e#rpy?&R`%2obUX~3?%($rrof>-T=xic33aSyF zKqWF8bp)pX^Ne%jN@`%jaY3!99P&rWGEAyaYkdy3I%@p(>VcQsl~ao?rx4^vN!-iv z%7_VBJSYufzPc2tLnm5GYgfNfbP!Gi^7h?Ax;E!c?bCHf>OAPt-H#GPS7B7)m%(Xc z`7)vcoVemujH5h`M~yXw%PKZ!F|w!ZZ@8)hOGs({?J?@EK9k&*buXixORGSc38{3o zqLAz<(Gx0DtxQ?^dW=TN1+Ln$$G7XowNfo+qKDYqQs_1s_KnVC+o)F8@Qu~WQW~ym zRp(iz+RL25b`|?lN)ouT_ia;aN!nJ23G$PXol`-=oVeg0n!3H9sc{sWsl$-NU~~Tf zD#E#`>#93nrV~EAh?Q9HRv%&XO>ObFy3vlX3Xh=VWaJJA$k)kuuf?2N; z$&Tl$^H;o9zOu$Oz9HMN?Z~ZKbxw?%X5(X~74b-^+p}30w3&pVkEN159n@nf$@KS7 z6qCk4I`cO|{@(GGZ|S(a!2!I-VVv~~6?a|Js47`>9p_1sU}=qzL<{nBA-!d$rBia<0%VU z&R`*If(}uQ$s`nzJ-6Go?}l5|ru$GR44pnwf7v^pyDhbwbw+^uMIak803#=qZhmR{ z@~xuJoj~fPUbNN4bV#N(OuO#hpVU;+OeCxZ<<)8O%Zg=fp9*OwCpqI>D+(g|Y}f## zTwK;yY1ONnL)-J;ZtI&(m0tnS*37q5K3(z}NK=|uQQf;~X@94YsZUg?645nPdYi@* zGaN=#=XLfLfx1BQ0uE0)=hpaa+1(m99%d0BH_k_96ZFcZ*5-v`%Ch%6&E?UPbV*e>GF+)ax@6SaseTn9?@EIYNkd1rfshhCL&oj_&^3hz0ZGI(;I~Vd z_eUcH{{S+J%)d*UQ&!*{Y3x8hqKHbQrX-6d_^>a;Rp_?pc9nCgLP=_S(iTI~nrbj# zdtvmg3qe*n9P80m;K8suHkwZa^V9AURLQf&hIN!JZ!$Y$t zMz^i0Ka512Ta{6emgLjr00zl)nGU2ZB}pC+DLfDe*E@$;(4lK#40ZC#3tSrlu+BZ-kE!sy{DVa<)WqMu36{{Wq@ zMZ);ay%*J`V?<_k7ZW}6xE`A>gE-BV#X7>3Duw-CPM>f&DSWP|E)P%YbxO^bc2a3l zVWN$1-msn&SA{`=m7-)_+X_~Zl;uNrjQH1@;hYVI^wMQYZml}>lc+VlkK*n(=DEBw z-j=vyvNB6Vwt5*7sOt{XyD1GwsdX-0P}?_(lI%J(7LieIsKeP%aK_xQ;zyIUVLjGR1LFhJX(9X$3bBo`Fn^)_Vw;}^nhU4lOlaG57A8@uxXV$UbjBCQgW@*=Bi90 zjVb6(z&FsDQGxloXxYxYstH6@41b6q*}$T4VOaovO&j=JjS4uO62OC1mnbjjex|ggswi>4M8>|AC70RoP^OjRg#oW) zz-jRgHc1u37~i}LKKJT7hbyU8xSda_Q%EDqAZkCHCM!$$X8!;d+|+K5b(%FsGqc@P z+9lU(Y@PKDZBPvf>Lm>%V=6<)3m5~D&c1_Z!L99U8r0>+Ab?@M6zmIyyEt_bZK*#>^okDLz8I#y?$aWilP+*er7BMp9Jn#g(Bb9ye#( z-%p^sV*v7nP^d--GOzxYbt;2x&}&xB%}Yggmp>|o!AdrzOB+^Hr6qVE9Hf+y`fHta zVCs-$`z_WL*-7r!-T9pTBq;34y-U3&9j`j07MBslIYLiyA@-1YDFv@=_ydo&uND-Z z-|B|PFn?5TFPO(htaT&kCSZH3kEV2!Cef?bAayRUYFyFZ{{Zpo(^H+P(-?FA0I}r7 zZN)UV(4uy@0{9-<@LY1Pn}JN*vZWwDrty%|&8{LqKFglkmoKVnG=u)F;4Yi#%^R#& zyV7Y_jnq1KXwjf5WtA|t@L~3`>r-+P6qTzP-j@=5;O7HgKZsZ1cBjRl-E~Rx1CTpM zFHpJ8;saY*Y|!UP)bqUbIFG1RtZs~T1~lrdK9gMk0E)o6+j2d@P+Z8aHiU(42!8~p zVu;E~0b|Anw-1S}9>)E(nhP@A5D%yF6IS96q~L3|TreTBKV(W>lU$-u_THwcMx#*+ z@zqXY8}~|cB`YpA8!j^9hEkxV0r91Iy5eVjG!bP!H4&v}OhMJu+vkxYQ&l6H5b zDW$K}%f2lciL|JXOjWZYl{L0N+~&x5+CseGDLiZLH+(QWimYi44HMAeB^va^Q+e`^ zeD{>sMY=8fzwf2tb{lkOsPPF=hg=D1C{hS@_cQUr zJOlRCcRW;7qGx$pX)x=_UbKG(y$7?dE}PPNx|lKK)v2;-aqf95Q-V-+5}Nu#$Z1IQ zpbmFr6Ss|dd#i?-o%{0nrlm@&syG)qIYH7i$JIH17O^i1cUf+_J+E%QigXuRl`5j^ z+q-hANNz%;MoMxRON&l+9|WE`*OcOXLfSk!kAu=?eOI$@hf3O;h%R%1S9+jUV_?rD`vk*DU7Zvw$MULFKY)G8NY^ku2 zN}{malD6$RIZA?)&V9AhVb`SY78R%+37;aE z$7)L~sGizbdt!oAJ;6MWok!DfWD}I`H2gs3wj-`_`6-nL3*E)l2$=1t6|Vq=h9%z&{6#c#bDy#Q1$(6v-pqbScA~rO`cQbJtcsh{t0Z zgLD|qIETFtt~y9Uh~p<55KQv2*w z$!tt>MdiaGdP8FLX4|z}g6#TOYZ!60yMpN_!RKEe;=Fpj*g9SNE1PB<-A)F2tD^q^ zwrKDzDRl%$Y|3^iOg4}b6@obNuQS6gp6h_pF*!)eE|N>6Dqp1iM5<8)m=C;LW)nLa zK=lBl$;tW7y8M5GGOL5yGD_QT#%Zy-9mrts^HtUP)TzzaR%1+4?#g#_$|ngKJ`Q!= z;k+TQpd?@nE;U=TRqk-u_FwVTu`!5ff`leB>r2W`YCyd5<^QZaOOGQN#y|i4Px+`&{zbkG(gD5MY&3nBFU&#A91!_ zLke-yv5*{4!U@lwKk1@cbcT(kQCPIL0$^^x5|uIx=&pAgWlC{t^%VuZk+rmpl6m+V zw&K^srdUK_RZW@?@GY9UQB!UC&JUogI-VD}5;j3}R->ykv=LEWKFgVi@ zD({0CypBqhfw^OY_W0Fo44}dR4s>m~OHK=*M3o?$R(_h>aTuCvYMYfVYEYHO{!qew zD*%C(`+2);*_ecURFg%{LQ>_EL*FlAD>;Q>ir=;;&tJmTB&PIo8-=Ubfp>lz`Up z?xW6?_C@avc_4Kd`K@;LzAFTo=ilBI_591!dbKX!uG6Hnm!kb#L^`ptYHdWMdO-CX(jzW13~vke1Lk?i`ek zPaNy9!&=5tCw*O(7gVWG>u~qNZj(r;yFG}Cai)@#1c!>2>qmd(OJfPzNk5k-pM6@_ zHkiPZ(MCPRq(|laDe7f4iUlcxmY-BLm7)1>sF!3ZNy6}O5&-ze9zJzL8CJ9Px;p{M z03;me*)!Yp2bzgdkrt||rAIxcBb1GdCC>~aBL#RlQoQ_W>s>X~0CP(~=ggkIiaE}K zs085}sr63^L#?>br4>Aaq?Xx89-XI*AN?S6omegL;tpx)xsJ;~{nD@2lRkQu`V87- zG1g^9N=Qopr_c~ju_R{z*Yz zPpLqWSeZmjc!eKr7cQAfJrGO!?hrl9N-_et!qP= zPW-(QaBK1h?wzQPyDl1$P@16H)%8C@fCqU>Bm}8x&k8xtJZY;2vkgjmv<0IgiTHz| zQJX4ep)m@C$O_AQcrB;{!cr1PpT4v)?P&mwf~n3UbF!Ghi%wN$O4k@WAU3b3?PWlv zvJ0UBCN6+TJlP_yTRJ9qn)6Wx5jmw?Js-FS@%+b z;y4zQAI_as!2FhSCdx<*)(V;)uy! z1_#MH=G1AosP>;QI}?cXRJo)+d2?H`qOM$~(KCCIR?wRd4@Us^BeXJhD+iS0jogu|ZTOpsaM}kx zs8e=>l{;pbilR+gWVZf=4{TSlO7Tq!0ecPRNh zNs*AW5(d^#O1Swa-{)PrmcAvZ0nqeX0UlxVQ-M&oPU_6Kjs6~pZON4tV5v(%QBX%C z2}n^YJmm51t~;4@Kc)_5C01D05s(C`y5+4san}NA(8^-dl-tFXDF{MBhoQm`sO=xn zpWj`68$?^vE~tFR3dc7~iIp9%z1XPI-3*Z&Z`@Q6LXeO7pOpI23WiSrX9S#UO@xtC zIV!Ti`N95vOLC&LE)+zv9j2zB@QS42Ax$I<6}7wIV+Y5!vQgI8kYJD}{1h955(m{v z6$~{(W|K{tXSW%pfhJK%d=NjF^NC3I_c;Lg9P5%UoNi4=i0n4>Myo^;O!{CZ2+hTf zM`$}vVN#2WdONF1QLz3{wd4{vfx#nz!1>pr@m%*|#06fE?=XGrl^qck z6@{4$Cm&87EA*>x1zAY=!1&Id?xCj04kz=4t&Il_GwQ5%VTi1^kkvW@OM*KMtS`1! zNebR_R;8=L2Z8;y#dC{{rFR9XxOs{VaVVTNKNFm*-5Co5813JC-C zI0xrgEo|FTv$f7S%q>iFKIczRf6CRaM3*==sx+jw?5J?sfTXn8akr4A2a57`1cA>4 z9OoZ8>Q}FCNzIRa{)uX}t@5;eN{LCJ(5a9+_TvvqjI^xOstH+KiH_%T_mWgwPV@Pc zl5l@88UpgYe=S%Mu-XUeRdc2R{{RX-B7+WG%5rMVCTmgZESL)b9?XQGsbvlF6^tKk zryp%~S&A++%sMyhn9|nSB!Cak)mZT+BBM3f=y1xNCBU^Q0ZI+WY!#_003al+Cj^}M z^o@C1^ax~}H}h5oG&CMc8(OZWYBy)G^-7?$t2O!caiH!?t zA5dHf+tP>Kl$QNqtbi6;3dfA(>z{XM+QqIr%yj@P&W6VS0M5xLoTz;RtUoR*%9fNq z)HJx_T#Dv$JIf7~1cee09z1JJS`DX69*2HJbWZAkh#bF=k+-7C3^gL4r=YV=RK?Vl z6??nx%Ry6a29|T#$QTOGj(qDy^Qnt4<^V}BClT`Ig>unM5xMtGX=b2|R7uN!#P?s_ji6MK-!0zTdAjtfC(9Gaa%204sj3iezM}J4~TX zRU2j~jUgpyZQ??QXe4B(dE+0xo}sAfgprZVbVjWrWE^zlhGHdKbSi=xl-n`t4*hjn zBQ2L^E)qW~5Yq63f}ylz=KtG#rpbJc2d zYo94gp;G3|Tou$~q!O=N$U+jfNZNa@0IUpWT{haet~vnJHy^RtXbf|KG=!dl2|k0G zYr3G^R0`A0RjKdMD^s>P9h&@os!|eE+8vHt%1UsY1r5M~@2goz(-BZW-wOpNu#Tsu zT1T_cj z%(=z{e}&h!qezK$K+s0p%BU`yJ-J7?Ew>@fmERLPvQ*-JnV88@+=oKYN|3#Z$>fCa z22OR9@mjZ<$N&H!b?&7)BAcbBKhA5WZ3}Mgsl4UcVMMpo<4viiDwCwhaoLVJfVDUt z2u}zb5OOkk$2r%8uf#2=RTQq?_GWMfkUyKNT}iDv%Sk7hB0ZDch0-c5%}tqdRBbg( z>J>VosdJyNz1?9Awzc-%bt!O$(A#JQ2>|XRjErk95%{I_YPy9xf+#-?(B1lh-1An^ zvhmyEHc!*!x@N+KZ&$6)uB8a|=--XHx`n{K%q~>qwe;@H2~bH=08wqc9|t_0c)y6a ztyUJ5mw7=4?5O6wCU6zT*Oy-T-X$s$94Op=y@+uR4F zHUn)T0|*&VDm?4TTt!-gNCu&YIl~^a`IF5Wx2~+v*E{ZvNZnL*iF8`*c&fDPkgGDG z7sJw0=@4nkg^tKl-`Tyztzjt03M3ym&bw4?Yg+1cR*(-b#PE08an(@jby*MQdKvnt z-SO3_R`uarp;GA+>-QyQn-V+qn3V)OMu54khg}ik2Fl!VkO3%K#t!5RdDi|Lzy;N_ zYSeRB#<-Z$d`Cvo>3|PV72wg(<50U-AY=ak&fRKPKZ$768Z{o1OryU7lO7a@p8!y!s-+n(i~x3z zUDbxTGR8;$0GkJ|KXmD2-&SHT>9k4JCL^lOsnu#0jp4X11OEV99bs-e6z8~PC%2R& zg!(sdqkwL>UCV8oQ%)S#hp_MEH~{wjVPWu#eA;Er-Mh5+mAPNIubN%o4&hz4^=1Xq z>oDV8HFw=^n&ZL1l}U_5 zH=0X}LWu21BmkYb85loI_+y08qfERO>v7d1GTvL|v&?l}0dfmKImanz{{YLWPHDAz zob5s6bqbwUlhaGR4Z%fTV@P@|NfiWr90wmmSz2C9mca)AuWFZ!Wb37Q!l~Pj64{_t z25@pjTTHK8~9j^}AnYuiP^CYQf2>V5^8@iNtGZ;;s8o?$xT@2tGUYOs z;UbbmNHqTd=QkU$$w#S3LK0HqQV!yjsUDM^XSKByL8%^RZ^>x6t>Y0*u-1*apI09L z07aufV&s`fr^KXDUcI46Qr)WDiFpWd3JOxTM@xY_mQE6+@=8zU@{zTUIz|^hyD8Io z55epteG`B28AZ5d*>;?JTGo0*NCG@+{Ss?(QzQN{cyTTy1U8~aoN|mSk;c4Leg@ln z@pW@oQFcjy&?8_M9m1Py0!V|*82T<3x2@>0E7vW*9_?MTRj;uXEY#bGUHV{NQk01d zC0pH$LQ-8)GNh!WjpK0FeyE{(7+vRR>Bz2)8c(X|Udc?t~7b6e2gMoH=fu_4ri34jGjV#f#s;*Q?tKw?`b`Oqss9vVQ+9b_d>0u zdQ#_8_a12Mxay_T`__X}kxr`HwK`<@jH&mcyB$hdPH+^EG875$LD#OM#jR_zRXUAu z_59WrT(rq95zcWQ%FDRwRcn5cOSWmYy-v!9Rzjpja-rNW%5B7@hmhb>Q{QO0kdUN+ zjsWmZu~@m4p8B33dxi*a-RtvOd{($aTu=W1nvE92>jff^-LXk=`#BXV!-%i0rs^qh z<2@A}-tX1CQGle3s0{AHcIU>eZN-)K$Q27*;M@*icM97}*Ms5G8k~00Jl{TwI`>m& z+m%?Pdz8|BXqr$)C=|_iiv9_4mTMxBr`*(yd6pdszQ`lE-eRoHVvmczB$)6{{V&A zyiIQ2U?b-rRZrVA;lohxKbT$3*H^FFAMo+f>)MS{L{}@9Q_x~m=}ILPNOhJ=!c2D5 zl)T$-No7E`vAr&Zk?Bx6=-lwzYL@Mw;i-%gHFo`#b#jHeVfEZT`N*qAi2;2q^ zHSFyfP0RogNWp_Ubv*smv|CN$3xlJg*Q-sVQfbhq(PPPW9b!3k=?iOXl=*TNv-D_? zl1qiAQUO|k?gbx616I-3Qlo>QL4Z1rzs->c&OqOnr+@I0q}@Ud2-732=3jC4U1@H( z3{lDMwzhGF?-&?XQ@0?eI67L^!SwbpmwJx#f)R)xacZ>Of#9)3&q z)gftSH708m_+?cn!6^!P6C`a2VP#m!QAqaJi}(#jukxgyH zw&aXuDGEw+!O~bW?T@(K=duJd@CTrMm<4RDW3SyQ0Uf zD#oVO9$mdpsk#v+Ze&eij?!90M96dk^l20-(cl( zdjUJjh}r2G^&Mp5+z!`WO7{iw=y5X*Zj-S7-CHW^wwM9cY5Jc30HU<0_b*Lr=9Tp~ zDX@QxsB)O{9E@aZ+7!0kG@M%`p`D*9%jK41Whb@v-9yZC>Tt5*f z9)N6nsJ~Jy+d8S$TQ1G%g^OCFxmA%42#r#b;_32g5+{ztm_g7B45_6C-EBt*P$%0$ ztHVUZ4yhO$NxFPO{{Zxz{{Y)O$JeTl^^>NzEDo>rMVpedLW4frt+wsSQHR(}c3gb6 zhFxWblG+_*D=7|^lZ1?{j037IssM-aUO&b+=Slj@|^x`Rrc zQCn}7MRGLON(4CX=g{I*-c%Ck8%}Y_8fUXe5|Y?Dw3Z$A@7q73x$h36+g(42BBHoV z+*JyyWwT401(IMq8T`^3bdXencAMJ81;GS^X|PibKbKm)ksb?(Zso&hCTOx$5fco)0nTgF~7%84l|J0y%=YTJpSVw|&V}uhqVcy6f9^(~^|N zAsN_Gp@P3ZnOyvxeFKK@+BS3rDsvt8{{RX@Mj9bW?T)8h7VEOt616TmYN}~<2&-_o znH`>cX$0g2a+MH#ACNVc_u=bXvOHD;8)G?4(}Fo4n%=x`%gd}%p}?s&o%Du^VAJBK zxRUb83?Z%xfgwS)bLzk(XH$gyKX1arg%Q5$x|Lcm1b%C_?hc&4L+DLkr!j7)sFzKl z29t1E5Nf%I!}TP++K|*YRhAODE-hWPD2>Z(B#=(JRjJdc(%OPS`7JcrQoSuA90p^b z$mFj#WLIlf70_nYk@dB?(-4VK*4kQIk`hBjD?*A=l@$ytBn;;|&dUZ+rYY0Fg@RROOoh^K#gTnoQ!Ghh0KzPdPlD9fDu06Mt-Ny>rz6aN4fb*S!6kI?$nK0j}I zpQ;$}f)Sh*YDK!woVhgA)h_F>goV^)z5#!^l!b;GSD~;DG0r*BbUOoJjlHN3@oMIyxyRicnmR`{ zHB~``-70|XLHc@IWXe%w6&}+V$7^zZAt}cLl74i=5Vs0sj1lhzc~#L~yj*=${wn&1 zPN_Wel#BIlriC5yLgTe=mlI9|r~{JD;H+cM?V(nmhndGUb;W&TFaZq_A|$Us`%luu z1lE%hqRar~mSVbx5~kV&ke41v*is6H4tNKjom$6&Jf&nU55WgL@>h}fPhBtSk6CXE zp}3U#yb4P!QzP1v-fikdMlBw1)H4xi+z~047I37uGANAKE{6W4cqSL63oR>5>&DORfM^sShi0 zUO4q47$)T_5shnZ&-TIcHW&s~Y_=%JMeln=!ex^-dNwKe%4{gd>DE68hw z5*b+_C=yZ=oN>noSJ_i6rV3liv90(8V#tW(f0!WFj8sY%7o$?G2}jIDZ|CZ$5Gh*j!r$eX1tR^?#`3a8X5 z$T{BA!_rpP;0kzBebeu+8OFG8hIKS~PR4QQy)_Oi_MsAdL5PAq`>l#iTBB;+%+#nZ zyG&;1N}xSBfVd(`fKphV+nGXA_!&ckZWWQ9b*JHuCgRg?P~?5w?mBxeb@d%SXJ&Wl z?a_1%z162(uHniocd9gI9;MT0u6;tInGS7Q%W@9^sY&5I+=Q%PoM7wN(m8{&<<=C7 zK$1Jk-MV^d)4spPsNA&4()xFN(;^@6t#yjeD8%_tSTf)v)Dk8t(kfNRF z!aYhDDZ$lsT0=}3?bLTxTX7n-s*u`3lnlJ@Js2`Q*E33^Q#x%~ysUb(Dbr@ni3+i2 zT{Ts$bD=4;ra%oo6r`7S1)#K}wL^oBFtp{3y{{WDz-|+o@n5j~& z%Cvi$*bYUiwqrQBQDjGy+6ym6l$5Dxdnze;wUDG>@^r7FT_h<=w}t_J5Bhf>J=b{j z*6Xz} zT^6`Yo({)z>=zpU02Lhvr1XC5NRN6>n@D~V9GbaM$a&EEg8rcnB!(VKnaWBCInTM) zPA6ebqXUND&TCz}tCs%&RJ6OE2#;mPsubu_=eBCCRS?htj?$8!st#iwk~ai|oGaWP zZE|Q^v4_fiioT-@aDJbf*|j+iUxi5T z&8nf)2P2o+R??KV;KH__%5pw5^hTzTcO4dL)~Q^nksvEIZ$fThz%8wK&u9M>(o&Urfg6+(N4U~gA|NevDpY{r2f1ARL8jBXYfEOs zx@fX3sqQ6}RMdqwg+5TMgDFH65>#@Mg%sfPtW>FrZ6RFeI-|9cbsn>~=(-Yn6vbN% z%2cpEqsT3ibN*gp$C6`e;^Iyn-2VG1 zE&b2|aY1I`>3mqz6#|@HiEt`IMXHX&y)hQG5DU9Mf^aye18RYj=U^!j~yxo!6A3@}6MTV$o=I)j{KdQ=hb?X1=`TGB||VD**K zt!ZxJUe;-MbC2CWz@kxTQQ=97#YHw9dXU={nJX~SJquX=YFqB9Ni3mUrCCWNauRjj zs5LYZx2ojOE~HElUDzCZDQ$b8mvHE%$yKweEL@VP??bLnx7SNtdXx0M#NmkxSwn6% zfE)@><^$5Bt(2&k*HJeNor1_>nl>5cu@V)Y#~*`LE5gVgH}>#4N^9wXOU zBX-?#TFMfDn$pM)BmyzHILE)7>m6nagI19(^uoV{Q>NDc08q=0#m&k80B9d|d96yh zzr%MU^_X&Ft>@(#kJDDa~XnXrce1)Pe0#YM9oW$dU6lRcWxQu<;0nRo!0t) ziGHj>yXr1m?6&1T>WY}il(_!@P+4SflrZ5?zyr=X7}icL!Dw->J#s;2ARb)hb9mJY zLe|rDGD89CKqt^E`s<-|vZoGZx7C{UM%wBnLY*F>YxCk?A=E zk%Q-6DueHAU#Eq!wJ5a4r%W{TGx@J0XK!#%{@ApRQZ%)_XI4S(j|RCui)~tzYnP+X z8x5lL3WeEEX)mGbYKbgV7ams(xR6Fl6rOT1omp|g>RwbPh1*+PLxW_33H!oE92L&7 z*6#|HZB=GKonI*EpjR}fX;ms^uXuHSebY*>PeQD_ak^_x{{Z#9w*uIVsmk@m3-YX$ zjxu%a_-Dg*w6t73gjWM4t|hKL#>d%rX>f|R?G>t)G6WNyPU`^vp;7ncsd4m%{{VXb z07WGbD3=7Xo4n~mC=OeiNRq=A!JyaGwVy$i0==5jhN^+-G>Gc{@ zOfseI-uPvdCBW%cGM3v`-0}eNtk%{>jdu%}Z8nJU9`C)V$L}trG09?n@$l0_(qS2b_Ctn@@Fy1Src%SJt-7v$5qNL)3)f%=pfY{{RZQ zseeuOei$LL9POM(Bi=SEJ#t0EUSH)rn$q&)-1JjR0xLxpgB`; z)8ju5Kk~|!%GzxPVQzABUujrM#(gaMshI zNHh<Y;6%Lne~?vcMPj)us-_eShOkBAichHu8o7+Lvb+0D zCkK#q5gvZ-1a{=M(7A27FidxnK>WW|yV06&@deW*(rwvxUAu46Y7e|%J64kMa+NI! zI939J!%Fu9a#RllXH|SpbMW^PbFMYNSOP;^hmU@0=hv{Rb@+80=@BGHs+h{|WED48rlfdtA0CQTXlNKE!$3MXR0@K8o|!{EFkm1YA;;FpkD4LZmN zXGHjVc@U!*Y5*xZ9^>}_{N2r1{UeQQrkhQu^tRx7qy7|_=%&=6z86Q674P|sKN+>D zG0M<C8)fOV$74Mu z0nxrRqSMMH_J}wsZ9^l+I{7ac;(R-X(s8n_q3<~aA90KW>bTcc*{Cv@a~yI`l5zSD z>T7yix9m_NTh&VHEjmqNG_e+<%9@);$OGv?x z^Zu~|&)h5i*WlA|9&AMBJ;&x%<0cgvm1Ok-vE$R*mXBHZ~|kXxP@o@%jX~8UjG2$--a7S@2hY{I5-6AoaP1> zM~1qyX^~2c4x)dlIQ5g4dn!he)f!Ju=oeiwMFLXhsiacbsD{oW<+7rpfAtk}ue4L+ zA=JZxmH{1QS!cp2_=VLTHa_KZv8tY=bsnPZS4|zN#}s6Ai`F5_a#}f7jq@>;C|W=~|5rcbQ?)qq_BP_&|wEwBor$ zMPfxFZ9Z9(CK45x^$5-owa0k`;{m`Hk~s%oJL4Y|R&xoH6C=N37o@VH`2qlIx1L^y zlIyFQoetovek)Ld#EEhlZHZBxKg)HtkPwwEURSsPNk01deP4;|R;*t00Bk)lyOkQp zFjEr)=C~X9i0OyX&3dIvqej~6d2yFgc8$aHp!o$pb@i`;J}#wE!i(Y$=D7EE)W9Ty z=XCATR~25gTl1$^RCy9s+9WC)Z@`+t4n>h2Kyk>zhd3i&X01$+9mwptG~7!;h>l%7 zQ?oH?6MOaso0YBJllUI&Wr%+OG^AiBAH27ny%k_XFbgDw? zuG35LCez~fRF+WN(aMUFR!^xzJ^}X{*IA;t9Ee%lNPt6(uR}kF4!YWw%_@yaT?rGe zJN|pDRceSwdCF`!4Yb=#p`ufTJa-bTp9$lQZTo-Ot=#j=e!j}PJ{d~lxTy07?yyWW zbtkIt%b0Z1`mF%5Ku*8c1@ODlJyoh@F;uAb>Pn=gEy7CVsn&+%I^tYbN^nU@;A1$~ zZFF5pr$o=|m9nj~^#*wCrUuio`GbW}H)2`$1b1Dx6 ztrr%w3D`^*f4Os~TWctx)oQ4>rmhJ@l_pJA8wo^NJ>OQs3Q}+mKq^lj0oAp*rIq7F zT29u}vFH1vPLu7-I5$uL#_O6b`7~Kns-M@Dt;MLNF037Z^X`65ygwR!Zxm=4T)T>X zB~s@&5_v9KzG+b0s#Il1aILl!GBN4>2isnYh1|GPYhAfe)og}^)&Bs)BAAyUmm{sD zrLdH#3c&I4?oPZ9#|6v=K}}7v>7Qljjmc~$@R3zZ%63Xy1t?J=2_IpvliA*q{RaVE zQs{vqeHS>_Zv{rEX% z$1=bF*Ye>bk%Zv=`5(5vynM^&&|@g-N=XMBdGv$ljW8V&2kALP#?z8`~P$LT6lzG4z(8pC-GC817$=aeZ{ab!NZ7{-S z<04T)MhH(B@uVbwEpY9hCaivt-ldJ5rpMA7nIB5p5m#Q9P(;1Q0kR>&kK7JjBH65)C}WC`w^& zG-Om#jnUDMNLQ1S?vckDE|-zM6f{P_1*`%hy6etJ*&Zr=Bq$Ud@_gWN@-<_i4I^}} z1-qH-n zlwO@V@U#a8)JAP1X(M8J81aB|ef80QhR`Qr^-tm!4oA^%Q!15eJyM@papX*XlOYRI zL2$SVSCls6sKa4?qitD`JD^O4a{ahNb(Dnmg@S1z5w87V&40Q-}z6`$a+4rL2~ zb<1KSl7&zt!lu&EO+iV18n&6upZV@^Tv|eS&hJm38s=P4*8N$9OmpYcl8IHS4knyg zQh{=Fjyxl>I8brUH~R%}NzZ}fS}5kE4Tn{8X@+dr{&HGOQzR}H=4ysl)ksS$Qlkuw z_{xwto7vl^vu4 zJRMNR_@W8H%C4K6Q1e@F&1$nqVd{k?`A*h~+I^&;B_xB8<9Im%X9NT7u1kTntUw|L zQyNVlcOChrI-*lVq|1=(?&EEt5ZhMJfL5>QK{z1i+zfkbO}qShpvL)DFnS~{r>4ej zsTB?35#lXT(&CTv7NubcLedUKcqD!G(X8e=LtlrB>p7*WrnC{SkmjQA)x%O9n+_>rWAzfLvPmi!Ng$EnZNcLjb~nUm z1mZqw);Ji*g!NXe(&|-r8I(S%17SU4mFF_xA@x1t0l zDNt0F+<8a15K=rV!5Q^w8C8YGCMVn7P+r=E;L2i?P>V$nDYLgc)OCq6Txf)>lldD2 zdO%7~C-1EdX{bw@uD5QpsF>u7T&||zx+17SoXY`HV#Qj>5YU!OMpB#$NpP>$kPiV` zzNIrx-&u(}0CKmr&E3b_{Hq}}ieph;6riKNTG}s3Aq&7rOQ=GIcx-xy$vX1}>a*N6 zn8w2^4Myf&l#=R@X^CPZXmx;vklP^PZZCLPTCsqU$E0IUY~1i(PX7QzDUeAaJdV`F zR4P=)l_t3+CI^nlalDeXDxq1KuIfFmzP`#S1p8*=f-s^KA`fu z?+jy*QM$7k9aL80E=7jz!s6VIB0H%w*5Dge^()9A;EW|aewyfT=Mw(_2Ly6j1Ohc2 z972oH=oMMDq^5HviXh)L=L?%VjV(TvHk=MlKnI=WHdrb-K*Np)({C z+zG%+R7#j|MC zlIcD9cStEzc1Xux@}rYz1~p1NmZUi0gN3OnaYXG%CmBEeQPiY$ypm>5B!RCYWiXVY0WwEQ2H5t%j#nB0CbLN-nU)I}$dn zDpD4N;Hk$#001pqCpq~0g61$tcoY1>qODkb0YA=IN~KkJw*^iGFvNAm$SlNw@KY#C zo(0^Y#|r9LsHblNl?-h6nILMTlEAhc^jPg z;~wJsYA#?dAo?HOQpUZmh|hJW4s6I1Do1>YQ?puocn z+>UtZ**#z$AV4clqdG)55a~5JP@|$7Z8ZEz-KjEEkU(3#v~6rUwGvVZ$^6*YD$F(2 z%|-_toQVU|KUDP3IKW#B$%!_jQ7Tg7Mx|l8G$5=gA(VikRgtrHbGtkr16_L6oW^U@ zCC4QtSC@I>WinK1NsRL=lO|lM;|-y8Iu$iR#H>ilno&ZyaeEWFDhj~oI6B8dj<2`| zf^beY>Ch~}j%?~aUTKMQX_pkb%r_*}A*z)P#%nY=O%*AxsYnbw%fYk!)42LnG0Dbt zxYDU^(0rsg;DghV?3vGVS_p81wjhOhS$E}PjYy|kUri3PWZIG2bXzxCS)Sg*`5BB> z66AE`cxl8GpH>OuR=)PI`_SNd0fnX2n^=#uH^huj-EbY8GJWM)Z&A8)c-w1>2ALSv>jcQY19SN0}TN6JK->;6$5S>>Ml9dTd9Zrq+qQ(3gE3*um1qS?Wvzt1J-yz!`qzo;Dx|j@PIgaWymY$Q%F-EQ27S(3Rw=CN9cPWzIegbR> zQj#32N$-y0Vkuj|ZKUNuB!rW-8QyR;kB5cjwR@YkX$=$NZ2~%eBh;fprE=XY0D;RA zKA^2$r`|UOGTxsmkYP7ptxa8+@}tLQOj)vl%!CvxeiQ*oNe9n>dDlOHaM~}d)(}eo z@dT0xABX4NO4kjfJks|Ov$h}3%a*Ns8uEpCS14A$P+(i|=(QSsYU*wEskKE~UM(S` z9i*)WTgN3WBod!MSx)Vv>s(KW+0wS8>#8O0cq17gdh!U{n)C}~HV$CzAD^I^UE62V z-nVKJrq!wx+V!f_?>Rt>`$ij32~u{a`O3&UF|U;Ijv;M%tXk3V z$>vBdaQ#1Joz&@6dv!2Oorw}UY1u(5U;Pel+KpznKG~*Rw53Zm2jSBtNOqY$$e@QG zaio@$CFtjHT8H^a896$ZkH52~+F|Z#h{yrWoa9c~xBH>D-{5>Zj z-+AYx^TN*d(Jm}40CLGB`~HdnY<~||H&bd9UZ>p>sMV?^$Mo|cQN+NQ@!>eNW;}wu zn^|P>v=O+ER!P@mh^OUZ&Y^xOeY(DIv7u?ci(BaIQH@rL6<0&Z$we5igEs9EUQg ztrXv&0|OiC{{Zr~R~JdTAx67imYPkwF^hJHpQO5O+S}`4a%y3{;hI|wpb#=rO4gzW z2g0$gC&V8TzQ{DystcX>SilT7twMhwfu8rXZ}^+{6H6D zF|>b$2|qTPJpTZ~>zaj~TDfWv zpvbpbpx-y;u@N(uQbMFVMUzcbx@BF|r7k6*A+~lp$p8?y6aH>`HR={Qpf+6ZkX?#p zwQ0H@<4j~U$lsox#Yn9ll-vCzfcYFBd3HiK2NIOz zBpiSSMdU}`DXJ3Y%UO=0S+!58w<$Ebtv1sx(;R4-lq240*TX|<9%0@P;=6%6cBq0q zMDj+euG0SiMNPZd!c3oDp317~zgll=i=w;jP0p=VGrE?!r0vv7Qm8Y;y)Z;%oYBZe207%u)3`ZqPDAs8%4g;aoC(=13 zZR@UuOPLnjdiFN0Z+mg0UFHthsz@6dQ^X}p2nAlF`LTt0P7N%ycZlNgtlZD1#H^<;%4Bgjs5 z&$HlE=-ob`5XWo)5QSzJyqpK~4<27^6;yR8Htnr&iTB;lFRKvg@lee&mrH%hbR<4p zEzb}elgZallsr{uE@OmtT|W0L?U=MXxk(uVI6Cq_5phbiZCqG9 z&W=-#du)}Is#J!LexB>TddCu>P5v2`b6KgF+#5dajuQ$%Qd^Hvb+a8UL2C+7Q_ei4 zgp3BiGJig{aLTN|;SFIV#vV^0`h~8$M}!*lslA5L>(OwPxgxDPp>=g4nHo!VJ61a8 z&98k^@#Vo187wy(%vkNIXkHvj5}#UBMsbm;c-n2C%V!a##~7Vn!;;TfQfokWnolS{ zHteXrqffc3H8XSF<>uX=6}8*#)E)YTNMR@#a1^NR4sxJK3HTcB@ak5ync-W20N+T6 zJ=AL$Bs4(j5TJC6o}$G%qiqe6DOHD=kf_TXwIzZ}Z!$+IRuoc4g(ripwQX2jDo24Hr$W5b+FB!aY2Jvfgyyw6}mzjT=m43 z>2_0*(#jrMyJaLP0mP6!Ub09YD}+_7%DyclrOiC#35*9513rX$M6C4bJ+MnicV2_v zb;w<5xT&}09@?oVp|g)sm-E0QD#hZ(VUc+F+&M+FGrB1p-DB(SPOh6mxe1Cx zcCG&aX4hPq1v1}E7hzFq8yt>Ys-eOPncmnP!GN`dk+kG+c>VR=wPujw_B=+~gPb>( zbjIVB%bj^fvkt0nB<&Hus5tp8zK?X`uPUQ;({9RBGA+v82+~tNY}A7y9D1r8RCfbz zHWHNVExb~oq@{+ahj#c}d95dL_Nmg$qNeLLx` zsnXiIt=j^n5wk71QD?C|Q{%^+@lrn#Vo+sUpzQ^Y+o}ZMC>`AEPs3bV{{H=seO876 zq=F#E`b$hh`N*D%%5Q&&(&~e~;xn(TG0-7(8rM#seL?Bjc85_qz0-IKai@AZXw@4c94gHM;}X7} zV-*IL*mZL|?UlTu;=O4`27PJBI>T1M?;*v+iP~XpV6@XL)E(D({gW^8LDM=d!B?{S zn$>ooilu7RM4q5hU`1kNl%dB~+cFzY;M<6ChXO$WsDZg&Gpj7AXf6a~=dxSE@&lS$ z8?=yrMaNxBu`U=?8V6Eo6*!j_tqHjH@~-M~7aDVKw1f1`Rv1!=M2^?;g2CFfq<*Jq zq#SUtzNJcT4Rc~f;LBb6dKFdD@B7MwG8EcX!y+`wa34VGwzyi`!ghs)4^OwomrKEp zs`gaIS_tkIi}x+bT53}@I=s4rFFa*SZbPb2Q=Iyae^bYgwwJlzIqC#urxce4Mh-O1XOdbnv$~sH zMzam)8>=F{)*AigT>k(RToB?nQ*MB064f0m3{QPbb_4Dpo*h`iiBADQ9R~vD>TB=m9P7;9 z+0)`qZ-)N>xNNXoOEpL}HFT}t-O zG_dD9cxr4&#hG?&T5BBhTMg}Tz)`|%u}$Xw;X?- z(C#S-B}0tv8QOGREe23)4M%{{Czdz#S8r43vkR z)8>Ubn9FHhr$daa61MUb-}48ObzDx%p!&doOzIsV5$n-&1(|Emx|0^IZ+XW)hX4P#rVyc)Vyzze8ew=48s7(^|d9hqMJo1~?e=twp8FZ9BjW(hYGNV7pI$?E~hTYIl`mrR#88SFAaSuEa_wrRDx1Q`!QM zR_RbuBdxV(0Vh5bljLg60AO$Y-CS!|IjjSZB6j}(#h|ZPKY*Tq^sFf^iF_gg*J2CH3OseQ#l8#t#s{{X4M zyY`$8i?%B_4bNAv!LL}|X|!fp5rcHv#hDo}s}*?_M+>NVsk74hgm&8~18PtgyCG^C zW`Ir|?7H=$IQIK{`O`X}Z{9dmQ@4FwQ)wjfALo*0pIx_Z>y~8tEaxFrX>g&*weJYg5mBdB z;yl?q8FiImwIGv_ylzf$`EjZ%RxbO6Jvt1c;o?9)+qcWA@gfBKuc7|{#f2`7a?ED! zYS*jO(@$F=w59reZEKS1o5mHmm6Zn8cu*i?BUgEx(bV@yuM{dUZ9br8Xn*gcQkX)TvJy zrMB8y%gInxSUrB=(6TA9)zy&8V^ec*d8XsJ5vXw>z&C{&R?GLY0)w-E#( z&q`a#z*aTQxwmK`z`+~9`Ynuei!`0N1T-sUby;&ufM2!5?{P?uS3LU7@491>IPSMM6sf5pAD^p5&Ln?Z>8wuE9s=Ra^BSpg&qOVzPGi2cUdY3 z+ir*TO4enrru)!eqcu&c$&#v#Mq2WR98;rt3Qhu0lA=^Lfx-PW<_-#DQGjc1M%dfr znIrmS6=5j|SEauoY$98ig+CrNXE)7NrtfsP868TPZ@;3PMYuWgsYw z@$I7bv<#s7TKB|sE72d}`=?djn%oi}ZjA_1E)>gySDjW0aK>#UDYntKDR32JjEt0? zG`fI-)ETA3hcvkCIsy4g=txznoegPiK`XY`-ibwi6NIV)mT+0{97}EzcKjcFYL^it z#I4L=5g3KM<=IJL6KNB=XHTn3d?75|O)!Z_?V%e~hnh+iwZc58VP5CPvpvq_nA_Wv zsqzo0iBx^@X1Q@z=#{E%YGtWPqXoK}OEl%aihxp*2}3)!Hor*Fu!^-?Zp1zYei3YpC29&nhaNGi>WwWeh0vh#Oo9yc zB7IjIbzY2r8MgtiJ4=;PS(i?p`aAD9g#KkJI{yHc;OCU@2hKRsGFyYqHCm3SHDHm1 z`O*}18rOr=8(NTHkfRpS}axtw`-dIQ(5tWtC z0FM!|*m;M~l8jYusTV~|P!$uo{vcBlV$vRQQa+A*Ne!vj8CnviQm}F9;~bppJL<`Z z8CwlT(;C5W>9@#2-s*MF)Vc*aiPCPZ(h*d)EvFOy9YYfXj;1n{95LFSG8E8Kf|A;X z5`185C2GHC@|Yl}ZD!Y|32U0~?mPR9mp;}g(O!~a(d~H7L}kMgQdUYT4mh*D5?fHn z3P2$wXCJZBkjD|pXK|-U5=kel{ULYsO0{toWEyQAhdQqHM%`|TS#~Pgl3Xq9D+(&! z%ZVe5`c;i|+pkWMh*_xIQi*W~(p6Dl+ZRk)ty&dYhceGDIEQwrml<2G93eh=5}3XSg6z4q}Cy>gH%NoDWlY7CNpv6$0`L(t>l6@ zbvy+e`hiKv#;P+S6S2TBhc`WmB2*f>mu6n|AMtDjRBH9gTvjP7gzHVjoEcYjq%E!6 zP~r!=JnJ!*R&muLFb^+vU1{*c&y}OJm7!R^YE;YSgT47oIYm=nheMjRmjqRiRLEK3 zNl65G`yMf^1PwFEH9ZbzDETXTt5vODH$}lYTjAOjKc`JLVsPRboq$r7pUy`BqqeX@ zfxy)RdEIKN=Cn1G`3`@`O?4Zl%3?K6#j0KsW7C*YO)8&VVYejH%igpmGF=IMG1ZJW zxT!usBN))Hskst`IxedlIG^NqPS(@XKLuMfl$i;UDGW%h#d|1IDInq4pb{{7O0kiw zU>#X1(qQIs{{YoHz^Ge~RjSIULaMfk9EKWgO(j8%^3QEAER`Wcap3I*BR>S{%_ZEW zIW1rwZs&ja3N!xz(CXy7YqKtUhp6sIk3y&x7e`P^Qu_=jDV@>VKrQzDBo!nm5s-1G z4sAI+{Z%#U*SG<++TA0Z3I6~qE@tgIpmG&rqaK#kzuc1IB11#3RNnxou5v%+FKVzx z`Bw44O42$VEcogzN4VxMIYG4qTGNfIGAR~DaD zN|eCvj1)HJ(xsgKUBsm8p>M<+Rf1us)lk|El3MWQ`wy8{&5!&{bbF@o>Gb<{m(?2W z;`-Fx(Y7)Z0$f!CwUHh`QA>P~5RwPD_|~>oh5!WjkgM=5sZC3p>Ok^frsruMpbwr^ zWmWzoE}NEJPQ$QlwOe*gT5?{OLy%VF*{gh=;r0=fI0*iP{#1mUobS^rs-#>qMK+6URci{OQd*W&#c8B>!oKME7&^sT$&IS| z?QWwPY{JyeC0?Bp#*wObD(|Vtx4L0*Q>yiP{dV}2%{?vJP04w;Sp{Cb4m2N5s-NQ~#X2O?ScMni+sWncXT=l8dSeIMTq8cRG z2uh>2Tnhp!lei}c;DM3vuQSCgt@v>lUKnfHol!EgUOJP*?paSsX!4egBu>*Gc=cVY zZ}iTO66&NkW?am({u@%_+i@$XOqmqf4KfllA%LbGj;9VknvOvuf;ED_#UE(0dy8Dg z4a+kF^Z73^TK>ICVx3{G2+8uFmddH>T`qNM?p2%B+eX#t{OFO9R;xgQ?1ZsZ%fXi< z(~^Qz*&#)0Z5ZdBWZ>6y>DxN$*5ajBzChGI=^2Oj=u%dDycwscxXj4_Ha&XwT>I7^ z;r9BstMv+Hi$JVgy(ekbrN^o+TsdvTaqI%%TxG51+DRZ4EeTNmv5}p6UJ3CfrNti- z;-eW=jmENJmYhKbU)Z)@I*9bA*e|0P9 z<;8GSt_CYAtVn|VHl1#wh%+09P<65j+*DGuDGSN<6sR74Gp>E*v+UcZ*a;*7i38WC zs^t$Fo7?ta3#SGF1Jo5Pp5IUE4ApMBrP)}%BTIb0A{5j&O=!Q!On2i-TZ&8LZbOXv zRp8@VYuMb>WYG+zSDT3aw;rpnb7NZZ-XVKKqE3dA1b=ZlKq}|3E;bvcxf;#2@7kq- zTc)`Z?6m7_$66Ru_(*z|H~Q$6G`Ik+LXKklAsErlBNhN&bDyD8U8I`4FK&hD*K?)zrnVQyOrr`=sUmXh5rvrTVv zijxK`*ETaXqIaaWpp|3Too4uhfQ|slPoW@8HQ+;$PRlE3%losdQ>{vtNMhWHTj6ZNwVxTbD=#Ma85joYma~9Tee)#PhMefr0O+a<K)P@2;I*6pPBQ0^g%E zM1+Ud>v3talFQFTab-zUD@u~t;FRE;dvUI}4z2d8LBxQ2to%u$%D$RSc5^?lT!(Np z+H2ERC7GMvP$lNd9zucIq%AokDaHu|jdj^cpg=30{Z9MGKUB#chcbO(s1On)N|3#b zGPR{CT93Bn5C`f`v0c@rN|A9e2I*?l@YybyS1(TJHb3};(z=$-T@SG5VH9d=QnKTp z!?kAuCe0?Aw9xK6JL6 zVz&-H8%&R)q13}2uXW7!4^FBd;>KzehFz4z7ki0o8;X*Z0#nD4qs92;KeLeX0V$}5 zR51o2dTn=G=)Y_vy6zPEqm;;up~@Tyzz6M}d|sa$t4j7>W)2T!=qXWYrdq+L3bW}I zyE@&cNTy7u6>rK?LI}!pj1234#23uEsvgHKeJghFwp4z#4)eEqfdlYJ3Sye;=`tPN zwQVH(o;(>wzV>-c_wvWa{mA; zjXL#XzH1R$rU_}IB|(>2lCrSIe;^0?cOC{c_kV=GEEksLgyasZnR99>QxfSj(~^9) zI!jW1&_hW|n+_zm-CwMMjyGdoPmO#;#$L%h*1K9q!-MVJa#iEfNziH%Bj7lO=C;^# z1Ys-A;zyiuucYwrh-lZf@n;}xxVJR4Jc+?wA=9pi%eUgQb25bfBLi#EWT%i&FiFAJ zjN%^|>ZoZ4Ksa4H3m_rnOfHx=CHyOsuZkVTGTp2!viS@i>n`?MLN>aR4s*971N}AV zxIe~}TGrBe&eJMgQSmAO064&Ne_l(ddP{RVbz73E5}9G=>S|f6Fox3|4?e7i5~kCH zr+1u=J@w=MDdJ|27Hw8PQ(qI93q>Xe)5y|BG08)1bRvm&-7ed5*rHr6Bz<+QQgPT# zNra>5?yQd6=+1EJ21m{{_bwe-ueM`}0zmX!I+P-;voXj-pPt9vQN2h0A9{ms$!__w zs!?SMq?aD4H6Bn=h__DV0;PalPJAgj*E5fc3yVhzrKEG6mGtiJ3;aUEsB+yk+qSfd zt1i(xt2zuhk|Z>!H9;fuAxF}ZcI`a;oqUG-hE}ntEAZF00G%6y=&$jO;34cFb0RVI zP@cG05xRLtuD=4gMMOHB#4?I99NRI%8^WDKBhj#&6YrgSPlxYm@qQX^ZUAj&k_&m^ zQfzK0xz24kq#7an1M^;YU396>K}2?tQny+zJ0%BlXW z00)vFRo>8Zv{3NMfalr>)cxMEsO3XBm zG$yGY9+C4ZXLj{ILMdzQD`cktLr4dJJ~hnY+zE!Jc35qwfawPcw?|OxZByHdG#y_@(md5A?=|ABBDcj)g{{Y{G(m>&>l&RG&)GAqX4L$_FJxo<4Dn zeD~t3_P)4dOooj5u8oyHEFNj@Y^Kv8RM_*xgIj&Jm@OeiL8KpE(022We;V^tnIlmL z8C?c~(i%)DX$(z$%0!2R7;r||yV9=ejxdz19H^7+tih-6_5NXLrAtuNIqkBFR2I_} zNf8vDrvP+0LDPh56-#wby^#$NdT%` z{{SzR6q+Q_8K)m+NqC_}m`GZ~SRneJAw(arAM31y0w9Q$Q^WN{NGoy#_8_HE)U?Ty z9y_uZElN95wVzUuTvjj-0|%XQ>$T4^CN_l$oBeaRPduPfJFg9n$I@NPRTF?oe z+az^1=#hw8lzCLzvn!7wU8zZR$E3QAfx^m9fHI-ajmO5VxuH>{7DPwYW_3Ts$`g~7 zC@};!;!&8UIXJ0K$a%%OwK0x%IILkrdG{XL=RS>LJ|oE;u!ESxjF{w>kz1h2G3oAt z#0W>~SSW0?+d&-eUeS(Ejoh78PSW9o)EOrkKaz!j>~ql?2&GhtYHmF8Sv%C$)FmW` z2HxOzDJ4oybDV*xT-0FE0(<^QIj;T$tl2_;b*9K}oe&`gYSaqC59M|B-Ob_OiEmIIom>1Cn+E;30$%XQ-jhrp&)VXuDz8LRi*Cs z_C{LgPc)hufa5K<9;f~teTR^>R$tE0rJq4Pw5dZOJBmm5*6lLw@T{ZaILl6Z{^~{4 z2~k_Hta%jryA|nGdW}+Rk`|ACLr4{;JU`ld?TwF+xg=Ndt#yA3~D7{)tDCu$a@ zWROp`dFNd^VYNqDRnmMr9)~K#fb2);1&^$b>r=uVugOD+aSb>|@(`tXI5{~RkH)e& znjZrIE#{E|KQzf5m*Rw&rFA4e=|eIckQ0!fOMS3XouCgK4D+r{>xD-hPyks=i4g{R z@=g`>JsOn6bui2bErlS+TR~=2m7J2%0YsqZjDMz=g%I}_$tH2i2X$ZHc9_p{oMAl7 z3KWSy@UAq=jl*MNid*ymHZa-T5S06z@^#R4Cis8}lau~R1)7KieSb8}!wGh#dd0i*=~tcnI-4q&uV&`buI!!VdS=Z zXaK1pMJXPU;GHY(oAyxGHbBgUvF-(I zp{rL_FDU4R8g3#;fyr-wiP94)ogNs9#8rkv$YE(y&Kv}(B;X@?CysY=b&dQn#lhv< z_fRxB`e$^s>!td2Nt#^Rdj^*Yw5~$|AqwuH1xnw>5tR^goP230@Yd9BuuPNmNEp&c zk9DzX$}`M|i|w;bOqI%d2w6r}mdc%91C*WM41KgXxD@n=^GDHXr%bhx7)@6U*Ht29 zh|*I~r!x&pWo;!$VF=F9+LWAyDLBCy;ON*>Z-xV~;(gXZsicDfK7Sua{K00?c&fv|IpZMfl$ZOGE-F*x05t^>qMms<`>ZJ6ynC%g5jb?8u} zw5FY5mJyJpsb|%=fq)V`>yLX+Q6vZ>at`Y|paU>tm`rmfhay2!@qVG>C16HEa$f`z z_T=CLjO6j;Yjvwji2&k0N|UEilK_O(SgQ4Unj1k}T+|C4mKn9Rx1=`(qY268)Y*k)#=dVtu5^` zn@cF|NFggBU9~BYRn9j1<6O=;d*i*dT5#N+lgJ+7T~|ReHayb}b=A2JOozf|Qs6!H zFU}-)8X>&)lkB{3R!7eRT)Q$GQZgQJ2VdD{cmdgvdu{Hk>MD)FJ(nA(s+hEWLy1CA zvEFdEkj~OSFS&5z9~$n~ruMQl>XmgS?pkF$LT-&B1wusCHvE`xvdv0DRk||J=mg-Q zDL8Bqj1n+&k?mCq6(3M(k=vS@br~i*EgEyvAE-*1E%?)|D1t*uLJkzCrZ2XQ**L-y z3z#0**QTdIlv%8O;v*{7u(TGDh~9aoqMB7d@h55Ue+Y`=7fpik1-6vQ$#KEl&v9qj zz%X-x`9`^+)o09Sn!?Zl($g`&`A_B?i1BAbie8yftRV<($J8*TxP;*eUUPylIT#)@ ztk-p79P9y~WoxQI7|A@9kwJ|WhN8Vwry@&qhf>Z0mD@8E*lf7rMh^5RCnN2y9ZTm_ zsO=8H7?I1OcQ`rbLCS~S^k!COLZ_qNiACB7aX@?1@C8$#RS(yA`PKRAwbCN0g@;Q0*lBMpobjB?UXPjim9M zWb3DSe@{uG(n)FG{t@v*fC5My=jq?kYgOz)GPOmmMV0jmr^kJA4JuG!dt_lvsSjmI zTPaEi+n#y()i#_yzswX$Z8Ce#OqO;+h|j3i;=I`s9ZC+_ z5`uQ9IN#+)M$z(hrPafrPER5>^g}Kstppx&G3=w1nxnNkoQfE2m#vCqcPdrMEhSPU zOIFU?EI8|U%A8r;kPiy`6RwG-D6my||gcJo2e=OE2n>be3V$AWvdt=fCNRJJ14s?uT7nt=4mjbZwa z(yBcrrwNG}q%xL~547P+X!>wg;VN;(6=a`HeerwmtSWt$oDt=S)g<=XBRSb+s9YZn znH%kn{QhNbR{GJ?8(O(-&!y25RJQL2Uv7;@Y9_#Hj4QJI_8n5w0GU8$zuR#sAq~04 zJx4j@c|IM%xU1Up;%KW%34DnRISr4^T~4JsZ`e7m%t@A>ps1HldK)gruUs+b(eVa9$ews#6+L)vS&0OpLjy-t-u zYg|ZnqT`X&`juqY`ioVi(dt&sy=^AunHiF~ZZ?%Awy#NWto>hddBhwMv33StSFzQeYfseRVgy%IZmcG9fbf3ZMGc>Ytgv`r*g>KgPn4&Z!TLz20RC_otg`? z)?+_Fvs3U10Fwml+yVapk>A-$F3zg-;*{$&IumYEXf^dS0$nCLQys`OwZ612dXSD8 zb+=F)+B3Is-HvgShwv-f<<+h{?rwD)>UZ|{1TNKDj9>sh7)Ck&0OkG)uWbrVDznzh zvYT*MCEXUqwvjdVt1YD+>1qms+p<}7ZCl}xR)_gY$0-AouD=qiR)-8@=`=C!I%S{R z_lyy+oEGjE9;H{*1+pB;lcWJZvVVnAi9@;SOy5`ht3J`7vh_CGwdwACU{XrJRb}Sh zA#JC6(%W0NZoyJ=l!2_(Y${c@Yv|i}wH*$7+%)Ov!5A~STCA z3D9<7=cJi~`Kp6!Qf$cca^z#LMa{EoGpXxt*rZK%B^s{S6>4N>RJiZD5*kygZ9r^W zp#bg1K)~0qr9rivYCWS+*qD$y1KBewzfPW0Bc4~J-2$ppskY^{abGk@k>*S8Q&?ND z%*v%nhE|`Z0j3A?7;GnNj;%YCF}+)L^G}Iu)u(jk&?JVC^X3g}W0an~0@F>@+yNpp zmmEj?M?Y0(u7Mu?rqdE5OKRFBFA(5z=)K;akFuIY!?q-nT`j6v=S&hiEwC)6ooZL5CWixQzSr5=k> zO)xUVg5q0pORp8Sh|ev&l_d!7G?fs2(z0`|ol1>vUSM}pjViD5ut_}=_1k>VlV{ds zF#KwryGoMH5_+dCNqJvV!b2hc>J~be z54SoT;f=fcbqXVOS8AO?qR}Lfn(a=P^(&PoE>$=~R$M8V-c-DyY9R_jLN@C?D^o(F zpQxGSd3q(eny1Ar$2cBe@Tx@BWlCH`su`$Ar{n4HgWO6|c}kKzk8VbFwbdK=vF@v5M8NsQ`cOG2Mf$S_N-g(qOb&&L|)Q{oh=)-+nzPgwHf zy1td&Y=H96Ihl{9QmRO5ac{UY9GzeS4UY(tQxJO2O()*4b|HM}jC z03>H5l-4yugpu( z6x(S)lO7{ZrI7M~QkGY}DpI#?7z0Z8leB!YtkG){d_s9cfMoR|2|kh*g*MQ-E^5?d zTQtN?tw)C4QBhhr?j^K^m7Tx6z*t#v2UE%52P?-m?yymebDU5d1{I6Oxo8c6JZ@cM=4G^@I^L%46J z+PU7RG-}UBsM<0dRMww;O{u9WDqd3SNjXbvKA;M5;2m`b4WMn?O`>23cE=p>kexKk zT1Jz|@B9jbc67SS(%hXT5h--mT~s*E9o@8KsWI5kl_;DH{q@ziwrw$u`JSq`7dksA z;~~ijN?KuMN>E8D$>m1?411qptDH#PO)$3?RH(5_c7lgMfaIh|l@}N)eW0WxdH(>? z3Bdd6p-rxMc^QZviHHX(NA!uTRA^8rA@s=dLP47BIut>Jdo`amhu>>I1-WxCSiR4Fe8$%A>zAEka7I#jb}GmMJ2jpGA6rkRwki$WOO_b!-)fG zM)8#g14>o`y(ix|(pR_f>S}>49#a_$Gpaenwm0YgdHO4-tM~r^PZ3F@(fUOueI=>Q zOpSh9GDmnc+hl(|OXUSm4DJaa5#)F};c%V@blb|0yVBu;#|YFrc1upmr4mb@s2`v1 z6r$*p)y|)EyQeies-#7??{-6}j-;vRlj69Sh^DlLRq2WwR#w4D1xIk?XI_S%!?tX! zD~8L*y!Ruoebpeax*R!k#C-QZRPJobB^&<$q5acyGf$>bs?j66chl4q$)YK1Phl!| z06N5-$xu=b=9D%ogOS^v2R}YbODOoBR(nD7d#it_Jui0mwq?xe@|(J9l&HpK5|)XG z^}8J*)TxJ`+$8!^up3f_e<>Oe|>QZS$v*j7>rBO6taX|qg{tT!U*q0NXJLbjmLY|XW~ROeZ^ zdVkawKMB2Pjgs7m?*#?MsH!kg2~r94xPg?BpHR-W0M(FEco9?X@*`>d*9>3w1m2!q z6^nAM+$vy~sBf!kgt%@J8g!`#86(a;^pzQ?#!+M3;{%ot?i9bEJt%9dH~brNu~1za z*l7xra#fmjrd(~5B!=2)PY{CRi^5V5-058HI4KEzW1^Sd>k}QuwX+Wa=BAx(uXxw}%OWkdo}u%H3Xb5w&UQLq$-phm88 zNiO}nFAtQ7^rs9-F_O%>ME4Uaoh2b*5*Sv;TX{Lb+N6|`o^)PX_7OX)yg&@cvg}$V zuTr?INVipde~TzpDtnPCP-*P7wj*wop(%#b9j6z;DnR6=!~mdj4!m8h^(uEYC{ywl zoRgAU%$ZxCS6G)rahUygT(5B0wQEjw({I&ctW_<#n=sNs4)@!UxU{eb`OpHu`{Q1& zon};IvB02Yq<>c_&JV_hB1}L`%AvEQ z?wF*h^-09^Etk`Pv^bK507gbqKqHQH&2wBNWe`KQR)w8l*KT-K2-KAnxZ2uvxT{C} z)hCpwuLVd?-0*d6GB+x!l_PAaUsq|**z7rIQErJ>4W8;)mpWmM^s%JZP|8&;ve6-B zEGb2{)ZognQ~(D_QK80T=CubtlOkIueLs}`aJrcir&wJ*>0ec)$GdGPTs#Q z>I{=Q9EcD76=FpSLN~yh1;;^Y^sSd$SxVBREP|4K^~vKG)UBw+N0tY38|R@}DmvY! zDi=4Frunq`v!CbDdT6Sxm3C6n{3%t+{d$I`Vj=l(UbpKz8cI8HW~IlK9;ew#y(O1B zp#x~#07&wbC|K4F@oTcIY+r}R_L2^L*2h~hz!ueIM}KuWnCSL62zR2|r&6y++m_L{ z<23yyQufS#Gmk}bDJ4jEx|EHsBw=c8z?|TZI^uC&25HstsR5v5Y4b;7KO(ZajW<9o z-}}FQiK^~e?kejN>bBjeIK5&`JqK4o;J7pjztRmSPvIdwMO9V$Ob zZ9*)j3|Q$Wu-pQW5`?zBz~Jsb)yUVXukpoNm}3iik&zu&W`!CS=Sv{RBa%IOq+;Cm zDhNb}Xf- zzdu{ahW zTwHZHizSK6s>6>XDO+o4;oDji($EOW=bVjbb?e*&FiOVXhV;jaa^|vesEtH=vm`EP z>nB@fbsMS@ui7H&F~Xf;`g=2#l|@@93By4uR>YDCDMZCOViqNDZ`IkkS-L4g}}Y zuPX89Odbd(6;A@*80Q~v=IEB!PO8S{qPIGd^=96UR%R7iGE|hf;6@yh%V|o2)KH9* zj&$L{%#}q#;tNP{oy>lzyQ&vm2JgA%&xZ;vE;1f*mK78@RO2zvX_dHKBFIup_vv#d*a9l2gKlvpr&1zATt?~*4ZVgY0s;a8 z6w8S_K_O`h$R!Fm)wIDscimDc(S9^R#xKD`5BYDrrkI5^3PCZn;0Hw`#-lEE4GgSGH7T8ZRKY2uxX_Skug8As5;*^brMCLbI)n{lv`@G3VbD0klPaz-dKxJidKZ|aR|a( z3dRUg(h-~@>Ou6&Odm)Pqz*`ci}v8W<0fR0aKw*MVv$4t0P-g(sV%N!VI?Xg#ZZYh9nh!hRz<@>kcB%faa;>^ zg|Izwm9UZ!c=j5o(|`#x`Kxuhq`N_A>UKTH?5Nw?;h%feWLMQ#msEOV>8GMJ#bM*W z`E4PkCu%)B1IX43mNn*2E~`~a?kxgAZ>Q*R0~&W6NSfLR`b2 z^4@7hD)4cuykN$|q$PDS>UyaLxPPRFPpI53u!&x{?OJSFWz}HFnMSETn9X$>+iBqn zpHgSTRWuT}S}QmxQ3V8(g$*M!=9wL#4Rq<4e6h!tNIvlaINkQ0qt)75%w7(}c5h)U z##II}U_2=yhs(biXzWPlb4asYDg6M-| zPjod{q`sEqE;~*F3Rsd9cYvSDN=AOiRW^+$w@{h&OG}C0kLkBT9E+RgAEJ)as!!V$ zX%usFJxim^TY{N(&xG`s>JGLE5t>O;g)4PAAS;l3WNCDOae%b8qnrS#rO!K;5*i2U zr$7A{t;+2ppo-i?#-7SpT!|CqITmF_5e@)K5_Sxv6zx*E_UDaM8V2zl)%1ir$Xt83 zZ(+GrasDK_c|mIIs8K4Bs6B^+mhGcdSJX5D(~O{`DNbQTf|Yw?O6r0(%G4}8^5ZQT zGDA{&IyUk&->f>NUW*<2O`Z0c&)f zx1V)YW?a*BxQzCd)}O=T=r!qIh2PgSip)5XjXkJy)Z`|kG^F7Y6ZAcjs*As-an&%GiE> z9tp{*Elw>vfx!v~)8|^MQe%gif+upVZw+wQP`J7A{lviRKI-Hyvh+=sBGjtCiAS?& zHTAhnroJCTu^5!X3y!R`2~wLVPI8YYk*Y4ZZL_N~tAqj38+TT7bWsGyU9;4$JZaUA zqf%O`Mx)jx)FJlVZTf>QI<&hHvUaI1DB&m{n0O;sJBLuHOR0kcr|O;jR<*576$?xD z%pa2UBlumiEgH(H^*W>VDHUevNu3-*mKk;F4xFCb?jd0=q>PVm(Cak|N>8h($&G}N zu+*zsv1xPTenH3O(NP!O{YJYwgM3?;ARRLu6ZG`h zl$*BTrAO*hbqjjv5fd`83VL2dR-In`sE|@pgS3&kV*~oR=SlGGYq4VI)uEy71Zi`3 z@28xsmNqx6rs|IxOkf!LiSsL}qe!&k^$yRst%~h(HR)thKDNo5SBDz5-A)tA0ZqxM zDbjmtY?ZchQNP z>A}XtMknODJT8kaSk{2hCow-Fe7IZ#Rq9Pz^ts%w-t(qKc2h}V)!U6C6H9ReU~x<& zhQgFMTG9bJ_V#=(m4z)7S_mCZetj2ekCDQYTq!gYBm(rho>hA4W|>K(Nle;%&4%i2 z7Z!kxprLQHfJg-XWoJzKJDQFGt`Qr5`AUkSodX)l2b^j5!n3Zsm!}t<-($G#to;I` zYBJU#r;|sZRphqPDzxGNLL6WM(2&m{DWaX} z@-_1=HSlY!8p^j04Agw@Y`Pu)0PvpsE=|piD*znnE!gR3-_j&{g{RdhcLmd4qFhuy ziPdQp8dW*El-8bUGwEqlBNCcI*av7^e3Gzn{X-n<*L)lHD_b{P8^G~V*psEe^b^bI zwA@tlxTL$sVJz}^tXF)qbjEBLC>ad3n*x%ME3Fk zKE!8Uru&DwiyG=IFVtbie87I8YPxG_v<9@6o%hG?lvJLrO{-Dtd$Q-NSD{=|RJ7CT zG1;g_ZP(M-eGN7VEWScQa)k`z=T`7qbZOOlDKIt7!Hv(&R_pRwTIMmNY#a#pF_qt) zDYE)Ob=wtgn)ND?EynBzLsVHWMoe0YSF`zysrHrMY>fIyJb$LWE1b|F&6fWFX@m4y zC~)r(>0_GLI7^)bA7WJp)DPjiq6n^0;q=~Z*KkTQ3-tX~iE_N~CMgq^wdCz3I%pa#Hh-_6ocw`B@#eyJq$jZ@PKq_eF_;@F#aQ_HW><37jL zmL{Sk_zt9khk_hiVaCbfMI;<+CDU~>OnaucbywCcVR<8ybNM9hC%TVas7*qqLv>Z= z+a^PD<;Ta=DAqLUHNk*y9M_kt#9L0G@dkSkO!VLM zP8K{1n#hT8(?Tg!%kJG$B(iGI+fowRPcA9fkgOE)3Ra9PajbXs?e1SryB>Tun87nY z?Fjvzox{W2+#RHuC($=h?AxlTb-=%6L!rx$_>ic{W|F0%DOT;uOHHK%YDw|5@$Iib zIEA&d8*U$~ke$!WF0D&97LW$p!-4(Rcv@F@AO^ALc6FpbqYN~ zlR}Md(j_ngV1@2bR!&CjB|smA42^zj{{X4q5P0>QPTWCkf!&C~bN~y?(*@EsA zQ2S)?f68&e*SfId_f2bcne|-Smf)F%9O-o(Hbq`zbBdK2IaFCgDjfOe+giBo-`nVo zJM#+LCU|uwK*H%t4Z_^nFTYGETWL@-qn}7w@sd7u;x4TV1V4U7HEOO0%lWHbG};)B z>#sC~I?&wn#Ciw5HOv%h6B4qDq1YooMH;v6`#ME!W=a}(CBink5K7O1f$y#NoId1I zfrY-whjXyc{41VSUWoiB7Ku^N7T(n|lAlUXw%vKkR@E5cgN5j6zf(s~l7ZV+?Jadz zo=Z$Gc2^!#ILX1u9BXy`^-)eU=(bc8-Aq6qnr*(UN_|oDKeWo6WcOCvsRboz=a7DN zqkwVuTD)`pmn!PqztHZrY^qaggElc~xP?l}(2i1r;B6lo>2bTC9-yh!S!C}GvAile z`moxk+^MY1N?n5Z36z4J$v8M1dw#n0ye{umkrdsKxpy=R>Ol}bYHb7qO_%gClqzs;ZtA;;{3JuK( zmg<)F9T13Gqk-vgAmjy)e0UmPgE+GtR5rVhNm%Mtbr5MXAe@fN&8wobeBYH=@+z#p zrr~8OjG|Oi{$tL*(L?OEjCPmFc4w-iiE-E5(PaYxw8RMgPc;U(>yjzXs+lDVVStg6 zN0ab0_SS8vHMR*{rZuh;gX+6C_*{2lq1>|JH7B(d$CQ;5&g7(@^w*@}+!4GwfT%>6O?glOq+lkxe@EH+ zIaRk6Mz(hP)yfq{=UX z2P#qVq6`EiyJds`pnt35&OcG8T1FHHRE3!U0(eRGKlssWPbD`ngb)%y=RYI;bsS)z zKqY4!pC=rs>N&&z&OUCd?y(QzT+d$ z`eRi|CR0F#blBE&3`=6SQ*kmA204=KVS<*{ulZoB#&OOy;yxhwfVGaJM+BIjeb+|P z-#VSQFI6qA+z_KiQeCJbDkKl6e7>NSA+y3kDd%86Z#wamXg$uDpG>Xgxy(TJOxDDT zMCa2fRS`NpIcr*EHd2Q{+y4O4%Fn(|3I5u??^_w9G>Pl_t3e|&C$f;K*;N4CsW_s@ zWnI=ClKxcGbrZ2kCuw!UJ^X&!rS25k8xuW0m`p03dbc7?HTIqe+S`salsELtSqSYmJ$T2vgdeuL^=-o# zz}HV)=6mu^+kiv@2T}apEmNk*F2!-VO|=CqA-2%AK}*1s!)Qhb$ACu%&boHtx@I%a zD=x7n0Q#h+QscpOO;Z-jZOvN^%WyWH;Ufg2Ad;k&5C9*(w7dcmvCan~dTyQ?s=xKp zp**JEob!Rjy81(^2?uIhN>Rc|#{(a(JZqDCYzsjX?4?FDv=|9x#++mAlH7Q2w&LHC z?h+A>Q^8*wh~wWH&7e{mq@G9+4#63wBp8NOMc7G1wFEK|!<%?W?Hpq##z5A0)C9vd zPjrF^fDSvSD33i&c`ZgoEtJDhT4{(omZhX{r=2NKDjD)~szX~{*(Q4O_Dv>awCBI% znd*}yPM=MKA+o@wx0YB zG{n^&C{z@-cD4o*3Er@b1mn*?15ZFcAf36Z80H@=2g*pcH>DK{L6 zabJxc3~!L+RJ64_w;-G#oZ~nHoipC&Q!$gW*61{t8Z__B=jNlaX>HV`IazjFA(zqg z=zR%rHm$@AA!+iZ3?~@i@=mY^IfFvNXYRIVq^DO=MYrCN+c6B9i3x6Vtq`S!I&xW# zm2>$A<|i5ZXqLXCM4!1~83O{cH=RuTRP1-^I7GW&G+q!Xzij?@V9d0vm<0&EM zQnjU^jmpUzd@BPVsnwSkG^o4GbK5E9j1Wi3Cpqj@BT*SaM8{K^4{gXK;1wP}D99WS zI;oB?r{Yc&X~YfEb@_6T;u<^Hh{8lj(OL;9TKoc@N5_vNPe3)mo_?xQmdG2Nrr2>L z)Zsjt62&@GZ*~M%^Mxo4koli3<)Q-F_LDQkAzG}h(MsYqxs2?9JdrDd|~tMseU z@3A=`r}x)2mk)CTSu#rM+FJ+b^Vv66tCYDe!A-vi$dHh)rD~qW6*RUny-uJMG?ama zsb_MJ0DJ2|ZASy*kUe&9w>1SScGD0E<@*HPGN&z6io~`h#$qZ~!;ez}USDVF)Ssza zxb&!kPV$gcRfPQN+6;4uhpo6x0%4~ed?81&I&phPNsm{cR&~a*IBhtAFD#KwU z2!IJW+C;&{$*Kdc&mCI_I*POQtQxNxe5_QLnCaZVHpz(DuMCtWMr zt)v@_4q;Cg2pf*d*QZiMwMsO_Hp9saZd<{!kfi~aG3vo92?1E~oq0=}l3o2nAe6Nn z>5;NMGK_&nEY%u$(_I~d5S5V?wXBBPE5dL=$pm{1Jxc8l1)RRAO+ZfSy{S^4VGyV^ z*pekhrORmuEMd;-ca6@hq=2OkRgtenPU)2xYdQff=AEu{oD0>7HX>fG#;8b@EuRlt*nog$CI=S>wvm|vzRUNv$MT(;8Hl3`rW2cdofK~J3#*(F1 zkXpew#Ej20)W4`afRD*SZWh1ARg^67eQ5B0oNT)wG)CnIk8tk7Z%Wo0@!@QxfAg^+ERDnI=BqrxM;Vl#FdrNX7xi zHH+;pCLKCQBCpm++5k+G;V|3ilG56b4v^7z>y+Y0O#A|om*vXO|?sjB$Bk-fGQb2Wg>LH z4ka~(Eu^YsHvwrNxS_nM33qB!l_4V}0zfJwzy#{+r?Y3L=VjLQc7(_io4MosZ!_7iqS(5 z;=)2pX=XY|-s)T^Uepxif&Rx-TtjKQL1-s3clKHxQKJVR&dI^|n~=lr)E{azXidmd z?JXG!N!p^NC=~7CDNg`^55~E4j)&k$JrzX8VpJeWlLlmIQe&aiR#qEKgl8ybK}rHs zv-1p`E0K}Ly)~mlyshQBx`7P9}busOLGpl5&kIW1a^tc~VQgrt?sxI~F`zFp|u+CNL1v8g4T{Ed^=vu5vTy z-$>HhcMg(CC;5bwsD`=BGcz;GD!7paxaq0Fgrq$tR$Ww=GN!hY6bhE5C?QH75&*&D zR#)?wCZ^U$5cSZPdL{agWO&zmjHR5 zdHnsALa1a*k60hcK8PwTUQ%AB*Qk{jsMQB0Al8AC8EvYZ;=7BAx0*>(6xu>bPCa7; zsQWo>r3$WPa30bzyz1($Vbbi39-&BU?Ks-pksZakGI9fRopHAhW9mORT2x%aOF}|$ z008sv&pySW&oUrRJM`(5ny5Q+P&kvKDH9V+j~<&!rYR9(vSbxL(ppI+!5pLY4h7Q$CQMqg5%BB2%1p9C&kONJ?S^GD)1rB|%MX8`k1MP#G!r z)k1^X;{=i1?e2v(37xv-Y*i*&w(SY`mrIo0vpwLKsL&*cPLwHI(zOMkoPbZH5S1Uc zHInwd>-2`aYHr$wq4}*=Z>RqN#&F)e)wN|@H7ZTJZ$h!UZ&SLNx!Gk??@roduA182 z{y^I5cPu3-Avj1uBOym$IOCUZyt{kuE*VF|5EwRbjGo^4UXIR<7M(EXxc%1vNFBNb zan|mLmc0t68|dGaDvsyXPs>clMCGIfw8O#gOT_IYtt1S2IXd%y4g5V{iC1k(Iz$#bShj1QqfRPSRbE7$d^Y_W?EF+rj)TOlB zsBt+-R^;=6@2{cpABUK47}rvm0%`-KdKQiS*BsQU8UO**vIf7tI}XY(X0y}BEJ|J3 zGWMBo+;*hYJl(k#S8wWNu=*X4^5ZQkQET~)jFIcweB)T}U3*6N!4w5rP8*TT6qV-+69UaQ8I&=u@G9xNsarn{XrPSmofRzNR z)v)f`IM=Y@mh`x716G|a2B8wu_eXwwmPfo(bjTdCcT=vJ^jfJ{yX~u{?zf}S>}yq) z=EZ|kaK7vBWe$iXjoVCe=Hwdt>fR1VI8nCD0bl{MG3J z$x#}8xHj_<>9n|kUB=erMLheeBg&QAQ+ZlI0etw^km8&uS(4WO0QiPU<^k9P{K9*h zEDa&QIQn#4=WthEmDD=ZtW!i7(qc%A-949!%(oItDodTmPII`g$;YVc)mYl-vS==t zJH#ApvD0fqGGHll9Zk7fy1Hdrx}rFkl*S`dS2;-qQ({BqOM5#*i$->WbF^d*bxl>z7m~*C`gH`(lp@G&xK%#a5!^Hq|9E5{DdS zD1AeDWi2R_?j#eOc*d#tZ-KszM^m_Si37?e8e9F*u_zM2Ksg|H{uR&mMWb}ycg-pV z8U)Fyn^8!eHHO2jFv5qeYFnfucz>?SIhij;+S2u4ZV_p*9j5XXe z>Uq^rogu$@opaB!TY3*T=1;I)RZyftzG;%^^oejDRY~{F%(!mJ6!gBq7=5WRl7*xM zTAiZx$v54M2%ieF6ZUz z^isVMZtp3QNRn|UvHex;`0bxjlNdR;D9Mr!{5nyRwTDy{ zyPr;Y`&%zs`a$4>BaxQ;)t_Z^-{zk{Wykkhwfjn|C#06m4(@3b<}Yiq8S9e z$ft=#$&Mu@K&8i!QM?VH4YSLc&!y`5=p3;1O;~zTa>V;n<&bN-i5Yu zw%ku3`YU>FYk!+AUBydxIJw}uL`lqh4ZTOnG*>LHjKN{Ltv9Mo*%j90EsBLAGUe7< zNh#i*)66!^hRDf7iCWeMI9iSY&|cHH`6@gL^!)Uk)`R`-4L|-&pGj!$wro32&$rsB z++A3@DpZ?ttcCs!eOu5Tsu@l8)K-|46g<-idF`czGcB#jBrQQ9CpFfiPOE&txPHqc z?VjgoE@d}=sGNbmkO6DGoE2e3savb4)adXjp@=o9Yi`@PDvYY7Qi9gw^ugBSZAm^0 zifOWQov9;@MpO;JY#`b!aR8Yh;GZjdOLO%;sn-0qI-4%F`0e!?rEyBAHrwdDBbC(R zPh|tPhZ~l_Q(++~2?;w&ae|ci)iCk*b12;xG0{|LJs>oH;~rD$C0P9&>5Y$jR#=NB zy--BQOUiPMwmft;%0NyZb@Z$sQ6WXJNaFyVdA>i!FL-SeRg7r^nUkKteyQl&c!FB+ zK;ANcNL|}9iPO3$pd;%bQ03e0Dm@CImq>C*?FPF}yriXT-htqZd?#NWZRZfYbw>ud z;pfaF1Dt@aJT3KIX)om+kG$^RJ5T9bS0KuX(#ezsDz)% zjocn}>3CJI5wAp54VKe(#}n2MU(ILx3)>AY(kGcKxbCgjhw%M)Qs~t8sc@~kRzfLN zdV}g*>F}Vp>v8rY4b3Peg<&H<%Oh#m*T6Ms$q}i$Vtx55?z}kiIFroAk?g!|x9z0W zX?;U9N{ltmW{)DfDw!!JV`!$uA?DV^oD~@<1Sumvpm45rlGvKsK?fM=^jO+R-y^BV zysGZ*j@>q@{RQh{WdZqd*pl75Ez;qRTtHcpR-}hj-5|J>tR$r>1I9Dc6rv}RW2McO zl1J56$(rkh9lQkxThDBTc}_F!qV9?_qH(0tWL#2H4xa{0x$cFiFvc8p z)t*v9RgCfuPIXc8Y$}BfiqF)hC0(QiKON``MqFV7l>oIT zI36-QgRHz!t$n!|IN0oefiQ7tmdu40yVqE_FIv4d)H3wh^(3@iZ2DB=%1J@skOt+G z=2L#xYem0WP7 zM+=Woh#cPBR-_b_N00)0fDg`*!Qkt;P1%f&{Z;hXOpqGr>-c-MQIMgmQs!L_fM7cz z5Z(b>Ty@u!TrH&pVZaicECawg(j%V99h?HYcc7hGon_0n{{X~^`ny`_swL-}ksIqp zE<9uw+in4qy$v>2Ksee^eU7YaNH|5$ZPP<4!+`s`iO0!yCsVDOP_zF45T9!btv=;t z`4cG(v=ss0N><~J1h2gnxhPk42^mTp2lAm~1(iW0ZwoJm&|_im^edXWCDYq~rbrR(@)}9|(~< zRY<5Ik~c(o30PYN)D?QtM$7^6s%p^=?0%l>w@-=200oD?o7IloE@tWlZ}IEK<*heG zjcm18ob0q)u)z`Fp?KQTGwM)C11da|l^#jfS2}Q3A}P<15IdQ7x$3*~_-v_GB-=Br z`PDkQ9sDeP6dIci2#h8;?lzWL2_ab1=eJ+ZHsar$5T!1^Jw=^j&;6V`tvt(C}Z z4L+KGUCNhNtw~i`^xLK-s}9n+Q(u`K#ma2TW<+W%cFBH1i-%(0Va0*F0R=mgoQ-v8 z-O}MU#(;C4`13dWC)a;vQKZ*-z$SJEVtS870Ju6M(|T3QOsTV0s7y*;`k3Voqhgfu z`<=|bP^VjGcm*gKQ1WrktF!o`w}kCrJPb5sBz2u&OM%-bAFm}y_5SU)YI2cp+bf4q zks0*&s&QEDt!*stN<;43GTMx82{Bu#2@R#^Tojdun@>0>X-iPtKdT>YdeS6g3c62aIWK5-IqajI zL+Tyl)Vi~k8cDd^%8DVxR!@lkvYAMB`ydKHor>RQdCMvDOuwqLPYPCp@8Wi>h&@M zeR}+rsc+f0gB>oj!0LrQr*3rdg+Q||s8Rdkt!UIFIPD&w!;T<10$gXykt8vk6ydi4 zQ+Yl+;%*~J)L%r?E{Hy1|Sw|Cy;TjmAlQO$!TyTWKJF3X?4rRLf1i@ z$;@`>n&i|jbkm-!p}6-0u^VzKV999@Mvwhn_%hM4_M3ekvf7eL6`ULlYL@XJUFIN9 zK7Ni7*P5lb4SUCk$sMuv82T+5RpMjAJ&I(M|Dj)q)3oi&)2@1Xk=zJ^^Uks)C2QcA`?y(7;M18qfKb;mxFq4iev7ee=bCP9Hb^|q;Pp}7 zr(b;;x>rY=V!cW0)H{BU^w&2?=<73FegjU9{GgW;wL~O>q+lp*4kdgXBU~E<@A99T zwf3fs63e$~Vdtr?Gw8=^AEM>1ynhO^I)nIMQ~v;mZkg5Sl(|eHi{qztCYh!=N|@Uz zak(&%`@39XOJ~%Otfj=CWoxc0wag@lE6ubr-WyHss>87jaU<4q3IWq^;7akoXH+el zrtXE(Zl^H~s>L^_mnA+*pQzCvJ6ozkkr23tS`Gr*!g8k6JzhqVjYa|qKd4d8xqD4Y zECry!)Jq%>p&NJRsxGsC40mtv`Ea#IzG`rssYz*>miVV7=c3jkEbVb|9a>OI+Ex;_ z)R1y`$<_A{X$^o+^O|~3s^INlG&gx8KAl%&^sy+S*p^$D1bLK-ThkkLQfaIeGai!i zmQwl@rKfA4Zrt015J4E^XqRaaN69r82RHg;0(P9w_*`-PM)hrdM7UzZe%5M%7T%LB zrsT9#qfiQ2K#+G6f}ownAe<6?wJ6jikl}^8zlItcPIYsgy@&3mpTfL|OX@VnBvIEX z*_6+sg1HDkPRbl0I2I1y&Yn=b`cwfq8PeSn=#7>-W}o6Zh~?c%e~SAyz=hOme41r> z`(nQ+DHoec+)?$YjFrcd+ie}A>Jpu*QcgF0xz+S)hO}a1-cy=&+9i&OeSgJ zF#6jpqCqN-qrg}P1dnY>^t?kYQMEuBE2g?-(u+#%v1m?KYEkKxs4I{Y{R1_2;_t3X6 zf1QF9*-s$jgMtX~3v`f_2Ll8MJpTZ~U~Z_ZcIY(LkI zSqUxe1*EB1C;F1EaCBPdl0%Nksy3FrG+JYsc1QjpS}|^prcrunPPbU6&Z=8gm`kO? zVPTh=Vb_vFO(@_1w5Sb^3@Iw`eYJ0i1h&78% zEz@qAdv7rp>ZPZ08W~7JTPkHEB}qG$f(TLLSj8_4$aXqP(NXTXF{4kkW7D6ywPsUd z&s`?#r(Sa|I&8Ku=%`YmF)g-%Pi<>%1Az{<7r852X+qLQ7TyTfwp_BN1pBI+My)Xr z*c|~F`l)4l(7Jl3(wfaMF#XdJ*47~S|JfXR5uZ1TSyt&>J-@rBMMS| zw~l)h&UW-vRyY!HH%>L_HJ0wmMQV{nWvFabBhM^Jkl_i6avqHO*4hG6pnsND20Rm{ zs6ouaw_9G^Ns-x49=%|M)$Uf|NTvvMxvMNkA5f+m8@pf@&#!6Vl;@3Pxo~p~W>%^u zn;hL{1m=HL9{w9Cw=H(fykD!@QD3+23X?P86#YDhsjFZD^V=Rum4|@~+6SK;=UA-8 zN_w&EvGE(4S2f9vSb$8C{sNu#yQFrNcg#IlBZL=;A3j@4`r)$gt zNK1(2D&bo}8t4kmBlk)z9Og?#gUQVwk^S~fwo}&Su!k*56oXEu{Zcz_!*xq_<%IL&d49giW&S<9uGZMKu8KVp$8NVRsL?1jSr64q zhjt2@b~8;Ow309syo8)?#|Kr@tRJ!YC-Es66x!kkHxSRDnffLR=Et_6yC#_ur&yIs zUdHNZL&7kQ;#GsQVoJR~(zKn!=S0=a1RHORxKE(RxmAo`;e(>H<}mBj85cb5%2&`- z>hl!ijW~A~*+SHmsHe$FxL5D1!Q=PZ`JapnL+n(jOI&W{u zr6vOD{l%!#BBg1`Zem@KT`}KExIBcP(@x>|fsdeB>RC~#QIwn<`0ieR{GzsPKjHR` zREI`>zS0}5KNZTIIrdy?GiYfgO`+237-~ok3^GBtv9>zf2R?ZRARTiqY-zdD z?D{QKZtg)c(+87?A0;B`)sDkSp{BP!Jef3z#Ym(!+itllZw>^lMJQ3g$idI=t<-6< zlS4*5u(LS5?~(xbP8ZE{r#A=qW`%K0r$>)Ks<|#jIrZ#%M0BK-#_s-Ps~`{*F~+N_ zSb`hMc3T@`QnfRq6V7s`*6hm@srKs-YSttv^hyk+79uj4299<0B(X zKyU!W11lYRO{9D_m&xZkLgLHIrL%1*{Y#;A%1t_-Myf@3>8;1u52bNmNhP0IQjq3B z+n*;G_|{WXP07;ek+)E^Hrz3+ai$yw#m7FXW6|3s+69AY!W}@LZMj)|Q>Ify23H}Z z1C_}QI*{m62MP&3J-zhJr0kO71HYJAZR)+Qbw)Co&~Qwg_R6j*y(Z};Z>yJ$Dazob zRT_#=#aZ>O)~C);!IvDkQV^_RMYWUe0o0*Uv>s`=nCs1Ix}$SZ&3+4rlb@6Tn{Don zqoWSqwW@u^8>y-^=i$Mi!;V!c^5bPncj?bVC)1btSHWkJP0tT>?OC9`&B|z+S1`1rN>!uJKIk@sXS}0OPl4KgzaS@3!&LQ z-ihKjNh+NvwytV-P~y{Vy0uCusn8PQ(<&`S1LJaDg(-rjob8k9Njs8wBTIJTVhr>n zDDZk8Xt^Y?hV*&TRKKA8RkJ#AXThkr^RsIZ+&CSYrX?>dtJ^Yu4q17<-LS&?zbWT02%SFVOXGCw%^iG z=OIz3;xd%u5CW5q;Au%K!90*TAGWxn$@gsg zc8y(*^_voVP^v5kCPl5X978XYhm{%JC%n?nsRX4ePl7ntrz2R%SsEeI9v_}uy?GQC zZQC-9e#p2eQq>k(&qOGNjgKIP#^kfgLB?xv{VYRg9iFJnHL80@j;pi7gvScheg*!0etnZ8X8F#h2Pj zoq+0ReO6Y7QiLB`P^2Dn=T&hI9sdAurfKRTM0Fn}hVqH7!UKprvkTH@Y28NZl{S-i z8l!zDw3>6VITUEihUG zHQK+kHSOI>k#ihGG=uwQ7gqY#xo?E}tqp}AA2QBbPzxM*KU z97Luz45mKfFurq<$NhDd!h`JSfp80+24nYHIA05WM-uAI)Ib22Nyg{hb&pJMYii`E z+%HismSxn$1k`HjYjJT(Evwawu%=18FPc3&}w%70FrX0{{Rs8oFLpe4@6B45)D15@LYB> zl9T;=(6s`b^U4U$yw4fnR<~r6Olu=}neEFfm32mgMk&DpW@detN7b#Xhp1gHrBz_A zn|R$+MjxL~c~em$Y~}~4*zbnOE+HfGf=++R4!(86ZYglCB;w(sk;9tcLqX)`gO63m zr*h#}Rc1N~j)&WvdMUR-ZspvO4KnG3)i!iwA&F60LR*f={GmG%3Q_Pr{`u8E7E`bG zfmWO4r!DX3y``P)BTQ3cLk`<+J00iMcO|oF)UDRtxonD><5ZlErVximb)_VXcGQJr z5wAUE{{T=f?P`YAI30Q|jHONP4l#|DS9#9rEfsMm#8Rm98A(lZ=$lJyJ{8GXWQ8Rq zN6y|qO?!&J^&Pjgg*rqBaw`Q^Ql|1tK|e4P3_h+d3}nQsr8I}TTikWi+YcY}0l+%( zmmd#4@~NutH1rEGsvhqkj-3?p-MVNu%gBnvlm#tmN7W<@C2AZ3MttkZaefz8%3jb& z3bq33f=*V=$Xzz= zV<%ydwv=%^*B>rE zznX+kqo$QogzG9&Q6a>rJ`OOv`a%0^T{_+?2t1VzH5m9NLbC75dMb94O*&Gi3yqgm zkIjy9HP7K!293R(5bOsF9gsOe+s6kL7GZQcOnC-1MLa36^L zLH$D@Y`BMq!7g^=Fe1&Kp4@< zPVCcMrrR=UN^MO2T1ze*cu5{cxV%fjt8gj|##Icf;TdUAN(H-9gK@rwSW~NPs5FuO zT<1Tgy7yPK>RW3hs>Amp35=`<0C)Spa2`9W-yKljtYv8 zwoapnJk$&TKt?J~2R?mAbC9gngP%@ zNcwZlW->|7K1t^ue%c}ZQFH+aq?Ic?aycpSr!G8#jA&SpLC7cmgZ9#RhoUZPPU~tU zDOCvwjSYoLl~G7z#GUzPIa6O`l6c6ol-0MD#khWX*d!TVYMSOKCzg z$UyWLw2jGm#md~Ze;WnivEWm=>TQF3#fRv{>#sTA8 zTBf^%j(q3$TBuQJZk!)M3LR2`0;O>#qU@E(a-y=LWw^9W(2MX|dv@G{{7(#)l4UN-RhpS4p9k-l|oDzMaV!ZL-w zTuc+N{7R~%2V}ue=@846r=5_bQX(jWPI0_8;YKpGDMvdq?h-Y7A(Y^Gk2O^tPup?7 z_)Ao8R~b>KQY#FpROo+8MWu%~hhBJNzp*>Yc8u)`QBgdRrnj;V0J*0oN$3@z)SS2S zQc6tfglcp#S*ogIwGaoXWwj(WouLC}z_O$BbM=C7 zT15N$WogyjTww~CA#AxSTj_RNjjchU&JdENr3G0YtZ+5Zu%y?pyi5(GD?`5yaq~+` zLZwusRNInM4v^49WbDJQs0=S)Jg9pOqa69yMwrmRBPZynXg}tPS64Q#6$KPXy3?F@Lq&bSPDXgXRCbx^2CL0=7ml1Wx^@B8ZNMeaEx(FTby2_$=_25FI6lO3rHzWU>r99(BzQbNWv zwZ$GtImpMpx=yTg;u8rVyH-0bAFZn0Z>Bflt+Ld2nr=(2wxE_1yZL$KB^VK#E)0Jw7EoIIq0NEpUXjO(F6hND50TEKEjm06P2GGh~JZzZHf zh;kyKl%{MdVPN)6rEEMT9Z*Q=gE*Fuo zadq~JkR`B#ZOgX{T)}tiWJ;Ls*5PfJ-BUz_E$$E!GmIykkJD8-#E1fUDGY`+o|fst;Fy@k3;#bE&=h6e2@84Ps5@#+{%HF{FmH(qMq9g zg(+>Ugs+ScFmvk9`|B%1yg<;{Y-E*9N_tP5uIKhs`fOS|kJ1#>n7b$snDeS=A(bh$ zHbR+kAvss9`+hLUy?NgFjLP1&?0PO@}MCTdRwl&*w=Ta;g$vdB7w9~0jm^dHJ&{N=5 zv7$2nuHo^mB-%DcUw2ORK)dk=i+A8Z9c)(Mk>t9%&%h?N$NTXvM(G`B5WL=*%~gXH4nln;Dz^+dkblhqCYm!4mI1OOjL0_6Kj%Y zJ1um|QWA=rPj7Nth>DV-u!h>nQ+W3Y$s~`RbKM4^ryFGkxH;Jq`6t(7p-Ho^)oov0jrsjYFf_FTEvUL;XfQ=HV9jcgs znGXkLK?yH5+RIJ`$vvehMSq`-rCtVk)T?4!PgeOG@>iOBW)Dy2G)b-*9lAU9H;o}= zxLyQhDL}#-1b^zu$Ht91VXoE&e>Gp2yUh|3k1&;~mY8h=uo~?Yqz%lgl`8=`_}7}tCLW94a29n=b`4ddQdkJ{K0@o z@UL!iHJR4!YqT`%B%X4X;jP;x5*;$M%!aBjraO?TGFwEs3sI0WQRVX|TTMuLgvrDSXl8I3icFxKJU?H~~S2<2NCkX=tYWC4}Dqs!I zRk5#W9EW6^j>)JhaGKg=LXhI*vf7G+Pa$gBw$zkhji7o*vBA}>r;_)5?tM~+Ny(3V zr@H!Sj5A$&k4KA3f~FLNMMxxW2?+xVCkra)&!25_*>O-*)2NwQoMKwp&s83!)EthZ z4l#CAsSq7uz{Ei%=N7OMaMFlMm(CIi8?lXbX|u}hTSh}%DX1cwIEWR zyy}m_QXsUb*1At_9Fmm;p-O49>04y(aU;*=| zirA*sO);4=AEdz&>Z*Om-(~mWs#tX(Fs9jY3rtp~|GmwAxI`H3$)YiK;Y6t~&|?%0ffTG~!gGrN-0eJ4Ze_*OBAb z_Vg`_YCWP(^A01?bhvw*Dr89HBR`kXSXLK8srHnKFI=@ZF8SU60IQ)=s>xAep4;g4 zmy@|^-MF2K2|NRgYvz1o<4V`Gn@)t&V8L^DccSTwT`tvBf+t`Ik^ZUL6|q}|L5V_p z{8>6x6`C`w&s^FRlO27G6s9+5rEWOLDFtf4DNp4dqpo!-0^Xo*fmP3J!{l$bZAEt7 zM22b(6!gS%1T9J|XmhVVn6+F&D-v$iw+5A2lGsEFghUY~*ybaJN=R*lgsAN&X!Z(G z*Kgswf*n$W8-nJ@lQi>@tNTg$?6TFU+Sz-v8-5e%-BaJhZ%62t<#tt4&}lKRS+Lxz zqp-pdCMEZk^)5_(3LBQ{ju{yqpKYM)p~HSEc)qG@xS9p=C-6Yot>`(G!)qM(xPt_2 zAj$oqP&Vg6FJ*Op4YP4k9hAjdkm_UHo0B<)nQfqi%3IBZp-5$E*pjWIk(}e7L0{rq z3YL$33ZbE=XL(8I03N@Rx|KaujW;*V(~qKj4_AuoUCUbb^xOYD!5^&%Qo2WjntPo3t^Z(d9Ab z)NlYCir}{9qp(bJ*)w0)e2N|UWZp5NOp#+)vchOFVLG%oiBMcy4m8;xnF?BWc~BTn z16>XWW-3|LqVfe=k_jUs4naNEi+2~avSX<^Pc#emiPrjE3#XMTOo+9bT$%HgMy09v zu91!EedhvqsYxovNgS&HW5!#K6I+2f*L0o>U8cOSxSXB(r^S~WEbi^qh%Dj zKZP4|)}&Qyb*lX5+CmVzd=T?W`Y5igEw=mH0b262wE*oNN{<@pTKsWZ>FlLSm;~-m z;ys5Yf~6Yl{mN~P(pm#nb?siMRo6f0w{2h%0r zq+URANNEI|WC7=$dTZ_@Xfy}a13{8Ha`SY`cU7b$IIWxE=PT3;Ifm+Sq(h<8CDMaM zPBP?mHsV}XTXUBCs!>06WFKLn!x&p$snA4_WDGcZ^Gpn!HZhL<(9tTjo8Gr?&??eg zdLt|_-)=iCCnA#+w;2VrsR>w05;qceE7WpMx;Kpt2BSo}G>?Dg>8=YNA|S^gf0Db0 zpw{)nL6a(na$DjRu^|eo(C5ZmX!@x#7Lw3heZaerPSR6^008$o`DewtUIXb=nxhVG z`bYb=_3D;|4Gha14^k%!t12}n5l4Ei%mvJKrk1$zsf{Gdbx7R9N@_EWgsoXSaxu@0 z_}9-`>h8G%#5;jI0qz%Wol116YSJ^mF&$$CRI+c%LV9IXjS+3yHv}1u(I^(>9SyBb zRb!UOAIt~}NiLP1<_33>`E~8BJ`Jl@qi-JI`bW%l6D}X8Vii`@HPSUH!x%c}S6;s* zCZ<#E=^`a2->TAS)wg4PDR?DQI|aeqknDw^l0jO#XeV$$%9HP^TSnsY;m(J6VB?cR zM!+d1EopSg-UJG$7Vm&7O>9&nkliMZ5h<}UV@*eY$BmdD=f16tf>oH+9j^ic92O5I5;F_ zt$E=I0G~vRuw}=U!~?M>Y3zSx<_GZ`M(K49hPn*RU}+mT{GH7=VNGYf5n zRinKorAw5&<8x23DJ&o_&eben{{U@tT3hn(g;iP%VcpF!knDVnWP7faS4jHc^>#J8 z(qH`Kx^6kn*O&W^CGwD>*7 z8CuqIHkA5s2DtV=^#;b{%HaB7j2AR~u$|PKmm6{q`d&yM_~sV(M=buMKwZ;Rk(OEhi*yQ7#kd2RYZSFR1ZN)SA)`ONrUNM>2g<(YltF zO+w%71i?S;a6a&yue#M(j7MD_Xlv{B2XNNt0B! z*?2oxWz`8xzFAXkIg!fKk~fbfJOiCr`V`GQF^-5(bBm;yJc{<0qAROkT@Rs7jAbUV zCfAc}GOtowlBS|6GNcz92Zz?65RyF{Wck&=28jLyYgY}EBR^8S2xwBeSEsDwMPZ~&fB;As)ir9luMMZUB6|cYRW&LS z)3U4RFE%PoH1tH&KD9-Mm~+w;9`uc>{*?pDPqwyP0_Kx2k*#yjs_9!UC05U)+;uB@ zqfBY!&uOXjDF#2+L{bz|-)+azLbs3!Es`<$hPp$dK_rk;lannD6z11UK_oO#!3 z>Vd4QFu6r1G$loOssH zv&=z()3-!~Ns@j^@1_+BWIMi%P`GA1)gmL^>FzYzWW2N`Ck>Q2!h+R+tot1&6Q<`| zxwP5|J97M#b6;5LCVf{&(IQ`WM@BE(S{%w%E{eppRn*N%4YKo**ZkI%9n}rVO4GtT zk0}IaT;}nLR?clV6EVv<<|n9Cmx^@YGg0P7{`{3dA}9X + + +
        + +
        + + +
        +

        Mother Tongues Blog

        +

        + Smashing the lore of language technology! +

        +
        + + +
        + + + + + + + + +
        + +
        + +

        All Stories

        + +
        + +
        + + + +
        + +
        + + +
        +
        + + + +
        + + +
        + + + +
        +
        + Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter +
        +
        + + +
        +
        +
        +
        + + +
        + + +
        +
        +
        +
        +

        Explore

        +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + diff --git a/robots.txt b/docs/robots.txt similarity index 100% rename from robots.txt rename to docs/robots.txt diff --git a/sitemap.xml b/docs/sitemap.xml similarity index 100% rename from sitemap.xml rename to docs/sitemap.xml diff --git a/tags.html b/docs/tags.html similarity index 100% rename from tags.html rename to docs/tags.html diff --git a/docs/theme-LICENSE.txt b/docs/theme-LICENSE.txt new file mode 100755 index 0000000000..61f4e6478d --- /dev/null +++ b/docs/theme-LICENSE.txt @@ -0,0 +1,8 @@ +Copyright (c) 2019 WowThemes.net +License: MIT + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/welcome/index.html b/docs/welcome/index.html similarity index 100% rename from welcome/index.html rename to docs/welcome/index.html diff --git a/feed.xml b/feed.xml index 32f1077cc0..a6628bd842 100755 --- a/feed.xml +++ b/feed.xml @@ -1,30 +1,30 @@ +--- +layout: null +--- - Mother Tongues Blog - Smashing the lore of language technology! - /mothertongues-blog/ - - Tue, 17 Mar 2020 21:13:26 +0000 - Tue, 17 Mar 2020 21:13:26 +0000 - Jekyll v3.8.5 - + {{ site.title | xml_escape }} + {{ site.description | xml_escape }} + {{ site.url }}{{ site.baseurl }}/ + + {{ site.time | date_to_rfc822 }} + {{ site.time | date_to_rfc822 }} + Jekyll v{{ jekyll.version }} + {% for post in site.posts limit:10 %} - Welcome - <p>Welcome to the Mother Tongues official blog!</p> - -<p>Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization.</p> - -<p>Here you’ll find small tips and tricks for developing language technology with a focus on Indigenous languages.</p> - -<p>Be sure to <a href="https://mailchi.mp/b87b1fbde236/mothertongues">sign up</a> to our mailing list to keep track of new blog posts and any events.</p> - - Tue, 17 Mar 2020 00:00:00 +0000 - /mothertongues-blog/welcome/ - /mothertongues-blog/welcome/ - - + {{ post.title | xml_escape }} + {{ post.content | xml_escape }} + {{ post.date | date_to_rfc822 }} + {{ post.url | prepend: site.baseurl | prepend: site.url }} + {{ post.url | prepend: site.baseurl | prepend: site.url }} + {% for tag in post.tags %} + {{ tag | xml_escape }} + {% endfor %} + {% for cat in post.categories %} + {{ cat | xml_escape }} + {% endfor %} - + {% endfor %} diff --git a/index.html b/index.html index 6bbf56cd31..fcf06c0e08 100755 --- a/index.html +++ b/index.html @@ -1,139 +1,9 @@ - - - - - +--- +layout: default +title: Home +--- - - -Home | Mother Tongues Blog - - -Home | Mother Tongues Blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        - -
        - - -
        -

        Mother Tongues Blog

        -

        - Smashing the lore of language technology! -

        -
        - - -
        - +{% if page.url == "/" %} @@ -143,62 +13,20 @@

        Featured

        - + {% for post in site.posts %} - + {% if post.featured == true %} - - -
        -
        -
        - -
        -
        -
        -
        -

        - Welcome - -

        - -

        Welcome to the Mother Tongues official blog! - -

        -
        - -
        -
        -
        -
        -
        -
        - + {% include featuredbox.html %} - + {% endif %} - + {% endfor %}
        - +{% endif %} @@ -212,7 +40,11 @@

        All Stories

        - + {% for post in paginator.posts %} + + {% include postbox.html %} + + {% endfor %}
        @@ -223,83 +55,7 @@

        All Stories

        - + {% include pagination.html %}
        - -
        - - - -
        -
        - Mother Tongues Blog   Never miss a story from us, subscribe to our newsletter -
        -
        - - -
        -
        -
        -
        - - -
        - - -
        -
        -
        -
        -

        Explore

        -
        -
        -
        - - - - - -
        -
        -
        - - - - - -

        ;i}a|YUM=8)Y9)FrnV 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 z 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%0AJ0YWB?vbU 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�%8S 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%0AhO*GchNSN`G>&MO~6)yNSP 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 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" + + + + + + + + + + + + + + + + + + + + + + + + + +

        C27pY+y3H;XA#L@AuK8QLQCf)|Wyv6!#rp&^q49 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

        ?8T`e`dM=Wm)|THVTSsHS^vIl*D)HL&+*u$?8 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≠JG`X)##EyZO@Y~@)Uv>*}_ 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 zio)33�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

        *K&Q=T-&{SvZ-mN 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%0D=~$D(&jpUv;=BX*Hmm< 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%0AEYINI3TSXTv19C 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%0DPhHyjOk3y0CVs`oX( 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

        BD-pvqw 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

        - - - - - - - - - - - - - - - - - diff --git a/site/_config.yml b/site/_config.yml new file mode 100755 index 0000000000..ab5f00af2b --- /dev/null +++ b/site/_config.yml @@ -0,0 +1 @@ +host: 0.0.0.0 diff --git a/vendor/bundle/ruby/2.5.0/bin/jekyll b/vendor/bundle/ruby/2.5.0/bin/jekyll new file mode 100755 index 0000000000..0cc94cbf76 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/jekyll @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'jekyll' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('jekyll', 'jekyll', version) +else +gem "jekyll", version +load Gem.bin_path("jekyll", "jekyll", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/kramdown b/vendor/bundle/ruby/2.5.0/bin/kramdown new file mode 100755 index 0000000000..c0b3da9826 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/kramdown @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'kramdown' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('kramdown', 'kramdown', version) +else +gem "kramdown", version +load Gem.bin_path("kramdown", "kramdown", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/listen b/vendor/bundle/ruby/2.5.0/bin/listen new file mode 100755 index 0000000000..da64a3c892 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/listen @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'listen' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('listen', 'listen', version) +else +gem "listen", version +load Gem.bin_path("listen", "listen", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/rougify b/vendor/bundle/ruby/2.5.0/bin/rougify new file mode 100755 index 0000000000..1f1f2c485e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/rougify @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'rouge' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('rouge', 'rougify', version) +else +gem "rouge", version +load Gem.bin_path("rouge", "rougify", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/safe_yaml b/vendor/bundle/ruby/2.5.0/bin/safe_yaml new file mode 100755 index 0000000000..78e139fb55 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/safe_yaml @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'safe_yaml' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('safe_yaml', 'safe_yaml', version) +else +gem "safe_yaml", version +load Gem.bin_path("safe_yaml", "safe_yaml", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/sass b/vendor/bundle/ruby/2.5.0/bin/sass new file mode 100755 index 0000000000..e8e662dc34 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/sass @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'sass' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('sass', 'sass', version) +else +gem "sass", version +load Gem.bin_path("sass", "sass", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/sass-convert b/vendor/bundle/ruby/2.5.0/bin/sass-convert new file mode 100755 index 0000000000..2c062d6c06 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/sass-convert @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'sass' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('sass', 'sass-convert', version) +else +gem "sass", version +load Gem.bin_path("sass", "sass-convert", version) +end diff --git a/vendor/bundle/ruby/2.5.0/bin/scss b/vendor/bundle/ruby/2.5.0/bin/scss new file mode 100755 index 0000000000..0163fac176 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/bin/scss @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# +# This file was generated by RubyGems. +# +# The application 'sass' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift + end +end + +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('sass', 'scss', version) +else +gem "sass", version +load Gem.bin_path("sass", "scss", version) +end diff --git a/vendor/bundle/ruby/2.5.0/cache/addressable-2.6.0.gem b/vendor/bundle/ruby/2.5.0/cache/addressable-2.6.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..608e8b7ec2e4228fee0fc9a9e9b91c263ed86a5b GIT binary patch literal 104448 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/concurrent-ruby-1.1.4.gem b/vendor/bundle/ruby/2.5.0/cache/concurrent-ruby-1.1.4.gem new file mode 100644 index 0000000000000000000000000000000000000000..7f3f4c07c81d3597157a60bdeb71c0282e8ae934 GIT binary patch literal 353792 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 XVDSF9OVV&IY;v#( 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

        RV{N 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%0DAMv!(B$wZFj;&R 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

        _O*}GBQ>;^E?<^UmdPpFo}WD1p;EaPNj*U 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%0DTL|8SlsPogYMYp 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%0DewDl=pEvaELn+FSI{cF)>vHX%2@fAkYO_ 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%0Dm*U|XO&UZ zY}SiFyAPCBs!{XI$+daoFV+^gCX9CRCu<3%=6|6(@(W$%6xA*E&qpswFnb7PLYuu0 zk0QFr_i&TP#^k2;B&$KEdT7hf!gW3LFwHB$>a!2i!=N0(Q*P_WVrweFlRraVKc+#J zV)GkwiF2{VXNvgaS^1W@%thL4TY(3 zKM{K1o+>~SigE-Y#P2)Z1`>~86-bc}kiNtI#+I6shQjR^w)Owh*fReUTSd)ZiV*o@ zXrR(&8M7*-$)a;1q;xQ;TsBT14pO3FCN!7U*oBb&6g_Y|G9*N_a(FSys=&;wHMvy4 zHik3)N_pGTsLq1+=KUV3gVY5{9eXMk$_a71#hS$1*ky(91GVZW%kBq(c`X%K{`w6h zNo->radg965@L)42|~jgh@MJi=JU|&?j5#5<+49E153=E4`{1K6O*tJMAD=xm3F%r zUojhntsv@km(#)qvz@|BKB8V#$)Ap0hc*UdlWMUD?i9d4&0#Hcy>DICv_@Zg9T!59 zWU{4`;=&qB%P`H`GdtiVb@2yT8%IRvs&!bsPh4{L{f0{`h6Ud&~$7oZZ7dn}Ysss9ShX@~Vj}v&^Ga@U$P+S@`OZZ3?~bgnA8$ z{0RP=4qcO_krlt_Ao!OCm*js=2Yv%bCkK5)Cn;M)%inKi{Nvq{e{v*l^0(U=G`+C4 zqES_)0k4`L@gfN1UlA@B?vIG9aWWJnHN;=S!pM*odS9glLF4shn-5o{BP^7l%?vQ5 zRd=fO2-e-*#{;xB$^!x^^;Yh-wnuJ7S)-LZScH)7VGehN=BxRdqL-IDX_%&J`rRQ_rY$gSeYpz`Li!kUO%CIdlI^m0g^L1cQ~l&QjepF}dg>RFk1GH#vi&TZTmcC_*41Y=$LUtri>x%= zZl5<`x)4?KyWMJ=AqFu+t^iLmBRgC;1~LPJfRI!sIR-joy>$FeQ%~XH+fD7@IA>kv zN^BH%u;g$fvh)p)suWa=m&UBK@z~1{=pdS8&Gqp0dkrgr$c6Y=0jTN_!KJ3NKKUk&(u);O7I(F{>LV}#maQAR^%|^Hdin@52U?KM*9@>xmvmB-&atz0m=N8)&HN?FKS+n?mH2-I51Tb50f4$HB%&Be_iDW9u07 z31#xua(5T_D_{JQ{dz7i&Rmal(-K4MB;~Pc1$oLJ z_wyYXxf+w7vOl1gfnsi#%F6Ay0J~i(URQ5i=JM2UY?1j?Kj zOa=TRy76BYjC1@=vj3Cn|C|d(6OgnB0Uk;=5`h;9P?4Jt%WrJpk70%$Uy56MX0s#U zDrut$?Bnk#WZ{QLAKvoML;Dfm(g&-{+M~x!SnMGH>VpgbtpfKDOd`6zuXT2 z2_iCmL~nwRMR@GmL@G5^NCqm|j~r+oS~^Cx{{}$NLtLU7vij%ihN;*ViURO0behzx zV#ZPv0i|Td)Y3@Y`1uNlpkZ%?UGP$VtQT=*a;rxDIF0$5cgpQ1F@{}H-zHz8HssR- zTP>t9UipT`y23^^G8e-poXHt_qTnv5fQBT;UBV5E>uEZ5OLjdY=R?XDXj4hQpXXHT z?eaqlbiol7--p|-$n`(?Bxq}acEwL+F6s3$U@J?*#<^B*C<2$reo`cDA|!R<%Pd)6 znDgz1`v!J#U{vE~At~LQ)CcV;`014E5Ied1lT3ma{sTzHlTOr= zPfV(Uby$DMmM(F2j4DYMpUPE=k>7~k9Vvpts9kDmP>Kh9bR8afuCEeo11DRMcF9URI zzR~~AgrnE{<^E*obD?L(-JxuMQ16)6SQtYggDX@SdNb`iro#Z~LSn1OI*#p08Pm+h zX=R8c<x1ydIm2uDDmD>6j+}86<@k=mMX~)s1fHbp5LZR6TgpW32KT zP&#Q?k8DEoP@dv+4-pryJ){+|Nr8s>c_P7D93pjEg=0R_(Y0Na^qErZ`Vg}x|AE`E zb5bUp{1a>ql{#Gg23A~x`>3snM_`cf1wSHo%NZI6P%I&=@w@=(+yv?T7_@Zv0M84l1@*zy7fL=OtKY^7QXl0fxILX{b1( z`#|O32h8XI2?7qA;R&q_AT4K+DLrTURW4@)_N`)0PKa0EAX^92jW5?jMJy*X+>t7n&#xvZQEWqf+`J%z+ zFIYqZM3}_dEw)6N#Jrnv@}2dr;A=$iD=XSlRdKc7V6dmSNIZ1CL{KmmMtP{dnW&Ns z)D|(81%K+IU7A1WOep##h%G#`Oq5 zp&H~|$04|M(?RlJ=ARJ}QGLi~W4eoZ@w@|3s<9}O&fX4DHI8W7$5T5061@w@)GD%`wE-=r<`q}acO zLY@*^<2oX&LUj*N{1v76QxxKJmeD)HzM@_y#9aaPOS@7#Xs6f~%iMM9 zmZ>;W3F~gA}p16OMNY?M@^W*l`4 zR2I+r8N^dcYtgDKKDy`XS!YT`FxB7bnEZOrzRm9Xd^n}L3~)ZoNx`y9jv~7+#=bUF zoez|S;Iv!%HM-0Vbdw@_Kk%!^*bF81i_+b`5k_`WpYND+07dXsX1IQ)!c|8&MP_mz z1_&*gn>e1=N`urTxu06)unR+&J!#4WDJWY*bu4FH+ga042#7zn%No4ewxNcIt_^`X zo1g~+CG(s+oo&(3*L4P3xde^y(;rmRnRJMPhS7N?oL1wECLK$Nus_u~ovWF3`r;?j z)TbK|HyQFjeze5hXn;_Fa&tRZtLEJ8UnzR3`&HwW;StMm%4u<1wUPX^PB!*zGhIuj zto0rhb;3j(CU&UVjaoG)0HgNyHy7F{5-(Fk9GOVh(a|#vBMU)04U76YH+-=y66e&@%XJ$cqr z{34}GIp0Ex$BJYfb+}(GXhNHz+FN}Y^@&Gx_D!;<*-9k!ISvd)XON;{^OE3t~;ufpOhD_ zNVev#SZF9)2xhYDND;}`B@Vu(-ImHCk0+B&o@U1fnr|i>v+rEL7CyTdV z%xVK>d>+`ruhfbSaA`To3!{6sxsfT;@D3$coi{jk$y!xqNaH24Mpym@C?eVPI} z&QGPK^^f(ZQ;etDI5MEEW=^p z7D3llV1m`8m<$!~1ZQ7e&Aa*NY#2bMr#&B4LET%7)!3{40-TrU{{U%qcjU~YQS=#i zY5wlFhWkALQLsf4zf`ZpUmNliS%e(<+(b^V1<8oGY&{?l6y!oCIpPfnrFjkFEq>!QBX9_rkS19+#b}b*k7;|DHu;q!G&hv+; zTt@iP9NPl!Be1gqh_l-f}u@rJ$e9g;nhMdU&IUD@)+-p==GPAjh8_QjHi${6c zqS!kUnb^JcO4^bPXo>jFMN&>W(Fa1ehK$QKkRiC8@2z{6#YF1_RJX=;OG^UL!+V!CTJl=Gm-@RQaxcKO?aYSDLHa8o zYn%)Q7#Yqa+7O7VRDO;n?DV$3%kQ0sn+--lK;P__?Jf^6Ac~zs<2ZaJi23){^ z43VJp8JID1it2<2VF?@3j}bUSyNGOYtojKc*kxEvELc_1z$LjSwg!b06-s_DZ4ktz zLaufh)7a7|QXzVgG^>rGZZkZI-+csa*(v0SGVbRPZn3U`l{5NP`6G4W1dr=ITXvo~ zrp%k2aJnE5IlJ0^xN0F$X+7>X8S2wrfgh(HKm`CnK)$~nHZV+3zd_8Zyko3w91Qov z+R?Jy`#{LjoDnP@dZ|SBP;&8Y8{7&{R5y-BBqLIR3Vw}<#1yC1EarFJA!v($wMn&yo6f z8%|R4zihaWr6sUX%2{FW8Q-0ua6Axxa>y#DeE|~t8S+UXk}$Q;B+A|(-kz)vylWx? zRQq{ot&4YusZQ6_=ILKRwX4zSL*Bxk!lHsef~_4t$>q)-2R;m8uMA+dY6manv~efO zFRYzI{aD{^L@ae_kT(_IA@{`Z#1}6^BUw@%=Ac&bB;4O#n>iN6IGb^5FfGDn2D{OL ztaL&`I^(-{EUq0Gz`m;>!>-|t1FU7 z5S6n+a@VFN*KGW32ETr_d;qtS;{bn*Lw00wKM;zsN{SSC1QU9+JPGgx2**+c6!Wq; z)PKB(;=>%_!uJa(LcqUU0{p)R>YrAGYM3h4Fve#U!g-yJt|gYJo?)#$fy{0N^+*^s z9g#0IY>4)GlM@0|a_4#cA_a?iJWJ;#iS=fos7Lb&zb2N(D$L|8rOmugSxrs%YEmGd zM;QIyBi&c{ z1SeU_7MlHFJawh3$Z**mb&%;YH=Gg-onD?0Y8+6rj6dT1P*r0 zOg!ZMS@hP6*DWzl8q$($*F{M)e=r-aF^Cq|q>IZ6NPBVoY!#VXZ;?;RvATc0snGtQ zxNyG!8D{86G>&&NaHHDV9-b89FcdvfJTY?WlfkMtiG&0dCG{XF5%Be~(6pAxQVLq>CEY)VOIE$~ZjF=iL+LWo21L6d2@XN@%poRT#<)NvFSmTV05vUK^#XHY~}e59|+HXs~RF!0w}g z5fn3PiHtErA4I?HD|HPmbp@7RzQX)QoVV6)aEQ=7WNY-M(vSG9WcTq&utzDA;?Q>T zL?D-Vp+-Lhd%L9m(5gG(yXlM8vOV)gpY>__q*`*0q{J3H7tFX?o=<0V)8|WZyh}h1!-ZK3rOOmi*0Wh%55vLmV#luVxM*=%;Um)-0I_~|{K_N#uWMu{;`k>60b=npt>R4y`8KM;2XDed zSeRP_nurh9R(;u0W9jtTsL?;&VCwVtFqt}{x-FitK4|uFF+ajwiL6d84&`TJC0J|I z=ZzNZ;6CTBY&*se=j{N{SZ()aC+okibB$k5)@R1fd}l}9LbA-8WaalhaVLr1GV>#4 zgI17n(kncsThTrYO~9MxxTvL{UgAY0=a$TngjLjFGW9T>EHrL8l=2yCa64@7hO4lg z(qQ5~O&DHU9B-rEVl$tQcr~>e>n;>P_|^|MuA1f*p@@5@ZgH6Q|(9KPgiwm z--z{dmj3bf#0T1aL@@NJ{kVa{)0rcSF1Rx&VFjVq)Q1W8!jB#+je8__yJE1} z)4inLrLozzNYVRR*m#NHl$sa0dn}}gBy1|rBi?d@7+HjqdQd)m1vqUHV|l2Z6j1E5 zm}3IwNp+>)uuiM+#ou0y8cX|CaF+xLMMAlSehQeP*st5cb6|=shQ4o<4eJ}EU+F89 zt~jU<8O20OX5O+VG4}EY*{aPm6nd6csu4^WWOQ}z!JLm69LbGymO@i^2G7V1B9fz= zS`?xTu4R;U2GzT81;ScHE8N;EU>|&l>v}Q^jOm-y7Yj%gsU!W6i;rBI?~wS^n`$Ij68JQ%Qk@076MUTP*oMF0IgW*Z!R+N!?a)! z1)kt?_yjOVq?N2oLW_Ah)ZjVHa)CGSW=^*qN&bKS&jM!!=(25Y`$Ed1+}vCF<}5!yjm%Ycqu@m?Cu8ArYonqHP>OHhsSI3Jqz)jbXsIP+oW~~sFewi+b5gW4loHcb_u|wt zcQe#-!RGp=dZtJ8(lc`^a-dUUXep%27i6o*W~V7=7?>C(7l&sm_Ege`M|z-1+_`RV z6e2Pm5hEfLBQP+4XSDl9^u+3(tsnLj6ESOhIl^(N}!Az$3E!fTSE5 zt^mzxKx1)eKyg@P{)opr1A~CWU%`q8_`9P4{@ZZ=SKs)$!<-!QW{H-9gr%ls#h$h$ zluCMjvW^}{!D2Kt2ix3kFGdN{9zcJfFR8fb8x!u^7v3@Z19-v|E<98mnWZtFv-8G! z*PGkrM_i%1KuAb#MKjeru7VY){eedG$rP%H2t&nsYa7ajVKRbeu>{UYmN{FEwbtVF z^hG7gd(`DD0h3IF#8OOYNk^?-jLBlz@t_HF7^lKB0b^bvV}Z@W5|FYkEkuW+q1(1e z>JggLEEe#OlxK7o_4Xrf&yMR>2S{*Uv#?WuPM2{5d3X>-1biKumA-)4gM*7-ymTg?pK8D{6Z z)O0W3S)So68|^LqU8SW%iULNdqMGl(pi^_wmj`^sjgHKMjZ@rXW-V5{@F{3SN7~^# zHrYiXGZH4@n+BW`ECK6NrWWWTYbiXGZBtX`zx~u2rc;)4!~Kf)k%ZQ3W_ssh|HUII z-hQwvgYXSQ*m@r;g)|8-hE+tGQCkOr)?Lt1`fD2GC`amH5N}azd*R8qsKj7>@A&() zB;;r#C8}h&;Xw=h4SBVY31!aenddP5y~4)tEGrL9bYt(1pL(&PvW5+;##jt%S*Hj2 zGx!Bbu_ZwSaNq4kB27kKwWISp62D{vrRNb{aZv+5Aztl)>*ODN@qAT1mhe^eTNb%e zZbRKU>mhGL*vUYIJKN4*2j~LwO1VH7b!MA>z2mz%yQABg@4@gOdaeT49PU{K*tFJj z=CchU_)vz;5wrD{psysqLJ$((hX^-RuC}J$pSBvlFH#-rlHX$zQKdI7IiLYv|ib#0S zbKd2L>V-80=;>|hjxxDZF1;9!&i_0nsx~Zwim}0LPaE}2b+ONn3U^J08dEQ}9~K6J z6hV@VuCOi;ZWn^DPKC{Y-k3Xxao!gDhIh)`>T${9eM6*7gi#z`)D~ShkF@5z_I3%r^K{U`GqP7^A`d}mY~PcBgi{rYsF#eUf4TbNynQ%?R>jbbW3~G3jSp&d z>qwu}ER9TEO=PPNMh&^kU%Ij%w!2n3k(#SNJWLr1c8N-<)}~h^d$$$s?yK#}eL{G; zDJ(BcR<%mfr1XVWzgb?NUT0idIP8@jDYyaxjn>M+_-x^X{dl{;ty>K!l9Nzv|{YILRhT;$!r4O;EA5uH@L)SwKf zWc*>+0Ny?E3GhjpKz{6be`!h-56M_%%z`V?R7fKTx{_sYt)tj_!pJI%P5gGQ8@?{_ zK-qR^!J&8Rk>O;BFj2{<%nqsvs0XTJz>4)ouVS4+zWIRc3)*jH4vn5k)Bj@T!{6@Z z`zvPh8~#4M|9@sM`TtD@o22{q1jh0!fz{>)|4v>GoWHYM_0HQ|{tu<*iLbc;h*Qt* zqea5PW$wf{VS^Z5VIcab9(dB{&~K5@Dx=S>FQaxS*TO~ONiSt6#4qZD!oemcWiM(@ z6>KCaMu$fLo1lhQZifd&sO(2XsAwgqj11tp?O}1fsnDJ)=osi2spx#ZaY1o@Y5yk) z%uzrZ=-^ktT>mnG3H;5F3Yh;tgPJAtj~3bHCUK++mlH5#4OUnRtb8Iia(9GW3AMdBm>)S7`>?Wv6J2v=ceH%96Gs z7A+~PdfH^0cBtv(sN&<2R*V0jm3p({I&o+;zFDkWIF8trtK&Y=$rS1%X(edzF*hww zTu6w-B816%eWdMMawPSHX*>9hNG_$CAd+vAOKVLN#$C(eDnz$>*ghLNHC| zT2dQq*Fi(o^F-A58e1z4#8vGY#LgOIDROfR(6k*)a8mPWDsa+iJwy_MA#ye#8lc7f zK+WWd4j8G>bXGXj$1ER8L9vq0kmW2&Vqw#gj{Yj zFaY~+j;TI4dpU$M@%{4$H((6WV{C_gq#Jho@)$@q3bS0PLSwzp(b@+$KAWljQ|801 zi{`8*u`Y(FF{2}P5-K87QK*sEF}r*?5Wmvd_O>fLWIgal$9sjnU^pVRQIZM;mIeTQc6oMh@Di)nIAiCN+e z!PFIC}3|MZS~K*?{nG)|A8 zL%BUsOpGR+Ka{F56xYXgzL(!8qcARdWL#Cs;HYYvF5L%o5wuVBcb|U4KD?#em z+ZJh**zO>on4COy00K-90m;U|UQtqMb0NoYUuo~Z7e{RvV{UP))$qRJpkMw_T2zEn z;B@Xkqcy^YkB3-BsI|?<#=g{;xrN2f!XkosmltXZ{#^pBh3fyJ?Hz+WUADCE>auOy zUAAr8wr$tHtS-B{Y`e?sQkQMpcGcT^pPBbLbDk&m#GIHNcSPRbf04QJT34=>SukS( zoMFG;+WKx$Zb1m!-!T1;Fr%Wf#G(>S#Lu>YL$(BhYTudh`Gcj8<>8?$)skjqBrD&*Ib$b3=J z*nLMmILB{>CCQrpWtlB5!+TH#Ceq19V*jfM4H^@_7A zNA1d!hr~cN8(n!S?i_ew?qPI8h>N)>6S^ya8Q2HOnmij}(=Nbm!b7e1eTjaT6HM}s z@@P=5?LI{weP4R<7FY9}8Jcqpe;$POR`pzguaAlKjv>&C#&k7>*8(&-iRs`#JQl{H zhFt{YzC_~J@@?G;``Tu2xbN1_~bbEQ57JDCa@`_g0nA!L%BiSH)jc#@o@)dSp?U&5dym=Ll}I<9f?!$7`kdulFHRm~l>8c)y0XqqJeTfKA0l`Ot5=db zHd))fGj@hOQP;g~eRkP8{1G^I_ML6TU2xlCGk}^$peMx=Qy0KxOVgwNZL?>MPQS-k zSl@EdS0(5pM374c6`~3US2A`}K^%?O-#RSY2dX#1q|T@6{!PfpuN-@+d#dL{Ho`Z6 z?SX)s5Dbo;$hl>)E;MV(Tfy~)?gt?rt|#7Cak>Imh67%;zP5g8o{Lfr+*nsJ{m?N2 zYN0b)!}o3IPufzAkF=KHyAH!@9olY`TRx$7Wzkb6j%@fP;g0-R#Z*B8~7G&a_mJ2 z5R4j~V+WS|Wj~FlQxT(d1vPqvB2{I=xHkb5QX{q;FeSS_b#GlBIP3Rs%?fB7s-Xep zM%gQX@Dov$`#fb`Q;0QK>UN>{H31qhN4!4Qnd&6>@IEX(Nb_cFxv+w;VBR&&7*f>J zM&TbpF>oGTJ~48cN495FDVy5v+$rd7*SXb#!ENYztl?};VA^wPk*4qUk@h-!{(GOd z{tpu$$C`@l@t@;+{xHv*QXi|ATbqjOzPJcWr$jt`1Y{?o2=4^wx}SgcRw>jgyGQ>{ zpT^+-YU@|{H@AKfdsibHQz6fP{8jA#@&8xhs^%-s}L?ew{8u{CtmxNMyh!KtVn0SJ5gZJ46m~Rs*UjPD`7dY*}D3w{L zVdyf!hZ~UIRK!&H6!DyC&goYoO!7D=BE6*Ww8mznPH#B{lJXlbWcV zi<76Mi>Z^Li@no-Jf^3rDUYIv`aw4Zk4KjzEAUNJBqS(F6wy*s8mVwgSP}&pg&CGz z0k_zM>vs~*peRWij}iPDwMuYhkGcD!zm}b^@rB_ri*w9Ms`+6FpNW?sEDajl%W<2OYJ@>n5e+XjN)42&=k2SmVOht zBU_39_>Wy4!8H@()0Gr-78YmLCks#Aqvp&micU*X+t8U(OKt9k=2{kR(ISymZl_3Z zcyf_eNA20~2@~fZZ{0n-SU@q$r1D@WDiOwg3erefM$B$AkO`0R_7c6M!p?5{SUm}? zHp7lM#GJ+6-~fh-xPqK>{{G3UwJTFk;wYQD?sI{z`H;^Qxn%{`oKcOoG`Z31Mbp63 z6i8gv(iCwJaZqKJvRM;zIN?ewaNC5h`KxV9jfqssD`IFe%rbkO^0){LgN(sI!ef@a zFl8QM`cc?M!8-E5%m8O7iIVo*!6DiqTKrM20}kxzU(=D9uq2)_8HTiz5!B&~DyHew z!q0=Y83>9&I~tNZfB{9#EtM*uU#k}4a^V!2o4);wD#*gY2-j?WosPP6zu zul=MPYizG0sR|(0P&!F^-o`D;9<-f|aC8aFTxWzcEJs+@STv9)BC7~`f$ZJct(V4} zdn%55#iFF{;IMA@_v-l2g^~MAfjkjW-7QXN1jYKe{32ct_=jy>=rh4(S07R(EX^Q) zKp%haB!5AO$=<2EVU03lV=mnpHqQ*MFQ|40s&~{$kMt9%Fp^57f)gRg1jG^y>SZv! ztLu#SG5)9=$O0nx6Nbu7P3ht05zJF8+ebf?4(tQWJ+$4AY5P=p1w}lS$mk6T74-eQ z+>dpbcW>e1Do7K?uiYk6thn3m`D1zR3i2!h>8iN|>Qo5y)8yDc;i3!1PYWC$3bH9F zya-(V|BP@BU(_4fL4bh3q5j>{?EiMHDx13epCqwJ)!G?F71K|yeuQnr4d$yzq=FsV zOd;9+46tlORkHLsSYs2mh+}58sbhPuN${2OORqe9KLZnV?5tAy^-a+)kL>H0!0TZD zV5Do#Ohl=6c)2Xg+Z^YO)my#C%x?Zq;2u8>MV??1Y9>a|DFQ)U@q*zUPfxsXBSiY) z({GU&1>q9CyNUx2LVP*VhM4q&3_*&|%;-fot&z$JIk9Raxhj8g9WitmQjaLq&P5LriVOwnOtwZ ze7t?a9U?r0+u|WAfa8YSz+r+@lptBc+ja9!vvJhAK3latF{3k;mX5TPbcJ%KVE<^! z8=FmRxPsYe8@P~MFATP7cBIyu_YL~sD4f5Y{~k3d2jRA}-Y|8EmS-}9ZXXn$@yH8X zSOAZUlg%{!62@nWf2O5bPnpkt*~_O%9dEu*6X_Ii%-1O}9U=51jXh4g-je;%L#j83l7bkwIia1B}+K=y~L29+0tTY6*%}FaJWoR-DJC4?!CH8 z8=GqT>eA~p%rNimXz9(S_5$R2C`*%4Bra_9CmW{nMx+;LXYNm;`(!d#x% z_W{z{Rr~a3L7UvCB*WC@B5xm;H+3ThB6st-;lpvIvUdUZmL477_78r~yZ+8zdooAC zEOx0~mlH!$rNL{uI&tfq*VqD-!^23j19!$g|5(EAz)Vjo61Z=niDjbU+B{G^G?#@_ z{C(&-AWM<=NozmZ%WjGE`wA(P^hp@vdgs(3_g;jgA))tvrc7tQ!Aczh3;p0T#p2c; zfl6fViuO>ia6-fO$H<)!R;?C<+PKn@D9J3+d^bLNp;#*46cOqUiTPShWuLdLvZWiPp1@)*}UX)vQ(oUN;D`*%T1k^t3Y* z*(Kl;wN$w&rlc=~aEYu985o?ST^(v=w|bnS32=jm&thp0KN?rX>e3!}fMES0RG#5H zry|j=jQ_JP3Bta^8Ov%>ci@6BMH}#73U*@4vhj{lx+yf@O|o{0wCFF8`B4DT1T_jW zQ1Qc>_y`&xCv?=eK@FOza!^U*k+k9Jb*Uwk*u&F&RVx?3d8V9DpKyAJq!g>?{dAZz zU-Sm`<=s5x2IFkO-;~o|Sn6}Ve=2+nLffbR@SoFh{6juH-c zkT%v4bGH!1;vaAAD+Zto#VNm5xeKUT1O+cp=NWy-kpgid4Fl;z5pL_CbN^qrDTzSi*Y3 z!m>%cb-qvBrrwE?N~FG5rjfd9h>U_A|D|+acckVhKQ8@Migtt^xD7R8d^a7!g!`Y| z;OIZx;MM=R8(fqRJ& zeS;iYMLTkGM%Lj-+su3JLk-g(FbaTv`$KD-? zq!D)xj|GY~r}#SA;6BJtz+q9cIwXt0Sn}u>GMQ6V(J1;FZVJ!395@ocGX%aNbpi?s zfl7Q z0JK!RXlWm{7Fbiusza2EA`?8e+b-B2pm>ER%YOXEfc=-CME^}t(x(5KnyCEah!NZ( zH6>3pX;gHN*h(AVqzI~2zGOgJ^)yus6%nyaheB!BV$x1_B^^Co8qqR9A)|sUxhISK z8Rp;bQA}$a!q;?d=suCfx%rsQe0cWpa{CSuKqaz%MM$VGh>?Y<>d+s99!&-L!&2W# zPQqHLHwnisdStxOXI;fXx;Hv#6?Q^mVOUEsRMTH*>`+K+V=A(k3idQY^VeDEKrGq{ zZCWBTGchX7cU}b;9EAC*I~$H~W)>0qi=e^m@vH+M&r62CeECuM+9C1D~ye$lS{V#cfrgF7p}) zyrVYIonGT zS&UE~>?yL@<9=ssO?=KTi+I&s9=*T@>>^J%!e`&i_cKOuh6YNtjkVD&sAd=UAxm>- zEG67Ax#@j@TC;Ru;~-Ak)#yR&Hz-O<_NgzmT_RB+;|?c^<-231WtmIiLisdDZnxUt z2_`N{l`=W1WZfJ0dxnx2350rq^PU2w=Q^^#C=BzGe7!Z%EpC$Z z3NCmx_&$;^UxPXb^nt5u!rrUicej+bZ6%`&wwt2&0Sx~!^YeZNs;Tei*L=hOWg0`$#4zGseZlRT?R|SnX^G0kV!T|F(s4H189DPb3+=cm ztT*t*coTON@6|k1Y0zc$##l8_ABS%}+8$5bPfy-=*9e$<1o8l%<|zg!T`HJ+nNDGW)5cPD4zk{fe-{$9ao4IEa7ELFGl4)w+K(dlpS~J*|eY!y;{DU zzHO7o7d7-H=6>atSV)df*tvN&q(v+P;qZ2|TW)gC8I||JBNlx*1q{g>XPSVhYXL0B~#b*;yaHJxegd_PoO zFNV+eC8B|4hmzxLGWj;M%ZwG{-%BWu3Enc(X0@6%)6C7m>cHlhj$FU(q|@T*7Zt*X z^vL55olZNk=|1OmP0=3S`E0D%cIIITSt; zzKaqX?<639U4k-r5Z*DU%R4caZ+O_!B0IMI^Pw^g`F?7YF|b)yiUQyw|G%GaB=SYQ|g&N0hVGcn4j=nhobY)L@E~^)ansY#9|c+NL{`n!i78X9RdcINh=&x*E{z( z8~0k5URUZ8f##4;k2G^l z3}Ya^q1;C^5C|qX>_UER%r(D2YracEtO^LI5Yb+_GIv&sq|;1x)=}Na{tk*i!R5Pq6;WJVEN;43IMRcIHB! ze~c>je~kaVs@*R-9{eAv+JwJSweo&?ZOUZfupbwB+Dw3?n~#zzTn03Ro>+ zaV&HESqApzB68XL8w<^szhh_lS7g~Sb?{#VF#(5%YmO30_yU5)!6GWy5riUwjrD9e zIujSBk8&QYArMyzJ90$O$=zxGp|6rPyT_FGEEhSMvg=nbnNB(;opQ zlS+bVuFBFJE1gGmT%x3vs(RE7Opb{wh^saWtc2n&H|U`*M7XzU+rMcm)Ey| zI(;%ti;sS{;v%qF;LpDFC}ajUhgZajul5r0edB*$7k)r0Ii5HJJ11mm1GU^SAt+dF z0(&Qg!1uy0d~Ae>IozF+MA)XP|4v>Zz$Mhi?h8Sjy(}!v)eiABdsTQ3j=< z8B5ssYtL9Bfd}?@hxU~(VUD{cV~QU!vYAUD2COvCJKSz9@FLhaqS<%g9kR~1k)8P| z-e~G41mi{#<{Vt5DPM3$#8|pK5j#1F`?O$c&yBAP?6-Bvhf&|X`mAkU7qfR6aXTZ1 zp@`w+Ta*OpxQ@7Rw+cNnbG*WiZ~Tg>{y%fyzzS~Eb&|RblYL4&)WUJMvSNMS-MOy0 z8*hU+VrLfT?JXi6gh+guZaG&j^P;TIKLEF1Z^K#ZiDf7o;s#EaS7Qb~(mn%{AdXV} z^J_pj1Wg^4;Do>vIfN0qSVNs%d1D(2QA{L%?SxSJ&tlX9KK{{dm?rPi@B;)0=;1H* zI^Vw;DCF!-{_{BswR2?^Rm{)z2KPt0#VFb+?VxY;WnZJ}EhHg-N<-F#ThL}0n7Y$r zXe@O~yI%rV6pJ0e&X$)v#Wt$c_0|I5~SvAxt4X))nQ= zOk4=hTJ38hr$)~45**T^Hn;X5Q(Z=mek#gs>}A+XdaTCCGR1D=+36-D#^;V`#Nk7= z0oCctKENOf0pkXHX$7>{3gD>)GtM8u;D^H=WvB{^_gh6@V84`#R`N~@XGje*xHK>p zlP7v93AkpaghMm|@`_}X*(;6Bs1x85gd7MhFG?%tf@7l0zwSAAbGfuyF|&(4I6tuC za-#ELS|PwV;8`KCv#>)A+e;Tm8}MYz1%*Wyu8h%-@~nY$c1mUgBWWE!8yD(UM3g^YjH#L6E`G1`yQ^2=j8I zD`2;Ep^Ae@*>8~DsA?4`wtj@c!C
          Wt0&~Us__%-x1MdFrXGPR2l$iV)EsLw0a%0 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%0D{=JkKQX^{ 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 z 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%0AL_4+nQu`5*VAx=bJ0m+}hU?mErM_o-}~YcTa= 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/ffi-1.10.0.gem b/vendor/bundle/ruby/2.5.0/cache/ffi-1.10.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..e75b906ae6e83a26bb752eadf3d4b4090453c61c GIT binary patch literal 869376 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

            )zx_aa`}saVP#0dUB-*;&OjmTc`%FBp)!B~ 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

            -x^>W(nYDQ*%UG30lR#_#r@JqGk~k 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

          1. pX>RzB_Izk~#jJ$CJf#FHi5U>|~89ceT>~wYM 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
              Q|6@A#~X=qm!9Ius}0Z!7DRW#f5&s@__b}K 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%0A9|(+pf97<3^%VZB)hCCc)of2KF{dT@>rr$A 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 _#-oqv_fz+kS9WoEC-%p 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/http_parser.rb-0.6.0.gem b/vendor/bundle/ruby/2.5.0/cache/http_parser.rb-0.6.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..3d3d508f71748d4a96108b857f7e4d3d641f1446 GIT binary patch literal 177664 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�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 Ctr^4s literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/i18n-0.9.5.gem b/vendor/bundle/ruby/2.5.0/cache/i18n-0.9.5.gem new file mode 100644 index 0000000000000000000000000000000000000000..4c638ca516222301aa436d8555127f87c5f830bb GIT binary patch literal 61952 zcmeFYQ;;q^5H>irZQHhO+cRh8jBVSVcWm1>&e*nX+xz{y7rXV}?A4;Swr@JAPEy@f zNuE^q6I(MEV^d=nV+M0Cp#Q6c=|5p(V*~mh`ak)fH46(1D-bg)3mX#$2NOFh2M`l8 zD;paN5E0Y=RSx|h*L8JvF?RaTC3g!mGn@aT;eTrXpV|Mn*#7t6{-^2xZ|xFBLjf5W z2kU@<4r|FeZ*m~@K5FLo9+9a$kjir}$}Nt_Z&x_i^YXI+_J#JM#Na`wfHpLEuI+Dw ziV2E=IQWNOq=x(m1BY)+FfWHqgnL=8y|OBv3H$Ya5Hk7tR{P(=STEX>B8%aVLh200 zkC0=;l?gmf+X!T!)&Z&KoagF=;I6o4nb~jdC>xzR*jbdYPQOq|Uu%sU2Ycpbm#Im4 z<(?t*arPC?NAUK^V5jZoymRa+M+VTqBe3O?<25P}4jygdcisl-e$Z&&>rTO5l-3Ng zc1}UN(4dDf8me&{zHjNtOT>ph9bPS3xr`c^rX5pVeJ&lJ#C??H77651BL%9TF1PmX zG4ytQoS3RfEh7Og(RQ05a5(H#FzdHBK%|~xqv}1Tfqmw`-2#^oeq5&^Kjyblm{l(C zAj5W5${kzH3-=I8`S4gsLiACbYFb=e^;i{mp=t~REQ2kVVz>K|eDjh-oC|@8`W`9+ zg06@|tva-aP!PBsgJuh0I1}I__aWk_&K9_L+B*StpU}xbv@tAT*t}28xmx$Y~epFoC;kWANhyhpCs| zksU(r8%GuH{s}CFdyI4PM8b?p)dJVU7enk|1yeLz#6cQ}S9ymcy~6Bn!{qu-9P&pK zfC)?UjZ$cd8YD8`mGIb%;F=*1qZ?gZuxR_{tK626%scJqA-q;==?(CM<_ zrf{mQ;i%bW?H@i%_mYUaE8%7*4QB2Uy1P3E*ybJ|H}t2}*>Bd)9fG|W$jRCrR-!TQrv{mtBWG-tbx?yNm~ZZjW0eHQz4)mT$Bj7jO=?EFTF z(lh!aXouJ{edlV^OVgaGyiIm=6+8s-bExf9dFA=x>Xo5o@Lp9QIB*8x{S_Y$if(DU zsMPe`M{l$sK40MciOFxiGI@*i|JIB0|D%5Wuh{<|0{%aS|IF;1Ow7#xGyb!3aQy%H z|9{7p``_{Zs>jkDcij!^qHds$3q%)Q2p$76QiYSQbtttQV>`KATxGjWp1B=7UrGa2 zXkPP-0Nw`SwctcN$3Gdhq=O%-pt-fJt2 z`I>p2Z>jIg`e0G)_WN|K_hr2MivPjqb6b0JyT{{5Y@XJU;P3A7FfOfNgNyI`$iZ}0 zH0`Rr$osJ_XPTb~-OrHj8?L!$ItUG=r1Dapik(L9ZUo zfu@TP(PSM&gA&IS$|YME5oxv*i>&7j=r^`px5%-K&|Gp_hEZZJ#}OeCo5HP#cqPb> zj;vy=(2tOKD1h^M*+|kXKVx=086@Yq%!^V9zyjE1LUa?0NmUHAO=DSZ!K*60qLA3`IGgUrOeMJSf#j6|&4RH

              bA98bb8QV-v9(QLyS>lPP;J$1&%K3O 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𝔮{i~!zjv` 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⋼QD=wwzc{#RYPtITQeN6GKYc4+uP|6Fa+LqeCf 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ê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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/jekyll-feed-0.11.0.gem b/vendor/bundle/ruby/2.5.0/cache/jekyll-feed-0.11.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..88fe5528c0931dde5cfc26986ef450fbf4580f2d GIT binary patch literal 18944 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 Njlkas{7*vQe*totbj|<( literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/jekyll-sass-converter-1.5.2.gem b/vendor/bundle/ruby/2.5.0/cache/jekyll-sass-converter-1.5.2.gem new file mode 100644 index 0000000000000000000000000000000000000000..7f0d488d9f06cda432267c5b1000307e13eb5eed GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/jekyll-seo-tag-2.5.0.gem b/vendor/bundle/ruby/2.5.0/cache/jekyll-seo-tag-2.5.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..88b0008eff042a1c807119f5ed2cd90529052b77 GIT binary patch literal 17920 zcmeIZRct1_wj~&*3PT0IFf%hVGcz+(m@CZ8%*@P5g_#*E%*>p8{ok2~+d2<3>XvSU zboPsFZExFq*;=wCFFP|ABU2+6BYF!jkpC)U{Kr^XSwa4z{Kx*aWMXIJ0AXTbVPs@u zIBq2Ve6KW2@1Gs*+=?ZJ(UeFex z8u_+uf3ILo_(pt5*X-t~FS1**DEwcsz2ERa6^sZX+8#7T@<8S;PGBGJhQx7oHm@5B z^c$Xj*gDQ4Uf6Ac`COS|CPw=oD-YXi1sJKFPYQ4_H~S7-SHZF$bRu;tuPK{Qgl2(| zcXsJ<>vJ1jIFV3f-NEY7V|gXU^pp2WP9{@rj^5F)=Py$VN@y%7*ziiZ1S#}N#iG$2nggf{X+W{lJ)U<@RsFHFq82!DZjdAeT@9Q3xkS(jsI1*FZ6}F zUXzl73{zukiLi0|0m=Hu7WdRl^KAJFvW7{QjWA~aT>sPt|L724#GVX#i%znHrw6E?olkp z5oN9Qq#U7DFV~{AYX-8QjR45ycpjL0Bc8R8K9PJ(IC0-6mR=dVO6Vlm28yvl#3oV1 zWrV@kuM$qwzSym66PT|ufga?rT;MDeRBkDkF75h81{T9NP@Rn6t(&{8-_4aGpoB?L zPMkLKGP>QYMs%qWFNd$z{XA@kYhdZfGxA*fL7aO5L^AErPW)2FMj1@Iivp91E|PN+ z8gC=YZA`m_ywh|kwwjQ^nwz-!y+2hdfVyK-O>KD}`kh-Y$g|9`FlR`G87L2tKZdB_ z=zJc~)mdUV2giFPuIOMhj=_dpThsN}K&MGt3JNQJ7X@XXm=cdq#ji*!cnZnY`G`(~ z{&TTU5`=VGR{#i3>FC5>f$+bP9R45f|Aztp_whdqGaDPzzw$o|`@i}Bf61x%PyWC3 z{czi4zyAeXQ6ZG=N^L|v>e6A8-yf1L)H86hE&GedL8F99%2X;zC$;W~cJuL>d*I#R zKo0_|oP6n`)Alz-UICEU4i6R7zr|P|W`BwJMVM^xW!}5ovb=mXJzb~%mImzVY;Ad7 z-WVA*vdQ9XzNnxy&3naus7f_ z5;#pcuRHYE^;&oi+!m|YK3-MK$JCve!#39X&D4Q404$2QTo&Pi9pDTc_23Nvy6g4o zdzm5~wJ*hPX{P?s{{9XZ;2Apmu={AY`>M0IJy`+1ACDY6eeI0asb4_qBd1!oD1O_V zhbj~DHA^gHjs5Dd1VXO>n{gilBYgRuf7d~dW zkOtn1B%UNn77C(8+Ax=qbPez&{jlP2n%E?x^Y1^W@|TFQmy9jK6CqM1alK>r#{t?j z0M6BZ*4nnuKaU5i%*lk^wAFV4E#C)o9WF&XPH#J%->dHI_ZNQ7CMF%-_DX9mPDA`GY8x%x2@qkaOvm$|K4c5>M_%WmXnGsCWe zRvwailGGnuI1tNZV)ixOsPt~!Q-G_jZTI)U=M80GZ`zIs6HHKE$xf`H##5LblFJiv zYC%4kdSsy0TG9Z{Fw-UQiM!TuE8>a}PrF39k&48kKGdE!)6E8L7b-ywBgP0zmcsZY z!tz#sJJ(~8=r-%z66GHw)HVw z8~$`Y+u6BRwLaUyvhPV43!I7}+>s{}PLA%U;P&Ra4dd!=jj@avqeAgvi}kS$1$@+1 zY+@ETlL@M09)(@-Y^Erm5j7*$$d1nWqXjkgA@s(OMxrL1LVouFB7b<&3C!qL9KYzDL25iQI6~sVXd{TMM}?fc zW3COfRpFpxMPSMzKLQIbHN$ci`o3PqG=2V=t>f>GbnKdR07Z7`%rNla;S3gJ=w z*IC%Zmk-p%kYdMCYbDNw1$W@?2~g8AK`Cf6}Zv-Z(YFe&IEA%*cf`I@22d|y~cNh~I=4tb$ zFNbX#kEXdVeF!0e^)4Y>0%N4N$}W+=_HZKo`U+8C0AmQAt(Te{^|`{*eiaoxp&aR* zWRVG(bSlmiM>)U0sOVP01ru8#1bfDAl?Bb(-!>IRRWvmDrpc_n%_MN@@4uI*IK?ujqOstF3EwR@ z(SP;bbnXI)x(n56A5m=`Sg@zGsYIk;F@Evo<4fF#ehBgw;&q7RVNv*lpvxZqIDlRN zPy9p5t7>Uwug-iSu}FfzG|7>8gh6(o9{TV{n}W$XsKtSU8g|#Khlk+U$=i8a@JelX z^-hJ+)&ukx*lyY)Z09-%&F1E~#TTlO_l!*s!*)OLaMT3}^b$hfGzzoN)=Hhjy*_K& zVbNYbYZM30wjeGY0PSnedK|G|{%VaO-qjKW+*!(U0mbD=ZP$L(^o*h5&5Na| zU!hNsk!&V;ULw7r?88vY~w95>mmuz-`-o9-YgW z+kiz+{7ki3fyWKgI?Icti>ITrmr)?!yGaewm)6HeXzz8(0UW#=C7{| zM0}nK_A=|aLA-mxabNPSQr18;TehkM$gP?tpqR74dDR{eA;vc#TXX!$A}dKmEgPe) zl>}XDXbiJSz}P#pvI?c}dg7rwtbc{oX+7C<3YKE5uGVxxfVzcF03vBKWJ;9D@qA+e z^`G;eTBb8zk$hT~fY*EOQ1|0T7x2&1xsL&$DSMzlhocOg0G)#iuinH%zP!IMh)5VUi2)ACJu1I-H!kq1+0VIe3ATjYd`#&v?VPhkpOE3GwC zs3$XGHH0By|C}idH5jUZABQ%oB5i_jrLfX0U@uwB0=g=ptK~f+rRONiS=9oYCU7af zQ&?$-gQ^N|#G`RNu=iwyc_R8j)xl5&s(<9i&1zubHob@@H zZnSBFU7_qh+dQ0owbI@WpzmnG3f-K)AFhj^&Yv$=gS;H; zSGlVrzj_9HG~_B>;cK#!>#;;Ae*63#(pcNU|9si6cJ&D!^lPnM6 zwz~K-0ghF>Eo^NH*lrwr-!uXpsvYWPhWu=+>0f}}jlgSHM->%mBjZ0|l}=DQE%`NE*fS)lnNfgn#KxcKy1?7O*790Yy4YrAWrn{n$uBmJ0NDZr zj#L^`B=G}6ThJ4v8H4c#MJDo_$qnF=>$`~6;EJ1Fmk{6Oin9{&{87Er$pQxGUtS4Z zLdqC<-k60<+PYOQdhSlumSNw&1yD4B0%p|$gQ9;u&st! zzeUy2)XS=>?e@})58_#fN}B6zuy>>_byY^hRr&YcV4gU#$&laa{~F>nI8qR97F{Hj zi~VGz^sb!-EnDMKgA>eK2~IRFpOyY8TfqkprigZ>&sZD8$$B-ssQ7H7*{x4h2zF*u zJPsM}{}*o%WQb@84I4`SyLDz1l&YX4IGn}t3X?Cq}70%Zyg~piW;WpJLIx0 zzdqXA4bpp_yi>&t!EZ14YYO>t=o_i8sD`)FMDwwPrjB|%U#5gW!m=mu46HEMij4|_*Zfy;h z&V+FD$#%2*2S8B$&CojZn6>iX1QPwzv4*S*2}B8u%%Y>BEO9$pQFFUMO;l|t8L=$R zUka4wxXV=)-h4IfV99B{MEACm$>|3AIlFpO0soH1v5$%Czq7C}gueQc39+(ro=!OAGop^J-bN0FbJ{b} z7@O$}shC(OQ-g-#4Pq_Zcm)FH0Sri-r%yLZ;V!Bg=I-9;z|8F3)TiFo&X!yq;AWN$ z&*YOILGLKibDTkTkM|-v=ZS)J++AE>{>57MU0C{+QG5IRdA2XTuK;3g{hp3J`SZD`^El7?@Bw_I0p;-5U0rVKZk*yG zCFB);(Q||6wWlkj1U1HUint41s>N5dTFmvn`N@=wbsEOl7UCuc`6w zh!%idnV_+f78{}&5(Fy)t-wB_72N;~x!5f+j_DR+L%$qfhq6+$8)?E;gzNe5*jXax zpNI6<+oV`(E$ZouVub{F4J_7Rgfiti=D=dQgu@@+(Jq3QIf|S*!LJ=7x8=LSnNLb= zVFILwr2#VZ=#gL`&v!xE2yKM$1z*SFOV$d~Ir3%2>}2P^(qde56V{00QpPSeW~F-WQ%ZQqM;o8d=kU~MA`JmcTN^Dp~3{ZnK8`CpON$%2C5)R za>F#wm8XE>iV-=3W0Ku5wyfV`&fwC>Yd=FvWFD_7%SG+n7R|UV%{*P)Zoj^zM4Ej{ zshTrIPwhgqj3sgQvlVl%UVSAfck0}*>O?a@lBtuR5-7FQM+Fz@N0Q3>B<-4w6J_Pp zA~{F7^T~-MKTx>T=cPl!s^<^EBj+(jHXD|Yl=Yiz*usRJXKa;tCfE!h&tVFR4mdoZXTUI83F%CfvFTFD+1gg4zy!~yyg}n zPkbrF!S%nCDar9r&0Vl<^1GVMr;207VeG0(A_F9C=-2(y z_$v5V#g@eQF8HC!N~WR<1w2@ik*Q^4SHy0e35*NKdj35;Oj8)t>-6j5{UbIvDoW66car^5p6D#$u0czr67*$N9CYyuMmoeuf zDRHyWG?_XW^i=3uu?(-Rbea))mM$F@8K4?YA!hBUSY#0o4Gx!*N|bYntVb~+*}8yK zI;f<6nzbw<-k-vc=l_GZADmeQwOUQr8#OFO79#jv5O!9Zvk*W=Z_IP3cR_gRrDw^5 zMBu9w;Ohe-nZ1u*0KsQ5x3(g=k9WHADpmKjbVNU4rTIG~YjnbNY|-^>&t6UDW{wGw zWaJB4tE^J2%TEm1eLM#;B^@n5}w=CUkMU?g`Vj%u!jM?5L5;-DVMO!4T38(q20SQ8nOzr0>?`I zozD{dydkOcMs}a{8lr+<`mPStTtIdysKT1Ei+ncRY@UQ*dod54%DRf40rSeEyg*+n zDQyP%H0$mO7n&oBWlM>8E#b_8_^~3W+_XR6N~-Xg2W7<#dKKVWXgq&t`Oi&DV~IX7 zT#_8QeaNsWQZgV6u3qaV=Z|HJ;Kif2H3?KI)G+P&-@*e}5nVWc*P{4!SnF{jsMBC{ z3K634*dS9y)Ca2RcxuF4!tG)g#>LLG(bjn#I;&9K`WwH31#Y@Q_FMT}sgEDCgsuEUDN)?OcFq_u_o);Bq1_-$fVWne^?_Ux=mzmpLa zhL-v3*NyYpAkB$%A`+5}suY@9C^&0palu~zNqGz{pnN;bkz888rHi6dad}KkXq=9* zGGsVK6aKG|XiVTx;nNPNIkgb%#-V8|C!BG7G`D#;oZ7<1kGEar(TbQF>n=Mvvtb%$ z#WWJC8)W7W#g3%t$`rVRG>i#|PgDCCUMQEL`vph7=x2M%s%++iqS{iLs`dF!>qHT9 z9g@4hW;SMaZ|pNKktbA0w)x~RNIyqHQTo=9TppSUPWc-{^@Rx8nt{p=s34nyIZ&_0 ztf!F(7R**%!LSruI{pb#g)IzI4^ZtXw@UN2Uxz-wYhh835_0nqET!p$)NnwP`Kv=O zcv-)g?3LC_k*RR9e=~~bsDX=c$1FTAXDAo9=`*C?8@+lq1;~Q{AoMxuU?qe7MwCSi z+o8Q9AM0b>;eGCfXHkyX`%o%|kFe-Xq`mV~?Idt9BtZo!XzOcnQU#NQ%LbtAli_N| zY9$mG_jVzE(zHxF-Uc@AHq?r$oAGxA$ZI&oo(!c%hm=vjFUBJjFUXP?mNN6b53J+( z!*&-2F{QVPq67@#K7{UpC1IbXIWWvb61Lhu;SwaC za7)RQ=B#y}F96UY9aIz5KUw*<$ag0M`8n>-;dtApqdIk9{dtU5H2z!eEW-8|8QcDk zA;QTgezPptCj(nj6HBl!p3?cA;$jQ|rsf=4R4dLcmK*vgqp^xyc2}!>b08faH@`Oy z`iRGI!_0sAEr9uD%XV$=!)iBYk_5)l$;Q~O+! z=HP_Cx)w!z0{+Xytd_Fg+|F{V7F4PfW&bZ+u zK<*(T2SZ1YaXOSABBQNLcFv4O+t`$$nC+^qd>1!kzpL=Ta~W19#Z@FK?NjPBQGYfQ zqGk)8m0FUJih->(6}b?8I_$qYl%VkJEDe^kl9IhG%T2VK3(%8|prR&12MML787WAR zS%-CG$dflTTHDwBaRo!KF)BNK)pR^Ab#eK62&nh>y;=e3(0jjXD=XicQG;ys@Mv@Q zhr)MN41|A+|m7bu?A}GtWV_u*Eh5c zHvDeJzq=TLZ6|KSwH^^|0poG`@=u$m8+1Ci+m&!B#!bra@4FrjyY$E(^q$FuD2T;k&GK`Om&*=7aJJ7~sDLTZrkpVCRVO1gSI$@T;7pU! zlUqWpq%9PtL^1cBYe9>)6&=_>S`-v&ouI0b7i5?+PYu{Gx|kAXdNoRv_F|4vT|<@x zoKk>HB4cl3g6Qv`V!d~dx)S{<`Sh*zH;c56- zG$PMSRp=V#bLPuzs3~kmf?Ku^+t*(0CxC+c9GXIxe&|1?s{E2%u5I(Yv653+@B{Y> zwV$w}%jjmSf?97pZK*@Yom!xzayVn81{HO}_!|jk@}vc}>*WHtzNNjBaR;=gy8*tF zTmm}~HaZ7m`4Hb#6mWC>UCxH8cfZtl)nPMnV_3qFAo~z;JpvXn5m+ezml_ckhgqY^ zt#)+|N0ql$ShCN$ITZss?zoHLCsi$qN4wfA%aQ=9>fu`q_tIUO>KFD${YBSE$R0Tn zg}*K7btQc?L*hyd3|uC^TFSd8$Ypr~`iifNHqVU4@N7j8P{H{}J`s}8z_Zd^)B|U& zMA5pf0xq4Z-z9`Qv9PPDVFHZ6jE|t$&DnFGI7eL)qj}U-V$4=6F3XB-L1^Klh@Ivy zR=Ol3?G@)KXexD{6S=sHe*IxF_&m7vr~N4ew@%Kc)Kdbxn+OZ@s;>rA0?;VUd*B&K z?FUDs30jDf^OQPWooMIZR+5&^me*9j^OtT8s65Ftm}m5%(6pqOVkz~#_6`JLOhmy! zGM)3cXms-j-5pqgqBpFCXR`JgwOfzRlXsuaTzVr3HWwe1g%HYaYMsH=b)f-p|25q8_Pob8ZS+Q$q(M@veK`$!4Jy>|;A@iwkx>)6EEQNZuocN>FvT%0W8ZN}#3?`(q?q^%M(t5?2@@>N< zd+sJbVUOlcN?_upRnVSM93Z5fqy1w zzi+$95kK2rKRwm`NO=3-=><$GeNu_4WW6ORSRm#kN7OlY(O*O5=jH43Y&g+ze+z^m zda(F>rrYx?i6N)LA1KO*=b(%zk!O{Xdv!vSR4l7kW|y86ci|mbd`zq|bIb87-3)O` zSGdW6apBw0Q5-3O)vXO$ZqQ|AL$XU(B`%59n}bXV22Z04ib&ud3mapR2b)nCZMnol z9~x1EpTk%oT|G~(2%*XS92P9`y8}WT!(X#85uT+cgw|Nc!UILECd`lgRDQj?x&-Ll z05ivdolPxGQ@|&QcpxV1gLLN_$w)T7+rl@qZ%C}uAfuWiKrcy;z_e3l#z~e>VZjXf zK)m!8r|VhGCL-=gSicJFV&cUi*K``6O>%arw1vGrbv@U!UUk^nlu)T3j8WSqn+ye% z72YhD1U8llPPlaF728Q8$TSD0{gC^N!jmfI!{Bil04XsMBS*UID_FJg2~9xqoiv7B zBWh_fzgk`~Noq#n)0;Wc+-Vxcr++H%g#~RFD_diFh^0mW4P_q8);TT}kH!si*oA*$ zUE){jlTl;ty%*1`F4tKnosk6F*!vk`UD7q|fm0E!2cA{u8m3veGECEU1bsC=sZ@XA7=n)ED2 z3G8CDz98RJ-9DDNy9|Y-G$|uJOO79LUUofUf4xDAiLcB!It*rGHf9#@sptwLJuHeGNxR2)^B zLv>hQCmPLM-2rbh-K|(w;|SI z+>p&2(8;3caU#^pl=_Y%!gb^bC76B1MrBld@Uq{tX=MBTdK0?I$T|z^zjLcPpuA$^ zjsYY|5kjy~P>KCrLHkk|b<@hm^cV5^tZlHRKZ+6*0^iuJyWd(|O_C}KvdJbR*ArN? zI$giz^;m<`o8+-|4Jk}C)pxb@5v~mK-v9?Op?=srmDyF z?YB!#g7r8Mrw=bfHmwk2#eb(Zo*(830zaP6d%KQ+n`_w}KpSsgJ8a-x*&Oh7xJEmi z|0#)MmFy2n&-JXf1@!c@)x-4m`1bl8EO*?ng;7NvL!1KQ%gjcZg~zD!N4@9sy9W?` zdiC0KK;A`Iy?H!ozDJJAE{QJRZfz%K5>d@J-cp##ZzZlS4hb|_WBU0{%KPT+Zj)uv z_=L<*wj{5IK?C!*J4pl6glYe9T{VL9>ncmj6xid63jKIbUWP^|X%RA0#RTjE^^n?T zF2N;atI2f*DDEaTH%Q!|;UK?*YU~blg7y?+)_L+&$P=yiSW`O0G}Xz{sRi0DaLM&O z%<3cB^P%oAGKvjslo}R5<#P-(b_+vB^J8fGp?x^d7E01UcvHHB=zA>)N;MRvs46Qt zvm7nh?PUHWXzD;RX0V>K^t_8<^j^RHyo>YCq~bXP3#>(hD4PaeHkN=1ZKb&g(A6#Z z$Z%8f!ihee;Fs#^lnm$swsv*{fIt--76E9b#kv~{9bXp9Dog5*p1$#4samVABbqa+ zhH2zVP*<|JQ1~al``DiOL7N+dStzT&wdW+Qr6{wNVw`QgnEfj!IWzJs^6*;j! zzY$uW_>`1B5L)l~h+e4;z$ED*4dJ39A0z{m7}hW|Ai|MZPxq^67i0mcS#b09s1>rR zZ_hV$u#gYxqGcCeKKiT)vLo0wa9^QmZ=pA@wHUmslYQ4mcfoS=nt|arvJg)#=9&ZShT>nF5hon_ zsw?ue$00pqZ+1lSA@y(ODia8Hi}Cq&aVBwS-zj%;Ay`#snz^&gV~dqDp~qz;p0hgN zTl{ikG!k!3)8LD|GwTD3Z-dHQOSG?JNuHBXhF_Fjr*-wx!>WpmxTy)t z^V-c!CYzL}nm^q3g}3Gc`p~(2vLDqi6&pHEGrqWy1R|CSU+N1(9jJb_89@#9VUgkg z!!$FjvWasf=rbObur;}(TgG$c9d|#QA9T;q`83*JnS$=Hnk!v?d*?Qof_k1b$6SK>siX6S@>bjq za*bB@C}5xf{Oi4CLWaVyhhjN;S$*wQq~)40HIX`tD2(k=b+n52_&DYRK!(AwNE3X!sXqj*! z-fnw0$NJGDtG-J9xD@-{J5^Hu$XSkFl>`Se{dh(-X?`C?TnEFy=y04)}LLitCVjhX6V+ylR$7%ttEYZb$<(NqlC7=}oH$oLcKnX|6 zvDBR97)DAqUZ^H2dsMfQB6>2Ywu_|9rbtzz52l z%UK)wNP-sH;uR}?b%}qTSJRRD=daZ#LamsJ`0-TqGa2wEs4avW&}WwdWlRD&SjZAt zBRWA22$>STxqsgTGX5_)-&s61+XSHAdyq3wK3y+aQ3O+6}Il;qNme~lek-bpcWX_Fcn6( zOa=u7Aj=Kc^*4EsolC^ZJ^k9c9sImO%aw|fKyM0VDLzU2-jj zbZjaYcq1#y*qMvgch=d>WP&!IYH&{BNiEqy&w@@8pTSmU7Rz*C8_oGj6ph-k$D_*! zcE4Fd{kn3P(X?bCS_r8zpF{(kmpU_@_gyoWo;1>HpmcTNoi`d<|3DaH33?Uw>gf6A zg$EkrS_Z(nP{jf>4*iZ6{&0Nx*;#m#e>;0ycmf~tM88iyp4;*MV#Ht~IdSh_C!@+_ zQV}UddX+RX=|RzNS8hOhUJ_#*dy|ZgG9pjerfl{8oN)AC^{PCqPi8c_^x5^vPrfVX z0W{@T3zZte4+kfAbbh@Y^T1=W#d@PP*f1r+~FSSK=OGsYE zwqp^C5hPx2!KN@p4Gh>z?jp>=4W>Dv*VZ4NxQ{z}~0fNqD9HK^)pHxA`Mf1bZXD z>~&z`Ww1F*Pi}=FlB?78Bxe@r$M<8-?l~`JnHRXTuC=Lq4-|;|;wTviSwYsPNk_nc za+U?Pkj%D|J>d{_sM=5RVJ+(~vs*M6{B=!NZq8V2oon@1pJ$LK|2N4p%+Dq1bsq4o zxv4M2-OR1F%C$QqcJ}MmbJ!vchV8?^j-N{uq1J{S{g;o37(qty832-03n8{G9+qWF zINH4-IqniN{Ds!2#6A%?I45GePQ`CCdH=WgqLI_S9O?A2ydTT@J&slUEI$+W-C2vH z?_xrY>@n7t_{2U&e9&;&)H||5qItIE0@91RF`yuQn49}lCyb~_{nY9k5@sTBDfxqJ z(}5n~d&Vqxvs#*#;xNd6rq@pOPFcb>B9)geYx>Md^iKMa<}j1(n|9x(Rv`6iO*3s^lm!w~zN0vDNam8m-#qgkbeq^|&rNB!!hOW9+P zbOF;slH_;_f2kUH+()K(N}3+T9UWL5@*4Nz#jjF9z1Vc%68Z-KOxOnp)0aLrf^1@@ zw>9!D=Rr^*1Ws4zCNsz?C%e~KRgEYZ)cXGRK^#b*SizVntZz)Qy-pX}b4o?n#r)16 za5QI(ja_Pc+LZgjp0Hh+34;&1bDyT6H&AxySTU59&tsB+%|GRlle7B^&w4jhV_WO{ z2Jv-7M{Y7Q3l26wDQD&FIH0?oo%;9An$`r+5A|cV;3EMoRf42D5Q0S!iobK#+J&v> zlA=*tV?+a0)!cfhdAWFdPFVj|@zUl+t9bSgd_cuJH)nhjMP_Z+o1>M-A~N?}Q{n;iBO!7-7*<_r+|?Q;x2=6Xxy=P4YrO;&a6ivK5V|`^aJj)|Bp+H#^Os zelLMB98vdD<=u1fa0RFK8N#69Ye$-R>#6|CU|GfOeh}J&A=MOi{ zy*+A6*D>`~4U`>O+Q~=K1@h?VIN$i`|J@j?0Z!MH0B?T(cFB5mhTms&@EdK$Ps`(n zP08o#U^@wAzy&_W@JGiHa5X_2DAu9|VX3Wex;j6!&*Vw_xNEY>dT(){V|;7e}g(G|e}4Q`A5F)3pSLnMVdnZR;sz6Z+Kt zB14+)JUxr*vJIpmc`ym}$CMeKX}Zk2^T68GULh?h-4mOm|I4OFkKNC$=E+&(W6Ccu z9LZR+4YckQ{&aB{T1WGcT@4e*sftqLH)d{2rIWWmOi)Gb26kYD6#*BfQy;4YzS zo~B7;Smx%(YEO{u3iK<(7v};Oxb(Og-{$<<=lATp9Ud)#+Sb_2B9r}p3zV)f;;ky$ z`ExeqE(Am-IEY4Q65qN_8i_P#t1D9kxq<{+$jlUZq1{+5E!d-T zGGN&S)_izAc}Eye+1mwUDbU%JVAitr7m-uB04Hf)?J)k$Eerwu8L}Jpe)D4$eFF*3 zXa=lg&h+fL83kNNOF8pmheHO|$%@O>DvW_TIKALFCoTSMOqie?v190=IP>Qln1Z5L zU(mO6A#-9N^I-(1`{yg)m>@$4-_Xc+B}-z2cWDOP?v;Omrq{Q>FNyn32mM4fw;s1b z5=k!`PxMszX;l3{J7(>g71a!3Go4OBGGxhfsr6po{lo;a#7HEuT~N8j9j(%dAC5~O z+h?ZxMg-3d7jI5dgqGe@M-qVp1hYPX)^N^95sUlfuT4KjuwNtJO+Ammzj0qLLV(s9 z?%cNsQ(EhLlZv5I{aDNU?xRj1fhLfzjmNd;+hK9k?!ph@&(R8S`O*Gm<0I$<%db)8nFdsV++^HpgM zm~k2Ra6`k^Cz|dyjgM+9dVBcA^b~2v;J=fxm>7t7eS;naDdpd@TPJxF&qaCE0!9UO z7XmfQ8r+@`;R()EOxKbD+b5UM<5pZ;Fv3GT#3qC$ePVP!g--Xa?8Q+kd~*YcFKoK2 zQewHvPTw5SA(CL6X~yDf-yRq((HOM!-`>%Zd$syQ%^8D>p%f(T^xi1~!AQs#Xoesk zD+`PTcM(`4Z^}^zYbnH2*n5A~9O0{u0q3`Fvz{EQzT0|o4}iEjlMe5(o$o2o56l>)IRS^M8q!>wjhv6H7A_8)sKL zXL?T~JKO&n72tnJqyInj-~agjRsYS(&cyt0{rCUOe*TZf{HOlUETJm_T@YUME5;a2 z)0!3MYi4ke0?fDJS9wc#?w%}+;Fo@tLEY-XM_XOi>%pDR_hnmJ@7HA94uL|&c!)Hb zZN&9dJ3_lJ3Z^kWVLV#{oGad%GrSRo%~jG5`)!MrO+Vjbp=$HQjo6~2Q+8%iKrM3) zDUOQ}x%%XhOQud zW}}PURY@`YajZPLhCuS>NJa{~Yruk|3tsB20H*4HWc8+W!h^o(6U==}X1>^?w-6fL h(U^x0kUo_oW0pYwM?w8}|9>O!Zv_60!2bmZ{5KDfTR8v# literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/jekyll-sitemap-1.2.0.gem b/vendor/bundle/ruby/2.5.0/cache/jekyll-sitemap-1.2.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..cc452b6d7e3f2a183c885a1aa3035b27bba24dfb GIT binary patch literal 71680 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

              qo@ts@cY%0rWs*)P3*c}y) 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�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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/liquid-4.0.1.gem b/vendor/bundle/ruby/2.5.0/cache/liquid-4.0.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..2186389704f1fad84b9c30bbfd06e51fe40667f6 GIT binary patch literal 72704 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/listen-3.1.5.gem b/vendor/bundle/ruby/2.5.0/cache/listen-3.1.5.gem new file mode 100644 index 0000000000000000000000000000000000000000..3508492c768aa345f8e35a4875c8110d9c1f07ad GIT binary patch literal 27648 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 F{s+pUi#PxP literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/mercenary-0.3.6.gem b/vendor/bundle/ruby/2.5.0/cache/mercenary-0.3.6.gem new file mode 100644 index 0000000000000000000000000000000000000000..e5333e006bae100c0b2bb4a1eda22d89487e348d GIT binary patch literal 16896 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/pathutil-0.16.2.gem b/vendor/bundle/ruby/2.5.0/cache/pathutil-0.16.2.gem new file mode 100644 index 0000000000000000000000000000000000000000..9dd34ccc76706486a43d7271049a8870c8d3b2fc GIT binary patch literal 11776 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 h;P(mY%fe{72>Rc80{B{{=m|^WXpg literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/rb-fsevent-0.10.3.gem b/vendor/bundle/ruby/2.5.0/cache/rb-fsevent-0.10.3.gem new file mode 100644 index 0000000000000000000000000000000000000000..e88708245ef168c343df9b060fc0659fea7713b5 GIT binary patch literal 50688 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/rouge-3.3.0.gem b/vendor/bundle/ruby/2.5.0/cache/rouge-3.3.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..d78065222137692a6ac3431073cf60dc46d9fc93 GIT binary patch literal 331776 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 z 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 H5%|9Vw5%1? literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/sass-3.7.3.gem b/vendor/bundle/ruby/2.5.0/cache/sass-3.7.3.gem new file mode 100644 index 0000000000000000000000000000000000000000..50c33c0330a2fc466b4b8017860b7b1baf6ca7ca GIT binary patch literal 208896 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

              *Xb)Vcqw@bG=e} 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 z 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 Rg8N5-e-!vff&V`R{tHnT@Us8_ literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/sass-listen-4.0.0.gem b/vendor/bundle/ruby/2.5.0/cache/sass-listen-4.0.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..94646539b8f75d78e003bc7c6a6352ff4340ac4a GIT binary patch literal 27136 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 C4^;U8 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so new file mode 100755 index 0000000000000000000000000000000000000000..ee0d568796932902d9b6c996016fd48796cc788c GIT binary patch literal 108872 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem.build_complete b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem.build_complete new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem_make.out b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem_make.out new file mode 100644 index 0000000000..da0b401e93 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/gem_make.out @@ -0,0 +1,30 @@ +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader +/home/travis/.rvm/rubies/ruby-2.5.3/bin/ruby -r ./siteconf20200317-4716-pqfl5m.rb extconf.rb +creating Makefile + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader +make "DESTDIR=" clean + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader +make "DESTDIR=" +compiling mapper.cpp +cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ +cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ +cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ +cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1plus: warning: unrecognized command line option ‘-Wno-tautological-compare’ +compiling rubymain.cpp +cc1plus: warning: command line option ‘-Wimplicit-int’ is valid for C/ObjC but not for C++ +cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++ +cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++ +cc1plus: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1plus: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1plus: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1plus: warning: unrecognized command line option ‘-Wno-tautological-compare’ +linking shared-object fastfilereaderext.so + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader +make "DESTDIR=" install +/usr/bin/install -m 0755 fastfilereaderext.so ./.gem.20200317-4716-1j9cgri diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/mkmf.log b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/mkmf.log new file mode 100644 index 0000000000..9bafff0358 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/mkmf.log @@ -0,0 +1,11 @@ +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ +1: #include "ruby.h" +2: +3: int main(int argc, char **argv) +4: { +5: return 0; +6: } +/* end */ + diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/rubyeventmachine.so b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/rubyeventmachine.so new file mode 100755 index 0000000000000000000000000000000000000000..42336a00a021789d85a96dcc44a6718094995a3d GIT binary patch literal 896568 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%0Ao@X7m=h^6QwDGs$HvZ$Zv1g=B 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�(utKjS+y{rb5baz0j7&)mB@RYT0$~TqD{Tvfq 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

              (WhpCJ6l%7UeuW0AX=JyIS*(cN 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%0Dg%D2qr((1!{B7jF@5=Z`w>#+$ zuy1ZS8SW#~w=%rgp|@{2c*)@2)(&c33?ftEnl4t%a}5(@{y>)=?=H!^iuV!{$S9%2 zJ7S{|`Uf*~BM-en4;?TJT#(*er$v;G($h;p)m|S7=15v zMN7HC*8ukvqkDzKTk=8|wWN;+yvPIkFaXYqQnI9;Y%vc_^3dPu$&x(Tg*;#f54ez$ z{ec6`>$>&IJm~W3Gjv^d5qf_>&o6$W2bCEiKcRqH3MkM6>b=1d9x{ePW+tf`U+1-` zqO!hDMOE@De4T1gLBwwmu>y<#OJ}sKG(xEp1YS#UXQ!8Yye0H_Uuc)d(Z z=JqZsc)g^Td}o(87(DUk3rPbBpOP!|+55Z^zS0hVhKK)F4}Zr9kJ{mH@bC{idH4cZ z5C5doyI{&xDt*38FC3ofOwx>ADJT2T_xH}KsXu@=?~Ic5rDZ+r;O(Vl!E-o-OE$M8 zc)c?T|4Y@q$H?yfPTmW5%hV0`cH&Gtl@%l5O(T4%9{vUo@1^h{PE>um_u*Rk-$>6> z+k>nR)?~{^NQILQp4PM#zQYE=J-{sk@w#tqr&lz~6)$)5UhGq=xJ_j>4s)aaC_1H9Cu&a9OG`UeB@YYWij}37nbg)Ug=W;WZUH>{`!R8 zGDz@ZyO+CZD!+q0;=$J%KBxh;$0Y-|f~I+gKATVxhI*(HyY za5Gp>GhOBRU(?FhfJ)u6qBR1mafkDl_V*$2J6IK@2C2~R@WuwJ)}LZbnM0{U0ak^R zOg>!lZzJ|w4$tw1rU3U)j@LDLxtnUU61#Dpe3V)K%X;i9dF+>Y?8}=Xzkw?GTXvg1 z$)Pr#(?o6hi0879$NwaUKZHZ@?A3QPSxNIl=pvm`@onL*}A7{xCqR z`d;on$$Ru~N>4oUXqwk9?Zt(6twrLU-ST15{Ic;SIA;qm}a&Xy~5c>wUGp-XHI*V(V!4ky#umIXvdoO;t0XCGab7SFw|j{8$dI&|V6;swr^p4M=$| zC)zig4|S4tEO@t1=aUuiKYq>`Q{aysG(zivKk&J{JBDo>G~OR2UAlEbZhzT--d$9c z4w@FLx&~K%xAa~AWTaf@VH%@WzRDj`UCbX+y{5&uJKC!Uz@ItK635TY26^m zi-sNgQm$VZazDH zAC}ih5=;xg6sEx(+*)>EKQ8y53atb01*fjSovyc=C4V|OI92bygrh@fqj%%Va&!n1 zH(NyP5P4jo*&{KrN07AKBY#(N3`js6kf0DC7fX(w3y3{8jU6d=5v^s9qguxjZGn^a z2(Rkvj`|yYbU5#$K{qQBM+EOpbWle;ERMv7!t(Xlbr*LBc)v}={<|Yb{@9MPNhNp<`XZUY;kA7Q+3*|qPEZ2CN)bLpsO>2q0^tpfkJ_P+m-3^zv@{hD@ zBs!O$@AA@VcD2OFx0QdDEtev+JG|KCWj}`2zzImYOwuo&Tf36%Yq#UhCm%Wnsu*oF zckp~R==t2P=d+RLbDN&eV?sW0BcF|8KKH9E7TtlNueH(ccQJq2`dS-5wlB`A3YO~j zz=~DK3k30K>@S;gEXLT@rss7o9oDvWNjZ@0(ppuxb%z52uDkJ_k!g;~6S58HSF z=kkI1RN_@Ur;E~mOcujGY@rL(`B`Qa>-k6WB7X0CU*S2N*Uod;sd&$z1FK!H;>U`a z1gpruS1xH!R+suqOG>NxXUl6!)pJN)+KwaLeaiQb=KoIoKHUu8P!dMkl{_~YyWNYQ zQ19R^Ns$+0l+zXYdx~@nrf;Kr+>g=G>ecDLMmlze!sx#BmVV2r? zrhQ1H=hD5;v-dvF{{Je{L%^w}o>F)by@$`TcVST{+n&X+&dD<1LnwDqjXewbyxDze@L*)M_Y2R@lz0uAy0$9|Qa_SRnH{Md|#bg?Ll z6=A&RcD%u|o)V?J^8SJqc795sS5wO9`Oe0#6eov*;tZBxL9tEW6%)*{tN=DhgOTOE!QSAKgLVb8V=>nqEGtc;B##8^%6UjtL-ESOUIDWM;F@P~Qhk6$fTpST*9 zb_}q)?_kF?uw%f@s=z}$97&B507fql6_q#{3gw{qYuJfwGCPHxx^(HXi!NfPv{X;3 zerDmSM;5{Xarow7aMIE1+U~g(=Ex<|vM}SwDxBBNVi1v%>v_KXF{8Q-lEj`b3*vw9 zs{ku34bEN{T+Noy&t$mY#RBXFww1leUW9M3LDmil7t`3mjx2)mcch;4!lh-kSf>e# zf|Fn}^KL`$)0eO&UK&j2oK%SzQj&c5{@e|I{tS^n!2}h)kyKPe#p5C=0Ee&uJlqw4 zWfB`;{weGAn3{@x?(oh^vfz{+)BC~1;AvBt>7{H>V?Lg*sVH)h6ruOp$4P~y2QTQI zs>=g2p zLILad_c9t<={Mk!kCgnqOF1+6G?&i3&y~kXP|y!`J}4-HIxqf7PVE~H;{s42A0a*U zqyKGXN1n2smpq{M^i3&y`UevxlvYDi;7#~iaoLpF(8LO;;Q&o>*blqqYy0#z@0@({ z_VqzFmHo4D@#Lu|FW+hW8Qa?o|L9EK2d%#6p;i9A^vg5(aLLE;kx*;++|+IKP=84@ zu_QmS0;TnWe|>3q_T7)XJa-O+S@9`1E}T}~8+;jR_3>og{P#)y7n-n%AHdcSB?Swg8U?{Xj{&~WDt;Z&l#GerW(Du!`CUHX_;=Fn_whBXE8F_SN8^#r48y?NU)m$v z>$>8b?RR^AcL?Y=@Lzs++%DqZihK2I;vY=L!+ZODzTX${lX&oJ+`sC2cAxvsWp_IB zY~FP*$1wRSKntqws+@EwUn{^7_toMb_dILW3#+L2-tW-MO^5gb) zy<0reFGZ`}mPhPExoW^~{xb5THurAfO9X+l@uS9mzB)LcHWQ=PgIS;7!Y7PuKQe0E zhk08>Mi@DMgF{ne9fYB?vHdwU*v;TD4+Got4PLmiyM5b>7X&_|&#xH1U7dSVKJ4DW z_q9IRQ+UB&Y*x}c;I+IjlPSEsYmY9cSO2Lx6d-wl((p@bDHhYG#d|?54w8CXe>LdAJH$t8EshE_@nT zO19O%vT2EZhWX@O_%vp-g%e(HH(2etR%M4}+`GnmXeV!`nNfX{*7l5-j%x`_rG8OREx^?ZLo?VQ|6F zo_1jebv;%qsCC8{yY=o+=sNtmG3-tzb|0S?b}xP10jKG{#HC?-*D&7}d}e3hSY4oe zMx!C;0KVq6L0@0%=T}|-ieGo#8Ew`^Vd!7-iEV#k>Y&iKEf;ncoDBKlD}0L5cD@NJ z(aSz4vs7m=Uy43<+WGacih}rJF@UBWW+!T17>@?KsMp2HdUy$e?ymd6di4|>UdDGo zhJz7Yr!6y}Tl9fx1LIemd9z^`wv0j3LmZ$x1yb3YO>HqhnYMy6oVfPT9!*mZ2p=2B zYVwYiFgjG`;npa#GZ);hcKSv1ZpbSR753_Ncl%c_E5PQxhJ66U8%RuHH1=$uYa^ia zU*J7P_Gfri+9A`MDQyux-vX&hZ4p?mxJ_8Givz0A46RjY5sTR57VkNuKGRQP4i|qa zpoihZ>MqK%In|sVo#AyZaic5P>X$$q_vSs9+O$`ll`UiTn5JTT&{jxfYiZP+q+%$<74nrF8uE{_{xF$?m!L! z63`Rx(071bOO&XE8}X$Pn~u*akUo@6}pEE}#JcBfZJo^DFC?G&T0 zghwDY&z1S%KCH|m5O;3NEE&xWF`Q+`GrRytiffLr!8t3*8~l)W2M$j>0t#H>JpT3a zyKaY^8eSAgtM79VZY9s=aE;*G`1G891rE|ooCc*XuH;-od=Ur~viQ;*m*%|u9r4N@ z7euIB5DO00E(lbf3rCiJp#%}&P9$)PMqq&;$&tv(VKtW)n|(aNcz!YpW*EnmX|d7W zE!XaPxKlmijn0Tzn9tgE{2AYyPLS(PZQ`_eNTmLaC3WU9wZ5dFu!{KNcmQE3vOJf? zjTIDgeAk3U2oz=1SFHEScHJ@Wu@Za&<2NC$gE(Q?lPM5%;6Z$BIzX*q-@6Wob6=Rz zG>H%19_FjzHk|Zb7((r9T2$NyvjB5&^YGc__03g(w978zkQj=^YA* z^ppdydx?yQ!H;tI77LtnzAh~Ut3xug4sgQdQS~F|V$AJdORFt>Mvz_p#=c`Ep#7`+ zZLnnF1AI7(nwoUP4AT^(6xR&MFYpD4JU~ZXbX;@W6S5F3E};|*x{eF~ zvWo(=`P1^SH;^TT|DPu?~g zH2Ckw!zx^^Xdn9#D2?L-jC@*crR36SwhI2(<<8`~#TrEYKu8pihf)xHM17gkxi&zp zN_eHQH-NQJ+63W!<@tn206hr~hur~=aYVVyo=Nu|j|M`_JFnm+V^Rtp^wVaCwGTT5 zSssV&NxTv7qHpI^pLS7vKe4Yl%r1yNoBjL{2$f1`QJ^(l#4;}kNeAS44$!HrdS&}f zSQ8EVi9Y>e9!5>RySr^QXzp+#Ny#G>v?gTi@q{+HXqwUP77EA0jJCICz4KIOS|gu+ z-C4)OQ&2JLZp^A+hdYBWpon?hAu0KJiht>3XhtGR(GAOWP%zX*@-9-3W=&BKn3fTI z!?GqFfub!h6!d21+ky%LiDdQK1+fTN{Qea0N9y$YA?5^h9(Mx+KxR6FO;tBF-DIX| z_M@5W^5M7-_lFHrH(sN{E^`@?a0j-@)h=}ms3{*O}D{T8)AnG7)PhDiV9;le`<6W3B+{Qj>EbuyG z%b$o>I=w%(ay~luoqGkk}LCo5Gzh9#v4=p+C`Acx%`@=5UfmRKx=zbTisEZjbA}9OD zMObI%MIl;k0wC(JXiL%49=Rg^Q~ek{q0-8J`;8?HM`#hNZ~@eQyfC$Jhnqv=O*+FD&1W_^?<4i0EO=Lu_i zT!yMntqC9YoA3>p(I{}a*!}LnR(djsOQ1NAC#zTq?-7OX#&w` z7Muxi5ZG)WM&Vi?@>n?~svvE%r8%giWfu3{zC=M-5)4rijt^xVQ@K99xWcY8+E{8o z-VhND7Rv|zxV+=LW3&#orA72yfq%;^HF6Oh*3^|W+m?0$GuVe2ytXSWz2iaN`qT$e zbvAWv(2L>D6^1-OEW#mv6Cu;W@im%!$;z&19@(bwf2J#h2WL4xc=PRj@Rq$?8=AG4 z6OX$b%_Oyyc2cRq0wdVy1QSm)Lxk~Ou0&vC$aLVsF7J)Upk0iB{$D7mFWkV+=kqxa zq7XIK$qvZJi?f6&7bId6^58B6>ffd<4>Piec=s4RctJSr`8Q0q3fTZRK*+zD)P4|y zgYANEZa4F1oUs6H-t@Qn5t^tI+SMZf#R6&h0q9TEU9VZI)l?hB3!Zj@mfPknh+g-XC+8VS$Y`+Xan58ke~$r3LDm`S0ovzU7kov>dLH(Bw3s` z>IASfGb^*v0p>G7y9f|R_=xyXGw0HsG!H_wh6x$?JEg-O}#%@38hkH|zS-lGmR{^D?#R&LmXXXiv&5D~Klu z@*q+BiX@vgve2uUo9-Ti?G)aN6=hR3ZYoM+b9Q74o|O~?|I3I36yM?&E{v%+c7e0a ze*DqAK>G6;jq-d7ON_{|aLVz;Y7d)~&w=5GCHh;YPfVV!L$KLB1){kUw~|OABo(yw zU;P&MfNazC%ReZIXW(`(g?X}%vJL9;Lec>WYXEtrZ!8I5-|v#D;j7xl%fmD_q#= zIUKmq&N;}rXx9WW+`IHk%V4oalRS_Xc#>uCTmfRnw#Y3=oEHfOD){0A|yWL?k zk4k&EEV?5jdvZO?+(2wo-TmmR+1^J7vNuNuZD+<4_V=I^^3S$X&0IaL|N_mS9r*{rN%*?HCP+;P0pX@ zf<7%PWVpONuGZ0Nn`%a*PyPxjUO_W+l4dr7=3?w00-}B}*o8?}#oiaRe+$Qz^dl!c z56`s$nRfyHhE}Uj!3(-naQ}zQ>~y5`jNAzQ$kK_{19sn(T|>u5?;f8HCq$jdaCc#n z6J>Pijb{^|OwE~dWkgKA7<|KdZxynfj*1YM#CG7y;gU=eHOS49*uc3XA{=Tk7li?d zW+?cI#!}LNZh_y#DfZ!MIp0PLvlASYuSYWy$@V;RZ6Zn}HX|SOT;XmLw|&3e3Jsy=GW#cs4X9`xm0g>8_{e?| zW9YafhX0T|8mWOAO~>)*Ll7MgTZT{j1N)Z{oU9wE^urn$41_5;v0EgTD5=vK&AJLo z@TXmn21GD|&<{X>!?zdL!68&tHOA1FW&3GZTN-1KITz6KrN+$_|UP1vufD>@L1_ zW%p+;s*-2g3to?mLj$D$N6;sss%+IAZt z8Nz#j%m;EP%Wp1B`7h&P&yiE8&Jx`MH2uEsr`3x~Yp9||iv6o9^eZI;da9zQh--6l zSUt@nU`%^)P%K#P7^w2~U`)gTwc7@YU?K(q_6dCQPjXWUB|QxJe6a}j5o+LNraEGs zTyxOCV+wV;QmY6x`{bRG#8BYR*`7CC7M^2qLvvfyMbOP*wGTE+qg5kWn>)b%EF=SH zi)P{#lh~ZtRBo_VM}&%4^v50BH@3yH4LP_{zk#viuqvHa;Z$g@pv=%3iDj}NtTbTV z3%cUjXn&A4Enp7#Vd7;kA`Nj0ePPf2reR`6J@JWb_G`y)bN9ApC;ksKSYGhu>Ym6? zvoPdKb0rieNl!GhR0Sw!>9mi1D90BGe;?YcSjK22tyb$wFX#4xf`F{l1y$RMJ#B_u zLP$v#b3Q*t55YECB?bvrZ#JZ+sv?2p**!-~>K+CQS4_R_;#}fPp)R_(UGRs^9O%)* z9A*xKT>L63q-Zg~@Dkk7&`|_7KIn7XotBnpScO0T1zdA9=p#=;De8W`x?McW&<-Hz zzaCeIAgq`8yuxoQd{NZaeI^EaeyU`X=w*%*9G#irIRC3X80Y@J{V%(ecmc_t&%~~K# z#ctQTw6PDJ!dVBKjHpftU@FQw>t>VES30=KvrOKok+~9It!Up&s@PG54kAC$S}Y(% z6~SyiI%6X07G z{`4mth<;S|0q)G`VhZM9AD&TFk?I6qMo%4ITcTC4yW>y0)e=|;p26+#m*^+qZYA0E zOp=ZGQ%jD^sGrb=>?xOmJ04G1DMclIlOwRJoC$hNg$3hUi*3jh@(A51;~`rhBXU;a z$fGwIfkSMY$$)on%qFXg@ZT>!MqZ&glYF@z%WVa6unX}&j0h<>F1*DUDJs%WJ>k6cH@x<)IBQn|aE$3k%j0D@`M%#BKd8@L1uM%A^E`i|{7Owsg02!gN zFx}@~o}Mjujsmzbz47w6*}MpcI9^NpRal0`u48>UZ!k>yD8H&92raM9T1Hdo7iF00S0Le zi)aiEgJ4PeRuPY?a8!)54U&Lnij$FR1Q}J5SCBJ?-w`hpBhk=LSG*Rl^acriD@rNx zpXw2SG74Nq{#|6W!%H>{kn* z@@6buOCucFefd9v!%pAMbbc~S?P_U9`rHFKTYd=5n)DU3rI31nMo@ajxMnGku|y*C z(8*(sDLD*wEBg9S@RBZZlv~LYQz9pzN-M*k13?a#xQD;@d=lw++#bVVDUAW30-6n0 zM2*jE!0N(1iGPH_6#w9^vAbVHYzrTcSX~8|D$0zdUN5UM=OG1ayWICAtpynDbz)o*YFtD6~(ao&altd zyL(o!#}lCU=$3?Kj`MI>kYG&tQYZ^IY9eJSqvgGmH0Fhnru^I7>worG%|!X*VIDs4 zBe2i9S$e?r6-KGH(t{?;3kNd)+y&Y}p-5(I1VVzP8-Yy2&9^GXF+|Fihz&wu61z3! zI-3Sz6r100+s3`sPNS;#7Nu3Or-GOU7+&teN6@k+lH{D<#b!>Dbo9@evTOq#qxcut z+q=8*ol3@HX0x8Qa$=Yq5d836cFrkiyyMx_Pgy$UYg(Y`K{q>XijB_^pNEUpY6=3( z=T-DzdG3H+v@b}_mX;R$@eOdN62`G-+V9r$`w%<6W2%RunMB3|a947h)hN^pgK|)& z5@u3Z)*`^TQNt-1ipWb`%8JpRXc3t)u_8gy22-z#!Cf{-5u%6w6_BrchDqHWI5$9f`d3mHm3xJ}rlcOmj)L4Ck!^BEG_GUj-vM7R{|?wwkco2~ zoo3Ed_(Kd4*AC0j>D%2{6DLY3%|B+XiR`X0RB2@vZf@eYb7hs5jiBu?T_V9TQg6$I zQ7X}h{8kT0?}VtizOODHs&HD2cQA6L`h}pbmWv@ym-ZAUlAR{0zuVB3o2D);1{4C7 z{1rixWU`b&rW8hCvtFr;~WBndhlg0WxpWd*H{q#9U{Pr(>kdy^ZQ@}>zoyngzzcfjz2@44z{CCU{{+F_+FcdLlSSE2I$ z^z5ZS9Qo5!^^_qf~soiZW+SPS?<_BWz@p5hN{8Rz&D+T8<6BVf7-3*5xf0Lp*Sv^d1)6JcAj}~!HA|8I`(I48 za1L!4T~Wrd28{gRFC+xum&OdV=P1~Q=qiE< zRTIB}zdtbb^hVMG)#d)rv#uu)NV4$>{?$N`d>Lzn5kRBaL?qMZuJD|JYN_LGV&@IACXDGE zzoO&kjm{|hdd3=MOZ3LG5pZFk%;alkC4Gd@EPI}S2T2C~_#-nE#zN3thdb83Xyfw| zhZEUHIjV2c8w1{?NPg}IIwk65C1)Vl?TD;Aoar!Jmu@TYw*pI!5{*$)xUC2Y9G3== zrOKjGT0G1Tz~EtIStbd2R#W)K43om)or#1W8O%4U^~?EBo*9_^+DR;495{jC1eDD~ z0TiGERZP>>gZ&r3TJyuw0!3pO-ec%NI0w-8AX2;El z(;x%de*X%?R6WaN*-i|xOsB!2{OWXF5Q{zFQ2%7Wob>-ES#$ox8Nr4SBY+$H3*+h% z0T~0Zl$ns7X)kDBQ*0@eMxVm12uo&%tpjGjPYeQ%LcvFA)GJ66=qpBT#e8G4VTbY ztX{8Ea2q@((zQDfElT_jUZe2Y?tUuerqO>5=8r(rFoAyLfKscr$!yg1Da^FbT8#`l z&0Rw}LzU5MWYqwnnPPeTE4VA!BYn#3$kIcrJF;wCG)4iIqc!3U(Gwbi%YM9pCHu*4F%r;8Rg5!a>gt>O_I1|77nmb>kurxAjI?^)@+(F(u0UB!x(yV@+nDV zp;YR#iTH1U@V%ankMW5ZQRTa!H42V}|8ukH203YlImrgZ%p+u7gys`2q7ajS>n`j% zk?>2IzlH()ODtOCO9F(VYfS``7J+kOG0W6zq-~OXfRs{D(J=6HtgS45Z(*LKr87AZ z^Su{5QR<@2n(d}wFx{q4Su*|$u-|9aXqZUecOU`#Q=`R-yP}4hA<_+`fk5|ky|K&B z`MWejeQal5%oh)+cdXa%vNVh6*g+C+LWZJcI2TDQA~cW{GY!RxB5&2-!(F z=IGPKOFnleydk5hJ?cVpYm9Hmr{l43?ir1m)W*MAv@NJ)d>!0H8xY$;TaN>cVTl5z znyEYt8EKquEvCiM&2Gst#3I`$qa-nY(S}bWTv7T5GHWV5LqqjLs^D1YfkLxk9o}3> z6;mw(!)%aHI_%+>iZhauQw57aezEXjj*;-q!gU4^jMZzx?nViTiEkYxdjVgC4&Ms7 z*acD*1&d*0Ht|j*MpA%Txm^B%NQ-i^-7hw*-DxWr9|4I(dH3Wkj`Qx#mP#w}QE32X z$j2UOiX+?Z`@~5x>%U{ls8E&3F`gjY27xa&+J$cazxjADK;La*uog+epMeq2{40!5 z1*&_J9W3v9E!G_d79wgT!CVqK%n^B4i4zZ1BDt1H3PsN?h@tq8WQVu+dyI?TZFig9 zG4x-;(Q(7fj-dp3zNZBAcpU{1`e*6>Gt5-Q8I>?1c9b_lnNP3RHEq zeOTSDB0k@~sJXg;6{jSc%K?ZNjz684Wmp1g0t~>i+70qo z)h?EwNVkK3e?HFFcdTVJ#E%z^dKDlX}Css~r$)NOtF77CS)+0io zQS^zT@69lUutYGlC^9i6I>Gr#Y+4eI^=)F(a>Bd*y;!t#kl7!F5J*4K zS?e(erAF8nuP?acPUm>NZeK*szd0iJ3xB(B`;ERTqFbRBERr{oSHx$9nT4jv z@pg4jN2dUcQku;IcgyAzyhVZAty_coR}6Rl2=#_UX(;MviR&sxEY06Hd8no`d$4<% zB$25TVq+-KBU-cKAi!ji59g}0+5labSnd`_^dnvehmbI(K@i2?xo#z^qHeO&rV|Ji zARE8-=J)q#&PtPxjvEIOrBaX1XN{zWB^DuTw2T#*hh_1^7V-;$m!HKpM<1?41TzRY zOr^cLu6@~ciQS0@8;reS7lXx`0VJf{Il_i3%VzWD%PlfP8IS#CTA>uR; z@nR{+HQaZ#Erk^dHxn`zJxZ9EC@=_B0I>@|+X|z>3T7(-#f!nbgyXAD*p4w`%|}?quRhTtZ>~Qy_)SbWZbbduw!zrzUH4%$SZ4 zo%d(Mb8%^@L7Lwp!=U%OluaK`^Vzd&5lZ*u3bV|GGGw3wm%`2Bo~-cqhIK7R&`V=< z#C}nQ&z9qZ$c_J*gc z#HW0-c<54&K&SzGGPNvDD5+qflK+=9L)AvQ#A4bV4p@w4qNUCWfN8f~e z5$?%~sbf0>)nu3xQA~$^z8f(%6$~0na|#B!KfzEn5VtH?b%>tLRRBJS@qO{klWdE0 z{%UR`X?>Saf46rs@VC=Qj1H&Xe`$L-=_m?4dN@_IjLcg%K=Uy|!)V2fQG%=j=ac}b z@caA{@srl85Y1|^9vABLG>CM&nD4FKHUa@W_V(%#q%Ak~$Zd)?2_spWK@q;o1meUii} zQu@38P)PTVg_L82v_`~%ON1JO8^Wb6qZqq42vAA-Pwm-Q6p{=s3Pr;9RzsGnz(}N` zA1u&dZll5Yu-mQ{Y*=0jz zrbmgHHM9&!mkf0MF+MLAdK!#Gdhbq}-nj_gpp-t^c7OU)_8OUrJ3rhT6&4?xm}w~P zB2yiq{|7dgEw`e@{2{(;;sTgg809(&<r z&ruTIQ5O!lRAe>*#J-zgoLrir90CMcMR?d#lBq@$VM-+jt;`ZWkFS{w%4``OfOw16 zI!dubz+pttzA!~x70Q^(=%mH@yn#M&?z+q)DB6PFYGSG5DNn$XK{W-&>G(vF1ZF~` z{Yss*99#0aI%y?^(IU*OG`;gR-yQDf+tokl6pNGToz+xlT(JzpZiprMajKM1ntP^$ zW=S&ckxi5^Ku&eYR*T*Vm;3wI4UWzRb9>Gak&KRrR5k7+ZgwXxiX=zkI}<~aLZ#^< z)bwJ$wV(GCF|-cP93L^@D~3^T*6VKN!mYH>)m(G4;?FAyq1v!? zW=3wvO~NLmMP(#_`a1Q4i4QLii?3&9cmGY#Bx0fMn zd^~c$aFQv_R-&t)RcEL>C3?L(>-0`!sbbXYog$hP(*;`Kvw&IH9V3;T%04`cq;JfD z+(s%JUHl3te(b{@-Q7PZu?iD!VW=)vIosvxX|+7g*9;{OhR$Bf15Kx))u`^$J)B{! zB@%8{yG;Pv^n!4B%yv_PcT6=1)|kzaB08QR@L{{qr(6N$Xww}IhN+~JLvU|_+8cwd z<6L50k90SRCi)VkkeL1#AZqCBg#Ch|MjX>d=&eo|TJt?ZfwR+Qbd9aTuZu0*yKplS z_Zy6)QdN7dqgrJeajv9e_NDt1!LJBf7`ly9TGBGL~j|tcupVoQXkxu zz(KX3nf-1Rq6N?bkzF*YM2-pd6x9|sOu~5Y!6d(%yr-`_jZ-@@J^wcn^1eFC{KStlA6fO|#L^%i<0*Rhr-61_3BfWBL7v}zF4`fnP zh{N_|jMy|l2T=>g6h`mHn^>5^NC&YE{~-^ge*HU4?ZEh!%^ddtV*3!#k_P5F zy%E)LXqIX7qHmwpIi~1@d=sGGp%kIbrh+y0Fi(8F+dX22A+?q(2(AKup@Zz^SpBtj zf(o5yOG;-0N{ef(1}xSn(xfuhj)%2CY0!&7y|HFa%0i{rj6!Y2g%2vRGWn`#%@io6 zj+Yc0eFvnhs;CQ&roL6O2b2$|s|HZ5u4I#t)FIy#Z^DY=1jmC|-}C#lreQ6!6Ensp zya%S<7f6O#69(}0AvbZcPAATq8Q;Uh*DpFoOPCVP=0&~TX&KFSr&b3#(rh$A%W?_# zb=2*V&O-%92p)U4nXk59u!cEUiVBTqDmIE>g{&_4icjafMyPftLH7~FJSz62c_C=5 z9%%-m92GiQYPO|Jb1@H?1C=@vp(Qc)b1DLXI7+JhU)Tw(hXiI7VEl;5lxip!h&BxU zOQsIexZCti0p9gBf7$T=osSO+4P zrXiXDmLcTc^s4VsDm_7q=m9AL#MQ)=gh(e}MidsW`9SyNiQ_8v1!UpXug8G@7)HxK z|5<&j9|?RX#x7rNN$Z6HI60@CLiMe%WWqjtlouqE_T%ro0aLfYSw6i)^~N=JfB*g2 zM|i$2`G|0Bd?cj}gSiDH@9hgvPXsu~Hg8u;a?wJ!iN|xHeVpVaoeMe7wJW9L&ix?* zEMR~r6Iuu!CZVW=5%5U30J_EJ72ni}e_$nn4&pH8@#q>wYY;rON?M@dG_x)xA@VC% z(uD-K73>6yo%9`qsRt1rH430neAu%vj2VM|hp5j^N(WR_;m?n(YEbeo2HrFnLXsmv z_yZZ*R>Sr_ovA|!TV8}k+tFkl48n0%nDq{ z^+rSYJ}) z8P?0$pem8=?8D~~L3i-q#3dyKBh7~VQ7bB%QNnUe*C&cstV&;c-N_X^u$UvWNimQ& zJ-?|3tzpLNGzow_-yMq=z_plmOw&Y@KXgV+KZ#A>ppErG#z&tCEN$Ys0>Eeqo%PB z3WQdHn3WvHhLE3Uju#h;jL}U%V?g-{>naLaJU1%8h|Se(b5REfvrm1PvhD!+F=2oX zN-GNwkWZ6>o_6aXae<)%)0_ExXxS9f;<40O;$Q;;)1A2>HuW4n?Ow9DLpE?YHnf@_ zqGl*aSpC@2!;H>FTr2WK-Z>lcK;| z1Qr!kYJ61MMh$H=56fkcxnMKP1PKrtxDy0J>c61e6SihJ^uTR|Le>6=Z z4eRv^#!fnFFc;(?H)fC{#-Ye*5$RV8gpL&s7^8M1tZY$>x38nn@3 zf0Wopxpw~;h7~>@tJhlvU?P()&_P>dkOAMrPz4mFjsz!BBq*OH`Cn()BC>u(UFh+I zUC5tNsKHL3tBkbSD2cD?gCYrp7DO=_8>0 zZq7g3H<*#qozDDHQeeEKR~Q$LT5{ql#j6k8@(P0$LC8bf`GqREE`VS3!s~H7Gp=y~ zTL5%eg%(kSVa>M4_PPsB*H^TsAQVDS$ zkE*si+8#3Rv}6uwD`!sat0`+5}eI` z7xD;{J$ZyIfhv^|ek+o>IG!nd6!roT4Y2kG{8Rmi&dtAW|Hl3-vre!E2$eU(sQY}& z+3&ZG%G^41r67V0o%LNb;m}H(T=fxULj~#(3CF*Z@yjbHmnX(v@kfP z2+&ADq$oV#JZ!%lE$tO#zt}0^2|P32pJ5I3i#V=Q_}5d8JX}zsC>4lZ#Qbq9#d3dM zSY=)TnsafLLSUX+69>&<@Ngqo33?f4q#HgrI?se*Om6t1KK2TY8Ym*MLe4bhI@YZEkqu) z*{kBoF&s~#4~|vUS$aWPwZd7drS?Ynl{PdR-1f`pla|U;$F&eUdd}Ol+6w#KemX5( zgU1Af@@*>CsM~!b1>`oUo6+t;AexEDJ`jNs%!`cfXqv|uw1P^HyLXpUCv4F>I zWgi6SRRMBd&ZbaO9ONY;Zb{)2W|FBSO1e(y?J%Xjh&4y>g+?vbh0@}M(M&KVRIRv1 zEvcv0#p+#FLqzz1T!=oP9<9;cdRe*;wu{@!0%r4ezId!GZaKje{gbJY>;tY%8iuK< zbWr|*#f{aEPr(6tj8q%k1V_u;rMeck-$S!O-STHC`5}*#y<)OEOU70tr`{g|pu1Rt za=tD-S6oHn5u*iZaG)95=KVrTB2s*P% z8;!98G{mSmdpH6C18Q_vLVASYgVKK4w{bI~!w2R0?;AD4?6e!LM%`?*jf>hvtz!n& zMssk2_woA5N~e3S;_y?SPqDhTd8T^BIS*fEXlxFqfNMWk^n)i1!*11^d2qGws=RP6 zheg(DAH@L&D8=9b)sjYta-(@tOIkFSvr#J)BbmyQ?4AYRts^{NUVa&s^t)n(!2ov! z8*}=%pqT!^z4Spu1STiTK@gZDl{y#ubAJE{3>G}>&th_1RCs~!1`BM8Ts~pAdK2+a zw{Inu$^;_n-2y=#a8xW5BsFwZ^<0ohwge0gt16=_z56F~v?lR$=u1Rf0iw15ub^O7 zvK4TCIhtAc2gECZN}S_|IvXgT>unOU#OC%8?Y=IukdW`R-JifjX07%_c}(83V4Nt5 zYStR?odJEr46hLoeU<-}%A+@Hh0o4_2D^4YwgqvnwIU(= z+;yfXsxmdCEMQScTSH?u48sf!vC_4GO-<{V&x-|F?Q2CE50#$ZSAy*l{)5k@LOdKF zqdY)d{ETx~Dq&}(M5sH2(~um)rSK$ot9{5fOM>31lUObEB8^pZ*)1SD5uvUv_ zJfw7*#aq;&ca}7m1lYKKzydJ9cgSCh`7^;&a1tONcf@0p7bS3y7@*B(O?YKkHT&BD!@Gxlv%6g? ze4OH>XM^x(BE%S}pfe|~26LVX#)DEkP_K(-ja^YotJW$AKMhh1Clf^dTc)VUJq#Iq=tjYN)v^?85-2ll8!|i<|Gj3_ri_l zh!X>&svl#E{9kK-W8bldXt!OXhxYDnAsjta{55F~WV5L3@M<36TgAHHtnDO7ysKml z3GkwPUp^5&kYVLH!(Jv@i)m9Z(i{S!RN(?xW{@g`ny@`lEyKcw+BpG_!6XZFH_nne zQHxfK;WLdoY;=jcucUUP;MrX3fg-9W+Lg`nTA zD8TKEfFQW479C(ypgH4eQoA#WImeC`Z-Km<9LM=AC1+o^u$ z?^FHE6V)%N?IZ!bK&$PciN6ikRyX-fRG8T1}nm86;2T|K|+9vx+X<=pb#h*dr&bC<~g(ztQ)~$ zg@dXpghVFD-C+y+_v`#61bG4_6e60SHYu=+7}*B?8+I*k>?_#Sq!LpMljY|o%;${L zgDdcT2_B+_jM2Hg8Th|o2qM~FMq|qz`!+ocB?HGfQLLC8(|0)nmAYd^it#F@k-n$9 z$6!l9-xm$pv)I?$jf251jAn{aQgJp>>a-aPsOgw~MDLr}Bcu`nKOI9^Et`>dVg+2` zNw_EEA^o6MeyrZEtGaf!)sHLNQTel0>oi@BP~lZEv}+s4PvRZy&ZbwI?d1)nGj&Nu zq{CD4FdyKO^=GmV5-!!SikirJ+E-Z)JK_s^|nqmWtyZ8z- zz=|hL52!D^Mgu z#+SS*o(O|yRomR0OO*qT32CxY915Hq7T?94_@6|-CS!fimM#I@6Usv`a4^mlY{^+l zua?wKGMW?kHrfgl-U3n_O@chg%>vI2XUpMO<&2~U7VyCcOwSJ z?~nWzxiT$Y&>0SpvqOMR>m^lo%of$ryH%-_u3o1zL4Ue%Q#Zz1@42@W9Re5T<{TdX zO;N}1H27+R@hYo`ck0Z%5T#8B{{WF>C_h8FR+@j+#j+Gd@o!NgMd07bte1pRwq+0#nx=da zy_(32<`9e2Ph9)ej8bN_l8^CIrkJc3Jnck4lZya+#j{<-I38p+LIVyW4#6+=(`%sC zQcwW4Mb9LVq4^wyq?-m~H6l0VDOn*Uy0g>Q}p=iP-h|b++OT!tc)mlxmq)sHp z%5wL0%h$X4vb28C%FU=oHLe1^GF6^@P^8ardw5N0^4L_RrYbby-XdcL{h4$fuXN>9 z+%epKTwzy^hVMj*;(sw~?pqQ5cT zJ-)+-bAv!ek0(}8$kaLKIi9XJ;)~Asx3uUYH0lwBQYPA(nRbD{k@`hL&N;!INu0z* zsFmnsCZ!7I^MBEYL1hO-wAzI1f3I&CZ7A)TA>8cJv=KO?(J)(`X01_cx7(do9pQMJ zosQXPwT)U0bZXN;=6kK@Rj?Ln3BZCV$}P?&0g|}}5p1|yQsnYi~lq*mI0THuENEBr#jD2^Il4$U~B;GTH}rE|MN(>V32hG5KK`+#c__vh$UwQthqG z!k3LQ9UpqKCA38zVsCcItzJa{Zk9fjg<@WY+vtgc>BVA7@>opbBrtM6uB);DVF5_P zTtSFpe81j~pbMuYD=#lCL#_z43FA&t3}xtblE+C5=rULw$YN9AH+Z?^DkAKgV#86) z1p(YEZ9rx$3(GA9ij+i4MH+Kqh!*$-V)^QRE5YST`^Vs=5-bRlCo`l(o#jg0Y+Fg_ zQAu2rIJYI{#aUJO1oa};gikB>z^r7gP9~Pe5*0oC*~Ior3n_}jv&tfFAXCsObjhl7 zXr6<)G+=&Va`7ms&AFH-X`kXeuJ436@ly;DiI1$SF)VPh!=bt~5gNPI1znS+&J->( z=66f@<~V(-ZWLlNCev}m*@><8H7tO<5}iaR(}CxdzeVU?jdlSch%7?nWhFdz>G(sV zT==>Oqup`6R;3K{EC)%lcD8;RrqGBto_YuZE)fJJZvTE4M)S2QAlz=LOjz2D6K}xG zb^~+BarV-H7I0+(Q`4Ib2DS(6GRCLz2nP|J>;q@w(~efL{7ngIfZreQiy*MG{SwGn zQrK^CSYyhy>L@4ac>+);4<9q>k0DzqCR{{|;e9`Tr1-tkix5Nhw*gnnue)6W;pnX* z&oUD)EA~{O1p$c#fWQo;W~Jz>6Ess&<`}A7uq_|v+vPf-d@ZGDufiQOTvc^Y^9Pf{ z{kRAX3a&Y;13eZ(VLP`#IZ8gf-jDT1A3m>A*{Fz}SSANwf zmCpNZVnffA)BX1XMDvP)TcQ|vQf)J;@u%Rhx_gm9N$@=b3h1S^_)6W)siHKLmO>WH zN-Zhn9-V+XpeF%CgS(fPBzLzB%mscXH6G!1pEIfTZ|D{nIEo!r6tu8B83vHXb!VTO zwc3ofwT9`}tkvUqvQBplA%GMRB4t!Et9EfdUP!5919>{UKSO@bh-(#mFu`;tFulQ!OrehK2 zWbx>w2+XF2W{xh?Loi<=0^DE{0N2Kl}{OMcPgvCc%Z2+oa6{-SOsxUyR6(bnOX!uN`YqW;E(!8Qda-*XcWYZJU zP|{7+Vms+1t}OkFOgk1etYs0}>oHbU~L78jcL4^z-$7NTn78*?WuX0n_MW_$Maf=>#tU z#x@dQY=eNYQJeETC8rCE%BVD{Fueq$R~lZC;^iO`zRTl$4wq2) zoQ1+PbNYm)UZsB~8FnVKtAE?5(i>^FOu! z18ZJf1oZst!wPh-5(x7WtP9j6%bxnumL`KfhVXSiNg=7*r-&%cysOfh)6IocFl{RH zI>DJa$;7_6Llc-m$=LXp!IP!4b9K0NDv$(|_Z%!^BP``nO3clAWXjmLmBqZ+aE-KHs~z@ z_LH)Zg8Y-MihZi$9}@O}?y;({40jcsF%ifb|IbpBbD)CaP7+%f2=f(_y01urO@hu9 z+_cdl-Y4tXXF-Hz`={VVM-D#qT9L(t96AhZrlcj=o(F=+NJb~;^b~@_VY_3c4-^8k z-SM?_+mH%}%HA2hPm2hOM!za{rNk|XngVax?Nc&R20KNDZrlmIMIrX2>RvZg33>tB zC}|5tgo-pxO42jiX4>Qz8%rrgG60rwcbMO!X^_mJ8y&4QYaXRsH1v@UyzV8c0hNu4 zJ)kF%NNn@~lu$->?hWItB@AO65d{iO z0}LO*a_p)I`|1vJYM_M@TfZUTt#RD%W3*esv`t)^B7C(Ee8N{b?ll29a^|(jgHN6> zVB5jMU)@t^h3O_4iInsU6XRixFi9}X1_cem2EnOtzwpV73IW1$#@v!`i|}h8!f$XF zZ9s1Y8G{(-RWHGXIH~9x*YUm3jqDTU7|cs(!aW(0^yDUTpS z^X)vY+X{^O4ptv&!PkODyYYdhL$fI>w;ILYRRTAz8@@ovEKyeVzR@K^y8FTJgfgo$r zP53QRJ^~(BBu==y1T>G3e-RM|*{>}k4w%u_wOQrW5|Q92w2~Aeu5Y?|x8b zB6SZWxfFl;ueg9%u01{}7FJfSi@X5$#B~wtP-yT$J>hcfIWWUXF~~FoQk@Egg9KB$ ztAM(I^AEI9MD>=GtO6q{B@lQ^hjK+Gh;TR%DUi~>fl|5%O~jHIwP&-CsxV9j6`<&Q z5F}Pxu}1cAqIu&|DD2n8OkcshkZ(+x56Tu3WP?m5QP#Rk^8Swke) zOhYk2uJ*kNE8^c`!4e9VR#YgbitpJ%_E|hW5$y_k90eTdb*)+j+=!qzV1N(p$%$>1 zqNhp};-V_SKh=-X6PkOd7WPwo`a{yW&Ga7e`~zB1YPitsXUyvKqXT?@io3)DIH1n{ zllk+zAl;7jx67iscNiT&b;nDw{a?CD>reX*7Ka0B?8qPyrm|!wSOUnkuWc72eg%DT z#oBQ}vQ)JiWihw2F)C)mjp2GQzweVn*2+5K!)wucqKYmm-JF;9XcrF4IpKWzFeZnU zPvVQt#aJlawreIhg#&knfK5h{NguCm9X!+QC>>dV>!aepb8cB6nQw(hAqO(ELv z6BRz==&E37M-ZL*yWoOzX+^@{rEB&%jx8J^ZY{PjsNY2CbWGA%M-`-k%3Ni_CEkds z$w*J@{|AydL3?m=#t2E=fm!JKzHeK|+4HJ##Qv6ZY0EWAH}G6%=-|gj;?KE$DtzRR zi?B%4EZc73Pfx?7J8x`IZ%9M(|nL1c;Ou)ayVT#RET^pneNjV!h zlXVCa&zgyuNFBILLDXR#l9Bxxzd1aLUYYET$cHha*i zKu|Ac8j6K8){BF(<|9)R&M+s0w8z zIGNNhV6b~%rZ%PYvyxWR0X0HcE}}zJbn`@tD#h58WF;eNqLb>!N80lkuz?n2m|RMD zqq@lG!Y60#9aTp?h0>_k5J|&8cde$E+${=Z{#IL0-I7|e=UceNQonj#B!%fgo= zB~!ErO)SzLiKs^jACBAC(m&*xM4tgAbBfM$V#%tiZN1&dt7_YcllOq_J!0~nNasV9 z+(hR|yzPMWIotg)QX5a57qjtF=Vnz!O5vPh9t_MS>5`iuystdx@$j$n0~R2KGaLgN z>~ld^M#qycLK~(1K&rBk&sC@#X}zVA!T!SbScXan>WL~X&dcRmS+Gr$!ptq;mfp1| zk>5p_xfzFkJ8L!kyH>;?V_-mKL*R-skE8@y|P(t%M3j;2>c{F81*ph z%3uw>Ue7CyG^8@gE@cknctlknL1>s{TT(C<(xv>fM3Nqex^+5ISZpa`CWs%>3UD=> z_R%i&8AxHnL>EY~ySrUQ1>YH4m*TtBp4%NDlfXcgkk8DzCP}^;tQ!lGlz5gQ0<1_4 zRcNR}LlwbJhZLtFS)wqCOJrMF;;ltxC6atGpiafU?N{x-U9Va_t0+(blVJW~*ZahZ z|MOHV>_BzDTkpQ2>JI+}bLlXR(@hYD*~j!JnfLua&y70#XTg8=|2#Jv#kghxnz&%C z<^q&!12lzJD5ZZOWF=if`8DwL{PgKp{7pII6F&~Y6QHLx#gOrj3AfT4QEwB&5YB7y z2rAeQw891=CkEGTjcShRnXcE3VRtgI`~M$jx@zDWcXu+WH7-9m1&ThNU0%t06Ai() zD5VogGxFHV?y$NitcuevMt!)gJlnb+Po`+O(5yyS-J!>?VCS3dG&mOKwEa9APZ3e= zR2R!JJmz`%(*8vWblxy)a_8xwu)5K@ZnlU6OJ~N_kfqKFKCUC6Lsw(Buk!tgpX$Md zVYC!+g-yfM;tD&B+ME7|5u)GL+NbJMZ2J4RRHst|;_p_Q@^C!fiGOnz&qLqmN&>*L z4r)^_%@q|fO2V*kD4qeI0g^1z-;Y}a-wT$o zWA8}h5C_$dTooK%oOc<@`52iE}VUr$zvne)j)W# zh&-Y867yrBO_5s;D+36i?G)?+mA#+}0id5bh;mSCC;N-Q1W?pK2N;58HOoLsS%nYiOPdV1)59``aR>^T zeL+%z6>^)4Dr#O>-Llpug%qP71F!th~+)5$E{|vWct-4BwLRfE!qQFWf`;8^-Wf2(a z+dogbRC_&rDn-{3C4R%UZAn{m+SpG}ZoY4u1YCH#MZ4}CMDBS7q+1LgV)!rn$Vw_g zzsh9cLsNte{e{rniFlT9?0>56s!{$gbzEjY{)94zr~^lk@N=yA8~>nLf`-a#H_-BU ztYOz;xZoC>`9c|*29!^&pNKFfREuYEjR6vhw?Pyx=AhFRNAjqMV~JzL>*~LSSS%9a zDKJ7W_ZP!qzMkZlE%%~j_lf*{QVjaSqt9Uzr>kSb|E#=nNAETPpVmN1S%8(!F7hpZ zo%Uc;O0`{UN@?!IV%|)3%8BJcAfo~Q>~{%ud^W){x+oH1DZ@J9&t&6aIY(|_v)Pw3GVBgJ2JGMZZ6b%Y4z_+GhQ87E@oH3v_M{AQ0 z`>d0$!H#z$`vHQ5hU90^y-?D@G`}1pJE4CFyAoY2%OlD=yMF{*<#a)fM6{e@N@Bg2 z{#C{n+iAP828y89DfLrdXZ1#bawx?9!Xpx6V@{n4&HDq&nSTA-I$9DJe8q%R{3&?p z-opry6$ooY06)b?I;4JYILSrSkK6wkpniP0^pnF{#IJ}bB5{E?iDAG_1#d06_1}@a z^XhZ|5z$*ZE%GWtqmtjT)=`ql`nU?`gpVX_pO3*y zZ+=fP*CNtT_@aKXDO%OX(xO0HYOy?xug>%mm$byKVV~9O4Gkupa`553pG?+3(R;wJ zkx^s*7aim}+0Hr&(>^vq#uX-0Qt{#K5(cT^c~Kz4o{Pcqg?uNhATvl9fhQu`3nsP^ zM?S1EvL-|fs)mu`UG$@pfxT1F%eyvL*~{~jz7rHbhiFO5^1m#oRkb-{&Oh!O} zibIkujdEPBN`aeTk_!cdl8}pmzV1j5_!ed7P`!bZB9<=^W{{+ONki98lw9MpCWsbr ztADIlx9L*X*pe=CeZFE6zFIfhZ9sj)bg)cZ2>~4zGYw+Cl@JQLhQ#6G$HSVXyHI+F z4StyAhg`XD11mNAiB%E*A_5}@03sXM-C@Ky1)dAnMI{bf5@Em}@}kfew|_hky&~<9 zxM79kmVF3-wXw_(KVq62-S=@FY~RSF`{C4gk{4HV>Nk-jY=BBtS7B4@6~L|T#F=(o zekp5(bw}0}XhWhDcvD^uT5I3cE}nL8uuP24O5csQt9$=t8_l1wA;!N_P~@T{Qn)}g z3O|}}_AE1?Vm4hg70gBsB?40-2y79QAvuV%HWqSoo$1t7$Pqf6l(4MBCR#06z17qm zpQPGRMRD|RRu+VgknOi9J3;kVV&HBPSn1+&?BOA9M5G06J_PZu_##=CVo6(a`ivS= zOf&d|zrQPqGZR;kI8imu$|z}3=Dnx$6x7d2C|9mcA~%#v6;11s z$*!cw$U}=rwrQ&>qhwD{usZ zPSq#A5-AE)ow$EeotT)32$q)-7d?UZPBYw+Wp9c9>UF8HLCQ%!nu9#sLR3A0`G8U& zFd=2^LQspvV#7K$VfvphVCr_yFIa6)D;)`(O}RJ;k!IrBRA`*4hAa1Ghit69@!0LU z6VzW!0a>a-WpLFJhB;~)GoOqH6z*0_47nhKrVP2_91XdOv0#gqNn}VC(=n07RI#~= z%}Icug51$c%uwDyUz$!SIA{cXZ9JY*BqYAY)0|R1bMkM0CB)ozJxBc3fw9RY3ZnIp zu>2JyCz^lw&?j0la72YYqn1}iJjVrcriwT|hfK8}31n}n7J>wT@yEe|WQANeUwTZ6 zLQ^5uE*ZtNYO(}v8P}4iDmnn8*>S^#(Q>uLh!J$T0-5?yE`5i`CO1SMrWeN{uEFbp14QKP8(tL56lhPI?-BPMzi!0PtcIeO1C*h z95j9AjqK_3nvKNlmXY(45yO;GRF<-;i!el;LZK84Gp0k2rs&gYzmStKO7cQ({utEe z0`Z#iB_5G`0z$XwLjg$3gPEuZ+l zNW@Y693&MXdkQ(4Rnf_)43lIgns0a8w0SaZ3b$%Tn`|$A`x8l-Hu_1VD>KOfAZCM9 zt@hm100ku;#wnm+v+kZR985ut6e3Bm>98*_!`xv1EZB~Z0vE+aN)aY5p{%3bLL<)A zH_axKX+hlq;%=e#0RMd3Uua+bbB^zLlAVC*)qhXf*XA9DHI;)Qz$`t zV{H8sL0sn(N8>T4+*P6GTJC77hcg!MSv}= zSlzT5#kiWZJ#$ooO16?0aQsA31%8e;1d=l;<^uFz*8xSC3k`7w59KU0gix9ZbbSmPc&eB&@Y9A! zS;m*wu)X1B5$cxA;J9|`r!mHaHfEScf;iaD1CGhHW#j_IlyijL6S=miAr*FgyVZax zF=D7fe~d+-rrvlq1zlDL_tll$G&gPmuLLp96JZmY-^FMPJSHrrhNj&*`s*bgBjIz( zXoh+$a!91NSO>DHdK?HIMpG}D03<=yNHWf#?19Gk4e|BhZr=!5kBE!3++;!1C}J$9 z7fm#%N&lzbt@+Z$)f8+A9E%`) zS1xCK25JKQ14}ZS+bIzupoi8*g~C!QOyD_aiB*;YqWz;HMCL}ZB%xW!f2S= zth6(%03*#xuo(U?Yj47x$dRQD^HZ|v^Z9^Va+3*S>9*YmK}uqZ%_P*)@0m9b0wnPk z0t~2@Zuk85?>_fNL`H6s%Hy7KiHuAT$|d41&oUc`4h3)NK9g9ZP@2Z|w7z1IK=|Et zmGEh*D6`w1D1(ZMGF}yO;Q&DZ6&E#6>5HqxUg8hIP&i(r8HF5zxl7YO#8ojg?!8*O zDV%nv$la_=YjHYPgUT*|X5Q;zIBtJn25R&7!367v+tvMgOF=nLUSlS$jf`xV>&fy9 z0O#m1KI}fNw~G}=!EW91&7|~5UsAz*!Cxu4{xnxtpwG3tg=Og$+<`)+Fal8ztUfj6|kFr3b^{G+o+YZ2tNz!I0-!QLun zc3&u;9&=Nzw@fu(+>3rz$xKq>WYLVCxP!C@H#GSk=AT`q>tqc<1ozCLC)m5{y)RYD zG9zhn)=MN$bsV=Jm>Bu+^+<`wrn}m#Kdla5M|YHm$nDasS7X>+ZK}wvQhJ2w0<=^u zhi61(?3*Jp^U7fE8OfQLm`xYe*#rLfrE*ef} z;QXU#7IZ{JWp1nG^-~tMw!dxeLF|JOfhmd;1#(a4eOb(SEg6_1yR#CJ#R+m6s!o*O*IK3HzOkP^A*^4Y^%7jYgvoU#X$4 z-n|m|m<8bIU-NF7!DE zYj1AOojfuvmZ-!sUkis(0-705pO7H2GP3Jl+LSNiNNQWYP^n+19N3JKLHByn9-tN;p83t=`b*KyDNd1Z->K3q45D;q+gRRlA8Z6qj zN0wLthYAdB4pAN+y&LwO)5Br+*(sIvcV#6jq0l&WC@*8KRK~c`mMq+C_QUspq!X2z z!P?N{E%h1!S1XPktxYx&2h!_otQ-P|T5F_`-rVD$0DMBJPg_k=zsx9837jTVXd~AJ zX+hF+PfJ6;-)nRCk!gEDXSmCA=%cU(25Dn#@3mlFsSi;td3D(Ob|znthfx2#lY8DZwijp)6LXnUIRT%3q)0_`jo)U7i7 zQ2KIqr|+C8T{d3$OLzP*Mb8@^weV@nMqxB>K5b5!Mq*iqCFOcV8Wha7TtyOPur4*Y}sKhR!4IV>vGR1R-Mw^mrF{{I5>-&Y(E8vq@~`)(=o00tbg#Zf4Zf|dHeKu z3q?j+;%lDMy;0Utu4`FGC761zQIJh*b4H|TAcWDxqCcbE@53|{0R$>Aj+a!HW6z8n zNjYUSpsRFKzS+2rW~vx8cj1m}^^<~b=%R4aHEmxzZo~4CHRkWH@e4|uzFUj}M9=)V zU5#eLu4937d<&gZt3>D=N(ImTEQpShoxNdD z_lMny3%=*a(_y#0HzHXX5N2B1Jhlkgw+KPHXp-CD*I`cZ6rv66yJ( zJ283mGFxWMhGKZ)T2)_ZfLYS+UKX$9TVc7+AaXUp9B>6-&?3Zw-m_lPj(GpUhALgA zph}@uQ}@EbpbZtyJdHkDiM&F(fP_T~%UotyDzF93*G|b;=kOErjT6I8{NJ-cEnTK4R^WrIb;g2tn3Q={BW!#M$`0{rEQ7MG|e zz>obiy2I8%iCOtl7f0z~8g_gJC;@vD_g)mHS|r#`CpyjNu@$Dh>T@m_xncTCUKdfc zu1$%j{Y-uPXm?zZ2HwKB*ZNULBk)T~PQtt0X33o3vpbPUWM!K3pXdAi=Bp%d`mj>g z8_saJ!3wlY$xVX+cod2DQLL8k5oInORxd59_OU71jVqep`qN~lAd>jQE~BMJG&@!= zxQ}o=KCKS)r<`~?ptYZ#l}}Zt$Ky_WqZDyItsE)n1XDE+GkUM2*fnN!>U{5T=0dwo zyGKXPxG_E-=6k1AX%@?S*L1C+X%&(Sr)+c z{o=vGxS}>`4uuf9du|Rr$D!x?&^S$Cx4nh2V=ad!Q2T>H2N$aY-FyC+7X9Edj2dT8 z+elSCn*B(;@reJWzSuT31F37Ji+1j1f z3xVGJdOBB|I=xixT>coic$q^J#psKI`s&lVs~Zig&m~PTGow)0unTldGQ*K?6K}Uo zFE2a2?)oS>0;M2eD8##CO^?FLsWu0|G}0fvQxrWM30$i2eN&cL%i|iQwnjfzH{_U~ zb@n>b_l_qOLbgxRV(ghnd;16*8ETwNWP$k|h9+vo%J((F+JED}chGw<_z4CxS!Ti> zMPqCr7IQr}ThFfVFA;g4UFYL*xDtPpHb;gr==1fWY)jC{uUHoZ7;kKC6rqeT4Q6A< zAC2YJI7>V_W8uoub1t-dECdKe2xx-wcjwjbn2PwK5N0syVGs9zXMrL_l zwpOu>KScJ(_qS70xp8s(QQ*ZAG;uo}dYi_t0l5nbek1D4;9@8pIkh&kcAgX!uKnrw znz11kF>HMO?!$uCAVUjN14Z~&UiGd<%AS&56$bNt2E#ValuC8~i zo)zxsIJ#Bjz_{{iLP{$)U$A7fQuZnz0`>Q+;)q&S=pmdhXpN?)86p**cZzdSjPE(8 zJ?Ffqn80hKKpHmM8!{LM>`fa*-Qk>0LAWeD(fYMM(O+2?O}ne$!?5F+S5Y?%ZKECv zbjb9zNn_Jg@H(SO*MbyyEkFvO^EetK%!Ee@E-?T2@kgiW{3hlongO||^z~z|C~b@R zJi)L{vuR-vTr-FmzsGtl?tv_rmrw|&iQR`d3P+aQ$I({ll+fVrY#W8kS|hq@UBu6- z9X~-|7Xd8Fa-niFaCPBmGF75iD%93$e(VkfHNQr(#A@gCsz}MC4*&9ML|62prFA11 z02WI9E(>k@?Nsqx?CrCB@%RZ4{t};qn(0wOLw)&x<;kLUKr<9I%$9DZapR&3;)L1$ zO(iV7_Jv-z!*JN4B!vUirez!*hKv0ZJ*~%&<#H4s%Nhr#;1-?1c6ahi$GMO;#r`O` zHAvB)dDWVyi?cTCBLeD5OZGw#UHjYB(R19on}i!bZhV&2xLLzY@oOAwoY+~+A`s`A zgXB?%dEuk<^m;f$klfL*aVKlg{6-aRWKLHps=LV>yS-rCZ+}4F)=6HO-}K1aUeLSj z`-xFQ;x{AF-(pBa1`Ms}M}d=Kg>)(XX-m5g0ZBsflup%}=12ZvSSG67O}A-pDw0l7 z5BxWE4EB{xnaaN&JJxGd{?|F8KkH&rXQ!j}00Splx@~@RCRrz&8C}M&Ucw-A36uMP z&H#P!ZV;+QNQkuq#nmuiOLPpfMRR}n<|T_}IwS!rogsZ32F%=yx!EMer~(ImG4Su+ z?hcRhO}M7D2))c7S)Jc-PuJVi_dhFHVG6EB!+Nl)(L^2=LSVfZXsCdy)M~EA7%w`b)Gn znttbSg8T(C_9?o6`^0{)8*aYYMSRc_DjE zG<2QgX-;?GD+oKIVOcv&Rp>ek8D0(O?ZUK!66ysaElR0qfrU&&6Ly)($QnL3O807p zq>TYZ2rYR_=Au}t`JClcD46UzpDs(AlO=EVWz`E^~s>|8DQYQWhu9b z@584_CUKbl1mW#^Ypc(^SMoD-}YHL-ELsAWXvYIH@;KE zzeTjAuR{8VLYwxm>#;VUnJZCgi^wV{gg6CS6<8O}t*4vAPerp1=q&$PE#lO9w+etp z@kTI(1L(PhQ>RujUwHrt{9gb+_ap$jJ5WHk+Va&_ zT!(FNlX_NqS*%HvDXDE&HeLw1iz+;4^dG# z6@I>54S7vLM%PDTaVvS->pyE)iI*eJT6#xHABN0Agof5`#5x-l+r zyZ^3D3r}x|Vty%8I)1+SJpX!BzQMp>IA6pEI7uz2wPF<|kYNPs!$cW|IEb)hIHxGc zDN@?)yj$Hm0S`I|jbJ<}3hPDwTZ{sZy^&?q{8~5Rm^ZU{3hP8Gh7^6(y^?xc;BChR$WEXuH%$9U!Oa(t|s= z+wA72(BU5pd7>}_?w**HGb)n!$%8=0_1ir} z7#&LPe2A5tBSMUH*s;DcmZmpm%#=ARdDtt+-1z6TCw4v*y3CdZ!NvPL--n-%_w=P6 zX?3Ho_W86qx}MXZ)z;!{ac}~~zTE+NpLJVAgZ8mD-bH9uht)Ev=@|_bIgtNlMl(3% z=v|K$$;Y%1OB~IrStj`&@lzc*RmS2kw=7&H&brn{u`mdY?4kN@mJnmvF*{jrF;(0L z$LejyyU(=f?QGaX0jb@$4Z6}-#Ckf7t-?j2H+mZ>>|~JRGCN*5wc5WxM{()J zaX3ElJ3gIrikq8Kt)z#xVhYz1Az%p7WEoY&EE&Ue0Z~*8lPzVgfP8Z!S(`w-u6@iA zHbZA9qZ`N6C~7!Ibc#@HWN9PlrgM@01}!%Aq9B@Zkf8=KrX)DdGn5Jh<)6JDjtu3D z&fqhta87TK%dXd*PB=u(ip7tCrWN-eVeQit$G8?JW6YSM-t9}bXLtLvMUDq5<02@T zJX@Hq?A_k9@;DOW(Bd09dAN55^Ytcf6y4}&`G@CXjGp%o*Tqxq0PQ3PEGg7y&V9l_ z9q0Ut=?4?H8P|w3!{wOnSS|%I+F@%kGU0HLS>lM{4U*-L7f=U@!*yp1@XPC`^>U@3 z=9a)mum&rNz!bMsbgI5detM8nofb_iO2ZgQcGc0sE1Na7g{cZspk~`zlz)1#JvF^(!f5#t0UwyY27R)X^}y+y?ux((=)aSDO@f69f-`Pq^30YiIp3MV$aH{{8$ zJsk~t9ll|CenVx?@#Ge6>TFQy;ZL{>RI5dGwB88y6@6Z>`=d)*@hAS3vdBXex7>Z! z+Lwi^-g^(ZxF(TAo6pFN((7m0I4w+OS=(s@M4}p9elBcW z_56M}lJulUf$s~}S3}6x`*=@lM;wN4xmdr9b^C!T&L`JbV;Cud6TOKeAC%2qb(DTfXj$fCbzi z^Pj4PobVShfsH3AhWbEl7q?F7);+uR%KVmc6q>mzHe*39yd1ZCld}pA#q_(n+Z|R$ zk@S+&S?$k-|2f||{}b&U`l3IBLMQ7XI7NCn!>gjIm>SEULTJ1Vrjs_SYnsSkC+(T3 zlzoJry~T8u*|3^=cf;$)@$_^XhGMvJ3U8Np8w&QEq*A8lGJyZbFqARnD~#4+5#xig zH{H;G2QJZp3PS%BRryLe-wBhRDSNR61v;bg6@?}o4i`ijo{M*>p{SE1t_~l?)gd8V z3rYB@lNb~*5j4p~jmMTVyH#;EyTUDCgtV-LC)p^JyuySuA2>8V8-0cb;?*WP#SspE;*%hhD` zPk*Qu$=E;)Owk+O^e%f-u2E)+Hao~OBBcE1&_-Rm)ed(QFha|l|A{lU z-uP|Z(J$y$48zA;mW{AHL+J7NXK?ab8rZG-uJbKugtzm}e7jiPj)RkHu-~F|0@d}P zLi1qwhr39JZC(ZOYZez5tI;-b_P@%RoEkX(V)bb)@-?#nT~cEs`EkO@|E& z4|Spuroev5>vDc6M!YwE$U7c5Z{UeA-;K7J=SBmGf~Ox2tZ0hND{N zl~|vO>z{N2>&?Q|fEivCWFjAqH0TvG7E>ty)w}?SFvww1b1n+3v&iaJG0F8vj~!Ko zv-xrBev2?WEGG}E(-W;ecmq$u(Px*GTD&sB#TI=Keh2?D`kXIkkl2xbD$#3rJZf%} zhMb3<)2O7SfmVyJq71@b#_S)i^@)0v-?1+v5j&K&w&tq7zoni(jM zNYRqHQC%y!GBsAR;dSNqejgqv^m}kHQ{uGLiB%)CnJ)Jek zLB_HA0Yn zv|6PcDaD}`tLm&JuVU2VxP2P=^AxdhP8-Dtht2^KI8Uxqj9#(H!v0i?(YN_hF^q@_T{DAy0agDtnr_4SlzFWv@B3ir}PzzsUZmfA9jzc@s2LW zMju&g*1^f1Qh?xiu0R+@6v^rrg?9J9)Y<26ND}}nmCrw|!qs-E!ime?P%&_gqm6~y zpkV24eRxC_sm;c*hyY{Yjhd3xrg=N!MVYM>BJYK^V-^i8(PlN$Yl(4mUv+lG9SsCp z6rCZ?iktRDJNObT#4oi-FN7qb`rvCUIG^B_yng^g(WzEivP^NIpVdWZDoDDqMO2v5 z|H6zd!z1ZTad7FC*u)8;qqNvh3#1`}xF+-T}OzW@|izdRCrUj5?OC0r@^@@^R zwa88Nn_Fu!Bi7gT*Q`RhxQe_?2Pu_O<#2v$S(ncZO(d^+&W9&z=fN8`6c=56sUO>9 z66-J|`u1VgpCbf^xAo8;zICFP%nOEC3oq0GH2peY{jm4OO?Ogyd{`cYTJ$fj^~k{a z&yUA@W@{gI8#<59&p#Owi85?o&=LIJePzO5-BB>Tx4lev26iLPBh0ORNfi$Ik>CP-GU!e5F2cEfRE(RUN4G~YQ7c@<_ zswrjqT0d5bQ86?>3}Rl=8PCG^fNz)R%kjrAS9Ee#r?cZ>0miTT>7js$gK6Cj9CNUv zk9PFo>V~LdE44PihB#0lL=s+mo=taYE>B0(wf~`|lCx{py8wQlo98~L}4AMQCRVC50x^MfI}PO(e@ zOIoC#HKE(DLRS*+W7Q$L<7mC0Bx}tnSCc7e$4Cts`C=yH%sRjp%`qN`;6;jq@#|c!II8H$Ie7Male*X)P36xFNF2PIMI;jlM0f4Eqeu zGh<_)yx-#6)!!VeSk(_cxxXd0!}N$}H&fmUgIlj)lqcsCmlduXH7;67IQ)V70*Dw| zoD}One>nF;oVXCct9ykhF#suvOfI9|4+tKjjYT&cbKzIp1((^*76(O&7xgg;L1@Z#iTB2>+V0d0*nYJoje$YAAXQLxYyJuI|>0c?w;26118jWt}fl84F_O2izY(R zht^XQ>AN00B2mhebA7HXz-_c?@LU}&c3^Ziz=ki6tO+*N1vLzy zWG$O~M^jdC8qgziw_YtTzdE%>Bf1s*fUA7+vly$giYQulHg>ADraU%UKDI`e3iT3- zo>{hoZ3^jfPlfpBrts6bSx6c=9nVAXYyB_#70Qg;(|qGpo3$7J6i!=2C1dECbhx#@M2i5{gABgfa{2bl7ruvoH-_P#T*C&*_XQK@OVt z=HNy)q{4T*-aUfjv#^V46j^u?+?pq!7w#l;VAgG9D#bj%GU`tzSv2H!`-F58M$487 zB;8QT-H2!3vl6{SrA-VaG~EvM3jOuxuXe`a-^` zxm93Lw&t-g0BiQToQe))*kVu6Y3OZ#RjoPApRfmuISNCR>A7Jq2xiQntS9;xKz-=` z1-~wePMbvYd0l%7@jErhuT!Q}3r#1+IHY4SGYEgK8`<$r0si5tXTna$co&_!ZVgb7(U=yl-mp7*=Tu`Du!JwPL4mQK@9^@< z@w8&7^p98w40$L5W-g3V{w0`PT4t&q<8YNLd%&0>4T{N;&CJ;+Hz}rs$!f7XEc3vA zRXQDD4bAAlUWegS7D-00?4$8S_g5*JzP1dX`>e~|o1#kML@yJ@Xc=9Vq!}7|+XnXo zBhARKtm--E-3Y0r-J@xYH`S^MX8upGHd7MOa;pLZHE2&eH*6u1Ddm%2(#sX>v85vt z_bh99bfy;4k0abL>Y~dXOSyQLAz_RC=IMz4Xq{^{aC`QL0-!VKoJ|aoBfs&Q;pOkA z(huO^iJlMqdVk2JkSYZgDsuW9K5?Bwt%YioN7U;XS4MxctyTn^kujrd&K@@fBYs0 zlg4hj7dOkw&AP0o$M9df?J8DBlpr$*qDq?fRu1WDolJQ74=C0ikJZ(_k*niG7J|l; z+vw4viDhdT(pAJ7%W}US%|6VC$C3mIRtPlHiV6iUJNXIX!dC22s+^_y4*+rIEqy)I zO*$RNO~~YHPN`dMMme4jqBH(2Mqhy$Xh37UMRw!kd$?Xk7410_%IwP7IziW;Va_o) zKd;g#a6KCxiXvVWmFx{_3p9;S`R>#amo34R+0ac1FvYmEn|pw(SZvjz(QfX~)u?LH zQG7+=b0osGnA3j?RI(UmbNWh;;05XciihD3yQNR8j=^QZ)8k$h#7p1Nc+y)30=Xz+ z@mh~E7T1cTo@K`ce30d}lR8@U9;7C0w;y<QWBsqnZjCD?>M36p=(7!YBl6kY3@C;4HQ6Esu9mfOI> zRl|IOaw>+L48%C4W*4jl)=dho3N+c+E z_5!Fk3z_teIO_w#a_mb^(T}5#DeI4$-uSVHIZCdy6`7Q@jkgz&En$i8pcnP5)Opi~WB|;W71y^B?CwX2F@`sV(B)qUv!CN3eFo z8mnA8f2C8nKhgrg4ropkEp*0#3KE*@-H{`MT5r2Pb!+}7<2`yE>G8rsCO}V&jYlt1 zZin*wuhgVzmV4a=qdyzr%5L$5DhkCa>Q%9DSltW8Wqw%AqyCzN4?69u2^LP@p8~X{ z`_?r=cv<*gX*=ZW_-6|nKd<6%Q0FvljmOMv&O@H-BTSn>tZ`q3SejsB&CVDwr6b= zlVDEa^uDfzn0#M;6H$r44o9NlH`FdomAZ|V(MTB^CBwa11v^%Y!j!W2R#W2I{!BUO zoJYNnNI~lx+8+r;EvX9PyIsz%SkOn~_-yDjGgRAhd+m9a&Y6YA{184-a7+-9 ztx~_TO&YzKjUAAWfuukquC$;?YQ^lZBLEDLmc?D~=pE82J%-2o1l?in)A6vbOF;dlKvNj99oDNSbq3!WY6MBv)kjO}c^gdf=h*GMs zJMtyE@^P<(>t| z*DJK30%xm$8X!}jt2=7q2kYwF_1A-B(WPHB!O@svvF8G#N~L+3oIrCQ!fXk`vZYI| zJuohuV)VL5(ezMBh}FDStyOP$t&68}YU0kN62vp!b`Z=4EFM;(yQtrLb{zT1J}9c2^_IHKT$#s$b?0%da{g|FwEFwFFw z%(zpt9Va7rkX+~`Foo*Dibg1^8ZaoB?vw#S7$+FTwi9B!nx#TX#h?uyDD| zWy>pRQ9b9+e`ZSNnfZs^b$54n;mP5DdGUMC-nDc-`^+?v$XR-j*}IG$=%hWq>2&~C zK&ZbALJN5B3@UKaF%>qM#D(Mh9o5Nu5B#By6#}Z#%(cb=*_hwPFTs%pW_sw`fpU z>=Ww#;5J*0s#|MaR4*D{mCoHo#asQQ)~W&v*&79_GN;IGvB`pcsMp(Y@o=~Ym_c0o zY*>327FK+Z(d5-dsaRPFHEM+`n!jg*aBSQ=&1ONG{#c9Ka%RXxZ?0l*<9+imu=d<0*f`FDHxJt(!cnvuZ=AZ!y+C44zL(u(1N0m3Bl{hLiASIvqzo1{d|h)mU4k!a*V8!eim6 zUtCn{R*lp&>i~x$;L>!n@@P8hhX=k80&B#GaP5l%-|rVjYfi zID&-7`R2qT)^u68Uh~owo3MaR0)008%^r}iQchk)Uh>ebqnL^^!ZQc6y5dpCk7Stq z&5PNi3qtg#6IW9ysG~m%Pv_$?eA;iF;^T2P9?}FgVjpd(14v!PHkHhT;ie2F%S!lz zR_cD}O8HlZ*k{M5ySw$5Gg-Bj0t;81lVTx>cgPZN6j>r89{ST^ONqZ$kdf6^Rd>-b z`9}gY^jvae%q2=z2`QboJg-`9c$I3sc~NULE}E4_|J*Id@qO@9Pb(0Zva(WwX2=hP z5L`wRDHcnG#nxX;2PT>REkJOG0^-&$_;I=PX#(CK&JL@iE#*aHAgh*mC*4oj&Bs4M zcAF05p9r`fc2CEZMW-(&28x*-r)0xPi8FB@=lZaF+FP1T49Y?st0`s=T}0n7v2voh zkpj=gg>x@Jw^eP44qY^#f?dvlICDEENzsmREb`F z$7u4tDWz)`OyoReT#*34Dd?_@%;T8BO@oSS$3_03AOOeX6Oi*u%ifa0G;|0X6uL1R zy9e*NDaz2YCX`mn+d;qh@h9jsSDf#@bM(;9JW`RlXVjr|TRotbvbB@gW~FOZSc)Oz zI)1NzC9Zdi!zSaKQXok?Y=h46PQ+-U#1U6UxazDM9fSOP6t8ODJ9@sl9L2HG3xsQP zpq{PcI^DuPGg$;y4JCoh;?peF&BvSz-dbywvm~_&-RbQ4rW{B&T4{cE8?Ogq&{5so zq;PZQ@U0eRqZvYacOo}YrJHB`wjNGEj+N)J;#5p6S8h91w3G%;t);ZP`0tUQvT{7W ze;&5yHTwnrZsB2dx1yPJu~OAr5gw&ff8aBp+H|Ny;^U>6(LOebanQs+N-@E`8((;? zYWfA51?W&LfG(yMx_Wqcic<=7?V;rU_+yLhB6goB&3xM0juCJrKKu~vQ-2y0kJS~` z08N*Ep9+fCCvaJyaz9@maFz`2bA8fupw6WbMQBo-D6_K8rEL9X?Jp<%IC6wYl5QM; znM@g1 z%U4<#Te$EItzuPhW}quL^RQQBJmY$21bPJ|$Qc zDD8Bw`W&nr*Y^+e?Q*j^Xdx=h9Go}IE{7=03wt(nDnC?S_@C>a*WFsR+b?urMf%R~ zUEfRtPPn~`i!6r5tHYT*C!DCb9ZTltqGCe%qb@`r(;0m&dZOM9+gBiSIc~EdXQ1lk zodEhPTNmA{3|El(zO&n&DA>lFm@)>5?Jcq_5a${qUd}9wB$!W=FZ6K{n$JeYTl#bc z6<=o&L=iyza#%5N$#V`*w_iiEnV|o~?Jt7Wb_w;ei&|ka@vp(04kn!vWGK{j3DObA z!@>l77R-iCttzTCOzGPFc6V68VUs5D?S1fddzyc7YPBi_4{-SM9QTKsTl3uNMcu15 zs+HD7rPgd3`jJS)$8344g<%i?^#GbFY^L9J1^bXd6!}w)<=H@SpE zZYLro$Yfsv=u_8RIEtO)E-SIS1f@ZlI~krur`Zx|K}4`#l=yubz(uFp`X=#R1}yyc zjVdw0HTz~X5iAc=L6H^q6)jX=TYXlV@ni*Lt5&D#Hc`nCP0y#riKCSmmR}18bABL7 z3yf6i%=h!#^=5rq(+W`Jq4Q1~AVyZ$!IvvR=mvKT|2+RW4Do_p3nHlj_5+KVnV4fR_NtNRX3Aow}meOzt%7pTE= zJt!t(Lx1{iGN%GM?nL>G3W(=tPF&Qp9HXMsJ)pWP)~63gksB*FfE-bR z#Qb>JtRKUZBR}XSpY{>3PfWQ>R7m~lL^*a?nUy!tsa2$)+P=Et*gq0arA5n2^+4mG zzdxo6ngb;K-}OPwnuZpErOWLUAx~Vd$vUPht^YM{zoF~ciW;Q4BU;o`a7X)oO2FW_ zt-8jbS_u8=F$DmZ;M_rR-#XuZ(iq}c~-cXYox^p5^T2wt9VtcnKH$n%|E zW8qW+->YAr=9>uV%#!t?7_kH0c!^-J+I%)G7#-I4>n)`PKx*|nh9}Z#GZ@|VkaxUi zrJRIb>U$CR1sC|*;)=TU*U&6dLg2Z?3*W6QSIR(RMJq`&98SxXc zqt4Xh`G6jLNo#JQB);G6He*_f53bYl8ig6nMYJqYuJ#Tf8c_ol8QG`tbdu?(Y@uXz z_0B0m%032_WoQXP3!$~~gBWa{Au%RKFQLnmXqCHu>4Pk>es=5FwO zo#X&r_K7dQC>+ua3t*QhjME)*+MUfe>p8dj?4ukx!jVH9ImR^R|7qItb@muoQl?tO zzr{?!jAtrE8M+x!!X`rL7r-{xYjmf2DF$nH?J>n_(5#h_6yDOZZwQa%Z;MC{%?$n9 z*N_)dnz)G)6V_!IhVe?N?aPn0KXop@&K#167mi8I&77|qlWF@#EzM^{GUEms+CI$o z(0GoW^9<-M?>%Kp7l7@No5nDFKzSZzy+C;MAtmr0kOjAC2d4t?0{m;z7oPZR+(q=s zHaQT&Ng6via_gb#_eAq@xc|I-_G??ml{H$xKnQ~PTxtl!Oq`&IC;`9#Z7*ro^UUwI z4wEXIWdM?P^s2fp`+33Ki~Zl$$N6!wUYA&v75{$c{7>ae4Kz7hAY*ubv`SbvqDNsiyg+ZLV{Z0^&f}Ac*F6j~Ju)`|{lg|JBiJlNseC1j^ zyb4hupJ-c3S$AmKxP7`$YFp9Na8Y==WnR5g^&0i2a6m*(37sCCh&&V4tbJ#$*H7q& ziW^l^j833U42LDFb5X^KRPq%3+bIrZhd!4<*1@DRffpf~VDEXuMz!y^x7B*{vkO$a zeqH35f;rH=GQUe5#Foed%-3lExx^%HfUei(Dsb^z;0%U2pFrHF)-1S5PUZ7pbq0$zUT4&g+lH~j#G7Q-6k$pIee$kcAV(^I^w zi&_B>rvOkz%Z@3;?JKYgYgr(@-_cshgYV_GRn+3j55|ONz@g)*9z?n|Rq+mvYN=U;7oXl4rYVrqO90~u@Fn$pGV{f zcRSplB8foJw5^BWchEOP{e|OXZqY{$J_aoZWcp}G_iTG|J!A7#*p)yhE=nt~)n~sq zk&UC+L0xTTckpfe@5))_KSo`ei}EkYOUprdx^8Of^qOw15jI=dPRdPB`37o!V>@Mf z++x>2zT&8+j5V4N>UHIwkVQHND)g4mJ{iuG!uEX>$S?0A!x< zcDwvR4vUPPh4HHWz|eWse-kC&`lUhSv6||1_p#UM(5Gi;tcJn*o`MDbd`fRAs@SgX zcc(RH?c8F|uTr5d1M&vVX3F{%Mk+?E0(k@zSs!TO+AX>I%jH!XIG2H<0+(=s8f%h% zJP{&F;46(APKxuSS7L^(vFAh_TC+u1#Bw!d602q?V-u?zL@1jf<^m)D{h@@FpVcJd zk5MdzxcaneLmz3{0whVaYPlfDknTh`8e=gqgH?Is(%_?(XrsApFw#QM6e9oEXrdf5 zm&duty8|iY)tuNEFgUpOJg8XxeZ@%1!{WFX{X(3!gRoKnXn`c&(Tw+sh-M&yBzV3|@Un&@VbNOVQ8B$$M3e3rl%Uzs6{KHtmSPbYyiUWt$_*$$(s=NOjO^>P-82 z$-8xkRcyCZVzSj76523jyBw%Uv5d!eJ8r5B*q@>d+U-r8;t!kk?eVY0gtCI&uzIbu zLfZTCIc?!sWvH`1#9{*7Q??wU*nNNOITA>Zx4{wwz3yZF9Whhp@aV zZFTQKO`@EjL)TRsQgQBJrQ%V?Flz94T#=-J>+LizW)Su2j%bI7SvPIbo#{h%=@0I7 zH9@0;E2;k}G7%b$z3`VodqOMDl%G4L@gW{U4KqpUuHOFRTEyacx@3KwDxhp1241hL z$c<*hGP+UfaGgotsaC341?v|?lk#9VQEZfOYw|+0u%-;%Gi0k8eN{={oT`aSS$X<& za9VUtyNp8A@CnOln7%Zg=r#vie~)a8r3hnuS>vPD z{f5}LKi}R@QI}~nYch>agdAl`0L(T;-0GA7&;5&IA2sN5kW?;oM*~0sT#HTp!p&+k ztD|P9tX~#1Q0iB5mmrc{Qc0{lg(Gbbcj;w=n=n9$7V3qrOBOOXZTn<00}0ghAmrtTt6= zb&R=<0!3BGgjlc?Fl8I<7d%Y=aLj&H}8qvx$^u>eazOe~ImVai{l zVMi52nConOyy*pHGsUQMLaX%q_m%f(T>1kg6UzKJOZ5WuE7wS42=Ig1s_YQU_nvO= z!6+p_eXdz)^|N#eUiB;{-jsM416my3BLe68{O>csaVxy!>fnqXvW}{z2xgiybvB-c zx`A7dcuvuMt|6863#01X3pyisldJqdVKSRcac=Qao=%}gosaEqFb_avprFIrcq%V8Tm z!R+=bi|p8^8>dTC6()^|PZ{JeY{zAGTP;h!z+{3(yTFVTjgRC?ktepG?al=j67CN7 z^X>XyQea|&q((~g#=QtOfei+*&>2F$p`CxCO|g``fYwF522;rk@tW=4D3K`*hWGJSADK(k;p`Jm=hK|yBi(0W{}rYL>f1=77 zn}J!sgszeFOjxX5!4@fEkypAp0-3<~bS?FY#2fM+!Qv(lMNc*w;JzJ(M$Dj{52kmyPHC@T>l)Jv9qAy|zv- zzvEB%n6ckMyFnfvweP#{@Se+AuRleyO7AjXQhtkCNbXnL)q(HUNP;us_tyG_xc(k% z5)=UFc^keT^yTT+Qifefy8r?wU;m|}L^@MsW+}H}Y)~bNK@$BAem}+MbQmopkVrBr z@-#V!`BAt&F2ut9?8GavqZe}u40t{7@R{HR{H%okP8J2WO>y!sOoGjdCgX>kS%xXv z9*o1Iocf1-jIMe}IYM;s;rpXFest=(y@}QWeQj;tepix?+XDq5+^mlvzTa=37J3t$ zdhU)7`%d&SD#yoa-%hpKN>Ea#?cq&d_&(!z6H57Gs7mPZF)fnmQsPX39AS)2$EpT7 z7(YBJEL|L}RRvT)!L4?Od|Xxxl?6TAN4dYGkfbDrvBWU9(XAl2y5FpC>34*W^Dht# z*lj6WaVw>8x@Tc9wfAnbqi?po$M_kIU-cz%)OLRu)8bS1SU)+)O@sN8!xN{7e~WQF z4kc-8Tby@U)wY_d0Y*(M&z#wL=8UoT9Bv$ zM(3X(!b>S$72MTumIjY5a@U&zDdb6jVpJoI(!EAKTVl*%SGi8pC3C7x+scCewVf=A zF@C_*AB_9BV#5(GHifio&1H+9WYCx&SEq;Fk}`@;&fj(Uv{UhpE!bO}^DVOE0l6$PVBczlHWKu8a}0)IiD zm>V!YYbSfkxN+a8`Zh$ACjOP&y3Mj7T@D~;+od;!^c6oZj*H!9lLTtM zkRxTuP@DWHR$j|cw@H`P$_2kaoD8p>S~DXSc`l%^!x8x)Msk3^gFKuqYe1`q_)vSI z1o+uh$~Qg_fqLvtk>I6Ly$9ys`SYLI{zXQ8cU@N1_U)p>GiZT#)1mj z2ZokcO_5SWA7?b1Kd=32j*Hbt6F`vX98@x)AZ5im&}uzSabd+uMmF$1tWx}NQK2PQUJx4;fcj0Pr>lAPA&go|{;m572 z*Q_K>)9MSM@9Rkl#vKCOgou-zLpy88rHq6k=o!CTA0FS$*C)8US|SmE-Nq!5vQi~m z^C;ra+oh5DX0~0Q;%ZWYJV-^&4rE(#t@gowwP34GT9P^GrAN72RKjh%oY5(OdK)Ar zdt2pbtDNojm-FNLNHJiJv}A9i%4pnH%A}Wq?zfn%9M2U! zLV7|^^9@dqb=n&WAvPXNXWd@V5!TxkJ)2Gqs-uGueSAs1=u(_L8aTf>W_voa8V4Ol z(_8+_VjA~t76g`+T$IDglrb1lUP4QLN3fZq$s-=>B2*A5(lOPHQwwnu`GeZ)^)P@? zEgZ@+ZOo9NfG$x@B`7>vW@C`5$0i^lmo9Ig?(AMq3e3UfQ8SWh3M2-G-^Kn6QI^tKFZs}p;+v@Yf z`mg~T$!RJ>K}>Wb`lf@xIF2a9i-|1Q*Fv+4yEnc-k>8_W2qgt+Ua6*iOoP2%EzD2` zuZu`J#BMLjspmGK6ZpqGx0&LD|Lf;gJ(*Z*4w_Ia%T2XfP1>72%)ytZC7*>{BHSE3 zDHYkv=sAI|e0k&*LMd;^hV?v-XO`Km32z{i_PVY}bbO*Ag8Ab_$L$|>+m+>H#dC@$ ztq0)`YZ-8)eS-VRT8HwEm8B^vcO)DGXc=J821L1_XDnXMX%J51MI%IQxV@6S zG%GQKz~1nt2loNGwUt78yNC8G1vT`ETG`g*(R7s&0nr>(+SBZCb~w&0Jyh9S;$7uf z@{Re81L1NBZ?WXaxW{X}*bpf8uIcedoxLVZGi}eHSggDPAf%B#JU89BdcXbZBV=4M zb9=`6+AS{PT81+81J>Z^f(Y8qpE5ouU~2#v0S$Wp^f^UL7Cdt!r3`EhC?YKApK*;jLE9?E0gr z|6Xx1JU6CyZ4Atfh&PZ!wumu7na&zRC!Cz6h0KRixkTOUdZlNo!Ni5$Z z!??N<^+>7o1t;=rS=7hGo!q>NZW>!^)yuGB0LLkuQs5my^sB8T z8(NxmZnG8h%i!~oQ7niZU?=&}2QtLgpK=o!6XA{EnkWv?FT=3V>375KY=EF4ddYu5 zqEg#vwK8moUI%8$Q4-+gBB|4#kTUpIrT*0KdYxAPB~7Uz{eve!a<01Kj0+e-SF$R$ zB}aF}Mh|p?-r&MjxNb1<$L-!E{AK3PVBZzZY3<7%6VU0k>)K{1EQU6}T_ZXGrn-m} z&n=eq$rHu?-9x^l>VU4Ciqzxx)%QT$6~Z8qvz%Un@~U4kW6rz7G8Z znhwNRT`b+;{t(&Ep^6aODvY-4`wj)pC-~A8oqJW*{Q3vzmN9mCr zPn7Tg3X)S?Xa&TIz9d7htRwWV$a6-V_*edf zLL1*X_n;glx2PuwG{sagfF#VaM#!z&6zU4d7OtUPfTyC1VuGdWVxgI_&9ey0a6V;V zzZ6fdKEa0jKgGHZ93>QHrYK9y&mMT#|`D1=qJgh&hP-zNI^T)m8Rhwq2zNFs)ZEiJR zd*+&m6djZIS-b*5%Sea=`d&%OA7psKA#3pjP>!%R?FN+M8GmaVDsqbb_GXm*-Y;b< zulkb8sbDAH5w;6^rj%UNF}dR+R2FMyZ@BQ*ydbRq>$+0x{>68 zYu+-EzYqXMN18|e3TiU52{VvuYL4prG)YxGJxSquCyf@79@Q!D8 zmvs6@;vx(e`#nuv(D_8Q9m!F{b<<(n3x7ps2*+J3@mHnEztigp`PnJiJ7`JuM*%Lf zOEJP#*q#o8w;gEc%c}y5D|6AHbo#`O#`tmm^XU^VkOQcX-hPsSid4Oi$0rCCZBEj$ zEy_T9!xhpHksocc>akc03vR73Yo7@(FK+W}iK`KDnU?$uj9-_jF3|H_=ng^X5W3RoR6EH?wJ%r57tr8wJj3 z|G15Uan%)^lLkm=?%|kn#;H?u_VWY0;OJHI2po`;7(^W2w#DJC;YOq5l@V+h&eWZ( z^9Gs%#jgY8{No9&_VxW?b$U8%9ZhmpZ{b@%YH5$#Ls90tP{2So9qbJq>$T?4sitI1 z)~A%-^Af8rcCb!VZ1^e+TogRptH)Jj1n=}Me3Fdnx*hB*aZ&NyK&zSq$IMZ)+6+cr z?m7&hKnLzPGs0QI{z{bW(U(SJP<+T4=$xt4(R7M5eoo`(G=7fpa~>~7KHF`IAo?&) zH*VT+TVVi;JvK`hTiAf$VT- z<`N9n_RnT!hhiIF?~HFlO>1fWt98mFdfD(!z;Ct-?X{= zU9UxW0|6({KYwgH$ZE-gCD99-VgI(``)pS~+OM{_Q1c~4yvI!>W^gRYy0ux~9_ELy z;d;A1mC8|{R-&@-8)`4fx21#tGQC`tUU-B zq;EiZICHCFm^g<^*|t)0y2sg`Y9GW8EWN8m3m#XG{Kwz2+D@ig!R73V%Z?OnQwX4I z?R0p7Wo8B+#uS+D1z@@N|=Sb-%?(z|Z=uLGymK#~a4URv~w$!}taA^g2jmURY12aGA;jPEsz z-_U9)PiiIGqTGzx^eXnhnOxI7`vo0V%kFAJfzRRVK%l_Qh9?X0<}^>#Rf`#e21O=J z3<=Kbtq53=(_}N9Fe6T{O<(~uSkA-!X1-XB?k?Ad(}R!+m-BOb(3r^wxX=fVv0fSf z$KRD1{)ZzGSkTr5tSJsHOIk;0Sy1TZq*UQ6f4}vX%wK+bgk-MGP^6nY;wWmB3Kp?i zP+WJ5rpE2rA|}0~#$&6Rz9pgO1%xZ!Vj{P+DT-Ya(u6TZ!#7I)P7P(V@nCAZN3%>S ztE74&AfTu@%8TBhl z>Z8i`XO;N<@)kOrP9_EDiizRTY0Wza{1sL9z<>Di>GAPv$O|qr@Hn}T{1zGQ>J;TC z<6_tQ<7z=qoBV{?ZU}uE1OlQu>UZAWjK-``cu|e)#`rdpb~zw-&)bb9jmFHIjonz( z<`wrJA(=DBTyZj3$fn(eT-9(SCGd)n34qF@m}IlNzjLx`S$WOBWZlZ7>(Ui@+yN+N ziVS9uh3t5BoiFC$J&HrTtkTvwZxs#BzkkyXZo=+}775(2jO^cq!Y<{@#Z?r#vetpR z2KD!tnw#RX?Dq3tpH|2~Xw8D`q*E!h|%N$h(thoAYSjJ zV6DrdV_was32}Tte~ROY9<#``BarF8ni^DHo6f|pq{fLJCwOAfVk4MuIle!DyP2i=i3G|(ZP~r1|l9}*sui9yR z_sPA7St&X~lS7!p`~BTs&!j>Y`9gQ1WV_j3r|R)otj?-#-&p=}n3BnMG`lSzk@DPo zPM?~OP>vSBq~)44u`F<-Qdv~~I2eC|)C!vca~C6!LZK_>*ke#?wD(-sJZVq?p$CBG z(W+Po!d}qrO-d{n1gH>g3pJWY&SdC{4oOT-c`e(-L1$j056~5gTlD99PV}0lj{Te; zll3;dUES>td<%2F&MZRO`cBOb+$@x_!so@z3F#KZtlT zmlA|O0r7+pIZ7>8DZgl?i}bLnCwbMJ%1HiiUH$4$-UJu)`{;9~H@q~vh10)~gVDNi z{Jc7zY{6Cv*fCoVZi1rmQIKoJ66|7i5M^t&q*7dA$$$~`1!Xt_-I8OP`#qi&o|@o$78h_@v*>`0W~QOC-Se||ywviu zk1ZEAt9s26)~6={69Wb0S`XyxBd0pt>fy8b!XX7Cl3_##^`&L#AMl4G zHOYr8dU}nYm4p+N>#PWVKF(1iN46*tIFB}&EC?v=hhmvX0={x zpu2cQ6VX+FNe)mwOErQinKvjH3^7^ihSd6R5|P5`=fXE=}7L2IO|oTc&w7 zaBxW8&J_3v1;+LE-d3W(!>TF8)AoCq9*QxaQ~D0DL2(wn-abuM_ba*w?;cNlql(P1 z>V2W(h;7sFVUm>!B{k(QE}r9QQq9eDIu4ZSfRb5u+>4l~gGfg|E9sz2QFN_QOIaL5 zRQMPI!N5*dt7Rz0c>4q0sNvQ6K+8thpW|QVj-7>L+EaEC60=f|Exl4)HX)RlD=XXS zkLU>wJ_K(Ae;~Ep8dvGqyp7AM0s|9L>;8e#%{&RTMqg90yi6*Vr!;p5(>RgeRq`@} zUeGBFuj%4DbWilgj9--pHMr@Go$5uwr~G9yx@KE12yf(c=`VwK?Xg>@r$^@f#nnq#e{^gaO1MhITbn|Q<)y8|zx_qZot zB0qF*;@k(u_R=X%QXD8`)VoynHwDXpeuoAa#bg^ra*gI;wq0x4gwz8~LS7XphMHT8 zKp!KECF|7a!4IL0hU#P2hcTvUkK!v~x)jNL-psHO^eCXb?C8at7fMwuj*TWQAT&5W zvCh2!Cr+(%XSPG+RffI|Luig!cI~;eqUX)p4Gy0pIqv-`a0e<0$4C12({4j&mu{s} zvG}*Y{jK=8dfXkp7R!3NsAWzUwQ@Yie6_n)EbC16C?Wu(>3i8-FC-|4Kr~dMUSQl7 zvpdwQFjR6}oe8cQhd`M^Tv_{pD!in>bUGSQ@-enHRIqefZxv)@x#nbmW2V%opo$ZY zGF8VK45y!Wou|X66_6&l%?w+QWts18ovcAtFHlR`VI}0o5;BZ4u5Buqr`e<8;qS|Q z2sctt)C@&qE2J0v=Z7k%Jw1gdr=sPq;J>B2%eMFk^N1)z99ZIkv|?9lH7lw=9@%4? zV*5B{Gb@ru>qt3mYyX5%frw%4GiD%?ccLf9Ny#iCVcA8R2Kp#3ejC#La|Keu)Y|P3l`4ex(!Lg|~I$bP~&s3jg z%Pxqj3pyEbb#pRfHXYr2m2}PHc~)trH_&1AX>~ZR5=e>^IOTT%ELhE7=3V_VM7crC z1L2ebmkhJbjr()QjpPAA5bAK@|9R$?IWCL3WwTU4rB4>Ixg}3KtRi+XM#N&85@7LH zV?k0;geuy}SSTn!ecWxOvj7V;4rgfvWdR70GQ%a5_)tTMu)r}|n!6$ty5lJbXMKYu z2xY?ZXN(o<0*aff} zc1PljE7M;Ojye=%P_*VI&6%F5OsU`dBNmwY*D}yHXd$e$r}%g@ zcB1h!$T*+Ehxzd#aA^I1XQe37XmRADCw}W z*^|Np2zko1bd-pH7BAc`Ll~fmF}P>^QRZ@-I?VbAo5cSrfJzpXUw{fs-FUjiYBgAI z*N;z+tjT-&N|~duYPLIyTRw&JPxJN0YJgqT`ze7JTI1IXr+CRfSmZ@}P8E{|ML7{$ z%AzPy0g50{uPy^+pr&$bL77SfC3}=hlyPkWB~h3)s5B-L`|ugGXk@;F#w{!R?9QL8 zx-kTtt^_WYk9P^jRhP02Uc}>WW+3oBXQ`CyB=|hm$%-6QV{8OMpj2+ef3s2368xj^ z((8%pezls_-9l;+z{1Y)YOVqz#2tSCMp&QDqmiP`NXhoWvUw<)Fhnabpi&=bRVz^j8#IAGNFY>%Y24qpZ-O7)Uxzq8W&9%%C2`f>#L8;^?}x?WkO_=(hi2{ zq!l)0j{``a2$``*xtn2M&HxM^QL{Wx>BRzju600`p;Q%I#EJ?fY*dDe%JqD6&-y@T zM<_YVzw+EYZ?h*@R&zY3$(UcU&67RT`f&EIMK4r*MC?(zd5}nVW$&MqT)8@Rs-J%prYdeoeA|Dg~?Ff^7t{9+wRHEiI@vp!XBA? z!WqYZe?_^Rb5YZo>`N4?G-aMa$T$8kv))^UKz`UAPsblnb^nw!Y2)PlwKHeDX`4G| zN}v3ZflrTnev(bNGHAc?S+Y$L%14t@*rS|?F0cHIH~NqJU%AtN{Ph$*9o9~AC(uZM zTvK+7yR@m_y}$jqyz^{BK`){fb!dVac5|3T`0~q#aIw3aFDOq7>2sV`t&yRVk{=Ss z4lG9o8cOxg8`eCyITQ?0`Y80WMk5v>gIr_+WVEwrYJA`CykR;%t9a;= z3Np$0>FIzL(DFE^U^0s!>J$|*$Z>zD{NUX?j_VBO2gj?pb;icw#8Frsv>m3yYVm+G zr?*}F;NV^;CKYR6Z*h{)t(DLt8@ozNW^eolL06;C`u)gN<9#ufvJb_qc#fre;Kh8Y z=5q+Gt=4-s(p&-iZmg;1^Yi$=Vqqd`3xJRE%5i|AHKJ5?M$1_Q20#>Tv2YPR`BV+x z%;@`}voW4^m3BTBsanODfoNo7Vp~L{V!4FdXcc_6+UYPs2)P}X$A*`vmx)m9^>jWtwM9C4oS=1->wuBs-C9j*twmQi+lyWY+ZUo*r(vXoy_${@xh!?sd= zg{@x9Qq^4Dq^^Tp5+_Tt>eZ5?IkHvei_89RG4YDtk#~QjHRqE)L;ib7B(`f+2tl~# z=#j|j8#>LsA&W50hA3rdUr&pCNVnC>@C>CHr1473+q9ZQ_IT#Pn`4U-$y>;IlcWOw zN*^vV_M$tVDZ{G-URnt#=I)XzeOglSyZl!BI!DV)$<(uYVjZaM#I0nY*p zZ5AXHPz-(3WpGejBb)1DdPwFF8Y-GDph%cxW;M}%)AJaH-8C&b6xV#EXj8u|M%mZ+ zO>@krN4dK5JgEBRUH^&~kSuSr7oyZWS2Go{>W7}~3|cL2eD!@ubGwe{eH}j2XHj$s zpzf`bhtIUs#iAe+GLQ8~f&Uv9631Lb)UWw|kk7#cxH=q4cV`r>pu>fJ1`X^E4A+On z6diF^q5!vaC}*|t1mMM|TUim9u9(=|+p|svq9WV8Il)=6!p%}ChlNs>3RQGyrr_ZV z^IoRlp(V%#J(|PmwAM;AI>v6{6F6F-$a85#wRxA)aZmTxU$}4byX^YgXdNnM34ou0 zub)fDh<4Cn5&J?z7nZ9Pu3)0dpvtCjH6D|R?RK?UZ}0hD!O*!GD#o;Y72#1d3Nm(ZPT~CK*t?Rti1EEz z9k@Nr+cRj7%ULW6sVoYOqMoKvaGX5}Eh|S)Rd%~Km-FLlIha#2+Fjq>tykwav@|`= zw@lw!IusQOq1MDmJm=sJ37#n-W*nVWK(z54r|qrVazDA*_>PNyQmio2WH(BMl{Akb zg~X3>859aX&S!|^qdGM4vC!17X`!ix@TL+6+Ote-uvh?maEZ)29Lzti!homNO6jmV zK5b44ohTg@*Fnw5n{fZ1K&yvgumI>y%}~kX;|c;e^8nrvSSn*3m|V zm`>;ANC2&p;F-D*KI4i$LSvb*oyf&#_UMiAWfU-cxm!FvuC}MXBJn%5hQ|SKivFE7 zX!Q6&Zt;~3NfsMUp4Cppt0p<}xdnx+{*Fu^*PV_jfl)Nt@k@{M|F=7w(ZWvu?y<^m zR-aZI2C)Ei-Jvz;XGe}Im!02!vv3%)9YswR4OR zqECxtAMd9ltgpoXvuX$Ve?IR|OPgvTbTpSlDHSJNm(C- z2e&%>NdNv!BW#FaE6D{~Nlt`PZ5cL(N>Hdj8d6jcaLyq{ui^ZO)@6TtLf6r2HcUMQ zEt1;>t3`*Dj51x4Ybz}enoH-{aV|TGNq^3It#H~g%DkXX_uDoDo*lFsy3i4}B{ecl zO}}JXntl;O)3~{6*|bXTBLeGbz4%C5A6H+cX@VE{C*3h&0AJKIxsHgXf>OiD3(iXF zz5L>6cat;h4ssP#@=Xuo=-ClHp;tY{Y;|f{iJ2!t%rV?78)6WEMUk=&MvSRr!d%n? zfJ9J7+&TSrpT$JmbfE@LGhY{=maPj=6FM@ZD2u)6?0kwV5A_}tO_vm-gs1SqDKIC0 zI-z7e;DQpq=I8xtyM(7^OzOS? zdsc?y>U^B1{R-4k%%@FN>=-klO3@zU*y%C3JFMv!ZoYEdtVKJ-x(oC0Mno_&Wyh|HSqgHvrNQXTQjgwAIx5c63i$H_5 z%j;fjiA=7Lh)fkf)U1&7gyBY<3{`j2F>-5ykcsh9x#UdoHqF16J;97|Eb|Tq$Gzc< zZsw+q^z-9TKlS^00;ZiB?x$=h#9USN=2b(U2dvn=deQoX(w2E$OkVn2zq<4#Ufcf3 zx=#4aCuFGMMxSC5HL(-=rgE!(S7ynT9t;3ZK(W6a;$aud zLvvOn5U*6&RZNZ)W84hBu1(J>g)*fDvzu+%fTj@LcXigw3TWD+;IUS>bl0SSI`OBI z4@_i+=HdKqg{A`i?&IYg32=NsA^6x!U^W&YL4kdO0h>aj3oGZBxVA#6gb0`>Oqu59 z%cW~s5hYlvX>36R`aN@##MHRoORr1IjVsQK!;$zg0+k|8mDZIKok(VTeO??7r`_Z2 z5y=W=-8LClZ)O8azsY(m17d1Q+6K*7<(NR`5?PQv(Ympet+OiSF*)m~OwP}o(%%#5 ze<4FMusaM&8C=QZ;sK(U`zIDvcg!IcQ&M>*d>G*Bix$+yg$9X9i@rF%eAB)1ik4(> zXMR|AdfT;b9$nNcaa6$KBuD^e6r9!jB0+t8x&{q$Q>p0V&E*6PFWZzL1;XPSP#*1= zLA!5ioQ#KZ6Hi_6Aqacp4hLX5+@(jnlK+TjLx`-$JjFi`Ips|&Sto&(zDE7NS$)k1 z`scnSxoX5z$g)vpDb2BR%&1;N|M2jQC%rWVtZC@)+7v2vI3aZiU8szW=E%MLo~SBE z3g+4Hidp4Dyl-@+u8Q*)7lIsL*Q?D^&hQa>Z;P`Ze)yrR0v5KFrIp~{N{9u>u*7?y z_ao0H{Ve}o9jIzv=|hkI=fCOTe}~BUC>;#K@IQZl=EJvm3qBnwfrblbeQeqJtCp&g zk`;ZG#Bp8;BcJ969M4~y?)BB;W7g*_&a%HsIcMDYN9G^v{7pEZG@X{i(x&%`t1e5tmHA)hnS{K ztZ+w*#x$6+qO@0OK$>N1uav6$D|wvbUbG6~mCw<4V5TC=8%v6l1G;hB*FK|DpPf5i z=wZD)gP0PHjpBZ$L}MLR)^hy!tJCB0-ex;!fB13mChT>6it48y!W$G=y@p2@+aHXk zzEiI!7J%HDFu4evrA*&codS_(_bQyd8CXE+cK`bSXYEV06G@V6`IKn-ynaxPs)%6k zuBth#5+k-EK$+PybK)RC5|aohK&s4{n)mI`u92Q;*_W{hB^<+3kaseU*ei80^;_M4nP8R5S zUL4S$M9Z_;+jK3x(D=%xe{FMc{+aF;zPEkqc)ATN7DLQ(!-w>Cg+ZY&S#^KXC%A)v zI3VQLBd~o5wTo@rj&MMh!2wy8ibNVOYe33dAHYPn2OSH)ZU!9{vYDtUZ^7Z4KXlb7 zUoAM4b4SC;E4go{-Sgqq$%-RwC=}_gbozL#iy26_X8ldh(P`NTvjff`i+I@XDXiH& ziY0SVsX=3C-@T!~(n0~tZri$oB}u1zNEu2$P>Fc#=q!ClsY^;Bk=t$p^*_1odo8*u zIvQ{qndADN9`Q(jAMDpR_4YB!VSPS+VX1z zTGz<3l`hk z8N0SpcXynIGr65fu1hlMh*g^tIAi3UKnn1afCqC&xF9)NgRLKb;>ebJV-x3c0q#ga zHQGl)JO8%%58cp%UZXx}G8qf4>$jz{uf?nZ`t7Dwu4nK(xVl9EQf=%hvN{)P8q=xn zH;yZ*e6!_AOV@Op10-$$SDUt&O_=@L9A|S1)?aeEwQ)+u;ILhPfvz)W zdaiyxt`}Rt*kF;a6}`npZ3~0 zyIw9=YvppWR;m>nm5N=pD}s$?hAQacF!R~+KAZXNdHuY6I;wg#+7qy$=y>=nlT)i)|%9UZ8~3#VO%JRu(I?c z8~8yV0zZg>Ja)I3;0HxfWhpF<25L;vI2!t)m;0U!6;T72w_TjhKBI_1Cn9hpt?r|Q z6GE!hsJT=t>@=S49}nJ==&zLExyTzeh#-Cdu(}UXrisC*vHrlSOIPW5K5e79)bF(KTiELTTRo;7g5DfHDM+|{(4K4P0oFXWtQU zX?b(WP1~-4^zfVC=+=|F_w(w3)BUv6H_GMU#-l4f{@{(tduolRvm6S?=#_su?timn zFVBWsxTV-~u?C>rZ)AeD0+6Y?S-18k@xLr=&F4w$zBdoa|R!Az53k0D_^+>Zq zJnOq^spXk=OBBi^u-zWEmrO>m%}_wjt6x><;nV`3$ixJmy)medDzzJuBGj z^#|mMLL8Hp7|X6Je+cxjO)c>muop2A3%5klY9=}?m12n8f@KM%V5ZBM&T9DPDU*ZThZ?-d$F z_l^ivqL3mgiOmVppt@08sHKN=huJl;rhSS98Wm-VQ5qbL=?rUmiRAFNDr(n3DEclQ znaK3;jY;;^R}k`=cg_9);Sh6{;IY^P&_WiIe=D`3Kz25iL`fogy4XAu@H|OjFbJ|V zV3Q#y6PGOAb*09&Q)f;RxdDbptZ^Snmx0~sA}(&o0aDH$fq z+%Y@xG<#txdMPq7;)nqFx_+fI#y>OOKisoj57?NYx_7h0M3Kf> z0qfKmGt3=s0=XUYAAdARt$enwcNf`{*}ME+I}<6HKrLzzxA(Bi3ljl^=s*&NL2hKlVTGWw`W?spG(`RAf!3O}cYY$n z!e1+oZ^0EY`TdID`knL1fbyIHB#&aqbN_9nfY5oSYE8x$u@r_}k>CXCEqMb`P6zO| zf43s9)^#eQMIJfKE@K5`95oE|&nV{37K5^r%-g#f(35%X{4R9$oGQ%cY>Heg3kMt* zUlkcV-ep0n4^TAIJ{H=+tSR^gY3kP;%zKvjt2%z=Ub}u2+s;*rfn}UTZZRm|4_j@K zqeb5zWrgdi^)lauW(U7dnJ^+2?Y`l-yml-ZNcUxU$b-s(g(XT6_@6orC3w z0h#F44k(nh)L+qN{!fwZ_65B8YpO1{BzflOLzy-=l+Z`Uh^g&9*h;qulWmB0O7vQG{oWlI7IIs^1?Mn;nWD z6S{}bw$%_Gcll_l@9skF&zuJv-16_`+CiGq;lCGblH=c zkmDsGr!f*|e1@^)m((CVrpOlMt6ZTgirv?Mjv;6+ zNlFRD8&H^)Co$(PJ|SNthw+R?p>Bj)gK$f5sm`%ur8;Akcf2m0@;mQt)@-R&zLd{! zmqf%3!H{x8Oz)d7kw)Al7mkzWhM2`DNOJmSrz-nG5Gf$9X?)kSg3aWvr#ISbQ~IAw z7=Y31pIEevcJ}9^sm4@a`7LT}$yxZ+s32(W&@x;@Ioe2#&PV(kRLmS> zA~l3ekO(x>ipfY?$!|X&ggBc6SxuqM{H)p!M}=8|RWQPcY(&zpVB+cADaIXj6=f}a z9~pW$rxi3)M$7$ePFYNjd++1&spX}mGfJrI_;MYRZ)7Pj-4w^<3M{HOKOtl5ZyF>n zFx{TQ3uu(U30-@Q($PkFOl@lX0~^FvclM!6Cb>-p6~xOr1DL-$7}#}}dxa>&wB`A`)-I?+U-z6LE6upSpf*st!S-}!!3})Y| z_MGl<4kl=(R}rc7nO?U~alKbL!taz%YXnGkOH!GowTm$rk8kIbw=(|5)TBiJFT2fF zcy_R*rGQ}ml&-QSv9K#XKfb~WbP%$Fpr-9{4x`@&eU`ri=7`zYm4=F*m{ceMD3KBh z7#n_iyXL8&&>vvD5S+`hs;S$9q?qMbZU!jZ8K?$c_sMVIz#Nc-$IY4cREz@jUo9iT zdO?{*)t=zZ@on~DJiUbv+oRu>tp3ldiYggL3dJQ~H%YN}%hizVxb5h|l(hQ$&+qz- zq(2}7^AUNtZB4%x(*BDzKZi&Mc*YgaF#4;q>3PiC3yI7S-%}9()y%|m5ZEZ?1^s=qVgd~fG@Y3qjq;NAg8ubjM`z=zonJf^FU_MCmUO-_=H(B z?kiMd0sIDSYI<3m7fD$Ael>{vf)V9%E;na|!9gc>xOa8>7Pmvtx29;J-Sg zB!Pi_Q(d*2Ca)SNZ22{bu;o`KY*A8_KryJy0noUT9rI@Gw&2>?Zp?1~Xu4XxBJxG~ z=AbBwV_HjO8{!#>#BQWi9v0!@8_ZmVhO(jqfdogJBH!_l9SEgk0Xio?W(X1QAUVe$ zH|a>I)-#}wgX$O;$5kH4Nf0^Z&SfcJk9+h&F_l+kTHqK<6VP=M zC=iGKF8!_lvHmCU38Yl)X-?8;MJ6^WlxCg!$q~1!vPS6KQk<}x#a1nyc9BC7hcn9U z4|F0&vyce99j7nj0-TY4#9C7)t01K|iXd->%%{Zi;^86xmgW!1i@am@@km9|p*tI9 zOI8&uFRF7|K^kpjNTGUVq)3lvWJf9TA=i+$=qF|Xh5{EO6X5~V&^55l)l4vrpE&Xz z+Nc;68;!b)jrguejKd;I2Ul_;>6r6|x#th$y*-Q{ToAb&t>~0OIRZg@8)29fDi}7Y z7Da1>O;*C;3{(EQ-HDa`TQ-5}fy*)~0%X?0*>SP_>~I@GmDUoYuwxW??GlA1pIk&w zV(#|Y$o(%Q3LE7lFPxjV3Owcpv1De4v?u6wOd z<)UD}w~tr67iu^ND`l#S(~D(Tg~hwsg9{-7ktVyhIi5j_C75SCu;Ac&33;nK7ZLhm z?1qq*&zc>(A%N1@oT1Ikzp|O3drhWlW~twr99X4F{giJw9jthP`H&$mwBJ2!j?W(! zoAV5?PpvT&9?o*E58?<&^f^(0ejneSzM-P?QFL+GRxnOaESeH-EPi>2{4*bD9Nn0q zbgZLDw!NH*(HrZmHply+BbUs4$=d`T#{^5Z>(*7aG^iQIL&SHovywk@mnP90Ibb?s}3E&ziA|*&61v4yF z1Chg)9QW5W2<&>B11(>hq(T&H3@Tk+$FD}wR3j0|H0NfW0^*f+qhT`1qATzeXOXRv zx4|xIYlH^L9{E~B2E(;Pa0)feg`&P8?*O^7@4WN#!MooHmCfHRwR`pRd4Hg>qA{{t zKgx(=p;06>^tcYm^))`;q|d%X__I}{@9Mv{n|qWX4`{2_Jy$_uar;=P5Bz##i@aW? z)^vxbyZey=VSr{2Mz@xLv}r37Zl*95%ev@cER`~oIhd?RZBfUJuD1us;m}%ZeZfk7 zNrB1Zhh?)Qi?BIUAfi;zy~S?DTGW6oVqd9hvOxs}REHN%u7JSG#Z<1f7I;MK;L^M> zIHoN@Brg~$FH%+b8DHCqA%lvBu)ACCfwSf@=Fe?-9w0Oj3n~Fo#{9nkn)cnZT?$nV z`f2pK-EODcea+w=p3AltY;9{G%~6~IXK z80kBMZE3xj2?NUv^>`m#rkbrPwv*iV$Bh&PyEKSWZKQhaNg|1xFlGkXtOat2R+fKd z52s zjAP-1OfxMKp(7N$lXH;6guL|=zb(j%13oeo%pMN=6WPnN3h`z1QT?^y-i7y9 z0%Cm&fo!YlRM~J(?D^{ii3}4k;%3PomnKeQHT5706%t~y6nV!dU5?b09IssDyCA8oWFGXN z+Wrs;DoYq~eQzGfy5pMs-aWZ`bk6R-p4TT7MqZv%oO{Mf7<`8S;JcVFAN241Ng1uS z_`-yS+#D78-bliPzBMyjz)1ihx&Ni5Sz@R%d8~EUJroV%A3BjshE94xsztf)@}eG*r}xYBFnw_Qfj&mf zB(YUJtpSIv8bF#EcOXy;LK{zS-WrTsn#{*68`zE$!3azMX|w8?Hi-5-Zedc*POk+~ zRb&c25yN0M6?HCiulYhwXVOy7)E}g7PiEbTQ@4kgmy#vn1@Z#STyCP6{YEI8`V?-5!GQ7Q)*VSRDj^>L$1ZJX`>JZ2S9Bcejr3E5`{m`;!Ivi#nYJ8@o+L#HcOKx+GX2p1QHO{ zXun&otx~nB4=q;oA*z1!4J&xU&n$5%RLiaMm*uT&5*{ltN1TYl%7@g5+&KlAEnZ9q zW3aVy34}e@CMWwRdP_45p3d}PbcFsu%`s3w#samed(J--BNXkhM1kWrd{5pyK_r`I* z4H?;fx~2HOJyE2UdpH!n>!5U!gPGlZawUZ?LORO?u!Qr&mzdjB9-o_=IAQ%PE~O`HLA zFkx*DJq$Df4gBe+qJ;D08i4~$C7pErH#Vxfh{=`UB>>11mGLWqRzbB*wm6d}J(E_s zs~^%M+M47#?AQR^*^9&{PIbv))FMqacj#ytKDlOifoU zD-!{CiL3*hBsv@34P8}EaMEQ5h01o#SVSkLc6$LKnWS{P5dvoo;o%1(xc{THuV%tN zne^51aUae3N5AW;nEEWg=dLs62WcYVZhQl#9F;~5rS!OReSTqomwsQaln!U}LJqT( z%bwgLNiVr`N=yT55Hfd!Q9GHCx!B2Q`BB&h`0wnDtxqfkAI7KCf(tCZeIEI=|u877ZOR$V?`K?yNbuRj>?lP7d^j zh*66SV+F?%mw!G^nj^6_$S+x0a&syAIxKeL;fp#GLp7Y+k8WSF{^Hz{N0q*8=o#_k zqNw5^xcHt#tbHz_XR}0bU;VZY!}SSe!}lHP##6a(A}sc9~T{ZoAz{ zdjtgl>`l9qW`By_>j+?6Lmz830KX@6OOlmsqh$kmctPyIJ)wKa()SeYn~|8wt`;BD zS8LiuA7OJe(@w}{T<$Gt7JP^)AcKzg5cE>Tt>Nv<@XF_`SppQPYL#T5P6r1wop zk>+D5l=rmiMw2ITHfSGbff`v7bItn%WYTzS%zH|o12tED$M+b!&?_Qe=JoX3X}Q=v z_+4gLD1Rf%vNn6d!n&`)6aY%i*0HpC4~O`)@Z#q(5(7zSRtvDoWsUL>0t))!099DG zY>JVzphUaLl;LFRXhWI5fldYR?(bI6sAP;VoHp2nL}7Dgjtr5whkUOwB&6`JF*IpT zIB@g-P&4$liiFDiyWK&TivpqdZMqaW4!hhHtVe~movXxB^rQm@O_Y+_pikhkfN$N& zB!ornyJ14Kgq9|L((I&~DtorHS};kc+wFF)y6sjrGa7h<=IGk2z_DM0S_qpv_1MNE z;*zeGqJ!}ciabde!M**G?6G6!)+{g2TRsaHkVh!ke!n+au2nd?h% zJBIDKV}2&c`5aETeSu}(aPI&%M-Ry46Gw(XVk0PIv9~`_P$&aTyL*qAkW1&XS}M{a znL-nSXDVo3HN8DEAksw@uW`4bQTciK<;lUOD>t5xI!$PB(Zyk5)tly2Z~>t@ zWqgs-+F34_^`FJbF^Nrp4ef>Mp~j>eqD&djK z36a)0pWC5W&Tg}s&k}8c5)3bFdFx*gwL6s{baH>mF`*YE1@O8;VJA8JPzoBY4pOO>UwJFz>%6j@9$lRl%9^&(lE(bJ0k7z2 z)}7L(0I*7-^N-ub4sjwFC*SWbSS%NSQo{RWrD0-{1pm3S$lsgrcC?uM; ztzd;}h-OiUIprAAuC1KBI!bStTJ?{S9IBiU3t7-r>Qk71+U%D5)0WQRoc!B%7qMk? zY=!o)>|llLudM96-_b3V+=W1%=nJi#i^Jl6v)!CgT*|6rSMg)=V20?^jSH>a7&%L9@^g40ahLLv&;|3g631x?7~~xm8q|D4-QCLldOEM473q+_pN$v}_@4qlRy@qfrlV}+I=OPz zoX^J1={0zroJ>$lKE9k#WMH2-qGK1G!r4=$MVBQ!#W*;fJ6#E5##3}lsjfBatqB}|*$$an z_U^ouvyr~n9H-q2*bhgUg#(Zf_(2x2uwR}FWJblP#@|cYW5LslcY_(#Zx{|f0oPLP zJ?fn~nqIOo#`_D`#M1G|O+sNHOWRk~@)d1oGbw+Y)lcjCTH zBBMzg^lth!+(N}MJ{dHL5N~3HRP-4?P6mlIfo zN)S-DiYo1)(RuA|9w)+CQLjft_vrXlaQv!X*Y4Dei}G5W&Xhw7`u{st7JJs8YnIwa zsuP5}9gdaREFO3o0VYMC@qzAnv73A6I0I?!44kDVP%pm3kdW<#cDcRe_s6u?Y7% zO2Y?w>G^--NnJ7txmEr@tiM>iFGY-1p0le(@vV>RM+)H9$Ms6}g;@1kF*EI6dsEx7 z)bF5Ma;jHz0o1kQ4YZu9`7muxn1KMS3WDx3MDD=bilO6au{v#7%FP~d1V^`jyvZgD zr$inBqYJQe!*a09d5#Pb{uH-g8J&)`hld9`^yMXZd^yvA`zVQ?I5fjY)W>NlQn{)U zXemyYG=3ACRo+nc%^RSuUtbnmlu}m$32u~ph?jrl3P-LQC28QN@EW%#*ELoZUQdKD zvm^ppSvY@S+PrG_TJ@}tfCY-K?{=9#9{Uugu>Sj@Kx;NHbyq(Fj=wq4b5GU`YbAs_ z=s2&R8HUl0I|9I!0<#1)j%avw!G`ReZN^lHHPKlN65jj z%t9{Q1D<`C@HXrO9q!kj?$~JVR*r`YH)F00JlFJ4TUnZ8PPu{vmYxAKp3QVV(UN2a zHuSxtV;bk6IJu-@j{{3?rQwvdUDf#>dU9ErI*`ab0H??`|Md<^5A^W-qHcquMXREI zf71m|cz^J;wgyUG9KpM%Bk{k2XG+(k7ev&?aZ5GapWJh7z0}OHqRJ zysw6F^P5Ayp>mbdHj-Mrn)D==ttjSYxSTy^NZ}$o+HFk%YoWDnb~;SG%SEX!{mFqZ zl%7uYtJc#?Y`|Dmb=@W^ahlTyOpQ|?SVuE(7UL>>IN#_{CX?=u{p2s3M#xW|+N*7q z1*Bp4h^Y%q(5~egnuS3fvY4T@tp_9*O5Ss=X=9gF3oxr;1GY10w!3D}Z|DG@50fOdQ>*6&G{?Nj_FA{x+%Qdo_Hg2M*hJhcOYo!fnD2j%3%R7 zw-35NZ`__a{G2l>s^?L3B+3`D7(k&%pkX7#n&ona;S=*2XzdcRHj^&=%(BS6J%T;p zQDAl6p8f_?AS2Ob>Qx09FFGV**T$P(ODf14(`7)ukdxbz1yfke`AF2zLgK#`oR;dK zP%jrHEo_%+r6QDnwX!c{C@d9@p-avcwNn9lC|g@`((&7Mt5&wtC|pvTzfx&j0+Z-^ zWTB#6R}yyi$bBBrH*Jj&1+p`;fP1;ftG0f=|6TGv=lza!(PJwkG5j?|`-JNN0qd3R zw?jQ_w&Y@R;qAU~O6h=_OvfK}Z(Klekb{+bI`4N|Nj}}5aJI-|s`WCNgDECkQIBPxG1(R0^Zkh-4EeYZ?*M5tMY2D%mUX-;d*tpyClXOXnx89uHWs|%CZ zTEdkZRK2FYHtPV|V)c57EEreQXazr>*h*_WJZ*dXhny4)xU6AL`6oXCe3iC2epZtp| zS_`_LB6!KpB(jTxwvy+ueL14ZQvd**u&jF{*Xy*bQhMy6Li>c+13^8P4#+6W!b#pw zC6p>yo{hY~@=W*n`M9I=kHvb&Yq3%JfPff7{!}x9=k2#EG?AS0f42kxL56~&4;sV! zU@OOyq_+Kc|8?Z|<8{i^74GMvcx9U5oaQsrY4@58nuM4+)KlD9ZaQ5*uD=}e zs;LO|GrG*5L49cXTS_b3Csr3f)!}z`kZIr6|)6*uK)c^A>5cw2UmDCu8b9S*xk5w+!qnt>; zCU7FDU^+!_)(NQ>mueZhHE5-EXSeP@EC&#P2)(4;uqjTc*6V4aw}MRP_z1bn=LOQ1 z^fUXUo*X zKKYM}T~saRND3;^MQA_hCV?)iJ&|psMbKOAU--kzk|=v>ZFmFwf)&G`a@8nb#inF^ z`0x$6Hsnp+c75n@ImSFNzO{;({zP=en3vDoNwddj3D!%r(31wwCYnFFDY)9uKB2T? z9sn*dGB;l^j(`GSS%f4iqfUGDmkhCGX_)AZ!SeM<$aKhG4*@J*b_}uLdssm*63TH& zmAB|y;MEq_$o?snx4a(>&8AIZ2O(>!A|eWgN*P6t{9EQiF zmUr_Bh<)F@p?(jXJ^)qVM4C>mU=yY%sVv1fBRar^DLQb)y2NrI%fSrn?DcW~ayU`^ z66|E-Qhe>^q)&mScgvkfDoI$$E9gU~-|JBzL1r<;kX$ka0R7GfbSRn7&*pK?H@cv zt&TnVWca}R$ zs-WA=4m2+D1ct&&`T(kgcC8eJro{HFyuqm|S%q8$w5sJ|5x;D(t7=(#EC~GdqMEwO zop7Ll*OZ=jtb%5Hiw^yh-D`vXV^dOo@j=@)CkW8g3QN#$Q@|iZ%@3zL{nFt?HG&Zyv z{=EudV4FSeR84z-itmma^c83FflmwOa_p~6`ijaxn9dMrfafVkmL+dp6csT~5lC-`W=QSr@iZ}@yQQmX*Kb$!OO z6cWLLwL(*2tx{1?0FFKlAV44*)hHbutL9WPK3!j%iw_D#r0%Qk=*H{Ybyj(8k5(MW zuCnofaJeVv;=DgfR9LYcGb$AA&=BP6f>2)+Y9$(q!my_~$2rjo@*VmdiO?%!La0Eg z07GEp+5}D6bp`Ecw^h-ZanIc1IOx%B8gw%TyFMF-0Ny8B=g)E~68rFF6gD9Jp7jW+ zi4r&Z7$P>&gV_sG*MB%?a8dX=HF03d;~3nK63mtS)sEIiJQ}|pm3Ix59J)1|J@2Da zLE?>m@!b9SX?+|nHrxCCmo)sT2!ca#;F?9UDN~4fPwk;xlJ7 zAEMm{ZjWpx%SFCJ?=e9(vJg^zOl}%axxdqz#Q_W%Pj0WRDjwX&?dE>@uF$ z*zZ<3uT4J--thED%VnhWubgtJd>G^D8cHeZnm*kFR~FNIBcc{I$BRc^XLK{6OB_m_ibS4wGP>(sh(CCfuGMIElY3a6ku@K5k!qgJrWOrY=cnWTH!COH zr*sYX;+D|n6>Vmv=uH;|go=7$5xi@;7!>?D>@PD#vxyE+D7s{o;K)G`@UYcGdrb8vY*bYNQUo?W=J#B zSG>a1AlG+=saHY9k6WH5-s9*kbhFGd1Fp7Cy>($5$nmWC73LV3YTo**rH7d2m=65>6V0QSJ< z(lS&_ua2f=z;+fUPzqv$Td)SCUW~|vsJ0CcV)b>0h%4D!3ePberetV#!>&gww*Ao! zqN+D&@KZo%bv0+*eV*LDs>W2TOBb{{;9RZ%J=(Kh?0MmVj1N8LMZl0r%%abl!w3;_ zp(v|QcNdw!Yx-MYwgB7L^WyY5cM>Ls07s+i)p^V2yN4UsAM;FDXZ;^5SNGe^t%Mil z1MM3YOX@%c2@e8A^z>IZdk{O&Mtd^v4raOK;RS!4fBisTa75$4HVZi$p0DwIrdn;( zPNK+eDoQ3*WLLZZsfnQs+ffS6QQ5c97?PksUM4aLC8j3cWD-&Y6z?GtN|5EwC*1x? z$&A?DA8-Vkiy8jR|7IcN1nW01g9i3=`D=S|T(v2pCtuL22yw>e&1qp}@iUts%FJz^ zUT?y5l-nm?mi|2)0eY@a4nPk5s7n#bybq;dqs+rvUJ~qtc@XM>^=COhc602aQx3ZD zqMFoIC$KR1pUpoDc-&a3Bq7FRlH3A_Dg@Uc0&r9!HY#K=>)h?daC}ZUSe*FKv3J4h z@0Qm5I^J#xnn+wrBF+18$FSN`?KrDu|dDx zpQ)~0Q#`(r@wCj6w+6<<(``MT_qyP;i-F$a_meI|&L9~L=F(m6YkT5(Vt&#WqYENX z{;Ush)^Af_M`@OQx9(1FfhRT@C64RGDnckBWdi?TS{(s}go`DCzxxOyv-!dN2PqTs zA$z}cMpikvdrQDn-dav6$W;PEZ@FWR5Cu*NP0fUfESEi)7CEX>-c-d}r6LW(=tEjGlse=6SzEC*tNA zx|(|cwpv1%<)CU1U7ZK{Oy3=hKXj)#X&Ky{w)@}KN7{>##3dQz2s50RVt~ z_w0Bxv~)$N86K=mf5Z`jU+*U$7gcFoq+zpd`M10@Z?Nj4Z+KnB*2Yn{h!e{ljzXrs z`_(89`xx7f;WD%>heFt0qcPsQE0eTauQIl*vJTZkz&C)R(2#9aALIR%Mq2ep5mP3(4_r0M*OT|`E$^-;aGz_iX=Shw|UaM>qFiYq(aJImN+RnIh?(HFWMkk%80cgxsLs8L;Zam_+il4O!@fK4_; z>LwQ}q_{MgMD@lp2|+Ep7-V;)Kj<|~TOAstdu}kPqDn(AdfIP6TM?+AK^lUrCP-Sy zM$^%LaIj6sguf+r-_APlK5inwS!6{9v+J4n0qN9M_Zr~6QAeR@8!*=Hq}lHJ#`<(v zEY~pBn-hgoWb8pYIJD3Z8FVSPHMgCre9|eK_q8{l$}j6riChZRSH3x|HjkTgZYka7 zy6ui`NVcA2r~9)U_t_P4zV_0vrJLZ`VDy>f@gv;S{^TRwm=n73U8{-{O}?G0)t0TS zxo4b9_tOyTW~}i7t18M6-A=b-l}nj!tJ&#UjVMjXta*J6_2v;6E^2|!gk5Es38M?^ zN3qbS^XhMZ!{huT8*{U1Lkxex3Lf$AeztxND&Fpk|B7!Ddb;iDT^>&1dwu%k1w44_F6GTdZUZn@)inb3&*gzM=X&jm%2 zHUkkPN!?S)YK>1-NDa--oqEPnE!yRCWdJ-t!@soH>nZ|2Q75~Y^JWL6srC57c2CRD z?h)gFX!i!n5yB29M)c0W-_wAqb#r^#2e6@1c@Tm7aVLu=b24f0(z1VkT@@3qc!E*k z56k3E@1~$%?#AScHD<*Sd->N%^R{dG{q1x+A5;6=o!TG~O%5$r#c`9^qXY%1N?dg8 zoqN>Cm!T8eJiVfPf2g+W&&)%P(2YyzEQT!(zf{eKa(m zM_hE>taq#J*AZA3>`GOx&(NnyCa=oI+f4|Jm)y!)>nFRDoh z@YJ<34d<=6^kvcOLpsCn0vF{BzdP!U`lcqyiPbdKiss6)(2XY{$S;(%x7WO-3ut5~ zivHq+c6Fhse-FQkKijwYE`@um4722qymM|;0Ki(pq}BRCq8^mWn^N| z3vKcX^9oUtAYaPZl3~ZuMqQ`t$>eoioq}P)6(CIZbZ5TNiH$kY%QYV{TL2dke1cL= zAhTm|{9U5th`KzB#FFWtBI6t96A-5yV#~T=j)Z^Wn_Xjib>pXv}J@^NE z8;HudqGdN4rDDU-CxpuAWud+hHC^ysep{Z-uJmt0Sjsk@>Y5XMs6Al_@GLX4m9izsm&6NF=2J zGU@}7eC$jqmJr2n_ok1o0FZijxkxY_&nKDrfZP08%p}_al8QZYyNtZP}$drw&y^r2OJga9PoqjA^?f z+=fy~nsalERn)VXrXO>drN1@8x{^Dtp9{~0RRL;*7LBbouQ`0G0*;U?hW}THQqNy} z0HUwaj?~e#?J!`<2tu}xSHS@xs$p;gQ^Dv?op#IU;t6!i0?7BYE9nUaX*H@UYyU_4 zH*8yK3rDD9iz1(j(K)xs;khEb!9bu#EAP5lgHNjWnSchd9+lyZeTNm1cVlS4*ufhUO`jonl!pJK%c5 zS~vDO(u>Iwbvh5lOVEv_;`W1GEgmIqm(8pXX6X(YBPY6_n)M8)<7K(E$|X@vTrYzH z?}4Hl*c7YQ5FXb3^I^N@JfN)}OJgXPL*um03>G2b;`JdErXf_kBk7vSpgHS}r$e%- z^(sa0SKH0*h0LqhJU(WkV$!TKSuBPWW#QK4?m^hRMkPLu)>e!kYDOS&+iiXdh;7q2 zCEh4Dzs)T1!_)qG{lodVc-@?SKqvL;hvR;|+OPj}eg5H@A&}?&?(t=Py1L))AAfkI zKx%)anUELz;rMd@^#|ws%J;<|9@o#OAJ%mEOy>S+vs+);-#g#eepr7w8#q#Ok`sWW zq0wlbaL$N-gmN=aq~G*ql0B8LMSGo*vemnswm@AhHA7)kz~q$Z$CE6Y)lli_iR7m{ z-ClD(U>hbRrsNAu`!jH%klD84Lr@KbU|!6XW-v`nnd%?mPiqe7`uvj0MeI6aFTQxDd;Dnh}96M}!osy==V00o@P+pft z7#xq3KM8E6BFqpjfOsmH?)G>Nm13h4Ob`q)2p zD;_kInFex)hHvKSy41Z8%nE=_qb?Y_gf#wXG^ULB~no{#z;8+9plXm)y0GDmIFC#Cm?vh1<# zA0Db@j_cJHxA?#nriI5_9MKl8_O56z>&KAqKy@ds#9rS;%XbdzOJ33X!2in0NI`}$ zB`o&Kg>qJHn7Udv$!OL2IJqua;a$!|thx0vE5Ea0J*EC&QgR>yQ*zAigA2zaCccXV zTW>J_pgWzO_Af9j^fX~*Uu?l>gahaG>Fhmh7mughLRg^$Y)c!8Qat|_geHh`tNy33 z%TkW-ew<8WEid2DzF@S(yw$Y8-(lkOH8>fg7pFN;)hp%z734yw1+X=8I_S%1s7y42 zZm|9$CHz(v$e0>U2F1HN=c93J*6cHzlBGrZ(k5`DF_W-Lsi?VIb$74p?fyUxTb7Sp z#g72Ylr?+wjAkfPUwRO2nCobQ<`J?Kr$>77o=@&|+vsWj(42zl5amXcLxlZMl^C6J zOfEH{S`}k2)a)LjV}O_kJW~R6v>c_o!xaaoq!CVz?YHFw(I^{_#mF$X9 z*N0E2YT$I?h2UHyuza!1MC@W%C{t|W7cvTF=+40e?Zc*>ROTjH=XnpdF}29!-cSTI z?R=P8{#GWIa#Ot_+!qpzrgw(qO;A)2Y68;Y)GG>{D;%?R&EpipmIzda;kM0>iYBIN zm)X5J-9H|@%>nST7SNVt{b}UN81bR&NKAQ$-&PmIN{v}jk8{+Waj&nRq0ltiZMW`B zgh^09t*6Dqx-EsjQ)}_)L*8u1quu`MgxC)Xq3!Ybw%_HHJIG4}SR}tW-VNc4G{izz zg%u7%WhF}WViGS($*MMrLR-_+1T}_CmJ%*9g{i(1l_FZ1P+mrN3R(IiXU5q`JbgXU zy}0eHx0}~B!d<#G*Bseq(~q&ktW-4MZ7#MOw=+^)0ojxTSw83U5!qc70*Z2SHGUjD z)VejSTvfDh6xL9*I%(0ZWoJXvm*(_ZLYE`!Zq%xF#5G#%$YbX92|=HDnN4C{c?4*9R!-9+;ZjklLdpR7|$DG&O9O;vJg9U!xp-VT9{w&Gz^ys%`?wHRTnR|&d zlRCY85p_M!9r`laXO;$hjBK{5F{>-lPFOZ zQ^W~t0ZT%MThjlFzGAFd4Fb0yX6pa%I@W@>`F6a1v`IN_4U07@`%74qJV$kD_v&(T z{xE+| z*@1Szd#LHOBKmA|-ma~3wP6I$NF7+=UC``OkUEeGmbR?JzUy+q;D)i@cz!Lr>TnT- z5%g}8(|E3B*CV+g1Hitf5Q@Zo$QBh3mgwo+&)PF8~wiPf#NP+ymkS6G5{kev0TU{ZaJkXwh25 zAR!)L=382IUKmx0<%jFuYVCQ+W?t??1xKYjc za%3}WM6A*yqUq3!m8eJ%7hZ)(j#Zb?_KwzRp_u1XAYCWKYq#sKlf~x9Mv#+&oAXt4 zJjg|Go)g()Sms?W08Ub61e0a$FhzvGs?3GigFW$N* zF40{0cZ4a?`G;l1P03EVkYpENg4J{CJug15Weub+H61I_>0H7ruORd0BbXWS3^|h` z>_G5SMe{=~sl1&LG7Q{>^tk$*l~EBxz|n&^9B#5@cdsZ6FLi=SCg+zfF{sD{Z6_#} zr3c_{+P$`dP4QDE0DVg4(7hRdAiFm12{K&qt{e`WcWC-u@m9T|5U^vkpTJ2->oti? z@hLM5wtvp&#WVmg8e@O*ag32J(=^PH?kr`cf{}OsAWBNDo+z4-VdPG#6@w?~8hF=Z zcUH88(93b6s1J(*{fwVUwu-8ts~~qm2kG};6dV6s(o@Hd_6~Am7JBr`UV=Cc8NA%` zn4(Uj4kqanjKrUlTwS?>e7^8EXd?v3C&%!twA1dj?0A)KsWd1E%q*`4LnbG1S?| zY$yp%-UrjS0)N&;ra&l?T&wJq{qO@cx@^3eD}J?Jxt!*=qQ?R33+P7@#LdU2<>Khs zAWMldknrrQdc)u!;n`O<{Tq;wD4hL4#H7KTN%%A3xw4O)^JF`g!9)hh+ePa=q?@P`}q~wRznaX~CkB7%XOb{W0Bq;}7Vo zBM+(MOV72jdXi@_>(9uaq#g3afBexQM?6^4c`?^i5eDb6*S;HCRmUK0Ap@hhMaeL^ zMrZ)WM>Iyv$a)~((Vh-^LX~*FiXAX%hL(%v)B3WUdN419LRN|p(AHyOXr=|AyPQMG zKmYlG{y+L9|Zz=f@ARy3pK zWi%c_*PH@{K6z!0l1YuF7~IOB#?sqajl;nbNUq;0(DG^j`i9#(JAF=qYZZsPiB(nfZwb9cL5A3g;wrjK zY}jFs*+>U!A`eDZYH`!;X2-BCEt%(8*~<6j?~9gGw5!Exv61D%WM@2@ z(fOT8UDDrUZ!;mDAz!mU!S$QX2GI3A-h20(N9Sd;J1f91@1jQ;NPKmhz_-I~lBl0! z67=Sx0y!tm*84tX9IOfwBegqdR&K50ob-YZmq1|BcmYC zJ}{zvB&*k7bXFb1oy{Z73Li*jGrQpO$0ozS*_;>>=_$~LB|2Wm9rG8NYJc*~Rl6KeNbKrIoZmrg=4koK8m?Ak zKU$SDJADD$NmE9)(}g>q6q!b0HHCJXK*yuHE{4 zu=R$+kCcW@K-P|y;G93p($i>ll6TOuxG@ST&Rfr{N;TH&4#Iupg2f#6nw>kkq^vJx zRVWagyhSsIDVGBNsI8u$5AR!TIlq`!5kFVSO6kmh-*A*rx=PHn`dYY%V=`rAP1}fJ z(^x`;SS&8LeB69;=^3LK%?j_v1I~CH77jEy6!Y6O$XkiDX*e~d(#3=k=$W(YZzLF* zcA^wxoiHj(>2e(A41Z;Ak5*}Yrz?}r5tb8xdf`~)dUdHp76?U34S2J?dQn2Yind*2 z(+s(aw+Gg%R?YN4o;;Y%M;$BJOh>M<^s%sQG2|!Qa6m_V#LpC7d^@5%*jk)6OD#MY zz5RrQ=o@cOesMnPVY6 zu&L1wSU7Oa@vZ2-<;>s%oPPT8qcYq5k1*Th*8SDiMAL4VXjnQn3e&js6Og%&a z2!K8wcTrjz|IQ|%J)RE)-l*79yBfdXTBWK~CReA0l32E?RaK|!kGNK2Xc;9`2RcDj zAS`fHV$y;rofen@3vN?^SAzIfI~j2Q^_b^cIn66ghovNy_q`CPId!~SV9h&Luo+U= z#PX*UHiz>8g00MX&*0o}Vl%-BG!mPBDB1l&uiPM`xu6hhZR`nI*ooWuA+B^fS*1oj ziaGcOY*`GEa1pH>k)RHAz?_U(1wq8JI2;6VcY+*b?I#wvEKnJ7C&EaW%MB)Hq z%sEws6)%$~=p+6MUXDi;aOH(8=bq3{o|<#K)JdKX1m;({`@+Ktz7~eSKNQok>U9cq znpgSA(h@vn?_E_Ap3C$Fr3ubm1z?XWA>LtWogpIfKHN|+!;86U9x91P*u0DQgysNK zwu9J#;?m4?K!$fFFl%EwS=lTtj1SLLK~K+R^I(^`a-&usmr-$8ei%CtMPrc%X?sHP zUd*hY59hC$?!dVjP(Wb&bbIxHZm-UCd#4z2`5U}C$qfF(?hvtJjsg~nRCGHD1vAh4 z*L9AD*_b-?Gu%_6*on|v5=PUHXRWathS1YkcRWzgd4*z`bC(+DN=3rVTt^wUR;fos z@Zf2afxPYXykW-*xUZUnYiZW~t5p}ofeIi5hb}b^B=YL!O!vrEw>W%uD1HuR^q6Ja!UPeN`k!2 z^iQib+14Gzf~V~}P5~l0JWLW~;)LiT9E0*$GzgVv9jjg6b-P2hW8}x;*VWIbGqX=v zS5|ny06~550eGc|x08em4H;3t3e}$|{`K*33jUS%IZDx2McgHwRp(U_R)Wk12*>i4 zG9Ix5jK~TQw%%dC-7Gi2ii!hmnUMO4I+%@hdG`aMwQ#R@a3HDe|3WD_rO{uC$z!m) zkHudr7k#$lUObTJ-azjkBQq`7cDkvvS3 ziwD0^olC1&I^s|JeX8#RG>7_D{hK2p&J?b-KNMp|=^X^NCs?CNkwP%R|3(NTD$lrtO^8B5ds9Hs`en%{Peu| zLXYU;5ni@O=kf9UL^ptXPvO;r#pV=NtpxUpcC+6Ddj)=na6I0$`9a;WJ*i~zKtbnM zWtK_wFzH9w9Tem1SbL??$cEIVv}NGA8w4!rYPcxg#wQ%IPQ8SgfaU|E?UbQ>;CpFeC?bizxS z?#KR&3Bu-6lz|N?cunD-`!27k`wPj${RJ$G3NP@7MJ1=>vSdY zfDWeyYsr5g2lvKu>Y|>jvA1OF_zu>PC#`Rq{U?Kw>k8qZ&`VE%ZAnwNVP|crOLa;||G1;5#?mWFIxodi)#hvy0y5wWrc5 zc5}CKJlyXy?*C9?H|Trr!ZO)c4h?BNz@AqTOV|b17o^Vk$%fwpKMtAnycLiFV2He$ zLhjxmsBKSmMY=hgyD@g!_INbvB9%XgM)BQH6wgG1mx$^01cR5z*MI7-wCnP2@6>ov zl)A^q8TaqFdgW@424mHED?*AbP)4*OHKJLQoVJEZ{K0LVep|DX^A-i~zJSVX`2I?u zD6ZG7=oC~FP43myp3oTgs?Qn{7J2NUVM|LzdI6UHYG`K-45NYex(s5hM^9<$Crn!H zHSajDjKHnXfQdzG8G-?hWYLh26}}QPYPx1jcCj2fS${-@$2@fxBzWB93QcH=k@1Ss z$+Jm64wRTjoJ>A^T-nYf(+yLJ)qV5)^4y)=y51##lFmZYBYn?+h~JK66&Vq6GPtGr z0;yVcs!Vp$?2t2^cn>9%f&7ehF9bflUhg{sT zZ?}yF-X94esC;bTjisG}~*0sXB^ss#xjit=2m0gOWD-caAUhY3nO)M%G&v(GvO|LWZTJvk;&%NR0B?+9T zdwHr_J5?cbbLRJQb9sm>EkjrnEfp4sh|vmuEG$ktJ8#9OG5&z3T6z&b7Od3STAVC4 zS;iWQn}K{4(AOcvpk#(17mBr51pAin?5PrC?!K45ULgFLJz$2^MP&=qIPKz`7T0mwtn;FVs05BkjY=x!Gam%%}%UH=@#w+0is_JzuIGwgW~Zb0 zkP*1gX5%@Ui;>@Y10{wjmr!B>Gm(-4226<6O@LSA6sgWoYTbTHi(Gjo z=0cwiU1Sa%R$mIQd8KLa!YyLbe#MmEXgQ%7Y?;NnBhRAB?ujy|!EwDL-0!^K)+~mQ zTNI$|dSY!9we{mq7L(tsC`!uz3vK?5=F4f~tK64- z-UPJ3RN63=%yu3!p39{HXj$%`3j!P|4Iual&E9Dr&SG=G1U>Z6X2+6laPb%Uy!97) zM%T)M2q-kz{U_T-$0L7r^Z0arrZ1pC%)0dQygn|USijg$+|qK|{la0C+zedZaJ|_r zkk^y`wA-ERZ3(S@8m6IIJG@)&O!`6Imvi4d{_nMuPCK`rpQQS50G*LkWL+;C}@uH2@lH(apv;Pm)ZJA3*lmG z)YIzKYS1Ia;5fVC&;peWwnIG~3}fQHabOv{Vlx?1c`A^n;Y&J@69}@&-`0q#0cBZx z&x`Z&DaX@ToDuy&N5ukZssfl}VOaoM*RDFvPXjblN&U)j1ykWKDNdj~(*50PeL$!C z?(F+>hb?CdT%2eWbZ?ZZtlv4u1pts_=?&eX2;my5u3#K(%}c{26|He5;^w+FT=|x} zr_KH5YF^!O;NTUEvv-56TM1}XgOwGzRW6r++6fRrVzqB$AU6hL{j9;U)g#{Cq$iCyL# z`Tb`9jB?(%=oNUgEj^U> zj7E}l{n!Smh%1~glKkuPp4(YO)H^99g`TcpI_7GbZi?-!@9uqx`!8DUTZ6F4yZa6n zI$A~i%vmYC?`LKbIjo<(!{T&;D@32i`fhn&VD1R(yO(^>LWU2)&#nJSa$Kn2KX@`Z zuQbH*x%mswXUnNWUtszR{FnKU(w}(Aqos@-k?s279K-at2F=m!w_^JF#hQ#4cb(G8 zaQ#+6^WmG(MZ4`wV>Ug04)C`6@_~e!S9WHwWVr1GX1F&vx!>Z1laoR%O11t9zRNaLQh5Vl_cgB3-m^0qrWpo=$Wh9hY)mhcl-eP`DaxGWX8-oORPtm53 z;p=s{LdZ>|>&13{Sou7R1#*idepDIl*ujVl!i8K)FiX<}8sJIISE*I*T?4o>UlM84zFKd>@=^slz>rrp_iLMsRF@+PWhN-Lhj z0{x=7$#@Ai3nsjD@N18Dra4AmVuV_t zCxI>`YCb^?Yk*!Bw4l?VUo{$!x-jl(ZN73?FA2PUZO;qop;w8|4o0jt*=h>9@Qmz_ z*-Tt4SvRX-$I52&B1;@1pos~|gu4p6tPGXVR@h=W;r))mygAxi+@CN4uZL4XHXFA; zalUA`e&jFW#~VO3(T*?)-Y>QH4hLOo<(vi}vqN^iF2pClEp}(AH0tgUj9`b1Bfq@c z>~M(1qLpZ%2(X}PH|SS~55k$XVXF;}9F(y*N121p!_Mzpk$#l@<(8_+lUB_OeUK1MITAWqW zAb}?NTTx0Ovz@KlNzjPrJK1uaMu54+`)GuV=8tVcDokX;1bCZHN*@S6m~`}k{DZ+~ zBq?>>lm$5i$rd?`@ei2b+<6aP2MCYUH;|mIq??$jpKI3b@pww_$W69TEg1Kd;35|3 z#02sDc9;@-+IbP-h<7EVh#$~xV$>+Z%B{2Egz0Y_T`8d(3+jt@d)iaUZcACB&qQU!vPdd#Re?hiplUu>{A)tjK%xC)`I)kH8&duY;Y8pPADN6#Qj!B0eD)?F4;> zs2W9FhJs!b1%!wKg}i6FTtgvIm?E!~C~2J&vH}nEB<5mg8~kvWdXuwC>9lTIF(?A%m|AHj0*a ztvADP*2Myux|ieT{B^LnUvI6*QC&guGpW!95Xu{?R!zkrriO`c;1CUL>7?JLZ|THv zX`SwHtP85Dyec5IvJX-VRd%_tcd07C&nsaldS1O<|LwNlQ~qTxqqb^hz+s~-P4oT!c>GPud2cL8?VRWf_J(UX;w0)iy+QYDVvA4O4ZbK0YXDuu-3 z`jK0_Ud|77C=H1EfEvB>N3+pLn_j4*>tZ>>X%JW&I*n466PEJuV8-p!M{=)!vGhi8 z>$0x8&|B2%On#?RBwoLVE=+uIzfxx;0T6E@HVN7F)5M_V%XCLI^nLeD9RT3IZWAavnrF_82E_*`W!x#ffJSjM=9GXBgR({ z+!lU19-o>n8r<{Q;1=XcsWKApmlVDvDB<^OCY!sYCn(+21^pYY>fgAV_7s`9-HfrB zpEON2c&wNP^^Fuzcy>|_$biSY^VV$I?Ov*zM5cxcD1J#Aj|;8fi{*KJq-6&E!N2X9 zFGC*r@WCrOc*O@rbp*EXLx1Gn^m}07W)U&EZKQV};4i75L&j7H#%irv)5y4^C09Uqf$dFwom&z zazVcukoU06B^Z4igVE>z^Y$jpi6mLJFh9i~ZBq}bQ4J9+f?jG2K_D@SfMUs1c3WE* z0wghofC7}uOwIiEch9}<9v%x)R!x6jnN^DL2oQ?J{Vr!&gwxMEX$5+I{~Nsb++Z}r ze$Nd|b-j$vE>Z~TS{}1lj}A2w;0PK$TCU-0&P`WAPRdn#12-!%sD7y1&|V$fO>a8m z!t>MeKvT`}5z;RB8E(IvXiUi-#k=&pOu_89MYB1=82_?rRnaXYxmso(pQ*0+R|)N_ zX=`xPm5kb#>{jj;B!KjXnSv@WMK*A-8miokJm%xSHc^$aO6-A)v5W#xWZ%kfl(`WX zYMVn_Ht;STHFC-bpxkQ*jM7$K%cxwuY+sJ6Wk%O0gY+El@i0=zJ?!_lgoG;XNDjk{ zF&OhRiZTL4{eeP^ZG0LTW7mhLqjKLSGLc&2QuLX+Q?4fk{SGEN<3`O@GH7xt&u>bk z78lTFH#gQw=mdk|_*OgpRDP&eYmgSJc#Vc%y{y*Deyy^)s5a3fq{)Emy(r|VJYIsf zrZt7v$IoA2dA)jAqt)y&P^RC7dB|WIac5&AHpvEnl-J2j)L-ln^L#iB;aj?|bR5MU z;e8U4^nAa-1PaO2LV?oZ0`?0SDGXl#5whPqEjRQH-1sbkA-U#8%dt)WQk3-XLv7T3 zW;}-~d^n>gZi;H#O`@>HbF_enbkJn5M1EbGi?DrLvT#{A->m1y!nVXe#r};KKsuyQ zkin82D6ZXc(PF-r$@WuJlpNE$T~aPMwwSO+HWqa ziQ=T{CtDK0L8g_fek>oNXFK5)u^<-v9##BIT>HIhR4*}MZFj(>h4WAIb<~^~>=Y$L zhL6|6KAojD-IiucuN*tES<6JLa2^?TS8$m-MMmhl z_afiEU>r}BUuy`M>isSB&97P=TDugjJv@JF__MW_(|3le#rdjHcgp&~A+^SpHs#4+ zkxefpvS~m?;*fXFQl^>ITJKU)h1D>egzMcg-0fFe=(gZ0S~)Pf3u)RHv=5xtD7Y2x zF9ZCs!3hdK*@nQh$3!BwS7Fu?pzlmGbnRnibAdN#zI*E56b-3A(JtrcVzDeH-`bdI zSz_iRINI}fJ~HS}RbdHD=)bD};Sp(@E*U0`>ntlMcMFl&P{{C( z{vIA}jjyvNEge{LCFD*DEi`9cYI#G^Fg3g}BmEP| zqGc&;GD(m%JcD)=zjNg+u^{Tx3ukSLv)%`NR(0|$e$-94g`{tM;*L-Aw1q%b3K5xg zK_hEfLn$YYj`(eT=r~S7GTV?DwwNGpXS9%sL8Cz@QV9EadSbTZGevt}xL3s=h%X)E z0Z;wKW;H*YzMNFOQpusUqC!rCA_{&FA)i%iO7{JIua^6C{JcNV6?n)|yu&ly@_xf} zIQKcZ5P=cxtP9W!~*r;A1GivDIUxzWTq8+DMSS_YM8u`K!l!(_=8cpf8qD^2ulgg6ElaMn`@5No7>HeWX_37q8j74)x6K_)YFNgWoe#>6zBDC3g8^4;hn zE(7JNFlC@C;+ji9wcUp7CNfdcO9OLkO+F$V)~dy^-qqQtAhUPnga?iyofz~%NOlNi za$51it5H|gxZ{RJb~3RfL!^ptG~UwhNMfz%K^$L44vg3m6~00CYzK=LIjh`N26kuk zZpvEM)n=S-Ce@m%ADt%i%?tFqqc#j}|C6~`wbfyM zT)in;B=IiAN3WVh@cdanTY&S2sO^`lPHpY9zv7~5H1bO66_cwCk`O*UuTD?9C1u*5 zwAg?i_`Zm}7%9n4ZIlz+En_A1U+zbi+zr1}E|vc~g&~y|(ChO{>J7>CAqd_HWV)h_ z9VReN{2LQjtC1=ryP;B`d({G8p_&vadL;lzixSzy#o82hBS*x`{H~ac5z$&ZaM9ygizi1(Yh6r3!E22a z7`)a%K+2M!sOAo)H-o;T4QlEmkwU0(&lw=toFAXzS;MgoXX5e?y^6>nlr z@E4~W%mducy#Eh>yIz9WcJU*<0nWY`KhBM-b+M>51ja4OmRtn^4CFop!>)^4eJP%; z8(0{dsTh=#n67MFS-JsXDw13$Rh?FN#Rn;C-X&Xm4+LVj&zXx zdxFx@YuJt?{=){SI%Y&Q84E$oxfVKF9!NuBFSvtsVA#8xO~wqP#&N930<4?I#?4@# zPYrDV+l-2pZ6-^|+i*v5;qr|pTH^3CU9@!QnSmNR8+abq;^V34hJ0ABHp}A=xHTW< zFPqa3w3E5U_uJ(U+U_$c^3EP70z=_hZ$>FQ<(IV_YbLQXH>+Y(j31H0<%^hptEBn- zoIpa!R5^Qt8_E%AiEV>pn>lL3Dcdm6b0T^b@sK*clP~)6X#!m7Y6RJ}<7r8cgot_q zrg2<6t)5p=$w#(Jtl{6Mqz3hdP~fY&_#hi+N(RGLFghzW4fv&To$P&RO-=AR>VcLt z>)PARFlLk=8UOGt#{Yz>0Ugc}E%bK~;^Y?^FCE^$JaEx*apa=3xU63fW^D(l$4Onm zbt2-J0+8grR3z2EDd+PR^HU-I@r43wO-dnC-oiK9fzf2iUFuKj?6)f#3?rwg5NV^k zdRbS2ySo01C#KsQplczDlWf`GH>`UDUgqr`G@pz|Dvy6P z+}F2o$lKmP1W+m|(L=<2QaY@q`=qZsTC`qsw9wK(St8l6UCiM(UsGmih~cso*Nqbs z_zKRrvIn$LvlQpyCa8w}oa8A22%pI0Ngfb)%3 zyFN#U<09}x^bsV$u)YLTSQM7qaHtb=tLnWdf&A+&(FsY`PEkR zEt%jZSe>^xtxpR$VAPL;+BKA+PDwd?@PW(eS2n`)Tkyt2w7w1&rGM#PQbuIa>WYz1uJ<5cy#=gbFmhp>@@>hybr#Zsx|V@woLd z;VsrW9OhrGx0nX#+#lw2PYrgTUXCg@R;riTnw>lJ$gUBjeST2O|7U{1~2qi1uu7ZgI`FJU+LqYP+yhLn^PwE~2r# zX~j|2T$P)J)|hw5f!}xOMWnj#nu$=ZrMyNxHxaR$Cl2TBh7^Hl5}*YN{Y9@{=i67l z?x-iG!i5OBNE^=1(rWv--mdTU5z%?d|Pw0x>O{*{noeH3A$!nOqQ@ca4V=hEUn zLT6kUho&YjXfX{jCcK->GFc3Hk`)+>Jf zvRQ33>vgY5sfolv!E_u?TSN%W$!Ofk@Uu=^f{>ENu=E{Unwpgx#u!?0G+Um$hoM zTB(&AzVA0KYjh)Dt}ZH#ZlbS$wv8EA)@4}d;;=eh%^x|xmX}%HVy`Jt#E!Ijy|I=! zN{N|Nfpe|zI8)$wD#j&%xDuHV0WxEGF}sy^Z`f_b9d9e_9S_U$$+RH`@_wyGPu#HI zzcDx-Q!q;aQvFK9dHiCu7F7M9(t~gc0HQ6t+vgj`qwDCZtyh8bs!oX`jkpudoJOxm z3E;%a7fJ14zB=M5M_nM?&&6?7#x5{+L1W@Wq={_6e_<2M^H0Tu=;j+iUWVAF6Xa3+ z-M$`Ok8vIwO-Jz8P3^vgsChoMv$@p=$*ns4;9OQxxs@q;3Lu?b(FKvtK6?=`Evp;v z2tE~aYmF)~rk*RYv|Z)X2|rDFxKngo@0S~C-0Qcep(8{6my3!=J zcE;8`S|4cGfVusM?aQmtYbM7L3&g6sICfs`r`>w7I-YNSXCI&JhbK9A2MVe8sO`=- zClno-cgKC*w}^M>DLS=UtpWC{J0R0aF^i0sz=$y=kAH8XIBZFK*=6CHYl&nR&A7-W zcedc&gb#2Ppj2{zf=eekqfBo$xMI25G)i&3l|_`XdLM@2_4~d=Ba?SM<2g(Z!bE`N zVjN?5Nmo$W>VG>N%z0B14;GmwUB(RiGF+81577DihoJS2*X4g|2cFgfsZqc~X6cM^83&p=bV@-8L)TnaCR?$PCO4Rn$vQDU(dun98)*GH&@!_ELuK(D{W)Zmb` zGZ$^poAxLY`J3icYk1qR)6o=uL(rcnuUZoW=BIb7udPS=qA=c3+IRV|dR!lAnOQB} zDkqDm`*kTrgVSN4t8r2X`$t-cwg0YhH|f~|kro~q1VM+(pR`c`Y2w1WC>)GJCp|N4 zr`YYZKGJo1*-9{E88B}Vn<5op&3$~O66ze5s(|830Tqs0NS{E;z$k+m1+A$T*SPRa zYxF9FIhT|x89we<5QEPMay3hH#$477d|U**RXf_1*8#y`$l9|k`4hK-k2(>8(F99u zkhCqS^mAk8H!AtjS?v!imMBLAI6?g~E#EVV$@g&eMOWT4gJb7_2xWFdt3$Wf1(Yn9 zaZ1dz8|&^)vrZ%{4uJEA!4POhjdvE8TXFg94c|L8I*Rq7w|z&WI=Sjy)6B{>K^5tV z>Q3p|HRQaD5M3#{DrMVOr>nGF(@8t+4qp{YAXseFg^CWy8%{V&++u+g^eqd#k11Te z9@3M^z*TX17go5r+pp2>49D{2)BW3TC|GCoa$OM$N0sl55Gkq7=g{AEVkN@HNXwj> zM(=o}6)9}Lzl~}dGIl{@`AqAO-|4}fVHb0@trQ2tX5PCl99C{!iwcgS97%th^>~BX zwdPC%HuWA}w^AmvSa4;<%H9>{gHNXrW)Wpjns=qz8cnx$u7aJr2>-|wMGw!oH64z5 zb%^vfE+8%&J7#1s%f*gdNoBOpnOfzPMpq~szn`!tKgcY*+JT% zT$|=#%Fp1Gto|!PIJoO1PAPzh<^odU=;U(WoXW*BxddT}8%opF@f5jl_|n0ICD?`* zeT)g%xvo`>8T-tDhD(kjWR3**V&LBv8(lo9yZHF@O&JzULMghk8J04kO(XDF6J!X!AABnofAfzO}g!Y!0l`dBgF=r>m zN2x#jVL<HeUhA8B9 zrlw>u(=`kHtzT$rXdgDZ{klQVhwms9TRRNP+ib~9pkio0hY{ljJWjAvklrtSanlRdo(Y2LJ0tH@Oke!kORxw9*nZK(yfHXm;1OF0m!Mu8IDjxR6uYq1`cGkz+t6?8V2S{P@ z5<<}}{FUd0{B^snKCO@I`!x$LbF{jY9(pm)vcx-HrYgS5@AApq%8EMLCabxWj zXS91YgxgpwZ)qmYEGIx2!Tt`UebbI$8dMzN(3-S+J@F$$YNzAx-{3(Oy(^LWJ7p({ z$D(w0jK7rf*^0?$9Sq-M_b^A$o(1GJR&GmQgnn>U@R2f7l!8bgiU*R`vWX z#q$SO@tiwP{7*T0&7$Xssdj*OWkt0@x{}*cD2B&VO=AEca3^?2S;@CitGhRW(o>11 z$7-D^QUEDP()I7dD?B#S@esWK(YUuh=l3j~IJ=P0k}+j*2R(9OMnv3XKiRJqEC3QM z;-zN)RbRVo8u+UocFA1etdNjN1tJBZ6HU#C2Ty-_P zLt%(v)Hk!iJ6=%zaIs1=;g2bk7awSa6O}w$}Gz!`yn$%Z0D0T|(%B|3%&j2Sqs7MxczX zp)*gR(xrp5WU`v?S0vODkQdt#4Ml&i)y7&iMhIKI)Sozr@@IJ34I59c%rJpbe6cw!*8+qn0` zpKe=Y$|30zV96K`Iz6sVaR1(K7S9UR-Zd+pAZVHF7`8>`q(GZtpI?7pWn;wUiYs;u zWkfTDWiWno#_zoS?QB2#&irH;5j5R7;jA`ksPx6UbQT0bqsE{zExs>8UHIb1ht2%) zsJ=4`IPT8OTuU{|O?M%VkZ>#}f{y`s4)#U&FAr8$1ezi=HPc_P+bj!wlvc$DZf@45 z$mIL)RWW*})*JcTz)fA`HLZJB^T&V#^C=@T@UZI6x3SL4+9BwWBV{JT`D(A4UXvwY z`q$!TQ~uJ>@t?>jY{7^kiG`EWE(LCmX1}W`UBgDDIBMq z!SV%TGuy_a&9&i?{=PNlr0l*H*Aaw&Hzm^hwn!cE(&&4a5`v2WhOX}3C@-l3T<0d9`0$c) zjUHP{@!ISHt!)Gsy^wox%*?d@h`MuGTo{hR@?Y}7AZRwCQppX(gQ4sxYHBaallAVNl)PGHjEEi+V3y1QxV^Qd`~ z2LuF#{;zDhWn#b<@6Edke!GN%-w;4si1GJmHA0=?|Co4+H?)u6PuumTXeMEYi(Zef z*udJgTcaKzydJ5;bkdDUpwj#eeNd!{iR_aFCU{ z^z2Gi;J}UU?YR4|C~2at?%NhouM@PaJQFY4nuX|}-wi$RLBJj>6sL8xOApuIQbrdB za~Vn)9w&Y`nmJd_@M<^-w7N1^S-^Xe5?*#F7eC0HJdy00nx{~M48biP-l{@;ulkj~ zi*I9Pgkl~P%V24A3L6dO*F{fbfB!sRc&rH=fzl7FPpIJRpFkdWAnBgb{=SkWTD*kC z7=^}o>sR*x^SpFXW*g52D!!R@M$Y!GGS7P?bMpKq&IRlg=L#QY5BE8L9^)Rz^gn4N{5LXcjNs!h$g%Faj{<0LxT)nJc=(Lie`n1 ztfFI!l;a@%#yS-pDVKZH>uIk(72iA~!1S8n$$1GTT=vaVthskq3pm>09Bws$g|v_C zfwgTN@B+XXpt6P|0O#A`T{i#^4}k6TkfjB8Zg}>c09(Y?Fuj4$(t5y^%12MwIwccs zkWuJ9OBavJm(gqnwc5*CHAOFYd4}x6^U)>9M1wBb02~?CUlv&lHiq_mpB^d){U*(+ zEbaM*hE;UiH@8D{le>LuIGpekO%CVe3itjNlnXRf(c<<8{77^#H3~Gm9ztl|&nDrZ zQwq1D7YcE!6+buX!fFfzZpH1mEl^!Z3ep<48IW+wHoJ+HIIDgcTX=O@(ew(CH$Uz2 zITV{+uMgeAD2QnY_GWp6l+e^!ozhkz^oDpBq-4B8%txIu1;G*WnZ=X?aK<{G_WF(N zx22F)PB2gDH67pQEILDKA#>f!6j*QqIwS9iG(a$?*`IUnXe-NX1JmB16WqxXq`X?3 z2F%(C6V-J7GX8%!=u%p6V~lUDY=Q`td(E_XDOWZks(Cx2nm4L`ws`pOsMV!DLqkgZ) zfiT`Ho~x7+>(bRKo+;FO)yzu0S1sn&P-_SmAUdrUtL5q_K9flfk4Bf8@lv%4dg=q^ zUz-Jef}?FLB(Ccq(#cMZV7j9@0W}cxA;POkM@JOX&^SME0ZY8tl-IealYT}^`4xDCz(rI7;`@bS2g;ws!+@1+jho540gbRC z+OR$Bvxz6ACQG{3Q2tphU;%KFn!#mr15p$5 z%c%cL&GB~#p}_Ppb0ezq& z=3gDR4*j;@FE{or#d0XYTG?;ES!YZTG@A@2h{;f&oWgATcR8{%tbv_b6 zHGfA!;f{4s&7YAr=cItTa}%{oUaytZ(ah8uCRX#ejEYm2=8=Y>mJ|U+tWj zG6{BVpW*VGW%;ac`~6|}WsRJI7SFF?R`=tYfyTo-!!7pg#8{BG6oo!)dbeI!@g1?% zD3e1KVtCtY^=THJ^d?Lw=VwuaiYxVMQa~u`UPp>Si`}yj#RPlIr<2ynjzBIuJs=>N z!1_CKz3AQFkmN=A6Wb;+<`K&c(`ex|5VTz=5GA}*VVPLmBsLOX`fSRT@zr#%htAB) z7NFyDKdnDx3o3;)h*VUFL{b#TSs9{tl4HyUZH>6&s!O`9eLHJ1VCA;k8$$ zr{afdrRq1U)droeieK{@6hGHu8hPE`XyU7C+4bj2Y6H-%)yN`}zfrDBv&oCPhXfp; zOPz4x-7%>OU0BmElR2OMa6f zC(p<5WxrMV+x6nGJMJD%YPMa&R%*Ucqr-Z;SnuhTNT3<6z~(U=eHiz`cfq@a_vz+Q zBO}vA+q2xJ%(89omVyq3zOgF@KW6c<3=+=SQdgRKlepz#jvXKiX}sWI82&U1#vcKa z&}c!AiE+n-_WW7-??`suaeQL(CREX=12(cNZcxQ^YhGF^A&vR@5*{8FHOc}wOMUz{n9toe<9x>5Ha@(h9wTIr zxUbNx5)3*PmRc=mIf!RxTiG7s@h~nU@=FGAMVCTA!A=XEPS5j~iyFoWRM%L}`k@opDp_r+qN!Akq%YB7D;ZdV)1 zo@=I#WPMYI9qT+EWNPf8O*3JZl1l%-mscKh_J8M?+4F1~6& z>1*OUn~?yaGy>FeGVL%NuBfmaK!c02MXX_YdVNtXU(oA(noLFCX4p=%sd)IGoKjU{ zOJHx(2>bVC9=~N*o%MV}r#AS61ZXzChT1OOJ$nG7_D9Wp762Bnz`g4MKaX_PD^j_} zXP=CaK)qhheO??7i>CuhzG1K1r!=eVaT{5GRx&H`*y9N@6sd>(HNA{WQ|bXg;|4y6 zIt!x^6QJ&C-{CHzouU&d6eL|!CEAt{&BQ>u_~K2W7W=7(R@(4S4bx zaAsj}-wE0Z)?Odb*Bc?aFVN)ztSuT*JY92153kl{)Au9_=DP=8=NGYE*6Eo^QzAHqcO;p&;L@1x zUOl_%S1($}ED1=PKQ#Hjpb68g3~Ni(@O-*aKwYHCauC29a4S;(bkU=D)+vOWnJd!s zU_~HJeBs3z4HzK~a3rmZ)o*Y{okLyB-qV~lQ01rG?6jP$PN+ii`k$=E;C5o>fCXP$ zmA6rAFx+mw8i6;xNsI8U*6(+~s!|kY>$%{Lc`rw+Ov)wgH|k-|p_!s)gXET|Mbh%{P7Wdc}J}-wj=M-{~-NYZsepg-EDQ=Q+UjOD8-%Q@Hz`Fqj`%QUA^CibVVEq$1dIHimQh z!+hYN6LhURppLje*VN=nMtuI^4}2K!Ro~A`QGPFVy6=I;`g20vt$jOE(91ZcgbUA> zZR5wq=8Qy$te**%v*g*ttJ{JjnlNbVqT-lQZp01FiA998ro$-C#zOnZ4ts~fm(tfb zoI1W!eJ$qbY3;JQkj!15=lk&U@sV!J=a6Q=W%&8DIo4I4#xH36g2pc}e!=5_4Ss3V z5v+%TN1=;?Md&@P;pOyyv%Yb#9?5($d>@P@m7&>!r_upEj%MnJ3Oj--H}ZN3!Opj6 z=$X=;qO^*CJH`l^ud{$H7JHg!4xYNCk^Ueuvq7jw8w{PMjeM-)hQCZzlG0~cwTrmQ znUpTf+Yp|aqRu(Xy~KgeEp}f0ZnaoGSxPi3DF`R@t=v0k$5U^y;7umpblFAJa@cLP zrw{_Y@J;qDpw)k#(%Nl!zj|D6DS*^#83jkH?Sj_l5q&C)HK>ZrO}&v$JdD@Y8}~}` zcsupHhA&xA{9SS(DcfhtN4dk#bI|q~QxDj`iFXRsPgtFXJ+7JGf6n{>0lw%Xzt>n6 zvx)cMtLV}1Id-@|uI7|%@f`T9-~Rp2h-6~#y`LZHZ{^?h@?1;?F_g%>$IKRwU(9G; zW2|SRK-pKxk3js)lkEZ8Q1K6-;|;y9vki_nl;!*Vs8oGeJ+|pI0+-*S+hhG{HDuC}Rjknm z=v-3z-GOeYJLMT^#dmI)fS7K>XD}C2rqvOFF+wBclapv>c{`;QY5Jd9d60z%>CZ7t zb(0}C*~5#^)<_&low~7&pt7Ve{Axc+Sfp`DQ6~LLE$bEuKE1C98-W6<;BFK!K~6(X zfV?ilLTvouZm0_K;#&RqqpI+e#|}8mXjOTmja*g1Cs?) zi5+EHseR6-tT*H4iKaDrXVSILev-mR2~j{K>muPt10z3E%Flw5-zMsEnuzim>10~> z4Cll_99hJbMI5hluvH{8PO>T`D0gCw(fHdZ|02i_w}y`{78 z{PO(M%bZ1+@|nZ=1S=yW`%SVTrM5U3+>Snp;;#t0uTG_U-^hSNw}6q2b6K0)FQ?tZ z17#lWriGZbX|`o^Af3}l#|#D%D5W7~in*S671Yygh}FvgQJo3T9UZ($@A_Sj0*a=f z$)lQ{A-zNjIp~CQN)1~mq}A}q6eTL<`@Y8QAS}T5o&?j`D7up?u{95!M!9T8+k@x# zYE`dY@$BK;U$NNG4N(ozl3LQ-bz+Xc#}Muh+A=|V1kmrB;qelaEw7ShUwSTphni7YwhY2PQSl*`Tf0aJv5Ki7=8yqp32lMbYv!A8OrAe7JtL^70cU zinzS0CSK+*o-2M{yA#a@bmPUmiLeY{>ijq59HFUV>H%PFhWr%S>xLp!R%^u}H|z^X zzlmpNX6CU@MuSZb0;>HJKnnGW9Ih*b1i8k9H&swF-Azf>2?@ zVw2|1pmocRpiE;~@FhH{$m^Ug#_okC_|m-q#w~l%*+~Hu^9saT%Dm7-Y>njw zOeO^g&~-z3YPxA_I%_Qfs+%>VlHs|Nm+lg*wSUNz?i34ASXBQ=|9ISCz? zD_aO@kzB43dmAfCzQ2OOdqiV`H>S0_!Ges^qqz7Hr!x%i zNsn6yO8-oHY(N(B{A`dsGBF=GK0F!}EwYDvn#vXu{md&7lEFvLzoV)#3EP3_t8wG^ERXr%5<3~j*Y=I*f zgw~e><89WG93b{$@l@96=lNkviDFW-{WXW3=r9*NOleg-u*s%Nra~Kfh7eY4R%knR zf64Z<#K z8RNtore22~b~`Eu4=VZ^5{rb+7Jqn5Du<$E+>XEk8hxCYd6|XNO^kx08&1n%mUhQOdxL=tB(oPOT5Uk;yEB|-fqbcW8=*E5uc;?;GEKfg3o z{!6BzRT@f|6(}L=v}|mfO|nI6QP~|?POM_Yn#@B>>U~004Nr7yI=t!gyzX^kUiGL%YO8vt;>|zpULf<;IjpxopEJg+_4OrLJe$ic8y5?frqTi~^!$gn zDz+6xr?WB555ZXsx85K12zs;5o6Bs7%_Tmi-^N@) zlPG(}hZ*b#kRGsH(#=NMWEP`%}3jP6b$FmDd$2M`D|5Jh z;g{5}X|5M+Oa~tgPaEwJ%=zK%{O46T;bM8=XVx9zFzI=I_?g*ArK1=v{Fh1|UM_Gj zEQNNdykU{omi)Cw-Fr1%3Bf1=`#{Ig2D9p&;IJp@L1x7GP~{W43x9jNlN>g~II zKK<;Xz`i;zrl!54{7PMxDTqbfbb#FxNZ;7-7g0Rs+R3D4i;~gnd}3k)HkNxI6@y*n z;EKJX9BtpEL~hM9qHG+owYe;T%210DZjC4iR^ct~@z7wV{wD?_&eZz+{~h+P=R-7o zp4VvXsXG1nh$3cpq39EU7Ri}MXEyQ^osi@H7wKF7atdjtb$TGQN4nO(oGxfj-U;>H znKy%da#@us@A3Gu#@SmRC1ycCiAm%1TV!9y*)_r*RI-liM+$Rx&v2}cBsttr<`xeY z7o)Z2>3%TCJOaxEif(|m8=H-o|E$_W~|Imqqwm$8slQDj5W|2qD8N9bDUo8!^aa% z4CkN#m~bbdBL;>{8xzMX)Y>A^Q+#}8`6z+{u_pg5io+4)@a>2Bt#|PIg)*7UJf^0|Ug2i4he$>Yr zH!4WJYd5?b-80e(&v4dYkrYg&K#*K%>iE?i>l!4i#G`9gMuf z?O2}fA{NV`Y<9{wQexXB`Hu7{&8&td4zhvbwe-nvZ(DdyFcYp0hr&aNk~K`XKsnIB z?ocpgEF4lQJQPcXLour`so|d#{_qS<%h@z!f+HGUsQ&rdnKNxA(r}?K9F3RfD3PMgCt9DVrf&5SdVh6oRX8@%G{1lc_mB}mN z^Rfn>QuP8`7qrEZI*;;(ES77QrUvwm8Dg~T@k+TqT_lF{y7eO-wEBzE_64@(>q0j0 zPS{ui=l=#t#n>AnQN_67gei7Z{a8}3YT{aa)@tMpEY|C$BPGXzQIx<&+uwU;J?TgdEeHFUHQCnC(Z=iK;`mYKRJIdjk0dT~QrR91SSiz!kMkD|uKPO1TV} z{hCLv3t=>8|KW=j+10XguB40zroplpxO@SSbcUF)TjOiMD+L8^px=oD;zCnz5Z>dG zQxpV<@m(k2=t`(dEDA&`l|&7(17!HGf3;Xd=e?H{^jN;p8aflJ2RbdQ<>c%0b8GYH zsNZS}x#gB)ekOQ&mrx`5G-qfCDbrWNhY9QOk#4J(Q_gYF;g3+&bXD~YN0KF_q#2E)idQrzs849PNmb#QTpqt;I|AT_%NSa?;^?sbLlixPGh>0|Ln9*%Q%{K2|MdAO;5 zYh^oD#ek)WpUr=c`DJDhpxyoXm?={l-l~;lfCn+|Ocl=|G+gxt%#fxqvf^h2|BZC; z-#GV6T_ala+sbXJR3PLXBNms|>vh}MRBLCy957<_st9U|o&m7E1+P)9)-S8o@@3_+ z+^p5Sx>t+aEzm=Qs|a$Gs!&8HZR+b5g-aY{SR}4gVrd37Wf0`L6m9Re^9=`g6-h$p-JuUw7jY}k_7!`F z-$LELw^8LE>XmxkYhGUZmHK6^;Z>@Y@@1`7sg-M$YO`Ff(G_d-6QsNrewhxvg;|3( zY)USP;a8aO&=JzY6_2JJoKDn96(80}$b(HnAudqqec> z7}K{kCq%UTdjm*veNbM#@fOROPhCtw7TU3XBZ9%l>T$>gnb2TC@Md?(uk^Jl*i|s= zX;m=1v>3c_GMtUuz&e*3Wzl}QhmlmK**jZI#l7C6iIj~C1&Ha0*$P+3&YT$&rXx-5 z=-OKPqX|K|oHv=>W-T1C1FYalWOD%jKgMsc9d@P01r)%fSy;n5xtDWy1G)1i!6=-J z`ZLOt{E6>-{wUiPna2 zH(%|)#ZT1^)BTj;tjfjGEN@lJ$ir4J$~0M(`V%wDe)e=VYVjCi*59Aj3;E_1zi)+r zSWiG^8}<}l9ZOZ+V2$bbLUTPX-s| zm_Pn7Q3Yp{W}9E5O@=2q+vw`Si5%@|y~01uk5Ag6Q(WaClYu`fPf^uH(7wv&0w7#F z?9u0yGaO^%Z4ce@urgiQrm)%*cAWy5yN0k~2+aAh2)y}`Zz^q~Dlmis+7X4#A1lRw zt$ttmV*~X+!QJgohvoX=Av_5@@ala4S{&Ds`jK|T7t9JE6hb-Ti@t zJdmGwF8Idv%C#I~Z0UV~1`nZN*qX7dhM+-vK81Pj-?2g?-H?>GEBT?rE2bSBwOq3U1@EnMQfqU~-NK%*Hik3yC9z-6K^gUKfFzp~T@=)@mvj z9a~r}vS_?SuV&XyfG3O9q1$fwKEnqo$#PQuAy@y~+|C7YukSpFmXA#jBJ;6tC-mJY zOhKBe+zou0pcT0*YM75%65_*}(K`7+7wWxoH+ZhRyP_L1HV3w&N%GuI4SYnMfgP;j zP-;{!DKz?3c6aH#x=w-G_kcwY5P6L~9la)?^`1%$N;pAt1l==tEKo-oJ+`??aO=)53DFB#%LtmRQn!_Z1$cXaqn?=QA8l#D8WTXN|}(dHb&d? zymjP+Q=1xx4;1uRESPd?Yw>#Y-Zhp&C7pwc5ONq3PR$EDG?lQxn^)ga#L8?-cJC{z zUw>83KKcLvict0EYM;Ap;P;**-5wrKy92;deEKucQj?f)yCAzASy>IFar2mkxQdQZ zL!^Z?!Prjj&133r-T5`l-T0XUpPAQcxNt&^bYF7BN?~k^pD>okPPH$oRfInSoV<56 zo1VF;;>S4ZE{nq^qY)mZOYL!Ax!rKZ?Qn{ffWoAhEp0*mC2x{O%<8ppboH*&^*K!P zz2;kds55QarlfK&i&HS7&*V;;PBSJ-p&zKCR|3 z?nTqICQZ?QAJXM+4L-J8Y+;E)mM$0E(pl5xmQiYm;%Qm}#<60(wO+4-b>#Yt^=WCr z?1V~Bh7DP2w~2}tQO}0aSz0rw)$cc znBWdD>E2Wm93;_okTho9rgZQcmX@?c#}(D+fqFbWabEI8y4L7F%P5$_+oBk;M~oo_ z8K^B14u@Y*zTyN%vtOtjn#&d~Blkxj8 z*7`t8k=D~vq=wO;Wzo+%Xvuz?9C7WBIhu^Zoo~Y3;c>oQ|L0r;6YAB=SjlcSZ6jHg zoUCz~xL#rqBP>JK{6naU0!O9XNSSjP_sYWm!ksJbfcbmuxuSA}DSn3g`O=mod|ht@ z85u(JC=j72!dMe_nFCyq9{Qm?u#`)@K(JF_gweRtJ4{vJwsi+)?$hpgVxlnx_BEr< zbMm~(!B>}_K-Y1;W7u_Iiwt-@Lu2bcEwFX3Ehi}K(D#St8C2Ortt;`<6D-sW;#v1Q z(1?CH((gFJ2U zYQ$tqkfo^#*KL^;GY%#rSqfNq2A7)E-JKggw$FJ}r0CA~f7auP7E+AS-fZL;K>wjN z?r=Ir;j}Oz4R_TGds&p$*l-#(2rCui5YEtY*g12Jj(+}j?IMF8{M8+lDLX^Z$U27e zx&U#FlG*}pW-F???49NLzr)# zjcX`7vBots<6IMg9ds{*!QhRCJk^eXuYSsZ-lKSGYW7pGZa6A{6G2-Qz8g}2IQhCg z&A*Ix$MqMkWWz|L!_t*BHh03%sCbXcpI_Q}4#XvX8l=5k5Wz?I6qp{)ExZC#qT1EY;V#Dw%|7kX) zYxb*hdjW0R3vk9qlvMoW40J)^#vDkK&iI3(MJE@uJCoKM*egEfHSiUm2O+*51sk}2 z_!=(mWdg*+A!Zi^?zJ!=P!9NOK|5KPm2fc+9}l}1n?TY4z!}b@*2$D{j*km8GA*5O zd1<9svn?lIha|m88j2Kd_xCFY#{gL;7s60uu~BI9ai3Z`#vG$c)U5@{MLYqhNEe)= zr4y82FDIizaJHpM>xPGBG#{04xopdeX3`L)SEWanSCKm{%(TLX>?{r1!$GYSa^GtuW<;7kg7iJ~bj1#5A0$;|a#=L(&usgN`#8 z-Ihn@{!7Eetb>3MA^gzdxfL_rSf;at+)I8<*(Ln#I=#uL-}*SE1(cbiC7KT~&a*K~ z7G)7gHG_0hQW|*ge2iTAap#5-c`d`)7ia6$@Ib56r}cKRf?IU3X{-=yb+PL_}SAxo=`)rsU=<0n>Elv^>kzkn)B?Vo*5Tza~ayofX^it2U;$ zzykZ7ZDZvnlkJVt_33uZg4Nl^-^Y;@pp}#CK2)?n!aM7t^I#a}teRBnPxfDwwZ~Iz3m;)xj>xWn5g>+jz|_ z6#GfG%FCa3M$Q$!E-cmm&sB1Ts{+1_E8=RPC-~hv(TdE#r0`Jm7mF-{^;Q;La++9! z(WKWOGOsqc@M@h7maQS@DjBvl<}(~8zqZG$isP7uhBf-z00 zP|2#s!wB44x^`9m;^jVl-XAEzeaL-iQ|5yi7e*B3wLz=UQ%w)GvS2T<&tywbimVN7 z$M~#;x(V z1wMIzcxPSuMB&a(85K^^qzdPUuc)X)VN*uFr)3%=daI~E1$8v8!A@I{WTLmxJ17{& zFXotp$4crudi&qk|G@KA#1Zj#)5B%n``_yG(|WT~g>t5oFJ&WUPRKAh9{zzbzH5@kYZ-KIwCq3&6KIyF(aO*OcA6Hx;NiL>6X@h-lWhP z-Kme3qRMfg&c%czGL%9?EjQMATyT2@LC`=i0olX25t#u>dGBhobSp~qK;87XcjiV3 z{UJcGbbwgjcz(2`-VQARTFdxC2%xt;tsYl!DLU=$cgwGZMd_h5F9{kftpf|-ObAno zKdbcv>|HdMpVe23bc?PZvJJ#>4DaU;Sg>j=Ys1oKslW2jUlbtV=r&{PM^wVqzwzro z;Wqy}z4{04z7<6y_Kgn=SxXJ$cyY|4U-OSYo9_&D*q}EVKyAY>YjL?doN9E`oH<33 z9S}k_5KfwG#`oDBv}hNe08*1&JZDPo&Pjiu-G?Rtp_hI=m>KZ1=LS=g8LQ;k_eH*&HEtLN=&8}# zbmY=)v?1n$X66W37`=te;C~7QRG)zam;>4XvbB_!l6(RbmUi0^yfw=@fxvPH*!)8Gz}O-mEJebb}s$F&mU_pK=b){cvBN@k~Z$HUvg zft?W6Ma3`vUZ8d3d%p+B zkaXU@%;&h=al_pp;eFokONQ5teKZ7@sLoA^qN?rcbIE-}i4XoKJLl0MG3yd4~0XslXWzCSH0~)r_KU2So85q&l0YEiV^dM@S-bnV{b^B zPEPb^?4Neq)!^m%9-fei0psAu(o9^AaGdu<8*I%zJ2Y0g_A6zv{5ood?pLcrWOcT%2Dm7>j+mHsJ8*ikAQ7g?_ykI-u(k#Ul z+tfm6>b2fwD$zO%#Y`kwfME*I2+da|EJ**4Ozna$#?G42S#G7LGEx>2Nlp%miT%#Zaf+%bq4-+TthQ^C?B-Vi7;E zdT7$>23M`?0&67jLmPJ=FYN(wz(1SSwzON&6SVq89)R?R7UCaDUzR@>4}|&Tcqok; zo(4SVUxAnOTkr$FNGFwsHnBdvgeSN#8{!YorqZOxJqAG4>#;04+Zchgu-;gxRXdDwKtkrdEJD;NrobhcbR33{RUd> zjMAQi6%$TrBWz<*SZFxA2@2`DOPEtNcAh9s-2ftp@I&VulIF&);8{VSOeW&m;<)Ib z^%C;oOE#cHjRH>V<3Z3@_Emz8_MuBRWV0SK1-TVL+WxTJ>a$luY$wD$0N}))@4iE( zp&1mgTxf7d4~bY2#vb3nV3F~{6pqHd(?xoV8(OV_8$o*&X<@JyEXQ(#*+>g!WY@|v z4s}Y8i8}gODab4cZ>*zC6YKG51p$eJg_JB-rK-l1aCFIaZl>CMepCy?eZio3?waA1 zbj$Fz*_d)IW#wLglU449b`oyijFk>%6HHrBZ0XE>3?~T4XMOhC(@f1U>;q+a+oET? zLy1SI>Q#Z_j#_lCr!!Sgvh^oFji<0pL74kHfW((`@fZ_c3y`<(FX`#;fXU7I8Iy*C z!Fz$_p4%z-0alFQ2I+pcrgTR&X#!%wh66nWbRmx1)H+C4YkY-#t?fMDOw1@`mnNjW zMX7T1c?Eoy>3q=-0BDLd1iZK${U??D?e1HOs_4)cV%$e*Z&ErhJ4+SeH(6dh_#Rxq zH$%eu;3B>#yaw&}Mhd9bNNeuJa%EUgxX*0-Y5u3${3I=T%6RCXPP^>}P}PTr1*cy{ zo&%!cm2h;5x;A57GJ5Y5CK+}7AzT#0Ut$^F)=qn(t+^>|e{acyzIU0ZnOTIo&f+QL zcn_NMq}`(D^#+Jy;SJ&LdO6OIi}jkXGw%8TSU{)04Qo$r_)4qn{k$&{sMi(Fv-L{% zsH}oz{E6(2Dcl2Da8hwX&NE z54zxkF6==Ua*&Y@qnt5Zep(20kv1-{krxdz-zbF9OA!adgGmARW^^zFCNV8M$B?aF zIx+x)HSAsEVQbH5cDYsByMwYk&J}c3ig7`V3F3*#VD9f<9!kg#Bapp$Um^LvXu5Jh z_Vj*UFIQU~i?YHRofuDDHav?9#V*%iU+= zbo^I7^v_A_?JUMa+;7`qJeY-(u8Q&+Ae>G>-xQ=iHu%*A-OiZKcnNI}Zz)4EJ4^>8 z4C!8>sQYoNUD-K}p#`^f74&s2DFg(SLY;mW?3*izd(1`*=T55svRka?fO9=qm%KWrJQL`4%UhMDx$nm6*KwZ)qn-&6N}`b&0U#4Q zkQGKr5TgF9Ovp6yIE-dZdweCGObgxZz0XI`ZQpy(Y$UId>2PVx!xMQR{b9y;6_q2# zq%gSUUJO|G2=0<5tU7!sm5T}W8P0P($%#1FwAw@8V5!oqev6?>vzpIQ;Ivs)e0IA- zr5C|F*E4%J+ZOR`Aj<3=-GgAc zkZvzP)gWZ#I?Fw(3s3S#TMeVR1jQ)?v)ys)nmKens1A_=5hK$ndTRA6B0A(ZcyX60 z{7ml5J1y2<_cYtLBMN_19!MIQv4>q951G43lpIDc_nS2(#b<>aGzxgXlbF4D zNE`sS7qo%!cj@CDI(@e^Lw5Va)-=-l?F}ZgF3nOrWle(i3<lp~{D zRAmijN2cEhfH)JOCLj0t`Kl4I2tUw`MSrc3^R(w*+Py3z zCvBv2(ncQDU?^|{*lN(j;Q-#vC=Y|x2ubc4s8V!gKB#Ig7MTexS9)o`QBV5$Ias^7 zh2Y7t9v4=E5~Ll@pmXT+var&noVnJ)+OChMmenr?2uE^J=s}6b1T!5g-tYUSpUldn zJ@IJP+C@G|GFH+{Ej$NW-PX9LO{JOg;fhI=tL1*y$)?E-rE~kBXNK>w$6Tj;G&3^X zR_rBz%b<MYNVJwFWA4!Ax+mSjK5}ri6Tm+BFgrlc2WI>+XjEg9KFOsBw2?%^NIu z+Ryd)v|}~v&3e1S8fZ#n$T^+Y42h(RN2*qunp#hUVxe+TIUBV)JB`QF~Pj2 zS>Uu0rd9s=*rxf6UgopuB3YA>I}v@GfRsH-)FpX-)*4dod}WxKP|)fJ$gr{jqKSj7 z3>)t0;UHjX)?hsBPE@6AaO3(1*ET3pwA^<$2|0#Txst8(4x^4lA$L zfQR{q*#!Cvcm>2zI$FQ@z39)OZ1$^4ANL@~MF(acb+AVjHDbAs>I+3oU-rsIg+i!%y;9D{ zB&y`LQaP0wX7Q5UU?NMF@Os-uHX%M*oc zfB8#YpF`ho`r|3AQfj|ve%_yG>7iw|)t>~S%d9tYDK(J|O*MnR|(ND4)<#`FB)q_nonk& ziHPF~-`F1~^gYL8k&jENpP#K5#FWmZYS8D&_xQL_`P()0$94}Vwqc}ibBzY6lIsit z)K&jon{{TjmLyFeKh0>F!$#WY$}~{9@a0#Ux!&ZCW})6x!wlBPFKpxtoB`$^hti>{ zX|8R0#<@C6xD}0k)7KwEJOrMv{Wf~R!L&90DC7jQB~Dfw23t4{Y0)UkPxKyT699$3 zi6YVrOfjv9PJ(Qm06=q+l$eJu8cjt*d4U*gPIK2hx1W5$$~&Hs18oLqH^X>)E^ zcST!$OjtR>+>_W~*a6>{E-Btrz8R1xF4V$`x8YuJ+Zs`PM&Z9{G-f%x_!%^0jvTricj6jqA7MF$S zaO<%Euww7M|3M+<<`YhFLPU||s2o6zht2BC{BTfz{|7%GU$$5UCZ_|)_raIbVUB@b z2Q3nc_u3;>k1A_^1z@pv^xR*{VqB5>81OYAv}brOvvKlp(9y2OJuQiuR0@5~03?o2 zG04#AI}y&w4Af&j(%bK?oawFQ(lWvO8}|tI$C*k8VTS4HUQpz4t8s zAr=yBG=8M%V6odSkFF_|!MEVi6Q4A6i6X&rQTK_YeX6Ew?e+_mGlqL{y)fNm*|Aw| z?Xk@B9NkW5ogQqFpnKkJwF6V;7oBcbqK8pNwi?nxhD0krxr(ZXJTM9+^A zZtWyg3$yk{0qf0h#Fa}`b1lk^7!948rB=yV<_!hyu06ATFG|1HA(I@AYvybme+Un! zA83#kcv@NL75$4N;^LZOv|eds`r-_B+g12(_4Rgje1a=UeE9~WtK5(1QFsKn>(vsa zYHl<=EE>LlJ6~_^cVARKwn;&#p~0IMSy58vypU-KBgoX-P8?_}m~^eZ&cUo3s(R(? z)d`#Q_lZxK7XQ$&$JKH)99iuTchDu{qmOz<{`s=6`=&It^D0WGpY;^kPwZjw#LRn@ zW4+jM_&1fjBLjk<%;kNYsaelVyBW+|yVEVL3XoQJJN!#8*~2=2 zu3e}=j4vzxfZ((aDfo3vN&DBl7eMw(F{btgHG~h)bh-P;jhKn(7{?%ci7D1i$Sh_r zX67yAWL-03jX95!KWP#$BZ0Fs5p<=cnh^>bGsO)SaKXDnVE2b;R>6gGI%XZl1qgW$ zyUmhC5}?_*U6$qx@RXpYeDNcB4De~9mYhM}&5RSy zkazhSj<1B}$B)o7G(I|s9&>zV{?-ojIX~lb{bkqm9guSa1ho_J?*<+z(^chtAE;SOym53n&bAA&m4?Hyx#7j(xORF?Vc)kizLMCaL*; z&*}(B}M2V4v`7N_FcrJ_TpC!e9#%v+s4n5KCYK(j|96UY{{4F|3t-hTbYxShqTLzXTCF@p9TdbXNUSG)S^a9}?J_N20gyPKE$Mt7qUM>Y@=RpY#*t6W=^fR|C*^g`vY< z@GX9{D~-785kLoYgN-R0rTA~$p51o)0c3Xcbi#h}ar9+-Fcsrj$E;h6=WCoGh)!J7 zqKDXbMgDXH>3X1ablL3;*`H?|C+O13JDb2(1D#xiba+d}h&D{xllM`&|KTPWIJQD! z0#nO9&rkgDv;8abufi>0H}vTPh%cE9Q4=aM>IOGE-85N}-7(Yx7vk`bvzl6Qls6>s zUK2;Lgo9Q`)`@C4wp3iSAid!(6$m2?97eetZoGq;0(@3?zBARhdd)c!AQd!4rSv0M z13_V;pqpkYW!U>=;8R&Ea}+|rOETMx2}x%4LMZcnQN?vgaEE2FSq{3~(1f!(I84Mk|&9%{9oc%YcOy=p_} z0##c!I1NWa7j|^`v-T%j9a(@nZhmCB30L}%utb8RLtu)tK;)TIY<4X0zeQz@HV>=k z-KUidm+UB~KDQmd@qe|WEehl&#Xo0Ia%eTDAQD;~x76RGgI`i;M636Y=?l@UkX9P$$3-f7or%$> z@cfv%kQ5?+;X-5$ewkO1Ujxcqy#e%kJK9MZ1oc8;%<9uTbn&B9Bfqm=%JNpwpNc>J z7$2P6^tw~1Q)6wp9a6kSGiaOfP*r=^&Zgal5kPr8tVkT52rP7ESJc&PJ(u#U({uRv z3<{82yQM#WygI!cwo&EQ4mpufC%Bqjhohha*C2>gwRhVkYlqS`cX6!-17)gpx`N>%S{=K`$Ppw-sl<$IJKs;#QLJN!gUeKXCc?qmlI95{AxunPX`!N z`xey2eUbgXKi@u1ag7~&o_asGKC+mAg{H3oRk7Z}_oc=CKCNhA(JvL=E)ChYmVIDUCJJhN$VD51PK2WQy@&-z6H zV`AP#r1fFYqV=&_VWW$nJ$lE*VG1@5DMc3?A&M@-M=cmZ=u-NtyX}&}$fnoOd|KUTKqyT)O)TsXYSB0qwx_p<>JCM#Jb;12|S1{eX((&ctVf}># zz)Aw`fWkWt1d;~s$+yeh3vQND@;xlYMgPjXk}4mmHN_S85ET9K==2X`<#vkY@{cso ztS%Nwk7H467*EhjFc_9j?>()td~?Y?^V5t1v_W^6-CBtsW24`&Hx`jwdT~7-sULq- zm7*mv(E>1OPe&?J>t|~Zx>QyRA)g$f?`}>XI^!%z0YgYS#j$NTq48=5qqujgue}bf zboO;#PxcgI_PNEY?UjZJ) zd#9B#W8thGiyasXYme*j<%FWW(=esewRqYre=z%8@cIBe5kdJfc%6dk6nI_7;9W?Q zMZlCOjYYwyH-O+4y9X=ZtFj(65MoSxin;Hd4vzcY>5z{^Q4$n^vRgX_atkwyRmBoU z74Fd8mPN@5SG;tDpJ~d%FDiY}qHd-27GZ+vFFA+W zgcevhN@w|P3h#5$SfGIHK6)Q4ptp_(v^Ig(?=2eJkNH-B6U*JQBxuP@K<_sR$)D3= zv3=c1%0o+M#KadW8j?i`c$zT!@+s^~S{61!(9svPM;z2UCXxp~c6 zrPuF+h}-InRrHc(Y&};;7PST)R><(Ll@tAWz7IbiA88JF4p$4B2|k}TM^BKe$$czv z=>#@faH~?*4REmHA6HvOByj7S1}@A%-aKDp7D{516TVCJ)@x~XwM~Yidq?5N5L|*e56oV_)@FY0gKf)%ez5{PvEdI zRX5$ioPcuD(Wbbr19J6}HAjZ%4NQlI)lZxqQNp&zWOO-IOLWOOWK-LxX)?cs1t zw=abp6CB0B<;9kAECK! zTWwq2^D2qI;4H;J{|UyTK17!gU98qXRV%*7#(&5{O#_Le78bJMAhz?Cj;nKMQa|6; z-{wc|V8p5}Tp;i(HqYnu^jiog`(T}*^kkrPU4(8NpliUn0NM?PEy-@YNa;sl(KG|1 zRVlYiSYZaL#sVm>UTIVula>DP%I>OE>4VV-WbC__cD-CrIs>gB+Nd}GH)r9K>CwPZ zk|t5>DA{OUn&^oh@y!k*@cec4_lzPewBYZ04 z@!@QWRnKX8!*9|^tQf}&%En{vL$rC`?ShfB04H>Z<6EOmlytp|lvikTqUx9W!AYq^ zOX|YVy9#K*eDiA!1Buu|#SBpPvy+Na`<7PYX_ZkELczOi8YV5~W^Dw2)$PLQYdjs! z`m7bU+Ab*&DM7%NmJvqq(C}&Zvaw=batI^Oa1=i_*6y0pPa{I5epL}PbU6N4O!#|o z+(qAuG8ZNiPlDhbUL@41v|YOfhDAih5zCTT#(`JmHFk102&TWq{!+gov9`JeR_Wd| zs+@ka)K?oBz?#_rkOAd2n?`Y(fdM@&PpiC!zBcq&L&e`-nR+dj3-OA-pP!yoa+Fme zV%7EueLjCDF1Y(e^P8=yj#p2S88XmDnN)`1IG`kbAa;gHiOucqz!htVY^pDIW-Zjs5kuIh(*YiSJu{ZPFD6UQcl`F_otS0M6 z>G6flOQ+xi;VVc~MEftAmw8S8gNhdFV6Z-4GWl<>M-(RBrLg~S^|CXkvbwBBF&7Ll zeg~Q=Wg>kRMiq0nzuzs_D|p-2vry3b0{n)`j^g3i(bB zOkje3gb+yL)Mzu87YEDm?V36ES9-+O_^+XV64 z$p+*my1y#H)IO{ihFUKo!bBeTZ>pkD!E;Ean;RI7PN@Le8sQ6NmgmXh7-Mohqq{!D)+ zjQk4}p*G6GdMYzaqI&FIA;WX;j>QcP%PBLB(M2JP)JbcML-5sTi^R(tHDltQPhP&79a z@px%5FwEJsMUw{Xb0^#kKaBNyRveJS zpC1uLX4wzGf44g!o;xmX*IX*_n@$e~S@BA&p~3*`jLzgY>3nDgTyO8z+IVuR2yZ+u z0^ln_Hc891!0VaeN@y!=e!7Ba0g96ioP$!1r}rAk_yC68+AeuE*5} zPDIoSGSQ5k7W2Ho+IxSFg_N$FW!JD=(U=D0zt>mwgxH9qY&s$LI0L+FcbyLPrx59^ zW`-B)3IjsuA`#%&mNY9Ahes^OPxrYF+ySO({#_Em5-9%vym3rp?R%Fkt|)~Lmiqx`jO z(ShF9u#}z-Pe&kHRgC#T;XNf<>(D|Aty6&9V`8Ua?pqgxzp9EAWvNO@tpIc6k#QO87&(r<>N( zP3!5U_4LwumeYEc|1Q!ChyG(rLdVlNi;NnD2E;E^sCEYP9%6^$ zsjxG!4;Q(txr~+9;sG%X- z0Mt-%w`uOFB0z^xzm02M1H5jp+et1+7veDhF*Q%;Sfqf^A(7P-lcYxdg{mF8$ zK`;8hF3O9l1GTb)LRD;W4PtV5VoTKh6h9 zmM`dxXUL%0O^ka0BqkoTc~!qKS~ac0@Spcg3X8M^o(^B@))wBE!%&@HOI-YcbE2B0 z8VHNs!O2GVvyxYiRZ%M_f*N5qC8V=~jp8gHc+YRpF%yUy3BRYk~#Aw*8NY1Qt%G1bH>_(Jip{S93mu~Xs4 zSHa(uVb=j^ZltNaY8wC2yR*FKf@hNL<%MT9VF-0sIK60-UA?mt@|icpew-a46aWo9 z+t(wdNz$E!Gl!F_aLtq^Ih}l%F_lTRl+g)61YTA`IY`djf@Z0E`ioGzAQMc8K6=bf zF1w(zeb_8Fr=Zb@-6&zcPgB%j_xhuj4mIgVztoIrODR4pCbh$`a>{PqIE%WL zKBbn~K5ml3vXr5MU%;b^3!BUXqtXigp}Hlopms=3-_i8*fGR zVAhlp9gl#=(cgUv!kd4dKPZ$8x|=(4F?-qL!gXNcHAA|SHJe!>moN-*Jo41~8Ssb< z0t>%)STCOgfcjTt6F_U@E&Lv5L%QvctbM|CBb*Qs@JU)GBwl9{&vuYiv_-wiQVJOJ z(TDA9RzI*IzhpoT*N<&>@^)MLK6N{({c-)MygwYk2KSX`0EHQ{zuXz&QO~No2p-(mU*qM=LWkS!@nYqXDac11h`2Uyi5M z4?iTBIuJ6|?YFdWgDag6I6p-sn(i0iPoILszE)}^YDnG{?N8Q}mwF(#W-W+WlMsqejJB$R!naGJD-7kjv9kVgH_pemW_z_{a zys>xtDyMOt#@gx?{{)N`Q3Gm&pW+<~sL6Mv*$8&o42u|=x*66l1fBn+-{Isew&4Ii zs}{BRv5k3|}_w%u=Y6-5$ zZYI0sL)SvNR7$4ig}*FPUT#F8&K{15&4|*>c+PIO-~E|R#|NJZQ*&8N1E=kcS8hIg zU>eZdrpTL2yNAu^^}|<$OICJ5fR4X@DXWDBV&hkt{XCR43KC8wN0VJzPmx0sKj8D@Z%3L+v z1hx*%$~342R&#$W>Ly;JkM|4DOREGtb0C{?uJ80}(#}5S%IK&`BJ?M6D!PWjaCb_{ ze3qMvR#Q}M=p#xh&r9MVke)6ZNSnuRQw#)dH6a!VP#^MUFfkmj93dEFWhdqiq}JYm zp(xT)aCFL*J0f+kIhkP1AOD!qt442dNo&~E_>)9*n4L4B_j)?g#HZP=lrE507MP_) zqbvsSafkSHNbIkRuu#uJGoL^E;DnnQaL%e^S2a1H8kYAd%%e0HR6G?mH|qdB{aOSN zS>$G=X-^xw?Ty=XpR1TQ^mf(`aS1&s>zpaLH+Yu19T1x-y*K{gU{hUnuBA`~Q2$xf>VpBOqF}^fzN-8>zvP-wzBm1|;o_cco>CEg30W3xL7?kk3&mr_(3CRx1^!PHxF2286#wgi0Ah|U3BLwaIi?6d}2 zJwxxmj&?~FtenTTsPdH*o9ujq^mS`2g&0@|MXUjuS{LlGPC);1Ive(xCyhC`z)mgd z%BW{WVLf$$&N8Z-At@j3$go3sfpT!^>FLs!MVp;}VK&PrsdY7TQ=}opxgp|ke5jmfLZ0{j1vy=P1bmu}%1tuR!H5@Y_vw|{n zJNvUvo8If1D8wuG(=+4vmiJ32+~OKy4W zL-L%~v7@Gn+=4vHRf69l!uAk*V?n>^w*}R>^?1=divDTpbAuLR3lJdhcF*yd@Mpe` z$C-Yhzci*Z9UA^~WO&9yC;O+>`uR^!hsAcad(2vTj~!Y!Mr0MBSc%KTisVW7?a|Y@ z73L`$E2bGvRDH~aQ_pZ+qD7u)G;<{OR`JYNYe<@@p6&Zm0!k)W(Q`TV&tkQ_j?qwc z5-mKTz?<$fZ7GthXz4I}nrRCc_B{xf1LkvZvb;~gz>YaV-wE#R&CxRm$A=F-$a4@Y_M*q@2xX=Ku`<=CkmZq|33ZTC5I3;rv9 zFg4JjT4$T4?~m!`6kO2(4E4uz2(1+!H!Dm|%fk2He-B5?N`#v{I9S!f_hC+3B9)C- zlkXOh;b^bpfBv2N{dW+2Y+)kvgW!Muoc@tp^u}j0wUy#Sj(u3(`IDj_P(VcbZc9yF zevX6RgXZVO0dL}ymH1lh^Ol9g3FMPa&R^rd$@xKIiAaMRBfMDDOVj3r@*D)vn2Kk* z-gC|)f@!B~F=tk9XtfH=Mo7|iDKTg6Fv>*zz%5yyzB_F0CLj7k8WJe*DdQu$m%-F^ z9relqUs@p-4;rD7jqGL3im`Cak(bM^)_b~DtbL_%E{>)K%F-a&D z*H|)?Y0|`}O5)g6v?oI_S{SBdy2cuDb$q(PbUj?WY#yH;e}1C1U!^+JL}|$x0^0}+ z4!|E$VB%6-I_R*bx2>PoNO{we66U*dwj)0w);hFWC%st{?ZOuWSba`;Z_BanCd z2CcTaW8VcZHQK;RjL-VBdh3Ck_)zgDhHU?5vB;nJ_dh#d?l%u>C-*z)_J=<>>X7pj z4Z3{#yY+k3LFy=|G98Hi-1}S0$>MJ|hC}sRgPF;=R!b=(kVe$Br5;&YIq5+m_Z;9V zUD&Ot0m?=w0qeOiJ7Y`OoUKgZzf&?5tC$LcPirRH(C>M`Oe<`+WK0-mtI4=!j?MS#ab)_&-AC&~f>pBWQf1~)r$0$9`R z!%R^NI889uUJQcn#P8FTPlH}K^K#zzo>!_=YNblktCq@S6f{bW>bmIG2KfyA#@%7P zdV1W`F#NJ0(~2&^<7NxXgJgZCct*0I@=qW{5OqmCg|^CI5kk9kSr*a5P{+ zZmFEZ@Bp3lk=5o6+w%JGC*5g8+Il^mc`-V|N1?2xLupxN=N~8Nc;WDvP&cUmsWMD=Y5f^VaWk{%_fNMUMIQh*p$jNT9{4QZ8B<} z>{x*2ovQKtFKD5i4PLu;RyR7uD;klXrjB~esQ5pv;J!yUJ;|%x>yAE>ed}5x!Yc4C zn1|OnYX#+SJZWQ`!BET*MNcS5BwNgRQmI8G+S(W7?)!5D;+a7N`3f;k+*-sg$wWCY z#dk0S*Zb816k#h>Xe2EK$&!^d7%nCgp|b+y?7~iA>BNX?S!$~$<V?CC- z(v*;1rD}$Yzz1apQQ8CFkia`nJd>EZ69Ojf)`WRGuVszykS}~WZB4GaLr~exC6>+N zNM1g}^fIp@>RwS7ejQN|xhZ*sNpE)Af-i zzYC{Y7fLdVcvc(R&4T9+)Kn@pY+$zbOu`mz#jq`_G&M!Myq@4%=M9yvL!#F(VTW|< zKqcdz1cMezjRoqi!jtjFOa#YELib%Ye@Byjm_NQq|Gp2qk`>LN?I7jC_z-B zu@Vj%x8}34)2!$!#Ne>oo#@ME_fL;Ey8Mu7%yBb7N{Y7A=Ja5(B)Hxnl_uq!@LLKs zO2~q~c@%VJd$+ya93E{V^s)g^L@)!dOzrW$mI`e=e5V9xW6jxA9fYSxMEoC*HmE&p zjH@DO`8b0r6`C;*)pa2eBsqv5orDC=D+M5N85|lHl8it#lxClxHlLzsL z>GJ>$OtK(p4U(sO%_EB}pVQ`fZFNv82{`v0YJUrli{odGNj$Oy4eE-hLvJ|aI7E&Q z=XC)e7mFDMB{G6_{a*Y4O%FojJe&-C$KJ{K?I9c6bkT+r#~+6~D$>K%5+e?`;-NYo zcgqdT{Lb!ivDrG=c#Allp_r6bnQ|%_q`+P$X-5y0#4_~k@GA?+wXn4USH^;P<2%!vmek{HgX~_g3ffFat9aDb$ z!w(U9r_7`mjCyUS+|018DI7yxWd$=T<%Zm>gK*{G{QknBITNTOo3r4gG~MiW4?iX9 zD;U<9VofDF8FNaw!Kb3c*+H!hQ-iy;BsF-1Y#ITE2~8QyDkee_QL8V?vhK#TyLt+u zffKX9wxTw7Ji|7T+Sgu|({zu^<(h_yz7v{d!$xg9mVVCWorz;@GxMYb?f@&0L}j3~ zc{Mp4XY%|0hv0ABDO8P={)Q)T1F*!xT{e1<{f~(2Kr~yIH}U!iTmd*5D=Iwe2Us2~ zqdLL{@M}1q?Kh_Wcuk^cF`8rP$B{Gh=|Wq!G=?-k0S^&P z^{T>swTc<=Yp3BFth-feA=2SUn&W}4yUFJ{F4UVM-WxNL-zeOP8_O19szF?c9!Lan z5h;HWdPE%>bLHtxc#P*zrxA})CI*h^EyFtgrGnBv}! zDOzU`eG{UJ07F9duRqlsp^oDDJE}mN00(Tyh&clNgWQdTYJ>q5f3xCltXD=e*Y9>a zA@i=WaOr_;0W8VI6iuLG=ExPXpd~*L(WDU*n?#5DN?1foZP?YSxLhgzgl|tm};;?E1M8Qs&Z_uyN zX1f+d%8(E;uq4~?gfvR=a*(6q;^t)VD~fYgr-&CypEY1IBjkWs#Z0XdIxfc6%fs%t zhC0zJ+C+r1QaPG|T3E!RE8uZr4lP4N!a1iNY9>!YG8u67m;T;IB}X&WtAuI#=AN ztgisH-X%A)IqqQ#F%`s)9G&$`a9DitaxaCi%zR=sA|pi?`)mGNF(Xx`I-&W!8f1cN zCX50(46^Bhn)X|7j%q=ARgDJ)Brk#!n%6xnVO`_4r68QyQ#bC5aF>rQpV-y=^!%Tu%& zSqpZ?)+|`iY3^gQkN9QGggJ4dHns;JP|bqA#bGkCwWt9HWJc^iT`_=`Fkg=Y0~ z^t&OpwFLMT*;r*{sP??W2g1eWVsTpDw^omvZLGK=aUh$TKcX=#ic}1ehP@+6B*x#2 zN4-8>Cu>_3)v6*PO~DJmAzfXXznd|v!rApGBBmKBUW*VsrZ7%AMNFvSJ8myT(?3>za8BHHv|?M+*k z4CC{vWt|CSK*<$(P~$ncH%&^{u$u?hGhY=;kX2W;`1$C$XI7x6!+JFWQk@nsow92I zXvJ_*l+G~iO2w3Y&-+d##C-t-_a5pn9P%AnhuIVDdg1ra^Gaw3v9T)!d|w_F`l1^S4F9$WzsNRS1{ z_H1n7pg{*`xO>fVEA@y)^CmG)yl2co1+2bvwMR7a2%V_gsL&*}*gXn#9Pc&vMAiM% zO;iNecek$76wnt;I#ppMl7h(56}@bPEJiYBPR?%YUjj4Aif&+hNK~fq`T%(V$7G0N z%CTW9%%>Q8>a4|qkY4}VV~0Ubt zxy^A$OUP4jDpbLCN`IA|KOPN!;Z-0&^*IOk82KEfSZdVcq<3!z_d=!!^KAAIOh62- zOD^E8t_ii9Or!)^7EWmI_UElwoLnJCJ(St%j}#7)S-a?!Lnn`m?c#2IaI$JcG!M-L z&rv7|ilxQdQ~F8B-H@8K$wL|sY4lEh;XHs@wLX^F##S{LZ>&C%&iMp2TB?VaMvN9F zC%6O#Oe%7x0VTJ_w|tRPF0;JSPDS(>3LjuWqw%SUM<13UmwiQYqQSG#rc5Fr z7p=mOgvD?cVHuFnwIe*3;0tL>*2d6&#$kLy`}uF+39Zirv|_V7izqC}Y@~yL@so-6 zF$rF{!JpR)c&4`-nj=yuczBNQs!nxg{Gp$+#A^t>%TVPWSP@t2}r&}c}R zH^=UZT*5!w9nm zImVCmpga2Lgqvnr2Z-xKf4V;IX+*A_uo*xkUYkd)S^r~KvPF)$c!Tly!+i3l2`k<5 zq4L+{H4m>J3LBq)~Pltmab{V)-t_4?EY)LjaWbJ)&%th zk|2&6K?noKj*BsrUjE9$jl0QV7hD9KTlUu{r%|EnYpN6_VzSsGQ**O;z{tQ4rb~?CIf}Q(wnx)}n&H_w=3Un7b)RB;i%j-;frHJF9z&T-nXip+&VkDAag$Wk&IW z+h`2v@#f6|7zfaQL6hp@aJL4hkeLhCSdUS0jFh~9gCV&@`$(|x{-2CUEker>psk!O zm`*AjoGX=PI1Y1pwio-w&E{cqf{IJl{}b9AyOEa#Bq1J!lNy(O$(yFaL|)+ym_ifH z7w%Oux6D%Zw54}^Ua#=QWQMUwo4jU2vrhW!%)c z0t%^MAPo(du>fBdUysU>qj}71#MQ7O9U+Mo&!mu7f8qZUrpBX*{Wo0Mlq7%7Xfg;h z0e&&lwMooY2fD_6JGv!%^b~Y2c~W5rNifs#%Wn%ZJmcFITd+PtzsSkbwn!Oe*=zg) zd-LSTiy=%D`A?n)`aWQ}WO`J}Cd}9IeJ4wQvSz03w%a`Vd;RX9gS@=&)M{>q9UA7Q zU^Bx|(YW4uDw!dvADpS69hPAQ~^3ufBfoW8Qw*(S<+&k5i{ znI-}|n%e67Ml>BZ%5G09oJRIzcduam>X1z1H+OrQ^)SU>;Ax}5U5e)PVzhqT8nS+x z;y3aygo&enq2LQzE>h2W6OuZ*#DT@A<#IzX!-p%ZHKx{x)*ca!vc&nAj87O><_w~-@G_}f4^Sr zzo*}@dCr?}>VH&$q1naYSA3x|E$lbbdb+#$hp;l!yYpwhfAdU}%?d=$HxK!kV4}E# z!R46jd5bnPw1>|MubM8Ax(W-Q^{ljbtCczfN4rQBnS@w~YS9!~bUQ$SpWaLp?4&c% z%C5B3dzoQiXtBemj+q(qjyaM>$smjjALDN=IJ#-nhgaDeoDtY~k0F{0rLip1o73*g zG6QP(5qlgC7&J-|qU1E5#)B>s8_vZ-(a883@qLj(>HjRuYS})3;EwQ4DK`&k@ z1~t{6QVgmq;S2(GFm5r~1G~JSpG3I|&uMyyB7^^`@OMn~yT)?ZY|NSpWvzfJpN#uA z=2AySh~isIJTe6R81htCUGP+k;aIN83k=0VLmQ1?#XYRIEBYvQacL2qc7M)2F8)z? z+-&n~itvFzQOP=gbX3c*KN?S|{ih$P7rh}L_Q>JAd7}z4nN6i8F84b#>RXWlnwK#mm%oT6uxeLh-xir8q&`qAn$d1I5QmocwBuN1slY%fo-@n9|KpncOE#ryZi(e?4O^H~GF38o zz^|N){AjY$bL*EqGC+F2Bn@fUxHl}oRD@h;hsYe3G7p4D!wEnaeFZ#`mn}5XsyT;-a7!aE>t6Vjpn6>dHVb0J*}P@o%iREJ|Uz@|DSa zQ0{ou@`In}eH8PyMvT6cWGZ>yWEu+blpD$;L zGotb{rpWEvtu{?AlWG5BYo_S$K}6e{jfZ`dJ_+r0+2$+55Rc46NZ-X~qgEwm3#jr; z-zk?=?F?7RSamb9Zy-@3(*S1Ax5i|wd(4CjHDzc4ecmkB1Id0lyR`gqdoLV(68$chusc?)Fx8mE_^E3{)2o?*aK<&P$D-RS4;?G z#3ZO;cGdS)0YfPSYQ};%<(d@Gh-1$c^@m4+s8>o}1`+?q8^jmMg^Jcko~8MTRYoRQ zeqzL{slH4a$tqo`Ij4F3?x5#b+u&f@^dtt%6ig6`(;Q42%?_JTDmOaip1?b8FXMa(d@e=~>1@lk3kK30 z{|Z&3p66wzgZ{8T<5CK+quIOPm;!TMtMFX1z~Uedady~b_8hm|K;1*T)$h@BoUur3 zQZ>Ru5*(!x9-Dyd`A2*HEkXFS1mdHB%UXpoN*+pYk8_9Wj`@rh{^EqB;B>^1PP9iB zMcgr6`0P~4dkO-@GS?&9an>kd394CHm3AwPZmBysQlSuuqQJa6F*_03+F_GKBQ0qP z2Q13;?$9Ensr}$O*;qrAn_0@$Lx7S5*bpG#-^I56VEw#)&~V2}lSzTzC`6|ouhpTO zY*#vWAPjGr9=Ds*X7O-j{O45BbN5H>!Mr1kN_bd-tYnPITOHz+o$p=7Q{d}n9Y0g3 zayF*(TCqw9i}%|>x+{G4h|X69GFFWBj!u5|#_GOZ93Pa76OxNuzPUVwR{@a2ZV|Wuch+DDWxJ*Rd^0TYNfSCX~ zV@w{sQBK1AoFe%B?*r?g6%G?&+wLcN@PFfrfkK~$_3h~#z>~df;m~T6MK~gJnR8Yt z&QVIYD8g4PN&FNQ$AF@|*QjMUm`X;-IAnDQg(j?g2ST)-CKs0Asv$8dc(p+W5#HOw zVyQ6ehFI;#A9+qh1*R&*%tqs%Q$y9v%de@dEjI>sfgn9}{p~+h1S(o1SfQT6_=vyA z6;I|DWEkp705;dy<4wP)8( zH5%e$3083on;8`ONoD=>;!v85P)6>f=bQF zu=j@Z8G^AisdPAuCl3XzU0|~MkFe-L+j2n$<`ix?Oejz0``iPSvezV^clFNC|_lCQ>r?FVzRf;;H}lig_hr z0QR(N>$20O0>=lNmaQJ1FX%gEBsAKyWM?HY$1ytC?Yo=J!+J(j>i&MWU5}nXa-pVIP z1I`#A}MJvp7Vs{x@g3`PpTd*Y71FIH;VFFbU(_cc};>tjZTDd-z(`YD~6^tz=eAKs! zBBqj6;~~)Daz5na7+@yzdn3UfWWq#c3@BQ_k`zL1wG{To(+|2FDs)2vFTS?d)iRv) zCC*WZDyEFZibFs~RFP4h!qjnm;e=sBvD87fMZyHCvZ<;l@lf&v6a@1Kw&~fK@qAzv zqzEIZMajv<)bbN~juF>YG@wuvcKFK3b5~geJZaMk1B8y7MtxvV!-nd>`7Uo*5a=iq zA2=!)n)@!F%jZ*Q5Exn|0Yf&FPVb3}fZVl|=FQxF;MzFXaDd$!WP` zLcI%Q-CrFX<)i@m+J{Sdi<8WP4!p%o7Isb6>by~Sovhl4KnNuIXoCouj>cBNbhQFz z;3?HSdP>>|;^V)+A@JmCf~tP2suHT6r}=YQlL-Lqbl*87-)&?3g(QS-w^%NB22v9H zk!*?alx-j2!l19WxLuQrLsLeM|8jjq>;SK}(95B_`msBZ>IUgvaM(Hze{F2NozYk` zXfU3S878(r>;Rq66EU-BK_JS>(#vz1+>h<%j-ls^hd$EipEj%0y`vOn#p{D5NF!f` z=n+5k$cG3M{z#MkT4;ez;j8ReYF?iohIEwB>pAK(D4}SMItik%ls=J3U?>H(p?FoA zvLTkKPgdSX5mj~+F9S1MDlwF3<%X(7eOF0TYHg~ii_!{eH1M?QD{H9Hw8vBw=Q8Zm zc15Rb!|b{jDRq)c8kHphV8kht89@#VvaI{lJ%iMi59`JDY0rN4`enVOWe#T3^5GVf z`}a)xy4r0{jyXyui>8b%>8#uGus#9b=2k0OUT0`Bsk0EFz#=)e!1OzG#}l&BR%PSIa4RVs9vV>Q4sT(r%5~G);B7z3$XTx5V1t1b(ReT|^|i8@hCp zQDBG`I&!Ma>EqLH9*kfwkq;hpnAFFu#wiX$XduWP;UoiyDXFWP$yxk!dE`~&=eGZK zds@5%&#n_5Drku)R(&}hgT->W-h&=syT03~ZLtC!xyZ7KT9OmIYKUdv=`VuwH2_ zRrlJdHfi{>qjtqFG=S)K_kHG0$Srxv+#L4@I&sz%SB-Z6`PJ(H^(qyH~;U&blxYAlY+^6*D{#^=|!rC$1*gpkgb_9 zoslWnoiaSusg#-_McRirNgC61fNh*+?C$lXKjkP_o&8cl>w~Gp0lkxEOzuVHcO9=% ziW2|#2a~dg0=ss;gWArYOr}?1;L=(=|s%(`Ym@V;^hrwP;Fnu|Rjb^1mKWYg$M96MwyQsKJqzY^Fb|L7R$WXFNY} z;pTty|4W6}{_m2JK>ug5Lio_*n}0A}g|(B7QBUn2RvZTJL`bJhYgU0{=A#g`pv$mJ z^(fGd47ZM)t9!NpE}g9{wFFMFFzQvO!TtIrczk*| zZT5=;U|*s?gNsc^isndB9m&RV{-4J4LFYn+jqTECu^b>ciK(+*}p!;c}BSVY??DlDDno9D^4qtH}D?$O;V6f z_J1Rd$sm%p{PpAp&QDUVvfNia7ib5wX&0f1>g`b~(CVhngXaIwXX`xN(m?Zhs>)S4 zyWjf!ouA@Rr#G&50@n0f+a=`E1gpbtFKT{BE|(*}lDnB<&2sXRI*{Sg0)tuyq|K_F z9}*)n%xPW#J2%-_tr5>G46Gs}K_~Y5K9}#~*Xi2*ycGWF%6`0(n-w1Y-H#~y1E^Mn zEyswJ3xqm`kVZx98wlxvspx|W)z{z)S*%Ppqnjn_e?u2OjKOp1*T2GjddO)Sm#{sa z2Cl=W$&u&v9HQ(4-u|wU*QxEYq_)evVjq?jnoXVTv|TAyN?9waWYIXb1-H}bLQcZN z+k{v;%P(Sp$9*HmYGmdIUSOHt%=^%|_WLwj;daX1GzHmSsnU>$-16zLjzr?P;nfHn z(leXwozM_kP$aJs!zQ62Ye}25$zy6w5Juxs)Gz_%u2SE{qEo9R$n|NdxCZwM6BqLN z*Q(XBD49j77nZx*#gd-mWC;VhzBGecSv4S)Ch#vV&virzCi;V9aAji+S);4e#M*;- z$mBYX77aY;Z`xe+7@F0d==B&CdU{M=4r`u%oWs-2*Ff(@(aB0jIE}>V42im__X~;Z z?Yh5ctF|fMQ(z0j$Mh?rU(xg{UKDjdWf?F57_7PW=xH*WCV`_*S?$G{NHZ57X^EXM z{v6ZSVJTMhj0dW<`h1+#i&u&$MxHvBC7bE5Y1XK|5 zO7afpZFq=o>1-6IekO`j&qi#z#eUD^HWEzAMa?~Pq)@^-Iq3OT?L|nTE5ynym}SE= zg|N6GBq&8fED>e#H>`>@g>jAMl<^61cts@BMtz}h$?#^D(L2-brQ)-<=4mgPhtTmH5MjkrwKM5$F(XV zjmq>lmPN+ipH>^0Qs(27Gu>7{P$HmY3hLy=2*sZ&;;2cT$uzfQS8bLwWZoRT6E2Zh z5GMV=dvM(EtMyX7Su1 z6I?RQ-54S^5xoW91fuD=xTDWI@Q3}ZN*)hRHl;DEiS7oMfdMQdj#3xLWO;Z%p2x!M z(r$lsgu$j4g7FBId#~kAtZtFK33|yjr=LV7`pVl#QX4DDzVNW#-kt7Qh9T-y7Emm_ zxWfw<7h|GT+AJyx{$1WkpVMdOtm8Vu#zt=*s0E!>$LdZUqM!5~yX^&sPRCK_9P=wgj|ON)m2*8`k7f0W(`Tm8W~3Ifo+r+* z1*&Lx112a@23>~AvWW1sIAalR2Z5kF0DX{HdzN>KJES(FI7l7K^8j7@)auWA9RMO7 zpke4WGz<`piPf&E951p>%%9rTrh&@z(gEhqrN!*H+b$kL)t_vlNj&o{En~|CauCKL zzq1W+#zrj}WWI!B_8*hhhwd9?2i)gX0lWy*!@_xl8al_Po8$7Z;pHOEth3?z8$^b+r0}{IkiUQ)|Y^H$Y#c6r3v(`i5MR5$u3to z+Gm*0F96df59h&(_Gf2vdmdyk5qiK5U!4E1 zQE>j(mr~aG!O8x3$fD~rK(^UZR^Eo~q)IwcQ4AG%{x&tU=V}``YmQ&&*KhOIJm|b(4PKr)oKjge>H7}-f<-sX^ zUvE^)%?6ptWG7cDjdH13bE~ylsZpsm+-9R*t$VH(wrq!zcwVSQjiSrXD7oaNrWt_e z-rH|)=ra{2L^TGpFFO@qA84xwtG9NmLxx9?vx)M8%2zpcA;U~S#FA;C1R#v_KqHNq zSM_nzw#Sh9?Bt>=?7P%btih0J)0ki;TU34uy#pB$sx=~J-q0|S2sD?xK^jXOWI$wE zZ7Wo9cS!$P1s+_S{sxlMbWDM9hS=Vwr&V3-_JT)G%D`G15EJ3>l9L^2D~v-~fL~*6 z*c>0$i+%3vdI5y3di`Hcg?Ukc(hu8c^*{)|{iJM-So(tXlB`r* z1%a&4EtO*uEtdivl%0O#{bnHQ3AuNR2E7=kOm_-zy=`U5SJn6WFWw>wQPmr`gQ9<+$g)nyx@ z3gPU^8t)k!oP53)^ZtPBp&&3@?W^&axh^MDSzSThJ~2_A6HOW_lP8;5O&NLfbW0cf zq*)_THz%eT&3V%nP0gVD05dIH4n8gER@Jc2ag{-fEXtI&%mn4zESf%?&B@AX2V=4& zMGLv*_g9)p{H#j0>0(Bi6qtzO-3$qgba;x3dUc<{DM*!H4O?xc_#H=kr_6LwgttOQ zS=9`0QG9YQBcR;(eFi#`)n-xY(sgWD1jXd12qpVV$PO0L;-7yIO&_BlVU~GCClg)Y zT@h0jo=7a?bXu`6O@v!!1U@&c;MC6qW;kU3#AujcwK=Sj@c9}(0Y|4^Yie2t)Xgs8 zU4*m_?cF2Ddp3&)+FY$eZU<#5_CHEgL&mX?Yc}wJ%Q8*wIA<|x6`TD+=v47nmQpU< z_Xq36S1?i`<*bB9QC>9OuebP#i6d#^s&7~mY2vEp@}W*tr4@xJ82~^Hw$k3f|NcLv z|NX5>0SS(XL3}~hHEh{LGoFkrjCHUHI&LGTofJ__%4VWPsyw9ZBtZcic_*b;Bwrxi z;?iV7RpNMV^|!8U4_b^hfG>;+O?n2UI+*2S@%7R_?YKCUWGmi}aIj-}V|q0%L|q2lcf=dO-|BYu3pfHw@I;pmyWwbkB!ikq<^54DwpD>{jY- zqg1Uno0TdVl|9#UVUpKt)mlTvp{(#8DmeODtdcYKPp8|4Ay|H3Bpia!TjC5HtZ76h$a)p+b*F%a?y_2(o}(pS-|$D}p(~W7r)Gm@?50O3SRfx(`@C z#DC_^O_2E~x&G9JmJlQDvLDmkQJ zqKVd>rrX!CDpN~U#%L?@JTpc43{4qOk#XzlR_WEs63TVUr6iaH2K6EhO=5#d&?(0O zG$)oUP0)5s>z=ru*X-?Y$%?UZ%nEocm<93f99nm@G3b-wI-)(BU((8AI%(>BLb-XLl>9b+D+P;Kb@ zO^eQ)$xNUn6{{HI3Y_26g7cceFc8W4_1AAj5vP9Gy8y*W*5ubGo>ac% zjX@W~ec~rRB)2O!z0Bz`KoBZ6#idwm@yRXZkmFiA&T{%K#jHfVCeyb!cTZ8{lIRdcKPR5h}1xb|mt%FbSLTRfX<=Cy^?th2o`><$@_YHepa znqV|R$yQQIMD|R`Xppl-TXrWEfbCz?MS^h_#Xc$8_Y@5(?n@e}fDnlE-6` z99Ff08P@(*`4K3EVP%o&Iog+cBBz8m{8^Mha?=Yj zRRKTXh{hzBcn?>k!!rN*ba+~$5}kK$7Z1m^u&pqZ)kO56<<0P(l9w@XBLzP(^LS41 zCoHO$0yilDsJ2#j%l-g*L&{>XXBj^IVJxM@pQpB#T4!B-D!Y!$lggPc!ME6+ITlTy zk5wsi(b=dRjM*!%BdU4Rw0CQHddsEg(ceta8JDB-N0B1$*r|xjkHp z69;1+B}QeRegcq5pGhm#7fx01?UTC=dKdr-ax~LCJ)8>cD*m@4YF19a!?mPrx$!Es zpp%r;(o8P zueSf1MocHH>(kbyQ)$?IePAQ-%APGIA8Hp|hf?xZBWslmE_xD7iP7nvjh?4b>V_PU zSPL~bxGadY8eU<-JUnb3H>glJ?w$_Ib!OI{1VhFZ^;+}6%&C@Za~>5Y;R80n;OX$- zL|S>cn|T7`j2;6NGucBY8*7m8r7-L0LNY}K;F7@&Ofesm?Cy-&MBNw+BE{#8!yNLV znj{9jlk+?yD9N>U>xEFgU`yz0cuB?z5|M=xRtA*d8=GL-{Wu2V<~&AT^+=#|`5y*S#b#>eY_lxc7VJ&_>|~_BL-7x7`G;kbNV`KQyS0`@8N6dG^cc*M-qW&5F#>@D9G*l;6{Gf+(4Rd zvHZ+_EPHh@0osEP!HkPE)6!+{Q3E-bGz)#~R7iZ~3?#l{F!^vDj&!o?!)OQOkEQi0 z%0-G4>>F%QdFR`fr(W^NEbsSbCW>dZWx59YT(7cp1UQ9I)`h{rYRFKUl|0|m@+6wy zW`ukJbOrNL@UYu`hW)8<|2Tl1AAjT=QAET}m_3BpK{Ts=Lmk$}xZ`mPH=YP1+#>`eG2 zbH?Yi({HWOc>C}*mVX0UdKBjrE(dTPXFOAzbdAAJfHW>DU_2h>b_}IF77pt>+C?>vVm4OxQ69Rhn577Z${P^aCG{b^hV*IXH#b+;u&RBw+QGRr|gv0ulLycg#eX%KM|a-*uV|z&@t!kDy0vyhh!f zhTMLQwmWYbkN(ws)Z`tDw{EE2^_KEdRmYkBGp$=g$IYi;<$D540a4VIluosi)k{5>bu*0!4X2e7kDHG z5i&<_9`sVD%O2nEHV|UIJoe~Q@ZtO|pkZWKfcz&9?wskMZ;l*S*{_L2RA8@mJDgoq00;&AwXw2-f^e%= zma0#q9&wIDnksq#MS{J6{#^FFAwVXDRUss zh1fwPb`bprxkn1d7>)}07tbR^9Bt!JAW zfIWM{Rs}zg-cRGHl<+UPA~1fKpDS~`U3~1yD7qLU_oeXne(7<16CWuQZ1-C0lEkw}_X`Q&(Lx zXf2it4(QWsHZ$~@fgDUW;ikoS%}>H;b~zq)r*t>Q2$#}hG3!qTAeC%nm;yDuyX}8C%LxvGHNO@ZYePXDQnSQ2s6 z0(f>ori1`dn8)Rqu9qmsgi(d~0c`o>=1#n3NDvBz1%rwiIOf*0)g?gx2>l%JDAU;l z#i%pTX^fH29<$+?Y8Ia9tnVI3!jT*|-igKR)x9R;triR4q<%>bMb}53|Btka^Ai z=zP*)h+|0+;i-WyYrwQW>$h8j5bSOvTv#6yyxBBA3CN{=0e6;bk8Q9;xtidYq*2tF zX{K96Dz3Oiu*q@P2;=x$bmQt>Hs3f3R17aS^pIOh-`4Ot!K$UlPmww`G`|6A__f*M z)Vz?T=`A(Oayv4JIq@tBomf8Sc0P!tWNZo0_Yi_6gg_I~s-<_@-XL04c52Oekw`EJP;u&2RGM&<FDg{&{OGvO|NL2(Ay6~&SF$t*{PJf${Q75`nfTxNl1zVs`FKo= z!EoZ(J9uhiBbXM^a66l^Do?^%9>vTV!nK%c6^pwrVI{vKrBT9$l2vp{j0&rexikQ5 zOJUAJvB4m?Y`66c#$L*Bf|a`k%DqpmNzf41LvUj65rQOtE^F;%GpF5`huxR;L4A}0 zRXJfct^LW=5UN~S!{pMG+DMqF|2*+OI9dEvAQLu=!2KTddyXsAlm4v3+C)i6+kSDn zcgpoj95ySA3IJn~H`8^>9;1zUIv3TyC=y&-YGRr3+AxL%f}(yQx6jOnJ7-ipavX|r*Ia8-x`Cbw20M~;t%R$ND6x=&D zjxj7<1%k5g`*X!8C7F$A0pGh3Na+QAf<(f%#`wQf8u#Zp!?jSVL377-v+P2#fiuQc zqbf`uFxYH0bQKvx4Tm4V#9##LOAslbI+qxY@0~(xc&z9mO1aK@GApb0M<10{lE#g(8}{l3I6*5Th2(~Jt=F8^eL|p$4_#u_k>sufYy3ku*ga|v1d{1!) z(~$3B9GJ}kgSjMU-QsuQGanB+PL^p+t%9ShLgIn|V4%>r!h+!=VLBR*gi9~72TQuW zqqTee;-a=X+|AK$!J+xX>-Dd5C`#;gg1>dA3$Q^HA(Br(OcKR*y5TnO@ zghYZ~pXNK~Ury{8=UVxgg5jfRnCC!I7=Q7sB`8AOT?X=jEX?iQM;I?{+Ri=aRec?` zicJ$NX)pH&I>HsmPhkb}Q`WM712UVI=A*-Ql}LJr09J%B&Mh`8MRbZ$$Ym{Iyt5f? zIUey160mdf3xnN)%;LutBg!9FZ)43-S{4DD^JQieHx4()&>y$Dk}@q}5s;`feNEgQ zoOLe7W8nt~4LLVhzw99ib%N|1ldPk)s9TE-fUSSiET&5iTVR)IO+KX4bg;OI8>pN* z6M1oFOz`rS;;oU^l0u;o=x^v4%P7p?m&E6TY4>L`u&mm{DGUUECV5ol8(duoc!$ZJ zRR>?3bhT;=pTFeg6rXv~O^?-xndv1UTeyE^`cPGcI2BC`$$O#3)H+AchB&Z#w8XF8 z00PAOrvU-tbvpbgvKchJ0Oqu9k-+mbm`mq@5bMbKYohQ+uwCb|Sk4cLw}j^qW+(YM zc)iLdg3z<-Yhb0{u6MU&IU%b@jyd_cyj06Z@uxs5DZ4} zn5goA$TT!-G5w}k>KwJhI;9iUXu#~WUP26tCvTQOy4{d3oaI)TtxaoIai;P^NFRV7 zAY4AIPou)WZCzIJ>nJm0Z%?Jo41zlVcwSzD$Hhx7nC+QxMYpLS5I6r7gDuC~%=KV( z6E#}tR&?CF{N?Cx-uWZ`{NVgwKCGmAgzQx@yi1nLsk({$NSmy+!M7$z_|5VA_ld5> z7XE-+YE&xan&*}(jY_jrhQxe( z^wQI-{7V*M(XG)hN-zD^NT^#)8Cp8l2dECS-?=~8qPSs2blKw)=oX&g_IwH#c@l0L zlvgM~fEG;v;#Hdn-~!JfbcKlE<#Y>f(<1-Jdj3xhla$rU2m8bBv|H{TP_^)3{gs@0 zA(L8GrF?kWu1bk2?c?KlY6q!{fV}jGy(Z%Xc)@*9-U4=Pc1rMvmo=pR8DK1wovOXwR)vm@)~uoGEg*4w5n;Q|LY0Oi71?@gs6XQb-srVUiH;e zDr8&d7tmX54V> z!a|HMfFQ|wHQnt_VYEo}dm&(FO~J~)({g;U)r4Q?dUEN}G+~Q|y@8{$1jFP}OO35m zoqCy(Hn94Hue|eCC4|*A4v01~P4aULJ^8r<5ggiRJnN2qp^~@SE~t&Cay9et0}2x} zT0}2}Mo120;*b?w;Sg9qw3J%Z3S9rM@GUx5*HPbso{|2?Zb}&|l&sUd3ZD$6-Qq-x z@59QF_kvFZ2zUJ$yb-pFL}BF0p95OFF%i55xu6N|M9#>ImSMJbvi3tUQPx5Hq^%P+ zaho{Z=)}^CO3*ACUN+T7gYMaDVE{rv|GHoyXZMF8qKV<{Ve z&9BD3^$gW?6g&|zq$L**I62F3Wdz%%%=K8~uqW5VKg6KT((p zp9S3Jez!Hf{1|6T-*RaE9MU~@G{%+AP?iqLl@2#;pj&i^q9 zx9bk#v){X@+tcPip>7wvJ6*i_P>L&1yai)-i9gR|mq`b>4V`#5hx_60a{-PMxphKK z3^L@!7acUS+oF*(SChxX`-v+Ky<2K1qA_$#aCE*gsYH8QPy?=E;D_9w58tS{(cNP6 z9LD+Q_1EBuRht^+I1kA;LgphZC9h(>qSfP*?i53?J(-Jgb>Qb{VS#Z|SkiA%flKSK zV~#tz!x=7&_vLfWabqawanhDFAgEWvZ8nSV7gd)GeNjG%8P!%PRh5>d-?Rj~Q|UgN z^x#$h^2*8LuaI?~*Z%N4y9O_7_bi4zi>7B$dS-3Fa~BTsR56r8E=^!HW2T(|b-FIe zwv~QT;^`^sK7#e%9gh|Qc|zC7;`Jp|u?klIq`}AKTTb{MN8ZHruliGyhj~dj<};uC*?8jjFLPLI zpZHsJ6TSq5;qdDmeLO;gsSuN?a;ZtxXagt*_RgrrK|5L>QMBTbxg){_TWz}Wu-6-w zZ5qdlO#EFIrsl$s-kcGMV_r6e{!?72*Scu404z8lv)S#Pum$*1t2T?)&Ni7RR#}!y z57BQr3pRpbaI?PKY%v**;_L<4=ziABm!Lz{0DrNQDkZsH!%o%V(!MvlWrl%K0WiW4 zmf%F;LDQ?mj@t484AbHOj}uEjD@BTj!bR#=;oS*s$2@F4C%$+Y|~`!CAmqAWiQLh?vkK08wIUvmg*6?kftSs|s5 z)YdC;KJM=bxL+Rmo=K&S!#rwQY3uv-WfR4&;ZIN(h-K~JXt3vz+R7J*Av z#rC-1U(sJV<+7WRj9#zR`KZuBP{(jQh$ro_lo??-w(X(eYvw0RTpFC}RdqRE+w052 z4HgouJ=17LX)6@JLd7*==cfq3Q>x|37+N34i}l{gn$0Y{?F+hGCS2$v{u0mm@~FSk zthbh^7*;n;GGJP=cFrWCeWu-H-1wjIE|@tZbe}M{50b zTKX%c=vv&ENEJX#G`d+Wnbi>pyG9eSw5-|8hS_e7o|%49bidVFW{SC?W4JM48Rx<_ z+Er*{LFU=0yk39Qv0?a3nhZ4oSDP$za#c{dWWih?Zt0xN%ZiF~!RqK)*xj(1FhO>2$v%58`WB^E}v) z*OEPRAREuds(_@Oid8YmWR&F%Q#mclV#Y;8IERCebi1vVKl}md!BO`zY}3{EG@385 zlty%)yTX7WHe_P))C$n0hSa@G7&{y6zpUO`ZtT7hCJ%d|wgg185wYsD!DeAT1U6Dl zf|C&nF?7lHj(j(bsjJqgLtpWs>v#e#TkV!lh8WS3Z)a&exY#ol71kQ%vX_~*rqk9h z8XLPfe2rma&0#(UcP%zcb!qy?y3MNA$ROYjsuGOl`|WZkX!y-hY<MOQO^%d&{&Z1Uv%2k{m=0=Yk-s2(+V-?9#&PMUe zRX2uT<_76>t5wx5dc|??BCF*K=c5ncp%IyP$8A;<&qyj2Q20FLljUZeU+8eZt;{zD zv{i5tk*mz4M>1>~2}$~tYZJh;LbcRzO)KU0&LCE~ zL$T2;qC+w4AWter_=zq$04tWPrQL3ji!wuh=>8)7s$fQy;1e_5lEHJ$k0=>Oc4R7X z5Vs5W8({bumVg5N+-Fpk(e0so!_msqdYhBzK%P#42Bz9ZS8Ml%^;;D)i4#(j*!6<_ zHsg+Bqbl^xia)h#4)sr6=xS4UeK4EGHof(n|WYpFpl4els{IYmpBD3uF zIF;S`!I12TWsH&*MNHy& z#cqK5Lbu(biR0L zAqLxVnTUXkL1>Y9gP;awEU&QBsOeC9d<^W>lVaJ+kPFIWL;v~r6attxjLVUZ5@Y8mEM+@HbT9ARL=cN_}6jtKP`t}<4+F`>y?T7{D7?QnC z2S8x&xk)q2)33DRf`E=;K+R!1G0snO}PQI4|_X)DaZ z?3u0WPyLZot5(aZet)&}w1om3iy?SYJTV-1;fPF`X1SohI|jYS6T{T`{SlK*NwU>z zHA_qIs^wp$J#W@w{lG=06inTiD)?4vPZ}O=M6%b17Lqu%N~#wvs{Ws`y8;a=C=VWB zUbyNn`M-vT8QTj42t4>7N}`|#_f*B^L}Wz`sd!D>Yf8%L?}%3Gv^!UCtW44Yauu8(-w9oMjOm|7aG40^mN7%pB>jzyiMmg@@X@9AFLZVr!d+FMe$&N{Y= z20!&^7H*=+Xj$93<~5A>tJrxio(A|XS^&$LNOb)e{{V?##Dg_q1V^d0N8(jyr>SJ5 zDmq2ksBh)lK{07_Lez-W3PTL|Vo{{y#pv;@a4+-_dSh-g+VWySxCFV!WqTMU_-L2B z9*ySJ!{k|MciAKo^p=aw$!KauCA`c*LD?Il4Z$^}Nv5Nq?fj3G3gKLTlyEt0%Gwo| z`|VA+RQbXz33@x5nTbcFBWAqAx2*4vgSkk}S;g3e1|T$A*#uIK+*gpaCJyZ_YlAyNX$BCNGg+YKOw{67bOl+%V+eoG9C}Qt&wtDZk~=C zsC%>*r}Z5QKn%>wtx7GTBKo$Icr;iCgCBk;fQ%o0x4?Az!|&GeLhnHpa!j*Z31@Z2 zqb|$47>j;{7G|l~LasGdM)$@TOcc~b#~%+I79yT;Wzt}L>6W^vRH>9JUb9kZxXn`8 ztGW%ZUaPt^Z!}%{uU0EnOARm7ehrH`&a-&O$~73??OzN&v{4KZ7fzjr!l`zShoAkONr)HukO(tTWdB`Gb6(P2;?->T3mh$;7(H~x zT+xuvVe_v}3Be8}f!W!tbIB-F!TJ3B&35l;Nf`y0m_U?3FK*y*v6=z&X zQZ3MXQt|mhvmhUgE&bWid`CL_0x#^GZ+=`=oh%E#4m;IsQo5z@0h2y(gPgeqO_{N66Ti_U3@@TF^aI zI-a@#1`Ig~R-7t&zb&S(cF>4EH9Mi~OJSGkG4k7^-8seCT{b5BDFl(#guL(@@wlke zaO7TK$dHxh07SO0kafh7})1xp$P3- z*4_*8iy$9&vO+;F^r?`8{(0W-qR?f;1vK$FBDzleHq*qJQo(<3rr^W~&@!Wruvh!- z*;`AoZ_QKI5^T>d?eSp1MMKm6us`bq@l>ix5JqHXCLb&qiYZa|N|`AKF#23e)BTvc z=ez_{rh*+1;6Oaos>eWV$Vd%$SHRp5?WoSqKkG=Qd;%&zMTzZ!z2pkR{HsKU-4)?Zt9bQwd)$miv;3`7AGP*Qo= zS>`dWz3k6APR6Epa4K%1*!z_=HCgCwVs|w3K22dyGm6qevazEv1Q2xs& z>hiJg_b&!rJMePitj%fhXpr`w_aJSjLD5Wsf=H+XDZKdl!D_U0`~7hbY8rkxdixO(SIG zumx}d9PEW@evMj26$p{N#BDxngr(kOS@d-bVDgE^RKUul5jnwgh8bwP+B+bLZreIA75w#l$l2M|fD~ z{YbLgcEa>eL8{pCYM!m|GF=}#i_;=TDCt&MLU6q$7vyHSe>&xs1x)^H%=9T@1UV3r z(6Ge6d0XfgFxM;b7M5yL<)a(FGg9}{#4kKrm)b-BjnPj%UK{+w?vT0L_J$?mas9|l zg)p#6I^QYu58qk55JJB#!Qm1UD+wM{^BQ?hvW>ZpKy9)WHs`19DFcXGG77ZyEu)yDD*`vSQ92TD+Qvog-UG@6?6EaQWCESI-C`APz7}1`<0-B zXmouDrtJzsd#1pL)zun+Rhd9Xrz)4#5|h>p@nok6tj8b)|FZ;#kP!Nj(@jSm3kBq~ z>8R7^quKMcq1ANSP_X98GS&Ok5paLdpI%NUP7WJ$e~S9(vT$C}Roua@@(p}oSf zi!SJ%h5U+k?ZfU1_oCS*QsRgYU*0pPSK`2T zXGXg&A4Dt;&cY?Kr*%{;B>4q058xs=g>px8H?-#H#rCS^vw4mgVF zeAQN_2PdJ|kvbJix%V}a&4_w0+lVoi#)g=NDity8c&+V9^IL1fsS3kM%KXWJ283ih zpSG2FAej#twib}sa?BRAU@iu%1VgU75rZk!^Qr0SZ>5__OI)8V9*4;{9rTCV?Z-YF z9kL$@bEtJH9^_EX$q)yJoOZwy28(A%n^j6>gg5LkMw?5o`g z5et+`F~X zXBSB%wV9RGf2g@#!q_EKYB<^d^HMF-Kac*^@R|+ntpr>hlc=$~_-K)j7U_V&k@H&- ziFdO2n~mr5XpTP7vT?Oh`3957vkqi4z*b<$k)!@M0m>%n;UVethy^dmWsBouwva8} z?jAR%;_ZQ+hvI(6OLUf=X6Hql5o2XZFl(;kRjN_7+0b_P>|VYG_p~^#54oGd@w24A?Cduirxw_&P%#E7b&s%tA69LsByriZAG6;oQiZlS z9(T*l;-r*tv(bGOPi89MeF$^l51>YbMF57#S-p(Mi@-DayHYL2*4SFyu%=y`48^!O^`aJ@&hn9>~l4Okw|92UZBZ{ttZ=gpGe+!fKx5tB| z{B136+q|bD-Hri;0adOw7!Nvl1?aC-vMS+QPp5muP3Jq+a$UyDxHVlb!6$#lx-6G8 zld1UTMxRgfGkZ1YEC{QA&>ICa$5>k3;biuUGO(l=4YJoQ-$#JPlIH>%wG1}ILNKR) zAL*$*o>o8nz>6B19ke?*K#K)_KNi-~OQTux6i=b|;JDvc+=}Oxt2M7&FPECt61jvW zx7Gk#omXnsnvGJu872cYJN5ZGMXOtsJxwgVwyn<=XHf%}!Huq_=3t1*~;*-5Yur)RFes2%v-|DU!u;ZEep(uVmdIrMpb zz$1CcWN)`U2SG}ri_I*mD$nVY2LY0pLVy8Pm1f-Y+rRtV8xa|~NwT}XUP=&|Ae2N# z+~rw(cCvN6nD8=_(pZ#mH#+Qs4~vI(FapMDvN}b?mrD>|HYc9r#B+V3(PRMDbGvk^ z!Wy-4Z7)=f68JWi60@|3l4G=FM#}8k<99pbzEdg3ZM+dLjQ#cvo-B z+NXU@iT^77f(rB=D|x$HAKYBfjBfR&sy7cOM4IqMAFJ#|Y2*rp!y)tmx0&O4O~hbd zX)Ww@FE2U%Qjc{N?rT1!a+B(E+k$bYrroG`wcC=t6>k1r)<8hi#rWVIDs z20`l2_-?*HpL!`MJ*Ik>zEVEPaxsmTP_TVqp1^1(=)l?_;$4|ULTVm(vz6;iUPHap z886i!)EuLy?|6EMb<+O0dRp$b&yRFVgtD0oBS@np+oH(AMUGeHGG7%IXbCbFr0Pw9iQes%@|^7XiIO&sXEu^bVgF4DoRn)l*^E%rbn2lX2V1$QJ5%pLRL;2U$iFO zHX}#Re^%1>KRN#w?WBNL^kdqo@Kjg4y*2BUM_)I&?p{tKx@)29IenCA+zH)`#c_a{ zBJ&3P7Yb}FkQA>ZkLHlcX;vv~KxKA!cSqk2tWe+;$OS|8dIRdT(Db}=xlS2Itx>Ji z>s1Q-LG@9U38?BZ&0Y<#++|lO!vF5XPm7IDYi?}BR1M5Xi1#)_G0Ca$)cz=brcq8b zL)z`idN)Qr#5q+I*SZ|kxXn-v2*t>xl0yoBAzdRg%{VMrER=Ux=p5!q*uU64=DAO$ zmrLt$rXuib)U6aPV6!-xfNpjn6*lN*YwqTlr!AArgy+}20@6~E>jqs+9Bkrgfx4=q zbv1zCz&batn%TK%XbOu0yDMWVm1-Cb@l)&Y}h9n;%GRJ-*2B|awvML14UK}q7R1nQn$tPl6(6j|0 z(fX7%Kv7U>@1y*M!r{s2T{pO(Tb!3AU{XL{HO`#2=wGObRBbXSHcK@kA32ccx|lM2 z)^P|uXU05}WaMU>Kt~8fd)h*#*WEECebe{wk)GN`IQ=0K^|zXma$(cv*3_?6=u)9T zg4#&S5V+aOyxSfRomS`X@+fwtZ!X^>wF5R2gtYc>_^vCdr(4UhSuj*63-psWXa31X z6#wBA8qW8Ib=8hx9z91Qw!a81kHCKB9O*xleZ# zOs74^ZjKvaN#UDBzv42~8PTmZ!SlFt$RnZZ|Zv|@4?@3{{uvvXxZB&D~5I;qCSx0gjn+U;)fpuJYDDWU} z%1a^#hjLy~FHzOHt2!|9knwDz{&d#q(w@>8I>trUX!Pkd8#;ZlV-Up2!v4M@5txAj z4rKyC!V)4^MHzL5Si3sih}yV5o2-tN5^X_c4XV&6f(Y_d- zc!bgW4x4q?b(t)T(lOi~)AG@&Jmje2oo4mjcI* z4@uw_>)C%SY|m0VhRYSg4z!BUGrWCv@_*S%dl38MSS}%GOD%1g5g46jhzW@VpZwX2 z^?t2x+O*{=ags%JORxemVyARYKv63jxZx@IY9IvTFAfSzm=!1z)L-f%up`nckKpv`3ZHr8Z@|`ZV)T&lm3+43R z>}*yKkljl9b;1}3Y4ZseC~}(E?WCRTq?|2rT6ns3raGVfpSH`es7`?%HqwhFvnNt<;;Vq(dx^&A}3X;IodJ#OPd*{^u;WD8}ReRnp!rUgLlynlF=jK9a5 z8VQ-ZQ#P&ob)kW?ghDeLRgNWwO{EqlPSf96cfeo*lrdOlUr+bKdK=7X)e7j1N?%u8 zSH8O|g8Vq}oYD`qX4$RO-A1WeZ8j^_a;aJI(kS2IzA|3j9g~#r=y7RC!U?uZi_eTE z_nSf_`xUVONqe(J?i65NY1CxpE8(Fw|L#twO?=Vd0nT+Z}fOQchme_74P!Qp*K2nM6y7sXY_gz zH4T>6(ApW`f3pgvj_D~~q$TT>+b}#cb{A?tmNmBy!e^Qmlzl@)jD;eVmrKb6koZD_ z8|4=y<@y8PP~v#0uqrQgcM~T^db}o5yQC}kF{XFtlp+pf*#aAu`55bKKu~UZTwDD~ z+9IO^d^2pJ2Y*=aH>5k!(gO~D*)^{&L2=-+|=O!j1G zTa>=D<=7?&3r^HM6s*+M3uwW2Yo%JLiCz*EbL)k^8sD7lSkai@G~LZ9C2J8pyXc)RiZIRCT?O7V6yM#DzZX!1_F zNMNF(trvEX=+HSv&uKJN8n$(PScN>U>w``c>!@;UJs9dsz}tHl967t^AH^@%?99hS zO!#?q48W@uj_zy84->d1%u2Bmpktyu^>%}ZIDwvH3!c*B;jgrAatoYyw!~oWb{l+A zCPM4~Sru-#XQ+zOACVIgEfEZ0`XtxG!%CTCg`d^QSgW)XH za7a0(8J8#5Eg!rr#${F1esJYPljD`WJv=kE79=OG>r`C9u`ek8bfAD->#<%9OX!tE z4;j!SUi93W1E3L@s(=r&flc^0p-J?{oiJ6QC>Ed#W_>muK_Vbi{mVWp8XN@g#UZ*P z(2EkYUMI@Ez2e$(`bs}PA*YYKvMA}%R5njqB0da6UiWeUbCjzA?X+l%dex#;sfRWx zGRiykALl#g|H7j*ixl6D62~!34XjPA9_GwP7F1UChhO?5DUm=uo~{Dr9=|xQSCfzQ z;d0zp3p50ZgW#g~PN_y`(*+IJmWjGCj0s<0jfqvP-55oe3A(A!loHZ(lgIax)iptR{TJ zb0M)$8|Jh%{^(T1@7dFO&d{P_Jc{l-cWGjrzubC0cSF#^rFL5>cwz4lO@?$OLbID+X7u)2AV&&F??HZ{--K#lORs2?S(o-uI3n0;NWb)3 z<98|+@GmbBvIx{t<8hguk-fr}MV|}&{?+g>I_y5Lw~Li@{wC9W8g?!Vd~2U4zdgF* zLh&po+!+#~SXPYX-fxC9Cv|zu@hX*w`>?`LIZ^lFfp5K4Z`cZb23mpmLNq9* zTi-vf(%E;0Omy*xee8lslxVSDNuK|nfJ2hHrdoBWFaB1Nzs}xs9daIA26l4$F1{- zmcO=!)e4*Xmb?c^*J%5zv$)o|Pp@^-u&nj-yH#5{f=AdXxYeqq6d84l(h8B0QFvhu z)=aaGiQ}vVFEJcmIO-?eRW%m)<6<5JDG*zWps=F2JkdAW2%t~{5%A)FmHxpBe_v76 z!@@CtnTX+u;a@Wd?zd0D;_Fwh5}-Cs2`B$G>(i0B)c31HckNdLx{pop((6FbK1?I&yh3^p|#VUnqw*(RyPYG_9c=cO~L;(=k96gVx*PU?(NT%ro4g&aoh6uNr zzxde=JVap)$sKyp!b~<8#fFNQGSwU0k?JXVTPS_*HsL7J^vW`0Bqiv=w+>}0cJWek zUZ_}c(Ic-^imniD8PSVT1MX&;V$_$bMNU*J>>T^SVYe}+CNx#BtOk}L ztzIAMvGt+H7ylIo2u^vC0@7dZo^a7)vN}$x&`wCfj7Uvqb1o?;C;&qZVuw$$!A{j0a>!Z=+eQN;M zLxn6nMqC!&!hf=^?O9yFSMgA>#c-o;HZe#C&yD@A?2dEf+Y48K$?Ot=ky~|*qj+a% z_eMp6zI#EJ3E}1N^3skhCt+k6k(GA}{|5G&Gy^ps2;<@wr=^q_=JYl6RhhC`qyDQ^ zZEdJnhOiwC;?^Yupb6xivkUQUv+Qlz0HCx|3Uw4wFp>P$*YD^i)!C_BC{nT4zi zGl%2+c$|;4$T{51_?8VO!FqSZ|B;#pkMplNqa4(trJw^+d@hG9+?44$Hxi;TLg9lv^E+Qn-*enQ($AVQ0*hM;6;sneVvGcP zSHM3-Cq5kTc&b;@kER+jrCn*{k9*ZdKnY#pJ66VJow(8Ju;Ed;KH3<$ZME0)5X3T1 znR{}4k}kw@eOLjp`y67tDDziGJNlr>M2-}8vdbFK>^u+Y*(i*yTd0b z74Vg&Z<4={%z~ADRzk~c#hj;(5@NkP(-j?R=UFmQB^ z6muVf;X6f*#citYyox4Kx1U?_23wc=NB@eO!57Q1@o9v2Mu&$0Nh+^8Tv zEW3u+`@TgXJEc9UN*l0Lzb-(xUo20zr96FsI!kxJBp(Wj$G&W8hRRs-61M>Am+%og zhZVLiY;q}E$(q>y$t8#buz3J(X#a!KsAgy6V6hiK%5SH0dMLz^4_LKmUR(!Vw;}wI z=#XV}&B|IR2xwu%D(6!gN&r}6(7j|gL!Wj4tkTSn%S}E`=tEsH*MYxTg=@{G$no*C zR&yw?&7}_&lheG$UCwS<$A~o1D?x8kq6mnVIVJURy}NwcXg&nMtR898Fvu7C8C__= z46re)@J>Xhr0Y+<Ho~X}#!PQPNk*+4rt41K70Rq~4{3laX9sg`09j2?EZV)76cH2MVNkH50=D`lgnNON2fEzn%1?pM>H;R|O>bWS*9_wo)*eN<#&m*@xv{Zin)+(MhhbS%S!wp-FCVB zGj{ZYhz102)vZDMdN`KegjY6rQb`UiEU64=9BIt?%qtyUc0OxL6YFrOKclrznw^>42nw9(g zU#IXk+s-!@?Jm@T^m?lP1|;C(GuPhe;rZfo-thYd?D!>$tlTBlDw*cli`inP4e(3( zA}Z%TqzZu{08m>$(Q78u3DuHGDNVE(s!Z3OQuKn&`f2h*`4v*ILi2tnH4CXvV{Nt6 z+jWIwIhTF%@I1U5uZ~be4vh@yC{PGUzTuJUYX8sKfFXpU7^cRiEtKRjVj^a*tAXAi ziM1GB1B?!5^BgLBYGbh+L^N!h!uOJFpXjsWyTit+NKoi>08Q%R2Q4o9QJ?dOV=yv>8s5FXaR{KzIoAJg&4=S~ksR}Y9^E5uJ7fsrxSpj=W`zGY=XobE^ zP;kAvGMKQrYs$F_3mS#RwB#5KWXQ8)mP%pLW65s-X&*4844Ix z(&L^k$jato)A*U&?4??P zg<9Xj<|`-7z!L#}!e?uzGWu@l;9& z&^D~j){u-+uOzH;)}jRq_2AZQ3ZR1Dl6Y?h=U^J~E5j0;Q5x^cJL%fK!!96%n zeaqN$K7o~LD=^vaBliEVl-E8k7yFDvR|JnNG6BDjoL`zawDx-C;t7PzBSTN$}Mpg|dY3=Fz zE7M=aKSNk;xHo0i&@$}dw2?NbWvEs|<-Q_8mej4qCaaHBNn^T>>&N|O#g&cq=~;ZJ zoeBj+yf2UV{*a!zQTw^Z)({h}&bvR9ekjrU!07A=7ussoYPqHrP)=T>3O30k-Y*zA!G5QkC9)nvvtVc#%g&{mCVj1)JH+dI1Qy(R^n>AEwqas=i8{< zSbn4jop6+!2@ua8E*4MwIi&yXXZaii$$-hH8}Cb=-4B?vC-(6gG1c36U=Iw0g-{T0%`N7T*_T{v-`s4@=x0(Ew|M`y4?&emP`cg zqSKM$LfxVX(jfELfWTt4#D zQcs}x#bf{P<#DbQ?js-O@p#WBO1CKK%nu^1KtE$2iudp{C-S*~vDdP#kTDm%VZ63z z378|TWpD~5Z}PyPv1u;dQ0&Nv-@MfY1YM@!sXk!H(n|NSH}lN(Vx2pRm0#)H)q4>T zplKfE6dh_B*D8(5#gTks}Hu z&T+T+#H@zzjhp#;UiKFAJzTY7L&0XZC=?9>esNfx=7;A@rij}MVGO<~uh8xWAi0VM z47vyQpSmm0Kcz>Z=+HDH*+F039uB{y1_3qpPuLkNit>Hm!2e2^19y_>>*yp zVc(mvld%`Z0F*jHQ5u06Z7S;&GZ6<64g~GL;pCYYa(U6<@Q`V{C`>weJao{H5Hls6 zG$R72O)3|_l80}KXtyGRBE#xQ~hX%)TJ6cdG>N!<9oVHPP41V2yd5p9rM?fJD`BPlVudWnr3D(u(Hq>9GC;524gDxUv6SvU@2L_$= z4#!#Q@NH2=njL?N3PDFTp*h%OdhuYQYPG2=oLfx-TG!hQiMvd(<5#NxuP{5@a-<=c z&Gqn`5=YP?Rryfl{7@^OwIkJ=XZXsZr$BfoT~_VYgAU_Xjs3_MLT5 zHF#MyhE_g^(p6ydHk*uHN4m1g(M6E-sm=)Y8G6=pGY}b}!X?3mC#S~%DooC@zaav?ZgW677kRXON7#+^%7@D)9 z%lw&E%gc9NB;RFE*Ugz(z};$wwg}SgX7vV^(fR;Ip;-xct{(QR{kXKRHP}m2- z({}wEuwJ_(MXhcSCMgl37W9}^vJxN912UzV&=k1Rezy9&N|+6r1Nzj^Zm?&N9FJ?j zYn}Y#>Od2La%4pEY;5MtpP>DjQ2a6oQYdnBsGP0%718*jHH;%kn%i;ZuYS}PgWfUR ze-QskHR&b%U-Z<7|8ToUQ%EobB7W#5`y~+fNcHs=MmXa2rR(MT^bE4$%E@=lfYV_u zF5d$ZwH|8MPGI8Tq51PLKR!T4vhV=oF#BmpD&Vi_qSqR{Q)aRe_QWgo=opj2?7&8W z2Z1dVc*6QQTbIzD?B*4{EY2&FDqVu)Csjver;>oQ0qnv(k!tIcI4vu%$XqWHp+!Vs zN;pHHEa_asDOb78M4?>C$>U!QzPp}H!P>xrnc}CXA;WL+dl<_JKhDCV_%kU`LuBMl@+A$eNitZ7;~NfboNlqHV1J&4ssRrXbH0M=Txd} zsT*zDnO5Yhu<_`Y3}z$nm;0%cG3C4nPiXltp)hpAdvb6*Eh%z8KFq7G2ZJI=kUp-$ z9)~=KO&z3LxU3^KY@R9o_#XfvsFXr8YUWBqq6Hua8W1$R6i*)K`#t^oBhT69=dz;+ z+~-cs$4WIgjVlYgoW@q2;DDLv&T4c0mgT zrS04RwB=wf29Cud_}2us|FEvM%nfE+smpLo6L(CVR~fR7+EnB>gblmXdO@qb`Z9ib zqBWnZ-!lp;oBB}-B#TnS39; z&1H>W%O5tEHLpxFmxb)g{T=Nd{i{ot#f5~3>=Zn=Qm-`1wMw0}lG!Tik#YJSd1t+8x})}&`C&_o+tYCcxZd$;a{?k;xo1mE1p(yQ1p}Tm4ZGB| zX&j$cbClkpzz{SVj#sbd7<86Eo@qH(x16fy>XucJJS;ln&!CkEVTNNVYTk4w-HUFo zJN;O=N&Bllua9fC1$oB6Uv3a+Tq;HQo~WfT0t03e_(M)H##*DMCGRBY=8(KA^q-Q; z?(6OAG0PH51{^-Kcu@Pp`f-}rB7;+uvi^XbB3n2bHMRVBG z$4nqVq~Uf}GD21{i#1*1y$8{ zJV1ZoUnMJj;8bJPXb?rYe}8TBSW;{M_#pIMd1-lJBbgUA@~P;Oi~?{vvP5#wgiBsN zF=U{nht)k-As6CJNlD=lg05Un3K*FrnKFbqUUj=@k}5{md$u{ ziDvBT@UqorP3j7lL)OQglc%r})t>v!`gZa4E8SJUJ*{c`5B6YYp)^e4fCMmfdoByX z<@!J$BIwQWFLP+mf)O1lIxL4szi-wWcUZFa`-BMM=iO$0f*YrFyuPPM@_rHAKg|!z z75j=fKRMvt{)nCY_z0t(JO!M8b@Gq-LgM5iotGGd%p&{0@`O^+uEeG9yb;EX-!3d=;<*icn)Ypwp&=`j1(z7g7ewXn}x;=Z69_Y@qlE|)j zRn=&34LZZVfSV~bh^0M>!Ve8({&gDkqqZR4ZnC|$?Xyf3gnrjA<0)&7{ZKE}Dd4F$ zT(?oHR_ax+QYq=O69pGmF@lzt@;8p8=@dw=tRJ5qIf_oT9flQsw=>n5FrFiEl&7Y& z(W1rw4bYsLvM!z~exJqj2K_n%9T8JlqAR5D#P?2m9JLK(+xG;FxC*PsM6 zXf$a%Xgdu6%q<~R_8~#%2-B%x9}z7LG)E!$>=whmO(-c3OD4qYK&DK`AFt^)O{?x_ zY+13>Lfxq=|3<|oj{St!a8?$*P|LS|l2ciRXP_>hupK*j{*g~XeQSYEB+Pj&%t=r3 zR;lkzvg|QQ3{hnNw$n6*hLXM#sv9c2!c2p!yENj$!E+2MiTv@3b{cG+&xpaC@F`Ym zraJX0K@Obq59OLicN&HAuIrVW>- z1#T)bUJ3#z?5VWkM&yJTAyx39>}_e34tW@P&fCdI*7~Ltu@J?!ha-w#YUMZ{CX;25 zz{Esp21<-u0l)<1qgA*W;HWgYtiah)YhiD=iUrVJKC@TmtIWB`*|G3xZ2V}=ql7Nk zYww@tZxoX9(u^4D)n+K9ElTpVdguTviTuvI;2Fqo>zXU3J#5Z8{tYUa@_c$tiJmrJ z=H<7q_%@*4^iXyP-R^3+V~zDyDN~{_a$5_Yeh7jmJ!VM2X*-_c|H>vOsVd-p90Who zJw3l)IVK`F=A(3lGca8{Yv$~ zJ9EA(MsTt4m0T^B4~#CrgSR+KVt2R5H2kuh)#fbnE)cc_&&=*1ulOEWCGD!KyI?Tp zY(473{EFCQ%#k^&HL0NOf!YJy)^=GAz@nP6f*?S(6ds0pfF90XFWIBvMpy1>|MWko z;*VF--VI!qnC?Dx+im)DoEq&F0XttP>&u)NB)=lkDkr@p)0!gGc1#g!tHzzrTkYZG zQWGgOUxpT45p5~)9W>|#z1HAL>(YczwQCik2z!5|9C$jLu(jfFFbO@ZUO6wdyp&mZ z$fPdC#QUWxHXX}K+lyM}f?+59GI$T5#W2}+%V`c^BBl%eiSRFa5S!SJFlLL zv*c9eLuV;MrTg==Z0F}3?xfaWI7J|&b`&f~h0_D=WukSwKRqylp1yGm1lzqFRo11J z^;a= zVR&eBwSglJ`T_U@t3$4T(T2w#q*mbhhQOh409r#sY_d*3M6f&D&$sLUVSJppZ^TFP z8WrJCQmjBi?68t8*KV0rP>!&KS-J77IG2HZ%n2uOu-91Ik`Bt?!+_)t&stusBYK>5-Xk0^YgX$i;K z)x@AFn{_9C3iQ^2T|dt0%bc|A&IGHP&`)8tMaNl>LK)(y?H)=#NcW&kj5ild#KYr! zAyjdB1I3(NMwTG@5Mbq0`F}#v@p`EnW+ra#l?_wfDY_p3V9Q+?KG3a0$q_C^6f=s- zvft)rO23nC16pHwT=B6$74{|PsiGC^8EPN+T1(kQs|g|pP-+;6xLov$!DPq8mA5b6*k$3E2j3CANTycut7KA z>j|nIRp-NsS&W+C}nEa&`np1eXOs`$>&KRfaBY4&z6r$y&G3Wef_81k3>8lW^N=fU=h z%x(4o{)!i~2@0Aa$&)XBp=L;)$A}#B3lVg97RzK`!Y33`pUS3@ThP)uQVY`Re4Q4#$^l8<)n4q+!icJwWuU}D#6h$k#Wc^vs z@hV=5kX@D^L5hr>MPE>KwpWS-nT~{NUE!Sm=@#KnUwTmt|2#cAm8RG-AZ+FWK=`GZ z*3erj6z1%-U*8?ngqaCXCg=wKFaNi6_Tqn?f8xIx1p@yfRw1Y%YLS{3@|f;mG@DZJ zm_V5X-3g!ut_4qQHkmOOY0fRd{CuQ{CaY&>=_8JProVSs9^N!bXA|Fqr#a-|Qu`3$ z99EOR@GoKQ?ZyxjuQPI@n$g0^5#2HNSr$Ro5CXB7FCJDen9f^grPaK7N!I3%dGjzI zbEcbbX?Nhe4lz2Kz;xG@C6#EgL!GkJDo4bQ5X$Zr$GzhNc<^E;k8N*=#+sEj~R+$vNe$NnTPWFrnbPEqE38#iw9!zRatjxI(nbt4hy~C zEH~4@yl;%GQUSiP(2B+B=}ywneEzn*Sd(L_l^={US}hj|HB|^<3TD5czcO)ZHC2@w z46$-38?@-H>VKe!AK@YZVL}=mwZ>){=Aw712gVECr5BtqLg{<$b;Ce<+7~=_2-tIFanHRJgfrd+G;*X(|i^a%(n509*x5Lt9 zP9rHUdsmZSHoa_MMY<6e2e%Y$y@oE1+Q}(DmC1EqDGg?I0?XB!#i@=|AwxPf%Z}b|KA{O_D=P2y zQk-{WYmDB@kR#`MhL_`ds4t)=)4amJ^iGa6ub|bty9=DZ`~}ZdN9+4Dg;b6;w$3>B zh_x4NrvrAlgtUdu#8T39Sihp@JN4)bL3sojxOyD9#%Q^*)`81OW@M9G?C$1pPfFV< z^Y)qN;hE>=%yT(2ACpiTw)|0GSv$EkFO>Y{jl_20$z$Z4MuZI)L!!KNGuh`Ab*0Vv zeyy4*B*cAeft;GPdQ+B^qCoPR@((GU)?_*(T0I%PuE^6ozK+O^p*@a7J`KxnZe-lb zhs=9bnjcQacoK-5D%w#f=w7MJC;=&}g-K7d=wOl4@5sBo0n8jpz}wJiL;fw`3Ep^U zzxUfcTD5|hM?~x?E#^Gpu=l`^&Od(?8H4NLh(QTX)ys7!SL4>`8fp%JRUYpT^Zf%o z%L%C!JD74?aJ3V&2qCf&dvIZ9oDQ|BHQk^L@tE(RFg=*UOk8&*(+;Zo3(OLp_WRy^ zdp|`r09BXu>D(U6>jhbr3ZaY&uU1|76>}&4Jf7Fc#ad6sq^$siD*pNDCkNKq>*IEJ zc${w(BS4#;t5IPF1i*q(ZVmorHNlQmU1$+UCIH&#w5Lpbse z(={`T%$a;mD}nhDQygWWME<>(Y^7N=J;W^dra5RsaseI;9Du^^ufxJN(4ldUN1q2uaf$cBIcih z)}D;pmb8_^lg)%}OVOSY*qFQ*lpHcc<_o*Egl=GrkVYBIXV-}hO6y<5k0(ZJ`W0O5 z#HyAFsMZ9YD2h-JnO#cE(;1ro$(l(^lQ@++?y7FX$t(++QHs|@!9K9|HuvPB_pZ$i zHe*#g3$1FIH3mcxB^S``t|?;se!mIk+h^=)Pk=t=Tia)6qn=q=T)QoRH3@YfZYV_G zsHPS)Bs8TQ99CdJ=m1+lq`&gN((R^G^s1^FycckH4;?^^OGr5WM~p%)!K@#m8lo2H zt7}>%xWXbkrm!l)KNcoOvq2ZueZeLDmD35W*o<)isG(f7?dIpprElP(Vm_Fl-h~zb znt4}EpnB81pHrN6Dah<~-}$|d>^L082dl4pn)QW$`?mrVDcx@lZwH@wK^gf;O1MCM zR)T1H0j&+>7?&d!3{G0EvvyQ3&N#eX(2Q0iOgN+w!EXY()#`_?Xy$2Jj|{wt{5_4F zKh77j^X$HCZBI5}<2m#k^{2B=m)@~6r0=!MX1Iu0oJK^;g1gK zc9$BhnF^A!PB5Gaig?>JqXIyVWC_>(=Th7_KR2@3L zo$K;+N4@=$LD@m#4$Vsq0P!6XEIGS+4I_#}jYryh`8xx3^s{ zl{!Ax3@8)Uh{C!$y(pUS@4BP+6GxPNqF{i;pJDw8ne~pB+yGId(;k3>9(0{?V<~mC zZ@atJ>2BPt?oR&bT}HDM*4N$X#6urW@kdfT6Y7a>&I?sD`#ie31NvQ8t1a)(V!&=@X87KZ%o*B6=55nKfJH~&ql#V)mfAi zgxjb~HL&kbTS5v^xXBVl0=)hs{TVs-6P**KYw(8ByU^`gEqS8z9g#p1(~25KhuFZy z2U1aI>7GZ$JqvO3lt&8|ld$4u=pG56wd}^qtdW|3SZg)KelEDKkMqs;=}}VVlM>ol zoQ_VjT6qZ`f_@kvAPU)~TViEp5Sd^Wh=)1g_efiDn`glmt&?Kwj*?Oa_E1ytN-Smp z`ZN>U5VIh$gf$TTjd@jvVU+fCX4J+3QP!f;vNHupZ*gRZggj@1akk00>rV)o&j&)U9IhP zJZS`vN;T|w8s5=mUtR3JhM~OM=ouQ_hY_kav;njRssYL!j!1oOK-nL1bm#PN*nKG| z*eJ`@vIadoPWZwPTjSLN8oYV)kXOCC!yTw=^tRQSO|SidKv&)@S{{F8Otl<1!0rbRc;T9|6-My`6pi&jtMF@>k2&k#XKX&Rzt zz1)34(-0?ddGtdd79*ly`De4N$lI7qOYLT_#C?;5Pw2Ph0n}*Yrdx=1YV=HP3D!{N zsvsh)kjFkfq&TU@Raq^LfO;=_O`2@hey@lD^uE~^tMo*EfqEpr!vN-$wR;p-dDiF| zz?auBfG<2m(s?!TI|FQN_&Z@U1F5`@4|NDwl8bfhSmMYe^TtO@e^3XJZ(^#oZ za|u++h!xwq?Y-U^%SO>1fN&zN?W_OOQ#6sb__OGpI)b8nQ6nO1LvYpVGDwf&Dv7tc z6E?ZR-|JJ*+HVa$QeZP-X$n=|hTUjIKe-upJ0qvT^@fpZO9?m95<`*!eVnzBkQu;L zfa!*v*YHf%sj=A}`Tz?Wp)+J?$v~WdcY&lT+-qfo++Y4;pQz-c7-#aoj+{+TY5%36 zAI&S4JKFRp^ZC*FXD*_~pxcN}IpK}|K6pPIt7f&^C`RQGBdM1qkJ!>0va`cRpo4Rv zqHrRPf^)f+?KbwxQt_h8n2y+FWfhkxEUzBB>B75?;!BD>E|oRUwengQ8azur!=cw7 z0+!xTCI>1t)O>4xD)5dM1&vsvBTdVw=%{R*-FJdk4`HWKtR8eZ!mKnc4@?>zj{6A# zTz+*Pk z`EIk!TNW9*QgzMHUhH7Oq}zv~)0d4CCKTY1MPM5(#D*HR5x2umav1-pEp{52@oo0l z2B6+Xc0$`h_oheFDuP=#!--AEw(j^g+mQW^-)JMk7w1S(+w+><^>8#CO((Qwu%0G} z2Pra}%tuIwL+a4EQjfc+x^Pitnoh)5b+K?7RdJVsrma^=V!uqK^31LDQV{)b0R5&I z)LUR*isJyo(>VJVIbHI z&;KsU$8Lhj!exQ9!I&ZMpFjkpSoLON0RT1`p{fQFSm0>aNED4_Q$8J@XbSCiv<^=3 z(7|Kbk9etXTToy6L+fHZV6ZaEH%ZfWwE{!U4b>OWDWY>ebf>0q6h6&OC9P7nV0fGh zBsIi$CSHycUIO_$rc`~%$;ymUwM)8}hTHW$P4FGl&*8gnp?YvOvx+ERKii+tp0cB} z;ivt0yP!KfnD607w|=DXtw6`w^E=M2fVmLMw;!Jva6rl8Nf7vXHPYIgq>dJAhbUUt zhgemjToOyOFAwX(1`cqNiyn7prQR9kER;$kF{CH9V>LtWULX&clOoIk{u8FH0j}S1 z%?^4j$rJ12AD`)`IcOK8C$ozw$X;&%`>9hykL-xnT}GgqCU+OLN-K-f6!4yIxhzW| ztOP4HnG&<{tlt7MHF{sYkv5QWFGVP9@c9FB{>BL(@@M#O=w#wsQ&!vMW-=~p4+nJP z^|(4PQ8e({3w<@v#T*k&H6{;--P4j?p)cn5c9)5sc9%zhBEp`ocqG$y(TM8Q8eAhS zqht1Y7u8z4lGV2nHMJ;|%h}(Bpx1`NOrV>%HPyz~ea1^k;Fnq@NdKbKYXa8AXwh4D z+Y+-ezYueFe8DNpC9gCN3^3?t?h7T6AtjdIo(CSSQ zbELAPJyRILUk+5BZLl)I#dGWCj+A0mwtGAu*MFw0CH{1V@H!fwf}WwJpS&t7&t9_u8vJ>NB(q8MjT{zAsEp6b9LLaH+QC^U#fnSlssahmo=*eC<+bjUPJ7K^v)3wA|e_xSj< zRsE17Jw5DyFqVhLKtwL!Jc`xgvAF$+YDCZtE2U9m(}x-{ec8Hj`p8{^!uIL0=%|HF z4RK|c#?wTyqK+`q z+yrPLYxzpowhrH%HcE(hamyRG;+}5)>C<+*qVKjlnyeO%Jj+`$+@7lEk93y5M0{83&G=P#W%g!Wg>c(MfcPfNv4OA|%rRp{0J(80<$7X{rCD2~z+x_DFq(i? zoD)98ve3a)?oVAO|Nk~mq1wA%E@|p?B;y~o5Pl4x{?6ot|Jkf>qY^N`Qt+A2nN?)? zE9K}cPQiUz)}Q#Q^(Vg51shpy)T(}azXy8f#Dz|Oc6+M{t)iEVQ zgQUA-)n!CrdpLa8^={r{oGDn3X*7*2^>I%rZ-s`Ie}5 zz49Ul>@uO+3cI!tc|joWL%A{q3~z@!L|j0~7qd&WRB_?PJQr9Lmd>c;04IR{3N2^2-DT@bQ1e^U78iQ-;w(Du zNGM)hpu^LwlDsG98Xktf0l`svW$)K*?q5v!C^4Z^%#<^+uv8G=vWVsFt8Md2T~r z2CR&W-`exTvQ05W|9FpOsamf^6L+>fr}dCgYB#>fv(QQ`S$kE&7)G!k=3fHJWGR~7 ztYN)zw%_n9rsIrWKgKlFTJKfV44S?r5X>(NMbGHV8I3q?$kc<4oEM9-juC0c7Yd8v zS;Yi+Z@!rbA*s@IRoZ!~l$r;Z(@uG)^E#vL-}F)h|C^o?{I`TL54r#_*de&GgfZ(q zgT=w=>Wf;=loq=4atxGbar`r7Dq4)9rCV0mh7DSlE+!pKUkscyNv}8B4IA|? zlOR9RIgj(hX+blLR+alTML_-a;;=jJ?oQ4`AL1iC{|*b8-`AN#B*48hMAn-T@QG|5(9&lcjd_`<1pHcXgAxxK^E z?T%3SM7TW&Hp}(r2c%V!({O+h(3K$ZLi0vn?5Hd-G<*x#LSHK_>)~TYZB3@{CciojTE4YK$9M|ZE#0D#=P4Sg_ynwk z(Q94!z4TT9@)%Af%#u=vZ-GdpCB~KFwC4LL7--UKGaCHeOx{o05_Q4}h$g}>Gk@kg z_LE%P?pLJXZ*;Ay-|;E8V3`ZXg9ZUbef!1!nau~_IB>Q_x~WEK=5FX-bmS;p1w(ptf`Igd4SN$P5c+$2B2}1Xph&Sb({nhgH}RNsXay?_i zhHDzz9O^AsOBE;NqtEluCI@9{J>O8;5}BP+?sQ9DMJB2OBLp;8fv+)^+t%IUl?9{c z3Z%gRi{YjCbW73KLt8_QgnvaljCDYRjpUwF_n8O5Z!IK&W)$WqfBp1JWZO&G@vtWr z996qOT|ld6{$wf|_UL!c|E0`nwBd`+@3c&?Efb4d0HsJ*2KXwvGEv!zr$?u*llEY< z{lEYw7_l)8g)UZK`oB{v*FrM=7(q8alThg|5>$FhWyUHbbWyjl zo)?&UOE)I_z=DE{^chtNzF~&5DFeeoRS8a|u#&0g37Qh0;DjALr00yCn?$_~Y(Zj> zL!#?t+UguxFxBeZo~XLVO+D!LMrDsa!X^FN#*~;iuN>EcE4Isn(pPc#@}?h?spvB# z9Lf8bZeau{=N=PK*$z*urRC`vD+S;glVLzpgu7Wi*QW${bzwuY4rM4=0)a3}!0`m*1jHF3S{!kN*{d0IVgoxYjuq!W?iN!$_d-` zJ+j>q@D$A5C~R?!w#Dxvhx+s5C(a!q=AoK6Z;?lgogN3!)4d1eHV0fz^bXceInw7% zNV%kl(xgkZ6w`9JXro2qJA)$l)^rACRh(} zToglj3rG4Y^x*2N8apcqUHSO1`?B91bCxOGBYj~ey2QZfPIZK5rvaH0c3;kMo+l%b4V3+!N%F2iI@YscdWO#7SKI_PWkmbV+5 zgra(i2v?!=$tKObeD<^zy5v=HnAR&@lO$j(?42AjDYX@xw07bb>NNy?`sEr#GWw&P z@0t_Apz>Dh86W$E@BT3&&x3oF()-^q2UvqjM9d^4rDe65g&Lg9#lK5Hm{PemR@ZX(D zYY!CFF}T|o?)G2;6;KWTzQ}WwA>vTG;c_Xo0E3YN zJ$vTO%pR3osPG)kD{5ihaM8UAdYwdOk$#5Ks`)DG5-l0WTD`0K(Z~Diq5&?ZHij>ouceRu>Z1rqZFF;ir5~jvJD_d>DGIiza%#QLTcjP5;u$8O!ow2W6G`H~}RU(JfdJPRf|Bn?!lVZs;WY zav3;$Nm)x1JFfA@j*SO$LBxeax0l}^DEKWyaOi7t%V_M<-w9U>wZgx9BxHgoI(xw`2cGjS^ z*G(t{LFt*kSN%{a|6A7X^+q+u9!W{=<4h6CYC6MyMB;?z279EfjvS!3`+3W<&dC;-tBrt;;;}$9;hDJHbtN*lRI{w^G;Y?kKx~LLTnawxyjjWMQqYXk5#Zv;ame9Mg`6s?%!(!< zM^BF_WK?JW)k*!$qFLWSXJpu(`mCO!;HY#zSaKJIf^g!E9QgM|b&`_!$3KcwPoF>r z1wy3;?K*-f?Wrn)ejZ9V(`q_sOI0L!cSp~V`+H&Bx;~?a2C0YrD2=VaO2s;%0O#C85xb)7|#gZMvT;POa%0JgC+KKzS1n zX!mo`t)_6%Dbohce^Yld@%zl^=0!6)B>S)E?m}qAn3%BG(;t%}o8~ouKvfEr@ea0L zSOT;e-mL%yB9rsE9K4$;?x(o==5+sjFofhwZaibEe((LrQ4gi`kuZ;Xjj*4vkfQH~ zeh-V*Hp)rlNC;&ON6=-2&by+ri9ZLeWLB~93Aeav%c5*9MO!Y`U_l2~jAy&+T2s~N zPf_k+CaOJ%Y5FjSiPK{9w1h6uSBQd)@s-BMgMg1jY{yju#Z}&C`u3Iz7kXN*cXB)O zf~>!Yx=}2VSYK6}l-xmA0Z(jNPv%XLp!QfC0|oP;4GPNz?gZVtj2{4KM%Q!Ns_c^i znu(pppc$pvv^cE8CXC2j0o_3pZmhsvG$9;40eM8}(!x9?2}foCvfC^siFobSs0$9> zFTpRf;ZzauC^vXG?QU1KigF$}Lb;t5I%V(@-_914ieC*UQ>R?{fwwM4wl0c{@+ls8 znOu(y_q%lj!lx9e(ps6uD_N4Wl$y!6*fC$L!=&$=*`I`+S2^4;vH$;w>ajSf5t(=ikYD-f|*JTQ}%b zIEUZ$_ACTfaBdC#NqIk$e_@jTVlvGvYR&IOp@BInS|zQs;%EnwDq+)D_uNC;WY4A zN;hCyQo5zRgoJ7Vv6=QntE%fYNH1vFhhlU_nlWbR}bl1g1P!MO<2`YUb9f>aLCu+!FmSc7d~XD z=;`^-c*+)C`_sYs`6nknyxP(iQo`*M1W$LH-4{87ZjA5aMd)JU#q^&4{_n+voM~22 zXAJ3%+Q?B`&;{lZ8VdjTzNoyI2LV%eFb z#Bke%k?g!3m1&m&=AXXb;ADwl8z+zO18E*5Wq@cJbE5d+lDT`o`cCSoLM&W-ocfdZ z3ULsHKhDo?&lYD(h;!h;{^^uBfGiLKTM}^_zWC@e7!TP=*XYEe)QXN`?0K#q_>T8O z-EDXc{J&CdmMT@RT&;uz_e^%XO>6HZ`S@nj)!h4V({(HlXftbm^~d0Cp#11?<>@Oo zcw$wjulYDjFs0F%!Vr`?HB8X}ed$vu(QzHk&oU!)L64`WTe`77?>?;@LFuW@$*Dwv zE3FUEtpS2t&@0J& zr&1yz%q$Amo(;uLbpwb&v1y7;l`#ia;iUA9dTdA@iLNG?i%Q4Ju-CNcpS0K{c?)#&Rh)c*^s3~P z)`s8>;{X@~yh+{p<7dV`u>Nf=?5Ui^DSDuaRr(Z7Q8J{06m{vw?TWY^D%DVxP06!F z#kHhMu1}vHrRMtoN5ysat{*MAn#PhHmUpgWAhu?+r}bQ+vc8g!M$eeaxhke(^iww4 z6m&jz+Xz*8x%;vWHoN)KPJF^ao1ARyzYeQ=XjC|5w-V~FUV`fe0Y(lu^{n?nx22`I zJD{xs9pxsv4R({ET>%t0c(D$TWyft)U$Z=q0L9xSul}ty-}`WwI{Ba3K?_ELJ1OSh ztPbnD=PpH|*p=k_>aYmD8OsG9E+*BWH$szCdZp0SlqvzYF1R|tB7^y`&WbgXmV8ra z<$R;#-@uh*GV;Sk%!O&9bmdSVG@d|iLzQ&6efG}x zX_IaZI&`hy`5J8eZDnS&1>#43A7wsYEop+NE_o6lajl^{z;qpVAcWyHv>EA#(N#HF zVt7p=Gqcd}ZGCz$tvG{4p-`-PMk$DTI#(Qg^im5O%-QHQ6p?jmN+B^*;kj0gLLUY4 zwGc}+r`#-Q9}pEriYxpT6xBKujL|F!dEMW5dQ|YIQMBm>!f0LuoUx<5Ge1cTk{s6s zG!8|qwg-a(X9JdEf_zh5N$S1}u)=g$OEePm>BBy)@yWxvTT~+`OQvs<7IWlv|LYi` zlJD(>@(QwMh;kFS&9kn=NaZ<(-)au}uSr-@e1D665>e2~G(r+U&ok?E%*Cal} z*pD84_LK>#M15gl><>W8`(a3Dcl8j#D(Inw(qn|)OIWl1MAuf6F~#mNgN*6cdRBw% zm6?~)CJQHA1WJ?z$&Z17LnUYw;f|2o4k$23&b~2f(B{y&K9rB@2^?12)tC8(^UW88 z29$wkiXdiI`8`7tGg^U{LJci$^u@Czbr?ITu&I%vpUqW~_As8+g{K;>h0pE#>iJdvLpwGol>MYJ_EJloJ5hhZAI_W? zUvan3ctP$xMNNJBZVKXyir$SLLa`l+maMF=k6YRbzsx8vLcW(;w1}Q#&1YpW0?vT; z4)i4wV^cK2SfCH9N9MIiL4ppt5CRC9!FS1a(_By zo=CRtJ<3a>Mkm_$+hcn^He)P%e-xFyOdTRyWp8b(!UkZ@s)lito$R@aun4R>T_*G& zKe8(P=n?=(`h@6KkE4ulW!U9@YmWNrFh8zvZr#NDG<^=jtF3VFFNc1DXoraB&FHZH zJU^|Ryn2wgBih*j=~)kn_qYrEe2=jXrhn!Ld6E+>T6v!ivQpjePHXupV3^K@w&TW< z0^z4;PE-%18%$;+aACR3p&CkpMFqQVj0-!VEt+yD(Rvn=9Ua?UrlaY0XiUHFD&B6~ zDhD%_eaBDFz4f2LiBty#0*AdCiP-F~q1x6X@*n&_MDE8;M=azC& zi28?4_lkj7iGbI#(fT%_ZkjLGzZT?vV>VR$WTdL%UpQ!2Yc7Ud zMSxYi114TTCJn_UwpU_R?|}9aAT>BsaZRZ*w8x_BXZ$P^?pPGCseOc=IUfD#DhXdp zL%py#i?jy}$z#&)b_MX&fe-oVJmgZf_5<$=CYAK)+(&C zfm#H))@g|jxNcY%58(@``*!pk)2x}aUeN@hGhPw}(SOCX^&$9s>!#%tm@_+h-k#=P z|33dbFQ&loUMY*kA$gI^>=>1p%nV`E#3ilZRqikZ4>F~{GWZ$=*RMu$YvTVh0|bm4 zv~=Aml$?od51YOKRs}~Cfi~h>#pZT)e7d_^e+7Df)ltiENKQVS+%T8rCh zN@X&#{W0?EeHRQZ@L0qknD#%vPU-hR`~un=PE8wmfXxC!TnQ>Dg;C=? z75S)A4Si2L)<88VAsJNQ^Js>!eO;>yO3D!OU=$z#m8Q9kS#UIUoEtJ+9fCn-M|$kF zN+!8r_jCf(iJM(afBW|RuHg)zm}tw3#S3(P%VAGy7uOuNrtiByFIO&+fx=#3)it_$ z+)AocG%Oz*J==}Lc@#T5JB{md5!Z@>>(1CIsG-4dgw_9d`>9*|Jzih>+us^Ih7y$- z3`Geg!&9CcoXFUI8;8>mG)y5UTnZwlm~^d~oO#)4eRN!#+|Ej&AKKT7;9f}*+>PY! zhz+ovN~J0_e2NPOvp!3BjM-_ZAlNv*jcN4EEm{?T6rX`H-5u_myawpZbJxPi_bhG% z8emWhK{;xH9vBciG_Siis)WQhmXq(^I83n0$7Dk(swpW@BG+`eI>OA;ay4qqjlvGx z&sW9*JZLnKoWw{yHD_u7#X4+Yoa z;+8x|UICGg5NP~LVJk-Oh!(c2IP%R5xs+H^Aegv5+KvzsM)hVrWw8$S^QF@)mBYaM zrmPA_X&N$asZxvdTE>!d`yWQ#G3)DL0z~~{^O2{v#~NMWE47!D>)|&_6OJxABjEO{ z)u(R-fn%QU({{N!SU9+!esbvEbN-Y6eJd!gX!Tf?paBEh1dd*+$99XKCG2nQ@(zHF_{|uGLe*No&BF%Wy$^)A5R`GfnvXH)0Z8RC$G4@5N zUGfaJcVNY?Y0zSg8U?|_ZQC93rBeD{eb{7Si5ej!;H!b6;@v*j-APPFPobdB^n2^L zQEKRVolvKNj?tfm)8lF>a-8jD1wwmeAhd90Zc&U+pRZCPCWRPgbX(+Hb_5>R$PR|Y4AuBnxHSsD@9^=&SkJyozRWZutsGPLmAKga8oreou zf84+~0^gCfMAuP1t-rbu_1df#>r>DyJJtcL!B`4`iF}yDggh@l^&LMOa1ESGh|s6u zo$k8jD#V^YalA^I?vKTOAKb3D^TTtn;kw!8NGrKpE>&d1i!3gU8Y{D4TZCvlZIq>| z-X~E7G;%+5S2Kk8qz9Or7!z(=^Cq%~ip214yjrZ*`>251`kYQUkDega*2mT3?dlNR z?v~Gv+wi!G+VgMxo*Q%o_KgfqP?MR5#1d59got4(UM(s!Bdx#}Afd5S1>p`a5mk-b zYH8!x4=s{)1>Ze~>LT{lL^Vy_Ain!Q*7We$+XDOy{P zoq<*mCGV(Bk3o-QOHbj{If)vf1?T-XHNrGipnt7K7{Z_gAT`@BVWh{vT^l478P~D9 z!p|eGd(X&hO(ZMZTP9s0bQ&(Z3_|(9mfpOdT+kv%Q7x?&`1=I6h`3)Pe>?5=$g!X3 zTZcj#=oTvE<(rk7A}@JCr0&n$+;TkTZCE;=YHP@pxu03|xo~k_?hn_|O)6x&mSfq}C zr7LnH9Xd}Q%149g#WL6|DUbJHD;M0srZ?AXqdz`S0U?tsg2WiVO{f#^)=DSWX?h$J zeyx^Dv+eq~rt(PD&&c1v+o6!~m$sCpgU_y0t~SHwjDh*m%GHss3?4}@ z25)krx%YMOgpi6tylM`+W@`*Tc8X(=k#>ShpVbWuG_}tpyci6HV^LrLBqmp(kYBFQ z@T0$i!hkg|gMXn{(3A+@N(x&X1mjT=3-g!7adF&lInkqVLCe;ab7TK17a6Yom!fm`#iijb*b;*{vtO|O((Gu?{7da7|MaWO9x8pUdp{`2P zi)5Le$})Au0*Qg+*2)UfseeJo3jq)#0J=1(j$d z3i?4zL;aQNO+-#TQNdXszua!-+fSye3As48WSdOPmrGyYb%w_XkBLUlR@-O|xCb7^ zUzK`V7<}Mg8O$r1h`oIJHw?b&Wpf`&dhyI`$KE{msSz7D%`|V9haYdmLiFL>iTKE~_oVoSMby>o@C% zs9uQlGR{2>i-}u5Uj)opycklPqgI@f#q4>ZTg4|tzP>P%LPh)SS(dmgYWGh13uLRF z^4-Slo&b*46bE-0f#IcCVtG9+6)LywWX4SM&}?r;w-#cCt8Qn?cBh|<4!jW5W1a4` zg3dtG&CGocUyMMTlL#ItOwVa?7`B^D4J|d+C9cPO-HX;s{zH-T;`9#g^+I^C@LJ#4 zDFprH?g@cYqQ|USz$hcHzcRke(p9Fs6y1E@@o0hSf=XUj(ahHq`_-?O!?A)?I~59u ztaz`A_A2JQGF)X@xf=-yvkuzQi{0a~J>SD_IMiO0vGWPU7ZodMzuT-A&%#TR$CeW= z-9#vln@mxj<|Bl#{tzVXuHWm(GCf3nLChHVTlZGE=7M@9P2dqm6Z_Z35Gb&UFlMtr&#I& zkR{*SGuaNH$A>Q=qPgfqj?f&p(8$q)j99jhny zlIRwfCaEfw-S%&P_uQMANGz1p<({PkB$6AD%U#YrXT4gNIFwzIIsuDmp;Rn?lX3yo z7|g!yRk1*=&uaqj5V9n|%>7+dNq6Zx&5i*pju> zX(gWinmnylNMra7nSChaRP{1gm&d)aPtK~|Ia$Jmx6T$DG5ryJSK%m?$de-ae0PGz zruq!iGN%;EEyF27UWKl_Zkft!sl66g=rgTVWUN@n88U{)Sk4^PqxsP%>)txf(Ei$) z_Q|%dWp?NN^U(%mjF z{k20RL%meCv}$KlOTEl0%oT*U42tj1y9j;U}KAVb;M1D_?3pc58l1*)vily1?OUyyD z8gy2)Z75qC|)x>~lkQfFmxb%`5RBVq?w9`~Yr5$YWPxivy9 zi>43;<4U6}%qxv@HUg}JK@f_u(}{u9?eG3G5Cf3a+7#+kv}Vg*qui+0yhdeiLpqeg zp6fPD5E@0%*U&Y2JyK%#jok$}i}T5R(A3x?`U?L_>mb?(qi7>7+EpMR8Pz>#2cyX~ z8A;7PgA*gyY&nI${?*ClSZeEZc0lh_56%o=S>*Ho?*0eaptSlk;-&afw~&+(Na`C5 zi5H=%*21Mly%Pn5m2w~EM9^;u47jR!OlDPAnY>&dOTWbqu=~pa9d+L7WV!U6pr|##Kll|w`q%5IaL4 zzt{JLYR_%}cP3d!jH-ms$D*1kZBauLA>}g1w~&bn3(rsu)PCG=mTz)^UV5F$;LLOZ zhGQ#0hS7|q0%WrrG-reHr#5n1awN!#ir`e~;EE1nC0}-gP{mByujZA2%t&%OqUqL( z>ml7r2F_HHWy2AR`r#paR_Se<*1+L>4C(a2<#0+$=h%v7*<2|I($Q(TI0kM|v}`Z0 zk!dN$?Ow+p&HP(6p;fMX+8(~p7V!A^Vw1~@K%!mtN4u_nJ({uEBjcbKGj4>Xa#VL_f)7<`so6_ zyZugHiYvYF0;e){(1MfD{_S|eirZE_-KD~eM9Ez~O>a?Eo~P<9s%x3nQ0@#C3j|Cc zvKH)xNswzO*gYCF+Y_?k{l4Fxa6n2lf!g@HlXFpK4AU7%ME5Gz<8H@Y$~K%nJeee7-gN&r}jkA;z@tPu6E zS=eDUpm+!(wQedc2w|}yDFOp?W@ZdTn|)oTRjEfS0ZmH5@Fzr4uSlaJwVx+jb3L}OR33<bw+Zw_!NI%hTnLTM2c!ud{#S=ZS$5XRAs0Y4>SRi@clVIz)_kVhyY;3ww8|(~ z*gltla4Qg*6)DPDWS z$boW7QA>QXFrbUYRpPR$A7x%M0G61MAsB!9C}rmOO{{{E1b$w?gEAI0+_6(h?QMz- z6Rs2$CXc?HQ!RNGT5Pp>psAV*W&qG5)VaTxlb=xZ2KTH*8${q-IpJ%>gyC-Vw6IX4 z9M%VOrFBL|yuna?>P>rOd04ob!jr~rN3M|xZ(f9@TtGKY%*+Su25(VlrM!JU(}^)i zbp38ub`RrNHay_!%b;M*lA{FcmtZ?quYDX|i+Wo6|8*R9$}#?3AU z9T-nWWDk`x-9A@_yHOB>ZZ+Z9SyPpf@O-=JUDG72l&~f-jWFFZ;SQiPZ-ZO@HJ|yq zKw$_jgoy{!rmJBtkd^{999lP}Y6+I>irj)EPsu79g_zrneM`Fdv@Ut)y^wdl9GLY#>6+w1*>jQdc>-o2B@A_UwTSba>LM=FIFozSUxV0Z2_qV!tEGCytJf=yy6dg~R;qUsm~TX&_vgp;ak_b6 zh4(n*+ii$ds#T&)qDQFq+JJ8sDw5z>?Ssd~ZbfU+uj|}h-bqlscSf8Gg=yTr!8%b? zEbq;(sLVNIbznQ|NjbT+3mLG-cZEZqd|H5b$Wu%$Qb{f&#bUK;*y};een57a#?qZq zok?Y_7piyq5qbbgY;MB(39?y>v_w9VN9kPy+-K-dIER9vvnJ#9iHV%RVVLF9v7B)< z*)E46`-`QBQg_pMFFiatEM7?oU#GQZwLrW$dh9Dsd7tDhQw~F=-PQKqsiNfNN3_}$ z%M9za#WJ^ltadPl9f}nEghUaOwwF#4Q4Ui~9kJ7F_6fuuCHSTSOe+4k)~A^iCrzgW zD>WoTIZ(_g6p_Q7&MHQCa(R5h77CPTmW~B5%G$T>cAzSA!Oep0iH1*;i7cDrz=JkR zQ~^LC@0niCEr;~t{;=H)s|xtc%#fs4krbpW7V9CSJHX#RmYT3${&spIrosmEj!bq< zFHZ})hw>UyfDY<&oi9THiqa}m3hfB! zhA}5DIj)@&tj$6&r~iMVLCYv-{+V}+<*(lsN47=_4mvpKVTa88+jf86iK?B|F-jiD ztOIL11pDOpY6;E0KsY>0UaVXQF}o-%^o_9p1z0Gr9tSSXUOde<=cl!kjhx~ubo@50 z#@L0Rr%5|ey<(N=!hp5Pbai;eF4NUd*+38Av)2^T(EkO|@Z&-R3NSxSI{zt&`B`w$zsHjp~wAxA?QBxNr1h^zAn(1R7Mqi8u)$@=*462n1oxyEJdhx*l$im$aPPw30DN#cVQC zsB_ni3%v2z0=21*hVuhc$Mad6Pk+}9G2(ROMcOwLkA9Sf5DaI0CP*kGcK(WBUl^f} zSg!4m=xhR))hl_aR?;g;<#b!AkV**qM}$RV#IT7S4OOFDa~g}O@s~tZI5tsLe;O+` zr`kLUf95?EvPJ${70$+P+GER?T;H+nn;kLv|EgaxjrTaiWxachSo zHPcT0)pKHv0%n5|%dEc>t_||)AxtfaEmUZ=#D%QI@JMe;#x+^-*t}1L!><;p<0*95 zEdvilK$u%abhb$LG9vds7-dxsI(}<@tpLFgoy`ndZQx6cMV~va&k^mKNV=`VSc>C^N2!G@XP{>K^_J@)_TBMCeABO)=wzCQyK%=l*W)9Lf94|Bs^2l zO0mnmis1Ve^o15jngO8n_UiSB^yztbSE@9=x=yXg>ZUUmfUesJZ{xfI){Xd!RJwX0 z_Zg33i>vk0kKQq-r8wR^+aQ&Dna@`Bhz6e!)Zs|!M_LyAJ~F2xvVvyK_6-81u;aa2 z1Tnkc-Fc=sdN9dUtk6)M_R=|>EY9p2?Df$t0LOck2WD`R3#_J z`G1b*ma2L`u}Q}P;0*!N#Y!=A%fhfG^Ixr0O4XPE`@2xLaY=TAybT7yIU)G_?oe1# z`qvoy2}+&U1BfAgPDqlcC}c0wYX6r7M{49<@FYteqi3=g9w zT|p$V*;mRlQ$QURWh{9^bWHmvwr4&TRya9kH3uPcvKweS37eSDNxchDIo-)ZL+u#m61L??;b;#ps4FN{PYG`>{Z3J7E7@D*Lxrh7=yFd&CQ2(a(gfi9qK z?p9v#as54*arG{uGVNB|$lAFcdT&-I7*-sWzRZH>S{!(dvKz%Oq`A#DbRmo>i#ugh ztIb!bfo%9xWowgzB-P;g=OB2Nmb%$!1+@Ma$DZk#=3NBAx8Iy;8DUpL0}Sb40H+s8~Z~n1IKl& zRt}E5t_cUJ3pwhmQbFzUJn*3qkXs&}X<0kC1$E#d9%3#BQ=R*F(34j{+#d5P$Gl7> zwfX)))-t<2p%kGFS!s=VMBEZm!dG0+iFjYG;d!M}%`29w^-8%`tJI6N{FSQ;(nU~; zi><}p0R6tgCB-Vqh9eXXV;N$r^l7tu4(lz$0&7~do0Ds&#vau>M{m~dcNO-#QvI%^ zAN#Z&=C0%K`p#J$z9Mx}BTfysj3bs$O5PbM6XQ*B5a%iX;e+e-C6II9H-e9hFhM2W zLZd1;R`gR8FpUlh2A)7oqra)yg`1~qcA@&tFgqCYa82xI)|MwFghW5a;>t|$UnS2! z@!Ov!GjOn0s*#`e2jJfV`vSni@Ji8~5p+SdW{L(7DfgT#t2Sk0O21yQ{!J_W^08=B zU~AMe_TACtviMlXw4!(>W8RREMZQgA`kmP!1lb_1Ip39j^4lH_T;>K2>8FgV^X>z+4QY@Y5w>WNHiRxAG; z$dNx@RQ@TI`)M~eU7|JZrsgf;`6u8vE)mc7F_!HI+F;?QqL$#RBhK^5*| zsw_HekOf&fy26oFzmGa^o&-uxlMJ~*tib90EAVs#bb7Ocl)O_-_&TpjUD^IlbjiF3 zWYaXM(e!$|SZwIu&>D=@HZgXRss6>R~KPr>eC|}uEvp{!a zXnT(?7X_&Q=v-+(UNJT;GKzgigUMEPI^{YW4@BMVVq~IzsM(HR%l_ z*{&wGtYg@UELT3w(Zj-~txZX7Ny=5nT-G*YK4vhbI=gZ6$Y2#%>;%y(i9gdaOzx@Y zMal#fRjFMhh@?cj+p1@y%xb;bCf>=_a!a0hppigc5`I) z$|i0x`zXP#SC$mJpOvko4Uvq}pmUQu{JQ>LSUp;KUAdOyEBS)OsDq_epj|n7K|Y=u zO2;zC6GAjaJ~b82l4gM_C>ZpnkjpacdmX>ag3AetcbnbSt2Xp2z(U=d^#IjwqUgxI zH=JWmy;4!QZA>0vhStJEU@?T`k5J4Ojq`g+q}yB+mJFm3BRmgM2q zi*{SQXFL~cXSaV~M~x=G-`+@78X|=+D+yOm4B!2ByE$()jNkKWDH3^a6e6dI<%NaF z(_phd1^3%Cld>@GI4uCZ#ApD_r8yf7dSsyY0f|Ar)7N&Pu5w~>GDUG@5@#+lDskX+ z8iu2<@PeZ@>rNqU;Sa{MFW^ECz>@-$=A=n`Lm;RvvfujnG~WcxszQy6@SNX~ps@u6 zqE(Bm*@xPA!^i{p8-cnY@U{czNrc3Wz{Qtel&J*%U= zwEY}|!?#sH8_{EYWN@3^D_%;|8#$E>J!(dF3-J_9c3)THYiZq_6zNA#|IR-fOSU$# z)v@MOV#4&zRuQJx>q4!B)+^n5Rj+5Y4Qhci#DF~g0n0q~^)VYgSypzpIIRo2yfZ_c zA;!_nmo{gYw=!%d$L%_0vbe^wkwO2#QAh%?UWu1QcW;3Afy7GWit{@b-MkTM0S6>g zkF!!s!^2kYW}|%B!`Y26AaJBJ&ty&xACo;o{_yBCriwDBI2nUSFbs+uMmz%~VKMMK zUWPN+oXbwAGyd@ucfq;a@1H)zt@k%s4F)DMcuK>OqnNL0<3scv8`vkr+?gcM ztEBVzU5duWDg0za2*}>>5Msla&e=p^nC2-d8hxQSGF2>^>E~CksMpy-#|#s=P`V=Y ze|#|{0OYtM*=%jBZc70AZ>JLuj77$3t^S%*Ue^(m@_B`m>Qh6HBK`nTHk>q~P3gKzDKfjrA*@cdLtN+#F!Fw8Fqn%`M&PY;hPu(JJ4qw3O3u7%|Ms}X4m%zXy^8)XXA0SEcuf<4O3S*1Xs6sI;$LMk8tY z;!E8ky3W|P)s}-urY6a~+^+%(R^YQ!bC+kHqqe*R%;%d!X zs?wY`;9^t-@1pq`Q^K>?`6L6+#do>Dy<-;}EXZIHgN>d5jZ5dY@pIJ^O7&P`xJ;|W znRZf6W`^uN?ZrVz^5Wz@9vJzC(6QL=cjt%wc76PwI~EoNoEDgEmo6hYy?uVN`#2CX zrAJ)&Yc7Z8{MCoagj)Ex!1+y8zWl;6-Q`lqa`n#eYm`1WvYti@yCIW+f1>r=XvII- za7FNJp+Qia8&G7Up#VPZ^~;$yujBI3;5N~8WtuqMBpj>3c5yf`iZm+?19c7?#)SNQ z33bGjGe5&M+?-B_#d00V8_lQ8^1{^*(2+ui%(S*h$y%o zec`ysxY>hS*+?W1F0qC7Y`V}$@fZ!Z*>q;hbnAA&5yo94vp`N)G&J-IL<$%~xtJ)k zD*AQ|uo?~V(ZZaF0$%8nqEcWXR@qlkQ0Q!mj)v?RUMW8E5a2kP41tQ$MMfcnrQ$uZ z8SJcNi`;&3%uyN%#al|KX{dKB88(EJr#WmY)1o!h`W!yeDr!%UssbXEJ-?nb$2U&J z@)!5J*5X8adbRFm()ny1U9XTrm;2#Ek_0zkAxpN_lh=4>dgWDlRqiK{Jsn|28c$HU zpc-br1g#YokUzLZ#aoJ%5K)H?Ee2Q$`nhjdXa1gU<9apyzTGwzR}Q)R@pfJ&OnQ$g zUO4NQ-7)SPu`uc~>tGLuyu^rRgego|@zNt@2`gT6FqdYu;WGu43bVx9ROz!np7v-_ zgTwSQdEdo`S8r4*#af+QOH8QsRjr$WlQL^gW=_45V8eUo@|?!=@>!~sDz-;@+V5OWinIsnX^fgzFW0ax1{13#wQeI3hi2= zMSwOgs9PxEXf+L!tr}%XpZj@eu$4gk-zr!Do8@n~yphfZ{jaHkRG8yk@G=RPOl@pg zBF35w?I)wF+PBhiD!`F76-nvxG- zAv>KH$8#>YCzFQ7X0dMXPQmGc4A7xk@trA;V&|GAiliDWtfzvnp~89>r)R8V9Jhlp zaCcnnRzYX8TZ3Z*-2dEiB`w*ELas{e4K^rwV5~qDGCMjcZQ?gPE<8^vb#|N6Ie1)9 z%hLmcN~7g9$Y6^2EA!E^?BDA?xRDhus>!@LoYu>-Q>%!o&VTMf@Ul7WX(l`eXUFTu zlhBuOYUl@&(8{6t1aOo()kT`{P4~-_6qM7+6;84l+ExG+Z!))I zv>t}WDl;#}-J{Q~ev{Fuw%XMcPtxX7a6DS$%E8z%dWRwX z6Qb85Eg1oazz&zHtpMp3UMAVv;6?-P!HxkYV6*6#;MDnKF2&J3ZYxotz@t-vCjayK zxH+vhOdHY`T}x)b&tABYjTjJz#cIXHWQ?*Aaj~9or-~6d<1ksV9!m?b$|0hit{c^8 zW?u-*ax{2G?U_GQ0~Co^*z9*}rN-Xet=dd#0z7^;+0Fzf$}NtowHsmXdLPB$z|6Eq zKGd{(toQN+1hzI<7bGYDZtg2{^&OQw%)xG|WidBVv$DO{zxm-_T-dm(ZXA!<5Dx$3R}nu{%lOR682F{&{-h% z<&<24W~Zl>`ka(D^Bd@yaNsR8{sl;^NSh|)SB-lt#UL^HDC+4QRfTCdr%=#CVe@GH z_n4WPmQjt)Q}YhS5YS>+c@<<25+)sBEx0r*RwI@=Arlp09AkKnau`0_B!&q2OEuUO z)nM4mvdxY&qXtK}WHZUMyOTxTwZ?#O{PLH%KldG#3)qU2!t|DfYM*Q`vgYw`$)$hX zBDa_N89?HPz5u-CI9Zn=7O!^q=*}1ekW2;9kH%u_R??GtsdwsPN-vlO_oz^y#Tu3u zPnD<5?$=;@e$JgvPX+pGktLuhU*Mjms7MqGXY)c1ebw#~T2UeJkB2#1Qsi-t=+}2g zv_^g=%O^ZZ)wCRqo4?GNmxJDjCF5FL##9x3c}zI+WKf}Q+uGgUPy|o~B9=>BgP8?^ zM`1_gl#eP7#2q?rIj-!~>(vYKw%5~F=}|S4$6}KRV3{L7wKQ?5NDuSCBme@&DXsuw zlxu%#Vj-uHS#mmW%_e>-xG>hm!k*l|f<3v-8ZT@T1?hKej(h{^Qd`CuZG7GBc|g^Sk6Yl69K% zShvD8B)be>r<~7@e5&sFb(UZvw?C)=of|(31ml~T_+oBP`?AZf}==4zw9b# zcF*hZ76250hTcyCdfsGg(}Wgoz?R?T+9h~diD6fwGqvYeyE1Wv>nO${JLh8vch+|!aV3mKXl7i+EL&+rd6(g@C_$eH^)i^zP6>70i$R(+jooOV zCg9EQXvu7AnQM^e(Qh{9vz#mPxKl#l==H4oWoaYM7pd>SEWkoL4iSr$w$_$suT=V# zEF`ZgT%UgyZl`=C%hLa9Rxt@fcl_@$_<$1$vB<-yG`_X;#KnL_OHmUP@!|PP8M&Ft;co2|4?@tg>AJ z(=jbd_0py`}P-c_naLUMh z&rsg05UXZIa>JRYZHa>7Q&E%MHD1i1oa$u*LH`=Kpg4{)RQ&4CH@7R>>Q33E%$yzFM|SwG67Av~3Bj^W;lz{c=F)Payg+DZl>~ zZ8hX&0|<9LKb`;XtoG)_`KMrt(1TuWz182HZ;zX&HQrHo{U@14eP|}aq~7D)r%h-= zUBmbOpM0DlP_3pMt}qJF7M~4Scr>+-nirVd5ij>r_|6mFZUsv#ji~SVfNpT>RUC#D z#`Bq3$aBxGdehNWZ#KW0W$nSF%N$e;fQ*V3IA`s)c5{r1Q7QaZfdSFtP-F$|*_aJN zMn7q+EoZVO{x5SVKHKTo4wLhj;@mbNdUUdW=s+=jO28c{nG}`+g5MpMDBo64{lHTU9*iTNZ#dnZud%cF;WqOqILK> zsxZ=r-iO)h`iMp`o!!)sq3J5YSn>PhH4PW?Lbr=UvQ8;dp;QnCb+`@5o*&dz6Ak#| zRgyV0n59i0hqeN)BdAvJpgDQLWpXgqCQQ8uT#zKO zN*c4BmN4X;G)h%|VU(E3$Xe%``ozB_+qwgU&aU@UK%E6MMxeYx zDeM$eb$7&?#c#jpk;TacI25PZw^aoCDVvt4dfgIFOIgK18`GKk#WP2>Aht4wwWrAJ zregBxvy2j|Q!Be2)Pj!36mT&a5v}Biz={^CNC-s(Z~RpzEsNDIy-_F?t6hqFVVvf8 zg*zwS%fwj!ZD_|9I%WT>$*e58|3>~L{$;lkg1X;MWRtG8!Fov(``h{H8;Z_c;#|0NF$^ZzTMT35x;E|-Hi`^~K)IG+WJrCAb`RSH3~3za zlTS2;8}6SQOmb=63RqMoSUkV@uM(|Ne*~1tPFhQn(1u&E82sieK#WGE62sG2fT${xx9~GFF@Rd`lXdqju zUQSB=7`nuQ>-DVyF4>dQinpRykd#7|@Z#z4xKQ6^I&2P|FjG%vB?krGBHdU0;v^5T zRVH;pq~c2n%4JcLoWY}!LTF)lwPN@i?{ zu?_tha>#H5!RtwGocs}p<7xf8+V8$^9hK^B6sn*i2l!!1d-u2>;_Je5oxKzO0CL86 zNYQP6dj><Iqc4|&%LXccv})?FL~^t!W?Mi6cA77;u04Z4w}MH%HA!R>;QUUC~fF$YMP zfWQb29bR5Z=ozsSd4ZtPDs-^OX&hf)Pjdo)lw=|47+zeDIvjhMInP27qZVfc694U) z>{r@jSMpox^@Owm%^zV7i|fuKE8&z&0+|-ASWt})rF_C}!2UV$dHd<0+I^h6UrCs7 z&2>$y;GRAZjbi5ifb2oLEJP0V2$4eob{`c|?hS7=8EqeI?kciO^Vub%3*aig1?s8E zT1qpVF5$`GUy)i$5uagCMYP8l8Up8OYF=ZO2yW0(R`P^b>oX|$SGhxt78z;g`~tjW z(WAzdzy8&cYuFX-*Vu(wV!zU-_r{25V#e}#4&#+Vq+sM3q5;dgY|CV#UUSM=N9)oW zrEs9vAK>XTG2;~^}+HbYJCkZlIICX3WUb7xX_-*&Qm+QkWGjJ z{1IGZG%qf|#$R4 zxx)zzwjfx{>%^k)v{XxS7UsalTNU=pvu5zLx*0GzTsZ?JhXGJ<^d*3G%q4m&x`a2A zSd9o^IpJZoY(@-lExl_ILK@15W5kfx`jgvimGQ zD6B)ERvWfyqUBimu`itpj_DD{DqqW>>F?y@HA6+k|X~NTAkd|tQ zJTE9>@3)-760td&PWJXpk&|DS2uiZ!mXENI z%K(^iF`EJ*OJBND;A5bv=1i@GHLzsx&FPJqwR<+2>exGI&0W_!0@+@E4Fp8~t3Ycn zf`D|7EVJqaH}kQh5Aa*&Jsr7uXFj4f+SD1vocVmmM8f zgVe)tNUPoJST-(V5Y?holCH>G+w9cRwAye!EOgOPyUq(dlY_ze1XIwM)>2yMBY~;Z zX#Hh?V`{`cmVf+HgS=2{+irH7?eq4saj4ud{Nm6Bi-2f2EDtfpxWX4Fw0hHzLK98D z$#5idtm>B?!&t4P5?YM=%@fYMKS4?js{=hDR#k+f#F%ZcWsKw3qVjdiurpa*&lD5ThpOhI?$ zur3O#E46QW{mz7bQtVtO;;N~MxN1H^aDWtE*{fNV$B6k#`9;x7@G!p``b-h$%(Lnz zg0#HxzyQ-bj|hN{bU)?zgfH3;B`g}yH_;FOjAIziMQ>!!Lg^d#=#qY9K4|b9fH~r zG&o~g5Nnmc@4=4?aQrWL!TV9;V4%P(V}Y;Jc|n`q-DVHwk^OT>JQ7|ooeQc+lcZdZ@>4h4zs!3yFGN>w zPV1N!`7s>J7T?ROV3@Q`$gl!Pt#HnB!3R(-7Jrw*Pg#j})5&^C4xm%6y9%0rI;@vg z)+PdK@W{&3nq-a4%aZT9b9}!09;lP(vU0(aNGvD1MpALFkqvgHeZF>y?xoqk9yys1 zztbO+Q9bH*$;1wI&NLeKofcXu0yYv57gImXSgci<=#(baGs-MIgTWJ^A9Xk`M0JdV zGH=511o6kLHJ0?>G_05wT2z&4vxrge?=w1ENVeiCOA9lZ-l}M zCPeUjd;)_NLILyRQ#R8jZ>kSPR=6QOnkDt3=T^#&h(LxG@Ee9_((<*ePV8LArDq&` zbxa<9D6qgBB(#OIaAqy~*%z1lO>ex+>f z9)171+5Y0h8$tjbJztvoG<3Ph8IOkyFrbP$m7q1h*1%Glnu=szfs01u@V5IS|JHBI z=#Hy0y``;pLG;Rc454sg3uTD{hbg%>SswG)*|?8s#3L*h?SQ=&ZPM9>S&spMUY*I- zR{NEc?Tk9e6Vod1%ib9{8Qw8Chs)3a2GWMfh!pl!&O?+W4`B$!K`@@f8|R(#<8l8@ zj#Glxe?;g$8K{oSC|HKt>%2cPLv5qCzGf$t%$BwdRzG*ETKzm(3iU=>;?;sEv-n)6 zg?}ZRFpS2eSnteu&fsNHqGw8vB_^I=*IZ$9u?REAz}W;=?vE_*To4?dk8~LB3rIrK zP&SG2hLs-Tr8Ju5aNJs16C^26-HoH+bs*p1ybo#xZR!N|+cj-MHKQYc0tbFU;`%$3 zzJ<{fjQL}PMf-hntOipjHw}7I+Qxs!-)r^v)9e<1C!cTU>hHDsJIaSa5$$rmuc$P9 zO{|oZmN!W;57un5WbHE>#wkj>sS%i@s;(jd-EE-ca0)$aR0ayE^}8*tMlirkIGm6E zR|Dw*u(S4q8ikd+^}}XIZSH>t*MM_p ze%Tw$g1Vp3=u6HtQ2covrnA#DQCT_=?C{irH7vJw?QOd~kgtWL-EzM}l9^13yS#%& z$h@-=dsnc&y0~Zs@_?JOz*lO}2>cXdX=!`6$F5p8Q+#ArcKg`rhE|}akaRufE&u@THXC~5{4*FRsI0L#6{u>C z^$v+ZPYFGxR}wZCw3IfMNS~=t(1L6!%sIuP$VDq@D0n5q`B;c8-v|_?yhP6zwf`>j+7o9cd9y1VU2*VD0|JLLe+%(5azX!JVryfB;Q6~uyyfC5+RWmFhM}ehnTuwhS)*7N8_pbzXUrS$2m$8<;r6EEefq-=TqtT@6u$S_c-i++> zfc{wqFG$<5Cl*yg1n`u^XH!@SQLyLtE?HNT9Iki z=hGXS$%@}G(vT5kSMYHz9KIkthrcL4%lb(p$$P12x$z2sV5wG+Up#Fd@Q^K+V`^(T za>mcA+u}YfE6Y$}>B$aNyQR#{QmvMmFjpQ^iv{D{BS6;Nf~kVjfBq9J7B*<^ZssK^6*rH;0}46pyYA% zEDSRCrqemt$eT=t3FpJ4u{Z%Ht_!x0Hj<~bu=5(~tt17ea$>Or7^lCIuMAgI_40f) zFBb0iFoENV1K!?WXfVFE>&Mdu7OIBb&G0o0j{vwSG*f(-oZoOQt*2?8#jiy?oQgN$pW!_gql9nTrJ1*5rosM31Hs@e} z+&qjw_6AB!)LbaIl|I*KthclpI`T&h`-y+860qaZ6bi$s7T6yWmP*)UW)Zfl24z7p zC4le5wAp`i>{hr7YZkSx_f`D>+kfO)oK@!(Q`cg>r!xOk=`-|Pfvo)%z86WW{OPu~$@8o>219jvR zfeT@>*sbGlw_|8y%@}{5qXgkCb4`- z5hpK|QVKW?t6?r@NVB6|^1`rB0IN-xdI5__%}CujWGT8vvPjw>q<$G1jv@?f0e z#VfA0BwTb|Y|;tksAwQYuQPV6;}jFfB!iF$3g$hhB&h!>euY8&H?R=ca5+!xnC7@Q zYhvWUy=al)_fZgY;Kk(E+7uATTLLYi-?UPw@*cLFe&62hpAac*juq(e55*?+t4wS% zuwW3ToIiWDt(FZheKds^Z{%7_qr33y8r%E+enV@4Qo%;1kD9MkGs|EHw8TcxlscNj zR89ezI83XSyDQ*NUerc|b3Qe~qofYzT{dF*6*}@neNOUHGU(J%5-ksm?;4b~3vky3 zjhf>X#VB7rPHC%sTBG72Snlr^OIi@g>lZDQUsv~fA83>rca1!Ksh%;U+Zu8n;oXkZ z!m}0wwMsp_!gX6Lwf?B>xRr*$ZsJ8G)oL|SGKU`n>#sfOgC6<>cIZUyoL5!l#v%&g zlEYEuyM;Ty-mMHCM=eyMm2eSCnCKeM7LQoCo`vUK`N~};#i#G!^@j{wwDlFVJZY(> z*Kk?D|Bc1@@W`c>uUt{izF>Mr;~6{qVXhrH{2#sn!^#D(nlvGd>b-(n&B zpMIHi4qrSR13ag%PRG6Bw4h$<{15&M<4sDroh}`p9CP(@}Uzp@l<9p#KndZ%|3LA;syC7JANA1E@dZPtXq%E#KoTRbj z{d@60I6i=?yx0}@;uY`Wm6BW$`n6Mva>TnmuZv0&%JU-6WYEz-Qk+dy5JV;+ zLMLR#FnGBEW8!h~6*2oqb_4;?p`F*PSSPc^u1*Wc@@Yk?cZ6u=T+GA%JjUFo?(_o>rSWnED4Qi zS>F7Y!}_=ZzsKT9*0mjSkLxqypJGJa44Q2_P|GG%r17c|nr4sd7xJZ#z}N&^EAXMi zbV%qSjmJFTYUP1&NS6ZzOrOP}0y6&$ju;Mr#u5ATA(sx7rIyV0SCci!UsFWhVnpjM za>N#HaNg}I9yGV6?XnFkri|%RI9@zi|K^m6wako}&HDbWR-sU*_U6NRuOiBDgZ*NC z2%Z*qYl(L~6`nZi7U^uFVPP|kC+iGQOE@-s=L$~JR~$9{anNtJ{61~gfVw*ha+813 ze9|HE7v$)uW=v3&Reh0uWBAXy&lBRhC7cLuS~`gnZ(1nF|xsixN?6%7p05<G@u4ONNS?~lOPqtvYMw7x$Vj+=+abK2f4 z6sOA_C{3}RVp0s*xc$4MqyN~d@mAQa@t3w`wP{-&@G(q_N`F&3@K-<&`7VYi_3BDK z{{!Owj(pP9hXDTazw?#DMqV(q^>>TRR#^xol~9!H@hbC_}T$w}#lZ&yoC?a&%M zXvq_C)UC)R6*b} ziz-H0s`4L?*M9#^3a!4xVsLANvN(>g(m-Ml&MHHT!ANMt2m*6{`q zDOt{ukEE~JRGZR{6y~pW6B`D+oQMmMI*!8YrX03OOGk6i>wj^sLctzY)csl^jC8R_ zqhhL3wCl;k;#MQ*R zUv@QxRm04=qXAZMX-%zU78+ZE)~lJokI+4s5Raj*X+#R57w6?;bG6;<$ed!1fl8&0 zy=uSwmCTkHs+E0TdJgXn6{!BHu>lj(3M*nPsRGnwO=#KxrN! zJ(+A1MP9{)-<%9tae&du!MDY6XL9j?n?Opu-VkEP^#h`o`x6)MV2eiN$+1r&)$nNx zoK*@hD_oqrciw~2Xn%NtZzy|1%}y_DcG}b|G9iqnSnjuE8|uSs#xVE8t{8O_1?!Bt zIv^kYaDGfF(=5=^dtN-?&yp$F!mPD=M|#cW;`YNqC93J&FV}Duz~GLLQAhGg`Oxq^ zA6kpk=Hz76K{lRUc;6^Z$u-0ZNkxLNa|3O?o6ynYG5W4*8SWX2eVU3&p*g3WsT41% zG~wbV0#o5ip)_I03ynsJmCCl}{3yn_>lv8DQnbAK(v$kv!8o_xeYM3)Xd?aR_K@S| zyjH}R&)U4c{Q)hEAXwa!4-4L!(_xoVFZITbn=VdjXYOE{2;4Sg#l-~?XKa#-+3t5( z*4fMG5@*Q|O&wVdu=VZs=hpgue_Ts$>m`5nfz6xE?tXvufgaUnwK;#k`e6Fy6$U>l_uWfSP;(s`A6q!oJeiYTR4i>{JaPA8C2 zIkZ@NNLrxGn#)^@-79T(G2=3AI2IeBj8T)NQ8|{@l}>F7EQ z&yBet?STr^l@wDKjapHqDMfZgo*&Jr5o~ppwETLZ^}%}`zbV|10nDgiCIm9HFiDzl zCdpQ-Tt5v59j)e<6tjOFOx&`g{w8#g{b}b0RY?#&j%gv=m$Ff+O%BG=ubGJ3Yu0Ve zcg&l_yMV@tm&H)VA>LGxvPKO+9ZTVY78(Qs6>}u@FQ7d{G^X=G+Wm@jFpL?dFj&BX zQzy|v4~g#vkWsWx1rU9r1$F<5Am-kb^*z(C2@c;@?~k?HuZqRlqoiI9FGlKxhHTW9 zkMirLsBB#5k|5N64>M+*R6AD6eA2~AAl;RMr2_t>)D=vvilvgl%W-Gi`jug|UWLk| z+QC6oIB5Ad9B*sR;2AkruIEXq04k7<>s4p{wE4O|ejlvQk67q0T*xXTsZw*Yw~ebx zEgR!PW2#q+4K16dY|**V$o29CSbA?7VEFhGz*qrZ4=L4Bc;2;Z)2L;>E`YwxeT9rv zXnR<#O4&SgK2<#~#~@q%QH!O>Q{Xq?@Ps(F9j7V(=IK|*PkFM z7UmP>>Hf-+Qh3u}InMhkip@!uY>Gw|13AN*O`PePO;xh_0?D!he;R*~soPXgeT!UG zQ1_?z+P~?qzEqj6^Fw28{@J;Io%c78q&RqKY*pKZgpI1qHqKCQxNcP$Seol3m&{5N zNB^aUlcK;swM5ZcF&Pc}UmPH=g7J7NLd4GRjynI>9_D0t{uyM0*115b<&?t$)Sym> z&EZHLGN@m7`e-} z*Y3+W4Rc#l^rGLjb-tnyzdd7iEhHi3^SN6rms*KdWO*k08h6Sp393euGB5U6~4g< zly`ax@e&$bN1ja;hF49*urJz|i8yxnncH2kHkvhBFzH_&m#?N`M@kiS(Z zoo1&=_w2`zKjyV>1AnZrE16bffTUApFsczLk{V3HNT7Y8E7ugAPJ1!tbEecG7Y%h` z>Q-WD3tczhLd~@TZDsd@bfi(j@s8mLStZ4xEGHT#I_SJssV_Y&Xb-Z9TQNrfS3s!0 za_g@LPUh=|pYphhmV#U)6J>M%J$hN%=my$vS+GyM$XUrsxYB94Q2ZYqr|{X+Y+`)L z?a0NN0bsEgJ7$(f*H7^`Fi=x^ejI`jW8xT6`09qJR|_A>6hSLln9}9Tya6DEg#cf) zsEM|UF49$~yE2C3CTmdllKtd=xP& z$^eQ4iV2O(V<6&)xu1eS9S2V;4DI9;-vfqOkG|}@@4t#~vic>GQnoaRuntG5xJzYP zNqX1w>BMtf&n9x=mweT)s#HYEC!IE}=%igUWbQV-s8$Yd6l2PH50T#T3>n`YzBXY}X+cxVjsgOFH2xwGaJg<1 z;9K3g6W_PHMFO6~bSVq$w$yqRY1OrViY45x{*$I?Qe4GZ$QN!6*@Bntp*L&-VND~Q z*&As224ApKs+BZGYtZowMr*tBk`OHgC1P9YxZbTF_U8?R2C%&r6~#S=Jv%ai;=KPKgSM+sR01IiBm3R&RdjGMvNcw*;QqL4bQZ!;WoL|PRZ3= z{jAG!nHUz8Tz@J}Zk_B4-Y+k6fq^cDX0xA>Px`=BfHn!mH%qM#qeSmjrk zpyR+jS-P|4E%fdZs!QkNGnt7fvQH>4xo#f}F5OQ1bH}-Ig_|Wpw)!r2B9(Ym90_C^ z&PQ8{=fqTs%m!5Qpu-$8gKdT3Gf1He)0b3$70!v0k*U~Z!=0O36&}gnHhwO94h{AY z9F;W{m`E~g7cT;ufY`-bw2g=ovcMH$q$mB-`I>-i!$&@Fw2La z(^LAplK_&L5ZDz(XpuOoW&GhtG)}ABO$e@Nym0vBjv16LM8ptVk>|y2{n6C_o%d9c z9yW0@ehZLGMoU0wKiZxEH=)n`&B<<0{tJBMY=U}v+@DY3#DuKVm3)Nc-+)Cm$-f3lXi8VqaKNS1?_(N(jZYdb3&dbH=?0-#Ickc}-rCECR4rlPnqvOM3xB0I{ zD6`0|j6q>-FJ{M$8;D;o*ofe04+DZqwj^p)DXAN>vX$2BAQIRBhT@MWI+-pIVQDc; zHwRi<{oQK%{d8V$9j{T=l!Zpd5NxwT1Kt~s=QAgAX1G^rit$Q>($Af67$N?(;8|T(dpEmI-at{Ccb9V3iVFG{Q`}Yq`Z=1?f5kBkdxhvO-d98|=VIt1)-i?863!d^ zHc5by#S5AgT4$y=qnTr$WIBj*m_-~SfEsIf$uFR3MKp!OH6;(FDD z276O3*%l~W4gq4|LGn)gI)@O=^+GhV$S<}WdRk5C4|Nc*+@>$%eOh~Fk+b4DVy z@7n!SYqn+gk5jiHSjd*;v9BFg&#OzOaXNO?U)t4#E3OoCzJY5)Sr5Ajih5IcEO4Zt zLP8V3iBb#`@jz}+N{<+7#}-pXXqls6isBZL!B8yPYt-Im18ezR+RvE|EXFLM`LEwi zC=n&hevL<>sR%n1aR<&V^5zJYGqV(`(v{xn)LtM!dpbR@kIr&&Sln%%Hs{S+P&%oc zPieX0iwsXG4B9*LZr00RosufRy5uyykrRBE)1+b-w1(;Oh~r&A%aFIBH5U~UiaiCy zLERy(54p#}=6<)|t-0sp;`GQ{m$YdLp~r%wItfdg$qlMFX0e(<5_0)`JO(GJ_?6+M z;;6IHC}6r7$E}J49n+bIutz7QEd+9Q+rydRe@d!^zBk&Rq6;c>R0O~{flJ0E{jzIl zAd5pD3|MySR;s7A%fd5R7F#A@d|{~i7LL(hbJTqG;dvS8OPOx)c>-ebc=!wy)xFl7 zR?bhoX|L7m_hw|h+MdnS?{@=Lzb=4;p%9*+NGMs9pMp`3XRLrxhb%UEKxSua@G`X7 zJs>k-RfAXh2?LhCxqs`abU`C;BRNASWogwuhI)jaD3hWcnNq3pAe){AM23t6rv)h? zBBHM_bO?HAVDh}X7b4G-CbQ#vr0Bsfme41W<$_i!6=)bKx0g+F8RJV&e|;FB34a9 zu{XV;TU8=|fajo3Zr-p1hY0&YuT2ioHMkc68DNH%WQE=Oc-$XtB$YHIO6&4bW%MMO zCVUiw_d{hk%G&f*u){L!?{r@6pHZucKk=j){p{!C=KQ^nlBa0KEOIHE`9_xHnen7S z@NKc7Nw+?3A&InJ{Y)+TYGyt2lMH;e|LUzA>(p zZnPL=t?*KjnJHH;py4B(>>OFMqeN(p&<}QTZFMCtX;uQ%QpGUYWPL841dv^M4Z+fS z6}-}#s%6}7w`C=Q(M`KOPbYX9C07bYXHA4qJE}%H+9Gx-Q^upHrKHw%R=NGs^ZS6G zM**Ssyq=Pj;8N%Tib%SdfFEi(F?w>6&1DLOfT?dQ;KYUl>e1n!+gj%S;HD}0Q{O+Z({a;+r zFYx>ug$LYgR)Y~bRo|azp=G9b-W(p+WGX1HP}nXRaEo}6=|z?di_GfYfE>dZWkZ5J z6PVJuMd5JBJLbaO_w)Lc@Wl(x;ZRsyec<5}7r~>Y<`aHa45|rTiSA^imvfrMpqUmH zye64kQjDS<_}=If?_S0MgL_8v^@})=vytU#9SZB+iiRm2lf`m4l52ZBe;2Nf^Il>W zR!5b-Zr%bt3npk-y*fQUWHt+jR{Tu2gQ=RkUls0GWI!H}kCZkCjgD%yHBEUDCC_*k z@XBo1#Y)wv&eMB1rIo~!)H{ZmB6^lUHtQ6ToC1OI@U*$30WaWv1n{0W$Mvb43l@do zt`IB>!Kx4-Fr$iM4^Q-YG!!=H=96q!)N~a#rD;E2SpU=2AEQQMdo;a4jx_|Ks93K? zp;<>8sRow0 zH6x)5oP}3+%eA21uuv8w+Hj5mc0_}=sCy{X>9lAP`oqy=pa}5D2B1|USN^$CE>hiuF1xkb`l{rW`+vTqpn<>khGfIIw2$)QhEUFTn`D zJ{tZ3%RI04Gd5GwGs+7sz9h}o!jwvvI=#l;!X!&}K8&qmkDh$FUaFRBoX;R19J(Rn zIghz%Zh3ev(DY^|BRZD(pR67>%tq9QxjYWf%-Mm{|L4@5f6!czcY%al4oMHX6l@o# zUzy<}r{5a|ymz!e<@5i}U&HUSa53KRKb+tH>2RZ<{iPMkbE?RrKVOG_%QU#FmYm`m+g7xQLE9QiLay zdMTVN-tq*|HN*C&I_;t}6DNaGP=$icEv-k(#m;|WY8@wXmC*{E;DDQ}Km#B$h!%pr z63YyGA-=pskzVdL@8|=LGrCIMP7p;3oIde?nS&*{#Y%TxEva<(nez*_h=WiIAT|)_ z!;IN!RXLYbF=>xlm4}&7Q>+@SfGVE#Iaw4&FUUpTDOM6@hoMqxztBV8n(6vQ7{@6> z_tg-E@f6pR5@aQqmV)!YbWfnvGHZ{a-1)J`_&h09RplzhNNP;#@{mn(D*^*qJ<#gQ zpL1A~y>eH;pQJ77TriLrRAyk|cqy;@dn*mHc$)7vXBHA8n?G9nPhYa=m1zp+>dsF* z%lG$AE(-R+H^J?ZghW8jV+(cASX~;8v`l{*L^he^7aS;tB$-suH5edQA}GCh0(E~l zZ?;&1f?Re~%+l9!UShedi#fA+J}V5w+cg9gH&#Qy4Qv}I!FyhDQ%kL_4%#MAG!Xpc zZyebj(>KI+nT*LIb|)`TnIEz+ZyR-4e?Ip5{qZ#@22@bC>MHY;IiAZIuAc2Oy8hn) zkw8F$Llm^Fku3}G1>i`WS@dT5N49^#kKlR!;> zeQ#(6}M$Ot4_lr`S@A4^;lt@lT<#R5A`Bh+rf7m90<`=mnlkABRe!Q~z zMSJEW0j-$w`V{(9$IH6way<(Q)48E9dQq`@S}i>;ab$rP1W=U85PGGWEPH==!)BOh zelIfY4h2U-4+sQ05%frzNmP4urvvtCnCeH9~ItLvA;Ju6OaSLGBLthCm!z*7Nc-pKqU z_%jM|QTw zIzx)S;LsrMa0q-jQu#%kO5Ti2P#2_7r^8~o&h!wqodlnHlNrr4Cwgkd(G5`o^MRd` zRKh7~kpz)2hMwR=JH4soMstjk*)$CqrvD7T6>{x24JTJ6UlHph|seZGSmKae`@U!E6F ztU{IAoRx5wQbLysRl!xql6X_LzWD(`QKzF637Bdy%xkeCR~p}~=(oMXcMCptBDpu4n6~ z_2F^9TMvb(s;rn`@D=tv+)fbVif&mkc`nfJH*#DrOUyWd#+XX;d{)!2Zz`7$0ciC2_! zufzQ8Na~akrZ~0(F zA1nD{tLnqjj6z9B7LA&_SZ=*j)x;BJd9|A0jYW-t0}lYE*?Ng$tK43Ewcl0Yt~BZPMX)i-xaoMV0HSa zbjtpG+GlO+gBg5{?SZo_4=wsyFnq(q@cBz67Cnkqb291qkd;}Sw)F4U{S&#)m}=SV zzx>O;WVh?>{`fr`5%4)ez^9>zPv))ZOv4-ur_ozr+Blby!n(89;M80baAzDEEfE-x zrw`*&RuDg)0C+OTN#7!{TY%*4mzY=c|`R6Pd=2_n&e-A#%0uY z(wp^n*W`f8Ua_cpUdI5Yk@Q4#mD+6~q;b4DNBt4enfh(e{r|byy&A|CkNfZR_Vr*) zqe>$ngxP`DfVvq^e8=98&WYf@1easbVb41Tl!dn=r%+@m98fV}nY=W5CoLq|MV2RU zr-;cqX%0K10XzX(N0tB005~M9*Z?dmyOg2D^C`of7%sv%44x0rZ2T-abj8Zep-`{r z>QJblP&IB>aqu{<3fSV`@f-v^a6f)Tsii8;#HFl9H9(@a8mJiVWTs{OG{&nWixe3* z^q@LI1`a+ljw0cq?|?-(ZVpdxmj8r3%+0P6u;GfmuPuup~%( z;3XIzJGmxA-r6cAlzA=Enh$b30^hSC9L(F0u|uew2G>6o5mcLKTT-TS{$Hz}jD?yoB5+*+lT5 zm8hraLn3eS8PYm#A=U( zxJKbK==d`{u8wn|Jt`se%b+>=Xhej@9BuAs5o+K_OGS3hqba5-7sff+v{nlg86a9d zWmt=B2P|3TR-qOByj!jBdEF31%+%r+x?2X1+r^T_6hz4$G(+%0Kv;jJa`SX6MoGop zd8oJxzDs%=mCmOL=VYVj5&R~I>!oUi#oHXOQDuNA2xk@XtO2*N8PP6-VGjP7j=L1o zw768kQ@9`DJPr68rDM2&0k!g5z<(yAUKff!Xtskx{F-dg=4>?R(d6bE#bJ9?b30y? zCG`!{Ajy>)(tVun9uC3gfD~X0Ks|#tUKeV8TUQXbn*Wk3&rle8jHbhYCBQn5-&h?!HW6>8TDQc`bp*Nhli}GUIyVLQ!|F%3SsE(9qba*{LX*~`8hMgf+ ztW;bWSt*+&w7}U^{i#kyC-kX|1T^ea16U+G!vCbP&b^KkJGV5o=!YZqZN#+HdDawQ z!=iRd)foGrtl`Y&kHA?C?`TBEJWFIOJ8t<`)O1A+SJ3@>B@?6h$1dk$bdPLCL{fSk zy5~pGTjfQ$A<_)xnS3m!_w*2e<&Sw8;#Xkn_*;Q0A-$uNM($S%C7Ds&c(>#0vf3d; ztIMg@Dp6PJbv3Jq`xM%sY=0`l^PNx=Wo4#dP1JYo_XbjaG}IOFG>fw4Fslb*&+7=G z`n<&hv1(XF8X(KiisW1uKzlF>j$BoCu1PVLyEtS@=TeRYhRyfciSIzpj zI`MLR2suE)uL^3b^3iLD^fIwhmNq5 zXA^$$rwOR#**R_$lVB|vzG5f~EwCZkN74w@gfqIWeShe79NartdAi8+Hq?Z0cDAA zi?*X9YIjb_a|O@V|5z-u{;2>+CSlpod7&qu1+@LfN7(LPL-O{8(AzV0=kw|OgV?c{Oy0WfT!_7o)j*51^oF!P0Nh(D z8&@uUzcU_PEAveE3R!tp7X((9#<#dR&!Tlgw;wFmJLKKMiMw1E+;ZQZ8ca^9=LMaF zLI7_F@kBPP-uP2BnB3ls#-s6U>hP&L$&7>XHSIEyqCi8V3%mfJGzu@^RjQ#_EM22Z zS9Ix0F0ts=O6n~|k_)ITTa!yMd-IQCUT?qMiVG;b+cit^r;Jx-vw>gS-V>bQ>TV5K zwh2MyIjmL*jq^Y7ia$4LS-H{R?=i~XP~ofK0o`FR9i~JT?Znz2jxNTsa_@^W2JNvD zjI*|J6dNOG+6sm&rR^xim+h(|ffLs)MJ6KdFXoF{`N&i{UON#fUsGZV zhQMCbuE<`%axbe(A`uZ%)NRgJDVMS_A1^Ja6Z7wk`#Dy0&L~(|VRJ*f==v61m+nWY zPn&$9TJ0Cy67VFTBxL|CJ+J`^hY^s?CGgs($NljvfNiW&$cF+O!=X@Kr4Umyt^hqI zI=;GXTvfensM*MM)nM~e!m%9T=dpzqlkT6UEad-?+lMdzv^bpy`xO?vRqOjDgr8UL zN6Z|SI#-4|_Tn2wr_&5Z^I7PrMu>VC#-T;A>_#0;xDY(IXl3zGO|PqZLLdQ5iC0E-M=cda4de=aEeMcu z2Q18{Ogm~AH>d4h53C?!RmW}Z*!2v36g}vfqcWhJQ89)jmkPsN7TgL=L|c%aY4~Wz ze1jBbDM5OLyWX5wT1b^Ch8@_tK#c0PJ)T3d5#}vR-YDh_YQ+H7c}fDEoACT09*d7rCX_r11gBl;+y{ zv?Re=qfy_7*qma8w&_n~QkLpz5MYoa2$Irrw8>?he9~1?;%R$HPn&Cd_AK*2KTSt$ zspWC8ThRypx~8_YvS%HjXP{eIa;wKBYuA8FLl=esyEsFAra5ZgjIcmMo@?F~Rmkm}>VC(wV{$H(_gCChC%wX$a?uHbfYUD}{GW!V>}>ZQ)S_b{nj z{bOH<4dOA~%}$S2kq+c1i*P{yP2wQpUKMumaB%cf{`h?NJ$P9%;3k)o(#L#`>@nGI zCHH7?IikiFkEW~$5`1Mgn%K^5oecC2$Ie|V7bb8n@ttKfg?M#5N3x704(Bll1rZ{9 zLy@r;4m}M+QIGVKL^U)M(rZAaNY|9dX~hZXFUwFmCAXqu-pHd>Yh@L9QH0;Jaa29E zz07X>2yUJngduR7Ad8R;v{+`?cV;&|q)5nIt;UF2I90<{BmDMWu~;uQ6zh#ZP*wld zqzMjpgt~+`-^tmXcq>#F{_zjTHJSm-)%IR0wcDLRHxgabJT7X=w~|wy?6;2JnqNC^ zBnxLFROiD{3;Y^DtOGso8a)`Y`|pw9p&^#LD@Y}6DgfOmS#zgYu3YMZJ0tvVMA)M= z-i3u?^JbdvD2caujgplvgk0XyLc0`Btt4fnE^I)hLhn`fcdJ|8tW|Tm)w7QCkLTTn zY_6XlKY#;CLD)EQqIgBa5IQ8WG=&6eV5-`;fC9QG5`PDn_AJc?~jn?y;n;Yh7t zlS$n9qNtQA1`2xiN+m!+y;?l-{4M}pS`=CeJ!-3pUM z3RbQJI`7GJZGMa4Slqu^yQOF})kN!$l^sIx%36FiVWy zs?jx)b7ujYymDyuiwY&BT=-yF%ufeZD?1_@8tuTG&TDtB#(g-NTm&sptNR^RNvhW^ zPk%0s)V5K)JfaY9KIsW{*j`_}81fS0ZYc@}rU!mVs&M-w9V+IEx`@6vjQX@#rcgYx~FrAEbgQK)meWn3TnQ6frm@I@3@`F8sVr#WFFseQ(nzj=!U*iK zfU!06wQO^iOMO)sL_AGU`?$Fr6%19RzmE zK|XG5+|$O)g)d%a_m~@+i9M#$>hN>yNc%b&2Xn2?-w-Sae?-d%jQcLI&H>ZKpkHs4 z=}tqy5>{{VPC&NUZ${-mF7kU)g*8*0;braBBGVxeNY$&-)u5ARni|h}=??S*!<1=?WtQh$Z@(IlLJpz%;4%al5ieSn?(wiYq$u<6pm_yn~ENS6J%j zZV+l>PrXmyT?V2Mz~51uPCwU$Po#RQlbs7 z6e6+(8sx&&DpRzKR8;gBCx)hi%&NyLanmbR532|u-pS?XOZtyx0phwt?^lNi-m*rzM*-S82cu`+7<= z;vXU!!JRbZ_^(}PBD)d0xMHRE7m|BBh_C;<)q}s<9JO2qwxF0%unGgVG>pc@pu?ey za2?BxyP0nvAGaHxF7xfagv|&Y^7xlACAf~cJw@@#fhJQ(n$TNOHfUT?MXi|9!ctW7 zE?}tLQ7qgQVaBJmLRBOdN~^br!`gb3O*CA!3I^z2aD^j@*Png9QfBrL~ z!1O_Bfs|Af8Giq>enJ!-{^d8mfHE(Ea5DWAb5zq&xBK7z`s!!fxWGz}o<7$Y5J5?w z92p7+A*bPu@quxOqbT4#EGY{+zTSp(^dvGmks2bxJrY5s^{sfEEjXbR)V-RD34Bf0 zMkct=WnCz{?G;;T70tPhm#VblK92#~B0fQ-XSs+hh{?J^T4xa)#*B8pwoDsXiT)s17<6(?bz+p^b++1 z&%EOABbV0hmJh2<@a3ekstBu6dAP=YpQ!hqDM=%mgk)IgamQHg1-!f3&-s)sZuJi`q!+ z&ga-7fT@|R+%aFm4O@em#!XZz!PwqH>4MHet!yvAl%4}0>u zxj!5YE_wlFfwTgN?>kMWDE@KJ05OEqfzCS{0^^0&p)wDmqHfSuk(3WzgvTLl69L#qh(T};<(u?Xp_6`o7h#lEQA z0ix{kTr9~>Cct&NqZ0R!=j_8#mCLtf4tKzj!=B&}4ZvngVG(8H50@ z)gofnxTUJOOMuBQ5i$&dTe?KOa;1z*d_S)tT*R7356|XU^8VPmWdv+qJ?_@saU<;A zl?DAwYseDbZ)w&y;6RbKvC%$uMUtbVaYncvE6_8Ia;H7BQSRBQyaS-Ns(F5`_mc3@Y1tz$QvQz` zj3+XWEQQ`I-IZ9_0i;ft|#2p_P~ntRRlmxMTz>4 znG7UDn>?2#4Px42?CEZ0L((Px`+bOX+vR#2Al=B845yKV2|YHBPw0%cE`y8K)oCPB zd|Z+_CawpR)e0UojPKAVk>9sH=mAqSzMf7x_&xmcc@mH-$(^d3%fW|Xc*J(9Ap$D; zeYO*hwl{-DMyo%d?*m7A4SeLi&>Cw)lKXN1IYXoqVDME^@{Ur5!V=a7eS@aXe?{dn z{c68o?9o9p=%NKzq-x2&Ct3=AcHh(QX{cmXI$F>iYkEc>M+${>PCM`0<9w>)j9iy4 zG+J=ky6TW>IyZY6>s5wOX>w(Pj6*t2d{b#Zo-*1yL3A;hXJj!2?lNaC;js)-9Sc0L zttFiv8lAd~uMug};R_hDxy zla!82V_PVY-V8vGgll0x#3dx8CdzFh_VV>VrzTo-L@v}{txCjJ_2>?CyEkIiu zmx0KP>D2E%)vQ#KQuQyC<(*+g2eruoimiLKah~aPR1=kF$g$ktHPm^%YIUjRm_4E9 zsYRzRj5BX=+nuOFtY-GB9)UwC;X$D=%g+rrq4ceDvTuCirg3`5@2v+EEvsGng(fY? z=zI53#lq>3=wd~*MKZ;=(705 z4lt?eX*>X99DXeq7B`yAI~)0&y@-*sg8eh4>EXDP&-6^u9xbP5KSu{po*WmFL+r3a^Pnh?N#$nWO8PlEJ9#4dceFA5mr~PNN|BUvZVgDKL*Su_Nh6_UW zKxOPZDNZMxuu8dRGIRE9Vh|c4L_pARfHgBb|3nGsm0HHB5|H%~5!g6gyH`jby@sD* zV0Ajk%CNACqdwz#6e51 zUj%INc=DQY2BrJJY2U|87|sbV*PVLWquC>gQ#-7@hq7vzZYQ2}2CT77wv6|Y4 zL3s7PCw%DfyY5iKFzA)Xp^A*3L0AnY22c@zFV<^uMyq7$w3Umy?E)1pcOPPTb6uds zO;&ZCevv$S6_lb^AgB14%h*HthEFef&z3 z@}R0$v3I$lHp4xVMQ&M~Y2q)$vL~LxXpQF+2#e>uquF>k7?NK2u-z^Y+`p{Yh-#etV&TjjX}J2;DavXk#T$(EGx42g^W$>AIviK? z@c4C$P<(Yz^+q|#34}T+#7?+tr7E6KCYJNXVHSQ}9Y2NR9R=Y~25>4j+%p}o9wu5= zcpP>wZzhUO_~?Ok{e7e?fXyaOdQYH#9%&tFwq)`GF#wJX{D#Zz;Fh1>&$`thOy(;2bf#sN@bbI-Hl%jMu(ut{q?>G*(^P@&v!eO`D z>d{0zoK9S@W$b`i%7(v81DfNmBQIg*YBH*vh9_YSTyw_<|piUane0qK#{||B$ zapkpkv#D}Jdd9Ff#%h0xfC@DZOF#|T?JkfGCG>6EZCVnI9J^80=-wi`e6I@e1L{`@ zn>fKV#W3CBZqh4;IH11tc#EjkQ&D(Ere-cjG*??j$Teg9n2G6j)Dy!svr5)n*Jrr*!BvWbAz zXJk}rw|oqDT1JK5Tzx;kGnCaQ%~{RTU&sO|oseIUGdJ!t`<~)FP`vXZT#5)!Kx1L6 z|Iw=T(F6mOb*^hP`m*?I5gd2e>JK*SZ>r{dw$MelEwaov-JH%75;rHNSpb**9)zRT z2PXxH?ZkKEcv$86Pd;shivnh+%ktD6ojB(1HX5BHT;)xP{d}32cQLq)Ja51lWtw)w zYx+iV)Ng<-o3{`1nD|E@Zm(299!%BGKdXv-1$H*)%LC=k2n*f?PPIdvFr zT;6peded!>2IIlyL?S%;+_5~=>t#VZH&2gl?1;@wP^X-$-Ex0`sFo7cZFSf*n`jcD4>hm3;UC6nYrkiIc`g{^=d{JH1p$m4@D(3 z{|`R6mg?DXPe){^Q8||t03yr%G2IW{ws=7V?I~lW&b>(1gc(GqWK94I9J#V4j-LiX zSy9v}I&-M(N(>VXX?}quCjb&k7qf?l*~5~iqlT-}VdZ>=^27<%)D=c3SI(PJ7h(tq2K^!~W6<3fvGYd3`vHoXujmDuaWVKv{5u-^ zdHMbY!=s7@yktF}$)Vy`g2gl9VOj$V_lwf~LLBD9(Ck&%t@QpB3-?XyV1kzGE`&gv z?ALT_?meThdO<7SXoolThwrm9`>*<_c6qK(hrH?u4O{Swh zW0D&gP6jDZaRewnS&MfJ4pJ8mLOm(Q)8%7K=_fY>9aOXjQ}z!_cJCk8!SimmSzNCU z+~`g=?`aZ9P7+6-XFsnVXAdR0-m?7plJx&fk3IlE zFWU{@=Xwz>P?YB;cI2bUXS95{-0mOaknPw`xwIo+G>2PfsHYyTD9nyY#*)g~>1igB zV|0L+vT!JEjC+c#Vi>?j>}X@RB1_w$h-bJhZL}@;xuCbRqL7PxI9ZX3@DJ%aRJs+U zgS{x{SbW>S=Hm40$H!$>yNoOus|7N<#>`v}rSK)dWs*54{kFrW?b8~yo8$f)z^T}G z1pJ95w+l1zwH00X@%3QZgW58^Mv4vlD%ZoNP?liSqAT~L@+=+9Qk|8|6`#q?TxmNA zTfGk7b;Rs1yIWUxx^>*Eb3ZHpN(Ka_yLO2d9XIF_-%tN)4$jGG*cEf{a2Z{zoGh9A zj}~MqCe)Yk562}UnKDGtTTi6Pm_+Y(Mn>@nMGmL|Fbnb4=3kk6b4Uo-^eeog8)?il z5R@S~eJ?F=Ko~T9?a~~@fB&kCNSe#hSYUX8btTcJG|w$+#UJ68WER8am<8>-b~F>T z)?0nC7okZuc;D)2btW!u0r5t$lT@8qSf^36a#~Le*`|L_sAy5TbL!laP^Dz9y1Di(e?!#W8{j&s4=s;ltFy%-QGJB|M<)J6jv=LmZGv=8j%B znq}w#cMn>{HpTz1CvFe^F6;0kn>WG;wW_MJYM#N(J(>_HF6gCH)$n!Png{JF2hKaZ1%1HP) z+wB-|?$l%uXZ3ZsY^xi7IcEUj&}Cy>Qz-h>C-x&?*({HT`E0kOSb?r4^Mm2GR{6d@ zrrIqP{g`UHUuz*13OLaXVEga;`*H(~&{cT&c7UcMcmR}st``U90npwb&7oYIeoi3e zKTyQ3(4*Bgg_vrQw5qv9jOO*XQoSlA6W?lea2zOo2SF+*|GXBrboHwtZoTDxWlUXZ zWjP*cD3wEe&okhDl*UpBccve!WW!jQUL>QZ1-Zsp#jnk?wC@Hg%bTjDxkAS)+h z%;d;Zu`FP0V{{Tb3}EAv@6}xk^`TgS*8D1WkmmzI7U#_)e0bzVY45#p zKn}H8HrZTuH!*(D++wy}t8qXqyGfals@3geL(_>M(F*@o(B3lGbi8Hs!2W>epQ8GY z^n@g@@Mm*CzryVBD5jptazpNScGg{Yf}9*A>wVIf?iZ2d7dwq^7aR?AHo>Q%HM0{6K@9~Y}#foFw7TK_~$snG~fdPp(Oq-1#+he(O- zyagJv^XPO4CE}nHseVxA1;u|xv7A-Qeop_)+|Hyx^>Czci57;>%WntDwlfof!E^!= zL}n_`j4G&Mn^F+15pZrzC;Fe#wX?>nZ>n$-7WHL`HR`hMb3x^R}1;Z)bbNRf9niH&u3t?sJg9C61qsr=Tr&SH~gS?e2dZj=b zNfs3&vfoJ|)00OXxf)|3hW?!fd1xPDN{28dd~OI>*;EL|(~AkDBVMYK=rNI$q&ao? zpN14%Tgh;(QR2veyTlg1UK4qflssV`k3nQp-A-QP1ur$!fGutz>Ra}b_>kYC`IkV5 zBs4PQ7khbGONmVBwM?e(F;gfJ&I71QGxOw{O+?-YT9(7e7ncrC_xG#k(ro|0s};M9 zV5lm{(^zbmoxTe8IZB>X#1qU*8?}$b>neU>ohJaxU`3s(Myh=nB#P)V!bc++a4pGi zZ+LN)ew3+2CSF<19xWzMcco&k|39=ubupq!}W}fQBr6S5oDY(r=RHJ2=?a zLLr;kP!z$#Xe7)3jVX#ljLkti@Mc!e%W?z*@_g`j-=G$kkq|Z*ih$k}mBRbC*3NL51hi zJ-6<05;+K!Fz-TlSV!mFXVTF9b(LDBh=J$b_M*8=uShUk_w^sGKuP;cSRdYlb zMXXdP=Jl#>l1xV+7lhhn6SAD6@aodPiKkxll=F%@wA6i37re` z-BXEvU;c^cv4Miv0g6W`Gens&Fu;=p!B9`=taP|WF;S>+pt@t`k!!1OV#H(Tf}Ami zw%B*3_n~ri5nOfq93+kv&i{U+^6k9(Ctnee63~Di^kT7#f`r9kg_|4q^hisWcBFE_ zSN>&-BEt?#K^VQ;3B`5zJyqem!DgjtT%)JEZ}5vAOjw$zoWsumP(ZK0)PBe597KJ_ zzp&xoMN8#us|G~$0{{CT3V+UiroDeYbL4n<9>^r&CDsR%pw8!7{{@vi%98uj8;(*1 zaqjGJms}RJxoux-m{u)CC%9yd&yiPFM!`*9&g_=X2c68ZQTwNv{oG`=^egvN)A3}@ zWG|b;fJCGZ3tt=G*ZRR$ux$N96bw1gTuTpBsss&UThwG9@p#YOyIPy5wj zvEt;0bu92 zOrNk05m+}+o5TkLef_X}T5LDpD1WdI^F~#b@-yZbgGLcv45l=fj6PBxPpKGX!|1b> znGtC|3kvh?W|NaccFjReWMrz{0y^iaYY>dutZ{m7e#Yf~zonlMDCaRakp=Ksib8W4 zvt6R>DQV^l#+Z%*1ZU{NcHHV3AUq(SI?~ijsSZW%5`*sUmZ8BNwl)iz%r92QQM=0e z4UreYY$qozk~eU6iM~NZ+M&h3uc}6wdlfw(g(yp4{Uv9^WzuB|W@J;XvP3hoyh9>z zts|tG_7IU}+O;HlWu4BjCbIaqt3jd)i%1>P8u)otrD8m#fkUR@nndgA2<~}9pHS`| zuk1zlk7J1QO6rZUygWs)DxsPe zx#-l&Q0D%?+LGKp2vI~%J9%ujEJB+0@~HKI%Q5M8JKm%@fz3&bj_^4dw`#S_cdCy? zi|79szGc##^a4B*fJ-gv7-@iP<~ko2@UlOuC|b;CbmxjD2O=S5kKn7yFV)sLu>>Nf z2^riDt7V26(iyLo^USbiJ>rHklvj{N*3-=HYS6MzFgrwBW71 zyj8TKwR|%H(4GCgNHK6U(iNYEKMRrHg+6 zi^2~~R53;0%MTqRev!eWeG?SvC3P;&6l`t6nd!9nk5=6Wmbf2o_Ybqp>c1IdA=>+c zJc3i2Ot%YhT+=pd+nxGZm5b`T@09FW{Ac-ptM8PjzwqN??yII~dRcr&0^AWh#_V02 z5+MoZtoyK>?dP8`RU)YJN;F9^Xw5HyTT-HU7(BTW_jyf(=F=h*e{xvJK&|tO6-yaM z*+rzAk3I9#9Ma{_kRr#B^*P%A5XQGvCL323}onUyK9F^smGA4F!<> zVo`rTJ0a+qNs7#;W_x##y$?8pnf9YbEW|`nh(k1aeWScuMWd$^c3-q&&uk*anoj6l4t+btA@tMAQ_m z+a05(IQ#N{Fyr0I)5pkuS?vVhha`DrM4z~N?zkS~XA0lb>89V-_z}cZ*iHfUSb2?6 zwc+@%zSusC6@?qjfasremMhoN?3@$tVEYp+Ezn13fXINNBMJ;mOpqU51n5Se3H3Ce z6f64@N9xCRN=VO`28G5ML^IPMooNKpi9Uo5PmodDPl0`)7Fcan4f5zvCPFt>y>gy$ z^`3O7IHC7xxej!W8Nuiz^={ng`<7m3*SbESz!XCrVve<0fY+2`EdxS0H323a@+*jb zs;2NyUwy>LE+}Ie)tHF?O%djRj!&V`LD}>ZuRG?^cS;{e%1{)It7#tze^*-UX03PV zBqz^WhL7h;-?^NT0KTQGaBQg{yabu&UX)%vPb#hoRfR$rXvk7RM_)-5Tqz+eBH$L& zdasM)*l{Q_lFEIy@Qvv*N5xVWz;d!L#7vp@su812O*QZ%gEWQ3gmKbHJ9K290*ja| ze0BKx{QT@VL>P03m|+-O8J~28NFjB<2w3-4)!YWHh9C7In8umSa`ugt_h;*Mv}PU( z6!Gqs8%$AI2NPB2%tCy+)@*HMFNYxzbg|M%Sw!uWIyL{lT~w1Vh)DyrTPJ zF&-F$lPDBOqJzb%nXljx1@Kqx@WX}4-e8tJ8nr$e)c$B>C5~I8t0@@r>a3D{#nz8%z72{H!Vh}OUp+krWM#dwa^4X<8k&JYV8z`WF8lBwfLI!i40TW4C&4XdggF6SX9T+sA- zoH4g*w>EM(T%S2a)ftGVpievC?4DJq#|}$^pGdcs6gd@G8~rKMO9msl3#++{>6oVF zQLEQi(L)Vzy~WDxziYSvCG3~}>__1gM{C?gyW3eE1ae3@fV0r0kL2yV-_=#1SG2C& zu~|}xRzgMif+*@;N_1RU6xsdlei1&-xFqjQd$5u(;K=`?3BP~Y0e+)stL$`p17A&( zlk2#-TAa~=v&AQf4xHh@84idNQ=bxV3NMY?ceH7H#uq^_8D6XSre%|gEf+-bGK0Xx zm3D1FrFVT1d?iZW}U{sD~l^givcr0Eqw2X!wXuFd^Bvj@8Lo2)vK}YF~seO3)fps&^w84h^G^B=|&s zuii{z>RyiO5-7Trv!aV|@w-Uh%jcz?*5gK+4LzH`$BU+D(2ZWo4Ezm+qzwCSDIi@> zuL8u-ZcqEu)58*92@s^4i#8}dxWq2eV_`h~9%}MVtuK3o=6fNib;(||ZFFQPDc$>` zBf}5#FSS8TaW%r)Kqu6BoYf*3r&}bn!bn4XBq&>C`x?n-d%opb)JZUYoHXJ>E~zR{ zuI(Y?@0Ig7Gk6jqM+WmoG?>rJ8ANXGR}|YcE0z&MyU+CQvu4G~5-E-C!wY34RknDx zn0YXQ*}l;8j{!E>A#Bv$;{M&{9ajV^1|&>WNP6oQx{1BYQP?X;nFO-NYrZB>6S*9p zrowTM7hmD6+{9w~}E4!~-@Q45!g)zi7m{2>HV zYIj`Ct%U(+=#(`fJN(EY#(uqe4C$spiyzl`XZr|+vr5yKVd zF6!QSWZ86F?sZIkB7$b45?#a3DBdTJgzM#|!1elN5rN}Ui?w~3!5U5I*BF9EsF^wv z$5bJc9rMN_{3(`9rfRaV9DA4TzDdM|!u!jVQWaGGUuh=BM>~bMSP>{I0!yG&CH%U? zo#Xh0dy?Eodek&$-Ox-^W5t-&jxHpc1_raw>*cqzpzZh1wCQ#LV9;*AIxG*W(r6+m zdT=aFStmr!cUE*9b%euVO)1o7`9Sj@TAlbb+ovP2W=o37 z7Kaneah~0SesDFIbdefk_8v?p=2@ac`O|6YW<8s_S?|T+$eguNzVLZ*AJSASKx9-- z-ay5?jl+;TG_So6k}zZhWQHpR6kJ*NCXnFaeO%&%LA<(JzS)OzaglhX`-c|HFtlI> zIub9^YVcJYoU54*aZA{G3f-&SfM``V5v6qqiuV0JgVef2y20q(xE@LkXwb5NB0o{L zJITh(tlO26%KK8V5$o}Az~3A|`__;{jq5I?jy|e0-;dt+&B6ppF#xnM;dAQqU+yktvYDLAIvH*|IeGTbHe57QSeu1yE)sZ(>8@j_5Khhp^RJR&TIY@{M zUfug+Z3!Ec7O^I2aKc)GGkRfK6xisfz<+2?TpUdDcZZLonzd<7rN zH3g6HJm^kowzl^3&bKJ-L<5Ue^BBU$SeNHxICNSY>n*YuX_YLw&dh7-=!#RAto~$bkU5hvw2gh2u_}06aq&DUl|?DJ zM&DF*q?nUVpfT&v^H0UkIWl{cd<2&qrYJ!jsK5S|)0Bvm%0r@ zB0(+O2G8^k?fsf&iLxeO$r+F;3+q4T;6QIxu?37PC!0RHI84iZ38OT=H)&-A^cO&M zVBig64POw_@Q8iHKbdu?U(trY(gZ;*;T{vFj+zGp!>0Fj4&plkvX{YSC+bDv1xM{# zI6`)eU#*&RL9}6?f;Q#ufy^#6dc42oQW986JMYr3SY({2Ybr-$RG3>TK9 z-(A}1j-Hb(`Xm;2^2(>ZSxTACcTCYA0h-Hkk5@~VpxFM-Yu3<)3*Iw7X)t&^<2dfdxKk9$!ZPapaD zTR6W%#G;jkpyhIhJn}`^r%Fl3yM^!RiG`v;DT(<<?%uyH;T6Q3Wwa_C zYwsC*G&%-8n^vY{IX+>7>E5Df~vphC%H%<=qOLa>)^I3;2*DAbZ|Db zg1QhJ*^F59^e3E%@Kgfs^QMR`h5w1ml$pv1;$plL`hfkgtRU3rHkrq)bgmnPxW8JL zm-yl6(jIl7;6Z1U#_{vU{RFU&8}Iqe0bNbN__O5}Ug*kHL(nM4J2``Q0JnsqtJa$xgWkdxKV|BvOT?0y_%|gGEO( zX}sTf`Huud!{erxnfNIOEQFICGvLfV0cyzZ|4{tbLr5QuSgal(_sJvvEF;RX+-iDZ z!?#NFMcKPIhv+Yh;n_ePtTh&-EhMOHyc1+LL5VV{jo$%Jwv@JjLh*4|)ynMB%W)0( z4RnL<4{%br-<6&p*wm7@|#`L+1x*eaM@*0N(b(K>vB#i)=&s=pYeQ^l}U_Lub zAIck2u&0%F6Tn*p-NuQ-hK^caG^(vpq}*4ISPKSO`O($!Ckqz<2%wvZR&)*vSkd~t z4M(sJG$JJx|>H*{OIV2jAhbAA0&= zSTu477p)0>+ECHQzN0nF|Iznr+%!<8?a?1Uu)G|mtq(C-(c8Q(L-}z(C6t;;AbJhaTlo9T56~4LJtY?)5UVR3+LP2 zH@?Q`Z>G;Ge^oOuQx?@eHQ6PMIld(%*H7YzKt3M#nJ@tjP8Jml+86l@%2LK`o1`mY z!o4x}GF|)tw(ckhmqOMt0E%4B2lGiV{(a_43Fd;!tY9dJG7+lNb6T?&t7AYb)A5_i z&*o>&HWoiXkQU4NS}ar^4-Z8{qv!ORR~iBR#^nRi+}7|Vs2$*mQvVF^kNa=<>KwOH z=u=cEgFp`&8m9kNFeL$OeW&!s|KXePm(6O;#aj(9zUjz!qSa=6JQ)1L? zzxOaozd`Zr=aAbmCrA6yXx|yFA*x}xdYnD;5cvj0^(SS*^XRpT?h}4e_uD;=uIPE? zpRh~)MZeNd>W3fbkzhchPl5{^-^;vz@jq$M|E8zQ7m}^*PBwks{7FCMC-px@I&*&X zDxL*5;UV+wu7lg~@@C?x{Qp|tG9K~M@)^%?q=;2sHqNkN`aluMm8COB+wD>1?ZbS` zJvwYdiqT%G=)ewJ6GV`bq)z)c2pK?GYe5zIIv97yxLnUsTb9d*xfmMO6m~nx&lx#Q zUJmr^#-l}d3@wV9RF5f$9#1d&fE=5pzx-nyzv%^MwCZ;{S*~7NilF!7)dNZjX_48XBJJ)qZV{wld=e_xQIomw#(AdMxv!r`E>}*#@?HY%}dl)mTO0yft%1Mt)ud&_bj@F|>V%|8T`m+ay<4qCm-E`!ZHrV0fj+Vq++*6i?zyF8>tY=U|0yygKM2g(zP=e4^zZ84{C7aq#D#RRfbc^zMu5S0#JRHvK>iUL?YY z@jk2dXeJ*So*$w%`N$px%eU`J&`{g|?MQl#!(@W!i&``N?e ztbj4>RT%dcP2v(5EOwsus*+eUm>980gXD`;4t%<#RsMmt@hBg=Kdyjk9ZxPk@|l&U z|0$2;6ZQ(3gI&#oq?WSdsm{4@y=F5Vgmij^0*q`Nb~*Y~crYE0u+H4w8{@aT`?ERJ zzp_Ne8PxK01OyCa1UB3FgJ3N&`QMUauSi*~ZQ(LbieWh{<(=1cmuY}8EX~58e_zZQ zv)JIt4t6&4+iJ&AlHQpLq8?mtzA^%#uIcodB{aS)_b9JB&cz4oTbv|n;7b^g=_$+N z@b8RK4eDSESsP@I3cen6qELUHZa{cNZFYTZz+SgIj+*zERnTi;7D z)NE;m+RIkwJ)P(Nq#pzwDD0tsrG9%_H7ntF9s7y7(x&|KxvgIHdcjqzr%~th zpw<6Kw`bjXzUfZU<>I-@wH3;Wb<*4((939BNm`&BPF7nq36z&nU(q2WS6En(R7xy> z@z9BdI10<_|$mXJ>_kLji^J)z*fPNJ#n`uSvZZ!tn%SQmkNqnEYKc)&?*GkxQS$Mpe9 zO2PmU_l3h@t(Udv=BHh6n6<^kM^Ah_(_D@}_S<@%VRQpTpU}^h#++6)4(9d9_eJyT+nd(dbXt$)Kyf$J@R2N>WF%iZn|Mz0w73#4ZQl@ zY8&b(p!7^(8$NkywJAME%3bc*f~_9Y+eYk9JkzNxqcvoY(KBIIw{g7eVlIf!h*z8$ zPGVbC&PltFO^$2}(HIpxN2uI;dir})G`JC?1Nyp@^(J;Qqu^JS+RYdltyeiatmY>S zbpf-mOGIjMuqIu0MG$QTT^#uwV9`){`I~2Ih^qWpE&C0>QaxY(P-$G|EVcHXXjn}9 zTD%!aBMMxq0N*>#@1!wryrDHL6~jFBA8LnIP<*_Qc=d4my!hT?u^cy~dLx!RLHA5v zsL4EuviV@#ZVdyO7?Ect#fa#eWW8g&_lrO|ff=Z1hQ4m6Fex$!4t5Z$GK?AFatVV%91 zZDtQkSz#X^9%*si3828HM*y=x|BRB}&8`4j+0|wV$?u|CY}G$$)=fTxCvFrC*7tiZ zN0}!<&zoa@edNbbUKs2HqYRnwh8M%U_4;&KmZOJB(CcM@zuNodf_dX(RjZYC!oRCD zs@fG>9_CXMu|V1pRsQBlIC|=vCtwL380qVXBU8p$&)xQ=pfAM4_H<2C~n+=bXUCj(-hh#UC6@-U3lWC_* z*EHHt0Sr1XLUT`iVdMt3F1xop523DDv`NoJ-@guSnb?)}Gv3ng=%J%E>WtYLjoyXk z^AJLQ!DOrw+i3_0%&c*70njxHF0~L$ohhJ9FMcjyWuSk~ex{B4MZD30A4y_fZcd_% zpxaNjqu|1ph#wuPb8 zVbL`cO}mtRh?Y5XYdU>aZ5y}yi!8s9MPBA_&jrY`@pA}E>amOTLa8_8u!euOdR0sD zZ2|sXqah6HzOh+lNPo2vk>9M!{|Rh$Oy9rgXkltTu+B8dMIG5 zk!EIqd>!;T*q~o^z=mh7j^ZlxXu^ke!CI?#<2(JJ%xf@zyTf~n@xVjaAYR$8N(=(j z7lj~(n~ei!w9h)UM9tKfp+YH7R|g`*;(?#WtIflDIi$4$ozl*=)=NjV;xPY2Ym#bK z8nL^N<~^UQB%bTv9eJu}3G@7eDVC9S4_04IQqS&{y`cY;*&~x1fTjM1bnyh6xvht; zj%Tr*c@06nnPhSxVXg$l@Nti>(o0zCfwO>e;Rp_mqp0CQnPhTKc|1JOY|>dhpyKa) z^{A_!A)e(l*fWkALiZ~`#~TfAWTaO^0AG#VEz4zEb#&BT%-nu60K5{-jv&^;XM|wb zmg`ZVxH9=a3G;roK89RVY}8ySNsqI^V1&91S_d&Qj4HMH(2&5m#7A_Q^B7-ISy4M+1KrxhUp$+@1=Z`D!y zZw_=ET4wcULi0rBK0t9E@=&Ku8!GCYVp3fzPY_{*kbw$1{3;N;wmN^KuihRFjQ?|7 z6pNkD>eaF>Wtr3X7K68BVZv2Zz$^pW({kYyw2vH(=gpBbd*qCdM9(lX zbQH6Q$##~!iZAB8X>(m(eIzR7B|AV_X6&;@p1E_(K>QGWN z7XQqPFq@!;?3!P0=1#adrb_l4sQxRp`nWvd zZ!Xd!M4{kOx03Wc{)T>1;z=o%1iisM#hpjW8vepx+|@1O@1Pq&udMi4&&gW(O#lIT zqOdmxn1BL72%f^KT4p2PZ~E7RAxBQC5$DdzI&65e=S63g4d~)vD_qwU2x@_Pp12$Z z!QTTZR2MaxD^;vkzy8&d5#~_iZFMuebRT@a`6r(v9DMZoO+@Op=rQX$c0HR=cxkkX!Ve;$etgRyUXC6q&TeR zv;citz(y$N5c>tUpgg~#=kqvF0Y!fJBdC$8RDbl!XN+Dz$seS&k&W2+CgVxkNz`~d zF^KcElUf;3Omv5W&;?GIUd6=n~5N`_mg*790 z)<5{gKUKc37Jn$L|5R=K;1$33e`u6NN|1Ba@y9V}2Z?QGfuf7F1%|UnQ;v`>`oUFe z(uM5>m)gy4tZ=mBuYWB^+6-E&?u~(6%KRhQ)rpKq{DxOO4;xL#h-5^Ip?A`Z#OsyL z#TjR|;4nye=Z#cp#L}q!DmMb@d-*yr+uxy#?L$OqwOOw=OGIZerA*@jGWx)w(ZrQ* zWyXU*yf_S;icm4w@KS3+9j0~3ssKa&lSEp)a+zmgEF!o<#OgPN6AmK-WNznWH|2|9 z(VZY~>oM$1hoa1Q(4!yzmuU;Bb`_HgeKC|7S%#jIyQKGq-fhQ4t{W^o3dgWqevfdOStYOs;9?J9BRwgD2Dd}--~EP( zxPrh$;t=lQAech1A?B~ON z{%WgTlv-71xGBMA&*iYX(_mFMUc>6T3& zlljZxlQS|ih@vxg)1m+OmAHKHdr%nI>5jB-Y(`7MJ#OhuF>h*K*}1mvl@rX^%qnA& z537MMH}4o3;U!v!CtF!3=#T~{m7)bVtD5CMdZ#Mv=F*y={Hl}X%`Y&PCct$0N(Q%JZnRM)S;$I%}PoQF%%!!e6*| zbBW7Yi1Ss{G9&p&?sR@J%}%2m8Qbe%$Ug+FceqDc-G0zldTHWIo>J)kRbb``AeI8o zBaN$IJBg?DI%z;{$eFlTH)KnJ5Xab-Nkx$8!uVtKKr)Ee|C$=eA=Bn3+uG@bt&imn z_?6~offC5Wyc5D^;@C~xDp2-}_Vk!ds#$bIn$yjc6uxeRS0n2Ssc!tRXy%kI;5v+O^y^ho~H zk-U?s1-H=9S6;1}Y5`%U4@iPRsbAt=*FcdL zaLnZzyD!Fdcq<|D-3faYSVNJx&q(DA#Q-xxngA#3Hkrl#Q`H*N-W~UEhF^SDX`CA* z(t(1b<9xPXP`3WC+NgT90no(}(75FSAS&D;zDn;4=kx##j!WRpSxf_*0PzSxE0&2< zLI_Q9K?OFzoD+vP`ob`WX9ifJlt9YO%$59P^FO(U7n4ty()cOupybGmME8=Tb1hsZ z%2HOOY&5vQd;o`1Lq||AAI^QiLJzI8Liq_|(mJAIV_MyCivYg zF{dNwJxSg-70EwUDWCfhd#BHj(Dp8Pb#Qom=J0f{=))ep??lvS%`=cc^u zSe(#qyrWzItr*p;)Xe=Nsvwlvt&W9A0|!P}%SWr1b0{boS5o_>et>(pXr#1)L7VM- zG$0TsD%5>VdaX8K#Nu#8lk@CuwO$=j=B7Xqx>Jmr9f+l981l!8K03A_XvcTQjj(rDW)0)fJKCUspz@h= z55aR2AtkoRAmGFRS?yuIOTo%oWlY zKxMwARpPka3reNt`3_1Y?~Xi+MxNP`XEIVU@7@&$W4LvI{>O!X$^!g%E$7)Jhm)(i zPG2I;jT(m)%qm1tgRb(-(8w8J&M{jHALu?nqm)I?9nY6aoqJaEHS%>9=1_TxQ`Lv% zooe$=)rv`S`J79_TFxkUFFejLV0um>eczSIa=)#0cnbn@iQ?S${WmWD^Ze5(rj+gA4Y%62%_n^;h zjDK@%t7!YzUsY_3Zg<$wx>~lOH9uspyU3u3GI-qg%l&E&KkOCFb_g0Cmiz8HsD)5K z3QYMHQ}p8s-`rMi#R^e3Qg{31flduyc3R+ye&O`aJg=gvY4Oh(JpyFcGi0I>Jfxe4#GtQrvv=`2#| zyfPQre0BRB`ZrS2Rn?QGVHr{UX}hqZcIj35!RRWVTmIu|wiZ#%97Tt!0OJUHk!jcT z-QLs(vcnTCpm>0U&=)NSV-@PxxS)=T8*6o7gX`&ESn=#;e5I;>uGI}S42*Jc(sY^=nXRoh6^7^T9Yy($>3;lMOX*36<{Kr`FT>H$M>EoFl{ z5(d?W(`MDW$$G(!aRI>Hq?C$Kt(X}(muP=d$%O?o9YHUv_cANSl`T8tajL$o^KVV{ z)x~8Herd3Eykf?$ENonobQ(-XC4|f3qAp#pNUHaDi?NMwT7fa9J9XYJ4dpy3p$+B6 z50lk#y*wE{_;D1U!NF$KiP9)o)Qm>bD3n=##8nP{oP+7@`* zv-&a`#TjaoD_ts{v~I)UM~XoE6nG72&K!TEAoY3pjl%j(Qb+Rbx(2VH8IAn&9drR% zoc*qZKPOyUF1nzsp!$VDXP2fN%l$fn4@?hMZ4MG_7#*v7~o=rwW6+O)I zuY1#)o9Sj30nX^lu=Z~d^tl2C_|nq}_|j88*KhS*Yqrg7bFT{dyzx2)O_MW*_LR== zjp;K>Y0d2b#c(DLnI$qsi$xci41+{8ArmWy0U{JhpEpQl7lPby<&^z^i3WI*44d^NrttLS00+WFdGM&wQq>)z0ZL-Q(V zj}S8gKwoX7yC&D+Ermo~ZR_qeEvO_(OB;c0x&%-*si^OjdpdLZt&TM{)>Wtc#APbk z0&2fK7=Gk0G|f2OQ**w(MzvZ$uU5Cr|C2UUZ9 z$&*BOizQt%bd&S1Ivq`KT1E~noY1ZJk;^tWgZR#bYn>2!UvjNub!45|g(~7&zTI#v zLHUZ9CpWXh5w+j_LZFts_bl3*PpYc>uK%eOR&SXf53YmrN9*}u2~G8$xx&P2ba=s1 zM`giVD&MQ+zRqc?U&JSf%!ns7LGUy06Ye`FOH4`s9e0(p{J`H)zD#ijPgX7Y^L~~; zYvB`qnIDwjJhx{Xr5c3aV4Tp|u5b))PItNG1lj1GhaWBk^>@hyyJ{TrsCn7r?iHPE zaZb^-J{WCHT33vZVe%d@<#FE(HmjVD0)uC%#I*2JAJK~7>-3-^`GHdb2p}y|fmFfM zhHf8pCV4{10m}uCaRssz9^`oGwCm@~P`h`_Z#PQ{X=rd9W(RK{uNP~0(BI(ssOl6D z8c_?~$V6w8Rf;^m11nAX2NMF_fu*_^xkzHVn$jt!58fTTNB^Vh^tC#0TcxwCo4Tl= zbx`aDNk-a^WA-LSiy77|n0UCDwVzkT@cD63Q+W_quWwo!$0JU?tgjncYK1aEQ|5a) z1XgP@o?fWvAz#w$#KXKso-bY~t|W%Wsw?YH?#;E>vJ3tG0iB!s4FnaKRwl{{77T3$ zIk#NKcsJaCJ|3cQpEmM;aC}`$#Me4}W^V#G^s>I){wq8}tOP!Vp8L}5u z4^yUgyf3M&ks{M;UNkj2O2rwLeBI)7JX>;$MsWU(0zBI8P7ZGAp<`eKv!vARGFdpS zjn0znJTgm#C8>_iD=Nb)?$)#UXBK+9q7b*Bh2EgjSJ7V(E;QHiuZG`T3&xn)trDF0 z-+`{!>Y<=3b;_3z0igL}=>-Ea|xAujK?I~4i zy(CuZACrq9j+4Tkyful=G;5^*gih{d`&uJW@W_e>j)Ezd#+i``i&@HT=i9@*O4w@; zCN0;S5*H2X&8C~gFb(c>bGL~Flen!Upz*`q_UTyS!r{S^njQ?MoXuUeS5JC8SI!dP zpEshhGXOs+i5=YvqnQ~F(T+_UOJeAH-i8foHg~HdH+Kx(;hE)t%@z}O;5HE@M*2xI z^v^2$c_Kib`9%G^)c&>N=8+DO40;1Da>_3^az=mT+3JtTRyOesJGe zu2)}{`)?{a2z?{g2u7$vn=s zYRSy}vJF~_mI|-Y8VIDdg*HS~44e=`6OsN7JBGmz^Y+&B)QLfS&>-$#4=ft2a2$pY zUpe?c+VJ1Yp@7JJ)bIm^58;?0&xOxSSA+GPtab+uM)!B2-L(j}A`^h9qaaTxmI^$u zRItM|GY$PXF-6S45JX4a#CbRx+ziAZ{DVX0OzgI|BZmm5J)UAxl`hdh6n$?7{lSFp zLWsv9x{+m%%`Xk~9QbuU<*Rz4fuOv37pi2E-*hf6ckf7FW z?gqU!no6~@$Y45ZQyyN;l(mVhTqxJ3fV@(P(sdSIaYT*j8`Jj|z@rx8DN+;`-ZEH~ z-ukLb$r5M%GBFgA2a5?604Eo#S3QeIg8RU<-=zo{NYT#q4v1XG_odLeR*p2?{mwKc zzyvK8X~pF-Yiy_cO5zNYG=|a6Fm6tswj*)!ayIZe9G~teF&2hjPDJ;*U~qE@Zt=9! z>VbEqJ@}i+>Kiu_r$eWDSJ*E_mI$q#m>akv9OIFT{h!3d6d>* zk@lce(1(0H6z26`2r_j?ofiGvvWj-PBY?APFMyU56xv=0oSk9umSnm=9Zf73X#}?I zS4Rl!3kQMiDjMEQdy_6ufN`Ni4got_+7P(X-sQMnjbNtHW|GYFikHf1GLJsd%*kl` zT{iyU8TQTYIQy^d zzVx`-(7(IcasFw&{IXn&BK%c<+NNmzFG@xg8Cv2TptwRGQQv(R9k}WC2P6GFysmy; z;wV3v597)D;1Cm7FL)pH@O&EKd?fx)%h&97Jkhpxkg4H&zKuF0CC-iW2uN(Cy51mQ zo08?SWUvZWcLO}KwFgx_cPNZQ=HyS!EEOj)YDaXbXvj=&yu&N?cuDDGT`1kfjvOx& zF3NP9W=0M3xoT9K8VU*UBxPgc36ek*hDIW-OV2KI^<(vnWzyKATU}e=zLVbR83%

              UfgJy?SxSK|5cVcV>blpv>|1q2dH#85o=yi=|bIxvf`l=qpjhvF6-&b5*5KQ6t9a#3g(mt&l66 z^jNhu=41?f485dNQRVVrvZU(OdJ&c3x0fr0>hP+>41lSWsN;Ky)uk6U$_6l&Fhxr` z&e&U!3E}`(8ls@eyIVZ7Z|G|r8PtE8Vit|bBA1Q3SL5L7JuUO`EJloPbOwWsD1VtP z77~I-6$+6&r+;6t`jjQBUH04YHWU!(XD|1mfUrr5E_#S%ZiRM-C`M{*vhd|^S!D1D z269jNSn=Me*yrQkZirReT(9B8p7qBB-YAA|q6}hu-Ec|-f#A6C(0*P{W$3K<6LVdV z*RvpN9uMIPN;6O1;GT|Nv$FTpIR$5k=V&$_(R|;hsT&YNziL(8Q1ooK`t6{HB+e?G z#db5-IrxAdaBvA2h1B9CrQ!(Fd=J4}&_X66&0s|@ztTRaIm>V*<6|yAf^HKm5?{`K zF1$s|4fJS_4M~J?0L6V1i`y!U@YaH{y=;c#caa34u4>uPrqRmj$g2fu?duWcNz*Z9 zNY3Q-hIGfx>*9`@EMF5}68&;En&r1D8pU+p60?Jw*Kh7>E27in>MpT zkmW@i`EJc1HvxwX{UGw0n@%npFZG-ggPg(xu!>v<(_-t;pMpM9O-mb6_6N*9%;_WX z8;U?K=z=fj0*bV0c~j?2SKK)vqUqHXGWTb24%uTbz@hp(01K1IleN2{})& z+$mI=e@;JL#@?(Nv4ga8>&0Hf0Qj+t&F}9te4o1qmlutEyp+@LVaAhs4t)74zN@ z&UF7!lUSHC=iSp`wV`>ZO_|@rcK=N^>@^jo9PCk{{6^&^eF?hBMik8?EBzgM`TZeT z>@Ul^OKEiOZ#Q=+hgMa+DOt^(IIHoZ<&{1!zw!F!mryM$QJ`MZeHz}YzArk@32kS_ zu@B(aD3&sg$ZOJEi&xdPDBh3hS62Sa*P{=BFn}xiUQr{uvxfSyp?F!neK8JNqxQ9Q zkNQOmbAQEPMFzd(v67u}yjH?EooC1*)M1WbhfPaRWVLjzW~`k;my^<3xF*rRY5i>g zJk({NF>GiEQwBLCP&%$@x8sZey;C_XjwkV`XHXc!G;g0_o05(2__$lF z_A37;dJxxF6Mz6Fe4tL0SFJ?MQv3-g>@?v%#qlFzOFt}f6ot&zNVaKdvyUD3FS;g0 zA7p=+C0ktKj$)J5;SUn`HrP%^jGj$qvY1FDZkF~ zW)D?fZtaY(2OqdAt{?)E6LC*0b@Y2I=R^ER^LNW{Dt2IJb_?FVr{kj0k}iYQaU1n2 zY4xu4a@}#OH@t2Y=G-$|9cJs@rx|U@WxSk;7;v`}v_u48D71c#gT#A^Lvn@rd)T7i zk8(Kr9kCz{`j>QpQy}`M&EfEMb)0|talYN$r)$h7%Y~VSq zO6pePK|PAQSahyC`6lJC{}xTMJFOeGEuMP54y5x$>KIuZ~xJW9%_7$3$U0tpDb#hNvo{e@y8!6z`|_EtPVNU2oK2?@s%dWV)Hw&Z<&Yn zZw31EohELLg2{B$mouJ%D!&QdpY0D>a=g|noUFU|G@S`uajh6R2F?UWR}n$pZ&Y)k zxb#u>-VP?l(_U6@scLnUF0fBV(>@aIdKF`CWF?7XC@9@dU@Dr;bhGbd4YgcucC7y_ z-FjCHUc!xKatBte)g@7mv}yhp-2r?>BYj6dWZCeqAWIvJ3Xg_^Ww&!JO*mvyvBELj2j<_*xf^(W7(%3^* zbpC$;Ka5^CjX?ZEVV2-MqooiG-(`zu3@J0os#MWR{3#(Li>8{}A4l!#4C9=RImVsM z=S~R8A}^22>Ja08c=$zp3=*Dvke(B5zrmhT5sN{J^vIvc3cG3rHhvJ4;Et9r&ah@;+@W8&zjxCluU z48Ph=pL4zOq*KxMH=`-K9#oTF38~2U9nON&K(T|}3fbq%nCVjdMS?%JL zla}$6G(>}OE*;IZ6fPjkqDrdB6hn~~uudYg^>nj3_Sv0eFwGm!huxZf{ZC6;ky`6D zWpDCW(VV1f4QO)!O1xrODsh3w?L6PF&wiGjMOQCu3`|0&+txno>hz(^IUrJ#_~Ryn z426n+ZB~dA{=`vx)b_c8lRO4dX>!*zIvEmn7hJelkb`EJ6xkCIzd5e(xjh%-mqN+~CruJSt==%lctU*XpOo15Kc2 z3QixSNdmP5*n%=7VG>@4_nQMvkIXFK_#|j+Ar<8_D6usez}f@NrztDYI*h3gBenqi zI04+I)}ZKmFa}bMlM`4~j=DG9ev4)n`p)oR<-`arEQ%pm6bg@NDJ>kol#X=S{!`H- zx}%O?(6#5z`N3}f6dim@9Nl31Pv|n1e^UPw+59*xh5kpALjZ^*+ClYd&XgkP`zXJh z%brZNWrEDN>BFae6iSLGV8afkyKi^5TrDEUSH1Ya_o8p`^PL_LHVSTMPrT#P@$ zGtTA7^r3Uh4c~D5%ZPm;Q9A4d?LOtpejO4fy}nmg{*RTiUu)1r?>C#(a@H!_KFj!bd+SRId`GN227w>a|c^zyKaTM^S(VEEe|`IQI{6j z;g-1@z0|oM`hHbdN@LVElut3BV3?%M!(KlV=5dxqh4Si};zi2`VmP3v3`GLKr(#7J zQH(?A?FZ+1nm@NMV%)Bt%Sm`hmVS!_ADBDv5$W`?g#^3q(tk09h2pyS^Ur>@SNyL0 ze18uqcparUIO&-CFqrrF_Uc!a+J7^?NVpP5uj1?l^BE+E5mC4 z$ei-|e7QT$Kxw9>4g4eE?8s0#fQY*fk<0X*<~hWR;of2pE}HWJt9?$?~} z63A{He8;e)FT6w=Q(B6|bQ3C#{u9&6Ljqmt<{W_Em30sps;y!Tsr$bal`*KULEOxaz!K$$jWvjwgfRFz6Hn zI0$8|XeXE&kg-HPK$#IS_yErG$;C2@Z=}x&#T~b>X}IjEY9!oBmnRFhvubP87gc&o zZ9~a|{R?jfW0{sZ+N4q>X}qEZz+UwR7pnWea}q!LCGPAd2+Q^`r+)MlJK%{&{8`0bz#V|&#g}BSPgs+` zB7GflQ)aWkgs`B%vV_&Kv|l}ZI%X-_q2&^WbNctM%4FYt5D~`^wR^wWv3&z)@ggYMk=SHv==&RPgAl zHQZ3$I3(*&Q<1W|o6WqjUYnKMB+9l)l==(7b|zL`$J;4M&v+`!EFL2yVuU=+Q7Eo( zloE+wQHsTAf+q^gjI?yk+So_G5PoxHrOrte=#6N8R+;^+DnEKvuh#VIwMwngJa1O~ zN~6k(1G)k|#5D18FU}d6XvR^JbBQ9<-~ZkUJ2zvLnIe=UC+qYaDM5c_$_j zk9SE^6y6}Mm?SGi3$+yjfho>G{D-v=h}|QS-6O73r_fn7AsRYb#QgzZ_anIa7ET}2 z3&pQ5j9{Rj;V);Pjc}vW&7IgycX~$Gi4%`TIkM#dO-vPHE*-yC*%oub4-i!pcm#BI-H(c z?lwAJJZ@RP7?&7VXvLJk%SRZE{y;PvlrO41;|OUnX^keyA){_7AEe0=3* zJt_N`Qc4lrM#ZRmU7MJhV>F+p$FM6d$>F38Aq+!4znDGHP3z~v8(#Y#Dd{(r0Pq^0 zHlH`!uNy0>DV{jPZdc!x!9<%cs}uV(fLNJA9$BC(w{Si8cbhx^-2du1wUl`{`MQk#D!Zd~@gLh99+Q{agR0CXg{VEcQ8sTal z5kAfipP?RHD44fElytW`QsVTV{CR@j1n-KMl~{`Qv2~K(Nm<3eQBX!ftPZD49pQyi z=dIxG`%<}=Yxkf~L1n|nZmUo46K&`v2Wt3q>i~7dPC}}3&Q|LC110veAq*O5VjquN zXTz~*qKMjb~3C7WaYsC&pvbPG+Rpv-QDxDvGm)adM{f{Tht!It^qas+s&}B z+d;lHgd84>Cn7xb03fKT96wqIQQhnzrmVi3lIJ3yD;*bw*qHbk`uJ zxY3CeHyV{1ylqE=aR75${G}kp0$Ja8$6e6dd4;0%X-8+p9=!W@TpkK;?-Y9KXdS=L zcy>wYy_Owq7Jt?voTCyvk~*0%da?T~wmTnjJSrzS9?2sH+$Ji@jD;y2ENM#!TL;(W z)D&-G7N>?*9HGeWR@)>(t;lIte2Dt@e`nV5|84Kxw%bOQG+{i7XD)hG^;GwgsDtI2 z+O?J}(PfS;i7m?e&^K5h2};=JsQ^%x=EBeZM?@Zw31k8ZAmKe1|C&A3mPF!^85xH! zzKDQreDm+~{VzO%VimhDSWe6_J}N@NL1s9>>kIZcM2?d< zzB~Z3Hb$y^Na#FpD+R7`rTg6$@3Zu2b!;&8oBDV;3;*lO1Y^$2Tf$F^G#g7>QghJ{ zw`}cpVX=Cm=(_kA*M1Csi_*tqv4-+DBZNuV@7Sf_x1d<@v;VvF`#Jml=zqUSV{qrU z@_rm1KrDr%?62oqvxzr`-yzBE;TqGqH}8>gN`~+Foaekg-~H_pLn#T*Jt{?m4i$sy zEDdr#-;B+(paeR4=^lf<1k8HL|f%?50A?o+W^h+dSm3a3{F!7)Rqovwa zt@x$RuK!tyU_M^nUV{hqX)HOuC!;{=pm#sU1P-=DW0YuRb~b$Qfz{z-L+YPietG@* z%?s@PE6<3hNwii-iBxHRR&YpoC~cWBs(eE7&@hROMD|$1fp3c61&{l1w_1T_;JiO%27Uqee4swA z8WBQF;yyVODOGHE5$?Y&n;cQ~vn5xQRh-}6Ay4}gpB-80JE?RL(<@S8ON$|h5Nu)n zHgf3CgM0At|F{bO_Fmv{G!=^x<1p1@q`)7&_1v0u1def>LaY}?hnL2&2S^~MQ;qq* z?c*WIp5mp9YuM=Icb^S|Q-s3P#-!jc-h%S#e0hXrXO%~~Txewy!O@vi; z@U3vQ%(R(-0uu>~DwdH*7{liUKWE@r`_)!P}>s%=Bm{ z_lNEH8Q*%oW}H=gAb40TM#+g=87vQ*&8zl!*)jl!96kGIYzrDtx1Tr-XiNmw&J=e~ zX`#X`tyHkYskX3uv;zNih_?A*BR&gX#jcHy;AgU5q50d#?4dxCwpbX9!2Irz(|jR# zbo_CQsSfrH@L9sedItvqtm@5Ko};yz;}8t{x4 z97i~f6HpXUvi;A+ejkXH2_EAu>ZLfuBg)<{-|ev%L2w1@wb(1x z`V#K2!^j9u^q{Vx=y&Oe9vJqP)h}0m=2r57RW0i_YQU^;^HT- zIO7NWW3+}J;AP_+EhyhJ_s=jTHj*`3`&n5d3R7 z1u~ETO@>0VKn24BSj;(=??%OUUmnIm^flp%eSesLMG%26jgl8#C*X9XufYm)+r>Iy z2WHAja@{aLtmu@{T@jqeHy9mVNtsm6@cAU80?gOHah-uvOTNH++)p09LnjT>e0S_Q!Z)bsYvD1$7&s9;2F@ z0F(%7fG?BlV7JKepzw1g4-UuxGkj?({>U{U9@t=$K!5=e%5J;N#2>)O2cq1QsS>L5 z4ysUm0Af~{)knjI%!KN~b_1Bke!@MXk<&~iRS!LKm%!?N#UdkQ?B>jXV)sb+6)e>P z91(C2(4qx@!=r(7FN4KAEi@h^vq9w3>V5u2bM5tBF~@?FHXFEd3iXnCJfKS_7UG%Jw`FuopnGUQnFp` z@ZG`87#HfO&|t7k(?u}d;Z?&iUE(t522(z!T0+lmxC2#%`%1dXc#pR;LN!0{cKi46 z^k2aR#kJjs=plzB{oEwLOZ-hJVs`J@HSIO67+3=3mcnJD^A{T(=C|CQ!tKzY;9*=o z(WL_Bvyw!xHn|W%iP9oC0^kOt3clv|V2f0E3UCJL76I{b{|=`|ss+;moR>W%FqDNV zOZHE&;E0L`I_M~##v-w!)0xGo0uMh=55h^I4nG;0|Cw^)7?o8jy*XwUGAc-e=pMbC zpcHM?==rzs(UPK{Ll6zSID_ZAJLGe?%~Gr;I{i3#b1sEeSqE@_^W9>%CRGmdAvayb z8GE=Yo}MREZMGMJvvP^i6|)1VKgkS4;fgxh1qHYbmqpc=#@RtASw*>F$5)}@l0P^5 zvh^b2ge#l)oWUVqU6hSQ;kt2EM+yPAh$&u{a54JzLeC4ulwfpq$YSH68y%SxKYZ1w z1PcFWtb{;o@V-OM#NucU7L_P*5*i|OFHKjzfTt)VhRObOWzTi{CR#A9L0|B@eqoz* z&o)W=kMN;A`dWmPvkR1BQTy4k1tj9}P>+87^ALkkUKWyQwl#`JXj$R2k|%>EDVZII ziTczi+4=dgDl#%SExG;V*$B6lY%`i!u#~7#^++6-ltm9k2q^6o8e?JywK2RU8tz*XXuz zhs9_X%Fd^hJz8}-0CQaS0NmaEfrqQi?>;}~)*)pI$Z-94(s3gP$OsP^9+iCV& zW3zfWzNnf#G&u? z$k){j)UWH2BgMZ5)%9N|vj!Y*TS zCYSLu`okl$l-f;`)ZPr33wI2eV^WF}ZZK-WAQycc2+X1^pk65f`G(Z#^8S))h7j_g zV-8ZG1g?if9N$2}KZA;eM#cH^m3jpsO7jYrN*3WFG7Hm%a0SQ7TmTHPCri@LtTg-X z4y%zxDFGgGl&59D>VGkQDm?$g9Ml2MizKCI+t7FNWWuV+7q}M=a0w>HT}g3UqP9@lVqX~ws3J5*bD*P4?C4Z4s+(D9 z(JsWnQw-XX$jYaS^**=RyiGiQ$nlKVK{)cE|_57@KI%awGLb1{=?y2F!um8HXXh_N@0YkjLkU@#y3|WYjd2u zMoR&HndS&9hlB5cP(2tBSJ?`bB2r^TTeg!qpx4CeLDJc@=ma88hD=y5KBUwd{2g;r-kAnGT&ox?k;{ro|gIh?1 zu37UsGMhxP&bFBi|;41N4ys` zS$xcfABR)?!Upbq93nL~+GF;G-MalbMEby3T@|>*c9(9zD$4s#7sNMUw>UoLkA*F= zTZts>*2cp%xYGD6!ZYPN$J}E@$7npg5D@?LpZp|rzwhx0`UX;1*h46*cB<>034G5< zoW>XYn(_D^Bx%!a8{dKtxsDdD8#%iG=U@Rwr?Yl>hmFZdFyi#09Y^=x}zcoDY-$G%s&s?1%=fCqCfOO0t#*M z?+k;QhjmsFj!ue3DDbZO8}$hf0>K^KYfD9)5V_pp9|K&WD4fTS;Quesbqc}<{;ri% z(@w47_-GzvV0W5qJVo_2I|~D5R=A_mU<{n@S(pRd_lA@3Y0=@FjmOKFc7+%uEH=K~ zZ3(=GFD5UZmj9$8Ox zYpsRH3~n%%g-rxQGAH?JRJVrd>p5kI+`OH`#hJ1%L_}84%^r@2)IU^|-XKQ#( z%l_9{=S8zZrt9s^)bW&zkB^qIVs%c#DYHC`%f>)2<=ub7fB)WXxz3{uV{ z`$L8Xm0f^0Z(bs>lg*#`y(}}85cmS=LWsMfrnm_=2b|{I*%+KH)^U_72jqYJ#R1ZA zvH1VyYx(}Xs}w~UT6lq8KYyHjWkCdVZ;@?&3+p+7xgiMLoWo$g-8)7dDj zk5;EVu~3OtJITi>MP$zbL69!`td|qqCANBtxzs3)nMXhx{1gx5q=n8t3Lk{ZPGiKx zIq_$fkB(GhfQ#`hN|$64KF^P_LgE|?J9Zo5yJeYN32Y!c)=kOW-JzO3Ks-G=4`=Vf z+1n7)c_1{wT;v(PY?0pAH5eUHg*%Z!b}J6WzCWy1NW0(d)^EU;d{|zsckxTSpiY0- z5RF~~FP8;M7+49L)hI&55P5o_KKF1E?Q2y&CH>q{cwjIJsHRCn!%B8stkV?q49X^Y zJ}PaZyMJ@aA4_;@Z68TNN)~<3%x1&D<*uQRP!Gbw7Mt&SL@va496^lA(Xb)M|du&b^TN#g} zGq$m!gy)P!$K1hHf^D!VL=I+8yTf{UO=Z);92J;l$xWe_%Tvo(jJ@}%6Qtm@fi^&) zi@rSJ8XQBrb1Yw?AmFef0ohocDS?&_CMhiI@V1g$fVQ+>jT3`K^HDcf2c2lb zU{}T?gEF2I7wB%gezjlU_$VD!xB!@&AW@k(?VZN3smG8tnq%1Scs{2SC+G{vG9YN5 z^*urF@FwKI1uNFELAEqAKml`R65b+Or&*-V*&r82Z>9k|N%mCZkRFFu*g2{IeJKS5 zw?Rx)QuL;bzG}V(afldy4tyz&7SlPA$UryLVSGa!N?3!OAldE@xfUjApk^#X{~nm; zJFZ|Kbp1-jAXM>|$J;*SlT+OpmFyA}1o8C!oKEsHkP3G)>Y6Xye;zOTyktv;O~3Q$ zss%RvZi9&=x`K>kYFq?2cV2_6ZSFSVy=BAFXLHUf(B@8y zh3f+Ly(O@3g}wc;;8Y-fr1WklA4PwF?(1B*nq8b0+$6zuqchaUPLfhn4UW^P8 z+h+)%KwzwBb!sq$6lLa&xcNaSj-){;osDsQ;q??$5m?gi70+BL`Q5}D6!d!e#NY}+ z19)1~J=D$Xk|$7T?Zn!y-@t{+rfz$$3lv5y;~sA|J+vi*ptPL~z$3)NyW4lCR8kzO zC*YkdujScGTNhRcz}6kftO*C=xBUoRcRM=|i-7yRT`hwZ_yY_3l7&FvIUqk4 z;7>P<`l2oY$jG2rrpxqYU-AVzC+{c6_@B{$jGFy=yl!IIy5%2BikE=v5<+TE;h#v{ zfMZ(1m_nd&?g6ZQOCgKw5kx3aH_1Jf>DBJK;+(sGBsz-!=ZFtq^-!V$D1d`5O&6< z-Sr|M)-`l|&5)V56+&7K9{5h^$~p>-@vCRVjVY4g`c58?RH{D&0!bh`qGT4#@vJ{$ zXmruYL!)M$IPVY@<(S;Tk~=hc02lA9l=wj34F6Y~%(uLco<676io$Gk*BsRs)NnX| zbi8nJjQ<%`xn=U`{Q7If3^BizvtIbI|Mge(*wZKY2P)iX{`-P}NxywV{|}$$sgG<} zlx`QVmpG7}u?d}s#ISwcUvr@9)shhE>N?en2=;&P*eH2nUWA8BZLs~~RkW3wlqlAq zO};S_Lzt!5*MpP=CR@_rl2R0LB z!wTQ<=R^Q54h9beks2vVc4tD#=MPb`o~&+n#qqzPygTc?8)hgC*{B&^F}O@+G3Xl& zYE*ocZPgWB*K4=BWoOe~^WI%r;P$g#L*2gwVoRih=BVY7A`Pw?)k_2Rmw z>%NL>)THS8;9aZ>2PIy;Tnt`IAk|9XV}p=9=N_xnH-y^X)*P`moD~i-&+@J7y2!82 z?~S*A!2Ik3rm-*Wg<-m~D{|z_jg<8yRsMzQHw*w~U@A4M+|$XEt)g``_Q%*^V2545 z?VgJfn(T(a8e6?|x{~Cwn@_vFIZ7m&CuPa@ocD#dzPgQ$*Q-Prw;S17;P2*TVxR~O zE*O0nV%`c7+eqFEHp$jl$y3#N9kszJxo2cjD2&}~FfKGn?SMH#tO!8nED_(olhpLF z9o$!VMkYVL zVS`Ty&m!`pbq*W2pqe5>W2}IUmpSdY$RkxHQYLi#{6LMB^3l<1ml8>+oZ7658H)xD zi-7qppOZ|uUarKEtJBHs2$l#WHo`2dx1*`xb*z-q7rat>LXTE*KTd|c__Ge4yE|`f z@=HAFJ_^H)yw${&eLH3wbW?m2^YSN!P*PU@EL6EgOQrnHjv&K%Voj0b<+x*km_%It zFh~l-WdcG4XYro2>?pkd^bm@)hf)gEnQ9~=-EvB*w_yygUxl|{9k;_7Z4ZcVjQ?F$VI)l=OBKrPnw|4hm5Ib8Rv zng2FOkzK*$wUluHgF+`S9AH4r?hfjn|_; z7D*GQA|D^UH)xg$8{=@p$;HEDIychD^~J%fopiiD=5s*u?a&6N1Bz)ko-$IIY-#KQ zd&vTBIn}G~dH}(#&3%7b`&BIp#QXKl^7zkzG8^3+>e!lA4+Zgw=A3GfSt&9y^)IOH z-)DE&u&0ZdS=TwU4`IqB8K|dZ8B-G)(N4B-Nt}>|P6INi)A^K5Z}NyQ5OUd`xI0|N ztEn60qEtPy*aTGp=7S*^IjxdIuP1iDt$e<43oMYdNojR3|L56Z4xhnV2Dsuqyd+J; z>UOc?6D3Ji(4zk3oQWLh)ydXFK@4BA1^CHnK`7* zDGBt68bt-Ti49O9Ci`p9C>zsOI;n|gCARClG?CMG>NTczw~11Xodk?z2qY)PR4|wX zb1@s!1r9c|kB&n|ip$^^aLktdoqxfXF~?Iz_55ErCtL1(4c1t051{kY3R1vdTv5ob zq%_g`h}UGv&M!{6)L-5Z&Tb|XbPu%1M&oo`9HhEZ8pC!R*(Q4gbaZ=kOofR>dA5$E zXZGj_b9`O|erl7iii$+u;sN3!o}-u`@nJrF2$gQB87}}ew-l)zlxpRmTll0d1AG|w zF*zQoeK3+B-{n}wO5F-^$kY$XoYoQXGz8vTctD{nX{XhC_bu73cD>=T^D_Utn4hOv zmtsg)SC5zSn%}EW<^`rH;yO@3EGi$3%)NekH$Cf2VU#89L|{Ox?>3;OIc>qbP=_A= zZXf*jy1a%c7^Ao5z2?%Gb(>4$#q&x`oGKSC9~IR+w*DQy*27^X+}1#vQ)HY+=|gwW zqZsq?K6!kP1^2Xa@pj1vVt%hOZG+Wfo3DK^6sjc$_&RFAf7chQvNNr9Io4c;`CYVm zr=bunK0mON0e%M_AAekkLKZARudhLWoONM0eb=(&Vij!?)-T#M43_>t|FEe-ZSU3r zkvBXqJA5v!Ry237H)u8)ue)v?O^-z=OA>51qE^IJWIDaSd$Gb$tp;yBdrewy#B%XB4Byd502|`?VwSzavFvGn>gG3e zZ&%4jOceB0HhIx|562$Q=VAP+g~z9(!C!9Q-+j5gF1hDzFh&JQyTTce1^7^Av2^EW zp6X#`3xa0jd=@dap_r?#Cmc_v2Q}M>F{F|c3@tMSj*sI%rOHHrsczh2%_#Z~?6$77 zjT70_Ni^d^PNHZz-ZQIIZ3tlU^G|j3%G!z5Ymr`+%h*CPwV_Cz&yXoQW@a1tVPG+j z@WZ!d;eHrq9%!$#V;5$!7_DDeN+OYKR(~Rzx*7A*W+v!mq6ZGxO# zM?v)mob{2ugC)ngNk%L?+^tqwTxk~C5zbe_k(*Z*e$-?^E8RgldMc7-)U#!gVd`tg zaaliX$P;_yn^)C<2H%Z-`*@wJRZTtac+yq8DIJ?+EYcwn6ioxWPFmrbuTP%>r{;Y> zpsrEMLjMp$?R^Hj#kY*>IM;5>vz#1JXJcQUhG(@QMe9P7W8v;JHM{B_u2%c5>=u&dJy$uh&C zj-h!UV+$^7;wr~b^4U8A{B9spI+l(aXES)Q*rmb0ppeOEYsm(8raATDRwu^vp(FWQ zzA6*d!)d8d7kXc@D30yGef8cMrVObnS*YrmxqHW2mgF7YbI)1t(`Binh=5w{VE zaSqrh$~cg4V_?dQ1R8`}ntFZj%Qsd1f+J}t=ef=f?ldy?JoQH9-YoLdpiW`Q}w>HXc` z{}Dc1-v2RvC}j=%*7yZTyks+Y_{e}h5K__F)J{-m93E>4`e|cnjf)w3V;{b1gPi?R zm?fBCoN{s0r)z+yWh|OhFqS7P&GqLuH8gZm6Sbr1A)l@zL>EM!w$tG#&~$D1?Z1Tm z$z^%F-(_`C0BK;YtZ>eH%hHp#?JWCczeJz%x!+u^UcG)g&Zl$sK{9PTsd-t?@8j%1 zpdc)7ksHuu4t0GYb0BgVLBI@_x0~~JG&RNpe<0E5qZwth_nzMJnS>|G#P92;X#|(( zip?2jjDrWP3@Qms9byqihA$@BQ=pJ8Dk03jfD3Jz89U5usM_(g9y9s&mNi;pc|85_ zyh$*G8GB-DDxI4;sCBL#oa=`1Bro$_pk`DZXCrkDqNL|C%TG4RcCs0xl>?P1wPO27 zk}+)+8bOtGqqDZg8!N+}LZb%IXQARbi-0<@JVfbZocCCmGlgMeYjb78&_zvm$FZ_vbG1@p8Nd?dpj{-{>kyu|Oq|U^HZs2I zZaFH8E*)?<<(#6FjM6)+DB+Q~>IV`?-*vA|^Tb#;w86SJSOb)TSo-mgZU;CxB=8Ws5j1sFQ5By~1rt?4KXao_2@z@;b%_NsN_n3tCw1 zE5e#5w~OFAw@;>i4PgCa>OwA9$jv?5)L!4cWbmDgq4=eeEe$^lb8Y;4P_$`vaClve znkzk{ZXi}q+`xlYsOc3EYNIB)QUXEtEAxT-sGN&}Mk(BqLWV3M3Y@WrbvBLC4GmX^ z56|cLlHz}fhlPAwY5T%fvIj@-OtdY*TsLmIOZSorigc{BV(s33rW6WbmwmPRt|oAD zTK!o*I^gzB&o^VauyS~4$PT5a~gTFbp#PxQvEQ<0$? zF4t2hFdfqL!g&|FppCi+%1C1!LZ)V8!GY#Y`~tNzc2I$fdTawur6!40veWH@ONF}Ti;!!Ct%$gA zs+aTnU@mkSnNVOu9n2evedm68N0fpWEF)iucs_NzTU|aVF;)dZZG1#&y%GHxspB8V zwR2lFw#IiJb&Z4cIcJ@k|1r<3ElB>mFOx^Z zu1$X7Ir)XC0N$elh||7FijBE~wk?#Q!^Ayv0gK>0c7}b}DHDZy^)ITlJnY%oL@To# znFy4v%n$=5a47X+`E+&Qbf4b6cJx$+2jxV8<{{bU7hM}AwI3u=#~7DYAmM5qJ!Zjo z^&x_iRC?Irg}D>WPry&XL0{=9iivDbWYamp8#_4C9;d zVRAFR4?j%q*=U${r?uimkK*bLRaOio9@lT;Zt;@f~;Hvn6jcdvcKdfXIUP*VCVogHB9^Y9pl!ubU80W=F7Suuc)S<*;TN)NxZ@ z;K7{rG-5$AOT#4$I47GT%%Z+Cqxesx%6G<=DY-6nC{ke52$=OZA$&o0RIt3&J6UL2 zo~~HE^$E_+=>vGltO~pQQPBq6x!VhR6yvwNE8SQa$VldxJP;Q|5hb=M-|i2&?3XDC zDZ-`n+FZRyeLC!dn( z@zHyb8hoxW9~bI;2Jt!n$|SLUoK8P`+2bsq;LgKG*KiOf2`w&)!dudD*pu{=;X&XN z)7e#M#Hrw$yCtSBWwx=Vt?(>Ae}?Bk5j1{A!g5MX1TVQctn&m^{$x|R|66n~Q+iGI zP8)hBu@)P;9JPx+zzHB92@Hy8991merud5e9(8NEk!uN&QusCIOL?I!rPAP2c`3_U z)W6UHJPlCjcubmJ$b5abmqGo%j#n5vSYM_-8fzoiHlCe8noqJgw}}pabSgnE)fy=t zotymWodSIwGD)f#6$_$w{-VzX={#I5rAO0tbuGJH$!MQ}iWI{_%ZC~+dDzm4zS}Nh z-^zyIT2+3hW}P#;CQWX7Lg|4>YBH}M;TQSMumu19%Nz4=**7Ok_#4El#;=NT&G;s@ zA1IOt#!tQZ9qz=kYxtVK+sa_f;=%ri3;)}Cw|#tb*dhWIFW*4u%VJ*sigKNP{gvx3 zK3V#P#v1KbV25@o5^C2t^=XUlm%wC{lmpklZf8a%xqli+wdzFr6V#r%0P4afg_J4H zg4Fg_E^u-3&f(;3qL)mzH0`X`Yznt}2EhTFy$ucX|EhIkHmxT%2TR`~*2KfPk6z1b z;$U!oyg=Z%z>_p8@>lGIJQKyX{?_=FH`+;q4^@lL2D~wg{oMM{Sh1#hUm8fuRj&lWa7K#tDhW35teex6VtxI5lf%a}0{H8{NKq z|H*RbPvvN4^A+@#F6_zc9$Xo1 zJj^>&nl*WR$~QYcrD#^2s$sTf%*Hf~(Kr<#rR5@sT~~!3(QFOQHh>_O3zpBtkPFAb zFKRU25JLI`PJR&1P-;Hv%YmZO*4<9x>~5h<>0w%;4kfUOvwBVQpIYlTI|%NM12COX z-N>FX{aF!;uXo>YkgyprGR>Uot>=inI*i9(=Qh^lB+QF%BPFkU^Hbzt0MUfpupMBWobSHXkpl3?#UJsE|qOoRbRts1ZWW zg(-1!W++5iEwgZ5bP;Ti5NPJ)u#M8!aD_7ylijujr1g8nhW9%Rd`P;Gg!W>u42^M( z;;c&~8twGHO5?LweF%Fz$#PDp`E<$VV>WEE%!T+g#Ka`ce=Wm!Jj+siE5kvsg;!TA zoa#)MHYUV=QrHzQ+#~v?v(przH`G~JcDY<1kR7(+J`#QEn*CvVFm;5_FwR}EeArod z0_#e-cRpT5lI2?YFqKI~O$HZTDui>?*L9PvVM7LU;Oe#rRHb7)PhYm*kcoj)tbanTK^KHDXf*#l^ zJv;r~Aq>-b_#CHH*!@EwOTQ<9_vufcG6RduYXYG}HM{VwSg>4q1D14i*f2i1<{7jo zt3q))t9IU+SXa}Pm2cH0FFR)Ny}o}-gL@ik9jiv+UrFvcZd>n;$`6-^XLR#XtSNRG znbbLS76ymWSL?UL>a>(T@oG_5((@{w0ah0~>dD(JIRk$1s2^%jN#88f-Ck5=R|WjI zde4D_1!I&sSTuJ`L*-UQ{%62jRbfnZt^29sf(m0W6dOhOYr$E)&mI zDf{X+<^V}KbJi_zx*LfTj~C_e>SW)`YCnqh9im374WfGLIgS#kLk>$Qvp<5%bo1%Y zLwty_nj%hvD*WA^&C$TJtc9r*Skgk8tNS_<=h*Uj(DDZR(OuCSjnTh02I;9a%WlaT zb4xCGK|Uc=dAeZZzB;A>OoiUV*M3-(<6s3XtR;Ztl}$dm3H$URyjNgG56`CAL439f z%e}SoW`gNeh1WxugJjU#GS;!hpNVwSFD9j_^=Mdl=nuLYE9mySOg?LI&bC%YmKpaN z&+k9o&O#G_MxDsV#F9Qfq9PY;PL=yWMwLpRbAz}!7F9Ix$p^@$6vXBq5X>UM5LWz< zEW6cDn92^lmzmY%Ts$%w6kZtiDc-Hu;IpiX)Ud}SKsny^vDI4l=$7;}ms$n`3emHW zA+@D(JPA;#6`Y49R{1K!`1ifgR}bk&xhG{<-koVAFjL-!AuyEcDV$>VFqUm*KKHTG z6W1Hetun0_YxYY^^eW~ayMYQ;pj8%#+<$rhkMP519PfQ|_aHh{4I@v4mqafNFR9O6 zd-r&%#O@!7VXDDGi8a?NO0#_B_f|xl6K#HuGY`k1HI_S&QtCE(Dh673&P`6~0KfB{ zzI|J)Aoo?<5JTF!Ij4Mf*+o^;cF)-tUOZ==)sYJ~J)U0oguR8EEy@7;W0@`loFSYD zHCgB1Ls6^06mnh3qFtSWwHvYXAM%iCxHwhc){4IAMC{P(kNkOL6(6!^2aO-t62z&R zprHoU>T6){`yXrU`#G+@yt=klL4Axmn`*0oRQo6r27cB=hj#-3)V@@MN}(1t4&#Eh z@9g2X%Go1G0BAs$zjmR6Wbiyf+7T#gl(bp9jx&`3cvgjAIk`nyM7u9}!z4tJ0sQB! z>lv#(7u8}Z&&;pZ^^_f|2YrUI4KY@4q^eYo47<2I>_?qICQ~lF%^FHo6=oR-4)3!( zMBS-F!e%Ijie6UbvCoq>g88iI+Ux@rld;ivmC)z+bhd0d)}xMzQ=F5G*B*AxPYsZn z^4L~QOMqU~GW7ZiwXns1e7<{s`5DgdVIEGxc=Ml&eM4vdHgBXkV{Z$aGYIcctzNub zE^p&+N*P{v1`;ddJ!|DAs57uV)+$u!LoL-ki}QZ`LGg!gR8rQ1G80WC6~M&sA88aJ9)hoa;)Vgg<_O))L&Qv=_9V0g80({p7^zEV`Yw z>cFNOPrrp?O(`^l0xFeAo}3M)){&@@g{x?jtY80?uq1D2*t9wJE(_?YL`k^U#>D#C zEvBR2w(HYTkXRg}`N~MKwxYVMrxEl*Vo&u67zM!T(K*z6C=FKXtM>@;*}a5cwL^77 zch;9%7iQl5Rnwurnb^8|;k*hq!ONk`Tvd69cxja?&kl*R@`jrnqN=zsPHsf zx|kOKX!b{_I+vBE)@PEVPIF1p+CKH{%{p|4nJYl(d_dhT4Mm)$^TTQ=1*6sA*bE|7 zx#T;~lmg9N@n+!-8WYs|ewXIp-g*j3Ou?kn&XaL+>qJu1KUtQs4wEz1->xf9VHj$& zLxrWxwzfXn%51l8-cW6d#_9WmITG#iA%$P~gVKl=bbdDGdBkx2l;PZj{0WZsGF*Vs z3%@1#)9#RmkI!o_dD?Opv&io9DdktNlq2(4YCbmI-V=)Cq&~#n5I6cP z@*k$^)6(+L1NbSAPE9w!X|iO^0NZ5b7>4G`>Q?fUz0A+BR8=MP8X|@miOTj{bO)Q8FK<>$$NkDL9e`Wo76J`&tK z2=4#+NmZ4Ba5Q$i)_T|0DTgm4h8PWh1Mv;vu!1aXAK^2rB_?CggZE8MtTGz*-#}0n zyR0MDf@$y{QwnS@)}Ia9?ef^z?Xq7ys@iOi@u)J?sdwJDH2sdv{MiJ1R(?IqC`6kt z`>AbS-rR?Js4^iJMzYrmS(nC6$dfE{y#8NcN_tE>Sej^g7>=@J?4d?rdJxdQHK1z9 zpPk}RSe8KJQ(@CMKcrhkM1-|9?`F*&|ERI6?ljF>XM^HX_RU2^B>df;UEqKGrK_~l z(_M-e7!oPbpjn%7MaKOed<1YA8qvZI`R_{q_zwQ9Jf*^wy#6wsj<197YU|+c4_|@r zRL~P1dJ}z(L*a<&E|@R4!Z=mIUnklhpkNvczXsEDjUcbC=R9JByg1^mQGbe!zdovX zQ?4b5Bo*hYB}AOLR6Kt%D<0>DS<;5KtjzIRprA~GWHXTml2fro)zO|l3G`*EsUy>L z(Be;T^^Ai&U30~c3K##@=oBYjsBJq^FlcH7+2R3AW>U;9GZA-O) z7tNcBU+Yw3{o@P}sEJv2;1;tFqg&idG1g9w*Q)wJ1}_IQqhc=%XTF~gQh*d+_RA=b zQJg$^=EX?vwrt9t?NHHtN=lg+p>y+kbx6Td=AU=Fz4De`19r8qoH}2$<9JbvhGod6 zs!+Rtc}7~BH%LbWlLKKz{`O59VBS#`@M1f*;r8T9mqHsuPn7PbsRpGcoVxMC-Or>K zzE{ay+7b-^e`jd9?4?wO*ON1p=T5n3t@MqJFD{s3UgjwkvUD19ZaoA%$@XywZhd*` z^&q2Ic*i$KAhTz9RZeJjNUUP=<;p-s>Y4s;G56ZHH#K@^2PPTg&0NVq7Uk9~Mmp-5P>@1`v0#@30P|=Y+!bWLTzd*cq ze60UC(tkYBe>~NHJkx)CtN-|Jpj~@QSr%vH@ieUW29n4s z?Mqt%%(YBPE6CjXU5S%PWx-L_J=rPej0w`1eyL5;ax_itT$$K8Jmx6y_tklOLnL@@ZUuVbn8bI6*zCEg#lv;sr*M`;sp8;XE@Dx|V2 z`9ph!4OdF##8U$~T_!1#g$`K^25Ol(5N<37-H?`SO$c%sebf~bueKNqw}~7>Y0IW~ zZ0MLDE8ez}4FRHmHt#JTJc?P)JB zbO20FBZ8<&xsk}q4MCVC*K(i>m!p{@{l|0t$BUksEoE#)kG5$fl$d&bpT^*5rFgRlok{h5uhvQ7=VH=)NHRk)lBFsjU-IGM&ebgBbOco$VUs0~| zg0Rpc!NOYdjlv+tf(|M^a&-M2Mj4-XMB^=E+Vc~9xIR=zz`jlrTPbIbKCN=}k;?&Tb zp`s^UTwE*5YS9a=$@%$E+Fg0@@A|W}OelD-)Z4Gep8N1SHP+Et{X<2j=jAj4_x|rM z@9!`FQ3M`%_SLqjy*Rj)NpQY}NhAp2Kkv%@JL-sCj#T|+lt=OyJ5DP^czp2`gChVw zEKXio4D{}<&1aoTOHIU%zJZ(r$$KaqR&9`c5pIHvTm$^742`b2C5#R)6DlZ%XW`b- zrZ&do=ZDY_^}Cg=vXv&c2Z(y`5oD^f(zU8Z%5sj5{JRtHnyGG#&Q($`8=|V%)hu-#xHMVzgW-oc^ee%^Zf9t7rhHE z8``#lOUEyZcn|yBW;jpFUYP?nOX3aGG32Ug0A+nTJgyJP`Zj*aB}6q0>6Yy^p>Lh1 z`B>VccO7(YPx?w2s4Mr@Jg3H6yMQwDXc&LEMMv}wRTXn~Fhw(hpMLJcnhc#QL2dq@ z91E1rL+X=&i&I7ss!Su3d8A%laIt9eP#JsF+AponvUNsew2^o5nQMo-WJnsx6N^ zC7Fc+SJ3)81vCq*n+7MnJsQ=baeFHdMX`yFSSvymRBOu+*YQRee=GJo+%TCzNo-D2 zWWck)Sf-LSZe_A94Owf`L7rFz${};^d{eH^={dZKy(xK3r-o?*l_93)9Bj`wQip6U*6f#-j@9>{9y$)D z-E{k!H_K8a$2*K=F3`(vUw#gXvR2mHz)lez0%dDN-d)WTPG~A4ORg!Kp=Um{O-wtX zEzT{|+6<_!?{De(c$cYRJ_)!k{rdae#(#CbW3^dd%d6CI8YYJi9VYmt;&^=YQgx}P zUYuIJY%>wwNBfjPuH8JXv*mmt?P~F#Eu)w5{QgsIebl(V5~?Q+<~jKK=W0pyLqxR` zt<*ZVFHi?W`*fgwP#bV3*K?JmppJ82Zj+J*9_FPKPEAb>XZhhp!&DDU2mkK0)-Y>m zDAzKnV3?a(dM_Xvm&RG_-&~Y(fVSsnVeZjj{a=bS_;(?0fnZzxSXbVG0CW?*kh)YT z-kq&V4NP1`uYEVxE}DV&Z3HP`ICKB{qEY9dK2>AM+FTp6V{9-l_ekphHdX?{4lM#@9zq6Lq?G862GUV-n?KrGKh~I*v>; zVi`9Sc8dRv{nEyZ!8@~wg69QMv;z!MWQKe;*tU0^J8quo?2wKcx^2;Q#Y^|h)G=e< z7adEd2Iqq{mi6{n484@J=fKWBxmU-M6^Fitm;kdrCC`N2^Zt0AY-uToa>EUqJHPc+ zj>BUjdSM2t;E_68`t~(kT1^cB`q--6I@xb^;E(?vru~+fvpMC6l;247`!vq3)t9|lkIl33yyl%p z!rR62E~oTGMGKvUSL-<19`?MfT=y`Vx|-2=LWx*# zVS7cE3a!W2nkW_4AyQuY3@dBU@%rSlZpqwAdTWSapr)n5tkjyX+T@Tm)jO??ZAT#w zZBIk$;aaR}9DxW?K%&{@G_M9T`B zvTt6d6my>`t%4WpUHlR+{Bvpa87%J9iqm8HhJd@-x#R<(PU}4E!A+>@T&!cq>XS+@cdvnB`h-w;6oEK&5Qq)Ka!^T9hqx06MBXmu^)r z1;c@nE1yN>3q4y3#wE>^;Sc}XwgAKO7%craeNt_FOhN19@ziw5?b%eJ&nr>oj(5Ob z>-=x@89(gOZ&A9O@CO-~u#7ZlGE*5(s1O`IAlwRTQ~H$DXzvh_^n}>aZO}h8d+?J_=l+^@>fGt zbHy$|XYYu$X!coFYoF?)p}|@<7eOMW#NS6tl`ao{7CvIKUF}NNqjy7QtR!A7zhNK6 zGA-Z3wY?X!pckYnq>cgWI*s*2Bb@&$#&Zl4gtN5* z7vQj+(;SD@VY|o^a9%3pg5I4@c&Ble#3*JVS^EyNbi{3aI-)xAvv)PIM&ZOOUpF*J z#{S4BgFHvaIeLoBo*L5xS0f{MN>~P!*87r;QjFS z-@<*AW#5)=iU(Jo=^hFIjvxRyY@_s5D)G)o^_Mr6&kshIY{6Zm%*Az*?U6415!}Xn z9!J$aYaS0SmEc^an@`|g9Ae(#I)4svilIm$w#|E*E5h4T-^;zAx-_{j4sWLnuB9_) zJDbJQ|7QlEyDOQ!R$g)OkNAdX-E+QlYZz-iA(EGJ!=y1+VP}lu3z5 zjYA+=8JXAykNjO%;I5qn=L*|tUdP8MOnj^MR;>1~s3Drk&ZIs&nDeqrznAn(2v;Zg z5@W>JaJxqed+@;=Y%dk|Rt<-}7xi40--)y4TDq-bW0kMeA!XgB&-Wz;{IIDF+H_Xh z97SL)7hbG~q|!23>dp=FE7|o^ExeAiX;)R{r3*I2QG%?k9^c_6=gtoEeY#s<1;$GP z-dB_#G71Ua$#x8r%3`vYW?h#sb~1E~=*gMuk&{%1IaP~}q-)J4?vBmZ$itW5!kvE_GC@Cb}95w_EB38i21wyxA2fG z+X59$JqSGa^=ZDW<*Q0X*ocPmV6$L^afd26@xk%I5MwA+KjidvPcl>@x2-@ur`2{* zz4KC^#SqfItt?z7$h3Jf0i}D+n46-RTCLw#do~ZIT<$heQkg$LOx+Ys2Pha1Sl+iw zzq0WOYS^WAR!dvJT$T&;ImJX<`)%fmWec0k0skphaD zfFCCx9{k!rr@^Sh5rKbDiDONMM`RU^T(VPM6E~!^*W0?5+{bfpRq^0%3JSO5Se8Y! zj}{35kDKUa)!Nx{a8Qh`;-qljKHPtqJ&dm@6w&(g6h%{AkABFhp!gM2s52Uc6RGu- zp_%QH{CwKNF&`DzqN7k_u}~{?viL9xI|a)KpM^9)`X24sJ^?NMogY?~`#(`p+h~Hv zqptS;7~@${eD8TmgEYaDTaXZqE;t_B>;p0Pj2aAsCfXIG5-Mp2E7P?@t$_*ix-Moq z|0ZYk4bfvsVFI&xj$ZN*dMNFYd#)FAcIyYtJj(mSmf;iBUz)s>1uPmH!XrGD{`JiE z>h)n-!`i{LUhiQ>0(v@u`qXUnOV1q^Y(Yg$37jX+y5 z{X3RoCoe7Aos>1DZ0$Obr`MYE>^H$S;d6og5L(J5CmjVypsRjqgR)CX-@cTsX7n^& z$+v>5Y2r3eJ(jf{ZriiU75-tnPPV*GAKMC7lk?>5VQXRdz&R+<N})&_1;X+J7)+`+c=$@5eXM;3C$|NnOUC($T)Anp?Be zMd;6Z5)3IYN^*qtcDKlZ+U2&x6yLs!etg7I6+g1!oD+}?PDNdJ2YZ!=Yx{>ftiCr3 zT<6=MI?nPa&08te*0aA&wOzfNerY3B_TR$CWEo&b$>)79YilYv*IH>aaBgGaK6ha< z4>fzD(zV^o`~eX$R?zn&Qz@spCx7Rqa@Iw1Q0kE6wRVu1m)Mxoi7REib?swM{N0=9 zUoDvqL9W%7&vvkg!#QYHzIp6!Wvrc{vEPp=QFBUQ_T}^vf^-wT+#Pbz`qV*-^~v(# zB~?m!JNazbc+MKTwn_L4nn6n@rF3Bw+@V)9ry<4ZZKc&iGwaGY?5w9Tb}CZGuZ|1i zW1GSkl3O^)`)}Jw%&=&kMAmxQwr&aSZ?zgIkv+#ESq~4K18i%b}7{-xQaH(`n8*4uuK(gH=;+lP9B|80|L~$Csj?uNvUs2J!K3v zFx{(T?Tu&JZu}3dxhXZRX*kO^0ofZ6i;ksy!l@WS*=r>CW@X>uxRs)RO%Yh^{mpI( z!Jra*R5?hU$<;-Lp=0;D3(>t!;b9gX?1qZ?3>=aQkJ0KaRVqi`hIs9VWPKaI1V|P4>OQZlxkA!IjfC1KojqNR z6>EnF_}h7xhJxY-b&qE1{NWdR2LXliT`Qoy2g=a;G8bu)ue%!-&%onI@&7} z;Opq7^FwnYT**Zm^Nv(Lo3QXPK}?71gS^TaVMA2w8^YFv&w5av_j&rC`fhXrF0B(! zJT7p-Z0qg8YRG4`hh0xa+HMk@7*<-guI~(8R&Y2to1o}imQV{j)YbdgQVA!agmUWJ z|M@7IQTUQSHgD=Q+pJ%VtWXSoG@wX;NtA>*H)AM@-mr;hm7(Os@$T1IMN=4(7}<`m zFX|y5_8KrECLgAokVeq9v21T~{8joKk3CLq70#+)=8XS7`RnCcTQWPc*zScU(wv9%Yz9gw+ry7k=}l6S(NutOHGwty|cR2>3t1L zq!IsI2RnBF5N%n^nl2#i5v)2l%RQ@BFk2n$jJ|%If(yzE`Yxk1Zh~Oy`Q{PIIz?v4oLsBQg)mCvFpD;3 zT$7!N+VYQ{_ySdnvu`aTp>`|L%0(4kMc+p9%9+Bgd4u0A4dpublk-6uawEMy)XLVE_q}&LSi1`9-R8t{sdyyeevB_)5sTEd^>j>jB$Bbu-U>t;T?}oekbp z>jzbw?E(B&W0TflCzX)9bLq}cX&Rnak5RV^AaTD6J7rYE$6vM-M1Dxtv2R4T$`2jH z6svhj$0{0QkzXeUl+q+g%ov1Z*P{imOupe4D)*5<<|S2au7 z$RjJ5WPQekrG;8wMuLq~=Z{Hn6H5K3Q-RJ|g|ThzJK}VmCLnn!QZtNtf6}Hm^w*lH z(t4!r)J&#v3#-=h`$Y+!^OV(EwQ5Vyw+@g>ErUj^FsKHEu5qb4Bo|6;c)Xp=a!TP$ z$t(JX{Efj`w?fJiiwX=&k8$4BJ{|@T(UA^#R!|0V(nwQ7@}%dUIU8_VBa6o^QA5WLYhEXMGl9S4Gfz(} z!#i3%uA86VY3?TL#W_r@ZR;yn(gXcF=M=7g>skWiTr|%Q=hT_aq13SNHN2BU6_>6r z9Axb7audDK7qZ$DVAM9&*tSMDc^a^y)hM%3;+u}8w>92vJ2iTuO$a5MXM83HdOtjX zb^4lhg0X$DTJP?b4&=)f{3xf`Qd`3`O4A5lVI4hsa>><}DE^xW)o_|Sbk{8Pa5=vC z6u-`QV3>+WJU+%AP;s1YqYcQ*1-7uqC7k}#`i&E&Fh1;39B1vD|VZRrN?JKN)_>a$b?=L@xVRo2@lkn^OKNtJG?HlhT`P2UB3;++UH$Am~_4=sx zveU9ov3_>s{@GK$5#OtSvVG-@rvBAz-l^PW<&(4gYzaYcJh{D?f{XS!$?{YD$5>N9 zoTJF7y5NXk<5x7-0DaAAIeI+iA0$0zy}^a1;e^v|cU|?H|0b^b>#z8)UzoCbqyP5b z%)d66kJ3RbKeTS`Mk?i}VI8TE9xo1?utCd+Q4H0_QiI&uSE{^B`8BvAY=LKCkQpqQ^&}-uJF9Z(iL+D^k+kqQJx+z%JwR({&v8u)w{V9`mSpM$McYg%f2Yd->}G zuA$#Grx?~zQAXn9k;zGu3U4J3mTHGCtEClRIO+q} zVzKJo3NMIZCC{Si-uPYo`hszMDf@4&7! zt+R>j<0weV(LD{_R6DUxxa%dlJi0nM?$<6GO@{>^RZW)aF*qrUlhDyL;DfS(3yY_i z-J~{)RnlK?barnsCECp%%<@zGvcWKtuW%GTXs$vFXGs;OR$nX%rrUjq1YZ7Kp-;B) z@T!dLYMTQ~DBz~ObyL!AJu3jm9zG!;4rlZ6RvS^)#`D(F&@CRl=$toFV=9BtjoEA5 z6rXv(O)1Fkulsn+{bl*p3lUvWEsVj)H?h_&s_>+P?8PHMu!0 zje(oXckZaWwZ2V#{hZ>IA9WB%P`TjlA66@nu@=rPk2_Hxl-chVjnJ(6jnC2MWbtts zt(^KwF5LkGQn?N$2jKd&=8vu1XI3-nf~{!$%BBw&3#@;Fh~$e+t3!LHvt~1hv=QMy zYp*YgBwf=6Fo*BC5%gv|iAO)vL-rKd=e{`rFZfmZq8uXP z;)5|8x^=Ljw=OocwV$uFxjGG}&R%XIzHRMr>oCR;`Z&UJS{|1LrkjA?t8&Vkeey2Q zh5iI=eK*p*H#s%Ugp+1TRBOD9hOG5UnjsihXsul^h%RuTog;%L>t>%z<0xAP6JkV) z{QDVcG}x3+i)rEpsL6)!P0K-ber8E%8xdNVR$jnl)|sU?i@^5vyZA$Q+{W4ED2=Ua zvBgVQ=kd&K7ds{|E9SneDmrT|frF_;VoS=Hx@y7|QCl#XWuTTM=}=fP=JS!FZR&avE!*E|>A z-D%15zYyM~ z3-KMdbKK4(@7LgU)vd21IP*?XXecgDR1AD#QPlJwT?jcXpnrv7?<9S#;l5S9%Wbi?C4z=`oxj8)gebiR`$NtX3}uU`UGLXl)$9GM!9NUYk_buq|M3je$E`3CZRpYviW<7_Jzy@=)geATActN5-) zo?d@BX~J zjrIq#{l02WQ`=MBoeEaD!#P$P9p?LVho^a(EXPyXD8}<9I;3Bk?qLAYd#d%^e6$$I zq$PWrPPbP7;9$O5ON@dvl@acm+sSNp&1e42Kvu4RbSGEg?j(sbt3;<`Tip82g4$HS;HH(EPveZD_9>jAbYtbWD{O{0&})3t9)SOIGoj*}^@&((n2Q0+-^X zPRg#M3Aa{@_PMAnAK*t<)v|)lY2YCiZVf<)vcSscYbx6%wPpY> zK})TazhgvmT~&08jI_x=p2gdxxUdNAyMZ)Kr76a(uyz9Id=4!+hHC9!!v&4CfE7O) zDaX%AnjfO|o9A7!tVlCPu0Q?U-;+1ChwtM?Xe3=XpQDS`=u`&PM`c!1+(g)45k6sJO#KJJ40pq#2&8;O;3 zo^^QuH_})$*l4ZDRjO5*@(~p++*Lbi1jLSd!pc^2|9)4DEp=$X<(NY_DN3Rny`PTh z8)Ig&{lzLoT%~H!C5UjSVsu8=>WULvT%=mc2j3K>eBF^sQ=fqb2A4y!z(|ZA5_;+` zD(0H1zDrPPOi)kLX;!N3->argO)p&_SwVjC;9X&pCdP$x!e-;)e2S{9_WJpxJ1N0i z+lV%fVNDfVdmUYPjV^vc%V4D1!>HpUo(Kl}kIB~;j*5qvM7dZG>w`7QB7iNwWeLY) zVQl5f?;wm<5rmnciq;iEXri$ybjsm!3_gs6f%)9oOt@8SI2f*K50nnbaT{`7djW82 z($)X$SjgY)b$n5v+z*#kn1Wqj(51~wlZ@Dir@iAoLvJAu#1&(SWU2nIzh*B#$f?Rk z=^XTN@_%n!#pvU92qsO<4+f%PZSJiNK07!V{bJw#{;mcOsSNYsu$Q*)+1zooC0OAK z8k;t$TijV!M%?$}jjhN!WLUKVG2iuWt+|K&tU{%Et094vB*wf%7%=*ZAi6>riTw^Yd2N-enX>a@5xbiN{nqdelVygy7-ho zuXQNjM%!Jsj^n)tGEsL*KuvEv2QaxK_GRzoSAT`m4{01r>*ekmbmt!QOBOCgANJbM zvyMec(rGOvKxJ?9@FQtCO;zJh1>u&x}xFP*5c^M`66yRS>wy>tjat6i- z)-0v(9&obH2o?_Ru;$l0z!ygI@^ElQL+xQr`=(_q?7DWpG>(?yelfhe5Ix)@w930hf&wjN5VjUK0M=@HfA??~K75`%ABV@~ zUyNuqzihL^e!oj`|EBN@d^tE-@alg*J9-DtL37tbq`oql%n}^k6Kz4dGXA<;MEHy1 zKHYw~8NHuP{`l$T=Qls$4_`jt-QrI_m!5(S#Q|c>Rmk_3{c$$?{5;ZsJfX$A89#iy zyT+4+f{2f_U6Qp4$Sq27C*xc`H+U{F-)DUIbe(Jx88rHDi@n1g z$oQw=fQ9=g-QdrMZLw;9z5M)T{KhW&KhXz%4sf|coSh`DpT>(g0q1~Tj)`fq#F0V? z6RO1&6vvF|4fY5&9f0e$$kVmDT#sqAk$QkFUBDDV5--E~YaVCH*$831;YU1Ri}eno z#0<{!@~{S>0YBy?q7TL|C=94F_IWCF6u)$_W~61pCkVgSbW2>;@GBpE!@m{4jZksI zTe8tnu!(Sq1W)q(m6lH&=RL%&D6YXGPGQL-IIs!rTnYgV=JUh{vv|Ft6Pu@W0_P;@ z@IgFp;bFNCx#;jm&9Zd}PmVi}$^ySiS`xoY&-DubKVAjX`^g6s^*8@>efXbnxoEir zvlW9r;Aa~@{S-k=M<2%n1d3}Nu6Mir9A5q_{EDq

              yF^%Q%lvewRWaC;KO4GlBgK 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%0D^Zct=%^LY9nebnMJxgzZ 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/gjTJ%09NSdkzw&+my4o5BIqZF-^v*x| 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 X0`uqdfAyce1Xq2n4fEj6-v9pq@(;NX literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem.build_complete b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem.build_complete new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem_make.out b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem_make.out new file mode 100644 index 0000000000..19edaad067 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem_make.out @@ -0,0 +1,50 @@ +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c +/home/travis/.rvm/rubies/ruby-2.5.3/bin/ruby -r ./siteconf20200317-4716-170j9pm.rb extconf.rb +checking for ffi_call() in -lffi... yes +checking for ffi_closure_alloc()... yes +checking for ffi_raw_call()... yes +checking for ffi_prep_raw_closure()... yes +checking for shlwapi.h... no +checking for ruby/thread.h... yes +checking for rb_thread_blocking_region()... no +checking for rb_thread_call_with_gvl()... yes +checking for rb_thread_call_without_gvl()... yes +checking for ffi_prep_cif_var()... yes +creating extconf.h +creating Makefile + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c +make "DESTDIR=" clean + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c +make "DESTDIR=" +compiling AbstractMemory.c +compiling ArrayType.c +compiling Buffer.c +compiling Call.c +compiling ClosurePool.c +compiling DataConverter.c +compiling DynamicLibrary.c +compiling Function.c +compiling FunctionInfo.c +compiling LastError.c +compiling LongDouble.c +compiling MappedType.c +compiling MemoryPointer.c +compiling MethodHandle.c +compiling Platform.c +compiling Pointer.c +compiling Struct.c +compiling StructByReference.c +compiling StructByValue.c +compiling StructLayout.c +compiling Thread.c +compiling Type.c +compiling Types.c +compiling Variadic.c +compiling ffi.c +linking shared-object ffi_c.so + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c +make "DESTDIR=" install +/usr/bin/install -m 0755 ffi_c.so ./.gem.20200317-4716-whh5hw diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/mkmf.log b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/mkmf.log new file mode 100644 index 0000000000..a11388e3d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/mkmf.log @@ -0,0 +1,462 @@ +"pkg-config --exists libffi" +| pkg-config --libs libffi +=> "-lffi\n" +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ +1: #include "ruby.h" +2: +3: int main(int argc, char **argv) +4: { +5: return 0; +6: } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ +1: #include "ruby.h" +2: +3: int main(int argc, char **argv) +4: { +5: return 0; +6: } +/* end */ + +| pkg-config --cflags-only-I libffi +=> "\n" +| pkg-config --cflags-only-other libffi +=> "\n" +| pkg-config --libs-only-l libffi +=> "-lffi\n" +package configuration for libffi +cflags: +ldflags: +libs: -lffi + +have_library: checking for ffi_call() in -lffi... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: #include + 4: + 5: /*top*/ + 6: extern int t(void); + 7: int main(int argc, char **argv) + 8: { + 9: if (argc > 1000000) { +10: printf("%p", &t); +11: } +12: +13: return 0; +14: } +15: int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_call; return !p; } +/* end */ + +-------------------- + +have_func: checking for ffi_closure_alloc()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘ffi_closure_alloc’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_closure_alloc; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_closure_alloc; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void ffi_closure_alloc(); +14: int t(void) { ffi_closure_alloc(); return 0; } +/* end */ + +-------------------- + +have_func: checking for ffi_raw_call()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘ffi_raw_call’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_raw_call; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_raw_call; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void ffi_raw_call(); +14: int t(void) { ffi_raw_call(); return 0; } +/* end */ + +-------------------- + +have_func: checking for ffi_prep_raw_closure()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘ffi_prep_raw_closure’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_prep_raw_closure; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_prep_raw_closure; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void ffi_prep_raw_closure(); +14: int t(void) { ffi_prep_raw_closure(); return 0; } +/* end */ + +-------------------- + +have_header: checking for shlwapi.h... -------------------- no + +"gcc -E -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -o conftest.i" +conftest.c:3:21: fatal error: shlwapi.h: No such file or directory +compilation terminated. +checked program was: +/* begin */ +1: #include "ruby.h" +2: +3: #include +/* end */ + +-------------------- + +have_header: checking for ruby/thread.h... -------------------- yes + +"gcc -E -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -o conftest.i" +checked program was: +/* begin */ +1: #include "ruby.h" +2: +3: #include +/* end */ + +-------------------- + +have_func: checking for rb_thread_blocking_region()... -------------------- no + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘rb_thread_blocking_region’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +/tmp/ccsNpPDJ.o: In function `t': +/home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/conftest.c:14: undefined reference to `rb_thread_blocking_region' +collect2: error: ld returned 1 exit status +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void rb_thread_blocking_region(); +14: int t(void) { rb_thread_blocking_region(); return 0; } +/* end */ + +-------------------- + +have_func: checking for rb_thread_call_with_gvl()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘rb_thread_call_with_gvl’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_with_gvl; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_with_gvl; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void rb_thread_call_with_gvl(); +14: int t(void) { rb_thread_call_with_gvl(); return 0; } +/* end */ + +-------------------- + +have_func: checking for rb_thread_call_without_gvl()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘rb_thread_call_without_gvl’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_without_gvl; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_thread_call_without_gvl; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void rb_thread_call_without_gvl(); +14: int t(void) { rb_thread_call_without_gvl(); return 0; } +/* end */ + +-------------------- + +have_func: checking for ffi_prep_cif_var()... -------------------- yes + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +conftest.c: In function ‘t’: +conftest.c:13:57: error: ‘ffi_prep_cif_var’ undeclared (first use in this function) + int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_prep_cif_var; return !p; } + ^ +conftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in +conftest.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: int t(void) { void ((*volatile p)()); p = (void ((*)()))ffi_prep_cif_var; return !p; } +/* end */ + +"gcc -o conftest -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/ruby/backward -I/home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 -I. -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized -fPIC conftest.c -L. -L/home/travis/.rvm/rubies/ruby-2.5.3/lib -Wl,-rpath,/home/travis/.rvm/rubies/ruby-2.5.3/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic -lffi -lffi -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lffi -lffi -lpthread -ldl -lcrypt -lm -lc" +checked program was: +/* begin */ + 1: #include "ruby.h" + 2: + 3: /*top*/ + 4: extern int t(void); + 5: int main(int argc, char **argv) + 6: { + 7: if (argc > 1000000) { + 8: printf("%p", &t); + 9: } +10: +11: return 0; +12: } +13: extern void ffi_prep_cif_var(); +14: int t(void) { ffi_prep_cif_var(); return 0; } +/* end */ + +-------------------- + +extconf.h is: +/* begin */ + 1: #ifndef EXTCONF_H + 2: #define EXTCONF_H + 3: #define HAVE_FFI_CLOSURE_ALLOC 1 + 4: #define HAVE_FFI_RAW_CALL 1 + 5: #define HAVE_FFI_PREP_RAW_CLOSURE 1 + 6: #define HAVE_RAW_API 1 + 7: #define HAVE_RUBY_THREAD_H 1 + 8: #define HAVE_RB_THREAD_CALL_WITH_GVL 1 + 9: #define HAVE_RB_THREAD_CALL_WITHOUT_GVL 1 +10: #define HAVE_FFI_PREP_CIF_VAR 1 +11: #define RUBY_1_9 1 +12: #endif +/* end */ + diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem.build_complete b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem.build_complete new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem_make.out b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem_make.out new file mode 100644 index 0000000000..7256fbcf1e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/gem_make.out @@ -0,0 +1,52 @@ +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser +/home/travis/.rvm/rubies/ruby-2.5.3/bin/ruby -r ./siteconf20200317-4716-mf96da.rb extconf.rb +creating Makefile + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser +make "DESTDIR=" clean + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser +make "DESTDIR=" +compiling ruby_http_parser.c +ruby_http_parser.c: In function ‘on_message_begin’: +ruby_http_parser.c:108:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + VALUE ret = Qnil; + ^ +ruby_http_parser.c: In function ‘on_header_value’: +ruby_http_parser.c:146:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + int new_field = 0; + ^ +ruby_http_parser.c: In function ‘on_headers_complete’: +ruby_http_parser.c:192:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + VALUE ret = Qnil; + ^ +ruby_http_parser.c: In function ‘on_body’: +ruby_http_parser.c:213:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + VALUE ret = Qnil; + ^ +ruby_http_parser.c: In function ‘on_message_complete’: +ruby_http_parser.c:232:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + VALUE ret = Qnil; + ^ +ruby_http_parser.c: In function ‘Parser_execute’: +ruby_http_parser.c:314:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + char *ptr = RSTRING_PTR(data); + ^ +ruby_http_parser.c:320:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + size_t nparsed = ryah_http_parser_execute(&wrapper->parser, &settings, ptr, len); + ^ +ruby_http_parser.c: In function ‘Parser_set_header_value_type’: +ruby_http_parser.c:451:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + ParserWrapper *wrapper = NULL; + ^ +ruby_http_parser.c: At top level: +cc1: warning: unrecognized command line option ‘-Wno-self-assign’ +cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ +cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ +cc1: warning: unrecognized command line option ‘-Wno-tautological-compare’ +compiling ryah_http_parser.c +linking shared-object ruby_http_parser.so + +current directory: /home/travis/build/roedoejet/mothertongues-blog/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser +make "DESTDIR=" install +/usr/bin/install -m 0755 ruby_http_parser.so ./.gem.20200317-4716-1phtufi diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/ruby_http_parser.so b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/http_parser.rb-0.6.0/ruby_http_parser.so new file mode 100755 index 0000000000000000000000000000000000000000..03cf601fc7c325c87bece9bda22eec6ffec64e01 GIT binary patch literal 118776 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

              )8gWW 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/CHANGELOG.md new file mode 100644 index 0000000000..90531e1f1f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/CHANGELOG.md @@ -0,0 +1,227 @@ +# Addressable 2.6.0 +- added `tld=` method to allow assignment to the public suffix +- most `heuristic_parse` patterns are now case-insensitive +- `heuristic_parse` handles more `file://` URI variations +- fixes bug in `heuristic_parse` when uri starts with digit +- fixes bug in `request_uri=` with query strings +- fixes template issues with `nil` and `?` operator +- `frozen_string_literal` pragmas added +- minor performance improvements in regexps +- fixes to eliminate warnings + +# Addressable 2.5.2 +- better support for frozen string literals +- fixed bug w/ uppercase characters in scheme +- IDNA errors w/ emoji URLs +- compatibility w/ public_suffix 3.x + +# Addressable 2.5.1 +- allow unicode normalization to be disabled for URI Template expansion +- removed duplicate test + +# Addressable 2.5.0 +- dropping support for Ruby 1.9 +- adding support for Ruby 2.4 preview +- add support for public suffixes and tld; first runtime dependency +- hostname escaping should match RFC; underscores in hostnames no longer escaped +- paths beginning with // and missing an authority are now considered invalid +- validation now also takes place after setting a path +- handle backslashes in authority more like a browser for `heuristic_parse` +- unescaped backslashes in host now raise an `InvalidURIError` +- `merge!`, `join!`, `omit!` and `normalize!` don't disable deferred validation +- `heuristic_parse` now trims whitespace before parsing +- host parts longer than 63 bytes will be ignored and not passed to libidn +- normalized values always encoded as UTF-8 + +# Addressable 2.4.0 +- support for 1.8.x dropped +- double quotes in a host now raises an error +- newlines in host will no longer get unescaped during normalization +- stricter handling of bogus scheme values +- stricter handling of encoded port values +- calling `require 'addressable'` will now load both the URI and Template files +- assigning to the `hostname` component with an `IPAddr` object is now supported +- assigning to the `origin` component is now supported +- fixed minor bug where an exception would be thrown for a missing ACE suffix +- better partial expansion of URI templates + +# Addressable 2.3.8 +- fix warnings +- update dependency gems +- support for 1.8.x officially deprecated + +# Addressable 2.3.7 +- fix scenario in which invalid URIs don't get an exception until inspected +- handle hostnames with two adjacent periods correctly +- upgrade of RSpec + +# Addressable 2.3.6 +- normalization drops empty query string +- better handling in template extract for missing values +- template modifier for `'?'` now treated as optional +- fixed issue where character class parameters were modified +- templates can now be tested for equality +- added `:sorted` option to normalization of query strings +- fixed issue with normalization of hosts given in `'example.com.'` form + +# Addressable 2.3.5 +- added Addressable::URI#empty? method +- Addressable::URI#hostname methods now strip square brackets from IPv6 hosts +- compatibility with Net::HTTP in Ruby 2.0.0 +- Addressable::URI#route_from should always give relative URIs + +# Addressable 2.3.4 +- fixed issue with encoding altering its inputs +- query string normalization now leaves ';' characters alone +- FakeFS is detected before attempting to load unicode tables +- additional testing to ensure frozen objects don't cause problems + +# Addressable 2.3.3 +- fixed issue with converting common primitives during template expansion +- fixed port encoding issue +- removed a few warnings +- normalize should now ignore %2B in query strings +- the IDNA logic should now be handled by libidn in Ruby 1.9 +- no template match should now result in nil instead of an empty MatchData +- added license information to gemspec + +# Addressable 2.3.2 +- added Addressable::URI#default_port method +- fixed issue with Marshalling Unicode data on Windows +- improved heuristic parsing to better handle IPv4 addresses + +# Addressable 2.3.1 +- fixed missing unicode data file + +# Addressable 2.3.0 +- updated Addressable::Template to use RFC 6570, level 4 +- fixed compatibility problems with some versions of Ruby +- moved unicode tables into a data file for performance reasons +- removing support for multiple query value notations + +# Addressable 2.2.8 +- fixed issues with dot segment removal code +- form encoding can now handle multiple values per key +- updated development environment + +# Addressable 2.2.7 +- fixed issues related to Addressable::URI#query_values= +- the Addressable::URI.parse method is now polymorphic + +# Addressable 2.2.6 +- changed the way ambiguous paths are handled +- fixed bug with frozen URIs +- https supported in heuristic parsing + +# Addressable 2.2.5 +- 'parsing' a pre-parsed URI object is now a dup operation +- introduced conditional support for libidn +- fixed normalization issue on ampersands in query strings +- added additional tests around handling of query strings + +# Addressable 2.2.4 +- added origin support from draft-ietf-websec-origin-00 +- resolved issue with attempting to navigate below root +- fixed bug with string splitting in query strings + +# Addressable 2.2.3 +- added :flat_array notation for query strings + +# Addressable 2.2.2 +- fixed issue with percent escaping of '+' character in query strings + +# Addressable 2.2.1 +- added support for application/x-www-form-urlencoded. + +# Addressable 2.2.0 +- added site methods +- improved documentation + +# Addressable 2.1.2 +- added HTTP request URI methods +- better handling of Windows file paths +- validation_deferred boolean replaced with defer_validation block +- normalization of percent-encoded paths should now be correct +- fixed issue with constructing URIs with relative paths +- fixed warnings + +# Addressable 2.1.1 +- more type checking changes +- fixed issue with unicode normalization +- added method to find template defaults +- symbolic keys are now allowed in template mappings +- numeric values and symbolic values are now allowed in template mappings + +# Addressable 2.1.0 +- refactored URI template support out into its own class +- removed extract method due to being useless and unreliable +- removed Addressable::URI.expand_template +- removed Addressable::URI#extract_mapping +- added partial template expansion +- fixed minor bugs in the parse and heuristic_parse methods +- fixed incompatibility with Ruby 1.9.1 +- fixed bottleneck in Addressable::URI#hash and Addressable::URI#to_s +- fixed unicode normalization exception +- updated query_values methods to better handle subscript notation +- worked around issue with freezing URIs +- improved specs + +# Addressable 2.0.2 +- fixed issue with URI template expansion +- fixed issue with percent escaping characters 0-15 + +# Addressable 2.0.1 +- fixed issue with query string assignment +- fixed issue with improperly encoded components + +# Addressable 2.0.0 +- the initialize method now takes an options hash as its only parameter +- added query_values method to URI class +- completely replaced IDNA implementation with pure Ruby +- renamed Addressable::ADDRESSABLE_VERSION to Addressable::VERSION +- completely reworked the Rakefile +- changed the behavior of the port method significantly +- Addressable::URI.encode_segment, Addressable::URI.unencode_segment renamed +- documentation is now in YARD format +- more rigorous type checking +- to_str method implemented, implicit conversion to Strings now allowed +- Addressable::URI#omit method added, Addressable::URI#merge method replaced +- updated URI Template code to match v 03 of the draft spec +- added a bunch of new specifications + +# Addressable 1.0.4 +- switched to using RSpec's pending system for specs that rely on IDN +- fixed issue with creating URIs with paths that are not prefixed with '/' + +# Addressable 1.0.3 +- implemented a hash method + +# Addressable 1.0.2 +- fixed minor bug with the extract_mapping method + +# Addressable 1.0.1 +- fixed minor bug with the extract_mapping method + +# Addressable 1.0.0 +- heuristic parse method added +- parsing is slightly more strict +- replaced to_h with to_hash +- fixed routing methods +- improved specifications +- improved heckle rake task +- no surviving heckle mutations + +# Addressable 0.1.2 +- improved normalization +- fixed bug in joining algorithm +- updated specifications + +# Addressable 0.1.1 +- updated documentation +- added URI Template variable extraction + +# Addressable 0.1.0 +- initial release +- implementation based on RFC 3986, 3987 +- support for IRIs via libidn +- support for the URI Template draft spec diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Gemfile new file mode 100644 index 0000000000..9ca55cabf6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Gemfile @@ -0,0 +1,32 @@ +source 'https://rubygems.org' + +gemspec + +group :test do + gem 'rspec', '~> 3.5' + gem 'rspec-its', '~> 1.1' +end + +group :development do + gem 'launchy', '~> 2.4', '>= 2.4.3' + gem 'redcarpet', :platform => :mri_19 + gem 'yard' +end + +group :test, :development do + gem 'rake', '> 10.0', '< 12' + gem 'simplecov', :require => false + gem 'coveralls', :require => false, :platforms => [ + :ruby_20, :ruby_21, :ruby_22, :ruby_23 + ] + # Used to test compatibility. + gem 'rack-mount', git: 'https://github.com/sporkmonger/rack-mount.git', require: 'rack/mount' + + if RUBY_VERSION.start_with?('2.0', '2.1') + gem 'rack', '< 2', :require => false + else + gem 'rack', :require => false + end +end + +gem 'idn-ruby', :platform => [:mri_20, :mri_21, :mri_22, :mri_23, :mri_24] diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/LICENSE.txt new file mode 100644 index 0000000000..ef51da2b0e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/README.md b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/README.md new file mode 100644 index 0000000000..fa65c288f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/README.md @@ -0,0 +1,119 @@ +# Addressable + +

              + +[![Gem Version](http://img.shields.io/gem/dt/addressable.svg)][gem] +[![Build Status](https://secure.travis-ci.org/sporkmonger/addressable.svg?branch=master)][travis] +[![Test Coverage Status](https://img.shields.io/coveralls/sporkmonger/addressable.svg)][coveralls] +[![Documentation Coverage Status](http://inch-ci.org/github/sporkmonger/addressable.svg?branch=master)][inch] + +[gem]: https://rubygems.org/gems/addressable +[travis]: http://travis-ci.org/sporkmonger/addressable +[coveralls]: https://coveralls.io/r/sporkmonger/addressable +[inch]: http://inch-ci.org/github/sporkmonger/addressable + +# Description + +Addressable is a replacement for the URI implementation that is part of +Ruby's standard library. It more closely conforms to RFC 3986, RFC 3987, and +RFC 6570 (level 4), providing support for IRIs and URI templates. + +# Reference + +- {Addressable::URI} +- {Addressable::Template} + +# Example usage + +```ruby +require "addressable/uri" + +uri = Addressable::URI.parse("http://example.com/path/to/resource/") +uri.scheme +#=> "http" +uri.host +#=> "example.com" +uri.path +#=> "/path/to/resource/" + +uri = Addressable::URI.parse("http://www.詹姆斯.com/") +uri.normalize +#=> # +``` + + +# URI Templates + +For more details, see [RFC 6570](https://www.rfc-editor.org/rfc/rfc6570.txt). + + +```ruby + +require "addressable/template" + +template = Addressable::Template.new("http://example.com/{?query*}") +template.expand({ + "query" => { + 'foo' => 'bar', + 'color' => 'red' + } +}) +#=> # + +template = Addressable::Template.new("http://example.com/{?one,two,three}") +template.partial_expand({"one" => "1", "three" => 3}).pattern +#=> "http://example.com/?one=1{&two}&three=3" + +template = Addressable::Template.new( + "http://{host}{/segments*}/{?one,two,bogus}{#fragment}" +) +uri = Addressable::URI.parse( + "http://example.com/a/b/c/?one=1&two=2#foo" +) +template.extract(uri) +#=> +# { +# "host" => "example.com", +# "segments" => ["a", "b", "c"], +# "one" => "1", +# "two" => "2", +# "fragment" => "foo" +# } +``` + +# Install + +```console +$ gem install addressable +``` + +You may optionally turn on native IDN support by installing libidn and the +idn gem: + +```console +$ sudo apt-get install idn # Debian/Ubuntu +$ brew install libidn # OS X +$ gem install idn-ruby +``` + +# Semantic Versioning + +This project uses [Semantic Versioning](https://semver.org/). You can (and should) specify your +dependency using a pessimistic version constraint covering the major and minor +values: + +```ruby +spec.add_dependency 'addressable', '~> 2.5' +``` + +If you need a specific bug fix, you can also specify minimum tiny versions +without preventing updates to the latest minor release: + +```ruby +spec.add_dependency 'addressable', '~> 2.3', '>= 2.3.7' +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Rakefile new file mode 100644 index 0000000000..64b9deace5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/Rakefile @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'rubygems' +require 'rake' + +require File.join(File.dirname(__FILE__), 'lib', 'addressable', 'version') + +PKG_DISPLAY_NAME = 'Addressable' +PKG_NAME = PKG_DISPLAY_NAME.downcase +PKG_VERSION = Addressable::VERSION::STRING +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" + +RELEASE_NAME = "REL #{PKG_VERSION}" + +PKG_SUMMARY = "URI Implementation" +PKG_DESCRIPTION = <<-TEXT +Addressable is a replacement for the URI implementation that is part of +Ruby's standard library. It more closely conforms to the relevant RFCs and +adds support for IRIs and URI templates. +TEXT + +PKG_FILES = FileList[ + "lib/**/*", "spec/**/*", "vendor/**/*", "data/**/*", + "tasks/**/*", + "[A-Z]*", "Rakefile" +].exclude(/pkg/).exclude(/database\.yml/). + exclude(/Gemfile\.lock/).exclude(/[_\.]git$/) + +task :default => "spec" + +WINDOWS = (RUBY_PLATFORM =~ /mswin|win32|mingw|bccwin|cygwin/) rescue false +SUDO = WINDOWS ? '' : ('sudo' unless ENV['SUDOLESS']) + +Dir['tasks/**/*.rake'].each { |rake| load rake } diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/data/unicode.data b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/data/unicode.data new file mode 100644 index 0000000000000000000000000000000000000000..cdfc22418a51396f2b89cfc1afb2c892b30d7e3f GIT binary patch literal 115740 zcmZ_12b5J+^1cnNb^vqEBBEk$GAIU;(2|rW7|C36YN7#Xa?TmaIp^4*AS#FrX2sNG zvoqu5ncw`sxAxt;>fLwwttB&6Pd%s3Is5Dr?&(W&VdkK;(U&KleD2~zkwlT~?CeDQ z>_lzLI%Fs6Sk^H+kz-jRJMoldow5^kE$f_}sApN1>_mObx@IRDSk^5&(a^H)*@>qu z>ye#!#_Ytap z!Jm)G2wUDzxBPb)pO6u@yrFLSUtxSoM%a#q$t^c0IQ#urJ$?b|<* zf2m6})h+iCs{g{D6J&%fZ>n4VZx~;Z5w^UkZux&;d`(8!uBN(O|Aq058ZDB&F-v`f z>i^--w@Jfo`Tvj?>JqJV%YBq6`X+=oabA)Ww!KxdKTc^lZ{f@&Cv1JI?54saNfmPs!lr{4IkkIhw~oJQ*y#+va6ZJDt4?>_3m@U6hx1XQ==M$X2nx(Lbz;$2`)D|LJ%9iXJ4)rF>2 zJGxR^xd_Td;$37;D|LJ%9iUu@R_UhI(9!b|lnn7Q%xR;JkE8>XbhOGetw!=Nx<>i9@HKq-b+7n@e&=s0cVA}E)L zcZoS|)bWvYfO0WfU20lQ)qDiyGVv}mr>#0Zk`7QVMXSrbCbyroD}-L5M5+LnL%Y(t z)zYcuBPdsica=Hq)bWvYfN~{TU2R$|omxJEa*cS`nA1)jA4vx&SEJRnrq$As_Ysuq z#JkR%cIx;@IzYJ=t*$q%md;WiLAgP^8_a2^j*p}RlBP$omM&P2$~TPCIpc zBpsmKh*me7R$FJOkD%Nl-Yw>IP{&8o0m{v2b*pK$bx3^#tdGpB<(K9UYlZbhpS zrq$LV^%0cY#k<{{4(j+wIzTCbRwYfVt*$KR1N-N_HT!`G;kF>G@mzO4p5#)s~1gctmEJ#C@+ckk~zKA@sV_Z z@*-NjY+7R-2OmLcC0;9YdaL6j=>X+rv}$cy6J4W^ptKRMjX8bP@sV_Z(i*MWn$|?u z=p!iY#A|0xA9Z{r9iX&DtM*=VGr5D%4oaj7&>mVx>(*2s9ee~OAzs3qTy=aT9iVhX zt4^jh)f3-GP&$j(*_>Q;d?X#9bV92xrZv?Q-$zioir3YgTy=aT9iVhUt8S(>O};F` z#lc5Vx{KG{oLqH$Bpsl1L#rO9HPvf~kD&AvuctY=>i9@HKG@5tQEI z^)@G09Un;tD810Ck7>>I-0=~VT=88Fm5qyv;bXw}!W7OMFON=G4Kl5zKKS_v$}8f% zV$MKyd?X#948n%LYFbM@y?g}aHSu0EXP`Phk`7Q_MXT4nhMR4AZ}$M{ezui1ByhRe zHcrF;3}uoh%jYSPs#6ka!xRDx7dl*tQ~`!zy(1I?G?D%znT!%|loF{rC6P8-AwV-( za14{?LdG%~Crge~B2}j((k3Vb_(teNCM~4ZBqq-ZnapI0EHy=mRGpGYo2n4tWm#|< zlQu%8D@mmNT^9U1MrMXW0DN9Zq|Ic~QOGPNvt`NIN~G!({1i?hKzCViK9gQT7BI;b zvd|OvfHGGfRa}JfBI&-!obE@1<0I+d+9c8zbMqxamne}cz+&w3QiTA^gf3GeRe+_? zmMa7pEStK5$x887Dv_#F5^1Xx0_4epYniMQZ=DjUIwg^|ULn9JS#X0V?gAZlylHX> zP~Ip@ZZs!X2ggU!!L>=GZQ|x*r1@qhV})#CvQ?JcszjB?HyDO zxj+6ru&eHKS0F4R0+xS=mTh}TtEkAb?^-pZUie&m7=`!TA8njb&wn(27yPjFJxoh> z(IN`63x{kDz=c-bdziSI0-v0m_GH^|5J9 zRr3*)PsIDgoLqH$Bpsl9j8>njmUVDmcm~rD(r03RM%G@ld?;NYeTsIUlQ=KjqNSbt zK?tNT#QcJ+y=M7PxahyzuiIY3IJE z0O@Nnzb0$1Sw565kiJ5@Z@efs?g;`X0DenL53`~2A*Aob{En=pX8BOMK>8N#3Qc@( zxr!l#bW+TdWUVmEhtdU7A=;fX@!$v*LkQ`#n5W6Il^*n=bb)jV?ap}7eXKYu^sEx8 z0-S+%PWxrn4#y`%P|k~Y-kc8V_((cHIfqu?n^spfA3^y+ydTWztd5VQ1C;O4>POQW z>Jzn(p!_7>Pv&%2$4Alu%8zLEvuauIuGV18W&el_u(9bpf$ zLI~+MF@H1b$P~3gC|w}^igtfeF|$+fLgbFzpS^%b(~O!e{e9ziEcqAr$F9RQ2PSVD ze+K_u+W$^Vw$&mEvgBWFy|u$xj>8@<1%HzUe>10pIzEyPQ2vTme-G=Cb8WiNe=ylE zQ-wXB1~!)9p+=|5urhpc60`B1t*`Zu=z zza)+@(T9-!Pt5-#Yq?oIlrE6|i+2Abah8cbg!KQ!{C{NaG|Pw51=9b}u1H$)0K41e zL^;3~K`AOvFGbC1bu>6Wk`7Rc;1N2_v}#8uYbzH)xj?)N%xR^LkE8>XG_<T=T>=^A|m3lU^bwS+ z#JkFzUh4QrIzYJ+t*$n$sjksSP_7a08gp{h@sV_Zay43AYg$uXqmQ6mC*F1DX+gw7TB3#z&X?6URqTZV>MVb9$@eBk2I;dbGOHv?i+g2+B?3-DFN5b$lcppxlU7 zH+#+9ByJIUixQ~<+zjnj>sCkaFFt~Dn|QaG(@`BCNe3vmqE$)l4{(RjJCsNjpd_?X z3IXmEdZ!Yp0+fPwmxu0p7QRYRE%~|!%H87KZB8qF5#%H30Oc;UDs5UVeP!z-DEEkW zk2&qs@sV_ZQW~x9RW0k_41Ej;A*B1nypOEyX8BOMK)M(0?k91&i9Uq%fS3=EwaqLa zN*74?quqll;)f<-%zOmpA@LqEr@J~nk`7QFM5}Dovff*->kJ{JGGdk?YlB%nlrE66 z(XOnDcy;K$g@ohkBPiv>D`(CCb$lcppp-?c#$J=Bi6L?y9D@5`6M`cIjsR>%aJ0bD zfXxYx5jY001;L2|Cjvf4aFW1DfG-oADsU=b8-mjWP6O;naHhbSfavP~UWUBF0-OQZ zo!~ry^8kAhoG)-bU@pN00v7-dCb(SSa=<)-s|2nB97S-w!1aJ*2yPO%32-dI%>p+A zP9eBM;10lz0pitYN4fa93(h8^8He39(c#U8)7>Y3N4F5|r7gA^%{aVE@ixYL6mKVd zB>9vo6J&?s^nNPuBsxIp7e?__{N(rBq{o*Lcc+!x>=O|mqkX=Lc=F3_(&y`lyYDu- zKHo&#{nXR(LgN{SmuUNwhSR$!Jw?>Lp>{1!6Ya0=8KW6TrYkOT0p@1WbM7w<$@Uga z$Fk9{F0RX(vG9P{EC$P%9Q-7 zl>F+H{2G^kuj6^G%fHtAx|IC-l>CO2{6?2sznfhCh4#BS#lIybzcnSlEhR6JlHcy~ zBig@YN`6O*Un(WPGbO((CBNI{*1vR0eou;jZ%Te&N`8Mz{y<9pU`qZ_N}ipPmr2RX zrsU;P^74|W>u^t|E z=T9;Q_`!|*b*b4G;EOgXYpU&X8>u=ec}`0HRLb&oQ}TK#dHs~-8>HkfyZlEzQms<* z)-L}+>wP3Il8}Ku;%;ghxSbxDEEkb)^_2KvxL%uI)5X#sNe*Z7|J_2vcp*9}!#&3! zA6Th_974C~2vZ6ss}e$t`C1wHk-GMb>W>m4d+cl*!vdmN7XbWI2;}gsfolu8@^X z-V?Hl$zdU@J;CWwFgtv+K|=^f#9BkvGP8UL;eD~zlC?>vM}ZIVaYUpMxPGl8ahr)g zlyeEf|oDlV!QdSZ=dl zPEPeH0;d3OAvjgwRKTqSrwN<}xQ*a+fztuE6PzJ%2H*~YGX>5B+(~ejz*&I12n80OJN=&xJ=+Oz;_5P7q}eoU4knFt^jlN4;0TPRKD54pHAS=71q5f_)~9rI{8EEGe0-P6mUWrrz&O!TLA;1qpe^4S-fbXIGs1V>Mp+6~+D!`A>epU$Z zi_l+`NEP5`Xum21_)X|d#a>=H|LwC$OYkEdIhp_gB*7 zdV!)`G>Tl9yj<}EiZ8wt69mYb?G{J0Mx zG#2YZUapCdioVSkmxNr-BwNT8Ov(tkl1W)1 zS1~CkNtpUISQ>;I#s;1*}ByI)T>#Rwj78!0Q34 zcqr3tr%g8>%5;Qy1H^}E=^F*!2>1xWn*`njSe4+-0&fO;~ zZ31rte1c#Jfh7Q|5xiaC?SRz@mK0bLum-_91l|EylVB-;@o(8c9#AhN=Z(G}vcMG|#K`aWf5v?XoU>aa!T6&9J z@_i^bH;5NNY(h(4DDXnSrUWk%coASTg6RU&0h`-;KAfR9vJlFR4q^txXKCq7fti3U z2xbY)0&GdJn80Fy&k-yxusGoJ9?Dqmww?5$-1i_}4DkgLciN!)P;Pw?FM;@?i67?a zNf|=9`$4=E;!CtWmkGQK@MVPnt%SBxB2|Ewp|w^B&_-w*B~k@w4Xv$0fObOLDUm8b zTWIYS0(21CL5WlW+C%H85FjBmp+u?x9ieqn2+&z*XC+bv=mf2cLV&J9yDE_?Ko@A; z6asV?+FglM0lGo!p%9>_(4I=93eW>uFNFZTh4xk=Re)a5`X~g*6`HF=ssMeU_4N>w z=fkbxn-UsA>L+GDvbLG!L+JvkFWU9jbpQ+yIzWk30s2E5s1RU~&_PP13NR4bD+&Q# z75b_YsRFzL?KOn}uM2%$iBthzgEm+pz!0HBlt>j|Ftj{@^aHSADf#e}d_+nI{1Za~K0!$VzhmO@*u5MYJS6-uNEupHV-g#fFBu2LdZfR)fzD+E|0bd3_J0<4C%Rw2MTq3e`L z6<{s2^$Gzt2;HDWssQVuZBz)bN$4geQU%xuZL>mvEkd^_kt)DuXj>HmY!kXoiBti$ zLfftoV298hN~8*~9okNX0K0_lQX*A=ozQkG1lS{Vj}oZ@?1r{iAwa&+d?iu^*b8l+ zLV*23_bZVqz&>bic_=sG8G6eMA*2Ih9w2MGSw565klsSOgSrlYw}rl~M5+J>p}ngR z;60)5DUm9`yU^ZO2yj&BQ6*9Zcputv4`m-F+1B|G(uZPxNY+NPd?;NY9Y?#5NSve( zMd%#fID9PT$7F3Z%ZJhh(no0bi5HV^%!GcbM5+LvK>LjPO}EYSA*9d6{G6<9X8BOM zK>7^rzR-05d@1xxB~k_W0@?}d_wg*_h1S=>*z+Z6ccPP2R{T_Bx8yE7!(5Tjj~PG`kDOV&=?2_H%qNN3RQ9Eoq3 z=tD^7#XL{eKC^r%T_Bx9yYIc|#^eW~KPZtZ!1vI8w0VhADqBIYkV#~f)zsP z0_iVk_g52-uh8{|5Ypeo{F_-Hj#Mjz(go6A(e9rn9$%wk2qFDT%zv5n;aIgoC|w}^ z6Ya`eL{E{eE&?sfq_vQ8Oxg%3&!nx83QXDwsmP?gkV;HC2&v4ZqmU|05<(tk(n-i8 zOgamx%A|{sN11dL@)(nDLLO(*UC0wmdI+h;q^FSTOnM2a!KAm4noRl#sl_B$$dgR^ z3aQPcpO89C`U}ZnGC;^vOa=<6%Vdy{dQ4ssQlH7ILK-l6O-Mr~uM2sa$zUPRFc~7G z5tE@p8Z*fg(uBz{Ax)VK7t)N$2qCSM$h-w8a}hqf6D%vREMOag0rTrvL{LtShiC;41{{ z39JYBD#7{!>jS<mV1iEzd>U{F!Dj?M12~jmBY}+o^9VK;*cfma z!6pKm01hYERA5uU5d@nFYz8wQ+Fj)%p^}Z=Cx3B9>P06RFr{r^7{%s3&9e|}2-MoPXQC1045FG|UmxZKvaG$mh_ zk}prmSES@CU2fyKDkWc?;;%`muT9C9v~fl=M1HcS(A^rh6p4LDRjG-l%E5q&I20U(%a3 zeM{0?G(8~ct(v|qDZMx=nT{MU!Z7c@Sn=gl|HX$8x>MkeNSS7e3!PHRlrKkp8I%w@ zFEn(<$p@4|D2NllHy;Hf$_RW=R&rmG<;=T zZkty&rCu&2FQ4L9NU2v$$t$J!l~eL6Dfz=G%RiD*ubPrSn&Ll}Qhz+9{zOV%EhVp> zvV4t{dd-x2t(5wcDfQYZ^*Sl_oRs=gDfvBF$#XZSWbwkKD+`zIO7|-JBPmUxMlQE0)HtQyBqe`V@*;_Jw@cG`BSPZV z+JdzitcApBEm@n%T1cGs9BcDf3yIU7XKfK{A#vIZtSx3OBu;ygwKc4T#Az?Fwt=;f zIBl~! z!QV8ZaFY(cCT^+vqS;bSC2gVC(`J&stm&K7bMyYfE&gG(c%de)=ewkB89|yRPJ1s! z(=8OuB~Ck%qPdTtaxoFjK99c7+8ADGNL;rMM6>;U>Jp@Wif$WGxK)poCT^*^tc_$X zBu=Zx+K9q!Iz7-WnK-S!XtoVU;`9VH*)h9thx<#pvcHsbcmAb@f3fpCuGPbFdL&NYkJGOu4J+Nfrf~Oc z-SKZyON+F0@nyPHX5n7nU2%A$kyd zxqPVRy_0S5cQT6?=5H#@cXK03T$?^_v0=JcZpvcr!(&*?K1udXYVKyTZ*$>3_xBk@ z)5LY}m(=7#ZL%~(XGDMQu!TE>#B~@DbwJ5F43tt)+v7ng`70^;t10>5lzfQfMG|4e zY@aZE$;55ZP`8-9j>=2Phe>WH_=uG9$dr7lx#JR6@JyzJ!Q^?ssT;ufnU z8iojoe9oyNsSWQ(*G1{7>yZ|r_Megou_yv^9k}C)iniaj({f|1W)bSC%yedkO zTk$B=CoGFN74aG8d_awTJ@t#{8sr0%0=Q`WKL^!d?X#9T!>cb zrd2<>Nn5!HN``nD=CoGFN74aGI$C9_mUVEXe*ZLtkg~+gB5Q?NK9nwyGSRM>ikUTa zEPMo|xOm0QX{(Npqyv;%gXDM1mzC#?l7mLIzEyPP)edz zDbwocx#lA%cZzqXIUUvUk#vAk3a#!ktxotJMW&CS+%4YS=5$oYN74bxU1(L>v^sjO z`3TBA;@x9TM|FH89iWs(t9wnWbJX9LuvIRCa-VqjnbT1nA4vx&_oCJPrse1q^bwQ? z#CyP;ggQQw4p8n#s|QufIyliTy*`BWkeCmVwZSYON*72EqFuI%nRSB~A}D3VD`QS) zb$lcppk$*}S<~w3!S)f9a^jUUr?Wafk`7SHqE&g*>gvVUM^Gw=SHYal>i9@HKq-$_ z6-}$BYxEJ6O5#;Ar;9p1k`7QRqE%(pik;l4zXZ-=XjR0m!rqQ>Hp26IzEyPP->#plcqJ$HTnojZSiWG(@h;8Ne3uTqE#K! z8t8%c5tJP9a?I(bj*p}RlsahjlxYq0K>G+vUGeIg(@h;8Ne3uTp;bNAvJTp>f(ap{ z`eN26%YF&QLH#8d^+c+Nb`41Me_t6ti9|d1WkE;{#cW8H|Lb95>E9GFs-xDE9? z1f{8XP0i_{j*p}RlqP7^%(SOO>3kx+ec8I6Yn{5da2_h=>VlAT0O5?v6H*z*i|#c&|VPt1@`8W=VR#v z?Rm6(QPs>wdb0Qk%1h$CWKJ)2d?X#9yogpWo7Pyz!$(kBiPy@U-s<>BIzV|Dty-Jb zSjWRhP}+#s#+=^j_((cHX^mEGRm(awC#+IKNbSUIN7h`kd?;NYwMD!3BrY`3hmbmm z*@3J@X8BOMKx&V69aY2;T^vk{p(Vsku(yOfA4?}_9nrFrs+moK7$PX0#p`TNA9Z{r z9iVhVt1hNB(INH`l&<1+HK&g{K9UYlx}a4z)0*fU@)4Bo;&nHtk2*e*4p6$GRS(me z=tbE_P48?gOlx{{ssC)`BPhMa>upZ1IzEyPP%;X5ba)3F|(Qe!)!i+@~U{R zn$uSuA4vx&ub|ayrZv-P=p!hvi}$)Yebw=ibb#_2S`9X>dAJc~`UuJp@rIbwPaPjg z2PlKlYN%<=^~U8RD0$-LnbS`lA4vx&L(yuOY0bmPW2?d=!Eo`0o6}DnA4vx&!_aDk zY0dTQ_Ystl;*B(?pE^F04p2s*)hN@N>yY{g%4qRMo6}DnA4vx&qtI%MY0v5!eFSB! zcw^1!ua1wT1C%jnHO{nWbsT&IWxROf&FQa>kE8>XacDKcv=+KXA3>QY-b8Z-sN*B) z0A&JNO){;e{>yVdf-+gW$>t1H$4Alu$|SU!Vp>ZbQXfH?D&ACc2CCyD=>TO4T1_*p zrCxM>1ZBE-)6E&Ej*p}Rlxb)+!?cd7`N+MKo@qiK9djQ!VU`K~^dBi7tM&sLO$ z7>~uKRXaM`-(7qJWr=u8%xR^LkE8>X#b~uuwXB0f!&O2}x01x6VK1be+i6Iv#9T$zVzYcGT_CMQyVWEP z4cB~Wm*-#Str2q#S&Pl`p>%{nhXd`LC0!tGMZ4`PxoS^%0a^;_Wi0ojN{}4p4TY)o#;jg+W2nFmiju z+ha~Ub$lcppzKDgy{6R)1AaICK9UYl_M+83)v^xS?_mugr2S&EE|B)2-J2wi(V2vHVZOa3=38W~Hp_?71=5>ncYwq(VL)UAn;^B`HP&GMmi zfph@v-X?KO7!+w2M(&W9hsauOmJg*1q_@%T9ThQmcG79>V`%S+`!0LC$n&vug7ywt zzNcztPS}$WK{+hmVRI7d_((cHc@M3Qn3ki{(nnC<7w>&@66*L!IzTysR!2>1sG5(U zd?4Nj=5$xbN74bxQM4*Bt)XtbkDweA@0dB=)$x&ZfKq@~$5qQZIL#)d40>cJCTpu%K9nwyK0>=sNSqe-LN+u^-A~2*l&r00`B1t* z`ULGhBXOEdN*_Y{T+GkO+G>^$r3<9b(C!Nri=Esv&ZcCDp?xXtm+Xxv&&SdU+81bf zLe;Ey7V1EU5Yks-enr+IvwSFBAe}(FuSr~}1C4g!O7e}E-;lM)EFVf2NMEDfw07ibByph*G}?tL$w@I!lC{VzA4(TUg=lw*#D(GPkzsVV z97w0dJWbXjvwSFBAe}{fPOdsWk`7SLpw&6knuY;Et1xQk z#XE0Kt~x%F4p7da)%U7py<|=1*j8 zG|Pw51=5db_cMtb!d}RRhF$$d%wNdbXqFG93#6aX?pG2w*rE3!q~FB+jjWAk`B1t* z`W5Z|MB;{UxMb_X1o^X=e=_POaa?``w%Y>i9@H zK=}(={nfMi9@HK=~_L{oS+{VQkSV9Dsj__YZRhsN*B)0Ojv! z^-t4UgmFcyJpY*gFY*3m&H#0MBpsmq6RnEe7QUR6h2K9O{_oLezM4}GgwlE)W5b*|xSE`7upF|_$V|+zN)El8*#p+~IeT*;shh-E-6->9i_aUUq#k?W1bl0cr%(+6W8`Z+9^fwe+ z4CPAkZenjX?X-`fTqWMk?CC#7>iUJ5bG3N4u&4hh2R!>%Ij#|}gnC&8J8WNli0{dW zR2qYFdnD@a?g&Tv9ue<>SW-o-O`obP#usKpy%*{otm>l`RDHI(Pt^OMmSR;O{ajan z<+)$f`=Q>+sy_d@u3mjW)CZv6#p*&jAAF3j(1`jV)Vo<-M5>SRl^jtYf?8VDtb&;~ zrapvJLd<(2O9ynO&Y#=Gx>qgiz)G4IK88|Ky!+T&MV^nL+#%lm?CH-`T<_J5cZ-*;p8Nv_de!zJzEdMoWejqeNYvrm z73O0V5vxEft0J~uAI~htmup0Q7-~6IH_;&a7+=*9^%1D$S=DDq*VRw5s-jkfT7gyl zhen|4zcliwsEM9mHnNLqWW$yYE4$@$qZfne5@yGJ*c%qD)hYF5Dl+j}2EdP2;c$kJV3pfjhMSWl^i{ibKA5JRahUS0O+87kkNp=yX%k3D*Z zLccI`YKm8%J$i;hzu?sp?`ieqA1w(-I)v`WFwaCv*ik4h#CK|>PYaA&BNef)^t2OV z*R3&2^qiBg&pFRYzvs}e39Iy+gMP_2q8U_+>`Jr2ctsII3b4DIJt$9=QduRdf|m5 z)-<_h_GklVCu8($F5b(wb;m~Ak@X?IcOp_p>_)3d)Z;rk9N&b935cy##8%NWPKfaZ z6j3`tZNn-(#IOKY(3C?E#HX@Y;#jjXiqC$+u^m_TqJCkDhVz?HQ+o zcsOsu%GH#9Zp;zdN5%-~znz7wLUSeW{y11jvJ( z-?kGXo`Beox@`!1>H@sZ73nKT{i)l2+cqEKO^S&BggC&u9UJGnB?G*X5$Ru$23j{< z!NXAqAzs*t_#?zY)NOp|<^sI>6X_>NuTVF=X=UMZ&cn2&+R#^)bG|BI;R3GEZ zETWEuI*ip}r1}`&L=kly)ZwfSC)LOJUW=&Xp^jj61gSp8mr_KX0Cgm*BT4l!zTzV4 zM5v=!9Yv~-p$!&yG<&1T^D&em;*DW%40%3=GE}^=?2RSQ$58Ub8^_)_@_Y@6hE$M_ZUqRqlkPiA!ysXoT9pBHsD z)G4ekCe_FIjq{?;fjX7dC8YWozpY->xlpIEx|CEO;}_J6IuGh}R+o|LWBhV^QRhRQ z!Rm5SeT?5{FX|gmXR^A2R3GDa;fuNe>MT}QlImk6PZLNBEd6y=)4+t4gtx`$vTJS?spyJ(c9=Dtg#_h!ypcjXIpP z++lOy50_6r;fvzE#W+HJW?CN~Lg*vb`_#w%cvt$k0L9$o?%Uy?8MYa(?2{p^gJON4 zYr~Azj~y1fT`Pzs_wi9)Szv+WM@bpSW04dFQY0G5<0{GLBt1`jh_AuOHhqBu_hBUJ zsj@3vGQJe?ONbwth=2P$40{OO=6{@2+?Y=aQ`rTs{F!wq(08TSJlgEfO*u9u>{?a` zU6(IR!E0#UGaq7Ok0-a-4$5r10{9Tthhm+GdWC&L+i(TwE7n&@%k7r`wNe=cEiW>$08x%4MT;TTZ40RZyZ*q?L&?#plCA`Lg z;zE2GMYiT=Y|S|mhler1uF?>kCuOWDK6I=5-jsr6I!YnLstS{PZxdyiO%xx(Iw{tV zQ7@e+%XFd)6ziv?<%TGHC@*jUii47SXKPzzZ#aDj>#SJ6*xC;0i!5Bd>1g~)tMbpO z83oCQBso~WX*vDnX6H(e}97?+sThi=FhlN_hPc91Rm`|CJ5>FAmmUNt|G! z4_&XnlQP;4mJgls4^=SN>E<6|C;d|;`8k3f1s`I2`pZWBD`~l-5MJ99xB$fgV*H!> z=nFu30hyfb@)`!#f2fcDHE|gQ$zKsC?_Xg2m;30h7ueJ4?_&L*^*ONBUlo&q+o}Kg zCduc5knzMKcrU}#qQhPs?b8oF{ui=P_28UJbj@>aSuS>kF%t75@z_)izCWF;&pC9YPrYR2ui>q3ti#q7{_(C0bEwKcbbC_9t3d=>Vctlnx|%pVC1_ zGf$10qWl%(>5nRXm1t?DuMxdR>FY$hDIHAI#%Bo8GU^T`T2^Tu(Q-PSi$t z1W_B|kwk5TM-jCV9!=Cncnnb+;ju=e5guopMtD3?8{r8=ZG=}E&1lqHhvK+k`pwfH zrsN+{$-q=h|{l97XCUVKbevjx!qmAY+Be%S9t@Ly=}Yy@uKs7|lGe(fCEg+dR}={q%_ED$g*U@s3?YvkasCld2app58%e zaiVpUUi^pjl0T%E678rRE;E|(w)^F1?oM^N;q)ApulPfHCDD57UPZKv(rbt|PvvAa!6 zs#J(7&rwB|vAfRmRFN&P$_rGHZdQ4bDwU$jOIFE}_2_`UYz2Rbz+1c9G3#1cAtNVw z@xa?UskF9AW{#G6NvVyMGIE-^mEh;yQfX_I^ib#{g?3iRXcpF!E0y+E$!wMav?GOXRH*4U>@_KLr$X|a!>^f;LJuk=WC?tqL-@7M zioL9unF!U^Qf-ZDZ>we``X>9fkzyMZ`&cpE*V;<0Eo!+|%joOZ*-nb>Q0!~P%)Vir z?WNit)qYmZLe($aLCPIa?r-IcME~R_b(CU96bD!_-PaOQOQ1H;Y8m}~*G^LGgyJA8 zX7&&3>@3yJsJ>#=ba!);gNj-g)Lx}po8;znm0DNSUZYyuWUZUjx}o+u)w(8Y-KEwY zwK=|q7m}w&Ogg$#${f3U_FR^xkmO@0t!HT(Nj`Sc2PBQ8)rHte1uRjgk=*GROSDZR zd7CaQnVgTZN2Bs=n?meXm&MX3l6>r>i&+{=l8>EKilrqa`PfN!v9ydNA3N!OFX1_} z_^DBA@ShwQS9-uomnKVGeaNavJ z=x)MeD)`6=JygK@mj=aRC-r2B4*qC9_`PfNo zSz1hzkDauRrIjT4*h%YIT1AqNowR|aH6;1iNrfbhrV}#6PCCg_zI7VyV<(*=Y0PAk zLhPi|EYbCJ3|~)wWQk_x7@nCwu|zX-4A0D;S=vh54?qy-L3NCWO%cb>XvO-1~d+9%#a9P7+2$wTFmT-B);|NzUJf3hx!xIQsGCYxRWy6yQS1~-< zaAuio<5QT^eokdhJ35Uy?df#pw5v0i)4tARPCGk`IqmIi=Cr$WnA85wC0>^HcOLQ5 zt!$#tXWrWQ8_e4nU%2rPm-s>o`>F7hFMKJ5 zH>u#>{eqp4!dp}bZ;!r`!T~CTcR^oE;UEsNa1}dH1mbCQaDP5 z=Du)F3LjA6SzkCWg#s$H@P+TCaEuDc_xJdgjuehlp_MFwFIEcQUP>mOJ({*o)^FcA@qO)!h4dnW(7kM(tCowNI{ZkJR>{_8HaOkB?-! zqP7>c&#C5q1SB&SwS3gRpjsl?bDz}qq4p)!IwfoSrM4fn6IAP*ti36Uw0jl+5yzQp<1_O&x2Ash}ySQb3adzX^h(2sC`GZ9?9hnN$n77g;eXA zti2<(cThV?wO+~EyHa}>wNq5=jLtl_VZ1EkK7{>F{D*z^&ny;s$ow-qli%f$@4*y}_)6`Q7V+)MFNpYlb%y$o0o*waW$}=LqPSm&`Ix!tU&VavF6CDjH#BE;P%zUDI|KP^|mWVIW{%;(wsFTs3? z9k1J&FSYF~8S&&7TIGDXBjPsBr6O)Wr@xc=vMsuucQIc#N%`H(*V}w3&3uC$uX~tp zoTz>7jrd~a_eI?L+|PW|di5WO_$K8KGT&kI^Pz~_d6yk=>r*D;_Uo9-GT*gX*IO>) zb{!}mak~ywV7_Oo_Nf?gTW=-i^zW-yj`&pVQ-yiH9mj_wzDWH?B5w1cD)aq$>OV^S z+$cLQ9*el0M~^cfJy!cX!F<{V<<%l?<5QjajFIZsh`611H6y-M{aO*X>(!IYXWDhL zcEoM|)L}k%qxR2XKF`MIsfgQstuFJmw%&To*V*|}KjOCi4VbUDT>Y;^&9hb*~xoQLA-(nn&E`)w2=bqkfBs+j-ZL`DmLz z&qdsx6P}N_jl&Df$E?-$zQ}ySFy${re6;eHnNPL*SF4CGSHCs$X|t5KiMZWg+D6>w zTf2zcylu~XhRu@>5uc*#?Z|w#9hXGJ^VRRfe2!huJ4f7(R~P1U&F{*5fgP7_5x4WD zd&KR$=)rucUAKEOUvBrKUJG`+o*`!c{iH*Xq&fVB5uzQVOlQ7vhmQXY z=9@++pBZs`zMU0u8@JiaH_z8TbC_?l=YhEqx9j0N=G$%l%xAva#{UiGd+hvLz(^)8CIeJ)!}{D+}-UN2!j+|HM!%tzXIE{nL$hvgBs{wtVIx8t>v`3yV0tC-KS z``T*ebL@JxCgOHIT+4i}-M`i`pKsf_KH_iaao-SeyDw~vxP4CC#C(Cx^UV=or~S7? z+~&zv<_qomxsCZ^+pq1+m)Jbn5plcD>}0-thHlTUh}-kb?uf5de-HE3wmo~9ubHKO ze#C8i_Ay^;&&m5EZqNB|M%=E4Z$;d$&j*;Vv-buEnQyW6zRi4>okxcvZugycnD4ee z??!x&j>CJ*_t@v7!x6XZ_K}F&ynR37Hvf-C-0sUCFyA{tx2GWDQv+jah9=KE}aKZ&?q2R@CsZBLPGeIH1FiR)gWMNjD8DY?((XEeXx<=<=m zfXlzt{6Uu&YW`44UQzNQD7$Z&*j`m8ewN-kRf)JgdT1cGMjr z4VrZuz}imk782KOV2Wnlpjo$9Slh$hLgKo;nxa`ZXx42SYa_T@NL;tsqFtgFojGwj z*Ehj6C#!_-;TD@07i_g}_<|hBpsedJT1cF>k+m?%+)6{@ zw9Tw-;%*^v+E&)Kuoe=hZD%da9=FnvIBh3uJGfg&oVJ^_U95$~X?s}<)55JZBu?AM zT0VCRiPPR>Z9i)vaoPdW@`jM6iPH|THjK59IPG25!d#SH$P0e1yI8 zDbIY^P<;xkz2_9)xP2yi zG~)Id^RbBAyT`{PZl8UgU_Q)dTD6GVyMpQww|C|>B0fsDzh=bkXH2ysZtp0bjJSQ) zs2y?p3|=SV_U9M?IMjGrw2F?VVolh}$^#iMX9#xe>SXt8c{ZyyzEkoB#bIZu5LV#BH7r zjJVD7K@qok{z}Acp1&G#o42n;+}^3a&V0DtPX|Zb=GBmh+x!{Ie59R6c@ekm8OD6L z&7a{Bw|9vnB5w0)B=Zq=pB)u(yU&h}xSbbcB5v31u@SfH_PB`Kc{)DgHV-F6+^+Le zi1T;brZV4c<2;S|PP;!&Cw_LWy%U~6{LD_fZ_bRk&9_+*xBKaA;^(K?ahyZ^41ITQ zF7ussyyivRp3~+NKfBbldb zDi_3+;a0gYu8gqCMR8@MRnp_iXscwzm9bXIj4R`;k`-4bSfyB8nP`>bab=QKE{-dc zt#V0RnPQbot#XNs^~vFjtaw>m92ylbkBfOx@rt-OJStup7e_?JtK#CwsCac;932&} ziHl>S;4Jw*T=<)QSpYjI4LUL7#Al;#hc>dl&E-fT*TI{x1&sE>@XLe7s%AH&}JA9p0?&8Xsopc)B&6Tsm*Vr

              5U6}*?X%Dr4UH*b_x?&Au+ab%VIxpHpfR;xS^Rpza<%7a|_VI-YW4{_z} zyal#QHdoHgTxOLrQDxz3tCWo@^XT}Lwyj3c2<^1SfR;kF9?>E!A zUWqH`m(fwE%$2iaXxyrB<;4quE=HD`)o7(XP&w??=*+s}WbW*#5k1l}vuk(JJEh+M;#D z?KMQ3h}&aO+lbr8_;wMu$G-LvAFVgl4iUG4exj$*CPgIh- zla_L$lH8lL)Hf>0ok>gmqLSQ~wA4Q;$z4fH1EP}Lle9E2D#;y5OM{}4+>f+0*h-oF zfIEaaJ>U*yP7ky6luu^9&|c6?VLs2!^r^&g zE73mFh~q}0d^&O5MwHJWj+=<`nZ$7mQ9g?}ZXn8M6Fp)8vzg+v)ac#O<>DS;TF6e;#prFZM;mH|g~FGU7J9Pek0_+kO>syS#iIal71o z6LC9DzKwXkZqIiSx9^-4GS9Qq;bg?^{nx38+XLR|h}-SyOvLRy(bFk#?E&w6 z#O-$QeZ=j-?}v!ngWr!4w+FeOB5v=&e~!4_4t|Nay%+m6;`W~Iw}{(q^iL7D_sD;a zxZTeF5^+0Uevi1FFMo}=oiBfjxScP5kGS2o{tx1pL zNpi7Ov1+Uo8=uF6e@Uva4vX`)U1|chZSCni2)6r|rB*R?cIsVjReX18Jr>t-yTVFn zyWSlX8;~olip|Cvm!)jgRgr+jv1@~Qv#&M*t40T#@Yh%ghfGSC3~pp>RIfGXI`8By zk^`4Fil^3friE7c7Dhb6*PDYqOLznAVsNlu z*jl?>-)sUlW0O>e+8nzjs^TDGJnfcoYibpp?Row-t76sLWW!_w>;x=f0`_rR^89j} zX9Iq_IcT!O9q#BPEolO_e^0WBPNzHmplVl`Qe1WOg!lbUs}?_`G?HGD&R!NI@_ukOjK=H%0#89yxy`_!g}T6 zAFfn(6)k5DHXhCrxBa&7 zh$@+b9mH+Op7bhP3C-uYYnnahREesyuvL6;AC9V67L(sj&qq?LIC*#KEUg+(a~+G9^`t6~nk;SK~YN0>#n zd3DUe=HYAP$?L5NIVNDx7VsVUDJ!ABl){;4gHzWWEROG=+kLa1m9T0lrQ9s)rwB6a z(LJky2^czDVIbI1YxoCM+pwpjDxQV#IA?qPj8(C1*e`j~;Dg@C1nd`tReC@hTM1jW zMlK!nfYijQ=!`1187H`HSW^?w8DnC1mS$GMfTJXn|Mbw!yyeZ!!P;>&qi3XNt(uj6 zo=(daR4BuRmQ*Oqh3BYHjtkFIp*$B}ph5*Myhw$LTzH8JmALRS6)JO~6&0#*p|ut8 z#(^tsxDxGqTdqVq-;OKM-nZvUwEG>n677FSu0#Wn;7T+CowyPWL1(T+W6*^vWur0Z z%9Usgx^X2MgYI03#-ImRqA}=cmCTM$x6*T_m+_3YhIQ32hBI5Y>ZLr_ct-bT ziu)4o(MItg!^O|;+H!7`{RHO~DxI6P?(7tMhwv(u&MsZSZ#!S3(z#g^&TY0gDz97V zigOEBpWQq0%-%Wtrh2dm89l1$HVz@&&G1menFV`|=NZrFYIqpo&W48*u3KH#If8I~ z!y^gTHayC3W}8-Bw99DYS)I8s#tIodo>YG<;ckY<8OEL(A0P1!+Gc|BjIM?!67Fnx z65%=nwaH||nVpGGAzq*ORN}RXPb1!h_;lmN3ih5FHdWU=!zx)_xiFIoZMiUu3Z1zy z+X@-&yXqR|5bkDpu3?O`@p;BGx*DEOxQ*dA2zNHTz;IUAt_SRe%0eo%;ld&-WHMiD zJgYMomQVq!usiuuDqs~>SY`#R!uWFIvI;A#utKq}r$$Zhtz){!}|z#HoTv3eZy}W&g@)ZPm*sDuTT7d@vK%4c70Gc{-6~ys`pg;mQk6Xz?tJAQk=E1u__|N5@~buQ2K z^4#}cd+qh@y>@&tuTgyWtv-I8;!C>v_zjBt-0$NzDem0a$8T}m#m8?`eD44sze90f z%vbMnj8(pexOU$Ma29zVd9A*KeB&QbeBW(8-iEmLeSL7k+|Ky}$af&G)%6nJOeNwv z{dgZp0Mzc<6+^HSd9AM9d^@`+?vG2U4=KKSptnDwxCgfBQ^e8xmGnmbX9QX?*iE1{ zgU<=HVNgY&ErTS1b_`Mk+A~NK=)fRDpd*7UK>U6sZQ&P8)V6=gL~Z<6Ow`tY%|vbf zH%!#_f6GJ-z;{g42z<{(4Z#mg)EN9oq?H^29CBkMrzBLYZHMsicLyA*43T=Q-k4m`a3wAXIIT3$#eEl?XKOe>?be*)7w6HG(`{|;174$iy{U9XGZ!5-~q+eOw zpM-^OppvGNRU7~zRj@9e_o5bTCBlCoq^HZNIudLp!hs}I$VX~o!Bip~1R*m`9&Sd0 ztwcDOgxT`#fmkq=2#1hRA`eev!Bip~3L%>(j|(HgRw5h*Ayt~^Hq%rh98N;HyfYoO zkTR7BM?gsDPq!`DN`xax7%Ok2MJ=RFCBjh z%(NADpll^VT?p9?ZlG)>LOlq{wepZ6?xd+is1G5vRh}fqoivpQ4IpHuj&^-8l?W%1 zuyBDBOeI1?2&p1@#u~4}R3bEjkSUOlI7EW2L^zp*x$@bCSTL0cr$9*hSG=`9x zIn{R3Rw6VZVXfO?Ql=82DTH*9yhj`L!B!$PgOD}vbwz@$L}(77s$#h9gRMk36+&|O zdMnsUgwseUaxZt%R3fy1kecXsIa7(yl7wXw-8h&^gjNvJ=BZY^ne=?CH3`LwZ3}5r zNegWt*dI-dUo86h#I__%bK{UPm9)@~gz4^dkTI1A?MYZKZ(78wFqH@$AY^B{Q#SXOgf^p47)Jm`a4R zAY{h61IJb(oDCs6%DvpS65$*YHo87!O(nv)5HicA*jLk5BAf>yS>g^oTZwQ!30qtr zlBN>j0to5Veltxa!i5krLn>S!OeMla5Yi*&yIsyyB3w*DiM(MSkEE$YxCBC`%uVLD z65&z^*cduz#ZMT65$#a+>wCSq#65&AznF{xE+e(CoAf(o~yChqQ(4T}Nw^yf3CBgs* znId<$Xe$vOhL9TLPAIk#VIYL`WY>bNM0f;3)uxqpByABgr^}S zi`*<{D-i~hFy5Uvlco}32npuPC(+^0Uqi_wVe@jg+nY*S$cK=c>h5`MCBje=w)!2$ zR3Z$6kY3>SYFmjg971-AyN$Ay2n8f8aV=y`B|;$yo7^OpHI)b>NZ35aZf4e0B8-HP zG=DlK9w_=FGDQ$l#qO%uR?@;K5>~i#cgj>EjE0bT)=fdS5@8I4{up#4VUggozN+=C_<9!B!$nB4L6% z^wOphVKNDe{nenUM3_RtdN&SfQ;9GYLS~3R^h_nfG!nKfvM+bWR3c0#VWOL1GNuw? z288TjHx9NEp_qixZY#2;5@9BUWTD$9Z6(4i5=OdJBuyp4Y!W88rzlBNi7*F3+I&6% z=A@~lh2;=ZgWXlJtwdM>Aw9<36x&LKl_ZRJXT7wkM0kdT3U_p;O(nuA2$>;n60?;E zt080y-JxeI5!R4U>>i?KO(jAZ3A5YiLil$8SZj1Ybp^oLP+J$vlED|MA!tOYLgpDTZyn4LNedI7Pb;$ z3klD-tw@?mgl9=u<*uufrV^n7LTZY8PHQU>wvrIMg?SD_x?qgmOj}6{&yz6SO(1Dg ziSPo1%)~8jrZtraFG9!;ae}Qxc!>n_#SZ;>$1Ju6O|N`$vbD0kNnX;X>t4uq_~$FY?N??SL&ZjW9p{+j!H z5K@KiwXl`6@IHj>bbsiXN`wy}BnP{#u$2hgNGNyXkTjJD+aaXZyURseiLe7gW{VSS zB|;^Hq@RLpB|-v1YM6VfW-AePk}%hu{ZpnAVHbq(o%@FnvNPNaV=HOlBM8YtcRH|@ z2p^L$&fQ-mO(nu7B&>EfVo6hp@F|4UH2+M@R3dyv!Yns|q)a8kZW88~x&y~lB79DQ z`P&H59+jfMl28R9J5+=A)bJ|oQdBK!j(Gs<1d*-C_eAtVdk%WW$W_V~kp{vlcD9zWVjggr^vw8(B|(o`bUfRHNk zGmNQ3*b73s%)J9*D-rgFkX-2=P}oX@eITUD-Ge(@iBOY-8SZj1WhxPBLC9=zmj|{I zp*9Kg-1EtdsYIv)A#46pRkRIjEytWeIND_+O zZFSmIA{<4+0(U)`HkAlRld#bBA#ExVj$y%__0kKa65&`97P-?w+EgMO2O&Gl?US|= z;dlt?HU5s(R3e-}LWR4vPn$}Fx)3tc+yr7P5$cn$%w0!iOeI1?2-(3-u$2gnNXU16 z$eK!oCM1-&$1GV>iO`e<_gZ92q!OVS2@Bjzn>CdP%}H42_Nc6>MA+j`|GoTLy?e(K zh{Stx+{ec?IPUA?y%5*#-5dJeDu=%hLzEqGr6rn(gc3 zt)o(wsEf7L+96jf64&EcE+8bX&#_ER5;x#@k{`sAI4<^aLyqPCNE&Ixv0T(hd@{$f zV@Z4p$1=T0+!%4qrhbi0Oe*8BWQV#A=}5|SD7F-(6Dc#G*iw|! zNhyY6OHs}sWhN9`igFeyv!U2hlygX#3&obAoJ-0)D7F;kd{RoF*iw`WNLc{ImZDrl z$|5MX6y;)47DKV6D3_2@3dNS9TuRCkD7F;kGE$a8v85=TNtwLe-tX1fVM|diCuRJ0 zd$$!I0aA+6g_L3_wiM+GQWik5r6^Y#CH~`W(J{CK^IBJcS_%1tgZNj4<8BeGX~+-f-ME9N!m?@8?)< z<)rNg!g0TF{9rhKh+}!2CT;f*#{?;58)-W~91rDK?ry~%7LJE=ERO`mE(phk92fdm zXGAz2$?-IA7lq?d9Ltvuq$i`p@feQfajMv3!|}LqJU$#x;8^aYr0t2}cv3i?9FC`O zT;|7QYB-)2j;Dv?864v*RUD3IhT~b`cs9qFzvqPGxg6sRI4>N}5630pcmc(`aF$va zju&w(cMbAdE)K_~;dn_nUP|#!oQs!*gZE5-gS9Pj3Mgg>}H564v;CIDxxhCHB=GWmn+trW0PRfQ=K?=yfF0_`T;L}S(5s(wfnPMh>-K9d@LMkM zy8`qw{gDg&nG5^{P-_=X`hSPxf5P#<;dqa~{6oEX?^y0%>peBVOj1LE1df}%G{BCz zw+8YkS@ytv7?je=YifX%*U~`V)t07eD?q)fqXBxguLkJVehijUulCmfy*fYx^y)tf zP_GWu0KGa$1N7=(2Fs{dhbTbnI8+0y<1h`dj>8!&ufzr(p#ZJpNCqpYS4Sy8OB~H$ zB`tA`23YyA3Q$wWF({*^j@JN9ouC0;s1p^Sb<}0BmWHIB0<=VZ2J5I-4KzTnPSOCq zYN!CMqY;Dk)T@&fpe0UWuz^5h1{Yj|Q=g0Y@R9b%g@dt1C4?uexf0UR}kYfO^$U z0b0k^8ekpWHNZNqVK9=`ajgc}@*Wys%db;_deu_{^s1Kz=+*TEDpw^|`AeJ|7_266 zBZ0&S0yhEdTQ@N(fhQR^D>9nMEsBgGa;qX^iQJ~hI3l+zGM@T&2S|J+herf=Y9JqH zmTRWo3eXter2#Ir@74f=-$w%s{yhvzsaN-EfL`@gfO>VG2I$rO8lYDXXnv(|y z-~7F(04?zngM7NUeOUwa>J<&pt5+4Ev)X?(z*+5o4EX-*H4U)x*EPV(-%x-y@J$VH zoWI3@Z?oRk04sk-1FZaA1!(2(G2ok~_cg#eKF|Q`*roujW4i{}z#R*;t zi6jF)O{6ry5@`lyw2q7hSR%`yoR;`P11#|+fkZwXgI{TYWAJMRe4Y3WgWezK#4*BfgLPNh7|I{28cD<$AhE|3w2_W&O%vBQ5cp23X>E z2AgP!KQzD+e=;beCH~R?OZ?5CoR;`U11#|`gB7&I9)Ht&AuAGCVowIkX^9#dV2QmL ztfVFO)&NWF!(c5fQBwmfQH#MkTB5cFSfUPtayo_Ws{tmb{WQSjw7&wh2OppS-68yk zK^cJq8LTC65QB9D4rajn?jagr%MWG1`|e>HV2Q&S@VWngQ>- z$7p~hj%C36?r|DmiQ^gYzI%cOSmHzmyzkc4087+k!251}4X{K52E6Z{qyd&_$bk3V zMjBw>Jy`?nyQe5X`)*?eXoqXUfcM>|40zvd#(?+T<_vf{PSpV0ahe9$jur~gcC=(r zmcUu06@zjDtr@JRrrI#zo2IrJpu6ofKzG|S;4SZ<0h;Ql0h;Q>fV+D-1HNxLgTdki zJ{xjoF3=TVzsl&=ng-=6jre}GTW)l9HAD?|*Jvf7YZOZG<@dGK5k{^@b%e3Ij#0E# z^u|}u+^83$6^UVVcD%ki!V{Yt7?oA>K;5VjKP9-S8lqF%%?hc`-;x{MS{>o-w%e*9 z8u{CEqdOQyxA`=NcjiXD6^h0X*OqrNDzA(N*uP70cW%^2qviCX+@nx5P}l+P&5in2 zL)4A?a-;hht&2L39pC|tc*pLS8$HM#qBlPg`>Ie-!K`44s!o&MyZuAtRJT<&eS3@)!gBcA~yXcVW z2%XQXj?nphjh55(=+N9~m`1$G!*inoh14b&=0+nJMSCIjaAY+^165QVVKhc*#FO6W zYKR&fqY*#s99s?1QWG>J&j8AW&8v|Y1uquGQiOQYipFXbFY@#O)~-0BG3n5PjpIKMi=QY8wh zOcL%*ozg4mO_K2jLM?X09wK*Iw8`!mNJS@Z5XI!jN%gq&~ieF z=z%Ap6$+{CTFGdnYVaA2xWQElsRmawigp_6#u`S^EJ~=1QGBFeyUH2qxpyriJ;AOc zRJl>DYdxXpITm+g1Ec7fDxF3*GKww^sE3;v#UqbPk;SJ4 zN<^bU=sQA{YZF81s{!8=O5`c@1JD7LixWem|KW!3M-B6%4aWyVej*s35~Kg{g_xfS z#+`|GJAY033&YiwWr;$1fch)LjZt?-Qipycm?(^vGrM2kni z@v(dGLO(_=RgN#+w^BL2&(Rur&6|BIZGvfAN>A}_J4ze-v^}Md`?Le4Px`bY(%PR7 zMxQ&W9A5}HUFG<={2408r=-qQISz`mRF0eTvsI1{@Sme{oQBR-`6$0#=c#rb+ubQW-KW=3+R3NaQhK&edr(@>r`I8kjuh-&J(1VM-rS2)?9JCxioN*;O0hTJ zh*a&(H>n(Z^UcU>Ht@Z^h0;boy_M1?KD~`n{JO>Mls5P79h9Eo(>p0W%cs35J=3Rm zQ+k6>`%rq4Pw%0$p-=Cn^c*8_0YnSnup6Lq9Cia$j>GN| z#;kYs!CpgA$pX?0ByTb8@;rJtt@%^ul!|^BK_|tIw8OL}6usa-o9*(QRagt+v z06Z0r)8RN1jNgGeJRB)r?jn4kD#=jPmiRuy-$y# zw1ZENrnI9^kD(L~ERLlV4>yjZ6gT6?Q;OT}6DY+k`iYd{K}cOnaf4lt(sQN1eQKQh zZ;L)P>JvE6g7ad~fWY|{oF9Xe2wY&n1u}{$;1mLv zSa3-U8WXtGf=gr2gurDMTo!|-1Ug&LIR?!LTyDYTF=$Spiv?X`a4LZ-EVv>DrxCc) zf-7Utf;$ikVl-}aqb1A(wPW#lT7x%5+zkO<)N9;Dk>c^~p#Lg#nyI~Dt)*xaR5WB;$ zlVWyK#4aRur(q3a)-Ylh5$kPOqnI^{*u})|GVJ7-ogA@Ch}~`2DKR@GVwV!@V_4&u zHICS2#O^VyNz9r=tTVBD4Qm>+rV+cGSYN}M#jIJxx)8h1u;wvq9t|Stn6-%5Rm2`NtYyqvMywmLhYV{KvsMwinpl6sTF0z)#JUq3 zU|5@&wTaj@#2z-RZOqz6>{?<24Qm&(b`k4A>=DD-$ElCw25xbrkJ*uYkiFgUQ&ApLQJixw*(x<$8E7It(cAn2~Q~4;L->&k} zKEFfdxRtt-^Zd=;@2zq?h`5XMym{WgTjjWP?4xpAAl{>LTn65&@+H3gzMSWy{rgmo z_U~6Y+J8Xh`M&*rD&OMs2RYB1@AHRLzQE`GRldmQ15{q>^M_Tw)aL_Ljz@rxsCF=O9_K@G z{LWW7=I0WXqdyB&j>owRRgU9*k;?HHb+O7Z50t8WgWs+tD#!e=ROOqzzf9$rHi<(T)LRXOIp3YBBtdqL%x_g+-_IN#5gR6gG4 zFRL8$1n!KFQ~=sT}j_>nfk({WnxT)#q=j9P{v7DxdECw^fdL;60UN-hN-@ zGkrTBsC<^sx2YWS{C1UNp5LKz%=0@{j(L8U$}!J>sB&DVeTux+3(!B~81` 0 && segment.size < 64 + IDN::Idna.toASCII(segment, IDN::Idna::ALLOW_UNASSIGNED) + elsif segment.size >= 64 + segment + else + '' + end + end.join('.') + end + + def self.to_unicode(value) + value.to_s.split('.', -1).map do |segment| + if segment.size > 0 && segment.size < 64 + IDN::Idna.toUnicode(segment, IDN::Idna::ALLOW_UNASSIGNED) + elsif segment.size >= 64 + segment + else + '' + end + end.join('.') + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna/pure.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna/pure.rb new file mode 100644 index 0000000000..519094daac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/idna/pure.rb @@ -0,0 +1,676 @@ +# frozen_string_literal: true + +# encoding:utf-8 +#-- +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#++ + + +module Addressable + module IDNA + # This module is loosely based on idn_actionmailer by Mick Staugaard, + # the unicode library by Yoshida Masato, and the punycode implementation + # by Kazuhiro Nishiyama. Most of the code was copied verbatim, but + # some reformatting was done, and some translation from C was done. + # + # Without their code to work from as a base, we'd all still be relying + # on the presence of libidn. Which nobody ever seems to have installed. + # + # Original sources: + # http://github.com/staugaard/idn_actionmailer + # http://www.yoshidam.net/Ruby.html#unicode + # http://rubyforge.org/frs/?group_id=2550 + + + UNICODE_TABLE = File.expand_path( + File.join(File.dirname(__FILE__), '../../..', 'data/unicode.data') + ) + + ACE_PREFIX = "xn--" + + UTF8_REGEX = /\A(?: + [\x09\x0A\x0D\x20-\x7E] # ASCII + | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte + | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs + | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte + | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates + | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 + | [\xF1-\xF3][\x80-\xBF]{3} # planes 4nil5 + | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 + )*\z/mnx + + UTF8_REGEX_MULTIBYTE = /(?: + [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte + | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs + | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte + | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates + | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 + | [\xF1-\xF3][\x80-\xBF]{3} # planes 4nil5 + | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 + )/mnx + + # :startdoc: + + # Converts from a Unicode internationalized domain name to an ASCII + # domain name as described in RFC 3490. + def self.to_ascii(input) + input = input.to_s unless input.is_a?(String) + input = input.dup + if input.respond_to?(:force_encoding) + input.force_encoding(Encoding::ASCII_8BIT) + end + if input =~ UTF8_REGEX && input =~ UTF8_REGEX_MULTIBYTE + parts = unicode_downcase(input).split('.') + parts.map! do |part| + if part.respond_to?(:force_encoding) + part.force_encoding(Encoding::ASCII_8BIT) + end + if part =~ UTF8_REGEX && part =~ UTF8_REGEX_MULTIBYTE + ACE_PREFIX + punycode_encode(unicode_normalize_kc(part)) + else + part + end + end + parts.join('.') + else + input + end + end + + # Converts from an ASCII domain name to a Unicode internationalized + # domain name as described in RFC 3490. + def self.to_unicode(input) + input = input.to_s unless input.is_a?(String) + parts = input.split('.') + parts.map! do |part| + if part =~ /^#{ACE_PREFIX}(.+)/ + begin + punycode_decode(part[/^#{ACE_PREFIX}(.+)/, 1]) + rescue Addressable::IDNA::PunycodeBadInput + # toUnicode is explicitly defined as never-fails by the spec + part + end + else + part + end + end + output = parts.join('.') + if output.respond_to?(:force_encoding) + output.force_encoding(Encoding::UTF_8) + end + output + end + + # Unicode normalization form KC. + def self.unicode_normalize_kc(input) + input = input.to_s unless input.is_a?(String) + unpacked = input.unpack("U*") + unpacked = + unicode_compose(unicode_sort_canonical(unicode_decompose(unpacked))) + return unpacked.pack("U*") + end + + ## + # Unicode aware downcase method. + # + # @api private + # @param [String] input + # The input string. + # @return [String] The downcased result. + def self.unicode_downcase(input) + input = input.to_s unless input.is_a?(String) + unpacked = input.unpack("U*") + unpacked.map! { |codepoint| lookup_unicode_lowercase(codepoint) } + return unpacked.pack("U*") + end + (class <= HANGUL_LBASE && ch_one < HANGUL_LBASE + HANGUL_LCOUNT && + ch_two >= HANGUL_VBASE && ch_two < HANGUL_VBASE + HANGUL_VCOUNT + # Hangul L + V + return HANGUL_SBASE + ( + (ch_one - HANGUL_LBASE) * HANGUL_VCOUNT + (ch_two - HANGUL_VBASE) + ) * HANGUL_TCOUNT + elsif ch_one >= HANGUL_SBASE && + ch_one < HANGUL_SBASE + HANGUL_SCOUNT && + (ch_one - HANGUL_SBASE) % HANGUL_TCOUNT == 0 && + ch_two >= HANGUL_TBASE && ch_two < HANGUL_TBASE + HANGUL_TCOUNT + # Hangul LV + T + return ch_one + (ch_two - HANGUL_TBASE) + end + + p = [] + ucs4_to_utf8 = lambda do |ch| + if ch < 128 + p << ch + elsif ch < 2048 + p << (ch >> 6 | 192) + p << (ch & 63 | 128) + elsif ch < 0x10000 + p << (ch >> 12 | 224) + p << (ch >> 6 & 63 | 128) + p << (ch & 63 | 128) + elsif ch < 0x200000 + p << (ch >> 18 | 240) + p << (ch >> 12 & 63 | 128) + p << (ch >> 6 & 63 | 128) + p << (ch & 63 | 128) + elsif ch < 0x4000000 + p << (ch >> 24 | 248) + p << (ch >> 18 & 63 | 128) + p << (ch >> 12 & 63 | 128) + p << (ch >> 6 & 63 | 128) + p << (ch & 63 | 128) + elsif ch < 0x80000000 + p << (ch >> 30 | 252) + p << (ch >> 24 & 63 | 128) + p << (ch >> 18 & 63 | 128) + p << (ch >> 12 & 63 | 128) + p << (ch >> 6 & 63 | 128) + p << (ch & 63 | 128) + end + end + + ucs4_to_utf8.call(ch_one) + ucs4_to_utf8.call(ch_two) + + return lookup_unicode_composition(p) + end + (class < cc + unpacked[i] = last + unpacked[i-1] = ch + i -= 1 if i > 1 + else + i += 1 + end + end + return unpacked + end + (class <= HANGUL_SBASE && cp < HANGUL_SBASE + HANGUL_SCOUNT + l, v, t = unicode_decompose_hangul(cp) + unpacked_result << l + unpacked_result << v if v + unpacked_result << t if t + else + dc = lookup_unicode_compatibility(cp) + unless dc + unpacked_result << cp + else + unpacked_result.concat(unicode_decompose(dc.unpack("U*"))) + end + end + end + return unpacked_result + end + (class <= HANGUL_SCOUNT + l = codepoint + v = t = nil + return l, v, t + end + l = HANGUL_LBASE + sindex / HANGUL_NCOUNT + v = HANGUL_VBASE + (sindex % HANGUL_NCOUNT) / HANGUL_TCOUNT + t = HANGUL_TBASE + sindex % HANGUL_TCOUNT + if t == HANGUL_TBASE + t = nil + end + return l, v, t + end + (class <?" + + "@ABCDEFGHIJKLMNO" + + "PQRSTUVWXYZ[\\]^_" + + "`abcdefghijklmno" + + "pqrstuvwxyz{|}~\n" + + # Input is invalid. + class PunycodeBadInput < StandardError; end + # Output would exceed the space provided. + class PunycodeBigOutput < StandardError; end + # Input needs wider integers to process. + class PunycodeOverflow < StandardError; end + + def self.punycode_encode(unicode) + unicode = unicode.to_s unless unicode.is_a?(String) + input = unicode.unpack("U*") + output = [0] * (ACE_MAX_LENGTH + 1) + input_length = input.size + output_length = [ACE_MAX_LENGTH] + + # Initialize the state + n = PUNYCODE_INITIAL_N + delta = out = 0 + max_out = output_length[0] + bias = PUNYCODE_INITIAL_BIAS + + # Handle the basic code points: + input_length.times do |j| + if punycode_basic?(input[j]) + if max_out - out < 2 + raise PunycodeBigOutput, + "Output would exceed the space provided." + end + output[out] = input[j] + out += 1 + end + end + + h = b = out + + # h is the number of code points that have been handled, b is the + # number of basic code points, and out is the number of characters + # that have been output. + + if b > 0 + output[out] = PUNYCODE_DELIMITER + out += 1 + end + + # Main encoding loop: + + while h < input_length + # All non-basic code points < n have been + # handled already. Find the next larger one: + + m = PUNYCODE_MAXINT + input_length.times do |j| + m = input[j] if (n...m) === input[j] + end + + # Increase delta enough to advance the decoder's + # state to , but guard against overflow: + + if m - n > (PUNYCODE_MAXINT - delta) / (h + 1) + raise PunycodeOverflow, "Input needs wider integers to process." + end + delta += (m - n) * (h + 1) + n = m + + input_length.times do |j| + # Punycode does not need to check whether input[j] is basic: + if input[j] < n + delta += 1 + if delta == 0 + raise PunycodeOverflow, + "Input needs wider integers to process." + end + end + + if input[j] == n + # Represent delta as a generalized variable-length integer: + + q = delta; k = PUNYCODE_BASE + while true + if out >= max_out + raise PunycodeBigOutput, + "Output would exceed the space provided." + end + t = ( + if k <= bias + PUNYCODE_TMIN + elsif k >= bias + PUNYCODE_TMAX + PUNYCODE_TMAX + else + k - bias + end + ) + break if q < t + output[out] = + punycode_encode_digit(t + (q - t) % (PUNYCODE_BASE - t)) + out += 1 + q = (q - t) / (PUNYCODE_BASE - t) + k += PUNYCODE_BASE + end + + output[out] = punycode_encode_digit(q) + out += 1 + bias = punycode_adapt(delta, h + 1, h == b) + delta = 0 + h += 1 + end + end + + delta += 1 + n += 1 + end + + output_length[0] = out + + outlen = out + outlen.times do |j| + c = output[j] + unless c >= 0 && c <= 127 + raise StandardError, "Invalid output char." + end + unless PUNYCODE_PRINT_ASCII[c] + raise PunycodeBadInput, "Input is invalid." + end + end + + output[0..outlen].map { |x| x.chr }.join("").sub(/\0+\z/, "") + end + (class <= 0 && c <= 127 + raise PunycodeBadInput, "Input is invalid." + end + input.push(c) + end + + input_length = input.length + output_length = [UNICODE_MAX_LENGTH] + + # Initialize the state + n = PUNYCODE_INITIAL_N + + out = i = 0 + max_out = output_length[0] + bias = PUNYCODE_INITIAL_BIAS + + # Handle the basic code points: Let b be the number of input code + # points before the last delimiter, or 0 if there is none, then + # copy the first b code points to the output. + + b = 0 + input_length.times do |j| + b = j if punycode_delimiter?(input[j]) + end + if b > max_out + raise PunycodeBigOutput, "Output would exceed the space provided." + end + + b.times do |j| + unless punycode_basic?(input[j]) + raise PunycodeBadInput, "Input is invalid." + end + output[out] = input[j] + out+=1 + end + + # Main decoding loop: Start just after the last delimiter if any + # basic code points were copied; start at the beginning otherwise. + + in_ = b > 0 ? b + 1 : 0 + while in_ < input_length + + # in_ is the index of the next character to be consumed, and + # out is the number of code points in the output array. + + # Decode a generalized variable-length integer into delta, + # which gets added to i. The overflow checking is easier + # if we increase i as we go, then subtract off its starting + # value at the end to obtain delta. + + oldi = i; w = 1; k = PUNYCODE_BASE + while true + if in_ >= input_length + raise PunycodeBadInput, "Input is invalid." + end + digit = punycode_decode_digit(input[in_]) + in_+=1 + if digit >= PUNYCODE_BASE + raise PunycodeBadInput, "Input is invalid." + end + if digit > (PUNYCODE_MAXINT - i) / w + raise PunycodeOverflow, "Input needs wider integers to process." + end + i += digit * w + t = ( + if k <= bias + PUNYCODE_TMIN + elsif k >= bias + PUNYCODE_TMAX + PUNYCODE_TMAX + else + k - bias + end + ) + break if digit < t + if w > PUNYCODE_MAXINT / (PUNYCODE_BASE - t) + raise PunycodeOverflow, "Input needs wider integers to process." + end + w *= PUNYCODE_BASE - t + k += PUNYCODE_BASE + end + + bias = punycode_adapt(i - oldi, out + 1, oldi == 0) + + # I was supposed to wrap around from out + 1 to 0, + # incrementing n each time, so we'll fix that now: + + if i / (out + 1) > PUNYCODE_MAXINT - n + raise PunycodeOverflow, "Input needs wider integers to process." + end + n += i / (out + 1) + i %= out + 1 + + # Insert n at position i of the output: + + # not needed for Punycode: + # raise PUNYCODE_INVALID_INPUT if decode_digit(n) <= base + if out >= max_out + raise PunycodeBigOutput, "Output would exceed the space provided." + end + + #memmove(output + i + 1, output + i, (out - i) * sizeof *output) + output[i + 1, out - i] = output[i, out - i] + output[i] = n + i += 1 + + out += 1 + end + + output_length[0] = out + + output.pack("U*") + end + (class <> 1 + # delta >> 1 is a faster way of doing delta / 2 + delta += delta / numpoints + difference = PUNYCODE_BASE - PUNYCODE_TMIN + + k = 0 + while delta > (difference * PUNYCODE_TMAX) / 2 + delta /= difference + k += PUNYCODE_BASE + end + + k + (difference + 1) * delta / (delta + PUNYCODE_SKEW) + end + (class < '?', + '/' => '/', + '#' => '#', + '.' => '.', + ';' => ';', + '&' => '&' + } + JOINERS = { + '?' => '&', + '.' => '.', + ';' => ';', + '&' => '&', + '/' => '/' + } + + ## + # Raised if an invalid template value is supplied. + class InvalidTemplateValueError < StandardError + end + + ## + # Raised if an invalid template operator is used in a pattern. + class InvalidTemplateOperatorError < StandardError + end + + ## + # Raised if an invalid template operator is used in a pattern. + class TemplateOperatorAbortedError < StandardError + end + + ## + # This class represents the data that is extracted when a Template + # is matched against a URI. + class MatchData + ## + # Creates a new MatchData object. + # MatchData objects should never be instantiated directly. + # + # @param [Addressable::URI] uri + # The URI that the template was matched against. + def initialize(uri, template, mapping) + @uri = uri.dup.freeze + @template = template + @mapping = mapping.dup.freeze + end + + ## + # @return [Addressable::URI] + # The URI that the Template was matched against. + attr_reader :uri + + ## + # @return [Addressable::Template] + # The Template used for the match. + attr_reader :template + + ## + # @return [Hash] + # The mapping that resulted from the match. + # Note that this mapping does not include keys or values for + # variables that appear in the Template, but are not present + # in the URI. + attr_reader :mapping + + ## + # @return [Array] + # The list of variables that were present in the Template. + # Note that this list will include variables which do not appear + # in the mapping because they were not present in URI. + def variables + self.template.variables + end + alias_method :keys, :variables + alias_method :names, :variables + + ## + # @return [Array] + # The list of values that were captured by the Template. + # Note that this list will include nils for any variables which + # were in the Template, but did not appear in the URI. + def values + @values ||= self.variables.inject([]) do |accu, key| + accu << self.mapping[key] + accu + end + end + alias_method :captures, :values + + ## + # Accesses captured values by name or by index. + # + # @param [String, Symbol, Fixnum] key + # Capture index or name. Note that when accessing by with index + # of 0, the full URI will be returned. The intention is to mimic + # the ::MatchData#[] behavior. + # + # @param [#to_int, nil] len + # If provided, an array of values will be returend with the given + # parameter used as length. + # + # @return [Array, String, nil] + # The captured value corresponding to the index or name. If the + # value was not provided or the key is unknown, nil will be + # returned. + # + # If the second parameter is provided, an array of that length will + # be returned instead. + def [](key, len = nil) + if len + to_a[key, len] + elsif String === key or Symbol === key + mapping[key.to_s] + else + to_a[key] + end + end + + ## + # @return [Array] + # Array with the matched URI as first element followed by the captured + # values. + def to_a + [to_s, *values] + end + + ## + # @return [String] + # The matched URI as String. + def to_s + uri.to_s + end + alias_method :string, :to_s + + # Returns multiple captured values at once. + # + # @param [String, Symbol, Fixnum] *indexes + # Indices of the captures to be returned + # + # @return [Array] + # Values corresponding to given indices. + # + # @see Addressable::Template::MatchData#[] + def values_at(*indexes) + indexes.map { |i| self[i] } + end + + ## + # Returns a String representation of the MatchData's state. + # + # @return [String] The MatchData's state, as a String. + def inspect + sprintf("#<%s:%#0x RESULT:%s>", + self.class.to_s, self.object_id, self.mapping.inspect) + end + + ## + # Dummy method for code expecting a ::MatchData instance + # + # @return [String] An empty string. + def pre_match + "" + end + alias_method :post_match, :pre_match + end + + ## + # Creates a new Addressable::Template object. + # + # @param [#to_str] pattern The URI Template pattern. + # + # @return [Addressable::Template] The initialized Template object. + def initialize(pattern) + if !pattern.respond_to?(:to_str) + raise TypeError, "Can't convert #{pattern.class} into String." + end + @pattern = pattern.to_str.dup.freeze + end + + ## + # Freeze URI, initializing instance variables. + # + # @return [Addressable::URI] The frozen URI object. + def freeze + self.variables + self.variable_defaults + self.named_captures + super + end + + ## + # @return [String] The Template object's pattern. + attr_reader :pattern + + ## + # Returns a String representation of the Template object's state. + # + # @return [String] The Template object's state, as a String. + def inspect + sprintf("#<%s:%#0x PATTERN:%s>", + self.class.to_s, self.object_id, self.pattern) + end + + ## + # Returns true if the Template objects are equal. This method + # does NOT normalize either Template before doing the comparison. + # + # @param [Object] template The Template to compare. + # + # @return [TrueClass, FalseClass] + # true if the Templates are equivalent, false + # otherwise. + def ==(template) + return false unless template.kind_of?(Template) + return self.pattern == template.pattern + end + + ## + # Addressable::Template makes no distinction between `==` and `eql?`. + # + # @see #== + alias_method :eql?, :== + + ## + # Extracts a mapping from the URI using a URI Template pattern. + # + # @param [Addressable::URI, #to_str] uri + # The URI to extract from. + # + # @param [#restore, #match] processor + # A template processor object may optionally be supplied. + # + # The object should respond to either the restore or + # match messages or both. The restore method should + # take two parameters: `[String] name` and `[String] value`. + # The restore method should reverse any transformations that + # have been performed on the value to ensure a valid URI. + # The match method should take a single + # parameter: `[String] name`. The match method should return + # a String containing a regular expression capture group for + # matching on that particular variable. The default value is `".*?"`. + # The match method has no effect on multivariate operator + # expansions. + # + # @return [Hash, NilClass] + # The Hash mapping that was extracted from the URI, or + # nil if the URI didn't match the template. + # + # @example + # class ExampleProcessor + # def self.restore(name, value) + # return value.gsub(/\+/, " ") if name == "query" + # return value + # end + # + # def self.match(name) + # return ".*?" if name == "first" + # return ".*" + # end + # end + # + # uri = Addressable::URI.parse( + # "http://example.com/search/an+example+search+query/" + # ) + # Addressable::Template.new( + # "http://example.com/search/{query}/" + # ).extract(uri, ExampleProcessor) + # #=> {"query" => "an example search query"} + # + # uri = Addressable::URI.parse("http://example.com/a/b/c/") + # Addressable::Template.new( + # "http://example.com/{first}/{second}/" + # ).extract(uri, ExampleProcessor) + # #=> {"first" => "a", "second" => "b/c"} + # + # uri = Addressable::URI.parse("http://example.com/a/b/c/") + # Addressable::Template.new( + # "http://example.com/{first}/{-list|/|second}/" + # ).extract(uri) + # #=> {"first" => "a", "second" => ["b", "c"]} + def extract(uri, processor=nil) + match_data = self.match(uri, processor) + return (match_data ? match_data.mapping : nil) + end + + ## + # Extracts match data from the URI using a URI Template pattern. + # + # @param [Addressable::URI, #to_str] uri + # The URI to extract from. + # + # @param [#restore, #match] processor + # A template processor object may optionally be supplied. + # + # The object should respond to either the restore or + # match messages or both. The restore method should + # take two parameters: `[String] name` and `[String] value`. + # The restore method should reverse any transformations that + # have been performed on the value to ensure a valid URI. + # The match method should take a single + # parameter: `[String] name`. The match method should return + # a String containing a regular expression capture group for + # matching on that particular variable. The default value is `".*?"`. + # The match method has no effect on multivariate operator + # expansions. + # + # @return [Hash, NilClass] + # The Hash mapping that was extracted from the URI, or + # nil if the URI didn't match the template. + # + # @example + # class ExampleProcessor + # def self.restore(name, value) + # return value.gsub(/\+/, " ") if name == "query" + # return value + # end + # + # def self.match(name) + # return ".*?" if name == "first" + # return ".*" + # end + # end + # + # uri = Addressable::URI.parse( + # "http://example.com/search/an+example+search+query/" + # ) + # match = Addressable::Template.new( + # "http://example.com/search/{query}/" + # ).match(uri, ExampleProcessor) + # match.variables + # #=> ["query"] + # match.captures + # #=> ["an example search query"] + # + # uri = Addressable::URI.parse("http://example.com/a/b/c/") + # match = Addressable::Template.new( + # "http://example.com/{first}/{+second}/" + # ).match(uri, ExampleProcessor) + # match.variables + # #=> ["first", "second"] + # match.captures + # #=> ["a", "b/c"] + # + # uri = Addressable::URI.parse("http://example.com/a/b/c/") + # match = Addressable::Template.new( + # "http://example.com/{first}{/second*}/" + # ).match(uri) + # match.variables + # #=> ["first", "second"] + # match.captures + # #=> ["a", ["b", "c"]] + def match(uri, processor=nil) + uri = Addressable::URI.parse(uri) + mapping = {} + + # First, we need to process the pattern, and extract the values. + expansions, expansion_regexp = + parse_template_pattern(pattern, processor) + + return nil unless uri.to_str.match(expansion_regexp) + unparsed_values = uri.to_str.scan(expansion_regexp).flatten + + if uri.to_str == pattern + return Addressable::Template::MatchData.new(uri, self, mapping) + elsif expansions.size > 0 + index = 0 + expansions.each do |expansion| + _, operator, varlist = *expansion.match(EXPRESSION) + varlist.split(',').each do |varspec| + _, name, modifier = *varspec.match(VARSPEC) + mapping[name] ||= nil + case operator + when nil, '+', '#', '/', '.' + unparsed_value = unparsed_values[index] + name = varspec[VARSPEC, 1] + value = unparsed_value + value = value.split(JOINERS[operator]) if value && modifier == '*' + when ';', '?', '&' + if modifier == '*' + if unparsed_values[index] + value = unparsed_values[index].split(JOINERS[operator]) + value = value.inject({}) do |acc, v| + key, val = v.split('=') + val = "" if val.nil? + acc[key] = val + acc + end + end + else + if (unparsed_values[index]) + name, value = unparsed_values[index].split('=') + value = "" if value.nil? + end + end + end + if processor != nil && processor.respond_to?(:restore) + value = processor.restore(name, value) + end + if processor == nil + if value.is_a?(Hash) + value = value.inject({}){|acc, (k, v)| + acc[Addressable::URI.unencode_component(k)] = + Addressable::URI.unencode_component(v) + acc + } + elsif value.is_a?(Array) + value = value.map{|v| Addressable::URI.unencode_component(v) } + else + value = Addressable::URI.unencode_component(value) + end + end + if !mapping.has_key?(name) || mapping[name].nil? + # Doesn't exist, set to value (even if value is nil) + mapping[name] = value + end + index = index + 1 + end + end + return Addressable::Template::MatchData.new(uri, self, mapping) + else + return nil + end + end + + ## + # Expands a URI template into another URI template. + # + # @param [Hash] mapping The mapping that corresponds to the pattern. + # @param [#validate, #transform] processor + # An optional processor object may be supplied. + # @param [Boolean] normalize_values + # Optional flag to enable/disable unicode normalization. Default: true + # + # The object should respond to either the validate or + # transform messages or both. Both the validate and + # transform methods should take two parameters: name and + # value. The validate method should return true + # or false; true if the value of the variable is valid, + # false otherwise. An InvalidTemplateValueError + # exception will be raised if the value is invalid. The transform + # method should return the transformed variable value as a String. + # If a transform method is used, the value will not be percent + # encoded automatically. Unicode normalization will be performed both + # before and after sending the value to the transform method. + # + # @return [Addressable::Template] The partially expanded URI template. + # + # @example + # Addressable::Template.new( + # "http://example.com/{one}/{two}/" + # ).partial_expand({"one" => "1"}).pattern + # #=> "http://example.com/1/{two}/" + # + # Addressable::Template.new( + # "http://example.com/{?one,two}/" + # ).partial_expand({"one" => "1"}).pattern + # #=> "http://example.com/?one=1{&two}/" + # + # Addressable::Template.new( + # "http://example.com/{?one,two,three}/" + # ).partial_expand({"one" => "1", "three" => 3}).pattern + # #=> "http://example.com/?one=1{&two}&three=3" + def partial_expand(mapping, processor=nil, normalize_values=true) + result = self.pattern.dup + mapping = normalize_keys(mapping) + result.gsub!( EXPRESSION ) do |capture| + transform_partial_capture(mapping, capture, processor, normalize_values) + end + return Addressable::Template.new(result) + end + + ## + # Expands a URI template into a full URI. + # + # @param [Hash] mapping The mapping that corresponds to the pattern. + # @param [#validate, #transform] processor + # An optional processor object may be supplied. + # @param [Boolean] normalize_values + # Optional flag to enable/disable unicode normalization. Default: true + # + # The object should respond to either the validate or + # transform messages or both. Both the validate and + # transform methods should take two parameters: name and + # value. The validate method should return true + # or false; true if the value of the variable is valid, + # false otherwise. An InvalidTemplateValueError + # exception will be raised if the value is invalid. The transform + # method should return the transformed variable value as a String. + # If a transform method is used, the value will not be percent + # encoded automatically. Unicode normalization will be performed both + # before and after sending the value to the transform method. + # + # @return [Addressable::URI] The expanded URI template. + # + # @example + # class ExampleProcessor + # def self.validate(name, value) + # return !!(value =~ /^[\w ]+$/) if name == "query" + # return true + # end + # + # def self.transform(name, value) + # return value.gsub(/ /, "+") if name == "query" + # return value + # end + # end + # + # Addressable::Template.new( + # "http://example.com/search/{query}/" + # ).expand( + # {"query" => "an example search query"}, + # ExampleProcessor + # ).to_str + # #=> "http://example.com/search/an+example+search+query/" + # + # Addressable::Template.new( + # "http://example.com/search/{query}/" + # ).expand( + # {"query" => "an example search query"} + # ).to_str + # #=> "http://example.com/search/an%20example%20search%20query/" + # + # Addressable::Template.new( + # "http://example.com/search/{query}/" + # ).expand( + # {"query" => "bogus!"}, + # ExampleProcessor + # ).to_str + # #=> Addressable::Template::InvalidTemplateValueError + def expand(mapping, processor=nil, normalize_values=true) + result = self.pattern.dup + mapping = normalize_keys(mapping) + result.gsub!( EXPRESSION ) do |capture| + transform_capture(mapping, capture, processor, normalize_values) + end + return Addressable::URI.parse(result) + end + + ## + # Returns an Array of variables used within the template pattern. + # The variables are listed in the Array in the order they appear within + # the pattern. Multiple occurrences of a variable within a pattern are + # not represented in this Array. + # + # @return [Array] The variables present in the template's pattern. + def variables + @variables ||= ordered_variable_defaults.map { |var, val| var }.uniq + end + alias_method :keys, :variables + alias_method :names, :variables + + ## + # Returns a mapping of variables to their default values specified + # in the template. Variables without defaults are not returned. + # + # @return [Hash] Mapping of template variables to their defaults + def variable_defaults + @variable_defaults ||= + Hash[*ordered_variable_defaults.reject { |k, v| v.nil? }.flatten] + end + + ## + # Coerces a template into a `Regexp` object. This regular expression will + # behave very similarly to the actual template, and should match the same + # URI values, but it cannot fully handle, for example, values that would + # extract to an `Array`. + # + # @return [Regexp] A regular expression which should match the template. + def to_regexp + _, source = parse_template_pattern(pattern) + Regexp.new(source) + end + + ## + # Returns the source of the coerced `Regexp`. + # + # @return [String] The source of the `Regexp` given by {#to_regexp}. + # + # @api private + def source + self.to_regexp.source + end + + ## + # Returns the named captures of the coerced `Regexp`. + # + # @return [Hash] The named captures of the `Regexp` given by {#to_regexp}. + # + # @api private + def named_captures + self.to_regexp.named_captures + end + + ## + # Generates a route result for a given set of parameters. + # Should only be used by rack-mount. + # + # @param params [Hash] The set of parameters used to expand the template. + # @param recall [Hash] Default parameters used to expand the template. + # @param options [Hash] Either a `:processor` or a `:parameterize` block. + # + # @api private + def generate(params={}, recall={}, options={}) + merged = recall.merge(params) + if options[:processor] + processor = options[:processor] + elsif options[:parameterize] + # TODO: This is sending me into fits trying to shoe-horn this into + # the existing API. I think I've got this backwards and processors + # should be a set of 4 optional blocks named :validate, :transform, + # :match, and :restore. Having to use a singleton here is a huge + # code smell. + processor = Object.new + class <validate or + # transform messages or both. Both the validate and + # transform methods should take two parameters: name and + # value. The validate method should return true + # or false; true if the value of the variable is valid, + # false otherwise. An InvalidTemplateValueError exception + # will be raised if the value is invalid. The transform method + # should return the transformed variable value as a String. If a + # transform method is used, the value will not be percent encoded + # automatically. Unicode normalization will be performed both before and + # after sending the value to the transform method. + # + # @return [String] The expanded expression + def transform_partial_capture(mapping, capture, processor = nil, + normalize_values = true) + _, operator, varlist = *capture.match(EXPRESSION) + + vars = varlist.split(",") + + if operator == "?" + # partial expansion of form style query variables sometimes requires a + # slight reordering of the variables to produce a valid url. + first_to_expand = vars.find { |varspec| + _, name, _ = *varspec.match(VARSPEC) + mapping.key?(name) && !mapping[name].nil? + } + + vars = [first_to_expand] + vars.reject {|varspec| varspec == first_to_expand} if first_to_expand + end + + vars. + inject("".dup) do |acc, varspec| + _, name, _ = *varspec.match(VARSPEC) + next_val = if mapping.key? name + transform_capture(mapping, "{#{operator}#{varspec}}", + processor, normalize_values) + else + "{#{operator}#{varspec}}" + end + # If we've already expanded at least one '?' operator with non-empty + # value, change to '&' + operator = "&" if (operator == "?") && (next_val != "") + acc << next_val + end + end + + ## + # Transforms a mapped value so that values can be substituted into the + # template. + # + # @param [Hash] mapping The mapping to replace captures + # @param [String] capture + # The expression to replace + # @param [#validate, #transform] processor + # An optional processor object may be supplied. + # @param [Boolean] normalize_values + # Optional flag to enable/disable unicode normalization. Default: true + # + # + # The object should respond to either the validate or + # transform messages or both. Both the validate and + # transform methods should take two parameters: name and + # value. The validate method should return true + # or false; true if the value of the variable is valid, + # false otherwise. An InvalidTemplateValueError exception + # will be raised if the value is invalid. The transform method + # should return the transformed variable value as a String. If a + # transform method is used, the value will not be percent encoded + # automatically. Unicode normalization will be performed both before and + # after sending the value to the transform method. + # + # @return [String] The expanded expression + def transform_capture(mapping, capture, processor=nil, + normalize_values=true) + _, operator, varlist = *capture.match(EXPRESSION) + return_value = varlist.split(',').inject([]) do |acc, varspec| + _, name, modifier = *varspec.match(VARSPEC) + value = mapping[name] + unless value == nil || value == {} + allow_reserved = %w(+ #).include?(operator) + # Common primitives where the .to_s output is well-defined + if Numeric === value || Symbol === value || + value == true || value == false + value = value.to_s + end + length = modifier.gsub(':', '').to_i if modifier =~ /^:\d+/ + + unless (Hash === value) || + value.respond_to?(:to_ary) || value.respond_to?(:to_str) + raise TypeError, + "Can't convert #{value.class} into String or Array." + end + + value = normalize_value(value) if normalize_values + + if processor == nil || !processor.respond_to?(:transform) + # Handle percent escaping + if allow_reserved + encode_map = + Addressable::URI::CharacterClasses::RESERVED + + Addressable::URI::CharacterClasses::UNRESERVED + else + encode_map = Addressable::URI::CharacterClasses::UNRESERVED + end + if value.kind_of?(Array) + transformed_value = value.map do |val| + if length + Addressable::URI.encode_component(val[0...length], encode_map) + else + Addressable::URI.encode_component(val, encode_map) + end + end + unless modifier == "*" + transformed_value = transformed_value.join(',') + end + elsif value.kind_of?(Hash) + transformed_value = value.map do |key, val| + if modifier == "*" + "#{ + Addressable::URI.encode_component( key, encode_map) + }=#{ + Addressable::URI.encode_component( val, encode_map) + }" + else + "#{ + Addressable::URI.encode_component( key, encode_map) + },#{ + Addressable::URI.encode_component( val, encode_map) + }" + end + end + unless modifier == "*" + transformed_value = transformed_value.join(',') + end + else + if length + transformed_value = Addressable::URI.encode_component( + value[0...length], encode_map) + else + transformed_value = Addressable::URI.encode_component( + value, encode_map) + end + end + end + + # Process, if we've got a processor + if processor != nil + if processor.respond_to?(:validate) + if !processor.validate(name, value) + display_value = value.kind_of?(Array) ? value.inspect : value + raise InvalidTemplateValueError, + "#{name}=#{display_value} is an invalid template value." + end + end + if processor.respond_to?(:transform) + transformed_value = processor.transform(name, value) + if normalize_values + transformed_value = normalize_value(transformed_value) + end + end + end + acc << [name, transformed_value] + end + acc + end + return "" if return_value.empty? + join_values(operator, return_value) + end + + ## + # Takes a set of values, and joins them together based on the + # operator. + # + # @param [String, Nil] operator One of the operators from the set + # (?,&,+,#,;,/,.), or nil if there wasn't one. + # @param [Array] return_value + # The set of return values (as [variable_name, value] tuples) that will + # be joined together. + # + # @return [String] The transformed mapped value + def join_values(operator, return_value) + leader = LEADERS.fetch(operator, '') + joiner = JOINERS.fetch(operator, ',') + case operator + when '&', '?' + leader + return_value.map{|k,v| + if v.is_a?(Array) && v.first =~ /=/ + v.join(joiner) + elsif v.is_a?(Array) + v.map{|inner_value| "#{k}=#{inner_value}"}.join(joiner) + else + "#{k}=#{v}" + end + }.join(joiner) + when ';' + return_value.map{|k,v| + if v.is_a?(Array) && v.first =~ /=/ + ';' + v.join(";") + elsif v.is_a?(Array) + ';' + v.map{|inner_value| "#{k}=#{inner_value}"}.join(";") + else + v && v != '' ? ";#{k}=#{v}" : ";#{k}" + end + }.join + else + leader + return_value.map{|k,v| v}.join(joiner) + end + end + + ## + # Takes a set of values, and joins them together based on the + # operator. + # + # @param [Hash, Array, String] value + # Normalizes keys and values with IDNA#unicode_normalize_kc + # + # @return [Hash, Array, String] The normalized values + def normalize_value(value) + unless value.is_a?(Hash) + value = value.respond_to?(:to_ary) ? value.to_ary : value.to_str + end + + # Handle unicode normalization + if value.kind_of?(Array) + value.map! { |val| Addressable::IDNA.unicode_normalize_kc(val) } + elsif value.kind_of?(Hash) + value = value.inject({}) { |acc, (k, v)| + acc[Addressable::IDNA.unicode_normalize_kc(k)] = + Addressable::IDNA.unicode_normalize_kc(v) + acc + } + else + value = Addressable::IDNA.unicode_normalize_kc(value) + end + value + end + + ## + # Generates a hash with string keys + # + # @param [Hash] mapping A mapping hash to normalize + # + # @return [Hash] + # A hash with stringified keys + def normalize_keys(mapping) + return mapping.inject({}) do |accu, pair| + name, value = pair + if Symbol === name + name = name.to_s + elsif name.respond_to?(:to_str) + name = name.to_str + else + raise TypeError, + "Can't convert #{name.class} into String." + end + accu[name] = value + accu + end + end + + ## + # Generates the Regexp that parses a template pattern. + # + # @param [String] pattern The URI template pattern. + # @param [#match] processor The template processor to use. + # + # @return [Regexp] + # A regular expression which may be used to parse a template pattern. + def parse_template_pattern(pattern, processor=nil) + # Escape the pattern. The two gsubs restore the escaped curly braces + # back to their original form. Basically, escape everything that isn't + # within an expansion. + escaped_pattern = Regexp.escape( + pattern + ).gsub(/\\\{(.*?)\\\}/) do |escaped| + escaped.gsub(/\\(.)/, "\\1") + end + + expansions = [] + + # Create a regular expression that captures the values of the + # variables in the URI. + regexp_string = escaped_pattern.gsub( EXPRESSION ) do |expansion| + + expansions << expansion + _, operator, varlist = *expansion.match(EXPRESSION) + leader = Regexp.escape(LEADERS.fetch(operator, '')) + joiner = Regexp.escape(JOINERS.fetch(operator, ',')) + combined = varlist.split(',').map do |varspec| + _, name, modifier = *varspec.match(VARSPEC) + + result = processor && processor.respond_to?(:match) ? processor.match(name) : nil + if result + "(?<#{name}>#{ result })" + else + group = case operator + when '+' + "#{ RESERVED }*?" + when '#' + "#{ RESERVED }*?" + when '/' + "#{ UNRESERVED }*?" + when '.' + "#{ UNRESERVED.gsub('\.', '') }*?" + when ';' + "#{ UNRESERVED }*=?#{ UNRESERVED }*?" + when '?' + "#{ UNRESERVED }*=#{ UNRESERVED }*?" + when '&' + "#{ UNRESERVED }*=#{ UNRESERVED }*?" + else + "#{ UNRESERVED }*?" + end + if modifier == '*' + "(?<#{name}>#{group}(?:#{joiner}?#{group})*)?" + else + "(?<#{name}>#{group})?" + end + end + end.join("#{joiner}?") + "(?:|#{leader}#{combined})" + end + + # Ensure that the regular expression matches the whole URI. + regexp_string = "^#{regexp_string}$" + return expansions, Regexp.new(regexp_string) + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/uri.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/uri.rb new file mode 100644 index 0000000000..9109256c3c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/uri.rb @@ -0,0 +1,2510 @@ +# frozen_string_literal: true + +# encoding:utf-8 +#-- +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#++ + + +require "addressable/version" +require "addressable/idna" +require "public_suffix" + +## +# Addressable is a library for processing links and URIs. +module Addressable + ## + # This is an implementation of a URI parser based on + # RFC 3986, + # RFC 3987. + class URI + ## + # Raised if something other than a uri is supplied. + class InvalidURIError < StandardError + end + + ## + # Container for the character classes specified in + # RFC 3986. + module CharacterClasses + ALPHA = "a-zA-Z" + DIGIT = "0-9" + GEN_DELIMS = "\\:\\/\\?\\#\\[\\]\\@" + SUB_DELIMS = "\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=" + RESERVED = GEN_DELIMS + SUB_DELIMS + UNRESERVED = ALPHA + DIGIT + "\\-\\.\\_\\~" + PCHAR = UNRESERVED + SUB_DELIMS + "\\:\\@" + SCHEME = ALPHA + DIGIT + "\\-\\+\\." + HOST = UNRESERVED + SUB_DELIMS + "\\[\\:\\]" + AUTHORITY = PCHAR + PATH = PCHAR + "\\/" + QUERY = PCHAR + "\\/\\?" + FRAGMENT = PCHAR + "\\/\\?" + end + + SLASH = '/' + EMPTY_STR = '' + + URIREGEX = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/ + + PORT_MAPPING = { + "http" => 80, + "https" => 443, + "ftp" => 21, + "tftp" => 69, + "sftp" => 22, + "ssh" => 22, + "svn+ssh" => 22, + "telnet" => 23, + "nntp" => 119, + "gopher" => 70, + "wais" => 210, + "ldap" => 389, + "prospero" => 1525 + } + + ## + # Returns a URI object based on the parsed string. + # + # @param [String, Addressable::URI, #to_str] uri + # The URI string to parse. + # No parsing is performed if the object is already an + # Addressable::URI. + # + # @return [Addressable::URI] The parsed URI. + def self.parse(uri) + # If we were given nil, return nil. + return nil unless uri + # If a URI object is passed, just return itself. + return uri.dup if uri.kind_of?(self) + + # If a URI object of the Ruby standard library variety is passed, + # convert it to a string, then parse the string. + # We do the check this way because we don't want to accidentally + # cause a missing constant exception to be thrown. + if uri.class.name =~ /^URI\b/ + uri = uri.to_s + end + + # Otherwise, convert to a String + begin + uri = uri.to_str + rescue TypeError, NoMethodError + raise TypeError, "Can't convert #{uri.class} into String." + end if not uri.is_a? String + + # This Regexp supplied as an example in RFC 3986, and it works great. + scan = uri.scan(URIREGEX) + fragments = scan[0] + scheme = fragments[1] + authority = fragments[3] + path = fragments[4] + query = fragments[6] + fragment = fragments[8] + user = nil + password = nil + host = nil + port = nil + if authority != nil + # The Regexp above doesn't split apart the authority. + userinfo = authority[/^([^\[\]]*)@/, 1] + if userinfo != nil + user = userinfo.strip[/^([^:]*):?/, 1] + password = userinfo.strip[/:(.*)$/, 1] + end + host = authority.sub( + /^([^\[\]]*)@/, EMPTY_STR + ).sub( + /:([^:@\[\]]*?)$/, EMPTY_STR + ) + port = authority[/:([^:@\[\]]*?)$/, 1] + end + if port == EMPTY_STR + port = nil + end + + return new( + :scheme => scheme, + :user => user, + :password => password, + :host => host, + :port => port, + :path => path, + :query => query, + :fragment => fragment + ) + end + + ## + # Converts an input to a URI. The input does not have to be a valid + # URI — the method will use heuristics to guess what URI was intended. + # This is not standards-compliant, merely user-friendly. + # + # @param [String, Addressable::URI, #to_str] uri + # The URI string to parse. + # No parsing is performed if the object is already an + # Addressable::URI. + # @param [Hash] hints + # A Hash of hints to the heuristic parser. + # Defaults to {:scheme => "http"}. + # + # @return [Addressable::URI] The parsed URI. + def self.heuristic_parse(uri, hints={}) + # If we were given nil, return nil. + return nil unless uri + # If a URI object is passed, just return itself. + return uri.dup if uri.kind_of?(self) + + # If a URI object of the Ruby standard library variety is passed, + # convert it to a string, then parse the string. + # We do the check this way because we don't want to accidentally + # cause a missing constant exception to be thrown. + if uri.class.name =~ /^URI\b/ + uri = uri.to_s + end + + if !uri.respond_to?(:to_str) + raise TypeError, "Can't convert #{uri.class} into String." + end + # Otherwise, convert to a String + uri = uri.to_str.dup.strip + hints = { + :scheme => "http" + }.merge(hints) + case uri + when /^http:\//i + uri.sub!(/^http:\/+/i, "http://") + when /^https:\//i + uri.sub!(/^https:\/+/i, "https://") + when /^feed:\/+http:\//i + uri.sub!(/^feed:\/+http:\/+/i, "feed:http://") + when /^feed:\//i + uri.sub!(/^feed:\/+/i, "feed://") + when %r[^file:/{4}]i + uri.sub!(%r[^file:/+]i, "file:////") + when %r[^file://localhost/]i + uri.sub!(%r[^file://localhost/+]i, "file:///") + when %r[^file:/+]i + uri.sub!(%r[^file:/+]i, "file:///") + when /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ + uri.sub!(/^/, hints[:scheme] + "://") + when /\A\d+\..*:\d+\z/ + uri = "#{hints[:scheme]}://#{uri}" + end + match = uri.match(URIREGEX) + fragments = match.captures + authority = fragments[3] + if authority && authority.length > 0 + new_authority = authority.gsub(/\\/, '/').gsub(/ /, '%20') + # NOTE: We want offset 4, not 3! + offset = match.offset(4) + uri = uri.dup + uri[offset[0]...offset[1]] = new_authority + end + parsed = self.parse(uri) + if parsed.scheme =~ /^[^\/?#\.]+\.[^\/?#]+$/ + parsed = self.parse(hints[:scheme] + "://" + uri) + end + if parsed.path.include?(".") + new_host = parsed.path[/^([^\/]+\.[^\/]*)/, 1] + if new_host + parsed.defer_validation do + new_path = parsed.path.sub( + Regexp.new("^" + Regexp.escape(new_host)), EMPTY_STR) + parsed.host = new_host + parsed.path = new_path + parsed.scheme = hints[:scheme] unless parsed.scheme + end + end + end + return parsed + end + + ## + # Converts a path to a file scheme URI. If the path supplied is + # relative, it will be returned as a relative URI. If the path supplied + # is actually a non-file URI, it will parse the URI as if it had been + # parsed with Addressable::URI.parse. Handles all of the + # various Microsoft-specific formats for specifying paths. + # + # @param [String, Addressable::URI, #to_str] path + # Typically a String path to a file or directory, but + # will return a sensible return value if an absolute URI is supplied + # instead. + # + # @return [Addressable::URI] + # The parsed file scheme URI or the original URI if some other URI + # scheme was provided. + # + # @example + # base = Addressable::URI.convert_path("/absolute/path/") + # uri = Addressable::URI.convert_path("relative/path") + # (base + uri).to_s + # #=> "file:///absolute/path/relative/path" + # + # Addressable::URI.convert_path( + # "c:\\windows\\My Documents 100%20\\foo.txt" + # ).to_s + # #=> "file:///c:/windows/My%20Documents%20100%20/foo.txt" + # + # Addressable::URI.convert_path("http://example.com/").to_s + # #=> "http://example.com/" + def self.convert_path(path) + # If we were given nil, return nil. + return nil unless path + # If a URI object is passed, just return itself. + return path if path.kind_of?(self) + if !path.respond_to?(:to_str) + raise TypeError, "Can't convert #{path.class} into String." + end + # Otherwise, convert to a String + path = path.to_str.strip + + path.sub!(/^file:\/?\/?/, EMPTY_STR) if path =~ /^file:\/?\/?/ + path = SLASH + path if path =~ /^([a-zA-Z])[\|:]/ + uri = self.parse(path) + + if uri.scheme == nil + # Adjust windows-style uris + uri.path.sub!(/^\/?([a-zA-Z])[\|:][\\\/]/) do + "/#{$1.downcase}:/" + end + uri.path.gsub!(/\\/, SLASH) + if File.exist?(uri.path) && + File.stat(uri.path).directory? + uri.path.sub!(/\/$/, EMPTY_STR) + uri.path = uri.path + '/' + end + + # If the path is absolute, set the scheme and host. + if uri.path =~ /^\// + uri.scheme = "file" + uri.host = EMPTY_STR + end + uri.normalize! + end + + return uri + end + + ## + # Joins several URIs together. + # + # @param [String, Addressable::URI, #to_str] *uris + # The URIs to join. + # + # @return [Addressable::URI] The joined URI. + # + # @example + # base = "http://example.com/" + # uri = Addressable::URI.parse("relative/path") + # Addressable::URI.join(base, uri) + # #=> # + def self.join(*uris) + uri_objects = uris.collect do |uri| + if !uri.respond_to?(:to_str) + raise TypeError, "Can't convert #{uri.class} into String." + end + uri.kind_of?(self) ? uri : self.parse(uri.to_str) + end + result = uri_objects.shift.dup + for uri in uri_objects + result.join!(uri) + end + return result + end + + ## + # Percent encodes a URI component. + # + # @param [String, #to_str] component The URI component to encode. + # + # @param [String, Regexp] character_class + # The characters which are not percent encoded. If a String + # is passed, the String must be formatted as a regular + # expression character class. (Do not include the surrounding square + # brackets.) For example, "b-zB-Z0-9" would cause + # everything but the letters 'b' through 'z' and the numbers '0' through + # '9' to be percent encoded. If a Regexp is passed, the + # value /[^b-zB-Z0-9]/ would have the same effect. A set of + # useful String values may be found in the + # Addressable::URI::CharacterClasses module. The default + # value is the reserved plus unreserved character classes specified in + # RFC 3986. + # + # @param [Regexp] upcase_encoded + # A string of characters that may already be percent encoded, and whose + # encodings should be upcased. This allows normalization of percent + # encodings for characters not included in the + # character_class. + # + # @return [String] The encoded component. + # + # @example + # Addressable::URI.encode_component("simple/example", "b-zB-Z0-9") + # => "simple%2Fex%61mple" + # Addressable::URI.encode_component("simple/example", /[^b-zB-Z0-9]/) + # => "simple%2Fex%61mple" + # Addressable::URI.encode_component( + # "simple/example", Addressable::URI::CharacterClasses::UNRESERVED + # ) + # => "simple%2Fexample" + def self.encode_component(component, character_class= + CharacterClasses::RESERVED + CharacterClasses::UNRESERVED, + upcase_encoded='') + return nil if component.nil? + + begin + if component.kind_of?(Symbol) || + component.kind_of?(Numeric) || + component.kind_of?(TrueClass) || + component.kind_of?(FalseClass) + component = component.to_s + else + component = component.to_str + end + rescue TypeError, NoMethodError + raise TypeError, "Can't convert #{component.class} into String." + end if !component.is_a? String + + if ![String, Regexp].include?(character_class.class) + raise TypeError, + "Expected String or Regexp, got #{character_class.inspect}" + end + if character_class.kind_of?(String) + character_class = /[^#{character_class}]/ + end + # We can't perform regexps on invalid UTF sequences, but + # here we need to, so switch to ASCII. + component = component.dup + component.force_encoding(Encoding::ASCII_8BIT) + # Avoiding gsub! because there are edge cases with frozen strings + component = component.gsub(character_class) do |sequence| + (sequence.unpack('C*').map { |c| "%" + ("%02x" % c).upcase }).join + end + if upcase_encoded.length > 0 + component = component.gsub(/%(#{upcase_encoded.chars.map do |char| + char.unpack('C*').map { |c| '%02x' % c }.join + end.join('|')})/i) { |s| s.upcase } + end + return component + end + + class << self + alias_method :encode_component, :encode_component + end + + ## + # Unencodes any percent encoded characters within a URI component. + # This method may be used for unencoding either components or full URIs, + # however, it is recommended to use the unencode_component + # alias when unencoding components. + # + # @param [String, Addressable::URI, #to_str] uri + # The URI or component to unencode. + # + # @param [Class] return_type + # The type of object to return. + # This value may only be set to String or + # Addressable::URI. All other values are invalid. Defaults + # to String. + # + # @param [String] leave_encoded + # A string of characters to leave encoded. If a percent encoded character + # in this list is encountered then it will remain percent encoded. + # + # @return [String, Addressable::URI] + # The unencoded component or URI. + # The return type is determined by the return_type + # parameter. + def self.unencode(uri, return_type=String, leave_encoded='') + return nil if uri.nil? + + begin + uri = uri.to_str + rescue NoMethodError, TypeError + raise TypeError, "Can't convert #{uri.class} into String." + end if !uri.is_a? String + if ![String, ::Addressable::URI].include?(return_type) + raise TypeError, + "Expected Class (String or Addressable::URI), " + + "got #{return_type.inspect}" + end + uri = uri.dup + # Seriously, only use UTF-8. I'm really not kidding! + uri.force_encoding("utf-8") + leave_encoded = leave_encoded.dup.force_encoding("utf-8") + result = uri.gsub(/%[0-9a-f]{2}/iu) do |sequence| + c = sequence[1..3].to_i(16).chr + c.force_encoding("utf-8") + leave_encoded.include?(c) ? sequence : c + end + result.force_encoding("utf-8") + if return_type == String + return result + elsif return_type == ::Addressable::URI + return ::Addressable::URI.parse(result) + end + end + + class << self + alias_method :unescape, :unencode + alias_method :unencode_component, :unencode + alias_method :unescape_component, :unencode + end + + + ## + # Normalizes the encoding of a URI component. + # + # @param [String, #to_str] component The URI component to encode. + # + # @param [String, Regexp] character_class + # The characters which are not percent encoded. If a String + # is passed, the String must be formatted as a regular + # expression character class. (Do not include the surrounding square + # brackets.) For example, "b-zB-Z0-9" would cause + # everything but the letters 'b' through 'z' and the numbers '0' + # through '9' to be percent encoded. If a Regexp is passed, + # the value /[^b-zB-Z0-9]/ would have the same effect. A + # set of useful String values may be found in the + # Addressable::URI::CharacterClasses module. The default + # value is the reserved plus unreserved character classes specified in + # RFC 3986. + # + # @param [String] leave_encoded + # When character_class is a String then + # leave_encoded is a string of characters that should remain + # percent encoded while normalizing the component; if they appear percent + # encoded in the original component, then they will be upcased ("%2f" + # normalized to "%2F") but otherwise left alone. + # + # @return [String] The normalized component. + # + # @example + # Addressable::URI.normalize_component("simpl%65/%65xampl%65", "b-zB-Z") + # => "simple%2Fex%61mple" + # Addressable::URI.normalize_component( + # "simpl%65/%65xampl%65", /[^b-zB-Z]/ + # ) + # => "simple%2Fex%61mple" + # Addressable::URI.normalize_component( + # "simpl%65/%65xampl%65", + # Addressable::URI::CharacterClasses::UNRESERVED + # ) + # => "simple%2Fexample" + # Addressable::URI.normalize_component( + # "one%20two%2fthree%26four", + # "0-9a-zA-Z &/", + # "/" + # ) + # => "one two%2Fthree&four" + def self.normalize_component(component, character_class= + CharacterClasses::RESERVED + CharacterClasses::UNRESERVED, + leave_encoded='') + return nil if component.nil? + + begin + component = component.to_str + rescue NoMethodError, TypeError + raise TypeError, "Can't convert #{component.class} into String." + end if !component.is_a? String + + if ![String, Regexp].include?(character_class.class) + raise TypeError, + "Expected String or Regexp, got #{character_class.inspect}" + end + if character_class.kind_of?(String) + leave_re = if leave_encoded.length > 0 + character_class = "#{character_class}%" unless character_class.include?('%') + + "|%(?!#{leave_encoded.chars.map do |char| + seq = char.unpack('C*').map { |c| '%02x' % c }.join + [seq.upcase, seq.downcase] + end.flatten.join('|')})" + end + + character_class = /[^#{character_class}]#{leave_re}/ + end + # We can't perform regexps on invalid UTF sequences, but + # here we need to, so switch to ASCII. + component = component.dup + component.force_encoding(Encoding::ASCII_8BIT) + unencoded = self.unencode_component(component, String, leave_encoded) + begin + encoded = self.encode_component( + Addressable::IDNA.unicode_normalize_kc(unencoded), + character_class, + leave_encoded + ) + rescue ArgumentError + encoded = self.encode_component(unencoded) + end + encoded.force_encoding(Encoding::UTF_8) + return encoded + end + + ## + # Percent encodes any special characters in the URI. + # + # @param [String, Addressable::URI, #to_str] uri + # The URI to encode. + # + # @param [Class] return_type + # The type of object to return. + # This value may only be set to String or + # Addressable::URI. All other values are invalid. Defaults + # to String. + # + # @return [String, Addressable::URI] + # The encoded URI. + # The return type is determined by the return_type + # parameter. + def self.encode(uri, return_type=String) + return nil if uri.nil? + + begin + uri = uri.to_str + rescue NoMethodError, TypeError + raise TypeError, "Can't convert #{uri.class} into String." + end if !uri.is_a? String + + if ![String, ::Addressable::URI].include?(return_type) + raise TypeError, + "Expected Class (String or Addressable::URI), " + + "got #{return_type.inspect}" + end + uri_object = uri.kind_of?(self) ? uri : self.parse(uri) + encoded_uri = Addressable::URI.new( + :scheme => self.encode_component(uri_object.scheme, + Addressable::URI::CharacterClasses::SCHEME), + :authority => self.encode_component(uri_object.authority, + Addressable::URI::CharacterClasses::AUTHORITY), + :path => self.encode_component(uri_object.path, + Addressable::URI::CharacterClasses::PATH), + :query => self.encode_component(uri_object.query, + Addressable::URI::CharacterClasses::QUERY), + :fragment => self.encode_component(uri_object.fragment, + Addressable::URI::CharacterClasses::FRAGMENT) + ) + if return_type == String + return encoded_uri.to_s + elsif return_type == ::Addressable::URI + return encoded_uri + end + end + + class << self + alias_method :escape, :encode + end + + ## + # Normalizes the encoding of a URI. Characters within a hostname are + # not percent encoded to allow for internationalized domain names. + # + # @param [String, Addressable::URI, #to_str] uri + # The URI to encode. + # + # @param [Class] return_type + # The type of object to return. + # This value may only be set to String or + # Addressable::URI. All other values are invalid. Defaults + # to String. + # + # @return [String, Addressable::URI] + # The encoded URI. + # The return type is determined by the return_type + # parameter. + def self.normalized_encode(uri, return_type=String) + begin + uri = uri.to_str + rescue NoMethodError, TypeError + raise TypeError, "Can't convert #{uri.class} into String." + end if !uri.is_a? String + + if ![String, ::Addressable::URI].include?(return_type) + raise TypeError, + "Expected Class (String or Addressable::URI), " + + "got #{return_type.inspect}" + end + uri_object = uri.kind_of?(self) ? uri : self.parse(uri) + components = { + :scheme => self.unencode_component(uri_object.scheme), + :user => self.unencode_component(uri_object.user), + :password => self.unencode_component(uri_object.password), + :host => self.unencode_component(uri_object.host), + :port => (uri_object.port.nil? ? nil : uri_object.port.to_s), + :path => self.unencode_component(uri_object.path), + :query => self.unencode_component(uri_object.query), + :fragment => self.unencode_component(uri_object.fragment) + } + components.each do |key, value| + if value != nil + begin + components[key] = + Addressable::IDNA.unicode_normalize_kc(value.to_str) + rescue ArgumentError + # Likely a malformed UTF-8 character, skip unicode normalization + components[key] = value.to_str + end + end + end + encoded_uri = Addressable::URI.new( + :scheme => self.encode_component(components[:scheme], + Addressable::URI::CharacterClasses::SCHEME), + :user => self.encode_component(components[:user], + Addressable::URI::CharacterClasses::UNRESERVED), + :password => self.encode_component(components[:password], + Addressable::URI::CharacterClasses::UNRESERVED), + :host => components[:host], + :port => components[:port], + :path => self.encode_component(components[:path], + Addressable::URI::CharacterClasses::PATH), + :query => self.encode_component(components[:query], + Addressable::URI::CharacterClasses::QUERY), + :fragment => self.encode_component(components[:fragment], + Addressable::URI::CharacterClasses::FRAGMENT) + ) + if return_type == String + return encoded_uri.to_s + elsif return_type == ::Addressable::URI + return encoded_uri + end + end + + ## + # Encodes a set of key/value pairs according to the rules for the + # application/x-www-form-urlencoded MIME type. + # + # @param [#to_hash, #to_ary] form_values + # The form values to encode. + # + # @param [TrueClass, FalseClass] sort + # Sort the key/value pairs prior to encoding. + # Defaults to false. + # + # @return [String] + # The encoded value. + def self.form_encode(form_values, sort=false) + if form_values.respond_to?(:to_hash) + form_values = form_values.to_hash.to_a + elsif form_values.respond_to?(:to_ary) + form_values = form_values.to_ary + else + raise TypeError, "Can't convert #{form_values.class} into Array." + end + + form_values = form_values.inject([]) do |accu, (key, value)| + if value.kind_of?(Array) + value.each do |v| + accu << [key.to_s, v.to_s] + end + else + accu << [key.to_s, value.to_s] + end + accu + end + + if sort + # Useful for OAuth and optimizing caching systems + form_values = form_values.sort + end + escaped_form_values = form_values.map do |(key, value)| + # Line breaks are CRLF pairs + [ + self.encode_component( + key.gsub(/(\r\n|\n|\r)/, "\r\n"), + CharacterClasses::UNRESERVED + ).gsub("%20", "+"), + self.encode_component( + value.gsub(/(\r\n|\n|\r)/, "\r\n"), + CharacterClasses::UNRESERVED + ).gsub("%20", "+") + ] + end + return escaped_form_values.map do |(key, value)| + "#{key}=#{value}" + end.join("&") + end + + ## + # Decodes a String according to the rules for the + # application/x-www-form-urlencoded MIME type. + # + # @param [String, #to_str] encoded_value + # The form values to decode. + # + # @return [Array] + # The decoded values. + # This is not a Hash because of the possibility for + # duplicate keys. + def self.form_unencode(encoded_value) + if !encoded_value.respond_to?(:to_str) + raise TypeError, "Can't convert #{encoded_value.class} into String." + end + encoded_value = encoded_value.to_str + split_values = encoded_value.split("&").map do |pair| + pair.split("=", 2) + end + return split_values.map do |(key, value)| + [ + key ? self.unencode_component( + key.gsub("+", "%20")).gsub(/(\r\n|\n|\r)/, "\n") : nil, + value ? (self.unencode_component( + value.gsub("+", "%20")).gsub(/(\r\n|\n|\r)/, "\n")) : nil + ] + end + end + + ## + # Creates a new uri object from component parts. + # + # @option [String, #to_str] scheme The scheme component. + # @option [String, #to_str] user The user component. + # @option [String, #to_str] password The password component. + # @option [String, #to_str] userinfo + # The userinfo component. If this is supplied, the user and password + # components must be omitted. + # @option [String, #to_str] host The host component. + # @option [String, #to_str] port The port component. + # @option [String, #to_str] authority + # The authority component. If this is supplied, the user, password, + # userinfo, host, and port components must be omitted. + # @option [String, #to_str] path The path component. + # @option [String, #to_str] query The query component. + # @option [String, #to_str] fragment The fragment component. + # + # @return [Addressable::URI] The constructed URI object. + def initialize(options={}) + if options.has_key?(:authority) + if (options.keys & [:userinfo, :user, :password, :host, :port]).any? + raise ArgumentError, + "Cannot specify both an authority and any of the components " + + "within the authority." + end + end + if options.has_key?(:userinfo) + if (options.keys & [:user, :password]).any? + raise ArgumentError, + "Cannot specify both a userinfo and either the user or password." + end + end + + self.defer_validation do + # Bunch of crazy logic required because of the composite components + # like userinfo and authority. + self.scheme = options[:scheme] if options[:scheme] + self.user = options[:user] if options[:user] + self.password = options[:password] if options[:password] + self.userinfo = options[:userinfo] if options[:userinfo] + self.host = options[:host] if options[:host] + self.port = options[:port] if options[:port] + self.authority = options[:authority] if options[:authority] + self.path = options[:path] if options[:path] + self.query = options[:query] if options[:query] + self.query_values = options[:query_values] if options[:query_values] + self.fragment = options[:fragment] if options[:fragment] + end + self.to_s + end + + ## + # Freeze URI, initializing instance variables. + # + # @return [Addressable::URI] The frozen URI object. + def freeze + self.normalized_scheme + self.normalized_user + self.normalized_password + self.normalized_userinfo + self.normalized_host + self.normalized_port + self.normalized_authority + self.normalized_site + self.normalized_path + self.normalized_query + self.normalized_fragment + self.hash + super + end + + ## + # The scheme component for this URI. + # + # @return [String] The scheme component. + def scheme + return defined?(@scheme) ? @scheme : nil + end + + ## + # The scheme component for this URI, normalized. + # + # @return [String] The scheme component, normalized. + def normalized_scheme + return nil unless self.scheme + @normalized_scheme ||= begin + if self.scheme =~ /^\s*ssh\+svn\s*$/i + "svn+ssh".dup + else + Addressable::URI.normalize_component( + self.scheme.strip.downcase, + Addressable::URI::CharacterClasses::SCHEME + ) + end + end + # All normalized values should be UTF-8 + @normalized_scheme.force_encoding(Encoding::UTF_8) if @normalized_scheme + @normalized_scheme + end + + ## + # Sets the scheme component for this URI. + # + # @param [String, #to_str] new_scheme The new scheme component. + def scheme=(new_scheme) + if new_scheme && !new_scheme.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_scheme.class} into String." + elsif new_scheme + new_scheme = new_scheme.to_str + end + if new_scheme && new_scheme !~ /\A[a-z][a-z0-9\.\+\-]*\z/i + raise InvalidURIError, "Invalid scheme format: #{new_scheme}" + end + @scheme = new_scheme + @scheme = nil if @scheme.to_s.strip.empty? + + # Reset dependent values + remove_instance_variable(:@normalized_scheme) if defined?(@normalized_scheme) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The user component for this URI. + # + # @return [String] The user component. + def user + return defined?(@user) ? @user : nil + end + + ## + # The user component for this URI, normalized. + # + # @return [String] The user component, normalized. + def normalized_user + return nil unless self.user + return @normalized_user if defined?(@normalized_user) + @normalized_user ||= begin + if normalized_scheme =~ /https?/ && self.user.strip.empty? && + (!self.password || self.password.strip.empty?) + nil + else + Addressable::URI.normalize_component( + self.user.strip, + Addressable::URI::CharacterClasses::UNRESERVED + ) + end + end + # All normalized values should be UTF-8 + @normalized_user.force_encoding(Encoding::UTF_8) if @normalized_user + @normalized_user + end + + ## + # Sets the user component for this URI. + # + # @param [String, #to_str] new_user The new user component. + def user=(new_user) + if new_user && !new_user.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_user.class} into String." + end + @user = new_user ? new_user.to_str : nil + + # You can't have a nil user with a non-nil password + if password != nil + @user = EMPTY_STR if @user.nil? + end + + # Reset dependent values + remove_instance_variable(:@userinfo) if defined?(@userinfo) + remove_instance_variable(:@normalized_userinfo) if defined?(@normalized_userinfo) + remove_instance_variable(:@authority) if defined?(@authority) + remove_instance_variable(:@normalized_user) if defined?(@normalized_user) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The password component for this URI. + # + # @return [String] The password component. + def password + return defined?(@password) ? @password : nil + end + + ## + # The password component for this URI, normalized. + # + # @return [String] The password component, normalized. + def normalized_password + return nil unless self.password + return @normalized_password if defined?(@normalized_password) + @normalized_password ||= begin + if self.normalized_scheme =~ /https?/ && self.password.strip.empty? && + (!self.user || self.user.strip.empty?) + nil + else + Addressable::URI.normalize_component( + self.password.strip, + Addressable::URI::CharacterClasses::UNRESERVED + ) + end + end + # All normalized values should be UTF-8 + if @normalized_password + @normalized_password.force_encoding(Encoding::UTF_8) + end + @normalized_password + end + + ## + # Sets the password component for this URI. + # + # @param [String, #to_str] new_password The new password component. + def password=(new_password) + if new_password && !new_password.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_password.class} into String." + end + @password = new_password ? new_password.to_str : nil + + # You can't have a nil user with a non-nil password + @password ||= nil + @user ||= nil + if @password != nil + @user = EMPTY_STR if @user.nil? + end + + # Reset dependent values + remove_instance_variable(:@userinfo) if defined?(@userinfo) + remove_instance_variable(:@normalized_userinfo) if defined?(@normalized_userinfo) + remove_instance_variable(:@authority) if defined?(@authority) + remove_instance_variable(:@normalized_password) if defined?(@normalized_password) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The userinfo component for this URI. + # Combines the user and password components. + # + # @return [String] The userinfo component. + def userinfo + current_user = self.user + current_password = self.password + (current_user || current_password) && @userinfo ||= begin + if current_user && current_password + "#{current_user}:#{current_password}" + elsif current_user && !current_password + "#{current_user}" + end + end + end + + ## + # The userinfo component for this URI, normalized. + # + # @return [String] The userinfo component, normalized. + def normalized_userinfo + return nil unless self.userinfo + return @normalized_userinfo if defined?(@normalized_userinfo) + @normalized_userinfo ||= begin + current_user = self.normalized_user + current_password = self.normalized_password + if !current_user && !current_password + nil + elsif current_user && current_password + "#{current_user}:#{current_password}".dup + elsif current_user && !current_password + "#{current_user}".dup + end + end + # All normalized values should be UTF-8 + if @normalized_userinfo + @normalized_userinfo.force_encoding(Encoding::UTF_8) + end + @normalized_userinfo + end + + ## + # Sets the userinfo component for this URI. + # + # @param [String, #to_str] new_userinfo The new userinfo component. + def userinfo=(new_userinfo) + if new_userinfo && !new_userinfo.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_userinfo.class} into String." + end + new_user, new_password = if new_userinfo + [ + new_userinfo.to_str.strip[/^(.*):/, 1], + new_userinfo.to_str.strip[/:(.*)$/, 1] + ] + else + [nil, nil] + end + + # Password assigned first to ensure validity in case of nil + self.password = new_password + self.user = new_user + + # Reset dependent values + remove_instance_variable(:@authority) if defined?(@authority) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The host component for this URI. + # + # @return [String] The host component. + def host + return defined?(@host) ? @host : nil + end + + ## + # The host component for this URI, normalized. + # + # @return [String] The host component, normalized. + def normalized_host + return nil unless self.host + @normalized_host ||= begin + if !self.host.strip.empty? + result = ::Addressable::IDNA.to_ascii( + URI.unencode_component(self.host.strip.downcase) + ) + if result =~ /[^\.]\.$/ + # Single trailing dots are unnecessary. + result = result[0...-1] + end + result = Addressable::URI.normalize_component( + result, + CharacterClasses::HOST) + result + else + EMPTY_STR.dup + end + end + # All normalized values should be UTF-8 + @normalized_host.force_encoding(Encoding::UTF_8) if @normalized_host + @normalized_host + end + + ## + # Sets the host component for this URI. + # + # @param [String, #to_str] new_host The new host component. + def host=(new_host) + if new_host && !new_host.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_host.class} into String." + end + @host = new_host ? new_host.to_str : nil + + # Reset dependent values + remove_instance_variable(:@authority) if defined?(@authority) + remove_instance_variable(:@normalized_host) if defined?(@normalized_host) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # This method is same as URI::Generic#host except + # brackets for IPv6 (and 'IPvFuture') addresses are removed. + # + # @see Addressable::URI#host + # + # @return [String] The hostname for this URI. + def hostname + v = self.host + /\A\[(.*)\]\z/ =~ v ? $1 : v + end + + ## + # This method is same as URI::Generic#host= except + # the argument can be a bare IPv6 address (or 'IPvFuture'). + # + # @see Addressable::URI#host= + # + # @param [String, #to_str] new_hostname The new hostname for this URI. + def hostname=(new_hostname) + if new_hostname && + (new_hostname.respond_to?(:ipv4?) || new_hostname.respond_to?(:ipv6?)) + new_hostname = new_hostname.to_s + elsif new_hostname && !new_hostname.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_hostname.class} into String." + end + v = new_hostname ? new_hostname.to_str : nil + v = "[#{v}]" if /\A\[.*\]\z/ !~ v && /:/ =~ v + self.host = v + end + + ## + # Returns the top-level domain for this host. + # + # @example + # Addressable::URI.parse("www.example.co.uk").tld # => "co.uk" + def tld + PublicSuffix.parse(self.host, ignore_private: true).tld + end + + ## + # Sets the top-level domain for this URI. + # + # @param [String, #to_str] new_tld The new top-level domain. + def tld=(new_tld) + replaced_tld = domain.sub(/#{tld}\z/, new_tld) + self.host = PublicSuffix::Domain.new(replaced_tld).to_s + end + + ## + # Returns the public suffix domain for this host. + # + # @example + # Addressable::URI.parse("www.example.co.uk").domain # => "example.co.uk" + def domain + PublicSuffix.domain(self.host, ignore_private: true) + end + + ## + # The authority component for this URI. + # Combines the user, password, host, and port components. + # + # @return [String] The authority component. + def authority + self.host && @authority ||= begin + authority = String.new + if self.userinfo != nil + authority << "#{self.userinfo}@" + end + authority << self.host + if self.port != nil + authority << ":#{self.port}" + end + authority + end + end + + ## + # The authority component for this URI, normalized. + # + # @return [String] The authority component, normalized. + def normalized_authority + return nil unless self.authority + @normalized_authority ||= begin + authority = String.new + if self.normalized_userinfo != nil + authority << "#{self.normalized_userinfo}@" + end + authority << self.normalized_host + if self.normalized_port != nil + authority << ":#{self.normalized_port}" + end + authority + end + # All normalized values should be UTF-8 + if @normalized_authority + @normalized_authority.force_encoding(Encoding::UTF_8) + end + @normalized_authority + end + + ## + # Sets the authority component for this URI. + # + # @param [String, #to_str] new_authority The new authority component. + def authority=(new_authority) + if new_authority + if !new_authority.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_authority.class} into String." + end + new_authority = new_authority.to_str + new_userinfo = new_authority[/^([^\[\]]*)@/, 1] + if new_userinfo + new_user = new_userinfo.strip[/^([^:]*):?/, 1] + new_password = new_userinfo.strip[/:(.*)$/, 1] + end + new_host = new_authority.sub( + /^([^\[\]]*)@/, EMPTY_STR + ).sub( + /:([^:@\[\]]*?)$/, EMPTY_STR + ) + new_port = + new_authority[/:([^:@\[\]]*?)$/, 1] + end + + # Password assigned first to ensure validity in case of nil + self.password = defined?(new_password) ? new_password : nil + self.user = defined?(new_user) ? new_user : nil + self.host = defined?(new_host) ? new_host : nil + self.port = defined?(new_port) ? new_port : nil + + # Reset dependent values + remove_instance_variable(:@userinfo) if defined?(@userinfo) + remove_instance_variable(:@normalized_userinfo) if defined?(@normalized_userinfo) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The origin for this URI, serialized to ASCII, as per + # RFC 6454, section 6.2. + # + # @return [String] The serialized origin. + def origin + if self.scheme && self.authority + if self.normalized_port + "#{self.normalized_scheme}://#{self.normalized_host}" + + ":#{self.normalized_port}" + else + "#{self.normalized_scheme}://#{self.normalized_host}" + end + else + "null" + end + end + + ## + # Sets the origin for this URI, serialized to ASCII, as per + # RFC 6454, section 6.2. This assignment will reset the `userinfo` + # component. + # + # @param [String, #to_str] new_origin The new origin component. + def origin=(new_origin) + if new_origin + if !new_origin.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_origin.class} into String." + end + new_origin = new_origin.to_str + new_scheme = new_origin[/^([^:\/?#]+):\/\//, 1] + unless new_scheme + raise InvalidURIError, 'An origin cannot omit the scheme.' + end + new_host = new_origin[/:\/\/([^\/?#:]+)/, 1] + unless new_host + raise InvalidURIError, 'An origin cannot omit the host.' + end + new_port = new_origin[/:([^:@\[\]\/]*?)$/, 1] + end + + self.scheme = defined?(new_scheme) ? new_scheme : nil + self.host = defined?(new_host) ? new_host : nil + self.port = defined?(new_port) ? new_port : nil + self.userinfo = nil + + # Reset dependent values + remove_instance_variable(:@userinfo) if defined?(@userinfo) + remove_instance_variable(:@normalized_userinfo) if defined?(@normalized_userinfo) + remove_instance_variable(:@authority) if defined?(@authority) + remove_instance_variable(:@normalized_authority) if defined?(@normalized_authority) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + # Returns an array of known ip-based schemes. These schemes typically + # use a similar URI form: + # //:@:/ + def self.ip_based_schemes + return self.port_mapping.keys + end + + # Returns a hash of common IP-based schemes and their default port + # numbers. Adding new schemes to this hash, as necessary, will allow + # for better URI normalization. + def self.port_mapping + PORT_MAPPING + end + + ## + # The port component for this URI. + # This is the port number actually given in the URI. This does not + # infer port numbers from default values. + # + # @return [Integer] The port component. + def port + return defined?(@port) ? @port : nil + end + + ## + # The port component for this URI, normalized. + # + # @return [Integer] The port component, normalized. + def normalized_port + return nil unless self.port + return @normalized_port if defined?(@normalized_port) + @normalized_port ||= begin + if URI.port_mapping[self.normalized_scheme] == self.port + nil + else + self.port + end + end + end + + ## + # Sets the port component for this URI. + # + # @param [String, Integer, #to_s] new_port The new port component. + def port=(new_port) + if new_port != nil && new_port.respond_to?(:to_str) + new_port = Addressable::URI.unencode_component(new_port.to_str) + end + + if new_port.respond_to?(:valid_encoding?) && !new_port.valid_encoding? + raise InvalidURIError, "Invalid encoding in port" + end + + if new_port != nil && !(new_port.to_s =~ /^\d+$/) + raise InvalidURIError, + "Invalid port number: #{new_port.inspect}" + end + + @port = new_port.to_s.to_i + @port = nil if @port == 0 + + # Reset dependent values + remove_instance_variable(:@authority) if defined?(@authority) + remove_instance_variable(:@normalized_port) if defined?(@normalized_port) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The inferred port component for this URI. + # This method will normalize to the default port for the URI's scheme if + # the port isn't explicitly specified in the URI. + # + # @return [Integer] The inferred port component. + def inferred_port + if self.port.to_i == 0 + self.default_port + else + self.port.to_i + end + end + + ## + # The default port for this URI's scheme. + # This method will always returns the default port for the URI's scheme + # regardless of the presence of an explicit port in the URI. + # + # @return [Integer] The default port. + def default_port + URI.port_mapping[self.scheme.strip.downcase] if self.scheme + end + + ## + # The combination of components that represent a site. + # Combines the scheme, user, password, host, and port components. + # Primarily useful for HTTP and HTTPS. + # + # For example, "http://example.com/path?query" would have a + # site value of "http://example.com". + # + # @return [String] The components that identify a site. + def site + (self.scheme || self.authority) && @site ||= begin + site_string = "".dup + site_string << "#{self.scheme}:" if self.scheme != nil + site_string << "//#{self.authority}" if self.authority != nil + site_string + end + end + + ## + # The normalized combination of components that represent a site. + # Combines the scheme, user, password, host, and port components. + # Primarily useful for HTTP and HTTPS. + # + # For example, "http://example.com/path?query" would have a + # site value of "http://example.com". + # + # @return [String] The normalized components that identify a site. + def normalized_site + return nil unless self.site + @normalized_site ||= begin + site_string = "".dup + if self.normalized_scheme != nil + site_string << "#{self.normalized_scheme}:" + end + if self.normalized_authority != nil + site_string << "//#{self.normalized_authority}" + end + site_string + end + # All normalized values should be UTF-8 + @normalized_site.force_encoding(Encoding::UTF_8) if @normalized_site + @normalized_site + end + + ## + # Sets the site value for this URI. + # + # @param [String, #to_str] new_site The new site value. + def site=(new_site) + if new_site + if !new_site.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_site.class} into String." + end + new_site = new_site.to_str + # These two regular expressions derived from the primary parsing + # expression + self.scheme = new_site[/^(?:([^:\/?#]+):)?(?:\/\/(?:[^\/?#]*))?$/, 1] + self.authority = new_site[ + /^(?:(?:[^:\/?#]+):)?(?:\/\/([^\/?#]*))?$/, 1 + ] + else + self.scheme = nil + self.authority = nil + end + end + + ## + # The path component for this URI. + # + # @return [String] The path component. + def path + return defined?(@path) ? @path : EMPTY_STR + end + + NORMPATH = /^(?!\/)[^\/:]*:.*$/ + ## + # The path component for this URI, normalized. + # + # @return [String] The path component, normalized. + def normalized_path + @normalized_path ||= begin + path = self.path.to_s + if self.scheme == nil && path =~ NORMPATH + # Relative paths with colons in the first segment are ambiguous. + path = path.sub(":", "%2F") + end + # String#split(delimeter, -1) uses the more strict splitting behavior + # found by default in Python. + result = path.strip.split(SLASH, -1).map do |segment| + Addressable::URI.normalize_component( + segment, + Addressable::URI::CharacterClasses::PCHAR + ) + end.join(SLASH) + + result = URI.normalize_path(result) + if result.empty? && + ["http", "https", "ftp", "tftp"].include?(self.normalized_scheme) + result = SLASH.dup + end + result + end + # All normalized values should be UTF-8 + @normalized_path.force_encoding(Encoding::UTF_8) if @normalized_path + @normalized_path + end + + ## + # Sets the path component for this URI. + # + # @param [String, #to_str] new_path The new path component. + def path=(new_path) + if new_path && !new_path.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_path.class} into String." + end + @path = (new_path || EMPTY_STR).to_str + if !@path.empty? && @path[0..0] != SLASH && host != nil + @path = "/#{@path}" + end + + # Reset dependent values + remove_instance_variable(:@normalized_path) if defined?(@normalized_path) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # The basename, if any, of the file in the path component. + # + # @return [String] The path's basename. + def basename + # Path cannot be nil + return File.basename(self.path).sub(/;[^\/]*$/, EMPTY_STR) + end + + ## + # The extname, if any, of the file in the path component. + # Empty string if there is no extension. + # + # @return [String] The path's extname. + def extname + return nil unless self.path + return File.extname(self.basename) + end + + ## + # The query component for this URI. + # + # @return [String] The query component. + def query + return defined?(@query) ? @query : nil + end + + ## + # The query component for this URI, normalized. + # + # @return [String] The query component, normalized. + def normalized_query(*flags) + return nil unless self.query + return @normalized_query if defined?(@normalized_query) + @normalized_query ||= begin + modified_query_class = Addressable::URI::CharacterClasses::QUERY.dup + # Make sure possible key-value pair delimiters are escaped. + modified_query_class.sub!("\\&", "").sub!("\\;", "") + pairs = (self.query || "").split("&", -1) + pairs.sort! if flags.include?(:sorted) + component = pairs.map do |pair| + Addressable::URI.normalize_component(pair, modified_query_class, "+") + end.join("&") + component == "" ? nil : component + end + # All normalized values should be UTF-8 + @normalized_query.force_encoding(Encoding::UTF_8) if @normalized_query + @normalized_query + end + + ## + # Sets the query component for this URI. + # + # @param [String, #to_str] new_query The new query component. + def query=(new_query) + if new_query && !new_query.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_query.class} into String." + end + @query = new_query ? new_query.to_str : nil + + # Reset dependent values + remove_instance_variable(:@normalized_query) if defined?(@normalized_query) + remove_composite_values + end + + ## + # Converts the query component to a Hash value. + # + # @param [Class] return_type The return type desired. Value must be either + # `Hash` or `Array`. + # + # @return [Hash, Array, nil] The query string parsed as a Hash or Array + # or nil if the query string is blank. + # + # @example + # Addressable::URI.parse("?one=1&two=2&three=3").query_values + # #=> {"one" => "1", "two" => "2", "three" => "3"} + # Addressable::URI.parse("?one=two&one=three").query_values(Array) + # #=> [["one", "two"], ["one", "three"]] + # Addressable::URI.parse("?one=two&one=three").query_values(Hash) + # #=> {"one" => "three"} + # Addressable::URI.parse("?").query_values + # #=> {} + # Addressable::URI.parse("").query_values + # #=> nil + def query_values(return_type=Hash) + empty_accumulator = Array == return_type ? [] : {} + if return_type != Hash && return_type != Array + raise ArgumentError, "Invalid return type. Must be Hash or Array." + end + return nil if self.query == nil + split_query = self.query.split("&").map do |pair| + pair.split("=", 2) if pair && !pair.empty? + end.compact + return split_query.inject(empty_accumulator.dup) do |accu, pair| + # I'd rather use key/value identifiers instead of array lookups, + # but in this case I really want to maintain the exact pair structure, + # so it's best to make all changes in-place. + pair[0] = URI.unencode_component(pair[0]) + if pair[1].respond_to?(:to_str) + # I loathe the fact that I have to do this. Stupid HTML 4.01. + # Treating '+' as a space was just an unbelievably bad idea. + # There was nothing wrong with '%20'! + # If it ain't broke, don't fix it! + pair[1] = URI.unencode_component(pair[1].to_str.gsub(/\+/, " ")) + end + if return_type == Hash + accu[pair[0]] = pair[1] + else + accu << pair + end + accu + end + end + + ## + # Sets the query component for this URI from a Hash object. + # An empty Hash or Array will result in an empty query string. + # + # @param [Hash, #to_hash, Array] new_query_values The new query values. + # + # @example + # uri.query_values = {:a => "a", :b => ["c", "d", "e"]} + # uri.query + # # => "a=a&b=c&b=d&b=e" + # uri.query_values = [['a', 'a'], ['b', 'c'], ['b', 'd'], ['b', 'e']] + # uri.query + # # => "a=a&b=c&b=d&b=e" + # uri.query_values = [['a', 'a'], ['b', ['c', 'd', 'e']]] + # uri.query + # # => "a=a&b=c&b=d&b=e" + # uri.query_values = [['flag'], ['key', 'value']] + # uri.query + # # => "flag&key=value" + def query_values=(new_query_values) + if new_query_values == nil + self.query = nil + return nil + end + + if !new_query_values.is_a?(Array) + if !new_query_values.respond_to?(:to_hash) + raise TypeError, + "Can't convert #{new_query_values.class} into Hash." + end + new_query_values = new_query_values.to_hash + new_query_values = new_query_values.map do |key, value| + key = key.to_s if key.kind_of?(Symbol) + [key, value] + end + # Useful default for OAuth and caching. + # Only to be used for non-Array inputs. Arrays should preserve order. + new_query_values.sort! + end + + # new_query_values have form [['key1', 'value1'], ['key2', 'value2']] + buffer = "".dup + new_query_values.each do |key, value| + encoded_key = URI.encode_component( + key, CharacterClasses::UNRESERVED + ) + if value == nil + buffer << "#{encoded_key}&" + elsif value.kind_of?(Array) + value.each do |sub_value| + encoded_value = URI.encode_component( + sub_value, CharacterClasses::UNRESERVED + ) + buffer << "#{encoded_key}=#{encoded_value}&" + end + else + encoded_value = URI.encode_component( + value, CharacterClasses::UNRESERVED + ) + buffer << "#{encoded_key}=#{encoded_value}&" + end + end + self.query = buffer.chop + end + + ## + # The HTTP request URI for this URI. This is the path and the + # query string. + # + # @return [String] The request URI required for an HTTP request. + def request_uri + return nil if self.absolute? && self.scheme !~ /^https?$/i + return ( + (!self.path.empty? ? self.path : SLASH) + + (self.query ? "?#{self.query}" : EMPTY_STR) + ) + end + + ## + # Sets the HTTP request URI for this URI. + # + # @param [String, #to_str] new_request_uri The new HTTP request URI. + def request_uri=(new_request_uri) + if !new_request_uri.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_request_uri.class} into String." + end + if self.absolute? && self.scheme !~ /^https?$/i + raise InvalidURIError, + "Cannot set an HTTP request URI for a non-HTTP URI." + end + new_request_uri = new_request_uri.to_str + path_component = new_request_uri[/^([^\?]*)\??(?:.*)$/, 1] + query_component = new_request_uri[/^(?:[^\?]*)\?(.*)$/, 1] + path_component = path_component.to_s + path_component = (!path_component.empty? ? path_component : SLASH) + self.path = path_component + self.query = query_component + + # Reset dependent values + remove_composite_values + end + + ## + # The fragment component for this URI. + # + # @return [String] The fragment component. + def fragment + return defined?(@fragment) ? @fragment : nil + end + + ## + # The fragment component for this URI, normalized. + # + # @return [String] The fragment component, normalized. + def normalized_fragment + return nil unless self.fragment + return @normalized_fragment if defined?(@normalized_fragment) + @normalized_fragment ||= begin + component = Addressable::URI.normalize_component( + self.fragment, + Addressable::URI::CharacterClasses::FRAGMENT + ) + component == "" ? nil : component + end + # All normalized values should be UTF-8 + if @normalized_fragment + @normalized_fragment.force_encoding(Encoding::UTF_8) + end + @normalized_fragment + end + + ## + # Sets the fragment component for this URI. + # + # @param [String, #to_str] new_fragment The new fragment component. + def fragment=(new_fragment) + if new_fragment && !new_fragment.respond_to?(:to_str) + raise TypeError, "Can't convert #{new_fragment.class} into String." + end + @fragment = new_fragment ? new_fragment.to_str : nil + + # Reset dependent values + remove_instance_variable(:@normalized_fragment) if defined?(@normalized_fragment) + remove_composite_values + + # Ensure we haven't created an invalid URI + validate() + end + + ## + # Determines if the scheme indicates an IP-based protocol. + # + # @return [TrueClass, FalseClass] + # true if the scheme indicates an IP-based protocol. + # false otherwise. + def ip_based? + if self.scheme + return URI.ip_based_schemes.include?( + self.scheme.strip.downcase) + end + return false + end + + ## + # Determines if the URI is relative. + # + # @return [TrueClass, FalseClass] + # true if the URI is relative. false + # otherwise. + def relative? + return self.scheme.nil? + end + + ## + # Determines if the URI is absolute. + # + # @return [TrueClass, FalseClass] + # true if the URI is absolute. false + # otherwise. + def absolute? + return !relative? + end + + ## + # Joins two URIs together. + # + # @param [String, Addressable::URI, #to_str] The URI to join with. + # + # @return [Addressable::URI] The joined URI. + def join(uri) + if !uri.respond_to?(:to_str) + raise TypeError, "Can't convert #{uri.class} into String." + end + if !uri.kind_of?(URI) + # Otherwise, convert to a String, then parse. + uri = URI.parse(uri.to_str) + end + if uri.to_s.empty? + return self.dup + end + + joined_scheme = nil + joined_user = nil + joined_password = nil + joined_host = nil + joined_port = nil + joined_path = nil + joined_query = nil + joined_fragment = nil + + # Section 5.2.2 of RFC 3986 + if uri.scheme != nil + joined_scheme = uri.scheme + joined_user = uri.user + joined_password = uri.password + joined_host = uri.host + joined_port = uri.port + joined_path = URI.normalize_path(uri.path) + joined_query = uri.query + else + if uri.authority != nil + joined_user = uri.user + joined_password = uri.password + joined_host = uri.host + joined_port = uri.port + joined_path = URI.normalize_path(uri.path) + joined_query = uri.query + else + if uri.path == nil || uri.path.empty? + joined_path = self.path + if uri.query != nil + joined_query = uri.query + else + joined_query = self.query + end + else + if uri.path[0..0] == SLASH + joined_path = URI.normalize_path(uri.path) + else + base_path = self.path.dup + base_path = EMPTY_STR if base_path == nil + base_path = URI.normalize_path(base_path) + + # Section 5.2.3 of RFC 3986 + # + # Removes the right-most path segment from the base path. + if base_path =~ /\// + base_path.sub!(/\/[^\/]+$/, SLASH) + else + base_path = EMPTY_STR + end + + # If the base path is empty and an authority segment has been + # defined, use a base path of SLASH + if base_path.empty? && self.authority != nil + base_path = SLASH + end + + joined_path = URI.normalize_path(base_path + uri.path) + end + joined_query = uri.query + end + joined_user = self.user + joined_password = self.password + joined_host = self.host + joined_port = self.port + end + joined_scheme = self.scheme + end + joined_fragment = uri.fragment + + return self.class.new( + :scheme => joined_scheme, + :user => joined_user, + :password => joined_password, + :host => joined_host, + :port => joined_port, + :path => joined_path, + :query => joined_query, + :fragment => joined_fragment + ) + end + alias_method :+, :join + + ## + # Destructive form of join. + # + # @param [String, Addressable::URI, #to_str] The URI to join with. + # + # @return [Addressable::URI] The joined URI. + # + # @see Addressable::URI#join + def join!(uri) + replace_self(self.join(uri)) + end + + ## + # Merges a URI with a Hash of components. + # This method has different behavior from join. Any + # components present in the hash parameter will override the + # original components. The path component is not treated specially. + # + # @param [Hash, Addressable::URI, #to_hash] The components to merge with. + # + # @return [Addressable::URI] The merged URI. + # + # @see Hash#merge + def merge(hash) + if !hash.respond_to?(:to_hash) + raise TypeError, "Can't convert #{hash.class} into Hash." + end + hash = hash.to_hash + + if hash.has_key?(:authority) + if (hash.keys & [:userinfo, :user, :password, :host, :port]).any? + raise ArgumentError, + "Cannot specify both an authority and any of the components " + + "within the authority." + end + end + if hash.has_key?(:userinfo) + if (hash.keys & [:user, :password]).any? + raise ArgumentError, + "Cannot specify both a userinfo and either the user or password." + end + end + + uri = self.class.new + uri.defer_validation do + # Bunch of crazy logic required because of the composite components + # like userinfo and authority. + uri.scheme = + hash.has_key?(:scheme) ? hash[:scheme] : self.scheme + if hash.has_key?(:authority) + uri.authority = + hash.has_key?(:authority) ? hash[:authority] : self.authority + end + if hash.has_key?(:userinfo) + uri.userinfo = + hash.has_key?(:userinfo) ? hash[:userinfo] : self.userinfo + end + if !hash.has_key?(:userinfo) && !hash.has_key?(:authority) + uri.user = + hash.has_key?(:user) ? hash[:user] : self.user + uri.password = + hash.has_key?(:password) ? hash[:password] : self.password + end + if !hash.has_key?(:authority) + uri.host = + hash.has_key?(:host) ? hash[:host] : self.host + uri.port = + hash.has_key?(:port) ? hash[:port] : self.port + end + uri.path = + hash.has_key?(:path) ? hash[:path] : self.path + uri.query = + hash.has_key?(:query) ? hash[:query] : self.query + uri.fragment = + hash.has_key?(:fragment) ? hash[:fragment] : self.fragment + end + + return uri + end + + ## + # Destructive form of merge. + # + # @param [Hash, Addressable::URI, #to_hash] The components to merge with. + # + # @return [Addressable::URI] The merged URI. + # + # @see Addressable::URI#merge + def merge!(uri) + replace_self(self.merge(uri)) + end + + ## + # Returns the shortest normalized relative form of this URI that uses the + # supplied URI as a base for resolution. Returns an absolute URI if + # necessary. This is effectively the opposite of route_to. + # + # @param [String, Addressable::URI, #to_str] uri The URI to route from. + # + # @return [Addressable::URI] + # The normalized relative URI that is equivalent to the original URI. + def route_from(uri) + uri = URI.parse(uri).normalize + normalized_self = self.normalize + if normalized_self.relative? + raise ArgumentError, "Expected absolute URI, got: #{self.to_s}" + end + if uri.relative? + raise ArgumentError, "Expected absolute URI, got: #{uri.to_s}" + end + if normalized_self == uri + return Addressable::URI.parse("##{normalized_self.fragment}") + end + components = normalized_self.to_hash + if normalized_self.scheme == uri.scheme + components[:scheme] = nil + if normalized_self.authority == uri.authority + components[:user] = nil + components[:password] = nil + components[:host] = nil + components[:port] = nil + if normalized_self.path == uri.path + components[:path] = nil + if normalized_self.query == uri.query + components[:query] = nil + end + else + if uri.path != SLASH and components[:path] + self_splitted_path = split_path(components[:path]) + uri_splitted_path = split_path(uri.path) + self_dir = self_splitted_path.shift + uri_dir = uri_splitted_path.shift + while !self_splitted_path.empty? && !uri_splitted_path.empty? and self_dir == uri_dir + self_dir = self_splitted_path.shift + uri_dir = uri_splitted_path.shift + end + components[:path] = (uri_splitted_path.fill('..') + [self_dir] + self_splitted_path).join(SLASH) + end + end + end + end + # Avoid network-path references. + if components[:host] != nil + components[:scheme] = normalized_self.scheme + end + return Addressable::URI.new( + :scheme => components[:scheme], + :user => components[:user], + :password => components[:password], + :host => components[:host], + :port => components[:port], + :path => components[:path], + :query => components[:query], + :fragment => components[:fragment] + ) + end + + ## + # Returns the shortest normalized relative form of the supplied URI that + # uses this URI as a base for resolution. Returns an absolute URI if + # necessary. This is effectively the opposite of route_from. + # + # @param [String, Addressable::URI, #to_str] uri The URI to route to. + # + # @return [Addressable::URI] + # The normalized relative URI that is equivalent to the supplied URI. + def route_to(uri) + return URI.parse(uri).route_from(self) + end + + ## + # Returns a normalized URI object. + # + # NOTE: This method does not attempt to fully conform to specifications. + # It exists largely to correct other people's failures to read the + # specifications, and also to deal with caching issues since several + # different URIs may represent the same resource and should not be + # cached multiple times. + # + # @return [Addressable::URI] The normalized URI. + def normalize + # This is a special exception for the frequently misused feed + # URI scheme. + if normalized_scheme == "feed" + if self.to_s =~ /^feed:\/*http:\/*/ + return URI.parse( + self.to_s[/^feed:\/*(http:\/*.*)/, 1] + ).normalize + end + end + + return self.class.new( + :scheme => normalized_scheme, + :authority => normalized_authority, + :path => normalized_path, + :query => normalized_query, + :fragment => normalized_fragment + ) + end + + ## + # Destructively normalizes this URI object. + # + # @return [Addressable::URI] The normalized URI. + # + # @see Addressable::URI#normalize + def normalize! + replace_self(self.normalize) + end + + ## + # Creates a URI suitable for display to users. If semantic attacks are + # likely, the application should try to detect these and warn the user. + # See RFC 3986, + # section 7.6 for more information. + # + # @return [Addressable::URI] A URI suitable for display purposes. + def display_uri + display_uri = self.normalize + display_uri.host = ::Addressable::IDNA.to_unicode(display_uri.host) + return display_uri + end + + ## + # Returns true if the URI objects are equal. This method + # normalizes both URIs before doing the comparison, and allows comparison + # against Strings. + # + # @param [Object] uri The URI to compare. + # + # @return [TrueClass, FalseClass] + # true if the URIs are equivalent, false + # otherwise. + def ===(uri) + if uri.respond_to?(:normalize) + uri_string = uri.normalize.to_s + else + begin + uri_string = ::Addressable::URI.parse(uri).normalize.to_s + rescue InvalidURIError, TypeError + return false + end + end + return self.normalize.to_s == uri_string + end + + ## + # Returns true if the URI objects are equal. This method + # normalizes both URIs before doing the comparison. + # + # @param [Object] uri The URI to compare. + # + # @return [TrueClass, FalseClass] + # true if the URIs are equivalent, false + # otherwise. + def ==(uri) + return false unless uri.kind_of?(URI) + return self.normalize.to_s == uri.normalize.to_s + end + + ## + # Returns true if the URI objects are equal. This method + # does NOT normalize either URI before doing the comparison. + # + # @param [Object] uri The URI to compare. + # + # @return [TrueClass, FalseClass] + # true if the URIs are equivalent, false + # otherwise. + def eql?(uri) + return false unless uri.kind_of?(URI) + return self.to_s == uri.to_s + end + + ## + # A hash value that will make a URI equivalent to its normalized + # form. + # + # @return [Integer] A hash of the URI. + def hash + @hash ||= self.to_s.hash * -1 + end + + ## + # Clones the URI object. + # + # @return [Addressable::URI] The cloned URI. + def dup + duplicated_uri = self.class.new( + :scheme => self.scheme ? self.scheme.dup : nil, + :user => self.user ? self.user.dup : nil, + :password => self.password ? self.password.dup : nil, + :host => self.host ? self.host.dup : nil, + :port => self.port, + :path => self.path ? self.path.dup : nil, + :query => self.query ? self.query.dup : nil, + :fragment => self.fragment ? self.fragment.dup : nil + ) + return duplicated_uri + end + + ## + # Omits components from a URI. + # + # @param [Symbol] *components The components to be omitted. + # + # @return [Addressable::URI] The URI with components omitted. + # + # @example + # uri = Addressable::URI.parse("http://example.com/path?query") + # #=> # + # uri.omit(:scheme, :authority) + # #=> # + def omit(*components) + invalid_components = components - [ + :scheme, :user, :password, :userinfo, :host, :port, :authority, + :path, :query, :fragment + ] + unless invalid_components.empty? + raise ArgumentError, + "Invalid component names: #{invalid_components.inspect}." + end + duplicated_uri = self.dup + duplicated_uri.defer_validation do + components.each do |component| + duplicated_uri.send((component.to_s + "=").to_sym, nil) + end + duplicated_uri.user = duplicated_uri.normalized_user + end + duplicated_uri + end + + ## + # Destructive form of omit. + # + # @param [Symbol] *components The components to be omitted. + # + # @return [Addressable::URI] The URI with components omitted. + # + # @see Addressable::URI#omit + def omit!(*components) + replace_self(self.omit(*components)) + end + + ## + # Determines if the URI is an empty string. + # + # @return [TrueClass, FalseClass] + # Returns true if empty, false otherwise. + def empty? + return self.to_s.empty? + end + + ## + # Converts the URI to a String. + # + # @return [String] The URI's String representation. + def to_s + if self.scheme == nil && self.path != nil && !self.path.empty? && + self.path =~ NORMPATH + raise InvalidURIError, + "Cannot assemble URI string with ambiguous path: '#{self.path}'" + end + @uri_string ||= begin + uri_string = String.new + uri_string << "#{self.scheme}:" if self.scheme != nil + uri_string << "//#{self.authority}" if self.authority != nil + uri_string << self.path.to_s + uri_string << "?#{self.query}" if self.query != nil + uri_string << "##{self.fragment}" if self.fragment != nil + uri_string.force_encoding(Encoding::UTF_8) + uri_string + end + end + + ## + # URI's are glorified Strings. Allow implicit conversion. + alias_method :to_str, :to_s + + ## + # Returns a Hash of the URI components. + # + # @return [Hash] The URI as a Hash of components. + def to_hash + return { + :scheme => self.scheme, + :user => self.user, + :password => self.password, + :host => self.host, + :port => self.port, + :path => self.path, + :query => self.query, + :fragment => self.fragment + } + end + + ## + # Returns a String representation of the URI object's state. + # + # @return [String] The URI object's state, as a String. + def inspect + sprintf("#<%s:%#0x URI:%s>", URI.to_s, self.object_id, self.to_s) + end + + ## + # This method allows you to make several changes to a URI simultaneously, + # which separately would cause validation errors, but in conjunction, + # are valid. The URI will be revalidated as soon as the entire block has + # been executed. + # + # @param [Proc] block + # A set of operations to perform on a given URI. + def defer_validation(&block) + raise LocalJumpError, "No block given." unless block + @validation_deferred = true + block.call() + @validation_deferred = false + validate + return nil + end + + protected + SELF_REF = '.' + PARENT = '..' + + RULE_2A = /\/\.\/|\/\.$/ + RULE_2B_2C = /\/([^\/]*)\/\.\.\/|\/([^\/]*)\/\.\.$/ + RULE_2D = /^\.\.?\/?/ + RULE_PREFIXED_PARENT = /^\/\.\.?\/|^(\/\.\.?)+\/?$/ + + ## + # Resolves paths to their simplest form. + # + # @param [String] path The path to normalize. + # + # @return [String] The normalized path. + def self.normalize_path(path) + # Section 5.2.4 of RFC 3986 + + return nil if path.nil? + normalized_path = path.dup + begin + mod = nil + mod ||= normalized_path.gsub!(RULE_2A, SLASH) + + pair = normalized_path.match(RULE_2B_2C) + parent, current = pair[1], pair[2] if pair + if pair && ((parent != SELF_REF && parent != PARENT) || + (current != SELF_REF && current != PARENT)) + mod ||= normalized_path.gsub!( + Regexp.new( + "/#{Regexp.escape(parent.to_s)}/\\.\\./|" + + "(/#{Regexp.escape(current.to_s)}/\\.\\.$)" + ), SLASH + ) + end + + mod ||= normalized_path.gsub!(RULE_2D, EMPTY_STR) + # Non-standard, removes prefixed dotted segments from path. + mod ||= normalized_path.gsub!(RULE_PREFIXED_PARENT, SLASH) + end until mod.nil? + + return normalized_path + end + + ## + # Ensures that the URI is valid. + def validate + return if !!@validation_deferred + if self.scheme != nil && self.ip_based? && + (self.host == nil || self.host.empty?) && + (self.path == nil || self.path.empty?) + raise InvalidURIError, + "Absolute URI missing hierarchical segment: '#{self.to_s}'" + end + if self.host == nil + if self.port != nil || + self.user != nil || + self.password != nil + raise InvalidURIError, "Hostname not supplied: '#{self.to_s}'" + end + end + if self.path != nil && !self.path.empty? && self.path[0..0] != SLASH && + self.authority != nil + raise InvalidURIError, + "Cannot have a relative path with an authority set: '#{self.to_s}'" + end + if self.path != nil && !self.path.empty? && + self.path[0..1] == SLASH + SLASH && self.authority == nil + raise InvalidURIError, + "Cannot have a path with two leading slashes " + + "without an authority set: '#{self.to_s}'" + end + unreserved = CharacterClasses::UNRESERVED + sub_delims = CharacterClasses::SUB_DELIMS + if !self.host.nil? && (self.host =~ /[<>{}\/\\\?\#\@"[[:space:]]]/ || + (self.host[/^\[(.*)\]$/, 1] != nil && self.host[/^\[(.*)\]$/, 1] !~ + Regexp.new("^[#{unreserved}#{sub_delims}:]*$"))) + raise InvalidURIError, "Invalid character in host: '#{self.host.to_s}'" + end + return nil + end + + ## + # Replaces the internal state of self with the specified URI's state. + # Used in destructive operations to avoid massive code repetition. + # + # @param [Addressable::URI] uri The URI to replace self with. + # + # @return [Addressable::URI] self. + def replace_self(uri) + # Reset dependent values + instance_variables.each do |var| + if instance_variable_defined?(var) && var != :@validation_deferred + remove_instance_variable(var) + end + end + + @scheme = uri.scheme + @user = uri.user + @password = uri.password + @host = uri.host + @port = uri.port + @path = uri.path + @query = uri.query + @fragment = uri.fragment + return self + end + + ## + # Splits path string with "/" (slash). + # It is considered that there is empty string after last slash when + # path ends with slash. + # + # @param [String] path The path to split. + # + # @return [Array] An array of parts of path. + def split_path(path) + splitted = path.split(SLASH) + splitted << EMPTY_STR if path.end_with? SLASH + splitted + end + + ## + # Resets composite values for the entire URI + # + # @api private + def remove_composite_values + remove_instance_variable(:@uri_string) if defined?(@uri_string) + remove_instance_variable(:@hash) if defined?(@hash) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/version.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/version.rb new file mode 100644 index 0000000000..445d282393 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/lib/addressable/version.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# encoding:utf-8 +#-- +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#++ + + +# Used to prevent the class/module from being loaded more than once +if !defined?(Addressable::VERSION) + module Addressable + module VERSION + MAJOR = 2 + MINOR = 6 + TINY = 0 + + STRING = [MAJOR, MINOR, TINY].join('.') + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/idna_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/idna_spec.rb new file mode 100644 index 0000000000..651f75af7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/idna_spec.rb @@ -0,0 +1,300 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +# Have to use RubyGems to load the idn gem. +require "rubygems" + +require "addressable/idna" + +shared_examples_for "converting from unicode to ASCII" do + it "should convert 'www.google.com' correctly" do + expect(Addressable::IDNA.to_ascii("www.google.com")).to eq("www.google.com") + end + + long = 'AcinusFallumTrompetumNullunCreditumVisumEstAtCuadLongumEtCefallum.com' + it "should convert '#{long}' correctly" do + expect(Addressable::IDNA.to_ascii(long)).to eq(long) + end + + it "should convert 'www.詹姆斯.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "www.詹姆斯.com" + )).to eq("www.xn--8ws00zhy3a.com") + end + + it "should convert 'www.Iñtërnâtiônàlizætiøn.com' correctly" do + "www.Iñtërnâtiônàlizætiøn.com" + expect(Addressable::IDNA.to_ascii( + "www.I\xC3\xB1t\xC3\xABrn\xC3\xA2ti\xC3\xB4" + + "n\xC3\xA0liz\xC3\xA6ti\xC3\xB8n.com" + )).to eq("www.xn--itrntinliztin-vdb0a5exd8ewcye.com") + end + + it "should convert 'www.Iñtërnâtiônàlizætiøn.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "www.In\xCC\x83te\xCC\x88rna\xCC\x82tio\xCC\x82n" + + "a\xCC\x80liz\xC3\xA6ti\xC3\xB8n.com" + )).to eq("www.xn--itrntinliztin-vdb0a5exd8ewcye.com") + end + + it "should convert " + + "'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' " + + "correctly" do + expect(Addressable::IDNA.to_ascii( + "www.\343\201\273\343\202\223\343\201\250\343\201\206\343\201\253\343" + + "\201\252\343\201\214\343\201\204\343\202\217\343\201\221\343\201\256" + + "\343\202\217\343\201\213\343\202\211\343\201\252\343\201\204\343\201" + + "\251\343\202\201\343\201\204\343\202\223\343\202\201\343\201\204\343" + + "\201\256\343\202\211\343\201\271\343\202\213\343\201\276\343\201\240" + + "\343\201\252\343\201\214\343\201\217\343\201\227\343\201\252\343\201" + + "\204\343\201\250\343\201\237\343\202\212\343\201\252\343\201\204." + + "w3.mag.keio.ac.jp" + )).to eq( + "www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3" + + "fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp" + ) + end + + it "should convert " + + "'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' " + + "correctly" do + expect(Addressable::IDNA.to_ascii( + "www.\343\201\273\343\202\223\343\201\250\343\201\206\343\201\253\343" + + "\201\252\343\201\213\343\202\231\343\201\204\343\202\217\343\201\221" + + "\343\201\256\343\202\217\343\201\213\343\202\211\343\201\252\343\201" + + "\204\343\201\250\343\202\231\343\202\201\343\201\204\343\202\223\343" + + "\202\201\343\201\204\343\201\256\343\202\211\343\201\270\343\202\231" + + "\343\202\213\343\201\276\343\201\237\343\202\231\343\201\252\343\201" + + "\213\343\202\231\343\201\217\343\201\227\343\201\252\343\201\204\343" + + "\201\250\343\201\237\343\202\212\343\201\252\343\201\204." + + "w3.mag.keio.ac.jp" + )).to eq( + "www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3" + + "fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp" + ) + end + + it "should convert '点心和烤鸭.w3.mag.keio.ac.jp' correctly" do + expect(Addressable::IDNA.to_ascii( + "点心和烤鸭.w3.mag.keio.ac.jp" + )).to eq("xn--0trv4xfvn8el34t.w3.mag.keio.ac.jp") + end + + it "should convert '가각갂갃간갅갆갇갈갉힢힣.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "가각갂갃간갅갆갇갈갉힢힣.com" + )).to eq("xn--o39acdefghijk5883jma.com") + end + + it "should convert " + + "'\347\242\274\346\250\231\346\272\226\350" + + "\220\254\345\234\213\347\242\274.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "\347\242\274\346\250\231\346\272\226\350" + + "\220\254\345\234\213\347\242\274.com" + )).to eq("xn--9cs565brid46mda086o.com") + end + + it "should convert 'リ宠퐱〹.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "\357\276\230\345\256\240\355\220\261\343\200\271.com" + )).to eq("xn--eek174hoxfpr4k.com") + end + + it "should convert 'リ宠퐱卄.com' correctly" do + expect(Addressable::IDNA.to_ascii( + "\343\203\252\345\256\240\355\220\261\345\215\204.com" + )).to eq("xn--eek174hoxfpr4k.com") + end + + it "should convert 'ᆵ' correctly" do + expect(Addressable::IDNA.to_ascii( + "\341\206\265" + )).to eq("xn--4ud") + end + + it "should convert 'ᆵ' correctly" do + expect(Addressable::IDNA.to_ascii( + "\357\276\257" + )).to eq("xn--4ud") + end + + it "should convert '🌹🌹🌹.ws' correctly" do + expect(Addressable::IDNA.to_ascii( + "\360\237\214\271\360\237\214\271\360\237\214\271.ws" + )).to eq("xn--2h8haa.ws") + end + + it "should handle two adjacent '.'s correctly" do + expect(Addressable::IDNA.to_ascii( + "example..host" + )).to eq("example..host") + end +end + +shared_examples_for "converting from ASCII to unicode" do + long = 'AcinusFallumTrompetumNullunCreditumVisumEstAtCuadLongumEtCefallum.com' + it "should convert '#{long}' correctly" do + expect(Addressable::IDNA.to_unicode(long)).to eq(long) + end + + it "should return the identity conversion when punycode decode fails" do + expect(Addressable::IDNA.to_unicode("xn--zckp1cyg1.sblo.jp")).to eq( + "xn--zckp1cyg1.sblo.jp") + end + + it "should return the identity conversion when the ACE prefix has no suffix" do + expect(Addressable::IDNA.to_unicode("xn--...-")).to eq("xn--...-") + end + + it "should convert 'www.google.com' correctly" do + expect(Addressable::IDNA.to_unicode("www.google.com")).to eq( + "www.google.com") + end + + it "should convert 'www.詹姆斯.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "www.xn--8ws00zhy3a.com" + )).to eq("www.詹姆斯.com") + end + + it "should convert '詹姆斯.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--8ws00zhy3a.com" + )).to eq("詹姆斯.com") + end + + it "should convert 'www.iñtërnâtiônàlizætiøn.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "www.xn--itrntinliztin-vdb0a5exd8ewcye.com" + )).to eq("www.iñtërnâtiônàlizætiøn.com") + end + + it "should convert 'iñtërnâtiônàlizætiøn.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--itrntinliztin-vdb0a5exd8ewcye.com" + )).to eq("iñtërnâtiônàlizætiøn.com") + end + + it "should convert " + + "'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' " + + "correctly" do + expect(Addressable::IDNA.to_unicode( + "www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3" + + "fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp" + )).to eq( + "www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp" + ) + end + + it "should convert '点心和烤鸭.w3.mag.keio.ac.jp' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--0trv4xfvn8el34t.w3.mag.keio.ac.jp" + )).to eq("点心和烤鸭.w3.mag.keio.ac.jp") + end + + it "should convert '가각갂갃간갅갆갇갈갉힢힣.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--o39acdefghijk5883jma.com" + )).to eq("가각갂갃간갅갆갇갈갉힢힣.com") + end + + it "should convert " + + "'\347\242\274\346\250\231\346\272\226\350" + + "\220\254\345\234\213\347\242\274.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--9cs565brid46mda086o.com" + )).to eq( + "\347\242\274\346\250\231\346\272\226\350" + + "\220\254\345\234\213\347\242\274.com" + ) + end + + it "should convert 'リ宠퐱卄.com' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--eek174hoxfpr4k.com" + )).to eq("\343\203\252\345\256\240\355\220\261\345\215\204.com") + end + + it "should convert 'ᆵ' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--4ud" + )).to eq("\341\206\265") + end + + it "should convert '🌹🌹🌹.ws' correctly" do + expect(Addressable::IDNA.to_unicode( + "xn--2h8haa.ws" + )).to eq("\360\237\214\271\360\237\214\271\360\237\214\271.ws") + end + + it "should handle two adjacent '.'s correctly" do + expect(Addressable::IDNA.to_unicode( + "example..host" + )).to eq("example..host") + end + + it "should normalize 'string' correctly" do + expect(Addressable::IDNA.unicode_normalize_kc(:'string')).to eq("string") + expect(Addressable::IDNA.unicode_normalize_kc("string")).to eq("string") + end +end + +describe Addressable::IDNA, "when using the pure-Ruby implementation" do + before do + Addressable.send(:remove_const, :IDNA) + load "addressable/idna/pure.rb" + end + + it_should_behave_like "converting from unicode to ASCII" + it_should_behave_like "converting from ASCII to unicode" + + begin + require "fiber" + + it "should not blow up inside fibers" do + f = Fiber.new do + Addressable.send(:remove_const, :IDNA) + load "addressable/idna/pure.rb" + end + f.resume + end + rescue LoadError + # Fibers aren't supported in this version of Ruby, skip this test. + warn('Fibers unsupported.') + end +end + +begin + require "idn" + + describe Addressable::IDNA, "when using the native-code implementation" do + before do + Addressable.send(:remove_const, :IDNA) + load "addressable/idna/native.rb" + end + + it_should_behave_like "converting from unicode to ASCII" + it_should_behave_like "converting from ASCII to unicode" + end +rescue LoadError + # Cannot test the native implementation without libidn support. + warn('Could not load native IDN implementation.') +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/net_http_compat_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/net_http_compat_spec.rb new file mode 100644 index 0000000000..8663a8673b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/net_http_compat_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" +require "net/http" + +describe Net::HTTP do + it "should be compatible with Addressable" do + response_body = + Net::HTTP.get(Addressable::URI.parse('http://www.google.com/')) + expect(response_body).not_to be_nil + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/rack_mount_compat_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/rack_mount_compat_spec.rb new file mode 100644 index 0000000000..7b02cb76c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/rack_mount_compat_spec.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" +require "addressable/template" +require "rack/mount" + +describe Rack::Mount do + let(:app_one) do + proc { |env| [200, {'Content-Type' => 'text/plain'}, 'Route 1'] } + end + let(:app_two) do + proc { |env| [200, {'Content-Type' => 'text/plain'}, 'Route 2'] } + end + let(:app_three) do + proc { |env| [200, {'Content-Type' => 'text/plain'}, 'Route 3'] } + end + let(:routes) do + s = Rack::Mount::RouteSet.new do |set| + set.add_route(app_one, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/one/{id}/') + }, {:id => 'unidentified'}, :one) + set.add_route(app_two, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/two/') + }, {:id => 'unidentified'}, :two) + set.add_route(app_three, { + :request_method => 'GET', + :path_info => Addressable::Template.new('/three/{id}/').to_regexp + }, {:id => 'unidentified'}, :three) + end + s.rehash + s + end + + it "should generate from routes with Addressable::Template" do + path, _ = routes.generate(:path_info, :one, {:id => '123'}) + expect(path).to eq '/one/123/' + end + + it "should generate from routes with Addressable::Template using defaults" do + path, _ = routes.generate(:path_info, :one, {}) + expect(path).to eq '/one/unidentified/' + end + + it "should recognize routes with Addressable::Template" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/one/123/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_one + expect(params).to eq({id: '123'}) + end + + it "should generate from routes with Addressable::Template" do + path, _ = routes.generate(:path_info, :two, {:id => '654'}) + expect(path).to eq '/two/' + end + + it "should generate from routes with Addressable::Template using defaults" do + path, _ = routes.generate(:path_info, :two, {}) + expect(path).to eq '/two/' + end + + it "should recognize routes with Addressable::Template" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/two/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_two + expect(params).to eq({id: 'unidentified'}) + end + + it "should recognize routes with derived Regexp" do + request = Rack::Request.new( + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/three/789/' + ) + route, _, params = routes.recognize(request) + expect(route).not_to be_nil + expect(route.app).to eq app_three + expect(params).to eq({id: '789'}) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/security_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/security_spec.rb new file mode 100644 index 0000000000..601e8088ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/security_spec.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" + +describe Addressable::URI, "when created with a URI known to cause crashes " + + "in certain browsers" do + it "should parse correctly" do + uri = Addressable::URI.parse('%%30%30') + expect(uri.path).to eq('%%30%30') + expect(uri.normalize.path).to eq('%2500') + end + + it "should parse correctly as a full URI" do + uri = Addressable::URI.parse('http://www.example.com/%%30%30') + expect(uri.path).to eq('/%%30%30') + expect(uri.normalize.path).to eq('/%2500') + end +end + +describe Addressable::URI, "when created with a URI known to cause crashes " + + "in certain browsers" do + it "should parse correctly" do + uri = Addressable::URI.parse('لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.path).to eq('لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.normalize.path).to eq( + '%D9%84%D9%8F%D8%B5%D9%91%D8%A8%D9%8F%D9%84%D9%8F%D9%84%D8%B5%D9%91' + + '%D8%A8%D9%8F%D8%B1%D8%B1%D9%8B%20%E0%A5%A3%20%E0%A5%A3h%20%E0%A5' + + '%A3%20%E0%A5%A3%20%E5%86%97' + ) + end + + it "should parse correctly as a full URI" do + uri = Addressable::URI.parse('http://www.example.com/لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.path).to eq('/لُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ 冗') + expect(uri.normalize.path).to eq( + '/%D9%84%D9%8F%D8%B5%D9%91%D8%A8%D9%8F%D9%84%D9%8F%D9%84%D8%B5%D9%91' + + '%D8%A8%D9%8F%D8%B1%D8%B1%D9%8B%20%E0%A5%A3%20%E0%A5%A3h%20%E0%A5' + + '%A3%20%E0%A5%A3%20%E5%86%97' + ) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/template_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/template_spec.rb new file mode 100644 index 0000000000..a019165283 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/template_spec.rb @@ -0,0 +1,1451 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "bigdecimal" +require "addressable/template" + +shared_examples_for 'expands' do |tests| + tests.each do |template, expansion| + exp = expansion.is_a?(Array) ? expansion.first : expansion + it "#{template} to #{exp}" do + tmpl = Addressable::Template.new(template).expand(subject) + if expansion.is_a?(Array) + expect(expansion.any?{|i| i == tmpl.to_str}).to be true + else + expect(tmpl.to_str).to eq(expansion) + end + end + end +end + +describe "eql?" do + let(:template) { Addressable::Template.new('https://www.example.com/{foo}') } + it 'is equal when the pattern matches' do + other_template = Addressable::Template.new('https://www.example.com/{foo}') + expect(template).to be_eql(other_template) + expect(other_template).to be_eql(template) + end + it 'is not equal when the pattern differs' do + other_template = Addressable::Template.new('https://www.example.com/{bar}') + expect(template).to_not be_eql(other_template) + expect(other_template).to_not be_eql(template) + end + it 'is not equal to non-templates' do + uri = 'https://www.example.com/foo/bar' + addressable_template = Addressable::Template.new uri + addressable_uri = Addressable::URI.parse uri + expect(addressable_template).to_not be_eql(addressable_uri) + expect(addressable_uri).to_not be_eql(addressable_template) + end +end + +describe "==" do + let(:template) { Addressable::Template.new('https://www.example.com/{foo}') } + it 'is equal when the pattern matches' do + other_template = Addressable::Template.new('https://www.example.com/{foo}') + expect(template).to eq other_template + expect(other_template).to eq template + end + it 'is not equal when the pattern differs' do + other_template = Addressable::Template.new('https://www.example.com/{bar}') + expect(template).not_to eq other_template + expect(other_template).not_to eq template + end + it 'is not equal to non-templates' do + uri = 'https://www.example.com/foo/bar' + addressable_template = Addressable::Template.new uri + addressable_uri = Addressable::URI.parse uri + expect(addressable_template).not_to eq addressable_uri + expect(addressable_uri).not_to eq addressable_template + end +end + +describe "Type conversion" do + subject { + { + :var => true, + :hello => 1234, + :nothing => nil, + :sym => :symbolic, + :decimal => BigDecimal('1') + } + } + + it_behaves_like 'expands', { + '{var}' => 'true', + '{hello}' => '1234', + '{nothing}' => '', + '{sym}' => 'symbolic', + '{decimal}' => RUBY_VERSION < '2.4.0' ? '0.1E1' : '0.1e1' + } +end + +describe "Level 1:" do + subject { + {:var => "value", :hello => "Hello World!"} + } + it_behaves_like 'expands', { + '{var}' => 'value', + '{hello}' => 'Hello%20World%21' + } +end + +describe "Level 2" do + subject { + { + :var => "value", + :hello => "Hello World!", + :path => "/foo/bar" + } + } + context "Operator +:" do + it_behaves_like 'expands', { + '{+var}' => 'value', + '{+hello}' => 'Hello%20World!', + '{+path}/here' => '/foo/bar/here', + 'here?ref={+path}' => 'here?ref=/foo/bar' + } + end + context "Operator #:" do + it_behaves_like 'expands', { + 'X{#var}' => 'X#value', + 'X{#hello}' => 'X#Hello%20World!' + } + end +end + +describe "Level 3" do + subject { + { + :var => "value", + :hello => "Hello World!", + :empty => "", + :path => "/foo/bar", + :x => "1024", + :y => "768" + } + } + context "Operator nil (multiple vars):" do + it_behaves_like 'expands', { + 'map?{x,y}' => 'map?1024,768', + '{x,hello,y}' => '1024,Hello%20World%21,768' + } + end + context "Operator + (multiple vars):" do + it_behaves_like 'expands', { + '{+x,hello,y}' => '1024,Hello%20World!,768', + '{+path,x}/here' => '/foo/bar,1024/here' + } + end + context "Operator # (multiple vars):" do + it_behaves_like 'expands', { + '{#x,hello,y}' => '#1024,Hello%20World!,768', + '{#path,x}/here' => '#/foo/bar,1024/here' + } + end + context "Operator ." do + it_behaves_like 'expands', { + 'X{.var}' => 'X.value', + 'X{.x,y}' => 'X.1024.768' + } + end + context "Operator /" do + it_behaves_like 'expands', { + '{/var}' => '/value', + '{/var,x}/here' => '/value/1024/here' + } + end + context "Operator ;" do + it_behaves_like 'expands', { + '{;x,y}' => ';x=1024;y=768', + '{;x,y,empty}' => ';x=1024;y=768;empty' + } + end + context "Operator ?" do + it_behaves_like 'expands', { + '{?x,y}' => '?x=1024&y=768', + '{?x,y,empty}' => '?x=1024&y=768&empty=' + } + end + context "Operator &" do + it_behaves_like 'expands', { + '?fixed=yes{&x}' => '?fixed=yes&x=1024', + '{&x,y,empty}' => '&x=1024&y=768&empty=' + } + end +end + +describe "Level 4" do + subject { + { + :var => "value", + :hello => "Hello World!", + :path => "/foo/bar", + :semi => ";", + :list => %w(red green blue), + :keys => {"semi" => ';', "dot" => '.', "comma" => ','} + } + } + context "Expansion with value modifiers" do + it_behaves_like 'expands', { + '{var:3}' => 'val', + '{var:30}' => 'value', + '{list}' => 'red,green,blue', + '{list*}' => 'red,green,blue', + '{keys}' => [ + 'semi,%3B,dot,.,comma,%2C', + 'dot,.,semi,%3B,comma,%2C', + 'comma,%2C,semi,%3B,dot,.', + 'semi,%3B,comma,%2C,dot,.', + 'dot,.,comma,%2C,semi,%3B', + 'comma,%2C,dot,.,semi,%3B' + ], + '{keys*}' => [ + 'semi=%3B,dot=.,comma=%2C', + 'dot=.,semi=%3B,comma=%2C', + 'comma=%2C,semi=%3B,dot=.', + 'semi=%3B,comma=%2C,dot=.', + 'dot=.,comma=%2C,semi=%3B', + 'comma=%2C,dot=.,semi=%3B' + ] + } + end + context "Operator + with value modifiers" do + it_behaves_like 'expands', { + '{+path:6}/here' => '/foo/b/here', + '{+list}' => 'red,green,blue', + '{+list*}' => 'red,green,blue', + '{+keys}' => [ + 'semi,;,dot,.,comma,,', + 'dot,.,semi,;,comma,,', + 'comma,,,semi,;,dot,.', + 'semi,;,comma,,,dot,.', + 'dot,.,comma,,,semi,;', + 'comma,,,dot,.,semi,;' + ], + '{+keys*}' => [ + 'semi=;,dot=.,comma=,', + 'dot=.,semi=;,comma=,', + 'comma=,,semi=;,dot=.', + 'semi=;,comma=,,dot=.', + 'dot=.,comma=,,semi=;', + 'comma=,,dot=.,semi=;' + ] + } + end + context "Operator # with value modifiers" do + it_behaves_like 'expands', { + '{#path:6}/here' => '#/foo/b/here', + '{#list}' => '#red,green,blue', + '{#list*}' => '#red,green,blue', + '{#keys}' => [ + '#semi,;,dot,.,comma,,', + '#dot,.,semi,;,comma,,', + '#comma,,,semi,;,dot,.', + '#semi,;,comma,,,dot,.', + '#dot,.,comma,,,semi,;', + '#comma,,,dot,.,semi,;' + ], + '{#keys*}' => [ + '#semi=;,dot=.,comma=,', + '#dot=.,semi=;,comma=,', + '#comma=,,semi=;,dot=.', + '#semi=;,comma=,,dot=.', + '#dot=.,comma=,,semi=;', + '#comma=,,dot=.,semi=;' + ] + } + end + context "Operator . with value modifiers" do + it_behaves_like 'expands', { + 'X{.var:3}' => 'X.val', + 'X{.list}' => 'X.red,green,blue', + 'X{.list*}' => 'X.red.green.blue', + 'X{.keys}' => [ + 'X.semi,%3B,dot,.,comma,%2C', + 'X.dot,.,semi,%3B,comma,%2C', + 'X.comma,%2C,semi,%3B,dot,.', + 'X.semi,%3B,comma,%2C,dot,.', + 'X.dot,.,comma,%2C,semi,%3B', + 'X.comma,%2C,dot,.,semi,%3B' + ], + 'X{.keys*}' => [ + 'X.semi=%3B.dot=..comma=%2C', + 'X.dot=..semi=%3B.comma=%2C', + 'X.comma=%2C.semi=%3B.dot=.', + 'X.semi=%3B.comma=%2C.dot=.', + 'X.dot=..comma=%2C.semi=%3B', + 'X.comma=%2C.dot=..semi=%3B' + ] + } + end + context "Operator / with value modifiers" do + it_behaves_like 'expands', { + '{/var:1,var}' => '/v/value', + '{/list}' => '/red,green,blue', + '{/list*}' => '/red/green/blue', + '{/list*,path:4}' => '/red/green/blue/%2Ffoo', + '{/keys}' => [ + '/semi,%3B,dot,.,comma,%2C', + '/dot,.,semi,%3B,comma,%2C', + '/comma,%2C,semi,%3B,dot,.', + '/semi,%3B,comma,%2C,dot,.', + '/dot,.,comma,%2C,semi,%3B', + '/comma,%2C,dot,.,semi,%3B' + ], + '{/keys*}' => [ + '/semi=%3B/dot=./comma=%2C', + '/dot=./semi=%3B/comma=%2C', + '/comma=%2C/semi=%3B/dot=.', + '/semi=%3B/comma=%2C/dot=.', + '/dot=./comma=%2C/semi=%3B', + '/comma=%2C/dot=./semi=%3B' + ] + } + end + context "Operator ; with value modifiers" do + it_behaves_like 'expands', { + '{;hello:5}' => ';hello=Hello', + '{;list}' => ';list=red,green,blue', + '{;list*}' => ';list=red;list=green;list=blue', + '{;keys}' => [ + ';keys=semi,%3B,dot,.,comma,%2C', + ';keys=dot,.,semi,%3B,comma,%2C', + ';keys=comma,%2C,semi,%3B,dot,.', + ';keys=semi,%3B,comma,%2C,dot,.', + ';keys=dot,.,comma,%2C,semi,%3B', + ';keys=comma,%2C,dot,.,semi,%3B' + ], + '{;keys*}' => [ + ';semi=%3B;dot=.;comma=%2C', + ';dot=.;semi=%3B;comma=%2C', + ';comma=%2C;semi=%3B;dot=.', + ';semi=%3B;comma=%2C;dot=.', + ';dot=.;comma=%2C;semi=%3B', + ';comma=%2C;dot=.;semi=%3B' + ] + } + end + context "Operator ? with value modifiers" do + it_behaves_like 'expands', { + '{?var:3}' => '?var=val', + '{?list}' => '?list=red,green,blue', + '{?list*}' => '?list=red&list=green&list=blue', + '{?keys}' => [ + '?keys=semi,%3B,dot,.,comma,%2C', + '?keys=dot,.,semi,%3B,comma,%2C', + '?keys=comma,%2C,semi,%3B,dot,.', + '?keys=semi,%3B,comma,%2C,dot,.', + '?keys=dot,.,comma,%2C,semi,%3B', + '?keys=comma,%2C,dot,.,semi,%3B' + ], + '{?keys*}' => [ + '?semi=%3B&dot=.&comma=%2C', + '?dot=.&semi=%3B&comma=%2C', + '?comma=%2C&semi=%3B&dot=.', + '?semi=%3B&comma=%2C&dot=.', + '?dot=.&comma=%2C&semi=%3B', + '?comma=%2C&dot=.&semi=%3B' + ] + } + end + context "Operator & with value modifiers" do + it_behaves_like 'expands', { + '{&var:3}' => '&var=val', + '{&list}' => '&list=red,green,blue', + '{&list*}' => '&list=red&list=green&list=blue', + '{&keys}' => [ + '&keys=semi,%3B,dot,.,comma,%2C', + '&keys=dot,.,semi,%3B,comma,%2C', + '&keys=comma,%2C,semi,%3B,dot,.', + '&keys=semi,%3B,comma,%2C,dot,.', + '&keys=dot,.,comma,%2C,semi,%3B', + '&keys=comma,%2C,dot,.,semi,%3B' + ], + '{&keys*}' => [ + '&semi=%3B&dot=.&comma=%2C', + '&dot=.&semi=%3B&comma=%2C', + '&comma=%2C&semi=%3B&dot=.', + '&semi=%3B&comma=%2C&dot=.', + '&dot=.&comma=%2C&semi=%3B', + '&comma=%2C&dot=.&semi=%3B' + ] + } + end +end +describe "Modifiers" do + subject { + { + :var => "value", + :semi => ";", + :year => %w(1965 2000 2012), + :dom => %w(example com) + } + } + context "length" do + it_behaves_like 'expands', { + '{var:3}' => 'val', + '{var:30}' => 'value', + '{var}' => 'value', + '{semi}' => '%3B', + '{semi:2}' => '%3B' + } + end + context "explode" do + it_behaves_like 'expands', { + 'find{?year*}' => 'find?year=1965&year=2000&year=2012', + 'www{.dom*}' => 'www.example.com', + } + end +end +describe "Expansion" do + subject { + { + :count => ["one", "two", "three"], + :dom => ["example", "com"], + :dub => "me/too", + :hello => "Hello World!", + :half => "50%", + :var => "value", + :who => "fred", + :base => "http://example.com/home/", + :path => "/foo/bar", + :list => ["red", "green", "blue"], + :keys => {"semi" => ";","dot" => ".","comma" => ","}, + :v => "6", + :x => "1024", + :y => "768", + :empty => "", + :empty_keys => {}, + :undef => nil + } + } + context "concatenation" do + it_behaves_like 'expands', { + '{count}' => 'one,two,three', + '{count*}' => 'one,two,three', + '{/count}' => '/one,two,three', + '{/count*}' => '/one/two/three', + '{;count}' => ';count=one,two,three', + '{;count*}' => ';count=one;count=two;count=three', + '{?count}' => '?count=one,two,three', + '{?count*}' => '?count=one&count=two&count=three', + '{&count*}' => '&count=one&count=two&count=three' + } + end + context "simple expansion" do + it_behaves_like 'expands', { + '{var}' => 'value', + '{hello}' => 'Hello%20World%21', + '{half}' => '50%25', + 'O{empty}X' => 'OX', + 'O{undef}X' => 'OX', + '{x,y}' => '1024,768', + '{x,hello,y}' => '1024,Hello%20World%21,768', + '?{x,empty}' => '?1024,', + '?{x,undef}' => '?1024', + '?{undef,y}' => '?768', + '{var:3}' => 'val', + '{var:30}' => 'value', + '{list}' => 'red,green,blue', + '{list*}' => 'red,green,blue', + '{keys}' => [ + 'semi,%3B,dot,.,comma,%2C', + 'dot,.,semi,%3B,comma,%2C', + 'comma,%2C,semi,%3B,dot,.', + 'semi,%3B,comma,%2C,dot,.', + 'dot,.,comma,%2C,semi,%3B', + 'comma,%2C,dot,.,semi,%3B' + ], + '{keys*}' => [ + 'semi=%3B,dot=.,comma=%2C', + 'dot=.,semi=%3B,comma=%2C', + 'comma=%2C,semi=%3B,dot=.', + 'semi=%3B,comma=%2C,dot=.', + 'dot=.,comma=%2C,semi=%3B', + 'comma=%2C,dot=.,semi=%3B' + ] + } + end + context "reserved expansion (+)" do + it_behaves_like 'expands', { + '{+var}' => 'value', + '{+hello}' => 'Hello%20World!', + '{+half}' => '50%25', + '{base}index' => 'http%3A%2F%2Fexample.com%2Fhome%2Findex', + '{+base}index' => 'http://example.com/home/index', + 'O{+empty}X' => 'OX', + 'O{+undef}X' => 'OX', + '{+path}/here' => '/foo/bar/here', + 'here?ref={+path}' => 'here?ref=/foo/bar', + 'up{+path}{var}/here' => 'up/foo/barvalue/here', + '{+x,hello,y}' => '1024,Hello%20World!,768', + '{+path,x}/here' => '/foo/bar,1024/here', + '{+path:6}/here' => '/foo/b/here', + '{+list}' => 'red,green,blue', + '{+list*}' => 'red,green,blue', + '{+keys}' => [ + 'semi,;,dot,.,comma,,', + 'dot,.,semi,;,comma,,', + 'comma,,,semi,;,dot,.', + 'semi,;,comma,,,dot,.', + 'dot,.,comma,,,semi,;', + 'comma,,,dot,.,semi,;' + ], + '{+keys*}' => [ + 'semi=;,dot=.,comma=,', + 'dot=.,semi=;,comma=,', + 'comma=,,semi=;,dot=.', + 'semi=;,comma=,,dot=.', + 'dot=.,comma=,,semi=;', + 'comma=,,dot=.,semi=;' + ] + } + end + context "fragment expansion (#)" do + it_behaves_like 'expands', { + '{#var}' => '#value', + '{#hello}' => '#Hello%20World!', + '{#half}' => '#50%25', + 'foo{#empty}' => 'foo#', + 'foo{#undef}' => 'foo', + '{#x,hello,y}' => '#1024,Hello%20World!,768', + '{#path,x}/here' => '#/foo/bar,1024/here', + '{#path:6}/here' => '#/foo/b/here', + '{#list}' => '#red,green,blue', + '{#list*}' => '#red,green,blue', + '{#keys}' => [ + '#semi,;,dot,.,comma,,', + '#dot,.,semi,;,comma,,', + '#comma,,,semi,;,dot,.', + '#semi,;,comma,,,dot,.', + '#dot,.,comma,,,semi,;', + '#comma,,,dot,.,semi,;' + ], + '{#keys*}' => [ + '#semi=;,dot=.,comma=,', + '#dot=.,semi=;,comma=,', + '#comma=,,semi=;,dot=.', + '#semi=;,comma=,,dot=.', + '#dot=.,comma=,,semi=;', + '#comma=,,dot=.,semi=;' + ] + } + end + context "label expansion (.)" do + it_behaves_like 'expands', { + '{.who}' => '.fred', + '{.who,who}' => '.fred.fred', + '{.half,who}' => '.50%25.fred', + 'www{.dom*}' => 'www.example.com', + 'X{.var}' => 'X.value', + 'X{.empty}' => 'X.', + 'X{.undef}' => 'X', + 'X{.var:3}' => 'X.val', + 'X{.list}' => 'X.red,green,blue', + 'X{.list*}' => 'X.red.green.blue', + 'X{.keys}' => [ + 'X.semi,%3B,dot,.,comma,%2C', + 'X.dot,.,semi,%3B,comma,%2C', + 'X.comma,%2C,semi,%3B,dot,.', + 'X.semi,%3B,comma,%2C,dot,.', + 'X.dot,.,comma,%2C,semi,%3B', + 'X.comma,%2C,dot,.,semi,%3B' + ], + 'X{.keys*}' => [ + 'X.semi=%3B.dot=..comma=%2C', + 'X.dot=..semi=%3B.comma=%2C', + 'X.comma=%2C.semi=%3B.dot=.', + 'X.semi=%3B.comma=%2C.dot=.', + 'X.dot=..comma=%2C.semi=%3B', + 'X.comma=%2C.dot=..semi=%3B' + ], + 'X{.empty_keys}' => 'X', + 'X{.empty_keys*}' => 'X' + } + end + context "path expansion (/)" do + it_behaves_like 'expands', { + '{/who}' => '/fred', + '{/who,who}' => '/fred/fred', + '{/half,who}' => '/50%25/fred', + '{/who,dub}' => '/fred/me%2Ftoo', + '{/var}' => '/value', + '{/var,empty}' => '/value/', + '{/var,undef}' => '/value', + '{/var,x}/here' => '/value/1024/here', + '{/var:1,var}' => '/v/value', + '{/list}' => '/red,green,blue', + '{/list*}' => '/red/green/blue', + '{/list*,path:4}' => '/red/green/blue/%2Ffoo', + '{/keys}' => [ + '/semi,%3B,dot,.,comma,%2C', + '/dot,.,semi,%3B,comma,%2C', + '/comma,%2C,semi,%3B,dot,.', + '/semi,%3B,comma,%2C,dot,.', + '/dot,.,comma,%2C,semi,%3B', + '/comma,%2C,dot,.,semi,%3B' + ], + '{/keys*}' => [ + '/semi=%3B/dot=./comma=%2C', + '/dot=./semi=%3B/comma=%2C', + '/comma=%2C/semi=%3B/dot=.', + '/semi=%3B/comma=%2C/dot=.', + '/dot=./comma=%2C/semi=%3B', + '/comma=%2C/dot=./semi=%3B' + ] + } + end + context "path-style expansion (;)" do + it_behaves_like 'expands', { + '{;who}' => ';who=fred', + '{;half}' => ';half=50%25', + '{;empty}' => ';empty', + '{;v,empty,who}' => ';v=6;empty;who=fred', + '{;v,bar,who}' => ';v=6;who=fred', + '{;x,y}' => ';x=1024;y=768', + '{;x,y,empty}' => ';x=1024;y=768;empty', + '{;x,y,undef}' => ';x=1024;y=768', + '{;hello:5}' => ';hello=Hello', + '{;list}' => ';list=red,green,blue', + '{;list*}' => ';list=red;list=green;list=blue', + '{;keys}' => [ + ';keys=semi,%3B,dot,.,comma,%2C', + ';keys=dot,.,semi,%3B,comma,%2C', + ';keys=comma,%2C,semi,%3B,dot,.', + ';keys=semi,%3B,comma,%2C,dot,.', + ';keys=dot,.,comma,%2C,semi,%3B', + ';keys=comma,%2C,dot,.,semi,%3B' + ], + '{;keys*}' => [ + ';semi=%3B;dot=.;comma=%2C', + ';dot=.;semi=%3B;comma=%2C', + ';comma=%2C;semi=%3B;dot=.', + ';semi=%3B;comma=%2C;dot=.', + ';dot=.;comma=%2C;semi=%3B', + ';comma=%2C;dot=.;semi=%3B' + ] + } + end + context "form query expansion (?)" do + it_behaves_like 'expands', { + '{?who}' => '?who=fred', + '{?half}' => '?half=50%25', + '{?x,y}' => '?x=1024&y=768', + '{?x,y,empty}' => '?x=1024&y=768&empty=', + '{?x,y,undef}' => '?x=1024&y=768', + '{?var:3}' => '?var=val', + '{?list}' => '?list=red,green,blue', + '{?list*}' => '?list=red&list=green&list=blue', + '{?keys}' => [ + '?keys=semi,%3B,dot,.,comma,%2C', + '?keys=dot,.,semi,%3B,comma,%2C', + '?keys=comma,%2C,semi,%3B,dot,.', + '?keys=semi,%3B,comma,%2C,dot,.', + '?keys=dot,.,comma,%2C,semi,%3B', + '?keys=comma,%2C,dot,.,semi,%3B' + ], + '{?keys*}' => [ + '?semi=%3B&dot=.&comma=%2C', + '?dot=.&semi=%3B&comma=%2C', + '?comma=%2C&semi=%3B&dot=.', + '?semi=%3B&comma=%2C&dot=.', + '?dot=.&comma=%2C&semi=%3B', + '?comma=%2C&dot=.&semi=%3B' + ] + } + end + context "form query expansion (&)" do + it_behaves_like 'expands', { + '{&who}' => '&who=fred', + '{&half}' => '&half=50%25', + '?fixed=yes{&x}' => '?fixed=yes&x=1024', + '{&x,y,empty}' => '&x=1024&y=768&empty=', + '{&x,y,undef}' => '&x=1024&y=768', + '{&var:3}' => '&var=val', + '{&list}' => '&list=red,green,blue', + '{&list*}' => '&list=red&list=green&list=blue', + '{&keys}' => [ + '&keys=semi,%3B,dot,.,comma,%2C', + '&keys=dot,.,semi,%3B,comma,%2C', + '&keys=comma,%2C,semi,%3B,dot,.', + '&keys=semi,%3B,comma,%2C,dot,.', + '&keys=dot,.,comma,%2C,semi,%3B', + '&keys=comma,%2C,dot,.,semi,%3B' + ], + '{&keys*}' => [ + '&semi=%3B&dot=.&comma=%2C', + '&dot=.&semi=%3B&comma=%2C', + '&comma=%2C&semi=%3B&dot=.', + '&semi=%3B&comma=%2C&dot=.', + '&dot=.&comma=%2C&semi=%3B', + '&comma=%2C&dot=.&semi=%3B' + ] + } + end + context "non-string key in match data" do + subject {Addressable::Template.new("http://example.com/{one}")} + + it "raises TypeError" do + expect { subject.expand(Object.new => "1") }.to raise_error TypeError + end + end +end + +class ExampleTwoProcessor + def self.restore(name, value) + return value.gsub(/-/, " ") if name == "query" + return value + end + + def self.match(name) + return ".*?" if name == "first" + return ".*" + end + def self.validate(name, value) + return !!(value =~ /^[\w ]+$/) if name == "query" + return true + end + + def self.transform(name, value) + return value.gsub(/ /, "+") if name == "query" + return value + end +end + +class DumbProcessor + def self.match(name) + return ".*?" if name == "first" + end +end + +describe Addressable::Template do + describe 'initialize' do + context 'with a non-string' do + it 'raises a TypeError' do + expect { Addressable::Template.new(nil) }.to raise_error(TypeError) + end + end + end + + describe 'freeze' do + subject { Addressable::Template.new("http://example.com/{first}/{+second}/") } + it 'freezes the template' do + expect(subject.freeze).to be_frozen + end + end + + describe "Matching" do + let(:uri){ + Addressable::URI.parse( + "http://example.com/search/an-example-search-query/" + ) + } + let(:uri2){ + Addressable::URI.parse("http://example.com/a/b/c/") + } + let(:uri3){ + Addressable::URI.parse("http://example.com/;a=1;b=2;c=3;first=foo") + } + let(:uri4){ + Addressable::URI.parse("http://example.com/?a=1&b=2&c=3&first=foo") + } + let(:uri5){ + "http://example.com/foo" + } + context "first uri with ExampleTwoProcessor" do + subject { + Addressable::Template.new( + "http://example.com/search/{query}/" + ).match(uri, ExampleTwoProcessor) + } + its(:variables){ should == ["query"] } + its(:captures){ should == ["an example search query"] } + end + + context "second uri with ExampleTwoProcessor" do + subject { + Addressable::Template.new( + "http://example.com/{first}/{+second}/" + ).match(uri2, ExampleTwoProcessor) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", "b/c"] } + end + + context "second uri with DumbProcessor" do + subject { + Addressable::Template.new( + "http://example.com/{first}/{+second}/" + ).match(uri2, DumbProcessor) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", "b/c"] } + end + + context "second uri" do + subject { + Addressable::Template.new( + "http://example.com/{first}{/second*}/" + ).match(uri2) + } + its(:variables){ should == ["first", "second"] } + its(:captures){ should == ["a", ["b","c"]] } + end + context "third uri" do + subject { + Addressable::Template.new( + "http://example.com/{;hash*,first}" + ).match(uri3) + } + its(:variables){ should == ["hash", "first"] } + its(:captures){ should == [ + {"a" => "1", "b" => "2", "c" => "3", "first" => "foo"}, nil] } + end + # Note that this expansion is impossible to revert deterministically - the + # * operator means first could have been a key of hash or a separate key. + # Semantically, a separate key is more likely, but both are possible. + context "fourth uri" do + subject { + Addressable::Template.new( + "http://example.com/{?hash*,first}" + ).match(uri4) + } + its(:variables){ should == ["hash", "first"] } + its(:captures){ should == [ + {"a" => "1", "b" => "2", "c" => "3", "first"=> "foo"}, nil] } + end + context "fifth uri" do + subject { + Addressable::Template.new( + "http://example.com/{path}{?hash*,first}" + ).match(uri5) + } + its(:variables){ should == ["path", "hash", "first"] } + its(:captures){ should == ["foo", nil, nil] } + end + end + + describe 'match' do + subject { Addressable::Template.new('http://example.com/first/second/') } + context 'when the URI is the same as the template' do + it 'returns the match data itself with an empty mapping' do + uri = Addressable::URI.parse('http://example.com/first/second/') + match_data = subject.match(uri) + expect(match_data).to be_an Addressable::Template::MatchData + expect(match_data.uri).to eq(uri) + expect(match_data.template).to eq(subject) + expect(match_data.mapping).to be_empty + expect(match_data.inspect).to be_an String + end + end + end + + describe "extract" do + let(:template) { + Addressable::Template.new( + "http://{host}{/segments*}/{?one,two,bogus}{#fragment}" + ) + } + let(:uri){ "http://example.com/a/b/c/?one=1&two=2#foo" } + let(:uri2){ "http://example.com/a/b/c/#foo" } + it "should be able to extract with queries" do + expect(template.extract(uri)).to eq({ + "host" => "example.com", + "segments" => %w(a b c), + "one" => "1", + "bogus" => nil, + "two" => "2", + "fragment" => "foo" + }) + end + it "should be able to extract without queries" do + expect(template.extract(uri2)).to eq({ + "host" => "example.com", + "segments" => %w(a b c), + "one" => nil, + "bogus" => nil, + "two" => nil, + "fragment" => "foo" + }) + end + + context "issue #137" do + subject { Addressable::Template.new('/path{?page,per_page}') } + + it "can match empty" do + data = subject.extract("/path") + expect(data["page"]).to eq(nil) + expect(data["per_page"]).to eq(nil) + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match first var" do + data = subject.extract("/path?page=1") + expect(data["page"]).to eq("1") + expect(data["per_page"]).to eq(nil) + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match second var" do + data = subject.extract("/path?per_page=1") + expect(data["page"]).to eq(nil) + expect(data["per_page"]).to eq("1") + expect(data.keys.sort).to eq(['page', 'per_page']) + end + + it "can match both vars" do + data = subject.extract("/path?page=2&per_page=1") + expect(data["page"]).to eq("2") + expect(data["per_page"]).to eq("1") + expect(data.keys.sort).to eq(['page', 'per_page']) + end + end + end + + describe "Partial expand with symbols" do + context "partial_expand with two simple values" do + subject { + Addressable::Template.new("http://example.com/{one}/{two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/1/{two}/" + ) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1", :three => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand form style query with missing param at beginning" do + subject { + Addressable::Template.new("http://example.com/{?one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:two => "2").pattern).to eq( + "http://example.com/?two=2{&one}/" + ) + end + end + context "issue #307 - partial_expand form query with nil params" do + subject do + Addressable::Template.new("http://example.com/{?one,two,three}/") + end + it "builds a new pattern with two=nil" do + expect(subject.partial_expand(two: nil).pattern).to eq( + "http://example.com/{?one}{&three}/" + ) + end + it "builds a new pattern with one=nil and two=nil" do + expect(subject.partial_expand(one: nil, two: nil).pattern).to eq( + "http://example.com/{?three}/" + ) + end + it "builds a new pattern with one=1 and two=nil" do + expect(subject.partial_expand(one: 1, two: nil).pattern).to eq( + "http://example.com/?one=1{&three}/" + ) + end + it "builds a new pattern with one=nil and two=2" do + expect(subject.partial_expand(one: nil, two: 2).pattern).to eq( + "http://example.com/?two=2{&three}/" + ) + end + it "builds a new pattern with one=nil" do + expect(subject.partial_expand(one: nil).pattern).to eq( + "http://example.com/{?two}{&three}/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand(:one => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + context "partial expand with unicode values" do + subject do + Addressable::Template.new("http://example.com/{resource}/{query}/") + end + it "normalizes unicode by default" do + template = subject.partial_expand("query" => "Cafe\u0301") + expect(template.pattern).to eq( + "http://example.com/{resource}/Caf%C3%A9/" + ) + end + + it "does not normalize unicode when byte semantics requested" do + template = subject.partial_expand({"query" => "Cafe\u0301"}, nil, false) + expect(template.pattern).to eq( + "http://example.com/{resource}/Cafe%CC%81/" + ) + end + end + end + describe "Partial expand with strings" do + context "partial_expand with two simple values" do + subject { + Addressable::Template.new("http://example.com/{one}/{two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1/{two}/" + ) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1", "three" => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + end + describe "Expand" do + context "expand with unicode values" do + subject do + Addressable::Template.new("http://example.com/search/{query}/") + end + it "normalizes unicode by default" do + uri = subject.expand("query" => "Cafe\u0301").to_str + expect(uri).to eq("http://example.com/search/Caf%C3%A9/") + end + + it "does not normalize unicode when byte semantics requested" do + uri = subject.expand({ "query" => "Cafe\u0301" }, nil, false).to_str + expect(uri).to eq("http://example.com/search/Cafe%CC%81/") + end + end + context "expand with a processor" do + subject { + Addressable::Template.new("http://example.com/search/{query}/") + } + it "processes spaces" do + expect(subject.expand({"query" => "an example search query"}, + ExampleTwoProcessor).to_str).to eq( + "http://example.com/search/an+example+search+query/" + ) + end + it "validates" do + expect{ + subject.expand({"query" => "Bogus!"}, + ExampleTwoProcessor).to_str + }.to raise_error(Addressable::Template::InvalidTemplateValueError) + end + end + context "partial_expand query with missing param in middle" do + subject { + Addressable::Template.new("http://example.com/{?one,two,three}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1", "three" => "3").pattern).to eq( + "http://example.com/?one=1{&two}&three=3/" + ) + end + end + context "partial_expand with query string" do + subject { + Addressable::Template.new("http://example.com/{?two,one}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/?one=1{&two}/" + ) + end + end + context "partial_expand with path operator" do + subject { + Addressable::Template.new("http://example.com{/one,two}/") + } + it "builds a new pattern" do + expect(subject.partial_expand("one" => "1").pattern).to eq( + "http://example.com/1{/two}/" + ) + end + end + end + context "Matching with operators" do + describe "Level 1:" do + subject { Addressable::Template.new("foo{foo}/{bar}baz") } + it "can match" do + data = subject.match("foofoo/bananabaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("banana") + end + it "can fail" do + expect(subject.match("bar/foo")).to be_nil + expect(subject.match("foobaz")).to be_nil + end + it "can match empty" do + data = subject.match("foo/baz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq(nil) + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + + describe "Level 2:" do + subject { Addressable::Template.new("foo{+foo}{#bar}baz") } + it "can match" do + data = subject.match("foo/test/banana#bazbaz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq("baz") + end + it "can match empty level 2 #" do + data = subject.match("foo/test/bananabaz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq(nil) + data = subject.match("foo/test/banana#baz") + expect(data.mapping["foo"]).to eq("/test/banana") + expect(data.mapping["bar"]).to eq("") + end + it "can match empty level 2 +" do + data = subject.match("foobaz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq(nil) + data = subject.match("foo#barbaz") + expect(data.mapping["foo"]).to eq(nil) + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + + describe "Level 3:" do + context "no operator" do + subject { Addressable::Template.new("foo{foo,bar}baz") } + it "can match" do + data = subject.match("foofoo,barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "+ operator" do + subject { Addressable::Template.new("foo{+foo,bar}baz") } + it "can match" do + data = subject.match("foofoo/bar,barbaz") + expect(data.mapping["bar"]).to eq("foo/bar,bar") + expect(data.mapping["foo"]).to eq("") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context ". operator" do + subject { Addressable::Template.new("foo{.foo,bar}baz") } + it "can match" do + data = subject.match("foo.foo.barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "/ operator" do + subject { Addressable::Template.new("foo{/foo,bar}baz") } + it "can match" do + data = subject.match("foo/foo/barbaz") + expect(data.mapping["foo"]).to eq("foo") + expect(data.mapping["bar"]).to eq("bar") + end + it "lists vars" do + expect(subject.variables).to eq(["foo", "bar"]) + end + end + context "; operator" do + subject { Addressable::Template.new("foo{;foo,bar,baz}baz") } + it "can match" do + data = subject.match("foo;foo=bar%20baz;bar=foo;bazbaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + expect(data.mapping["baz"]).to eq("") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar baz)) + end + end + context "? operator" do + context "test" do + subject { Addressable::Template.new("foo{?foo,bar}baz") } + it "can match" do + data = subject.match("foo?foo=bar%20baz&bar=foobaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar)) + end + end + + context "issue #137" do + subject { Addressable::Template.new('/path{?page,per_page}') } + + it "can match empty" do + data = subject.match("/path") + expect(data.mapping["page"]).to eq(nil) + expect(data.mapping["per_page"]).to eq(nil) + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match first var" do + data = subject.match("/path?page=1") + expect(data.mapping["page"]).to eq("1") + expect(data.mapping["per_page"]).to eq(nil) + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match second var" do + data = subject.match("/path?per_page=1") + expect(data.mapping["page"]).to eq(nil) + expect(data.mapping["per_page"]).to eq("1") + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + + it "can match both vars" do + data = subject.match("/path?page=2&per_page=1") + expect(data.mapping["page"]).to eq("2") + expect(data.mapping["per_page"]).to eq("1") + expect(data.mapping.keys.sort).to eq(['page', 'per_page']) + end + end + + context "issue #71" do + subject { Addressable::Template.new("http://cyberscore.dev/api/users{?username}") } + it "can match" do + data = subject.match("http://cyberscore.dev/api/users?username=foobaz") + expect(data.mapping["username"]).to eq("foobaz") + end + it "lists vars" do + expect(subject.variables).to eq(%w(username)) + expect(subject.keys).to eq(%w(username)) + end + end + end + context "& operator" do + subject { Addressable::Template.new("foo{&foo,bar}baz") } + it "can match" do + data = subject.match("foo&foo=bar%20baz&bar=foobaz") + expect(data.mapping["foo"]).to eq("bar baz") + expect(data.mapping["bar"]).to eq("foo") + end + it "lists vars" do + expect(subject.variables).to eq(%w(foo bar)) + end + end + end + end + + context "support regexes:" do + context "EXPRESSION" do + subject { Addressable::Template::EXPRESSION } + it "should be able to match an expression" do + expect(subject).to match("{foo}") + expect(subject).to match("{foo,9}") + expect(subject).to match("{foo.bar,baz}") + expect(subject).to match("{+foo.bar,baz}") + expect(subject).to match("{foo,foo%20bar}") + expect(subject).to match("{#foo:20,baz*}") + expect(subject).to match("stuff{#foo:20,baz*}things") + end + it "should fail on non vars" do + expect(subject).not_to match("!{foo") + expect(subject).not_to match("{foo.bar.}") + expect(subject).not_to match("!{}") + end + end + context "VARNAME" do + subject { Addressable::Template::VARNAME } + it "should be able to match a variable" do + expect(subject).to match("foo") + expect(subject).to match("9") + expect(subject).to match("foo.bar") + expect(subject).to match("foo_bar") + expect(subject).to match("foo_bar.baz") + expect(subject).to match("foo%20bar") + expect(subject).to match("foo%20bar.baz") + end + it "should fail on non vars" do + expect(subject).not_to match("!foo") + expect(subject).not_to match("foo.bar.") + expect(subject).not_to match("foo%2%00bar") + expect(subject).not_to match("foo_ba%r") + expect(subject).not_to match("foo_bar*") + expect(subject).not_to match("foo_bar:20") + end + end + context "VARIABLE_LIST" do + subject { Addressable::Template::VARIABLE_LIST } + it "should be able to match a variable list" do + expect(subject).to match("foo,bar") + expect(subject).to match("foo") + expect(subject).to match("foo,bar*,baz") + expect(subject).to match("foo.bar,bar_baz*,baz:12") + end + it "should fail on non vars" do + expect(subject).not_to match(",foo,bar*,baz") + expect(subject).not_to match("foo,*bar,baz") + expect(subject).not_to match("foo,,bar*,baz") + end + end + context "VARSPEC" do + subject { Addressable::Template::VARSPEC } + it "should be able to match a variable with modifier" do + expect(subject).to match("9:8") + expect(subject).to match("foo.bar*") + expect(subject).to match("foo_bar:12") + expect(subject).to match("foo_bar.baz*") + expect(subject).to match("foo%20bar:12") + expect(subject).to match("foo%20bar.baz*") + end + it "should fail on non vars" do + expect(subject).not_to match("!foo") + expect(subject).not_to match("*foo") + expect(subject).not_to match("fo*o") + expect(subject).not_to match("fo:o") + expect(subject).not_to match("foo:") + end + end + end +end + +describe Addressable::Template::MatchData do + let(:template) { Addressable::Template.new('{foo}/{bar}') } + subject(:its) { template.match('ab/cd') } + its(:uri) { should == Addressable::URI.parse('ab/cd') } + its(:template) { should == template } + its(:mapping) { should == { 'foo' => 'ab', 'bar' => 'cd' } } + its(:variables) { should == ['foo', 'bar'] } + its(:keys) { should == ['foo', 'bar'] } + its(:names) { should == ['foo', 'bar'] } + its(:values) { should == ['ab', 'cd'] } + its(:captures) { should == ['ab', 'cd'] } + its(:to_a) { should == ['ab/cd', 'ab', 'cd'] } + its(:to_s) { should == 'ab/cd' } + its(:string) { should == its.to_s } + its(:pre_match) { should == "" } + its(:post_match) { should == "" } + + describe 'values_at' do + it 'returns an array with the values' do + expect(its.values_at(0, 2)).to eq(['ab/cd', 'cd']) + end + it 'allows mixing integer an string keys' do + expect(its.values_at('foo', 1)).to eq(['ab', 'ab']) + end + it 'accepts unknown keys' do + expect(its.values_at('baz', 'foo')).to eq([nil, 'ab']) + end + end + + describe '[]' do + context 'string key' do + it 'returns the corresponding capture' do + expect(its['foo']).to eq('ab') + expect(its['bar']).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its['baz']).to be_nil + end + end + context 'symbol key' do + it 'returns the corresponding capture' do + expect(its[:foo]).to eq('ab') + expect(its[:bar]).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its[:baz]).to be_nil + end + end + context 'integer key' do + it 'returns the full URI for index 0' do + expect(its[0]).to eq('ab/cd') + end + it 'returns the corresponding capture' do + expect(its[1]).to eq('ab') + expect(its[2]).to eq('cd') + end + it 'returns nil for unknown keys' do + expect(its[3]).to be_nil + end + end + context 'other key' do + it 'raises an exception' do + expect { its[Object.new] }.to raise_error(TypeError) + end + end + context 'with length' do + it 'returns an array starting at index with given length' do + expect(its[0, 2]).to eq(['ab/cd', 'ab']) + expect(its[2, 1]).to eq(['cd']) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/uri_spec.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/uri_spec.rb new file mode 100644 index 0000000000..7cecd0c9cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/addressable/uri_spec.rb @@ -0,0 +1,6545 @@ +# frozen_string_literal: true + +# coding: utf-8 +# Copyright (C) Bob Aman +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +require "spec_helper" + +require "addressable/uri" +require "uri" +require "ipaddr" + +if !"".respond_to?("force_encoding") + class String + def force_encoding(encoding) + @encoding = encoding + end + + def encoding + @encoding ||= Encoding::ASCII_8BIT + end + end + + class Encoding + def initialize(name) + @name = name + end + + def to_s + return @name + end + + UTF_8 = Encoding.new("UTF-8") + ASCII_8BIT = Encoding.new("US-ASCII") + end +end + +module Fake + module URI + class HTTP + def initialize(uri) + @uri = uri + end + + def to_s + return @uri.to_s + end + + alias :to_str :to_s + end + end +end + +describe Addressable::URI, "when created with a non-numeric port number" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:port => "bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a invalid encoded port number" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:port => "%eb") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a non-string scheme" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:scheme => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string password" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:password => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string userinfo" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:userinfo => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string host" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:host => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string authority" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string path" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:path => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string query" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:query => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a non-string fragment" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:fragment => :bogus) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when created with a scheme but no hierarchical " + + "segment" do + it "should raise an error" do + expect(lambda do + Addressable::URI.parse("http:") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "quote handling" do + describe 'in host name' do + it "should raise an error for single quote" do + expect(lambda do + Addressable::URI.parse("http://local\"host/") + end).to raise_error(Addressable::URI::InvalidURIError) + end + end +end + +describe Addressable::URI, "newline normalization" do + it "should not accept newlines in scheme" do + expect(lambda do + Addressable::URI.parse("ht%0atp://localhost/") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not unescape newline in path" do + uri = Addressable::URI.parse("http://localhost/%0a").normalize + expect(uri.to_s).to eq("http://localhost/%0A") + end + + it "should not unescape newline in hostname" do + uri = Addressable::URI.parse("http://local%0ahost/").normalize + expect(uri.to_s).to eq("http://local%0Ahost/") + end + + it "should not unescape newline in username" do + uri = Addressable::URI.parse("http://foo%0abar@localhost/").normalize + expect(uri.to_s).to eq("http://foo%0Abar@localhost/") + end + + it "should not unescape newline in username" do + uri = Addressable::URI.parse("http://example:foo%0abar@example/").normalize + expect(uri.to_s).to eq("http://example:foo%0Abar@example/") + end + + it "should not accept newline in hostname" do + uri = Addressable::URI.parse("http://localhost/") + expect(lambda do + uri.host = "local\nhost" + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with ambiguous path" do + it "should raise an error" do + expect(lambda do + Addressable::URI.parse("::http") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with an invalid host" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:host => "") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host consisting of " + + "sub-delims characters" do + it "should not raise an error" do + expect(lambda do + Addressable::URI.new( + :host => Addressable::URI::CharacterClasses::SUB_DELIMS.gsub(/\\/, '') + ) + end).not_to raise_error + end +end + +describe Addressable::URI, "when created with a host consisting of " + + "unreserved characters" do + it "should not raise an error" do + expect(lambda do + Addressable::URI.new( + :host => Addressable::URI::CharacterClasses::UNRESERVED.gsub(/\\/, '') + ) + end).not_to raise_error + end +end + +describe Addressable::URI, "when created from nil components" do + before do + @uri = Addressable::URI.new + end + + it "should have a nil site value" do + expect(@uri.site).to eq(nil) + end + + it "should have an empty path" do + expect(@uri.path).to eq("") + end + + it "should be an empty uri" do + expect(@uri.to_s).to eq("") + end + + it "should have a nil default port" do + expect(@uri.default_port).to eq(nil) + end + + it "should be empty" do + expect(@uri).to be_empty + end + + it "should raise an error if the scheme is set to whitespace" do + expect(lambda do + @uri.scheme = "\t \n" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme is set to all digits" do + expect(lambda do + @uri.scheme = "123" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a digit" do + expect(lambda do + @uri.scheme = "1scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a plus" do + expect(lambda do + @uri.scheme = "+scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a dot" do + expect(lambda do + @uri.scheme = ".scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme begins with a dash" do + expect(lambda do + @uri.scheme = "-scheme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains an illegal character" do + expect(lambda do + @uri.scheme = "scheme!" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains whitespace" do + expect(lambda do + @uri.scheme = "sch eme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if the scheme contains a newline" do + expect(lambda do + @uri.scheme = "sch\neme" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.user = "user" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.password = "pass" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.scheme = "http" + @uri.fragment = "fragment" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should raise an error if set into an invalid state" do + expect(lambda do + @uri.fragment = "fragment" + @uri.scheme = "http" + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when initialized from individual components" do + before do + @uri = Addressable::URI.new( + :scheme => "http", + :user => "user", + :password => "password", + :host => "example.com", + :port => 8080, + :path => "/path", + :query => "query=value", + :fragment => "fragment" + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'com' for #tld" do + expect(@uri.tld).to eq("com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when initialized from " + + "frozen individual components" do + before do + @uri = Addressable::URI.new( + :scheme => "http".freeze, + :user => "user".freeze, + :password => "password".freeze, + :host => "example.com".freeze, + :port => "8080".freeze, + :path => "/path".freeze, + :query => "query=value".freeze, + :fragment => "fragment".freeze + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when parsed from a frozen string" do + before do + @uri = Addressable::URI.parse( + "http://user:password@example.com:8080/path?query=value#fragment".freeze + ) + end + + it "returns 'http' for #scheme" do + expect(@uri.scheme).to eq("http") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + end + + it "returns 'user' for #user" do + expect(@uri.user).to eq("user") + end + + it "returns 'user' for #normalized_user" do + expect(@uri.normalized_user).to eq("user") + end + + it "returns 'password' for #password" do + expect(@uri.password).to eq("password") + end + + it "returns 'password' for #normalized_password" do + expect(@uri.normalized_password).to eq("password") + end + + it "returns 'user:password' for #userinfo" do + expect(@uri.userinfo).to eq("user:password") + end + + it "returns 'user:password' for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq("user:password") + end + + it "returns 'example.com' for #host" do + expect(@uri.host).to eq("example.com") + end + + it "returns 'example.com' for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + end + + it "returns 'user:password@example.com:8080' for #authority" do + expect(@uri.authority).to eq("user:password@example.com:8080") + end + + it "returns 'user:password@example.com:8080' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("user:password@example.com:8080") + end + + it "returns 8080 for #port" do + expect(@uri.port).to eq(8080) + end + + it "returns 8080 for #normalized_port" do + expect(@uri.normalized_port).to eq(8080) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'http://user:password@example.com:8080' for #site" do + expect(@uri.site).to eq("http://user:password@example.com:8080") + end + + it "returns 'http://user:password@example.com:8080' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://user:password@example.com:8080") + end + + it "returns '/path' for #path" do + expect(@uri.path).to eq("/path") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + end + + it "returns 'query=value' for #query" do + expect(@uri.query).to eq("query=value") + end + + it "returns 'query=value' for #normalized_query" do + expect(@uri.normalized_query).to eq("query=value") + end + + it "returns 'fragment' for #fragment" do + expect(@uri.fragment).to eq("fragment") + end + + it "returns 'fragment' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("fragment") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq( + "http://user:password@example.com:8080/path?query=value#fragment" + ) + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should not be frozen" do + expect(@uri).not_to be_frozen + end + + it "should allow destructive operations" do + expect { @uri.normalize! }.not_to raise_error + end +end + +describe Addressable::URI, "when frozen" do + before do + @uri = Addressable::URI.new.freeze + end + + it "returns nil for #scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "returns nil for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq(nil) + end + + it "returns nil for #user" do + expect(@uri.user).to eq(nil) + end + + it "returns nil for #normalized_user" do + expect(@uri.normalized_user).to eq(nil) + end + + it "returns nil for #password" do + expect(@uri.password).to eq(nil) + end + + it "returns nil for #normalized_password" do + expect(@uri.normalized_password).to eq(nil) + end + + it "returns nil for #userinfo" do + expect(@uri.userinfo).to eq(nil) + end + + it "returns nil for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "returns nil for #host" do + expect(@uri.host).to eq(nil) + end + + it "returns nil for #normalized_host" do + expect(@uri.normalized_host).to eq(nil) + end + + it "returns nil for #authority" do + expect(@uri.authority).to eq(nil) + end + + it "returns nil for #normalized_authority" do + expect(@uri.normalized_authority).to eq(nil) + end + + it "returns nil for #port" do + expect(@uri.port).to eq(nil) + end + + it "returns nil for #normalized_port" do + expect(@uri.normalized_port).to eq(nil) + end + + it "returns nil for #default_port" do + expect(@uri.default_port).to eq(nil) + end + + it "returns nil for #site" do + expect(@uri.site).to eq(nil) + end + + it "returns nil for #normalized_site" do + expect(@uri.normalized_site).to eq(nil) + end + + it "returns '' for #path" do + expect(@uri.path).to eq('') + end + + it "returns '' for #normalized_path" do + expect(@uri.normalized_path).to eq('') + end + + it "returns nil for #query" do + expect(@uri.query).to eq(nil) + end + + it "returns nil for #normalized_query" do + expect(@uri.normalized_query).to eq(nil) + end + + it "returns nil for #fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "returns nil for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq(nil) + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq('') + end + + it "should be empty" do + expect(@uri).to be_empty + end + + it "should be frozen" do + expect(@uri).to be_frozen + end + + it "should not be frozen after duping" do + expect(@uri.dup).not_to be_frozen + end + + it "should not allow destructive operations" do + expect { @uri.normalize! }.to raise_error { |error| + expect(error.message).to match(/can't modify frozen/) + expect(error).to satisfy { |e| RuntimeError === e || TypeError === e } + } + end +end + +describe Addressable::URI, "when frozen" do + before do + @uri = Addressable::URI.parse( + "HTTP://example.com.:%38%30/%70a%74%68?a=%31#1%323" + ).freeze + end + + it "returns 'HTTP' for #scheme" do + expect(@uri.scheme).to eq("HTTP") + end + + it "returns 'http' for #normalized_scheme" do + expect(@uri.normalized_scheme).to eq("http") + expect(@uri.normalize.scheme).to eq("http") + end + + it "returns nil for #user" do + expect(@uri.user).to eq(nil) + end + + it "returns nil for #normalized_user" do + expect(@uri.normalized_user).to eq(nil) + end + + it "returns nil for #password" do + expect(@uri.password).to eq(nil) + end + + it "returns nil for #normalized_password" do + expect(@uri.normalized_password).to eq(nil) + end + + it "returns nil for #userinfo" do + expect(@uri.userinfo).to eq(nil) + end + + it "returns nil for #normalized_userinfo" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "returns 'example.com.' for #host" do + expect(@uri.host).to eq("example.com.") + end + + it "returns nil for #normalized_host" do + expect(@uri.normalized_host).to eq("example.com") + expect(@uri.normalize.host).to eq("example.com") + end + + it "returns 'example.com.:80' for #authority" do + expect(@uri.authority).to eq("example.com.:80") + end + + it "returns 'example.com:80' for #normalized_authority" do + expect(@uri.normalized_authority).to eq("example.com") + expect(@uri.normalize.authority).to eq("example.com") + end + + it "returns 80 for #port" do + expect(@uri.port).to eq(80) + end + + it "returns nil for #normalized_port" do + expect(@uri.normalized_port).to eq(nil) + expect(@uri.normalize.port).to eq(nil) + end + + it "returns 80 for #default_port" do + expect(@uri.default_port).to eq(80) + end + + it "returns 'HTTP://example.com.:80' for #site" do + expect(@uri.site).to eq("HTTP://example.com.:80") + end + + it "returns 'http://example.com' for #normalized_site" do + expect(@uri.normalized_site).to eq("http://example.com") + expect(@uri.normalize.site).to eq("http://example.com") + end + + it "returns '/%70a%74%68' for #path" do + expect(@uri.path).to eq("/%70a%74%68") + end + + it "returns '/path' for #normalized_path" do + expect(@uri.normalized_path).to eq("/path") + expect(@uri.normalize.path).to eq("/path") + end + + it "returns 'a=%31' for #query" do + expect(@uri.query).to eq("a=%31") + end + + it "returns 'a=1' for #normalized_query" do + expect(@uri.normalized_query).to eq("a=1") + expect(@uri.normalize.query).to eq("a=1") + end + + it "returns '/%70a%74%68?a=%31' for #request_uri" do + expect(@uri.request_uri).to eq("/%70a%74%68?a=%31") + end + + it "returns '1%323' for #fragment" do + expect(@uri.fragment).to eq("1%323") + end + + it "returns '123' for #normalized_fragment" do + expect(@uri.normalized_fragment).to eq("123") + expect(@uri.normalize.fragment).to eq("123") + end + + it "returns #hash" do + expect(@uri.hash).not_to be nil + end + + it "returns #to_s" do + expect(@uri.to_s).to eq('HTTP://example.com.:80/%70a%74%68?a=%31#1%323') + expect(@uri.normalize.to_s).to eq('http://example.com/path?a=1#123') + end + + it "should not be empty" do + expect(@uri).not_to be_empty + end + + it "should be frozen" do + expect(@uri).to be_frozen + end + + it "should not be frozen after duping" do + expect(@uri.dup).not_to be_frozen + end + + it "should not allow destructive operations" do + expect { @uri.normalize! }.to raise_error { |error| + expect(error.message).to match(/can't modify frozen/) + expect(error).to satisfy { |e| RuntimeError === e || TypeError === e } + } + end +end + +describe Addressable::URI, "when created from string components" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :host => "example.com" + ) + end + + it "should have a site value of 'http://example.com'" do + expect(@uri.site).to eq("http://example.com") + end + + it "should be equal to the equivalent parsed URI" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should raise an error if invalid components omitted" do + expect(lambda do + @uri.omit(:bogus) + end).to raise_error(ArgumentError) + expect(lambda do + @uri.omit(:scheme, :bogus, :path) + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with a nil host but " + + "non-nil authority components" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => "user", :password => "pass", :port => 80) + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with both an authority and a user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new( + :user => "user", :authority => "user@example.com:80" + ) + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with an authority and no port" do + before do + @uri = Addressable::URI.new(:authority => "user@example.com") + end + + it "should not infer a port" do + expect(@uri.port).to eq(nil) + expect(@uri.default_port).to eq(nil) + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a site value of '//user@example.com'" do + expect(@uri.site).to eq("//user@example.com") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when created with a host with trailing dots" do + before do + @uri = Addressable::URI.new(:authority => "example...") + end + + it "should have a stable normalized form" do + expect(@uri.normalize.normalize.normalize.host).to eq( + @uri.normalize.host + ) + end +end + +describe Addressable::URI, "when created with a host with a backslash" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example\\example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host with a slash" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example/example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with a host with a space" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:authority => "example example") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when created with both a userinfo and a user" do + it "should raise an error" do + expect(lambda do + Addressable::URI.new(:user => "user", :userinfo => "user:pass") + end).to raise_error(ArgumentError) + end +end + +describe Addressable::URI, "when created with a path that hasn't been " + + "prefixed with a '/' but a host specified" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :host => "example.com", :path => "path" + ) + end + + it "should prefix a '/' to the path" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/path")) + end + + it "should have a site value of 'http://example.com'" do + expect(@uri.site).to eq("http://example.com") + end + + it "should have an origin of 'http://example.com" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when created with a path that hasn't been " + + "prefixed with a '/' but no host specified" do + before do + @uri = Addressable::URI.new( + :scheme => "http", :path => "path" + ) + end + + it "should not prefix a '/' to the path" do + expect(@uri).to eq(Addressable::URI.parse("http:path")) + end + + it "should have a site value of 'http:'" do + expect(@uri.site).to eq("http:") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from an Addressable::URI object" do + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.parse(original_uri) + new_uri.host = 'www.example.com' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('http://www.example.com/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.heuristic_parse(original_uri) + new_uri.host = 'www.example.com' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('http://www.example.com/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.parse(original_uri) + new_uri.origin = 'https://www.example.com:8080' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('https://www.example.com:8080/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end + + it "should not have unexpected side-effects" do + original_uri = Addressable::URI.parse("http://example.com/") + new_uri = Addressable::URI.heuristic_parse(original_uri) + new_uri.origin = 'https://www.example.com:8080' + expect(new_uri.host).to eq('www.example.com') + expect(new_uri.to_s).to eq('https://www.example.com:8080/') + expect(original_uri.host).to eq('example.com') + expect(original_uri.to_s).to eq('http://example.com/') + end +end + +describe Addressable::URI, "when parsed from something that looks " + + "like a URI object" do + it "should parse without error" do + uri = Addressable::URI.parse(Fake::URI::HTTP.new("http://example.com/")) + expect(lambda do + Addressable::URI.parse(uri) + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from a standard library URI object" do + it "should parse without error" do + uri = Addressable::URI.parse(URI.parse("http://example.com/")) + expect(lambda do + Addressable::URI.parse(uri) + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from ''" do + before do + @uri = Addressable::URI.parse("") + end + + it "should have no scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'ftp://ftp.is.co.za/rfc/rfc1808.txt'" do + before do + @uri = Addressable::URI.parse("ftp://ftp.is.co.za/rfc/rfc1808.txt") + end + + it "should use the 'ftp' scheme" do + expect(@uri.scheme).to eq("ftp") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of 'ftp.is.co.za'" do + expect(@uri.host).to eq("ftp.is.co.za") + end + + it "should have inferred_port of 21" do + expect(@uri.inferred_port).to eq(21) + end + + it "should have a path of '/rfc/rfc1808.txt'" do + expect(@uri.path).to eq("/rfc/rfc1808.txt") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'ftp://ftp.is.co.za'" do + expect(@uri.origin).to eq('ftp://ftp.is.co.za') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'http://www.ietf.org/rfc/rfc2396.txt'" do + before do + @uri = Addressable::URI.parse("http://www.ietf.org/rfc/rfc2396.txt") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of 'www.ietf.org'" do + expect(@uri.host).to eq("www.ietf.org") + end + + it "should have inferred_port of 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/rfc/rfc2396.txt'" do + expect(@uri.path).to eq("/rfc/rfc2396.txt") + end + + it "should have a request URI of '/rfc/rfc2396.txt'" do + expect(@uri.request_uri).to eq("/rfc/rfc2396.txt") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should correctly omit components" do + expect(@uri.omit(:scheme).to_s).to eq("//www.ietf.org/rfc/rfc2396.txt") + expect(@uri.omit(:path).to_s).to eq("http://www.ietf.org") + end + + it "should correctly omit components destructively" do + @uri.omit!(:scheme) + expect(@uri.to_s).to eq("//www.ietf.org/rfc/rfc2396.txt") + end + + it "should have an origin of 'http://www.ietf.org'" do + expect(@uri.origin).to eq('http://www.ietf.org') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'ldap://[2001:db8::7]/c=GB?objectClass?one'" do + before do + @uri = Addressable::URI.parse("ldap://[2001:db8::7]/c=GB?objectClass?one") + end + + it "should use the 'ldap' scheme" do + expect(@uri.scheme).to eq("ldap") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a host of '[2001:db8::7]'" do + expect(@uri.host).to eq("[2001:db8::7]") + end + + it "should have inferred_port of 389" do + expect(@uri.inferred_port).to eq(389) + end + + it "should have a path of '/c=GB'" do + expect(@uri.path).to eq("/c=GB") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should not allow request URI assignment" do + expect(lambda do + @uri.request_uri = "/" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should have a query of 'objectClass?one'" do + expect(@uri.query).to eq("objectClass?one") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should correctly omit components" do + expect(@uri.omit(:scheme, :authority).to_s).to eq("/c=GB?objectClass?one") + expect(@uri.omit(:path).to_s).to eq("ldap://[2001:db8::7]?objectClass?one") + end + + it "should correctly omit components destructively" do + @uri.omit!(:scheme, :authority) + expect(@uri.to_s).to eq("/c=GB?objectClass?one") + end + + it "should raise an error if omission would create an invalid URI" do + expect(lambda do + @uri.omit(:authority, :path) + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should have an origin of 'ldap://[2001:db8::7]'" do + expect(@uri.origin).to eq('ldap://[2001:db8::7]') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'mailto:John.Doe@example.com'" do + before do + @uri = Addressable::URI.parse("mailto:John.Doe@example.com") + end + + it "should use the 'mailto' scheme" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of 'John.Doe@example.com'" do + expect(@uri.path).to eq("John.Doe@example.com") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 2 of RFC 6068 +describe Addressable::URI, "when parsed from " + + "'mailto:?to=addr1@an.example,addr2@an.example'" do + before do + @uri = Addressable::URI.parse( + "mailto:?to=addr1@an.example,addr2@an.example" + ) + end + + it "should use the 'mailto' scheme" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should have the To: field value parameterized" do + expect(@uri.query_values(Hash)["to"]).to eq( + "addr1@an.example,addr2@an.example" + ) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'news:comp.infosystems.www.servers.unix'" do + before do + @uri = Addressable::URI.parse("news:comp.infosystems.www.servers.unix") + end + + it "should use the 'news' scheme" do + expect(@uri.scheme).to eq("news") + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of 'comp.infosystems.www.servers.unix'" do + expect(@uri.path).to eq("comp.infosystems.www.servers.unix") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'tel:+1-816-555-1212'" do + before do + @uri = Addressable::URI.parse("tel:+1-816-555-1212") + end + + it "should use the 'tel' scheme" do + expect(@uri.scheme).to eq("tel") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should have a path of '+1-816-555-1212'" do + expect(@uri.path).to eq("+1-816-555-1212") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'telnet://192.0.2.16:80/'" do + before do + @uri = Addressable::URI.parse("telnet://192.0.2.16:80/") + end + + it "should use the 'telnet' scheme" do + expect(@uri.scheme).to eq("telnet") + end + + it "should have a host of '192.0.2.16'" do + expect(@uri.host).to eq("192.0.2.16") + end + + it "should have a port of 80" do + expect(@uri.port).to eq(80) + end + + it "should have a inferred_port of 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a default_port of 23" do + expect(@uri.default_port).to eq(23) + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'telnet://192.0.2.16:80'" do + expect(@uri.origin).to eq('telnet://192.0.2.16:80') + end +end + +# Section 1.1.2 of RFC 3986 +describe Addressable::URI, "when parsed from " + + "'urn:oasis:names:specification:docbook:dtd:xml:4.1.2'" do + before do + @uri = Addressable::URI.parse( + "urn:oasis:names:specification:docbook:dtd:xml:4.1.2") + end + + it "should use the 'urn' scheme" do + expect(@uri.scheme).to eq("urn") + end + + it "should not have an inferred_port" do + expect(@uri.inferred_port).to eq(nil) + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of " + + "'oasis:names:specification:docbook:dtd:xml:4.1.2'" do + expect(@uri.path).to eq("oasis:names:specification:docbook:dtd:xml:4.1.2") + end + + it "should not have a request URI" do + expect(@uri.request_uri).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when heuristically parsed from " + + "'192.0.2.16:8000/path'" do + before do + @uri = Addressable::URI.heuristic_parse("192.0.2.16:8000/path") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a host of '192.0.2.16'" do + expect(@uri.host).to eq("192.0.2.16") + end + + it "should have a port of '8000'" do + expect(@uri.port).to eq(8000) + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/path'" do + expect(@uri.path).to eq("/path") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have an origin of 'http://192.0.2.16:8000'" do + expect(@uri.origin).to eq('http://192.0.2.16:8000') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com'" do + before do + @uri = Addressable::URI.parse("http://example.com") + end + + it "when inspected, should have the correct URI" do + expect(@uri.inspect).to include("http://example.com") + end + + it "when inspected, should have the correct class name" do + expect(@uri.inspect).to include("Addressable::URI") + end + + it "when inspected, should have the correct object id" do + expect(@uri.inspect).to include("%#0x" % @uri.object_id) + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should be considered ip-based" do + expect(@uri).to be_ip_based + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not have a specified port" do + expect(@uri.port).to eq(nil) + end + + it "should have an empty path" do + expect(@uri.path).to eq("") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + expect(@uri.query_values).to eq(nil) + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should not be exactly equal to 42" do + expect(@uri.eql?(42)).to eq(false) + end + + it "should not be equal to 42" do + expect(@uri == 42).to eq(false) + end + + it "should not be roughly equal to 42" do + expect(@uri === 42).to eq(false) + end + + it "should be exactly equal to http://example.com" do + expect(@uri.eql?(Addressable::URI.parse("http://example.com"))).to eq(true) + end + + it "should be roughly equal to http://example.com/" do + expect(@uri === Addressable::URI.parse("http://example.com/")).to eq(true) + end + + it "should be roughly equal to the string 'http://example.com/'" do + expect(@uri === "http://example.com/").to eq(true) + end + + it "should not be roughly equal to the string " + + "'http://example.com:bogus/'" do + expect(lambda do + expect(@uri === "http://example.com:bogus/").to eq(false) + end).not_to raise_error + end + + it "should result in itself when joined with itself" do + expect(@uri.join(@uri).to_s).to eq("http://example.com") + expect(@uri.join!(@uri).to_s).to eq("http://example.com") + end + + it "should be equivalent to http://EXAMPLE.com" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com")) + end + + it "should be equivalent to http://EXAMPLE.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com:80/")) + end + + it "should have the same hash as http://example.com" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have the same hash as http://EXAMPLE.com after assignment" do + @uri.origin = "http://EXAMPLE.com" + expect(@uri.hash).to eq(Addressable::URI.parse("http://EXAMPLE.com").hash) + end + + it "should have a different hash from http://EXAMPLE.com" do + expect(@uri.hash).not_to eq(Addressable::URI.parse("http://EXAMPLE.com").hash) + end + + it "should not allow origin assignment without scheme" do + expect(lambda do + @uri.origin = "example.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow origin assignment without host" do + expect(lambda do + @uri.origin = "http://" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow origin assignment with bogus type" do + expect(lambda do + @uri.origin = :bogus + end).to raise_error(TypeError) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equivalent to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Section 6.2.2.1 of RFC 3986 + it "should be equivalent to http://EXAMPLE.COM/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.COM/")) + end + + it "should have a route of '/path/' to 'http://example.com/path/'" do + expect(@uri.route_to("http://example.com/path/")).to eq( + Addressable::URI.parse("/path/") + ) + end + + it "should have a route of '..' from 'http://example.com/path/'" do + expect(@uri.route_from("http://example.com/path/")).to eq( + Addressable::URI.parse("..") + ) + end + + it "should have a route of '#' to 'http://example.com/'" do + expect(@uri.route_to("http://example.com/")).to eq( + Addressable::URI.parse("#") + ) + end + + it "should have a route of 'http://elsewhere.com/' to " + + "'http://elsewhere.com/'" do + expect(@uri.route_to("http://elsewhere.com/")).to eq( + Addressable::URI.parse("http://elsewhere.com/") + ) + end + + it "when joined with 'relative/path' should be " + + "'http://example.com/relative/path'" do + expect(@uri.join('relative/path')).to eq( + Addressable::URI.parse("http://example.com/relative/path") + ) + end + + it "when joined with a bogus object a TypeError should be raised" do + expect(lambda do + @uri.join(42) + end).to raise_error(TypeError) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should have the correct username after assignment" do + @uri.user = "user@123!" + expect(@uri.user).to eq("user@123!") + expect(@uri.normalized_user).to eq("user%40123%21") + expect(@uri.password).to eq(nil) + expect(@uri.normalize.to_s).to eq("http://user%40123%21@example.com/") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "#secret@123!" + expect(@uri.password).to eq("#secret@123!") + expect(@uri.normalized_password).to eq("%23secret%40123%21") + expect(@uri.user).to eq("") + expect(@uri.normalize.to_s).to eq("http://:%23secret%40123%21@example.com/") + expect(@uri.omit(:password).to_s).to eq("http://example.com") + end + + it "should have the correct user/pass after repeated assignment" do + @uri.user = nil + expect(@uri.user).to eq(nil) + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + # Username cannot be nil if the password is set + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = nil + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = "" + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + @uri.user = nil + # Username cannot be nil if the password is set + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct user/pass after userinfo assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + @uri.userinfo = nil + expect(@uri.userinfo).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +# Section 5.1.2 of RFC 2616 +describe Addressable::URI, "when parsed from " + + "'HTTP://www.w3.org/pub/WWW/TheProject.html'" do + before do + @uri = Addressable::URI.parse("HTTP://www.w3.org/pub/WWW/TheProject.html") + end + + it "should have the correct request URI" do + expect(@uri.request_uri).to eq("/pub/WWW/TheProject.html") + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "/pub/WWW/TheProject.html?" + expect(@uri.request_uri).to eq("/pub/WWW/TheProject.html?") + expect(@uri.path).to eq("/pub/WWW/TheProject.html") + expect(@uri.query).to eq("") + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "/some/where/else.html" + expect(@uri.request_uri).to eq("/some/where/else.html") + expect(@uri.path).to eq("/some/where/else.html") + expect(@uri.query).to eq(nil) + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "/some/where/else.html?query?string" + expect(@uri.request_uri).to eq("/some/where/else.html?query?string") + expect(@uri.path).to eq("/some/where/else.html") + expect(@uri.query).to eq("query?string") + end + + it "should have the correct request URI after assignment" do + @uri.request_uri = "?x=y" + expect(@uri.request_uri).to eq("/?x=y") + expect(@uri.path).to eq("/") + expect(@uri.query).to eq("x=y") + end + + it "should raise an error if the site value is set to something bogus" do + expect(lambda do + @uri.site = 42 + end).to raise_error(TypeError) + end + + it "should raise an error if the request URI is set to something bogus" do + expect(lambda do + @uri.request_uri = 42 + end).to raise_error(TypeError) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "HTTP", + :user => nil, + :password => nil, + :host => "www.w3.org", + :port => nil, + :path => "/pub/WWW/TheProject.html", + :query => nil, + :fragment => nil + }) + end + + it "should have an origin of 'http://www.w3.org'" do + expect(@uri.origin).to eq('http://www.w3.org') + end +end + +describe Addressable::URI, "when parsing IPv6 addresses" do + it "should not raise an error for " + + "'http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[fe80:0:0:0:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[fe80:0:0:0:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[fe80::200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[fe80::200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[::1]/'" do + Addressable::URI.parse("http://[::1]/") + end + + it "should not raise an error for " + + "'http://[fe80::1]/'" do + Addressable::URI.parse("http://[fe80::1]/") + end + + it "should raise an error for " + + "'http://[]/'" do + expect(lambda do + Addressable::URI.parse("http://[]/") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsing IPv6 address" do + subject { Addressable::URI.parse("http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") } + its(:host) { should == '[3ffe:1900:4545:3:200:f8ff:fe21:67cf]' } + its(:hostname) { should == '3ffe:1900:4545:3:200:f8ff:fe21:67cf' } +end + +describe Addressable::URI, "when assigning IPv6 address" do + it "should allow to set bare IPv6 address as hostname" do + uri = Addressable::URI.parse("http://[::1]/") + uri.hostname = '3ffe:1900:4545:3:200:f8ff:fe21:67cf' + expect(uri.to_s).to eq('http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/') + end + + it "should allow to set bare IPv6 address as hostname with IPAddr object" do + uri = Addressable::URI.parse("http://[::1]/") + uri.hostname = IPAddr.new('3ffe:1900:4545:3:200:f8ff:fe21:67cf') + expect(uri.to_s).to eq('http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/') + end + + it "should not allow to set bare IPv6 address as host" do + uri = Addressable::URI.parse("http://[::1]/") + skip "not checked" + expect(lambda do + uri.host = '3ffe:1900:4545:3:200:f8ff:fe21:67cf' + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsing IPvFuture addresses" do + it "should not raise an error for " + + "'http://[v9.3ffe:1900:4545:3:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[v9.3ffe:1900:4545:3:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[vff.fe80:0:0:0:200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[vff.fe80:0:0:0:200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[v12.fe80::200:f8ff:fe21:67cf]/'" do + Addressable::URI.parse("http://[v12.fe80::200:f8ff:fe21:67cf]/") + end + + it "should not raise an error for " + + "'http://[va0.::1]/'" do + Addressable::URI.parse("http://[va0.::1]/") + end + + it "should not raise an error for " + + "'http://[v255.fe80::1]/'" do + Addressable::URI.parse("http://[v255.fe80::1]/") + end + + it "should raise an error for " + + "'http://[v0.]/'" do + expect(lambda do + Addressable::URI.parse("http://[v0.]/") + end).to raise_error(Addressable::URI::InvalidURIError) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/'" do + before do + @uri = Addressable::URI.parse("http://example.com/") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to HTTP://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("HTTP://example.com/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://Example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://Example.com/")) + end + + it "should have the correct username after assignment" do + @uri.user = nil + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should have the correct password after assignment" do + @uri.password = nil + expect(@uri.password).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should have a request URI of '/'" do + expect(@uri.request_uri).to eq("/") + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have the same hash as its duplicate" do + expect(@uri.hash).to eq(@uri.dup.hash) + end + + it "should have a different hash from its equivalent String value" do + expect(@uri.hash).not_to eq(@uri.to_s.hash) + end + + it "should have the same hash as an equal URI" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/").hash) + end + + it "should be equivalent to http://EXAMPLE.com" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com")) + end + + it "should be equivalent to http://EXAMPLE.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.com:80/")) + end + + it "should have the same hash as http://example.com/" do + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/").hash) + end + + it "should have the same hash as http://example.com after assignment" do + @uri.path = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have the same hash as http://example.com/? after assignment" do + @uri.query = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/?").hash) + end + + it "should have the same hash as http://example.com/? after assignment" do + @uri.query_values = {} + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/?").hash) + end + + it "should have the same hash as http://example.com/# after assignment" do + @uri.fragment = "" + expect(@uri.hash).to eq(Addressable::URI.parse("http://example.com/#").hash) + end + + it "should have a different hash from http://example.com" do + expect(@uri.hash).not_to eq(Addressable::URI.parse("http://example.com").hash) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com?#'" do + before do + @uri = Addressable::URI.parse("http://example.com?#") + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "", + :query => "", + :fragment => "" + }) + end + + it "should have a request URI of '/?'" do + expect(@uri.request_uri).to eq("/?") + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq("http://example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://@example.com/'" do + before do + @uri = Addressable::URI.parse("http://@example.com/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => "", + :password => nil, + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com./'" do + before do + @uri = Addressable::URI.parse("http://example.com./") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:@example.com/'" do + before do + @uri = Addressable::URI.parse("http://:@example.com/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => "", + :password => "", + :host => "example.com", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'HTTP://EXAMPLE.COM/'" do + before do + @uri = Addressable::URI.parse("HTTP://EXAMPLE.COM/") + end + + it "should be equivalent to http://example.com" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "HTTP", + :user => nil, + :password => nil, + :host => "EXAMPLE.COM", + :port => nil, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end + + it "should have a tld of 'com'" do + expect(@uri.tld).to eq('com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.example.co.uk/'" do + before do + @uri = Addressable::URI.parse("http://www.example.co.uk/") + end + + it "should have an origin of 'http://www.example.co.uk'" do + expect(@uri.origin).to eq('http://www.example.co.uk') + end + + it "should have a tld of 'co.uk'" do + expect(@uri.tld).to eq('co.uk') + end + + it "should have a domain of 'example.co.uk'" do + expect(@uri.domain).to eq('example.co.uk') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://sub_domain.blogspot.com/'" do + before do + @uri = Addressable::URI.parse("http://sub_domain.blogspot.com/") + end + + it "should have an origin of 'http://sub_domain.blogspot.com'" do + expect(@uri.origin).to eq('http://sub_domain.blogspot.com') + end + + it "should have a tld of 'com'" do + expect(@uri.tld).to eq('com') + end + + it "should have a domain of 'blogspot.com'" do + expect(@uri.domain).to eq('blogspot.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/~smith/'" do + before do + @uri = Addressable::URI.parse("http://example.com/~smith/") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com/%7Esmith/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/%7Esmith/")) + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to http://example.com/%7esmith/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/%7esmith/")) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%E8'" do + before do + @uri = Addressable::URI.parse("http://example.com/%E8") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/%E8" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/%E8" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path%2Fsegment/'" do + before do + @uri = Addressable::URI.parse("http://example.com/path%2Fsegment/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should be equal to 'http://example.com/path%2Fsegment/'" do + expect(@uri.normalize).to be_eql( + Addressable::URI.parse("http://example.com/path%2Fsegment/") + ) + end + + it "should not be equal to 'http://example.com/path/segment/'" do + expect(@uri).not_to eq( + Addressable::URI.parse("http://example.com/path/segment/") + ) + end + + it "should not be equal to 'http://example.com/path/segment/'" do + expect(@uri.normalize).not_to be_eql( + Addressable::URI.parse("http://example.com/path/segment/") + ) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?%F6'" do + before do + @uri = Addressable::URI.parse("http://example.com/?%F6") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/?%F6" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/?%F6" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/#%F6'" do + before do + @uri = Addressable::URI.parse("http://example.com/#%F6") + end + + it "should not raise an exception when normalized" do + expect(lambda do + @uri.normalize + end).not_to raise_error + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/#%F6" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/#%F6" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%C3%87'" do + before do + @uri = Addressable::URI.parse("http://example.com/%C3%87") + end + + # Based on http://intertwingly.net/blog/2004/07/31/URI-Equivalence + it "should be equivalent to 'http://example.com/C%CC%A7'" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/C%CC%A7")) + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com/%C3%87" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com/%C3%87" + end + + it "should raise an error if encoding with an unexpected return type" do + expect(lambda do + Addressable::URI.normalized_encode(@uri, Integer) + end).to raise_error(TypeError) + end + + it "if percent encoded should be 'http://example.com/C%25CC%25A7'" do + expect(Addressable::URI.encode(@uri).to_s).to eq( + "http://example.com/%25C3%2587" + ) + end + + it "if percent encoded should be 'http://example.com/C%25CC%25A7'" do + expect(Addressable::URI.encode(@uri, Addressable::URI)).to eq( + Addressable::URI.parse("http://example.com/%25C3%2587") + ) + end + + it "should raise an error if encoding with an unexpected return type" do + expect(lambda do + Addressable::URI.encode(@uri, Integer) + end).to raise_error(TypeError) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=string'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=string") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have a query string of 'q=string'" do + expect(@uri.query).to eq("q=string") + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:80/'" do + before do + @uri = Addressable::URI.parse("http://example.com:80/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com:80'" do + expect(@uri.authority).to eq("example.com:80") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have explicit port 80" do + expect(@uri.port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:80/" do + expect(@uri.eql?(Addressable::URI.parse("http://example.com:80/"))).to eq(true) + end + + it "should be roughly equal to http://example.com/" do + expect(@uri === Addressable::URI.parse("http://example.com/")).to eq(true) + end + + it "should be roughly equal to the string 'http://example.com/'" do + expect(@uri === "http://example.com/").to eq(true) + end + + it "should not be roughly equal to the string " + + "'http://example.com:bogus/'" do + expect(lambda do + expect(@uri === "http://example.com:bogus/").to eq(false) + end).not_to raise_error + end + + it "should result in itself when joined with itself" do + expect(@uri.join(@uri).to_s).to eq("http://example.com:80/") + expect(@uri.join!(@uri).to_s).to eq("http://example.com:80/") + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com:/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:/")) + end + + # Section 6.2.3 of RFC 3986 + it "should be equal to http://example.com:80/" do + expect(@uri).to eq(Addressable::URI.parse("http://example.com:80/")) + end + + # Section 6.2.2.1 of RFC 3986 + it "should be equal to http://EXAMPLE.COM/" do + expect(@uri).to eq(Addressable::URI.parse("http://EXAMPLE.COM/")) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => 80, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com:80/" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com:80/" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:8080/'" do + before do + @uri = Addressable::URI.parse("http://example.com:8080/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com:8080'" do + expect(@uri.authority).to eq("example.com:8080") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 8080" do + expect(@uri.inferred_port).to eq(8080) + end + + it "should have explicit port 8080" do + expect(@uri.port).to eq(8080) + end + + it "should have default port 80" do + expect(@uri.default_port).to eq(80) + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:8080/" do + expect(@uri.eql?(Addressable::URI.parse( + "http://example.com:8080/"))).to eq(true) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://example.com/path/to/'" do + expect(@uri.route_from("http://example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://example.com:80/path/to/'" do + expect(@uri.route_from("http://example.com:80/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should have a route of '../../' from " + + "'http://example.com:8080/path/to/'" do + expect(@uri.route_from("http://example.com:8080/path/to/")).to eq( + Addressable::URI.parse("../../") + ) + end + + it "should have a route of 'http://example.com:8080/' from " + + "'http://user:pass@example.com/path/to/'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com:8080/") + ) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => 8080, + :path => "/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com:8080'" do + expect(@uri.origin).to eq('http://example.com:8080') + end + + it "should not change if encoded with the normalizing algorithm" do + expect(Addressable::URI.normalized_encode(@uri).to_s).to eq( + "http://example.com:8080/" + ) + expect(Addressable::URI.normalized_encode(@uri, Addressable::URI).to_s).to be === + "http://example.com:8080/" + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com:%38%30/'" do + before do + @uri = Addressable::URI.parse("http://example.com:%38%30/") + end + + it "should have the correct port" do + expect(@uri.port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/%2E/'" do + before do + @uri = Addressable::URI.parse("http://example.com/%2E/") + end + + it "should be considered to be in normal form" do + skip( + 'path segment normalization should happen before ' + + 'percent escaping normalization' + ) + @uri.normalize.should be_eql(@uri) + end + + it "should normalize to 'http://example.com/%2E/'" do + skip( + 'path segment normalization should happen before ' + + 'percent escaping normalization' + ) + expect(@uri.normalize).to eq("http://example.com/%2E/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/../..'" do + before do + @uri = Addressable::URI.parse("http://example.com/../..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path(/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/path(/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/(path)/..'" do + before do + @uri = Addressable::URI.parse("http://example.com/(path)/..") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path(/../'" do + before do + @uri = Addressable::URI.parse("http://example.com/path(/../") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/(path)/../'" do + before do + @uri = Addressable::URI.parse("http://example.com/(path)/../") + end + + it "should have the correct port" do + expect(@uri.inferred_port).to eq(80) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'/..//example.com'" do + before do + @uri = Addressable::URI.parse("/..//example.com") + end + + it "should become invalid when normalized" do + expect(lambda do + @uri.normalize + end).to raise_error(Addressable::URI::InvalidURIError, /authority/) + end + + it "should have a path of '/..//example.com'" do + expect(@uri.path).to eq("/..//example.com") + end +end + +describe Addressable::URI, "when parsed from '/a/b/c/./../../g'" do + before do + @uri = Addressable::URI.parse("/a/b/c/./../../g") + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + # Section 5.2.4 of RFC 3986 + it "should normalize to '/a/g'" do + expect(@uri.normalize.to_s).to eq("/a/g") + end +end + +describe Addressable::URI, "when parsed from 'mid/content=5/../6'" do + before do + @uri = Addressable::URI.parse("mid/content=5/../6") + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + # Section 5.2.4 of RFC 3986 + it "should normalize to 'mid/6'" do + expect(@uri.normalize.to_s).to eq("mid/6") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.example.com///../'" do + before do + @uri = Addressable::URI.parse('http://www.example.com///../') + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end + + it "should normalize to 'http://www.example.com//'" do + expect(@uri.normalize.to_s).to eq("http://www.example.com//") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/path/to/resource/'" do + before do + @uri = Addressable::URI.parse("http://example.com/path/to/resource/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/path/to/resource/'" do + expect(@uri.path).to eq("/path/to/resource/") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should not be considered relative" do + expect(@uri).not_to be_relative + end + + it "should be exactly equal to http://example.com:8080/" do + expect(@uri.eql?(Addressable::URI.parse( + "http://example.com/path/to/resource/"))).to eq(true) + end + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/'" do + expect(@uri.route_from("http://example.com/path/to/")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of '../' from " + + "'http://example.com/path/to/resource/sub'" do + expect(@uri.route_from("http://example.com/path/to/resource/sub")).to eq( + Addressable::URI.parse("../") + ) + end + + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/another'" do + expect(@uri.route_from("http://example.com/path/to/another")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'resource/' from " + + "'http://example.com/path/to/res'" do + expect(@uri.route_from("http://example.com/path/to/res")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'resource/' from " + + "'http://example.com:80/path/to/'" do + expect(@uri.route_from("http://example.com:80/path/to/")).to eq( + Addressable::URI.parse("resource/") + ) + end + + it "should have a route of 'http://example.com/path/to/' from " + + "'http://example.com:8080/path/to/'" do + expect(@uri.route_from("http://example.com:8080/path/to/")).to eq( + Addressable::URI.parse("http://example.com/path/to/resource/") + ) + end + + it "should have a route of 'http://example.com/path/to/' from " + + "'http://user:pass@example.com/path/to/'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/")).to eq( + Addressable::URI.parse("http://example.com/path/to/resource/") + ) + end + + it "should have a route of '../../path/to/resource/' from " + + "'http://example.com/to/resource/'" do + expect(@uri.route_from("http://example.com/to/resource/")).to eq( + Addressable::URI.parse("../../path/to/resource/") + ) + end + + it "should correctly convert to a hash" do + expect(@uri.to_hash).to eq({ + :scheme => "http", + :user => nil, + :password => nil, + :host => "example.com", + :port => nil, + :path => "/path/to/resource/", + :query => nil, + :fragment => nil + }) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'relative/path/to/resource'" do + before do + @uri = Addressable::URI.parse("relative/path/to/resource") + end + + it "should not have a scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an authority segment" do + expect(@uri.authority).to eq(nil) + end + + it "should not have a host" do + expect(@uri.host).to eq(nil) + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not have a port" do + expect(@uri.port).to eq(nil) + end + + it "should have a path of 'relative/path/to/resource'" do + expect(@uri.path).to eq("relative/path/to/resource") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should not be considered absolute" do + expect(@uri).not_to be_absolute + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should raise an error if routing is attempted" do + expect(lambda do + @uri.route_to("http://example.com/") + end).to raise_error(ArgumentError, /relative\/path\/to\/resource/) + expect(lambda do + @uri.route_from("http://example.com/") + end).to raise_error(ArgumentError, /relative\/path\/to\/resource/) + end + + it "when joined with 'another/relative/path' should be " + + "'relative/path/to/another/relative/path'" do + expect(@uri.join('another/relative/path')).to eq( + Addressable::URI.parse("relative/path/to/another/relative/path") + ) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end +end + +describe Addressable::URI, "when parsed from " + + "'relative_path_with_no_slashes'" do + before do + @uri = Addressable::URI.parse("relative_path_with_no_slashes") + end + + it "should not have a scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should not be considered ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should not have an authority segment" do + expect(@uri.authority).to eq(nil) + end + + it "should not have a host" do + expect(@uri.host).to eq(nil) + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not have a port" do + expect(@uri.port).to eq(nil) + end + + it "should have a path of 'relative_path_with_no_slashes'" do + expect(@uri.path).to eq("relative_path_with_no_slashes") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should not be considered absolute" do + expect(@uri).not_to be_absolute + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "when joined with 'another_relative_path' should be " + + "'another_relative_path'" do + expect(@uri.join('another_relative_path')).to eq( + Addressable::URI.parse("another_relative_path") + ) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt'" do + expect(@uri.path).to eq("/file.txt") + end + + it "should have a basename of 'file.txt'" do + expect(@uri.basename).to eq("file.txt") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt;parameter'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt;parameter") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt;parameter'" do + expect(@uri.path).to eq("/file.txt;parameter") + end + + it "should have a basename of 'file.txt'" do + expect(@uri.basename).to eq("file.txt") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/file.txt;x=y'" do + before do + @uri = Addressable::URI.parse("http://example.com/file.txt;x=y") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have a scheme of 'http'" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'example.com'" do + expect(@uri.authority).to eq("example.com") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have no username" do + expect(@uri.user).to eq(nil) + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/file.txt;x=y'" do + expect(@uri.path).to eq("/file.txt;x=y") + end + + it "should have an extname of '.txt'" do + expect(@uri.extname).to eq(".txt") + end + + it "should have no query string" do + expect(@uri.query).to eq(nil) + end + + it "should have no fragment" do + expect(@uri.fragment).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'svn+ssh://developername@rubyforge.org/var/svn/project'" do + before do + @uri = Addressable::URI.parse( + "svn+ssh://developername@rubyforge.org/var/svn/project" + ) + end + + it "should have a scheme of 'svn+ssh'" do + expect(@uri.scheme).to eq("svn+ssh") + end + + it "should be considered to be ip-based" do + expect(@uri).to be_ip_based + end + + it "should have a path of '/var/svn/project'" do + expect(@uri.path).to eq("/var/svn/project") + end + + it "should have a username of 'developername'" do + expect(@uri.user).to eq("developername") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'ssh+svn://developername@RUBYFORGE.ORG/var/svn/project'" do + before do + @uri = Addressable::URI.parse( + "ssh+svn://developername@RUBYFORGE.ORG/var/svn/project" + ) + end + + it "should have a scheme of 'ssh+svn'" do + expect(@uri.scheme).to eq("ssh+svn") + end + + it "should have a normalized scheme of 'svn+ssh'" do + expect(@uri.normalized_scheme).to eq("svn+ssh") + end + + it "should have a normalized site of 'svn+ssh'" do + expect(@uri.normalized_site).to eq("svn+ssh://developername@rubyforge.org") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of '/var/svn/project'" do + expect(@uri.path).to eq("/var/svn/project") + end + + it "should have a username of 'developername'" do + expect(@uri.user).to eq("developername") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should not be considered to be in normal form" do + expect(@uri.normalize).not_to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'mailto:user@example.com'" do + before do + @uri = Addressable::URI.parse("mailto:user@example.com") + end + + it "should have a scheme of 'mailto'" do + expect(@uri.scheme).to eq("mailto") + end + + it "should not be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of 'user@example.com'" do + expect(@uri.path).to eq("user@example.com") + end + + it "should have no user" do + expect(@uri.user).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'tag:example.com,2006-08-18:/path/to/something'" do + before do + @uri = Addressable::URI.parse( + "tag:example.com,2006-08-18:/path/to/something") + end + + it "should have a scheme of 'tag'" do + expect(@uri.scheme).to eq("tag") + end + + it "should be considered to be ip-based" do + expect(@uri).not_to be_ip_based + end + + it "should have a path of " + + "'example.com,2006-08-18:/path/to/something'" do + expect(@uri.path).to eq("example.com,2006-08-18:/path/to/something") + end + + it "should have no user" do + expect(@uri.user).to eq(nil) + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/x;y/'" do + before do + @uri = Addressable::URI.parse("http://example.com/x;y/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?x=1&y=2'" do + before do + @uri = Addressable::URI.parse("http://example.com/?x=1&y=2") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end +end + +describe Addressable::URI, "when parsed from " + + "'view-source:http://example.com/'" do + before do + @uri = Addressable::URI.parse("view-source:http://example.com/") + end + + it "should have a scheme of 'view-source'" do + expect(@uri.scheme).to eq("view-source") + end + + it "should have a path of 'http://example.com/'" do + expect(@uri.path).to eq("http://example.com/") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment'" do + before do + @uri = Addressable::URI.parse( + "http://user:pass@example.com/path/to/resource?query=x#fragment") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have an authority segment of 'user:pass@example.com'" do + expect(@uri.authority).to eq("user:pass@example.com") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have a password of 'pass'" do + expect(@uri.password).to eq("pass") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/path/to/resource'" do + expect(@uri.path).to eq("/path/to/resource") + end + + it "should have a query string of 'query=x'" do + expect(@uri.query).to eq("query=x") + end + + it "should have a fragment of 'fragment'" do + expect(@uri.fragment).to eq("fragment") + end + + it "should be considered to be in normal form" do + expect(@uri.normalize).to be_eql(@uri) + end + + it "should have a route of '../../' to " + + "'http://user:pass@example.com/path/'" do + expect(@uri.route_to("http://user:pass@example.com/path/")).to eq( + Addressable::URI.parse("../../") + ) + end + + it "should have a route of 'to/resource?query=x#fragment' " + + "from 'http://user:pass@example.com/path/'" do + expect(@uri.route_from("http://user:pass@example.com/path/")).to eq( + Addressable::URI.parse("to/resource?query=x#fragment") + ) + end + + it "should have a route of '?query=x#fragment' " + + "from 'http://user:pass@example.com/path/to/resource'" do + expect(@uri.route_from("http://user:pass@example.com/path/to/resource")).to eq( + Addressable::URI.parse("?query=x#fragment") + ) + end + + it "should have a route of '#fragment' " + + "from 'http://user:pass@example.com/path/to/resource?query=x'" do + expect(@uri.route_from( + "http://user:pass@example.com/path/to/resource?query=x")).to eq( + Addressable::URI.parse("#fragment") + ) + end + + it "should have a route of '#fragment' from " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment'" do + expect(@uri.route_from( + "http://user:pass@example.com/path/to/resource?query=x#fragment" + )).to eq(Addressable::URI.parse("#fragment")) + end + + it "should have a route of 'http://elsewhere.com/' to " + + "'http://elsewhere.com/'" do + expect(@uri.route_to("http://elsewhere.com/")).to eq( + Addressable::URI.parse("http://elsewhere.com/") + ) + end + + it "should have a route of " + + "'http://user:pass@example.com/path/to/resource?query=x#fragment' " + + "from 'http://example.com/path/to/'" do + expect(@uri.route_from("http://elsewhere.com/path/to/")).to eq( + Addressable::URI.parse( + "http://user:pass@example.com/path/to/resource?query=x#fragment") + ) + end + + it "should have the correct scheme after assignment" do + @uri.scheme = "ftp" + expect(@uri.scheme).to eq("ftp") + expect(@uri.to_s).to eq( + "ftp://user:pass@example.com/path/to/resource?query=x#fragment" + ) + expect(@uri.to_str).to eq( + "ftp://user:pass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct site segment after assignment" do + @uri.site = "https://newuser:newpass@example.com:443" + expect(@uri.scheme).to eq("https") + expect(@uri.authority).to eq("newuser:newpass@example.com:443") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.normalized_userinfo).to eq("newuser:newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(443) + expect(@uri.inferred_port).to eq(443) + expect(@uri.to_s).to eq( + "https://newuser:newpass@example.com:443" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser:newpass@example.com:80" + expect(@uri.authority).to eq("newuser:newpass@example.com:80") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.normalized_userinfo).to eq("newuser:newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(80) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq( + "http://newuser:newpass@example.com:80" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct userinfo segment after assignment" do + @uri.userinfo = "newuser:newpass" + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.authority).to eq("newuser:newpass@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq( + "http://newuser:newpass@example.com" + + "/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.authority).to eq("newuser:pass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.authority).to eq("user:newpass@example.com") + end + + it "should have the correct host after assignment" do + @uri.host = "newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.authority).to eq("user:pass@newexample.com") + end + + it "should have the correct host after assignment" do + @uri.hostname = "newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.hostname).to eq("newexample.com") + expect(@uri.authority).to eq("user:pass@newexample.com") + end + + it "should raise an error if assigning a bogus object to the hostname" do + expect(lambda do + @uri.hostname = Object.new + end).to raise_error + end + + it "should have the correct port after assignment" do + @uri.port = 8080 + expect(@uri.port).to eq(8080) + expect(@uri.authority).to eq("user:pass@example.com:8080") + end + + it "should have the correct origin after assignment" do + @uri.origin = "http://newexample.com" + expect(@uri.host).to eq("newexample.com") + expect(@uri.authority).to eq("newexample.com") + end + + it "should have the correct path after assignment" do + @uri.path = "/newpath/to/resource" + expect(@uri.path).to eq("/newpath/to/resource") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/newpath/to/resource?query=x#fragment" + ) + end + + it "should have the correct scheme and authority after nil assignment" do + @uri.site = nil + expect(@uri.scheme).to eq(nil) + expect(@uri.authority).to eq(nil) + expect(@uri.to_s).to eq("/path/to/resource?query=x#fragment") + end + + it "should have the correct scheme and authority after assignment" do + @uri.site = "file://" + expect(@uri.scheme).to eq("file") + expect(@uri.authority).to eq("") + expect(@uri.to_s).to eq("file:///path/to/resource?query=x#fragment") + end + + it "should have the correct path after nil assignment" do + @uri.path = nil + expect(@uri.path).to eq("") + expect(@uri.to_s).to eq( + "http://user:pass@example.com?query=x#fragment" + ) + end + + it "should have the correct query string after assignment" do + @uri.query = "newquery=x" + expect(@uri.query).to eq("newquery=x") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?newquery=x#fragment" + ) + @uri.query = nil + expect(@uri.query).to eq(nil) + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource#fragment" + ) + end + + it "should have the correct query string after hash assignment" do + @uri.query_values = {"?uestion mark" => "=sign", "hello" => "g\xC3\xBCnther"} + expect(@uri.query.split("&")).to include("%3Fuestion%20mark=%3Dsign") + expect(@uri.query.split("&")).to include("hello=g%C3%BCnther") + expect(@uri.query_values).to eq({ + "?uestion mark" => "=sign", "hello" => "g\xC3\xBCnther" + }) + end + + it "should have the correct query string after flag hash assignment" do + @uri.query_values = {'flag?1' => nil, 'fl=ag2' => nil, 'flag3' => nil} + expect(@uri.query.split("&")).to include("flag%3F1") + expect(@uri.query.split("&")).to include("fl%3Dag2") + expect(@uri.query.split("&")).to include("flag3") + expect(@uri.query_values(Array).sort).to eq([["fl=ag2"], ["flag3"], ["flag?1"]]) + expect(@uri.query_values(Hash)).to eq({ + 'flag?1' => nil, 'fl=ag2' => nil, 'flag3' => nil + }) + end + + it "should raise an error if query values are set to a bogus type" do + expect(lambda do + @uri.query_values = "bogus" + end).to raise_error(TypeError) + end + + it "should have the correct fragment after assignment" do + @uri.fragment = "newfragment" + expect(@uri.fragment).to eq("newfragment") + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#newfragment" + ) + + @uri.fragment = nil + expect(@uri.fragment).to eq(nil) + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:fragment => "newfragment").to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#newfragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:fragment => nil).to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:userinfo => "newuser:newpass").to_s).to eq( + "http://newuser:newpass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:userinfo => nil).to_s).to eq( + "http://example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:path => "newpath").to_s).to eq( + "http://user:pass@example.com/newpath?query=x#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:port => "42", :path => "newpath", :query => "").to_s).to eq( + "http://user:pass@example.com:42/newpath?#fragment" + ) + end + + it "should have the correct values after a merge" do + expect(@uri.merge(:authority => "foo:bar@baz:42").to_s).to eq( + "http://foo:bar@baz:42/path/to/resource?query=x#fragment" + ) + # Ensure the operation was not destructive + expect(@uri.to_s).to eq( + "http://user:pass@example.com/path/to/resource?query=x#fragment" + ) + end + + it "should have the correct values after a destructive merge" do + @uri.merge!(:authority => "foo:bar@baz:42") + # Ensure the operation was destructive + expect(@uri.to_s).to eq( + "http://foo:bar@baz:42/path/to/resource?query=x#fragment" + ) + end + + it "should fail to merge with bogus values" do + expect(lambda do + @uri.merge(:port => "bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should fail to merge with bogus values" do + expect(lambda do + @uri.merge(:authority => "bar@baz:bogus") + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should fail to merge with bogus parameters" do + expect(lambda do + @uri.merge(42) + end).to raise_error(TypeError) + end + + it "should fail to merge with bogus parameters" do + expect(lambda do + @uri.merge("http://example.com/") + end).to raise_error(TypeError) + end + + it "should fail to merge with both authority and subcomponents" do + expect(lambda do + @uri.merge(:authority => "foo:bar@baz:42", :port => "42") + end).to raise_error(ArgumentError) + end + + it "should fail to merge with both userinfo and subcomponents" do + expect(lambda do + @uri.merge(:userinfo => "foo:bar", :user => "foo") + end).to raise_error(ArgumentError) + end + + it "should be identical to its duplicate" do + expect(@uri).to eq(@uri.dup) + end + + it "should have an origin of 'http://example.com'" do + expect(@uri.origin).to eq('http://example.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/search?q=Q%26A'" do + + before do + @uri = Addressable::URI.parse("http://example.com/search?q=Q%26A") + end + + it "should have a query of 'q=Q%26A'" do + expect(@uri.query).to eq("q=Q%26A") + end + + it "should have query_values of {'q' => 'Q&A'}" do + expect(@uri.query_values).to eq({ 'q' => 'Q&A' }) + end + + it "should normalize to the original uri " + + "(with the ampersand properly percent-encoded)" do + expect(@uri.normalize.to_s).to eq("http://example.com/search?q=Q%26A") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?&x=b") + end + + it "should have a query of '&x=b'" do + expect(@uri.query).to eq("&x=b") + end + + it "should have query_values of {'x' => 'b'}" do + expect(@uri.query_values).to eq({'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q='one;two'&x=1'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q='one;two'&x=1") + end + + it "should have a query of 'q='one;two'&x=1'" do + expect(@uri.query).to eq("q='one;two'&x=1") + end + + it "should have query_values of {\"q\" => \"'one;two'\", \"x\" => \"1\"}" do + expect(@uri.query_values).to eq({"q" => "'one;two'", "x" => "1"}) + end + + it "should escape the ';' character when normalizing to avoid ambiguity " + + "with the W3C HTML 4.01 specification" do + # HTML 4.01 Section B.2.2 + expect(@uri.normalize.query).to eq("q='one%3Btwo'&x=1") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?&&x=b") + end + + it "should have a query of '&&x=b'" do + expect(@uri.query).to eq("&&x=b") + end + + it "should have query_values of {'x' => 'b'}" do + expect(@uri.query_values).to eq({'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a&&x=b") + end + + it "should have a query of 'q=a&&x=b'" do + expect(@uri.query).to eq("q=a&&x=b") + end + + it "should have query_values of {'q' => 'a, 'x' => 'b'}" do + expect(@uri.query_values).to eq({'q' => 'a', 'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q&&x=b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q&&x=b") + end + + it "should have a query of 'q&&x=b'" do + expect(@uri.query).to eq("q&&x=b") + end + + it "should have query_values of {'q' => true, 'x' => 'b'}" do + expect(@uri.query_values).to eq({'q' => nil, 'x' => 'b'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a+b'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a+b") + end + + it "should have a query of 'q=a+b'" do + expect(@uri.query).to eq("q=a+b") + end + + it "should have query_values of {'q' => 'a b'}" do + expect(@uri.query_values).to eq({'q' => 'a b'}) + end + + it "should have a normalized query of 'q=a+b'" do + expect(@uri.normalized_query).to eq("q=a+b") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q=a%2bb'" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=a%2bb") + end + + it "should have a query of 'q=a+b'" do + expect(@uri.query).to eq("q=a%2bb") + end + + it "should have query_values of {'q' => 'a+b'}" do + expect(@uri.query_values).to eq({'q' => 'a+b'}) + end + + it "should have a normalized query of 'q=a%2Bb'" do + expect(@uri.normalized_query).to eq("q=a%2Bb") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?v=%7E&w=%&x=%25&y=%2B&z=C%CC%A7'" do + before do + @uri = Addressable::URI.parse("http://example.com/?v=%7E&w=%&x=%25&y=%2B&z=C%CC%A7") + end + + it "should have a normalized query of 'v=~&w=%25&x=%25&y=%2B&z=%C3%87'" do + expect(@uri.normalized_query).to eq("v=~&w=%25&x=%25&y=%2B&z=%C3%87") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?v=%7E&w=%&x=%25&y=+&z=C%CC%A7'" do + before do + @uri = Addressable::URI.parse("http://example.com/?v=%7E&w=%&x=%25&y=+&z=C%CC%A7") + end + + it "should have a normalized query of 'v=~&w=%25&x=%25&y=+&z=%C3%87'" do + expect(@uri.normalized_query).to eq("v=~&w=%25&x=%25&y=+&z=%C3%87") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/sound%2bvision'" do + before do + @uri = Addressable::URI.parse("http://example.com/sound%2bvision") + end + + it "should have a normalized path of '/sound+vision'" do + expect(@uri.normalized_path).to eq('/sound+vision') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/?q='" do + before do + @uri = Addressable::URI.parse("http://example.com/?q=") + end + + it "should have a query of 'q='" do + expect(@uri.query).to eq("q=") + end + + it "should have query_values of {'q' => ''}" do + expect(@uri.query_values).to eq({'q' => ''}) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user@example.com'" do + before do + @uri = Addressable::URI.parse("http://user@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have no password" do + expect(@uri.password).to eq(nil) + end + + it "should have a userinfo of 'user'" do + expect(@uri.userinfo).to eq("user") + end + + it "should have a normalized userinfo of 'user'" do + expect(@uri.normalized_userinfo).to eq("user") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have default_port 80" do + expect(@uri.default_port).to eq(80) + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.to_s).to eq("http://user:newpass@example.com") + end + + it "should have the correct userinfo segment after assignment" do + @uri.userinfo = "newuser:newpass" + expect(@uri.userinfo).to eq("newuser:newpass") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser:newpass@example.com") + end + + it "should have the correct userinfo segment after nil assignment" do + @uri.userinfo = nil + expect(@uri.userinfo).to eq(nil) + expect(@uri.user).to eq(nil) + expect(@uri.password).to eq(nil) + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser@example.com" + expect(@uri.authority).to eq("newuser@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq(nil) + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser@example.com") + end + + it "should raise an error after nil assignment of authority segment" do + expect(lambda do + # This would create an invalid URI + @uri.authority = nil + end).to raise_error + end +end + +describe Addressable::URI, "when parsed from " + + "'http://user:@example.com'" do + before do + @uri = Addressable::URI.parse("http://user:@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of 'user'" do + expect(@uri.user).to eq("user") + end + + it "should have a password of ''" do + expect(@uri.password).to eq("") + end + + it "should have a normalized userinfo of 'user:'" do + expect(@uri.normalized_userinfo).to eq("user:") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.to_s).to eq("http://user:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = "newuser:@example.com" + expect(@uri.authority).to eq("newuser:@example.com") + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://newuser:@example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:pass@example.com'" do + before do + @uri = Addressable::URI.parse("http://:pass@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of ''" do + expect(@uri.user).to eq("") + end + + it "should have a password of 'pass'" do + expect(@uri.password).to eq("pass") + end + + it "should have a userinfo of ':pass'" do + expect(@uri.userinfo).to eq(":pass") + end + + it "should have a normalized userinfo of ':pass'" do + expect(@uri.normalized_userinfo).to eq(":pass") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("pass") + expect(@uri.to_s).to eq("http://newuser:pass@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = ":newpass@example.com" + expect(@uri.authority).to eq(":newpass@example.com") + expect(@uri.user).to eq("") + expect(@uri.password).to eq("newpass") + expect(@uri.host).to eq("example.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://:newpass@example.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://:@example.com'" do + before do + @uri = Addressable::URI.parse("http://:@example.com") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a username of ''" do + expect(@uri.user).to eq("") + end + + it "should have a password of ''" do + expect(@uri.password).to eq("") + end + + it "should have a normalized userinfo of nil" do + expect(@uri.normalized_userinfo).to eq(nil) + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have the correct username after assignment" do + @uri.user = "newuser" + expect(@uri.user).to eq("newuser") + expect(@uri.password).to eq("") + expect(@uri.to_s).to eq("http://newuser:@example.com") + end + + it "should have the correct password after assignment" do + @uri.password = "newpass" + expect(@uri.password).to eq("newpass") + expect(@uri.user).to eq("") + expect(@uri.to_s).to eq("http://:newpass@example.com") + end + + it "should have the correct authority segment after assignment" do + @uri.authority = ":@newexample.com" + expect(@uri.authority).to eq(":@newexample.com") + expect(@uri.user).to eq("") + expect(@uri.password).to eq("") + expect(@uri.host).to eq("newexample.com") + expect(@uri.port).to eq(nil) + expect(@uri.inferred_port).to eq(80) + expect(@uri.to_s).to eq("http://:@newexample.com") + end +end + +describe Addressable::URI, "when parsed from " + + "'#example'" do + before do + @uri = Addressable::URI.parse("#example") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have a host of nil" do + expect(@uri.host).to eq(nil) + end + + it "should have a site of nil" do + expect(@uri.site).to eq(nil) + end + + it "should have a normalized_site of nil" do + expect(@uri.normalized_site).to eq(nil) + end + + it "should have a path of ''" do + expect(@uri.path).to eq("") + end + + it "should have a query string of nil" do + expect(@uri.query).to eq(nil) + end + + it "should have a fragment of 'example'" do + expect(@uri.fragment).to eq("example") + end +end + +describe Addressable::URI, "when parsed from " + + "the network-path reference '//example.com/'" do + before do + @uri = Addressable::URI.parse("//example.com/") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should have a path of '/'" do + expect(@uri.path).to eq("/") + end + + it "should raise an error if routing is attempted" do + expect(lambda do + @uri.route_to("http://example.com/") + end).to raise_error(ArgumentError, /\/\/example.com\//) + expect(lambda do + @uri.route_from("http://example.com/") + end).to raise_error(ArgumentError, /\/\/example.com\//) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'feed://http://example.com/'" do + before do + @uri = Addressable::URI.parse("feed://http://example.com/") + end + + it "should have a host of 'http'" do + expect(@uri.host).to eq("http") + end + + it "should have a path of '//example.com/'" do + expect(@uri.path).to eq("//example.com/") + end +end + +describe Addressable::URI, "when parsed from " + + "'feed:http://example.com/'" do + before do + @uri = Addressable::URI.parse("feed:http://example.com/") + end + + it "should have a path of 'http://example.com/'" do + expect(@uri.path).to eq("http://example.com/") + end + + it "should normalize to 'http://example.com/'" do + expect(@uri.normalize.to_s).to eq("http://example.com/") + expect(@uri.normalize!.to_s).to eq("http://example.com/") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'example://a/b/c/%7Bfoo%7D'" do + before do + @uri = Addressable::URI.parse("example://a/b/c/%7Bfoo%7D") + end + + # Section 6.2.2 of RFC 3986 + it "should be equivalent to eXAMPLE://a/./b/../b/%63/%7bfoo%7d" do + expect(@uri).to eq( + Addressable::URI.parse("eXAMPLE://a/./b/../b/%63/%7bfoo%7d") + ) + end + + it "should have an origin of 'example://a'" do + expect(@uri.origin).to eq('example://a') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://example.com/indirect/path/./to/../resource/'" do + before do + @uri = Addressable::URI.parse( + "http://example.com/indirect/path/./to/../resource/") + end + + it "should use the 'http' scheme" do + expect(@uri.scheme).to eq("http") + end + + it "should have a host of 'example.com'" do + expect(@uri.host).to eq("example.com") + end + + it "should use port 80" do + expect(@uri.inferred_port).to eq(80) + end + + it "should have a path of '/indirect/path/./to/../resource/'" do + expect(@uri.path).to eq("/indirect/path/./to/../resource/") + end + + # Section 6.2.2.3 of RFC 3986 + it "should have a normalized path of '/indirect/path/resource/'" do + expect(@uri.normalize.path).to eq("/indirect/path/resource/") + expect(@uri.normalize!.path).to eq("/indirect/path/resource/") + end +end + +describe Addressable::URI, "when parsed from " + + "'http://under_score.example.com/'" do + it "should not cause an error" do + expect(lambda do + Addressable::URI.parse("http://under_score.example.com/") + end).not_to raise_error + end +end + +describe Addressable::URI, "when parsed from " + + "'./this:that'" do + before do + @uri = Addressable::URI.parse("./this:that") + end + + it "should be considered relative" do + expect(@uri).to be_relative + end + + it "should have no scheme" do + expect(@uri.scheme).to eq(nil) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from " + + "'this:that'" do + before do + @uri = Addressable::URI.parse("this:that") + end + + it "should be considered absolute" do + expect(@uri).to be_absolute + end + + it "should have a scheme of 'this'" do + expect(@uri.scheme).to eq("this") + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?'" do + before do + @uri = Addressable::URI.parse("?") + end + + it "should normalize to ''" do + expect(@uri.normalize.to_s).to eq("") + end + + it "should have the correct return type" do + expect(@uri.query_values).to eq({}) + expect(@uri.query_values(Hash)).to eq({}) + expect(@uri.query_values(Array)).to eq([]) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?one=1&two=2&three=3'" do + before do + @uri = Addressable::URI.parse("?one=1&two=2&three=3") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one" => "1", "two" => "2", "three" => "3"}) + end + + it "should raise an error for invalid return type values" do + expect(lambda do + @uri.query_values(Fixnum) + end).to raise_error(ArgumentError) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one", "1"], ["two", "2"], ["three", "3"] + ]) + end + + it "should have a 'null' origin" do + expect(@uri.origin).to eq('null') + end +end + +describe Addressable::URI, "when parsed from '?one=1=uno&two=2=dos'" do + before do + @uri = Addressable::URI.parse("?one=1=uno&two=2=dos") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one" => "1=uno", "two" => "2=dos"}) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one", "1=uno"], ["two", "2=dos"] + ]) + end +end + +describe Addressable::URI, "when parsed from '?one[two][three]=four'" do + before do + @uri = Addressable::URI.parse("?one[two][three]=four") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({"one[two][three]" => "four"}) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three]", "four"] + ]) + end +end + +describe Addressable::URI, "when parsed from '?one.two.three=four'" do + before do + @uri = Addressable::URI.parse("?one.two.three=four") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one.two.three" => "four" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one.two.three", "four"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three]=four&one[two][five]=six'" do + before do + @uri = Addressable::URI.parse("?one[two][three]=four&one[two][five]=six") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three]" => "four", "one[two][five]" => "six" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three]", "four"], ["one[two][five]", "six"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one.two.three=four&one.two.five=six'" do + before do + @uri = Addressable::URI.parse("?one.two.three=four&one.two.five=six") + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one.two.three" => "four", "one.two.five" => "six" + }) + end + + it "should have the correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one.two.three", "four"], ["one.two.five", "six"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one=two&one=three'" do + before do + @uri = Addressable::URI.parse( + "?one=two&one=three&one=four" + ) + end + + it "should have correct array query values" do + expect(@uri.query_values(Array)).to eq( + [['one', 'two'], ['one', 'three'], ['one', 'four']] + ) + end + + it "should have correct hash query values" do + skip("This is probably more desirable behavior.") + expect(@uri.query_values(Hash)).to eq( + {'one' => ['two', 'three', 'four']} + ) + end + + it "should handle assignment with keys of mixed type" do + @uri.query_values = @uri.query_values(Hash).merge({:one => 'three'}) + expect(@uri.query_values(Hash)).to eq({'one' => 'three'}) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][]=four&one[two][three][]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][]=four&one[two][three][]=five" + ) + end + + it "should have correct query values" do + expect(@uri.query_values(Hash)).to eq({"one[two][three][]" => "five"}) + end + + it "should have correct array query values" do + expect(@uri.query_values(Array)).to eq([ + ["one[two][three][]", "four"], ["one[two][three][]", "five"] + ]) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][0]=four&one[two][three][1]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][0]=four&one[two][three][1]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][0]" => "four", "one[two][three][1]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][1]=four&one[two][three][0]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][1]=four&one[two][three][0]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][1]" => "four", "one[two][three][0]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'?one[two][three][2]=four&one[two][three][1]=five'" do + before do + @uri = Addressable::URI.parse( + "?one[two][three][2]=four&one[two][three][1]=five" + ) + end + + it "should have the correct query values" do + expect(@uri.query_values).to eq({ + "one[two][three][2]" => "four", "one[two][three][1]" => "five" + }) + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/") + end + + it "should be equivalent to 'http://www.xn--8ws00zhy3a.com/'" do + expect(@uri).to eq( + Addressable::URI.parse("http://www.xn--8ws00zhy3a.com/") + ) + end + + it "should not have domain name encoded during normalization" do + expect(Addressable::URI.normalized_encode(@uri.to_s)).to eq( + "http://www.詹姆斯.com/" + ) + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/ some spaces /'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/ some spaces /") + end + + it "should be equivalent to " + + "'http://www.xn--8ws00zhy3a.com/%20some%20spaces%20/'" do + expect(@uri).to eq( + Addressable::URI.parse( + "http://www.xn--8ws00zhy3a.com/%20some%20spaces%20/") + ) + end + + it "should not have domain name encoded during normalization" do + expect(Addressable::URI.normalized_encode(@uri.to_s)).to eq( + "http://www.詹姆斯.com/%20some%20spaces%20/" + ) + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.xn--8ws00zhy3a.com/'" do + before do + @uri = Addressable::URI.parse("http://www.xn--8ws00zhy3a.com/") + end + + it "should be displayed as http://www.詹姆斯.com/" do + expect(@uri.display_uri.to_s).to eq("http://www.詹姆斯.com/") + end + + it "should properly force the encoding" do + display_string = @uri.display_uri.to_str + expect(display_string).to eq("http://www.詹姆斯.com/") + if display_string.respond_to?(:encoding) + expect(display_string.encoding.to_s).to eq(Encoding::UTF_8.to_s) + end + end + + it "should have an origin of 'http://www.xn--8ws00zhy3a.com'" do + expect(@uri.origin).to eq('http://www.xn--8ws00zhy3a.com') + end +end + +describe Addressable::URI, "when parsed from " + + "'http://www.詹姆斯.com/atomtests/iri/詹.html'" do + before do + @uri = Addressable::URI.parse("http://www.詹姆斯.com/atomtests/iri/詹.html") + end + + it "should normalize to " + + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" do + expect(@uri.normalize.to_s).to eq( + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" + ) + expect(@uri.normalize!.to_s).to eq( + "http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html" + ) + end +end + +describe Addressable::URI, "when parsed from a percent-encoded IRI" do + before do + @uri = Addressable::URI.parse( + "http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA" + + "%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3" + + "%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82" + + "%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0" + + "%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3" + + "%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp" + ) + end + + it "should normalize to something sane" do + expect(@uri.normalize.to_s).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/" + ) + expect(@uri.normalize!.to_s).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/" + ) + end + + it "should have the correct origin" do + expect(@uri.origin).to eq( + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3f" + + "g11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp" + ) + end +end + +describe Addressable::URI, "with a base uri of 'http://a/b/c/d;p?q'" do + before do + @uri = Addressable::URI.parse("http://a/b/c/d;p?q") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g:h' should resolve to g:h" do + expect((@uri + "g:h").to_s).to eq("g:h") + expect(Addressable::URI.join(@uri, "g:h").to_s).to eq("g:h") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g' should resolve to http://a/b/c/g" do + expect((@uri + "g").to_s).to eq("http://a/b/c/g") + expect(Addressable::URI.join(@uri.to_s, "g").to_s).to eq("http://a/b/c/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with './g' should resolve to http://a/b/c/g" do + expect((@uri + "./g").to_s).to eq("http://a/b/c/g") + expect(Addressable::URI.join(@uri.to_s, "./g").to_s).to eq("http://a/b/c/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g/' should resolve to http://a/b/c/g/" do + expect((@uri + "g/").to_s).to eq("http://a/b/c/g/") + expect(Addressable::URI.join(@uri.to_s, "g/").to_s).to eq("http://a/b/c/g/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '/g' should resolve to http://a/g" do + expect((@uri + "/g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/g").to_s).to eq("http://a/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '//g' should resolve to http://g" do + expect((@uri + "//g").to_s).to eq("http://g") + expect(Addressable::URI.join(@uri.to_s, "//g").to_s).to eq("http://g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '?y' should resolve to http://a/b/c/d;p?y" do + expect((@uri + "?y").to_s).to eq("http://a/b/c/d;p?y") + expect(Addressable::URI.join(@uri.to_s, "?y").to_s).to eq("http://a/b/c/d;p?y") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g?y' should resolve to http://a/b/c/g?y" do + expect((@uri + "g?y").to_s).to eq("http://a/b/c/g?y") + expect(Addressable::URI.join(@uri.to_s, "g?y").to_s).to eq("http://a/b/c/g?y") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '#s' should resolve to http://a/b/c/d;p?q#s" do + expect((@uri + "#s").to_s).to eq("http://a/b/c/d;p?q#s") + expect(Addressable::URI.join(@uri.to_s, "#s").to_s).to eq( + "http://a/b/c/d;p?q#s" + ) + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g#s' should resolve to http://a/b/c/g#s" do + expect((@uri + "g#s").to_s).to eq("http://a/b/c/g#s") + expect(Addressable::URI.join(@uri.to_s, "g#s").to_s).to eq("http://a/b/c/g#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g?y#s' should resolve to http://a/b/c/g?y#s" do + expect((@uri + "g?y#s").to_s).to eq("http://a/b/c/g?y#s") + expect(Addressable::URI.join( + @uri.to_s, "g?y#s").to_s).to eq("http://a/b/c/g?y#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with ';x' should resolve to http://a/b/c/;x" do + expect((@uri + ";x").to_s).to eq("http://a/b/c/;x") + expect(Addressable::URI.join(@uri.to_s, ";x").to_s).to eq("http://a/b/c/;x") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g;x' should resolve to http://a/b/c/g;x" do + expect((@uri + "g;x").to_s).to eq("http://a/b/c/g;x") + expect(Addressable::URI.join(@uri.to_s, "g;x").to_s).to eq("http://a/b/c/g;x") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with 'g;x?y#s' should resolve to http://a/b/c/g;x?y#s" do + expect((@uri + "g;x?y#s").to_s).to eq("http://a/b/c/g;x?y#s") + expect(Addressable::URI.join( + @uri.to_s, "g;x?y#s").to_s).to eq("http://a/b/c/g;x?y#s") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '' should resolve to http://a/b/c/d;p?q" do + expect((@uri + "").to_s).to eq("http://a/b/c/d;p?q") + expect(Addressable::URI.join(@uri.to_s, "").to_s).to eq("http://a/b/c/d;p?q") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '.' should resolve to http://a/b/c/" do + expect((@uri + ".").to_s).to eq("http://a/b/c/") + expect(Addressable::URI.join(@uri.to_s, ".").to_s).to eq("http://a/b/c/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with './' should resolve to http://a/b/c/" do + expect((@uri + "./").to_s).to eq("http://a/b/c/") + expect(Addressable::URI.join(@uri.to_s, "./").to_s).to eq("http://a/b/c/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '..' should resolve to http://a/b/" do + expect((@uri + "..").to_s).to eq("http://a/b/") + expect(Addressable::URI.join(@uri.to_s, "..").to_s).to eq("http://a/b/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../' should resolve to http://a/b/" do + expect((@uri + "../").to_s).to eq("http://a/b/") + expect(Addressable::URI.join(@uri.to_s, "../").to_s).to eq("http://a/b/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../g' should resolve to http://a/b/g" do + expect((@uri + "../g").to_s).to eq("http://a/b/g") + expect(Addressable::URI.join(@uri.to_s, "../g").to_s).to eq("http://a/b/g") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../..' should resolve to http://a/" do + expect((@uri + "../..").to_s).to eq("http://a/") + expect(Addressable::URI.join(@uri.to_s, "../..").to_s).to eq("http://a/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../../' should resolve to http://a/" do + expect((@uri + "../../").to_s).to eq("http://a/") + expect(Addressable::URI.join(@uri.to_s, "../../").to_s).to eq("http://a/") + end + + # Section 5.4.1 of RFC 3986 + it "when joined with '../../g' should resolve to http://a/g" do + expect((@uri + "../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '../../../g' should resolve to http://a/g" do + expect((@uri + "../../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../../../g").to_s).to eq("http://a/g") + end + + it "when joined with '../.././../g' should resolve to http://a/g" do + expect((@uri + "../.././../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "../.././../g").to_s).to eq( + "http://a/g" + ) + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '../../../../g' should resolve to http://a/g" do + expect((@uri + "../../../../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join( + @uri.to_s, "../../../../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '/./g' should resolve to http://a/g" do + expect((@uri + "/./g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/./g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '/../g' should resolve to http://a/g" do + expect((@uri + "/../g").to_s).to eq("http://a/g") + expect(Addressable::URI.join(@uri.to_s, "/../g").to_s).to eq("http://a/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g.' should resolve to http://a/b/c/g." do + expect((@uri + "g.").to_s).to eq("http://a/b/c/g.") + expect(Addressable::URI.join(@uri.to_s, "g.").to_s).to eq("http://a/b/c/g.") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '.g' should resolve to http://a/b/c/.g" do + expect((@uri + ".g").to_s).to eq("http://a/b/c/.g") + expect(Addressable::URI.join(@uri.to_s, ".g").to_s).to eq("http://a/b/c/.g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g..' should resolve to http://a/b/c/g.." do + expect((@uri + "g..").to_s).to eq("http://a/b/c/g..") + expect(Addressable::URI.join(@uri.to_s, "g..").to_s).to eq("http://a/b/c/g..") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with '..g' should resolve to http://a/b/c/..g" do + expect((@uri + "..g").to_s).to eq("http://a/b/c/..g") + expect(Addressable::URI.join(@uri.to_s, "..g").to_s).to eq("http://a/b/c/..g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with './../g' should resolve to http://a/b/g" do + expect((@uri + "./../g").to_s).to eq("http://a/b/g") + expect(Addressable::URI.join(@uri.to_s, "./../g").to_s).to eq("http://a/b/g") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with './g/.' should resolve to http://a/b/c/g/" do + expect((@uri + "./g/.").to_s).to eq("http://a/b/c/g/") + expect(Addressable::URI.join(@uri.to_s, "./g/.").to_s).to eq("http://a/b/c/g/") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g/./h' should resolve to http://a/b/c/g/h" do + expect((@uri + "g/./h").to_s).to eq("http://a/b/c/g/h") + expect(Addressable::URI.join(@uri.to_s, "g/./h").to_s).to eq("http://a/b/c/g/h") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g/../h' should resolve to http://a/b/c/h" do + expect((@uri + "g/../h").to_s).to eq("http://a/b/c/h") + expect(Addressable::URI.join(@uri.to_s, "g/../h").to_s).to eq("http://a/b/c/h") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g;x=1/./y' " + + "should resolve to http://a/b/c/g;x=1/y" do + expect((@uri + "g;x=1/./y").to_s).to eq("http://a/b/c/g;x=1/y") + expect(Addressable::URI.join( + @uri.to_s, "g;x=1/./y").to_s).to eq("http://a/b/c/g;x=1/y") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g;x=1/../y' should resolve to http://a/b/c/y" do + expect((@uri + "g;x=1/../y").to_s).to eq("http://a/b/c/y") + expect(Addressable::URI.join( + @uri.to_s, "g;x=1/../y").to_s).to eq("http://a/b/c/y") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g?y/./x' " + + "should resolve to http://a/b/c/g?y/./x" do + expect((@uri + "g?y/./x").to_s).to eq("http://a/b/c/g?y/./x") + expect(Addressable::URI.join( + @uri.to_s, "g?y/./x").to_s).to eq("http://a/b/c/g?y/./x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g?y/../x' " + + "should resolve to http://a/b/c/g?y/../x" do + expect((@uri + "g?y/../x").to_s).to eq("http://a/b/c/g?y/../x") + expect(Addressable::URI.join( + @uri.to_s, "g?y/../x").to_s).to eq("http://a/b/c/g?y/../x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g#s/./x' " + + "should resolve to http://a/b/c/g#s/./x" do + expect((@uri + "g#s/./x").to_s).to eq("http://a/b/c/g#s/./x") + expect(Addressable::URI.join( + @uri.to_s, "g#s/./x").to_s).to eq("http://a/b/c/g#s/./x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'g#s/../x' " + + "should resolve to http://a/b/c/g#s/../x" do + expect((@uri + "g#s/../x").to_s).to eq("http://a/b/c/g#s/../x") + expect(Addressable::URI.join( + @uri.to_s, "g#s/../x").to_s).to eq("http://a/b/c/g#s/../x") + end + + # Section 5.4.2 of RFC 3986 + it "when joined with 'http:g' should resolve to http:g" do + expect((@uri + "http:g").to_s).to eq("http:g") + expect(Addressable::URI.join(@uri.to_s, "http:g").to_s).to eq("http:g") + end + + # Edge case to be sure + it "when joined with '//example.com/' should " + + "resolve to http://example.com/" do + expect((@uri + "//example.com/").to_s).to eq("http://example.com/") + expect(Addressable::URI.join( + @uri.to_s, "//example.com/").to_s).to eq("http://example.com/") + end + + it "when joined with a bogus object a TypeError should be raised" do + expect(lambda do + Addressable::URI.join(@uri, 42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when converting the path " + + "'relative/path/to/something'" do + before do + @path = 'relative/path/to/something' + end + + it "should convert to " + + "\'relative/path/to/something\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("relative/path/to/something") + end + + it "should join with an absolute file path correctly" do + @base = Addressable::URI.convert_path("/absolute/path/") + @uri = Addressable::URI.convert_path(@path) + expect((@base + @uri).to_str).to eq( + "file:///absolute/path/relative/path/to/something" + ) + end +end + +describe Addressable::URI, "when converting a bogus path" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.convert_path(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when given a UNIX root directory" do + before do + @path = "/" + end + + it "should convert to \'file:///\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given a Windows root directory" do + before do + @path = "C:\\" + end + + it "should convert to \'file:///c:/\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path '/one/two/'" do + before do + @path = '/one/two/' + end + + it "should convert to " + + "\'file:///one/two/\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///one/two/") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the tld " do + it "'uk' should have a tld of 'uk'" do + uri = Addressable::URI.parse("http://example.com") + uri.tld = "uk" + + expect(uri.tld).to eq("uk") + end + + context "which " do + let (:uri) { Addressable::URI.parse("http://comrade.net/path/to/source/") } + + it "contains a subdomain" do + uri.tld = "co.uk" + + expect(uri.to_s).to eq("http://comrade.co.uk/path/to/source/") + end + + it "is part of the domain" do + uri.tld = "com" + + expect(uri.to_s).to eq("http://comrade.com/path/to/source/") + end + end +end + +describe Addressable::URI, "when given the path " + + "'c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file://c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file://c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file:c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:/c:\\windows\\My Documents 100%20\\foo.txt'" do + before do + @path = "file:/c:\\windows\\My Documents 100%20\\foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given the path " + + "'file:///c|/windows/My%20Documents%20100%20/foo.txt'" do + before do + @path = "file:///c|/windows/My%20Documents%20100%20/foo.txt" + end + + it "should convert to " + + "\'file:///c:/windows/My%20Documents%20100%20/foo.txt\'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("file:///c:/windows/My%20Documents%20100%20/foo.txt") + end + + it "should have an origin of 'file://'" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.origin).to eq('file://') + end +end + +describe Addressable::URI, "when given an http protocol URI" do + before do + @path = "http://example.com/" + end + + it "should not do any conversion at all" do + @uri = Addressable::URI.convert_path(@path) + expect(@uri.to_str).to eq("http://example.com/") + end +end + +class SuperString + def initialize(string) + @string = string.to_s + end + + def to_str + return @string + end +end + +describe Addressable::URI, "when parsing a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.parse(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.parse(42) + end).to raise_error(TypeError) + end + + it "should correctly parse heuristically anything with a 'to_str' method" do + Addressable::URI.heuristic_parse(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.heuristic_parse(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when form encoding a hash" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + [["&one", "/1"], ["=two", "?2"], [":three", "#3"]] + )).to eq("%26one=%2F1&%3Dtwo=%3F2&%3Athree=%233") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"q" => "one two three"} + )).to eq("q=one+two+three") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"key" => nil} + )).to eq("key=") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode( + {"q" => ["one", "two", "three"]} + )).to eq("q=one&q=two&q=three") + end + + it "should result in correctly encoded newlines" do + expect(Addressable::URI.form_encode( + {"text" => "one\ntwo\rthree\r\nfour\n\r"} + )).to eq("text=one%0D%0Atwo%0D%0Athree%0D%0Afour%0D%0A%0D%0A") + end + + it "should result in a sorted percent encoded sequence" do + expect(Addressable::URI.form_encode( + [["a", "1"], ["dup", "3"], ["dup", "2"]], true + )).to eq("a=1&dup=2&dup=3") + end +end + +describe Addressable::URI, "when form encoding a non-Array object" do + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.form_encode(42) + end).to raise_error(TypeError) + end +end + +# See https://tools.ietf.org/html/rfc6749#appendix-B +describe Addressable::URI, "when form encoding the example value from OAuth 2" do + it "should result in correct values" do + expect(Addressable::URI.form_encode( + {"value" => " %&+£€"} + )).to eq("value=+%25%26%2B%C2%A3%E2%82%AC") + end +end + +# See https://tools.ietf.org/html/rfc6749#appendix-B +describe Addressable::URI, "when form unencoding the example value from OAuth 2" do + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "value=+%25%26%2B%C2%A3%E2%82%AC" + )).to eq([["value", " %&+£€"]]) + end +end + +describe Addressable::URI, "when form unencoding a string" do + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "%26one=%2F1&%3Dtwo=%3F2&%3Athree=%233" + )).to eq([["&one", "/1"], ["=two", "?2"], [":three", "#3"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "q=one+two+three" + )).to eq([["q", "one two three"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "text=one%0D%0Atwo%0D%0Athree%0D%0Afour%0D%0A%0D%0A" + )).to eq([["text", "one\ntwo\nthree\nfour\n\n"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "a=1&dup=2&dup=3" + )).to eq([["a", "1"], ["dup", "2"], ["dup", "3"]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode( + "key" + )).to eq([["key", nil]]) + end + + it "should result in correct values" do + expect(Addressable::URI.form_unencode("GivenName=Ren%C3%A9")).to eq( + [["GivenName", "René"]] + ) + end +end + +describe Addressable::URI, "when form unencoding a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.form_unencode(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.form_unencode(42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when normalizing a non-String object" do + it "should correctly parse anything with a 'to_str' method" do + Addressable::URI.normalize_component(SuperString.new(42)) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.normalize_component(42) + end).to raise_error(TypeError) + end + + it "should raise a TypeError for objects than cannot be converted" do + expect(lambda do + Addressable::URI.normalize_component("component", 42) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when normalizing a path with an encoded slash" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.parse("/path%2Fsegment/").normalize.path).to eq( + "/path%2Fsegment/" + ) + end +end + +describe Addressable::URI, "when normalizing a partially encoded string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "partially % encoded%21" + )).to eq("partially%20%25%20encoded!") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "partially %25 encoded!" + )).to eq("partially%20%25%20encoded!") + end +end + +describe Addressable::URI, "when normalizing a unicode sequence" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "/C%CC%A7" + )).to eq("/%C3%87") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component( + "/%C3%87" + )).to eq("/%C3%87") + end +end + +describe Addressable::URI, "when normalizing a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("günther")).to eq( + "g%C3%BCnther" + ) + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("g%C3%BCnther")).to eq( + "g%C3%BCnther" + ) + end +end + +describe Addressable::URI, "when normalizing a string but leaving some characters encoded" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.normalize_component("%58X%59Y%5AZ", "0-9a-zXY", "Y")).to eq( + "XX%59Y%5A%5A" + ) + end + + it "should not modify the character class" do + character_class = "0-9a-zXY" + + character_class_copy = character_class.dup + + Addressable::URI.normalize_component("%58X%59Y%5AZ", character_class, "Y") + + expect(character_class).to eq(character_class_copy) + end +end + +describe Addressable::URI, "when encoding a string with existing encodings to upcase" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("JK%4c", "0-9A-IKM-Za-z%", "L")).to eq("%4AK%4C") + end +end + +describe Addressable::URI, "when encoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("günther")).to eq("g%C3%BCnther") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component( + "günther", /[^a-zA-Z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\-\.\_\~]/ + )).to eq("g%C3%BCnther") + end +end + +describe Addressable::URI, "when form encoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.form_encode({"GivenName" => "René"})).to eq( + "GivenName=Ren%C3%A9" + ) + end +end + +describe Addressable::URI, "when encoding a string with ASCII chars 0-15" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component("one\ntwo")).to eq("one%0Atwo") + end + + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.encode_component( + "one\ntwo", /[^a-zA-Z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\-\.\_\~]/ + )).to eq("one%0Atwo") + end +end + +describe Addressable::URI, "when unencoding a multibyte string" do + it "should result in correct percent encoded sequence" do + expect(Addressable::URI.unencode_component("g%C3%BCnther")).to eq("günther") + end + + it "should consistently use UTF-8 internally" do + expect(Addressable::URI.unencode_component("ski=%BA%DAɫ")).to eq("ski=\xBA\xDAɫ") + end + + it "should result in correct percent encoded sequence as a URI" do + expect(Addressable::URI.unencode( + "/path?g%C3%BCnther", ::Addressable::URI + )).to eq(Addressable::URI.new( + :path => "/path", :query => "günther" + )) + end +end + +describe Addressable::URI, "when partially unencoding a string" do + it "should unencode all characters by default" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String)).to eq('%%~~++') + end + + it "should unencode characters not in leave_encoded" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String, '~')).to eq('%%~%7e++') + end + + it "should leave characters in leave_encoded alone" do + expect(Addressable::URI.unencode('%%25~%7e+%2b', String, '%~+')).to eq('%%25~%7e+%2b') + end +end + +describe Addressable::URI, "when unencoding a bogus object" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.unencode_component(42) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.unencode("/path?g%C3%BCnther", Integer) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when encoding a bogus object" do + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode(Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.normalized_encode(Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode_component("günther", Object.new) + end).to raise_error(TypeError) + end + + it "should raise a TypeError" do + expect(lambda do + Addressable::URI.encode_component(Object.new) + end).to raise_error(TypeError) + end +end + +describe Addressable::URI, "when given the input " + + "'http://example.com/'" do + before do + @input = "http://example.com/" + end + + it "should heuristically parse to 'http://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should not raise error when frozen" do + expect(lambda do + Addressable::URI.heuristic_parse(@input).freeze.to_s + end).not_to raise_error + end +end + +describe Addressable::URI, "when given the input " + + "'https://example.com/'" do + before do + @input = "https://example.com/" + end + + it "should heuristically parse to 'https://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("https://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http:example.com/'" do + before do + @input = "http:example.com/" + end + + it "should heuristically parse to 'http://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/") + end + + it "should heuristically parse to 'http://example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'https:example.com/'" do + before do + @input = "https:example.com/" + end + + it "should heuristically parse to 'https://example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("https://example.com/") + end + + it "should heuristically parse to 'https://example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("https://example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://example.com/example.com/'" do + before do + @input = "http://example.com/example.com/" + end + + it "should heuristically parse to 'http://example.com/example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix\\.example.com/'" do + before do + @input = "http://prefix\\.example.com/" + end + + it "should heuristically parse to 'http://prefix/.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix") + expect(@uri.to_s).to eq("http://prefix/.example.com/") + end + + it "should heuristically parse to 'http://prefix/.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix/.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p:\\/'" do + before do + @input = "http://p:\\/" + end + + it "should heuristically parse to 'http://p//'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//") + end + + it "should heuristically parse to 'http://p//' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p://'" do + before do + @input = "http://p://" + end + + it "should heuristically parse to 'http://p//'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//") + end + + it "should heuristically parse to 'http://p//' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//") + end +end + +describe Addressable::URI, "when given the input " + + "'http://p://p'" do + before do + @input = "http://p://p" + end + + it "should heuristically parse to 'http://p//p'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("p") + expect(@uri.to_s).to eq("http://p//p") + end + + it "should heuristically parse to 'http://p//p' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://p//p") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix .example.com/'" do + before do + @input = "http://prefix .example.com/" + end + + # Justification here being that no browser actually tries to resolve this. + # They all treat this as a web search. + it "should heuristically parse to 'http://prefix%20.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix%20.example.com") + expect(@uri.to_s).to eq("http://prefix%20.example.com/") + end + + it "should heuristically parse to 'http://prefix%20.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix%20.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "' http://www.example.com/ '" do + before do + @input = " http://www.example.com/ " + end + + it "should heuristically parse to 'http://prefix%20.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.scheme).to eq("http") + expect(@uri.path).to eq("/") + expect(@uri.to_s).to eq("http://www.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'http://prefix%2F.example.com/'" do + before do + @input = "http://prefix%2F.example.com/" + end + + it "should heuristically parse to 'http://prefix%2F.example.com/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.authority).to eq("prefix%2F.example.com") + expect(@uri.to_s).to eq("http://prefix%2F.example.com/") + end + + it "should heuristically parse to 'http://prefix%2F.example.com/' " + + "even with a scheme hint of 'ftp'" do + @uri = Addressable::URI.heuristic_parse(@input, {:scheme => 'ftp'}) + expect(@uri.to_s).to eq("http://prefix%2F.example.com/") + end +end + +describe Addressable::URI, "when given the input " + + "'/path/to/resource'" do + before do + @input = "/path/to/resource" + end + + it "should heuristically parse to '/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'relative/path/to/resource'" do + before do + @input = "relative/path/to/resource" + end + + it "should heuristically parse to 'relative/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("relative/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com'" do + before do + @input = "example.com" + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com' and a scheme hint of 'ftp'" do + before do + @input = "example.com" + @hints = {:scheme => 'ftp'} + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input, @hints) + expect(@uri.to_s).to eq("ftp://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com:21' and a scheme hint of 'ftp'" do + before do + @input = "example.com:21" + @hints = {:scheme => 'ftp'} + end + + it "should heuristically parse to 'http://example.com:21'" do + @uri = Addressable::URI.heuristic_parse(@input, @hints) + expect(@uri.to_s).to eq("ftp://example.com:21") + end +end + +describe Addressable::URI, "when given the input " + + "'example.com/path/to/resource'" do + before do + @input = "example.com/path/to/resource" + end + + it "should heuristically parse to 'http://example.com/path/to/resource'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com/path/to/resource") + end +end + +describe Addressable::URI, "when given the input " + + "'http:///example.com'" do + before do + @input = "http:///example.com" + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when given the input which "\ + "start with digits and has specified port" do + before do + @input = "7777.example.org:8089" + end + + it "should heuristically parse to 'http://7777.example.org:8089'" do + uri = Addressable::URI.heuristic_parse(@input) + expect(uri.to_s).to eq("http://7777.example.org:8089") + end +end + +describe Addressable::URI, "when given the input " + + "'feed:///example.com'" do + before do + @input = "feed:///example.com" + end + + it "should heuristically parse to 'feed://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("feed://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "'file://localhost/path/to/resource/'" do + before do + @input = "file://localhost/path/to/resource/" + end + + it "should heuristically parse to 'file:///path/to/resource/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("file:///path/to/resource/") + end +end + +describe Addressable::URI, "when given the input " + + "'file://path/to/resource/'" do + before do + @input = "file://path/to/resource/" + end + + it "should heuristically parse to 'file:///path/to/resource/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("file:///path/to/resource/") + end +end + +describe Addressable::URI, "when given the input " + + "'file://///path/to/resource/'" do + before do + @input = "file:///////path/to/resource/" + end + + it "should heuristically parse to 'file:////path/to/resource/'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("file:////path/to/resource/") + end +end + +describe Addressable::URI, "when given the input " + + "'feed://http://example.com'" do + before do + @input = "feed://http://example.com" + end + + it "should heuristically parse to 'feed:http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("feed:http://example.com") + end +end + +describe Addressable::URI, "when given the input " + + "::URI.parse('http://example.com')" do + before do + @input = ::URI.parse('http://example.com') + end + + it "should heuristically parse to 'http://example.com'" do + @uri = Addressable::URI.heuristic_parse(@input) + expect(@uri.to_s).to eq("http://example.com") + end +end + +describe Addressable::URI, "when assigning query values" do + before do + @uri = Addressable::URI.new + end + + it "should correctly assign {:a => 'a', :b => ['c', 'd', 'e']}" do + @uri.query_values = {:a => "a", :b => ["c", "d", "e"]} + expect(@uri.query).to eq("a=a&b=c&b=d&b=e") + end + + it "should raise an error attempting to assign {'a' => {'b' => ['c']}}" do + expect(lambda do + @uri.query_values = { 'a' => {'b' => ['c'] } } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:b => '2', :a => {:c => '1'}}" do + expect(lambda do + @uri.query_values = {:b => '2', :a => {:c => '1'}} + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => [{:c => 'c', :d => 'd'}, " + + "{:e => 'e', :f => 'f'}]}" do + expect(lambda do + @uri.query_values = { + :a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}] + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => [{:c => true, :d => 'd'}, " + + "{:e => 'e', :f => 'f'}]}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}] + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => {:c => true, :d => 'd'}}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => {:c => true, :d => 'd'} + } + end).to raise_error(TypeError) + end + + it "should raise an error attempting to assign " + + "{:a => 'a', :b => {:c => true, :d => 'd'}}" do + expect(lambda do + @uri.query_values = { + :a => 'a', :b => {:c => true, :d => 'd'} + } + end).to raise_error(TypeError) + end + + it "should correctly assign {:a => 1, :b => 1.5}" do + @uri.query_values = { :a => 1, :b => 1.5 } + expect(@uri.query).to eq("a=1&b=1.5") + end + + it "should raise an error attempting to assign " + + "{:z => 1, :f => [2, {999.1 => [3,'4']}, ['h', 'i']], " + + ":a => {:b => ['c', 'd'], :e => true, :y => 0.5}}" do + expect(lambda do + @uri.query_values = { + :z => 1, + :f => [ 2, {999.1 => [3,'4']}, ['h', 'i'] ], + :a => { :b => ['c', 'd'], :e => true, :y => 0.5 } + } + end).to raise_error(TypeError) + end + + it "should correctly assign {}" do + @uri.query_values = {} + expect(@uri.query).to eq('') + end + + it "should correctly assign nil" do + @uri.query_values = nil + expect(@uri.query).to eq(nil) + end + + it "should correctly sort {'ab' => 'c', :ab => 'a', :a => 'x'}" do + @uri.query_values = {'ab' => 'c', :ab => 'a', :a => 'x'} + expect(@uri.query).to eq("a=x&ab=a&ab=c") + end + + it "should correctly assign " + + "[['b', 'c'], ['b', 'a'], ['a', 'a']]" do + # Order can be guaranteed in this format, so preserve it. + @uri.query_values = [['b', 'c'], ['b', 'a'], ['a', 'a']] + expect(@uri.query).to eq("b=c&b=a&a=a") + end + + it "should preserve query string order" do + query_string = (('a'..'z').to_a.reverse.map { |e| "#{e}=#{e}" }).join("&") + @uri.query = query_string + original_uri = @uri.to_s + @uri.query_values = @uri.query_values(Array) + expect(@uri.to_s).to eq(original_uri) + end + + describe 'when a hash with mixed types is assigned to query_values' do + it 'should not raise an error' do + skip 'Issue #94' + expect { subject.query_values = { "page" => "1", :page => 2 } }.to_not raise_error + end + end +end + +describe Addressable::URI, "when assigning path values" do + before do + @uri = Addressable::URI.new + end + + it "should correctly assign paths containing colons" do + @uri.path = "acct:bob@sporkmonger.com" + expect(@uri.path).to eq("acct:bob@sporkmonger.com") + expect(@uri.normalize.to_str).to eq("acct%2Fbob@sporkmonger.com") + expect(lambda { @uri.to_s }).to raise_error( + Addressable::URI::InvalidURIError + ) + end + + it "should correctly assign paths containing colons" do + @uri.path = "/acct:bob@sporkmonger.com" + @uri.authority = "example.com" + expect(@uri.normalize.to_str).to eq("//example.com/acct:bob@sporkmonger.com") + end + + it "should correctly assign paths containing colons" do + @uri.path = "acct:bob@sporkmonger.com" + @uri.scheme = "something" + expect(@uri.normalize.to_str).to eq("something:acct:bob@sporkmonger.com") + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.scheme = "http" + @uri.host = "example.com" + @uri.path = "acct:bob@sporkmonger.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.path = "acct:bob@sporkmonger.com" + @uri.scheme = "http" + @uri.host = "example.com" + end).to raise_error(Addressable::URI::InvalidURIError) + end + + it "should not allow relative paths to be assigned on absolute URIs" do + expect(lambda do + @uri.path = "uuid:0b3ecf60-3f93-11df-a9c3-001f5bfffe12" + @uri.scheme = "urn" + end).not_to raise_error + end +end + +describe Addressable::URI, "when initializing a subclass of Addressable::URI" do + before do + @uri = Class.new(Addressable::URI).new + end + + it "should have the same class after being parsed" do + expect(@uri.class).to eq(Addressable::URI.parse(@uri).class) + end + + it "should have the same class as its duplicate" do + expect(@uri.class).to eq(@uri.dup.class) + end + + it "should have the same class after being normalized" do + expect(@uri.class).to eq(@uri.normalize.class) + end + + it "should have the same class after being merged" do + expect(@uri.class).to eq(@uri.merge(:path => 'path').class) + end + + it "should have the same class after being joined" do + expect(@uri.class).to eq(@uri.join('path').class) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/spec_helper.rb new file mode 100644 index 0000000000..4427f21476 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/spec_helper.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'bundler/setup' +require 'rspec/its' + +begin + require 'coveralls' + Coveralls.wear! do + add_filter "spec/" + add_filter "vendor/" + end +rescue LoadError + warn "warning: coveralls gem not found; skipping Coveralls" + require 'simplecov' + SimpleCov.start do + add_filter "spec/" + add_filter "vendor/" + end +end + +RSpec.configure do |config| + config.warnings = true + config.filter_run_when_matching :focus +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/clobber.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/clobber.rake new file mode 100644 index 0000000000..a9e32b3476 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/clobber.rake @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +desc "Remove all build products" +task "clobber" diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/gem.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/gem.rake new file mode 100644 index 0000000000..6ca09eb3ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/gem.rake @@ -0,0 +1,93 @@ +# frozen_string_literal: true + +require "rubygems/package_task" + +namespace :gem do + GEM_SPEC = Gem::Specification.new do |s| + s.name = PKG_NAME + s.version = PKG_VERSION + s.summary = PKG_SUMMARY + s.description = PKG_DESCRIPTION + + s.files = PKG_FILES.to_a + + s.has_rdoc = true + s.extra_rdoc_files = %w( README.md ) + s.rdoc_options.concat ["--main", "README.md"] + + if !s.respond_to?(:add_development_dependency) + puts "Cannot build Gem with this version of RubyGems." + exit(1) + end + + s.required_ruby_version = '>= 2.0' + + s.add_runtime_dependency 'public_suffix', '>= 2.0.2', '< 4.0' + s.add_development_dependency 'bundler', '>= 1.0', '< 3.0' + + s.require_path = "lib" + + s.author = "Bob Aman" + s.email = "bob@sporkmonger.com" + s.homepage = "https://github.com/sporkmonger/addressable" + s.license = "Apache-2.0" + end + + Gem::PackageTask.new(GEM_SPEC) do |p| + p.gem_spec = GEM_SPEC + p.need_tar = true + p.need_zip = true + end + + desc "Generates .gemspec file" + task :gemspec do + spec_string = GEM_SPEC.to_ruby + File.open("#{GEM_SPEC.name}.gemspec", 'w') do |file| + file.write spec_string + end + end + + desc "Show information about the gem" + task :debug do + puts GEM_SPEC.to_ruby + end + + desc "Install the gem" + task :install => ["clobber", "gem:package"] do + sh "#{SUDO} gem install --local pkg/#{GEM_SPEC.full_name}" + end + + desc "Uninstall the gem" + task :uninstall do + installed_list = Gem.source_index.find_name(PKG_NAME) + if installed_list && + (installed_list.collect { |s| s.version.to_s}.include?(PKG_VERSION)) + sh( + "#{SUDO} gem uninstall --version '#{PKG_VERSION}' " + + "--ignore-dependencies --executables #{PKG_NAME}" + ) + end + end + + desc "Reinstall the gem" + task :reinstall => [:uninstall, :install] + + desc 'Package for release' + task :release => ["gem:package", "gem:gemspec"] do |t| + v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z' + abort "Versions don't match #{v} vs #{PROJ.version}" if v != PKG_VERSION + pkg = "pkg/#{GEM_SPEC.full_name}" + + changelog = File.open("CHANGELOG.md") { |file| file.read } + + puts "Releasing #{PKG_NAME} v. #{PKG_VERSION}" + Rake::Task["git:tag:create"].invoke + end +end + +desc "Alias to gem:package" +task "gem" => "gem:package" + +task "gem:release" => "gem:gemspec" + +task "clobber" => ["gem:clobber_package"] diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/git.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/git.rake new file mode 100644 index 0000000000..1238c8d214 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/git.rake @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +namespace :git do + namespace :tag do + desc "List tags from the Git repository" + task :list do + tags = `git tag -l` + tags.gsub!("\r", "") + tags = tags.split("\n").sort {|a, b| b <=> a } + puts tags.join("\n") + end + + desc "Create a new tag in the Git repository" + task :create do + changelog = File.open("CHANGELOG.md", "r") { |file| file.read } + puts "-" * 80 + puts changelog + puts "-" * 80 + puts + + v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z" + abort "Versions don't match #{v} vs #{PKG_VERSION}" if v != PKG_VERSION + + git_status = `git status` + if git_status !~ /^nothing to commit/ + abort "Working directory isn't clean." + end + + tag = "#{PKG_NAME}-#{PKG_VERSION}" + msg = "Release #{PKG_NAME}-#{PKG_VERSION}" + + existing_tags = `git tag -l #{PKG_NAME}-*`.split('\n') + if existing_tags.include?(tag) + warn("Tag already exists, deleting...") + unless system "git tag -d #{tag}" + abort "Tag deletion failed." + end + end + puts "Creating git tag '#{tag}'..." + unless system "git tag -a -m \"#{msg}\" #{tag}" + abort "Tag creation failed." + end + end + end +end + +task "gem:release" => "git:tag:create" diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/metrics.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/metrics.rake new file mode 100644 index 0000000000..107cc2442a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/metrics.rake @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +namespace :metrics do + task :lines do + lines, codelines, total_lines, total_codelines = 0, 0, 0, 0 + for file_name in FileList["lib/**/*.rb"] + f = File.open(file_name) + while line = f.gets + lines += 1 + next if line =~ /^\s*$/ + next if line =~ /^\s*#/ + codelines += 1 + end + puts "L: #{sprintf("%4d", lines)}, " + + "LOC #{sprintf("%4d", codelines)} | #{file_name}" + total_lines += lines + total_codelines += codelines + + lines, codelines = 0, 0 + end + + puts "Total: Lines #{total_lines}, LOC #{total_codelines}" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/rspec.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/rspec.rake new file mode 100644 index 0000000000..85288438d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/rspec.rake @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rspec/core/rake_task" + +namespace :spec do + RSpec::Core::RakeTask.new(:simplecov) do |t| + t.pattern = FileList['spec/**/*_spec.rb'] + t.rspec_opts = ['--color', '--format', 'documentation'] + end + + namespace :simplecov do + desc "Browse the code coverage report." + task :browse => "spec:simplecov" do + require "launchy" + Launchy.open("coverage/index.html") + end + end +end + +desc "Alias to spec:simplecov" +task "spec" => "spec:simplecov" + +task "clobber" => ["spec:clobber_simplecov"] diff --git a/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/yard.rake b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/yard.rake new file mode 100644 index 0000000000..515f960301 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/tasks/yard.rake @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require "rake" + +begin + require "yard" + require "yard/rake/yardoc_task" + + namespace :doc do + desc "Generate Yardoc documentation" + YARD::Rake::YardocTask.new do |yardoc| + yardoc.name = "yard" + yardoc.options = ["--verbose", "--markup", "markdown"] + yardoc.files = FileList[ + "lib/**/*.rb", "ext/**/*.c", + "README.md", "CHANGELOG.md", "LICENSE.txt" + ].exclude(/idna/) + end + end + + task "clobber" => ["doc:clobber_yard"] + + desc "Alias to doc:yard" + task "doc" => "doc:yard" +rescue LoadError + # If yard isn't available, it's not the end of the world + desc "Alias to doc:rdoc" + task "doc" => "doc:rdoc" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Gemfile new file mode 100644 index 0000000000..044fba3b07 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Gemfile @@ -0,0 +1,11 @@ +source "https://rubygems.org" +gemspec + +gem "rake" +group :development do + gem "rspec-helpers", :require => false + gem "luna-rspec-formatters", :require => false + gem "pry", :require => false unless ENV[ + "CI" + ] +end diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/History.markdown b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/History.markdown new file mode 100644 index 0000000000..bac427043d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/History.markdown @@ -0,0 +1,25 @@ +## 1.1.0 / 2016-06-28 + +### Minor Enhancements + +* Support jruby (#8) + +## 1.0.0 / 2016-04-28 + +### Major enhancements + +- Merge Simple::ANSI and Colorator. (#7) + +### Minor Enhancements + +- Delete unnecessary `Symbol#to_sym` (#2) +- Change argument name of `Enumerator#each` for better code legibility (#3) + +### Development Fixes + +- Convert to new RSpec expectation syntax (#1) +- Fix `String#blue` result in README (#4) + +## 0.1 / 2013-04-13 + +Birthday! diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/LICENSE b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/LICENSE new file mode 100644 index 0000000000..b3b6be9ae1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) Parker Moore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/README.markdown b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/README.markdown new file mode 100644 index 0000000000..9cf886dee4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/README.markdown @@ -0,0 +1,47 @@ +# colorator + +Colorize your text for the terminal + +[![Build Status](https://travis-ci.org/octopress/colorator.png?branch=master)](https://travis-ci.org/octopress/colorator) + +## Example + +```ruby +"this string".red +# => \e[31mthis string\e[0m +"my string".blue +# => \e[34mmy string\e[0m +# etc... +``` + +## Supported Colors + +- `red` +- `black` +- `green` +- `yellow` +- `magenta` +- `white` +- `blue` +- `cyan` +- `bold` + +## Other supported Ansi methods + +- `clear_line` +- `has_ansi?`, `has_color?` +- `strip_ansi`, `strip_color` +- `reset_ansi`, `reset_color` +- `clear_screen` +- `ansi_jump` + +## Why + +There are a bunch of gems that provide functionality like this, but none have +as simple an API as this. Just call `"string".color` and your text will be +colorized. + +## License + +MIT. Written as a single Ruby file by Brandon Mathis, converted into a gem by +Parker Moore. diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Rakefile new file mode 100644 index 0000000000..b7e9ed549b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/Rakefile @@ -0,0 +1,6 @@ +require "bundler/gem_tasks" +require "rspec/core/rake_task" + +RSpec::Core::RakeTask.new(:spec) + +task :default => :spec diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/colorator.gemspec b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/colorator.gemspec new file mode 100644 index 0000000000..a4bd0cd041 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/colorator.gemspec @@ -0,0 +1,23 @@ +# coding: utf-8 + +require File.expand_path('lib/colorator.rb', __dir__) + +Gem::Specification.new do |spec| + spec.name = "colorator" + spec.summary = "Colorize your text in the terminal." + spec.version = Colorator::VERSION + spec.authors = ["Parker Moore", "Brandon Mathis"] + spec.email = ["parkrmoore@gmail.com", "brandon@imathis.com"] + spec.homepage = "https://github.com/octopress/colorator" + spec.licenses = ["MIT"] + + all = `git ls-files -z`.split("\x0").reject { |f| f.start_with?(".") } + spec.files = all.select { |f| File.basename(f) == f || f =~ %r{^(bin|lib)/} } + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } + spec.require_paths = ["lib"] + + spec.extra_rdoc_files = ["README.markdown", "LICENSE"] + spec.rdoc_options = ["--charset=UTF-8"] + + spec.add_development_dependency "rspec", "~> 3.1" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator.rb b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator.rb new file mode 100644 index 0000000000..107f6e3a7d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator.rb @@ -0,0 +1,111 @@ +$:.unshift File.dirname(__FILE__) + +module Colorator + module_function + VERSION = "1.1.0" + + # -------------------------------------------------------------------------- + + ANSI_MATCHR = /\x1b.*?[jkmsuABGKH]/ + ANSI_COLORS = { + :black => 30, + :red => 31, + :green => 32, + :yellow => 33, + :blue => 34, + :magenta => 35, + :cyan => 36, + :white => 37, + :bold => 1 + } + + # -------------------------------------------------------------------------- + # Allows you to check if a string currently has ansi. + # -------------------------------------------------------------------------- + + def has_ansi?(str) + str.match(ANSI_MATCHR).is_a?( + MatchData + ) + end + + # -------------------------------------------------------------------------- + # Jump the cursor, moving it up and then back down to it's spot, allowing + # you to do fancy things like multiple output (downloads) the way that Docker + # does them in an async way without breaking term. + # -------------------------------------------------------------------------- + + def ansi_jump(str, num) + "\x1b[#{num}A#{clear_line(str)}\x1b[#{ + num + }B" + end + + # -------------------------------------------------------------------------- + + def reset_ansi(str = "") + "\x1b[0m#{ + str + }" + end + + # -------------------------------------------------------------------------- + + def clear_line(str = "") + "\x1b[2K\r#{ + str + }" + end + + # -------------------------------------------------------------------------- + # Strip ANSI from the current string, making it just a normal string. + # -------------------------------------------------------------------------- + + def strip_ansi(str) + str.gsub( + ANSI_MATCHR, "" + ) + end + + # -------------------------------------------------------------------------- + # Clear the screen's current view, so the user gets a clean output. + # -------------------------------------------------------------------------- + + def clear_screen(str = "") + "\x1b[H\x1b[2J#{ + str + }" + end + + # -------------------------------------------------------------------------- + + def colorize(str = "", color) + "\x1b[#{color}m#{str}\x1b[0m" + end + + # -------------------------------------------------------------------------- + + Colorator::ANSI_COLORS.each do |color, code| + define_singleton_method color do |str| + colorize( + str, code + ) + end + end + + # -------------------------------------------------------------------------- + + class << self + alias reset_color reset_ansi + alias strip_color strip_ansi + alias has_color? has_ansi? + end + + # -------------------------------------------------------------------------- + + CORE_METHODS = ( + public_methods - Object.methods + ) +end + +require "colorator/core_ext" diff --git a/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator/core_ext.rb b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator/core_ext.rb new file mode 100644 index 0000000000..f2e0bf0d94 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/colorator-1.1.0/lib/colorator/core_ext.rb @@ -0,0 +1,9 @@ +class String + Colorator::CORE_METHODS.each do |method| + define_method method do |*args| + Colorator.public_send(method, + self, *args + ) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/CHANGELOG.md new file mode 100644 index 0000000000..92fe29d603 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/CHANGELOG.md @@ -0,0 +1,465 @@ +## Current + +## Release v1.1.4 (14 Dec 2018) + +* (#780) Remove java_alias of 'submit' method of Runnable to let executor service work on java 11 +* (#776) Fix NameError on defining a struct with a name which is already taken in an ancestor + +## Release v1.1.3 (7 Nov 2018) + +* (#775) fix partial require of the gem (although not officially supported) + +## Release v1.1.2 (6 Nov 2018) + +* (#773) more defensive 1.9.3 support + +## Release v1.1.1, edge v0.4.1 (1 Nov 2018) + +* (#768) add support for 1.9.3 back + +## Release v1.1.0, edge v0.4.0 (31 OCt 2018) (yanked) + +* (#768) yanked because of issues with removed 1.9.3 support + +## Release v1.1.0.pre2, edge v0.4.0.pre2 (18 Sep 2018) + +concurrent-ruby: + +* fixed documentation and README links +* fix Set for TruffleRuby and Rubinius +* use properly supported TruffleRuby APIs + +concurrent-ruby-edge: + +* add Promises.zip_futures_over_on + +## Release v1.1.0.pre1, edge v0.4.0.pre1 (15 Aug 2018) + +concurrent-ruby: + +* requires at least Ruby 2.0 +* [Promises](http://ruby-concurrency.github.io/concurrent-ruby/1.1.0/Concurrent/Promises.html) + are moved from `concurrent-ruby-edge` to `concurrent-ruby` +* Add support for TruffleRuby + * (#734) Fix Array/Hash/Set construction broken on TruffleRuby + * AtomicReference fixed +* CI stabilization +* remove sharp dependency edge -> core +* remove warnings +* documentation updates +* Exchanger is no longer documented as edge since it was already available in + `concurrent-ruby` +* (#644) Fix Map#each and #each_pair not returning enumerator outside of MRI +* (#659) Edge promises fail during error handling +* (#741) Raise on recursive Delay#value call +* (#727) #717 fix global IO executor on JRuby +* (#740) Drop support for CRuby 1.9, JRuby 1.7, Rubinius. +* (#737) Move AtomicMarkableReference out of Edge +* (#708) Prefer platform specific memory barriers +* (#735) Fix wrong expected exception in channel spec assertion +* (#729) Allow executor option in `Promise#then` +* (#725) fix timeout check to use timeout_interval +* (#719) update engine detection +* (#660) Add specs for Promise#zip/Promise.zip ordering +* (#654) Promise.zip execution changes +* (#666) Add thread safe set implementation +* (#651) #699 #to_s, #inspect should not output negative object IDs. +* (#685) Avoid RSpec warnings about raise_error +* (#680) Avoid RSpec monkey patching, persist spec results locally, use RSpec + v3.7.0 +* (#665) Initialize the monitor for new subarrays on Rubinius +* (#661) Fix error handling in edge promises + +concurrent-ruby-edge: + +* (#659) Edge promises fail during error handling +* Edge files clearly separated in `lib-edge` +* added ReInclude + +## Release v1.0.5, edge v0.3.1 (26 Feb 2017) + +concurrent-ruby: + +* Documentation for Event and Semaphore +* Use Unsafe#fullFence and #loadFence directly since the shortcuts were removed in JRuby +* Do not depend on org.jruby.util.unsafe.UnsafeHolder + +concurrent-ruby-edge: + +* (#620) Actors on Pool raise an error +* (#624) Delayed promises did not interact correctly with flatting + * Fix arguments yielded by callback methods +* Overridable default executor in promises factory methods +* Asking actor to terminate will always resolve to `true` + +## Release v1.0.4, edge v0.3.0 (27 Dec 2016) + +concurrent-ruby: + +* Nothing + +concurrent-ruby-edge: + +* New promises' API renamed, lots of improvements, edge bumped to 0.3.0 + * **Incompatible** with previous 0.2.3 version + * see https://github.com/ruby-concurrency/concurrent-ruby/pull/522 + +## Release v1.0.3 (17 Dec 2016) + +* Trigger execution of flattened delayed futures +* Avoid forking for processor_count if possible +* Semaphore Mutex and JRuby parity +* Adds Map#each as alias to Map#each_pair +* Fix uninitialized instance variables +* Make Fixnum, Bignum merger ready +* Allows Promise#then to receive an executor +* TimerSet now survives a fork +* Reject promise on any exception +* Allow ThreadLocalVar to be initialized with a block +* Support Alpha with `Concurrent::processor_count` +* Fixes format-security error when compiling ruby_193_compatible.h +* Concurrent::Atom#swap fixed: reraise the exceptions from block + +## Release v1.0.2 (2 May 2016) + +* Fix bug with `Concurrent::Map` MRI backend `#inspect` method +* Fix bug with `Concurrent::Map` MRI backend using `Hash#value?` +* Improved documentation and examples +* Minor updates to Edge + +## Release v1.0.1 (27 February 2016) + +* Fix "uninitialized constant Concurrent::ReentrantReadWriteLock" error. +* Better handling of `autoload` vs. `require`. +* Improved API for Edge `Future` zipping. +* Fix reference leak in Edge `Future` constructor . +* Fix bug which prevented thread pools from surviving a `fork`. +* Fix bug in which `TimerTask` did not correctly specify all its dependencies. +* Improved support for JRuby+Truffle +* Improved error messages. +* Improved documentation. +* Updated README and CONTRIBUTING. + +## Release v1.0.0 (13 November 2015) + +* Rename `attr_volatile_with_cas` to `attr_atomic` +* Add `clear_each` to `LockFreeStack` +* Update `AtomicReference` documentation +* Further updates and improvements to the synchronization layer. +* Performance and memory usage performance with `Actor` logging. +* Fixed `ThreadPoolExecutor` task count methods. +* Improved `Async` performance for both short and long-lived objects. +* Fixed bug in `LockFreeLinkedSet`. +* Fixed bug in which `Agent#await` triggered a validation failure. +* Further `Channel` updates. +* Adopted a project Code of Conduct +* Cleared interpreter warnings +* Fixed bug in `ThreadPoolExecutor` task count methods +* Fixed bug in 'LockFreeLinkedSet' +* Improved Java extension loading +* Handle Exception children in Edge::Future +* Continued improvements to channel +* Removed interpreter warnings. +* Shared constants now in `lib/concurrent/constants.rb` +* Refactored many tests. +* Improved synchronization layer/memory model documentation. +* Bug fix in Edge `Future#flat` +* Brand new `Channel` implementation in Edge gem. +* Simplification of `RubySingleThreadExecutor` +* `Async` improvements + - Each object uses its own `SingleThreadExecutor` instead of the global thread pool. + - No longers supports executor injection + - Much better documentation +* `Atom` updates + - No longer `Dereferenceable` + - Now `Observable` + - Added a `#reset` method +* Brand new `Agent` API and implementation. Now functionally equivalent to Clojure. +* Continued improvements to the synchronization layer +* Merged in the `thread_safe` gem + - `Concurrent::Array` + - `Concurrent::Hash` + - `Concurrent::Map` (formerly ThreadSafe::Cache) + - `Concurrent::Tuple` +* Minor improvements to Concurrent::Map +* Complete rewrite of `Exchanger` +* Removed all deprecated code (classes, methods, constants, etc.) +* Updated Agent, MutexAtomic, and BufferedChannel to inherit from Synchronization::Object. +* Many improved tests +* Some internal reorganization + +## Release v0.9.1 (09 August 2015) + +* Fixed a Rubiniux bug in synchronization object +* Fixed all interpreter warnings (except circular references) +* Fixed require statements when requiring `Atom` alone +* Significantly improved `ThreadLocalVar` on non-JRuby platforms +* Fixed error handling in Edge `Concurrent.zip` +* `AtomicFixnum` methods `#increment` and `#decrement` now support optional delta +* New `AtomicFixnum#update` method +* Minor optimizations in `ReadWriteLock` +* New `ReentrantReadWriteLock` class +* `ThreadLocalVar#bind` method is now public +* Refactored many tests + +## Release v0.9.0 (10 July 2015) + +* Updated `AtomicReference` + - `AtomicReference#try_update` now simply returns instead of raising exception + - `AtomicReference#try_update!` was added to raise exceptions if an update + fails. Note: this is the same behavior as the old `try_update` +* Pure Java implementations of + - `AtomicBoolean` + - `AtomicFixnum` + - `Semaphore` +* Fixed bug when pruning Ruby thread pools +* Fixed bug in time calculations within `ScheduledTask` +* Default `count` in `CountDownLatch` to 1 +* Use monotonic clock for all timers via `Concurrent.monotonic_time` + - Use `Process.clock_gettime(Process::CLOCK_MONOTONIC)` when available + - Fallback to `java.lang.System.nanoTime()` on unsupported JRuby versions + - Pure Ruby implementation for everything else + - Effects `Concurrent.timer`, `Concurrent.timeout`, `TimerSet`, `TimerTask`, and `ScheduledTask` +* Deprecated all clock-time based timer scheduling + - Only support scheduling by delay + - Effects `Concurrent.timer`, `TimerSet`, and `ScheduledTask` +* Added new `ReadWriteLock` class +* Consistent `at_exit` behavior for Java and Ruby thread pools. +* Added `at_exit` handler to Ruby thread pools (already in Java thread pools) + - Ruby handler stores the object id and retrieves from `ObjectSpace` + - JRuby disables `ObjectSpace` by default so that handler stores the object reference +* Added a `:stop_on_exit` option to thread pools to enable/disable `at_exit` handler +* Updated thread pool docs to better explain shutting down thread pools +* Simpler `:executor` option syntax for all abstractions which support this option +* Added `Executor#auto_terminate?` predicate method (for thread pools) +* Added `at_exit` handler to `TimerSet` +* Simplified auto-termination of the global executors + - Can now disable auto-termination of global executors + - Added shutdown/kill/wait_for_termination variants for global executors +* Can now disable auto-termination for *all* executors (the nuclear option) +* Simplified auto-termination of the global executors +* Deprecated terms "task pool" and "operation pool" + - New terms are "io executor" and "fast executor" + - New functions added with new names + - Deprecation warnings added to functions referencing old names +* Moved all thread pool related functions from `Concurrent::Configuration` to `Concurrent` + - Old functions still exist with deprecation warnings + - New functions have updated names as appropriate +* All high-level abstractions default to the "io executor" +* Fixed bug in `Actor` causing it to prematurely warm global thread pools on gem load + - This also fixed a `RejectedExecutionError` bug when running with minitest/autorun via JRuby +* Moved global logger up to the `Concurrent` namespace and refactored the code +* Optimized the performance of `Delay` + - Fixed a bug in which no executor option on construction caused block execution on a global thread pool +* Numerous improvements and bug fixes to `TimerSet` +* Fixed deadlock of `Future` when the handler raises Exception +* Added shared specs for more classes +* New concurrency abstractions including: + - `Atom` + - `Maybe` + - `ImmutableStruct` + - `MutableStruct` + - `SettableStruct` +* Created an Edge gem for unstable abstractions including + - `Actor` + - `Agent` + - `Channel` + - `Exchanger` + - `LazyRegister` + - **new Future Framework** - unified + implementation of Futures and Promises which combines Features of previous `Future`, + `Promise`, `IVar`, `Event`, `Probe`, `dataflow`, `Delay`, `TimerTask` into single framework. It uses extensively + new synchronization layer to make all the paths **lock-free** with exception of blocking threads on `#wait`. + It offers better performance and does not block threads when not required. +* Actor framework changes: + - fixed reset loop in Pool + - Pool can use any actor as a worker, abstract worker class is no longer needed. + - Actor events not have format `[:event_name, *payload]` instead of just the Symbol. + - Actor now uses new Future/Promise Framework instead of `IVar` for better interoperability + - Behaviour definition array was simplified to `[BehaviourClass1, [BehaviourClass2, *initialization_args]]` + - Linking behavior responds to :linked message by returning array of linked actors + - Supervised behavior is removed in favour of just Linking + - RestartingContext is supervised by default now, `supervise: true` is not required any more + - Events can be private and public, so far only difference is that Linking will + pass to linked actors only public messages. Adding private :restarting and + :resetting events which are send before the actor restarts or resets allowing + to add callbacks to cleanup current child actors. + - Print also object_id in Reference to_s + - Add AbstractContext#default_executor to be able to override executor class wide + - Add basic IO example + - Documentation somewhat improved + - All messages should have same priority. It's now possible to send `actor << job1 << job2 << :terminate!` and + be sure that both jobs are processed first. +* Refactored `Channel` to use newer synchronization objects +* Added `#reset` and `#cancel` methods to `TimerSet` +* Added `#cancel` method to `Future` and `ScheduledTask` +* Refactored `TimerSet` to use `ScheduledTask` +* Updated `Async` with a factory that initializes the object +* Deprecated `Concurrent.timer` and `Concurrent.timeout` +* Reduced max threads on pure-Ruby thread pools (abends around 14751 threads) +* Moved many private/internal classes/modules into "namespace" modules +* Removed brute-force killing of threads in tests +* Fixed a thread pool bug when the operating system cannot allocate more threads + +## Release v0.8.0 (25 January 2015) + +* C extension for MRI have been extracted into the `concurrent-ruby-ext` companion gem. + Please see the README for more detail. +* Better variable isolation in `Promise` and `Future` via an `:args` option +* Continued to update intermittently failing tests + +## Release v0.7.2 (24 January 2015) + +* New `Semaphore` class based on [java.util.concurrent.Semaphore](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html) +* New `Promise.all?` and `Promise.any?` class methods +* Renamed `:overflow_policy` on thread pools to `:fallback_policy` +* Thread pools still accept the `:overflow_policy` option but display a warning +* Thread pools now implement `fallback_policy` behavior when not running (rather than universally rejecting tasks) +* Fixed minor `set_deref_options` constructor bug in `Promise` class +* Fixed minor `require` bug in `ThreadLocalVar` class +* Fixed race condition bug in `TimerSet` class +* Fixed race condition bug in `TimerSet` class +* Fixed signal bug in `TimerSet#post` method +* Numerous non-functional updates to clear warning when running in debug mode +* Fixed more intermittently failing tests +* Tests now run on new Travis build environment +* Multiple documentation updates + +## Release v0.7.1 (4 December 2014) + +Please see the [roadmap](https://github.com/ruby-concurrency/concurrent-ruby/issues/142) for more information on the next planned release. + +* Added `flat_map` method to `Promise` +* Added `zip` method to `Promise` +* Fixed bug with logging in `Actor` +* Improvements to `Promise` tests +* Removed actor-experimental warning +* Added an `IndirectImmediateExecutor` class +* Allow disabling auto termination of global executors +* Fix thread leaking in `ThreadLocalVar` (uses `Ref` gem on non-JRuby systems) +* Fix thread leaking when pruning pure-Ruby thread pools +* Prevent `Actor` from using an `ImmediateExecutor` (causes deadlock) +* Added missing synchronizations to `TimerSet` +* Fixed bug with return value of `Concurrent::Actor::Utils::Pool#ask` +* Fixed timing bug in `TimerTask` +* Fixed bug when creating a `JavaThreadPoolExecutor` with minimum pool size of zero +* Removed confusing warning when not using native extenstions +* Improved documentation + +## Release v0.7.0 (13 August 2014) + +* Merge the [atomic](https://github.com/ruby-concurrency/atomic) gem + - Pure Ruby `MutexAtomic` atomic reference class + - Platform native atomic reference classes `CAtomic`, `JavaAtomic`, and `RbxAtomic` + - Automated [build process](https://github.com/ruby-concurrency/rake-compiler-dev-box) + - Fat binary releases for [multiple platforms](https://rubygems.org/gems/concurrent-ruby/versions) including Windows (32/64), Linux (32/64), OS X (64-bit), Solaris (64-bit), and JRuby +* C native `CAtomicBoolean` +* C native `CAtomicFixnum` +* Refactored intermittently failing tests +* Added `dataflow!` and `dataflow_with!` methods to match `Future#value!` method +* Better handling of timeout in `Agent` +* Actor Improvements + - Fine-grained implementation using chain of behaviors. Each behavior is responsible for single aspect like: `Termination`, `Pausing`, `Linking`, `Supervising`, etc. Users can create custom Actors easily based on their needs. + - Supervision was added. `RestartingContext` will pause on error waiting on its supervisor to decide what to do next ( options are `:terminate!`, `:resume!`, `:reset!`, `:restart!`). Supervising behavior also supports strategies `:one_for_one` and `:one_for_all`. + - Linking was added to be able to monitor actor's events like: `:terminated`, `:paused`, `:restarted`, etc. + - Dead letter routing added. Rejected envelopes are collected in a configurable actor (default: `Concurrent::Actor.root.ask!(:dead_letter_routing)`) + - Old `Actor` class removed and replaced by new implementation previously called `Actress`. `Actress` was kept as an alias for `Actor` to keep compatibility. + - `Utils::Broadcast` actor which allows Publish–subscribe pattern. +* More executors for managing serialized operations + - `SerializedExecution` mixin module + - `SerializedExecutionDelegator` for serializing *any* executor +* Updated `Async` with serialized execution +* Updated `ImmediateExecutor` and `PerThreadExecutor` with full executor service lifecycle +* Added a `Delay` to root `Actress` initialization +* Minor bug fixes to thread pools +* Refactored many intermittently failing specs +* Removed Java interop warning `executor.rb:148 warning: ambiguous Java methods found, using submit(java.lang.Runnable)` +* Fixed minor bug in `RubyCachedThreadPool` overflow policy +* Updated tests to use [RSpec 3.0](http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3) +* Removed deprecated `Actor` class +* Better support for Rubinius + +## Release v0.6.1 (14 June 2014) + +* Many improvements to `Concurrent::Actress` +* Bug fixes to `Concurrent::RubyThreadPoolExecutor` +* Fixed several brittle tests +* Moved documentation to http://ruby-concurrency.github.io/concurrent-ruby/frames.html + +## Release v0.6.0 (25 May 2014) + +* Added `Concurrent::Observable` to encapsulate our thread safe observer sets +* Improvements to new `Channel` +* Major improvements to `CachedThreadPool` and `FixedThreadPool` +* Added `SingleThreadExecutor` +* Added `Current::timer` function +* Added `TimerSet` executor +* Added `AtomicBoolean` +* `ScheduledTask` refactoring +* Pure Ruby and JRuby-optimized `PriorityQueue` classes +* Updated `Agent` behavior to more closely match Clojure +* Observer sets support block callbacks to the `add_observer` method +* New algorithm for thread creation in `RubyThreadPoolExecutor` +* Minor API updates to `Event` +* Rewritten `TimerTask` now an `Executor` instead of a `Runnable` +* Fixed many brittle specs +* Renamed `FixedThreadPool` and `CachedThreadPool` to `RubyFixedThreadPool` and `RubyCachedThreadPool` +* Created JRuby optimized `JavaFixedThreadPool` and `JavaCachedThreadPool` +* Consolidated fixed thread pool tests into `spec/concurrent/fixed_thread_pool_shared.rb` and `spec/concurrent/cached_thread_pool_shared.rb` +* `FixedThreadPool` now subclasses `RubyFixedThreadPool` or `JavaFixedThreadPool` as appropriate +* `CachedThreadPool` now subclasses `RubyCachedThreadPool` or `JavaCachedThreadPool` as appropriate +* New `Delay` class +* `Concurrent::processor_count` helper function +* New `Async` module +* Renamed `NullThreadPool` to `PerThreadExecutor` +* Deprecated `Channel` (we are planning a new implementation based on [Go](http://golangtutorials.blogspot.com/2011/06/channels-in-go.html)) +* Added gem-level [configuration](http://robots.thoughtbot.com/mygem-configure-block) +* Deprecated `$GLOBAL_THREAD_POOL` in lieu of gem-level configuration +* Removed support for Ruby [1.9.2](https://www.ruby-lang.org/en/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/) +* New `RubyThreadPoolExecutor` and `JavaThreadPoolExecutor` classes +* All thread pools now extend the appropriate thread pool executor classes +* All thread pools now support `:overflow_policy` (based on Java's [reject policies](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html)) +* Deprecated `UsesGlobalThreadPool` in lieu of explicit `:executor` option (dependency injection) on `Future`, `Promise`, and `Agent` +* Added `Concurrent::dataflow_with(executor, *inputs)` method to support executor dependency injection for dataflow +* Software transactional memory with `TVar` and `Concurrent::atomically` +* First implementation of [new, high-performance](https://github.com/ruby-concurrency/concurrent-ruby/pull/49) `Channel` +* `Actor` is deprecated in favor of new experimental actor implementation [#73](https://github.com/ruby-concurrency/concurrent-ruby/pull/73). To avoid namespace collision it is living in `Actress` namespace until `Actor` is removed in next release. + +## Release v0.5.0 + +This is the most significant release of this gem since its inception. This release includes many improvements and optimizations. It also includes several bug fixes. The major areas of focus for this release were: + +* Stability improvements on Ruby versions with thread-level parallelism ([JRuby](http://jruby.org/) and [Rubinius](http://rubini.us/)) +* Creation of new low-level concurrency abstractions +* Internal refactoring to use the new low-level abstractions + +Most of these updates had no effect on the gem API. There are a few notable exceptions which were unavoidable. Please read the [release notes](API-Updates-in-v0.5.0) for more information. + +Specific changes include: + +* New class `IVar` +* New class `MVar` +* New class `ThreadLocalVar` +* New class `AtomicFixnum` +* New class method `dataflow` +* New class `Condition` +* New class `CountDownLatch` +* New class `DependencyCounter` +* New class `SafeTaskExecutor` +* New class `CopyOnNotifyObserverSet` +* New class `CopyOnWriteObserverSet` +* `Future` updated with `execute` API +* `ScheduledTask` updated with `execute` API +* New `Promise` API +* `Future` now extends `IVar` +* `Postable#post?` now returns an `IVar` +* Thread safety fixes to `Dereferenceable` +* Thread safety fixes to `Obligation` +* Thread safety fixes to `Supervisor` +* Thread safety fixes to `Event` +* Various other thread safety (race condition) fixes +* Refactored brittle tests +* Implemented pending tests +* Added JRuby and Rubinius as Travis CI build targets +* Added [CodeClimate](https://codeclimate.com/) code review +* Improved YARD documentation diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Gemfile b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Gemfile new file mode 100644 index 0000000000..21bffcdbc9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Gemfile @@ -0,0 +1,39 @@ +source 'https://rubygems.org' + +require File.join(File.dirname(__FILE__ ), 'lib/concurrent/version') + +no_path = ENV['NO_PATH'] +options = no_path ? {} : { path: '.' } + +gem 'concurrent-ruby', Concurrent::VERSION, options +gem 'concurrent-ruby-edge', Concurrent::EDGE_VERSION, options +gem 'concurrent-ruby-ext', Concurrent::VERSION, options.merge(platform: :mri) + +group :development do + gem 'rake', '~> 12.0' + gem 'rake-compiler', '~> 1.0' + gem 'rake-compiler-dock', '~> 0.6.0' + gem 'pry', '~> 0.11', platforms: :mri +end + +group :documentation, optional: true do + gem 'yard', '~> 0.9.0', :require => false + gem 'redcarpet', '~> 3.0', platforms: :mri # understands github markdown + gem 'md-ruby-eval', '~> 0.3' +end + +group :testing do + gem 'rspec', '~> 3.7' + gem 'timecop', '~> 0.7.4' +end + +# made opt-in since it will not install on jruby 1.7 +group :coverage, optional: !ENV['COVERAGE'] do + gem 'simplecov', '~> 0.10.0', :require => false + gem 'coveralls', '~> 0.8.2', :require => false +end + +group :benchmarks, optional: true do + gem 'benchmark-ips', '~> 2.7' + gem 'bench9000' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/LICENSE.md b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/LICENSE.md new file mode 100644 index 0000000000..eb461904ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/LICENSE.md @@ -0,0 +1,23 @@ +``` +Copyright (c) Jerry D'Antonio -- released under the MIT license. + +http://www.opensource.org/licenses/mit-license.php + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/README.md b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/README.md new file mode 100644 index 0000000000..3ae95db34b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/README.md @@ -0,0 +1,349 @@ +# Concurrent Ruby + +[![Gem Version](https://badge.fury.io/rb/concurrent-ruby.svg)](http://badge.fury.io/rb/concurrent-ruby) +[![Build Status](https://travis-ci.org/ruby-concurrency/concurrent-ruby.svg?branch=master)](https://travis-ci.org/ruby-concurrency/concurrent-ruby) +[![Build status](https://ci.appveyor.com/api/projects/status/iq8aboyuu3etad4w?svg=true)](https://ci.appveyor.com/project/rubyconcurrency/concurrent-ruby) +[![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT) +[![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg)](https://gitter.im/ruby-concurrency/concurrent-ruby) + +Modern concurrency tools for Ruby. Inspired by +[Erlang](http://www.erlang.org/doc/reference_manual/processes.html), +[Clojure](http://clojure.org/concurrent_programming), +[Scala](http://akka.io/), +[Haskell](http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell), +[F#](http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx), +[C#](http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx), +[Java](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html), +and classic concurrency patterns. + + + +The design goals of this gem are: + +* Be an 'unopinionated' toolbox that provides useful utilities without debating which is better + or why +* Remain free of external gem dependencies +* Stay true to the spirit of the languages providing inspiration +* But implement in a way that makes sense for Ruby +* Keep the semantics as idiomatic Ruby as possible +* Support features that make sense in Ruby +* Exclude features that don't make sense in Ruby +* Be small, lean, and loosely coupled +* Thread-safety +* Backward compatibility + +## Contributing + +**This gem depends on +[contributions](https://github.com/ruby-concurrency/concurrent-ruby/graphs/contributors) and we +appreciate your help. Would you like to contribute? Great! Have a look at +[issues with `looking-for-contributor` label](https://github.com/ruby-concurrency/concurrent-ruby/issues?q=is%3Aissue+is%3Aopen+label%3Alooking-for-contributor).** And if you pick something up let us know on the issue. + +## Thread Safety + +*Concurrent Ruby makes one of the strongest thread safety guarantees of any Ruby concurrency +library, providing consistent behavior and guarantees on all three of the main Ruby interpreters +(MRI/CRuby, JRuby, Rubinius, TruffleRuby).* + +Every abstraction in this library is thread safe. Specific thread safety guarantees are documented +with each abstraction. + +It is critical to remember, however, that Ruby is a language of mutable references. *No* +concurrency library for Ruby can ever prevent the user from making thread safety mistakes (such as +sharing a mutable object between threads and modifying it on both threads) or from creating +deadlocks through incorrect use of locks. All the library can do is provide safe abstractions which +encourage safe practices. Concurrent Ruby provides more safe concurrency abstractions than any +other Ruby library, many of which support the mantra of +["Do not communicate by sharing memory; instead, share memory by communicating"](https://blog.golang.org/share-memory-by-communicating). +Concurrent Ruby is also the only Ruby library which provides a full suite of thread safe and +immutable variable types and data structures. + +We've also initiated discussion to document [memory model](docs-source/synchronization.md) of Ruby which +would provide consistent behaviour and guarantees on all four of the main Ruby interpreters +(MRI/CRuby, JRuby, Rubinius, TruffleRuby). + +## Features & Documentation + +**The primary site for documentation is the automatically generated +[API documentation](http://ruby-concurrency.github.io/concurrent-ruby/index.html) which is up to +date with latest release.** This readme matches the master so may contain new stuff not yet +released. + +We also have a [IRC (gitter)](https://gitter.im/ruby-concurrency/concurrent-ruby). + +### Versioning + +* `concurrent-ruby` uses [Semantic Versioning](http://semver.org/) +* `concurrent-ruby-ext` has always same version as `concurrent-ruby` +* `concurrent-ruby-edge` will always be 0.y.z therefore following + [point 4](http://semver.org/#spec-item-4) applies *"Major version zero + (0.y.z) is for initial development. Anything may change at any time. The + public API should not be considered stable."* However we additionally use + following rules: + * Minor version increment means incompatible changes were made + * Patch version increment means only compatible changes were made + + +#### General-purpose Concurrency Abstractions + +* [Async](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Async.html): + A mixin module that provides simple asynchronous behavior to a class. Loosely based on Erlang's + [gen_server](http://www.erlang.org/doc/man/gen_server.html). +* [ScheduledTask](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ScheduledTask.html): + Like a Future scheduled for a specific future time. +* [TimerTask](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/TimerTask.html): + A Thread that periodically wakes up to perform work at regular intervals. +* [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html): + Unified implementation of futures and promises which combines features of previous `Future`, + `Promise`, `IVar`, `Event`, `dataflow`, `Delay`, and (partially) `TimerTask` into a single + framework. It extensively uses the new synchronization layer to make all the features + **non-blocking** and **lock-free**, with the exception of obviously blocking operations like + `#wait`, `#value`. It also offers better performance. + +#### Thread-safe Value Objects, Structures, and Collections + +Collection classes that were originally part of the (deprecated) `thread_safe` gem: + +* [Array](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Array.html) A thread-safe + subclass of Ruby's standard [Array](http://ruby-doc.org/core-2.2.0/Array.html). +* [Hash](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Hash.html) A thread-safe + subclass of Ruby's standard [Hash](http://ruby-doc.org/core-2.2.0/Hash.html). +* [Set](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Set.html) A thread-safe + subclass of Ruby's standard [Set](http://ruby-doc.org/stdlib-2.4.0/libdoc/set/rdoc/Set.html). +* [Map](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Map.html) A hash-like object + that should have much better performance characteristics, especially under high concurrency, + than `Concurrent::Hash`. +* [Tuple](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Tuple.html) A fixed size + array with volatile (synchronized, thread safe) getters/setters. + +Value objects inspired by other languages: + +* [Maybe](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Maybe.html) A thread-safe, + immutable object representing an optional value, based on + [Haskell Data.Maybe](https://hackage.haskell.org/package/base-4.2.0.1/docs/Data-Maybe.html). + +Structure classes derived from Ruby's [Struct](http://ruby-doc.org/core-2.2.0/Struct.html): + +* [ImmutableStruct](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ImmutableStruct.html) + Immutable struct where values are set at construction and cannot be changed later. +* [MutableStruct](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/MutableStruct.html) + Synchronized, mutable struct where values can be safely changed at any time. +* [SettableStruct](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/SettableStruct.html) + Synchronized, write-once struct where values can be set at most once, either at construction + or any time thereafter. + +Thread-safe variables: + +* [Agent](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Agent.html): A way to + manage shared, mutable, *asynchronous*, independent state. Based on Clojure's + [Agent](http://clojure.org/agents). +* [Atom](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Atom.html): A way to manage + shared, mutable, *synchronous*, independent state. Based on Clojure's + [Atom](http://clojure.org/atoms). +* [AtomicBoolean](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicBoolean.html) + A boolean value that can be updated atomically. +* [AtomicFixnum](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicFixnum.html) + A numeric value that can be updated atomically. +* [AtomicReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicReference.html) + An object reference that may be updated atomically. +* [Exchanger](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Exchanger.html) + A synchronization point at which threads can pair and swap elements within pairs. Based on + Java's [Exchanger](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html). +* [MVar](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/MVar.html) A synchronized + single element container. Based on Haskell's + [MVar](https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Concurrent-MVar.html) and + Scala's [MVar](http://docs.typelevel.org/api/scalaz/nightly/index.html#scalaz.concurrent.MVar$). +* [ThreadLocalVar](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ThreadLocalVar.html) + A variable where the value is different for each thread. +* [TVar](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/TVar.html) A transactional + variable implementing software transactional memory (STM). Based on Clojure's + [Ref](http://clojure.org/refs). + +#### Java-inspired ThreadPools and Other Executors + +* See the [thread pool](http://ruby-concurrency.github.io/concurrent-ruby/master/file.thread_pools.html) + overview, which also contains a list of other Executors available. + +#### Thread Synchronization Classes and Algorithms + +* [CountDownLatch](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/CountDownLatch.html) + A synchronization object that allows one thread to wait on multiple other threads. +* [CyclicBarrier](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/CyclicBarrier.html) + A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point. +* [Event](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Event.html) Old school + kernel-style event. +* [ReadWriteLock](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ReadWriteLock.html) + A lock that supports multiple readers but only one writer. +* [ReentrantReadWriteLock](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ReentrantReadWriteLock.html) + A read/write lock with reentrant and upgrade features. +* [Semaphore](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Semaphore.html) + A counting-based locking mechanism that uses permits. +* [AtomicMarkableReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicMarkableReference.html) + +#### Deprecated + +Deprecated features are still available and bugs are being fixed, but new features will not be added. + +* ~~[Future](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Future.html): + An asynchronous operation that produces a value.~~ Replaced by + [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html). + * ~~[.dataflow](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent.html#dataflow-class_method): + Built on Futures, Dataflow allows you to create a task that will be scheduled when all of + its data dependencies are available.~~ Replaced by + [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html). +* ~~[Promise](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promise.html): Similar + to Futures, with more features.~~ Replaced by + [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html). +* ~~[Delay](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Delay.html) Lazy evaluation + of a block yielding an immutable result. Based on Clojure's + [delay](https://clojuredocs.org/clojure.core/delay).~~ Replaced by + [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html). +* ~~[IVar](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/IVar.html) Similar to a + "future" but can be manually assigned once, after which it becomes immutable.~~ Replaced by + [Promises](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Promises.html). + +### Edge Features + +These are available in the `concurrent-ruby-edge` companion gem. + +These features are under active development and may change frequently. They are expected not to +keep backward compatibility (there may also lack tests and documentation). Semantic versions will +be obeyed though. Features developed in `concurrent-ruby-edge` are expected to move to +`concurrent-ruby` when final. + +* [Actor](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Actor.html): Implements + the Actor Model, where concurrent actors exchange messages. + *Status: Partial documentation and tests; depends on new future/promise framework; stability is good.* +* [Channel](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Channel.html): + Communicating Sequential Processes ([CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)). + Functionally equivalent to Go [channels](https://tour.golang.org/concurrency/2) with additional + inspiration from Clojure [core.async](https://clojure.github.io/core.async/). + *Status: Partial documentation and tests.* +* [LazyRegister](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/LazyRegister.html) +* [LockFreeLinkedSet](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Edge/LockFreeLinkedSet.html) + *Status: will be moved to core soon.* +* [LockFreeStack](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/LockFreeStack.html) + *Status: missing documentation and tests.* + +## Supported Ruby versions + +* MRI 2.0 and above +* JRuby 9000 +* TruffleRuby are supported. +* Any Ruby interpreter that is compliant with Ruby 2.0 or newer. + +Actually we still support mri 1.9.3 and jruby 1.7.27 but we are looking at ways how to drop the support. +Java 8 is preferred for JRuby but every Java version on which JRuby 9000 runs is supported. + +The legacy support for Rubinius is kept but it is no longer maintained, if you would like to help +please respond to [#739](https://github.com/ruby-concurrency/concurrent-ruby/issues/739). + +## Usage + +Everything within this gem can be loaded simply by requiring it: + +```ruby +require 'concurrent' +``` + +*Requiring only specific abstractions from Concurrent Ruby is not yet supported.* + +To use the tools in the Edge gem it must be required separately: + +```ruby +require 'concurrent-edge' +``` + +If the library does not behave as expected, `Concurrent.use_stdlib_logger(Logger::DEBUG)` could +help to reveal the problem. + +## Installation + +```shell +gem install concurrent-ruby +``` + +or add the following line to Gemfile: + +```ruby +gem 'concurrent-ruby', require: 'concurrent' +``` + +and run `bundle install` from your shell. + +### Edge Gem Installation + +The Edge gem must be installed separately from the core gem: + +```shell +gem install concurrent-ruby-edge +``` + +or add the following line to Gemfile: + +```ruby +gem 'concurrent-ruby-edge', require: 'concurrent-edge' +``` + +and run `bundle install` from your shell. + + +### C Extensions for MRI + +Potential performance improvements may be achieved under MRI by installing optional C extensions. +To minimise installation errors the C extensions are available in the `concurrent-ruby-ext` +extension gem. `concurrent-ruby` and `concurrent-ruby-ext` are always released together with same +version. Simply install the extension gem too: + +```ruby +gem install concurrent-ruby-ext +``` + +or add the following line to Gemfile: + +```ruby +gem 'concurrent-ruby-ext' +``` + +and run `bundle install` from your shell. + +In code it is only necessary to + +```ruby +require 'concurrent' +``` + +The `concurrent-ruby` gem will automatically detect the presence of the `concurrent-ruby-ext` gem +and load the appropriate C extensions. + +#### Note For gem developers + +No gems should depend on `concurrent-ruby-ext`. Doing so will force C extensions on your users. The +best practice is to depend on `concurrent-ruby` and let users to decide if they want C extensions. + +## Maintainers + +* [Petr Chalupa](https://github.com/pitr-ch) (lead maintainer, point-of-contact) +* [Jerry D'Antonio](https://github.com/jdantonio) (creator) +* [Chris Seaton](https://github.com/chrisseaton) + +### Special Thanks to + +* [Brian Durand](https://github.com/bdurand) for the `ref` gem +* [Charles Oliver Nutter](https://github.com/headius) for the `atomic` and `thread_safe` gems +* [thedarkone](https://github.com/thedarkone) for the `thread_safe` gem + +and to the past maintainers + +* [Michele Della Torre](https://github.com/mighe) +* [Paweł Obrok](https://github.com/obrok) +* [Lucas Allan](https://github.com/lucasallan) + +## License and Copyright + +*Concurrent Ruby* is free software released under the +[MIT License](http://www.opensource.org/licenses/MIT). + +The *Concurrent Ruby* [logo](https://github.com/ruby-concurrency/concurrent-ruby/wiki/Logo) was +designed by [David Jones](https://twitter.com/zombyboy). It is Copyright © 2014 +[Jerry D'Antonio](https://twitter.com/jerrydantonio). All Rights Reserved. diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Rakefile b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Rakefile new file mode 100644 index 0000000000..95a4e3549f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/Rakefile @@ -0,0 +1,346 @@ +#!/usr/bin/env rake + +require_relative 'lib/concurrent/version' +require_relative 'lib/concurrent/utility/engine' + +if Concurrent.ruby_version :<, 2, 0, 0 + # @!visibility private + module Kernel + def __dir__ + File.dirname __FILE__ + end + end +end + +core_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby.gemspec') +ext_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby-ext.gemspec') +edge_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby-edge.gemspec') + +require 'rake/javaextensiontask' + +class ConcurrentRubyJavaExtensionTask < Rake::JavaExtensionTask + def java_classpath_arg(*args) + jruby_cpath = nil + + if RUBY_PLATFORM =~ /java/ + begin + cpath = Java::java.lang.System.getProperty('java.class.path').split(File::PATH_SEPARATOR) + cpath += Java::java.lang.System.getProperty('sun.boot.class.path').split(File::PATH_SEPARATOR) + jruby_cpath = cpath.compact.join(File::PATH_SEPARATOR) + rescue => e + end + + unless jruby_cpath + libdir = RbConfig::CONFIG['libdir'] + if libdir.start_with? "classpath:" + raise 'Cannot build with jruby-complete' + end + jruby_cpath = File.join(libdir, "jruby.jar") + end + end + + unless jruby_cpath + jruby_home = ENV['JRUBY_HOME'] + if jruby_home + candidate = File.join(jruby_home, 'lib', 'jruby.jar') + jruby_cpath = candidate if File.exist? candidate + end + end + + raise "jruby.jar path not found" unless jruby_cpath + + jruby_cpath += File::PATH_SEPARATOR + args.join(File::PATH_SEPARATOR) unless args.empty? + jruby_cpath ? "-cp \"#{jruby_cpath}\"" : "" + end +end + +ConcurrentRubyJavaExtensionTask.new('concurrent_ruby', core_gemspec) do |ext| + ext.ext_dir = 'ext/concurrent-ruby' + ext.lib_dir = 'lib/concurrent' +end + +unless Concurrent.on_jruby? + require 'rake/extensiontask' + + Rake::ExtensionTask.new('concurrent_ruby_ext', ext_gemspec) do |ext| + ext.ext_dir = 'ext/concurrent-ruby-ext' + ext.lib_dir = 'lib/concurrent' + ext.source_pattern = '*.{c,h}' + + ext.cross_compile = true + ext.cross_platform = ['x86-mingw32', 'x64-mingw32'] + end +end + +require 'rake_compiler_dock' +namespace :repackage do + desc '* with Windows fat distributions' + task :all do + Dir.chdir(__dir__) do + # store gems in vendor cache for docker + sh 'bundle package' + + # needed only if the jar is built outside of docker + Rake::Task['lib/concurrent/concurrent_ruby.jar'].invoke + RakeCompilerDock.exec 'support/cross_building.sh' + end + end +end + +require 'rubygems' +require 'rubygems/package_task' + +Gem::PackageTask.new(core_gemspec) {} if core_gemspec +Gem::PackageTask.new(ext_gemspec) {} if ext_gemspec && !Concurrent.on_jruby? +Gem::PackageTask.new(edge_gemspec) {} if edge_gemspec + +CLEAN.include('lib/concurrent/2.*', 'lib/concurrent/*.jar') + +begin + require 'rspec' + require 'rspec/core/rake_task' + + RSpec::Core::RakeTask.new(:spec) + + options = %w[ --color + --backtrace + --seed 1 + --format documentation + --tag ~notravis ] + + namespace :spec do + desc '* Configured for ci' + RSpec::Core::RakeTask.new(:ci) do |t| + t.rspec_opts = [*options].join(' ') + end + + desc '* test packaged and installed gems instead of local files' + task :installed do + Dir.chdir(__dir__) do + sh "gem install pkg/concurrent-ruby-#{Concurrent::VERSION}.gem" + sh "gem install pkg/concurrent-ruby-ext-#{Concurrent::VERSION}.gem" if Concurrent.on_cruby? + sh "gem install pkg/concurrent-ruby-edge-#{Concurrent::EDGE_VERSION}.gem" + ENV['NO_PATH'] = 'true' + sh 'bundle update' + sh 'bundle exec rake spec:ci' + end + end + end + + desc 'executed in CI' + task :ci => [:compile, 'spec:ci'] + + task :default => [:clobber, :compile, :spec] +rescue LoadError => e + puts 'RSpec is not installed, skipping test task definitions: ' + e.message +end + +current_yard_version_name = [*Concurrent::VERSION.split('.')[0..1], 'x'].join('.') + +begin + require 'yard' + require 'md_ruby_eval' + require_relative 'support/yard_full_types' + + common_yard_options = ['--no-yardopts', + '--no-document', + '--no-private', + '--embed-mixins', + '--markup', 'markdown', + '--title', 'Concurrent Ruby', + '--template', 'default', + '--template-path', 'yard-template', + '--default-return', 'undocumented'] + + desc 'Generate YARD Documentation (signpost, master)' + task :yard => ['yard:signpost', 'yard:master'] + + namespace :yard do + + desc '* eval markdown files' + task :eval_md do + Dir.chdir File.join(__dir__, 'docs-source') do + sh 'bundle exec md-ruby-eval --auto' + end + end + + task :update_readme do + Dir.chdir __dir__ do + content = File.read(File.join('README.md')). + gsub(/\[([\w ]+)\]\(http:\/\/ruby-concurrency\.github\.io\/concurrent-ruby\/master\/.*\)/) do |_| + case $1 + when 'LockFreeLinkedSet' + "{Concurrent::Edge::#{$1} #{$1}}" + when '.dataflow' + '{Concurrent.dataflow Concurrent.dataflow}' + when 'thread pool' + '{file:thread_pools.md thread pool}' + else + "{Concurrent::#{$1} #{$1}}" + end + end + FileUtils.mkpath 'tmp' + File.write 'tmp/README.md', content + end + end + + define_yard_task = -> name do + desc "* of #{name} into subdir #{name}" + YARD::Rake::YardocTask.new(name) do |yard| + yard.options.push( + '--output-dir', "docs/#{name}", + '--main', 'tmp/README.md', + *common_yard_options) + yard.files = ['./lib/**/*.rb', + './lib-edge/**/*.rb', + './ext/concurrent_ruby_ext/**/*.c', + '-', + 'docs-source/thread_pools.md', + 'docs-source/promises.out.md', + 'LICENSE.md', + 'CHANGELOG.md'] + end + Rake::Task[name].prerequisites.push 'yard:eval_md', 'yard:update_readme' + end + + define_yard_task.call current_yard_version_name + define_yard_task.call 'master' + + desc "* signpost for versions" + YARD::Rake::YardocTask.new(:signpost) do |yard| + yard.options.push( + '--output-dir', 'docs', + '--main', 'docs-source/signpost.md', + *common_yard_options) + yard.files = ['no-lib'] + end + + define_uptodate_task = -> name do + namespace name do + desc "** ensure that #{name} generated documentation is matching the source code" + task :uptodate do + Dir.chdir(__dir__) do + begin + FileUtils.cp_r 'docs', 'docs-copy', verbose: true + Rake::Task["yard:#{name}"].invoke + sh 'diff -r docs/ docs-copy/' + ensure + FileUtils.rm_rf 'docs-copy', verbose: true + end + end + end + end + end + + define_uptodate_task.call current_yard_version_name + define_uptodate_task.call 'master' + end + +rescue LoadError => e + puts 'YARD is not installed, skipping documentation task definitions: ' + e.message +end + +desc 'build, test, and publish the gem' +task :release => ['release:checks', 'release:build', 'release:test', 'release:publish'] + +namespace :release do + # Depends on environment of @pitr-ch + + mri_version = '2.5.1' + jruby_version = 'jruby-9.1.17.1' + + task :checks => "yard:#{current_yard_version_name}:uptodate" do + Dir.chdir(__dir__) do + sh 'test -z "$(git status --porcelain)"' do |ok, res| + unless ok + begin + STDOUT.puts 'Command failed. Continue? (y/n)' + input = STDIN.gets.strip.downcase + end until %w(y n).include?(input) + exit 1 if input == 'n' + end + end + sh 'git fetch' + sh 'test $(git show-ref --verify --hash refs/heads/master) = ' + + '$(git show-ref --verify --hash refs/remotes/origin/master)' do |ok, res| + unless ok + begin + STDOUT.puts 'Command failed. Continue? (y/n)' + input = STDIN.gets.strip.downcase + end until %w(y n).include?(input) + exit 1 if input == 'n' + end + end + end + end + + desc '* build all *.gem files necessary for release' + task :build => 'repackage:all' + + desc '* test actual installed gems instead of cloned repository on MRI and JRuby' + task :test do + Dir.chdir(__dir__) do + old = ENV['RBENV_VERSION'] + + ENV['RBENV_VERSION'] = mri_version + sh 'rbenv version' + sh 'bundle exec rake spec:installed' + + ENV['RBENV_VERSION'] = jruby_version + sh 'rbenv version' + sh 'bundle exec rake spec:installed' + + puts 'Windows build is untested' + + ENV['RBENV_VERSION'] = old + end + end + + desc '* do all nested steps' + task :publish => ['publish:ask', 'publish:tag', 'publish:rubygems', 'publish:post_steps'] + + namespace :publish do + publish_edge = false + + task :ask do + begin + STDOUT.puts 'Do you want to publish anything? (y/n)' + input = STDIN.gets.strip.downcase + end until %w(y n).include?(input) + exit 1 if input == 'n' + begin + STDOUT.puts 'Do you want to publish edge? (y/n)' + input = STDIN.gets.strip.downcase + end until %w(y n).include?(input) + publish_edge = input == 'y' + end + + desc '** tag HEAD with current version and push to github' + task :tag do + Dir.chdir(__dir__) do + sh "git tag v#{Concurrent::VERSION}" + sh "git push origin v#{Concurrent::VERSION}" + sh "git tag edge-v#{Concurrent::EDGE_VERSION}" if publish_edge + sh "git push origin edge-v#{Concurrent::EDGE_VERSION}" if publish_edge + end + end + + desc '** push all *.gem files to rubygems' + task :rubygems do + Dir.chdir(__dir__) do + sh "gem push pkg/concurrent-ruby-#{Concurrent::VERSION}.gem" + sh "gem push pkg/concurrent-ruby-edge-#{Concurrent::EDGE_VERSION}.gem" if publish_edge + sh "gem push pkg/concurrent-ruby-ext-#{Concurrent::VERSION}.gem" + sh "gem push pkg/concurrent-ruby-ext-#{Concurrent::VERSION}-x64-mingw32.gem" + sh "gem push pkg/concurrent-ruby-ext-#{Concurrent::VERSION}-x86-mingw32.gem" + end + end + + desc '** print post release steps' + task :post_steps do + puts 'Manually: create a release on GitHub with relevant changelog part' + puts 'Manually: send email same as release with relevant changelog part' + puts 'Manually: tweet' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/ConcurrentRubyService.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/ConcurrentRubyService.java new file mode 100644 index 0000000000..fb6be96d37 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/ConcurrentRubyService.java @@ -0,0 +1,17 @@ +import org.jruby.Ruby; +import org.jruby.runtime.load.BasicLibraryService; + +import java.io.IOException; + +public class ConcurrentRubyService implements BasicLibraryService { + + public boolean basicLoad(final Ruby runtime) throws IOException { + new com.concurrent_ruby.ext.AtomicReferenceLibrary().load(runtime, false); + new com.concurrent_ruby.ext.JavaAtomicBooleanLibrary().load(runtime, false); + new com.concurrent_ruby.ext.JavaAtomicFixnumLibrary().load(runtime, false); + new com.concurrent_ruby.ext.JavaSemaphoreLibrary().load(runtime, false); + new com.concurrent_ruby.ext.SynchronizationLibrary().load(runtime, false); + new com.concurrent_ruby.ext.JRubyMapBackendLibrary().load(runtime, false); + return true; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java new file mode 100644 index 0000000000..dfa9e7704e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java @@ -0,0 +1,175 @@ +package com.concurrent_ruby.ext; + +import java.lang.reflect.Field; +import java.io.IOException; +import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyModule; +import org.jruby.RubyNumeric; +import org.jruby.RubyObject; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.Library; + +/** + * This library adds an atomic reference type to JRuby for use in the atomic + * library. We do a native version to avoid the implicit value coercion that + * normally happens through JI. + * + * @author headius + */ +public class AtomicReferenceLibrary implements Library { + public void load(Ruby runtime, boolean wrap) throws IOException { + RubyModule concurrentMod = runtime.defineModule("Concurrent"); + RubyClass atomicCls = concurrentMod.defineClassUnder("JavaAtomicReference", runtime.getObject(), JRUBYREFERENCE_ALLOCATOR); + try { + sun.misc.Unsafe.class.getMethod("getAndSetObject", Object.class); + atomicCls.setAllocator(JRUBYREFERENCE8_ALLOCATOR); + } catch (Exception e) { + // leave it as Java 6/7 version + } + atomicCls.defineAnnotatedMethods(JRubyReference.class); + } + + private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRubyReference(runtime, klazz); + } + }; + + private static final ObjectAllocator JRUBYREFERENCE8_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRubyReference8(runtime, klazz); + } + }; + + @JRubyClass(name="JRubyReference", parent="Object") + public static class JRubyReference extends RubyObject { + volatile IRubyObject reference; + + static final sun.misc.Unsafe UNSAFE; + static final long referenceOffset; + + static { + try { + UNSAFE = UnsafeHolder.U; + Class k = JRubyReference.class; + referenceOffset = UNSAFE.objectFieldOffset(k.getDeclaredField("reference")); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public JRubyReference(Ruby runtime, RubyClass klass) { + super(runtime, klass); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context) { + UNSAFE.putObject(this, referenceOffset, context.nil); + return context.nil; + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context, IRubyObject value) { + UNSAFE.putObject(this, referenceOffset, value); + return context.nil; + } + + @JRubyMethod(name = {"get", "value"}) + public IRubyObject get() { + return reference; + } + + @JRubyMethod(name = {"set", "value="}) + public IRubyObject set(IRubyObject newValue) { + UNSAFE.putObjectVolatile(this, referenceOffset, newValue); + return newValue; + } + + @JRubyMethod(name = {"compare_and_set", "compare_and_swap"}) + public IRubyObject compare_and_set(ThreadContext context, IRubyObject expectedValue, IRubyObject newValue) { + Ruby runtime = context.runtime; + + if (expectedValue instanceof RubyNumeric) { + // numerics are not always idempotent in Ruby, so we need to do slower logic + return compareAndSetNumeric(context, expectedValue, newValue); + } + + return runtime.newBoolean(UNSAFE.compareAndSwapObject(this, referenceOffset, expectedValue, newValue)); + } + + @JRubyMethod(name = {"get_and_set", "swap"}) + public IRubyObject get_and_set(ThreadContext context, IRubyObject newValue) { + // less-efficient version for Java 6 and 7 + while (true) { + IRubyObject oldValue = get(); + if (UNSAFE.compareAndSwapObject(this, referenceOffset, oldValue, newValue)) { + return oldValue; + } + } + } + + private IRubyObject compareAndSetNumeric(ThreadContext context, IRubyObject expectedValue, IRubyObject newValue) { + Ruby runtime = context.runtime; + + // loop until: + // * reference CAS would succeed for same-valued objects + // * current and expected have different values as determined by #equals + while (true) { + IRubyObject current = reference; + + if (!(current instanceof RubyNumeric)) { + // old value is not numeric, CAS fails + return runtime.getFalse(); + } + + RubyNumeric currentNumber = (RubyNumeric)current; + if (!currentNumber.equals(expectedValue)) { + // current number does not equal expected, fail CAS + return runtime.getFalse(); + } + + // check that current has not changed, or else allow loop to repeat + boolean success = UNSAFE.compareAndSwapObject(this, referenceOffset, current, newValue); + if (success) { + // value is same and did not change in interim...success + return runtime.getTrue(); + } + } + } + } + + private static final class UnsafeHolder { + private UnsafeHolder(){} + + public static final sun.misc.Unsafe U = loadUnsafe(); + + private static sun.misc.Unsafe loadUnsafe() { + try { + Class unsafeClass = Class.forName("sun.misc.Unsafe"); + Field f = unsafeClass.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (sun.misc.Unsafe) f.get(null); + } catch (Exception e) { + return null; + } + } + } + + public static class JRubyReference8 extends JRubyReference { + public JRubyReference8(Ruby runtime, RubyClass klass) { + super(runtime, klass); + } + + @Override + public IRubyObject get_and_set(ThreadContext context, IRubyObject newValue) { + // efficient version for Java 8 + return (IRubyObject)UNSAFE.getAndSetObject(this, referenceOffset, newValue); + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java new file mode 100644 index 0000000000..a09f9162ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java @@ -0,0 +1,248 @@ +package com.concurrent_ruby.ext; + +import org.jruby.*; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import com.concurrent_ruby.ext.jsr166e.ConcurrentHashMap; +import com.concurrent_ruby.ext.jsr166e.ConcurrentHashMapV8; +import com.concurrent_ruby.ext.jsr166e.nounsafe.*; +import org.jruby.runtime.Block; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.Library; + +import java.io.IOException; +import java.util.Map; + +import static org.jruby.runtime.Visibility.PRIVATE; + +/** + * Native Java implementation to avoid the JI overhead. + * + * @author thedarkone + */ +public class JRubyMapBackendLibrary implements Library { + public void load(Ruby runtime, boolean wrap) throws IOException { + + RubyModule concurrentMod = runtime.defineModule("Concurrent"); + RubyModule thread_safeMod = concurrentMod.defineModuleUnder("Collection"); + RubyClass jrubyRefClass = thread_safeMod.defineClassUnder("JRubyMapBackend", runtime.getObject(), BACKEND_ALLOCATOR); + jrubyRefClass.setAllocator(BACKEND_ALLOCATOR); + jrubyRefClass.defineAnnotatedMethods(JRubyMapBackend.class); + } + + private static final ObjectAllocator BACKEND_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRubyMapBackend(runtime, klazz); + } + }; + + @JRubyClass(name="JRubyMapBackend", parent="Object") + public static class JRubyMapBackend extends RubyObject { + // Defaults used by the CHM + static final int DEFAULT_INITIAL_CAPACITY = 16; + static final float DEFAULT_LOAD_FACTOR = 0.75f; + + public static final boolean CAN_USE_UNSAFE_CHM = canUseUnsafeCHM(); + + private ConcurrentHashMap map; + + private static ConcurrentHashMap newCHM(int initialCapacity, float loadFactor) { + if (CAN_USE_UNSAFE_CHM) { + return new ConcurrentHashMapV8(initialCapacity, loadFactor); + } else { + return new com.concurrent_ruby.ext.jsr166e.nounsafe.ConcurrentHashMapV8(initialCapacity, loadFactor); + } + } + + private static ConcurrentHashMap newCHM() { + return newCHM(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR); + } + + private static boolean canUseUnsafeCHM() { + try { + new com.concurrent_ruby.ext.jsr166e.ConcurrentHashMapV8(); // force class load and initialization + return true; + } catch (Throwable t) { // ensuring we really do catch everything + // Doug's Unsafe setup errors always have this "Could not ini.." message + if (isCausedBySecurityException(t)) { + return false; + } + throw (t instanceof RuntimeException ? (RuntimeException) t : new RuntimeException(t)); + } + } + + private static boolean isCausedBySecurityException(Throwable t) { + while (t != null) { + if ((t.getMessage() != null && t.getMessage().contains("Could not initialize intrinsics")) || t instanceof SecurityException) { + return true; + } + t = t.getCause(); + } + return false; + } + + public JRubyMapBackend(Ruby runtime, RubyClass klass) { + super(runtime, klass); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context) { + map = newCHM(); + return context.getRuntime().getNil(); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context, IRubyObject options) { + map = toCHM(context, options); + return context.getRuntime().getNil(); + } + + private ConcurrentHashMap toCHM(ThreadContext context, IRubyObject options) { + Ruby runtime = context.getRuntime(); + if (!options.isNil() && options.respondsTo("[]")) { + IRubyObject rInitialCapacity = options.callMethod(context, "[]", runtime.newSymbol("initial_capacity")); + IRubyObject rLoadFactor = options.callMethod(context, "[]", runtime.newSymbol("load_factor")); + int initialCapacity = !rInitialCapacity.isNil() ? RubyNumeric.num2int(rInitialCapacity.convertToInteger()) : DEFAULT_INITIAL_CAPACITY; + float loadFactor = !rLoadFactor.isNil() ? (float)RubyNumeric.num2dbl(rLoadFactor.convertToFloat()) : DEFAULT_LOAD_FACTOR; + return newCHM(initialCapacity, loadFactor); + } else { + return newCHM(); + } + } + + @JRubyMethod(name = "[]", required = 1) + public IRubyObject op_aref(ThreadContext context, IRubyObject key) { + IRubyObject value; + return ((value = map.get(key)) == null) ? context.getRuntime().getNil() : value; + } + + @JRubyMethod(name = {"[]="}, required = 2) + public IRubyObject op_aset(IRubyObject key, IRubyObject value) { + map.put(key, value); + return value; + } + + @JRubyMethod + public IRubyObject put_if_absent(IRubyObject key, IRubyObject value) { + IRubyObject result = map.putIfAbsent(key, value); + return result == null ? getRuntime().getNil() : result; + } + + @JRubyMethod + public IRubyObject compute_if_absent(final ThreadContext context, final IRubyObject key, final Block block) { + return map.computeIfAbsent(key, new ConcurrentHashMap.Fun() { + @Override + public IRubyObject apply(IRubyObject key) { + return block.yieldSpecific(context); + } + }); + } + + @JRubyMethod + public IRubyObject compute_if_present(final ThreadContext context, final IRubyObject key, final Block block) { + IRubyObject result = map.computeIfPresent(key, new ConcurrentHashMap.BiFun() { + @Override + public IRubyObject apply(IRubyObject key, IRubyObject oldValue) { + IRubyObject result = block.yieldSpecific(context, oldValue == null ? context.getRuntime().getNil() : oldValue); + return result.isNil() ? null : result; + } + }); + return result == null ? context.getRuntime().getNil() : result; + } + + @JRubyMethod + public IRubyObject compute(final ThreadContext context, final IRubyObject key, final Block block) { + IRubyObject result = map.compute(key, new ConcurrentHashMap.BiFun() { + @Override + public IRubyObject apply(IRubyObject key, IRubyObject oldValue) { + IRubyObject result = block.yieldSpecific(context, oldValue == null ? context.getRuntime().getNil() : oldValue); + return result.isNil() ? null : result; + } + }); + return result == null ? context.getRuntime().getNil() : result; + } + + @JRubyMethod + public IRubyObject merge_pair(final ThreadContext context, final IRubyObject key, final IRubyObject value, final Block block) { + IRubyObject result = map.merge(key, value, new ConcurrentHashMap.BiFun() { + @Override + public IRubyObject apply(IRubyObject oldValue, IRubyObject newValue) { + IRubyObject result = block.yieldSpecific(context, oldValue == null ? context.getRuntime().getNil() : oldValue); + return result.isNil() ? null : result; + } + }); + return result == null ? context.getRuntime().getNil() : result; + } + + @JRubyMethod + public RubyBoolean replace_pair(IRubyObject key, IRubyObject oldValue, IRubyObject newValue) { + return getRuntime().newBoolean(map.replace(key, oldValue, newValue)); + } + + @JRubyMethod(name = "key?", required = 1) + public RubyBoolean has_key_p(IRubyObject key) { + return map.containsKey(key) ? getRuntime().getTrue() : getRuntime().getFalse(); + } + + @JRubyMethod + public IRubyObject key(IRubyObject value) { + final IRubyObject key = map.findKey(value); + return key == null ? getRuntime().getNil() : key; + } + + @JRubyMethod + public IRubyObject replace_if_exists(IRubyObject key, IRubyObject value) { + IRubyObject result = map.replace(key, value); + return result == null ? getRuntime().getNil() : result; + } + + @JRubyMethod + public IRubyObject get_and_set(IRubyObject key, IRubyObject value) { + IRubyObject result = map.put(key, value); + return result == null ? getRuntime().getNil() : result; + } + + @JRubyMethod + public IRubyObject delete(IRubyObject key) { + IRubyObject result = map.remove(key); + return result == null ? getRuntime().getNil() : result; + } + + @JRubyMethod + public RubyBoolean delete_pair(IRubyObject key, IRubyObject value) { + return getRuntime().newBoolean(map.remove(key, value)); + } + + @JRubyMethod + public IRubyObject clear() { + map.clear(); + return this; + } + + @JRubyMethod + public IRubyObject each_pair(ThreadContext context, Block block) { + for (Map.Entry entry : map.entrySet()) { + block.yieldSpecific(context, entry.getKey(), entry.getValue()); + } + return this; + } + + @JRubyMethod + public RubyFixnum size(ThreadContext context) { + return context.getRuntime().newFixnum(map.size()); + } + + @JRubyMethod + public IRubyObject get_or_default(IRubyObject key, IRubyObject defaultValue) { + return map.getValueOrDefault(key, defaultValue); + } + + @JRubyMethod(visibility = PRIVATE) + public JRubyMapBackend initialize_copy(ThreadContext context, IRubyObject other) { + map = newCHM(); + return this; + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java new file mode 100644 index 0000000000..b56607626c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java @@ -0,0 +1,93 @@ +package com.concurrent_ruby.ext; + +import org.jruby.Ruby; +import org.jruby.RubyBoolean; +import org.jruby.RubyClass; +import org.jruby.RubyModule; +import org.jruby.RubyNil; +import org.jruby.RubyObject; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.Library; + +import java.io.IOException; +import java.util.concurrent.atomic.AtomicBoolean; + +public class JavaAtomicBooleanLibrary implements Library { + + public void load(Ruby runtime, boolean wrap) throws IOException { + RubyModule concurrentMod = runtime.defineModule("Concurrent"); + RubyClass atomicCls = concurrentMod.defineClassUnder("JavaAtomicBoolean", runtime.getObject(), JRUBYREFERENCE_ALLOCATOR); + atomicCls.defineAnnotatedMethods(JavaAtomicBoolean.class); + } + + private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JavaAtomicBoolean(runtime, klazz); + } + }; + + @JRubyClass(name = "JavaAtomicBoolean", parent = "Object") + public static class JavaAtomicBoolean extends RubyObject { + + private AtomicBoolean atomicBoolean; + + public JavaAtomicBoolean(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context, IRubyObject value) { + atomicBoolean = new AtomicBoolean(convertRubyBooleanToJavaBoolean(value)); + return context.nil; + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context) { + atomicBoolean = new AtomicBoolean(); + return context.nil; + } + + @JRubyMethod(name = "value") + public IRubyObject value() { + return getRuntime().newBoolean(atomicBoolean.get()); + } + + @JRubyMethod(name = "true?") + public IRubyObject isAtomicTrue() { + return getRuntime().newBoolean(atomicBoolean.get()); + } + + @JRubyMethod(name = "false?") + public IRubyObject isAtomicFalse() { + return getRuntime().newBoolean((atomicBoolean.get() == false)); + } + + @JRubyMethod(name = "value=") + public IRubyObject setAtomic(ThreadContext context, IRubyObject newValue) { + atomicBoolean.set(convertRubyBooleanToJavaBoolean(newValue)); + return context.nil; + } + + @JRubyMethod(name = "make_true") + public IRubyObject makeTrue() { + return getRuntime().newBoolean(atomicBoolean.compareAndSet(false, true)); + } + + @JRubyMethod(name = "make_false") + public IRubyObject makeFalse() { + return getRuntime().newBoolean(atomicBoolean.compareAndSet(true, false)); + } + + private boolean convertRubyBooleanToJavaBoolean(IRubyObject newValue) { + if (newValue instanceof RubyBoolean.False || newValue instanceof RubyNil) { + return false; + } else { + return true; + } + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java new file mode 100755 index 0000000000..672bfc048b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java @@ -0,0 +1,113 @@ +package com.concurrent_ruby.ext; + +import java.io.IOException; +import java.util.concurrent.atomic.AtomicLong; +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyFixnum; +import org.jruby.RubyModule; +import org.jruby.RubyObject; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.Library; +import org.jruby.runtime.Block; + +public class JavaAtomicFixnumLibrary implements Library { + + public void load(Ruby runtime, boolean wrap) throws IOException { + RubyModule concurrentMod = runtime.defineModule("Concurrent"); + RubyClass atomicCls = concurrentMod.defineClassUnder("JavaAtomicFixnum", runtime.getObject(), JRUBYREFERENCE_ALLOCATOR); + + atomicCls.defineAnnotatedMethods(JavaAtomicFixnum.class); + } + + private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JavaAtomicFixnum(runtime, klazz); + } + }; + + @JRubyClass(name = "JavaAtomicFixnum", parent = "Object") + public static class JavaAtomicFixnum extends RubyObject { + + private AtomicLong atomicLong; + + public JavaAtomicFixnum(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context) { + this.atomicLong = new AtomicLong(0); + return context.nil; + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context, IRubyObject value) { + this.atomicLong = new AtomicLong(rubyFixnumToLong(value)); + return context.nil; + } + + @JRubyMethod(name = "value") + public IRubyObject getValue() { + return getRuntime().newFixnum(atomicLong.get()); + } + + @JRubyMethod(name = "value=") + public IRubyObject setValue(ThreadContext context, IRubyObject newValue) { + atomicLong.set(rubyFixnumToLong(newValue)); + return context.nil; + } + + @JRubyMethod(name = {"increment", "up"}) + public IRubyObject increment() { + return getRuntime().newFixnum(atomicLong.incrementAndGet()); + } + + @JRubyMethod(name = {"increment", "up"}) + public IRubyObject increment(IRubyObject value) { + long delta = rubyFixnumToLong(value); + return getRuntime().newFixnum(atomicLong.addAndGet(delta)); + } + + @JRubyMethod(name = {"decrement", "down"}) + public IRubyObject decrement() { + return getRuntime().newFixnum(atomicLong.decrementAndGet()); + } + + @JRubyMethod(name = {"decrement", "down"}) + public IRubyObject decrement(IRubyObject value) { + long delta = rubyFixnumToLong(value); + return getRuntime().newFixnum(atomicLong.addAndGet(-delta)); + } + + @JRubyMethod(name = "compare_and_set") + public IRubyObject compareAndSet(ThreadContext context, IRubyObject expect, IRubyObject update) { + return getRuntime().newBoolean(atomicLong.compareAndSet(rubyFixnumToLong(expect), rubyFixnumToLong(update))); + } + + @JRubyMethod + public IRubyObject update(ThreadContext context, Block block) { + for (;;) { + long _oldValue = atomicLong.get(); + IRubyObject oldValue = getRuntime().newFixnum(_oldValue); + IRubyObject newValue = block.yield(context, oldValue); + if (atomicLong.compareAndSet(_oldValue, rubyFixnumToLong(newValue))) { + return newValue; + } + } + } + + private long rubyFixnumToLong(IRubyObject value) { + if (value instanceof RubyFixnum) { + RubyFixnum fixNum = (RubyFixnum) value; + return fixNum.getLongValue(); + } else { + throw getRuntime().newArgumentError("value must be a Fixnum"); + } + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java new file mode 100755 index 0000000000..a3e847db26 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java @@ -0,0 +1,159 @@ +package com.concurrent_ruby.ext; + +import java.io.IOException; +import java.util.concurrent.Semaphore; +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyFixnum; +import org.jruby.RubyModule; +import org.jruby.RubyNumeric; +import org.jruby.RubyObject; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; + +public class JavaSemaphoreLibrary { + + public void load(Ruby runtime, boolean wrap) throws IOException { + RubyModule concurrentMod = runtime.defineModule("Concurrent"); + RubyClass atomicCls = concurrentMod.defineClassUnder("JavaSemaphore", runtime.getObject(), JRUBYREFERENCE_ALLOCATOR); + + atomicCls.defineAnnotatedMethods(JavaSemaphore.class); + } + + private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JavaSemaphore(runtime, klazz); + } + }; + + @JRubyClass(name = "JavaSemaphore", parent = "Object") + public static class JavaSemaphore extends RubyObject { + + private JRubySemaphore semaphore; + + public JavaSemaphore(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod + public IRubyObject initialize(ThreadContext context, IRubyObject value) { + this.semaphore = new JRubySemaphore(rubyFixnumInt(value, "count")); + return context.nil; + } + + @JRubyMethod + public IRubyObject acquire(ThreadContext context, IRubyObject value) throws InterruptedException { + this.semaphore.acquire(rubyFixnumToPositiveInt(value, "permits")); + return context.nil; + } + + @JRubyMethod(name = "available_permits") + public IRubyObject availablePermits(ThreadContext context) { + return getRuntime().newFixnum(this.semaphore.availablePermits()); + } + + @JRubyMethod(name = "drain_permits") + public IRubyObject drainPermits(ThreadContext context) { + return getRuntime().newFixnum(this.semaphore.drainPermits()); + } + + @JRubyMethod + public IRubyObject acquire(ThreadContext context) throws InterruptedException { + this.semaphore.acquire(1); + return context.nil; + } + + @JRubyMethod(name = "try_acquire") + public IRubyObject tryAcquire(ThreadContext context) throws InterruptedException { + return getRuntime().newBoolean(semaphore.tryAcquire(1)); + } + + @JRubyMethod(name = "try_acquire") + public IRubyObject tryAcquire(ThreadContext context, IRubyObject permits) throws InterruptedException { + return getRuntime().newBoolean(semaphore.tryAcquire(rubyFixnumToPositiveInt(permits, "permits"))); + } + + @JRubyMethod(name = "try_acquire") + public IRubyObject tryAcquire(ThreadContext context, IRubyObject permits, IRubyObject timeout) throws InterruptedException { + return getRuntime().newBoolean( + semaphore.tryAcquire( + rubyFixnumToPositiveInt(permits, "permits"), + rubyNumericToLong(timeout, "timeout"), + java.util.concurrent.TimeUnit.SECONDS) + ); + } + + @JRubyMethod + public IRubyObject release(ThreadContext context) { + this.semaphore.release(1); + return getRuntime().newBoolean(true); + } + + @JRubyMethod + public IRubyObject release(ThreadContext context, IRubyObject value) { + this.semaphore.release(rubyFixnumToPositiveInt(value, "permits")); + return getRuntime().newBoolean(true); + } + + @JRubyMethod(name = "reduce_permits") + public IRubyObject reducePermits(ThreadContext context, IRubyObject reduction) throws InterruptedException { + this.semaphore.publicReducePermits(rubyFixnumToNonNegativeInt(reduction, "reduction")); + return context.nil; + } + + private int rubyFixnumInt(IRubyObject value, String paramName) { + if (value instanceof RubyFixnum) { + RubyFixnum fixNum = (RubyFixnum) value; + return (int) fixNum.getLongValue(); + } else { + throw getRuntime().newArgumentError(paramName + " must be integer"); + } + } + + private int rubyFixnumToNonNegativeInt(IRubyObject value, String paramName) { + if (value instanceof RubyFixnum && ((RubyFixnum) value).getLongValue() >= 0) { + RubyFixnum fixNum = (RubyFixnum) value; + return (int) fixNum.getLongValue(); + } else { + throw getRuntime().newArgumentError(paramName + " must be a non-negative integer"); + } + } + + private int rubyFixnumToPositiveInt(IRubyObject value, String paramName) { + if (value instanceof RubyFixnum && ((RubyFixnum) value).getLongValue() > 0) { + RubyFixnum fixNum = (RubyFixnum) value; + return (int) fixNum.getLongValue(); + } else { + throw getRuntime().newArgumentError(paramName + " must be an integer greater than zero"); + } + } + + private long rubyNumericToLong(IRubyObject value, String paramName) { + if (value instanceof RubyNumeric && ((RubyNumeric) value).getDoubleValue() > 0) { + RubyNumeric fixNum = (RubyNumeric) value; + return fixNum.getLongValue(); + } else { + throw getRuntime().newArgumentError(paramName + " must be a float greater than zero"); + } + } + + class JRubySemaphore extends Semaphore { + + public JRubySemaphore(int permits) { + super(permits); + } + + public JRubySemaphore(int permits, boolean value) { + super(permits, value); + } + + public void publicReducePermits(int i) { + reducePermits(i); + } + + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java new file mode 100644 index 0000000000..3193ec47d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java @@ -0,0 +1,306 @@ +package com.concurrent_ruby.ext; + +import org.jruby.Ruby; +import org.jruby.RubyBasicObject; +import org.jruby.RubyClass; +import org.jruby.RubyModule; +import org.jruby.RubyObject; +import org.jruby.RubyThread; +import org.jruby.anno.JRubyClass; +import org.jruby.anno.JRubyMethod; +import org.jruby.runtime.Block; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.Visibility; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.Library; +import sun.misc.Unsafe; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public class SynchronizationLibrary implements Library { + + private static final Unsafe UNSAFE = loadUnsafe(); + + private static Unsafe loadUnsafe() { + try { + Class ncdfe = Class.forName("sun.misc.Unsafe"); + Field f = ncdfe.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (Unsafe) f.get((java.lang.Object) null); + } catch (Exception var2) { + return null; + } catch (NoClassDefFoundError var3) { + return null; + } + } + + private static boolean supportsFences() { + if (UNSAFE == null) { + return false; + } else { + try { + Method m = UNSAFE.getClass().getDeclaredMethod("fullFence", new Class[0]); + if (m != null) { + return true; + } + } catch (Exception var1) { + // nothing + } + + return false; + } + } + + private static final ObjectAllocator JRUBY_OBJECT_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRubyObject(runtime, klazz); + } + }; + + private static final ObjectAllocator OBJECT_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new Object(runtime, klazz); + } + }; + + private static final ObjectAllocator ABSTRACT_LOCKABLE_OBJECT_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new AbstractLockableObject(runtime, klazz); + } + }; + + private static final ObjectAllocator JRUBY_LOCKABLE_OBJECT_ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRubyLockableObject(runtime, klazz); + } + }; + + public void load(Ruby runtime, boolean wrap) throws IOException { + RubyModule synchronizationModule = runtime. + defineModule("Concurrent"). + defineModuleUnder("Synchronization"); + + RubyModule jrubyAttrVolatileModule = synchronizationModule.defineModuleUnder("JRubyAttrVolatile"); + jrubyAttrVolatileModule.defineAnnotatedMethods(JRubyAttrVolatile.class); + + defineClass(runtime, synchronizationModule, "AbstractObject", "JRubyObject", + JRubyObject.class, JRUBY_OBJECT_ALLOCATOR); + + defineClass(runtime, synchronizationModule, "JRubyObject", "Object", + Object.class, OBJECT_ALLOCATOR); + + defineClass(runtime, synchronizationModule, "Object", "AbstractLockableObject", + AbstractLockableObject.class, ABSTRACT_LOCKABLE_OBJECT_ALLOCATOR); + + defineClass(runtime, synchronizationModule, "AbstractLockableObject", "JRubyLockableObject", + JRubyLockableObject.class, JRUBY_LOCKABLE_OBJECT_ALLOCATOR); + + defineClass(runtime, synchronizationModule, "Object", "JRuby", + JRuby.class, new ObjectAllocator() { + @Override + public IRubyObject allocate(Ruby runtime, RubyClass klazz) { + return new JRuby(runtime, klazz); + } + }); + } + + private RubyClass defineClass( + Ruby runtime, + RubyModule namespace, + String parentName, + String name, + Class javaImplementation, + ObjectAllocator allocator) { + final RubyClass parentClass = namespace.getClass(parentName); + + if (parentClass == null) { + System.out.println("not found " + parentName); + throw runtime.newRuntimeError(namespace.toString() + "::" + parentName + " is missing"); + } + + final RubyClass newClass = namespace.defineClassUnder(name, parentClass, allocator); + newClass.defineAnnotatedMethods(javaImplementation); + return newClass; + } + + // Facts: + // - all ivar reads are without any synchronisation of fences see + // https://github.com/jruby/jruby/blob/master/core/src/main/java/org/jruby/runtime/ivars/VariableAccessor.java#L110-110 + // - writes depend on UnsafeHolder.U, null -> SynchronizedVariableAccessor, !null -> StampedVariableAccessor + // SynchronizedVariableAccessor wraps with synchronized block, StampedVariableAccessor uses fullFence or + // volatilePut + // TODO (pitr 16-Sep-2015): what do we do in Java 9 ? + + // module JRubyAttrVolatile + public static class JRubyAttrVolatile { + + // volatile threadContext is used as a memory barrier per the JVM memory model happens-before semantic + // on volatile fields. any volatile field could have been used but using the thread context is an + // attempt to avoid code elimination. + private static volatile ThreadContext threadContext = null; + + @JRubyMethod(name = "full_memory_barrier", visibility = Visibility.PUBLIC) + public static IRubyObject fullMemoryBarrier(ThreadContext context, IRubyObject self) { + // Prevent reordering of ivar writes with publication of this instance + if (!supportsFences()) { + // Assuming that following volatile read and write is not eliminated it simulates fullFence. + // If it's eliminated it'll cause problems only on non-x86 platforms. + // http://shipilev.net/blog/2014/jmm-pragmatics/#_happens_before_test_your_understanding + final ThreadContext oldContext = threadContext; + threadContext = context; + } else { + UNSAFE.fullFence(); + } + return context.nil; + } + + @JRubyMethod(name = "instance_variable_get_volatile", visibility = Visibility.PUBLIC) + public static IRubyObject instanceVariableGetVolatile( + ThreadContext context, + IRubyObject self, + IRubyObject name) { + // Ensure we ses latest value with loadFence + if (!supportsFences()) { + // piggybacking on volatile read, simulating loadFence + final ThreadContext oldContext = threadContext; + return ((RubyBasicObject) self).instance_variable_get(context, name); + } else { + UNSAFE.loadFence(); + return ((RubyBasicObject) self).instance_variable_get(context, name); + } + } + + @JRubyMethod(name = "instance_variable_set_volatile", visibility = Visibility.PUBLIC) + public static IRubyObject InstanceVariableSetVolatile( + ThreadContext context, + IRubyObject self, + IRubyObject name, + IRubyObject value) { + // Ensure we make last update visible + if (!supportsFences()) { + // piggybacking on volatile write, simulating storeFence + final IRubyObject result = ((RubyBasicObject) self).instance_variable_set(name, value); + threadContext = context; + return result; + } else { + // JRuby uses StampedVariableAccessor which calls fullFence + // so no additional steps needed. + // See https://github.com/jruby/jruby/blob/master/core/src/main/java/org/jruby/runtime/ivars/StampedVariableAccessor.java#L151-L159 + return ((RubyBasicObject) self).instance_variable_set(name, value); + } + } + } + + @JRubyClass(name = "JRubyObject", parent = "AbstractObject") + public static class JRubyObject extends RubyObject { + + public JRubyObject(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + } + + @JRubyClass(name = "Object", parent = "JRubyObject") + public static class Object extends JRubyObject { + + public Object(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + } + + @JRubyClass(name = "AbstractLockableObject", parent = "Object") + public static class AbstractLockableObject extends Object { + + public AbstractLockableObject(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + } + + @JRubyClass(name = "JRubyLockableObject", parent = "AbstractLockableObject") + public static class JRubyLockableObject extends JRubyObject { + + public JRubyLockableObject(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod(name = "synchronize", visibility = Visibility.PROTECTED) + public IRubyObject rubySynchronize(ThreadContext context, Block block) { + synchronized (this) { + return block.yield(context, null); + } + } + + @JRubyMethod(name = "ns_wait", optional = 1, visibility = Visibility.PROTECTED) + public IRubyObject nsWait(ThreadContext context, IRubyObject[] args) { + Ruby runtime = context.runtime; + if (args.length > 1) { + throw runtime.newArgumentError(args.length, 1); + } + Double timeout = null; + if (args.length > 0 && !args[0].isNil()) { + timeout = args[0].convertToFloat().getDoubleValue(); + if (timeout < 0) { + throw runtime.newArgumentError("time interval must be positive"); + } + } + if (Thread.interrupted()) { + throw runtime.newConcurrencyError("thread interrupted"); + } + boolean success = false; + try { + success = context.getThread().wait_timeout(this, timeout); + } catch (InterruptedException ie) { + throw runtime.newConcurrencyError(ie.getLocalizedMessage()); + } finally { + // An interrupt or timeout may have caused us to miss + // a notify that we consumed, so do another notify in + // case someone else is available to pick it up. + if (!success) { + this.notify(); + } + } + return this; + } + + @JRubyMethod(name = "ns_signal", visibility = Visibility.PROTECTED) + public IRubyObject nsSignal(ThreadContext context) { + notify(); + return this; + } + + @JRubyMethod(name = "ns_broadcast", visibility = Visibility.PROTECTED) + public IRubyObject nsBroadcast(ThreadContext context) { + notifyAll(); + return this; + } + } + + @JRubyClass(name = "JRuby") + public static class JRuby extends RubyObject { + public JRuby(Ruby runtime, RubyClass metaClass) { + super(runtime, metaClass); + } + + @JRubyMethod(name = "sleep_interruptibly", visibility = Visibility.PUBLIC, module = true) + public static IRubyObject sleepInterruptibly(final ThreadContext context, IRubyObject receiver, final Block block) { + try { + context.getThread().executeBlockingTask(new RubyThread.BlockingTask() { + @Override + public void run() throws InterruptedException { + block.call(context); + } + + @Override + public void wakeup() { + context.getThread().getNativeThread().interrupt(); + } + }); + } catch (InterruptedException e) { + throw context.runtime.newThreadError("interrupted in Concurrent::Synchronization::JRuby.sleep_interruptibly"); + } + return context.nil; + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java new file mode 100644 index 0000000000..e11e15aa4e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java @@ -0,0 +1,31 @@ +package com.concurrent_ruby.ext.jsr166e; + +import java.util.Map; +import java.util.Set; + +public interface ConcurrentHashMap { + /** Interface describing a function of one argument */ + public interface Fun { T apply(A a); } + /** Interface describing a function of two arguments */ + public interface BiFun { T apply(A a, B b); } + + public V get(K key); + public V put(K key, V value); + public V putIfAbsent(K key, V value); + public V computeIfAbsent(K key, Fun mf); + public V computeIfPresent(K key, BiFun mf); + public V compute(K key, BiFun mf); + public V merge(K key, V value, BiFun mf); + public boolean replace(K key, V oldVal, V newVal); + public V replace(K key, V value); + public boolean containsKey(K key); + public boolean remove(Object key, Object value); + public V remove(K key); + public void clear(); + public Set> entrySet(); + public int size(); + public V getValueOrDefault(Object key, V defaultValue); + + public boolean containsValue(V value); + public K findKey(V value); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java new file mode 100644 index 0000000000..86aa4eb062 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java @@ -0,0 +1,3863 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on the 1.79 version. + +package com.concurrent_ruby.ext.jsr166e; + +import org.jruby.RubyClass; +import org.jruby.RubyNumeric; +import org.jruby.RubyObject; +import org.jruby.exceptions.RaiseException; +import com.concurrent_ruby.ext.jsr166y.ThreadLocalRandom; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; + +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.Collection; +import java.util.Hashtable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Enumeration; +import java.util.ConcurrentModificationException; +import java.util.NoSuchElementException; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.locks.AbstractQueuedSynchronizer; + +import java.io.Serializable; + +/** + * A hash table supporting full concurrency of retrievals and + * high expected concurrency for updates. This class obeys the + * same functional specification as {@link java.util.Hashtable}, and + * includes versions of methods corresponding to each method of + * {@code Hashtable}. However, even though all operations are + * thread-safe, retrieval operations do not entail locking, + * and there is not any support for locking the entire table + * in a way that prevents all access. This class is fully + * interoperable with {@code Hashtable} in programs that rely on its + * thread safety but not on its synchronization details. + * + *

              Retrieval operations (including {@code get}) generally do not + * block, so may overlap with update operations (including {@code put} + * and {@code remove}). Retrievals reflect the results of the most + * recently completed update operations holding upon their + * onset. (More formally, an update operation for a given key bears a + * happens-before relation with any (non-null) retrieval for + * that key reporting the updated value.) For aggregate operations + * such as {@code putAll} and {@code clear}, concurrent retrievals may + * reflect insertion or removal of only some entries. Similarly, + * Iterators and Enumerations return elements reflecting the state of + * the hash table at some point at or since the creation of the + * iterator/enumeration. They do not throw {@link + * ConcurrentModificationException}. However, iterators are designed + * to be used by only one thread at a time. Bear in mind that the + * results of aggregate status methods including {@code size}, {@code + * isEmpty}, and {@code containsValue} are typically useful only when + * a map is not undergoing concurrent updates in other threads. + * Otherwise the results of these methods reflect transient states + * that may be adequate for monitoring or estimation purposes, but not + * for program control. + * + *

              The table is dynamically expanded when there are too many + * collisions (i.e., keys that have distinct hash codes but fall into + * the same slot modulo the table size), with the expected average + * effect of maintaining roughly two bins per mapping (corresponding + * to a 0.75 load factor threshold for resizing). There may be much + * variance around this average as mappings are added and removed, but + * overall, this maintains a commonly accepted time/space tradeoff for + * hash tables. However, resizing this or any other kind of hash + * table may be a relatively slow operation. When possible, it is a + * good idea to provide a size estimate as an optional {@code + * initialCapacity} constructor argument. An additional optional + * {@code loadFactor} constructor argument provides a further means of + * customizing initial table capacity by specifying the table density + * to be used in calculating the amount of space to allocate for the + * given number of elements. Also, for compatibility with previous + * versions of this class, constructors may optionally specify an + * expected {@code concurrencyLevel} as an additional hint for + * internal sizing. Note that using many keys with exactly the same + * {@code hashCode()} is a sure way to slow down performance of any + * hash table. + * + *

              A {@link Set} projection of a ConcurrentHashMapV8 may be created + * (using {@link #newKeySet()} or {@link #newKeySet(int)}), or viewed + * (using {@link #keySet(Object)} when only keys are of interest, and the + * mapped values are (perhaps transiently) not used or all take the + * same mapping value. + * + *

              A ConcurrentHashMapV8 can be used as scalable frequency map (a + * form of histogram or multiset) by using {@link LongAdder} values + * and initializing via {@link #computeIfAbsent}. For example, to add + * a count to a {@code ConcurrentHashMapV8 freqs}, you + * can use {@code freqs.computeIfAbsent(k -> new + * LongAdder()).increment();} + * + *

              This class and its views and iterators implement all of the + * optional methods of the {@link Map} and {@link Iterator} + * interfaces. + * + *

              Like {@link Hashtable} but unlike {@link HashMap}, this class + * does not allow {@code null} to be used as a key or value. + * + *

              ConcurrentHashMapV8s support parallel operations using the {@link + * ForkJoinPool#commonPool}. (Tasks that may be used in other contexts + * are available in class {@link ForkJoinTasks}). These operations are + * designed to be safely, and often sensibly, applied even with maps + * that are being concurrently updated by other threads; for example, + * when computing a snapshot summary of the values in a shared + * registry. There are three kinds of operation, each with four + * forms, accepting functions with Keys, Values, Entries, and (Key, + * Value) arguments and/or return values. (The first three forms are + * also available via the {@link #keySet()}, {@link #values()} and + * {@link #entrySet()} views). Because the elements of a + * ConcurrentHashMapV8 are not ordered in any particular way, and may be + * processed in different orders in different parallel executions, the + * correctness of supplied functions should not depend on any + * ordering, or on any other objects or values that may transiently + * change while computation is in progress; and except for forEach + * actions, should ideally be side-effect-free. + * + *

                + *
              • forEach: Perform a given action on each element. + * A variant form applies a given transformation on each element + * before performing the action.
              • + * + *
              • search: Return the first available non-null result of + * applying a given function on each element; skipping further + * search when a result is found.
              • + * + *
              • reduce: Accumulate each element. The supplied reduction + * function cannot rely on ordering (more formally, it should be + * both associative and commutative). There are five variants: + * + *
                  + * + *
                • Plain reductions. (There is not a form of this method for + * (key, value) function arguments since there is no corresponding + * return type.)
                • + * + *
                • Mapped reductions that accumulate the results of a given + * function applied to each element.
                • + * + *
                • Reductions to scalar doubles, longs, and ints, using a + * given basis value.
                • + * + * + *
                + *
              + * + *

              The concurrency properties of bulk operations follow + * from those of ConcurrentHashMapV8: Any non-null result returned + * from {@code get(key)} and related access methods bears a + * happens-before relation with the associated insertion or + * update. The result of any bulk operation reflects the + * composition of these per-element relations (but is not + * necessarily atomic with respect to the map as a whole unless it + * is somehow known to be quiescent). Conversely, because keys + * and values in the map are never null, null serves as a reliable + * atomic indicator of the current lack of any result. To + * maintain this property, null serves as an implicit basis for + * all non-scalar reduction operations. For the double, long, and + * int versions, the basis should be one that, when combined with + * any other value, returns that other value (more formally, it + * should be the identity element for the reduction). Most common + * reductions have these properties; for example, computing a sum + * with basis 0 or a minimum with basis MAX_VALUE. + * + *

              Search and transformation functions provided as arguments + * should similarly return null to indicate the lack of any result + * (in which case it is not used). In the case of mapped + * reductions, this also enables transformations to serve as + * filters, returning null (or, in the case of primitive + * specializations, the identity basis) if the element should not + * be combined. You can create compound transformations and + * filterings by composing them yourself under this "null means + * there is nothing there now" rule before using them in search or + * reduce operations. + * + *

              Methods accepting and/or returning Entry arguments maintain + * key-value associations. They may be useful for example when + * finding the key for the greatest value. Note that "plain" Entry + * arguments can be supplied using {@code new + * AbstractMap.SimpleEntry(k,v)}. + * + *

              Bulk operations may complete abruptly, throwing an + * exception encountered in the application of a supplied + * function. Bear in mind when handling such exceptions that other + * concurrently executing functions could also have thrown + * exceptions, or would have done so if the first exception had + * not occurred. + * + *

              Parallel speedups for bulk operations compared to sequential + * processing are common but not guaranteed. Operations involving + * brief functions on small maps may execute more slowly than + * sequential loops if the underlying work to parallelize the + * computation is more expensive than the computation itself. + * Similarly, parallelization may not lead to much actual parallelism + * if all processors are busy performing unrelated tasks. + * + *

              All arguments to all task methods must be non-null. + * + *

              jsr166e note: During transition, this class + * uses nested functional interfaces with different names but the + * same forms as those expected for JDK8. + * + *

              This class is a member of the + * + * Java Collections Framework. + * + * @since 1.5 + * @author Doug Lea + * @param the type of keys maintained by this map + * @param the type of mapped values + */ +public class ConcurrentHashMapV8 + implements ConcurrentMap, Serializable, ConcurrentHashMap { + private static final long serialVersionUID = 7249069246763182397L; + + /** + * A partitionable iterator. A Spliterator can be traversed + * directly, but can also be partitioned (before traversal) by + * creating another Spliterator that covers a non-overlapping + * portion of the elements, and so may be amenable to parallel + * execution. + * + *

              This interface exports a subset of expected JDK8 + * functionality. + * + *

              Sample usage: Here is one (of the several) ways to compute + * the sum of the values held in a map using the ForkJoin + * framework. As illustrated here, Spliterators are well suited to + * designs in which a task repeatedly splits off half its work + * into forked subtasks until small enough to process directly, + * and then joins these subtasks. Variants of this style can also + * be used in completion-based designs. + * + *

              +     * {@code ConcurrentHashMapV8 m = ...
              +     * // split as if have 8 * parallelism, for load balance
              +     * int n = m.size();
              +     * int p = aForkJoinPool.getParallelism() * 8;
              +     * int split = (n < p)? n : p;
              +     * long sum = aForkJoinPool.invoke(new SumValues(m.valueSpliterator(), split, null));
              +     * // ...
              +     * static class SumValues extends RecursiveTask {
              +     *   final Spliterator s;
              +     *   final int split;             // split while > 1
              +     *   final SumValues nextJoin;    // records forked subtasks to join
              +     *   SumValues(Spliterator s, int depth, SumValues nextJoin) {
              +     *     this.s = s; this.depth = depth; this.nextJoin = nextJoin;
              +     *   }
              +     *   public Long compute() {
              +     *     long sum = 0;
              +     *     SumValues subtasks = null; // fork subtasks
              +     *     for (int s = split >>> 1; s > 0; s >>>= 1)
              +     *       (subtasks = new SumValues(s.split(), s, subtasks)).fork();
              +     *     while (s.hasNext())        // directly process remaining elements
              +     *       sum += s.next();
              +     *     for (SumValues t = subtasks; t != null; t = t.nextJoin)
              +     *       sum += t.join();         // collect subtask results
              +     *     return sum;
              +     *   }
              +     * }
              +     * }
              + */ + public static interface Spliterator extends Iterator { + /** + * Returns a Spliterator covering approximately half of the + * elements, guaranteed not to overlap with those subsequently + * returned by this Spliterator. After invoking this method, + * the current Spliterator will not produce any of + * the elements of the returned Spliterator, but the two + * Spliterators together will produce all of the elements that + * would have been produced by this Spliterator had this + * method not been called. The exact number of elements + * produced by the returned Spliterator is not guaranteed, and + * may be zero (i.e., with {@code hasNext()} reporting {@code + * false}) if this Spliterator cannot be further split. + * + * @return a Spliterator covering approximately half of the + * elements + * @throws IllegalStateException if this Spliterator has + * already commenced traversing elements + */ + Spliterator split(); + } + + + /* + * Overview: + * + * The primary design goal of this hash table is to maintain + * concurrent readability (typically method get(), but also + * iterators and related methods) while minimizing update + * contention. Secondary goals are to keep space consumption about + * the same or better than java.util.HashMap, and to support high + * initial insertion rates on an empty table by many threads. + * + * Each key-value mapping is held in a Node. Because Node fields + * can contain special values, they are defined using plain Object + * types. Similarly in turn, all internal methods that use them + * work off Object types. And similarly, so do the internal + * methods of auxiliary iterator and view classes. All public + * generic typed methods relay in/out of these internal methods, + * supplying null-checks and casts as needed. This also allows + * many of the public methods to be factored into a smaller number + * of internal methods (although sadly not so for the five + * variants of put-related operations). The validation-based + * approach explained below leads to a lot of code sprawl because + * retry-control precludes factoring into smaller methods. + * + * The table is lazily initialized to a power-of-two size upon the + * first insertion. Each bin in the table normally contains a + * list of Nodes (most often, the list has only zero or one Node). + * Table accesses require volatile/atomic reads, writes, and + * CASes. Because there is no other way to arrange this without + * adding further indirections, we use intrinsics + * (sun.misc.Unsafe) operations. The lists of nodes within bins + * are always accurately traversable under volatile reads, so long + * as lookups check hash code and non-nullness of value before + * checking key equality. + * + * We use the top two bits of Node hash fields for control + * purposes -- they are available anyway because of addressing + * constraints. As explained further below, these top bits are + * used as follows: + * 00 - Normal + * 01 - Locked + * 11 - Locked and may have a thread waiting for lock + * 10 - Node is a forwarding node + * + * The lower 30 bits of each Node's hash field contain a + * transformation of the key's hash code, except for forwarding + * nodes, for which the lower bits are zero (and so always have + * hash field == MOVED). + * + * Insertion (via put or its variants) of the first node in an + * empty bin is performed by just CASing it to the bin. This is + * by far the most common case for put operations under most + * key/hash distributions. Other update operations (insert, + * delete, and replace) require locks. We do not want to waste + * the space required to associate a distinct lock object with + * each bin, so instead use the first node of a bin list itself as + * a lock. Blocking support for these locks relies on the builtin + * "synchronized" monitors. However, we also need a tryLock + * construction, so we overlay these by using bits of the Node + * hash field for lock control (see above), and so normally use + * builtin monitors only for blocking and signalling using + * wait/notifyAll constructions. See Node.tryAwaitLock. + * + * Using the first node of a list as a lock does not by itself + * suffice though: When a node is locked, any update must first + * validate that it is still the first node after locking it, and + * retry if not. Because new nodes are always appended to lists, + * once a node is first in a bin, it remains first until deleted + * or the bin becomes invalidated (upon resizing). However, + * operations that only conditionally update may inspect nodes + * until the point of update. This is a converse of sorts to the + * lazy locking technique described by Herlihy & Shavit. + * + * The main disadvantage of per-bin locks is that other update + * operations on other nodes in a bin list protected by the same + * lock can stall, for example when user equals() or mapping + * functions take a long time. However, statistically, under + * random hash codes, this is not a common problem. Ideally, the + * frequency of nodes in bins follows a Poisson distribution + * (http://en.wikipedia.org/wiki/Poisson_distribution) with a + * parameter of about 0.5 on average, given the resizing threshold + * of 0.75, although with a large variance because of resizing + * granularity. Ignoring variance, the expected occurrences of + * list size k are (exp(-0.5) * pow(0.5, k) / factorial(k)). The + * first values are: + * + * 0: 0.60653066 + * 1: 0.30326533 + * 2: 0.07581633 + * 3: 0.01263606 + * 4: 0.00157952 + * 5: 0.00015795 + * 6: 0.00001316 + * 7: 0.00000094 + * 8: 0.00000006 + * more: less than 1 in ten million + * + * Lock contention probability for two threads accessing distinct + * elements is roughly 1 / (8 * #elements) under random hashes. + * + * Actual hash code distributions encountered in practice + * sometimes deviate significantly from uniform randomness. This + * includes the case when N > (1<<30), so some keys MUST collide. + * Similarly for dumb or hostile usages in which multiple keys are + * designed to have identical hash codes. Also, although we guard + * against the worst effects of this (see method spread), sets of + * hashes may differ only in bits that do not impact their bin + * index for a given power-of-two mask. So we use a secondary + * strategy that applies when the number of nodes in a bin exceeds + * a threshold, and at least one of the keys implements + * Comparable. These TreeBins use a balanced tree to hold nodes + * (a specialized form of red-black trees), bounding search time + * to O(log N). Each search step in a TreeBin is around twice as + * slow as in a regular list, but given that N cannot exceed + * (1<<64) (before running out of addresses) this bounds search + * steps, lock hold times, etc, to reasonable constants (roughly + * 100 nodes inspected per operation worst case) so long as keys + * are Comparable (which is very common -- String, Long, etc). + * TreeBin nodes (TreeNodes) also maintain the same "next" + * traversal pointers as regular nodes, so can be traversed in + * iterators in the same way. + * + * The table is resized when occupancy exceeds a percentage + * threshold (nominally, 0.75, but see below). Only a single + * thread performs the resize (using field "sizeCtl", to arrange + * exclusion), but the table otherwise remains usable for reads + * and updates. Resizing proceeds by transferring bins, one by + * one, from the table to the next table. Because we are using + * power-of-two expansion, the elements from each bin must either + * stay at same index, or move with a power of two offset. We + * eliminate unnecessary node creation by catching cases where old + * nodes can be reused because their next fields won't change. On + * average, only about one-sixth of them need cloning when a table + * doubles. The nodes they replace will be garbage collectable as + * soon as they are no longer referenced by any reader thread that + * may be in the midst of concurrently traversing table. Upon + * transfer, the old table bin contains only a special forwarding + * node (with hash field "MOVED") that contains the next table as + * its key. On encountering a forwarding node, access and update + * operations restart, using the new table. + * + * Each bin transfer requires its bin lock. However, unlike other + * cases, a transfer can skip a bin if it fails to acquire its + * lock, and revisit it later (unless it is a TreeBin). Method + * rebuild maintains a buffer of TRANSFER_BUFFER_SIZE bins that + * have been skipped because of failure to acquire a lock, and + * blocks only if none are available (i.e., only very rarely). + * The transfer operation must also ensure that all accessible + * bins in both the old and new table are usable by any traversal. + * When there are no lock acquisition failures, this is arranged + * simply by proceeding from the last bin (table.length - 1) up + * towards the first. Upon seeing a forwarding node, traversals + * (see class Iter) arrange to move to the new table + * without revisiting nodes. However, when any node is skipped + * during a transfer, all earlier table bins may have become + * visible, so are initialized with a reverse-forwarding node back + * to the old table until the new ones are established. (This + * sometimes requires transiently locking a forwarding node, which + * is possible under the above encoding.) These more expensive + * mechanics trigger only when necessary. + * + * The traversal scheme also applies to partial traversals of + * ranges of bins (via an alternate Traverser constructor) + * to support partitioned aggregate operations. Also, read-only + * operations give up if ever forwarded to a null table, which + * provides support for shutdown-style clearing, which is also not + * currently implemented. + * + * Lazy table initialization minimizes footprint until first use, + * and also avoids resizings when the first operation is from a + * putAll, constructor with map argument, or deserialization. + * These cases attempt to override the initial capacity settings, + * but harmlessly fail to take effect in cases of races. + * + * The element count is maintained using a LongAdder, which avoids + * contention on updates but can encounter cache thrashing if read + * too frequently during concurrent access. To avoid reading so + * often, resizing is attempted either when a bin lock is + * contended, or upon adding to a bin already holding two or more + * nodes (checked before adding in the xIfAbsent methods, after + * adding in others). Under uniform hash distributions, the + * probability of this occurring at threshold is around 13%, + * meaning that only about 1 in 8 puts check threshold (and after + * resizing, many fewer do so). But this approximation has high + * variance for small table sizes, so we check on any collision + * for sizes <= 64. The bulk putAll operation further reduces + * contention by only committing count updates upon these size + * checks. + * + * Maintaining API and serialization compatibility with previous + * versions of this class introduces several oddities. Mainly: We + * leave untouched but unused constructor arguments refering to + * concurrencyLevel. We accept a loadFactor constructor argument, + * but apply it only to initial table capacity (which is the only + * time that we can guarantee to honor it.) We also declare an + * unused "Segment" class that is instantiated in minimal form + * only when serializing. + */ + + /* ---------------- Constants -------------- */ + + /** + * The largest possible table capacity. This value must be + * exactly 1<<30 to stay within Java array allocation and indexing + * bounds for power of two table sizes, and is further required + * because the top two bits of 32bit hash fields are used for + * control purposes. + */ + private static final int MAXIMUM_CAPACITY = 1 << 30; + + /** + * The default initial table capacity. Must be a power of 2 + * (i.e., at least 1) and at most MAXIMUM_CAPACITY. + */ + private static final int DEFAULT_CAPACITY = 16; + + /** + * The largest possible (non-power of two) array size. + * Needed by toArray and related methods. + */ + static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; + + /** + * The default concurrency level for this table. Unused but + * defined for compatibility with previous versions of this class. + */ + private static final int DEFAULT_CONCURRENCY_LEVEL = 16; + + /** + * The load factor for this table. Overrides of this value in + * constructors affect only the initial table capacity. The + * actual floating point value isn't normally used -- it is + * simpler to use expressions such as {@code n - (n >>> 2)} for + * the associated resizing threshold. + */ + private static final float LOAD_FACTOR = 0.75f; + + /** + * The buffer size for skipped bins during transfers. The + * value is arbitrary but should be large enough to avoid + * most locking stalls during resizes. + */ + private static final int TRANSFER_BUFFER_SIZE = 32; + + /** + * The bin count threshold for using a tree rather than list for a + * bin. The value reflects the approximate break-even point for + * using tree-based operations. + * Note that Doug's version defaults to 8, but when dealing with + * Ruby objects it is actually beneficial to avoid TreeNodes + * as long as possible as it usually means going into Ruby land. + */ + private static final int TREE_THRESHOLD = 16; + + /* + * Encodings for special uses of Node hash fields. See above for + * explanation. + */ + static final int MOVED = 0x80000000; // hash field for forwarding nodes + static final int LOCKED = 0x40000000; // set/tested only as a bit + static final int WAITING = 0xc0000000; // both bits set/tested together + static final int HASH_BITS = 0x3fffffff; // usable bits of normal node hash + + /* ---------------- Fields -------------- */ + + /** + * The array of bins. Lazily initialized upon first insertion. + * Size is always a power of two. Accessed directly by iterators. + */ + transient volatile Node[] table; + + /** + * The counter maintaining number of elements. + */ + private transient final LongAdder counter; + + /** + * Table initialization and resizing control. When negative, the + * table is being initialized or resized. Otherwise, when table is + * null, holds the initial table size to use upon creation, or 0 + * for default. After initialization, holds the next element count + * value upon which to resize the table. + */ + private transient volatile int sizeCtl; + + // views + private transient KeySetView keySet; + private transient ValuesView values; + private transient EntrySetView entrySet; + + /** For serialization compatibility. Null unless serialized; see below */ + private Segment[] segments; + + /* ---------------- Table element access -------------- */ + + /* + * Volatile access methods are used for table elements as well as + * elements of in-progress next table while resizing. Uses are + * null checked by callers, and implicitly bounds-checked, relying + * on the invariants that tab arrays have non-zero size, and all + * indices are masked with (tab.length - 1) which is never + * negative and always less than length. Note that, to be correct + * wrt arbitrary concurrency errors by users, bounds checks must + * operate on local variables, which accounts for some odd-looking + * inline assignments below. + */ + + static final Node tabAt(Node[] tab, int i) { // used by Iter + return (Node)UNSAFE.getObjectVolatile(tab, ((long)i< 1 ? 64 : 1; + + /** + * Spins a while if LOCKED bit set and this node is the first + * of its bin, and then sets WAITING bits on hash field and + * blocks (once) if they are still set. It is OK for this + * method to return even if lock is not available upon exit, + * which enables these simple single-wait mechanics. + * + * The corresponding signalling operation is performed within + * callers: Upon detecting that WAITING has been set when + * unlocking lock (via a failed CAS from non-waiting LOCKED + * state), unlockers acquire the sync lock and perform a + * notifyAll. + * + * The initial sanity check on tab and bounds is not currently + * necessary in the only usages of this method, but enables + * use in other future contexts. + */ + final void tryAwaitLock(Node[] tab, int i) { + if (tab != null && i >= 0 && i < tab.length) { // sanity check + int r = ThreadLocalRandom.current().nextInt(); // randomize spins + int spins = MAX_SPINS, h; + while (tabAt(tab, i) == this && ((h = hash) & LOCKED) != 0) { + if (spins >= 0) { + r ^= r << 1; r ^= r >>> 3; r ^= r << 10; // xorshift + if (r >= 0 && --spins == 0) + Thread.yield(); // yield before block + } + else if (casHash(h, h | WAITING)) { + synchronized (this) { + if (tabAt(tab, i) == this && + (hash & WAITING) == WAITING) { + try { + wait(); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } + } + else + notifyAll(); // possibly won race vs signaller + } + break; + } + } + } + } + + // Unsafe mechanics for casHash + private static final sun.misc.Unsafe UNSAFE; + private static final long hashOffset; + + static { + try { + UNSAFE = getUnsafe(); + Class k = Node.class; + hashOffset = UNSAFE.objectFieldOffset + (k.getDeclaredField("hash")); + } catch (Exception e) { + throw new Error(e); + } + } + } + + /* ---------------- TreeBins -------------- */ + + /** + * Nodes for use in TreeBins + */ + static final class TreeNode extends Node { + TreeNode parent; // red-black tree links + TreeNode left; + TreeNode right; + TreeNode prev; // needed to unlink next upon deletion + boolean red; + + TreeNode(int hash, Object key, Object val, Node next, TreeNode parent) { + super(hash, key, val, next); + this.parent = parent; + } + } + + /** + * A specialized form of red-black tree for use in bins + * whose size exceeds a threshold. + * + * TreeBins use a special form of comparison for search and + * related operations (which is the main reason we cannot use + * existing collections such as TreeMaps). TreeBins contain + * Comparable elements, but may contain others, as well as + * elements that are Comparable but not necessarily Comparable + * for the same T, so we cannot invoke compareTo among them. To + * handle this, the tree is ordered primarily by hash value, then + * by getClass().getName() order, and then by Comparator order + * among elements of the same class. On lookup at a node, if + * elements are not comparable or compare as 0, both left and + * right children may need to be searched in the case of tied hash + * values. (This corresponds to the full list search that would be + * necessary if all elements were non-Comparable and had tied + * hashes.) The red-black balancing code is updated from + * pre-jdk-collections + * (http://gee.cs.oswego.edu/dl/classes/collections/RBCell.java) + * based in turn on Cormen, Leiserson, and Rivest "Introduction to + * Algorithms" (CLR). + * + * TreeBins also maintain a separate locking discipline than + * regular bins. Because they are forwarded via special MOVED + * nodes at bin heads (which can never change once established), + * we cannot use those nodes as locks. Instead, TreeBin + * extends AbstractQueuedSynchronizer to support a simple form of + * read-write lock. For update operations and table validation, + * the exclusive form of lock behaves in the same way as bin-head + * locks. However, lookups use shared read-lock mechanics to allow + * multiple readers in the absence of writers. Additionally, + * these lookups do not ever block: While the lock is not + * available, they proceed along the slow traversal path (via + * next-pointers) until the lock becomes available or the list is + * exhausted, whichever comes first. (These cases are not fast, + * but maximize aggregate expected throughput.) The AQS mechanics + * for doing this are straightforward. The lock state is held as + * AQS getState(). Read counts are negative; the write count (1) + * is positive. There are no signalling preferences among readers + * and writers. Since we don't need to export full Lock API, we + * just override the minimal AQS methods and use them directly. + */ + static final class TreeBin extends AbstractQueuedSynchronizer { + private static final long serialVersionUID = 2249069246763182397L; + transient TreeNode root; // root of tree + transient TreeNode first; // head of next-pointer list + + /* AQS overrides */ + public final boolean isHeldExclusively() { return getState() > 0; } + public final boolean tryAcquire(int ignore) { + if (compareAndSetState(0, 1)) { + setExclusiveOwnerThread(Thread.currentThread()); + return true; + } + return false; + } + public final boolean tryRelease(int ignore) { + setExclusiveOwnerThread(null); + setState(0); + return true; + } + public final int tryAcquireShared(int ignore) { + for (int c;;) { + if ((c = getState()) > 0) + return -1; + if (compareAndSetState(c, c -1)) + return 1; + } + } + public final boolean tryReleaseShared(int ignore) { + int c; + do {} while (!compareAndSetState(c = getState(), c + 1)); + return c == -1; + } + + /** From CLR */ + private void rotateLeft(TreeNode p) { + if (p != null) { + TreeNode r = p.right, pp, rl; + if ((rl = p.right = r.left) != null) + rl.parent = p; + if ((pp = r.parent = p.parent) == null) + root = r; + else if (pp.left == p) + pp.left = r; + else + pp.right = r; + r.left = p; + p.parent = r; + } + } + + /** From CLR */ + private void rotateRight(TreeNode p) { + if (p != null) { + TreeNode l = p.left, pp, lr; + if ((lr = p.left = l.right) != null) + lr.parent = p; + if ((pp = l.parent = p.parent) == null) + root = l; + else if (pp.right == p) + pp.right = l; + else + pp.left = l; + l.right = p; + p.parent = l; + } + } + + @SuppressWarnings("unchecked") final TreeNode getTreeNode + (int h, Object k, TreeNode p) { + return getTreeNode(h, (RubyObject)k, p); + } + + /** + * Returns the TreeNode (or null if not found) for the given key + * starting at given root. + */ + @SuppressWarnings("unchecked") final TreeNode getTreeNode + (int h, RubyObject k, TreeNode p) { + RubyClass c = k.getMetaClass(); boolean kNotComparable = !k.respondsTo("<=>"); + while (p != null) { + int dir, ph; RubyObject pk; RubyClass pc; + if ((ph = p.hash) == h) { + if ((pk = (RubyObject)p.key) == k || k.equals(pk)) + return p; + if (c != (pc = (RubyClass)pk.getMetaClass()) || + kNotComparable || + (dir = rubyCompare(k, pk)) == 0) { + dir = (c == pc) ? 0 : c.getName().compareTo(pc.getName()); + if (dir == 0) { // if still stuck, need to check both sides + TreeNode r = null, pl, pr; + // try to recurse on the right + if ((pr = p.right) != null && h >= pr.hash && (r = getTreeNode(h, k, pr)) != null) + return r; + // try to continue iterating on the left side + else if ((pl = p.left) != null && h <= pl.hash) + dir = -1; + else // no matching node found + return null; + } + } + } + else + dir = (h < ph) ? -1 : 1; + p = (dir > 0) ? p.right : p.left; + } + return null; + } + + int rubyCompare(RubyObject l, RubyObject r) { + ThreadContext context = l.getMetaClass().getRuntime().getCurrentContext(); + IRubyObject result; + try { + result = l.callMethod(context, "<=>", r); + } catch (RaiseException e) { + // handle objects "lying" about responding to <=>, ie: an Array containing non-comparable keys + if (context.runtime.getNoMethodError().isInstance(e.getException())) { + return 0; + } + throw e; + } + + return result.isNil() ? 0 : RubyNumeric.num2int(result.convertToInteger()); + } + + /** + * Wrapper for getTreeNode used by CHM.get. Tries to obtain + * read-lock to call getTreeNode, but during failure to get + * lock, searches along next links. + */ + final Object getValue(int h, Object k) { + Node r = null; + int c = getState(); // Must read lock state first + for (Node e = first; e != null; e = e.next) { + if (c <= 0 && compareAndSetState(c, c - 1)) { + try { + r = getTreeNode(h, k, root); + } finally { + releaseShared(0); + } + break; + } + else if ((e.hash & HASH_BITS) == h && k.equals(e.key)) { + r = e; + break; + } + else + c = getState(); + } + return r == null ? null : r.val; + } + + @SuppressWarnings("unchecked") final TreeNode putTreeNode + (int h, Object k, Object v) { + return putTreeNode(h, (RubyObject)k, v); + } + + /** + * Finds or adds a node. + * @return null if added + */ + @SuppressWarnings("unchecked") final TreeNode putTreeNode + (int h, RubyObject k, Object v) { + RubyClass c = k.getMetaClass(); + boolean kNotComparable = !k.respondsTo("<=>"); + TreeNode pp = root, p = null; + int dir = 0; + while (pp != null) { // find existing node or leaf to insert at + int ph; RubyObject pk; RubyClass pc; + p = pp; + if ((ph = p.hash) == h) { + if ((pk = (RubyObject)p.key) == k || k.equals(pk)) + return p; + if (c != (pc = pk.getMetaClass()) || + kNotComparable || + (dir = rubyCompare(k, pk)) == 0) { + dir = (c == pc) ? 0 : c.getName().compareTo(pc.getName()); + if (dir == 0) { // if still stuck, need to check both sides + TreeNode r = null, pr; + // try to recurse on the right + if ((pr = p.right) != null && h >= pr.hash && (r = getTreeNode(h, k, pr)) != null) + return r; + else // continue descending down the left subtree + dir = -1; + } + } + } + else + dir = (h < ph) ? -1 : 1; + pp = (dir > 0) ? p.right : p.left; + } + + TreeNode f = first; + TreeNode x = first = new TreeNode(h, (Object)k, v, f, p); + if (p == null) + root = x; + else { // attach and rebalance; adapted from CLR + TreeNode xp, xpp; + if (f != null) + f.prev = x; + if (dir <= 0) + p.left = x; + else + p.right = x; + x.red = true; + while (x != null && (xp = x.parent) != null && xp.red && + (xpp = xp.parent) != null) { + TreeNode xppl = xpp.left; + if (xp == xppl) { + TreeNode y = xpp.right; + if (y != null && y.red) { + y.red = false; + xp.red = false; + xpp.red = true; + x = xpp; + } + else { + if (x == xp.right) { + rotateLeft(x = xp); + xpp = (xp = x.parent) == null ? null : xp.parent; + } + if (xp != null) { + xp.red = false; + if (xpp != null) { + xpp.red = true; + rotateRight(xpp); + } + } + } + } + else { + TreeNode y = xppl; + if (y != null && y.red) { + y.red = false; + xp.red = false; + xpp.red = true; + x = xpp; + } + else { + if (x == xp.left) { + rotateRight(x = xp); + xpp = (xp = x.parent) == null ? null : xp.parent; + } + if (xp != null) { + xp.red = false; + if (xpp != null) { + xpp.red = true; + rotateLeft(xpp); + } + } + } + } + } + TreeNode r = root; + if (r != null && r.red) + r.red = false; + } + return null; + } + + /** + * Removes the given node, that must be present before this + * call. This is messier than typical red-black deletion code + * because we cannot swap the contents of an interior node + * with a leaf successor that is pinned by "next" pointers + * that are accessible independently of lock. So instead we + * swap the tree linkages. + */ + final void deleteTreeNode(TreeNode p) { + TreeNode next = (TreeNode)p.next; // unlink traversal pointers + TreeNode pred = p.prev; + if (pred == null) + first = next; + else + pred.next = next; + if (next != null) + next.prev = pred; + TreeNode replacement; + TreeNode pl = p.left; + TreeNode pr = p.right; + if (pl != null && pr != null) { + TreeNode s = pr, sl; + while ((sl = s.left) != null) // find successor + s = sl; + boolean c = s.red; s.red = p.red; p.red = c; // swap colors + TreeNode sr = s.right; + TreeNode pp = p.parent; + if (s == pr) { // p was s's direct parent + p.parent = s; + s.right = p; + } + else { + TreeNode sp = s.parent; + if ((p.parent = sp) != null) { + if (s == sp.left) + sp.left = p; + else + sp.right = p; + } + if ((s.right = pr) != null) + pr.parent = s; + } + p.left = null; + if ((p.right = sr) != null) + sr.parent = p; + if ((s.left = pl) != null) + pl.parent = s; + if ((s.parent = pp) == null) + root = s; + else if (p == pp.left) + pp.left = s; + else + pp.right = s; + replacement = sr; + } + else + replacement = (pl != null) ? pl : pr; + TreeNode pp = p.parent; + if (replacement == null) { + if (pp == null) { + root = null; + return; + } + replacement = p; + } + else { + replacement.parent = pp; + if (pp == null) + root = replacement; + else if (p == pp.left) + pp.left = replacement; + else + pp.right = replacement; + p.left = p.right = p.parent = null; + } + if (!p.red) { // rebalance, from CLR + TreeNode x = replacement; + while (x != null) { + TreeNode xp, xpl; + if (x.red || (xp = x.parent) == null) { + x.red = false; + break; + } + if (x == (xpl = xp.left)) { + TreeNode sib = xp.right; + if (sib != null && sib.red) { + sib.red = false; + xp.red = true; + rotateLeft(xp); + sib = (xp = x.parent) == null ? null : xp.right; + } + if (sib == null) + x = xp; + else { + TreeNode sl = sib.left, sr = sib.right; + if ((sr == null || !sr.red) && + (sl == null || !sl.red)) { + sib.red = true; + x = xp; + } + else { + if (sr == null || !sr.red) { + if (sl != null) + sl.red = false; + sib.red = true; + rotateRight(sib); + sib = (xp = x.parent) == null ? null : xp.right; + } + if (sib != null) { + sib.red = (xp == null) ? false : xp.red; + if ((sr = sib.right) != null) + sr.red = false; + } + if (xp != null) { + xp.red = false; + rotateLeft(xp); + } + x = root; + } + } + } + else { // symmetric + TreeNode sib = xpl; + if (sib != null && sib.red) { + sib.red = false; + xp.red = true; + rotateRight(xp); + sib = (xp = x.parent) == null ? null : xp.left; + } + if (sib == null) + x = xp; + else { + TreeNode sl = sib.left, sr = sib.right; + if ((sl == null || !sl.red) && + (sr == null || !sr.red)) { + sib.red = true; + x = xp; + } + else { + if (sl == null || !sl.red) { + if (sr != null) + sr.red = false; + sib.red = true; + rotateLeft(sib); + sib = (xp = x.parent) == null ? null : xp.left; + } + if (sib != null) { + sib.red = (xp == null) ? false : xp.red; + if ((sl = sib.left) != null) + sl.red = false; + } + if (xp != null) { + xp.red = false; + rotateRight(xp); + } + x = root; + } + } + } + } + } + if (p == replacement && (pp = p.parent) != null) { + if (p == pp.left) // detach pointers + pp.left = null; + else if (p == pp.right) + pp.right = null; + p.parent = null; + } + } + } + + /* ---------------- Collision reduction methods -------------- */ + + /** + * Spreads higher bits to lower, and also forces top 2 bits to 0. + * Because the table uses power-of-two masking, sets of hashes + * that vary only in bits above the current mask will always + * collide. (Among known examples are sets of Float keys holding + * consecutive whole numbers in small tables.) To counter this, + * we apply a transform that spreads the impact of higher bits + * downward. There is a tradeoff between speed, utility, and + * quality of bit-spreading. Because many common sets of hashes + * are already reasonably distributed across bits (so don't benefit + * from spreading), and because we use trees to handle large sets + * of collisions in bins, we don't need excessively high quality. + */ + private static final int spread(int h) { + h ^= (h >>> 18) ^ (h >>> 12); + return (h ^ (h >>> 10)) & HASH_BITS; + } + + /** + * Replaces a list bin with a tree bin. Call only when locked. + * Fails to replace if the given key is non-comparable or table + * is, or needs, resizing. + */ + private final void replaceWithTreeBin(Node[] tab, int index, Object key) { + if ((key instanceof Comparable) && + (tab.length >= MAXIMUM_CAPACITY || counter.sum() < (long)sizeCtl)) { + TreeBin t = new TreeBin(); + for (Node e = tabAt(tab, index); e != null; e = e.next) + t.putTreeNode(e.hash & HASH_BITS, e.key, e.val); + setTabAt(tab, index, new Node(MOVED, t, null, null)); + } + } + + /* ---------------- Internal access and update methods -------------- */ + + /** Implementation for get and containsKey */ + private final Object internalGet(Object k) { + int h = spread(k.hashCode()); + retry: for (Node[] tab = table; tab != null;) { + Node e, p; Object ek, ev; int eh; // locals to read fields once + for (e = tabAt(tab, (tab.length - 1) & h); e != null; e = e.next) { + if ((eh = e.hash) == MOVED) { + if ((ek = e.key) instanceof TreeBin) // search TreeBin + return ((TreeBin)ek).getValue(h, k); + else { // restart with new table + tab = (Node[])ek; + continue retry; + } + } + else if ((eh & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + } + break; + } + return null; + } + + /** + * Implementation for the four public remove/replace methods: + * Replaces node value with v, conditional upon match of cv if + * non-null. If resulting value is null, delete. + */ + private final Object internalReplace(Object k, Object v, Object cv) { + int h = spread(k.hashCode()); + Object oldVal = null; + for (Node[] tab = table;;) { + Node f; int i, fh; Object fk; + if (tab == null || + (f = tabAt(tab, i = (tab.length - 1) & h)) == null) + break; + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + boolean deleted = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) { + Object pv = p.val; + if (cv == null || cv == pv || cv.equals(pv)) { + oldVal = pv; + if ((p.val = v) == null) { + deleted = true; + t.deleteTreeNode(p); + } + } + } + } + } finally { + t.release(0); + } + if (validated) { + if (deleted) + counter.add(-1L); + break; + } + } + else + tab = (Node[])fk; + } + else if ((fh & HASH_BITS) != h && f.next == null) // precheck + break; // rules out possible existence + else if ((fh & LOCKED) != 0) { + checkForResize(); // try resizing if can't get lock + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + boolean validated = false; + boolean deleted = false; + try { + if (tabAt(tab, i) == f) { + validated = true; + for (Node e = f, pred = null;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + ((ev = e.val) != null) && + ((ek = e.key) == k || k.equals(ek))) { + if (cv == null || cv == ev || cv.equals(ev)) { + oldVal = ev; + if ((e.val = v) == null) { + deleted = true; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + } + break; + } + pred = e; + if ((e = e.next) == null) + break; + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (validated) { + if (deleted) + counter.add(-1L); + break; + } + } + } + return oldVal; + } + + /* + * Internal versions of the six insertion methods, each a + * little more complicated than the last. All have + * the same basic structure as the first (internalPut): + * 1. If table uninitialized, create + * 2. If bin empty, try to CAS new node + * 3. If bin stale, use new table + * 4. if bin converted to TreeBin, validate and relay to TreeBin methods + * 5. Lock and validate; if valid, scan and add or update + * + * The others interweave other checks and/or alternative actions: + * * Plain put checks for and performs resize after insertion. + * * putIfAbsent prescans for mapping without lock (and fails to add + * if present), which also makes pre-emptive resize checks worthwhile. + * * computeIfAbsent extends form used in putIfAbsent with additional + * mechanics to deal with, calls, potential exceptions and null + * returns from function call. + * * compute uses the same function-call mechanics, but without + * the prescans + * * merge acts as putIfAbsent in the absent case, but invokes the + * update function if present + * * putAll attempts to pre-allocate enough table space + * and more lazily performs count updates and checks. + * + * Someday when details settle down a bit more, it might be worth + * some factoring to reduce sprawl. + */ + + /** Implementation for put */ + private final Object internalPut(Object k, Object v) { + int h = spread(k.hashCode()); + int count = 0; + for (Node[] tab = table;;) { + int i; Node f; int fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) + break; // no lock when adding to empty bin + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + Object oldVal = null; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 2; + TreeNode p = t.putTreeNode(h, k, v); + if (p != null) { + oldVal = p.val; + p.val = v; + } + } + } finally { + t.release(0); + } + if (count != 0) { + if (oldVal != null) + return oldVal; + break; + } + } + else + tab = (Node[])fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + Object oldVal = null; + try { // needed in case equals() throws + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + oldVal = ev; + e.val = v; + break; + } + Node last = e; + if ((e = e.next) == null) { + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { // unlock and signal if needed + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (oldVal != null) + return oldVal; + if (tab.length <= 64) + count = 2; + break; + } + } + } + counter.add(1L); + if (count > 1) + checkForResize(); + return null; + } + + /** Implementation for putIfAbsent */ + private final Object internalPutIfAbsent(Object k, Object v) { + int h = spread(k.hashCode()); + int count = 0; + for (Node[] tab = table;;) { + int i; Node f; int fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + Object oldVal = null; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 2; + TreeNode p = t.putTreeNode(h, k, v); + if (p != null) + oldVal = p.val; + } + } finally { + t.release(0); + } + if (count != 0) { + if (oldVal != null) + return oldVal; + break; + } + } + else + tab = (Node[])fk; + } + else if ((fh & HASH_BITS) == h && (fv = f.val) != null && + ((fk = f.key) == k || k.equals(fk))) + return fv; + else { + Node g = f.next; + if (g != null) { // at least 2 nodes -- search and maybe resize + for (Node e = g;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + if ((e = e.next) == null) { + checkForResize(); + break; + } + } + } + if (((fh = f.hash) & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (tabAt(tab, i) == f && f.casHash(fh, fh | LOCKED)) { + Object oldVal = null; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + oldVal = ev; + break; + } + Node last = e; + if ((e = e.next) == null) { + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (oldVal != null) + return oldVal; + if (tab.length <= 64) + count = 2; + break; + } + } + } + } + counter.add(1L); + if (count > 1) + checkForResize(); + return null; + } + + /** Implementation for computeIfAbsent */ + private final Object internalComputeIfAbsent(K k, + Fun mf) { + int h = spread(k.hashCode()); + Object val = null; + int count = 0; + for (Node[] tab = table;;) { + Node f; int i, fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null) { + Node node = new Node(fh = h | LOCKED, k, null, null); + if (casTabAt(tab, i, null, node)) { + count = 1; + try { + if ((val = mf.apply(k)) != null) + node.val = val; + } finally { + if (val == null) + setTabAt(tab, i, null); + if (!node.casHash(fh, h)) { + node.hash = h; + synchronized (node) { node.notifyAll(); }; + } + } + } + if (count != 0) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean added = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) + val = p.val; + else if ((val = mf.apply(k)) != null) { + added = true; + count = 2; + t.putTreeNode(h, k, val); + } + } + } finally { + t.release(0); + } + if (count != 0) { + if (!added) + return val; + break; + } + } + else + tab = (Node[])fk; + } + else if ((fh & HASH_BITS) == h && (fv = f.val) != null && + ((fk = f.key) == k || k.equals(fk))) + return fv; + else { + Node g = f.next; + if (g != null) { + for (Node e = g;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + if ((e = e.next) == null) { + checkForResize(); + break; + } + } + } + if (((fh = f.hash) & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (tabAt(tab, i) == f && f.casHash(fh, fh | LOCKED)) { + boolean added = false; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = ev; + break; + } + Node last = e; + if ((e = e.next) == null) { + if ((val = mf.apply(k)) != null) { + added = true; + last.next = new Node(h, k, val, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + } + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (!added) + return val; + if (tab.length <= 64) + count = 2; + break; + } + } + } + } + if (val != null) { + counter.add(1L); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for compute */ + @SuppressWarnings("unchecked") private final Object internalCompute + (K k, boolean onlyIfPresent, BiFun mf) { + int h = spread(k.hashCode()); + Object val = null; + int delta = 0; + int count = 0; + for (Node[] tab = table;;) { + Node f; int i, fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null) { + if (onlyIfPresent) + break; + Node node = new Node(fh = h | LOCKED, k, null, null); + if (casTabAt(tab, i, null, node)) { + try { + count = 1; + if ((val = mf.apply(k, null)) != null) { + node.val = val; + delta = 1; + } + } finally { + if (delta == 0) + setTabAt(tab, i, null); + if (!node.casHash(fh, h)) { + node.hash = h; + synchronized (node) { node.notifyAll(); }; + } + } + } + if (count != 0) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + Object pv; + if (p == null) { + if (onlyIfPresent) + break; + pv = null; + } else + pv = p.val; + if ((val = mf.apply(k, (V)pv)) != null) { + if (p != null) + p.val = val; + else { + count = 2; + delta = 1; + t.putTreeNode(h, k, val); + } + } + else if (p != null) { + delta = -1; + t.deleteTreeNode(p); + } + } + } finally { + t.release(0); + } + if (count != 0) + break; + } + else + tab = (Node[])fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f, pred = null;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = mf.apply(k, (V)ev); + if (val != null) + e.val = val; + else { + delta = -1; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + break; + } + pred = e; + if ((e = e.next) == null) { + if (!onlyIfPresent && (val = mf.apply(k, null)) != null) { + pred.next = new Node(h, k, val, null); + delta = 1; + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + } + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (tab.length <= 64) + count = 2; + break; + } + } + } + if (delta != 0) { + counter.add((long)delta); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for merge */ + @SuppressWarnings("unchecked") private final Object internalMerge + (K k, V v, BiFun mf) { + int h = spread(k.hashCode()); + Object val = null; + int delta = 0; + int count = 0; + for (Node[] tab = table;;) { + int i; Node f; int fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) { + delta = 1; + val = v; + break; + } + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + val = (p == null) ? v : mf.apply((V)p.val, v); + if (val != null) { + if (p != null) + p.val = val; + else { + count = 2; + delta = 1; + t.putTreeNode(h, k, val); + } + } + else if (p != null) { + delta = -1; + t.deleteTreeNode(p); + } + } + } finally { + t.release(0); + } + if (count != 0) + break; + } + else + tab = (Node[])fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f, pred = null;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = mf.apply((V)ev, v); + if (val != null) + e.val = val; + else { + delta = -1; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + break; + } + pred = e; + if ((e = e.next) == null) { + val = v; + pred.next = new Node(h, k, val, null); + delta = 1; + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (tab.length <= 64) + count = 2; + break; + } + } + } + if (delta != 0) { + counter.add((long)delta); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for putAll */ + private final void internalPutAll(Map m) { + tryPresize(m.size()); + long delta = 0L; // number of uncommitted additions + boolean npe = false; // to throw exception on exit for nulls + try { // to clean up counts on other exceptions + for (Map.Entry entry : m.entrySet()) { + Object k, v; + if (entry == null || (k = entry.getKey()) == null || + (v = entry.getValue()) == null) { + npe = true; + break; + } + int h = spread(k.hashCode()); + for (Node[] tab = table;;) { + int i; Node f; int fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length - 1) & h)) == null){ + if (casTabAt(tab, i, null, new Node(h, k, v, null))) { + ++delta; + break; + } + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) + p.val = v; + else { + t.putTreeNode(h, k, v); + ++delta; + } + } + } finally { + t.release(0); + } + if (validated) + break; + } + else + tab = (Node[])fk; + } + else if ((fh & LOCKED) != 0) { + counter.add(delta); + delta = 0L; + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + int count = 0; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + e.val = v; + break; + } + Node last = e; + if ((e = e.next) == null) { + ++delta; + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (count > 1) { + counter.add(delta); + delta = 0L; + checkForResize(); + } + break; + } + } + } + } + } finally { + if (delta != 0) + counter.add(delta); + } + if (npe) + throw new NullPointerException(); + } + + /* ---------------- Table Initialization and Resizing -------------- */ + + /** + * Returns a power of two table size for the given desired capacity. + * See Hackers Delight, sec 3.2 + */ + private static final int tableSizeFor(int c) { + int n = c - 1; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; + } + + /** + * Initializes table, using the size recorded in sizeCtl. + */ + private final Node[] initTable() { + Node[] tab; int sc; + while ((tab = table) == null) { + if ((sc = sizeCtl) < 0) + Thread.yield(); // lost initialization race; just spin + else if (UNSAFE.compareAndSwapInt(this, sizeCtlOffset, sc, -1)) { + try { + if ((tab = table) == null) { + int n = (sc > 0) ? sc : DEFAULT_CAPACITY; + tab = table = new Node[n]; + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + break; + } + } + return tab; + } + + /** + * If table is too small and not already resizing, creates next + * table and transfers bins. Rechecks occupancy after a transfer + * to see if another resize is already needed because resizings + * are lagging additions. + */ + private final void checkForResize() { + Node[] tab; int n, sc; + while ((tab = table) != null && + (n = tab.length) < MAXIMUM_CAPACITY && + (sc = sizeCtl) >= 0 && counter.sum() >= (long)sc && + UNSAFE.compareAndSwapInt(this, sizeCtlOffset, sc, -1)) { + try { + if (tab == table) { + table = rebuild(tab); + sc = (n << 1) - (n >>> 1); + } + } finally { + sizeCtl = sc; + } + } + } + + /** + * Tries to presize table to accommodate the given number of elements. + * + * @param size number of elements (doesn't need to be perfectly accurate) + */ + private final void tryPresize(int size) { + int c = (size >= (MAXIMUM_CAPACITY >>> 1)) ? MAXIMUM_CAPACITY : + tableSizeFor(size + (size >>> 1) + 1); + int sc; + while ((sc = sizeCtl) >= 0) { + Node[] tab = table; int n; + if (tab == null || (n = tab.length) == 0) { + n = (sc > c) ? sc : c; + if (UNSAFE.compareAndSwapInt(this, sizeCtlOffset, sc, -1)) { + try { + if (table == tab) { + table = new Node[n]; + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + } + } + else if (c <= sc || n >= MAXIMUM_CAPACITY) + break; + else if (UNSAFE.compareAndSwapInt(this, sizeCtlOffset, sc, -1)) { + try { + if (table == tab) { + table = rebuild(tab); + sc = (n << 1) - (n >>> 1); + } + } finally { + sizeCtl = sc; + } + } + } + } + + /* + * Moves and/or copies the nodes in each bin to new table. See + * above for explanation. + * + * @return the new table + */ + private static final Node[] rebuild(Node[] tab) { + int n = tab.length; + Node[] nextTab = new Node[n << 1]; + Node fwd = new Node(MOVED, nextTab, null, null); + int[] buffer = null; // holds bins to revisit; null until needed + Node rev = null; // reverse forwarder; null until needed + int nbuffered = 0; // the number of bins in buffer list + int bufferIndex = 0; // buffer index of current buffered bin + int bin = n - 1; // current non-buffered bin or -1 if none + + for (int i = bin;;) { // start upwards sweep + int fh; Node f; + if ((f = tabAt(tab, i)) == null) { + if (bin >= 0) { // Unbuffered; no lock needed (or available) + if (!casTabAt(tab, i, f, fwd)) + continue; + } + else { // transiently use a locked forwarding node + Node g = new Node(MOVED|LOCKED, nextTab, null, null); + if (!casTabAt(tab, i, f, g)) + continue; + setTabAt(nextTab, i, null); + setTabAt(nextTab, i + n, null); + setTabAt(tab, i, fwd); + if (!g.casHash(MOVED|LOCKED, MOVED)) { + g.hash = MOVED; + synchronized (g) { g.notifyAll(); } + } + } + } + else if ((fh = f.hash) == MOVED) { + Object fk = f.key; + if (fk instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + splitTreeBin(nextTab, i, t); + setTabAt(tab, i, fwd); + } + } finally { + t.release(0); + } + if (!validated) + continue; + } + } + else if ((fh & LOCKED) == 0 && f.casHash(fh, fh|LOCKED)) { + boolean validated = false; + try { // split to lo and hi lists; copying as needed + if (tabAt(tab, i) == f) { + validated = true; + splitBin(nextTab, i, f); + setTabAt(tab, i, fwd); + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (!validated) + continue; + } + else { + if (buffer == null) // initialize buffer for revisits + buffer = new int[TRANSFER_BUFFER_SIZE]; + if (bin < 0 && bufferIndex > 0) { + int j = buffer[--bufferIndex]; + buffer[bufferIndex] = i; + i = j; // swap with another bin + continue; + } + if (bin < 0 || nbuffered >= TRANSFER_BUFFER_SIZE) { + f.tryAwaitLock(tab, i); + continue; // no other options -- block + } + if (rev == null) // initialize reverse-forwarder + rev = new Node(MOVED, tab, null, null); + if (tabAt(tab, i) != f || (f.hash & LOCKED) == 0) + continue; // recheck before adding to list + buffer[nbuffered++] = i; + setTabAt(nextTab, i, rev); // install place-holders + setTabAt(nextTab, i + n, rev); + } + + if (bin > 0) + i = --bin; + else if (buffer != null && nbuffered > 0) { + bin = -1; + i = buffer[bufferIndex = --nbuffered]; + } + else + return nextTab; + } + } + + /** + * Splits a normal bin with list headed by e into lo and hi parts; + * installs in given table. + */ + private static void splitBin(Node[] nextTab, int i, Node e) { + int bit = nextTab.length >>> 1; // bit to split on + int runBit = e.hash & bit; + Node lastRun = e, lo = null, hi = null; + for (Node p = e.next; p != null; p = p.next) { + int b = p.hash & bit; + if (b != runBit) { + runBit = b; + lastRun = p; + } + } + if (runBit == 0) + lo = lastRun; + else + hi = lastRun; + for (Node p = e; p != lastRun; p = p.next) { + int ph = p.hash & HASH_BITS; + Object pk = p.key, pv = p.val; + if ((ph & bit) == 0) + lo = new Node(ph, pk, pv, lo); + else + hi = new Node(ph, pk, pv, hi); + } + setTabAt(nextTab, i, lo); + setTabAt(nextTab, i + bit, hi); + } + + /** + * Splits a tree bin into lo and hi parts; installs in given table. + */ + private static void splitTreeBin(Node[] nextTab, int i, TreeBin t) { + int bit = nextTab.length >>> 1; + TreeBin lt = new TreeBin(); + TreeBin ht = new TreeBin(); + int lc = 0, hc = 0; + for (Node e = t.first; e != null; e = e.next) { + int h = e.hash & HASH_BITS; + Object k = e.key, v = e.val; + if ((h & bit) == 0) { + ++lc; + lt.putTreeNode(h, k, v); + } + else { + ++hc; + ht.putTreeNode(h, k, v); + } + } + Node ln, hn; // throw away trees if too small + if (lc <= (TREE_THRESHOLD >>> 1)) { + ln = null; + for (Node p = lt.first; p != null; p = p.next) + ln = new Node(p.hash, p.key, p.val, ln); + } + else + ln = new Node(MOVED, lt, null, null); + setTabAt(nextTab, i, ln); + if (hc <= (TREE_THRESHOLD >>> 1)) { + hn = null; + for (Node p = ht.first; p != null; p = p.next) + hn = new Node(p.hash, p.key, p.val, hn); + } + else + hn = new Node(MOVED, ht, null, null); + setTabAt(nextTab, i + bit, hn); + } + + /** + * Implementation for clear. Steps through each bin, removing all + * nodes. + */ + private final void internalClear() { + long delta = 0L; // negative number of deletions + int i = 0; + Node[] tab = table; + while (tab != null && i < tab.length) { + int fh; Object fk; + Node f = tabAt(tab, i); + if (f == null) + ++i; + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + for (Node p = t.first; p != null; p = p.next) { + if (p.val != null) { // (currently always true) + p.val = null; + --delta; + } + } + t.first = null; + t.root = null; + ++i; + } + } finally { + t.release(0); + } + } + else + tab = (Node[])fk; + } + else if ((fh & LOCKED) != 0) { + counter.add(delta); // opportunistically update count + delta = 0L; + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + for (Node e = f; e != null; e = e.next) { + if (e.val != null) { // (currently always true) + e.val = null; + --delta; + } + } + setTabAt(tab, i, null); + ++i; + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + } + } + if (delta != 0) + counter.add(delta); + } + + /* ----------------Table Traversal -------------- */ + + /** + * Encapsulates traversal for methods such as containsValue; also + * serves as a base class for other iterators and bulk tasks. + * + * At each step, the iterator snapshots the key ("nextKey") and + * value ("nextVal") of a valid node (i.e., one that, at point of + * snapshot, has a non-null user value). Because val fields can + * change (including to null, indicating deletion), field nextVal + * might not be accurate at point of use, but still maintains the + * weak consistency property of holding a value that was once + * valid. To support iterator.remove, the nextKey field is not + * updated (nulled out) when the iterator cannot advance. + * + * Internal traversals directly access these fields, as in: + * {@code while (it.advance() != null) { process(it.nextKey); }} + * + * Exported iterators must track whether the iterator has advanced + * (in hasNext vs next) (by setting/checking/nulling field + * nextVal), and then extract key, value, or key-value pairs as + * return values of next(). + * + * The iterator visits once each still-valid node that was + * reachable upon iterator construction. It might miss some that + * were added to a bin after the bin was visited, which is OK wrt + * consistency guarantees. Maintaining this property in the face + * of possible ongoing resizes requires a fair amount of + * bookkeeping state that is difficult to optimize away amidst + * volatile accesses. Even so, traversal maintains reasonable + * throughput. + * + * Normally, iteration proceeds bin-by-bin traversing lists. + * However, if the table has been resized, then all future steps + * must traverse both the bin at the current index as well as at + * (index + baseSize); and so on for further resizings. To + * paranoically cope with potential sharing by users of iterators + * across threads, iteration terminates if a bounds checks fails + * for a table read. + * + * This class extends ForkJoinTask to streamline parallel + * iteration in bulk operations (see BulkTask). This adds only an + * int of space overhead, which is close enough to negligible in + * cases where it is not needed to not worry about it. Because + * ForkJoinTask is Serializable, but iterators need not be, we + * need to add warning suppressions. + */ + @SuppressWarnings("serial") static class Traverser { + final ConcurrentHashMapV8 map; + Node next; // the next entry to use + K nextKey; // cached key field of next + V nextVal; // cached val field of next + Node[] tab; // current table; updated if resized + int index; // index of bin to use next + int baseIndex; // current index of initial table + int baseLimit; // index bound for initial table + int baseSize; // initial table size + + /** Creates iterator for all entries in the table. */ + Traverser(ConcurrentHashMapV8 map) { + this.map = map; + } + + /** Creates iterator for split() methods */ + Traverser(Traverser it) { + ConcurrentHashMapV8 m; Node[] t; + if ((m = this.map = it.map) == null) + t = null; + else if ((t = it.tab) == null && // force parent tab initialization + (t = it.tab = m.table) != null) + it.baseLimit = it.baseSize = t.length; + this.tab = t; + this.baseSize = it.baseSize; + it.baseLimit = this.index = this.baseIndex = + ((this.baseLimit = it.baseLimit) + it.baseIndex + 1) >>> 1; + } + + /** + * Advances next; returns nextVal or null if terminated. + * See above for explanation. + */ + final V advance() { + Node e = next; + V ev = null; + outer: do { + if (e != null) // advance past used/skipped node + e = e.next; + while (e == null) { // get to next non-null bin + ConcurrentHashMapV8 m; + Node[] t; int b, i, n; Object ek; // checks must use locals + if ((t = tab) != null) + n = t.length; + else if ((m = map) != null && (t = tab = m.table) != null) + n = baseLimit = baseSize = t.length; + else + break outer; + if ((b = baseIndex) >= baseLimit || + (i = index) < 0 || i >= n) + break outer; + if ((e = tabAt(t, i)) != null && e.hash == MOVED) { + if ((ek = e.key) instanceof TreeBin) + e = ((TreeBin)ek).first; + else { + tab = (Node[])ek; + continue; // restarts due to null val + } + } // visit upper slots if present + index = (i += baseSize) < n ? i : (baseIndex = b + 1); + } + nextKey = (K) e.key; + } while ((ev = (V) e.val) == null); // skip deleted or special nodes + next = e; + return nextVal = ev; + } + + public final void remove() { + Object k = nextKey; + if (k == null && (advance() == null || (k = nextKey) == null)) + throw new IllegalStateException(); + map.internalReplace(k, null, null); + } + + public final boolean hasNext() { + return nextVal != null || advance() != null; + } + + public final boolean hasMoreElements() { return hasNext(); } + public final void setRawResult(Object x) { } + public R getRawResult() { return null; } + public boolean exec() { return true; } + } + + /* ---------------- Public operations -------------- */ + + /** + * Creates a new, empty map with the default initial table size (16). + */ + public ConcurrentHashMapV8() { + this.counter = new LongAdder(); + } + + /** + * Creates a new, empty map with an initial table size + * accommodating the specified number of elements without the need + * to dynamically resize. + * + * @param initialCapacity The implementation performs internal + * sizing to accommodate this many elements. + * @throws IllegalArgumentException if the initial capacity of + * elements is negative + */ + public ConcurrentHashMapV8(int initialCapacity) { + if (initialCapacity < 0) + throw new IllegalArgumentException(); + int cap = ((initialCapacity >= (MAXIMUM_CAPACITY >>> 1)) ? + MAXIMUM_CAPACITY : + tableSizeFor(initialCapacity + (initialCapacity >>> 1) + 1)); + this.counter = new LongAdder(); + this.sizeCtl = cap; + } + + /** + * Creates a new map with the same mappings as the given map. + * + * @param m the map + */ + public ConcurrentHashMapV8(Map m) { + this.counter = new LongAdder(); + this.sizeCtl = DEFAULT_CAPACITY; + internalPutAll(m); + } + + /** + * Creates a new, empty map with an initial table size based on + * the given number of elements ({@code initialCapacity}) and + * initial table density ({@code loadFactor}). + * + * @param initialCapacity the initial capacity. The implementation + * performs internal sizing to accommodate this many elements, + * given the specified load factor. + * @param loadFactor the load factor (table density) for + * establishing the initial table size + * @throws IllegalArgumentException if the initial capacity of + * elements is negative or the load factor is nonpositive + * + * @since 1.6 + */ + public ConcurrentHashMapV8(int initialCapacity, float loadFactor) { + this(initialCapacity, loadFactor, 1); + } + + /** + * Creates a new, empty map with an initial table size based on + * the given number of elements ({@code initialCapacity}), table + * density ({@code loadFactor}), and number of concurrently + * updating threads ({@code concurrencyLevel}). + * + * @param initialCapacity the initial capacity. The implementation + * performs internal sizing to accommodate this many elements, + * given the specified load factor. + * @param loadFactor the load factor (table density) for + * establishing the initial table size + * @param concurrencyLevel the estimated number of concurrently + * updating threads. The implementation may use this value as + * a sizing hint. + * @throws IllegalArgumentException if the initial capacity is + * negative or the load factor or concurrencyLevel are + * nonpositive + */ + public ConcurrentHashMapV8(int initialCapacity, + float loadFactor, int concurrencyLevel) { + if (!(loadFactor > 0.0f) || initialCapacity < 0 || concurrencyLevel <= 0) + throw new IllegalArgumentException(); + if (initialCapacity < concurrencyLevel) // Use at least as many bins + initialCapacity = concurrencyLevel; // as estimated threads + long size = (long)(1.0 + (long)initialCapacity / loadFactor); + int cap = (size >= (long)MAXIMUM_CAPACITY) ? + MAXIMUM_CAPACITY : tableSizeFor((int)size); + this.counter = new LongAdder(); + this.sizeCtl = cap; + } + + /** + * Creates a new {@link Set} backed by a ConcurrentHashMapV8 + * from the given type to {@code Boolean.TRUE}. + * + * @return the new set + */ + public static KeySetView newKeySet() { + return new KeySetView(new ConcurrentHashMapV8(), + Boolean.TRUE); + } + + /** + * Creates a new {@link Set} backed by a ConcurrentHashMapV8 + * from the given type to {@code Boolean.TRUE}. + * + * @param initialCapacity The implementation performs internal + * sizing to accommodate this many elements. + * @throws IllegalArgumentException if the initial capacity of + * elements is negative + * @return the new set + */ + public static KeySetView newKeySet(int initialCapacity) { + return new KeySetView(new ConcurrentHashMapV8(initialCapacity), + Boolean.TRUE); + } + + /** + * {@inheritDoc} + */ + public boolean isEmpty() { + return counter.sum() <= 0L; // ignore transient negative values + } + + /** + * {@inheritDoc} + */ + public int size() { + long n = counter.sum(); + return ((n < 0L) ? 0 : + (n > (long)Integer.MAX_VALUE) ? Integer.MAX_VALUE : + (int)n); + } + + /** + * Returns the number of mappings. This method should be used + * instead of {@link #size} because a ConcurrentHashMapV8 may + * contain more mappings than can be represented as an int. The + * value returned is a snapshot; the actual count may differ if + * there are ongoing concurrent insertions or removals. + * + * @return the number of mappings + */ + public long mappingCount() { + long n = counter.sum(); + return (n < 0L) ? 0L : n; // ignore transient negative values + } + + /** + * Returns the value to which the specified key is mapped, + * or {@code null} if this map contains no mapping for the key. + * + *

              More formally, if this map contains a mapping from a key + * {@code k} to a value {@code v} such that {@code key.equals(k)}, + * then this method returns {@code v}; otherwise it returns + * {@code null}. (There can be at most one such mapping.) + * + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V get(Object key) { + if (key == null) + throw new NullPointerException(); + return (V)internalGet(key); + } + + /** + * Returns the value to which the specified key is mapped, + * or the given defaultValue if this map contains no mapping for the key. + * + * @param key the key + * @param defaultValue the value to return if this map contains + * no mapping for the given key + * @return the mapping for the key, if present; else the defaultValue + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V getValueOrDefault(Object key, V defaultValue) { + if (key == null) + throw new NullPointerException(); + V v = (V) internalGet(key); + return v == null ? defaultValue : v; + } + + /** + * Tests if the specified object is a key in this table. + * + * @param key possible key + * @return {@code true} if and only if the specified object + * is a key in this table, as determined by the + * {@code equals} method; {@code false} otherwise + * @throws NullPointerException if the specified key is null + */ + public boolean containsKey(Object key) { + if (key == null) + throw new NullPointerException(); + return internalGet(key) != null; + } + + /** + * Returns {@code true} if this map maps one or more keys to the + * specified value. Note: This method may require a full traversal + * of the map, and is much slower than method {@code containsKey}. + * + * @param value value whose presence in this map is to be tested + * @return {@code true} if this map maps one or more keys to the + * specified value + * @throws NullPointerException if the specified value is null + */ + public boolean containsValue(Object value) { + if (value == null) + throw new NullPointerException(); + Object v; + Traverser it = new Traverser(this); + while ((v = it.advance()) != null) { + if (v == value || value.equals(v)) + return true; + } + return false; + } + + public K findKey(Object value) { + if (value == null) + throw new NullPointerException(); + Object v; + Traverser it = new Traverser(this); + while ((v = it.advance()) != null) { + if (v == value || value.equals(v)) + return it.nextKey; + } + return null; + } + + /** + * Legacy method testing if some key maps into the specified value + * in this table. This method is identical in functionality to + * {@link #containsValue}, and exists solely to ensure + * full compatibility with class {@link java.util.Hashtable}, + * which supported this method prior to introduction of the + * Java Collections framework. + * + * @param value a value to search for + * @return {@code true} if and only if some key maps to the + * {@code value} argument in this table as + * determined by the {@code equals} method; + * {@code false} otherwise + * @throws NullPointerException if the specified value is null + */ + public boolean contains(Object value) { + return containsValue(value); + } + + /** + * Maps the specified key to the specified value in this table. + * Neither the key nor the value can be null. + * + *

              The value can be retrieved by calling the {@code get} method + * with a key that is equal to the original key. + * + * @param key key with which the specified value is to be associated + * @param value value to be associated with the specified key + * @return the previous value associated with {@code key}, or + * {@code null} if there was no mapping for {@code key} + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V put(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalPut(key, value); + } + + /** + * {@inheritDoc} + * + * @return the previous value associated with the specified key, + * or {@code null} if there was no mapping for the key + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V putIfAbsent(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalPutIfAbsent(key, value); + } + + /** + * Copies all of the mappings from the specified map to this one. + * These mappings replace any mappings that this map had for any of the + * keys currently in the specified map. + * + * @param m mappings to be stored in this map + */ + public void putAll(Map m) { + internalPutAll(m); + } + + /** + * If the specified key is not already associated with a value, + * computes its value using the given mappingFunction and enters + * it into the map unless null. This is equivalent to + *

               {@code
              +     * if (map.containsKey(key))
              +     *   return map.get(key);
              +     * value = mappingFunction.apply(key);
              +     * if (value != null)
              +     *   map.put(key, value);
              +     * return value;}
              + * + * except that the action is performed atomically. If the + * function returns {@code null} no mapping is recorded. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and no mapping is recorded. Some + * attempted update operations on this map by other threads may be + * blocked while computation is in progress, so the computation + * should be short and simple, and must not attempt to update any + * other mappings of this Map. The most appropriate usage is to + * construct a new object serving as an initial mapped value, or + * memoized result, as in: + * + *
               {@code
              +     * map.computeIfAbsent(key, new Fun() {
              +     *   public V map(K k) { return new Value(f(k)); }});}
              + * + * @param key key with which the specified value is to be associated + * @param mappingFunction the function to compute a value + * @return the current (existing or computed) value associated with + * the specified key, or null if the computed value is null + * @throws NullPointerException if the specified key or mappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the mappingFunction does so, + * in which case the mapping is left unestablished + */ + @SuppressWarnings("unchecked") public V computeIfAbsent + (K key, Fun mappingFunction) { + if (key == null || mappingFunction == null) + throw new NullPointerException(); + return (V)internalComputeIfAbsent(key, mappingFunction); + } + + /** + * If the given key is present, computes a new mapping value given a key and + * its current mapped value. This is equivalent to + *
               {@code
              +     *   if (map.containsKey(key)) {
              +     *     value = remappingFunction.apply(key, map.get(key));
              +     *     if (value != null)
              +     *       map.put(key, value);
              +     *     else
              +     *       map.remove(key);
              +     *   }
              +     * }
              + * + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. For example, + * to either create or append new messages to a value mapping: + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @return the new value associated with the specified key, or null if none + * @throws NullPointerException if the specified key or remappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the remappingFunction does so, + * in which case the mapping is unchanged + */ + @SuppressWarnings("unchecked") public V computeIfPresent + (K key, BiFun remappingFunction) { + if (key == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalCompute(key, true, remappingFunction); + } + + /** + * Computes a new mapping value given a key and + * its current mapped value (or {@code null} if there is no current + * mapping). This is equivalent to + *
               {@code
              +     *   value = remappingFunction.apply(key, map.get(key));
              +     *   if (value != null)
              +     *     map.put(key, value);
              +     *   else
              +     *     map.remove(key);
              +     * }
              + * + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. For example, + * to either create or append new messages to a value mapping: + * + *
               {@code
              +     * Map map = ...;
              +     * final String msg = ...;
              +     * map.compute(key, new BiFun() {
              +     *   public String apply(Key k, String v) {
              +     *    return (v == null) ? msg : v + msg;});}}
              + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @return the new value associated with the specified key, or null if none + * @throws NullPointerException if the specified key or remappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the remappingFunction does so, + * in which case the mapping is unchanged + */ + @SuppressWarnings("unchecked") public V compute + (K key, BiFun remappingFunction) { + if (key == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalCompute(key, false, remappingFunction); + } + + /** + * If the specified key is not already associated + * with a value, associate it with the given value. + * Otherwise, replace the value with the results of + * the given remapping function. This is equivalent to: + *
               {@code
              +     *   if (!map.containsKey(key))
              +     *     map.put(value);
              +     *   else {
              +     *     newValue = remappingFunction.apply(map.get(key), value);
              +     *     if (value != null)
              +     *       map.put(key, value);
              +     *     else
              +     *       map.remove(key);
              +     *   }
              +     * }
              + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. + */ + @SuppressWarnings("unchecked") public V merge + (K key, V value, BiFun remappingFunction) { + if (key == null || value == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalMerge(key, value, remappingFunction); + } + + /** + * Removes the key (and its corresponding value) from this map. + * This method does nothing if the key is not in the map. + * + * @param key the key that needs to be removed + * @return the previous value associated with {@code key}, or + * {@code null} if there was no mapping for {@code key} + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V remove(Object key) { + if (key == null) + throw new NullPointerException(); + return (V)internalReplace(key, null, null); + } + + /** + * {@inheritDoc} + * + * @throws NullPointerException if the specified key is null + */ + public boolean remove(Object key, Object value) { + if (key == null) + throw new NullPointerException(); + if (value == null) + return false; + return internalReplace(key, null, value) != null; + } + + /** + * {@inheritDoc} + * + * @throws NullPointerException if any of the arguments are null + */ + public boolean replace(K key, V oldValue, V newValue) { + if (key == null || oldValue == null || newValue == null) + throw new NullPointerException(); + return internalReplace(key, newValue, oldValue) != null; + } + + /** + * {@inheritDoc} + * + * @return the previous value associated with the specified key, + * or {@code null} if there was no mapping for the key + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V replace(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalReplace(key, value, null); + } + + /** + * Removes all of the mappings from this map. + */ + public void clear() { + internalClear(); + } + + /** + * Returns a {@link Set} view of the keys contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. + * + * @return the set view + */ + public KeySetView keySet() { + KeySetView ks = keySet; + return (ks != null) ? ks : (keySet = new KeySetView(this, null)); + } + + /** + * Returns a {@link Set} view of the keys in this map, using the + * given common mapped value for any additions (i.e., {@link + * Collection#add} and {@link Collection#addAll}). This is of + * course only appropriate if it is acceptable to use the same + * value for all additions from this view. + * + * @param mappedValue the mapped value to use for any + * additions. + * @return the set view + * @throws NullPointerException if the mappedValue is null + */ + public KeySetView keySet(V mappedValue) { + if (mappedValue == null) + throw new NullPointerException(); + return new KeySetView(this, mappedValue); + } + + /** + * Returns a {@link Collection} view of the values contained in this map. + * The collection is backed by the map, so changes to the map are + * reflected in the collection, and vice-versa. + */ + public ValuesView values() { + ValuesView vs = values; + return (vs != null) ? vs : (values = new ValuesView(this)); + } + + /** + * Returns a {@link Set} view of the mappings contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. The set supports element + * removal, which removes the corresponding mapping from the map, + * via the {@code Iterator.remove}, {@code Set.remove}, + * {@code removeAll}, {@code retainAll}, and {@code clear} + * operations. It does not support the {@code add} or + * {@code addAll} operations. + * + *

              The view's {@code iterator} is a "weakly consistent" iterator + * that will never throw {@link ConcurrentModificationException}, + * and guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not guaranteed to) + * reflect any modifications subsequent to construction. + */ + public Set> entrySet() { + EntrySetView es = entrySet; + return (es != null) ? es : (entrySet = new EntrySetView(this)); + } + + /** + * Returns an enumeration of the keys in this table. + * + * @return an enumeration of the keys in this table + * @see #keySet() + */ + public Enumeration keys() { + return new KeyIterator(this); + } + + /** + * Returns an enumeration of the values in this table. + * + * @return an enumeration of the values in this table + * @see #values() + */ + public Enumeration elements() { + return new ValueIterator(this); + } + + /** + * Returns a partitionable iterator of the keys in this map. + * + * @return a partitionable iterator of the keys in this map + */ + public Spliterator keySpliterator() { + return new KeyIterator(this); + } + + /** + * Returns a partitionable iterator of the values in this map. + * + * @return a partitionable iterator of the values in this map + */ + public Spliterator valueSpliterator() { + return new ValueIterator(this); + } + + /** + * Returns a partitionable iterator of the entries in this map. + * + * @return a partitionable iterator of the entries in this map + */ + public Spliterator> entrySpliterator() { + return new EntryIterator(this); + } + + /** + * Returns the hash code value for this {@link Map}, i.e., + * the sum of, for each key-value pair in the map, + * {@code key.hashCode() ^ value.hashCode()}. + * + * @return the hash code value for this map + */ + public int hashCode() { + int h = 0; + Traverser it = new Traverser(this); + Object v; + while ((v = it.advance()) != null) { + h += it.nextKey.hashCode() ^ v.hashCode(); + } + return h; + } + + /** + * Returns a string representation of this map. The string + * representation consists of a list of key-value mappings (in no + * particular order) enclosed in braces ("{@code {}}"). Adjacent + * mappings are separated by the characters {@code ", "} (comma + * and space). Each key-value mapping is rendered as the key + * followed by an equals sign ("{@code =}") followed by the + * associated value. + * + * @return a string representation of this map + */ + public String toString() { + Traverser it = new Traverser(this); + StringBuilder sb = new StringBuilder(); + sb.append('{'); + Object v; + if ((v = it.advance()) != null) { + for (;;) { + Object k = it.nextKey; + sb.append(k == this ? "(this Map)" : k); + sb.append('='); + sb.append(v == this ? "(this Map)" : v); + if ((v = it.advance()) == null) + break; + sb.append(',').append(' '); + } + } + return sb.append('}').toString(); + } + + /** + * Compares the specified object with this map for equality. + * Returns {@code true} if the given object is a map with the same + * mappings as this map. This operation may return misleading + * results if either map is concurrently modified during execution + * of this method. + * + * @param o object to be compared for equality with this map + * @return {@code true} if the specified object is equal to this map + */ + public boolean equals(Object o) { + if (o != this) { + if (!(o instanceof Map)) + return false; + Map m = (Map) o; + Traverser it = new Traverser(this); + Object val; + while ((val = it.advance()) != null) { + Object v = m.get(it.nextKey); + if (v == null || (v != val && !v.equals(val))) + return false; + } + for (Map.Entry e : m.entrySet()) { + Object mk, mv, v; + if ((mk = e.getKey()) == null || + (mv = e.getValue()) == null || + (v = internalGet(mk)) == null || + (mv != v && !mv.equals(v))) + return false; + } + } + return true; + } + + /* ----------------Iterators -------------- */ + + @SuppressWarnings("serial") static final class KeyIterator extends Traverser + implements Spliterator, Enumeration { + KeyIterator(ConcurrentHashMapV8 map) { super(map); } + KeyIterator(Traverser it) { + super(it); + } + public KeyIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new KeyIterator(this); + } + @SuppressWarnings("unchecked") public final K next() { + if (nextVal == null && advance() == null) + throw new NoSuchElementException(); + Object k = nextKey; + nextVal = null; + return (K) k; + } + + public final K nextElement() { return next(); } + } + + @SuppressWarnings("serial") static final class ValueIterator extends Traverser + implements Spliterator, Enumeration { + ValueIterator(ConcurrentHashMapV8 map) { super(map); } + ValueIterator(Traverser it) { + super(it); + } + public ValueIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new ValueIterator(this); + } + + @SuppressWarnings("unchecked") public final V next() { + Object v; + if ((v = nextVal) == null && (v = advance()) == null) + throw new NoSuchElementException(); + nextVal = null; + return (V) v; + } + + public final V nextElement() { return next(); } + } + + @SuppressWarnings("serial") static final class EntryIterator extends Traverser + implements Spliterator> { + EntryIterator(ConcurrentHashMapV8 map) { super(map); } + EntryIterator(Traverser it) { + super(it); + } + public EntryIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new EntryIterator(this); + } + + @SuppressWarnings("unchecked") public final Map.Entry next() { + Object v; + if ((v = nextVal) == null && (v = advance()) == null) + throw new NoSuchElementException(); + Object k = nextKey; + nextVal = null; + return new MapEntry((K)k, (V)v, map); + } + } + + /** + * Exported Entry for iterators + */ + static final class MapEntry implements Map.Entry { + final K key; // non-null + V val; // non-null + final ConcurrentHashMapV8 map; + MapEntry(K key, V val, ConcurrentHashMapV8 map) { + this.key = key; + this.val = val; + this.map = map; + } + public final K getKey() { return key; } + public final V getValue() { return val; } + public final int hashCode() { return key.hashCode() ^ val.hashCode(); } + public final String toString(){ return key + "=" + val; } + + public final boolean equals(Object o) { + Object k, v; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (v = e.getValue()) != null && + (k == key || k.equals(key)) && + (v == val || v.equals(val))); + } + + /** + * Sets our entry's value and writes through to the map. The + * value to return is somewhat arbitrary here. Since we do not + * necessarily track asynchronous changes, the most recent + * "previous" value could be different from what we return (or + * could even have been removed in which case the put will + * re-establish). We do not and cannot guarantee more. + */ + public final V setValue(V value) { + if (value == null) throw new NullPointerException(); + V v = val; + val = value; + map.put(key, value); + return v; + } + } + + /* ---------------- Serialization Support -------------- */ + + /** + * Stripped-down version of helper class used in previous version, + * declared for the sake of serialization compatibility + */ + static class Segment implements Serializable { + private static final long serialVersionUID = 2249069246763182397L; + final float loadFactor; + Segment(float lf) { this.loadFactor = lf; } + } + + /** + * Saves the state of the {@code ConcurrentHashMapV8} instance to a + * stream (i.e., serializes it). + * @param s the stream + * @serialData + * the key (Object) and value (Object) + * for each key-value mapping, followed by a null pair. + * The key-value mappings are emitted in no particular order. + */ + @SuppressWarnings("unchecked") private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { + if (segments == null) { // for serialization compatibility + segments = (Segment[]) + new Segment[DEFAULT_CONCURRENCY_LEVEL]; + for (int i = 0; i < segments.length; ++i) + segments[i] = new Segment(LOAD_FACTOR); + } + s.defaultWriteObject(); + Traverser it = new Traverser(this); + Object v; + while ((v = it.advance()) != null) { + s.writeObject(it.nextKey); + s.writeObject(v); + } + s.writeObject(null); + s.writeObject(null); + segments = null; // throw away + } + + /** + * Reconstitutes the instance from a stream (that is, deserializes it). + * @param s the stream + */ + @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + s.defaultReadObject(); + this.segments = null; // unneeded + // initialize transient final field + UNSAFE.putObjectVolatile(this, counterOffset, new LongAdder()); + + // Create all nodes, then place in table once size is known + long size = 0L; + Node p = null; + for (;;) { + K k = (K) s.readObject(); + V v = (V) s.readObject(); + if (k != null && v != null) { + int h = spread(k.hashCode()); + p = new Node(h, k, v, p); + ++size; + } + else + break; + } + if (p != null) { + boolean init = false; + int n; + if (size >= (long)(MAXIMUM_CAPACITY >>> 1)) + n = MAXIMUM_CAPACITY; + else { + int sz = (int)size; + n = tableSizeFor(sz + (sz >>> 1) + 1); + } + int sc = sizeCtl; + boolean collide = false; + if (n > sc && + UNSAFE.compareAndSwapInt(this, sizeCtlOffset, sc, -1)) { + try { + if (table == null) { + init = true; + Node[] tab = new Node[n]; + int mask = n - 1; + while (p != null) { + int j = p.hash & mask; + Node next = p.next; + Node q = p.next = tabAt(tab, j); + setTabAt(tab, j, p); + if (!collide && q != null && q.hash == p.hash) + collide = true; + p = next; + } + table = tab; + counter.add(size); + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + if (collide) { // rescan and convert to TreeBins + Node[] tab = table; + for (int i = 0; i < tab.length; ++i) { + int c = 0; + for (Node e = tabAt(tab, i); e != null; e = e.next) { + if (++c > TREE_THRESHOLD && + (e.key instanceof Comparable)) { + replaceWithTreeBin(tab, i, e.key); + break; + } + } + } + } + } + if (!init) { // Can only happen if unsafely published. + while (p != null) { + internalPut(p.key, p.val); + p = p.next; + } + } + } + } + + + // ------------------------------------------------------- + + // Sams + /** Interface describing a void action of one argument */ + public interface Action { void apply(A a); } + /** Interface describing a void action of two arguments */ + public interface BiAction { void apply(A a, B b); } + /** Interface describing a function of one argument */ + public interface Generator { T apply(); } + /** Interface describing a function mapping its argument to a double */ + public interface ObjectToDouble { double apply(A a); } + /** Interface describing a function mapping its argument to a long */ + public interface ObjectToLong { long apply(A a); } + /** Interface describing a function mapping its argument to an int */ + public interface ObjectToInt {int apply(A a); } + /** Interface describing a function mapping two arguments to a double */ + public interface ObjectByObjectToDouble { double apply(A a, B b); } + /** Interface describing a function mapping two arguments to a long */ + public interface ObjectByObjectToLong { long apply(A a, B b); } + /** Interface describing a function mapping two arguments to an int */ + public interface ObjectByObjectToInt {int apply(A a, B b); } + /** Interface describing a function mapping a double to a double */ + public interface DoubleToDouble { double apply(double a); } + /** Interface describing a function mapping a long to a long */ + public interface LongToLong { long apply(long a); } + /** Interface describing a function mapping an int to an int */ + public interface IntToInt { int apply(int a); } + /** Interface describing a function mapping two doubles to a double */ + public interface DoubleByDoubleToDouble { double apply(double a, double b); } + /** Interface describing a function mapping two longs to a long */ + public interface LongByLongToLong { long apply(long a, long b); } + /** Interface describing a function mapping two ints to an int */ + public interface IntByIntToInt { int apply(int a, int b); } + + + /* ----------------Views -------------- */ + + /** + * Base class for views. + */ + static abstract class CHMView { + final ConcurrentHashMapV8 map; + CHMView(ConcurrentHashMapV8 map) { this.map = map; } + + /** + * Returns the map backing this view. + * + * @return the map backing this view + */ + public ConcurrentHashMapV8 getMap() { return map; } + + public final int size() { return map.size(); } + public final boolean isEmpty() { return map.isEmpty(); } + public final void clear() { map.clear(); } + + // implementations below rely on concrete classes supplying these + abstract public Iterator iterator(); + abstract public boolean contains(Object o); + abstract public boolean remove(Object o); + + private static final String oomeMsg = "Required array size too large"; + + public final Object[] toArray() { + long sz = map.mappingCount(); + if (sz > (long)(MAX_ARRAY_SIZE)) + throw new OutOfMemoryError(oomeMsg); + int n = (int)sz; + Object[] r = new Object[n]; + int i = 0; + Iterator it = iterator(); + while (it.hasNext()) { + if (i == n) { + if (n >= MAX_ARRAY_SIZE) + throw new OutOfMemoryError(oomeMsg); + if (n >= MAX_ARRAY_SIZE - (MAX_ARRAY_SIZE >>> 1) - 1) + n = MAX_ARRAY_SIZE; + else + n += (n >>> 1) + 1; + r = Arrays.copyOf(r, n); + } + r[i++] = it.next(); + } + return (i == n) ? r : Arrays.copyOf(r, i); + } + + @SuppressWarnings("unchecked") public final T[] toArray(T[] a) { + long sz = map.mappingCount(); + if (sz > (long)(MAX_ARRAY_SIZE)) + throw new OutOfMemoryError(oomeMsg); + int m = (int)sz; + T[] r = (a.length >= m) ? a : + (T[])java.lang.reflect.Array + .newInstance(a.getClass().getComponentType(), m); + int n = r.length; + int i = 0; + Iterator it = iterator(); + while (it.hasNext()) { + if (i == n) { + if (n >= MAX_ARRAY_SIZE) + throw new OutOfMemoryError(oomeMsg); + if (n >= MAX_ARRAY_SIZE - (MAX_ARRAY_SIZE >>> 1) - 1) + n = MAX_ARRAY_SIZE; + else + n += (n >>> 1) + 1; + r = Arrays.copyOf(r, n); + } + r[i++] = (T)it.next(); + } + if (a == r && i < n) { + r[i] = null; // null-terminate + return r; + } + return (i == n) ? r : Arrays.copyOf(r, i); + } + + public final int hashCode() { + int h = 0; + for (Iterator it = iterator(); it.hasNext();) + h += it.next().hashCode(); + return h; + } + + public final String toString() { + StringBuilder sb = new StringBuilder(); + sb.append('['); + Iterator it = iterator(); + if (it.hasNext()) { + for (;;) { + Object e = it.next(); + sb.append(e == this ? "(this Collection)" : e); + if (!it.hasNext()) + break; + sb.append(',').append(' '); + } + } + return sb.append(']').toString(); + } + + public final boolean containsAll(Collection c) { + if (c != this) { + for (Iterator it = c.iterator(); it.hasNext();) { + Object e = it.next(); + if (e == null || !contains(e)) + return false; + } + } + return true; + } + + public final boolean removeAll(Collection c) { + boolean modified = false; + for (Iterator it = iterator(); it.hasNext();) { + if (c.contains(it.next())) { + it.remove(); + modified = true; + } + } + return modified; + } + + public final boolean retainAll(Collection c) { + boolean modified = false; + for (Iterator it = iterator(); it.hasNext();) { + if (!c.contains(it.next())) { + it.remove(); + modified = true; + } + } + return modified; + } + + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Set} of keys, in + * which additions may optionally be enabled by mapping to a + * common value. This class cannot be directly instantiated. See + * {@link #keySet}, {@link #keySet(Object)}, {@link #newKeySet()}, + * {@link #newKeySet(int)}. + */ + public static class KeySetView extends CHMView implements Set, java.io.Serializable { + private static final long serialVersionUID = 7249069246763182397L; + private final V value; + KeySetView(ConcurrentHashMapV8 map, V value) { // non-public + super(map); + this.value = value; + } + + /** + * Returns the default mapped value for additions, + * or {@code null} if additions are not supported. + * + * @return the default mapped value for additions, or {@code null} + * if not supported. + */ + public V getMappedValue() { return value; } + + // implement Set API + + public boolean contains(Object o) { return map.containsKey(o); } + public boolean remove(Object o) { return map.remove(o) != null; } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the keys of this map + */ + public Iterator iterator() { return new KeyIterator(map); } + public boolean add(K e) { + V v; + if ((v = value) == null) + throw new UnsupportedOperationException(); + if (e == null) + throw new NullPointerException(); + return map.internalPutIfAbsent(e, v) == null; + } + public boolean addAll(Collection c) { + boolean added = false; + V v; + if ((v = value) == null) + throw new UnsupportedOperationException(); + for (K e : c) { + if (e == null) + throw new NullPointerException(); + if (map.internalPutIfAbsent(e, v) == null) + added = true; + } + return added; + } + public boolean equals(Object o) { + Set c; + return ((o instanceof Set) && + ((c = (Set)o) == this || + (containsAll(c) && c.containsAll(this)))); + } + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Collection} of + * values, in which additions are disabled. This class cannot be + * directly instantiated. See {@link #values}, + * + *

              The view's {@code iterator} is a "weakly consistent" iterator + * that will never throw {@link ConcurrentModificationException}, + * and guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not guaranteed to) + * reflect any modifications subsequent to construction. + */ + public static final class ValuesView extends CHMView + implements Collection { + ValuesView(ConcurrentHashMapV8 map) { super(map); } + public final boolean contains(Object o) { return map.containsValue(o); } + public final boolean remove(Object o) { + if (o != null) { + Iterator it = new ValueIterator(map); + while (it.hasNext()) { + if (o.equals(it.next())) { + it.remove(); + return true; + } + } + } + return false; + } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the values of this map + */ + public final Iterator iterator() { + return new ValueIterator(map); + } + public final boolean add(V e) { + throw new UnsupportedOperationException(); + } + public final boolean addAll(Collection c) { + throw new UnsupportedOperationException(); + } + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Set} of (key, value) + * entries. This class cannot be directly instantiated. See + * {@link #entrySet}. + */ + public static final class EntrySetView extends CHMView + implements Set> { + EntrySetView(ConcurrentHashMapV8 map) { super(map); } + public final boolean contains(Object o) { + Object k, v, r; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (r = map.get(k)) != null && + (v = e.getValue()) != null && + (v == r || v.equals(r))); + } + public final boolean remove(Object o) { + Object k, v; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (v = e.getValue()) != null && + map.remove(k, v)); + } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the entries of this map + */ + public final Iterator> iterator() { + return new EntryIterator(map); + } + + public final boolean add(Entry e) { + K key = e.getKey(); + V value = e.getValue(); + if (key == null || value == null) + throw new NullPointerException(); + return map.internalPut(key, value) == null; + } + public final boolean addAll(Collection> c) { + boolean added = false; + for (Entry e : c) { + if (add(e)) + added = true; + } + return added; + } + public boolean equals(Object o) { + Set c; + return ((o instanceof Set) && + ((c = (Set)o) == this || + (containsAll(c) && c.containsAll(this)))); + } + } + + // Unsafe mechanics + private static final sun.misc.Unsafe UNSAFE; + private static final long counterOffset; + private static final long sizeCtlOffset; + private static final long ABASE; + private static final int ASHIFT; + + static { + int ss; + try { + UNSAFE = getUnsafe(); + Class k = ConcurrentHashMapV8.class; + counterOffset = UNSAFE.objectFieldOffset + (k.getDeclaredField("counter")); + sizeCtlOffset = UNSAFE.objectFieldOffset + (k.getDeclaredField("sizeCtl")); + Class sc = Node[].class; + ABASE = UNSAFE.arrayBaseOffset(sc); + ss = UNSAFE.arrayIndexScale(sc); + } catch (Exception e) { + throw new Error(e); + } + if ((ss & (ss-1)) != 0) + throw new Error("data type scale not a power of two"); + ASHIFT = 31 - Integer.numberOfLeadingZeros(ss); + } + + /** + * Returns a sun.misc.Unsafe. Suitable for use in a 3rd party package. + * Replace with a simple call to Unsafe.getUnsafe when integrating + * into a jdk. + * + * @return a sun.misc.Unsafe + */ + private static sun.misc.Unsafe getUnsafe() { + try { + return sun.misc.Unsafe.getUnsafe(); + } catch (SecurityException se) { + try { + return java.security.AccessController.doPrivileged + (new java.security + .PrivilegedExceptionAction() { + public sun.misc.Unsafe run() throws Exception { + java.lang.reflect.Field f = sun.misc + .Unsafe.class.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (sun.misc.Unsafe) f.get(null); + }}); + } catch (java.security.PrivilegedActionException e) { + throw new RuntimeException("Could not initialize intrinsics", + e.getCause()); + } + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java new file mode 100644 index 0000000000..47a923c8d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java @@ -0,0 +1,203 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on 1.9 version. + +package com.concurrent_ruby.ext.jsr166e; +import java.util.concurrent.atomic.AtomicLong; +import java.io.IOException; +import java.io.Serializable; +import java.io.ObjectInputStream; + +/** + * One or more variables that together maintain an initially zero + * {@code long} sum. When updates (method {@link #add}) are contended + * across threads, the set of variables may grow dynamically to reduce + * contention. Method {@link #sum} (or, equivalently, {@link + * #longValue}) returns the current total combined across the + * variables maintaining the sum. + * + *

              This class is usually preferable to {@link AtomicLong} when + * multiple threads update a common sum that is used for purposes such + * as collecting statistics, not for fine-grained synchronization + * control. Under low update contention, the two classes have similar + * characteristics. But under high contention, expected throughput of + * this class is significantly higher, at the expense of higher space + * consumption. + * + *

              This class extends {@link Number}, but does not define + * methods such as {@code hashCode} and {@code compareTo} because + * instances are expected to be mutated, and so are not useful as + * collection keys. + * + *

              jsr166e note: This class is targeted to be placed in + * java.util.concurrent.atomic. + * + * @since 1.8 + * @author Doug Lea + */ +public class LongAdder extends Striped64 implements Serializable { + private static final long serialVersionUID = 7249069246863182397L; + + /** + * Version of plus for use in retryUpdate + */ + final long fn(long v, long x) { return v + x; } + + /** + * Creates a new adder with initial sum of zero. + */ + public LongAdder() { + } + + /** + * Adds the given value. + * + * @param x the value to add + */ + public void add(long x) { + Cell[] as; long b, v; HashCode hc; Cell a; int n; + if ((as = cells) != null || !casBase(b = base, b + x)) { + boolean uncontended = true; + int h = (hc = threadHashCode.get()).code; + if (as == null || (n = as.length) < 1 || + (a = as[(n - 1) & h]) == null || + !(uncontended = a.cas(v = a.value, v + x))) + retryUpdate(x, hc, uncontended); + } + } + + /** + * Equivalent to {@code add(1)}. + */ + public void increment() { + add(1L); + } + + /** + * Equivalent to {@code add(-1)}. + */ + public void decrement() { + add(-1L); + } + + /** + * Returns the current sum. The returned value is NOT an + * atomic snapshot: Invocation in the absence of concurrent + * updates returns an accurate result, but concurrent updates that + * occur while the sum is being calculated might not be + * incorporated. + * + * @return the sum + */ + public long sum() { + long sum = base; + Cell[] as = cells; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) + sum += a.value; + } + } + return sum; + } + + /** + * Resets variables maintaining the sum to zero. This method may + * be a useful alternative to creating a new adder, but is only + * effective if there are no concurrent updates. Because this + * method is intrinsically racy, it should only be used when it is + * known that no threads are concurrently updating. + */ + public void reset() { + internalReset(0L); + } + + /** + * Equivalent in effect to {@link #sum} followed by {@link + * #reset}. This method may apply for example during quiescent + * points between multithreaded computations. If there are + * updates concurrent with this method, the returned value is + * not guaranteed to be the final value occurring before + * the reset. + * + * @return the sum + */ + public long sumThenReset() { + long sum = base; + Cell[] as = cells; + base = 0L; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) { + sum += a.value; + a.value = 0L; + } + } + } + return sum; + } + + /** + * Returns the String representation of the {@link #sum}. + * @return the String representation of the {@link #sum} + */ + public String toString() { + return Long.toString(sum()); + } + + /** + * Equivalent to {@link #sum}. + * + * @return the sum + */ + public long longValue() { + return sum(); + } + + /** + * Returns the {@link #sum} as an {@code int} after a narrowing + * primitive conversion. + */ + public int intValue() { + return (int)sum(); + } + + /** + * Returns the {@link #sum} as a {@code float} + * after a widening primitive conversion. + */ + public float floatValue() { + return (float)sum(); + } + + /** + * Returns the {@link #sum} as a {@code double} after a widening + * primitive conversion. + */ + public double doubleValue() { + return (double)sum(); + } + + private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { + s.defaultWriteObject(); + s.writeLong(sum()); + } + + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException { + s.defaultReadObject(); + busy = 0; + cells = null; + base = s.readLong(); + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java new file mode 100644 index 0000000000..93a277fb35 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java @@ -0,0 +1,342 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on 1.5 version. + +package com.concurrent_ruby.ext.jsr166e; +import java.util.Random; + +/** + * A package-local class holding common representation and mechanics + * for classes supporting dynamic striping on 64bit values. The class + * extends Number so that concrete subclasses must publicly do so. + */ +abstract class Striped64 extends Number { + /* + * This class maintains a lazily-initialized table of atomically + * updated variables, plus an extra "base" field. The table size + * is a power of two. Indexing uses masked per-thread hash codes. + * Nearly all declarations in this class are package-private, + * accessed directly by subclasses. + * + * Table entries are of class Cell; a variant of AtomicLong padded + * to reduce cache contention on most processors. Padding is + * overkill for most Atomics because they are usually irregularly + * scattered in memory and thus don't interfere much with each + * other. But Atomic objects residing in arrays will tend to be + * placed adjacent to each other, and so will most often share + * cache lines (with a huge negative performance impact) without + * this precaution. + * + * In part because Cells are relatively large, we avoid creating + * them until they are needed. When there is no contention, all + * updates are made to the base field. Upon first contention (a + * failed CAS on base update), the table is initialized to size 2. + * The table size is doubled upon further contention until + * reaching the nearest power of two greater than or equal to the + * number of CPUS. Table slots remain empty (null) until they are + * needed. + * + * A single spinlock ("busy") is used for initializing and + * resizing the table, as well as populating slots with new Cells. + * There is no need for a blocking lock: When the lock is not + * available, threads try other slots (or the base). During these + * retries, there is increased contention and reduced locality, + * which is still better than alternatives. + * + * Per-thread hash codes are initialized to random values. + * Contention and/or table collisions are indicated by failed + * CASes when performing an update operation (see method + * retryUpdate). Upon a collision, if the table size is less than + * the capacity, it is doubled in size unless some other thread + * holds the lock. If a hashed slot is empty, and lock is + * available, a new Cell is created. Otherwise, if the slot + * exists, a CAS is tried. Retries proceed by "double hashing", + * using a secondary hash (Marsaglia XorShift) to try to find a + * free slot. + * + * The table size is capped because, when there are more threads + * than CPUs, supposing that each thread were bound to a CPU, + * there would exist a perfect hash function mapping threads to + * slots that eliminates collisions. When we reach capacity, we + * search for this mapping by randomly varying the hash codes of + * colliding threads. Because search is random, and collisions + * only become known via CAS failures, convergence can be slow, + * and because threads are typically not bound to CPUS forever, + * may not occur at all. However, despite these limitations, + * observed contention rates are typically low in these cases. + * + * It is possible for a Cell to become unused when threads that + * once hashed to it terminate, as well as in the case where + * doubling the table causes no thread to hash to it under + * expanded mask. We do not try to detect or remove such cells, + * under the assumption that for long-running instances, observed + * contention levels will recur, so the cells will eventually be + * needed again; and for short-lived ones, it does not matter. + */ + + /** + * Padded variant of AtomicLong supporting only raw accesses plus CAS. + * The value field is placed between pads, hoping that the JVM doesn't + * reorder them. + * + * JVM intrinsics note: It would be possible to use a release-only + * form of CAS here, if it were provided. + */ + static final class Cell { + volatile long p0, p1, p2, p3, p4, p5, p6; + volatile long value; + volatile long q0, q1, q2, q3, q4, q5, q6; + Cell(long x) { value = x; } + + final boolean cas(long cmp, long val) { + return UNSAFE.compareAndSwapLong(this, valueOffset, cmp, val); + } + + // Unsafe mechanics + private static final sun.misc.Unsafe UNSAFE; + private static final long valueOffset; + static { + try { + UNSAFE = getUnsafe(); + Class ak = Cell.class; + valueOffset = UNSAFE.objectFieldOffset + (ak.getDeclaredField("value")); + } catch (Exception e) { + throw new Error(e); + } + } + + } + + /** + * Holder for the thread-local hash code. The code is initially + * random, but may be set to a different value upon collisions. + */ + static final class HashCode { + static final Random rng = new Random(); + int code; + HashCode() { + int h = rng.nextInt(); // Avoid zero to allow xorShift rehash + code = (h == 0) ? 1 : h; + } + } + + /** + * The corresponding ThreadLocal class + */ + static final class ThreadHashCode extends ThreadLocal { + public HashCode initialValue() { return new HashCode(); } + } + + /** + * Static per-thread hash codes. Shared across all instances to + * reduce ThreadLocal pollution and because adjustments due to + * collisions in one table are likely to be appropriate for + * others. + */ + static final ThreadHashCode threadHashCode = new ThreadHashCode(); + + /** Number of CPUS, to place bound on table size */ + static final int NCPU = Runtime.getRuntime().availableProcessors(); + + /** + * Table of cells. When non-null, size is a power of 2. + */ + transient volatile Cell[] cells; + + /** + * Base value, used mainly when there is no contention, but also as + * a fallback during table initialization races. Updated via CAS. + */ + transient volatile long base; + + /** + * Spinlock (locked via CAS) used when resizing and/or creating Cells. + */ + transient volatile int busy; + + /** + * Package-private default constructor + */ + Striped64() { + } + + /** + * CASes the base field. + */ + final boolean casBase(long cmp, long val) { + return UNSAFE.compareAndSwapLong(this, baseOffset, cmp, val); + } + + /** + * CASes the busy field from 0 to 1 to acquire lock. + */ + final boolean casBusy() { + return UNSAFE.compareAndSwapInt(this, busyOffset, 0, 1); + } + + /** + * Computes the function of current and new value. Subclasses + * should open-code this update function for most uses, but the + * virtualized form is needed within retryUpdate. + * + * @param currentValue the current value (of either base or a cell) + * @param newValue the argument from a user update call + * @return result of the update function + */ + abstract long fn(long currentValue, long newValue); + + /** + * Handles cases of updates involving initialization, resizing, + * creating new Cells, and/or contention. See above for + * explanation. This method suffers the usual non-modularity + * problems of optimistic retry code, relying on rechecked sets of + * reads. + * + * @param x the value + * @param hc the hash code holder + * @param wasUncontended false if CAS failed before call + */ + final void retryUpdate(long x, HashCode hc, boolean wasUncontended) { + int h = hc.code; + boolean collide = false; // True if last slot nonempty + for (;;) { + Cell[] as; Cell a; int n; long v; + if ((as = cells) != null && (n = as.length) > 0) { + if ((a = as[(n - 1) & h]) == null) { + if (busy == 0) { // Try to attach new Cell + Cell r = new Cell(x); // Optimistically create + if (busy == 0 && casBusy()) { + boolean created = false; + try { // Recheck under lock + Cell[] rs; int m, j; + if ((rs = cells) != null && + (m = rs.length) > 0 && + rs[j = (m - 1) & h] == null) { + rs[j] = r; + created = true; + } + } finally { + busy = 0; + } + if (created) + break; + continue; // Slot is now non-empty + } + } + collide = false; + } + else if (!wasUncontended) // CAS already known to fail + wasUncontended = true; // Continue after rehash + else if (a.cas(v = a.value, fn(v, x))) + break; + else if (n >= NCPU || cells != as) + collide = false; // At max size or stale + else if (!collide) + collide = true; + else if (busy == 0 && casBusy()) { + try { + if (cells == as) { // Expand table unless stale + Cell[] rs = new Cell[n << 1]; + for (int i = 0; i < n; ++i) + rs[i] = as[i]; + cells = rs; + } + } finally { + busy = 0; + } + collide = false; + continue; // Retry with expanded table + } + h ^= h << 13; // Rehash + h ^= h >>> 17; + h ^= h << 5; + } + else if (busy == 0 && cells == as && casBusy()) { + boolean init = false; + try { // Initialize table + if (cells == as) { + Cell[] rs = new Cell[2]; + rs[h & 1] = new Cell(x); + cells = rs; + init = true; + } + } finally { + busy = 0; + } + if (init) + break; + } + else if (casBase(v = base, fn(v, x))) + break; // Fall back on using base + } + hc.code = h; // Record index for next time + } + + + /** + * Sets base and all cells to the given value. + */ + final void internalReset(long initialValue) { + Cell[] as = cells; + base = initialValue; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) + a.value = initialValue; + } + } + } + + // Unsafe mechanics + private static final sun.misc.Unsafe UNSAFE; + private static final long baseOffset; + private static final long busyOffset; + static { + try { + UNSAFE = getUnsafe(); + Class sk = Striped64.class; + baseOffset = UNSAFE.objectFieldOffset + (sk.getDeclaredField("base")); + busyOffset = UNSAFE.objectFieldOffset + (sk.getDeclaredField("busy")); + } catch (Exception e) { + throw new Error(e); + } + } + + /** + * Returns a sun.misc.Unsafe. Suitable for use in a 3rd party package. + * Replace with a simple call to Unsafe.getUnsafe when integrating + * into a jdk. + * + * @return a sun.misc.Unsafe + */ + private static sun.misc.Unsafe getUnsafe() { + try { + return sun.misc.Unsafe.getUnsafe(); + } catch (SecurityException se) { + try { + return java.security.AccessController.doPrivileged + (new java.security + .PrivilegedExceptionAction() { + public sun.misc.Unsafe run() throws Exception { + java.lang.reflect.Field f = sun.misc + .Unsafe.class.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (sun.misc.Unsafe) f.get(null); + }}); + } catch (java.security.PrivilegedActionException e) { + throw new RuntimeException("Could not initialize intrinsics", + e.getCause()); + } + } + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java new file mode 100644 index 0000000000..b7fc5a9375 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java @@ -0,0 +1,3800 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on the 1.79 version. + +package com.concurrent_ruby.ext.jsr166e.nounsafe; + +import org.jruby.RubyClass; +import org.jruby.RubyNumeric; +import org.jruby.RubyObject; +import org.jruby.exceptions.RaiseException; +import com.concurrent_ruby.ext.jsr166e.ConcurrentHashMap; +import com.concurrent_ruby.ext.jsr166y.ThreadLocalRandom; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; + +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.Collection; +import java.util.Hashtable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Enumeration; +import java.util.ConcurrentModificationException; +import java.util.NoSuchElementException; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; +import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.concurrent.locks.AbstractQueuedSynchronizer; + +import java.io.Serializable; + +/** + * A hash table supporting full concurrency of retrievals and + * high expected concurrency for updates. This class obeys the + * same functional specification as {@link java.util.Hashtable}, and + * includes versions of methods corresponding to each method of + * {@code Hashtable}. However, even though all operations are + * thread-safe, retrieval operations do not entail locking, + * and there is not any support for locking the entire table + * in a way that prevents all access. This class is fully + * interoperable with {@code Hashtable} in programs that rely on its + * thread safety but not on its synchronization details. + * + *

              Retrieval operations (including {@code get}) generally do not + * block, so may overlap with update operations (including {@code put} + * and {@code remove}). Retrievals reflect the results of the most + * recently completed update operations holding upon their + * onset. (More formally, an update operation for a given key bears a + * happens-before relation with any (non-null) retrieval for + * that key reporting the updated value.) For aggregate operations + * such as {@code putAll} and {@code clear}, concurrent retrievals may + * reflect insertion or removal of only some entries. Similarly, + * Iterators and Enumerations return elements reflecting the state of + * the hash table at some point at or since the creation of the + * iterator/enumeration. They do not throw {@link + * ConcurrentModificationException}. However, iterators are designed + * to be used by only one thread at a time. Bear in mind that the + * results of aggregate status methods including {@code size}, {@code + * isEmpty}, and {@code containsValue} are typically useful only when + * a map is not undergoing concurrent updates in other threads. + * Otherwise the results of these methods reflect transient states + * that may be adequate for monitoring or estimation purposes, but not + * for program control. + * + *

              The table is dynamically expanded when there are too many + * collisions (i.e., keys that have distinct hash codes but fall into + * the same slot modulo the table size), with the expected average + * effect of maintaining roughly two bins per mapping (corresponding + * to a 0.75 load factor threshold for resizing). There may be much + * variance around this average as mappings are added and removed, but + * overall, this maintains a commonly accepted time/space tradeoff for + * hash tables. However, resizing this or any other kind of hash + * table may be a relatively slow operation. When possible, it is a + * good idea to provide a size estimate as an optional {@code + * initialCapacity} constructor argument. An additional optional + * {@code loadFactor} constructor argument provides a further means of + * customizing initial table capacity by specifying the table density + * to be used in calculating the amount of space to allocate for the + * given number of elements. Also, for compatibility with previous + * versions of this class, constructors may optionally specify an + * expected {@code concurrencyLevel} as an additional hint for + * internal sizing. Note that using many keys with exactly the same + * {@code hashCode()} is a sure way to slow down performance of any + * hash table. + * + *

              A {@link Set} projection of a ConcurrentHashMapV8 may be created + * (using {@link #newKeySet()} or {@link #newKeySet(int)}), or viewed + * (using {@link #keySet(Object)} when only keys are of interest, and the + * mapped values are (perhaps transiently) not used or all take the + * same mapping value. + * + *

              A ConcurrentHashMapV8 can be used as scalable frequency map (a + * form of histogram or multiset) by using {@link LongAdder} values + * and initializing via {@link #computeIfAbsent}. For example, to add + * a count to a {@code ConcurrentHashMapV8 freqs}, you + * can use {@code freqs.computeIfAbsent(k -> new + * LongAdder()).increment();} + * + *

              This class and its views and iterators implement all of the + * optional methods of the {@link Map} and {@link Iterator} + * interfaces. + * + *

              Like {@link Hashtable} but unlike {@link HashMap}, this class + * does not allow {@code null} to be used as a key or value. + * + *

              ConcurrentHashMapV8s support parallel operations using the {@link + * ForkJoinPool#commonPool}. (Tasks that may be used in other contexts + * are available in class {@link ForkJoinTasks}). These operations are + * designed to be safely, and often sensibly, applied even with maps + * that are being concurrently updated by other threads; for example, + * when computing a snapshot summary of the values in a shared + * registry. There are three kinds of operation, each with four + * forms, accepting functions with Keys, Values, Entries, and (Key, + * Value) arguments and/or return values. (The first three forms are + * also available via the {@link #keySet()}, {@link #values()} and + * {@link #entrySet()} views). Because the elements of a + * ConcurrentHashMapV8 are not ordered in any particular way, and may be + * processed in different orders in different parallel executions, the + * correctness of supplied functions should not depend on any + * ordering, or on any other objects or values that may transiently + * change while computation is in progress; and except for forEach + * actions, should ideally be side-effect-free. + * + *

              + * + *

              The concurrency properties of bulk operations follow + * from those of ConcurrentHashMapV8: Any non-null result returned + * from {@code get(key)} and related access methods bears a + * happens-before relation with the associated insertion or + * update. The result of any bulk operation reflects the + * composition of these per-element relations (but is not + * necessarily atomic with respect to the map as a whole unless it + * is somehow known to be quiescent). Conversely, because keys + * and values in the map are never null, null serves as a reliable + * atomic indicator of the current lack of any result. To + * maintain this property, null serves as an implicit basis for + * all non-scalar reduction operations. For the double, long, and + * int versions, the basis should be one that, when combined with + * any other value, returns that other value (more formally, it + * should be the identity element for the reduction). Most common + * reductions have these properties; for example, computing a sum + * with basis 0 or a minimum with basis MAX_VALUE. + * + *

              Search and transformation functions provided as arguments + * should similarly return null to indicate the lack of any result + * (in which case it is not used). In the case of mapped + * reductions, this also enables transformations to serve as + * filters, returning null (or, in the case of primitive + * specializations, the identity basis) if the element should not + * be combined. You can create compound transformations and + * filterings by composing them yourself under this "null means + * there is nothing there now" rule before using them in search or + * reduce operations. + * + *

              Methods accepting and/or returning Entry arguments maintain + * key-value associations. They may be useful for example when + * finding the key for the greatest value. Note that "plain" Entry + * arguments can be supplied using {@code new + * AbstractMap.SimpleEntry(k,v)}. + * + *

              Bulk operations may complete abruptly, throwing an + * exception encountered in the application of a supplied + * function. Bear in mind when handling such exceptions that other + * concurrently executing functions could also have thrown + * exceptions, or would have done so if the first exception had + * not occurred. + * + *

              Parallel speedups for bulk operations compared to sequential + * processing are common but not guaranteed. Operations involving + * brief functions on small maps may execute more slowly than + * sequential loops if the underlying work to parallelize the + * computation is more expensive than the computation itself. + * Similarly, parallelization may not lead to much actual parallelism + * if all processors are busy performing unrelated tasks. + * + *

              All arguments to all task methods must be non-null. + * + *

              jsr166e note: During transition, this class + * uses nested functional interfaces with different names but the + * same forms as those expected for JDK8. + * + *

              This class is a member of the + * + * Java Collections Framework. + * + * @since 1.5 + * @author Doug Lea + * @param the type of keys maintained by this map + * @param the type of mapped values + */ +public class ConcurrentHashMapV8 + implements ConcurrentMap, Serializable, ConcurrentHashMap { + private static final long serialVersionUID = 7249069246763182397L; + + /** + * A partitionable iterator. A Spliterator can be traversed + * directly, but can also be partitioned (before traversal) by + * creating another Spliterator that covers a non-overlapping + * portion of the elements, and so may be amenable to parallel + * execution. + * + *

              This interface exports a subset of expected JDK8 + * functionality. + * + *

              Sample usage: Here is one (of the several) ways to compute + * the sum of the values held in a map using the ForkJoin + * framework. As illustrated here, Spliterators are well suited to + * designs in which a task repeatedly splits off half its work + * into forked subtasks until small enough to process directly, + * and then joins these subtasks. Variants of this style can also + * be used in completion-based designs. + * + *

              +     * {@code ConcurrentHashMapV8 m = ...
              +     * // split as if have 8 * parallelism, for load balance
              +     * int n = m.size();
              +     * int p = aForkJoinPool.getParallelism() * 8;
              +     * int split = (n < p)? n : p;
              +     * long sum = aForkJoinPool.invoke(new SumValues(m.valueSpliterator(), split, null));
              +     * // ...
              +     * static class SumValues extends RecursiveTask {
              +     *   final Spliterator s;
              +     *   final int split;             // split while > 1
              +     *   final SumValues nextJoin;    // records forked subtasks to join
              +     *   SumValues(Spliterator s, int depth, SumValues nextJoin) {
              +     *     this.s = s; this.depth = depth; this.nextJoin = nextJoin;
              +     *   }
              +     *   public Long compute() {
              +     *     long sum = 0;
              +     *     SumValues subtasks = null; // fork subtasks
              +     *     for (int s = split >>> 1; s > 0; s >>>= 1)
              +     *       (subtasks = new SumValues(s.split(), s, subtasks)).fork();
              +     *     while (s.hasNext())        // directly process remaining elements
              +     *       sum += s.next();
              +     *     for (SumValues t = subtasks; t != null; t = t.nextJoin)
              +     *       sum += t.join();         // collect subtask results
              +     *     return sum;
              +     *   }
              +     * }
              +     * }
              + */ + public static interface Spliterator extends Iterator { + /** + * Returns a Spliterator covering approximately half of the + * elements, guaranteed not to overlap with those subsequently + * returned by this Spliterator. After invoking this method, + * the current Spliterator will not produce any of + * the elements of the returned Spliterator, but the two + * Spliterators together will produce all of the elements that + * would have been produced by this Spliterator had this + * method not been called. The exact number of elements + * produced by the returned Spliterator is not guaranteed, and + * may be zero (i.e., with {@code hasNext()} reporting {@code + * false}) if this Spliterator cannot be further split. + * + * @return a Spliterator covering approximately half of the + * elements + * @throws IllegalStateException if this Spliterator has + * already commenced traversing elements + */ + Spliterator split(); + } + + + /* + * Overview: + * + * The primary design goal of this hash table is to maintain + * concurrent readability (typically method get(), but also + * iterators and related methods) while minimizing update + * contention. Secondary goals are to keep space consumption about + * the same or better than java.util.HashMap, and to support high + * initial insertion rates on an empty table by many threads. + * + * Each key-value mapping is held in a Node. Because Node fields + * can contain special values, they are defined using plain Object + * types. Similarly in turn, all internal methods that use them + * work off Object types. And similarly, so do the internal + * methods of auxiliary iterator and view classes. All public + * generic typed methods relay in/out of these internal methods, + * supplying null-checks and casts as needed. This also allows + * many of the public methods to be factored into a smaller number + * of internal methods (although sadly not so for the five + * variants of put-related operations). The validation-based + * approach explained below leads to a lot of code sprawl because + * retry-control precludes factoring into smaller methods. + * + * The table is lazily initialized to a power-of-two size upon the + * first insertion. Each bin in the table normally contains a + * list of Nodes (most often, the list has only zero or one Node). + * Table accesses require volatile/atomic reads, writes, and + * CASes. Because there is no other way to arrange this without + * adding further indirections, we use intrinsics + * (sun.misc.Unsafe) operations. The lists of nodes within bins + * are always accurately traversable under volatile reads, so long + * as lookups check hash code and non-nullness of value before + * checking key equality. + * + * We use the top two bits of Node hash fields for control + * purposes -- they are available anyway because of addressing + * constraints. As explained further below, these top bits are + * used as follows: + * 00 - Normal + * 01 - Locked + * 11 - Locked and may have a thread waiting for lock + * 10 - Node is a forwarding node + * + * The lower 30 bits of each Node's hash field contain a + * transformation of the key's hash code, except for forwarding + * nodes, for which the lower bits are zero (and so always have + * hash field == MOVED). + * + * Insertion (via put or its variants) of the first node in an + * empty bin is performed by just CASing it to the bin. This is + * by far the most common case for put operations under most + * key/hash distributions. Other update operations (insert, + * delete, and replace) require locks. We do not want to waste + * the space required to associate a distinct lock object with + * each bin, so instead use the first node of a bin list itself as + * a lock. Blocking support for these locks relies on the builtin + * "synchronized" monitors. However, we also need a tryLock + * construction, so we overlay these by using bits of the Node + * hash field for lock control (see above), and so normally use + * builtin monitors only for blocking and signalling using + * wait/notifyAll constructions. See Node.tryAwaitLock. + * + * Using the first node of a list as a lock does not by itself + * suffice though: When a node is locked, any update must first + * validate that it is still the first node after locking it, and + * retry if not. Because new nodes are always appended to lists, + * once a node is first in a bin, it remains first until deleted + * or the bin becomes invalidated (upon resizing). However, + * operations that only conditionally update may inspect nodes + * until the point of update. This is a converse of sorts to the + * lazy locking technique described by Herlihy & Shavit. + * + * The main disadvantage of per-bin locks is that other update + * operations on other nodes in a bin list protected by the same + * lock can stall, for example when user equals() or mapping + * functions take a long time. However, statistically, under + * random hash codes, this is not a common problem. Ideally, the + * frequency of nodes in bins follows a Poisson distribution + * (http://en.wikipedia.org/wiki/Poisson_distribution) with a + * parameter of about 0.5 on average, given the resizing threshold + * of 0.75, although with a large variance because of resizing + * granularity. Ignoring variance, the expected occurrences of + * list size k are (exp(-0.5) * pow(0.5, k) / factorial(k)). The + * first values are: + * + * 0: 0.60653066 + * 1: 0.30326533 + * 2: 0.07581633 + * 3: 0.01263606 + * 4: 0.00157952 + * 5: 0.00015795 + * 6: 0.00001316 + * 7: 0.00000094 + * 8: 0.00000006 + * more: less than 1 in ten million + * + * Lock contention probability for two threads accessing distinct + * elements is roughly 1 / (8 * #elements) under random hashes. + * + * Actual hash code distributions encountered in practice + * sometimes deviate significantly from uniform randomness. This + * includes the case when N > (1<<30), so some keys MUST collide. + * Similarly for dumb or hostile usages in which multiple keys are + * designed to have identical hash codes. Also, although we guard + * against the worst effects of this (see method spread), sets of + * hashes may differ only in bits that do not impact their bin + * index for a given power-of-two mask. So we use a secondary + * strategy that applies when the number of nodes in a bin exceeds + * a threshold, and at least one of the keys implements + * Comparable. These TreeBins use a balanced tree to hold nodes + * (a specialized form of red-black trees), bounding search time + * to O(log N). Each search step in a TreeBin is around twice as + * slow as in a regular list, but given that N cannot exceed + * (1<<64) (before running out of addresses) this bounds search + * steps, lock hold times, etc, to reasonable constants (roughly + * 100 nodes inspected per operation worst case) so long as keys + * are Comparable (which is very common -- String, Long, etc). + * TreeBin nodes (TreeNodes) also maintain the same "next" + * traversal pointers as regular nodes, so can be traversed in + * iterators in the same way. + * + * The table is resized when occupancy exceeds a percentage + * threshold (nominally, 0.75, but see below). Only a single + * thread performs the resize (using field "sizeCtl", to arrange + * exclusion), but the table otherwise remains usable for reads + * and updates. Resizing proceeds by transferring bins, one by + * one, from the table to the next table. Because we are using + * power-of-two expansion, the elements from each bin must either + * stay at same index, or move with a power of two offset. We + * eliminate unnecessary node creation by catching cases where old + * nodes can be reused because their next fields won't change. On + * average, only about one-sixth of them need cloning when a table + * doubles. The nodes they replace will be garbage collectable as + * soon as they are no longer referenced by any reader thread that + * may be in the midst of concurrently traversing table. Upon + * transfer, the old table bin contains only a special forwarding + * node (with hash field "MOVED") that contains the next table as + * its key. On encountering a forwarding node, access and update + * operations restart, using the new table. + * + * Each bin transfer requires its bin lock. However, unlike other + * cases, a transfer can skip a bin if it fails to acquire its + * lock, and revisit it later (unless it is a TreeBin). Method + * rebuild maintains a buffer of TRANSFER_BUFFER_SIZE bins that + * have been skipped because of failure to acquire a lock, and + * blocks only if none are available (i.e., only very rarely). + * The transfer operation must also ensure that all accessible + * bins in both the old and new table are usable by any traversal. + * When there are no lock acquisition failures, this is arranged + * simply by proceeding from the last bin (table.length - 1) up + * towards the first. Upon seeing a forwarding node, traversals + * (see class Iter) arrange to move to the new table + * without revisiting nodes. However, when any node is skipped + * during a transfer, all earlier table bins may have become + * visible, so are initialized with a reverse-forwarding node back + * to the old table until the new ones are established. (This + * sometimes requires transiently locking a forwarding node, which + * is possible under the above encoding.) These more expensive + * mechanics trigger only when necessary. + * + * The traversal scheme also applies to partial traversals of + * ranges of bins (via an alternate Traverser constructor) + * to support partitioned aggregate operations. Also, read-only + * operations give up if ever forwarded to a null table, which + * provides support for shutdown-style clearing, which is also not + * currently implemented. + * + * Lazy table initialization minimizes footprint until first use, + * and also avoids resizings when the first operation is from a + * putAll, constructor with map argument, or deserialization. + * These cases attempt to override the initial capacity settings, + * but harmlessly fail to take effect in cases of races. + * + * The element count is maintained using a LongAdder, which avoids + * contention on updates but can encounter cache thrashing if read + * too frequently during concurrent access. To avoid reading so + * often, resizing is attempted either when a bin lock is + * contended, or upon adding to a bin already holding two or more + * nodes (checked before adding in the xIfAbsent methods, after + * adding in others). Under uniform hash distributions, the + * probability of this occurring at threshold is around 13%, + * meaning that only about 1 in 8 puts check threshold (and after + * resizing, many fewer do so). But this approximation has high + * variance for small table sizes, so we check on any collision + * for sizes <= 64. The bulk putAll operation further reduces + * contention by only committing count updates upon these size + * checks. + * + * Maintaining API and serialization compatibility with previous + * versions of this class introduces several oddities. Mainly: We + * leave untouched but unused constructor arguments refering to + * concurrencyLevel. We accept a loadFactor constructor argument, + * but apply it only to initial table capacity (which is the only + * time that we can guarantee to honor it.) We also declare an + * unused "Segment" class that is instantiated in minimal form + * only when serializing. + */ + + /* ---------------- Constants -------------- */ + + /** + * The largest possible table capacity. This value must be + * exactly 1<<30 to stay within Java array allocation and indexing + * bounds for power of two table sizes, and is further required + * because the top two bits of 32bit hash fields are used for + * control purposes. + */ + private static final int MAXIMUM_CAPACITY = 1 << 30; + + /** + * The default initial table capacity. Must be a power of 2 + * (i.e., at least 1) and at most MAXIMUM_CAPACITY. + */ + private static final int DEFAULT_CAPACITY = 16; + + /** + * The largest possible (non-power of two) array size. + * Needed by toArray and related methods. + */ + static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; + + /** + * The default concurrency level for this table. Unused but + * defined for compatibility with previous versions of this class. + */ + private static final int DEFAULT_CONCURRENCY_LEVEL = 16; + + /** + * The load factor for this table. Overrides of this value in + * constructors affect only the initial table capacity. The + * actual floating point value isn't normally used -- it is + * simpler to use expressions such as {@code n - (n >>> 2)} for + * the associated resizing threshold. + */ + private static final float LOAD_FACTOR = 0.75f; + + /** + * The buffer size for skipped bins during transfers. The + * value is arbitrary but should be large enough to avoid + * most locking stalls during resizes. + */ + private static final int TRANSFER_BUFFER_SIZE = 32; + + /** + * The bin count threshold for using a tree rather than list for a + * bin. The value reflects the approximate break-even point for + * using tree-based operations. + * Note that Doug's version defaults to 8, but when dealing with + * Ruby objects it is actually beneficial to avoid TreeNodes + * as long as possible as it usually means going into Ruby land. + */ + private static final int TREE_THRESHOLD = 16; + + /* + * Encodings for special uses of Node hash fields. See above for + * explanation. + */ + static final int MOVED = 0x80000000; // hash field for forwarding nodes + static final int LOCKED = 0x40000000; // set/tested only as a bit + static final int WAITING = 0xc0000000; // both bits set/tested together + static final int HASH_BITS = 0x3fffffff; // usable bits of normal node hash + + /* ---------------- Fields -------------- */ + + /** + * The array of bins. Lazily initialized upon first insertion. + * Size is always a power of two. Accessed directly by iterators. + */ + transient volatile AtomicReferenceArray table; + + /** + * The counter maintaining number of elements. + */ + private transient LongAdder counter; + + /** + * Table initialization and resizing control. When negative, the + * table is being initialized or resized. Otherwise, when table is + * null, holds the initial table size to use upon creation, or 0 + * for default. After initialization, holds the next element count + * value upon which to resize the table. + */ + private transient volatile int sizeCtl; + + // views + private transient KeySetView keySet; + private transient ValuesView values; + private transient EntrySetView entrySet; + + /** For serialization compatibility. Null unless serialized; see below */ + private Segment[] segments; + + static AtomicIntegerFieldUpdater SIZE_CTRL_UPDATER = AtomicIntegerFieldUpdater.newUpdater(ConcurrentHashMapV8.class, "sizeCtl"); + + /* ---------------- Table element access -------------- */ + + /* + * Volatile access methods are used for table elements as well as + * elements of in-progress next table while resizing. Uses are + * null checked by callers, and implicitly bounds-checked, relying + * on the invariants that tab arrays have non-zero size, and all + * indices are masked with (tab.length - 1) which is never + * negative and always less than length. Note that, to be correct + * wrt arbitrary concurrency errors by users, bounds checks must + * operate on local variables, which accounts for some odd-looking + * inline assignments below. + */ + + static final Node tabAt(AtomicReferenceArray tab, int i) { // used by Iter + return tab.get(i); + } + + private static final boolean casTabAt(AtomicReferenceArray tab, int i, Node c, Node v) { + return tab.compareAndSet(i, c, v); + } + + private static final void setTabAt(AtomicReferenceArray tab, int i, Node v) { + tab.set(i, v); + } + + /* ---------------- Nodes -------------- */ + + /** + * Key-value entry. Note that this is never exported out as a + * user-visible Map.Entry (see MapEntry below). Nodes with a hash + * field of MOVED are special, and do not contain user keys or + * values. Otherwise, keys are never null, and null val fields + * indicate that a node is in the process of being deleted or + * created. For purposes of read-only access, a key may be read + * before a val, but can only be used after checking val to be + * non-null. + */ + static class Node { + volatile int hash; + final Object key; + volatile Object val; + volatile Node next; + + static AtomicIntegerFieldUpdater HASH_UPDATER = AtomicIntegerFieldUpdater.newUpdater(Node.class, "hash"); + + Node(int hash, Object key, Object val, Node next) { + this.hash = hash; + this.key = key; + this.val = val; + this.next = next; + } + + /** CompareAndSet the hash field */ + final boolean casHash(int cmp, int val) { + return HASH_UPDATER.compareAndSet(this, cmp, val); + } + + /** The number of spins before blocking for a lock */ + static final int MAX_SPINS = + Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1; + + /** + * Spins a while if LOCKED bit set and this node is the first + * of its bin, and then sets WAITING bits on hash field and + * blocks (once) if they are still set. It is OK for this + * method to return even if lock is not available upon exit, + * which enables these simple single-wait mechanics. + * + * The corresponding signalling operation is performed within + * callers: Upon detecting that WAITING has been set when + * unlocking lock (via a failed CAS from non-waiting LOCKED + * state), unlockers acquire the sync lock and perform a + * notifyAll. + * + * The initial sanity check on tab and bounds is not currently + * necessary in the only usages of this method, but enables + * use in other future contexts. + */ + final void tryAwaitLock(AtomicReferenceArray tab, int i) { + if (tab != null && i >= 0 && i < tab.length()) { // sanity check + int r = ThreadLocalRandom.current().nextInt(); // randomize spins + int spins = MAX_SPINS, h; + while (tabAt(tab, i) == this && ((h = hash) & LOCKED) != 0) { + if (spins >= 0) { + r ^= r << 1; r ^= r >>> 3; r ^= r << 10; // xorshift + if (r >= 0 && --spins == 0) + Thread.yield(); // yield before block + } + else if (casHash(h, h | WAITING)) { + synchronized (this) { + if (tabAt(tab, i) == this && + (hash & WAITING) == WAITING) { + try { + wait(); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } + } + else + notifyAll(); // possibly won race vs signaller + } + break; + } + } + } + } + } + + /* ---------------- TreeBins -------------- */ + + /** + * Nodes for use in TreeBins + */ + static final class TreeNode extends Node { + TreeNode parent; // red-black tree links + TreeNode left; + TreeNode right; + TreeNode prev; // needed to unlink next upon deletion + boolean red; + + TreeNode(int hash, Object key, Object val, Node next, TreeNode parent) { + super(hash, key, val, next); + this.parent = parent; + } + } + + /** + * A specialized form of red-black tree for use in bins + * whose size exceeds a threshold. + * + * TreeBins use a special form of comparison for search and + * related operations (which is the main reason we cannot use + * existing collections such as TreeMaps). TreeBins contain + * Comparable elements, but may contain others, as well as + * elements that are Comparable but not necessarily Comparable + * for the same T, so we cannot invoke compareTo among them. To + * handle this, the tree is ordered primarily by hash value, then + * by getClass().getName() order, and then by Comparator order + * among elements of the same class. On lookup at a node, if + * elements are not comparable or compare as 0, both left and + * right children may need to be searched in the case of tied hash + * values. (This corresponds to the full list search that would be + * necessary if all elements were non-Comparable and had tied + * hashes.) The red-black balancing code is updated from + * pre-jdk-collections + * (http://gee.cs.oswego.edu/dl/classes/collections/RBCell.java) + * based in turn on Cormen, Leiserson, and Rivest "Introduction to + * Algorithms" (CLR). + * + * TreeBins also maintain a separate locking discipline than + * regular bins. Because they are forwarded via special MOVED + * nodes at bin heads (which can never change once established), + * we cannot use those nodes as locks. Instead, TreeBin + * extends AbstractQueuedSynchronizer to support a simple form of + * read-write lock. For update operations and table validation, + * the exclusive form of lock behaves in the same way as bin-head + * locks. However, lookups use shared read-lock mechanics to allow + * multiple readers in the absence of writers. Additionally, + * these lookups do not ever block: While the lock is not + * available, they proceed along the slow traversal path (via + * next-pointers) until the lock becomes available or the list is + * exhausted, whichever comes first. (These cases are not fast, + * but maximize aggregate expected throughput.) The AQS mechanics + * for doing this are straightforward. The lock state is held as + * AQS getState(). Read counts are negative; the write count (1) + * is positive. There are no signalling preferences among readers + * and writers. Since we don't need to export full Lock API, we + * just override the minimal AQS methods and use them directly. + */ + static final class TreeBin extends AbstractQueuedSynchronizer { + private static final long serialVersionUID = 2249069246763182397L; + transient TreeNode root; // root of tree + transient TreeNode first; // head of next-pointer list + + /* AQS overrides */ + public final boolean isHeldExclusively() { return getState() > 0; } + public final boolean tryAcquire(int ignore) { + if (compareAndSetState(0, 1)) { + setExclusiveOwnerThread(Thread.currentThread()); + return true; + } + return false; + } + public final boolean tryRelease(int ignore) { + setExclusiveOwnerThread(null); + setState(0); + return true; + } + public final int tryAcquireShared(int ignore) { + for (int c;;) { + if ((c = getState()) > 0) + return -1; + if (compareAndSetState(c, c -1)) + return 1; + } + } + public final boolean tryReleaseShared(int ignore) { + int c; + do {} while (!compareAndSetState(c = getState(), c + 1)); + return c == -1; + } + + /** From CLR */ + private void rotateLeft(TreeNode p) { + if (p != null) { + TreeNode r = p.right, pp, rl; + if ((rl = p.right = r.left) != null) + rl.parent = p; + if ((pp = r.parent = p.parent) == null) + root = r; + else if (pp.left == p) + pp.left = r; + else + pp.right = r; + r.left = p; + p.parent = r; + } + } + + /** From CLR */ + private void rotateRight(TreeNode p) { + if (p != null) { + TreeNode l = p.left, pp, lr; + if ((lr = p.left = l.right) != null) + lr.parent = p; + if ((pp = l.parent = p.parent) == null) + root = l; + else if (pp.right == p) + pp.right = l; + else + pp.left = l; + l.right = p; + p.parent = l; + } + } + + @SuppressWarnings("unchecked") final TreeNode getTreeNode + (int h, Object k, TreeNode p) { + return getTreeNode(h, (RubyObject)k, p); + } + + /** + * Returns the TreeNode (or null if not found) for the given key + * starting at given root. + */ + @SuppressWarnings("unchecked") final TreeNode getTreeNode + (int h, RubyObject k, TreeNode p) { + RubyClass c = k.getMetaClass(); boolean kNotComparable = !k.respondsTo("<=>"); + while (p != null) { + int dir, ph; RubyObject pk; RubyClass pc; + if ((ph = p.hash) == h) { + if ((pk = (RubyObject)p.key) == k || k.equals(pk)) + return p; + if (c != (pc = (RubyClass)pk.getMetaClass()) || + kNotComparable || + (dir = rubyCompare(k, pk)) == 0) { + dir = (c == pc) ? 0 : c.getName().compareTo(pc.getName()); + if (dir == 0) { // if still stuck, need to check both sides + TreeNode r = null, pl, pr; + // try to recurse on the right + if ((pr = p.right) != null && h >= pr.hash && (r = getTreeNode(h, k, pr)) != null) + return r; + // try to continue iterating on the left side + else if ((pl = p.left) != null && h <= pl.hash) + dir = -1; + else // no matching node found + return null; + } + } + } + else + dir = (h < ph) ? -1 : 1; + p = (dir > 0) ? p.right : p.left; + } + return null; + } + + int rubyCompare(RubyObject l, RubyObject r) { + ThreadContext context = l.getMetaClass().getRuntime().getCurrentContext(); + IRubyObject result; + try { + result = l.callMethod(context, "<=>", r); + } catch (RaiseException e) { + // handle objects "lying" about responding to <=>, ie: an Array containing non-comparable keys + if (context.runtime.getNoMethodError().isInstance(e.getException())) { + return 0; + } + throw e; + } + + return result.isNil() ? 0 : RubyNumeric.num2int(result.convertToInteger()); + } + + /** + * Wrapper for getTreeNode used by CHM.get. Tries to obtain + * read-lock to call getTreeNode, but during failure to get + * lock, searches along next links. + */ + final Object getValue(int h, Object k) { + Node r = null; + int c = getState(); // Must read lock state first + for (Node e = first; e != null; e = e.next) { + if (c <= 0 && compareAndSetState(c, c - 1)) { + try { + r = getTreeNode(h, k, root); + } finally { + releaseShared(0); + } + break; + } + else if ((e.hash & HASH_BITS) == h && k.equals(e.key)) { + r = e; + break; + } + else + c = getState(); + } + return r == null ? null : r.val; + } + + @SuppressWarnings("unchecked") final TreeNode putTreeNode + (int h, Object k, Object v) { + return putTreeNode(h, (RubyObject)k, v); + } + + /** + * Finds or adds a node. + * @return null if added + */ + @SuppressWarnings("unchecked") final TreeNode putTreeNode + (int h, RubyObject k, Object v) { + RubyClass c = k.getMetaClass(); + boolean kNotComparable = !k.respondsTo("<=>"); + TreeNode pp = root, p = null; + int dir = 0; + while (pp != null) { // find existing node or leaf to insert at + int ph; RubyObject pk; RubyClass pc; + p = pp; + if ((ph = p.hash) == h) { + if ((pk = (RubyObject)p.key) == k || k.equals(pk)) + return p; + if (c != (pc = pk.getMetaClass()) || + kNotComparable || + (dir = rubyCompare(k, pk)) == 0) { + dir = (c == pc) ? 0 : c.getName().compareTo(pc.getName()); + if (dir == 0) { // if still stuck, need to check both sides + TreeNode r = null, pr; + // try to recurse on the right + if ((pr = p.right) != null && h >= pr.hash && (r = getTreeNode(h, k, pr)) != null) + return r; + else // continue descending down the left subtree + dir = -1; + } + } + } + else + dir = (h < ph) ? -1 : 1; + pp = (dir > 0) ? p.right : p.left; + } + + TreeNode f = first; + TreeNode x = first = new TreeNode(h, (Object)k, v, f, p); + if (p == null) + root = x; + else { // attach and rebalance; adapted from CLR + TreeNode xp, xpp; + if (f != null) + f.prev = x; + if (dir <= 0) + p.left = x; + else + p.right = x; + x.red = true; + while (x != null && (xp = x.parent) != null && xp.red && + (xpp = xp.parent) != null) { + TreeNode xppl = xpp.left; + if (xp == xppl) { + TreeNode y = xpp.right; + if (y != null && y.red) { + y.red = false; + xp.red = false; + xpp.red = true; + x = xpp; + } + else { + if (x == xp.right) { + rotateLeft(x = xp); + xpp = (xp = x.parent) == null ? null : xp.parent; + } + if (xp != null) { + xp.red = false; + if (xpp != null) { + xpp.red = true; + rotateRight(xpp); + } + } + } + } + else { + TreeNode y = xppl; + if (y != null && y.red) { + y.red = false; + xp.red = false; + xpp.red = true; + x = xpp; + } + else { + if (x == xp.left) { + rotateRight(x = xp); + xpp = (xp = x.parent) == null ? null : xp.parent; + } + if (xp != null) { + xp.red = false; + if (xpp != null) { + xpp.red = true; + rotateLeft(xpp); + } + } + } + } + } + TreeNode r = root; + if (r != null && r.red) + r.red = false; + } + return null; + } + + /** + * Removes the given node, that must be present before this + * call. This is messier than typical red-black deletion code + * because we cannot swap the contents of an interior node + * with a leaf successor that is pinned by "next" pointers + * that are accessible independently of lock. So instead we + * swap the tree linkages. + */ + final void deleteTreeNode(TreeNode p) { + TreeNode next = (TreeNode)p.next; // unlink traversal pointers + TreeNode pred = p.prev; + if (pred == null) + first = next; + else + pred.next = next; + if (next != null) + next.prev = pred; + TreeNode replacement; + TreeNode pl = p.left; + TreeNode pr = p.right; + if (pl != null && pr != null) { + TreeNode s = pr, sl; + while ((sl = s.left) != null) // find successor + s = sl; + boolean c = s.red; s.red = p.red; p.red = c; // swap colors + TreeNode sr = s.right; + TreeNode pp = p.parent; + if (s == pr) { // p was s's direct parent + p.parent = s; + s.right = p; + } + else { + TreeNode sp = s.parent; + if ((p.parent = sp) != null) { + if (s == sp.left) + sp.left = p; + else + sp.right = p; + } + if ((s.right = pr) != null) + pr.parent = s; + } + p.left = null; + if ((p.right = sr) != null) + sr.parent = p; + if ((s.left = pl) != null) + pl.parent = s; + if ((s.parent = pp) == null) + root = s; + else if (p == pp.left) + pp.left = s; + else + pp.right = s; + replacement = sr; + } + else + replacement = (pl != null) ? pl : pr; + TreeNode pp = p.parent; + if (replacement == null) { + if (pp == null) { + root = null; + return; + } + replacement = p; + } + else { + replacement.parent = pp; + if (pp == null) + root = replacement; + else if (p == pp.left) + pp.left = replacement; + else + pp.right = replacement; + p.left = p.right = p.parent = null; + } + if (!p.red) { // rebalance, from CLR + TreeNode x = replacement; + while (x != null) { + TreeNode xp, xpl; + if (x.red || (xp = x.parent) == null) { + x.red = false; + break; + } + if (x == (xpl = xp.left)) { + TreeNode sib = xp.right; + if (sib != null && sib.red) { + sib.red = false; + xp.red = true; + rotateLeft(xp); + sib = (xp = x.parent) == null ? null : xp.right; + } + if (sib == null) + x = xp; + else { + TreeNode sl = sib.left, sr = sib.right; + if ((sr == null || !sr.red) && + (sl == null || !sl.red)) { + sib.red = true; + x = xp; + } + else { + if (sr == null || !sr.red) { + if (sl != null) + sl.red = false; + sib.red = true; + rotateRight(sib); + sib = (xp = x.parent) == null ? null : xp.right; + } + if (sib != null) { + sib.red = (xp == null) ? false : xp.red; + if ((sr = sib.right) != null) + sr.red = false; + } + if (xp != null) { + xp.red = false; + rotateLeft(xp); + } + x = root; + } + } + } + else { // symmetric + TreeNode sib = xpl; + if (sib != null && sib.red) { + sib.red = false; + xp.red = true; + rotateRight(xp); + sib = (xp = x.parent) == null ? null : xp.left; + } + if (sib == null) + x = xp; + else { + TreeNode sl = sib.left, sr = sib.right; + if ((sl == null || !sl.red) && + (sr == null || !sr.red)) { + sib.red = true; + x = xp; + } + else { + if (sl == null || !sl.red) { + if (sr != null) + sr.red = false; + sib.red = true; + rotateLeft(sib); + sib = (xp = x.parent) == null ? null : xp.left; + } + if (sib != null) { + sib.red = (xp == null) ? false : xp.red; + if ((sl = sib.left) != null) + sl.red = false; + } + if (xp != null) { + xp.red = false; + rotateRight(xp); + } + x = root; + } + } + } + } + } + if (p == replacement && (pp = p.parent) != null) { + if (p == pp.left) // detach pointers + pp.left = null; + else if (p == pp.right) + pp.right = null; + p.parent = null; + } + } + } + + /* ---------------- Collision reduction methods -------------- */ + + /** + * Spreads higher bits to lower, and also forces top 2 bits to 0. + * Because the table uses power-of-two masking, sets of hashes + * that vary only in bits above the current mask will always + * collide. (Among known examples are sets of Float keys holding + * consecutive whole numbers in small tables.) To counter this, + * we apply a transform that spreads the impact of higher bits + * downward. There is a tradeoff between speed, utility, and + * quality of bit-spreading. Because many common sets of hashes + * are already reasonably distributed across bits (so don't benefit + * from spreading), and because we use trees to handle large sets + * of collisions in bins, we don't need excessively high quality. + */ + private static final int spread(int h) { + h ^= (h >>> 18) ^ (h >>> 12); + return (h ^ (h >>> 10)) & HASH_BITS; + } + + /** + * Replaces a list bin with a tree bin. Call only when locked. + * Fails to replace if the given key is non-comparable or table + * is, or needs, resizing. + */ + private final void replaceWithTreeBin(AtomicReferenceArray tab, int index, Object key) { + if ((key instanceof Comparable) && + (tab.length() >= MAXIMUM_CAPACITY || counter.sum() < (long)sizeCtl)) { + TreeBin t = new TreeBin(); + for (Node e = tabAt(tab, index); e != null; e = e.next) + t.putTreeNode(e.hash & HASH_BITS, e.key, e.val); + setTabAt(tab, index, new Node(MOVED, t, null, null)); + } + } + + /* ---------------- Internal access and update methods -------------- */ + + /** Implementation for get and containsKey */ + private final Object internalGet(Object k) { + int h = spread(k.hashCode()); + retry: for (AtomicReferenceArray tab = table; tab != null;) { + Node e, p; Object ek, ev; int eh; // locals to read fields once + for (e = tabAt(tab, (tab.length() - 1) & h); e != null; e = e.next) { + if ((eh = e.hash) == MOVED) { + if ((ek = e.key) instanceof TreeBin) // search TreeBin + return ((TreeBin)ek).getValue(h, k); + else { // restart with new table + tab = (AtomicReferenceArray)ek; + continue retry; + } + } + else if ((eh & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + } + break; + } + return null; + } + + /** + * Implementation for the four public remove/replace methods: + * Replaces node value with v, conditional upon match of cv if + * non-null. If resulting value is null, delete. + */ + private final Object internalReplace(Object k, Object v, Object cv) { + int h = spread(k.hashCode()); + Object oldVal = null; + for (AtomicReferenceArray tab = table;;) { + Node f; int i, fh; Object fk; + if (tab == null || + (f = tabAt(tab, i = (tab.length() - 1) & h)) == null) + break; + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + boolean deleted = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) { + Object pv = p.val; + if (cv == null || cv == pv || cv.equals(pv)) { + oldVal = pv; + if ((p.val = v) == null) { + deleted = true; + t.deleteTreeNode(p); + } + } + } + } + } finally { + t.release(0); + } + if (validated) { + if (deleted) + counter.add(-1L); + break; + } + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & HASH_BITS) != h && f.next == null) // precheck + break; // rules out possible existence + else if ((fh & LOCKED) != 0) { + checkForResize(); // try resizing if can't get lock + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + boolean validated = false; + boolean deleted = false; + try { + if (tabAt(tab, i) == f) { + validated = true; + for (Node e = f, pred = null;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + ((ev = e.val) != null) && + ((ek = e.key) == k || k.equals(ek))) { + if (cv == null || cv == ev || cv.equals(ev)) { + oldVal = ev; + if ((e.val = v) == null) { + deleted = true; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + } + break; + } + pred = e; + if ((e = e.next) == null) + break; + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (validated) { + if (deleted) + counter.add(-1L); + break; + } + } + } + return oldVal; + } + + /* + * Internal versions of the six insertion methods, each a + * little more complicated than the last. All have + * the same basic structure as the first (internalPut): + * 1. If table uninitialized, create + * 2. If bin empty, try to CAS new node + * 3. If bin stale, use new table + * 4. if bin converted to TreeBin, validate and relay to TreeBin methods + * 5. Lock and validate; if valid, scan and add or update + * + * The others interweave other checks and/or alternative actions: + * * Plain put checks for and performs resize after insertion. + * * putIfAbsent prescans for mapping without lock (and fails to add + * if present), which also makes pre-emptive resize checks worthwhile. + * * computeIfAbsent extends form used in putIfAbsent with additional + * mechanics to deal with, calls, potential exceptions and null + * returns from function call. + * * compute uses the same function-call mechanics, but without + * the prescans + * * merge acts as putIfAbsent in the absent case, but invokes the + * update function if present + * * putAll attempts to pre-allocate enough table space + * and more lazily performs count updates and checks. + * + * Someday when details settle down a bit more, it might be worth + * some factoring to reduce sprawl. + */ + + /** Implementation for put */ + private final Object internalPut(Object k, Object v) { + int h = spread(k.hashCode()); + int count = 0; + for (AtomicReferenceArray tab = table;;) { + int i; Node f; int fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) + break; // no lock when adding to empty bin + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + Object oldVal = null; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 2; + TreeNode p = t.putTreeNode(h, k, v); + if (p != null) { + oldVal = p.val; + p.val = v; + } + } + } finally { + t.release(0); + } + if (count != 0) { + if (oldVal != null) + return oldVal; + break; + } + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + Object oldVal = null; + try { // needed in case equals() throws + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + oldVal = ev; + e.val = v; + break; + } + Node last = e; + if ((e = e.next) == null) { + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { // unlock and signal if needed + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (oldVal != null) + return oldVal; + if (tab.length() <= 64) + count = 2; + break; + } + } + } + counter.add(1L); + if (count > 1) + checkForResize(); + return null; + } + + /** Implementation for putIfAbsent */ + private final Object internalPutIfAbsent(Object k, Object v) { + int h = spread(k.hashCode()); + int count = 0; + for (AtomicReferenceArray tab = table;;) { + int i; Node f; int fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + Object oldVal = null; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 2; + TreeNode p = t.putTreeNode(h, k, v); + if (p != null) + oldVal = p.val; + } + } finally { + t.release(0); + } + if (count != 0) { + if (oldVal != null) + return oldVal; + break; + } + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & HASH_BITS) == h && (fv = f.val) != null && + ((fk = f.key) == k || k.equals(fk))) + return fv; + else { + Node g = f.next; + if (g != null) { // at least 2 nodes -- search and maybe resize + for (Node e = g;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + if ((e = e.next) == null) { + checkForResize(); + break; + } + } + } + if (((fh = f.hash) & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (tabAt(tab, i) == f && f.casHash(fh, fh | LOCKED)) { + Object oldVal = null; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + oldVal = ev; + break; + } + Node last = e; + if ((e = e.next) == null) { + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (oldVal != null) + return oldVal; + if (tab.length() <= 64) + count = 2; + break; + } + } + } + } + counter.add(1L); + if (count > 1) + checkForResize(); + return null; + } + + /** Implementation for computeIfAbsent */ + private final Object internalComputeIfAbsent(K k, + Fun mf) { + int h = spread(k.hashCode()); + Object val = null; + int count = 0; + for (AtomicReferenceArray tab = table;;) { + Node f; int i, fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null) { + Node node = new Node(fh = h | LOCKED, k, null, null); + if (casTabAt(tab, i, null, node)) { + count = 1; + try { + if ((val = mf.apply(k)) != null) + node.val = val; + } finally { + if (val == null) + setTabAt(tab, i, null); + if (!node.casHash(fh, h)) { + node.hash = h; + synchronized (node) { node.notifyAll(); }; + } + } + } + if (count != 0) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean added = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) + val = p.val; + else if ((val = mf.apply(k)) != null) { + added = true; + count = 2; + t.putTreeNode(h, k, val); + } + } + } finally { + t.release(0); + } + if (count != 0) { + if (!added) + return val; + break; + } + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & HASH_BITS) == h && (fv = f.val) != null && + ((fk = f.key) == k || k.equals(fk))) + return fv; + else { + Node g = f.next; + if (g != null) { + for (Node e = g;;) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) + return ev; + if ((e = e.next) == null) { + checkForResize(); + break; + } + } + } + if (((fh = f.hash) & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (tabAt(tab, i) == f && f.casHash(fh, fh | LOCKED)) { + boolean added = false; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = ev; + break; + } + Node last = e; + if ((e = e.next) == null) { + if ((val = mf.apply(k)) != null) { + added = true; + last.next = new Node(h, k, val, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + } + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (!added) + return val; + if (tab.length() <= 64) + count = 2; + break; + } + } + } + } + if (val != null) { + counter.add(1L); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for compute */ + @SuppressWarnings("unchecked") private final Object internalCompute + (K k, boolean onlyIfPresent, BiFun mf) { + int h = spread(k.hashCode()); + Object val = null; + int delta = 0; + int count = 0; + for (AtomicReferenceArray tab = table;;) { + Node f; int i, fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null) { + if (onlyIfPresent) + break; + Node node = new Node(fh = h | LOCKED, k, null, null); + if (casTabAt(tab, i, null, node)) { + try { + count = 1; + if ((val = mf.apply(k, null)) != null) { + node.val = val; + delta = 1; + } + } finally { + if (delta == 0) + setTabAt(tab, i, null); + if (!node.casHash(fh, h)) { + node.hash = h; + synchronized (node) { node.notifyAll(); }; + } + } + } + if (count != 0) + break; + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + Object pv; + if (p == null) { + if (onlyIfPresent) + break; + pv = null; + } else + pv = p.val; + if ((val = mf.apply(k, (V)pv)) != null) { + if (p != null) + p.val = val; + else { + count = 2; + delta = 1; + t.putTreeNode(h, k, val); + } + } + else if (p != null) { + delta = -1; + t.deleteTreeNode(p); + } + } + } finally { + t.release(0); + } + if (count != 0) + break; + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f, pred = null;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = mf.apply(k, (V)ev); + if (val != null) + e.val = val; + else { + delta = -1; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + break; + } + pred = e; + if ((e = e.next) == null) { + if (!onlyIfPresent && (val = mf.apply(k, null)) != null) { + pred.next = new Node(h, k, val, null); + delta = 1; + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + } + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (tab.length() <= 64) + count = 2; + break; + } + } + } + if (delta != 0) { + counter.add((long)delta); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for merge */ + @SuppressWarnings("unchecked") private final Object internalMerge + (K k, V v, BiFun mf) { + int h = spread(k.hashCode()); + Object val = null; + int delta = 0; + int count = 0; + for (AtomicReferenceArray tab = table;;) { + int i; Node f; int fh; Object fk, fv; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null) { + if (casTabAt(tab, i, null, new Node(h, k, v, null))) { + delta = 1; + val = v; + break; + } + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + count = 1; + TreeNode p = t.getTreeNode(h, k, t.root); + val = (p == null) ? v : mf.apply((V)p.val, v); + if (val != null) { + if (p != null) + p.val = val; + else { + count = 2; + delta = 1; + t.putTreeNode(h, k, val); + } + } + else if (p != null) { + delta = -1; + t.deleteTreeNode(p); + } + } + } finally { + t.release(0); + } + if (count != 0) + break; + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & LOCKED) != 0) { + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f, pred = null;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + val = mf.apply((V)ev, v); + if (val != null) + e.val = val; + else { + delta = -1; + Node en = e.next; + if (pred != null) + pred.next = en; + else + setTabAt(tab, i, en); + } + break; + } + pred = e; + if ((e = e.next) == null) { + val = v; + pred.next = new Node(h, k, val, null); + delta = 1; + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (tab.length() <= 64) + count = 2; + break; + } + } + } + if (delta != 0) { + counter.add((long)delta); + if (count > 1) + checkForResize(); + } + return val; + } + + /** Implementation for putAll */ + private final void internalPutAll(Map m) { + tryPresize(m.size()); + long delta = 0L; // number of uncommitted additions + boolean npe = false; // to throw exception on exit for nulls + try { // to clean up counts on other exceptions + for (Map.Entry entry : m.entrySet()) { + Object k, v; + if (entry == null || (k = entry.getKey()) == null || + (v = entry.getValue()) == null) { + npe = true; + break; + } + int h = spread(k.hashCode()); + for (AtomicReferenceArray tab = table;;) { + int i; Node f; int fh; Object fk; + if (tab == null) + tab = initTable(); + else if ((f = tabAt(tab, i = (tab.length() - 1) & h)) == null){ + if (casTabAt(tab, i, null, new Node(h, k, v, null))) { + ++delta; + break; + } + } + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + TreeNode p = t.getTreeNode(h, k, t.root); + if (p != null) + p.val = v; + else { + t.putTreeNode(h, k, v); + ++delta; + } + } + } finally { + t.release(0); + } + if (validated) + break; + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & LOCKED) != 0) { + counter.add(delta); + delta = 0L; + checkForResize(); + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + int count = 0; + try { + if (tabAt(tab, i) == f) { + count = 1; + for (Node e = f;; ++count) { + Object ek, ev; + if ((e.hash & HASH_BITS) == h && + (ev = e.val) != null && + ((ek = e.key) == k || k.equals(ek))) { + e.val = v; + break; + } + Node last = e; + if ((e = e.next) == null) { + ++delta; + last.next = new Node(h, k, v, null); + if (count >= TREE_THRESHOLD) + replaceWithTreeBin(tab, i, k); + break; + } + } + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (count != 0) { + if (count > 1) { + counter.add(delta); + delta = 0L; + checkForResize(); + } + break; + } + } + } + } + } finally { + if (delta != 0) + counter.add(delta); + } + if (npe) + throw new NullPointerException(); + } + + /* ---------------- Table Initialization and Resizing -------------- */ + + /** + * Returns a power of two table size for the given desired capacity. + * See Hackers Delight, sec 3.2 + */ + private static final int tableSizeFor(int c) { + int n = c - 1; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; + } + + /** + * Initializes table, using the size recorded in sizeCtl. + */ + private final AtomicReferenceArray initTable() { + AtomicReferenceArray tab; int sc; + while ((tab = table) == null) { + if ((sc = sizeCtl) < 0) + Thread.yield(); // lost initialization race; just spin + else if (SIZE_CTRL_UPDATER.compareAndSet(this, sc, -1)) { + try { + if ((tab = table) == null) { + int n = (sc > 0) ? sc : DEFAULT_CAPACITY; + tab = table = new AtomicReferenceArray(n); + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + break; + } + } + return tab; + } + + /** + * If table is too small and not already resizing, creates next + * table and transfers bins. Rechecks occupancy after a transfer + * to see if another resize is already needed because resizings + * are lagging additions. + */ + private final void checkForResize() { + AtomicReferenceArray tab; int n, sc; + while ((tab = table) != null && + (n = tab.length()) < MAXIMUM_CAPACITY && + (sc = sizeCtl) >= 0 && counter.sum() >= (long)sc && + SIZE_CTRL_UPDATER.compareAndSet(this, sc, -1)) { + try { + if (tab == table) { + table = rebuild(tab); + sc = (n << 1) - (n >>> 1); + } + } finally { + sizeCtl = sc; + } + } + } + + /** + * Tries to presize table to accommodate the given number of elements. + * + * @param size number of elements (doesn't need to be perfectly accurate) + */ + private final void tryPresize(int size) { + int c = (size >= (MAXIMUM_CAPACITY >>> 1)) ? MAXIMUM_CAPACITY : + tableSizeFor(size + (size >>> 1) + 1); + int sc; + while ((sc = sizeCtl) >= 0) { + AtomicReferenceArray tab = table; int n; + if (tab == null || (n = tab.length()) == 0) { + n = (sc > c) ? sc : c; + if (SIZE_CTRL_UPDATER.compareAndSet(this, sc, -1)) { + try { + if (table == tab) { + table = new AtomicReferenceArray(n); + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + } + } + else if (c <= sc || n >= MAXIMUM_CAPACITY) + break; + else if (SIZE_CTRL_UPDATER.compareAndSet(this, sc, -1)) { + try { + if (table == tab) { + table = rebuild(tab); + sc = (n << 1) - (n >>> 1); + } + } finally { + sizeCtl = sc; + } + } + } + } + + /* + * Moves and/or copies the nodes in each bin to new table. See + * above for explanation. + * + * @return the new table + */ + private static final AtomicReferenceArray rebuild(AtomicReferenceArray tab) { + int n = tab.length(); + AtomicReferenceArray nextTab = new AtomicReferenceArray(n << 1); + Node fwd = new Node(MOVED, nextTab, null, null); + int[] buffer = null; // holds bins to revisit; null until needed + Node rev = null; // reverse forwarder; null until needed + int nbuffered = 0; // the number of bins in buffer list + int bufferIndex = 0; // buffer index of current buffered bin + int bin = n - 1; // current non-buffered bin or -1 if none + + for (int i = bin;;) { // start upwards sweep + int fh; Node f; + if ((f = tabAt(tab, i)) == null) { + if (bin >= 0) { // Unbuffered; no lock needed (or available) + if (!casTabAt(tab, i, f, fwd)) + continue; + } + else { // transiently use a locked forwarding node + Node g = new Node(MOVED|LOCKED, nextTab, null, null); + if (!casTabAt(tab, i, f, g)) + continue; + setTabAt(nextTab, i, null); + setTabAt(nextTab, i + n, null); + setTabAt(tab, i, fwd); + if (!g.casHash(MOVED|LOCKED, MOVED)) { + g.hash = MOVED; + synchronized (g) { g.notifyAll(); } + } + } + } + else if ((fh = f.hash) == MOVED) { + Object fk = f.key; + if (fk instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + boolean validated = false; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + validated = true; + splitTreeBin(nextTab, i, t); + setTabAt(tab, i, fwd); + } + } finally { + t.release(0); + } + if (!validated) + continue; + } + } + else if ((fh & LOCKED) == 0 && f.casHash(fh, fh|LOCKED)) { + boolean validated = false; + try { // split to lo and hi lists; copying as needed + if (tabAt(tab, i) == f) { + validated = true; + splitBin(nextTab, i, f); + setTabAt(tab, i, fwd); + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + if (!validated) + continue; + } + else { + if (buffer == null) // initialize buffer for revisits + buffer = new int[TRANSFER_BUFFER_SIZE]; + if (bin < 0 && bufferIndex > 0) { + int j = buffer[--bufferIndex]; + buffer[bufferIndex] = i; + i = j; // swap with another bin + continue; + } + if (bin < 0 || nbuffered >= TRANSFER_BUFFER_SIZE) { + f.tryAwaitLock(tab, i); + continue; // no other options -- block + } + if (rev == null) // initialize reverse-forwarder + rev = new Node(MOVED, tab, null, null); + if (tabAt(tab, i) != f || (f.hash & LOCKED) == 0) + continue; // recheck before adding to list + buffer[nbuffered++] = i; + setTabAt(nextTab, i, rev); // install place-holders + setTabAt(nextTab, i + n, rev); + } + + if (bin > 0) + i = --bin; + else if (buffer != null && nbuffered > 0) { + bin = -1; + i = buffer[bufferIndex = --nbuffered]; + } + else + return nextTab; + } + } + + /** + * Splits a normal bin with list headed by e into lo and hi parts; + * installs in given table. + */ + private static void splitBin(AtomicReferenceArray nextTab, int i, Node e) { + int bit = nextTab.length() >>> 1; // bit to split on + int runBit = e.hash & bit; + Node lastRun = e, lo = null, hi = null; + for (Node p = e.next; p != null; p = p.next) { + int b = p.hash & bit; + if (b != runBit) { + runBit = b; + lastRun = p; + } + } + if (runBit == 0) + lo = lastRun; + else + hi = lastRun; + for (Node p = e; p != lastRun; p = p.next) { + int ph = p.hash & HASH_BITS; + Object pk = p.key, pv = p.val; + if ((ph & bit) == 0) + lo = new Node(ph, pk, pv, lo); + else + hi = new Node(ph, pk, pv, hi); + } + setTabAt(nextTab, i, lo); + setTabAt(nextTab, i + bit, hi); + } + + /** + * Splits a tree bin into lo and hi parts; installs in given table. + */ + private static void splitTreeBin(AtomicReferenceArray nextTab, int i, TreeBin t) { + int bit = nextTab.length() >>> 1; + TreeBin lt = new TreeBin(); + TreeBin ht = new TreeBin(); + int lc = 0, hc = 0; + for (Node e = t.first; e != null; e = e.next) { + int h = e.hash & HASH_BITS; + Object k = e.key, v = e.val; + if ((h & bit) == 0) { + ++lc; + lt.putTreeNode(h, k, v); + } + else { + ++hc; + ht.putTreeNode(h, k, v); + } + } + Node ln, hn; // throw away trees if too small + if (lc <= (TREE_THRESHOLD >>> 1)) { + ln = null; + for (Node p = lt.first; p != null; p = p.next) + ln = new Node(p.hash, p.key, p.val, ln); + } + else + ln = new Node(MOVED, lt, null, null); + setTabAt(nextTab, i, ln); + if (hc <= (TREE_THRESHOLD >>> 1)) { + hn = null; + for (Node p = ht.first; p != null; p = p.next) + hn = new Node(p.hash, p.key, p.val, hn); + } + else + hn = new Node(MOVED, ht, null, null); + setTabAt(nextTab, i + bit, hn); + } + + /** + * Implementation for clear. Steps through each bin, removing all + * nodes. + */ + private final void internalClear() { + long delta = 0L; // negative number of deletions + int i = 0; + AtomicReferenceArray tab = table; + while (tab != null && i < tab.length()) { + int fh; Object fk; + Node f = tabAt(tab, i); + if (f == null) + ++i; + else if ((fh = f.hash) == MOVED) { + if ((fk = f.key) instanceof TreeBin) { + TreeBin t = (TreeBin)fk; + t.acquire(0); + try { + if (tabAt(tab, i) == f) { + for (Node p = t.first; p != null; p = p.next) { + if (p.val != null) { // (currently always true) + p.val = null; + --delta; + } + } + t.first = null; + t.root = null; + ++i; + } + } finally { + t.release(0); + } + } + else + tab = (AtomicReferenceArray)fk; + } + else if ((fh & LOCKED) != 0) { + counter.add(delta); // opportunistically update count + delta = 0L; + f.tryAwaitLock(tab, i); + } + else if (f.casHash(fh, fh | LOCKED)) { + try { + if (tabAt(tab, i) == f) { + for (Node e = f; e != null; e = e.next) { + if (e.val != null) { // (currently always true) + e.val = null; + --delta; + } + } + setTabAt(tab, i, null); + ++i; + } + } finally { + if (!f.casHash(fh | LOCKED, fh)) { + f.hash = fh; + synchronized (f) { f.notifyAll(); }; + } + } + } + } + if (delta != 0) + counter.add(delta); + } + + /* ----------------Table Traversal -------------- */ + + /** + * Encapsulates traversal for methods such as containsValue; also + * serves as a base class for other iterators and bulk tasks. + * + * At each step, the iterator snapshots the key ("nextKey") and + * value ("nextVal") of a valid node (i.e., one that, at point of + * snapshot, has a non-null user value). Because val fields can + * change (including to null, indicating deletion), field nextVal + * might not be accurate at point of use, but still maintains the + * weak consistency property of holding a value that was once + * valid. To support iterator.remove, the nextKey field is not + * updated (nulled out) when the iterator cannot advance. + * + * Internal traversals directly access these fields, as in: + * {@code while (it.advance() != null) { process(it.nextKey); }} + * + * Exported iterators must track whether the iterator has advanced + * (in hasNext vs next) (by setting/checking/nulling field + * nextVal), and then extract key, value, or key-value pairs as + * return values of next(). + * + * The iterator visits once each still-valid node that was + * reachable upon iterator construction. It might miss some that + * were added to a bin after the bin was visited, which is OK wrt + * consistency guarantees. Maintaining this property in the face + * of possible ongoing resizes requires a fair amount of + * bookkeeping state that is difficult to optimize away amidst + * volatile accesses. Even so, traversal maintains reasonable + * throughput. + * + * Normally, iteration proceeds bin-by-bin traversing lists. + * However, if the table has been resized, then all future steps + * must traverse both the bin at the current index as well as at + * (index + baseSize); and so on for further resizings. To + * paranoically cope with potential sharing by users of iterators + * across threads, iteration terminates if a bounds checks fails + * for a table read. + * + * This class extends ForkJoinTask to streamline parallel + * iteration in bulk operations (see BulkTask). This adds only an + * int of space overhead, which is close enough to negligible in + * cases where it is not needed to not worry about it. Because + * ForkJoinTask is Serializable, but iterators need not be, we + * need to add warning suppressions. + */ + @SuppressWarnings("serial") static class Traverser { + final ConcurrentHashMapV8 map; + Node next; // the next entry to use + K nextKey; // cached key field of next + V nextVal; // cached val field of next + AtomicReferenceArray tab; // current table; updated if resized + int index; // index of bin to use next + int baseIndex; // current index of initial table + int baseLimit; // index bound for initial table + int baseSize; // initial table size + + /** Creates iterator for all entries in the table. */ + Traverser(ConcurrentHashMapV8 map) { + this.map = map; + } + + /** Creates iterator for split() methods */ + Traverser(Traverser it) { + ConcurrentHashMapV8 m; AtomicReferenceArray t; + if ((m = this.map = it.map) == null) + t = null; + else if ((t = it.tab) == null && // force parent tab initialization + (t = it.tab = m.table) != null) + it.baseLimit = it.baseSize = t.length(); + this.tab = t; + this.baseSize = it.baseSize; + it.baseLimit = this.index = this.baseIndex = + ((this.baseLimit = it.baseLimit) + it.baseIndex + 1) >>> 1; + } + + /** + * Advances next; returns nextVal or null if terminated. + * See above for explanation. + */ + final V advance() { + Node e = next; + V ev = null; + outer: do { + if (e != null) // advance past used/skipped node + e = e.next; + while (e == null) { // get to next non-null bin + ConcurrentHashMapV8 m; + AtomicReferenceArray t; int b, i, n; Object ek; // checks must use locals + if ((t = tab) != null) + n = t.length(); + else if ((m = map) != null && (t = tab = m.table) != null) + n = baseLimit = baseSize = t.length(); + else + break outer; + if ((b = baseIndex) >= baseLimit || + (i = index) < 0 || i >= n) + break outer; + if ((e = tabAt(t, i)) != null && e.hash == MOVED) { + if ((ek = e.key) instanceof TreeBin) + e = ((TreeBin)ek).first; + else { + tab = (AtomicReferenceArray)ek; + continue; // restarts due to null val + } + } // visit upper slots if present + index = (i += baseSize) < n ? i : (baseIndex = b + 1); + } + nextKey = (K) e.key; + } while ((ev = (V) e.val) == null); // skip deleted or special nodes + next = e; + return nextVal = ev; + } + + public final void remove() { + Object k = nextKey; + if (k == null && (advance() == null || (k = nextKey) == null)) + throw new IllegalStateException(); + map.internalReplace(k, null, null); + } + + public final boolean hasNext() { + return nextVal != null || advance() != null; + } + + public final boolean hasMoreElements() { return hasNext(); } + public final void setRawResult(Object x) { } + public R getRawResult() { return null; } + public boolean exec() { return true; } + } + + /* ---------------- Public operations -------------- */ + + /** + * Creates a new, empty map with the default initial table size (16). + */ + public ConcurrentHashMapV8() { + this.counter = new LongAdder(); + } + + /** + * Creates a new, empty map with an initial table size + * accommodating the specified number of elements without the need + * to dynamically resize. + * + * @param initialCapacity The implementation performs internal + * sizing to accommodate this many elements. + * @throws IllegalArgumentException if the initial capacity of + * elements is negative + */ + public ConcurrentHashMapV8(int initialCapacity) { + if (initialCapacity < 0) + throw new IllegalArgumentException(); + int cap = ((initialCapacity >= (MAXIMUM_CAPACITY >>> 1)) ? + MAXIMUM_CAPACITY : + tableSizeFor(initialCapacity + (initialCapacity >>> 1) + 1)); + this.counter = new LongAdder(); + this.sizeCtl = cap; + } + + /** + * Creates a new map with the same mappings as the given map. + * + * @param m the map + */ + public ConcurrentHashMapV8(Map m) { + this.counter = new LongAdder(); + this.sizeCtl = DEFAULT_CAPACITY; + internalPutAll(m); + } + + /** + * Creates a new, empty map with an initial table size based on + * the given number of elements ({@code initialCapacity}) and + * initial table density ({@code loadFactor}). + * + * @param initialCapacity the initial capacity. The implementation + * performs internal sizing to accommodate this many elements, + * given the specified load factor. + * @param loadFactor the load factor (table density) for + * establishing the initial table size + * @throws IllegalArgumentException if the initial capacity of + * elements is negative or the load factor is nonpositive + * + * @since 1.6 + */ + public ConcurrentHashMapV8(int initialCapacity, float loadFactor) { + this(initialCapacity, loadFactor, 1); + } + + /** + * Creates a new, empty map with an initial table size based on + * the given number of elements ({@code initialCapacity}), table + * density ({@code loadFactor}), and number of concurrently + * updating threads ({@code concurrencyLevel}). + * + * @param initialCapacity the initial capacity. The implementation + * performs internal sizing to accommodate this many elements, + * given the specified load factor. + * @param loadFactor the load factor (table density) for + * establishing the initial table size + * @param concurrencyLevel the estimated number of concurrently + * updating threads. The implementation may use this value as + * a sizing hint. + * @throws IllegalArgumentException if the initial capacity is + * negative or the load factor or concurrencyLevel are + * nonpositive + */ + public ConcurrentHashMapV8(int initialCapacity, + float loadFactor, int concurrencyLevel) { + if (!(loadFactor > 0.0f) || initialCapacity < 0 || concurrencyLevel <= 0) + throw new IllegalArgumentException(); + if (initialCapacity < concurrencyLevel) // Use at least as many bins + initialCapacity = concurrencyLevel; // as estimated threads + long size = (long)(1.0 + (long)initialCapacity / loadFactor); + int cap = (size >= (long)MAXIMUM_CAPACITY) ? + MAXIMUM_CAPACITY : tableSizeFor((int)size); + this.counter = new LongAdder(); + this.sizeCtl = cap; + } + + /** + * Creates a new {@link Set} backed by a ConcurrentHashMapV8 + * from the given type to {@code Boolean.TRUE}. + * + * @return the new set + */ + public static KeySetView newKeySet() { + return new KeySetView(new ConcurrentHashMapV8(), + Boolean.TRUE); + } + + /** + * Creates a new {@link Set} backed by a ConcurrentHashMapV8 + * from the given type to {@code Boolean.TRUE}. + * + * @param initialCapacity The implementation performs internal + * sizing to accommodate this many elements. + * @throws IllegalArgumentException if the initial capacity of + * elements is negative + * @return the new set + */ + public static KeySetView newKeySet(int initialCapacity) { + return new KeySetView(new ConcurrentHashMapV8(initialCapacity), + Boolean.TRUE); + } + + /** + * {@inheritDoc} + */ + public boolean isEmpty() { + return counter.sum() <= 0L; // ignore transient negative values + } + + /** + * {@inheritDoc} + */ + public int size() { + long n = counter.sum(); + return ((n < 0L) ? 0 : + (n > (long)Integer.MAX_VALUE) ? Integer.MAX_VALUE : + (int)n); + } + + /** + * Returns the number of mappings. This method should be used + * instead of {@link #size} because a ConcurrentHashMapV8 may + * contain more mappings than can be represented as an int. The + * value returned is a snapshot; the actual count may differ if + * there are ongoing concurrent insertions or removals. + * + * @return the number of mappings + */ + public long mappingCount() { + long n = counter.sum(); + return (n < 0L) ? 0L : n; // ignore transient negative values + } + + /** + * Returns the value to which the specified key is mapped, + * or {@code null} if this map contains no mapping for the key. + * + *

              More formally, if this map contains a mapping from a key + * {@code k} to a value {@code v} such that {@code key.equals(k)}, + * then this method returns {@code v}; otherwise it returns + * {@code null}. (There can be at most one such mapping.) + * + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V get(Object key) { + if (key == null) + throw new NullPointerException(); + return (V)internalGet(key); + } + + /** + * Returns the value to which the specified key is mapped, + * or the given defaultValue if this map contains no mapping for the key. + * + * @param key the key + * @param defaultValue the value to return if this map contains + * no mapping for the given key + * @return the mapping for the key, if present; else the defaultValue + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V getValueOrDefault(Object key, V defaultValue) { + if (key == null) + throw new NullPointerException(); + V v = (V) internalGet(key); + return v == null ? defaultValue : v; + } + + /** + * Tests if the specified object is a key in this table. + * + * @param key possible key + * @return {@code true} if and only if the specified object + * is a key in this table, as determined by the + * {@code equals} method; {@code false} otherwise + * @throws NullPointerException if the specified key is null + */ + public boolean containsKey(Object key) { + if (key == null) + throw new NullPointerException(); + return internalGet(key) != null; + } + + /** + * Returns {@code true} if this map maps one or more keys to the + * specified value. Note: This method may require a full traversal + * of the map, and is much slower than method {@code containsKey}. + * + * @param value value whose presence in this map is to be tested + * @return {@code true} if this map maps one or more keys to the + * specified value + * @throws NullPointerException if the specified value is null + */ + public boolean containsValue(Object value) { + if (value == null) + throw new NullPointerException(); + Object v; + Traverser it = new Traverser(this); + while ((v = it.advance()) != null) { + if (v == value || value.equals(v)) + return true; + } + return false; + } + + public K findKey(Object value) { + if (value == null) + throw new NullPointerException(); + Object v; + Traverser it = new Traverser(this); + while ((v = it.advance()) != null) { + if (v == value || value.equals(v)) + return it.nextKey; + } + return null; + } + + /** + * Legacy method testing if some key maps into the specified value + * in this table. This method is identical in functionality to + * {@link #containsValue}, and exists solely to ensure + * full compatibility with class {@link java.util.Hashtable}, + * which supported this method prior to introduction of the + * Java Collections framework. + * + * @param value a value to search for + * @return {@code true} if and only if some key maps to the + * {@code value} argument in this table as + * determined by the {@code equals} method; + * {@code false} otherwise + * @throws NullPointerException if the specified value is null + */ + public boolean contains(Object value) { + return containsValue(value); + } + + /** + * Maps the specified key to the specified value in this table. + * Neither the key nor the value can be null. + * + *

              The value can be retrieved by calling the {@code get} method + * with a key that is equal to the original key. + * + * @param key key with which the specified value is to be associated + * @param value value to be associated with the specified key + * @return the previous value associated with {@code key}, or + * {@code null} if there was no mapping for {@code key} + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V put(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalPut(key, value); + } + + /** + * {@inheritDoc} + * + * @return the previous value associated with the specified key, + * or {@code null} if there was no mapping for the key + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V putIfAbsent(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalPutIfAbsent(key, value); + } + + /** + * Copies all of the mappings from the specified map to this one. + * These mappings replace any mappings that this map had for any of the + * keys currently in the specified map. + * + * @param m mappings to be stored in this map + */ + public void putAll(Map m) { + internalPutAll(m); + } + + /** + * If the specified key is not already associated with a value, + * computes its value using the given mappingFunction and enters + * it into the map unless null. This is equivalent to + *

               {@code
              +     * if (map.containsKey(key))
              +     *   return map.get(key);
              +     * value = mappingFunction.apply(key);
              +     * if (value != null)
              +     *   map.put(key, value);
              +     * return value;}
              + * + * except that the action is performed atomically. If the + * function returns {@code null} no mapping is recorded. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and no mapping is recorded. Some + * attempted update operations on this map by other threads may be + * blocked while computation is in progress, so the computation + * should be short and simple, and must not attempt to update any + * other mappings of this Map. The most appropriate usage is to + * construct a new object serving as an initial mapped value, or + * memoized result, as in: + * + *
               {@code
              +     * map.computeIfAbsent(key, new Fun() {
              +     *   public V map(K k) { return new Value(f(k)); }});}
              + * + * @param key key with which the specified value is to be associated + * @param mappingFunction the function to compute a value + * @return the current (existing or computed) value associated with + * the specified key, or null if the computed value is null + * @throws NullPointerException if the specified key or mappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the mappingFunction does so, + * in which case the mapping is left unestablished + */ + @SuppressWarnings("unchecked") public V computeIfAbsent + (K key, Fun mappingFunction) { + if (key == null || mappingFunction == null) + throw new NullPointerException(); + return (V)internalComputeIfAbsent(key, mappingFunction); + } + + /** + * If the given key is present, computes a new mapping value given a key and + * its current mapped value. This is equivalent to + *
               {@code
              +     *   if (map.containsKey(key)) {
              +     *     value = remappingFunction.apply(key, map.get(key));
              +     *     if (value != null)
              +     *       map.put(key, value);
              +     *     else
              +     *       map.remove(key);
              +     *   }
              +     * }
              + * + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. For example, + * to either create or append new messages to a value mapping: + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @return the new value associated with the specified key, or null if none + * @throws NullPointerException if the specified key or remappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the remappingFunction does so, + * in which case the mapping is unchanged + */ + @SuppressWarnings("unchecked") public V computeIfPresent + (K key, BiFun remappingFunction) { + if (key == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalCompute(key, true, remappingFunction); + } + + /** + * Computes a new mapping value given a key and + * its current mapped value (or {@code null} if there is no current + * mapping). This is equivalent to + *
               {@code
              +     *   value = remappingFunction.apply(key, map.get(key));
              +     *   if (value != null)
              +     *     map.put(key, value);
              +     *   else
              +     *     map.remove(key);
              +     * }
              + * + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. For example, + * to either create or append new messages to a value mapping: + * + *
               {@code
              +     * Map map = ...;
              +     * final String msg = ...;
              +     * map.compute(key, new BiFun() {
              +     *   public String apply(Key k, String v) {
              +     *    return (v == null) ? msg : v + msg;});}}
              + * + * @param key key with which the specified value is to be associated + * @param remappingFunction the function to compute a value + * @return the new value associated with the specified key, or null if none + * @throws NullPointerException if the specified key or remappingFunction + * is null + * @throws IllegalStateException if the computation detectably + * attempts a recursive update to this map that would + * otherwise never complete + * @throws RuntimeException or Error if the remappingFunction does so, + * in which case the mapping is unchanged + */ + @SuppressWarnings("unchecked") public V compute + (K key, BiFun remappingFunction) { + if (key == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalCompute(key, false, remappingFunction); + } + + /** + * If the specified key is not already associated + * with a value, associate it with the given value. + * Otherwise, replace the value with the results of + * the given remapping function. This is equivalent to: + *
               {@code
              +     *   if (!map.containsKey(key))
              +     *     map.put(value);
              +     *   else {
              +     *     newValue = remappingFunction.apply(map.get(key), value);
              +     *     if (value != null)
              +     *       map.put(key, value);
              +     *     else
              +     *       map.remove(key);
              +     *   }
              +     * }
              + * except that the action is performed atomically. If the + * function returns {@code null}, the mapping is removed. If the + * function itself throws an (unchecked) exception, the exception + * is rethrown to its caller, and the current mapping is left + * unchanged. Some attempted update operations on this map by + * other threads may be blocked while computation is in progress, + * so the computation should be short and simple, and must not + * attempt to update any other mappings of this Map. + */ + @SuppressWarnings("unchecked") public V merge + (K key, V value, BiFun remappingFunction) { + if (key == null || value == null || remappingFunction == null) + throw new NullPointerException(); + return (V)internalMerge(key, value, remappingFunction); + } + + /** + * Removes the key (and its corresponding value) from this map. + * This method does nothing if the key is not in the map. + * + * @param key the key that needs to be removed + * @return the previous value associated with {@code key}, or + * {@code null} if there was no mapping for {@code key} + * @throws NullPointerException if the specified key is null + */ + @SuppressWarnings("unchecked") public V remove(Object key) { + if (key == null) + throw new NullPointerException(); + return (V)internalReplace(key, null, null); + } + + /** + * {@inheritDoc} + * + * @throws NullPointerException if the specified key is null + */ + public boolean remove(Object key, Object value) { + if (key == null) + throw new NullPointerException(); + if (value == null) + return false; + return internalReplace(key, null, value) != null; + } + + /** + * {@inheritDoc} + * + * @throws NullPointerException if any of the arguments are null + */ + public boolean replace(K key, V oldValue, V newValue) { + if (key == null || oldValue == null || newValue == null) + throw new NullPointerException(); + return internalReplace(key, newValue, oldValue) != null; + } + + /** + * {@inheritDoc} + * + * @return the previous value associated with the specified key, + * or {@code null} if there was no mapping for the key + * @throws NullPointerException if the specified key or value is null + */ + @SuppressWarnings("unchecked") public V replace(K key, V value) { + if (key == null || value == null) + throw new NullPointerException(); + return (V)internalReplace(key, value, null); + } + + /** + * Removes all of the mappings from this map. + */ + public void clear() { + internalClear(); + } + + /** + * Returns a {@link Set} view of the keys contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. + * + * @return the set view + */ + public KeySetView keySet() { + KeySetView ks = keySet; + return (ks != null) ? ks : (keySet = new KeySetView(this, null)); + } + + /** + * Returns a {@link Set} view of the keys in this map, using the + * given common mapped value for any additions (i.e., {@link + * Collection#add} and {@link Collection#addAll}). This is of + * course only appropriate if it is acceptable to use the same + * value for all additions from this view. + * + * @param mappedValue the mapped value to use for any + * additions. + * @return the set view + * @throws NullPointerException if the mappedValue is null + */ + public KeySetView keySet(V mappedValue) { + if (mappedValue == null) + throw new NullPointerException(); + return new KeySetView(this, mappedValue); + } + + /** + * Returns a {@link Collection} view of the values contained in this map. + * The collection is backed by the map, so changes to the map are + * reflected in the collection, and vice-versa. + */ + public ValuesView values() { + ValuesView vs = values; + return (vs != null) ? vs : (values = new ValuesView(this)); + } + + /** + * Returns a {@link Set} view of the mappings contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. The set supports element + * removal, which removes the corresponding mapping from the map, + * via the {@code Iterator.remove}, {@code Set.remove}, + * {@code removeAll}, {@code retainAll}, and {@code clear} + * operations. It does not support the {@code add} or + * {@code addAll} operations. + * + *

              The view's {@code iterator} is a "weakly consistent" iterator + * that will never throw {@link ConcurrentModificationException}, + * and guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not guaranteed to) + * reflect any modifications subsequent to construction. + */ + public Set> entrySet() { + EntrySetView es = entrySet; + return (es != null) ? es : (entrySet = new EntrySetView(this)); + } + + /** + * Returns an enumeration of the keys in this table. + * + * @return an enumeration of the keys in this table + * @see #keySet() + */ + public Enumeration keys() { + return new KeyIterator(this); + } + + /** + * Returns an enumeration of the values in this table. + * + * @return an enumeration of the values in this table + * @see #values() + */ + public Enumeration elements() { + return new ValueIterator(this); + } + + /** + * Returns a partitionable iterator of the keys in this map. + * + * @return a partitionable iterator of the keys in this map + */ + public Spliterator keySpliterator() { + return new KeyIterator(this); + } + + /** + * Returns a partitionable iterator of the values in this map. + * + * @return a partitionable iterator of the values in this map + */ + public Spliterator valueSpliterator() { + return new ValueIterator(this); + } + + /** + * Returns a partitionable iterator of the entries in this map. + * + * @return a partitionable iterator of the entries in this map + */ + public Spliterator> entrySpliterator() { + return new EntryIterator(this); + } + + /** + * Returns the hash code value for this {@link Map}, i.e., + * the sum of, for each key-value pair in the map, + * {@code key.hashCode() ^ value.hashCode()}. + * + * @return the hash code value for this map + */ + public int hashCode() { + int h = 0; + Traverser it = new Traverser(this); + Object v; + while ((v = it.advance()) != null) { + h += it.nextKey.hashCode() ^ v.hashCode(); + } + return h; + } + + /** + * Returns a string representation of this map. The string + * representation consists of a list of key-value mappings (in no + * particular order) enclosed in braces ("{@code {}}"). Adjacent + * mappings are separated by the characters {@code ", "} (comma + * and space). Each key-value mapping is rendered as the key + * followed by an equals sign ("{@code =}") followed by the + * associated value. + * + * @return a string representation of this map + */ + public String toString() { + Traverser it = new Traverser(this); + StringBuilder sb = new StringBuilder(); + sb.append('{'); + Object v; + if ((v = it.advance()) != null) { + for (;;) { + Object k = it.nextKey; + sb.append(k == this ? "(this Map)" : k); + sb.append('='); + sb.append(v == this ? "(this Map)" : v); + if ((v = it.advance()) == null) + break; + sb.append(',').append(' '); + } + } + return sb.append('}').toString(); + } + + /** + * Compares the specified object with this map for equality. + * Returns {@code true} if the given object is a map with the same + * mappings as this map. This operation may return misleading + * results if either map is concurrently modified during execution + * of this method. + * + * @param o object to be compared for equality with this map + * @return {@code true} if the specified object is equal to this map + */ + public boolean equals(Object o) { + if (o != this) { + if (!(o instanceof Map)) + return false; + Map m = (Map) o; + Traverser it = new Traverser(this); + Object val; + while ((val = it.advance()) != null) { + Object v = m.get(it.nextKey); + if (v == null || (v != val && !v.equals(val))) + return false; + } + for (Map.Entry e : m.entrySet()) { + Object mk, mv, v; + if ((mk = e.getKey()) == null || + (mv = e.getValue()) == null || + (v = internalGet(mk)) == null || + (mv != v && !mv.equals(v))) + return false; + } + } + return true; + } + + /* ----------------Iterators -------------- */ + + @SuppressWarnings("serial") static final class KeyIterator extends Traverser + implements Spliterator, Enumeration { + KeyIterator(ConcurrentHashMapV8 map) { super(map); } + KeyIterator(Traverser it) { + super(it); + } + public KeyIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new KeyIterator(this); + } + @SuppressWarnings("unchecked") public final K next() { + if (nextVal == null && advance() == null) + throw new NoSuchElementException(); + Object k = nextKey; + nextVal = null; + return (K) k; + } + + public final K nextElement() { return next(); } + } + + @SuppressWarnings("serial") static final class ValueIterator extends Traverser + implements Spliterator, Enumeration { + ValueIterator(ConcurrentHashMapV8 map) { super(map); } + ValueIterator(Traverser it) { + super(it); + } + public ValueIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new ValueIterator(this); + } + + @SuppressWarnings("unchecked") public final V next() { + Object v; + if ((v = nextVal) == null && (v = advance()) == null) + throw new NoSuchElementException(); + nextVal = null; + return (V) v; + } + + public final V nextElement() { return next(); } + } + + @SuppressWarnings("serial") static final class EntryIterator extends Traverser + implements Spliterator> { + EntryIterator(ConcurrentHashMapV8 map) { super(map); } + EntryIterator(Traverser it) { + super(it); + } + public EntryIterator split() { + if (nextKey != null) + throw new IllegalStateException(); + return new EntryIterator(this); + } + + @SuppressWarnings("unchecked") public final Map.Entry next() { + Object v; + if ((v = nextVal) == null && (v = advance()) == null) + throw new NoSuchElementException(); + Object k = nextKey; + nextVal = null; + return new MapEntry((K)k, (V)v, map); + } + } + + /** + * Exported Entry for iterators + */ + static final class MapEntry implements Map.Entry { + final K key; // non-null + V val; // non-null + final ConcurrentHashMapV8 map; + MapEntry(K key, V val, ConcurrentHashMapV8 map) { + this.key = key; + this.val = val; + this.map = map; + } + public final K getKey() { return key; } + public final V getValue() { return val; } + public final int hashCode() { return key.hashCode() ^ val.hashCode(); } + public final String toString(){ return key + "=" + val; } + + public final boolean equals(Object o) { + Object k, v; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (v = e.getValue()) != null && + (k == key || k.equals(key)) && + (v == val || v.equals(val))); + } + + /** + * Sets our entry's value and writes through to the map. The + * value to return is somewhat arbitrary here. Since we do not + * necessarily track asynchronous changes, the most recent + * "previous" value could be different from what we return (or + * could even have been removed in which case the put will + * re-establish). We do not and cannot guarantee more. + */ + public final V setValue(V value) { + if (value == null) throw new NullPointerException(); + V v = val; + val = value; + map.put(key, value); + return v; + } + } + + /* ---------------- Serialization Support -------------- */ + + /** + * Stripped-down version of helper class used in previous version, + * declared for the sake of serialization compatibility + */ + static class Segment implements Serializable { + private static final long serialVersionUID = 2249069246763182397L; + final float loadFactor; + Segment(float lf) { this.loadFactor = lf; } + } + + /** + * Saves the state of the {@code ConcurrentHashMapV8} instance to a + * stream (i.e., serializes it). + * @param s the stream + * @serialData + * the key (Object) and value (Object) + * for each key-value mapping, followed by a null pair. + * The key-value mappings are emitted in no particular order. + */ + @SuppressWarnings("unchecked") private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { + if (segments == null) { // for serialization compatibility + segments = (Segment[]) + new Segment[DEFAULT_CONCURRENCY_LEVEL]; + for (int i = 0; i < segments.length; ++i) + segments[i] = new Segment(LOAD_FACTOR); + } + s.defaultWriteObject(); + Traverser it = new Traverser(this); + Object v; + while ((v = it.advance()) != null) { + s.writeObject(it.nextKey); + s.writeObject(v); + } + s.writeObject(null); + s.writeObject(null); + segments = null; // throw away + } + + /** + * Reconstitutes the instance from a stream (that is, deserializes it). + * @param s the stream + */ + @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + s.defaultReadObject(); + this.segments = null; // unneeded + // initialize transient final field + this.counter = new LongAdder(); + + // Create all nodes, then place in table once size is known + long size = 0L; + Node p = null; + for (;;) { + K k = (K) s.readObject(); + V v = (V) s.readObject(); + if (k != null && v != null) { + int h = spread(k.hashCode()); + p = new Node(h, k, v, p); + ++size; + } + else + break; + } + if (p != null) { + boolean init = false; + int n; + if (size >= (long)(MAXIMUM_CAPACITY >>> 1)) + n = MAXIMUM_CAPACITY; + else { + int sz = (int)size; + n = tableSizeFor(sz + (sz >>> 1) + 1); + } + int sc = sizeCtl; + boolean collide = false; + if (n > sc && + SIZE_CTRL_UPDATER.compareAndSet(this, sc, -1)) { + try { + if (table == null) { + init = true; + AtomicReferenceArray tab = new AtomicReferenceArray(n); + int mask = n - 1; + while (p != null) { + int j = p.hash & mask; + Node next = p.next; + Node q = p.next = tabAt(tab, j); + setTabAt(tab, j, p); + if (!collide && q != null && q.hash == p.hash) + collide = true; + p = next; + } + table = tab; + counter.add(size); + sc = n - (n >>> 2); + } + } finally { + sizeCtl = sc; + } + if (collide) { // rescan and convert to TreeBins + AtomicReferenceArray tab = table; + for (int i = 0; i < tab.length(); ++i) { + int c = 0; + for (Node e = tabAt(tab, i); e != null; e = e.next) { + if (++c > TREE_THRESHOLD && + (e.key instanceof Comparable)) { + replaceWithTreeBin(tab, i, e.key); + break; + } + } + } + } + } + if (!init) { // Can only happen if unsafely published. + while (p != null) { + internalPut(p.key, p.val); + p = p.next; + } + } + } + } + + + // ------------------------------------------------------- + + // Sams + /** Interface describing a void action of one argument */ + public interface Action { void apply(A a); } + /** Interface describing a void action of two arguments */ + public interface BiAction { void apply(A a, B b); } + /** Interface describing a function of one argument */ + public interface Generator { T apply(); } + /** Interface describing a function mapping its argument to a double */ + public interface ObjectToDouble { double apply(A a); } + /** Interface describing a function mapping its argument to a long */ + public interface ObjectToLong { long apply(A a); } + /** Interface describing a function mapping its argument to an int */ + public interface ObjectToInt {int apply(A a); } + /** Interface describing a function mapping two arguments to a double */ + public interface ObjectByObjectToDouble { double apply(A a, B b); } + /** Interface describing a function mapping two arguments to a long */ + public interface ObjectByObjectToLong { long apply(A a, B b); } + /** Interface describing a function mapping two arguments to an int */ + public interface ObjectByObjectToInt {int apply(A a, B b); } + /** Interface describing a function mapping a double to a double */ + public interface DoubleToDouble { double apply(double a); } + /** Interface describing a function mapping a long to a long */ + public interface LongToLong { long apply(long a); } + /** Interface describing a function mapping an int to an int */ + public interface IntToInt { int apply(int a); } + /** Interface describing a function mapping two doubles to a double */ + public interface DoubleByDoubleToDouble { double apply(double a, double b); } + /** Interface describing a function mapping two longs to a long */ + public interface LongByLongToLong { long apply(long a, long b); } + /** Interface describing a function mapping two ints to an int */ + public interface IntByIntToInt { int apply(int a, int b); } + + + /* ----------------Views -------------- */ + + /** + * Base class for views. + */ + static abstract class CHMView { + final ConcurrentHashMapV8 map; + CHMView(ConcurrentHashMapV8 map) { this.map = map; } + + /** + * Returns the map backing this view. + * + * @return the map backing this view + */ + public ConcurrentHashMapV8 getMap() { return map; } + + public final int size() { return map.size(); } + public final boolean isEmpty() { return map.isEmpty(); } + public final void clear() { map.clear(); } + + // implementations below rely on concrete classes supplying these + abstract public Iterator iterator(); + abstract public boolean contains(Object o); + abstract public boolean remove(Object o); + + private static final String oomeMsg = "Required array size too large"; + + public final Object[] toArray() { + long sz = map.mappingCount(); + if (sz > (long)(MAX_ARRAY_SIZE)) + throw new OutOfMemoryError(oomeMsg); + int n = (int)sz; + Object[] r = new Object[n]; + int i = 0; + Iterator it = iterator(); + while (it.hasNext()) { + if (i == n) { + if (n >= MAX_ARRAY_SIZE) + throw new OutOfMemoryError(oomeMsg); + if (n >= MAX_ARRAY_SIZE - (MAX_ARRAY_SIZE >>> 1) - 1) + n = MAX_ARRAY_SIZE; + else + n += (n >>> 1) + 1; + r = Arrays.copyOf(r, n); + } + r[i++] = it.next(); + } + return (i == n) ? r : Arrays.copyOf(r, i); + } + + @SuppressWarnings("unchecked") public final T[] toArray(T[] a) { + long sz = map.mappingCount(); + if (sz > (long)(MAX_ARRAY_SIZE)) + throw new OutOfMemoryError(oomeMsg); + int m = (int)sz; + T[] r = (a.length >= m) ? a : + (T[])java.lang.reflect.Array + .newInstance(a.getClass().getComponentType(), m); + int n = r.length; + int i = 0; + Iterator it = iterator(); + while (it.hasNext()) { + if (i == n) { + if (n >= MAX_ARRAY_SIZE) + throw new OutOfMemoryError(oomeMsg); + if (n >= MAX_ARRAY_SIZE - (MAX_ARRAY_SIZE >>> 1) - 1) + n = MAX_ARRAY_SIZE; + else + n += (n >>> 1) + 1; + r = Arrays.copyOf(r, n); + } + r[i++] = (T)it.next(); + } + if (a == r && i < n) { + r[i] = null; // null-terminate + return r; + } + return (i == n) ? r : Arrays.copyOf(r, i); + } + + public final int hashCode() { + int h = 0; + for (Iterator it = iterator(); it.hasNext();) + h += it.next().hashCode(); + return h; + } + + public final String toString() { + StringBuilder sb = new StringBuilder(); + sb.append('['); + Iterator it = iterator(); + if (it.hasNext()) { + for (;;) { + Object e = it.next(); + sb.append(e == this ? "(this Collection)" : e); + if (!it.hasNext()) + break; + sb.append(',').append(' '); + } + } + return sb.append(']').toString(); + } + + public final boolean containsAll(Collection c) { + if (c != this) { + for (Iterator it = c.iterator(); it.hasNext();) { + Object e = it.next(); + if (e == null || !contains(e)) + return false; + } + } + return true; + } + + public final boolean removeAll(Collection c) { + boolean modified = false; + for (Iterator it = iterator(); it.hasNext();) { + if (c.contains(it.next())) { + it.remove(); + modified = true; + } + } + return modified; + } + + public final boolean retainAll(Collection c) { + boolean modified = false; + for (Iterator it = iterator(); it.hasNext();) { + if (!c.contains(it.next())) { + it.remove(); + modified = true; + } + } + return modified; + } + + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Set} of keys, in + * which additions may optionally be enabled by mapping to a + * common value. This class cannot be directly instantiated. See + * {@link #keySet}, {@link #keySet(Object)}, {@link #newKeySet()}, + * {@link #newKeySet(int)}. + */ + public static class KeySetView extends CHMView implements Set, java.io.Serializable { + private static final long serialVersionUID = 7249069246763182397L; + private final V value; + KeySetView(ConcurrentHashMapV8 map, V value) { // non-public + super(map); + this.value = value; + } + + /** + * Returns the default mapped value for additions, + * or {@code null} if additions are not supported. + * + * @return the default mapped value for additions, or {@code null} + * if not supported. + */ + public V getMappedValue() { return value; } + + // implement Set API + + public boolean contains(Object o) { return map.containsKey(o); } + public boolean remove(Object o) { return map.remove(o) != null; } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the keys of this map + */ + public Iterator iterator() { return new KeyIterator(map); } + public boolean add(K e) { + V v; + if ((v = value) == null) + throw new UnsupportedOperationException(); + if (e == null) + throw new NullPointerException(); + return map.internalPutIfAbsent(e, v) == null; + } + public boolean addAll(Collection c) { + boolean added = false; + V v; + if ((v = value) == null) + throw new UnsupportedOperationException(); + for (K e : c) { + if (e == null) + throw new NullPointerException(); + if (map.internalPutIfAbsent(e, v) == null) + added = true; + } + return added; + } + public boolean equals(Object o) { + Set c; + return ((o instanceof Set) && + ((c = (Set)o) == this || + (containsAll(c) && c.containsAll(this)))); + } + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Collection} of + * values, in which additions are disabled. This class cannot be + * directly instantiated. See {@link #values}, + * + *

              The view's {@code iterator} is a "weakly consistent" iterator + * that will never throw {@link ConcurrentModificationException}, + * and guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not guaranteed to) + * reflect any modifications subsequent to construction. + */ + public static final class ValuesView extends CHMView + implements Collection { + ValuesView(ConcurrentHashMapV8 map) { super(map); } + public final boolean contains(Object o) { return map.containsValue(o); } + public final boolean remove(Object o) { + if (o != null) { + Iterator it = new ValueIterator(map); + while (it.hasNext()) { + if (o.equals(it.next())) { + it.remove(); + return true; + } + } + } + return false; + } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the values of this map + */ + public final Iterator iterator() { + return new ValueIterator(map); + } + public final boolean add(V e) { + throw new UnsupportedOperationException(); + } + public final boolean addAll(Collection c) { + throw new UnsupportedOperationException(); + } + } + + /** + * A view of a ConcurrentHashMapV8 as a {@link Set} of (key, value) + * entries. This class cannot be directly instantiated. See + * {@link #entrySet}. + */ + public static final class EntrySetView extends CHMView + implements Set> { + EntrySetView(ConcurrentHashMapV8 map) { super(map); } + public final boolean contains(Object o) { + Object k, v, r; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (r = map.get(k)) != null && + (v = e.getValue()) != null && + (v == r || v.equals(r))); + } + public final boolean remove(Object o) { + Object k, v; Map.Entry e; + return ((o instanceof Map.Entry) && + (k = (e = (Map.Entry)o).getKey()) != null && + (v = e.getValue()) != null && + map.remove(k, v)); + } + + /** + * Returns a "weakly consistent" iterator that will never + * throw {@link ConcurrentModificationException}, and + * guarantees to traverse elements as they existed upon + * construction of the iterator, and may (but is not + * guaranteed to) reflect any modifications subsequent to + * construction. + * + * @return an iterator over the entries of this map + */ + public final Iterator> iterator() { + return new EntryIterator(map); + } + + public final boolean add(Entry e) { + K key = e.getKey(); + V value = e.getValue(); + if (key == null || value == null) + throw new NullPointerException(); + return map.internalPut(key, value) == null; + } + public final boolean addAll(Collection> c) { + boolean added = false; + for (Entry e : c) { + if (add(e)) + added = true; + } + return added; + } + public boolean equals(Object o) { + Set c; + return ((o instanceof Set) && + ((c = (Set)o) == this || + (containsAll(c) && c.containsAll(this)))); + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java new file mode 100644 index 0000000000..ecf552a23c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java @@ -0,0 +1,204 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on 1.9 version. + +package com.concurrent_ruby.ext.jsr166e.nounsafe; + +import java.util.concurrent.atomic.AtomicLong; +import java.io.IOException; +import java.io.Serializable; +import java.io.ObjectInputStream; + +/** + * One or more variables that together maintain an initially zero + * {@code long} sum. When updates (method {@link #add}) are contended + * across threads, the set of variables may grow dynamically to reduce + * contention. Method {@link #sum} (or, equivalently, {@link + * #longValue}) returns the current total combined across the + * variables maintaining the sum. + * + *

              This class is usually preferable to {@link AtomicLong} when + * multiple threads update a common sum that is used for purposes such + * as collecting statistics, not for fine-grained synchronization + * control. Under low update contention, the two classes have similar + * characteristics. But under high contention, expected throughput of + * this class is significantly higher, at the expense of higher space + * consumption. + * + *

              This class extends {@link Number}, but does not define + * methods such as {@code hashCode} and {@code compareTo} because + * instances are expected to be mutated, and so are not useful as + * collection keys. + * + *

              jsr166e note: This class is targeted to be placed in + * java.util.concurrent.atomic. + * + * @since 1.8 + * @author Doug Lea + */ +public class LongAdder extends Striped64 implements Serializable { + private static final long serialVersionUID = 7249069246863182397L; + + /** + * Version of plus for use in retryUpdate + */ + final long fn(long v, long x) { return v + x; } + + /** + * Creates a new adder with initial sum of zero. + */ + public LongAdder() { + } + + /** + * Adds the given value. + * + * @param x the value to add + */ + public void add(long x) { + Cell[] as; long b, v; HashCode hc; Cell a; int n; + if ((as = cells) != null || !casBase(b = base, b + x)) { + boolean uncontended = true; + int h = (hc = threadHashCode.get()).code; + if (as == null || (n = as.length) < 1 || + (a = as[(n - 1) & h]) == null || + !(uncontended = a.cas(v = a.value, v + x))) + retryUpdate(x, hc, uncontended); + } + } + + /** + * Equivalent to {@code add(1)}. + */ + public void increment() { + add(1L); + } + + /** + * Equivalent to {@code add(-1)}. + */ + public void decrement() { + add(-1L); + } + + /** + * Returns the current sum. The returned value is NOT an + * atomic snapshot: Invocation in the absence of concurrent + * updates returns an accurate result, but concurrent updates that + * occur while the sum is being calculated might not be + * incorporated. + * + * @return the sum + */ + public long sum() { + long sum = base; + Cell[] as = cells; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) + sum += a.value; + } + } + return sum; + } + + /** + * Resets variables maintaining the sum to zero. This method may + * be a useful alternative to creating a new adder, but is only + * effective if there are no concurrent updates. Because this + * method is intrinsically racy, it should only be used when it is + * known that no threads are concurrently updating. + */ + public void reset() { + internalReset(0L); + } + + /** + * Equivalent in effect to {@link #sum} followed by {@link + * #reset}. This method may apply for example during quiescent + * points between multithreaded computations. If there are + * updates concurrent with this method, the returned value is + * not guaranteed to be the final value occurring before + * the reset. + * + * @return the sum + */ + public long sumThenReset() { + long sum = base; + Cell[] as = cells; + base = 0L; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) { + sum += a.value; + a.value = 0L; + } + } + } + return sum; + } + + /** + * Returns the String representation of the {@link #sum}. + * @return the String representation of the {@link #sum} + */ + public String toString() { + return Long.toString(sum()); + } + + /** + * Equivalent to {@link #sum}. + * + * @return the sum + */ + public long longValue() { + return sum(); + } + + /** + * Returns the {@link #sum} as an {@code int} after a narrowing + * primitive conversion. + */ + public int intValue() { + return (int)sum(); + } + + /** + * Returns the {@link #sum} as a {@code float} + * after a widening primitive conversion. + */ + public float floatValue() { + return (float)sum(); + } + + /** + * Returns the {@link #sum} as a {@code double} after a widening + * primitive conversion. + */ + public double doubleValue() { + return (double)sum(); + } + + private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { + s.defaultWriteObject(); + s.writeLong(sum()); + } + + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException { + s.defaultReadObject(); + busy = 0; + cells = null; + base = s.readLong(); + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java new file mode 100644 index 0000000000..f52164242a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java @@ -0,0 +1,291 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on 1.5 version. + +package com.concurrent_ruby.ext.jsr166e.nounsafe; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; +import java.util.concurrent.atomic.AtomicLongFieldUpdater; + +/** + * A package-local class holding common representation and mechanics + * for classes supporting dynamic striping on 64bit values. The class + * extends Number so that concrete subclasses must publicly do so. + */ +abstract class Striped64 extends Number { + /* + * This class maintains a lazily-initialized table of atomically + * updated variables, plus an extra "base" field. The table size + * is a power of two. Indexing uses masked per-thread hash codes. + * Nearly all declarations in this class are package-private, + * accessed directly by subclasses. + * + * Table entries are of class Cell; a variant of AtomicLong padded + * to reduce cache contention on most processors. Padding is + * overkill for most Atomics because they are usually irregularly + * scattered in memory and thus don't interfere much with each + * other. But Atomic objects residing in arrays will tend to be + * placed adjacent to each other, and so will most often share + * cache lines (with a huge negative performance impact) without + * this precaution. + * + * In part because Cells are relatively large, we avoid creating + * them until they are needed. When there is no contention, all + * updates are made to the base field. Upon first contention (a + * failed CAS on base update), the table is initialized to size 2. + * The table size is doubled upon further contention until + * reaching the nearest power of two greater than or equal to the + * number of CPUS. Table slots remain empty (null) until they are + * needed. + * + * A single spinlock ("busy") is used for initializing and + * resizing the table, as well as populating slots with new Cells. + * There is no need for a blocking lock: When the lock is not + * available, threads try other slots (or the base). During these + * retries, there is increased contention and reduced locality, + * which is still better than alternatives. + * + * Per-thread hash codes are initialized to random values. + * Contention and/or table collisions are indicated by failed + * CASes when performing an update operation (see method + * retryUpdate). Upon a collision, if the table size is less than + * the capacity, it is doubled in size unless some other thread + * holds the lock. If a hashed slot is empty, and lock is + * available, a new Cell is created. Otherwise, if the slot + * exists, a CAS is tried. Retries proceed by "double hashing", + * using a secondary hash (Marsaglia XorShift) to try to find a + * free slot. + * + * The table size is capped because, when there are more threads + * than CPUs, supposing that each thread were bound to a CPU, + * there would exist a perfect hash function mapping threads to + * slots that eliminates collisions. When we reach capacity, we + * search for this mapping by randomly varying the hash codes of + * colliding threads. Because search is random, and collisions + * only become known via CAS failures, convergence can be slow, + * and because threads are typically not bound to CPUS forever, + * may not occur at all. However, despite these limitations, + * observed contention rates are typically low in these cases. + * + * It is possible for a Cell to become unused when threads that + * once hashed to it terminate, as well as in the case where + * doubling the table causes no thread to hash to it under + * expanded mask. We do not try to detect or remove such cells, + * under the assumption that for long-running instances, observed + * contention levels will recur, so the cells will eventually be + * needed again; and for short-lived ones, it does not matter. + */ + + /** + * Padded variant of AtomicLong supporting only raw accesses plus CAS. + * The value field is placed between pads, hoping that the JVM doesn't + * reorder them. + * + * JVM intrinsics note: It would be possible to use a release-only + * form of CAS here, if it were provided. + */ + static final class Cell { + volatile long p0, p1, p2, p3, p4, p5, p6; + volatile long value; + volatile long q0, q1, q2, q3, q4, q5, q6; + + static AtomicLongFieldUpdater VALUE_UPDATER = AtomicLongFieldUpdater.newUpdater(Cell.class, "value"); + + Cell(long x) { value = x; } + + final boolean cas(long cmp, long val) { + return VALUE_UPDATER.compareAndSet(this, cmp, val); + } + + } + + /** + * Holder for the thread-local hash code. The code is initially + * random, but may be set to a different value upon collisions. + */ + static final class HashCode { + static final Random rng = new Random(); + int code; + HashCode() { + int h = rng.nextInt(); // Avoid zero to allow xorShift rehash + code = (h == 0) ? 1 : h; + } + } + + /** + * The corresponding ThreadLocal class + */ + static final class ThreadHashCode extends ThreadLocal { + public HashCode initialValue() { return new HashCode(); } + } + + /** + * Static per-thread hash codes. Shared across all instances to + * reduce ThreadLocal pollution and because adjustments due to + * collisions in one table are likely to be appropriate for + * others. + */ + static final ThreadHashCode threadHashCode = new ThreadHashCode(); + + /** Number of CPUS, to place bound on table size */ + static final int NCPU = Runtime.getRuntime().availableProcessors(); + + /** + * Table of cells. When non-null, size is a power of 2. + */ + transient volatile Cell[] cells; + + /** + * Base value, used mainly when there is no contention, but also as + * a fallback during table initialization races. Updated via CAS. + */ + transient volatile long base; + + /** + * Spinlock (locked via CAS) used when resizing and/or creating Cells. + */ + transient volatile int busy; + + AtomicLongFieldUpdater BASE_UPDATER = AtomicLongFieldUpdater.newUpdater(Striped64.class, "base"); + AtomicIntegerFieldUpdater BUSY_UPDATER = AtomicIntegerFieldUpdater.newUpdater(Striped64.class, "busy"); + + /** + * Package-private default constructor + */ + Striped64() { + } + + /** + * CASes the base field. + */ + final boolean casBase(long cmp, long val) { + return BASE_UPDATER.compareAndSet(this, cmp, val); + } + + /** + * CASes the busy field from 0 to 1 to acquire lock. + */ + final boolean casBusy() { + return BUSY_UPDATER.compareAndSet(this, 0, 1); + } + + /** + * Computes the function of current and new value. Subclasses + * should open-code this update function for most uses, but the + * virtualized form is needed within retryUpdate. + * + * @param currentValue the current value (of either base or a cell) + * @param newValue the argument from a user update call + * @return result of the update function + */ + abstract long fn(long currentValue, long newValue); + + /** + * Handles cases of updates involving initialization, resizing, + * creating new Cells, and/or contention. See above for + * explanation. This method suffers the usual non-modularity + * problems of optimistic retry code, relying on rechecked sets of + * reads. + * + * @param x the value + * @param hc the hash code holder + * @param wasUncontended false if CAS failed before call + */ + final void retryUpdate(long x, HashCode hc, boolean wasUncontended) { + int h = hc.code; + boolean collide = false; // True if last slot nonempty + for (;;) { + Cell[] as; Cell a; int n; long v; + if ((as = cells) != null && (n = as.length) > 0) { + if ((a = as[(n - 1) & h]) == null) { + if (busy == 0) { // Try to attach new Cell + Cell r = new Cell(x); // Optimistically create + if (busy == 0 && casBusy()) { + boolean created = false; + try { // Recheck under lock + Cell[] rs; int m, j; + if ((rs = cells) != null && + (m = rs.length) > 0 && + rs[j = (m - 1) & h] == null) { + rs[j] = r; + created = true; + } + } finally { + busy = 0; + } + if (created) + break; + continue; // Slot is now non-empty + } + } + collide = false; + } + else if (!wasUncontended) // CAS already known to fail + wasUncontended = true; // Continue after rehash + else if (a.cas(v = a.value, fn(v, x))) + break; + else if (n >= NCPU || cells != as) + collide = false; // At max size or stale + else if (!collide) + collide = true; + else if (busy == 0 && casBusy()) { + try { + if (cells == as) { // Expand table unless stale + Cell[] rs = new Cell[n << 1]; + for (int i = 0; i < n; ++i) + rs[i] = as[i]; + cells = rs; + } + } finally { + busy = 0; + } + collide = false; + continue; // Retry with expanded table + } + h ^= h << 13; // Rehash + h ^= h >>> 17; + h ^= h << 5; + } + else if (busy == 0 && cells == as && casBusy()) { + boolean init = false; + try { // Initialize table + if (cells == as) { + Cell[] rs = new Cell[2]; + rs[h & 1] = new Cell(x); + cells = rs; + init = true; + } + } finally { + busy = 0; + } + if (init) + break; + } + else if (casBase(v = base, fn(v, x))) + break; // Fall back on using base + } + hc.code = h; // Record index for next time + } + + + /** + * Sets base and all cells to the given value. + */ + final void internalReset(long initialValue) { + Cell[] as = cells; + base = initialValue; + if (as != null) { + int n = as.length; + for (int i = 0; i < n; ++i) { + Cell a = as[i]; + if (a != null) + a.value = initialValue; + } + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java new file mode 100644 index 0000000000..3ea409ffc4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java @@ -0,0 +1,199 @@ +/* + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This is based on 1.16 version + +package com.concurrent_ruby.ext.jsr166y; + +import java.util.Random; + +/** + * A random number generator isolated to the current thread. Like the + * global {@link java.util.Random} generator used by the {@link + * java.lang.Math} class, a {@code ThreadLocalRandom} is initialized + * with an internally generated seed that may not otherwise be + * modified. When applicable, use of {@code ThreadLocalRandom} rather + * than shared {@code Random} objects in concurrent programs will + * typically encounter much less overhead and contention. Use of + * {@code ThreadLocalRandom} is particularly appropriate when multiple + * tasks (for example, each a {@link ForkJoinTask}) use random numbers + * in parallel in thread pools. + * + *

              Usages of this class should typically be of the form: + * {@code ThreadLocalRandom.current().nextX(...)} (where + * {@code X} is {@code Int}, {@code Long}, etc). + * When all usages are of this form, it is never possible to + * accidently share a {@code ThreadLocalRandom} across multiple threads. + * + *

              This class also provides additional commonly used bounded random + * generation methods. + * + * @since 1.7 + * @author Doug Lea + */ +public class ThreadLocalRandom extends Random { + // same constants as Random, but must be redeclared because private + private static final long multiplier = 0x5DEECE66DL; + private static final long addend = 0xBL; + private static final long mask = (1L << 48) - 1; + + /** + * The random seed. We can't use super.seed. + */ + private long rnd; + + /** + * Initialization flag to permit calls to setSeed to succeed only + * while executing the Random constructor. We can't allow others + * since it would cause setting seed in one part of a program to + * unintentionally impact other usages by the thread. + */ + boolean initialized; + + // Padding to help avoid memory contention among seed updates in + // different TLRs in the common case that they are located near + // each other. + private long pad0, pad1, pad2, pad3, pad4, pad5, pad6, pad7; + + /** + * The actual ThreadLocal + */ + private static final ThreadLocal localRandom = + new ThreadLocal() { + protected ThreadLocalRandom initialValue() { + return new ThreadLocalRandom(); + } + }; + + + /** + * Constructor called only by localRandom.initialValue. + */ + ThreadLocalRandom() { + super(); + initialized = true; + } + + /** + * Returns the current thread's {@code ThreadLocalRandom}. + * + * @return the current thread's {@code ThreadLocalRandom} + */ + public static ThreadLocalRandom current() { + return localRandom.get(); + } + + /** + * Throws {@code UnsupportedOperationException}. Setting seeds in + * this generator is not supported. + * + * @throws UnsupportedOperationException always + */ + public void setSeed(long seed) { + if (initialized) + throw new UnsupportedOperationException(); + rnd = (seed ^ multiplier) & mask; + } + + protected int next(int bits) { + rnd = (rnd * multiplier + addend) & mask; + return (int) (rnd >>> (48-bits)); + } + + /** + * Returns a pseudorandom, uniformly distributed value between the + * given least value (inclusive) and bound (exclusive). + * + * @param least the least value returned + * @param bound the upper bound (exclusive) + * @throws IllegalArgumentException if least greater than or equal + * to bound + * @return the next value + */ + public int nextInt(int least, int bound) { + if (least >= bound) + throw new IllegalArgumentException(); + return nextInt(bound - least) + least; + } + + /** + * Returns a pseudorandom, uniformly distributed value + * between 0 (inclusive) and the specified value (exclusive). + * + * @param n the bound on the random number to be returned. Must be + * positive. + * @return the next value + * @throws IllegalArgumentException if n is not positive + */ + public long nextLong(long n) { + if (n <= 0) + throw new IllegalArgumentException("n must be positive"); + // Divide n by two until small enough for nextInt. On each + // iteration (at most 31 of them but usually much less), + // randomly choose both whether to include high bit in result + // (offset) and whether to continue with the lower vs upper + // half (which makes a difference only if odd). + long offset = 0; + while (n >= Integer.MAX_VALUE) { + int bits = next(2); + long half = n >>> 1; + long nextn = ((bits & 2) == 0) ? half : n - half; + if ((bits & 1) == 0) + offset += n - nextn; + n = nextn; + } + return offset + nextInt((int) n); + } + + /** + * Returns a pseudorandom, uniformly distributed value between the + * given least value (inclusive) and bound (exclusive). + * + * @param least the least value returned + * @param bound the upper bound (exclusive) + * @return the next value + * @throws IllegalArgumentException if least greater than or equal + * to bound + */ + public long nextLong(long least, long bound) { + if (least >= bound) + throw new IllegalArgumentException(); + return nextLong(bound - least) + least; + } + + /** + * Returns a pseudorandom, uniformly distributed {@code double} value + * between 0 (inclusive) and the specified value (exclusive). + * + * @param n the bound on the random number to be returned. Must be + * positive. + * @return the next value + * @throws IllegalArgumentException if n is not positive + */ + public double nextDouble(double n) { + if (n <= 0) + throw new IllegalArgumentException("n must be positive"); + return nextDouble() * n; + } + + /** + * Returns a pseudorandom, uniformly distributed value between the + * given least value (inclusive) and bound (exclusive). + * + * @param least the least value returned + * @param bound the upper bound (exclusive) + * @return the next value + * @throws IllegalArgumentException if least greater than or equal + * to bound + */ + public double nextDouble(double least, double bound) { + if (least >= bound) + throw new IllegalArgumentException(); + return nextDouble() * (bound - least) + least; + } + + private static final long serialVersionUID = -5851777807851030925L; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent-ruby.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent-ruby.rb new file mode 100644 index 0000000000..08917e3bb7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent-ruby.rb @@ -0,0 +1 @@ +require_relative "./concurrent" diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent.rb new file mode 100644 index 0000000000..87de46f1b8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent.rb @@ -0,0 +1,134 @@ +require 'concurrent/version' +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/configuration' + +require 'concurrent/atomics' +require 'concurrent/executors' +require 'concurrent/synchronization' + +require 'concurrent/atomic/atomic_markable_reference' +require 'concurrent/atomic/atomic_reference' +require 'concurrent/agent' +require 'concurrent/atom' +require 'concurrent/array' +require 'concurrent/hash' +require 'concurrent/set' +require 'concurrent/map' +require 'concurrent/tuple' +require 'concurrent/async' +require 'concurrent/dataflow' +require 'concurrent/delay' +require 'concurrent/exchanger' +require 'concurrent/future' +require 'concurrent/immutable_struct' +require 'concurrent/ivar' +require 'concurrent/maybe' +require 'concurrent/mutable_struct' +require 'concurrent/mvar' +require 'concurrent/promise' +require 'concurrent/scheduled_task' +require 'concurrent/settable_struct' +require 'concurrent/timer_task' +require 'concurrent/tvar' +require 'concurrent/promises' + +require 'concurrent/thread_safe/synchronized_delegator' +require 'concurrent/thread_safe/util' + +require 'concurrent/options' + +# @!macro internal_implementation_note +# +# @note **Private Implementation:** This abstraction is a private, internal +# implementation detail. It should never be used directly. + +# @!macro monotonic_clock_warning +# +# @note Time calculations on all platforms and languages are sensitive to +# changes to the system clock. To alleviate the potential problems +# associated with changing the system clock while an application is running, +# most modern operating systems provide a monotonic clock that operates +# independently of the system clock. A monotonic clock cannot be used to +# determine human-friendly clock times. A monotonic clock is used exclusively +# for calculating time intervals. Not all Ruby platforms provide access to an +# operating system monotonic clock. On these platforms a pure-Ruby monotonic +# clock will be used as a fallback. An operating system monotonic clock is both +# faster and more reliable than the pure-Ruby implementation. The pure-Ruby +# implementation should be fast and reliable enough for most non-realtime +# operations. At this time the common Ruby platforms that provide access to an +# operating system monotonic clock are MRI 2.1 and above and JRuby (all versions). +# +# @see http://linux.die.net/man/3/clock_gettime Linux clock_gettime(3) + +# @!macro copy_options +# +# ## Copy Options +# +# Object references in Ruby are mutable. This can lead to serious +# problems when the {#value} of an object is a mutable reference. Which +# is always the case unless the value is a `Fixnum`, `Symbol`, or similar +# "primitive" data type. Each instance can be configured with a few +# options that can help protect the program from potentially dangerous +# operations. Each of these options can be optionally set when the object +# instance is created: +# +# * `:dup_on_deref` When true the object will call the `#dup` method on +# the `value` object every time the `#value` method is called +# (default: false) +# * `:freeze_on_deref` When true the object will call the `#freeze` +# method on the `value` object every time the `#value` method is called +# (default: false) +# * `:copy_on_deref` When given a `Proc` object the `Proc` will be run +# every time the `#value` method is called. The `Proc` will be given +# the current `value` as its only argument and the result returned by +# the block will be the return value of the `#value` call. When `nil` +# this option will be ignored (default: nil) +# +# When multiple deref options are set the order of operations is strictly defined. +# The order of deref operations is: +# * `:copy_on_deref` +# * `:dup_on_deref` +# * `:freeze_on_deref` +# +# Because of this ordering there is no need to `#freeze` an object created by a +# provided `:copy_on_deref` block. Simply set `:freeze_on_deref` to `true`. +# Setting both `:dup_on_deref` to `true` and `:freeze_on_deref` to `true` is +# as close to the behavior of a "pure" functional language (like Erlang, Clojure, +# or Haskell) as we are likely to get in Ruby. + +# @!macro deref_options +# +# @option opts [Boolean] :dup_on_deref (false) Call `#dup` before +# returning the data from {#value} +# @option opts [Boolean] :freeze_on_deref (false) Call `#freeze` before +# returning the data from {#value} +# @option opts [Proc] :copy_on_deref (nil) When calling the {#value} +# method, call the given proc passing the internal value as the sole +# argument then return the new value returned from the proc. + +# @!macro executor_and_deref_options +# +# @param [Hash] opts the options used to define the behavior at update and deref +# and to specify the executor on which to perform actions +# @option opts [Executor] :executor when set use the given `Executor` instance. +# Three special values are also supported: `:io` returns the global pool for +# long, blocking (IO) tasks, `:fast` returns the global pool for short, fast +# operations, and `:immediate` returns the global `ImmediateExecutor` object. +# @!macro deref_options + +# @!macro warn.edge +# @api Edge +# @note **Edge Features** are under active development and may change frequently. +# +# - Deprecations are not added before incompatible changes. +# - Edge version: _major_ is always 0, _minor_ bump means incompatible change, +# _patch_ bump means compatible change. +# - Edge features may also lack tests and documentation. +# - Features developed in `concurrent-ruby-edge` are expected to move +# to `concurrent-ruby` when finalised. + + +# {include:file:README.md} +module Concurrent +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/agent.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/agent.rb new file mode 100644 index 0000000000..815dca008c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/agent.rb @@ -0,0 +1,587 @@ +require 'concurrent/configuration' +require 'concurrent/atomic/atomic_reference' +require 'concurrent/atomic/thread_local_var' +require 'concurrent/collection/copy_on_write_observer_set' +require 'concurrent/concern/observable' +require 'concurrent/synchronization' + +module Concurrent + + # `Agent` is inspired by Clojure's [agent](http://clojure.org/agents) + # function. An agent is a shared, mutable variable providing independent, + # uncoordinated, *asynchronous* change of individual values. Best used when + # the value will undergo frequent, complex updates. Suitable when the result + # of an update does not need to be known immediately. `Agent` is (mostly) + # functionally equivalent to Clojure's agent, except where the runtime + # prevents parity. + # + # Agents are reactive, not autonomous - there is no imperative message loop + # and no blocking receive. The state of an Agent should be itself immutable + # and the `#value` of an Agent is always immediately available for reading by + # any thread without any messages, i.e. observation does not require + # cooperation or coordination. + # + # Agent action dispatches are made using the various `#send` methods. These + # methods always return immediately. At some point later, in another thread, + # the following will happen: + # + # 1. The given `action` will be applied to the state of the Agent and the + # `args`, if any were supplied. + # 2. The return value of `action` will be passed to the validator lambda, + # if one has been set on the Agent. + # 3. If the validator succeeds or if no validator was given, the return value + # of the given `action` will become the new `#value` of the Agent. See + # `#initialize` for details. + # 4. If any observers were added to the Agent, they will be notified. See + # `#add_observer` for details. + # 5. If during the `action` execution any other dispatches are made (directly + # or indirectly), they will be held until after the `#value` of the Agent + # has been changed. + # + # If any exceptions are thrown by an action function, no nested dispatches + # will occur, and the exception will be cached in the Agent itself. When an + # Agent has errors cached, any subsequent interactions will immediately throw + # an exception, until the agent's errors are cleared. Agent errors can be + # examined with `#error` and the agent restarted with `#restart`. + # + # The actions of all Agents get interleaved amongst threads in a thread pool. + # At any point in time, at most one action for each Agent is being executed. + # Actions dispatched to an agent from another single agent or thread will + # occur in the order they were sent, potentially interleaved with actions + # dispatched to the same agent from other sources. The `#send` method should + # be used for actions that are CPU limited, while the `#send_off` method is + # appropriate for actions that may block on IO. + # + # Unlike in Clojure, `Agent` cannot participate in `Concurrent::TVar` transactions. + # + # ## Example + # + # ``` + # def next_fibonacci(set = nil) + # return [0, 1] if set.nil? + # set + [set[-2..-1].reduce{|sum,x| sum + x }] + # end + # + # # create an agent with an initial value + # agent = Concurrent::Agent.new(next_fibonacci) + # + # # send a few update requests + # 5.times do + # agent.send{|set| next_fibonacci(set) } + # end + # + # # wait for them to complete + # agent.await + # + # # get the current value + # agent.value #=> [0, 1, 1, 2, 3, 5, 8] + # ``` + # + # ## Observation + # + # Agents support observers through the {Concurrent::Observable} mixin module. + # Notification of observers occurs every time an action dispatch returns and + # the new value is successfully validated. Observation will *not* occur if the + # action raises an exception, if validation fails, or when a {#restart} occurs. + # + # When notified the observer will receive three arguments: `time`, `old_value`, + # and `new_value`. The `time` argument is the time at which the value change + # occurred. The `old_value` is the value of the Agent when the action began + # processing. The `new_value` is the value to which the Agent was set when the + # action completed. Note that `old_value` and `new_value` may be the same. + # This is not an error. It simply means that the action returned the same + # value. + # + # ## Nested Actions + # + # It is possible for an Agent action to post further actions back to itself. + # The nested actions will be enqueued normally then processed *after* the + # outer action completes, in the order they were sent, possibly interleaved + # with action dispatches from other threads. Nested actions never deadlock + # with one another and a failure in a nested action will never affect the + # outer action. + # + # Nested actions can be called using the Agent reference from the enclosing + # scope or by passing the reference in as a "send" argument. Nested actions + # cannot be post using `self` from within the action block/proc/lambda; `self` + # in this context will not reference the Agent. The preferred method for + # dispatching nested actions is to pass the Agent as an argument. This allows + # Ruby to more effectively manage the closing scope. + # + # Prefer this: + # + # ``` + # agent = Concurrent::Agent.new(0) + # agent.send(agent) do |value, this| + # this.send {|v| v + 42 } + # 3.14 + # end + # agent.value #=> 45.14 + # ``` + # + # Over this: + # + # ``` + # agent = Concurrent::Agent.new(0) + # agent.send do |value| + # agent.send {|v| v + 42 } + # 3.14 + # end + # ``` + # + # @!macro agent_await_warning + # + # **NOTE** Never, *under any circumstances*, call any of the "await" methods + # ({#await}, {#await_for}, {#await_for!}, and {#wait}) from within an action + # block/proc/lambda. The call will block the Agent and will always fail. + # Calling either {#await} or {#wait} (with a timeout of `nil`) will + # hopelessly deadlock the Agent with no possibility of recovery. + # + # @!macro thread_safe_variable_comparison + # + # @see http://clojure.org/Agents Clojure Agents + # @see http://clojure.org/state Values and Change - Clojure's approach to Identity and State + class Agent < Synchronization::LockableObject + include Concern::Observable + + ERROR_MODES = [:continue, :fail].freeze + private_constant :ERROR_MODES + + AWAIT_FLAG = ::Object.new + private_constant :AWAIT_FLAG + + AWAIT_ACTION = ->(value, latch) { latch.count_down; AWAIT_FLAG } + private_constant :AWAIT_ACTION + + DEFAULT_ERROR_HANDLER = ->(agent, error) { nil } + private_constant :DEFAULT_ERROR_HANDLER + + DEFAULT_VALIDATOR = ->(value) { true } + private_constant :DEFAULT_VALIDATOR + + Job = Struct.new(:action, :args, :executor, :caller) + private_constant :Job + + # Raised during action processing or any other time in an Agent's lifecycle. + class Error < StandardError + def initialize(message = nil) + message ||= 'agent must be restarted before jobs can post' + super(message) + end + end + + # Raised when a new value obtained during action processing or at `#restart` + # fails validation. + class ValidationError < Error + def initialize(message = nil) + message ||= 'invalid value' + super(message) + end + end + + # The error mode this Agent is operating in. See {#initialize} for details. + attr_reader :error_mode + + # Create a new `Agent` with the given initial value and options. + # + # The `:validator` option must be `nil` or a side-effect free proc/lambda + # which takes one argument. On any intended value change the validator, if + # provided, will be called. If the new value is invalid the validator should + # return `false` or raise an error. + # + # The `:error_handler` option must be `nil` or a proc/lambda which takes two + # arguments. When an action raises an error or validation fails, either by + # returning false or raising an error, the error handler will be called. The + # arguments to the error handler will be a reference to the agent itself and + # the error object which was raised. + # + # The `:error_mode` may be either `:continue` (the default if an error + # handler is given) or `:fail` (the default if error handler nil or not + # given). + # + # If an action being run by the agent throws an error or doesn't pass + # validation the error handler, if present, will be called. After the + # handler executes if the error mode is `:continue` the Agent will continue + # as if neither the action that caused the error nor the error itself ever + # happened. + # + # If the mode is `:fail` the Agent will become {#failed?} and will stop + # accepting new action dispatches. Any previously queued actions will be + # held until {#restart} is called. The {#value} method will still work, + # returning the value of the Agent before the error. + # + # @param [Object] initial the initial value + # @param [Hash] opts the configuration options + # + # @option opts [Symbol] :error_mode either `:continue` or `:fail` + # @option opts [nil, Proc] :error_handler the (optional) error handler + # @option opts [nil, Proc] :validator the (optional) validation procedure + def initialize(initial, opts = {}) + super() + synchronize { ns_initialize(initial, opts) } + end + + # The current value (state) of the Agent, irrespective of any pending or + # in-progress actions. The value is always available and is non-blocking. + # + # @return [Object] the current value + def value + @current.value # TODO (pitr 12-Sep-2015): broken unsafe read? + end + + alias_method :deref, :value + + # When {#failed?} and {#error_mode} is `:fail`, returns the error object + # which caused the failure, else `nil`. When {#error_mode} is `:continue` + # will *always* return `nil`. + # + # @return [nil, Error] the error which caused the failure when {#failed?} + def error + @error.value + end + + alias_method :reason, :error + + # @!macro agent_send + # + # Dispatches an action to the Agent and returns immediately. Subsequently, + # in a thread from a thread pool, the {#value} will be set to the return + # value of the action. Action dispatches are only allowed when the Agent + # is not {#failed?}. + # + # The action must be a block/proc/lambda which takes 1 or more arguments. + # The first argument is the current {#value} of the Agent. Any arguments + # passed to the send method via the `args` parameter will be passed to the + # action as the remaining arguments. The action must return the new value + # of the Agent. + # + # * {#send} and {#send!} should be used for actions that are CPU limited + # * {#send_off}, {#send_off!}, and {#<<} are appropriate for actions that + # may block on IO + # * {#send_via} and {#send_via!} are used when a specific executor is to + # be used for the action + # + # @param [Array] args zero or more arguments to be passed to + # the action + # @param [Proc] action the action dispatch to be enqueued + # + # @yield [agent, value, *args] process the old value and return the new + # @yieldparam [Object] value the current {#value} of the Agent + # @yieldparam [Array] args zero or more arguments to pass to the + # action + # @yieldreturn [Object] the new value of the Agent + # + # @!macro send_return + # @return [Boolean] true if the action is successfully enqueued, false if + # the Agent is {#failed?} + def send(*args, &action) + enqueue_action_job(action, args, Concurrent.global_fast_executor) + end + + # @!macro agent_send + # + # @!macro send_bang_return_and_raise + # @return [Boolean] true if the action is successfully enqueued + # @raise [Concurrent::Agent::Error] if the Agent is {#failed?} + def send!(*args, &action) + raise Error.new unless send(*args, &action) + true + end + + # @!macro agent_send + # @!macro send_return + def send_off(*args, &action) + enqueue_action_job(action, args, Concurrent.global_io_executor) + end + + alias_method :post, :send_off + + # @!macro agent_send + # @!macro send_bang_return_and_raise + def send_off!(*args, &action) + raise Error.new unless send_off(*args, &action) + true + end + + # @!macro agent_send + # @!macro send_return + # @param [Concurrent::ExecutorService] executor the executor on which the + # action is to be dispatched + def send_via(executor, *args, &action) + enqueue_action_job(action, args, executor) + end + + # @!macro agent_send + # @!macro send_bang_return_and_raise + # @param [Concurrent::ExecutorService] executor the executor on which the + # action is to be dispatched + def send_via!(executor, *args, &action) + raise Error.new unless send_via(executor, *args, &action) + true + end + + # Dispatches an action to the Agent and returns immediately. Subsequently, + # in a thread from a thread pool, the {#value} will be set to the return + # value of the action. Appropriate for actions that may block on IO. + # + # @param [Proc] action the action dispatch to be enqueued + # @return [Concurrent::Agent] self + # @see #send_off + def <<(action) + send_off(&action) + self + end + + # Blocks the current thread (indefinitely!) until all actions dispatched + # thus far, from this thread or nested by the Agent, have occurred. Will + # block when {#failed?}. Will never return if a failed Agent is {#restart} + # with `:clear_actions` true. + # + # Returns a reference to `self` to support method chaining: + # + # ``` + # current_value = agent.await.value + # ``` + # + # @return [Boolean] self + # + # @!macro agent_await_warning + def await + wait(nil) + self + end + + # Blocks the current thread until all actions dispatched thus far, from this + # thread or nested by the Agent, have occurred, or the timeout (in seconds) + # has elapsed. + # + # @param [Float] timeout the maximum number of seconds to wait + # @return [Boolean] true if all actions complete before timeout else false + # + # @!macro agent_await_warning + def await_for(timeout) + wait(timeout.to_f) + end + + # Blocks the current thread until all actions dispatched thus far, from this + # thread or nested by the Agent, have occurred, or the timeout (in seconds) + # has elapsed. + # + # @param [Float] timeout the maximum number of seconds to wait + # @return [Boolean] true if all actions complete before timeout + # + # @raise [Concurrent::TimeoutError] when timout is reached + # + # @!macro agent_await_warning + def await_for!(timeout) + raise Concurrent::TimeoutError unless wait(timeout.to_f) + true + end + + # Blocks the current thread until all actions dispatched thus far, from this + # thread or nested by the Agent, have occurred, or the timeout (in seconds) + # has elapsed. Will block indefinitely when timeout is nil or not given. + # + # Provided mainly for consistency with other classes in this library. Prefer + # the various `await` methods instead. + # + # @param [Float] timeout the maximum number of seconds to wait + # @return [Boolean] true if all actions complete before timeout else false + # + # @!macro agent_await_warning + def wait(timeout = nil) + latch = Concurrent::CountDownLatch.new(1) + enqueue_await_job(latch) + latch.wait(timeout) + end + + # Is the Agent in a failed state? + # + # @see #restart + def failed? + !@error.value.nil? + end + + alias_method :stopped?, :failed? + + # When an Agent is {#failed?}, changes the Agent {#value} to `new_value` + # then un-fails the Agent so that action dispatches are allowed again. If + # the `:clear_actions` option is give and true, any actions queued on the + # Agent that were being held while it was failed will be discarded, + # otherwise those held actions will proceed. The `new_value` must pass the + # validator if any, or `restart` will raise an exception and the Agent will + # remain failed with its old {#value} and {#error}. Observers, if any, will + # not be notified of the new state. + # + # @param [Object] new_value the new value for the Agent once restarted + # @param [Hash] opts the configuration options + # @option opts [Symbol] :clear_actions true if all enqueued but unprocessed + # actions should be discarded on restart, else false (default: false) + # @return [Boolean] true + # + # @raise [Concurrent:AgentError] when not failed + def restart(new_value, opts = {}) + clear_actions = opts.fetch(:clear_actions, false) + synchronize do + raise Error.new('agent is not failed') unless failed? + raise ValidationError unless ns_validate(new_value) + @current.value = new_value + @error.value = nil + @queue.clear if clear_actions + ns_post_next_job unless @queue.empty? + end + true + end + + class << self + + # Blocks the current thread (indefinitely!) until all actions dispatched + # thus far to all the given Agents, from this thread or nested by the + # given Agents, have occurred. Will block when any of the agents are + # failed. Will never return if a failed Agent is restart with + # `:clear_actions` true. + # + # @param [Array] agents the Agents on which to wait + # @return [Boolean] true + # + # @!macro agent_await_warning + def await(*agents) + agents.each { |agent| agent.await } + true + end + + # Blocks the current thread until all actions dispatched thus far to all + # the given Agents, from this thread or nested by the given Agents, have + # occurred, or the timeout (in seconds) has elapsed. + # + # @param [Float] timeout the maximum number of seconds to wait + # @param [Array] agents the Agents on which to wait + # @return [Boolean] true if all actions complete before timeout else false + # + # @!macro agent_await_warning + def await_for(timeout, *agents) + end_at = Concurrent.monotonic_time + timeout.to_f + ok = agents.length.times do |i| + break false if (delay = end_at - Concurrent.monotonic_time) < 0 + break false unless agents[i].await_for(delay) + end + !!ok + end + + # Blocks the current thread until all actions dispatched thus far to all + # the given Agents, from this thread or nested by the given Agents, have + # occurred, or the timeout (in seconds) has elapsed. + # + # @param [Float] timeout the maximum number of seconds to wait + # @param [Array] agents the Agents on which to wait + # @return [Boolean] true if all actions complete before timeout + # + # @raise [Concurrent::TimeoutError] when timout is reached + # @!macro agent_await_warning + def await_for!(timeout, *agents) + raise Concurrent::TimeoutError unless await_for(timeout, *agents) + true + end + end + + private + + def ns_initialize(initial, opts) + @error_mode = opts[:error_mode] + @error_handler = opts[:error_handler] + + if @error_mode && !ERROR_MODES.include?(@error_mode) + raise ArgumentError.new('unrecognized error mode') + elsif @error_mode.nil? + @error_mode = @error_handler ? :continue : :fail + end + + @error_handler ||= DEFAULT_ERROR_HANDLER + @validator = opts.fetch(:validator, DEFAULT_VALIDATOR) + @current = Concurrent::AtomicReference.new(initial) + @error = Concurrent::AtomicReference.new(nil) + @caller = Concurrent::ThreadLocalVar.new(nil) + @queue = [] + + self.observers = Collection::CopyOnNotifyObserverSet.new + end + + def enqueue_action_job(action, args, executor) + raise ArgumentError.new('no action given') unless action + job = Job.new(action, args, executor, @caller.value || Thread.current.object_id) + synchronize { ns_enqueue_job(job) } + end + + def enqueue_await_job(latch) + synchronize do + if (index = ns_find_last_job_for_thread) + job = Job.new(AWAIT_ACTION, [latch], Concurrent.global_immediate_executor, + Thread.current.object_id) + ns_enqueue_job(job, index+1) + else + latch.count_down + true + end + end + end + + def ns_enqueue_job(job, index = nil) + # a non-nil index means this is an await job + return false if index.nil? && failed? + index ||= @queue.length + @queue.insert(index, job) + # if this is the only job, post to executor + ns_post_next_job if @queue.length == 1 + true + end + + def ns_post_next_job + @queue.first.executor.post { execute_next_job } + end + + def execute_next_job + job = synchronize { @queue.first } + old_value = @current.value + + @caller.value = job.caller # for nested actions + new_value = job.action.call(old_value, *job.args) + @caller.value = nil + + return if new_value == AWAIT_FLAG + + if ns_validate(new_value) + @current.value = new_value + observers.notify_observers(Time.now, old_value, new_value) + else + handle_error(ValidationError.new) + end + rescue => error + handle_error(error) + ensure + synchronize do + @queue.shift + unless failed? || @queue.empty? + ns_post_next_job + end + end + end + + def ns_validate(value) + @validator.call(value) + rescue + false + end + + def handle_error(error) + # stop new jobs from posting + @error.value = error if @error_mode == :fail + @error_handler.call(self, error) + rescue + # do nothing + end + + def ns_find_last_job_for_thread + @queue.rindex { |job| job.caller == Thread.current.object_id } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/array.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/array.rb new file mode 100644 index 0000000000..56931794ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/array.rb @@ -0,0 +1,66 @@ +require 'concurrent/utility/engine' +require 'concurrent/thread_safe/util' + +module Concurrent + + # @!macro concurrent_array + # + # A thread-safe subclass of Array. This version locks against the object + # itself for every method call, ensuring only one thread can be reading + # or writing at a time. This includes iteration methods like `#each`. + # + # @note `a += b` is **not** a **thread-safe** operation on + # `Concurrent::Array`. It reads array `a`, then it creates new `Concurrent::Array` + # which is concatenation of `a` and `b`, then it writes the concatenation to `a`. + # The read and write are independent operations they do not form a single atomic + # operation therefore when two `+=` operations are executed concurrently updates + # may be lost. Use `#concat` instead. + # + # @see http://ruby-doc.org/core-2.2.0/Array.html Ruby standard library `Array` + + # @!macro internal_implementation_note + ArrayImplementation = case + when Concurrent.on_cruby? + # Because MRI never runs code in parallel, the existing + # non-thread-safe structures should usually work fine. + ::Array + + when Concurrent.on_jruby? + require 'jruby/synchronized' + + class JRubyArray < ::Array + include JRuby::Synchronized + end + JRubyArray + + when Concurrent.on_rbx? + require 'monitor' + require 'concurrent/thread_safe/util/data_structures' + + class RbxArray < ::Array + end + + ThreadSafe::Util.make_synchronized_on_rbx RbxArray + RbxArray + + when Concurrent.on_truffleruby? + require 'concurrent/thread_safe/util/data_structures' + + class TruffleRubyArray < ::Array + end + + ThreadSafe::Util.make_synchronized_on_truffleruby TruffleRubyArray + TruffleRubyArray + + else + warn 'Possibly unsupported Ruby implementation' + ::Array + end + private_constant :ArrayImplementation + + # @!macro concurrent_array + class Array < ArrayImplementation + end + +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/async.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/async.rb new file mode 100644 index 0000000000..9e75ca92e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/async.rb @@ -0,0 +1,445 @@ +require 'concurrent/configuration' +require 'concurrent/ivar' +require 'concurrent/synchronization/lockable_object' + +module Concurrent + + # A mixin module that provides simple asynchronous behavior to a class, + # turning it into a simple actor. Loosely based on Erlang's + # [gen_server](http://www.erlang.org/doc/man/gen_server.html), but without + # supervision or linking. + # + # A more feature-rich {Concurrent::Actor} is also available when the + # capabilities of `Async` are too limited. + # + # ```cucumber + # Feature: + # As a stateful, plain old Ruby class + # I want safe, asynchronous behavior + # So my long-running methods don't block the main thread + # ``` + # + # The `Async` module is a way to mix simple yet powerful asynchronous + # capabilities into any plain old Ruby object or class, turning each object + # into a simple Actor. Method calls are processed on a background thread. The + # caller is free to perform other actions while processing occurs in the + # background. + # + # Method calls to the asynchronous object are made via two proxy methods: + # `async` (alias `cast`) and `await` (alias `call`). These proxy methods post + # the method call to the object's background thread and return a "future" + # which will eventually contain the result of the method call. + # + # This behavior is loosely patterned after Erlang's `gen_server` behavior. + # When an Erlang module implements the `gen_server` behavior it becomes + # inherently asynchronous. The `start` or `start_link` function spawns a + # process (similar to a thread but much more lightweight and efficient) and + # returns the ID of the process. Using the process ID, other processes can + # send messages to the `gen_server` via the `cast` and `call` methods. Unlike + # Erlang's `gen_server`, however, `Async` classes do not support linking or + # supervision trees. + # + # ## Basic Usage + # + # When this module is mixed into a class, objects of the class become inherently + # asynchronous. Each object gets its own background thread on which to post + # asynchronous method calls. Asynchronous method calls are executed in the + # background one at a time in the order they are received. + # + # To create an asynchronous class, simply mix in the `Concurrent::Async` module: + # + # ``` + # class Hello + # include Concurrent::Async + # + # def hello(name) + # "Hello, #{name}!" + # end + # end + # ``` + # + # When defining a constructor it is critical that the first line be a call to + # `super` with no arguments. The `super` method initializes the background + # thread and other asynchronous components. + # + # ``` + # class BackgroundLogger + # include Concurrent::Async + # + # def initialize(level) + # super() + # @logger = Logger.new(STDOUT) + # @logger.level = level + # end + # + # def info(msg) + # @logger.info(msg) + # end + # end + # ``` + # + # Mixing this module into a class provides each object two proxy methods: + # `async` and `await`. These methods are thread safe with respect to the + # enclosing object. The former proxy allows methods to be called + # asynchronously by posting to the object's internal thread. The latter proxy + # allows a method to be called synchronously but does so safely with respect + # to any pending asynchronous method calls and ensures proper ordering. Both + # methods return a {Concurrent::IVar} which can be inspected for the result + # of the proxied method call. Calling a method with `async` will return a + # `:pending` `IVar` whereas `await` will return a `:complete` `IVar`. + # + # ``` + # class Echo + # include Concurrent::Async + # + # def echo(msg) + # print "#{msg}\n" + # end + # end + # + # horn = Echo.new + # horn.echo('zero') # synchronous, not thread-safe + # # returns the actual return value of the method + # + # horn.async.echo('one') # asynchronous, non-blocking, thread-safe + # # returns an IVar in the :pending state + # + # horn.await.echo('two') # synchronous, blocking, thread-safe + # # returns an IVar in the :complete state + # ``` + # + # ## Let It Fail + # + # The `async` and `await` proxy methods have built-in error protection based + # on Erlang's famous "let it fail" philosophy. Instance methods should not be + # programmed defensively. When an exception is raised by a delegated method + # the proxy will rescue the exception, expose it to the caller as the `reason` + # attribute of the returned future, then process the next method call. + # + # ## Calling Methods Internally + # + # External method calls should *always* use the `async` and `await` proxy + # methods. When one method calls another method, the `async` proxy should + # rarely be used and the `await` proxy should *never* be used. + # + # When an object calls one of its own methods using the `await` proxy the + # second call will be enqueued *behind* the currently running method call. + # Any attempt to wait on the result will fail as the second call will never + # run until after the current call completes. + # + # Calling a method using the `await` proxy from within a method that was + # itself called using `async` or `await` will irreversibly deadlock the + # object. Do *not* do this, ever. + # + # ## Instance Variables and Attribute Accessors + # + # Instance variables do not need to be thread-safe so long as they are private. + # Asynchronous method calls are processed in the order they are received and + # are processed one at a time. Therefore private instance variables can only + # be accessed by one thread at a time. This is inherently thread-safe. + # + # When using private instance variables within asynchronous methods, the best + # practice is to read the instance variable into a local variable at the start + # of the method then update the instance variable at the *end* of the method. + # This way, should an exception be raised during method execution the internal + # state of the object will not have been changed. + # + # ### Reader Attributes + # + # The use of `attr_reader` is discouraged. Internal state exposed externally, + # when necessary, should be done through accessor methods. The instance + # variables exposed by these methods *must* be thread-safe, or they must be + # called using the `async` and `await` proxy methods. These two approaches are + # subtly different. + # + # When internal state is accessed via the `async` and `await` proxy methods, + # the returned value represents the object's state *at the time the call is + # processed*, which may *not* be the state of the object at the time the call + # is made. + # + # To get the state *at the current* time, irrespective of an enqueued method + # calls, a reader method must be called directly. This is inherently unsafe + # unless the instance variable is itself thread-safe, preferably using one + # of the thread-safe classes within this library. Because the thread-safe + # classes within this library are internally-locking or non-locking, they can + # be safely used from within asynchronous methods without causing deadlocks. + # + # Generally speaking, the best practice is to *not* expose internal state via + # reader methods. The best practice is to simply use the method's return value. + # + # ### Writer Attributes + # + # Writer attributes should never be used with asynchronous classes. Changing + # the state externally, even when done in the thread-safe way, is not logically + # consistent. Changes to state need to be timed with respect to all asynchronous + # method calls which my be in-process or enqueued. The only safe practice is to + # pass all necessary data to each method as arguments and let the method update + # the internal state as necessary. + # + # ## Class Constants, Variables, and Methods + # + # ### Class Constants + # + # Class constants do not need to be thread-safe. Since they are read-only and + # immutable they may be safely read both externally and from within + # asynchronous methods. + # + # ### Class Variables + # + # Class variables should be avoided. Class variables represent shared state. + # Shared state is anathema to concurrency. Should there be a need to share + # state using class variables they *must* be thread-safe, preferably + # using the thread-safe classes within this library. When updating class + # variables, never assign a new value/object to the variable itself. Assignment + # is not thread-safe in Ruby. Instead, use the thread-safe update functions + # of the variable itself to change the value. + # + # The best practice is to *never* use class variables with `Async` classes. + # + # ### Class Methods + # + # Class methods which are pure functions are safe. Class methods which modify + # class variables should be avoided, for all the reasons listed above. + # + # ## An Important Note About Thread Safe Guarantees + # + # > Thread safe guarantees can only be made when asynchronous method calls + # > are not mixed with direct method calls. Use only direct method calls + # > when the object is used exclusively on a single thread. Use only + # > `async` and `await` when the object is shared between threads. Once you + # > call a method using `async` or `await`, you should no longer call methods + # > directly on the object. Use `async` and `await` exclusively from then on. + # + # @example + # + # class Echo + # include Concurrent::Async + # + # def echo(msg) + # print "#{msg}\n" + # end + # end + # + # horn = Echo.new + # horn.echo('zero') # synchronous, not thread-safe + # # returns the actual return value of the method + # + # horn.async.echo('one') # asynchronous, non-blocking, thread-safe + # # returns an IVar in the :pending state + # + # horn.await.echo('two') # synchronous, blocking, thread-safe + # # returns an IVar in the :complete state + # + # @see Concurrent::Actor + # @see https://en.wikipedia.org/wiki/Actor_model "Actor Model" at Wikipedia + # @see http://www.erlang.org/doc/man/gen_server.html Erlang gen_server + # @see http://c2.com/cgi/wiki?LetItCrash "Let It Crash" at http://c2.com/ + module Async + + # @!method self.new(*args, &block) + # + # Instanciate a new object and ensure proper initialization of the + # synchronization mechanisms. + # + # @param [Array] args Zero or more arguments to be passed to the + # object's initializer. + # @param [Proc] block Optional block to pass to the object's initializer. + # @return [Object] A properly initialized object of the asynchronous class. + + # Check for the presence of a method on an object and determine if a given + # set of arguments matches the required arity. + # + # @param [Object] obj the object to check against + # @param [Symbol] method the method to check the object for + # @param [Array] args zero or more arguments for the arity check + # + # @raise [NameError] the object does not respond to `method` method + # @raise [ArgumentError] the given `args` do not match the arity of `method` + # + # @note This check is imperfect because of the way Ruby reports the arity of + # methods with a variable number of arguments. It is possible to determine + # if too few arguments are given but impossible to determine if too many + # arguments are given. This check may also fail to recognize dynamic behavior + # of the object, such as methods simulated with `method_missing`. + # + # @see http://www.ruby-doc.org/core-2.1.1/Method.html#method-i-arity Method#arity + # @see http://ruby-doc.org/core-2.1.0/Object.html#method-i-respond_to-3F Object#respond_to? + # @see http://www.ruby-doc.org/core-2.1.0/BasicObject.html#method-i-method_missing BasicObject#method_missing + # + # @!visibility private + def self.validate_argc(obj, method, *args) + argc = args.length + arity = obj.method(method).arity + + if arity >= 0 && argc != arity + raise ArgumentError.new("wrong number of arguments (#{argc} for #{arity})") + elsif arity < 0 && (arity = (arity + 1).abs) > argc + raise ArgumentError.new("wrong number of arguments (#{argc} for #{arity}..*)") + end + end + + # @!visibility private + def self.included(base) + base.singleton_class.send(:alias_method, :original_new, :new) + base.extend(ClassMethods) + super(base) + end + + # @!visibility private + module ClassMethods + def new(*args, &block) + obj = original_new(*args, &block) + obj.send(:init_synchronization) + obj + end + end + private_constant :ClassMethods + + # Delegates asynchronous, thread-safe method calls to the wrapped object. + # + # @!visibility private + class AsyncDelegator < Synchronization::LockableObject + safe_initialization! + + # Create a new delegator object wrapping the given delegate. + # + # @param [Object] delegate the object to wrap and delegate method calls to + def initialize(delegate) + super() + @delegate = delegate + @queue = [] + @executor = Concurrent.global_io_executor + end + + # Delegates method calls to the wrapped object. + # + # @param [Symbol] method the method being called + # @param [Array] args zero or more arguments to the method + # + # @return [IVar] the result of the method call + # + # @raise [NameError] the object does not respond to `method` method + # @raise [ArgumentError] the given `args` do not match the arity of `method` + def method_missing(method, *args, &block) + super unless @delegate.respond_to?(method) + Async::validate_argc(@delegate, method, *args) + + ivar = Concurrent::IVar.new + synchronize do + @queue.push [ivar, method, args, block] + @executor.post { perform } if @queue.length == 1 + end + + ivar + end + + # Perform all enqueued tasks. + # + # This method must be called from within the executor. It must not be + # called while already running. It will loop until the queue is empty. + def perform + loop do + ivar, method, args, block = synchronize { @queue.first } + break unless ivar # queue is empty + + begin + ivar.set(@delegate.send(method, *args, &block)) + rescue => error + ivar.fail(error) + end + + synchronize do + @queue.shift + return if @queue.empty? + end + end + end + end + private_constant :AsyncDelegator + + # Delegates synchronous, thread-safe method calls to the wrapped object. + # + # @!visibility private + class AwaitDelegator + + # Create a new delegator object wrapping the given delegate. + # + # @param [AsyncDelegator] delegate the object to wrap and delegate method calls to + def initialize(delegate) + @delegate = delegate + end + + # Delegates method calls to the wrapped object. + # + # @param [Symbol] method the method being called + # @param [Array] args zero or more arguments to the method + # + # @return [IVar] the result of the method call + # + # @raise [NameError] the object does not respond to `method` method + # @raise [ArgumentError] the given `args` do not match the arity of `method` + def method_missing(method, *args, &block) + ivar = @delegate.send(method, *args, &block) + ivar.wait + ivar + end + end + private_constant :AwaitDelegator + + # Causes the chained method call to be performed asynchronously on the + # object's thread. The delegated method will return a future in the + # `:pending` state and the method call will have been scheduled on the + # object's thread. The final disposition of the method call can be obtained + # by inspecting the returned future. + # + # @!macro async_thread_safety_warning + # @note The method call is guaranteed to be thread safe with respect to + # all other method calls against the same object that are called with + # either `async` or `await`. The mutable nature of Ruby references + # (and object orientation in general) prevent any other thread safety + # guarantees. Do NOT mix direct method calls with delegated method calls. + # Use *only* delegated method calls when sharing the object between threads. + # + # @return [Concurrent::IVar] the pending result of the asynchronous operation + # + # @raise [NameError] the object does not respond to the requested method + # @raise [ArgumentError] the given `args` do not match the arity of + # the requested method + def async + @__async_delegator__ + end + alias_method :cast, :async + + # Causes the chained method call to be performed synchronously on the + # current thread. The delegated will return a future in either the + # `:fulfilled` or `:rejected` state and the delegated method will have + # completed. The final disposition of the delegated method can be obtained + # by inspecting the returned future. + # + # @!macro async_thread_safety_warning + # + # @return [Concurrent::IVar] the completed result of the synchronous operation + # + # @raise [NameError] the object does not respond to the requested method + # @raise [ArgumentError] the given `args` do not match the arity of the + # requested method + def await + @__await_delegator__ + end + alias_method :call, :await + + # Initialize the internal serializer and other stnchronization mechanisms. + # + # @note This method *must* be called immediately upon object construction. + # This is the only way thread-safe initialization can be guaranteed. + # + # @!visibility private + def init_synchronization + return self if defined?(@__async_initialized__) && @__async_initialized__ + @__async_initialized__ = true + @__async_delegator__ = AsyncDelegator.new(self) + @__await_delegator__ = AwaitDelegator.new(@__async_delegator__) + self + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atom.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atom.rb new file mode 100644 index 0000000000..abef1cb0d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atom.rb @@ -0,0 +1,222 @@ +require 'concurrent/atomic/atomic_reference' +require 'concurrent/collection/copy_on_notify_observer_set' +require 'concurrent/concern/observable' +require 'concurrent/synchronization' + +# @!macro thread_safe_variable_comparison +# +# ## Thread-safe Variable Classes +# +# Each of the thread-safe variable classes is designed to solve a different +# problem. In general: +# +# * *{Concurrent::Agent}:* Shared, mutable variable providing independent, +# uncoordinated, *asynchronous* change of individual values. Best used when +# the value will undergo frequent, complex updates. Suitable when the result +# of an update does not need to be known immediately. +# * *{Concurrent::Atom}:* Shared, mutable variable providing independent, +# uncoordinated, *synchronous* change of individual values. Best used when +# the value will undergo frequent reads but only occasional, though complex, +# updates. Suitable when the result of an update must be known immediately. +# * *{Concurrent::AtomicReference}:* A simple object reference that can be +# atomically. Updates are synchronous but fast. Best used when updates a +# simple set operations. Not suitable when updates are complex. +# {Concurrent::AtomicBoolean} and {Concurrent::AtomicFixnum} are similar +# but optimized for the given data type. +# * *{Concurrent::Exchanger}:* Shared, stateless synchronization point. Used +# when two or more threads need to exchange data. The threads will pair then +# block on each other until the exchange is complete. +# * *{Concurrent::MVar}:* Shared synchronization point. Used when one thread +# must give a value to another, which must take the value. The threads will +# block on each other until the exchange is complete. +# * *{Concurrent::ThreadLocalVar}:* Shared, mutable, isolated variable which +# holds a different value for each thread which has access. Often used as +# an instance variable in objects which must maintain different state +# for different threads. +# * *{Concurrent::TVar}:* Shared, mutable variables which provide +# *coordinated*, *synchronous*, change of *many* stated. Used when multiple +# value must change together, in an all-or-nothing transaction. + + +module Concurrent + + # Atoms provide a way to manage shared, synchronous, independent state. + # + # An atom is initialized with an initial value and an optional validation + # proc. At any time the value of the atom can be synchronously and safely + # changed. If a validator is given at construction then any new value + # will be checked against the validator and will be rejected if the + # validator returns false or raises an exception. + # + # There are two ways to change the value of an atom: {#compare_and_set} and + # {#swap}. The former will set the new value if and only if it validates and + # the current value matches the new value. The latter will atomically set the + # new value to the result of running the given block if and only if that + # value validates. + # + # ## Example + # + # ``` + # def next_fibonacci(set = nil) + # return [0, 1] if set.nil? + # set + [set[-2..-1].reduce{|sum,x| sum + x }] + # end + # + # # create an atom with an initial value + # atom = Concurrent::Atom.new(next_fibonacci) + # + # # send a few update requests + # 5.times do + # atom.swap{|set| next_fibonacci(set) } + # end + # + # # get the current value + # atom.value #=> [0, 1, 1, 2, 3, 5, 8] + # ``` + # + # ## Observation + # + # Atoms support observers through the {Concurrent::Observable} mixin module. + # Notification of observers occurs every time the value of the Atom changes. + # When notified the observer will receive three arguments: `time`, `old_value`, + # and `new_value`. The `time` argument is the time at which the value change + # occurred. The `old_value` is the value of the Atom when the change began + # The `new_value` is the value to which the Atom was set when the change + # completed. Note that `old_value` and `new_value` may be the same. This is + # not an error. It simply means that the change operation returned the same + # value. + # + # Unlike in Clojure, `Atom` cannot participate in {Concurrent::TVar} transactions. + # + # @!macro thread_safe_variable_comparison + # + # @see http://clojure.org/atoms Clojure Atoms + # @see http://clojure.org/state Values and Change - Clojure's approach to Identity and State + class Atom < Synchronization::Object + include Concern::Observable + + safe_initialization! + attr_atomic(:value) + private :value=, :swap_value, :compare_and_set_value, :update_value + public :value + alias_method :deref, :value + + # @!method value + # The current value of the atom. + # + # @return [Object] The current value. + + # Create a new atom with the given initial value. + # + # @param [Object] value The initial value + # @param [Hash] opts The options used to configure the atom + # @option opts [Proc] :validator (nil) Optional proc used to validate new + # values. It must accept one and only one argument which will be the + # intended new value. The validator will return true if the new value + # is acceptable else return false (preferrably) or raise an exception. + # + # @!macro deref_options + # + # @raise [ArgumentError] if the validator is not a `Proc` (when given) + def initialize(value, opts = {}) + super() + @Validator = opts.fetch(:validator, -> v { true }) + self.observers = Collection::CopyOnNotifyObserverSet.new + self.value = value + end + + # Atomically swaps the value of atom using the given block. The current + # value will be passed to the block, as will any arguments passed as + # arguments to the function. The new value will be validated against the + # (optional) validator proc given at construction. If validation fails the + # value will not be changed. + # + # Internally, {#swap} reads the current value, applies the block to it, and + # attempts to compare-and-set it in. Since another thread may have changed + # the value in the intervening time, it may have to retry, and does so in a + # spin loop. The net effect is that the value will always be the result of + # the application of the supplied block to a current value, atomically. + # However, because the block might be called multiple times, it must be free + # of side effects. + # + # @note The given block may be called multiple times, and thus should be free + # of side effects. + # + # @param [Object] args Zero or more arguments passed to the block. + # + # @yield [value, args] Calculates a new value for the atom based on the + # current value and any supplied arguments. + # @yieldparam value [Object] The current value of the atom. + # @yieldparam args [Object] All arguments passed to the function, in order. + # @yieldreturn [Object] The intended new value of the atom. + # + # @return [Object] The final value of the atom after all operations and + # validations are complete. + # + # @raise [ArgumentError] When no block is given. + def swap(*args) + raise ArgumentError.new('no block given') unless block_given? + + loop do + old_value = value + new_value = yield(old_value, *args) + begin + break old_value unless valid?(new_value) + break new_value if compare_and_set(old_value, new_value) + rescue + break old_value + end + end + end + + # Atomically sets the value of atom to the new value if and only if the + # current value of the atom is identical to the old value and the new + # value successfully validates against the (optional) validator given + # at construction. + # + # @param [Object] old_value The expected current value. + # @param [Object] new_value The intended new value. + # + # @return [Boolean] True if the value is changed else false. + def compare_and_set(old_value, new_value) + if valid?(new_value) && compare_and_set_value(old_value, new_value) + observers.notify_observers(Time.now, old_value, new_value) + true + else + false + end + end + + # Atomically sets the value of atom to the new value without regard for the + # current value so long as the new value successfully validates against the + # (optional) validator given at construction. + # + # @param [Object] new_value The intended new value. + # + # @return [Object] The final value of the atom after all operations and + # validations are complete. + def reset(new_value) + old_value = value + if valid?(new_value) + self.value = new_value + observers.notify_observers(Time.now, old_value, new_value) + new_value + else + old_value + end + end + + private + + # Is the new value valid? + # + # @param [Object] new_value The intended new value. + # @return [Boolean] false if the validator function returns false or raises + # an exception else true + def valid?(new_value) + @Validator.call(new_value) + rescue + false + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/abstract_thread_local_var.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/abstract_thread_local_var.rb new file mode 100644 index 0000000000..fcdeed7f85 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/abstract_thread_local_var.rb @@ -0,0 +1,66 @@ +require 'concurrent/constants' + +module Concurrent + + # @!macro thread_local_var + # @!macro internal_implementation_note + # @!visibility private + class AbstractThreadLocalVar + + # @!macro thread_local_var_method_initialize + def initialize(default = nil, &default_block) + if default && block_given? + raise ArgumentError, "Cannot use both value and block as default value" + end + + if block_given? + @default_block = default_block + @default = nil + else + @default_block = nil + @default = default + end + + allocate_storage + end + + # @!macro thread_local_var_method_get + def value + raise NotImplementedError + end + + # @!macro thread_local_var_method_set + def value=(value) + raise NotImplementedError + end + + # @!macro thread_local_var_method_bind + def bind(value, &block) + if block_given? + old_value = self.value + begin + self.value = value + yield + ensure + self.value = old_value + end + end + end + + protected + + # @!visibility private + def allocate_storage + raise NotImplementedError + end + + # @!visibility private + def default + if @default_block + self.value = @default_block.call + else + @default + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_boolean.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_boolean.rb new file mode 100644 index 0000000000..4da4419b48 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_boolean.rb @@ -0,0 +1,126 @@ +require 'concurrent/atomic/mutex_atomic_boolean' +require 'concurrent/synchronization' + +module Concurrent + + ################################################################### + + # @!macro atomic_boolean_method_initialize + # + # Creates a new `AtomicBoolean` with the given initial value. + # + # @param [Boolean] initial the initial value + + # @!macro atomic_boolean_method_value_get + # + # Retrieves the current `Boolean` value. + # + # @return [Boolean] the current value + + # @!macro atomic_boolean_method_value_set + # + # Explicitly sets the value. + # + # @param [Boolean] value the new value to be set + # + # @return [Boolean] the current value + + # @!macro atomic_boolean_method_true_question + # + # Is the current value `true` + # + # @return [Boolean] true if the current value is `true`, else false + + # @!macro atomic_boolean_method_false_question + # + # Is the current value `false` + # + # @return [Boolean] true if the current value is `false`, else false + + # @!macro atomic_boolean_method_make_true + # + # Explicitly sets the value to true. + # + # @return [Boolean] true is value has changed, otherwise false + + # @!macro atomic_boolean_method_make_false + # + # Explicitly sets the value to false. + # + # @return [Boolean] true is value has changed, otherwise false + + ################################################################### + + # @!macro atomic_boolean_public_api + # + # @!method initialize(initial = false) + # @!macro atomic_boolean_method_initialize + # + # @!method value + # @!macro atomic_boolean_method_value_get + # + # @!method value=(value) + # @!macro atomic_boolean_method_value_set + # + # @!method true? + # @!macro atomic_boolean_method_true_question + # + # @!method false? + # @!macro atomic_boolean_method_false_question + # + # @!method make_true + # @!macro atomic_boolean_method_make_true + # + # @!method make_false + # @!macro atomic_boolean_method_make_false + + ################################################################### + + # @!visibility private + # @!macro internal_implementation_note + AtomicBooleanImplementation = case + when defined?(JavaAtomicBoolean) + JavaAtomicBoolean + when defined?(CAtomicBoolean) + CAtomicBoolean + else + MutexAtomicBoolean + end + private_constant :AtomicBooleanImplementation + + # @!macro atomic_boolean + # + # A boolean value that can be updated atomically. Reads and writes to an atomic + # boolean and thread-safe and guaranteed to succeed. Reads and writes may block + # briefly but no explicit locking is required. + # + # @!macro thread_safe_variable_comparison + # + # Performance: + # + # ``` + # Testing with ruby 2.1.2 + # Testing with Concurrent::MutexAtomicBoolean... + # 2.790000 0.000000 2.790000 ( 2.791454) + # Testing with Concurrent::CAtomicBoolean... + # 0.740000 0.000000 0.740000 ( 0.740206) + # + # Testing with jruby 1.9.3 + # Testing with Concurrent::MutexAtomicBoolean... + # 5.240000 2.520000 7.760000 ( 3.683000) + # Testing with Concurrent::JavaAtomicBoolean... + # 3.340000 0.010000 3.350000 ( 0.855000) + # ``` + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html java.util.concurrent.atomic.AtomicBoolean + # + # @!macro atomic_boolean_public_api + class AtomicBoolean < AtomicBooleanImplementation + # @return [String] Short string representation. + def to_s + format '%s value:%s>', super[0..-2], value + end + + alias_method :inspect, :to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_fixnum.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_fixnum.rb new file mode 100644 index 0000000000..553aae06e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_fixnum.rb @@ -0,0 +1,143 @@ +require 'concurrent/atomic/mutex_atomic_fixnum' +require 'concurrent/synchronization' + +module Concurrent + + ################################################################### + + # @!macro atomic_fixnum_method_initialize + # + # Creates a new `AtomicFixnum` with the given initial value. + # + # @param [Fixnum] initial the initial value + # @raise [ArgumentError] if the initial value is not a `Fixnum` + + # @!macro atomic_fixnum_method_value_get + # + # Retrieves the current `Fixnum` value. + # + # @return [Fixnum] the current value + + # @!macro atomic_fixnum_method_value_set + # + # Explicitly sets the value. + # + # @param [Fixnum] value the new value to be set + # + # @return [Fixnum] the current value + # + # @raise [ArgumentError] if the new value is not a `Fixnum` + + # @!macro atomic_fixnum_method_increment + # + # Increases the current value by the given amount (defaults to 1). + # + # @param [Fixnum] delta the amount by which to increase the current value + # + # @return [Fixnum] the current value after incrementation + + # @!macro atomic_fixnum_method_decrement + # + # Decreases the current value by the given amount (defaults to 1). + # + # @param [Fixnum] delta the amount by which to decrease the current value + # + # @return [Fixnum] the current value after decrementation + + # @!macro atomic_fixnum_method_compare_and_set + # + # Atomically sets the value to the given updated value if the current + # value == the expected value. + # + # @param [Fixnum] expect the expected value + # @param [Fixnum] update the new value + # + # @return [Boolean] true if the value was updated else false + + # @!macro atomic_fixnum_method_update + # + # Pass the current value to the given block, replacing it + # with the block's result. May retry if the value changes + # during the block's execution. + # + # @yield [Object] Calculate a new value for the atomic reference using + # given (old) value + # @yieldparam [Object] old_value the starting value of the atomic reference + # + # @return [Object] the new value + + ################################################################### + + # @!macro atomic_fixnum_public_api + # + # @!method initialize(initial = 0) + # @!macro atomic_fixnum_method_initialize + # + # @!method value + # @!macro atomic_fixnum_method_value_get + # + # @!method value=(value) + # @!macro atomic_fixnum_method_value_set + # + # @!method increment(delta) + # @!macro atomic_fixnum_method_increment + # + # @!method decrement(delta) + # @!macro atomic_fixnum_method_decrement + # + # @!method compare_and_set(expect, update) + # @!macro atomic_fixnum_method_compare_and_set + # + # @!method update + # @!macro atomic_fixnum_method_update + + ################################################################### + + # @!visibility private + # @!macro internal_implementation_note + AtomicFixnumImplementation = case + when defined?(JavaAtomicFixnum) + JavaAtomicFixnum + when defined?(CAtomicFixnum) + CAtomicFixnum + else + MutexAtomicFixnum + end + private_constant :AtomicFixnumImplementation + + # @!macro atomic_fixnum + # + # A numeric value that can be updated atomically. Reads and writes to an atomic + # fixnum and thread-safe and guaranteed to succeed. Reads and writes may block + # briefly but no explicit locking is required. + # + # @!macro thread_safe_variable_comparison + # + # Performance: + # + # ``` + # Testing with ruby 2.1.2 + # Testing with Concurrent::MutexAtomicFixnum... + # 3.130000 0.000000 3.130000 ( 3.136505) + # Testing with Concurrent::CAtomicFixnum... + # 0.790000 0.000000 0.790000 ( 0.785550) + # + # Testing with jruby 1.9.3 + # Testing with Concurrent::MutexAtomicFixnum... + # 5.460000 2.460000 7.920000 ( 3.715000) + # Testing with Concurrent::JavaAtomicFixnum... + # 4.520000 0.030000 4.550000 ( 1.187000) + # ``` + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html java.util.concurrent.atomic.AtomicLong + # + # @!macro atomic_fixnum_public_api + class AtomicFixnum < AtomicFixnumImplementation + # @return [String] Short string representation. + def to_s + format '%s value:%s>', super[0..-2], value + end + + alias_method :inspect, :to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_markable_reference.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_markable_reference.rb new file mode 100644 index 0000000000..f20cd46a52 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_markable_reference.rb @@ -0,0 +1,164 @@ +module Concurrent + # An atomic reference which maintains an object reference along with a mark bit + # that can be updated atomically. + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicMarkableReference.html + # java.util.concurrent.atomic.AtomicMarkableReference + class AtomicMarkableReference < ::Concurrent::Synchronization::Object + + attr_atomic(:reference) + private :reference, :reference=, :swap_reference, :compare_and_set_reference, :update_reference + + def initialize(value = nil, mark = false) + super() + self.reference = immutable_array(value, mark) + end + + # Atomically sets the value and mark to the given updated value and + # mark given both: + # - the current value == the expected value && + # - the current mark == the expected mark + # + # @param [Object] expected_val the expected value + # @param [Object] new_val the new value + # @param [Boolean] expected_mark the expected mark + # @param [Boolean] new_mark the new mark + # + # @return [Boolean] `true` if successful. A `false` return indicates + # that the actual value was not equal to the expected value or the + # actual mark was not equal to the expected mark + def compare_and_set(expected_val, new_val, expected_mark, new_mark) + # Memoize a valid reference to the current AtomicReference for + # later comparison. + current = reference + curr_val, curr_mark = current + + # Ensure that that the expected marks match. + return false unless expected_mark == curr_mark + + if expected_val.is_a? Numeric + # If the object is a numeric, we need to ensure we are comparing + # the numerical values + return false unless expected_val == curr_val + else + # Otherwise, we need to ensure we are comparing the object identity. + # Theoretically, this could be incorrect if a user monkey-patched + # `Object#equal?`, but they should know that they are playing with + # fire at that point. + return false unless expected_val.equal? curr_val + end + + prospect = immutable_array(new_val, new_mark) + + compare_and_set_reference current, prospect + end + + alias_method :compare_and_swap, :compare_and_set + + # Gets the current reference and marked values. + # + # @return [Array] the current reference and marked values + def get + reference + end + + # Gets the current value of the reference + # + # @return [Object] the current value of the reference + def value + reference[0] + end + + # Gets the current marked value + # + # @return [Boolean] the current marked value + def mark + reference[1] + end + + alias_method :marked?, :mark + + # _Unconditionally_ sets to the given value of both the reference and + # the mark. + # + # @param [Object] new_val the new value + # @param [Boolean] new_mark the new mark + # + # @return [Array] both the new value and the new mark + def set(new_val, new_mark) + self.reference = immutable_array(new_val, new_mark) + end + + # Pass the current value and marked state to the given block, replacing it + # with the block's results. May retry if the value changes during the + # block's execution. + # + # @yield [Object] Calculate a new value and marked state for the atomic + # reference using given (old) value and (old) marked + # @yieldparam [Object] old_val the starting value of the atomic reference + # @yieldparam [Boolean] old_mark the starting state of marked + # + # @return [Array] the new value and new mark + def update + loop do + old_val, old_mark = reference + new_val, new_mark = yield old_val, old_mark + + if compare_and_set old_val, new_val, old_mark, new_mark + return immutable_array(new_val, new_mark) + end + end + end + + # Pass the current value to the given block, replacing it + # with the block's result. Raise an exception if the update + # fails. + # + # @yield [Object] Calculate a new value and marked state for the atomic + # reference using given (old) value and (old) marked + # @yieldparam [Object] old_val the starting value of the atomic reference + # @yieldparam [Boolean] old_mark the starting state of marked + # + # @return [Array] the new value and marked state + # + # @raise [Concurrent::ConcurrentUpdateError] if the update fails + def try_update! + old_val, old_mark = reference + new_val, new_mark = yield old_val, old_mark + + unless compare_and_set old_val, new_val, old_mark, new_mark + fail ::Concurrent::ConcurrentUpdateError, + 'AtomicMarkableReference: Update failed due to race condition.', + 'Note: If you would like to guarantee an update, please use ' + + 'the `AtomicMarkableReference#update` method.' + end + + immutable_array(new_val, new_mark) + end + + # Pass the current value to the given block, replacing it with the + # block's result. Simply return nil if update fails. + # + # @yield [Object] Calculate a new value and marked state for the atomic + # reference using given (old) value and (old) marked + # @yieldparam [Object] old_val the starting value of the atomic reference + # @yieldparam [Boolean] old_mark the starting state of marked + # + # @return [Array] the new value and marked state, or nil if + # the update failed + def try_update + old_val, old_mark = reference + new_val, new_mark = yield old_val, old_mark + + return unless compare_and_set old_val, new_val, old_mark, new_mark + + immutable_array(new_val, new_mark) + end + + private + + def immutable_array(*args) + args.freeze + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_reference.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_reference.rb new file mode 100644 index 0000000000..620c0698e7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/atomic_reference.rb @@ -0,0 +1,204 @@ +require 'concurrent/synchronization' +require 'concurrent/utility/engine' +require 'concurrent/atomic_reference/numeric_cas_wrapper' + +# Shim for TruffleRuby::AtomicReference +if Concurrent.on_truffleruby? && !defined?(TruffleRuby::AtomicReference) + # @!visibility private + module TruffleRuby + AtomicReference = Truffle::AtomicReference + end +end + +module Concurrent + + # Define update methods that use direct paths + # + # @!visibility private + # @!macro internal_implementation_note + module AtomicDirectUpdate + + # @!macro atomic_reference_method_update + # + # Pass the current value to the given block, replacing it + # with the block's result. May retry if the value changes + # during the block's execution. + # + # @yield [Object] Calculate a new value for the atomic reference using + # given (old) value + # @yieldparam [Object] old_value the starting value of the atomic reference + # @return [Object] the new value + def update + true until compare_and_set(old_value = get, new_value = yield(old_value)) + new_value + end + + # @!macro atomic_reference_method_try_update + # + # Pass the current value to the given block, replacing it + # with the block's result. Return nil if the update fails. + # + # @yield [Object] Calculate a new value for the atomic reference using + # given (old) value + # @yieldparam [Object] old_value the starting value of the atomic reference + # @note This method was altered to avoid raising an exception by default. + # Instead, this method now returns `nil` in case of failure. For more info, + # please see: https://github.com/ruby-concurrency/concurrent-ruby/pull/336 + # @return [Object] the new value, or nil if update failed + def try_update + old_value = get + new_value = yield old_value + + return unless compare_and_set old_value, new_value + + new_value + end + + # @!macro atomic_reference_method_try_update! + # + # Pass the current value to the given block, replacing it + # with the block's result. Raise an exception if the update + # fails. + # + # @yield [Object] Calculate a new value for the atomic reference using + # given (old) value + # @yieldparam [Object] old_value the starting value of the atomic reference + # @note This behavior mimics the behavior of the original + # `AtomicReference#try_update` API. The reason this was changed was to + # avoid raising exceptions (which are inherently slow) by default. For more + # info: https://github.com/ruby-concurrency/concurrent-ruby/pull/336 + # @return [Object] the new value + # @raise [Concurrent::ConcurrentUpdateError] if the update fails + def try_update! + old_value = get + new_value = yield old_value + unless compare_and_set(old_value, new_value) + if $VERBOSE + raise ConcurrentUpdateError, "Update failed" + else + raise ConcurrentUpdateError, "Update failed", ConcurrentUpdateError::CONC_UP_ERR_BACKTRACE + end + end + new_value + end + end + + require 'concurrent/atomic_reference/mutex_atomic' + + # @!macro atomic_reference + # + # An object reference that may be updated atomically. All read and write + # operations have java volatile semantic. + # + # @!macro thread_safe_variable_comparison + # + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html + # + # @!method initialize(value = nil) + # @!macro atomic_reference_method_initialize + # @param [Object] value The initial value. + # + # @!method get + # @!macro atomic_reference_method_get + # Gets the current value. + # @return [Object] the current value + # + # @!method set(new_value) + # @!macro atomic_reference_method_set + # Sets to the given value. + # @param [Object] new_value the new value + # @return [Object] the new value + # + # @!method get_and_set(new_value) + # @!macro atomic_reference_method_get_and_set + # Atomically sets to the given value and returns the old value. + # @param [Object] new_value the new value + # @return [Object] the old value + # + # @!method compare_and_set(old_value, new_value) + # @!macro atomic_reference_method_compare_and_set + # + # Atomically sets the value to the given updated value if + # the current value == the expected value. + # + # @param [Object] old_value the expected value + # @param [Object] new_value the new value + # + # @return [Boolean] `true` if successful. A `false` return indicates + # that the actual value was not equal to the expected value. + # + # @!method update + # @!macro atomic_reference_method_update + # + # @!method try_update + # @!macro atomic_reference_method_try_update + # + # @!method try_update! + # @!macro atomic_reference_method_try_update! + + + # @!macro internal_implementation_note + class ConcurrentUpdateError < ThreadError + # frozen pre-allocated backtrace to speed ConcurrentUpdateError + CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze + end + + # @!macro internal_implementation_note + AtomicReferenceImplementation = case + when Concurrent.on_cruby? && Concurrent.c_extensions_loaded? + # @!visibility private + # @!macro internal_implementation_note + class CAtomicReference + include AtomicDirectUpdate + include AtomicNumericCompareAndSetWrapper + alias_method :compare_and_swap, :compare_and_set + end + CAtomicReference + when Concurrent.on_jruby? + # @!visibility private + # @!macro internal_implementation_note + class JavaAtomicReference + include AtomicDirectUpdate + end + JavaAtomicReference + when Concurrent.on_truffleruby? + class TruffleRubyAtomicReference < TruffleRuby::AtomicReference + include AtomicDirectUpdate + alias_method :value, :get + alias_method :value=, :set + alias_method :compare_and_swap, :compare_and_set + alias_method :swap, :get_and_set + end + when Concurrent.on_rbx? + # @note Extends `Rubinius::AtomicReference` version adding aliases + # and numeric logic. + # + # @!visibility private + # @!macro internal_implementation_note + class RbxAtomicReference < Rubinius::AtomicReference + alias_method :_compare_and_set, :compare_and_set + include AtomicDirectUpdate + include AtomicNumericCompareAndSetWrapper + alias_method :value, :get + alias_method :value=, :set + alias_method :swap, :get_and_set + alias_method :compare_and_swap, :compare_and_set + end + RbxAtomicReference + else + MutexAtomicReference + end + private_constant :AtomicReferenceImplementation + + # @!macro atomic_reference + class AtomicReference < AtomicReferenceImplementation + + # @return [String] Short string representation. + def to_s + format '%s value:%s>', super[0..-2], get + end + + alias_method :inspect, :to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/count_down_latch.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/count_down_latch.rb new file mode 100644 index 0000000000..4c0158d755 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/count_down_latch.rb @@ -0,0 +1,100 @@ +require 'concurrent/atomic/mutex_count_down_latch' +require 'concurrent/atomic/java_count_down_latch' +require 'concurrent/utility/engine' + +module Concurrent + + ################################################################### + + # @!macro count_down_latch_method_initialize + # + # Create a new `CountDownLatch` with the initial `count`. + # + # @param [new] count the initial count + # + # @raise [ArgumentError] if `count` is not an integer or is less than zero + + # @!macro count_down_latch_method_wait + # + # Block on the latch until the counter reaches zero or until `timeout` is reached. + # + # @param [Fixnum] timeout the number of seconds to wait for the counter or `nil` + # to block indefinitely + # @return [Boolean] `true` if the `count` reaches zero else false on `timeout` + + # @!macro count_down_latch_method_count_down + # + # Signal the latch to decrement the counter. Will signal all blocked threads when + # the `count` reaches zero. + + # @!macro count_down_latch_method_count + # + # The current value of the counter. + # + # @return [Fixnum] the current value of the counter + + ################################################################### + + # @!macro count_down_latch_public_api + # + # @!method initialize(count = 1) + # @!macro count_down_latch_method_initialize + # + # @!method wait(timeout = nil) + # @!macro count_down_latch_method_wait + # + # @!method count_down + # @!macro count_down_latch_method_count_down + # + # @!method count + # @!macro count_down_latch_method_count + + ################################################################### + + # @!visibility private + # @!macro internal_implementation_note + CountDownLatchImplementation = case + when Concurrent.on_jruby? + JavaCountDownLatch + else + MutexCountDownLatch + end + private_constant :CountDownLatchImplementation + + # @!macro count_down_latch + # + # A synchronization object that allows one thread to wait on multiple other threads. + # The thread that will wait creates a `CountDownLatch` and sets the initial value + # (normally equal to the number of other threads). The initiating thread passes the + # latch to the other threads then waits for the other threads by calling the `#wait` + # method. Each of the other threads calls `#count_down` when done with its work. + # When the latch counter reaches zero the waiting thread is unblocked and continues + # with its work. A `CountDownLatch` can be used only once. Its value cannot be reset. + # + # @!macro count_down_latch_public_api + # @example Waiter and Decrementer + # latch = Concurrent::CountDownLatch.new(3) + # + # waiter = Thread.new do + # latch.wait() + # puts ("Waiter released") + # end + # + # decrementer = Thread.new do + # sleep(1) + # latch.count_down + # puts latch.count + # + # sleep(1) + # latch.count_down + # puts latch.count + # + # sleep(1) + # latch.count_down + # puts latch.count + # end + # + # [waiter, decrementer].each(&:join) + class CountDownLatch < CountDownLatchImplementation + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/cyclic_barrier.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/cyclic_barrier.rb new file mode 100644 index 0000000000..42f5a94967 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/cyclic_barrier.rb @@ -0,0 +1,128 @@ +require 'concurrent/synchronization' +require 'concurrent/utility/native_integer' + +module Concurrent + + # A synchronization aid that allows a set of threads to all wait for each + # other to reach a common barrier point. + # @example + # barrier = Concurrent::CyclicBarrier.new(3) + # jobs = Array.new(3) { |i| -> { sleep i; p done: i } } + # process = -> (i) do + # # waiting to start at the same time + # barrier.wait + # # execute job + # jobs[i].call + # # wait for others to finish + # barrier.wait + # end + # threads = 2.times.map do |i| + # Thread.new(i, &process) + # end + # + # # use main as well + # process.call 2 + # + # # here we can be sure that all jobs are processed + class CyclicBarrier < Synchronization::LockableObject + + # @!visibility private + Generation = Struct.new(:status) + private_constant :Generation + + # Create a new `CyclicBarrier` that waits for `parties` threads + # + # @param [Fixnum] parties the number of parties + # @yield an optional block that will be executed that will be executed after + # the last thread arrives and before the others are released + # + # @raise [ArgumentError] if `parties` is not an integer or is less than zero + def initialize(parties, &block) + Utility::NativeInteger.ensure_integer_and_bounds parties + Utility::NativeInteger.ensure_positive_and_no_zero parties + + super(&nil) + synchronize { ns_initialize parties, &block } + end + + # @return [Fixnum] the number of threads needed to pass the barrier + def parties + synchronize { @parties } + end + + # @return [Fixnum] the number of threads currently waiting on the barrier + def number_waiting + synchronize { @number_waiting } + end + + # Blocks on the barrier until the number of waiting threads is equal to + # `parties` or until `timeout` is reached or `reset` is called + # If a block has been passed to the constructor, it will be executed once by + # the last arrived thread before releasing the others + # @param [Fixnum] timeout the number of seconds to wait for the counter or + # `nil` to block indefinitely + # @return [Boolean] `true` if the `count` reaches zero else false on + # `timeout` or on `reset` or if the barrier is broken + def wait(timeout = nil) + synchronize do + + return false unless @generation.status == :waiting + + @number_waiting += 1 + + if @number_waiting == @parties + @action.call if @action + ns_generation_done @generation, :fulfilled + true + else + generation = @generation + if ns_wait_until(timeout) { generation.status != :waiting } + generation.status == :fulfilled + else + ns_generation_done generation, :broken, false + false + end + end + end + end + + # resets the barrier to its initial state + # If there is at least one waiting thread, it will be woken up, the `wait` + # method will return false and the barrier will be broken + # If the barrier is broken, this method restores it to the original state + # + # @return [nil] + def reset + synchronize { ns_generation_done @generation, :reset } + end + + # A barrier can be broken when: + # - a thread called the `reset` method while at least one other thread was waiting + # - at least one thread timed out on `wait` method + # + # A broken barrier can be restored using `reset` it's safer to create a new one + # @return [Boolean] true if the barrier is broken otherwise false + def broken? + synchronize { @generation.status != :waiting } + end + + protected + + def ns_generation_done(generation, status, continue = true) + generation.status = status + ns_next_generation if continue + ns_broadcast + end + + def ns_next_generation + @generation = Generation.new(:waiting) + @number_waiting = 0 + end + + def ns_initialize(parties, &block) + @parties = parties + @action = block + ns_next_generation + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/event.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/event.rb new file mode 100644 index 0000000000..825f38a031 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/event.rb @@ -0,0 +1,109 @@ +require 'thread' +require 'concurrent/synchronization' + +module Concurrent + + # Old school kernel-style event reminiscent of Win32 programming in C++. + # + # When an `Event` is created it is in the `unset` state. Threads can choose to + # `#wait` on the event, blocking until released by another thread. When one + # thread wants to alert all blocking threads it calls the `#set` method which + # will then wake up all listeners. Once an `Event` has been set it remains set. + # New threads calling `#wait` will return immediately. An `Event` may be + # `#reset` at any time once it has been set. + # + # @see http://msdn.microsoft.com/en-us/library/windows/desktop/ms682655.aspx + # @example + # event = Concurrent::Event.new + # + # t1 = Thread.new do + # puts "t1 is waiting" + # event.wait(1) + # puts "event ocurred" + # end + # + # t2 = Thread.new do + # puts "t2 calling set" + # event.set + # end + # + # [t1, t2].each(&:join) + # + # # prints: + # # t2 calling set + # # t1 is waiting + # # event occurred + class Event < Synchronization::LockableObject + + # Creates a new `Event` in the unset state. Threads calling `#wait` on the + # `Event` will block. + def initialize + super + synchronize { ns_initialize } + end + + # Is the object in the set state? + # + # @return [Boolean] indicating whether or not the `Event` has been set + def set? + synchronize { @set } + end + + # Trigger the event, setting the state to `set` and releasing all threads + # waiting on the event. Has no effect if the `Event` has already been set. + # + # @return [Boolean] should always return `true` + def set + synchronize { ns_set } + end + + def try? + synchronize { @set ? false : ns_set } + end + + # Reset a previously set event back to the `unset` state. + # Has no effect if the `Event` has not yet been set. + # + # @return [Boolean] should always return `true` + def reset + synchronize do + if @set + @set = false + @iteration +=1 + end + true + end + end + + # Wait a given number of seconds for the `Event` to be set by another + # thread. Will wait forever when no `timeout` value is given. Returns + # immediately if the `Event` has already been set. + # + # @return [Boolean] true if the `Event` was set before timeout else false + def wait(timeout = nil) + synchronize do + unless @set + iteration = @iteration + ns_wait_until(timeout) { iteration < @iteration || @set } + else + true + end + end + end + + protected + + def ns_set + unless @set + @set = true + ns_broadcast + end + true + end + + def ns_initialize + @set = false + @iteration = 0 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_count_down_latch.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_count_down_latch.rb new file mode 100644 index 0000000000..cb5b35a567 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_count_down_latch.rb @@ -0,0 +1,42 @@ +if Concurrent.on_jruby? + + module Concurrent + + # @!macro count_down_latch + # @!visibility private + # @!macro internal_implementation_note + class JavaCountDownLatch + + # @!macro count_down_latch_method_initialize + def initialize(count = 1) + Utility::NativeInteger.ensure_integer_and_bounds(count) + Utility::NativeInteger.ensure_positive(count) + @latch = java.util.concurrent.CountDownLatch.new(count) + end + + # @!macro count_down_latch_method_wait + def wait(timeout = nil) + result = nil + if timeout.nil? + Synchronization::JRuby.sleep_interruptibly { @latch.await } + result = true + else + Synchronization::JRuby.sleep_interruptibly do + result = @latch.await(1000 * timeout, java.util.concurrent.TimeUnit::MILLISECONDS) + end + end + result + end + + # @!macro count_down_latch_method_count_down + def count_down + @latch.countDown + end + + # @!macro count_down_latch_method_count + def count + @latch.getCount + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_thread_local_var.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_thread_local_var.rb new file mode 100644 index 0000000000..b41018ffed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/java_thread_local_var.rb @@ -0,0 +1,37 @@ +require 'concurrent/atomic/abstract_thread_local_var' + +if Concurrent.on_jruby? + + module Concurrent + + # @!visibility private + # @!macro internal_implementation_note + class JavaThreadLocalVar < AbstractThreadLocalVar + + # @!macro thread_local_var_method_get + def value + value = @var.get + + if value.nil? + default + elsif value == NULL + nil + else + value + end + end + + # @!macro thread_local_var_method_set + def value=(value) + @var.set(value) + end + + protected + + # @!visibility private + def allocate_storage + @var = java.lang.ThreadLocal.new + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_boolean.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_boolean.rb new file mode 100644 index 0000000000..a033de4cad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_boolean.rb @@ -0,0 +1,62 @@ +require 'concurrent/synchronization' + +module Concurrent + + # @!macro atomic_boolean + # @!visibility private + # @!macro internal_implementation_note + class MutexAtomicBoolean < Synchronization::LockableObject + + # @!macro atomic_boolean_method_initialize + def initialize(initial = false) + super() + synchronize { ns_initialize(initial) } + end + + # @!macro atomic_boolean_method_value_get + def value + synchronize { @value } + end + + # @!macro atomic_boolean_method_value_set + def value=(value) + synchronize { @value = !!value } + end + + # @!macro atomic_boolean_method_true_question + def true? + synchronize { @value } + end + + # @!macro atomic_boolean_method_false_question + def false? + synchronize { !@value } + end + + # @!macro atomic_boolean_method_make_true + def make_true + synchronize { ns_make_value(true) } + end + + # @!macro atomic_boolean_method_make_false + def make_false + synchronize { ns_make_value(false) } + end + + protected + + # @!visibility private + def ns_initialize(initial) + @value = !!initial + end + + private + + # @!visibility private + def ns_make_value(value) + old = @value + @value = value + old != @value + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_fixnum.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_fixnum.rb new file mode 100644 index 0000000000..77b91d2dbf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_atomic_fixnum.rb @@ -0,0 +1,75 @@ +require 'concurrent/synchronization' +require 'concurrent/utility/native_integer' + +module Concurrent + + # @!macro atomic_fixnum + # @!visibility private + # @!macro internal_implementation_note + class MutexAtomicFixnum < Synchronization::LockableObject + + # @!macro atomic_fixnum_method_initialize + def initialize(initial = 0) + super() + synchronize { ns_initialize(initial) } + end + + # @!macro atomic_fixnum_method_value_get + def value + synchronize { @value } + end + + # @!macro atomic_fixnum_method_value_set + def value=(value) + synchronize { ns_set(value) } + end + + # @!macro atomic_fixnum_method_increment + def increment(delta = 1) + synchronize { ns_set(@value + delta.to_i) } + end + + alias_method :up, :increment + + # @!macro atomic_fixnum_method_decrement + def decrement(delta = 1) + synchronize { ns_set(@value - delta.to_i) } + end + + alias_method :down, :decrement + + # @!macro atomic_fixnum_method_compare_and_set + def compare_and_set(expect, update) + synchronize do + if @value == expect.to_i + @value = update.to_i + true + else + false + end + end + end + + # @!macro atomic_fixnum_method_update + def update + synchronize do + @value = yield @value + end + end + + protected + + # @!visibility private + def ns_initialize(initial) + ns_set(initial) + end + + private + + # @!visibility private + def ns_set(value) + Utility::NativeInteger.ensure_integer_and_bounds value + @value = value + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_count_down_latch.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_count_down_latch.rb new file mode 100644 index 0000000000..e99744cef6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_count_down_latch.rb @@ -0,0 +1,44 @@ +require 'concurrent/synchronization' +require 'concurrent/utility/native_integer' + +module Concurrent + + # @!macro count_down_latch + # @!visibility private + # @!macro internal_implementation_note + class MutexCountDownLatch < Synchronization::LockableObject + + # @!macro count_down_latch_method_initialize + def initialize(count = 1) + Utility::NativeInteger.ensure_integer_and_bounds count + Utility::NativeInteger.ensure_positive count + + super() + synchronize { ns_initialize count } + end + + # @!macro count_down_latch_method_wait + def wait(timeout = nil) + synchronize { ns_wait_until(timeout) { @count == 0 } } + end + + # @!macro count_down_latch_method_count_down + def count_down + synchronize do + @count -= 1 if @count > 0 + ns_broadcast if @count == 0 + end + end + + # @!macro count_down_latch_method_count + def count + synchronize { @count } + end + + protected + + def ns_initialize(count) + @count = count + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_semaphore.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_semaphore.rb new file mode 100644 index 0000000000..2042f73056 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/mutex_semaphore.rb @@ -0,0 +1,115 @@ +require 'concurrent/synchronization' +require 'concurrent/utility/native_integer' + +module Concurrent + + # @!macro semaphore + # @!visibility private + # @!macro internal_implementation_note + class MutexSemaphore < Synchronization::LockableObject + + # @!macro semaphore_method_initialize + def initialize(count) + Utility::NativeInteger.ensure_integer_and_bounds count + + super() + synchronize { ns_initialize count } + end + + # @!macro semaphore_method_acquire + def acquire(permits = 1) + Utility::NativeInteger.ensure_integer_and_bounds permits + Utility::NativeInteger.ensure_positive permits + + synchronize do + try_acquire_timed(permits, nil) + nil + end + end + + # @!macro semaphore_method_available_permits + def available_permits + synchronize { @free } + end + + # @!macro semaphore_method_drain_permits + # + # Acquires and returns all permits that are immediately available. + # + # @return [Integer] + def drain_permits + synchronize do + @free.tap { |_| @free = 0 } + end + end + + # @!macro semaphore_method_try_acquire + def try_acquire(permits = 1, timeout = nil) + Utility::NativeInteger.ensure_integer_and_bounds permits + Utility::NativeInteger.ensure_positive permits + + synchronize do + if timeout.nil? + try_acquire_now(permits) + else + try_acquire_timed(permits, timeout) + end + end + end + + # @!macro semaphore_method_release + def release(permits = 1) + Utility::NativeInteger.ensure_integer_and_bounds permits + Utility::NativeInteger.ensure_positive permits + + synchronize do + @free += permits + permits.times { ns_signal } + end + nil + end + + # Shrinks the number of available permits by the indicated reduction. + # + # @param [Fixnum] reduction Number of permits to remove. + # + # @raise [ArgumentError] if `reduction` is not an integer or is negative + # + # @raise [ArgumentError] if `@free` - `@reduction` is less than zero + # + # @return [nil] + # + # @!visibility private + def reduce_permits(reduction) + Utility::NativeInteger.ensure_integer_and_bounds reduction + Utility::NativeInteger.ensure_positive reduction + + synchronize { @free -= reduction } + nil + end + + protected + + # @!visibility private + def ns_initialize(count) + @free = count + end + + private + + # @!visibility private + def try_acquire_now(permits) + if @free >= permits + @free -= permits + true + else + false + end + end + + # @!visibility private + def try_acquire_timed(permits, timeout) + ns_wait_until(timeout) { try_acquire_now(permits) } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/read_write_lock.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/read_write_lock.rb new file mode 100644 index 0000000000..246f21aac3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/read_write_lock.rb @@ -0,0 +1,254 @@ +require 'thread' +require 'concurrent/atomic/atomic_fixnum' +require 'concurrent/errors' +require 'concurrent/synchronization' + +module Concurrent + + # Ruby read-write lock implementation + # + # Allows any number of concurrent readers, but only one concurrent writer + # (And if the "write" lock is taken, any readers who come along will have to wait) + # + # If readers are already active when a writer comes along, the writer will wait for + # all the readers to finish before going ahead. + # Any additional readers that come when the writer is already waiting, will also + # wait (so writers are not starved). + # + # This implementation is based on `java.util.concurrent.ReentrantReadWriteLock`. + # + # @example + # lock = Concurrent::ReadWriteLock.new + # lock.with_read_lock { data.retrieve } + # lock.with_write_lock { data.modify! } + # + # @note Do **not** try to acquire the write lock while already holding a read lock + # **or** try to acquire the write lock while you already have it. + # This will lead to deadlock + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html java.util.concurrent.ReentrantReadWriteLock + class ReadWriteLock < Synchronization::Object + + # @!visibility private + WAITING_WRITER = 1 << 15 + + # @!visibility private + RUNNING_WRITER = 1 << 29 + + # @!visibility private + MAX_READERS = WAITING_WRITER - 1 + + # @!visibility private + MAX_WRITERS = RUNNING_WRITER - MAX_READERS - 1 + + safe_initialization! + + # Implementation notes: + # A goal is to make the uncontended path for both readers/writers lock-free + # Only if there is reader-writer or writer-writer contention, should locks be used + # Internal state is represented by a single integer ("counter"), and updated + # using atomic compare-and-swap operations + # When the counter is 0, the lock is free + # Each reader increments the counter by 1 when acquiring a read lock + # (and decrements by 1 when releasing the read lock) + # The counter is increased by (1 << 15) for each writer waiting to acquire the + # write lock, and by (1 << 29) if the write lock is taken + + # Create a new `ReadWriteLock` in the unlocked state. + def initialize + super() + @Counter = AtomicFixnum.new(0) # single integer which represents lock state + @ReadLock = Synchronization::Lock.new + @WriteLock = Synchronization::Lock.new + end + + # Execute a block operation within a read lock. + # + # @yield the task to be performed within the lock. + # + # @return [Object] the result of the block operation. + # + # @raise [ArgumentError] when no block is given. + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def with_read_lock + raise ArgumentError.new('no block given') unless block_given? + acquire_read_lock + begin + yield + ensure + release_read_lock + end + end + + # Execute a block operation within a write lock. + # + # @yield the task to be performed within the lock. + # + # @return [Object] the result of the block operation. + # + # @raise [ArgumentError] when no block is given. + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def with_write_lock + raise ArgumentError.new('no block given') unless block_given? + acquire_write_lock + begin + yield + ensure + release_write_lock + end + end + + # Acquire a read lock. If a write lock has been acquired will block until + # it is released. Will not block if other read locks have been acquired. + # + # @return [Boolean] true if the lock is successfully acquired + # + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def acquire_read_lock + while true + c = @Counter.value + raise ResourceLimitError.new('Too many reader threads') if max_readers?(c) + + # If a writer is waiting when we first queue up, we need to wait + if waiting_writer?(c) + @ReadLock.wait_until { !waiting_writer? } + + # after a reader has waited once, they are allowed to "barge" ahead of waiting writers + # but if a writer is *running*, the reader still needs to wait (naturally) + while true + c = @Counter.value + if running_writer?(c) + @ReadLock.wait_until { !running_writer? } + else + return if @Counter.compare_and_set(c, c+1) + end + end + else + break if @Counter.compare_and_set(c, c+1) + end + end + true + end + + # Release a previously acquired read lock. + # + # @return [Boolean] true if the lock is successfully released + def release_read_lock + while true + c = @Counter.value + if @Counter.compare_and_set(c, c-1) + # If one or more writers were waiting, and we were the last reader, wake a writer up + if waiting_writer?(c) && running_readers(c) == 1 + @WriteLock.signal + end + break + end + end + true + end + + # Acquire a write lock. Will block and wait for all active readers and writers. + # + # @return [Boolean] true if the lock is successfully acquired + # + # @raise [Concurrent::ResourceLimitError] if the maximum number of writers + # is exceeded. + def acquire_write_lock + while true + c = @Counter.value + raise ResourceLimitError.new('Too many writer threads') if max_writers?(c) + + if c == 0 # no readers OR writers running + # if we successfully swap the RUNNING_WRITER bit on, then we can go ahead + break if @Counter.compare_and_set(0, RUNNING_WRITER) + elsif @Counter.compare_and_set(c, c+WAITING_WRITER) + while true + # Now we have successfully incremented, so no more readers will be able to increment + # (they will wait instead) + # However, readers OR writers could decrement right here, OR another writer could increment + @WriteLock.wait_until do + # So we have to do another check inside the synchronized section + # If a writer OR reader is running, then go to sleep + c = @Counter.value + !running_writer?(c) && !running_readers?(c) + end + + # We just came out of a wait + # If we successfully turn the RUNNING_WRITER bit on with an atomic swap, + # Then we are OK to stop waiting and go ahead + # Otherwise go back and wait again + c = @Counter.value + break if !running_writer?(c) && !running_readers?(c) && @Counter.compare_and_set(c, c+RUNNING_WRITER-WAITING_WRITER) + end + break + end + end + true + end + + # Release a previously acquired write lock. + # + # @return [Boolean] true if the lock is successfully released + def release_write_lock + return true unless running_writer? + c = @Counter.update { |counter| counter - RUNNING_WRITER } + @ReadLock.broadcast + @WriteLock.signal if waiting_writers(c) > 0 + true + end + + # Queries if the write lock is held by any thread. + # + # @return [Boolean] true if the write lock is held else false` + def write_locked? + @Counter.value >= RUNNING_WRITER + end + + # Queries whether any threads are waiting to acquire the read or write lock. + # + # @return [Boolean] true if any threads are waiting for a lock else false + def has_waiters? + waiting_writer?(@Counter.value) + end + + private + + # @!visibility private + def running_readers(c = @Counter.value) + c & MAX_READERS + end + + # @!visibility private + def running_readers?(c = @Counter.value) + (c & MAX_READERS) > 0 + end + + # @!visibility private + def running_writer?(c = @Counter.value) + c >= RUNNING_WRITER + end + + # @!visibility private + def waiting_writers(c = @Counter.value) + (c & MAX_WRITERS) / WAITING_WRITER + end + + # @!visibility private + def waiting_writer?(c = @Counter.value) + c >= WAITING_WRITER + end + + # @!visibility private + def max_readers?(c = @Counter.value) + (c & MAX_READERS) == MAX_READERS + end + + # @!visibility private + def max_writers?(c = @Counter.value) + (c & MAX_WRITERS) == MAX_WRITERS + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/reentrant_read_write_lock.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/reentrant_read_write_lock.rb new file mode 100644 index 0000000000..42d7f3c3ec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/reentrant_read_write_lock.rb @@ -0,0 +1,379 @@ +require 'thread' +require 'concurrent/atomic/atomic_reference' +require 'concurrent/errors' +require 'concurrent/synchronization' +require 'concurrent/atomic/thread_local_var' + +module Concurrent + + # Re-entrant read-write lock implementation + # + # Allows any number of concurrent readers, but only one concurrent writer + # (And while the "write" lock is taken, no read locks can be obtained either. + # Hence, the write lock can also be called an "exclusive" lock.) + # + # If another thread has taken a read lock, any thread which wants a write lock + # will block until all the readers release their locks. However, once a thread + # starts waiting to obtain a write lock, any additional readers that come along + # will also wait (so writers are not starved). + # + # A thread can acquire both a read and write lock at the same time. A thread can + # also acquire a read lock OR a write lock more than once. Only when the read (or + # write) lock is released as many times as it was acquired, will the thread + # actually let it go, allowing other threads which might have been waiting + # to proceed. Therefore the lock can be upgraded by first acquiring + # read lock and then write lock and that the lock can be downgraded by first + # having both read and write lock a releasing just the write lock. + # + # If both read and write locks are acquired by the same thread, it is not strictly + # necessary to release them in the same order they were acquired. In other words, + # the following code is legal: + # + # @example + # lock = Concurrent::ReentrantReadWriteLock.new + # lock.acquire_write_lock + # lock.acquire_read_lock + # lock.release_write_lock + # # At this point, the current thread is holding only a read lock, not a write + # # lock. So other threads can take read locks, but not a write lock. + # lock.release_read_lock + # # Now the current thread is not holding either a read or write lock, so + # # another thread could potentially acquire a write lock. + # + # This implementation was inspired by `java.util.concurrent.ReentrantReadWriteLock`. + # + # @example + # lock = Concurrent::ReentrantReadWriteLock.new + # lock.with_read_lock { data.retrieve } + # lock.with_write_lock { data.modify! } + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html java.util.concurrent.ReentrantReadWriteLock + class ReentrantReadWriteLock < Synchronization::Object + + # Implementation notes: + # + # A goal is to make the uncontended path for both readers/writers mutex-free + # Only if there is reader-writer or writer-writer contention, should mutexes be used + # Otherwise, a single CAS operation is all we need to acquire/release a lock + # + # Internal state is represented by a single integer ("counter"), and updated + # using atomic compare-and-swap operations + # When the counter is 0, the lock is free + # Each thread which has one OR MORE read locks increments the counter by 1 + # (and decrements by 1 when releasing the read lock) + # The counter is increased by (1 << 15) for each writer waiting to acquire the + # write lock, and by (1 << 29) if the write lock is taken + # + # Additionally, each thread uses a thread-local variable to count how many times + # it has acquired a read lock, AND how many times it has acquired a write lock. + # It uses a similar trick; an increment of 1 means a read lock was taken, and + # an increment of (1 << 15) means a write lock was taken + # This is what makes re-entrancy possible + # + # 2 rules are followed to ensure good liveness properties: + # 1) Once a writer has queued up and is waiting for a write lock, no other thread + # can take a lock without waiting + # 2) When a write lock is released, readers are given the "first chance" to wake + # up and acquire a read lock + # Following these rules means readers and writers tend to "take turns", so neither + # can starve the other, even under heavy contention + + # @!visibility private + READER_BITS = 15 + # @!visibility private + WRITER_BITS = 14 + + # Used with @Counter: + # @!visibility private + WAITING_WRITER = 1 << READER_BITS + # @!visibility private + RUNNING_WRITER = 1 << (READER_BITS + WRITER_BITS) + # @!visibility private + MAX_READERS = WAITING_WRITER - 1 + # @!visibility private + MAX_WRITERS = RUNNING_WRITER - MAX_READERS - 1 + + # Used with @HeldCount: + # @!visibility private + WRITE_LOCK_HELD = 1 << READER_BITS + # @!visibility private + READ_LOCK_MASK = WRITE_LOCK_HELD - 1 + # @!visibility private + WRITE_LOCK_MASK = MAX_WRITERS + + safe_initialization! + + # Create a new `ReentrantReadWriteLock` in the unlocked state. + def initialize + super() + @Counter = AtomicFixnum.new(0) # single integer which represents lock state + @ReadQueue = Synchronization::Lock.new # used to queue waiting readers + @WriteQueue = Synchronization::Lock.new # used to queue waiting writers + @HeldCount = ThreadLocalVar.new(0) # indicates # of R & W locks held by this thread + end + + # Execute a block operation within a read lock. + # + # @yield the task to be performed within the lock. + # + # @return [Object] the result of the block operation. + # + # @raise [ArgumentError] when no block is given. + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def with_read_lock + raise ArgumentError.new('no block given') unless block_given? + acquire_read_lock + begin + yield + ensure + release_read_lock + end + end + + # Execute a block operation within a write lock. + # + # @yield the task to be performed within the lock. + # + # @return [Object] the result of the block operation. + # + # @raise [ArgumentError] when no block is given. + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def with_write_lock + raise ArgumentError.new('no block given') unless block_given? + acquire_write_lock + begin + yield + ensure + release_write_lock + end + end + + # Acquire a read lock. If a write lock is held by another thread, will block + # until it is released. + # + # @return [Boolean] true if the lock is successfully acquired + # + # @raise [Concurrent::ResourceLimitError] if the maximum number of readers + # is exceeded. + def acquire_read_lock + if (held = @HeldCount.value) > 0 + # If we already have a lock, there's no need to wait + if held & READ_LOCK_MASK == 0 + # But we do need to update the counter, if we were holding a write + # lock but not a read lock + @Counter.update { |c| c + 1 } + end + @HeldCount.value = held + 1 + return true + end + + while true + c = @Counter.value + raise ResourceLimitError.new('Too many reader threads') if max_readers?(c) + + # If a writer is waiting OR running when we first queue up, we need to wait + if waiting_or_running_writer?(c) + # Before going to sleep, check again with the ReadQueue mutex held + @ReadQueue.synchronize do + @ReadQueue.ns_wait if waiting_or_running_writer? + end + # Note: the above 'synchronize' block could have used #wait_until, + # but that waits repeatedly in a loop, checking the wait condition + # each time it wakes up (to protect against spurious wakeups) + # But we are already in a loop, which is only broken when we successfully + # acquire the lock! So we don't care about spurious wakeups, and would + # rather not pay the extra overhead of using #wait_until + + # After a reader has waited once, they are allowed to "barge" ahead of waiting writers + # But if a writer is *running*, the reader still needs to wait (naturally) + while true + c = @Counter.value + if running_writer?(c) + @ReadQueue.synchronize do + @ReadQueue.ns_wait if running_writer? + end + elsif @Counter.compare_and_set(c, c+1) + @HeldCount.value = held + 1 + return true + end + end + elsif @Counter.compare_and_set(c, c+1) + @HeldCount.value = held + 1 + return true + end + end + end + + # Try to acquire a read lock and return true if we succeed. If it cannot be + # acquired immediately, return false. + # + # @return [Boolean] true if the lock is successfully acquired + def try_read_lock + if (held = @HeldCount.value) > 0 + if held & READ_LOCK_MASK == 0 + # If we hold a write lock, but not a read lock... + @Counter.update { |c| c + 1 } + end + @HeldCount.value = held + 1 + return true + else + c = @Counter.value + if !waiting_or_running_writer?(c) && @Counter.compare_and_set(c, c+1) + @HeldCount.value = held + 1 + return true + end + end + false + end + + # Release a previously acquired read lock. + # + # @return [Boolean] true if the lock is successfully released + def release_read_lock + held = @HeldCount.value = @HeldCount.value - 1 + rlocks_held = held & READ_LOCK_MASK + if rlocks_held == 0 + c = @Counter.update { |counter| counter - 1 } + # If one or more writers were waiting, and we were the last reader, wake a writer up + if waiting_or_running_writer?(c) && running_readers(c) == 0 + @WriteQueue.signal + end + elsif rlocks_held == READ_LOCK_MASK + raise IllegalOperationError, "Cannot release a read lock which is not held" + end + true + end + + # Acquire a write lock. Will block and wait for all active readers and writers. + # + # @return [Boolean] true if the lock is successfully acquired + # + # @raise [Concurrent::ResourceLimitError] if the maximum number of writers + # is exceeded. + def acquire_write_lock + if (held = @HeldCount.value) >= WRITE_LOCK_HELD + # if we already have a write (exclusive) lock, there's no need to wait + @HeldCount.value = held + WRITE_LOCK_HELD + return true + end + + while true + c = @Counter.value + raise ResourceLimitError.new('Too many writer threads') if max_writers?(c) + + # To go ahead and take the lock without waiting, there must be no writer + # running right now, AND no writers who came before us still waiting to + # acquire the lock + # Additionally, if any read locks have been taken, we must hold all of them + if c == held + # If we successfully swap the RUNNING_WRITER bit on, then we can go ahead + if @Counter.compare_and_set(c, c+RUNNING_WRITER) + @HeldCount.value = held + WRITE_LOCK_HELD + return true + end + elsif @Counter.compare_and_set(c, c+WAITING_WRITER) + while true + # Now we have successfully incremented, so no more readers will be able to increment + # (they will wait instead) + # However, readers OR writers could decrement right here + @WriteQueue.synchronize do + # So we have to do another check inside the synchronized section + # If a writer OR another reader is running, then go to sleep + c = @Counter.value + @WriteQueue.ns_wait if running_writer?(c) || running_readers(c) != held + end + # Note: if you are thinking of replacing the above 'synchronize' block + # with #wait_until, read the comment in #acquire_read_lock first! + + # We just came out of a wait + # If we successfully turn the RUNNING_WRITER bit on with an atomic swap, + # then we are OK to stop waiting and go ahead + # Otherwise go back and wait again + c = @Counter.value + if !running_writer?(c) && + running_readers(c) == held && + @Counter.compare_and_set(c, c+RUNNING_WRITER-WAITING_WRITER) + @HeldCount.value = held + WRITE_LOCK_HELD + return true + end + end + end + end + end + + # Try to acquire a write lock and return true if we succeed. If it cannot be + # acquired immediately, return false. + # + # @return [Boolean] true if the lock is successfully acquired + def try_write_lock + if (held = @HeldCount.value) >= WRITE_LOCK_HELD + @HeldCount.value = held + WRITE_LOCK_HELD + return true + else + c = @Counter.value + if !waiting_or_running_writer?(c) && + running_readers(c) == held && + @Counter.compare_and_set(c, c+RUNNING_WRITER) + @HeldCount.value = held + WRITE_LOCK_HELD + return true + end + end + false + end + + # Release a previously acquired write lock. + # + # @return [Boolean] true if the lock is successfully released + def release_write_lock + held = @HeldCount.value = @HeldCount.value - WRITE_LOCK_HELD + wlocks_held = held & WRITE_LOCK_MASK + if wlocks_held == 0 + c = @Counter.update { |counter| counter - RUNNING_WRITER } + @ReadQueue.broadcast + @WriteQueue.signal if waiting_writers(c) > 0 + elsif wlocks_held == WRITE_LOCK_MASK + raise IllegalOperationError, "Cannot release a write lock which is not held" + end + true + end + + private + + # @!visibility private + def running_readers(c = @Counter.value) + c & MAX_READERS + end + + # @!visibility private + def running_readers?(c = @Counter.value) + (c & MAX_READERS) > 0 + end + + # @!visibility private + def running_writer?(c = @Counter.value) + c >= RUNNING_WRITER + end + + # @!visibility private + def waiting_writers(c = @Counter.value) + (c & MAX_WRITERS) >> READER_BITS + end + + # @!visibility private + def waiting_or_running_writer?(c = @Counter.value) + c >= WAITING_WRITER + end + + # @!visibility private + def max_readers?(c = @Counter.value) + (c & MAX_READERS) == MAX_READERS + end + + # @!visibility private + def max_writers?(c = @Counter.value) + (c & MAX_WRITERS) == MAX_WRITERS + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/ruby_thread_local_var.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/ruby_thread_local_var.rb new file mode 100644 index 0000000000..06afae7316 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/ruby_thread_local_var.rb @@ -0,0 +1,161 @@ +require 'thread' +require 'concurrent/atomic/abstract_thread_local_var' + +module Concurrent + + # @!visibility private + # @!macro internal_implementation_note + class RubyThreadLocalVar < AbstractThreadLocalVar + + # Each thread has a (lazily initialized) array of thread-local variable values + # Each time a new thread-local var is created, we allocate an "index" for it + # For example, if the allocated index is 1, that means slot #1 in EVERY + # thread's thread-local array will be used for the value of that TLV + # + # The good thing about using a per-THREAD structure to hold values, rather + # than a per-TLV structure, is that no synchronization is needed when + # reading and writing those values (since the structure is only ever + # accessed by a single thread) + # + # Of course, when a TLV is GC'd, 1) we need to recover its index for use + # by other new TLVs (otherwise the thread-local arrays could get bigger + # and bigger with time), and 2) we need to null out all the references + # held in the now-unused slots (both to avoid blocking GC of those objects, + # and also to prevent "stale" values from being passed on to a new TLV + # when the index is reused) + # Because we need to null out freed slots, we need to keep references to + # ALL the thread-local arrays -- ARRAYS is for that + # But when a Thread is GC'd, we need to drop the reference to its thread-local + # array, so we don't leak memory + + # @!visibility private + FREE = [] + LOCK = Mutex.new + ARRAYS = {} # used as a hash set + @@next = 0 + private_constant :FREE, :LOCK, :ARRAYS + + # @!macro thread_local_var_method_get + def value + if array = get_threadlocal_array + value = array[@index] + if value.nil? + default + elsif value.equal?(NULL) + nil + else + value + end + else + default + end + end + + # @!macro thread_local_var_method_set + def value=(value) + me = Thread.current + # We could keep the thread-local arrays in a hash, keyed by Thread + # But why? That would require locking + # Using Ruby's built-in thread-local storage is faster + unless array = get_threadlocal_array(me) + array = set_threadlocal_array([], me) + LOCK.synchronize { ARRAYS[array.object_id] = array } + ObjectSpace.define_finalizer(me, self.class.thread_finalizer(array)) + end + array[@index] = (value.nil? ? NULL : value) + value + end + + protected + + # @!visibility private + def allocate_storage + @index = LOCK.synchronize do + FREE.pop || begin + result = @@next + @@next += 1 + result + end + end + ObjectSpace.define_finalizer(self, self.class.threadlocal_finalizer(@index)) + end + + # @!visibility private + def self.threadlocal_finalizer(index) + proc do + Thread.new do # avoid error: can't be called from trap context + LOCK.synchronize do + FREE.push(index) + # The cost of GC'ing a TLV is linear in the number of threads using TLVs + # But that is natural! More threads means more storage is used per TLV + # So naturally more CPU time is required to free more storage + ARRAYS.each_value do |array| + array[index] = nil + end + end + end + end + end + + # @!visibility private + def self.thread_finalizer(array) + proc do + Thread.new do # avoid error: can't be called from trap context + LOCK.synchronize do + # The thread which used this thread-local array is now gone + # So don't hold onto a reference to the array (thus blocking GC) + ARRAYS.delete(array.object_id) + end + end + end + end + + private + + if Thread.instance_methods.include?(:thread_variable_get) + + def get_threadlocal_array(thread = Thread.current) + thread.thread_variable_get(:__threadlocal_array__) + end + + def set_threadlocal_array(array, thread = Thread.current) + thread.thread_variable_set(:__threadlocal_array__, array) + end + + else + + def get_threadlocal_array(thread = Thread.current) + thread[:__threadlocal_array__] + end + + def set_threadlocal_array(array, thread = Thread.current) + thread[:__threadlocal_array__] = array + end + end + + # This exists only for use in testing + # @!visibility private + def value_for(thread) + if array = get_threadlocal_array(thread) + value = array[@index] + if value.nil? + default_for(thread) + elsif value.equal?(NULL) + nil + else + value + end + else + default_for(thread) + end + end + + def default_for(thread) + if @default_block + raise "Cannot use default_for with default block" + else + @default + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/semaphore.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/semaphore.rb new file mode 100644 index 0000000000..1b2bd8c95d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/semaphore.rb @@ -0,0 +1,145 @@ +require 'concurrent/atomic/mutex_semaphore' +require 'concurrent/synchronization' + +module Concurrent + + ################################################################### + + # @!macro semaphore_method_initialize + # + # Create a new `Semaphore` with the initial `count`. + # + # @param [Fixnum] count the initial count + # + # @raise [ArgumentError] if `count` is not an integer or is less than zero + + # @!macro semaphore_method_acquire + # + # Acquires the given number of permits from this semaphore, + # blocking until all are available. + # + # @param [Fixnum] permits Number of permits to acquire + # + # @raise [ArgumentError] if `permits` is not an integer or is less than + # one + # + # @return [nil] + + # @!macro semaphore_method_available_permits + # + # Returns the current number of permits available in this semaphore. + # + # @return [Integer] + + # @!macro semaphore_method_drain_permits + # + # Acquires and returns all permits that are immediately available. + # + # @return [Integer] + + # @!macro semaphore_method_try_acquire + # + # Acquires the given number of permits from this semaphore, + # only if all are available at the time of invocation or within + # `timeout` interval + # + # @param [Fixnum] permits the number of permits to acquire + # + # @param [Fixnum] timeout the number of seconds to wait for the counter + # or `nil` to return immediately + # + # @raise [ArgumentError] if `permits` is not an integer or is less than + # one + # + # @return [Boolean] `false` if no permits are available, `true` when + # acquired a permit + + # @!macro semaphore_method_release + # + # Releases the given number of permits, returning them to the semaphore. + # + # @param [Fixnum] permits Number of permits to return to the semaphore. + # + # @raise [ArgumentError] if `permits` is not a number or is less than one + # + # @return [nil] + + ################################################################### + + # @!macro semaphore_public_api + # + # @!method initialize(count) + # @!macro semaphore_method_initialize + # + # @!method acquire(permits = 1) + # @!macro semaphore_method_acquire + # + # @!method available_permits + # @!macro semaphore_method_available_permits + # + # @!method drain_permits + # @!macro semaphore_method_drain_permits + # + # @!method try_acquire(permits = 1, timeout = nil) + # @!macro semaphore_method_try_acquire + # + # @!method release(permits = 1) + # @!macro semaphore_method_release + + ################################################################### + + # @!visibility private + # @!macro internal_implementation_note + SemaphoreImplementation = case + when defined?(JavaSemaphore) + JavaSemaphore + else + MutexSemaphore + end + private_constant :SemaphoreImplementation + + # @!macro semaphore + # + # A counting semaphore. Conceptually, a semaphore maintains a set of + # permits. Each {#acquire} blocks if necessary until a permit is + # available, and then takes it. Each {#release} adds a permit, potentially + # releasing a blocking acquirer. + # However, no actual permit objects are used; the Semaphore just keeps a + # count of the number available and acts accordingly. + # + # @!macro semaphore_public_api + # @example + # semaphore = Concurrent::Semaphore.new(2) + # + # t1 = Thread.new do + # semaphore.acquire + # puts "Thread 1 acquired semaphore" + # end + # + # t2 = Thread.new do + # semaphore.acquire + # puts "Thread 2 acquired semaphore" + # end + # + # t3 = Thread.new do + # semaphore.acquire + # puts "Thread 3 acquired semaphore" + # end + # + # t4 = Thread.new do + # sleep(2) + # puts "Thread 4 releasing semaphore" + # semaphore.release + # end + # + # [t1, t2, t3, t4].each(&:join) + # + # # prints: + # # Thread 3 acquired semaphore + # # Thread 2 acquired semaphore + # # Thread 4 releasing semaphore + # # Thread 1 acquired semaphore + # + class Semaphore < SemaphoreImplementation + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/thread_local_var.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/thread_local_var.rb new file mode 100644 index 0000000000..9f09e4cd0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic/thread_local_var.rb @@ -0,0 +1,104 @@ +require 'concurrent/atomic/ruby_thread_local_var' +require 'concurrent/atomic/java_thread_local_var' +require 'concurrent/utility/engine' + +module Concurrent + + ################################################################### + + # @!macro thread_local_var_method_initialize + # + # Creates a thread local variable. + # + # @param [Object] default the default value when otherwise unset + # @param [Proc] default_block Optional block that gets called to obtain the + # default value for each thread + + # @!macro thread_local_var_method_get + # + # Returns the value in the current thread's copy of this thread-local variable. + # + # @return [Object] the current value + + # @!macro thread_local_var_method_set + # + # Sets the current thread's copy of this thread-local variable to the specified value. + # + # @param [Object] value the value to set + # @return [Object] the new value + + # @!macro thread_local_var_method_bind + # + # Bind the given value to thread local storage during + # execution of the given block. + # + # @param [Object] value the value to bind + # @yield the operation to be performed with the bound variable + # @return [Object] the value + + + ################################################################### + + # @!macro thread_local_var_public_api + # + # @!method initialize(default = nil, &default_block) + # @!macro thread_local_var_method_initialize + # + # @!method value + # @!macro thread_local_var_method_get + # + # @!method value=(value) + # @!macro thread_local_var_method_set + # + # @!method bind(value, &block) + # @!macro thread_local_var_method_bind + + ################################################################### + + # @!visibility private + # @!macro internal_implementation_note + ThreadLocalVarImplementation = case + when Concurrent.on_jruby? + JavaThreadLocalVar + else + RubyThreadLocalVar + end + private_constant :ThreadLocalVarImplementation + + # @!macro thread_local_var + # + # A `ThreadLocalVar` is a variable where the value is different for each thread. + # Each variable may have a default value, but when you modify the variable only + # the current thread will ever see that change. + # + # @!macro thread_safe_variable_comparison + # + # @example + # v = ThreadLocalVar.new(14) + # v.value #=> 14 + # v.value = 2 + # v.value #=> 2 + # + # @example + # v = ThreadLocalVar.new(14) + # + # t1 = Thread.new do + # v.value #=> 14 + # v.value = 1 + # v.value #=> 1 + # end + # + # t2 = Thread.new do + # v.value #=> 14 + # v.value = 2 + # v.value #=> 2 + # end + # + # v.value #=> 14 + # + # @see https://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html Java ThreadLocal + # + # @!macro thread_local_var_public_api + class ThreadLocalVar < ThreadLocalVarImplementation + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/mutex_atomic.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/mutex_atomic.rb new file mode 100644 index 0000000000..d092aedd5b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/mutex_atomic.rb @@ -0,0 +1,56 @@ +module Concurrent + + # @!visibility private + # @!macro internal_implementation_note + class MutexAtomicReference < Synchronization::LockableObject + include AtomicDirectUpdate + include AtomicNumericCompareAndSetWrapper + alias_method :compare_and_swap, :compare_and_set + + # @!macro atomic_reference_method_initialize + def initialize(value = nil) + super() + synchronize { ns_initialize(value) } + end + + # @!macro atomic_reference_method_get + def get + synchronize { @value } + end + alias_method :value, :get + + # @!macro atomic_reference_method_set + def set(new_value) + synchronize { @value = new_value } + end + alias_method :value=, :set + + # @!macro atomic_reference_method_get_and_set + def get_and_set(new_value) + synchronize do + old_value = @value + @value = new_value + old_value + end + end + alias_method :swap, :get_and_set + + # @!macro atomic_reference_method_compare_and_set + def _compare_and_set(old_value, new_value) + synchronize do + if @value.equal? old_value + @value = new_value + true + else + false + end + end + end + + protected + + def ns_initialize(value) + @value = value + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb new file mode 100644 index 0000000000..709a382231 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb @@ -0,0 +1,28 @@ +module Concurrent + + # Special "compare and set" handling of numeric values. + # + # @!visibility private + # @!macro internal_implementation_note + module AtomicNumericCompareAndSetWrapper + + # @!macro atomic_reference_method_compare_and_set + def compare_and_set(old_value, new_value) + if old_value.kind_of? Numeric + while true + old = get + + return false unless old.kind_of? Numeric + + return false unless old == old_value + + result = _compare_and_set(old, new_value) + return result if result + end + else + _compare_and_set(old_value, new_value) + end + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomics.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomics.rb new file mode 100644 index 0000000000..16cbe66101 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/atomics.rb @@ -0,0 +1,10 @@ +require 'concurrent/atomic/atomic_reference' +require 'concurrent/atomic/atomic_boolean' +require 'concurrent/atomic/atomic_fixnum' +require 'concurrent/atomic/cyclic_barrier' +require 'concurrent/atomic/count_down_latch' +require 'concurrent/atomic/event' +require 'concurrent/atomic/read_write_lock' +require 'concurrent/atomic/reentrant_read_write_lock' +require 'concurrent/atomic/semaphore' +require 'concurrent/atomic/thread_local_var' diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_notify_observer_set.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_notify_observer_set.rb new file mode 100644 index 0000000000..50d52a6237 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_notify_observer_set.rb @@ -0,0 +1,107 @@ +require 'concurrent/synchronization' + +module Concurrent + module Collection + + # A thread safe observer set implemented using copy-on-read approach: + # observers are added and removed from a thread safe collection; every time + # a notification is required the internal data structure is copied to + # prevent concurrency issues + # + # @api private + class CopyOnNotifyObserverSet < Synchronization::LockableObject + + def initialize + super() + synchronize { ns_initialize } + end + + # @!macro observable_add_observer + def add_observer(observer = nil, func = :update, &block) + if observer.nil? && block.nil? + raise ArgumentError, 'should pass observer as a first argument or block' + elsif observer && block + raise ArgumentError.new('cannot provide both an observer and a block') + end + + if block + observer = block + func = :call + end + + synchronize do + @observers[observer] = func + observer + end + end + + # @!macro observable_delete_observer + def delete_observer(observer) + synchronize do + @observers.delete(observer) + observer + end + end + + # @!macro observable_delete_observers + def delete_observers + synchronize do + @observers.clear + self + end + end + + # @!macro observable_count_observers + def count_observers + synchronize { @observers.count } + end + + # Notifies all registered observers with optional args + # @param [Object] args arguments to be passed to each observer + # @return [CopyOnWriteObserverSet] self + def notify_observers(*args, &block) + observers = duplicate_observers + notify_to(observers, *args, &block) + self + end + + # Notifies all registered observers with optional args and deletes them. + # + # @param [Object] args arguments to be passed to each observer + # @return [CopyOnWriteObserverSet] self + def notify_and_delete_observers(*args, &block) + observers = duplicate_and_clear_observers + notify_to(observers, *args, &block) + self + end + + protected + + def ns_initialize + @observers = {} + end + + private + + def duplicate_and_clear_observers + synchronize do + observers = @observers.dup + @observers.clear + observers + end + end + + def duplicate_observers + synchronize { @observers.dup } + end + + def notify_to(observers, *args) + raise ArgumentError.new('cannot give arguments and a block') if block_given? && !args.empty? + observers.each do |observer, function| + args = yield if block_given? + observer.send(function, *args) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_write_observer_set.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_write_observer_set.rb new file mode 100644 index 0000000000..3f3f7cccd0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/copy_on_write_observer_set.rb @@ -0,0 +1,111 @@ +require 'concurrent/synchronization' + +module Concurrent + module Collection + + # A thread safe observer set implemented using copy-on-write approach: + # every time an observer is added or removed the whole internal data structure is + # duplicated and replaced with a new one. + # + # @api private + class CopyOnWriteObserverSet < Synchronization::LockableObject + + def initialize + super() + synchronize { ns_initialize } + end + + # @!macro observable_add_observer + def add_observer(observer = nil, func = :update, &block) + if observer.nil? && block.nil? + raise ArgumentError, 'should pass observer as a first argument or block' + elsif observer && block + raise ArgumentError.new('cannot provide both an observer and a block') + end + + if block + observer = block + func = :call + end + + synchronize do + new_observers = @observers.dup + new_observers[observer] = func + @observers = new_observers + observer + end + end + + # @!macro observable_delete_observer + def delete_observer(observer) + synchronize do + new_observers = @observers.dup + new_observers.delete(observer) + @observers = new_observers + observer + end + end + + # @!macro observable_delete_observers + def delete_observers + self.observers = {} + self + end + + # @!macro observable_count_observers + def count_observers + observers.count + end + + # Notifies all registered observers with optional args + # @param [Object] args arguments to be passed to each observer + # @return [CopyOnWriteObserverSet] self + def notify_observers(*args, &block) + notify_to(observers, *args, &block) + self + end + + # Notifies all registered observers with optional args and deletes them. + # + # @param [Object] args arguments to be passed to each observer + # @return [CopyOnWriteObserverSet] self + def notify_and_delete_observers(*args, &block) + old = clear_observers_and_return_old + notify_to(old, *args, &block) + self + end + + protected + + def ns_initialize + @observers = {} + end + + private + + def notify_to(observers, *args) + raise ArgumentError.new('cannot give arguments and a block') if block_given? && !args.empty? + observers.each do |observer, function| + args = yield if block_given? + observer.send(function, *args) + end + end + + def observers + synchronize { @observers } + end + + def observers=(new_set) + synchronize { @observers = new_set } + end + + def clear_observers_and_return_old + synchronize do + old_observers = @observers + @observers = {} + old_observers + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/java_non_concurrent_priority_queue.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/java_non_concurrent_priority_queue.rb new file mode 100644 index 0000000000..2be9e4373a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/java_non_concurrent_priority_queue.rb @@ -0,0 +1,84 @@ +if Concurrent.on_jruby? + + module Concurrent + module Collection + + + # @!macro priority_queue + # + # @!visibility private + # @!macro internal_implementation_note + class JavaNonConcurrentPriorityQueue + + # @!macro priority_queue_method_initialize + def initialize(opts = {}) + order = opts.fetch(:order, :max) + if [:min, :low].include?(order) + @queue = java.util.PriorityQueue.new(11) # 11 is the default initial capacity + else + @queue = java.util.PriorityQueue.new(11, java.util.Collections.reverseOrder()) + end + end + + # @!macro priority_queue_method_clear + def clear + @queue.clear + true + end + + # @!macro priority_queue_method_delete + def delete(item) + found = false + while @queue.remove(item) do + found = true + end + found + end + + # @!macro priority_queue_method_empty + def empty? + @queue.size == 0 + end + + # @!macro priority_queue_method_include + def include?(item) + @queue.contains(item) + end + alias_method :has_priority?, :include? + + # @!macro priority_queue_method_length + def length + @queue.size + end + alias_method :size, :length + + # @!macro priority_queue_method_peek + def peek + @queue.peek + end + + # @!macro priority_queue_method_pop + def pop + @queue.poll + end + alias_method :deq, :pop + alias_method :shift, :pop + + # @!macro priority_queue_method_push + def push(item) + raise ArgumentError.new('cannot enqueue nil') if item.nil? + @queue.add(item) + end + alias_method :<<, :push + alias_method :enq, :push + + # @!macro priority_queue_method_from_list + def self.from_list(list, opts = {}) + queue = new(opts) + list.each{|item| queue << item } + queue + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/lock_free_stack.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/lock_free_stack.rb new file mode 100644 index 0000000000..9996f78495 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/lock_free_stack.rb @@ -0,0 +1,158 @@ +module Concurrent + + # @!macro warn.edge + class LockFreeStack < Synchronization::Object + + safe_initialization! + + class Node + # TODO (pitr-ch 20-Dec-2016): Could be unified with Stack class? + + # @return [Node] + attr_reader :next_node + + # @return [Object] + attr_reader :value + + # @!visibility private + # allow to nil-ify to free GC when the entry is no longer relevant, not synchronised + attr_writer :value + + def initialize(value, next_node) + @value = value + @next_node = next_node + end + + singleton_class.send :alias_method, :[], :new + end + + # The singleton for empty node + EMPTY = Node[nil, nil] + def EMPTY.next_node + self + end + + attr_atomic(:head) + private :head, :head=, :swap_head, :compare_and_set_head, :update_head + + # @!visibility private + def self.of1(value) + new Node[value, EMPTY] + end + + # @!visibility private + def self.of2(value1, value2) + new Node[value1, Node[value2, EMPTY]] + end + + # @param [Node] head + def initialize(head = EMPTY) + super() + self.head = head + end + + # @param [Node] head + # @return [true, false] + def empty?(head = self.head) + head.equal? EMPTY + end + + # @param [Node] head + # @param [Object] value + # @return [true, false] + def compare_and_push(head, value) + compare_and_set_head head, Node[value, head] + end + + # @param [Object] value + # @return [self] + def push(value) + while true + current_head = head + return self if compare_and_set_head current_head, Node[value, current_head] + end + end + + # @return [Node] + def peek + head + end + + # @param [Node] head + # @return [true, false] + def compare_and_pop(head) + compare_and_set_head head, head.next_node + end + + # @return [Object] + def pop + while true + current_head = head + return current_head.value if compare_and_set_head current_head, current_head.next_node + end + end + + # @param [Node] head + # @return [true, false] + def compare_and_clear(head) + compare_and_set_head head, EMPTY + end + + include Enumerable + + # @param [Node] head + # @return [self] + def each(head = nil) + return to_enum(:each, head) unless block_given? + it = head || peek + until it.equal?(EMPTY) + yield it.value + it = it.next_node + end + self + end + + # @return [true, false] + def clear + while true + current_head = head + return false if current_head == EMPTY + return true if compare_and_set_head current_head, EMPTY + end + end + + # @param [Node] head + # @return [true, false] + def clear_if(head) + compare_and_set_head head, EMPTY + end + + # @param [Node] head + # @param [Node] new_head + # @return [true, false] + def replace_if(head, new_head) + compare_and_set_head head, new_head + end + + # @return [self] + # @yield over the cleared stack + # @yieldparam [Object] value + def clear_each(&block) + while true + current_head = head + return self if current_head == EMPTY + if compare_and_set_head current_head, EMPTY + each current_head, &block + return self + end + end + end + + # @return [String] Short string representation. + def to_s + format '%s %s>', super[0..-2], to_a.to_s + end + + alias_method :inspect, :to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/atomic_reference_map_backend.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/atomic_reference_map_backend.rb new file mode 100644 index 0000000000..dc5189389d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/atomic_reference_map_backend.rb @@ -0,0 +1,927 @@ +require 'concurrent/constants' +require 'concurrent/thread_safe/util' +require 'concurrent/thread_safe/util/adder' +require 'concurrent/thread_safe/util/cheap_lockable' +require 'concurrent/thread_safe/util/power_of_two_tuple' +require 'concurrent/thread_safe/util/volatile' +require 'concurrent/thread_safe/util/xor_shift_random' + +module Concurrent + + # @!visibility private + module Collection + + # A Ruby port of the Doug Lea's jsr166e.ConcurrentHashMapV8 class version 1.59 + # available in public domain. + # + # Original source code available here: + # http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166e/ConcurrentHashMapV8.java?revision=1.59 + # + # The Ruby port skips out the +TreeBin+ (red-black trees for use in bins whose + # size exceeds a threshold). + # + # A hash table supporting full concurrency of retrievals and high expected + # concurrency for updates. However, even though all operations are + # thread-safe, retrieval operations do _not_ entail locking, and there is + # _not_ any support for locking the entire table in a way that prevents all + # access. + # + # Retrieval operations generally do not block, so may overlap with update + # operations. Retrievals reflect the results of the most recently _completed_ + # update operations holding upon their onset. (More formally, an update + # operation for a given key bears a _happens-before_ relation with any (non + # +nil+) retrieval for that key reporting the updated value.) For aggregate + # operations such as +clear()+, concurrent retrievals may reflect insertion or + # removal of only some entries. Similarly, the +each_pair+ iterator yields + # elements reflecting the state of the hash table at some point at or since + # the start of the +each_pair+. Bear in mind that the results of aggregate + # status methods including +size()+ and +empty?+} are typically useful only + # when a map is not undergoing concurrent updates in other threads. Otherwise + # the results of these methods reflect transient states that may be adequate + # for monitoring or estimation purposes, but not for program control. + # + # The table is dynamically expanded when there are too many collisions (i.e., + # keys that have distinct hash codes but fall into the same slot modulo the + # table size), with the expected average effect of maintaining roughly two + # bins per mapping (corresponding to a 0.75 load factor threshold for + # resizing). There may be much variance around this average as mappings are + # added and removed, but overall, this maintains a commonly accepted + # time/space tradeoff for hash tables. However, resizing this or any other + # kind of hash table may be a relatively slow operation. When possible, it is + # a good idea to provide a size estimate as an optional :initial_capacity + # initializer argument. An additional optional :load_factor constructor + # argument provides a further means of customizing initial table capacity by + # specifying the table density to be used in calculating the amount of space + # to allocate for the given number of elements. Note that using many keys with + # exactly the same +hash+ is a sure way to slow down performance of any hash + # table. + # + # ## Design overview + # + # The primary design goal of this hash table is to maintain concurrent + # readability (typically method +[]+, but also iteration and related methods) + # while minimizing update contention. Secondary goals are to keep space + # consumption about the same or better than plain +Hash+, and to support high + # initial insertion rates on an empty table by many threads. + # + # Each key-value mapping is held in a +Node+. The validation-based approach + # explained below leads to a lot of code sprawl because retry-control + # precludes factoring into smaller methods. + # + # The table is lazily initialized to a power-of-two size upon the first + # insertion. Each bin in the table normally contains a list of +Node+s (most + # often, the list has only zero or one +Node+). Table accesses require + # volatile/atomic reads, writes, and CASes. The lists of nodes within bins are + # always accurately traversable under volatile reads, so long as lookups check + # hash code and non-nullness of value before checking key equality. + # + # We use the top two bits of +Node+ hash fields for control purposes -- they + # are available anyway because of addressing constraints. As explained further + # below, these top bits are used as follows: + # + # - 00 - Normal + # - 01 - Locked + # - 11 - Locked and may have a thread waiting for lock + # - 10 - +Node+ is a forwarding node + # + # The lower 28 bits of each +Node+'s hash field contain a the key's hash code, + # except for forwarding nodes, for which the lower bits are zero (and so + # always have hash field == +MOVED+). + # + # Insertion (via +[]=+ or its variants) of the first node in an empty bin is + # performed by just CASing it to the bin. This is by far the most common case + # for put operations under most key/hash distributions. Other update + # operations (insert, delete, and replace) require locks. We do not want to + # waste the space required to associate a distinct lock object with each bin, + # so instead use the first node of a bin list itself as a lock. Blocking + # support for these locks relies +Concurrent::ThreadSafe::Util::CheapLockable. However, we also need a + # +try_lock+ construction, so we overlay these by using bits of the +Node+ + # hash field for lock control (see above), and so normally use builtin + # monitors only for blocking and signalling using + # +cheap_wait+/+cheap_broadcast+ constructions. See +Node#try_await_lock+. + # + # Using the first node of a list as a lock does not by itself suffice though: + # When a node is locked, any update must first validate that it is still the + # first node after locking it, and retry if not. Because new nodes are always + # appended to lists, once a node is first in a bin, it remains first until + # deleted or the bin becomes invalidated (upon resizing). However, operations + # that only conditionally update may inspect nodes until the point of update. + # This is a converse of sorts to the lazy locking technique described by + # Herlihy & Shavit. + # + # The main disadvantage of per-bin locks is that other update operations on + # other nodes in a bin list protected by the same lock can stall, for example + # when user +eql?+ or mapping functions take a long time. However, + # statistically, under random hash codes, this is not a common problem. + # Ideally, the frequency of nodes in bins follows a Poisson distribution + # (http://en.wikipedia.org/wiki/Poisson_distribution) with a parameter of + # about 0.5 on average, given the resizing threshold of 0.75, although with a + # large variance because of resizing granularity. Ignoring variance, the + # expected occurrences of list size k are (exp(-0.5) * pow(0.5, k) / + # factorial(k)). The first values are: + # + # - 0: 0.60653066 + # - 1: 0.30326533 + # - 2: 0.07581633 + # - 3: 0.01263606 + # - 4: 0.00157952 + # - 5: 0.00015795 + # - 6: 0.00001316 + # - 7: 0.00000094 + # - 8: 0.00000006 + # - more: less than 1 in ten million + # + # Lock contention probability for two threads accessing distinct elements is + # roughly 1 / (8 * #elements) under random hashes. + # + # The table is resized when occupancy exceeds a percentage threshold + # (nominally, 0.75, but see below). Only a single thread performs the resize + # (using field +size_control+, to arrange exclusion), but the table otherwise + # remains usable for reads and updates. Resizing proceeds by transferring + # bins, one by one, from the table to the next table. Because we are using + # power-of-two expansion, the elements from each bin must either stay at same + # index, or move with a power of two offset. We eliminate unnecessary node + # creation by catching cases where old nodes can be reused because their next + # fields won't change. On average, only about one-sixth of them need cloning + # when a table doubles. The nodes they replace will be garbage collectable as + # soon as they are no longer referenced by any reader thread that may be in + # the midst of concurrently traversing table. Upon transfer, the old table bin + # contains only a special forwarding node (with hash field +MOVED+) that + # contains the next table as its key. On encountering a forwarding node, + # access and update operations restart, using the new table. + # + # Each bin transfer requires its bin lock. However, unlike other cases, a + # transfer can skip a bin if it fails to acquire its lock, and revisit it + # later. Method +rebuild+ maintains a buffer of TRANSFER_BUFFER_SIZE bins that + # have been skipped because of failure to acquire a lock, and blocks only if + # none are available (i.e., only very rarely). The transfer operation must + # also ensure that all accessible bins in both the old and new table are + # usable by any traversal. When there are no lock acquisition failures, this + # is arranged simply by proceeding from the last bin (+table.size - 1+) up + # towards the first. Upon seeing a forwarding node, traversals arrange to move + # to the new table without revisiting nodes. However, when any node is skipped + # during a transfer, all earlier table bins may have become visible, so are + # initialized with a reverse-forwarding node back to the old table until the + # new ones are established. (This sometimes requires transiently locking a + # forwarding node, which is possible under the above encoding.) These more + # expensive mechanics trigger only when necessary. + # + # The traversal scheme also applies to partial traversals of + # ranges of bins (via an alternate Traverser constructor) + # to support partitioned aggregate operations. Also, read-only + # operations give up if ever forwarded to a null table, which + # provides support for shutdown-style clearing, which is also not + # currently implemented. + # + # Lazy table initialization minimizes footprint until first use. + # + # The element count is maintained using a +Concurrent::ThreadSafe::Util::Adder+, + # which avoids contention on updates but can encounter cache thrashing + # if read too frequently during concurrent access. To avoid reading so + # often, resizing is attempted either when a bin lock is + # contended, or upon adding to a bin already holding two or more + # nodes (checked before adding in the +x_if_absent+ methods, after + # adding in others). Under uniform hash distributions, the + # probability of this occurring at threshold is around 13%, + # meaning that only about 1 in 8 puts check threshold (and after + # resizing, many fewer do so). But this approximation has high + # variance for small table sizes, so we check on any collision + # for sizes <= 64. The bulk putAll operation further reduces + # contention by only committing count updates upon these size + # checks. + # + # @!visibility private + class AtomicReferenceMapBackend + + # @!visibility private + class Table < Concurrent::ThreadSafe::Util::PowerOfTwoTuple + def cas_new_node(i, hash, key, value) + cas(i, nil, Node.new(hash, key, value)) + end + + def try_to_cas_in_computed(i, hash, key) + succeeded = false + new_value = nil + new_node = Node.new(locked_hash = hash | LOCKED, key, NULL) + if cas(i, nil, new_node) + begin + if NULL == (new_value = yield(NULL)) + was_null = true + else + new_node.value = new_value + end + succeeded = true + ensure + volatile_set(i, nil) if !succeeded || was_null + new_node.unlock_via_hash(locked_hash, hash) + end + end + return succeeded, new_value + end + + def try_lock_via_hash(i, node, node_hash) + node.try_lock_via_hash(node_hash) do + yield if volatile_get(i) == node + end + end + + def delete_node_at(i, node, predecessor_node) + if predecessor_node + predecessor_node.next = node.next + else + volatile_set(i, node.next) + end + end + end + + # Key-value entry. Nodes with a hash field of +MOVED+ are special, and do + # not contain user keys or values. Otherwise, keys are never +nil+, and + # +NULL+ +value+ fields indicate that a node is in the process of being + # deleted or created. For purposes of read-only access, a key may be read + # before a value, but can only be used after checking value to be +!= NULL+. + # + # @!visibility private + class Node + extend Concurrent::ThreadSafe::Util::Volatile + attr_volatile :hash, :value, :next + + include Concurrent::ThreadSafe::Util::CheapLockable + + bit_shift = Concurrent::ThreadSafe::Util::FIXNUM_BIT_SIZE - 2 # need 2 bits for ourselves + # Encodings for special uses of Node hash fields. See above for explanation. + MOVED = ('10' << ('0' * bit_shift)).to_i(2) # hash field for forwarding nodes + LOCKED = ('01' << ('0' * bit_shift)).to_i(2) # set/tested only as a bit + WAITING = ('11' << ('0' * bit_shift)).to_i(2) # both bits set/tested together + HASH_BITS = ('00' << ('1' * bit_shift)).to_i(2) # usable bits of normal node hash + + SPIN_LOCK_ATTEMPTS = Concurrent::ThreadSafe::Util::CPU_COUNT > 1 ? Concurrent::ThreadSafe::Util::CPU_COUNT * 2 : 0 + + attr_reader :key + + def initialize(hash, key, value, next_node = nil) + super() + @key = key + self.lazy_set_hash(hash) + self.lazy_set_value(value) + self.next = next_node + end + + # Spins a while if +LOCKED+ bit set and this node is the first of its bin, + # and then sets +WAITING+ bits on hash field and blocks (once) if they are + # still set. It is OK for this method to return even if lock is not + # available upon exit, which enables these simple single-wait mechanics. + # + # The corresponding signalling operation is performed within callers: Upon + # detecting that +WAITING+ has been set when unlocking lock (via a failed + # CAS from non-waiting +LOCKED+ state), unlockers acquire the + # +cheap_synchronize+ lock and perform a +cheap_broadcast+. + def try_await_lock(table, i) + if table && i >= 0 && i < table.size # bounds check, TODO: why are we bounds checking? + spins = SPIN_LOCK_ATTEMPTS + randomizer = base_randomizer = Concurrent::ThreadSafe::Util::XorShiftRandom.get + while equal?(table.volatile_get(i)) && self.class.locked_hash?(my_hash = hash) + if spins >= 0 + if (randomizer = (randomizer >> 1)).even? # spin at random + if (spins -= 1) == 0 + Thread.pass # yield before blocking + else + randomizer = base_randomizer = Concurrent::ThreadSafe::Util::XorShiftRandom.xorshift(base_randomizer) if randomizer.zero? + end + end + elsif cas_hash(my_hash, my_hash | WAITING) + force_acquire_lock(table, i) + break + end + end + end + end + + def key?(key) + @key.eql?(key) + end + + def matches?(key, hash) + pure_hash == hash && key?(key) + end + + def pure_hash + hash & HASH_BITS + end + + def try_lock_via_hash(node_hash = hash) + if cas_hash(node_hash, locked_hash = node_hash | LOCKED) + begin + yield + ensure + unlock_via_hash(locked_hash, node_hash) + end + end + end + + def locked? + self.class.locked_hash?(hash) + end + + def unlock_via_hash(locked_hash, node_hash) + unless cas_hash(locked_hash, node_hash) + self.hash = node_hash + cheap_synchronize { cheap_broadcast } + end + end + + private + def force_acquire_lock(table, i) + cheap_synchronize do + if equal?(table.volatile_get(i)) && (hash & WAITING) == WAITING + cheap_wait + else + cheap_broadcast # possibly won race vs signaller + end + end + end + + class << self + def locked_hash?(hash) + (hash & LOCKED) != 0 + end + end + end + + # shorthands + MOVED = Node::MOVED + LOCKED = Node::LOCKED + WAITING = Node::WAITING + HASH_BITS = Node::HASH_BITS + + NOW_RESIZING = -1 + DEFAULT_CAPACITY = 16 + MAX_CAPACITY = Concurrent::ThreadSafe::Util::MAX_INT + + # The buffer size for skipped bins during transfers. The + # value is arbitrary but should be large enough to avoid + # most locking stalls during resizes. + TRANSFER_BUFFER_SIZE = 32 + + extend Concurrent::ThreadSafe::Util::Volatile + attr_volatile :table, # The array of bins. Lazily initialized upon first insertion. Size is always a power of two. + + # Table initialization and resizing control. When negative, the + # table is being initialized or resized. Otherwise, when table is + # null, holds the initial table size to use upon creation, or 0 + # for default. After initialization, holds the next element count + # value upon which to resize the table. + :size_control + + def initialize(options = nil) + super() + @counter = Concurrent::ThreadSafe::Util::Adder.new + initial_capacity = options && options[:initial_capacity] || DEFAULT_CAPACITY + self.size_control = (capacity = table_size_for(initial_capacity)) > MAX_CAPACITY ? MAX_CAPACITY : capacity + end + + def get_or_default(key, else_value = nil) + hash = key_hash(key) + current_table = table + while current_table + node = current_table.volatile_get_by_hash(hash) + current_table = + while node + if (node_hash = node.hash) == MOVED + break node.key + elsif (node_hash & HASH_BITS) == hash && node.key?(key) && NULL != (value = node.value) + return value + end + node = node.next + end + end + else_value + end + + def [](key) + get_or_default(key) + end + + def key?(key) + get_or_default(key, NULL) != NULL + end + + def []=(key, value) + get_and_set(key, value) + value + end + + def compute_if_absent(key) + hash = key_hash(key) + current_table = table || initialize_table + while true + if !(node = current_table.volatile_get(i = current_table.hash_to_index(hash))) + succeeded, new_value = current_table.try_to_cas_in_computed(i, hash, key) { yield } + if succeeded + increment_size + return new_value + end + elsif (node_hash = node.hash) == MOVED + current_table = node.key + elsif NULL != (current_value = find_value_in_node_list(node, key, hash, node_hash & HASH_BITS)) + return current_value + elsif Node.locked_hash?(node_hash) + try_await_lock(current_table, i, node) + else + succeeded, value = attempt_internal_compute_if_absent(key, hash, current_table, i, node, node_hash) { yield } + return value if succeeded + end + end + end + + def compute_if_present(key) + new_value = nil + internal_replace(key) do |old_value| + if (new_value = yield(NULL == old_value ? nil : old_value)).nil? + NULL + else + new_value + end + end + new_value + end + + def compute(key) + internal_compute(key) do |old_value| + if (new_value = yield(NULL == old_value ? nil : old_value)).nil? + NULL + else + new_value + end + end + end + + def merge_pair(key, value) + internal_compute(key) do |old_value| + if NULL == old_value || !(value = yield(old_value)).nil? + value + else + NULL + end + end + end + + def replace_pair(key, old_value, new_value) + NULL != internal_replace(key, old_value) { new_value } + end + + def replace_if_exists(key, new_value) + if (result = internal_replace(key) { new_value }) && NULL != result + result + end + end + + def get_and_set(key, value) # internalPut in the original CHMV8 + hash = key_hash(key) + current_table = table || initialize_table + while true + if !(node = current_table.volatile_get(i = current_table.hash_to_index(hash))) + if current_table.cas_new_node(i, hash, key, value) + increment_size + break + end + elsif (node_hash = node.hash) == MOVED + current_table = node.key + elsif Node.locked_hash?(node_hash) + try_await_lock(current_table, i, node) + else + succeeded, old_value = attempt_get_and_set(key, value, hash, current_table, i, node, node_hash) + break old_value if succeeded + end + end + end + + def delete(key) + replace_if_exists(key, NULL) + end + + def delete_pair(key, value) + result = internal_replace(key, value) { NULL } + if result && NULL != result + !!result + else + false + end + end + + def each_pair + return self unless current_table = table + current_table_size = base_size = current_table.size + i = base_index = 0 + while base_index < base_size + if node = current_table.volatile_get(i) + if node.hash == MOVED + current_table = node.key + current_table_size = current_table.size + else + begin + if NULL != (value = node.value) # skip deleted or special nodes + yield node.key, value + end + end while node = node.next + end + end + + if (i_with_base = i + base_size) < current_table_size + i = i_with_base # visit upper slots if present + else + i = base_index += 1 + end + end + self + end + + def size + (sum = @counter.sum) < 0 ? 0 : sum # ignore transient negative values + end + + def empty? + size == 0 + end + + # Implementation for clear. Steps through each bin, removing all nodes. + def clear + return self unless current_table = table + current_table_size = current_table.size + deleted_count = i = 0 + while i < current_table_size + if !(node = current_table.volatile_get(i)) + i += 1 + elsif (node_hash = node.hash) == MOVED + current_table = node.key + current_table_size = current_table.size + elsif Node.locked_hash?(node_hash) + decrement_size(deleted_count) # opportunistically update count + deleted_count = 0 + node.try_await_lock(current_table, i) + else + current_table.try_lock_via_hash(i, node, node_hash) do + begin + deleted_count += 1 if NULL != node.value # recheck under lock + node.value = nil + end while node = node.next + current_table.volatile_set(i, nil) + i += 1 + end + end + end + decrement_size(deleted_count) + self + end + + private + # Internal versions of the insertion methods, each a + # little more complicated than the last. All have + # the same basic structure: + # 1. If table uninitialized, create + # 2. If bin empty, try to CAS new node + # 3. If bin stale, use new table + # 4. Lock and validate; if valid, scan and add or update + # + # The others interweave other checks and/or alternative actions: + # * Plain +get_and_set+ checks for and performs resize after insertion. + # * compute_if_absent prescans for mapping without lock (and fails to add + # if present), which also makes pre-emptive resize checks worthwhile. + # + # Someday when details settle down a bit more, it might be worth + # some factoring to reduce sprawl. + def internal_replace(key, expected_old_value = NULL, &block) + hash = key_hash(key) + current_table = table + while current_table + if !(node = current_table.volatile_get(i = current_table.hash_to_index(hash))) + break + elsif (node_hash = node.hash) == MOVED + current_table = node.key + elsif (node_hash & HASH_BITS) != hash && !node.next # precheck + break # rules out possible existence + elsif Node.locked_hash?(node_hash) + try_await_lock(current_table, i, node) + else + succeeded, old_value = attempt_internal_replace(key, expected_old_value, hash, current_table, i, node, node_hash, &block) + return old_value if succeeded + end + end + NULL + end + + def attempt_internal_replace(key, expected_old_value, hash, current_table, i, node, node_hash) + current_table.try_lock_via_hash(i, node, node_hash) do + predecessor_node = nil + old_value = NULL + begin + if node.matches?(key, hash) && NULL != (current_value = node.value) + if NULL == expected_old_value || expected_old_value == current_value # NULL == expected_old_value means whatever value + old_value = current_value + if NULL == (node.value = yield(old_value)) + current_table.delete_node_at(i, node, predecessor_node) + decrement_size + end + end + break + end + + predecessor_node = node + end while node = node.next + + return true, old_value + end + end + + def find_value_in_node_list(node, key, hash, pure_hash) + do_check_for_resize = false + while true + if pure_hash == hash && node.key?(key) && NULL != (value = node.value) + return value + elsif node = node.next + do_check_for_resize = true # at least 2 nodes -> check for resize + pure_hash = node.pure_hash + else + return NULL + end + end + ensure + check_for_resize if do_check_for_resize + end + + def internal_compute(key, &block) + hash = key_hash(key) + current_table = table || initialize_table + while true + if !(node = current_table.volatile_get(i = current_table.hash_to_index(hash))) + succeeded, new_value = current_table.try_to_cas_in_computed(i, hash, key, &block) + if succeeded + if NULL == new_value + break nil + else + increment_size + break new_value + end + end + elsif (node_hash = node.hash) == MOVED + current_table = node.key + elsif Node.locked_hash?(node_hash) + try_await_lock(current_table, i, node) + else + succeeded, new_value = attempt_compute(key, hash, current_table, i, node, node_hash, &block) + break new_value if succeeded + end + end + end + + def attempt_internal_compute_if_absent(key, hash, current_table, i, node, node_hash) + added = false + current_table.try_lock_via_hash(i, node, node_hash) do + while true + if node.matches?(key, hash) && NULL != (value = node.value) + return true, value + end + last = node + unless node = node.next + last.next = Node.new(hash, key, value = yield) + added = true + increment_size + return true, value + end + end + end + ensure + check_for_resize if added + end + + def attempt_compute(key, hash, current_table, i, node, node_hash) + added = false + current_table.try_lock_via_hash(i, node, node_hash) do + predecessor_node = nil + while true + if node.matches?(key, hash) && NULL != (value = node.value) + if NULL == (node.value = value = yield(value)) + current_table.delete_node_at(i, node, predecessor_node) + decrement_size + value = nil + end + return true, value + end + predecessor_node = node + unless node = node.next + if NULL == (value = yield(NULL)) + value = nil + else + predecessor_node.next = Node.new(hash, key, value) + added = true + increment_size + end + return true, value + end + end + end + ensure + check_for_resize if added + end + + def attempt_get_and_set(key, value, hash, current_table, i, node, node_hash) + node_nesting = nil + current_table.try_lock_via_hash(i, node, node_hash) do + node_nesting = 1 + old_value = nil + found_old_value = false + while node + if node.matches?(key, hash) && NULL != (old_value = node.value) + found_old_value = true + node.value = value + break + end + last = node + unless node = node.next + last.next = Node.new(hash, key, value) + break + end + node_nesting += 1 + end + + return true, old_value if found_old_value + increment_size + true + end + ensure + check_for_resize if node_nesting && (node_nesting > 1 || current_table.size <= 64) + end + + def initialize_copy(other) + super + @counter = Concurrent::ThreadSafe::Util::Adder.new + self.table = nil + self.size_control = (other_table = other.table) ? other_table.size : DEFAULT_CAPACITY + self + end + + def try_await_lock(current_table, i, node) + check_for_resize # try resizing if can't get lock + node.try_await_lock(current_table, i) + end + + def key_hash(key) + key.hash & HASH_BITS + end + + # Returns a power of two table size for the given desired capacity. + def table_size_for(entry_count) + size = 2 + size <<= 1 while size < entry_count + size + end + + # Initializes table, using the size recorded in +size_control+. + def initialize_table + until current_table ||= table + if (size_ctrl = size_control) == NOW_RESIZING + Thread.pass # lost initialization race; just spin + else + try_in_resize_lock(current_table, size_ctrl) do + initial_size = size_ctrl > 0 ? size_ctrl : DEFAULT_CAPACITY + current_table = self.table = Table.new(initial_size) + initial_size - (initial_size >> 2) # 75% load factor + end + end + end + current_table + end + + # If table is too small and not already resizing, creates next table and + # transfers bins. Rechecks occupancy after a transfer to see if another + # resize is already needed because resizings are lagging additions. + def check_for_resize + while (current_table = table) && MAX_CAPACITY > (table_size = current_table.size) && NOW_RESIZING != (size_ctrl = size_control) && size_ctrl < @counter.sum + try_in_resize_lock(current_table, size_ctrl) do + self.table = rebuild(current_table) + (table_size << 1) - (table_size >> 1) # 75% load factor + end + end + end + + def try_in_resize_lock(current_table, size_ctrl) + if cas_size_control(size_ctrl, NOW_RESIZING) + begin + if current_table == table # recheck under lock + size_ctrl = yield # get new size_control + end + ensure + self.size_control = size_ctrl + end + end + end + + # Moves and/or copies the nodes in each bin to new table. See above for explanation. + def rebuild(table) + old_table_size = table.size + new_table = table.next_in_size_table + # puts "#{old_table_size} -> #{new_table.size}" + forwarder = Node.new(MOVED, new_table, NULL) + rev_forwarder = nil + locked_indexes = nil # holds bins to revisit; nil until needed + locked_arr_idx = 0 + bin = old_table_size - 1 + i = bin + while true + if !(node = table.volatile_get(i)) + # no lock needed (or available) if bin >= 0, because we're not popping values from locked_indexes until we've run through the whole table + redo unless (bin >= 0 ? table.cas(i, nil, forwarder) : lock_and_clean_up_reverse_forwarders(table, old_table_size, new_table, i, forwarder)) + elsif Node.locked_hash?(node_hash = node.hash) + locked_indexes ||= ::Array.new + if bin < 0 && locked_arr_idx > 0 + locked_arr_idx -= 1 + i, locked_indexes[locked_arr_idx] = locked_indexes[locked_arr_idx], i # swap with another bin + redo + end + if bin < 0 || locked_indexes.size >= TRANSFER_BUFFER_SIZE + node.try_await_lock(table, i) # no other options -- block + redo + end + rev_forwarder ||= Node.new(MOVED, table, NULL) + redo unless table.volatile_get(i) == node && node.locked? # recheck before adding to list + locked_indexes << i + new_table.volatile_set(i, rev_forwarder) + new_table.volatile_set(i + old_table_size, rev_forwarder) + else + redo unless split_old_bin(table, new_table, i, node, node_hash, forwarder) + end + + if bin > 0 + i = (bin -= 1) + elsif locked_indexes && !locked_indexes.empty? + bin = -1 + i = locked_indexes.pop + locked_arr_idx = locked_indexes.size - 1 + else + return new_table + end + end + end + + def lock_and_clean_up_reverse_forwarders(old_table, old_table_size, new_table, i, forwarder) + # transiently use a locked forwarding node + locked_forwarder = Node.new(moved_locked_hash = MOVED | LOCKED, new_table, NULL) + if old_table.cas(i, nil, locked_forwarder) + new_table.volatile_set(i, nil) # kill the potential reverse forwarders + new_table.volatile_set(i + old_table_size, nil) # kill the potential reverse forwarders + old_table.volatile_set(i, forwarder) + locked_forwarder.unlock_via_hash(moved_locked_hash, MOVED) + true + end + end + + # Splits a normal bin with list headed by e into lo and hi parts; installs in given table. + def split_old_bin(table, new_table, i, node, node_hash, forwarder) + table.try_lock_via_hash(i, node, node_hash) do + split_bin(new_table, i, node, node_hash) + table.volatile_set(i, forwarder) + end + end + + def split_bin(new_table, i, node, node_hash) + bit = new_table.size >> 1 # bit to split on + run_bit = node_hash & bit + last_run = nil + low = nil + high = nil + current_node = node + # this optimises for the lowest amount of volatile writes and objects created + while current_node = current_node.next + unless (b = current_node.hash & bit) == run_bit + run_bit = b + last_run = current_node + end + end + if run_bit == 0 + low = last_run + else + high = last_run + end + current_node = node + until current_node == last_run + pure_hash = current_node.pure_hash + if (pure_hash & bit) == 0 + low = Node.new(pure_hash, current_node.key, current_node.value, low) + else + high = Node.new(pure_hash, current_node.key, current_node.value, high) + end + current_node = current_node.next + end + new_table.volatile_set(i, low) + new_table.volatile_set(i + bit, high) + end + + def increment_size + @counter.increment + end + + def decrement_size(by = 1) + @counter.add(-by) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/mri_map_backend.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/mri_map_backend.rb new file mode 100644 index 0000000000..d5d809dfc1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/mri_map_backend.rb @@ -0,0 +1,66 @@ +require 'thread' +require 'concurrent/collection/map/non_concurrent_map_backend' + +module Concurrent + + # @!visibility private + module Collection + + # @!visibility private + class MriMapBackend < NonConcurrentMapBackend + + def initialize(options = nil) + super(options) + @write_lock = Mutex.new + end + + def []=(key, value) + @write_lock.synchronize { super } + end + + def compute_if_absent(key) + if stored_value = _get(key) # fast non-blocking path for the most likely case + stored_value + else + @write_lock.synchronize { super } + end + end + + def compute_if_present(key) + @write_lock.synchronize { super } + end + + def compute(key) + @write_lock.synchronize { super } + end + + def merge_pair(key, value) + @write_lock.synchronize { super } + end + + def replace_pair(key, old_value, new_value) + @write_lock.synchronize { super } + end + + def replace_if_exists(key, new_value) + @write_lock.synchronize { super } + end + + def get_and_set(key, value) + @write_lock.synchronize { super } + end + + def delete(key) + @write_lock.synchronize { super } + end + + def delete_pair(key, value) + @write_lock.synchronize { super } + end + + def clear + @write_lock.synchronize { super } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/non_concurrent_map_backend.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/non_concurrent_map_backend.rb new file mode 100644 index 0000000000..e7c62e6d19 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/non_concurrent_map_backend.rb @@ -0,0 +1,140 @@ +require 'concurrent/constants' + +module Concurrent + + # @!visibility private + module Collection + + # @!visibility private + class NonConcurrentMapBackend + + # WARNING: all public methods of the class must operate on the @backend + # directly without calling each other. This is important because of the + # SynchronizedMapBackend which uses a non-reentrant mutex for performance + # reasons. + def initialize(options = nil) + @backend = {} + end + + def [](key) + @backend[key] + end + + def []=(key, value) + @backend[key] = value + end + + def compute_if_absent(key) + if NULL != (stored_value = @backend.fetch(key, NULL)) + stored_value + else + @backend[key] = yield + end + end + + def replace_pair(key, old_value, new_value) + if pair?(key, old_value) + @backend[key] = new_value + true + else + false + end + end + + def replace_if_exists(key, new_value) + if NULL != (stored_value = @backend.fetch(key, NULL)) + @backend[key] = new_value + stored_value + end + end + + def compute_if_present(key) + if NULL != (stored_value = @backend.fetch(key, NULL)) + store_computed_value(key, yield(stored_value)) + end + end + + def compute(key) + store_computed_value(key, yield(@backend[key])) + end + + def merge_pair(key, value) + if NULL == (stored_value = @backend.fetch(key, NULL)) + @backend[key] = value + else + store_computed_value(key, yield(stored_value)) + end + end + + def get_and_set(key, value) + stored_value = @backend[key] + @backend[key] = value + stored_value + end + + def key?(key) + @backend.key?(key) + end + + def delete(key) + @backend.delete(key) + end + + def delete_pair(key, value) + if pair?(key, value) + @backend.delete(key) + true + else + false + end + end + + def clear + @backend.clear + self + end + + def each_pair + dupped_backend.each_pair do |k, v| + yield k, v + end + self + end + + def size + @backend.size + end + + def get_or_default(key, default_value) + @backend.fetch(key, default_value) + end + + alias_method :_get, :[] + alias_method :_set, :[]= + private :_get, :_set + private + def initialize_copy(other) + super + @backend = {} + self + end + + def dupped_backend + @backend.dup + end + + def pair?(key, expected_value) + NULL != (stored_value = @backend.fetch(key, NULL)) && expected_value.equal?(stored_value) + end + + def store_computed_value(key, new_value) + if new_value.nil? + @backend.delete(key) + nil + else + @backend[key] = new_value + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/synchronized_map_backend.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/synchronized_map_backend.rb new file mode 100644 index 0000000000..190c8d98d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/map/synchronized_map_backend.rb @@ -0,0 +1,82 @@ +require 'concurrent/collection/map/non_concurrent_map_backend' + +module Concurrent + + # @!visibility private + module Collection + + # @!visibility private + class SynchronizedMapBackend < NonConcurrentMapBackend + + require 'mutex_m' + include Mutex_m + # WARNING: Mutex_m is a non-reentrant lock, so the synchronized methods are + # not allowed to call each other. + + def [](key) + synchronize { super } + end + + def []=(key, value) + synchronize { super } + end + + def compute_if_absent(key) + synchronize { super } + end + + def compute_if_present(key) + synchronize { super } + end + + def compute(key) + synchronize { super } + end + + def merge_pair(key, value) + synchronize { super } + end + + def replace_pair(key, old_value, new_value) + synchronize { super } + end + + def replace_if_exists(key, new_value) + synchronize { super } + end + + def get_and_set(key, value) + synchronize { super } + end + + def key?(key) + synchronize { super } + end + + def delete(key) + synchronize { super } + end + + def delete_pair(key, value) + synchronize { super } + end + + def clear + synchronize { super } + end + + def size + synchronize { super } + end + + def get_or_default(key, default_value) + synchronize { super } + end + + private + def dupped_backend + synchronize { super } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/non_concurrent_priority_queue.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/non_concurrent_priority_queue.rb new file mode 100644 index 0000000000..695ffdf2b2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/non_concurrent_priority_queue.rb @@ -0,0 +1,143 @@ +require 'concurrent/collection/java_non_concurrent_priority_queue' +require 'concurrent/collection/ruby_non_concurrent_priority_queue' +require 'concurrent/utility/engine' + +module Concurrent + module Collection + + # @!visibility private + # @!macro internal_implementation_note + NonConcurrentPriorityQueueImplementation = case + when Concurrent.on_jruby? + JavaNonConcurrentPriorityQueue + else + RubyNonConcurrentPriorityQueue + end + private_constant :NonConcurrentPriorityQueueImplementation + + # @!macro priority_queue + # + # A queue collection in which the elements are sorted based on their + # comparison (spaceship) operator `<=>`. Items are added to the queue + # at a position relative to their priority. On removal the element + # with the "highest" priority is removed. By default the sort order is + # from highest to lowest, but a lowest-to-highest sort order can be + # set on construction. + # + # The API is based on the `Queue` class from the Ruby standard library. + # + # The pure Ruby implementation, `RubyNonConcurrentPriorityQueue` uses a heap algorithm + # stored in an array. The algorithm is based on the work of Robert Sedgewick + # and Kevin Wayne. + # + # The JRuby native implementation is a thin wrapper around the standard + # library `java.util.NonConcurrentPriorityQueue`. + # + # When running under JRuby the class `NonConcurrentPriorityQueue` extends `JavaNonConcurrentPriorityQueue`. + # When running under all other interpreters it extends `RubyNonConcurrentPriorityQueue`. + # + # @note This implementation is *not* thread safe. + # + # @see http://en.wikipedia.org/wiki/Priority_queue + # @see http://ruby-doc.org/stdlib-2.0.0/libdoc/thread/rdoc/Queue.html + # + # @see http://algs4.cs.princeton.edu/24pq/index.php#2.6 + # @see http://algs4.cs.princeton.edu/24pq/MaxPQ.java.html + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html + # + # @!visibility private + class NonConcurrentPriorityQueue < NonConcurrentPriorityQueueImplementation + + alias_method :has_priority?, :include? + + alias_method :size, :length + + alias_method :deq, :pop + alias_method :shift, :pop + + alias_method :<<, :push + alias_method :enq, :push + + # @!method initialize(opts = {}) + # @!macro priority_queue_method_initialize + # + # Create a new priority queue with no items. + # + # @param [Hash] opts the options for creating the queue + # @option opts [Symbol] :order (:max) dictates the order in which items are + # stored: from highest to lowest when `:max` or `:high`; from lowest to + # highest when `:min` or `:low` + + # @!method clear + # @!macro priority_queue_method_clear + # + # Removes all of the elements from this priority queue. + + # @!method delete(item) + # @!macro priority_queue_method_delete + # + # Deletes all items from `self` that are equal to `item`. + # + # @param [Object] item the item to be removed from the queue + # @return [Object] true if the item is found else false + + # @!method empty? + # @!macro priority_queue_method_empty + # + # Returns `true` if `self` contains no elements. + # + # @return [Boolean] true if there are no items in the queue else false + + # @!method include?(item) + # @!macro priority_queue_method_include + # + # Returns `true` if the given item is present in `self` (that is, if any + # element == `item`), otherwise returns false. + # + # @param [Object] item the item to search for + # + # @return [Boolean] true if the item is found else false + + # @!method length + # @!macro priority_queue_method_length + # + # The current length of the queue. + # + # @return [Fixnum] the number of items in the queue + + # @!method peek + # @!macro priority_queue_method_peek + # + # Retrieves, but does not remove, the head of this queue, or returns `nil` + # if this queue is empty. + # + # @return [Object] the head of the queue or `nil` when empty + + # @!method pop + # @!macro priority_queue_method_pop + # + # Retrieves and removes the head of this queue, or returns `nil` if this + # queue is empty. + # + # @return [Object] the head of the queue or `nil` when empty + + # @!method push(item) + # @!macro priority_queue_method_push + # + # Inserts the specified element into this priority queue. + # + # @param [Object] item the item to insert onto the queue + + # @!method self.from_list(list, opts = {}) + # @!macro priority_queue_method_from_list + # + # Create a new priority queue from the given list. + # + # @param [Enumerable] list the list to build the queue from + # @param [Hash] opts the options for creating the queue + # + # @return [NonConcurrentPriorityQueue] the newly created and populated queue + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb new file mode 100644 index 0000000000..bdf3cba359 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb @@ -0,0 +1,150 @@ +module Concurrent + module Collection + + # @!macro priority_queue + # + # @!visibility private + # @!macro internal_implementation_note + class RubyNonConcurrentPriorityQueue + + # @!macro priority_queue_method_initialize + def initialize(opts = {}) + order = opts.fetch(:order, :max) + @comparator = [:min, :low].include?(order) ? -1 : 1 + clear + end + + # @!macro priority_queue_method_clear + def clear + @queue = [nil] + @length = 0 + true + end + + # @!macro priority_queue_method_delete + def delete(item) + return false if empty? + original_length = @length + k = 1 + while k <= @length + if @queue[k] == item + swap(k, @length) + @length -= 1 + sink(k) + @queue.pop + else + k += 1 + end + end + @length != original_length + end + + # @!macro priority_queue_method_empty + def empty? + size == 0 + end + + # @!macro priority_queue_method_include + def include?(item) + @queue.include?(item) + end + alias_method :has_priority?, :include? + + # @!macro priority_queue_method_length + def length + @length + end + alias_method :size, :length + + # @!macro priority_queue_method_peek + def peek + empty? ? nil : @queue[1] + end + + # @!macro priority_queue_method_pop + def pop + return nil if empty? + max = @queue[1] + swap(1, @length) + @length -= 1 + sink(1) + @queue.pop + max + end + alias_method :deq, :pop + alias_method :shift, :pop + + # @!macro priority_queue_method_push + def push(item) + raise ArgumentError.new('cannot enqueue nil') if item.nil? + @length += 1 + @queue << item + swim(@length) + true + end + alias_method :<<, :push + alias_method :enq, :push + + # @!macro priority_queue_method_from_list + def self.from_list(list, opts = {}) + queue = new(opts) + list.each{|item| queue << item } + queue + end + + private + + # Exchange the values at the given indexes within the internal array. + # + # @param [Integer] x the first index to swap + # @param [Integer] y the second index to swap + # + # @!visibility private + def swap(x, y) + temp = @queue[x] + @queue[x] = @queue[y] + @queue[y] = temp + end + + # Are the items at the given indexes ordered based on the priority + # order specified at construction? + # + # @param [Integer] x the first index from which to retrieve a comparable value + # @param [Integer] y the second index from which to retrieve a comparable value + # + # @return [Boolean] true if the two elements are in the correct priority order + # else false + # + # @!visibility private + def ordered?(x, y) + (@queue[x] <=> @queue[y]) == @comparator + end + + # Percolate down to maintain heap invariant. + # + # @param [Integer] k the index at which to start the percolation + # + # @!visibility private + def sink(k) + while (j = (2 * k)) <= @length do + j += 1 if j < @length && ! ordered?(j, j+1) + break if ordered?(k, j) + swap(k, j) + k = j + end + end + + # Percolate up to maintain heap invariant. + # + # @param [Integer] k the index at which to start the percolation + # + # @!visibility private + def swim(k) + while k > 1 && ! ordered?(k/2, k) do + swap(k, k/2) + k = k/2 + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/deprecation.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/deprecation.rb new file mode 100644 index 0000000000..35ae4b2c9d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/deprecation.rb @@ -0,0 +1,34 @@ +require 'concurrent/concern/logging' + +module Concurrent + module Concern + + # @!visibility private + # @!macro internal_implementation_note + module Deprecation + # TODO require additional parameter: a version. Display when it'll be removed based on that. Error if not removed. + include Concern::Logging + + def deprecated(message, strip = 2) + caller_line = caller(strip).first if strip > 0 + klass = if Module === self + self + else + self.class + end + message = if strip > 0 + format("[DEPRECATED] %s\ncalled on: %s", message, caller_line) + else + format('[DEPRECATED] %s', message) + end + log WARN, klass.to_s, message + end + + def deprecated_method(old_name, new_name) + deprecated "`#{old_name}` is deprecated and it'll removed in next release, use `#{new_name}` instead", 3 + end + + extend self + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/dereferenceable.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/dereferenceable.rb new file mode 100644 index 0000000000..b0d1a2ef85 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/dereferenceable.rb @@ -0,0 +1,73 @@ +module Concurrent + module Concern + + # Object references in Ruby are mutable. This can lead to serious problems when + # the `#value` of a concurrent object is a mutable reference. Which is always the + # case unless the value is a `Fixnum`, `Symbol`, or similar "primitive" data type. + # Most classes in this library that expose a `#value` getter method do so using the + # `Dereferenceable` mixin module. + # + # @!macro copy_options + module Dereferenceable + # NOTE: This module is going away in 2.0. In the mean time we need it to + # play nicely with the synchronization layer. This means that the + # including class SHOULD be synchronized and it MUST implement a + # `#synchronize` method. Not doing so will lead to runtime errors. + + # Return the value this object represents after applying the options specified + # by the `#set_deref_options` method. + # + # @return [Object] the current value of the object + def value + synchronize { apply_deref_options(@value) } + end + alias_method :deref, :value + + protected + + # Set the internal value of this object + # + # @param [Object] value the new value + def value=(value) + synchronize{ @value = value } + end + + # @!macro dereferenceable_set_deref_options + # Set the options which define the operations #value performs before + # returning data to the caller (dereferencing). + # + # @note Most classes that include this module will call `#set_deref_options` + # from within the constructor, thus allowing these options to be set at + # object creation. + # + # @param [Hash] opts the options defining dereference behavior. + # @option opts [String] :dup_on_deref (false) call `#dup` before returning the data + # @option opts [String] :freeze_on_deref (false) call `#freeze` before returning the data + # @option opts [String] :copy_on_deref (nil) call the given `Proc` passing + # the internal value and returning the value returned from the proc + def set_deref_options(opts = {}) + synchronize{ ns_set_deref_options(opts) } + end + + # @!macro dereferenceable_set_deref_options + # @!visibility private + def ns_set_deref_options(opts) + @dup_on_deref = opts[:dup_on_deref] || opts[:dup] + @freeze_on_deref = opts[:freeze_on_deref] || opts[:freeze] + @copy_on_deref = opts[:copy_on_deref] || opts[:copy] + @do_nothing_on_deref = !(@dup_on_deref || @freeze_on_deref || @copy_on_deref) + nil + end + + # @!visibility private + def apply_deref_options(value) + return nil if value.nil? + return value if @do_nothing_on_deref + value = @copy_on_deref.call(value) if @copy_on_deref + value = value.dup if @dup_on_deref + value = value.freeze if @freeze_on_deref + value + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/logging.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/logging.rb new file mode 100644 index 0000000000..2c749996f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/logging.rb @@ -0,0 +1,32 @@ +require 'logger' + +module Concurrent + module Concern + + # Include where logging is needed + # + # @!visibility private + module Logging + include Logger::Severity + + # Logs through {Concurrent.global_logger}, it can be overridden by setting @logger + # @param [Integer] level one of Logger::Severity constants + # @param [String] progname e.g. a path of an Actor + # @param [String, nil] message when nil block is used to generate the message + # @yieldreturn [String] a message + def log(level, progname, message = nil, &block) + #NOTE: Cannot require 'concurrent/configuration' above due to circular references. + # Assume that the gem has been initialized if we've gotten this far. + logger = if defined?(@logger) && @logger + @logger + else + Concurrent.global_logger + end + logger.call level, progname, message, &block + rescue => error + $stderr.puts "`Concurrent.configuration.logger` failed to log #{[level, progname, message, block]}\n" + + "#{error.message} (#{error.class})\n#{error.backtrace.join "\n"}" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/obligation.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/obligation.rb new file mode 100644 index 0000000000..2c9ac12003 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/obligation.rb @@ -0,0 +1,220 @@ +require 'thread' +require 'timeout' + +require 'concurrent/atomic/event' +require 'concurrent/concern/dereferenceable' + +module Concurrent + module Concern + + module Obligation + include Concern::Dereferenceable + # NOTE: The Dereferenceable module is going away in 2.0. In the mean time + # we need it to place nicely with the synchronization layer. This means + # that the including class SHOULD be synchronized and it MUST implement a + # `#synchronize` method. Not doing so will lead to runtime errors. + + # Has the obligation been fulfilled? + # + # @return [Boolean] + def fulfilled? + state == :fulfilled + end + alias_method :realized?, :fulfilled? + + # Has the obligation been rejected? + # + # @return [Boolean] + def rejected? + state == :rejected + end + + # Is obligation completion still pending? + # + # @return [Boolean] + def pending? + state == :pending + end + + # Is the obligation still unscheduled? + # + # @return [Boolean] + def unscheduled? + state == :unscheduled + end + + # Has the obligation completed processing? + # + # @return [Boolean] + def complete? + [:fulfilled, :rejected].include? state + end + + # Is the obligation still awaiting completion of processing? + # + # @return [Boolean] + def incomplete? + ! complete? + end + + # The current value of the obligation. Will be `nil` while the state is + # pending or the operation has been rejected. + # + # @param [Numeric] timeout the maximum time in seconds to wait. + # @return [Object] see Dereferenceable#deref + def value(timeout = nil) + wait timeout + deref + end + + # Wait until obligation is complete or the timeout has been reached. + # + # @param [Numeric] timeout the maximum time in seconds to wait. + # @return [Obligation] self + def wait(timeout = nil) + event.wait(timeout) if timeout != 0 && incomplete? + self + end + + # Wait until obligation is complete or the timeout is reached. Will re-raise + # any exceptions raised during processing (but will not raise an exception + # on timeout). + # + # @param [Numeric] timeout the maximum time in seconds to wait. + # @return [Obligation] self + # @raise [Exception] raises the reason when rejected + def wait!(timeout = nil) + wait(timeout).tap { raise self if rejected? } + end + alias_method :no_error!, :wait! + + # The current value of the obligation. Will be `nil` while the state is + # pending or the operation has been rejected. Will re-raise any exceptions + # raised during processing (but will not raise an exception on timeout). + # + # @param [Numeric] timeout the maximum time in seconds to wait. + # @return [Object] see Dereferenceable#deref + # @raise [Exception] raises the reason when rejected + def value!(timeout = nil) + wait(timeout) + if rejected? + raise self + else + deref + end + end + + # The current state of the obligation. + # + # @return [Symbol] the current state + def state + synchronize { @state } + end + + # If an exception was raised during processing this will return the + # exception object. Will return `nil` when the state is pending or if + # the obligation has been successfully fulfilled. + # + # @return [Exception] the exception raised during processing or `nil` + def reason + synchronize { @reason } + end + + # @example allows Obligation to be risen + # rejected_ivar = Ivar.new.fail + # raise rejected_ivar + def exception(*args) + raise 'obligation is not rejected' unless rejected? + reason.exception(*args) + end + + protected + + # @!visibility private + def get_arguments_from(opts = {}) + [*opts.fetch(:args, [])] + end + + # @!visibility private + def init_obligation + @event = Event.new + @value = @reason = nil + end + + # @!visibility private + def event + @event + end + + # @!visibility private + def set_state(success, value, reason) + if success + @value = value + @state = :fulfilled + else + @reason = reason + @state = :rejected + end + end + + # @!visibility private + def state=(value) + synchronize { ns_set_state(value) } + end + + # Atomic compare and set operation + # State is set to `next_state` only if `current state == expected_current`. + # + # @param [Symbol] next_state + # @param [Symbol] expected_current + # + # @return [Boolean] true is state is changed, false otherwise + # + # @!visibility private + def compare_and_set_state(next_state, *expected_current) + synchronize do + if expected_current.include? @state + @state = next_state + true + else + false + end + end + end + + # Executes the block within mutex if current state is included in expected_states + # + # @return block value if executed, false otherwise + # + # @!visibility private + def if_state(*expected_states) + synchronize do + raise ArgumentError.new('no block given') unless block_given? + + if expected_states.include? @state + yield + else + false + end + end + end + + protected + + # Am I in the current state? + # + # @param [Symbol] expected The state to check against + # @return [Boolean] true if in the expected state else false + # + # @!visibility private + def ns_check_state?(expected) + @state == expected + end + + # @!visibility private + def ns_set_state(value) + @state = value + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/observable.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/observable.rb new file mode 100644 index 0000000000..b5132714bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concern/observable.rb @@ -0,0 +1,110 @@ +require 'concurrent/collection/copy_on_notify_observer_set' +require 'concurrent/collection/copy_on_write_observer_set' + +module Concurrent + module Concern + + # The [observer pattern](http://en.wikipedia.org/wiki/Observer_pattern) is one + # of the most useful design patterns. + # + # The workflow is very simple: + # - an `observer` can register itself to a `subject` via a callback + # - many `observers` can be registered to the same `subject` + # - the `subject` notifies all registered observers when its status changes + # - an `observer` can deregister itself when is no more interested to receive + # event notifications + # + # In a single threaded environment the whole pattern is very easy: the + # `subject` can use a simple data structure to manage all its subscribed + # `observer`s and every `observer` can react directly to every event without + # caring about synchronization. + # + # In a multi threaded environment things are more complex. The `subject` must + # synchronize the access to its data structure and to do so currently we're + # using two specialized ObserverSet: {Concurrent::Concern::CopyOnWriteObserverSet} + # and {Concurrent::Concern::CopyOnNotifyObserverSet}. + # + # When implementing and `observer` there's a very important rule to remember: + # **there are no guarantees about the thread that will execute the callback** + # + # Let's take this example + # ``` + # class Observer + # def initialize + # @count = 0 + # end + # + # def update + # @count += 1 + # end + # end + # + # obs = Observer.new + # [obj1, obj2, obj3, obj4].each { |o| o.add_observer(obs) } + # # execute [obj1, obj2, obj3, obj4] + # ``` + # + # `obs` is wrong because the variable `@count` can be accessed by different + # threads at the same time, so it should be synchronized (using either a Mutex + # or an AtomicFixum) + module Observable + + # @!macro observable_add_observer + # + # Adds an observer to this set. If a block is passed, the observer will be + # created by this method and no other params should be passed. + # + # @param [Object] observer the observer to add + # @param [Symbol] func the function to call on the observer during notification. + # Default is :update + # @return [Object] the added observer + def add_observer(observer = nil, func = :update, &block) + observers.add_observer(observer, func, &block) + end + + # As `#add_observer` but can be used for chaining. + # + # @param [Object] observer the observer to add + # @param [Symbol] func the function to call on the observer during notification. + # @return [Observable] self + def with_observer(observer = nil, func = :update, &block) + add_observer(observer, func, &block) + self + end + + # @!macro observable_delete_observer + # + # Remove `observer` as an observer on this object so that it will no + # longer receive notifications. + # + # @param [Object] observer the observer to remove + # @return [Object] the deleted observer + def delete_observer(observer) + observers.delete_observer(observer) + end + + # @!macro observable_delete_observers + # + # Remove all observers associated with this object. + # + # @return [Observable] self + def delete_observers + observers.delete_observers + self + end + + # @!macro observable_count_observers + # + # Return the number of observers associated with this object. + # + # @return [Integer] the observers count + def count_observers + observers.count_observers + end + + protected + + attr_accessor :observers + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concurrent_ruby.jar b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/concurrent_ruby.jar new file mode 100644 index 0000000000000000000000000000000000000000..76eee54f2d457025f4481991d590abc8e10a9682 GIT binary patch literal 137023 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

              #cvEpi`Ih_qvq_eTjKM1 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Π-#%eqfn#^bg=Qd`P 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≫ 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 W1A!U@!~yuPoCyTPX&H!OApZv?7+kLa literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/configuration.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/configuration.rb new file mode 100644 index 0000000000..c6774da618 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/configuration.rb @@ -0,0 +1,184 @@ +require 'thread' +require 'concurrent/delay' +require 'concurrent/errors' +require 'concurrent/atomic/atomic_reference' +require 'concurrent/concern/logging' +require 'concurrent/executor/immediate_executor' +require 'concurrent/executor/cached_thread_pool' +require 'concurrent/utility/at_exit' +require 'concurrent/utility/processor_counter' + +module Concurrent + extend Concern::Logging + + autoload :Options, 'concurrent/options' + autoload :TimerSet, 'concurrent/executor/timer_set' + autoload :ThreadPoolExecutor, 'concurrent/executor/thread_pool_executor' + + # @return [Logger] Logger with provided level and output. + def self.create_simple_logger(level = Logger::FATAL, output = $stderr) + # TODO (pitr-ch 24-Dec-2016): figure out why it had to be replaced, stdlogger was deadlocking + lambda do |severity, progname, message = nil, &block| + return false if severity < level + + message = block ? block.call : message + formatted_message = case message + when String + message + when Exception + format "%s (%s)\n%s", + message.message, message.class, (message.backtrace || []).join("\n") + else + message.inspect + end + + output.print format "[%s] %5s -- %s: %s\n", + Time.now.strftime('%Y-%m-%d %H:%M:%S.%L'), + Logger::SEV_LABEL[severity], + progname, + formatted_message + true + end + end + + # Use logger created by #create_simple_logger to log concurrent-ruby messages. + def self.use_simple_logger(level = Logger::FATAL, output = $stderr) + Concurrent.global_logger = create_simple_logger level, output + end + + # @return [Logger] Logger with provided level and output. + # @deprecated + def self.create_stdlib_logger(level = Logger::FATAL, output = $stderr) + logger = Logger.new(output) + logger.level = level + logger.formatter = lambda do |severity, datetime, progname, msg| + formatted_message = case msg + when String + msg + when Exception + format "%s (%s)\n%s", + msg.message, msg.class, (msg.backtrace || []).join("\n") + else + msg.inspect + end + format "[%s] %5s -- %s: %s\n", + datetime.strftime('%Y-%m-%d %H:%M:%S.%L'), + severity, + progname, + formatted_message + end + + lambda do |loglevel, progname, message = nil, &block| + logger.add loglevel, message, progname, &block + end + end + + # Use logger created by #create_stdlib_logger to log concurrent-ruby messages. + # @deprecated + def self.use_stdlib_logger(level = Logger::FATAL, output = $stderr) + Concurrent.global_logger = create_stdlib_logger level, output + end + + # TODO (pitr-ch 27-Dec-2016): remove deadlocking stdlib_logger methods + + # Suppresses all output when used for logging. + NULL_LOGGER = lambda { |level, progname, message = nil, &block| } + + # @!visibility private + GLOBAL_LOGGER = AtomicReference.new(create_simple_logger(Logger::WARN)) + private_constant :GLOBAL_LOGGER + + def self.global_logger + GLOBAL_LOGGER.value + end + + def self.global_logger=(value) + GLOBAL_LOGGER.value = value + end + + # @!visibility private + GLOBAL_FAST_EXECUTOR = Delay.new { Concurrent.new_fast_executor(auto_terminate: true) } + private_constant :GLOBAL_FAST_EXECUTOR + + # @!visibility private + GLOBAL_IO_EXECUTOR = Delay.new { Concurrent.new_io_executor(auto_terminate: true) } + private_constant :GLOBAL_IO_EXECUTOR + + # @!visibility private + GLOBAL_TIMER_SET = Delay.new { TimerSet.new(auto_terminate: true) } + private_constant :GLOBAL_TIMER_SET + + # @!visibility private + GLOBAL_IMMEDIATE_EXECUTOR = ImmediateExecutor.new + private_constant :GLOBAL_IMMEDIATE_EXECUTOR + + # Disables AtExit handlers including pool auto-termination handlers. + # When disabled it will be the application programmer's responsibility + # to ensure that the handlers are shutdown properly prior to application + # exit by calling {AtExit.run} method. + # + # @note this option should be needed only because of `at_exit` ordering + # issues which may arise when running some of the testing frameworks. + # E.g. Minitest's test-suite runs itself in `at_exit` callback which + # executes after the pools are already terminated. Then auto termination + # needs to be disabled and called manually after test-suite ends. + # @note This method should *never* be called + # from within a gem. It should *only* be used from within the main + # application and even then it should be used only when necessary. + # @see AtExit + def self.disable_at_exit_handlers! + AtExit.enabled = false + end + + # Global thread pool optimized for short, fast *operations*. + # + # @return [ThreadPoolExecutor] the thread pool + def self.global_fast_executor + GLOBAL_FAST_EXECUTOR.value + end + + # Global thread pool optimized for long, blocking (IO) *tasks*. + # + # @return [ThreadPoolExecutor] the thread pool + def self.global_io_executor + GLOBAL_IO_EXECUTOR.value + end + + def self.global_immediate_executor + GLOBAL_IMMEDIATE_EXECUTOR + end + + # Global thread pool user for global *timers*. + # + # @return [Concurrent::TimerSet] the thread pool + def self.global_timer_set + GLOBAL_TIMER_SET.value + end + + # General access point to global executors. + # @param [Symbol, Executor] executor_identifier symbols: + # - :fast - {Concurrent.global_fast_executor} + # - :io - {Concurrent.global_io_executor} + # - :immediate - {Concurrent.global_immediate_executor} + # @return [Executor] + def self.executor(executor_identifier) + Options.executor(executor_identifier) + end + + def self.new_fast_executor(opts = {}) + FixedThreadPool.new( + [2, Concurrent.processor_count].max, + auto_terminate: opts.fetch(:auto_terminate, true), + idletime: 60, # 1 minute + max_queue: 0, # unlimited + fallback_policy: :abort # shouldn't matter -- 0 max queue + ) + end + + def self.new_io_executor(opts = {}) + CachedThreadPool.new( + auto_terminate: opts.fetch(:auto_terminate, true), + fallback_policy: :abort # shouldn't matter -- 0 max queue + ) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/constants.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/constants.rb new file mode 100644 index 0000000000..676c2afb9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/constants.rb @@ -0,0 +1,8 @@ +module Concurrent + + # Various classes within allows for +nil+ values to be stored, + # so a special +NULL+ token is required to indicate the "nil-ness". + # @!visibility private + NULL = ::Object.new + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/dataflow.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/dataflow.rb new file mode 100644 index 0000000000..d55f19d850 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/dataflow.rb @@ -0,0 +1,81 @@ +require 'concurrent/future' +require 'concurrent/atomic/atomic_fixnum' + +module Concurrent + + # @!visibility private + class DependencyCounter # :nodoc: + + def initialize(count, &block) + @counter = AtomicFixnum.new(count) + @block = block + end + + def update(time, value, reason) + if @counter.decrement == 0 + @block.call + end + end + end + + # Dataflow allows you to create a task that will be scheduled when all of its data dependencies are available. + # {include:file:docs-source/dataflow.md} + # + # @param [Future] inputs zero or more `Future` operations that this dataflow depends upon + # + # @yield The operation to perform once all the dependencies are met + # @yieldparam [Future] inputs each of the `Future` inputs to the dataflow + # @yieldreturn [Object] the result of the block operation + # + # @return [Object] the result of all the operations + # + # @raise [ArgumentError] if no block is given + # @raise [ArgumentError] if any of the inputs are not `IVar`s + def dataflow(*inputs, &block) + dataflow_with(Concurrent.global_io_executor, *inputs, &block) + end + module_function :dataflow + + def dataflow_with(executor, *inputs, &block) + call_dataflow(:value, executor, *inputs, &block) + end + module_function :dataflow_with + + def dataflow!(*inputs, &block) + dataflow_with!(Concurrent.global_io_executor, *inputs, &block) + end + module_function :dataflow! + + def dataflow_with!(executor, *inputs, &block) + call_dataflow(:value!, executor, *inputs, &block) + end + module_function :dataflow_with! + + private + + def call_dataflow(method, executor, *inputs, &block) + raise ArgumentError.new('an executor must be provided') if executor.nil? + raise ArgumentError.new('no block given') unless block_given? + unless inputs.all? { |input| input.is_a? IVar } + raise ArgumentError.new("Not all dependencies are IVars.\nDependencies: #{ inputs.inspect }") + end + + result = Future.new(executor: executor) do + values = inputs.map { |input| input.send(method) } + block.call(*values) + end + + if inputs.empty? + result.execute + else + counter = DependencyCounter.new(inputs.size) { result.execute } + + inputs.each do |input| + input.add_observer counter + end + end + + result + end + module_function :call_dataflow +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/delay.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/delay.rb new file mode 100644 index 0000000000..83799d03dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/delay.rb @@ -0,0 +1,199 @@ +require 'thread' +require 'concurrent/concern/obligation' +require 'concurrent/executor/immediate_executor' +require 'concurrent/synchronization' + +module Concurrent + + # This file has circular require issues. It must be autoloaded here. + autoload :Options, 'concurrent/options' + + # Lazy evaluation of a block yielding an immutable result. Useful for + # expensive operations that may never be needed. It may be non-blocking, + # supports the `Concern::Obligation` interface, and accepts the injection of + # custom executor upon which to execute the block. Processing of + # block will be deferred until the first time `#value` is called. + # At that time the caller can choose to return immediately and let + # the block execute asynchronously, block indefinitely, or block + # with a timeout. + # + # When a `Delay` is created its state is set to `pending`. The value and + # reason are both `nil`. The first time the `#value` method is called the + # enclosed opration will be run and the calling thread will block. Other + # threads attempting to call `#value` will block as well. Once the operation + # is complete the *value* will be set to the result of the operation or the + # *reason* will be set to the raised exception, as appropriate. All threads + # blocked on `#value` will return. Subsequent calls to `#value` will immediately + # return the cached value. The operation will only be run once. This means that + # any side effects created by the operation will only happen once as well. + # + # `Delay` includes the `Concurrent::Concern::Dereferenceable` mixin to support thread + # safety of the reference returned by `#value`. + # + # @!macro copy_options + # + # @!macro delay_note_regarding_blocking + # @note The default behavior of `Delay` is to block indefinitely when + # calling either `value` or `wait`, executing the delayed operation on + # the current thread. This makes the `timeout` value completely + # irrelevant. To enable non-blocking behavior, use the `executor` + # constructor option. This will cause the delayed operation to be + # execute on the given executor, allowing the call to timeout. + # + # @see Concurrent::Concern::Dereferenceable + class Delay < Synchronization::LockableObject + include Concern::Obligation + + # NOTE: Because the global thread pools are lazy-loaded with these objects + # there is a performance hit every time we post a new task to one of these + # thread pools. Subsequently it is critical that `Delay` perform as fast + # as possible post-completion. This class has been highly optimized using + # the benchmark script `examples/lazy_and_delay.rb`. Do NOT attempt to + # DRY-up this class or perform other refactoring with running the + # benchmarks and ensuring that performance is not negatively impacted. + + # Create a new `Delay` in the `:pending` state. + # + # @!macro executor_and_deref_options + # + # @yield the delayed operation to perform + # + # @raise [ArgumentError] if no block is given + def initialize(opts = {}, &block) + raise ArgumentError.new('no block given') unless block_given? + super(&nil) + synchronize { ns_initialize(opts, &block) } + end + + # Return the value this object represents after applying the options + # specified by the `#set_deref_options` method. If the delayed operation + # raised an exception this method will return nil. The execption object + # can be accessed via the `#reason` method. + # + # @param [Numeric] timeout the maximum number of seconds to wait + # @return [Object] the current value of the object + # + # @!macro delay_note_regarding_blocking + def value(timeout = nil) + if @executor # TODO (pitr 12-Sep-2015): broken unsafe read? + super + else + # this function has been optimized for performance and + # should not be modified without running new benchmarks + synchronize do + execute = @evaluation_started = true unless @evaluation_started + if execute + begin + set_state(true, @task.call, nil) + rescue => ex + set_state(false, nil, ex) + end + elsif incomplete? + raise IllegalOperationError, 'Recursive call to #value during evaluation of the Delay' + end + end + if @do_nothing_on_deref + @value + else + apply_deref_options(@value) + end + end + end + + # Return the value this object represents after applying the options + # specified by the `#set_deref_options` method. If the delayed operation + # raised an exception, this method will raise that exception (even when) + # the operation has already been executed). + # + # @param [Numeric] timeout the maximum number of seconds to wait + # @return [Object] the current value of the object + # @raise [Exception] when `#rejected?` raises `#reason` + # + # @!macro delay_note_regarding_blocking + def value!(timeout = nil) + if @executor + super + else + result = value + raise @reason if @reason + result + end + end + + # Return the value this object represents after applying the options + # specified by the `#set_deref_options` method. + # + # @param [Integer] timeout (nil) the maximum number of seconds to wait for + # the value to be computed. When `nil` the caller will block indefinitely. + # + # @return [Object] self + # + # @!macro delay_note_regarding_blocking + def wait(timeout = nil) + if @executor + execute_task_once + super(timeout) + else + value + end + self + end + + # Reconfigures the block returning the value if still `#incomplete?` + # + # @yield the delayed operation to perform + # @return [true, false] if success + def reconfigure(&block) + synchronize do + raise ArgumentError.new('no block given') unless block_given? + unless @evaluation_started + @task = block + true + else + false + end + end + end + + protected + + def ns_initialize(opts, &block) + init_obligation + set_deref_options(opts) + @executor = opts[:executor] + + @task = block + @state = :pending + @evaluation_started = false + end + + private + + # @!visibility private + def execute_task_once # :nodoc: + # this function has been optimized for performance and + # should not be modified without running new benchmarks + execute = task = nil + synchronize do + execute = @evaluation_started = true unless @evaluation_started + task = @task + end + + if execute + executor = Options.executor_from_options(executor: @executor) + executor.post do + begin + result = task.call + success = true + rescue => ex + reason = ex + end + synchronize do + set_state(success, result, reason) + event.set + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/errors.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/errors.rb new file mode 100644 index 0000000000..b69fec01f2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/errors.rb @@ -0,0 +1,69 @@ +module Concurrent + + Error = Class.new(StandardError) + + # Raised when errors occur during configuration. + ConfigurationError = Class.new(Error) + + # Raised when an asynchronous operation is cancelled before execution. + CancelledOperationError = Class.new(Error) + + # Raised when a lifecycle method (such as `stop`) is called in an improper + # sequence or when the object is in an inappropriate state. + LifecycleError = Class.new(Error) + + # Raised when an attempt is made to violate an immutability guarantee. + ImmutabilityError = Class.new(Error) + + # Raised when an operation is attempted which is not legal given the + # receiver's current state + IllegalOperationError = Class.new(Error) + + # Raised when an object's methods are called when it has not been + # properly initialized. + InitializationError = Class.new(Error) + + # Raised when an object with a start/stop lifecycle has been started an + # excessive number of times. Often used in conjunction with a restart + # policy or strategy. + MaxRestartFrequencyError = Class.new(Error) + + # Raised when an attempt is made to modify an immutable object + # (such as an `IVar`) after its final state has been set. + class MultipleAssignmentError < Error + attr_reader :inspection_data + + def initialize(message = nil, inspection_data = nil) + @inspection_data = inspection_data + super message + end + + def inspect + format '%s %s>', super[0..-2], @inspection_data.inspect + end + end + + # Raised by an `Executor` when it is unable to process a given task, + # possibly because of a reject policy or other internal error. + RejectedExecutionError = Class.new(Error) + + # Raised when any finite resource, such as a lock counter, exceeds its + # maximum limit/threshold. + ResourceLimitError = Class.new(Error) + + # Raised when an operation times out. + TimeoutError = Class.new(Error) + + # Aggregates multiple exceptions. + class MultipleErrors < Error + attr_reader :errors + + def initialize(errors, message = "#{errors.size} errors") + @errors = errors + super [*message, + *errors.map { |e| [format('%s (%s)', e.message, e.class), *e.backtrace] }.flatten(1) + ].join("\n") + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/exchanger.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/exchanger.rb new file mode 100644 index 0000000000..5a99550b33 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/exchanger.rb @@ -0,0 +1,352 @@ +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/maybe' +require 'concurrent/atomic/atomic_reference' +require 'concurrent/atomic/count_down_latch' +require 'concurrent/utility/engine' +require 'concurrent/utility/monotonic_time' + +module Concurrent + + # @!macro exchanger + # + # A synchronization point at which threads can pair and swap elements within + # pairs. Each thread presents some object on entry to the exchange method, + # matches with a partner thread, and receives its partner's object on return. + # + # @!macro thread_safe_variable_comparison + # + # This implementation is very simple, using only a single slot for each + # exchanger (unlike more advanced implementations which use an "arena"). + # This approach will work perfectly fine when there are only a few threads + # accessing a single `Exchanger`. Beyond a handful of threads the performance + # will degrade rapidly due to contention on the single slot, but the algorithm + # will remain correct. + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html java.util.concurrent.Exchanger + # @example + # + # exchanger = Concurrent::Exchanger.new + # + # threads = [ + # Thread.new { puts "first: " << exchanger.exchange('foo', 1) }, #=> "first: bar" + # Thread.new { puts "second: " << exchanger.exchange('bar', 1) } #=> "second: foo" + # ] + # threads.each {|t| t.join(2) } + + # @!visibility private + class AbstractExchanger < Synchronization::Object + + # @!visibility private + CANCEL = ::Object.new + private_constant :CANCEL + + def initialize + super + end + + # @!macro exchanger_method_do_exchange + # + # Waits for another thread to arrive at this exchange point (unless the + # current thread is interrupted), and then transfers the given object to + # it, receiving its object in return. The timeout value indicates the + # approximate number of seconds the method should block while waiting + # for the exchange. When the timeout value is `nil` the method will + # block indefinitely. + # + # @param [Object] value the value to exchange with another thread + # @param [Numeric, nil] timeout in seconds, `nil` blocks indefinitely + # + # @!macro exchanger_method_exchange + # + # In some edge cases when a `timeout` is given a return value of `nil` may be + # ambiguous. Specifically, if `nil` is a valid value in the exchange it will + # be impossible to tell whether `nil` is the actual return value or if it + # signifies timeout. When `nil` is a valid value in the exchange consider + # using {#exchange!} or {#try_exchange} instead. + # + # @return [Object] the value exchanged by the other thread or `nil` on timeout + def exchange(value, timeout = nil) + (value = do_exchange(value, timeout)) == CANCEL ? nil : value + end + + # @!macro exchanger_method_do_exchange + # @!macro exchanger_method_exchange_bang + # + # On timeout a {Concurrent::TimeoutError} exception will be raised. + # + # @return [Object] the value exchanged by the other thread + # @raise [Concurrent::TimeoutError] on timeout + def exchange!(value, timeout = nil) + if (value = do_exchange(value, timeout)) == CANCEL + raise Concurrent::TimeoutError + else + value + end + end + + # @!macro exchanger_method_do_exchange + # @!macro exchanger_method_try_exchange + # + # The return value will be a {Concurrent::Maybe} set to `Just` on success or + # `Nothing` on timeout. + # + # @return [Concurrent::Maybe] on success a `Just` maybe will be returned with + # the item exchanged by the other thread as `#value`; on timeout a + # `Nothing` maybe will be returned with {Concurrent::TimeoutError} as `#reason` + # + # @example + # + # exchanger = Concurrent::Exchanger.new + # + # result = exchanger.exchange(:foo, 0.5) + # + # if result.just? + # puts result.value #=> :bar + # else + # puts 'timeout' + # end + def try_exchange(value, timeout = nil) + if (value = do_exchange(value, timeout)) == CANCEL + Concurrent::Maybe.nothing(Concurrent::TimeoutError) + else + Concurrent::Maybe.just(value) + end + end + + private + + # @!macro exchanger_method_do_exchange + # + # @return [Object, CANCEL] the value exchanged by the other thread; {CANCEL} on timeout + def do_exchange(value, timeout) + raise NotImplementedError + end + end + + # @!macro internal_implementation_note + # @!visibility private + class RubyExchanger < AbstractExchanger + # A simplified version of java.util.concurrent.Exchanger written by + # Doug Lea, Bill Scherer, and Michael Scott with assistance from members + # of JCP JSR-166 Expert Group and released to the public domain. It does + # not include the arena or the multi-processor spin loops. + # http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/Exchanger.java + + safe_initialization! + + class Node < Concurrent::Synchronization::Object + attr_atomic :value + safe_initialization! + + def initialize(item) + super() + @Item = item + @Latch = Concurrent::CountDownLatch.new + self.value = nil + end + + def latch + @Latch + end + + def item + @Item + end + end + private_constant :Node + + def initialize + super + end + + private + + attr_atomic(:slot) + + # @!macro exchanger_method_do_exchange + # + # @return [Object, CANCEL] the value exchanged by the other thread; {CANCEL} on timeout + def do_exchange(value, timeout) + + # ALGORITHM + # + # From the original Java version: + # + # > The basic idea is to maintain a "slot", which is a reference to + # > a Node containing both an Item to offer and a "hole" waiting to + # > get filled in. If an incoming "occupying" thread sees that the + # > slot is null, it CAS'es (compareAndSets) a Node there and waits + # > for another to invoke exchange. That second "fulfilling" thread + # > sees that the slot is non-null, and so CASes it back to null, + # > also exchanging items by CASing the hole, plus waking up the + # > occupying thread if it is blocked. In each case CAS'es may + # > fail because a slot at first appears non-null but is null upon + # > CAS, or vice-versa. So threads may need to retry these + # > actions. + # + # This version: + # + # An exchange occurs between an "occupier" thread and a "fulfiller" thread. + # The "slot" is used to setup this interaction. The first thread in the + # exchange puts itself into the slot (occupies) and waits for a fulfiller. + # The second thread removes the occupier from the slot and attempts to + # perform the exchange. Removing the occupier also frees the slot for + # another occupier/fulfiller pair. + # + # Because the occupier and the fulfiller are operating independently and + # because there may be contention with other threads, any failed operation + # indicates contention. Both the occupier and the fulfiller operate within + # spin loops. Any failed actions along the happy path will cause the thread + # to repeat the loop and try again. + # + # When a timeout value is given the thread must be cognizant of time spent + # in the spin loop. The remaining time is checked every loop. When the time + # runs out the thread will exit. + # + # A "node" is the data structure used to perform the exchange. Only the + # occupier's node is necessary. It's the node used for the exchange. + # Each node has an "item," a "hole" (self), and a "latch." The item is the + # node's initial value. It never changes. It's what the fulfiller returns on + # success. The occupier's hole is where the fulfiller put its item. It's the + # item that the occupier returns on success. The latch is used for synchronization. + # Because a thread may act as either an occupier or fulfiller (or possibly + # both in periods of high contention) every thread creates a node when + # the exchange method is first called. + # + # The following steps occur within the spin loop. If any actions fail + # the thread will loop and try again, so long as there is time remaining. + # If time runs out the thread will return CANCEL. + # + # Check the slot for an occupier: + # + # * If the slot is empty try to occupy + # * If the slot is full try to fulfill + # + # Attempt to occupy: + # + # * Attempt to CAS myself into the slot + # * Go to sleep and wait to be woken by a fulfiller + # * If the sleep is successful then the fulfiller completed its happy path + # - Return the value from my hole (the value given by the fulfiller) + # * When the sleep fails (time ran out) attempt to cancel the operation + # - Attempt to CAS myself out of the hole + # - If successful there is no contention + # - Return CANCEL + # - On failure, I am competing with a fulfiller + # - Attempt to CAS my hole to CANCEL + # - On success + # - Let the fulfiller deal with my cancel + # - Return CANCEL + # - On failure the fulfiller has completed its happy path + # - Return th value from my hole (the fulfiller's value) + # + # Attempt to fulfill: + # + # * Attempt to CAS the occupier out of the slot + # - On failure loop again + # * Attempt to CAS my item into the occupier's hole + # - On failure the occupier is trying to cancel + # - Loop again + # - On success we are on the happy path + # - Wake the sleeping occupier + # - Return the occupier's item + + value = NULL if value.nil? # The sentinel allows nil to be a valid value + me = Node.new(value) # create my node in case I need to occupy + end_at = Concurrent.monotonic_time + timeout.to_f # The time to give up + + result = loop do + other = slot + if other && compare_and_set_slot(other, nil) + # try to fulfill + if other.compare_and_set_value(nil, value) + # happy path + other.latch.count_down + break other.item + end + elsif other.nil? && compare_and_set_slot(nil, me) + # try to occupy + timeout = end_at - Concurrent.monotonic_time if timeout + if me.latch.wait(timeout) + # happy path + break me.value + else + # attempt to remove myself from the slot + if compare_and_set_slot(me, nil) + break CANCEL + elsif !me.compare_and_set_value(nil, CANCEL) + # I've failed to block the fulfiller + break me.value + end + end + end + break CANCEL if timeout && Concurrent.monotonic_time >= end_at + end + + result == NULL ? nil : result + end + end + + if Concurrent.on_jruby? + + # @!macro internal_implementation_note + # @!visibility private + class JavaExchanger < AbstractExchanger + + def initialize + @exchanger = java.util.concurrent.Exchanger.new + end + + private + + # @!macro exchanger_method_do_exchange + # + # @return [Object, CANCEL] the value exchanged by the other thread; {CANCEL} on timeout + def do_exchange(value, timeout) + result = nil + if timeout.nil? + Synchronization::JRuby.sleep_interruptibly do + result = @exchanger.exchange(value) + end + else + Synchronization::JRuby.sleep_interruptibly do + result = @exchanger.exchange(value, 1000 * timeout, java.util.concurrent.TimeUnit::MILLISECONDS) + end + end + result + rescue java.util.concurrent.TimeoutException + CANCEL + end + end + end + + # @!visibility private + # @!macro internal_implementation_note + ExchangerImplementation = case + when Concurrent.on_jruby? + JavaExchanger + else + RubyExchanger + end + private_constant :ExchangerImplementation + + # @!macro exchanger + class Exchanger < ExchangerImplementation + + # @!method initialize + # Creates exchanger instance + + # @!method exchange(value, timeout = nil) + # @!macro exchanger_method_do_exchange + # @!macro exchanger_method_exchange + + # @!method exchange!(value, timeout = nil) + # @!macro exchanger_method_do_exchange + # @!macro exchanger_method_exchange_bang + + # @!method try_exchange(value, timeout = nil) + # @!macro exchanger_method_do_exchange + # @!macro exchanger_method_try_exchange + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/abstract_executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/abstract_executor_service.rb new file mode 100644 index 0000000000..80ff953adb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/abstract_executor_service.rb @@ -0,0 +1,134 @@ +require 'concurrent/errors' +require 'concurrent/executor/executor_service' +require 'concurrent/synchronization' +require 'concurrent/utility/at_exit' + +module Concurrent + + # @!macro abstract_executor_service_public_api + # @!visibility private + class AbstractExecutorService < Synchronization::LockableObject + include ExecutorService + + # The set of possible fallback policies that may be set at thread pool creation. + FALLBACK_POLICIES = [:abort, :discard, :caller_runs].freeze + + # @!macro executor_service_attr_reader_fallback_policy + attr_reader :fallback_policy + + # Create a new thread pool. + def initialize(*args, &block) + super(&nil) + synchronize { ns_initialize(*args, &block) } + end + + # @!macro executor_service_method_shutdown + def shutdown + raise NotImplementedError + end + + # @!macro executor_service_method_kill + def kill + raise NotImplementedError + end + + # @!macro executor_service_method_wait_for_termination + def wait_for_termination(timeout = nil) + raise NotImplementedError + end + + # @!macro executor_service_method_running_question + def running? + synchronize { ns_running? } + end + + # @!macro executor_service_method_shuttingdown_question + def shuttingdown? + synchronize { ns_shuttingdown? } + end + + # @!macro executor_service_method_shutdown_question + def shutdown? + synchronize { ns_shutdown? } + end + + # @!macro executor_service_method_auto_terminate_question + def auto_terminate? + synchronize { ns_auto_terminate? } + end + + # @!macro executor_service_method_auto_terminate_setter + def auto_terminate=(value) + synchronize { self.ns_auto_terminate = value } + end + + private + + # Handler which executes the `fallback_policy` once the queue size + # reaches `max_queue`. + # + # @param [Array] args the arguments to the task which is being handled. + # + # @!visibility private + def handle_fallback(*args) + case fallback_policy + when :abort + raise RejectedExecutionError + when :discard + false + when :caller_runs + begin + yield(*args) + rescue => ex + # let it fail + log DEBUG, ex + end + true + else + fail "Unknown fallback policy #{fallback_policy}" + end + end + + def ns_execute(*args, &task) + raise NotImplementedError + end + + # @!macro executor_service_method_ns_shutdown_execution + # + # Callback method called when an orderly shutdown has completed. + # The default behavior is to signal all waiting threads. + def ns_shutdown_execution + # do nothing + end + + # @!macro executor_service_method_ns_kill_execution + # + # Callback method called when the executor has been killed. + # The default behavior is to do nothing. + def ns_kill_execution + # do nothing + end + + def ns_auto_terminate? + !!@auto_terminate + end + + def ns_auto_terminate=(value) + case value + when true + AtExit.add(self) { terminate_at_exit } + @auto_terminate = true + when false + AtExit.delete(self) + @auto_terminate = false + else + raise ArgumentError + end + end + + def terminate_at_exit + kill # TODO be gentle first + wait_for_termination(10) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/cached_thread_pool.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/cached_thread_pool.rb new file mode 100644 index 0000000000..1c7c18da65 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/cached_thread_pool.rb @@ -0,0 +1,62 @@ +require 'concurrent/utility/engine' +require 'concurrent/executor/thread_pool_executor' + +module Concurrent + + # A thread pool that dynamically grows and shrinks to fit the current workload. + # New threads are created as needed, existing threads are reused, and threads + # that remain idle for too long are killed and removed from the pool. These + # pools are particularly suited to applications that perform a high volume of + # short-lived tasks. + # + # On creation a `CachedThreadPool` has zero running threads. New threads are + # created on the pool as new operations are `#post`. The size of the pool + # will grow until `#max_length` threads are in the pool or until the number + # of threads exceeds the number of running and pending operations. When a new + # operation is post to the pool the first available idle thread will be tasked + # with the new operation. + # + # Should a thread crash for any reason the thread will immediately be removed + # from the pool. Similarly, threads which remain idle for an extended period + # of time will be killed and reclaimed. Thus these thread pools are very + # efficient at reclaiming unused resources. + # + # The API and behavior of this class are based on Java's `CachedThreadPool` + # + # @!macro thread_pool_options + class CachedThreadPool < ThreadPoolExecutor + + # @!macro cached_thread_pool_method_initialize + # + # Create a new thread pool. + # + # @param [Hash] opts the options defining pool behavior. + # @option opts [Symbol] :fallback_policy (`:abort`) the fallback policy + # + # @raise [ArgumentError] if `fallback_policy` is not a known policy + # + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newCachedThreadPool-- + def initialize(opts = {}) + defaults = { idletime: DEFAULT_THREAD_IDLETIMEOUT } + overrides = { min_threads: 0, + max_threads: DEFAULT_MAX_POOL_SIZE, + max_queue: DEFAULT_MAX_QUEUE_SIZE } + super(defaults.merge(opts).merge(overrides)) + end + + private + + # @!macro cached_thread_pool_method_initialize + # @!visibility private + def ns_initialize(opts) + super(opts) + if Concurrent.on_jruby? + @max_queue = 0 + @executor = java.util.concurrent.Executors.newCachedThreadPool + @executor.setRejectedExecutionHandler(FALLBACK_POLICY_CLASSES[@fallback_policy].new) + @executor.setKeepAliveTime(opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT), java.util.concurrent.TimeUnit::SECONDS) + self.auto_terminate = opts.fetch(:auto_terminate, true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/executor_service.rb new file mode 100644 index 0000000000..0fcbeeeb20 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/executor_service.rb @@ -0,0 +1,185 @@ +require 'concurrent/concern/logging' + +module Concurrent + + ################################################################### + + # @!macro executor_service_method_post + # + # Submit a task to the executor for asynchronous processing. + # + # @param [Array] args zero or more arguments to be passed to the task + # + # @yield the asynchronous task to perform + # + # @return [Boolean] `true` if the task is queued, `false` if the executor + # is not running + # + # @raise [ArgumentError] if no task is given + + # @!macro executor_service_method_left_shift + # + # Submit a task to the executor for asynchronous processing. + # + # @param [Proc] task the asynchronous task to perform + # + # @return [self] returns itself + + # @!macro executor_service_method_can_overflow_question + # + # Does the task queue have a maximum size? + # + # @return [Boolean] True if the task queue has a maximum size else false. + + # @!macro executor_service_method_serialized_question + # + # Does this executor guarantee serialization of its operations? + # + # @return [Boolean] True if the executor guarantees that all operations + # will be post in the order they are received and no two operations may + # occur simultaneously. Else false. + + ################################################################### + + # @!macro executor_service_public_api + # + # @!method post(*args, &task) + # @!macro executor_service_method_post + # + # @!method <<(task) + # @!macro executor_service_method_left_shift + # + # @!method can_overflow? + # @!macro executor_service_method_can_overflow_question + # + # @!method serialized? + # @!macro executor_service_method_serialized_question + + ################################################################### + + # @!macro executor_service_attr_reader_fallback_policy + # @return [Symbol] The fallback policy in effect. Either `:abort`, `:discard`, or `:caller_runs`. + + # @!macro executor_service_method_shutdown + # + # Begin an orderly shutdown. Tasks already in the queue will be executed, + # but no new tasks will be accepted. Has no additional effect if the + # thread pool is not running. + + # @!macro executor_service_method_kill + # + # Begin an immediate shutdown. In-progress tasks will be allowed to + # complete but enqueued tasks will be dismissed and no new tasks + # will be accepted. Has no additional effect if the thread pool is + # not running. + + # @!macro executor_service_method_wait_for_termination + # + # Block until executor shutdown is complete or until `timeout` seconds have + # passed. + # + # @note Does not initiate shutdown or termination. Either `shutdown` or `kill` + # must be called before this method (or on another thread). + # + # @param [Integer] timeout the maximum number of seconds to wait for shutdown to complete + # + # @return [Boolean] `true` if shutdown complete or false on `timeout` + + # @!macro executor_service_method_running_question + # + # Is the executor running? + # + # @return [Boolean] `true` when running, `false` when shutting down or shutdown + + # @!macro executor_service_method_shuttingdown_question + # + # Is the executor shuttingdown? + # + # @return [Boolean] `true` when not running and not shutdown, else `false` + + # @!macro executor_service_method_shutdown_question + # + # Is the executor shutdown? + # + # @return [Boolean] `true` when shutdown, `false` when shutting down or running + + # @!macro executor_service_method_auto_terminate_question + # + # Is the executor auto-terminate when the application exits? + # + # @return [Boolean] `true` when auto-termination is enabled else `false`. + + # @!macro executor_service_method_auto_terminate_setter + # + # Set the auto-terminate behavior for this executor. + # + # @param [Boolean] value The new auto-terminate value to set for this executor. + # + # @return [Boolean] `true` when auto-termination is enabled else `false`. + + ################################################################### + + # @!macro abstract_executor_service_public_api + # + # @!macro executor_service_public_api + # + # @!attribute [r] fallback_policy + # @!macro executor_service_attr_reader_fallback_policy + # + # @!method shutdown + # @!macro executor_service_method_shutdown + # + # @!method kill + # @!macro executor_service_method_kill + # + # @!method wait_for_termination(timeout = nil) + # @!macro executor_service_method_wait_for_termination + # + # @!method running? + # @!macro executor_service_method_running_question + # + # @!method shuttingdown? + # @!macro executor_service_method_shuttingdown_question + # + # @!method shutdown? + # @!macro executor_service_method_shutdown_question + # + # @!method auto_terminate? + # @!macro executor_service_method_auto_terminate_question + # + # @!method auto_terminate=(value) + # @!macro executor_service_method_auto_terminate_setter + + ################################################################### + + # @!macro executor_service_public_api + # @!visibility private + module ExecutorService + include Concern::Logging + + # @!macro executor_service_method_post + def post(*args, &task) + raise NotImplementedError + end + + # @!macro executor_service_method_left_shift + def <<(task) + post(&task) + self + end + + # @!macro executor_service_method_can_overflow_question + # + # @note Always returns `false` + def can_overflow? + false + end + + # @!macro executor_service_method_serialized_question + # + # @note Always returns `false` + def serialized? + false + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/fixed_thread_pool.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/fixed_thread_pool.rb new file mode 100644 index 0000000000..c9e03dade7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/fixed_thread_pool.rb @@ -0,0 +1,206 @@ +require 'concurrent/utility/engine' +require 'concurrent/executor/thread_pool_executor' + +module Concurrent + + # @!macro thread_pool_executor_constant_default_max_pool_size + # Default maximum number of threads that will be created in the pool. + + # @!macro thread_pool_executor_constant_default_min_pool_size + # Default minimum number of threads that will be retained in the pool. + + # @!macro thread_pool_executor_constant_default_max_queue_size + # Default maximum number of tasks that may be added to the task queue. + + # @!macro thread_pool_executor_constant_default_thread_timeout + # Default maximum number of seconds a thread in the pool may remain idle + # before being reclaimed. + + # @!macro thread_pool_executor_attr_reader_max_length + # The maximum number of threads that may be created in the pool. + # @return [Integer] The maximum number of threads that may be created in the pool. + + # @!macro thread_pool_executor_attr_reader_min_length + # The minimum number of threads that may be retained in the pool. + # @return [Integer] The minimum number of threads that may be retained in the pool. + + # @!macro thread_pool_executor_attr_reader_largest_length + # The largest number of threads that have been created in the pool since construction. + # @return [Integer] The largest number of threads that have been created in the pool since construction. + + # @!macro thread_pool_executor_attr_reader_scheduled_task_count + # The number of tasks that have been scheduled for execution on the pool since construction. + # @return [Integer] The number of tasks that have been scheduled for execution on the pool since construction. + + # @!macro thread_pool_executor_attr_reader_completed_task_count + # The number of tasks that have been completed by the pool since construction. + # @return [Integer] The number of tasks that have been completed by the pool since construction. + + # @!macro thread_pool_executor_attr_reader_idletime + # The number of seconds that a thread may be idle before being reclaimed. + # @return [Integer] The number of seconds that a thread may be idle before being reclaimed. + + # @!macro thread_pool_executor_attr_reader_max_queue + # The maximum number of tasks that may be waiting in the work queue at any one time. + # When the queue size reaches `max_queue` subsequent tasks will be rejected in + # accordance with the configured `fallback_policy`. + # + # @return [Integer] The maximum number of tasks that may be waiting in the work queue at any one time. + # When the queue size reaches `max_queue` subsequent tasks will be rejected in + # accordance with the configured `fallback_policy`. + + # @!macro thread_pool_executor_attr_reader_length + # The number of threads currently in the pool. + # @return [Integer] The number of threads currently in the pool. + + # @!macro thread_pool_executor_attr_reader_queue_length + # The number of tasks in the queue awaiting execution. + # @return [Integer] The number of tasks in the queue awaiting execution. + + # @!macro thread_pool_executor_attr_reader_remaining_capacity + # Number of tasks that may be enqueued before reaching `max_queue` and rejecting + # new tasks. A value of -1 indicates that the queue may grow without bound. + # + # @return [Integer] Number of tasks that may be enqueued before reaching `max_queue` and rejecting + # new tasks. A value of -1 indicates that the queue may grow without bound. + + + + + + # @!macro thread_pool_executor_public_api + # + # @!macro abstract_executor_service_public_api + # + # @!attribute [r] max_length + # @!macro thread_pool_executor_attr_reader_max_length + # + # @!attribute [r] min_length + # @!macro thread_pool_executor_attr_reader_min_length + # + # @!attribute [r] largest_length + # @!macro thread_pool_executor_attr_reader_largest_length + # + # @!attribute [r] scheduled_task_count + # @!macro thread_pool_executor_attr_reader_scheduled_task_count + # + # @!attribute [r] completed_task_count + # @!macro thread_pool_executor_attr_reader_completed_task_count + # + # @!attribute [r] idletime + # @!macro thread_pool_executor_attr_reader_idletime + # + # @!attribute [r] max_queue + # @!macro thread_pool_executor_attr_reader_max_queue + # + # @!attribute [r] length + # @!macro thread_pool_executor_attr_reader_length + # + # @!attribute [r] queue_length + # @!macro thread_pool_executor_attr_reader_queue_length + # + # @!attribute [r] remaining_capacity + # @!macro thread_pool_executor_attr_reader_remaining_capacity + # + # @!method can_overflow? + # @!macro executor_service_method_can_overflow_question + + + + + # @!macro thread_pool_options + # + # **Thread Pool Options** + # + # Thread pools support several configuration options: + # + # * `idletime`: The number of seconds that a thread may be idle before being reclaimed. + # * `max_queue`: The maximum number of tasks that may be waiting in the work queue at + # any one time. When the queue size reaches `max_queue` and no new threads can be created, + # subsequent tasks will be rejected in accordance with the configured `fallback_policy`. + # * `auto_terminate`: When true (default) an `at_exit` handler will be registered which + # will stop the thread pool when the application exits. See below for more information + # on shutting down thread pools. + # * `fallback_policy`: The policy defining how rejected tasks are handled. + # + # Three fallback policies are supported: + # + # * `:abort`: Raise a `RejectedExecutionError` exception and discard the task. + # * `:discard`: Discard the task and return false. + # * `:caller_runs`: Execute the task on the calling thread. + # + # **Shutting Down Thread Pools** + # + # Killing a thread pool while tasks are still being processed, either by calling + # the `#kill` method or at application exit, will have unpredictable results. There + # is no way for the thread pool to know what resources are being used by the + # in-progress tasks. When those tasks are killed the impact on those resources + # cannot be predicted. The *best* practice is to explicitly shutdown all thread + # pools using the provided methods: + # + # * Call `#shutdown` to initiate an orderly termination of all in-progress tasks + # * Call `#wait_for_termination` with an appropriate timeout interval an allow + # the orderly shutdown to complete + # * Call `#kill` *only when* the thread pool fails to shutdown in the allotted time + # + # On some runtime platforms (most notably the JVM) the application will not + # exit until all thread pools have been shutdown. To prevent applications from + # "hanging" on exit all thread pools include an `at_exit` handler that will + # stop the thread pool when the application exits. This handler uses a brute + # force method to stop the pool and makes no guarantees regarding resources being + # used by any tasks still running. Registration of this `at_exit` handler can be + # prevented by setting the thread pool's constructor `:auto_terminate` option to + # `false` when the thread pool is created. All thread pools support this option. + # + # ```ruby + # pool1 = Concurrent::FixedThreadPool.new(5) # an `at_exit` handler will be registered + # pool2 = Concurrent::FixedThreadPool.new(5, auto_terminate: false) # prevent `at_exit` handler registration + # ``` + # + # @note Failure to properly shutdown a thread pool can lead to unpredictable results. + # Please read *Shutting Down Thread Pools* for more information. + # + # @see http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html Java Tutorials: Thread Pools + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html Java Executors class + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html Java ExecutorService interface + # @see http://ruby-doc.org//core-2.2.0/Kernel.html#method-i-at_exit Kernel#at_exit + + + + + + # @!macro fixed_thread_pool + # + # A thread pool that reuses a fixed number of threads operating off an unbounded queue. + # At any point, at most `num_threads` will be active processing tasks. When all threads are busy new + # tasks `#post` to the thread pool are enqueued until a thread becomes available. + # Should a thread crash for any reason the thread will immediately be removed + # from the pool and replaced. + # + # The API and behavior of this class are based on Java's `FixedThreadPool` + # + # @!macro thread_pool_options + class FixedThreadPool < ThreadPoolExecutor + + # @!macro fixed_thread_pool_method_initialize + # + # Create a new thread pool. + # + # @param [Integer] num_threads the number of threads to allocate + # @param [Hash] opts the options defining pool behavior. + # @option opts [Symbol] :fallback_policy (`:abort`) the fallback policy + # + # @raise [ArgumentError] if `num_threads` is less than or equal to zero + # @raise [ArgumentError] if `fallback_policy` is not a known policy + # + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool-int- + def initialize(num_threads, opts = {}) + raise ArgumentError.new('number of threads must be greater than zero') if num_threads.to_i < 1 + defaults = { max_queue: DEFAULT_MAX_QUEUE_SIZE, + idletime: DEFAULT_THREAD_IDLETIMEOUT } + overrides = { min_threads: num_threads, + max_threads: num_threads } + super(defaults.merge(opts).merge(overrides)) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/immediate_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/immediate_executor.rb new file mode 100644 index 0000000000..282df7a059 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/immediate_executor.rb @@ -0,0 +1,66 @@ +require 'concurrent/atomic/event' +require 'concurrent/executor/abstract_executor_service' +require 'concurrent/executor/serial_executor_service' + +module Concurrent + + # An executor service which runs all operations on the current thread, + # blocking as necessary. Operations are performed in the order they are + # received and no two operations can be performed simultaneously. + # + # This executor service exists mainly for testing an debugging. When used + # it immediately runs every `#post` operation on the current thread, blocking + # that thread until the operation is complete. This can be very beneficial + # during testing because it makes all operations deterministic. + # + # @note Intended for use primarily in testing and debugging. + class ImmediateExecutor < AbstractExecutorService + include SerialExecutorService + + # Creates a new executor + def initialize + @stopped = Concurrent::Event.new + end + + # @!macro executor_service_method_post + def post(*args, &task) + raise ArgumentError.new('no block given') unless block_given? + return false unless running? + task.call(*args) + true + end + + # @!macro executor_service_method_left_shift + def <<(task) + post(&task) + self + end + + # @!macro executor_service_method_running_question + def running? + ! shutdown? + end + + # @!macro executor_service_method_shuttingdown_question + def shuttingdown? + false + end + + # @!macro executor_service_method_shutdown_question + def shutdown? + @stopped.set? + end + + # @!macro executor_service_method_shutdown + def shutdown + @stopped.set + true + end + alias_method :kill, :shutdown + + # @!macro executor_service_method_wait_for_termination + def wait_for_termination(timeout = nil) + @stopped.wait(timeout) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/indirect_immediate_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/indirect_immediate_executor.rb new file mode 100644 index 0000000000..4f9769fa3f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/indirect_immediate_executor.rb @@ -0,0 +1,44 @@ +require 'concurrent/executor/immediate_executor' +require 'concurrent/executor/simple_executor_service' + +module Concurrent + # An executor service which runs all operations on a new thread, blocking + # until it completes. Operations are performed in the order they are received + # and no two operations can be performed simultaneously. + # + # This executor service exists mainly for testing an debugging. When used it + # immediately runs every `#post` operation on a new thread, blocking the + # current thread until the operation is complete. This is similar to how the + # ImmediateExecutor works, but the operation has the full stack of the new + # thread at its disposal. This can be helpful when the operations will spawn + # more operations on the same executor and so on - such a situation might + # overflow the single stack in case of an ImmediateExecutor, which is + # inconsistent with how it would behave for a threaded executor. + # + # @note Intended for use primarily in testing and debugging. + class IndirectImmediateExecutor < ImmediateExecutor + # Creates a new executor + def initialize + super + @internal_executor = SimpleExecutorService.new + end + + # @!macro executor_service_method_post + def post(*args, &task) + raise ArgumentError.new("no block given") unless block_given? + return false unless running? + + event = Concurrent::Event.new + @internal_executor.post do + begin + task.call(*args) + ensure + event.set + end + end + event.wait + + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_executor_service.rb new file mode 100644 index 0000000000..113e0bce16 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_executor_service.rb @@ -0,0 +1,91 @@ +if Concurrent.on_jruby? + + require 'concurrent/errors' + require 'concurrent/utility/engine' + require 'concurrent/executor/abstract_executor_service' + + module Concurrent + + # @!macro abstract_executor_service_public_api + # @!visibility private + class JavaExecutorService < AbstractExecutorService + java_import 'java.lang.Runnable' + + FALLBACK_POLICY_CLASSES = { + abort: java.util.concurrent.ThreadPoolExecutor::AbortPolicy, + discard: java.util.concurrent.ThreadPoolExecutor::DiscardPolicy, + caller_runs: java.util.concurrent.ThreadPoolExecutor::CallerRunsPolicy + }.freeze + private_constant :FALLBACK_POLICY_CLASSES + + def initialize(*args, &block) + super + end + + def post(*args, &task) + raise ArgumentError.new('no block given') unless block_given? + return handle_fallback(*args, &task) unless running? + @executor.submit Job.new(args, task) + true + rescue Java::JavaUtilConcurrent::RejectedExecutionException + raise RejectedExecutionError + end + + def wait_for_termination(timeout = nil) + if timeout.nil? + ok = @executor.awaitTermination(60, java.util.concurrent.TimeUnit::SECONDS) until ok + true + else + @executor.awaitTermination(1000 * timeout, java.util.concurrent.TimeUnit::MILLISECONDS) + end + end + + def shutdown + synchronize do + self.ns_auto_terminate = false + @executor.shutdown + nil + end + end + + def kill + synchronize do + self.ns_auto_terminate = false + @executor.shutdownNow + nil + end + end + + private + + def ns_running? + !(ns_shuttingdown? || ns_shutdown?) + end + + def ns_shuttingdown? + if @executor.respond_to? :isTerminating + @executor.isTerminating + else + false + end + end + + def ns_shutdown? + @executor.isShutdown || @executor.isTerminated + end + + class Job + include Runnable + def initialize(args, block) + @args = args + @block = block + end + + def run + @block.call(*@args) + end + end + private_constant :Job + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_single_thread_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_single_thread_executor.rb new file mode 100644 index 0000000000..1cf59b0659 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_single_thread_executor.rb @@ -0,0 +1,29 @@ +if Concurrent.on_jruby? + + require 'concurrent/executor/java_executor_service' + require 'concurrent/executor/serial_executor_service' + + module Concurrent + + # @!macro single_thread_executor + # @!macro abstract_executor_service_public_api + # @!visibility private + class JavaSingleThreadExecutor < JavaExecutorService + include SerialExecutorService + + # @!macro single_thread_executor_method_initialize + def initialize(opts = {}) + super(opts) + end + + private + + def ns_initialize(opts) + @executor = java.util.concurrent.Executors.newSingleThreadExecutor + @fallback_policy = opts.fetch(:fallback_policy, :discard) + raise ArgumentError.new("#{@fallback_policy} is not a valid fallback policy") unless FALLBACK_POLICY_CLASSES.keys.include?(@fallback_policy) + self.auto_terminate = opts.fetch(:auto_terminate, true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_thread_pool_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_thread_pool_executor.rb new file mode 100644 index 0000000000..6308e4f4d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/java_thread_pool_executor.rb @@ -0,0 +1,123 @@ +if Concurrent.on_jruby? + + require 'concurrent/executor/java_executor_service' + + module Concurrent + + # @!macro thread_pool_executor + # @!macro thread_pool_options + # @!visibility private + class JavaThreadPoolExecutor < JavaExecutorService + + # @!macro thread_pool_executor_constant_default_max_pool_size + DEFAULT_MAX_POOL_SIZE = java.lang.Integer::MAX_VALUE # 2147483647 + + # @!macro thread_pool_executor_constant_default_min_pool_size + DEFAULT_MIN_POOL_SIZE = 0 + + # @!macro thread_pool_executor_constant_default_max_queue_size + DEFAULT_MAX_QUEUE_SIZE = 0 + + # @!macro thread_pool_executor_constant_default_thread_timeout + DEFAULT_THREAD_IDLETIMEOUT = 60 + + # @!macro thread_pool_executor_attr_reader_max_length + attr_reader :max_length + + # @!macro thread_pool_executor_attr_reader_max_queue + attr_reader :max_queue + + # @!macro thread_pool_executor_method_initialize + def initialize(opts = {}) + super(opts) + end + + # @!macro executor_service_method_can_overflow_question + def can_overflow? + @max_queue != 0 + end + + # @!macro thread_pool_executor_attr_reader_min_length + def min_length + @executor.getCorePoolSize + end + + # @!macro thread_pool_executor_attr_reader_max_length + def max_length + @executor.getMaximumPoolSize + end + + # @!macro thread_pool_executor_attr_reader_length + def length + @executor.getPoolSize + end + + # @!macro thread_pool_executor_attr_reader_largest_length + def largest_length + @executor.getLargestPoolSize + end + + # @!macro thread_pool_executor_attr_reader_scheduled_task_count + def scheduled_task_count + @executor.getTaskCount + end + + # @!macro thread_pool_executor_attr_reader_completed_task_count + def completed_task_count + @executor.getCompletedTaskCount + end + + # @!macro thread_pool_executor_attr_reader_idletime + def idletime + @executor.getKeepAliveTime(java.util.concurrent.TimeUnit::SECONDS) + end + + # @!macro thread_pool_executor_attr_reader_queue_length + def queue_length + @executor.getQueue.size + end + + # @!macro thread_pool_executor_attr_reader_remaining_capacity + def remaining_capacity + @max_queue == 0 ? -1 : @executor.getQueue.remainingCapacity + end + + # @!macro executor_service_method_running_question + def running? + super && !@executor.isTerminating + end + + private + + def ns_initialize(opts) + min_length = opts.fetch(:min_threads, DEFAULT_MIN_POOL_SIZE).to_i + max_length = opts.fetch(:max_threads, DEFAULT_MAX_POOL_SIZE).to_i + idletime = opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT).to_i + @max_queue = opts.fetch(:max_queue, DEFAULT_MAX_QUEUE_SIZE).to_i + @fallback_policy = opts.fetch(:fallback_policy, :abort) + + raise ArgumentError.new("`max_threads` cannot be less than #{DEFAULT_MIN_POOL_SIZE}") if max_length < DEFAULT_MIN_POOL_SIZE + raise ArgumentError.new("`max_threads` cannot be greater than #{DEFAULT_MAX_POOL_SIZE}") if max_length > DEFAULT_MAX_POOL_SIZE + raise ArgumentError.new("`min_threads` cannot be less than #{DEFAULT_MIN_POOL_SIZE}") if min_length < DEFAULT_MIN_POOL_SIZE + raise ArgumentError.new("`min_threads` cannot be more than `max_threads`") if min_length > max_length + raise ArgumentError.new("#{fallback_policy} is not a valid fallback policy") unless FALLBACK_POLICY_CLASSES.include?(@fallback_policy) + + if @max_queue == 0 + queue = java.util.concurrent.LinkedBlockingQueue.new + else + queue = java.util.concurrent.LinkedBlockingQueue.new(@max_queue) + end + + @executor = java.util.concurrent.ThreadPoolExecutor.new( + min_length, + max_length, + idletime, + java.util.concurrent.TimeUnit::SECONDS, + queue, + FALLBACK_POLICY_CLASSES[@fallback_policy].new) + + self.auto_terminate = opts.fetch(:auto_terminate, true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_executor_service.rb new file mode 100644 index 0000000000..7b2ee73775 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_executor_service.rb @@ -0,0 +1,78 @@ +require 'concurrent/executor/abstract_executor_service' +require 'concurrent/atomic/event' + +module Concurrent + + # @!macro abstract_executor_service_public_api + # @!visibility private + class RubyExecutorService < AbstractExecutorService + safe_initialization! + + def initialize(*args, &block) + super + @StopEvent = Event.new + @StoppedEvent = Event.new + end + + def post(*args, &task) + raise ArgumentError.new('no block given') unless block_given? + synchronize do + # If the executor is shut down, reject this task + return handle_fallback(*args, &task) unless running? + ns_execute(*args, &task) + true + end + end + + def shutdown + synchronize do + break unless running? + self.ns_auto_terminate = false + stop_event.set + ns_shutdown_execution + end + true + end + + def kill + synchronize do + break if shutdown? + self.ns_auto_terminate = false + stop_event.set + ns_kill_execution + stopped_event.set + end + true + end + + def wait_for_termination(timeout = nil) + stopped_event.wait(timeout) + end + + private + + def stop_event + @StopEvent + end + + def stopped_event + @StoppedEvent + end + + def ns_shutdown_execution + stopped_event.set + end + + def ns_running? + !stop_event.set? + end + + def ns_shuttingdown? + !(ns_running? || ns_shutdown?) + end + + def ns_shutdown? + stopped_event.set? + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_single_thread_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_single_thread_executor.rb new file mode 100644 index 0000000000..305a49e621 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_single_thread_executor.rb @@ -0,0 +1,22 @@ +require 'concurrent/executor/ruby_thread_pool_executor' + +module Concurrent + + # @!macro single_thread_executor + # @!macro abstract_executor_service_public_api + # @!visibility private + class RubySingleThreadExecutor < RubyThreadPoolExecutor + + # @!macro single_thread_executor_method_initialize + def initialize(opts = {}) + super( + min_threads: 1, + max_threads: 1, + max_queue: 0, + idletime: DEFAULT_THREAD_IDLETIMEOUT, + fallback_policy: opts.fetch(:fallback_policy, :discard), + auto_terminate: opts.fetch(:auto_terminate, true) + ) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_thread_pool_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_thread_pool_executor.rb new file mode 100644 index 0000000000..92fbd315f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/ruby_thread_pool_executor.rb @@ -0,0 +1,362 @@ +require 'thread' +require 'concurrent/atomic/event' +require 'concurrent/concern/logging' +require 'concurrent/executor/ruby_executor_service' +require 'concurrent/utility/monotonic_time' + +module Concurrent + + # @!macro thread_pool_executor + # @!macro thread_pool_options + # @!visibility private + class RubyThreadPoolExecutor < RubyExecutorService + + # @!macro thread_pool_executor_constant_default_max_pool_size + DEFAULT_MAX_POOL_SIZE = 2_147_483_647 # java.lang.Integer::MAX_VALUE + + # @!macro thread_pool_executor_constant_default_min_pool_size + DEFAULT_MIN_POOL_SIZE = 0 + + # @!macro thread_pool_executor_constant_default_max_queue_size + DEFAULT_MAX_QUEUE_SIZE = 0 + + # @!macro thread_pool_executor_constant_default_thread_timeout + DEFAULT_THREAD_IDLETIMEOUT = 60 + + # @!macro thread_pool_executor_attr_reader_max_length + attr_reader :max_length + + # @!macro thread_pool_executor_attr_reader_min_length + attr_reader :min_length + + # @!macro thread_pool_executor_attr_reader_idletime + attr_reader :idletime + + # @!macro thread_pool_executor_attr_reader_max_queue + attr_reader :max_queue + + # @!macro thread_pool_executor_method_initialize + def initialize(opts = {}) + super(opts) + end + + # @!macro thread_pool_executor_attr_reader_largest_length + def largest_length + synchronize { @largest_length } + end + + # @!macro thread_pool_executor_attr_reader_scheduled_task_count + def scheduled_task_count + synchronize { @scheduled_task_count } + end + + # @!macro thread_pool_executor_attr_reader_completed_task_count + def completed_task_count + synchronize { @completed_task_count } + end + + # @!macro executor_service_method_can_overflow_question + def can_overflow? + synchronize { ns_limited_queue? } + end + + # @!macro thread_pool_executor_attr_reader_length + def length + synchronize { @pool.length } + end + + # @!macro thread_pool_executor_attr_reader_queue_length + def queue_length + synchronize { @queue.length } + end + + # @!macro thread_pool_executor_attr_reader_remaining_capacity + def remaining_capacity + synchronize do + if ns_limited_queue? + @max_queue - @queue.length + else + -1 + end + end + end + + # @!visibility private + def remove_busy_worker(worker) + synchronize { ns_remove_busy_worker worker } + end + + # @!visibility private + def ready_worker(worker) + synchronize { ns_ready_worker worker } + end + + # @!visibility private + def worker_not_old_enough(worker) + synchronize { ns_worker_not_old_enough worker } + end + + # @!visibility private + def worker_died(worker) + synchronize { ns_worker_died worker } + end + + # @!visibility private + def worker_task_completed + synchronize { @completed_task_count += 1 } + end + + private + + # @!visibility private + def ns_initialize(opts) + @min_length = opts.fetch(:min_threads, DEFAULT_MIN_POOL_SIZE).to_i + @max_length = opts.fetch(:max_threads, DEFAULT_MAX_POOL_SIZE).to_i + @idletime = opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT).to_i + @max_queue = opts.fetch(:max_queue, DEFAULT_MAX_QUEUE_SIZE).to_i + @fallback_policy = opts.fetch(:fallback_policy, :abort) + raise ArgumentError.new("#{@fallback_policy} is not a valid fallback policy") unless FALLBACK_POLICIES.include?(@fallback_policy) + + raise ArgumentError.new("`max_threads` cannot be less than #{DEFAULT_MIN_POOL_SIZE}") if @max_length < DEFAULT_MIN_POOL_SIZE + raise ArgumentError.new("`max_threads` cannot be greater than #{DEFAULT_MAX_POOL_SIZE}") if @max_length > DEFAULT_MAX_POOL_SIZE + raise ArgumentError.new("`min_threads` cannot be less than #{DEFAULT_MIN_POOL_SIZE}") if @min_length < DEFAULT_MIN_POOL_SIZE + raise ArgumentError.new("`min_threads` cannot be more than `max_threads`") if min_length > max_length + + self.auto_terminate = opts.fetch(:auto_terminate, true) + + @pool = [] # all workers + @ready = [] # used as a stash (most idle worker is at the start) + @queue = [] # used as queue + # @ready or @queue is empty at all times + @scheduled_task_count = 0 + @completed_task_count = 0 + @largest_length = 0 + @ruby_pid = $$ # detects if Ruby has forked + + @gc_interval = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented + @next_gc_time = Concurrent.monotonic_time + @gc_interval + end + + # @!visibility private + def ns_limited_queue? + @max_queue != 0 + end + + # @!visibility private + def ns_execute(*args, &task) + ns_reset_if_forked + + if ns_assign_worker(*args, &task) || ns_enqueue(*args, &task) + @scheduled_task_count += 1 + else + handle_fallback(*args, &task) + end + + ns_prune_pool if @next_gc_time < Concurrent.monotonic_time + end + + # @!visibility private + def ns_shutdown_execution + ns_reset_if_forked + + if @pool.empty? + # nothing to do + stopped_event.set + end + + if @queue.empty? + # no more tasks will be accepted, just stop all workers + @pool.each(&:stop) + end + end + + # @!visibility private + def ns_kill_execution + # TODO log out unprocessed tasks in queue + # TODO try to shutdown first? + @pool.each(&:kill) + @pool.clear + @ready.clear + end + + # tries to assign task to a worker, tries to get one from @ready or to create new one + # @return [true, false] if task is assigned to a worker + # + # @!visibility private + def ns_assign_worker(*args, &task) + # keep growing if the pool is not at the minimum yet + worker = (@ready.pop if @pool.size >= @min_length) || ns_add_busy_worker + if worker + worker << [task, args] + true + else + false + end + rescue ThreadError + # Raised when the operating system refuses to create the new thread + return false + end + + # tries to enqueue task + # @return [true, false] if enqueued + # + # @!visibility private + def ns_enqueue(*args, &task) + if !ns_limited_queue? || @queue.size < @max_queue + @queue << [task, args] + true + else + false + end + end + + # @!visibility private + def ns_worker_died(worker) + ns_remove_busy_worker worker + replacement_worker = ns_add_busy_worker + ns_ready_worker replacement_worker, false if replacement_worker + end + + # creates new worker which has to receive work to do after it's added + # @return [nil, Worker] nil of max capacity is reached + # + # @!visibility private + def ns_add_busy_worker + return if @pool.size >= @max_length + + @pool << (worker = Worker.new(self)) + @largest_length = @pool.length if @pool.length > @largest_length + worker + end + + # handle ready worker, giving it new job or assigning back to @ready + # + # @!visibility private + def ns_ready_worker(worker, success = true) + task_and_args = @queue.shift + if task_and_args + worker << task_and_args + else + # stop workers when !running?, do not return them to @ready + if running? + @ready.push(worker) + else + worker.stop + end + end + end + + # returns back worker to @ready which was not idle for enough time + # + # @!visibility private + def ns_worker_not_old_enough(worker) + # let's put workers coming from idle_test back to the start (as the oldest worker) + @ready.unshift(worker) + true + end + + # removes a worker which is not in not tracked in @ready + # + # @!visibility private + def ns_remove_busy_worker(worker) + @pool.delete(worker) + stopped_event.set if @pool.empty? && !running? + true + end + + # try oldest worker if it is idle for enough time, it's returned back at the start + # + # @!visibility private + def ns_prune_pool + return if @pool.size <= @min_length + + last_used = @ready.shift + last_used << :idle_test if last_used + + @next_gc_time = Concurrent.monotonic_time + @gc_interval + end + + def ns_reset_if_forked + if $$ != @ruby_pid + @queue.clear + @ready.clear + @pool.clear + @scheduled_task_count = 0 + @completed_task_count = 0 + @largest_length = 0 + @ruby_pid = $$ + end + end + + # @!visibility private + class Worker + include Concern::Logging + + def initialize(pool) + # instance variables accessed only under pool's lock so no need to sync here again + @queue = Queue.new + @pool = pool + @thread = create_worker @queue, pool, pool.idletime + end + + def <<(message) + @queue << message + end + + def stop + @queue << :stop + end + + def kill + @thread.kill + end + + private + + def create_worker(queue, pool, idletime) + Thread.new(queue, pool, idletime) do |my_queue, my_pool, my_idletime| + last_message = Concurrent.monotonic_time + catch(:stop) do + loop do + + case message = my_queue.pop + when :idle_test + if (Concurrent.monotonic_time - last_message) > my_idletime + my_pool.remove_busy_worker(self) + throw :stop + else + my_pool.worker_not_old_enough(self) + end + + when :stop + my_pool.remove_busy_worker(self) + throw :stop + + else + task, args = message + run_task my_pool, task, args + last_message = Concurrent.monotonic_time + + my_pool.ready_worker(self) + end + end + end + end + end + + def run_task(pool, task, args) + task.call(*args) + pool.worker_task_completed + rescue => ex + # let it fail + log DEBUG, ex + rescue Exception => ex + log ERROR, ex + pool.worker_died(self) + throw :stop + end + end + + private_constant :Worker + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/safe_task_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/safe_task_executor.rb new file mode 100644 index 0000000000..414aa641f5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/safe_task_executor.rb @@ -0,0 +1,35 @@ +require 'concurrent/synchronization' + +module Concurrent + + # A simple utility class that executes a callable and returns and array of three elements: + # success - indicating if the callable has been executed without errors + # value - filled by the callable result if it has been executed without errors, nil otherwise + # reason - the error risen by the callable if it has been executed with errors, nil otherwise + class SafeTaskExecutor < Synchronization::LockableObject + + def initialize(task, opts = {}) + @task = task + @exception_class = opts.fetch(:rescue_exception, false) ? Exception : StandardError + super() # ensures visibility + end + + # @return [Array] + def execute(*args) + synchronize do + success = false + value = reason = nil + + begin + value = @task.call(*args) + success = true + rescue @exception_class => ex + reason = ex + success = false + end + + [success, value, reason] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serial_executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serial_executor_service.rb new file mode 100644 index 0000000000..f1c38ecfa9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serial_executor_service.rb @@ -0,0 +1,34 @@ +require 'concurrent/executor/executor_service' + +module Concurrent + + # Indicates that the including `ExecutorService` guarantees + # that all operations will occur in the order they are post and that no + # two operations may occur simultaneously. This module provides no + # functionality and provides no guarantees. That is the responsibility + # of the including class. This module exists solely to allow the including + # object to be interrogated for its serialization status. + # + # @example + # class Foo + # include Concurrent::SerialExecutor + # end + # + # foo = Foo.new + # + # foo.is_a? Concurrent::ExecutorService #=> true + # foo.is_a? Concurrent::SerialExecutor #=> true + # foo.serialized? #=> true + # + # @!visibility private + module SerialExecutorService + include ExecutorService + + # @!macro executor_service_method_serialized_question + # + # @note Always returns `true` + def serialized? + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution.rb new file mode 100644 index 0000000000..d314e90616 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution.rb @@ -0,0 +1,107 @@ +require 'concurrent/errors' +require 'concurrent/concern/logging' +require 'concurrent/synchronization' + +module Concurrent + + # Ensures passed jobs in a serialized order never running at the same time. + class SerializedExecution < Synchronization::LockableObject + include Concern::Logging + + def initialize() + super() + synchronize { ns_initialize } + end + + Job = Struct.new(:executor, :args, :block) do + def call + block.call(*args) + end + end + + # Submit a task to the executor for asynchronous processing. + # + # @param [Executor] executor to be used for this job + # + # @param [Array] args zero or more arguments to be passed to the task + # + # @yield the asynchronous task to perform + # + # @return [Boolean] `true` if the task is queued, `false` if the executor + # is not running + # + # @raise [ArgumentError] if no task is given + def post(executor, *args, &task) + posts [[executor, args, task]] + true + end + + # As {#post} but allows to submit multiple tasks at once, it's guaranteed that they will not + # be interleaved by other tasks. + # + # @param [Array, Proc)>] posts array of triplets where + # first is a {ExecutorService}, second is array of args for task, third is a task (Proc) + def posts(posts) + # if can_overflow? + # raise ArgumentError, 'SerializedExecution does not support thread-pools which can overflow' + # end + + return nil if posts.empty? + + jobs = posts.map { |executor, args, task| Job.new executor, args, task } + + job_to_post = synchronize do + if @being_executed + @stash.push(*jobs) + nil + else + @being_executed = true + @stash.push(*jobs[1..-1]) + jobs.first + end + end + + call_job job_to_post if job_to_post + true + end + + private + + def ns_initialize + @being_executed = false + @stash = [] + end + + def call_job(job) + did_it_run = begin + job.executor.post { work(job) } + true + rescue RejectedExecutionError => ex + false + end + + # TODO not the best idea to run it myself + unless did_it_run + begin + work job + rescue => ex + # let it fail + log DEBUG, ex + end + end + end + + # ensures next job is executed if any is stashed + def work(job) + job.call + ensure + synchronize do + job = @stash.shift || (@being_executed = false) + end + + # TODO maybe be able to tell caching pool to just enqueue this job, because the current one end at the end + # of this block + call_job job if job + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution_delegator.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution_delegator.rb new file mode 100644 index 0000000000..8197781b52 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/serialized_execution_delegator.rb @@ -0,0 +1,28 @@ +require 'delegate' +require 'concurrent/executor/serial_executor_service' +require 'concurrent/executor/serialized_execution' + +module Concurrent + + # A wrapper/delegator for any `ExecutorService` that + # guarantees serialized execution of tasks. + # + # @see [SimpleDelegator](http://www.ruby-doc.org/stdlib-2.1.2/libdoc/delegate/rdoc/SimpleDelegator.html) + # @see Concurrent::SerializedExecution + class SerializedExecutionDelegator < SimpleDelegator + include SerialExecutorService + + def initialize(executor) + @executor = executor + @serializer = SerializedExecution.new + super(executor) + end + + # @!macro executor_service_method_post + def post(*args, &task) + raise ArgumentError.new('no block given') unless block_given? + return false unless running? + @serializer.post(@executor, *args, &task) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/simple_executor_service.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/simple_executor_service.rb new file mode 100644 index 0000000000..b278dbf5e9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/simple_executor_service.rb @@ -0,0 +1,100 @@ +require 'concurrent/atomics' +require 'concurrent/executor/executor_service' + +module Concurrent + + # An executor service in which every operation spawns a new, + # independently operating thread. + # + # This is perhaps the most inefficient executor service in this + # library. It exists mainly for testing an debugging. Thread creation + # and management is expensive in Ruby and this executor performs no + # resource pooling. This can be very beneficial during testing and + # debugging because it decouples the using code from the underlying + # executor implementation. In production this executor will likely + # lead to suboptimal performance. + # + # @note Intended for use primarily in testing and debugging. + class SimpleExecutorService < RubyExecutorService + + # @!macro executor_service_method_post + def self.post(*args) + raise ArgumentError.new('no block given') unless block_given? + Thread.new(*args) do + Thread.current.abort_on_exception = false + yield(*args) + end + true + end + + # @!macro executor_service_method_left_shift + def self.<<(task) + post(&task) + self + end + + # @!macro executor_service_method_post + def post(*args, &task) + raise ArgumentError.new('no block given') unless block_given? + return false unless running? + @count.increment + Thread.new(*args) do + Thread.current.abort_on_exception = false + begin + yield(*args) + ensure + @count.decrement + @stopped.set if @running.false? && @count.value == 0 + end + end + end + + # @!macro executor_service_method_left_shift + def <<(task) + post(&task) + self + end + + # @!macro executor_service_method_running_question + def running? + @running.true? + end + + # @!macro executor_service_method_shuttingdown_question + def shuttingdown? + @running.false? && ! @stopped.set? + end + + # @!macro executor_service_method_shutdown_question + def shutdown? + @stopped.set? + end + + # @!macro executor_service_method_shutdown + def shutdown + @running.make_false + @stopped.set if @count.value == 0 + true + end + + # @!macro executor_service_method_kill + def kill + @running.make_false + @stopped.set + true + end + + # @!macro executor_service_method_wait_for_termination + def wait_for_termination(timeout = nil) + @stopped.wait(timeout) + end + + private + + def ns_initialize + @running = Concurrent::AtomicBoolean.new(true) + @stopped = Concurrent::Event.new + @count = Concurrent::AtomicFixnum.new(0) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/single_thread_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/single_thread_executor.rb new file mode 100644 index 0000000000..797cb1899e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/single_thread_executor.rb @@ -0,0 +1,56 @@ +require 'concurrent/executor/ruby_single_thread_executor' + +module Concurrent + + if Concurrent.on_jruby? + require 'concurrent/executor/java_single_thread_executor' + end + + SingleThreadExecutorImplementation = case + when Concurrent.on_jruby? + JavaSingleThreadExecutor + else + RubySingleThreadExecutor + end + private_constant :SingleThreadExecutorImplementation + + # @!macro single_thread_executor + # + # A thread pool with a single thread an unlimited queue. Should the thread + # die for any reason it will be removed and replaced, thus ensuring that + # the executor will always remain viable and available to process jobs. + # + # A common pattern for background processing is to create a single thread + # on which an infinite loop is run. The thread's loop blocks on an input + # source (perhaps blocking I/O or a queue) and processes each input as it + # is received. This pattern has several issues. The thread itself is highly + # susceptible to errors during processing. Also, the thread itself must be + # constantly monitored and restarted should it die. `SingleThreadExecutor` + # encapsulates all these bahaviors. The task processor is highly resilient + # to errors from within tasks. Also, should the thread die it will + # automatically be restarted. + # + # The API and behavior of this class are based on Java's `SingleThreadExecutor`. + # + # @!macro abstract_executor_service_public_api + class SingleThreadExecutor < SingleThreadExecutorImplementation + + # @!macro single_thread_executor_method_initialize + # + # Create a new thread pool. + # + # @option opts [Symbol] :fallback_policy (:discard) the policy for handling new + # tasks that are received when the queue size has reached + # `max_queue` or the executor has shut down + # + # @raise [ArgumentError] if `:fallback_policy` is not one of the values specified + # in `FALLBACK_POLICIES` + # + # @see http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html + # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html + + # @!method initialize(opts = {}) + # @!macro single_thread_executor_method_initialize + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/thread_pool_executor.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/thread_pool_executor.rb new file mode 100644 index 0000000000..72e1bae857 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/thread_pool_executor.rb @@ -0,0 +1,87 @@ +require 'concurrent/utility/engine' +require 'concurrent/executor/ruby_thread_pool_executor' + +module Concurrent + + if Concurrent.on_jruby? + require 'concurrent/executor/java_thread_pool_executor' + end + + ThreadPoolExecutorImplementation = case + when Concurrent.on_jruby? + JavaThreadPoolExecutor + else + RubyThreadPoolExecutor + end + private_constant :ThreadPoolExecutorImplementation + + # @!macro thread_pool_executor + # + # An abstraction composed of one or more threads and a task queue. Tasks + # (blocks or `proc` objects) are submitted to the pool and added to the queue. + # The threads in the pool remove the tasks and execute them in the order + # they were received. + # + # A `ThreadPoolExecutor` will automatically adjust the pool size according + # to the bounds set by `min-threads` and `max-threads`. When a new task is + # submitted and fewer than `min-threads` threads are running, a new thread + # is created to handle the request, even if other worker threads are idle. + # If there are more than `min-threads` but less than `max-threads` threads + # running, a new thread will be created only if the queue is full. + # + # Threads that are idle for too long will be garbage collected, down to the + # configured minimum options. Should a thread crash it, too, will be garbage collected. + # + # `ThreadPoolExecutor` is based on the Java class of the same name. From + # the official Java documentation; + # + # > Thread pools address two different problems: they usually provide + # > improved performance when executing large numbers of asynchronous tasks, + # > due to reduced per-task invocation overhead, and they provide a means + # > of bounding and managing the resources, including threads, consumed + # > when executing a collection of tasks. Each ThreadPoolExecutor also + # > maintains some basic statistics, such as the number of completed tasks. + # > + # > To be useful across a wide range of contexts, this class provides many + # > adjustable parameters and extensibility hooks. However, programmers are + # > urged to use the more convenient Executors factory methods + # > [CachedThreadPool] (unbounded thread pool, with automatic thread reclamation), + # > [FixedThreadPool] (fixed size thread pool) and [SingleThreadExecutor] (single + # > background thread), that preconfigure settings for the most common usage + # > scenarios. + # + # @!macro thread_pool_options + # + # @!macro thread_pool_executor_public_api + class ThreadPoolExecutor < ThreadPoolExecutorImplementation + + # @!macro thread_pool_executor_method_initialize + # + # Create a new thread pool. + # + # @param [Hash] opts the options which configure the thread pool. + # + # @option opts [Integer] :max_threads (DEFAULT_MAX_POOL_SIZE) the maximum + # number of threads to be created + # @option opts [Integer] :min_threads (DEFAULT_MIN_POOL_SIZE) When a new task is submitted + # and fewer than `min_threads` are running, a new thread is created + # @option opts [Integer] :idletime (DEFAULT_THREAD_IDLETIMEOUT) the maximum + # number of seconds a thread may be idle before being reclaimed + # @option opts [Integer] :max_queue (DEFAULT_MAX_QUEUE_SIZE) the maximum + # number of tasks allowed in the work queue at any one time; a value of + # zero means the queue may grow without bound + # @option opts [Symbol] :fallback_policy (:abort) the policy for handling new + # tasks that are received when the queue size has reached + # `max_queue` or the executor has shut down + # + # @raise [ArgumentError] if `:max_threads` is less than one + # @raise [ArgumentError] if `:min_threads` is less than zero + # @raise [ArgumentError] if `:fallback_policy` is not one of the values specified + # in `FALLBACK_POLICIES` + # + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html + + # @!method initialize(opts = {}) + # @!macro thread_pool_executor_method_initialize + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/timer_set.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/timer_set.rb new file mode 100644 index 0000000000..bd99ef601b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executor/timer_set.rb @@ -0,0 +1,175 @@ +require 'concurrent/scheduled_task' +require 'concurrent/atomic/event' +require 'concurrent/collection/non_concurrent_priority_queue' +require 'concurrent/executor/executor_service' +require 'concurrent/executor/single_thread_executor' + +require 'concurrent/options' + +module Concurrent + + # Executes a collection of tasks, each after a given delay. A master task + # monitors the set and schedules each task for execution at the appropriate + # time. Tasks are run on the global thread pool or on the supplied executor. + # Each task is represented as a `ScheduledTask`. + # + # @see Concurrent::ScheduledTask + # + # @!macro monotonic_clock_warning + class TimerSet < RubyExecutorService + + # Create a new set of timed tasks. + # + # @!macro executor_options + # + # @param [Hash] opts the options used to specify the executor on which to perform actions + # @option opts [Executor] :executor when set use the given `Executor` instance. + # Three special values are also supported: `:task` returns the global task pool, + # `:operation` returns the global operation pool, and `:immediate` returns a new + # `ImmediateExecutor` object. + def initialize(opts = {}) + super(opts) + end + + # Post a task to be execute run after a given delay (in seconds). If the + # delay is less than 1/100th of a second the task will be immediately post + # to the executor. + # + # @param [Float] delay the number of seconds to wait for before executing the task. + # @param [Array] args the arguments passed to the task on execution. + # + # @yield the task to be performed. + # + # @return [Concurrent::ScheduledTask, false] IVar representing the task if the post + # is successful; false after shutdown. + # + # @raise [ArgumentError] if the intended execution time is not in the future. + # @raise [ArgumentError] if no block is given. + def post(delay, *args, &task) + raise ArgumentError.new('no block given') unless block_given? + return false unless running? + opts = { + executor: @task_executor, + args: args, + timer_set: self + } + task = ScheduledTask.execute(delay, opts, &task) # may raise exception + task.unscheduled? ? false : task + end + + # Begin an immediate shutdown. In-progress tasks will be allowed to + # complete but enqueued tasks will be dismissed and no new tasks + # will be accepted. Has no additional effect if the thread pool is + # not running. + def kill + shutdown + end + + private :<< + + private + + # Initialize the object. + # + # @param [Hash] opts the options to create the object with. + # @!visibility private + def ns_initialize(opts) + @queue = Collection::NonConcurrentPriorityQueue.new(order: :min) + @task_executor = Options.executor_from_options(opts) || Concurrent.global_io_executor + @timer_executor = SingleThreadExecutor.new + @condition = Event.new + @ruby_pid = $$ # detects if Ruby has forked + self.auto_terminate = opts.fetch(:auto_terminate, true) + end + + # Post the task to the internal queue. + # + # @note This is intended as a callback method from ScheduledTask + # only. It is not intended to be used directly. Post a task + # by using the `SchedulesTask#execute` method. + # + # @!visibility private + def post_task(task) + synchronize{ ns_post_task(task) } + end + + # @!visibility private + def ns_post_task(task) + return false unless ns_running? + ns_reset_if_forked + if (task.initial_delay) <= 0.01 + task.executor.post{ task.process_task } + else + @queue.push(task) + # only post the process method when the queue is empty + @timer_executor.post(&method(:process_tasks)) if @queue.length == 1 + @condition.set + end + true + end + + # Remove the given task from the queue. + # + # @note This is intended as a callback method from `ScheduledTask` + # only. It is not intended to be used directly. Cancel a task + # by using the `ScheduledTask#cancel` method. + # + # @!visibility private + def remove_task(task) + synchronize{ @queue.delete(task) } + end + + # `ExecutorService` callback called during shutdown. + # + # @!visibility private + def ns_shutdown_execution + ns_reset_if_forked + @queue.clear + @timer_executor.kill + stopped_event.set + end + + def ns_reset_if_forked + if $$ != @ruby_pid + @queue.clear + @condition.reset + @ruby_pid = $$ + end + end + + # Run a loop and execute tasks in the scheduled order and at the approximate + # scheduled time. If no tasks remain the thread will exit gracefully so that + # garbage collection can occur. If there are no ready tasks it will sleep + # for up to 60 seconds waiting for the next scheduled task. + # + # @!visibility private + def process_tasks + loop do + task = synchronize { @condition.reset; @queue.peek } + break unless task + + now = Concurrent.monotonic_time + diff = task.schedule_time - now + + if diff <= 0 + # We need to remove the task from the queue before passing + # it to the executor, to avoid race conditions where we pass + # the peek'ed task to the executor and then pop a different + # one that's been added in the meantime. + # + # Note that there's no race condition between the peek and + # this pop - this pop could retrieve a different task from + # the peek, but that task would be due to fire now anyway + # (because @queue is a priority queue, and this thread is + # the only reader, so whatever timer is at the head of the + # queue now must have the same pop time, or a closer one, as + # when we peeked). + task = synchronize { @queue.pop } + task.executor.post{ task.process_task } + else + @condition.wait([diff, 60].min) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executors.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executors.rb new file mode 100644 index 0000000000..eb1972ce69 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/executors.rb @@ -0,0 +1,20 @@ +require 'concurrent/executor/abstract_executor_service' +require 'concurrent/executor/cached_thread_pool' +require 'concurrent/executor/executor_service' +require 'concurrent/executor/fixed_thread_pool' +require 'concurrent/executor/immediate_executor' +require 'concurrent/executor/indirect_immediate_executor' +require 'concurrent/executor/java_executor_service' +require 'concurrent/executor/java_single_thread_executor' +require 'concurrent/executor/java_thread_pool_executor' +require 'concurrent/executor/ruby_executor_service' +require 'concurrent/executor/ruby_single_thread_executor' +require 'concurrent/executor/ruby_thread_pool_executor' +require 'concurrent/executor/cached_thread_pool' +require 'concurrent/executor/safe_task_executor' +require 'concurrent/executor/serial_executor_service' +require 'concurrent/executor/serialized_execution' +require 'concurrent/executor/serialized_execution_delegator' +require 'concurrent/executor/single_thread_executor' +require 'concurrent/executor/thread_pool_executor' +require 'concurrent/executor/timer_set' diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/future.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/future.rb new file mode 100644 index 0000000000..1af182ecb2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/future.rb @@ -0,0 +1,141 @@ +require 'thread' +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/ivar' +require 'concurrent/executor/safe_task_executor' + +require 'concurrent/options' + +# TODO (pitr-ch 14-Mar-2017): deprecate, Future, Promise, etc. + + +module Concurrent + + # {include:file:docs-source/future.md} + # + # @!macro copy_options + # + # @see http://ruby-doc.org/stdlib-2.1.1/libdoc/observer/rdoc/Observable.html Ruby Observable module + # @see http://clojuredocs.org/clojure_core/clojure.core/future Clojure's future function + # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html java.util.concurrent.Future + class Future < IVar + + # Create a new `Future` in the `:unscheduled` state. + # + # @yield the asynchronous operation to perform + # + # @!macro executor_and_deref_options + # + # @option opts [object, Array] :args zero or more arguments to be passed the task + # block on execution + # + # @raise [ArgumentError] if no block is given + def initialize(opts = {}, &block) + raise ArgumentError.new('no block given') unless block_given? + super(NULL, opts.merge(__task_from_block__: block), &nil) + end + + # Execute an `:unscheduled` `Future`. Immediately sets the state to `:pending` and + # passes the block to a new thread/thread pool for eventual execution. + # Does nothing if the `Future` is in any state other than `:unscheduled`. + # + # @return [Future] a reference to `self` + # + # @example Instance and execute in separate steps + # future = Concurrent::Future.new{ sleep(1); 42 } + # future.state #=> :unscheduled + # future.execute + # future.state #=> :pending + # + # @example Instance and execute in one line + # future = Concurrent::Future.new{ sleep(1); 42 }.execute + # future.state #=> :pending + def execute + if compare_and_set_state(:pending, :unscheduled) + @executor.post{ safe_execute(@task, @args) } + self + end + end + + # Create a new `Future` object with the given block, execute it, and return the + # `:pending` object. + # + # @yield the asynchronous operation to perform + # + # @!macro executor_and_deref_options + # + # @option opts [object, Array] :args zero or more arguments to be passed the task + # block on execution + # + # @raise [ArgumentError] if no block is given + # + # @return [Future] the newly created `Future` in the `:pending` state + # + # @example + # future = Concurrent::Future.execute{ sleep(1); 42 } + # future.state #=> :pending + def self.execute(opts = {}, &block) + Future.new(opts, &block).execute + end + + # @!macro ivar_set_method + def set(value = NULL, &block) + check_for_block_or_value!(block_given?, value) + synchronize do + if @state != :unscheduled + raise MultipleAssignmentError + else + @task = block || Proc.new { value } + end + end + execute + end + + # Attempt to cancel the operation if it has not already processed. + # The operation can only be cancelled while still `pending`. It cannot + # be cancelled once it has begun processing or has completed. + # + # @return [Boolean] was the operation successfully cancelled. + def cancel + if compare_and_set_state(:cancelled, :pending) + complete(false, nil, CancelledOperationError.new) + true + else + false + end + end + + # Has the operation been successfully cancelled? + # + # @return [Boolean] + def cancelled? + state == :cancelled + end + + # Wait the given number of seconds for the operation to complete. + # On timeout attempt to cancel the operation. + # + # @param [Numeric] timeout the maximum time in seconds to wait. + # @return [Boolean] true if the operation completed before the timeout + # else false + def wait_or_cancel(timeout) + wait(timeout) + if complete? + true + else + cancel + false + end + end + + protected + + def ns_initialize(value, opts) + super + @state = :unscheduled + @task = opts[:__task_from_block__] + @executor = Options.executor_from_options(opts) || Concurrent.global_io_executor + @args = get_arguments_from(opts) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/hash.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/hash.rb new file mode 100644 index 0000000000..9919079f70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/hash.rb @@ -0,0 +1,59 @@ +require 'concurrent/utility/engine' +require 'concurrent/thread_safe/util' + +module Concurrent + + # @!macro concurrent_hash + # + # A thread-safe subclass of Hash. This version locks against the object + # itself for every method call, ensuring only one thread can be reading + # or writing at a time. This includes iteration methods like `#each`, + # which takes the lock repeatedly when reading an item. + # + # @see http://ruby-doc.org/core-2.2.0/Hash.html Ruby standard library `Hash` + + # @!macro internal_implementation_note + HashImplementation = case + when Concurrent.on_cruby? + # Because MRI never runs code in parallel, the existing + # non-thread-safe structures should usually work fine. + ::Hash + + when Concurrent.on_jruby? + require 'jruby/synchronized' + + class JRubyHash < ::Hash + include JRuby::Synchronized + end + JRubyHash + + when Concurrent.on_rbx? + require 'monitor' + require 'concurrent/thread_safe/util/data_structures' + + class RbxHash < ::Hash + end + ThreadSafe::Util.make_synchronized_on_rbx RbxHash + RbxHash + + when Concurrent.on_truffleruby? + require 'concurrent/thread_safe/util/data_structures' + + class TruffleRubyHash < ::Hash + end + + ThreadSafe::Util.make_synchronized_on_truffleruby TruffleRubyHash + TruffleRubyHash + + else + warn 'Possibly unsupported Ruby implementation' + ::Hash + end + private_constant :HashImplementation + + # @!macro concurrent_hash + class Hash < HashImplementation + end + +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/immutable_struct.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/immutable_struct.rb new file mode 100644 index 0000000000..05b8035c02 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/immutable_struct.rb @@ -0,0 +1,93 @@ +require 'concurrent/synchronization/abstract_struct' +require 'concurrent/synchronization' + +module Concurrent + + # A thread-safe, immutable variation of Ruby's standard `Struct`. + # + # @see http://ruby-doc.org/core-2.2.0/Struct.html Ruby standard library `Struct` + module ImmutableStruct + include Synchronization::AbstractStruct + + def self.included(base) + base.safe_initialization! + end + + # @!macro struct_values + def values + ns_values + end + + alias_method :to_a, :values + + # @!macro struct_values_at + def values_at(*indexes) + ns_values_at(indexes) + end + + # @!macro struct_inspect + def inspect + ns_inspect + end + + alias_method :to_s, :inspect + + # @!macro struct_merge + def merge(other, &block) + ns_merge(other, &block) + end + + # @!macro struct_to_h + def to_h + ns_to_h + end + + # @!macro struct_get + def [](member) + ns_get(member) + end + + # @!macro struct_equality + def ==(other) + ns_equality(other) + end + + # @!macro struct_each + def each(&block) + return enum_for(:each) unless block_given? + ns_each(&block) + end + + # @!macro struct_each_pair + def each_pair(&block) + return enum_for(:each_pair) unless block_given? + ns_each_pair(&block) + end + + # @!macro struct_select + def select(&block) + return enum_for(:select) unless block_given? + ns_select(&block) + end + + # @!macro struct_new + def self.new(*args, &block) + clazz_name = nil + if args.length == 0 + raise ArgumentError.new('wrong number of arguments (0 for 1+)') + elsif args.length > 0 && args.first.is_a?(String) + clazz_name = args.shift + end + FACTORY.define_struct(clazz_name, args, &block) + end + + FACTORY = Class.new(Synchronization::LockableObject) do + def define_struct(name, members, &block) + synchronize do + Synchronization::AbstractStruct.define_struct_class(ImmutableStruct, Synchronization::Object, name, members, &block) + end + end + end.new + private_constant :FACTORY + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/ivar.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/ivar.rb new file mode 100644 index 0000000000..2a724db467 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/ivar.rb @@ -0,0 +1,207 @@ +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/collection/copy_on_write_observer_set' +require 'concurrent/concern/obligation' +require 'concurrent/concern/observable' +require 'concurrent/synchronization' + +module Concurrent + + # An `IVar` is like a future that you can assign. As a future is a value that + # is being computed that you can wait on, an `IVar` is a value that is waiting + # to be assigned, that you can wait on. `IVars` are single assignment and + # deterministic. + # + # Then, express futures as an asynchronous computation that assigns an `IVar`. + # The `IVar` becomes the primitive on which [futures](Future) and + # [dataflow](Dataflow) are built. + # + # An `IVar` is a single-element container that is normally created empty, and + # can only be set once. The I in `IVar` stands for immutable. Reading an + # `IVar` normally blocks until it is set. It is safe to set and read an `IVar` + # from different threads. + # + # If you want to have some parallel task set the value in an `IVar`, you want + # a `Future`. If you want to create a graph of parallel tasks all executed + # when the values they depend on are ready you want `dataflow`. `IVar` is + # generally a low-level primitive. + # + # ## Examples + # + # Create, set and get an `IVar` + # + # ```ruby + # ivar = Concurrent::IVar.new + # ivar.set 14 + # ivar.value #=> 14 + # ivar.set 2 # would now be an error + # ``` + # + # ## See Also + # + # 1. For the theory: Arvind, R. Nikhil, and K. Pingali. + # [I-Structures: Data structures for parallel computing](http://dl.acm.org/citation.cfm?id=69562). + # In Proceedings of Workshop on Graph Reduction, 1986. + # 2. For recent application: + # [DataDrivenFuture in Habanero Java from Rice](http://www.cs.rice.edu/~vs3/hjlib/doc/edu/rice/hj/api/HjDataDrivenFuture.html). + class IVar < Synchronization::LockableObject + include Concern::Obligation + include Concern::Observable + + # Create a new `IVar` in the `:pending` state with the (optional) initial value. + # + # @param [Object] value the initial value + # @param [Hash] opts the options to create a message with + # @option opts [String] :dup_on_deref (false) call `#dup` before returning + # the data + # @option opts [String] :freeze_on_deref (false) call `#freeze` before + # returning the data + # @option opts [String] :copy_on_deref (nil) call the given `Proc` passing + # the internal value and returning the value returned from the proc + def initialize(value = NULL, opts = {}, &block) + if value != NULL && block_given? + raise ArgumentError.new('provide only a value or a block') + end + super(&nil) + synchronize { ns_initialize(value, opts, &block) } + end + + # Add an observer on this object that will receive notification on update. + # + # Upon completion the `IVar` will notify all observers in a thread-safe way. + # The `func` method of the observer will be called with three arguments: the + # `Time` at which the `Future` completed the asynchronous operation, the + # final `value` (or `nil` on rejection), and the final `reason` (or `nil` on + # fulfillment). + # + # @param [Object] observer the object that will be notified of changes + # @param [Symbol] func symbol naming the method to call when this + # `Observable` has changes` + def add_observer(observer = nil, func = :update, &block) + raise ArgumentError.new('cannot provide both an observer and a block') if observer && block + direct_notification = false + + if block + observer = block + func = :call + end + + synchronize do + if event.set? + direct_notification = true + else + observers.add_observer(observer, func) + end + end + + observer.send(func, Time.now, self.value, reason) if direct_notification + observer + end + + # @!macro ivar_set_method + # Set the `IVar` to a value and wake or notify all threads waiting on it. + # + # @!macro ivar_set_parameters_and_exceptions + # @param [Object] value the value to store in the `IVar` + # @yield A block operation to use for setting the value + # @raise [ArgumentError] if both a value and a block are given + # @raise [Concurrent::MultipleAssignmentError] if the `IVar` has already + # been set or otherwise completed + # + # @return [IVar] self + def set(value = NULL) + check_for_block_or_value!(block_given?, value) + raise MultipleAssignmentError unless compare_and_set_state(:processing, :pending) + + begin + value = yield if block_given? + complete_without_notification(true, value, nil) + rescue => ex + complete_without_notification(false, nil, ex) + end + + notify_observers(self.value, reason) + self + end + + # @!macro ivar_fail_method + # Set the `IVar` to failed due to some error and wake or notify all threads waiting on it. + # + # @param [Object] reason for the failure + # @raise [Concurrent::MultipleAssignmentError] if the `IVar` has already + # been set or otherwise completed + # @return [IVar] self + def fail(reason = StandardError.new) + complete(false, nil, reason) + end + + # Attempt to set the `IVar` with the given value or block. Return a + # boolean indicating the success or failure of the set operation. + # + # @!macro ivar_set_parameters_and_exceptions + # + # @return [Boolean] true if the value was set else false + def try_set(value = NULL, &block) + set(value, &block) + true + rescue MultipleAssignmentError + false + end + + protected + + # @!visibility private + def ns_initialize(value, opts) + value = yield if block_given? + init_obligation + self.observers = Collection::CopyOnWriteObserverSet.new + set_deref_options(opts) + + @state = :pending + if value != NULL + ns_complete_without_notification(true, value, nil) + end + end + + # @!visibility private + def safe_execute(task, args = []) + if compare_and_set_state(:processing, :pending) + success, val, reason = SafeTaskExecutor.new(task, rescue_exception: true).execute(*@args) + complete(success, val, reason) + yield(success, val, reason) if block_given? + end + end + + # @!visibility private + def complete(success, value, reason) + complete_without_notification(success, value, reason) + notify_observers(self.value, reason) + self + end + + # @!visibility private + def complete_without_notification(success, value, reason) + synchronize { ns_complete_without_notification(success, value, reason) } + self + end + + # @!visibility private + def notify_observers(value, reason) + observers.notify_and_delete_observers{ [Time.now, value, reason] } + end + + # @!visibility private + def ns_complete_without_notification(success, value, reason) + raise MultipleAssignmentError if [:fulfilled, :rejected].include? @state + set_state(success, value, reason) + event.set + end + + # @!visibility private + def check_for_block_or_value!(block_given, value) # :nodoc: + if (block_given && value != NULL) || (! block_given && value == NULL) + raise ArgumentError.new('must set with either a value or a block') + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/map.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/map.rb new file mode 100644 index 0000000000..5b7144747d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/map.rb @@ -0,0 +1,337 @@ +require 'thread' +require 'concurrent/constants' +require 'concurrent/synchronization' +require 'concurrent/utility/engine' + +module Concurrent + # @!visibility private + module Collection + + # @!visibility private + MapImplementation = case + when Concurrent.on_jruby? + # noinspection RubyResolve + JRubyMapBackend + when Concurrent.on_cruby? + require 'concurrent/collection/map/mri_map_backend' + MriMapBackend + when Concurrent.on_rbx? || Concurrent.on_truffleruby? + require 'concurrent/collection/map/atomic_reference_map_backend' + AtomicReferenceMapBackend + else + warn 'Concurrent::Map: unsupported Ruby engine, using a fully synchronized Concurrent::Map implementation' + require 'concurrent/collection/map/synchronized_map_backend' + SynchronizedMapBackend + end + end + + # `Concurrent::Map` is a hash-like object and should have much better performance + # characteristics, especially under high concurrency, than `Concurrent::Hash`. + # However, `Concurrent::Map `is not strictly semantically equivalent to a ruby `Hash` + # -- for instance, it does not necessarily retain ordering by insertion time as `Hash` + # does. For most uses it should do fine though, and we recommend you consider + # `Concurrent::Map` instead of `Concurrent::Hash` for your concurrency-safe hash needs. + class Map < Collection::MapImplementation + + # @!macro map.atomic_method + # This method is atomic. + + # @!macro map.atomic_method_with_block + # This method is atomic. + # @note Atomic methods taking a block do not allow the `self` instance + # to be used within the block. Doing so will cause a deadlock. + + # @!method compute_if_absent(key) + # Compute and store new value for key if the key is absent. + # @param [Object] key + # @yield new value + # @yieldreturn [Object] new value + # @return [Object] new value or current value + # @!macro map.atomic_method_with_block + + # @!method compute_if_present(key) + # Compute and store new value for key if the key is present. + # @param [Object] key + # @yield new value + # @yieldparam old_value [Object] + # @yieldreturn [Object, nil] new value, when nil the key is removed + # @return [Object, nil] new value or nil + # @!macro map.atomic_method_with_block + + # @!method compute(key) + # Compute and store new value for key. + # @param [Object] key + # @yield compute new value from old one + # @yieldparam old_value [Object, nil] old_value, or nil when key is absent + # @yieldreturn [Object, nil] new value, when nil the key is removed + # @return [Object, nil] new value or nil + # @!macro map.atomic_method_with_block + + # @!method merge_pair(key, value) + # If the key is absent, the value is stored, otherwise new value is + # computed with a block. + # @param [Object] key + # @param [Object] value + # @yield compute new value from old one + # @yieldparam old_value [Object] old value + # @yieldreturn [Object, nil] new value, when nil the key is removed + # @return [Object, nil] new value or nil + # @!macro map.atomic_method_with_block + + # @!method replace_pair(key, old_value, new_value) + # Replaces old_value with new_value if key exists and current value + # matches old_value + # @param [Object] key + # @param [Object] old_value + # @param [Object] new_value + # @return [true, false] true if replaced + # @!macro map.atomic_method + + # @!method replace_if_exists(key, new_value) + # Replaces current value with new_value if key exists + # @param [Object] key + # @param [Object] new_value + # @return [Object, nil] old value or nil + # @!macro map.atomic_method + + # @!method get_and_set(key, value) + # Get the current value under key and set new value. + # @param [Object] key + # @param [Object] value + # @return [Object, nil] old value or nil when the key was absent + # @!macro map.atomic_method + + # @!method delete(key) + # Delete key and its value. + # @param [Object] key + # @return [Object, nil] old value or nil when the key was absent + # @!macro map.atomic_method + + # @!method delete_pair(key, value) + # Delete pair and its value if current value equals the provided value. + # @param [Object] key + # @param [Object] value + # @return [true, false] true if deleted + # @!macro map.atomic_method + + + def initialize(options = nil, &block) + if options.kind_of?(::Hash) + validate_options_hash!(options) + else + options = nil + end + + super(options) + @default_proc = block + end + + # Get a value with key + # @param [Object] key + # @return [Object] the value + def [](key) + if value = super # non-falsy value is an existing mapping, return it right away + value + # re-check is done with get_or_default(key, NULL) instead of a simple !key?(key) in order to avoid a race condition, whereby by the time the current thread gets to the key?(key) call + # a key => value mapping might have already been created by a different thread (key?(key) would then return true, this elsif branch wouldn't be taken and an incorrent +nil+ value + # would be returned) + # note: nil == value check is not technically necessary + elsif @default_proc && nil == value && NULL == (value = get_or_default(key, NULL)) + @default_proc.call(self, key) + else + value + end + end + + alias_method :get, :[] + # TODO (pitr-ch 30-Oct-2018): doc + alias_method :put, :[]= + + # Get a value with key, or default_value when key is absent, + # or fail when no default_value is given. + # @param [Object] key + # @param [Object] default_value + # @yield default value for a key + # @yieldparam key [Object] + # @yieldreturn [Object] default value + # @return [Object] the value or default value + # @raise [KeyError] when key is missing and no default_value is provided + # @!macro map_method_not_atomic + # @note The "fetch-then-act" methods of `Map` are not atomic. `Map` is intended + # to be use as a concurrency primitive with strong happens-before + # guarantees. It is not intended to be used as a high-level abstraction + # supporting complex operations. All read and write operations are + # thread safe, but no guarantees are made regarding race conditions + # between the fetch operation and yielding to the block. Additionally, + # this method does not support recursion. This is due to internal + # constraints that are very unlikely to change in the near future. + def fetch(key, default_value = NULL) + if NULL != (value = get_or_default(key, NULL)) + value + elsif block_given? + yield key + elsif NULL != default_value + default_value + else + raise_fetch_no_key + end + end + + # Fetch value with key, or store default value when key is absent, + # or fail when no default_value is given. This is a two step operation, + # therefore not atomic. The store can overwrite other concurrently + # stored value. + # @param [Object] key + # @param [Object] default_value + # @yield default value for a key + # @yieldparam key [Object] + # @yieldreturn [Object] default value + # @return [Object] the value or default value + # @!macro map.atomic_method_with_block + def fetch_or_store(key, default_value = NULL) + fetch(key) do + put(key, block_given? ? yield(key) : (NULL == default_value ? raise_fetch_no_key : default_value)) + end + end + + # Insert value into map with key if key is absent in one atomic step. + # @param [Object] key + # @param [Object] value + # @return [Object, nil] the value or nil when key was present + def put_if_absent(key, value) + computed = false + result = compute_if_absent(key) do + computed = true + value + end + computed ? nil : result + end unless method_defined?(:put_if_absent) + + # Is the value stored in the map. Iterates over all values. + # @param [Object] value + # @return [true, false] + def value?(value) + each_value do |v| + return true if value.equal?(v) + end + false + end + + # All keys + # @return [::Array] keys + def keys + arr = [] + each_pair { |k, v| arr << k } + arr + end unless method_defined?(:keys) + + # All values + # @return [::Array] values + def values + arr = [] + each_pair { |k, v| arr << v } + arr + end unless method_defined?(:values) + + # Iterates over each key. + # @yield for each key in the map + # @yieldparam key [Object] + # @return [self] + # @!macro map.atomic_method_with_block + def each_key + each_pair { |k, v| yield k } + end unless method_defined?(:each_key) + + # Iterates over each value. + # @yield for each value in the map + # @yieldparam value [Object] + # @return [self] + # @!macro map.atomic_method_with_block + def each_value + each_pair { |k, v| yield v } + end unless method_defined?(:each_value) + + # Iterates over each key value pair. + # @yield for each key value pair in the map + # @yieldparam key [Object] + # @yieldparam value [Object] + # @return [self] + # @!macro map.atomic_method_with_block + def each_pair + return enum_for :each_pair unless block_given? + super + end + + alias_method :each, :each_pair unless method_defined?(:each) + + # Find key of a value. + # @param [Object] value + # @return [Object, nil] key or nil when not found + def key(value) + each_pair { |k, v| return k if v == value } + nil + end unless method_defined?(:key) + alias_method :index, :key if RUBY_VERSION < '1.9' + + # Is map empty? + # @return [true, false] + def empty? + each_pair { |k, v| return false } + true + end unless method_defined?(:empty?) + + # The size of map. + # @return [Integer] size + def size + count = 0 + each_pair { |k, v| count += 1 } + count + end unless method_defined?(:size) + + # @!visibility private + def marshal_dump + raise TypeError, "can't dump hash with default proc" if @default_proc + h = {} + each_pair { |k, v| h[k] = v } + h + end + + # @!visibility private + def marshal_load(hash) + initialize + populate_from(hash) + end + + undef :freeze + + # @!visibility private + def inspect + format '%s entries=%d default_proc=%s>', to_s[0..-2], size.to_s, @default_proc.inspect + end + + private + + def raise_fetch_no_key + raise KeyError, 'key not found' + end + + def initialize_copy(other) + super + populate_from(other) + end + + def populate_from(hash) + hash.each_pair { |k, v| self[k] = v } + self + end + + def validate_options_hash!(options) + if (initial_capacity = options[:initial_capacity]) && (!initial_capacity.kind_of?(Integer) || initial_capacity < 0) + raise ArgumentError, ":initial_capacity must be a positive Integer" + end + if (load_factor = options[:load_factor]) && (!load_factor.kind_of?(Numeric) || load_factor <= 0 || load_factor > 1) + raise ArgumentError, ":load_factor must be a number between 0 and 1" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/maybe.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/maybe.rb new file mode 100644 index 0000000000..7ba3d3ebb5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/maybe.rb @@ -0,0 +1,229 @@ +require 'concurrent/synchronization' + +module Concurrent + + # A `Maybe` encapsulates an optional value. A `Maybe` either contains a value + # of (represented as `Just`), or it is empty (represented as `Nothing`). Using + # `Maybe` is a good way to deal with errors or exceptional cases without + # resorting to drastic measures such as exceptions. + # + # `Maybe` is a replacement for the use of `nil` with better type checking. + # + # For compatibility with {Concurrent::Concern::Obligation} the predicate and + # accessor methods are aliased as `fulfilled?`, `rejected?`, `value`, and + # `reason`. + # + # ## Motivation + # + # A common pattern in languages with pattern matching, such as Erlang and + # Haskell, is to return *either* a value *or* an error from a function + # Consider this Erlang code: + # + # ```erlang + # case file:consult("data.dat") of + # {ok, Terms} -> do_something_useful(Terms); + # {error, Reason} -> lager:error(Reason) + # end. + # ``` + # + # In this example the standard library function `file:consult` returns a + # [tuple](http://erlang.org/doc/reference_manual/data_types.html#id69044) + # with two elements: an [atom](http://erlang.org/doc/reference_manual/data_types.html#id64134) + # (similar to a ruby symbol) and a variable containing ancillary data. On + # success it returns the atom `ok` and the data from the file. On failure it + # returns `error` and a string with an explanation of the problem. With this + # pattern there is no ambiguity regarding success or failure. If the file is + # empty the return value cannot be misinterpreted as an error. And when an + # error occurs the return value provides useful information. + # + # In Ruby we tend to return `nil` when an error occurs or else we raise an + # exception. Both of these idioms are problematic. Returning `nil` is + # ambiguous because `nil` may also be a valid value. It also lacks + # information pertaining to the nature of the error. Raising an exception + # is both expensive and usurps the normal flow of control. All of these + # problems can be solved with the use of a `Maybe`. + # + # A `Maybe` is unambiguous with regard to whether or not it contains a value. + # When `Just` it contains a value, when `Nothing` it does not. When `Just` + # the value it contains may be `nil`, which is perfectly valid. When + # `Nothing` the reason for the lack of a value is contained as well. The + # previous Erlang example can be duplicated in Ruby in a principled way by + # having functions return `Maybe` objects: + # + # ```ruby + # result = MyFileUtils.consult("data.dat") # returns a Maybe + # if result.just? + # do_something_useful(result.value) # or result.just + # else + # logger.error(result.reason) # or result.nothing + # end + # ``` + # + # @example Returning a Maybe from a Function + # module MyFileUtils + # def self.consult(path) + # file = File.open(path, 'r') + # Concurrent::Maybe.just(file.read) + # rescue => ex + # return Concurrent::Maybe.nothing(ex) + # ensure + # file.close if file + # end + # end + # + # maybe = MyFileUtils.consult('bogus.file') + # maybe.just? #=> false + # maybe.nothing? #=> true + # maybe.reason #=> # + # + # maybe = MyFileUtils.consult('README.md') + # maybe.just? #=> true + # maybe.nothing? #=> false + # maybe.value #=> "# Concurrent Ruby\n[![Gem Version..." + # + # @example Using Maybe with a Block + # result = Concurrent::Maybe.from do + # Client.find(10) # Client is an ActiveRecord model + # end + # + # # -- if the record was found + # result.just? #=> true + # result.value #=> # + # + # # -- if the record was not found + # result.just? #=> false + # result.reason #=> ActiveRecord::RecordNotFound + # + # @example Using Maybe with the Null Object Pattern + # # In a Rails controller... + # result = ClientService.new(10).find # returns a Maybe + # render json: result.or(NullClient.new) + # + # @see https://hackage.haskell.org/package/base-4.2.0.1/docs/Data-Maybe.html Haskell Data.Maybe + # @see https://github.com/purescript/purescript-maybe/blob/master/docs/Data.Maybe.md PureScript Data.Maybe + class Maybe < Synchronization::Object + include Comparable + safe_initialization! + + # Indicates that the given attribute has not been set. + # When `Just` the {#nothing} getter will return `NONE`. + # When `Nothing` the {#just} getter will return `NONE`. + NONE = ::Object.new.freeze + + # The value of a `Maybe` when `Just`. Will be `NONE` when `Nothing`. + attr_reader :just + + # The reason for the `Maybe` when `Nothing`. Will be `NONE` when `Just`. + attr_reader :nothing + + private_class_method :new + + # Create a new `Maybe` using the given block. + # + # Runs the given block passing all function arguments to the block as block + # arguments. If the block runs to completion without raising an exception + # a new `Just` is created with the value set to the return value of the + # block. If the block raises an exception a new `Nothing` is created with + # the reason being set to the raised exception. + # + # @param [Array] args Zero or more arguments to pass to the block. + # @yield The block from which to create a new `Maybe`. + # @yieldparam [Array] args Zero or more block arguments passed as + # arguments to the function. + # + # @return [Maybe] The newly created object. + # + # @raise [ArgumentError] when no block given. + def self.from(*args) + raise ArgumentError.new('no block given') unless block_given? + begin + value = yield(*args) + return new(value, NONE) + rescue => ex + return new(NONE, ex) + end + end + + # Create a new `Just` with the given value. + # + # @param [Object] value The value to set for the new `Maybe` object. + # + # @return [Maybe] The newly created object. + def self.just(value) + return new(value, NONE) + end + + # Create a new `Nothing` with the given (optional) reason. + # + # @param [Exception] error The reason to set for the new `Maybe` object. + # When given a string a new `StandardError` will be created with the + # argument as the message. When no argument is given a new + # `StandardError` with an empty message will be created. + # + # @return [Maybe] The newly created object. + def self.nothing(error = '') + if error.is_a?(Exception) + nothing = error + else + nothing = StandardError.new(error.to_s) + end + return new(NONE, nothing) + end + + # Is this `Maybe` a `Just` (successfully fulfilled with a value)? + # + # @return [Boolean] True if `Just` or false if `Nothing`. + def just? + ! nothing? + end + alias :fulfilled? :just? + + # Is this `Maybe` a `nothing` (rejected with an exception upon fulfillment)? + # + # @return [Boolean] True if `Nothing` or false if `Just`. + def nothing? + @nothing != NONE + end + alias :rejected? :nothing? + + alias :value :just + + alias :reason :nothing + + # Comparison operator. + # + # @return [Integer] 0 if self and other are both `Nothing`; + # -1 if self is `Nothing` and other is `Just`; + # 1 if self is `Just` and other is nothing; + # `self.just <=> other.just` if both self and other are `Just`. + def <=>(other) + if nothing? + other.nothing? ? 0 : -1 + else + other.nothing? ? 1 : just <=> other.just + end + end + + # Return either the value of self or the given default value. + # + # @return [Object] The value of self when `Just`; else the given default. + def or(other) + just? ? just : other + end + + private + + # Create a new `Maybe` with the given attributes. + # + # @param [Object] just The value when `Just` else `NONE`. + # @param [Exception, Object] nothing The exception when `Nothing` else `NONE`. + # + # @return [Maybe] The new `Maybe`. + # + # @!visibility private + def initialize(just, nothing) + @just = just + @nothing = nothing + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mutable_struct.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mutable_struct.rb new file mode 100644 index 0000000000..836b7f4585 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mutable_struct.rb @@ -0,0 +1,229 @@ +require 'concurrent/synchronization/abstract_struct' +require 'concurrent/synchronization' + +module Concurrent + + # An thread-safe variation of Ruby's standard `Struct`. Values can be set at + # construction or safely changed at any time during the object's lifecycle. + # + # @see http://ruby-doc.org/core-2.2.0/Struct.html Ruby standard library `Struct` + module MutableStruct + include Synchronization::AbstractStruct + + # @!macro struct_new + # + # Factory for creating new struct classes. + # + # ``` + # new([class_name] [, member_name]+>) -> StructClass click to toggle source + # new([class_name] [, member_name]+>) {|StructClass| block } -> StructClass + # new(value, ...) -> obj + # StructClass[value, ...] -> obj + # ``` + # + # The first two forms are used to create a new struct subclass `class_name` + # that can contain a value for each member_name . This subclass can be + # used to create instances of the structure like any other Class . + # + # If the `class_name` is omitted an anonymous struct class will be created. + # Otherwise, the name of this struct will appear as a constant in the struct class, + # so it must be unique for all structs under this base class and must start with a + # capital letter. Assigning a struct class to a constant also gives the class + # the name of the constant. + # + # If a block is given it will be evaluated in the context of `StructClass`, passing + # the created class as a parameter. This is the recommended way to customize a struct. + # Subclassing an anonymous struct creates an extra anonymous class that will never be used. + # + # The last two forms create a new instance of a struct subclass. The number of value + # parameters must be less than or equal to the number of attributes defined for the + # struct. Unset parameters default to nil. Passing more parameters than number of attributes + # will raise an `ArgumentError`. + # + # @see http://ruby-doc.org/core-2.2.0/Struct.html#method-c-new Ruby standard library `Struct#new` + + # @!macro struct_values + # + # Returns the values for this struct as an Array. + # + # @return [Array] the values for this struct + # + def values + synchronize { ns_values } + end + alias_method :to_a, :values + + # @!macro struct_values_at + # + # Returns the struct member values for each selector as an Array. + # + # A selector may be either an Integer offset or a Range of offsets (as in `Array#values_at`). + # + # @param [Fixnum, Range] indexes the index(es) from which to obatin the values (in order) + def values_at(*indexes) + synchronize { ns_values_at(indexes) } + end + + # @!macro struct_inspect + # + # Describe the contents of this struct in a string. + # + # @return [String] the contents of this struct in a string + def inspect + synchronize { ns_inspect } + end + alias_method :to_s, :inspect + + # @!macro struct_merge + # + # Returns a new struct containing the contents of `other` and the contents + # of `self`. If no block is specified, the value for entries with duplicate + # keys will be that of `other`. Otherwise the value for each duplicate key + # is determined by calling the block with the key, its value in `self` and + # its value in `other`. + # + # @param [Hash] other the hash from which to set the new values + # @yield an options block for resolving duplicate keys + # @yieldparam [String, Symbol] member the name of the member which is duplicated + # @yieldparam [Object] selfvalue the value of the member in `self` + # @yieldparam [Object] othervalue the value of the member in `other` + # + # @return [Synchronization::AbstractStruct] a new struct with the new values + # + # @raise [ArgumentError] of given a member that is not defined in the struct + def merge(other, &block) + synchronize { ns_merge(other, &block) } + end + + # @!macro struct_to_h + # + # Returns a hash containing the names and values for the struct’s members. + # + # @return [Hash] the names and values for the struct’s members + def to_h + synchronize { ns_to_h } + end + + # @!macro struct_get + # + # Attribute Reference + # + # @param [Symbol, String, Integer] member the string or symbol name of the member + # for which to obtain the value or the member's index + # + # @return [Object] the value of the given struct member or the member at the given index. + # + # @raise [NameError] if the member does not exist + # @raise [IndexError] if the index is out of range. + def [](member) + synchronize { ns_get(member) } + end + + # @!macro struct_equality + # + # Equality + # + # @return [Boolean] true if other has the same struct subclass and has + # equal member values (according to `Object#==`) + def ==(other) + synchronize { ns_equality(other) } + end + + # @!macro struct_each + # + # Yields the value of each struct member in order. If no block is given + # an enumerator is returned. + # + # @yield the operation to be performed on each struct member + # @yieldparam [Object] value each struct value (in order) + def each(&block) + return enum_for(:each) unless block_given? + synchronize { ns_each(&block) } + end + + # @!macro struct_each_pair + # + # Yields the name and value of each struct member in order. If no block is + # given an enumerator is returned. + # + # @yield the operation to be performed on each struct member/value pair + # @yieldparam [Object] member each struct member (in order) + # @yieldparam [Object] value each struct value (in order) + def each_pair(&block) + return enum_for(:each_pair) unless block_given? + synchronize { ns_each_pair(&block) } + end + + # @!macro struct_select + # + # Yields each member value from the struct to the block and returns an Array + # containing the member values from the struct for which the given block + # returns a true value (equivalent to `Enumerable#select`). + # + # @yield the operation to be performed on each struct member + # @yieldparam [Object] value each struct value (in order) + # + # @return [Array] an array containing each value for which the block returns true + def select(&block) + return enum_for(:select) unless block_given? + synchronize { ns_select(&block) } + end + + # @!macro struct_set + # + # Attribute Assignment + # + # Sets the value of the given struct member or the member at the given index. + # + # @param [Symbol, String, Integer] member the string or symbol name of the member + # for which to obtain the value or the member's index + # + # @return [Object] the value of the given struct member or the member at the given index. + # + # @raise [NameError] if the name does not exist + # @raise [IndexError] if the index is out of range. + def []=(member, value) + if member.is_a? Integer + length = synchronize { @values.length } + if member >= length + raise IndexError.new("offset #{member} too large for struct(size:#{length})") + end + synchronize { @values[member] = value } + else + send("#{member}=", value) + end + rescue NoMethodError + raise NameError.new("no member '#{member}' in struct") + end + + # @!macro struct_new + def self.new(*args, &block) + clazz_name = nil + if args.length == 0 + raise ArgumentError.new('wrong number of arguments (0 for 1+)') + elsif args.length > 0 && args.first.is_a?(String) + clazz_name = args.shift + end + FACTORY.define_struct(clazz_name, args, &block) + end + + FACTORY = Class.new(Synchronization::LockableObject) do + def define_struct(name, members, &block) + synchronize do + clazz = Synchronization::AbstractStruct.define_struct_class(MutableStruct, Synchronization::LockableObject, name, members, &block) + members.each_with_index do |member, index| + clazz.send :remove_method, member + clazz.send(:define_method, member) do + synchronize { @values[index] } + end + clazz.send(:define_method, "#{member}=") do |value| + synchronize { @values[index] = value } + end + end + clazz + end + end + end.new + private_constant :FACTORY + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mvar.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mvar.rb new file mode 100644 index 0000000000..9034711bf5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/mvar.rb @@ -0,0 +1,242 @@ +require 'concurrent/concern/dereferenceable' +require 'concurrent/synchronization' + +module Concurrent + + # An `MVar` is a synchronized single element container. They are empty or + # contain one item. Taking a value from an empty `MVar` blocks, as does + # putting a value into a full one. You can either think of them as blocking + # queue of length one, or a special kind of mutable variable. + # + # On top of the fundamental `#put` and `#take` operations, we also provide a + # `#mutate` that is atomic with respect to operations on the same instance. + # These operations all support timeouts. + # + # We also support non-blocking operations `#try_put!` and `#try_take!`, a + # `#set!` that ignores existing values, a `#value` that returns the value + # without removing it or returns `MVar::EMPTY`, and a `#modify!` that yields + # `MVar::EMPTY` if the `MVar` is empty and can be used to set `MVar::EMPTY`. + # You shouldn't use these operations in the first instance. + # + # `MVar` is a [Dereferenceable](Dereferenceable). + # + # `MVar` is related to M-structures in Id, `MVar` in Haskell and `SyncVar` in Scala. + # + # Note that unlike the original Haskell paper, our `#take` is blocking. This is how + # Haskell and Scala do it today. + # + # @!macro copy_options + # + # ## See Also + # + # 1. P. Barth, R. Nikhil, and Arvind. [M-Structures: Extending a parallel, non- strict, functional language with state](http://dl.acm.org/citation.cfm?id=652538). In Proceedings of the 5th + # ACM Conference on Functional Programming Languages and Computer Architecture (FPCA), 1991. + # + # 2. S. Peyton Jones, A. Gordon, and S. Finne. [Concurrent Haskell](http://dl.acm.org/citation.cfm?id=237794). + # In Proceedings of the 23rd Symposium on Principles of Programming Languages + # (PoPL), 1996. + class MVar < Synchronization::Object + include Concern::Dereferenceable + safe_initialization! + + # Unique value that represents that an `MVar` was empty + EMPTY = ::Object.new + + # Unique value that represents that an `MVar` timed out before it was able + # to produce a value. + TIMEOUT = ::Object.new + + # Create a new `MVar`, either empty or with an initial value. + # + # @param [Hash] opts the options controlling how the future will be processed + # + # @!macro deref_options + def initialize(value = EMPTY, opts = {}) + @value = value + @mutex = Mutex.new + @empty_condition = ConditionVariable.new + @full_condition = ConditionVariable.new + set_deref_options(opts) + end + + # Remove the value from an `MVar`, leaving it empty, and blocking if there + # isn't a value. A timeout can be set to limit the time spent blocked, in + # which case it returns `TIMEOUT` if the time is exceeded. + # @return [Object] the value that was taken, or `TIMEOUT` + def take(timeout = nil) + @mutex.synchronize do + wait_for_full(timeout) + + # If we timed out we'll still be empty + if unlocked_full? + value = @value + @value = EMPTY + @empty_condition.signal + apply_deref_options(value) + else + TIMEOUT + end + end + end + + # acquires lock on the from an `MVAR`, yields the value to provided block, + # and release lock. A timeout can be set to limit the time spent blocked, + # in which case it returns `TIMEOUT` if the time is exceeded. + # @return [Object] the value returned by the block, or `TIMEOUT` + def borrow(timeout = nil) + @mutex.synchronize do + wait_for_full(timeout) + + # if we timeoud out we'll still be empty + if unlocked_full? + yield @value + else + TIMEOUT + end + end + end + + # Put a value into an `MVar`, blocking if there is already a value until + # it is empty. A timeout can be set to limit the time spent blocked, in + # which case it returns `TIMEOUT` if the time is exceeded. + # @return [Object] the value that was put, or `TIMEOUT` + def put(value, timeout = nil) + @mutex.synchronize do + wait_for_empty(timeout) + + # If we timed out we won't be empty + if unlocked_empty? + @value = value + @full_condition.signal + apply_deref_options(value) + else + TIMEOUT + end + end + end + + # Atomically `take`, yield the value to a block for transformation, and then + # `put` the transformed value. Returns the transformed value. A timeout can + # be set to limit the time spent blocked, in which case it returns `TIMEOUT` + # if the time is exceeded. + # @return [Object] the transformed value, or `TIMEOUT` + def modify(timeout = nil) + raise ArgumentError.new('no block given') unless block_given? + + @mutex.synchronize do + wait_for_full(timeout) + + # If we timed out we'll still be empty + if unlocked_full? + value = @value + @value = yield value + @full_condition.signal + apply_deref_options(value) + else + TIMEOUT + end + end + end + + # Non-blocking version of `take`, that returns `EMPTY` instead of blocking. + def try_take! + @mutex.synchronize do + if unlocked_full? + value = @value + @value = EMPTY + @empty_condition.signal + apply_deref_options(value) + else + EMPTY + end + end + end + + # Non-blocking version of `put`, that returns whether or not it was successful. + def try_put!(value) + @mutex.synchronize do + if unlocked_empty? + @value = value + @full_condition.signal + true + else + false + end + end + end + + # Non-blocking version of `put` that will overwrite an existing value. + def set!(value) + @mutex.synchronize do + old_value = @value + @value = value + @full_condition.signal + apply_deref_options(old_value) + end + end + + # Non-blocking version of `modify` that will yield with `EMPTY` if there is no value yet. + def modify! + raise ArgumentError.new('no block given') unless block_given? + + @mutex.synchronize do + value = @value + @value = yield value + if unlocked_empty? + @empty_condition.signal + else + @full_condition.signal + end + apply_deref_options(value) + end + end + + # Returns if the `MVar` is currently empty. + def empty? + @mutex.synchronize { @value == EMPTY } + end + + # Returns if the `MVar` currently contains a value. + def full? + !empty? + end + + protected + + def synchronize(&block) + @mutex.synchronize(&block) + end + + private + + def unlocked_empty? + @value == EMPTY + end + + def unlocked_full? + ! unlocked_empty? + end + + def wait_for_full(timeout) + wait_while(@full_condition, timeout) { unlocked_empty? } + end + + def wait_for_empty(timeout) + wait_while(@empty_condition, timeout) { unlocked_full? } + end + + def wait_while(condition, timeout) + if timeout.nil? + while yield + condition.wait(@mutex) + end + else + stop = Concurrent.monotonic_time + timeout + while yield && timeout > 0.0 + condition.wait(@mutex, timeout) + timeout = stop - Concurrent.monotonic_time + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/options.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/options.rb new file mode 100644 index 0000000000..bdd22a9df1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/options.rb @@ -0,0 +1,42 @@ +require 'concurrent/configuration' + +module Concurrent + + # @!visibility private + module Options + + # Get the requested `Executor` based on the values set in the options hash. + # + # @param [Hash] opts the options defining the requested executor + # @option opts [Executor] :executor when set use the given `Executor` instance. + # Three special values are also supported: `:fast` returns the global fast executor, + # `:io` returns the global io executor, and `:immediate` returns a new + # `ImmediateExecutor` object. + # + # @return [Executor, nil] the requested thread pool, or nil when no option specified + # + # @!visibility private + def self.executor_from_options(opts = {}) # :nodoc: + if identifier = opts.fetch(:executor, nil) + executor(identifier) + else + nil + end + end + + def self.executor(executor_identifier) + case executor_identifier + when :fast + Concurrent.global_fast_executor + when :io + Concurrent.global_io_executor + when :immediate + Concurrent.global_immediate_executor + when Concurrent::ExecutorService + executor_identifier + else + raise ArgumentError, "executor not recognized by '#{executor_identifier}'" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promise.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promise.rb new file mode 100644 index 0000000000..f5f31ebbac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promise.rb @@ -0,0 +1,579 @@ +require 'thread' +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/ivar' +require 'concurrent/executor/safe_task_executor' + +require 'concurrent/options' + +module Concurrent + + PromiseExecutionError = Class.new(StandardError) + + # Promises are inspired by the JavaScript [Promises/A](http://wiki.commonjs.org/wiki/Promises/A) + # and [Promises/A+](http://promises-aplus.github.io/promises-spec/) specifications. + # + # > A promise represents the eventual value returned from the single + # > completion of an operation. + # + # Promises are similar to futures and share many of the same behaviours. + # Promises are far more robust, however. Promises can be chained in a tree + # structure where each promise may have zero or more children. Promises are + # chained using the `then` method. The result of a call to `then` is always + # another promise. Promises are resolved asynchronously (with respect to the + # main thread) but in a strict order: parents are guaranteed to be resolved + # before their children, children before their younger siblings. The `then` + # method takes two parameters: an optional block to be executed upon parent + # resolution and an optional callable to be executed upon parent failure. The + # result of each promise is passed to each of its children upon resolution. + # When a promise is rejected all its children will be summarily rejected and + # will receive the reason. + # + # Promises have several possible states: *:unscheduled*, *:pending*, + # *:processing*, *:rejected*, or *:fulfilled*. These are also aggregated as + # `#incomplete?` and `#complete?`. When a Promise is created it is set to + # *:unscheduled*. Once the `#execute` method is called the state becomes + # *:pending*. Once a job is pulled from the thread pool's queue and is given + # to a thread for processing (often immediately upon `#post`) the state + # becomes *:processing*. The future will remain in this state until processing + # is complete. A future that is in the *:unscheduled*, *:pending*, or + # *:processing* is considered `#incomplete?`. A `#complete?` Promise is either + # *:rejected*, indicating that an exception was thrown during processing, or + # *:fulfilled*, indicating success. If a Promise is *:fulfilled* its `#value` + # will be updated to reflect the result of the operation. If *:rejected* the + # `reason` will be updated with a reference to the thrown exception. The + # predicate methods `#unscheduled?`, `#pending?`, `#rejected?`, and + # `#fulfilled?` can be called at any time to obtain the state of the Promise, + # as can the `#state` method, which returns a symbol. + # + # Retrieving the value of a promise is done through the `value` (alias: + # `deref`) method. Obtaining the value of a promise is a potentially blocking + # operation. When a promise is *rejected* a call to `value` will return `nil` + # immediately. When a promise is *fulfilled* a call to `value` will + # immediately return the current value. When a promise is *pending* a call to + # `value` will block until the promise is either *rejected* or *fulfilled*. A + # *timeout* value can be passed to `value` to limit how long the call will + # block. If `nil` the call will block indefinitely. If `0` the call will not + # block. Any other integer or float value will indicate the maximum number of + # seconds to block. + # + # Promises run on the global thread pool. + # + # @!macro copy_options + # + # ### Examples + # + # Start by requiring promises + # + # ```ruby + # require 'concurrent' + # ``` + # + # Then create one + # + # ```ruby + # p = Concurrent::Promise.execute do + # # do something + # 42 + # end + # ``` + # + # Promises can be chained using the `then` method. The `then` method accepts a + # block and an executor, to be executed on fulfillment, and a callable argument to be executed + # on rejection. The result of the each promise is passed as the block argument + # to chained promises. + # + # ```ruby + # p = Concurrent::Promise.new{10}.then{|x| x * 2}.then{|result| result - 10 }.execute + # ``` + # + # And so on, and so on, and so on... + # + # ```ruby + # p = Concurrent::Promise.fulfill(20). + # then{|result| result - 10 }. + # then{|result| result * 3 }. + # then(executor: different_executor){|result| result % 5 }.execute + # ``` + # + # The initial state of a newly created Promise depends on the state of its parent: + # - if parent is *unscheduled* the child will be *unscheduled* + # - if parent is *pending* the child will be *pending* + # - if parent is *fulfilled* the child will be *pending* + # - if parent is *rejected* the child will be *pending* (but will ultimately be *rejected*) + # + # Promises are executed asynchronously from the main thread. By the time a + # child Promise finishes intialization it may be in a different state than its + # parent (by the time a child is created its parent may have completed + # execution and changed state). Despite being asynchronous, however, the order + # of execution of Promise objects in a chain (or tree) is strictly defined. + # + # There are multiple ways to create and execute a new `Promise`. Both ways + # provide identical behavior: + # + # ```ruby + # # create, operate, then execute + # p1 = Concurrent::Promise.new{ "Hello World!" } + # p1.state #=> :unscheduled + # p1.execute + # + # # create and immediately execute + # p2 = Concurrent::Promise.new{ "Hello World!" }.execute + # + # # execute during creation + # p3 = Concurrent::Promise.execute{ "Hello World!" } + # ``` + # + # Once the `execute` method is called a `Promise` becomes `pending`: + # + # ```ruby + # p = Concurrent::Promise.execute{ "Hello, world!" } + # p.state #=> :pending + # p.pending? #=> true + # ``` + # + # Wait a little bit, and the promise will resolve and provide a value: + # + # ```ruby + # p = Concurrent::Promise.execute{ "Hello, world!" } + # sleep(0.1) + # + # p.state #=> :fulfilled + # p.fulfilled? #=> true + # p.value #=> "Hello, world!" + # ``` + # + # If an exception occurs, the promise will be rejected and will provide + # a reason for the rejection: + # + # ```ruby + # p = Concurrent::Promise.execute{ raise StandardError.new("Here comes the Boom!") } + # sleep(0.1) + # + # p.state #=> :rejected + # p.rejected? #=> true + # p.reason #=> "#" + # ``` + # + # #### Rejection + # + # When a promise is rejected all its children will be rejected and will + # receive the rejection `reason` as the rejection callable parameter: + # + # ```ruby + # p = Concurrent::Promise.execute { Thread.pass; raise StandardError } + # + # c1 = p.then(-> reason { 42 }) + # c2 = p.then(-> reason { raise 'Boom!' }) + # + # c1.wait.state #=> :fulfilled + # c1.value #=> 45 + # c2.wait.state #=> :rejected + # c2.reason #=> # + # ``` + # + # Once a promise is rejected it will continue to accept children that will + # receive immediately rejection (they will be executed asynchronously). + # + # #### Aliases + # + # The `then` method is the most generic alias: it accepts a block to be + # executed upon parent fulfillment and a callable to be executed upon parent + # rejection. At least one of them should be passed. The default block is `{ + # |result| result }` that fulfills the child with the parent value. The + # default callable is `{ |reason| raise reason }` that rejects the child with + # the parent reason. + # + # - `on_success { |result| ... }` is the same as `then {|result| ... }` + # - `rescue { |reason| ... }` is the same as `then(Proc.new { |reason| ... } )` + # - `rescue` is aliased by `catch` and `on_error` + class Promise < IVar + + # Initialize a new Promise with the provided options. + # + # @!macro executor_and_deref_options + # + # @!macro promise_init_options + # + # @option opts [Promise] :parent the parent `Promise` when building a chain/tree + # @option opts [Proc] :on_fulfill fulfillment handler + # @option opts [Proc] :on_reject rejection handler + # @option opts [object, Array] :args zero or more arguments to be passed + # the task block on execution + # + # @yield The block operation to be performed asynchronously. + # + # @raise [ArgumentError] if no block is given + # + # @see http://wiki.commonjs.org/wiki/Promises/A + # @see http://promises-aplus.github.io/promises-spec/ + def initialize(opts = {}, &block) + opts.delete_if { |k, v| v.nil? } + super(NULL, opts.merge(__promise_body_from_block__: block), &nil) + end + + # Create a new `Promise` and fulfill it immediately. + # + # @!macro executor_and_deref_options + # + # @!macro promise_init_options + # + # @raise [ArgumentError] if no block is given + # + # @return [Promise] the newly created `Promise` + def self.fulfill(value, opts = {}) + Promise.new(opts).tap { |p| p.send(:synchronized_set_state!, true, value, nil) } + end + + # Create a new `Promise` and reject it immediately. + # + # @!macro executor_and_deref_options + # + # @!macro promise_init_options + # + # @raise [ArgumentError] if no block is given + # + # @return [Promise] the newly created `Promise` + def self.reject(reason, opts = {}) + Promise.new(opts).tap { |p| p.send(:synchronized_set_state!, false, nil, reason) } + end + + # Execute an `:unscheduled` `Promise`. Immediately sets the state to `:pending` and + # passes the block to a new thread/thread pool for eventual execution. + # Does nothing if the `Promise` is in any state other than `:unscheduled`. + # + # @return [Promise] a reference to `self` + def execute + if root? + if compare_and_set_state(:pending, :unscheduled) + set_pending + realize(@promise_body) + end + else + @parent.execute + end + self + end + + # @!macro ivar_set_method + # + # @raise [Concurrent::PromiseExecutionError] if not the root promise + def set(value = NULL, &block) + raise PromiseExecutionError.new('supported only on root promise') unless root? + check_for_block_or_value!(block_given?, value) + synchronize do + if @state != :unscheduled + raise MultipleAssignmentError + else + @promise_body = block || Proc.new { |result| value } + end + end + execute + end + + # @!macro ivar_fail_method + # + # @raise [Concurrent::PromiseExecutionError] if not the root promise + def fail(reason = StandardError.new) + set { raise reason } + end + + # Create a new `Promise` object with the given block, execute it, and return the + # `:pending` object. + # + # @!macro executor_and_deref_options + # + # @!macro promise_init_options + # + # @return [Promise] the newly created `Promise` in the `:pending` state + # + # @raise [ArgumentError] if no block is given + # + # @example + # promise = Concurrent::Promise.execute{ sleep(1); 42 } + # promise.state #=> :pending + def self.execute(opts = {}, &block) + new(opts, &block).execute + end + + # Chain a new promise off the current promise. + # + # @return [Promise] the new promise + # @yield The block operation to be performed asynchronously. + # @overload then(rescuer, executor, &block) + # @param [Proc] rescuer An optional rescue block to be executed if the + # promise is rejected. + # @param [ThreadPool] executor An optional thread pool executor to be used + # in the new Promise + # @overload then(rescuer, executor: executor, &block) + # @param [Proc] rescuer An optional rescue block to be executed if the + # promise is rejected. + # @param [ThreadPool] executor An optional thread pool executor to be used + # in the new Promise + def then(*args, &block) + if args.last.is_a?(::Hash) + executor = args.pop[:executor] + rescuer = args.first + else + rescuer, executor = args + end + + executor ||= @executor + + raise ArgumentError.new('rescuers and block are both missing') if rescuer.nil? && !block_given? + block = Proc.new { |result| result } unless block_given? + child = Promise.new( + parent: self, + executor: executor, + on_fulfill: block, + on_reject: rescuer + ) + + synchronize do + child.state = :pending if @state == :pending + child.on_fulfill(apply_deref_options(@value)) if @state == :fulfilled + child.on_reject(@reason) if @state == :rejected + @children << child + end + + child + end + + # Chain onto this promise an action to be undertaken on success + # (fulfillment). + # + # @yield The block to execute + # + # @return [Promise] self + def on_success(&block) + raise ArgumentError.new('no block given') unless block_given? + self.then(&block) + end + + # Chain onto this promise an action to be undertaken on failure + # (rejection). + # + # @yield The block to execute + # + # @return [Promise] self + def rescue(&block) + self.then(block) + end + + alias_method :catch, :rescue + alias_method :on_error, :rescue + + # Yield the successful result to the block that returns a promise. If that + # promise is also successful the result is the result of the yielded promise. + # If either part fails the whole also fails. + # + # @example + # Promise.execute { 1 }.flat_map { |v| Promise.execute { v + 2 } }.value! #=> 3 + # + # @return [Promise] + def flat_map(&block) + child = Promise.new( + parent: self, + executor: ImmediateExecutor.new, + ) + + on_error { |e| child.on_reject(e) } + on_success do |result1| + begin + inner = block.call(result1) + inner.execute + inner.on_success { |result2| child.on_fulfill(result2) } + inner.on_error { |e| child.on_reject(e) } + rescue => e + child.on_reject(e) + end + end + + child + end + + # Builds a promise that produces the result of promises in an Array + # and fails if any of them fails. + # + # @overload zip(*promises) + # @param [Array] promises + # + # @overload zip(*promises, opts) + # @param [Array] promises + # @param [Hash] opts the configuration options + # @option opts [Executor] :executor (ImmediateExecutor.new) when set use the given `Executor` instance. + # @option opts [Boolean] :execute (true) execute promise before returning + # + # @return [Promise] + def self.zip(*promises) + opts = promises.last.is_a?(::Hash) ? promises.pop.dup : {} + opts[:executor] ||= ImmediateExecutor.new + zero = if !opts.key?(:execute) || opts.delete(:execute) + fulfill([], opts) + else + Promise.new(opts) { [] } + end + + promises.reduce(zero) do |p1, p2| + p1.flat_map do |results| + p2.then do |next_result| + results << next_result + end + end + end + end + + # Builds a promise that produces the result of self and others in an Array + # and fails if any of them fails. + # + # @overload zip(*promises) + # @param [Array] others + # + # @overload zip(*promises, opts) + # @param [Array] others + # @param [Hash] opts the configuration options + # @option opts [Executor] :executor (ImmediateExecutor.new) when set use the given `Executor` instance. + # @option opts [Boolean] :execute (true) execute promise before returning + # + # @return [Promise] + def zip(*others) + self.class.zip(self, *others) + end + + # Aggregates a collection of promises and executes the `then` condition + # if all aggregated promises succeed. Executes the `rescue` handler with + # a `Concurrent::PromiseExecutionError` if any of the aggregated promises + # fail. Upon execution will execute any of the aggregate promises that + # were not already executed. + # + # @!macro promise_self_aggregate + # + # The returned promise will not yet have been executed. Additional `#then` + # and `#rescue` handlers may still be provided. Once the returned promise + # is execute the aggregate promises will be also be executed (if they have + # not been executed already). The results of the aggregate promises will + # be checked upon completion. The necessary `#then` and `#rescue` blocks + # on the aggregating promise will then be executed as appropriate. If the + # `#rescue` handlers are executed the raises exception will be + # `Concurrent::PromiseExecutionError`. + # + # @param [Array] promises Zero or more promises to aggregate + # @return [Promise] an unscheduled (not executed) promise that aggregates + # the promises given as arguments + def self.all?(*promises) + aggregate(:all?, *promises) + end + + # Aggregates a collection of promises and executes the `then` condition + # if any aggregated promises succeed. Executes the `rescue` handler with + # a `Concurrent::PromiseExecutionError` if any of the aggregated promises + # fail. Upon execution will execute any of the aggregate promises that + # were not already executed. + # + # @!macro promise_self_aggregate + def self.any?(*promises) + aggregate(:any?, *promises) + end + + protected + + def ns_initialize(value, opts) + super + + @executor = Options.executor_from_options(opts) || Concurrent.global_io_executor + @args = get_arguments_from(opts) + + @parent = opts.fetch(:parent) { nil } + @on_fulfill = opts.fetch(:on_fulfill) { Proc.new { |result| result } } + @on_reject = opts.fetch(:on_reject) { Proc.new { |reason| raise reason } } + + @promise_body = opts[:__promise_body_from_block__] || Proc.new { |result| result } + @state = :unscheduled + @children = [] + end + + # Aggregate a collection of zero or more promises under a composite promise, + # execute the aggregated promises and collect them into a standard Ruby array, + # call the given Ruby `Ennnumerable` predicate (such as `any?`, `all?`, `none?`, + # or `one?`) on the collection checking for the success or failure of each, + # then executing the composite's `#then` handlers if the predicate returns + # `true` or executing the composite's `#rescue` handlers if the predicate + # returns false. + # + # @!macro promise_self_aggregate + def self.aggregate(method, *promises) + composite = Promise.new do + completed = promises.collect do |promise| + promise.execute if promise.unscheduled? + promise.wait + promise + end + unless completed.empty? || completed.send(method){|promise| promise.fulfilled? } + raise PromiseExecutionError + end + end + composite + end + + # @!visibility private + def set_pending + synchronize do + @state = :pending + @children.each { |c| c.set_pending } + end + end + + # @!visibility private + def root? # :nodoc: + @parent.nil? + end + + # @!visibility private + def on_fulfill(result) + realize Proc.new { @on_fulfill.call(result) } + nil + end + + # @!visibility private + def on_reject(reason) + realize Proc.new { @on_reject.call(reason) } + nil + end + + # @!visibility private + def notify_child(child) + if_state(:fulfilled) { child.on_fulfill(apply_deref_options(@value)) } + if_state(:rejected) { child.on_reject(@reason) } + end + + # @!visibility private + def complete(success, value, reason) + children_to_notify = synchronize do + set_state!(success, value, reason) + @children.dup + end + + children_to_notify.each { |child| notify_child(child) } + observers.notify_and_delete_observers{ [Time.now, self.value, reason] } + end + + # @!visibility private + def realize(task) + @executor.post do + success, value, reason = SafeTaskExecutor.new(task, rescue_exception: true).execute(*@args) + complete(success, value, reason) + end + end + + # @!visibility private + def set_state!(success, value, reason) + set_state(success, value, reason) + event.set + end + + # @!visibility private + def synchronized_set_state!(success, value, reason) + synchronize { set_state!(success, value, reason) } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promises.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promises.rb new file mode 100644 index 0000000000..5c5853ceb4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/promises.rb @@ -0,0 +1,1936 @@ +require 'concurrent/synchronization' +require 'concurrent/atomic/atomic_boolean' +require 'concurrent/atomic/atomic_fixnum' +require 'concurrent/collection/lock_free_stack' +require 'concurrent/errors' +require 'concurrent/re_include' + +module Concurrent + + # {include:file:docs-source/promises-main.md} + module Promises + + # @!macro promises.param.default_executor + # @param [Executor, :io, :fast] default_executor Instance of an executor or a name of the + # global executor. Default executor propagates to chained futures unless overridden with + # executor parameter or changed with {AbstractEventFuture#with_default_executor}. + # + # @!macro promises.param.executor + # @param [Executor, :io, :fast] executor Instance of an executor or a name of the + # global executor. The task is executed on it, default executor remains unchanged. + # + # @!macro promises.param.args + # @param [Object] args arguments which are passed to the task when it's executed. + # (It might be prepended with other arguments, see the @yeild section). + # + # @!macro promises.shortcut.on + # Shortcut of {#$0_on} with default `:io` executor supplied. + # @see #$0_on + # + # @!macro promises.shortcut.using + # Shortcut of {#$0_using} with default `:io` executor supplied. + # @see #$0_using + # + # @!macro promise.param.task-future + # @yieldreturn will become result of the returned Future. + # Its returned value becomes {Future#value} fulfilling it, + # raised exception becomes {Future#reason} rejecting it. + # + # @!macro promise.param.callback + # @yieldreturn is forgotten. + + # Container of all {Future}, {Event} factory methods. They are never constructed directly with + # new. + module FactoryMethods + extend ReInclude + + module Configuration + # @return [Executor, :io, :fast] the executor which is used when none is supplied + # to a factory method. The method can be overridden in the receivers of + # `include FactoryMethod` + def default_executor + :io + end + end + + include Configuration + + # @!macro promises.shortcut.on + # @return [ResolvableEvent] + def resolvable_event + resolvable_event_on default_executor + end + + # Created resolvable event, user is responsible for resolving the event once by + # {Promises::ResolvableEvent#resolve}. + # + # @!macro promises.param.default_executor + # @return [ResolvableEvent] + def resolvable_event_on(default_executor = self.default_executor) + ResolvableEventPromise.new(default_executor).future + end + + # @!macro promises.shortcut.on + # @return [ResolvableFuture] + def resolvable_future + resolvable_future_on default_executor + end + + # Creates resolvable future, user is responsible for resolving the future once by + # {Promises::ResolvableFuture#resolve}, {Promises::ResolvableFuture#fulfill}, + # or {Promises::ResolvableFuture#reject} + # + # @!macro promises.param.default_executor + # @return [ResolvableFuture] + def resolvable_future_on(default_executor = self.default_executor) + ResolvableFuturePromise.new(default_executor).future + end + + # @!macro promises.shortcut.on + # @return [Future] + def future(*args, &task) + future_on(default_executor, *args, &task) + end + + # @!macro promises.future-on1 + # Constructs new Future which will be resolved after block is evaluated on default executor. + # Evaluation begins immediately. + # + # @!macro promises.future-on2 + # @!macro promises.param.default_executor + # @!macro promises.param.args + # @yield [*args] to the task. + # @!macro promise.param.task-future + # @return [Future] + def future_on(default_executor, *args, &task) + ImmediateEventPromise.new(default_executor).future.then(*args, &task) + end + + # Creates resolved future with will be either fulfilled with the given value or rejection with + # the given reason. + # + # @!macro promises.param.default_executor + # @return [Future] + def resolved_future(fulfilled, value, reason, default_executor = self.default_executor) + ImmediateFuturePromise.new(default_executor, fulfilled, value, reason).future + end + + # Creates resolved future with will be fulfilled with the given value. + # + # @!macro promises.param.default_executor + # @return [Future] + def fulfilled_future(value, default_executor = self.default_executor) + resolved_future true, value, nil, default_executor + end + + # Creates resolved future with will be rejected with the given reason. + # + # @!macro promises.param.default_executor + # @return [Future] + def rejected_future(reason, default_executor = self.default_executor) + resolved_future false, nil, reason, default_executor + end + + # Creates resolved event. + # + # @!macro promises.param.default_executor + # @return [Event] + def resolved_event(default_executor = self.default_executor) + ImmediateEventPromise.new(default_executor).event + end + + # General constructor. Behaves differently based on the argument's type. It's provided for convenience + # but it's better to be explicit. + # + # @see rejected_future, resolved_event, fulfilled_future + # @!macro promises.param.default_executor + # @return [Event, Future] + # + # @overload create(nil, default_executor = self.default_executor) + # @param [nil] nil + # @return [Event] resolved event. + # + # @overload create(a_future, default_executor = self.default_executor) + # @param [Future] a_future + # @return [Future] a future which will be resolved when a_future is. + # + # @overload create(an_event, default_executor = self.default_executor) + # @param [Event] an_event + # @return [Event] an event which will be resolved when an_event is. + # + # @overload create(exception, default_executor = self.default_executor) + # @param [Exception] exception + # @return [Future] a rejected future with the exception as its reason. + # + # @overload create(value, default_executor = self.default_executor) + # @param [Object] value when none of the above overloads fits + # @return [Future] a fulfilled future with the value. + def make_future(argument = nil, default_executor = self.default_executor) + case argument + when AbstractEventFuture + # returning wrapper would change nothing + argument + when Exception + rejected_future argument, default_executor + when nil + resolved_event default_executor + else + fulfilled_future argument, default_executor + end + end + + # @!macro promises.shortcut.on + # @return [Future] + def delay(*args, &task) + delay_on default_executor, *args, &task + end + + # @!macro promises.future-on1 + # The task will be evaluated only after the future is touched, see {AbstractEventFuture#touch} + # + # @!macro promises.future-on2 + def delay_on(default_executor, *args, &task) + DelayPromise.new(default_executor).event.chain(*args, &task) + end + + # @!macro promises.shortcut.on + # @return [Future] + def schedule(intended_time, *args, &task) + schedule_on default_executor, intended_time, *args, &task + end + + # @!macro promises.future-on1 + # The task is planned for execution in intended_time. + # + # @!macro promises.future-on2 + # @!macro promises.param.intended_time + # @param [Numeric, Time] intended_time `Numeric` means to run in `intended_time` seconds. + # `Time` means to run on `intended_time`. + def schedule_on(default_executor, intended_time, *args, &task) + ScheduledPromise.new(default_executor, intended_time).event.chain(*args, &task) + end + + # @!macro promises.shortcut.on + # @return [Future] + def zip_futures(*futures_and_or_events) + zip_futures_on default_executor, *futures_and_or_events + end + + # Creates new future which is resolved after all futures_and_or_events are resolved. + # Its value is array of zipped future values. Its reason is array of reasons for rejection. + # If there is an error it rejects. + # @!macro promises.event-conversion + # If event is supplied, which does not have value and can be only resolved, it's + # represented as `:fulfilled` with value `nil`. + # + # @!macro promises.param.default_executor + # @param [AbstractEventFuture] futures_and_or_events + # @return [Future] + def zip_futures_on(default_executor, *futures_and_or_events) + ZipFuturesPromise.new_blocked_by(futures_and_or_events, default_executor).future + end + + alias_method :zip, :zip_futures + + # @!macro promises.shortcut.on + # @return [Event] + def zip_events(*futures_and_or_events) + zip_events_on default_executor, *futures_and_or_events + end + + # Creates new event which is resolved after all futures_and_or_events are resolved. + # (Future is resolved when fulfilled or rejected.) + # + # @!macro promises.param.default_executor + # @param [AbstractEventFuture] futures_and_or_events + # @return [Event] + def zip_events_on(default_executor, *futures_and_or_events) + ZipEventsPromise.new_blocked_by(futures_and_or_events, default_executor).event + end + + # @!macro promises.shortcut.on + # @return [Future] + def any_resolved_future(*futures_and_or_events) + any_resolved_future_on default_executor, *futures_and_or_events + end + + alias_method :any, :any_resolved_future + + # Creates new future which is resolved after first futures_and_or_events is resolved. + # Its result equals result of the first resolved future. + # @!macro promises.any-touch + # If resolved it does not propagate {AbstractEventFuture#touch}, leaving delayed + # futures un-executed if they are not required any more. + # @!macro promises.event-conversion + # + # @!macro promises.param.default_executor + # @param [AbstractEventFuture] futures_and_or_events + # @return [Future] + def any_resolved_future_on(default_executor, *futures_and_or_events) + AnyResolvedFuturePromise.new_blocked_by(futures_and_or_events, default_executor).future + end + + # @!macro promises.shortcut.on + # @return [Future] + def any_fulfilled_future(*futures_and_or_events) + any_fulfilled_future_on default_executor, *futures_and_or_events + end + + # Creates new future which is resolved after first of futures_and_or_events is fulfilled. + # Its result equals result of the first resolved future or if all futures_and_or_events reject, + # it has reason of the last resolved future. + # @!macro promises.any-touch + # @!macro promises.event-conversion + # + # @!macro promises.param.default_executor + # @param [AbstractEventFuture] futures_and_or_events + # @return [Future] + def any_fulfilled_future_on(default_executor, *futures_and_or_events) + AnyFulfilledFuturePromise.new_blocked_by(futures_and_or_events, default_executor).future + end + + # @!macro promises.shortcut.on + # @return [Future] + def any_event(*futures_and_or_events) + any_event_on default_executor, *futures_and_or_events + end + + # Creates new event which becomes resolved after first of the futures_and_or_events resolves. + # @!macro promises.any-touch + # + # @!macro promises.param.default_executor + # @param [AbstractEventFuture] futures_and_or_events + # @return [Event] + def any_event_on(default_executor, *futures_and_or_events) + AnyResolvedEventPromise.new_blocked_by(futures_and_or_events, default_executor).event + end + + # TODO consider adding first(count, *futures) + # TODO consider adding zip_by(slice, *futures) processing futures in slices + # TODO or rather a generic aggregator taking a function + end + + module InternalStates + # @private + class State + def resolved? + raise NotImplementedError + end + + def to_sym + raise NotImplementedError + end + end + + private_constant :State + + # @private + class Pending < State + def resolved? + false + end + + def to_sym + :pending + end + end + + private_constant :Pending + + # @private + class ResolvedWithResult < State + def resolved? + true + end + + def to_sym + :resolved + end + + def result + [fulfilled?, value, reason] + end + + def fulfilled? + raise NotImplementedError + end + + def value + raise NotImplementedError + end + + def reason + raise NotImplementedError + end + + def apply + raise NotImplementedError + end + end + + private_constant :ResolvedWithResult + + # @private + class Fulfilled < ResolvedWithResult + + def initialize(value) + @Value = value + end + + def fulfilled? + true + end + + def apply(args, block) + block.call value, *args + end + + def value + @Value + end + + def reason + nil + end + + def to_sym + :fulfilled + end + end + + private_constant :Fulfilled + + # @private + class FulfilledArray < Fulfilled + def apply(args, block) + block.call(*value, *args) + end + end + + private_constant :FulfilledArray + + # @private + class Rejected < ResolvedWithResult + def initialize(reason) + @Reason = reason + end + + def fulfilled? + false + end + + def value + nil + end + + def reason + @Reason + end + + def to_sym + :rejected + end + + def apply(args, block) + block.call reason, *args + end + end + + private_constant :Rejected + + # @private + class PartiallyRejected < ResolvedWithResult + def initialize(value, reason) + super() + @Value = value + @Reason = reason + end + + def fulfilled? + false + end + + def to_sym + :rejected + end + + def value + @Value + end + + def reason + @Reason + end + + def apply(args, block) + block.call(*reason, *args) + end + end + + private_constant :PartiallyRejected + + PENDING = Pending.new + RESOLVED = Fulfilled.new(nil) + + def RESOLVED.to_sym + :resolved + end + + private_constant :PENDING, :RESOLVED + end + + private_constant :InternalStates + + # Common ancestor of {Event} and {Future} classes, many shared methods are defined here. + class AbstractEventFuture < Synchronization::Object + safe_initialization! + private(*attr_atomic(:internal_state) - [:internal_state]) + + include InternalStates + + def initialize(promise, default_executor) + super() + @Lock = Mutex.new + @Condition = ConditionVariable.new + @Promise = promise + @DefaultExecutor = default_executor + @Callbacks = LockFreeStack.new + @Waiters = AtomicFixnum.new 0 + self.internal_state = PENDING + end + + private :initialize + + # @!macro promises.shortcut.event-future + # @see Event#$0 + # @see Future#$0 + + # @!macro promises.param.timeout + # @param [Numeric] timeout the maximum time in second to wait. + + # @!macro promises.warn.blocks + # @note This function potentially blocks current thread until the Future is resolved. + # Be careful it can deadlock. Try to chain instead. + + # Returns its state. + # @return [Symbol] + # + # @overload an_event.state + # @return [:pending, :resolved] + # @overload a_future.state + # Both :fulfilled, :rejected implies :resolved. + # @return [:pending, :fulfilled, :rejected] + def state + internal_state.to_sym + end + + # Is it in pending state? + # @return [Boolean] + def pending? + !internal_state.resolved? + end + + # Is it in resolved state? + # @return [Boolean] + def resolved? + internal_state.resolved? + end + + # Propagates touch. Requests all the delayed futures, which it depends on, to be + # executed. This method is called by any other method requiring resolved state, like {#wait}. + # @return [self] + def touch + @Promise.touch + self + end + + # @!macro promises.touches + # Calls {AbstractEventFuture#touch}. + + # @!macro promises.method.wait + # Wait (block the Thread) until receiver is {#resolved?}. + # @!macro promises.touches + # + # @!macro promises.warn.blocks + # @!macro promises.param.timeout + # @return [Future, true, false] self implies timeout was not used, true implies timeout was used + # and it was resolved, false implies it was not resolved within timeout. + def wait(timeout = nil) + result = wait_until_resolved(timeout) + timeout ? result : self + end + + # Returns default executor. + # @return [Executor] default executor + # @see #with_default_executor + # @see FactoryMethods#future_on + # @see FactoryMethods#resolvable_future + # @see FactoryMethods#any_fulfilled_future_on + # @see similar + def default_executor + @DefaultExecutor + end + + # @!macro promises.shortcut.on + # @return [Future] + def chain(*args, &task) + chain_on @DefaultExecutor, *args, &task + end + + # Chains the task to be executed asynchronously on executor after it is resolved. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @return [Future] + # @!macro promise.param.task-future + # + # @overload an_event.chain_on(executor, *args, &task) + # @yield [*args] to the task. + # @overload a_future.chain_on(executor, *args, &task) + # @yield [fulfilled, value, reason, *args] to the task. + # @yieldparam [true, false] fulfilled + # @yieldparam [Object] value + # @yieldparam [Exception] reason + def chain_on(executor, *args, &task) + ChainPromise.new_blocked_by1(self, @DefaultExecutor, executor, args, &task).future + end + + # @return [String] Short string representation. + def to_s + format '%s %s>', super[0..-2], state + end + + alias_method :inspect, :to_s + + # Resolves the resolvable when receiver is resolved. + # + # @param [Resolvable] resolvable + # @return [self] + def chain_resolvable(resolvable) + on_resolution! { resolvable.resolve_with internal_state } + end + + alias_method :tangle, :chain_resolvable + + # @!macro promises.shortcut.using + # @return [self] + def on_resolution(*args, &callback) + on_resolution_using @DefaultExecutor, *args, &callback + end + + # Stores the callback to be executed synchronously on resolving thread after it is + # resolved. + # + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # + # @overload an_event.on_resolution!(*args, &callback) + # @yield [*args] to the callback. + # @overload a_future.on_resolution!(*args, &callback) + # @yield [fulfilled, value, reason, *args] to the callback. + # @yieldparam [true, false] fulfilled + # @yieldparam [Object] value + # @yieldparam [Exception] reason + def on_resolution!(*args, &callback) + add_callback :callback_on_resolution, args, callback + end + + # Stores the callback to be executed asynchronously on executor after it is resolved. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # + # @overload an_event.on_resolution_using(executor, *args, &callback) + # @yield [*args] to the callback. + # @overload a_future.on_resolution_using(executor, *args, &callback) + # @yield [fulfilled, value, reason, *args] to the callback. + # @yieldparam [true, false] fulfilled + # @yieldparam [Object] value + # @yieldparam [Exception] reason + def on_resolution_using(executor, *args, &callback) + add_callback :async_callback_on_resolution, executor, args, callback + end + + # @!macro promises.method.with_default_executor + # Crates new object with same class with the executor set as its new default executor. + # Any futures depending on it will use the new default executor. + # @!macro promises.shortcut.event-future + # @abstract + # @return [AbstractEventFuture] + def with_default_executor(executor) + raise NotImplementedError + end + + # @!visibility private + def resolve_with(state, raise_on_reassign = true) + if compare_and_set_internal_state(PENDING, state) + # go to synchronized block only if there were waiting threads + @Lock.synchronize { @Condition.broadcast } unless @Waiters.value == 0 + call_callbacks state + else + return rejected_resolution(raise_on_reassign, state) + end + self + end + + # For inspection. + # @!visibility private + # @return [Array] + def blocks + @Callbacks.each_with_object([]) do |(method, args), promises| + promises.push(args[0]) if method == :callback_notify_blocked + end + end + + # For inspection. + # @!visibility private + def callbacks + @Callbacks.each.to_a + end + + # For inspection. + # @!visibility private + def promise + @Promise + end + + # For inspection. + # @!visibility private + def touched? + promise.touched? + end + + # For inspection. + # @!visibility private + def waiting_threads + @Waiters.each.to_a + end + + # @!visibility private + def add_callback_notify_blocked(promise, index) + add_callback :callback_notify_blocked, promise, index + end + + # @!visibility private + def add_callback_clear_delayed_node(node) + add_callback(:callback_clear_delayed_node, node) + end + + private + + def add_callback(method, *args) + state = internal_state + if state.resolved? + call_callback method, state, args + else + @Callbacks.push [method, args] + state = internal_state + # take back if it was resolved in the meanwhile + call_callbacks state if state.resolved? + end + self + end + + def callback_clear_delayed_node(state, node) + node.value = nil + end + + # @return [Boolean] + def wait_until_resolved(timeout) + return true if resolved? + + touch + + @Lock.synchronize do + @Waiters.increment + begin + unless resolved? + @Condition.wait @Lock, timeout + end + ensure + # JRuby may raise ConcurrencyError + @Waiters.decrement + end + end + resolved? + end + + def call_callback(method, state, args) + self.send method, state, *args + end + + def call_callbacks(state) + method, args = @Callbacks.pop + while method + call_callback method, state, args + method, args = @Callbacks.pop + end + end + + def with_async(executor, *args, &block) + Concurrent.executor(executor).post(*args, &block) + end + + def async_callback_on_resolution(state, executor, args, callback) + with_async(executor, state, args, callback) do |st, ar, cb| + callback_on_resolution st, ar, cb + end + end + + def callback_notify_blocked(state, promise, index) + promise.on_blocker_resolution self, index + end + end + + # Represents an event which will happen in future (will be resolved). The event is either + # pending or resolved. It should be always resolved. Use {Future} to communicate rejections and + # cancellation. + class Event < AbstractEventFuture + + alias_method :then, :chain + + + # @!macro promises.method.zip + # Creates a new event or a future which will be resolved when receiver and other are. + # Returns an event if receiver and other are events, otherwise returns a future. + # If just one of the parties is Future then the result + # of the returned future is equal to the result of the supplied future. If both are futures + # then the result is as described in {FactoryMethods#zip_futures_on}. + # + # @return [Future, Event] + def zip(other) + if other.is_a?(Future) + ZipFutureEventPromise.new_blocked_by2(other, self, @DefaultExecutor).future + else + ZipEventEventPromise.new_blocked_by2(self, other, @DefaultExecutor).event + end + end + + alias_method :&, :zip + + # Creates a new event which will be resolved when the first of receiver, `event_or_future` + # resolves. + # + # @return [Event] + def any(event_or_future) + AnyResolvedEventPromise.new_blocked_by2(self, event_or_future, @DefaultExecutor).event + end + + alias_method :|, :any + + # Creates new event dependent on receiver which will not evaluate until touched, see {#touch}. + # In other words, it inserts delay into the chain of Futures making rest of it lazy evaluated. + # + # @return [Event] + def delay + event = DelayPromise.new(@DefaultExecutor).event + ZipEventEventPromise.new_blocked_by2(self, event, @DefaultExecutor).event + end + + # @!macro promise.method.schedule + # Creates new event dependent on receiver scheduled to execute on/in intended_time. + # In time is interpreted from the moment the receiver is resolved, therefore it inserts + # delay into the chain. + # + # @!macro promises.param.intended_time + # @return [Event] + def schedule(intended_time) + chain do + event = ScheduledPromise.new(@DefaultExecutor, intended_time).event + ZipEventEventPromise.new_blocked_by2(self, event, @DefaultExecutor).event + end.flat_event + end + + # Converts event to a future. The future is fulfilled when the event is resolved, the future may never fail. + # + # @return [Future] + def to_future + future = Promises.resolvable_future + ensure + chain_resolvable(future) + end + + # Returns self, since this is event + # @return [Event] + def to_event + self + end + + # @!macro promises.method.with_default_executor + # @return [Event] + def with_default_executor(executor) + EventWrapperPromise.new_blocked_by1(self, executor).event + end + + private + + def rejected_resolution(raise_on_reassign, state) + Concurrent::MultipleAssignmentError.new('Event can be resolved only once') if raise_on_reassign + return false + end + + def callback_on_resolution(state, args, callback) + callback.call(*args) + end + end + + # Represents a value which will become available in future. May reject with a reason instead, + # e.g. when the tasks raises an exception. + class Future < AbstractEventFuture + + # Is it in fulfilled state? + # @return [Boolean] + def fulfilled? + state = internal_state + state.resolved? && state.fulfilled? + end + + # Is it in rejected state? + # @return [Boolean] + def rejected? + state = internal_state + state.resolved? && !state.fulfilled? + end + + # @!macro promises.warn.nil + # @note Make sure returned `nil` is not confused with timeout, no value when rejected, + # no reason when fulfilled, etc. + # Use more exact methods if needed, like {#wait}, {#value!}, {#result}, etc. + + # @!macro promises.method.value + # Return value of the future. + # @!macro promises.touches + # + # @!macro promises.warn.blocks + # @!macro promises.warn.nil + # @!macro promises.param.timeout + # @return [Object, nil] the value of the Future when fulfilled, nil on timeout or rejection. + def value(timeout = nil) + internal_state.value if wait_until_resolved timeout + end + + # Returns reason of future's rejection. + # @!macro promises.touches + # + # @!macro promises.warn.blocks + # @!macro promises.warn.nil + # @!macro promises.param.timeout + # @return [Exception, nil] nil on timeout or fulfillment. + def reason(timeout = nil) + internal_state.reason if wait_until_resolved timeout + end + + # Returns triplet fulfilled?, value, reason. + # @!macro promises.touches + # + # @!macro promises.warn.blocks + # @!macro promises.param.timeout + # @return [Array(Boolean, Object, Exception), nil] triplet of fulfilled?, value, reason, or nil + # on timeout. + def result(timeout = nil) + internal_state.result if wait_until_resolved timeout + end + + # @!macro promises.method.wait + # @raise [Exception] {#reason} on rejection + def wait!(timeout = nil) + result = wait_until_resolved!(timeout) + timeout ? result : self + end + + # @!macro promises.method.value + # @return [Object, nil] the value of the Future when fulfilled, nil on timeout. + # @raise [Exception] {#reason} on rejection + def value!(timeout = nil) + internal_state.value if wait_until_resolved! timeout + end + + # Allows rejected Future to be risen with `raise` method. + # @example + # raise Promises.rejected_future(StandardError.new("boom")) + # @raise [StandardError] when raising not rejected future + # @return [Exception] + def exception(*args) + raise Concurrent::Error, 'it is not rejected' unless rejected? + reason = Array(internal_state.reason).flatten.compact + if reason.size > 1 + ex = Concurrent::MultipleErrors.new reason + ex.set_backtrace(caller) + ex + else + ex = reason[0].clone.exception(*args) + ex.set_backtrace Array(ex.backtrace) + caller + ex + end + end + + # @!macro promises.shortcut.on + # @return [Future] + def then(*args, &task) + then_on @DefaultExecutor, *args, &task + end + + # Chains the task to be executed asynchronously on executor after it fulfills. Does not run + # the task if it rejects. It will resolve though, triggering any dependent futures. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @!macro promise.param.task-future + # @return [Future] + # @yield [value, *args] to the task. + def then_on(executor, *args, &task) + ThenPromise.new_blocked_by1(self, @DefaultExecutor, executor, args, &task).future + end + + # @!macro promises.shortcut.on + # @return [Future] + def rescue(*args, &task) + rescue_on @DefaultExecutor, *args, &task + end + + # Chains the task to be executed asynchronously on executor after it rejects. Does not run + # the task if it fulfills. It will resolve though, triggering any dependent futures. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @!macro promise.param.task-future + # @return [Future] + # @yield [reason, *args] to the task. + def rescue_on(executor, *args, &task) + RescuePromise.new_blocked_by1(self, @DefaultExecutor, executor, args, &task).future + end + + # @!macro promises.method.zip + # @return [Future] + def zip(other) + if other.is_a?(Future) + ZipFuturesPromise.new_blocked_by2(self, other, @DefaultExecutor).future + else + ZipFutureEventPromise.new_blocked_by2(self, other, @DefaultExecutor).future + end + end + + alias_method :&, :zip + + # Creates a new event which will be resolved when the first of receiver, `event_or_future` + # resolves. Returning future will have value nil if event_or_future is event and resolves + # first. + # + # @return [Future] + def any(event_or_future) + AnyResolvedFuturePromise.new_blocked_by2(self, event_or_future, @DefaultExecutor).future + end + + alias_method :|, :any + + # Creates new future dependent on receiver which will not evaluate until touched, see {#touch}. + # In other words, it inserts delay into the chain of Futures making rest of it lazy evaluated. + # + # @return [Future] + def delay + event = DelayPromise.new(@DefaultExecutor).event + ZipFutureEventPromise.new_blocked_by2(self, event, @DefaultExecutor).future + end + + # @!macro promise.method.schedule + # @return [Future] + def schedule(intended_time) + chain do + event = ScheduledPromise.new(@DefaultExecutor, intended_time).event + ZipFutureEventPromise.new_blocked_by2(self, event, @DefaultExecutor).future + end.flat + end + + # @!macro promises.method.with_default_executor + # @return [Future] + def with_default_executor(executor) + FutureWrapperPromise.new_blocked_by1(self, executor).future + end + + # Creates new future which will have result of the future returned by receiver. If receiver + # rejects it will have its rejection. + # + # @param [Integer] level how many levels of futures should flatten + # @return [Future] + def flat_future(level = 1) + FlatFuturePromise.new_blocked_by1(self, level, @DefaultExecutor).future + end + + alias_method :flat, :flat_future + + # Creates new event which will be resolved when the returned event by receiver is. + # Be careful if the receiver rejects it will just resolve since Event does not hold reason. + # + # @return [Event] + def flat_event + FlatEventPromise.new_blocked_by1(self, @DefaultExecutor).event + end + + # @!macro promises.shortcut.using + # @return [self] + def on_fulfillment(*args, &callback) + on_fulfillment_using @DefaultExecutor, *args, &callback + end + + # Stores the callback to be executed synchronously on resolving thread after it is + # fulfilled. Does nothing on rejection. + # + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # @yield [value, *args] to the callback. + def on_fulfillment!(*args, &callback) + add_callback :callback_on_fulfillment, args, callback + end + + # Stores the callback to be executed asynchronously on executor after it is + # fulfilled. Does nothing on rejection. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # @yield [value, *args] to the callback. + def on_fulfillment_using(executor, *args, &callback) + add_callback :async_callback_on_fulfillment, executor, args, callback + end + + # @!macro promises.shortcut.using + # @return [self] + def on_rejection(*args, &callback) + on_rejection_using @DefaultExecutor, *args, &callback + end + + # Stores the callback to be executed synchronously on resolving thread after it is + # rejected. Does nothing on fulfillment. + # + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # @yield [reason, *args] to the callback. + def on_rejection!(*args, &callback) + add_callback :callback_on_rejection, args, callback + end + + # Stores the callback to be executed asynchronously on executor after it is + # rejected. Does nothing on fulfillment. + # + # @!macro promises.param.executor + # @!macro promises.param.args + # @!macro promise.param.callback + # @return [self] + # @yield [reason, *args] to the callback. + def on_rejection_using(executor, *args, &callback) + add_callback :async_callback_on_rejection, executor, args, callback + end + + # Allows to use futures as green threads. The receiver has to evaluate to a future which + # represents what should be done next. It basically flattens indefinitely until non Future + # values is returned which becomes result of the returned future. Any encountered exception + # will become reason of the returned future. + # + # @return [Future] + # @example + # body = lambda do |v| + # v += 1 + # v < 5 ? Promises.future(v, &body) : v + # end + # Promises.future(0, &body).run.value! # => 5 + def run + RunFuturePromise.new_blocked_by1(self, @DefaultExecutor).future + end + + # @!visibility private + def apply(args, block) + internal_state.apply args, block + end + + # Converts future to event which is resolved when future is resolved by fulfillment or rejection. + # + # @return [Event] + def to_event + event = Promises.resolvable_event + ensure + chain_resolvable(event) + end + + # Returns self, since this is a future + # @return [Future] + def to_future + self + end + + private + + def rejected_resolution(raise_on_reassign, state) + if raise_on_reassign + raise Concurrent::MultipleAssignmentError.new( + "Future can be resolved only once. It's #{result}, trying to set #{state.result}.", + current_result: result, new_result: state.result) + end + return false + end + + def wait_until_resolved!(timeout = nil) + result = wait_until_resolved(timeout) + raise self if rejected? + result + end + + def async_callback_on_fulfillment(state, executor, args, callback) + with_async(executor, state, args, callback) do |st, ar, cb| + callback_on_fulfillment st, ar, cb + end + end + + def async_callback_on_rejection(state, executor, args, callback) + with_async(executor, state, args, callback) do |st, ar, cb| + callback_on_rejection st, ar, cb + end + end + + def callback_on_fulfillment(state, args, callback) + state.apply args, callback if state.fulfilled? + end + + def callback_on_rejection(state, args, callback) + state.apply args, callback unless state.fulfilled? + end + + def callback_on_resolution(state, args, callback) + callback.call(*state.result, *args) + end + + end + + # Marker module of Future, Event resolved manually by user. + module Resolvable + end + + # A Event which can be resolved by user. + class ResolvableEvent < Event + include Resolvable + + + # @!macro raise_on_reassign + # @raise [MultipleAssignmentError] when already resolved and raise_on_reassign is true. + + # @!macro promise.param.raise_on_reassign + # @param [Boolean] raise_on_reassign should method raise exception if already resolved + # @return [self, false] false is returner when raise_on_reassign is false and the receiver + # is already resolved. + # + + # Makes the event resolved, which triggers all dependent futures. + # + # @!macro promise.param.raise_on_reassign + def resolve(raise_on_reassign = true) + resolve_with RESOLVED, raise_on_reassign + end + + # Creates new event wrapping receiver, effectively hiding the resolve method. + # + # @return [Event] + def with_hidden_resolvable + @with_hidden_resolvable ||= EventWrapperPromise.new_blocked_by1(self, @DefaultExecutor).event + end + end + + # A Future which can be resolved by user. + class ResolvableFuture < Future + include Resolvable + + # Makes the future resolved with result of triplet `fulfilled?`, `value`, `reason`, + # which triggers all dependent futures. + # + # @!macro promise.param.raise_on_reassign + def resolve(fulfilled = true, value = nil, reason = nil, raise_on_reassign = true) + resolve_with(fulfilled ? Fulfilled.new(value) : Rejected.new(reason), raise_on_reassign) + end + + # Makes the future fulfilled with `value`, + # which triggers all dependent futures. + # + # @!macro promise.param.raise_on_reassign + def fulfill(value, raise_on_reassign = true) + promise.fulfill(value, raise_on_reassign) + end + + # Makes the future rejected with `reason`, + # which triggers all dependent futures. + # + # @!macro promise.param.raise_on_reassign + def reject(reason, raise_on_reassign = true) + promise.reject(reason, raise_on_reassign) + end + + # Evaluates the block and sets its result as future's value fulfilling, if the block raises + # an exception the future rejects with it. + # @yield [*args] to the block. + # @yieldreturn [Object] value + # @return [self] + def evaluate_to(*args, &block) + promise.evaluate_to(*args, block) + end + + # Evaluates the block and sets its result as future's value fulfilling, if the block raises + # an exception the future rejects with it. + # @yield [*args] to the block. + # @yieldreturn [Object] value + # @return [self] + # @raise [Exception] also raise reason on rejection. + def evaluate_to!(*args, &block) + promise.evaluate_to(*args, block).wait! + end + + # Creates new future wrapping receiver, effectively hiding the resolve method and similar. + # + # @return [Future] + def with_hidden_resolvable + @with_hidden_resolvable ||= FutureWrapperPromise.new_blocked_by1(self, @DefaultExecutor).future + end + end + + # @abstract + # @private + class AbstractPromise < Synchronization::Object + safe_initialization! + include InternalStates + + def initialize(future) + super() + @Future = future + end + + def future + @Future + end + + alias_method :event, :future + + def default_executor + future.default_executor + end + + def state + future.state + end + + def touch + end + + def to_s + format '%s %s>', super[0..-2], @Future + end + + alias_method :inspect, :to_s + + def delayed_because + nil + end + + private + + def resolve_with(new_state, raise_on_reassign = true) + @Future.resolve_with(new_state, raise_on_reassign) + end + + # @return [Future] + def evaluate_to(*args, block) + resolve_with Fulfilled.new(block.call(*args)) + rescue Exception => error + resolve_with Rejected.new(error) + raise error unless error.is_a?(StandardError) + end + end + + class ResolvableEventPromise < AbstractPromise + def initialize(default_executor) + super ResolvableEvent.new(self, default_executor) + end + end + + class ResolvableFuturePromise < AbstractPromise + def initialize(default_executor) + super ResolvableFuture.new(self, default_executor) + end + + def fulfill(value, raise_on_reassign) + resolve_with Fulfilled.new(value), raise_on_reassign + end + + def reject(reason, raise_on_reassign) + resolve_with Rejected.new(reason), raise_on_reassign + end + + public :evaluate_to + end + + # @abstract + class InnerPromise < AbstractPromise + end + + # @abstract + class BlockedPromise < InnerPromise + + private_class_method :new + + def self.new_blocked_by1(blocker, *args, &block) + blocker_delayed = blocker.promise.delayed_because + promise = new(blocker_delayed, 1, *args, &block) + blocker.add_callback_notify_blocked promise, 0 + promise + end + + def self.new_blocked_by2(blocker1, blocker2, *args, &block) + blocker_delayed1 = blocker1.promise.delayed_because + blocker_delayed2 = blocker2.promise.delayed_because + delayed = if blocker_delayed1 && blocker_delayed2 + # TODO (pitr-ch 23-Dec-2016): use arrays when we know it will not grow (only flat adds delay) + LockFreeStack.of2(blocker_delayed1, blocker_delayed2) + else + blocker_delayed1 || blocker_delayed2 + end + promise = new(delayed, 2, *args, &block) + blocker1.add_callback_notify_blocked promise, 0 + blocker2.add_callback_notify_blocked promise, 1 + promise + end + + def self.new_blocked_by(blockers, *args, &block) + delayed = blockers.reduce(nil) { |d, f| add_delayed d, f.promise.delayed_because } + promise = new(delayed, blockers.size, *args, &block) + blockers.each_with_index { |f, i| f.add_callback_notify_blocked promise, i } + promise + end + + def self.add_delayed(delayed1, delayed2) + if delayed1 && delayed2 + delayed1.push delayed2 + delayed1 + else + delayed1 || delayed2 + end + end + + def initialize(delayed, blockers_count, future) + super(future) + @Delayed = delayed + @Countdown = AtomicFixnum.new blockers_count + end + + def on_blocker_resolution(future, index) + countdown = process_on_blocker_resolution(future, index) + resolvable = resolvable?(countdown, future, index) + + on_resolvable(future, index) if resolvable + end + + def delayed_because + @Delayed + end + + def touch + clear_and_propagate_touch + end + + # for inspection only + def blocked_by + blocked_by = [] + ObjectSpace.each_object(AbstractEventFuture) { |o| blocked_by.push o if o.blocks.include? self } + blocked_by + end + + private + + def clear_and_propagate_touch(stack_or_element = @Delayed) + return if stack_or_element.nil? + + if stack_or_element.is_a? LockFreeStack + stack_or_element.clear_each { |element| clear_and_propagate_touch element } + else + stack_or_element.touch unless stack_or_element.nil? # if still present + end + end + + # @return [true,false] if resolvable + def resolvable?(countdown, future, index) + countdown.zero? + end + + def process_on_blocker_resolution(future, index) + @Countdown.decrement + end + + def on_resolvable(resolved_future, index) + raise NotImplementedError + end + end + + # @abstract + class BlockedTaskPromise < BlockedPromise + def initialize(delayed, blockers_count, default_executor, executor, args, &task) + raise ArgumentError, 'no block given' unless block_given? + super delayed, 1, Future.new(self, default_executor) + @Executor = executor + @Task = task + @Args = args + end + + def executor + @Executor + end + end + + class ThenPromise < BlockedTaskPromise + private + + def initialize(delayed, blockers_count, default_executor, executor, args, &task) + super delayed, blockers_count, default_executor, executor, args, &task + end + + def on_resolvable(resolved_future, index) + if resolved_future.fulfilled? + Concurrent.executor(@Executor).post(resolved_future, @Args, @Task) do |future, args, task| + evaluate_to lambda { future.apply args, task } + end + else + resolve_with resolved_future.internal_state + end + end + end + + class RescuePromise < BlockedTaskPromise + private + + def initialize(delayed, blockers_count, default_executor, executor, args, &task) + super delayed, blockers_count, default_executor, executor, args, &task + end + + def on_resolvable(resolved_future, index) + if resolved_future.rejected? + Concurrent.executor(@Executor).post(resolved_future, @Args, @Task) do |future, args, task| + evaluate_to lambda { future.apply args, task } + end + else + resolve_with resolved_future.internal_state + end + end + end + + class ChainPromise < BlockedTaskPromise + private + + def on_resolvable(resolved_future, index) + if Future === resolved_future + Concurrent.executor(@Executor).post(resolved_future, @Args, @Task) do |future, args, task| + evaluate_to(*future.result, *args, task) + end + else + Concurrent.executor(@Executor).post(@Args, @Task) do |args, task| + evaluate_to(*args, task) + end + end + end + end + + # will be immediately resolved + class ImmediateEventPromise < InnerPromise + def initialize(default_executor) + super Event.new(self, default_executor).resolve_with(RESOLVED) + end + end + + class ImmediateFuturePromise < InnerPromise + def initialize(default_executor, fulfilled, value, reason) + super Future.new(self, default_executor). + resolve_with(fulfilled ? Fulfilled.new(value) : Rejected.new(reason)) + end + end + + class AbstractFlatPromise < BlockedPromise + + def initialize(delayed_because, blockers_count, event_or_future) + delayed = LockFreeStack.of1(self) + super(delayed, blockers_count, event_or_future) + # noinspection RubyArgCount + @Touched = AtomicBoolean.new false + @DelayedBecause = delayed_because || LockFreeStack.new + + event_or_future.add_callback_clear_delayed_node delayed.peek + end + + def touch + if @Touched.make_true + clear_and_propagate_touch @DelayedBecause + end + end + + private + + def touched? + @Touched.value + end + + def on_resolvable(resolved_future, index) + resolve_with resolved_future.internal_state + end + + def resolvable?(countdown, future, index) + !@Future.internal_state.resolved? && super(countdown, future, index) + end + + def add_delayed_of(future) + delayed = future.promise.delayed_because + if touched? + clear_and_propagate_touch delayed + else + BlockedPromise.add_delayed @DelayedBecause, delayed + clear_and_propagate_touch @DelayedBecause if touched? + end + end + + end + + class FlatEventPromise < AbstractFlatPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super delayed, 2, Event.new(self, default_executor) + end + + def process_on_blocker_resolution(future, index) + countdown = super(future, index) + if countdown.nonzero? + internal_state = future.internal_state + + unless internal_state.fulfilled? + resolve_with RESOLVED + return countdown + end + + value = internal_state.value + case value + when Future, Event + add_delayed_of value + value.add_callback_notify_blocked self, nil + countdown + else + resolve_with RESOLVED + end + end + countdown + end + + end + + class FlatFuturePromise < AbstractFlatPromise + + private + + def initialize(delayed, blockers_count, levels, default_executor) + raise ArgumentError, 'levels has to be higher than 0' if levels < 1 + # flat promise may result to a future having delayed futures, therefore we have to have empty stack + # to be able to add new delayed futures + super delayed || LockFreeStack.new, 1 + levels, Future.new(self, default_executor) + end + + def process_on_blocker_resolution(future, index) + countdown = super(future, index) + if countdown.nonzero? + internal_state = future.internal_state + + unless internal_state.fulfilled? + resolve_with internal_state + return countdown + end + + value = internal_state.value + case value + when Future + add_delayed_of value + value.add_callback_notify_blocked self, nil + countdown + when Event + evaluate_to(lambda { raise TypeError, 'cannot flatten to Event' }) + else + evaluate_to(lambda { raise TypeError, "returned value #{value.inspect} is not a Future" }) + end + end + countdown + end + + end + + class RunFuturePromise < AbstractFlatPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super delayed, 1, Future.new(self, default_executor) + end + + def process_on_blocker_resolution(future, index) + internal_state = future.internal_state + + unless internal_state.fulfilled? + resolve_with internal_state + return 0 + end + + value = internal_state.value + case value + when Future + add_delayed_of value + value.add_callback_notify_blocked self, nil + else + resolve_with internal_state + end + + 1 + end + end + + class ZipEventEventPromise < BlockedPromise + def initialize(delayed, blockers_count, default_executor) + super delayed, 2, Event.new(self, default_executor) + end + + private + + def on_resolvable(resolved_future, index) + resolve_with RESOLVED + end + end + + class ZipFutureEventPromise < BlockedPromise + def initialize(delayed, blockers_count, default_executor) + super delayed, 2, Future.new(self, default_executor) + @result = nil + end + + private + + def process_on_blocker_resolution(future, index) + # first blocking is future, take its result + @result = future.internal_state if index == 0 + # super has to be called after above to piggyback on volatile @Countdown + super future, index + end + + def on_resolvable(resolved_future, index) + resolve_with @result + end + end + + class EventWrapperPromise < BlockedPromise + def initialize(delayed, blockers_count, default_executor) + super delayed, 1, Event.new(self, default_executor) + end + + private + + def on_resolvable(resolved_future, index) + resolve_with RESOLVED + end + end + + class FutureWrapperPromise < BlockedPromise + def initialize(delayed, blockers_count, default_executor) + super delayed, 1, Future.new(self, default_executor) + end + + private + + def on_resolvable(resolved_future, index) + resolve_with resolved_future.internal_state + end + end + + class ZipFuturesPromise < BlockedPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super(delayed, blockers_count, Future.new(self, default_executor)) + @Resolutions = ::Array.new(blockers_count, nil) + + on_resolvable nil, nil if blockers_count == 0 + end + + def process_on_blocker_resolution(future, index) + # TODO (pitr-ch 18-Dec-2016): Can we assume that array will never break under parallel access when never re-sized? + @Resolutions[index] = future.internal_state # has to be set before countdown in super + super future, index + end + + def on_resolvable(resolved_future, index) + all_fulfilled = true + values = ::Array.new(@Resolutions.size) + reasons = ::Array.new(@Resolutions.size) + + @Resolutions.each_with_index do |internal_state, i| + fulfilled, values[i], reasons[i] = internal_state.result + all_fulfilled &&= fulfilled + end + + if all_fulfilled + resolve_with FulfilledArray.new(values) + else + resolve_with PartiallyRejected.new(values, reasons) + end + end + end + + class ZipEventsPromise < BlockedPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super delayed, blockers_count, Event.new(self, default_executor) + + on_resolvable nil, nil if blockers_count == 0 + end + + def on_resolvable(resolved_future, index) + resolve_with RESOLVED + end + end + + # @abstract + class AbstractAnyPromise < BlockedPromise + end + + class AnyResolvedFuturePromise < AbstractAnyPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super delayed, blockers_count, Future.new(self, default_executor) + end + + def resolvable?(countdown, future, index) + true + end + + def on_resolvable(resolved_future, index) + resolve_with resolved_future.internal_state, false + end + end + + class AnyResolvedEventPromise < AbstractAnyPromise + + private + + def initialize(delayed, blockers_count, default_executor) + super delayed, blockers_count, Event.new(self, default_executor) + end + + def resolvable?(countdown, future, index) + true + end + + def on_resolvable(resolved_future, index) + resolve_with RESOLVED, false + end + end + + class AnyFulfilledFuturePromise < AnyResolvedFuturePromise + + private + + def resolvable?(countdown, future, index) + future.fulfilled? || + # inlined super from BlockedPromise + countdown.zero? + end + end + + class DelayPromise < InnerPromise + + def initialize(default_executor) + event = Event.new(self, default_executor) + @Delayed = LockFreeStack.of1(self) + super event + event.add_callback_clear_delayed_node @Delayed.peek + end + + def touch + @Future.resolve_with RESOLVED + end + + def delayed_because + @Delayed + end + + end + + class ScheduledPromise < InnerPromise + def intended_time + @IntendedTime + end + + def inspect + "#{to_s[0..-2]} intended_time: #{@IntendedTime}>" + end + + private + + def initialize(default_executor, intended_time) + super Event.new(self, default_executor) + + @IntendedTime = intended_time + + in_seconds = begin + now = Time.now + schedule_time = if @IntendedTime.is_a? Time + @IntendedTime + else + now + @IntendedTime + end + [0, schedule_time.to_f - now.to_f].max + end + + Concurrent.global_timer_set.post(in_seconds) do + @Future.resolve_with RESOLVED + end + end + end + + extend FactoryMethods + + private_constant :AbstractPromise, + :ResolvableEventPromise, + :ResolvableFuturePromise, + :InnerPromise, + :BlockedPromise, + :BlockedTaskPromise, + :ThenPromise, + :RescuePromise, + :ChainPromise, + :ImmediateEventPromise, + :ImmediateFuturePromise, + :AbstractFlatPromise, + :FlatFuturePromise, + :FlatEventPromise, + :RunFuturePromise, + :ZipEventEventPromise, + :ZipFutureEventPromise, + :EventWrapperPromise, + :FutureWrapperPromise, + :ZipFuturesPromise, + :ZipEventsPromise, + :AbstractAnyPromise, + :AnyResolvedFuturePromise, + :AnyFulfilledFuturePromise, + :AnyResolvedEventPromise, + :DelayPromise, + :ScheduledPromise + + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/re_include.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/re_include.rb new file mode 100644 index 0000000000..516d58cae1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/re_include.rb @@ -0,0 +1,58 @@ +module Concurrent + + # Methods form module A included to a module B, which is already included into class C, + # will not be visible in the C class. If this module is extended to B then A's methods + # are correctly made visible to C. + # + # @example + # module A + # def a + # :a + # end + # end + # + # module B1 + # end + # + # class C1 + # include B1 + # end + # + # module B2 + # extend Concurrent::ReInclude + # end + # + # class C2 + # include B2 + # end + # + # B1.send :include, A + # B2.send :include, A + # + # C1.new.respond_to? :a # => false + # C2.new.respond_to? :a # => true + module ReInclude + # @!visibility private + def included(base) + (@re_include_to_bases ||= []) << [:include, base] + super(base) + end + + # @!visibility private + def extended(base) + (@re_include_to_bases ||= []) << [:extend, base] + super(base) + end + + # @!visibility private + def include(*modules) + result = super(*modules) + modules.reverse.each do |module_being_included| + (@re_include_to_bases ||= []).each do |method, mod| + mod.send method, module_being_included + end + end + result + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/scheduled_task.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/scheduled_task.rb new file mode 100644 index 0000000000..90f78b00ce --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/scheduled_task.rb @@ -0,0 +1,318 @@ +require 'concurrent/constants' +require 'concurrent/errors' +require 'concurrent/configuration' +require 'concurrent/ivar' +require 'concurrent/collection/copy_on_notify_observer_set' +require 'concurrent/utility/monotonic_time' + +require 'concurrent/options' + +module Concurrent + + # `ScheduledTask` is a close relative of `Concurrent::Future` but with one + # important difference: A `Future` is set to execute as soon as possible + # whereas a `ScheduledTask` is set to execute after a specified delay. This + # implementation is loosely based on Java's + # [ScheduledExecutorService](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html). + # It is a more feature-rich variant of {Concurrent.timer}. + # + # The *intended* schedule time of task execution is set on object construction + # with the `delay` argument. The delay is a numeric (floating point or integer) + # representing a number of seconds in the future. Any other value or a numeric + # equal to or less than zero will result in an exception. The *actual* schedule + # time of task execution is set when the `execute` method is called. + # + # The constructor can also be given zero or more processing options. Currently + # the only supported options are those recognized by the + # [Dereferenceable](Dereferenceable) module. + # + # The final constructor argument is a block representing the task to be performed. + # If no block is given an `ArgumentError` will be raised. + # + # **States** + # + # `ScheduledTask` mixes in the [Obligation](Obligation) module thus giving it + # "future" behavior. This includes the expected lifecycle states. `ScheduledTask` + # has one additional state, however. While the task (block) is being executed the + # state of the object will be `:processing`. This additional state is necessary + # because it has implications for task cancellation. + # + # **Cancellation** + # + # A `:pending` task can be cancelled using the `#cancel` method. A task in any + # other state, including `:processing`, cannot be cancelled. The `#cancel` + # method returns a boolean indicating the success of the cancellation attempt. + # A cancelled `ScheduledTask` cannot be restarted. It is immutable. + # + # **Obligation and Observation** + # + # The result of a `ScheduledTask` can be obtained either synchronously or + # asynchronously. `ScheduledTask` mixes in both the [Obligation](Obligation) + # module and the + # [Observable](http://ruby-doc.org/stdlib-2.0/libdoc/observer/rdoc/Observable.html) + # module from the Ruby standard library. With one exception `ScheduledTask` + # behaves identically to [Future](Observable) with regard to these modules. + # + # @!macro copy_options + # + # @example Basic usage + # + # require 'concurrent' + # require 'thread' # for Queue + # require 'open-uri' # for open(uri) + # + # class Ticker + # def get_year_end_closing(symbol, year) + # uri = "http://ichart.finance.yahoo.com/table.csv?s=#{symbol}&a=11&b=01&c=#{year}&d=11&e=31&f=#{year}&g=m" + # data = open(uri) {|f| f.collect{|line| line.strip } } + # data[1].split(',')[4].to_f + # end + # end + # + # # Future + # price = Concurrent::Future.execute{ Ticker.new.get_year_end_closing('TWTR', 2013) } + # price.state #=> :pending + # sleep(1) # do other stuff + # price.value #=> 63.65 + # price.state #=> :fulfilled + # + # # ScheduledTask + # task = Concurrent::ScheduledTask.execute(2){ Ticker.new.get_year_end_closing('INTC', 2013) } + # task.state #=> :pending + # sleep(3) # do other stuff + # task.value #=> 25.96 + # + # @example Successful task execution + # + # task = Concurrent::ScheduledTask.new(2){ 'What does the fox say?' } + # task.state #=> :unscheduled + # task.execute + # task.state #=> pending + # + # # wait for it... + # sleep(3) + # + # task.unscheduled? #=> false + # task.pending? #=> false + # task.fulfilled? #=> true + # task.rejected? #=> false + # task.value #=> 'What does the fox say?' + # + # @example One line creation and execution + # + # task = Concurrent::ScheduledTask.new(2){ 'What does the fox say?' }.execute + # task.state #=> pending + # + # task = Concurrent::ScheduledTask.execute(2){ 'What do you get when you multiply 6 by 9?' } + # task.state #=> pending + # + # @example Failed task execution + # + # task = Concurrent::ScheduledTask.execute(2){ raise StandardError.new('Call me maybe?') } + # task.pending? #=> true + # + # # wait for it... + # sleep(3) + # + # task.unscheduled? #=> false + # task.pending? #=> false + # task.fulfilled? #=> false + # task.rejected? #=> true + # task.value #=> nil + # task.reason #=> # + # + # @example Task execution with observation + # + # observer = Class.new{ + # def update(time, value, reason) + # puts "The task completed at #{time} with value '#{value}'" + # end + # }.new + # + # task = Concurrent::ScheduledTask.new(2){ 'What does the fox say?' } + # task.add_observer(observer) + # task.execute + # task.pending? #=> true + # + # # wait for it... + # sleep(3) + # + # #>> The task completed at 2013-11-07 12:26:09 -0500 with value 'What does the fox say?' + # + # @!macro monotonic_clock_warning + # + # @see Concurrent.timer + class ScheduledTask < IVar + include Comparable + + # The executor on which to execute the task. + # @!visibility private + attr_reader :executor + + # Schedule a task for execution at a specified future time. + # + # @param [Float] delay the number of seconds to wait for before executing the task + # + # @yield the task to be performed + # + # @!macro executor_and_deref_options + # + # @option opts [object, Array] :args zero or more arguments to be passed the task + # block on execution + # + # @raise [ArgumentError] When no block is given + # @raise [ArgumentError] When given a time that is in the past + def initialize(delay, opts = {}, &task) + raise ArgumentError.new('no block given') unless block_given? + raise ArgumentError.new('seconds must be greater than zero') if delay.to_f < 0.0 + + super(NULL, opts, &nil) + + synchronize do + ns_set_state(:unscheduled) + @parent = opts.fetch(:timer_set, Concurrent.global_timer_set) + @args = get_arguments_from(opts) + @delay = delay.to_f + @task = task + @time = nil + @executor = Options.executor_from_options(opts) || Concurrent.global_io_executor + self.observers = Collection::CopyOnNotifyObserverSet.new + end + end + + # The `delay` value given at instanciation. + # + # @return [Float] the initial delay. + def initial_delay + synchronize { @delay } + end + + # The monotonic time at which the the task is scheduled to be executed. + # + # @return [Float] the schedule time or nil if `unscheduled` + def schedule_time + synchronize { @time } + end + + # Comparator which orders by schedule time. + # + # @!visibility private + def <=>(other) + schedule_time <=> other.schedule_time + end + + # Has the task been cancelled? + # + # @return [Boolean] true if the task is in the given state else false + def cancelled? + synchronize { ns_check_state?(:cancelled) } + end + + # In the task execution in progress? + # + # @return [Boolean] true if the task is in the given state else false + def processing? + synchronize { ns_check_state?(:processing) } + end + + # Cancel this task and prevent it from executing. A task can only be + # cancelled if it is pending or unscheduled. + # + # @return [Boolean] true if successfully cancelled else false + def cancel + if compare_and_set_state(:cancelled, :pending, :unscheduled) + complete(false, nil, CancelledOperationError.new) + # To avoid deadlocks this call must occur outside of #synchronize + # Changing the state above should prevent redundant calls + @parent.send(:remove_task, self) + else + false + end + end + + # Reschedule the task using the original delay and the current time. + # A task can only be reset while it is `:pending`. + # + # @return [Boolean] true if successfully rescheduled else false + def reset + synchronize{ ns_reschedule(@delay) } + end + + # Reschedule the task using the given delay and the current time. + # A task can only be reset while it is `:pending`. + # + # @param [Float] delay the number of seconds to wait for before executing the task + # + # @return [Boolean] true if successfully rescheduled else false + # + # @raise [ArgumentError] When given a time that is in the past + def reschedule(delay) + delay = delay.to_f + raise ArgumentError.new('seconds must be greater than zero') if delay < 0.0 + synchronize{ ns_reschedule(delay) } + end + + # Execute an `:unscheduled` `ScheduledTask`. Immediately sets the state to `:pending` + # and starts counting down toward execution. Does nothing if the `ScheduledTask` is + # in any state other than `:unscheduled`. + # + # @return [ScheduledTask] a reference to `self` + def execute + if compare_and_set_state(:pending, :unscheduled) + synchronize{ ns_schedule(@delay) } + end + self + end + + # Create a new `ScheduledTask` object with the given block, execute it, and return the + # `:pending` object. + # + # @param [Float] delay the number of seconds to wait for before executing the task + # + # @!macro executor_and_deref_options + # + # @return [ScheduledTask] the newly created `ScheduledTask` in the `:pending` state + # + # @raise [ArgumentError] if no block is given + def self.execute(delay, opts = {}, &task) + new(delay, opts, &task).execute + end + + # Execute the task. + # + # @!visibility private + def process_task + safe_execute(@task, @args) + end + + protected :set, :try_set, :fail, :complete + + protected + + # Schedule the task using the given delay and the current time. + # + # @param [Float] delay the number of seconds to wait for before executing the task + # + # @return [Boolean] true if successfully rescheduled else false + # + # @!visibility private + def ns_schedule(delay) + @delay = delay + @time = Concurrent.monotonic_time + @delay + @parent.send(:post_task, self) + end + + # Reschedule the task using the given delay and the current time. + # A task can only be reset while it is `:pending`. + # + # @param [Float] delay the number of seconds to wait for before executing the task + # + # @return [Boolean] true if successfully rescheduled else false + # + # @!visibility private + def ns_reschedule(delay) + return false unless ns_check_state?(:pending) + @parent.send(:remove_task, self) && ns_schedule(delay) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/set.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/set.rb new file mode 100644 index 0000000000..04dc936037 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/set.rb @@ -0,0 +1,66 @@ +require 'concurrent/utility/engine' +require 'concurrent/thread_safe/util' +require 'set' + +module Concurrent + + # @!macro concurrent_set + # + # A thread-safe subclass of Set. This version locks against the object + # itself for every method call, ensuring only one thread can be reading + # or writing at a time. This includes iteration methods like `#each`. + # + # @note `a += b` is **not** a **thread-safe** operation on + # `Concurrent::Set`. It reads Set `a`, then it creates new `Concurrent::Set` + # which is union of `a` and `b`, then it writes the union to `a`. + # The read and write are independent operations they do not form a single atomic + # operation therefore when two `+=` operations are executed concurrently updates + # may be lost. Use `#merge` instead. + # + # @see http://ruby-doc.org/stdlib-2.4.0/libdoc/set/rdoc/Set.html Ruby standard library `Set` + + + # @!macro internal_implementation_note + SetImplementation = case + when Concurrent.on_cruby? + # Because MRI never runs code in parallel, the existing + # non-thread-safe structures should usually work fine. + ::Set + + when Concurrent.on_jruby? + require 'jruby/synchronized' + + class JRubySet < ::Set + include JRuby::Synchronized + end + JRubySet + + when Concurrent.on_rbx? + require 'monitor' + require 'concurrent/thread_safe/util/data_structures' + + class RbxSet < ::Set + end + ThreadSafe::Util.make_synchronized_on_rbx Concurrent::RbxSet + RbxSet + + when Concurrent.on_truffleruby? + require 'concurrent/thread_safe/util/data_structures' + + class TruffleRubySet < ::Set + end + + ThreadSafe::Util.make_synchronized_on_truffleruby Concurrent::TruffleRubySet + TruffleRubySet + + else + warn 'Possibly unsupported Ruby implementation' + ::Set + end + private_constant :SetImplementation + + # @!macro concurrent_set + class Set < SetImplementation + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/settable_struct.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/settable_struct.rb new file mode 100644 index 0000000000..9706cff2da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/settable_struct.rb @@ -0,0 +1,129 @@ +require 'concurrent/synchronization/abstract_struct' +require 'concurrent/errors' +require 'concurrent/synchronization' + +module Concurrent + + # An thread-safe, write-once variation of Ruby's standard `Struct`. + # Each member can have its value set at most once, either at construction + # or any time thereafter. Attempting to assign a value to a member + # that has already been set will result in a `Concurrent::ImmutabilityError`. + # + # @see http://ruby-doc.org/core-2.2.0/Struct.html Ruby standard library `Struct` + # @see http://en.wikipedia.org/wiki/Final_(Java) Java `final` keyword + module SettableStruct + include Synchronization::AbstractStruct + + # @!macro struct_values + def values + synchronize { ns_values } + end + alias_method :to_a, :values + + # @!macro struct_values_at + def values_at(*indexes) + synchronize { ns_values_at(indexes) } + end + + # @!macro struct_inspect + def inspect + synchronize { ns_inspect } + end + alias_method :to_s, :inspect + + # @!macro struct_merge + def merge(other, &block) + synchronize { ns_merge(other, &block) } + end + + # @!macro struct_to_h + def to_h + synchronize { ns_to_h } + end + + # @!macro struct_get + def [](member) + synchronize { ns_get(member) } + end + + # @!macro struct_equality + def ==(other) + synchronize { ns_equality(other) } + end + + # @!macro struct_each + def each(&block) + return enum_for(:each) unless block_given? + synchronize { ns_each(&block) } + end + + # @!macro struct_each_pair + def each_pair(&block) + return enum_for(:each_pair) unless block_given? + synchronize { ns_each_pair(&block) } + end + + # @!macro struct_select + def select(&block) + return enum_for(:select) unless block_given? + synchronize { ns_select(&block) } + end + + # @!macro struct_set + # + # @raise [Concurrent::ImmutabilityError] if the given member has already been set + def []=(member, value) + if member.is_a? Integer + length = synchronize { @values.length } + if member >= length + raise IndexError.new("offset #{member} too large for struct(size:#{length})") + end + synchronize do + unless @values[member].nil? + raise Concurrent::ImmutabilityError.new('struct member has already been set') + end + @values[member] = value + end + else + send("#{member}=", value) + end + rescue NoMethodError + raise NameError.new("no member '#{member}' in struct") + end + + # @!macro struct_new + def self.new(*args, &block) + clazz_name = nil + if args.length == 0 + raise ArgumentError.new('wrong number of arguments (0 for 1+)') + elsif args.length > 0 && args.first.is_a?(String) + clazz_name = args.shift + end + FACTORY.define_struct(clazz_name, args, &block) + end + + FACTORY = Class.new(Synchronization::LockableObject) do + def define_struct(name, members, &block) + synchronize do + clazz = Synchronization::AbstractStruct.define_struct_class(SettableStruct, Synchronization::LockableObject, name, members, &block) + members.each_with_index do |member, index| + clazz.send :remove_method, member if clazz.instance_methods.include? member + clazz.send(:define_method, member) do + synchronize { @values[index] } + end + clazz.send(:define_method, "#{member}=") do |value| + synchronize do + unless @values[index].nil? + raise Concurrent::ImmutabilityError.new('struct member has already been set') + end + @values[index] = value + end + end + end + clazz + end + end + end.new + private_constant :FACTORY + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization.rb new file mode 100644 index 0000000000..49c68ebbb3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization.rb @@ -0,0 +1,30 @@ +require 'concurrent/utility/engine' + +require 'concurrent/synchronization/abstract_object' +require 'concurrent/utility/native_extension_loader' # load native parts first +Concurrent.load_native_extensions + +require 'concurrent/synchronization/mri_object' +require 'concurrent/synchronization/jruby_object' +require 'concurrent/synchronization/rbx_object' +require 'concurrent/synchronization/truffleruby_object' +require 'concurrent/synchronization/object' +require 'concurrent/synchronization/volatile' + +require 'concurrent/synchronization/abstract_lockable_object' +require 'concurrent/synchronization/mutex_lockable_object' +require 'concurrent/synchronization/jruby_lockable_object' +require 'concurrent/synchronization/rbx_lockable_object' + +require 'concurrent/synchronization/lockable_object' + +require 'concurrent/synchronization/condition' +require 'concurrent/synchronization/lock' + +module Concurrent + # {include:file:docs-source/synchronization.md} + # {include:file:docs-source/synchronization-notes.md} + module Synchronization + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_lockable_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_lockable_object.rb new file mode 100644 index 0000000000..bc12603364 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_lockable_object.rb @@ -0,0 +1,98 @@ +module Concurrent + module Synchronization + + # @!visibility private + class AbstractLockableObject < Synchronization::Object + + protected + + # @!macro synchronization_object_method_synchronize + # + # @yield runs the block synchronized against this object, + # equivalent of java's `synchronize(this) {}` + # @note can by made public in descendants if required by `public :synchronize` + def synchronize + raise NotImplementedError + end + + # @!macro synchronization_object_method_ns_wait_until + # + # Wait until condition is met or timeout passes, + # protects against spurious wake-ups. + # @param [Numeric, nil] timeout in seconds, `nil` means no timeout + # @yield condition to be met + # @yieldreturn [true, false] + # @return [true, false] if condition met + # @note only to be used inside synchronized block + # @note to provide direct access to this method in a descendant add method + # ``` + # def wait_until(timeout = nil, &condition) + # synchronize { ns_wait_until(timeout, &condition) } + # end + # ``` + def ns_wait_until(timeout = nil, &condition) + if timeout + wait_until = Concurrent.monotonic_time + timeout + loop do + now = Concurrent.monotonic_time + condition_result = condition.call + return condition_result if now >= wait_until || condition_result + ns_wait wait_until - now + end + else + ns_wait timeout until condition.call + true + end + end + + # @!macro synchronization_object_method_ns_wait + # + # Wait until another thread calls #signal or #broadcast, + # spurious wake-ups can happen. + # + # @param [Numeric, nil] timeout in seconds, `nil` means no timeout + # @return [self] + # @note only to be used inside synchronized block + # @note to provide direct access to this method in a descendant add method + # ``` + # def wait(timeout = nil) + # synchronize { ns_wait(timeout) } + # end + # ``` + def ns_wait(timeout = nil) + raise NotImplementedError + end + + # @!macro synchronization_object_method_ns_signal + # + # Signal one waiting thread. + # @return [self] + # @note only to be used inside synchronized block + # @note to provide direct access to this method in a descendant add method + # ``` + # def signal + # synchronize { ns_signal } + # end + # ``` + def ns_signal + raise NotImplementedError + end + + # @!macro synchronization_object_method_ns_broadcast + # + # Broadcast to all waiting threads. + # @return [self] + # @note only to be used inside synchronized block + # @note to provide direct access to this method in a descendant add method + # ``` + # def broadcast + # synchronize { ns_broadcast } + # end + # ``` + def ns_broadcast + raise NotImplementedError + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_object.rb new file mode 100644 index 0000000000..532388b2b8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_object.rb @@ -0,0 +1,24 @@ +module Concurrent + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + class AbstractObject + + # @abstract has to be implemented based on Ruby runtime + def initialize + raise NotImplementedError + end + + # @!visibility private + # @abstract + def full_memory_barrier + raise NotImplementedError + end + + def self.attr_volatile(*names) + raise NotImplementedError + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_struct.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_struct.rb new file mode 100644 index 0000000000..8c4dff4869 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/abstract_struct.rb @@ -0,0 +1,159 @@ +module Concurrent + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + module AbstractStruct + + # @!visibility private + def initialize(*values) + super() + ns_initialize(*values) + end + + # @!macro struct_length + # + # Returns the number of struct members. + # + # @return [Fixnum] the number of struct members + def length + self.class::MEMBERS.length + end + alias_method :size, :length + + # @!macro struct_members + # + # Returns the struct members as an array of symbols. + # + # @return [Array] the struct members as an array of symbols + def members + self.class::MEMBERS.dup + end + + protected + + # @!macro struct_values + # + # @!visibility private + def ns_values + @values.dup + end + + # @!macro struct_values_at + # + # @!visibility private + def ns_values_at(indexes) + @values.values_at(*indexes) + end + + # @!macro struct_to_h + # + # @!visibility private + def ns_to_h + length.times.reduce({}){|memo, i| memo[self.class::MEMBERS[i]] = @values[i]; memo} + end + + # @!macro struct_get + # + # @!visibility private + def ns_get(member) + if member.is_a? Integer + if member >= @values.length + raise IndexError.new("offset #{member} too large for struct(size:#{@values.length})") + end + @values[member] + else + send(member) + end + rescue NoMethodError + raise NameError.new("no member '#{member}' in struct") + end + + # @!macro struct_equality + # + # @!visibility private + def ns_equality(other) + self.class == other.class && self.values == other.values + end + + # @!macro struct_each + # + # @!visibility private + def ns_each + values.each{|value| yield value } + end + + # @!macro struct_each_pair + # + # @!visibility private + def ns_each_pair + @values.length.times do |index| + yield self.class::MEMBERS[index], @values[index] + end + end + + # @!macro struct_select + # + # @!visibility private + def ns_select + values.select{|value| yield value } + end + + # @!macro struct_inspect + # + # @!visibility private + def ns_inspect + struct = pr_underscore(self.class.ancestors[1]) + clazz = ((self.class.to_s =~ /^#" + end + + # @!macro struct_merge + # + # @!visibility private + def ns_merge(other, &block) + self.class.new(*self.to_h.merge(other, &block).values) + end + + # @!visibility private + def pr_underscore(clazz) + word = clazz.to_s.dup # dup string to workaround JRuby 9.2.0.0 bug https://github.com/jruby/jruby/issues/5229 + word.gsub!(/::/, '/') + word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2') + word.gsub!(/([a-z\d])([A-Z])/,'\1_\2') + word.tr!("-", "_") + word.downcase! + word + end + + # @!visibility private + def self.define_struct_class(parent, base, name, members, &block) + clazz = Class.new(base || Object) do + include parent + self.const_set(:MEMBERS, members.collect{|member| member.to_s.to_sym}.freeze) + def ns_initialize(*values) + raise ArgumentError.new('struct size differs') if values.length > length + @values = values.fill(nil, values.length..length-1) + end + end + unless name.nil? + begin + parent.send :remove_const, name if parent.const_defined?(name, false) + parent.const_set(name, clazz) + clazz + rescue NameError + raise NameError.new("identifier #{name} needs to be constant") + end + end + members.each_with_index do |member, index| + clazz.send :remove_method, member if clazz.instance_methods.include? member + clazz.send(:define_method, member) do + @values[index] + end + end + clazz.class_exec(&block) unless block.nil? + clazz + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/condition.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/condition.rb new file mode 100644 index 0000000000..ac528bc256 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/condition.rb @@ -0,0 +1,58 @@ +module Concurrent + module Synchronization + # TODO (pitr-ch 04-Dec-2016): should be in edge + class Condition < LockableObject + safe_initialization! + + # TODO (pitr 12-Sep-2015): locks two objects, improve + # TODO (pitr 26-Sep-2015): study + # http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#AbstractQueuedSynchronizer.Node + + singleton_class.send :alias_method, :private_new, :new + private_class_method :new + + def initialize(lock) + super() + @Lock = lock + end + + def wait(timeout = nil) + @Lock.synchronize { ns_wait(timeout) } + end + + def ns_wait(timeout = nil) + synchronize { super(timeout) } + end + + def wait_until(timeout = nil, &condition) + @Lock.synchronize { ns_wait_until(timeout, &condition) } + end + + def ns_wait_until(timeout = nil, &condition) + synchronize { super(timeout, &condition) } + end + + def signal + @Lock.synchronize { ns_signal } + end + + def ns_signal + synchronize { super } + end + + def broadcast + @Lock.synchronize { ns_broadcast } + end + + def ns_broadcast + synchronize { super } + end + end + + class LockableObject < LockableObjectImplementation + def new_condition + Condition.private_new(self) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_lockable_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_lockable_object.rb new file mode 100644 index 0000000000..359a032b7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_lockable_object.rb @@ -0,0 +1,13 @@ +module Concurrent + module Synchronization + + if Concurrent.on_jruby? && Concurrent.java_extensions_loaded? + + # @!visibility private + # @!macro internal_implementation_note + class JRubyLockableObject < AbstractLockableObject + + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_object.rb new file mode 100644 index 0000000000..b04382f1ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/jruby_object.rb @@ -0,0 +1,44 @@ +module Concurrent + module Synchronization + + if Concurrent.on_jruby? && Concurrent.java_extensions_loaded? + + module JRubyAttrVolatile + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + def attr_volatile(*names) + names.each do |name| + + ivar = :"@volatile_#{name}" + + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name} + instance_variable_get_volatile(:#{ivar}) + end + + def #{name}=(value) + instance_variable_set_volatile(:#{ivar}, value) + end + RUBY + + end + names.map { |n| [n, :"#{n}="] }.flatten + end + end + end + + # @!visibility private + # @!macro internal_implementation_note + class JRubyObject < AbstractObject + include JRubyAttrVolatile + + def initialize + # nothing to do + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lock.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lock.rb new file mode 100644 index 0000000000..ed865b38b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lock.rb @@ -0,0 +1,34 @@ +module Concurrent + module Synchronization + # TODO (pitr-ch 04-Dec-2016): should be in edge + class Lock < LockableObject + # TODO use JavaReentrantLock on JRuby + + public :synchronize + + def wait(timeout = nil) + synchronize { ns_wait(timeout) } + end + + public :ns_wait + + def wait_until(timeout = nil, &condition) + synchronize { ns_wait_until(timeout, &condition) } + end + + public :ns_wait_until + + def signal + synchronize { ns_signal } + end + + public :ns_signal + + def broadcast + synchronize { ns_broadcast } + end + + public :ns_broadcast + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lockable_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lockable_object.rb new file mode 100644 index 0000000000..34cc8d974a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/lockable_object.rb @@ -0,0 +1,74 @@ +module Concurrent + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + LockableObjectImplementation = case + when Concurrent.on_cruby? && Concurrent.ruby_version(:<=, 1, 9, 3) + MonitorLockableObject + when Concurrent.on_cruby? && Concurrent.ruby_version(:>, 1, 9, 3) + MutexLockableObject + when Concurrent.on_jruby? + JRubyLockableObject + when Concurrent.on_rbx? + RbxLockableObject + when Concurrent.on_truffleruby? + MutexLockableObject + else + warn 'Possibly unsupported Ruby implementation' + MonitorLockableObject + end + private_constant :LockableObjectImplementation + + # Safe synchronization under any Ruby implementation. + # It provides methods like {#synchronize}, {#wait}, {#signal} and {#broadcast}. + # Provides a single layer which can improve its implementation over time without changes needed to + # the classes using it. Use {Synchronization::Object} not this abstract class. + # + # @note this object does not support usage together with + # [`Thread#wakeup`](http://ruby-doc.org/core-2.2.0/Thread.html#method-i-wakeup) + # and [`Thread#raise`](http://ruby-doc.org/core-2.2.0/Thread.html#method-i-raise). + # `Thread#sleep` and `Thread#wakeup` will work as expected but mixing `Synchronization::Object#wait` and + # `Thread#wakeup` will not work on all platforms. + # + # @see Event implementation as an example of this class use + # + # @example simple + # class AnClass < Synchronization::Object + # def initialize + # super + # synchronize { @value = 'asd' } + # end + # + # def value + # synchronize { @value } + # end + # end + # + # @!visibility private + class LockableObject < LockableObjectImplementation + + # TODO (pitr 12-Sep-2015): make private for c-r, prohibit subclassing + # TODO (pitr 12-Sep-2015): we inherit too much ourselves :/ + + # @!method initialize(*args, &block) + # @!macro synchronization_object_method_initialize + + # @!method synchronize + # @!macro synchronization_object_method_synchronize + + # @!method wait_until(timeout = nil, &condition) + # @!macro synchronization_object_method_ns_wait_until + + # @!method wait(timeout = nil) + # @!macro synchronization_object_method_ns_wait + + # @!method signal + # @!macro synchronization_object_method_ns_signal + + # @!method broadcast + # @!macro synchronization_object_method_ns_broadcast + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mri_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mri_object.rb new file mode 100644 index 0000000000..74202f53e7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mri_object.rb @@ -0,0 +1,43 @@ +module Concurrent + module Synchronization + + module MriAttrVolatile + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + def attr_volatile(*names) + names.each do |name| + ivar = :"@volatile_#{name}" + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name} + #{ivar} + end + + def #{name}=(value) + #{ivar} = value + end + RUBY + end + names.map { |n| [n, :"#{n}="] }.flatten + end + end + + def full_memory_barrier + # relying on undocumented behavior of CRuby, GVL acquire has lock which ensures visibility of ivars + # https://github.com/ruby/ruby/blob/ruby_2_2/thread_pthread.c#L204-L211 + end + end + + # @!visibility private + # @!macro internal_implementation_note + class MriObject < AbstractObject + include MriAttrVolatile + + def initialize + # nothing to do + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mutex_lockable_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mutex_lockable_object.rb new file mode 100644 index 0000000000..f288c51a1f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/mutex_lockable_object.rb @@ -0,0 +1,76 @@ +module Concurrent + # noinspection RubyInstanceVariableNamingConvention + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + module ConditionSignalling + protected + + def ns_signal + @__Condition__.signal + self + end + + def ns_broadcast + @__Condition__.broadcast + self + end + end + + + # @!visibility private + # @!macro internal_implementation_note + class MutexLockableObject < AbstractLockableObject + include ConditionSignalling + + safe_initialization! + + def initialize(*defaults) + super(*defaults) + @__Lock__ = ::Mutex.new + @__Condition__ = ::ConditionVariable.new + end + + protected + + def synchronize + if @__Lock__.owned? + yield + else + @__Lock__.synchronize { yield } + end + end + + def ns_wait(timeout = nil) + @__Condition__.wait @__Lock__, timeout + self + end + end + + # @!visibility private + # @!macro internal_implementation_note + class MonitorLockableObject < AbstractLockableObject + include ConditionSignalling + + safe_initialization! + + def initialize(*defaults) + super(*defaults) + @__Lock__ = ::Monitor.new + @__Condition__ = @__Lock__.new_cond + end + + protected + + def synchronize # TODO may be a problem with lock.synchronize { lock.wait } + @__Lock__.synchronize { yield } + end + + def ns_wait(timeout = nil) + @__Condition__.wait timeout + self + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/object.rb new file mode 100644 index 0000000000..1254427c70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/object.rb @@ -0,0 +1,157 @@ +module Concurrent + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + ObjectImplementation = case + when Concurrent.on_cruby? + MriObject + when Concurrent.on_jruby? + JRubyObject + when Concurrent.on_rbx? + RbxObject + when Concurrent.on_truffleruby? + TruffleRubyObject + else + warn 'Possibly unsupported Ruby implementation' + MriObject + end + private_constant :ObjectImplementation + + # Abstract object providing final, volatile, ans CAS extensions to build other concurrent abstractions. + # - final instance variables see {Object.safe_initialization!} + # - volatile instance variables see {Object.attr_volatile} + # - volatile instance variables see {Object.attr_atomic} + class Object < ObjectImplementation + # TODO make it a module if possible + + # @!method self.attr_volatile(*names) + # Creates methods for reading and writing (as `attr_accessor` does) to a instance variable with + # volatile (Java) semantic. The instance variable should be accessed oly through generated methods. + # + # @param [Array] names of the instance variables to be volatile + # @return [Array] names of defined method names + + # Has to be called by children. + def initialize + super + initialize_volatile_with_cas + end + + # By calling this method on a class, it and all its children are marked to be constructed safely. Meaning that + # all writes (ivar initializations) are made visible to all readers of newly constructed object. It ensures + # same behaviour as Java's final fields. + # @example + # class AClass < Concurrent::Synchronization::Object + # safe_initialization! + # + # def initialize + # @AFinalValue = 'value' # published safely, does not have to be synchronized + # end + # end + def self.safe_initialization! + # define only once, and not again in children + return if safe_initialization? + + def self.new(*args, &block) + object = super(*args, &block) + ensure + object.full_memory_barrier if object + end + + @safe_initialization = true + end + + # @return [true, false] if this class is safely initialized. + def self.safe_initialization? + @safe_initialization = false unless defined? @safe_initialization + @safe_initialization || (superclass.respond_to?(:safe_initialization?) && superclass.safe_initialization?) + end + + # For testing purposes, quite slow. Injects assert code to new method which will raise if class instance contains + # any instance variables with CamelCase names and isn't {.safe_initialization?}. + def self.ensure_safe_initialization_when_final_fields_are_present + Object.class_eval do + def self.new(*args, &block) + object = super(*args, &block) + ensure + has_final_field = object.instance_variables.any? { |v| v.to_s =~ /^@[A-Z]/ } + if has_final_field && !safe_initialization? + raise "there was an instance of #{object.class} with final field but not marked with safe_initialization!" + end + end + end + end + + # Creates methods for reading and writing to a instance variable with + # volatile (Java) semantic as {.attr_volatile} does. + # The instance variable should be accessed oly through generated methods. + # This method generates following methods: `value`, `value=(new_value) #=> new_value`, + # `swap_value(new_value) #=> old_value`, + # `compare_and_set_value(expected, value) #=> true || false`, `update_value(&block)`. + # @param [Array] names of the instance variables to be volatile with CAS. + # @return [Array] names of defined method names. + def self.attr_atomic(*names) + @volatile_cas_fields ||= [] + @volatile_cas_fields += names + safe_initialization! + define_initialize_volatile_with_cas + + names.each do |name| + ivar = :"@Atomic#{name.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }}" + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name} + #{ivar}.get + end + + def #{name}=(value) + #{ivar}.set value + end + + def swap_#{name}(value) + #{ivar}.swap value + end + + def compare_and_set_#{name}(expected, value) + #{ivar}.compare_and_set expected, value + end + + def update_#{name}(&block) + #{ivar}.update(&block) + end + RUBY + end + names.flat_map { |n| [n, :"#{n}=", :"swap_#{n}", :"compare_and_set_#{n}", :"update_#{n}"] } + end + + # @param [true,false] inherited should inherited volatile with CAS fields be returned? + # @return [Array] Returns defined volatile with CAS fields on this class. + def self.volatile_cas_fields(inherited = true) + @volatile_cas_fields ||= [] + ((superclass.volatile_cas_fields if superclass.respond_to?(:volatile_cas_fields) && inherited) || []) + + @volatile_cas_fields + end + + private + + def self.define_initialize_volatile_with_cas + assignments = @volatile_cas_fields.map do |name| + "@Atomic#{name.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }} = Concurrent::AtomicReference.new(nil)" + end.join("\n") + + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def initialize_volatile_with_cas + super + #{assignments} + end + RUBY + end + + private_class_method :define_initialize_volatile_with_cas + + def initialize_volatile_with_cas + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_lockable_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_lockable_object.rb new file mode 100644 index 0000000000..8dbd3c3453 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_lockable_object.rb @@ -0,0 +1,65 @@ +module Concurrent + module Synchronization + + # @!visibility private + # @!macro internal_implementation_note + class RbxLockableObject < AbstractLockableObject + safe_initialization! + + def initialize(*defaults) + super(*defaults) + @__Waiters__ = [] + @__owner__ = nil + end + + protected + + def synchronize(&block) + if @__owner__ == Thread.current + yield + else + result = nil + Rubinius.synchronize(self) do + begin + @__owner__ = Thread.current + result = yield + ensure + @__owner__ = nil + end + end + result + end + end + + def ns_wait(timeout = nil) + wchan = Rubinius::Channel.new + + begin + @__Waiters__.push wchan + Rubinius.unlock(self) + signaled = wchan.receive_timeout timeout + ensure + Rubinius.lock(self) + + if !signaled && !@__Waiters__.delete(wchan) + # we timed out, but got signaled afterwards, + # so pass that signal on to the next waiter + @__Waiters__.shift << true unless @__Waiters__.empty? + end + end + + self + end + + def ns_signal + @__Waiters__.shift << true unless @__Waiters__.empty? + self + end + + def ns_broadcast + @__Waiters__.shift << true until @__Waiters__.empty? + self + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_object.rb new file mode 100644 index 0000000000..b9a0e3f901 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/rbx_object.rb @@ -0,0 +1,48 @@ +module Concurrent + module Synchronization + + module RbxAttrVolatile + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + + def attr_volatile(*names) + names.each do |name| + ivar = :"@volatile_#{name}" + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name} + Rubinius.memory_barrier + #{ivar} + end + + def #{name}=(value) + #{ivar} = value + Rubinius.memory_barrier + end + RUBY + end + names.map { |n| [n, :"#{n}="] }.flatten + end + + end + + def full_memory_barrier + # Rubinius instance variables are not volatile so we need to insert barrier + # TODO (pitr 26-Nov-2015): check comments like ^ + Rubinius.memory_barrier + end + end + + # @!visibility private + # @!macro internal_implementation_note + class RbxObject < AbstractObject + include RbxAttrVolatile + + def initialize + # nothing to do + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/truffleruby_object.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/truffleruby_object.rb new file mode 100644 index 0000000000..b25fe2189b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/truffleruby_object.rb @@ -0,0 +1,46 @@ +module Concurrent + module Synchronization + + module TruffleRubyAttrVolatile + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + def attr_volatile(*names) + names.each do |name| + ivar = :"@volatile_#{name}" + + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name} + full_memory_barrier + #{ivar} + end + + def #{name}=(value) + #{ivar} = value + full_memory_barrier + end + RUBY + end + + names.map { |n| [n, :"#{n}="] }.flatten + end + end + + def full_memory_barrier + TruffleRuby.full_memory_barrier + end + end + + # @!visibility private + # @!macro internal_implementation_note + class TruffleRubyObject < AbstractObject + include TruffleRubyAttrVolatile + + def initialize + # nothing to do + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/volatile.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/volatile.rb new file mode 100644 index 0000000000..9dffa914ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/synchronization/volatile.rb @@ -0,0 +1,36 @@ +module Concurrent + module Synchronization + + # Volatile adds the attr_volatile class method when included. + # + # @example + # class Foo + # include Concurrent::Synchronization::Volatile + # + # attr_volatile :bar + # + # def initialize + # self.bar = 1 + # end + # end + # + # foo = Foo.new + # foo.bar + # => 1 + # foo.bar = 2 + # => 2 + + Volatile = case + when Concurrent.on_cruby? + MriAttrVolatile + when Concurrent.on_jruby? + JRubyAttrVolatile + when Concurrent.on_rbx? + RbxAttrVolatile + when Concurrent.on_truffleruby? + TruffleRubyAttrVolatile + else + MriAttrVolatile + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/synchronized_delegator.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/synchronized_delegator.rb new file mode 100644 index 0000000000..92e7c45fc5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/synchronized_delegator.rb @@ -0,0 +1,50 @@ +require 'delegate' +require 'monitor' + +module Concurrent + unless defined?(SynchronizedDelegator) + + # This class provides a trivial way to synchronize all calls to a given object + # by wrapping it with a `Delegator` that performs `Monitor#enter/exit` calls + # around the delegated `#send`. Example: + # + # array = [] # not thread-safe on many impls + # array = SynchronizedDelegator.new([]) # thread-safe + # + # A simple `Monitor` provides a very coarse-grained way to synchronize a given + # object, in that it will cause synchronization for methods that have no need + # for it, but this is a trivial way to get thread-safety where none may exist + # currently on some implementations. + # + # This class is currently being considered for inclusion into stdlib, via + # https://bugs.ruby-lang.org/issues/8556 + # + # @!visibility private + class SynchronizedDelegator < SimpleDelegator + def setup + @old_abort = Thread.abort_on_exception + Thread.abort_on_exception = true + end + + def teardown + Thread.abort_on_exception = @old_abort + end + + def initialize(obj) + __setobj__(obj) + @monitor = Monitor.new + end + + def method_missing(method, *args, &block) + monitor = @monitor + begin + monitor.enter + super + ensure + monitor.exit + end + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util.rb new file mode 100644 index 0000000000..c67084a26f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util.rb @@ -0,0 +1,16 @@ +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # TODO (pitr-ch 15-Oct-2016): migrate to Utility::NativeInteger + FIXNUM_BIT_SIZE = (0.size * 8) - 2 + MAX_INT = (2 ** FIXNUM_BIT_SIZE) - 1 + # TODO (pitr-ch 15-Oct-2016): migrate to Utility::ProcessorCounter + CPU_COUNT = 16 # is there a way to determine this? + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/adder.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/adder.rb new file mode 100644 index 0000000000..7a6e8d5c0e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/adder.rb @@ -0,0 +1,74 @@ +require 'concurrent/thread_safe/util' +require 'concurrent/thread_safe/util/striped64' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # A Ruby port of the Doug Lea's jsr166e.LondAdder class version 1.8 + # available in public domain. + # + # Original source code available here: + # http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166e/LongAdder.java?revision=1.8 + # + # One or more variables that together maintain an initially zero + # sum. When updates (method +add+) are contended across threads, + # the set of variables may grow dynamically to reduce contention. + # Method +sum+ returns the current total combined across the + # variables maintaining the sum. + # + # This class is usually preferable to single +Atomic+ reference when + # multiple threads update a common sum that is used for purposes such + # as collecting statistics, not for fine-grained synchronization + # control. Under low update contention, the two classes have similar + # characteristics. But under high contention, expected throughput of + # this class is significantly higher, at the expense of higher space + # consumption. + # + # @!visibility private + class Adder < Striped64 + # Adds the given value. + def add(x) + if (current_cells = cells) || !cas_base_computed {|current_base| current_base + x} + was_uncontended = true + hash = hash_code + unless current_cells && (cell = current_cells.volatile_get_by_hash(hash)) && (was_uncontended = cell.cas_computed {|current_value| current_value + x}) + retry_update(x, hash, was_uncontended) {|current_value| current_value + x} + end + end + end + + def increment + add(1) + end + + def decrement + add(-1) + end + + # Returns the current sum. The returned value is _NOT_ an + # atomic snapshot: Invocation in the absence of concurrent + # updates returns an accurate result, but concurrent updates that + # occur while the sum is being calculated might not be + # incorporated. + def sum + x = base + if current_cells = cells + current_cells.each do |cell| + x += cell.value if cell + end + end + x + end + + def reset + internal_reset(0) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/cheap_lockable.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/cheap_lockable.rb new file mode 100644 index 0000000000..d9b4c58186 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/cheap_lockable.rb @@ -0,0 +1,118 @@ +require 'concurrent/thread_safe/util' +require 'concurrent/thread_safe/util/volatile' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # Provides a cheapest possible (mainly in terms of memory usage) +Mutex+ + # with the +ConditionVariable+ bundled in. + # + # Usage: + # class A + # include CheapLockable + # + # def do_exlusively + # cheap_synchronize { yield } + # end + # + # def wait_for_something + # cheap_synchronize do + # cheap_wait until resource_available? + # do_something + # cheap_broadcast # wake up others + # end + # end + # end + # + # @!visibility private + module CheapLockable + private + engine = defined?(RUBY_ENGINE) && RUBY_ENGINE + if engine == 'rbx' + # Making use of the Rubinius' ability to lock via object headers to avoid the overhead of the extra Mutex objects. + def cheap_synchronize + Rubinius.lock(self) + begin + yield + ensure + Rubinius.unlock(self) + end + end + + def cheap_wait + wchan = Rubinius::Channel.new + + begin + waiters = @waiters ||= [] + waiters.push wchan + Rubinius.unlock(self) + signaled = wchan.receive_timeout nil + ensure + Rubinius.lock(self) + + unless signaled or waiters.delete(wchan) + # we timed out, but got signaled afterwards (e.g. while waiting to + # acquire @lock), so pass that signal on to the next waiter + waiters.shift << true unless waiters.empty? + end + end + + self + end + + def cheap_broadcast + waiters = @waiters ||= [] + waiters.shift << true until waiters.empty? + self + end + elsif engine == 'jruby' + # Use Java's native synchronized (this) { wait(); notifyAll(); } to avoid the overhead of the extra Mutex objects + require 'jruby' + + def cheap_synchronize + JRuby.reference0(self).synchronized { yield } + end + + def cheap_wait + JRuby.reference0(self).wait + end + + def cheap_broadcast + JRuby.reference0(self).notify_all + end + else + require 'thread' + + extend Volatile + attr_volatile :mutex + + # Non-reentrant Mutex#syncrhonize + def cheap_synchronize + true until (my_mutex = mutex) || cas_mutex(nil, my_mutex = Mutex.new) + my_mutex.synchronize { yield } + end + + # Releases this object's +cheap_synchronize+ lock and goes to sleep waiting for other threads to +cheap_broadcast+, reacquires the lock on wakeup. + # Must only be called in +cheap_broadcast+'s block. + def cheap_wait + conditional_variable = @conditional_variable ||= ConditionVariable.new + conditional_variable.wait(mutex) + end + + # Wakes up all threads waiting for this object's +cheap_synchronize+ lock. + # Must only be called in +cheap_broadcast+'s block. + def cheap_broadcast + if conditional_variable = @conditional_variable + conditional_variable.broadcast + end + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/data_structures.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/data_structures.rb new file mode 100644 index 0000000000..ff1e8ed97e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/data_structures.rb @@ -0,0 +1,63 @@ +require 'concurrent/thread_safe/util' + +# Shim for TruffleRuby.synchronized +if Concurrent.on_truffleruby? && !TruffleRuby.respond_to?(:synchronized) + module TruffleRuby + def self.synchronized(object, &block) + Truffle::System.synchronized(object, &block) + end + end +end + +module Concurrent + module ThreadSafe + module Util + def self.make_synchronized_on_rbx(klass) + klass.class_eval do + private + + def _mon_initialize + @_monitor = Monitor.new unless @_monitor # avoid double initialisation + end + + def self.new(*args) + obj = super(*args) + obj.send(:_mon_initialize) + obj + end + end + + klass.superclass.instance_methods(false).each do |method| + case method + when :new_range, :new_reserved + klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{method}(*args) + obj = super + obj.send(:_mon_initialize) + obj + end + RUBY + else + klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{method}(*args) + monitor = @_monitor + monitor or raise("BUG: Internal monitor was not properly initialized. Please report this to the concurrent-ruby developers.") + monitor.synchronize { super } + end + RUBY + end + end + end + + def self.make_synchronized_on_truffleruby(klass) + klass.superclass.instance_methods(false).each do |method| + klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{method}(*args, &block) + TruffleRuby.synchronized(self) { super(*args, &block) } + end + RUBY + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/power_of_two_tuple.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/power_of_two_tuple.rb new file mode 100644 index 0000000000..b54be39c4c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/power_of_two_tuple.rb @@ -0,0 +1,38 @@ +require 'concurrent/thread_safe/util' +require 'concurrent/tuple' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # @!visibility private + class PowerOfTwoTuple < Concurrent::Tuple + + def initialize(size) + raise ArgumentError, "size must be a power of 2 (#{size.inspect} provided)" unless size > 0 && size & (size - 1) == 0 + super(size) + end + + def hash_to_index(hash) + (size - 1) & hash + end + + def volatile_get_by_hash(hash) + volatile_get(hash_to_index(hash)) + end + + def volatile_set_by_hash(hash, value) + volatile_set(hash_to_index(hash), value) + end + + def next_in_size_table + self.class.new(size << 1) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/striped64.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/striped64.rb new file mode 100644 index 0000000000..5530e977c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/striped64.rb @@ -0,0 +1,246 @@ +require 'concurrent/thread_safe/util' +require 'concurrent/thread_safe/util/power_of_two_tuple' +require 'concurrent/thread_safe/util/volatile' +require 'concurrent/thread_safe/util/xor_shift_random' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # A Ruby port of the Doug Lea's jsr166e.Striped64 class version 1.6 + # available in public domain. + # + # Original source code available here: + # http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166e/Striped64.java?revision=1.6 + # + # Class holding common representation and mechanics for classes supporting + # dynamic striping on 64bit values. + # + # This class maintains a lazily-initialized table of atomically updated + # variables, plus an extra +base+ field. The table size is a power of two. + # Indexing uses masked per-thread hash codes. Nearly all methods on this + # class are private, accessed directly by subclasses. + # + # Table entries are of class +Cell+; a variant of AtomicLong padded to + # reduce cache contention on most processors. Padding is overkill for most + # Atomics because they are usually irregularly scattered in memory and thus + # don't interfere much with each other. But Atomic objects residing in + # arrays will tend to be placed adjacent to each other, and so will most + # often share cache lines (with a huge negative performance impact) without + # this precaution. + # + # In part because +Cell+s are relatively large, we avoid creating them until + # they are needed. When there is no contention, all updates are made to the + # +base+ field. Upon first contention (a failed CAS on +base+ update), the + # table is initialized to size 2. The table size is doubled upon further + # contention until reaching the nearest power of two greater than or equal + # to the number of CPUS. Table slots remain empty (+nil+) until they are + # needed. + # + # A single spinlock (+busy+) is used for initializing and resizing the + # table, as well as populating slots with new +Cell+s. There is no need for + # a blocking lock: When the lock is not available, threads try other slots + # (or the base). During these retries, there is increased contention and + # reduced locality, which is still better than alternatives. + # + # Per-thread hash codes are initialized to random values. Contention and/or + # table collisions are indicated by failed CASes when performing an update + # operation (see method +retry_update+). Upon a collision, if the table size + # is less than the capacity, it is doubled in size unless some other thread + # holds the lock. If a hashed slot is empty, and lock is available, a new + # +Cell+ is created. Otherwise, if the slot exists, a CAS is tried. Retries + # proceed by "double hashing", using a secondary hash (XorShift) to try to + # find a free slot. + # + # The table size is capped because, when there are more threads than CPUs, + # supposing that each thread were bound to a CPU, there would exist a + # perfect hash function mapping threads to slots that eliminates collisions. + # When we reach capacity, we search for this mapping by randomly varying the + # hash codes of colliding threads. Because search is random, and collisions + # only become known via CAS failures, convergence can be slow, and because + # threads are typically not bound to CPUS forever, may not occur at all. + # However, despite these limitations, observed contention rates are + # typically low in these cases. + # + # It is possible for a +Cell+ to become unused when threads that once hashed + # to it terminate, as well as in the case where doubling the table causes no + # thread to hash to it under expanded mask. We do not try to detect or + # remove such cells, under the assumption that for long-running instances, + # observed contention levels will recur, so the cells will eventually be + # needed again; and for short-lived ones, it does not matter. + # + # @!visibility private + class Striped64 + + # Padded variant of AtomicLong supporting only raw accesses plus CAS. + # The +value+ field is placed between pads, hoping that the JVM doesn't + # reorder them. + # + # Optimisation note: It would be possible to use a release-only + # form of CAS here, if it were provided. + # + # @!visibility private + class Cell < Concurrent::AtomicReference + + alias_method :cas, :compare_and_set + + def cas_computed + cas(current_value = value, yield(current_value)) + end + + # @!visibility private + def self.padding + # TODO: this only adds padding after the :value slot, need to find a way to add padding before the slot + # TODO (pitr-ch 28-Jul-2018): the padding instance vars may not be created + # hide from yardoc in a method + attr_reader *(12.times.collect{ |i| "padding_#{i}".to_sym }) + end + padding + end + + extend Volatile + attr_volatile :cells, # Table of cells. When non-null, size is a power of 2. + :base, # Base value, used mainly when there is no contention, but also as a fallback during table initialization races. Updated via CAS. + :busy # Spinlock (locked via CAS) used when resizing and/or creating Cells. + + alias_method :busy?, :busy + + def initialize + super() + self.busy = false + self.base = 0 + end + + # Handles cases of updates involving initialization, resizing, + # creating new Cells, and/or contention. See above for + # explanation. This method suffers the usual non-modularity + # problems of optimistic retry code, relying on rechecked sets of + # reads. + # + # Arguments: + # [+x+] + # the value + # [+hash_code+] + # hash code used + # [+x+] + # false if CAS failed before call + def retry_update(x, hash_code, was_uncontended) # :yields: current_value + hash = hash_code + collided = false # True if last slot nonempty + while true + if current_cells = cells + if !(cell = current_cells.volatile_get_by_hash(hash)) + if busy? + collided = false + else # Try to attach new Cell + if try_to_install_new_cell(Cell.new(x), hash) # Optimistically create and try to insert new cell + break + else + redo # Slot is now non-empty + end + end + elsif !was_uncontended # CAS already known to fail + was_uncontended = true # Continue after rehash + elsif cell.cas_computed {|current_value| yield current_value} + break + elsif current_cells.size >= CPU_COUNT || cells != current_cells # At max size or stale + collided = false + elsif collided && expand_table_unless_stale(current_cells) + collided = false + redo # Retry with expanded table + else + collided = true + end + hash = XorShiftRandom.xorshift(hash) + + elsif try_initialize_cells(x, hash) || cas_base_computed {|current_base| yield current_base} + break + end + end + self.hash_code = hash + end + + private + # Static per-thread hash code key. Shared across all instances to + # reduce Thread locals pollution and because adjustments due to + # collisions in one table are likely to be appropriate for + # others. + THREAD_LOCAL_KEY = "#{name}.hash_code".to_sym + + # A thread-local hash code accessor. The code is initially + # random, but may be set to a different value upon collisions. + def hash_code + Thread.current[THREAD_LOCAL_KEY] ||= XorShiftRandom.get + end + + def hash_code=(hash) + Thread.current[THREAD_LOCAL_KEY] = hash + end + + # Sets base and all +cells+ to the given value. + def internal_reset(initial_value) + current_cells = cells + self.base = initial_value + if current_cells + current_cells.each do |cell| + cell.value = initial_value if cell + end + end + end + + def cas_base_computed + cas_base(current_base = base, yield(current_base)) + end + + def free? + !busy? + end + + def try_initialize_cells(x, hash) + if free? && !cells + try_in_busy do + unless cells # Recheck under lock + new_cells = PowerOfTwoTuple.new(2) + new_cells.volatile_set_by_hash(hash, Cell.new(x)) + self.cells = new_cells + end + end + end + end + + def expand_table_unless_stale(current_cells) + try_in_busy do + if current_cells == cells # Recheck under lock + new_cells = current_cells.next_in_size_table + current_cells.each_with_index {|x, i| new_cells.volatile_set(i, x)} + self.cells = new_cells + end + end + end + + def try_to_install_new_cell(new_cell, hash) + try_in_busy do + # Recheck under lock + if (current_cells = cells) && !current_cells.volatile_get(i = current_cells.hash_to_index(hash)) + current_cells.volatile_set(i, new_cell) + end + end + end + + def try_in_busy + if cas_busy(false, true) + begin + yield + ensure + self.busy = false + end + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/volatile.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/volatile.rb new file mode 100644 index 0000000000..cdac2a396a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/volatile.rb @@ -0,0 +1,75 @@ +require 'concurrent/thread_safe/util' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # @!visibility private + module Volatile + + # Provides +volatile+ (in the JVM's sense) attribute accessors implemented + # atop of +Concurrent::AtomicReference+. + # + # Usage: + # class Foo + # extend Concurrent::ThreadSafe::Util::Volatile + # attr_volatile :foo, :bar + # + # def initialize(bar) + # super() # must super() into parent initializers before using the volatile attribute accessors + # self.bar = bar + # end + # + # def hello + # my_foo = foo # volatile read + # self.foo = 1 # volatile write + # cas_foo(1, 2) # => true | a strong CAS + # end + # end + def attr_volatile(*attr_names) + return if attr_names.empty? + include(Module.new do + atomic_ref_setup = attr_names.map {|attr_name| "@__#{attr_name} = Concurrent::AtomicReference.new"} + initialize_copy_setup = attr_names.zip(atomic_ref_setup).map do |attr_name, ref_setup| + "#{ref_setup}(other.instance_variable_get(:@__#{attr_name}).get)" + end + class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 + def initialize(*) + super + #{atomic_ref_setup.join('; ')} + end + + def initialize_copy(other) + super + #{initialize_copy_setup.join('; ')} + end + RUBY_EVAL + + attr_names.each do |attr_name| + class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 + def #{attr_name} + @__#{attr_name}.get + end + + def #{attr_name}=(value) + @__#{attr_name}.set(value) + end + + def compare_and_set_#{attr_name}(old_value, new_value) + @__#{attr_name}.compare_and_set(old_value, new_value) + end + RUBY_EVAL + + alias_method :"cas_#{attr_name}", :"compare_and_set_#{attr_name}" + alias_method :"lazy_set_#{attr_name}", :"#{attr_name}=" + end + end) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/xor_shift_random.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/xor_shift_random.rb new file mode 100644 index 0000000000..bdde2dd8b3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/thread_safe/util/xor_shift_random.rb @@ -0,0 +1,50 @@ +require 'concurrent/thread_safe/util' + +module Concurrent + + # @!visibility private + module ThreadSafe + + # @!visibility private + module Util + + # A xorshift random number (positive +Fixnum+s) generator, provides + # reasonably cheap way to generate thread local random numbers without + # contending for the global +Kernel.rand+. + # + # Usage: + # x = XorShiftRandom.get # uses Kernel.rand to generate an initial seed + # while true + # if (x = XorShiftRandom.xorshift).odd? # thread-localy generate a next random number + # do_something_at_random + # end + # end + module XorShiftRandom + extend self + MAX_XOR_SHIFTABLE_INT = MAX_INT - 1 + + # Generates an initial non-zero positive +Fixnum+ via +Kernel.rand+. + def get + Kernel.rand(MAX_XOR_SHIFTABLE_INT) + 1 # 0 can't be xorshifted + end + + # xorshift based on: http://www.jstatsoft.org/v08/i14/paper + if 0.size == 4 + # using the "yˆ=y>>a; yˆ=y<>c;" transform with the (a,b,c) tuple with values (3,1,14) to minimise Bignum overflows + def xorshift(x) + x ^= x >> 3 + x ^= (x << 1) & MAX_INT # cut-off Bignum overflow + x ^= x >> 14 + end + else + # using the "yˆ=y>>a; yˆ=y<>c;" transform with the (a,b,c) tuple with values (1,1,54) to minimise Bignum overflows + def xorshift(x) + x ^= x >> 1 + x ^= (x << 1) & MAX_INT # cut-off Bignum overflow + x ^= x >> 54 + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/timer_task.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/timer_task.rb new file mode 100644 index 0000000000..e766f2e6a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/timer_task.rb @@ -0,0 +1,334 @@ +require 'concurrent/collection/copy_on_notify_observer_set' +require 'concurrent/concern/dereferenceable' +require 'concurrent/concern/observable' +require 'concurrent/atomic/atomic_boolean' +require 'concurrent/executor/executor_service' +require 'concurrent/executor/ruby_executor_service' +require 'concurrent/executor/safe_task_executor' +require 'concurrent/scheduled_task' + +module Concurrent + + # A very common concurrency pattern is to run a thread that performs a task at + # regular intervals. The thread that performs the task sleeps for the given + # interval then wakes up and performs the task. Lather, rinse, repeat... This + # pattern causes two problems. First, it is difficult to test the business + # logic of the task because the task itself is tightly coupled with the + # concurrency logic. Second, an exception raised while performing the task can + # cause the entire thread to abend. In a long-running application where the + # task thread is intended to run for days/weeks/years a crashed task thread + # can pose a significant problem. `TimerTask` alleviates both problems. + # + # When a `TimerTask` is launched it starts a thread for monitoring the + # execution interval. The `TimerTask` thread does not perform the task, + # however. Instead, the TimerTask launches the task on a separate thread. + # Should the task experience an unrecoverable crash only the task thread will + # crash. This makes the `TimerTask` very fault tolerant. Additionally, the + # `TimerTask` thread can respond to the success or failure of the task, + # performing logging or ancillary operations. `TimerTask` can also be + # configured with a timeout value allowing it to kill a task that runs too + # long. + # + # One other advantage of `TimerTask` is that it forces the business logic to + # be completely decoupled from the concurrency logic. The business logic can + # be tested separately then passed to the `TimerTask` for scheduling and + # running. + # + # In some cases it may be necessary for a `TimerTask` to affect its own + # execution cycle. To facilitate this, a reference to the TimerTask instance + # is passed as an argument to the provided block every time the task is + # executed. + # + # The `TimerTask` class includes the `Dereferenceable` mixin module so the + # result of the last execution is always available via the `#value` method. + # Dereferencing options can be passed to the `TimerTask` during construction or + # at any later time using the `#set_deref_options` method. + # + # `TimerTask` supports notification through the Ruby standard library + # {http://ruby-doc.org/stdlib-2.0/libdoc/observer/rdoc/Observable.html + # Observable} module. On execution the `TimerTask` will notify the observers + # with three arguments: time of execution, the result of the block (or nil on + # failure), and any raised exceptions (or nil on success). If the timeout + # interval is exceeded the observer will receive a `Concurrent::TimeoutError` + # object as the third argument. + # + # @!macro copy_options + # + # @example Basic usage + # task = Concurrent::TimerTask.new{ puts 'Boom!' } + # task.execute + # + # task.execution_interval #=> 60 (default) + # task.timeout_interval #=> 30 (default) + # + # # wait 60 seconds... + # #=> 'Boom!' + # + # task.shutdown #=> true + # + # @example Configuring `:execution_interval` and `:timeout_interval` + # task = Concurrent::TimerTask.new(execution_interval: 5, timeout_interval: 5) do + # puts 'Boom!' + # end + # + # task.execution_interval #=> 5 + # task.timeout_interval #=> 5 + # + # @example Immediate execution with `:run_now` + # task = Concurrent::TimerTask.new(run_now: true){ puts 'Boom!' } + # task.execute + # + # #=> 'Boom!' + # + # @example Last `#value` and `Dereferenceable` mixin + # task = Concurrent::TimerTask.new( + # dup_on_deref: true, + # execution_interval: 5 + # ){ Time.now } + # + # task.execute + # Time.now #=> 2013-11-07 18:06:50 -0500 + # sleep(10) + # task.value #=> 2013-11-07 18:06:55 -0500 + # + # @example Controlling execution from within the block + # timer_task = Concurrent::TimerTask.new(execution_interval: 1) do |task| + # task.execution_interval.times{ print 'Boom! ' } + # print "\n" + # task.execution_interval += 1 + # if task.execution_interval > 5 + # puts 'Stopping...' + # task.shutdown + # end + # end + # + # timer_task.execute # blocking call - this task will stop itself + # #=> Boom! + # #=> Boom! Boom! + # #=> Boom! Boom! Boom! + # #=> Boom! Boom! Boom! Boom! + # #=> Boom! Boom! Boom! Boom! Boom! + # #=> Stopping... + # + # @example Observation + # class TaskObserver + # def update(time, result, ex) + # if result + # print "(#{time}) Execution successfully returned #{result}\n" + # elsif ex.is_a?(Concurrent::TimeoutError) + # print "(#{time}) Execution timed out\n" + # else + # print "(#{time}) Execution failed with error #{ex}\n" + # end + # end + # end + # + # task = Concurrent::TimerTask.new(execution_interval: 1, timeout_interval: 1){ 42 } + # task.add_observer(TaskObserver.new) + # task.execute + # sleep 4 + # + # #=> (2013-10-13 19:08:58 -0400) Execution successfully returned 42 + # #=> (2013-10-13 19:08:59 -0400) Execution successfully returned 42 + # #=> (2013-10-13 19:09:00 -0400) Execution successfully returned 42 + # task.shutdown + # + # task = Concurrent::TimerTask.new(execution_interval: 1, timeout_interval: 1){ sleep } + # task.add_observer(TaskObserver.new) + # task.execute + # + # #=> (2013-10-13 19:07:25 -0400) Execution timed out + # #=> (2013-10-13 19:07:27 -0400) Execution timed out + # #=> (2013-10-13 19:07:29 -0400) Execution timed out + # task.shutdown + # + # task = Concurrent::TimerTask.new(execution_interval: 1){ raise StandardError } + # task.add_observer(TaskObserver.new) + # task.execute + # + # #=> (2013-10-13 19:09:37 -0400) Execution failed with error StandardError + # #=> (2013-10-13 19:09:38 -0400) Execution failed with error StandardError + # #=> (2013-10-13 19:09:39 -0400) Execution failed with error StandardError + # task.shutdown + # + # @see http://ruby-doc.org/stdlib-2.0/libdoc/observer/rdoc/Observable.html + # @see http://docs.oracle.com/javase/7/docs/api/java/util/TimerTask.html + class TimerTask < RubyExecutorService + include Concern::Dereferenceable + include Concern::Observable + + # Default `:execution_interval` in seconds. + EXECUTION_INTERVAL = 60 + + # Default `:timeout_interval` in seconds. + TIMEOUT_INTERVAL = 30 + + # Create a new TimerTask with the given task and configuration. + # + # @!macro timer_task_initialize + # @param [Hash] opts the options defining task execution. + # @option opts [Integer] :execution_interval number of seconds between + # task executions (default: EXECUTION_INTERVAL) + # @option opts [Integer] :timeout_interval number of seconds a task can + # run before it is considered to have failed (default: TIMEOUT_INTERVAL) + # @option opts [Boolean] :run_now Whether to run the task immediately + # upon instantiation or to wait until the first # execution_interval + # has passed (default: false) + # + # @!macro deref_options + # + # @raise ArgumentError when no block is given. + # + # @yield to the block after :execution_interval seconds have passed since + # the last yield + # @yieldparam task a reference to the `TimerTask` instance so that the + # block can control its own lifecycle. Necessary since `self` will + # refer to the execution context of the block rather than the running + # `TimerTask`. + # + # @return [TimerTask] the new `TimerTask` + def initialize(opts = {}, &task) + raise ArgumentError.new('no block given') unless block_given? + super + set_deref_options opts + end + + # Is the executor running? + # + # @return [Boolean] `true` when running, `false` when shutting down or shutdown + def running? + @running.true? + end + + # Execute a previously created `TimerTask`. + # + # @return [TimerTask] a reference to `self` + # + # @example Instance and execute in separate steps + # task = Concurrent::TimerTask.new(execution_interval: 10){ print "Hello World\n" } + # task.running? #=> false + # task.execute + # task.running? #=> true + # + # @example Instance and execute in one line + # task = Concurrent::TimerTask.new(execution_interval: 10){ print "Hello World\n" }.execute + # task.running? #=> true + def execute + synchronize do + if @running.false? + @running.make_true + schedule_next_task(@run_now ? 0 : @execution_interval) + end + end + self + end + + # Create and execute a new `TimerTask`. + # + # @!macro timer_task_initialize + # + # @example + # task = Concurrent::TimerTask.execute(execution_interval: 10){ print "Hello World\n" } + # task.running? #=> true + def self.execute(opts = {}, &task) + TimerTask.new(opts, &task).execute + end + + # @!attribute [rw] execution_interval + # @return [Fixnum] Number of seconds after the task completes before the + # task is performed again. + def execution_interval + synchronize { @execution_interval } + end + + # @!attribute [rw] execution_interval + # @return [Fixnum] Number of seconds after the task completes before the + # task is performed again. + def execution_interval=(value) + if (value = value.to_f) <= 0.0 + raise ArgumentError.new('must be greater than zero') + else + synchronize { @execution_interval = value } + end + end + + # @!attribute [rw] timeout_interval + # @return [Fixnum] Number of seconds the task can run before it is + # considered to have failed. + def timeout_interval + synchronize { @timeout_interval } + end + + # @!attribute [rw] timeout_interval + # @return [Fixnum] Number of seconds the task can run before it is + # considered to have failed. + def timeout_interval=(value) + if (value = value.to_f) <= 0.0 + raise ArgumentError.new('must be greater than zero') + else + synchronize { @timeout_interval = value } + end + end + + private :post, :<< + + private + + def ns_initialize(opts, &task) + set_deref_options(opts) + + self.execution_interval = opts[:execution] || opts[:execution_interval] || EXECUTION_INTERVAL + self.timeout_interval = opts[:timeout] || opts[:timeout_interval] || TIMEOUT_INTERVAL + @run_now = opts[:now] || opts[:run_now] + @executor = Concurrent::SafeTaskExecutor.new(task) + @running = Concurrent::AtomicBoolean.new(false) + @value = nil + + self.observers = Collection::CopyOnNotifyObserverSet.new + end + + # @!visibility private + def ns_shutdown_execution + @running.make_false + super + end + + # @!visibility private + def ns_kill_execution + @running.make_false + super + end + + # @!visibility private + def schedule_next_task(interval = execution_interval) + ScheduledTask.execute(interval, args: [Concurrent::Event.new], &method(:execute_task)) + nil + end + + # @!visibility private + def execute_task(completion) + return nil unless @running.true? + ScheduledTask.execute(timeout_interval, args: [completion], &method(:timeout_task)) + _success, value, reason = @executor.execute(self) + if completion.try? + self.value = value + schedule_next_task + time = Time.now + observers.notify_observers do + [time, self.value, reason] + end + end + nil + end + + # @!visibility private + def timeout_task(completion) + return unless @running.true? + if completion.try? + self.value = value + schedule_next_task + observers.notify_observers(Time.now, nil, Concurrent::TimeoutError.new) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tuple.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tuple.rb new file mode 100644 index 0000000000..f8c4c25d32 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tuple.rb @@ -0,0 +1,86 @@ +require 'concurrent/atomic/atomic_reference' + +module Concurrent + + # A fixed size array with volatile (synchronized, thread safe) getters/setters. + # Mixes in Ruby's `Enumerable` module for enhanced search, sort, and traversal. + # + # @example + # tuple = Concurrent::Tuple.new(16) + # + # tuple.set(0, :foo) #=> :foo | volatile write + # tuple.get(0) #=> :foo | volatile read + # tuple.compare_and_set(0, :foo, :bar) #=> true | strong CAS + # tuple.cas(0, :foo, :baz) #=> false | strong CAS + # tuple.get(0) #=> :bar | volatile read + # + # @see https://en.wikipedia.org/wiki/Tuple Tuple entry at Wikipedia + # @see http://www.erlang.org/doc/reference_manual/data_types.html#id70396 Erlang Tuple + # @see http://ruby-doc.org/core-2.2.2/Enumerable.html Enumerable + class Tuple + include Enumerable + + # The (fixed) size of the tuple. + attr_reader :size + + # @!visibility private + Tuple = defined?(Rubinius::Tuple) ? Rubinius::Tuple : ::Array + private_constant :Tuple + + # Create a new tuple of the given size. + # + # @param [Integer] size the number of elements in the tuple + def initialize(size) + @size = size + @tuple = tuple = Tuple.new(size) + i = 0 + while i < size + tuple[i] = Concurrent::AtomicReference.new + i += 1 + end + end + + # Get the value of the element at the given index. + # + # @param [Integer] i the index from which to retrieve the value + # @return [Object] the value at the given index or nil if the index is out of bounds + def get(i) + return nil if i >= @size || i < 0 + @tuple[i].get + end + alias_method :volatile_get, :get + + # Set the element at the given index to the given value + # + # @param [Integer] i the index for the element to set + # @param [Object] value the value to set at the given index + # + # @return [Object] the new value of the element at the given index or nil if the index is out of bounds + def set(i, value) + return nil if i >= @size || i < 0 + @tuple[i].set(value) + end + alias_method :volatile_set, :set + + # Set the value at the given index to the new value if and only if the current + # value matches the given old value. + # + # @param [Integer] i the index for the element to set + # @param [Object] old_value the value to compare against the current value + # @param [Object] new_value the value to set at the given index + # + # @return [Boolean] true if the value at the given element was set else false + def compare_and_set(i, old_value, new_value) + return false if i >= @size || i < 0 + @tuple[i].compare_and_set(old_value, new_value) + end + alias_method :cas, :compare_and_set + + # Calls the given block once for each element in self, passing that element as a parameter. + # + # @yieldparam [Object] ref the `Concurrent::AtomicReference` object at the current index + def each + @tuple.each {|ref| yield ref.get} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tvar.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tvar.rb new file mode 100644 index 0000000000..09138c8833 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/tvar.rb @@ -0,0 +1,258 @@ +require 'set' +require 'concurrent/synchronization' + +module Concurrent + + # A `TVar` is a transactional variable - a single-element container that + # is used as part of a transaction - see `Concurrent::atomically`. + # + # @!macro thread_safe_variable_comparison + # + # {include:file:docs-source/tvar.md} + class TVar < Synchronization::Object + safe_initialization! + + # Create a new `TVar` with an initial value. + def initialize(value) + @value = value + @version = 0 + @lock = Mutex.new + end + + # Get the value of a `TVar`. + def value + Concurrent::atomically do + Transaction::current.read(self) + end + end + + # Set the value of a `TVar`. + def value=(value) + Concurrent::atomically do + Transaction::current.write(self, value) + end + end + + # @!visibility private + def unsafe_value # :nodoc: + @value + end + + # @!visibility private + def unsafe_value=(value) # :nodoc: + @value = value + end + + # @!visibility private + def unsafe_version # :nodoc: + @version + end + + # @!visibility private + def unsafe_increment_version # :nodoc: + @version += 1 + end + + # @!visibility private + def unsafe_lock # :nodoc: + @lock + end + + end + + # Run a block that reads and writes `TVar`s as a single atomic transaction. + # With respect to the value of `TVar` objects, the transaction is atomic, in + # that it either happens or it does not, consistent, in that the `TVar` + # objects involved will never enter an illegal state, and isolated, in that + # transactions never interfere with each other. You may recognise these + # properties from database transactions. + # + # There are some very important and unusual semantics that you must be aware of: + # + # * Most importantly, the block that you pass to atomically may be executed + # more than once. In most cases your code should be free of + # side-effects, except for via TVar. + # + # * If an exception escapes an atomically block it will abort the transaction. + # + # * It is undefined behaviour to use callcc or Fiber with atomically. + # + # * If you create a new thread within an atomically, it will not be part of + # the transaction. Creating a thread counts as a side-effect. + # + # Transactions within transactions are flattened to a single transaction. + # + # @example + # a = new TVar(100_000) + # b = new TVar(100) + # + # Concurrent::atomically do + # a.value -= 10 + # b.value += 10 + # end + def atomically + raise ArgumentError.new('no block given') unless block_given? + + # Get the current transaction + + transaction = Transaction::current + + # Are we not already in a transaction (not nested)? + + if transaction.nil? + # New transaction + + begin + # Retry loop + + loop do + + # Create a new transaction + + transaction = Transaction.new + Transaction::current = transaction + + # Run the block, aborting on exceptions + + begin + result = yield + rescue Transaction::AbortError => e + transaction.abort + result = Transaction::ABORTED + rescue Transaction::LeaveError => e + transaction.abort + break result + rescue => e + transaction.abort + raise e + end + # If we can commit, break out of the loop + + if result != Transaction::ABORTED + if transaction.commit + break result + end + end + end + ensure + # Clear the current transaction + + Transaction::current = nil + end + else + # Nested transaction - flatten it and just run the block + + yield + end + end + + # Abort a currently running transaction - see `Concurrent::atomically`. + def abort_transaction + raise Transaction::AbortError.new + end + + # Leave a transaction without committing or aborting - see `Concurrent::atomically`. + def leave_transaction + raise Transaction::LeaveError.new + end + + module_function :atomically, :abort_transaction, :leave_transaction + + private + + class Transaction + + ABORTED = ::Object.new + + ReadLogEntry = Struct.new(:tvar, :version) + + AbortError = Class.new(StandardError) + LeaveError = Class.new(StandardError) + + def initialize + @read_log = [] + @write_log = {} + end + + def read(tvar) + Concurrent::abort_transaction unless valid? + + if @write_log.has_key? tvar + @write_log[tvar] + else + @read_log.push(ReadLogEntry.new(tvar, tvar.unsafe_version)) + tvar.unsafe_value + end + end + + def write(tvar, value) + # Have we already written to this TVar? + + unless @write_log.has_key? tvar + # Try to lock the TVar + + unless tvar.unsafe_lock.try_lock + # Someone else is writing to this TVar - abort + Concurrent::abort_transaction + end + + # If we previously wrote to it, check the version hasn't changed + + @read_log.each do |log_entry| + if log_entry.tvar == tvar and tvar.unsafe_version > log_entry.version + Concurrent::abort_transaction + end + end + end + + # Record the value written + + @write_log[tvar] = value + end + + def abort + unlock + end + + def commit + return false unless valid? + + @write_log.each_pair do |tvar, value| + tvar.unsafe_value = value + tvar.unsafe_increment_version + end + + unlock + + true + end + + def valid? + @read_log.each do |log_entry| + unless @write_log.has_key? log_entry.tvar + if log_entry.tvar.unsafe_version > log_entry.version + return false + end + end + end + + true + end + + def unlock + @write_log.each_key do |tvar| + tvar.unsafe_lock.unlock + end + end + + def self.current + Thread.current[:current_tvar_transaction] + end + + def self.current=(transaction) + Thread.current[:current_tvar_transaction] = transaction + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/at_exit.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/at_exit.rb new file mode 100644 index 0000000000..0e52ca379b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/at_exit.rb @@ -0,0 +1,97 @@ +require 'logger' +require 'concurrent/synchronization' + +module Concurrent + + # Provides ability to add and remove handlers to be run at `Kernel#at_exit`, order is undefined. + # Each handler is executed at most once. + # + # @!visibility private + class AtExitImplementation < Synchronization::LockableObject + include Logger::Severity + + def initialize(*args) + super() + synchronize { ns_initialize(*args) } + end + + # Add a handler to be run at `Kernel#at_exit` + # @param [Object] handler_id optionally provide an id, if already present, handler is replaced + # @yield the handler + # @return id of the handler + def add(handler_id = nil, &handler) + id = handler_id || handler.object_id + synchronize { @handlers[id] = handler } + id + end + + # Delete a handler by handler_id + # @return [true, false] + def delete(handler_id) + !!synchronize { @handlers.delete handler_id } + end + + # Is handler with handler_id rpesent? + # @return [true, false] + def handler?(handler_id) + synchronize { @handlers.key? handler_id } + end + + # @return copy of the handlers + def handlers + synchronize { @handlers }.clone + end + + # install `Kernel#at_exit` callback to execute added handlers + def install + synchronize do + @installed ||= begin + at_exit { runner } + true + end + self + end + end + + # Will it run during `Kernel#at_exit` + def enabled? + synchronize { @enabled } + end + + # Configure if it runs during `Kernel#at_exit` + def enabled=(value) + synchronize { @enabled = value } + end + + # run the handlers manually + # @return ids of the handlers + def run + handlers, _ = synchronize { handlers, @handlers = @handlers, {} } + handlers.each do |_, handler| + begin + handler.call + rescue => error + Concurrent.global_logger.call(ERROR, error) + end + end + handlers.keys + end + + private + + def ns_initialize(enabled = true) + @handlers = {} + @enabled = enabled + end + + def runner + run if synchronize { @enabled } + end + end + + private_constant :AtExitImplementation + + # @see AtExitImplementation + # @!visibility private + AtExit = AtExitImplementation.new.install +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/engine.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/engine.rb new file mode 100644 index 0000000000..bc4173e448 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/engine.rb @@ -0,0 +1,56 @@ +module Concurrent + module Utility + + # @!visibility private + module EngineDetector + def on_jruby? + ruby_engine == 'jruby' + end + + def on_jruby_9000? + on_jruby? && ruby_version(JRUBY_VERSION, :>=, 9, 0, 0) + end + + def on_cruby? + ruby_engine == 'ruby' + end + + def on_rbx? + ruby_engine == 'rbx' + end + + def on_truffleruby? + ruby_engine == 'truffleruby' + end + + def on_windows? + !(RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/).nil? + end + + def on_osx? + !(RbConfig::CONFIG['host_os'] =~ /darwin|mac os/).nil? + end + + def on_linux? + !(RbConfig::CONFIG['host_os'] =~ /linux/).nil? + end + + def ruby_engine + defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' + end + + def ruby_version(version = RUBY_VERSION, comparison, major, minor, patch) + result = (version.split('.').map(&:to_i) <=> [major, minor, patch]) + comparisons = { :== => [0], + :>= => [1, 0], + :<= => [-1, 0], + :> => [1], + :< => [-1] } + comparisons.fetch(comparison).include? result + end + end + end + + # @!visibility private + extend Utility::EngineDetector +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/monotonic_time.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/monotonic_time.rb new file mode 100644 index 0000000000..c9f4b369a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/monotonic_time.rb @@ -0,0 +1,58 @@ +require 'concurrent/synchronization' + +module Concurrent + + class_definition = Class.new(Synchronization::LockableObject) do + def initialize + @last_time = Time.now.to_f + super() + end + + if defined?(Process::CLOCK_MONOTONIC) + # @!visibility private + def get_time + Process.clock_gettime(Process::CLOCK_MONOTONIC) + end + elsif Concurrent.on_jruby? + # @!visibility private + def get_time + java.lang.System.nanoTime() / 1_000_000_000.0 + end + else + + # @!visibility private + def get_time + synchronize do + now = Time.now.to_f + if @last_time < now + @last_time = now + else # clock has moved back in time + @last_time += 0.000_001 + end + end + end + + end + end + + # Clock that cannot be set and represents monotonic time since + # some unspecified starting point. + # + # @!visibility private + GLOBAL_MONOTONIC_CLOCK = class_definition.new + private_constant :GLOBAL_MONOTONIC_CLOCK + + # @!macro monotonic_get_time + # + # Returns the current time a tracked by the application monotonic clock. + # + # @return [Float] The current monotonic time since some unspecified + # starting point + # + # @!macro monotonic_clock_warning + def monotonic_time + GLOBAL_MONOTONIC_CLOCK.get_time + end + + module_function :monotonic_time +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_extension_loader.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_extension_loader.rb new file mode 100644 index 0000000000..a944bd7290 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_extension_loader.rb @@ -0,0 +1,79 @@ +require 'concurrent/utility/engine' + +module Concurrent + + module Utility + + # @!visibility private + module NativeExtensionLoader + + def allow_c_extensions? + Concurrent.on_cruby? + end + + def c_extensions_loaded? + defined?(@c_extensions_loaded) && @c_extensions_loaded + end + + def java_extensions_loaded? + defined?(@java_extensions_loaded) && @java_extensions_loaded + end + + def load_native_extensions + unless defined? Synchronization::AbstractObject + raise 'native_extension_loader loaded before Synchronization::AbstractObject' + end + + if Concurrent.on_cruby? && !c_extensions_loaded? + ['concurrent/concurrent_ruby_ext', + "concurrent/#{RUBY_VERSION[0..2]}/concurrent_ruby_ext" + ].each { |p| try_load_c_extension p } + end + + if Concurrent.on_jruby? && !java_extensions_loaded? + begin + require 'concurrent/concurrent_ruby.jar' + set_java_extensions_loaded + rescue LoadError => e + raise e, "Java extensions are required for JRuby.\n" + e.message, e.backtrace + end + end + end + + private + + def load_error_path(error) + if error.respond_to? :path + error.path + else + error.message.split(' -- ').last + end + end + + def set_c_extensions_loaded + @c_extensions_loaded = true + end + + def set_java_extensions_loaded + @java_extensions_loaded = true + end + + def try_load_c_extension(path) + require path + set_c_extensions_loaded + rescue LoadError => e + if load_error_path(e) == path + # move on with pure-Ruby implementations + # TODO (pitr-ch 12-Jul-2018): warning on verbose? + else + raise e + end + end + + end + end + + # @!visibility private + extend Utility::NativeExtensionLoader +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_integer.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_integer.rb new file mode 100644 index 0000000000..10719e7caa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/native_integer.rb @@ -0,0 +1,53 @@ +module Concurrent + module Utility + # @private + module NativeInteger + # http://stackoverflow.com/questions/535721/ruby-max-integer + MIN_VALUE = -(2**(0.size * 8 - 2)) + MAX_VALUE = (2**(0.size * 8 - 2) - 1) + + def ensure_upper_bound(value) + if value > MAX_VALUE + raise RangeError.new("#{value} is greater than the maximum value of #{MAX_VALUE}") + end + value + end + + def ensure_lower_bound(value) + if value < MIN_VALUE + raise RangeError.new("#{value} is less than the maximum value of #{MIN_VALUE}") + end + value + end + + def ensure_integer(value) + unless value.is_a?(Integer) + raise ArgumentError.new("#{value} is not an Integer") + end + value + end + + def ensure_integer_and_bounds(value) + ensure_integer value + ensure_upper_bound value + ensure_lower_bound value + end + + def ensure_positive(value) + if value < 0 + raise ArgumentError.new("#{value} cannot be negative") + end + value + end + + def ensure_positive_and_no_zero(value) + if value < 1 + raise ArgumentError.new("#{value} cannot be negative or zero") + end + value + end + + extend self + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/processor_counter.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/processor_counter.rb new file mode 100644 index 0000000000..6d6ae8dea4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/utility/processor_counter.rb @@ -0,0 +1,158 @@ +require 'rbconfig' +require 'concurrent/delay' + +module Concurrent + module Utility + + # @!visibility private + class ProcessorCounter + def initialize + @processor_count = Delay.new { compute_processor_count } + @physical_processor_count = Delay.new { compute_physical_processor_count } + end + + # Number of processors seen by the OS and used for process scheduling. For + # performance reasons the calculated value will be memoized on the first + # call. + # + # When running under JRuby the Java runtime call + # `java.lang.Runtime.getRuntime.availableProcessors` will be used. According + # to the Java documentation this "value may change during a particular + # invocation of the virtual machine... [applications] should therefore + # occasionally poll this property." Subsequently the result will NOT be + # memoized under JRuby. + # + # On Windows the Win32 API will be queried for the + # `NumberOfLogicalProcessors from Win32_Processor`. This will return the + # total number "logical processors for the current instance of the + # processor", which taked into account hyperthreading. + # + # * AIX: /usr/sbin/pmcycles (AIX 5+), /usr/sbin/lsdev + # * Alpha: /usr/bin/nproc (/proc/cpuinfo exists but cannot be used) + # * BSD: /sbin/sysctl + # * Cygwin: /proc/cpuinfo + # * Darwin: /usr/bin/hwprefs, /usr/sbin/sysctl + # * HP-UX: /usr/sbin/ioscan + # * IRIX: /usr/sbin/sysconf + # * Linux: /proc/cpuinfo + # * Minix 3+: /proc/cpuinfo + # * Solaris: /usr/sbin/psrinfo + # * Tru64 UNIX: /usr/sbin/psrinfo + # * UnixWare: /usr/sbin/psrinfo + # + # @return [Integer] number of processors seen by the OS or Java runtime + # + # @see https://github.com/grosser/parallel/blob/4fc8b89d08c7091fe0419ca8fba1ec3ce5a8d185/lib/parallel.rb + # + # @see http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors() + # @see http://msdn.microsoft.com/en-us/library/aa394373(v=vs.85).aspx + def processor_count + @processor_count.value + end + + # Number of physical processor cores on the current system. For performance + # reasons the calculated value will be memoized on the first call. + # + # On Windows the Win32 API will be queried for the `NumberOfCores from + # Win32_Processor`. This will return the total number "of cores for the + # current instance of the processor." On Unix-like operating systems either + # the `hwprefs` or `sysctl` utility will be called in a subshell and the + # returned value will be used. In the rare case where none of these methods + # work or an exception is raised the function will simply return 1. + # + # @return [Integer] number physical processor cores on the current system + # + # @see https://github.com/grosser/parallel/blob/4fc8b89d08c7091fe0419ca8fba1ec3ce5a8d185/lib/parallel.rb + # + # @see http://msdn.microsoft.com/en-us/library/aa394373(v=vs.85).aspx + # @see http://www.unix.com/man-page/osx/1/HWPREFS/ + # @see http://linux.die.net/man/8/sysctl + def physical_processor_count + @physical_processor_count.value + end + + private + + def compute_processor_count + if Concurrent.on_jruby? + java.lang.Runtime.getRuntime.availableProcessors + else + os_name = RbConfig::CONFIG["target_os"] + if os_name =~ /mingw|mswin/ + require 'win32ole' + result = WIN32OLE.connect("winmgmts://").ExecQuery( + "select NumberOfLogicalProcessors from Win32_Processor") + result.to_enum.collect(&:NumberOfLogicalProcessors).reduce(:+) + elsif File.readable?("/proc/cpuinfo") && (cpuinfo_count = IO.read("/proc/cpuinfo").scan(/^processor/).size) > 0 + cpuinfo_count + elsif File.executable?("/usr/bin/nproc") + IO.popen("/usr/bin/nproc --all", &:read).to_i + elsif File.executable?("/usr/bin/hwprefs") + IO.popen("/usr/bin/hwprefs thread_count", &:read).to_i + elsif File.executable?("/usr/sbin/psrinfo") + IO.popen("/usr/sbin/psrinfo", &:read).scan(/^.*on-*line/).size + elsif File.executable?("/usr/sbin/ioscan") + IO.popen("/usr/sbin/ioscan -kC processor", &:read).scan(/^.*processor/).size + elsif File.executable?("/usr/sbin/pmcycles") + IO.popen("/usr/sbin/pmcycles -m", &:read).count("\n") + elsif File.executable?("/usr/sbin/lsdev") + IO.popen("/usr/sbin/lsdev -Cc processor -S 1", &:read).count("\n") + elsif File.executable?("/usr/sbin/sysconf") and os_name =~ /irix/i + IO.popen("/usr/sbin/sysconf NPROC_ONLN", &:read).to_i + elsif File.executable?("/usr/sbin/sysctl") + IO.popen("/usr/sbin/sysctl -n hw.ncpu", &:read).to_i + elsif File.executable?("/sbin/sysctl") + IO.popen("/sbin/sysctl -n hw.ncpu", &:read).to_i + else + # TODO (pitr-ch 05-Nov-2016): warn about failures + 1 + end + end + rescue + return 1 + end + + def compute_physical_processor_count + ppc = case RbConfig::CONFIG["target_os"] + when /darwin1/ + IO.popen("/usr/sbin/sysctl -n hw.physicalcpu", &:read).to_i + when /linux/ + cores = {} # unique physical ID / core ID combinations + phy = 0 + IO.read("/proc/cpuinfo").scan(/^physical id.*|^core id.*/) do |ln| + if ln.start_with?("physical") + phy = ln[/\d+/] + elsif ln.start_with?("core") + cid = phy + ":" + ln[/\d+/] + cores[cid] = true if not cores[cid] + end + end + cores.count + when /mswin|mingw/ + require 'win32ole' + result_set = WIN32OLE.connect("winmgmts://").ExecQuery( + "select NumberOfCores from Win32_Processor") + result_set.to_enum.collect(&:NumberOfCores).reduce(:+) + else + processor_count + end + # fall back to logical count if physical info is invalid + ppc > 0 ? ppc : processor_count + rescue + return 1 + end + end + end + + # create the default ProcessorCounter on load + @processor_counter = Utility::ProcessorCounter.new + singleton_class.send :attr_reader, :processor_counter + + def self.processor_count + processor_counter.processor_count + end + + def self.physical_processor_count + processor_counter.physical_processor_count + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/version.rb b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/version.rb new file mode 100644 index 0000000000..4acc1d55ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/concurrent-ruby-1.1.4/lib/concurrent/version.rb @@ -0,0 +1,4 @@ +module Concurrent + VERSION = '1.1.4' + EDGE_VERSION = '0.4.1' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/.gitignore b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/.gitignore new file mode 100644 index 0000000000..616915ca0c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/.gitignore @@ -0,0 +1,3 @@ +*.gemspec +pkg +Gemfile.lock diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/CHANGELOG.rdoc b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/CHANGELOG.rdoc new file mode 100644 index 0000000000..f7dd9fb37a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/CHANGELOG.rdoc @@ -0,0 +1,149 @@ += Changelog + +== 0.5.1 / 2014-04-23 + +- new features: + - Support for receiving binary messages + +- changed: + - Allow additional close codes to be sent by apps + - Raise better errors on missing Sec-WebSocket-Key2 + - Updated http_parser.rb dependency to 0.6.0 + +- bug fixes: + - Abort if HTTP request URI is invalid + - Force close connections that have been sent a close handshake after a timeout + +- improved spec compliance on: + - Missing continuation frames + - Fragmented control frames + - Close behaviour after protocol errors + +== 0.5.0 / 2013-03-05 + +- new features: + - onclose handler is now passed a hash containing was_clean (set to true in drafts 03 and above when a connection is closed with a closing handshake, either by the server or the client), the close code, and reason (drafts 06 and above). Close code 1005 indicates that no code was supplied, and 1006 that the connection was closed abnormally. + - use Connection#support_close_codes? to easily check whether close codes are supported by the WebSocket protocol (drafts 06 and above) + - closes connection with 1007 close code if text frame contains invalid UTF8 + - added Handshake#secure? for checking whether the connection is secure (either ssl or behind an ssl proxy) + +- changed: + - Defaults to sending no close code rather than 1000 (consistent with browsers) + - Allows sending a 3xxx close code + - Renamed Connection#close_websocket to Connection#close (again for consistency with browsers). Old method is available till 0.6. + - Sends reasons with internally generated closure (previously only sent code) + - Echos close code when replying to close handshake + +== 0.4.0 / 2013-01-22 + +- new features: + - on_open handler is now passed a handshake object which exposes the request headers, path, and query parameters + - Easily access the protocol version via Handshake#protocol_version + - Easily access the origin via Handshake#origin + +- changed: + - Removed Connection#request - change to using handshake passed to on_open + +- internals: + - Uses the http_parser.rb gem + +== 0.3.8 / 2012-07-12 + +- bug fixes: + - Fixed support for Ruby 1.8.7 which was broken in 0.3.7 + +== 0.3.7 / 2012-07-11 + +- new features: + - Supports sending 1009 error code when incoming frame is too large to handle, and added associated exception class WSMessageTooBigError [Martyn Loughran] + - Supports overriding the maximum frame size by setting the max_frame_size accessor on the connection object (in bytes). Default unchanged at 10MB. [Martyn Loughran] + +- bug fixes: + - Fixes some encoding issues on Ruby 1.9 [Dingding Ye] + - Raises a HandshakeError if WS header is empty [Markus Fenske] + - Connection#send would mutate passed string to BINARY encoding. The fix still mutates the string by forcing the encoding back to UTF-8 before returning, but if the passed string was encoded as UTF-8 this is equivalent [Martyn Loughran] + +== 0.3.6 / 2011-12-23 + +- new features: + - Supports sending ping & pong messages + - Supports binding to received ping & pong messages + +== 0.3.5 / 2011-10-24 + +- new features: + - Support WebSocket draft 13 + +== 0.3.2 / 2011-10-09 + +- bugfixes: + - Handling of messages with > 2 frames + - Encode string passed to onmessage handler as UTF-8 on Ruby 1.9 + - Add 10MB frame length limit to all draft versions + +== 0.3.1 / 2011-07-28 + +- new features: + - Support WebSocket drafts 07 & 08 + +== 0.3.0 / 2011-05-06 + +- new features: + - Support WebSocket drafts 05 & 06 +- changes: + - Accept request headers in a case insensitive manner + - Change handling of errors. Previously some application errors were caught + internally and were invisible unless an onerror callback was supplied. See + readme for details + +== 0.2.1 / 2011-03-01 + +- bugfixes: + - Performance improvements to draft 76 framing + - Limit frame lengths for draft 76 + - Better error handling for draft 76 handshake + - Ruby 1.9 support + +== 0.2.0 / 2010-11-23 + +- new features: + - Support for WebSocket draft 03 +- bugfixes: + - Handle case when handshake split into two receive_data calls + - Stricter regexp matching of frames + +== 0.1.4 / 2010-08-23 + +- new features: + - Allow custom ssl certificate to be used by passing :tls_options + - Protect against errors caused by non limited frame lengths + - Use custom exceptions rather than RuntimeError +- bugfixes: + - Handle invalid HTTP request with HandshakeError + +== 0.1.3 / 2010-07-18 + +- new features: + - onerror callback +- bugfixes: + - proper handling of zero spaces in key1 or key2(prevent ZeroDivisionError) + - convert received data to utf-8 to prevent ruby 1.9 errors + - fix handling of null bytes within a frame + +== 0.1.2 / 2010-06-16 + +- new features: + - none +- bugfixes: + - allow $ character inside header key + +== 0.1.1 / 2010-06-13 + +- new features: + - wss/ssl support +- bugfixes: + - can't & strings + +== 0.1.0 / 2010-06-12 + +- initial release \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Gemfile b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Gemfile new file mode 100644 index 0000000000..bd789f6578 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Gemfile @@ -0,0 +1,9 @@ +source "http://rubygems.org" + +gemspec + +gem "em-websocket-client", git: "git@github.com:movitto/em-websocket-client.git", branch: "expose-websocket-api" +gem "em-spec", "~> 0.2.6" +gem "em-http-request", "~> 1.1.1" +gem "rspec", "~> 2.12.0" +gem "rake" diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/README.md b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/README.md new file mode 100644 index 0000000000..19d5db84df --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/README.md @@ -0,0 +1,146 @@ +# EM-WebSocket + +[![Gem Version](https://badge.fury.io/rb/em-websocket.png)](http://rubygems.org/gems/em-websocket) +[![Analytics](https://ga-beacon.appspot.com/UA-71196-10/em-websocket/readme)](https://github.com/igrigorik/ga-beacon) + +EventMachine based, async, Ruby WebSocket server. Take a look at examples directory, or check out the blog post: [Ruby & Websockets: TCP for the Web](http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/). + +## Simple server example + +```ruby +require 'em-websocket' + +EM.run { + EM::WebSocket.run(:host => "0.0.0.0", :port => 8080) do |ws| + ws.onopen { |handshake| + puts "WebSocket connection open" + + # Access properties on the EM::WebSocket::Handshake object, e.g. + # path, query_string, origin, headers + + # Publish message to the client + ws.send "Hello Client, you connected to #{handshake.path}" + } + + ws.onclose { puts "Connection closed" } + + ws.onmessage { |msg| + puts "Recieved message: #{msg}" + ws.send "Pong: #{msg}" + } + end +} +``` + +## Protocols supported, and protocol specific functionality + +Supports all WebSocket protocols in use in the wild (and a few that are not): drafts 75, 76, 1-17, rfc. + +While some of the changes between protocols are unimportant from the point of view of application developers, a few drafts did introduce new functionality. It's possible to easily test for this functionality by using + +### Ping & pong supported + +Call `ws.pingable?` to check whether ping & pong is supported by the protocol in use. + +It's possible to send a ping frame (`ws.ping(body = '')`), which the client must respond to with a pong, or the server can send an unsolicited pong frame (`ws.pong(body = '')`) which the client should not respond to. These methods can be used regardless of protocol version; they return true if the protocol supports ping&pong or false otherwise. + +When receiving a ping, the server will automatically respond with a pong as the spec requires (so you should _not_ write an onping handler that replies with a pong), however it is possible to bind to ping & pong events if desired by using the `onping` and `onpong` methods. + +### Close codes and reasons + +A WebSocket connection can be closed cleanly, regardless of protocol, by calling `ws.close(code = nil, body = nil)`. + +Early protocols just close the TCP connection, draft 3 introduced a close handshake, and draft 6 added close codes and reasons to the close handshake. Call `ws.supports_close_codes?` to check whether close codes are supported (i.e. the protocol version is 6 or above). + +The `onclose` callback is passed a hash which may contain following keys (depending on the protocol version): + +* `was_clean`: boolean indicating whether the connection was closed via the close handshake. +* `code`: the close code. There are two special close codes which the server may set (as defined in the WebSocket spec): + * 1005: no code was supplied + * 1006: abnormal closure (the same as `was_clean: false`) +* `reason`: the close reason + +Acceptable close codes are defined in the WebSocket rfc (). The following codes can be supplies when calling `ws.close(code)`: + +* 1000: a generic normal close +* range 3xxx: reserved for libraries, frameworks, and applications (and can be registered with IANA) +* range 4xxx: for private use + +If unsure use a code in the 4xxx range. em-websocket may also close a connection with one of the following close codes: + +* 1002: WebSocket protocol error. +* 1009: Message too big to process. By default em-websocket will accept frames up to 10MB in size. If a frame is larger than this the connection will be closed without reading the frame data. The limit can be overriden globally (`EM::WebSocket.max_frame_size = bytes`) or on a specific connection (`ws.max_frame_size = bytes`). + +## Secure server + +It is possible to accept secure `wss://` connections by passing `:secure => true` when opening the connection. Pass a `:tls_options` hash containing keys as described in http://eventmachine.rubyforge.org/EventMachine/Connection.html#start_tls-instance_method + +**Warning**: Safari 5 does not currently support prompting on untrusted SSL certificates therefore using a self signed certificate may leave you scratching your head. + +```ruby +EM::WebSocket.start({ + :host => "0.0.0.0", + :port => 443, + :secure => true, + :tls_options => { + :private_key_file => "/private/key", + :cert_chain_file => "/ssl/certificate" + } +}) do |ws| + # ... +end +``` + +It's possible to check whether an incoming connection is secure by reading `handshake.secure?` in the onopen callback. + +## Running behind an SSL Proxy/Terminator, like Stunnel + +The `:secure_proxy => true` option makes it possible to use em-websocket behind a secure SSL proxy/terminator like [Stunnel](http://www.stunnel.org/) which does the actual encryption & decryption. + +Note that this option is only required to support drafts 75 & 76 correctly (e.g. Safari 5.1.x & earlier, and Safari on iOS 5.x & earlier). + +```ruby +EM::WebSocket.start({ + :host => "0.0.0.0", + :port => 8080, + :secure_proxy => true +}) do |ws| + # ... +end +``` + +## Handling errors + +There are two kinds of errors that need to be handled -- WebSocket protocol errors and errors in application code. + +WebSocket protocol errors (for example invalid data in the handshake or invalid message frames) raise errors which descend from `EM::WebSocket::WebSocketError`. Such errors are rescued internally and the WebSocket connection will be closed immediately or an error code sent to the browser in accordance to the WebSocket specification. It is possible to be notified in application code of such errors by including an `onerror` callback. + +```ruby +ws.onerror { |error| + if error.kind_of?(EM::WebSocket::WebSocketError) + # ... + end +} +``` + +Application errors are treated differently. If no `onerror` callback has been defined these errors will propagate to the EventMachine reactor, typically causing your program to terminate. If you wish to handle exceptions, simply supply an `onerror callback` and check for exceptions which are not descendant from `EM::WebSocket::WebSocketError`. + +It is also possible to log all errors when developing by including the `:debug => true` option when initialising the WebSocket server. + +## Emulating WebSockets in older browsers + +It is possible to emulate WebSockets in older browsers using flash emulation. For example take a look at the [web-socket-js](https://github.com/gimite/web-socket-js) project. + +Using flash emulation does require some minimal support from em-websocket which is enabled by default. If flash connects to the WebSocket port and requests a policy file (which it will do if it fails to receive a policy file on port 843 after a timeout), em-websocket will return one. Also see for an example policy file server which you can run on port 843. + +## Examples & Projects using em-websocket + +* [Pusher](http://pusher.com) - Realtime Messaging Service +* [Livereload](https://github.com/mockko/livereload) - LiveReload applies CSS/JS changes to Safari or Chrome w/o reloading +* [Twitter AMQP WebSocket Example](http://github.com/rubenfonseca/twitter-amqp-websocket-example) +* examples/multicast.rb - broadcast all ruby tweets to all subscribers +* examples/echo.rb - server <> client exchange via a websocket + +# License + +The MIT License - Copyright (c) 2009-2013 Ilya Grigorik, Martyn Loughran diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Rakefile b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Rakefile new file mode 100644 index 0000000000..0bd271808d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/Rakefile @@ -0,0 +1,11 @@ +require 'bundler' +Bundler::GemHelper.install_tasks + +require 'rspec/core/rake_task' + +RSpec::Core::RakeTask.new do |t| + t.rspec_opts = ["-c", "-f progress", "-r ./spec/helper.rb"] + t.pattern = 'spec/**/*_spec.rb' +end + +task :default => :spec diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/echo.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/echo.rb new file mode 100644 index 0000000000..4e648860c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/echo.rb @@ -0,0 +1,24 @@ +require File.expand_path('../../lib/em-websocket', __FILE__) + +EM.run { + EM::WebSocket.run(:host => "0.0.0.0", :port => 8080, :debug => false) do |ws| + ws.onopen { |handshake| + puts "WebSocket opened #{{ + :path => handshake.path, + :query => handshake.query, + :origin => handshake.origin, + }}" + + ws.send "Hello Client!" + } + ws.onmessage { |msg| + ws.send "Pong: #{msg}" + } + ws.onclose { + puts "WebSocket closed" + } + ws.onerror { |e| + puts "Error: #{e.message}" + } + end +} diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/multicast.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/multicast.rb new file mode 100644 index 0000000000..b1692d56eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/multicast.rb @@ -0,0 +1,47 @@ +require 'em-websocket' +# requires the twitter-stream gem +require 'twitter/json_stream' +require 'json' + +# +# broadcast all ruby related tweets to all connected users! +# + +username = ARGV.shift +password = ARGV.shift +raise "need username and password" if !username or !password + +EventMachine.run { + @channel = EM::Channel.new + + @twitter = Twitter::JSONStream.connect( + :path => '/1/statuses/filter.json?track=ruby', + :auth => "#{username}:#{password}", + :ssl => true + ) + + @twitter.each_item do |status| + status = JSON.parse(status) + @channel.push "#{status['user']['screen_name']}: #{status['text']}" + end + + + EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug => true) do |ws| + + ws.onopen { + sid = @channel.subscribe { |msg| ws.send msg } + @channel.push "#{sid} connected!" + + ws.onmessage { |msg| + @channel.push "<#{sid}>: #{msg}" + } + + ws.onclose { + @channel.unsubscribe(sid) + } + } + + end + + puts "Server started" +} diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/ping.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/ping.rb new file mode 100644 index 0000000000..fe569c3b0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/ping.rb @@ -0,0 +1,24 @@ +require File.expand_path('../../lib/em-websocket', __FILE__) + +EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug => false) do |ws| + timer = nil + ws.onopen { + puts "Ping supported: #{ws.pingable?}" + timer = EM.add_periodic_timer(1) { + p ["Sent ping", ws.ping('hello')] + } + } + ws.onpong { |value| + puts "Received pong: #{value}" + } + ws.onping { |value| + puts "Received ping: #{value}" + } + ws.onclose { + EM.cancel_timer(timer) + puts "WebSocket closed" + } + ws.onerror { |e| + puts "Error: #{e.message}" + } +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/test.html b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/test.html new file mode 100644 index 0000000000..07d4636bfc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/examples/test.html @@ -0,0 +1,29 @@ + + + + + +
              + + diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket.rb new file mode 100644 index 0000000000..3eaa105b39 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket.rb @@ -0,0 +1,24 @@ +$:.unshift(File.dirname(__FILE__) + '/../lib') + +require "eventmachine" + +%w[ + debugger websocket connection + handshake + handshake75 handshake76 handshake04 + framing76 framing03 framing04 framing05 framing07 + close75 close03 close05 close06 + masking04 + message_processor_03 message_processor_06 + handler handler75 handler76 handler03 handler05 handler06 handler07 handler08 handler13 +].each do |file| + require "em-websocket/#{file}" +end + +unless ''.respond_to?(:getbyte) + class String + def getbyte(i) + self[i] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close03.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close03.rb new file mode 100644 index 0000000000..8981776f95 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close03.rb @@ -0,0 +1,14 @@ +module EventMachine + module WebSocket + module Close03 + def close_websocket(code, body) + # TODO: Ideally send body data and check that it matches in ack + send_frame(:close, '') + @state = :closing + start_close_timeout + end + + def supports_close_codes?; false; end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close05.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close05.rb new file mode 100644 index 0000000000..8f8c1508e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close05.rb @@ -0,0 +1,14 @@ +module EventMachine + module WebSocket + module Close05 + def close_websocket(code, body) + # TODO: Ideally send body data and check that it matches in ack + send_frame(:close, "\x53") + @state = :closing + start_close_timeout + end + + def supports_close_codes?; false; end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close06.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close06.rb new file mode 100644 index 0000000000..14cc80ec69 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close06.rb @@ -0,0 +1,19 @@ +module EventMachine + module WebSocket + module Close06 + def close_websocket(code, body) + if code + close_data = [code].pack('n') + close_data << body if body + send_frame(:close, close_data) + else + send_frame(:close, '') + end + @state = :closing + start_close_timeout + end + + def supports_close_codes?; true; end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close75.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close75.rb new file mode 100644 index 0000000000..9d6ba020ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/close75.rb @@ -0,0 +1,11 @@ +module EventMachine + module WebSocket + module Close75 + def close_websocket(code, body) + @connection.close_connection_after_writing + end + + def supports_close_codes?; false; end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/connection.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/connection.rb new file mode 100644 index 0000000000..331b615dff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/connection.rb @@ -0,0 +1,313 @@ +module EventMachine + module WebSocket + class Connection < EventMachine::Connection + include Debugger + + attr_writer :max_frame_size + + # define WebSocket callbacks + def onopen(&blk); @onopen = blk; end + def onclose(&blk); @onclose = blk; end + def onerror(&blk); @onerror = blk; end + def onmessage(&blk); @onmessage = blk; end + def onbinary(&blk); @onbinary = blk; end + def onping(&blk); @onping = blk; end + def onpong(&blk); @onpong = blk; end + + def trigger_on_message(msg) + @onmessage.call(msg) if defined? @onmessage + end + def trigger_on_binary(msg) + @onbinary.call(msg) if defined? @onbinary + end + def trigger_on_open(handshake) + @onopen.call(handshake) if defined? @onopen + end + def trigger_on_close(event = {}) + @onclose.call(event) if defined? @onclose + end + def trigger_on_ping(data) + @onping.call(data) if defined? @onping + end + def trigger_on_pong(data) + @onpong.call(data) if defined? @onpong + end + def trigger_on_error(reason) + return false unless defined? @onerror + @onerror.call(reason) + true + end + + def initialize(options) + @options = options + @debug = options[:debug] || false + @secure = options[:secure] || false + @secure_proxy = options[:secure_proxy] || false + @tls_options = options[:tls_options] || {} + @close_timeout = options[:close_timeout] + + @handler = nil + + debug [:initialize] + end + + # Use this method to close the websocket connection cleanly + # This sends a close frame and waits for acknowlegement before closing + # the connection + def close(code = nil, body = nil) + if code && !acceptable_close_code?(code) + raise "Application code may only use codes from 1000, 3000-4999" + end + + close_websocket_private(code, body) + end + + # Deprecated, to be removed in version 0.6 + alias :close_websocket :close + + def post_init + start_tls(@tls_options) if @secure + end + + def receive_data(data) + debug [:receive_data, data] + + if @handler + @handler.receive_data(data) + else + dispatch(data) + end + rescue => e + debug [:error, e] + + # There is no code defined for application errors, so use 3000 + # (which is reserved for frameworks) + close_websocket_private(3000, "Application error") + + # These are application errors - raise unless onerror defined + trigger_on_error(e) || raise(e) + end + + def unbind + debug [:unbind, :connection] + + @handler.unbind if @handler + rescue => e + debug [:error, e] + # These are application errors - raise unless onerror defined + trigger_on_error(e) || raise(e) + end + + def dispatch(data) + if data.match(/\A/) + send_flash_cross_domain_file + else + @handshake ||= begin + handshake = Handshake.new(@secure || @secure_proxy) + + handshake.callback { |upgrade_response, handler_klass| + debug [:accepting_ws_version, handshake.protocol_version] + debug [:upgrade_response, upgrade_response] + self.send_data(upgrade_response) + @handler = handler_klass.new(self, @debug) + @handshake = nil + trigger_on_open(handshake) + } + + handshake.errback { |e| + debug [:error, e] + trigger_on_error(e) + # Handshake errors require the connection to be aborted + abort + } + + handshake + end + + @handshake.receive_data(data) + end + end + + def send_flash_cross_domain_file + file = '' + debug [:cross_domain, file] + send_data file + + # handle the cross-domain request transparently + # no need to notify the user about this connection + @onclose = nil + close_connection_after_writing + end + + # Cache encodings since it's moderately expensive to look them up each time + ENCODING_SUPPORTED = "string".respond_to?(:force_encoding) + UTF8 = Encoding.find("UTF-8") if ENCODING_SUPPORTED + BINARY = Encoding.find("BINARY") if ENCODING_SUPPORTED + + # Send a WebSocket text frame. + # + # A WebSocketError may be raised if the connection is in an opening or a + # closing state, or if the passed in data is not valid UTF-8 + # + def send_text(data) + # If we're using Ruby 1.9, be pedantic about encodings + if ENCODING_SUPPORTED + # Also accept ascii only data in other encodings for convenience + unless (data.encoding == UTF8 && data.valid_encoding?) || data.ascii_only? + raise WebSocketError, "Data sent to WebSocket must be valid UTF-8 but was #{data.encoding} (valid: #{data.valid_encoding?})" + end + # This labels the encoding as binary so that it can be combined with + # the BINARY framing + data.force_encoding(BINARY) + else + # TODO: Check that data is valid UTF-8 + end + + if @handler + @handler.send_text_frame(data) + else + raise WebSocketError, "Cannot send data before onopen callback" + end + + # Revert data back to the original encoding (which we assume is UTF-8) + # Doing this to avoid duping the string - there may be a better way + data.force_encoding(UTF8) if ENCODING_SUPPORTED + return nil + end + + alias :send :send_text + + # Send a WebSocket binary frame. + # + def send_binary(data) + if @handler + @handler.send_frame(:binary, data) + else + raise WebSocketError, "Cannot send binary before onopen callback" + end + end + + # Send a ping to the client. The client must respond with a pong. + # + # In the case that the client is running a WebSocket draft < 01, false + # is returned since ping & pong are not supported + # + def ping(body = '') + if @handler + @handler.pingable? ? @handler.send_frame(:ping, body) && true : false + else + raise WebSocketError, "Cannot ping before onopen callback" + end + end + + # Send an unsolicited pong message, as allowed by the protocol. The + # client is not expected to respond to this message. + # + # em-websocket automatically takes care of sending pong replies to + # incoming ping messages, as the protocol demands. + # + def pong(body = '') + if @handler + @handler.pingable? ? @handler.send_frame(:pong, body) && true : false + else + raise WebSocketError, "Cannot ping before onopen callback" + end + end + + # Test whether the connection is pingable (i.e. the WebSocket draft in + # use is >= 01) + def pingable? + if @handler + @handler.pingable? + else + raise WebSocketError, "Cannot test whether pingable before onopen callback" + end + end + + def supports_close_codes? + if @handler + @handler.supports_close_codes? + else + raise WebSocketError, "Cannot test before onopen callback" + end + end + + def state + @handler ? @handler.state : :handshake + end + + # Returns the maximum frame size which this connection is configured to + # accept. This can be set globally or on a per connection basis, and + # defaults to a value of 10MB if not set. + # + # The behaviour when a too large frame is received varies by protocol, + # but in the newest protocols the connection will be closed with the + # correct close code (1009) immediately after receiving the frame header + # + def max_frame_size + defined?(@max_frame_size) ? @max_frame_size : WebSocket.max_frame_size + end + + def close_timeout + @close_timeout || WebSocket.close_timeout + end + + private + + # As definited in draft 06 7.2.2, some failures require that the server + # abort the websocket connection rather than close cleanly + def abort + close_connection + end + + def close_websocket_private(code, body) + if @handler + debug [:closing, code] + @handler.close_websocket(code, body) + else + # The handshake hasn't completed - should be safe to terminate + abort + end + end + + # Allow applications to close with 1000, 1003, 1008, 1011, 3xxx or 4xxx. + # + # em-websocket uses a few other codes internally which should not be + # used by applications + # + # Browsers generally allow connections to be closed with code 1000, + # 3xxx, and 4xxx. em-websocket allows closing with a few other codes + # which seem reasonable (for discussion see + # https://github.com/igrigorik/em-websocket/issues/98) + # + # Usage from the rfc: + # + # 1000 indicates a normal closure + # + # 1003 indicates that an endpoint is terminating the connection + # because it has received a type of data it cannot accept + # + # 1008 indicates that an endpoint is terminating the connection because + # it has received a message that violates its policy + # + # 1011 indicates that a server is terminating the connection because it + # encountered an unexpected condition that prevented it from fulfilling + # the request + # + # Status codes in the range 3000-3999 are reserved for use by libraries, + # frameworks, and applications + # + # Status codes in the range 4000-4999 are reserved for private use and + # thus can't be registered + # + def acceptable_close_code?(code) + case code + when 1000, 1003, 1008, 1011, (3000..4999) + true + else + false + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/debugger.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/debugger.rb new file mode 100644 index 0000000000..a5b3266879 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/debugger.rb @@ -0,0 +1,17 @@ +module EventMachine + module WebSocket + module Debugger + + private + + def debug(*data) + if @debug + require 'pp' + pp data + puts + end + end + + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing03.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing03.rb new file mode 100644 index 0000000000..61e6ab8ba7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing03.rb @@ -0,0 +1,162 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + module Framing03 + def initialize_framing + @data = '' + @application_data_buffer = '' # Used for MORE frames + @frame_type = nil + end + + def process_data + error = false + + while !error && @data.size > 1 + pointer = 0 + + more = ((@data.getbyte(pointer) & 0b10000000) == 0b10000000) ^ fin + # Ignoring rsv1-3 for now + opcode = @data.getbyte(0) & 0b00001111 + pointer += 1 + + # Ignoring rsv4 + length = @data.getbyte(pointer) & 0b01111111 + pointer += 1 + + payload_length = case length + when 127 # Length defined by 8 bytes + # Check buffer size + if @data.getbyte(pointer+8-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Only using the last 4 bytes for now, till I work out how to + # unpack 8 bytes. I'm sure 4GB frames will do for now :) + l = @data[(pointer+4)..(pointer+7)].unpack('N').first + pointer += 8 + l + when 126 # Length defined by 2 bytes + # Check buffer size + if @data.getbyte(pointer+2-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + l = @data[pointer..(pointer+1)].unpack('n').first + pointer += 2 + l + else + length + end + + if payload_length > @connection.max_frame_size + raise WSMessageTooBigError, "Frame length too long (#{payload_length} bytes)" + end + + # Check buffer size + if @data.getbyte(pointer+payload_length-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Throw away data up to pointer + @data.slice!(0...pointer) + + # Read application data + application_data = @data.slice!(0...payload_length) + + frame_type = opcode_to_type(opcode) + + if frame_type == :continuation && !@frame_type + raise WSProtocolError, 'Continuation frame not expected' + end + + if more + debug [:moreframe, frame_type, application_data] + @application_data_buffer << application_data + # The message type is passed in the first frame + @frame_type ||= frame_type + else + # Message is complete + if frame_type == :continuation + @application_data_buffer << application_data + message(@frame_type, '', @application_data_buffer) + @application_data_buffer = '' + @frame_type = nil + else + message(frame_type, '', application_data) + end + end + end # end while + end + + def send_frame(frame_type, application_data) + debug [:sending_frame, frame_type, application_data] + + if @state == :closing && data_frame?(frame_type) + raise WebSocketError, "Cannot send data frame since connection is closing" + end + + frame = '' + + opcode = type_to_opcode(frame_type) + byte1 = opcode # since more, rsv1-3 are 0 + frame << byte1 + + length = application_data.size + if length <= 125 + byte2 = length # since rsv4 is 0 + frame << byte2 + elsif length < 65536 # write 2 byte length + frame << 126 + frame << [length].pack('n') + else # write 8 byte length + frame << 127 + frame << [length >> 32, length & 0xFFFFFFFF].pack("NN") + end + + frame << application_data + + @connection.send_data(frame) + end + + def send_text_frame(data) + send_frame(:text, data) + end + + private + + # This allows flipping the more bit to fin for draft 04 + def fin; false; end + + FRAME_TYPES = { + :continuation => 0, + :close => 1, + :ping => 2, + :pong => 3, + :text => 4, + :binary => 5 + } + FRAME_TYPES_INVERSE = FRAME_TYPES.invert + # Frames are either data frames or control frames + DATA_FRAMES = [:text, :binary, :continuation] + + def type_to_opcode(frame_type) + FRAME_TYPES[frame_type] || raise("Unknown frame type") + end + + def opcode_to_type(opcode) + FRAME_TYPES_INVERSE[opcode] || raise(WSProtocolError, "Unknown opcode #{opcode}") + end + + def data_frame?(type) + DATA_FRAMES.include?(type) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing04.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing04.rb new file mode 100644 index 0000000000..41352e6361 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing04.rb @@ -0,0 +1,15 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + # The only difference between draft 03 framing and draft 04 framing is + # that the MORE bit has been changed to a FIN bit + module Framing04 + include Framing03 + + private + + def fin; true; end + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing05.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing05.rb new file mode 100644 index 0000000000..636336aa28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing05.rb @@ -0,0 +1,163 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + module Framing05 + def initialize_framing + @data = MaskedString.new + @application_data_buffer = '' # Used for MORE frames + @frame_type = nil + end + + def process_data + error = false + + while !error && @data.size > 5 # mask plus first byte present + pointer = 0 + + @data.read_mask + pointer += 4 + + fin = (@data.getbyte(pointer) & 0b10000000) == 0b10000000 + # Ignoring rsv1-3 for now + opcode = @data.getbyte(pointer) & 0b00001111 + pointer += 1 + + # Ignoring rsv4 + length = @data.getbyte(pointer) & 0b01111111 + pointer += 1 + + payload_length = case length + when 127 # Length defined by 8 bytes + # Check buffer size + if @data.getbyte(pointer+8-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Only using the last 4 bytes for now, till I work out how to + # unpack 8 bytes. I'm sure 4GB frames will do for now :) + l = @data.getbytes(pointer+4, 4).unpack('N').first + pointer += 8 + l + when 126 # Length defined by 2 bytes + # Check buffer size + if @data.getbyte(pointer+2-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + l = @data.getbytes(pointer, 2).unpack('n').first + pointer += 2 + l + else + length + end + + if payload_length > @connection.max_frame_size + raise WSMessageTooBigError, "Frame length too long (#{payload_length} bytes)" + end + + # Check buffer size + if @data.getbyte(pointer+payload_length-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Read application data + application_data = @data.getbytes(pointer, payload_length) + pointer += payload_length + + # Throw away data up to pointer + @data.unset_mask + @data.slice!(0...pointer) + + frame_type = opcode_to_type(opcode) + + if frame_type == :continuation && !@frame_type + raise WSProtocolError, 'Continuation frame not expected' + end + + if !fin + debug [:moreframe, frame_type, application_data] + @application_data_buffer << application_data + @frame_type = frame_type + else + # Message is complete + if frame_type == :continuation + @application_data_buffer << application_data + message(@frame_type, '', @application_data_buffer) + @application_data_buffer = '' + @frame_type = nil + else + message(frame_type, '', application_data) + end + end + end # end while + end + + def send_frame(frame_type, application_data) + debug [:sending_frame, frame_type, application_data] + + if @state == :closing && data_frame?(frame_type) + raise WebSocketError, "Cannot send data frame since connection is closing" + end + + frame = '' + + opcode = type_to_opcode(frame_type) + byte1 = opcode | 0b10000000 # fin bit set, rsv1-3 are 0 + frame << byte1 + + length = application_data.size + if length <= 125 + byte2 = length # since rsv4 is 0 + frame << byte2 + elsif length < 65536 # write 2 byte length + frame << 126 + frame << [length].pack('n') + else # write 8 byte length + frame << 127 + frame << [length >> 32, length & 0xFFFFFFFF].pack("NN") + end + + frame << application_data + + @connection.send_data(frame) + end + + def send_text_frame(data) + send_frame(:text, data) + end + + private + + FRAME_TYPES = { + :continuation => 0, + :close => 1, + :ping => 2, + :pong => 3, + :text => 4, + :binary => 5 + } + FRAME_TYPES_INVERSE = FRAME_TYPES.invert + # Frames are either data frames or control frames + DATA_FRAMES = [:text, :binary, :continuation] + + def type_to_opcode(frame_type) + FRAME_TYPES[frame_type] || raise("Unknown frame type") + end + + def opcode_to_type(opcode) + FRAME_TYPES_INVERSE[opcode] || raise(WSProtocolError, "Unknown opcode #{opcode}") + end + + def data_frame?(type) + DATA_FRAMES.include?(type) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing07.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing07.rb new file mode 100644 index 0000000000..58318e41d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing07.rb @@ -0,0 +1,185 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + module Framing07 + + def initialize_framing + @data = MaskedString.new + @application_data_buffer = '' # Used for MORE frames + @frame_type = nil + end + + def process_data + error = false + + while !error && @data.size >= 2 + pointer = 0 + + fin = (@data.getbyte(pointer) & 0b10000000) == 0b10000000 + # Ignoring rsv1-3 for now + opcode = @data.getbyte(pointer) & 0b00001111 + pointer += 1 + + mask = (@data.getbyte(pointer) & 0b10000000) == 0b10000000 + length = @data.getbyte(pointer) & 0b01111111 + pointer += 1 + + # raise WebSocketError, 'Data from client must be masked' unless mask + + payload_length = case length + when 127 # Length defined by 8 bytes + # Check buffer size + if @data.getbyte(pointer+8-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Only using the last 4 bytes for now, till I work out how to + # unpack 8 bytes. I'm sure 4GB frames will do for now :) + l = @data.getbytes(pointer+4, 4).unpack('N').first + pointer += 8 + l + when 126 # Length defined by 2 bytes + # Check buffer size + if @data.getbyte(pointer+2-1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + l = @data.getbytes(pointer, 2).unpack('n').first + pointer += 2 + l + else + length + end + + # Compute the expected frame length + frame_length = pointer + payload_length + frame_length += 4 if mask + + if frame_length > @connection.max_frame_size + raise WSMessageTooBigError, "Frame length too long (#{frame_length} bytes)" + end + + # Check buffer size + if @data.getbyte(frame_length - 1) == nil + debug [:buffer_incomplete, @data] + error = true + next + end + + # Remove frame header + @data.slice!(0...pointer) + pointer = 0 + + # Read application data (unmasked if required) + @data.read_mask if mask + pointer += 4 if mask + application_data = @data.getbytes(pointer, payload_length) + pointer += payload_length + @data.unset_mask if mask + + # Throw away data up to pointer + @data.slice!(0...pointer) + + frame_type = opcode_to_type(opcode) + + if frame_type == :continuation + if !@frame_type + raise WSProtocolError, 'Continuation frame not expected' + end + else # Not a continuation frame + if @frame_type && data_frame?(frame_type) + raise WSProtocolError, "Continuation frame expected" + end + end + + # Validate that control frames are not fragmented + if !fin && !data_frame?(frame_type) + raise WSProtocolError, 'Control frames must not be fragmented' + end + + if !fin + debug [:moreframe, frame_type, application_data] + @application_data_buffer << application_data + # The message type is passed in the first frame + @frame_type ||= frame_type + else + # Message is complete + if frame_type == :continuation + @application_data_buffer << application_data + message(@frame_type, '', @application_data_buffer) + @application_data_buffer = '' + @frame_type = nil + else + message(frame_type, '', application_data) + end + end + end # end while + end + + def send_frame(frame_type, application_data) + debug [:sending_frame, frame_type, application_data] + + if @state == :closing && data_frame?(frame_type) + raise WebSocketError, "Cannot send data frame since connection is closing" + end + + frame = '' + + opcode = type_to_opcode(frame_type) + byte1 = opcode | 0b10000000 # fin bit set, rsv1-3 are 0 + frame << byte1 + + length = application_data.size + if length <= 125 + byte2 = length # since rsv4 is 0 + frame << byte2 + elsif length < 65536 # write 2 byte length + frame << 126 + frame << [length].pack('n') + else # write 8 byte length + frame << 127 + frame << [length >> 32, length & 0xFFFFFFFF].pack("NN") + end + + frame << application_data + + @connection.send_data(frame) + end + + def send_text_frame(data) + send_frame(:text, data) + end + + private + + FRAME_TYPES = { + :continuation => 0, + :text => 1, + :binary => 2, + :close => 8, + :ping => 9, + :pong => 10, + } + FRAME_TYPES_INVERSE = FRAME_TYPES.invert + # Frames are either data frames or control frames + DATA_FRAMES = [:text, :binary, :continuation] + + def type_to_opcode(frame_type) + FRAME_TYPES[frame_type] || raise("Unknown frame type") + end + + def opcode_to_type(opcode) + FRAME_TYPES_INVERSE[opcode] || raise(WSProtocolError, "Unknown opcode #{opcode}") + end + + def data_frame?(type) + DATA_FRAMES.include?(type) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing76.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing76.rb new file mode 100644 index 0000000000..55982ffa14 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/framing76.rb @@ -0,0 +1,105 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + module Framing76 + def initialize_framing + @data = '' + end + + def process_data + debug [:message, @data] + + # This algorithm comes straight from the spec + # http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76#section-5.3 + + error = false + + while !error + return if @data.size == 0 + + pointer = 0 + frame_type = @data.getbyte(pointer) + pointer += 1 + + if (frame_type & 0x80) == 0x80 + # If the high-order bit of the /frame type/ byte is set + length = 0 + + loop do + return false if !@data.getbyte(pointer) + b = @data.getbyte(pointer) + pointer += 1 + b_v = b & 0x7F + length = length * 128 + b_v + break unless (b & 0x80) == 0x80 + end + + if length > @connection.max_frame_size + raise WSMessageTooBigError, "Frame length too long (#{length} bytes)" + end + + if @data.getbyte(pointer+length-1) == nil + debug [:buffer_incomplete, @data] + # Incomplete data - leave @data to accumulate + error = true + else + # Straight from spec - I'm sure this isn't crazy... + # 6. Read /length/ bytes. + # 7. Discard the read bytes. + @data = @data[(pointer+length)..-1] + + # If the /frame type/ is 0xFF and the /length/ was 0, then close + if length == 0 + @connection.send_data("\xff\x00") + @state = :closing + @connection.close_connection_after_writing + else + error = true + end + end + else + # If the high-order bit of the /frame type/ byte is _not_ set + + if @data.getbyte(0) != 0x00 + # Close the connection since this buffer can never match + raise WSProtocolError, "Invalid frame received" + end + + # Addition to the spec to protect against malicious requests + if @data.size > @connection.max_frame_size + raise WSMessageTooBigError, "Frame length too long (#{@data.size} bytes)" + end + + msg = @data.slice!(/\A\x00[^\xff]*\xff/) + if msg + msg.gsub!(/\A\x00|\xff\z/, '') + if @state == :closing + debug [:ignored_message, msg] + else + msg.force_encoding('UTF-8') if msg.respond_to?(:force_encoding) + @connection.trigger_on_message(msg) + end + else + error = true + end + end + end + + false + end + + # frames need to start with 0x00-0x7f byte and end with + # an 0xFF byte. Per spec, we can also set the first + # byte to a value betweent 0x80 and 0xFF, followed by + # a leading length indicator + def send_text_frame(data) + debug [:sending_text_frame, data] + ary = ["\x00", data, "\xff"] + ary.collect{ |s| s.force_encoding('UTF-8') if s.respond_to?(:force_encoding) } + @connection.send_data(ary.join) + end + + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler.rb new file mode 100644 index 0000000000..98cdd4eaa1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler.rb @@ -0,0 +1,97 @@ +module EventMachine + module WebSocket + class Handler + def self.klass_factory(version) + case version + when 75 + Handler75 + when 76 + Handler76 + when 1..3 + # We'll use handler03 - I believe they're all compatible + Handler03 + when 5 + Handler05 + when 6 + Handler06 + when 7 + Handler07 + when 8 + # drafts 9, 10, 11 and 12 should never change the version + # number as they are all the same as version 08. + Handler08 + when 13 + # drafts 13 to 17 all identify as version 13 as they are + # only minor changes or text changes. + Handler13 + else + # According to spec should abort the connection + raise HandshakeError, "Protocol version #{version} not supported" + end + end + + include Debugger + + attr_reader :request, :state + + def initialize(connection, debug = false) + @connection = connection + @debug = debug + @state = :connected + @close_timer = nil + initialize_framing + end + + def receive_data(data) + @data << data + process_data + rescue WSProtocolError => e + fail_websocket(e) + end + + def close_websocket(code, body) + # Implemented in subclass + end + + # Used to avoid un-acked and unclosed remaining open indefinitely + def start_close_timeout + @close_timer = EM::Timer.new(@connection.close_timeout) { + @connection.close_connection + e = WSProtocolError.new("Close handshake un-acked after #{@connection.close_timeout}s, closing tcp connection") + @connection.trigger_on_error(e) + } + end + + # This corresponds to "Fail the WebSocket Connection" in the spec. + def fail_websocket(e) + debug [:error, e] + close_websocket(e.code, e.message) + @connection.close_connection_after_writing + @connection.trigger_on_error(e) + end + + def unbind + @state = :closed + + @close_timer.cancel if @close_timer + + @close_info = defined?(@close_info) ? @close_info : { + :code => 1006, + :was_clean => false, + } + + @connection.trigger_on_close(@close_info) + end + + def ping + # Overridden in subclass + false + end + + def pingable? + # Also Overridden + false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler03.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler03.rb new file mode 100644 index 0000000000..ac4b3ac4e9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler03.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler03 < Handler + include Framing03 + include MessageProcessor03 + include Close03 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler05.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler05.rb new file mode 100644 index 0000000000..4e48e152c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler05.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler05 < Handler + include Framing05 + include MessageProcessor03 + include Close05 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler06.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler06.rb new file mode 100644 index 0000000000..ad55ef719c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler06.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler06 < Handler + include Framing05 + include MessageProcessor06 + include Close06 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler07.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler07.rb new file mode 100644 index 0000000000..d080cf5980 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler07.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler07 < Handler + include Framing07 + include MessageProcessor06 + include Close06 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler08.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler08.rb new file mode 100644 index 0000000000..632057f38b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler08.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler08 < Handler + include Framing07 + include MessageProcessor06 + include Close06 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler13.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler13.rb new file mode 100644 index 0000000000..1dc465d84c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler13.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler13 < Handler + include Framing07 + include MessageProcessor06 + include Close06 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler75.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler75.rb new file mode 100644 index 0000000000..d9a90d372f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler75.rb @@ -0,0 +1,9 @@ +module EventMachine + module WebSocket + class Handler75 < Handler + include Handshake75 + include Framing76 + include Close75 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler76.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler76.rb new file mode 100644 index 0000000000..c4aaa377c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handler76.rb @@ -0,0 +1,14 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + class Handler76 < Handler + include Handshake76 + include Framing76 + include Close75 + + # "\377\000" is octet version and "\xff\x00" is hex version + TERMINATE_STRING = "\xff\x00" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake.rb new file mode 100644 index 0000000000..12b79044bd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake.rb @@ -0,0 +1,156 @@ +require "http/parser" +require "uri" + +module EventMachine + module WebSocket + + # Resposible for creating the server handshake response + class Handshake + include EM::Deferrable + + attr_reader :parser, :protocol_version + + # Unfortunately drafts 75 & 76 require knowledge of whether the + # connection is being terminated as ws/wss in order to generate the + # correct handshake response + def initialize(secure) + @parser = Http::Parser.new + @secure = secure + + @parser.on_headers_complete = proc { |headers| + @headers = Hash[headers.map { |k,v| [k.downcase, v] }] + } + end + + def receive_data(data) + @parser << data + + if defined? @headers + process(@headers, @parser.upgrade_data) + end + rescue HTTP::Parser::Error => e + fail(HandshakeError.new("Invalid HTTP header: #{e.message}")) + end + + # Returns the WebSocket upgrade headers as a hash. + # + # Keys are strings, unmodified from the request. + # + def headers + @parser.headers + end + + # The same as headers, except that the hash keys are downcased + # + def headers_downcased + @headers + end + + # Returns the request path (excluding any query params) + # + def path + @path + end + + # Returns the query params as a string foo=bar&baz=... + def query_string + @query_string + end + + def query + Hash[query_string.split('&').map { |c| c.split('=', 2) }] + end + + # Returns the WebSocket origin header if provided + # + def origin + @headers["origin"] || @headers["sec-websocket-origin"] || nil + end + + def secure? + @secure + end + + private + + def process(headers, remains) + unless @parser.http_method == "GET" + raise HandshakeError, "Must be GET request" + end + + # Validate request path + # + # According to http://tools.ietf.org/search/rfc2616#section-5.1.2, an + # invalid Request-URI should result in a 400 status code, but + # HandshakeError's currently result in a WebSocket abort. It's not + # clear which should take precedence, but an abort will do just fine. + begin + uri = URI.parse(@parser.request_url) + @path = uri.path + @query_string = uri.query || "" + rescue URI::InvalidURIError + raise HandshakeError, "Invalid request URI: #{@parser.request_url}" + end + + # Validate Upgrade + unless @parser.upgrade? + raise HandshakeError, "Not an upgrade request" + end + upgrade = @headers['upgrade'] + unless upgrade.kind_of?(String) && upgrade.downcase == 'websocket' + raise HandshakeError, "Invalid upgrade header: #{upgrade.inspect}" + end + + # Determine version heuristically + version = if @headers['sec-websocket-version'] + # Used from drafts 04 onwards + @headers['sec-websocket-version'].to_i + elsif @headers['sec-websocket-draft'] + # Used in drafts 01 - 03 + @headers['sec-websocket-draft'].to_i + elsif @headers['sec-websocket-key1'] + 76 + else + 75 + end + + # Additional handling of bytes after the header if required + case version + when 75 + if !remains.empty? + raise HandshakeError, "Extra bytes after header" + end + when 76, 1..3 + if remains.length < 8 + # The whole third-key has not been received yet. + return nil + elsif remains.length > 8 + raise HandshakeError, "Extra bytes after third key" + end + @headers['third-key'] = remains + end + + handshake_klass = case version + when 75 + Handshake75 + when 76, 1..3 + Handshake76 + when 5, 6, 7, 8, 13 + Handshake04 + else + # According to spec should abort the connection + raise HandshakeError, "Protocol version #{version} not supported" + end + + upgrade_response = handshake_klass.handshake(@headers, @parser.request_url, @secure) + + handler_klass = Handler.klass_factory(version) + + @protocol_version = version + succeed(upgrade_response, handler_klass) + rescue HandshakeError => e + fail(e) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake04.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake04.rb new file mode 100644 index 0000000000..a18b9d6ca6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake04.rb @@ -0,0 +1,28 @@ +require 'digest/sha1' +require 'base64' + +module EventMachine + module WebSocket + module Handshake04 + def self.handshake(headers, _, __) + # Required + unless key = headers['sec-websocket-key'] + raise HandshakeError, "sec-websocket-key header is required" + end + + string_to_sign = "#{key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11" + signature = Base64.encode64(Digest::SHA1.digest(string_to_sign)).chomp + + upgrade = ["HTTP/1.1 101 Switching Protocols"] + upgrade << "Upgrade: websocket" + upgrade << "Connection: Upgrade" + upgrade << "Sec-WebSocket-Accept: #{signature}" + + # TODO: Support sec-websocket-protocol + # TODO: sec-websocket-extensions + + return upgrade.join("\r\n") + "\r\n\r\n" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake75.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake75.rb new file mode 100644 index 0000000000..31039c492d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake75.rb @@ -0,0 +1,18 @@ +module EventMachine + module WebSocket + module Handshake75 + def self.handshake(headers, path, secure) + scheme = (secure ? "wss" : "ws") + location = "#{scheme}://#{headers['host']}#{path}" + + upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" + upgrade << "Upgrade: WebSocket\r\n" + upgrade << "Connection: Upgrade\r\n" + upgrade << "WebSocket-Origin: #{headers['origin']}\r\n" + upgrade << "WebSocket-Location: #{location}\r\n\r\n" + + return upgrade + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake76.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake76.rb new file mode 100644 index 0000000000..c18260de97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/handshake76.rb @@ -0,0 +1,72 @@ +require 'digest/md5' + +module EventMachine::WebSocket + module Handshake76 + class << self + def handshake(headers, path, secure) + challenge_response = solve_challenge( + headers['sec-websocket-key1'], + headers['sec-websocket-key2'], + headers['third-key'] + ) + + scheme = (secure ? "wss" : "ws") + location = "#{scheme}://#{headers['host']}#{path}" + + upgrade = "HTTP/1.1 101 WebSocket Protocol Handshake\r\n" + upgrade << "Upgrade: WebSocket\r\n" + upgrade << "Connection: Upgrade\r\n" + upgrade << "Sec-WebSocket-Location: #{location}\r\n" + upgrade << "Sec-WebSocket-Origin: #{headers['origin']}\r\n" + if protocol = headers['sec-websocket-protocol'] + validate_protocol!(protocol) + upgrade << "Sec-WebSocket-Protocol: #{protocol}\r\n" + end + upgrade << "\r\n" + upgrade << challenge_response + + return upgrade + end + + private + + def solve_challenge(first, second, third) + # Refer to 5.2 4-9 of the draft 76 + sum = [numbers_over_spaces(first)].pack("N*") + + [numbers_over_spaces(second)].pack("N*") + + third + Digest::MD5.digest(sum) + end + + def numbers_over_spaces(string) + unless string + raise HandshakeError, "WebSocket key1 or key2 is missing" + end + + numbers = string.scan(/[0-9]/).join.to_i + + spaces = string.scan(/ /).size + # As per 5.2.5, abort the connection if spaces are zero. + raise HandshakeError, "Websocket Key1 or Key2 does not contain spaces - this is a symptom of a cross-protocol attack" if spaces == 0 + + # As per 5.2.6, abort if numbers is not an integral multiple of spaces + if numbers % spaces != 0 + raise HandshakeError, "Invalid Key #{string.inspect}" + end + + quotient = numbers / spaces + + if quotient > 2**32-1 + raise HandshakeError, "Challenge computation out of range for key #{string.inspect}" + end + + return quotient + end + + def validate_protocol!(protocol) + raise HandshakeError, "Invalid WebSocket-Protocol: empty" if protocol.empty? + # TODO: Validate characters + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/masking04.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/masking04.rb new file mode 100644 index 0000000000..ad050e9af5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/masking04.rb @@ -0,0 +1,37 @@ +module EventMachine + module WebSocket + class MaskedString < String + # Read a 4 bit XOR mask - further requested bytes will be unmasked + def read_mask + if respond_to?(:encoding) && encoding.name != "ASCII-8BIT" + raise "MaskedString only operates on BINARY strings" + end + raise "Too short" if bytesize < 4 # TODO - change + @masking_key = String.new(self[0..3]) + end + + # Removes the mask, behaves like a normal string again + def unset_mask + @masking_key = nil + end + + def getbyte(index) + if defined?(@masking_key) && @masking_key + masked_char = super + masked_char ? masked_char ^ @masking_key.getbyte(index % 4) : nil + else + super + end + end + + def getbytes(start_index, count) + data = '' + data.force_encoding('ASCII-8BIT') if data.respond_to?(:force_encoding) + count.times do |i| + data << getbyte(start_index + i) + end + data + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_03.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_03.rb new file mode 100644 index 0000000000..c5dec70091 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_03.rb @@ -0,0 +1,47 @@ +# encoding: BINARY + +module EventMachine + module WebSocket + module MessageProcessor03 + def message(message_type, extension_data, application_data) + case message_type + when :close + @close_info = { + :code => 1005, + :reason => "", + :was_clean => true, + } + if @state == :closing + # TODO: Check that message body matches sent data + # We can close connection immediately since there is no more data + # is allowed to be sent or received on this connection + @connection.close_connection + else + # Acknowlege close + # The connection is considered closed + send_frame(:close, application_data) + @connection.close_connection_after_writing + end + when :ping + # Pong back the same data + send_frame(:pong, application_data) + @connection.trigger_on_ping(application_data) + when :pong + @connection.trigger_on_pong(application_data) + when :text + if application_data.respond_to?(:force_encoding) + application_data.force_encoding("UTF-8") + end + @connection.trigger_on_message(application_data) + when :binary + @connection.trigger_on_binary(application_data) + end + end + + # Ping & Pong supported + def pingable? + true + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_06.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_06.rb new file mode 100644 index 0000000000..4e315b48ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/message_processor_06.rb @@ -0,0 +1,64 @@ +module EventMachine + module WebSocket + module MessageProcessor06 + def message(message_type, extension_data, application_data) + debug [:message_received, message_type, application_data] + + case message_type + when :close + status_code = case application_data.length + when 0 + # close messages MAY contain a body + nil + when 1 + # Illegal close frame + raise WSProtocolError, "Close frames with a body must contain a 2 byte status code" + else + application_data.slice!(0, 2).unpack('n').first + end + + debug [:close_frame_received, status_code, application_data] + + @close_info = { + :code => status_code || 1005, + :reason => application_data, + :was_clean => true, + } + + if @state == :closing + # We can close connection immediately since no more data may be + # sent or received on this connection + @connection.close_connection + elsif @state == :connected + # Acknowlege close & echo status back to client + # The connection is considered closed + close_data = [status_code || 1000].pack('n') + send_frame(:close, close_data) + @connection.close_connection_after_writing + end + when :ping + # Pong back the same data + send_frame(:pong, application_data) + @connection.trigger_on_ping(application_data) + when :pong + @connection.trigger_on_pong(application_data) + when :text + if application_data.respond_to?(:force_encoding) + application_data.force_encoding("UTF-8") + unless application_data.valid_encoding? + raise InvalidDataError, "Invalid UTF8 data" + end + end + @connection.trigger_on_message(application_data) + when :binary + @connection.trigger_on_binary(application_data) + end + end + + # Ping & Pong supported + def pingable? + true + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/version.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/version.rb new file mode 100644 index 0000000000..3c0d3cddd1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/version.rb @@ -0,0 +1,5 @@ +module EventMachine + module Websocket + VERSION = "0.5.1" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/websocket.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/websocket.rb new file mode 100644 index 0000000000..02e4d86f90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/lib/em-websocket/websocket.rb @@ -0,0 +1,56 @@ +module EventMachine + module WebSocket + class << self + attr_accessor :max_frame_size + attr_accessor :close_timeout + end + @max_frame_size = 10 * 1024 * 1024 # 10MB + # Connections are given 60s to close after being sent a close handshake + @close_timeout = 60 + + # All errors raised by em-websocket should descend from this class + class WebSocketError < RuntimeError; end + + # Used for errors that occur during WebSocket handshake + class HandshakeError < WebSocketError; end + + # Used for errors which should cause the connection to close. + # See RFC6455 §7.4.1 for a full description of meanings + class WSProtocolError < WebSocketError + def code; 1002; end + end + + class InvalidDataError < WSProtocolError + def code; 1007; end + end + + # 1009: Message too big to process + class WSMessageTooBigError < WSProtocolError + def code; 1009; end + end + + # Start WebSocket server, including starting eventmachine run loop + def self.start(options, &blk) + EM.epoll + EM.run { + trap("TERM") { stop } + trap("INT") { stop } + + run(options, &blk) + } + end + + # Start WebSocket server inside eventmachine run loop + def self.run(options) + host, port = options.values_at(:host, :port) + EM.start_server(host, port, Connection, options) do |c| + yield c + end + end + + def self.stop + puts "Terminating WebSocket Server" + EM.stop + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/helper.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/helper.rb new file mode 100644 index 0000000000..76e45b5670 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/helper.rb @@ -0,0 +1,173 @@ +# encoding: BINARY + +require 'rubygems' +require 'rspec' +require 'em-spec/rspec' +require 'em-http' + +require 'em-websocket' +require 'em-websocket-client' + +require 'integration/shared_examples' +require 'integration/gte_03_examples' + +RSpec.configure do |c| + c.mock_with :rspec +end + +class FakeWebSocketClient < EM::Connection + attr_reader :handshake_response, :packets + + def onopen(&blk); @onopen = blk; end + def onclose(&blk); @onclose = blk; end + def onerror(&blk); @onerror = blk; end + def onmessage(&blk); @onmessage = blk; end + + def initialize + @state = :new + @packets = [] + end + + def receive_data(data) + # puts "RECEIVE DATA #{data}" + if @state == :new + @handshake_response = data + @onopen.call if defined? @onopen + @state = :open + else + @onmessage.call(data) if defined? @onmessage + @packets << data + end + end + + def send(application_data) + send_frame(:text, application_data) + end + + def send_frame(type, application_data) + send_data construct_frame(type, application_data) + end + + def unbind + @onclose.call if defined? @onclose + end + + private + + def construct_frame(type, data) + "\x00#{data}\xff" + end +end + +class Draft03FakeWebSocketClient < FakeWebSocketClient + private + + def construct_frame(type, data) + frame = "" + frame << EM::WebSocket::Framing03::FRAME_TYPES[type] + frame << encoded_length(data.size) + frame << data + end + + def encoded_length(length) + if length <= 125 + [length].pack('C') # since rsv4 is 0 + elsif length < 65536 # write 2 byte length + "\126#{[length].pack('n')}" + else # write 8 byte length + "\127#{[length >> 32, length & 0xFFFFFFFF].pack("NN")}" + end + end +end + +class Draft05FakeWebSocketClient < Draft03FakeWebSocketClient + private + + def construct_frame(type, data) + frame = "" + frame << "\x00\x00\x00\x00" # Mask with nothing for simplicity + frame << (EM::WebSocket::Framing05::FRAME_TYPES[type] | 0b10000000) + frame << encoded_length(data.size) + frame << data + end +end + +class Draft07FakeWebSocketClient < Draft05FakeWebSocketClient + private + + def construct_frame(type, data) + frame = "" + frame << (EM::WebSocket::Framing07::FRAME_TYPES[type] | 0b10000000) + # Should probably mask the data, but I get away without bothering since + # the server doesn't enforce that incoming frames are masked + frame << encoded_length(data.size) + frame << data + end +end + +# Wrapper around em-websocket-client +class Draft75WebSocketClient + def onopen(&blk); @onopen = blk; end + def onclose(&blk); @onclose = blk; end + def onerror(&blk); @onerror = blk; end + def onmessage(&blk); @onmessage = blk; end + + def initialize + @ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/', + :version => 75, + :origin => 'http://example.com') + @ws.errback { |err| @onerror.call if defined? @onerror } + @ws.callback { @onopen.call if defined? @onopen } + @ws.stream { |msg| @onmessage.call(msg) if defined? @onmessage } + @ws.disconnect { @onclose.call if defined? @onclose } + end + + def send(message) + @ws.send_msg(message) + end + + def close_connection + @ws.close_connection + end +end + +def start_server(opts = {}) + EM::WebSocket.run({:host => "0.0.0.0", :port => 12345}.merge(opts)) { |ws| + yield ws if block_given? + } +end + +def format_request(r) + data = "#{r[:method]} #{r[:path]} HTTP/1.1\r\n" + header_lines = r[:headers].map { |k,v| "#{k}: #{v}" } + data << [header_lines, '', r[:body]].join("\r\n") + data +end + +def format_response(r) + data = r[:protocol] || "HTTP/1.1 101 WebSocket Protocol Handshake\r\n" + header_lines = r[:headers].map { |k,v| "#{k}: #{v}" } + data << [header_lines, '', r[:body]].join("\r\n") + data +end + +RSpec::Matchers.define :succeed_with_upgrade do |response| + match do |actual| + success = nil + actual.callback { |upgrade_response, handler_klass| + success = (upgrade_response.lines.sort == format_response(response).lines.sort) + } + success + end +end + +RSpec::Matchers.define :fail_with_error do |error_klass, error_message| + match do |actual| + success = nil + actual.errback { |e| + success = (e.class == error_klass) + success &= (e.message == error_message) if error_message + } + success + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/common_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/common_spec.rb new file mode 100644 index 0000000000..f8d272ed63 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/common_spec.rb @@ -0,0 +1,111 @@ +require 'helper' + +# These tests are not specific to any particular draft of the specification +# +describe "WebSocket server" do + include EM::SpecHelper + default_timeout 1 + + it "should fail on non WebSocket requests" do + em { + EM.add_timer(0.1) do + http = EM::HttpRequest.new('http://127.0.0.1:12345/').get :timeout => 0 + http.errback { done } + http.callback { fail } + end + + start_server + } + end + + it "should expose the WebSocket request headers, path and query params" do + em { + EM.add_timer(0.1) do + ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/', + :origin => 'http://example.com') + ws.errback { fail } + ws.callback { ws.close_connection } + ws.stream { |msg| } + end + + start_server do |ws| + ws.onopen { |handshake| + headers = handshake.headers + headers["Connection"].should == "Upgrade" + headers["Upgrade"].should == "websocket" + headers["Host"].to_s.should == "127.0.0.1:12345" + handshake.path.should == "/" + handshake.query.should == {} + handshake.origin.should == 'http://example.com' + } + ws.onclose { + ws.state.should == :closed + done + } + end + } + end + + it "should expose the WebSocket path and query params when nonempty" do + em { + EM.add_timer(0.1) do + ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/hello?foo=bar&baz=qux') + ws.errback { fail } + ws.callback { + ws.close_connection + } + ws.stream { |msg| } + end + + start_server do |ws| + ws.onopen { |handshake| + handshake.path.should == '/hello' + handshake.query_string.split('&').sort. + should == ["baz=qux", "foo=bar"] + handshake.query.should == {"foo"=>"bar", "baz"=>"qux"} + } + ws.onclose { + ws.state.should == :closed + done + } + end + } + end + + it "should raise an exception if frame sent before handshake complete" do + em { + # 1. Start WebSocket server + start_server { |ws| + # 3. Try to send a message to the socket + lambda { + ws.send('early message') + }.should raise_error('Cannot send data before onopen callback') + done + } + + # 2. Connect a dumb TCP connection (will not send handshake) + EM.connect('0.0.0.0', 12345, EM::Connection) + } + end + + it "should allow the server to be started inside an existing EM" do + em { + EM.add_timer(0.1) do + http = EM::HttpRequest.new('http://127.0.0.1:12345/').get :timeout => 0 + http.errback { |e| done } + http.callback { fail } + end + + start_server do |ws| + ws.onopen { |handshake| + headers = handshake.headers + headers["Host"].to_s.should == "127.0.0.1:12345" + } + ws.onclose { + ws.state.should == :closed + done + } + end + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft03_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft03_spec.rb new file mode 100644 index 0000000000..f299ab6d50 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft03_spec.rb @@ -0,0 +1,298 @@ +require 'helper' + +describe "draft03" do + include EM::SpecHelper + default_timeout 1 + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key2' => '12998 5 Y3 1 .P00', + 'Sec-WebSocket-Protocol' => 'sample', + 'Upgrade' => 'WebSocket', + 'Sec-WebSocket-Key1' => '4 @1 46546xW%0l 1 5', + 'Origin' => 'http://example.com', + 'Sec-WebSocket-Draft' => '3' + }, + :body => '^n:ds[4U' + } + + @response = { + :headers => { + "Upgrade" => "WebSocket", + "Connection" => "Upgrade", + "Sec-WebSocket-Location" => "ws://example.com/demo", + "Sec-WebSocket-Origin" => "http://example.com", + "Sec-WebSocket-Protocol" => "sample" + }, + :body => "8jKS\'y:G*Co,Wxa-" + } + end + + def start_client + client = EM.connect('0.0.0.0', 12345, Draft03FakeWebSocketClient) + client.send_data(format_request(@request)) + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 3 } + end + + it_behaves_like "a WebSocket server drafts 3 and above" do + let(:version) { 3 } + end + + # These examples are straight from the spec + # http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-03#section-4.6 + describe "examples from the spec" do + it "should accept a single-frame text message" do + em { + start_server { |ws| + ws.onmessage { |msg| + msg.should == 'Hello' + done + } + } + start_client { |client| + client.onopen { + client.send_data("\x04\x05Hello") + } + } + } + end + + it "should accept a fragmented text message" do + em { + start_server { |ws| + ws.onmessage { |msg| + msg.should == 'Hello' + done + } + } + + connection = start_client + + # Send frame + connection.onopen { + connection.send_data("\x84\x03Hel") + connection.send_data("\x00\x02lo") + } + } + end + + it "should accept a ping request and respond with the same body" do + em { + start_server + + connection = start_client + + # Send frame + connection.onopen { + connection.send_data("\x02\x05Hello") + } + + connection.onmessage { |frame| + next if frame.nil? + frame.should == "\x03\x05Hello" + done + } + } + end + + it "should accept a 256 bytes binary message in a single frame" do + em { + data = "a" * 256 + + start_server { |ws| + ws.onbinary { |msg| + msg.encoding.should == Encoding.find("BINARY") if defined?(Encoding) + msg.should == data + done + } + } + + connection = start_client + + # Send frame + connection.onopen { + connection.send_data("\x05\x7E\x01\x00" + data) + } + } + end + + it "should accept a 64KiB binary message in a single frame" do + em { + data = "a" * 65536 + + start_server { |ws| + ws.onbinary { |msg| + msg.encoding.should == Encoding.find("BINARY") if defined?(Encoding) + msg.should == data + done + } + } + + connection = start_client + + # Send frame + connection.onopen { + connection.send_data("\x05\x7F\x00\x00\x00\x00\x00\x01\x00\x00" + data) + } + } + end + end + + describe "close handling" do + it "should respond to a new close frame with a close frame" do + em { + start_server + + connection = start_client + + # Send close frame + connection.onopen { + connection.send_data("\x01\x00") + } + + # Check that close ack received + connection.onmessage { |frame| + frame.should == "\x01\x00" + done + } + } + end + + it "should close the connection on receiving a close acknowlegement and call onclose with close code 1005 and was_clean=true (initiated by server)" do + em { + ack_received = false + + start_server { |ws| + ws.onopen { + # 2. Send a close frame + EM.next_tick { + ws.close + } + } + + # 5. Onclose event on server + ws.onclose { |event| + event.should == { + :code => 1005, + :reason => "", + :was_clean => true, + } + done + } + } + + # 1. Create a fake client which sends draft 76 handshake + connection = start_client + + # 3. Check that close frame recieved and acknowlege it + connection.onmessage { |frame| + frame.should == "\x01\x00" + ack_received = true + connection.send_data("\x01\x00") + } + + # 4. Check that connection is closed _after_ the ack + connection.onclose { + ack_received.should == true + } + } + end + + # it "should repur" + # + it "should return close code 1005 and was_clean=true after closing handshake (initiated by client)" do + em { + start_server { |ws| + ws.onclose { |event| + event.should == { + :code => 1005, + :reason => "", + :was_clean => true, + } + done + } + } + start_client { |client| + client.onopen { + client.send_data("\x01\x00") + } + } + } + end + + it "should not allow data frame to be sent after close frame sent" do + em { + start_server { |ws| + ws.onopen { + # 2. Send a close frame + EM.next_tick { + ws.close + } + + # 3. Check that exception raised if I attempt to send more data + EM.add_timer(0.1) { + lambda { + ws.send('hello world') + }.should raise_error(EM::WebSocket::WebSocketError, 'Cannot send data frame since connection is closing') + done + } + } + } + + # 1. Create a fake client which sends draft 76 handshake + start_client + } + end + + it "should still respond to control frames after close frame sent" do + em { + start_server { |ws| + ws.onopen { + # 2. Send a close frame + EM.next_tick { + ws.close + } + } + } + + # 1. Create a fake client which sends draft 76 handshake + connection = start_client + + connection.onmessage { |frame| + if frame == "\x01\x00" + # 3. After the close frame is received send a ping frame, but + # don't respond with a close ack + connection.send_data("\x02\x05Hello") + else + # 4. Check that the pong is received + frame.should == "\x03\x05Hello" + done + end + } + } + end + + it "should report that close codes are not supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == false + done + } + } + start_client + } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft05_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft05_spec.rb new file mode 100644 index 0000000000..e07ea2820c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft05_spec.rb @@ -0,0 +1,50 @@ +require 'helper' + +describe "draft05" do + include EM::SpecHelper + default_timeout 1 + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Upgrade' => 'websocket', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key' => 'dGhlIHNhbXBsZSBub25jZQ==', + 'Sec-WebSocket-Protocol' => 'sample', + 'Sec-WebSocket-Origin' => 'http://example.com', + 'Sec-WebSocket-Version' => '5' + } + } + end + + def start_client + client = EM.connect('0.0.0.0', 12345, Draft05FakeWebSocketClient) + client.send_data(format_request(@request)) + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 5 } + end + + it_behaves_like "a WebSocket server drafts 3 and above" do + let(:version) { 5 } + end + + it "should report that close codes are not supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == false + done + } + } + start_client + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft06_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft06_spec.rb new file mode 100644 index 0000000000..ab8670cc6c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft06_spec.rb @@ -0,0 +1,144 @@ +require 'helper' + +describe "draft06" do + include EM::SpecHelper + default_timeout 1 + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Upgrade' => 'websocket', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key' => 'dGhlIHNhbXBsZSBub25jZQ==', + 'Sec-WebSocket-Protocol' => 'sample', + 'Sec-WebSocket-Origin' => 'http://example.com', + 'Sec-WebSocket-Version' => '6' + } + } + + @response = { + :protocol => "HTTP/1.1 101 Switching Protocols\r\n", + :headers => { + "Upgrade" => "websocket", + "Connection" => "Upgrade", + "Sec-WebSocket-Accept" => "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", + } + } + end + + def start_client + client = EM.connect('0.0.0.0', 12345, Draft05FakeWebSocketClient) + client.send_data(format_request(@request)) + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 6 } + end + + it_behaves_like "a WebSocket server drafts 3 and above" do + let(:version) { 6 } + end + + it "should open connection" do + em { + start_server { |server| + server.onopen { + server.instance_variable_get(:@handler).class.should == EventMachine::WebSocket::Handler06 + } + } + + start_client { |client| + client.onopen { + client.handshake_response.lines.sort. + should == format_response(@response).lines.sort + done + } + } + } + end + + it "should accept a single-frame text message (masked)" do + em { + start_server { |server| + server.onmessage { |msg| + msg.should == 'Hello' + if msg.respond_to?(:encoding) + msg.encoding.should == Encoding.find("UTF-8") + end + done + } + server.onerror { + fail + } + } + + start_client { |client| + client.onopen { + client.send_data("\x00\x00\x01\x00\x84\x05Ielln") + } + } + } + end + + it "should return close code and reason if closed via handshake" do + em { + start_server { |ws| + ws.onclose { |event| + # 2. Receive close event in server + event.should == { + :code => 4004, + :reason => "close reason", + :was_clean => true, + } + done + } + } + start_client { |client| + client.onopen { + # 1: Send close handshake + close_data = [4004].pack('n') + close_data << "close reason" + client.send_frame(:close, close_data) + } + } + } + end + + it "should return close code 1005 if no code was specified" do + em { + start_server { |ws| + ws.onclose { |event| + event.should == { + :code => 1005, + :reason => "", + :was_clean => true, + } + done + } + } + start_client { |client| + client.onopen { + client.send_frame(:close, '') + } + } + } + end + + it "should report that close codes are supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == true + done + } + } + start_client + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft13_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft13_spec.rb new file mode 100644 index 0000000000..6170bf1e6b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft13_spec.rb @@ -0,0 +1,104 @@ +# encoding: BINARY + +require 'helper' + +describe "draft13" do + include EM::SpecHelper + default_timeout 1 + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Upgrade' => 'websocket', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key' => 'dGhlIHNhbXBsZSBub25jZQ==', + 'Sec-WebSocket-Protocol' => 'sample', + 'Sec-WebSocket-Origin' => 'http://example.com', + 'Sec-WebSocket-Version' => '13' + } + } + + @response = { + :protocol => "HTTP/1.1 101 Switching Protocols\r\n", + :headers => { + "Upgrade" => "websocket", + "Connection" => "Upgrade", + "Sec-WebSocket-Accept" => "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", + } + } + end + + def start_client + client = EM.connect('0.0.0.0', 12345, Draft07FakeWebSocketClient) + client.send_data(format_request(@request)) + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 13 } + end + + it_behaves_like "a WebSocket server drafts 3 and above" do + let(:version) { 13 } + end + + it "should send back the correct handshake response" do + em { + start_server + + connection = start_client + + connection.onopen { + connection.handshake_response.lines.sort. + should == format_response(@response).lines.sort + done + } + } + end + + # TODO: This test would be much nicer with a real websocket client... + it "should support sending pings and binding to onpong" do + em { + start_server { |ws| + ws.onopen { + ws.should be_pingable + EM.next_tick { + ws.ping('hello').should == true + } + + } + ws.onpong { |data| + data.should == 'hello' + done + } + } + + connection = start_client + + # Confusing, fake onmessage means any data after the handshake + connection.onmessage { |data| + # This is what a ping looks like + data.should == "\x89\x05hello" + # This is what a pong looks like + connection.send_data("\x8a\x05hello") + } + } + end + + it "should report that close codes are supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == true + done + } + } + start_client + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft75_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft75_spec.rb new file mode 100644 index 0000000000..8d9faec43c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft75_spec.rb @@ -0,0 +1,123 @@ +require 'helper' + +# These integration tests are older and use a different testing style to the +# integration tests for newer drafts. They use EM::HttpRequest which happens +# to currently estabish a websocket connection using the draft75 protocol. +# +describe "WebSocket server draft75" do + include EM::SpecHelper + default_timeout 1 + + def start_client + client = Draft75WebSocketClient.new + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 75 } + end + + it "should automatically complete WebSocket handshake" do + em { + MSG = "Hello World!" + EventMachine.add_timer(0.1) do + ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/') + ws.errback { fail } + ws.callback { } + + ws.stream { |msg| + msg.data.should == MSG + EventMachine.stop + } + end + + start_server { |ws| + ws.onopen { + ws.send MSG + } + } + } + end + + it "should split multiple messages into separate callbacks" do + em { + messages = %w[1 2] + received = [] + + EventMachine.add_timer(0.1) do + ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/') + ws.errback { fail } + ws.stream {|msg|} + ws.callback { + ws.send_msg messages[0] + ws.send_msg messages[1] + } + end + + start_server { |ws| + ws.onopen {} + ws.onclose {} + ws.onmessage {|msg| + msg.should == messages[received.size] + received.push msg + + EventMachine.stop if received.size == messages.size + } + } + } + end + + it "should call onclose callback when client closes connection" do + em { + EventMachine.add_timer(0.1) do + ws = EventMachine::WebSocketClient.connect('ws://127.0.0.1:12345/') + ws.errback { fail } + ws.callback { + ws.close_connection + } + ws.stream{|msg|} + end + + start_server { |ws| + ws.onopen {} + ws.onclose { + ws.state.should == :closed + EventMachine.stop + } + } + } + end + + it "should call onerror callback with raised exception and close connection on bad handshake" do + em { + EventMachine.add_timer(0.1) do + http = EM::HttpRequest.new('http://127.0.0.1:12345/').get + http.errback { } + http.callback { fail } + end + + start_server { |ws| + ws.onopen { fail } + ws.onclose { EventMachine.stop } + ws.onerror {|e| + e.should be_an_instance_of EventMachine::WebSocket::HandshakeError + e.message.should match('Not an upgrade request') + EventMachine.stop + } + } + } + end + + it "should report that close codes are not supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == false + done + } + } + start_client + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft76_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft76_spec.rb new file mode 100644 index 0000000000..f1a14e60f2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/draft76_spec.rb @@ -0,0 +1,234 @@ +# encoding: BINARY + +require 'helper' + +describe "WebSocket server draft76" do + include EM::SpecHelper + default_timeout 1 + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key2' => '12998 5 Y3 1 .P00', + 'Sec-WebSocket-Protocol' => 'sample', + 'Upgrade' => 'WebSocket', + 'Sec-WebSocket-Key1' => '4 @1 46546xW%0l 1 5', + 'Origin' => 'http://example.com' + }, + :body => '^n:ds[4U' + } + + @response = { + :headers => { + "Upgrade" => "WebSocket", + "Connection" => "Upgrade", + "Sec-WebSocket-Location" => "ws://example.com/demo", + "Sec-WebSocket-Origin" => "http://example.com", + "Sec-WebSocket-Protocol" => "sample" + }, + :body => "8jKS\'y:G*Co,Wxa-" + } + end + + def start_client + client = EM.connect('0.0.0.0', 12345, FakeWebSocketClient) + client.send_data(format_request(@request)) + yield client if block_given? + return client + end + + it_behaves_like "a websocket server" do + let(:version) { 76 } + end + + it "should send back the correct handshake response" do + em { + start_server + + start_client { |connection| + connection.onopen { + connection.handshake_response.lines.sort. + should == format_response(@response).lines.sort + done + } + } + } + end + + it "should send closing frame back and close the connection after recieving closing frame" do + em { + start_server + + connection = start_client + + # Send closing frame after handshake complete + connection.onopen { + connection.send_data(EM::WebSocket::Handler76::TERMINATE_STRING) + } + + # Check that this causes a termination string to be returned and the + # connection close + connection.onclose { + connection.packets[0].should == + EM::WebSocket::Handler76::TERMINATE_STRING + done + } + } + end + + it "should ignore any data received after the closing frame" do + em { + start_server { |ws| + # Fail if foobar message is received + ws.onmessage { |msg| + fail + } + } + + connection = start_client + + # Send closing frame after handshake complete, followed by another msg + connection.onopen { + connection.send_data(EM::WebSocket::Handler76::TERMINATE_STRING) + connection.send('foobar') + } + + connection.onclose { + done + } + } + end + + it "should accept null bytes within the frame after a line return" do + em { + start_server { |ws| + ws.onmessage { |msg| + msg.should == "\n\000" + } + } + + connection = start_client + + # Send closing frame after handshake complete + connection.onopen { + connection.send_data("\000\n\000\377") + connection.send_data(EM::WebSocket::Handler76::TERMINATE_STRING) + } + + connection.onclose { + done + } + } + end + + it "should handle unreasonable frame lengths by calling onerror callback" do + em { + start_server { |server| + server.onerror { |error| + error.should be_an_instance_of EM::WebSocket::WSMessageTooBigError + error.message.should == "Frame length too long (1180591620717411303296 bytes)" + done + } + } + + client = start_client + + # This particular frame indicates a message length of + # 1180591620717411303296 bytes. Such a message would previously cause + # a "bignum too big to convert into `long'" error. + # However it is clearly unreasonable and should be rejected. + client.onopen { + client.send_data("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00") + } + } + end + + it "should handle impossible frames by calling onerror callback" do + em { + start_server { |server| + server.onerror { |error| + error.should be_an_instance_of EM::WebSocket::WSProtocolError + error.message.should == "Invalid frame received" + done + } + } + + client = start_client + + client.onopen { + client.send_data("foobar") # Does not start with \x00 or \xff + } + } + end + + it "should handle invalid http requests by raising HandshakeError passed to onerror callback" do + em { + start_server { |server| + server.onerror { |error| + error.should be_an_instance_of EM::WebSocket::HandshakeError + error.message.should == "Invalid HTTP header: Could not parse data entirely (1 != 29)" + done + } + } + + client = EM.connect('0.0.0.0', 12345, FakeWebSocketClient) + client.send_data("This is not a HTTP header\r\n\r\n") + } + end + + it "should handle handshake request split into two TCP packets" do + em { + start_server + + # Create a fake client which sends draft 76 handshake + connection = EM.connect('0.0.0.0', 12345, FakeWebSocketClient) + data = format_request(@request) + # Sends first half of the request + connection.send_data(data[0...(data.length / 2)]) + + connection.onopen { + connection.handshake_response.lines.sort. + should == format_response(@response).lines.sort + done + } + + EM.add_timer(0.1) do + # Sends second half of the request + connection.send_data(data[(data.length / 2)..-1]) + end + } + end + + it "should report that close codes are not supported" do + em { + start_server { |ws| + ws.onopen { + ws.supports_close_codes?.should == false + done + } + } + start_client + } + end + + it "should call onclose when the server closes the connection [antiregression]" do + em { + start_server { |ws| + ws.onopen { + EM.add_timer(0.1) { + ws.close() + } + } + ws.onclose { + done + } + } + start_client + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/gte_03_examples.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/gte_03_examples.rb new file mode 100644 index 0000000000..f841618522 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/gte_03_examples.rb @@ -0,0 +1,42 @@ +shared_examples_for "a WebSocket server drafts 3 and above" do + it "should force close connections after a timeout if close handshake is not sent by the client" do + em { + server_onerror_fired = false + server_onclose_fired = false + client_got_close_handshake = false + + start_server(:close_timeout => 0.1) { |ws| + ws.onopen { + # 1: Send close handshake to client + EM.next_tick { ws.close(4999, "Close message") } + } + + ws.onerror { |e| + # 3: Client should receive onerror + e.class.should == EM::WebSocket::WSProtocolError + e.message.should == "Close handshake un-acked after 0.1s, closing tcp connection" + server_onerror_fired = true + } + + ws.onclose { + server_onclose_fired = true + } + } + start_client { |client| + client.onmessage { |msg| + # 2: Client does not respond to close handshake (the fake client + # doesn't understand them at all hence this is in onmessage) + msg.should =~ /Close message/ if version >= 6 + client_got_close_handshake = true + } + + client.onclose { + server_onerror_fired.should == true + server_onclose_fired.should == true + client_got_close_handshake.should == true + done + } + } + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/shared_examples.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/shared_examples.rb new file mode 100644 index 0000000000..813ce7a2db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/integration/shared_examples.rb @@ -0,0 +1,252 @@ +# encoding: UTF-8 + +# These tests are run against all draft versions +# +shared_examples_for "a websocket server" do + it "should expose the protocol version" do + em { + start_server { |ws| + ws.onopen { |handshake| + handshake.protocol_version.should == version + done + } + } + + start_client + } + end + + it "should expose the origin header" do + em { + start_server { |ws| + ws.onopen { |handshake| + handshake.origin.should == 'http://example.com' + done + } + } + + start_client + } + end + + it "should send messages successfully" do + em { + start_server { |ws| + ws.onmessage { |message| + message.should == "hello server" + done + } + } + + start_client { |client| + client.onopen { + client.send("hello server") + } + } + } + end + + it "should allow connection to be closed with valid close code" do + em { + start_server { |ws| + ws.onopen { + ws.close(4004, "Bye bye") + done + } + } + + start_client + # TODO: Use a real client which understands how to respond to closing + # handshakes, sending the handshake currently untested + } + end + + it "should raise error if if invalid close code is used" do + em { + start_server { |ws| + ws.onopen { + lambda { + ws.close(2000) + }.should raise_error("Application code may only use codes from 1000, 3000-4999") + done + } + } + + start_client + } + end + + it "should call onclose with was_clean set to false if connection closed without closing handshake by server" do + em { + start_server { |ws| + ws.onopen { + # Close tcp connection (no close handshake) + ws.close_connection + } + ws.onclose { |event| + event.should == {:code => 1006, :was_clean => false} + done + } + } + start_client + } + end + + it "should call onclose with was_clean set to false if connection closed without closing handshake by client" do + em { + start_server { |ws| + ws.onclose { |event| + event.should == {:code => 1006, :was_clean => false} + done + } + } + start_client { |client| + client.onopen { + # Close tcp connection (no close handshake) + client.close_connection + } + } + } + end + + it "should call onerror if an application error raised in onopen" do + em { + start_server { |ws| + ws.onopen { + raise "application error" + } + + ws.onerror { |e| + e.message.should == "application error" + done + } + } + + start_client + } + end + + it "should call onerror if an application error raised in onmessage" do + em { + start_server { |server| + server.onmessage { + raise "application error" + } + + server.onerror { |e| + e.message.should == "application error" + done + } + } + + start_client { |client| + client.onopen { + client.send('a message') + } + } + } + end + + it "should call onerror in an application error raised in onclose" do + em { + start_server { |server| + server.onclose { + raise "application error" + } + + server.onerror { |e| + e.message.should == "application error" + done + } + } + + start_client { |client| + client.onopen { + EM.add_timer(0.1) { + client.close_connection + } + } + } + } + end + + it "should close the connection when a too long frame is sent" do + em { + start_server { |server| + server.max_frame_size = 20 + + server.onerror { |e| + # 3: Error should be reported to server + e.class.should == EventMachine::WebSocket::WSMessageTooBigError + e.message.should =~ /Frame length too long/ + } + } + + start_client { |client| + client.onopen { + EM.next_tick { + client.send("This message is longer than 20 characters") + } + + } + + client.onmessage { |msg| + # 4: This is actually the close message. Really need to use a real + # WebSocket client in these tests... + done + } + + client.onclose { + # 4: Drafts 75 & 76 don't send a close message, they just close the + # connection + done + } + } + } + end + + # Only run these tests on ruby 1.9 + if "a".respond_to?(:force_encoding) + it "should raise error if you try to send non utf8 text data to ws" do + em { + start_server { |server| + server.onopen { + # Create a string which claims to be UTF-8 but which is not + s = "ê" # utf-8 string + s.encode!("ISO-8859-1") + s.force_encoding("UTF-8") + s.valid_encoding?.should == false # now invalid utf8 + + # Send non utf8 encoded data + server.send(s) + } + server.onerror { |error| + error.class.should == EventMachine::WebSocket::WebSocketError + error.message.should == "Data sent to WebSocket must be valid UTF-8 but was UTF-8 (valid: false)" + done + } + } + + start_client { } + } + end + + it "should not change the encoding of strings sent to send [antiregression]" do + em { + start_server { |server| + server.onopen { + s = "example string" + s.force_encoding("UTF-8") + + server.send(s) + + s.encoding.should == Encoding.find("UTF-8") + done + } + } + + start_client { } + } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/framing_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/framing_spec.rb new file mode 100644 index 0000000000..b2a8d33bc6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/framing_spec.rb @@ -0,0 +1,298 @@ +# encoding: BINARY + +require 'helper' + +describe EM::WebSocket::Framing03 do + class FramingContainer + include EM::WebSocket::Framing03 + + def initialize + @connection = Object.new + def @connection.max_frame_size + 1000000 + end + end + + def <<(data) + @data << data + process_data + end + + def debug(*args); end + end + + before :each do + @f = FramingContainer.new + @f.initialize_framing + end + + describe "basic examples" do + it "connection close" do + @f.should_receive(:message).with(:close, '', '') + @f << 0b00000001 + @f << 0b00000000 + end + + it "ping" do + @f.should_receive(:message).with(:ping, '', '') + @f << 0b00000010 + @f << 0b00000000 + end + + it "pong" do + @f.should_receive(:message).with(:pong, '', '') + @f << 0b00000011 + @f << 0b00000000 + end + + it "text" do + @f.should_receive(:message).with(:text, '', 'foo') + @f << 0b00000100 + @f << 0b00000011 + @f << 'foo' + end + + it "Text in two frames" do + @f.should_receive(:message).with(:text, '', 'hello world') + @f << 0b10000100 + @f << 0b00000110 + @f << "hello " + @f << 0b00000000 + @f << 0b00000101 + @f << "world" + end + + it "2 byte extended payload length text frame" do + data = 'a' * 256 + @f.should_receive(:message).with(:text, '', data) + @f << 0b00000100 # Single frame, text + @f << 0b01111110 # Length 126 (so read 2 bytes) + @f << 0b00000001 # Two bytes in network byte order (256) + @f << 0b00000000 + @f << data + end + end + + # These examples are straight from the spec + # http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-03#section-4.6 + describe "examples from the spec" do + it "a single-frame text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x04\x05Hello" + end + + it "a fragmented text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x84\x03Hel" + @f << "\x00\x02lo" + end + + it "Ping request and response" do + @f.should_receive(:message).with(:ping, '', 'Hello') + @f << "\x02\x05Hello" + end + + it "256 bytes binary message in a single frame" do + data = "a"*256 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x05\x7E\x01\x00" + data + end + + it "64KiB binary message in a single frame" do + data = "a"*65536 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x05\x7F\x00\x00\x00\x00\x00\x01\x00\x00" + data + end + end + + describe "other tests" do + it "should accept a fragmented unmasked text message in 3 frames" do + @f.should_receive(:message).with(:text, '', 'Hello world') + @f << "\x84\x03Hel" + @f << "\x80\x02lo" + @f << "\x00\x06 world" + end + end + + describe "error cases" do + it "should raise an exception on continuation frame without preceeding more frame" do + lambda { + @f << 0b00000000 # Single frame, continuation + @f << 0b00000001 # Length 1 + @f << 'f' + }.should raise_error(EM::WebSocket::WebSocketError, 'Continuation frame not expected') + end + end +end + +# These examples are straight from the spec +# http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-03#section-4.6 +describe EM::WebSocket::Framing04 do + class FramingContainer04 + include EM::WebSocket::Framing04 + + def initialize + @connection = Object.new + def @connection.max_frame_size + 1000000 + end + end + + def <<(data) + @data << data + process_data + end + + def debug(*args); end + end + + before :each do + @f = FramingContainer04.new + @f.initialize_framing + end + + describe "examples from the spec" do + it "a single-frame text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x84\x05\x48\x65\x6c\x6c\x6f" # "\x84\x05Hello" + end + + it "a fragmented text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x04\x03Hel" + @f << "\x80\x02lo" + end + + it "Ping request" do + @f.should_receive(:message).with(:ping, '', 'Hello') + @f << "\x82\x05Hello" + end + + it "a pong response" do + @f.should_receive(:message).with(:pong, '', 'Hello') + @f << "\x83\x05Hello" + end + + it "256 bytes binary message in a single frame" do + data = "a"*256 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x85\x7E\x01\x00" + data + end + + it "64KiB binary message in a single frame" do + data = "a"*65536 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x85\x7F\x00\x00\x00\x00\x00\x01\x00\x00" + data + end + end + + describe "other tests" do + it "should accept a fragmented unmasked text message in 3 frames" do + @f.should_receive(:message).with(:text, '', 'Hello world') + @f << "\x04\x03Hel" + @f << "\x00\x02lo" + @f << "\x80\x06 world" + end + end +end + +describe EM::WebSocket::Framing07 do + class FramingContainer07 + include EM::WebSocket::Framing07 + + def initialize + @connection = Object.new + def @connection.max_frame_size + 1000000 + end + end + + def <<(data) + @data << data + process_data + end + + def debug(*args); end + end + + before :each do + @f = FramingContainer07.new + @f.initialize_framing + end + + # These examples are straight from the spec + # http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07#section-4.6 + describe "examples from the spec" do + it "a single-frame unmakedtext message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x81\x05\x48\x65\x6c\x6c\x6f" # "\x84\x05Hello" + end + + it "a single-frame masked text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58" # "\x84\x05Hello" + end + + it "a fragmented unmasked text message" do + @f.should_receive(:message).with(:text, '', 'Hello') + @f << "\x01\x03Hel" + @f << "\x80\x02lo" + end + + it "Ping request" do + @f.should_receive(:message).with(:ping, '', 'Hello') + @f << "\x89\x05Hello" + end + + it "a pong response" do + @f.should_receive(:message).with(:pong, '', 'Hello') + @f << "\x8a\x05Hello" + end + + it "256 bytes binary message in a single unmasked frame" do + data = "a"*256 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x82\x7E\x01\x00" + data + end + + it "64KiB binary message in a single unmasked frame" do + data = "a"*65536 + @f.should_receive(:message).with(:binary, '', data) + @f << "\x82\x7F\x00\x00\x00\x00\x00\x01\x00\x00" + data + end + end + + describe "other tests" do + it "should raise a WSProtocolError if an invalid frame type is requested" do + lambda { + # Opcode 3 is not supported by this draft + @f << "\x83\x05Hello" + }.should raise_error(EventMachine::WebSocket::WSProtocolError, "Unknown opcode 3") + end + + it "should accept a fragmented unmasked text message in 3 frames" do + @f.should_receive(:message).with(:text, '', 'Hello world') + @f << "\x01\x03Hel" + @f << "\x00\x02lo" + @f << "\x80\x06 world" + end + + it "should raise if non-fin frame is followed by a non-continuation data frame (continuation frame would be expected)" do + lambda { + @f << 0b00000001 # Not fin, text + @f << 0b00000001 # Length 1 + @f << 'f' + @f << 0b10000001 # fin, text (continutation expected) + @f << 0b00000001 # Length 1 + @f << 'b' + }.should raise_error(EM::WebSocket::WebSocketError, 'Continuation frame expected') + end + + it "should raise on non-fin control frames (control frames must not be fragmented)" do + lambda { + @f << 0b00001010 # Not fin, pong (opcode 10) + @f << 0b00000000 # Length 1 + }.should raise_error(EM::WebSocket::WebSocketError, 'Control frames must not be fragmented') + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/handshake_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/handshake_spec.rb new file mode 100644 index 0000000000..2754ba7670 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/handshake_spec.rb @@ -0,0 +1,216 @@ +require 'helper' + +describe EM::WebSocket::Handshake do + def handshake(request, secure = false) + handshake = EM::WebSocket::Handshake.new(secure) + handshake.receive_data(format_request(request)) + handshake + end + + before :each do + @request = { + :port => 80, + :method => "GET", + :path => "/demo", + :headers => { + 'Host' => 'example.com', + 'Connection' => 'Upgrade', + 'Sec-WebSocket-Key2' => '12998 5 Y3 1 .P00', + 'Sec-WebSocket-Protocol' => 'sample', + 'Upgrade' => 'WebSocket', + 'Sec-WebSocket-Key1' => '4 @1 46546xW%0l 1 5', + 'Origin' => 'http://example.com' + }, + :body => '^n:ds[4U' + } + @secure_request = @request.merge(:port => 443) + + @response = { + :headers => { + "Upgrade" => "WebSocket", + "Connection" => "Upgrade", + "Sec-WebSocket-Location" => "ws://example.com/demo", + "Sec-WebSocket-Origin" => "http://example.com", + "Sec-WebSocket-Protocol" => "sample" + }, + :body => "8jKS\'y:G*Co,Wxa-" + } + @secure_response = @response.merge(:headers => @response[:headers].merge('Sec-WebSocket-Location' => "wss://example.com/demo")) + end + + it "should handle good request" do + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should handle good request to secure default port if secure mode is enabled" do + handshake(@secure_request, true). + should succeed_with_upgrade(@secure_response) + end + + it "should not handle good request to secure default port if secure mode is disabled" do + handshake(@secure_request, false). + should_not succeed_with_upgrade(@secure_response) + end + + it "should handle good request on nondefault port" do + @request[:port] = 8081 + @request[:headers]['Host'] = 'example.com:8081' + @response[:headers]['Sec-WebSocket-Location'] = + 'ws://example.com:8081/demo' + + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should handle good request to secure nondefault port" do + @secure_request[:port] = 8081 + @secure_request[:headers]['Host'] = 'example.com:8081' + @secure_response[:headers]['Sec-WebSocket-Location'] = 'wss://example.com:8081/demo' + + handshake(@secure_request, true). + should succeed_with_upgrade(@secure_response) + end + + it "should handle good request with no protocol" do + @request[:headers].delete('Sec-WebSocket-Protocol') + @response[:headers].delete("Sec-WebSocket-Protocol") + + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should handle extra headers by simply ignoring them" do + @request[:headers]['EmptyValue'] = "" + @request[:headers]['AKey'] = "AValue" + + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should raise error on HTTP request" do + @request[:headers] = { + 'Host' => 'www.google.com', + 'User-Agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB6 GTBA', + 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'Accept-Language' => 'en-us,en;q=0.5', + 'Accept-Encoding' => 'gzip,deflate', + 'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', + 'Keep-Alive' => '300', + 'Connection' => 'keep-alive', + } + + handshake(@request).should fail_with_error(EM::WebSocket::HandshakeError) + end + + it "should raise error on wrong method" do + @request[:method] = 'POST' + + handshake(@request).should fail_with_error(EM::WebSocket::HandshakeError) + end + + it "should raise error if upgrade header incorrect" do + @request[:headers]['Upgrade'] = 'NonWebSocket' + + handshake(@request).should fail_with_error(EM::WebSocket::HandshakeError) + end + + it "should raise error if Sec-WebSocket-Protocol is empty" do + @request[:headers]['Sec-WebSocket-Protocol'] = '' + + handshake(@request).should fail_with_error(EM::WebSocket::HandshakeError) + end + + %w[Sec-WebSocket-Key1 Sec-WebSocket-Key2].each do |header| + it "should raise error if #{header} has zero spaces" do + @request[:headers][header] = 'nospaces' + + handshake(@request). + should fail_with_error(EM::WebSocket::HandshakeError, 'Websocket Key1 or Key2 does not contain spaces - this is a symptom of a cross-protocol attack') + end + end + + it "should raise error if Sec-WebSocket-Key1 is missing" do + @request[:headers].delete("Sec-WebSocket-Key1") + + # The error message isn't correct since key1 is used to heuristically + # determine the protocol version in use, however this test at least checks + # that the handshake does correctly fail + handshake(@request). + should fail_with_error(EM::WebSocket::HandshakeError, 'Extra bytes after header') + end + + it "should raise error if Sec-WebSocket-Key2 is missing" do + @request[:headers].delete("Sec-WebSocket-Key2") + + handshake(@request). + should fail_with_error(EM::WebSocket::HandshakeError, 'WebSocket key1 or key2 is missing') + end + + it "should raise error if spaces do not divide numbers in Sec-WebSocket-Key* " do + @request[:headers]['Sec-WebSocket-Key2'] = '12998 5 Y3 1.P00' + + handshake(@request). + should fail_with_error(EM::WebSocket::HandshakeError, 'Invalid Key "12998 5 Y3 1.P00"') + end + + it "should raise error if the HTTP header is empty" do + handshake = EM::WebSocket::Handshake.new(false) + handshake.receive_data("\r\n\r\nfoobar") + + handshake. + should fail_with_error(EM::WebSocket::HandshakeError, 'Invalid HTTP header: Could not parse data entirely (4 != 10)') + end + + # This might seems crazy, but very occasionally we saw multiple "Upgrade: + # WebSocket" headers in the wild. RFC 4.2.1 isn't particularly clear on this + # point, so for now I have decided not to accept --@mloughran + it "should raise error on multiple upgrade headers" do + handshake = EM::WebSocket::Handshake.new(false) + + # Add a duplicate upgrade header + headers = format_request(@request) + upgrade_header = "Upgrade: WebSocket\r\n" + headers.gsub!(upgrade_header, "#{upgrade_header}#{upgrade_header}") + + handshake.receive_data(headers) + + handshake.errback { |e| + e.class.should == EM::WebSocket::HandshakeError + e.message.should == 'Invalid upgrade header: ["WebSocket", "WebSocket"]' + } + end + + it "should cope with requests where the header is split" do + request = format_request(@request) + incomplete_request = request[0...(request.length / 2)] + rest = request[(request.length / 2)..-1] + handshake = EM::WebSocket::Handshake.new(false) + handshake.receive_data(incomplete_request) + + handshake.instance_variable_get(:@deferred_status).should == nil + + # Send the remaining header + handshake.receive_data(rest) + + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should cope with requests where the third key is split" do + request = format_request(@request) + # Removes last two bytes of the third key + incomplete_request = request[0..-3] + rest = request[-2..-1] + handshake = EM::WebSocket::Handshake.new(false) + handshake.receive_data(incomplete_request) + + handshake.instance_variable_get(:@deferred_status).should == nil + + # Send the remaining third key + handshake.receive_data(rest) + + handshake(@request).should succeed_with_upgrade(@response) + end + + it "should fail if the request URI is invalid" do + @request[:path] = "/%" + handshake(@request).should \ + fail_with_error(EM::WebSocket::HandshakeError, 'Invalid request URI: /%') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/masking_spec.rb b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/masking_spec.rb new file mode 100644 index 0000000000..065aa95526 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/em-websocket-0.5.1/spec/unit/masking_spec.rb @@ -0,0 +1,29 @@ +# encoding: BINARY + +require 'helper' + +describe EM::WebSocket::MaskedString do + it "should allow reading 4 byte mask and unmasking byte / bytes" do + t = EM::WebSocket::MaskedString.new("\x00\x00\x00\x01\x00\x01\x00\x01") + t.read_mask + t.getbyte(3).should == 0x00 + t.getbytes(4, 4).should == "\x00\x01\x00\x00" + t.getbytes(5, 3).should == "\x01\x00\x00" + end + + it "should return nil from getbyte if index requested is out of range" do + t = EM::WebSocket::MaskedString.new("\x00\x00\x00\x00\x53") + t.read_mask + t.getbyte(4).should == 0x53 + t.getbyte(5).should == nil + end + + it "should allow switching masking on and off" do + t = EM::WebSocket::MaskedString.new("\x02\x00\x00\x00\x03") + t.getbyte(4).should == 0x03 + t.read_mask + t.getbyte(4).should == 0x01 + t.unset_mask + t.getbyte(4).should == 0x03 + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/CHANGELOG.md new file mode 100644 index 0000000000..cd42c39fd7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/CHANGELOG.md @@ -0,0 +1,179 @@ +# Changelog + +## 1.2.7 (May 12, 2018) +* Fix segfault on large numbers of connections [#843] + +## 1.2.6 (April 30, 2018) +* *Fix segfault when an Exception is raised from unbind callback (for real this time!)* +* Fix race condition while initializing the machine [#756] +* Fix for newer compilers where bind() and std::bind() conflict [#830, #831] +* Be verbose about SSL connection errors [#807] +* Avoid explicitly calling class methods when in class scope +* Java: Add EM_PROTO_SSL/TLS definitions [#773, #791] +* Java: return zero when sending data to a closed connection [#475, #804] +* Pure Ruby: Connection::error? calls report_connection_error_status [#801] + +## 1.2.5 (July 27, 2017) +* Java: Use long for larger values in oneshot timer intervals [#784, #794] + +## 1.2.4 (July 27, 2017) +* Java: Add EM_PROTO_SSL/TLS definitions [#773, #791] +* Fix IPv6 UDP get_peername [#788] +* Allow for larger values in oneshot timer intervals [#784, #793] +* Update extconf.rb to allow MinGW builds with OpenSSL 1.1.0 [#785] + +## 1.2.3 (February 22, 2017) +* Pure Ruby: Add get_sockname [#308, #772] +* Fix segfault when an Exception is raised from unbind callback [#765, #766] +* Allow destructors to throw when compiling in >= C++11 [#767] + +## 1.2.2 (January 23, 2017) +* Java: Fix Fixnum deprecated warning in Ruby 2.4+ [#759] +* Fix uncaught C++ exception in file watcher and raise InvalidSignature [#512, #757] +* Fix connection count off-by-one for epoll and kqueue [#750] +* Fix uninitialized variable warning in EM::P::HttpClient [#749] +* Fix missing initial value for EventableDescriptor NextHeartbeat [#748] +* Fix hostname resolution on Solaris, Ilumos, SmartOS, et al [#745, #746] +* Improve reliability of tests, reduce public Internet accesses in tests [#656, #666, #749] + +## 1.2.1 (November 15, 2016) +* Throw strerror(errno) when getsockname or getpeername fail [#683] +* Use a single concrete implementation of getpeername/getsockname, the rest pure virtuals [#683] +* Use gai_strerror to get the failure string from getaddrinfo [#744] +* Fix deregistering descriptor when using KQUEUE [#728] +* Fix to enable to work an example code in EM::Pool [#731] +* LineText2: Add regular expression delimiter support [#706] +* Pure Ruby: EM rescue ECONNREFUSED on initial TCP connect [#741] +* Pure Ruby: EM SSL (working start_tls) [#712] +* Pure Ruby: EM fixes [#707] +* Java: Use Acceptors to get peer and sock names if not present in Connections [#743] + +## 1.2.0.1 (March 15, 2016) +* Fix crash when accepting IPv6 connections due to struct sockaddr_in [#698, #699] + +## 1.2.0 (March 15, 2016) +* Integrate work from the EventMachine-LE 1.1.x versions [#570] +* Add start_tls options :ecdh_curve, :dhparam, :fail_if_no_peer_cert [#195, #275, #399, #665] +* Add start_tls option :ssl_version for choosing SSL/TLS versions and ciphers [#359, #348, #603, #654] +* Add start_tls option :sni_hostname to be passed to TLS params [#593] +* Add method EM::Channel#num_subscribers to get the number of subscribers to a channel [#640] +* Add support for proc-sources in EM::Iterator [#639] +* Factor out method cleanup_machine to cleanup code from EM.run [#650] +* Replace Exception class with StandardError [#637] +* Close socket on close_connection even after close_connection_after_writing [#694] +* Allow reusing of datagram socket/setting bind device [#662] +* Handle deferred exceptions in reactor thread [#486] +* Reimplement Queue to avoid shift/push performance problem [#311] +* Windows: Switch from gethostbyname to getaddrinfo, support IPv6 addresses [#303, #630] +* Windows: Use rake-compiler-dock to cross-compile gems [#627] +* Windows: Add AppVeyor configuration for Windows CI testing [#578] +* Windows: Bump rake-compiler to version 0.9.x [#542] +* Fix compilation on AIX (w/ XLC) [#693] +* Fix build on OpenBSD [#690] +* Fix OpenSSL compile issue on AIX 7.1 [#678] +* Fix EventMachine.fork_reactor keeps the threadpool of the original process [#425] +* Fix to prevent event machine from stopping when a raise is done in an unbind [#327] + +## 1.0.9.1 (January 14, 2016) +* Fix EPROTO not defined on Windows [#676] +* Fix missing cast to struct sockaddr * [#671] +* Fix bug in OpenSSL path detection [#675] + +## 1.0.9 (January 13, 2016) +* Try more ways to detect OpenSSL [#602, #643, #661, #663, #668, #669] +* Use WSAGetLastError in pipe.cpp same as ed.cpp [#659] +* Test compiler flags with the C++ compiler and add them to CXXFLAGS [#634, #651] +* Restore silent-fail on unsupported EM.epoll and EM.kqueue [#638, #649] +* getDescriptorByFileno deprecated in JRuby 1.7.x, removed in JRuby 9000 [#642, #648] +* Add -Wno-address always-true because on Windows rb_fd_select [#578] +* Remove the WITHOUT_SSL constant [#578] +* Fix SSL error when the server replies a TLS Alert to our ClientHello [#544, #653] +* Use WSAStringToAddress in lieu of inet_pton for IPv6 address detection on Windows [#595, #632] +* Fix nasty TCP/IPv6 bug [#595, #632] +* Use select_large_fdset on Solaris [#611, #625] +* Detect the Solaris Studio compiler [#611, #625] +* Throw a message with strerror included [#136, #621] + +## 1.0.8 (August 6, 2015) +* fix kqueue assertion failed, postpone ArmKqueueWriter until all events are processed [#51, #176, #372, #401, #619] +* fix Rubinius GC, crank the machine from Ruby space when running Rubinius [#201, #202, #617] +* test to show that LineText2 preserves whitespace and newlines [#32, #622] +* bump up compiler warnings and resolve them [#616] +* fix Windows x64 use uintptr_t instead of unsigned long for binding pointers [#612, #615] +* fix linetext2 unroll tail recursion to avoid stack level too deep [#609] +* fix for compilation with SSL on windows [#601] +* open file descriptors and sockets with O_CLOEXEC where possible [#298, #488, #591] +* fix SmtpClient: send second EHLO after STARTTLS. [#589] +* fix nul-terminated strings in C, use StringValueCStr instead of StringValuePtr + +## 1.0.7 (February 10, 2015) +* fix delay in kqueue/epoll reactor shutdown when timers exist [#587] +* fix memory leak introduced in v1.0.5 [#586] +* expose EM.set_simultaneous_accept_count [#420] +* fix busy loop when EM.run and EM.next_tick are invoked from exception handler [#452] + +## 1.0.6 (February 3, 2015) +* add support for Rubinius Process::Status [#568] +* small bugfixes for SmtpServer [#449] +* update buftok.rb [#547] +* fix assertion on Write() [#525] +* work around mkmf.rb bug preventing gem installation [#574] +* add pause/resume support to jruby reactor [#556] +* fix pure ruby reactor to use 127.0.0.1 instead of localhost [#439] +* fix compilation under macruby [#243] +* add chunked encoding to http client [#111] +* fix errors on win32 when dealing with pipes [1ea45498] [#105] + +## 1.0.5 (February 2, 2015) +* use monotonic clocks on Linux, OS X, Solaris, and Windows [#563] +* use the rb_fd_* API to get autosized fd_sets [#502] +* add basic tests that the DNS resolver isn't leaking timers [#571] +* update to test-unit 2.x and improve various unit tests [#551] +* remove EventMachine_t::Popen code marked by ifdef OBSOLETE [#551] +* ruby 2.0 may fail at Queue.pop, so rescue and complain to $stderr [#551] +* set file handle to INVALID_HANDLE_VALUE after closing the file [#565] +* use `defined?` instead of rescuing NameError for flow control [#535] +* fix closing files and sockets on Windows [#564] +* fix file uploads in Windows [#562] +* catch failure to fork [#539] +* use chunks for SSL write [#545] + +## 1.0.4 (December 19, 2014) +* add starttls_options to smtp server [#552] +* fix closesocket on windows [#497] +* fix build on ruby 2.2 [#503] +* fix build error on ruby 1.9 [#508] +* fix timer leak during dns resolution [#489] +* add concurrency validation to EM::Iterator [#468] +* add get_file_descriptor to get fd for a signature [#467] +* add EM.attach_server and EM.attach_socket_server [#465, #466] +* calling pause from receive_data takes effect immediately [#464] +* reactor_running? returns false after fork [#455] +* fix infinite loop on double close [edc4d0e6, #441, #445] +* fix compilation issue on llvm [#433] +* fix socket error codes on win32 [ff811a81] +* fix EM.stop latency when timers exist [8b613d05, #426] +* fix infinite loop when system time changes [1427a2c80, #428] +* fix crash when callin attach/detach in the same tick [#427] +* fix compilation issue on solaris [#416] + +## 1.0.3 (March 8, 2013) +* EM.system was broken in 1.0.2 release [#413] + +## 1.0.2 (March 8, 2013) +* binary win32 gems now include fastfilereader shim [#222] +* fix long-standing connection timeout issues [27fdd5b, igrigorik/em-http-request#222] +* http and line protocol cleanups [#193, #151] +* reactor return value cleanup [#225] +* fix double require from gemspec [#284] +* fix smtp server reset behavior [#351] +* fix EM.system argument handling [#322] +* ruby 1.9 compat in smtp server and stomp protocols [#349, #315] +* fix pause from post_init [#380] + +## 1.0.1 (February 27, 2013) +* use rb_wait_for_single_fd() on ruby 2.0 to fix rb_thread_select() deprecation [#363] +* fix epoll/kqueue mode in ruby 2.0 by removing calls to rb_enable_interrupt() [#248, #389] +* fix memory leak when verifying ssl cerificates [#403] +* fix initial connection delay [#393, #374] +* fix build on windows [#371] diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/GNU b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/GNU new file mode 100644 index 0000000000..3b70c5be5a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/GNU @@ -0,0 +1,281 @@ +. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Lesser General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it + in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/LICENSE b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/LICENSE new file mode 100644 index 0000000000..fbe8c83b88 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/LICENSE @@ -0,0 +1,60 @@ +EventMachine is copyrighted free software owned by Francis Cianfrocca +(blackhedd ... gmail.com). The Owner of this software permits you to +redistribute and/or modify the software under either the terms of the GPL +version 2 (see the file GPL), or the conditions below ("Ruby License"): + + 1. You may make and give away verbatim copies of the source form of this + software without restriction, provided that you retain ALL of the + original copyright notices and associated disclaimers. + + 2. You may modify your copy of the software in any way, provided that + you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise + make them Freely Available, such as by posting said + modifications to Usenet or an equivalent medium, or by allowing + the author to include your modifications in the software. + + b) use the modified software only within your corporation or + organization. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the Owner. + + 3. You may distribute the software in object code or binary form, + provided that you do at least ONE of the following: + + a) distribute the binaries and library files of the software, + together with instructions (in a manual page or equivalent) + on where to get the original distribution. + + b) accompany the distribution with the machine-readable source of + the software. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the Owner. + + 4. You may modify and include parts of the software into any other + software (possibly commercial), provided you comply with the terms in + Sections 1, 2, and 3 above. But some files in the distribution + are not written by the Owner, so they may be made available to you + under different terms. + + For the list of those files and their copying conditions, see the + file LEGAL. + + 5. The scripts and library files supplied as input to or produced as + output from the software do not automatically fall under the + copyright of the software, but belong to whoever generated them, + and may be sold commercially, and may be aggregated with this + software. + + 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/README.md b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/README.md new file mode 100644 index 0000000000..4b17cb4aa1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/README.md @@ -0,0 +1,110 @@ +# About EventMachine [![Build Status](https://travis-ci.org/eventmachine/eventmachine.svg?branch=master)](https://travis-ci.org/eventmachine/eventmachine) [![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/e9b0603462905d5b9118/maintainability)](https://codeclimate.com/github/eventmachine/eventmachine/maintainability) + + +## What is EventMachine ## + +EventMachine is an event-driven I/O and lightweight concurrency library for Ruby. +It provides event-driven I/O using the [Reactor pattern](http://en.wikipedia.org/wiki/Reactor_pattern), +much like [JBoss Netty](http://www.jboss.org/netty), [Apache MINA](http://mina.apache.org/), +Python's [Twisted](http://twistedmatrix.com), [Node.js](http://nodejs.org), libevent and libev. + +EventMachine is designed to simultaneously meet two key needs: + + * Extremely high scalability, performance and stability for the most demanding production environments. + * An API that eliminates the complexities of high-performance threaded network programming, + allowing engineers to concentrate on their application logic. + +This unique combination makes EventMachine a premier choice for designers of critical networked +applications, including Web servers and proxies, email and IM production systems, authentication/authorization +processors, and many more. + +EventMachine has been around since the early 2000s and is a mature and battle-tested library. + + +## What EventMachine is good for? ## + + * Scalable event-driven servers. Examples: [Thin](http://code.macournoyer.com/thin/) or [Goliath](https://github.com/postrank-labs/goliath/). + * Scalable asynchronous clients for various protocols, RESTful APIs and so on. Examples: [em-http-request](https://github.com/igrigorik/em-http-request) or [amqp gem](https://github.com/ruby-amqp/amqp). + * Efficient network proxies with custom logic. Examples: [Proxymachine](https://github.com/mojombo/proxymachine/). + * File and network monitoring tools. Examples: [eventmachine-tail](https://github.com/jordansissel/eventmachine-tail) and [logstash](https://github.com/logstash/logstash). + + + +## What platforms are supported by EventMachine? ## + +EventMachine supports Ruby 1.8.7 through 2.6, REE, JRuby and **works well on Windows** as well +as many operating systems from the Unix family (Linux, Mac OS X, BSD flavors). + + + +## Install the gem ## + +Install it with [RubyGems](https://rubygems.org/) + + gem install eventmachine + +or add this to your Gemfile if you use [Bundler](http://gembundler.com/): + + gem "eventmachine" + + + +## Getting started ## + +For an introduction to EventMachine, check out: + + * [blog post about EventMachine by Ilya Grigorik](http://www.igvita.com/2008/05/27/ruby-eventmachine-the-speed-demon/). + * [EventMachine Introductions by Dan Sinclair](http://everburning.com/news/eventmachine-introductions.html). + + +### Server example: Echo server ### + +Here's a fully-functional echo server written with EventMachine: + +```ruby + require 'eventmachine' + + module EchoServer + def post_init + puts "-- someone connected to the echo server!" + end + + def receive_data data + send_data ">>>you sent: #{data}" + close_connection if data =~ /quit/i + end + + def unbind + puts "-- someone disconnected from the echo server!" + end +end + +# Note that this will block current thread. +EventMachine.run { + EventMachine.start_server "127.0.0.1", 8081, EchoServer +} +``` + + +## EventMachine documentation ## + +Currently we only have [reference documentation](http://rdoc.info/github/eventmachine/eventmachine/frames) and a [wiki](https://github.com/eventmachine/eventmachine/wiki). + + +## Community and where to get help ## + + * Join the [mailing list](http://groups.google.com/group/eventmachine) (Google Group) + * Join IRC channel #eventmachine on irc.freenode.net + + +## License and copyright ## + +EventMachine is copyrighted free software made available under the terms +of either the GPL or Ruby's License. + +Copyright: (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + + +## Alternatives ## + +If you are unhappy with EventMachine and want to use Ruby, check out [Celluloid](https://celluloid.io/). diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/DocumentationGuidesIndex.md b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/DocumentationGuidesIndex.md new file mode 100644 index 0000000000..b8ce5a2aee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/DocumentationGuidesIndex.md @@ -0,0 +1,27 @@ +# EventMachine documentation guides # + +Welcome to the documentation guides for [EventMachine](http://github.com/eventmachine/eventmachine), +a fast and simple event-processing library for Ruby programs (à la JBoss Netty, Twisted, Node.js +and so on). + +## Guide list ## + + * {file:docs/GettingStarted.md Getting started with EventMachine} + * {file:docs/EventDrivenServers.md Writing event-driven servers} + * {file:docs/EventDrivenClients.md Writing event-driven clients} + * {file:docs/ConnectionFailureAndRecovery.md Connection Failure and Recovery} + * {file:docs/TLS.md TLS (aka SSL)} + * {file:docs/Ecosystem.md EventMachine ecosystem}: Thin, Goliath, em-http-request, em-websockets, Proxymachine and beyond + * {file:docs/BlockingEventLoop.md On blocking the event loop: why it is harmful for performance and how to avoid it} + * {file:docs/LightweightConcurrency.md Lightweight concurrency with EventMachine} + * {file:docs/Deferrables.md Deferrables} + * {file:docs/ModernKernelInputOutputAPIs.md Brief introduction to epoll, kqueue, select} + * {file:docs/WorkingWithOtherIOSources.md Working with other IO sources such as the keyboard} + + +## Tell us what you think! ## + +Please take a moment and tell us what you think about this guide on the [EventMachine mailing list](http://bit.ly/jW3cR3) +or in the #eventmachine channel on irc.freenode.net: what was unclear? What wasn't covered? +Maybe you don't like the guide style or the grammar and spelling are incorrect? Reader feedback is +key to making documentation better. diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/GettingStarted.md b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/GettingStarted.md new file mode 100644 index 0000000000..63acbb78b3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/GettingStarted.md @@ -0,0 +1,521 @@ +# @title Getting Started with Ruby EventMachine +# @markup markdown +# @author Michael S. Klishin, Dan Sinclair + +# Getting started with Ruby EventMachine # + + +## About this guide ## + +This guide is a quick tutorial that helps you to get started with EventMachine for writing event-driven +servers, clients and using it as a lightweight concurrency library. +It should take about 20 minutes to read and study the provided code examples. This guide covers + + * Installing EventMachine via [Rubygems](http://rubygems.org) and [Bundler](http://gembundler.com). + * Building an Echo server, the "Hello, world"-like code example of network servers. + * Building a simple chat, both server and client. + * Building a very small asynchronous Websockets client. + + +## Covered versions ## + +This guide covers EventMachine v0.12.10 and 1.0 (including betas). + + +## Level ## + +This guide assumes you are comfortable (but not necessary a guru) with the command line. On Microsoft Windows™, +we recommend you to use [JRuby](http://jruby.org) when running these examples. + + +## Installing EventMachine ## + +### Make sure you have Ruby installed ### + +This guide assumes you have one of the supported Ruby implementations installed: + + * Ruby 1.8.7 + * Ruby 1.9.2 + * [JRuby](http://jruby.org) (we recommend 1.6) + * [Rubinius](http://rubini.us) 1.2 or higher + * [Ruby Enterprise Edition](http://www.rubyenterpriseedition.com) + +EventMachine works on Microsoft Windows™. + + +### With Rubygems ### + +To install the EventMachine gem do + + gem install eventmachine + + +### With Bundler ### + + gem "eventmachine" + + +### Verifying your installation ### + +Lets verify your installation with this quick IRB session: + + irb -rubygems + + ruby-1.9.2-p180 :001 > require "eventmachine" + => true + ruby-1.9.2-p180 :002 > EventMachine::VERSION + => "1.0.0.beta.3" + + +## An Echo Server Example ## + +Lets begin with the classic "Hello, world"-like example, an echo server. The echo server responds clients with the +same data that was provided. First, here's the code: + +{include:file:examples/guides/getting\_started/01\_eventmachine\_echo_server.rb} + + +When run, the server binds to port 10000. We can connect using Telnet and verify it's working: + + telnet localhost 10000 + +On my machine the output looks like: + + ~ telnet localhost 10000 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + +Let's send something to our server. Type in "Hello, EventMachine" and hit Enter. The server will respond with +the same string: + + ~ telnet localhost 10000 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + Hello, EventMachine + # (here we hit Enter) + Hello, EventMachine + # (this ^^^ is our echo server reply) + +It works! Congratulations, you now can tell your Node.js-loving friends that you "have done some event-driven programming, too". +Oh, and to stop Telnet, hit Control + Shift + ] and then Control + C. + +Lets walk this example line by line and see what's going on. These lines + + require 'rubygems' # or use Bundler.setup + require 'eventmachine' + +probably look familiar: you use [RubyGems](http://rubygems.org) (or [Bundler](http://gembundler.com/)) for dependencies and then require EventMachine gem. Boring. + +Next: + + class EchoServer < EventMachine::Connection + def receive_data(data) + send_data(data) + end + end + +Is the implementation of our echo server. We define a class that inherits from {EventMachine::Connection} +and a handler (aka callback) for one event: when we receive data from a client. + +EventMachine handles the connection setup, receiving data and passing it to our handler, {EventMachine::Connection#receive_data}. + +Then we implement our protocol logic, which in the case of Echo is pretty trivial: we send back whatever we receive. +To do so, we're using {EventMachine::Connection#send_data}. + +Lets modify the example to recognize `exit` command: + +{include:file:examples/guides/getting\_started/02\_eventmachine\_echo_server\_that\_recognizes\_exit\_command.rb} + +Our `receive\_data` changed slightly and now looks like this: + + def receive_data(data) + if data.strip =~ /exit$/i + EventMachine.stop_event_loop + else + send_data(data) + end + end + +Because incoming data has trailing newline character, we strip it off before matching it against a simple regular +expression. If the data ends in `exit`, we stop EventMachine event loop with {EventMachine.stop_event_loop}. This unblocks +main thread and it finishes execution, and our little program exits as the result. + +To summarize this first example: + + * Subclass {EventMachine::Connection} and override {EventMachine::Connection#send_data} to handle incoming data. + * Use {EventMachine.run} to start EventMachine event loop and then bind echo server with {EventMachine.start_server}. + * To stop the event loop, use {EventMachine.stop_event_loop} (aliased as {EventMachine.stop}) + +Lets move on to a slightly more sophisticated example that will introduce several more features and methods +EventMachine has to offer. + + +## A Simple Chat Server Example ## + +Next we will write a simple chat. Initially clients will still use telnet to connect, but then we will add little +client application that will serve as a proxy between telnet and the chat server. This example is certainly longer +(~ 150 lines with whitespace and comments) so instead of looking at the final version and going through it line by line, +we will instead begin with a very simple version that only keeps track of connected clients and then add features +as we go. + +To set some expectations about our example: + + * It will keep track of connected clients + * It will support a couple of commands, à la IRC + * It will support direct messages using Twitter-like @usernames + * It won't use MongoDB, fibers or distributed map/reduce for anything but will be totally [Web Scale™](http://bit.ly/webscaletm) nonetheless. Maybe even [ROFLscale](http://bit.ly/roflscalevideo). + +### Step one: detecting connections and disconnectons ### + +First step looks like this: + +{include:file:examples/guides/getting\_started/04\_simple\_chat\_server\_step\_one.rb} + +We see familiar {EventMachine.run} and {EventMachine.start_server}, but also {EventMachine::Connection#post_init} and {EventMachine::Connection#unbind} we haven't +met yet. We don't use them in this code, so when are they run? Like {EventMachine::Connection#receive_data}, these methods are callbacks. EventMachine calls them +when certain events happen: + + * {EventMachine#post_init} is called by the event loop immediately after the network connection has been established. + In the chat server example case, this is when a new client connects. + * {EventMachine#unbind} is called when client disconnects, connection is closed or is lost (because of a network issue, for example). + +All our chat server does so far is logging connections or disconnections. What we want it to do next is to keep track of connected clients. + + +### Step two: keep track of connected clients ### + +Next iteration of the code looks like this: + +{include:file:examples/guides/getting\_started/05\_simple\_chat\_server\_step\_two.rb} + +While the code we added is very straightforward, we have to clarify one this first: subclasses of {EventMachine::Connection} are instantiated by +EventMachine for every new connected peer. So for 10 connected chat clients, there will be 10 separate `SimpleChatServer` instances in our +server process. Like any other objects, they can be stored in a collection, can provide public API other objects use, can instantiate or inject +dependencies and in general live a happy life all Ruby objects live until garbage collection happens. + +In the example above we use a @@class_variable to keep track of connected clients. In Ruby, @@class variables are accessible from instance +methods so we can add new connections to the list from `SimpleChatServer#post_init` and remove them in `SimpleChatServer#unbind`. We can also +filter connections by some criteria, as `SimpleChatServer#other_peers demonstrates`. + +So, we keep track of connections but how do we identify them? For a chat app, it's pretty common to use usernames for that. Lets ask our clients +to enter usernames when they connect. + + +### Step three: adding usernames ## + +To add usernames, we need to add a few things: + + * We need to invite newly connected clients to enter their username. + * A reader (getter) method on our {EventMachine::Connection} subclass. + * An idea of connection state (keeping track of whether a particular participant had entered username before). + +Here is one way to do it: + +{include:file:examples/guides/getting\_started/06\_simple\_chat\_server\_step\_three.rb} + +This is quite an update so lets take a look at each method individually. First, `SimpleChatServer#post_init`: + + def post_init + @username = nil + puts "A client has connected..." + ask_username + end + +To keep track of username we ask chat participants for, we add @username instance variable to our connection class. Connection +instances are just Ruby objects associated with a particular connected peer, so using @ivars is very natural. To make username +value accessible to other objects, we added a reader method that was not shown on the snippet above. + +Lets dig into `SimpleChatServer#ask_username`: + + def ask_username + self.send_line("[info] Enter your username:") + end # ask_username + + # ... + + def send_line(line) + self.send_data("#{line}\n") + end # send_line(line) + +Nothing new here, we are using {EventMachine::Connection#send_data} which we have seen before. + + +In `SimpleChatServer#receive_data` we now have to check if the username was entered or we need +to ask for it: + + def receive_data(data) + if entered_username? + handle_chat_message(data.strip) + else + handle_username(data.strip) + end + end + + # ... + + def entered_username? + !@username.nil? && !@username.empty? + end # entered_username? + +Finally, handler of chat messages is not yet implemented: + + def handle_chat_message(msg) + raise NotImplementedError + end + +Lets try this example out using Telnet: + + ~ telnet localhost 10000 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + [info] Enter your username: + antares_ + [info] Ohai, antares_ + +and the server output: + + A client has connected... + antares_ has joined + +This version requires you to remember how to terminate your Telnet session (Ctrl + Shift + ], then Ctrl + C). +It is annoying, so why don't we add the same `exit` command to our chat server? + + +### Step four: adding exit command and delivering chat messages #### + +{include:file:examples/guides/getting\_started/07\_simple\_chat\_server\_step\_four.rb} + +TBD + +Lets test-drive this version. Client A: + + ~ telnet localhost 10000 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + [info] Enter your username: + michael + [info] Ohai, michael + Hi everyone + michael: Hi everyone + joe has joined the room + # here ^^^ client B connects, lets greet him + hi joe + michael: hi joe + joe: hey michael + # ^^^ client B replies + exit + # ^^^ out command in action + Connection closed by foreign host. + +Client B: + + ~ telnet localhost 10000 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + [info] Enter your username: + joe + [info] Ohai, joe + michael: hi joe + # ^^^ client A greets us, lets reply + hey michael + joe: hey michael + exit + # ^^^ out command in action + Connection closed by foreign host. + +And finally, the server output: + + A client has connected... + michael has joined + A client has connected... + _antares has joined + [info] _antares has left + [info] michael has left + +Our little char server now supports usernames, sending messages and the `exit` command. Next up, private (aka direct) messages. + + +### Step five: adding direct messages and one more command ### + +To add direct messages, we come up with a simple convention: private messages begin with @username and may have optional colon before +message text, like this: + + @joe: hey, how do you like eventmachine? + +This convention makes parsing of messages simple so that we can concentrate on delivering them to a particular client connection. +Remember when we added `username` reader on our connection class? That tiny change makes this step possible: when a new direct +message comes in, we extract username and message text and then find then connection for @username in question: + + # + # Message handling + # + + def handle_chat_message(msg) + if command?(msg) + self.handle_command(msg) + else + if direct_message?(msg) + self.handle_direct_message(msg) + else + self.announce(msg, "#{@username}:") + end + end + end # handle_chat_message(msg) + + def direct_message?(input) + input =~ DM_REGEXP + end # direct_message?(input) + + def handle_direct_message(input) + username, message = parse_direct_message(input) + + if connection = @@connected_clients.find { |c| c.username == username } + puts "[dm] @#{@username} => @#{username}" + connection.send_line("[dm] @#{@username}: #{message}") + else + send_line "@#{username} is not in the room. Here's who is: #{usernames.join(', ')}" + end + end # handle_direct_message(input) + + def parse_direct_message(input) + return [$1, $2] if input =~ DM_REGEXP + end # parse_direct_message(input) + +This snippet demonstrates how one connection instance can obtain another connection instance and send data to it. +This is a very powerful feature, consider just a few use cases: + + * Peer-to-peer protocols + * Content-aware routing + * Efficient streaming with optional filtering + +Less common use cases include extending C++ core of EventMachine to provide access to hardware that streams events that +can be re-broadcasted to any interested parties connected via TCP, UDP or something like AMQP or WebSockets. With this, +sky is the limit. Actually, EventMachine has several features for efficient proxying data between connections. +We will not cover them in this guide. + +One last feature that we are going to add to our chat server is the `status` command that tells you current server time and how many people +are there in the chat room: + + # + # Commands handling + # + + def command?(input) + input =~ /(exit|status)$/i + end # command?(input) + + def handle_command(cmd) + case cmd + when /exit$/i then self.close_connection + when /status$/i then self.send_line("[chat server] It's #{Time.now.strftime('%H:%M')} and there are #{self.number_of_connected_clients} people in the room") + end + end # handle_command(cmd) + +Hopefully this piece of code is easy to follow. Try adding a few more commands, for example, the `whoishere` command that lists people +currently in the chat room. + +In the end, our chat server looks like this: + +{include:file:examples/guides/getting\_started/08\_simple\_chat\_server\_step\_five.rb} + +We are almost done with the server but there are some closing thoughts. + + +### Step six: final version ### + +Just in case, here is the final version of the chat server code we have built: + +{include:file:examples/guides/getting\_started/03\_simple\_chat\_server.rb} + + +### Step seven: future directions and some closing thoughts ### + +The chat server is just about 150 lines of Ruby including empty lines and comments, yet it has a few features most of chat server +examples never add. We did not, however, implement many other features that popular IRC clients like [Colloquy](http://colloquy.info) have: + + * Chat moderation + * Multiple rooms + * Connection timeout detection + +How would one go about implementing them? We thought it is worth discussing what else EventMachine has to offer and what ecosystem projects +one can use to build a really feature-rich Web-based IRC chat client. + +With multiple rooms it's more or less straightforward, just add one more hash and a bunch of commands and use the information about which rooms participant +is in when you are delivering messages. There is nothing in EventMachine itself that can make the job much easier for developer. + +To implement chat moderation feature you may want to do a few things: + + * Work with client IP addresses. Maybe we want to consider everyone who connects from certain IPs a moderator. + * Access persistent data about usernames of moderators and their credentials. + +Does EventMachine have anything to offer here? It does. To obtain peer IP address, take a look at {EventMachine::Connection#get_peername}. The name of this method is +a little bit misleading and originates from low-level socket programming APIs. + +#### A whirlwind tour of the EventMachine ecosystem #### + +To work with data stores you can use several database drivers that ship with EventMachine itself, however, quite often there are some 3rd party projects in +the EventMachine ecosystem that have more features, are faster or just better maintained. So we figured it will be helpful to provide a few pointers +to some of those projects: + + * For MySQL, check out [em-mysql](https://github.com/eventmachine/em-mysql) project. + * For PostgreSQL, have a look at Mike Perham's [EventMachine-based PostgreSQL driver](https://github.com/mperham/em_postgresql). + * For Redis, there is a young but already popular [em-hiredis](https://github.com/mloughran/em-hiredis) library that combines EventMachine's non-blocking I/O with + extreme performance of the official Redis C client, [hiredis](https://github.com/antirez/hiredis). + * For MongoDB, see [em-mongo](https://github.com/bcg/em-mongo) + * For Cassandra, Mike Perham [added transport agnosticism feature](http://www.mikeperham.com/2010/02/09/cassandra-and-eventmachine/) to the [cassandra gem](https://rubygems.org/gems/cassandra). + +[Riak](http://www.basho.com/products_riak_overview.php) and CouchDB talk HTTP so it's possible to use [em-http-request](https://github.com/igrigorik/em-http-request). +If you are aware of EventMachine-based non-blocking drivers for these databases, as well as for HBase, let us know on the [EventMachine mailing list](http://groups.google.com/group/eventmachine). +Also, EventMachine supports TLS (aka SSL) and works well on [JRuby](http://jruby.org) and Windows. + +Learn more in our {file:docs/Ecosystem.md EventMachine ecosystem} and {file:docs/TLS.md TLS (aka SSL)} guides. + + +#### Connection loss detection #### + +Finally, connection loss detection. When our chat participant closes her laptop lid, how do we know that she is no longer active? The answer is, when EventMachine +detects TCP connectin closure, it calls {EventMachine::Connection#unbind}. Version 1.0.beta3 and later also pass an optional argument to that method. The argument +indicates what error (if any) caused the connection to be closed. + +Learn more in our {file:docs/ConnectionFailureAndRecovery.md Connection Failure and Recovery} guide. + + +#### What the Chat Server Example doesn't demonstrate #### + +This chat server also leaves out something production quality clients and servers must take care of: buffering. We intentionally did not include any buffering in +our chat server example: it would only distract you from learning what you really came here to learn: how to use EventMachine to build blazing fast asynchronous +networking programs quickly. However, {EventMachine::Connection#receive_data} does not offer any guarantees that you will be receiving "whole messages" all the time, +largely because the underlying transport (UDP or TCP) does not offer such guarantees. Many protocols, for example, AMQP, mandate that large content chunks are +split into smaller _frames_ of certain size. This means that [amq-client](https://github.com/ruby-amqp/amq-client) library, for instance, that has EventMachine-based driver, +has to deal with figuring out when exactly we received "the whole message". To do so, it uses buffering and employs various checks to detect _frame boundaries_. +So **don't be deceived by the simplicity of this chat example**: it intentionally leaves framing out, but real world protocols usually require it. + + + +## A (Proxying) Chat Client Example ## + +TBD + + +## Wrapping up ## + +This tutorial ends here. Congratulations! You have learned quite a bit about EventMachine. + + +## What to read next ## + +The documentation is organized as a {file:docs/DocumentationGuidesIndex.md number of guides}, covering all kinds of +topics. TBD + + +## Tell us what you think! ## + +Please take a moment and tell us what you think about this guide on the [EventMachine mailing list](http://bit.ly/jW3cR3) +or in the #eventmachine channel on irc.freenode.net: what was unclear? What wasn't covered? +Maybe you don't like the guide style or the grammar and spelling are incorrect? Reader feedback is +key to making documentation better. diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/ChangeLog b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/ChangeLog new file mode 100644 index 0000000000..c7a6c48e4e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/ChangeLog @@ -0,0 +1,211 @@ +01Oct06: Replaced EventMachine#open_datagram_server with a version that can + take a Class or a Module, instead of just a Module. Thanks to Tobias + Gustafsson for pointing out the missing case. +04Oct06: Supported subsecond timer resolutions, per request by Jason Roelofs. +05Oct06: Added EventMachine#set_quantum, which sets the timer resolution. +15Nov06: Added Connection#set_comm_inactivity_timeout. +15Nov06: Checked in a Line-and-Text Protocol Handler. +18Nov06: Checked in a Header-and-Body Protocol Handler. +22Nov06: Changed EventMachine#reconnect: no longer excepts when called on an + already-connected handler. +28Nov06: Supported a binary-unix gem. +19Dec06: Added EventMachine#set_effective_user. +05Jan07: Upped max outstanding timers to 1000. +15May07: Applied Solaris patches from Brett Eisenberg +22May07: Cleaned up the license text in all the source files. +22May07: Released version 0.7.2 + +23May07: Per suggestion from Bill Kelly, fixed a bug with the initialization + of the network libraries under Windows. The goal is to enable EM to + be used without Ruby. +28May07: Applied patch from Bill Kelly, refactors the declarations of + event names to make EM easier to use from C programs without Ruby. +31May07: Added a preliminary implementation of EventMachine#popen. +01Jun07: Added EM, a "pseudo-alias" for EventMachine. +01Jun07: Added EM#next_tick. +01Jun07: Added EM::Connection#get_outbound_data_size +05Jun07: Removed the code which loads a pure-Ruby EM library in case the + compiled extension is unavailable. Suggested by Moshe Litvin. +06Jun07: Preliminary epoll implementation. +12Jun07: Added an evented popen implementation that, like Ruby's, is + full-duplex and makes the subprocess PID available to the caller. +06Jul07: Performance-tweaked the callback dispatcher in eventmachine.rb. +10Jul07: Released version 0.8.0. +12Jul07: Applied patches from Tim Pease to fix Solaris build problems. +15Jul07: Created a new provisional source branch, experiments/jruby-1. + This is a preliminary implementation of the EM reactor in Java, + suitable for use with JRuby. +17Jul07: Added EventMachine#stop_server, per request from Kirk Haines, + and associated unit tests. +22Jul07: Added EventMachine#stream_file_data. This is a very fast and scalable + way of sending data from static files over network connections. It + has separate implementations for small files and large file, and + has tunings to minimize memory consumption. +26Jul07: Added some patches by Kirk Haines to improve the behavior of + EM::Connection#send_file_data_to_connection. +26Jul07: Added a C++ module for directly integrating EM into C++ programs + with no Ruby dependencies. Needs example code. +29Jul07: Added EventMachine::Protocols::LineText2. +29Jul07: Added EventMachine::Protocols::Stomp. +30Jul07: Added sys/stat.h to project.h to fix compilation bug on Darwin. +13Aug07: Added EventMachine#reactor_running? +15Aug07: Added parameters for EventMachine::Connection:start_tls that can be + used to specify client-side private keys and certificates. +17Aug07: Added EventMachine#run_block, a sugaring for a common use case. +24Aug07: Added a preliminary keyboard handler. Needs docs and testing on + windows. +26Aug07: Created EventMachine::Spawnable, an implementation of Erlang-like + processes. +27Aug07: Silenced some -w warnings, requested by James Edward Gray II. +30Aug07: Added cookies to EM::HttpClient#request. +04Sep07: Added an initial implementation of an evented SMTP client. +04Sep07: Added an initial implementation of an evented SMTP server. +10Sep07: Changed EM#spawn to run spawned blocks in the context of the + SpawnedProcess object, not of whatever was the active object at the + time of the spawn. +14Sep07: Heartbeats weren't working with EPOLL. Noticed by Brian Candler. +15Sep07: Added some features, tests and documents to Deferrable. +16Sep07: Added [:content] parameter to EM::Protocols::SmtpClient#send. +16Sep07: Bumped version to 0.9.0 in anticipation of a release. +18Sep07: Released version 0.9.0. +19Sep07: Added #receive_reset to EM::Protocols::SmtpServer. +19Sep07: User overrides of EM::Protocols::SmtpServer#receive_recipient can now + return a Deferrable. Also fixed bug: SmtpClient now raises a protocol + error if none of its RCPT TO: commands are accepted by the server. +26Sep07: Fixed missing keyboard support for Windows. +03Oct07: Added a default handler for RuntimeErrors emitted from user-written + code. Suggested by Brian Candler. +19Oct07: Set the SO_BROADCAST option automatically on all UDP sockets. +10Nov07: Forced integer conversion of send_datagram's port parameter. +Suggested by Matthieu Riou. +12Nov07: Added saslauth.rb, a protocol module to replace the Cyrus SASL +daemons saslauthd and pwcheck. +15Nov07: Fixed bug reported by Mark Zvillius. We were failing to dispatch + zero-length datagrams under certain conditions. +19Nov07: Added EventMachine#set_max_timers. Requested by Matthieu Riou and + others. +19Nov07: Fixed bug with EM::Connection#start_tls. Was not working with server + connections. Reported by Michael S. Fischer. +26Nov07: Supported a hack for EventMachine#popen so it can return an exit + status from subprocesses. Requested by Michael S. Fischer. +30Nov07: Changed Pipe descriptors so that the child-side of the socketpair is + NOT set nonblocking. Suggested by Duane Johnson. +05Dec07: Re-enabled the pure-Ruby implementation. +06Dec07: Released Version 0.10.0. +13Dec07: Added EM::DeferrableChildProcess +24Dec07: Added a SASL client for simple password authentication. +27Dec07: Removed the hookable error handler. No one was using it and it significantly + degraded performance. +30Dec07: Implemented Kqueue support for OSX and BSD. +04Jan08: Fixed bug in epoll ("Bad file descriptor"), patch supplied by Chris + Heath. +04Jan08: Fixed bug reported by Michael S. Fischer. We were terminating + SSL connections that sent data before the handshake was complete. +08Jan08: Added an OpenBSD branch for extconf.rb, contributed by Guillaume + Sellier. +19Jan08: Added EM::Connection::get_sockname per request by Michael Fischer. +19Jan08: Supported IPv6 addresses. +30Apr08: Set the NODELAY option on sockets that we connect to other servers. + Omission noted by Roger Pack. +14May08: Generated a 0.12 release. +15May08: Supported EM#get_sockname for acceptors (TCP server sockets). + Requested by Roger Pack. +15May08; Accepted a patch from Dan Aquino that allows the interval of a + PeriodicTimer to be changed on the fly. +15Jun08: Supported nested calls to EM#run. Many people contributed ideas to + this, notably raggi and tmm1. +20Jul08: Accepted patch from tmm1 for EM#fork_reactor. +28Jul08: Added a Postgres3 implementation, written by FCianfrocca. +14Aug08: Added a patch by Mike Murphy to support basic auth in the http +client. +28Aug08: Added a patch by tmm1 to fix a longstanding problem with Java +data-sends. +13Sep08: Added LineText2#set_binary_mode, a back-compatibility alias. +13Sep08: Modified the load order of protocol libraries in eventmachine.rb + to permit a modification of HeaderAndContentProtocol. +13Sep08: Modified HeaderAndContent to use LineText2, which is less buggy + than LineAndTextProtocol. This change may be reversed if we can fix + the bugs in buftok. +13Sep08: Improved the password handling in the Postgres protocol handler. +15Sep08: Added attach/detach, contributed by Aman Gupta (tmm1) and Riham Aldakkak, + to support working with file descriptors not created in the reactor. +16Sep08: Added an optional version string to the HTTP client. This is a hack + that allows a client to specify a version 1.0 request, which + keeps the server from sending a chunked response. The right way to + solve this, of course, is to support chunked responses. +23Sep08: ChangeLog Summary for Merge of branches/raggi +Most notable work and patches by Aman Gupta, Roger Pack, and James Tucker. +Patches / Tickets also submitted by: Jeremy Evans, aanand, darix, mmmurf, +danielaquino, macournoyer. + - Moved docs into docs/ dir + - Major refactor of rakefile, added generic rakefile helpers in tasks + - Added example CPP build rakefile in tasks/cpp.rake + - Moved rake tests out to tasks/tests.rake + - Added svn ignores where appropriate + - Fixed jruby build on older java platforms + - Gem now builds from Rakefile rather than directly via extconf + - Gem unified for jruby, C++ and pure ruby. + - Correction for pure C++ build, removing ruby dependency + - Fix for CYGWIN builds on ipv6 + - Major refactor for extconf.rb + - Working mingw builds + - extconf optionally uses pkg_config over manual configuration + - extconf builds for 1.9 on any system that has 1.9 + - extconf no longer links pthread explicitly + - looks for kqueue on all *nix systems + - better error output on std::runtime_error, now says where it came from + - Fixed some tests on jruby + - Added test for general send_data flaw, required for a bugfix in jruby build + - Added timeout to epoll tests + - Added fixes for java reactor ruby api + - Small addition of some docs in httpclient.rb and httpcli2.rb + - Some refactor and fixes in smtpserver.rb + - Added parenthesis where possible to avoid excess ruby warnings + - Refactor of $eventmachine_library logic for accuracy and maintenance, jruby + - EM::start_server now supports unix sockets + - EM::connect now supports unix sockets + - EM::defer @threadqueue now handled more gracefully + - Added better messages on exceptions raised + - Fix edge case in timer fires + - Explicitly require buftok.rb + - Add protocols to autoload, rather than require them all immediately + - Fix a bug in pr_eventmachine for outbound_q + - Refactors to take some of the use of defer out of tests. + - Fixes in EM.defer under start/stop conditions. Reduced scope of threads. +23Sep08: Added patch from tmm1 to avoid popen errors on exit. +30Sep08: Added File.exists? checks in the args for start_tls, as suggested by + Brian Lopez (brianmario). +10Nov08: ruby 1.9 compatibility enhancements +28Nov08: Allow for older ruby builds where RARRAY_LEN is not defined +03Dec08: allow passing arguments to popen handlers +13Jan09: SSL support for httpclient2 (David Smalley) +22Jan09: Fixed errors on OSX with the kqueue reactor, fixed errors in the pure + ruby reactor. Added EM.current_time. Added EM.epoll? and EM.kqueue? +27Jan09: Reactor errors are now raised as ruby RuntimeErrors. +28Jan09: Documentation patch from alloy +29Jan09: (Late sign-off) Use a longer timeout for connect_server (Ilya + Grigorik) +07Feb09: Fix signal handling issues with threads+epoll +07Feb09: Use rb_thread_schedule in the epoll reactor +07Feb09: Use TRAP_BEG/END and rb_thread_schedule in kqueue reactor +08Feb09: Added fastfilereader from swiftiply +08Feb09: 1.9 fix for rb_trap_immediate +08Feb09: Enable rb_thread_blocking_region for 1.9.0 and 1.9.1 +10Feb09: Support win32 builds for fastfilereader +10Feb09: Added a new event to indicate completion of SSL handshake on TCP + connections +10Feb09: Working get_peer_cert method. Returns the certificate as a Ruby + String in PEM format. (Jake Douglas) +10Feb09: Added EM.get_max_timers +11Feb09: Fix compile options for sun compiler (Alasdairrr) +11Feb09: get_status returns a Process::Status object +12Feb09: Add EM::Protocols::Memcache with simple get/set functionality +19Feb09: Add catch-all EM.error_handler +20Feb09: Support miniunit (1.9) +20Feb09: Return success on content-length = 0 instead of start waiting forever + (Ugo Riboni) +25Feb09: Allow next_tick to be used to pre-schedule reactor operations before + EM.run +26Feb09: Added EM.get_connection_count +01Mar09: Switch back to extconf for compiling gem extensions +01Mar09: fixed a small bug with basic auth (mmmurf) diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/DEFERRABLES b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/DEFERRABLES new file mode 100644 index 0000000000..6e8856cc57 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/DEFERRABLES @@ -0,0 +1,246 @@ +EventMachine (EM) adds two different formalisms for lightweight concurrency +to the Ruby programmer's toolbox: spawned processes and deferrables. This +note will show you how to use deferrables. For more information, see the +separate document LIGHTWEIGHT_CONCURRENCY. + +=== What are Deferrables? + +EventMachine's Deferrable borrows heavily from the "deferred" object in +Python's "Twisted" event-handling framework. Here's a minimal example that +illustrates Deferrable: + + require 'eventmachine' + + class MyClass + include EM::Deferrable + + def print_value x + puts "MyClass instance received #{x}" + end + end + + EM.run { + df = MyClass.new + df.callback {|x| + df.print_value(x) + EM.stop + } + + EM::Timer.new(2) { + df.set_deferred_status :succeeded, 100 + } + } + + +This program will spin for two seconds, print out the string "MyClass +instance received 100" and then exit. The Deferrable pattern relies on +an unusual metaphor that may be unfamiliar to you, unless you've used +Python's Twisted. You may need to read the following material through +more than once before you get the idea. + +EventMachine::Deferrable is simply a Ruby Module that you can include +in your own classes. (There also is a class named +EventMachine::DefaultDeferrable for when you want to create one without +including it in code of your own.) + +An object that includes EventMachine::Deferrable is like any other Ruby +object: it can be created whenever you want, returned from your functions, +or passed as an argument to other functions. + +The Deferrable pattern allows you to specify any number of Ruby code +blocks (callbacks or errbacks) that will be executed at some future time +when the status of the Deferrable object changes. + +How might that be useful? Well, imagine that you're implementing an HTTP +server, but you need to make a call to some other server in order to fulfill +a client request. + +When you receive a request from one of your clients, you can create and +return a Deferrable object. Some other section of your program can add a +callback to the Deferrable that will cause the client's request to be +fulfilled. Simultaneously, you initiate an event-driven or threaded client +request to some different server. And then your EM program will continue to +process other events and service other client requests. + +When your client request to the other server completes some time later, you +will call the #set_deferred_status method on the Deferrable object, passing +either a success or failure status, and an arbitrary number of parameters +(which might include the data you received from the other server). + +At that point, the status of the Deferrable object becomes known, and its +callback or errback methods are immediately executed. Callbacks and errbacks +are code blocks that are attached to Deferrable objects at any time through +the methods #callback and #errback. + +The deep beauty of this pattern is that it decouples the disposition of one +operation (such as a client request to an outboard server) from the +subsequent operations that depend on that disposition (which may include +responding to a different client or any other operation). + +The code which invokes the deferred operation (that will eventually result +in a success or failure status together with associated data) is completely +separate from the code which depends on that status and data. This achieves +one of the primary goals for which threading is typically used in +sophisticated applications, with none of the nondeterminacy or debugging +difficulties of threads. + +As soon as the deferred status of a Deferrable becomes known by way of a call +to #set_deferred_status, the Deferrable will IMMEDIATELY execute all of its +callbacks or errbacks in the order in which they were added to the Deferrable. + +Callbacks and errbacks can be added to a Deferrable object at any time, not +just when the object is created. They can even be added after the status of +the object has been determined! (In this case, they will be executed +immediately when they are added.) + +A call to Deferrable#set_deferred_status takes :succeeded or :failed as its +first argument. (This determines whether the object will call its callbacks +or its errbacks.) #set_deferred_status also takes zero or more additional +parameters, that will in turn be passed as parameters to the callbacks or +errbacks. + +In general, you can only call #set_deferred_status ONCE on a Deferrable +object. A call to #set_deferred_status will not return until all of the +associated callbacks or errbacks have been called. If you add callbacks or +errbacks AFTER making a call to #set_deferred_status, those additional +callbacks or errbacks will execute IMMEDIATELY. Any given callback or +errback will be executed AT MOST once. + +It's possible to call #set_deferred_status AGAIN, during the execution a +callback or errback. This makes it possible to change the parameters which +will be sent to the callbacks or errbacks farther down the chain, enabling +some extremely elegant use-cases. You can transform the data returned from +a deferred operation in arbitrary ways as needed by subsequent users, without +changing any of the code that generated the original data. + +A call to #set_deferred_status will not return until all of the associated +callbacks or errbacks have been called. If you add callbacks or errbacks +AFTER making a call to #set_deferred_status, those additional callbacks or +errbacks will execute IMMEDIATELY. + +Let's look at some more sample code. It turns out that many of the internal +protocol implementations in the EventMachine package rely on Deferrable. One +of these is EM::Protocols::HttpClient. + +To make an evented HTTP request, use the module function +EM::Protocols::HttpClient#request, which returns a Deferrable object. +Here's how: + + require 'eventmachine' + + EM.run { + df = EM::Protocols::HttpClient.request( :host=>"www.example.com", + :request=>"/index.html" ) + + df.callback {|response| + puts "Succeeded: #{response[:content]}" + EM.stop + } + + df.errback {|response| + puts "ERROR: #{response[:status]}" + EM.stop + } + } + +(See the documentation of EventMachine::Protocols::HttpClient for information +on the object returned by #request.) + +In this code, we make a call to HttpClient#request, which immediately returns +a Deferrable object. In the background, an HTTP client request is being made +to www.example.com, although your code will continue to run concurrently. + +At some future point, the HTTP client request will complete, and the code in +EM::Protocols::HttpClient will process either a valid HTTP response (including +returned content), or an error. + +At that point, EM::Protocols::HttpClient will call +EM::Deferrable#set_deferred_status on the Deferrable object that was returned +to your program, as the return value from EM::Protocols::HttpClient.request. +You don't have to do anything to make this happen. All you have to do is tell +the Deferrable what to do in case of either success, failure, or both. + +In our code sample, we set one callback and one errback. The former will be +called if the HTTP call succeeds, and the latter if it fails. (For +simplicity, we have both of them calling EM#stop to end the program, although +real programs would be very unlikely to do this.) + +Setting callbacks and errbacks is optional. They are handlers to defined +events in the lifecycle of the Deferrable event. It's not an error if you +fail to set either a callback, an errback, or both. But of course your +program will then fail to receive those notifications. + +If through some bug it turns out that #set_deferred_status is never called +on a Deferrable object, then that object's callbacks or errbacks will NEVER +be called. It's also possible to set a timeout on a Deferrable. If the +timeout elapses before any other call to #set_deferred_status, the Deferrable +object will behave as is you had called set_deferred_status(:failed) on it. + + +Now let's modify the example to illustrate some additional points: + + require 'eventmachine' + + EM.run { + df = EM::Protocols::HttpClient.request( :host=>"www.example.com", + :request=>"/index.html" ) + + df.callback {|response| + df.set_deferred_status :succeeded, response[:content] + } + + df.callback {|string| + puts "Succeeded: #{string}" + EM.stop + } + + df.errback {|response| + puts "ERROR: #{response[:status]}" + EM.stop + } + } + + +Just for the sake of illustration, we've now set two callbacks instead of +one. If the deferrable operation (the HTTP client-request) succeeds, then +both of the callbacks will be executed in order. + +But notice that we've also made our own call to #set_deferred_status in the +first callback. This isn't required, because the HttpClient implementation +already made a call to #set_deferred_status. (Otherwise, of course, the +callback would not be executing.) + +But we used #set_deferred_status in the first callback in order to change the +parameters that will be sent to subsequent callbacks in the chain. In this +way, you can construct powerful sequences of layered functionality. If you +want, you can even change the status of the Deferrable from :succeeded to +:failed, which would abort the chain of callback calls, and invoke the chain +of errbacks instead. + +Now of course it's somewhat trivial to define two callbacks in the same +method, even with the parameter-changing effect we just described. It would +be much more interesting to pass the Deferrable to some other function (for +example, a function defined in another module or a different gem), that would +in turn add callbacks and/or errbacks of its own. That would illustrate the +true power of the Deferrable pattern: to isolate the HTTP client-request +from other functions that use the data that it returns without caring where +those data came from. + +Remember that you can add a callback or an errback to a Deferrable at any +point in time, regardless of whether the status of the deferred operation is +known (more precisely, regardless of when #set_deferred_status is called on +the object). Even hours or days later. + +When you add a callback or errback to a Deferrable object on which +#set_deferred_status has not yet been called, the callback/errback is queued +up for future execution, inside the Deferrable object. When you add a +callback or errback to a Deferrable on which #set_deferred_status has +already been called, the callback/errback will be executed immediately. +Your code doesn't have to worry about the ordering, and there are no timing +issues, as there would be with a threaded approach. + +For more information on Deferrables and their typical usage patterns, look +in the EM unit tests. There are also quite a few sugarings (including +EM::Deferrable#future) that make typical Deferrable usages syntactically +easier to work with. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/EPOLL b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/EPOLL new file mode 100644 index 0000000000..13cea8f41a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/EPOLL @@ -0,0 +1,141 @@ +EventMachine now supports epoll, bringing large increases in performance and scalability to Ruby programs. + +Epoll(7) is a alternative mechanism for multiplexed I/O that is available in Linux 2.6 kernels. +It features significantly greater performance than the standard select(2) mechanism, when used in +applications that require very large numbers of open I/O descriptors. + +EventMachine has always used select(2) because its behavior is well standardized and broadly supported. +But select becomes unreasonably slow when a program has a +very large number of file descriptors or sockets. Ruby's version of select hardcodes a limit +of 1024 descriptors per process, but heavily loaded processes will start to show performance +degradation even after only a few hundred descriptors are in use. + +Epoll is an extended version of the poll(2) call, and it solves the problems with select. Programs +based on epoll can easily scale past Ruby's 1024-descriptor limit, potentially to tens of thousands +of connectors, with no significant impact on performance. + +(Another alternative which is very similar to epoll in principle is kqueue, supplied on BSD and its +variants.) + + + +This note shows you how to use epoll in your programs. + +=== Compiling EventMachine to use epoll. + +You don't have to do anything to get epoll support in EventMachine. +When you compile EventMachine on a platform that supports epoll, EM will +automatically generate a Makefile that includes epoll. (At this writing, this will only work +on Linux 2.6 kernels.) If you compile EM on a platform without epoll, then epoll support will +be omitted from the Makefile, and EM will work just as it always has. + +=== Using epoll in your programs. + +First, you need to tell EventMachine to use epoll instead of select (but see below, as this requirement +will be removed in a future EventMachine version). Second, you need to prepare your program to use +more than 1024 descriptors, an operation that generally requires superuser privileges. Third, you will probably +want your process to drop the superuser privileges after you increase your process's descriptor limit. + +=== Using EventMachine#epoll + +Call the method EventMachine#epoll anytime before you call EventMachine#run, and your program will +automatically use epoll, if available. It's safe to call EventMachine#epoll on any platform because +it compiles to a no-op on platforms that don't support epoll. + + require 'rubygems' + require 'eventmachine' + + EM.epoll + EM.run { + ... + } + + +EventMachine#epoll was included in this initial release only to avoid changing the behavior of existing +programs. However, it's expected that a future release of EM will convert EventMachine#epoll to a no-op, +and run epoll by default on platforms that support it. + +=== Using EventMachine#set_descriptor_table_size + +In Linux (as in every Unix-like platform), every process has a internal table that determines the maximum +number of file and socket descriptors you may have open at any given time. The size of this table is +generally fixed at 1024, although it may be increased within certain system-defined hard and soft limits. + +If you want your EventMachine program to support more than 1024 total descriptors, you must use +EventMachine#set_descriptor_table_size, as follows: + + require 'rubygems' + require 'eventmachine' + + new_size = EM.set_descriptor_table_size( 60000 ) + $>.puts "New descriptor-table size is #{new_size}" + + EM.run { + ... + } + +If successful, this example will increase the maximum number of descriptors that epoll can use to 60,000. +Call EventMachine#set_descriptor_table_size without an argument at any time to find out the current +size of the descriptor table. + +Using EventMachine#set_descriptor_table_size ONLY affects the number of descriptors that can be used +by epoll. It has no useful effect on platforms that don't support epoll, and it does NOT increase the +number of descriptors that Ruby's own I/O functions can use. + +#set_descriptor_table_size can fail if your process is not running as superuser, or if you try to set a +table size that exceeds the hard limits imposed by your system. In the latter case, try a smaller number. + + +=== Using EventMachine#set_effective_user + +In general, you must run your program with elevated or superuser privileges if you want to increase +your descriptor-table size beyond 1024 descriptors. This is easy enough to verify. Try running the +sample program given above, that increases the descriptor limit to 60,000. You will probably find that +the table size will not be increased if you don't run your program as root or with elevated privileges. + +But of course network servers, especially long-running ones, should not run with elevated privileges. +You will want to drop superuser privileges as soon as possible after initialization. To do this, +use EventMachine#set_effective_user: + + require 'rubygems' + require 'eventmachine' + + # (Here, program is running as superuser) + + EM.set_descriptor_table_size( 60000 ) + EM.set_effective_user( "nobody" ) + # (Here, program is running as nobody) + + EM.run { + ... + } + +Of course, you will need to replace "nobody" in the example with the name of an unprivileged user +that is valid on your system. What if you want to drop privileges after opening a server socket +on a privileged (low-numbered) port? Easy, just call #set_effective_user after opening your sockets: + + require 'rubygems' + require 'eventmachine' + + # (Here, program is running as superuser) + + EM.set_descriptor_table_size( 60000 ) + + EM.run { + EM.start_server( "0.0.0.0", 80, MyHttpServer ) + EM.start_server( "0.0.0.0", 443, MyEncryptedHttpServer ) + + EM.set_effective_user( "nobody" ) + # (Here, program is running as nobody) + + ... + } + + +Because EventMachine#set_effective_user is used to enforce security +requirements, it has no nonfatal errors. If you try to set a nonexistent or invalid effective user, +#set_effective_user will abort your program, rather than continue to run with elevated privileges. + +EventMachine#set_effective_user is a silent no-op on platforms that don't support it, such as Windows. + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/INSTALL b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/INSTALL new file mode 100644 index 0000000000..dee2e4294c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/INSTALL @@ -0,0 +1,13 @@ +If you have obtained an EventMachine source-tarball (.tar.gz): +unzip and untar the tarball, and enter the directory that is +created. In that directory, say: +ruby setup.rb +(You may need to be root to execute this command.) + +To create documentation for EventMachine, simply type: +rake rdoc +in the distro directory. Rdocs will be created in subdirectory rdoc. + +If you have obtained a gem version of EventMachine, install it in the +usual way (gem install eventmachine). You may need superuser privileges +to execute this command. diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/KEYBOARD b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/KEYBOARD new file mode 100644 index 0000000000..6c699e498f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/KEYBOARD @@ -0,0 +1,42 @@ +EventMachine (EM) can respond to keyboard events. This gives your event-driven +programs the ability to respond to input from local users. + +Programming EM to handle keyboard input in Ruby is simplicity itself. Just use +EventMachine#open_keyboard, and supply the name of a Ruby module or class that +will receive the input: + + require 'rubygems' + require 'eventmachine' + + module MyKeyboardHandler + def receive_data keystrokes + puts "I received the following data from the keyboard: #{keystrokes}" + end + end + + EM.run { + EM.open_keyboard(MyKeyboardHandler) + } + +If you want EM to send line-buffered keyboard input to your program, just +include the LineText2 protocol module in your handler class or module: + + require 'rubygems' + require 'eventmachine' + + module MyKeyboardHandler + include EM::Protocols::LineText2 + def receive_line data + puts "I received the following line from the keyboard: #{data}" + end + end + + EM.run { + EM.open_keyboard(MyKeyboardHandler) + } + +As we said, simplicity itself. You can call EventMachine#open_keyboard at any +time while the EM reactor loop is running. In other words, the method +invocation may appear anywhere in an EventMachine#run block, or in any code +invoked in the #run block. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LEGAL b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LEGAL new file mode 100644 index 0000000000..ee018255d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LEGAL @@ -0,0 +1,25 @@ +LEGAL NOTICE INFORMATION +------------------------ + +EventMachine is Copyright (C) 2006-07 by Francis Cianfrocca. + +EventMachine is copyrighted software owned by Francis Cianfrocca +(blackhedd ... gmail.com). You may redistribute and/or modify this +software as long as you comply with either the terms of the GPL +(see the file GPL), or Ruby's license (see the file COPYING). + +Your use of all the files in this distribution is controlled by these +license terms, except for those files specifically mentioned below: + + + +setup.rb + This file is Copyright (C) 2000-2005 by Minero Aoki + You can distribute/modify this file under the terms of + the GNU LGPL, Lesser General Public License version 2.1. + + +lib/em/buftok.rb + This file is Copyright (C) 2007 by Tony Arcieri. This file is + covered by the terms of Ruby's License (see the file COPYING). + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LIGHTWEIGHT_CONCURRENCY b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LIGHTWEIGHT_CONCURRENCY new file mode 100644 index 0000000000..3c2cfa0395 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/LIGHTWEIGHT_CONCURRENCY @@ -0,0 +1,130 @@ +EventMachine (EM) adds two different formalisms for lightweight concurrency to +the Ruby programmer's toolbox: spawned processes and deferrables. This note +will show you how to use them. + + +=== What is Lightweight Concurrency? + +We use the term "Lightweight Concurrency" (LC) to refer to concurrency +mechanisms that are lighter than Ruby threads. By "lighter," we mean: less +resource-intensive in one or more dimensions, usually including memory and +CPU usage. In general, you turn to LC in the hope of improving the +performance and scalability of your programs. + +In addition to the two EventMachine mechanisms we will discuss here, Ruby +has at least one other LC construct: Fibers, which are currently under +development in Ruby 1.9. + +The technical feature that makes all of these LC mechanisms different from +standard Ruby threads is that they are not scheduled automatically. + +When you create and run Ruby threads, you can assume (within certain +constraints) that your threads will all be scheduled fairly by Ruby's runtime. +Ruby itself is responsible for giving each of your threads its own share of +the total runtime. + +But with LC, your program is responsible for causing different execution +paths to run. In effect, your program has to act as a "thread scheduler." +Scheduled entities in LC run to completion and are never preempted. The +runtime system has far less work to do since it has no need to interrupt +threads or to schedule them fairly. This is what makes LC lighter and faster. + +You'll learn exactly how LC scheduling works in practice as we work through +specific examples. + + +=== EventMachine Lightweight Concurrency + +Recall that EM provides a reactor loop that must be running in order for +your programs to perform event-driven logic. An EM program typically has a +structure like this: + + require 'eventmachine' + + # your initializations + + EM.run { + # perform event-driven I/O here, including network clients, + # servers, timers, and thread-pool operations. + } + + # your cleanup + # end of the program + + +EventMachine#run executes the reactor loop, which causes your code to be +called as events of interest to your program occur. The block you pass to +EventMachine#run is executed right after the reactor loop starts, and is +the right place to start socket acceptors, etc. + +Because the reactor loop runs constantly in an EM program (until it is +stopped by a call to EventMachine#stop), it has the ability to schedule +blocks of code for asynchronous execution. Unlike a pre-emptive thread +scheduler, it's NOT able to interrupt code blocks while they execute. But +the scheduling capability it does have is enough to enable lightweight +concurrency. + + +For information on Spawned Processes, see the separate document +SPAWNED_PROCESSES. + +For information on Deferrables, see the separate document DEFERRABLES. + + +=== [SIDEBAR]: I Heard That EventMachine Doesn't Work With Ruby Threads. + +This is incorrect. EM is fully interoperable with all versions of Ruby +threads, and has been since its earliest releases. + +It's very true that EM encourages an "evented" (non-threaded) programming +style. The specific benefits of event-driven programming are far better +performance and scalability for well-written programs, and far easier +debugging. + +The benefit of using threads for similar applications is a possibly more +intuitive programming model, as well as the fact that threads are already +familiar to most programmers. Also, bugs in threaded programs often fail +to show up until programs go into production. These factors create the +illusion that threaded programs are easier to write. + +However, some operations that occur frequently in professional-caliber +applications simply can't be done without threads. (The classic example +is making calls to database client-libraries that block on network I/O +until they complete.) + +EventMachine not only allows the use of Ruby threads in these cases, but +it even provides a built-in thread-pool object to make them easier to +work with. + +You may have heard a persistent criticism that evented I/O is fundamentally +incompatible with Ruby threads. It is true that some well-publicized attempts +to incorporate event-handling libraries into Ruby were not successful. But +EventMachine was designed from the ground up with Ruby compatibility in mind, +so EM never suffered from the problems that defeated the earlier attempts. + + +=== [SIDEBAR]: I Heard That EventMachine Doesn't Work Very Well On Windows. + +This too is incorrect. EventMachine is an extension written in C++ and Java, +and therefore it requires compilation. Many Windows computers (and some Unix +computers, especially in production environments) don't have a build stack. +Attempting to install EventMachine on a machine without a compiler usually +produces a confusing error. + +In addition, Ruby has a much-debated issue with Windows compiler versions. +Ruby on Windows works best with Visual Studio 6, a compiler version that is +long out-of-print, no longer supported by Microsoft, and difficult to obtain. +(This problem is not specific to EventMachine.) + +Shortly after EventMachine was first released, the compiler issues led to +criticism that EM was incompatible with Windows. Since that time, every +EventMachine release has been supplied in a precompiled binary form for +Windows users, that does not require you to compile the code yourself. EM +binary Gems for Windows are compiled using Visual Studio 6. + +EventMachine does supply some advanced features (such as Linux EPOLL support, +reduced-privilege operation, UNIX-domain sockets, etc.) that have no +meaningful implementation on Windows. Apart from these special cases, all EM +functionality (including lightweight concurrency) works perfectly well on +Windows. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/PURE_RUBY b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/PURE_RUBY new file mode 100644 index 0000000000..157d59ebb0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/PURE_RUBY @@ -0,0 +1,75 @@ +EventMachine is supplied in three alternative versions. + +1) A version that includes a Ruby extension written in C++. This version requires compilation; +2) A version for JRuby that contains a precompiled JAR file written in Java; +3) A pure Ruby version that has no external dependencies and can run in any Ruby environment. + +The Java version of EventMachine is packaged in a distinct manner and must be installed using a +special procedure. This version is described fully in a different document, and not considered +further here. + +The C++ and pure-Ruby versions, however, are shipped in the same distribution. You use the same +files (either tarball or Ruby gem) to install both of these versions. + +If you intend to use the C++ version, you must successfully compile EventMachine after you install it. +(The gem installation attempts to perform this step automatically.) + +If you choose not to compile the EventMachine C++ extension, or if your compilation fails for any +reason, you still have a fully-functional installation of the pure-Ruby version of EM. + +However, for technical reasons, a default EM installation (whether or not the compilation succeeds) +will always assume that the compiled ("extension") implementation should be used. + +If you want your EM program to use the pure Ruby version, you must specifically request it. There +are two ways to do this: by setting either a Ruby global variable, or an environment string. + +The following code will invoke the pure-Ruby implementation of EM: + + $eventmachine_library = :pure_ruby + require 'eventmachine' + + EM.library_type #=> "pure_ruby" + +Notice that this requires a code change and is not the preferred way to select pure Ruby, unless +for some reason you are absolutely sure you will never want the compiled implementation. + +Setting the following environment string has the same effect: + + export EVENTMACHINE_LIBRARY="pure_ruby" + +This technique gives you the flexibility to select either version at runtime with no code changes. + +Support + +The EventMachine development team has committed to support precisely the same APIs for all the +various implementations of EM. + +This means that you can expect any EM program to behave identically, whether you use pure Ruby, +the compiled C++ extension, or JRuby. Deviations from this behavior are to be considered bugs +and should be reported as such. + +There is a small number of exceptions to this rule, which arise from underlying platform +distinctions. Notably, EM#epoll is a silent no-op in the pure Ruby implementation. + + +When Should You Use the Pure-Ruby Implementation of EM? + + +Use the pure Ruby implementation of EM when you must support a platform for which no C++ compiler +is available, or on which the standard EM C++ code can't be compiled. + +Keep in mind that you don't need a C++ compiler in order to deploy EM applications that rely on +the compiled version, so long as appropriate C++ runtime libraries are available on the target platform. + +In extreme cases, you may find that you can develop software with the compiled EM version, but are +not allowed to install required runtime libraries on the deployment system(s). This would be another +case in which the pure Ruby implementation can be useful. + +In general you should avoid the pure Ruby version of EM when performance and scalability are important. +EM in pure Ruby will necessarily run slower than the compiled version. Depending on your application +this may or may not be a key issue. + +Also, since EPOLL is not supported in pure Ruby, your applications will be affected by Ruby's built-in +limit of 1024 file and socket descriptors that may be open in a single process. For maximum scalability +and performance, always use EPOLL if possible. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/RELEASE_NOTES b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/RELEASE_NOTES new file mode 100644 index 0000000000..6110820ac3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/RELEASE_NOTES @@ -0,0 +1,94 @@ +RUBY/EventMachine RELEASE NOTES + +-------------------------------------------------- +Version: 0.9.0, released xxXXX07 +Added Erlang-like distributed-computing features + +-------------------------------------------------- +Version: 0.8.0, released 23Jun07 +Added an epoll implementation for Linux 2.6 kernels. +Added evented #popen. + +-------------------------------------------------- +Version: 0.7.3, released 22May07 +Added a large variety of small features. See the ChangeLog. + +-------------------------------------------------- +Version: 0.7.1, released xxNov06 +Added protocol handlers for line-oriented protocols. +Various bug fixes. + +-------------------------------------------------- +Version: 0.7.0, released 20Nov06 +Added a fix in em.cpp/ConnectToServer to fix a fatal exception that +occurred in FreeBSD when connecting successfully to a remote server. + +-------------------------------------------------- +Version: 0.6.0, released xxJul06 +Added deferred operations, suggested by Don Stocks, amillionhitpoints@yahoo.com. + +-------------------------------------------------- +Version: 0.5.4, released xxJun06 +Added get_peername support for streams and datagrams. + +-------------------------------------------------- +Version: 0.5.3, released 17May06 +Fixed bugs in extconf.rb, thanks to Daniel Harple, dharple@generalconsumption.org. +Added proper setup.rb and rake tasks, thanks to Austin Ziegler. +Fixed a handful of reported problems with builds on various platforms. + +-------------------------------------------------- +Version: 0.5.2, released 05May06 +Made several nonvisible improvements to the Windows +implementation. +Added an exception-handling patch contributed by Jeff Rose, jeff@rosejn.net. +Added a dir-config patch contributed anonymously. +Supported builds on Solaris. + +-------------------------------------------------- +Version: 0.5.1, released 05May06 +Made it possible to pass a Class rather than a Module +to a protocol handler. +Added Windows port. + +-------------------------------------------------- +Version: 0.5.0, released 30Apr06 +Added a preliminary SSL/TLS extension. This will probably +change over the next few releases. + +-------------------------------------------------- +Version: 0.4.5, released 29Apr06 +Changed ext files so the ruby.h is installed after unistd.h +otherwise it doesn't compile on gcc 4.1 + +-------------------------------------------------- +Version: 0.4.2, released 19Apr06 +Changed the Ruby-glue so the extension will play nicer +in the sandbox with Ruby threads. +Added an EventMachine::run_without_threads API to +switch off the thread-awareness for better performance +in programs that do not spin any Ruby threads. + +-------------------------------------------------- +Version: 0.4.1, released 15Apr06 +Reworked the shared-object interface to make it easier to +use EventMachine from languages other than Ruby. + +-------------------------------------------------- +Version: 0.3.2, released 12Apr06 +Added support for a user-supplied block in EventMachine#connect. + +-------------------------------------------------- +Version: 0.3.1, released 11Apr06 +Fixed bug that prevented EventMachine from being run multiple +times in a single process. + +-------------------------------------------------- +Version: 0.3.0, released 10Apr06 +Added method EventHandler::Connection::post_init + +-------------------------------------------------- +Version: 0.2.0, released 10Apr06 +Added method EventHandler::stop + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SMTP b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SMTP new file mode 100644 index 0000000000..92bf3110e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SMTP @@ -0,0 +1,4 @@ +This note details the usage of EventMachine's built-in support for SMTP. EM +supports both client and server connections, which will be described in +separate sections. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SPAWNED_PROCESSES b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SPAWNED_PROCESSES new file mode 100644 index 0000000000..ee68e3e85d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/SPAWNED_PROCESSES @@ -0,0 +1,148 @@ +EventMachine (EM) adds two different formalisms for lightweight concurrency +to the Ruby programmer's toolbox: spawned processes and deferrables. This +note will show you how to use spawned processes. For more information, see +the separate document LIGHTWEIGHT_CONCURRENCY. + + +=== What are Spawned Processes? + +Spawned Processes in EventMachine are inspired directly by the "processes" +found in the Erlang programming language. EM deliberately borrows much (but +not all) of Erlang's terminology. However, EM's spawned processes differ from +Erlang's in ways that reflect not only Ruby style, but also the fact that +Ruby is not a functional language like Erlang. + +Let's proceed with a complete, working code sample that we will analyze line +by line. Here's an EM implementation of the "ping-pong" program that also +appears in the Erlang tutorial: + + + require 'eventmachine' + + EM.run { + pong = EM.spawn {|x, ping| + puts "Pong received #{x}" + ping.notify( x-1 ) + } + + ping = EM.spawn {|x| + if x > 0 + puts "Pinging #{x}" + pong.notify x, self + else + EM.stop + end + } + + ping.notify 3 + } + +If you run this program, you'll see the following output: + + Pinging 3 + Pong received 3 + Pinging 2 + Pong received 2 + Pinging 1 + Pong received 1 + +Let's take it step by step. + +EventMachine#spawn works very much like the built-in function spawn in +Erlang. It returns a reference to a Ruby object of class +EventMachine::SpawnedProcess, which is actually a schedulable entity. In +Erlang, the value returned from spawn is called a "process identifier" or +"pid." But we'll refer to the Ruby object returned from EM#spawn simply as a +"spawned process." + +You pass a Ruby block with zero or more parameters to EventMachine#spawn. +Like all Ruby blocks, this one is a closure, so it can refer to variables +defined in the local context when you call EM#spawn. + +However, the code block passed to EM#spawn does NOT execute immediately by +default. Rather, it will execute only when the Spawned Object is "notified." +In Erlang, this process is called "message passing," and is done with the +operator !, but in Ruby it's done simply by calling the #notify method of a +spawned-process object. The parameters you pass to #notify must match those +defined in the block that was originally passed to EM#spawn. + +When you call the #notify method of a spawned-process object, EM's reactor +core will execute the code block originally passed to EM#spawn, at some point +in the future. (#notify itself merely adds a notification to the object's +message queue and ALWAYS returns immediately.) + +When a SpawnedProcess object executes a notification, it does so in the +context of the SpawnedProcess object itself. The notified code block can see +local context from the point at which EM#spawn was called. However, the value +of "self" inside the notified code block is a reference to the SpawnedProcesss +object itself. + +An EM spawned process is nothing more than a Ruby object with a message +queue attached to it. You can have any number of spawned processes in your +program without compromising scalability. You can notify a spawned process +any number of times, and each notification will cause a "message" to be +placed in the queue of the spawned process. Spawned processes with non-empty +message queues are scheduled for execution automatically by the EM reactor. +Spawned processes with no visible references are garbage-collected like any +other Ruby object. + +Back to our code sample: + + pong = EM.spawn {|x, ping| + puts "Pong received #{x}" + ping.notify( x-1 ) + } + +This simply creates a spawned process and assigns it to the local variable +pong. You can see that the spawned code block takes a numeric parameter and a +reference to another spawned process. When pong is notified, it expects to +receive arguments corresponding to these two parameters. It simply prints out +the number it receives as the first argument. Then it notifies the spawned +process referenced by the second argument, passing it the first argument +minus 1. + +And then the block ends, which is crucial because otherwise nothing else +can run. (Remember that in LC, scheduled entities run to completion and are +never preempted.) + +On to the next bit of the code sample: + + ping = EM.spawn {|x| + if x > 0 + puts "Pinging #{x}" + pong.notify x, self + else + EM.stop + end + } + +Here, we're spawning a process that takes a single (numeric) parameter. If +the parameter is greater than zero, the block writes it to the console. It +then notifies the spawned process referenced by the pong local variable, +passing as arguments its number argument, and a reference to itself. The +latter reference, as you saw above, is used by pong to send a return +notification. + +If the ping process receives a zero value, it will stop the reactor loop and +end the program. + +Now we've created a pair of spawned processes, but nothing else has happened. +If we stop now, the program will spin in the EM reactor loop, doing nothing +at all. Our spawned processes will never be scheduled for execution. + +But look at the next line in the code sample: + + ping.notify 3 + +This line gets the ping-pong ball rolling. We call ping's #notify method, +passing the argument 3. This causes a message to be sent to the ping spawned +process. The message contains the single argument, and it causes the EM +reactor to schedule the ping process. And this in turn results in the +execution of the Ruby code block passed to EM#spawn when ping was created. +Everything else proceeds as a result of the messages that are subsequently +passed to each other by the spawned processes. + +[TODO, present the outbound network i/o use case, and clarify that spawned +processes are interleaved with normal i/o operations and don't interfere +with them at all. Also, blame Erlang for the confusing term "process"] + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/TODO b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/TODO new file mode 100644 index 0000000000..686a0d53dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/docs/old/TODO @@ -0,0 +1,8 @@ +TODO List: + +12Aug06: Noticed by Don Stocks. A TCP connect-request that results +in a failed DNS resolution fires a fatal error back to user code. +Uuuuuugly. We should probably cause an unbind event to get fired +instead, and add some parameterization so the caller can detect +the nature of the failure. + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/01_eventmachine_echo_server.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/01_eventmachine_echo_server.rb new file mode 100644 index 0000000000..51c5c7db13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/01_eventmachine_echo_server.rb @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class EchoServer < EM::Connection + def receive_data(data) + send_data(data) + end +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, EchoServer) +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb new file mode 100644 index 0000000000..4cfff19b41 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class EchoServer < EM::Connection + def receive_data(data) + if data.strip =~ /exit$/i + EventMachine.stop + else + send_data(data) + end + end +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, EchoServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/03_simple_chat_server.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/03_simple_chat_server.rb new file mode 100644 index 0000000000..3352551e05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/03_simple_chat_server.rb @@ -0,0 +1,149 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + @@connected_clients = Array.new + DM_REGEXP = /^@([a-zA-Z0-9]+)\s*:?\s*(.+)/.freeze + + attr_reader :username + + + # + # EventMachine handlers + # + + def post_init + @username = nil + + puts "A client has connected..." + ask_username + end + + def unbind + @@connected_clients.delete(self) + puts "[info] #{@username} has left" if entered_username? + end + + def receive_data(data) + if entered_username? + handle_chat_message(data.strip) + else + handle_username(data.strip) + end + end + + + # + # Username handling + # + + def entered_username? + !@username.nil? && !@username.empty? + end # entered_username? + + def handle_username(input) + if input.empty? + send_line("Blank usernames are not allowed. Try again.") + ask_username + else + @username = input + @@connected_clients.push(self) + self.other_peers.each { |c| c.send_data("#{@username} has joined the room\n") } + puts "#{@username} has joined" + + self.send_line("[info] Ohai, #{@username}") + end + end # handle_username(input) + + def ask_username + self.send_line("[info] Enter your username:") + end # ask_username + + + # + # Message handling + # + + def handle_chat_message(msg) + if command?(msg) + self.handle_command(msg) + else + if direct_message?(msg) + self.handle_direct_message(msg) + else + self.announce(msg, "#{@username}:") + end + end + end # handle_chat_message(msg) + + def direct_message?(input) + input =~ DM_REGEXP + end # direct_message?(input) + + def handle_direct_message(input) + username, message = parse_direct_message(input) + + if connection = @@connected_clients.find { |c| c.username == username } + puts "[dm] @#{@username} => @#{username}" + connection.send_line("[dm] @#{@username}: #{message}") + else + send_line "@#{username} is not in the room. Here's who is: #{usernames.join(', ')}" + end + end # handle_direct_message(input) + + def parse_direct_message(input) + return [$1, $2] if input =~ DM_REGEXP + end # parse_direct_message(input) + + + # + # Commands handling + # + + def command?(input) + input =~ /(exit|status)$/i + end # command?(input) + + def handle_command(cmd) + case cmd + when /exit$/i then self.close_connection + when /status$/i then self.send_line("[chat server] It's #{Time.now.strftime('%H:%M')} and there are #{self.number_of_connected_clients} people in the room") + end + end # handle_command(cmd) + + + # + # Helpers + # + + def announce(msg = nil, prefix = "[chat server]") + @@connected_clients.each { |c| c.send_line("#{prefix} #{msg}") } unless msg.empty? + end # announce(msg) + + def number_of_connected_clients + @@connected_clients.size + end # number_of_connected_clients + + def other_peers + @@connected_clients.reject { |c| self == c } + end # other_peers + + def send_line(line) + self.send_data("#{line}\n") + end # send_line(line) + + def usernames + @@connected_clients.map { |c| c.username } + end # usernames +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/04_simple_chat_server_step_one.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/04_simple_chat_server_step_one.rb new file mode 100644 index 0000000000..bb283a7a29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/04_simple_chat_server_step_one.rb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + # + # EventMachine handlers + # + + def post_init + puts "A client has connected..." + end + + def unbind + puts "A client has left..." + end +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/05_simple_chat_server_step_two.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/05_simple_chat_server_step_two.rb new file mode 100644 index 0000000000..1361c5da5d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/05_simple_chat_server_step_two.rb @@ -0,0 +1,43 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + @@connected_clients = Array.new + + + # + # EventMachine handlers + # + + def post_init + @@connected_clients.push(self) + puts "A client has connected..." + end + + def unbind + @@connected_clients.delete(self) + puts "A client has left..." + end + + + + + # + # Helpers + # + + def other_peers + @@connected_clients.reject { |c| self == c } + end # other_peers +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/06_simple_chat_server_step_three.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/06_simple_chat_server_step_three.rb new file mode 100644 index 0000000000..d9b85e215d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/06_simple_chat_server_step_three.rb @@ -0,0 +1,98 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + @@connected_clients = Array.new + + + attr_reader :username + + + # + # EventMachine handlers + # + + def post_init + @username = nil + + puts "A client has connected..." + ask_username + end + + def unbind + @@connected_clients.delete(self) + puts "A client has left..." + end + + def receive_data(data) + if entered_username? + handle_chat_message(data.strip) + else + handle_username(data.strip) + end + end + + + + + # + # Username handling + # + + def entered_username? + !@username.nil? && !@username.empty? + end # entered_username? + + def handle_username(input) + if input.empty? + send_line("Blank usernames are not allowed. Try again.") + ask_username + else + @username = input + @@connected_clients.push(self) + self.other_peers.each { |c| c.send_data("#{@username} has joined the room\n") } + puts "#{@username} has joined" + + self.send_line("[info] Ohai, #{@username}") + end + end # handle_username(input) + + def ask_username + self.send_line("[info] Enter your username:") + end # ask_username + + + + # + # Message handling + # + + def handle_chat_message(msg) + raise NotImplementedError + end + + + + # + # Helpers + # + + def other_peers + @@connected_clients.reject { |c| self == c } + end # other_peers + + def send_line(line) + self.send_data("#{line}\n") + end # send_line(line) +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/07_simple_chat_server_step_four.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/07_simple_chat_server_step_four.rb new file mode 100644 index 0000000000..d4948af8d3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/07_simple_chat_server_step_four.rb @@ -0,0 +1,121 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + @@connected_clients = Array.new + + + attr_reader :username + + + # + # EventMachine handlers + # + + def post_init + @username = nil + + puts "A client has connected..." + ask_username + end + + def unbind + @@connected_clients.delete(self) + puts "[info] #{@username} has left" if entered_username? + end + + def receive_data(data) + if entered_username? + handle_chat_message(data.strip) + else + handle_username(data.strip) + end + end + + + + + # + # Username handling + # + + def entered_username? + !@username.nil? && !@username.empty? + end # entered_username? + + def handle_username(input) + if input.empty? + send_line("Blank usernames are not allowed. Try again.") + ask_username + else + @username = input + @@connected_clients.push(self) + self.other_peers.each { |c| c.send_data("#{@username} has joined the room\n") } + puts "#{@username} has joined" + + self.send_line("[info] Ohai, #{@username}") + end + end # handle_username(input) + + def ask_username + self.send_line("[info] Enter your username:") + end # ask_username + + + + # + # Message handling + # + + def handle_chat_message(msg) + if command?(msg) + self.handle_command(msg) + else + self.announce(msg, "#{@username}:") + end + end + + + # + # Commands handling + # + + def command?(input) + input =~ /exit$/i + end # command?(input) + + def handle_command(cmd) + case cmd + when /exit$/i then self.close_connection + end + end # handle_command(cmd) + + + + # + # Helpers + # + + def announce(msg = nil, prefix = "[chat server]") + @@connected_clients.each { |c| c.send_line("#{prefix} #{msg}") } unless msg.empty? + end # announce(msg) + + def other_peers + @@connected_clients.reject { |c| self == c } + end # other_peers + + def send_line(line) + self.send_data("#{line}\n") + end # send_line(line) +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/08_simple_chat_server_step_five.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/08_simple_chat_server_step_five.rb new file mode 100644 index 0000000000..03da66bf7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/guides/getting_started/08_simple_chat_server_step_five.rb @@ -0,0 +1,141 @@ +#!/usr/bin/env ruby + +require 'rubygems' # or use Bundler.setup +require 'eventmachine' + +class SimpleChatServer < EM::Connection + + @@connected_clients = Array.new + DM_REGEXP = /^@([a-zA-Z0-9]+)\s*:?\s+(.+)/.freeze + + attr_reader :username + + + # + # EventMachine handlers + # + + def post_init + @username = nil + + puts "A client has connected..." + ask_username + end + + def unbind + @@connected_clients.delete(self) + puts "[info] #{@username} has left" if entered_username? + end + + def receive_data(data) + if entered_username? + handle_chat_message(data.strip) + else + handle_username(data.strip) + end + end + + + # + # Username handling + # + + def entered_username? + !@username.nil? && !@username.empty? + end # entered_username? + + def handle_username(input) + if input.empty? + send_line("Blank usernames are not allowed. Try again.") + ask_username + else + @username = input + @@connected_clients.push(self) + self.other_peers.each { |c| c.send_data("#{@username} has joined the room\n") } + puts "#{@username} has joined" + + self.send_line("[info] Ohai, #{@username}") + end + end # handle_username(input) + + def ask_username + self.send_line("[info] Enter your username:") + end # ask_username + + + # + # Message handling + # + + def handle_chat_message(msg) + if command?(msg) + self.handle_command(msg) + else + if direct_message?(msg) + self.handle_direct_message(msg) + else + self.announce(msg, "#{@username}:") + end + end + end # handle_chat_message(msg) + + def direct_message?(input) + input =~ DM_REGEXP + end # direct_message?(input) + + def handle_direct_message(input) + username, message = parse_direct_message(input) + + if connection = @@connected_clients.find { |c| c.username == username } + puts "[dm] @#{@username} => @#{username}" + connection.send_line("[dm] @#{@username}: #{message}") + else + send_line "@#{username} is not in the room. Here's who is: #{usernames.join(', ')}" + end + end # handle_direct_message(input) + + def parse_direct_message(input) + return [$1, $2] if input =~ DM_REGEXP + end # parse_direct_message(input) + + + # + # Commands handling + # + + def command?(input) + input =~ /(exit|status)$/i + end # command?(input) + + def handle_command(cmd) + case cmd + when /exit$/i then self.close_connection + when /status$/i then self.send_line("[chat server] It's #{Time.now.strftime('%H:%M')} and there are #{self.number_of_connected_clients} people in the room") + end + end # handle_command(cmd) + + + # + # Helpers + # + + def announce(msg = nil, prefix = "[chat server]") + @@connected_clients.each { |c| c.send_line("#{prefix} #{msg}") } unless msg.empty? + end # announce(msg) + + def other_peers + @@connected_clients.reject { |c| self == c } + end # other_peers + + def send_line(line) + self.send_data("#{line}\n") + end # send_line(line) +end + +EventMachine.run do + # hit Control + C to stop + Signal.trap("INT") { EventMachine.stop } + Signal.trap("TERM") { EventMachine.stop } + + EventMachine.start_server("0.0.0.0", 10000, SimpleChatServer) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_channel.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_channel.rb new file mode 100644 index 0000000000..16e8d083d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_channel.rb @@ -0,0 +1,43 @@ +require File.dirname(__FILE__) + '/helper' + +EM.run do + + # Create a channel to push data to, this could be stocks... + RandChannel = EM::Channel.new + + # The server simply subscribes client connections to the channel on connect, + # and unsubscribes them on disconnect. + class Server < EM::Connection + def self.start(host = '127.0.0.1', port = 8000) + EM.start_server(host, port, self) + end + + def post_init + @sid = RandChannel.subscribe { |m| send_data "#{m.inspect}\n" } + end + + def unbind + RandChannel.unsubscribe @sid + end + end + Server.start + + # Two client connections, that just print what they receive. + 2.times do + EM.connect('127.0.0.1', 8000) do |c| + c.extend EM::P::LineText2 + def c.receive_line(line) + puts "Subscriber: #{signature} got #{line}" + end + EM.add_timer(2) { c.close_connection } + end + end + + # This part of the example is more fake, but imagine sleep was in fact a + # long running calculation to achieve the value. + 40.times do + EM.defer lambda { v = sleep(rand * 2); RandChannel << [Time.now, v] } + end + + EM.add_timer(5) { EM.stop } +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_queue.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_queue.rb new file mode 100644 index 0000000000..761ea76436 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_queue.rb @@ -0,0 +1,2 @@ +require File.dirname(__FILE__) + '/helper' + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_array.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_array.rb new file mode 100644 index 0000000000..81b0ae3e8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_array.rb @@ -0,0 +1,15 @@ +require File.dirname(__FILE__) + '/helper' + +EM.run do + array = (1..100).to_a + + tickloop = EM.tick_loop do + if array.empty? + :stop + else + puts array.shift + end + end + + tickloop.on_stop { EM.stop } +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_counter.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_counter.rb new file mode 100644 index 0000000000..58e51ffd63 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/ex_tick_loop_counter.rb @@ -0,0 +1,32 @@ +require File.dirname(__FILE__) + '/helper' + +class TickCounter + attr_reader :start_time, :count + + def initialize + reset + @tick_loop = EM.tick_loop(method(:tick)) + end + + def reset + @count = 0 + @start_time = EM.current_time + end + + def tick + @count += 1 + end + + def rate + @count / (EM.current_time - @start_time) + end +end + +period = 5 +EM.run do + counter = TickCounter.new + EM.add_periodic_timer(period) do + puts "Ticks per second: #{counter.rate} (mean of last #{period}s)" + counter.reset + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/helper.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/helper.rb new file mode 100644 index 0000000000..835ded27da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/examples/old/helper.rb @@ -0,0 +1,2 @@ +$:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib') +require 'eventmachine' \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/.sitearchdir.time b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/.sitearchdir.time new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/Makefile b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/Makefile new file mode 100644 index 0000000000..75403aba2f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/Makefile @@ -0,0 +1,263 @@ + +SHELL = /bin/sh + +# V=0 quiet, V=1 verbose. other values don't work. +V = 0 +Q1 = $(V:1=) +Q = $(Q1:0=@) +ECHO1 = $(V:1=@ :) +ECHO = $(ECHO1:0=@ echo) +NULLCMD = : + +#### Start of system configuration section. #### + +srcdir = . +topdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 +hdrdir = $(topdir) +arch_hdrdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux +PATH_SEPARATOR = : +VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby +prefix = $(DESTDIR)/home/travis/.rvm/rubies/ruby-2.5.3 +rubysitearchprefix = $(rubylibprefix)/$(sitearch) +rubyarchprefix = $(rubylibprefix)/$(arch) +rubylibprefix = $(libdir)/$(RUBY_BASE_NAME) +exec_prefix = $(prefix) +vendorarchhdrdir = $(vendorhdrdir)/$(sitearch) +sitearchhdrdir = $(sitehdrdir)/$(sitearch) +rubyarchhdrdir = $(rubyhdrdir)/$(arch) +vendorhdrdir = $(rubyhdrdir)/vendor_ruby +sitehdrdir = $(rubyhdrdir)/site_ruby +rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME) +vendorarchdir = $(vendorlibdir)/$(sitearch) +vendorlibdir = $(vendordir)/$(ruby_version) +vendordir = $(rubylibprefix)/vendor_ruby +sitearchdir = $(DESTDIR)./.gem.20200317-4716-545lnv +sitelibdir = $(DESTDIR)./.gem.20200317-4716-545lnv +sitedir = $(rubylibprefix)/site_ruby +rubyarchdir = $(rubylibdir)/$(arch) +rubylibdir = $(rubylibprefix)/$(ruby_version) +sitearchincludedir = $(includedir)/$(sitearch) +archincludedir = $(includedir)/$(arch) +sitearchlibdir = $(libdir)/$(sitearch) +archlibdir = $(libdir)/$(arch) +ridir = $(datarootdir)/$(RI_BASE_NAME) +mandir = $(datarootdir)/man +localedir = $(datarootdir)/locale +libdir = $(exec_prefix)/lib +psdir = $(docdir) +pdfdir = $(docdir) +dvidir = $(docdir) +htmldir = $(docdir) +infodir = $(datarootdir)/info +docdir = $(datarootdir)/doc/$(PACKAGE) +oldincludedir = $(DESTDIR)/usr/include +includedir = $(prefix)/include +localstatedir = $(prefix)/var +sharedstatedir = $(prefix)/com +sysconfdir = $(DESTDIR)/etc +datadir = $(datarootdir) +datarootdir = $(prefix)/share +libexecdir = $(exec_prefix)/libexec +sbindir = $(exec_prefix)/sbin +bindir = $(exec_prefix)/bin +archdir = $(rubyarchdir) + + +CC = gcc +CXX = g++ +LIBRUBY = $(LIBRUBY_SO) +LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a +LIBRUBYARG_SHARED = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME) +LIBRUBYARG_STATIC = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME)-static +empty = +OUTFLAG = -o $(empty) +COUTFLAG = -o $(empty) +CSRCFLAG = $(empty) + +RUBY_EXTCONF_H = +cflags = $(optflags) $(debugflags) $(warnflags) +cxxflags = $(optflags) $(debugflags) $(warnflags) +optflags = -O3 +debugflags = -ggdb3 +warnflags = -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized +CCDLFLAGS = -fPIC +CFLAGS = $(CCDLFLAGS) $(cflags) -fPIC $(ARCH_FLAG) +INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir) +DEFS = +CPPFLAGS = -DHAVE_OPENSSL_SSL_H -DHAVE_OPENSSL_ERR_H -DWITH_SSL -DBUILD_FOR_RUBY -DHAVE_RB_THREAD_CALL_WITHOUT_GVL -DHAVE_RB_THREAD_FD_SELECT -DHAVE_TYPE_RB_FDSET_T -DHAVE_RB_WAIT_FOR_SINGLE_FD -DHAVE_RB_TIME_NEW -DHAVE_INOTIFY_INIT -DHAVE_INOTIFY -DHAVE_WRITEV -DHAVE_PIPE2 -DHAVE_ACCEPT4 -DHAVE_CONST_SOCK_CLOEXEC -DOS_UNIX -DHAVE_EPOLL_CREATE -DHAVE_EPOLL -DHAVE_CLOCK_GETTIME -DHAVE_CONST_CLOCK_MONOTONIC_RAW -DHAVE_CONST_CLOCK_MONOTONIC -DHAVE_MAKE_PAIR $(DEFS) $(cppflags) +CXXFLAGS = $(CCDLFLAGS) $(cxxflags) $(ARCH_FLAG) +ldflags = -L. -fstack-protector -rdynamic -Wl,-export-dynamic +dldflags = -Wl,--compress-debug-sections=zlib +ARCH_FLAG = +DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG) +LDSHARED = $(CXX) -shared +LDSHAREDXX = $(CXX) -shared +AR = ar +EXEEXT = + +RUBY_INSTALL_NAME = $(RUBY_BASE_NAME) +RUBY_SO_NAME = ruby +RUBYW_INSTALL_NAME = +RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version) +RUBYW_BASE_NAME = rubyw +RUBY_BASE_NAME = ruby + +arch = x86_64-linux +sitearch = $(arch) +ruby_version = 2.5.0 +ruby = $(bindir)/$(RUBY_BASE_NAME) +RUBY = $(ruby) +ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h + +RM = rm -f +RM_RF = $(RUBY) -run -e rm -- -rf +RMDIRS = rmdir --ignore-fail-on-non-empty -p +MAKEDIRS = /bin/mkdir -p +INSTALL = /usr/bin/install +INSTALL_PROG = $(INSTALL) -m 0755 +INSTALL_DATA = $(INSTALL) -m 644 +COPY = cp +TOUCH = exit > + +#### End of system configuration section. #### + +preload = +libpath = . $(libdir) +LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir) +DEFFILE = + +CLEANFILES = mkmf.log +DISTCLEANFILES = +DISTCLEANDIRS = + +extout = +extout_prefix = +target_prefix = +LOCAL_LIBS = +LIBS = $(LIBRUBYARG_SHARED) -lssl -lcrypto -lcrypto -lssl -lpthread -ldl -lcrypt -lm -lc +ORIG_SRCS = binder.cpp cmain.cpp ed.cpp em.cpp kb.cpp page.cpp pipe.cpp rubymain.cpp ssl.cpp +SRCS = $(ORIG_SRCS) +OBJS = binder.o cmain.o ed.o em.o kb.o page.o pipe.o rubymain.o ssl.o +HDRS = $(srcdir)/binder.h $(srcdir)/project.h $(srcdir)/em.h $(srcdir)/ed.h $(srcdir)/page.h $(srcdir)/eventmachine.h $(srcdir)/ssl.h +LOCAL_HDRS = +TARGET = rubyeventmachine +TARGET_NAME = rubyeventmachine +TARGET_ENTRY = Init_$(TARGET_NAME) +DLLIB = $(TARGET).so +EXTSTATIC = +STATIC_LIB = + +TIMESTAMP_DIR = . +BINDIR = $(bindir) +RUBYCOMMONDIR = $(sitedir)$(target_prefix) +RUBYLIBDIR = $(sitelibdir)$(target_prefix) +RUBYARCHDIR = $(sitearchdir)$(target_prefix) +HDRDIR = $(rubyhdrdir)/ruby$(target_prefix) +ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix) +TARGET_SO_DIR = +TARGET_SO = $(TARGET_SO_DIR)$(DLLIB) +CLEANLIBS = $(TARGET_SO) +CLEANOBJS = *.o *.bak + +all: $(DLLIB) +static: $(STATIC_LIB) +.PHONY: all install static install-so install-rb +.PHONY: clean clean-so clean-static clean-rb + +clean-static:: +clean-rb-default:: +clean-rb:: +clean-so:: +clean: clean-so clean-static clean-rb-default clean-rb + -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time + +distclean-rb-default:: +distclean-rb:: +distclean-so:: +distclean-static:: +distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb + -$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log + -$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES) + -$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true + +realclean: distclean +install: install-so install-rb + +install-so: $(DLLIB) $(TIMESTAMP_DIR)/.sitearchdir.time + $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR) +clean-static:: + -$(Q)$(RM) $(STATIC_LIB) +install-rb: pre-install-rb do-install-rb install-rb-default +install-rb-default: pre-install-rb-default do-install-rb-default +pre-install-rb: Makefile +pre-install-rb-default: Makefile +do-install-rb: +do-install-rb-default: +pre-install-rb-default: + @$(NULLCMD) +$(TIMESTAMP_DIR)/.sitearchdir.time: + $(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR) + $(Q) $(TOUCH) $@ + +site-install: site-install-so site-install-rb +site-install-so: install-so +site-install-rb: install-rb + +.SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S + +.cc.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cc.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.mm.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.mm.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cxx.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cxx.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cpp.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cpp.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.c.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.c.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.m.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.m.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +$(TARGET_SO): $(OBJS) Makefile + $(ECHO) linking shared-object $(DLLIB) + -$(Q)$(RM) $(@) + $(Q) $(LDSHAREDXX) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS) + + + +$(OBJS): $(HDRS) $(ruby_headers) diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.cpp new file mode 100644 index 0000000000..5b90876e58 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.cpp @@ -0,0 +1,124 @@ +/***************************************************************************** + +$Id$ + +File: binder.cpp +Date: 07Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" + +#define DEV_URANDOM "/dev/urandom" + + +std::map Bindable_t::BindingBag; + + +/******************************** +STATIC Bindable_t::CreateBinding +********************************/ + +uintptr_t Bindable_t::CreateBinding() +{ + static uintptr_t num = 0; + while(BindingBag[++num]) {} + return num; +} + +#if 0 +string Bindable_t::CreateBinding() +{ + static int index = 0; + static string seed; + + if ((index >= 1000000) || (seed.length() == 0)) { + #ifdef OS_UNIX + int fd = open (DEV_URANDOM, O_RDONLY); + if (fd < 0) + throw std::runtime_error ("No entropy device"); + + unsigned char u[16]; + size_t r = read (fd, u, sizeof(u)); + if (r < sizeof(u)) + throw std::runtime_error ("Unable to read entropy device"); + + unsigned char *u1 = (unsigned char*)u; + char u2 [sizeof(u) * 2 + 1]; + + for (size_t i=0; i < sizeof(u); i++) + sprintf (u2 + (i * 2), "%02x", u1[i]); + + seed = string (u2); + #endif + + + #ifdef OS_WIN32 + UUID uuid; + UuidCreate (&uuid); + unsigned char *uuidstring = NULL; + UuidToString (&uuid, &uuidstring); + if (!uuidstring) + throw std::runtime_error ("Unable to read uuid"); + seed = string ((const char*)uuidstring); + + RpcStringFree (&uuidstring); + #endif + + index = 0; + + + } + + stringstream ss; + ss << seed << (++index); + return ss.str(); +} +#endif + +/***************************** +STATIC: Bindable_t::GetObject +*****************************/ + +Bindable_t *Bindable_t::GetObject (const uintptr_t binding) +{ + std::map::const_iterator i = BindingBag.find (binding); + if (i != BindingBag.end()) + return i->second; + else + return NULL; +} + + +/********************** +Bindable_t::Bindable_t +**********************/ + +Bindable_t::Bindable_t() +{ + Binding = Bindable_t::CreateBinding(); + BindingBag [Binding] = this; +} + + + +/*********************** +Bindable_t::~Bindable_t +***********************/ + +Bindable_t::~Bindable_t() NO_EXCEPT_FALSE +{ + BindingBag.erase (Binding); +} + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.h new file mode 100644 index 0000000000..dd32c8d4a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.h @@ -0,0 +1,52 @@ +/***************************************************************************** + +$Id$ + +File: binder.h +Date: 07Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#ifndef __ObjectBindings__H_ +#define __ObjectBindings__H_ + + +#if __cplusplus >= 201103L +#define NO_EXCEPT_FALSE noexcept(false) +#else +#define NO_EXCEPT_FALSE +#endif + +class Bindable_t +{ + public: + static uintptr_t CreateBinding(); + static Bindable_t *GetObject (const uintptr_t); + static std::map BindingBag; + + public: + Bindable_t(); + virtual ~Bindable_t() NO_EXCEPT_FALSE; + + const uintptr_t GetBinding() {return Binding;} + + private: + uintptr_t Binding; +}; + + + + + +#endif // __ObjectBindings__H_ + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/binder.o new file mode 100644 index 0000000000000000000000000000000000000000..1307856b72e3b7e211250f8b5342aba086df2d63 GIT binary patch literal 1364112 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�)bestk85JGz(khOj~cXtisnyb)CI5;6lQeAK( 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¯AHVMZ0-y`xDhru;u}|<~*V@D%%Ve{f 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%0D5oW*)PEKGV9kdR%HZ0i# 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.cpp new file mode 100644 index 0000000000..f58c2cde41 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.cpp @@ -0,0 +1,988 @@ +/***************************************************************************** + +$Id$ + +File: cmain.cpp +Date: 06Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" + +/* 21Sep09: ruby 1.9 defines macros for common i/o functions that point to rb_w32_* implementations. + We need to undef the stat to fix a build failure in evma_send_file_data_to_connection. + See http://groups.google.com/group/eventmachine/browse_thread/thread/fc60d9bb738ffc71 +*/ +#if defined(BUILD_FOR_RUBY) && defined(OS_WIN32) +#undef stat +#undef fstat +#endif + +static EventMachine_t *EventMachine; +static Poller_t Poller = Poller_Default; + +extern "C" void ensure_eventmachine (const char *caller = "unknown caller") +{ + if (!EventMachine) { + const int err_size = 128; + char err_string[err_size]; + snprintf (err_string, err_size, "eventmachine not initialized: %s", caller); + #ifdef BUILD_FOR_RUBY + rb_raise(rb_eRuntimeError, "%s", err_string); + #else + throw std::runtime_error (err_string); + #endif + } +} + +/*********************** +evma_initialize_library +***********************/ + +extern "C" void evma_initialize_library (EMCallback cb) +{ + if (EventMachine) + #ifdef BUILD_FOR_RUBY + rb_raise(rb_eRuntimeError, "eventmachine already initialized: evma_initialize_library"); + #else + throw std::runtime_error ("eventmachine already initialized: evma_initialize_library"); + #endif + + EventMachine = new EventMachine_t (cb, Poller); +} + + +/******************** +evma_release_library +********************/ + +extern "C" void evma_release_library() +{ + ensure_eventmachine("evma_release_library"); + delete EventMachine; + EventMachine = NULL; +} + + +/********************* +evma_run_machine_once +*********************/ + +extern "C" bool evma_run_machine_once() +{ + ensure_eventmachine("evma_run_machine_once"); + return EventMachine->RunOnce(); +} + + +/**************** +evma_run_machine +****************/ + +extern "C" void evma_run_machine() +{ + ensure_eventmachine("evma_run_machine"); + EventMachine->Run(); +} + + +/************************** +evma_install_oneshot_timer +**************************/ + +extern "C" const uintptr_t evma_install_oneshot_timer (uint64_t milliseconds) +{ + ensure_eventmachine("evma_install_oneshot_timer"); + return EventMachine->InstallOneshotTimer (milliseconds); +} + + +/********************** +evma_connect_to_server +**********************/ + +extern "C" const uintptr_t evma_connect_to_server (const char *bind_addr, int bind_port, const char *server, int port) +{ + ensure_eventmachine("evma_connect_to_server"); + return EventMachine->ConnectToServer (bind_addr, bind_port, server, port); +} + +/*************************** +evma_connect_to_unix_server +***************************/ + +extern "C" const uintptr_t evma_connect_to_unix_server (const char *server) +{ + ensure_eventmachine("evma_connect_to_unix_server"); + return EventMachine->ConnectToUnixServer (server); +} + +/************** +evma_attach_fd +**************/ + +extern "C" const uintptr_t evma_attach_fd (int file_descriptor, int watch_mode) +{ + ensure_eventmachine("evma_attach_fd"); + return EventMachine->AttachFD (file_descriptor, watch_mode ? true : false); +} + +/************** +evma_detach_fd +**************/ + +extern "C" int evma_detach_fd (const uintptr_t binding) +{ + ensure_eventmachine("evma_detach_fd"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return EventMachine->DetachFD (ed); + else + #ifdef BUILD_FOR_RUBY + rb_raise(rb_eRuntimeError, "invalid binding to detach"); + #else + throw std::runtime_error ("invalid binding to detach"); + #endif + return -1; +} + +/************************ +evma_get_file_descriptor +************************/ + +extern "C" int evma_get_file_descriptor (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_file_descriptor"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetSocket(); + else + #ifdef BUILD_FOR_RUBY + rb_raise(rb_eRuntimeError, "invalid binding to get_fd"); + #else + throw std::runtime_error ("invalid binding to get_fd"); + #endif + return -1; +} + +/*********************** +evma_is_notify_readable +***********************/ + +extern "C" int evma_is_notify_readable (const uintptr_t binding) +{ + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + return cd->IsNotifyReadable() ? 1 : 0; + return -1; +} + +/************************ +evma_set_notify_readable +************************/ + +extern "C" void evma_set_notify_readable (const uintptr_t binding, int mode) +{ + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + cd->SetNotifyReadable (mode ? true : false); +} + +/*********************** +evma_is_notify_writable +***********************/ + +extern "C" int evma_is_notify_writable (const uintptr_t binding) +{ + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + return cd->IsNotifyWritable() ? 1 : 0; + return -1; +} + +/************************ +evma_set_notify_writable +************************/ + +extern "C" void evma_set_notify_writable (const uintptr_t binding, int mode) +{ + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + cd->SetNotifyWritable (mode ? true : false); +} + +/********** +evma_pause +**********/ + +extern "C" int evma_pause (const uintptr_t binding) +{ + EventableDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + return cd->Pause() ? 1 : 0; + + return 0; +} + +/*********** +evma_resume +***********/ + +extern "C" int evma_resume (const uintptr_t binding) +{ + EventableDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + return cd->Resume() ? 1 : 0; + + return 0; +} + +/************** +evma_is_paused +**************/ + +extern "C" int evma_is_paused (const uintptr_t binding) +{ + EventableDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + return cd->IsPaused() ? 1 : 0; + + return 0; +} + +/************************ +evma_num_close_scheduled +************************/ + +extern "C" int evma_num_close_scheduled () +{ + ensure_eventmachine("evma_num_close_scheduled"); + return EventMachine->NumCloseScheduled; +} + +/********************** +evma_create_tcp_server +**********************/ + +extern "C" const uintptr_t evma_create_tcp_server (const char *address, int port) +{ + ensure_eventmachine("evma_create_tcp_server"); + return EventMachine->CreateTcpServer (address, port); +} + +/****************************** +evma_create_unix_domain_server +******************************/ + +extern "C" const uintptr_t evma_create_unix_domain_server (const char *filename) +{ + ensure_eventmachine("evma_create_unix_domain_server"); + return EventMachine->CreateUnixDomainServer (filename); +} + +/*********************** +evma_attach_sd +************************/ + +extern "C" const uintptr_t evma_attach_sd (int sd) +{ + ensure_eventmachine("evma_attach_sd"); + return EventMachine->AttachSD (sd); +} + +/************************* +evma_open_datagram_socket +*************************/ + +extern "C" const uintptr_t evma_open_datagram_socket (const char *address, int port) +{ + ensure_eventmachine("evma_open_datagram_socket"); + return EventMachine->OpenDatagramSocket (address, port); +} + +/****************** +evma_open_keyboard +******************/ + +extern "C" const uintptr_t evma_open_keyboard() +{ + ensure_eventmachine("evma_open_keyboard"); + return EventMachine->OpenKeyboard(); +} + +/******************* +evma_watch_filename +*******************/ + +extern "C" const uintptr_t evma_watch_filename (const char *fname) +{ + ensure_eventmachine("evma_watch_filename"); + return EventMachine->WatchFile(fname); +} + +/********************* +evma_unwatch_filename +*********************/ + +extern "C" void evma_unwatch_filename (const uintptr_t sig) +{ + ensure_eventmachine("evma_unwatch_file"); + EventMachine->UnwatchFile(sig); +} + +/************** +evma_watch_pid +**************/ + +extern "C" const uintptr_t evma_watch_pid (int pid) +{ + ensure_eventmachine("evma_watch_pid"); + return EventMachine->WatchPid(pid); +} + +/**************** +evma_unwatch_pid +****************/ + +extern "C" void evma_unwatch_pid (const uintptr_t sig) +{ + ensure_eventmachine("evma_unwatch_pid"); + EventMachine->UnwatchPid(sig); +} + +/**************************** +evma_send_data_to_connection +****************************/ + +extern "C" int evma_send_data_to_connection (const uintptr_t binding, const char *data, int data_length) +{ + ensure_eventmachine("evma_send_data_to_connection"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->SendOutboundData(data, data_length); + return -1; +} + +/****************** +evma_send_datagram +******************/ + +extern "C" int evma_send_datagram (const uintptr_t binding, const char *data, int data_length, const char *address, int port) +{ + ensure_eventmachine("evma_send_datagram"); + DatagramDescriptor *dd = dynamic_cast (Bindable_t::GetObject (binding)); + if (dd) + return dd->SendOutboundDatagram(data, data_length, address, port); + return -1; +} + + +/********************* +evma_close_connection +*********************/ + +extern "C" void evma_close_connection (const uintptr_t binding, int after_writing) +{ + ensure_eventmachine("evma_close_connection"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + ed->ScheduleClose (after_writing ? true : false); +} + +/*********************************** +evma_report_connection_error_status +***********************************/ + +extern "C" int evma_report_connection_error_status (const uintptr_t binding) +{ + ensure_eventmachine("evma_report_connection_error_status"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->ReportErrorStatus(); + return -1; +} + +/******************** +evma_stop_tcp_server +********************/ + +extern "C" void evma_stop_tcp_server (const uintptr_t binding) +{ + ensure_eventmachine("evma_stop_tcp_server"); + AcceptorDescriptor::StopAcceptor (binding); +} + + +/***************** +evma_stop_machine +*****************/ + +extern "C" void evma_stop_machine() +{ + ensure_eventmachine("evma_stop_machine"); + EventMachine->ScheduleHalt(); +} + +/***************** +evma_stopping +*****************/ + +extern "C" bool evma_stopping() +{ + ensure_eventmachine("evma_stopping"); + return EventMachine->Stopping(); +} + +/************** +evma_start_tls +**************/ + +extern "C" void evma_start_tls (const uintptr_t binding) +{ + ensure_eventmachine("evma_start_tls"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + ed->StartTls(); +} + +/****************** +evma_set_tls_parms +******************/ + +extern "C" void evma_set_tls_parms (const uintptr_t binding, const char *privatekey_filename, const char *certchain_filename, int verify_peer, int fail_if_no_peer_cert, const char *sni_hostname, const char *cipherlist, const char *ecdh_curve, const char *dhparam, int ssl_version) +{ + ensure_eventmachine("evma_set_tls_parms"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + ed->SetTlsParms (privatekey_filename, certchain_filename, (verify_peer == 1 ? true : false), (fail_if_no_peer_cert == 1 ? true : false), sni_hostname, cipherlist, ecdh_curve, dhparam, ssl_version); +} + +/****************** +evma_get_peer_cert +******************/ + +#ifdef WITH_SSL +extern "C" X509 *evma_get_peer_cert (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_peer_cert"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetPeerCert(); + return NULL; +} +#endif + +/****************** +evma_get_cipher_bits +******************/ + +#ifdef WITH_SSL +extern "C" int evma_get_cipher_bits (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_cipher_bits"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetCipherBits(); + return -1; +} +#endif + +/****************** +evma_get_cipher_name +******************/ + +#ifdef WITH_SSL +extern "C" const char *evma_get_cipher_name (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_cipher_name"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetCipherName(); + return NULL; +} +#endif + +/****************** +evma_get_cipher_protocol +******************/ + +#ifdef WITH_SSL +extern "C" const char *evma_get_cipher_protocol (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_cipher_protocol"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetCipherProtocol(); + return NULL; +} +#endif + +/****************** +evma_get_sni_hostname +******************/ + +#ifdef WITH_SSL +extern "C" const char *evma_get_sni_hostname (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_sni_hostname"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) + return ed->GetSNIHostname(); + return NULL; +} +#endif + +/******************** +evma_accept_ssl_peer +********************/ + +#ifdef WITH_SSL +extern "C" void evma_accept_ssl_peer (const uintptr_t binding) +{ + ensure_eventmachine("evma_accept_ssl_peer"); + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject (binding)); + if (cd) + cd->AcceptSslPeer(); +} +#endif + +/***************** +evma_get_peername +*****************/ + +extern "C" int evma_get_peername (const uintptr_t binding, struct sockaddr *sa, socklen_t *len) +{ + ensure_eventmachine("evma_get_peername"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ed->GetPeername (sa, len) ? 1 : 0; + } + else + return 0; +} + +/***************** +evma_get_sockname +*****************/ + +extern "C" int evma_get_sockname (const uintptr_t binding, struct sockaddr *sa, socklen_t *len) +{ + ensure_eventmachine("evma_get_sockname"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ed->GetSockname (sa, len) ? 1 : 0; + } + else + return 0; +} + +/*********************** +evma_get_subprocess_pid +***********************/ + +#ifdef OS_UNIX +extern "C" int evma_get_subprocess_pid (const uintptr_t binding, pid_t *pid) +{ + ensure_eventmachine("evma_get_subprocess_pid"); + PipeDescriptor *pd = dynamic_cast (Bindable_t::GetObject (binding)); + if (pd) { + return pd->GetSubprocessPid (pid) ? 1 : 0; + } + else if (pid && EventMachine->SubprocessPid) { + *pid = EventMachine->SubprocessPid; + return 1; + } + else + return 0; +} +#else +extern "C" int evma_get_subprocess_pid (const uintptr_t binding UNUSED, pid_t *pid UNUSED) +{ + return 0; +} +#endif + +/************************** +evma_get_subprocess_status +**************************/ + +extern "C" int evma_get_subprocess_status (const uintptr_t binding UNUSED, int *status) +{ + ensure_eventmachine("evma_get_subprocess_status"); + if (status) { + *status = EventMachine->SubprocessExitStatus; + return 1; + } + else + return 0; +} + +/************************* +evma_get_connection_count +*************************/ + +extern "C" int evma_get_connection_count() +{ + ensure_eventmachine("evma_get_connection_count"); + return EventMachine->GetConnectionCount(); +} + +/********************* +evma_signal_loopbreak +*********************/ + +extern "C" void evma_signal_loopbreak() +{ + ensure_eventmachine("evma_signal_loopbreak"); + EventMachine->SignalLoopBreaker(); +} + + + +/******************************** +evma_get_comm_inactivity_timeout +********************************/ + +extern "C" float evma_get_comm_inactivity_timeout (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_comm_inactivity_timeout"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ((float)ed->GetCommInactivityTimeout() / 1000); + } + else + return 0.0; //Perhaps this should be an exception. Access to an unknown binding. +} + +/******************************** +evma_set_comm_inactivity_timeout +********************************/ + +extern "C" int evma_set_comm_inactivity_timeout (const uintptr_t binding, float value) +{ + ensure_eventmachine("evma_set_comm_inactivity_timeout"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ed->SetCommInactivityTimeout ((uint64_t)(value * 1000)); + } + else + return 0; //Perhaps this should be an exception. Access to an unknown binding. +} + + +/******************************** +evma_get_pending_connect_timeout +********************************/ + +extern "C" float evma_get_pending_connect_timeout (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_pending_connect_timeout"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ((float)ed->GetPendingConnectTimeout() / 1000); + } + else + return 0.0; +} + + +/******************************** +evma_set_pending_connect_timeout +********************************/ + +extern "C" int evma_set_pending_connect_timeout (const uintptr_t binding, float value) +{ + ensure_eventmachine("evma_set_pending_connect_timeout"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + if (ed) { + return ed->SetPendingConnectTimeout ((uint64_t)(value * 1000)); + } + else + return 0; +} + + +/********************** +evma_set_timer_quantum +**********************/ + +extern "C" void evma_set_timer_quantum (int interval) +{ + ensure_eventmachine("evma_set_timer_quantum"); + EventMachine->SetTimerQuantum (interval); +} + + +/************************ +evma_get_max_timer_count +************************/ + +extern "C" int evma_get_max_timer_count() +{ + return EventMachine_t::GetMaxTimerCount(); +} + +/************************ +evma_set_max_timer_count +************************/ + +extern "C" void evma_set_max_timer_count (int ct) +{ + // This may only be called if the reactor is not running. + + if (EventMachine) + #ifdef BUILD_FOR_RUBY + rb_raise(rb_eRuntimeError, "eventmachine already initialized: evma_set_max_timer_count"); + #else + throw std::runtime_error ("eventmachine already initialized: evma_set_max_timer_count"); + #endif + EventMachine_t::SetMaxTimerCount (ct); +} + +/****************** +evma_get/set_simultaneous_accept_count +******************/ + +extern "C" void evma_set_simultaneous_accept_count (int count) +{ + EventMachine_t::SetSimultaneousAcceptCount(count); +} + +extern "C" int evma_get_simultaneous_accept_count() +{ + return EventMachine_t::GetSimultaneousAcceptCount(); +} + + +/****************** +evma_setuid_string +******************/ + +extern "C" void evma_setuid_string (const char *username) +{ + // We do NOT need to be running an EM instance because this method is static. + EventMachine_t::SetuidString (username); +} + + +/********** +evma_popen +**********/ + +extern "C" const uintptr_t evma_popen (char * const*cmd_strings) +{ + ensure_eventmachine("evma_popen"); + return EventMachine->Socketpair (cmd_strings); +} + + +/*************************** +evma_get_outbound_data_size +***************************/ + +extern "C" int evma_get_outbound_data_size (const uintptr_t binding) +{ + ensure_eventmachine("evma_get_outbound_data_size"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (binding)); + return ed ? ed->GetOutboundDataSize() : 0; +} + + +/************** +evma_set_epoll +**************/ + +extern "C" void evma_set_epoll (int use) +{ + if (use) + Poller = Poller_Epoll; + else + Poller = Poller_Default; +} + +/*************** +evma_set_kqueue +***************/ + +extern "C" void evma_set_kqueue (int use) +{ + if (use) + Poller = Poller_Kqueue; + else + Poller = Poller_Default; +} + + +/********************** +evma_set_rlimit_nofile +**********************/ + +extern "C" int evma_set_rlimit_nofile (int nofiles) +{ + return EventMachine_t::SetRlimitNofile (nofiles); +} + + +/********************************* +evma_send_file_data_to_connection +*********************************/ + +extern "C" int evma_send_file_data_to_connection (const uintptr_t binding, const char *filename) +{ + /* This is a sugaring over send_data_to_connection that reads a file into a + * locally-allocated buffer, and sends the file data to the remote peer. + * Return the number of bytes written to the caller. + * TODO, needs to impose a limit on the file size. This is intended only for + * small files. (I don't know, maybe 8K or less.) For larger files, use interleaved + * I/O to avoid slowing the rest of the system down. + * TODO: we should return a code rather than barf, in case of file-not-found. + * TODO, does this compile on Windows? + * TODO, given that we want this to work only with small files, how about allocating + * the buffer on the stack rather than the heap? + * + * Modified 25Jul07. This now returns -1 on file-too-large; 0 for success, and a positive + * errno in case of other errors. + * + * Contributed by Kirk Haines. + */ + + char data[32*1024]; + int r; + + ensure_eventmachine("evma_send_file_data_to_connection"); + +#if defined(OS_WIN32) + int Fd = open (filename, O_RDONLY|O_BINARY); +#else + int Fd = open (filename, O_RDONLY); +#endif + if (Fd < 0) + return errno; + // From here on, all early returns MUST close Fd. + + struct stat st; + if (fstat (Fd, &st)) { + int e = errno; + close (Fd); + return e; + } + + off_t filesize = st.st_size; + if (filesize <= 0) { + close (Fd); + return 0; + } + else if (filesize > (off_t) sizeof(data)) { + close (Fd); + return -1; + } + + r = read (Fd, data, filesize); + if (r != filesize) { + int e = errno; + close (Fd); + return e; + } + evma_send_data_to_connection (binding, data, r); + close (Fd); + + return 0; +} + + +/**************** +evma_start_proxy +*****************/ + +extern "C" void evma_start_proxy (const uintptr_t from, const uintptr_t to, const unsigned long bufsize, const unsigned long length) +{ + ensure_eventmachine("evma_start_proxy"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (from)); + if (ed) + ed->StartProxy(to, bufsize, length); +} + + +/*************** +evma_stop_proxy +****************/ + +extern "C" void evma_stop_proxy (const uintptr_t from) +{ + ensure_eventmachine("evma_stop_proxy"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (from)); + if (ed) + ed->StopProxy(); +} + +/****************** +evma_proxied_bytes +*******************/ + +extern "C" unsigned long evma_proxied_bytes (const uintptr_t from) +{ + ensure_eventmachine("evma_proxied_bytes"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (from)); + if (ed) + return ed->GetProxiedBytes(); + else + return 0; +} + + +/*************************** +evma_get_last_activity_time +****************************/ + +extern "C" uint64_t evma_get_last_activity_time(const uintptr_t from) +{ + ensure_eventmachine("evma_get_last_activity_time"); + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (from)); + if (ed) + return ed->GetLastActivity(); + else + return 0; +} + + +/*************************** +evma_get_heartbeat_interval +****************************/ + +extern "C" float evma_get_heartbeat_interval() +{ + ensure_eventmachine("evma_get_heartbeat_interval"); + return EventMachine->GetHeartbeatInterval(); +} + + +/*************************** +evma_set_heartbeat_interval +****************************/ + +extern "C" int evma_set_heartbeat_interval(float interval) +{ + ensure_eventmachine("evma_set_heartbeat_interval"); + return EventMachine->SetHeartbeatInterval(interval); +} + + +/************************** +evma_get_current_loop_time +***************************/ + +extern "C" uint64_t evma_get_current_loop_time() +{ + ensure_eventmachine("evma_get_current_loop_time"); + return EventMachine->GetCurrentLoopTime(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/cmain.o new file mode 100644 index 0000000000000000000000000000000000000000..868b583a3ae0ffb75e7f0d6dda2d602c49df2cc1 GIT binary patch literal 1346048 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

              Nc+qSylJ(T!p+Rt1xn> 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
              3bHEb?;icO+DqNIRkxKeJdi*vJ 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

              Du%9?&jv|NhAzg%P#OR@7U(@zSOa& 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 J_2#eS{~s4|zPtbc literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.cpp new file mode 100644 index 0000000000..a469dff045 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.cpp @@ -0,0 +1,2096 @@ +/***************************************************************************** + +$Id$ + +File: ed.cpp +Date: 06Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" + + + +/******************** +SetSocketNonblocking +********************/ + +bool SetSocketNonblocking (SOCKET sd) +{ + #ifdef OS_UNIX + int val = fcntl (sd, F_GETFL, 0); + return (fcntl (sd, F_SETFL, val | O_NONBLOCK) != SOCKET_ERROR) ? true : false; + #endif + + #ifdef OS_WIN32 + #ifdef BUILD_FOR_RUBY + // 14Jun09 Ruby provides its own wrappers for ioctlsocket. On 1.8 this is a simple wrapper, + // however, 1.9 keeps its own state about the socket. + // NOTE: F_GETFL is not supported + return (fcntl (sd, F_SETFL, O_NONBLOCK) == 0) ? true : false; + #else + unsigned long one = 1; + return (ioctlsocket (sd, FIONBIO, &one) == 0) ? true : false; + #endif + #endif +} + +/************ +SetFdCloexec +************/ + +#ifdef OS_UNIX +bool SetFdCloexec (int fd) +{ + int flags = fcntl(fd, F_GETFD, 0); + assert (flags >= 0); + flags |= FD_CLOEXEC; + return (fcntl(fd, F_SETFD, FD_CLOEXEC) == 0) ? true : false; +} +#else +bool SetFdCloexec (int fd UNUSED) +{ + return true; +} +#endif + +/**************************************** +EventableDescriptor::EventableDescriptor +****************************************/ + +EventableDescriptor::EventableDescriptor (SOCKET sd, EventMachine_t *em): + bCloseNow (false), + bCloseAfterWriting (false), + MySocket (sd), + bAttached (false), + bWatchOnly (false), + EventCallback (NULL), + bCallbackUnbind (true), + UnbindReasonCode (0), + ProxyTarget(NULL), + ProxiedFrom(NULL), + ProxiedBytes(0), + MaxOutboundBufSize(0), + MyEventMachine (em), + PendingConnectTimeout(20000000), + InactivityTimeout (0), + NextHeartbeat (0), + bPaused (false) +{ + /* There are three ways to close a socket, all of which should + * automatically signal to the event machine that this object + * should be removed from the polling scheduler. + * First is a hard close, intended for bad errors or possible + * security violations. It immediately closes the connection + * and puts this object into an error state. + * Second is to set bCloseNow, which will cause the event machine + * to delete this object (and thus close the connection in our + * destructor) the next chance it gets. bCloseNow also inhibits + * the writing of new data on the socket (but not necessarily + * the reading of new data). + * The third way is to set bCloseAfterWriting, which inhibits + * the writing of new data and converts to bCloseNow as soon + * as everything in the outbound queue has been written. + * bCloseAfterWriting is really for use only by protocol handlers + * (for example, HTTP writes an HTML page and then closes the + * connection). All of the error states we generate internally + * cause an immediate close to be scheduled, which may have the + * effect of discarding outbound data. + */ + + if (sd == INVALID_SOCKET) + throw std::runtime_error ("bad eventable descriptor"); + if (MyEventMachine == NULL) + throw std::runtime_error ("bad em in eventable descriptor"); + CreatedAt = MyEventMachine->GetCurrentLoopTime(); + LastActivity = MyEventMachine->GetCurrentLoopTime(); + + #ifdef HAVE_EPOLL + EpollEvent.events = 0; + EpollEvent.data.ptr = this; + #endif +} + + +/***************************************** +EventableDescriptor::~EventableDescriptor +*****************************************/ + +EventableDescriptor::~EventableDescriptor() NO_EXCEPT_FALSE +{ + if (NextHeartbeat) + MyEventMachine->ClearHeartbeat(NextHeartbeat, this); + if (EventCallback && bCallbackUnbind) + (*EventCallback)(GetBinding(), EM_CONNECTION_UNBOUND, NULL, UnbindReasonCode); + if (ProxiedFrom) { + (*EventCallback)(ProxiedFrom->GetBinding(), EM_PROXY_TARGET_UNBOUND, NULL, 0); + ProxiedFrom->StopProxy(); + } + MyEventMachine->NumCloseScheduled--; + StopProxy(); + Close(); +} + + +/************************************* +EventableDescriptor::SetEventCallback +*************************************/ + +void EventableDescriptor::SetEventCallback (EMCallback cb) +{ + EventCallback = cb; +} + + +/************************** +EventableDescriptor::Close +**************************/ + +void EventableDescriptor::Close() +{ + /* EventMachine relies on the fact that when close(fd) + * is called that the fd is removed from any + * epoll event queues. + * + * However, this is not *always* the behavior of close(fd) + * + * See man 4 epoll Q6/A6 and then consider what happens + * when using pipes with eventmachine. + * (As is often done when communicating with a subprocess) + * + * The pipes end up looking like: + * + * ls -l /proc//fd + * ... + * lr-x------ 1 root root 64 2011-08-19 21:31 3 -> pipe:[940970] + * l-wx------ 1 root root 64 2011-08-19 21:31 4 -> pipe:[940970] + * + * This meets the critera from man 4 epoll Q6/A4 for not + * removing fds from epoll event queues until all fds + * that reference the underlying file have been removed. + * + * If the EventableDescriptor associated with fd 3 is deleted, + * its dtor will call EventableDescriptor::Close(), + * which will call ::close(int fd). + * + * However, unless the EventableDescriptor associated with fd 4 is + * also deleted before the next call to epoll_wait, events may fire + * for fd 3 that were registered with an already deleted + * EventableDescriptor. + * + * Therefore, it is necessary to notify EventMachine that + * the fd associated with this EventableDescriptor is + * closing. + * + * EventMachine also never closes fds for STDIN, STDOUT and + * STDERR (0, 1 & 2) + */ + + // Close the socket right now. Intended for emergencies. + if (MySocket != INVALID_SOCKET) { + MyEventMachine->Deregister (this); + + // Do not close STDIN, STDOUT, STDERR + if (MySocket > 2 && !bAttached) { + shutdown (MySocket, 1); + close (MySocket); + } + + MySocket = INVALID_SOCKET; + } +} + + +/********************************* +EventableDescriptor::ShouldDelete +*********************************/ + +bool EventableDescriptor::ShouldDelete() +{ + /* For use by a socket manager, which needs to know if this object + * should be removed from scheduling events and deleted. + * Has an immediate close been scheduled, or are we already closed? + * If either of these are the case, return true. In theory, the manager will + * then delete us, which in turn will make sure the socket is closed. + * Note, if bCloseAfterWriting is true, we check a virtual method to see + * if there is outbound data to write, and only request a close if there is none. + */ + + return ((MySocket == INVALID_SOCKET) || bCloseNow || (bCloseAfterWriting && (GetOutboundDataSize() <= 0))); +} + + +/********************************** +EventableDescriptor::ScheduleClose +**********************************/ + +void EventableDescriptor::ScheduleClose (bool after_writing) +{ + if (IsCloseScheduled()) { + if (!after_writing) { + // If closing has become more urgent, then upgrade the scheduled + // after_writing close to one NOW. + bCloseNow = true; + } + return; + } + MyEventMachine->NumCloseScheduled++; + // KEEP THIS SYNCHRONIZED WITH ::IsCloseScheduled. + if (after_writing) + bCloseAfterWriting = true; + else + bCloseNow = true; +} + + +/************************************* +EventableDescriptor::IsCloseScheduled +*************************************/ + +bool EventableDescriptor::IsCloseScheduled() +{ + // KEEP THIS SYNCHRONIZED WITH ::ScheduleClose. + return (bCloseNow || bCloseAfterWriting); +} + + +/******************************* +EventableDescriptor::StartProxy +*******************************/ + +void EventableDescriptor::StartProxy(const uintptr_t to, const unsigned long bufsize, const unsigned long length) +{ + EventableDescriptor *ed = dynamic_cast (Bindable_t::GetObject (to)); + if (ed) { + StopProxy(); + ProxyTarget = ed; + BytesToProxy = length; + ProxiedBytes = 0; + ed->SetProxiedFrom(this, bufsize); + return; + } + throw std::runtime_error ("Tried to proxy to an invalid descriptor"); +} + + +/****************************** +EventableDescriptor::StopProxy +******************************/ + +void EventableDescriptor::StopProxy() +{ + if (ProxyTarget) { + ProxyTarget->SetProxiedFrom(NULL, 0); + ProxyTarget = NULL; + } +} + + +/*********************************** +EventableDescriptor::SetProxiedFrom +***********************************/ + +void EventableDescriptor::SetProxiedFrom(EventableDescriptor *from, const unsigned long bufsize) +{ + if (from != NULL && ProxiedFrom != NULL) + throw std::runtime_error ("Tried to proxy to a busy target"); + + ProxiedFrom = from; + MaxOutboundBufSize = bufsize; +} + + +/******************************************** +EventableDescriptor::_GenericInboundDispatch +********************************************/ + +void EventableDescriptor::_GenericInboundDispatch(const char *buf, unsigned long size) +{ + assert(EventCallback); + + if (ProxyTarget) { + if (BytesToProxy > 0) { + unsigned long proxied = std::min(BytesToProxy, size); + ProxyTarget->SendOutboundData(buf, proxied); + ProxiedBytes += (unsigned long) proxied; + BytesToProxy -= proxied; + if (BytesToProxy == 0) { + StopProxy(); + (*EventCallback)(GetBinding(), EM_PROXY_COMPLETED, NULL, 0); + if (proxied < size) { + (*EventCallback)(GetBinding(), EM_CONNECTION_READ, buf + proxied, size - proxied); + } + } + } else { + ProxyTarget->SendOutboundData(buf, size); + ProxiedBytes += size; + } + } else { + (*EventCallback)(GetBinding(), EM_CONNECTION_READ, buf, size); + } +} + + +/********************************* +EventableDescriptor::_GenericGetPeername +*********************************/ + +bool EventableDescriptor::_GenericGetPeername (struct sockaddr *s, socklen_t *len) +{ + if (!s) + return false; + + int gp = getpeername (GetSocket(), s, len); + if (gp == -1) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "unable to get peer name: %s", strerror(errno)); + throw std::runtime_error (buf); + } + + return true; +} + +/********************************* +EventableDescriptor::_GenericGetSockname +*********************************/ + +bool EventableDescriptor::_GenericGetSockname (struct sockaddr *s, socklen_t *len) +{ + if (!s) + return false; + + int gp = getsockname (GetSocket(), s, len); + if (gp == -1) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "unable to get sock name: %s", strerror(errno)); + throw std::runtime_error (buf); + } + + return true; +} + + +/********************************************* +EventableDescriptor::GetPendingConnectTimeout +*********************************************/ + +uint64_t EventableDescriptor::GetPendingConnectTimeout() +{ + return PendingConnectTimeout / 1000; +} + + +/********************************************* +EventableDescriptor::SetPendingConnectTimeout +*********************************************/ + +int EventableDescriptor::SetPendingConnectTimeout (uint64_t value) +{ + if (value > 0) { + PendingConnectTimeout = value * 1000; + MyEventMachine->QueueHeartbeat(this); + return 1; + } + return 0; +} + + +/************************************* +EventableDescriptor::GetNextHeartbeat +*************************************/ + +uint64_t EventableDescriptor::GetNextHeartbeat() +{ + if (NextHeartbeat) + MyEventMachine->ClearHeartbeat(NextHeartbeat, this); + + NextHeartbeat = 0; + + if (!ShouldDelete()) { + uint64_t time_til_next = InactivityTimeout; + if (IsConnectPending()) { + if (time_til_next == 0 || PendingConnectTimeout < time_til_next) + time_til_next = PendingConnectTimeout; + } + if (time_til_next == 0) + return 0; + NextHeartbeat = time_til_next + MyEventMachine->GetRealTime(); + } + + return NextHeartbeat; +} + + +/****************************************** +ConnectionDescriptor::ConnectionDescriptor +******************************************/ + +ConnectionDescriptor::ConnectionDescriptor (SOCKET sd, EventMachine_t *em): + EventableDescriptor (sd, em), + bConnectPending (false), + bNotifyReadable (false), + bNotifyWritable (false), + bReadAttemptedAfterClose (false), + bWriteAttemptedAfterClose (false), + OutboundDataSize (0), + #ifdef WITH_SSL + SslBox (NULL), + bHandshakeSignaled (false), + bSslVerifyPeer (false), + bSslPeerAccepted(false), + #endif + #ifdef HAVE_KQUEUE + bGotExtraKqueueEvent(false), + #endif + bIsServer (false) +{ + // 22Jan09: Moved ArmKqueueWriter into SetConnectPending() to fix assertion failure in _WriteOutboundData() + // 5May09: Moved EPOLLOUT into SetConnectPending() so it doesn't happen for attached read pipes +} + + +/******************************************* +ConnectionDescriptor::~ConnectionDescriptor +*******************************************/ + +ConnectionDescriptor::~ConnectionDescriptor() +{ + // Run down any stranded outbound data. + for (size_t i=0; i < OutboundPages.size(); i++) + OutboundPages[i].Free(); + + #ifdef WITH_SSL + if (SslBox) + delete SslBox; + #endif +} + + +/*********************************** +ConnectionDescriptor::_UpdateEvents +************************************/ + +void ConnectionDescriptor::_UpdateEvents() +{ + _UpdateEvents(true, true); +} + +void ConnectionDescriptor::_UpdateEvents(bool read, bool write) +{ + if (MySocket == INVALID_SOCKET) + return; + + if (!read && !write) + return; + + #ifdef HAVE_EPOLL + unsigned int old = EpollEvent.events; + + if (read) { + if (SelectForRead()) + EpollEvent.events |= EPOLLIN; + else + EpollEvent.events &= ~EPOLLIN; + } + + if (write) { + if (SelectForWrite()) + EpollEvent.events |= EPOLLOUT; + else + EpollEvent.events &= ~EPOLLOUT; + } + + if (old != EpollEvent.events) + MyEventMachine->Modify (this); + #endif + + #ifdef HAVE_KQUEUE + if (read && SelectForRead()) + MyEventMachine->ArmKqueueReader (this); + bKqueueArmWrite = SelectForWrite(); + if (write && bKqueueArmWrite) + MyEventMachine->Modify (this); + #endif +} + +/*************************************** +ConnectionDescriptor::SetConnectPending +****************************************/ + +void ConnectionDescriptor::SetConnectPending(bool f) +{ + bConnectPending = f; + MyEventMachine->QueueHeartbeat(this); + _UpdateEvents(); +} + + +/********************************** +ConnectionDescriptor::SetAttached +***********************************/ + +void ConnectionDescriptor::SetAttached(bool state) +{ + bAttached = state; +} + + +/********************************** +ConnectionDescriptor::SetWatchOnly +***********************************/ + +void ConnectionDescriptor::SetWatchOnly(bool watching) +{ + bWatchOnly = watching; + _UpdateEvents(); +} + + +/********************************* +ConnectionDescriptor::HandleError +*********************************/ + +void ConnectionDescriptor::HandleError() +{ + if (bWatchOnly) { + // An EPOLLHUP | EPOLLIN condition will call Read() before HandleError(), in which case the + // socket is already detached and invalid, so we don't need to do anything. + if (MySocket == INVALID_SOCKET) return; + + // HandleError() is called on WatchOnly descriptors by the epoll reactor + // when it gets a EPOLLERR | EPOLLHUP. Usually this would show up as a readable and + // writable event on other reactors, so we have to fire those events ourselves. + if (bNotifyReadable) Read(); + if (bNotifyWritable) Write(); + } else { + ScheduleClose (false); + } +} + + +/*********************************** +ConnectionDescriptor::ScheduleClose +***********************************/ + +void ConnectionDescriptor::ScheduleClose (bool after_writing) +{ + if (bWatchOnly) + throw std::runtime_error ("cannot close 'watch only' connections"); + + EventableDescriptor::ScheduleClose(after_writing); +} + + +/*************************************** +ConnectionDescriptor::SetNotifyReadable +****************************************/ + +void ConnectionDescriptor::SetNotifyReadable(bool readable) +{ + if (!bWatchOnly) + throw std::runtime_error ("notify_readable must be on 'watch only' connections"); + + bNotifyReadable = readable; + _UpdateEvents(true, false); +} + + +/*************************************** +ConnectionDescriptor::SetNotifyWritable +****************************************/ + +void ConnectionDescriptor::SetNotifyWritable(bool writable) +{ + if (!bWatchOnly) + throw std::runtime_error ("notify_writable must be on 'watch only' connections"); + + bNotifyWritable = writable; + _UpdateEvents(false, true); +} + + +/************************************** +ConnectionDescriptor::SendOutboundData +**************************************/ + +int ConnectionDescriptor::SendOutboundData (const char *data, unsigned long length) +{ + if (bWatchOnly) + throw std::runtime_error ("cannot send data on a 'watch only' connection"); + + if (ProxiedFrom && MaxOutboundBufSize && (unsigned int)(GetOutboundDataSize() + length) > MaxOutboundBufSize) + ProxiedFrom->Pause(); + + #ifdef WITH_SSL + if (SslBox) { + if (length > 0) { + unsigned long writed = 0; + char *p = (char*)data; + + while (writed < length) { + int to_write = SSLBOX_INPUT_CHUNKSIZE; + int remaining = length - writed; + + if (remaining < SSLBOX_INPUT_CHUNKSIZE) + to_write = remaining; + + int w = SslBox->PutPlaintext (p, to_write); + if (w < 0) { + ScheduleClose (false); + }else + _DispatchCiphertext(); + + p += to_write; + writed += to_write; + } + } + // TODO: What's the correct return value? + return 1; // That's a wild guess, almost certainly wrong. + } + else + #endif + return _SendRawOutboundData (data, length); +} + + + +/****************************************** +ConnectionDescriptor::_SendRawOutboundData +******************************************/ + +int ConnectionDescriptor::_SendRawOutboundData (const char *data, unsigned long length) +{ + /* This internal method is called to schedule bytes that + * will be sent out to the remote peer. + * It's not directly accessed by the caller, who hits ::SendOutboundData, + * which may or may not filter or encrypt the caller's data before + * sending it here. + */ + + // Highly naive and incomplete implementation. + // There's no throttle for runaways (which should abort only this connection + // and not the whole process), and no coalescing of small pages. + // (Well, not so bad, small pages are coalesced in ::Write) + + if (IsCloseScheduled()) + return 0; + // 25Mar10: Ignore 0 length packets as they are not meaningful in TCP (as opposed to UDP) + // and can cause the assert(nbytes>0) to fail when OutboundPages has a bunch of 0 length pages. + if (length == 0) + return 0; + + if (!data && (length > 0)) + throw std::runtime_error ("bad outbound data"); + char *buffer = (char *) malloc (length + 1); + if (!buffer) + throw std::runtime_error ("no allocation for outbound data"); + + memcpy (buffer, data, length); + buffer [length] = 0; + OutboundPages.push_back (OutboundPage (buffer, length)); + OutboundDataSize += length; + + _UpdateEvents(false, true); + + return length; +} + + + +/*********************************** +ConnectionDescriptor::SelectForRead +***********************************/ + +bool ConnectionDescriptor::SelectForRead() +{ + /* A connection descriptor is always scheduled for read, + * UNLESS it's in a pending-connect state. + * On Linux, unlike Unix, a nonblocking socket on which + * connect has been called, does NOT necessarily select + * both readable and writable in case of error. + * The socket will select writable when the disposition + * of the connect is known. On the other hand, a socket + * which successfully connects and selects writable may + * indeed have some data available on it, so it will + * select readable in that case, violating expectations! + * So we will not poll for readability until the socket + * is known to be in a connected state. + */ + + if (bPaused) + return false; + else if (bConnectPending) + return false; + else if (bWatchOnly) + return bNotifyReadable ? true : false; + else + return true; +} + + +/************************************ +ConnectionDescriptor::SelectForWrite +************************************/ + +bool ConnectionDescriptor::SelectForWrite() +{ + /* Cf the notes under SelectForRead. + * In a pending-connect state, we ALWAYS select for writable. + * In a normal state, we only select for writable when we + * have outgoing data to send. + */ + + if (bPaused) + return false; + else if (bConnectPending) + return true; + else if (bWatchOnly) + return bNotifyWritable ? true : false; + else + return (GetOutboundDataSize() > 0); +} + +/*************************** +ConnectionDescriptor::Pause +***************************/ + +bool ConnectionDescriptor::Pause() +{ + if (bWatchOnly) + throw std::runtime_error ("cannot pause/resume 'watch only' connections, set notify readable/writable instead"); + + bool old = bPaused; + bPaused = true; + _UpdateEvents(); + return old == false; +} + +/**************************** +ConnectionDescriptor::Resume +****************************/ + +bool ConnectionDescriptor::Resume() +{ + if (bWatchOnly) + throw std::runtime_error ("cannot pause/resume 'watch only' connections, set notify readable/writable instead"); + + bool old = bPaused; + bPaused = false; + _UpdateEvents(); + return old == true; +} + +/************************** +ConnectionDescriptor::Read +**************************/ + +void ConnectionDescriptor::Read() +{ + /* Read and dispatch data on a socket that has selected readable. + * It's theoretically possible to get and dispatch incoming data on + * a socket that has already been scheduled for closing or close-after-writing. + * In those cases, we'll leave it up the to protocol handler to "do the + * right thing" (which probably means to ignore the incoming data). + * + * 22Aug06: Chris Ochs reports that on FreeBSD, it's possible to come + * here with the socket already closed, after the process receives + * a ctrl-C signal (not sure if that's TERM or INT on BSD). The application + * was one in which network connections were doing a lot of interleaved reads + * and writes. + * Since we always write before reading (in order to keep the outbound queues + * as light as possible), I think what happened is that an interrupt caused + * the socket to be closed in ConnectionDescriptor::Write. We'll then + * come here in the same pass through the main event loop, and won't get + * cleaned up until immediately after. + * We originally asserted that the socket was valid when we got here. + * To deal properly with the possibility that we are closed when we get here, + * I removed the assert. HOWEVER, the potential for an infinite loop scares me, + * so even though this is really clunky, I added a flag to assert that we never + * come here more than once after being closed. (FCianfrocca) + */ + + SOCKET sd = GetSocket(); + //assert (sd != INVALID_SOCKET); (original, removed 22Aug06) + if (sd == INVALID_SOCKET) { + assert (!bReadAttemptedAfterClose); + bReadAttemptedAfterClose = true; + return; + } + + if (bWatchOnly) { + if (bNotifyReadable && EventCallback) + (*EventCallback)(GetBinding(), EM_CONNECTION_NOTIFY_READABLE, NULL, 0); + return; + } + + LastActivity = MyEventMachine->GetCurrentLoopTime(); + + int total_bytes_read = 0; + char readbuffer [16 * 1024 + 1]; + + for (int i=0; i < 10; i++) { + // Don't read just one buffer and then move on. This is faster + // if there is a lot of incoming. + // But don't read indefinitely. Give other sockets a chance to run. + // NOTICE, we're reading one less than the buffer size. + // That's so we can put a guard byte at the end of what we send + // to user code. + + + int r = read (sd, readbuffer, sizeof(readbuffer) - 1); +#ifdef OS_WIN32 + int e = WSAGetLastError(); +#else + int e = errno; +#endif + //cerr << ""; + + if (r > 0) { + total_bytes_read += r; + + // Add a null-terminator at the the end of the buffer + // that we will send to the callback. + // DO NOT EVER CHANGE THIS. We want to explicitly allow users + // to be able to depend on this behavior, so they will have + // the option to do some things faster. Additionally it's + // a security guard against buffer overflows. + readbuffer [r] = 0; + _DispatchInboundData (readbuffer, r); + if (bPaused) + break; + } + else if (r == 0) { + break; + } + else { + #ifdef OS_UNIX + if ((e != EINPROGRESS) && (e != EWOULDBLOCK) && (e != EAGAIN) && (e != EINTR)) { + #endif + #ifdef OS_WIN32 + if ((e != WSAEINPROGRESS) && (e != WSAEWOULDBLOCK)) { + #endif + // 26Mar11: Previously, all read errors were assumed to be EWOULDBLOCK and ignored. + // Now, instead, we call Close() on errors like ECONNRESET and ENOTCONN. + UnbindReasonCode = e; + Close(); + break; + } else { + // Basically a would-block, meaning we've read everything there is to read. + break; + } + } + + } + + + if (total_bytes_read == 0) { + // If we read no data on a socket that selected readable, + // it generally means the other end closed the connection gracefully. + ScheduleClose (false); + //bCloseNow = true; + } + +} + + + +/****************************************** +ConnectionDescriptor::_DispatchInboundData +******************************************/ + +#ifdef WITH_SSL +void ConnectionDescriptor::_DispatchInboundData (const char *buffer, unsigned long size) +{ + if (SslBox) { + SslBox->PutCiphertext (buffer, size); + + int s; + char B [2048]; + while ((s = SslBox->GetPlaintext (B, sizeof(B) - 1)) > 0) { + _CheckHandshakeStatus(); + B [s] = 0; + _GenericInboundDispatch(B, s); + } + + // If our SSL handshake had a problem, shut down the connection. + if (s == -2) { + #ifndef EPROTO // OpenBSD does not have EPROTO + #define EPROTO EINTR + #endif + #ifdef OS_UNIX + UnbindReasonCode = EPROTO; + #endif + #ifdef OS_WIN32 + UnbindReasonCode = WSAECONNABORTED; + #endif + ScheduleClose(false); + return; + } + + _CheckHandshakeStatus(); + _DispatchCiphertext(); + } + else { + _GenericInboundDispatch(buffer, size); + } +} +#else +void ConnectionDescriptor::_DispatchInboundData (const char *buffer, unsigned long size) +{ + _GenericInboundDispatch(buffer, size); +} +#endif + + + +/******************************************* +ConnectionDescriptor::_CheckHandshakeStatus +*******************************************/ + +void ConnectionDescriptor::_CheckHandshakeStatus() +{ + #ifdef WITH_SSL + if (SslBox && (!bHandshakeSignaled) && SslBox->IsHandshakeCompleted()) { + bHandshakeSignaled = true; + if (EventCallback) + (*EventCallback)(GetBinding(), EM_SSL_HANDSHAKE_COMPLETED, NULL, 0); + } + #endif +} + + + +/*************************** +ConnectionDescriptor::Write +***************************/ + +void ConnectionDescriptor::Write() +{ + /* A socket which is in a pending-connect state will select + * writable when the disposition of the connect is known. + * At that point, check to be sure there are no errors, + * and if none, then promote the socket out of the pending + * state. + * TODO: I haven't figured out how Windows signals errors on + * unconnected sockets. Maybe it does the untraditional but + * logical thing and makes the socket selectable for error. + * If so, it's unsupported here for the time being, and connect + * errors will have to be caught by the timeout mechanism. + */ + + if (bConnectPending) { + int error; + socklen_t len; + len = sizeof(error); + #ifdef OS_UNIX + int o = getsockopt (GetSocket(), SOL_SOCKET, SO_ERROR, &error, &len); + #endif + #ifdef OS_WIN32 + int o = getsockopt (GetSocket(), SOL_SOCKET, SO_ERROR, (char*)&error, &len); + #endif + if ((o == 0) && (error == 0)) { + if (EventCallback) + (*EventCallback)(GetBinding(), EM_CONNECTION_COMPLETED, "", 0); + + // 5May09: Moved epoll/kqueue read/write arming into SetConnectPending, so it can be called + // from EventMachine_t::AttachFD as well. + SetConnectPending (false); + } + else { + if (o == 0) + UnbindReasonCode = error; + ScheduleClose (false); + //bCloseNow = true; + } + } + else { + + if (bNotifyWritable) { + if (EventCallback) + (*EventCallback)(GetBinding(), EM_CONNECTION_NOTIFY_WRITABLE, NULL, 0); + + _UpdateEvents(false, true); + return; + } + + assert(!bWatchOnly); + + /* 5May09: Kqueue bugs on OSX cause one extra writable event to fire even though we're using + EV_ONESHOT. We ignore this extra event once, but only the first time. If it happens again, + we should fall through to the assert(nbytes>0) failure to catch any EM bugs which might cause + ::Write to be called in a busy-loop. + */ + #ifdef HAVE_KQUEUE + if (MyEventMachine->GetPoller() == Poller_Kqueue) { + if (OutboundDataSize == 0 && !bGotExtraKqueueEvent) { + bGotExtraKqueueEvent = true; + return; + } else if (OutboundDataSize > 0) { + bGotExtraKqueueEvent = false; + } + } + #endif + + _WriteOutboundData(); + } +} + + +/**************************************** +ConnectionDescriptor::_WriteOutboundData +****************************************/ + +void ConnectionDescriptor::_WriteOutboundData() +{ + /* This is a helper function called by ::Write. + * It's possible for a socket to select writable and then no longer + * be writable by the time we get around to writing. The kernel might + * have used up its available output buffers between the select call + * and when we get here. So this condition is not an error. + * + * 20Jul07, added the same kind of protection against an invalid socket + * that is at the top of ::Read. Not entirely how this could happen in + * real life (connection-reset from the remote peer, perhaps?), but I'm + * doing it to address some reports of crashing under heavy loads. + */ + + SOCKET sd = GetSocket(); + //assert (sd != INVALID_SOCKET); + if (sd == INVALID_SOCKET) { + assert (!bWriteAttemptedAfterClose); + bWriteAttemptedAfterClose = true; + return; + } + + LastActivity = MyEventMachine->GetCurrentLoopTime(); + size_t nbytes = 0; + + #ifdef HAVE_WRITEV + int iovcnt = OutboundPages.size(); + // Max of 16 outbound pages at a time + if (iovcnt > 16) iovcnt = 16; + + iovec iov[16]; + + for(int i = 0; i < iovcnt; i++){ + OutboundPage *op = &(OutboundPages[i]); + #ifdef CC_SUNWspro + // TODO: The void * cast works fine on Solaris 11, but + // I don't know at what point that changed from older Solaris. + iov[i].iov_base = (char *)(op->Buffer + op->Offset); + #else + iov[i].iov_base = (void *)(op->Buffer + op->Offset); + #endif + iov[i].iov_len = op->Length - op->Offset; + + nbytes += iov[i].iov_len; + } + #else + char output_buffer [16 * 1024]; + + while ((OutboundPages.size() > 0) && (nbytes < sizeof(output_buffer))) { + OutboundPage *op = &(OutboundPages[0]); + if ((nbytes + op->Length - op->Offset) < sizeof (output_buffer)) { + memcpy (output_buffer + nbytes, op->Buffer + op->Offset, op->Length - op->Offset); + nbytes += (op->Length - op->Offset); + op->Free(); + OutboundPages.pop_front(); + } + else { + int len = sizeof(output_buffer) - nbytes; + memcpy (output_buffer + nbytes, op->Buffer + op->Offset, len); + op->Offset += len; + nbytes += len; + } + } + #endif + + // We should never have gotten here if there were no data to write, + // so assert that as a sanity check. + // Don't bother to make sure nbytes is less than output_buffer because + // if it were we probably would have crashed already. + assert (nbytes > 0); + + assert (GetSocket() != INVALID_SOCKET); + #ifdef HAVE_WRITEV + int bytes_written = writev (GetSocket(), iov, iovcnt); + #else + int bytes_written = write (GetSocket(), output_buffer, nbytes); + #endif + + bool err = false; +#ifdef OS_WIN32 + int e = WSAGetLastError(); +#else + int e = errno; +#endif + if (bytes_written < 0) { + err = true; + bytes_written = 0; + } + + assert (bytes_written >= 0); + OutboundDataSize -= bytes_written; + + if (ProxiedFrom && MaxOutboundBufSize && (unsigned int)GetOutboundDataSize() < MaxOutboundBufSize && ProxiedFrom->IsPaused()) + ProxiedFrom->Resume(); + + #ifdef HAVE_WRITEV + if (!err) { + unsigned int sent = bytes_written; + std::deque::iterator op = OutboundPages.begin(); + + for (int i = 0; i < iovcnt; i++) { + if (iov[i].iov_len <= sent) { + // Sent this page in full, free it. + op->Free(); + OutboundPages.pop_front(); + + sent -= iov[i].iov_len; + } else { + // Sent part (or none) of this page, increment offset to send the remainder + op->Offset += sent; + break; + } + + // Shouldn't be possible run out of pages before the loop ends + assert(op != OutboundPages.end()); + *op++; + } + } + #else + if ((size_t)bytes_written < nbytes) { + int len = nbytes - bytes_written; + char *buffer = (char*) malloc (len + 1); + if (!buffer) + throw std::runtime_error ("bad alloc throwing back data"); + memcpy (buffer, output_buffer + bytes_written, len); + buffer [len] = 0; + OutboundPages.push_front (OutboundPage (buffer, len)); + } + #endif + + _UpdateEvents(false, true); + + if (err) { + #ifdef OS_UNIX + if ((e != EINPROGRESS) && (e != EWOULDBLOCK) && (e != EINTR)) { + #endif + #ifdef OS_WIN32 + if ((e != WSAEINPROGRESS) && (e != WSAEWOULDBLOCK)) { + #endif + UnbindReasonCode = e; + Close(); + } + } +} + + +/*************************************** +ConnectionDescriptor::ReportErrorStatus +***************************************/ + +int ConnectionDescriptor::ReportErrorStatus() +{ + if (MySocket == INVALID_SOCKET) { + return -1; + } + + int error; + socklen_t len; + len = sizeof(error); + #ifdef OS_UNIX + int o = getsockopt (GetSocket(), SOL_SOCKET, SO_ERROR, &error, &len); + #endif + #ifdef OS_WIN32 + int o = getsockopt (GetSocket(), SOL_SOCKET, SO_ERROR, (char*)&error, &len); + #endif + if ((o == 0) && (error == 0)) + return 0; + else if (o == 0) + return error; + else + return -1; +} + + +/****************************** +ConnectionDescriptor::StartTls +******************************/ + +#ifdef WITH_SSL +void ConnectionDescriptor::StartTls() +{ + if (SslBox) + throw std::runtime_error ("SSL/TLS already running on connection"); + + SslBox = new SslBox_t (bIsServer, PrivateKeyFilename, CertChainFilename, bSslVerifyPeer, bSslFailIfNoPeerCert, SniHostName, CipherList, EcdhCurve, DhParam, Protocols, GetBinding()); + _DispatchCiphertext(); + +} +#else +void ConnectionDescriptor::StartTls() +{ + throw std::runtime_error ("Encryption not available on this event-machine"); +} +#endif + + +/********************************* +ConnectionDescriptor::SetTlsParms +*********************************/ + +#ifdef WITH_SSL +void ConnectionDescriptor::SetTlsParms (const char *privkey_filename, const char *certchain_filename, bool verify_peer, bool fail_if_no_peer_cert, const char *sni_hostname, const char *cipherlist, const char *ecdh_curve, const char *dhparam, int protocols) +{ + if (SslBox) + throw std::runtime_error ("call SetTlsParms before calling StartTls"); + if (privkey_filename && *privkey_filename) + PrivateKeyFilename = privkey_filename; + if (certchain_filename && *certchain_filename) + CertChainFilename = certchain_filename; + bSslVerifyPeer = verify_peer; + bSslFailIfNoPeerCert = fail_if_no_peer_cert; + + if (sni_hostname && *sni_hostname) + SniHostName = sni_hostname; + if (cipherlist && *cipherlist) + CipherList = cipherlist; + if (ecdh_curve && *ecdh_curve) + EcdhCurve = ecdh_curve; + if (dhparam && *dhparam) + DhParam = dhparam; + + Protocols = protocols; +} +#else +void ConnectionDescriptor::SetTlsParms (const char *privkey_filename UNUSED, const char *certchain_filename UNUSED, bool verify_peer UNUSED, bool fail_if_no_peer_cert UNUSED, const char *sni_hostname UNUSED, const char *cipherlist UNUSED, const char *ecdh_curve UNUSED, const char *dhparam UNUSED, int protocols UNUSED) +{ + throw std::runtime_error ("Encryption not available on this event-machine"); +} +#endif + + +/********************************* +ConnectionDescriptor::GetPeerCert +*********************************/ + +#ifdef WITH_SSL +X509 *ConnectionDescriptor::GetPeerCert() +{ + if (!SslBox) + throw std::runtime_error ("SSL/TLS not running on this connection"); + return SslBox->GetPeerCert(); +} +#endif + + +/********************************* +ConnectionDescriptor::GetCipherBits +*********************************/ + +#ifdef WITH_SSL +int ConnectionDescriptor::GetCipherBits() +{ + if (!SslBox) + throw std::runtime_error ("SSL/TLS not running on this connection"); + return SslBox->GetCipherBits(); +} +#endif + + +/********************************* +ConnectionDescriptor::GetCipherName +*********************************/ + +#ifdef WITH_SSL +const char *ConnectionDescriptor::GetCipherName() +{ + if (!SslBox) + throw std::runtime_error ("SSL/TLS not running on this connection"); + return SslBox->GetCipherName(); +} +#endif + + +/********************************* +ConnectionDescriptor::GetCipherProtocol +*********************************/ + +#ifdef WITH_SSL +const char *ConnectionDescriptor::GetCipherProtocol() +{ + if (!SslBox) + throw std::runtime_error ("SSL/TLS not running on this connection"); + return SslBox->GetCipherProtocol(); +} +#endif + + +/********************************* +ConnectionDescriptor::GetSNIHostname +*********************************/ + +#ifdef WITH_SSL +const char *ConnectionDescriptor::GetSNIHostname() +{ + if (!SslBox) + throw std::runtime_error ("SSL/TLS not running on this connection"); + return SslBox->GetSNIHostname(); +} +#endif + + +/*********************************** +ConnectionDescriptor::VerifySslPeer +***********************************/ + +#ifdef WITH_SSL +bool ConnectionDescriptor::VerifySslPeer(const char *cert) +{ + bSslPeerAccepted = false; + + if (EventCallback) + (*EventCallback)(GetBinding(), EM_SSL_VERIFY, cert, strlen(cert)); + + return bSslPeerAccepted; +} +#endif + + +/*********************************** +ConnectionDescriptor::AcceptSslPeer +***********************************/ + +#ifdef WITH_SSL +void ConnectionDescriptor::AcceptSslPeer() +{ + bSslPeerAccepted = true; +} +#endif + + +/***************************************** +ConnectionDescriptor::_DispatchCiphertext +*****************************************/ + +#ifdef WITH_SSL +void ConnectionDescriptor::_DispatchCiphertext() +{ + assert (SslBox); + + + char BigBuf [SSLBOX_OUTPUT_CHUNKSIZE]; + bool did_work; + + do { + did_work = false; + + // try to drain ciphertext + while (SslBox->CanGetCiphertext()) { + int r = SslBox->GetCiphertext (BigBuf, sizeof(BigBuf)); + assert (r > 0); + _SendRawOutboundData (BigBuf, r); + did_work = true; + } + + // Pump the SslBox, in case it has queued outgoing plaintext + // This will return >0 if data was written, + // 0 if no data was written, and <0 if there was a fatal error. + bool pump; + do { + pump = false; + int w = SslBox->PutPlaintext (NULL, 0); + if (w > 0) { + did_work = true; + pump = true; + } + else if (w < 0) + ScheduleClose (false); + } while (pump); + + // try to put plaintext. INCOMPLETE, doesn't belong here? + // In SendOutboundData, we're spooling plaintext directly + // into SslBox. That may be wrong, we may need to buffer it + // up here! + /* + const char *ptr; + int ptr_length; + while (OutboundPlaintext.GetPage (&ptr, &ptr_length)) { + assert (ptr && (ptr_length > 0)); + int w = SslMachine.PutPlaintext (ptr, ptr_length); + if (w > 0) { + OutboundPlaintext.DiscardBytes (w); + did_work = true; + } + else + break; + } + */ + + } while (did_work); + +} +#endif + + + +/******************************* +ConnectionDescriptor::Heartbeat +*******************************/ + +void ConnectionDescriptor::Heartbeat() +{ + /* Only allow a certain amount of time to go by while waiting + * for a pending connect. If it expires, then kill the socket. + * For a connected socket, close it if its inactivity timer + * has expired. + */ + + if (bConnectPending) { + if ((MyEventMachine->GetCurrentLoopTime() - CreatedAt) >= PendingConnectTimeout) { + UnbindReasonCode = ETIMEDOUT; + ScheduleClose (false); + //bCloseNow = true; + } + } + else { + if (InactivityTimeout && ((MyEventMachine->GetCurrentLoopTime() - LastActivity) >= InactivityTimeout)) { + UnbindReasonCode = ETIMEDOUT; + ScheduleClose (false); + //bCloseNow = true; + } + } +} + + +/**************************************** +LoopbreakDescriptor::LoopbreakDescriptor +****************************************/ + +LoopbreakDescriptor::LoopbreakDescriptor (SOCKET sd, EventMachine_t *parent_em): + EventableDescriptor (sd, parent_em) +{ + /* This is really bad and ugly. Change someday if possible. + * We have to know about an event-machine (probably the one that owns us), + * so we can pass newly-created connections to it. + */ + + bCallbackUnbind = false; + + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + #ifdef HAVE_KQUEUE + MyEventMachine->ArmKqueueReader (this); + #endif +} + + + + +/************************* +LoopbreakDescriptor::Read +*************************/ + +void LoopbreakDescriptor::Read() +{ + // TODO, refactor, this code is probably in the wrong place. + assert (MyEventMachine); + MyEventMachine->_ReadLoopBreaker(); +} + + +/************************** +LoopbreakDescriptor::Write +**************************/ + +void LoopbreakDescriptor::Write() +{ + // Why are we here? + throw std::runtime_error ("bad code path in loopbreak"); +} + +/************************************** +AcceptorDescriptor::AcceptorDescriptor +**************************************/ + +AcceptorDescriptor::AcceptorDescriptor (SOCKET sd, EventMachine_t *parent_em): + EventableDescriptor (sd, parent_em) +{ + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + #ifdef HAVE_KQUEUE + MyEventMachine->ArmKqueueReader (this); + #endif +} + + +/*************************************** +AcceptorDescriptor::~AcceptorDescriptor +***************************************/ + +AcceptorDescriptor::~AcceptorDescriptor() +{ +} + +/**************************************** +STATIC: AcceptorDescriptor::StopAcceptor +****************************************/ + +void AcceptorDescriptor::StopAcceptor (const uintptr_t binding) +{ + // TODO: This is something of a hack, or at least it's a static method of the wrong class. + AcceptorDescriptor *ad = dynamic_cast (Bindable_t::GetObject (binding)); + if (ad) + ad->ScheduleClose (false); + else + throw std::runtime_error ("failed to close nonexistent acceptor"); +} + + +/************************ +AcceptorDescriptor::Read +************************/ + +void AcceptorDescriptor::Read() +{ + /* Accept up to a certain number of sockets on the listening connection. + * Don't try to accept all that are present, because this would allow a DoS attack + * in which no data were ever read or written. We should accept more than one, + * if available, to keep the partially accepted sockets from backing up in the kernel. + */ + + /* Make sure we use non-blocking i/o on the acceptor socket, since we're selecting it + * for readability. According to Stevens UNP, it's possible for an acceptor to select readable + * and then block when we call accept. For example, the other end resets the connection after + * the socket selects readable and before we call accept. The kernel will remove the dead + * socket from the accept queue. If the accept queue is now empty, accept will block. + */ + + + struct sockaddr_in6 pin; + socklen_t addrlen = sizeof (pin); + int accept_count = EventMachine_t::GetSimultaneousAcceptCount(); + + for (int i=0; i < accept_count; i++) { +#if defined(HAVE_CONST_SOCK_CLOEXEC) && defined(HAVE_ACCEPT4) + SOCKET sd = accept4 (GetSocket(), (struct sockaddr*)&pin, &addrlen, SOCK_CLOEXEC); + if (sd == INVALID_SOCKET) { + // We may be running in a kernel where + // SOCK_CLOEXEC is not supported - fall back: + sd = accept (GetSocket(), (struct sockaddr*)&pin, &addrlen); + } +#else + SOCKET sd = accept (GetSocket(), (struct sockaddr*)&pin, &addrlen); +#endif + if (sd == INVALID_SOCKET) { + // This breaks the loop when we've accepted everything on the kernel queue, + // up to 10 new connections. But what if the *first* accept fails? + // Does that mean anything serious is happening, beyond the situation + // described in the note above? + break; + } + + // Set the newly-accepted socket non-blocking and to close on exec. + // On Windows, this may fail because, weirdly, Windows inherits the non-blocking + // attribute that we applied to the acceptor socket into the accepted one. + if (!SetFdCloexec(sd) || !SetSocketNonblocking (sd)) { + //int val = fcntl (sd, F_GETFL, 0); + //if (fcntl (sd, F_SETFL, val | O_NONBLOCK) == -1) { + shutdown (sd, 1); + close (sd); + continue; + } + + // Disable slow-start (Nagle algorithm). Eventually make this configurable. + int one = 1; + setsockopt (sd, IPPROTO_TCP, TCP_NODELAY, (char*) &one, sizeof(one)); + + + ConnectionDescriptor *cd = new ConnectionDescriptor (sd, MyEventMachine); + if (!cd) + throw std::runtime_error ("no newly accepted connection"); + cd->SetServerMode(); + if (EventCallback) { + (*EventCallback) (GetBinding(), EM_CONNECTION_ACCEPTED, NULL, cd->GetBinding()); + } + #ifdef HAVE_EPOLL + cd->GetEpollEvent()->events = 0; + if (cd->SelectForRead()) + cd->GetEpollEvent()->events |= EPOLLIN; + if (cd->SelectForWrite()) + cd->GetEpollEvent()->events |= EPOLLOUT; + #endif + assert (MyEventMachine); + MyEventMachine->Add (cd); + #ifdef HAVE_KQUEUE + bKqueueArmWrite = cd->SelectForWrite(); + if (bKqueueArmWrite) + MyEventMachine->Modify (cd); + if (cd->SelectForRead()) + MyEventMachine->ArmKqueueReader (cd); + #endif + } + +} + + +/************************* +AcceptorDescriptor::Write +*************************/ + +void AcceptorDescriptor::Write() +{ + // Why are we here? + throw std::runtime_error ("bad code path in acceptor"); +} + + +/***************************** +AcceptorDescriptor::Heartbeat +*****************************/ + +void AcceptorDescriptor::Heartbeat() +{ + // No-op +} + + +/************************************** +DatagramDescriptor::DatagramDescriptor +**************************************/ + +DatagramDescriptor::DatagramDescriptor (SOCKET sd, EventMachine_t *parent_em): + EventableDescriptor (sd, parent_em), + OutboundDataSize (0) +{ + memset (&ReturnAddress, 0, sizeof(ReturnAddress)); + + /* Provisionally added 19Oct07. All datagram sockets support broadcasting. + * Until now, sending to a broadcast address would give EACCES (permission denied) + * on systems like Linux and BSD that require the SO_BROADCAST socket-option in order + * to accept a packet to a broadcast address. Solaris doesn't require it. I think + * Windows DOES require it but I'm not sure. + * + * Ruby does NOT do what we're doing here. In Ruby, you have to explicitly set SO_BROADCAST + * on a UDP socket in order to enable broadcasting. The reason for requiring the option + * in the first place is so that applications don't send broadcast datagrams by mistake. + * I imagine that could happen if a user of an application typed in an address that happened + * to be a broadcast address on that particular subnet. + * + * This is provisional because someone may eventually come up with a good reason not to + * do it for all UDP sockets. If that happens, then we'll need to add a usercode-level API + * to set the socket option, just like Ruby does. AND WE'LL ALSO BREAK CODE THAT DOESN'T + * EXPLICITLY SET THE OPTION. + */ + + int oval = 1; + setsockopt (GetSocket(), SOL_SOCKET, SO_BROADCAST, (char*)&oval, sizeof(oval)); + + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + #ifdef HAVE_KQUEUE + MyEventMachine->ArmKqueueReader (this); + #endif +} + + +/*************************************** +DatagramDescriptor::~DatagramDescriptor +***************************************/ + +DatagramDescriptor::~DatagramDescriptor() +{ + // Run down any stranded outbound data. + for (size_t i=0; i < OutboundPages.size(); i++) + OutboundPages[i].Free(); +} + + +/***************************** +DatagramDescriptor::Heartbeat +*****************************/ + +void DatagramDescriptor::Heartbeat() +{ + // Close it if its inactivity timer has expired. + + if (InactivityTimeout && ((MyEventMachine->GetCurrentLoopTime() - LastActivity) >= InactivityTimeout)) + ScheduleClose (false); + //bCloseNow = true; +} + + +/************************ +DatagramDescriptor::Read +************************/ + +void DatagramDescriptor::Read() +{ + SOCKET sd = GetSocket(); + assert (sd != INVALID_SOCKET); + LastActivity = MyEventMachine->GetCurrentLoopTime(); + + // This is an extremely large read buffer. + // In many cases you wouldn't expect to get any more than 4K. + char readbuffer [16 * 1024]; + + for (int i=0; i < 10; i++) { + // Don't read just one buffer and then move on. This is faster + // if there is a lot of incoming. + // But don't read indefinitely. Give other sockets a chance to run. + // NOTICE, we're reading one less than the buffer size. + // That's so we can put a guard byte at the end of what we send + // to user code. + + struct sockaddr_in6 sin; + socklen_t slen = sizeof (sin); + memset (&sin, 0, slen); + + int r = recvfrom (sd, readbuffer, sizeof(readbuffer) - 1, 0, (struct sockaddr*)&sin, &slen); + //cerr << ""; + + // In UDP, a zero-length packet is perfectly legal. + if (r >= 0) { + + // Add a null-terminator at the the end of the buffer + // that we will send to the callback. + // DO NOT EVER CHANGE THIS. We want to explicitly allow users + // to be able to depend on this behavior, so they will have + // the option to do some things faster. Additionally it's + // a security guard against buffer overflows. + readbuffer [r] = 0; + + + // Set up a "temporary" return address so that callers can "reply" to us + // from within the callback we are about to invoke. That means that ordinary + // calls to "send_data_to_connection" (which is of course misnamed in this + // case) will result in packets being sent back to the same place that sent + // us this one. + // There is a different call (evma_send_datagram) for cases where the caller + // actually wants to send a packet somewhere else. + + memset (&ReturnAddress, 0, sizeof(ReturnAddress)); + memcpy (&ReturnAddress, &sin, slen); + + _GenericInboundDispatch(readbuffer, r); + + } + else { + // Basically a would-block, meaning we've read everything there is to read. + break; + } + + } + + +} + + +/************************* +DatagramDescriptor::Write +*************************/ + +void DatagramDescriptor::Write() +{ + /* It's possible for a socket to select writable and then no longer + * be writable by the time we get around to writing. The kernel might + * have used up its available output buffers between the select call + * and when we get here. So this condition is not an error. + * This code is very reminiscent of ConnectionDescriptor::_WriteOutboundData, + * but differs in the that the outbound data pages (received from the + * user) are _message-structured._ That is, we send each of them out + * one message at a time. + * TODO, we are currently suppressing the EMSGSIZE error!!! + */ + + SOCKET sd = GetSocket(); + assert (sd != INVALID_SOCKET); + LastActivity = MyEventMachine->GetCurrentLoopTime(); + + assert (OutboundPages.size() > 0); + + // Send out up to 10 packets, then cycle the machine. + for (int i = 0; i < 10; i++) { + if (OutboundPages.size() <= 0) + break; + OutboundPage *op = &(OutboundPages[0]); + + // The nasty cast to (char*) is needed because Windows is brain-dead. + int s = sendto (sd, (char*)op->Buffer, op->Length, 0, (struct sockaddr*)&(op->From), + (op->From.sin6_family == AF_INET6 ? sizeof (struct sockaddr_in6) : sizeof (struct sockaddr_in))); +#ifdef OS_WIN32 + int e = WSAGetLastError(); +#else + int e = errno; +#endif + + OutboundDataSize -= op->Length; + op->Free(); + OutboundPages.pop_front(); + + if (s == SOCKET_ERROR) { + #ifdef OS_UNIX + if ((e != EINPROGRESS) && (e != EWOULDBLOCK) && (e != EINTR)) { + #endif + #ifdef OS_WIN32 + if ((e != WSAEINPROGRESS) && (e != WSAEWOULDBLOCK)) { + #endif + UnbindReasonCode = e; + Close(); + break; + } + } + } + + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + if (SelectForWrite()) + EpollEvent.events |= EPOLLOUT; + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + #ifdef HAVE_KQUEUE + bKqueueArmWrite = SelectForWrite(); + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif +} + + +/********************************** +DatagramDescriptor::SelectForWrite +**********************************/ + +bool DatagramDescriptor::SelectForWrite() +{ + /* Changed 15Nov07, per bug report by Mark Zvillius. + * The outbound data size will be zero if there are zero-length outbound packets, + * so we now select writable in case the outbound page buffer is not empty. + * Note that the superclass ShouldDelete method still checks for outbound data size, + * which may be wrong. + */ + //return (GetOutboundDataSize() > 0); (Original) + return (OutboundPages.size() > 0); +} + + +/************************************ +DatagramDescriptor::SendOutboundData +************************************/ + +int DatagramDescriptor::SendOutboundData (const char *data, unsigned long length) +{ + // This is almost an exact clone of ConnectionDescriptor::_SendRawOutboundData. + // That means most of it could be factored to a common ancestor. Note that + // empty datagrams are meaningful, which isn't the case for TCP streams. + + if (IsCloseScheduled()) + return 0; + + if (!data && (length > 0)) + throw std::runtime_error ("bad outbound data"); + char *buffer = (char *) malloc (length + 1); + if (!buffer) + throw std::runtime_error ("no allocation for outbound data"); + memcpy (buffer, data, length); + buffer [length] = 0; + OutboundPages.push_back (OutboundPage (buffer, length, ReturnAddress)); + OutboundDataSize += length; + + #ifdef HAVE_EPOLL + EpollEvent.events = (EPOLLIN | EPOLLOUT); + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + #ifdef HAVE_KQUEUE + bKqueueArmWrite = true; + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + + return length; +} + + +/**************************************** +DatagramDescriptor::SendOutboundDatagram +****************************************/ + +int DatagramDescriptor::SendOutboundDatagram (const char *data, unsigned long length, const char *address, int port) +{ + // This is an exact clone of ConnectionDescriptor::SendOutboundData. + // That means it needs to move to a common ancestor. + // TODO: Refactor this so there's no overlap with SendOutboundData. + + if (IsCloseScheduled()) + //if (bCloseNow || bCloseAfterWriting) + return 0; + + if (!address || !*address || !port) + return 0; + + struct sockaddr_in6 addr_here; + size_t addr_here_len = sizeof addr_here; + if (0 != EventMachine_t::name2address (address, port, SOCK_DGRAM, (struct sockaddr *)&addr_here, &addr_here_len)) + return -1; + + if (!data && (length > 0)) + throw std::runtime_error ("bad outbound data"); + char *buffer = (char *) malloc (length + 1); + if (!buffer) + throw std::runtime_error ("no allocation for outbound data"); + memcpy (buffer, data, length); + buffer [length] = 0; + OutboundPages.push_back (OutboundPage (buffer, length, addr_here)); + OutboundDataSize += length; + + #ifdef HAVE_EPOLL + EpollEvent.events = (EPOLLIN | EPOLLOUT); + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + #ifdef HAVE_KQUEUE + bKqueueArmWrite = true; + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + + return length; +} + + +/********************************************** +ConnectionDescriptor::GetCommInactivityTimeout +**********************************************/ + +uint64_t ConnectionDescriptor::GetCommInactivityTimeout() +{ + return InactivityTimeout / 1000; +} + + +/********************************************** +ConnectionDescriptor::SetCommInactivityTimeout +**********************************************/ + +int ConnectionDescriptor::SetCommInactivityTimeout (uint64_t value) +{ + InactivityTimeout = value * 1000; + MyEventMachine->QueueHeartbeat(this); + return 1; +} + +/******************************* +DatagramDescriptor::GetPeername +*******************************/ + +bool DatagramDescriptor::GetPeername (struct sockaddr *s, socklen_t *len) +{ + bool ok = false; + if (s) { + *len = sizeof(ReturnAddress); + memset (s, 0, sizeof(ReturnAddress)); + memcpy (s, &ReturnAddress, sizeof(ReturnAddress)); + ok = true; + } + return ok; +} + + +/******************************************** +DatagramDescriptor::GetCommInactivityTimeout +********************************************/ + +uint64_t DatagramDescriptor::GetCommInactivityTimeout() +{ + return InactivityTimeout / 1000; +} + +/******************************************** +DatagramDescriptor::SetCommInactivityTimeout +********************************************/ + +int DatagramDescriptor::SetCommInactivityTimeout (uint64_t value) +{ + if (value > 0) { + InactivityTimeout = value * 1000; + MyEventMachine->QueueHeartbeat(this); + return 1; + } + return 0; +} + + +/************************************ +InotifyDescriptor::InotifyDescriptor +*************************************/ + +InotifyDescriptor::InotifyDescriptor (EventMachine_t *em): + EventableDescriptor(0, em) +{ + bCallbackUnbind = false; + + #ifndef HAVE_INOTIFY + throw std::runtime_error("no inotify support on this system"); + #else + + int fd = inotify_init(); + if (fd == -1) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "unable to create inotify descriptor: %s", strerror(errno)); + throw std::runtime_error (buf); + } + + MySocket = fd; + SetSocketNonblocking(MySocket); + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + + #endif +} + + +/************************************* +InotifyDescriptor::~InotifyDescriptor +**************************************/ + +InotifyDescriptor::~InotifyDescriptor() +{ + close(MySocket); + MySocket = INVALID_SOCKET; +} + +/*********************** +InotifyDescriptor::Read +************************/ + +void InotifyDescriptor::Read() +{ + assert (MyEventMachine); + MyEventMachine->_ReadInotifyEvents(); +} + + +/************************ +InotifyDescriptor::Write +*************************/ + +void InotifyDescriptor::Write() +{ + throw std::runtime_error("bad code path in inotify"); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.h new file mode 100644 index 0000000000..4d7f7d4e30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.h @@ -0,0 +1,457 @@ +/***************************************************************************** + +$Id$ + +File: ed.h +Date: 06Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#ifndef __EventableDescriptor__H_ +#define __EventableDescriptor__H_ + + +class EventMachine_t; // forward reference +#ifdef WITH_SSL +class SslBox_t; // forward reference +#endif + +bool SetSocketNonblocking (SOCKET); +bool SetFdCloexec (int); + +/************************* +class EventableDescriptor +*************************/ + +class EventableDescriptor: public Bindable_t +{ + public: + EventableDescriptor (SOCKET, EventMachine_t*); + virtual ~EventableDescriptor() NO_EXCEPT_FALSE; + + SOCKET GetSocket() {return MySocket;} + void SetSocketInvalid() { MySocket = INVALID_SOCKET; } + void Close(); + + virtual void Read() = 0; + virtual void Write() = 0; + virtual void Heartbeat() = 0; + + // These methods tell us whether the descriptor + // should be selected or polled for read/write. + virtual bool SelectForRead() = 0; + virtual bool SelectForWrite() = 0; + + // are we scheduled for a close, or in an error state, or already closed? + bool ShouldDelete(); + // Do we have any data to write? This is used by ShouldDelete. + virtual int GetOutboundDataSize() {return 0;} + virtual bool IsWatchOnly(){ return bWatchOnly; } + + virtual void ScheduleClose (bool after_writing); + bool IsCloseScheduled(); + virtual void HandleError(){ ScheduleClose (false); } + + void SetEventCallback (EMCallback); + + virtual bool GetPeername (struct sockaddr*, socklen_t*) = 0; + virtual bool GetSockname (struct sockaddr*, socklen_t*) = 0; + virtual bool GetSubprocessPid (pid_t*) {return false;} + + virtual void StartTls() {} + virtual void SetTlsParms (const char *, const char *, bool, bool, const char *, const char *, const char *, const char *, int) {} + + #ifdef WITH_SSL + virtual X509 *GetPeerCert() {return NULL;} + virtual int GetCipherBits() {return -1;} + virtual const char *GetCipherName() {return NULL;} + virtual const char *GetCipherProtocol() {return NULL;} + virtual const char *GetSNIHostname() {return NULL;} + #endif + + virtual uint64_t GetCommInactivityTimeout() {return 0;} + virtual int SetCommInactivityTimeout (uint64_t) {return 0;} + uint64_t GetPendingConnectTimeout(); + int SetPendingConnectTimeout (uint64_t value); + uint64_t GetLastActivity() { return LastActivity; } + + #ifdef HAVE_EPOLL + struct epoll_event *GetEpollEvent() { return &EpollEvent; } + #endif + + #ifdef HAVE_KQUEUE + bool GetKqueueArmWrite() { return bKqueueArmWrite; } + #endif + + virtual void StartProxy(const uintptr_t, const unsigned long, const unsigned long); + virtual void StopProxy(); + virtual unsigned long GetProxiedBytes(){ return ProxiedBytes; }; + virtual void SetProxiedFrom(EventableDescriptor*, const unsigned long); + virtual int SendOutboundData(const char*,unsigned long){ return -1; } + virtual bool IsPaused(){ return bPaused; } + virtual bool Pause(){ bPaused = true; return bPaused; } + virtual bool Resume(){ bPaused = false; return bPaused; } + + void SetUnbindReasonCode(int code){ UnbindReasonCode = code; } + virtual int ReportErrorStatus(){ return 0; } + virtual bool IsConnectPending(){ return false; } + virtual uint64_t GetNextHeartbeat(); + + private: + bool bCloseNow; + bool bCloseAfterWriting; + + protected: + SOCKET MySocket; + bool bAttached; + bool bWatchOnly; + + EMCallback EventCallback; + void _GenericInboundDispatch (const char *buffer, unsigned long size); + bool _GenericGetPeername (struct sockaddr*, socklen_t*); + bool _GenericGetSockname (struct sockaddr*, socklen_t*); + + uint64_t CreatedAt; + bool bCallbackUnbind; + int UnbindReasonCode; + + unsigned long BytesToProxy; + EventableDescriptor *ProxyTarget; + EventableDescriptor *ProxiedFrom; + unsigned long ProxiedBytes; + + unsigned long MaxOutboundBufSize; + + #ifdef HAVE_EPOLL + struct epoll_event EpollEvent; + #endif + + #ifdef HAVE_KQUEUE + bool bKqueueArmWrite; + #endif + + EventMachine_t *MyEventMachine; + uint64_t PendingConnectTimeout; + uint64_t InactivityTimeout; + uint64_t LastActivity; + uint64_t NextHeartbeat; + bool bPaused; +}; + + + +/************************* +class LoopbreakDescriptor +*************************/ + +class LoopbreakDescriptor: public EventableDescriptor +{ + public: + LoopbreakDescriptor (SOCKET, EventMachine_t*); + virtual ~LoopbreakDescriptor() {} + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat() {} + + virtual bool SelectForRead() {return true;} + virtual bool SelectForWrite() {return false;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return _GenericGetPeername (s, len); } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); } +}; + + +/************************** +class ConnectionDescriptor +**************************/ + +class ConnectionDescriptor: public EventableDescriptor +{ + public: + ConnectionDescriptor (SOCKET, EventMachine_t*); + virtual ~ConnectionDescriptor(); + + int SendOutboundData (const char*, unsigned long); + + void SetConnectPending (bool f); + virtual void ScheduleClose (bool after_writing); + virtual void HandleError(); + + void SetNotifyReadable (bool); + void SetNotifyWritable (bool); + void SetAttached (bool); + void SetWatchOnly (bool); + + bool Pause(); + bool Resume(); + + bool IsNotifyReadable(){ return bNotifyReadable; } + bool IsNotifyWritable(){ return bNotifyWritable; } + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat(); + + virtual bool SelectForRead(); + virtual bool SelectForWrite(); + + // Do we have any data to write? This is used by ShouldDelete. + virtual int GetOutboundDataSize() {return OutboundDataSize;} + + virtual void StartTls(); + virtual void SetTlsParms (const char *, const char *, bool, bool, const char *, const char *, const char *, const char *, int); + + #ifdef WITH_SSL + virtual X509 *GetPeerCert(); + virtual int GetCipherBits(); + virtual const char *GetCipherName(); + virtual const char *GetCipherProtocol(); + virtual const char *GetSNIHostname(); + virtual bool VerifySslPeer(const char*); + virtual void AcceptSslPeer(); + #endif + + void SetServerMode() {bIsServer = true;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return _GenericGetPeername (s, len); } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); } + + virtual uint64_t GetCommInactivityTimeout(); + virtual int SetCommInactivityTimeout (uint64_t value); + + virtual int ReportErrorStatus(); + virtual bool IsConnectPending(){ return bConnectPending; } + + protected: + struct OutboundPage { + OutboundPage (const char *b, int l, int o=0): Buffer(b), Length(l), Offset(o) {} + void Free() {if (Buffer) free (const_cast(Buffer)); } + const char *Buffer; + int Length; + int Offset; + }; + + protected: + bool bConnectPending; + + bool bNotifyReadable; + bool bNotifyWritable; + + bool bReadAttemptedAfterClose; + bool bWriteAttemptedAfterClose; + + std::deque OutboundPages; + int OutboundDataSize; + + #ifdef WITH_SSL + SslBox_t *SslBox; + std::string CertChainFilename; + std::string PrivateKeyFilename; + std::string CipherList; + std::string EcdhCurve; + std::string DhParam; + int Protocols; + bool bHandshakeSignaled; + bool bSslVerifyPeer; + bool bSslFailIfNoPeerCert; + std::string SniHostName; + bool bSslPeerAccepted; + #endif + + #ifdef HAVE_KQUEUE + bool bGotExtraKqueueEvent; + #endif + + bool bIsServer; + + private: + void _UpdateEvents(); + void _UpdateEvents(bool, bool); + void _WriteOutboundData(); + void _DispatchInboundData (const char *buffer, unsigned long size); + void _DispatchCiphertext(); + int _SendRawOutboundData (const char *buffer, unsigned long size); + void _CheckHandshakeStatus(); + +}; + + +/************************ +class DatagramDescriptor +************************/ + +class DatagramDescriptor: public EventableDescriptor +{ + public: + DatagramDescriptor (SOCKET, EventMachine_t*); + virtual ~DatagramDescriptor(); + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat(); + + virtual bool SelectForRead() {return true;} + virtual bool SelectForWrite(); + + int SendOutboundData (const char*, unsigned long); + int SendOutboundDatagram (const char*, unsigned long, const char*, int); + + // Do we have any data to write? This is used by ShouldDelete. + virtual int GetOutboundDataSize() {return OutboundDataSize;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len); + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); }; + + virtual uint64_t GetCommInactivityTimeout(); + virtual int SetCommInactivityTimeout (uint64_t value); + + protected: + struct OutboundPage { + OutboundPage (const char *b, int l, struct sockaddr_in6 f, int o=0): Buffer(b), Length(l), Offset(o), From(f) {} + void Free() {if (Buffer) free (const_cast(Buffer)); } + const char *Buffer; + int Length; + int Offset; + struct sockaddr_in6 From; + }; + + std::deque OutboundPages; + int OutboundDataSize; + + struct sockaddr_in6 ReturnAddress; +}; + + +/************************ +class AcceptorDescriptor +************************/ + +class AcceptorDescriptor: public EventableDescriptor +{ + public: + AcceptorDescriptor (SOCKET, EventMachine_t*); + virtual ~AcceptorDescriptor(); + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat(); + + virtual bool SelectForRead() {return true;} + virtual bool SelectForWrite() {return false;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return _GenericGetPeername (s, len); } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); }; + + static void StopAcceptor (const uintptr_t binding); +}; + +/******************** +class PipeDescriptor +********************/ + +#ifdef OS_UNIX +class PipeDescriptor: public EventableDescriptor +{ + public: + PipeDescriptor (SOCKET, pid_t, EventMachine_t*); + virtual ~PipeDescriptor() NO_EXCEPT_FALSE; + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat(); + + virtual bool SelectForRead(); + virtual bool SelectForWrite(); + + int SendOutboundData (const char*, unsigned long); + virtual int GetOutboundDataSize() {return OutboundDataSize;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return _GenericGetPeername (s, len); } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); } + + virtual bool GetSubprocessPid (pid_t*); + + protected: + struct OutboundPage { + OutboundPage (const char *b, int l, int o=0): Buffer(b), Length(l), Offset(o) {} + void Free() {if (Buffer) free (const_cast(Buffer)); } + const char *Buffer; + int Length; + int Offset; + }; + + protected: + bool bReadAttemptedAfterClose; + + std::deque OutboundPages; + int OutboundDataSize; + + pid_t SubprocessPid; + + private: + void _DispatchInboundData (const char *buffer, int size); +}; +#endif // OS_UNIX + + +/************************ +class KeyboardDescriptor +************************/ + +class KeyboardDescriptor: public EventableDescriptor +{ + public: + KeyboardDescriptor (EventMachine_t*); + virtual ~KeyboardDescriptor(); + + virtual void Read(); + virtual void Write(); + virtual void Heartbeat(); + + virtual bool SelectForRead() {return true;} + virtual bool SelectForWrite() {return false;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return _GenericGetPeername (s, len); } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return _GenericGetSockname (s, len); } + + protected: + bool bReadAttemptedAfterClose; + + private: + void _DispatchInboundData (const char *buffer, int size); +}; + + +/*********************** +class InotifyDescriptor +************************/ + +class InotifyDescriptor: public EventableDescriptor +{ + public: + InotifyDescriptor (EventMachine_t*); + virtual ~InotifyDescriptor(); + + void Read(); + void Write(); + + virtual void Heartbeat() {} + virtual bool SelectForRead() {return true;} + virtual bool SelectForWrite() {return false;} + + virtual bool GetPeername (struct sockaddr* s, socklen_t* len) { return false; } + virtual bool GetSockname (struct sockaddr* s, socklen_t* len) { return false; } +}; + +#endif // __EventableDescriptor__H_ diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ed.o new file mode 100644 index 0000000000000000000000000000000000000000..d57312e15478e72a7890318de9c102ba64173700 GIT binary patch literal 1863568 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 z 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%0DpQ0n;B*R&D7GV|= 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%0D+5`*%o6tK^SiP{vE@3S^mgjSO#Yszh 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

              _&piidgVXhvY-_n=mqDr^tu_@cG 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

              +vb#+~0*B zUm?!@-R$vQ;@sa0;#{9U#2aFN|MPgXp@E1SUsrQIGkH9h_+a!`6=zRfapt>-Gyl0b z_iMPv$BT2n=6HOuIQMIv$G3`ezYco*m^k)b}1`N87Mj}&KqsW|g%#JOMFJ-%0*`*qyo=ft^RH$482IQJ{o@X+<={0YTp zVmOLT^*`_NYvNr0`yPKL&h<|` zB6R&ZPipZkSf6Yj|3IAQTSNS3^fVB^4(}<>br>Md{7iA?7l<>zQ=It&;#|*D9={;Y z^?WAI{x{;6aK5QVhOR$7lQ`!uCEgmZdn<`g;OFliZz5jpeLF`xk9QWYi~InO4-?Om z+xE{FpN=_~iEn~$@c4G|{m38i_)+oW$e;K4HSx4K-@6`vES?GZuu-A=OOGj@2l>R} zT<6r{NwJ>U#8bgP5a;?=6X!bD6Tg7R_GYigP`ai*r5G zi*r45iSxV)h;#m0;!`nCL-AekHsYM8qxh#-&)(t-;Df|>!$*r>f=?2^179uv4d&b^ z&iQwVv;Uwt`>%>$M*nT`FwFBmah}&paUM6?n9%Ei$Bifc4E;I8*`H7RH{?r*v%i8k z`&)@0Lr(|s)9_*9d2yYO6K@Eg;qm$6jgVjI@%7@(k>Bm{L*iSIKk4!F|BtSFfzNXO z|2Tekpy|LI(okA*SS41(9AZfsi6IQp5LPKmQiMjKBu$FtkV&y3<{U{&4yj}b&9PBw zIW^~;|GW12yzk$4ugCw|<3aV@XP@iy{d~XIb>H`OUH3is5|7^$xYo}R zF@79e>*v%M9{|_-85HAJz_orx$M}tKt)EFTUJTdznH}Sg!L@##iSd`=T0d{c_+fZ`)N10*3Ypqej@yQ&vPbR>*{>C*3V@z zJ{+#~GcLv_z_otvit&5lT0e7R{7Jah&r31B6t4C2Zj65j*ZQfB@fx_+&u=mQFI?+n zr#t`u^|LEn>*r9o*3Xe}t)CNO{1mv>Paa(BCm*i$Gc3kO!L@#Fj`7KGt)Ce&{vcfI zXF-fV3)lKt660^ewSLyc_@{8KpRZ&52e{VH-!a~F>i@q^c8T#eaIK#naIK%7aIK%5 z7|(_4`Q!yLekok*Z6sXl?K=32U2XgmWBg9Io=@Hv;}65NJ{QLL3vl(b5}w=D>a2q2 zxo?DPyx+oK^7!B2s`FpC>e=hAhU?@y&(i^3>V7c1r#~+`9Io|wJY2`Ili;f761egY zh36e&b&rNC|BZ0vFM;>>Jf-ln+!w>wc^{U;b^KWa*Ky_}xQ-`Z!qvB}aE+_!w1)Gw z+3RTuS3Pau%HJNY{71tJ53%i?0Kdt-e~h0EAMf#_;6?7^;N|YO#rR$D_dNc=7@rIO zz~i5e@t5Fd9cq2}5I)cId=6jbUIXvod1~PYy0<89IKO{*p55V%JbvF8KM>x+<9oq( zbUzv1-2F1R;)lbPe-d2r#c<^>hbw*&T=DDR-Mr3E;m5fD20z06U-;4Pd*9u#|BBxa zuKYdWithtg{>$Ks9}ZXiBzV5pSqv|Be;~#mg+J->&&2r4@Mk>!jTm1I&&;$wegnVN z^ZW!abN?sCcbMLAUQ~Z7{9n(L25;>3bd2#X@FpJL7ygmwKMnqc`*|^bF}%j(Z-8%f zp9tULUJ6%y8C?07!xg^@uKeG^75_6_@jKtsa9(!yzU>K5bMFS<-Tf$d8~3x}ioX!9 z{A1yYFM=z7DO~YoaK$f&Yn`uxAMf>l6ysmO`+5A<82=G|y2t+=<4tEYoR?gW-w&?( zJHt=#_#QFd6W-V3Pl@p};i{()p6_|a!VBCd#P}5W5Rab^SN><<%KvJNzX4bNui%Bg z-EZKf?!U(PKk!#PzQxRj^C;gPzSQIQjqwBF$91#3C&E?#sqhCq|G6zVxvz=wkKn&~{EzS--T#39>fZX^hV!fVc5vm- zf-627uKf9M#TUR8KLOs>*U1$4f$opNJGeguKfrw@T=DP2mH&IV;(vuJf9v}i_EYig z;EKC{NyGVl-t+7Qf7N~e7(W>PmdBq2U*>)~{7v^^aK(>; zEB{?^#or58{ukkje+{nqkKx~WonOL#bN?IuqkGd?4g377dpcb48F1zA4Oe_WxbhE! zD}EGQ@pr*feZRODeyaN;F+LxDuE)O(@9zE{T=_qV@vq>@pSZtapYuI`3Ve+F?lHa( zyl)T7dti(o0?+mMV`Kb8`1B(z{~-9AUgs6?%)=~xRE&>-x@zRibcc^{sEpYFaIuKs)gSAVKwyaxW8_w(l%{|mmK_ow-T4d+Y! z*$uA#bbzZro!}MTx5H!nSh)Jx53YWm1<&?=UKHb(!`1%@@TK0jDeyhKKlj4bpV@Hr zXFgp0c?PcWz6#fP-+-(B4R9R?w!n4#`8me_f}i1i*yEvw>tURGTljdDW23I}z!Bx*&aOGbESN_l7%D)M&{EcTf?2qy{hbweMjvIM!Jsw>eKX>&wo&i9}54$v8H|xYpZ_k0k29qP@9s z-G5qdUEx~)J>XhDXTcSJ0bKFd!4-cqT=93h>-f{^;zsp#KN1r^AFlQGW{kfJ@8|RW zDSU?eM!42tqdE0uB^r4@pYZsd;EF#8uJ}XYFM6I+;jg(5fWPj3af}avf8g=g#P|*H ztsXxMu6iDUD}E_F-}Af;zs-FeTz&f#uKnnDxbpu8AMW{^KWg*Eb+wDT=26>i1K0k( zUre4O5wASQ!&Uz&F?j|dUU{y7>v%Ob#*5&p{{gu2KMGg;Q||2Ba>Re-$E8*9t?pmL zOa1Zg2l%J%f5dpBxefQbUp>BMjPC*e!{hgh@y_s1kF@Rei1D8A1G6l?UyPpx@8j_o z#rWm$Q64`Lp6PYo3197gAAGI*!*GpvL5x2O*LW-78rKTA>i-%(!0Y(|KG1!qc@5|N zG51~Ji{0D7HQoc@s=pgt^&bUS{b$2f&xLT+Qvg>zg>dzMT#QeEtNy#;s(%(-^}huF z$NRPvzN4?Vl`;N4Jk{g3!CSch4&TLn_s1H}uj2QCD}NST@!4?Y&xb3%0Iv86@H4#5 zDew#2%i!m@m&4C@Ukz9M2XN*85w7?@;L5+(;|=?%_zrNz9}6$?I!}a8az8!B&xJqg z@t4H-Q21Prp9EJu#c&i<$njR{2#>lXK>~J6JGA)YFyTEUKY8xit*O) z_dGs5#xvlR9^V(PdQO9@p7Ub-Vz}~;hb#Z>aOIyK@b8bZ z`S=l@>i!43wR_X~4d+qb5`K!uw}GGL-X1>0y)%5Vdv|z+dw=)=?q|b$xL*ucJwxE< zd;G0%<(~>y{t~$Im%^2QF;fmh?SNs;Z;u|k$IA8bpxSGQsaBm&s?cnn~J_}yz zo(-StJ`k?>!Eogt4_Ex{aOHm-uK1_nieCv|<#oOf|Iqz=c%}QV@DJQ~eWGFi6~7l; z`45LH{#dy34}>dzFkJED;k91p?eJDdTiw%R{C@Z~$5{Nl7+(m#*5en)_;UDX9{&Yg z^?wal{XfR|A8_Sw^JK&MQvUXEiGz+dVYbcp1ELjY&c(v-w&?%>=@61YrF&C z8t*{3`doXs&`~`639}QRj8{x`-KYW_kKL@VkXL*b- zf~(K(#Q0jc`ne6RdVYt`@H(43-Eh9N-4<}|?+3xv&qLuFZ_gO-1J`!Xfook|1lM?P zfUBN~@HIZ(yWyJOS#Ztoi*V(C4X*s}z?FY3T=~C)EB`NW<^M0no0T`5$I-t2_kgRP zZQ-i3Q;c_mtNv5rs(%1n^P3M>Jq2*h??kxza3}m%pWnyfihmle_;+LcLwJh!vlgyA z+u@4e^O=V8@`UHv7yhFAF>uBAhATcFp6+=H;Qibu!WDlfT=8Xa#h1eszXo3I+x-aM z@>uK3modH-exAqw661fv2YGz+XB+lkz8ieco)*^?uKIhxzx8ot$9N80<2@_JFMz9_ z>)`wQxNe4bcfS*^@y>u>>hVv*pLTx<{*wFaF}@PM%;Pu1Uv>W;Ug6&SxrXzl_}$>j z-xaR-9&qJ92d?;w;EKNv{-@V@GrXy6OUg8SNuD0<=+HX{C9BWZ}oh` zek#5-T=AKKkF+1H|9=)d!@t)%#{0o1di*&tei8gGkH0d;uYqrjE_Bv?O@o`(-R}eU z%Xf)6F}?tPyC-@f#+SfV|Ed^Y2cO~jzlia#;TmtF7wiY4;fM3J6I|nM4OgA*;L3j# z+{;Y#f@?jT8sh`tJv`AMxazqAu6k~P`(=W}9q^969%jPx+#iBZb}x(Za`;q_e*<3Z zz8b#BeSM5?fLD3^&+sqY|AMPOd%oCkJ*YqX!hiMtcZ%_DaP{*zxcb=_KGf?xBgW5z ztN)kB_z1ZAe+yjwzXN{1*E2K5AA)PX7R30oaLw0SaLv~mxaMmsT=ViHTz&oY{a` zakYbMT%F*mzZ+cj_k^p?K5*4}FbU`~dhUZO|HJTqtX+xn7+(ah zzcI4zXO_qKD!A(Z46gb&!5{bW?(m8grukC+t>DU^23P)cxbhzZSN`5`t%uX$%6~3g z{T~Ha-^RgJ{~d7UpAJ|3&%l-EWw`490IvAY;BCDB+u@2&EN(b2if;>7{Qhv&bEv!a z(@8hjhEGKNRbJ1j@M8BX;EKNrKFZ^7i1CT=YdwBijNb=WJaULR8o2WBu%zMoSN>LTjkgnA+wBI|cyr+$eO!6)UhbpdiXR78d`XO# z!q4*ji{Z+%9Ip6kcn@n=q6V(>AwS3XUvRxH-s`o7{a5}DaOFQZ#t(-p|Cw;*KOe6A zm&N#SxbjbdEB`%k#Xk){$@}>dT=l#j<169HUjtYETKGWUZi}T2`>*)j;fg;5p6_{% zfDd->9pnArqdfkc7{3TU-s8u?^W7)F6<->7Zf^YTs47mD}30HrPiSgd>Dc;Z1V*DJq z`ZGAjuY~XJ^^b}1@$l9jKQ+c@!n=8VX^fY_Cwu&hG5#8Sp2xov<7?rXuWfM6*Y9x6 zSL0=g`Y){qd2@IZucvj4w}WfGy2SWl@b;enxESvXAL{V~VtgR{9*@5w#;<~_pHtyO zeBI83k9RMHYu?M?_jx_b;a7W}Rq!JBui=XS0j~I+UT-+Rir*Ek`VWR{KRp~i&+EyB zD?Sgd_)&1hkAqM5{I|vUU2x@J09XEJ;fjAZ#y^C=@AXu}wGM0G6McT0EN|FpTgr{FlKMKOFwH=a~dod@)?{Pr!S5AD)As;{IBUzXc!Q@f+c% zyMGHm%e~nf4g0V7UEs=pFkJD6!^yI%i;@D=WJ;j7&%;EG=X zSN_d##eWZ1{#I``?5E;e!xf(iuk|{!;LVP=yuD+*AN*I3KPSd7g8$|5SH}1?@V?nr z&-fU>9lpfl=fN|5y9?nx++U9IW$-^eel=X<`T)MS*RuhBl=~LA>Tmp(jk{6ZAC2q& zyWY3k9Iox|30MAo;mUtB{8Z0>0{mk4{%~#gZ1`S2u0pu#9}Bplfu>i!sf zzWY<~CGM}lkMlZThc9ve0xbpu2*LrUHcHN}beQAE>E#a!CGrSKyD z;f3x!W4sUidXLYCk9IGBU*~=+T=7%k%3lUod^ueC*TNP5FfcJ9GjPWe^DIVV&u65oIevQYU6XO@b)&C*z1)gUle6jnTaMd#d zuKaW0%D({K-S?LjaOJOrEB_a8<^LM4{7qLioL}W{30M9$aOH0g*YTutjCY6Yc#<9C zIdIi~DSV30%P_d=9|M2R0)t~h-z5%ZK|Ac?; z<88dU;k<8lZx!RM;oCeu6aI~R7W@bIv*C)r5U%`V;fgPUEB_;K#m|Q;{tdY1Wi@fXKLxJ*m%$Z39IpJ+;EKNwuJ~u+hj^W@z_Z*xgdgVqIs8cXzu<~*vbJGAm49Ej z;tzx?e-2#nxp2h~gBN<8qu`IZ-xTAw!MpUa@!TEbv*6u4{_z-p8h(VwzY^oG!zX%t zWsFzB@AUYMG5#(59gpAX{f6^6(0y0m~ zr^A*1S-9d~fh+z)_~TyZ=kRCT|AIg1-eg_FK9{?<5KN_z1 zVtA$3Spsj}*T(Z`j6VT?&*NW=@z>y09=|%qKY)Md@f%`%3w+0utp1;3{7?A)9>2o} z4d+qb3Vwjcr^R?We7MJViSfhWGd;dnjGqj@-{S|w_(1qFj~^Q2SHs`(_#0#VR`|~z ze@~1*0RP?NUxaIYz6RI&d?&`&!n^tU`7Fja!L{Cgit#_;T5mgi*l_*GTfw!i(qcRv zuJzU>#t(z{_I@50<9*>;Zv$d{Ap8-}e?^R61=sveg=>Ci!dv=$mBx4(e4WQX7vqcJ zI{v&9<7?sCe?N=yO>p(|rx^beu72+DQN#5kZw1%>yHAXFglqpjB*u?`YyUkl#!rQ7 zey@OQzq<qp{&+K7>vl3+>vJw#{dp3u_4z9NQt!hXaP{ZC7+(+9dfoz8f40HZpa0p|=DAh^bRDExRI*U|86-A{nu$?j=MA{(c@M67*27iLPjKb=6F%Da-yJ?~IFIsH@bMm>0l(fo6MmC>f4Jh$hAV#| zT=8S!%0COP_($N1e-)naI^TfndDI5@T94lX|J1$lCk^}gk$ZFaC+-Kq6@MsP`A>l> z{!F;?kAf?H99;4D20q$`Qvd(i@E-oX`7!K_32%_auI)&Byxwp$2S{yX8y zKLf7(55txJak%oo4u8uxuoB)oYIxn(hw!oPpTifp*Ti@&{3(xb`k8Gf`e!u1&$zdQ zf9c*P#@oXi`FcAH-pu_NxcYMrT>ZHS-rDOK65}J`>gP>x_479P9iIR07@q}K{~wF- zr{L=U>u~jdC49Np^I?pC4%d8r6XQR@HD5b^-f%r=zIKLdzB<7*FWunk^RaOC`9!$- za5`LlI2W!uuZDkV!%18ZKi>O!D_r@f!awx*61cWo3Riy?!<%}ZF3i0B`5{Yh!#nJl*4)R5x4?@)mH_-xjX= z_lLjd`TM|Ce}B00=fRafAFll4;L1M%uJtetuKf4G)&J+<>d#`h>R$<0{`cXk|3|p; z`~g?}dwiLw|BBihJx^17TlkUQ|17xTv*Cv_`IxazseUB`_l9&S`$-$cYuGfvzI z*KzxCxZDifGd7Fd{b0#-Pc1gJ`b+^ufvspC0x%ZH^UYGJ-l&atEbgQ`&0c? zd~3MsPml2oxbpXbD}R5u#ybSA?T&VbD`Wf`xbjbjEC2oQxt@Psj4y;M z|0=lhuY)Uo8$8Fi`#XHDd*jXa7p;GJbGY(nz?DA}euL-l2Uq-AaK(>+7kQp*;S=2_ z#P}5WJsy8=jL(KY?D31?MefVtimwj5{t)8>u7US(|2fA0g1>pPZFtA8?ayewqWtom z;qQ8U+Zf*;{-4Jm8skU8PdUZv=o91p;iEi0FUIrX?|A%8@Pzm6Hn{qEcZ|=1ulDiI zjqxYp>gOvl{yJRse-2muo8hXzHpaKZS9twRwlrK1@)mH_zgLWRfbZ)4KRCt@hig5Y z5aXx7Z}t3V$M}VC^>Z9t{hR<-Kkth1d*N?+KOc$l`Ed2~r5Ildf7HjjGREJBS9pAN zjMu=`pC&a8*Ms`g0 z#&3q-;qlXA{66>#9zQ3>7r;OE_(d^Z0pITNt73c|ymNo+=Z|pB*B@}rSJUqst_OKb z_$mD?u1$=$hiksN#&{3-VW(RD>=@61_we|0V*Dcb86H0*#z(@R@c8jDemneakDngn z_ro<`i{P5C3b^KFRgABLXLvnd#Q4{6&DSq6{x`g7f19snKQvrF@?GE^Jic9w9{^W> zvf-_L9p=EhxSs{rJYE2Q+52-Xd|%IV6Z}y3S#ZTa0$2R2aK*m?SN$8{=lgcIz%O!d zvaMnNwV$?tEB-*Z;tzo<{$#k~&wwlbsu&*w-|F?>3fFOXDtxBT*8?&BD7@6;pNjDp z;g5Oz2XKw+Gq~#i2Cn*lf-8S&ZNvGR<9$ejEB_I2#UBU%!t)G-D}FFs@#EnadmnCx z4|Sg&eujZ>0yW zpN%Lp@D%@h^hdV;J<1bpLtnZ6m&jWR>;BC5zem2a|2_Jn(ElE}YKy2S`d{5wRC3UK@CN;Pr*q{X432zra%?sQZfk z*uVa7_P_MN4-8z_OQUaR1fCtlcMd!^@Ph--5B!k83j@y#yeRPQffomUc;Kah9}#$Y z;8}rJ1b%ejm4P1{cy-{%1zsC?cHs3V&FlUhefxyKQ=^mVbzhO6SpPTsUwYtu1J4ZH zPr=lGH#=~DiC*uyfu9@X$q)RzzzYM<54={9b4pm+*1+X*IoOv;xBU78kUc6*V>bh zcF#usYuz>1ioeS}KZuX!U3I9pQGDb&b`&DMz5iQ1QT%@H#fZ=Lf0w{#`oBxz3;f?@ z@E85x74XUa?-lT={_jfo-TvlKSwcQ%{Hjl4`|K`3Op6X8`Qhh&*z8(El`P1Mvo+lly{2A~+JU$z) z?dHJSdp)`E1KsoB+3tmKjvn z@c3%D^4GvG@%Zp@AqvrUQ-a5f$V)vw75=z;8hp8XCS3Wm;4?iw8?O90@C6>94}YUY zU9ojv1@Pb93*m+Sq z!Q*S;uefiAzviC0L&No>JZW&{Nrx}@JQ;BHGaIh_IdJ9Ag|G1Zd2r<~g!l9p(_`T$ zxEI0Cb)N(u=w1vT0SX>{VU+AzY?x`s^FJ;{%ZJ0_Zs-M?g>BH zq2r1AlLA+NQsLTe8eH2=hikhTaP>12u6}00)z4h`I3HIYyvRKtuKWe?*&bg6SDs1m zJ3PJ^KFz%ZuJM+_wcRrK%buqk{+jzD`0MVKaOJ6jD^E52ZO>B!SN{{u8XixSKLxJ* zsqodFKMk(@ned*w*!HsEC%9+B&vnm%4|LCk4|30gPjk2T%GfZy-&*>L5_f#2crxp3vlgTLju?zZS0i+u_Qe@YkJM56YhcSN?Rk@@K%6KNGI}S#aggg)6_# zH>ghK&quuS7r>QYuh*4F`6nS>`HSJoUjkSDa(IR>+(qz%-7Dak?knIu+^gX`r`h_i zf$!#C3*XayJA5DaRNn#BpTX{F@Dc9m@LSw7;Pc!w;ZM3}!4rPbEElf)dGKP-lMkQm zUI14;h46lRSwF|ZPjfGZtDX|L>M4b*o-(-VDTk|`MR3(q3IEo|TLo|9^;g4hbFYD` z|GLPk^`QJIejZ4!{Hbu|PlGFeCS3Wm;L4v3SN+Xf{b?#%~pSbJ%llt?O`y|9~buWdd?_9 zR=`)fSHi2@tKeU|*TPRoxAnFiexiHAU*Bln`@5&W^W4*8JOh4_$7jL^xo5!(+;idG zIwb19^5Dhp`S3>jS$qNf5O=+P)p(U>65=a7e=&TGdkI|IEr&1g_(gE#uYfE63b^uD z!_V?@)xa-zuZ0hF-wq$+uA8pZpGod1sn%Ed4EI!cse2lHu6rh2^<=?SPc~fjdB`3s?SP_&1)v1m3Kp^{W(~=3WM$;a(1}bYBGj*1Zzm-MtDv+`SrJ z?Op>{{=}{g=l#t6?cXWzf$pjBBKI`-?gv<&Ot|uA!IeK7uKYRh=AJ(vuJ{7@y!QwCH)}la}~T%hIuu-gL@79NcUR! z(eB&fo85J@rj8rmxu^JfFL|R*R!=H?7xy&yp6==JmYpq62K;>YZ1~^apB%XQlMBDy z>(7I0y!mjAw*ap37Q!{&v2cyI2(Ix?f@{2`aE-SNuJM+`r~7yp!S8dggwJ!Yf-i8d zhQI7y1ApDU7OwGbhj;M#P4)AjT34zk4X%39;i@MC{+id54Og8x@Jf%*g=;!xt62jx%k^WX9dJde(c%e7x;AYSvB3D>-2!BhNrl?^}2JqO;;Js+-m3gD`z z5UzU0!c|XkjF-SQ@1^iAUS}D+yL&lY<5~ni$KxyDgWXrahq+h7HLe=C>aT^X{_Swp zpX%2Qv>xPXaLr>nT;s}sU+DE`!Zofe_>CT)3s*gPaMhC!S3L!A)l(GXli->cosU<4 zRA&j|Cwl#*@G0(P@Q2(h;Hq;4T=i7KRZkUM_0-1rcDU+H`1K-2kS3Dyz&&nRsUGH>Mw?CyCrbtDTS}{`pe*(+$-S9 zzXGoOm2l;+g1_(iYvFhK^NQ{8V)uk!=TSdrxTnAmIoO}y!t>nI;Cptp_;mQb?z&E; z?H=NujrjY$o*ekY?z!+M-Sgl}-Sgqg-3#FFxfjAeaUToc+xt)i-`9N-yrX+DT>UJ8 ztDmKC^|K7FepbMzcd>a{0bk-?39t4#tKhZnweTlB&vv-->kTHFcjZs<>qv6tPltcu z`7_{+yq-*Wg?koU+s%e+yE*XRJx@Md`3vC6UkF$Jv2f+rbv*SU+xLqS#P@bDh4*(a zgP-GG4$pUA1b@N30{*i53iyaaY+Y5uuk-jCc&U3WJlpeZhv&N|{Q8gjGuU0%i{z>& z9r4Pa0ayM^xbkPgl|L80&c~Gp|HVBYp78n$;Eml2;i_{iTy+-1H~V%=;Hsw-uKZ*WHgN@Y(K_@F(4?;IFvX!ZQ!E{M+Hzy6d{1=6#%dieK-Nm%69Jl|KW1vd3q_ zl|Kuv{JC)D&x0#}K768Yw*apEMeu(;eiA&bhxM%(Ug}-~FLy76pMHepDT9x2uYfl? z+}8uVrF$iO5BDng;qJ9?<=GD3)#DR>y-xG4JSlMXCl#*#q`}o6T`yIB^(O=I>Q6R2 z+w0VIQRV69o{RVy?s@Q9_d@tyWUw{)+DD}N1K`D@|Iza6gpseav6^P>D|aOF>jD}M%D`Lp4fN80|917Gc)3t#J= z2R|^&^5nx$aW8<6a@TcujrTFnKMC;_?!|D`Qvz2#rEt|#23I{5@B@zW;|aWndnG*A zy$YW1UJLK$z8$Xo3BMk${wRM6T=~=Ct&g_)bzgw;oZ+5{__N)!;KSUr;UnC0;IF&u zegSQFrF$OYKXlKBf9hTU-|Ain|G|AM{BQRnc%x&iKa=2lx);Oma@YL`8rNs;<%n1R z7s1oLo(lK@?knJ$uS&S)s|v39s)lR6YTy%ny9vJ!LgP~Y6u9!I!j(S_uKbyB^&tzc zK4im{CkLKfZ}8-LgD2M;Jh|TB$@Kic6RT=i$cRev^I z_2qmV{fvaz+aE&VsuD+$iHLeV}#+3b%U`178p60Xl}se)@{;^zG)tv)uFGSGniIReu3o^%ud5 zJkKP!`dJKDKTF{1XDM9$DT6QZ{#3x{dp#@Qsz>*eYF?DTit(Pm7GBsZQUA3aUh1w7 zF;xBq?kRqMqP+VFmM0xP#p5&J%AW~;&f~M-%AX4__wDAvzjM!r=l8Zc3*dv@3*ja1 zW8oF<#c<0!&T2Bxaz5d7kQmkaOJ6nul4vEcN-pjFXfIb3xvf~(F7xawR1SDlq`)ma5soz-yFSp(Pa*{Ox= z_xNmw>-P}pLzbiE6wU8u??Xz4^;NFl`;!hoqo2iPz%O#ogb#Jkf?wsH4Ik&8121yV zg->$NgU@m=gsaZ6aMf7^SDlmKsM0C-=OBJ8T)ij? z+~49>|5KCTiZ2d)w;+EBT=kR&uIEb8kCnmI>+-<;meTsIEP^Y4Mc`>cJuBdfuMB+e zAifH&`0Bvh2Jtm;#n%SzmqhA+YCBx<3BTVnTF>c0{uH>@Pio-%1@UQc^)o$ie+g3m zQyFlr-ORxKDMo#K7QB^jJ3DaSW$V9_18?r}xq%Wr+SAX&Y_gf_E;|t)5FAQAA zfanLt!nK}@0?(|^Z2y}CS3ipb_gl*9f1m`edP)QLTT<%d%iua5mIv;)K-I@Df@{7i z0?)G2>;Jz3uKFtj_e(_e@l|luQyuuRLH-)J^4A9Lr`YO$YCBy0Np!KK(fZG}zt;ah z1+Mu@4g7>4J`JvV(gW8^?&!xd;HoDx@V-I*EV$yc1J4QKbKr{44gBOFJ`cXszn35Q zxj}pZe0Tp|Vc_Ql@nhlX{=K5W^Mm+Fa2LHv<$+%w#4my? zz9R5~Abtg0@s)uO4dScdimwj*${@Z5uK3!(qw59w+78$Cl!PDDqV*rWUei|!T(6f? z0}r2HrNMRV)4FS3mw2X<*ZryEN93~t*E)*){=nP$-y^@b?!TTREyIEEC41YRr|n1a zdW{%``fXl`$RCWrzx=dpy+0(Z`&0W=6hAxgGyLz7>$PS?+D9TUjljPK`Ja(T^%p&C zGd3*nNBr;6AJ+sP#h-SSjcYu7bE+MgZVh~n|2_I+THsNhmM>Y~O5pDdi&j7)p&C@@ zSMS-8cmd*HZf5bi-l+JCzP37FLwt=F^-kcA`ro5J)&@Q|@T$P0`X8KQot#{>U8@Up=F34DIwKJ5B+64kT!DYn9Qw{|4`^IfcOdj+l@M(NrI{zQc9IR{DR%Ap62#P{W^R;$m8Fx_ZI@+Cy0MB@D72$6!<}bFABVC;4cS$bl_3_ zm!{eAp*OtMV+Q>K509&71pZ2p|GdB#2Yzwj(RK&DZ2Qa5z+VmGM+F|mPxTuJt_yrg z5PwVHQTz!nTK+o%59_}>@F@P+rqK$hdyIqEesAlxG;keDqj+yq{X8y>z`vdh;wyx8 ze?A-dvcQ)F9@R7MT00KB1)ut!`I^9A5Av)Je0kv2fk*j2z1iknzh@*G{To4iZ4m!v z;J*d_R^a~z{&wIySh>mL@CUEk<6W!3R|N692d>Aa=-X`rUm3*jANZ=ky9T~G@E(D` z8~Cw-NBvp7z~F?y*97sW1|G%Fz1!B?fWX7`c7EXR1$hPs9_1-+Z}W0x;9(wL7WMrM z{e~dEGRS{R;Cf7tzCAVYXuCrP+B&}{@b`l}4+S2@58TfVc#pxiT++1ur=EsCf1@2I z7s0PT%3vA%-B&IDN_fRSwtn7+FDE=b6+yp8Gdo+`Zgre;Qu{uedqw+^+@xB;otd#;Zg8jlP$gvJoPFY&>8UG zZZQ}Lzv%(%X90Y#&9EJf-ij3HrNf`wz19ovGC1fEItRGdxy>Mneed}TKt9ZyH;5} z1@Nl34MxGw@;YyV@A81{k9WYE_A{Rz`1)Xe9}GO2-~Ilx<7659tD9_Io`Y}k2iT?X zeTr?oD+1SRoM`iF0{=LuXMNzl)at+MFAwVH{nH?RYY-nEx3>lUSrGqg;GYNnU*KN^ z-rU+zzugUi?-qE}x3yFqk3jFv-&5)k3QAb`E>a9t_Jr9zA?!E zXy9Q#=Lfzih<`rtsGe;;ffa#=<9aLb%|V{EfqxzNCxJ)#^?XLZpCwuaTY~s+g7})i ze+ztT;C~1HP2fA&VWoZ@ej9kJz@vJ!4qFEv_N`;!-vxQP1RlnB4?N2M?}zrdc68w1 z2YIps{~_>`1J^l<=-a0UUK_+;6nM1V7F`X71^#0Ye|6wL1%7?tKLMvj_=G*w)qnT!z@zPsIL(er$HS-i`BnWMnJ9mwAkUeISKsmiZydxA z4m{fK-&xkM;ej^^;ztFpd%L0m+z|Kx=Di=g+`*4)W||->zS`QT+3MfZr|fU4r=bf%~bGx}U1MJuvWHgZRwAcMH5%;L&zZ zZ61xJ?sqf?u5+!CUl4c{|JLwG6N$lr?-Ar58o2KDi{h^ie9s_$Y~XDIza{Xrz^4Wt z)l*#@WltpT3tZ=fBY!yX@Ob!G;8C8UgRKuw1-^H%-4_Cn;{VxVusHC2f_VMjV6Btf zCoTU6L44aF{*%Dl1^#v5(RLs66Bzn^!ph(8FdE3A{t#Z2}Mb*)DKDl@O&*91wU^e}}2|MB`Za2~QZD2;Vekhx$Bc2Hr8KXJFv_ z2R=CPaDN{f_yIxusKBE-KR?Lo^q0r={W&m*pBTi4`KJUPV| zgM$1I2c8jlS>RFrNqz$UslYo0@y`dIe9u$e&%GA7u8Bkyy%G4qL7oo+?;7}*fk*Xp zeAMRayTA_#;(rfZ@12Ua+qgya|3rPCbuV!A?^c0F`CqW7Es4DY57$G7z`F(8?HYKL zXVokAxO{ZrVV)BL?;hmI3H-3Y2LvAFzrzo-7Y82Z9~QW-J=OhKVr1Ywg8VlG9_3H? z>+Z>chxum&9>s6Ywa2Lk13x0jKPT`b1Aij$tiYcS{HVZR3H<25mj`}K;Hv{aHt_X< zNA22-ZzLZ3jCzNZx3A8M(ffgrUrg;5PwhLx_3T`pB1>DLW(#sH}I&=NBktp!ob7z z@Lb@h2HSlt@F>qk{)GDNz{5Q62Hro&qu)=Y^>gP_cHH|ih!68@3H-DmkA9y~lt=ge z*Zno|XAmFNx%NYwmu9V^@7lTz^Y0dT6o2_hi*Fxz7=K{kxj{V#2YyE2M+P3{PygGF zCnp9T=082~GlM*52cCRSLtQ@oo+I`1?UwfVJ0yq?^IsEqRL{XfY`?xa@GxG#&nU`2 zAgJfAApY#Y^?SBePnw?)dOU~^^FI~%IYFN113x$Liom1#tJAHY?*<;`|2XixAkXH& zqdck4Se_pO5A*yIxb8`)`>{k~=lcIAkB5`)w|?#vc$giRi3j+T=@Myaqyy7Q#cB$V?{W=^H z#P1Y%6#wiV_V~VA;6sD>wt)`|yi4Fwo`?KA%n^ZK8N}=NFzYxl;xBsws^8Njzxqk5 z|H2@T?%|0>G$in7yTjJo`n(1{du|k+NQ{T)t+#ch-!rW3p1I6izsFd<;pFIVb+3Pe zJR^c}%?tdhz@HAhFz}ZH9~t-?fnOc?dx1yeJ=SlESr32nGke_pJn&ILo{fQD6Zj8- zj}H8gz@zOhUEz{JOw927Z0uT>~E%_z{6ebx!SO z>*4soZwTT~2|S9Q=NCK&z;)ah1aIX}W{1Oa`BGDf{da@mt z&Z1`-oCm*lz12Sme*W85|7Gxr{)>@^!GHAgW+UM{`H7h^@LjU3&Kuz?JKJ_Az#IKz zbxww#>nCQW!Oz^s^2~&%j<$J!0Di+`=8wQrMq8ba!%y;GFuoA}yWc;cdn2Qtj@EPQ z+pHelTPR<@$*&V3PcwgW%$x9Ozu08u>9neq6WcZ;3=R_>4i8 zU)K&4KclrBH*}6&e%J*zE}grUXZ~b)+9UsfS1n%WFcqKH+SZ}Y>B%o&Z1bygV)7P# z0Z`|B#X)Li5G& z>8&l#GWZdGBkJ4m3+7wj-i3cU%zPbuuMM`{kKx~zS^Nh048JjUGrXnWSp6-0SyQY3 zNBGv+w%y<1^Ix<1{RjT@juzj<%1R!WX1BF@+zI}QU-;bx{<-gnt>Mjb4Z{1zqvP|` zRaQ@U-+1IT$Jn^S`^F=GcarU=;eF$g7aeN(55soH^|tztf`3HX?o;@wd6wr(xLy}+fv0!0WB_CkM9P_JTnfo?e;>REB!^`N$}Y}T0Q;YZKl@mriruQ_Ybh~o(JE5qt!DA z-qBx=_|t-9ojv_J{xHNhJ9U= z-8Ojf)0Y2N_=6klIHT9EdcHTwpYS%aZzt=Vlx7KHCzlI@9$5!0-ov*E1ze(+5_}gVxkMEYr{O8ZMdNw0|T^sBFx9~U5u{=M*5BA5w-{H59 zv~l@zOm6oOzwX(@rZeg1{cH2G6TGOeZFd*=#!oDNYk1oStPs9`WU4<8?117s8(|)o1$HUwE`G-F6Bj2!j=?CBCb%QhD-LAL( zoC_a%p7n?CTlxG`>yJM@P1b*%@6bb-=UA)%D)`Yy8jOZd@&m~@_}ecU+zh|Q-$-#g zy!~ujhg0D<`s+bIjg_o_*CVZOvk*Vp&$Ic*86@LR*ulm%5AkDqS)M20rOj=Bd#8H_-1e^xpcDM`U2R?Q zI@IF*tUtUC)$CRq5wAlXu$OJO7xE8FvF)A&zjA{)uS2!D*w!1bLw)J@lkhrJAHOcf z>rh+$4GouLyQBPk<8b(z2dsX6{>({V*u0EGe8L}pZ-H<3*Bz7LSNR(tis3u8vw8Hx zTyh=0=NXcQg)`|fM?>%C6$w{$_n z+MOJ4^M#g&*NNWUZ1cV|;%DU9aj!LeTBhw6dhdX?`?0^#q$A?{KVhJIzZHL@zo7Kf z(8)T-54U=FJb7`t<>B#UxlcIbueiw(9g z2S;0S^%%e8=K-@XQ^oKMx@OfU7M39Qd9Kt^WD&yf+NW;bne8{U!LKt_J!{ z80{}-Ew=n`BL455wx6zsXYXTmu7eNBusol@4>{M?^Ox|$tPP18c-K;!_iga0)ds)8 zckF5P`~z>h!tyk=-8*?4s9I%#E#SvAvV#2OdNO{HpHJZR>w6Bhait?qmwW9va}fNx zUbfB;fj9R3s|Q^9_1*!^m-6#Eb#H$@qkGO3|M$t3_zdLF^3OBTJ-3S2JPty<=27=X zDqi!*>(QD=-P@-4AN+$HbkCT)i9b)!y-)JZ{yx*msAujgw%&^2tq!nx(=V-qy)`@F_c)e*|yt7Z5&&?^SN` zo8W_eNBI`6`hS8y zyr?t$RDWRfkI_ly>62^gBn$CRUu4GohxFT>`(%->}Q;za0;=I&Clb-+gyqb+9~q9@46bIiH7YS!3&@9gd&f@3j0K;W^J( z-#Wo>D6{;09`eYcmWR(n7W?PP@Oj8D-K_z=kbkPb50uYC_Ss~|VLlHj-`%#$=ON4e z@r%zxzV^RToA&2=17(Nfl8fg9D^N{1;u=@Et$ zsbBZG1HRud+d=P!*ZO_n{<1&0{&zdf`us5B7x)wB$KY2lGFS*-Gz*k!cY3i=65~(CO^@j&zw;`KYn9@n-RalKX2+g_$PiM z>Sy?|6$XF8d;57g-bc66pRlCh_<6Q}VAU@0bN9D(WN&R50hHeP?ZoAi!HSc3hL zXPjSW?*eZ=*Nzz7;lFRN?H&bh>(BGE;pu*$JqiBv69%WjANC7DdKsyC>H3)+PxKxc z`JR45!KKJklV|noJrRn(z^~`pcmH=h+@W<8QFomR^R>}$wBd0wWrPJ_(Z};ni`@sA8{Yd-4+k9om0UlSE`3ERwBEEZ-HHPEe*I)N>ya)Rm$~oS< zw%PHYj|)%xg&;mIbnxf-9Z}Ctlk9lH`ln6%{~s6L{L?Du#*nIJEq4gr`PcLkD zoqxdCN$`pO1c8qW)K_eMa^9z8TAiHtzed=4;JmN!{&OCeW!Sim zME#fh=eZpRAKupL=>wmfZFx?GpXHBJ9Pg|(mgjuLzv%b3Tns<-1Y2(f@YMTk99*2*fZShaR z$M^~O7vTSu*!t0D!$zZt&ZixFrUfoXd}Dv%wGy6tqvcr(pX`BE@N4`AgbnaazdrRf ze3`#c_#Xa?U+DVpHvC;j+*>vJmn&Rfmfz;Eee zd*Z(EPo`V^0r2M@xA=qMCly=ahruuL&*3~8zQ13%>jiJp)Ap|%c#kX_FYg0y*~IEO z2l1Qy{^Secy?s9#41d-?h|!@MVK`=UKw%!F_G*v9)H{4~FD=~4J&ew}v#y!S?{{~35E|J=w$@Y}Dpb+{Bh z%nwL!!C$DbdF1`u2l|2V1H@m@-um+?d}qJE@hkY1Wfs2`zW6z-vlf1-pZMW@+Ie@` zarIxsXP;*M_x2^{>!dque)annG`|!3TRpzJCgacA-TJV%m6i0beIfIH>@|I@9>2_- zjDP47+aLX9Nz%XQW%GCh@(+60)=5wJSK|!)v}`iZ_+C~g@4Fu3H;kN#Jnj8Hy7S;$ z{5h5`mcaD8*O#^+k2ArWc%|F-e0}x5le6b^6b3SwmSj7WU3uk!_WPW9xwLZ zZ1voY__4mj`NK@Ip0)d1en0J-^c%mmb@CYUyy*9TE`)D5)arR2KCi#!SqwkA*4D%8 z@L%*g4*rvWz-=Xb`~H^4-}aEKzrxSAe}VXuN7#DU4F9r?<@pZ2(C-ue8UENri~ke8 z%x}nQWYdtWXW2g%=(ndQ{Q=*K2-(G^xJIdzW->#Fav-$`d7w=F0{Yy)* z8hJMR1IRk~h52@T=I4-CUuJ#qbjj`RI@9K>26?*s>xgaeRerjCff ztvyg53;&_JL2vj@b8LQ3fp@sT>Nx}c%3K3~yGXJRgZ#d%L5MH^${Kt*{J`y2C+{Dw zz1X&U4dTy#*7`XPzA?@6`02A`Jtv-Hfs+~UAC&7KW1Wnj?Vq>L`-K1g+49duo)7P` zdic5Pzn*C0eG>6S_nJQkf72)A6?pAlw$6D!@a;ow9r|U(Wc}y)eQWO_&%iO3=Og&< zOKgAt9R7@-;Pj{O$^2LO=cVwz- zN#@D*{gIzbzyGyXkKaa?jIYhL^>8Qhmz-jK=6$&pM_E7bM||cpw!b_AZ~mHrb8@@C z6hnmM=U+cR!#sGS}v%6MWWrwhnooGvzhQ!}FXS{QMQqb8gtp z#@h$^C;R=$JkR-;f1oMPb5@*ho#A=Tou07%T#WqRXIOjz{El*~pXWKpUut=Hp7SB! z-+7+%#Xi=biO9d$*Ygzk-v3#jd7g7xE88y5a}Mlp$A?nn>F|N|^KtmB603*jIVY{P z{5;P&@K(#i^PJ6Iwf-ze{yoQ=uY{lRqV0EU;a~gu;d#!B3an0^=bSLs{A=XdzOx;d zc%JhO|6CfL=e%H>CE$6^ZoMrJ&vR;jt1b*;+ zc07C>-qDZS3*m$3Sf1zLi(fZ?8GhW3whsL?U-I#BioXx#O~jA)Ul6eh-t~Cv508gm zwJ=|g_*4CTYM;aB`E}Ke@DKcrJ6qwmPq*WPAO4c{Zy9Lw`zzv${rc2j@IybbJiPzm zLcbq__lKWxn$3&9?IgL~o85P}!(Y-@xbFpj&)r`RCF7?~v~|ntMC;qzI_G^6tNcEB zzx^ed=ZTp%zei%bAG~Dip(lJxg~gu;|I@Gg^n<@W-THhce51cW@rT1?J)KJ}e?H=m z_WMJwfdB430zPt$O`vt-f6p7=^v5qApSQHK`Qq_;fj`dj`24irzr_6a9%t*hCDzZM z*V_8o9e%UFpN@H|KDBt(xyydmPu4kdXNzZ@=l^W=@Nwjl*Dbyy>N)o&d)({fz(aYCmzy$B`%gvk4!7JcFm$`ndqUb+Xle z3H&vGKhY5QS6giV;=Gjl`?)wTQ%|!#b6(Ey_YZPjruYd|&dbs+RtV?iIDh?Ud*%Pu z^B}(;lFv_8onV!-{?Gk$GgyBIKLN)2k7{QbSpTSgwhmc;qO0|d^|v_R`oncK(LdLn z>uT>gwq35P>HC;-UG3WU|ET-xsG+JaY!^mSknV1fP6_F55Trp$r9tWLPATb|T^@qGi@csS2-Xm%r zQoUI2`;WvK&ok^V#&e=mvY+u>$`4q^bFS^G5##yq`f6Xsb3e};8PAiw(am^nI9G-; zp6eMfp3nZK{>6B%^s6}IxvdY{vmNVaRs7SRF`R&b{`}e-mGtK%KfmbDdtSJuKY!>g z|I?o<+KbblhZ<=7r$68BQ@hZgMVxqm{yg7Z{-Hmcct4K*obBftpF8^=%9DKV?7bxW zzeYdZl1%a09K28ijVEouS2q0cIB>g%{Ll;XFUDwm9teKR3AaXoCk~^y9S6R#nZOkA ze7>+a3w)RJqAUcDeOL8e0Um#=>}MQCaUM~|;V|DfWE`FfEx%FE$_nDt^Yx!Hgz`T% z`EdMqza~8_H?rSP8UGbL4`KXIx}o|q{(r5f_G0{Jb(}E%=eCzUjQ_#TOV9Xk^MmSJ z6#k#!bEKugk9(YF{I@+QL5?REz0t(yV{+dYpr2Q)QNLijgn2DL(9cJzD1PYYdj3Ee z{rrs+FwoBfzxeRDog}ly0s8sp9g?S?zwax1=;u=2pr)S>#aF%P=eRysPd`^argG`$ z{r-R({aoar?B_frmhWRWM*H?(CI7bszw<(Nwgo@p1PqlReA8mwBCG4R{nEjN&@UVDDpc zoh0Tq>E8!EZx*Tl9tMAXQ|)pR{F1+mbQb*d70F))FYdguH^38h6<~k7vo*{=KVW~{ z(_ND6kLR+Avp+WRIw$pqa{?0TFZ`|g5%rgwr*@?N2fl#F{$97Z{K@{l$s5SDXT-J- z*SFV4@+alfR+XK!KZEm;(*9yIKJ1?_eLk7?hu@@fY5!qwjHgFCPWnlJ<5ks|(!=qp zN;7eeSLaiRbG*v){YU>4!0~EBVflgn+3SNg^iR)W@-zLDzk-WsxB83l3jU+H$h z?Rhun!}SWYRnITh>+L<&i*a?s_wgB5ms@{$+<2Nx<0s>)Sqa4z?TlSno}u6FJdix? ztnPd)w6o4j)r)oxS|Oeae*Uu1hwUtXOM;C57`LQ{@n7C~nHc}amPnrQzsdXEjQ?0( zmuCEjNhf<4|4Dssg7dMP{?07tV||{;&yC@SNIn?e61;R4$+rdH=KIv0!QcI&_UZ|~ z;l1?q2e0aLGDE><{;de%eC+$z8V5KZE0bGs$oW_tuP4uf{-0*5T^4|s_H%X__%q+X z=6tNmJM}Nl#~L{g9_M3iZ^#e(pueIIavla>Q$hXlBzWB1D)%gS6`v=$0{*?%mu`aJ z^8VKy@D)CA_ZYnFT=kb%;1_ynT;l%J?H^<(@8_2MXU8Q}DBjO)xtrx zRIn$#w6`7lr;I`4s;gPbT@E7sr#oOGTg|1(ZP zp4W_%|5{J}ujhEkIy2XkL)MuS!Os7B?iU>-`)Oyg5$cb$bIAy`FXMSjN_l|syv64e z7|*SoS1mp4JTzH;W;_q}0aeEHZtQrt40kGfur z=R?kq!FYJ)a~<^aty*#b{d~^vr}T4$nu;s>Ikn$U>E~v>73cKxZeKv5pBt@{J@oVQ z72@=BwSJM_ zB+vS0@I`9YcS>``A;-6gg`|h|z2^B0>sz>*+MV^SIZ}qRzO{Uxh2z`wKV%Qbw;YG% z|Dy22-IxL#-zq!NR3*qabt2*F;5XhV-ssQnzE4VjCdd@=9}V>9f(lYheSWy_fdLQ+dQs4{QNI#zojoPSPxG!0vl=@d) z=*jEn;Md^a&61wx;7z=a%6-WMchn-CAz$XC;*I-~`!|UXgnY>~s@Dkc6Fvtx4*X^T z#Xt8Yr}%=@EXdDv{*Z;>{SL|g72v-_lmFL~mlV)%{rkRCYSM?tvDPaTw~WJ8cVs`~ zaIpte_Ukyl$H9JmtEKE=zkc9-M)vD9&*W$J>j`01U-s*?KJUkV{n0YTNg4QOUoCO^ zr$7qzNA}aN%E}(fPw=`QKHDHpza{GM;W#OO;=|)c^?fRr`tK!Ef1&5J6t?@2yVKVpAB z^R4u=zt496Wq%JpRP|ziU+w#JoiPqXa^j7i;Cb(=NB0Lm?8GE)hM@m0`%&eNf_z+` z2N(~YIf}qk@Ja~Q3+b?en%mVwXkJq5mRUiZB%zHg@RgoW>$OJ=KG_Cf!R z-U5fgtIwA`C&7yiR{Wm@FEmvBT`z!_PNTJn+88q3a)>hy3pO1IO+E+V68Z+y5&cW65grC&!cip67EsDem*n98Y?z zQh!X1`X=!An=*nQTdMZrKKO4=JoY){zuTpDECODzlH#W{_$FU`=X>0kuClW_d8weBw~!DCgI-!_2%wNdta+dHV&k6%iV{e9DU`QZrk zJiVYeIR&2Rt@s7-q&?KW*T54x@xx!>;ooRnWxsCh^`d8x|1qQD;VpQqvU-k$Rkefq zK5!m@Pr%Q2P<>;9Kg=%0yl>V2E0xQ<_rt!IA3lYi@0KVYvVfm@qV{qcg}~0-qh)^q z$baIzf5pL@dB3R~_?P~!N)_;_UbpdUSWxaICxUXA27LP}`GI-wH~M}z^WOLGp?Wdz z{gAoxGxOfh94h_&VCR$<@|zzUfjv!ThLY9jPx^MiT@czmBrnFoF}p7b;C zeMW!SY7OM0`dlmX-rw{5%EM(~XE=X=>j3mj`&#XO9DLDQ`SVxs_g&P#d`v3PpZJ*s ze}{bO33@*IH7t<-$luX>1o?O4r2i#&`9#taN^T1DRCpx7y!VUlsb4ei{qUvY%zOXN z&tK-fFZa9posWSA<=#pn|73tYJ+n!_dgZ_CFm-*-(9^O&PoA=>mrD6pK9|o$@cABp zto+00b^ZRbhtKQzz8}ix_0%|u|5W-bu;*P|#Y1}V7S~kKtl&*j%br}|p}c<1`TrE} zrxbHme! zi$(vZs4IU`e^cjwqyCg*R8i`mm{8*w^(UPnPW|!x9H;(l@nsM7-}d+TsQ=UvwF~1X zZ*!H%_^BU3_Aq|V&s4n_KdJmZHO9|J-Q<79&wStGX8g==sW@T$^s1-0W&AYrJru@I z<4>fA@pIPaml!`I{NC3X@%iUV_3M`4pY{=G3m(xQn&=E3-g$s~f+x)=|MUl6mR$W} zDEQjVlJ{dN=}Q;m@2I#f2KgPk1j>R(iZA)f;PWGk*956d!4fx_}%8x<7)$f{?J}m>;(CUMbuAwg0J%Z#{uAR8ms>f2On`v z@h}$rE1y@H41Uphaeo4z5Lf&i{!n1C^l<(#<%Y`T{9)T{wM#1Wi)>G%Cq4Kk=MCWeVaad_a{dte8*x4t zws(>KqR{_#qIhZWY~kc!&L2koB|**~4*7w{`9pWVH#LO*kaPP@!NY7){Co#K;+gF1 z2%g{P)_Q;!d#~}fKX}MFMn%iN?;UHqDc+(${s-sx;CaQh{nWnt|G#>QkCNXQKW|D& zG3O5j>xeUc;{UBUWc<7eFV1p9{K;}d)09&uGJ<3GVbwG`uj%*WEh_%H79mhoSGoa7n*)0*9FL^z!E%;RTi_YMMhRFV&;5A0e|NX(!d%bihc-<%R=P2-Q5u|@S z_)js_@1}y+_QLZl@QeQ5(*p39KF6{Qyp;1mt^u#{RO2MyQ&zl_;10;g@V@Xq@L5h= zeHc8`M%DKu_y*_sISXFK=j1PgKiDXL-T?pHc?@oW&wH+V-3LGVlk9m4p0B>-UxOdm zBY6)i!F=*oAB_Oq$NVv}`W@eEV)-6xEDfW9p6x!j&wY@VS7c8z$mjJrgf!qk*HgI} z!Ta?RVBWdo%j8eK?_Bmgydd;U@HrOlkF>w2eq9#wFZ`W|FTe+cl|QS4XPPN{>Vh}* zIKcOyL-W;NnnFIb^Dc7VB;HTb-yZVi^2z?L;IT7GzmE$9?KREoU;`naq?iJS??*eX zYWy4n`8S^ba6e^xQR$fu`F1I!XAbzuoswS!e*2x|SAdsqDF5@lDZW3Lum$p`ewLnH z;2WI><7e=7?KDmv1uyoe_$lxqNd(S=A9^i2uYyM}FMDo+uXp|s?!V0R!qP*?C;L(H z@Ekn$8R>rue!=#H)sKUCnBjf5PrxI`Qe4FZ?>b-QCIC+mQ3d)j7U(bRfzzK433!q{ z8XvMiPeb2_$_4(^dH=i}73jI>d-P7P7VxG1UQapbxtLbtjMKpc@`?Pss0I1>FH|qi zm&Sgs_T_x3sMldQUusrF_2qnNa|7v-xBq=FdsIgKm-FW;x8#4$pU3+A2ItSd-WMvR zx>-=)7X#&o^xzkt%ARcCSCh!XJmBxos9uG@pT?CVOM*vQEc<9{HK`t6o0; z=GV?Z{_JP6vk~;C-X`7*{JT+V!SBJBq?Npn)du=!_&ho1Q88Moz5}4A)>`>zIQYJ1 z^7B~mmQ%zhgFj9u@Dunq9*{U+is}#1EQkDgZAj?f?@h~ND6Ue$&JL*s80VRMV1(}% zUw{2!`ycpz2kl=_UhzQt^SWVa|FgS_bJ{;CvpDU4mRg+lcgQO{X@9-->UVrUY93ed z$@inp-tR67zb*0i*Ghwz`AqfY`_c7X5@i3~wMh2x{U~!C#T(y`);ix;W0V`s->qv2 zUh1~&X$!t$ul&;)e7f^2v0v9-B76Ene#S!CKNP&aziT`S{89n=neRtmc);fS(U5ks za~AaMh^HRJ{=UJ_U%nq5oS^vU`_V*?Z+t&0n?(JH??)9<%AS3&=kgPQ!{7sZ%TA61 z^T()N&O*LXD)GzUJLihu0DpT`cHRQdQ&H`5AH4M@`GN08wH`>G??>BxkcaO_xwc3T z-;bL4zH=0H%iwvjcY@-F??+j^(ZTnlD8Bc>_oF8M-aX%sa=3l@eiYI7HTZrMtBKl? z??*%YAmaN`nB-;cW7lODbw70;{s^8ILxp9_3HisW?$Ma#eQoU7hH<+xg)vm`mL zZvR&Cz;Sht_tQD9wtlVt$Z}Kqpc%`JFjMtqxg*ypepv35InvK^_r6qMrb2vveOUIV z2cPS_KpfAn`@AK`^LeMGfa7^l=Y!&SzS8+&IG%r3QT>kNc_iPP<9L3;>--$g&t8h~ zk3k&IU-|p6jZxo8TjV#6=Yz+Ib3CuOPx?8Y5A*lVIG*RuE?q%7FW3(&$||s|2dwYouT@2JpZ<;`2RJYx05{_&)0dq zdLQbWud(dpc%HJ4?BRGm(*pp<^JU}JUpSuk_qm`OD0hnQ>D&Tu_E>)Acz)97mpGnZ zyekD9&#QS~kK=hrdvQF!uv_CE$MZTqZ@}?9%OKgw@w~PN29D>wJkR8Keqe|E%<(+> z-x_B)o)`L7?Zxr@-CV^L$MX~4Do!|_FYrDi$MaJC$9n^N{g}>s=w^57)aw z#viVCg^WL~RlVSO8Z!QHy(?t=;d)od_`~(Cknv|A^oNW;T<;2r6RvlK^lPqnZSZ}- z>CoTtg!%>7yQ&^g+%AIr(iP$>!NccNzuo{I+W9uOgI{f~cHakn^P0dB@bEr=$aSp~ zQDx5s$Tz5~__w;Cz3QdXeBdw0H@+fpA3SMT#jTGc2YS}Nl;Hohesx^_sKSos^4+_>W=TZaQ*6<^X+r}DyR1~xPDdor2ND6t1K5)F4wOTmzLkSe)YvU zjRRc2slOjs)^gt0)dTK)zieaetmX zkiX@;0sSEVs~s~G{3n0-bToLv1F~}>_=Oyb2Tv=5au;-yJ@X)+_?rCY>oF9 z1Nnl^3%413)m7=)1wQ9@#jVpl1o{^|mHctYpYZ(WSMbqK)qgL8XRM-j`5nAb0mapA z@cBQ;4?cDu*c03F@6VV8ypiwohEg#BFX{P)j|&I&)li_=lnmD@ADRgo=4XeSEa#A zIi5NHPwo5rod1uSs&YC1Pj*iBbN+v8y5t+9-0Nr5E}Z`_tt~yA|Hq3jJ)Hl){#<%E z|F4=r{jNXC?OaEG7z*C=x%epXmR{fB{QsQunQ;DJ_8Z0jEa+M2a{>#%qkBTc`G4}2 z@&o7pOV=q5Isaea`zDdq+e(>vM5V!Yyp6VjxUwIt64j$k6 zwQhm`?Q`i5z`MRwxzE9u_LU^3i()*Rj=IOS$&_B^Y+CV6+a~)Uw(}2DG#3fH}NmQ*LGyJQz;DFVgDa7W33w#GNTmcH>%1=M!EbLA;Qrm0p8w>5eB_k^+`rr91M(#) z-$s7p{#~T9sxO}xv%N3L{ktNu6hDoizl87qHUn=JOYQqTc%4v+AMW1`?j=E4^>4eh zbN(nk_y6m>U%vWkFUq$cpa9`KA-C@xaGsF5i{gaygcW{)NQHV`xGg`ked9Ra1?LGj z^U5C16S{jm;XL7}_f3kj+~$hp(%>z=lOHOA$9H~0wtGxJ-#Jg{=5t@1Cv^7rWE(^O z;eE1)_i>(mqj+c!`A&5e4?Z>#^rNw*3%==6Z}9G zHK2#fK>z&Y>Zh{m-|@LmJIQmr4Y@DC@%F#&1+2UEVLdyl%5T&Y>YXg%xZQY!;*jHZ z<$B_&5uZ&P>$#Q@e308W2l&yZ0-u9Vcp(220bkTxaY(<#x+TZ||LeDqdluAl%=@s^ zliGR1=(h>E-HKIe)v^OEoHh`ku+JxGfI;@UTER@X_;C-zwl?u1kL{@IDQ~{6jcT+gn-n zY6AH!K3CHk{6rGr5sUNF8L=p#G1-@0bL^hbq!rMgla z2Rx1M|0V`M*FySLi+|@2aSllj`+Lay9iLwz--Do@UPWYQWYqW1k}5YAc$p;fvwGRT z_Pk!Mc8mh~R~}cn4lr<<;vo^_-wl@@+S%S4lC1BQ&~g~-d(F=aj&CVEG2!@D(D!{( z!Ja~X{&IYaVUd z|FK%j{*&MT=!p%zn|Ot31Gd(e{}*`$bRh8`5u;Ps{)GTXUZe(w@lXHX zX{`9C|1Y#ud(r>V+kV*pudd6_9G7PK92du>A)zJDaVdFj@y2pT@cfPMdrWMX1kPW? zc1e6d^__Z?S^^IXnT z!S;PzQgKUrzMZZ(p*`i3s2yp~X`c_FJ;nc!e%h0;q4cnQ6L@2d?c3k`J8a+SzAwY} zt?*DaW&8GW-dDEo;)04>w(r~RigWh6#o6T__PfbNRWJ6tg}v2Y?00X{X`F9~`1#h~ zS7m!e`j2}ho6^b8Y_GY4rI_v2Ke_75_KKZP@@%gtsbvY<>+w_7m+iH2x;WcwZ%x&g z?RC}T7~89x%Vm3=cqx0>UgsUiY_DRiRW94BR#VN-*op6!)N94n z0`Pjx70=7S%Z-&iYrs=JRJohL^Iw+Vc7PZ1_`DB%t=sD`c!?4!_aykqoU;Ecc-6+@ zm%-m0lK*djAMtqmH~1I6ul*3bR|fSj?o;$Hq<--p@-y1Y58S7in_cqUr?}ui<37dD z=Vd?lDGEQAe(qD;EG55jpJJ%X?o-r`Dm%GPQPFwuxKH8j$57m-XfsK1 z#eIr>dlWz1r+DxAC-*55ZdLnopW@jFIiC9z*`ujm+^2Y(L+!|Yicq7)xlge;qWr*f z!qc2*M&ADSy<>4|>G7}?%*Sqomt+jY$)s(vljHe5fA5&%d0F32Nd-M4SGnE6D~6W+ z9M9W$AByAoR<9>;JRi_m{x1ssEmJ5COM~CprFNG${`F6WFU6xke%D3;z7J+-=lF+w z$a+pn@R0Q!mb<}3zdQ(BHuC*DSZ5?<1#&{LeKM=RA*b%ilrH1NoxQ zBwq-;MF+)6N$~BTsog7phjqRSJ~yj*T|&S0Z@WC`DL*i7zdtI)jN2K`Z^pQ7)LQYt zxZUJ+EynHn45}CXcJrR>Vcf==rFdrCHmao-XWV8hCC<1#He2;#+}8e7@mUf6Y?)Yq z{)~Q3_2oRI-`^^i^N_ec2iO?;A5Kx6a~@K!ko@4sLolAqYpZfQL(ebwBRZcP{{Q9`b0H{LgvF5AG10hm4P@NSg)y_r8>!3&8W0(EM!~c*c>^!+A)r zyz(38A&Vo)Z=8qJPAkRxpuf_`YA?=1PJ93TB;7fv4cPectRf_~D)M^G7N^h@U2-1-L%{+Z-w2{A5~h+2i9ffu7CY zH}Nu1z!#rZobWzWejoHp3wz%6lpivKxAVDoFM|g98%&oy`5}MH9j+L7!^w&VH$$N3 z*G#Ifx3vNuafjNsCiEQfdq;inSgTdv#^Ble2zdD^(BInUUOY_<_^55NryKMf^m|8N z@OjSDH3WQfJJ~Y|{O?@yvyV3gtKOIPG1aXZak} zD?Q|w*H=7b15fPlwdDa%U03D$wI|S@aEQt+3Hfqu)s7XwYkM8CD)=X3WM>`lhNER? zBk*h9pYk!~z@E2L^}P5V@?qX;JnRI1`@KL<@NMNKKLC8@A8Oy>;3@5xvEW;Mj&w5k z5f4;9fyZ)Q*#+P&cPJi~gFo^F(AU%hKYU+I@wOH6?H|gYd%%l&K7R;2f%8tE1fTBx zL|<16%Kfpm{B{-c#qH-mz~B3P-Cgh;eoub_KFHtEehog!`JF;5>;ik1IS*Jw@XoK~ zAAg29kYDHXD)AscVvpiHDR{h=;%UH#E|P(nz>oQSMNaUk{!Tcw|=D1YC4Jot*QG+z1jBPe%@7ck~PKKlvTzZg7&&!?>d zpIb?O+X$ZB@7}SpV&d?XTnqZ`%a& zF?UMPpV&xSg&dkRRM%{{O_|Ysh%gV!rgp1pls<+9d&aFX!v__HCfQW+4eWy+y!F&QW_g zjeEc+9+TltuN?5bS=5dNP;SxRWRKGl1@f6%$e%v;5%89|)h_iX z$xa`$4tV-vdQLTgJ!vb+Z>_;Mt(Kk+;I}5reot!x{oNl+z8~bzdVh8(_!#dediy8P zGsp8Zr+p9j$V)2M*KY#8`j-40vYrtV4+}dgPMlsOknb8>hOB`->rY9~X7D}ru=r)jM;xqp_#J#!BiVBsd`T$9;UnJ+pojkD%rZcvml6MFrm(TlU8R&*gQw#Nb!GE|d!V)*_YbZHb`V8=<8? zJLHqkRy^kgfA9CZ!r+y+$e&J+66o*vi~Lp*^5MQvxz)h0_LZGZ%O2?YbD9LdhWuKu z+dDl_AfKX#^tXZhI_H_`41TnL;;I+;)HABrK=5_mQ1vycpxmDGG;WN8d_}+SOaV`k zQ}H$ny!(Cme<66sQ35N#Q{-2Dy$uuC^D>P5>1levOAS@KcpD(#mE$O$4@3XxdkXMh zzad{sZiNixV!oGJS~3_cFeMjU6?yD9atM=l)>YkqRvx^V>e9sffqR^k% z-(M>YzHGnB<-Te`e|L=gs;$10C%La0(-TAPt4^M!`Zh+nox-SHxUU*3tn_nV^?o+- z&d{^Q0nUBZ;Wbrmf5`XpzWh+|XI{tSzG|qn>Y&_L&GwhDzK4?Xj|ae5TIwi9=q1~2kL^|}cD{Dnq_>)>e~ zsaiOg3pSqaib~tR==Nq2OjaE^m|z+@Xv04SE~o)7Y~*^^U1Wkta6!8=4dT(=94MV zTznGrul9SokEaLr)S0bv{hAl>oA1QB)IiK@<3_ii@MPBv|^e?Nbaq=U% zBj7WqD{emq59I?0z7`V5M_4ca`12A0&tFOke4IVtD`&`WsiFT1&l`Q*KahX5PonB@QZ4k(}_6Bct$QSnd-dEt)BdcB9%z>U` zzSqzK@`?T8-WI&qx3Z@Tc;t_zzc=_E`)v?-lzj5TNbrH)AN&#g5AWYi1rOg__V~3b zsMnm?vd7zL0e@3f<*tODmc1mu0X%0rweNQD>RxE{He{f`{3Xdd%}v0k#ZbAYpr?CX z#oGn&``&N82A;y}OMc7;`m@ZJe!Dy1T|JOLgP!3&$NLuiQ3ToJW8#6H*-O-qRJ(uY z!xxvz|D3P>SH6hd)XH=)V@=pKZf((&jQcw@0u+DpW=ho9$NXM2Lc^RCT& z4v_C_$EwKAeb7JL6X(O=Yn`9uBzWXYiU;_@$Q;E4U`ln+L+A5HeX4ECcfedRayqd{IUWaMW$=zsrRWBDn(&gp1-{Z1y$`=UxO#~!AzbTznD?uc?30cFrUnoPI2qkwt#1Ho))f?g#S~1NB})2x`^}K_;4Sr zNCWw>OJz?+@VsLb=h?yM`u-8`yKQF0U!az4261>{%NmV9;a zP6ZTKK2{s}ElqXV(+Khf{rx_!t8{nXmDZ4t?SYNw%r~r5gL|41l)G%T#tk1w4tQOE zKW-rOPfMrv8V=sJvFgS3mbOh5hrVVO=s(a{oafJD9haSRpnv*uzYl^}@2Dr#3h)9+ z1lEBc>ncBU9p+$4*}n_&ale)P&)|Do%Wp@)$F-K8Q{carmi&3}Py9WItKj3ds-JRw zW?u>EzYY0bwFMr6w{~9i=ipuK__yFK)5!l`Mi1KSw_~zDqKXfAye#rhH1IRNKNSZ& zkDuc_$KETo;vog(4|J4%evf0Ye+xOw-5Gy zQ+dc=2`xLTfR}W?P?Y}r-u<)l4{#ne_=@~b`HB8MAmtN(uW~u>TIziw>WScm4eHr4 zLjI?oC#f`!asD>T-`nNhw3ocz&7deVcBy(Ncn{+6tf;-B-krT5j2oWG^( zE5${jzli7grNO7Ql^)LDmU{r^{B4*QEIEHW8&`@sf7{zz?a~?3!=KL*20{OE)^jCF0kfGq^1}j21e;ZR*ob$JIy`_Njx63|%G7I`ob(cL0 zz!$w#ym9_^A-Brq{B5%j{&4=byRH;-{?=)-_&${Tuz~D33?8nfo@<=HrKlmnbC4hA z1I|~$TP>CTKfv$!yz5=?CHocUPr!d4ukq(K_%EYmXK4L6=wII*^7ssX#Os{V!Jl`M zpW}gV*`s(%3Lb8P%H@2lX+O1NCdhaEReExQ7t1W34}5%6`JpIynak2&20X%B)tB?G z`aem(hws2YMZK<44|?|aUgx*qD;?l1!OPE=9~|z1{?NWa!}(RBYEs~9fq{JdCaTw9 z=x^(Thd+StxvO#=7J;5O-jACG`Oqz-pYy2s{vPFG$nW(9j#c1qBCB0Cf?xMNWku1y z&$R^~$^U%5gxue!{FX4Xlk&57NDt*xZIdCCkG?^i^2?%W-bneU5fnds-W~MC8b0rC zJ3jfm`!Tlkq(VPk?gKUH!CUT9efhk5d{ECvKJQxj{7io6dFp(gMZvRe5GW0P-XEUg z^KQD=dHB3b?}Vm&-nH|7C7*YBcE}HnQEtlc;w`}=I3GTrcgK9OqYLCO98(rV!MRI737pE0yQZ zwCDC2>8CxrtEnC7&(eOd(4H@S0h;y{^EvADuycs>e)GARVUxxaj-P+|J{O;xmnzC{ zd~OcdCSDrlZvIvE;&U_0Jb8@I&1pW!K!1J~M|RSmli!KcpWk_%f&P3`QR4&sIm{O? z=+6jV7^6SiE!Q|ke|GGm@rwTJ>h~J@^9SFHr$1}>91H!KYr=>9**c!=p+7tKl04@j zjePEc^N=mh)72R5nC_;=+m_(1%c!N=g4g$j!p`8m%gX;f!ISxZN`LStKBzSmyn+wT zj{<-11j%mHso?LHDSl>wKfW%o06eD8BP|2(5>x(P13s*&_$Kh^7gX*J@QwM! z_ko}OUj6GZcvYX5I|*K{mg;*Je7Db6Uk1-QP2oynd023i+G<9)X90Ku_~lvOh88_ob5|slXfLSGgI$Kg%vX z*}G~K2bbW1iyPy{nW3!LA_qbmmv2$HWt(K=xgW+=Y`?s z;II4w+6H{I&l_|G?|(t@(+fP|0Qqeo_{-14M}YTwBma*Bf9V5#Q^1eSk)B!Lh11AC z3&BTLk$&!9bblv5uZR5Xn(9Xm)4|vn13cvX&*$JF`SFT?hvdgA4Zgj@hyAd2wfs*%gl?#M(GTUE zN0)xc;){&*!vp7uN(FmP#Z?@p2Txy6_NaCKT|cSi3(9;yD(ZO}-;W}GuK?luQF8}u zN|d|3zRKnNB+PQfRbCXfkKJ3rZlO<0*h39`bKBF#_J#3dhY!BPz z&|~RmyL=Q;{%5-^Pa{j%E`@)P{hSvK@i{Kei&mDBe$I;;zmPpe^;ghO!}(lL8Sq}2 zMfeVK2;7df#F0c= z+Fixre#q~tq37&T@PtRD=QQ}D9g@EY{)-dsTnA75hvM@V`0u_T%lj|I_sP%CA>S*B z{LK3=5B=fyaCp9?vi`{6d%6k40zdYr>`VwA@saAA0z7h0wJ-0#9P|D9tdMV%UGlvD zQmB#2EeQG94^>~@e_4M`jwuiM>M7+n-hb)-SbDsz9`w8Y9i*Tk^qi<6dw5Rcqt3FQ z_g{J>mHv*<^Uxb9y#KPKpZwV$@;ma1^ZrXGCxjRS`MZB8o+p8?bpF_x;E5V)oZjO(TNUkg1qo%e?4E|xh@2=BkF{zdwE|7BuT*~9xU1)R6)EXo}-Q|*2Q zyz4Xh|0eh_FZkU7|7L>9eGJ~ZrtEwLp2r6tc>m?lLY2$=F9W7YKhIHYJ}R-vN0dMJZxxD|9EROW>{>xq8TWkwG4{i(a{>w?PC-;VYe82zl{!2k8 zj^h27JU7)Yy#JDVtn8c${aL(z!uu~#PHH^i{g=1SE6)2bM}5wX_g^+S5gqTpbUUv0 z;{BI0{tlOqi3I+S*In|w|59|E>c#sn-FAxe{>%8K;=KQ|;Y-z*_g~U^pNRKg249w+ zdH-eTGL5&q|5C^MS)Zu;1@#K!bN>F^V8D~~lAQ@4zxKWQX>#ysrBv>x;Afp+FAMk! ze`hKe_yH%7D*(QGh5DV3jRtm3bH^+o&>zF=E#1K@SJL?AV+4VoTHZ(V=LZ6wwV3KP8hR4?e1g*o1oGE+ zDsE>$K8h30dD|wC-%&{NOCdkZ2?E!EUvr+8&EN-}D8<{of&Lz^6}JZCjv9x54w}RJo79qx(RCkLd*Zk7bbk-cAU3&P7t- zZS{cnPNe=4RgZyyryeGGr_~7foxe3eI(Omyz)a{ z@VY+0T^RgJC*<(*Szu42z4C+8R0TYa*YT=B&*?pi^Sa>i>WP01UbLwCV{`EHzE9Bx z{PPGJuR4QA^LaTR7Y^)9=Y5=kkgx9Zgd@N+?NgkL15chu?KlN|yx+^b+#Hk})z6EC zke?B9ju-sB_i@&PH*tQmZQ#9gs@?a3ulM@iVeqf>DSmzdFHv6YdmcQ_a<$iQ;1_(J z^H1=cm!;p=w*o(8^tm{vQxACmRPys1=-KG?oG=QDKt8X(0~-l^gzr1V0Ke}35+A%s zSJ{~ieElu?GcEXTpMT2?e(H?moem?gGvieGGe6|>_yBJ)@QwQg%7X9dC;vE2K%jr9 z*N1CD{)!i>>w`D;`$%K(Q{LBeTB1PzfdOg|yF1_~f6}Hc1})0+l* zN=%cUQIJpRJOdNJTl%~0)4_i&sc~Q~_@a{X{}S+CUe{d>e$aX9Hi7r*AmDV6f&Kfo zt6hGEeC&JbFHTn%$Vc%5@C@WjCJ^v7>_GlNNpYu-33xG2^qe*^;1hgr@gej#oGd$E zfVbN!|GWoJ+F0!vUTzKa=jyL<&!4#s__jaPkDTr;;4PEM4~d{>aa)z^Wr%;}hwC|& z9`e7XmwYzxrAGzwfX8uuhC<+D9N-R@pxk#J|0_U#T`TqLs^A5kV6_hT`ELb$j62Z3 zwz>S%4Dx5s%JJWWXYDS(bpnsSLBQ!^1N|v{@73Ep0Z-_I{KKJVy(jE`JqzSB{H6At z4Ec3V0Q?hpDz6tU0H5Uhr^~^+_fk7LO;1p6uUx9HuYUx*zt>CmK+mo2YL`Rc&p(&` zli;ylO8y-9B5%B01y3|f@_&H0@x8*k;Frd$e|g&}us=^$wfk$xclExZuTKQ>wJWP! zFW(2elkas#*N+4K*a`fchBe?}eZJJoLjk|K`^Q5*pYP>)IV_ML za!q=i4mIFWk}A%9ojBkpIw=lULI3*{vU4MN*Q(+^b{y#G6JLUUoe20~JLV|#{2D{$ zo(7*jQhvJ#-lmM=;W~K9Y#M(&{R+zc!TGWtK)$2zH9rT>_pSW%4t&cuvL~E=9O%#F z7v;#{u^VVyiUnS3k^Ghryl^3b6yQT^%8+#6wfsQvHR-^f3Oyw6&jSQ}xfdV{LeJAF zvZn-iA>SwUv_8;tsGHi$%Vz=qvaR&^8fU=Y`9eTL=>M{|+OaA4B2NIn178zM{_hAr z)9bEI(;1Z8{HpBf5Ba`r6(_^Mha^>d`C4qC=Qm%Bn*{lM1Ek-d8w}*57L%Zl8wOm` zp+YT#p3FA{)`HI*qj6~qcxPW^+zsBYq5R`x@jI&pr zEE4c?Z6H6;>r{6jAI=L!kHLrZRlC0ezvT};`17KH{{0`Ty*^gh1^g4|KlgQxfd4*U z^@sP2=KAs-fKdF+& z?MjeO8BY4EgXgcQxcv$|K?jWk-lh%o|LDZSEg*j)jqGd-e*S{$>ucwMo+}w8-y8CC zo2X$2foJvvXC!#8XY%up;K{tYSFbXvMVK1>_=^8(~YZkPSO_7KSL{7wG+3-TAe zF?%0;Q5nfU15dh0^?D1wXQkxBsyTylTl$6g6Y$MZRWGN559EJsFF~id33wi#TT2c- zVST^yQ}C-k$Lr}%pyyT*wPP;GM|a*rAHN9Xk9X2IQylU$?yJ7#z)vSoyHo)$?g?5g z@R;MIrvZ3ouX{8B@ApRXP9qrDdGN6s#K*7#z9@$5?+!hod@!UR_yfO44FwlK2ehnd3yr9?k;!EI-TsrI6o0Q(z7F(HiP6o55#0QTHzJIX7g_ z0q{;9-;RSvh^z7NSMWdANY7>PMWJQS@8F|+Px&_ZeJ|`i0qWWDM@NM45 z=?os`q}r<&c$NmTb0GNo1=2qPJhvxAs1y6ZjcD@0R^t<9Dj1Opr^t)dQs~<%I54~J^Vt`K^sQ8Z$-rdjfWZ+-)kblyG z&+-A5%;4L%s{eil-ZHlA%n!cDd5?>MuYD@}%YtuAFZ(Nlf0SBrQWJciC!Y1e?|411 zF?eFs&6;&ZC@xJ`hwp(toR%P-tCa|j{^V9`@a*w*ZUyYbnu@` zslDcc52+--Edg(rS@NsF+j<>i6ZpgmYR8@6p=XHy44&_}+VL280pANg1D^G~V_= zRqzt+<%c@ppLidn5%>uoXle#t+Xth*2M>Em`a6NQo}zm71kdF6!2#gMGf2;H@bTVX z7zLOOfUoJKa_@rYPNDdD0^VY(o?oxQ%l;uA+T&bE|0>x< zdLn{1@(V1^%<%P_a;9;G|Dde0{i2v_bm7QH7KlG9O z(+B*7*YO5}=W%_10ROz9`tNw~3BDgX4g7o^#mOA-`U^EqE(RaDPW@;Vc+cz_CpUuU zbA5M!w{*Um{onbt$}R9LQKkO@_{(VG&%x_v zSO0wnp2!~r3l~lP3u*T%mGtk(;HkX95(~Ub6U~1Tf;a6To&vnK7oyUExApy$tl%fT zahDr>>T~HY2p-=D?Mr|UJF9w?2QTl7l3#*9^8wY`;8#*gPebtK-tTA%-qGifzXMOw zMS41dfBJ*^T@Uc(J~-JQykze%rg;{N%H%a5h=inWlix&aE?DekF;H9(4|CPXFwU-~NgGcj0m9N0R zYOUwaH{g>zPiO(2YoP3G3qIEe54(VW?*+o%;H7<^dJuTo%xd?M;JrUqd;JK0&l^xv z!FPE+G#h-;2(`;1@F*)aPgn`Q^p?uq0G@K0^lS$&e?oDx4?J!>wbv2wv)AR%Q{Yp4 zZs7v>EZ-}<27dE_;`T4_7b|7YeeeNg)b7u~bNHgwTkyfJ<)5%I{?C4w$@{9GfPddi z_QV9QMCG;y|MRuV?EwBuPqkxr@W-A%^aDRSMdc0! zzvl}aqrsQm)Oa!x{LXIKIRiYC4<^h5f9HH|OTmW}Qk<*-f09r2+6*46r25M)@V0+T z&jIl4-zff%ga6W6_Wugrz~_7}gZF(T{l9~E@cZ~}@Gd?O`UrgFSUvY&f^P`97~zCa zAVZ%OEZ9%OC|qj2M@nWdh&u_ zO{w}82LHT;ixCm;9a~P(gwWrb?NC0 zUTT#5+zb5H4apA#AM>-~Z3KAK1!|XZ;P;)6VhZ?rk4v+_OYM*!7J{eud8!rQ2RCV4 zS`WUfyy9&ecobiZ+Y3JWuUz*BV7oy&{2Mo2mAV0selH?2Hdyw50r;419cj`6n&- z58yfS#J$?`)@@FBj4TpxVbL$ym| z@F*#7q5Ba5p&x`96kr}*p(9&#^w2zXx~3>*bsdzIR20{CCcRNv{~%a^GC z&IK>lNcCL;KF|khR)eSfLGqixdpKX#PVmUd6+b_NpS&kKkAWxidgdAMnm%B734He* z>A3+O%NOPU2LHnscOHVzt0RBD0FU6rJnzAaCRh80_xj)eqVj+H-L-t4AqsdWAJ~r# z{&1M=PXxZu7dTRa7xIC!^x)w>Q~PEEuOCb<18-d42D}OcvzgA7-+xOtTlBr&uz&H52Q9Z$@y^uWvz>5u#p5frf zokwLX_zK78Wbhp4W&cm)y~G!Quk*S6<={DoYkXS=KGyfsw}ST=Bl$hxAE#3L9s=*# zT;teD@Rd%ubq;*Za{1>f`19zBhd;oNf2sDm3tq|JgLneIE{ev7*WmAKsl7tSk^e&a zSGhfUzC;9XH9~eq2QO7lzaJ00`(5cz3Vyhm{Fw%PmM=PF0{`=^^yCCT@At=i;OqUK zSQPxoKItg~-oO`?z5vfrKz^$M9?$2#>VdbMEWdpV9;d#_Z3+I(8S!@DANzc1SMaa> z9P9&LIj!s*3_i*4SwDbhbs~ZB;7uDTZl{s^faDzTb;DKP#o$>zKCA-&e6`|aBl!4^ zisv2RDV&ICKlr_K^4n4HBtEcq8vMtH>PHvB8y`@8uY-TlTz1|9AOBkX0eG$$8qc4D zH}E;hci@8-$ewUM7Z%d*a{FLlWboy_h#U)ivHL|r@Mwc%XA1BY-Zx1H9xbKDv8>?B zdMd7RgCFWF`wN1HTBGry1bE5FYTxqUjXFrrm*8!3s$FV>cb=tjqapY;$4^u6jq_CQ zci=tqDt6kwWMPG3DoH;M;yuxo^Rjd4Dsk^LT~yy8#L0=TE?M zR8+gi1m9Xh{z(8H+leBQgI|a!{hxvtaK5!H;9p%=y>fx4IV(K{z0f_-D;@zn(i*i_RPY==pC1Q2?i0mfV(^(hPm&5ew=a}u0MG05f!Vf z1z+s-tHR(lhRXg@;IofNPet(7^)!#F2HtOi#^<`=DgC{zufZRGCHdyyLq|w|8}LwG zU+N4#!{;-5foFUy`v-#8@^fkgc$0GKN8`ZnIj__d@b(^;W`Rd*sB#yAk8r!?jiJVeoj-)L(u9&rn(QJrADqJIVhBp0Swh{1ZI;FY0&q zz)$s%{ZGM<^-{ln13tB};xJ4?)gz?eb$9;lNZ@mRmRt<*GYiDygP&U{JClJ&^8RmH z@Q;3woteSk)Ydrg8TjSd@>_oJo4?3!#lUl4kp8mZb8AX}W$@3vuU!-T@>|K*2VWUl z{irec^l#+nR^XpKl%4It!}OD#-M|~1l6+tA^qu90A>bYMtK3oG&z%Qp0(go1YOm?w z&$cOU=YoGWQg$u@@48jxt_Dx{T=BUHe6$lV>;xbCM*jR6yy$${c?>*DZs|V*e#{Aw zE`evBpt!vOKCqzp-{2$Xi9ZB?QB?8p0(_qHe!mAl>iqEG6G>l4zw6mg|BeDaBftC{ z8+?Bg`8g4IY2OD)310KE^rr{^ZLIv64ZQzndS2uKujGC0Lf{u(DLzYrH+if0tN=c7 zuk5J`9>wQC>VS`mruJ0S8-weEXJL&%({HV{Pb^`y@32}RZ|F}l_2Y^qhs(vvX z{PMSIud(2@O3M$E!RzKyoc{#g+vEHK@OSB?XE}H?=ht@#Ke-;Abkz{&V0pyQ|!*;A?&F><{o9zSn#gd~+t*^8|d7*X3S=?{vI{POSD1 z>0i;jP970_a%A}-I`~KD#p8iLDIz~41>f~tcBTQZ?t6Thz`v`l{*@E_yz>C$13z3- zel7}LeUtiK8Stk*7x4vnz@M9s2YADhoNom0 z7*+M!0lsvP%H0qCJci=oD0pe#r#KCsg2(hZsw?2>y2+lK z;IpTQ-vRHoPWm5%kNZmgc?I6$h~oUCr22VC{|fuJ^n47Sak_Xk@Yzmu6c@bYpYnea z@KQdPl^T4`kJ6tJyq6QO zl4^XL3Vy!5+GRHQXwQ=tf%ki^daVQxpI3YX`1=IXza9L@N%?sncmeMV90AYTT=J*D zZ#xhC1@KkXWY0D53>)+u{0scE=km{e@C%{j|7YNdX3L(p;8)WrKEozc`62yozSoC8 z0k6?b<4;WTX0j&%_$}wtNDf|erR@0>{Gz{0m<7DYN|l=nyr%QO7Xa^9Rr1BbpZqBQ zlmkCKS#ekeyw?W#rxtiA=kIC&o~MQ6n}BbsEd8y)cR!aOI)F#7Df#Z;zdBJ|Kkyo> zBtI1VRB!1Y4Sv`22G^-yh703Ld?N{2T|oVrS`148Hxi%1s46vX1JT0X$!G#ZPwd`}^gG zyx>1flOGC$kKGdLpFgF*J9>YxB6yvaYTs($Is86e7yO4dlK&d~gx95;gD2_`>YqPt zz;~>b{hh%_IGf?`DB7swn*n!P8by zd#wPk5JvLr!DD@*a<_pmtRR2x1>fZ7=3(%LtrWMvfInCvJ?Ftc@%^UXz|a3C`~L(l zRYCgiflu~%hNs{seSh-}c=gSyZ%F6!6;A!HBw*v1RUhUW(e1p%!cLSeRQu2Ml{rVni2>3DQlNkj**m)f% zfDd#Y(dpp(L&-mL!FR+`d@ce1wu0JgHF&Ba^1~+ZYID?HJHfB?Qn^2acTOYy$G}rK zA@LdT{prp2+JMDZzhs-tzR|qmIjtY~ah?=f#`D#a;JX&6zURPO3=REHxmUp}9gv^@0PlTH@^`^Q6;}H` z0iSeUes~RjqQCqQ+WkAEe?3?#JrTiQ`CMpp@a|XCUh%-IHIH#c}a2g1^AiM(o+Ncg1;wT54_HJ`R!Zq zv~#7WCHU%C@_#$<7_FtJEBI@FNT&~YZ+{KEe0>!Tk)_8{C;kgyAiyCpQk&(|MvO({oo1wzHk)$ne)A$25)yygdO_c{2OIx6=ac*;K&hv8D|?~s01@1W!(gAZFJ{jtCw z@0a}v!Nb)F^N->b;N8Zlyma98I;q^O;GyfQf8_?BQA2T35PVBT=_vu;-}@Kk!LvS> zonL~d+86d8Lu-R4`%3y7f?qGBdNl>FQBn4P2j1AwkH+t0^4;PFdK&tve1QRM$u;CKD~sgKgA z-9q|TYCmT`1|PpM>_39hz~4CkKwR)LITR;J!1Mhs|D*92?oz=mw&yfDFz)$|A`hEkRzKGhT1^B`~l5Y#1 z%n8@KfWP$pm)_uoeLrOo_>R%iKN9@AoQnS+!52@^_&F6kcdu~&_<1(?DSxkI5qKn_S~`@kb5k^M)&7p_$tp91gyO6_$4d~_?7dky@k&*lCF zp0%jr;XZiB73yElzy~yz|KEbI_C7+`w6Zs(-#tI7e}4iVb%y*F6FhqMaR2;50`RxX zHQz`MzUQ3m{}lYl=J5aM$pW4}y!7M(&sbjN762bxL;8z@&-Z&%Iqbe){Y%+74?M=7^21W_q(1k)2E3c|Pi+Q2{8;h13p~Ys`QZTg z&Qr4UIQW}M^7F6Y2RBRpGWd5J70Kz?7dVf{OYooi$Zw%ORr&u@ z`@eO_M#;n@fR7m>9u>S_b^U%E@Xmk8Z;8P#-d4M$0#7zm?VbVr=l7D&4xZNiF)w(t zl#(wD9y_({ECt>>i`uaw_>~!wuLk}mlNz8dc$`d<{~A2ieEF?8cZNMKn-*{*6 zlg>BQ3;dn)q7MWw(_Z$B0IzgX{c#+4qO2PKr+|-mpmv<~|6}VefU8)xzKsWmV8LBN z@Zj$5?h-r%hd>DK?k))y+}%A89D=(O+})k;h5yRjI!}GK>Yh{QN7J)SWC{42crHkJPaKRi+%HH*!& z|NGb9&%0dqVx`#deI6>85WanJ^nZVl0-oL0>!yQ0zoPtPfj9l6cyhsO-<21HuS}(W zDFOHFss1ew59_b|SA*wlr+VtbSJsR1uU%g7uQuLV!L!?X@AmKm*)^WK!m~ZmeC!4P zeqV78grAJ9dPcyn_fo%%hr8Ok&1vvV`&G|uc*zgy$A$1F^_2e=@S)RV{5$Y^dLiX= z8+?66wQDatR|ds@2;ShMjvET!SWe~7!}qk-aj(I9{ZyXA;OEP!{>Sjhc0KJCeDDS3 z=Of(H>i+?MJxcLJ%&K_9KiA%;R~}-(Yiv}UZt#1n^!Jm%uh{qD)bO;nA8!VDj_8_q z+2B_`s$F^EEA4)05xB424=N3x@*~E-Kr6w^*z?6T;ZgIey$#?oZ6D@l@JV&mUq0~C zzm(@r@C=)k=kD;D50%fp@SI-C&k*>$6)Ha(?rrNdCc(?u`vPXdhs{Onsh4!1^eHJSZJK<4Ux&Axwet06=r{XC5Oj(^jPs2ypK8=^)tJkYtH|eEa z|NX&z_??An*E4vUBg(^D_?0y({{`MSK>iy(+tzVK@l;%{|M#!IpKIwO>bw^VKDvaC zn*d(fo;yemZ`D)f-Qi2@l=2VSn6`sE;e zY5~Q60=~SD>Ny8rR6=>U3O_qQ_1}RHexrVW1W#qZTVKMXR8hZtfWM8dc)r8iC)Ig4 zg8jb#Tk7xp+L>H&Mu*qhs`}%?V?9uuiQz4?X*{HYM;xTQrH8*>t@-E)uhLk@%>!Ru zSnVnd-?>%wmxAZ~p?E67N89?h8u0hERZo5R5?fE(6kf5Q^3WPS@0E_*5q{e4gZse; zMbLQe1Fw@_?HvrC5J&wr3O=l!jyn;){+N6QyyGX$ueos7>l&Yn;h&bO{3^K1TE(*w zez(2K?|>)CsCf3l@8!^VI0E08U-g`V-)Sbl2p?wqdfk90jH*1}gLg};et!z@cSYsj zzz4t3aX-V|rz`$n@Xebwo+D@1-wU6218rS&O!&5bswX}?WP`?AGPuWAl}`%~x}$!{ z1h=0NE;-=$?-E#R$+ zseD^_ofPV?F7Sn&6i*L$r0=SyKfL66U z>Z|yd!F%k}ao57X)lfdS!1s+(JiFnMFR6bIz!c^J{5g)gKL>BT)H?1MgT!{hkPZ z^sf3PCH(O;)$ajcuu`5C?&~7Y4WHFQaTkI|Zlrih!q3@#x(e_D>6HKK@EYgk_24sY zJyjEUS6c_`4L@M(r8~e2FH=6d!Pk#e{Jr6a?YjLScqY4#KN22h^LGL~vt6&A4)10A zx6Fapsi^U@2>x!G#?MOl!1n5w4e-hKT;X>33wvH5818TT@EnG>sH6FK5}wKSrMUnv zVC(&^!zZRzp6|jJ+jaXV@Kd&Lz-xG~1sW%x;Nx;AZ$IG|1}Z<1a{hPT6@9O9?h5ZR zLE|JIJaP`r_oVO7^TDsB*1RqXACy4(ECat#QsbmD zyr8?v}_WxW1zd2g*Y=-}`@A2z;eo zPd*0ExJLD#fma)=I4{HZjaQy;!B6$o_;~;?d`kWM9KLG0^79TpVx{8w3V+%_G&u~NWWP!K0_hsaQ2esCCE(ouz zuw6>Pulg$g<>4OoJa{#DiH(Z0F5Jbg$9lojq|v-?1z*%yd20{9HCcgng>Rg%^1a|8 z&Ex~&o$4tMBjAzxDF5T(!@nxdY4CgNG=65oZ$wo63*l?hsJ~XgBUM$q*27!PQ9Rq= zHSKx8z3|UpG_DT8eeHg3C_G_Tl|K*f`A2>YUcHt)4E}hT;(rYPX5XJ*!JpMqem=s_ z1!?^JfG1C&evFt~$N8J}zt>6jx@vsJfDf^C0&eiL_PsX=ynx;BOASBds`h4pM|r04 zkPZH8qTTL*Nhls=cG((Uz;dli(9;>hpajJieXZ=E1Mpeh5q8 zug9xhtKnsrD$Y&tK5G=uPI$NE^8Ikn81kd=;RV#*({SIH@=Nfp_Wk@Oe2MM%dmmn| zo#KB6_y3^wzJ^&r+;gMqF9#nSN9C)+C#6^Yb>L-ed^Uy; zs;hch!c)Ce-rB+Iy-;~yc*E(+e^2-)`(8Z&UL%M4cQ`y^Esf7{@V=jv&#CYPm2@7S z1@GajdKSRT6;%1VFCM@>2dkz~2^EJ>TI&=V?4d$g6n}KEKxFRXx$+#caKL zTzL9D%3EUix~Dq-r-Hja)^XFrkFHg}c*1kOP(69zOE0OO!tiDGyksf(s*W0O72((I zIl&t6q4wNgeRy2^-P;uIYR^-&hPPax`Q8zJq`TY?ekPmp*#~~$ruuO({K6>ZVHCXd zU5&Si@WQv1=Na%uc~#F`_>v+TZ;Rn;kEs4t@Hdw=o;Jd-^;dg$z#F_!Jp14y4=4{u z;Eh{qe4c_AX{K><5x#7l>c0VBHBEjG-Y>86{1hH$_o?5&BTi5~pW#F8`s6S8)XW-( zk?pzL@Ok&ko^y-|_p<$(;=^kMD*wsg#q4t=Exb`awJQ@m(AF#FfH$-Kb@Rg;bk}i< z!E2;Y{>#Fbom76Rz)#$h*M?VLt#Q%_-tLpeXAAh=v>Kmn;qe0%PZzkSJtx=$Ug^A! z+aF%1mf{=+&(KNzI2Ilwj*dG8p8vJ-9|+%AU*mZ`yiy+dGWhOanqO<-V*{0kEpVTd z%G+-E&U2by2jE%lJaZgA-qyLDg_r80IIqA@tdie`uZyDNK7^03^$#!LWn*f*y@ywt zq&$CvkFfm#TUPN-$n5>frt5N+K+4q4C z@W9hLZa4TKTld%-Za*ts2EnKJX#9+X-?Zm(CcqQzQ=HS`YcnXGIq;s1G+!3Mi@j1l zSHj=!R^B$it4vjYZHMQwbwR=KD`z$S55u<|R{ba8iMFWx1$fsNI_`D&s{?A+U3gpD zm-q?1rM<87HN4w%#q$aN)b1<&gm=iJcp};F&hUBn?XkwcEByBa#TgI2Xp+uXN#V77 zX?&)E*BY(-WQ6O|?~Rw? zmz!uD-hww8A%6g$+DLhR4nH2KIN!nh%~JWV@JRWU&p+^~NtL&#_8ejOyenqcQDehz z9#P&B!iVfrJSpHqt$aGT+Yq%k3%po8)sqYUCPeWUgwH9h_)EaQ9Z|oRhbN4z`m4bg z*m<=sytUn@@PgkPs(H~0-qyaSwTHW>)%@xTf00Pzrx!d!S+#c{yx#zo9|1o)UFVbW zaDNZwXBzy$edT91JZ^2(zYy+c`(>?wCyT3k*260&);Qb--#$!v*b5&SRpk%C&(~4; zQ23Z3it{|YlC7_}2A};v<1Gwc+^)AghWowIIC%xHoL_N%gcoV6{QrR8{-*pywEb(t z=T`>1t{wwE->#dv!M{w?cuN8wUrNVK4WIN$`N;tH&nwRc-_=3&=Y{uwp!r?|-mrqo zmxk}2t^8DiXYQ{!Yr^BEQ~x%AcN(dBn!&?=SNOm;cUQYQ!HexuzjucZJg55m!uPe8 z4}sU|told8r({&SCc%S?tNcuO^d2fd51uNT^0@@Q(w@g$4R78}^>2bdTcG~h3C|xx z$K4N)@wNVVUSo{Pe}TvB zq;~zLcb7*gtbByeyXdFYzp>z6O;vvacoTabIXOH{kn-jZUvg3PWQLE?8Zs+*| z@G4bw{wWTh`ds~94xZ9q^QbEP%WRde1CNtN@ic~Sc%!_vgpWy~dfLH5ZQm_lc!!Ifc;$Z`Jg$9y zZH2!nqVc~6?q&Ns9fYs)(R@Dve`)JK&%y87zVuh&8J{Z7JMch1#q$WB_ki;M65eW& z`~%!AoBTUGvYjU*6#4J`a`#sG=Y?&^;5CveKZW64r>dS(@FMnJt%~r(wog|Lc-CVYxAo!P%~gL>`169wLu+_zyI;@| zo+OLrqaQrGtz+*4-#0{g7z{s}L;W=he%eFzPlWrQSNt>JY2vEc-=Xrh@DCg0UEukbDgGYtz>kWvKm2zk)iVtKKBjyu{GHwRp90U)OZ5lB zH`Z4@^Wj%wD*wyiJ2Pm$tc5r7(RpACJaSFdvm0JEjp8`~UwlC0`8Yh@K-F^=KB1lb z3j9Mn`E7W&XR7}pJYRjq{{rr5`?kG@CmN#h_6@#qhK}oE&xM4~uYR^4LNs^`ThAN^ zUd^6kN(8_4M(2~1@Y%M%r3XB~?o(uiH>jd|a>HNP@9skIs;(L*CE*+9Xuec{XSe&^ z)!}c0l(%~D)twRXF9y}1=TYL9u{4BTLj;JO>wS-KeF{38{n>;mACEihQ*b)V0ir4^26|w z2^IfIxc4c=e*qqCulzdPJ-hnlF8ua9`4f0@H?{XQysrI@`vhNZ`yT&p3}f@3{*Zd!aIMHXNNzx>!|tQzw2w<7KNX% z`{`xidopSsRfez2toGJ|=e6g08p78s(Q%u@GcHj4ZQ!m4)$g6*X%vo&Km4Yv>gflM z(m>;3C_HKS`hU1@2eoT5d`TEz#4Y7#Gd!;C=d%kw zD@fxo1U|stBYzBDx|i~E2HwEFZ(N3-xAh6P;2v)@ZXdw&*?f5p&y!klzJnhsr1pM= ze?F)F`UAgnS^W~#_V*2+ck}GL5gUHIn))jt+$T)&q<|+?I4W?+zqMTO zNNaU|D+rI6R0FpJytv)xDi440M&rL4ynknTU3i%7`{xD!W6!mv#Flh@c7jYB2Z(LUWAK^2LDGxv3*)l255ld=ZgwL;hA2r@$z_&$FJZ|vzbrgRRc*juXIW>G( znCi&@U#Bo!vcW^`d6vBJG?^4<5qR!~^3w3L6%a7iw!f_l1XK({YEu*Bn>BkA^?GBA*0rQA0ix?mIxood^FJ zS-u25eyzs&YWQKhkGl!pz^Q4n+eizlFt&JVFs{?jLoH0|GswA+J@pR(t1?6l!{ zd`3ihU3fx!PS6W}?vtPuJlimxH`>Fa{Ly)=E4-TR*WC-A#`b$02zM)~I7h(!>gu@T z;Wh1qH4UC@ihX{;M}&WV!B3=8`4#Z9ZFSuB@b^>Y+u#|7Xq@bYZ||h>b_m|x_LmNY zr~R$|wackazlYiPWcwNE_-tD@8-{v%CeZwP439KSV5eQDp8W|G|3{QBzfkf2fG4u| zWkgi^oO*VIXx`c5Lymh^R6K4d-`SokNdiA}KnJw1vrav$?fE#n9PD_I-Dk9~FOH|H zu6pvK{>1h^R$GSdl&{`b^S3n0$G6Y@O7N!3)n2l^LyTF39ZsehZHo+)-6 z%x?cU<;Q1LL0fL+c!em6vpec3Ia^?lb2#O9RaGABa=+t?o~Zn2)U$b=+BFH@=c&%9 zGvPnat6lar)TuwcyZYU>TXj6zDpg>Q1v;K?k;dUB)IY&P@$7`V+j}VNF?gq*MJrVB zD9RVFpgf$0_qO%(_Szw*p60gSj&1wvc$OcU7xz)m!@Y|C8T@!!<>4*-Zddi=7kC02 zn7`pg+o_%?`j->W?HlTsSnvsU-_TA6PWc7-)nCa`{$5$-$GXiapL&q;pBd%Hlu;gX z!mrr%7TeCusb_CNo#*ZKnT}6LtoX~Jo)HCU%r;` z`S!VNX?5xu+*{{)UzERR*D-p+-#ruzfS>rRybXu1w+4-ackC{h3ZK1Jd6)(7I6!$= z0Pnp}{cGE)JMC(CL3v(>^1=Rc+y1~QKj(*h56a*9EVs)>PWcLUAIG*icD#58<>4Ia z>9j<7w#Px8@)?t<{2i3fXzTwU!RH-Tdtbtf+J2HB;A!${9NKL{=eWIW-{1(U&hZK_ zm4AC(mgA>OY5v-BH^;A(SHC1iJ;}0Ze5QhDswCGx|M&eit?eJe@7pKsx;npaPl~U2 z_ehlj@uLi}~4a=XvI*vWMbley$Wy{mhU5Nlggmr*WVnXMWP3Rs76P*ca8$ z{KOlp_?e%9wm+wREpzf*%k~50?-aK|I&Nd+xr|*`Yyod*pD%6TBfZpLo!~X>et{pn zT_l|!dc*q+(7597m-(wT?}nrNCVM_*EIfw&P@4=dWBa+ygdbS1{+&y=4}?YVY}*AZ z;4f8;i~W3Z@;}kuH?alf>ugthcfpFH!06oP(Hy_ z!EN}vrW#id;n%7u&KK~WJ=Ea$@Ge&H8+@2Or{kjPoH$P>SNzf7EkCRNIPi$>8gGf< zFP>?>q=c`s_bA!2BrsXt6zB}bJ+WvS=P`>sC<;@$O)AmWT<;6}tpRGaNP=4P{<+C?Dn(cow2%b2a zj%%+maOz)GLF01*$~V}lc1?%hvgdK;z-y*dJd5CST4_A2gbx~^e%t_GbWCp3%!zYD z0(mgXpFSu*3{UY&@tlOm+oQ<4@6QoIQ1v!t@vHx$#N^t@!%cekd1(@3s?L8F)^+?pGOJ(Vo+<1#jF^?X}D6PCOeYsGuz; zb^L(s7t{vz1gBO#o#8XO3jE=l#%Y}NgTJu%a}9-mwet4*D<_^${gt=LDF5QO##;b< zc{3e12>#H{S4-igZTzo+ACIMZu^C=9ig3qGp5;&}j{Wcvs`hcB6_IN!kw*$3BGc>Cq5{|~&3-Di)gVd1nlTUNyx z8(!3YM<;}DsG@nD0zS*WkEMf8n<21m2%O^%&Lg*F@s6*kqxx+*tm8+Pt6xf>{`UQq zfBSfF%DdS*mTD*;tB=NEU3jODI}J!U%Ze_8Jf4;mv(?{wFOe5-+MmmM9CxkUNDhI;nQ)p5h% zbDFFCV|eriDsS7YJN4(Apz-h#<)2*F`Rxb%KpMGiFXhxzZkzHJLx*v^VGYG&x2qj* zd|Ss&g7VXCoxE+&>XeW5S>rha%6nf{fZ5<)_Pnia*W%O@zJ90(%Abv(`DM%Bo$^`l zt6yw+tK%MiioYi6iD%dGEZt7|uXdxuJ_a05dPd{f2lXsHt9IG#7N`7hJ5P2;`2gFG zs4sk}U3eP;Z`D=D9SvV#*Q@REa_6|)Cn`U7c*kR%Reo%nB**>kso$5N{$wu%cH7b^ z-@)E{vI*s%+x=zR{>dpHm{R%KkMeGIUF#^kY$C;T8s5`BuP?#p*azlK_>2rX?tOSO z8xMAy(}}a>T#b{rD1W(|^8W=MnoIs0{ys?gkD_Vj)E~osci6TCj=RoNzu4Dq$9p7H z9&Fj7L@XFP~Lxo+GVc?aLPxs_lMeTTE|n*QT**tkDpCAUwEFj%D;VGaO!zs z>$2?UkmI{PDgU-jiQ{$M^u5KJ?f6A|ADL~F;dsds%A0+BI(|2$`o)$%I=;N4j%!~d z9RFNd<=3HIRq6`1!YA1Jfj#gnH&nmQR!;qL0_FRJDgJZtwQW`YDm2 z^(XYyaUY@l^t5W%OL(s^&7%+Sk5v_q{mgUfpU_SHV%uap{%wT%-ChUf_`HWYZd@J4 z@nTI?kKO)pyl88+D;3I@FQ9nR!&i+};GXaT_CcBl-qL<27KW#2r{mh=(@s1O?S5-T zl<%5a$E^Y1n_Ky>4?ksJgzYkxQ-7^ZI`6ec`Q(Q*PwjCRr+km2I<9RK|3B}j{Mc*i z91pP%qQR)Yti6}b9xrjq?|ZC%wC!IV4_T;woPm0BTvguY!q3=zvF+xadg|Cd469H+ zubbkx%N9=geRkhu2g(n!`|11O2W=nYBk*chbRIhe_Z}+02!Ci7r0uf16VC&?v33vT ztK0e0Zj(FZGfh@L?J-)%E0tCSc00}SXhoEVU#P!`ePOp{%1-&}whx|dYvuT^mO5^H z4KK%^w9@!V27lH@2TTk1up6_sUA|M#o&1`=wrtDs2_sa$ZHwUez<0`XG1R~ItHxDX zc^HDyny}#I+=aj!^ zpGRv^zEvC@cMCl4ROQ*W&2{RDx?JV$v0=xLrd6EBQO^{+kZ=}$%&sF{fls&fZ1%Iq zsXs$YjfaOQztFx9ynx5;sD6A8pW8(3`UdY^!6uxV;T$*O9(r0DKReQH$ngHGkKGqes>3+-kFteA zY2cM@->{7E-;vay?C{ksG|uzETi6FX@56c=RKYSRzpA(Tu`)cX{m!ZdU-&@%(hy$8 zewa3gZ!fR@Y6EZbM$j34%TB1)Jx<=D+l7{XC||FX@-P%W)-JfRAE$3o{Orf5%{9^4 zj}McpJnyp~8LIKX`|R)S_n-&j>DcA}Kd#!@LMO)KYhS<_e|q~q%<`9PzaYl{X|M9n z_($4(4aQ&6u0t~ZC$%&Vv!GqQEuT5zA$H#5I)N@R z^A9|dT|cp}WzP6{eMZOSI)QU`Bb4g|qD@geZBYN2%o=YTw>Rv%6US{lJ8yH`Mz(!= z*}vWGeW2{$2KJl|`*-h1)xiE;cUR8-4Nj%_*}sD~s66|(WGT7+`M>jF4ckYHaYncI z6S4f}?Mfue|F(5FY*)S$>Myn{r|t8`cFnT$7~9panA*#BbvdedIBp|V)41Ze?ebFd zo#VFOUX|y#b+<3h9Jk)bbe`e*mLdz~9Jd|LDNc^tIQIRJ<93-{*KLDwyLgJ?>;zBU zSo7KsUTw0zxA%rOvUNKH;rAn`{BZcWtjgP1cyYUdJQ-fIsYVXhw@kDP^IYHZ__4;x zBGfZ_hF}GJkL{zy^(_l*y~-Ap|K42f+6C`wH-h%VTiScRj=-bXg@=>y`A;=I&%;0F z)OffGZ`4BP!`tu^ebm1X;0sbI{%7zY>u~!RcFvQrd+E5JQ2yi=#rXpsX79(e%l%G0 zZ<{C{u7^46srqB5Mz4!QontL>}L_5ZtUofy~u$BeG}8=(GByW!0B|C5iXJlFr{YorRe{{M3q z%{#9Dk8of0aQ*+OkLs@>h$rDF!D#p^TSv|H{{ibXAG!X2Np@8*5A{T?uKCXO|5b-+ zym9^ih$ZSruK#zpg)KW#|AJxyuK)LNSHB-c`S_>hr{S+%)h@38ud+k&bN&BCdoZ5s z|2NxuV6Okq*;EJQ`v0u9K$z?Q3)=ftx&D8D3f05)|Cie+&RFVZXWspIqVoyY{~wB{ zdXl4jmdbLj|Nmy^PpcY}0tQ%S=xEcYIXdmdiUH z-F{DT{eK?YFNN#>T{5YDuK%B@^tf>Sf0T{-17EbO_iK$GuK%BDi64OS3+=uk*Zd?X{y(&_oa_HPSJZL2{=c3LkeA3$jyD3X{~xwk z{rDZ_-y~Juxc)zpJqN+{|0nJDBiH{Q?5c`wdOQ7?Ij6=U*Z<#KqlU>!Ea<%zfXiuu<>lmlAQRz z?^Pb=qWt3{>R;Q2)hQqMt_rR~`P^sJE<3F_bTt8Rh39{MiE?_XfObZoxhHbX(x_6y7U|`uz>Op*>IZ8J=RP;`{{j8I(p*-}5r%9*!?Q5J<|4CceH5TQ6^b$;g-}6)bf$$?oRsVeWIJ<$o48F=H zu5GX8#FMCz#+&`TaXgj1AJc9xIbO#0H#mU$lOI*T9EU#|s5sBUeaGv#whe?+f29?w z=QheOjH3zh5I(88#*Zxna_UL+QT_fN3BdY zxjh!*c!pJKZz9xlx1u~HypetG*mm$}E(K6oTs=vNf(WnZjpn?Z{E2;j*)j#^xR>k!ug)lc@S5^wUq_ts1#BPbeklLeu4CKnAE*4Ed>Rj9 zP=1QlKN+5XyvADqe4-sN2%avL>R$>UQ&r<_4ZO!e<;S)IbK;C?7Zi7){F80Uvke!g z{BJ90+fqB8Vu32K+a8Y3*sXbb8TC)FbzisO8|}KWecg2GiDL`9o}>JpF*?uKc0W$} zK6x~5zoPu4n1Vm>B6gqJULWGr^T{S|Y#qk&SMKVsgmAx`I&KR1y{qzc@FR9XAq%|D zTlH@)cwhxVL3jsS|4;(H>AB)855FI*`fVFNr(Kuqxn|o&$MK4VlevP%l|2^X zly|q^Yqq_+zIR1E0b>-WU2b;DAF}&p15y5FB^`GJe0grwKOP>%eg{p17aOnn zVy_!lLV{_YuK*_^65M_igYvIhB9=x#-k?aFW_}2<0ynQ@cXp zFPEzR^YA=TRnIl}WJ{QB>*gGHu6_S}jPhqYs$X8gAK8h=9(Qr-IcXQbexQ6=`<)U| z&34LX>8?0qz>i(idBc`5Ipx>6YaAv)`4%^I-cAkoIU~29b51>JD(kq}P=2;OsArcI zobr!sKkyJmKkrNACPcIugE`*PUr7RUbtsr)n4v)WVj+sA-Yeyw$gJud5bx>h=m{YE`cZp&>s zvQvJcO`upxhvQeHXkOU1{*HIH2Waf_uH(nLD?j$N)$u(?6u)gl?0AxWDsNva9sgQM z((aX-7BRu1v|_tlBVmZ3Z4U;ohe8QcEPaj&O3u3bKM{ITu7VcQTm zp242~YKP+<9jL_n!jqO#JU!tXv+2BHuVHiQZ)D?YILfD-s`|&l^Vt0(+uqu#C#Z<( zx5s)N&t?nK7oeU!3sv5hX*%WS0gvYTwe}MN(rTV|aE3emh zwy&*DJPGZBUvwSD@oBbxBQAV=b#*f(jyDWcJoXw< z$1g-vyE>x&3qKW)AN+=00O$j6;H!ED!#mjTtWog&we@*A5&qdO^v;0CJ*x6^;eoLf zrwu!&U4>Vue{Gv8$0GzN{~J+H9oyG>2Rt~Y#^*kGvH8m95%?;5&iWKQYZk?G5$?TA za06b&zHi)vyQNaUKZVyhr~JHuk8i3tKf^~9Q@eiA{guziF*WY~{_)@IBzNq-QcU>f z3aURoJj`2vKN)FkND$YXi`w`Ud zCE*2a0Zs*YzQHPA9iDTW;;aY%-9qJ?!1K=3IQNE6udaGJ!2Lg|d^dPdJN0{S_(gl* zeh_?BE#+q+f#K)F=XM`?D9Q)+)p>gi{6$UGGZ}uw-jf~xk80oBgW#cdL47IQ zJ*JMk27bsEEN_OlEu%c|f)9$Iehh&(v>9^pa)pXu| z08eJ0v(MqJ?Yiqbc)T&H=PUeYR?X8t@Z`SosP?-*ynjpE!q3?7U5k~sgz(B;l(!V{ zj=SXP;J+uRzp}s|ebjj-7rgO9jh}+>6Cs*MCE$aWD-Y%2#cU&uYVcfkA)zk3xGhZc zg73Pg`Pd4c(Z1)mho4%l^IBJU++G?dz2GBl{oX+Ml;$cw0-kh}>K_l!HAH!y1}_j_ zd7BM?KUMi(2(Pn3$6W#6ky?3P51(b%MYqALT+ng%!ZX?RibL?oH`K0B_;~w%avnbM ztLnc7-#bkn2ESwrZ^N&9g^&N$%T)dq$_Lm2$&c{p2UY$DJncS>|A@9uExi8Xzcqeh zz)Lh#d)?qCCaQcA_&!^opBi3uqULD^_b z@jn{AbC&vR65Mm2>X`}unNju3gSUOI@=M?~Co2Bca39+^WD~qYPtC`j@XYq0?SA;R zks4P=;Q{vG@@e?xEb5m_@I3bUeiQ!Tg5tjqkMdsiJcAFrpgg>V$6coL{}*_YH}clIG|c=xCB@b@%^*K^e_jJczH3VS{-GrZKzVP$* zJH01-k^Sx)0AE#B=Z)d;*?rZnaqvP-75`LtH@jay3;u1q>R$l=WS?Kl;h7RB|LfpW zD{Fpjh2O9TX!gKo@TVPh+(+=>jT+A{ z;Vtbx(Fb@#y8-eYe)*WjLxgz$onIgAIfdx(DeDwZTzK5I>X*dumtEwk;O&|#{`Bx% z_f)?peDyhb9(XdlFb24&?>@b$5xy*;C1~p@9M*U^wZ}~Q+O`BfzujZ z+SZwLgr~Fn$bRsMlhiML;Kh=up9aIvdMclz;CXG_PJ~}Cq4v&z?{U|BnG64D_p=tm zL%yk=Rq)1k17RcFvy=L92Yl%i&5M2TtzpXZ5%_I;&(|sVfCQS?7vU*vAA=k4npxDp z_uzHx^YJM>ZYuT58~CeYit{u4R%+$v7yLqL^<(7t|DAVY@Hwe99{R&$=8+GBe{ZGu$HHUUg7hiyhjlf6 z0^#qgDbD%umRZ&B%iuGgsh+j)ykV+m3w+p6lx z{a4_FS}LB~@JI>&v#s)Csuy0!}lIjyY9mK*aPlQ;1j!Qp1y`(xAmW&;GJxry`ONG0M!#I zq5ApnZ1~&d)9!12xxzOUm&b!Qw*4QH!n;*bp3}hV&Qrf+gfFz~&)MNkFDlM_@RIhu zt|@Fvf6+{*BF_8e|4`1o3izahNOUiD*h_!_&v(gwcC7VLM1=e7s_{NW93 z!A?JT_Sl*)L*YL!sa<2>m3&Q?+fsQ8f+w_fEKA|D59qjS;GeH4&du=4 zPn5S^@HQSgZV0@|7L`8+e?Cs={&u_sKTR%R4KePq=&*9l^Vd*<~ z-P;TAu6C7x|30hpNO`!6JwICw{@oVV)rGIEum19am+B;M1z&A11ZWT6 z7ozdg72bcg##=9V1$)8HK=@>P(Z>jQo+UaTj)$+0uDnfyr)r}9nhj5F-@6vV|M)A< zE8w5IDG%%6)AA^uZSWqpZ^>SGs9iri1V2Arc?*S4yrX!|!*@T@aj(G-#8IBZ;Gv-^ z{}_I{h{n$=`1}Dn&wPYWv-KfA;BVS!JV#8d`oibe1Uo;(fJe!z`rY95?E7jGcuZSg zlo~#5td5rfp8BWSn+-l|t;*+xC#o$k0`KjrdP>7<%ut>y!B?hJKh}ibouK?QfKRgx zewxAkZ2hMXJipy9>jW=spBLTXgRg7c_J#L9sQEGk-npjQI~wj~8>vo$Pc5f1J@>I1{vnp~yb1mwiN?=PxOZ!{cRxHsX~lCC?)gXcpN2=+u711( zFPU9_6Fw`s@^&A-E}HuN89cbQ{4IP^h~obO?^ssj^EW)N?Mo0PiT*r%-d$O&cEy4} zPoVk}z@yo9mE`bcQB;pRJgU9_B{RI1t<%m4FTYRuF909-MD-VkSF-17%fZtXRXeM~ z>o-+Bb>LTQKl8@$Gvn2dE#X&O)GzJenOs%BFZ`)(gxnLp*VY3JfLG|H`7#{dz(ez5 z9NhJ-;+YCRepmfC3to4Wd;vUz{f=G^zmrz;XdQfVB*n889&8(C?}4u6KFT(7OAjydKyiA)pV{@LJn(+D4^?6K*&dol zrQqjmU0FqVz;eZ31AZW<;;#=6wD(Chg=b2q{%sB4`bX!_j_`dSH1GW2t?hndANXwh z9XA*r!S0KVf`7JkfD_>dzv{R%-~&b}|8wD4+bR!>;aB6zSHWA`_tlN?mUjPQ2Rv$^ z#@jx4dRrfL1ip2o`s)<@WPZhe5k6|2>c0X1yx6p>LZnZ1OI8yUwnoy z?EQB}xw!m-�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::iterator f = Files.begin(); + UnwatchFile (f->first); + } + + if (epfd != -1) + close (epfd); + if (kqfd != -1) + close (kqfd); + + delete SelectData; +} + + +/**************************** +EventMachine_t::ScheduleHalt +****************************/ + +void EventMachine_t::ScheduleHalt() +{ + /* This is how we stop the machine. + * This can be called by clients. Signal handlers will probably + * set the global flag. + * For now this means there can only be one EventMachine ever running at a time. + * + * IMPORTANT: keep this light, fast, and async-safe. Don't do anything frisky in here, + * because it may be called from signal handlers invoked from code that we don't + * control. At this writing (20Sep06), EM does NOT install any signal handlers of + * its own. + * + * We need a FAQ. And one of the questions is: how do I stop EM when Ctrl-C happens? + * The answer is to call evma_stop_machine, which calls here, from a SIGINT handler. + */ + bTerminateSignalReceived = true; + + /* Signal the loopbreaker so we break out of long-running select/epoll/kqueue and + * notice the halt boolean is set. Signalling the loopbreaker also uses a single + * signal-safe syscall. + */ + SignalLoopBreaker(); +} + +bool EventMachine_t::Stopping() +{ + return bTerminateSignalReceived; +} + +/******************************* +EventMachine_t::SetTimerQuantum +*******************************/ + +void EventMachine_t::SetTimerQuantum (int interval) +{ + /* We get a timer-quantum expressed in milliseconds. + */ + + if ((interval < 5) || (interval > 5*60*1000)) + throw std::runtime_error ("invalid timer-quantum"); + + Quantum.tv_sec = interval / 1000; + Quantum.tv_usec = (interval % 1000) * 1000; +} + + +/************************************* +(STATIC) EventMachine_t::SetuidString +*************************************/ + +#ifdef OS_UNIX +void EventMachine_t::SetuidString (const char *username) +{ + /* This method takes a caller-supplied username and tries to setuid + * to that user. There is no meaningful implementation (and no error) + * on Windows. On Unix, a failure to setuid the caller-supplied string + * causes a fatal abort, because presumably the program is calling here + * in order to fulfill a security requirement. If we fail silently, + * the user may continue to run with too much privilege. + * + * TODO, we need to decide on and document a way of generating C++ level errors + * that can be wrapped in documented Ruby exceptions, so users can catch + * and handle them. And distinguish it from errors that we WON'T let the Ruby + * user catch (like security-violations and resource-overallocation). + * A setuid failure here would be in the latter category. + */ + + if (!username || !*username) + throw std::runtime_error ("setuid_string failed: no username specified"); + + errno = 0; + struct passwd *p = getpwnam (username); + if (!p) { + if (errno) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "setuid_string failed: %s", strerror(errno)); + throw std::runtime_error (buf); + } else { + throw std::runtime_error ("setuid_string failed: unknown username"); + } + } + + if (setuid (p->pw_uid) != 0) + throw std::runtime_error ("setuid_string failed: no setuid"); + + // Success. +} +#else +void EventMachine_t::SetuidString (const char *username UNUSED) { } +#endif + +/**************************************** +(STATIC) EventMachine_t::SetRlimitNofile +****************************************/ + +#ifdef OS_UNIX +int EventMachine_t::SetRlimitNofile (int nofiles) +{ + struct rlimit rlim; + getrlimit (RLIMIT_NOFILE, &rlim); + if (nofiles >= 0) { + rlim.rlim_cur = nofiles; + if ((unsigned int)nofiles > rlim.rlim_max) + rlim.rlim_max = nofiles; + setrlimit (RLIMIT_NOFILE, &rlim); + // ignore the error return, for now at least. + // TODO, emit an error message someday when we have proper debug levels. + } + getrlimit (RLIMIT_NOFILE, &rlim); + return rlim.rlim_cur; +} +#else +int EventMachine_t::SetRlimitNofile (int nofiles UNUSED) { return 0; } +#endif + +/********************************* +EventMachine_t::SignalLoopBreaker +*********************************/ + +void EventMachine_t::SignalLoopBreaker() +{ + #ifdef OS_UNIX + (void)write (LoopBreakerWriter, "", 1); + #endif + #ifdef OS_WIN32 + sendto (LoopBreakerReader, "", 0, 0, (struct sockaddr*)&(LoopBreakerTarget), sizeof(LoopBreakerTarget)); + #endif +} + + +/************************************** +EventMachine_t::_InitializeLoopBreaker +**************************************/ + +void EventMachine_t::_InitializeLoopBreaker() +{ + /* A "loop-breaker" is a socket-descriptor that we can write to in order + * to break the main select loop. Primarily useful for things running on + * threads other than the main EM thread, so they can trigger processing + * of events that arise exogenously to the EM. + * Keep the loop-breaker pipe out of the main descriptor set, otherwise + * its events will get passed on to user code. + */ + + #ifdef OS_UNIX + int fd[2]; +#if defined (HAVE_CLOEXEC) && defined (HAVE_PIPE2) + int pipestatus = pipe2(fd, O_CLOEXEC); + if (pipestatus < 0) { + if (pipe(fd)) + throw std::runtime_error (strerror(errno)); + } +#else + if (pipe (fd)) + throw std::runtime_error (strerror(errno)); +#endif + if (!SetFdCloexec(fd[0]) || !SetFdCloexec(fd[1])) + throw std::runtime_error (strerror(errno)); + + LoopBreakerWriter = fd[1]; + LoopBreakerReader = fd[0]; + + /* 16Jan11: Make sure the pipe is non-blocking, so more than 65k loopbreaks + * in one tick do not fill up the pipe and block the process on write() */ + SetSocketNonblocking (LoopBreakerWriter); + #endif + + #ifdef OS_WIN32 + SOCKET sd = EmSocket (AF_INET, SOCK_DGRAM, 0); + if (sd == INVALID_SOCKET) + throw std::runtime_error ("no loop breaker socket"); + SetSocketNonblocking (sd); + + memset (&LoopBreakerTarget, 0, sizeof(LoopBreakerTarget)); + LoopBreakerTarget.sin_family = AF_INET; + LoopBreakerTarget.sin_addr.s_addr = inet_addr ("127.0.0.1"); + + srand ((int)time(NULL)); + int i; + for (i=0; i < 100; i++) { + int r = (rand() % 10000) + 20000; + LoopBreakerTarget.sin_port = htons (r); + if (bind (sd, (struct sockaddr*)&LoopBreakerTarget, sizeof(LoopBreakerTarget)) == 0) + break; + } + + if (i == 100) + throw std::runtime_error ("no loop breaker"); + LoopBreakerReader = sd; + #endif + + #ifdef HAVE_EPOLL + if (Poller == Poller_Epoll) { + epfd = epoll_create (MaxEpollDescriptors); + if (epfd == -1) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "unable to create epoll descriptor: %s", strerror(errno)); + throw std::runtime_error (buf); + } + int cloexec = fcntl (epfd, F_GETFD, 0); + assert (cloexec >= 0); + cloexec |= FD_CLOEXEC; + fcntl (epfd, F_SETFD, cloexec); + + assert (LoopBreakerReader >= 0); + LoopbreakDescriptor *ld = new LoopbreakDescriptor (LoopBreakerReader, this); + assert (ld); + Add (ld); + } + #endif + + #ifdef HAVE_KQUEUE + if (Poller == Poller_Kqueue) { + kqfd = kqueue(); + if (kqfd == -1) { + char buf[200]; + snprintf (buf, sizeof(buf)-1, "unable to create kqueue descriptor: %s", strerror(errno)); + throw std::runtime_error (buf); + } + // cloexec not needed. By definition, kqueues are not carried across forks. + + assert (LoopBreakerReader >= 0); + LoopbreakDescriptor *ld = new LoopbreakDescriptor (LoopBreakerReader, this); + assert (ld); + Add (ld); + } + #endif +} + +/*************************** +EventMachine_t::_UpdateTime +***************************/ + +void EventMachine_t::_UpdateTime() +{ + MyCurrentLoopTime = GetRealTime(); +} + +/*************************** +EventMachine_t::GetRealTime +***************************/ + +// Two great writeups of cross-platform monotonic time are at: +// http://www.python.org/dev/peps/pep-0418 +// http://nadeausoftware.com/articles/2012/04/c_c_tip_how_measure_elapsed_real_time_benchmarking +// Uncomment the #pragma messages to confirm which compile-time option was used +uint64_t EventMachine_t::GetRealTime() +{ + uint64_t current_time; + + #if defined(HAVE_CONST_CLOCK_MONOTONIC_RAW) + // #pragma message "GetRealTime: clock_gettime CLOCK_MONOTONIC_RAW" + // Linux 2.6.28 and above + struct timespec tv; + clock_gettime (CLOCK_MONOTONIC_RAW, &tv); + current_time = (((uint64_t)(tv.tv_sec)) * 1000000LL) + ((uint64_t)((tv.tv_nsec)/1000)); + + #elif defined(HAVE_CONST_CLOCK_MONOTONIC) + // #pragma message "GetRealTime: clock_gettime CLOCK_MONOTONIC" + // Linux, FreeBSD 5.0 and above, Solaris 8 and above, OpenBSD, NetBSD, DragonflyBSD + struct timespec tv; + clock_gettime (CLOCK_MONOTONIC, &tv); + current_time = (((uint64_t)(tv.tv_sec)) * 1000000LL) + ((uint64_t)((tv.tv_nsec)/1000)); + + #elif defined(HAVE_GETHRTIME) + // #pragma message "GetRealTime: gethrtime" + // Solaris and HP-UX + current_time = (uint64_t)gethrtime() / 1000; + + #elif defined(OS_DARWIN) + // #pragma message "GetRealTime: mach_absolute_time" + // Mac OS X + // https://developer.apple.com/library/mac/qa/qa1398/_index.html + current_time = mach_absolute_time() * mach_timebase.numer / mach_timebase.denom / 1000; + + #elif defined(OS_UNIX) + // #pragma message "GetRealTime: gettimeofday" + // Unix fallback + struct timeval tv; + gettimeofday (&tv, NULL); + current_time = (((uint64_t)(tv.tv_sec)) * 1000000LL) + ((uint64_t)(tv.tv_usec)); + + #elif defined(OS_WIN32) + // #pragma message "GetRealTime: GetTickCount" + // Future improvement: use GetTickCount64 in Windows Vista / Server 2008 + unsigned tick = GetTickCount(); + if (tick < LastTickCount) + TickCountTickover += 1; + LastTickCount = tick; + current_time = ((uint64_t)TickCountTickover << 32) + (uint64_t)tick; + current_time *= 1000; // convert to microseconds + + #else + // #pragma message "GetRealTime: time" + // Universal fallback + current_time = (uint64_t)time(NULL) * 1000000LL; + #endif + + return current_time; +} + +/*********************************** +EventMachine_t::_DispatchHeartbeats +***********************************/ + +void EventMachine_t::_DispatchHeartbeats() +{ + // Store the first processed heartbeat descriptor and bail out if + // we see it again. This fixes an infinite loop in case the system time + // is changed out from underneath MyCurrentLoopTime. + const EventableDescriptor *head = NULL; + + while (true) { + std::multimap::iterator i = Heartbeats.begin(); + if (i == Heartbeats.end()) + break; + if (i->first > MyCurrentLoopTime) + break; + + EventableDescriptor *ed = i->second; + if (ed == head) + break; + + ed->Heartbeat(); + QueueHeartbeat(ed); + + if (head == NULL) + head = ed; + } +} + +/****************************** +EventMachine_t::QueueHeartbeat +******************************/ + +void EventMachine_t::QueueHeartbeat(EventableDescriptor *ed) +{ + uint64_t heartbeat = ed->GetNextHeartbeat(); + + if (heartbeat) { + #ifndef HAVE_MAKE_PAIR + Heartbeats.insert (std::multimap::value_type (heartbeat, ed)); + #else + Heartbeats.insert (std::make_pair (heartbeat, ed)); + #endif + } +} + +/****************************** +EventMachine_t::ClearHeartbeat +******************************/ + +void EventMachine_t::ClearHeartbeat(uint64_t key, EventableDescriptor* ed) +{ + std::multimap::iterator it; + std::pair::iterator,std::multimap::iterator> ret; + ret = Heartbeats.equal_range (key); + for (it = ret.first; it != ret.second; ++it) { + if (it->second == ed) { + Heartbeats.erase (it); + break; + } + } +} + +/******************* +EventMachine_t::Run +*******************/ + +void EventMachine_t::Run() +{ + while (RunOnce()) ; +} + +/*********************** +EventMachine_t::RunOnce +***********************/ + +bool EventMachine_t::RunOnce() +{ + _UpdateTime(); + _RunTimers(); + + /* _Add must precede _Modify because the same descriptor might + * be on both lists during the same pass through the machine, + * and to modify a descriptor before adding it would fail. + */ + _AddNewDescriptors(); + _ModifyDescriptors(); + + switch (Poller) { + case Poller_Epoll: + _RunEpollOnce(); + break; + case Poller_Kqueue: + _RunKqueueOnce(); + break; + case Poller_Default: + _RunSelectOnce(); + break; + } + + _DispatchHeartbeats(); + _CleanupSockets(); + + if (bTerminateSignalReceived) + return false; + + return true; +} + + +/***************************** +EventMachine_t::_RunEpollOnce +*****************************/ + +void EventMachine_t::_RunEpollOnce() +{ + #ifdef HAVE_EPOLL + assert (epfd != -1); + int s; + + timeval tv = _TimeTilNextEvent(); + + #ifdef BUILD_FOR_RUBY + int ret = 0; + + #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD + if ((ret = rb_wait_for_single_fd(epfd, RB_WAITFD_IN|RB_WAITFD_PRI, &tv)) < 1) { + #else + fd_set fdreads; + + FD_ZERO(&fdreads); + FD_SET(epfd, &fdreads); + + if ((ret = rb_thread_select(epfd + 1, &fdreads, NULL, NULL, &tv)) < 1) { + #endif + if (ret == -1) { + assert(errno != EINVAL); + assert(errno != EBADF); + } + return; + } + + TRAP_BEG; + s = epoll_wait (epfd, epoll_events, MaxEvents, 0); + TRAP_END; + #else + int duration = 0; + duration = duration + (tv.tv_sec * 1000); + duration = duration + (tv.tv_usec / 1000); + s = epoll_wait (epfd, epoll_events, MaxEvents, duration); + #endif + + if (s > 0) { + for (int i=0; i < s; i++) { + EventableDescriptor *ed = (EventableDescriptor*) epoll_events[i].data.ptr; + + if (ed->IsWatchOnly() && ed->GetSocket() == INVALID_SOCKET) + continue; + + assert(ed->GetSocket() != INVALID_SOCKET); + + if (epoll_events[i].events & EPOLLIN) + ed->Read(); + if (epoll_events[i].events & EPOLLOUT) + ed->Write(); + if (epoll_events[i].events & (EPOLLERR | EPOLLHUP)) + ed->HandleError(); + } + } + else if (s < 0) { + // epoll_wait can fail on error in a handful of ways. + // If this happens, then wait for a little while to avoid busy-looping. + // If the error was EINTR, we probably caught SIGCHLD or something, + // so keep the wait short. + timeval tv = {0, ((errno == EINTR) ? 5 : 50) * 1000}; + EmSelect (0, NULL, NULL, NULL, &tv); + } + #else + throw std::runtime_error ("epoll is not implemented on this platform"); + #endif +} + + +/****************************** +EventMachine_t::_RunKqueueOnce +******************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::_RunKqueueOnce() +{ + assert (kqfd != -1); + int k; + + timeval tv = _TimeTilNextEvent(); + + struct timespec ts; + ts.tv_sec = tv.tv_sec; + ts.tv_nsec = tv.tv_usec * 1000; + + #ifdef BUILD_FOR_RUBY + int ret = 0; + + #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD + if ((ret = rb_wait_for_single_fd(kqfd, RB_WAITFD_IN|RB_WAITFD_PRI, &tv)) < 1) { + #else + fd_set fdreads; + + FD_ZERO(&fdreads); + FD_SET(kqfd, &fdreads); + + if ((ret = rb_thread_select(kqfd + 1, &fdreads, NULL, NULL, &tv)) < 1) { + #endif + if (ret == -1) { + assert(errno != EINVAL); + assert(errno != EBADF); + } + return; + } + + TRAP_BEG; + ts.tv_sec = ts.tv_nsec = 0; + k = kevent (kqfd, NULL, 0, Karray, MaxEvents, &ts); + TRAP_END; + #else + k = kevent (kqfd, NULL, 0, Karray, MaxEvents, &ts); + #endif + + struct kevent *ke = Karray; + while (k > 0) { + switch (ke->filter) + { + case EVFILT_VNODE: + _HandleKqueueFileEvent (ke); + break; + + case EVFILT_PROC: + _HandleKqueuePidEvent (ke); + break; + + case EVFILT_READ: + case EVFILT_WRITE: + EventableDescriptor *ed = (EventableDescriptor*) (ke->udata); + assert (ed); + + if (ed->IsWatchOnly() && ed->GetSocket() == INVALID_SOCKET) + break; + + if (ke->filter == EVFILT_READ) + ed->Read(); + else if (ke->filter == EVFILT_WRITE) + ed->Write(); + else + std::cerr << "Discarding unknown kqueue event " << ke->filter << std::endl; + + break; + } + + --k; + ++ke; + } + + // TODO, replace this with rb_thread_blocking_region for 1.9 builds. + #ifdef BUILD_FOR_RUBY + if (!rb_thread_alone()) { + rb_thread_schedule(); + } + #endif +} +#else +void EventMachine_t::_RunKqueueOnce() +{ + throw std::runtime_error ("kqueue is not implemented on this platform"); +} +#endif + + +/********************************* +EventMachine_t::_TimeTilNextEvent +*********************************/ + +timeval EventMachine_t::_TimeTilNextEvent() +{ + // 29jul11: Changed calculation base from MyCurrentLoopTime to the + // real time. As MyCurrentLoopTime is set at the beginning of an + // iteration and this calculation is done at the end, evenmachine + // will potentially oversleep by the amount of time the iteration + // took to execute. + uint64_t next_event = 0; + uint64_t current_time = GetRealTime(); + + if (!Heartbeats.empty()) { + std::multimap::iterator heartbeats = Heartbeats.begin(); + next_event = heartbeats->first; + } + + if (!Timers.empty()) { + std::multimap::iterator timers = Timers.begin(); + if (next_event == 0 || timers->first < next_event) + next_event = timers->first; + } + + if (!NewDescriptors.empty() || !ModifiedDescriptors.empty()) { + next_event = current_time; + } + + timeval tv; + + if (NumCloseScheduled > 0 || bTerminateSignalReceived) { + tv.tv_sec = tv.tv_usec = 0; + } else if (next_event == 0) { + tv = Quantum; + } else { + if (next_event > current_time) { + uint64_t duration = next_event - current_time; + tv.tv_sec = duration / 1000000; + tv.tv_usec = duration % 1000000; + } else { + tv.tv_sec = tv.tv_usec = 0; + } + } + + return tv; +} + +/******************************* +EventMachine_t::_CleanupSockets +*******************************/ + +void EventMachine_t::_CleanupSockets() +{ + // TODO, rip this out and only delete the descriptors we know have died, + // rather than traversing the whole list. + // Modified 05Jan08 per suggestions by Chris Heath. It's possible that + // an EventableDescriptor will have a descriptor value of -1. That will + // happen if EventableDescriptor::Close was called on it. In that case, + // don't call epoll_ctl to remove the socket's filters from the epoll set. + // According to the epoll docs, this happens automatically when the + // descriptor is closed anyway. This is different from the case where + // the socket has already been closed but the descriptor in the ED object + // hasn't yet been set to INVALID_SOCKET. + // In kqueue, closing a descriptor automatically removes its event filters. + int i, j; + int nSockets = Descriptors.size(); + for (i=0, j=0; i < nSockets; i++) { + EventableDescriptor *ed = Descriptors[i]; + assert (ed); + if (ed->ShouldDelete()) { + #ifdef HAVE_EPOLL + if (Poller == Poller_Epoll) { + assert (epfd != -1); + if (ed->GetSocket() != INVALID_SOCKET) { + int e = epoll_ctl (epfd, EPOLL_CTL_DEL, ed->GetSocket(), ed->GetEpollEvent()); + // ENOENT or EBADF are not errors because the socket may be already closed when we get here. + if (e && (errno != ENOENT) && (errno != EBADF) && (errno != EPERM)) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to delete epoll event: %s", strerror(errno)); + throw std::runtime_error (buf); + } + } + ModifiedDescriptors.erase(ed); + } + #endif + delete ed; + } + else + Descriptors [j++] = ed; + } + while ((size_t)j < Descriptors.size()) + Descriptors.pop_back(); +} + +/********************************* +EventMachine_t::_ModifyEpollEvent +*********************************/ + +#ifdef HAVE_EPOLL +void EventMachine_t::_ModifyEpollEvent (EventableDescriptor *ed) +{ + if (Poller == Poller_Epoll) { + assert (epfd != -1); + assert (ed); + assert (ed->GetSocket() != INVALID_SOCKET); + int e = epoll_ctl (epfd, EPOLL_CTL_MOD, ed->GetSocket(), ed->GetEpollEvent()); + if (e) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to modify epoll event: %s", strerror(errno)); + throw std::runtime_error (buf); + } + } +} +#else +void EventMachine_t::_ModifyEpollEvent (EventableDescriptor *ed UNUSED) { } +#endif + + +/************************** +SelectData_t::SelectData_t +**************************/ + +SelectData_t::SelectData_t() +{ + maxsocket = 0; + rb_fd_init (&fdreads); + rb_fd_init (&fdwrites); + rb_fd_init (&fderrors); +} + +SelectData_t::~SelectData_t() +{ + rb_fd_term (&fdreads); + rb_fd_term (&fdwrites); + rb_fd_term (&fderrors); +} + +#ifdef BUILD_FOR_RUBY +/***************** +_SelectDataSelect +*****************/ + +#if defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL) +static VALUE _SelectDataSelect (void *v) +{ + SelectData_t *sd = (SelectData_t*)v; + sd->nSockets = rb_fd_select (sd->maxsocket+1, &(sd->fdreads), &(sd->fdwrites), &(sd->fderrors), &(sd->tv)); + return Qnil; +} +#endif + +/********************* +SelectData_t::_Select +*********************/ + +int SelectData_t::_Select() +{ + #if defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL) + // added in ruby 1.9.3 + rb_thread_call_without_gvl ((void *(*)(void *))_SelectDataSelect, (void*)this, RUBY_UBF_IO, 0); + return nSockets; + #elif defined(HAVE_TBR) + // added in ruby 1.9.1, deprecated in ruby 2.0.0 + rb_thread_blocking_region (_SelectDataSelect, (void*)this, RUBY_UBF_IO, 0); + return nSockets; + #else + return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv); + #endif +} +#endif + +void SelectData_t::_Clear() +{ + maxsocket = 0; + rb_fd_zero (&fdreads); + rb_fd_zero (&fdwrites); + rb_fd_zero (&fderrors); +} + +/****************************** +EventMachine_t::_RunSelectOnce +******************************/ + +void EventMachine_t::_RunSelectOnce() +{ + // Crank the event machine once. + // If there are no descriptors to process, then sleep + // for a few hundred mills to avoid busy-looping. + // This is based on a select loop. Alternately provide epoll + // if we know we're running on a 2.6 kernel. + // epoll will be effective if we provide it as an alternative, + // however it has the same problem interoperating with Ruby + // threads that select does. + + // Get ready for select() + SelectData->_Clear(); + + // Always read the loop-breaker reader. + // Changed 23Aug06, provisionally implemented for Windows with a UDP socket + // running on localhost with a randomly-chosen port. (*Puke*) + // Windows has a version of the Unix pipe() library function, but it doesn't + // give you back descriptors that are selectable. + rb_fd_set (LoopBreakerReader, &(SelectData->fdreads)); + if (SelectData->maxsocket < LoopBreakerReader) + SelectData->maxsocket = LoopBreakerReader; + + // prepare the sockets for reading and writing + size_t i; + for (i = 0; i < Descriptors.size(); i++) { + EventableDescriptor *ed = Descriptors[i]; + assert (ed); + SOCKET sd = ed->GetSocket(); + if (ed->IsWatchOnly() && sd == INVALID_SOCKET) + continue; + assert (sd != INVALID_SOCKET); + + if (ed->SelectForRead()) + rb_fd_set (sd, &(SelectData->fdreads)); + if (ed->SelectForWrite()) + rb_fd_set (sd, &(SelectData->fdwrites)); + + #ifdef OS_WIN32 + /* 21Sep09: on windows, a non-blocking connect() that fails does not come up as writable. + Instead, it is added to the error set. See http://www.mail-archive.com/openssl-users@openssl.org/msg58500.html + */ + if (ed->IsConnectPending()) + rb_fd_set (sd, &(SelectData->fderrors)); + #endif + + if (SelectData->maxsocket < sd) + SelectData->maxsocket = sd; + } + + + { // read and write the sockets + //timeval tv = {1, 0}; // Solaris fails if the microseconds member is >= 1000000. + //timeval tv = Quantum; + SelectData->tv = _TimeTilNextEvent(); + int s = SelectData->_Select(); + //rb_thread_blocking_region(xxx,(void*)&SelectData,RUBY_UBF_IO,0); + //int s = EmSelect (SelectData.maxsocket+1, &(SelectData.fdreads), &(SelectData.fdwrites), NULL, &(SelectData.tv)); + //int s = SelectData.nSockets; + if (s > 0) { + /* Changed 01Jun07. We used to handle the Loop-breaker right here. + * Now we do it AFTER all the regular descriptors. There's an + * incredibly important and subtle reason for this. Code on + * loop breakers is sometimes used to cause the reactor core to + * cycle (for example, to allow outbound network buffers to drain). + * If a loop-breaker handler reschedules itself (say, after determining + * that the write buffers are still too full), then it will execute + * IMMEDIATELY if _ReadLoopBreaker is done here instead of after + * the other descriptors are processed. That defeats the whole purpose. + */ + for (i=0; i < Descriptors.size(); i++) { + EventableDescriptor *ed = Descriptors[i]; + assert (ed); + SOCKET sd = ed->GetSocket(); + if (ed->IsWatchOnly() && sd == INVALID_SOCKET) + continue; + assert (sd != INVALID_SOCKET); + + if (rb_fd_isset (sd, &(SelectData->fdwrites))) { + // Double-check SelectForWrite() still returns true. If not, one of the callbacks must have + // modified some value since we checked SelectForWrite() earlier in this method. + if (ed->SelectForWrite()) + ed->Write(); + } + if (rb_fd_isset (sd, &(SelectData->fdreads))) + ed->Read(); + if (rb_fd_isset (sd, &(SelectData->fderrors))) + ed->HandleError(); + } + + if (rb_fd_isset (LoopBreakerReader, &(SelectData->fdreads))) + _ReadLoopBreaker(); + } + else if (s < 0) { + switch (errno) { + case EBADF: + _CleanBadDescriptors(); + break; + case EINVAL: + throw std::runtime_error ("Somehow EM passed an invalid nfds or invalid timeout to select(2), please report this!"); + break; + default: + // select can fail on error in a handful of ways. + // If this happens, then wait for a little while to avoid busy-looping. + // If the error was EINTR, we probably caught SIGCHLD or something, + // so keep the wait short. + timeval tv = {0, ((errno == EINTR) ? 5 : 50) * 1000}; + EmSelect (0, NULL, NULL, NULL, &tv); + } + } + } +} + +void EventMachine_t::_CleanBadDescriptors() +{ + size_t i; + + for (i = 0; i < Descriptors.size(); i++) { + EventableDescriptor *ed = Descriptors[i]; + if (ed->ShouldDelete()) + continue; + + SOCKET sd = ed->GetSocket(); + + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 0; + + rb_fdset_t fds; + rb_fd_init(&fds); + rb_fd_set(sd, &fds); + + int ret = rb_fd_select(sd + 1, &fds, NULL, NULL, &tv); + rb_fd_term(&fds); + + if (ret == -1) { + if (errno == EBADF) + ed->ScheduleClose(false); + } + } +} + +/******************************** +EventMachine_t::_ReadLoopBreaker +********************************/ + +void EventMachine_t::_ReadLoopBreaker() +{ + /* The loop breaker has selected readable. + * Read it ONCE (it may block if we try to read it twice) + * and send a loop-break event back to user code. + */ + char buffer [1024]; + (void)read (LoopBreakerReader, buffer, sizeof(buffer)); + if (EventCallback) + (*EventCallback)(0, EM_LOOPBREAK_SIGNAL, "", 0); +} + + +/************************** +EventMachine_t::_RunTimers +**************************/ + +void EventMachine_t::_RunTimers() +{ + // These are caller-defined timer handlers. + // We rely on the fact that multimaps sort by their keys to avoid + // inspecting the whole list every time we come here. + // Just keep inspecting and processing the list head until we hit + // one that hasn't expired yet. + + while (true) { + std::multimap::iterator i = Timers.begin(); + if (i == Timers.end()) + break; + if (i->first > MyCurrentLoopTime) + break; + if (EventCallback) + (*EventCallback) (0, EM_TIMER_FIRED, NULL, i->second.GetBinding()); + Timers.erase (i); + } +} + + + +/*********************************** +EventMachine_t::InstallOneshotTimer +***********************************/ + +const uintptr_t EventMachine_t::InstallOneshotTimer (uint64_t milliseconds) +{ + if (Timers.size() > MaxOutstandingTimers) + return false; + + uint64_t fire_at = GetRealTime(); + fire_at += ((uint64_t)milliseconds) * 1000LL; + + Timer_t t; + #ifndef HAVE_MAKE_PAIR + std::multimap::iterator i = Timers.insert (std::multimap::value_type (fire_at, t)); + #else + std::multimap::iterator i = Timers.insert (std::make_pair (fire_at, t)); + #endif + return i->second.GetBinding(); +} + + +/******************************* +EventMachine_t::ConnectToServer +*******************************/ + +const uintptr_t EventMachine_t::ConnectToServer (const char *bind_addr, int bind_port, const char *server, int port) +{ + /* We want to spend no more than a few seconds waiting for a connection + * to a remote host. So we use a nonblocking connect. + * Linux disobeys the usual rules for nonblocking connects. + * Per Stevens (UNP p.410), you expect a nonblocking connect to select + * both readable and writable on error, and not to return EINPROGRESS + * if the connect can be fulfilled immediately. Linux violates both + * of these expectations. + * Any kind of nonblocking connect on Linux returns EINPROGRESS. + * The socket will then return writable when the disposition of the + * connect is known, but it will not also be readable in case of + * error! Weirdly, it will be readable in case there is data to read!!! + * (Which can happen with protocols like SSH and SMTP.) + * I suppose if you were so inclined you could consider this logical, + * but it's not the way Unix has historically done it. + * So we ignore the readable flag and read getsockopt to see if there + * was an error connecting. A select timeout works as expected. + * In regard to getsockopt: Linux does the Berkeley-style thing, + * not the Solaris-style, and returns zero with the error code in + * the error parameter. + * Return the binding-text of the newly-created pending connection, + * or NULL if there was a problem. + */ + + if (!server || !*server || !port) + throw std::runtime_error ("invalid server or port"); + + struct sockaddr_storage bind_as; + size_t bind_as_len = sizeof bind_as; + int gai = name2address (server, port, SOCK_STREAM, (struct sockaddr *)&bind_as, &bind_as_len); + if (gai != 0) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to resolve address: %s", gai_strerror(gai)); + throw std::runtime_error (buf); + } + + SOCKET sd = EmSocket (bind_as.ss_family, SOCK_STREAM, 0); + if (sd == INVALID_SOCKET) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to create new socket: %s", strerror(errno)); + throw std::runtime_error (buf); + } + + // From here on, ALL error returns must close the socket. + // Set the new socket nonblocking. + if (!SetSocketNonblocking (sd)) { + close (sd); + throw std::runtime_error ("unable to set socket as non-blocking"); + } + // Disable slow-start (Nagle algorithm). + int one = 1; + setsockopt (sd, IPPROTO_TCP, TCP_NODELAY, (char*) &one, sizeof(one)); + // Set reuseaddr to improve performance on restarts + setsockopt (sd, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one)); + + if (bind_addr) { + struct sockaddr_storage bind_to; + size_t bind_to_len = sizeof bind_to; + gai = name2address (bind_addr, bind_port, SOCK_STREAM, (struct sockaddr *)&bind_to, &bind_to_len); + if (gai != 0) { + close (sd); + char buf [200]; + snprintf (buf, sizeof(buf)-1, "invalid bind address: %s", gai_strerror(gai)); + throw std::runtime_error (buf); + } + if (bind (sd, (struct sockaddr *)&bind_to, bind_to_len) < 0) { + close (sd); + throw std::runtime_error ("couldn't bind to address"); + } + } + + uintptr_t out = 0; + + #ifdef OS_UNIX + int e_reason = 0; + if (connect (sd, (struct sockaddr *)&bind_as, bind_as_len) == 0) { + // This is a connect success, which Linux appears + // never to give when the socket is nonblocking, + // even if the connection is intramachine or to + // localhost. + + /* Changed this branch 08Aug06. Evidently some kernels + * (FreeBSD for example) will actually return success from + * a nonblocking connect. This is a pretty simple case, + * just set up the new connection and clear the pending flag. + * Thanks to Chris Ochs for helping track this down. + * This branch never gets taken on Linux or (oddly) OSX. + * The original behavior was to throw an unimplemented, + * which the user saw as a fatal exception. Very unfriendly. + * + * Tweaked 10Aug06. Even though the connect disposition is + * known, we still set the connect-pending flag. That way + * some needed initialization will happen in the ConnectionDescriptor. + * (To wit, the ConnectionCompleted event gets sent to the client.) + */ + ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + cd->SetConnectPending (true); + Add (cd); + out = cd->GetBinding(); + } + else if (errno == EINPROGRESS) { + // Errno will generally always be EINPROGRESS, but on Linux + // we have to look at getsockopt to be sure what really happened. + int error = 0; + socklen_t len; + len = sizeof(error); + int o = getsockopt (sd, SOL_SOCKET, SO_ERROR, &error, &len); + if ((o == 0) && (error == 0)) { + // Here, there's no disposition. + // Put the connection on the stack and wait for it to complete + // or time out. + ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + cd->SetConnectPending (true); + Add (cd); + out = cd->GetBinding(); + } else { + // Fall through to the !out case below. + e_reason = error; + } + } + else { + // The error from connect was something other then EINPROGRESS (EHOSTDOWN, etc). + // Fall through to the !out case below + e_reason = errno; + } + + if (!out) { + /* This could be connection refused or some such thing. + * We will come here on Linux if a localhost connection fails. + * Changed 16Jul06: Originally this branch was a no-op, and + * we'd drop down to the end of the method, close the socket, + * and return NULL, which would cause the caller to GET A + * FATAL EXCEPTION. Now we keep the socket around but schedule an + * immediate close on it, so the caller will get a close-event + * scheduled on it. This was only an issue for localhost connections + * to non-listening ports. We may eventually need to revise this + * revised behavior, in case it causes problems like making it hard + * for people to know that a failure occurred. + */ + ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + cd->SetUnbindReasonCode (e_reason); + cd->ScheduleClose (false); + Add (cd); + out = cd->GetBinding(); + } + #endif + + #ifdef OS_WIN32 + if (connect (sd, (struct sockaddr *)&bind_as, bind_as_len) == 0) { + // This is a connect success, which Windows appears + // never to give when the socket is nonblocking, + // even if the connection is intramachine or to + // localhost. + throw std::runtime_error ("unimplemented"); + } + else if (WSAGetLastError() == WSAEWOULDBLOCK) { + // Here, there's no disposition. + // Windows appears not to surface refused connections or + // such stuff at this point. + // Put the connection on the stack and wait for it to complete + // or time out. + ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + cd->SetConnectPending (true); + Add (cd); + out = cd->GetBinding(); + } + else { + // The error from connect was something other then WSAEWOULDBLOCK. + } + + #endif + + if (!out) + close (sd); + return out; +} + +/*********************************** +EventMachine_t::ConnectToUnixServer +***********************************/ + +#ifdef OS_UNIX +const uintptr_t EventMachine_t::ConnectToUnixServer (const char *server) +{ + /* Connect to a Unix-domain server, which by definition is running + * on the same host. + * There is no meaningful implementation on Windows. + * There's no need to do a nonblocking connect, since the connection + * is always local and can always be fulfilled immediately. + */ + + uintptr_t out = 0; + + if (!server || !*server) + return 0; + + sockaddr_un pun; + memset (&pun, 0, sizeof(pun)); + pun.sun_family = AF_LOCAL; + + // You ordinarily expect the server name field to be at least 1024 bytes long, + // but on Linux it can be MUCH shorter. + if (strlen(server) >= sizeof(pun.sun_path)) + throw std::runtime_error ("unix-domain server name is too long"); + + + strcpy (pun.sun_path, server); + + SOCKET fd = EmSocket (AF_LOCAL, SOCK_STREAM, 0); + if (fd == INVALID_SOCKET) + return 0; + + // From here on, ALL error returns must close the socket. + // NOTE: At this point, the socket is still a blocking socket. + if (connect (fd, (struct sockaddr*)&pun, sizeof(pun)) != 0) { + close (fd); + return 0; + } + + // Set the newly-connected socket nonblocking. + if (!SetSocketNonblocking (fd)) { + close (fd); + return 0; + } + + // Set up a connection descriptor and add it to the event-machine. + // Observe, even though we know the connection status is connect-success, + // we still set the "pending" flag, so some needed initializations take + // place. + ConnectionDescriptor *cd = new ConnectionDescriptor (fd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + cd->SetConnectPending (true); + Add (cd); + out = cd->GetBinding(); + + if (!out) + close (fd); + + return out; +} +#else +const uintptr_t EventMachine_t::ConnectToUnixServer (const char *server UNUSED) +{ + throw std::runtime_error ("unix-domain connection unavailable on this platform"); +} +#endif + +/************************ +EventMachine_t::AttachFD +************************/ + +const uintptr_t EventMachine_t::AttachFD (SOCKET fd, bool watch_mode) +{ + #ifdef OS_UNIX + if (fcntl(fd, F_GETFL, 0) < 0) { + if (errno) { + throw std::runtime_error (strerror(errno)); + } else { + throw std::runtime_error ("invalid file descriptor"); + } + } + #endif + + #ifdef OS_WIN32 + // TODO: add better check for invalid file descriptors (see ioctlsocket or getsockopt) + if (fd == INVALID_SOCKET) + throw std::runtime_error ("invalid file descriptor"); + #endif + + {// Check for duplicate descriptors + size_t i; + for (i = 0; i < Descriptors.size(); i++) { + EventableDescriptor *ed = Descriptors[i]; + assert (ed); + if (ed->GetSocket() == fd) + throw std::runtime_error ("adding existing descriptor"); + } + + for (i = 0; i < NewDescriptors.size(); i++) { + EventableDescriptor *ed = NewDescriptors[i]; + assert (ed); + if (ed->GetSocket() == fd) + throw std::runtime_error ("adding existing new descriptor"); + } + } + + if (!watch_mode) + SetSocketNonblocking(fd); + + ConnectionDescriptor *cd = new ConnectionDescriptor (fd, this); + if (!cd) + throw std::runtime_error ("no connection allocated"); + + cd->SetAttached(true); + cd->SetWatchOnly(watch_mode); + cd->SetConnectPending (false); + + Add (cd); + + const uintptr_t out = cd->GetBinding(); + return out; +} + +/************************ +EventMachine_t::DetachFD +************************/ + +int EventMachine_t::DetachFD (EventableDescriptor *ed) +{ + if (!ed) + throw std::runtime_error ("detaching bad descriptor"); + + SOCKET fd = ed->GetSocket(); + + #ifdef HAVE_EPOLL + if (Poller == Poller_Epoll) { + if (ed->GetSocket() != INVALID_SOCKET) { + assert (epfd != -1); + int e = epoll_ctl (epfd, EPOLL_CTL_DEL, ed->GetSocket(), ed->GetEpollEvent()); + // ENOENT or EBADF are not errors because the socket may be already closed when we get here. + if (e && (errno != ENOENT) && (errno != EBADF)) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to delete epoll event: %s", strerror(errno)); + throw std::runtime_error (buf); + } + } + } + #endif + + #ifdef HAVE_KQUEUE + if (Poller == Poller_Kqueue) { + // remove any read/write events for this fd + struct kevent k; +#ifdef __NetBSD__ + EV_SET (&k, ed->GetSocket(), EVFILT_READ | EVFILT_WRITE, EV_DELETE, 0, 0, (intptr_t)ed); +#else + EV_SET (&k, ed->GetSocket(), EVFILT_READ | EVFILT_WRITE, EV_DELETE, 0, 0, ed); +#endif + int t = kevent (kqfd, &k, 1, NULL, 0, NULL); + if (t < 0 && (errno != ENOENT) && (errno != EBADF)) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to delete kqueue event: %s", strerror(errno)); + throw std::runtime_error (buf); + } + } + #endif + + // Prevent the descriptor from being modified, in case DetachFD was called from a timer or next_tick + ModifiedDescriptors.erase (ed); + + // Prevent the descriptor from being added, in case DetachFD was called in the same tick as AttachFD + for (size_t i = 0; i < NewDescriptors.size(); i++) { + if (ed == NewDescriptors[i]) { + NewDescriptors.erase(NewDescriptors.begin() + i); + break; + } + } + + // Set MySocket = INVALID_SOCKET so ShouldDelete() is true (and the descriptor gets deleted and removed), + // and also to prevent anyone from calling close() on the detached fd + ed->SetSocketInvalid(); + + return fd; +} + +/************ +name2address +************/ + +int EventMachine_t::name2address (const char *server, int port, int socktype, struct sockaddr *addr, size_t *addr_len) +{ + if (!server || !*server) + server = "0.0.0.0"; + + struct addrinfo *ai; + struct addrinfo hints; + memset (&hints, 0, sizeof(hints)); + hints.ai_socktype = socktype; + hints.ai_family = AF_UNSPEC; + hints.ai_flags = AI_NUMERICSERV | AI_ADDRCONFIG; + + char portstr[12]; + snprintf(portstr, sizeof(portstr), "%u", port); + + int gai = getaddrinfo (server, portstr, &hints, &ai); + if (gai == 0) { + assert (ai->ai_addrlen <= *addr_len); + memcpy (addr, ai->ai_addr, ai->ai_addrlen); + *addr_len = ai->ai_addrlen; + freeaddrinfo(ai); + } + + return gai; +} + + +/******************************* +EventMachine_t::CreateTcpServer +*******************************/ + +const uintptr_t EventMachine_t::CreateTcpServer (const char *server, int port) +{ + /* Create a TCP-acceptor (server) socket and add it to the event machine. + * Return the binding of the new acceptor to the caller. + * This binding will be referenced when the new acceptor sends events + * to indicate accepted connections. + */ + + + struct sockaddr_storage bind_here; + size_t bind_here_len = sizeof bind_here; + if (0 != name2address (server, port, SOCK_STREAM, (struct sockaddr *)&bind_here, &bind_here_len)) + return 0; + + SOCKET sd_accept = EmSocket (bind_here.ss_family, SOCK_STREAM, 0); + if (sd_accept == INVALID_SOCKET) { + goto fail; + } + + { // set reuseaddr to improve performance on restarts. + int oval = 1; + if (setsockopt (sd_accept, SOL_SOCKET, SO_REUSEADDR, (char*)&oval, sizeof(oval)) < 0) { + //__warning ("setsockopt failed while creating listener",""); + goto fail; + } + } + + { // set CLOEXEC. Only makes sense on Unix + #ifdef OS_UNIX + int cloexec = fcntl (sd_accept, F_GETFD, 0); + assert (cloexec >= 0); + cloexec |= FD_CLOEXEC; + fcntl (sd_accept, F_SETFD, cloexec); + #endif + } + + + if (bind (sd_accept, (struct sockaddr *)&bind_here, bind_here_len)) { + //__warning ("binding failed"); + goto fail; + } + + if (listen (sd_accept, 100)) { + //__warning ("listen failed"); + goto fail; + } + + return AttachSD(sd_accept); + + fail: + if (sd_accept != INVALID_SOCKET) + close (sd_accept); + return 0; +} + + +/********************************** +EventMachine_t::OpenDatagramSocket +**********************************/ + +const uintptr_t EventMachine_t::OpenDatagramSocket (const char *address, int port) +{ + uintptr_t output_binding = 0; + + struct sockaddr_storage bind_here; + size_t bind_here_len = sizeof bind_here; + if (0 != name2address (address, port, SOCK_DGRAM, (struct sockaddr *)&bind_here, &bind_here_len)) + return 0; + + // from here on, early returns must close the socket! + SOCKET sd = EmSocket (bind_here.ss_family, SOCK_DGRAM, 0); + if (sd == INVALID_SOCKET) + goto fail; + + { // set the SO_REUSEADDR on the socket before we bind, otherwise it won't work for a second one + int oval = 1; + if (setsockopt (sd, SOL_SOCKET, SO_REUSEADDR, (char*)&oval, sizeof(oval)) < 0) + goto fail; + } + + // Set the new socket nonblocking. + if (!SetSocketNonblocking (sd)) + goto fail; + + if (bind (sd, (struct sockaddr *)&bind_here, bind_here_len) != 0) + goto fail; + + { // Looking good. + DatagramDescriptor *ds = new DatagramDescriptor (sd, this); + if (!ds) + throw std::runtime_error ("unable to allocate datagram-socket"); + Add (ds); + output_binding = ds->GetBinding(); + } + + return output_binding; + + fail: + if (sd != INVALID_SOCKET) + close (sd); + return 0; +} + + + +/******************* +EventMachine_t::Add +*******************/ + +void EventMachine_t::Add (EventableDescriptor *ed) +{ + if (!ed) + throw std::runtime_error ("added bad descriptor"); + ed->SetEventCallback (EventCallback); + NewDescriptors.push_back (ed); +} + + +/******************************* +EventMachine_t::ArmKqueueWriter +*******************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::ArmKqueueWriter (EventableDescriptor *ed) +{ + if (Poller == Poller_Kqueue) { + if (!ed) + throw std::runtime_error ("added bad descriptor"); + struct kevent k; +#ifdef __NetBSD__ + EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, (intptr_t)ed); +#else + EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, ed); +#endif + int t = kevent (kqfd, &k, 1, NULL, 0, NULL); + if (t < 0) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "arm kqueue writer failed on %d: %s", ed->GetSocket(), strerror(errno)); + throw std::runtime_error (buf); + } + } +} +#else +void EventMachine_t::ArmKqueueWriter (EventableDescriptor *ed UNUSED) { } +#endif + +/******************************* +EventMachine_t::ArmKqueueReader +*******************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::ArmKqueueReader (EventableDescriptor *ed) +{ + if (Poller == Poller_Kqueue) { + if (!ed) + throw std::runtime_error ("added bad descriptor"); + struct kevent k; +#ifdef __NetBSD__ + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, (intptr_t)ed); +#else + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed); +#endif + int t = kevent (kqfd, &k, 1, NULL, 0, NULL); + if (t < 0) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "arm kqueue reader failed on %d: %s", ed->GetSocket(), strerror(errno)); + throw std::runtime_error (buf); + } + } +} +#else +void EventMachine_t::ArmKqueueReader (EventableDescriptor *ed UNUSED) { } +#endif + +/********************************** +EventMachine_t::_AddNewDescriptors +**********************************/ + +void EventMachine_t::_AddNewDescriptors() +{ + /* Avoid adding descriptors to the main descriptor list + * while we're actually traversing the list. + * Any descriptors that are added as a result of processing timers + * or acceptors should go on a temporary queue and then added + * while we're not traversing the main list. + * Also, it (rarely) happens that a newly-created descriptor + * is immediately scheduled to close. It might be a good + * idea not to bother scheduling these for I/O but if + * we do that, we might bypass some important processing. + */ + + for (size_t i = 0; i < NewDescriptors.size(); i++) { + EventableDescriptor *ed = NewDescriptors[i]; + if (ed == NULL) + throw std::runtime_error ("adding bad descriptor"); + + #if HAVE_EPOLL + if (Poller == Poller_Epoll) { + assert (epfd != -1); + int e = epoll_ctl (epfd, EPOLL_CTL_ADD, ed->GetSocket(), ed->GetEpollEvent()); + if (e) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to add new descriptor: %s", strerror(errno)); + throw std::runtime_error (buf); + } + } + #endif + + #if HAVE_KQUEUE + /* + if (Poller == Poller_Kqueue) { + // INCOMPLETE. Some descriptors don't want to be readable. + assert (kqfd != -1); + struct kevent k; +#ifdef __NetBSD__ + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, (intptr_t)ed); +#else + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed); +#endif + int t = kevent (kqfd, &k, 1, NULL, 0, NULL); + assert (t == 0); + } + */ + #endif + + QueueHeartbeat(ed); + Descriptors.push_back (ed); + } + NewDescriptors.clear(); +} + + +/********************************** +EventMachine_t::_ModifyDescriptors +**********************************/ + +void EventMachine_t::_ModifyDescriptors() +{ + /* For implementations which don't level check every descriptor on + * every pass through the machine, as select does. + * If we're not selecting, then descriptors need a way to signal to the + * machine that their readable or writable status has changed. + * That's what the ::Modify call is for. We do it this way to avoid + * modifying descriptors during the loop traversal, where it can easily + * happen that an object (like a UDP socket) gets data written on it by + * the application during #post_init. That would take place BEFORE the + * descriptor even gets added to the epoll descriptor, so the modify + * operation will crash messily. + * Another really messy possibility is for a descriptor to put itself + * on the Modified list, and then get deleted before we get here. + * Remember, deletes happen after the I/O traversal and before the + * next pass through here. So we have to make sure when we delete a + * descriptor to remove it from the Modified list. + */ + + #ifdef HAVE_EPOLL + if (Poller == Poller_Epoll) { + std::set::iterator i = ModifiedDescriptors.begin(); + while (i != ModifiedDescriptors.end()) { + assert (*i); + _ModifyEpollEvent (*i); + ++i; + } + } + #endif + + #ifdef HAVE_KQUEUE + if (Poller == Poller_Kqueue) { + std::set::iterator i = ModifiedDescriptors.begin(); + while (i != ModifiedDescriptors.end()) { + assert (*i); + if ((*i)->GetKqueueArmWrite()) + ArmKqueueWriter (*i); + ++i; + } + } + #endif + + ModifiedDescriptors.clear(); +} + + +/********************** +EventMachine_t::Modify +**********************/ + +void EventMachine_t::Modify (EventableDescriptor *ed) +{ + if (!ed) + throw std::runtime_error ("modified bad descriptor"); + ModifiedDescriptors.insert (ed); +} + + +/*********************** +EventMachine_t::Deregister +***********************/ + +void EventMachine_t::Deregister (EventableDescriptor *ed) +{ + if (!ed) + throw std::runtime_error ("modified bad descriptor"); + #ifdef HAVE_EPOLL + // cut/paste from _CleanupSockets(). The error handling could be + // refactored out of there, but it is cut/paste all over the + // file already. + if (Poller == Poller_Epoll) { + assert (epfd != -1); + assert (ed->GetSocket() != INVALID_SOCKET); + int e = epoll_ctl (epfd, EPOLL_CTL_DEL, ed->GetSocket(), ed->GetEpollEvent()); + // ENOENT or EBADF are not errors because the socket may be already closed when we get here. + if (e && (errno != ENOENT) && (errno != EBADF) && (errno != EPERM)) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "unable to delete epoll event: %s", strerror(errno)); + throw std::runtime_error (buf); + } + ModifiedDescriptors.erase(ed); + } + #endif + + #ifdef HAVE_KQUEUE + if (Poller == Poller_Kqueue) { + assert (ed->GetSocket() != INVALID_SOCKET); + + ModifiedDescriptors.erase(ed); + } + #endif +} + + +/************************************** +EventMachine_t::CreateUnixDomainServer +**************************************/ + +#ifdef OS_UNIX +const uintptr_t EventMachine_t::CreateUnixDomainServer (const char *filename) +{ + /* Create a UNIX-domain acceptor (server) socket and add it to the event machine. + * Return the binding of the new acceptor to the caller. + * This binding will be referenced when the new acceptor sends events + * to indicate accepted connections. + * THERE IS NO MEANINGFUL IMPLEMENTATION ON WINDOWS. + */ + + struct sockaddr_un s_sun; + + SOCKET sd_accept = EmSocket (AF_LOCAL, SOCK_STREAM, 0); + if (sd_accept == INVALID_SOCKET) { + goto fail; + } + + if (!filename || !*filename) + goto fail; + unlink (filename); + + bzero (&s_sun, sizeof(s_sun)); + s_sun.sun_family = AF_LOCAL; + strncpy (s_sun.sun_path, filename, sizeof(s_sun.sun_path)-1); + + // don't bother with reuseaddr for a local socket. + + { // set CLOEXEC. Only makes sense on Unix + #ifdef OS_UNIX + int cloexec = fcntl (sd_accept, F_GETFD, 0); + assert (cloexec >= 0); + cloexec |= FD_CLOEXEC; + fcntl (sd_accept, F_SETFD, cloexec); + #endif + } + + if (bind (sd_accept, (struct sockaddr*)&s_sun, sizeof(s_sun))) { + //__warning ("binding failed"); + goto fail; + } + + if (listen (sd_accept, 100)) { + //__warning ("listen failed"); + goto fail; + } + + return AttachSD(sd_accept); + + fail: + if (sd_accept != INVALID_SOCKET) + close (sd_accept); + return 0; +} +#else +const uintptr_t EventMachine_t::CreateUnixDomainServer (const char *filename UNUSED) +{ + throw std::runtime_error ("unix-domain server unavailable on this platform"); +} +#endif + + +/************************************** +EventMachine_t::AttachSD +**************************************/ + +const uintptr_t EventMachine_t::AttachSD (SOCKET sd_accept) +{ + uintptr_t output_binding = 0; + + { + // Set the acceptor non-blocking. + // THIS IS CRUCIALLY IMPORTANT because we read it in a select loop. + if (!SetSocketNonblocking (sd_accept)) { + //int val = fcntl (sd_accept, F_GETFL, 0); + //if (fcntl (sd_accept, F_SETFL, val | O_NONBLOCK) == -1) { + goto fail; + } + } + + { // Looking good. + AcceptorDescriptor *ad = new AcceptorDescriptor (sd_accept, this); + if (!ad) + throw std::runtime_error ("unable to allocate acceptor"); + Add (ad); + output_binding = ad->GetBinding(); + } + + return output_binding; + + fail: + if (sd_accept != INVALID_SOCKET) + close (sd_accept); + return 0; +} + + +/************************** +EventMachine_t::Socketpair +**************************/ + +#ifdef OS_UNIX +const uintptr_t EventMachine_t::Socketpair (char * const * cmd_strings) +{ + // Make sure the incoming array of command strings is sane. + if (!cmd_strings) + return 0; + int j; + for (j=0; j < 2048 && cmd_strings[j]; j++) + ; + if ((j==0) || (j==2048)) + return 0; + + uintptr_t output_binding = 0; + + int sv[2]; + if (socketpair (AF_LOCAL, SOCK_STREAM, 0, sv) < 0) + return 0; + // from here, all early returns must close the pair of sockets. + + // Set the parent side of the socketpair nonblocking. + // We don't care about the child side, and most child processes will expect their + // stdout to be blocking. Thanks to Duane Johnson and Bill Kelly for pointing this out. + // Obviously DON'T set CLOEXEC. + if (!SetSocketNonblocking (sv[0])) { + close (sv[0]); + close (sv[1]); + return 0; + } + + pid_t f = fork(); + if (f > 0) { + close (sv[1]); + PipeDescriptor *pd = new PipeDescriptor (sv[0], f, this); + if (!pd) + throw std::runtime_error ("unable to allocate pipe"); + Add (pd); + output_binding = pd->GetBinding(); + } + else if (f == 0) { + close (sv[0]); + dup2 (sv[1], STDIN_FILENO); + close (sv[1]); + dup2 (STDIN_FILENO, STDOUT_FILENO); + execvp (cmd_strings[0], cmd_strings+1); + exit (-1); // end the child process if the exec doesn't work. + } + else + throw std::runtime_error ("no fork"); + + return output_binding; +} +#else +const uintptr_t EventMachine_t::Socketpair (char * const * cmd_strings UNUSED) +{ + throw std::runtime_error ("socketpair is currently unavailable on this platform"); +} +#endif + + + +/**************************** +EventMachine_t::OpenKeyboard +****************************/ + +const uintptr_t EventMachine_t::OpenKeyboard() +{ + KeyboardDescriptor *kd = new KeyboardDescriptor (this); + if (!kd) + throw std::runtime_error ("no keyboard-object allocated"); + Add (kd); + return kd->GetBinding(); +} + + +/********************************** +EventMachine_t::GetConnectionCount +**********************************/ + +int EventMachine_t::GetConnectionCount () +{ + int i = 0; + // Subtract one for epoll or kqueue because of the LoopbreakDescriptor + if (Poller == Poller_Epoll || Poller == Poller_Kqueue) + i = 1; + + return Descriptors.size() + NewDescriptors.size() - i; +} + + +/************************ +EventMachine_t::WatchPid +************************/ + +#ifdef HAVE_KQUEUE +const uintptr_t EventMachine_t::WatchPid (int pid) +{ + if (Poller != Poller_Kqueue) + throw std::runtime_error("must enable kqueue (EM.kqueue=true) for pid watching support"); + + struct kevent event; + int kqres; + + EV_SET(&event, pid, EVFILT_PROC, EV_ADD, NOTE_EXIT | NOTE_FORK, 0, 0); + + // Attempt to register the event + kqres = kevent(kqfd, &event, 1, NULL, 0, NULL); + if (kqres == -1) { + char errbuf[200]; + sprintf(errbuf, "failed to register file watch descriptor with kqueue: %s", strerror(errno)); + throw std::runtime_error(errbuf); + } + Bindable_t* b = new Bindable_t(); + Pids.insert(std::make_pair (pid, b)); + + return b->GetBinding(); +} +#else +const uintptr_t EventMachine_t::WatchPid (int pid UNUSED) +{ + throw std::runtime_error("no pid watching support on this system"); +} +#endif + +/************************** +EventMachine_t::UnwatchPid +**************************/ + +void EventMachine_t::UnwatchPid (int pid) +{ + Bindable_t *b = Pids[pid]; + assert(b); + Pids.erase(pid); + + #ifdef HAVE_KQUEUE + struct kevent k; + + EV_SET(&k, pid, EVFILT_PROC, EV_DELETE, 0, 0, 0); + /*int t =*/ kevent (kqfd, &k, 1, NULL, 0, NULL); + // t==-1 if the process already exited; ignore this for now + #endif + + if (EventCallback) + (*EventCallback)(b->GetBinding(), EM_CONNECTION_UNBOUND, NULL, 0); + + delete b; +} + +void EventMachine_t::UnwatchPid (const uintptr_t sig) +{ + for(std::map::iterator i=Pids.begin(); i != Pids.end(); i++) + { + if (i->second->GetBinding() == sig) { + UnwatchPid (i->first); + return; + } + } + + throw std::runtime_error("attempted to remove invalid pid signature"); +} + + +/************************* +EventMachine_t::WatchFile +*************************/ + +const uintptr_t EventMachine_t::WatchFile (const char *fpath) +{ + struct stat sb; + int sres; + int wd = -1; + + sres = stat(fpath, &sb); + + if (sres == -1) { + char errbuf[300]; + sprintf(errbuf, "error registering file %s for watching: %s", fpath, strerror(errno)); + throw std::runtime_error(errbuf); + } + + #ifdef HAVE_INOTIFY + if (!inotify) { + inotify = new InotifyDescriptor(this); + assert (inotify); + Add(inotify); + } + + wd = inotify_add_watch(inotify->GetSocket(), fpath, + IN_MODIFY | IN_DELETE_SELF | IN_MOVE_SELF | IN_CREATE | IN_DELETE | IN_MOVE) ; + if (wd == -1) { + char errbuf[300]; + sprintf(errbuf, "failed to open file %s for registering with inotify: %s", fpath, strerror(errno)); + throw std::runtime_error(errbuf); + } + #endif + + #ifdef HAVE_KQUEUE + if (Poller != Poller_Kqueue) + throw std::runtime_error("must enable kqueue (EM.kqueue=true) for file watching support"); + + // With kqueue we have to open the file first and use the resulting fd to register for events + wd = open(fpath, O_RDONLY); + if (wd == -1) { + char errbuf[300]; + sprintf(errbuf, "failed to open file %s for registering with kqueue: %s", fpath, strerror(errno)); + throw std::runtime_error(errbuf); + } + _RegisterKqueueFileEvent(wd); + #endif + + if (wd != -1) { + Bindable_t* b = new Bindable_t(); + Files.insert(std::make_pair (wd, b)); + + return b->GetBinding(); + } + + throw std::runtime_error("no file watching support on this system"); // is this the right thing to do? +} + + +/*************************** +EventMachine_t::UnwatchFile +***************************/ + +void EventMachine_t::UnwatchFile (int wd) +{ + Bindable_t *b = Files[wd]; + assert(b); + Files.erase(wd); + + #ifdef HAVE_INOTIFY + inotify_rm_watch(inotify->GetSocket(), wd); + #elif HAVE_KQUEUE + // With kqueue, closing the monitored fd automatically clears all registered events for it + close(wd); + #endif + + if (EventCallback) + (*EventCallback)(b->GetBinding(), EM_CONNECTION_UNBOUND, NULL, 0); + + delete b; +} + +void EventMachine_t::UnwatchFile (const uintptr_t sig) +{ + for(std::map::iterator i=Files.begin(); i != Files.end(); i++) + { + if (i->second->GetBinding() == sig) { + UnwatchFile (i->first); + return; + } + } + throw std::runtime_error("attempted to remove invalid watch signature"); +} + + +/*********************************** +EventMachine_t::_ReadInotify_Events +************************************/ + +void EventMachine_t::_ReadInotifyEvents() +{ + #ifdef HAVE_INOTIFY + char buffer[1024]; + + assert(EventCallback); + + for (;;) { + int returned = read(inotify->GetSocket(), buffer, sizeof(buffer)); + assert(!(returned == 0 || (returned == -1 && errno == EINVAL))); + if (returned <= 0) { + break; + } + int current = 0; + while (current < returned) { + struct inotify_event* event = (struct inotify_event*)(buffer+current); + std::map::const_iterator bindable = Files.find(event->wd); + if (bindable != Files.end()) { + if (event->mask & (IN_MODIFY | IN_CREATE | IN_DELETE | IN_MOVE)){ + (*EventCallback)(bindable->second->GetBinding(), EM_CONNECTION_READ, "modified", 8); + } + if (event->mask & IN_MOVE_SELF){ + (*EventCallback)(bindable->second->GetBinding(), EM_CONNECTION_READ, "moved", 5); + } + if (event->mask & IN_DELETE_SELF) { + (*EventCallback)(bindable->second->GetBinding(), EM_CONNECTION_READ, "deleted", 7); + UnwatchFile ((int)event->wd); + } + } + current += sizeof(struct inotify_event) + event->len; + } + } + #endif +} + + +/************************************* +EventMachine_t::_HandleKqueuePidEvent +*************************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::_HandleKqueuePidEvent(struct kevent *event) +{ + assert(EventCallback); + + if (event->fflags & NOTE_FORK) + (*EventCallback)(Pids [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "fork", 4); + if (event->fflags & NOTE_EXIT) { + (*EventCallback)(Pids [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "exit", 4); + // stop watching the pid if it died + UnwatchPid ((int)event->ident); + } +} +#endif + + +/************************************** +EventMachine_t::_HandleKqueueFileEvent +***************************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::_HandleKqueueFileEvent(struct kevent *event) +{ + assert(EventCallback); + + if (event->fflags & NOTE_WRITE) + (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "modified", 8); + if (event->fflags & NOTE_RENAME) + (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "moved", 5); + if (event->fflags & NOTE_DELETE) { + (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "deleted", 7); + UnwatchFile ((int)event->ident); + } +} +#endif + + +/**************************************** +EventMachine_t::_RegisterKqueueFileEvent +*****************************************/ + +#ifdef HAVE_KQUEUE +void EventMachine_t::_RegisterKqueueFileEvent(int fd) +{ + struct kevent newevent; + int kqres; + + // Setup the event with our fd and proper flags + EV_SET(&newevent, fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_DELETE | NOTE_RENAME | NOTE_WRITE, 0, 0); + + // Attempt to register the event + kqres = kevent(kqfd, &newevent, 1, NULL, 0, NULL); + if (kqres == -1) { + char errbuf[200]; + sprintf(errbuf, "failed to register file watch descriptor with kqueue: %s", strerror(errno)); + close(fd); + throw std::runtime_error(errbuf); + } +} +#endif + + +/************************************ +EventMachine_t::GetHeartbeatInterval +*************************************/ + +float EventMachine_t::GetHeartbeatInterval() +{ + return ((float)HeartbeatInterval / 1000000); +} + + +/************************************ +EventMachine_t::SetHeartbeatInterval +*************************************/ + +int EventMachine_t::SetHeartbeatInterval(float interval) +{ + int iv = (int)(interval * 1000000); + if (iv > 0) { + HeartbeatInterval = iv; + return 1; + } + return 0; +} +//#endif // OS_UNIX diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.h new file mode 100644 index 0000000000..874a1278d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.h @@ -0,0 +1,308 @@ +/***************************************************************************** + +$Id$ + +File: em.h +Date: 06Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#ifndef __EventMachine__H_ +#define __EventMachine__H_ + +#ifdef BUILD_FOR_RUBY + #include + #ifdef HAVE_RB_THREAD_FD_SELECT + #define EmSelect rb_thread_fd_select + #else + // ruby 1.9.1 and below + #define EmSelect rb_thread_select + #endif + + #ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL + #include + #endif + + #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD + #include + #endif + + #if defined(HAVE_RB_TRAP_IMMEDIATE) + #include + #elif defined(HAVE_RB_ENABLE_INTERRUPT) + extern "C" { + void rb_enable_interrupt(void); + void rb_disable_interrupt(void); + } + + #define TRAP_BEG rb_enable_interrupt() + #define TRAP_END do { rb_disable_interrupt(); rb_thread_check_ints(); } while(0) + #else + #define TRAP_BEG + #define TRAP_END + #endif + + // 1.9.0 compat + #ifndef RUBY_UBF_IO + #define RUBY_UBF_IO RB_UBF_DFL + #endif + #ifndef RSTRING_PTR + #define RSTRING_PTR(str) RSTRING(str)->ptr + #endif + #ifndef RSTRING_LEN + #define RSTRING_LEN(str) RSTRING(str)->len + #endif + #ifndef RSTRING_LENINT + #define RSTRING_LENINT(str) RSTRING_LEN(str) + #endif +#else + #define EmSelect select +#endif + +#if !defined(HAVE_TYPE_RB_FDSET_T) +#define fd_check(n) (((n) < FD_SETSIZE) ? 1 : 0*fprintf(stderr, "fd %d too large for select\n", (n))) +// These definitions are cribbed from include/ruby/intern.h in Ruby 1.9.3, +// with this change: any macros that read or write the nth element of an +// fdset first call fd_check to make sure n is in bounds. +typedef fd_set rb_fdset_t; +#define rb_fd_zero(f) FD_ZERO(f) +#define rb_fd_set(n, f) do { if (fd_check(n)) FD_SET((n), (f)); } while(0) +#define rb_fd_clr(n, f) do { if (fd_check(n)) FD_CLR((n), (f)); } while(0) +#define rb_fd_isset(n, f) (fd_check(n) ? FD_ISSET((n), (f)) : 0) +#define rb_fd_copy(d, s, n) (*(d) = *(s)) +#define rb_fd_dup(d, s) (*(d) = *(s)) +#define rb_fd_resize(n, f) ((void)(f)) +#define rb_fd_ptr(f) (f) +#define rb_fd_init(f) FD_ZERO(f) +#define rb_fd_init_copy(d, s) (*(d) = *(s)) +#define rb_fd_term(f) ((void)(f)) +#define rb_fd_max(f) FD_SETSIZE +#define rb_fd_select(n, rfds, wfds, efds, timeout) \ + select(fd_check((n)-1) ? (n) : FD_SETSIZE, (rfds), (wfds), (efds), (timeout)) +#define rb_thread_fd_select(n, rfds, wfds, efds, timeout) \ + rb_thread_select(fd_check((n)-1) ? (n) : FD_SETSIZE, (rfds), (wfds), (efds), (timeout)) +#endif + + +// This Solaris fix is adapted from eval_intern.h in Ruby 1.9.3: +// Solaris sys/select.h switches select to select_large_fdset to support larger +// file descriptors if FD_SETSIZE is larger than 1024 on 32bit environment. +// But Ruby doesn't change FD_SETSIZE because fd_set is allocated dynamically. +// So following definition is required to use select_large_fdset. +#ifdef HAVE_SELECT_LARGE_FDSET +#define select(n, r, w, e, t) select_large_fdset((n), (r), (w), (e), (t)) +extern "C" { + int select_large_fdset(int, fd_set *, fd_set *, fd_set *, struct timeval *); +} +#endif + +class EventableDescriptor; +class InotifyDescriptor; +struct SelectData_t; + +/************* +enum Poller_t +*************/ +enum Poller_t { + Poller_Default, // typically Select + Poller_Epoll, + Poller_Kqueue +}; + + +/******************** +class EventMachine_t +********************/ + +class EventMachine_t +{ + public: + static int GetMaxTimerCount(); + static void SetMaxTimerCount (int); + + static int GetSimultaneousAcceptCount(); + static void SetSimultaneousAcceptCount (int); + + public: + EventMachine_t (EMCallback, Poller_t); + virtual ~EventMachine_t(); + + bool RunOnce(); + void Run(); + void ScheduleHalt(); + bool Stopping(); + void SignalLoopBreaker(); + const uintptr_t InstallOneshotTimer (uint64_t); + const uintptr_t ConnectToServer (const char *, int, const char *, int); + const uintptr_t ConnectToUnixServer (const char *); + + const uintptr_t CreateTcpServer (const char *, int); + const uintptr_t OpenDatagramSocket (const char *, int); + const uintptr_t CreateUnixDomainServer (const char*); + const uintptr_t AttachSD (SOCKET); + const uintptr_t OpenKeyboard(); + //const char *Popen (const char*, const char*); + const uintptr_t Socketpair (char* const*); + + void Add (EventableDescriptor*); + void Modify (EventableDescriptor*); + void Deregister (EventableDescriptor*); + + const uintptr_t AttachFD (SOCKET, bool); + int DetachFD (EventableDescriptor*); + + void ArmKqueueWriter (EventableDescriptor*); + void ArmKqueueReader (EventableDescriptor*); + + void SetTimerQuantum (int); + static void SetuidString (const char*); + static int SetRlimitNofile (int); + + pid_t SubprocessPid; + int SubprocessExitStatus; + + int GetConnectionCount(); + float GetHeartbeatInterval(); + int SetHeartbeatInterval(float); + + const uintptr_t WatchFile (const char*); + void UnwatchFile (int); + void UnwatchFile (const uintptr_t); + + #ifdef HAVE_KQUEUE + void _HandleKqueueFileEvent (struct kevent*); + void _RegisterKqueueFileEvent(int); + #endif + + const uintptr_t WatchPid (int); + void UnwatchPid (int); + void UnwatchPid (const uintptr_t); + + #ifdef HAVE_KQUEUE + void _HandleKqueuePidEvent (struct kevent*); + #endif + + uint64_t GetCurrentLoopTime() { return MyCurrentLoopTime; } + + void QueueHeartbeat(EventableDescriptor*); + void ClearHeartbeat(uint64_t, EventableDescriptor*); + + uint64_t GetRealTime(); + + Poller_t GetPoller() { return Poller; } + + static int name2address (const char *server, int port, int socktype, struct sockaddr *addr, size_t *addr_len); + + private: + void _RunTimers(); + void _UpdateTime(); + void _AddNewDescriptors(); + void _ModifyDescriptors(); + void _InitializeLoopBreaker(); + void _CleanupSockets(); + + void _RunSelectOnce(); + void _RunEpollOnce(); + void _RunKqueueOnce(); + + void _ModifyEpollEvent (EventableDescriptor*); + void _DispatchHeartbeats(); + timeval _TimeTilNextEvent(); + void _CleanBadDescriptors(); + + public: + void _ReadLoopBreaker(); + void _ReadInotifyEvents(); + int NumCloseScheduled; + + private: + enum { + MaxEpollDescriptors = 64*1024, + MaxEvents = 4096 + }; + int HeartbeatInterval; + EMCallback EventCallback; + + class Timer_t: public Bindable_t { + }; + + std::multimap Timers; + std::multimap Heartbeats; + std::map Files; + std::map Pids; + std::vector Descriptors; + std::vector NewDescriptors; + std::set ModifiedDescriptors; + + SOCKET LoopBreakerReader; + SOCKET LoopBreakerWriter; + #ifdef OS_WIN32 + struct sockaddr_in LoopBreakerTarget; + #endif + + timeval Quantum; + + uint64_t MyCurrentLoopTime; + + #ifdef OS_WIN32 + unsigned TickCountTickover; + unsigned LastTickCount; + #endif + + #ifdef OS_DARWIN + mach_timebase_info_data_t mach_timebase; + #endif + + private: + bool bTerminateSignalReceived; + SelectData_t *SelectData; + + Poller_t Poller; + + int epfd; // Epoll file-descriptor + #ifdef HAVE_EPOLL + struct epoll_event epoll_events [MaxEvents]; + #endif + + int kqfd; // Kqueue file-descriptor + #ifdef HAVE_KQUEUE + struct kevent Karray [MaxEvents]; + #endif + + #ifdef HAVE_INOTIFY + InotifyDescriptor *inotify; // pollable descriptor for our inotify instance + #endif +}; + + +/******************* +struct SelectData_t +*******************/ + +struct SelectData_t +{ + SelectData_t(); + ~SelectData_t(); + + int _Select(); + void _Clear(); + + SOCKET maxsocket; + rb_fdset_t fdreads; + rb_fdset_t fdwrites; + rb_fdset_t fderrors; + timeval tv; + int nSockets; +}; + +#endif // __EventMachine__H_ diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/em.o new file mode 100644 index 0000000000000000000000000000000000000000..d1c255b3ec1dffc2da561dc4aaefe193316d945c GIT binary patch literal 2098568 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

              C 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%0DMO)b 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

              |e-9%K*l8L=16K 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%0AGBYENL1mGUi+Zieo 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%0D(O_VuUOD0?nIKJ6^UgT0RW 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
                NWZyX@r)|)kcP=I(_Z?^c+JTCjY zGv-t1whnD>@p~n|#oKzb#ZP3OI|1Ttz1iX|e}bsk(A@fIDsk&anZ)h7oI8LQ7PsrQ zt#jLctvpR6-j2)GkDYjS!SI6H-=i_N>+CpB9w**>viMRQzHeRtUn0(r$@?}0@NME& zZ~FuIF>zamvG14Iahczgc-~I=9tZH(;?~-`a_AYM1L2+qee%7<*CE?_yIhrcwNTZ`xTbQ%2QI}Ex)}lVeyxlCq&}! z(CzQYy2~b zxAlB`A3)=i@CMJ^^4t3Z=2o7d0P*%dfW?33{3GnAg~Z$XxvlG4y!i-;pT<14zOL~< zNxZF}+q%2PACY*=Z|m_I|1vYQ2ow;dPGw$GQA|8U&4btt#Txho1DEIuif&CR`E zPD%If*U6uTZrfR&^mOljo%kSnVLn>C&EM>GbDMWnlz5vzG!q}q=WWF8^9EhSZ64KI z+{!b-^LtszUmSm z%PB)GhUh255kvh)h@9;cH!k*u{=BUqS_2k6c7~r_=-*Ma4 zal4;zJhcP-vH6|jHfA_4*?h`zXTRfk!(798G3>|jw9Y^H)0mGIU*aSn)Z^a$+Wof^ zpN=ukLwEk$@$~$+^U#m~w*0$T4}(3Pf&X?M#&|rV$8Fqj@>m@@FVA3%0&ci(Z z+wsi&xAS1*hT~a0zJ~vH+^M%R&jA}fZf)729Ugb$$FBtJ_qey-j(XgQ|M3*yjQATi zqDvmn#(z5x*FB!y;}1RVv93om}=iO=ncxAkOazj-`v@8>(7*W*E+Jo!9c-s3jbIxpKe=HzkeXFwfC z{~N~~_tsAnPo4tdk@%mDV@`ZQk9YCJ7xK9MJqjnju*U~_;_cqfdD+H2C!SyF2;a)a zJ;#fM3;s95lc%`H7kJ#p3g_iz9(U>?6C0GRZ#(%NFSal2e_=mcJ@F+$;s3YwZ705z z$N%ue2YLLY$Adk7-s9eSyW#QDp7>`Tcgi`2$^P|t8BcsHUN`Kx2E50M2|Zrc6Q9iE zHkLXsr}KDuPrR*@JNYYk+~&oOSM<1jzQFM>JYL?D-`fr=d%Th-zNW{&^ms#$SN3>_ z$E$d}oyV(syqm|JdTzuP;g;Y7{$cs0*{7kj+A$8EjcsW+!Q zlll39Up(=4jdM2J;c+K^(N~W8d z2@3!JN0ITwIj&kBkLhuz`~{of#ZNq5+Y_JM;~d(;UrpDUx*&?=%?RNBl;1oZlhh z*Ewj7@pwa|2><_Nk2mu8T#q~D+{*EDiN|eDcz zzTe|b!v+64>2W82ltb`~;)B^aZg{*ILc{<6$m33)KalAPw{QoID@!ocl+2c-m##F*axy9}M<6<6f;mKdd<1Ia2+2c0XbzZLN z@m8Mr`W|oX@g^Q`ck%e29`EY$3m*4g*KT;c zngoq8DX0UN#Xcn?tc|D#036Q|ue@rf_vd2Ek+uh)qKcuJ4=M2hhL zr}y~R9?#)%XTRI|f!BN<@8yXv;c+Lv(q+6@Uc5F3r)uKEW1wBt7mvvsf)Md(tfY40 ze`0>}Ab;_)9M{#)_t1yRoF;zNfaexdk&zHzlud_sD}ZxkQ06TU-y z%xd@{@to|Br^UT zYgb&n$kXfI7cYznkHu}Repdbo;APm2@B16v$?5!9{CIx8F%{VLMJ3RFGKiPq=a93C z|G>dAm-y=w0J|5q{btDnw`+v?N>);^wOBhxv}|m9+0(R z^C&Zs-{wf>DY@VgD&?ucdbVq*#n�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 +#include + +#include +#include "mapper.h" + +static VALUE EmModule; +static VALUE FastFileReader; +static VALUE Mapper; + + + +/********* +mapper_dt +*********/ + +static void mapper_dt (void *ptr) +{ + if (ptr) + delete (Mapper_t*) ptr; +} + +/********** +mapper_new +**********/ + +static VALUE mapper_new (VALUE self, VALUE filename) +{ + Mapper_t *m = new Mapper_t (StringValueCStr (filename)); + if (!m) + rb_raise (rb_eStandardError, "No Mapper Object"); + VALUE v = Data_Wrap_Struct (Mapper, 0, mapper_dt, (void*)m); + return v; +} + + +/**************** +mapper_get_chunk +****************/ + +static VALUE mapper_get_chunk (VALUE self, VALUE start, VALUE length) +{ + Mapper_t *m = NULL; + Data_Get_Struct (self, Mapper_t, m); + if (!m) + rb_raise (rb_eStandardError, "No Mapper Object"); + + // TODO, what if some moron sends us a negative start value? + unsigned _start = NUM2INT (start); + unsigned _length = NUM2INT (length); + if ((_start + _length) > m->GetFileSize()) + rb_raise (rb_eStandardError, "Mapper Range Error"); + + const char *chunk = m->GetChunk (_start); + if (!chunk) + rb_raise (rb_eStandardError, "No Mapper Chunk"); + return rb_str_new (chunk, _length); +} + +/************ +mapper_close +************/ + +static VALUE mapper_close (VALUE self) +{ + Mapper_t *m = NULL; + Data_Get_Struct (self, Mapper_t, m); + if (!m) + rb_raise (rb_eStandardError, "No Mapper Object"); + m->Close(); + return Qnil; +} + +/*********** +mapper_size +***********/ + +static VALUE mapper_size (VALUE self) +{ + Mapper_t *m = NULL; + Data_Get_Struct (self, Mapper_t, m); + if (!m) + rb_raise (rb_eStandardError, "No Mapper Object"); + return INT2NUM (m->GetFileSize()); +} + + +/********************** +Init_fastfilereaderext +**********************/ + +extern "C" void Init_fastfilereaderext() +{ + EmModule = rb_define_module ("EventMachine"); + FastFileReader = rb_define_class_under (EmModule, "FastFileReader", rb_cObject); + Mapper = rb_define_class_under (FastFileReader, "Mapper", rb_cObject); + + rb_define_module_function (Mapper, "new", (VALUE(*)(...))mapper_new, 1); + rb_define_method (Mapper, "size", (VALUE(*)(...))mapper_size, 0); + rb_define_method (Mapper, "close", (VALUE(*)(...))mapper_close, 0); + rb_define_method (Mapper, "get_chunk", (VALUE(*)(...))mapper_get_chunk, 2); +} + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/rubymain.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/rubymain.o new file mode 100644 index 0000000000000000000000000000000000000000..9fe2b46845e10776a89d682957ab679559d63405 GIT binary patch literal 376752 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 z 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.cpp new file mode 100644 index 0000000000..2187ae2289 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.cpp @@ -0,0 +1,79 @@ +/***************************************************************************** + +$Id$ + +File: kb.cpp +Date: 24Aug07 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" + + +/************************************** +KeyboardDescriptor::KeyboardDescriptor +**************************************/ + +KeyboardDescriptor::KeyboardDescriptor (EventMachine_t *parent_em): + EventableDescriptor (0, parent_em), + bReadAttemptedAfterClose (false) +{ + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + #ifdef HAVE_KQUEUE + MyEventMachine->ArmKqueueReader (this); + #endif +} + + +/*************************************** +KeyboardDescriptor::~KeyboardDescriptor +***************************************/ + +KeyboardDescriptor::~KeyboardDescriptor() +{ +} + + +/************************* +KeyboardDescriptor::Write +*************************/ + +void KeyboardDescriptor::Write() +{ + // Why are we here? + throw std::runtime_error ("bad code path in keyboard handler"); +} + + +/***************************** +KeyboardDescriptor::Heartbeat +*****************************/ + +void KeyboardDescriptor::Heartbeat() +{ + // no-op +} + + +/************************ +KeyboardDescriptor::Read +************************/ + +void KeyboardDescriptor::Read() +{ + char c; + (void)read (GetSocket(), &c, 1); + _GenericInboundDispatch(&c, 1); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/kb.o new file mode 100644 index 0000000000000000000000000000000000000000..9af7835fbf5d3b8e5526dad49555242db02d0af8 GIT binary patch literal 1330016 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
                Wfj^^{yshUgF%nPl2*``>#RU=vCO0G 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 z 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
                = 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

                FY8f*bI@BL;Ysnf9B^X4Zyq|SLv_( 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 RVRL2|oJp^z3%`R$vp6qF@J@acE`4MM+GeJTRG3 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

                Xr8BvFW3jU?{GMkTBjEW=m&c{!>yt`C? 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

                hjs#(o%G5k!9LK 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

                wQ=^5ZCqPcH+9eJVjj3*PbVS@6|HzeL!6A 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�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 Z@5Ap5ulw;IOOrlPv0N$WyMLAc{{RI>68iuE literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.cpp new file mode 100644 index 0000000000..a5f0d9f142 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.cpp @@ -0,0 +1,354 @@ +/***************************************************************************** + +$Id$ + +File: pipe.cpp +Date: 30May07 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" + + +#ifdef OS_UNIX +// THIS ENTIRE FILE IS ONLY COMPILED ON UNIX-LIKE SYSTEMS. + +/****************************** +PipeDescriptor::PipeDescriptor +******************************/ + +PipeDescriptor::PipeDescriptor (int fd, pid_t subpid, EventMachine_t *parent_em): + EventableDescriptor (fd, parent_em), + bReadAttemptedAfterClose (false), + OutboundDataSize (0), + SubprocessPid (subpid) +{ + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + #endif + #ifdef HAVE_KQUEUE + MyEventMachine->ArmKqueueReader (this); + #endif +} + + +/******************************* +PipeDescriptor::~PipeDescriptor +*******************************/ + +PipeDescriptor::~PipeDescriptor() NO_EXCEPT_FALSE +{ + // Run down any stranded outbound data. + for (size_t i=0; i < OutboundPages.size(); i++) + OutboundPages[i].Free(); + + /* As a virtual destructor, we come here before the base-class + * destructor that closes our file-descriptor. + * We have to make sure the subprocess goes down (if it's not + * already down) and we have to reap the zombie. + * + * This implementation is PROVISIONAL and will surely be improved. + * The intention here is that we never block, hence the highly + * undesirable sleeps. But if we can't reap the subprocess even + * after sending it SIGKILL, then something is wrong and we + * throw a fatal exception, which is also not something we should + * be doing. + * + * Eventually the right thing to do will be to have the reactor + * core respond to SIGCHLD by chaining a handler on top of the + * one Ruby may have installed, and dealing with a list of dead + * children that are pending cleanup. + * + * Since we want to have a signal processor integrated into the + * client-visible API, let's wait until that is done before cleaning + * this up. + * + * Added a very ugly hack to support passing the subprocess's exit + * status to the user. It only makes logical sense for user code to access + * the subprocess exit status in the unbind callback. But unbind is called + * back during the EventableDescriptor destructor. So by that time there's + * no way to call back this object through an object binding, because it's + * already been cleaned up. We might have added a parameter to the unbind + * callback, but that would probably break a huge amount of existing code. + * So the hack-solution is to define an instance variable in the EventMachine + * object and stick the exit status in there, where it can easily be accessed + * with an accessor visible to user code. + * User code should ONLY access the exit status from within the unbind callback. + * Otherwise there's no guarantee it'll be valid. + * This hack won't make it impossible to run multiple EventMachines in a single + * process, but it will make it impossible to reliably nest unbind calls + * within other unbind calls. (Not sure if that's even possible.) + */ + + assert (MyEventMachine); + + /* Another hack to make the SubprocessPid available to get_subprocess_status */ + MyEventMachine->SubprocessPid = SubprocessPid; + + /* 01Mar09: Updated to use a small nanosleep in a loop. When nanosleep is interrupted by SIGCHLD, + * it resumes the system call after processing the signal (resulting in unnecessary latency). + * Calling nanosleep in a loop avoids this problem. + */ + struct timespec req = {0, 50000000}; // 0.05s + int n; + + // wait 0.5s for the process to die + for (n=0; n<10; n++) { + if (waitpid (SubprocessPid, &(MyEventMachine->SubprocessExitStatus), WNOHANG) != 0) return; + nanosleep (&req, NULL); + } + + // send SIGTERM and wait another 1s + kill (SubprocessPid, SIGTERM); + for (n=0; n<20; n++) { + nanosleep (&req, NULL); + if (waitpid (SubprocessPid, &(MyEventMachine->SubprocessExitStatus), WNOHANG) != 0) return; + } + + // send SIGKILL and wait another 5s + kill (SubprocessPid, SIGKILL); + for (n=0; n<100; n++) { + nanosleep (&req, NULL); + if (waitpid (SubprocessPid, &(MyEventMachine->SubprocessExitStatus), WNOHANG) != 0) return; + } + + // still not dead, give up! + throw std::runtime_error ("unable to reap subprocess"); +} + + + +/******************** +PipeDescriptor::Read +********************/ + +void PipeDescriptor::Read() +{ + int sd = GetSocket(); + if (sd == INVALID_SOCKET) { + assert (!bReadAttemptedAfterClose); + bReadAttemptedAfterClose = true; + return; + } + + LastActivity = MyEventMachine->GetCurrentLoopTime(); + + int total_bytes_read = 0; + char readbuffer [16 * 1024]; + + for (int i=0; i < 10; i++) { + // Don't read just one buffer and then move on. This is faster + // if there is a lot of incoming. + // But don't read indefinitely. Give other sockets a chance to run. + // NOTICE, we're reading one less than the buffer size. + // That's so we can put a guard byte at the end of what we send + // to user code. + // Use read instead of recv, which on Linux gives a "socket operation + // on nonsocket" error. + + + int r = read (sd, readbuffer, sizeof(readbuffer) - 1); + //cerr << ""; + + if (r > 0) { + total_bytes_read += r; + + // Add a null-terminator at the the end of the buffer + // that we will send to the callback. + // DO NOT EVER CHANGE THIS. We want to explicitly allow users + // to be able to depend on this behavior, so they will have + // the option to do some things faster. Additionally it's + // a security guard against buffer overflows. + readbuffer [r] = 0; + _GenericInboundDispatch(readbuffer, r); + } + else if (r == 0) { + break; + } + else { + // Basically a would-block, meaning we've read everything there is to read. + break; + } + + } + + + if (total_bytes_read == 0) { + // If we read no data on a socket that selected readable, + // it generally means the other end closed the connection gracefully. + ScheduleClose (false); + //bCloseNow = true; + } + +} + +/********************* +PipeDescriptor::Write +*********************/ + +void PipeDescriptor::Write() +{ + int sd = GetSocket(); + assert (sd != INVALID_SOCKET); + + LastActivity = MyEventMachine->GetCurrentLoopTime(); + char output_buffer [16 * 1024]; + size_t nbytes = 0; + + while ((OutboundPages.size() > 0) && (nbytes < sizeof(output_buffer))) { + OutboundPage *op = &(OutboundPages[0]); + if ((nbytes + op->Length - op->Offset) < sizeof (output_buffer)) { + memcpy (output_buffer + nbytes, op->Buffer + op->Offset, op->Length - op->Offset); + nbytes += (op->Length - op->Offset); + op->Free(); + OutboundPages.pop_front(); + } + else { + int len = sizeof(output_buffer) - nbytes; + memcpy (output_buffer + nbytes, op->Buffer + op->Offset, len); + op->Offset += len; + nbytes += len; + } + } + + // We should never have gotten here if there were no data to write, + // so assert that as a sanity check. + // Don't bother to make sure nbytes is less than output_buffer because + // if it were we probably would have crashed already. + assert (nbytes > 0); + + assert (GetSocket() != INVALID_SOCKET); + int bytes_written = write (GetSocket(), output_buffer, nbytes); +#ifdef OS_WIN32 + int e = WSAGetLastError(); +#else + int e = errno; +#endif + + if (bytes_written > 0) { + OutboundDataSize -= bytes_written; + if ((size_t)bytes_written < nbytes) { + int len = nbytes - bytes_written; + char *buffer = (char*) malloc (len + 1); + if (!buffer) + throw std::runtime_error ("bad alloc throwing back data"); + memcpy (buffer, output_buffer + bytes_written, len); + buffer [len] = 0; + OutboundPages.push_front (OutboundPage (buffer, len)); + } + #ifdef HAVE_EPOLL + EpollEvent.events = EPOLLIN; + if (SelectForWrite()) + EpollEvent.events |= EPOLLOUT; + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + } + else { + #ifdef OS_UNIX + if ((e != EINPROGRESS) && (e != EWOULDBLOCK) && (e != EINTR)) + #endif + #ifdef OS_WIN32 + if ((e != WSAEINPROGRESS) && (e != WSAEWOULDBLOCK)) + #endif + Close(); + } +} + + +/************************* +PipeDescriptor::Heartbeat +*************************/ + +void PipeDescriptor::Heartbeat() +{ + // If an inactivity timeout is defined, then check for it. + if (InactivityTimeout && ((MyEventMachine->GetCurrentLoopTime() - LastActivity) >= InactivityTimeout)) + ScheduleClose (false); + //bCloseNow = true; +} + + +/***************************** +PipeDescriptor::SelectForRead +*****************************/ + +bool PipeDescriptor::SelectForRead() +{ + /* Pipe descriptors, being local by definition, don't have + * a pending state, so this is simpler than for the + * ConnectionDescriptor object. + */ + return bPaused ? false : true; +} + +/****************************** +PipeDescriptor::SelectForWrite +******************************/ + +bool PipeDescriptor::SelectForWrite() +{ + /* Pipe descriptors, being local by definition, don't have + * a pending state, so this is simpler than for the + * ConnectionDescriptor object. + */ + return (GetOutboundDataSize() > 0) && !bPaused ? true : false; +} + + + + +/******************************** +PipeDescriptor::SendOutboundData +********************************/ + +int PipeDescriptor::SendOutboundData (const char *data, unsigned long length) +{ + //if (bCloseNow || bCloseAfterWriting) + if (IsCloseScheduled()) + return 0; + + if (!data && (length > 0)) + throw std::runtime_error ("bad outbound data"); + char *buffer = (char *) malloc (length + 1); + if (!buffer) + throw std::runtime_error ("no allocation for outbound data"); + memcpy (buffer, data, length); + buffer [length] = 0; + OutboundPages.push_back (OutboundPage (buffer, length)); + OutboundDataSize += length; + #ifdef HAVE_EPOLL + EpollEvent.events = (EPOLLIN | EPOLLOUT); + assert (MyEventMachine); + MyEventMachine->Modify (this); + #endif + return length; +} + +/******************************** +PipeDescriptor::GetSubprocessPid +********************************/ + +bool PipeDescriptor::GetSubprocessPid (pid_t *pid) +{ + bool ok = false; + if (pid && (SubprocessPid > 0)) { + *pid = SubprocessPid; + ok = true; + } + return ok; +} + + +#endif // OS_UNIX + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..cd366895bfc08929d1f878d926a37da6c08779a0 GIT binary patch literal 1447592 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�*($O{LhlW)uzOf`L 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

                ?0%2e3$v3__u>0SLt4?)xvO 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

                ioE*ui<(SkBa>=fHs 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

                RJ((?i9 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 !hW)&_o_rcTJY@gzpDH7MyAD3}| zkh)8fn>fT;Y4o*OU1yE)vZ;R+9)(_mPIXwmT6O|gaY7XcwkqTAw~InAZ7xH$jd&Fc z#X)W7algO1sAg;IKrzBCm){&GPC9Ec%t)}35A2ghM0qliJ2WA$C=EeFfi8s{A{BsN zc)v6x?6V}#`p!Bm7R`7fZP&&S6NU)c^0*SbT*IIAt|>H66Qp5lgPmIRFf%IpS1~o- zJHI`!x(zBtc$$Jl)B`V3D!Ap}hde*X*_(I;>!%UBBC1A(^yuBg1R*6$S24h9RHoIk zu4l`!-bl(Sye=hRwC}6r%HahzLZSWV)EwxNtH7AaCk)qI85ZCI(q(m^Uw-}-wG5lAyNKqSyqAjAUB5Exqvc$O_*8oBSu z$d~Y*C6v8_^b2x#jg838jOf0bx=O&AGU)l+@q1|6v0Z9RwOeGm`f{U`YS+MWw!H+P z_l{9ZFnI;KkzMjonUQd0MPi5a|FXmIX9G>!mu`G!Xk$`yM7O@STI54l0ig<4%w%7Z z@~8`s;(ci^J|DEAFvrHrP0hTD-!oU^tulhC=HaVEq$Guaw9Zg;I!%KOPu0ZzRG^n& z^WgTSs3balg(sTvMbhbK`|})!j|PTc>P*Pnxr>Dz{KZn&yu0?cxa;X@bwo5|n%R9e zffnXSd|M?^l+&U`2=b(`ul6a@v4$D^ks;x#LLyMw9O_Fbl+i}yj`iKGSP-h-@&`sC zQ!#REN&Phuq4L7 z()zvK1t_FoSlSqYd@^$wo{buAJ>n=uT-Gcu&Q@M3 zt!z^t)7Tb z4*R`#ya~~2i^;wgrgmr;*CC#wGz1+H$IeihEPZJKUYrhQ1 zB$HqT#KBVO&?@<*)%TN;bQY;*v5R%grEKj(M)HlEsUl4aoP8HHf&i+X%i+0;P++bbJspuz%Ao3HQs0oW8-*tC9KAtv49Wo+!?(NG>D1dqIT%wvf8=%;VA7@&S)M zzpr}0U(3w?w&H=PetSYOZ|N~?T=N=a_E}mnCED8W>{1rDkZ4sMmzI|USbgs~Kyd98 zT5Ao1R}v0{>xmya?6oP2g&#FII34ck{x&I0d1HA z4+k?ELs-6*n`Ko}7;6IM{<{;%0C3d|v9NkLh#2}ZM#6w_pl#hc>C&CkzFflmLIsy$ zeu_1OBB({_o~p@X^ighf$5&&7$D`=##naIj^6ovw)fJpXHyeEt!)KTr>`ZJYD zg~*ggvAMSUU6Xv4k^5d%_vi1H?%AK#ocyj8$U-`KO&7|+dTv|pO#Z{$zlDQE3YKDB zS(=COhG*v_SN0OF9@Y%OAWL^H1MuvJMte#Zf-8-Bje z&JjtS-BATE@xp2#`!%4qIyzl_UolMWSUZ+T2gUx%?xe3kl4#()va&s+EsL2T3v4=^ z>{omznJTeh@;N^vo^z2`T~{u~{rM=rzeY;7cd>i*fF{ejm!F+IP3aM>ev^*?Bz(~F z?2*vAHMzUS6phb-O^D-F2&z6hhE>V?+5oSzyyh|I)DR(aE>e8zR+1(~z7?|4geKae zvW?|%UtJx_TS?`J6%vJA)NUFuM6S*f%c2*Q(|@54LsA7$Hvw}>17X|PL%LvWa%gJ3 zr^3Rew0^_siil*T(KuGLdtAmKe+yNQd>>WGM{lc-?QmOb-w>PiwV4yg&CD6yz@mjX zv{fj2FL5)N1tkgnFJ%Bq!@PIxejyng;8k&|c*x~&C%k~KrD1b%26(;YXXF?m{yA2X ziN=^V*g~~RYm!mcFdr_Hg(aQ@}S%(A?t!AT!t>p5OoiFzS_7i=JZvP zDmu7eot0AO!NVZnMky8j0TqBVLmQ@H&s!vMaLeTcjHbx$cy@M-u1>Z?ziP!>yvRJE zSCd`bi4gzdPYIC1&cxKn3DR574ttvyg$FXo5 z2@+yY()6^=TUuNu%)3)Q+%#1n`+#cyiIs3(ZxBB*>Ku3*_Y#LfoSW2bkmH3k9|p^t z?Z}tMTb3*@(SGs7%`q21MY1P%=rMSiSG*+ho^>&F`ItJXh>EsDcIgV5QIk>U$VuqU zb)}!~W&Rg%_Ln)n`f+->dUbxYIvL}g8<#)$@`72^kwiR0DQ(35!kDRU&q{q}j@j z@B^wuQTg(+jm()MFg1@(cjV~RKCLC`dzu3KlCtn-xU?lV-HdOFrvJ33UVS-N`P-cJ zM9{`N1yz9@ldUpo1&G7EXL8A1@8#AIJ2u#1j@fV8MO%}Lv+%~32F={{R2Ep_p_AyB ziVJ^`DWe*&r~@<#fEoIz|Ia&ct!%G59RMD(`$}qG40sfI+0M@<0oLuF_a6Ept3*Ck z0yC7J01iq6;-uFHi2yd)|2tMm|C-0+4umiuRbNO7PXMv@2Dw%dA+cl6hR*zc*`l$C zzn4tcNq0s|P-m+}s)NtBkE2hL9>l2XbWkyu*$qdm{U*0PLd;=nh%q?=Zqx@P+~SPlSwOJzF_nwj9TcqtRGWKdHYl+ubt7Y8r&klu{lNn2 z#>UCj{bXOlG6impM02vr4PQ?Rl>M3b|y!xQde-F1>@L;3V#x<1N zn>O|Dt+?;_IFZjiym~}&Jkh)Dsi(sry_bP5b0TJr>5bs5NsWwuBSHbS%Ng#VAFlDK zOy`bG)92B;9H06A?(?x}o|SxFT`%*m>9k=EwoC8?X&M@tX@KA281J|Syi+k0>DZkK zqvqXdymss7P!Ocb(GVfCKB7c~Pr8sCcMsHDcd1pmU}UhFr&eF4Bn~b#{-#DMbUbiRm*Y0vS>WELOveH9R z>8D4v50?7AzJ{5G^5_RpaJlVd-i>#aK-S6;#^iTuC(gHfqp33NqAAoprZC8v9dk~^ zed`2eVzh}}SK{@bcTl$@#0=DxU_a9)$lL5UhroPs6AB6C5+_&a-uyy2+mMn33+s>- z?rdA#EF;AqbSzL?USdXAF%9Xw?2^dkQNH;9%TKwv0koqtv04+8`MLW@e}wVGI5qj` z5?my+qnwS|4dI+Q=6E~i-NIjqc~mvu+Am*bOQ^;o@P^(C>384Mp4G>as3cDr>SL9K zR&xzwb-}(EwpG4mo)2{-0of-6R#5jQt5r|XE)E$OgYVoM#I?b}anjwlX4qz5nGCMy z*aRm-vtXK*OU`)i=vI&-D`iFH=t%L@mZ{(r3bC%bdgX=B>{uEtfqMbxqg1-K=!P%v$17s zyEebFlj#3p+*F;13e}fYC9(w_Y`2ZNx7@NAd#i z+q$(AHZtdK@2vv?vD(#Y+jq#V>w8!+@s5g#fz_xh)mvDdU|Zd|JWI85-$_2y6kSd-y8Jy z367Q4VQZuv0b}H|@*fx%a|5`gLPwn=zdbX=XM|rXD8AFX+tIZhLTN#5M87&96 zl9HcevU%)w`tjxuDsIVl`>efV5A8_&g)5|=Z+Iq#9l#2vH5^NO=+9B0SUqyQ9lXXw#UH9jBzdF{yku8{i;GZ&?*3tjXODfPp%ocGOaP-6HTb_wh5$ z`SXaKxu9uc8s%&^_`xL?Evz*BRgr2D}_i2*g;8FPYt$Prm(Or0i=n~^9j)!(Su zm3~-If}y^PYZcx*5)9|Hu#e~P=3-5>Tmh~mp98y%QrOP0c5z<6IOi9_L89a$9L;n% z3&&;8$_2RJw%L_mF|*q-ugLnd3@DYezcG@Iqzu#JLt?Bx~=$J@^hWDe=9a|4_4(uWdqq3Xhi;cc32LZSvZ`JNV{M}=F(N8s;6Kq_Vr+T2H zwuO*_#mruPR~#%2jpiHpvVEZCy1jHey1koTPbkgMSCK?WD;8)w-Z$pG>j+b6EvQ3i zxvUY}I6S4LpWewCph0saED(VoCIcpLRP&2(9*)KPo;JHkC-;}mug{XZ==E955vozl zbPkVt!3AjdKt$nGbbD{ip))QY>nmt|izq|zr*P3Pq8J(rXmXs27mJB-b`iOhXBSST z6eCnyk4QuO1OzV84dB<=4#$;Li3js_0fwT^Up^>Jx)OL|Gr-jzbb2uL%$6XiSi?sr2D-{)ZL6OX|Ti!;{zNFDfbGT z)g7PPFObXfu;1QkQn-cO6ND~o?#uz7_>d@`m-T6~DWliW)Z$Ve!mY%_!hkl*Smb@N z%jA7+Gn+j~EtAbk0UDuugB(K&d2Yp3l0JzYzK>ha;TI& zsUBDPvIJGHBz9DAUzYU^$sHBul_h;WoYl81hqF9S%gfOiEXw@aDO-XzrgR(p?pl$n zGiwj>*L&VwaDHxXtCX9w_I%}EYRkGwBTV#n>ZI7ztj{-3`*7v+^qN}vHN}?+FBGg& zO3$sh<(J;8+FtbfA}}*a#L_>)p z^gN=266|nkWZJ_4MnuKOJ;&8}E75a{s^%VD8nXMJ%iYLdvCIZ$b0o}ZP(fXlZ>Ez~ zpIUwlt7Lzvgwl?OU|hM@3!_TmjZXsF9hA+xt1c#`4@t&30&)#7s2( zH!|i>?3o)%X9i7AW5?l0Nl%SDt)zYcY;5K5d!8PyQ556f1%hJajoy+rQ?)8+Y0dGB zm6~2)-`N&s$dQ|{zq>?Vk*b<~Rhl~LP`6?{uoOq@@Q>nP z#k2*g)De+0uFKL}T zEF7s*-5cdymx{npPzu*-@7VfCA(9nA3392Ck}gp>VNVy1NFVT}n->>rJM#Lj z^66*3!}Yal7f8rlpHF`jeTbv{^;1h!>0prI1rh=9YBhn3@{xrDbQmUaos)9^ zT;JM2b{pLz@+P{?7-AD<_M%sAIjL(R5GtL^1eoRq1Q?{E9+YA-jR^JtXqAN9!Kt#mYQ?Wtx)H`3tf*icYcQ5g)iEyqAU+&DsERlb2?3c7pT|C_Vb8_p_(>ciry2MWb9rC>PubDA+)gM5}Z17M2b&7*F^)1;4fN^5y2*7RE1L5hRP@-Wfj7JyHKS zlJAi-v(Vw49ht00DV)(1=##4(NVgM$F8GmMeRODSO7Z3%7_;{SH;M0VS3MElW9Pwv z0d%^h?g53&hNWpq^pMCi<&=U6_JxITWeefz))xY1X@1%@*sO3eF2lsv_Z0|f-g~{$ zd_I{lfMEnKi?Jy>8!@-gC=_o|26&0lMH@Dp(Wgh@_*5}yhf*TPXOJ}2$ z(4*j4&J0geLmLZEEc#Rh-vES%cH6Nm(1^?0LyWL;XiZ!spy?To@#DtYOEn}!HO7Eo zqp=uK&79Pl85a|RDx4xDG-{?uj8*<8aINgmRGXWjW}$-g4U*gC0#ZFEfR&dB;-~uX z!YwDC;+iBx{)TDYo}%3M!+Wi4HCBl$RdhmENnJ%k4NVcfjLM zpRF)#LeXP=3gcUrzzpD7T@RImHilC2G&ho`$?&T2Z_M=F{%Wmj$4QPm7_zIR} zozh97}^OlXL;c!;_aj-k-$8SjZD(4;qvYJvi({FriN!w>Ys z)^jDK9WD>Zhx}li=^00jV1R5UxJK1ug_vald_;luJUOfUED!EOm2C)ZQBvD8Yb{3? zbioU2XHJ4VnK1|!PeXY(OAVKfGm1LgvTf3VWp^K>7ViCl?N}y# zR6w3{anM5gh);=Cg9|lAt!8lES=%sOPEu(UEls7^0(+jk!qA*DSS5M>+m2u3hyx&= zHB=juc~^R7OuF8(0A^0C$TO=o8-L(@0+i_wDL?lrr~$PIpe%G=E%-c3O0iBUlZVYY$lO*YQVEz@68y1oh2>ATnJoS-bb+c}(%Ej74l z@p8t_U<>)vb_K&Iemqkn zyx>@@mOrazlORr!v!1DS3+r=yL+RMd@r|uX`{FUn^c5A2^4OUl8B~{Pqm7KYu73`* z0h{J6a#O${FhJWYJFP+sc3GNuSPhjw{Ca%BEiQ!;1Q<{zSd^t>=?425Y31QM)w4Ay zEB1MITjP{*$>qd$#WvP#_fndxGG+zK$8;!0a%a0eh$TaLwbp${oHl-0ZW;oqJP)bi z$?Z8b8Z=C@Q|WG@oT;J%_2Ao^nV8b}6HLWV%E>KLhs1WWV17R9*8x@oeVINGnM&${ z1k~VHAi2~a#6_UipYPvfdPvyq!3{FmE+Z0}nJV`yoMjTG^lsp2nb4*5w5f&mGJHkmwTkdZEB|rzpJvWs&2p^$E2J~Nyhr=a zO>d;@o34t-P#1hb}1LC3qW6&sfNZ2}pFbkQz~Iy_Sj z-QN1JK**Sk4%0dAXO_HJkYy{6@nuiWmu3rxhe+OBSYoU6)F!m4&uP^+wN7&cg;2TO_v!VS=Gxs|fn2jy7(Q1_@RSu?6XMCd@Ie2^A z8FG;p+{17>ek)yLOYC`xwTav|xDBd11cZ9H4N)<*IZs#Dk5^E;*C~3A zDIMkIM`;s7)K@WGXa@5YzC>lPUljgTuuIo3_ZDm8`=>hlm4eYak9lakhBN@@m=UPJ z`;aV-!J`b)#j%cqtAbgBIx%FQK!t$LzLA`w5c>byOn_i4Lhf#dv=VSf8~&`2uZLSu z>gDWTw#cMs9SAJSVrn9=n9iqH0x+cwuB}PRp2z?JHTaBG7gEs&SWZ!Fc8Hs$Tb|Ya z(!0I7^s1*meTB&35r$*J6w$zpAV6TggTQ_fWVEWB9IV8g0ZY_X#{Yjp8p)P`6oUHH zGd?52jV6R_v^v6ia$o%W@66iYz=1gWR|)z>N6_r#KPL}&a`9paX3uT;>vUXW0oQ{R zD5s1v=;b8{$S~N=fpvmh=|FkI77Y|C2^Y`!RGW!U6{-8!TWa9@jWxcmB~e#w`K80o z7URZ>!-Agn!z5eZ-j4AoB2R}dWV^V5d(jP-j{TitcV zF26&Zp&yHhD_ncZF?N_BKQz}0Cnz)1DH3*LAeJkUCN3X`aD`5(9(!eVJBv>*b#xB~+0M4DtbaUFFmirn ztzHJGbxnE?CvZ)#ZpV{j@edn^!1Hx=<~)Q>p?}vK{Ij)YxdR@BvI`7~97%ElFppH806?`}U6RHTQlc*KTUZZoYoHMPP* zxslX29v;#zUg_9kZ^Kv7hFv1(!Yf*UIRK+3Wa{7B@imi)ZC|wB3 z2cQ)V&9E9ojoEdIvcl8sh1i8Bolc+Eix3s3gvk^_euafQP}9_!if_bY(*Z^HH9sN^ zVGiwUOiUF>SB6Dm4dY+wlh>$P$c515k9a8T*m(c$4d0(l@?d@&bl2f(?;`xz##tt} z;7BJhdwXrbT zdo20@J;PzEnZV9Wtye|cVty$fF4r@C3(Xu{wFsD5!w?fdxMMkhT|+_|-RSFSU`ndh z*FAxDj^{UG$^6Zd^yYQE_*v$cO_Z7t1@@37zRaa74UNW_yJ=Ne<^bBndPV>93bLt) zLn0ZP9N9XoQ?6$8&P|xv`ct>Dc!zY0vgDcdskW8!i4130;lMD(8rL@u_W-;_&CD?t8BECT_S>i8Tgd??5P#D{Ey z6%kopD)`WEq*SQjAQokwJe^%%S>K&a76gqY6cso$m#e|C{jv(cb_?qPWmTJw@2E?f^_p->g&1N3Poo%!@lt%3IDNpmYi?YRdgb_JK2fYtGiNt6aNjA2A_mjye?_|sL6VY2x z4v!IoaL`}{+Ro74T69W6RxH-R?f>e{>%)6h44q5ph$7!p^**NmIKO+i9Nk|1)0p|@ ztt|JJmmVf(s3!caDg*G>zn0sb{VY*U%<@R;&QV&1+{6E(I zGy4l|DBUx?IUhGOG_N(^5;tUq7*aWBgc}7jmc|#);o>7~j$7n;gmVRA^Tn0gTetr~}j)`K?)(u3sHTU+S54<69~U5bdD}=2v}jUbBb@ ztgJ+Zw>Mj<&pG37P7JKKm*0AK;cu+4*o1pm=Dez*Z$bf)Q7>|Co|ebHu79+c+3g^6Vrq+GW$6>`(7Oswaq zN!;p6roLjTAJGB4$%?}>FiRsJ)5-P{`cWf2$k9s{0I1OVi&GMJ!4?N^aWlOHea$wB zTay>8kflK3GcW9k7=-OfNgD(2EQy>5p;%?dlF~^TePHb%I!E&OYC3(Q)`~iW5z0<_ z81ppX{LXMbXxX;K&zAiz`oo&@XYr#~6qK(jm`3N=@>cu!yQg%YKuA0W;cQN^`r!YGM)b!bkR9_{_0fP&`<-nR&^y>JVP*xl8#41#dQ#P(>a}#Ul$^V^&gTp{%IP3S&#$ z_~=-W>eIAfhhLmMX#!bv4%cCLWZ-^rFZZpC^720WZ|WKPUC?s_4+$xn>ua^GA~f%) zj=B+>%(zP=t%ET03a`k@Ny_<`d0Kwu^RDNIam2mgeZzakUAgF|#^q@$BS(cAQyC9M z(FqP2!HN2>$u(I%+3l#^nzbX`qW5@Mw^qZ?N>vksi(=Wrgk;eX=-TyuBK2`W^RC?V zK4U0G4E1iH?nJpsl9_*2`g}qfMMt`m=?m!CDn~r}k%4ec@jap|mfaRLdSTCP6q6P& zdOrPp-n3-`8r?-33fIi|mL*K2?4>q?y7-?JtKzF2h00Z`MY{lYoz4eR(>th_iyBHG zDToL6mgdo7I^z{;Eh+YKLcPIM1@xq+#o4(0go7B$-EM;%ko&f>%8jTyKK?MOXfQye3@Lx(S9cen$@%&JEvH4!Rf3jbWLHYJ98r;=Fl9&T)L@zGzha9%sL zf(^u|Xn9QC20{#?Cm4N?pK5d1%W4+hykd<1;Bez)H}v*KTnj+3R*(|QVQOqIR=_e( zDZQVEU!i0NApi_E$qpDxa3aboPD)6t#u`V5!%Bnb0JJ3$#a#c%U+ov0RVf_YcYgBA zC5#ivN8KsZ33lQFGs4{|9?yb0G;NJW8dub1?1Ma0FM*yxN5c5<_;l&<#{!>0ebU;#~RE~)moN|>ahy`?BsvJQv-qH`cl!M1g ztF8krTv~+7gPV*{7e7biK$bC8w$*Uz?zn*Ma66#oNu=0jZSM;#+!Gv5IE#4gXg-) zv8{}X6C|vMNHx8?K3BCaS@`M+#la$Mb=?26ts+T#9G-W>GVcUYj*mOVK zhQ_em6>o_60Stt?QXi~{p?0odi`HxO10N~#g4=qS{q1iYIf_WB{@a40YeI_~C{T8JfNj zCenbyPX8!Djxta3yy7AV(BC2|b$M)M5%459mhP2lo$Hz?U!979QmgVEM6kfc8f3k} z#P|-$NeH>^1(DdyF#iTCf-ofyqWCMx9_R@N>lCr9SicnZmbdS$S&BWP_wK9HW30j+ zB}$%*2{e8hgB~%pftwpIy{=cGvs~qDS^uhf0U6k%PHRA{dgLS?y9-4`2N_vR?8cVS zE^IS4n|<=y){JSmHEmaBD&+<@2Voung-bu}N1WsT~#L7gk$q55syfOura0#%ZqCVXOCJ<{6 zs|uk)P`_F8@L1mf$4vZC-8 zt=NqbYv%1C32J=L9I|L<=?3Wx`@wguQ~Y6I(GJ~^yU_cLyhuhz7bQ-1=dbbXG8cUg zk-2gE3F@Bm&wZMTu#c(7B~8-gM?73#-9QdtuOqr@b=C93z+r8E+NbvJZX{2)j`WoI zYCbplvA}Gk83^n{qG3*kVfKviRV=A6S&^TnGz8ZHi=a+*R$OjFltzvwW9D2|BZ=&d z&e@Iy`wX-2+%{;AB%ijL){F7Zmw4S~R*RRVO{ttnfW&&dyYJaUFMquGZCuI)^}+6a%|p%D=VCt5-cTrq2}u^l6f@}J|HfB1fBh$ zuc?`a$_LGtPt0E7ybPi721A~FNOmH3-wYBKEJ2MT0}LKVH=frwGnQ!D)pK;8psS_S z3^PO!?SW=Ms7{Xx?%!0PUVTlv`(B>OX^-QIq(mArrgtVKS1O0Z#aWW+hJD2j5_-_9>`av;tX zS285444cajds||KBAI~7W518g{O*f7!(c65dcwoJOqs4hwC&lx*t+QK*rg@lGC zf|nRkz{rj?zYEW!C6w{xs*P^pf0y*+H2Us#bs z#{!Od^@8>$7p>ZmMSvF5;@gx;pMzoPf&^ScH7v)yw%Bx?jBhEIJa8Tz-<9^_yo15B z7l&R8i2!jNnWgg|X;@XeS++T9k2%zxVrU-07eL;cSC z9W`OV(__jnDRlu%f$`a8t5qoOX;zgui)2Zglkmfepww(j@XeZTr z1h%oh&99?_9>6sKHe8`Xy4-N|P=bL;v|NQ55ei8q@Wj`UQDfs0nZ;@m?9+W)#6c#9 z$hsPj=mYIy;a^eSmz^sKfyF0SO~>7=tcg`pxxFiDd+BY_Pu5)ZJsEB=6yxH zs^lZbq&k2=M9zVE8M_nd?x)8vp{z9- zrDN1`Wb2!5TFZWxy1%IfTqc`aI#F+$dF4vV$3AL7^<#a4nsU2Cm2MAgoy%jQk$|b1 z5q)O<$;0UKW>j0g;c822^Z!6?vNJRihl7Oli}nH3lBW~@rSUZN5;P6{Kg-K2Kb23& zGmv0u=VZ`DDuJ)i_;GD#gRDbiyScF=Rhy0VjkU&PwZT^g4u-QyA2OOtmf#WQ!sgO> z^UA?)&BUI#RVWQIm&I_<_Dx$rNbZ-9@9P?ADp<+!uhZ-H5qUZOScm$OE>?IqUNc`A ziyf4u2Uej-+1?&@12g@?xKVZDYeZ|7RWA(}c39)n+U}2GGF@|4PF7edb znGjcA3#xbouYtYRG(WcRK+Zmsi&F8m{MO20$l*0jSI#%5w+zAOlrolid3^s|Q2*ui z)!F#dCtP)kItiMo{<-Bd?;k(s59*jx%lEGyxas*Jr9sfT!wRIlbT(w?;`g;p5e6}1 z+Pmf{X+z<=qj4}klb;mCo1~X>CPm{f3LUK1gU4J$1AGNAERejsx62O7H+O9C)**pt zFg489U465z6{rgfiewdwMU}StW=Tv01z0Lc(4uN{KfCCq(N5X{mRj>g={P|4O7Ow( zwdpObYHvwG2$T91Yfn{-G)=@J#+m{xN`sB2oK`btbLjl;<1IZwM&~HSCbYCTSQ!kr z)3#@uoT1)&@$4;ESM#!RTV<_GMVE`4D#sBih9KTleZC5-C<-@Wk#NY4)o~;xDwp$s zP@V@yRWE1_kq=VgGz8o2YsYf4j@CN>42B1_j;pBKvZril6H1M-76bvuB9cU&k_!}s z1WhiH0g*qYQpX@BXbOtVRZ&5ld{8bZOox{EaCpzyIqsqHlTrLouQp>qNu&A{RO{`A zlb#wI--$-i8rj-jcD~xEjOGWO4zvw$D~v~#$nu~QA+0qD=%G+nlw^JoJ zhdef)dsZsrYYH;6ASTP#LiX$u4pwg;E29w{-?Xlp%C>hijm9`E-RwXqED~s*Kxg~y>nm3(p zDEnHBIKR4-T&ukh=8FD8Tqy;Vr@P5PrKUTqhC;}#kQEfy^V^~pt&Mr_kgl@FE@TUs z=coy*5|cOQr{zi~_`#f@%qh24scD}sS%x@Pb&BmlH-oKlh1jP#SSn4S{OVzKNBmNZH=vqfS(V^qq=FY_ul^SlaQZz3TI~hp9>))k|ka#~cZ^?x)uPE|^ zDldv--NAN!=-|aksvfukC(7CYTf)3a>Ie@7PAhI5HIvC1P!XzfzD#WCWrDjcWIlNo zNqtjFZJO9<6HdXY)#s-|U(nFH*aPFn(tkq}N2-r)R@r4$*TRN#|68s@$lb?Z8G?Y4 ze2xaC)c)1uPfH&~3o*$q;~a>Qz!mUqJrOMQv~=28o#xT1T<4^(rjFVV-GegoVW0a-l{`Ta-PsoV4NqzG)Vcvu3iacr8Z z&hsc)1h6F`0tLi$qFQ@;Y+}K8%A^@pFnSrIV|SU=F>>4YRRyv~=!>83q-H$oolq$V zMpVXkVPO`*l$xoOJ^eT zB}{^ILQ>_Mcp^`W+LFKMaWij(lR4|(DK)#TVf%m}Lv=WRUJt9WZP)%n&V8)-SDp8b zg%^FV;vlFW;vPljqq(n~6WY zt;|AdocfiO3Zk6wQMm$TDOQrSA2Imce?u1FXv|ISD~0lk_TPV$>XjN#Nr zt-cf(Nc-@6Mq~EE^Q%X4qEzW;%cC(HV0te0j`&lks$6>;9V%#6qKJgmPs@W1{AHZ2 zl6s?(?}2-T6{zWjm_QlD3pDMi-2csdVB9Fs2_PEr&DG2Af7BvCp=Z>KnNeE#Z(F-+ zAhaTEJaDCtP$m__8{#lh(Sc6ZNV%R{6$akkiXR5^<_Q^-h-1Kr1J=+=h51XAWHcw| z=+!raN3FB02mak9Wu;Nxxfa+LE9J5sLd(6kTugQuZOkDAH>WLuh$=w?l4EJT>Oei9 zV%_s5?5)mNo6?LBTJf+?g}?2>1^y(1pS-ft23)gU%P^`m>3#3T(0h5?t0ypb@q|?C zW>1`p>cs%2KEp4kIx-rEhAH65XC^^9P`XJjbDe4b$m9C-Vay*IrrO_T{m!F@REVcL z{V#dc?pX(c(sbFDWLol6hdV}Lb4muLeDhx>nC zzhxy3kQ@D^SCpitGhk@xPOnOLI;PeNtw7TZ+PAo)y-2;7zn9+ z(!WM{wwDB*9z#0Df7fBPcRT0|x&uw%ZDI3pN0~lWpTd+eMM-$k%_X*7S}jX&iCrYv zJ{xV$lysm_70VSS;;tjFcr0#nbQsot43yCDr_ou(SJ>OrPcI?(IX5=Hquc7k;ObI< zMU_Os+12t{^hMh8Kyj<_Js}zc4S8T&9JdG!wRW?k@?@f*i|jDRS!M3u$R=2n!2{ms zWzcpk>Nm{)wnb*x;yT_QFBxA?Mz>G**rH42X~QDmZy}R8e1A&D`MFxqOy-Fn%B{qPSS&KM@D+>(*-!)A3Ds@ z_#E6|$BceX(&6D_)3*@q7|j5Bh|PO7W=UxK3bnAIJzHfnv32)xGWzXda)D;Ib*^mk z)>=*W-hkDXmeCk%WNF*HF)2LBg>;@2tOJq4$Zgw6MhBnKxoz%pc7_}Su&MXkSL-Ihd;%QFV^96(5oV%xD zvq(T5&?-@+_L3pIezlOYz!-_p7$C`U3tNncYnCfY^#kqR37J@eX-<(ZsLCwG?>AF$W3p@HjL8XGva6>W2uuc7lK7shY>{0c>lKYz=hSq} zj)|Am8QxsNe2-vQc1or4cJDi0ZpVGTXUdYVON&-nAT0L4O`eTAjCI6l6<5R8)gJ@QSG?rmGQ;rVGKQQDEG6H;O$B;r55-zRQ%psi?(8JU2pN z!Rd;JpS@tl{rWEEYsxj;+>k^tmmeG~w2yR(JX<7fYuQx2pu**hql_^oqM?qV(R8gh zn*J{P9O7-*)>Kgih{1_7>dHiC14OdHn`8~96BXryHMrcr8H zm3>?S^sS+&9-dHLhTbRt9tNiE^6JexE{(ua`&lw(_`>#>*9yv)drNxSU{!Tzn#o4j z6?BRKr5jOx4_@HWQFxzpBRnY`-%p6_oa{44!yCKKU;B_e;+J&(Y=EK1gmA$%F7RWy z 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 -& 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�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 +#include +#include +#include +#include +#include +#include +#include + + +#ifdef OS_UNIX +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +typedef int SOCKET; +#define INVALID_SOCKET -1 +#define SOCKET_ERROR -1 +#ifdef OS_SOLARIS8 +#include +#include +#ifndef AF_LOCAL +#define AF_LOCAL AF_UNIX +#endif +// INADDR_NONE is undefined on Solaris < 8. Thanks to Brett Eisenberg and Tim Pease. +#ifndef INADDR_NONE +#define INADDR_NONE ((unsigned long)-1) +#endif +#endif /* OS_SOLARIS8 */ + +#ifdef _AIX +#include +#ifndef AF_LOCAL +#define AF_LOCAL AF_UNIX +#endif +#endif /* _AIX */ + +#ifdef OS_DARWIN +#include +#include +#endif /* OS_DARWIN */ + +#endif /* OS_UNIX */ + +#ifdef OS_WIN32 +// 21Sep09: windows limits select() to 64 sockets by default, we increase it to 1024 here (before including winsock2.h) +// 18Jun12: fd_setsize must be changed in the ruby binary (not in this extension). redefining it also causes segvs, see eventmachine/eventmachine#333 +//#define FD_SETSIZE 1024 + +// WIN32_LEAN_AND_MEAN excludes APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets. +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include +#include +#include +#include + +// Older versions of MinGW in the Ruby Dev Kit do not provide the getaddrinfo hint flags +#ifndef AI_ADDRCONFIG +#define AI_ADDRCONFIG 0x0400 +#endif + +#ifndef AI_NUMERICSERV +#define AI_NUMERICSERV 0x0008 +#endif + +// Use the Win32 wrapper library that Ruby owns to be able to close sockets with the close() function +#define RUBY_EXPORT +#include +#include +#endif /* OS_WIN32 */ + +#if !defined(_MSC_VER) || _MSC_VER > 1500 +#include +#endif + +#ifdef WITH_SSL +#include +#include +#endif + +#ifdef HAVE_EPOLL +#include +#endif + +#ifdef HAVE_KQUEUE +#include +#include +#endif + +#ifdef HAVE_INOTIFY +#include +#endif + +#ifdef HAVE_OLD_INOTIFY +#include +#include +static inline int inotify_init (void) { return syscall (__NR_inotify_init); } +static inline int inotify_add_watch (int fd, const char *name, __u32 mask) { return syscall (__NR_inotify_add_watch, fd, name, mask); } +static inline int inotify_rm_watch (int fd, __u32 wd) { return syscall (__NR_inotify_rm_watch, fd, wd); } +#define HAVE_INOTIFY 1 +#endif + +#ifdef HAVE_INOTIFY +#define INOTIFY_EVENT_SIZE (sizeof(struct inotify_event)) +#endif + +#ifdef HAVE_WRITEV +#include +#endif + +#if __cplusplus +extern "C" { +#endif + typedef void (*EMCallback)(const unsigned long, int, const char*, const unsigned long); +#if __cplusplus +} +#endif + +#if defined(__GNUC__) && (__GNUC__ >= 3) +#define UNUSED __attribute__ ((unused)) +#else +#define UNUSED +#endif + +#include "binder.h" +#include "em.h" +#include "ed.h" +#include "page.h" +#include "ssl.h" +#include "eventmachine.h" + +#endif // __Project__H_ diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubyeventmachine.so b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubyeventmachine.so new file mode 100755 index 0000000000000000000000000000000000000000..42336a00a021789d85a96dcc44a6718094995a3d GIT binary patch literal 896568 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%0Ao@X7m=h^6QwDGs$HvZ$Zv1g=B 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�(utKjS+y{rb5baz0j7&)mB@RYT0$~TqD{Tvfq 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

                zpOnCH*v2sQJTxMZD0MYcQX|Q~#YIaQS2HZUs^lSXkh1@&8{Op>ZsWanBTb>$0s~7n&j|5-UcV9AAOG$qq^O91h5iZH`L%7#QJJy=TZf!T zI^W<>y}MWEyN9JivY7f8ROWD4y>Dm*g-CBo65@xtI|CqVaIbYlF$?%f2}lxV#$qRA zy7G+g@9CCfU7J3Y3zscns`L@jZR8gM@5^K%VA^Auc!in6Br(}InuMlq&VLWx(!Fc~ zb~mhSa_>?;b%^6*l5x@qlHrptxq!*9Yj-b98D3DHG=a@3gEb$W1OLsg`j5kWn&2H{k(Nb`j%w(*Y$wDOySVn%t@mNz9+93bQc(0I`&9%W zaghAsokpGxeMe}51P4Bg=wDHaIwk9} z|6-W|XASw)BTa%W#3Oz*Fd#EfTzS*=-;T?W60r!M!KtW`IFu3JdqKB#h`X1cJAQ3@ zT&8|@-6RZcH~$3i_YLJ*iD^9rkiDB=quu50?%5l1$lYR#c=j=)%w2o?h4Zc^8_JQ3 zXFCQA9g%omF-?D?0$|9X3-pQ*LUl(=Oz8%xro zCAj`l%=s35HKGhQWU%A`MCI5AdjC!}wa;3}MB;+22FXL!*di~$0>}z{ApyX$YtRGuF$NGk{`7<5TA2H zl{eoEMVooY_IYe0U+l*@w0&63siTXre>DCnWT96aooG@i;?Fe76|Cl%WC{`LWh3~? zQFRyOzms7_WujMH!%WJo5s|W9vyjXo_s_sC*Y*JRQ8;HK$+{s-uUT#7fCrdj3nI2N z3CDgmumpOo9H1gckb0xC_s0m!7sTD4-b^211Rc|ZgHb6~n{ui8D7-54!I^+PDRGL9 z;0D!|DH;KrroCCn-vipsfGW_|9obHf(3Qb_1QmLz&vj23(7vA`87nHzGf*8=alQCug5zMT`h`c5?ldJtDvJ1`|c;{u}-N@pERM zioc=;FqS7H59@%Kx!0!!FqN^2_eAnU5gz(%*rSRp<~K%QIV1?esvMW+;(jiaybY7z zg4wJ`fN@OTv;uTSO@$adR5Jq(A)juvM&N^nzl1QuvQr*#=MqwHeclnt`2{aq+9!Hy zB-k-w>i3ISw&PJ_A|gk`sH)R znp1{sBdlFdepuzAw@)iKR^0cOD_KGtmKiCUvn5hgQ zdl6gq%1n>b7n_p~q&1EI?rx3x;GUE(3^5joi50C6P1mypVF&TrM}oC_JfceNah_4t z3ZF87@i?gp{qf;Y6x(`4*uNV0oPtaJzfX$;N4yF8w5a;JEyqdQ6O5EO_~h0APObUB z8lu4WeK=flbf6EKlP3dL@QU4@;1&&{ZK=H zeTsvoSsJCJRXBfFH#F?}5K;8Tf0*2%lID<_5Rlzh_8PvoilQg_@1>Rx{ca;#@CSzF z^w2;=OZ*{h;ncf+f{|D+6wb?5Ti8%9Ecx^MQuh8kAkJyDm+A|D-Yf@m673Vq_2_j( zFp-GVNrhgZ3VmCu*9v8~JsBgBv)2mMptn?B3~B-iJJgbR*E3j8ENr~ab&2uokw=8U zheWyWl_fvP9C;TZ${!z}j7-$*Xh{Si)Ov7(V`Y!~{(#U5C)D?Y#i+HSUK;EcV z3p+m|o6M(~vKQLE=uo9|gOK<}mYl43qgC`S@5xl5hCuSphmy6l))+gK-Xu0|#;ET- zCd#%{Ng=T`q90DxqGE~CRr#j_T(~ea_m5AJV6MOng4xB1#e$weEYmr`T_$ZFR`J7S zv4xwv=Y&W7ZhQuyX%mwn$~{eSeiC)1-E+xsAtZ@HPf@k`=Ue`cs5JfxnB!XnwTM^? zC|!=)7<6<6Ri~sOrLC$6(mr(Ls%L$KLG~}&2r64v(+xpVG8O4X{FT+{mf2F_=TqsD z8S{MhFzne6Z78GjFLB)o7i``=_RT0r<|0k5LE)5RgkKHzN zb_5Z5J_@|x96DPD?GrT_BAk8Z2I*#4YeD(%k*FpgaWa28JG<&uit%bvQzs!G7S)tb zI9|2E-e*!%1AhDx?JTgc#JwX?F<05yjRClzH20#b0@Lt_w}jvsnMjV&q0d>)S~aIu z;*LZzuTelNGSj-)vaNf;O)qN|81gk=JLP+rP!**bx6-HP`IUybNC}D^@0E5!#QBKC zTQ3z8Qwa(F=R;#!L@E;MC%8@JS4(9mtxbsH7S>p)c#k0_!H}`$13|BQrlJS|o*SvI&Tvs3GLx2CKeu?SiAYC6g)?qv&wz9r|g@u8R%G!gR zf4972O5k`fVGZ9!qrYrR5BSBtrtFBxchfA2HW)l|V^Zr_4Hn+(qLDCJCpd5;n&&#-=5^r@iHs<;_(N(9nYR!Bqz$NUFP zKg|N^7$I#@9GDXUve>n2k(dq)n-nQvYk6#-^Bop*JaL3O+Wq_OW@vA>Cp z{tJC^!Cuj0 zy>+J2TZGFc;zxU~3jQMeskM3y5v?wW%9kM=w66B842vXY-GBivrEey%W&-60hJDoY|5Do=EgKLBIBDN%|M-)b|d&|ERTo=vVSxvSJl ziGbXAQc>F6TSKA4T^aCA!?UfX5_3gsKkH-J6O5-zb}oLioKD1k8#UNNknm**oU$4E#v7Woq80 z-MlWems-AQqKaIWQ=9&Bwt{JSjQgR>$^M%EXjazrDWi=H_$7#+zQ->)nR@k?*O zyK7X~uzx;pzQQk^r26Q$*1#qBPNLJW+4$XrS*QYhZfrA(PSn%USv|@tvR2qrs@az8 z&7IlP-B(YLm zJDr9TEtD(SAroUnqA)rAOb^FN(6p&KeSCqzaaYn5&BcHE*P$jb+Kwgq$Y^2M_@fD^ zJO=)pso1-rk}X(~WvuM?l7xj~lw3Sfhj^njfjeQ!uRV}_->CYtOoEKq_UH_sP?~hM z%$^ugjIH6rA;9ow&IIdO1OPevGW}~Igv}$SKyw#yVQ#+Jp#8e*D`$k zaR=#q_Q*kk>p9a`s#i>N9apqhter`aIaxAgJa_s&7v3nAnP;9%WnPC=ChUT6*?IUn zX?(_!>_r`&K+_@jv|sxb;vnj2Ffwk<^~uOKZ9E1-5)2KJlsb zRw`$>B|ofsHarIT_qph~64wvv%$C2%cp2$`4;ii-B9*gFwr?JnH8Op2zi)$%d(0xL2s*?%0MJq@uJ6H2 z1G^U^X0)Dh))D!9SqVED{*X#n*!=WTmOEcpl_z_-Z>kZ74#ZV6BHj73h^Tez?a6p= zq-14_m4@y)dfa+NK1c`{SCNM)JI>Kr$r2}}H5eOcG}yB)nUVT%t@3k!>rN2BmlXBV zb{R)gbed5D39bM|03QDN42q()U^|yEPBJg>B$J9d!`w>42C1nzr9#Exhera;hPD*0 zISOcg`SG=ZM|PEZDX%!QgF6VqNvXYC^S(2b{|A~tWxpQp`G{bV&ReMzJ%P8yVu#4- zeUNAuxxIs?28lx69`mT~_g+XxU3~A6N={MCyTM0ojkoD8DcX3am7{v!TV<|YboB1Y zFGW{x!f!Uw%lqX|A!58Y@dLY<+QqicO{U5%C<9vM3BoBI|s)@`q=ko3=)n?rC$>5{5zXXR4S|YHh(HC zMWu2aJ&9f-n%3Y<46*DF^jc^VDP z`HVzYj698o=4A$=D?3l4=h>I)v&vO`r_tz4q$;v1qXBx9h3E#$PNM-TmyhVyCr_gRsuoIg8_+GBtI5vF381?<%Ry%km`u)s z+U?Q>!&z*?KKZm;^r@2b6&~nlJ&&l8OZT>faJQ%u4z}TCfLc>($)#0GP8|Z9lN*SPn3w>vYSGL(|ad5 zhvdCJc)i}&Qg}tC z*4xQ{#-X*azxmcJyj7>{Crg}#+IvLR=`cz-v$uAOsxv`5g#DzCT&-Gc*hK=~u5^oP z#q}P-G2&M%q4yAu=OenLlQV8*b)rilgM7{t%E0F)cRB_qxTjrk02TDX+(%j zEC19)_0q`2Zru+^5jo$!YPwToiCl^~C+BYRz{q7Fg>&$$U=g_-vri6ZyZ0R;awU&g z$j@Rf!Z9(A!%2==Bu;X03tcq0b4+dq;-c>s-Eg>3dBsP#FOjAucY-J*nxsc@zq2`r zvY-;tmA!dK*~OTcr^SOYOB+7SPI(*C1v?oBdDHi@Q!f1V9;I!}uS1>mbg@+-0HReN z2Z+kCUs8ofe`7@VCo^1B6zf-`*n0FEG(f~RM9bHsOD7TE2oKX^aPeXyzHyhcAWM}H z@lE=l<(6@iOT;&Yk@k$cTvULY4znH(>^C8Q~(J|K}+&`kbPjd}py8aejTUC$3X zi5g*g>8wTdevMp^4|0C!N+W87gLd@n)wz$TksGwfS&TaVHS!>&S5LPKMD{|uy)*vE ziKz5cUwZu#()SKsJHMfe{z0GW74faew3P}}&E}wczg_Isle^{u+3YguZ*e{dUwBWG z!snfwY@>v%ny(%+y7wmFU0!^v)hk#b|VL2vzi}rqP(jdw6w_$l&dK!9kYy%p4*z zdOL=MPy?_iToc*64a?Hl!8`bpQ{?bI%`d1)nExz9wP1mPo?Br`_tGY#d@9ht$EsN2ywb>^7ZKxmY-H#?ar;m_0LW zFt6xXx5yP7Gw3Z$7riGXnqDzTtBy1Yl{TTpoGXmN6tfd&6orf4KhHL$wrS%@D(344 zL5L<{B>g*N7vAb_C*_p(Td>F+do)JVjmS6HLkU2S)w|j_(_3z8yAeyTry&$e<)667 z_6s4)#!wly4YpBEM^hu}6@9$5ipqO&ZgGp`<98PIh+0unZ)Lw+)E%0d$jU z{6dnoVkDH;sF;?7yJ_h7Mkk*zEU%p-@+w7qhumef_wLqUktudr9%H=&BZ5NRu zx>qs7%Gwn>LpIlPs&Zm0c-@HUuLJm4Mm5_I+ zv|Gr*AN8Rdx5Ut-y&RkcQF`R!U#O*%g9lY4EL0+!`^mxSL$N`+{{BP`Zb#L+ExjC0 zsWDUzetCr?Gcq>x@Zeol=q|gQMcA0b^^m0*TsZ&hM?&f6UVz+KhIAbA3-x`pDh+6) ziLmm6d^8f(-YZMJAi4ZUb6R1@YU*EWEhEECsqYBa+K#8rxco{nq`XGZHAB$Y@OTLI-?Z|!ZJCX&Kk^e^*pv~&8V&9v zwBojUl%%pUv1=$OJR3D6+L6pT2x&#!_6ljZk^DgWVRSY_%6J&9IUmZ2Es z9AYn0P}n-^Kx)H+wtHM+9X=-8M$mo}_HfG^HW7(9BPcG1A#<7VCrW0{(SRmTf5!5Z z;#$4n3t>hO=XLVX>((G5>?QJ|P)MCThD=eyD_sAVS`lVLc61K$qvKD;9)22;BfsxuBBaVwC^n;3{VSiNO-!v}g5vT#>Q$qe$XzhO*Q(#xf+D=AZ zU<_xeG5CT(w+AB=k@dhTaY4}N0L>3G8JXLH-(UmGTl#Z(UiEY{m61^uCyOR zN`LMaeTh5Rk9^vQ+&ZKEaaWI+OxziMWQd!>)RJ?lSGkI~>-|W2RPtrC62H5}e&QbW zBilZrF#EI`H{9Y1aj*N4x70dm9c}%cZt(|k|MDXV)S1!V*d~s43pe#P(%n|b%qXj3n+@h2*GI5jAqq^QYMVg4oLxR4TqCK{p-Oe!(~3icOt5e3+Twz#cM*OeZp( z;J~Mvi4J^5n_yg5vrM17xUOcI_W3~X~&YaGCJrKBy*OO!ZlMIuHYmX^oTOJ z{$2(ge2Yc$%+Ib%G6!F0B|7lsT!L{u!|1~DxSnAdd^MBc7+nFJoO~V49DGNU=)gBl z3C499hZ@i5e3l$n5!afPaQ&bn$H-{!df?1wv`sZ!TgBt5^L3fdSf{gCeig{Vyy8a8Q}rlm)@Z39%6iLB6?-iu;#A> zw5&SOC5EJtLS852jtV^d`|X6rUGHdgL2O<&N@`?~^R6k?>=Y?~h8+dUfNJ*kj7uD( zeygkkiXP-KKh)v+xR!5%D>w-T{YgVyGc*DR-;0nu^Q-8R%)u8Vi4J_-lVDt*GkTyY zuFqL!OEb{Zc}g9t{1Y6Ro3q<6A9R8P>;4lR_$DL4xE^HiRT%WeZRp;w67*Z6^csNMlFx`gZ+X>++RPXa3y~U_Rym+jN=godb zK&*WQyO51do~Q96y`-WSPlois73ZWUGAF^HdohZGsS_PIQ##Rs1EUih$dUvHwpjCl zOmyg1FcKVChMwraCjtq^)y2wia&IEj368={-{q@L;|$mYM=rkNI9n>T{XzF-8fSJU zI%e~A*Fclq-Q=3vPpE{RFg!5ughSlljy*{&}88(&ey4IA=B7sIMIR4f2&rY zA$$W{J|4@&kMd9>SVVH~G5+=+bVI{tjEv*YVPF--H(BDl6{MSJzKIw)Xo#@INYvqF z;$Lp2AhA5Ysg)I)Z3X0RYP~A|f>AYPHewN3%L6GWo2GM%R>bIRBKp80%TXF$+6u`x zh1}fOjv{273Os6HIUKVmj}GyOIf_e9b^*%{r~l{@_lVJK*f%b*^dc3=y`Y*s`Oqc4 zSx>izK{e|_HNdlP>GlYyW|O~miO0Xw?LJTwh+2QhV+^b7WRIsIu{Zi}m+0iZ zP{<`Zdk=4Li7wtN)GO}l-80-Jx_MvScZu%a?Q>nChj-?5m+0wr%yx-h-sLm^?(KbX z%q9AG|A=*ozGy)@@v@=Wob8=)E!c(K>Q{WN&0dS0bjkl%q{w@?Hh!O98_mY`1Fl_i zF^#=%6C4Xza!@gD9Ex+f`~iGyiks-bzW51_r7VN};1eC#C7y~5YryJD@&-gck0Zyj z(nMw_IItCMf&&}aCOU9v0JS2M*=gC4bd{aCWx`Hh364fwDP&{CE%>R@bY+KR4a=F6 zt{XVmXExDMv@YnM8U2Piv0PDNHE5z^@NZ<)5;m$08wGZP;}k#P;1Zy*MJ<(v61WcI zrtmqJ1Ks3G+?-*nSzk-8CBESnsVf(c>)bEECa=E1cewNw;3gRi91fGsqb_u#%N(R!*7@Y&$p!4lHg>bkw7I(T8dC1V^Fl1Y-cr4ZT)Vthxxv9i2FV@mj@o&lW0M(}-NJPm}CM22do-Z7mw<_~J5lnJtk?r+E-~bGy0`%uvr|+xKZFI# z=&D_$%dblFuPHPmRI==pl?2oO4&%zScZuMqI$eS3%)dhr3pIQrzlC(QY$RQuxRYd= zt|SpAXMBsB3i{1tx|vL=)(1Cy?sc+E7eqnE{;mU^L{I@psH?@vJ4MdQoJKhFB$MxHXwb*YH#Br~<^eih zKF$Xk){U2$vxDYEH;ImxkMMQkJ!CpM39c}$FL6dcvYPF|t?)tX6sb|?(Nm9~eh){} zzOTz*jF;cG2dziBvkPdBW{NyL%O*UKfhwJgf@AzYyb@f}b&5@@K&5S`%!4B1HNpCJajW9^D0u(-O4;#E4aJEW;o20}p6V za6B;@D7XQ`&pGtC6$E!8MqdT@Ww<7%{CM(iZ5%PCD|kA?Eg8l>huTVFd=U`ZQks+G zeyBJ`+#dr}1jt|)dhIuy;r@py0}AD;gK+mtZ_piy&in_W$Hw$NY+LHXw|PnOhZ>}y zFjkl-1*KRpj*~D?6v1_f(Nw`r8E(!Qfb-C_?!*|R;6V(J=OnCx(36NUCopu9#0K`- zN}|73$k!ITzp>bTmKB~+cI%#mPyMtz1ie-YK*4ppR? zSfc|;5<75cIS7b-ro8@Hpz3#QgRB7mC#aPYY?VSV-Oq@sLsb$S`pjYj#>)g01~AKN z0|QACpTKJ$6R=aM-kC!6Hcs(^$h4CL-B5xzQV4!^7g4=LQUAwk1BQMC90ic^xy1$s zk|aLg(((~d_PO$h=YguLvJ>MBX{|0n9hG3m6oNQLI$7dWQf0C`j6XYwS!BNTt$NwtrbE2 zl?qU1lGH4QK(o29M;0Z~2?Wkmq8Iga=>}v4aW@1a$r9VQYv2B9*_+Kwmv7me!)(Mj zJjYF9{HDVH#_$`4@p-HEmKd4-GGS1vYRrx=&wThG(}!;>ljO)j6d;Qd(u_g`d4Zn!A+7Sd+@h%fG5eB1?i@|wu@EZ z(>T763pFGS-w=68MRSQ|Dzk^qhll=3jOPk|&Tt>jf`|qLJN_0T!`~(hO86o;^sCYY z7bHe81s7v@5xa{Ga1CNKRB%IvlNi1MSLjTPehTi#@It+=N8f5ZF=qUoBI$6NleV0= z>lLz|10Le~28W1h`-yQv!GrWh6I&Z-SBU#aA)xe5w0#2aW#GfM2FVip3TT;MnvGM$ zL6h!BH18$gJIC#RyARO*6Ikk{wF^iHP72ZDiJPDhP^x%!dt#GljnFAo|)%(|)59gOAL$ zC&YcNVt&mscR4F?G@q9Cl@JAAnJ_4$Hn!{M0Q$DDERL?#;s~wrDn;t!SX!+qaoYzX z$r48@Xi2XurzV)C7EIH~i)csY5#wVO{$qw?INNa|infCorxbij8JW9}cAjN%9*Uu_ zH7ftR#C@UyG|-!cD!mDLM_kuy69FZBA8^1~=-7r4qtNRV0dX9PR))9@{K#udmN#WB zI1I(tiJM&<6`_rIZ8;6XeDV=2+KJ2A6Erh3h_P6yUCi*u3}b&1Z8I^BzP9>JKtFeO zUyT0FZ)#0-rsn=9^%E$PB~Gr;%2?s?vRr4o$TeK2AN8~uGzsG%3vHlP zSh=VXYOW;|(;kSMWlQ!)`$vq~|CmP4X7~}q8HW+Ph8PF_u@=2avhDj0k!ES|)&czJ z*eqQ;O(NHo7={X->#V9S4=0vmsPG3d9B-^c1-&5U7znQLwPR7N8`N?TqmmK@HC`sy zb%~%}m>SW81@)@V!TOz1VLQTwTM&1Y3JXd#pkv=y8qj18o$tQku!h&-7*lNtLEDrH zP-X+lN0|El;G&2_rnO@Po>!u=dhaH>4MsgGX2&jDoZhKxj}G=r0dcdp*_&#x)2L`0nC_+dVqWdd^oAC)UUmhXc?X|JQ zU!X9Z^84#ft~9Z4tG1D#BT5jIS*PFrllor0fm4vE#_^|d_6egE7VA78s0VRBw+2dQF7MMnig$m|cfJ!zhzO}?X8W5RbS8x9gNXZgA2x-p@qp5A& z{Y*VT#BQ{W<9N;{Vt04dwoj0|$gni^HK&v!Oj=C~s9G~pHKP?Jyn(dZrz=mh`D{N^ zd78~U0hlB&;fdOj^q_zc0a~Llyc$RNbR~n~6(OHe4Wun2?mC5l62A7_4qia5xQ`ge z72Ht|SQh~=6ZfaUfYc2f3;!qjwL)U`tj9SHn#)F6Z!?j;Py9*jKe!=T;@ASMna!WX zCXFPqfo>Gw>NQ!QnH5Co9p&>;^nzg&-rl)WW3qb(0g1?zShcjUYH1m= z*`lR5j66b&(^`rg#i6;{HR8Tg2q<$BCMZa%Nf>7k6yh9R-v;xNByrlYmXn}zL8b!q z26+y0nmz}aSK@^erPWX95H%vX@v>D=u*iCaPd7@I4Hh8VEqtTLkYNnGK1li-rd)d3 z;;?INHUaBZr0We!N$l6nY$?vL_GxTnR&-;I5cjTL#%HJ$c`Iy5t#fMm}%?ph& z5up|=MQE_80PQT<7zG;(1}hu)=r$(HX_zXh9BlEJrurPpIsh$$EgsWUZ*JcvVE;b? z76)6aT$R_gT3GVhyy3h?0CQTcKGbg}#+Sh5|!}@m*PnOu8Tib2-*RUpy8WtOGn>8$N&+WtZ*;Jntpg^Zc@QTuJ zOrv0TYwaF!Un@lKl31+6KEImFLG`~w)g#aR*7-N~O_ta>S8L|5)c+2@b=VWvw2pVq z^<`n}7FR+=K!SsnexsX&jc2v-#9gG20x6qbY{99mBm65Rv(sXof6vWiiA^oF=N9Xp zTdc!&m8NyPsiiNBtt-|N^B+zrGB{I|tQY9b6eeyQ{c^v`7R(zp`MWh9@P)4xH_0VO zk#K!tv{Gt}F>w+R&m_*zzYhS}mM*o&q$r5`?X>l%pGMY4!5xYg1$;f+3 z`SNixX5!~3!B(ymjnQm=e&Qy%QZew6Gz`p+H%&81WL;`v(fV`DkcX&)9lEMD^(y`39`KMT+nATtGhC7WA{H0~6ArEwE6{v&Qdcfi9WOPsH$RUxkb2u0ip zA5J<+mN;Bd8w%JwKT#h9=WV6a7zFFIewt#k#P(O(B7`vav>Gqh{frH-c#&_i#A%G$ zF$kE)EE*~YSX44ihBrr7=Mo7&REC@H^!tdQmE569miVMg%jJy{ zplgzh_TOOkC=+%Jq#!-%m;2;q{o$-#Hu1YlgnXylbfu$7du&Eajz%@l+j$4m)F>meQ3*1@JvBJsCq)& z*C|z9z|@~BREmtDR#k+AB9eT>jaCS{foNA|5>k=4wG{$N_}1z3vpaPe&@Ui}>aA?4Xz8t(H{4r60P{^r7ibwzj9sZ|X<^mU!m6cZ$S#YP9reh_ zZ;0``(gMot^E^%K@ALe{!6w2hrka;zxd2a@(QE0EuhO4#Cg(o^<-MsmSs4ko>0dM9 zMGc72&1?0QN!5uF7|Grgjm5bMgv=-I<^W`pjOrgG9KN8(dSfw_ z#N>Vwxt&4`HKXIa17ef7YBX*rj1QIiA0(eCT`FM;1l{(B(Qhcsz8MrIKgm}}XLWNu z0YY2bz!tt!{A%-0jCWe4Q{$bR#yF@o-s7!GXKCg2DANs=c-x~#sctU!ap4AIrD<~3 z-*oe##Ob-DXebK7J5u!Djzu+eC(C($-R2GJPBwJ!?Ls$GC6@S+ZXCR;pxEB1ghZjIP?Nd1OmH*Yxh9i}=Q!>i3sCBpo=L?SO%OqSU0Q9EbK z1?4p6T<+zh(Hh8&$Gd+{nD)$Sc__ZdA)=xDie#)@u0Ve?1A<(B05xaU=7FbvLwG+^Ct& za3h>ytabBQa!a|9G5W_T#o8DDTkMI}*b}X>>o=qhCmL&4Q;9IY9$}KiZt2=DB=O9r z>R2CK2w89sw(exbB0Ud^<_0;)Kjoe&nz62 ztc}Ph{bwQT>eKx=BBNOwr~7eCMzaz(YI1B4ugxXy7NyXf?Cc}#iT*9&DHmb)MZeuU zO`1C9JG)z6UOvM!{6gS6rPG|c>?6{wHKr@Kp_3k(Ns8i`0xQSO&#B&hCe2Bxp}2vJ z@D1RWK0U_EHHpzk1#HA{SsopK*NWgS#OSYJV{|nS$Qa^INr@z5j$koyKUIh^M{s5> zAv=hBP$5V3srcG>H*tly_cIw|HGIcojMa$cdB{fHL|PZsm+lm#5F#@Th%%eHjCEJx zK(Y}xe@euGSg;pwZH3&=lw#y@9HCnf-cQL~d~6wy{jD!CY74Q^B(fkiu}9JnyAQE7 zByu1%v1nb}3^_HwJ}Np#Qg@YPSju^b<9HkMoN#9rtF{1{W+g}_3*j+J29#>YOJ?CN z1ZGU8>MJ9nDL`%Fb_h^vG}+#u%>`KRu;OSxNF-T__4`}B)cQ4<)vo65L1io|SVD|7 zO0=QgRb5|(ke$Rm9f0U@Wf*SDU5drdZ^Ha1iQHFWgY*|51M!;Y9dXlUHT(o$LFpo3 zd3;%6$0c$RUuJ$W^d)95B8Xc&tEsD$?hW4qsY=|sDUo7`r44cWDtDkJqyI`3hww6Q=rY81C8e%ITc7{amr6v}wYnvgfSJeIFZ<0!rO*Mxp{bV#= zY~>(4Hk(yjfJ|sz%!Cr&Ldk$qev*)lCllc(4cSjh)S>|Wi90z!sq&L9mGqjZF^MfC zku6FL>rwQ|C&Nr_3+sKKXZx0*=lc~g&MH~-d@&SwA0t8HzEB7jy%^s1`wLbwoW1QV zmd`k|lRIR$MyPzMW_`A6JC@PJkVu>oYp2&r7q=2phqz4@f>|s=7U30LZ{m*1Zg?9$ z;L=6F@{G+6J4Ryl<2U?74KW)vpSYhWUBy!x>uyFQ8A+sQYGRM1AyyjN%9BWw)Wo87Z8PMx=DN3aA*m5c^0Sol zkD0MZ<0HaX1ZWG8S&LVin+g9iKo230&;Xqv?k$C&0a9ZWu!S$4UGNdle-p!#(>l4U zd=_lsE6%bjI+AQSF$(9jT7@FnjgWH0ZIm;W7|Y8>IsGv{?11)<7#{{`QR5kROIEqA z1I~XTk!>l&jPVS_)Of}S69WSell;BZ!W0O?w7VM5ywx)f2Loy^NIpxLwPG}vAK|^U zx%>zc=D@lXYL_C!Xc!h)bdBDDIW*B$NMH7fe$WSDMn4E2=bGd84_HcH6!kII z>P;cWe5HOq!y1ps2-eKkYQ3B4WaK;+J76@`b%rb80Aj$G30Flcw z)O~;!bb_p`FGom6Q0`o&HY`W*;MTMhXUl3OiP1vISXLq=VI_i@el0A)K13_tix{(V zSq)X`hgMvr-z*Lo&k2uH%(PF5aUz$sYBA%(TX{3S6C6xmOmqgt_!==}c%W+-@tLnr zI6lY--)&y2G!FUIH2i-WV(zdGF?U#pm^;kQ{!yq~94`N}k~3B%XRJ!jm`alIn(tb; zF#*csgur!4;jR5Ej7%CT!rK@cUc!vX-2X*GPm6}077e{XPnF409uYp!7~@1OBW1)#@KzPk%qd&ZILHnIxtBV z8c0Z2;to)Vv3Bx0UezTLcdA0Bvfg%V?l@|8wU3FhQNbDXPGCYQ%>NSiYlU$4aDwbU zONh``+GXND2rwj|E%^c_y&^nqUaLtKnF;b}A0g7W*TPAnWL~Rz0aCB1uacpiR)Zv3 z=e1fHAa$`EOZ6g&q`X#(EmBjYuZ&xGdSN17+n86HpE32)Y5t6<*A}8hSBP}Qtn(DP zq&0;Z!C@Zw!;G+m8L@?F{`6@CfBH0Aj!mRcowaoNREW;{Csr)g`KkV$8BX@p!bzrZ zKGSAU!sq60G0qRwDiNc#g3XtP7^?bD45d03qNDTqhpHxxp{n&o;a})b&mnMmK5H{W zNNY4epAq*$0Akc(?>MNpQ;gSdGMq)fw}!coW$_H^CeB6dVKU7vX_YS-hg z$y!FCw_KV;>ld&(ywN>(*uWOP8h4RKyOtru#5l}_5PNn3Gz3j!c|L@QVq8@kQxXNt zR?R(R0jt1K&%P!FF#Eq3HRDAN-NX#tL=UaU>ki|c*Y&A#y5X%Hl4L9f0e2|eD`l%? z5b*1(0{%fj7p#I0Eht6Sf+=d7vO_WcBX046DJn1=|E*OeZe4|d629ErcH@w7tphPe zDcF4Jj}qcPRyw1+5M+*!B09n-A^5PunDUCSl#mh;c*2*Yjr%sq@)deijUp^1gnLwp z{LOWeybz0Re+WJqVU!T?|7GCS;2ZfZCB(ep5^^%aQbNu|{HGG4KNO7e!JH&n6wh>< z$X5|&lDvwrl#qA)C^t|-26K+Bk0e_&6p|voP|7sq5(2g=A&5?u5Iych){+%-6fH@# zlhRU5Z=QZLzW*ft7=_Kym%=qis2RjvTgci(sB#6i@U6ImlzqtMstxs6weN`iTcMQY z3SWl%d$4A?`i)g=Dug2S2Z~g|$dpA20aGthK zOXNKUl4J;Jk^PDLO<|(|fd4N$t_G(cX(<5a4HtlK3R?=m*~0&+0O+>!I`YPaQ2;u? z^gBepR!QoJgTROY8?Be8<>yoWiS} zCG-as@CT0J0FQ`p*01)67_OpfPTA63@t^LSEN??Js;J-POd2j{T{$!ZqpYd~)>S%< z8G>g(+7LG>08uUnwsJY1EaCB2f+J@qemzPYZ8gd4D{8nLK2Fs2fTdjSa8aI%r7I8o z5_#u}B$=lZj=dvpg($=2!2g#WSA(NkSX|D$VV6Tl<#JV{{*%k;wj*xeF+8qJK-BF> zetGIq8xtR!?3lzbV%uV0?vHJoeHF*n@`ezO9d_)X9}vMPq|Fy3ayH6LT2RWTFGe9r zJox-3J&z+wV+Q6I;%18u91G(M62~RYG-N1lATv$&YHJgYD_TdDF-h`J4>$#(WtA2l ztR%??_>ia;aoYzVy2|u(G_Zwl9NSVCZ#D)IW3-aR`b$Cv^&(_CakmF((UU9vLfa?Z zO)KeUJFA?*Dkqa?Xvc~1n+gcZEOC#c{Uz=>2WzB0*w(+d-jA3aF;axbq+n&DjlSGtFv+$b;5OEF;EvaJ;~(Sd+_~#NES|HRq@3fs{Q%jH@vzQWm==%3p|^B{tCJ4?1D@ zL}l`Ri^&lr+9;1{GVa*q{4`LBg~`KvV*ZoJno6fj|IT4FyrCI!`^2V_nsqg>&D5-i znai=nn5Ja;)fv?+m|+=B`MWoGJEvHnaw$qI9;RjjB+=SXbj@B51PYtmlF!jEcs zn4_=ls-2&2fKa6qbOB?@UadVMV=fL+q?oRMATji@G;3 z$WAt}b^lCsVbZXzRG-7(V`goDg~FLqf^Z2tLOon z=mAw<1zgov;oZpQ%Jm=HgnU^HPk-ixQ)sQ7keVb19dMX8WEyse(;UU6$WYvT7+!oe zkAq^nxLZ9WL`AUB|K!rrBwCq%^CbexrX-9#Z(jUOE^|Z|&Y*-lK`;FlNbGr2rk)fF zWd=iPk(5ofXQaT;aBRF=gd146(y)d?zfl_clZM4CZAu<0hJNK;C2@`Q%rU^poOR+)@#O|>gw&-d^ z_aDpUMzBS?<|ej*4*J*7HZTkQYh)W3LH}CV22v;Y6Nxo=TMYU0Dw-)2O|dd~1T3~& zULRC3qRKQtI#(hp&;Mu-E3jOLfImxQ)r z1RB~_$pUnYxE zsBonN!mX8U>E1T0@?wc~qAv^u?FkCG`>+%Oq$7cPjX(uK2~&TO?6pStCJB2XSwjW2 zk_+S@V&-oQ!LCHr5R)VP2Ocf;RhsH?kh6D5< zJIur$sk_%G!R|GLp!M<*`Fv+X&~4^*Au=iWcbpgjjW0>0coP=cAhDWO81ha-KIGvC zr6G8eux1uawLxOnD^p(i+v>V3kNvKev3wisJB27VvOz%u0&9(+Pgk)$x-Ds% zN;U<%a+Mhn=%yhz*Rg8s%~i4~C^u0p5MqPONo1T6z+ncsb(I5PhprJEpcGNd5nz)n zX$a4@(S;n+s17(4Kj2i9F_h3F4Y5Vb^%}#ed8^oj4+6ZHQhpT?KXCR*4S^_3Y|;FH=c3RB{!S>|(ebddLWS(Xka%KsXNm`&79mV3T(-+`>9s3O`lC zDIhrb9cFx{gkODt_sW|aH@L=ob!(3`whdUC!xEiUqTN3oe;extE=fKLQkxlmGp9=h z6m}&t{8$b}wle%=@5~6TCV!g9=EL>B+M~LukjmcyWlQ>#-IvHJONm6*1X8tmsy3wh za1?%ysG~{)Dx*S$D^#dN`PlgpW>3cd3C<7Y1#8?cAVET5YycgAK|m2>CGVz~cAKecv8^fZPU?hFjGDs*DT9(EM^ zj`(`a*vop3>}$9)vk=H~$H&I3<9@|nsTJKscUI<(K$ieJdf`k&cOnPl>rU7!p_f3A zsH)sUC|esL=piI>*PuXWgrIxyE~KQ3a7kj~s`8G$Wo>d1dZWxH?hKS4DZMixBOHMl zoyidh?m~`0WEbq1QA{`jHlTC_1P&bmft#Y?3hOxO2ngJ}3RlC16OMp8{>lX53DlAr zjB4l!Jg!5Yz|t<{3H;NAJb^d6k|$tADNkT>SMme|1U&(S2v6WW38_?#djd!5kSB1i zD|rH;-N+N@+6_H{xzRRHpsnx(tS*2z+HTF23y|E6T!0JRxX3c@0<@72F$~#0imprD z|DWBc`_JEYc5Pkry43yG?oQqRuI{S)?=({L7i``CmF{NuKRnv5I_TEMy43v} zQPlkxi&EYHC<(|&fV3-hsrzpjMcw}Z1bErdXtVpb7y&GE+4swTYqX4Nd^kEcP(2yQvLEq{@7F0)(1r?}p zg$k7@9~(1Lv!H_Xo>Ag*ZjeXb8s&h-7#4WY3(vNzQl`h{4 zttN^HD{TW^O5#>pSZINnqG1Z_m=j6dLJR9GFg0u#t98b9e?p>Tt7Dr#U!U6i=w8(3 zuRzKWru?iFPC? zB4~R_J`Eph{coJRX?rjB;YJ#*dKu012CNen{qH_x(L44<2`{5}Z!x3$q#1R2O8T>; z?`RJV^|xL_GAiTyl2Osclu%1m@23}FoW@ow46o8!5(Wbtm zO)LYxE79hF??Dr7!1uh78u0x{6`(1z1=RR`GmkRwTi6r;R@p~c2Ylh9%%^DB)bbQn zMww4Bq^b54r5mfKs4eB@_di$k!!sg-^IQRZ;+h^ZcO=36jVEl-}z7F#fXSTJ6; z(~_eGr(HdG)-FF(HN2Ue_c;SYRy-IiRRYG#dc; zQeMiVp7jv`3pKaKj(&lMUBUWE$xp;>wvc2HjO0* zqQ>!3@_aKhV24`p_^w!)*H3Ag3L0+Pv~&k82icB~GaK&x4A1mhG7ty+A4ePRBMi@d zcEv{~vo%uFYIyFio6DC{RmL?jMqz&`cvjbw(e@D{TfthuL$|Qr{J=mQZT>AKdp9?0 zj4_FgYXqQbAm6WrzJ@N^@N^5t%X03z2cNr^lgYh;zfkM8wEo6+i!5Q@^a{=2Y z()uXDgK*}hPj5UU4HuoPAB69vV$LjvJEsfZON9^7?JbR~@ua#C{B$axt4$>OJnxp| zP9^-E^&z@!NYpBrGlL7<=@ux2oKR>z!;C|$Is87vI<`RlKa?XK-vw)c>*s zLUBpqDGtTV!^{KsV}lu_azSdzV7xPabx$gWp^6H@;N@k5Aj;C<-<=G*4doO?Txh3${OW|+8P<;BExHMEMPDRCc z1IzHYgX=+)*z4l>e5-V!b1(|QFkh*b`sL1K;;$k7*-#nc@v;;tze!FM zxMD;chFkeIu8C63a#l$Sk|~CYkEh6`$;;hU#h(Vnk+HS4;$Itz75(FkP|=?=%z9@S zGmfz568esWuEy;nUNZbZYs4^&6=G9iys4ao-@94fu>$Zg(rWjM$*Ui>aCAOs|3lz@ zp?&yb*Fw0ww>bPB(b~_F*=0d^SuO}%5oB31yORHiXY*LmOVIi^@SpS8>uc(V`sDXF zv?wz`PqOV6a-GZx&xpE8>nRUM?qYaMVuU0S%;+_q2L(^tT3_S+VQ4=F^%;YQC~`ac z5gC-C{4Et5j&E(i$Iw~v&)g34-^2UBg%U12i>TEIY(n_KUITeQ1J@~*bXDW?bZa5w zj}e%{5B8dUj7=$5YrAmHcy}VJ*qQ|KZKB|MhM9+1E%?3iV{EdGA$9L#EaxQ>URRd$ zVb;F2h&df*z44Wg#3qQ_a*!m=R(rMvJ!^wi7q{kE%zDD#px?Wlb>rBt9sJla5}%fFu^rXMwSrq2Ljw3ms;wAaCg?e6RSSX}NKlQTW_*l}~cwC#DDa zU9aR5fX!@)KR^|D#2r#3k>LldFSs!7G3F3{3?`>CWE^Ep;4cIJ-6N3TzXvsotzK&s#-O#vx_q}1dAsafsp0jUe4DIoQ9vLItEg8cP8w0l|QjfQ0D~3P>#;O983Wu@sOB z8D|MdZ5gKrq{_6XfD~3J5s=zEj?v7)zY>s&TplI2r(o3iaTJVtJdT1J%f zGUNS*DB8=*Dy;w7b+RLoUOjtc%Z>Ip=;*Lb^kMx;+F(hn4AhpZ(1K#|T8L!_(4 z5NRDnq#r2K0u?GzKGt6+oy@2;RDE-NCC&18Y}+{5*iJUK z?QCpwV{Ndpt&MGNYRZl?sK2}-rpbR)6><})iraz-P6-uRc-fG_P)OaRUf8{ z$pYXB02-g|43bd^eBT^eYPi0S-WrpKS!IPY;9fuK#)yLSH>NWRh=osa@^fn87YNkR z6xTjq+@;jVftunBf-sx&$=;X;eg#omTX)YZpDzdij~NAW>)yZ zZoxf?oxF30aIvH=?9PsF*!VwT=>sF zww@+;a8I@7R)cSS%$=(*Rz95#I^G%e;aoeg!5(LwK4&Pv?A8q!CE#M+z)=5239pmK zrojGSv#SsWv1M(};A95}yNHC>IXcc@%L$N+m0odWwjQzL(AOihXnX$Nj%VG{n)!xe zj7xvT@QhQ=HGKiie<{ppndB`+jqY>CNB!L&ctdo4dBM5^v*P zklIz;&lVYw6C)?LTUDr!gfv&X^yy)_sX{o=d~>^3q!kZt83>PS#+jC(i&Ngu6p)O+6u36um{0s(o)8yew8^+|H8j2oh1hN24P342xGOO|f84@`NQ6>j)D3 z&lhZwW|yw&fgHQN<=l3Sx88c}52hoCNV+L%k z8RM6(5b{Sp2{VJMHaFyXmEi#zgC{H*e<{A#uYDoL6L#(%$kyig%p+&PNglFhcSp57 z@7{}jM%gP6?>#G65xtN)wPxs3o4@@mcLLY)!tjfJ7$nG&uP4QOPt0iC?VjJaO67#My67r0)p9O>^*#uhW#acx zlwQCWE|km0)ch=^5xiIz6ZB<^d+P$jtt=m8A>i51wyA`f5ci#m{7Wx==aH@H<8Zw5 z(BKuLOmxyV!vb+DopBwTYuOmhTnKLdi*{QD`D|L~=T6jbtDn}=qVVmq#QRLr=K{+QfW$8MB<1wogq)jneJaEJ!K}< zWhU+JBgVNoy0tlMTAMwWUD?~(pCit#a6RVvetF*6da!Q_S|4-NwC~x0f2732!8jz& z?R{uSd3=RbB#Bcb(F&Pd_HgO&fUW{2Z|fADc{V9Gjaijndr4L6i~wcd<;?zjx+OwF)r$1q@8 z34@tJ$d|HH2NvL{1qwS$ijktr4a}w-D(i5>;4pD))**2%_= zuu+c5S>Iy#7U@W4iZTC8AAGdqd`l!l22uaa9u#P2kTETRD~+RRc*iC`JzBX9UfoN` z>F_D_6<-wv%5&}~n1%ws$bk-f&^R;oyEvE3%QyzN1kDcaiR6;K*_0eNcq|tIn|0## z+Z(Fe9W2p2HdJSvqURwdaC}^Xo}G{%9V$}bzq?yx{`T0Ss#%ECUI6W*P@C=^<_Ia zZlnrTU7|vqK!03Wf`RFX_#5gjxg(B!dPWK^rMVU1`?qiY#JP9fgb|#qyd&D!Be;-0 zkVIxt@T-n0yZVK|!?OFWExLvI*?l2cI-~nAE*xIzkfIJ()0wiLee_{Dlmb>mmLZ=S zE|(3df~t>k4})++mffy+=!jl~*1XaMH$Ho(yK(tptU0#I@fInQu&2Ot*1{C$I+!jV zZ+p{6qg}w3?p{A~(Y~{v^%7~I^^x)V6TJE$3F9wGq$^%Eh;nG{?_ggntjQ|voZi!9 zZ!Mm)n`;eXPaD1avG(ybQHLy)UY8ze#a?eyK1Mbl-Uleu6kIVegfPjAF(QZqz5O0k zkhBQty1!^?2%uy}y~mPK(26#Qx@+~*%@U>7+S+&)nog#v(VWQT0$!UkF&h*MlqBuv zqhyUJX@uYSkoNDs26gIU>PH5ryfKRR(Kq+2Yqc%S;BQe4^X#i7;5<2Cp1NC?yWhex zxY%H&PdmiGcDKaEVDFenJ(Z^+xFK{oSdzL;Av_d-tkJ_kSunSQ%IzYSNQ0>Z*3hj} z+P`pJi~=`aHT*uYtYKIygC(DlTaOH0Q3SS`5~idWqq5U)!Rc$%V6fbOGJtEE9Ib&V zC*m+GcbG&_e1GgHLFva14mia%BQnyE*phDY^3Ij{w$ESc@+8gqT0$O%Nf)TNhF1X| zVsv1rj^*oD2cuCq_f7S9z};=FI9WAF;ws5b3gH15E-~y(F&!7tJYsDare)L?QAbuc zl2h`Vsw6GnOIz0L>@16pKGV{OaikislAmNUA(fd-lb9HpOL_*(Cw(6(NZn8XfZ(_Kntt zX1B>{)TmAa_;yY3lkBfQhVMj0tlpG65tOlqFztbnK3U22u$326@(5Yjt_`T7z@!=4 z5?4n(MON`C_bnK3Z5KqFv#fEecVo*M5lq|OtVU;$AgUz7Y!Gx}cIre(*?rOwY#h95 zHAiQAc@$nNQy~sKe)yG|ia^+6ZhU@MZ8G(djo6Ya#?W^Ph-p;gThJJbrQyed4e5%A zN$e-44ii8s^FqLU%SsIOPAP92pWmm2Pl_uaLnwV6yB1@7ov48|r$Na2&}*iGNFY`7 z;x1YcE}L@l2J>F?`}7HklsJsir!4F1q?4!rCkdj`_lC!Io^20e>6ZK*kG9|Q)SRTo z&|Tbixo#fZNd~S@$(8{AS*mN054vJ#s-FQw-%KW;QOK7}Ad|L!Vd@ysU!Ek(IIiG9 zW$mN*VV(WPa;#iBJT{uU)Yb7{a9p*S{k#)^Tt&!vlOL(5;sx5d2KjJO-WlI;YE^B4AAcC>5xd6^EZxA77?odc>ZG@EkfU;)If>5E zfiuoxJ`#^USK@<6cVILuSq1$}-OUMd z$vGrw^Z%AXgfHQevu%}E5P@2V+;VZm9sN0Wd~!rP+8U!OroQ!z)VV^>rH$LS{p81) z2i`3>%V}Xd?H46BD4w_LfgIq-7__-ZtQmz}7rBMaq;rqoRnsPF)~dJ~fsMzvgJ#Ys z9Jr5t&yW7OlRYxK=@q$K79BVU(M63YS!16$FtyiFM|NR39?yiJ^hI_9Bb}|88ljXG+^wdo zo9{^bdY6$$gq_c`e(=zhAP&95q|q-Jov;)HU(az%l2;7)mR1Cn@>x+_fq5`wgB4?% z%hyC*E%5+Sc_$FO8hh4dL6W3sWCB5_H(+T{n&$2Ycv3=|pl;X;Ul~b08mW;7HcYD; zmxf04%^>U!{8FLlP(A@1ZuLw}+N2{hzl?o4SUH)#q$JkagO6FN8mq(yN(DSk!&2_SM>7~ERXRqb7&H&c52_?h#ZQA$z+?z^s1X89rO z;C2eRYkGXav3J2x)pdYmU%wT+R+@Zh=7$9z?w}^#7uK356ig|?q?cUY$_l+(lf@T_#$(wPh zcQ{T9-S#l*q}4IfxWKE2Q#tQz#)7Nba6do#{Vm(>=RQjN%>O)wY{h~s?lh>hLaehA?g)gPe zxMqHN10MNyWGwL!wfoU>r6FiUdgoMcL#oH&n6=(B-$|Ed@Jj$yf|qtc?W)1jVFn|d zEZ9DmE03XQCzJ}X6N-Jf{Kged=3Dc9Cv^9xBEd8%?e5+nhVSCW`(v$hEf->~&7KT!C@L*SuIqk1`L31fR_xF-^|F*l?@g&AKpx##-gk7~ z8-*4SY=*EM4pUYIeH%4Q)9>qgO&aT4vSUB;glo+!s9Gx%0NRzlr`et>EZ7XZ2iXtc zjoj(3N^jC5Bwt-UH*2*WCICa-)Mk#b3Eca#OvIpm`pKV7?B&+#<7=Z1%-aSgW)f$R zGE1ED91Jl~%)V;65_8tyS^ADc)lI~}j$6WD%lE82Q?Kc(9xuZNfQfK55JaK>LY-uP3I zS|%38UJkRDf|^$T#Z37M>*GgNtGe7B?g<%L`v=Qs)#G=(M&Ip5e7)Di*hY z_pQ{h9viQf;2W5Y@TVS^MO$}~{z8J#4doaad&vg`h=4%J>h*s%Q&$K@pCbWpn*V1r zmF&k?mi&cCb)RXQF$gU~>Ne+}*^miQ*r^N8?bIOLmyAr6cOAq8EZ5B7AT+rxZc&F80Q}@(|s4I`16dAEUnT zrSx42fHwO?X9ELSLT;~N5+zPbkkCIW5D0Bo%FmD3{EF_pEFXU3j7=B~R4Z{AlE1hX zI?4X=xUH{Govk%WY_!3BP7K_qwqV&Ed{mxnnC$#gyH?}zzagp99+XQ2HcH- zbjutL<`N1T)BWNI!CU#Qnu{qf&Toqe^sMIFx9@J~H6M2G z=WURo^_~#2Vg_S5Fi8Dc9oz)K{Hp701raQM)KkRYD^aA4DYs!*x?IELi4xNJWx3g%_T~1pjpW101Za%0>RpFUV4^APB4w2B86FGh!?WYiq}T z&4_##&w*MiV$7l1Kdgpcj%&*je+ePLRzm)^;xZQzxF9vQgOjf3=zg!_n7FDiz&xi# zaE`6~w~?{8e;VOmQ5eXD2hw2akaPpWjjw&_qOXs!h8}Ojce{OQqAwp*9Jzwd2YQec z9SN3zydq}>$xt-75_*d$^rjJ`T=py|K39F zDe(53S_k4X^&EA$1qZHgKrll@mh=d|BPstS{D0}$?^a~B|1FgXx zS_YQ2l3<3!cJKTmFX8g#4jPDiGVvS`;*Q=Kc1#V=UooUX3aRPf`b06yiG<}cOrSeU8(k<-!i7YXyK{6x7o9g& z$^`)uvAcjug9OAWK~?_$5iU(Qu!ECo=ZGL%&6Q4ExP#-F7~V%}!x*g)t?bAqApJjo zY~L(>v{Z!>c%MPjmJd|*m9vo@S&L9oIBh6jDHd}iL4$Vc$d&Z`jUUt(C8S$X`z=(F z*yRc0eM-reXhWUt28_hb{yxpyCnq|KISG#jIbH;llqyR12;%}LSdFh@aGdw~p*H|o zG3dp(JaB2HUyiD`^%#@K5~%y8EST%k05Q|(guIxRJPqYXufEdI8wOnII2meb)o|af z@VYFt-i$Y@ymt1YJTz-5r7c)x)l&!>8j|nEuRyAWiqb55K}m*kVmBscO7Hp~&ikUg zTs`Fm3F_zXv}F|Et)G=dJ(6U_V9TYHhNYC}u0GL($M$-#i#1cL?NL|qH6q|mVQv?x zf;R)!60I(zRuV@+bL2`7oD6~4mp@rj*$id!8@bZX1C+HCxE>>Y8baY0W%4?Q?=VR) zjHeExe%5z&2Q1K=$t~jUtd#3RQral*GN_Yo;V?WwVNBsLy_cDQUL-@F?Tg}2rT|Do zLL*8#lw4q!3UujhurDj%VBoV-kw|B^BZVr!$|h=zofSQwm=&EMm7Uw*m7C+|lKWf1SRS1n0^aI#zq}lYFnRA-^2wY9 zeQCi@K0Yg2%*On`;tAE}vS_V<+BAZhhps4z$%QPH!ituNx-Sz&X$yLf_LJbZRL_!W zJRroKdIS%12ZiZOv5ML);{py*ekSk~43lcc&XT%1g##$&$lgh7npUW}c#xNnXrvI(o)D)Ws(2vi%*U!s~Wo=EN!BB%S7JtN*_(DI5*#Vwr+>#d@ ztNldI(L>?~VpILSP!cc(S(>l&STGdB^m7ru{cb&^OTcN^B?iRaROU^vro(P0v=6RU z1-R02n|9ki$CMUmKXy_GIJT0X32?a55N$rw5M3gb4I1+m3;N+z8?CMhyE8a}5kTBjBUH0}_lI1yA!=|5LBW`7b0c&E>z ztmN2X1i+Vw3^aGO_=QmG;9lMzsETOfqKjSB{_PiI*Ny*0?+;+lRv_3*w%B9&As3=^ zR~@D^RQ*>Im)G>+0Y5n)?p>X-X`EoN_P&PxSSt<(3a2|<{@5$bN`g`Z{rR(1*Og`ir1_b*aVK=ejqMExfx?t=P9M(sb+`;*!TE)`5BkJe7s6Qyg0)D8E{CZ(>syyl2j_alvL8FI_mx}t8RM+#sH02TT5QT ze;c~%HZM3TQ%*cbqj|olxF}2yr<&R+Eb@^KFVg{ty|v^u)c*mm+~{y5<>XJ#WZLk+ zac-Sy7D?N-Ai0_Z0g#`Is6Yz{#BXzA44EU@K%)jyiYXbh;wg4sk#~SXVP%fl7y?Avl05w>W}d71 zKlt*Wn{=`o_-cg(iYZVe&!OcjJN^Oi_Ho>)W74o( zhxDHj)$T+M;HC&1|5iuVmH!!0d0M{wL5)pC;2K5LTHft&OEqds{9@=IyeG96$&RoC zVY%=p2{90o53wlP!;2FMN~!!B``c>ozQ|e@qow{o2%c<~{|m^0Dq7<_;9$+e?Y}h` zl)!UB(j-de#>eLrRfXQ-zxWrxi0$%w3p9U*>lT%NyONvqAIWb=B<7x_5t?HaOhiX1 z%aTc(6a~WsKX-_l)0>{0@~cRG11)ohpH26_RE%A=#nir_sfpzw5%wb+NcgKB;vccC zP4*(h!zQy_IQ0xp>cF(>A7zGZQc zCfK>$95dQ?`MvrU__4kEcGI)7>LcRQX1_&Zwv12$r|?Z;z0bGPQy(iRWnRlHxq3rm zbUW(vn5;Jh;}i?6{acOi6`RZ_89G(9-rM zW=zmhqS%0E9-Mef<-qfrx@)_+?fuVKy_@s|+=R+P0x;KdXCWwNxA9wSpRNNb<2>p_ zx<0_+x`NKsc<=BFe4juC9+rwkq#-}m*>4-&5i4CG6ck<0k-~Bh4oW&cGo8#Rd9x(S z?nsipT*k~1xOhwf4<#c|5@j1I)n5u>{zZUHTzH_lhh!i9$@t-Uv9`u+?R z!Om3yyALO6r27OWVngWoYM1JmiU_oyyZBX7Q2rnQOn&|yt@!P<;JBWg{^Yz)5EKZVLtVI#Iz^_`-Au)_!1voJN4~A z@xBmcC0EGI!*NbR*Dj>0E${NE&rZUeG-%j~`jLPzl&{h6jp1TyNT@-oJJ>R^kTj9yAd|6cy{k#eOcR7X%APLRT&}J*z zItdO~KL!13ebPaMa-4=7dK(Qbsx5(P`LCErc=j3opMor?Lzy=5T@C_yXT|5lb2H48 zGULYbuF{ULR841=W9sk{rcic`zs?$bLIA$qv)t6bJ{q$5u(C#FU#;A3EKlX(T0Vi= z(ykbIo{=&bA6j~hOJS}pNSkfh)nEPQTmF0%6lAink3MS($M?JIOnXDr4w=}HNSkFc zPn7CWL87?f7pCAxpc#cczvia~TQ|3dIo9LU)JD29`#w#a>Zc{83zKLn=(J5?DR4Eb zBO~+TfSV5P7-6COp(b-0%b+~M^#K|`WTK`-f#UYcoceJtw+$)4H!5&KX?3%Oa{{s~}>Di3V2w*xHoF^p-^YxglazgQT@=aLQKzwR%a)zSJBt zXW)XtuKDl7^@R1UoYR0!PddTmy@v;MoRa>rFhABs4!doH_)tFy2fW1q&SR4bK9mX~ z_yIE$M1QxffjP*(o(IYDD?{&^7LCej=(4nphwvXE%vu$y7Z9`3g}#Qh$^$^^-75Ao zzm-AZMvk`g}_kkvQM@ve^yMKiJ?8nCR!8{n1a{QelzQqbKK zjKgE)oj=4P7w+-g!pe4n(4RL))h4uG z=x1#9_q*BkwQWob&8{w#lPcS>ESi#Ju&saIh;Kz#58J%n(WW8l%BCS=pqd$<8-4t& z+c9RrzZ9UT-;PZ(+kG1{;SdLAY7dyx5DCT1ME+xYV6$t~_4DT0XhMAhX3fE0GTU4B zuciNkPP^K@6 z`st~HRkdO?+v|aAhZykj&gpihobz>Pj+CWW`r(TSa$U;@LWOT!#ce;ONnw{~fV$@` zU_x5rOXV#Q7GxC589q0K4^ikL2j*+k$n}1v*vjLL$5uha-p$>|L^_x#zhn{JOlDUX zxSOM><*?2Wsv1dBaHt#|T=DKc{!MRSvpxhxEi<>071gWDM|5py!*ADII%ZHNlaL4( zKMA3RP^#wdx?_fL@rZC?<-Lm(ub>{r&94fv+OX8d;ItqQ!z7@kIozN4!x~4zuul2j zo6O|f{o)8*OV2bk(N5FAAy=-uqMUOym0jg*IAu)Swsxp}SI1&KM^y9$%WjChk?+lL z1fLKiZjn`|r8KT#OHxZ!BUNaEEoiWMF6aFWB6!HR$wRb-i>;R@^bvN?0A9ac>T{sH zllsYq+hHwAma4Hc-jtf`D?+H$q}VbxO6=+6s)h2FZ`J+s@4_X<^=gw6c^;$kA)hse zMC&yY-!?hxKFYz~hzrbXkjl5xWW2{B0U@8w*s#`FBLPFEMigFc3N>+jgXF%ipNCD~ zo7p~*y?v9vowiU^#!S3@Oa45q_@uOrLN@l=eMZ(FgZc>G1fMm;f0{8pT*t(O)vAA_ zKlLqui~CA5caV5iXmyjb#BackdrD=EHPvk*3g>=eT7mi%9$S%PHXFxojlo4}uW^Vx z5=1O=#3ZP}Y>Aop9sSEL4GvEnm4`X$gw`j0k6LsV`;U=RtOBt2-Z?|bq$hYeHvxfP zGa+bCddXny8o5T~aK??m$d@YQ3~uzFmoZaP^4qCouB=0!6jQ1ZN7Ye+&s%|#uLTn8Mo@ad(oM|^RsI8PlsCno=Tet`HcKz&&SK777}ZRP~Io>)8&)3B-zUYdw^A4_FlooX6y$Ckf_=il&S?|B!feUWgX- zqt7FEnwhf5=7(7rd_Ox$M2nD_?$O7UmG*&=xGS|B&z*=56fGF8LiTRNaax3VwQ+Sg zQ+{G1VK6ezK(LN@SiIPE+)dABO&6}T9;Boiby|2lpQbB+#0Llq|2sZ&*WnIU8Mj@1 ziV><`Ad!&_fCpp|+3}dQrKV2)H<^Z~8$c%3Da;1GV1~;`je)N2p`c;qK~3CDEaRBm znfeu<<(piGur0+FWMf*BzGBAlbHGX@QXvPKqBACqdfru~Z14l8=#H>>IGnKjFPXJrt2Cq-|3d_c@h}JB%eW)NiXRN?>|qo8Gw4aTR}P*HBy#C)=~2y( ztJ3WOXhV~;6rI@pwZCO|2+h$h*}_0wQ-=k=rgAJ%y30aCNACKCXc{a@EqH{f9SnGU zq1BKG4`26O&qqj)=Ri;^GbX11lW{?aXcj6=AC_U?CQmxUW-K+)tu8UCG*GJxYd3+c zDF+j$AxW-6Ohs<@KZ8RnA<^uG(V7CN!Y+D?k=v-CCJf7HT68O8;oVCj<|W#OR)w`E zLK@`>BOn(KAmgbOXu5g5Y%tR{|>i)(|`iXeZ)j+0diR|^g@U0_g zc;funK(hs$^KEq;t_OuuufB}5ejDrVdd*2a&=Kv*ZI$*+{Ofe(SrF*`L;L#3XdP>u z59A_ar!e6I!mHPWAbNd&3|n*w2hFjFj%SGfC-onk63X{cXnW%>>q=WoCM_e8Xq=VP zptZf6GVS<`__=9M_ZMC3Y>`yQj+l!4vMRC731(5Kygp*g0R!HfFV`Oil=qCPZ|-5y z-`&pjh*Z-RL=QnBJw667_=kf0M(ni`EQs69wD#`36*$~CyG#P@-()zruGp6i2&FkR za}H=!D@3}7}R@Tq=_{9vodHr>=A!9I+;88^EK(XJ{rFk?sA&N4k)(I$f2%-t{rxVa~ioVxv; zakfHe<%rxDEU;}UVD;C*k)hgG#w`xE_UsD!Md)f1#+ZYSDbFisvssGJP`%^q$Fq=h z@xk!xlnuPrdM5$J0j>$1I-?__GNYW(5}fK;OT-VBGMoV&Rc3;^I-{JR5}YVqRc3xC zrGZ~cs>~2HI=RB+qeEcHR+z@fJaA^#XM6+}jc56ccYR$2&W=`GAQ4IH z>BOx0c%HoNc;4r*NTWFaXdd=I4ub4@2aB=p$=1OpP^aD@k^&lkA9)Lauyw7Alp05{ z;1m+YGK6lz3KHem7gY2!!#CjWIeR&#;6Kwpx=p7L(&L}wHa%pQsi49&pU1`@vtoSc z{KB>lc%R?{GbAn_k?n}s12e+LWXZnXMGwGK>YL%^V!ORUaHE3wS=Vq?7B5fGI>WaX}$mF`%l#3JuV zjMsk;j9+d=V?4Df#Y-+_wSzHH=eI&%U;g!CHNz^13nn+7d5e(4G40T@UaOjrRVMeE zzY-*pOu?s?L4_x2o2Nz62uoP_CyP?@$H&ublA~4&Z^u^=(QG|sfCFx|pFiz4{pFXb zFV72!FJ;;z~0$lg)7Mx^LP&Y~?y?Doaxu*`^1OE2h549h`Y?S!9fy?X$>yd~~1S zHm78~efUK5ny7EY_xZ9ow^yW)5Ammk{@_P0QfCsLR!Z%c*9&QPBUyf1xUPRJoM8%c_ z6Jw7hxwcZwP?2gH^;c!91l9|#(#y7|ZtPO`%7^vRC#NbI6Q6Co13RO}MjZueH-L3j z9XLs&wAql6E4+m^_qNd`$#uz?ChwYMF^1H(LQR%{KX%pBj)LM{qhUffWeM`4+4Yyb zMW-k9M5X1XZL=X0S3JHR^yX$=z8;6>SvhL7neZ;~&KUzVosVdN9zI3$q~Ti9xHs6v z&fO-i>irwa=Bheu?K(2;Yf4EYYkmCWHt4aEJ0{-;_LB?7`SnV)uMa6F7YjNrf0D!> zJMCVC%`&EGKPZ}ilS9&PdBz#Ezu20k3_ruR3s5+5*0O3dbiI%#@omNvqET&VczAsvF=eY6pOS8Se&k^OI{)OJa{F^U21L@Wa zVJ2wIt|@MCWWR4jGvguI#3A37)AdTR_m)L`O|0|=d{FkaljL1nDz&1`DQbd ziWQD(7lBfk4e+IYSLeYJa&PV!vo&-9v;Ui5)S91kKR?ka{zf}7W@oemX}?z3gI!TD zO)K$6OvgiHm}er%e8gV5FyJP09bHS)H}2Gwe^g6;RAs>W7y*t-$naPa zY|`e0u{3Vw_nTr5(W;d56z&s)VAO3WPq3%GyVZ%bxMR-p7)8+o1Fq^I`rH z?kq_M)v~cn*DkHM*j-w=Y@-tLp|Q>eRj_^dOCtrlZ;r`YT{7Y}1Hqg9-r2ahN3e5y zEfw@nqSk5SK(EWsH^zPI{0^^>eeUtN#yEZANX%=xU|lci(Z)kL;(nc?)GY7-&z?(I z|B_djSFE98b#3ws9oUV+HtQTss&7NZ@3D~9EJWFOnV2f>-d5a_+l%m;F`wiKZ&x{) z;*2$f%w(b;A(Ut9jcUi^dsQs33?cM2QBk@$gR}WgZoDM}1AEH9m$V?TIb0C4aY;@} z2ZHO$A|fe@A|T~ytm4xmB3+mi_6P;ruyHvIkM@8{hxP~!05cZZQBcsI!=a%6HKEy6 zw>}Vz)uUs~7!w4ieJ+=qTVzZ`liCALCJE0wKU;HO;R9Q4;0 z4(K8$Ks^JDdJ*;c*knOpJ=DDfg*H3mvD|G`L#_Ovp zG2<0#y*bP<;TKaReX#e2tQ$AOq~&(_F#@+iRj6|wIkWkXS^j=?i5sw2Z0h@_ipJvg} zk6Tv=9QL1O;K%tbD!}UB3U!jYUJ<%>G&1@I4*aw>cPHl$x+|*b%|EPWNe16d*(>!m zt@`V_D!}Wj>2XYH+C1Ble;NFICqgK~z@ft@{NjjF;YD<| z(GmZ1{UrqlZ&r-PZP@4^BETYv0MVb@lw7UZs|pU0+bFy}j)Vn!u+fO*6jf2X5JRjw zL_mIo(mMpPe%NS^*mDSpe?m0itincvsq_Wsq7$SHqZ2^StXc$8a_Jq=@?Sv=5wxI0 zP;#jUCIZEkU?BMsD>x9mH@!g&ArS;nat$6hji3`$!ngz&qha@>6F@>JIAFvw5eids zWo-wz2keSu^`a9vA0&$)0qe`gceKH@CiSOSZox*+JCgyK&q8DAUm=FprS54kZ%gR( z5xy03MIVCj4mi5lrSJ~K?d4z9E_6Mw`iAd1s?y0j^5*ct{@8hB)d(-I2N`96x1ut}O#JJO{PaJ&k_j z7jkx;`=61scS(EbBx9)8KOipOD!b3Vkit5&c&S9EQ$>`RKsJjkOk+$xfc$Cs!WTmtk5sK;7{_A!Z^{J8;>;3>}OnvSn z|2W>|>cz^+nnHMWH@d_vg z>ir;8-7@}v{-BHw)KolYUg)Zs!JM7)0Y3AlQp z$7i3(O}v`eSHPIse?Fx2A|tV|hxjBL65ElMnte8r1uV+iZ(7PIJN@dF@LM0~6bT>O z5k{ADHgV+A+M#t1)DabOc!Q2X@IH8t?7DWr@3DG)m_oz zk=+hj!I2WJ#RIL`4YMj3(VSh$ z!ev1Uv6MJxetER`divySPqTs7J|tm34NX3IC|o)DP>4&52vle+FxF-5#wH;)_I~Xq za@S4xbhZ;lD_d7=__>`X!2Wqg8&oM`*l4Z>7LRNtD!V|`%!w z>sTpeM(!ZKxy&d>>{ykGIkJQU|7}*(^Dduv|cK;c*Q1Xrz ztW66Q;0F%v@IgP!f9zW`ar{dS`?xZ3!sL&?C9ylBs4c*em)21vvHifI&J6B#mD;!RQfk{XE<7l?muSzRsX5v82Le{CQPB}OoT?L`UBTX-M zUSepu-;bbG&cnPOIAVZ6B?o0}XX#`l*{LjH^OEFI$-Me;KQkJJTdUqg*ITB;Ag5j^ zhI`zvnO=X<&vtXzFT0q9TXy*gxpC3Z6o`1EvW~n^i)#4Wki>Hr6_Vu2|@#LncU!ll-Xs>)E~; z{*|0MuiA%NHCl3!QR1(a^qZ4ts~vX=JUnUbY={Ge_`SeI|W^AV>`Ur7=y zqi}y!TBU5qqe52r;SRll^Xtu`kpM)ZZ!)VStV>r5+4KdoVO`{2gQy1k!| z7d@L`rJD?zubOdS16^4C7Sp&zY`D1>GFHr1E)x7Y!nCY=9yJZq$c$Dmfw7FRlMk=! zu&@yCzw_cO@56hP;pgHIZ46j#22HAthKzwieTn0V7_-Qlz~g^!APA1oT8#{DQ$U$) z+NX>8>lotjX6@GO5dKDlY0_*CO=#l$K4H@Q0=X@_rasKwec}g;4Fz#0GmzFimkNGX zPSeaw1w%G?@mSAXz8ty{>}7!hRh$jFgVP4cj<^qh;f6mMVJ5J9V(u#Bc{hnn>4-P- z2w5Igk&nD0BvV9r-vq@zxiD1vRUS1KPI|gQ26P1@F~L&;-L#xXG)th(OiI^*;b?(k zDfd!mj-3N55wSRX#~H9E6tatqOH*DG;ed&p^+AX5N#)NF#9+Bv*$j4o+nTF|@V6sjK0 zbGZglTMbe=+`owmg+C5@R)lO24y9!4-;nCvq z+i~Bs-yqKO@ zzCwXVH~b0l)XY8w#-yLq74pT-nyZ&8X)3Te59}qyoG{IwjyZnO@N%Eqeq(f*XdkiJ z%3JIPJM0*26Q@#d(XC)q9g$YP&{ZSP5ZO4;S)fVNgtgw<22;cohc-@nEsrnr#}7oV zx%>zS_<=#EZeF1LJ)<{Dux(Uz`+mO{4x9X8No$A*%Xm=F+s=5i z4z9|S(4Lwp5%dc}{9)l&cgol-Vx1&~8Xsib@8t$3){^X7rL(ao8j$p>WUw9~Wv5gr z^BZ1J*I5v^x=3njZ2p(;?A37U(;6A$qns>r3+9^ApAXGctl}uXtKH^Ld}PzKO4>J`gevva%^CG|8(&T0`Owh`9I;_KE@SKv{W>+0Gt+W*5%t&ewVOY&?6CX(lDn~4{ z=dj+xk&9j&9?Y1)YoSZAOUf1hxm>X*S%KOvzQ8G5J9uuSFB}z_cwr$(CZTr-=ZTH>3_dd_P zpZmv3CbN^QS=qBQYbTlS(0U)srmhM-urqYMsp>BN+dSc$UaDw|vJh?B`=-+Hf;q}= z%XnhjoDK91&Rwg#i-9`tZ{94kz;qI22)xU|smOoH^^JTpOVqrhGiyan%f(5;baspx|-f6^y z9jp#f#yHk+5C7d{ql{7Rg|N%ecGoZ)M(3j?5oX4zRF;6C3d5uyUqFWgzL+^F#=H)~ zM*Y*SDKc!oVmD8W)q+W1X}Pfr9=exnB@eoE_~OM1$Do-Qve%J@9a0#E8A7mNM;E%c zWwpTQy_mKE@+bV%972|7VqaD#fsI!7NEV1G#22`}BSL z;1Pb1M*-2k8~Ia&zOmWie4Cpw*)h>pr#8pvj@>#rwm?rNTPC9MBN%Fh#Zp&%hfZ! z;bQ3>+}c-iS=8d0UBT_FS$W)D4XO}?7z<0!h#RV@{b|+eXs*c#^_pse@2yV7k~QUO zM8g4EEy!yo*my^OW)IA3r8>0)<=V3&Ir*hM{e9%wfkp5vlfcC=c*)1;``)fS9Ya=? zms_A|T`s-^n~@!v`lo(Q8MH5gt;8Hc>~$z{^?-8h3UVCnHuo!N!(vdG0h3|Y7_XND zPJVC~XV0kg3$fGRb)B}2Lg1Rc=|y+5VAlvkAqixm7B>O{D+jLMP4jvumkSedBAMsP zd{5xGUP%BFGpDM*Z5iGX0y{^i|7RawINI~|{J<7VETYI!**jaMC~k60ed7K6qBoj; zsEvDMR6{oA6 zB_(x-JA_s7+5+;sm>1%mRK@FM`S&;SPWSY4dWeypp($m;8gjb-1xqWMi^|#&tt5=a z4DqYcF9q2ebk(F(%87wpyGP6JP3GBTd*)YptHl15;iP`?Uxv5JUf=LOy$WRGRG|8)vPPFiGf%G5l%C>%} zgnlaVdq7-fL{laG|L)4CmPr?BFO&U$n;EE1h}@Qn?GHAIU#b{c;&&=EQpq2M9V+eW z%fk~}ZW});?IgI#Jn7jF>E3FU1!|o?bLP)zptM~4Db|_ILZ~}te~|vPq{ADjDoO{2 zt(&ojk^KH*4HMc}utpO1_kByS!08u$<8{B;gQZ5iv?hZE#3OJM+TeYW%ES58Lvt#! z?%yeN{+rSOs-aqG5W`Vpd@ z`gIqIUwYEteD}rd)jQ1_w!G`c=$ySM+GsRn_SfE#_u44Qv172YN=DpnBe z{BJLz*<}**c~&S$e>g2RGxEh9qLIn7>BcACny z;;t_bi6Lcxk(WjSLvO~fff zyvUV&lT|4|89vp#EU~h6Nt%+<&bfDnjeZo%O(Q6a2-6C;(QZlGfRpPcarg33Bh&Y#%qIdpR^!F zyGy@?7&$0Jy}m;l2S))Hu{IFvk5H#js1r++0QICiB>rt(;|-rJ8lgxQ^SyE$rzxp( zz$)i?OjkYz0EQ-@^T8CN?XSv6NZLSjAu)Ex;fSJq5u^8gs%iX(E<#^);fN!UEpBs4 zsr^BjGQ6(C0VSRkjyUw9PH;prrI)vKD=gd}+~4^Fidi<;ymzx`x<(fl6uc>4egags z-djS#OUoDv0CfefvA1(7cCZ+sG$#3(eb@s_y-Z>;ix36lyhdS$-WiD4iZA>%050H!RClbk=vHSdppeT^aIGt@`0~GoYMEkqzS~&TI;0DC zDI3K{VHt3TERHNVwgisn({7b6Oud>M6`+LBH*|%R_oko|!wDdv^9=t3mD{eNw7ad^hRu#k z7u>-tB-$6?GPcbHLt>!*ngJdKSSr+r3NW>jqRHC+14ybUn+K?BsH*Lek)k4qL}^o| zXo>0-d6`?ncc2T6)iafxXth})V!Bu0JQJ9Z3(%$I6dWBL>JM3|^3kj2jK(o*U_f=O zGc?hqj}z{x6uqvL-L*cPO0dA!@!1LmamF*GGb)lx1+`m_Q7t@c+hLl}HVy5%o&`7h zj*pGT>6Mt_2}u6fx@-A9OF9A)O~+=9hR|nRp;mDaYwVS0QD&-?`A-1aW;KX2=F+0*M8MWg2If;KSHmF)Mp0^SP&i8_2!G%__Vt#4I z^{1@_z>Qp^n=k@kRpI{k)LJ4Bu43(9s*>FAs(>Y&SlN1y186EWyG;t;Jp`F2YO6#` z2gs6n*+tpsqO=*$lL+*kf+(-Nc{JS)-)qxK*ECRY4_cjHB%NTJBtFW&Gl++l@RYuN zH^9E@vzm+aQmanf%lV5SlfDP@o|3PYAFN;-a^AEOo=7EB5N-LidktH2ssTmZH6_iF z3*>{Vy);CPg@mg89W8=jZ^^K+aPjOxhCR7 z_g=L0DVz9|;C#*I8Mf19yW}x5m2lF`d3q%}xa!JwFrip6b@BsF?u4j=dkHN}sr&d> zjf+gR76v#z+;a2~_PK1(cE(3NQq4KI>fjC0o9%kW#|f}ai}7!^Ee)zqLs&+*0KcHkhO$bTo=#DQu)GEtxu7jKw0MbzY^rq`A5QOpd#dRzrh_fdK^c_n{PP*4Z z>nP)f7_XMzzT~>RYTytp9fHcx1ujw$+#1MkG_mnRD9{hw#G`(=2~Ui3_{@S zFzzVGD-t-LWphqD1(H^0*iYG609&JRw!CTV7V_{`#n5pd0rto6O8q%LoPzr`HlqUT z#!!zk9>*^> zK>)5Dk%O&0aqLISsa*Yz=9ar#6UMMltW)W#-7sauS58>Ls$C;KJ=TghjcS>yxPY>b zt0$sYo~v>*WP*0njUkZ%u6%d2XlQG|3+imR-nGBz$zce-9KS7Tm^<=!Z2JpB<^Jn_ zsJZPPJqB1;KtX|#9p!WY-eq1Gd?zsoaaovOx8dTd=Z#o&ed?;QJi`d4aRF0!hAr~H z9xEA{k8DRXvzzUsj2G|Rm#>5F*+$oiw=5RNlG&MSd~qj7><~Xjcg%_Cq(fygv@7~V zIPn=-rTMGDq=MGa`~nHo2nch^-{z*2zpv7z=7#~7(oNhX9=@qH6x}zC75Gg@YuYQqa3AIr#9}y z9ZYEH%K14R^(FpY6CNSx@jj9QOy5Gb6Fj=5G!O`epLz z=6+CT>kkg!h*YFS<(j`!=_)@?y* z8)}YLE@56vbb*GwD*Y6J7T4FJm^%vuWXF)b)+Bikis4JrgYdada|v5 zQRfEGI`dPHnoo_j@|K}Z{Lmu5?S%TWBe!n@=~u@$d1nG|*Cd#y?`lrwhK@DGkG02e zruO~x$Cq7za<5EL-?IhmliS&b*W(NO@^(Do3abm8w=EyHI6EfMQ z#CFE6aB@7|C7Tu*bMJv0kQLu+3q4^6S5io!u1LkDC=0p!JQha|JK-QIoDVhUq!X)T z$>J(p!kS5*e=X*1q&#q+8Js`oHTM_&O89-k^{`&{kmcddY8O~baeZ(mGYVQYuq(CS2uD<;9tOw)?A$^WU1RIXAw^>_b+d`)fES?<`XQ@2o@3QF$Y- zsNKN@>4H;AW9EzlYW;`(AlHl*_vl;n;jX6KDyE8SG*->b-{l3a7{3EeIUG|v8=PLk zyLZi)@0eK+OWoiZrxKV)`|z2_M0x#KhU3yR!>~b?A)@NnKPSF|JRhIG|9RKKYB}-Z zK@3{NbA@0-yvD>39b_O!S$mRcZK`YtfaW&7s*qP-p6Y^0T3gWWd%Mg@IOT&K<3>v# zGg;#NJe0ka$esPXy7jxuZZ0Z*!f~X!Q0-@Wd5xDRSee}2<5#e6emP-WmdW30A@3y` zY!+0&{X=&q?+x8~s|F6!gGL{8^~v3vr{U7Rhp|oE9{QK5>*f~ty*K3%6k<2Bz0b+* zySSEHZ!Bz4)iak4lvLsbiW%(73!%QyOjgl^%c$Kv{I`p1F7YAWM}1*Qb|=$`d-K=# z%aO9TB=-#FJDihWFG=BWpcR38&}S@;h+)VaG(MR~^E&qI*nUi>y4O3vADB-y{*giE zdR0(-@bziY`tAIp97dIQ^9w*H{m>`uKV6hZlnIo!853l)AB+lD#;6j&vK2nY1`~^V z(KeL^r3s*~TheZkgX$B#-5TdxkL)8^93v6HUU_alK*YXloNDfm#0L8a@qcPq2>QQk zl%-31)2i5K|7(wtr~&ng%kLYOM;*&U26t%brj9!WQ6)4>(j%M)uMlL;Q6lt)Rq>yq zRse6P1cDu!B7!j)QieHn@TZRZK`R3(*C~S;nkt47{eOFFN(Jdh%!;9(|D15m<2e+R zrc@!|R4p4E+#=xoea^1uwdp8+1~AO~$OEGn1F2^NXy-LTugu6j4MFyUE6Qk!KOW~X zh!UJWd{1)u?;aJx;HI6uIUb=wc8RF}R+KsB0Ckx7alko>l(jz{tOkjnj#PpvXIy-_ zoVgV^?g|qMda|s1`;;p~S(f(D+N*MIg7H*CdzFf~yM*y(TwL9XY!B?d)I)tMML)I| zC7bO=IhT5-DZ9N%M4N6Z3zxI^ZU!MO~c=vM2HQ$6D zr~tU-&vb1wXFB4fE5JS%RCwQN;UHXdnrIU3cNKzDl-+_z#4v{srKl2>fU?6#C5R>~ z{{J1k!^~3DvB(2e|4rOlm?3r{w6Jt(w6I<7Qb)Xa9mrQi`LkPrq|?M1(IpCNc?EB! z{A;t$4^pMpJKyih!5?K|w-$P@E_$8(0I{~g;8QGeuW!`dnle z&@Vo=3;RB-To3--Mxxy1C>YAIH|ovbHfHIP?`cbJ2)5$s9zL+Cv+1NIpdGx*@b#J@{@>E=l=LNe}D|5^SPA-n0?>ao0 zINO(N3;?Fog|(%J-TMasbHO~q$Nnwx5GzA@f4AWp)!9CsCHUIWW>eI$ELqJzVDf8gYX?o$8J9o6|Rvq^=Iy{25i4e{$m)nRGx zlZoi}sJ1*lqq77Shbo>DLQVw&)rkxnu96zx85hX=re6hiXU&98gvtW6hh~u5#eW=MS=tTX$N6-n)5}h*8iKl;yz()lChJcHy z50D{~I?Xkj-na2t5Z4&F=RO&}wDXW7X5z7Z1<^Xmn0sQUGc@#8uw8_c!(kIdiLf=m7uYO*$d0HQ%fQ*e!sL>XmRz3~?fr zVoQ1U?t0|vJ(dD~WkkKtp)U3BfSWBu4?+D#D{7-pzVpn;ucKSA zyEt+X@9K??vQXAkA#vwp5ljUuzbG2FOTz+(Icrtk!|UZrWgI_R z*I~GcZ=i-=BIj3dy<#IRYu=!FH0;KiiD!xJ?03V5C4GJ+xF{{4$qPyeSc(%Nv7?Zf zWrcQqR^j>imrl#bbSSf$I~L&jatbi z5a=$*;K0UNIM45mW+^ z0_@Il5xW1D>m9mZbKKFnXfMd%0(TZAAosWo1q9r@5RL*&`=ksdz+<)o1;oU^0q@9N z*uZ2(9!e=kl>&@d_XXNtJB*Vk?Y0UalQ0Z(7SiTrr5x164B*r1lM0l8sdm5v?CLlR z-@4Jqz?&(Kpae)g0B(sA9)bOv0?hLRP)F}SMw0t^P#@@}yRcv0iTffYpur|D;91f_ zVhT_K0^ zfFQP=K>Pb0K=+5ey+aEX4gKu!5WPyAAMz7%eiBfCoiU_eGsDe$JSkIvMV?fm1jwHl z6QN4feFW{+jY12lrz<+Y{6zY=3C~I7AT^bsfUx}Un-78e2rt~v3Ut2#mmjrH2+A-> zx~}$5X*P6KQW(rvbR=Bz@Ak2nfWlStcTT4gOVLox<1N;|8dm*EcEKwtYdV$Ag`(h9&uN2t z8ajmFruUf1FklQy$)-Lu(*M_5Yp>@simF-P?dmwZ5n8f7lU5oA8BS5mF;x0}go z`b93q*%)V?3%;cC07tgYh4{$D8mAp%?p=avmtuSw{7$9+oq_9V(0FC}+@?Agtjv#! z7_nW8e}gX7Jl+vE(_D3G>?ALz7^H-DE(k#Kd#hUkX5X4c&=Qy8M2t$^v*lqc_4g5@ z!5Y^0DtC2kCW$MlUi~VUVoB*o-7|&pIlKq&pE<&28oX}NE2&gE#ZIMQx)EAF0mrzL zn#WUQZ}pD8B-mz}FO%@~!5Ct5?6ae-PV%zxG%PoQ>0n0`Fc44l$fVN zj{qQdkz|p>M4ZJYk7|9xDfgj0w~Ox&QR3)1Q^TJ5AsDjHcER)rbpd@IQaTOSIQFq*AL=R%?0H$4S~qo{JsWzJHky7y&I{zi#ow<`KO z@a}-cZ|z!!ddZf$emjV;LpvI#A3z1t+7799n!Ab;rmlAWU)HAD*64G>wVHF?7|w9< z#e4+!a&t9X_3>wa(gUN^=4kDV@dFP@SbfhVjG&j-Y!ETGSvQ*DJ$ii7XgT%I{)c;M ziNrq_4x3lm3L$HIMBD?Q^j0XvzjXLcI+%-+0G5{Pv!lN7mCyx?6P1w zpwh}Z>=nF#$B$|Dh3nCVP7y9_sFXm9@UNprpWx9N=OGhW@zHkjuO0vo#m1HJ{I! z1C0Grvd(LAAGBtUtQADW*IR(+vF0^;q`Z#~bIbQ$h?pn!9OF{juG zSe&WRy8RqV(+j(G^+w2liG%zCOaawLLc5*t{8h+-#PKA&m7)nA(QX~YEM&(d3Pp1$ z;<;NoPTSRE)W2P68lxFloCcrHr!=DkZpMTac0il->iF;ho}fKK(E?^^{NIG4;~m6_ z<$Ebh^y1@IC6mm9PMXu~VH`X6Gwq>aR9x?xF0)Vjj%{CXfkSRw5;{XdMm2|nc1gBl z^_bfD=>I$B|25p_^(rm?@tQli>lHw2AsDRuE8%2%C%ykbz4+O!BF=4E5DMfM^`xI~AHeM<)V zd$_^%4XiYKX(!to?@K>=MdOR_w0D38-=$725!cr@%%4MhU8B?p%gvV>EGOPSY!H3f zG6&9US=2aNZKAIk7D+?I|K+tayiO3|13^usK1{2tp$Rg)2EJ$*Mm8} zqoK}JqC4>0XU+m4>L)3m4u}{X1P`u;fdMO{pPBjmaJAZA`dk!)l^3i0&o&gD zt&`(!rjOoJ@&pddUHr$nPfq`3f%>k@UAFhbXxWzts0bY#uUEW)F7LU00$1?QCU4JG zs=Nm-Y|C}iR9WdMSgPyF2q_qNyxcry%BrT0_YUsGj-%7#F!*a2D+w9AozP8=2esrv z)LYZEz2ww=L)1G9aCobe2?lA70*=sq?_&rCD|!6%WS`C5oNw#{XOD_8^{9-AV3iSG znYs$zZ~05n-|K2UUK{9*=U$-g>WaU|>JJ)5OoLBQLr$WpU}mwh1*ol^)bte9%wE&F zZVP@PV52^RNO&1?3Z6KI?Gw_PqTZ-4`5ruyQa;`!l`g z8?F|?*v`I^f%bUs92c}5`)4S2Z;1=NP5bbjsmmjHYnRTz5zt)BFXOocAg-hFwz+$| zQWfR$xYuOi4TQkvX71inJJnCn%g#dUO4__8$%qWpO&o4cuAT-IOwmd3$zilSL2@Ei z4hL@|qnC_7KK%q%Hu%TDZ2{9>ux4QcbHw@3Vlzj|%r_N4bWur~V9+^zWX(7Q#H zYb~8>j-Mv~hWzIgQNRU@-pNiud6dQ-IO!^JR|&4R=E2V1Gc0j0IRW~&nx*vclDM`DY(8Opin zdCa#3&{CF$(LH@f0&Bs7Z3yVfqPjNhKWLsupT)6{!E-3?J! zk(;-uIexAURH&iT@8A#WzZ+>dc=e|j*HI>_8Xykb3AUsMzwJcOLSDv%%c0v|s9=0P zuLhL$y4D=olIyr7&Mj2o${VBX=ux~Jeq90UMG}TDpi9e?ej&$tR1Pb3d zG|5Dpe}T@v_&Aw?*yeYx7*tW4VE?smbFdxs3iN|Z0c+wf1lSlBW*o}_u9IZ*V>(@S zx|RD*X~Rhd-ST)AyI%NhC*rl<%SqJ{ckcFzEs9!1ICpo=d5dAxqy}*W3I2eGl!yvs zP5*P>E7-tS(H}MO^>PUm-mP6I`h#~WFH7nxk``>^Z9Kk1z7)Fl&Q|9CEp9F}<+t5D z=j%W{g!rld`!QGKCvWr=(Z?@ss-IAwhab4>AEG$V8BND)UZfp~s)~%Z8+6(1>$6Kk zYuoE)M_xh$(a^_b#erN1Ak4%&4RMAsaHx$BRv4_yC5C7km!{wE2I>6@lHS2FI9v<8 znx5Z(t@K?%_EQ8nxHYZAWSZPaE21wE7q5a7vu%(R8u-eIM!&(%bKXj`t9UObNVntt63UtHc@qc&g%Mv)W>o;?WqsLnRKn6n|td4mnu2_9mUM0s=I zm#OzmJ2Z$3)@w(roPgTstm^~S|9IFGCkBJG$6!cEoVyYpeN6q5TmD7)2WX+c0t4rl zFE{u5ke0lr|U}DR2NKNCs}{hWwf_noEZ7Fb!zV!&+$eJ7R$#(Ed;N%@RJ|uFLbq5^-6X+!dN)Nb6VwDq zTrk;um2mYAp@6a*f|C$GB9Js{m@4T)<0o^JvlpZ&!Qz{x6Ka+8>j0OaFSvy|FAL2n z&TE2bo-cIM4&NymbA4)VI@p*Jf7H_RT?{L^SIR6Mh?}(E^W0v?z1ZPJ)(+&MyzV%#9i--f9=-fuMYOHN29AP)&oTNM83mmrBAQmkxY$^9Fq%VLUmo+y>e5;n5b?I&mToHE0 z%ol%DRf{X_xZ{w< zWfr+*VCfoyIA&B$vlzy$YH$HAO_m`U@OPbAToow>qZZnW=}bUxgf~y9B5~ttD-u*k zri8s0RAg1mRlzopRnZ9JVxRDHzE4k=a6w##-QG$@S#oK8SvlGMj2Km}iDVGuh|5!F z0CduG&|{K|y-s9MPfhmKvvhRBo@Ti&Y9_|%hG2Zm!8p=6#Hxqy_|t4Z-s5-{lDIXS z71CQ>pe@#N!L)@IscbTcciICVy$rSCdLSDkZTLUAso;XD0`h!zeUAng2G;d*FjfeU z2tGL;$Yw=BNCVny4PRSdN(NM+CR8;1ZI1tf zkL?@OyV$$}L<5oiyhY%OPo?4m*s0v4q5&C7cm1Tq%Ci;dZB%(~gce1gFW0=0G?xa5 zyvy%LYZEHPg`XiNg%%Hpf0v3DnQyN2wq6ti#GxLeDc>l}v}ra-FToU}Zx$?xlDP1g z#T&PdndH$~@cR(_&$2kK=G`82(zw$y8EZ|%7 zuDZ6=+JGaBT#8=_rX+o_0%Y^FV3X5%3AESF zu4|b%2Fp4_?(qiU;7$&6zDxRR>v3V;hy)CfL9~Liw*z}MaShJ-qpRW$y(i$KT7tbu zho+QS4v1z~8(q^{T>biBbD=_30ZuoZP`d7*Ri0PVH2qe7zL0sL9Ya2g_UnA196-38 zHa>8PyMV}W_8MBb|K#_cxkeSqwy4H_2}b-){Ma*N*!c@juDQ8>M=yB3M;;r1m+swI zU9*{Xr$accU@~Z>c^Yi7VIB4s!V)`vH8bYSIqBOkO9z>5 z*vIJOECH+rYz`qcH45Psh?L(&rHjbl9N1}1TkMxbubp&D zq~Et`mr0VJbCZ@n^%wABb5v^7Hw0*5bvZkyE=VH~YYl)wJojCCDqoAEf3|xl54R5;b^j`biLto#tq<>O=PRmV)9oY;iJtwv1GTTe%rSxieT&38!vs| zp?BDyo@i>DmQ-@~J$~+aZ;OquizO z)sk5+4>$4zmpBPqV7!XWC;9b;d|e7MLCM_+@5jIL6$cn7C?_qlHeM zpd7YOrDifo#@(%fx$JI;PO>8pb$WzmI%CJ$k#QquJedx4u7Ks7^`m1+R#I!pR>o%o zwGSwp(6295jeXTMkY1l!S8^k4GYWb6Ipp*U8szb#6|vA5&-25iqz20_Auxj#My%xc zN7HF0_)(VEH%~fysTt9`K%PhV1q=$Izwsbob3az^t@moCPJCmYh_OOD%C zz>mqlH*;u~#^tr|cJ@_}#IF(+&?&c^wl`Hu_JbyciFH9ANR}zjE6}3{g-nUAQ<{+c z*4qKqXY*pEaR>5m97t4sc7+D!X!iz@*UX;(C zg-{Bz@E403!4D*4ej*+r8~_w*UG-n)E9QID$ACv`aG48E=mZ?51Cd$_D()ymwKynZ5zuk(?QrV)&{4MYnP)%=~Aj_^d61{Nml zbvQK`^3l7j{?*R`qpGUS5Z;SAmP2QKA(csbuo<-4EwfqK9Wtr|zSO0G34O8dMIQ;q zZneD!5wxXwM{8}*kLQF-+G_O*WfkFJ%sKZx4+;Hk5L@4)h-3nCx#+PB()xA(d&`R`5W06w)6HZ|Boax(JXRH|>%K=7S_eiX z1*wg{1sN)<8@mDjRvK0x>0_gn^0|`-!7Q@tJ4+YJoel8Xt=T;$4$bw04%Lq`)+cRA zS!AaU|6O>aAvh*pcsYfPwWM+A|GU#72>wux$!ku&7%^nRF)@Jl) zKzWFqB_A7<=YE!Ek9{`yjBR>q!oWYAcw*tOmBvCsB*;cq+(g#IpNhDM4GY{EZ&f=e zAY;k{UHD6svg<4@iWr?!A!t7{h<8E5AOi|*bSb0-iBl#BGgce;53zk4oYp?O;0DxG zvXHh8a#MWYJagIbv|kHy8bhGaU+?^BF!TunHysQM9)A=Q#-4Eq3laas-?#RO40&|m zawz#lZTNE~Ad$sJU3Zh!M4{50?0DOUz$y;AFyC#=$rGi!tZ$%Jy!Opu4Xo{mYy@pW z0CA6nC!scJg{$f>evx|k88ht3{(E@P+%?Qm2qs+uDYf)aM2F?2E})fNZwguGBol5a z;c}iH+j*GfluVXOG%yvslC^gFscbolNf0O zL4WlR+n2rTBD^K})lg?8#Ahz(S%$t?8J4x(#0ZVulp(AcI)-(J&c)T*U;pvae|Du4 zX^(lTHh6jB3QWMO z1;w@{krN%JMR|vcy<=y-O4=?@-^ceC?Wdn3nvQCO7;O4Xxf|5Z}_voD(-hKC;;U){91Gpdjc z)i1jrl$gn|o#A``$)mvF6hyX871uguwhAs{`>NVw3qP%OtKFboi*G}=H+%oWWKVMY zroXdbF>Wt1yAt*QqQ!{3O@DF*mx^H#+_KU@Zw)B*rf`IF5v5pMl{b+Ss=gF$_>Cfd zCs1f~-kf%Mzf-WIe9TC~qCY!st*p$o4w#{Vo_K7|FpCjxyEI%bPHG+)B1X!P$rg|4>})0KF=}U%U3x;b$a=A}+T~L*NkH z-k#0z+wo*edoGcBw>wExHP}eH!^I^{xfaP%Lb(LRoj6!$$E?dB$aJ>B1~_;3Z9EE* zL(iq9_dLxfPz3b*bv%tzgV!9nvgUJF9$0r0rtNWBwj|n5V;3!!pe}X1<{?v&u_YX| z=wi*^JD|;akXte|A3fl?Mwb7+!V;6aZS&>+SVn;guF2D758Uxnp-ZpL(gsrbk*Pno z6jMM@^X7v1cc$bTij13!M8NLe>jrf95Xbj4*bE0AR3mk($7fZ>;j0~x8k_nyJNach zQu8Z5zGVI>uWM-Lx-V>x4|I503L&X)e7PhV`N5(KQ zyMi_G(4oMUctTsFipl7O0gKw|aHv6@$3K;{{U!R`y6vkLF$ScRBMF8NowJD8aq=m@p%sYSx8HqvHNbsY<~w`qE_VbBZ8D1aY<$! zuzsoHwR-OP`T@=~iy(mdp87Wq4n>~<;QT%?7cZFdIg=S7Ob3g6Jm*9}q52)k#e zKBkmJS*5hw?#y7|58%>BVl+-eBb#!Ne%+$md-+N6)0RFSAa*uaPT`PRa4xW1)Y);RqsYv=5ltD=2mauJ@sbLP1HiTNfREpK5* ze}{Y*!Hb=FZX$(XaQ4Gez29Yw;7zrD82v%q!C z%vJd0m3S@{R2&eP=ci@$s}0fgG8)JOgKBf*nrq=Cav}+%AG{GE5=gAugM=W* zuMuQ0JCCGqWjrXA>zYya{Z9d z=IrL$jkOtSv%jcwLa-NTnE;&UecONN%O`(Kog5x-kqITcgUUgeXE;c_mtE71#1hpKNw;&jH4ktpE;TTx}k;p zp!Uv;Atk+72j8I}oZ!n$c;y}epgdp&v+#O9IhQ7vsCjEyy=1|=|V3tb~3 zSOaoY;uW8vtcZchl}=(JIiWo0tq8Hk zwh70%i?o#D`U%J3Hbs?*0qR*#VUd-1G9-Z?Xn5V110o;b_b)sVY(HP3_dr}e*EP+f z-=~N!xErwAO~a>%&R&~aBh(B+zG)=%2%pmP1lMJs*stolP3oilX7+0CWb8|n#~yI* z(%cY^S{iKB=De11TAB-&RSAJ&NW5g~3bCF!rXCWuNP-e^`FUB;L<|6&dMAz}3rx^MZCWyWuMv1%5iG<)B|FC&3bNO}0 zfo$NZZxW~e*7+41u~hF1ZPHIz!4I2@iEL66KQ6ni#Hd6Z{*teHWL9AzVmc)xd` zoLr~0F2cwk-+2>+w2ZBX?TV+Xqpo5_F@8BcG~d#!h$xg`U}CErGTg)p9UQ?uZ{gUS zpZ?s>oAeILHDi-P_5^}~dVaxwm?%FYPs=)~9( zO5yl6(XJrzhm#wVX(mwnoS7Td>I6m~qRF&=st^loEnr4NQ>pvj?=>VB>|7EtNN@VD zxVPqlbZTDc*O(pXVT*d&L98r4o1ihn>vSr7^#UfM6fRcXebqvgEik8-UUMV$^e{Cm z^}s;IP^9YV1~_)*f?}00hFb8eoDo_^NLThS^oaAM>M6b=CG=PwiUgKv$=x1i!u};HoJD zn+KmqVXoaZs@rc-e(yulUAz#N!NNc`gIhj1JmVZ84;L$RBO+iRuzdTI*wNacmKz%*5MIbJ}V``~E%0bOMki^ZWSUOfOSRSv_+Bi+e zF!Y}K>~PIMYcb3(%%Oox5W{wtecuTx1K?Z}d20srAkJ(XcO!UUD_`-Y+e_6g(5MmU zTc!g)1_qEn@M1Ng>XIHNv;1ypt2kjM?eyut8M(Qs*4 zF>WQVw}cYZRjs~RGeX?HuM;BU(Q=5Hc(vg_ckH!_rTa>*WG(rK&3j5hlJz8fp7t+i`*M6jDg(P17iUU|tt+ZHVthqVstLGFwJ5w-R&7`AuV&m-VIDU{FHpTwBra{&voTPn ziM`iIWx$@WEY|qS=Rj%~DZzj}M672}zp1=XRrT7RC}vVHs8fZUeW5pDEIMX}oPEXf zi~0#Ce#8=4Z&v6VwLbHn8M2;wcbB7q7LV<81caEzDDpNv+IWbqX^&zIjM~eim^1WS z!qx~p9tk)_h-tk*`E`&}0R-I{I`YaDF56lN(PAMays^LUtr@a_%e>a{YCQL$sv$OwIu}&z}dJ*xuULg_{=9wyvJ|<$oN^EBL=4Hh%qnhR*bX{Av)IgMaNO5t| z6k{P=FWC98&yGnW8J|0M8WD6t$(wR4{O1rw2e?)qZ2dVS>S1)B#a(S=HjFyP=^!~y z55)SWBSua?4#Oo2Dlw7QPQv3tzxyWqeryo8>HQA=H6b270#Nqe+ z&2~^j$qJhLVHEN7%(y6BEQc;HP z7~4Cbp@s_Xs3?^Qb2ZzUCE#Z&WrAiDUw_XbRO3ywzW z;ocA2Bkz%PKyssoW5lk@?ICiby|mMPV!Ao}beLESN(=yhaZX@0@=91|9&HJdI!gu) z$%sM;mj4O0&K$I*N`{`oa+}9Ad6F9+DvnbIf{- zBJit(e4%KDGtiECjO!6!t!z&0?NApwPp#mQ%|Lo;c^-evO{9$b&cu>wt~zrEI?!{F zW1u0yfG90W&sbN6^(g5-tyEy{@EgatrBIstwM)H#KHLPq&qTlEJn+|MrE7uyJJV1f zleXG>;;S~;KklC6CqwpTZA0Up8NTBXYJV#n$9vW@d|0x|>r~4EDTzG$F0$Zr#=m(J3qQCWv(s@n*c)0ORBrd#ooq3I28JCgTbS3;Pd>h<8y4iKjB zwLzcjgWFwjr^$>Vb_IB%aE)b@W&Jj%Ocbt2_;hHvmSM4Ql~{`4b$->G)1jpYQKJzm zdN%c8*2$Yl@GZ*ag)OQo*Y8=ap=V5!Fi`NMLR`T67M=B{mrr;cgmo1%m@ujq`u1jI zhQuVCh; zU2xEZSUh7L$D`8m{p#2U#hXeO#?9-bZBp_Xto=RC`=O9 zlqH`dRgdb229V|#Td-n3JZMtz#2rohn@$bRe%s}7`}xb&Me`DsCGdN^Sk@A`U{QTe zOVN0B)N)93A5m=|7Qs(!MwyajMvv8S$?T7FG~F@#!@}KntBCG|e#E#A<&#GD+UGEl z+f28!f_NlgkI*VT-p{{j@eIJjNps;D?;mTQ!M22v$>R&9x%q@gS6iH@Y&BANyQ#%{ ziL7SgZDOg>k2#C5go$-Ctl*c)P@Y?F2X5FKXlx9Jw!3r+Ozl1TyXHMy2F90-^uwb% zNM5#FAPb`kOP~EzF8%8BdZ97xTF8x5!axX#zhV)EVE4&PYDc@-qg;$1{X;^WmQTh4 z#qApkxh46$nX0|cO})?q=6RZ-s;c0eS1|fl5~Ynx@2$I=H&CM``&|ldRW+E4{yes$ z#QrFZGE!(nX|0Q)v;B&cPu}ViO(!$-3`rsyFBPWOU{udj$nb?!Ex#MmZ^p1EWWu_e zp&~6RCLQHaB;>+4o#oIGZkCckw=M=YOw>2N!mejfgbam&t~kb=?UA`gaSeS!n#C6>MOhdI&XQtzlxafCU-qkV;*(wO44b_fiv+877!%LJQ9Gjr_B z1_^a|xSca{A3LZVW3_3~|p4onDYi6vu#`6dv5h|srCJ} z6p4;!x<#ph`Ib!9PBFBH z9bkY+$WUkVbFt z+0v@l^WV{e6^5)ciB7b2udlOB2JdkNEU)9fiJoy2y`E!)OMztEX}%8USHzd3XZ_aQ zH&L>LM|&vUBnXySo`%A{EH0nk%3J%~!Z^P1qbZyC?RZLursnh`C0Ekm%kTsZr&1c7+fTzHtsR%ter17E&}0n zVyLpjAzKfm^W{2U0n{eTf^adD$DRb=hu9iFS@*pqxUi4rPmXD5Zp+zUL^H7Aw4tI2 zCa*k1&^}Py2CjbI1@YaA!Rk?t_fnC16h35Wff8c`q6f&v-@1y%RfkCFuGt$R1piRJ zddAhJ2yob9#J=?L!sCX1a;m<7q7CMY#MEXEEEZX>C(#xSJcUp^(8wJ(c^mYu7W}R| zyXkw6`ZsvsQiUw&5lgGLIU4mYSW~%IDpSvdc-InsMl^bXu8>+WIy{KgP%gIfr6MsU zUB3wa{>#TI(z~+|##G5uIAqsK=iwL34AR$UGmJHwlDAk5(MV^t8Adpnc{-zGTpg4S z<{xCI4ATPJ?Qvr)-aAO?h-g;RrVZ*sEbFb4?r^Zzud{<*qK+APx)7a0R;J&Bcs3JJ zD}*O{VhCSZ7ZaxDBUM~BIdA&P+5C_;xJP@Mf`&fvA==!pNj{58nSF#Rv=k-r*WeSr zyk_wGOwwX1Q^=NcJs>65AO8BPKD_-Rs$4&QjQE{@mE6kE4o5GKOV&Z>^=-h>+{YaysDB2oOZ+to=_1t zie9-WInlhWbl@bYkt0>}43=`NqVEtUwc`A&H&Vt(UHa43>Jk_@qIFB)F3WlP%Xo$E z7KUgPNoaRLdhELJE+W`*U!z6l)CaC*Qe^ZNkkID$Dm7?Vmx3>GBq=@ywT78}g8XPH z>h7Ogk)drZUJ6OE8b3;kRIzJHyT>??PKH~w4`EVIc=PNT^oPeIG=V{)0y2p2k2LfR zn1=kqfB-|LDk<2uDes@{f}lV6EvqB14&oJP;xFJ)fopV2wn2Xura!Hk!)uljn%?~Q zY9ay7R1M$cCwyY6L(hUSeF>!mp>yZp5WEAHmUUmvQb$pA39j~gqJ-oSy{0L{XnIpO z=i4DNS={+5*v~QMW+lYuY}HkAfp4EH0!8&bO0@cf<1D*=YsqNR%=?QzPsKMFGma47 zXXp1Zgt>?y7CTkSnZ+F$fRxt@Km%3!|` zh3<5T_a*8C!5&tSe+H-3Mc%n7Tv2ACs*c^Nng_x1PU82U!!bIuifme((?*nup6-Sl zdx4`UM?Mf69ahe*nZj#OU6xx(p`D347JEbzh~pI~YVB@FW~rjcH%=G12o%I_Yh>lHO(vU9==~ z(a`^nxq;cg^eWwq5#T4`K>jzRQHQH%Ox z^PnF5HGTA0N9fCVUt*hHrL}7Aq6oWVVBd*dbwp{wlPmJ|Hj7Y;zSQ;X%k#{O zyf$Pozo|X}*ljI*YCdf>g8L8|o=!|FfAC(*c#1-wIbG2$-QKN~m*tWkOMlc}5k?{( zmjjxea-Mp8v{?Ij36maH8w6p$#J)d=6FLj)5k#t2&T$@H-`O!Xbn9sD(p|)rhw3W zPqOjqp=_C z>Tc%vb|mID&SN{#8kL)qpVQMVu_%!R0!^J+@)IJYU5-&}CK??~kBj8;_}E9cjdp%h z`5WL~Mx=d$*MChcL*P1t(LB>F^X23w$2%^EGju^#zv%>OJf1QYhWm9-CrHSXI8p>F^yhY~x9zLHo^ z@S@n(Pwn9aZzUL1eIBM<2yN}Sb)6}yZmF_$jhXy1QqN>LyYPjO3p{qYK`0e_)8)gr zFa{a2QrG>sEe;_AaeueNagqxtaV2r9KRQ1yiGJ;TG zbQ17m6t1>0roF*Fnn!Fu`suFON@$s{f|1F4G3@(01`2LC2l*Ud8s ziDL`VX@Kyivu#5W{Et2+7oqmH9XFH*YAPfa=r`oNAoyu`CUQ<(-A zG+FB;@@Gwg9UoHH-`F}d=q;xMzeKLq{RElPY9GBoS$`t1kga{SK+K7_`kRRHgs3H< zKciX^!AmZHc{o=aYKbw~BuLH`Yxrj`!jn{iMjaL@nEzBEs=y8N)dAcNqek*=EpFp( zpKnjF20p^vbj0A#^?}+x%zfo|=x)9zRLCi!glkLh!mOQ=qlsj45c@m_`{v_t=vJEC z9SGXv5%OHI7dtt}n5E^`*o?+~1y@z?hWdb2v|*z<9meZ7ZFOJjE0{{R*0d=B%S|-Op(FI}H7DAK7qr(?St)zxKGU#enDZk+a)(EO=a2K4>>cBokAAa!QLzzWG&pe^=*I`wj>@&6X{gjgqO~#L3B&%izzP7?Z zP_gji23Zm~Tw|TH?e9LwgXOLx6w?lLZ-8U*7VM-uC(ygEPRg}vKBMi02bYhzW-j1= zW4rkIx0sY=y1Gb<*pVwjATbcKxlVaIElpkFcaobd5w5j2nKSuNS|`3)rAby;te@og zL2HlKWbRMX6btcd7BEF%?^+G3`h)E41M-K@Oa;p?n3;nT+WSs9M%p3Y5SE+2tIC9p zt&n7vHRAcnHSsfyQtjAb!;iAONI9h(NA2uvG5NXu)wD9tTJOovpt+_~(3~#NrA`u8 zhe|5@*`lCS`zJeF_e)tnNUa`9EXoXBv8et+XM%GcoDMq(D_C2I>qgegPnqqh_S=uVC*fCtE7;r z;m-~!L;c%~ZspUVetIgk5YqPRizhv6{MgyZ!{;ADp}S9drfDA*=oP5GBG50dD(TTw zePy9tRoe61Dd`v+@lb#GaA+v@JtteyWs|%Qpgo+csWnLVIwL_-Fl(2y(gvmq+)XW? z*=aZ#g+w~6B)yak?uUVcn+Lz(nnfhaPK^R`gT! z)uvnn$?tLZg5;ALl;FB9SMe*)MfK#r_A_v$r-LAn(?MLJrC1Yo^irHU@-srrrHVbC z)gvHz79MXE1$x=*yl@%!UQo;;E%cO!{4yWOvbUc6%DN>J{Rey0N&1lV#rOc=%ucJLG?WKdgtU) zEJMH~4IIA2%rIy)0Sicmnw=z-0=+K?DIFv$*aAq!mZmoQa6GZ&H>4J4F_pHmJCFh9 z+jZnGpb!D`b*UlLwIAiliJ~chUJq#WXCCzkkQX2%_PH4#F?FfpZk{vA)R;iF!VhWw zF(J$V?`U{WeerSNXNS7f?Mc!j8DPYi9(oAFF&*RwkSlIcjc?vPOesy>qqglgq90f? zqaVOz9uKp!P@tbr8vd7c@nr*o_+jL3-)Ecv*nT zI}66~QU2n@1tS`;^GZ;5S!$}9h zRezLcKb8{(=s|$t(EKp;bWs2O0WF~6M)Ha*dl`ff3;;cBFboU8*B8JEW>AIF|M066 z0y9Sg_z?>bCQRtS!~ukbEi#vS6;rDMh6;gUE_FhzYasK}W^CeMGp*48dy)>|tF=6? zD3BAkXp9{o)qhUhfIQ*~01_ajQ7SE|m-7ShMu3M=Qb63{ zQpMq=SmMXPyjV#Lpv3|?U;<*8qTsM$`A=$0#B;dO{vWs-VR}Ib^#E`bnf~ro{$C1} zkR=9z{F=O{Pe<_|y2Ewc0C#YJ#b^jXT^H!6REspEZZk5Kl0`bu?|oH@VJf{xP@o?! z0uqTDesAw!2n1#I@3|0QO}wuQ*==VVzW>024IYS+y?lqT9$1FrW|v zHu=d1fa#(Hb?7HdU?{bjgfkNA-;f3oP1Q6u45Y-QGm`u_| z-&oKOAfpXc- z24G$1D*y`&I)HDe_HWQ+FPjTa0hQ&*&t0aMgj{oT!Qw`t>|AXB5nWx;$#2xVRqG0q z*|ED-9g34b-jW+T^=aLB`jZ>kLvxkpMwT05a_xsky#M;UeBYq8EU)AgVC_$8Y+>bp zqD^vjg65AzO>*6ZbTN2N&MirhbW6~rKJY?xQU3DTm4gaCPyJ?ue=R&W!)1h@vmm!| zXqf+wgddkA#r3NnuA6~_^dzIih<9^l?$Y-R~yyriG6w6bar+leJ61*3QM zN#rMg&W*G+WaZvXCb{0=@GZP>zoNEv3JKwVqCHEkVk%7q0*Clgni}-p%InF)(;3rK zOX|rx|6nfV3+$GbNC)NK)$aj-EnfwV5)6mCs&fF9-T8AVR(q*vI*8{8t|@gJ*f3;; zcIALZ8Gtn=uo3uvUMN@v#mt$}o1;4KtaQ^el^Q_-+XlWl0#M?B9+5n-0i*nTf^>xNVc4xnb|0<)Vw8yTbK^zO_%3$UH20z3O= zCHb$9p#%kT(&Zx^4u@RLUt|^NgKKZjih=NensiQRJPVSy4lPZcJ!(b5h7~Q1{P#41 zyrr9>TBKwt=g;DT6X47)UHOsz8GTh?p(X)OAAAPbfxSu=$5SF4xP8|EtTnxS-I(AT&rlweuY4{(o%oB}9p1&XFYUpB1* zJxfVx>e96h?tj^UjO&y9e_Z(h?f>oiAGvq>yUG8%uKzs-+_RwmuM4OU+5qnVjkT1f za(oa8xmB%Jto0l|QbJ7O2>q*0H&!kvK-oJoVvUqgJs=!NG$V`@iEi&$SsrIK@?ot+ z=Pm!Q8dG(-FV@F4FerCecK^-Gyy>|QG5+nubZuyY%4)fDK0jpY&#^`GNm;5&(R8^E zEIy?_&e3^L=o2{7e(ssAEAzLfw_!dmq~}J|;sF24Nu9S7Q(8mH<6-*}w2#dSaNctP{-jeZ>8l3NJK~ z5#Z1@aK=e^rV7G8x|mLbq+;ikE$~D2_(l~W&Yr2e2Z_3RYc?9dUb0Px&CXdR167@H z4vj`+h>7mH!e(q|_@hve2ZvCYO4OV=&W*FeAx6GMn)57DEH~E+DR|h&^pbh7n0!n< zMy#K+t-32W5B+{10mqURFkHZ0F{s1HrO<#?iI(DFB976py=W7-NIdM1C5fTMsnLz*iYH!9CT$$1)kaegHk}DxVNy6DgNRH8SN`II`h_(W zES#+9RzJF3&JJ$G2T2M^I7dYLpwpj7|Kf72ga47C!S~uV^R7GRR|^nqg^?h^PGi9sCax2sd|y#^3b^w z*Ia}@!?A9H577XDvjdM2yYcc36OEfG-G$p2JAUmmH87pipd1q&aY-JiKROjX)I_1! zm8CVM(n@}{FFY`R)X2UOjn+%*II!GWvIgJBX0G9~@rGd7%SBEG5SyIQ#aw|UFZGO0 z%?@Hf?81sZ%FvQZHEbYu`y<(m)t1F+V=~-SG2k#EE13RKF?5~J;`J~$!oK?DRoGe_ zTx*{qYiN-r>jR00IO-B_s;f)zbQ0FhyiV8?e{n=UW}i^nO}Mion(oMV>!aL)#cX(P zNKQ*BMzH}AD9El*&YpqoBHWGBb9NTyyvrqNC^`$xd-VENbRyVY!tmqH^6%P&Lps_v zjVMBr_!&3|j2<2?jDi_HO!g28PLm!Z6^x>TK8j3AEr|vW0s;XJbOOQxN0$^)6+x?t zimG_K%Fp`A-1Bxfc4c-p-hP&QbTgSpc?T(=G?~F9JJE~%n&JoVzopb`x4`tA8M!N+ z8RM;9Qw~GVh+bJnsxFBN-Ps>iqDT92v(f-@iFLcS@Q)|ktAhVsr0f$|Z=@a(vL}x+ z6Dm3#zA1rN<2PNoDz+!Kp0)TIst(kFK^=){A6ETT1t(Nf`kpl~QmVsD885dPmyoMC z((|G-Zk46mBSJpgYH26}-NRH#Qgyo<&2rr3b5}zC(z(k>hBt9JnzBGVhOM9%QXs ztvPC+tl3YYo7!;p#j;1V%4mzDEiGS&Dhq~%gc6SqcpverE{ayxv&AbH;wl|%Yp(HW zD3YFym0~{0V5+Gy*vC!occ<4G!5F!*%hZSGNNZzOYb+f(>`Q*%jLVtH+o4Z!9-bKH zN^F2GsY^D$WUC^OLQNqYfE0qb;kf%lJ{KhQy}rcr2EvD!F!F_V8DebjKIM|X}Qo;v5aIDkLLQEn0I;WI)z2 z@H#pPd)x!e^_V(XX8q=19zIEv+)ksDkW=iLq?k#ad_#VC`7wG$p1w|y7vpXg zLB(G_zLN`1@32?ym_l&8{5k#Rd9HO&eLskOZ0~eN8MvR(%F@H-P#~c^lwgeur5RNE z*kgfgNPd_NyU$4_{o!ZMKJq203ybwy~hyfbP^dF;dutg7{n0Xuo7TiigQJ{6}Wi2%hSiYYUpDS8&x5}Ub!P@ zOZ4Mw^=+DK)0s3B_t%|^iF3kRht;ODzfgN#elm%X=cuP*8Y;W8F8Nju8k)I@pYWDW zORW&di$Ff!UsqmeVTEmo@IHyTiN1wAUX6}|T;6RpD;pRt zW0b9><-r%maHeY07u;0E8lT9w|2!u9WmBxL5SE85RxeQGpk0BBeBakc=J;-{OtMA! zLe0TWa7G=!5&FaKi%|htF9hllgAC$95>h#39z+T&`uF-8+8L3SP#53jT=_me(aE!g zo2gpHYC0(uJ_^+m77UM)8oI?=N!YpH{kPHW66oA{FE{?H?~~$}`rN#8qk5#hE87qz?wY0yrghxAo{^n|^q~WloGDk@WUBka&Lj#) zzP)nZzMD9Y=pOVHKU(HWR|P5s$Vo*ca`VTCV@HqqC?YlVk_X)awsoM6mYpo7Z;H={ zC$F~8gK~w6zDe2<`J}hhD-kCHO3#V6NiI*)>O4>V~=k)94j0yC}#7-l@DEz&LNwI~LK zl4SpM{SLjoNjv>Afn(xNS`&}o9cwwOV>w!%110Cdu;iPN{0*>Q7~}mAKB<2bl1TmJ zGOoZ7b@o;(CZya^+VSmqQx{v(3Uomh@FihneIhEWHsmmOmr(K~*dT_;w>6`3m+TMd z_X%Wt3~(%X_?z~df)%l?2+NaD$up_aqant=^j^$2Y2vbuVZL(2&4Mp))ZHl4h59kv zbe_-TQ`9h^I|EL5no`xa@qyh%y&{(^)}1jwU2c3wLdVLMI8c{4*F7^OqXvsMb&m!@ zni6UFsKwk*`bR>lIhmq{<=Lm+Va2OXHjcRt*0^!4KjG-}G&%A`m%=fS^IlM%2fX5O zbm5}~$;a9_+oQ&KfPzxh2O6G85+w4RuAM{+z3h{pdo|L1%Hbp`@Dq`8Q#q#PFah$lQ z$AB_=d+5VQ%Rm)=VfrFB8Pn1Hs%&-);iDVqud$>u+{OW<`-8DUK(Kx`#~S1UVsqvX zWrT1iP)ZqlXO@&)pVA%qBdFX$%Em6Ooy?UoawFx7T+9sp_6H;+zi1b^{O^m3QDagR zM!G@V+;8(c3a?YVOx#6JHmHIKh$+zv?VKy_8X)e)2Gk9U8oaZyIfCykMd7Rd<1l8O z`vsv>c-%Z2N=29n4M2t_`iD^<78?c+Lv7|;*98@dn|}ii#JkeMB=P#Nu&YsQ^ItC(R-sbWgpK`%d=P*6FtAvoG$He-5ZZU)a4u zTRgIc1m5l$7e4a|SVDX1yuQ?K7xIUfXBbWpQoleKy^D4$HRjRk@Hb^zO4J-beakV{ zTfSQ`-Yf!LFi8?li3uT@{5!j>q6`gYJb33L=SBdRba7b&TY8mb}hS?oBN9FOwJ6U0n}NhRH|v zU1C}5x2yRL>YWn7{*rG!z9|7fYYj+6Rc+F7z=if?M0JIqmQ$TDUZL zs3mA>3=FL=zN?OlztQT^QhA^}Z&Vk{fqojc-l%E_tsZzA%@^3F4TM9*eaz0$zF=M& zz0(#>bKVmdT<7(skj9m>oL{2C$~A_M3UH&>-!~o_qpuLR0w0|HY|07K#^c4t;^8Ml zRdq=x7>?^*_I%kry>6kKMjtZ^JcSB17l)pEb%z;_O#_CwWWH7+4wKtpb)1}G3WFJ(y|eZ*_gpBn^BV6qH}SOEs3lg`}VWh6&k|H)i5Sl}v{`ztCP z*_i_5uLJLj%XmJf0-gx`Q}jnpoA8~(KOqOuGbb9byin56DNeAsm*=m!sEzdt+%)ZG zv_fN%5%ASejf|?a!62(o(z3LnGZq*)BCcr9Jh zk8HSVGYrS%%wy34hY?|R040ywc@!~nav_Y35Qx5(&?)@K2i)V|l#W>XJb*2wv>yAf z@S+!xZ;E%uY2=ZUKo;M}*Nw&aI{!kHc`XCR2`zdpXOc|80Va+Iq<&6AipirUBLfago!GmQ!2mbBe9DnR#Agwl?JkkgOy1dV zRT3x?&Ymo20FpfBG$#&K129@c0sHzx=KB~eVd^=z=M$fBtFYEeD(HaFe#VCLG6kmrjyvBqV)^N#p$RI503J&)K^2gAnN~Oh zLSvTXv7FE3z}?!EK?{s1Al8z>x#kNGXIVb!*c49$P=1D6t)2Iyic6vZHftiy{7yFG zQ-^~AO_ZYBkZ1tMM-=jVs$OjZfc_dfZ1(gt@}5S0%;_(;1C4MFSj%-N;@5!bdwjMA z;8XY8Mi9^}&#me(9Pb<`I=;iOV2m1ABs&K^?~7n6QWqF91bbf!U1$~nJ_FF-7sRs( z6B7W_d+LgB(Y+tiw$tBd1wMD`epjL#0gxv89lD8#=BVW~`_Ea2kmnGT0I3=yz(+wi z6<7K5y!UK)@{el^>X?twY`{RHzJtJ)<3TwC3O4jROD$Zuy>14?dPd1D(V%y6n}>jTQo+yuADKRIS*T zHy(hb!VbjuZ;d2LGzFw?b7|>r05fq0%!%i%nyw)a_6FQQh9<+Yt1hQMi|yBUf@M9m z0;ECO4gAQxNx0@BE!UQk7Ld7VjR|oeJaVOfO;L4rxVX8$xF9!T_~>I8(tny;8yo~c zka(U6i{Thk;F2j7kaydbqpPe^@j_dx0Rd|8-)FywQN=?C5chm9mtjo*K1qb~i~(V9 zHb&sn-w3Fnn2)Y4lRyLWUPx(?A^^`-@E`yT6|f<^Ycb{;_ojda7)WHkTv#V&-=EvP z0?=2<1pPpC!6gN+AAKC*9~@2QJ2TN2c1gF&PN?!Um>wa?|h1kJ#7NDGT_Sm_|qe(@nF8-LRkJQ))DT9dVx zd@?lG7z!ZeN8%eIS1^qQLp*+~?Y4zYEFpZ-ci2swMKWY=uB%)`GOUgU&NIUA)Ke#! zr!&xnItZSFmESOJn!U@^)cIZqGz)ADrDyC@rr;&1okQ*YrX}=VU>jOL*oa@f z4kj#MhdB6zIbMu+ueJ+DPLB_pKgNB8lUiF_Lnxj7M5H9^M<_#6nQR*qUa`#VqR#aK znF}jGmSF!unBF(}kcsw^Ib)*DZqmiXmuV@wdJLF3=6rqHPT>)A*K|z&%)Nf{W1x#S z>{6x`tXtQHn)6X(fOT9~IagrHg~!yB$ad0wo692|Q#bdx-+5Y}cG7oWU_+(<%wxYV zcQ1?un-^l-{o95Jztaium{Gk%N@?JfD^y}5SY~7HFREepzdL2v5FIBc;tOr;lDDuo9|2Y;JU*!eKI1TE+M?nBuNn)lm97nQC>pm@6+Oo(ak zBLsjUQKeDA03%`B34W!)%5*^_i6Ya!ug&{~i6fTP{GRYXSjQrHk@Q@1sKpT(sz7p9@ zR>^kiwN(r)86L8v-&cWJZgdYZA{&)7W^y;D?7YA1iFZ`LbQT(~l1)I>F~f_H*owYr zgtV-Pkl2al`MJ{QNu=ds3d>DeP?y;;!oG2tKZWGym7Iv#Zb80W{xpj7KS5vt?IlmoFJaLVVm&a9A1JS+N`b?xqb|)-&zdIv3DG!I`ry5TOnqF^< z6Kf)5eIBcB1B(nEum13Q^Lq-8C0hudAPX^kM&_?kH7y@vzsLh0wjBxO96aMXZDw#^ z`2!!U?Q7)8lJC7a7th;-;4aQuqmD^Ad3~SB_mvSioz{BdPeCtsoR#G&ewr{RkvXG5 zFT+8`?3TG^Cku041ry$e=|pRe{l@al2ectglD0C{y0TcFi3rwL;fjr#NI7I<%gv3?U#v>-P_c? zNf<|;dcmATVpG@Z#rSRGuOS3SYh*0l30>aYLky`M+RR$J>&Vu2L{if0e?3hFg-L5a zkN@mvSgO=P#yj$N)d=!rqw)CBWMm&^l=>Y<|M2U>!~J;gIL)Gy0vi(L=D;xLJtG#c z@Wt@Z9ezVpowk2;AERS0uIRJc{5dsg$^%D^Orn_VAnzYr`sBpg*729!Ee+O!6O!9| z0>ANr0*AewpF~#}J=*?|Xb*gqjDfTz<2SZgd|vkH6a6>{ke5+Nrn}Is?O@e%%|i94D^>5Bjw8}zb{EIAG+1uUr@;}P|3ya*VW_E?*9%lQ4B4o z=Pr+Tdn!NNla1=j-DbRW`}uj;{H59vM12^(jppwB!>*E&GxJmDhHx@15>}a`M1f>A z6Zj4COE7D7Kc63_r3U->`MSIyg0E$0i{|!RtDm2Q2@iRpyJJ^&NUhnp!!FP8(%SJ) zumhoqkq-YUyIz{#eBi15HUWA zy}4OL>efw%Me@|jC=7jJto^=LV!V@kgX3M?BE5prJk%Zsd|o=Scz}> zpBkQ13GAo%R~hWO+kdIqaW7cMBkjt{fd4TwREyd#<8rCuQn}osbKpB$exf#Ko@L&z7>w$hs``)6oG!p%|_5w|yhHMZ6!jEGD zgll!Y5$s7>FC22pr_&$C>2Sx-d2f$a%~(G3Su-PWBz-G*dU+zZr1rq^)i!C)8eq8k z<^N!o&pPCUzG?Q|+c2=8ajFm9)wfAQZD_={(ev$%`qwAnp1+sy9vL{{m@E4`1EJr( zUFaQFqTH~iD=;HFvRHGD*;{+L()X#hg{l9xcmRJ3nAD3tweTvboM6(*(qy?|(_q=! zZQbS67VPKNq7A=q$7c6FKN`DB`ch60FLqRV_>)fyA?x$*6 zXV3O@A?joofhI!Msp9N6H3n~GUu2T3Bo*J>X?gPLX}y3lNW+9lc67rXie|%)4T{DQ zlM=_fiOZK{=rs`)f*E9(IONTr5hv@a>6_q7Bqv0*xu@@5GTQ=kiS=7X3m@*SG0TK7 z`$qJC0O&v$zeUzPWSuG}k?BV^%_LLR^%Rq5D5~#jL6(*uW4keZFhv(VXkQ`~zCwmC z*F(ckAoU5khp_2#R7qln7*EQH1O)w3d54|kP1j;($hIZWBX>V3v%Kt?awvM-!aVJ1 zmOQ0B444WPN;2DUrm_8T3{szK@DMU%zwvNBdBs3wY=DL$k}(1X8yVJ%ir#>pv!i{W5o=Ze9J#v)gYitc2}5+z z^L?OY?3aK9m@cjVZ?3F!T0sv_g{^_MJ;t^s+BRbYC2xjYT7tjGH=dMheZ1|lylv6m z=E@G*%c7~u%REoSkfW~+(KTiQ^0TjB?hf(GT@=%3?ee@;&&HBvzQj)O7!9T9n8{Vn zp+b}$3e`_mKO?h=jP2m7s+_+6(?eQ_&2uW0y>$9o#G{% z4e^xhU*9Iik-uPbYFAZbo|gaB(%o8m@G$6VqQzx0)=v#yL1sc#pT)CVu}Ch&&d!)u zpuBH*c5#C7yuA>cY>I&`!D5VAwnAu2UP_E2Yz(R#|47r&kyak2^X_rvXr<2-vPI`; zu-RFsgKSyBW*e`qo8fFokM7>23egRV6r`WuLevm$ z!Rq@>isTZxol5>m%c<2C>H)U1PO%1LT}akRSkyPvlEkAVCBp-x)EP|?R|(9-Jl zqy%P;b-plNVy7SwH_8P)$=d~>Om64Hu&TAKy774dh0%wwid(5VWBVh0t8ZWyb-FB9 zf&il*wWl~8L{SPE3TtawGvp6B#XX=QVe^LhVc^>}f37V2%)bRahR$QMcI^5nuJALs zq>RK^|u4{LR!_cntQNG+5C} z`f?)y60q4dnMj38$nYi%v&e998!AempQ&;URvX(XJXE=#G`t<*eQR)4>quY`s@fE| zK2|P}*3T$Ho$}Tvc$mZW$(I-TMiHu#w;F*qSN;`HjZk+nwuGGt=tEW*Jgz*kU5_gV zx9f4`&UPd$kncOL6q7Z|D8#Um{FL+3!ritYNay9Z2|dwB$JBKU&LG>EwH& z)q(s(QF&Gl)1-brf|tohd?LuRM%J>Nk6Q%HnZ#T*#`i_rZKD(}6X2Tx@^Mpu+)TLZ z;XsaUrU}mQ9#6Vp#sYQhgbQSzZQ}lbu}5h&Xq&6d`=*e2z8OON(PQHTd0x$)$Nu>f z0WUIueMqcRJ3f5xg>I40Lbu3gp{vX^Yr>ry;+#tEWzXVlIEf6JXw90Cf-buZv0V1; zJ5Ja>m4IF)hsTkd5!!dyM5qatf72jexQN{2UZ+AwZsoj=R*F1(N>ej+Kt@~VOnHz1 znziqwhkTN=PG(M%fz+w;LqcAB9V@A`WJ=x*(`7O__h7b>Mxh@X2ObnCciRK>E}2%4 zX)^YtcAg8E3OsN2djz8;VV8+ic$N&6_hJr@1=`!1J{75Y(Tp6c7iW2U_2O(j8KwYL z>#@g11$d&RSRqzo7vN#K_ArN+VZOA;-Gx~e3#+fBHw?7^1AU(S`kZ(D5;RuTM%x6@ zs0uZs%b)AjT(U~hAl}cC`&7uCONQMr6p^9Io79hCQ_0th{hTc9 z(qGeC_t*5){+f>MF+ciVS#*xviax^6p?(Te= z^>Or++co?Zs_im!6FQL=-86#Y$ZMZe(Z+x{4?xe~h2E)I~7#{+%zF^V>Tyb?c)ygqi4G2;Nr`E#EX z>XczVUs*ec6;jH!nx`k|&4AGd^qhV%8PwFjzNV&u`l`vaJr?c!0X6lXjE$3I-J(2t zrO(RsG;Juv=E*+?Q0W61)8)1j{29HBLTsrte#=nXDl>RnC6Gp)6t-3#CRQPKS2lyL zHdtEvbWna9ER%7Np`Av{TJgLjzeGH7py4>Ah4!RD{U8}kGSoU~%(6Ybd`b{6&atkVgsotU@)dn12|?w_@GA`17A|*~GH6mM3i7!25;h55&cjOrIX5FhA#&|SGE9!8tiPg( z9?j@K+xLOpkgzYn&cIQKBWP4)sCEQ>AqqIqU*rKUTlNxac`>yYUN)Xp9x!Q9`$Nvz ztet+%6pAxm=_PAMKg4;!qmNT8I+1gG5>S*whC;l=dzx&I|Jc*Z-cD@iyRtDoitfw7 z#xMO`MCdphg$4{p~KSv5jSky-?&jWq^tdz6zaH49>lu19}jjr~b_83iAzH-uUAx^-_ zW8}|HEAswipt^<=btBLEud;$KrGk!wb&)IJM?1^vv1)EN@z z1eXWoigR5d&IfLXyc%Q(drwtIE2E*=SFOxkp!vx}ErB9?iCXI`0g;sh`qQeT z5U*<*y@$aPhcp67&RC-m=QF^VA#pZjS77{h6~0f-!--Icb0UkFIjkh+8--&vp>Pgx z7>dYnfxV=c;DshAT`VsHEiXCR%Ut=!*?^D-Bv~o_$CJ{p z&ic=mbV{qduTz@wzLnBqOqEg)IHe=s*C}24zLnBIFFK{{WuWCHM|+tozX?p~Jh@AE zU>C`0aFOr2(`vxi2r1HtOrtg9dJU{B@@%-G3sb&MXz(WadcDYZNA@R;{5{p{N^!C} zFy}OoZl4WU(xUfYEz3L`BA)t7#o5~Jq!rZ^bT)ViXkjO*RmlA3WlM7V=bxD}iJtOV zxkkeePO&zFlfF$*PRrz58gx&y_J%F+1*-q_SR)^G*+qqoIL*FBUYXz&6*j^AqKw(@ z5Y-DEH`(%DGn=SBRa;IyPL?OMrOtLkRG+Oa7gL;~`VwvVtyLvA@20h$}C=%kz{Q#%fU)6*2@#kXgF{hB5l3=lZ=f*g2j||vSD+YfA5y$ zrD%g}P8MesQ~X1~INW-$CYWXM-;|AV3b}25hgEOjZ%W6#^MV8))Ey1eCOM|QOW=Q# zZ2zK5;D3{x{*p`JzvE7Oka+pSAW>s1Oq=C`7?-#dDe9XCkCiu-X? z6ZeIMov&XWU++zHi8xz3e70eK@<*3&+6r*YGKgf+D@Rh5!dIs1X>i1 zss)?)x&o-{7rd1(HJvDFt6XBW1qQFW;g z%r+56i^A- zvPwATy-ny7!C5ZxJ|U+)C?~co`s01s{hm;qnF@}@cMWA%AI7%P+ARvCh9Gd_ zp1o`Enb&T+L^twLl>i*4S3aHJ;C|NU|6J)3Ey%IG;TNcLcrQX<8av4)dJ{6lA1%A< zPeM1%p=t4v2dRHF)DWtpROPNq1kJ9$Uqxvp0k3$xSM`Q4IGJR;Hi8mOO964z6Km(C zr3CCfL&DFJ<9`Aoc69=w$G;ow62B2*H+@mpYE&-gU7`g2ylaU|L=s%11WMWLt0d*x zprI~Nn~;`7X=8e_jlmywQcZ6__TB{GOD2^%H$H7D_uejI81mpnrDbml!HX=43I^Y} zi}J6YB3_6*^|DK>C48?x$4e|X6FY%rRpsel(sVe;w@-m;K|%>5FocU|XIX z^Sw);FEQ+XIaL1i=T!KHEPvD`$`KTAw@N=1#aI5b#soK&%gs_EnV>Fqzslh$5iJZi z+Xi))Q+iWg5OZvCwur8V+h`w?!>9?$*+f`qkwgqbGv!CPlyogQzv}VNy`%EFP|lly z%K-^H?jKo&uaFDd6MmVn+kSYlNNkq-3W-@dNQmk|B{O{k-Y;j3BYHEUcJt6ZiT7o` zBPA}c%O}d)KWp{YZ3ypZ zaWp*Kcx{7ApyJ9w1Qj@}et>VCw~aN9wYHRF6Ew%;TfvVRsUK+HFA=oS*}|oKS0bp2 z)8iYv8MY6N2WMy%q0I?u?S*j`!gk8&d|Jc32^!#qam9`8j4^1ch94tnng`}P>x25r zZNE|hKTFQ*oyDqxBH4a6)_#G@L5c8=A4ydBFNP+UdHx|C#wEhP@rLooNeZKaOr#z_ z-XUjuu%CCnl-yRs+>aYZqX~-(_GAri%eN((o2#q-Q#K)}Ww0l4xS!6}(j5GROSD1G z@S6H z!n18PleXzf{4L=>2m3b$=Il1V+@m=z7Y$%8|Hi*!v)2)GmtV|$iNa?4L=!(I(z$>n zFy}s7#SG1%HY;SQ5~>z%>9?iWmQvl9<%kep%0HdZW?^e%yMMVB)RgcxrTo*$oZ+@5 zjWnkZ;bTkPE1k@K%vSHPX3r<)s!}DSlZo?ekDk}W*NJqflz%#zv&vTCSF8Uc{Ax+* zWW52GZHs6nApa&pc!)*fq1el;z|8vgXU=Jnb%@z4#80G3HWS<06Sr$(HjzdbC;FzH zz2w;|tkhm+6MeP67oQAZ_89vs2Q_;)G2bc9*2LNNpsSjAiAXp7iGc}RVXu~?d*afi zsd<&Q*sLR75ux?Kw!{9THMpb@scq?EVm0xwy-{r~u`iJd{3L45XZGnQtp1#9UAU+oxdI%gCTdGqsoXMBf)$EQ@?oJ}t;WGc#tN zCgu+%ume-DEU5hw9e|?@IhHBei)L>LTKt=4Clj+v3GBcWd=u2Jt@bjM=ued3#XEgf zUVaL?Q%8GQN%Yt65hve>{TVcILji+7T(yaYK0=4dZ6jHa7m#l3jv-Q~`$ zpiy(al;f0_M#O$F?BB|-Ty+X0Xp@|vJA}buIGg)#RjOP~YB52>WvQ2yk7dN(5LQB0 zh}R}TU&@xt^Z`rtih_d6*-%ze~Y&2x{nsp}EL5#_nBxJ-0v;zai3{dq$MSmUW(e)=Gakr9Zrc zh%&K;v)W}V{Y2^%UP44~K|xHaGq1lU4kpt0@Dd^lV$h$q)6Fz-A(7S=58793w)546 zR{DwgQArVH;!tO~byoU`^jk?0t&B~s3C?#v(ZtXQYBUigL=?oJF#9vNG%=M(og(fP zQ5L(@`F2+;{lpw!oUO%Huvh)qNFcd)Jf1*PWMs*Tg+UdbgyAf*4fYzKPa9 zO#F&SzuhyUEcUc>!zwHNWhwn-ONc0oZDxP^M=SkAYFD;|h*o+ZYK5Gg7N{$oWj`W~ z@eqB2hIVtCGkER&YBNI4A<{EteN&`3L0#>o-_@M0gdZ+0%$MEQUUQLVe?iPU_h1Lc zB^yFQPbi(XyA2-mn)749Iesksfgg)p zZSi<2l^;)c=f~oS{8+MtAJ1&#$I=h^@$A?9SayRS%fs8@@mynmtmws$l~3|x)eHQ1 z{&jw=Im3?^f8obVr8DqY*N7h*GWoH2B0sh)=f|r%`LX>tKVG}Zj~$`y@z_~|AG=!d zsee!P2&AMcgzgva|y{P-Y~A0HO*dgwsHLe;ssF zId$j@ry;nlEC^H~s!lo}MfpVgv_{YwbQPbwMJ%SZvHg2gnuy!fS=g_m=2ye2%>Ikx zIhVkdX0AQBFYN$pdBWvp)dxQ;?6;axtgxl9I7)+xQGLWXVZXETF}2^Y%^!?H6SEs~ z<3!cO@XfR9g9oi2rGg0iF?N?c&`~KTx?yod6y^r@P+8F4CE##hw68}Ug8MXa%E@18 z278hmaJ!A`WIza*joB;7liL-iS4kYsf@*T(yNWZ}!{M-y4I*k0GOwN-*vBQ{fGgiz zXE>WWk~Qi#WN4BcMCpNjw>OfjY2>gsmiKK@x%8RkQTeVhcyzw7H&SJRg{bXN*2e8FT(JuKzXTn(V6_`sn>CoYwbF3+F!Wq}VFORkg&X!d zf6jA>I<5NA?Dbs{By8{)-UMpjLyPV>sGZ#RUsD*NzaFPlhfW<7ES#akKBjyMt@Bf` zhzsp`(<#zI%O5nw)OuC$N?O)i)GQcZKQ4R7#5QZYClQ;r)&MRC0~#)^~{T z0S4-EG+5zzM#C?iLars^Ci)M~#4w-q8K6GK&Y4okH!WxVax^(F))3*Xy+NQ+2{*^5GT~!-W!6N2dHrg&e+E{$7c5MU#gsplj{Ej0 z5cG@%tLoh3mH&irFSa{QYg%v*!~J>Olcf(sKiB7@5Z`_d*VZwL_)R zS8HDSJrda4Cn4S6ArDbRkEQ?MpM4TC>jEK-$hC!qxPJFZ$c|44?oLpi1*?QKMIO5! zy##ndyiWp@2+j*(-}6m~h;tO+?y!ja-*5@XXr#gsUP#6{3(1>s{7kEU$6T15jy{vf zJP+ou2xzl*j6oV4*Dur0eB6%|8G&O5j*&<>E0u6ehd|cR;dm0I$O<1FGg;x|xC-Pt z3*7smn%Yrx`g5h3+PUd7vMyYHHbm4-5CXSg1rI>95wwdhVp5dFp;XLW3GQK0G_X`0 z4iUr1ah%8RP@wM9LSPUTc~DTBXBDLJG~$j z7dc+~`Hc{9iNFsCIOzqUm&mbx>Bk{r9NE7k;D#q!3f$3^K-{=!t1LvB%2w34#L7Y^ zk>kzeQ_6caLhDracxUjPpH3?8tqJHH;2kec9LK{?EAN8|9phm@9i%7=MMRFTqjxD8 zvj|;WSw~(opoYlt-C+U4@TIi_GE+W0o5VF+Z>m!`$ zyJ*_#sA<$BBrN?)SZc8)u{`8B>KF|vRR>A@F~oTiVxy1-M*p`%#OLIC#X?+D8D37) zKSxW$psIWucfwS);F*9+Z6M$8P+t^gxm%+uH?LR&Sz@pnc*i#qX_m?EfhcF0l}3m= zh5WTjsUIvH6FJ>PMn*Y4k;p3}IcObO&dc#2vod(cmy(sivo?9hw-QZX^1h1<_sBAR$+>gPoLMCRf7fqq`o&rpqz)bE_5Z&#(nUu_Mdmv6yw?IkHU*NK&{j zXuJIyiC9M1hT<_&FC83{ZTmgQT)YiyHFY2VEVYUT0GM^7A^Y_|79#Bjh5 z5!Bz~TfsYQGmnIbK7c0?G}Y@HM^7C4Y~O6xzMmuL1+Q<0kJ`?EsD1Ax=q;~roJ?{2 zXsb^B6*5bnCFr6T#?ceUO#GN7^WUh!`hdyhoeb-6tyA44dy}lWK!#-iJ_C1K80*~+L@eux@ zeKMs`P9f*HmQPj1`5=blx;>q`Rrvy8n*;D7j1D0|liwozAYsQmAxCekg-gqWngcpd z&R=<;Hh9+`d}zgSUA1o$;;d^4e!$bf_;`e4QBdrD5>b%|4gED*5|m&ZqcxB*nw-ab zp;#13oZLw@#h6RZFVwqNW-qx&%#p^$T`D7uy~KR4UJ2#L#6`v+>IsaCMEK=iBBK|M zC1!K;4n|%_eVQKDFQHt;#u15roaiewQwq*B3uvNc)Fdn^5YHrhgt?UZY@Wa zJrkrj&jhK?4eHzKJVDLa{W{HZ+}Ikhhd?)YnFG}uP+FH#wJdWG8~wZtF7q}ogRxF7 za~PYpyiP821pBl~qc6sB`^IcY*wLqf7g}ECjjerVK0TwtIX+-5yHZ0B=!v4Gw$plkde8I2 zzC_z_oJ@AzZ{)+<2AYkyS{l19{{OsXEW3hfoP0pNk(koZ^OnH)jAod5@-0d{)|_uN z{MU7->*F!{M`U!&qKx_I6jimKsd{|TP+z^vZ}Wn22YANKp)OH2SN5eqiQ#CZuiy2) zAmksuayR1^xR11dN^$Eo(wFP{b45l-noGF8sCULC{-h~Yb|W2Iyh3ong@1$_btCEk z<)&+vJiSll&Wc9*rpY6o`!-dkbx{VF|Bs03LSup}TBdGSMSq}?PoZl{cbb&AcFCSs zR1kmtUxRoYK~$B~-&aAzB^3{1K22;~-Hg45R1p1=e1qU?MBvQVh?E$_G8#Et1C3R0 zDF18zul}=X=IuHzBR*FC&m{dX33H=zMOCBquB*uC`?d0VU-JJFV28uf6d@g;ZKh*V zzDqQ!=Mv>w!qoAHJeL?qy?wbPn1p$8POu2O*rT-&RrzbEFXO|$Y@3YNk+;=rNU2{# z8vGivYRAeB5m_a{SqHI8aMndFu~or~C1=x$srn-&r;o~1XG`xJC1;xVjgm9n`$oyx zO1)8nVpM0B4K+#H1&YIe=s);8zcON^TRhG--%7?#xJF!GF$|Td&K?h=hb&7_oCWIz z4D_Kod;M|SC6>c;V}e_Q@+~B6Pxesq}Lv8raA}S{6kAAB6y)E z9`kX7`nw*Lsm_sesZq<92;br1z#9{l%2emWn;N?W?D7NRoV0>dDpQ@)LPn871~_`}$>}a}#e;ySVWc(L)c{Ao+n)Nt4vj5Y_z`w~_ZWR*cw@b3 zAARy{jBjqndd^a`SWf+{Gv<_mui;vCea$6eP8&R68oU({bHQlTz}j+%xoEU!3vw>z zOQQuW(Jyx)%U8yayD7|%D8x_bKR5>6ehfobj2G|$%6H`aiv_vjfmguZa?H<0oBLg2 zHNMO%)r9&6`VX$dFm{(?elrrO9&H9(i=ad=j4kAtKa5?IU7{g5$o2$vX<`MgU}5$o zm_Pd)O3+vfcIi#BGQ_c)OJ->i^9f(<6~SCB6JZ!D?AbK zt0wX-En+9(Z+J!MYO?l#7V!x|7Xw7-YSMCpPQ$JHv3;W>>DtrOr<&|Ks)LCpylOK` zj^gNQ@@_93Rtv)02guRY>h0n`{r4`O`!;*)p9Cb# z@k%)7jl;QrkHczAh3r!Xn2_+HSHeZFgp2jYey~|om@Lvh^xg2?^L4lNrL+kG~9yy zrV>F1Ld50fX#WH+1myup__MipDzW435b+}@>j{3%Lvgh5P99~^6RoMl*EIcwU6!Ssi)pEYv!)V%A|L9LYs;2?5*m*1P9?s@o8wHv z`}lFZOBvxtx!RvS5rT=p{xr`-ATrJ~`d5kbjQ)vnp3y%f&NKSACg0EiafJR|JrKx> zmfq1n?Rbdzj|Txy!)o*&N(-&Key}zA-z5ahvT4?yh93R*UI-De*Yf~+^l$oIh{#B@ zWcA?XE5EakJ^^J?dh~xW&Nl<>{K`K1#9S}oV4TmIQB=G50VQL9Sz1i)Nb~XOlOE1; z@4FEDfzLQQ@p4~h=O5mTyW!2aCoYAE_ekbl#Q86X`!vm)aUY%w5i#i&0-lCd##KKU zB9i@JE8`v|k6?BN`nylYO`(*)KEwm)jC1b}5z{=f{_-RTn-s!U`CD$kHCmV0etY}0 z-}ijl@25WP_j8~2`z~t!cNEwS`VYS3(|#jRRI(L?(n=$)Z+zNsC@OOtLA5Q|ul?pz z^Il6LWov>vgYrEj>`V8y-#)K}h;5+c6a27;@@~4f{Vv+2rOYAtIZr&6r3bX%vwJ8q zTM0kl;lLXct@hi4S}5%DGva(<1!uM2%2Z17M{@ngU&7};?YGI7#0jT-uhiO?<5N4` zsAO&oT5e2m9;|oQB`Q4o+bXq?Wj#HgdbSCK{nAaFI9KuKPalA;+Nn-a@fXfQ$A6%W z>32+XoQ`iglleBxVUE46Y@*^HFh@Fm+aD|{-hnyJQEol?{S)RIj$5ONe;4LNM}t4f z{V$jsJDN8k^WQM1rLXv!QmG3irZCdnae8JGTdgCJ2cR6^y%#Pr_jWO2*437MK6xspVO zOK3!VB7Md8WQmafA!*aoS3fUA#Yp)JS!Sot_`)SB#>);Q;HmUl6Dg53Wla*WJU#mn zveaVBn)KeV)Mm@Z^ntL{VaxXP0$A$F+GN?A-X@~7s92xlb|^h$6Gf+iyiMU86%l39 z9imbi*5#ckmwycr_Lh@_MP#ht!wI3mE}@LVaY;C}+2;7{zf_I_AvqnXv!phMiOx1h z)n^@|i<6Iw#+}2Af#jb4#x7dd%&?2N!4d+xI^#1NW!uGqHn=M#zQ;It4xy}#&jB1( zgC+>^y%%t>t)8@t_$*Z;urU{(myIZhZkS8pzx$U|aZD&tUVS%6WZLY*MvW5@$s|6$ zPkZc9rove83Zh~-W-kdAZb-{=q7J$tAv@$jV$6~_28L7VYC@RZ{XAKQ$~#4NXbvUk4hzEhc2}ZDS~e8P#fO>j zITEfTeF7Rw4|gJKCl8|dbvD3SVi9yCE5Hu(k!vDsyinSXK=alYR-GwnYRBuzlC zTad`Uvc(h$6*=%T9@#8bXT_?0l+f9nP53y#HPR=W`kbb0ie!=aV!+khQ^eV^$a$5h zx*5K?>w=Y{`wc3}Sd_so7M@uGEBi8HcRx$P*9QTy)1;M%;UN}+Zxg&R)cC4Gn@GrK zAv-htp_hN765Y>Uj|V`X-V7EAdpXm+w}fzZ>ikCA$Z2rVArfvOTKM!q#ScP6&W@}g z5x*Xi@il}uQX;3qWhvs10BIF~TpmQ3wj4rw2S{sJK+XRjL}r4&pKQl#l!dt_pq1^5 zXA#^evJE;2(QDjD(YW#q7#))bJ4NMLs^1t_+7Ojzuj8)kwT0w9XB~H4*VD*-F3cg0 zK6S}F59TmO_w{yBc|Ob$j$NCDsJsB?NXO@0ZKCo*m@7CMHzxBUnByFkj*)pW78W%e zVu}=%m!PU93ipc?x9nXsro|_4KI5AZohqZRT_iZT2f-&I-mKuHiJZ8VRB)Rhe_jW_ zB3JN$E#&hNC z<&M?wj7PUIgPZL%uX9GJ#?<64;};GuScvNBq7FOBQ?SGXu5WenO^nE>PYdPv8~BC& zLV)KhL&$T4!~?E>`g@M5R6v>3QsMyz?Ad#L>$HrFq|!Mqn?8usy#Cc7%oeuK6xp?+ zi1DrLPiTKXhNqYt?+g~%Z@x_(`3*UnD6>nXIsRA`L?ga)kITTozxAqv#&)}_o+-@# ztPd9DQ}Gc|eEG)s9!can@x4s06JHl~mIgkZ&0l5p>ipsx(!z(8M~1sFJ2;p&vZr6jj=)S?IiYa&M<*p?%>uL(M`B_-(Idp>^Q5 zgPMh2ohC(h;HQGi6^0skUqqJ5Z!K9M;OeVVeaNw^B2kN%99<(b7jfg9p+5O z?qr9kk_B^?W5cULRO!Lf8OIl6iIWF&566ISDXcy)_jIg+oc`RcJC;JuK$v?uc0kTx zm~$O#A!i884>`_4&M26BJNiJ*XqfXvPH>VXU4&(a$cb&S1jEFqf!0k6mLLJ4MwkY`h*% zuG`qy_&zcoz#P&3*%8yOxf{QC7I_{$7WYuhZ zpJe-6i0W}_=Jzo<^v>n+EtjW(Sx&sY$aUh)QkMS3?t88iA2GSHY{_MZEGGitxhKAd zjCpeAa2g7d(McZPi}n@bLTV0@koy#7^-;J(A&qSe&1_O%OX{Zeri z)@zQvc_E_W>N6az@ptT^;`3O!IURjF(PHf-9_&ft%iSOsYaov9FIIHnia^-a*H|kqv%-xjPObzU>kXZY%MhkFkpef2e5;f@*Ll zG7qP~9W=pcAb9W$6A|mExg=&mP{f3)WXxvc_f#l}J=oYKgp57exS|pnbJ#dJmW;jF z_$Wm;F;_{5B;!MD45~uL-fa9kl#F?7+>apouyM}{he+(p#^=E8r$P&+-mgC!kHwMe z05;Y|BnNVi#8Z_^9MUh7626WSUZcVJon-Dec9dxF1y|30BP^q{->6}OM1u<|S2=4g zs$Avl_!9R?M>;q=F7eDvM6^pVMdHM_NMhS$WNX7FvJ@_P9wZtzl~sr@`i~nuMl@{3 zL$EXbWNDXZ*n%w~{YMQRA{w@2OBm;J!!));h=}UQn8I=-s(B7&SHx}DCsl)eD2a$@ zgyMWGh3st~q5K}&@Buj=;XX1ldsde`6EE=|BV_g5vM9E-tU2AibibzA`W+Y|fI1!0yoHXqcnaennW);zM(3o+L zh@{!@H|UYE{YBE;*ZPui5R41fQhen8`XL;S?_?e0+X&Dq; zCW?sqBs6i>H6k_dPt9fU0~sQ5{vSxhe9FJ4l4qUi0c|!^carC;Xt>BdnHLAPeq%)P zLRUXz#SoFa2qslUlb=GvjC5pDc_cp#_c%ufm>0ubgR5)u639q&tcoG`XI7DW<9-i| zsKI>m%)_ba8M&nUXE7Z)$x4=GC#MD2lEY7<&sx`(~q+wc_rM3Iwsr=5y`8L z^%i1`Bf3;+k-YlP{z6RUtVwp1>{8 z@g+5#mb)oxdqQ z)6^trE)6QlPyW^)ilqiWkeMzL7Y(Lx?KP+rW~Z#Im80`IWsNtlQ(i<~Ivsg#GOPZZ z@;zlOQXWY;ma>lXmr5YzWtF?g^_2B6CvvW*Y=F73<3H3rr)*UD`-n){r1O{JnzDHv zPry(XDO*q$Ih>~{Te;Z;!^s8STIs_7!HFOo=m4Ii4HmBh$eGN2G82S(yd-~e0)PiN94+35XxQOOo zOj!%hBE;xDE_^xCZAG^3vGne$$DSpW^d1fIjEB0QmF$N6lrN{JFTEGw*w7Dv)4L%* z<*B66^uEK`4$*t*{nxM^qW9ACcC#I#_tFRMW}R@m2BTeVx%bkC@ayQ%-O$yT%dC^1 z!DoDxT7)`VmXo7ViP?(85MY)-nPZx)D;;OInk-bPmrJzCwjE_ko>5OI8O9! zaUZoNqq1y*809TK1?ws@EDx{NTLUd#mdV50^q;A58E#oI4{y_FQO{;1$RtY4%pKNW zWK@+Yd3a^M0|nJ(8YPzH=8hUGGHS{el-MSsy5P}#{wV1t_y8$3GGiV>7KOeJDGL*M zrg@9JlZ^R6eR&OG{24A%R|{%!@CPJf^^EQ92o4=c9g(r)V1M9$MV+3pQ_Vmv!%B;c z-G}?bFecOEoAFjGdnL!|vCG)2y^??6{uE__=a(c-Y{tr`z;iWlR-t!9=zBDUW~@f% zIC%ETC|cK_=hi-B$fJ3+kno#sqP~s#5{}!RBBXyOFe(rfq$4HM-JO62Ab5e<{13ob&7r^uokdX!5fT92WWyI~D3YcY`6 z5e(lK{xL|i9P>Khs{C{GW@lU)*F< z;C7@XciJX6c%hIWZIdOybCl&m{jDP-;WmfKFDNHBkE|ihDP!5=8Jb5PWGS{yM+6Y9Fw?~zj%nHFVK=>x|qEygej7zpnrtvr8& z)&CFbv9ws@0dm&*Cs6%q6&SgH7~qNq%&Gq(>Xo!gMoqx4B0tVZ1zd-?r&Tu4#r>nn zUel@=F#i4-)In+SMoYkB!QXAP1^gNHR$7A55%62!Q`JCtv;NN_znYN^cqw`2X^BQ( zz(HtQlJO|u%4Be9$;ME?4Iz)m7zy}(GM2RJ27;*#%+D(jX|}Al6tdMd zCgag)!E2CcelaClj6g}MaT}`;>Wb!Fxxe_@s|&6#@^u?u-{k9ieEp2C-}Ch>UvKmE z3SS+}p$cDX@bzB4oIEQ!^kpDz#C*E%Q#`NIl=f<*}kVU4ELN(w_ab%YGIsC z7@X72BgD^H0>oEm^c)mndUG%nerNnc~8tK}zC(s8P-{3i|@&P-5@32r=OV68a!bc-_Lrl;l%_l3YL2iMhCT zq^k>_MwX)zi;byDjRYXYg))ERuIZDji{Nr9X}RqhX}neZ9*X($e`)Gt)UKF6XHj3X z>Mc189b=ItIbkj=0D^xd(}-*^(L)(<9VekWTCa)*lbveDxHNrZcqPsAc8rZ}CmY+g zZEWm~v9WEN8{2lWv9qylYl9QMC(r-)emGOz)rGset9#};*Hn)vl0^_TiP}~tzurx4 z@{lg?lSvKnjFV}j+19+GEOY*E38gzHr@(&bYdXo;5P-2`$>l46Yo^XYVRa+h=kt88 zHY<(Zm@6}2&`tB0JF3Xs?>BPF%MU2~``Zj8QFRa_NV`++X2F`E)3d;PqBl!Y^J6nO zYBDzTts!SPkCsg&Nh5AUc%H+PfCx{Bq^J9VbWn}*KS9PfRK0Q@#I6?jV z=taz}&u{Jf2PL(cPuve7JQj0_8YwnJ08 zQXHz06CJNl)+`}qr*1v{O^&hzHGsE>;zQOw9WRdLiLs4n*J%jkVDk7pitmy!RCSge zmCTBbTT^}_8Tw>ebX9@oJlX@tF3s0b;tEW8`HF9=d>X<^?cIeYdh~@_YBZcqvyO?> zcMX?3kTer58%Nnzr7T_NSf<<1iR7$pBxG-=NRkpJyZHbYmj)k&b4?aS`}j>OTSUK= z0vW^<$r)s{>h+}n8Keo{D3U^W<54=~}wvQ{$O&sz|Zta{Mg%WNNxx8n zdR7&RWBg7^kwiI3Gjv>wWK(0<-47^(7x|89DVegPcZ(-1i9-9R7i={ajG|$NwS>~l z1ftWu%BrflhOo`BO`!Frb+CPVcLJ!+P;cgQ6|0OC;bl$~qt||49ifN#Xx&Je5mwwLQr%a^9AxRjHfsJ1#edFXFW$Ae?idX`{Zi+p zE|XKDC@i(xwrV_jF^&leP=`5xCynS`S{$PuQg4nrtV^VU?D<|ViMT2sZc$YoTt5)j zeDK`}AtK%U-idW7E%>%NX7OW?skALwF?}Dj8HoZ^kU)6M(SOZvd4QTvmYN$=>2-Nb z%U-v@lwRoaX{JC$rPT&XY9Z2>SE{Y=u|5X6e@LENZO`aWno)+C;#@q#@AzSc@t-Jh zzZdx_JRCRo$lh>|f4*b3OtmJb=Wq3=LMM2u=mV&ACrKL?xzMEE`=)ZsSM9>oLc-_G z@JV`%Np{g;0<8;XMOx6GNWw#dX>wV0I!;!TXJpqjkD?TLzyoQl(8Qq>(kjPeIR z=G0B7bev8MxdfQd3*Jng9WV@xI0v+pAwwimN^kXazhRiI4bkCoad{|tc!ML)2Rig`Zc0@gTLRP8MxhGpXwF<&iV`}$k!1!?*$1L`;i(b^?ua4KnBPSdOicJ&4_ z2@QPxtZpGpb-m4pU7J}{3U)P0KA&NJ`Nv+|XxLLg&Bz30PZO+2h9L||+|4aN6kax! zD$?3wnsF0kaKrFX)H}tosGI`=2cL8gphg~f8Uh*?5Y>sIR$#}`G4Z@?8#pKDkP?5r z0!56ISuf$ZJo^tsb;7Bytr2J1oNFQgDYKE_d4*5b;8xkL1spok zj8$&_NJ-bxRG|etOvsEolN<~a{>kFGhg=tQzG8fU-AMqke9U#nh9J|O-`_D;5~$>A z%G)D5m#$k4a$38ALQzDo@O{{){Gck#cbh#!aj4AoeU?UPSsC%k@LZwi8>5?H^h z&&B^T-SZuOsKT2~`3@qQBnMt$z)<*NADaIgiYSKXFk^DWKI@l+X2@>W_74)8B24C{ zG096({4Cl~mdA*87LXYIxJ=!&|>&~p1{z`pZM*#w_=kEBD=@EU$paTGrAZ>Cy z+1m~i#o*eR2q9bP;=1pHzx$T3*ZfbouS~)tpX&hx8a(>NCEV!GwA$O=T8P0;=M68& zHFP+LJCT`d-6$^;l&{z+fnLP7SCtp$${S{eLFQupx0i)%u~QMhag?8M#n1i^QQ(SG z>d8+Pg3UUmTQs0;n?048bM$msd8`KpO=aq5Fg0cgov_PP>1wr;*6MwrA{dTYUsZoKu z^|DyAOTQ3raB2-5;1^v-W8%c<+i4OST|{kPWDw&^5WtEjkA%U|fQ(&-qRUk`8)b4h ziKzD1zUcSjp(0)XsgrkVHkQSFhCYq2Rnc!;$-P^o_aLOg`@QAyBM};X*0~v)Y$;eQ z-;#?V*!Cj@VDix13|-q$%^MO9Qm^8JF+96p-alJ7B%zOJL>Rt^-6ZM2P^UaKtUXzp z4ksl^HnZX5*K$#J$BTUJth>4U_ch8c`MeyB$(}g5^xkR5R9xtUL3#zPdX@ zNQ9G=<%Y$Asb^OsKE3u-eMlOU0|1TXD{dR$umlkm)FIMd?HW|J-B_bC`l{LbDrzm? zzoVDqy!wjj`4b^$sl(X}<3gCcF=??L86b7uoa-|hlV(1^R(b?%>ymbb_glK=b@_e( z-YlUmmFJN~gfsPN2<`K4kFg(@k{YzQs3;5PPkyE zqYEZ!3fXlqhWq|_>1Y47C{gZktQTQK6lGsWS+Q;+vhTebV0Jz-QG4DvL0!Y|uP~(a zH-z7tH-(Cs%a6n3dR62jag;N$EHLVk8+@gMf`88ap1pK3#BF(Gp?0%*Vm$r_*5b%x z{IyWa7ZeePd0^z32s<#@VfU#7l1qAU5`W)KOG=<*=)?w!nU+S00AD3ufgyj@B6{22 z|Bf?z*gnV|R?A;ia?)b>nSipOE#{x2iIO{t;-aohde#WK+uNwDPGJ|jST9>IUZFbn zLXb~|GW$K(8%0}m#d%N&RzB7NhDa^X5@S{1H3>%376Kp;l6z?ejC-;_xLY1MOPs$K zX55g29J71mWk`W)`nzTCltci{b0C(Z#Z4X?9S1 zY{T|@T!l9(Ef7oe+*`I(&C7B@_S6%d1uGU4^1tvn)q}~uj=*EIN+UpEun=kQ_xw3o z6Xs%u0U5CkOLl*}WfHKMX{TD$K1R8Eb>1h5EFd$3M*d9Qo9u=8178epEOST*sS6kH zn^Ek3-mGlTowJXl6&OZ9i~Z=?ZpZ8jXTDnCvW{La7sg$2eL=9{f}QJ<5O*8Kz;kdg zE~4Yl?Fzr87_Kk$-A@lJm452xT2VtV(SQ3s8)oQfPp`P-)i1P-wQ?3yFCaz9(O87?cdb%p6D1;_US37H(y0)92owt2`<_j;)&76 z^mV+Xp&*#(?cQPtXQ}sXPxOEht%~^`MDMPIyW_V?4tJNoE195@Kxd30kx_U-i+C7U$%_8Sd5XmYv!#ZqOjR%xu3T)FcW-JXFY4 zOO2DkPl02}+nhiDB5Ol4uHmPirX;DECASXr`%cBaPdl{EeBwZ^=3o?~5|$!mkbU-^ zZSHDbBldc_S!!?Cc)`GT%tPy;3Pi;L1~H zMM4WgOM1g{|_gvSIdx^Y!}+Y9`K3aYop?<6K$c6 z!ofJYNSj^+%FzdO{YDmKh=`tw??)ZQf>l<4yMWq~9wQ~ah>@$tx733bQ?k&Bz^&s| zDN7*WaFP`9E+S{)kZ$?uD6>9_2IFWBG?Rk=cT@q-1DxcFE+U#fsgMHq1%o7)CL%f~ zDTyLJhBBDyUJRrG%f4l5Jo(b2|C4@=4pyyeZOc`k`CBtib7>;o%Wrz&(wALkPpD6< zXLwAdTeeP#8#B|c0nBZh11pX@xZr1LkURWS0zQ!1mfI^GbAH+|BoqlGUkBgP(hT=q z$d`co03VNt=Z&YLhnpbHQX~Xs&7=Kp9{p^=0cmd)aUA!E4@9%cq%by08yWx-@~@c! zFN+R0iE8&wzb3Kj_wwQ8sKu8w^>eYBhpo5^9ZIL_IKN<>-ns1QPmAhCa(yjhMGE!v zt5Cgrq_PKU7BydG0IFjS<2rJakSk#67|9+DYb946|r0k^{@KO2lWd4)hMs&*P2ruVC&0>H#%TCYx;NMera^^sKX(X)t{e;tx zg2zEUKF0bT?weB54STl(SuuCl@0o#%@-d2ez1J|Fae1qEbiyQldmWx3gL@ZvQ+a6I zio(|ujbhzu#t#%4GIV{@r*~R&Ct?;grvN0tGmwU`*qkB33#O_Fw#t$3pvVFW zrmk}C9~F!MMOiIrUqx5u_cAM#Y*^z({QQPfxf{f#Yxqmj6V<>-@<%x^>YxU*e0)Vn zO>B=9rl_iICh-;()cgs#-G!O5fBMa=#H8 zT^vEko0ky^GkOmXcZlsliu20j*s)*j+1Tl#q;yY^yK_6H=3!}Z!1>|5oDXGZ)Uk&b zi#ho!R4q%{D7e7b40eb_=#_i^c1}ZOgB&%kZt`^Cp>UgCn3=S!M?`wTHafU3lu(>u z;np!3UTn>s8pV7J3hO<*V~*)ZTA}ku5AHv5tnj_Mnhihr#Onpo^o+CE_@6Cg9<8l zeQ_JwWFw1tLAgJlH^|G;hsb3{LK(xTr0HH4CH#l-m{;l-X2uKFDVKe-V;9&9CRY@G zDvXO#utC?mShZ~pYx5WdL4(gXQH#UTFN^v^ci-HoiLX4YGh$!jCf4qw#HByeFLy5q2!o_i-$Y%RUMK; z+xQ2nTIhDNb2A!x-xs<*%fG32lYkIa%<&os?j8tnloZ$WAP<_bJC@$yhphtT{p6Z! z@)W$Mr7VQ=p^3bhJGk0fwnPnt{IsCd@jMivwunW3=5Uh1$!iRmBU5}yt)GYx)$#z7 zo?!L;#aYZi4w;K6tv3C-b3$FJk(egrdPb+*yu~i#2IMGz_hzN(44Yk}dWbG{RN34R zCu+T<9x#Hckpi@X`>@;+&{Lc!U@HD6?cZVr(9KV(?nm16=hDoQke0fTJNT5vw>97B zC8-Nu*T0s{^rBS;RQ0bb0mx|+VJ<&g^<-GnhldF@J$%YVOz!NR^SR|ztj_LyZBI^Z z@Pug(O38fC*Gq1?ntc$Ze2HKaf1kc^CK;-ho-u>#1#?@4mbCMQ9G4aI36{5)FEU%( zd7feGAfmH#VvxOfQqRa+>8r3IfLk&#Via<>B_C6;Q&QtjN(C*I z9H~t*vgS4)rOm`@-^;FXLa~Jb%(5gN!2og))`-p%D!H1eci9aI$7p_XnX;*Ox(&(4 z3B`P2HV3PD*qQ8TramT95Y9dI=7Dj&v#g-s=Qv}r+{{E3*nV5f7xns>$QL2K#~ltY zIO?O}`)^=vXIRVQk$qao<3)X4Ft5zQ|LqmD50%F7e>RrJ;DM@W%@2=#YR^j?wIX|F zH2sSHIbc67L^|QJ2zAgG)(c zm@hLdV$c$XOt^0zl54`hZ+41h*p@nESMx}XS z%!sCZPqRVJ_ZO)H%C7=IFJqw70_jOnH;fKxJvVB_kgdt8zRst39sfm)uIYLZ7Fsxl z&iC*tvs4jn>iIEg={c$h%yAZzT@iq`kCK=(maBB+6zg_nc3BRWa0bcNyk)saKW(NM7sMTf% zijy^da2raduF;10D%cD>lE4P!A{hZ9QJW*LEOkxInQhTYTd9D5X6$N>;XD280GyG1 zBAVj!lFFO(v<|nPg^%!HR_Y2XPyMEM|8+`)4v!o+Iz#N4Oz z7{X=>pl2dVm8ynqzFl!fH1yV@tvI>IeaK#2stN(S0)ahzL$YaOaKR8|**2|KSwUL&YF3@{kRHsqLDv_XVCK;$4)|i;3m;hK62?w3P+yN| zU49xYyrw2J;Sa9xA$`JvX;M(7=jyX04ip3eA+bk4lguR?Jc;I-xsr2BUR z)KRtZ4%Y*u_{!Z@u zY%AATZ_rxb3;ifVc&c;$QkABd{~B{~Twm-z%RtpDRiiPG<2a0a#b?2^0XYXia-(oZ zB$NH)faOHt#Ps8v1m6$}86j5%3S)f3-g%?PU?XhWTCg+QuG8w_$X?Kv&JQlCwjGbp zgo|6_aYA*uRXj5;e%DzYpPam&`zEIW3s|Jw0N7nP@m2-~F-L-ZT3^iDjJ;9TE)ggN z${1&%-Lg9~3$-UfN(4P!vk-n_s0)@~Bvlaf>)ir$4HdY8FT<9V>IFNzHkLEmx7WOT zN$;+Ml&_cJv|4g$Fc7XP_I_3MBb`%&4a2xz*GsbVe9gv(h-V>UqatunJ5e$yD+qZKcA*6E5x!~r3M&FPN{2`*zvv{Mb1lk}~ zpEAn#p?#7W^k({RrU^BL++iLn8gj&K#!P`3H>Tt84J=E4_8&ox8~6~C?GWo>)~~n1 zEBT!tnl%(%M?sWN(MvthYCl}(gb{vr$a#7PJUl;nSo{Aj@MtfEL)Xx?4`{gj#gQJ7V%vRK+0O8bFkkUk7r8V+w@<|cM?MJf0s@%C&V1cw)-{lD-&HT=$JVe^u8sTrawTZ&)>F$};zP z!J&&?yCuTFZ@ob#e5pM_c<9ts{p04S)aCLOBX}rYb|~mXZT-@M|LvxSM7GvHR)_wOBjR!R|C z<~L+eQ1aII`(Q`Va*{L;ivYIlheYK4P_K|%908smjH>mvovA#bPbV>-pk9||@chp^ zXAPKLj7B)ynBzNRY?%6?#}CKkWpA7vTkX-%c56RFa7u~V;+aWJ3(6w3IovmS<;uyTy)4K<_jb9IW*uN8WwdQuv+A|HVzjk-5tlhHrIMoDc?;?CS0eTn? zTb~%Eyq!N%rq@C>d^Qio7ecS6d*2CW0MeU@J()Q)QSE^MXoCjm)Ue@T^tkq z8@Qpn>V7^6)MeDt*@eu`F^ta_x&u;uKj@=5+^+cL9pWd0u%Izq{V?c6LpE+p)#s)C zJS_&sTn2$en*<x9CSdX?CMUgopG4{d&TrQ_W=Rnxo77Bb~Se#Uw&O)gPi+HCjJJ zOTR83?vG3HB7;jxDS}ni`NrX%)>6Ah)-djsBeIHmc z>081ym~4;cmmdE~#!4pr~+M>Hdu~I0bVU!@ITTts=j=XNPiVe$9rx#^)22tN#pcb#I^sXYK6VAZSq# zpz2u3SyFc`15vo>Jamn!AAf^OzcFzVfyc?|?|g*oFl@+ifD3>BfKn9tJ5rD)|2Gtp z!HlbL$a(D_1%;TM9K#M@Cxq08e|n=dSMUC0 zrb3&T-?(roKGQ6S+@Y$h(0hcM0kXfT)QI9dUp0QZP!+z-d~=L-ot=^vPc$GYJ$)Kl z5TfJ7`Wd=3VrJwwE{@lSE<3ZheA@+CfPSmO#*~&?7}A9gnV^$cvrF-ln3S*K0auY; z9!c+sUS2Z?kXBrtIl*yed|qt3Vhh-UvS#4*+svJ?y9tEWyDcuE3LFkZSVZc!L%$BA zv^&XRu!)RbtZ3v6tkK`Fw2ka?A6P?&9cSi1;$WDm5>Zv`D6xyjAt+u<+!Xqx|l)Do18| z1?4HukF*D$@q+n6-UL9?oAYgq`_$o9TE^zl3hy$epm#B;k7;te|D4g7vu#c><#s3k zfj0$S>$f~ED)_1|?A@~Z4)pZj+VO&*)Esw`8SjN z;Ux>p_yz}PMMC+rKE?7QL~2cEPZNTEu@T~?Qo_-=VbWeT?K5MiDt@385vCE*$PDz2WGD;LGt`svn?~8X$N^C?oIcKw`zxe zoq=qF9yxflP4%k#;MfQfLI)Z@TDt-bf7=Wa5}V-H@>_R85@^44Mne4ks`=zk`RY7` zf#)isZ|Io6xowZNYzOdzpNQ%$I&BfQ7nC_vV0#&HqBMUqDdS;Mcjd=2^sY92wqDY0 zKP0lQffs8$mdPt?Z&+^ce1#T#HA9d$!vE@TPE`gL8yJzp_iK=U%a5L}|#XZ46@zq4L*qO~VwokvMhjSj<5g)1( zXA@;=avr9lk!-Pi(LVT(y{`uIE`6^C-+?8u-A53&y?eR!9CxXG+f`pIH{(g}-@Lay zNCCJS4_%)ZT2Ebykp}O@mX2GL;*+r;)GXJH#qLV`i|dY9)Lq9utm`WTpHDV+JVeP> zo@hPPEjL{=pV~W>A-Qj6$3Ci^-OQ8oB<3)=h(zcNa(uPp_JXij&~~)BOV=0&k>9-&^|FNC6zMZVtMn5~Bltff>Lr(?vG!)JNQ`OTV|?^DicA}E z@)!DfRkz~PQ1n-g!Y4URbyd$MZkU+O;x1$i0eXp2-+QUORQnSwBYD;8ut}_<`qQyK z&5qA*4^m^DBk%; z|4?^asN3)rz2ATw*d)7m>b`nYe(xd+dzzV;!MbdP4hzQ;{DvZb4|-P%RCH5 zK+lpZ&u8w(GWAWbVvEaFnEcAfP6K>qPG5tUZd=XXDI=*umd ziur8M9XR+xvr2vAx6S`*T4*l{`5``G`@H3&$*WQmEt^PMwv^()%=-sjvK8j_`nWI{ z-4;d^l8{wRmsxZumF*r5DqJc7O@yl(7nk&4eJ9@j)_FdDXEIe`!<-0l;Bpl-JCirp z{yz1l`i6M>i0F7dFi)k8KKgjQVA%V|8`E|w-*jv7{&R~B`*yBZn*GGg%_U&eVMC+n z##SA!2jgLX9WDvba>U(Jy*|_WK>6H4UB+gYg$8J8=H6~GyT4p4_x7>{7O!{KW68YN zJ!0)UqhU5&dk0$iw{I>Vvb?T|SZ2DSTod7Lvq}z|R2kYxz&yUlb-n{N%_SeIb zd#+_T+glTR>#vaBuZASsh`qzDNP_$8lE=@Fw*);tD(!T3l9@M`^EN#M1d^?P4a0QD zo|xKyUn>AuH-m<+Q%Kns16J}$t~n$=xz9Kqcb5zuxHsm07iE#1?GmFnoqUJIdF+8f z5iVbFG(zYtot@(b%qWrMn9XGLJA60>Yw?sK!k{4@?3|Obo=pX_WM@k$gk#R#3%)pjDD*74Gntb7kd(igLtGD0;}m2DYNrscmq1JZ+*h! z*bAD335NY^<#c2(JP)=jK{Oa@zDk76rz9y(Vo1e3h!ZO1qbHQVOVp53oYIK4ey9G5 zD^oN7^^ZLa=Dbiv)ubK=XGyU*I9gAL1Ld(y0k?i)jH91$ek^YVdQ_sHa9LXN0=*%H zsa8Q^SU`>gEwwi3YUR+O@&>0v}Y-f zG?!-oFVlZS3u8ubra^{FG87%++XaM3KdKs{PojYD22QBcPp9 zKdFatbbW`O>0pftv$3dkpPsZHZ57r7Z~(uoOFEqkhs8Br)StcGKh$6_FvPzNf{L-7 zPy*v=$iLO8`LdhAgmO0kP_nk-BE)y{R)QHW$g+Y@^n_Jkp8+I+*8)(7+$L70=a%KQ}z zGklF*ccn$gPZYI9^h<8!W_rHHXF`o^Gmpv`ASMbE5WsnPYlUam3VmhRe@px)FMya- zV1o$%!5b!{#XGEcY7rPz;@dCzKIo^qeQ+7c75k6i_O+0!7AK*HtftOsBm5tMqY2-X zDIzDSkK_gf{;5RKb@&f|lTBd5Eu~>A9#HNBOm{OzY8%B5T)~BG&TY`P564dICH5KG z!5j>z1rs5*4gsvkXP+ed1I3^yJ;{mZ+{EI&>2$(-V1b5ENV{jbkiT5wqt1DvA)oS+ zW}`v=*FvJHS~&6@C>|{9nwMDq#Zy+0NZ8Aj5&{CD;?8X2&-gN0fA>>nQtpcf(H?<~ z{-q&?AT5tEfeN%%@SQU9i;{+*;r&;~q->%1k|1c0L-qQP!!Y4W3@sPE)p=ZB%3>VFPoeOTa_ViGw*232aJ$H;i~|(*hP)y0`4`V ztYw9P65`Vk6&vE(&$Z1Hq>Xi3A}%z8Zr?<_J3mY%9LTJ@&Gw6l z2U}_9AP(sdw(d+Eq3=LBA%S2B5Dfp^n?lf&1JR$4`K+xlfTgXGezhcJTEhfu1gP`bzHcnLGn=%XOp@y&ZB@fyfTc=-N7DP(aJR1aQYieBp}h zF@lnQMHw*wv0eQ*+JkRxV>&P(St$VmIcKCWc6T%*9c-1&q_Q%?h(Hg1X3)%_y|%bF zZ_&X3n#dfp3PjRBPyL+$Prx0}8UmS-&*e(hADTpRXk-HMq=&Y+O1_%#lQ=DvFj zT3=&O!|WW8L`0k;Ap&HBng>$&D~jmFB5xlOnth*=#bW$o|B%ZhPzna}9_!|q2N(C? zDpk+%W+e202;2ya>01xM(Uh@(1Hc$?A8RZU(E$X*6P`#0O7S(uIO*ANJE6$iHN41B zl^BAVK-{ioSyXpo$!aKfQY+oRWW~d;%Su5yQ1*DOLUB2ff#m!7N(}P0@(hS;+ZPve z$AMGCTXG5txT1iv-2R0dFt-E`bURxAu_5t~zt|rBn|8s^u{!=9RULRFJ%yP4YO3OL zwu$6lbEB?3vn{q#Edm^ke7?Yq=o?K)PWc6KVCN)mM!rqePN*{j=W`v2v}yya95_3j z8{4|aWM)-8W}}}0V8UN_!2Tey2dUi8Ys_4bEA z0`fwqu4c_!wmNqV8_=<5B+&wI&jnlXy{n^=y{X}1RmEQYC85~8YkA(*sIAIUFYpE9 z-7Y=+1-#P>5aa*x2{f~x|G$iucC=3G7fi_mLYj5erCzt-{6NoA;gUJps6dcw#u*eMi7hkFE;Ov-4}ZrbYnB7 zZgaL9RPf?UOSg}I1L%K~$U%{_-&OJ$blR27#_gX_UtAkd%M*J?|4WMykxOzx94H=v zjC-w|%o=1Qw;&3vQaexV){o#}LHE0ks2ww-8+DrG4x(KMtz4y_!jsy#O{zxwmu)b6 z?JjX6J9K)_DRdPJ_g!kW-VIEv40ki1^kyQe5zVJVV^{sf5BJgA)i>ore(mVTQ&y&` zlv+*~7t_S5uchq*lh6XM0N}`qDSuVp{G)4JVVB|y7>o@xpD~#eoqr}@((w1EZrtYh3q#@yzIX8R}V!j}=6>V>XIrDb)UN)L?u zn#!h#m|AZv?4JCMITIY5B^2 zJ(;rm2np@#dIgs?R40!N=zMdVwz|Q}S4qdr1z%7NK@qERAHs{O{|k>vC-O)r{uxhx zzOH6r)uTKZ{h4gJCv`&G2x|$P2H5ul zwgTI)0{DUKhJJ8|!pRhz%Ip`gmz#>!*)l)Dgm_9;3W zst!dQc3@TitrVH%@lpLSHPIElC}OmVD0kN&*(97BjEVi`TG4p5j@tG z83y7V#EDZc5)j7T8RV9M9~6)^rR1g>phZ3AkPfARiX8NiPozharyC5yIhXi*I0zVZ z>qPm*?FhPaW>XUZ_lImT=4L!1Dptu?Vi+c&4FWp@CoW>J*nh197+{V#xi1QKz+v-d zNTC!0QeDLCo~qcv;{?Icn9-&PTF;J?JEAww(b1KLixrPZ` zU1*Z;GIe+)c4(6KXeYqV4AwJxf%fu^6RgX{)#I z-IUeh6DHCo(&t*e3*gd>G?yah(u|-AX4RC{(Am2{=S2uIy=3BZ64eHY>_1g$cp1`zohpXbji;I5aX36gsT9H9eX zD)raQdjK=3zozS;Sy34-^*w6?}tbUm02s|XcGx8%6^rK zvSXmRK|yi(%?|U(C+%QdE*)7txT<)>L!f zW1}I0J01s}NLfMiYxptTAJ#bjD{#+Jf6)}KS+Xzcn0=Dvue6*y?xcmfMNhWSTpDSU z9q2XzbP|z9uX4kK0~E3Y7=F{I1U6C%3&=%e#DqRzqA zi}7ZY_<0xMgMsx;zeRr|;)Uj8didpf;4*!@Sk#9Fu05-QIR`}i zwQ&c5Q*8n_SWU&`M(SBAzwokL@)7br1>g;^L$Y10z-ZlhxBo|B%7wTY>_fRcyUqkx z8!D_%c|H5uICRCIT*UaXCCiae)C>^3+FSpY()HcoCH-}@s;=RnYzIp3JKkBU-{0#| zbWd>!xRtw6yn}I(>P-?eZ+6W@&dHxB`sSAO3dAfFOdHCVPWstw(K__=6KmGyWD-1< zN9R(ZI;&@6E?a6XN9#K)mv@H06OU5=u_#Cxh?7|Qm0SX;bf0=jh|2C8;#9H8t@!WZ z&}kte()xBtpOz+k`*=gGHbQ9ehOW6rH3mLIJ>@LmRi!ZB>HRssVpgg_HR}c(cR}k& zGh`1+m`wg4utG^!uc@h1H#E^)SA~DqhFj&Qvquxn!ag7?Ii7k(EyPoSzC;X8 z!Sp*Ho`@xVaS~5iwGKPK0-*WX7*1hNV5~YcI~w>Z(;k*3?$2!Xu6ArB8tqWjrnfS^ zy?L09cnAH)vKcL|WI(exwpukdNunBG+E9nk>f$#>rSt2gYbOO$c6q3YSHaf;D|X$* z0=%Q0KW3Kf-MLAmXaWtS`%#$K*mMrcw|k@%cpHGsSe)eWeW8mhc`e^IBZVvZRCXUR zZDyvDQ2g*sg6~0Sr`nSY%P3RgL1FKNi5gm3BvBxI2ycXpCW z7XFL`dY6%4?1KU7vA%#x0OicU!Ie}YjNLSunb23f&b;AZ}PV( zh-2IYS@Y-{)$dA`Cx8@*M{Xx=u;0_yXdzSomx|t~?u|C&4d`WiK(f-D6l^G~moZMI z2+OZKYg;O`hEFYZ#1H5HX{1qEi<5ut?Y93Xt$JCg{qmEXNQuV=K@BawkwP^D}?bA zpIf+(Fp$zgM+;lhYK0bUaQQQ2RbfHq@!xKk52 z*bkahuq`rZ<0oC<@mh=ve189okuU>R_%*%ipGJK@npX*%)kv=Y@wg9n0At8GNO}_( zx$VGAbeu1GSQAnF4XoblV~{+47Z{Z@2L7yH0st?@-KMEN)1&qnk7_iV)E~sQp9ax|steF-$F>>d~A6Q8+pq>7M@A`>f^)a}>6$oH2k`otIb_D0+ zCk8gmC!@X;(j=`&kBJTNIy~^O7#P9o=iQ}DV^G4oOA2Mbjjt(ZK;N@qLcTOJC<}#4 zmYG=Bq)%Hmo@BPiGBoe7JOi-b9umM&7GlCcIqltgnLI(P05f+gXRIP7_cZI9*cWUeNUwqbAx$3AH0>+Vxowl;rQ6G`Uz6|iuKIFljO3ZCEZ z;aARtI{ikWm5d~qJ}!vo7DgHSZNx3zZuZ8j;p%Mo$5E%)I{DIyg&pZmkCsUZ#aq~(}ll16#kXJdIr<;v)% zN%Lf@1YW0XrmbThagoaHGQ--4EtD9i`;glJ?cdVw+dC6$YklKUsZabrU5;SqmBTt5 zPg0PLQpX3=_^%x7!-cJNsI!Nuf_Mt9VpRqUcXw$mx5b_H2<*0NkE(b!dbTG~T-tnk zvo6oHE<5*@dj#Ls-LzZdvVJZ8TM&M2t6xrUT|QHR*#bbX9jsuo!*i%{b=PYuN-NI7)Cy}fmS9>)`R$TcK% zjJN+2-}%F1i5iNxmC-43Bs;`8$2fexzK=STN0a{qJ&w1w`xt#7ySJ2k$RX#8{1=c(454FE@QL}*-37EdQ$Jdu6f20#5CQADI$-rQcG&CD`V zqc~C}PO}*ETqR}B+x4#!JjSOBg;z#C(|`)STnh18W+d{;7hBW@X7pxJ07Z(!qq1S3 zl`t=)5zCV8KaDf%I-6DzAqRo%sI?z|h%40tYPwN*CH}S;Q z8^Hb3$JI7(%#czIhf14nF=jfcN^jJGNs>7liunf*i5*T>vkrzAtqIfZf@c3~nlqkh ztwB#yIQ2!xMC)qoh9gD?39BO2SZUifs=GzLhGosJ%V;2PHQ!pGLu%D4>JUFm!o1O# zbdIT+i>`H4eJ$KPmGP%;%?|W4EVojXpblcIjNLr>^0%pKQS-)WLZcv*%6v5weQ4<@ zlJaly;sq>g=aqjNjb;~rvk4YZD@R$>$``VzQCg=D#nhjeviWrx!t$%l)ij={OJr%? zsIehrGKnvAqiLtVewW@NO>~#*KY_mH-Ke3iLH|z9_w*ZungExN1iW%#C=y}b;DvJ^ znR%asIE~+&SB8n}Ke9PWVAZW{7#VQ`12G%)4VslfuqR%48UN`TKX{}CB-kZ-eeG1r zd`}lg+FR!mF~pWS4&fWPzAFyi22T(lRp}LIL*WeL9u43|5X05{qOiS z>#&N-cS70cN;r1s(hRxK1le@iWR-hem~l{;;Wk#1QEcsOpXue#7ABC{Ps<^nUy|Wf zvlKcc&^g3u*Ev)HD+sKDvNPk>@>p|BqJK=Ff22-yp@)s~r4kQVrxMo*zPYC_Uw)D9 z>XU2$_I0CAf#nxAOI9H=k(#Vx(sbWOTb@6UqP2=K%hf*}uU76aR_+li>VGxZa?sy( z{hxgNo_u6ipM1~-)L}^*+F?2*5K}5r=LN6@KM5#OULD=F+Ej~7G~`z$gGlK z#2xpegnY9K=HLI~UPT5>j)5{eKYeI|MtxY?`pZPCMlHaST>L-g<9mTzHuxzV(W3&0 znG&vDsY~iG+?;N^G4ie__W2A2i_ZOLg~*Rn-1+bZ0G&sa(I&0(-2$32qltUOxr5M? zbNZM7WNC?>HvE7tCr{dpwi_Xc?yH`W(}z6paUE zRsXo(6_!fu`u_a8%w$t?^YynTrsTR_^P1jQ3FN&*R;@yO6KaaUZs;_HB`ALT=X^wZ z?=a?{$38bg)$@cTo3(P*wE6>iTeMhmF2O;JbT8QLw;0yblyhG3SXDTu)9Z3DZITSn zJT>v}V~&?1IsdTD9~`XijV%)z6fp5DPrB0G3HRC+PazCle`Yn`!R?nAOV`X>mtb5r zQp9GS16q z48LRSL&BlqZT;L~N{yvIK_8wqlJ!pUXV!}5)KBszHZTQUo@sYR5f_co53#jLm5wXj zzZp=Kj1^+ly&G>I1TtVbOgK-ciW|qk*O@7wEK_X~_CXXg3D86k8H2PMJ=jZ0A}L}$ z=;rwH$#mvx-a(^Yu{z(yUYb91Z;R`RDd@)@7{~en*5QvHN>77p?5IoGn~K!16eDz0 zD(<*tkUhWh#P7Jq4Se+y{SjwIxtPAK$zEVrC(*cso+Cy&j_s0lED;*6{D}FkQ~yE; zwPd5OG>*zR{?uD=4mp1Bk$?UcIW1TC`+Z}O=6C?uCU$xBCi7uUa{jv6^XwX7nEO(e z*Z1i5`9J2uPll2pPfRjkk;%n_)lW<4vgh^3O*HA|x*F*L9QpZk#%SGo0Aoq#;rMK?iXx20eqm%fZG6Yfe}2kr}5|QN47fIyf*n&LebU?Q|KW1d~&dm z?F!}ud@?e^Ghp?9p_R5<=KGW|Ih07yTDo*txTsj{kPDh&qgW}S+&!moP?cqqWvmPNx~80#bfcXCg-h|fIEHwLg`;9V>D5pYf>Cs`V3tf)lM=G5&%?tY6LbP`W4e1mA ztPbaTB6Un2i<+`%?4j{LKf3ms=P}|NcAX}?kam1a0yd?lNT9X z)&2GC#v1MQ0bjwa5BFnX+2+9wq?rDQsI$Oc$#H!T_d1eN^p2e zndhB$`hvRTqoe%^|8nr_RNY&ZyYiB~+!Mn;OglfNT0j8K&+ykXkZ0*wHBSCu$=ap(3rIx2Ravm3n`m;p zH2yZ(jtfFWM|&wykS8iHY3`0*$q#r!v8xLRL;2ZIiCsQnyJjNUR5z%B)ithbQhB#` zlUnsTQj}X+(xO<51#DT9-yenPRoc{l&#%)B1k5Zl$SVx3G;5f^BmWsbQ%nEtEmLih zygoj*^w;TxX5Q&-l={zNRrt2&HY`gD7FNgar~;)9GXSJr4P2|a~cthLb*(lw*8 z>lE10o`(fI2H zVJ@g!?}v#@N<*>Elf#3&>W-0A#Zt1AGOi*s+B}~sZ_MVbTVL)fPz>$6RGR#wQoGs3 z;fy@iVhOgsDpj#@xn5nGXqCqBHtnK9q6@qlT=Q?@fsLSBTL!*8FM(dS3YvcP>u?d| zXX{(yCqRnuOK!VTYW1oXmdqu!Q4UEBFQtj!bu{1-llsjXRn*cTx1Mm1z>thKO-#I- z@`@1hxc(KDB~;1c3AMrq3o`6z3!wUB#*Og$HhVsq@<@`tLfX+ zxSwyLyQtf?ak7i^GmGqwA$O#ItYx1yVTfCv?@bi3YsAE+W#m;dbrNo)6x4)FS`^4s z3m%Dc$|S$z;4g}D&f%zd6D|~IaGf-3m6P@$Pg7oycI@PcOl!xk0QqW;#W=`^U26&7 zwgOIHgOUYj4kZ@m-99`(mnPb8KfFt7pxbXw@GmgKW0X0@{Ef>v<`aKeY9-}{4)aVz z#_5>8B+YL70G4XFF%&QspO3{_Piv2?HP5bEPdN5<%Ya3pO0MkMjCNjJsYv&#d7$FKa49{LDtel zq2B_fb4s_+XdHzXP2G&+?CkiYt%K1`dv%&k(Yz5Y{ny~9sxoq7`SLf2tw5(R9A*Vl zg@#$1C8jV;E9JH<_UTGGagFrVzrZG6%7p$&d;VWdzJJ+bTOFgDQr*h$Xo|ehbc-jJ)Ee$J1ls6(N}9WVvhB;QZ2itlo?d&{A_?7~ z;FO*I9WR*28euahn?$s_5nBUwoyJG~8>X2bMkMn#KF$l0P)93NRe32cPrR&x;eeAg z*x)-P0zfG!Fat6&`!CLiXbh36D+J@P!R4<(>{!iAo)0Wy{p0h;iaFOUX6>CZkIeFDZ4DR~e%Wm)1F&P@RMqF)%pN?cqw?&&%ud(x7CfpF~$sTeE zVT=+AHm8zy(YC88uB?$!1{Cr!bVNIB!1$f$WJC5FWvlD(f9T9-_e2NF)#g$D-&z`f z1|MC0qeZXzwh!2d-IxhwS#2hBvL!eBtVt}HRF!awit~ld zcG{XsW25?_N@H1<&UOKPRh0~V)5}lR%gL@wAMt>InOpCpPbY6ym+5S7)=TH@ya!$- zs=?;daF;a0gEBGKe+=rIW`A#liGEmnQn<7o{F?l2F&3x0kmlKixsrL&N6ht?wATKF zv5{goOXNMfWngQdv@5SIzgGup$~-2#pPWuENW=v4>!FY_E=H>8E;j~;Ffl*suN9~; z?gYN?_xqW$b5Z^kK4W~}@j*f7^fNS4CLOudE{{^j(ku_5Ly9+6<;jh{To2@4abgcz z0(iWMozf%=shHfA)WZ(uKm8sIgV?1ov<@xfdh72|gHj~uHgmbNyYewT-1+K?CIBx! z-1B)?00V0MuQ&M84`K#{wd&)Jp2dqH_A4r@+v!sM%XQVx`FJnA8}dNpT&PsduUv0% zU)x3UuQ0xrh+WTm^((*3olKRJheb?Nqa33>=?UmUksoe<`5`Z0`}lyqdqHB^XJW_P zF?IWKa|F#2u$9nuWD|AH@d}!TS&x#~e=+_(lQMy&e0SwbnqPh#~ zj||^9hKM6+xYj_w$QX~^T1HV#?msS8Xg-HnHB)0Ordl-oL#G-OYkv7p(Pw$|e9G%D zOcJ3AzKb(ajbs1hkjMIipohX#%|hO#e9%42ls$6Tl@--pU_S!YSDm~o`$jD{ErEk96t8_EZ=L!Y|Y)X6Qctv-wvc-lTQG+{X8WuT(}OCR?|eT z3IP7TjLSlssT65ClpJLESBL{Io=v$YWe<%36$|~WmP^byI8rq9BBl2 z*;aC9>)5w^F%&YGbikHgVDp_iSiMmW5Zsdcc)h`#^H$H3-pxDbuoYyg1#Y_5?0bT) z1Mdj1pxNrO405R%gvq|g=eyDR?}aW{;?l2QKiM=`s8euuh~f$Cr)2PRs#-jd zwykFLxY$sXG#Wtac99`Y(tiK8yj26MU0|3vn9KFenrtpUuo-C_m-rYcA4qsJJB{oJ zmnP%q0{a#Q72KSW*@+o-H4)?Qcx~^)4ZZzXs;MT+e=TzK#C6htQ~}okz!cbDc@UfO z!HPfpD9E(gT~9Jm%JzCsIe*UeqK#Wl{^Z$S`i4Rnw^i@zdvLXA5Pe>iH)Ajcf^>tK zt4u_a$5>9tAX!N8l8T%7da<_|APY;05u|rZcc4$SA+jSuf=*A7TCVr?@{Y`$`+y1ZAIeF-4PtfFkyz@oI{a}hA#=`vik#i);K=^5tB6gFqZ3N18rN&RwA{v-VHqC(s zqMNIp3i5x8&moAs!-(i~gwH$C=k>!m@wlSM7JGDnbzRVPf4`JsEOR`PY=q#+YtJ!= zy&J-DZB=g(CP)v5W%!h<5#WO4kj z?xr&6w*|BNlhw}KgZ=LZrr3p2Oz!cNs}WqL5smCilRC@>&Bglbf|Qay?&&0lAb^lK$$)v6;gq)kL@ztE$; z`Pe2Pk+tV&7lFRJTZ3HBaNVD2W(y_qyVGb=DgM^0&9+oYp#@CLhpJ7FQQi>*NYYW` z>$KPO*OYAnqoAG<{V2>nz^oxqcAV~{+obyEKDl9OD*%B66J zab-6D+8g|a(wVfM-MnIm+ECAshXNh8u7uS*6$HpUa$driADlvr<8gf%&s`ntBP2qY#J--`oyMt5v_-CUQfLp;B_&lej z`GiHa?63hr><3rOdKfh=1`vF)g2FJ%-48son~i30QP~(_IEUsR1G#=9{t7qp`MKVm zg!m)|;aHl;YzDN$cn(Hfz~|uGoxkoa^m({D;P8dXlrY6_F#cI9ER|N^Dq&;jFyOfI z_b;3smfcQ=%5~xsMj)9fsL?WkwFWC|9OFgng=2eG)ypT*?70j*uDr(Gc@lzYhW86z z0~~%snChzhqN9r(ce+a@;plW^&=P^!$VNz}v{u7c8@POnKjByesl0i$oC&;Sxo3BV zFckFTmm~N$SnKO~l|=m#JZ}B|y8c&e)7J+UcteMeqNe$qeaV+~gqU0@U3c^)W*@~a zH@Q8NJ}W`Y-)9$G-h{O!(+$3Fw&CNpir}s>(^Uwzn6h#-*A@i5eFqK7R!k_Hqn5oQ z5|K6x;t>F#^pQuims|N95{DntC@GHBA8f<;pCq|b;_2chB>2{M@Q7*W|8S7NbZ}V+ zuFMk?wzGqI<^Vj*&Ty9+*XLHb#0Vttd7GDEe_T3V0$tsuq1@v|m58AK1;h}6wN^x@ zvf^?<%5ZVbvJ;~bbV8|poKykxCqRS7^pgAK#M z7E`yrGhM7{R5RX={D%XQ%(xkYqloMqZs;AgMTi$si?JFi13vmHN}>A7tjd|0sO+&c zcV6_iIBp_W%H~@Y$B&`e9ATpY#0W$U27Fk)_AOhKmR-EHK(|S-DNBp6l&&(5D5n%3 zwe&EiGEM!iUoj$Uj=d)g{}|Bq+P1N8MXI1)vwJGM?;u-soE-rd;o&oiJxLo2vXpv7 zy*b%g7}woxLf?3Wa;y~{HC!J(9QNdGvX-`=$&JzX!7#zN^lLccyLhFX0rqTFztyoK z+ALGOIcaX^mVKz=E|J&fEKj25ZQt~mY}L!mpA`L&+mBV6iJ!D$NW1z^9!%TZ@`2#! z?6#rS6q;dsHD-tWsBbTK;Y!AaSSgG^13rWZON7#Tk1qR)fuRCL-s#+Vf9&7F@JIKk zs0}ntX>D*<@7Qk)0AJgLVO!ofVB&{)n%xkj4s=J7)wdqRIC=8w~_ zQde_*gLN1)iMZk70pAqX#SP7!xe`cxLd%WmO%~annm^!UZl_mnDF~580=w)CbsNEa&JNS8MF!=n(QFPA`gM1A`-b z#9ddzXkbUWdfYxun@x!tL^6{>Yd?~YXP;mh&Rk>uF9ItX@11gDht;-t$Lg&UIW)EtH+wpADtw-QgV(~s<5+R zu6b#8wVX}9)mw|O-@)Qi;;R|1_E6rklGrt{>gRYqKFT5j#<w0QDJ1KuU8~98uT@OmE!-FZI^Ajn%0+-s31htxhUqzHA4 z5M14%#&jpEmu!k*-{KJS;jEPx_4Iz7P~88v4@Oedi_`6UC8-;<5cUZ|cTKz?M0Qa+ zaejGcri{KIoXDrh*J^ugr<4;pLDrA@XZHp``JAod5Pt0qTah(CsFD!N0#VIc(Fhut z3^~O@ldWf*oJ0D*U7f#fx-eB%m4{oV);+CO?OUBM(PxU`Yc=wptFCGhks?93U>LE zW+7!Bpm#zqs?!+kGI)kzx3I`9`9@K?hgg_|vd)AwmEee#Furx)jFhLW?K^X8L))D) z{9R^!$D}rNo8@Z@RI%Z5eQCp^W=A5qi2uGt&en_$PR`Ab+| zmXS-$C)nvH3l?8GFzOEU+I2ZzkM2%G&b0-0H#GxoCG4u%Na;7(?iEJ;FPn?CUXwH%9%~fI8_NAD36Spwj6l1nh3|XXGo;#gkl|A=On+_kJkhacED} z!}>KwTnp?g=k${@i?2^_M-A}h;)yQqrww6%>!7IaAbKf4E9s*BsTRT zG3|)kKi6?@Ov?(fM?D9-yNhCXBpJ2THgt@w{0rWknkFDKRYX7Ea(BnJ^Z-9#2J=%% zd!nSGUPHt;QfPCG0a_r96j`x_I{RjTl4gM(!!Etp+(td9R~-nm+5ig5F8n-a55O>7 zuM9VlfraSTI>=FgE|gJ3LD&(Jkf_P`G+;GM?*;~o(21!yyf#aq4>dGiV#|*wJs=h( zs1YM@f9k-&uLMAs0)&IwDd?2lV+TXBk*D&r^x6QqD4+*v?OVw}*=T|5&Vf(tsL*^# zz(zE#ofJHja>&JBr+`5?p{7*lLP8qAHx?m5AWSOAPDUsSp;if?GXcDo>4m}GNeAft zK+b;BCxs~ZZk~&9B?kbH$3CPX>XDkPQiIYdoO`*rjfOztS2-y_7RVjxOkX?#D!V61 za5^zy8NCnlS7M9O(g1LU7NB_mK>Y(4M3F5*xM~6LsmbM)MlrZ00beP<2_^G&4n;e3 z%8Hr={)Iqc{OovaE-^^%YoIT8uRiPw9q1edAX>k1tQnQ?ZUAnj02nw2dZLH=oTMV` z+zUW2CV&Rx2ioQsmhb`}AW&$bSCRvbu#JiUu8APj4`r-PVekqOAOj9JIk20hR}n%f zuXeW^f=L_9q;MDr`(H6Tix4X?y|7joc7+jyfEq}ClMt5-H1caD0nwocmT5TSo>GJV zrXV<}04ALSI}iZ+6&ELfPK-b|XIv5xdf*|8&>v`$r$5rYI-0;^dXO1>uY(sn?I{(Y z&@6Bj0)@eGS1l0Yst&>F)3#I?$v#ovp5(xuRDhAM`t7Ay5iTr3UDPBkj2t$)xDRr2^gI1546;@sb0ZS$gGxPvUiXR6q^vyx(d_ zP6;ia^BR)|M1|Z5>V)z*;G#5{ROE+jD1AqkeurO?7DlimC5`h>n zyu_BAPbMEyJ-a2$I`0`Tp@yvoZ0%0E(Nw?$^kV`#4@Ni&uW5?=>e1n zfRCQ9AWm)YlN7*V47f-8!vrc3*o^_ukLr~5_)3qL4EzfxgwJjCAuA5AX$I(t=i15J zkp0aYrRB{4B7+l(=?wEE&r59qF$n`Q$ARxMg{J0#7Z9^LNK(G#R{0SKR~-P?WY8d` z1-DT;!VY%`sC^6w^+D6lCJMHq1W>~jrs%Ixfnrbs>9~!;>SZI$1MeYz&_bgW>joSI zvH|qI0vP{gZ`IfZExH2qES!5$yx?MUs?FgS*pI1D^u*-?6dg&!G|My3m*+l7fR5}W0$kic_Gwv zz9g?C+nt9M^atZmsyu3$91YcwKJ^_-HwvhA`|B&g_e{SEkk^nsMErvHjK7`XQIQuk zoTfpIh5v09B{)jlRlTdKI-HPcf*25GMaRec>gr{)=&4B`MQJ4 z%9Q$O+uevo^SWJo7F@S+6wUx1_u*I|>Y|CO4ul6W#3=5OSn?(}9^F4dQr@B|{F03A zn%)QKCxgqHZvmSbq~J)|6=Vbb8Rqf~>kAK_+M(3TJ zg*$+wnNOR?KaCX-HS{WSWD7oxMYy26E1b37eG{DaG$WiAg}?Y&VTqdcyenw|eFVo- z+4BT7jm_RYshM6w;Z<{8lb5YYs=<1;So!UQ2|qx2f7_~@0{}+ahX&uwG`%vT2rfIPO?*J|Px_9* zK3t@7`CEc|=2+Z2Ld!kxt`R_w;?v$(hz;e(9O|_x?V@lT{DyfFw}TYE$(_!?rWXpuqAY#ivMmM5oJLULA^l6#E!l?|M|C791tKXEvjLP%D zO5bbJU`LI|v3N~otih(kvSxzsWezpN^77m8I60Cce}dNod_-*+BoCjD4#g$@@zr@3 zxubV8!;x(o4<9Zb)r?Tm8Bc1Gl62IY6Q?RyUoqbDUOP)#bjNAp#O1C<8O}O8>@ZZv zM1VGh9)q+QBKiy6cLT0u=+Bs`ru>OYTV%$AKD{=8UN@T(#-v@S_jRUf;?qF!UWf#h z1AKD)>~A6S^MGbKoP3-I`MJMBBQRl%NwKpn*>e^d1N)R9eA2~rV!JjX+&=XcbY+lNHvk3puuX)cfEEs7M^&l*m z@7-#>(ETBzuuqvdjrwWPf)dOKd|BFxx$5DIs@}it!~SSvc38@ua`W-JwM{kyy^&^ee~dX+eablpj@}RO)1|a{xtqF*e^<2>pz8kN>c4kb%pv#5oaZ^6fOY_miAF*QSon zz|a2XT}%q@uDFcM$od>r-*a4gekI;b+9|KeaKKU)^DXodr?U}@<8s>31UMTmB>jZa zx;7vk%kZ5rIzX_rn=YAPF)c!cx%;q9?YRIppnZFcKqlArf^f$i^*&tG&aTq#Ya`T& zPpHq@>9x4ZvDi903ZVAUaNu2KeiAdNoBM$k3=Sr0V4nKVk`Z`l( zvCiQB!X|evD`h7Wmu%t~V-Al&JB_^R{Bpf${PaWrLTjAvjjIqgW|i00j1%)Ieb;=c ziAd6ns(?iHA9^?Q!E9ftZBgxJ9%{y4?H{Bz@XMnG8WV=k>Gi{3!cs!;l{+?w?XKb6 z#V!~!e6?x|9Wj4*VmHxqeKdoTtdUYJ+r#_nBhSCm#gAHGC8%n5Mq;YPJVeH5Gm@wz zVrh_&C=>`%fB8Z=H+LyKs1Jo)T%ANx9V5OG{^&V)zeB&{5fn=7? z-BfSI{pB3*GZEJm+#;*)y%T+WYIh-#4g+|i@ZilzQccZ(GCFFtFRm=|2i6mkXX0lL znJeRmg`JO{bSycMM{bi?OGm^$g-f+8|M42m6+h5C zR~(Z`DK237LYpO(LSAq~qrs6v121-f-f6omS8?u`HrSyyRV-6kmL02aL#$pBHLl^w z*_xu3K}F+3%4bkaHe+e z&QUvIq#-mCT$fGR>a3qo?<_d&edR~xombxLfLHqZe5hYOPeeo5&?85xj;ibh&rU9t zqWI)9DB4v!kyAYGQ&7)xdQPIgg_6Qv=b>LbURmG_^8(ST=B2F0FzoN1Mx%H=UVgX3 zLEk5M^-6qEZ7K-0^Oh;m0`c}MEiSpgC-LMCo=8_=E@`>OF#aP_V`%`7xlHO+vJvWQ zp}zj;lXW9j6uUqv0Gl%;ZdsPlH2^W@Lg{z4lX3e>&o%4GveM&Ni;Y_3$8g%*1Jkr; znT)!*E8`$1L4Ly$#~Pe7EkOw%Zr6ncnP+;GovWoAY2N_bszk>U3o4&nDvLM%A%LJ_ z31DEjBz47fuy%~L!m(pKPF*M{3bT{10}@db1|X{v;^rW~DDlaya%AEeeJWzHm=pZP z6C4qX0mgwPD4AqgLu~Hz4CM$huoMC!tIK!AwhM`RriZVWVR(O!C~u7s2xl4)T@o`d zT;G+!MP8_7;ei69AumA~=>>DgMwItT`1oLdD$3`O`IZ*bg=VO<+bP-g$x z9ymoA*YgW<3QoK7p6!3~T3K34!j3Ub;~as%L~um;7pyxZEXW9J8|*3s{Q=TO$XAxa zl1~7RZ6RVFr)T=w`Z3ED8$k&NMA>k6|rvWT*5utppnVRb7PMn4Z7W*Y= z`;K>wqgv+rj6S=Q%Hh2-@@W?KmN}k0WMoxV+_#3f|FjwvGJnF84JBmX-N`-6_ImZv zfRPc@6B3T?xS#b5%ok}j#jjvC!6N_u(_@DFN#K9YM80ap(F%#Is)&0Z!NVuVKYomz zF69||9$0q)i!?-PhJ^B%7bv+RtRoTMzt~S|2J1B4OE*I5N{bSbj}f0Ye9E$h`y3@X z%6B}D4#UAGw`q5$3&X@Ghi~tS8H!F&f`vuTwQn57P`G4i3qwHD)g99eak-lh7kupp z%o!TE6UOfPOyJi?>PzfOYn2DzC#r5!JBQp$=$ZbUGFL-1e5JG*9=BL&{Au9!m1B`l zU8i=1AHhGbn1)u5-6Bo+_ZZ?K8#5X&jfj3iJXr;3BJDuDXH|ZqT#i zFNrMSCL#FbPB@v>;_4{T1J$s09hv~%x{sGVV&ZD2gHjrrY4WB>Nr0ZcIh*pA<)6AsfYxrvlH7JtnB=C* z4|_83ePC?hJo_-=&RL5HN_m6{6f@Ch;L|i4=}UVgB2rqi)=B~C@`?b4hg*^mng90$ zI&`_T%=}0<{3`(?AGb1ipFiW7P_+aV5rkpSG}Zqk_9Qkoj3Y#^aGAJ?9tf?8a-Q$>Ub=Pw$#75V-iitRWyJf9vB zshN*?tAE|7{5d`LZD!MxzvJj@nsT=Z(nbvAs^`pyr09~LMe;Pc5Tz1c0NGE(@9R2k z5f&dc{u%wVrL#P)JO2kTcV-pt*=Wn=dK0JV?3WWX(i0?@&KDCE z*rHu;Xd?!n?iH!4rUno7C<#Q+LSRRQ)z>1FojXnBE!H(zYdd{ zUd-BYh1eBRH*01lj@8{uZk=_8cVJE_|H;bL7DX`s)| z3?Hc%Bwm%yG`qKv6ShHMt4yvBnC#9Z$kWP^hIhb)Jw#2>*v-c|@(=FQ zoWqHTDdMSxXf(Mi-M?DmB7{CKam{Z>wTArVpd;?IA{k1{>u(_2$bbBVa0MlW(M2t9 zvlM{vhAn@~xt{|@Nv94S<&C)q^1lnbBYrL0vKeVOrxLcDKS>G-K=GtZ$w_&NKA!Xl z`ry6FrFwF7-9vj`@*&d3WV^$juDqGwnTyLW(1g9Z4P>4!trD=HI={waI!Le^E%1FZoCg-4wpgqBLr zj8i1s8EV1D;sj+moMf097)!exc>J(hglluCK8+RE9(Y}FTDa#{Klh(KC>1@y6~YnWO=VBTjo zGmZPl3WlU&JyBgiWo$?+=j&3by8g^JcW~`9*UBYFM76%sL8|kEm63dHgKgMG;J*~{ z7XCnBF7nbDf@5efSy6Y5jvs7jH$;#ly2#)Wm_c6Rex}O{S2HkRb8dJ+bv7J1HWWeV zr*PA6abS(xY9Wg~@jJo2Kd;kOfZqBhkz);6L!t7)e` zG$PlzF-Qtkb=3~iw6^#F<4P5%{QGGpl$fQ-kd@LUVWPam`DsF9FQt|RHr-Klb}0W2 z85!P;NujB1D+W`bzjATQ>R6GaZ9lTpNxYD=bTQnyS?~foX~1Fd&!E}&|6x&MXFv%b zfdLI9ydkNV0&&MEny-oonnDlA#B&C3$0E`4U2 zotFQ?^ETYUV~fvphd;`Ry47G4xC5mztvE0C=YNL$X>pWs=_}XSlxOgS3MHU{%0bjC zsv;a<{dO?U)I|e-g1yM_1p0M&da>3sw1)~WazWdZp9)VfE0NVYOoxJ#H#=%RZA5G!?s=g`y#YZsY&q9mTM8~8PqATH_Z`qRQ zT2~dX%ZC!djdS*dlf)N7d~ft944b-|cZ_Ka5M$WrQWM~CVepy6!=E2+MDOY;oO)y} zzQGE}ysQ*{NMx59L>G2_5Stw?o*-||GS^D1{$kEE3&FklSfP4dsQGCOy=6D68R9o# zUlS;lkq7nQjRk)AgC9dg@2k4cWS1*0`VOK<+^~C`G=W?ktEgh7Gtvhrr%3DakDSDD zejfMH(MC(Jk@F_7sEG6W8y~i>70|+@Yq747iZEV8{M`_tra~1Fy)ko0MJc~!BB6-7 zwz`7VxSqkk*3zsip?rh3kwuO+hagT`_l)Mdqm8yJ?R9Y7L3b1|{EfERLlC7?GM&IY z!_soGT3DSnnxcV<2X_1q|5_fy%QXAsmHb|tW24f&A%mcI1iE@pYe}@grOiG9NKLb~ z;!G5OV+m-0ZKu(M`$VEXRaI`jV|}nJBjgyOyY)-ESX+18P`n?0$FVdS zgcBaYzf=ajEzulPp&@WAe(0|ti{wq$%vjZ9LJkertjsHKBUs+pDdbH90s&!O|pbJ1O0A9-edr>WBGje^a8=Dmox z-|6RH5B09u0<+t=)}$~(jJWaqN1A24G@HS-A8b#LzKGPYp4N%NGzt4eue1;k(3%LI z$MiZ%Kbv~rKgeM;tFPSw*S0Wcm`D`?W8X-vb)1!c5jB3V(VkEvqt2M4>u&)v+_>y^eZ%cn3QsdGx1F!nw5H8pR@H~ ze)3HXD8QH2FO2A}SkFnj>%1oCqdbrO0NXkY3UD!!jLT7Y<~1jiMAz78p5 z(Ms-E+cNQ{v>2Bv-mY4|kh!nbCFi*RH7T7@XjnLES+!oKc>Pm9@z-(XB-(KGL>4uy zwB~iiT9MNInI}HyValk~vAJ#`h;Zd($JCui4PWpx*K+F@Ucanf1xaxI!kqQFs~st? zpGR^|cTc~<$m$5MzJjO3{)rhI@7runjskjbd3AKqw7DhbGdC~p38NFz25?R^mLJ6F z5soNQ%vNQMklSF>8+c|=TSH|li8x%54b~chh_~W3H&*Y#&{7XkU&6g-Cnrc)gROlm z$;_%oq0DXA)zNmr4H>WwihALua1HTVAR-wj=<%QgYf0^1p zoTcp?s;!`~ltC2^iTZxHx;Hof7V*iuC!g(%gTARmBHy;1ut_8F8o^J(e*GRZEY%a9 z5rWPbhEV?92TC5DXGfp3FDg*SnaHtkA8%Bx6xm2}9f@WwUyipF!^xxMy0~;X z!S_OSPFaI?hCoyvE=McF{{wPBjlZI4PVa+<5g1~FEu1Eve)h4XNRlF+!L`-I_0T4q z!j&6!kHJ&yxJGztybw;Fo+%pQdiZbr)1Sf1VaTgwyoA0tND07<&mJ*V$wF%=dstN^ z8@Hv>1EDH?*iMo?G^&zQCssT(s*)RwWnZ`7^`y$M=Y^nj5hz#zhf6$WcZpN9ghIsb zgxYc8!hMK6VJU9tfS1HYPA%-gXC)C8fO6WZo z;$J1@p@GC#sj*K@O2Y&36hj%pT z2*4KnsV3!BuI#0xQ+U@)TB4y53;(A>B_!hZd>8iCN~8|fI_P;$1sy!r)df1(`mvVyM|eF{NeY8EswIUdPpgH(GRRz#!jIe3 z28Hj>gRWP(*USafKK>Kc-n^nGnuv2NwUUxU**ZzdypME3$=+k21fNK{eKQo5q;xjG z|4~;|pya|JEm1{8Hj?^4q88}2e!NdI2EO8*gifTeb>+haDXjp(k#A zR2av#P|7V+)$p=`&>bN71spD0aO7joBg>-N@c||DJ5kLamNv@tQxUf|)D@p9#!i4? zbZbxV*T%~}4{Wb-Ze9*?dsnJb#Xg3yb?Yoqn#TR}N{CxGi890vg0Xf>k|_7sNgn`} zDpCH8hvpO$x84#JAM5qVK-{tWV zkwzYmpwTT9X9;bbT~I*W%4v5=Q!JbsXBX!Yw;fWIDz;Ti7>(T$rD>c$gt&br5r)P? zhl30EN|bwSTZmYcOJ^&@Vl=;y3`kHy$X&hSFwc2=sQjq&+` z+XabIkvi@@_Ch?=aqqc6=ho+AyhAI)I7H6Z2T5gP6Pgx~!8nQ$)KV88vL5=r3TOJ7Bvo7fP_* zbp(vv|7ens1pMQtKQa<8K(2wquXwPe(|8#(N|T5EjihQih4t4TxTjE}%RnyS_z$~F znmk6?!gpWqgNqrdAbKq8mI7hM2ww{15Fi2xEezIX))R z4ciz8VS&0`J4K3RYfnq$?`f0`( z*j9^ZXUv6`yt4514i@BIn|oorGKYccduZ9AdcAuJLBwyJ%D971ouh+hid?PupV3Q{3ORob{uNVnR z-mNRP3r*^7(G#!3S76_Rv_4QU>d$?mC0<9~jW?2jK%oo&BU-kF@cO}wR^l$g>(rm` z$i3-jzeH-a5N4gB`e_xuVrhBwcUWYs`?xMQq5{;aU&cq_b>^(!&ui;%kjDLUZ_4MSjNZ5_X*rZNcH=wc5q=` zj4#~$2LIha8HztD_c`dUCDk9PA|Z|@Ae+_$`|H`+SsGwJRqY&WB>J(KeSuZKo@iWR z6Lku(+1os=fYnK`jnb3oYi=N;RnM8iRpbCa-=TuBUDbC!;3_5pYlf2wd{S7ws`{UD zZo@j@e=0g@>=#J*v$^VC>N#b+neTvq-mXWIdEE$PYO1^UD}wA%HRdR$^bCO}OGa6PfWZ(U!h=jC>gsi&?6m)STFG#&U>A>+vNemj4WZjF#u z^@d4dvMAUQCM+x4!^B@6Cb9A`G0DRuwk^cMchJ@;Z118xOkB;tx(?O%1WQ^=M3}US zG?K;mE|yCWtod-bTpJ?`lej@fvH{t_zzTP;d6@hOoxX*}b^unFAknx8lit8)FM9O_ z)-b_Vh6&xvRZIiE&7p#a$?C7UijBb9>7;^(NvrkTh7-WQC^~7JSzi_=I}h<@?gRgY zU5_Ng!{kUBZ_5h?#6MW6hlk167r34#z;7F@)WgFhEQjmK1b%-fJv>Z?gD4IJodEnP zLdLO+aD<7r{HY!j^#6kG33^qmJwdbL+Y>Zi!x3%Ec}#s_Jz1k3LF-DVB( zeu`yp{i8iD#QPbR{q@z?0rokTgY}Pxg8U0CN9v=VL;XuE$LU)%f$}RX$D0@Z3VI;l z0nyPMo(lwJM54K8E+yV7Mx>gXr>TgyhTa34t>&Je=!v(EJ_e${`NRg`7%29(z+Ac( zG`ljQ*!(I=N4%@hopAMCV$Ns{ga?fUPN~^@F{rLaD}f^>nit&$!jrxLZIjGPmw`dv z)HRNfspiR-jKn*D?gIrjbAu8vGK4O}-)fta3xR0Bh!y4xButFhV9r4zlo93T0Z4?? z75Ec-b34z<#5;oZZNJ%dBXlQz-noeJ40_L9*OGQ29kt}0 zJc|3C&LvcUcqX7dfh~@E4bDt71{2=5WYScDi#Ii_qD_)Ns5TCwm~`bJM04K zfRT5pHjL?=<&Up_}o!p?R!{@{~-+M1pL@j?NYiNs_-x_7ce2U7Ms&( z(`pzE%ZNlv{D&jMnMbN}B zaTS7;5lQGD-a1Z5TLlIbFe$vzD>=eRG-1a7G{k2R>*PTcIw&bP1}6`uC3uyA)c%=i zd0^MVO7aF#ZGsy*^EvAx-b9u=Q+pR!RE?|#f<+RpZB~=owOQkMpIOq))N)rW`3el3 z%G`u^ppC!D++;ZiZt`X-@wT)P3%oTy^t@!$s&Kh?jYvXw)6t7XI0ieJ@}m_W2ex?L(fIE7~`Ago@klKBjlHdp>YwaT#(LD^>#))pR_ zYASOl_czXsu2H|}N$tnjExf-j^$(ShuG^Dz#Ah99UaII6>FV=4g)Iqkb~$l=&jqI~ zL?x%4v^5+6)BiPg=C%@(p#KzHn65^ad*qug!aC^eIyiMJ9!%nVCu31RHqStOr$~9D zxU!1)PQ|iD|LIJq|By{3{hfHIpN3^uy(J9F)3NNX@3Brxd_Tgnr+()raEUep%ij8* z5;eqkCYF8ladA*C!?M5L_b`-aPy_itQgq?p3Jp@4Yh%#neGOvkJHd4PAH`(_pT0PYb-i^2 z63r1b1)s{i;gwM{AjW1$sh}aB%_QMfDa@{ptaf0-3S51B7Wgs_Mj zc4I|s73>OYPr%xvcJ^9FmjW=0^kj`+5sgFM8IEaVGMl!K9o0=L#le*O9skD)e1ar3 z#WG#Z0|o%OP&{F6bhO+U(j)@5aXx?H|44Ut0$=L~U{8uCtSwN2Yx)iVC$*w@!iu>H zG`D52H;m3nx(#^SqKP65+%@iBsYybEnjrB9#lJ>&K_Ouu=C~a$B;m_%V21rgUxLWX z3dQtKm*`-{H|#R1aN*x_Qx9vq))=lP>fhGE0^b;)R0Vj%;X^NyXuyXui3WUx)rP9@ zeT`0x=)@WLyhdC2*o9dA8sT#jeGcqA{hF{_0D9daE%9qA?Ls3%Rm3k|+J$~sXdr&= zrCsRs0I2UE?LxB<+fmwusu26GvRl}$-v!fd zqTU_LU9sF@+@Lk~ThUH{X5bOdatXzq%267av7=4zHtwi!+u>yB4X4|0JB>o|o#YiU0eo zxWU~>{HL?xmbI0L{|r{_yjM+p6TSmITH6pcaS!mthYb4CuXQBAAFGMJsJbf&2sjUA z1M$?nBBYMLw6O~S$sUPp`ATHFyiNwZb(Uzr+nSyD|9I;s(SQ%aJn*U{kyUgu;IFCJ z))Jqwv#q5Y)V5*i5`QU{X!w(b6uv^0XuzM#B=UOpbluEaL&tbvl1el*seu)E!`5@b zeM0KSV6|toK}G6*c`O!rKfwPU8^MaM56uQrcN^M(_qnCL2HplIUBfkcQui0Ez+2xE zXD{PKBIjo;?Ulb5E_vo_SI>lt4DTg)QKjFV=}NqpVv*>FKhqNLWq5gI&}VgqE2>p&MFx%g zm|nb4VZ(!$NvwBRi;b|_I-<53(S~7M)i)1>s+1wa2b213q(0+oa`oFTiNz)^)q!$5 zY0)R1P;M_R`XRS8q<)8Gjq#5YdtQO%xqe4f?YX(Gkp%Ue07dOQH@HFz{&ydg_4uSZ z_=%+crvfbrek$!Xu&Ll@OOl}}vmSNH?vd!HTb{KrxdQ_h1tiR@}8nPlB>o z@ne*=O0BsN5|qt~hy9_p4=aXYCv%ub0_sDt->4>F_!=-gIQZuiP);ctLV_=`@JbmZ ziiVUS`MD(cf09?3YkrZu%G`0;H5F4PbH^37eIlM6>ZnOj$wknZ+6dhm(uCG)3W+I~ zgfyi~Q$T%M@z4Si(wwc62J@-PMiSDJ5w2-N^7@gGR*Z0GUJi+8geUO~LdU!p398al z!CjtDkRBC}bbnCc8I8j^IuYp9LhyJ0khXLkwp*A_LfSDUB&|me64IWcwT85=B%}i? z`lodTk&dh!mo_Algmj{-Q}EUS>p&NVwGz*I==iapVgs2q(XdRaZ-yW239-_vP@Cc9 z1(x)oM**8r4?G`|OaEf_j>sz{Ar^MEOwzIo!Ne?fWp7B!=|e*D=-#F*j{d-L8Seo) zwR^!r?*?7kG~)r;petLInb#Y1V+&Zy;Or98Ad&5)Vg9Qtlb{J*K|Xb@p)yG|#ZYZ? z{B$7S;4 zbDh^9)|#FN!ry$=9Tc>ow}1#X|M?U+lA9yVz#RPb3o08!E71qC0dt^)Kk!2Gck6DiG#+*yaHmgP+PY@5N3Zq^arHX>UCc zhk39}t`5YvQm~{A%^yKbM`$a+c&B0cC@Tl2;Rjny$7r_io z?O@PcVp_4e19|Y5w_r>g?xo`{g$>X~l#kPYg&#`T9M~IoDYx*;4cmJ3#$C!l4ak(^a*?QK z;qfW9o2zHzxt%#cPu-w?=LnE5AfBIspMu`s1^rL`@TDt>G`Z4hEn#HTI82r4nBMkb zs=|kfnc&XDDT4r~D)XPW`8zKls?jMdoR~#k6io^yp7A)@Ci}L;hr%!|;!G2cLD|h< zn$o`|e%H9TkeH_8Jjg68$|k01k?HvNoUu3~mKFOGldU8&%m!vye~O?8Gg55a+h>;I5XpeROawD_=$me4O*hZQ}JsQ^Vt=;{yu)gV8KXq zIPr`Cr9o59flzujq<_zbFfu{Yt|49Txht`>?MQ+?dVofK1o^=hI^|R=$hHO9xg_)> zsar;<4`o-Vnv?<(I&)wKPW65yvy8s=XZfv~lbchT!%>#!WjydJh5%W?YOVEYlaLGo`Q3ERm13w;gy zq$axxz_AG1jAN0?d>Xcett`x^VO!Cs{h3e0wjIiX^ul}^_9^ut~cuXpaf@17VYYv!G8mV_Q>nS?JT{*yCw!ve2jK>#!Lk zvd}8@b=b`5S!fmdI;;%KaZ>+n?5-p8b=WNF>Sj8Gci8;BS!kCl#7)>jlusp=9_aVk zKVm;O!nke-fB%A+`#t4b|6w@ty2AggvLrC~c$@6(6oW*`{3TUt~ zzrzTHv$)5Y4rfsxum2q)EqspT^;O`B@VQt{)K`Pi51%)Xc^y3+z5qQfMRoW>cE6ul z8O|cVSl=75i*b}n^fs8>;Y+Yws$YiXrC6S-Zw1S9_$u^-P2UZIJ$&^}uwbFSGnUt2 zc?Ik*aZ5JmSFm2&5C*RxJb8W_K4Rg$q!F6|BH^ivaE|Le&@1VS*eqWJvoAaY%ij8< zC}UZ~W_cudG~D_Fi$ff}@Emm}ju?(!c%FAAju?(!ct0%1OLpa>T^-rzg%4!UMD)AR zS0lS;qEG%nJ)_2FqE9A5@(Z7^8p{1)Cu%Z~phYX8 Lo`R$IVLie?WQ_O;*RF&5Iqq;($D*#V{y_(T%>#YpkpIprx5WIThU>Aa0d1e zK}#=yIqCGVEAdppUM6VyA3$r5!f*sf?1*R&{^$om7qPRI6@7Ca0zBd~Y4tS&JYrWn zD^7xOkg6i~;L_x+zYHlR;%k0|@d__xRx|}Y+H+vBcf`_xsB<~WEJKG8{kO1vh**yP zGO(39Vuinz?UU!=_GRS=#E$l?Ol*-~cIyE0o$w1id!+QV6&CHtufNDa>}*I$k^A=L zV1IhG){)5lhjXw$xP^*5cr^znZTH~OHBSFzp4r*hFoX8XT~nT-Q=Q2!LiJ5ut)3+zvv z1T;K=@UJP^rC3w z3iHo5fv7=$%f*MTYq6c0Osw3z0Ky~k9Y*Xlw+;twK8)CH9*2$Ars%Q#W?vNZW5iLj z8-#CU0R0VApEAG3*s04f7tQG~=OgQ}OThn`vzJj48AN}Ej$UO6Ffy1Wz#GIfYb0Df ze_9>JEBzD5vzDGcJCmU8^?}aX3}YFmj+&|M+!gWzE}~I$w9HNPUQe||BE`X3Y9V8+mo`bCSeUv5r@E0(C=wOa;Y9OOdu zMqOjXesd0tcGOLVIcjc+y}YH})Enc#AH9BC`%yZ^K^7#JsK2xs$vE^Y;hHt-J`=lP zw!sBL)IUt@o;euXdC0_`SaE_zJ=gv;l;DrL#=&fgB04nMK&=naBC5j+O;>8Y*_@In zweB(ueI&Kk$1Z7g9zexW>oJUkN;)<|)EbLgD(i5zcBIxcNa#^+x}(rSBDG?$M^$B# zsnnW{U8%;X3~HT$U9PR02~M+8>rXfU{<`fz^{3gGV4~{it`3CZpw=;8Ltlazu7p~@ zgQO7^qQk|!lv*+7qZ;Ti=BH9?5{`DL?j*FnkXkX7MTIfk3XsHciO}JKzJXfX!(@w! zVpKV`F2?|D$aL<87SQL>47Z%wF;~cQO$L@H@Ql!I!IPgZJ3rD)Vdk_*`85%z&^+}Q5_j|k6N!`ly}nEK<5)` zO~A-V(9H*msI1qq*Ijh%)}hL}2W{`laPBJW0rX%ZqdZmCpRk1N@6&F zm9;BQkYvUSR#`JKT2dG@^nSOv#PA#=%v1l*I#Ab5v?at{iLx~Ss$bA1+4WFm9;AB z9Hztj&ZR2r3-rWro!2lJTb1<|WW=bEx>eA+O=S(j89$DV!$OsHAnZ1xN*T2TY)6YG zGHQj&>V@-UI`hjKm30GpX{JsGk-R}=y^5nbkF_4GwtAtL<}+NRns|1Afe+e|0x2@< zB*cfmI%=uf72>QyfAbj>JIRPZ^H7%27!gdQ ze7#JK`I<-xX1N-3ia|;+D;eQ#u7<=a_1+=a&=XA2tJQ~wpze*>xeaQZ6~X4d=(vsQ zD}yj!mtZu1!iYF?9Co2xEv4uv?84`2oI4%O-LTvH)z^k#BHn|lzfqH+n20Z8C>>M> z4#h+qgX48ho!1p}FPo+pn6|m*h8Qb9saxUq=D(n%t4+;A%`V zk!NyG_N$#Fp2@v5n8_jQ9>m#RLxcIbglFoT1-p6NoE z&bidO9dQvFyrhQA+8)OuMss{H%dC^p<&9X+AhVuF&o4cnE4YhR8SPNKAoPrj0WIV`;qp{bW zHSA8dN?KLAYj9P8oXA#{Bn_@AkOe#AG)iL@K^FWFMW>h545*7_+ z3CMyj7}SF_zXET!${K@x8O&PWud@2G9HnuC9CcJ>J%yea!FZ>5{(4V?`Rk&}Is`W? zGc|31x(Znrd1XxUhR8!2%tQB7JP)ycKH-^sk%ry1S4)|EF_Sc?rA)qr@!Zu?CSS^U z-jKgm!jcoTs|JL7`f!+hp6Bo>(e5Cm??chk8*edw*%;|`xY+dU3)3iQPY0w8;2Y1; z_z>ai6r^Xv7SS`eHqZzA0i7BS7e($31L;g4(uxL>hV|&EBuqM!D;r6}An8#6N$q&U zl@vs`qglXX$tk)$&BW&zW-BD~=#F%H3MQxhF!Iswva5LMDM556eoczozvu*hO^O$& z(VeN31y9@ujPyVykllWd?kc_Ll!iBSqr0)I$Vl^d_dqO>zD~xpwdOA%x-%l4Wu53A zRN74T{0BHa`E7toaETn9#BT#&(uhuGdul659SP?7HwOw}TG z<%>JP7|&J7>~#bP)R-Dr4%Xw7l$dw6B(p0`2$UEfEXPR?YH{Ca#Q*T+h$Q?U+s-MH zRrgQk4|SJ_N+T;_{5nb?h|78>!+TJZi`lP}VFMIBLm^wm)V|7e??}c^=D*vGMBl~G zYWEs0rlT9tOV}h1o00v8ZAmW^vJ!hUh`n6g$$+TTKOr^}qvPnjUi^Y4x(R=5g>H&& zN|~R`zhF2tqdVCJO@EB1=JYJPpoze!X+i&D7c@hV(~@z5*;A+JRT^%QuMh|7d84^VmfDQ9^>-MNprNUWM~x z8@golDzisMP*j9rbf6}OhvRHMM0O;k+Y5vHiD-v}dZHV?KN($-9fWodyhzc;mF;lR zCLJQfWKBxbW({Q(9VcHTxO)p4&XV7Yq;W91vNo?9PH&^{)$#~<0V7a!RsO9|%GDZ_ zBvR|2KyYo!Ke`$-r-T5$PlHb{rHDr3=;|7LWhomGUqf3DxG_nOuBpNIlv1TK!L>Aa zAXDOLAdbFY+Y5L&a{mM{R;l8^Q4cjoq!dtKf8PG0_w4p6-a~ zM9&DE7AD%^_X^$$Q;Ru`BRV#n`j?nk~W$oX$~i;uMd)Qn|Hx#j)x+!}uyxDe%LLV{5KGl+rs;TxGyzDZsoz6! z(Zvf9k4>S(LUbHU`H z$Wvw{eBnkyKt$2G@vfNk#(w&3dWWar=}N&1QQYdn6PC^Dh8N?#P5ge*CV|%OP0wkD zb>Nlz&7?$ieldd5>AmE3^C_nL-PaB-G!M=Mjj<3g|kui?1H^=b@y?Ej>R`3m4YDdNF>F;OSV=z^Io)+gZ?+>B) z;6G|Y&M{liB&?p&4H7)KLNM0&Bhtt zUkz~RmW0(#%->k}v?sNya4AuO${kR3{}d6JoQY*cOa=KGrSR;bwMUGNVc~HSCC1K( z-7_kVkPvx|PY~CjJPtk>jr8F6)G-xhA+$vSEW}BSRSDkvqZ07??bwv7(IwIxz-yu=a;hqQYB4nq8Jw;3ezri_*U%0=(Y}!*_R%u} z=eNmiBT&At`1r>t#8>`(CQgJC?LYRxZ%R?t*h#j2%KTy{8BDE8HO_#_WOz}s`O^c5BPqSVX#Naetg~IB z1$^^ov52(W{w8V7p936kyPqtg`SXB%wjyf1=Iz&mzGAk8s?C;>eJSdBCuHoqcMGtYB;hq%`eOT^D#X0j^aP_?}e@MkC zqCnw}$O>sVMT~`O?*kc?2G@5}`0_rKt)h4X*DBsL@YYz;VxHc;ZjU1!*`%{0SvJDR&WaMznFk z(>Y8&JrGx)DW7ELV)+}I1ZUvRB^ED=bE)A)=|(p1T&AvMCZj@EF%s!H3k6m)66JXg z?&>wtI9PZdWn0TgtY;w_ZXF}>o-HWOdPZ7#7693xF6tCO^hQ>oz2_Dj{%_En|zb-42X;B)gJPetT0x+H?fX!p{3Nj1wC?e873X#)px{;Ybvx+2cuo=-Ny<bh1uc8PKX*dSDVw{IWYw#>y_x=vM zZlvLS$1c6wdWM=oyR(ijIDhXVc_R<>x&K8_svLqX%5=1#i%l{jsCPRYNj2=gv;m#a+ z?~A5c=CWA|Hp_8rJ2cW<#gRlF3rM~oAT3|w+|rPiucWovi^iHL+r7xs&5LSiO((#? zkHErJZ6B*+=zAO;da}&nR1?fpYyGLfYpirRZqti_^f1yy`!-IAk&jazHB(|wMF0Ao zwnUsT<^NMwzS?P?Gszg!3^Mx~6genW`R|_glLOO5z<)Q(Sd75$a+h?mCLzWS zCS!3~Mr+n1&8&Bn<*~Xd=bJn@8+P#HHXhtqp_LLiVc!VcE)*%rS|d=6iS|pTMi@*T z%%q$up=pZJ6cjut(v6g8Oq$Kolw^#rrsMiaM7~H51hYgLNL0#GV2?EZDG63`qta9v zFuYpI*|Iq&nrMp4W5EN4&7#OHYjV|gz=A&2?$ysxm9Z&%Nar+t%wRQ`6zZ1AZ@O+AA@G5Fk&c6% zaFKixJ4WXmy?C%Ww9HX{#^kOvM+G_O^3gmWk`c`E(EkU+o5zMUlvjAgrk1#U<9HcM zJ3vJFjjj8ALi*hVjUS4Z#69Bz(jo>2?MB)_e^nj3!Vq&2Jj7gWn!dgv>^(47mHmeJ zZ5ZoPpjf)|?lI96GRe;rs7l&gn&jnW$*M<9<&03d{cwP8G=+6c*~AP_Q&!#g8um{S z{csdse#r7WQ_I-FX*2(38D;Y42Rj3sWdw2?$hBW7L#6R%Sfv@lm0S;aP>8919zOlx zwfAi&UIR?-x5{!`d5VbCT@S+GQEDpit)IPWvMB4q-EZ>X$l2g2OcGY7snvP=V+Nje z%xU3?m&(Y!bDHYJG$4{z3du5I32wm+Y@2Z8dy2F@Mgvd62gZ9}s**(~d}zG)<#Adn zCLHB^WJ&!p(?r5Cz@avLh$!JWzq^G!5D6avuAJ1bAMt$rJYP!hPb;y6PY@q(!*VO( z1mG67A8I&6!b!lbY(IajiG)vi6((#8knvJ(INMGd)e@Gm6WDf`Rr)G z4z=~9)px>bR>Jl<4VDSKWvy&$1m)HmKRc`oc%8A8Jwi*!g!RT&_6=HJBy2FYvWFm( zf5+6&)(3Jn0gkoBy--mkyv>Uo+Z7t-5;pS^$9CVFc9F0Ja9i7ial}&!9opNXXpNMx zjjw9h<|5zikdtit4)WhYe2Q%rttk@t60z5|l~z#+JNcTT?K;x#0-Rxc8I`r0FHYHR z(ef{058zzecEEc9PqKYRd!K~;kU7n^1ac0b(u<6Sd>8R=+txsb_i!bn)OLnejtK|( za+@s`Wjus+@CUwX;6Kc-p_0BlG{F13w336e(lbQDXI)>yLJ^KY0(#e_A$L!Z>syIy zlP`vAu7|Z7Sv2k~A)9hF(6EOTo?XP`YQ#vcw-`uceE z*#_x7j|^He_O|p!Qx&@&W2{tq3usH_YQ@+N>AmK$3)kb?*pYmh{39j$e4>HkquCu(= z3H2;R^_??*+vq6*@`Ic`5^Dmqs_RE)OZGgAmO5|zT-Eb68IOWL z^%Nq_MMe&IHk0kRe&#f1J-f+(U6&a-?|Bi$xWdRK54wx%7nw%Vu6WU3T)#3xyN++5 z=~Y>4B=0Q7(w@Ne8)M0|&p;#HkSj-WOTP*1rc`&6=F*1A^{3o6lJ6!BqaBIsFQ%2y z9t2hY4`XBo=>M);tjSX8)qx4FLNW^Ub(dspjr3x4aA_Kb2QrcQ)Hhv08V<_ID7vF? zA=+WX4C>KN#&wtRDj(Vbp|Zjm`#^fP&`QT;?D)t;=0UT289O1pA!wwk8cIY4gIkKO z8m7S%KuS%<$YAC}&svO~mEK>0-Om`A&(~;=dYZZ?^$=(e@~(=^=P}59NK^Nuenx)L zOtWi!&~IJswHcXwPb!YaJXa?TO&k^Ey^6AT*02us26>y%V#?KpX?=pcOJH_gnYJj% zdmcug#JVgE@@_&6_B84<$omY+K2XE&@7Dx*uff)`xC?9u@@6B4Y~HSx;uQfCNR0tg zsd{pC_ZD2Rwv8a&-CK>RW-Q>+TBB(=@V!P--P;(JzDG%@dpplTnr|+RZ|*(KxIg&n zlhW?JKpdKH64j=Azhe}N>KhN_T_91K&qi(MJ_xp0&8Go51f+@PTS#Sb9|rP><{LwH z?mmL9(MJJq&@kfu9Bdhy zZ%D<8!u=(*&eeQ<$v)kufaGg~(zCLK`zs)mG~XOr61czaH44{VeR&Z54UqGi4{iYW z>D`31(tS%&((f-eB@J}n6I6xnbI{tW`_N_F7hqp~bsu_+`yxd5*L~*{bQ>~YfN(8f#LnJB*Al+55$@># z+g{E{qzCV1aIIz}$}^9O;99R-O(TJ9;!!PDv{_2Iy55#6M&O5N1V_5I@YusY=601@ zE`zwX^P7+Co{6U@(;dn;g!hHJcB$70w0Rf<)NWaSBua%-Vt&^IhG*Wn;rOYDkO=HG zcvH91Bt2%}+eZ3t!7zT<#8KNgXs=w8`d5o5zvLXw(6f6DiU=M?lSH^X7dD)f-X}x2 z$MMW;8;Zso&ps_tIf$l4_k?qlDEJ{-1w^}Ff%Vw%Ljm_BK0>$QcLMIo$jHu@!`!c> z@TD=_{dX5&6A@`cZMvtyqM}5wgZe?Tdj>3zZ=bn~pti8pM*o<}D}toV7hV$XH;^FQ z_AX5$?pelZ!CG|OV&h8NbsFg1v(c*2whKr*r^+ZaP;fkTr%?CeE6Bh>rF1VfMu7TA z{HC$k96(jzUcn|If@?ca6|2#+3{}^#r#XpqSc|?#6>%^4*Fhv#GOV5}`Idn{YT^|| z<&6;z(J~1-I;-pr5`Br}?tU>u{F0}O$LatQ4X2VpI5#Z|6>CA=yC_urRT3&%H2~yJ zTplWJ0Bs1!{m+U}Q9O^(hXJ`GXN8J`lL@U4NEqM!e!MOxO@ zrCk?7MR=uS_})CVK3<#I-ad<84THCDw&$2cJKm((-u@Sfh`<&k(Y~CCh)x|t)j!G8 zGHeV@&pAS*4I}(m4whKyy=mh0bl#YY!7_dF*AC(7ir3wQYv~uM2|P(a?$*+4QYY~w z1BuYmkC5qjx&gUIOMi>@$DZyO2qLxgT(I@v-~VXoD`st@iKJ>(GbGx_>q^^u=MqIdUa9k{DkBe^LtzAnWFiZPRz z#`_rq_w{NF`JNcZ$nRIHPpp;@)0#U;+}f8IcgmLw6yv+Zbi`y7HMWC%ST;VVGCWJ9 z-|moMi(NCR`Pyab#`jiaD7A1zj$cgeek7){7D9t3+{>~7k(>c?P+KC`(e_?5%TJ{C z0dhu9A~)6+XR43K4IT0c4CBeDfg zhj1Es#8PtyOF>|2)D*n(4w$vUDvwNDca+fAEJxM9(cHYDqm_n`)C zY|jk<+HJRB&JE#c3%A*6s`NC5`y$eI6!9^rk*L9tnn&}ne2Qdtgl#~$;}F!T1)?1F zG!3D007Vq|$^X#={dOo`J`UTfD{a(2B$SrR%;X`a_Xp95cGzco`+g!s7~oNWpk-E$ zuPC%Mw6}hfBD1_h9E3CYQD1`EHNKSf}Nvhl^>?@eHq84qAs@7@_gAB*qXiwL|DE4u;Gze1!ED_>UoZyiFP z&mYIi-U3mpD0X)lmc_e?C68H#52!{gXAm3j#V3XsY{}p`E(2cR7J-lC49Ayy^lEuR zjEEoTz~_4K^_>wd4HzHl8QHt{V8Hynp5gdPyxumCqx<9g@Tf0>GXbO8n4Mrl*9EnS zy(_VM^OUXtLY0R(F^OZCh%eP-uL81PjD{bP#z)+)jAE$4yHA!Or&I{I&fhm5y~phoESN(INxEa-PV) zj<*`Pc8cFLCu~EJ?*WviIhyG-~^$Q)qL5dch{{?#|%lR84`#mpX>8p?O!Ioo{)Ob=Hcrc)>NFM-9hkKJ@+hmhX2M(q0Zo zV^CzbgSHOaKly1X>GEIOleCY=#sIC~~;GQe8@gY3@8;bttU$P2lY=9!WLj_6}I*}H66D{0E zFMrSM<$VByK^gl(Bzm0i&elX0^TGF4^}a+*n`pJXF)J5pLKaZmh@-!U2=ji22K*(Az=Skj zLZN$U7R^<1J$_Yt6Qzhko`jSiNou}asJPaxhF@--!rmclg50UFLxd^8LukEtTt!Ft z1(y=#ieGTbC|yjHUns86DdrU^yJ(qk^?j#ePp&p%^{bNhDwE|D+GfiRT-{d`%Qe6F zo0EljRi31^u3~wIa(GSR*TocpgOA@R;&pi)b=yh9va!`@MBrC>vNNB@Po{_|GBY!c zYG1>8_hX8fD!JjhYWT&uR@i=u#Fvj`5_^b#XAz&{<1WdZ>!V{JqF;X@`)N>V2jK>N{OJILWrM8C ?3?G#=n4%?Q$j&xvB%tw5ei*>*6PEB& zmGDC*FxSwfg9{9|1WIsu?6OE$_Bi969idWd^2}u+Qc!N+h zUIp_!{PQyWT47S;1YS8KRb7hjLNv3<8gl<;h1d~S z?0B9i63n1amBAx34{yz!7b(Lbi@lZlQAnGrlPXu)I)t9?##s&Dr_&?L{LalDk14TX zJ9&at&4T<4E#L)n9{_O) zEj~a5@{wGei3;o?r#wN6Pf95)dB+|H(kNYTFD;;jbBTbcR(2MS13Dc&r zP}B{RehH{h)U_fy!cf@L57VYkLB0hRpgK1#&p%t5di0hVm|BUu^g7H{0>5+?#glNk z%HCtKm}74`s0^0~y?o?NdqE$#NB=?Hud9AFp(55%1Qif=Kesd~qs@v^pXAH^BUukU z6(L)Q5$1{_10&VEz|e!hO-_w_XDX63XrfAh%>rTByU%BN0b{Y-A}P3+tR9nRfwcG< z&t>teo6KdUODH#nks_RQL4#tAZU1{d{}g7FArHd~Jw0)nsXhCL2mKGa^<5p=9;8%8 z3^W5MDq4J%fDb%npVFari3wH<5+*Ws1(7oy`L>2cTcaD9&9HduMK;X#gphd_%r-`W z*0HDREpb`#9{HQCanvZ=r7XSja@Kc&;^Hz8D(|!rR=ixh$`ezx3U<}YNsFOshpab#-{$6O;NK<_+G2DPM-AsnQ%SU=^g#X3~K1+8UD{{ock=z z(`^sc%t6DH&Ub6G%-;G;Q@Z>qn&!l*Gx=5J(y8>|tQ2bJz@DnA1As2y#6MgS4;7;f z?x?$)4AQ`1n`=fH`KX#O&DEm}_2|218OWyiqY9>{wqu$^%_&pj>mV-0NpC9a|8m+P zhf&<(#_J9<1k~plOp?YF7c}gjH-LW#4O>HRVModF8*4r_17)NBs#}-SCq%-=o@=9g z@5%hDBhv4yfGD&s+$nQKxeE|q9yQ);`2!^VXW=B&d z8W7T>6GvvnR^?FB=@^A(!bx=ss8h4lGt7zal>Q{I{_@RvUC1u6j~om13yMXZvIe`f zO3x-!9mZAK|A~Bj7>9quhqd{mAHDFhKxpiNT6zbRY4!sl2nn3T>wqio?wt69cUE?QPP?S!kcC|geTJC@Mi*^L>d z4V=(xQ=7n{I3_c!FUqwB>7#%!=hGByO4`+A+k{Y$UDkqWHus;il`QMxu}Ss>r8ijk}J z_@8Nt%wjP~W@V~7+Gqq}fpULDhPoaA#K2(1J@_J?o<(aKBDvIpH3v1?!xe&y`qn$o zmZD7i+E!rYuhthXd~_b>RekGv=hU2xDs0x4oW&F%n@zMOjy_|&s^1cIP?-tCpbZIc zzu-Hj*bkXaoq);N(w6t&PpQw2fe>K}-_Xmy0kR4hUp66o)eBiNGVKPSPJu(0$Zp1Y z4C;J4O2wPNwv%a>pyW5+Dk|3gy&}rFHZ;og=+H9So80(qhu4O3isdR+9&F(=>eSfk znePQ6V7y9wmdZb+mhRPM&mY-o+Nhk))oW;o3wEg^tN{+BUFG_p_z`YKfvTV2W$)V0 z4DD9)mOpB&dw+fWvNZdep%wZlQlGIfi;vmMv3!3i$BxSX;Z{K9HK*8p1pO-w5m$jM z23pJa(?CdZIg+Zq-%S1_kwu9z7MRx9sB zI0bzyFq$Gf6b=%S%r>5tX1@dYZ>eKl)6ePwXb%ZyIIqDYApC3o2 zC5cH)t#!iR%7s23tF=4=@}Ws;3-Aa#lg6%!g}JEfv-Fxk(w)9hYPx8|x>PR{<^j;o zv$ny%FGi8l+woqTf+m&0Hj*iH=trgQW|rnei_|f5yt?S}gV|LnDTOJsj&^AOyNNUz z(y3-B4Ey8gaK2?*B$kYEdOG4GP?VOA*eZ9345P?F(n7xZ0o6NUM2Cj>@+Y$^gCw4M z?&9xPxQ^GBAI#i?HVZ~aB>~@4ctp&CTp6Fgzt0G+KKc}J?)u%S; z?@##F^KzPejsJoB-okg+Wa^juY0u1iSl|)0`FyK8EkJyHWhcQ;= zRau)@&5?aZpg#N+mB*P5rN@X*E7(^lgcRw8oFKVo=dwXyb3jjMg3#uJCq34cPMrPo z0lf--Qvx1^UvYsGLY|p{6+)iLf#;?V9If65P#vYz326GD;fom9c=i=)!kg0b?2YoV zL?7tQ3|(w0PpN-rY)d?=U|#K!MQbaKP8}{aq;U0MlHJF()!FCAwbS^JO{-7Ax(;Mn zq3+*ODva6{l3rz_c(dO0)l#(0t~3nc!gzX40A$y~#f)rj%iv?H1U%yuBV&^PKtffI zZ`3fgfSOutqrA{r|Ktwwofe*=hvt&eSa)s$Yo-_8JG`1z1nCil6`h>I6?Za54y2>t zXOQ%1*txYS{$o-k$wCh8grZ2$rWLZPebZkflHa8}R*p{a^CSG%hGnm-HzD#~i^OCk zT0kg$d`q?FFKB474HfZ^@;8Z{YqMjAsx2{afSNW)>_B>C8>!b^D}_O89`lqPx>@c= zHpNc8SWZ9?M`O>W-{_&|IMyesqxn#odfFT1Jldgtz&c4?i`+q9ShE#D3SCiNWZ%Hc zqNox2Jg@`R9o{hOlrf~IY7|^QMdx~8mstRzIMXI!h&|mTn_`W6P*ABxwzis${96gQ zf;FGo#LXgerFc9bi)4#>ZKs}@s^rTi<)h)as)<_hA^C9RM9OBDWRp0IGg!0*ps>#B}^M6GOZKp!;+Q26Uwqv5Sf;Y^5Dwc zZNVu_h<{6V3@avO%8iwD{M`|cb*Gy;73>xjJ48gZA9|?V2VFhm-0y!i@;buLvcLZB zgPQL`HNMH#>F?VxKw5bHpoOBG65?*cAiK%lt%lI~#O@OgL;kd=Zo@*jH?>I#FSe{< zxh_(j`#=@wSV%~8hO7C{5NoP-9{?n8&G$LNC<0i5L#FR?cd2&+AxLPsy7$N zA-#Egk7V+f?z*sKG^$i|Z`0vd!iu1#Ch^DfB+}~%zDz#~ z6@pRL-y7LM)R87))Dh&&fR{-XUYU}IbmkUcCzx4ph`Cn6Pm|JqAy6S3)*=`(fI&^6 zl=%8EsE`g>kqePW8lfE+p*n-2QXI?)Ys?=Srd zfrxC$MSc%zh!Ee0!WD$T1*Y{reLL-21c=XL)+&II4xl8CbFm5mix<`t)^?=~0f#kM zPJ%PVYGM{2|NgJ8Vqt=-blyMC|IeSe2{mMGz0wIz1qK;H);@8@SLGLjBbW~J7y|cm zL{Ym!t3U@i!xQ@LLZLv;UPE{U8X@NJAvQ&f5Vu@X!H-vv;R5eWvV9*YD8mt6*-V?$ ztw0MmF_pfneh<_!Ura$8yeRU5>*baq;NVU?c3a7Un2QUsDY-@tdW0hESBF4`m_th; zi`78L$qWHmu7WEZG@+V<)KVefP*=#pr*sct(|fPWQQ9SxQ+I~=`a_OiZUJ%@OmYCP zbx6QrjkFX20Ada+gtoi|Gsu~oK&d(m64Z=Fcr+>ZdwYtCjmtDbYDoQxA5n}5>%>KLCew;I^e9#p>JhQ{Vu+i$iMeVS@rwY z65ZWTtx$(H;RyF52m+rb_1!}tL620W`tskvgYQU$+Y$&t&UBS8ysRui&1{6}lXwU@ z^#~89BEMJfR?ea>K?`E;TC`KJh&;H-Eb_(A_Rod~5a7S3LFYgGzr9D!b&k0^3MX0^ zsqj38*G>qS4LoQ0pg~!yAwF*_LQ0mQNUzOEfKzsaXajTK6v1lf&$M=l0Ff*p~-)Za8Gto~` z&zwdrU(MQ#9m5(oyku-mBGx23wtNUSVyDMRj(XH+vFFN*R!O?wr+DVIj!4SV@(N32jfxrK>io^X$td$k zIViDk^PUSE;CveTi(CJjNI)^be}iWW}ZF%9U9679vN?v4(g!qkn3$=`Ol zGh!y;Y%>|%T3VYj8b#CvI#^g0?^NBk&R|^J&TT}!JvU==?uDv<+}-aOe}%G()Voce$qnjW(8z8%4Zm1e*(k9j{Wzf8r)z^dkQ+lI@XR}Z|ml8@zK!aHbOQr zWLg*D0)My2P8r3>rpdNk#K<ZT1pigrxGAlE+>6j*I zs*wnMOhI^fOd}bXr}7BjoENE!5AZgSi9hKQX{UCmnb{6t^Ko+gomnWj{%fP=u7)tEnWP!Fx0B>oVNO;a^ zm$Yddv(7V>vAJiEjO>|!tIE_nf#?ls&^NRZKYzu-s6jQ&K&-TvHp7HzFYTp+sC~4S z&g%BzO$VCYv{RikcVN_Jz$fFhoNp_E<7(Ro>LhUnstuoIBsK1k3NDngE3308t1544 zC6%zU>Wq>quaxRDr7G*4vZ}DGsw2KC>yXOohPbLMimK^H1=X~;>Ly1RFKn^0a!lc@ zMT1pcWhH2g2rXlI>k!J47HBye0@K!^#44Ov)eD1?>q25xahyu7P03{qu_`*dlB=rD zTMUfGuEoHVBe0q~PJ`E*2J<@lsMiw3OHGUsBx+CI@_j)%tX41cOfpS(IsEB-pBv7} zBF`-6_YfTv)AKxlFDC(TNK&Bez+A!D;0!AVa7Z-aq{A>c9T}xAIqY~jy4bkcU<1bx zXi*~8=7V7hwrR0WAgvN;@gjpvY+_>(1EA8_(4aLbkuLz#9h|~wOn9IpP>dULZ=rco z96_@45Qa(FA|+QJ>Lv%H>Uf(aSDlP}20EQ8 z1t0HG3zsqA6_(1HkZUJ{2QAQ`Zi-F}(Y6uJWqOBcn7VeBz@RlI>@KN;jDoF{BZf{~ z@jjF{9+!1#Wf=f&Ryg&3A$rILvSOigEEQP*UKX#-Cf5R?Q$LQ1LP`T)Ak-GV(o|{J>t+foV3}*0w9opTgm1IjmZD&c!Yu5tmRg4zF9bMQ`|sJyim) zThK*s{D{3z!6&|fdtv+r#E66NfxH}qD#ss-2a5Pv6ofJ>V??|`#lMiW2l*q8l)L5- zD~o^~bx;_JH1VQ4<4t_P&_fxgAzln2tKoz-fz(1+RT;SR5Y$@`O%lfaFZPG8#7w?e z{Lti6B{uq3UR&^_vX)I~^Rr2nKc|z&yiA5RPSUf8wKWfRwvn~5q-||!8(Wha6`94o zqP=i+3O5iZ{dTtH1WM)GbOEQ)l9xufxpfQGh%|-7n(R{1oLETR))H5RgpBJ#M)FXR z^GXsj9Y=&1K*9#}_#iJYi~9KZ-_NB#%6aqtm*J{SHQN5yIj{>7ObFeIYgCZg>=|3i z!VDO2rE<#*5fQ_*Et-XSJ2ZnRsqwlwihNnr=ZHIAP32<7BzQ+f3WTHwjV%&`1Zt@< z>NDJc#y29c&B-h?a%~LUqQf?c(9O!EqjJS4+`FY4m>EXqR`jN5p(~q6N@o-jxz&WO zd7&%s7)s~{RJss`E{GwEMi9l(gfVoA3|%Ng=S?y!j_Dmeno_uVCk}Gy?6Xk$h3!n8 z&dOo%hJL!C;;DFgu=(;{4zPLB=LfBQoyrAb3j-0h2Ar`fJnUzc^A5zBr#3NCqUDzRTiP@>g*_t-?85)!-gvUBo$2u*AL7 z6k=IJf{MYhM94V|bdYl~M!sLvy=U+}au9RrQicqbZX^o}qd z>x-Q(qVA{a!p7$$wDyX{)c(zh3O?&xQ(@;|gSB_6Ew;n_{Oe|MxO*TmzH_2hl^NG@ zw&DHS`GAX$uzUyVabhr_=VH^E&e6uD-xlno)AodFfY>+HO6C(AqgX+W=Tys!=SU-^ zM_zY=eM~1tbRZj-dZ3LX-PXRiI-I=6_;c1haP1RMZT{k`QBpAv{vwvL$v1L(CY}RP z5VH$AKCE<{1&z4AfJJcmTM(Uh!QAt30Z?; zQPqq#<@&< zQ=7u4PJbcRbOnek57xVPi5T`)l5V#mse~hrbOC{^DULJX3LDXpC1{EZu0FTU*}rR4 zY~_q3S)=U7;<8;?z$9jw6LNHgi>iKvd(meo@k1=WE#1HLyvZ6fCGxC8IB`L(sI%tV zO_CwD3=N5tKmv)IkmDZB-H9+|j zF4pA(a*Vnv`oT#c`?*3M#&_hJnFg7kZR;uRXDF3gMFD6QLI2(LNS*KUu_aM%AM-of zG*Rvk=hB6DQ`Hl2q7pwA_J_AhWNUBDBi{zR3m{=vC;e&tV8 zs$4Byxm2=pz2NWZI!2cD%;<=0Xc{(C&!DhfP9>wV0_$#ysbkeVGRY8nJy0Nv9l+sN za`x#veN$YsrCgBU$7+hSy2Rl8gQ8R-ZeLRobHuO|zb?TaNc1f-`H+k4HxAb z)yToQK`t7*(& zi{C1GyvV84YXVF=7sCIfk(%R^?Bi{6X& zHcEAQR1*evfPJD^Q-ab0&mDHMLahsrX&DSx#U|wV#=KAnDx}|0B6H-IfJziEoTM`b zRmGsLU}}kULtfc1=9#1dqV$H

                (WhpCJ6l%7UeuW0AX=JyIS*(cN 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%0Dg%D2qr((1!{B7jF@5=Z`w>#+$ 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

                yF^%Q%lvewRWaC;KO4GlBgK zzC9HpyNpryimkGqO(gG&11$CvkAI=mZ+H27G@5*k(Cok#fR$Zjw432qFuCw!MyD$y zhvJ33A-{)qTBMQ$Bb|`BTgEGlipfHdNRqIt+EG#7+7qBSaTn-BGgha#5{O+$%_A0odXY>)S#q zX1+h<;?PvrhOZxAC8K8{%=}@SyeMZfI%IKh|6Z&knL6cFW6dvCi0}sEXFNv4o z??IjolO)9&!%11d!l4cb=J24nd>F`zORi5zG z)T3Q^i6iNHsh+3eS&DU}jUxN^z*a~oroFg=?vkTQ&V?>TwUfa$U`b}oiONt)XhYfR zFpVLD2{I(vq3{fu&&yma*c=i!^hQ+g5#PxgfK>WjC~74De3+x+RWr4&7z)1SuZ zsHrQ&PAU%`n2Vl$1X~0DrV*CxhswT-FOdKDb-VkvrB8oI(s(JI0#yq=ZBSz^G3S+& zrDbPelRc7Y#weJHa)6i4m@~6T(N#qQ5YxXwhUV~zH5o&Q62PeoXXDvya(5em_k=3y zX)azr0A-SMZ#2Vb4;95?o#56o>^{h!a6TitD*WLByyDfv-6}6O3v`M0c~3*ZZBRRy+`f3(FSC%5Z-MU^lLn1@%Ax)Dt3Y*nJg!ViMchquk5c^_n*Vb?T0&fki#l~a~6RU z0cs%2z7<+F1f`IYB?Z59mx6v^=1eU40XG>0BUvRFUI)1REbIgI1nL)!{W{5*Wki{| zy1SXuvY={-z|g=-;YHFc3iHjLF3h}2rp@V5XAgJxW4d3me4$l`*Nh)Q7f}R+3uk+x zkeow0-@)Pl76e^zwyxwVD5nZ75Q-p#^1=m#^G@L4XqK({zJ>YmyZL8k5+>5QUyg$W zd`ULz6k`G*hgrNxQR9QU1!F6+Q zM1Dr_4IF&7CTq6Gdk`Rk?P*0&ILX_mqC@$$aJfU*>Kl`6xcM-vNR`v356gtTo%5%!<7J+5k3cQf>;)&3fTdYXP8V~ApoF5#f{_j8Vqf+fFt=# z3W5v#p9F)YppinMIs#@5Na3dFXDpsTSAu?mQxKEXG7lvc=R=pPDY!GRQlH{i#oEA) zg7N)5xLok5Mf$qWcichAg2Ei+_%bC0r06Dm&y(=|mk%Gt_rd;c zf}*|33J=~kUeH^SzX;EpMkLTQ$MOR7(EA<47=#at{bc%<`Mt`%f(Nt5t^cknFYyT! zC^+}4n8Kq=Z{|nUz@y z2__HREZ#7ihYtuRIU(t0=Z5)*TxbNY_wnZPiVPS(>bre}p!7aPC<~i^;gWNqyMh0o zf`MQP4B6Ub=}EkIt5rrzzTqD#ZD)?~Vv=PC6rMr|c_<;?2R;uD-Cw8S%{4vL?0zcL z3V(3s^x>=Vm)fzz$`L<8e3C6YFKGEl2$#uYEIgeEy)5pXfRmprUW4UM>^qrr4$i6a zd38FT-+#KD7w>=)xPW`^c-_>cTwvf)jhH8BRq z2_6MpHvUN47)+9G`Z81#RLsvsYacJr`%xENifKY}rg;&H=HM0u%m5QZE|TB4I+E(2 z>G4AStH%-kL3)-Jm_HJ^M)Oxt!L)O@gI3!{n@UG6T{9~rLIh3L$;zNNwOO7C_cGaP z#~v4eWVtYk_YYITT*p@r;H2U|KTJN4g-Vd`QI>Ui(-wlfdU!|OVh{p; zHwAwko&s?_3bMsb5ub;(29Fu8bX*M{z{_EmLUF3-&|c@FI1-8{i6}rBm4KHgKw_1o z8M^cYa7vpg797aWVR4t`ylDu8HKSAiYa=UvFA@23P^fBtelpQ+s<@RYJK+G&$?S=Ob*SvfGf5L1#+M<@__KDVs{^hhr z>@)pW6Q1ywH<+OWdltegh?r@#dgZE7h$1IHRGA! zOMp<;I%lwg@G<7P+axxVJ2e7sLp>&sH)uBWl!H`=CT;>qFdcZ*q=gWJ0ffVdfTGpm z7Xpq6G8AjBPv=RFjD^hpVsb_B|8dlK-A!c$w!j` zHnV2MT1z;p2rmt;1%Cm)T*@1uslnY)0wJ_Hy6)qt%}n#8`71I^hoMT>ADLRi_^WW4 zr9%hH`NUBO@rDXIbJ%hy5K*rMxY6^E;w7&nT)Dpjab#ANLJFynLH-^-&sYo!iV~3_ z^dc0M$1Mo=D$%2P#8f7JTHp-|wj@IziMosDOr@Ta>Ok7>Vq18ZUAXHgOm`yoK>ZLB zz(#KNI$q@k-o-uDZ^G+SqFs7ik@>^0t^8g^2%$k?xcsOPr)Y7=jxv2%mRn@n?!LxL z?vs_gee$t6AVtI=(s1|JJl4OJ9y5Ym*>eKiEQBOEkm<%9Q&sY@|14+9BIvRY>ApM5ID-u_z z3IYgNqIEgsG1_A8kKp0r9sp`4^kGoxFqfBo1hp0WTCt>0hkUvFwhcsPTDl7qe49Zt z(z2wKbbm=Gf#o5k2NuEN)uq&ji~SDlzzX|v>rbW2Q{5}?N2&n=OS3O?%3h2gD+@8c77z2&;l)yJL@O8-` zLmW?_6a;qI&IK1xbr^Q56?yCEI?WHsI)^tAsf)R4cu5_CbtcOOSLfQf&_ZTy>E9 zpq9l4@=WU3vKA(R%c+Dz_*Hg*rTYeci`1G|?@Q;oc=A}H3W$g?Z$iBeQ$*UQl%->9 zEVc(tuaUn{HE(?TM&j}J`w^95kfio8V zPM9qa@}b?v?8PD?Ba(3_4KL6Bg$GNXafvBu1`ga0d1(>;k|-0ztA;^5w<5f1b=}f( z4v07qT*wF^FM)7OYp7?B1yF@A8XfW{YyN^Bgq{-LkSwFj$_ijqP+Ecm(+2#Jll;FqzH1Om6=OuP3tyQ09}{2MhSdb9c%X!v<37nY$&ZF;xhx20~kbc}IMm76Mfq zgO`JNv3x?TVzEF=|HxeJ>JzHs!EF&?L;`10Jvz!di4f@!Gbf$IsK`H}O9j`V<3Jvp zl5RqHQA>j`%e90%*#SqE>M2s-Vh`|6s9yy|`oAiP0=6W40i{1np@u3_7ebb3@Htz5 znbc$90&^SjLDamw0(kN_S>OVZUFQ56lr!m$$y3O1W)eNcYb*WCZmoGf*m`@9d#kHd z6&cq=L_dK#Qe#X5(;W<%V1`5)9Qd-$;d}zXUx9vKq}{{bRJWYD~5!Q z!!}P38LlgJZ>$T$fBIRy1HB!gl1$O!-WQItP)H@?1;2uo`~LtlAZFzO000000001b znF9a-00001000000001ZoaDU+m{e5~Hrz0T5fdtliU}25vtU+4Q81_O>7D^(W`IRS zFo8o-fx(DbW?3WZprT^NHKDGG5fuaKB5qO)Yr=pzuYdPUy;b*C)w$g>y5D}!_w%^h z?>Y6>TXpJ$dppk6zoeS}&7sG#RAy#*O8rZd@oIYPkouzTP)%}pol<4X{=G>PY}DK# z#5uo+CU{4S<_FM3-$Z(BlS)rivTahCVv4R;T6--hYt!`jHa)gURRWH0kFF}fGwHEi z>dQ8jX6#lg2RMQp%Tf*V>(P(^SuOP``F+JwX~2FWb$LA+6~(25Ql%-WcFm>^?Km3X z1`=&{JsR7Eqd{uBaI`gvvW`Rp{GlC3n_G{@D&c5r8j6Y5gD6`{G{B`2ZC*VZAGQld z>tQG++O}kRfGI-(pAHLeYbZvz51FoKN)6!cVc|Z8VuS~f=|ZMd16~#u9$+X&xROkh zm{JQkEi7DVC`Ncp>6A$9;*_F++NOG&J%3j5LY!qQT$~bAxhx@>S;eOtl*l?NP6?{q zo{-F4#TPXwk=;_95>$CQA(@woZ(UGclY;^`|kYB&z(iI6A z4l$R0BLm7GBtyX1T|~%lL~-fy2^r3#d!-&J$W#IzMvu*RKWN=3M8J1rM6_0G!$ckQ z1r@X`HNL!2hwV^M+qB#SZX)Z@AnV{w4;IA4xIGtBmmJ?iCx{%x;>C$oYTE)UepXAuM)qv$msZ=ACQ^To5F%lGTBzIK+z9}rNo{;TOD{Q)q zJ3<)8XGm^iPfq4P>&a!qa#&>1?F!X*9h(+U+UAKV zKNignjinAyf8A~XjK6|7Jm8U^4~D2dDbyRnIF!`Qi3WA5^iD_lWmm_ zJTSn$xT_X$?+)0~^^+RW*r!8uv}he6f`Au_AmGJOK{RH>1i96b1p)ugUA2H82n+CM zVF7k2XBOZP?y3bGDy&f1I`fcnTM^uWyQ%@Xk>B7PQ?-tfy2!1AAQz-T6JenNF z{2q5zeQm~^1MJA7sRCS&yK;8S<{k}W?#M}HIyy@r!%N^WAs*&TZHA}z3Lyf{i4oEI zUWkAwLNgJq?|A%~?^H>eiF|!kR9wN@Wn;k|Lh#@Y!5xA-B)AiTd*ehi*QW6@=@R%_`t)R3*^wu9Whr413tx@VI{-w%CbP740fg z6-}XxdsU~(^Nz&88CVQJ!YQ)oMmJ_tpPXh`V)_l<@$^D@0sJ0^k6K!Cx4O$`}ofr47)Do(qIR5sW~o5y)K02vfsAY zNFrKfYP`HZt9cpIG&f4~BdP;z6>X<%Zs#oR>uXeKbkpSs+`h&U{=IEup(L1Uo4#l) z0ly(VCM!D_uV-|pTW($cILO_pj*K-`@Yop?7X``Be?X6n|96J>HMJ^Cs5?%9Z7R&C_DxG1{Oa8U-Iir2~+n&+_EQUb-ynVUXHw+ve@z* zMH6TopttZUZ$6^RS}DT%cVd(N02>9V&^@*JLv)v z-EskY4(!VgMlEEhiKTsbI~D3(bk!bI$BA(+vEWGA+F90Ux! zI?vee$r<;Bx4e8aRBiVXzWmg=$lB79(c??+V;+TCzG_p2UgeWo``5`|lFHBhZkMje z6}fCZU~HQ>43YT?N-+@cM#PBzDz$c&kAdD@W@ zIUP)Asl_0}?zHj|gildys%CdFGeaB{<#D%QYJ>VT7tumE_g9@H7viOuUUxe&os;5H z$NYb4&idp!9t?Pv`u43o^ZTQ`eY%(LQ+N2H4da7G&1#tSmHKm^l+sIkZ3XVSiNXBF zZ|qrcSIW6wLr;r1m_C16#Rr%dz< z=FEbiQcfqc)bo3>o}YW=F?wHxE(=gQ!UU3)#)q_?M=cI?Wl(2u+9L4mysoPT;Z|1* z)%W&|n8zGHMiD7Q^)jB!;92dDD!X9O#rX88ACwqo(z&gwjYLOJnN1Fh&%>X*^OGKp;S(pm_cRX<1a6P2BosCpulkkYTZ&}h4``Bwkq$C|?XE=-+GbfI-w z78!)RnTYU2NNZ1+^)dT*2y#UNPjIjKQ>Zk^aMVbzYpjU{xrzEC#cZuAD|VBhrv;p^ zs}2_ULA4O(`C6`vt*OiwohJKy+m#Mx1!~-^JgE5L7sB9V0)}1?LYBZfBYd&}F$^ZA z+YhlqOy;vz*Ac4L@Fky`@>^!e;j*AD2;Wb-M9t0|+QS z*d|(P6l;0ChqPA4@#KsQv}`d;90!;$n$*LosZBRT33kN;&dTe6d4eRzJq<_AHE{7W zxy-D_Z-g|7q9Kd-5G8zMH%h&1EISUGDdarN+Xt=qdf^!8VX4HivH4;m69Bf*+3Li) zw^^$(+!lkI@XM2nSl>=v#^J6bFDD{B2DiFEvgvm*@8)`N&!kRD@5fyWRts^*{y-KoAdoyvhp-@s`ZFonj3&>KK$a+KgMLVn|6o!C>=iNmTi(Jm85FqZ1 zNH%Pw6%^^$7vBiYmYux>9-D^GErR48@ro@Po`YoJJYLKzGaH0V{UOE)aTBakACRqTzzw6eQ*>`^i2b zd1@h0P?ghUh`40*GoF+0Y?~5gjnE)?33ysy^Lv}OiEw4~gU`uNwoOk9AL6e-9?F!T z0@H4+`(tcMKY&bjD)qbO%(w$*86*)Od7KY$>Luur&XDw8L6kzE(*rd9-fbKmr^4Rz zC3W8BpzOp8ak~qcm$$hazOJwxBoEx2NbHcXItHVDz5@^TlGw3x!kll7K5Ga-fTgWC#38>e* z-f$AsBM9$;u(vBq5i)ZGvGnPBm>GT=6&S={<&6INj6pM1qg;a6rrn3)rDXrZdWAu{ z>j6K4GorkXj-xA`4*M7iQH}_PzttH4ow=LBJ+pC^oY?UgH0lSD!-cx)yasQRd}OQd zL&H5Q;EfB^j=Qq<;Nj+pR8Cefh6q;;Y=Ca`xJj@oq(V>xz#|21IDeV2(h!!z$(D-f zxnwhnPM`9e<%7M#z8?fg%)c4|$vz(GWLKDkY5fN#^g7&k_T z)yp$t%xz+TgewR~Koymeh=#ru1)5(9P)eW$!H7EgEGf30Tn=;uT^n(5>wk1#Swd^sPaM_r}EkBfpLg1U6 ziAF)-A@&K3@kNO+h_Hu(qPu9VhgCn%`fH=Wl53i&Uy^VlDqJ8DjwCpJOrVFDeJ=d4rA*4_s3A7yybIuE*a6ed=nLZ%ZWEYe-! z;oOj%^g1&vZ~=iw0X|Q^L_ex?2LALY1Tzhej4p(H2XO>Ejw+b}Jck?nMlbY*T>xPU z=Js_Mw60D}vwm3fJ1_BIQ2LuuK9EU-;~;n&(#ON!rYWDL(OZ8a)*$JaD@?q@>325w2t z=TM8%=%;XsG~q{yOuItOh;yKtVUW}QFl&FHl}%DW$41=3|m95rtu-C}xbNmyIGE`=w1yNHZO#>h&3LJ@BcovCb) z+%+4tiUVETh$R&Zjt+?QV~BIl4NrG%8rvLN^gZ*WCb^?Wp(POQ*Z7y3{^HOeG2zMD zO;6Qc?s-`rE@SF{$LvK;)PV=iEtl&`{`>%6K?ihbxgT%Pd`JL$lO3Cgc$-&k>~;Zj zrl<-(1-gg_!h#4FWNbjvZ*)8M`~n81sERl}RHeAK2_DIZKl2uJ&Eogg^zzmOQvmD# zb^=DSQQnaY_lSWHR&O|qzTS6u$pu<=dHTckz6==UjnTO7<7=_*5m!OpSHRE$tk`3I zFhT|~dgv@G6}&Ma@Wv}};GC4ny1Z)nV4xg#DKBLreGZjWxuQ_>d5DR89K@tAPWn)e z3jR4kAni;1)g{){x?;jkA#dyVb>hMX-6*WK0>SnJXG@#<*}rgc}}F&A*b ze4d4HPAk;}75hgi=_dkyMI-nYTxgb3-Diqeg{$&HY_y%43WpyT)8hPW!A9(=^hV%+q=u zLsP&>W=@Pe{db!^tnpAxVB0+Ptxj8wgdP8>SmiH?g2<0*n~23N@lau5c*iBtiSy9i zQ1X4wQxq?BPc67rI@T`V{TfzYOJy38n+Y>l<@#spKuC07SnjrmS^qK{vwg=9x^40? zyZJFgR2uwL?%#PTUUseI#RA-8rKT?~8ZT_jU_IMHlcPPcL~F6i*`YOgYbK|fYi`F* z7vtwO^mj4kG_>!-xPqB>-H6oIfR1O`u<>vGO7$84xuEqSbS2j z=~0iYT`UeCMU2sV%{Q3wV!Ul zj<2YH*_J&=JC!a8*9NS80bjo4lKKIT zXN;)}#6|u(%HwS+mWup+SJDt-a@wYM_In16_75P>lUN?R7uwlYE;~r}H}01hRk)UMM*bsQV;b|t9J$}>cFoG*5+-0)7c&<*J3$wgXuRby-{+NXpz-8> zr;5KX3dKh|d;h;{d>Xeu1+K>)_^Ti}N!egX-!x4yrqIHzGD0Dm3O^6v1`uQhRoeOn z0=cf$<;0U?>xJ}n#Qt_A7q{9qVa^Ad0ihbJYF%#F-|7#b>`0sZD`(xqtm;|(%GrzR zSuU=2qN4J*Q$^{VNMO5@L3qbjJsyPmdz6nuRZu;{Ro_Ax*EW7ym|KN8>io?O85#Ix zO|DM*Fl8ha#Y@Cf3!Z&V#D;BN#09cK9n~yb@3D;{*oB*(Pk>KMiSH_F7bu_xo~*N5 zE=q=5jvnH16E9XKX4l}y5}L-MuG`veNs)4BAm%W5u%EIt*dVO?&14xenxAT|QF5m4 z9Ps?BfD5K%5feZ7mLpL@l{u(Q^N8q`J#!Eo@)_AI7I+t2%?*t5jb9#Eb`A|e?e@s& z_MLgtv%Ay7N|HHlo0^A3iM)9;iR3JBb5XcbE@j_n@-X6orLb@icC5pp0~;c(jTjV+itE$DshU}S<5Hcql$Yb|*o5;omg83F z(3a>VXmfMY-q;Il_M7WdEka_unYOQ#%&+Plr0pyO_u(weh{D+9^Be@iD@Gj4{zg5; zEIr3f9s$p_kYO$BNegF#ZRP~CK1(;0?MR|};fp2}9`vPv=VH%g=><)$TPk@K$k?QZOK&@a*K3hTT~C_PVS;n z_`{{gQHJL$nhHMVHS+fMJWSgvUwat%n=x$ryWS8#{k16Hms0suK`>1!Z#Zq&WN&)$7-gx3?Vy3@#Lcg4bNjmE=TUSjZbes?Tr1>Qp2(@s841_q zY(UIV5x&au*WAa55i(|b~Q&h|b&IFj&kU-_;y z&yk`(SB<4yF=G6Xob=>jE+oSU(Yb(JB#$kXIA@=MvZF4>frT*xNC-Ygf8xDt&1j7; zX@FJpj(KxRYAhCEy(2!Zd}Xx0T-m4oopN%zqj!=LSM^K#%K!n@fyYKq%%wA1ZVI8- z54{^Rja6hE*+;cO$j|=ZegVFW`P2!>VpY};tFw#RDyq3gS;oK2wY!2=rwHag)J&^1 z=6)hn=W_Zq1d4{2Z4s|hje+3y(tyF3Cydw9ZuO_#k1?ldyPy6Q|EZGy@qrN!tn6@B zfe2IPf}OK@GSfWDx!7J4ykt*f0CN!;zGd{+2Y*iLakiwoFTRDnC=laZHJ!cb z55*T|Ao=i+Dbcsz)^=p-C2JQf8JfE*7`oAIuAf41>dYmU8FRZ;fs000>AlLNS~M2| ze+w+sSu9Y~=hRIK)iKRCRy!uu`oj70cx0z@O2AN6xkQ_}`F%TcbLsK_l%6{n-s_1k z_O2tEBpMC-tdJ2KGnMIvfWa>9G5o)FP!yNT@?U z6KJ;~V)y&(Mtfkh{vFw;Z#!k&iXHwE0aNVO+UWS;c@JG9cOwX87;Unh^dYhHD?hQ# z$2JnF^@wrHH^g1tdYuPg&o^e{ZF(vE!c0~IJCRLUS`guz?|2i7Dq#@+&(ihR_|)sU zoYeYUiMv{-B?&7S6yLlfZ~VB7+Q_fnyD={H&+q;_oUS|Qg?wLVxcr$8L1$K~uC<~8 z9W+~NT(2KmZagbKqIFzUgpXQRQ~3NN9os(wpY`@3| zr<5(imqt2+7c>WPd}rMll&#+lR?DBD8%Tc36RoTygL1aLdW0m9*vbrd=qslocX-+! zgv(Dg^{Gg6MFQO6W>eKZkgy+#Ki2V33@kSsuS|)8bcU}$eCBEj7l2DznWW~hW^d%` z>w#!!_dwf!V!mQX2G_Vz$@>vl2=7Fs7i@!d~++U!ilm!3UW%8yxkO7P99|?*Ok}|kOM8%AYsZi#k;6}hxw$ahmm$3rBb31t$#i#)dd zyQ_G9d(9n}9O`JJx$`pEr~*6atcfPgMk}68Xq>g$NEc1FxLIG-dG~lD7TbISph`9)J$TKG>=|LO1j{X z+Mrt&v5YF#oma0a@<@ier%Va$XCa#J1o?k2xS^JTN}}uc_(XIsh(Dl}?+fPKc14^l`fR6#0by)IT-d0^t8&Ni@)1}|A;yI993Kl%TQuW2 zo(W=V>Z|1coIb|a^Nn+-B+hHEJl0cx&qml*X_Ln-Elom=n>mD`i%eHr3iAp6cXz2G zP>H}fUKO`*Ve;;H6V1brt5E4#RC7^YPI|5_>99+MQeTmw(fD*mbs zX3Qfc(h4*ZvzO77v{hKxU%!H%qtQC`VbGZF)Wbzg^Ohi{-Oq@L4*;TrGsphL$X9-6 zTYe?C0Bw$U9l4uVPj}M#mp(1NZIvC?fbpDL+oSt&Xk*6VB3JE~wR+R^9DK zm&g4Tk?EQVli^O4(md>DvTkUpfGpjVATKIMqOyvE03B3eYoMr$P)M@^&snU-xwACn z(iSyoF|G$Sb&h)W^C&DsF=u&*;L`US7Sh?r6B4xBZFT{}0|s6(8@xBAGf>SXP0=j| za|64^UOGZhd8do|Xw9FPqne*vJ97r1H&!Zsc(Dks4** z+3Q$j6B$P1&k$&t6>+XDi#hw9_Rnj28cn;9VNdTldJc>lu*G}cjT0lbdXrX7|9}Dx(^=r1}G>vaN9y8HDy4Mp`51%O$o0zl;a8{CSzke`?HnaXA<>PS`G zg@?*C<}V=1)Dv?>y7etQin9UTEbDeE=`IUjTCIs!BP;s?i)vIj zbl|If*M8FIivnO`vC|Osb{mRdR5cW*(Sv&ao=kcc&0`oI2Tme*GULfxD3u*WE?u?g56=PE|riqiHJ6kT$fJYLB#2m?Sw0BGV_Z+qOU8!nd>77=ug(Eb_vk7Ton0%ff0 z`pXu4)3)aN@fx)cE>Iv@yDr=nd~jh;eI|?Y5KcW&l)t|QevO+IVX$GXt^a_hJup)f z?pIj=b&dJ{L06c8v0XA-`*JpA_WroeNO^YVzJ_dF2ms-aW;sejX6ZN4o8oWbPw*~f z$~tf1vHm0{oF&uIJ+6)A$D`?|bf{>eI4N%2knU9NC@JL5Y}(Xjy=_KVrPqgiiL%Ls z?yV{#E_-KJ){4;9X##8(gznnCqOsbAfoe=v-xv!dygZ+Xbz!R{!&j z2j3OKyJ@h6!Pg%os_GZby;b$9O;T4!V5^b8>CKCU$UMfn(Xy6nGWRn^bf-9S#s29J z@vR@?2m+dZp+Z|@XSZ?@r`FuhBweJz?m^rE52O-R<8QPRp*$1p9LHC@-q1DSwgsO4 z)?ai}Ee}8jqIFUVXV`-MO8v{PY1w+?HMws(0As|EhjQxxyiYYeIjhEdvGb!g2`q*s z)+7al)e)oJs}5T(%)JDXj)$@7&#YDyJiSU2uMYnX8O!L64rThrm81nNbP8Dr@==XA z_qnGsm3b4RB$VmrsS6Hyr6z}{Kc%arUs-W<8NU3%lPuE@gOI16(KEGmT@LnF07$<` zic(iD9VecqDt;3XaGKW%tQ^_wtYtr~!`tM?)FFP;+ zOA)zrTdTzxVeEBHxac3``qtzC^k4ZvUrF%!cr>bcB@;!EL2@)=os|inYD)$tfXii! zXizBDvzSaiWriA+%zk|JCN;}K@iox+TuTo!TwWAPf0QPtO|kkY!Lf-uHt#KsOROL;ee1T0L^Frx1OUWS-eriz|)Mr2tj0z zhf3fn#*75J6vE}$>!Wbwx;B;*DNd{x;8bW1L*j_mEgmkLUwQRDkCR*uZ_CyP;Cyzz zBU{IQXk@MWv1g6`^seS)3A_AvsIOb;vs^%&f7SQ9RqeRV)0+sE*I94(4ci!07OUv; zt2uoE`iZpj*I<=ODO%7Y`dGDhr>1XWA$QB(;h_eHWvx`E^m7V1N7oo<66 z`R&E0z{#}DFC>5UTi-`~e8m1GrnK;!sI=u*KSnjeN1O4cGx}I##3xHv{3M;Hjj|#s z{(-udoha#Yz-Q!Qw^v8fZU=VnxD=+1y>B$$fLqaB=&83PTdx|oYGV;;Ept7;%vIN) z_B`&wIN^!^>avnVSlc45NyRl<&3)2D4^x$N=3h+`_5{7U#!W9a zqBw1Kl7U7uZwJv(ZSj8io88%JWA|SCwo$E}{L(CjQs*l9TevKE2(82#?+0(qFwY_Q zf6h8-qoQb^Lph8JxtPcpcF{xoL+_&s5=GzFB2xUKvID7!fM~MR*TVW}GUPDV z@sVY{tlJnx%snWrv@gdcg!C>0aPfpg@Q0qm*X>Uf5fqzPe^-ny>UBjnv0%3}7rq!~DFRfkN^|153D6Ns)*@QCu(%(;$JZr1IrqXUjtSag0&~C%= z`0gdKUR#aRMh}G@dU4H!Fhvaf#RPb%&O|1J$Nii?6q02JpXlLd!8%yg*Xuty^vlTc z42k%l%l!YSll%%qhyRc};sEdD0T?WINkl(tz}o5o&@>s1OGJMi_R}bjX+;Tz1y|l3f;aS$g(z8&$0(FH{?FEADMx@%HX?yGy3$E31h`$Z$;?`^S5Q ztQU2yVb6UZLE>MBt*^cPC673;vD6QS2L~2;0C;cmF)w{&en0k#Q&&(pijDzH8(^A|=91nmmU=5BpR9 z5gfDR^Q(K3z&Qn?^{dUFP=^0dtz&{bx*gmwo~Q9M){F_4)OE_54(l(qYL8D=aaZs__+dO~WVyi`vme*}`>-(=0DZ5@yhrb!&{MOpo8- zf?d`PLZA78pMVCaQADIgcYIMb4C2`nmWxtWZH9#tdr@YqP0C>()qTRcDlBYzTsjyF zO(U;^$Wc<1AAz~Z-Mzd5zXA2*kx1K99!D~7;UTN|s+>$qyD|>6h4u%LQ~V9{dtFAz z8a;cGj{aeaBEP|$Y8}nGFJT)zNJmo|I=(2@FI^EpV8f=G-_uU=b&9x&Ja>hielRgZ z>t1my(fjQZhRKKv(Ym@1Sw`tYj!Gy~$(84P`OUrX)lY-vBB_-_l}_bqg_S^&thpZ# zi9O7xtNA9+UqU)FR^8b&2EHcfk~8R{-{N@AfS#qkedW5|Hk~GuKZD!%$y~RZ)M5>i ztoh23=mh~(9}m;h(;K3s?j+NZn%@*+Lradr!ZDIjT~ifXSZCgOepmHn+;PS(7MM;l z|H(G+!2s{l=9&e6c5Ux(lg~lH?}st+w19%2Yd(kkm2%-nv8Xt13D^oH2+>__8jzfv zXH}csIW6y-5#>LiiWHyAr4xPDvsSUeo4Mrf0n4oP$jhQmc8m4mavYBa zw|_Wx*XXr!jWV;DYK(VV*>2{aFmJ8I)IvY^R`xLz>osGi8ZAB^zMD3bkIqbM8L~rv z3GLYX<80BeV|SaOXs^XLD>`LqDcG{4W$hZ!Kgue1Bhx{=qBFil^3io;i-&s%*ff|z zM``4U44VJK=fmpMu*WTjeLzI|T8QXA{8%BRZ$Ed~hay3crx_ieKcV{~U{Iyzg5^rg zsgPasa<^Rrb?HLaSh!U1vQD%~ro0r5Y}@^s!NGRm7MVVh4G7oCs-DrhTxE_@bLN`~ z6||IN-RsawMrCZ9HjpE;W!P@2PnYGpRcu9_+id&9f_v@2@|xCYmMJ7AQ%h0W18{qX#pY^ z2<1SvI9=1^`x6pLaEhDFaWTwJVcQ-uiH*7!avec?CZ+XGpJ|W|cJzL0pJoewIk|N> zg5n9r^XZe9_%%SASo7Ov)saTiP2Ga)In7CuWB#W6Z!1P@-U6V*Mz1dYKpx~|Mhn&| z6l56&EZGPdWD~UylR`j1)5@VkI&I(Xgrgg>q)^b(yKa5j5CqNhJWMTbI;r|_#Q8IX zb#H4=RMR6w<)@s%pQ+Sl%Fw3~JFB|GWAnMCfzbf+B1Idhg4QnwHRG?lW{8Vr`vydd zV^5p?9zmNAIo`oOEN-m!Au2Q$itH%Tp4)*(wn=d}ktwA~bagTc1MmL^zn+uzZLnvj zHimRY$Vy!=VX4AcBsy7$YLiQX8&6_;=z{*m8sb3U?WilS@o41#&cdLV5Zr;Y6=O*{ z3IDw=gDB%^24|>-cQV6o)nuWq_#<=UIjt6a0EZ50m&xa3{Q47NYA?aBk9XyX!fVpQ z%SFMDEW`0VJ|W~&u$&*<@5Uyv7^dDAX~JRcvAh1Nq@Sv$d8dKNGCVXs^IyoY@-gj? z;awH&R0g<7mdhwR!NY9GJtch2n!#LYQReA&4s0ObJkR)cjmg{5x}Z5 zi+U)k$ValYnI>lUjZQa~jl&@e{$0d(SKZB|-R8-1EhVp-WK~kJnF^B@$6J+SzM(f3 zcxcG*=T|LmNGJIaFY6`mkV%zFv>W?!$Tu^}=i;Di?Q~&lp3Cgz&~2>6N8`#Q6o)8V z`@yGRg2EO$Vt^!!O${iAO~Vn(AN=V}$*go$z^SYkFUM66=ZsHx_}64p{jhgLbu#IO#l^rhGGT6sf0 zrOVE(BJ+uT^YK~Qf-%cX^+D*%ka=5)x>K>@=s-yxR4r2FxFu^KsReq2(Yh^}FeFeT zbg3QHJwbra+-c}@75e-^NiKH@+ zU7mR?Hx9ckB@63i^d|RxTsAluS$GkRDmzcA@79~wcNTb#KOGs)%qdJMrW}I(JvnE* zOSzEc=}1`Xf_n_{zKiFleN81e_V7pham_^uOTY@471ovhP1+7J8)i!nuUZy`HzA}G z)_VzqbL{ojblTaD-4Z!@O}*X@fYlu6xZsEbAf5FW+&J)`dGlzM=>g!~hl1AEK2~pt zDf;py5sx&<>GGfmR>>>B21Yx)TJQ!OdT=M-?6a3!ywHo(v?>|*GFe_#*_hd(S$eKf zZD5uPs&eJnbHq0A58^|U^X;?#{C11`@Qz5dRO#9_IqhAmO1_8v$xH`frBfI$S4K-= zO17VWgfgXq4O}P5Z@Do4{!4DIfPr4+fy8z}90$@Ick{CPAsC%&pN2C*jym?S@yPa#Di?5Ur z9w46#{_!uhto9_)iCUg?En-D(ZL~$9vifi5dUTtUz}f5lZEm6?mu;8 z1Ulk$xyJan?iW8>uRUf^PETH4D0;Qq7jCBq^vX0hH>&eh966=T5^!bG;lq1zdZuFf zQ>3z!3?g^KyS~c+${U45e)?%#`qY5i+~*zHi7}UGOu}{h{}6mSFj)QAyCTr)AfOfX z4VBp=s)!He#s&AD0exoX1!vjAH*Pkd+nf#Fq$_;dPwGqnOOIPS#O;J##Ce2Rwt3KqUC)Ugx^JnZaw}tyq}^jq>Q4MwJS5~ z`zskcPkL>5tZ3W`A$(}z_Ds|v0etN(72Uqn zcdn$65-&B?WNcK5E}9_<<#%jG9x7HJ|L#l@qA^I$Xop#yTJ58u`j2>HBN;{xt?g$< zMV6&bhc1Rmt#QWlOurs$>#T~HqvEC0O4jeJIf8l7d+WR>Ak@r6zjtSwpj6yYsg!DA zX|{(=j6BUZlrn}akr@R_W>sB~uETgHTG1xc%lXepn-d{M zeP{J>jso;Pckk^k=GV_bcSAdDR$Xf~elw?JcNsKJRjSMnzn2CUM|>j|h}}_x7E&2K zU3YmYagO?oc_E~eX2sLy&+q5^rjv1n)^$V0oXbZC$ZlZ!tfM8@tcjLWRxL4quzx>D z?5y^nTdgJ4t$m#;S&_i}sX!xA&@dV^+v+g`25?~x zBy#ZhdW@nI*4WU+-TTSx`OqJ~WY!~!L!pVz67WyGkLhB}MVTvO(F_0AgYh^jD>47< z-b3~R7O#lA>@eGU(#L!1bwi)yuF(54<+JLJedyRwE^LsuZrcvVz%sl4LnLHbZD{%J zdzWF)f?YWm!5C+;f2P`1hDGW0Qc0XBy?e)B1u}BZGq}tJkAVI&P4J_@qm8)|r&<`Gzh!ym*#vx*BPmfcWPleW5@25c%94mD8F>{el*VVnm`W%A>Yy{pj9xoVm-iUpl-y zYC?fy74l?n zuhN{NoJ>J3#!Jr}MPtUaJD1N>XjE$Y&7X~U)?HRsZ|kSKOF2=6t9P0Ugj=?ORes~4 zWa~%OO~s51;MAbDpDEII{0@#exkMR4an?=bE`C|9sd|O~sNx#%*4rwaWkfQWAD7+> z!L*;0idI1J0uf^i(oeM#nu{pZG|vPviY&h9=Wg zz=<%$6cAW%OZ?TX- zWB8lYHz(Y9L%ehMO;IR%q zdoa>`74)JttnE5YR;{*bo#7%8!aooZ2664Dw>UGf9ichont)$Eqn(96a#q(wub7ZT z%zzmsLgLka|4tPt!i}6#MbpMeZRe=U133;F^QH@>?f^0wklIe=atU*trAd04H~hJ( z0CeoPlSEen^~P`EbThQ7yAQsF@-M-D;;(A*H}n02Hz{*pVLn@P!?8Sl?xf=6%aRs* z38t1DZ1vJBJgU-V)PFjBkNePA&DiU98FcK_Z?arQVjNVUw70%2pqpDy@$s3y3oUgi zf>H^O`9#aCefUpBGQZEUyXJYV{`Zd)>3t6YNxK4}7>qJwEqGY0)=(w+l1#-CDcjms zGEX|+7qGyG`(Pre>`mshO*+va`(&6gQU)oDx^sWV-k-<$bmw8OsB6M!*NY%0okh6w2ab^ zSuM%7!SGLen-ZTzM*&6LUh|OO^=GQo*E6O@3r>S<_RY$Fd|lG^hI@(3@0rMs4Y;0C zV*WM)ToYY|_bPl|39(2N6C@HKVcMt~G{=2(!yrV_(RdRr<|6oTr`b4kc~{A(8JO$L z_<)dlHXZgI!qF4v)7GyZh%dOu^X)vvjcUVAz_jj5GX4Y0bt!zgMb&{R{$}^EC$DJGC`($|>y zIW3!JdSOIrEQ{X{gly9vh`Yd{E$U2 zXh)EM4}=JuN^_AmkKAmRq2|p9>}hW{*tm+p-L>Frg!o#@pS7nkow1qg%Y#|cAwmw4 z;Dj7y^Y8xrWli6Un)E2i+5Zeo1lo2wn`h9{)pYs^03x(sYhu&Vd)Mo@X?<4o^oV|e zKhPQI3!bIz5&}zrobXi5YC?HvIhg^YdMJ@L^3YYLu4kvrp(O zO^rsun<2fx=*K|`n->%ApM?c8YW1K{l`!QC;{q25B8V)Z{!PwW($$FFz7xJhKI%aC ztccZ%ouXdp^78~!%r_YY-_&0T>*2~!*BacvDADWTFBg9AzwFyL?`{!#%a^=0YI+5@#1JRXd=??2#`W2kr(+w24sTdoMO0K305BL@pg3kFh@ zgpQ{GB}`Fexaz^__)oEcxGmI}}a*>GtA!eg+xvXXEV)nUmdih$sRGl||9 zpKeDf=agPJPZTxxlGtr^|A@v;_zz}upbSs)?u3k<(< zJtUp*;o6OwRd>d=Xe8Hg0Rr=~ma2H8s5)QWFl=G(?F^COx-w&Pp+F{^uF$43G)WHB zL%Mv2EH?_(B45E0rU(uClHJvqQ_Z=XLg_VDz32ow1g{JX(3!a@oG~M-v>{`82y=Mt zbb9fi41{Jhp*CzFEHs2eUP;k9*rsOvrR_(emL|Go?~8u?EwM-#+{ucHx;V0%k!EP!?Dw zIThpCY})=(HD8W1OS71XR@O*SNA-FY?JOCvZJkLAnRN3XfYfLDomh9*~o;tXFj#wT&pD_8Y8C&q*6 zMZyj;<0z4&KA(wu!Ip&Q{0qB-X=1*Ie5gf&K5Om;y$%Nx09;!fe!v+WWu1fCW!oOi zE`;Ow-1m`x-$@bgvdd6e; zLv6@zM3sxCuz96Pqd()Kt(6|8*QKDKU>@5ewLz;0!%yftQ}Adm1g-WM1%V#27U8L` z<1j^FC$kdzC{o6>Tkw7%zy!Tyv?1H{KwSs9pYW1Ky0Cy{ZHJ;q>dKqf&I+xD*#{$y zg!i9L$N$c?Pg-hq`_82_S~|$g9(VUH9Ox9nos#2C$;Z3L7*2trvsvZp+95Oec98>y zXYH$OZI*J!{+j>b5wzLL(Y$YSg(Ci#*K+eb0~5`Ebu6o%l!l&FFBat)A!m+0sCj`T zQo+bx_WwkPnn9O#nqe){?69;8jMM-DUhny|Jyv}cCZ$9t8+CXE*-QqlpA!k&{~gQ; zYFJU9W?#&caIQwdHnEo^8_R6H&!we#!N%{uO}{K~y*()1;Pk*`XprH_xjvNW8`+U3RflzZHdZtwrt|(=BKWRX%7!Kh3#~fTLcxdbGTpW;_UUoWbl`K5N zf|$;j(B(4RTlU#1$YeS$30OzFYChtVY6}QiO@iq_Ox}IIUU(5d1WiEiqx&dB`r{XmfO zn!2`GQoiJFdG|~k@P~l4)h}2|%OSnQ-F96?lN>3&AtGUITd7DG=)m*d%s|#Iop6pe1QtA?Nc)RuYa@}<`8PxCqao(T7xF@th ztC8!<`zb2PF`d?wEX*6%g)Emt4hAQN zOOtn1ivzb7g*%~7CH<{fCfvFrfCL{7I}-P5{hF#dNFXqEL}|bcQ==B*3i#gHD<7^E z9!%d-)3iIIr9*@N=2gT%Ud3fEQ#ik0|EUR>mUvztT<;4tWJqbC7qTfH&;(eh8o&jU zjip9YPKWgc_YjIjmhZ`fy7cfs)tn@t$c1pYPwi6hAods#B%02ajsB1{59zkq8ZLlb z<#nVJ9zubtQv-#c5Hbju&}a+Snh{$tqhUihs>xz`!ueh>oQW6zN3wU-2`U$xxuQ?* zIZ0`I%M{2%EGQIRAQPDFvDfo0Vm8DIG1LVmmFsApX=Zd9wVVfiXL4|2!JHfBmS2D+ zuy5b-88n+su0mdsy7vwjyebI9us3KQ_s-dojy;Noxy~M}F8nH7w7HjWSaab{d+%m3 za^4razUQ7gj`V6ksPV1Uc`Zp(poC5}L}B%c$s)nDvCc~?*Tc$r@>+J{2TR28D|sQB z;SVZa1b<@c0uz=P`|hUFDKFKkhhA1xcX7Ex|9MIraJvCst3k<~32o@CM%#Q_aa`IC z#zBdRAmj0i-K#5($rj0a5M@f#CGSgtqfp5(&}4OE;b)TfWpy3i#DBQ+>_tTXGsIN> z4KbYsgFkgww-*Kbmhb4is5Ooa?GcMZ<<6GBc#Gw{RGmG`dhCVP)f3dgidhu@AW_Oc zHNL`l+TWNMMkxkA{YBijgL#q1XRLi_D*EUBKLDvi5?*pkS$wIBAaRut1J%`#!GAJ` z%xNMZ?E+>_c(9LQewt~Px4X!Z<$0AIF*Vw1(l8Je>cp7qQ45UO|;?7gb%>pv1E@mBY233A4JR+Tm}Wz zdvCXixB&ESm%^T0xX^Fv&+V*s@Mo~gajnZ4Zy#k|DV6Kp2G7^tzgk(fxa-LBfqew! zt>}2a$qGZsF7&CPua00PX_N;B(aQ2gcS#D^Kbv);2Rhp)zpL1pp!2!gih3r$cNABv zRAI_8xcpNG5eC-800UxGEP~hY0W9TCT38Mm_&#t$lJ6P=V7B<$fb`81cMf5=uG~YL zBk6Z^11=e@ksMBWEW742_GIDZvKk@Pmmtr+3$6han;gKuUVfffea4&Y2vMV4njpGl z7NMGPT-`&2noND3j5<`KuCTTy-ltN_U=@~R!RP9CO z`yMYJeP3}Y6vvR?I55~+kD-Z5K(B0q+NK~fSs{fky9_o4vjQXrUe(i}y2cT_;EW~j zoMoY&HDnqroQqDt6t6b{^DIX?6#Xg_7WQ~pd z`WDk-^PWoRfsZI1I)h0fBb$x=GLx7NQ#)G9FM9doL9Pv61g61s#{C^X26L7Y!G zGvO7bC(uA%uZ~1%aDyrdx*XZaSlEhHppuTW&S7HH@QiSjsA5eFrCMS8lOg}_=gm*{ zA}l2KU;Wrw8XKqZnA{_q941IJ#1|w6(5g>h4r>LSB@^~e6QTa*|3WBqK;XJ5u;$z* zt#Wo2)Q=#t?v^a0I*NRY%?G9IT+KnCL|CY?RR zZY@05VE|(SWb;!`4WFlEkE@|$z|}Th8*4MNw{==-{CrzO)$*||CA*6;o_s>-1xNV_ zeI5u}=vh8TG!{;bcX+FnyOaz+>Jyd#?P9r8%D;M?F8vM+IUT#MM>q9fFcp!JalG{X z0S!lma%Y?WP?>QFCLa9?dg!PIx|V&4410obQ?FRH58Vk5&Q?)IN*` z|8DlNwEmCep<7?0Mi$gUnhUmnEh2}>Y`I@Wkv7HI)*Y|H> zoa{6^v(Z@Ew#~pwQkUVLJh}e{S=ErP^>lEc(&k~nrJ*lJJgaK6jwSiju*>y9W}&2Z zirw@>DkHrz+vOlO&BWo1NYuU(Zefvm+jiI!0AI;aWCx#iS;fHovmQAZwQvr-? zmei!``kTV}QNY*SX<86Ep`*Uh>!kE)RY6orFCpem;eS)4`hGe^C_+%_MtE_)A z1LbaKTq{rC!$arKjP#9EkS=10KcD&kt#0UL8l=`ZCv$bpOjXH$yC_!hOR12hF(x`*)|$ z32dT~h2#n*rJ3Q8Um`EzZC5i-J;yLFmf&d7op@Jn|86cx(^mIiv*BViU&$h8Cl?2_1Z zXFE~kc<=Pb1}&}?cF|O_X^0JPzr68EiJf#Rzv+(@m>A!Pl+NQV!1t2%Ew>hYgi)|1 zMSasmR3ohD$d|IA992Y-GJVq@oxgIe+=$|iC1`i&_4Quz@X$YVKF{M9&OzKEA@!9R zXg=sY%Mlm8gV9ZIqg^Cv7UIGV;D8^J#!dW4!JQeiSh}qip`29OG#N+`=bh{@uU-IO z<=ks*pq4n~3ENVW>O=-5ZBi0I{VPe{enZ?vvQhsR_T-TASaG8o)O{Fhw>A6UANU7R zr_RurmXtJdp$ubFsqhiY)c7{)Bd^j;gzke`S#mOP^0e z1WO_~Q6aAk@lw*`T|28)y#sJ@2Q6+CAOR@YKIOgG^%I>;0jMo}ZtvE@+CW#DdVlTC zRMcG|7xem!DUq%hJ$Srj5u?pdaE6rYMKula#yGvdkau;Z(qj>W4nV=8WHVFZVA~CH z$IB#kmhI|Yf{b!2#0%+CSTHXKt1m493fLmqEUs(`sQnXtd)AK+TSO*2Sv2!tjJ{s} zcLVSjqJ=`TB`^fo*z3cJ5q7Ok(&R4o($k;UAMI7IgbDs5f~BU!jFtQ!5llA)C^Wkg zLzXsa!YqPTvyqkDpV-#HNqE}Lfruc)Brw|Oft2gRM0;r*u{Ze5Kn9J7SFz=g~{jT5WwhO3S{41>}dXdhk$$c9~4X= zj^xWJBkAs9SF@9;aFFrOJBg$c=+nn{bWrD#(cg)mIJLRE8?r**!2t8f;DVxyTN$ex z3yJI|Nc`8fvM_UCnnc1AIo>AHKhByh<2!Nx1V!2Uq0s9HQK)vY-0=#D9VS4~e`L5; z3_`D6Lt(k}{)sfqj!jYzE$R+dNu1e~dNZKe%gw0i4d-h z+L<~YakAu;4=1qwlWLQ?{ZSSmYqDR&nuX|>C+1qX)oYHw4}E33E%qQb+&Ne<*~q~y zj2WMOcJgV#NLi6%_;^*A$>?D;b8NX84AT%*Nfvb{)6J{|$jYukc`vcl$uex+D&#Ax z9&A9ay8j%^mW5-8L%1ju0rm9$d>%6`@WZ^`>GO{xHnO;g%?6qu^q&F)iAhHafjf1T zlKx%Qx87a_bW=3|Usp+p9kjS&xJ4oQ7=>hjl!A!F#EePSp8J2d>h${D$U3fo742Vq zofa=i>g`xqbrqX{)q;|}w4!NxfQd)CGq50po+fQ4LaeM>9~sB>D3a-SH1Tu43gsTwPqu#{59Rh3rqe&VLX)qQw6o zb{l@%Ggag!52*h{+s**&;ha?1=K?eNm4~En;P>zd(_VZw7>iXCw>pj}-8N(jZ=zqi z`zx!TR)@m1)nxZ!E$isCW-{+A>u7@}1}phJjqk|P)B2pWbeG6+IPs)YC-IGEZIOEp z20=rGjFEF;+Ym$6&Nak(x1Ji9Q!rRaJ{7PH32X2b>nF4^=^2gW_aRz_qtv4sc&dTN zOpX{}j-j&^`A2=Mi2sp_$5Y4mM!cdiZM=o5u-De5_JbF*kbR?S2csh_Ef0(EOv=7h z-Ucd+LzvdD#+ObnM2jLXL)B{&KfqkGS8dr&jYBsP*_;w*#hU`C$!n|imxa|b`DD;) z&2_USf?qipgpbJe)6A~6I;KZ3j^$GmrTjX{NFKV3%BJ46GBIJ+)guSNrto@p9uWsBPY1#!Rx4E0dvwT_GB;T@o+hv4iLvDz?ZYnavB*3!;XEqWeWq-F zoTKh}3T#p0)d|H(dim+}v8Q!ft`DDITfN>UCYqW#^iB3fR5-{~mdh%4{p%#!N%xIe*Jcv+;qycp zqMalZ_HY14q{SQ(YAUHy=jdo|+GUAwy7*hnKU;=QBp2qje$uy!nf##xyau+i~>mmZ=f;<>zG|*3tKVFdMktsKKPUwL+jOIz(S}k4>ybJ-a4uL!S4|Oyr)* z40cd-zVNbn1IF#M3|rbE{RM@I2P@6y#_)r<^0BY&zp85|WnZm|W|u&OZ*ww?f;Zrc z!4Q%bU*d9dNbB*7wAAOV-Ikj8|b62C0P)<&|rXwJK2E5J$4ev z#x{CsQLEX}6nKDwr3Sfg)MGk1PvKK(?)HhD^E=gZQbtr==%A zgl|_{u~5mAU#C zwn`_T7w0yN3U?hrrGhxGNY)vn*z{>U-T1KJR{~G)O}>4B%#PMBmFB@_IsXa!k_R&5 zd19UZ{vP?6+J}nDYK`yni3U$|OLLVc?8hN<6&*ESs#VkE6?O4pDG1A04{0uR-RIw5 z;-8noK676mYnzg3>vVPZ$2{L$LlSI;96ZLsxFNglL0q6?ZzAV^>!u=8i#|0)cgNSvQ<>e+*tsP(I*oc^D0$>9iIyhoaY|k_6nL$QoPzf;4%F_>0 zcXbb8yVk`AYM^wdDL1uJ#0Qsz;KAT$$m!i{l$QlgcfKmO$57~J>SyIB#)PIteYKJA za`P9D52sBEnW{NQSW_hI%=080Z~199xm8t^$v{&+jGre72YWLPJX_&zAT_p>Z?R(S zz6d9T4P)&mmkE*tD)4BE?G-yQLvRrVK z3!U1q4Em!u4?@lp1~yIfoaK)wl==kdz6H8|2{&% z@;rF78*r+>D`^$}T2JR}W$QLf_+2Y08M|l`VUPQo4bKh%0KdIqd-g^wxB}1`tzE$S z<~zn8*?|Onxm+Uk5N{0kR*omrn)bNT{7F}?N~Cy%j0YdUk`pi1N>Gmso6|Txey_H) z$@}`5vajS2&wS$aMEQ(w1Ut5aO%v|>_7x}iMr-LQ!Dif?!TiOVzwCg_?KV5YOsdge z@%9I!%u07S>y5UNiibGsY?Cbt__Bp)QddCcZg4=q)qmCC8U01EB|_9-BvXBeHa)a8 zFAG9n7!1%5kV{kH1rQdjsv>|qHzj~W^`95D`*%68LY>l6LPmw4IU5QTk-U9WgRpiL z>s@{J3pI|r$(>^QTWn38A3DKiAXAv08VCD)gVih$A$7anj5Zz|fbc-=YN}sof;#NexINP&9^xcF!Gyf=T(DpuGtp|V6iWV77doodT6_<3wJY`=$fkw zAM5=W&Ci^>r=0DP0^O7C2uYP(EdCeT&KH2qYfGa6d;WzdWtZi75&^s*dd6%W3HL|A zN9(`EOE2jRzNAA#&3-#)(L>KInCKC2+x|AsMo%Z%GSWspt>p@EWAh@Rw2}N6@l_kuvElMHx$j9bPs78{U45K@VrGHi&zl{ox z^NX_m|Noze&3PR6TYv%hPKFW1dtWjs%AZlh%9M5?%!fj>Q5ITyM~IOu)+imoP5(Z7 zR_&h%-;1*my=U)+%j08cjELAl{%|XHVo3ri@Bwg* zH@^oNgrbF`k{uwE4fTDX0mxm8mjiCEs%#Tz>)e*ja(uSk+(bZ=rl?gRO9Hudj}LD> zE;)*F#KmOKD*3kKgKo5eo&2g07Y+5x`Sz&Mw8+hrMcT;C0z1T|ES>R|&+yS9UxoA$|Tv0RTRe`B*3r8Fxg%0J(ONNQ;(TAj?AYv5CLK+SlPu zgmB%zQolIGq#O#w1*+3*foHExOH?R$8gakbFWBC&6xES7We2gcKd=NgLjBW$YBgT< z4l-|RoF$WY9? z6lC;+CzDt)+{Ua0UO@+<7TuHZa%Hx;327JCl(Z6W`feJvM6}mn?g=A;omkn?2vsE{ zwii^ZL#clV>`BjwU%F`rx=f$B!;YdYWplV`a2jH(W%Z;{HEs2PBg z!%W`_&fpJD-izt2we}Tx?)CfY>9@4dFfZMj&#batAI{T?QoJ`v?Yv`Rcv+j<<5r*{ zb9vg`{;ssQH+J`6b@r1%fmgK9lN+AN1P- z1F2GRnZ6rAX4))d`ku;J&VSl;_TU<7`dRNK-z#)Qgezzi=eXMrECided7%@rDhl`R z$X;E^uwH3xmi8(y>>K8bkcFf;@T;wM8Voj}7YFagk|&PkfXb}Uzc~(}ep9K>m_58h ze}&4V8&6k>90gSfS2aMJu~Lsnthz(@TjA%uam-Cs_|5d|y|evm*E|7u(y>>gB+=)q zXv-@fmHcZREm^;aKg~Dfk4{@YodLK_+Z7pC+~4B_XM53KS1gbCu8n;L)yo1#EPm`$ zysMxnPh24TN_hSNUu2ltUZ)%-hmHiDFV&veOxjdwVjS*bs8y9Jyz1e6UCC0A~ z4cfDFc=#Rl>|&CP&X0(wDX-jSR|y^Ft#7o@;cJ(5DM$mAD~}j`Rc~kH8%A09!brIzOUYeyH~=gF zS-EM48Mz8miI;)-<~EZtSC9Dz;K_P%nv_;bo{}BCpiCP{_@(d&-u0Lmk1F8gQ~=D! zEn8~Td&Et$>vQk@rvkzHMtCTF z+!7%`ahn7ZloNpzJl|jyF``@9VURxUvcd7+WN~Z+``CDis2fevehS)#Zi)Bvl1O!h zaC_ss{wAK>?Kv7TM{ubS-7D!!NOp&E)2+D;^Q*bnf>L@QSEI*~%!C*N7>fqOp?5hJ zdwdLS29)ouuz3qXyw?_`>ZxUL7H^e^?rUVi;QLuJZzBBhp+JO(`UrTErrnr*mgR8S zm%qb|9E09$h~-h`$YsCV-%JpCg;*E?=~Fm2kHk)LUl)FnKsWV!_r5x-t@eGZm}V1N zy8&QQ?Aa}cr8~p!kEJT;+s@`a{UDaJjK?dc`Q%N{GlT~?hiP+Z9-oRdPT{)nC%dPxF`7WHgR zNjHg_#6vC4C`7w;BR=2_B4_BG!?MTf-5FV_(MTk%5P?H%m=PD_op2k9Co2HCkxpxKI4`R}iKRVAdqyz@}+<8-o zIXG3)GE=opv25=mQW()?2;FeAfSbtmHRZ`pC~AMRnG&TECAULV zwMRy?bz9kn2Z>nipUFZ$pWgv08;L6r_8lVxo>}JbXqUabapGZyUfn>J_gsPH2E;ufJ?9Mjsv?y>h(dwRX6%Dnx#Ub5%U1hiME%M@KG{}5d z;NGiCK6foqKUoc0tDa$sw0O=!N`Y<9Xe+H$V;^@t^5ZBuiraSwFG{#;(q+28Qv>S( z<*&`L)xTH1DkCAQE=a*%imXc`)5$aRFc%SKt~s+Io8bZ4Q=+p#^*0PQG`7VSG>IQJ zi7@bPOs=U#pqrmgsL3sc%OxbrNKS}d*B+&=1b}8h&?#PMx@GtFaW-A*>suaB8eR{W z*`7MuI&iB!H_J?H*=Z+Z2PpNfgI6^??%L_%9eHVzyV=5z^*kFOLDmcwLNrZFTO@n{$f!V&Y;=}lR=icO;oJ%X(5B9bm)>+MbN(+T+Q@w8}lZKZskVGF|1}cLWE?$g~ z_{tu?Oit1hn88I_@Qn}V>p?YxjoeBqaTkHcg!a-S-_hAu7B z?yI>Gm8`WNB&}32{<>DVe$h^{jEr6j2$F@5c%OXTfAr{;n~sWiDIP2 z3DT#B$`ED~Df*fZ)Ok%!tJOR$a^eiYG1=KAMNbq|QsKFRLPeV3rEJQ50&TxrExSa>6=)CB8v(5>>&uw-&`dz-NLmbKCXKGLE zSZ9a6V$1iDM(nhV!qofso)dYMLb6i1vScl?X5W%j7PV?gA$)nUM(5oZ7PEQaK7C!q z+2`bVTBK5*6(+w}5W&dQiC&(&r3ZXBa6enS(No`dsG8wd)!)_<4=EoZxenh^c~wY0 z#Zn!waIhq?*eVY4paVqdUqJ;W>(7-pN3%6ZiEv{RC zOwi!-+3_5vzRqLZd4>A81LU`t@7DlZ?b?;f#r^jHT!O);f%1-pIp@_mw@4s?>9gF| z6s~#Ix(0MT#G;h^_*@F_H;ZY!@3o#znB-h}jF|DoL#iFp&(Tm>s$Tj+M`#T2u61?0 zKJ$;~RGLfyntw{9W_yu+et8A^u)HUB!oK)WcZ{tBHg%wcXv`e!gS8e!K0;Jrn>yxZ zs1=Yp9{E%NdD#T8t@Nqeqvm6MAe!Lb;%s3y9j|vf!ASZ8vE17u1b9`Qc(ULH1B3AP zTC#()YpBa6-WnEylaEn}Aijf!k7x{1mRZiaGBuRfOs@;CJ*xHD+Xioy%okVMT%`X4Fh0e)ILP=ekQSQ6zu*}Q- zG;8NrA=Gn<+#VR6T6s?Tgo0TkMpmsh{JHh$EH0QgLL_# zvhU{C5fBK{rz%f}7houyl`>~a%IZlWHdndRV%>kYsnZLoOGnRZ<|x&ZvJtm~@u?YF zxgA=&?vJXKxuptU0}k+r3VRPIO^8?7mdJDH(;nX?l01YG^OGKGX@n5%evy_B+t-QP zsEp<<{8As)l`<>FnxT%xHE5Ksh!qb#eW+cVqb)IXQ9Q{HD$$TezTr_z$D?%lxf2d4 z9^r03RSc(TJm>FDWAiDy9s5$$-&JG_yr`3>L`s3aNdN8=DhYcq6XJ)4v?jIfXDzSs zya}y{cSXTwoo6TO5!g55#7HaCkHWVO*V;oTY{<=_a#Gzv1iZ*gesWTJhzE`4EwqNO zcgTv61)zH~m6pgg)aoKGNNMDeZ^&U`w7SktXlYd9nCn-S?iWuX1m)>aM6DkUQ7bmu zYDt9g^`#&2;khyh*s{t8wdxLkORhad8z-9kP@MD6YlS}bf4egF!^epv>e2fyPTTBj zN7Bqzj2Eec4U@98y)p2u^iEpNhZ@I2L}=x*B^>jcF=yi4_{GPwL+etIXp68q<)+;- zBbXBb$u9SA-;!J2&p;0lPDb|cGho-z+rGhbxFzjIq%Xe?WrEceHP<})>xp6K&*3yB zVEKL@_7Q29H~HHr&#KkIY)-K>GijF!wa{6ci;YxO2Ssz!jjccDzYZ~-Q0R77M1&E0 z#ka_5QmmT1rm`p`l_6}Zwxr3j^USK7D;qpz21YwIjaD3;74*wPO(gQlrZXZnYY}j! z*P49O3OlB!*V9YZLr$Sr*?<7n|T>B}!`{D_H4>_sAP{{njxPHFIAp*}YJN zA1`pT@|e6~66XGR z1TH9B7V?G#C_YwndAHunN_;Dz4D6%uJ#Zy@)RT!0Y$CcgW3x4K6u5t2VYAI7it@XI zvL-g*pnuCIqJ9`Hd1%Fo>T z;|)s|)_Fw$?%Y!Zw1+r?YgEZq7`htYrCC4rMHX@X7ExtYhp=VldU)CWoYYRlp`TUQ z)7Jd_v5~6h;9;4PPY{T6FsrN#c{F{uKVoIw*zA)1o!!U|AoZ`&B5yIT+-!w{QP6=_ ztlAR%Xx#i~Y7@do-^;WluEAoZu>s7`OEJ9?%lV|wl&tM|BG zqJ!|oB0aV{tUyn?dG+GH%@T{Y_w|-^%*4OCj*Gi1#VEu4nsy>7QY%AVa`R)&vE<%J z3h!|-81Sxn*hopiErhCtv5hXp;eWbJdXIz909Ky(6|Z0GoOXVkkI- zhrq)YXCYS2+|qSeXWdla+Z=3{J+uK3a8^#*bbmw zwk_#Jt?w&9b24c&JRs_Tnyvnh&DGX$5BTOuimQ8pBo`%k-9H=tRGJM1$QlWTbLY|I zJm!;ohM0`uMd(hbh8WcaxYEw7RfD+y^AKi0~|Uqkc-j%zo%vOq%J6lYFx4qdL~fqEr5pA;gx@)q@Lbl zm$Gj|uQ55mD{zV{ov#{9eXX7V_jWYWw5}-fV#ozaxB5d~?BSzrIAQFg#DCI2T=H zk>v>T{oaZ_u;-b|gEI&Z(0{(?23Td0JtH0Sm|?3xyxoycB5iJD_qQ;!`O=7-7&c-v znp%vT-vj+FL`3TalKBApGL9u>o&qFMtwG#vwUhweuAs@0`M6XT`K_{-THXvhXokMV zpQhbxuL|)Vbv9ox#d^Q5lr{94a_ES+(;A9>g%9@=(W?oUW+XH1&X`s#F8e?i8MKx5 z)n^RysYql8i#-!zN6IAkA>AQ|j4&VC3G`VcV+3EH4vj$tt zBed_nJPng7E({kh=)phSedaebj&I_ZRKLad;)`k5*Ac91>%q|Ae%(#)2*go zyUhI(f^=5w&Acg&%@xH$ZFi{|uzK`otKa>z!WmXCfAQ6Rl;^88j-H*I{RTCUj-In6 zDu(y+@Z_h>oF$b5>%MEsmNZQM{%tx4&gv4xOGif0EsyX8%0`q4gY@Y?Uh*L_6>^ST z7WOo_-OdhT1_uF?TwCJ>Z`ckQ!;Ucpq6gl=kCQ&nC=tGWpPk6rjHIr1uK(W$-J5Ns zQU{Pm0l_7@)-@Odl8kP089f0CwkVg+ftHp_#57PU?J7>4M~bc^KaujN0P`GnBBno$ zKj1(RVM$7zLw)sI`*vIzf(<&x<`3PIQu3Z2qnX@SQ6tJQ>TYvQp%un1HuZTMbQ}2W7c@9 z(w%;bs+nz>YR-q@xkA;CcLGacbFGC#tD6~wM_VI(4AYz@r&Y1u_TzpRYBIS&Ep36e z8zD*^P2H4EPc3Z0xa8u11s|N^bkEWjFh`$`6nBF({IO%a&25$R>1KgPbvK&aD%Wv1 zi%-yNvvp;f+teq*C59-KxJWNJY_2ji>Q2Q%^WgGw?Az9t2Aj--((DqoJw;dy(^FP4 znm*GO%aOW-FF!Jb!7}@Us=g(y5Uu%4jOAym9wf;~cE180W`0FGJLO#zC5$E~Ld;eT zao-iKe+ObnpWKQVjBl^}7VhyT8~sRi#gwtm6`LY*)-nQ^pIvtKWpzoL&X@RJd@IS{*oH$LFHuzi z_pypEy7L+dW;Zuq&U0v84Blt}+=EoiU%K~w?fY7k1B<(0ipa29D9r(LA!B9*Oj%wD zEcDkrt&Emxf>+`ayxJ^GhIeUix;SB4n4GBvhh5jKe*~3bO*&{iB6jiu*YIVFU(O3B zJlDIOdpgSxR zYRML1QZiLa$#_o6QZU8fE?b_JGo=t(SwkePtR5@NsX>Ldoyy4ZjUTGvnuq)PbbQBS zFS*M-K*yXJ>&7zS1MMGPxX6{8fo2DS4+Jgxiyt0QX)$KHIzLdgg`B zSWdRe>2xDifBU4P!@fjl_1o2YW}(!v_T%nEfy%Youh9s!OoqH23u%F<%*lA)pO`%@ za2G#%7^F8-?rn>dH%9qV5WDY}RbiSboka6)Gv9-{fO-9ASXmx&$>Zzl58HWD2#paK zlY%_PzT-v&`}DuBE@sZDnS{=FJQni>5E{cPntR1EHLYjDtLJ}TJGAsHZ6z|ju^(W# zZE}YO1Bvl32|m|R$~yeuM6DHUCtiIf~iB1JT1;KXGA7|UuhaF<`-&ppt<7UoSD# z_-^N86j(})0K-*BA6ukq?8o%;_)kTA)#9Mg9}!KX$I~`b234dM2fep=4^+0>n$!gr0>v6WmH3nac)vLJV5FL zjAWr7{=fPS)PH&YWO0FR&yxGvEy#p4C~P(UD;5V7APC&S5O3XurGi{rtOP!O5AvUI z$E9a+krYZB6fZ(uWJyH5S_4QnWD*)>k5r^Cqm3ZjQ;E{|k`J*$)g=g58-;A>m(36e z?NUVyt{N9i1mvOR46Y>q_!O9MNJm)2_)j5mt8O4A-r?!j{|PF8 zPS#iY9bq77^SGE{yt2%{YRxdCZo9J3YYhqg=ZlseZSm{@9GAC^@id>>yvaH~1U%NI1+Z(oZpdPi!rSed(>5qG3~UXB-A8ZGH#=5a24cEJ6#p~aZI>_{HQ zlHxi$RZD;;V#*j?s(2nA2=C(fd(}c}o$sBRAt_>%qbrQY)^R`l0YCR;R@^jSf$rM$ zq2n4ZGPUiZLGP~uNli4BilT(E5X-G=H;3QaQwh(*E4`iaQkh4GvkEHL_NQ0=p0T-{ z=5KFYetVgPYbW>wQECo2S{X*`>t_mjP!G~tdPyS2pPmXJBu22Dzef%9K$7!rDmih! z7OxgVad?F%!)|uk!dQXTfo4NQgrvE*l>px$;BUvNe(IiCEj!rv`jO~6lxbDsI$fBX z_}A?)msUO_?B}ns7S>qn>WMSHC9beF*wx191zdp=7T7(k{jcV~t+Xanx>I3BMj8BW zS(mrow4GdJXz)yf`9fdE-bk~fZpe9+v z>e*fL)AkZhokkou`2kPralExA)OaWS9aeaJ_UC3>j9Ct>={HeCqf9#9Q6Fg8_zWz^ zO2S_`DK*GpcJR1b*^>aRD*mrlC3+_#r+ST#wUBX# z|3G#k{48{8p7a}e&e<42<;0GxNWoD?^6W+K7yjHQnXLp;tM;FGRc0fecsbnbL!GA{ z^9j6I6vuhrc6@hDzdyK&NAIs&ASet5W(j51HK*LwePIQ(s^hvZX$RgRk*xv|qfKEv zf+1*~r2^kc1^Wx#)`ORhpN9YR^EPy}b^7->je#zP8|Aq-p`d^^gBPNVQSR9bF8ud2 zCy-vRvs`)$08DNr8cFl-lhgJBTj>Hl7O|O49l+?iMFD?h-J{ekC1@Y)7`R#~5o#jcAKO5?Xs_sJ_-u_9ThL z)2DdZ0=7|iMCGm@6Th^dnnQ_h^uahb{xnE#-01+P8whMk89Jjx{`jrQt7d_m3 z)?({Mm{#A1;Ye}43<6>24(edf*T9dzq^W{DB=>X_vyS4Pfe2{SB66^;SL#sxBw1%zcK_mn{2vrJ&=;}x!%YSjqgdA{Xn zFO)5)bQw*BbX!J5dBvB`DxyMHHA^S4xgDfesxYrA^`J=zf z{vjcYFYPp<)$=Uo17C@dJnw?G%w^{BACE34$#Qyr4#sDb*@un=6-VPGU3$m({=xB% z^xf>N;?-)2$L!t)>8xDg^9_La-^`q8SP_&KECRZQq9M5YJAxtRl|wl7q2pO@Hm1J;%oG6p}_S|&(` zSujE7NjwqlHC-!B%Ln!4=e*E!%QQMi`Y_{nqoh@ry4~l+aE`aXhQ`@6lubK}a<9Jq z57(jz{?vqxETw!NF-z@`-HyxL&x{0hl%cM{TF0?TviQ~;fchFkN3QTcA5iG;I@kWOR#4-3htK`R_5zxW7efyZ?ygU7XCsD%~ygY=#hHH5w3 z(Jv?(EJ#cp`!bGSBsHXaMQ1~S?aiIoI=ktYj z@QA#R@zi1{AEEm)4@!p0#1af(WZ;R&kaj*a#94KPyZl6uj;ITeZ@9{%=5KcJA91kA zV8jy8laoefqFs7CHD4E-jcY%tnZUZL*^afGxp94Pp-4-AE$Ppi&>udcR21Z&o#2$U z{!=e!E05zQhc$gi|0&nG@>%Y26z9Np#98?7#A8%mS!}a2WUowwF`+YFz-&*t(k@{f z{c%-UPScGgw2qh<*Ol|Vzi**5YCD&8Wl<|dMmCfu_2ryl!BvezyPU_kA5Y&3M+wuE z45@Bo)s8F8NO^B@q#~Ke3MP2-vAr;eDu^c-$E_>Q5%v8+k*DOL$U-WTqK{5)z>V>~ zgjHAyye_#9dPh0?z)Mu``rLBR4mpT7B>QFaX+3Gz>oU`(zjI4x4zU|UaI+8U64Rr+ z<3{MDAR0)mj+4UzXZv9O7At!hilv&vk=EW~16Atwu?L3vRjz;J()3CNuS>*a}l+0M{}|iAI#2$Qty*N?I#e&G5jB6-|xQTH2q5LKS#oqu9q{+MX9FUDm@Gu=Q}J> z-EnNrGPJ*JSVy}5xUV3@o z<|j9d=*W}msY#H!SP@&n&Sqq#hsJQ$${verqjYSQoIwQcdVgW(ou}z*;E${Y1iOs~ z(|&T($w6siJd~d&SY0YD&9vF4CL(z^W|TwLn9yU!s}tWOH@}@krEx?c+N+7rU*FF-prR6Yjki z$H6^@CT<_TxqtA6Kt)7DRrVhRfC}%tq2E5U19=G1KenFo~~2OdHiooH|2h%RK?5sbq8 zN>iAXmp8;L@aG6cePTOWsj;{0)T92@>O!HpQ>h##S4Krz25w!C$Qe)K!N{G>}d+I%p}N>}HRg^|BX-${HZIyY)(l;};JUC@fg~2F^G1QnF}r8kk#`R*{YK3K#Yh$V zC#mqwIw6`}`L`$=K_0&VU(bb6IA|!l#u)a}jiUfmM}nr6*po_*FL28$k*w#KS#nSA z!iRsvh&D?>o7A+=BY}F5--=?6>HH!z@{Wt4am=n=3V0)K1X?GY30&wC_F9s%#1Z={ zbwcPvblXWC1s44EUgI5CCs`|mhBSS*I=&z2lx33;_8-{vxl-@4{Cwsu)NtgDSdTiu z6(v{v!QzFO1d`*GuhR18C7sI{1m$vqJdYG>#&01KfkX0!KAuQTD2^}w&f}oyxG#CC z3(w9U?6kTu+#04JFtSGr{Yg0}K=^Q)Xwo~QP-@1UqOc>&+FzxS;%cZyOCb0tT~M}~ znRw0aoC(hO>T}mQelL+<%~wiTpJ#})5yJ85w7KL}&Wh51;ZV2sJ?{8S0Fp@F<&qTV zmgL??J^sG(jsA9x_7S3}f8T%SEbhW(X!?;CW{y{e1yX=G{ofUj0-wk@cxmK!o^bIH z&ljvS#GzGR;nc`PdE7q>FVOaoNjt126S6+>L`^73cIc6lZC=&jwkchF-G)zzaz0h) zfC6GscI7+N#~n%pprIii`P}sBNJ^+*-x^ZBsMv;oh+Z=4zT%jMNdbNo9W0u|E)n9G zkw0y@6TiUwOnU4sLjc0JiQwN3y^T7A)TOC`=t2zrY}NL@iB~Fbevqod^#OaX?LfRG znjZLt9D6e+2EINB z$-X(BP5YbIj7KoBOowY2*``&^0Cbou1Mqt|uK$&RN@5$llfypSaHH9vf_I(;OZKx=(cP%YdL`$m!MVfs{0Ca;Ophz8(m$} zblV=)7#itPT%x3Z!S8(tkn5!*>h!8(wSMy6S(x+uAj64oQY05^y3|o=dMK{9mZ}VL z`*!-fyM_w5WWEeF5O9G`KiG9c`ZDufm`#ga!I%e4&`hC~8ef%97%b^;*J-1`w*5)( zqnbh)yEFPBpCtf6Rl#3jQI)9irh1r5b`ViLI5{E6#B19s0i!hrMtfPdB;u!;4Qwz8 zh{VPKMl5Ikn2r*X=>PHb6;M%p@85!SN;ilgA=2GSBMlN#ONt26-AFe`ORRL4bazOt zC`hxEEM3b2ODymB{hj~InK{Gk+&eS(&b?25?(? zbe*XHC62Ep+(qhNwqkZbW^9yu_LKJM5SpfLRZAxxEI_;YUngp7bdv#7D5)+CAy;)Y z58(K34%!Bu4T5YR1$zqEh{^j;C)=Oc)LXZu4Ahj34oI5xJ$y;WX_FjWD_4!q$tk+m|#H~xuq_;N}zglu&^t{*G$8B5w)8;pDMpyx(8=tBA z-8r<#`lW|?!GkNui>>Y8kIF{X8@%G~C2d3h(zlOz5*c{twcZ1B{VBi-*|Dr_-9Ai_ zZ>qCbz;%pMg)kSiJ_gX9`a04L__&4`N(G3oi#v|zZ>cob87~^8hpZ~fiLMJi)`c|b zc2W>SZ*7zfor?~P_wVDXac5D@yS8qs7qdj1BFz$iUhLl(Wzes4E^lVg)6b88F*y)h zvV}iy`0BiccKoKkCTodAD!{~srsZEpJg=w{)qC*>Hbg|72&=c=q5r$fz)7V8MLgR} z!f>Yeorl4$j92)fhP^mx=H8;dY#4clM$8m^x;UY?&IC> zhQ(Sjb2gGm?eXjRRv$G^za6EdFKX*PJ(>dq5domXFBgCwBlnuj-4t882ZFvaa1`<| z`=n<@l6CPI`<4FdTvAVsRJ6y851&>-dRhJiHB_T!{Wn_a8Bepn&{r+;0|~SMc>wjP ze&~Y+<)#gLMP3|=O@4eL86aL=1YW*Lg=-HJi9fJ$rb&ONVt^?DX<9XJAKs~Z0Dt8e zsFYc3?mtyjYxtaDU9`dBQKFh{e8>qPJ5Vt1f%P0xpNNX99#K=F*uSv#6b??E%mG2w3XMTKgTWuVjBYZSMRI9e zAKsiw$KlkDP2Y^^-LB}>p5nh$jX&4$<42H9LI{zEdeW_(X25t)?bCE@Ny_!>akwG2__c>W<^a_P>oJ9nKNcOy!dKYMMs`X0AEiotwJ@ zo6hz9xHa@|E3)3`OKmnp^YMAwW%i!Jt9yC3eOK?S=VwJZRr%GYSNjqXz)Vl2!_abQ zV*J>r(3eCz#Beb7GeOX%L!3q+cSC17*?0EGdVt4lJTsceH;#1Q@-Kq^`7 zCRtrA`VyvPnPsVuZUCsQ?zAq>Erga*;(d+3ULZ)%%v;p6E40u7EM}$Q?8mX3LtT~q zl4QF*U9l_ER_()1TR&chC;4q%_GtZzR>m5q^86G@X1>iapMum%P@1f z|8UA-r~?H`B5)RD6%-Cknb8fRqJc%$&(@;>1SR0u_i+bG`7onv;sGwcP5^`gJWm5a z@^=B3?SNXP_Q_d4A3iin_jL*+B;YB-81c*(_97%5x_j|Oy3>K(0oY#yI~A}W;fZt) z;)$%Y?>1aQ4ASIQ*RDrvbtZjNixAI(l&cE;#<}qXG zzM0N9^ea3)Kx5Djg%Il@rh#KrM1`L-d3j$jjvnF|ICm!0L!f};3BDeJh*LY%F0#Te z3AoN1S%HfXSj(;l$V#kY{?i&f@@83AIDYUZl4+uOHY4oO*oCzC!(X_ROV55PZ+ZFX~M7& zuY_Bb($a)V%N1`4hK$kbrq7os9Vo+>08YibV%6e&vN>s;4Q2j@!BQa-I=LF+1&`|2 zn$@~@hc(6qYAyzI8f-Z=KdkmmScKmd9UsxM-n=qlS@Txy6A;OUsx@CF*gK}G&Ilq~ z-ki)?JK)k^cv?^E1pF3ww)3=Jw88#pr~J6^yZG`JDbjQnn6QBhJpcI=9`xg9D< z>tnBkQRdrR+`oIa6;x*8v3-z`nc@f@NF%+5?7vH7ZzpL#AqjLExR+Ku&nQ-qReJ3<;)B>_X{{hNqjnH(YdWoJcD=+udhdALnQv}V#gJiq?!(U!b7j0 z_W6hg{hp$`3`e;s9jk7BQDDI@i46b5%k*s3A&FLTdVfMkMlX*bnd_jf^cM5?o_z)VIc z71b^magO<#PnI(l_e2yDlQ7vca?+4wx@~KUr%~Y-Sah1zV4Qq$O9DWPvVq6jhS?eG zFT2V#L}2HdWsqY@H#7j1RY7ckoYQ6NJ6N#Er`QeSm;EHh>!Khg*j@w-m#t`0v0b`> z+#)wI<3xKNkt1)evy(OcuSHr{cYGcn>}=-VqzKxo+?YQVC;B08t#H7lwxOxoF8(>A z!ZGowX`Zp@7Dt;+7pZiVtbJ+sWXrG2?qBFEPivFbz9>OUNP%}%R%WyShE1Rj4>uqB z+7lL{}@fVrIA!*i@L4-f_vNJdr`Pz&wfNfw zdW3yAs61AJ!D~Ov)~Dn620f7?LsK-pgVF8{=6cxeoQzU{c)F2uy)~9g$q@PqJ76P` zuUZWPGDGnx2&qKm)O%JNTXi>p%b&ODTA>~PmMG3JJ~ED5`Xf?Nl;H;g!VpK? zj#dJB8~a)TMlEIk04Pn<3*eX#{Hr9r&hPW8dWC(lD4CE4lW@$-`E&1&abaXXt88%g|;`PdgBYZ>fYs84hxZxbE;i`{QlV#&OD zM&#jYhed=z2d)VzKakArI@y_i??;(3>iWrtAC1S6%vAjYH;~Nk79ikYJQ6yI)w3gcAL)JFAXzDXP7?R3+^&3+Hm1+zp<73@zeZG4gw9S`>1UTpa>w z6)Gm@yOG*_|5&;5gWS(~3@KP;SzSbxcS)ZF?tP0nULZlQ*0-S%RE zga3QzqGEpKNU;xlHbI~Kf{iA>kEhh5y>Tps$YW|f@+sHpl3oSKX?KHQ^<(ZrdbPjR zkGc-}78*Yr9oVFzIi(qeU}OH1v+plnv7xU4sNQ1mAI?2P?6j;4y9U)(-7K>Oe%vS? zt6%1+H0` z;KM5OkYsLgOS$x$H?(9Z=cCO5yNWA0FLiTy7xm6D(w3(`xQRDCLU{kFyRx=GP4*Z} zBgRSsV|}@5w=YZljK;dZvQB}pt00B$1Y$r>%g4r!3pD^Tvw|4u4TW==v#nqOXtF(6>!YbW>Iqw`jgL zkd!zy@%-74H?REMg3rDrwds3iYJZUU!Ne{>!kej|ydsYWhUUM6xl@QRyeyuFFl1RA zVYW1WFp2o{%nF0DCNcekR+*juntF&dam=#1%i$0(?#ZS9m^%L4RZNPg13iM$uom*a zL)SETvr?5w@df=(Jm*(P?-y6pn~L&PQ3EBsQyE-rG5LWhm+_r|sfBWG?A$R5+7U7B zf(p%uanA_69vx0%o7VBi39+%7n!+#gKEB;eLs5!@jfxid#Z%Ygto&luY5DhF)f^P} zs8#HrI53r=Howd|)UoOpZ$8n)zRr=~x+JBK0yI7s1(&@dR|d%ClaU7;(itB`^q#`B zHh)|>p7*`8!%8N@eCgl4N|tjeB+7c9qvWci7Wmtf*G;U9Rb3{SQxLu1H20M=DuXtd zUH6^2Rl6_uwJ6%t7;{)f%)2`(-oML-H-FQa^^DVgWY@q+cS4!4Jw zjo}0F{*p2}T2Fszh(0!CMu|jPTox~JLVVuWt8w93b z!e5YS8cDpgQjPx-z*?I0*2?GLkgVc?*>x`B(wyLHQ_ZC-t~6zk(Pso0ZvP}{$oF^_F{V`Y!m@#nX7>JUXt zf6Qa|4@}(*mm9*D`7d0Hh7zI6pisTna9_`^yNX6 zq?mRT77V0fOMSdkBz2&#KQ5AQiH~NLEc9|(aa^wY?0=-m1AOy^8N+1nVpVN8*=7m= zue}+^`%($cH^1+Yi^WUXSVMU9{s@`2Csle)7reXLJ=-ol7LSAO^s;WygD!us3)9ye zBw9RMrxwwFlqmV--LRs~Ba-?{q2>)iiGZOK;%oxWK4GcJO5tffy=lIx>O}JO!^BDS zyYJR~^u`sMfD~P)2hd4YAaDiav%+Q|zC#R4m_n20c11ZlJrx@zH%NT_BM-={S+B>f zEa06X9a_Q8f@za0*@sMrWY9hzm0~#a5mN`MXbENzWh=B#aU>Us7Ic|-U-zKs2r093W7 z;E_K*<`Xo0utYDOn(aIbi+rF;K}$4S-!#2+!Z1>RcbawmnMg^BlbvSf+9C&^)+=n? zj)KBRIXeTIDILmBZVk@R15z~hq&fR~NO9`*UbWstarYYGJ-TMh^mb`p6rCt{Z=dX+ zttwRUjGb+IQlYwxr5K|bc&oF=D<;6U@o1mk$0q&)4G}}mX-3AdXZI7UW>Y#xDw(Y{ z6-dnE_Z0wC;hzo>g|0S4d~At&N%X2ZXUVJ>rSYs^Pf=|BuCLuVMgBm889j*UnUbx~ z7Y0Es2|&fOEO>%u2sn;DJ=w%kj)havC8UwBOD*oe={-3Ou4=D)4*p>TYvficXT_I2 zL_DVwWL8O)=e&;G$RUr`RRQh&Quc)y=LbR{jK&E7%*&T}q5Hz4$>t4KJ#o(WKzat6 zKm2c_ZwMy|HUJj9p?9BDX)LKDgT!$2C{^J?N~AWJ=p^-b-F8Dlq(?MnG; z$zla>4&GjcKm32im(X6%o`!^WUo=T-8F7%R7Vo8hpg{*nsm2*8e=M>Jk)4O#o_1RfO zNzZ!rVswBslsR-l|6Bh2gl64r8cSHJludwjoN`F$=@}IUX%) zVf&LVp@-SIX^qmkPb+NgLjbc>-_&dKSr@I%jrWg4vBSlJ75|8pKH{~|1NBWrc(#+R zF=~heh+7CUTJ^ry9G+<3{KqY0O{RxeUk+_byy(7J5M8XXc81KL_W5U9Pht~%JczDc zC_k<}K|1g6Pm}w1`Z|7^?-@P+1uP&3%$)_JR*M9xJ3pzt99>)sJv)6KYvTD8xq6S$ z)r=0C;LF5y+{9S*g*pnfrT{+aP#?6O7wwNgRFvy<%y|-b506uU6z^z{{`dFo`~Qyr zckYvWwCbNW{daBj%u;B?HOVo>waq?vI8QJ_M@fYy+%>v_v+SqXC%4>O)p#658eNSq zY=y34@z!$jugm%D--_6i(h%e~Um|+)5i9fVfv~I2(KU$QpQYOySo5E&D`ZgJ!Br=* z74hw9UPy3tbV$GhA71a^%a{3D_O*i-nIbn-)~|Y2ZaqQaGj_*JPcQ1W{YcriL{<`^ z7z?*~Ha?74hy^zHuS!^ zu_Cx6yHqR5r?7!4Lk&Tey&UFcR4z}6hIOd(!3Sb5dpmu>>sTv$ur484`21LuOZQ6y z*D-7wZ6`UtI^S z6*5fs7FUl4Ml)@U+D1SgyC-gW`%u(veX{KRFfCjt1=SKG+;YV&6`zze)A>8Sq2<$A zcz-u69gwscXf$dK$!srp8AZ`>PI&7(P|+J&sR=gL^b-u`PaG>ZJxe zqpwd~UHUS;w?n_p)&=-yN$?o381&8KPOBG@MnGqAk+uNGYh8|2p=IKKaK`B zwhi!*db5yC;mLkUqgG1TNPqLn)bIPyZMF44x!(5PS=gmi!K}1WPj>Qr`&Xq}uFD}A zx!&wJS21ul)A~g~1$fvYE6lq-=o5g2t2uJYKPF}cp`Vc5Ox>5rw8C&pj``2I!@H*E zhB`)qI_j`5`(fd}?`wMpeW&g$%3vDzFU<$(yNXV>Ua!@O?Z5Vhdjvm4lKOyuIv?{Q z+NHHPJd;wK*|t4vOH=$c#}530=?`5P1!X6hWyh-a>#U?|&zIooOq=%+s#!P5(qQ4N zc?M^ze&)-&TEEKtP+99&kNww7Kyx`;l{XJR9w5z`H)!gE)^b6g;h^xI(BhdYq zFM5T4{nB7NtUIav<|%#HZ>9zqM8puGen-)mvkdPDqC2s0!S_e;c{;28#gkgl6_Z7L zp#ON0UDXXn%9dkCaN%3qS0@tk(VIjq!^9CeRmEWB;;d|+O`dZ}{IH?P;_dGrR9k+z z@+biW{e@Je=|g!ia!$@1&Ys$F~WPr0{HQzf@b z_<=icfy|2=1G01M@VhA-e{(+uvNKlmCztN~qK1X8&|Ci11(?>$z5^o#AL+cEY_8Qd z-fl>ZNY8B=)xR?H+*>jiD}2=vQxW&MH&f52j-ppjX)^CWB?P$(i@IsTr`)@u_3kH$ zsm?u@Dm$p?*89E29ak32+X;zVS|JWf!D@#gf&5sYfrhs1z?O|^sbf&moglR`kNKGQ zsi17i3SPXE^NGpJi`yK?HxvshHhBMzY`k{iah!KOq!WCwkrj%zjqfqm4Tav}oa6JO z8REH53Qz5NkBcV0MNlrF`715K?PpI8iV22KHQQkj5jMBM)YL51|_O)bIC9z5P-3U?kye@Mx70YwQ)KOjMW)dE($ZF{;cB zyp?EAKaSC>v3seCw&lObfx<)h-BiwP{YGh871Fn0B+ZKZOjT???1m0OdUt2=FPq|Wx{jP;=%kC}6b zM!b8r8g%rdY0`4k5*&=vPQVQAckhlAJxe_8O$tZoBK8-^S^O5^&EYF9FIRI;O4cq> zd9z^ONC->fKuH^o)|OzP8#ptP{gih=%H22r$Gw#1ZL8o--Z^uizBK)^wI681mk!B8 zgdF>z4-P|vyui00iw_dHLecmhUQxGOWhqrnL)Rc69wp)kvGzQo3uWr0o?9!uX<>cJ7Ibw zBeJC_MehJ9!)brX3?6pp9z#64rec23mCYwk9IX%|rrJ=>iZ^lbmfb*1Z{-Tyi&OQ) z|K{uI4eW(tm*0GPDV2OXs(oSM=_v72hPTfBeS!BAFm?dOGQsx~Di<}KCvg@O)uEnF zi_2u!;^TpnT7xWEp)fvt=Y4orIl<7AE-GmwnriA(2>L@)vMylO| z5l9l7b}$H*0A|-HL}8Y0%BcUVEo((-KJq9i=oyZDJ*!_mtzQFfq%~dq&@pwwJs+jA z1-<5ok0}tekcVxD%dV^i>qGwDSW|Ot zJL4g#!tZWUy0nzex*kgJ=nWGMf~1##*jW!$*M#{)_zQVR>4v0w@b3WWlW`UQwG|NT zW72n+r*s|6Kg-lEV3?VSd7I27Pd?Z#3jS5Cx7K;x%`}2(-Bl_A5q>}A+ws7%622S` z&$?9$bb>Ud9{4BRy|WC?QxkQgh(KD-I#}fO{te1c5dGnux z@Q^VhzC_}=FyZ~UGj3DPZIdK@gx3OQ=LTF1Efc`ET>3)d^$;)@p~O+uHr!UL7so@S zTdPy^@Y3}FQ=#cK=X~Y;i34PYn{@x!3B`1gd(|0P)IB11c|gjHcsrnf%U!lEn|CLf zID72&ksiN;)v+(H$WXh}?bfw|pHfsvi-2#EWc1oJb1Yq~v!(2w&bDcT!BU#>4f04Q8pW@->?qbf~wZua+ zVxX*tF0k)?$DNH-lu2U%D6`P_P&9MejL!|35cme?7Mas)(RJd%^LDK4RN`<{=uXKe z@E5Gy@6=)Zg%}xVP}Ce=_kbI9_d~qLw=Oy90xmT(i@ouLo^3m7QXjD)_87J<1q^;4 z`rhI1@D<=IQLf_!1lM*$rIKbd=iz}v2v(M0C9$OGPb1|2zS8FbREIga+T;Y#bd*d~ zfGjHa1BT}Cs24J`ZcCsS=V9LtHLdB5RG7RF3?8!$5)9h03u>RZL%TPH>|KLKK^ zge)M!1ZLpgW^sl4(Nu?|hj*np#3os^{d{;1sTm0P`*;EWcHKQIG{M|ZWYm>9DxGTK zO0o*XzT;zlm1kFbpfqhCB!$GhrmW54-OhHW6y*O{aIW9g{&UTFhgf2J5UPzp?V1&< z51*Wd4qu|YaH{iul}r(OW%&*yr0gs5wn?_l5Iqy8(sw#xc4h=?|Fvhc3jx&ehdqp^dVvNkkteBTqv$~DquOZLOanUjTEF81;p z^Ox}2^HlwD=Y~`NOH||qVszw!Y3N$N2R>N>PqLs3KnD+SiZRS@DXk!CJCT0ocJU)r z;X!aIU646MH2OwO>7feHDa=P=Mo=BjH9zYhjhK22)1o=^!oxnnDs_#&Z~qD)9kP-F zo=^^yUgHprWV&>m1_{6pe24kSrR92k87p|}U{!M6r8CesV+W>>S?rEQ<#w6m1JO0T z#GoM*l`qIMIRfaF{si9mZ@V4GH=Y715`#1NVrs2+bzMNN(4zT{k zr;+Xpkl9{saLv!)HQR^xQMdf_Y&%Yad0c?U$K3ucwqsiWY30zh+}7D6LE&JcEOXw>Lw zZra1Ex!$3|m~rEn%K!lc?-@ou#W{94(*TPcRIvawuNG8(7(Xb}1XHUvK#Vs0RUS`d zT7=(^bw^vfP)-ldRox#jCB?aB|CBXffE=b?dIPc^l~fdi&m&@MwtT95!_g%DZpq6L z>cc2&7y6MvNAMLI!ja(J1kAcd8uZmqkzml+2z&61-;ryws$OYMc@vLdM`~li032L% zB0hzv?}eLQI)hUEQT!}mj_s>!-+b$B$oe}e-bv`ByXtlL6;;r6g`4#8!|Ymc7E1SG z4z+!}V=HiCHz}}_B)pSTMTpo~kp9to@7Y5%55Al2MbTV92B(ZN0(`4&CP9aM&WZfa zc3-4rM;AaaCp=`1w{OqW{gP9~r~n;iS&gxSTn`y{L@Da!rQpBB5y6ZjCwz~ChrURa z-JYp#_UW;um9N#=Hr|qw}$c$MNYso0M5DcPkVkwy$ z&wc@BXL>t5BudngQwFcY^X-OES~9uommLo)Exa95YuCIMQo_BzEyrfm4N6L}AIB!* za$sz^0vA7EOGWkK+@{+Gv0H;#yX+4gYCm4g4c{#6CQHj^`t38{%G~tqg5-LkGWak|+k71kW%ykEGuAFQ*zGk3^m^Q5WO~1^0O15gMl#1ofPeMG# zWb-Fso~Z(a!OJ!ft!Kelb>E@_9_K#202Kt0aeXq7N%(PnP5E%M?0m_~#I}tx2vU6Uk9%6QOV<1vtECfeOx;4r8*v1Tb@#JZvS4m5-=Z@+~DjmszzhV}twI`ANYe$6}(Zs{n;yH5jP; z|FlYR)nVHo-#5=8lAGaj-d$-o}K z0SOLvmd~CKb{-sbuZ}gZPTHUjO8t;vR+Y)1#^h3 zX<+c`%NC4KNx1m9#ZK>d4iL2b!7oZD2|pwG^dx$OBMDyl8r zm5>~l93TZs6N+&jo&X8%l7GNO#9<&}iz3A9{dbh0M-^GAnZ%CbSuI25~ zgRLb&En9z&^I!MV{H0Zwv<~js>1y`C43u^`~B+R&i8I`w|6-} z>{d1g42Zi>?mEx|?tk*qN({&{)dhz!j zP~Wcb%n0B2$6o=9O+cdj+5`e?0V4+=wl|WSzkqEWj%22(T*G4l7*4d|F2J4jKr!G=r91RiyX#}9+yc}-zr8r{lJ*MBd2u3~4@iQP=Qr(Q z-TA5EK}kQEIJa5ubD3_v^?MTZmG+>Xd2Qo%!*daiI_Ryp=a@>cgp2M@aSkUdz+EuKeC5 zIAM9~(1(C`V_GFL#AL2{$xy|6HK|0qpYE#f;9t6Xxe+S4F=uk9HyM@C{$wb?Dq3OS z(lx5lbsOg1WZ-@y400$AgkV+zl6M&%Tw+d=vtA^JvfmGMCD5cich&*LRGmInAK?Xz zUpVldk|0XKGrP$V6CZ5&1M`Y3B6fH9y-0Kn<~FT2A#hT*p*Yb5{o^p&_hIhoWOXQQ3U@8|j(w_$#2@guM0g4htx zcaf>LD7`k&J_A23HV(347G{aghKFRTtGLnfVGLGwZV`C4yavtpQ$CFBt|uN@e-clz zV^)~|AOQs#k*Zm@A6%jeX4%)d#2B_*V}62P-^ca@g&4g_C;~?kRUBbg(ROGJcTsI9Cw&8PSIpxpw`O-Oi}&jmORM zn8*h!-D}*Di{c{XXSJ*;&8f~qTib)HBN6_@pB|Jckg*^b1L1o87{$8XjntQB9K`2f;pd4yc-?;0 zI(5PW4K)=#jFSh{<#YueI=w}9jRh^3)@?TQK%fpn!dR}3cYcJ=Gj^cQcZI6-USxW9 zk)s9{Bq948aGSVMM|58l5yZ*#7br_%+IJP0W|7Nfx}Hr>(t5wS7|6BujN8V9{t2cg0zx@44vBC(N| zsz}P9ovO~s19#Q}(SO$=2tnBqTXXOhxgYTS;ya#9B!-MPzoIYG#!ca6z*iIs&!B~Q zeu_D`^II?yWV(Y8w`$PQf%b5=%@#aVbRIhY_xf;!`jfz6>RS~E=&FwLrsPgN(>Jj8 zRBk*@F-=@C0Lr9Cf7AH+=zizdE$b%dE4XypSzJBm8aI^urHHowtS2O3xs zP&skuW9U&E9vp(~0} zcOtUz7#{cyz0L@%u>3UWCz3R1rxCw%0%$6AyBiU5FKEZwZ0Ab*0c&f5Gj)6s4jVHY zg7VQ>PavoH4g0ME82P^EIsJ1`Qhu3PU}#8W##dZFABnt~=FgnHY7PpN3xs8i-cFXd3-i@f|GO6ted_psH}9|xc=ul!?Rf5kf3^G>phMxCmjRRylB>d9F(po1 zC!=_+HAiR%K49lQ`K(0fCe1|}4DrHQ79z1vclxAstJMcfnj*`vU*?2sKa;Px@O(J- z^6vFN${m!naiNHJZ_Bmh{wrv{oa)l0*JpsG%Y3%+jB=;0xC=YZLbZ$7p|JH!AnIV! zA1XHLyCEf=-AJG6(#j{Bcf&80WZ2+mJ8ihQ793{k$}+D$R#%K-bQ(Ci#y6+D0r|h0 zGqiYd?BADPM^(B{2=L{B=WPO$YtV$7r@8hQ*#~PcD$Vg6*5#=qAo>kg53i+_L3Nb` zLn`qDYYVNFf%!u03zpNb=s!0M1W1>K%R`NFLtF=>q|0*Up;861^y zPUV_Aa}0^;tgNkrzVJPe>?c`ac=c&63}>ajn51)D0Z$*1o!|5@RZk-u0zLhE1QE4j zPq4T6?r^R)TYZ!uHLl+9(RGYmo5M`D+~5Y+9-*y(omd#m!q06@ENGey4N*7$t8Vni zc8e9>@e@>#A{HW2eEf2Odo;i9_5JGrj!{5V9sXEx+s5Qz9q1Ug?7-D{N?a#E2b*t{ zty|iLStv2ss+idd)s6}UM72kC_1vZhaa`Sd1e=}HjVa^$x(D0Kx+gaE&O#x!5Bp0! z5XrmOepPm;5*0V=yRX)g24PJh^=sS1jzysm{g{hitbFjZ+W4u;oPz-f>|RCpyI&#Q*fQN zp8iREx63QNjr)l!ZHalrm9|IX$^DxvIOxSI$zT8H*F+OV|Ig9+f9F2A@m-j24K(Iu zrYCdTiA7s}F{|LJSU)Pn;h^S-{#?WHZ6UTM3D@hh74{1}FK=&e3va3xDMalTDy)QM> zDsB2H`Iz_RZO>LJ-@xAEm+On_`xsZ+=5g#hmUf62*v{kMYgd0Yrb`--*8UV5y@dG| zjdGv$h!dKf-_r2Z{?GK=CyP{h=__23MEaa3m4Y1k;tqk76k#Rz)?61g9ZleyzgpOG z#lJgrvZ81O#-xm>W0JrA`nzNIae@2or@ygZ3YBm@A6XT?=YEF@L{BgX&(JUXsM=gi z@TN65!SP506OQbs;$UNrw$gfoP$N@aArjlxA=?=N8C<&v;{-;8U z7Rr5xns_raeOP3E)7-%KW1Q6|cu9T(MLkVMU3n6YpSZX+uxFw_p?Z+73Q59f%LQLo zEkh>5^t+ZncxGXnYs*(C(QV{GhOJdt>=%n@xdlw*UF}b1WBj(sS!&j_3S6tOrM34I zxnF{CEd!o^x?mhG{$2Q0Xph3$7O6jS@iCXS%7H^`(!zD$Tp{=CnA<3w4lnoD%1o|% znpKvXM2L@DlYwXclGTqorD3k&s`RsRHXqBhj6eGy~< zpKSo~5xZDY~Qzg{`NRVGoILz>*Hr4d3?OL5r(#as`G`oaiBpJ_ui&z97`qV#;F z7$&kc?HRu+yzTuuoob4=@VO$)^*HwyWutVvOw?{C@CdsIm3b|ehJA6I}|-=tJjZpKzWMRdPxv`ZeVm@njF9B?u;f`58&8~Ur34M2lA zs{JQkX__d6yS!V~`zaJn8%wZBX_PDc+eUl9y=G7(&}O~w{o4*D5KWppqlfVAk8jYm zCHlq7%+O)A8JCYl$**%XC>(b}1vuKiGj{qW6a4b-Hz%Zf88$8|@07duQkn*-Sk2)$8U=-wgTMr zF7~`^5$BEF$1k#s{#ZY)9kIwVf~n?CAB8(qY2RRre66^x`c{(=K%kdbWz~GL`QTVY z)sRCc5+*h@D$q=MKBOa)_`^*vb7o0^=?8gpbH>f*B)eZiEZRAsOk8#2rliuwh4;^9 zI)q9(CfWH5S~Dpz5ecX*R-YXK%IEPqW!f(GLwDQV=yFNpeiI>L!kT$1w7kf53U9wy<>C(d!-%vZ zk0~zehMcBCT>UWYoiUNJ=^t z%eaSykOKr`mX`3RAecg3qaaIc&_DnYo8c8&bCX1o{OidE7T&P+W$W+x(`yx1-9Wm6 z35aJW*37#3u7ThxW6P~n;%q6d!uhffp?Tv_6_69_Hu!2EXKCjde|+ua7t8l_gC8vU9N)n`)yu6^rTIA1nwdq zunuk9XeGaWwfKE#^~^<75B|CYi?#5(V@s53it%TW`jrWr2R;*H?#EaBp2nMC%8W2| z>98_GD_K3yBmTtRWk{DaZ2)Vd=?C%P6zmUnhi{2>+YF_LY~XMSGAnN7*%MEfNkWmP zlO=Qi2l=U4tn%ss=+!SqErdpiS!dDE!y&PtFau`^0rGnjEXa7RG`PKw{%sNCqZp8I z-WG36v+W#OjA$wce~Vvj8f%iiBit*88cB!*-a9jO3`z!s|_}XPdpaED$}y#<#{P&D^ur2Rg+Y zSmYJnp%wQWYy&YqLSNq6vPiddkG&067~q*fHjxx7&rZBmMe@%AKKt5k6a`zQnp>@2&m1+uZ(J^ta8~C z-=SfjH0@fmXzkEbyeK=TX1Caq6?UJS$$vHOqW(P;XbsErNhLf}sT=s&zCWB&Rl21t zZHTuaV-g;A_-cNeD3x&8{2TMg9RqGm_n5s`=E$B4uKG1Jmw

                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%0DHQk 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�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𝔢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%0Ad$?f%A@G$q}^)df~^0vPh$!&kHlH2~;^QX%0 z$P~@f>5nDJH!n+W^T)6GlgCZKy0xQxRrn(j{y4e4uF6Dm z>wkg#0rbz0@K?y~_QV?z{to#I=-(dUpOVi-{!oN}M{fK3H+k~yA-#Jdd7W*4Ge>w% za@*g+BD@CqBJ6KR@+5d7`EEEKK9#&*=1)-mGV9|6 z2X}}2znnZBZtuPo;hV?{B7d0N`j3-mLjG)o|4wfGSu({ASMvE2kDgrQCE)Q9UV^+b z@{P&s!dsFzfp?1VN6EV)KbGA3CzCfres+W}BDem{#somJo5KNcq4M_??Ik~o_^%7!=H@sG35BQNw9?6evVy1 zZm*lOF2dgA1h~KBE^@m+>)r^jN?rjy?a8gb zD|trbdq?B77lv8T7A+@HOPNzkA7Te-Dz|{(c|fXUJ`TFOl1R zT_?Bsr^wh&A$QpcC14)@;&f}BK#5ZE66`X zZv7L<_agsdgwH4c68U8j{s#FOyEXEe@I*uGcaV2LzEFhUL*4`VN)cX*yg%|yBD@v3?e73`+uz~jUC=)+!l#hi z{O3jZQgWOB>Ii?E+~)r!`2(2e5pp|TKSua@aywqv$ZfxFlH2^#=ehlQz&wt8DCSv? zd>p(A`DA##2*02F4di=~TmK;PX~;hn;S4gHHEd>Q!x*2O|6^x$W9*Cc-O`+xpZYw{>Vj zZu{Fd!aI}O{*ENK*Y_MpUJ&c~e1y*-$IDR$Z;*+kR~#xA}h@;h&M)>&BiXZ;ko?PHvB*x)I?i3*3IWUW=Z1 za_cWa-V6DP5nhvg9P*7Lyd^oFt}=Ky!XG2I`Hv;H`A;Ud`Ol8(5j0_TxSS^DIoh2wsC6f2JSQC%5Cmvh?;+oU{(}+zE%`R&&qVmI@Gv>!n&^23-<6Y{U&t;oNJ_a(RW97=BMIXc28k=uICB)4^2 zKyK@^Ji^~3xApmqJiz1dz9P5BM;?#x)8zHhld|yb$I<#Tl4nFdSA-WN&xU-72u~od zfPC!;Z%keb`8E;WiQM*g1bI&Mj3vJdK8^ft_-yjB@U`T&o*T(+J-0{rr{uPthsbT+ zz9YBw`8mRWBe(U*9Dn=y&>H)dlN?XK6cmo|;^ec@(}>*qTab4~zGH+Zl6OPCUxYtF zJ^}gh5k8gt1?1;O_!4s4-!0^iq309wVetLr!{J|(kA`0&xAnYEZtIzbG62z*%7{o{5j-TMfiI1ImmB~@Ezo@A^!up&Ho&^JbQ!v8sCb#)FAis|FZ${n~{T(8_8~LNi_l@wOINB z+d9mQ@CD>a|BtSFfwOA-{y08zX+kwB8Wl#NE2ff4rAa6%O3_4WDy5W^bU`UybPz5c)a-z{seXFbo^d!K#w*+==G ziTHf@Gm3vT;;Z1^&(GoB&#&QSmH+36?}MMJ_#@6Jx*pt1z(*^-9Nha>3GV%=7V%8D zkGB>4Y;Cta{5*M=i1&iur1-nx-p`3}e|=4h_+xP2pF9uu{=5kH*Vl@OzXkVxZinY- zTtC8JmG6uAKXCuvNToB2t_RP527I~lpBwS|@KuVxDB_pH-&cHg#B<>OJ(<1{9|ZUD zJ^=Ue&V>7TpNaT>5p3ZAa<9)xGgkFHvD-W$l%BAyO!uK4reZRHojv*njXydAuc;%|WukPn65 zBOe{{N$?L9KM(Ht^WgryvezQM7Vh8sdOzZy!rxOp-$eW;xYu92TG4r&r97qKFUxDd z3*~j-KgpX!{1W&+#kY_6b@1Z)epIiB_lH+f{A9S-KMlTH^*kBzx$wP;e=*|A;XdBC zBEAuRqUtY*cp==!`w!f=drbAB^X~mTA>t>)J%4?8hU#nzze0X_#IJ&1qVH1;fP4O7 z@T-)6OvLYncTxN!5q|#>N!5* z<={Tv(<5FT?)6^+@1^awflriY!;PP4Zn4-wXd)@o6=S&b#MNhZidTe7MJ72>1AF;U3=|?(rkw zZ8b0B;Mwx25uX8nLGiD^JIPnVZ$s|FT)p?vhA*p_B%`7_a?rCtZzZTrK+F7bv_Dy zq2g!3wV02-1Aq1 z`*RTLM!XT+^LK*x(004Qhs*oH@0Q;Ne@H$OK21IzK1==-ytn*$xYzSC-0N8Z_j(H8 ztChbHzCr$D#P`5!rP=(QP^aiTdj6B)A1VJC5w8XJ{4L>MC{J7X@AB*5f69Bni>vK2_Z&z}l!ruecE zuLy6U_^J^<7k-7}8%4Z1-0SZO_xf*yd;PaY{0_M1p8@ZrI&-in-_52O@ddiAZ1@u8?-B97 zaL+#xzDju>fEUOggZuMDo`L_U_(kxaQcs2Rs@apn8@U!Ks;agPCdbqEjO%eYB?*0EZ;y=T`*LMGg z`@9@gzv#Ss|4T=_Jly+M558C1Z36fHw}gA1ws7x%UwEeaJP6)Iepkfrf%j4TGjPv8 zAAX7AUyb-Gcq_%f6Y-DWS17&^-c`O6euI2Z#1FuIyeBs(I`2)D=XAJ_w^qc@gZp@! zM!W^w$9py0$9p~8$J;yN1K>X1`{4sL-bdg=rk)jBKU=fM4WTMZ-L4DR!FWyCweYpOrpBYqRSuHpwrd<5L*_uhy<1o!!UBI3`& zeSQ~5d>P#5cQbskUKd}%{q^!g#D9aIr2ZU)`@9_8sOY-#*GpQ&)8XFFDsb;ZO}LNu zQuuU@_X@c0Z#zZ28{F4_Ke*R<8{Fr2WW>kAeOzEp^*4cg{g=SK{-@_gxe5E^zOE--r)_d;jl>_&sp%|I={q{|j*M^D7Zw z3E!*!yc6+{;6C2Mi0_2^c=ts70KBu-XYmV*t{?Z(aPQCAaPLn&xc4V3;w|Cds6Xu^ zejVKV(9ec8zTN8++UAdBEAFe^&HW(==^#; zCEzR6{}UsA3j9sQSC4pYxR19<#4mySc-uw16Wqr;81Ca80nbzY6C?fr{8hz29`QMF zAMfIbFN6Dd--`G~xR3XHxR3W&_|vNYV8oBkD!NYQD*l9spA7f$o*D78;XdAm5pM?f z@m>%2@%Ds!Jp&_tJKXCT7xDYxUe9xIKW|(N_x<7P5q}dtOa0G>`+lzg?)$gx5&seH z`?uoFQV#!f#G(H!cIf{~>$p%FUQS*i;+5g$6`u+B?KXgWKik7cDbIEACGuVo?+-6` zl8tkC#K*!bDt=1Dr^ByN{L65!e+4{G^{UM_BmO7c>o0$i_2~$$ z2e1D$xc9$C#OuIUYP?M%ehK_t#kY-kHvA}!w^zjb!;e?|?Ge8l?){$<@#%2y|5Fiv z9$wAYPsCTieZIbc`+RMO`+WTz@qO@*)&C=!7hMnTCE!~XUoPU6;CoKAyfq?T2mZI> zn?(E)xUYxy5x)-Z^V=)p{oy{pw@3VLxX{} z_*A&h`$G8ps{a+Z@3+@Pd;{F~=O0J>OZYZz_XoK5`8T-l&ksiY=u3;vyT87wz`xaY zYr=n%pAYxf?}hLVS|^vm`^ekDr^@@mx65yX|0o{`_w_#>?(6?4c#d8d&%>9>Uyk?+ z_-W;>zwbtT6TE@qw?_P1cn`(@9`V27qZD7fMbUY8FAZO)_){W&CVai(Gb7#rUMAh@ zxHRHdz%v!!DdOGW{v7aIB0dy8RryCpd=h+x;%7uW7ha(F7b3m{e$2_%pEVKR06$gn zA4mL4crC^M5b@vO{+#ZE5kIcPjqMhwY`CpCrD)`fie<$J}!SfVf81bF( zC5qn@@dNPHiZ5|l(RJm10(`CFD@FVac)sH6MEnByCdFS8@iy>6#a|ck9`Nmo?;r6Y zaDNW?*oaSt?@|8g5q}bXQ1J^Q{xbZ?iZ)NHBfcJ)?JKvI*|zAz#4#eB(Q~pI7_>_w$DXa6eBtvQ^Rb;O7IS z;eOmN5BKAH6}TVAYr_3_T|eSY;b-aibp_myu>D@z>#hDE?iz9|t$V{do6P#J__V*ZzMW+>e9*!2Ni4Y@4F% z$Gr@^yz-w8_v2u7xF7H8MZ5{Ts`9sn`*E-X+>duT5$_GJul(cTV|Bcn0$x=C*I`Zge&wkP_up^3 z67KbMg!}QmJKXEJ3GVfbgZuB*-3Rya&VzeD^Wayg|F6M)y{(03Y5i=4U#vXe!ae^H zR~GHR*HZ%S=QHKtUQZ>s*Ha(v+ieQ>^P=k_-UI%K#?>G0ulFHvuk!);WaXI&_xvxx zz0TL+e*U%&?)7{C_j-PS`*weW`*~ogwngXbJJo*@{CHh&IURn9)=71Ew)|qaZ?`qv z&oi^(Y08rW_dfK4dp)T{ zf&ZoYk7-wQ9=-m`aQ|Jv8u0d--+B>m0{8R$mT>PwTlgUL|GJ3xfDcprU2q@QJ#c?N z@&MfTt25!==a=A@sSmHieY^$mn-pIN_xQgfe$-V(=POTn(%^o+mk#&i$a!$zZezH= z|7rpE{8z#~|4s0@s`FO3*MA?}-`_n9|5U;J)26;Qqcf3-0eXTf)2O{b_snYMobK2lqOMz&j|9`Eal2CAin~0o=E{8Sd|+_eA^ve4)m5OoyWLlBfQZf_t6S;m;^fZMf%e4fi@b z!2SJxSGd=6Bi!p54fpL%g8OxYXCuB4{*T7B4F0(Kvj*;UehL3wdA@;r{(s?KXYs3x z&Wm5)C#97@pgmXBOea;JY(T)6h8&-*ITB;eOxcXTPV+R zxaa=_?)7Ye`}LolaIa@K-0L~+nxgaK+bs+CJm}JK7JO5Nc|N>AUI6#} zd*JEHe*o_JkIA;}`2DD!zZBf_SBHE4+VC^A-Nq5W7@n>8cJO=To#6B2z2Kk9`@{Fk z?}T4+ij98^JV!niK36^izFs~De!{7ie*rvGz8v0B{sw%Q`~^3Cw|@^9e#(p&MR;A`b4!3*V8;H5GwZ%z1F@&@o)@+^2=c^i0R`PJ~|^6v1~ z@|)o8egD=IURn8XhI{^D zaL+#q?)hiIvy}g7cz^jqxcBoFxcBWtxc`pwXK>H|JKXE}8}9q(;@71d{>SIb>nRQQ zdTPLZyLI5cpT8pF*T7e*Ki%NIKKsDE&av>9lxH&B^UsBQor~apJX#L-dftG0JzL;= zv_5yh{r4kNIv4G~*O?0UM$!u|ItuZ8<|yTkoB+aK=hWC+|} zU!&n(&m_3NzMh4jsBtZXdp*nHp8pNF=idtV@qP>U^NnBOKHfj!KHhTI7oFd;RevS8 z*WUm>Nbyf*G zz;8dr`uh>w$NMwTVaZ(I&9eyVNnD!89#_J?~t zL*RbCdN z?)fXgJ%2rTOV!x~?)7KG{d_(Le!uech1bfkx(C4<%kPJeRh~!So_{gi>sbc(_ZM%% zy`J~rUe9-M-|jDPf1h$(j*ZXHAKc5rw`yFc!hO4E!CPmf9R8;n{A1<04DR`FfO|dt z;QoGUDBSBA3HN#)h5L4&g8Tcjl@Wg%e$HtrhyVEy?%Vwg-Z|rNc*^haGnD6VxaTk5 z&Hg)|FR$}7xW9j_0rz_9z`dR}aNq9LaDN{<5dOUCza73pJ`L`99)sVl__^?Y88-e! z@Zs`z;CCv|M{v)-3-0yoh5P&KlE~zfW%gpQHM(gnNA7h!2AA zQ=YrvUgtgV$?E59_)p679NhE23HLhRgZuS|&2X>hE4bJ57u>g7tVhv#@#`3;M*J*z zEseJs-1A%p_xPUhuBTfaH^Y0&hedo8{Nr;h&%N-i@`vDCGA;gzh(8P8t@y|+D!y*S8^I?j z{<4U-gHKa@=ZN0`_wkN~XQ&U8;AhGoj`-v73U#fIufaY4TKGlE|9-?jgzoF9Y}SX2LVnhX(K_^5zk51#fzu)zJs;`3J&1|L};9g=l2fz@$mcP<>B6k z)8MZvzDC6Bz`Z|h;2o9cYPi>*1NZuS!zU=uporfIpRf3P;9lqb@Glhq9Ngz?G2GYN z>k)qw?(_Q*-24AI-0R#6pQJhu!hL>A-dJ=!xSt63-?7Mm`*y3rH)^}h;a*QGxNmm^ zJWKn5aq#EmQzJeD-n5>L^Vx_mgtt`uvWTyNU#0jDBEA{kN%3Dt{0DgH^R52<5l`t| zbRN?ce_X`N!s{u%Hr)H)5bpiIIO470=WDzjBigGzSh@I#5cp=@%0n&AK=OL6Y-Qjk@XYtvT*-BiBltf7Tnj{#qcqD zUAKn&dg~bRuJGjgf%`fc4EOagCgS(PeLXx9@h9Nk|M?Mr3GT1oRS{nY_kQkx?^Qo{ z!Bez;{*3q$Hx*qE$1DE$h?j%cQ~YUg?|)Ue_rDI@`+NcXdgZ?);%(qBC_WqRue%($ z&sRUV&&zFaU;iT`J|6D#^)&oO&DRU?JLIpxeVwm_d!IjpPgI_5aDRR6iuhjm7s`{; zx9B=?PlbP__!Hqi@29|h-W$RPYaW}y@07QWcnA0l#oq$={6pdXyFt_79{(8J>4pH%)9@SEgU!tat_3->(T;d2!~0-mOIH4c8Fd}_pJ zz~5H7xKp=J_nxL!1}lr?)l$^|E~O>Mtm#W z^B;g8RGuSmDLRiQsGd^rYVwod_2sqUzTJlKIf}nH;;rFB8d`lf!9D-2@Yj`pM8wCz z*C>8!#Am>Zsh(#ez7T%A;+I8y4cy236?~cM{0{Ep{Vn2u!F{|(4=6hCKCY5*uRlHF z8SpY1?}hNURsW@M|6Qwg@Lv_*3I4DAHuxxQcQ|~Ue0;>Gz|X(H`mzA-`Co=Vru?fT zz8*eX@tY$41^f-ge;@H*;qNK_?}#5Yu;{$|cq_waDo+i#kGEdLo4|d%E#W?{ws5ci zx`_9Hf22C^hG%IWC&CBIr$ziR_;STRAMqFAYZbpD;%~uwG_v{F4)^+hgnRw_BK{A2 zqUtGeYteakKLPIJJuTu@;r}Xsorqrm_wi=KeY`nvA8+4?4}#yVdhUw&J#ZiIw1__j zU#I+YBfbc}Tk*>y{s!FpQwaC|?1X!N_C)*ue3C@f;9d&u{izi3GvMBzb0c0K zUZ{F5iumPl?@w>I_h$gSpYq=s@iA~8?*kE^3HR|n6Y=?Qum2so>ih`q^>2yz4)`GD z*#q}+9e{iN$J|zQJ-C;Gf1v!e;J)4S;J!YaM!W^w*Wp!g-|n?=Uq6H4o@WHy_YV`` zo@XlDU%xNFJ`%^LERp8~-&vPPvKKu;DH;edXaPR+( zaPR*uaPR*e5g!dtRXz7d{1LeK?dgcW0QY{r67iLAAMfXIAMe-j2elq{MSL&Z`;#)X z=z4HZh5L94@&wzVBYeu{-+{fE2;+MgFyd5Im8Sdk~171vh z8x5~0zYpG2{xH0SJQseYd>*{Fd@cMl_4!@6_y5y~Z-smRzmNE@@L#muf8jna#qTJ( zPQ3qRB3=RReQN+Ou0CYJz5lJ?o~J$B`+tm;nR4u*KOfY;C;mv&zx#d2{#O}+AMJSP z&&q+QMgC{xGvJHlx$u1XJoxwW)$rft>*4>(^Wo`< zrXKpI!2U?qUs=8zex7_kyuSQ!f4PtUVd-T?8d zh-55H1=c<_hDpZM!UA9~AEH4pB$$}`|&<<;O*hdv0NzAi2yZIi3BO35a+HnF=Y6m|6+TR!2ES9D4j&`Wfal7q!57H0 z;4jHr!dJ=L!gtEE;lIfTz>g|n;~xeuEguDMAfEugNS+JtAfE^CD$j#YkS~QlD9?vK zBQJn2k{81B(m)8$j)?T@$k8Src5x$sW%dGK!XJb12rDg0%5K76^n0KQ6I z2!C6?6aKDzH~fA1e)uMNijLd9ezwR{;f3-Hc$bpa&uZ{n<(cqN@&@oR@+|mxc}w_Y zc@BK5yf=K8d;t7c`7roC`6zfwDI4zuc&a=X-c~*jeuF#@K0v+{K1`ku-z+bHe=aYC zZ;|hW?~w0?rEr|CHC>!-Io9X?#10iPiE^El6QuRIg+Q{)Zc)8uX8h4O6p z@A4eDUl{Q7GOs5!&H6A3@m=H-;5W;s!UxJ{z=z2F{L8mHN!#^TfA8S+f{Ugh!gEYDv;@mYvJ zUEUI2U7iDPD(?-yLOuYVBlq(!ucwcED&hypXTXQZ{rt=GOqb6?{L}J0cve~K=TdkZ zc|Lre@)W=q$_wF(y+;a+DB-0SQO_jw!zpQLg5d8pSvOFk9xZOhqum;uj`=fO+J zm%@*iuZEYFuZNeH=fi!w1@NJY-wl64z90US{P2a|LqqgF%$583ue<-Ab(+pA-P2Ff z{s*2Z&x9{k{s!=s@+`Rjo_kBU|IT$=c&fIW4fi?+z&+0}xc{E@DER&pZM+lUzFmJG z;QjI6r=Ev+|9$E_c$V@ng?Eszh7XXhhx_kS7sCDbsdvKt_o;Wo{r9Q&!~OT={r!ZG z*MGms-%q%wl()WR=zWH}|IS4<`08|v&xG%;VBP?pQqjCE-0R7PFV#B9fqVYmaL+#q z{<`u^fWIxD3iscingQRU_*}U6XCB=9vl^bEKCg%OmgmDW)wcq8mV7td^Y4dWq5LU& z-{bS^`BUMZKLhUhtHJ&Etuo=BzX9Cyw}pEjvf+8EKL?(nKJ zxYsiS?!PmY3-@~F!M&b5xYx53?)Buuy`BR2DD|fh?)B`1dp#+7U+C+>`3K)mPA zg?r!T!H21zdGHkVb1B@nyBh9&TMzejRS5TbcEU4N&u+NavmfsDr0IRO_s7ST4)^_J z2E0(mi)wJ+&u76se@pmO)$i9QydKY=jd;)R*C#xFn)3Md3HK-DqmXB=d;;9Zn+x~j z!aR7|$##6qgXgP1OW{7Qe7NT?fcx(>6~aCLPPpe!(RBsygXd3$7pM<@eZ}KFe>&nl ze4{&e_x%98>2{MF!|KMU@^cheHSDMRls;05w* zxId450Nj7SU>JOACCfhw{)+NXfWIxzg?s*aaQ|I{JhOJ z?)g)69mwa``;ZDRRDQqS>G99159x^a?PkFDD83rppR1n*_j+2w{dW!8!o8ksxYv^d z-=lhZ!@ZtSaIa?q+<)I;D%|Ut0rz_H;NEAy&gXq@c}mLRe^w*j=W#uJlg5<~_i+`# z{q?dN?)B`4`|m`g=(?TP>Gh<-H>n=KKI-wFzZ&BG_YpGTp1%Ry^S6b2-?HI(>SqqT zv+C>(?_#VYig?l|S;Qspsxp1#%9^C6$4fk=aho|c~=lO7dE`0$!NAZR5 znHtwlxUcgRT}Sl!^?Fj_{`&%HaL=C(_xzdgjhe>>@Xhipxc?qOOZX3p_v_7GzxO8_ z@!p>SaPRXlxaS!KpR9gPfO{Wu;hujU+<(6y5AOMw!aaXJyq@O00N&Ks1KfY_U?<$i zo1*KZ-cRpaDm+j5)8Mt#pLBR*c_!TRH-P)^4*2z5ugCMZM7-zEfqVYmaQ}S-zaGr| z!w~QJ{W`J7dmm;XK1I(t&xL!QdGOZi&uX~mUk~@+9mt1!{sOq?-wpTt`{Dlk2r0VG z>f`nNe*NCv^JgI5`%n$uR{inMJ(#Bf;ybH9ZQ-6j8}7e5kOTKRd&52dD7fdJ0QcWV zmN>+9Z!_3F=R#P?Gl*29O(3*nxBC)|HWU^m?J?}vN-wDKv3|M5CK ze>&WM@4&B5d%WkbhIr4P1@}I*gr{k|ZQ-6L8$Ma_1K^&27~Fpsz^~(a{hogU;yr&Z z-1E%e*O>($s_nLf-!E?qU#&oxfDSf-6lz%DWeY^Q^&r<;3r2K{O9Od5$_wA_U`}I7p)3=+0c+b-tp04}@;3>*K4DQ>V3imvI{mkpB zru?~x&y>%D*O%wP3(vJaEQNcW`EcKE0o=D+2>0#ogf~$=yWy)<&wjYqnWpPZ-UrW< z4)37+e!a@$bCtgu;(fbWaL>~c-dFkC!bd58Hr%&60PcB)!AC3qD0q(YPk{S&{kocu z*YnIn{7mJ~gJ&uKQn+t7AMSYy;Cael2+vUdop9f-e;(!ad!AH%ZsxvD`TcV$_Y~z% zN4#%06YhB$z_%)Y7QFBrd%d)T`*w5So~JjwSQX1N0A51wpYQp&(&STv_{o;y@c+($ z7uVnA!gbp~$~^d)iqC^rmoJ5@4JrA77dsSNxwicW1#tiUokDn1#qWgs@9FG@U#|H5 zaQ{7>6kVtEzD-qpDm+)70k2%g>aPa(-@D0#H&uKC_(k$8_~r7JaR2?9w(zNn_v^bp zu3Y&5#5b&K^$&x0k&l9pl23s9?|0*1^Ag>e79 zjGb`Lvm5St_QQR=X{T8KywCo;@pQO9Z#)C;&l|4>_vc7w!E@@__WZh_Z@0I+E#hyM zXTxum`*lRm){v33*k@6cf$R7zq{ef6u%$7M()>pd|px;TAitSzwYkO zo6Ugx^Jc5T{du#Q@cr6u1GsP3udn!aN2{J}#QXDRbKo---y1$#J^;R6J`C>9JDm#e zae?(`2Hc+?mj{I(Y`%>#qj)`ZM8Pe*?JJp9S~& zTf(2xxZ1+!$g|=8{IMLkkJqm+9-%&DXuP8kKVSJLz+aS4g}*GH0e@Yd3tuCj2VX1C zgL|Dz;hCyGAMVdXD}eiYD1>{Sop68dT#DW|AECbaI!T2;u6okobL4*A%k%j2^!z%L z`x}aHfIR-ZwJi8&if;+`=To(XZ&Q3W+@J5118>m8UN61jm&*sh{rOtM-~$vt74GAm z0r&Cd!hO8+;6C0wxQ}-!e5d-b8t%`LTMzf=apl9kKLzkCjdwTPpRcta?)^{EbrD|= zo+lOV{m+2gY^9`BgZuN=G6UCF(hvV94d59{lofb*eWoScub&*L|1RgFTeoEjo5B>Yo8|@0vS?~_e*eHDai9Am#Ch><(#}98eH}IzV_eA{c zz*`3XRN(Cbe>(7vfj<*?*T56?&&{+t`vyKIh`%lHMEo0jEPf>Xr;-Na0)JNjp7>)* z;E6n+l(f$KTqMSu@R64%R@nc>?!Kk2_4)b3f17f+Z;ANte>GSF@1_R;tb|v5(DH8x ze6IdI@yCaO&kMXD@Wghz_9}K*3Il&m|DO2c`@p^C1pN~D3;OrOAAbZsKk$QrF9^K2 z4I|ly@yFN-FAG07&c2|3a^MStJf{V|DDawrC&ruA&*uF+_>o&Je^YqRJ1v<%Pt51> z?;2KTJH(%=2P1U~JTIuHN8pPCzd7(ko%dd8FeLC7gZNQ_C*t3H*Zy)M{LjDa!72{~ z?rSXZUrZ1DB};Mmf1e6Gk$=Le*0=fam(%P&dMWUigFLGOPvj}~oPj^D%=`IKQ(K4c z2l1~2dHi{09{+123)~vSzZ%5<5O}yw_644(r_?be4*ysF{5;Q}r7w0LYh@i?pG$-M zWddIoc*Ve%2Y!0suLWK;@Ye%BJMa~OUl4er{^d{EyflY@-N&F+;NgC?UEscNNo=N5 z;H!e|b_+bQ-QK6!e(a{eR|oNf0#C$m|I_~R_Q2N!@uLGz#1F1y`6mS)*8f1@iTG4~ zk=>so=<|5_oz|b+ApVVDyUzx`Ht_j@zZv+8fxi{_iog@~R6N)A4{yVBezbADANbor zp3Q-;3%oG!ME(cHTONN7TVlNHgLr=qTf+Sqk@)L@`14f_>cba*Wbqfl=T)`B+rY<{w|Y9l-`->W><(|y(!4Lc^AhXBkia)v>cjtg zSK#4sb8Ow?85CI$Xkkms?$6YK4vAMN$^RN$Wn@rwgb#6P~y{&EHU>PA-oJMd;Y z>G%Y`{8NLk;H5vYJU_uZ=saW}yq!)Qj<98#TtCMhuyGv^FTKv@Hyu9VQcGMJzHW`Z zj?RXkd78yHgm2wr+iebi^=ON~0)9d%8*e9g^^OMq99(~0pQAecIk@imIw93zHQ9%! zYT4^?Y>@wpV1B0ro|xa~hFJZx;7|0kK0FJbG}8P<_>Q_Z-q!;EGT82#z_$ecPT*Su z_vhCo#`{&^Uk33{2mW>7g@OC?>k@gk1@6!BP59S=9}Mzr5Bz9rQ?k!D-DmSyD)0?K z{K@DDXr*$FH;XFalnDmc8!A!(V>I8ay@d?}Gd@0}uQ8WZ*l4_~!#p)Khc1<$opc za9pnk{(X>VUEn_i?$5zXtdm53KcD$Di2pH&_vhdx;(rSKryzb;;Ql=0MEuWz{~g5p zd;G*-A7zJ=|F;g04?OH!g}`?Q`6~w=##awKG2VJLZ65u(#fdt94f6Q&@e=-9;LU8?B>rM_5WoL$r2Wr?!2b;V z!NC6t{IS3f1pZ9mVL#^wo*38KpKSlUH1KeJ`g8UY^(W%{AGE-Cg809K?QRO(uk9rM z`pdu*d3@b|9r!;%o}U8$H}JiIAAZ=C{_a5FN7#@K|IIPBT$1avdUZQ4lnT695PwqO z;rotCfgc&fpB1?OMnPi3X9u1b?@7nnezgJo6J1|z7WmOY{#Jp9eQOu^F+u$GfhXc` zEmk5?PD-!9{n}c>`vsmFHc{v73m9~;C^2=avM=b^xl3*sLS{P@7< z23|7omje&;zZQ6@Abw5Yr2~H_@Nj&LG-CpNGa@msz$ z_%QH{AphpTPY-;1;EC5@l^spJYS`4onHX|{tGMcB6yFwb{^%=2~7NT)gb@1L438qy9XY= z-g^gLJ%}F|c%sg2dA8j<02)s@Zzc=u@ zfu|go7@e&{|12i){~s54B7b*V{we8!hwI_A!0QG1YX+Xkv-M^jmje&;WCebHkmu6C z>j&O0@I?MoAG95Rm%zjP{(QnjI~oLe`Umk11HV1+ME*5;-+fQuVg3gKPsBf=3t%$? zzaYr}WZ?QJ<&A<1m6CGh5f z*9u&z4{xtd;FkpP7X+TDf8(cC|0RK68pO8^yhY&t{Qg9r{WHqMhPwvwmj&_uT*O3t zV!N+CXRnL?LA*Y?PNYd05qPU0&)C3Q2Rwzco*W76HwIT2@|0jWW4)SaZ zJdtNZNn6i91Rmz`=Qk$S&-Fo`zk~Qhp8nhH^>uWqL;ugAf4JU`54=l|=cK^923|Sv zME<&Zb6+d)oFKk_;N1dm9(W?pU)^jSwt;Wg8@u*_cMtM(3Ec0&NQ|>j;5P*Ew*=lZ z@H+xe)N|xXwob+e9`=7~;EDJN`doV!e9^zw|Ji}}3bs2x@I;;yHrk2N^1yEl;#UXW zJMi}cPvm*?Q9C|<5_q2={)@nG3Vd7OeFOh7@P2{+5qM&|8!~L&rj$PP{~Y=!vEKY1 zn8g2IBJf0fkHHpSCh-12{z`%05_rwP6M4SVb(r%59}vV}6nG+j=4;mHw(#4^T0PeX zJ}}7BC-6j``_iq?x4{=aaOf`&{WB6i`zl*kli;&1G=CU=#u&^0WZ<_3^~?!;P~eLK zzb)`(fe#M+&A@d^dbs`%0#A&0{WFI-WixzSU)#@b34Cafe|zA=0{=Pi+XMIKQYO|< zV!Jc+LHaSeFDc=71o6iQerMoi0v{fDrNBo7UODi)0&3*r|Bo{0DB&&vb9Cy4jwUM9vnKJfQ~_(YydSJ-+hfPbeSc=O+ZN#vOj z9?Spq-X8Heye>BAQ8^umIl=#p;J}*yhu;Z8gSO4=b_M7YNOEP}GUX)6c z^!tCY^9S7)kn~F@S)HfYW|O|7jO`z)z=!B2k?Qc%bwka$@a<<=o%P`9Z`tvy5&ZG_ z=FQ+oHnR@2fUmP*rL=*!U1{~VhmTevo#3xev_xIu3%1)N_k`!Ku>5`DpXvJBK=|Od zEq*Ax#I5Ed;P-xN^^Af4_`LZ<_zhbv&lLD3{V?Oh@O}CKa2C8zDLYQhhL6yN&$;j_ zx&XfbUSIbi_`RdPp3By-^{@=_WprcRD)@nO4BmoQ(dYi}!speq*U^XYds zr?oC@`)B>`rMuXA+m1ZHm9zEvJ-pqKmj4%cJ^f&peom54HL=YWJI3Ss(lwuloy|tj~T; z(!J#0wn4uJ=-zUy)$iBD+)uc{^7u6(_t|wV-mjUs|69)D{ThY)U)oRlH39bnzgRu~ zUe$f(yY@Qr_gwDxpK9*!DcmbRXMONhyB}_kSL>di>bu{*8Vx^Iptv$&ps)1Mo+C+Ut5ce1&dcc^sa)*Vfh3@P4&y{X7S+ zbkOQt1Yhv3_2FgsE}aj*24A?=@~nZEdCKN}9lZI?<{RNx)-~S*pL>z@;WPLq?N7df z&z@m**-9O;B4Yc@!@QZb$%8|DDWd6@|KV%8`m?tcM zX?W@KmiR>Y@CpXu{pX4EpYeBDJ>mW52`|`T9^QYR@RqtSF}(jg;UzR6O+&K&OP;bi z8={^*=h!;Y?R3fb-^!U^g7~xb1C`WS^{JMYl{9Qr4`Up?VHx7l_(B2W7Bhr?5@ zhxa?*#@hpa<~3H2ZkJEi`ENsuzXkDE>vOlk@W1uB%$@KN8?BzZ;g^-N*Y$Y#eP7#l z?}MMy++M#A!Eae^_0NQN(?#4T;cw`^sX6c=jci@L0B>B;>Rb$Ot{YEYg-`#}_9wg_ z{zT)HwTM5rvF&d+z-!)a|G@|FyY}0>e*)ifyyf`W~_mkhj3tq7C?t*vM zK=;7!QG!3==T5UcI(I-jC$;PGKdNNO!IhKDY z;@`i`=4%A}&esjbz%v(Hyxy)P^KX5`#ybV^-)*w>^DsO`H&o7o?>S&~&W86sVB?w# zKjT%)zW_dGh3y}fz=xEu_+{{i{xDw!?>^bK`xg9Ptv8*^WA3a zLvi>&x(LnhBh1np{j!K})y?{RGCa4V^+#{plG{CVqRr!(h=1}S%fs(4^r~igY9oH+ zG#ey@BsX? z8w{qyr|X8V$Kee%k59wfiSSVu+6HyHmdtap&I3tFt`(bX@>A1%A;h7O&eHlKCq&wEC+f{)z|f^&5UaC~=;Da$5_mhxjTl8}NHW z-OjcCH$(hKJ*}VoKG6-cEwByZC%tHWXb*pCht=5${>Wc8-mdVO-EBg8!vEIw$-eNB zGi(2jwh2i<4kDLPF| z=E*$8)*C+$>aH)EaJ!{0umZW=3+tG3yCZcygxftO&HBUbZkuTHRmIwotn_WI%iKZhz=!A8W-q1NrRdYU2s$9-&_w1B6bXZ7%NsG};{eukezb=4Pe zJ0Z`f?^@sZIn*+Jk);>nhwFOd&G02T*0-(_3=JK-nm_&XY2U0;rz2+!3QU#7xK z9&LS_4lmQxw)+Hp_(+2}@PE@SUZ;u4d7SiyIX_prQQxQbXK46!@(+KpKCD6hG@bXZ zhwszp-5Z{@paMzxQMd{1fp{ zop0Ms(H|Z^`8QjK{G2FXJ2w9=jK^Q}fNl3gvbGNAGWu#`DOeAx}TZ*pBYsw5BEQn<=p?=HP+S}_dh4- zi$vW2oTd9tx&L`s*Jrr@Y17j758VIMoo?QY<85m7w}7AD^S}2$Pi2~O|I=9)Sh@e1 zpn2r}XYQL;Pfu+3PJQ6k7rwiR&C5XeBNy9@4~0LMX7MB7gLNK02EO`li|2mnCS8!8 zg7_Ep0_Er6=XJ9F%tHJMJy+o=`1wt&{^#ITv_sO{B??S=IoeEsLvhfVMft8Jb5GZQ?2xwmXRZ$tbtYeULT_y>C6#4qp)`kZ1P z{KCJio`diwds#h4VgE2;nFSsPAA7YGnYm z*Y;QEz%Tv6>Z}L%{EgwBpPy5&E^UE&JDsej*9%r>JLGvo58Cm2kA1v8k6jV(^XT_{ zdc4mgKaci#^n3O^{*OQGb$uuD->&lnzo*ON`|AR*E(<2dRrhHyTaah^9$Q!6z>n7pj-MlY{l6i;%T2cb`4jGaPO+C?vYz{%Gbj%C{+EJ#|4)Q_ z|Ml@kGQan~3gYiq!)m~ft!1zG+VEwwte*|wr>LL&T=?4)EzhNh-~Xk7P79KCzNzaW z9T5Nb3VS_X2OqP~=Fz`T=Ij5sdbXbXApR#kK+9(5fA{H?c;E8yJmi?g<~$GSTgCG8 zJmeUCAXWwY)ti;LI()u9_vd-YKz&fj^N{U&o)ynS2K;Latr_y4`H#(43;3}Y*gEI? zpn-az0?$MG=>u4vhqTgjlXxC7Ro|2CiS4e{g%h5KG#Obg!8_*uhq$Ue@O4+IPVM8f6imo$83xBQUA4iF5HFimA6D$GZ!b zSv_MBzgr9KUidFZ+jbv>r#Cm42_K~g(&WOM=mDH_;VX7npBKVc{bJjF8D6`Ktsj3z zt{)eswX(pqh;Mj=t><^(U+Tug58==1;lBQCL(l)1-cNmn_%wY!^)37)y>ZzEKkXD7 z*YEI8bRYEr_&?iiKU2*9NFJvKXW8q$1pKZFM;^|g%kIhej~bcl^fBp~?^!*kBG0@Q z7O&e@lJUFFvi0fDrttn;GtLUHi#$*3IH-?flX=$ZL4(Z@KYF3%ZwY@a+vZWb-DIA} zr&#^hApSZ%@a%f{wR#=t_L^j#_n)_Z_C@@#h1Q2#;V+J|_}k$RO|U+Uf-l$oY2)D) z^x&NP;l=bk`G?`XI#_=mgXhh(I-iCY=#A|2@EqNcvKapH8hd>$g_mt)z6$=(jW*u5 z;b)y?^TqqO@6-79oKl@^}5@w{;QC`obIFR1n=;J^+z95CG!_M$LhQh z@%8nAd4KrnO{@=t;d6T$42KW;#$XJ5?;1Pah0hO99J5BxuyOJE;pgauuCE6q>tCto zhwwh?>@1u2@cH41{HHds{0mUeq?@dsm*6AxpuX4O&yTSE+Z*s>^%gD9$?9wf zZ(U&H&4RDpWbrzzCdd0~j;)_75dX|4=2ydSSZCwv4FB{x+inl|T_0PYZ-Q66%@dWa+-Ln6N!N`+_rPnev-N);{N+Ukx@|PshyMEfaTemMjj%pE1#hSCw>}5| zTlWL!!E1K6zP$>+Lf7qA!Y8k^e)9h0XCJh{_Yj}{q3zE%!5>Vu{_}a}C!b^e--h^q zbR*tQ`1&;4Z}2|kyUJOhE^8+H`QGU^Uk8!rTz&sbm&uaxH>X>j$JrlA-#f|Xu?)QR zYU>a0H{Pe`FJ&Npj2`e=6@JAt2Is&p?qvDv!8_{&q%pkaRvReqD^5Mu>c1TEE0>wK zgWuD_ARB(J?yu_#zu+O;u094!_HFe$wjOx@@Gw1K^)}@BKGWvwPI!hcbd82@(!@@L z7n@;urow;LbI5t0aIbY%=M#uuq8rWT!24*2Js;k#mGwclDJT0-Y?t|R#CKF6?+5-` zA0X&*Lo(0qmud+B(s0IvIc30(-r0LHuRAGqM4s0kwAX2hm6eR|THc^IJadvI(AU6{@h$b>bKc)u_8aR%CFD7%FO=wVZ8A@- zMiyTK@xKo+s0|;W&xISnN2va$@NZwR`gMD2a=RV1ziNZ{c5|#h9pIncV6MYhGSBvO z>%VT-OZvn+ZCt!x_bh!rsNp5!zc|lc7ele#Z&z8KyWrF2TRr38BXq;dWcWKvEkEze z?XDlJcogxIbwA;3c$yj}PS)S;bvq97dSfj;sGHXt{kf*h^O3I4Fi%H)A&+@d^+07_ zw>l^d?b19ks*bD7=$M_yPjxfH`5Q}6z?Y_1B3G?{#@R?_>&aar~^yXGS$JMB* zIj_h5b+2vFX8C{DtEXIP_3*moR`rwDEkD#70$#Vw+iZC%+ioj4?{oEeM0I#?T~Oh5 z&ijtFJiN}?PS>w^owMw1miQ9nKmHbbUGqBUElccm!RwrD3avl9&N;1^t=n$MpRONp z=nZeF12V63Zd+sX!t0!0=y@i*&Ur^Q+i#3T{&8B*_re=jFyM904*hMryw17i9_vFc z@@%ee@pIwRbb|)3b8b1y`ors-Pyb>ojn_FJxYp)nE%IMi{}KHP82`qSo}`;F^&S)MBB+gHnMUii8` zSNGxAfAzopjBl6w8Sf9r)qd-LkE`ni7Rhm?>wBpj*Y1*5C&yL2gAIt|O1;{g`Zp>G-bfV~;K(R3SE3wXsht^PLfM;|rdeypLs*V75{!|%3r z-W6Ww74x3(Q@%6k3;*ps8}C5)Ywc{^4u$`y`!l(JTc_*rV-SDjjaJV@_(8ocrogY! z@#tar3SCE<1+S?u(9DLx*bx;2rh3>UQ|)Gi)7x4=stO!Mkn)MuN$@MBmbm<_WErCZ>jGsUJM_o&wX0KPdeY~xeA`4Iy=Ev z=sY|JUZC@<8{s$VJgq-`#cMXPwkrO&KR;T>FCKR;yvq8?{qqJ1KXU)u`M22Xj&;6~Y3q>3k-n>Ji&aq1-0$smT^+t& z7bJKbNx9Xw%j3u>-Jize$n$!C*9`gd^@BVu;HMsC^YZ_WBf9RV!(nng_tys|*CEf2 zQ*FH6;VM19~tPq*!IUS2=N)-&hjt*O=ruAiRz{vhY2S{KXDc^O>I3gNu$>TLTN zo1Ooy=X*9<9-g0+)fci^|KMl;yZ&oVH)s8mUNL9=DZl@B{SAM#{RZo=Fwg4ey6UFS zcet)<>ONAgtAdxT9!0gtyq@F1b(L4y#>MlK4W(^dJU^*$zs(5G zPo~VXI(uSWE$C$R^o1|g8=Zmhf(4dmDEy%ttR9}9G}7nhTqj59gH5iJt8{+|%aSX$7EZF?B_Ur0Ly+3((#M^tnskrVLzYWV|`{n)ADUyv7fg$ zwRrZklAhDWes)Vn285xW?noE?vmvac4+v%ikUIvgc>3zYl!r zQ8r%#;E(M4@BP3ZI)S;J@KtZ!WZyLVZix&G&WW#i)dU#{odbN&A` z#>U$W{Xb5xJFfpz^qd^7|2eN(0`5;nce46yU&yLIX?T`S|8N2&)wg)b;UkU(tY*p z^Np9=cG>6e7h9d|^Q7bL^~>{+^7=kzPt1Fp5|*bgywx=8|3G->6Kn>D!oSdY+6Z`V z9Rn@9OUA8%yy@*(^&eZIdLKCG_AZ-MWtY4f-p z{;3Wud_9i**W&qlTy)SP`FgCa@3ZsuxTT@RGyjw8OqhRIN7hqHKRnC$KKh~_;}`yI^T_^;Ki4v_{<$yycm21Qws~az z9d(_S`>Qt}vT<>Lb>bkahsTAV-Zba_>a@}3++V%Z#_DW=^;1DNV6s2gTxi1nT&^3k z*q{FD1N-xUK4;|oR{g{BpMiSD^|f_d6aIn<(QYWY{~2_Jjf?efzSWK|tUqIett-}F zQxC9Y{U7W3x~zX+Rof!x_Y3uh^SkXf+b-vKc#5rC&TqkKmY?(cpzd$v{66uj^^Nnp zd$cu@$D?BU9GSvP_|tSlAN$`@=XLD=whjM1kGEIh9A`qj3}^*>afcXR!JyWL(FT>qVav3j`vAJ_LLcs};bSym^{ z$IiXkR$x!eS4BOqqc8lZS8ZGa;k$I>;ZXRH0apJAcqct5YYe=+?vt4aA3MypI|Y9I z^)~Mh!|$GE&hxRJx}H26@vnSq^D-AcNyk~9kA0vU33)#D&kMGmc|P`|K1b&HSmo=j z|8HTt*FR%<-i4oVj=df~g#Vx$t~bMv()}b`;g9J0(hm4ieg5?me1AWi$35^ppV+$k z3%*UCTk-R$wasl@{C;j`W6Q(u=METWiBGa&Cy$$_>2qp+KlhX|7HF&GfBV(fbzeI7 zCmnRZ1otPo18l#_{mIeaTW0Q0#?`X^R6!p`x3=+Chd*B1#>@T5g1>AXa(|N1!s59< zsaeYEY=-=mX4?910l!q=^Wy%b#{Cx0{mB;n?ilwcKhCsu%l%2VJ~!`)?GF0L>gWFC z*d5k4?oUoS+noE87VleP?oWR2VDV$H-7dObF%f?2BCDV4ZtQg zeIJwSdE?8LpX<3>4eK-4^AdeuhU@ubUH9O6?x6>Va6Lb&_vu{EA8TA(&l4W8mB96| zS@(6Y&-Jdd2C&a#bX|gd&YolAWuIs1{VDrALSN8lpYPpmuXpx&*E3cR`@Hx`bN2a_ zYiymc&!vvC{Ot2F_u1=(eQtQO?QhxVIr`of``l9x7Uh1UZ!z0Xa=&ryY^$I9jhj1K zJ=||p*B1!5-)Na_dAQ&B@Esd3_Zxq2vvoVs{U$PE51BpD`aBDH zwv@2^8eTI0!uu`%T*TMc7i4)J(x964Z3*HpsbKx#c}VN~ZM>@xf8*`uZ^19xVel^e zq0Tn058=~w9e6W*@MTud7I?nqaXb9zYptH|;p_BV?^{cyZz>INK+x2wL8&HdZB1GZg`cel=GINrveTO}Ot+R;`x$9wm5n-}ii zj(g2sFWkRvIL+p_8T!yp1LFQIqm0#m1>%3-YIR->uQS8e8~eFKKg7X)ZrAtM*w1$^ zwZ!b_zLWp^cyaAStCRhl+{EH*pw1JtBdHBvqA$ocfbZ59>6*f`bz-h^ll!a3KCwRV zxG-j)b%viyp0DRZUx)mQbR6ssA2!_Pw-3DFKHDxom)vx_ZI}E1+HGw8@N>!f_07j2 z|0}=ScKNyFGF|6+2=TYQV)6W3^2at-=WN8EuJ2jTga6ve>R$x!spnR`0$-YCVE@(s z-tVkPvHc0x;jFGD4*v&Shqw6s(#YSu(15S&543;gIz0Ubi|6aQi#})M>w2MnM~ScN z?panRU)N*rw)Ni(bv`=Y`ri^ht)V&l^YI{iy|6!>%UOQLU#;tYjQ8(@Fn)x7=aKR6 z=?kyy|07TRcb%`K*!pCiCZ}4R%=7vKw%)iu`Sl8051hwp{jFh~$BmV(Kb*&uS*m>jT$S=K)p^ z*VS3aSZBDd4!mb|a$VhUhUMY9x-P>S#&wl(g7umGe_-f;_rG?Yy}sDDgL-}o`?jU- zfA43GSZVceUaIIps?2}%b5N8?&(Q-#M!?^=!}>Oc-p=|k5q|lXmVXNTrF$&T!|>-|K+^e81WL|EPP*=q!^a>^8W&TYv-$?lNeA5Q4iq1b25! zkl^kXEVz4ccZcBa?k;Cuu6ph{-~MKPoS!Fa&B~fhrMkMhy6^U$B0D+W+`B{yINmH* zQ~o~${mIRdC%}KylRf9a`$kv!hJn|zi<57HXSaRY_sMfg|5I>3+pqWP%7yL8{@jW; zwkN6Vy}WeDZ((nhOBV1QwhqE|@FS7ct`>rP%~|3lz(?+seqZn!JJr5%95>nyIM#%G z3_BO!06fzi>1htWZYWxS%bg>wo86Ecw#%JITpOCty4?^ z?{HoIVLLFv*0~l!K4Mpa<=~Ic%AR%LU-wJ@R`76>C2!&Gv?tffOOW;b_-Mu9N$BZb zQ~ED}r|%(t4cy&B<#iYQL?7`d;FSt0&RMTVy_Wr-ApdN?^!x;`GgNva>d&0~w%;y0 zV}Mu4ru@bSf0$j0lYuX{d&Sd$--@96m=U~pC&i~N6FT;ctgUt_ALKm`%KjqYSIfxG zQsC?D9B4W4;2X+sRq*rHj@1E=Vi#OB245B|Kk(lBPj<}dXTWbJSDe@}0LT7tc9G9b$cNZ`$OG_~ucYTW z_?MF6w!PBP|24n-`4#eC?S2p5d*5WE%8U2j`(;(WY+2ONAIsj&;l1~l?E7oW{Eqw! zyU52=$vFJSM8zBLy^k?e{U817Kl3nyiiyNRyODI6{GihLM?S2llN4517Z^)MzD*JuG zb6l5x_Wvinl%LuE-xg7N*#BSQu7Kir|HBw@`ah$schmn*?4CXPKkI0fBmMtzviwQ? z-!8~M)Sqj(96R&ub^@#eb)Q~;Y?`!YzQNLGy`JeIQY5Q^+KcRcr%;t%>cf^?m5W@p4~3+%L|@lmg*hj zB-dT#wwuUjPjjld7t{ha>b&F-k3X%F7FxZG!})>8c5Z7gpu8S+XrRW*E;^W zR!Qal7V;A>s=j{#k3CoXH~7&5(qqG2NB``#s$a2WuEXowJ6Q?AuiAYDDZmri{Rtl6 zYwUgoFYw~l56KC>DX#3dWnjmi)ppLb805#KRK9$`bJ+ZL1@K~TC0`x9yN#pkflsn= zM^o@zA!_GagZng-<2!+W?5z0d2_AX4zyR==r(|a!_z-&!eKfd--Scl@=lE?^E$NvF z`Mb$f?hC+Qj+T4~__$c&YruV;NzZ2RIkwM#C-^FRA5DMtPye%O4b@Y&|CNTzZ*2cp zhEtrd{}8*YG_(KkcB;z76ZK+?pY(Wvhr6owko|`xLnO%l!`u4e{4VUcp!UQY`rE$| z_XYQREx`W6xr^fLKV&WTY(?>DL>eaYGO_qLBjVnKeh-S3eQJYG_jFXN|sI|Ul!XR|q;@iWOB$@m#MOL55f zscrpCrt9)2({;^@GTq-VQ}Ey8|EaBSQqPvI$}jB?w)-b(|1uBNBgTLD%WB6M z|9(+bE{y*YcK-(B|DyF182|6CDZh;W=C+@oe(2))@8!6viXwEu&j2<=bmr+A?KS!^PWdfMCh zChBq3JIa6mB|lJp{$sTpOgFy0H$lI3vk7d*+urAL0OKvf0ddA#wn6_MZ|iM*#CS{j zAMrEa-c4Y>+MkvOn6Jf^)ebXXH>Rk3nXhcCWhe91*XB`~uR?ZTG3$}{a`~V6%3NCh zXFVGJR`z%!u5NV{=Xd1cMdgd%kz~naKffbq?Yum{Bm1o%$Z_acdsoyS_Pnrp>~`Q6 zPb$A%!0TJR=mnnWp6nk0zVNH;4*;*!O!|YsUyheQ$AjN*E&Wr$XH<&zhs*{qlvREX z2H$J%J%xY|u=f^MgCBbu;SbpezB{+lk#zFeW zOP=ePaV*|At~q#A@smKs>DW^(yg1iErn$@h)R50_`w)2VT)w0#-z<<{RbL<%c$&(J zPmXu;j*&gQckYDkW8wP94_mkLgZ^jsPDEw!eg2A*n&9`IsveoSj(^r!JHT@`EJ*9Q?Me^V(<3(UZJ@;{P+`dwf*A z{s}(b?6Kn_jvgOdcZ(r6IehIr>9K9r4$tnVbdy2e@4d<~4S1L>EN27{A6fC49sIMM zhsp=;zgqG|!1LHS`cmM{Hk+FLL1 zndN0?PVnp@@<0Lbe74`F82FM$@|zF%#`3bi0(hf2l4t*_l=UC#K|Wzg+1V6)Wqk40 z;M?tig-+mC$Ev(~f|vcM5@A1T%2w$Qg#4V`k{=DeC$0QE3A~xT^EDHEb$WpX;H{U) zKOx|S?OmHS;Cq@#elz&tJ@Wrf@JCHlzYc(B3{jl(e)3`Sl`r;-eC|q~^`-DU$+N!P zStEN`Us~J!fvhiu{$ri1-5%-pg#CVL1Q_Rs?uh5mFQ;A{w0B-;|Iy?sciKN@mN@Ny zFjk6bf3^K87mkm%TgQs_ABrJ)+F!ndETsKs?cR8fk2(iSp5vq5N5#G2hx_*anlE^d zVahMZN0V&5hV^%O2h}f*kDg9aym5TA+xBVuBi)GhZe2U@7GBcR1$=~^$LR&W;J55& zy^d$^mFm4)$46BTNDs$HZAQpp93Snm`9O}33S3cK zaeP#?tLh!cN6{Ckyf{9}Ve<^q_D?^@+s-w!T^$iil5AHq+d2;0)#SFG&USTIH+`3x zZb{qV#&mc0Rva?jO4hD2-AbO)&vd&zke@vfpB)CuKVIP3ti#LpJlq(`vpvtaUkccs z@9C#FXM4UWuDCDKEj&m0WqY3KkvzusJcT{<$M(E%3B?=R^L2LLmp{^tR!Dwhd;U6+ zco)c5%q;zE&->ZF9k%DGUMs%=(33I0^s_xL6HT1$`Raqx!}k2zLDfgL=d-L~V0*sq znEV+6d!~+)|Jj~Ti>&;zJrBQ6cCtOs6;1ltp3nU)`wt=Abanwh+w)P!We?l)Y1Z(t zJs)oS2HBoR`XzhrBi(rM)UdHV9}uiKXM3K^O?ud#-?%EpY|j@IR=Kb}ca<00^MXw! z&-Ofj9NEeCyi0zi%l5p34anG@hux7p+w+tW)PAx(kH1po#rE9I8fLcV8`3Er*q-OL z`B=8+y=N)EY|rlum7m$3yV@VN=dSjL^Ifj?hx1*o_NSHH>U`H+?N0}ASNqcq+|~YY zzRT7AaK6jc{tSa2SNk&>+!ZGi!Cm#5^Ihv~zXa#IE~ZyK;(S-ct%?WEceR`^z7FY* zKc@293O>vxDt3eSzpQvT1fIwgoCLo&MCE<~{BkVWa}E4(BGuEo;4d2~o}Ym4*eLKC ze3R{4`vgAI?gQccRs8{~7o5L3Y3D#We^uH1$@#0Awts;0S6A$u3+J!W)Kk7Ve^oe> z%7yb+C+s~(&R?xbAw8VG^0517IDa*Mrt-`At7cV{F6XZ@^ijEU{%WS}BWf&lPQANm z-(Oqqb@(dlzuB`6ze+>*w1w zAC7)+^S@1_JKU#^@^uq>X2(>$djQ^QtlF99;7>i|2fIei(VxKHulx%6S$3Y+t_OAG z@9&j=q9}QX$F_G{Vw2yJAFP>h=Fc3{i4 zgE&0POxYuE{4?$-Y!iO$|F5-oxY+;CVf+2q|8H##D*OKhtwZXmX4J7~v~Aq;0{7dg za%BJiYZ6(`{{OW^l4t*avYqGkhW;sKXI;?i~$4x|wVpGYI@+UFm24Kf29t zu>YTBoZ1ui|0icr#R`W0>$XoI1pKj&>}UVq?UTxv{r_)yR3F*@|77P)*#A$~SLJdT z=`OU6^C|FkY2=5C;DziQ@pbTa){fl+Uz%2SJ_XNV`_kWlZ>X{WiwH?H)2EH}A; z;)MN#%s&)pp2%0r|G2mRtKC<_e!_;7(!+j2OlwaHL;nU_H}MAdcqNbdg1@%`O-1nW zwtmWTueVb6u%FP(_IOi$p2zXBa|itHSJNYcs(C|A4`Cb^;I0wZv}SA z@yzdk`OS6Cf_kRgIxO{UzpS{W-=;2;ALzFk_FgdkHpwQ6Jdv-|OQpvPe2%><%I{sE zt%v4^d~3VszbJUSn~Jy6;LobdpXI^JHy5u4{>H{H{H_JtIJybsSCp2ATY>NEBhGU} z)3U36^?>|e_TIEL>rVTy(c0|*$al2;RHMM7*m<#u;9m|ZerABjJR)G-L?_)@%@m(Y zAzx#&+JV*Jx9pwJP2eBh1wz4RSCl>b!NZnG|1t1&k^a3sS$0NtGM+>4%m0k$65|x- zjOP{$l_2A}j_o&QJon5j`x(!RCMvEN&qrd){(Q(+U_#kh1iW@s=_v&sY#oGh;JeeS zepLlu+gbYSfIm#8IAlMqsx3^lg#2#XSJMG}_5kIpJ9ygo;{CvD*?mnz!QdF)e`U!+yB1`JcDhx}cZ@=J)Um z>1Tdt+xLR)TOwDr+8rdmj0Rq*}m+L-wf22F@gY0hyp5m>_u?u+QR|@c6 z;P-5OZ~*wOq>>K+e`*bU5crUm0&EZ4mQv)fJ?!;P@yYgZlfARE1o|IZyUq5{)emR< zxBe=^_%A$1=`#M;-BqXubBCHovx5%HY7XxmKvtIby{xsH$ z=OtC&SubK7kv*&ze$B;MFT(7;7uJi-c8?b8MXR}TfH(ZGCyw&VdU4J6b+BFp*t#M8 zwk(nA3;mYzitMM~nue3#sOPW+CiOg=D8s2|!S97{(qiD`KAAlw^cmT|6iiWGxUFJJ6FzjDaiJ5v0eIDOZ9^7(y9E? z?~i!MXXlt$F5_$;FUzG>HrdZ|8GTk7ST80u{P%JhGyC7m<0!C_S}i+SF3-NIe62g;^f%7i{u%o7bz0?%{@iF2g!E_h zoU)VtT>3%&XPgf{D$Y3XVfR$fo^AF%Bkd{hK~R3BMh z_cy2?!tzRO>uW5p%>5O&T~Ll~+pBzgfp4_=A1fZG-MBMTaTNghF?J3;2z=u@`DZ+M zTDv!9D!7mBPqt>)N%xE010M|eH`Am)1pN6S#g8?Mj-CbSRgN1WKikfKZ3myQL4Ml< zUVenYA@HtNUMIlI+B*^Fz#rXGxrc#QkEMLw1m9!d_xs?HQ%e3B_zXL*{T95i-Q&k~ zij&b555FOw%ogOiPI2Uy{KIvM(`}@H>l7n4sa&{Dk;~4da-AZcy&K4Nidc5lz&$HjGu`gRW<*D0bZTW(yZIA!}SxlS>>m&%dr6!{XX{&JmSaXpn6*D0C} zmEX8dQFWN|#dV6Jp^9g&Q|yT^d9G7@y{3$fw){o^JGq&E|K~qSc1qhnCGV+hJN5Lfx6<_jpLs!svpx5>bttyyTWvmp?fEKq z+3yYgQ?1~A!4D;t{qpKR{<*tO_Q!&J#$^H=4>sK;Jt-jXn$Ph7cg^Q8-P`7PraS1A z;*jYMw{=6N>tXXDOgGvj<%|BW8c+JUA0y1(LAKAcQ;t>b9bxXr=z2#v@GS8>jM$fd_BuP%@uT1Dyh09hm1`)G>v zupjc%*5A)TKAmlF4g>FhNabkmbL#b-?h?EY`AaS2f2#(L{J_bw=QZTF^%M9AzHo}- z?K^mp4AO7YG>-n@_KF|Q&j<97{p_FQj3E69^k0l9}n(1MfsWre##n>x!@yW zO3z~O2`2??o0nt%tPPU4VSvN^T1b97^o&z6y6pu&X!qr z`*Q<4r`4nT;M43N(KGOhU1g|k({b|k`;pT90{LlvYR7(q_iLpJ8d+{~^t5XrL7Q%H z_^N@Dw`UF=-l&%3Q$UZmoulypuX9QEc!8JMrFgJuK}UZ?d#|kkF|nAWoJ|9Dc454HF)Q2YCr9H6-Q6R#**&|`DuFu zZ2Ph!f7j-(0wLc%z5F>Eyq%2)CxO>0s&cerU5%kPowaWkbNn*t_a$z!UjO z|7P$}mhMjQ8g}mQ0C+p=&mRYG?xS+FWq8N_4z`|n1@afKs=nL?e`WW2Jp#`(Lf|EM zUz->G0G{05(f$rT)b4k(=gA#A<5ZPB(Uc8`XLu;T#RU(t{VGYoqc>BW+cgA^p33&F zL3+q{=^z8Mg6BytkOw@Y-78|p_8k35XUcwW$j@IX`^$n?86a-O%Ed6?7BdQ zhsKtkU(jFtoBVIv)ExP3b{|?yRU3!j7$N^ywQ+dsMG{O7`2wFLZ`%PK`6e3`hnXNh z!S-+D0MBjbZSDCYN6+2T(q9zv2kcy1Y4CG}^Xdp&GXcSp4_A5 z&nD!{rKc76^BV#k!Pi=cq6c_KsdwuSe*LlZ2Y^p%uJ4)+za9G<*?W=J-FJA^rP5>1 zt2_L)#m9W;@32&UUJ5>Pv&wNb_%R!gZvt;!U3x;n3s}PT{F`G>>0&a-j?+8*igj$y zLQj)7s;6P#&+LBATj1M6<+q36A0x{@FTew{D}LUC$FdLIH}Lz`-wtQx>6(Xp+Ff== z1#kUb3T#_|liw^!WRG3{>hM@oHWycj9`Eivcm<94>Y6#f#la73~gwj(8 z@TA%aQ+FOXW2d@-KP`*z|-WKe)f_pAGp#9aX*y!9P?`{4WQ; zR!Z{gz{{tSJ$7BVlWtdA584g+ddubiL*PNDm99<0IeJ3vJn03<*S{(~*TDN&eBK2w zkWS@d&wV-iU)edV*N}f>>oT9f7utO(_MDZYXW|N#uRT}h@NuW){}`%%4v%94bX!hv zc+Rczb27-+wEMc#fHyTqW(2=r=jgM8KX0fE>~YjAYan;jx%^bZ1tB~f;X~*vmL-cCY9f;nRC*OWBb>n1w-Q|*)dD#$0b3oY!K1V{c( zXX)7i`I*yHFYNj!NB(^Z3EHuChd;LotuxT`_?rA<*TgvT$L!utTMl&iH#>0f0D6kg zl0DDC7tWUb@4(${0?e9YNB_qi@{gO$a(FJ=w;2U|z3rcj4IW_kSKD@5N6&AYm$PYi zhr8Rnkaf!(KJ~TivFpYh-p%G|b0OXP{)&@=;5CxV0mZ@J+B{Vm@T*N#e=CBATO&{d z{KpB|X~*UrJ5NTGU^B?a36PyOUE;_OyDY)Zke^UR<=6{6Fpb*7f#3lL)NTv|Pt#2D zW5CnZQ@b%4{C#-&!JdnA>^x!n_Jbjxf1UER4E*93`F}0=rI`X-z*E(cKW#e9Nw=iC z>^TVe_6KDD3Gl|X<%jd&Ij>8PZ5wj*4_+=m-+}y#ast*(cjS|pe_la8)cTnp!AD0_ zx~*Hybjl76nMCTb(jb=9agq2-TsmtBlx>|YX0Slt2xkf%GPBT zfnR$o`4!-&?cSL6;MeW_Svxl4EZh6MQaETLr+axfIS6%x`Fgu1V6P+{5p8H zE{dOf;5lp{^%T6)T*=$;%(1^gBQ=e5<&Mq;PTclr|m{Jjgme3BXqx zPYxc--fKt;K6A0`&jcRcKD^c~cI-*FMt0_heAS-HP*L!PKJtT2Z#jA%+C4VqA)nRe zmu#5i$S<`4CGV4Y&{Xx>ntMmSa})7a&_Ab>?6Ky?k&n<;e&BsFF`uYD+ICDwJ}kQA zd7sSORQfKALb~5W7Nwr0G@;;g3Hcp=pJvTg*u1#Y(_V`qnp4E_VZs+ngftR&~ zxKQxB2lai~51u){@^uV+xDC+Hf?u_JsKUV84i&KNeUAMtmPr3Y$k*;E{sKJPMuGR> zZ_Lhb;N4>@U*S~kopjGmRNUHeR)=5uBpwIyFJsEjiNRyoMUSb#zdV$DI`HV$Z!|YK z=`OK-r@0}&c!umL1b(@e;@PIT9X-FYi~BRrW?`-hg zcJ6E;c*Tpd$3BNne%srC*vxWxtxb}*?d%RuVdraX8Pee=Z^}Q1knUTX2s{ZsV}$Z+ z&%--pVF7x32Tx?BBZ1gR_6@IuG6p_Pfr5vw!P44;}z{*Lma?4<2K%Y>0#W)+aS)k z?O-1k#%(>jr-E@?pqAP<#_hgjDlf)uh}|2*xQ(AlCB?XXZs#u;x3$~Kk&N3@-_;H? zZp)h<#_cg1FK}Ge!tRmaxGZH?>7R{qyb~;c27{m4EB}OmXBesW);`-#JM+ly;ok`P z@9v6E8*VxB-|W3kj@Rnv)_3+0^mJ(|eggcW-A{53{Plm#Z)BeKIvZ#d@^vy8Od>^f-g;XFZBn zOZ@+;N7-e65d7frLxAQivP zMFOwEbGs=XK7!YsEB)WW8>Uo#!>QPucBbZhWh@H#k!C6{?i+8tP@MB5hiv~O_l>7M zsQBl;@vcK;zipRv?D0;Zc+LWQN<0&{>xvxt`s>Ac-Yuyuq;UQu(J$Fk3i^N9LI?Mg z=eGNfDnq`~Hlvtg%`ufT`$Gv{H7y_14{(BotGjvfK;>ZABP1)kFGO}zkK#Wvhs1+Oqz z`MM1rQb=}ke&$$Q`PruFoqSdNOA5GO{h@6<{0#ktED(Nz-%2b0M^G}3{!TWZVBzcV z<<|eZRB{^(eh7w2=j zEtda_Lw=_<7(U=tZM~^H_}o6Svnu#NGf=hZpKdkTajq**`%YMqIEiXy- zyVlw|5%s()E&bFp-ZmOjPo+S$W9+}>wfA<}e|y$Se(+Q>PPx=PB|To?H&)1D?7tm- zD9hP@t2|nMVE-*qZz=YMesAmN`+^rsCOz!GW%O2sVE=7`Rb2Mpo+OZB_TSb#lOOz% zZm8{BZU-Lopyb(qYh>%%?7uxTzp?+e@rmpYfc^}2A4m{*<&^R>`)}Ld$v^DBHMVsJ z_TQ#fRl32@AE&g+Hw1ioh}wVl-|n7Ny6nGIwf)TOzpbw*``Lf<7^egeA>F=pRo_p5 zU$OBc`)}haOYjQh@9vQOx54vwR(>CW-?aU%FTpG2R=xNDKDev=$$r}VFtvMjOvR~R zL9OMtX!%kcB|Uk-*DO$++vm!$ z^RE}O$Eu&h^NyFF%R)~r+knh|SHq}E*N#g$dM4StN<-+WZs$5%fFHIB(GL7sdf9Kq z<@Gnm!uYdjLyOzqngZ#d@&hJyc_5sxw%121Aa-{sLX)=WJ)ve=6 z`4Sc6H_Df5CP{wpvP4q8_`NG{@yYMq?){SYMEz~uUiN#Dcb7cBca>~|GrxC}ZT}3v zcad!)yf^eWTPolS{>b(p@_V;&p8U`6-J<1E!0+9!vXbZb?rTG}KmJH}{U+tN9e5kt zV9xJd(!44c`_^Hx|;(bzOk_zEWP3{V5=S*baDkfQQ+E zC)!`f_G8oj{I+qG_Q$e=K}n&%&{X+9HTWRg-} zM*CgmLiw83@1=Z|Gl~<+yXqt5UGLOj>zq&a@VnW#rTkBSzWe#_ z{yb?LdFaoAHqStR7O`~=`tzCHZ%=<#36g*4&%Pg&U-~oc4_Qusma=gT{aHVS_!(Ch_% zaH!&E0QkkX(jNfsyG;HM0-yX^?UD^Moc_S`@sghk`7k@5I2*k0NXZ9-XFDSh0=~)i zBdrEcHeC7QxVz&fmCJU>AGZnDJ>bJ_BL5J0xs&qG3GkpQsxRljn;e#Z!ob(s{_30H z3GJeY2jJb~NzZfeXLe64@4fG56V+cKe>$W5>}J2B|NZYX|NgIEd+Cn?-qt3_V}p;k za}9~Wf7Vv}oDzIcdKuygo@>AAU1spwzXWoDpRsqK3WBe&`O@OxQLViy1OB0r;-Mn= z;y~5Y8sG)P32?pRZ9c`D9T#!pe~9hFYy&+Btex)+e$w_E^a8I{Oz}1lyj&EO7uPi! z7L(u@$Y*#g|6B5oogM8SfLV|q>M8xf;0|!VxM~{~s4B~euXofWKyOYrN+48${-qr!rLBDJNPZn_3{-507 zuKhoSz+Ly_l>m3$kLL@XXQli`KV)mE_@p2Du2wwL4|NJiG5s*_nKaW6BQr?9C+x{= z=YqY!+kaELr)c@7y!w7sI}i)Avjo)-R{t&9Qw!Wx)$?mS-x1FI=LEUJLy4Z{@2Y zcq2P6(*k_^62)gb@YTlzx`MZ`ec*k-_u09d!QkNIEt%_ z;5mm#-pqCUP|RI^y9fE^-4zc{!SfB2{XGBDtfcs7$j82^bb0<|&R+3Ia+70E_W{zw z^Dp;nOE3ZCH}{a8$-z@?l>W5f(8T4Iv$_D!znp$4ds;z0;cVH@^Dj|v$v-_HpUND}^Djrs zNj?DbIU_ia@e%EDyU{7Y2ZAGI3tsgFrN&%ewV zE&begF|NDff#+XdPFB8-L4Q8m|8K))CtsB($<8py@0z3vaSJ?XvC8)$_`F1t=lPe| z*51B{e3-QZ-@qf7;&94_V`nS7aEs?(+C-EexR0W{bqsm_CHSo5dH&`7Q2CkXU(#C# zoabLoER{UZzmy!JxaEF{TXp3ho_~3;P4YbdlB=xh1<$`6wtgwkzg%lBNAmp3l}d^$ zn>KR%IcTsP%=0fz4#_`V;D5K(0zCgxV6NhU=U;x_wS#78qdFs zNvQbb`Ilem5b!A&wuGCsMw6{w1WS_+6yiCW|=FzjS!2bYDY$l&ur-{7aVHvWMqiPTW+!c>d+$ za>Z>76|-ai?C#QI$9f&UKAh~d?y|%CHdS2Nwl;^~w0Gh%LcdQ^f$ZS7Z2x>d@F{kY zUJ>yA^JRZ2@I@z;-*Vt@twUE8yqxWOsRRD|nLuOkd6iWkZTRHm_l(Uy*l{C=uk(_f zw#@19c-Hak2mK@MgFh5JBt-FV)31)6k4MBOK)%X!mCJN+_lWY3Ei*WJY9EoHb&DOI z&tLMZpyy*FfsNn?rb*tmgE)G+`73_*LB6b=vpWj@vz_Ab40vxF2wn!?-%NhK3I58) ztq;Ig+P|PGnJMgY~ze4toPesTF z<&ix#z!%yEjr!n=i>Q9tHKUGyYS=||Z6F_H-xs?!$dTVXS@oh9T`g3x3$vakhYGt*H3f z1%7{t>^}&8W~cO@03R1c_MZoTYWFc-1)pg1?RUUy+Iv!u!Q;%A{#W3wN{N32FVj=? z@dtP{o6oW9K^=bFjeMt)5&|CJT2KV@^dXxb?S*ZMP*DgEy ze;1OxZR2owxA)?Op{GVE#eYfg@U;Z|!0()tf2x2VoFqN9!4uo}r4jh8Q3C$p(eewl z2Y}PeZkM!g{DKm@7sIXBf*cKQT-YZ9$@ztP6N+t@3z}<4#&@dCndNT z^3N8_|2Eup$yj=ocwLyV@ z1N`%Kaa-ne^ndeHx!AOa53UGQ2k&MV*46{}dnyMv1&@tcP#|)LPUDM<6k{`rv8>_>!+I&$6^w+fWr)$8Y+r?lu zeeCFIkWBgA3HhBiUuwsM9Qk^WC3qb2w`V9$?D&c!U%}2jS#dgiYkv9jHuNNqCOwb9 zeeGP~OYot#Pxu4)h9An;ckrCHZfM)$9eaB2mY^l?@Fe{e&v9jz!!LbTJxv0>z|Lv9 zgO9cQ3~igKqo=-YD98%=J4cmn9`Jd+Wv6X-cJ$PmC4YKD{-RAt*meX*K8{^nS{d>| z*59^kM;!Tn2W3w~$j2=sds=}1?63M|*Ht@udfP-=SIB=ID*O9@@7SXF9}FIAu;fR8 zAGZ$9IB=gfvVSW0hI#__T(o0n-p;ar5#+Df`MVY1KKs>AuxSxT&qZ4xvg3IUzhMt* z?SY;#W984o;6)#bTl4McS=&PCUW9yk8;Dr7apc!0Q2S$_TZdanBRj3S zI`Sb=6`!`8;PAb-Ddl$|5@+B|Cc46@nRE2lJ}UXB;F0c0zbzj+@o?Y%i)@MRB`u3fk7*t5dUxzvRG5u2E40G{@a z?6Kzx96htziQ92RhX*y0f-cY#5-7j*2Cvjoz@~8>J$DbN9kcCm4!>dhzQ#h&A$u^v zjuSZY$-66ETMl&i6k9*CWAhHb-AnnhYt|k9(;hHchjf$MyDD43t2dUO-QZC^DXtEI zXN@2`ZCcq$cS{}By9FI*>k9)K@MAiq5a zf3#bA-huC}DLr4o6J@sw7eo5~_s{>^2iq)6`HBL*(jL@`4gSt1-V%X7whIYTf5vX!B78!97nXzs145?Z8$U@Ht17|BB$RE!`U6OY17$>VuE5 zeIw1lM--4fZNRtK0IoB5)M2WRy}-TgeW-!p9c`gz7n<8-=tSLo(KPB3!YcO z=h-;!4tP^rn0gGp^RCi;1wOX2_($;NRpo~t;JxhtZUoz)>8f{!FRA`U2Op47dg6gs zPbZ!fykcwlAvJiP?&2B1pV)l}*}#_!)ORW`c)m5VvoLt~Ub3eoc$+%ne&BDd16T#T zexT%QgLj^*xNQW!)8+&H!ABfcy=xDi+B)*xz^}DXe*1#A>MK1%z!TVaY9x5~SZY_t zga2jgzth08+dDpU!3TS*ycUCB8zKEG!3$-U{08uHHjl9#yzPCJ<6dyz9BQABfakLb zv(w-w>|F3A@MJ|*jyJ%IJeHsDgCDbV)6c+@+dRoz@Z%ox!x!-Gc8>Tr_>yvppU74Y zu6nonwfZx$z{_5gd_wRI_vGgk;H_<;#sfUT63Kgkhs2ZpIl;RZkbeq*k7=%QDF(jK zUG0w#_~G;76~ODA{OclK!mV zkL(~q9`NVS6c2xar>vs#^#-3>L%b|_;4As9GI-}_@=Go7oVMY&A$YRGik}wXpSP-A zZ3jNx=Ha`7FZ(V#`+&dAA^!{pFSu9bI0C%LL)kM9JoP8V&s6YM<(2Ln@G4{FhehCF z{~LV#{j&mmOKa&_4<0&Re%J>7{+s0Yfd90GzQf=%E-QXcf!CQS{TIR0+WF1v;LQsu ze(r(qvwbN~!QXe3{x{%P?Lnu{;3I7T{}=f1s*1NrwvOtmcfHEWpE1GH#8bKnzTbwf*-SfR3`8twh=D}_%2(R%?~~%v+OAf{-T27ur&B~YyZoG_em`IYTyO! zeyzIT8{OrfCg8nny`vTQPdjhY5xhue>FEJ}$;KD`!ME7M(E;G4w<>N&fj=21{S(1M z?cCxF@O^fGV?KEHs;cix!3UgG`K|_^ltA`u0oNVTRQNLqm^zJ@S5Y4Zf@{u$<#g+0x#WN|pv&@E#52pNQ69bJe>pwyqijJg=|pi4Q);_BkX2?~zgZ(}16wBR^yW|85(OvV&K) zeWdxoTiJS05%8|T@_#AtfpJw{<-n`h{eD%!yU&*Wb-<6-5N`~g-yRZd2|l5%((M2~ z-8MFM2hV#{@!1c&XLhv%L%|c-e$gQCHYX%M0sQq+@#)~@n##_3;9Z9(ze~WAA5a{w z0{8GxoNNSlAESKj0N-~)@vsm4z;5X|3Vt%B(mey7K9TId4Bo`{`P>ALc3Ao!fKRo3 ziO<0UY(wrl@UONo_!azi6WQq&|Ns21HMfHrQNXtjQryM{FI`H1p9s9VZG27%KIgW| z%M*Nw9UROI9)6Ylp9}n~tq&Fi@6<@`e{t|5w(+M7c)lzumx|y8J}6%`!28)cSAFpK zofNmtz%Nu$T(tqeW%D7O!P766o?hUM17*)ZaK9yz9|oSVrSdffyhQ=|b29jPyN_ZP z_-1RDg24wTRKAvh-?Z`mTJTG$Rqk8B*G5qs?gD?>RrxvyUbMdKKLOrxsLK63_?p~` z+pFM{U&^0%z$${l&&B6 zH0z&N0Z(A_fwjR)*hQ+1!2J%%9)IuwzVc6d@Q-GHH}Hg+C#BC&a z^WyT`c<^eUWzRJ5sP>NST=3r&RDTzPhn7%&SAx%6C;c11i?x;fcJOewrGGDYEq$7JSn(<@XEtj-itO4gOb3 zm2YIbc*Rxkt`?U4vB0}5QQRg3Z`(=wQ-HtBu6peOe#|x!dVwdut#&UbxV!b+3xMCX z1D(adC)$0jKH%Zr$Uhapr`x%(>fphauX^C&Z9bWNcM!cdly{wYg(Z46%G7F8l@W-d|7GvKM8o)KIwM{_qBZ>>A@E_Q9G6u zJh|B6^>Ge(?WfA`BJe%c z6eladQ(F759z6a+#mP4CLto|pJ>Uf;b9kK(BvP5^%MjQo%s z{8K;KnHGG;N|je8@LYCLL=Nzuy=7;9@MH(Xi-Kn>rE)9{K52${dGOFZ(o+q5knKaR z3!cd~z%~Jo_f7g+fxkRk0}&r+3FRPX_N zWltRNS$2RdF?jYN(vu4OhP^wJ4!mz2*`Eb`eqGt08@!_JPb&oOe_HKx3GmKutGnP~3l!&1z=Lf*^EG&@@ABs-@WytJ@lSA% zcAbW*<3fXBKn{Tacx7uNSBJNTHblFtX8 zdxq>U0)Df<>?{Sox25FEfj?*}zf}ca8A*ETfcIW4-WYsm6X|IQz9z5o)d9T1CCPUO z4_c!5?+3onE>;-|UjK;VFbMpjU8p<(yw_rt%XILa_vPn#;HR=mehK)cQ1MmZiC-yS z8^JG>SH5Gx_BIo8T?%!2JX8+R3H=Ir#DJ zD))Eb;TtHwU%}hBE(A)Ze|Ocd$1&x%DBvl}NPleboVHIs5qOq`l1~X9yQt#a6TERZ z`8hNARJ*Su7x)T4*0e8Qoa_6rzdxRuH) z7`#SZ$u9#>yjgax1>b#NdbWUjlu& zPi^pm4^&=_z*E_~C;s3KOUlpf!B@|ho!!8%*@6DP;6E&1L%@@MmpvoF>)S!(@!;OI zBtH%O+$yy*bHQiY1(u7!3qF#6R)XiAru=RI?-ihQw}U^6Aw7G+_Z3uobp$+nY{{Pn zuXIvzatS=A-S>C{eBvm@?S1e?e~CW>Z!lf_EqD_Nj!Iykcx~;*Rww3-);P1cxpCsVv?Os!N@UazTe|qpGc8)JAc;-o}M|r?I zbx?hAtrNQJ4_hMr-jMI#Ugc62JZB=wR|X$z7lqaWk99}+Z3v!!i1f4oZ)xWy+JP^# zdndYr@7kqu?*ksm_KOY%uW0K>Bf!6AlRe|W@0XSRQ^7a%mVf4ecS)ggUj&{do#a=5 z_w1(nz8-x37nRpG@JdZ(=N|CPb}{E+@NktB52wJd*?EeK;Fp4A|8?-{nUwB5@W=L! z>QnIP7nSZC@Th^}pTR#Rm!E%u7qtsNBH4XNuDJD1Dm^j5OLvp~3Ba%WN`G?ja<%0D zwBS?Qs=P9RpAMEEa)6hNEB*PwlYCG)76mVLU-G5FKev>8dGIH;Z>k#j&}nMN>VhZA zCi|O!Z+ou#(h5AhyX@%*?p;{lwI1Nj?ZW>4;HlF}e*k#)ILg;3@OS%FjuXKb+J$g4 zz}>UTp84PdrYgTn!KW{je^!G(7@%}Ff!B;IJ43;{+r5|j!6#N!y2rq`*!S@)_}Wym zCk*_&?GL^Me(El(O>$_~sPS{~kP~ru_B|yz?O0AI{E;xa!y03epo5JZ>cM zIN*shs9q!nUtsSzqynF4`?Au3Z}_QvWdWb?OFTDt+V1jCA@G}Cs@EmJgFi~%7yQcs zwHuYdd-=(4HNn?KQ=B&dpIlP%&A}tDm3&+9PopK@1-#uZ+1VRB+70=65O~eqk{=Ep zV&{d&g6FV{?Wce*FR6H#4Sx5w{J#)9g3Y@v2TyuW`C12_BA@tH@S^8r|8DRi>1EF$ z@QSuBa1#83?Q^&Q{=0+pUjvU`N%q_YZ&ge2@C5uXJ16xTe8E`h{{()jzsmh5_^Z$2 z5mPIDSG~Jw^TRQ~o7qK5@xgO%Ry-sFPmoaUTN?0Db{;b$_?q#`Z+7t8x1}c^c)9jU zw+MI&yJ)Huc=05PpK{=fDye*{g1_yf`dbIQ?JvnU2A`Bm@-4x=VoJUPc!T5ee|PX% z@g(05{Cf=LcPRLHI}Z{Bex-r*PXLd1O!}vTe}69j%meT7OYyM;yil<6y9zweTXDD% zyxn1y?+)-Yy(Pa7{Hk5(coh8Wakc+vz+c5woLmN9Ve@G>!GFGyJrBU!@06dPgWt1@ zmfwN@wDTZe!6QwT|J~C3pYzfG1V4U6YK_gtTsdeq7(RLc#JwbnyOm zL2NwmhS%huq~JLhDSlFeAGG?I0et@)$!7x})}fJ_QUrD_pK=Vhk!@_U%~zT zGZH+dJ!mr?Jk&1ooCcowsPa1(JWfsdXEFHV^O9c)-qX(IZ2&*gAwio;9b_wC%)4e-D0J9MAi?%{t1elD%_zXd;fPX74<-tvX&-EZ*d z)m841JydS4dRNo-C&vO0%qG7j1n+L^BPqa_zn8oRc=H3{|0L)|zDsuG1kYp-7#098 z_(l0D1|Hka+4+Fqv-4;bzyr@I-Rj^o%+7k?rTWOvO~DKGRk^eVk2g|&=mhR&4@C3? zUs_3e27nK@i>?E~AD;^UCj+CwbL0@81fDIg?3oE3ezo$o0KA5+dxn6o$R)q60Y7OM z%5DZPWanXbf@f}{bPs@U*rD(HaquMepvpP$?sm@Q3iyI5;r|$V8+>Lq`S}re{8^HJ z34YA(!T124@`(KK9enSy;ML<3*(INTq>xZpMHyhal6F!QH7c<1!; zXL|4ti&gGf!5g1ce)E8*ekptY0zYK;Hh6=_2vk1Hf~T^JoGX*t{`^|tryt0khTwT# zsk~Z%2M?5;?ZEp~mjAng_d6y%eZULbeg1>N`yG})M}R-EeJSI>i`acfQ^8+eQ#{WB zU(`|MvIu;cyX;>9elxt}*Msl>OMDyn%_H*X9`F?I%GY7=rKzOn6u5Uo$zKHjT1Ec6 z4n8zA!k>V+2mURN{O}Y!OL67*4R}AhAM7)D$)mFK7kHlwio;0h^xIYMCT5qNF~R-p z!I=c$>HTGAa_|!gBm7aE7QFsQrI!i3)IHgm1N@B5C*%jOXZNNS1&?eGr<4ZI@k9NV z^5Dgn$j)lugPKSDV`yFQ2F)bj1pMA#%2zA!_em629l;}fkND>gdVr@LE&ct$`&X3y z0PxaNrDqg)uxtJwyz4#1=M3;fw*P!S_+nd^Tnhft<^fiNhon<}H-RVXtM(@pynHjo z^M3FZV-yd^z}v)={8{j8c28p%c$dGF?k(`kMHJ@`!DHI@@dfyHFX?#?{-K=g`39aj zmh^{9uX1zMuX^^KjS7CgcEmq|all)INl#+%qHpBqRNxcrKCyJ*YwcmcEZ`rlzmyxi z)N0vN2)s)l@e<&vY(J7Oc)V8fTP5%#@fC+P!8dqIe*%m&m6$ zNdw-_9z@LuUbJB3KZ>%0U#}}Y`M~qsQ@Ixb_u4G~lmhQ-lWtY;#buSR zI^e}l%AUsH6};uomf+jFigy4%6i4ZH2mfjB3-kjozg+S|!QW<3oCks5=%sR>0Djcg z$ESl&%d7m(1JAre`j>#8O|N{d0uQrs^hR*keSAB>@7Q~A`@p~2LrF)$OYW1MXTYo3 zLmZdE^RJNnP4MCFijxQ6UH(@Q{{DFm-e`i#{T=vgyMO5`__4C`n_EWdbJefidxd~ERRwmz5${O&ZBZ%XjJUMd$)@DA3m$PB)ru;g=rPcIPpkKqNu-FnCm#lfH2 zyi*zQG-IRu(NhsT`Xu?K26(SlvZp@yiA<7j2A-s?{MH71Tw3wY;E^modx8Jht?$u5 z@a1+d`Y`aa?PSjw@DWW^PbY&Pyr%M+1zyYcO9z9eA0FjT0?WX2+?M~>f;Y1FS+;=Z z^p~Bxz~5PWau9sMa{289c+T!h_dNK0+uwT?Jbi8D_YQdBYAWBy;Jcd3&R5`-_bT0w z;N`N2{{T-uQu-rgl0H|xi&Vt^A3SxS$~_)CXl} z$<}f5f^Uqc_$drN?4@`~@MJcR>Ia_mlI*VnzCVI^ZSZxi<)232UCYaUfACax?z=ts zzKl`+DC!2D_mbMZzTgS$e8&**LM>(INboSb4|zOzqi&L)2A(H_+OfIdk5emOi@|?c zd$JO|ip>jc06!33>23!vxlZZs1uxo9{0R8K2hwvI{KP25)g|x=4<&yCe8)uj|2}wz z$>Ptz58JxfTkuIIqW&qzFW|Mu%WuEIZ!{B+>}B=r?_d8rLi1>p>Psx}$@aZS2)^!{ z>`VcEW3cS;0RKE){_z6eb5!=^1P|LRUI09FqROQh_&nRk=mUN`t>U=?c!P`5Qyskc zBH3RL{8>BM-xR!n?e}gCK5&cLfllDvdWiP~Pcle$4gkM4Q}Th}UplJ%MuQiAF279z zFIz@MTAo?s4#G#g*T4 z;BV|cfh*t{g5$_I%ocs_C ze02%wi3^^^-X%-|{>u8p?%)S=%g*%Rd9Ny8S;0%#{8Aq9I3Fed7x)NU5Ap_oRv_A+ zjFtsYZ}$pT2G4Lpab632M<>NkL-4wJWlsz6l8x2=v;+72DnE1uZ+%wf(Ffek=Jy7J zXZ&BI`1j8U@UFH`V;p$Tl}dLixc4~enFD@ep8T)~eEnDDYXx`(o0nb>zB;_(XB+sU znJSk(;KQfL&coo#+!UXuz*A0@{)^zg^OUda;6DA7?mh6-manJaV{1tN8}OzPWanq_ z-?kp~3;aq!>4}s@c18dD*Z+#}!Z`7m;JYu%{|Ugy1<3y7;1^;@Pg?M8-4(Z)z{@n2 zKXZULY$cu_JZ(h9c~S6wCzYSl;9Wi`PRfJ-m@9j#fq(3weANZ-XYaf;0Z*Dj@~yyg zwJ|4am5vPtDK1H5(#**PEFv%dVZ z6nx5T*|{2grk(5D1U}mCAqfR9VE2{n2QO~(gvY@5tx>vX!LvP4oP>c-wE6Q};E}5- z9v*@}o+mvoz$465dA$eE=_7l-fv<9t|HIk23RnFqbX5AIf;YAYgyVp(DI+@*gU@`X zct{0asf>6!@cn4!M)1KFLl79Z%}?4gBK_y`Ig{M7t0SFz;kSq|GR^4cpyFf!2K&Lo`-_J zwf7=}z$a#v{t4iZTPx0|gHN}6E#`r{y_fwcDS zfj{3T`;USLHj@4`;D;9}9xj9TDyVdCf}ag1JrBTx?S01Q;1yd-|2yywF%(x{!6#Zj z%`N-?S-&ElRXIihZ?H=C#0D>WUpx```Fd&xQi2z;`tAu{s*uVtGr0e3*^>+WULDz8 z5d8CR*;5>RXg!rz8Su)}WM@V2zINYB4e;N#pQ=81XWIwc3_R5KOSb{vW$$rx24Cf+ z{PqI>Y4i32!LRg|{4ns2R)5EU54C$TCxd4jCcn)BAAdmQ5)8h_SMtlizcx|1tOd{h zNqV+`zq5JfUEuY9tKJ<1f1g791o(0fmE(Ev^(Q2M75vI^*?$N8u+7^)1|K;|_2?CN zz9_1{AHfUReBcl8-aX`>2sWN@eb;;j$v@G-$J@OS@xaq3RDDkheruNekQ)5cSn1CI z?mI{JX9FK*_a5X0&$vu_3WLYpCx4a%AOA!C_XBsGORoZ+eTMQ?8+`S6)!#}ct zfAF_i?|N`54Gk*(t6!Ou-qxl99ZYWpGQg3q@1 zofm@_tRwv^!K2%L_zmD=t)IUgy#I2Q`(E%A*;S55z<1ky@~6SCy;Hs}fo~h4IKKhj z*3N6+2M~hsRzqN{=Sm2R2N`FG| zfDwx46yS+|$bJv-+jg$m3w(;bmyr|vaC@a&0NhVzyA=cXye|LyfakXJ;1$5#KgrJO z;EioQwjOxf6N-nX;Ms4>Z>_m_@RxI>e*t*Th|(VdKH5k2uK};$Sn`{}cb`ZNaU$gbxDE3ToDkeyf(Li^-~=ZSAXsn@!GgQH zLvRT0?!nz%gS$fr4&S{zD|74o>!a#@Po3Xs)~s3GGkfouo}Phrykv$?9ijYl!q>!C zJ_XYMVJ2`_EuxB2jh^=+5I=cL#EMm%Q| zF@C<<^U<5pKL04?vkM;2P5Fetn|#)O9ft=Nke`EByD7g4@0?0`-hpqj^?o10U%poR zm+*l@^&I8%tA#oHZ5B$+!^;co|6jzPIQt&VK+^#2lUQ_LFb-4dyormkfAK34GANc-T z%CiN0^=OTscJM!~m1kFYy?xp>`2w%Qi^}GR3 z)ktwd;RkzZoIiyxZK(Kf;7O;e{-5EYKQw-Rz!R0#b|cw&BI5XJ&{c6_!b5VXeLVO~ zn?IZs{@&)ZrGY=SdE=SjRX(X-a=`Q2`-bwvPx>pLV(^`FRiCo(+L6@1mEoQ3Il-Fn z+Vm^w;;HGTGewY{DOz_Uk$%;MEPujm%Og_JK+;;9sUFG^QCpX9D{$Iqw#qb z-qYq|UxAnStZ{W4zTvj~A-uvz9WO87Bi}3k_wZGAog^H7#;#BPh7UNXaU0dTj6yN_H4zAuvcr4jt=6xFRcJ%+a17Cx$}_O}cCRUYNv6TZOKG3yWiuu%C7 zgP*nY$yj)sP~|fP9<)Hm*KBy?$r{fK;h#FogW;`S==fR(9}%GKZiSDrb%*xAH`Gua z4#8JVP@X5@-EOJ=7vOb^sm|Bo-ES-Zd+)M9X`p{ z2XHB*Iz=2`J>u%$W57GtkjI4w+4H1H;JNI*5~<-S?7mw@_^Cmvrw2UOetAClwB$PO zio*K`%gey06;T~3!DHFF9A5ArgH`AHaPL-%(*)kyLwUA>Z!0YC0RJ6N{oWlu(dIq& zfoImRbr}SozCdwC!uQ+!`3dj`-IdRDc&5HOe&@lf71M^7z_-^@9ah1Y+WIyd;b$|c zUv|Jp*}S0r@DJ5>+#Q8~AE|yh10R}C?JvW#2Wq>w;9>K$Uk~8>SLpbC4)1keb$bWz zZ1e8Ez$498KEL3fPAYzs!v8()YG1K`hc8Z}JQKjn=U1HM@U)lJFX`Z8Vkw_2@cma+ z&s^}|Ycw7T!b>Gr{1Wi1uBuOYc>9zZpH<;;Z5_Yb@Wdar-G=a(9aW!Z@Qz&+zYTo! z9(iZ@nfdYnc#3MOb3gd8YTDnS^efumG4NLJmH%Y;?iuQ@S@0dUZu|mx#nFnt9R9`b z&#r~vFRAuh;Hh`3ZoA<*Co7+W@FO-q?F4*-t*dz+K5(%1_ZoaiMa91h?;fgpK8CM6 zuJQQ_zT=|y>m&T5i{gBPdq&cD{tN%MS@}dS^55g`s9i^m1E0A~?GnSw+xvD?!B@^v ze0O-#+sZRL{L4@6S6+C5Fx9gNeEki@FAd)os5lkjX|~8~z<1kuwH`c;JqOenexkXK zi8lkxDl`&6H4@GjF;hq>@t ziba5`{fM}4$}Ddh2OX9yshB{4`{zS!8gW}_kgc1s5}GVhps7~A@E_9RL{}yZXv4M zB={|RkHAd0`#05LKHTf0>bwlz#h%Ap13$G_`?VRKWV+()f(O~W{SbJP+KO`=KDn9d za1P$nLy4Ta%1J}FKq_{MA+ zho0~|tL4?<_a3N!>%!wqR6aiNg#6YfdlhF6{M=0)7mMHrm&sSayXVn(TMrMnc`V!DHEsUtUU;Xh zs`Fv^^a?tTPQl%Csm>SSIXo2S27JqK8o-w|RQ#s!o?p~oesB+a?xG_+Z-0#we|R}> z#qSGuZKnMl43Dx@d5(fl>8F<_jQyng}YQy|E`8ljjcR4!PC@N zop-`V*g7W%;MaDj{V{l+X8OE13$Li*?{WqHd5PlOhPOYV{dx#baZmZbfFHN}GVkF_ z?R}Kta9_Ky^&6gWqT)xj_p3x4cOB!ZAKl<1?RRlP_|Ue>KLtF0FYRx7_{|WF&#dsr zcAYIZ{Kz8ZSqOf4zQ#{U_^mb?4;A1;-l@N;!Pi~T@mL4mW2^S75j>!{_NzHOzPmcU zE&Opz<8H%Eu*Q-I4!EWA6X_FYkD@j{)Ch*LmW?7ua)5N#HdG zsvlFslh;?C8Q~Qh=(zKMyXI8;eDFnfU!y2I^)8K*GVlctRnJQB<1Wh63m$S&b*K;b zdaZn#z?XDUoL2CgBXrz#fRBEmJiEiQ?9_PZ1CM@6@dv>xd#P?C;X$)?9+&|Cn_2l! zhu591IP>6>nyPL~;Kh$C&sFf+dlY{oyu(fT4)}p9%5y)w{Yv>!c#lP@!x{MDCu)Bg z9y(C_bqoH*-f#E-p4fixJcnnDr~Q2g-(xC zf*48J?0*^IH^~?pI97T022wxXpd6t0hwEOAh;XPaG zII0Ri-cRGIHoQ|K?N>v1-A3AOGkCtd%D)XfV7T({3?Hp@Tms+;gH`8#@cG+x{0@a* z%%MPI;I(#Wzb3=)p4a%F1z%M}+g$*kuwDDR9R6dT+OLJb=&rhLfj91_?e2y*3e-3} z2oJRP$e)0Bh^;!GhubkE-qGeK z{DmjB=R2a8*7hTgyO(x-AP&61Uezrz{NXm`lL~Ijc)Pg6_t(<)vcp$4Q2e~`yB_i) zaQFHeZ>8a}?LJpU_=-)cPYw9n0`hwBag(%Pjo~gWHU3+|-!{{JwTJrzsC_qh>`WRD zz2UBQ-*zB;Twmog0-mjy;*W>#wCncM;FA(6&RqCsTc2|=yvk%9cPrt+jWzx^z&n=I z_}>nH^-8`EJ~fK^@d$j8J-2%rzS-u7T!MEvpgeEFqlGBX`|vl3RkvsGtP_>zTlk+I z@-XA3GRox1}w}&hL;_zJF+HN`cmtfVi3VhBjZMYVEX$`#|`>d&++ZJaRk584dU8DW3$N9Ip5?;k^sW=fk@l)&4Gn|Gul^ zVhwzc%?sQNZ)Mj}cfq?n*LFkTxp!*2>ID~$2EJlO7+ zyTcQn)^@YQC%o2n?J*#yo;z2m4t9Ic@kS%n-cB2icZx5si1@!tXish0nbUr7X^oS5 zXg}n*yfM7P13^ppjyH|NAFmd^UWnx-I^v|L2>csr^d$uPfT_26*zH^6l`WNiKD5m?&K5pTb~QH(7v{xw(AZ5enEAxWdxl#OYJ&XYqXD? zK+p+Z%}4d=0gq+RiP+B-C;mG-Vc277j;GzH0HYD7Vl>6Kuenb99<4O~XQKU9JO9sz zFMp{z+j1UGoIS(Ua1GkOx98JsnSQ7Jv*D`qF0|iORmYLtZg<+(xA$2bNBfNB)Gz1Y zt!)1MRroerf8!4POh0Y+5j=7Yod;gR6MqocKb$;2*z+A<(f*CiWBda@VDEK`reWm7 zX==ZZV#5#Hx-p610iOja;cx5%$8K*s@ekir{j;I{hu1nT^1#O*Q=JRLclfJrrQl1J zsBWI{mA0;9b@-KY+HPI=;a?hWKJb2aqG|zeWuMFK;C&x!oOgxKwsj18!E>$<*mPc} zZUbxRII_ztj;Bqk_O=|bR=+u*MP)P65~qOHSekAFDveeH+DDYW0#Uhyx&kGW}F-GDC%l!wCS+q%b3;l6#f zzi;3LGN}GG+?_m6+w*8Y(0=Sx?XN8-O89+yyIoi3_w5dCln=jex9qHZ_JI}K|4IinV ztj{J}h>i6LoS^osPxtJ~ob~x;Uu;>QhK*GR)@QYw>d*RIyDj%Z-GXgBK>kkI(Mt_| z&_2YjD>jE$wa=F}aQEHHvlBe4{T}p(*R}V}^?`TyQT_wrYiym>;qZg@e9BmO=}Lmh z@J{Wc{F9mRrS|@{Aoyor_2UxwnP9<6xZUn^Sr0#M@0+mOx6b%4Jw^Mw2kj%I(r_!13a7k z5bO^3+OK^2!28<=^&t33Tfc53yr2F4ngIW1>o`q^XP=|`&x4N}p!(bE7M!|`PNnf+ zmvtQXOsF`vypiLtz2!R)zn`rWyC0sbuG$}k|1GEE>kRy2ZjFb_@Tm5@$u0Pkt2!WT zI!YkT5?Z@x}Llx&0JgePDwq*sJaT5GW^|Y_oj@P`Y z{r!tL{p~(`bPX@3{id<1o81m^e7&u2Z?Cy^{NXMg*LM1Ie42e9b4UE{RR!7MJ?;IT zdExE{72jTO>BM&{qJAlj_G22UZWZC7HjkwSJcrE(s0V-QtvWP@SKqIGYzZ%OU+wK{ zoRjBOD`Ypc@BBmKyf=KNhxThAyqo=?w99Qy{HO60$6llB`1u!#GYxU(q*Hz7!t>hv zlg03%_C3KKTXNzTN~8E2(0+kE_iEEJoc676sG%({{(pW^`5Zx<3N|momLGN6f3o}a z_PP|uqy1Fy?k)=5c&~S-JgOcRa}E$)`n};0HPnWQO0g=VWujyH!*D3&4GC zp0Q1nb+#L7U$o1ieM~zsSAmzmr@GaGH?{MvU5+#;?eS5^^Hfuu)`-(~m^!2r z{F;3}+U;rZP{F<%%XUknVakA%EKTbmXr~3u=npmfO-YGf(+j5GI zr!A~;vJ7#8M+w%z!|b@Q$8?=IDZi=?wv3eHS?vQS1abP>buC*K-)SG-OXKYv+IJkQ z`rB(!oc2HMi@+VUAM-@}Ytu)Z_5*A@*zEzwGeyyMKOjzvFRJrb_?cbuKkylL10Kiv@VGWl$zCVp#3^I*2lk?Usrl;n!|=k;{G$F1 zg$I9E{hz|8+ZXdUaDN{i*LIq7@;Nk5dD>$JjyGDRJR|9^Io{fS=-cZt9KUx_^^Ax1 znPw`EJ*Muo_jA+!ra}8yqm@r4cyL;YA$J2f< z42CZ#qWX`5=iICK6X9>Bs~_#Lb7#9tZN5_w+E26N#U3Yf+DEr_7*?ZwY(MR8QK zU+t*syc6wb+Vz|R@Tj5MuVe5PV>BM@@p32rIeV|MP5W^CNl(SOjX2jjsvjT1i5&ipytXys)mb`=Z9+oyPf8Ek+SN?glK=jK1fr*eQdn~ zTPD?sQ!u{vH!Io?wd<2M9mHurErs^05ZZ??QvN03H6CkRRe!`xu?&BjG#j2aWZz6DO{{ zciT;W&GBKev|qeGThQ(cCrA5SHgPE(Jhy$|XMs;@qXC!;UeL}11>tVLlsWIix@=a% z@@RjcjOtt!9^HOt)rKdWq2r<~mH9 znNPNU|Nr*iX6U@f_J{4l8}pw#OZ8{|!+Xn_{|dVf$^5(6jkxUCuX9#U&J*yq^B(63 zJT0XBIX(}p)%Yog_#rn{pUUu?W96JDkkziAaGpS=1llg=2`sQ1t(+&&A(QIg2HQ$FsW^6;bK38`tNi<*{e;-^f$(#sl>cz}#H|_$ zW8u5(i#+GI4EU_^#`!IKrbPJ{Aqa5>{ZafS@bMG&i~(F_Yv&!w^O$<$rXPH_A95Kz@`^F?UVo3 zc$mcYw(dRW{~xuEosagn?75p|@Q#<&FKghruc;sHYqXP3WedRh|HbWhH|PIo} z|Km}#!Dt#rPJOogRDZ>WAGdi^_H)H)?`j8nO0-X(L-9HPf1jN{IsZT2G4)p-#Q8W$ z`^EYH9v4*SQfNP{fR1ZVc%&_A&-wp>8&#jWXuq_c;&A?d)J^I~&i{|Nf6w{lJhUf0TQw+W_Q~BTU=n{QqP2!<6&?JGW6B&i|kHMuF!be!umq{~~y-ff^5- z|9^IY>cjc}nNz8roc~|l*7w_s_*n;Ozc~MYw@pal{QunBwO{iHrTU%o z{~zDeemzC|qe%o-CTE<#+$jHy_B-qg2&Dc+Wn)-@P`RB9%{nh z+k}D!@PuK?vnjlr{oeG0S3jfp9pQ7Q%KhQKO$7Fshf|*+_C;ne+V`{fRN7@Sr~Qn~ z`dpZZ_9GMMxUkC~PWvae4pV`%?pg~pFPuJ5$}nMudp6||q{tNpzV&;MTg^$tfZfm-2489u+{VI_*#xC2@B_7#|7`dg zANfLffgl|(!SK;GpKu-g$P^tHR&Hm%irf1!Z5as1&)Nm}Lx^*Ao9bY%qj1`fwdW!) zp#ARucMlgEY6aM3tV0>61)`;{8L|9~JPe0f5h80_bkv)x|y{V*TeKijVMMd6*s zXh-exmJ?^H^}Bt2cRa@pwYS>|j{it4uaEc-N~vy5;Jfb%TER!h5_EuX4pyA*@b2B! z?|tA!3aPz)&2sV#Xd)kp_TTL|odDljU3HrdpYcxThk5Xag#`9EuCv{~cHO{UXYP20 zVj3s*aqIYedr!m;#80wL`Rs?+UadOVvP4dtt2Pnr4BF?os5)GR_kFK?Y*_&(&Z6ZS zpLV;;@q})Q^Bi&7#?d%`2Tx!Z7{0&@*?6|wGfw)m;@8nt3OYz&F{d>DkWskW!?SI>ZHT(MRcv)LVx*y`WuTUL^ z!hcWG@iGQ}#^O(g9~q)Jv*7XUdZzshbMmP_Q1O?e{WBYHYvKOARR1mT^GCH^do8FF zzf1$w&8E>i-pxK2P9RRz^a6W4z-eE}e&Ak1`>!o^+}UMir+tuJH@3&=9dBk6?p`5I z)lY(t@Xy0FZok3f*+jp;@LhI&FS^S5f7>0VSoJ+Ild>AKF96nvExxv z$nEEWiF=^ia#E4VrEl&J1m{{Z`x@b&PDquwbgzxeB(aVVI|zpL$Cq<_nP`~JA9f=(Ax+9 zV&5B&z;E={epy+a{I|bW{7Yybd`zE@_I1-~fBl{Ex5rK#_c*Bd&k!f8pZeu3e6CHX z41*`P&pCUn!ik?Oo8s6sbjLS%sLrn14aXbLQ~vScqwN6{o95`WPv21+PK)-teC3(p zx$Jq0obcN&+HL{(sjY(I@NV9!n>|kHCj7W~UnZPy##&+cRT!V9NU z`_}OH_Jybu+$Dzk-5xJ-^8C|H`3Iu?zApm%_;=cOOQ-fWt=92So6tQ8aop`e#+mR& z_PJn(w-aZ0n2tyLdF*&QTMuLn;>5K3Xq(~1j|q0ckIoi^z&F`*O!nBJvt9pP8n@@r z{)zp7y9(c61Hmr0IdSf;RKMF}0FD>7bpT!>PQD}h{QUsma$5(SU3PTh1lhdJKWJal zu1iEyw>j?Yt?qa=J8vXH`x&v7k3F{Jw13)B^~r$tRU2r3?KLw_`!aT;)oyP) zKJdQc7e<^%b|Klm7C7zwZN8Hy+P||4SJmOw?SesFc;Vj4({778@!N0KezidR{dU4` z2k&SnT6;{$iBr9?;@iib2wSDlya^*K)aY&q1whtWQrt>bqJ-p%GM z+cNP^oE_N}{|4G;vj=}|8mrU(g3YsfiuNV13f{nzTAe?`N59c|=?DDT0*#YM|GTin z|NMzqUn2VheXhlXd)WMqc<^biYM&I|qm}BG2Ht9|63GN#XV-gkz=QTGPJZ}#`=BTW zKY2^-%feUu(C0{Hc&h;Ie@*yK`$E?M9%A!4n!*D@HE#XjwQQVsgkNc<4nu+j5b|HKQe9BAZ69msNTys@p%CL;)(nie3?CGeHK3Bs_JtEp1=;c+i-6?VLybIw=e83;J!6fhxhQ*_Q4(w zk858Tf5TsN(0Ge#6UhGeKhOQ2|24JyN^bC_vox*}!uK^%oD}d2c6}f{Jg!YJ&k8@# zRQ;G6KF)q{7lJ?Rul6P3N2criRsnuKh5E4?e8@)~r*+^z?0#q?cxEcl@{a2qOW8r1mYrm$z%iUH!v*8tNe(XYchJ|V$ z4F45JbzTSmWZ%cO!qdB|ZhPRfU39!3g8Nzglkg!nZ}tK_Pi@uVI(*@T~R&y*vD4dL2i7;BlYI2f;r-SKUU!yH`{FC&0fn(s-T@uXjdu zm{E+<+$pw#GSN&KJUTU$t1U&v$d3kuYbIP+S{AOm= ztv0-60rh)Bc$ZS@uV!$!u8Q9V9_Fs&t~306u-XT}?}aFze(;laA9*Oe%y9MJ7ZqQ};jx-^hflZb!`b0QPHMY(;Yp(?P7!!i`}{2p zZ*A*1RfL}$q5Z7^Z+}bUryl&{RULPY;eN~HE#YPDdwzTPU7N7q4L&Tl`lUDgmrZ;a z2>+8@?MJ{!Etig?n~Y{TIWZG|_ff!o%$X(gwKKY>kKQ@M>9A z=Y8;;cD>>Ve9Q^$*J*e+`+jl>?o(6oZ^GBvyuSPJm#b8VXYky=(dUSa?_*=U{Q3c-3p5v$m4>_v+@`hKi_1t{nw`%D8(;D8(t{--S-)gG* z_kjPl=fVQv*X!#1Fa*BA77QB=Pd-ugoCJSs-`i)xpV@@m`S4F8wcTa#!?xhT8u+gn zs>5b@s9hi11y7Jld4|B(c&Yx!;XT)@Zs*`@&9B01TvI-G;HwKO&LjB5V>-{gg#YNK zI(&d1vHNac;rs3W>>v1fyWkov{(q0VpEhwRHvHKb<&y}0WS=}GJf6kR06%6EF0#R! z+Kt3K@O_@DTVeRi!aBZ6!M_&M{&>QZw$S;uI{br&`nN88qPybwz+2mM^ey1~ymek} z2jAeK{^|-(Hdgufg5R>=eFNYDOEpf0!;9S0cE`ahG*JFi;f-xP%z%-*R;H?*Foa}|W-&GwB!+*6_{-@x1Yb*Xm_&}SubOS!ZCOCw`(=z*BdX=ZBXZsqs(@ek87rm$LA%SvpQD!<*UfteWs|#T2Ij{7rnt zX$o(WR`v9QFSdCm9pP8)`8a=g|Ldw}UwDF~8gGN)KNF~)qu_5pD9?%Tr3+NI8Sr}# zw7)^{)Gajrm%?+|M1a-skn^g;Cb*xC=bi9miFDpO0H0#_<&VKnmR9_;@cOmnSK#42 zwZFIFb-t-?58)T$$zQ-T+Cm-g;htACKEvTV25Gy$;Xg{MAEVm!>4@VlacvcX%4Zl@E{gn}3yrA;&fQQ+GbotL-@|g$sUZ-)j1YX(3`6_ro1=V3Ay!rsua|e7& z3~hHme1(nkqwsn5yWkAGiapxtB!G9c<1RUThFz~n2d~gl=jSZ&Zg%}S7ksS! z&MgR^W#8*cz^`mn|CWc(_0xVt^t5c7LS}{6kcoKRd$* z*aMLP@R!vUzaPA$y{~5|yso{VU<`b_J;*y5-ZY=`nFWt(pN|XR>ues&a(LJ<)om@j zZ9T=`0-upZ`?VWB<$~&b5MKYg&L=0}f%g2`dH6`1PkRmC)z)*n3r}JF_!z#vkMe&7 zk8a1yNBCD;=meiOsj*aE<*;8}x|zdO8n zQ`I>;Jo0JvV_taH!`f~UxR>4UD-GYaU;9%LKK!Hhs|Gx^J*Q9)KJAF|Zw!BG^GRC5 z8#hs&?csN#XuNfU-?Rr|d&3`eQ=EbD_jbM-0pD!*WyZrpKdBDW;C}Xi*If9j0~#lb z;Vmx8SHhFrQ++nTQ=QWJc{@CHJv>zO9_j z1K#i&Zpzaa{%nnoqt@^dlNG-c{E~fM^niCLrSTjHuNtKK4}qV0ru`ZX&sS4%Cc)oj zQJk6Z#P-1Ae0b-E>aS&RKl{GA2ENH&RJ9pC-CjJk3m#<8frh|CPN>eu;rWZH&gbB5 zf2z(`;jV+_ci^2o6#o%Cz0GTV3EyE4aDRaR&8#|qg;y`F@%aZnCSv}-Eu0r|-1$~i zKgNb1w}qw>!5^$u{FLy~TQzPoz_a{Rzh{FNuzA{f;Ir(3(ZcYm!d)NY0>*49zDE>Bh@^gy67e4!t#{Xe> zb-R9h3f_LN;$MXKPN?`d;JZ%gxC@0}vpk=|rv@ti8~AE_ZsIe%=nlpI0T0`taURJQ z_Ki5c`dd9?!Z(~%`*`q?@s&?f_=&38ZW?&$I*OAC-pt;wlmlLRi`wUhzp#1Z#o%{4 z>o_V4_n)XdE5nD!mDhwXnIvxjFKP=CG=;yi^SmFtnEjsZ2v0Cs$F)Daz1>gj3(r|Y z=kvkv!M0BIDEL&H2RIR)!LCovfX_XlItRhq9Z?;Y!gqF;uZB;z@2i{Oh3x#k6MnH2co9XIE^^&>KD;@#tq&xzdRxQ-9+tg3V0%0=psEl+}3N#3U6-T!*j#a z*n1%h!M{CJJ|*Fi?K!~;@Y)-dXEk`Ery4(X;5BVNRU`N>n`hV@Ud>Z=Yzud>=ODVk zFV0c@d%{28QUCUbS1G0V!{9&G%g4fBl~cb@fhQfR{hbZ3VfRfI!k-k@`5_qIs@9_Kf+>=X6)hXimO4L~S#DM>LqB_Tgr?dM+N#KQS-L2H{9GSJf zjPRA-`rhRMcblX3`QYgSzu>L+D4!@cPc7oO`}jodW5J)j(71}2*A~(K zmMvV79PNvzQ9kM5`|Im`n*~0_<{{*QZ||fy1>rf$YkZb~_qBQ2<>A{mYCu$lCw14j ztqt#B_rDs#3w2O^n!#(>x@2wOZ+oe3o#FKss^0_PEk~<9{ot`|p65{b4SPY>82C(E zmuWKmhh2A_1%EO}c`krg7_B-lhgY@tO|PYgsyfTZOIPmb@ijx?=f1To_f>&9kIPUNX&D6iy;a#gLeqQ*>`5K2s;5qDmXleLU zd!bxK_?Elsmm2VU^>jSegRi--{2Rj;+QOnO;Wv{j|Mu`U{q?=28$3r(#qSMI+C}*c zgcsOmSc+_z^uBXA1+xP0Z@D#;W=f&{lrBt_-@WeJRa09$cY>kKQ@QWi= zpMCJ<_B-VW+%K25dm7%an)d4w{B9*}_a^*QTGjbJ{8M2akI&!(Z2_3K@VB;JQyBbo zUDf|5eB2A=6FH6kd&KeO=Bxd3g~zjn@Z-Zr+4CvM;2&%u`LyuBdFsc^@Z-OfM^1QG zTd%kPe5<`Lpg4Shm+Dy#zH+SMSAnf=P6%!P+pCn*6?s!Fs~E5 z6P)FzweQ_-`M@nF+sZ*AwQ$^OaYg%iyo<{^=Tc z{Nswh8Qy(|d>1@UNyQI=N6W2ocpScZppLI|@UH>t->dNXJvH9$!1vgDC?3IIe^vaK z@a(og%LllJeQ*B?@7+lI^#>ki=gDYk|9jkR4$yXE!#~*bGKt_W_TJ%?@QF=Sw+!&! zwr)>0__9_y&*Xv6wRwhx;f?Kukfq>$Csb!o_|&Hwht=V!Qp@YYr`Q6?KJWqd{<{|N z3k_7acJO3&-tG#YGFI(-!LuaQ=l%eAPgjlG;qZ4^Rp)W=E-u=ysqoFVF!>yK%HC?f z2wv8nms|mVeo%R?hadA-KHK2^*2(w6r;bs79fp^&^&(EeYuR%L7vV*-EB_ntb*WV6 zPZ@@w7+yYwwmS;$ZTImf!WY|h zi5c*=RaCbic%wwB!&3OLKgx48JgPk>vI*YnyW;PJ-?96)2jFRJU5I1w0yi`c&%*ny zRUNLt-zQZ5x8bQKsr^HE#C`4;@M?Cy={@|I&07nHKd}1zhJUbyA)}`MHyoXHw}$Re zeca%2kLvR=Av|!W>YoC>!xo@T507H&vSx*+wENe&;eNKhRv~ybTL`u!+~4MXRe+aW zq5P}C>&(@7t^;4ORCQc3xQD&4Xc&CS zJJo+I+_#X+zduvpTNA7OY}UO=eF+~9`Hu?eu{kX znRb7zDE#;(OT@*(NlR&fPdSpI!uTA+q}Mc@Pc-qXbJr1W5rnopKAA; zHo`~Pc-sMAXY1weho7|h5=Y^AA4d9Dh%@licE9^Fyn18R=N7zGi0bnI?pjOz@*I9J zk^CKeYoNx@7kHRmhyMldzCigzaaVsv9C!DUY23zw&zc$OU&93OW>eKZIlPm7zfA{k zHC)@v0uSG<{ByyR=hJz$AbhV~PbdLD+f;GN!_SORoT~6=cAVCR-zl#+4dLOo{zEhP zKD+pdMhjZlta9>-`vmbnEJN5fe_!66kFa|!pmB!U%c=u$H|8>ADxSK5u zzX0BMq2eruKWMA`*TUCKQvYs&FG-|&?uI|Lb=VHVJ=;Y77w7~$m)$=-55MtV8-{1qS-~Ynnc2@i7b{>j2?!M$w|HgsW zwfE^HhCger{Y?e;-z9g4zi$`iUp=$K_xx5J^1=rkRDTtLZ?flqOT$}vEB}h{@T{tT z4S27(%CjDPW*g#eQ)@|HtOGj@FNAZ-H6W( zr@yjloR3HQvoq9w8vJCr$p8MrTzGkVUUD&f`AEfC34d(!VK%@&*!rK_;cacc#6I}M zsLJOEeA*TD`)T-rCaTXR_?=}M&o|*dc0b}i{P-T#?HN3+UB7w@zf@NFgu(OeQvN^T z*Zh=Ec^b$lh>7B z0r(S}H&PrveXHV>gC8ibFQc-`Nsn>Re}0oBbH{$`Kbw}yAH^LZzDa(jV5 z4|r!=s5_8u^9+Z;3)pj8qv37Cv|p3p4K~SV!Y8j*o#(^T`$zfrAC|#ChAYk*c$|p& z|M0Q)-1jbcih7C@0`KaoemoApmsWK?2j7}QeieSp-VbsIe!;#6K7uE*d7&@izuk1c z{Qz%n3$%ZQ7qj(7{=l(S@n)M?t*`)&avUk&dC$OSK7K;DdB^sD}Dy}o!C0A zv%xppLh^awjRz>d!tk6mlus#ms|>2YC*0+S;#7zGHdH=!;j8RD(LV5I)1&?i)B^r= zv9{X|KH#C^cZCPo`0NEAVlQ?W01qCc^Vo3sRJ%?-4!&t)w10U{g_pmpI?RE0^jG{v z@UVp%Z!6&b2NY*LeDi&^-v&=vNAdT`ZBU+} z@V4&C=PA6jooC*_&y|bzFVJWB&dJ)}AMnbyE?J~3+J40G^>nfRJtq9;SB;Z+@YeSJ zvZU~md9~d%@HWj9KNEc3NbPS9_$7O>TYmUEJ3kkLKRBcMmxaHw7jaaEx3YCFYr_3v zDgOp=-%84}Dg3m}5BGz6zfwLO;r>Z9uKeL^8mb@r!gIG!-3G(&2FpjmciQuM6X9-w zIuFc%SGDKGg5Xu`KIu~UReM3!YWTd=%4ZY&woZpGJK_Cpe(VAG-#^j+1v&;lw@Ue+ zh5tCD_E+FD->Us>czJul(L;FF7OMXXcpZDL=RJJ+)ad{642S2o>y5wR^<%2vqh?i| zB96OikyIcz_;!0SOG5a(TKfAb;K4TEEImBdBkfmKc%)Fp$qjFkQ{%r7e9~IQDG9GT zLHSpJhuM4Ls=<@YRNd;p$1PTzM(~|BKe;*lUXa?ig@0;wORUx9{Pp;V054enxni+Hw#0S9`Hl zK6n{BZxn?WogVXFo@L;L+vzx}1m9sVTK9sxSJUxZA3nzBAvb{^nXUS_f>&&y{ptW; zQCIQ1!$Y#k`@qjVmJfovHCO#d!gqI7zfOQpvgcW*!%N0ip7Y?L_F}^&@E2KP{@cJR zcwiBo2R6dJf3=Wf`IPvEUo+cX0yvOI!CTIXu6e z&(pz^l+}J^fxijRxXlF*YvlSb!GiEUk9EE(0q<(-6qSc(zOMeQ3V$?KUK<{4>w-3f zZ?MmoX7GEPwO?)EGwcPno#AWjyc7T*WY;JA!K;l_od z+xwaqz}wq87|Y=c<7>NX;ggzZylsIu$*1wQ8~$mV>UI#GI-1TWC*W5@<>%oQqPzYZ zC)eQaixmGZyxU3nV|bM}8i%joUUvQJBfRM{9Y5dTt^9Nx{e=hHyp-r3|2^)0*z@&q z;3p?4pTzL!uJTmyxi){s9e%Hlj+gB4;r*0nUbsgR^?Bj@@6V2OnbBof^ZR*mb{_@B)7|9@@hP>{ETa!Q-n8F1_LF*J{58!Ve{ukAQ!= zr~Mia53_YnrooTe^Gb8!bIxcSE`~QquS8eEk0;c2H^4n~c)4tcd-YI#_Q5xe)^?A; z_t<^y)9{$KZpkHh%^k|;COomtKfDjGv0mGK1|QN*`}-E&-dpX%;I8&N>nHrXJ%1EA z$A6En?e}%OxWX&ii<;xZz3sYaGI;Bs+TXPBDb`<^;bTs!{yE`^qH4biz|+`$$>Q)O z$CZCMxZhFLtqOcaWF6PF;LGiOh2HQyA9TF?!UGE{PHT9jBdTvF_}n_mvj@CVA00=5 z@G3U1bqKs?CB+{N&oMzh34Udc;?IPyYNz(|;dN4~Zp+}=awyIk_?Jd%zZss+zW45e zPq6DMA@H*Y)$hmQX)lOM0@VH#e6r1hy$FwgL3!SQN2;d&4TWDk zs63y-Q}@+&-@qsIQvA>GX658R;FU^foJ7i{?L-`3)jO)rG2s^i)IJ{kMIPmo6rT37 z+NXhUjiKW!6Wr5&SLT4b)=@tB;T7!ucro~w*~+IZJoN*`sSLmVNBvt9KBAT4G=QHx zt^Aw9+t|7me(*Q`s&7Ylklm;AhsO_6`@ZmDxpZC~41cpr{W}U?*5=_%gs+IAewhJ3 z{Y3i}1V8AnIxK}RuysdQ!)qr{oj1Xg|5f~*@YYFm-Z%g+{z(0D3|=U^@;^&YsN?7g z{L6CH?KZsVVAc5{{A5AJe*vF+LUG>1Cmd3q;qXEg)Gxo`0i_i`YVQ9Ych4Tl-Qaci ztDXtrM^nmEz^mO*p6TIJnkmn$@TPCnzq#S7GpoM}!L!#^o+aUPZ9TCH@Co)ix*B}_ zd-Ycxxcf_Ow-J1b&2MiG|NL9~+ZJBDrp8qlxU2n6>w5Kvmx`%=90p%_TKzW` z-aM7+JO$qNh4yzg{Otto??Sj=Ep0a#p4+|;uY+$oqkh~9Pi*&P_P}e{@1sNTpJ&y- zC*d{LE6)q?A(1r>ufrGKR{ih6pM24NJ%I<;SDe>ycYD9sCwShEit`=5AfwzR&wr0E zS9=d~4EU6ts#{$6?0Slm1Rm3_!>5KfucC375#BPU>fizI*jM8uA3XIU{8W(YTpyk(OxtY&pJwYww}MA2tnu6d-e!RIw>x}mpvF}n_|@}@ zGYCF)rrM8$2M<=AC&2UDb*ky`hIut^=fM-^Q~V|H6!spURq&*fhw>O|vy_)4^lfy!|Y2??O7RbHS_H zeXfG=+Uc}kCE$0N)bF+7(`|jEhVbi8RsUx2TalGd8~AQ}e!nw3 z-dn{9fRD5FG5Wy=SJHkBg>N~g`j3H!mR5gFhF2c0{hbB>Gg9MV0ep0r@>~v2V)OUb z!gJgE&bGjJmrS=lkz*H?D>15C`64w%R9#w~3{GOa-rC^A+9U zC$}ii?C{8T9?lDIZ}&rsz&{<-aa0=q<&E~IBK*@M#>c?8}BX-@` z8y>%+#-}g*RRhIo4R`&ndUk@Bx~uWf13oKI?E~R!N2(4(;P0QwN5g&M$S1-3q*eWA z!pH1Tf6a$i9j<;~20wmN`LBWJ>96{1h7YQ!akdLS^^W3%z&qRX+Q;GDe=5&&@E`Vl z_$s{8K<)1x_^i>|?j!iSjmq;Syxwoc`2a6u&n10@pFE`af8ZxBDt@#A|2^(<*mbAa z@bZT>9umP1+Pdf|;dShMm;qkf*4fSmZ)o#;^1v$ws^1I4w@p$$rQp6^`uz2T$M=<2 zhcD`)_;ul-=~ZVRct|GIs|CD%9*u`~@G2wJzAOC3S$QwG`w|_$1K`7#D9_>W-gZ75 z2agl1_EX_M?E1zW_}sJ_CyU@EyXiPu0bgM6pIs0CwLtx{4eoPZarVMTR8*da;g_zc zKBwTZ?Ywjm{wR&&-+))O?-il&f@joUPvN)h`q&%zj<%}LXL!*j+U^hd&eA&XMJlNM zi1@v>J(l`6Cj8i9jkkF4Npa;#;rs0Q>oo9&AC+e&con;@m;>%TOm)Z)Z*KE&iox6N zQGb<%ce$wTR)%M?>-ja|W7DX819%fOKQT~nK&8n(>bNEhMXRj^1T2Ae6 z7x>*6iqjK*&E~iChtJNSIK$vqpD4~)xSN~ycMANEy$518eAP*f+lBB!w*FEuyvAvb zhjs9z_CAQM@boWL&pq&|MdgR!iEaMCN%-ly>fa0Sf?le_b$F7Rs>3~a*W?2a@9DT0PmAU^_dQTbV~g@ z4}N8o;w*u``lS3f14k>L{qW}Ye$S)uSLs!UGw_9z)i0Ofv29-K zEqHmmuKobNf2hXQb9j84r}_>aqp0@x3%t3f`tcV$+~!wDDe~Xr?rCGyITrlcR>e;M zzh?6ulf&KOsC_zk;)mL=EbuMAlt(VOTL#s$AbkA+c?tN*Z|axw@b~+aPgQtBTOX-5 zJk}+R!-nu-E4AHb@bD#y-v*xjo$B8iK7F6+5CFf|LHYNCC;qGY424fyrT!WNA7;O2 zC&L%ERh(Jy@TSUV0X$Mg?eB8<+Be$YweW2A9`h~m{K5Jh+ztQTMfEude-TILs}t}} zc0cGm{6S9Te+}NTqw>ECZ~aMidkp`!Px-up7qaj9AK@P(DbH{42PIUWzwoB^Uft;S zc^>h3H`+e;HI zp*mEAN9nEOs0RGpG38Sa-Z)s}voSnzfAv>O_+wvfw>>=9TE*!G53~0~^oDmBtno7t zelWVm&j|RsJZe84KBlbdKMme?u6!=M)(F*SF??#c_G=}4?0xwLczb)kU^~2Hca6h+ z@GHK`{|G$%tm=Fk{(Fta;U##Nxyt7zJmxp~eR#z8hG+2FZW<47;gyCfP8huPPVLuE zcu`v)HF7caf5h?SVfVjW;eIaKulVpUd(~gb;45k>Zd!Qhk*a5A_|PzUPI%^|8dnA2 zH|=*&arl0F?@2lMmQNZ#Rp5DTzDg~4s_W`sZ}?PO&)pYZI+gafHGG-P2kr!a_*eVe z1AZvF@(hG8f2leQf#{1k?#wC96L!LNm>o}Tc{cK^CMyy5`WtuFkem+ImJPn=HeTfmnl zkhg=cT&#S$!ozcFe|y1W*?PqT;77-(p2OjzZ647$cpLluJ{8`}zURz=FSquK;92Z? z%L;fwTTfs;JV!5$lWp)j167B;@QF50>@a*xsQUdBe5uXPzX)&9U*q`({D-|?BNV>R zuG>F_547tEZ{YP7DgI~pu9iB!e!v%w(D;c|;=jjNy433TnDATnTv9xE%}|Z2r0{cg zJvj}$gI#~f1i#-={gMNIa+C7O4-e?0{VE0@JW_GW!Xw*y&XwVpnF}__fhbU)zvQ(;XZbKUk_nz#8N6Vo+55R}n1E|N~UsEcdv+zQ;KJ69w z5__KXHaw((@_YzS>mz>we`?QlzK8Fbug~Rh_?TrHx4+?+eU*RIlK(yKd~AM{8@#|> zjgy4%)6q1pQoxIrQayyUMb$I)y@_XaQm7`<=C4t>{x#w+`^Mhm~h{c-cG3vk&}Z1?}%3 zc!`qAXCypmjp9szXBnk9)8Ve=<@4Z$JL$Ms0#9%2(5`})x9im#;r(|h&mHid_FT_? zc%WUkISQ|4*Bj5k&)V}Hm*Htnsb6lvliBx{2k^`pG@hTsgX5__@96ft=NEWF``rHp zj~1YOqLlvcaW`g|#zQRlv6gC|06ucP{(f@!5}T)&4(`8Iak9W;uhjU=1+Uaa`&*E1 z>m-zbPu`%K-d1wvczO^(Co52f4R-88QhTD}-XLv4qUrYcz zYb4dbA3SD=d?@_wcby-`z_Z)D&B^fKD;ig`;1vg{{tMu{-)X;=!zb5JKdyxz{HgkE zfp4?-eeZ@}?WXM>gtzW0KLJ0XGPscz)bB;mzKx6at2F$0Z+S&{k-zd9@W)3LzaG58R@JjH{7P)?Z%cTZ zS!&-Ne$t*F?*@-;*Oz+3Z?#rF1L6L*-r5Lw5nE??Jbd|BQ|7`Em34^b<`TRfOmAw@wa#__iVm$A*`$4Yo7j@MxK0Mt;jjLpE zkJ~z*q=h%Dsd{FH$FuR16TV`h&cg-Z?g>?&;_zkm`=T8DNiM~y0?!#o`P70Jt)=>S z!%KJ7c75S#KWl$m!z10)d8QM5w%y0+0gri2^$djHw&zucz%$$PfTQ8w_CAqG@Rs&_ za3*|;tyerB9=oWHuVwI(7gUEe@O8Ic{{7huKWg)PcfpI3*PB`TOFS7vb-+5$)r8gI+4n_3+gPBK?cM4eps# z{kRwIH(dR77(UK^H=Tk%vH92+;b#hIT-|`LwD~`w@B@pr-KTJ$6!JIlj5XB1pWy-a zx%mTrY(k`eI~=LJ_B-NpEpoVyiu$amlie7|)oc!4SM!*1}7-^>4pz|;D7 zOnw5-R#kpG3qE3k`qd@yYxiaU4e-z2lb(Cv_kI8CF?bcnz5fQ!RYl`1N}2zA+%+tv z?@Mg(BICsqf%mB``%{2#sjK!)4<5a(?9T=s<#);F0;GNRQp0B~Hmsfq4ftM;4`JW1}2A{G@e%=Uv zppp8+4)Ct|G~V}tce*8eegGerTY64{FFc|8o(Iq8^MY6JN51;*3~ev{w;|trn*96# zJjZA9!&C5EkJauG%IeQo`rG@yOmy(2yEKmCf%k|ho)r8`|ITS@@N>UJ`KQ24;6Hbg z|8s!v@H>!s!5_z$-`)mq|Cjtw0(?Vq)$?8O!n5Vis^EiOkMhqys0F_9oa}4>-afYU zGzCA^MtVL5&l6w$p(A*|ozmYO{OS_%&%j$do;DbK+NY8Kv40f!*^i}X0{HbPYRBo| z1D$U<2fWZC`EwEYyrycG72xf*$ewlJC1$99ZULXRP5#*hUf6kq2f<@3kUhu1e`^ut zpT9T*p4xGzU%;37cffxIAGK2Ldl$TObCvrDJhkJu&%vvelYC_V`D)xH@w-^Dz?&?R zKNEt-TCVm=4!-QA{Fx5Cwtt5xEBN%Jl7AEYuYA&90K8{{sQ*-;2zb1u8h53^Z~41f z5j=0>3| zA3WME)pr%0K_$2>6dLRqhG!7tY828T_>0vAF`CC5QU?E%4L+eXIN6-RsJp zC*Th~-@XJd`nlRM+PkXvtN!-8?<>UxkL`VZ67ctvsJ^Mdn>wzW5q#SS$!7=e@wV*A z1D@e%)PD>t1m2;KcyaJ-y`udiUk?0kEBU7i__aLZHNi6#kUjOmf6O8ICgAnG4rvXZ zJ*)iN0sPavvcDVnrH0bq7re!3$qxd*;XIR(;FVfwz8VjH=Z@@|2EOQT^|#sJ@thaE z5Ij;X>G=lyYAe~f7JSND$!`YVkTTjof3Xw%wE-G;2f(K}ukR>$PQPn<8vK5Lm3t99 z|AA=#{Ka+fO+)2}JK*vBF8v?i3$x14e}VVjsdkK1Ugf_UUs?U`YfSKqzTcMs{IT!x zB?JF+vifIQ@agXVS-^X{pT7Z~(eL5s2hUV5+CPRD2ETkz<(2}!<#AmBJcZw(eINW* zF6plgKJXXypO3&V{ib=NIr!(!4{r-TF@@TtGx&tsDz_*2WB*QEKk%e?BtH~9_K)JD z!3XzOxs$-_{2Bcpf6fFSKT7>%9(d90l3xOzA*=ke61?dy@%7+Mj>~V`z`IvdxqHBu z`@au^r}Mjo$HAu;SGniFNB=25Tn5i^M&tS>_>Iky{~i3pBeMTb@LF%FAHD#e`Ht!p zwZi{B?y@D*f5!nII!f)B82s{Z*_jf&=0w?<0X(JmeXoP}%_;fZ;I-pO|6AY>=E|SN zz<1c5vfwR~slJuLM}8o`)c|kn^Tc}Kqt8lDWAN2p-?jpOeVF|J33!Cms_&=ZL%mMx z1KxOm${h%vC6@RI@FW{l?l|z2o#oG|;Fl7peZK-9-zCOB9by4^I>$GbgI{+4Sp!}@ zhw8ftyyOa%`#t#frE1^(;PWm^{zveWDb#OIfxk4r0RF)9;WhB~&L{Z|d}*~9{}k{L zJjx3B^BMTJewQy|McMW0yVliyivixk?-j%c@0dt_cn!R(^ZL?&zvu5}X7FvZ<+q&R zdDh6jeBkFcs=n`lpHC}Z61>%1^~3Vu-J7W&z6V~SmiPzY*Y{~Weh5D8E%9dHIaWwd z8}N@ts=l4TuXdDt5Abb%AM$hX)Xq;B0^ZsA3}1l%)n5Lb2>z?%12e!+4U?U7!J9Wx zeHVkTah&H{@Pt|9|L?#TdHuE(Jbj1g{}{R(e1zYNI0QcOJK6IS`1{|f+_T_IXG;DO zc+N)h{|)eNQDx6P@ODEa{}{Zt&z1fLzp_E|Oq5Fh_qcoGk^Vb2c(g7t|M`nV;4`L3 zJ_UHLxw0oc_>%alZ#MAX{#5(s0*~r=MM3bV>*R-`;3xbYECYVZ?^IL*U)DzUR|g-k zLH5)IpPE2^Xart6tMs%4Z(Kxr+Jm2P9H1+Brr$Jg^akHsTjdS_kNUI99S$CQsN~0j zXPziN1-#`&@mb*O*UFx+!7JtvUk3hcmD+bTc!lYb-w3{Uvf6P6_-oz8_ksVGQT^%% z@Nd$Hp9EjKPv3>};FFGsUj^Ui_wjCnFZx*R_yBy(FpcY{;BgPCT_RN0pRxY)$F%?a z-$#*UXLRtR->JUwz>C$8d{Xc`7d3uUgFihhJ2Qd5;r^ck{IeI*pBMay-=}>WJm#Bf z#}eQbGO7Q(3tq)>t*YShH^~3Bz}IDzKO2CTNFzTs1&^~*{q1A$oOfksNATD~rN29P zk)-nHXW)~&tK7lh`&gTL26?KKBHo!4E9!2Ppn5mtadA1gc8 zfuDaW{ae8Ed4IYK{GQ|R2f>S7k>8Gi|Lwf@GvF!Tko+&;ZT$Ymui#&KeSQ}_#ufF? zN8mqimj379vA>m{Bl~>&)wtVyPVE&7{J}2ulZ4=roL8S5eE$;JlMZ~zcKJCg_*|c# zz6t);ILQ|Pe|3IP1pM4wjjz(+TOP`uir`s~$UoJVUuYhUTA!;O{n3xh=rI ze5wA{4t)7N@h;$33ai{+;NLku*&n>%Fv$-CAC*CNjsYJ!O65)lA2d$(e+hnSr1Z}R z?{ro3(o*nR{vC}~;H`Y`as&8zzu&PPyv`x@&%NLu7E-;AfDb#T_B{a}eZBb4;J41m z4_CmqIN#}WvXvn@Yc>JNdkU&r2L-> z{NOXyDt%m-@NMhWzIniV`rVj9;1@1vJQfH4dY$}G4m@#X)vF5l)O_MK!7DY? zJX0V1WpD8&;6?hWUai6Bw-oOHUdZj+4ScxYG3X2aP8Rud5P13KYR8e_8Kp`c-qdYS6cAH3FXf$;A>{f{x`sr-jSX8!M`dl`NH5wuWOu^0^e6h z^FRggq{CI;_rd2pke=G$2mS8EN8q11&$Bsr={xd6Tky+8<+sk@%S)@=p5TRizR(YR z{!Q6G6#VKvl{*@I%~<(u68Ph_lAj4aH?!=S2mYw3%3T7!Jd^lJ@T1kGe?9n+&XV5- zp5<%x|2^P&;>iBP;LR6G{y6x+w9Xra~Ztu6!o{8;N|^$xW9u}>7nuXC-^L% z)4c%iI#}{i-!G0w~iq9eYA1l@gl3fQ^D&Nm;SH73+|9T3&3;Clb@G^ z$7mouYry+^Tx^^T%cXGw_5JWoJa+A9^*uYD`dnhyi}Z`MvSMr_EBiuYuolo>&_27nxLU zX7CgfRNtK7ar>yg`M{I-eg1dApZa{QB>1fr(qA6D@g(v0z>i)Q{{XyYE%6V*Ke-`4 zGy~r~U;b|czO}LH)d~FhQho1wfY1C*<$ezS))2MV5b*d@G>*OiZ+l64CW7DbJT?RT zkM){==Yk*eeTT*1eUr)$--5UQRpaqH@Uq?)Yz3e7wd~&wzW%Q4KLq}s_mw|^5C2^9 zXTd98RzJK1Uea-r8{o$?%l>=daq_DjAA_HMM}GJleDo*k4^jM{_p5Pt+*j=@GAw?--?2#m@Hlf{E6?iRRT|* zU;3+qU(X{y*9Cw5Tj_5Eo~o~SOYj1HrN2FRHoyPe6@0z(410s`bRO~m@Vvcc=Wy^` zB~SgKQ z2i~{8_z&Re9;;p_!E47AKM&s4?@wL@@8omR+u+&#j{O7h`2G$)1yAqqTm;|4el@;E z7nA+b!4vp*mgA9^mEV$r_x@YsIyLyWS0$ebe0WZkn*+R$^FQ-~-`gquZ-dWIt@)t@ z_}F@y$KC}$^NadbRq$;OG@sW3-;h`3HUJ;FK>C}4C-QrnAA?susrq&VAAVN-p*#3O zpBH}y{^bbSKNvhmA?Y6lo_U-4{{--21Le2r;5pr1bHG3OPW4>`zW6igUjaVsZ~1c_ zcpJZ)y#@T%PWfRMc&qfX^B{Qj2a-PqUh;L7dj>pdQ|b8y{KP)V{|f%dc{q2$Hx*O4 zkH8;1l>eWDr}6qTa!r-9LBCfp2K;^ZpUL2neXsmW@MCS&ujYgA z^L_TE;9LBT!7A|GAFDrX0ROU+{I(tZ(O$L7UhubKtG^xrkH16w1bBoK;y;6L*(5(- z0l&9Y^0&Z`dOv#~JaIG4!%x5`d!6|byyKtJAI*8(uf|=(YVt!|@GpjFUQGg?t%J%< z1zywV9T~wV-&8-z4xY{Xraa(pdVNv|{CP~-QyhFmbM@zP;8`7quL2&anCz(uUM#Wn z)CZ5$UGh!9tE`vbT7$n`MDiWLzw>!YH}H8GB;ObOuJdXJfzSF`ei#Wpt*OS#c<=$f zcRvk0(-O7gZ19s2)IS%34_>bNegi&rvg}_Ae%E=Po55>eQ$O4ZUZ|h+9{_JXM&t1) z`0!EUr@>n~4s#K_mG7Hh2Tzh*?S2P*!dBV&2Y5CAPTybPog5F0@Wkn*zd3k9pS!dLpL9s|>I`1AgY@?VuhB>T?+4yL zvHUy~Jht;NM}zOoqjD#Kw@fYjXM*>2JZ&EM&bqR533z^wua)4h@0b4d;D7kMX&d+* zzXQAnd|D0F_b_oFfuiPs;Z-VcOqx$|1-gBko{{)Zd{`>+w z{$`aMwYK!V8g~(kYJQ6Y-tVI3EB*fn;k}?kP1PU#nGd|oZrPJa>H|MHN5E;>fj90X zd(uNb#kl`nZqwTmWV!LmNl!xPS)}PIg45GOxhpApRW$(ZrCD2OF{k}-;*s5o@R*pp@(gG^bKG9_pr=9| z+2iRf$j9=yZUOlL-iNjYUsF;3=>&fMl=M68Ea;C|M)PD}$TwM`dJP2cJ681?4j$u{ z#IpCT7F2o}6^*7beSAfTxqxpOt_?$7aa|`(3Z^UCbJ>L!&=W{-tv1&o6&ded*8pQB`01v*KfoYx=Xz zI@!s2Z}`XR|D5;QCYO8*wC~|D;%&jBCzd^&_p;X3xZ}Jx!u^Ny-oOj8e<1WnI;4K3 z(*GU5hwAd+FvjOr><F5pKQmg165y+>vavpDgS0m^%KhXS}u9Ed)-3+yWMBql4iF1u&mP0cF*B^ zpltVc&*W#e`?XT?C+*)6=YQMZ$-jS1`-l1bg8epw*U7ZMkmH23|IBdthxYe!e2n(* zIWNDl-(DN6eppn09lo>0Ys(L;Z!+I=VSA-XtZ~iyKJ$G**0|UgTLwg%;VrI=d0b%ffw+?`7-!1zcYLjd{HZnBaXX|GmCKCB`+Y({plZ-RIe1! ze_@8&B|Uh#*eW+0cy*8WT;QFSOP=#d%89av^T~!zT0fM5o`&An%i4d}1EYRZJI00l z)xTta67Xdkr6CpgCFi$f1g{fGc4h}ZbwzsefY)uKe(TRq=vSxL%MZmNzt-pP<-qfM zo_BhF(6gYI1UYXM|4ieeKJ?7=cd7~ar>XoudE?!{lO|QYI6n-HuXY>+ z`Io=SZzI7gI^H!Nyw4o@e;W9jVk&nwc-*P-!$RxdL~<51o{M{s8~tUD^K^c-0;9 zb0mERLVug@{b@|_hd*lEB>*qlPk!*v!Ua9wrB;D{emC$2(PU>9=&7+qetQG_gx?v< z5B}J{U*PLWL4T}AD%Z=hz^f#aA1Xjk@}(NTPU8sjJ)D>5XHo<2;&ZW&pl83&iJF7Q zj4aR=JmGJ$vorY0cJim6g$?D-*&_e@?P_`;N-c^V4eePhXP`@-ef?PH+1I&*pu-kHG>@s{`eZ;3N zR8j8JyL6P|QqaH0<(3D3-bw!9KK-XZRAPxf%1KEVT&>+n6#)m{Ukr?}ti8xCHrw*dF)MGmPQxlfPae9;-uv*MuS z=YYQ*O?)Bv_A}~-%fXxZ-J8|mJ+5lJYydx1TmIqxz2GMKVK?NHM$<%c5d3l<0j}G- z_EEn*1^ErW|9Boeso!(H0$%-|^xOh3QC;9Z_;A02@dSM4ZGo5I4c?djXmV2+ccq<= z5f}VhzYCEBym|}y&FPXsPb{B)rE7lOZOfBKj{$!>IzNf~xyB$rr?>pM6Y>LRtK0+Nw~vb-1g*3TwW#y-qUfazfkVz^Rg!r)*9cNH=(D=YPHMn;6MB+d;SEU`HA|; z3-DaFC#uX1<#zEsEFZH4-l4Gcd;1Z1f&%hSO6W;`PW83AAiuDv40#>$<4>u+J}wRN z)2^yqKjRqqbl;;X20e{FRej5XzwdyhpD77?V*37?w+DgGxGx3upr?@USu_TJ8AI*Z z3VgNm1AYBF=)dfMmbYPnANDy;ALz-GUit@u->$B4w*z?Tq;O&R}rjJzakKhrz zi=P4?Uqb!L+vA`=zvJ`QApfk7`m?vALB53h+e652kFEav47^@R*%MLj4tlHcm*#o-viI=`~*K^@vr`;68sSI$Cstw@V^_$z=^PP{&4A^0she^0&~HubyoW> z27lT~9qn82+F9kF@4%1w_i?s@_s=S@8~oTj`P19fP_JixALb{>pBbk4`7C&4=R5gX zkf3Kx9Qok}{PI)yYKzAg#6Jds+WJ3Bgm)qd2Uz8ZyTU??+w1?ciBGx z{A`_5lOzK=KD%fRowBd{7g`8e6X z5jBH+2ltl#cOhT&sd!cJ2ZPn_wZJ!fVEK8|pufI< z7qThjt96#2KL-D(gVq}z!PDPRKlCyv=udb;_5BR;X-bJZ9WBT|ao&Z~^#X7ATphvN z#lQ#q_Z+=_3jD~gvS$v;t=vKN^6^iQAJt8Qe%3$mo<5IW2R)?qiT2f^F@r1m-n-p1!y4yOkFiEl~%7s&66rT*-+j37TIqqv{l34GNv`P0V+fhT%j zc0Pyxcs`$sEOkLX@fr!b_`oMmlAeT+&+)b9ljP)OR4*^bgPsbR#j`?w?nU|kP4K;? z)jtb>XIrTL=I0lK{@g!}}@)mwnq za-63f_-})xzYBPO?;rg&06jMo$)DT7r#VpJ>)b(4!$GRo5y-bH zCE%YU4f1P$l73%@3w(Zm^(&_{27cRlx&E94KGFBo?xWl`3Dj?&fT#Dtqr)*lPrM)G z=V%%RfuF3Y{u~#4X$pZP;E{((Pb%<=C1i-NTLk^d#;RSiLw-jCjh8&&eU`|cLg1&` zs@&q>i%&^UIq>9u&$bG9Hz%aj1iw{Ib~^kW?7y=?yb0vH>=1C6AjmiN?^$$!eB~e1 z?!I0X0){rQg@ZgPuh9)K8{C{&`yY&0+T-KX$tO zzYy|Wy35XQz_T_|yZh$^f}WRk)Lxq*Kdrxjk9C9mxsI~u0OV6u6gUdLyuHSw(`tjB zz24AYg#5#%0)GBJ$glfK<=%mO)lcNNKfsIoocAyA`mN-*NNTpA|D5xU{R~0i*`4_2 z=Q#o&(_Zc9&qLr3y}wQi{f+#c$^st89p?@3*i!`ZgZIm%atnhu-J^;+O(fW}(}|_8 zmeH~P z4|yTn6Y>YU3iJc7UZ!Gd*z=$!6W!U^#yoU2MnVAw*&s?f3N!CqFkDP;((`#E;|#0S9V@{ zO7K62OK%47N3&$->);U@NPlkdDZSJ#Z-FmAEIq}*znUUm7W{U7IiNClF@IodfPd$W zLOt*YNmZ}L;NSb;r4{%E^H0DhEl|Jx6nsNB)wd7$7k)2pAo%P*q-O+pSI;x!!2A0= zXexNpp7Q@!;JtoOeHVcD*(^JkgXi$?)2#s?_o@893B2xh>Hi+QbR5~UAH0<3?H|E^ zascua_fj9PtC=K}gey2Ax_+!rxIl(8#Q@!$mm+2(`zXLw#SAF+Of>-)d zekc$A$m`Gdz@H7&IQ;;8^-0ZpAA)~BO?EZ|FYUzbHsIF=seg6?|JLW`J-}}}5AbvF zO3_u{A>dD(5b*{0p!$-Z2>y!??q+~rah!iHc%C=q&&A+t@5pc8f=4JL{vCMctLkrC z!QXf+`Q6~3R#&-)z~i@-{7>K=-%`7r1uy$j->FOBJG#oA8{o4$i{Ar3@B90Y!E^1> zcj|BOgs0{ID1Ptc)wr9zOLoQv|GiNG5TQU6Z?e$#nn>A^4jE_y``r*_#L-nUGO|!*EIsadQ-V4rfFJYk01gMg??n5t;4l7`om0RItrDLF{+HvKUxV+REWa%S zPuNiQuLf`8{HTrKKl^}U2YB>@(*No`o>%>IdQSQ62gv{4TJ3uh{E!dE&x4~M_``|7W9qL_|nSi z=e!RX!{=@e`-XBSHP*Q1eZUv1rKcS9Cv`qm74W=?q=)&*v+t?hy_^c=J|Cg>Y63k6 zBFb;A!E?Jp9l(<5W%H=qcPx zeoh8nrL_8U8t_QFC7%iWv;#BQ!8cZwpL2u1=KB=PpReisL*~y{@qOD;&@=pzJWw9I z#Z%eO{P}%L)xPYX8TP6l)`Ok}&fjMK`~V*uwSaut>*^0}!3&<1{!ZW{d~Vwv{Dkvw z*>C5smY#u-zv=VG;ovKN6BrA=wxawq1$>@6xR0Yk|Eb}7G+#shVJ-ECW#FeA$YGxR zZ(qs(8zJA}jKB`?j=qPo4?NpK^($|yf}Ni&7C#C3QZ>|1JY5F)X-;6d3i*$`FTM@l z7LI&25;)`Y)9}2xz$e`Ru1~F#g_j+gM8#cD%WXzLH^|H^5-bX=PIL) zFai86{|?u5@Vgb%zH`81W)N5e9<_@4)e7*PG03O7tp0WeJhOlI;TP~esWfl=3V!$1?{$I~oUD310&iYk?eZMF_(1t5vWf}z zH}-kGpEU{mvJ=x1LcU%v=}!)RY^4fJ2R^5@{E!tqXL{NHCio`jxfK8(kWKa%0dL`a zREKYZ{nhWuo{ErP#x`4Ov z{OoXK&_CgX^!Ru(@YTL>FbsMc_;-=UfG>lKlow}UTs;`3hcBrP>>904Eoz1sH#c!y2`KZ93Iu6}z3{I{X9^A`BF z%hG=z{77Z-C*WCqZ}BDg)eW*gnyMYzF_u4oalv!wO`xYqGx?!4_|tN-vjh045(3@8NBt%FzTj8qr~wCo$Mn7Xk>Ck3$@UHk;@S@x0pUvR&yQ*G0!F#ns<0Kf5k_-T*KEw|IW=lOG8b2A_68^eV^?2GYUaZ%(Cjw{yYc%>b!Fv^i+V;9H$gybZjfKRA29C(cs)9tPj~p16;ngFU(5SI2jFCGcuK7xr>9@E@|M zzukoX-u_)+56d85$oF6Vg#7o<ps^$-RV&{|p(yf5ZT((%S@2d)u&NAR!+G7_P6t2aa=X`q z{2x8kZ+*=s$j8Yp!B&t@5nu9t4kO5a3y@#r`!d(SQyh?;zkx5^DDV(`&S}~C3_Oby zX(Q^dgFTbJ*Zdg+{55~aef>MgKl8&guR%Vp?`x+4&zVF1&kVlok?NHbJg*l59`>Q! zdS0Kr1NptNrKcqL_?Q~+<-zw1*1Y!~cpoRweE|OAf&B9!c=hutw;6aF=WqKNwP1fD z_jCWeP~fH0$(|n2lk}3f(`|$Np&4pe|7>UAmrhFl3+Or8Q1kXg@ShwX@N*kM&&#E% z*IdZ2cEH}-%OKxoz5L_!;=s#vm!9vS=W-6&>Ga|tKVz-hYd7Ru@0R_Cz+eAP@_vRO z=y_2{{4C^u8Y6HCe55<<4e;~+KHdYL>wEwoONVlg?33W%kiYYb=G!Q8Q;_d-Q|%ZV z{M}xvZzAyNegG^5_|Q#~PY=G}Z;iWb;N`qe%mx0fA0{ja{-BWBu_$=-o%;Tk0q^s@ z%B=+6u$k)>8T4I*B8#5ej5B%-}ks%LVm$cf%f2=eXi6My!ki*KUWd-ZyzT6 z2SC201E_xHKFAkNtOg$o`5Z^2$Jft-{Oexm&4T=X_jCUodyuc=b?-9BCwfi&%Fn0; z`OZFv-3a;Ez9``Ebday^^VWTkpHx=u^#geE&(t4Ig2&1(ejfa)1JeGv#8B=q|E~IN z$p7toK%RDk{7g?U-c|)(GJ))jAa@78v%2P)=-^A84;c?U*;e(#q~NK%kVy^R)&a{* z;3d9Lx&G`0dy>Ddev%jRBR6WkdK>(n4@P{95%ip_B|rOF&%hgBl>JqqXVFc8THrA% zNlydtE1A_GPNxp~3%sTN_A%rmmy`cHg4g##wLAD~Kk)e(_%B;zzptf*ax1Kqem@ry zc<#)Sp8!2Cd`>YP{Hfp1nFAir`8kWgXRc5?`Zyt!`|OPTvkvmP#%Mm@0-mCV?B506 z!TccjhWhF!$H0&JcRkL4zx$r-`31a^1OLB*H+B5&E_jQv>JN{=6Z>HyKPwjeF!Y4# z6pN+tC zI5DIM^vrbJtTgz*FJym3@Wl&MZZ+^FWn^a^@HXCGHw2&R3juz1GuXM`7n<8a{?ak& z?*g9Q3GBVVYd4eq{lS0VE1qOb1z1r95 z0)cN@DZUE&6FKnU>pDSxiN7zZ-M@JntG#}38c~pM`B?RGGX&l-sWdoT7j@-r8!zQw@L9@Drk3tn@B`del2azAN4^t2M}%u+|? z)`NTkAM7*+kKzSXEAoWW<8VOGU;hJ*-%lZ**a1JMF9-Q!qa{BO@=u4WT}FUk^*9{| zUcwjV{A^9oAIEXLuOPqYi0oegzReea_zq!J-?LZ)`ERyJkC)w{+^x&RzlVHD$A|ZW z_nD`5{1LpvK>6nsc>YW3Zx_JV_&og@cvK%qIz1)W*~JH94mK4MXpYXcI#cSYCe4#uI_+n4MnZeI&Q9sEE{zE45eBk3eF5Ur;@SfyL zf{(bY`j!VD)JFV0@M1&NE*=KKKk0I-KYR%JgQw)@X5cwqlb$x<9esY?34GZtfga#J zn@G>+;E#RaIRrdzfBE4H@b#Hg--+PUoc})q{Cnr)%>|$1fWcz$-hR;KTky+XpLly8 z{JDLk{OR<{zz09n{J9%?PED2{4uPk4z`$ueK~Jy2s_$9ISE!=?deYmm=XN$nCvW(B^{`6Lcg23}yf6eogw86S+K059tXNe>=r zmFk-f{H4#wbAh)yD^L*p?x_JM!v{gsY1J2aQ% zql16s_c6RI4)S+*seO||evjk!sljU>(fsevRnU`Xm;}9j3jD0^&Eb#>-(33s7?3n-_CyMxV@M<2=p0Vc(~7T1JpB zolN%p3i-@8Rj<3?)eDM00)OFyspsHRYir){^}kSVmV+ucmWET{gPdpX?ML9p&r45o z$p5)b1*QX^?{{Oef@ixX`~BQf(EsW_QUS=1xgq?lg`I9ZPaM7p_Uz5Ba_d8WpC6+0wkpW)^TB>=$fs~( zyN~&U{M#=i==6xd`%e<@3q5t`sok9xALM5omH$UVKHnLE@!JJ`fq1^HpWY0H{FEdg7WG(o#RO-*0!K2I*-wB?<_iGM-Ki@6=N5SLVlAXRr8|-Y* zSN-iG*%=eO_fhFd06x90 zcrx&rHRb=b;BjlHURl83@Hx&K;IXU8&ivqS7nPq2gTLEYpcHt#2m%$rKlnlR8wWoe z+~9de#RNXd`436J7dgR=_cUjD9h(vI(SBCB*}+SC-;oErmG^yxz&khq#(SDSeJ8(_ zgZ#OB>dy`ngnIoROCG2R`AvS0u0D7?ACxr#ACN-ruG0UFZ;x{#Lu|-*yeoTn5Al`* z@W~)Q{a1lB;D`3h{!HLM`}>sxJm#m8&kMeFxY~vGZ^|aZ`1~5*Ph@;PODFjuCG`K; zMEySlcYuq6y>kyJn~X8K3XePJUo~zK;|77@r^fh5W<# ze2t&P8K1x4gKoy>YdaB@@%ilrjL*OB`zegi_n#oYF+N}KwCct9{G}G+jL#pbE|}g? z#Uix}9TurMLPO|uO9;s~`1b?Jq`&1i#^=lU0x0A2?Hxd6e15qD&y3GEYoT^$ zd_KAJA{d|V;SV_D^Yc>pgQ?*i#_ti|k7InkMHBT~#^+;soy_=r1>eVEe7-|-`G@iO z+6BZJpZ_+3>dW|i@@Hxn#^>uh@WA+d!S-6WFh2jg7hH_bkM|GPFh0NC@m|K~`|XuI zjL&a$JcRN2aeL%{#^)2~mY*4)KjK6@#^)dV0x0A26H{tjFh2kGQ*p-U@Av^)#^*ne ztPaBXd>@~$F+N}0=Mjw0H*!B=e11(#>1TX?+a__w=L`4Le8Twr*o+##jL+|OUMS=9 z#imI=DUr`Pe=;VSN7fC$fj}`NIx; zGCse?7dRN7zwtk%=mobEz-mI{3>7QVSK)G3CS})|K1>#%lLfS z!kPydpP!dg?aTOl&V94K4*M>qukyz6|5@P5d4agy zAI9fBz~wkC-`@ssPcioJ3#il1Aa7z>@Nwv+5438 z;0=6F@ICNIJEZ>u@ZH`Jdk1!LzJUKk+s)w9EIS)I;V%KF4{@|BJ!Dc0#w0?Sr1O-dKDG`Nv)d zZUyfiQFiVIPuy1J9s)m9L*wEn@HNRazRrTrb>j9V@Z-Bx-y7gXd=cs%_)9-b{usRN zJF@3*@Qi*4+{?S*pU4>`@6So#b)A=$NX-*?*FWW-6yU=gU`r1^C5H^j2HrV|`j4lN zpns_o_6tJ3T~w9p=`6@c@O_ptkdIbI?Ntfm z(39w0+37ThApgW0_p6XUdsuef2LENG^gjT9eV_PK@GM@JMo{sg+!D^Kj1Jz-2aoZ< zdw5^tXC{K4bOxy*pY@u6(^7+cRd* z%^M)DD=v6_!ga;u2`VwOx<#<_Sw#7P>xzkl8iZ|{`e@W;+nqT9nJa~!? znt!;iXgF66xwx$!l%5Pj(^t`8bmruO2xVq|jZ=enYa*Z*8sbadW0*ALSp6iMO9W^dEPe%5|IL?z_m6ks_PtNl}BIn8UK4{`RncDZuI8Ux~yqELj%UH6X z^W-O))o(dZp0^)LqMtYPIYN2xNgvAtoG0@?QGGd2#`sN~e%tK;0R7gr*8lcfgJbGH z^jq#NY8U#gb58Xu`Yndf_2{>YemIAITNhXUq~GpT)HtQzmd=%*>9^ZXe52p0d@cLw zw{3~kKly#x{F&tWeQD|i2){2sd%wW%OJqNQ!S74DSn@x=FOllW|3lCp_Bb%c@5_a) z@*BS|aUICv_vOYrEp^7~S^lkDX8<@ImWPcFg!i4mpe26zWQEWz(f>_e&-zc1;sO98(x3%u^)_a(RI zF@9g-w2+&!JNbPXpGEfY`?4gR+MVB*D_&pm`%>BS62C8#*GfOXFWFmbT=4rc zZM6Kr?@OEl>d*YXtY4%ViQkt)WmGP|FWqj4^ZQb#p7itklJ^tY!|%)f(ee+!FFn0J z=f1U{e^`?H*1=1qpZnJ1xl}LiTQkj*Jol~D96#s2b-`5i2ku+9dVF!;+G(fy3HPlX zpUXeow~mOfcI3YG#stZ8-`eB2#uxXkEyk!`{JwlvQhw(5WzR9m^Sj*blH~b)Ipv28 z`F%;^A2iD(bz%Rq=bV6tW#G$vu&Tj;MqoM3^F~R=0>(q|zA)jKGKv(b?Zuj2c*;h!<0Pt^*s~-*r z&(&9aEchc&BvZhLq?F%gf$#Hy(%0a_{SeDC@H_9R+|}Tjwz>a<=WC>LcYyEm{%#-m zl(*F`?9Vg$iL*b?h%bBCpJxq`Jp1!R|9~p{bD3l=!6DWiIMfGQZ>(gBSf+ z^9ogBA&VTR|%_ofW*Q_P`Z_9n*yMHgT0OR~8{BY4z$p5j&K+|8)b7hMB$vFQ&?<*PS zf4oq3GR_~pvBn+a{Hf!qpD@nkghakMw*7p2m4WgTWJ} zRDT-a@JqUj7fb2g8-uEp5{q4W!DNl0A|8eE+f6MjnJ|qFJ>IG~n@DeN3 zE*Zg3cTl~ugMTz!_U8d_8%usG1m0npS#GFEne1K!~q`DZP7J+BiS-U|IHMpJ#ic0#_g_u~h^w>yu*%dep4 z#V_g)ry>7ZM}dprsj>-N2j9?B;0}1tC9?Am@P~en;xF)uj%!6y^9MW2`gglxf>-M! z{RzNdSaCA&=AOsWf+zC>w^_i4XIFoC1AMXLf%(D9R#H0_1|OMS{jC&uT0fLq0X&KC znZ6G`JF@Jl4L<*O^{bD-^E6Vq&B2R)qAz_-OFleI!2#e3j4BXM*S6DEWEdZAQueOTbh39c*t`f}NetNpL;nd%Z6G z+rT>=*ZlKpxfAO@)%ow75Yz7n9fo}4FJ;eh@O<|KTzs%6;RCgoKl6c?m@9cNa|2H` zNBno_U;B~zgOB}!e4mfijxQkp)@|7t72mrJeI*zN{Cr*M_wyn_|N7O^lM?cSzLVcF zfLA)A`R8@;f`cTV8@&2)`NyB(Q0}!$;>94JHk#_|big40&UV>Z8SknnmZ;;R9iwFQ2zfAJcZ-l&A>ODQ@?U^2K|XXR=qkwK8@es?g8GY zv+DIZ_?T7FGX%WwRspLE<;L<4RyeE{`1&K#vNOuz+ampAaDP>e`)9sDfcfG&T4#d|MH$MQgHv0%JJuns$Qs9Ki{j(4*uZ<*~9(I zq7teX_b)}?mjdozp7m0@mxKQ0?l|1P>{_65xqo?CQl8=dWxF5bZUX&zw+OTbAG1k* zQ~&q#HcQRa{rRWff?>!lBZI++`p{#?;3Fb zax8-SKld+XUXwq$e@R?X{^b58Z424S{Y!%RlIQ+q!+q74`$R{r`X0KQBB1#Fjh4x+P0O0sj$rtcT*sAb)y^ z#$y`r^>b9OOyHg0)wswGzVTOq+~9qDL7Dj^u{@s?f&8yYJa2>N8!vmxgC}1gd#ZwW zPb1Ft(qFz6N&0Wp|64$QYc0)tZNanqcYZs87jS>*4qnXnlDLkV>IL0E z$PaENFdV$?D%s;@bZGbQe1JR&@&)T^{LTPh#?RD*AeyC!9T<6NPl$jjEw~1g6DI&iNPnmko}&f zgZ@^D)X&pH{{e+oYT zsPypO-_|u67t9A}8dv>|`2Z81$j{6Nn6Xxz`2g{(nE3z;e^R?JAE3DNJ@QIj@LRV1 z^8ef5$Ir-q<^v>uB6;Qmv>UB@F(06j1EtId*x(;9WIjM6pHnj*pt|pOFdv|ORJA+v z0eqbzf|s+QzE@_dqRa>Q<%-&IF#K?>sPvBl@0Uk>0(h2G@&oe${@AaM!+e0Ut>tIt z0~~EEJq~9C`)9bpnGdk}O|{Dw*wfq%&U}ESUMDag;ENQ}!+d};c{Lu-K>rP&Tm1rF zeWvXH6}<8R@w?zj{4VPw@EV=fpPz&0_jvI!Ven6ZO=`zj8uo#==`a5$1iy1m_4P4c zkpJF+H$TG~_@{46PgdxOJ5PGv1V88dYX!g)4pW7kju!MEcuVyy4f#dh82P$RkpIi) zCeRR_zALxdh36V?`v+-LLH_j~0vW*zzA4MI zgXcIV&U1~k?wCB+NcXkck>?uc@2J0(gZ}h~#d)rgzN7}JUftSe?0)zZ3dj`Jd++ul&aS^{aN_xyCDh@?2w+ zAJ)2#a)< zt9~G#=NjF9k{@`kF*UaOA3oj=cWjVIkyQJ!nm zeM9ZbbB#4MWDn0ZYW;umvT8c-l;;}nj8}bmu2Hg*{KIpNuh*-e@LXg4x0+XZuCb_^ z>cw-7EGJ|?&owsmkvz{eGXJ6ez;lhu-pBD=qrgP<2cBz0aDaj58s#EO{!jF`i6sPh zu5oCq+9j&~S!mxQbL2OkYjknIjOQA;mdT$y*O*gK{^Yqv`J3whJlAMBOYO*Wjk-rA z&vT8c&WrYEKG+|87XPB22 z?UCxmysRe<_&L2M_$Ru*U(CxY`lHHi1ApFYrv~W+{^+FSeViZkKXN`H^RlkwQ@b!P zt6~aq=4Gw*0Soi8R(pZNysY)3{SUrPu)!CbZPA^5F;<46u$2l?*au%3nd4-KT}68M7;#BYFSIVgS)d`Nup$Kc~X zRDJ&jKkNWN6#aFub9g-o#wPbWPKm%LJ(r(TfKTxIDh{s%{YM5%FdO9SWs{y<;M={y z^0qeUsp$n#QOM`>J4jAH4f3PjR6F|f5O@l|v*c@Ffu}5|epMIxJGGLZoz@@ZfAa63 zwS;`Lk}9`7cv}z9uHbuy%m2N>-*sMupLq@C7I𝔙ortNve5lEcC>!q4~tm9R~SP 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 Yx%GGXm(?reC)c8W+exVJ9^?N10lT%QcmMzZ literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.cpp new file mode 100644 index 0000000000..8d5e038a9b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.cpp @@ -0,0 +1,619 @@ +/***************************************************************************** + +$Id$ + +File: ssl.cpp +Date: 30Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +#ifdef WITH_SSL + +#include "project.h" + + +bool SslContext_t::bLibraryInitialized = false; + + + +static void InitializeDefaultCredentials(); +static EVP_PKEY *DefaultPrivateKey = NULL; +static X509 *DefaultCertificate = NULL; + +static char PrivateMaterials[] = { +"-----BEGIN RSA PRIVATE KEY-----\n" +"MIICXAIBAAKBgQDCYYhcw6cGRbhBVShKmbWm7UVsEoBnUf0cCh8AX+MKhMxwVDWV\n" +"Igdskntn3cSJjRtmgVJHIK0lpb/FYHQB93Ohpd9/Z18pDmovfFF9nDbFF0t39hJ/\n" +"AqSzFB3GiVPoFFZJEE1vJqh+3jzsSF5K56bZ6azz38VlZgXeSozNW5bXkQIDAQAB\n" +"AoGALA89gIFcr6BIBo8N5fL3aNHpZXjAICtGav+kTUpuxSiaym9cAeTHuAVv8Xgk\n" +"H2Wbq11uz+6JMLpkQJH/WZ7EV59DPOicXrp0Imr73F3EXBfR7t2EQDYHPMthOA1D\n" +"I9EtCzvV608Ze90hiJ7E3guGrGppZfJ+eUWCPgy8CZH1vRECQQDv67rwV/oU1aDo\n" +"6/+d5nqjeW6mWkGqTnUU96jXap8EIw6B+0cUKskwx6mHJv+tEMM2748ZY7b0yBlg\n" +"w4KDghbFAkEAz2h8PjSJG55LwqmXih1RONSgdN9hjB12LwXL1CaDh7/lkEhq0PlK\n" +"PCAUwQSdM17Sl0Xxm2CZiekTSlwmHrtqXQJAF3+8QJwtV2sRJp8u2zVe37IeH1cJ\n" +"xXeHyjTzqZ2803fnjN2iuZvzNr7noOA1/Kp+pFvUZUU5/0G2Ep8zolPUjQJAFA7k\n" +"xRdLkzIx3XeNQjwnmLlncyYPRv+qaE3FMpUu7zftuZBnVCJnvXzUxP3vPgKTlzGa\n" +"dg5XivDRfsV+okY5uQJBAMV4FesUuLQVEKb6lMs7rzZwpeGQhFDRfywJzfom2TLn\n" +"2RdJQQ3dcgnhdVDgt5o1qkmsqQh8uJrJ9SdyLIaZQIc=\n" +"-----END RSA PRIVATE KEY-----\n" +"-----BEGIN CERTIFICATE-----\n" +"MIID6TCCA1KgAwIBAgIJANm4W/Tzs+s+MA0GCSqGSIb3DQEBBQUAMIGqMQswCQYD\n" +"VQQGEwJVUzERMA8GA1UECBMITmV3IFlvcmsxETAPBgNVBAcTCE5ldyBZb3JrMRYw\n" +"FAYDVQQKEw1TdGVhbWhlYXQubmV0MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEdMBsG\n" +"A1UEAxMUb3BlbmNhLnN0ZWFtaGVhdC5uZXQxKDAmBgkqhkiG9w0BCQEWGWVuZ2lu\n" +"ZWVyaW5nQHN0ZWFtaGVhdC5uZXQwHhcNMDYwNTA1MTcwNjAzWhcNMjQwMjIwMTcw\n" +"NjAzWjCBqjELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQH\n" +"EwhOZXcgWW9yazEWMBQGA1UEChMNU3RlYW1oZWF0Lm5ldDEUMBIGA1UECxMLRW5n\n" +"aW5lZXJpbmcxHTAbBgNVBAMTFG9wZW5jYS5zdGVhbWhlYXQubmV0MSgwJgYJKoZI\n" +"hvcNAQkBFhllbmdpbmVlcmluZ0BzdGVhbWhlYXQubmV0MIGfMA0GCSqGSIb3DQEB\n" +"AQUAA4GNADCBiQKBgQDCYYhcw6cGRbhBVShKmbWm7UVsEoBnUf0cCh8AX+MKhMxw\n" +"VDWVIgdskntn3cSJjRtmgVJHIK0lpb/FYHQB93Ohpd9/Z18pDmovfFF9nDbFF0t3\n" +"9hJ/AqSzFB3GiVPoFFZJEE1vJqh+3jzsSF5K56bZ6azz38VlZgXeSozNW5bXkQID\n" +"AQABo4IBEzCCAQ8wHQYDVR0OBBYEFPJvPd1Fcmd8o/Tm88r+NjYPICCkMIHfBgNV\n" +"HSMEgdcwgdSAFPJvPd1Fcmd8o/Tm88r+NjYPICCkoYGwpIGtMIGqMQswCQYDVQQG\n" +"EwJVUzERMA8GA1UECBMITmV3IFlvcmsxETAPBgNVBAcTCE5ldyBZb3JrMRYwFAYD\n" +"VQQKEw1TdGVhbWhlYXQubmV0MRQwEgYDVQQLEwtFbmdpbmVlcmluZzEdMBsGA1UE\n" +"AxMUb3BlbmNhLnN0ZWFtaGVhdC5uZXQxKDAmBgkqhkiG9w0BCQEWGWVuZ2luZWVy\n" +"aW5nQHN0ZWFtaGVhdC5uZXSCCQDZuFv087PrPjAMBgNVHRMEBTADAQH/MA0GCSqG\n" +"SIb3DQEBBQUAA4GBAC1CXey/4UoLgJiwcEMDxOvW74plks23090iziFIlGgcIhk0\n" +"Df6hTAs7H3MWww62ddvR8l07AWfSzSP5L6mDsbvq7EmQsmPODwb6C+i2aF3EDL8j\n" +"uw73m4YIGI0Zw2XdBpiOGkx2H56Kya6mJJe/5XORZedh1wpI7zki01tHYbcy\n" +"-----END CERTIFICATE-----\n"}; + +/* These private materials were made with: + * openssl req -new -x509 -keyout cakey.pem -out cacert.pem -nodes -days 6500 + * TODO: We need a full-blown capability to work with user-supplied + * keypairs and properly-signed certificates. + */ + + +/***************** +builtin_passwd_cb +*****************/ + +extern "C" int builtin_passwd_cb (char *buf UNUSED, int bufsize UNUSED, int rwflag UNUSED, void *userdata UNUSED) +{ + strcpy (buf, "kittycat"); + return 8; +} + +/**************************** +InitializeDefaultCredentials +****************************/ + +static void InitializeDefaultCredentials() +{ + BIO *bio = BIO_new_mem_buf (PrivateMaterials, -1); + assert (bio); + + if (DefaultPrivateKey) { + // we may come here in a restart. + EVP_PKEY_free (DefaultPrivateKey); + DefaultPrivateKey = NULL; + } + PEM_read_bio_PrivateKey (bio, &DefaultPrivateKey, builtin_passwd_cb, 0); + + if (DefaultCertificate) { + // we may come here in a restart. + X509_free (DefaultCertificate); + DefaultCertificate = NULL; + } + PEM_read_bio_X509 (bio, &DefaultCertificate, NULL, 0); + + BIO_free (bio); +} + + + +/************************** +SslContext_t::SslContext_t +**************************/ + +SslContext_t::SslContext_t (bool is_server, const std::string &privkeyfile, const std::string &certchainfile, const std::string &cipherlist, const std::string &ecdh_curve, const std::string &dhparam, int ssl_version) : + bIsServer (is_server), + pCtx (NULL), + PrivateKey (NULL), + Certificate (NULL) +{ + /* TODO: the usage of the specified private-key and cert-chain filenames only applies to + * client-side connections at this point. Server connections currently use the default materials. + * That needs to be fixed asap. + * Also, in this implementation, server-side connections use statically defined X-509 defaults. + * One thing I'm really not clear on is whether or not you have to explicitly free X509 and EVP_PKEY + * objects when we call our destructor, or whether just calling SSL_CTX_free is enough. + */ + + if (!bLibraryInitialized) { + bLibraryInitialized = true; + SSL_library_init(); + OpenSSL_add_ssl_algorithms(); + OpenSSL_add_all_algorithms(); + SSL_load_error_strings(); + ERR_load_crypto_strings(); + + InitializeDefaultCredentials(); + } + + pCtx = SSL_CTX_new (bIsServer ? SSLv23_server_method() : SSLv23_client_method()); + if (!pCtx) + throw std::runtime_error ("no SSL context"); + + SSL_CTX_set_options (pCtx, SSL_OP_ALL); + + #ifdef SSL_CTRL_CLEAR_OPTIONS + SSL_CTX_clear_options (pCtx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1); + # ifdef SSL_OP_NO_TLSv1_1 + SSL_CTX_clear_options (pCtx, SSL_OP_NO_TLSv1_1); + # endif + # ifdef SSL_OP_NO_TLSv1_2 + SSL_CTX_clear_options (pCtx, SSL_OP_NO_TLSv1_2); + # endif + #endif + + if (!(ssl_version & EM_PROTO_SSLv2)) + SSL_CTX_set_options (pCtx, SSL_OP_NO_SSLv2); + + if (!(ssl_version & EM_PROTO_SSLv3)) + SSL_CTX_set_options (pCtx, SSL_OP_NO_SSLv3); + + if (!(ssl_version & EM_PROTO_TLSv1)) + SSL_CTX_set_options (pCtx, SSL_OP_NO_TLSv1); + + #ifdef SSL_OP_NO_TLSv1_1 + if (!(ssl_version & EM_PROTO_TLSv1_1)) + SSL_CTX_set_options (pCtx, SSL_OP_NO_TLSv1_1); + #endif + + #ifdef SSL_OP_NO_TLSv1_2 + if (!(ssl_version & EM_PROTO_TLSv1_2)) + SSL_CTX_set_options (pCtx, SSL_OP_NO_TLSv1_2); + #endif + + #ifdef SSL_MODE_RELEASE_BUFFERS + SSL_CTX_set_mode (pCtx, SSL_MODE_RELEASE_BUFFERS); + #endif + + if (bIsServer) { + + // The SSL_CTX calls here do NOT allocate memory. + int e; + if (privkeyfile.length() > 0) + e = SSL_CTX_use_PrivateKey_file (pCtx, privkeyfile.c_str(), SSL_FILETYPE_PEM); + else + e = SSL_CTX_use_PrivateKey (pCtx, DefaultPrivateKey); + if (e <= 0) ERR_print_errors_fp(stderr); + assert (e > 0); + + if (certchainfile.length() > 0) + e = SSL_CTX_use_certificate_chain_file (pCtx, certchainfile.c_str()); + else + e = SSL_CTX_use_certificate (pCtx, DefaultCertificate); + if (e <= 0) ERR_print_errors_fp(stderr); + assert (e > 0); + + if (dhparam.length() > 0) { + DH *dh; + BIO *bio; + + bio = BIO_new_file(dhparam.c_str(), "r"); + if (bio == NULL) { + char buf [500]; + snprintf (buf, sizeof(buf)-1, "dhparam: BIO_new_file(%s) failed", dhparam.c_str()); + throw std::runtime_error (buf); + } + + dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); + + if (dh == NULL) { + BIO_free(bio); + char buf [500]; + snprintf (buf, sizeof(buf)-1, "dhparam: PEM_read_bio_DHparams(%s) failed", dhparam.c_str()); + throw std::runtime_error (buf); + } + + SSL_CTX_set_tmp_dh(pCtx, dh); + + DH_free(dh); + BIO_free(bio); + } + + if (ecdh_curve.length() > 0) { + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL && !defined(OPENSSL_NO_ECDH) + int nid; + EC_KEY *ecdh; + + nid = OBJ_sn2nid((const char *) ecdh_curve.c_str()); + if (nid == 0) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "ecdh_curve: Unknown curve name: %s", ecdh_curve.c_str()); + throw std::runtime_error (buf); + } + + ecdh = EC_KEY_new_by_curve_name(nid); + if (ecdh == NULL) { + char buf [200]; + snprintf (buf, sizeof(buf)-1, "ecdh_curve: Unable to create: %s", ecdh_curve.c_str()); + throw std::runtime_error (buf); + } + + SSL_CTX_set_options(pCtx, SSL_OP_SINGLE_ECDH_USE); + + SSL_CTX_set_tmp_ecdh(pCtx, ecdh); + + EC_KEY_free(ecdh); + #else + throw std::runtime_error ("No openssl ECDH support"); + #endif + } + } + + if (cipherlist.length() > 0) + SSL_CTX_set_cipher_list (pCtx, cipherlist.c_str()); + else + SSL_CTX_set_cipher_list (pCtx, "ALL:!ADH:!LOW:!EXP:!DES-CBC3-SHA:@STRENGTH"); + + if (bIsServer) { + SSL_CTX_sess_set_cache_size (pCtx, 128); + SSL_CTX_set_session_id_context (pCtx, (unsigned char*)"eventmachine", 12); + } + else { + int e; + if (privkeyfile.length() > 0) { + e = SSL_CTX_use_PrivateKey_file (pCtx, privkeyfile.c_str(), SSL_FILETYPE_PEM); + if (e <= 0) ERR_print_errors_fp(stderr); + assert (e > 0); + } + if (certchainfile.length() > 0) { + e = SSL_CTX_use_certificate_chain_file (pCtx, certchainfile.c_str()); + if (e <= 0) ERR_print_errors_fp(stderr); + assert (e > 0); + } + } +} + + + +/*************************** +SslContext_t::~SslContext_t +***************************/ + +SslContext_t::~SslContext_t() +{ + if (pCtx) + SSL_CTX_free (pCtx); + if (PrivateKey) + EVP_PKEY_free (PrivateKey); + if (Certificate) + X509_free (Certificate); +} + + + +/****************** +SslBox_t::SslBox_t +******************/ + +SslBox_t::SslBox_t (bool is_server, const std::string &privkeyfile, const std::string &certchainfile, bool verify_peer, bool fail_if_no_peer_cert, const std::string &snihostname, const std::string &cipherlist, const std::string &ecdh_curve, const std::string &dhparam, int ssl_version, const uintptr_t binding): + bIsServer (is_server), + bHandshakeCompleted (false), + bVerifyPeer (verify_peer), + bFailIfNoPeerCert (fail_if_no_peer_cert), + pSSL (NULL), + pbioRead (NULL), + pbioWrite (NULL) +{ + /* TODO someday: make it possible to re-use SSL contexts so we don't have to create + * a new one every time we come here. + */ + + Context = new SslContext_t (bIsServer, privkeyfile, certchainfile, cipherlist, ecdh_curve, dhparam, ssl_version); + assert (Context); + + pbioRead = BIO_new (BIO_s_mem()); + assert (pbioRead); + + pbioWrite = BIO_new (BIO_s_mem()); + assert (pbioWrite); + + pSSL = SSL_new (Context->pCtx); + assert (pSSL); + + if (snihostname.length() > 0) { + SSL_set_tlsext_host_name (pSSL, snihostname.c_str()); + } + + SSL_set_bio (pSSL, pbioRead, pbioWrite); + + // Store a pointer to the binding signature in the SSL object so we can retrieve it later + SSL_set_ex_data(pSSL, 0, (void*) binding); + + if (bVerifyPeer) { + int mode = SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE; + if (bFailIfNoPeerCert) + mode = mode | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; + SSL_set_verify(pSSL, mode, ssl_verify_wrapper); + } + + if (!bIsServer) { + int e = SSL_connect (pSSL); + if (e != 1) + ERR_print_errors_fp(stderr); + } +} + + + +/******************* +SslBox_t::~SslBox_t +*******************/ + +SslBox_t::~SslBox_t() +{ + // Freeing pSSL will also free the associated BIOs, so DON'T free them separately. + if (pSSL) { + if (SSL_get_shutdown (pSSL) & SSL_RECEIVED_SHUTDOWN) + SSL_shutdown (pSSL); + else + SSL_clear (pSSL); + SSL_free (pSSL); + } + + delete Context; +} + + + +/*********************** +SslBox_t::PutCiphertext +***********************/ + +bool SslBox_t::PutCiphertext (const char *buf, int bufsize) +{ + assert (buf && (bufsize > 0)); + + assert (pbioRead); + int n = BIO_write (pbioRead, buf, bufsize); + + return (n == bufsize) ? true : false; +} + + +/********************** +SslBox_t::GetPlaintext +**********************/ + +int SslBox_t::GetPlaintext (char *buf, int bufsize) +{ + if (!SSL_is_init_finished (pSSL)) { + int e = bIsServer ? SSL_accept (pSSL) : SSL_connect (pSSL); + if (e != 1) { + int er = SSL_get_error (pSSL, e); + if (er != SSL_ERROR_WANT_READ) { + ERR_print_errors_fp(stderr); + // Return -1 for a nonfatal error, -2 for an error that should force the connection down. + return (er == SSL_ERROR_SSL) ? (-2) : (-1); + } + else + return 0; + } + bHandshakeCompleted = true; + // If handshake finished, FALL THROUGH and return the available plaintext. + } + + if (!SSL_is_init_finished (pSSL)) { + // We can get here if a browser abandons a handshake. + // The user can see a warning dialog and abort the connection. + //cerr << ""; + return 0; + } + + //cerr << "CIPH: " << SSL_get_cipher (pSSL) << endl; + + int n = SSL_read (pSSL, buf, bufsize); + if (n >= 0) { + return n; + } + else { + if (SSL_get_error (pSSL, n) == SSL_ERROR_WANT_READ) { + return 0; + } + else { + return -1; + } + } + + return 0; +} + + + +/************************** +SslBox_t::CanGetCiphertext +**************************/ + +bool SslBox_t::CanGetCiphertext() +{ + assert (pbioWrite); + return BIO_pending (pbioWrite) ? true : false; +} + + + +/*********************** +SslBox_t::GetCiphertext +***********************/ + +int SslBox_t::GetCiphertext (char *buf, int bufsize) +{ + assert (pbioWrite); + assert (buf && (bufsize > 0)); + + return BIO_read (pbioWrite, buf, bufsize); +} + + + +/********************** +SslBox_t::PutPlaintext +**********************/ + +int SslBox_t::PutPlaintext (const char *buf, int bufsize) +{ + // The caller will interpret the return value as the number of bytes written. + // WARNING WARNING WARNING, are there any situations in which a 0 or -1 return + // from SSL_write means we should immediately retry? The socket-machine loop + // will probably wait for a time-out cycle (perhaps a second) before re-trying. + // THIS WOULD CAUSE A PERCEPTIBLE DELAY! + + /* We internally queue any outbound plaintext that can't be dispatched + * because we're in the middle of a handshake or something. + * When we get called, try to send any queued data first, and then + * send the caller's data (or queue it). We may get called with no outbound + * data, which means we try to send the outbound queue and that's all. + * + * Return >0 if we wrote any data, 0 if we didn't, and <0 for a fatal error. + * Note that if we return 0, the connection is still considered live + * and we are signalling that we have accepted the outbound data (if any). + */ + + OutboundQ.Push (buf, bufsize); + + if (!SSL_is_init_finished (pSSL)) + return 0; + + bool fatal = false; + bool did_work = false; + int pending = BIO_pending(pbioWrite); + + while (OutboundQ.HasPages() && pending < SSLBOX_WRITE_BUFFER_SIZE) { + const char *page; + int length; + OutboundQ.Front (&page, &length); + assert (page && (length > 0)); + int n = SSL_write (pSSL, page, length); + pending = BIO_pending(pbioWrite); + + if (n > 0) { + did_work = true; + OutboundQ.PopFront(); + } + else { + int er = SSL_get_error (pSSL, n); + if ((er != SSL_ERROR_WANT_READ) && (er != SSL_ERROR_WANT_WRITE)) + fatal = true; + break; + } + } + + + if (did_work) + return 1; + else if (fatal) + return -1; + else + return 0; +} + +/********************** +SslBox_t::GetPeerCert +**********************/ + +X509 *SslBox_t::GetPeerCert() +{ + X509 *cert = NULL; + + if (pSSL) + cert = SSL_get_peer_certificate(pSSL); + + return cert; +} + +/********************** +SslBox_t::GetCipherBits +**********************/ + +int SslBox_t::GetCipherBits() +{ + int bits = -1; + if (pSSL) + SSL_get_cipher_bits(pSSL, &bits); + return bits; +} + +/********************** +SslBox_t::GetCipherName +**********************/ + +const char *SslBox_t::GetCipherName() +{ + if (pSSL) + return SSL_get_cipher_name(pSSL); + return NULL; +} + +/********************** +SslBox_t::GetCipherProtocol +**********************/ + +const char *SslBox_t::GetCipherProtocol() +{ + if (pSSL) + return SSL_get_cipher_version(pSSL); + return NULL; +} + +/********************** +SslBox_t::GetSNIHostname +**********************/ + +const char *SslBox_t::GetSNIHostname() +{ + #ifdef TLSEXT_NAMETYPE_host_name + if (pSSL) + return SSL_get_servername (pSSL, TLSEXT_NAMETYPE_host_name); + #endif + return NULL; +} + +/****************** +ssl_verify_wrapper +*******************/ + +extern "C" int ssl_verify_wrapper(int preverify_ok UNUSED, X509_STORE_CTX *ctx) +{ + uintptr_t binding; + X509 *cert; + SSL *ssl; + BUF_MEM *buf; + BIO *out; + int result; + + cert = X509_STORE_CTX_get_current_cert(ctx); + ssl = (SSL*) X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); + binding = (uintptr_t) SSL_get_ex_data(ssl, 0); + + out = BIO_new(BIO_s_mem()); + PEM_write_bio_X509(out, cert); + BIO_write(out, "\0", 1); + BIO_get_mem_ptr(out, &buf); + + ConnectionDescriptor *cd = dynamic_cast (Bindable_t::GetObject(binding)); + result = (cd->VerifySslPeer(buf->data) == true ? 1 : 0); + BIO_free(out); + + return result; +} + +#endif // WITH_SSL + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.h new file mode 100644 index 0000000000..64ff6e18c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.h @@ -0,0 +1,103 @@ +/***************************************************************************** + +$Id$ + +File: ssl.h +Date: 30Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +#ifndef __SslBox__H_ +#define __SslBox__H_ + + + + +#ifdef WITH_SSL + +/****************** +class SslContext_t +******************/ + +class SslContext_t +{ + public: + SslContext_t (bool is_server, const std::string &privkeyfile, const std::string &certchainfile, const std::string &cipherlist, const std::string &ecdh_curve, const std::string &dhparam, int ssl_version); + virtual ~SslContext_t(); + + private: + static bool bLibraryInitialized; + + private: + bool bIsServer; + SSL_CTX *pCtx; + + EVP_PKEY *PrivateKey; + X509 *Certificate; + + friend class SslBox_t; +}; + + +/************** +class SslBox_t +**************/ + +#define SSLBOX_INPUT_CHUNKSIZE 2019 +#define SSLBOX_OUTPUT_CHUNKSIZE 2048 +#define SSLBOX_WRITE_BUFFER_SIZE 8192 // (SSLBOX_OUTPUT_CHUNKSIZE * 4) + +class SslBox_t +{ + public: + SslBox_t (bool is_server, const std::string &privkeyfile, const std::string &certchainfile, bool verify_peer, bool fail_if_no_peer_cert, const std::string &snihostname, const std::string &cipherlist, const std::string &ecdh_curve, const std::string &dhparam, int ssl_version, const uintptr_t binding); + virtual ~SslBox_t(); + + int PutPlaintext (const char*, int); + int GetPlaintext (char*, int); + + bool PutCiphertext (const char*, int); + bool CanGetCiphertext(); + int GetCiphertext (char*, int); + bool IsHandshakeCompleted() {return bHandshakeCompleted;} + + X509 *GetPeerCert(); + int GetCipherBits(); + const char *GetCipherName(); + const char *GetCipherProtocol(); + const char *GetSNIHostname(); + + void Shutdown(); + + protected: + SslContext_t *Context; + + bool bIsServer; + bool bHandshakeCompleted; + bool bVerifyPeer; + bool bFailIfNoPeerCert; + SSL *pSSL; + BIO *pbioRead; + BIO *pbioWrite; + + PageList OutboundQ; +}; + +extern "C" int ssl_verify_wrapper(int, X509_STORE_CTX*); + +#endif // WITH_SSL + + +#endif // __SslBox__H_ + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/ssl.o new file mode 100644 index 0000000000000000000000000000000000000000..63c8ac1ef531fc1118d6468f0596730fc8bb5919 GIT binary patch literal 1407016 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 ?3?G#=n4%?Q$j&xvB%tw5ei*>*6PEB& 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

                (WhpCJ6l%7UeuW0AX=JyIS*(cN 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%0Dg%D2qr((1!{B7jF@5=Z`w>#+$ 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

                UfgJy?SxSK|5cVcV>blpv>|1q2dH#85o=yi=|bIxvf`l=qpjhvF6-&b5*5KQ6t9a#3g(mt&l66 z^jNhu=41?f485dNQRVVrvZU(OdJ&c3x0fr0>hP+>41lSWsN;Ky)uk6U$_6l&Fhxr` z&e&U!3E}`(8ls@eyIVZ7Z|G|r8PtE8Vit|bBA1Q3SL5L7JuUO`EJloPbOwWsD1VtP z77~I-6$+6&r+;6t`jjQBUH04YHWU!(XD|1mfUrr5E_#S%ZiRM-C`M{*vhd|^S!D1D z269jNSn=Me*yrQkZirReT(9B8p7qBB-YAA|q6}hu-Ec|-f#A6C(0*P{W$3K<6LVdV z*RvpN9uMIPN;6O1;GT|Nv$FTpIR$5k=V&$_(R|;hsT&YNziL(8Q1ooK`t6{HB+e?G z#db5-IrxAdaBvA2h1B9CrQ!(Fd=J4}&_X66&0s|@ztTRaIm>V*<6|yAf^HKm5?{`K zF1$s|4fJS_4M~J?0L6V1i`y!U@YaH{y=;c#caa34u4>uPrqRmj$g2fu?duWcNz*Z9 zNY3Q-hIGfx>*9`@EMF5}68&;En&r1D8pU+p60?Jw*Kh7>E27in>MpT zkmW@i`EJc1HvxwX{UGw0n@%npFZG-ggPg(xu!>v<(_-t;pMpM9O-mb6_6N*9%;_WX z8;U?K=z=fj0*bV0c~j?2SKK)vqUqHXGWTb24%uTbz@hp(01K1IleN2{})& z+$mI=e@;JL#@?(Nv4ga8>&0Hf0Qj+t&F}9te4o1qmlutEyp+@LVaAhs4t)74zN@ z&UF7!lUSHC=iSp`wV`>ZO_|@rcK=N^>@^jo9PCk{{6^&^eF?hBMik8?EBzgM`TZeT z>@Ul^OKEiOZ#Q=+hgMa+DOt^(IIHoZ<&{1!zw!F!mryM$QJ`MZeHz}YzArk@32kS_ zu@B(aD3&sg$ZOJEi&xdPDBh3hS62Sa*P{=BFn}xiUQr{uvxfSyp?F!neK8JNqxQ9Q zkNQOmbAQEPMFzd(v67u}yjH?EooC1*)M1WbhfPaRWVLjzW~`k;my^<3xF*rRY5i>g zJk({NF>GiEQwBLCP&%$@x8sZey;C_XjwkV`XHXc!G;g0_o05(2__$lF z_A37;dJxxF6Mz6Fe4tL0SFJ?MQv3-g>@?v%#qlFzOFt}f6ot&zNVaKdvyUD3FS;g0 zA7p=+C0ktKj$)J5;SUn`HrP%^jGj$qvY1FDZkF~ zW)D?fZtaY(2OqdAt{?)E6LC*0b@Y2I=R^ER^LNW{Dt2IJb_?FVr{kj0k}iYQaU1n2 zY4xu4a@}#OH@t2Y=G-$|9cJs@rx|U@WxSk;7;v`}v_u48D71c#gT#A^Lvn@rd)T7i zk8(Kr9kCz{`j>QpQy}`M&EfEMb)0|talYN$r)$h7%Y~VSq zO6pePK|PAQSahyC`6lJC{}xTMJFOeGEuMP54y5x$>KIuZ~xJW9%_7$3$U0tpDb#hNvo{e@y8!6z`|_EtPVNU2oK2?@s%dWV)Hw&Z<&Yn zZw31EohELLg2{B$mouJ%D!&QdpY0D>a=g|noUFU|G@S`uajh6R2F?UWR}n$pZ&Y)k zxb#u>-VP?l(_U6@scLnUF0fBV(>@aIdKF`CWF?7XC@9@dU@Dr;bhGbd4YgcucC7y_ z-FjCHUc!xKatBte)g@7mv}yhp-2r?>BYj6dWZCeqAWIvJ3Xg_^Ww&!JO*mvyvBELj2j<_*xf^(W7(%3^* zbpC$;Ka5^CjX?ZEVV2-MqooiG-(`zu3@J0os#MWR{3#(Li>8{}A4l!#4C9=RImVsM z=S~R8A}^22>Ja08c=$zp3=*Dvke(B5zrmhT5sN{J^vIvc3cG3rHhvJ4;Et9r&ah@;+@W8&zjxCluU z48Ph=pL4zOq*KxMH=`-K9#oTF38~2U9nON&K(T|}3fbq%nCVjdMS?%JL zla}$6G(>}OE*;IZ6fPjkqDrdB6hn~~uudYg^>nj3_Sv0eFwGm!huxZf{ZC6;ky`6D zWpDCW(VV1f4QO)!O1xrODsh3w?L6PF&wiGjMOQCu3`|0&+txno>hz(^IUrJ#_~Ryn z426n+ZB~dA{=`vx)b_c8lRO4dX>!*zIvEmn7hJelkb`EJ6xkCIzd5e(xjh%-mqN+~CruJSt==%lctU*XpOo15Kc2 z3QixSNdmP5*n%=7VG>@4_nQMvkIXFK_#|j+Ar<8_D6usez}f@NrztDYI*h3gBenqi zI04+I)}ZKmFa}bMlM`4~j=DG9ev4)n`p)oR<-`arEQ%pm6bg@NDJ>kol#X=S{!`H- zx}%O?(6#5z`N3}f6dim@9Nl31Pv|n1e^UPw+59*xh5kpALjZ^*+ClYd&XgkP`zXJh z%brZNWrEDN>BFae6iSLGV8afkyKi^5TrDEUSH1Ya_o8p`^PL_LHVSTMPrT#P@$ zGtTA7^r3Uh4c~D5%ZPm;Q9A4d?LOtpejO4fy}nmg{*RTiUu)1r?>C#(a@H!_KFj!bd+SRId`GN227w>a|c^zyKaTM^S(VEEe|`IQI{6j z;g-1@z0|oM`hHbdN@LVElut3BV3?%M!(KlV=5dxqh4Si};zi2`VmP3v3`GLKr(#7J zQH(?A?FZ+1nm@NMV%)Bt%Sm`hmVS!_ADBDv5$W`?g#^3q(tk09h2pyS^Ur>@SNyL0 ze18uqcparUIO&-CFqrrF_Uc!a+J7^?NVpP5uj1?l^BE+E5mC4 z$ei-|e7QT$Kxw9>4g4eE?8s0#fQY*fk<0X*<~hWR;of2pE}HWJt9?$?~} z63A{He8;e)FT6w=Q(B6|bQ3C#{u9&6Ljqmt<{W_Em30sps;y!Tsr$bal`*KULEOxaz!K$$jWvjwgfRFz6Hn zI0$8|XeXE&kg-HPK$#IS_yErG$;C2@Z=}x&#T~b>X}IjEY9!oBmnRFhvubP87gc&o zZ9~a|{R?jfW0{sZ+N4q>X}qEZz+UwR7pnWea}q!LCGPAd2+Q^`r+)MlJK%{&{8`0bz#V|&#g}BSPgs+` zB7GflQ)aWkgs`B%vV_&Kv|l}ZI%X-_q2&^WbNctM%4FYt5D~`^wR^wWv3&z)@ggYMk=SHv==&RPgAl zHQZ3$I3(*&Q<1W|o6WqjUYnKMB+9l)l==(7b|zL`$J;4M&v+`!EFL2yVuU=+Q7Eo( zloE+wQHsTAf+q^gjI?yk+So_G5PoxHrOrte=#6N8R+;^+DnEKvuh#VIwMwngJa1O~ zN~6k(1G)k|#5D18FU}d6XvR^JbBQ9<-~ZkUJ2zvLnIe=UC+qYaDM5c_$_j zk9SE^6y6}Mm?SGi3$+yjfho>G{D-v=h}|QS-6O73r_fn7AsRYb#QgzZ_anIa7ET}2 z3&pQ5j9{Rj;V);Pjc}vW&7IgycX~$Gi4%`TIkM#dO-vPHE*-yC*%oub4-i!pcm#BI-H(c z?lwAJJZ@RP7?&7VXvLJk%SRZE{y;PvlrO41;|OUnX^keyA){_7AEe0=3* zJt_N`Qc4lrM#ZRmU7MJhV>F+p$FM6d$>F38Aq+!4znDGHP3z~v8(#Y#Dd{(r0Pq^0 zHlH`!uNy0>DV{jPZdc!x!9<%cs}uV(fLNJA9$BC(w{Si8cbhx^-2du1wUl`{`MQk#D!Zd~@gLh99+Q{agR0CXg{VEcQ8sTal z5kAfipP?RHD44fElytW`QsVTV{CR@j1n-KMl~{`Qv2~K(Nm<3eQBX!ftPZD49pQyi z=dIxG`%<}=Yxkf~L1n|nZmUo46K&`v2Wt3q>i~7dPC}}3&Q|LC110veAq*O5VjquN zXTz~*qKMjb~3C7WaYsC&pvbPG+Rpv-QDxDvGm)adM{f{Tht!It^qas+s&}B z+d;lHgd84>Cn7xb03fKT96wqIQQhnzrmVi3lIJ3yD;*bw*qHbk`uJ zxY3CeHyV{1ylqE=aR75${G}kp0$Ja8$6e6dd4;0%X-8+p9=!W@TpkK;?-Y9KXdS=L zcy>wYy_Owq7Jt?voTCyvk~*0%da?T~wmTnjJSrzS9?2sH+$Ji@jD;y2ENM#!TL;(W z)D&-G7N>?*9HGeWR@)>(t;lIte2Dt@e`nV5|84Kxw%bOQG+{i7XD)hG^;GwgsDtI2 z+O?J}(PfS;i7m?e&^K5h2};=JsQ^%x=EBeZM?@Zw31k8ZAmKe1|C&A3mPF!^85xH! zzKDQreDm+~{VzO%VimhDSWe6_J}N@NL1s9>>kIZcM2?d< zzB~Z3Hb$y^Na#FpD+R7`rTg6$@3Zu2b!;&8oBDV;3;*lO1Y^$2Tf$F^G#g7>QghJ{ zw`}cpVX=Cm=(_kA*M1Csi_*tqv4-+DBZNuV@7Sf_x1d<@v;VvF`#Jml=zqUSV{qrU z@_rm1KrDr%?62oqvxzr`-yzBE;TqGqH}8>gN`~+Foaekg-~H_pLn#T*Jt{?m4i$sy zEDdr#-;B+(paeR4=^lf<1k8HL|f%?50A?o+W^h+dSm3a3{F!7)Rqovwa zt@x$RuK!tyU_M^nUV{hqX)HOuC!;{=pm#sU1P-=DW0YuRb~b$Qfz{z-L+YPietG@* z%?s@PE6<3hNwii-iBxHRR&YpoC~cWBs(eE7&@hROMD|$1fp3c61&{l1w_1T_;JiO%27Uqee4swA z8WBQF;yyVODOGHE5$?Y&n;cQ~vn5xQRh-}6Ay4}gpB-80JE?RL(<@S8ON$|h5Nu)n zHgf3CgM0At|F{bO_Fmv{G!=^x<1p1@q`)7&_1v0u1def>LaY}?hnL2&2S^~MQ;qq* z?c*WIp5mp9YuM=Icb^S|Q-s3P#-!jc-h%S#e0hXrXO%~~Txewy!O@vi; z@U3vQ%(R(-0uu>~DwdH*7{liUKWE@r`_)!P}>s%=Bm{ z_lNEH8Q*%oW}H=gAb40TM#+g=87vQ*&8zl!*)jl!96kGIYzrDtx1Tr-XiNmw&J=e~ zX`#X`tyHkYskX3uv;zNih_?A*BR&gX#jcHy;AgU5q50d#?4dxCwpbX9!2Irz(|jR# zbo_CQsSfrH@L9sedItvqtm@5Ko};yz;}8t{x4 z97i~f6HpXUvi;A+ejkXH2_EAu>ZLfuBg)<{-|ev%L2w1@wb(1x z`V#K2!^j9u^q{Vx=y&Oe9vJqP)h}0m=2r57RW0i_YQU^;^HT- zIO7NWW3+}J;AP_+EhyhJ_s=jTHj*`3`&n5d3R7 z1u~ETO@>0VKn24BSj;(=??%OUUmnIm^flp%eSesLMG%26jgl8#C*X9XufYm)+r>Iy z2WHAja@{aLtmu@{T@jqeHy9mVNtsm6@cAU80?gOHah-uvOTNH++)p09LnjT>e0S_Q!Z)bsYvD1$7&s9;2F@ z0F(%7fG?BlV7JKepzw1g4-UuxGkj?({>U{U9@t=$K!5=e%5J;N#2>)O2cq1QsS>L5 z4ysUm0Af~{)knjI%!KN~b_1Bke!@MXk<&~iRS!LKm%!?N#UdkQ?B>jXV)sb+6)e>P z91(C2(4qx@!=r(7FN4KAEi@h^vq9w3>V5u2bM5tBF~@?FHXFEd3iXnCJfKS_7UG%Jw`FuopnGUQnFp` z@ZG`87#HfO&|t7k(?u}d;Z?&iUE(t522(z!T0+lmxC2#%`%1dXc#pR;LN!0{cKi46 z^k2aR#kJjs=plzB{oEwLOZ-hJVs`J@HSIO67+3=3mcnJD^A{T(=C|CQ!tKzY;9*=o z(WL_Bvyw!xHn|W%iP9oC0^kOt3clv|V2f0E3UCJL76I{b{|=`|ss+;moR>W%FqDNV zOZHE&;E0L`I_M~##v-w!)0xGo0uMh=55h^I4nG;0|Cw^)7?o8jy*XwUGAc-e=pMbC zpcHM?==rzs(UPK{Ll6zSID_ZAJLGe?%~Gr;I{i3#b1sEeSqE@_^W9>%CRGmdAvayb z8GE=Yo}MREZMGMJvvP^i6|)1VKgkS4;fgxh1qHYbmqpc=#@RtASw*>F$5)}@l0P^5 zvh^b2ge#l)oWUVqU6hSQ;kt2EM+yPAh$&u{a54JzLeC4ulwfpq$YSH68y%SxKYZ1w z1PcFWtb{;o@V-OM#NucU7L_P*5*i|OFHKjzfTt)VhRObOWzTi{CR#A9L0|B@eqoz* z&o)W=kMN;A`dWmPvkR1BQTy4k1tj9}P>+87^ALkkUKWyQwl#`JXj$R2k|%>EDVZII ziTczi+4=dgDl#%SExG;V*$B6lY%`i!u#~7#^++6-ltm9k2q^6o8e?JywK2RU8tz*XXuz zhs9_X%Fd^hJz8}-0CQaS0NmaEfrqQi?>;}~)*)pI$Z-94(s3gP$OsP^9+iCV& zW3zfWzNnf#G&u? z$k){j)UWH2BgMZ5)%9N|vj!Y*TS zCYSLu`okl$l-f;`)ZPr33wI2eV^WF}ZZK-WAQycc2+X1^pk65f`G(Z#^8S))h7j_g zV-8ZG1g?if9N$2}KZA;eM#cH^m3jpsO7jYrN*3WFG7Hm%a0SQ7TmTHPCri@LtTg-X z4y%zxDFGgGl&59D>VGkQDm?$g9Ml2MizKCI+t7FNWWuV+7q}M=a0w>HT}g3UqP9@lVqX~ws3J5*bD*P4?C4Z4s+(D9 z(JsWnQw-XX$jYaS^**=RyiGiQ$nlKVK{)cE|_57@KI%awGLb1{=?y2F!um8HXXh_N@0YkjLkU@#y3|WYjd2u zMoR&HndS&9hlB5cP(2tBSJ?`bB2r^TTeg!qpx4CeLDJc@=ma88hD=y5KBUwd{2g;r-kAnGT&ox?k;{ro|gIh?1 zu37UsGMhxP&bFBi|;41N4ys` zS$xcfABR)?!Upbq93nL~+GF;G-MalbMEby3T@|>*c9(9zD$4s#7sNMUw>UoLkA*F= zTZts>*2cp%xYGD6!ZYPN$J}E@$7npg5D@?LpZp|rzwhx0`UX;1*h46*cB<>034G5< zoW>XYn(_D^Bx%!a8{dKtxsDdD8#%iG=U@Rwr?Yl>hmFZdFyi#09Y^=x}zcoDY-$G%s&s?1%=fCqCfOO0t#*M z?+k;QhjmsFj!ue3DDbZO8}$hf0>K^KYfD9)5V_pp9|K&WD4fTS;Quesbqc}<{;ri% z(@w47_-GzvV0W5qJVo_2I|~D5R=A_mU<{n@S(pRd_lA@3Y0=@FjmOKFc7+%uEH=K~ zZ3(=GFD5UZmj9$8Ox zYpsRH3~n%%g-rxQGAH?JRJVrd>p5kI+`OH`#hJ1%L_}84%^r@2)IU^|-XKQ#( z%l_9{=S8zZrt9s^)bW&zkB^qIVs%c#DYHC`%f>)2<=ub7fB)WXxz3{uV{ z`$L8Xm0f^0Z(bs>lg*#`y(}}85cmS=LWsMfrnm_=2b|{I*%+KH)^U_72jqYJ#R1ZA zvH1VyYx(}Xs}w~UT6lq8KYyHjWkCdVZ;@?&3+p+7xgiMLoWo$g-8)7dDj zk5;EVu~3OtJITi>MP$zbL69!`td|qqCANBtxzs3)nMXhx{1gx5q=n8t3Lk{ZPGiKx zIq_$fkB(GhfQ#`hN|$64KF^P_LgE|?J9Zo5yJeYN32Y!c)=kOW-JzO3Ks-G=4`=Vf z+1n7)c_1{wT;v(PY?0pAH5eUHg*%Z!b}J6WzCWy1NW0(d)^EU;d{|zsckxTSpiY0- z5RF~~FP8;M7+49L)hI&55P5o_KKF1E?Q2y&CH>q{cwjIJsHRCn!%B8stkV?q49X^Y zJ}PaZyMJ@aA4_;@Z68TNN)~<3%x1&D<*uQRP!Gbw7Mt&SL@va496^lA(Xb)M|du&b^TN#g} zGq$m!gy)P!$K1hHf^D!VL=I+8yTf{UO=Z);92J;l$xWe_%Tvo(jJ@}%6Qtm@fi^&) zi@rSJ8XQBrb1Yw?AmFef0ohocDS?&_CMhiI@V1g$fVQ+>jT3`K^HDcf2c2lb zU{}T?gEF2I7wB%gezjlU_$VD!xB!@&AW@k(?VZN3smG8tnq%1Scs{2SC+G{vG9YN5 z^*urF@FwKI1uNFELAEqAKml`R65b+Or&*-V*&r82Z>9k|N%mCZkRFFu*g2{IeJKS5 zw?Rx)QuL;bzG}V(afldy4tyz&7SlPA$UryLVSGa!N?3!OAldE@xfUjApk^#X{~nm; zJFZ|Kbp1-jAXM>|$J;*SlT+OpmFyA}1o8C!oKEsHkP3G)>Y6Xye;zOTyktv;O~3Q$ zss%RvZi9&=x`K>kYFq?2cV2_6ZSFSVy=BAFXLHUf(B@8y zh3f+Ly(O@3g}wc;;8Y-fr1WklA4PwF?(1B*nq8b0+$6zuqchaUPLfhn4UW^P8 z+h+)%KwzwBb!sq$6lLa&xcNaSj-){;osDsQ;q??$5m?gi70+BL`Q5}D6!d!e#NY}+ z19)1~J=D$Xk|$7T?Zn!y-@t{+rfz$$3lv5y;~sA|J+vi*ptPL~z$3)NyW4lCR8kzO zC*YkdujScGTNhRcz}6kftO*C=xBUoRcRM=|i-7yRT`hwZ_yY_3l7&FvIUqk4 z;7>P<`l2oY$jG2rrpxqYU-AVzC+{c6_@B{$jGFy=yl!IIy5%2BikE=v5<+TE;h#v{ zfMZ(1m_nd&?g6ZQOCgKw5kx3aH_1Jf>DBJK;+(sGBsz-!=ZFtq^-!V$D1d`5O&6< z-Sr|M)-`l|&5)V56+&7K9{5h^$~p>-@vCRVjVY4g`c58?RH{D&0!bh`qGT4#@vJ{$ zXmruYL!)M$IPVY@<(S;Tk~=hc02lA9l=wj34F6Y~%(uLco<676io$Gk*BsRs)NnX| zbi8nJjQ<%`xn=U`{Q7If3^BizvtIbI|Mge(*wZKY2P)iX{`-P}NxywV{|}$$sgG<} zlx`QVmpG7}u?d}s#ISwcUvr@9)shhE>N?en2=;&P*eH2nUWA8BZLs~~RkW3wlqlAq zO};S_Lzt!5*MpP=CR@_rl2R0LB z!wTQ<=R^Q54h9beks2vVc4tD#=MPb`o~&+n#qqzPygTc?8)hgC*{B&^F}O@+G3Xl& zYE*ocZPgWB*K4=BWoOe~^WI%r;P$g#L*2gwVoRih=BVY7A`Pw?)k_2Rmw z>%NL>)THS8;9aZ>2PIy;Tnt`IAk|9XV}p=9=N_xnH-y^X)*P`moD~i-&+@J7y2!82 z?~S*A!2Ik3rm-*Wg<-m~D{|z_jg<8yRsMzQHw*w~U@A4M+|$XEt)g``_Q%*^V2545 z?VgJfn(T(a8e6?|x{~Cwn@_vFIZ7m&CuPa@ocD#dzPgQ$*Q-Prw;S17;P2*TVxR~O zE*O0nV%`c7+eqFEHp$jl$y3#N9kszJxo2cjD2&}~FfKGn?SMH#tO!8nED_(olhpLF z9o$!VMkYVL zVS`Ty&m!`pbq*W2pqe5>W2}IUmpSdY$RkxHQYLi#{6LMB^3l<1ml8>+oZ7658H)xD zi-7qppOZ|uUarKEtJBHs2$l#WHo`2dx1*`xb*z-q7rat>LXTE*KTd|c__Ge4yE|`f z@=HAFJ_^H)yw${&eLH3wbW?m2^YSN!P*PU@EL6EgOQrnHjv&K%Voj0b<+x*km_%It zFh~l-WdcG4XYro2>?pkd^bm@)hf)gEnQ9~=-EvB*w_yygUxl|{9k;_7Z4ZcVjQ?F$VI)l=OBKrPnw|4hm5Ib8Rv zng2FOkzK*$wUluHgF+`S9AH4r?hfjn|_; z7D*GQA|D^UH)xg$8{=@p$;HEDIychD^~J%fopiiD=5s*u?a&6N1Bz)ko-$IIY-#KQ zd&vTBIn}G~dH}(#&3%7b`&BIp#QXKl^7zkzG8^3+>e!lA4+Zgw=A3GfSt&9y^)IOH z-)DE&u&0ZdS=TwU4`IqB8K|dZ8B-G)(N4B-Nt}>|P6INi)A^K5Z}NyQ5OUd`xI0|N ztEn60qEtPy*aTGp=7S*^IjxdIuP1iDt$e<43oMYdNojR3|L56Z4xhnV2Dsuqyd+J; z>UOc?6D3Ji(4zk3oQWLh)ydXFK@4BA1^CHnK`7* zDGBt68bt-Ti49O9Ci`p9C>zsOI;n|gCARClG?CMG>NTczw~11Xodk?z2qY)PR4|wX zb1@s!1r9c|kB&n|ip$^^aLktdoqxfXF~?Iz_55ErCtL1(4c1t051{kY3R1vdTv5ob zq%_g`h}UGv&M!{6)L-5Z&Tb|XbPu%1M&oo`9HhEZ8pC!R*(Q4gbaZ=kOofR>dA5$E zXZGj_b9`O|erl7iii$+u;sN3!o}-u`@nJrF2$gQB87}}ew-l)zlxpRmTll0d1AG|w zF*zQoeK3+B-{n}wO5F-^$kY$XoYoQXGz8vTctD{nX{XhC_bu73cD>=T^D_Utn4hOv zmtsg)SC5zSn%}EW<^`rH;yO@3EGi$3%)NekH$Cf2VU#89L|{Ox?>3;OIc>qbP=_A= zZXf*jy1a%c7^Ao5z2?%Gb(>4$#q&x`oGKSC9~IR+w*DQy*27^X+}1#vQ)HY+=|gwW zqZsq?K6!kP1^2Xa@pj1vVt%hOZG+Wfo3DK^6sjc$_&RFAf7chQvNNr9Io4c;`CYVm zr=bunK0mON0e%M_AAekkLKZARudhLWoONM0eb=(&Vij!?)-T#M43_>t|FEe-ZSU3r zkvBXqJA5v!Ry237H)u8)ue)v?O^-z=OA>51qE^IJWIDaSd$Gb$tp;yBdrewy#B%XB4Byd502|`?VwSzavFvGn>gG3e zZ&%4jOceB0HhIx|562$Q=VAP+g~z9(!C!9Q-+j5gF1hDzFh&JQyTTce1^7^Av2^EW zp6X#`3xa0jd=@dap_r?#Cmc_v2Q}M>F{F|c3@tMSj*sI%rOHHrsczh2%_#Z~?6$77 zjT70_Ni^d^PNHZz-ZQIIZ3tlU^G|j3%G!z5Ymr`+%h*CPwV_Cz&yXoQW@a1tVPG+j z@WZ!d;eHrq9%!$#V;5$!7_DDeN+OYKR(~Rzx*7A*W+v!mq6ZGxO# zM?v)mob{2ugC)ngNk%L?+^tqwTxk~C5zbe_k(*Z*e$-?^E8RgldMc7-)U#!gVd`tg zaaliX$P;_yn^)C<2H%Z-`*@wJRZTtac+yq8DIJ?+EYcwn6ioxWPFmrbuTP%>r{;Y> zpsrEMLjMp$?R^Hj#kY*>IM;5>vz#1JXJcQUhG(@QMe9P7W8v;JHM{B_u2%c5>=u&dJy$uh&C zj-h!UV+$^7;wr~b^4U8A{B9spI+l(aXES)Q*rmb0ppeOEYsm(8raATDRwu^vp(FWQ zzA6*d!)d8d7kXc@D30yGef8cMrVObnS*YrmxqHW2mgF7YbI)1t(`Binh=5w{VE zaSqrh$~cg4V_?dQ1R8`}ntFZj%Qsd1f+J}t=ef=f?ldy?JoQH9-YoLdpiW`Q}w>HXc` z{}Dc1-v2RvC}j=%*7yZTyks+Y_{e}h5K__F)J{-m93E>4`e|cnjf)w3V;{b1gPi?R zm?fBCoN{s0r)z+yWh|OhFqS7P&GqLuH8gZm6Sbr1A)l@zL>EM!w$tG#&~$D1?Z1Tm z$z^%F-(_`C0BK;YtZ>eH%hHp#?JWCczeJz%x!+u^UcG)g&Zl$sK{9PTsd-t?@8j%1 zpdc)7ksHuu4t0GYb0BgVLBI@_x0~~JG&RNpe<0E5qZwth_nzMJnS>|G#P92;X#|(( zip?2jjDrWP3@Qms9byqihA$@BQ=pJ8Dk03jfD3Jz89U5usM_(g9y9s&mNi;pc|85_ zyh$*G8GB-DDxI4;sCBL#oa=`1Bro$_pk`DZXCrkDqNL|C%TG4RcCs0xl>?P1wPO27 zk}+)+8bOtGqqDZg8!N+}LZb%IXQARbi-0<@JVfbZocCCmGlgMeYjb78&_zvm$FZ_vbG1@p8Nd?dpj{-{>kyu|Oq|U^HZs2I zZaFH8E*)?<<(#6FjM6)+DB+Q~>IV`?-*vA|^Tb#;w86SJSOb)TSo-mgZU;CxB=8Ws5j1sFQ5By~1rt?4KXao_2@z@;b%_NsN_n3tCw1 zE5e#5w~OFAw@;>i4PgCa>OwA9$jv?5)L!4cWbmDgq4=eeEe$^lb8Y;4P_$`vaClve znkzk{ZXi}q+`xlYsOc3EYNIB)QUXEtEAxT-sGN&}Mk(BqLWV3M3Y@WrbvBLC4GmX^ z56|cLlHz}fhlPAwY5T%fvIj@-OtdY*TsLmIOZSorigc{BV(s33rW6WbmwmPRt|oAD zTK!o*I^gzB&o^VauyS~4$PT5a~gTFbp#PxQvEQ<0$? zF4t2hFdfqL!g&|FppCi+%1C1!LZ)V8!GY#Y`~tNzc2I$fdTawur6!40veWH@ONF}Ti;!!Ct%$gA zs+aTnU@mkSnNVOu9n2evedm68N0fpWEF)iucs_NzTU|aVF;)dZZG1#&y%GHxspB8V zwR2lFw#IiJb&Z4cIcJ@k|1r<3ElB>mFOx^Z zu1$X7Ir)XC0N$elh||7FijBE~wk?#Q!^Ayv0gK>0c7}b}DHDZy^)ITlJnY%oL@To# znFy4v%n$=5a47X+`E+&Qbf4b6cJx$+2jxV8<{{bU7hM}AwI3u=#~7DYAmM5qJ!Zjo z^&x_iRC?Irg}D>WPry&XL0{=9iivDbWYamp8#_4C9;d zVRAFR4?j%q*=U${r?uimkK*bLRaOio9@lT;Zt;@f~;Hvn6jcdvcKdfXIUP*VCVogHB9^Y9pl!ubU80W=F7Suuc)S<*;TN)NxZ@ z;K7{rG-5$AOT#4$I47GT%%Z+Cqxesx%6G<=DY-6nC{ke52$=OZA$&o0RIt3&J6UL2 zo~~HE^$E_+=>vGltO~pQQPBq6x!VhR6yvwNE8SQa$VldxJP;Q|5hb=M-|i2&?3XDC zDZ-`n+FZRyeLC!dn( z@zHyb8hoxW9~bI;2Jt!n$|SLUoK8P`+2bsq;LgKG*KiOf2`w&)!dudD*pu{=;X&XN z)7e#M#Hrw$yCtSBWwx=Vt?(>Ae}?Bk5j1{A!g5MX1TVQctn&m^{$x|R|66n~Q+iGI zP8)hBu@)P;9JPx+zzHB92@Hy8991merud5e9(8NEk!uN&QusCIOL?I!rPAP2c`3_U z)W6UHJPlCjcubmJ$b5abmqGo%j#n5vSYM_-8fzoiHlCe8noqJgw}}pabSgnE)fy=t zotymWodSIwGD)f#6$_$w{-VzX={#I5rAO0tbuGJH$!MQ}iWI{_%ZC~+dDzm4zS}Nh z-^zyIT2+3hW}P#;CQWX7Lg|4>YBH}M;TQSMumu19%Nz4=**7Ok_#4El#;=NT&G;s@ zA1IOt#!tQZ9qz=kYxtVK+sa_f;=%ri3;)}Cw|#tb*dhWIFW*4u%VJ*sigKNP{gvx3 zK3V#P#v1KbV25@o5^C2t^=XUlm%wC{lmpklZf8a%xqli+wdzFr6V#r%0P4afg_J4H zg4Fg_E^u-3&f(;3qL)mzH0`X`Yznt}2EhTFy$ucX|EhIkHmxT%2TR`~*2KfPk6z1b z;$U!oyg=Z%z>_p8@>lGIJQKyX{?_=FH`+;q4^@lL2D~wg{oMM{Sh1#hUm8fuRj&lWa7K#tDhW35teex6VtxI5lf%a}0{H8{NKq z|H*RbPvvN4^A+@#F6_zc9$Xo1 zJj^>&nl*WR$~QYcrD#^2s$sTf%*Hf~(Kr<#rR5@sT~~!3(QFOQHh>_O3zpBtkPFAb zFKRU25JLI`PJR&1P-;Hv%YmZO*4<9x>~5h<>0w%;4kfUOvwBVQpIYlTI|%NM12COX z-N>FX{aF!;uXo>YkgyprGR>Uot>=inI*i9(=Qh^lB+QF%BPFkU^Hbzt0MUfpupMBWobSHXkpl3?#UJsE|qOoRbRts1ZWW zg(-1!W++5iEwgZ5bP;Ti5NPJ)u#M8!aD_7ylijujr1g8nhW9%Rd`P;Gg!W>u42^M( z;;c&~8twGHO5?LweF%Fz$#PDp`E<$VV>WEE%!T+g#Ka`ce=Wm!Jj+siE5kvsg;!TA zoa#)MHYUV=QrHzQ+#~v?v(przH`G~JcDY<1kR7(+J`#QEn*CvVFm;5_FwR}EeArod z0_#e-cRpT5lI2?YFqKI~O$HZTDui>?*L9PvVM7LU;Oe#rRHb7)PhYm*kcoj)tbanTK^KHDXf*#l^ zJv;r~Aq>-b_#CHH*!@EwOTQ<9_vufcG6RduYXYG}HM{VwSg>4q1D14i*f2i1<{7jo zt3q))t9IU+SXa}Pm2cH0FFR)Ny}o}-gL@ik9jiv+UrFvcZd>n;$`6-^XLR#XtSNRG znbbLS76ymWSL?UL>a>(T@oG_5((@{w0ah0~>dD(JIRk$1s2^%jN#88f-Ck5=R|WjI zde4D_1!I&sSTuJ`L*-UQ{%62jRbfnZt^29sf(m0W6dOhOYr$E)&mI zDf{X+<^V}KbJi_zx*LfTj~C_e>SW)`YCnqh9im374WfGLIgS#kLk>$Qvp<5%bo1%Y zLwty_nj%hvD*WA^&C$TJtc9r*Skgk8tNS_<=h*Uj(DDZR(OuCSjnTh02I;9a%WlaT zb4xCGK|Uc=dAeZZzB;A>OoiUV*M3-(<6s3XtR;Ztl}$dm3H$URyjNgG56`CAL439f z%e}SoW`gNeh1WxugJjU#GS;!hpNVwSFD9j_^=Mdl=nuLYE9mySOg?LI&bC%YmKpaN z&+k9o&O#G_MxDsV#F9Qfq9PY;PL=yWMwLpRbAz}!7F9Ix$p^@$6vXBq5X>UM5LWz< zEW6cDn92^lmzmY%Ts$%w6kZtiDc-Hu;IpiX)Ud}SKsny^vDI4l=$7;}ms$n`3emHW zA+@D(JPA;#6`Y49R{1K!`1ifgR}bk&xhG{<-koVAFjL-!AuyEcDV$>VFqUm*KKHTG z6W1Hetun0_YxYY^^eW~ayMYQ;pj8%#+<$rhkMP519PfQ|_aHh{4I@v4mqafNFR9O6 zd-r&%#O@!7VXDDGi8a?NO0#_B_f|xl6K#HuGY`k1HI_S&QtCE(Dh673&P`6~0KfB{ zzI|J)Aoo?<5JTF!Ij4Mf*+o^;cF)-tUOZ==)sYJ~J)U0oguR8EEy@7;W0@`loFSYD zHCgB1Ls6^06mnh3qFtSWwHvYXAM%iCxHwhc){4IAMC{P(kNkOL6(6!^2aO-t62z&R zprHoU>T6){`yXrU`#G+@yt=klL4Axmn`*0oRQo6r27cB=hj#-3)V@@MN}(1t4&#Eh z@9g2X%Go1G0BAs$zjmR6Wbiyf+7T#gl(bp9jx&`3cvgjAIk`nyM7u9}!z4tJ0sQB! z>lv#(7u8}Z&&;pZ^^_f|2YrUI4KY@4q^eYo47<2I>_?qICQ~lF%^FHo6=oR-4)3!( zMBS-F!e%Ijie6UbvCoq>g88iI+Ux@rld;ivmC)z+bhd0d)}xMzQ=F5G*B*AxPYsZn z^4L~QOMqU~GW7ZiwXns1e7<{s`5DgdVIEGxc=Ml&eM4vdHgBXkV{Z$aGYIcctzNub zE^p&+N*P{v1`;ddJ!|DAs57uV)+$u!LoL-ki}QZ`LGg!gR8rQ1G80WC6~M&sA88aJ9)hoa;)Vgg<_O))L&Qv=_9V0g80({p7^zEV`Yw z>cFNOPrrp?O(`^l0xFeAo}3M)){&@@g{x?jtY80?uq1D2*t9wJE(_?YL`k^U#>D#C zEvBR2w(HYTkXRg}`N~MKwxYVMrxEl*Vo&u67zM!T(K*z6C=FKXtM>@;*}a5cwL^77 zch;9%7iQl5Rnwurnb^8|;k*hq!ONk`Tvd69cxja?&kl*R@`jrnqN=zsPHsf zx|kOKX!b{_I+vBE)@PEVPIF1p+CKH{%{p|4nJYl(d_dhT4Mm)$^TTQ=1*6sA*bE|7 zx#T;~lmg9N@n+!-8WYs|ewXIp-g*j3Ou?kn&XaL+>qJu1KUtQs4wEz1->xf9VHj$& zLxrWxwzfXn%51l8-cW6d#_9WmITG#iA%$P~gVKl=bbdDGdBkx2l;PZj{0WZsGF*Vs z3%@1#)9#RmkI!o_dD?Opv&io9DdktNlq2(4YCbmI-V=)Cq&~#n5I6cP z@*k$^)6(+L1NbSAPE9w!X|iO^0NZ5b7>4G`>Q?fUz0A+BR8=MP8X|@miOTj{bO)Q8FK<>$$NkDL9e`Wo76J`&tK z2=4#+NmZ4Ba5Q$i)_T|0DTgm4h8PWh1Mv;vu!1aXAK^2rB_?CggZE8MtTGz*-#}0n zyR0MDf@$y{QwnS@)}Ia9?ef^z?Xq7ys@iOi@u)J?sdwJDH2sdv{MiJ1R(?IqC`6kt z`>AbS-rR?Js4^iJMzYrmS(nC6$dfE{y#8NcN_tE>Sej^g7>=@J?4d?rdJxdQHK1z9 zpPk}RSe8KJQ(@CMKcrhkM1-|9?`F*&|ERI6?ljF>XM^HX_RU2^B>df;UEqKGrK_~l z(_M-e7!oPbpjn%7MaKOed<1YA8qvZI`R_{q_zwQ9Jf*^wy#6wsj<197YU|+c4_|@r zRL~P1dJ}z(L*a<&E|@R4!Z=mIUnklhpkNvczXsEDjUcbC=R9JByg1^mQGbe!zdovX zQ?4b5Bo*hYB}AOLR6Kt%D<0>DS<;5KtjzIRprA~GWHXTml2fro)zO|l3G`*EsUy>L z(Be;T^^Ai&U30~c3K##@=oBYjsBJq^FlcH7+2R3AW>U;9GZA-O) z7tNcBU+Yw3{o@P}sEJv2;1;tFqg&idG1g9w*Q)wJ1}_IQqhc=%XTF~gQh*d+_RA=b zQJg$^=EX?vwrt9t?NHHtN=lg+p>y+kbx6Td=AU=Fz4De`19r8qoH}2$<9JbvhGod6 zs!+Rtc}7~BH%LbWlLKKz{`O59VBS#`@M1f*;r8T9mqHsuPn7PbsRpGcoVxMC-Or>K zzE{ay+7b-^e`jd9?4?wO*ON1p=T5n3t@MqJFD{s3UgjwkvUD19ZaoA%$@XywZhd*` z^&q2Ic*i$KAhTz9RZeJjNUUP=<;p-s>Y4s;G56ZHH#K@^2PPTg&0NVq7Uk9~Mmp-5P>@1`v0#@30P|=Y+!bWLTzd*cq ze60UC(tkYBe>~NHJkx)CtN-|Jpj~@QSr%vH@ieUW29n4s z?Mqt%%(YBPE6CjXU5S%PWx-L_J=rPej0w`1eyL5;ax_itT$$K8Jmx6y_tklOLnL@@ZUuVbn8bI6*zCEg#lv;sr*M`;sp8;XE@Dx|V2 z`9ph!4OdF##8U$~T_!1#g$`K^25Ol(5N<37-H?`SO$c%sebf~bueKNqw}~7>Y0IW~ zZ0MLDE8ez}4FRHmHt#JTJc?P)JB zbO20FBZ8<&xsk}q4MCVC*K(i>m!p{@{l|0t$BUksEoE#)kG5$fl$d&bpT^*5rFgRlok{h5uhvQ7=VH=)NHRk)lBFsjU-IGM&ebgBbOco$VUs0~| zg0Rpc!NOYdjlv+tf(|M^a&-M2Mj4-XMB^=E+Vc~9xIR=zz`jlrTPbIbKCN=}k;?&Tb zp`s^UTwE*5YS9a=$@%$E+Fg0@@A|W}OelD-)Z4Gep8N1SHP+Et{X<2j=jAj4_x|rM z@9!`FQ3M`%_SLqjy*Rj)NpQY}NhAp2Kkv%@JL-sCj#T|+lt=OyJ5DP^czp2`gChVw zEKXio4D{}<&1aoTOHIU%zJZ(r$$KaqR&9`c5pIHvTm$^742`b2C5#R)6DlZ%XW`b- zrZ&do=ZDY_^}Cg=vXv&c2Z(y`5oD^f(zU8Z%5sj5{JRtHnyGG#&Q($`8=|V%)hu-#xHMVzgW-oc^ee%^Zf9t7rhHE z8``#lOUEyZcn|yBW;jpFUYP?nOX3aGG32Ug0A+nTJgyJP`Zj*aB}6q0>6Yy^p>Lh1 z`B>VccO7(YPx?w2s4Mr@Jg3H6yMQwDXc&LEMMv}wRTXn~Fhw(hpMLJcnhc#QL2dq@ z91E1rL+X=&i&I7ss!Su3d8A%laIt9eP#JsF+AponvUNsew2^o5nQMo-WJnsx6N^ zC7Fc+SJ3)81vCq*n+7MnJsQ=baeFHdMX`yFSSvymRBOu+*YQRee=GJo+%TCzNo-D2 zWWck)Sf-LSZe_A94Owf`L7rFz${};^d{eH^={dZKy(xK3r-o?*l_93)9Bj`wQip6U*6f#-j@9>{9y$)D z-E{k!H_K8a$2*K=F3`(vUw#gXvR2mHz)lez0%dDN-d)WTPG~A4ORg!Kp=Um{O-wtX zEzT{|+6<_!?{De(c$cYRJ_)!k{rdae#(#CbW3^dd%d6CI8YYJi9VYmt;&^=YQgx}P zUYuIJY%>wwNBfjPuH8JXv*mmt?P~F#Eu)w5{QgsIebl(V5~?Q+<~jKK=W0pyLqxR` zt<*ZVFHi?W`*fgwP#bV3*K?JmppJ82Zj+J*9_FPKPEAb>XZhhp!&DDU2mkK0)-Y>m zDAzKnV3?a(dM_Xvm&RG_-&~Y(fVSsnVeZjj{a=bS_;(?0fnZzxSXbVG0CW?*kh)YT z-kq&V4NP1`uYEVxE}DV&Z3HP`ICKB{qEY9dK2>AM+FTp6V{9-l_ekphHdX?{4lM#@9zq6Lq?G862GUV-n?KrGKh~I*v>; zVi`9Sc8dRv{nEyZ!8@~wg69QMv;z!MWQKe;*tU0^J8quo?2wKcx^2;Q#Y^|h)G=e< z7adEd2Iqq{mi6{n484@J=fKWBxmU-M6^Fitm;kdrCC`N2^Zt0AY-uToa>EUqJHPc+ zj>BUjdSM2t;E_68`t~(kT1^cB`q--6I@xb^;E(?vru~+fvpMC6l;247`!vq3)t9|lkIl33yyl%p z!rR62E~oTGMGKvUSL-<19`?MfT=y`Vx|-2=LWx*# zVS7cE3a!W2nkW_4AyQuY3@dBU@%rSlZpqwAdTWSapr)n5tkjyX+T@Tm)jO??ZAT#w zZBIk$;aaR}9DxW?K%&{@G_M9T`B zvTt6d6my>`t%4WpUHlR+{Bvpa87%J9iqm8HhJd@-x#R<(PU}4E!A+>@T&!cq>XS+@cdvnB`h-w;6oEK&5Qq)Ka!^T9hqx06MBXmu^)r z1;c@nE1yN>3q4y3#wE>^;Sc}XwgAKO7%craeNt_FOhN19@ziw5?b%eJ&nr>oj(5Ob z>-=x@89(gOZ&A9O@CO-~u#7ZlGE*5(s1O`IAlwRTQ~H$DXzvh_^n}>aZO}h8d+?J_=l+^@>fGt zbHy$|XYYu$X!coFYoF?)p}|@<7eOMW#NS6tl`ao{7CvIKUF}NNqjy7QtR!A7zhNK6 zGA-Z3wY?X!pckYnq>cgWI*s*2Bb@&$#&Zl4gtN5* z7vQj+(;SD@VY|o^a9%3pg5I4@c&Ble#3*JVS^EyNbi{3aI-)xAvv)PIM&ZOOUpF*J z#{S4BgFHvaIeLoBo*L5xS0f{MN>~P!*87r;QjFS z-@<*AW#5)=iU(Jo=^hFIjvxRyY@_s5D)G)o^_Mr6&kshIY{6Zm%*Az*?U6415!}Xn z9!J$aYaS0SmEc^an@`|g9Ae(#I)4svilIm$w#|E*E5h4T-^;zAx-_{j4sWLnuB9_) zJDbJQ|7QlEyDOQ!R$g)OkNAdX-E+QlYZz-iA(EGJ!=y1+VP}lu3z5 zjYA+=8JXAykNjO%;I5qn=L*|tUdP8MOnj^MR;>1~s3Drk&ZIs&nDeqrznAn(2v;Zg z5@W>JaJxqed+@;=Y%dk|Rt<-}7xi40--)y4TDq-bW0kMeA!XgB&-Wz;{IIDF+H_Xh z97SL)7hbG~q|!23>dp=FE7|o^ExeAiX;)R{r3*I2QG%?k9^c_6=gtoEeY#s<1;$GP z-dB_#G71Ua$#x8r%3`vYW?h#sb~1E~=*gMuk&{%1IaP~}q-)J4?vBmZ$itW5!kvE_GC@Cb}95w_EB38i21wyxA2fG z+X59$JqSGa^=ZDW<*Q0X*ocPmV6$L^afd26@xk%I5MwA+KjidvPcl>@x2-@ur`2{* zz4KC^#SqfItt?z7$h3Jf0i}D+n46-RTCLw#do~ZIT<$heQkg$LOx+Ys2Pha1Sl+iw zzq0WOYS^WAR!dvJT$T&;ImJX<`)%fmWec0k0skphaD zfFCCx9{k!rr@^Sh5rKbDiDONMM`RU^T(VPM6E~!^*W0?5+{bfpRq^0%3JSO5Se8Y! zj}{35kDKUa)!Nx{a8Qh`;-qljKHPtqJ&dm@6w&(g6h%{AkABFhp!gM2s52Uc6RGu- zp_%QH{CwKNF&`DzqN7k_u}~{?viL9xI|a)KpM^9)`X24sJ^?NMogY?~`#(`p+h~Hv zqptS;7~@${eD8TmgEYaDTaXZqE;t_B>;p0Pj2aAsCfXIG5-Mp2E7P?@t$_*ix-Moq z|0ZYk4bfvsVFI&xj$ZN*dMNFYd#)FAcIyYtJj(mSmf;iBUz)s>1uPmH!XrGD{`JiE z>h)n-!`i{LUhiQ>0(v@u`qXUnOV1q^Y(Yg$37jX+y5 z{X3RoCoe7Aos>1DZ0$Obr`MYE>^H$S;d6og5L(J5CmjVypsRjqgR)CX-@cTsX7n^& z$+v>5Y2r3eJ(jf{ZriiU75-tnPPV*GAKMC7lk?>5VQXRdz&R+<N})&_1;X+J7)+`+c=$@5eXM;3C$|NnOUC($T)Anp?Be zMd;6Z5)3IYN^*qtcDKlZ+U2&x6yLs!etg7I6+g1!oD+}?PDNdJ2YZ!=Yx{>ftiCr3 zT<6=MI?nPa&08te*0aA&wOzfNerY3B_TR$CWEo&b$>)79YilYv*IH>aaBgGaK6ha< z4>fzD(zV^o`~eX$R?zn&Qz@spCx7Rqa@Iw1Q0kE6wRVu1m)Mxoi7REib?swM{N0=9 zUoDvqL9W%7&vvkg!#QYHzIp6!Wvrc{vEPp=QFBUQ_T}^vf^-wT+#Pbz`qV*-^~v(# zB~?m!JNazbc+MKTwn_L4nn6n@rF3Bw+@V)9ry<4ZZKc&iGwaGY?5w9Tb}CZGuZ|1i zW1GSkl3O^)`)}Jw%&=&kMAmxQwr&aSZ?zgIkv+#ESq~4K18i%b}7{-xQaH(`n8*4uuK(gH=;+lP9B|80|L~$Csj?uNvUs2J!K3v zFx{(T?Tu&JZu}3dxhXZRX*kO^0ofZ6i;ksy!l@WS*=r>CW@X>uxRs)RO%Yh^{mpI( z!Jra*R5?hU$<;-Lp=0;D3(>t!;b9gX?1qZ?3>=aQkJ0KaRVqi`hIs9VWPKaI1V|P4>OQZlxkA!IjfC1KojqNR z6>EnF_}h7xhJxY-b&qE1{NWdR2LXliT`Qoy2g=a;G8bu)ue%!-&%onI@&7} z;Opq7^FwnYT**Zm^Nv(Lo3QXPK}?71gS^TaVMA2w8^YFv&w5av_j&rC`fhXrF0B(! zJT7p-Z0qg8YRG4`hh0xa+HMk@7*<-guI~(8R&Y2to1o}imQV{j)YbdgQVA!agmUWJ z|M@7IQTUQSHgD=Q+pJ%VtWXSoG@wX;NtA>*H)AM@-mr;hm7(Os@$T1IMN=4(7}<`m zFX|y5_8KrECLgAokVeq9v21T~{8joKk3CLq70#+)=8XS7`RnCcTQWPc*zScU(wv9%Yz9gw+ry7k=}l6S(NutOHGwty|cR2>3t1L zq!IsI2RnBF5N%n^nl2#i5v)2l%RQ@BFk2n$jJ|%If(yzE`Yxk1Zh~Oy`Q{PIIz?v4oLsBQg)mCvFpD;3 zT$7!N+VYQ{_ySdnvu`aTp>`|L%0(4kMc+p9%9+Bgd4u0A4dpublk-6uawEMy)XLVE_q}&LSi1`9-R8t{sdyyeevB_)5sTEd^>j>jB$Bbu-U>t;T?}oekbp z>jzbw?E(B&W0TflCzX)9bLq}cX&Rnak5RV^AaTD6J7rYE$6vM-M1Dxtv2R4T$`2jH z6svhj$0{0QkzXeUl+q+g%ov1Z*P{imOupe4D)*5<<|S2au7 z$RjJ5WPQekrG;8wMuLq~=Z{Hn6H5K3Q-RJ|g|ThzJK}VmCLnn!QZtNtf6}Hm^w*lH z(t4!r)J&#v3#-=h`$Y+!^OV(EwQ5Vyw+@g>ErUj^FsKHEu5qb4Bo|6;c)Xp=a!TP$ z$t(JX{Efj`w?fJiiwX=&k8$4BJ{|@T(UA^#R!|0V(nwQ7@}%dUIU8_VBa6o^QA5WLYhEXMGl9S4Gfz(} z!#i3%uA86VY3?TL#W_r@ZR;yn(gXcF=M=7g>skWiTr|%Q=hT_aq13SNHN2BU6_>6r z9Axb7audDK7qZ$DVAM9&*tSMDc^a^y)hM%3;+u}8w>92vJ2iTuO$a5MXM83HdOtjX zb^4lhg0X$DTJP?b4&=)f{3xf`Qd`3`O4A5lVI4hsa>><}DE^xW)o_|Sbk{8Pa5=vC z6u-`QV3>+WJU+%AP;s1YqYcQ*1-7uqC7k}#`i&E&Fh1;39B1vD|VZRrN?JKN)_>a$b?=L@xVRo2@lkn^OKNtJG?HlhT`P2UB3;++UH$Am~_4=sx zveU9ov3_>s{@GK$5#OtSvVG-@rvBAz-l^PW<&(4gYzaYcJh{D?f{XS!$?{YD$5>N9 zoTJF7y5NXk<5x7-0DaAAIeI+iA0$0zy}^a1;e^v|cU|?H|0b^b>#z8)UzoCbqyP5b z%)d66kJ3RbKeTS`Mk?i}VI8TE9xo1?utCd+Q4H0_QiI&uSE{^B`8BvAY=LKCkQpqQ^&}-uJF9Z(iL+D^k+kqQJx+z%JwR({&v8u)w{V9`mSpM$McYg%f2Yd->}G zuA$#Grx?~zQAXn9k;zGu3U4J3mTHGCtEClRIO+q} zVzKJo3NMIZCC{Si-uPYo`hszMDf@4&7! zt+R>j<0weV(LD{_R6DUxxa%dlJi0nM?$<6GO@{>^RZW)aF*qrUlhDyL;DfS(3yY_i z-J~{)RnlK?barnsCECp%%<@zGvcWKtuW%GTXs$vFXGs;OR$nX%rrUjq1YZ7Kp-;B) z@T!dLYMTQ~DBz~ObyL!AJu3jm9zG!;4rlZ6RvS^)#`D(F&@CRl=$toFV=9BtjoEA5 z6rXv(O)1Fkulsn+{bl*p3lUvWEsVj)H?h_&s_>+P?8PHMu!0 zje(oXckZaWwZ2V#{hZ>IA9WB%P`TjlA66@nu@=rPk2_Hxl-chVjnJ(6jnC2MWbtts zt(^KwF5LkGQn?N$2jKd&=8vu1XI3-nf~{!$%BBw&3#@;Fh~$e+t3!LHvt~1hv=QMy zYp*YgBwf=6Fo*BC5%gv|iAO)vL-rKd=e{`rFZfmZq8uXP z;)5|8x^=Ljw=OocwV$uFxjGG}&R%XIzHRMr>oCR;`Z&UJS{|1LrkjA?t8&Vkeey2Q zh5iI=eK*p*H#s%Ugp+1TRBOD9hOG5UnjsihXsul^h%RuTog;%L>t>%z<0xAP6JkV) z{QDVcG}x3+i)rEpsL6)!P0K-ber8E%8xdNVR$jnl)|sU?i@^5vyZA$Q+{W4ED2=Ua zvBgVQ=kd&K7ds{|E9SneDmrT|frF_;VoS=Hx@y7|QCl#XWuTTM=}=fP=JS!FZR&avE!*E|>A z-D%15zYyM~ z3-KMdbKK4(@7LgU)vd21IP*?XXecgDR1AD#QPlJwT?jcXpnrv7?<9S#;l5S9%Wbi?C4z=`oxj8)gebiR`$NtX3}uU`UGLXl)$9GM!9NUYk_buq|M3je$E`3CZRpYviW<7_Jzy@=)geATActN5-) zo?d@BX~J zjrIq#{l02WQ`=MBoeEaD!#P$P9p?LVho^a(EXPyXD8}<9I;3Bk?qLAYd#d%^e6$$I zq$PWrPPbP7;9$O5ON@dvl@acm+sSNp&1e42Kvu4RbSGEg?j(sbt3;<`Tip82g4$HS;HH(EPveZD_9>jAbYtbWD{O{0&})3t9)SOIGoj*}^@&((n2Q0+-^X zPRg#M3Aa{@_PMAnAK*t<)v|)lY2YCiZVf<)vcSscYbx6%wPpY> zK})TazhgvmT~&08jI_x=p2gdxxUdNAyMZ)Kr76a(uyz9Id=4!+hHC9!!v&4CfE7O) zDaX%AnjfO|o9A7!tVlCPu0Q?U-;+1ChwtM?Xe3=XpQDS`=u`&PM`c!1+(g)45k6sJO#KJJ40pq#2&8;O;3 zo^^QuH_})$*l4ZDRjO5*@(~p++*Lbi1jLSd!pc^2|9)4DEp=$X<(NY_DN3Rny`PTh z8)Ig&{lzLoT%~H!C5UjSVsu8=>WULvT%=mc2j3K>eBF^sQ=fqb2A4y!z(|ZA5_;+` zD(0H1zDrPPOi)kLX;!N3->argO)p&_SwVjC;9X&pCdP$x!e-;)e2S{9_WJpxJ1N0i z+lV%fVNDfVdmUYPjV^vc%V4D1!>HpUo(Kl}kIB~;j*5qvM7dZG>w`7QB7iNwWeLY) zVQl5f?;wm<5rmnciq;iEXri$ybjsm!3_gs6f%)9oOt@8SI2f*K50nnbaT{`7djW82 z($)X$SjgY)b$n5v+z*#kn1Wqj(51~wlZ@Dir@iAoLvJAu#1&(SWU2nIzh*B#$f?Rk z=^XTN@_%n!#pvU92qsO<4+f%PZSJiNK07!V{bJw#{;mcOsSNYsu$Q*)+1zooC0OAK z8k;t$TijV!M%?$}jjhN!WLUKVG2iuWt+|K&tU{%Et094vB*wf%7%=*ZAi6>riTw^Yd2N-enX>a@5xbiN{nqdelVygy7-ho zuXQNjM%!Jsj^n)tGEsL*KuvEv2QaxK_GRzoSAT`m4{01r>*ekmbmt!QOBOCgANJbM zvyMec(rGOvKxJ?9@FQtCO;zJh1>u&x}xFP*5c^M`66yRS>wy>tjat6i- z)-0v(9&obH2o?_Ru;$l0z!ygI@^ElQL+xQr`=(_q?7DWpG>(?yelfhe5Ix)@w930hf&wjN5VjUK0M=@HfA??~K75`%ABV@~ zUyNuqzihL^e!oj`|EBN@d^tE-@alg*J9-DtL37tbq`oql%n}^k6Kz4dGXA<;MEHy1 zKHYw~8NHuP{`l$T=Qls$4_`jt-QrI_m!5(S#Q|c>Rmk_3{c$$?{5;ZsJfX$A89#iy zyT+4+f{2f_U6Qp4$Sq27C*xc`H+U{F-)DUIbe(Jx88rHDi@n1g z$oQw=fQ9=g-QdrMZLw;9z5M)T{KhW&KhXz%4sf|coSh`DpT>(g0q1~Tj)`fq#F0V? z6RO1&6vvF|4fY5&9f0e$$kVmDT#sqAk$QkFUBDDV5--E~YaVCH*$831;YU1Ri}eno z#0<{!@~{S>0YBy?q7TL|C=94F_IWCF6u)$_W~61pCkVgSbW2>;@GBpE!@m{4jZksI zTe8tnu!(Sq1W)q(m6lH&=RL%&D6YXGPGQL-IIs!rTnYgV=JUh{vv|Ft6Pu@W0_P;@ z@IgFp;bFNCx#;jm&9Zd}PmVi}$^ySiS`xoY&-DubKVAjX`^g6s^*8@>efXbnxoEir zvlW9r;Aa~@{S-k=M<2%n1d3}Nu6Mir9A5q_{EDq

                yF^%Q%lvewRWaC;KO4GlBgK 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

                headers; + boolean should_keep_alive; + + byte[] upgrade; + boolean upgrade() { + return null != upgrade; + } + + int http_major; + int http_minor; + + boolean message_begin_called; + boolean headers_complete_called; + boolean message_complete_called; + boolean message_complete_on_eof; + + + Map parsed_header; + String currHField; + String currHValue; + byte [] pbody; + int num_called; + + public String toString() { + StringBuilder b = new StringBuilder(); + b.append("NAME: "); b.append(name);b.append("\n"); + b.append("type: "); b.append(type);b.append("\n"); + b.append("method: "); b.append(method);b.append("\n"); + b.append("status_code: "); b.append(status_code);b.append("\n"); + b.append("request_path: "); b.append(request_path);b.append("\n"); + b.append("request_url: "); b.append(request_url);b.append("\n"); + b.append("fragment: "); b.append(fragment);b.append("\n"); + b.append("query_string: "); b.append(query_string);b.append("\n"); + b.append("body:\n"); b.append(new String(body));b.append("\n"); + b.append("should_keep_alive: "); b.append(should_keep_alive);b.append("\n"); + b.append("upgrade: "); b.append(upgrade);b.append("\n"); + b.append("http_major: "); b.append(http_major);b.append("\n"); + b.append("http_minor: "); b.append(http_minor);b.append("\n"); + b.append("message_complete_called: "); b.append(message_complete_called);b.append("\n"); + return b.toString(); + } + + Message () { + this.header = new HashMap(); + this.headers = new LinkedList
                (); + reset(); + } + /* + *prepare this Test Instance for reuse. + * */ + void reset () { + this.parsed_header = new HashMap(); + this.pbody = null; + this.num_called = 0; + + } + void check (boolean val, String mes) { + if (!val) { + //p(name+" : "+mes); + throw new RuntimeException(name+" : "+mes); + } + } + + + HTTPDataCallback getCB (final String value, final String mes, final TestSettings settings) { + return new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len){ + // if ("url".equals(mes)){ + // p("pos"+pos); + // p("len"+len); + // if (8==pos && 5 == len && "connect request".equals(name)) { + // //throw new RuntimeException(name); + // } + // } + //String str = str(b, pos, len); + ByteList list = settings.map.get(mes); + for (int i=0; i!=len; ++i) { + list.add(b.get(pos+i)); + } + //settings.map.put(mes, prev_val + str); + //check(value.equals(str), "incorrect "+mes+": "+str); + if (-1 == pos) { + throw new RuntimeException("he?"); + } + return 0; + } + }; + } + + void execute () { + p(name); + ByteBuffer buf = ByteBuffer.wrap(raw); + HTTPParser p = new HTTPParser(); + TestSettings s = settings(); + + + + p.execute(s, buf); + if (!p.upgrade) { + // call execute again, else parser can't know message is done + // if no content length is set. + p.execute(s, buf); + } + if (!s.success) { + throw new RuntimeException("Test: "+name+" failed"); + } + } // execute + + void execute_permutations() { + /* + |-|---------------| + |--|--------------| + |---|-------------| + (...) + |---------------|-| + |-----------------| + */ + p(name); + for (int i = 2; i != raw.length; ++i) { + // p(i); + HTTPParser p = new HTTPParser(); + TestSettings s = settings(); + ByteBuffer buf = ByteBuffer.wrap(raw); + int olimit = buf.limit(); + buf.limit(i); + + parse(p,s,buf); + if (!p.upgrade) { + buf.position(i); + buf.limit(olimit); + + parse(p,s,buf); + if (!p.upgrade) { + parse(p,s,buf); + } else { + if (!upgrade()) { + throw new RuntimeException("Test:"+name+"parsed as upgrade, is not"); + } + } + + } else { + if (!upgrade()) { + throw new RuntimeException("Test:"+name+"parsed as upgrade, is not"); + } + } + if (!s.success) { + p(this); + throw new RuntimeException("Test: "+name+" failed"); + } + reset(); + } + //System.exit(0); + } // execute_permutations + void parse(HTTPParser p, ParserSettings s, ByteBuffer b) { + //p("About to parse: "+b.position() + "->" + b.limit()); + p.execute(s, b); + } + + TestSettings settings() { + final TestSettings s = new TestSettings(); + s.on_url = getCB(request_url, "url", s); + s.on_message_begin = new HTTPCallback() { + public int cb (HTTPParser p) { + message_begin_called = true; + return -1; + } + }; + s.on_header_field = new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len){ + if (null != currHValue && null == currHField) { + throw new RuntimeException(name+": shouldn't happen"); + } + if (null != currHField) { + if (null == currHValue) { + currHField += str(b,pos,len); + return 0; + } else { + parsed_header.put(currHField, currHValue); + currHField = null; + currHValue = null; + } + } + currHField = str(b,pos,len); + return 0; + } + }; + s.on_header_value = new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len){ + if (null == currHField) { + throw new RuntimeException(name+" :shouldn't happen field"); + } + if (null == currHValue) { + currHValue = str(b,pos,len); + } else { + currHValue += str(b, pos, len); + } + return 0; + } + }; + s.on_headers_complete = new HTTPCallback() { + public int cb (HTTPParser p) { + headers_complete_called = true; + String parsed_path = null; + String parsed_query = null; + String parsed_url = null; + String parsed_frag = null; + + try { + parsed_url = new String(s.map.get("url").toArray(), "UTF8"); + + HTTPParserUrl u = new HTTPParserUrl(); + HTTPParser pp = new HTTPParser(); + ByteBuffer data = Util.buffer(parsed_url); + pp.parse_url(data,false, u); + + parsed_path = u.getFieldValue(HTTPParser.UrlFields.UF_PATH, data); + parsed_query = u.getFieldValue(HTTPParser.UrlFields.UF_QUERY, data); + parsed_frag = u.getFieldValue(HTTPParser.UrlFields.UF_FRAGMENT, data); + + } catch (java.io.UnsupportedEncodingException uee) { + throw new RuntimeException(uee); + } + + if (!request_path.equals(parsed_path)) { + throw new RuntimeException(name+": invalid path: "+parsed_path+" should be: "+request_path); + } + if (!query_string.equals(parsed_query)) { + throw new RuntimeException(name+": invalid query: "+parsed_query+" should be: "+query_string); + } + if (!request_url.equals(parsed_url)) { + throw new RuntimeException(">"+name+"<: invalid url: >"+parsed_url+"< should be: >"+request_url+"<"); + } + if (!fragment.equals(parsed_frag)) { + throw new RuntimeException(name+": invalid fragement: "+parsed_frag+" should be: "+fragment); + } + if (null != currHValue || null != currHField) { + if (null == currHField || null == currHValue) { + throw new RuntimeException("shouldn't happen"); + } + } + if (null != currHField) { + //p(currHField); + //p(">"+currHValue+"<"); + parsed_header.put(currHField, currHValue); + currHField = null; + currHValue = null; + } + + + return 0; + } + }; + // s.on_headers_complete = new HTTPCallback() { + // public int cb (HTTPParser p) { + // p("Complete:"+name); + // return 0; + // } + // }; + + s.on_body = new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len){ + int l = pbody == null ? len : len + pbody.length; + int off = pbody == null ? 0 : pbody.length; + byte [] nbody = new byte[l]; + + if (null != pbody) { + System.arraycopy(pbody, 0, nbody, 0, pbody.length); + } + + int saved = b.position(); + b.position(pos); + b.get(nbody, off, len); + b.position(saved); + pbody = nbody; + return 0; + } + }; + + s.on_message_complete = new HTTPCallback() { + public int cb(HTTPParser p) { + message_complete_called = true; + num_called += 1; + if ( p.http_minor != http_minor + || p.http_major != http_major + || p.status_code != status_code ) { + + throw new RuntimeException("major/minor/status_code mismatch"); + } + + //check headers + + if (header.keySet().size() != parsed_header.keySet().size()) { + p(parsed_header); + throw new RuntimeException(name+": different amount of headers"); + } + for (String key : header.keySet()) { + String pvalue = parsed_header.get(key); + if (!header.get(key).equals(pvalue)) { + throw new RuntimeException(name+" : different values for :"+key+" is >"+pvalue+"< should: >"+header.get(key)+"<"); + } + } + //check body + if (null == pbody && (null == body || body.length == 0 || body.length == 1)) { + s.success = true; + return 0; + } + if (null == pbody) { + throw new RuntimeException(name+": no body, should be: "+new String(body)); + } + if (pbody.length != body.length) { + p(pbody.length); + p(body.length); + p(new String(pbody)); + p(new String(body)); + throw new RuntimeException(name+": incorrect body length"); + } + for (int i = 0 ; i!= body.length; ++i) { + if (pbody[i] != body[i]) { + throw new RuntimeException("different body"); + } + } + s.success = true; + return 0; + } + }; + return s; + } // settings + static void p(Object o) { + System.out.println(o); + } + + static class TestSettings extends ParserSettings { + public boolean success; + Map map; + TestSettings () { + map = new HashMap(); + map.put("path", new ByteList()); + map.put("query_string", new ByteList()); + map.put("url", new ByteList()); + map.put("fragment", new ByteList()); + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java new file mode 100644 index 0000000000..0e74021473 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java @@ -0,0 +1,51 @@ +package http_parser.lolevel; + +import http_parser.HTTPParserUrl; +import static http_parser.lolevel.Util.*; + +public class ParseUrl { + public static void test(int i) { + HTTPParserUrl u = new HTTPParserUrl(); + HTTPParser p = new HTTPParser(); + Url test = Url.URL_TESTS[i]; +// System.out.println(":: " + test.name); + int rv = p.parse_url(Util.buffer(test.url),test.is_connect,u); + UnitTest.check_equals(rv, test.rv); + if(test.rv == 0){ + UnitTest.check_equals(u, test.u); + } + + } + public static void test() { + p(ParseUrl.class); + + for (int i = 0; i < Url.URL_TESTS.length; i++) { + test(i); + } + } + + static void usage() { + p("usage: [jre] http_parser.lolevel.ParseUrl [i]"); + p(" i : optional test case id"); + p("---------------------------------------------"); + p("Test Cases:"); + for (int i =0; i!= Url.URL_TESTS.length; ++i) { + p(" "+i+": "+Url.URL_TESTS[i].name); + } + } + + public static void main (String [] args) { + if (0 == args.length) { + test(); + } else { + try { + int i = Integer.parseInt(args[0]); + test(i); + } catch (Throwable t) { + t.printStackTrace(); + usage(); + } + + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java new file mode 100644 index 0000000000..4367bbbddf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java @@ -0,0 +1,69 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.util.*; + +import static http_parser.lolevel.Util.*; +import http_parser.*; + +import primitive.collection.ByteList; + +public class Requests { + + static void test_simple(String req, boolean should_pass) { + HTTPParser parser = new HTTPParser(ParserType.HTTP_REQUEST); + ByteBuffer buf = buffer(req); + boolean passed = false; + int read = 0; + try { + parser.execute(Util.SETTINGS_NULL, buf); + passed = (read == req.length()); + read = parser.execute(Util.SETTINGS_NULL, Util.empty()); + passed &= (0 == read); + } catch (Throwable t) { + passed = false; + } + check(passed == should_pass); + } + static void simple_tests() { + test_simple("hello world", false); + test_simple("GET / HTP/1.1\r\n\r\n", false); + + test_simple("ASDF / HTTP/1.1\r\n\r\n", false); + test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", false); + test_simple("GETA / HTTP/1.1\r\n\r\n", false); + } + + public static void test () { + p(Requests.class); + simple_tests(); + + List all = TestLoaderNG.load("tests.dumped"); + List requests = new LinkedList(); + for (Message m : all) { + if (ParserType.HTTP_REQUEST == m.type) { + requests.add(m); + } + } + for (Message m : requests) { + test_message(m); + } + + for (int i = 0; i!= requests.size(); ++i) { + if (!requests.get(i).should_keep_alive) continue; + for (int j = 0; j!=requests.size(); ++j) { + if (!requests.get(j).should_keep_alive) continue; + for (int k = 0; k!= requests.size(); ++k) { + test_multiple3(requests.get(i), requests.get(j), requests.get(k)); + } + } + } + + // postpone test_scan + + } + + + + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java new file mode 100644 index 0000000000..1cb71dc5f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java @@ -0,0 +1,52 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.util.*; + +import static http_parser.lolevel.Util.*; +import http_parser.*; + +import primitive.collection.ByteList; + +public class Responses { + + + + public static void test () { + p(Responses.class); + List all = TestLoaderNG.load("tests.dumped"); + List responses = new LinkedList(); + for (Message m : all) { + if (ParserType.HTTP_RESPONSE == m.type) { + responses.add(m); + } + } + for (Message m : responses) { + test_message(m); + } + + for (int i = 0; i!= responses.size(); ++i) { + if (!responses.get(i).should_keep_alive) continue; + for (int j = 0; j!=responses.size(); ++j) { + if (!responses.get(j).should_keep_alive) continue; + for (int k = 0; k!= responses.size(); ++k) { + test_multiple3(responses.get(i), responses.get(j), responses.get(k)); + } + } + } + + // not sure what test_message_count_body does that test_message doesn't... + // Message m = find(responses, "404 no headers no body"); + // test_message_count_body(m); + // m = find(responses, "200 trailing space on chunked body"); + // test_message_count_body(m); + + // TODO test very large chunked response + + // test_scan is more or less the same as test_permutations, will implement later... + } + + + + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java new file mode 100644 index 0000000000..6c35898329 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java @@ -0,0 +1,16 @@ +package http_parser.lolevel; + + +public class Test { + public static void main (String [] args) { + UnitTest.test(); + TestHeaderOverflowError.test(); + TestNoOverflowLongBody.test(); + Responses.test(); + ParseUrl.test(); + Requests.test(); + Upgrade.test(); + WrongContentLength.test(); + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java new file mode 100644 index 0000000000..ee47903256 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java @@ -0,0 +1,48 @@ +package http_parser.lolevel; + +import java.nio.*; + +import static http_parser.lolevel.Util.*; + +public class TestHeaderOverflowError { + + public static void test (http_parser.ParserType type) { + HTTPParser parser = new HTTPParser(type); + ByteBuffer buf = getBytes(type); + + int numbytes = buf.limit(); + + parser.execute(Util.SETTINGS_NULL, buf); + + check(numbytes == buf.position()); + + buf = buffer("header-key: header-value\r\n"); + numbytes = buf.limit(); + for (int i = 0; i!= 1000; ++i) { + parser.execute(Util.SETTINGS_NULL, buf); + check(numbytes == buf.position()); + + buf.rewind(); + + } + } + + static ByteBuffer getBytes (http_parser.ParserType type) { + if (http_parser.ParserType.HTTP_BOTH == type) { + throw new RuntimeException("only HTTP_REQUEST and HTTP_RESPONSE"); + } + + if (http_parser.ParserType.HTTP_REQUEST == type) { + return buffer("GET / HTTP/1.1\r\n"); + } + return buffer("HTTP/1.0 200 OK\r\n"); + } + + public static void test () { + p(TestHeaderOverflowError.class); + test(http_parser.ParserType.HTTP_REQUEST); + test(http_parser.ParserType.HTTP_RESPONSE); + } + + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java new file mode 100644 index 0000000000..329485dbdb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java @@ -0,0 +1,212 @@ +package http_parser.lolevel; +// name : 200 trailing space on chunked body +// raw : "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n25 \r\nThis is the data in the first chunk\r\n\r\n1C\r\nand this is the second one\r\n\r\n0 \r\n\r\n" +// type : HTTP_RESPONSE +// method: HTTP_DELETE +// status code :200 +// request_path: +// request_url : +// fragment : +// query_string: +// body :"This is the data in the first chunk\r\nand this is the second one\r\n" +// body_size :65 +// header_0 :{ "Content-Type": "text/plain"} +// header_1 :{ "Transfer-Encoding": "chunked"} +// should_keep_alive :1 +// upgrade :0 +// http_major :1 +// http_minor :1 + + +import java.io.FileReader; +import java.io.BufferedReader; +import java.io.StringReader; +import java.io.Reader; +import java.io.Reader; +import java.io.IOException; + +import java.util.*; +import java.util.regex.*; + +import java.nio.ByteBuffer; + +import http_parser.HTTPMethod; +import http_parser.ParserType; + +public class TestLoaderNG { + String fn; + public TestLoaderNG(String filename) { + this.fn = filename; + } + static void p(Object o) { + System.out.println(o); + } + public static List load (String fn) { + List list = null; + try { + BufferedReader buf = new BufferedReader(new FileReader(fn)); + list = load(buf); + } catch (Throwable t) { + throw new RuntimeException(t); + } + return list; + + } + public static Message parse (String message) { + List list = load(new BufferedReader(new StringReader(message))); + if (null == list || 0 == list.size() ) { + return null; + } + return list.get(0); + } + + public static List load (BufferedReader buf) { + List list = new LinkedList(); + String line = null; + Message curr = new Message(); + Pattern pattern = Pattern.compile("(\\S+)\\s*:(.*)"); + try { + while (null != (line = buf.readLine()) ){ + if ("".equals(line.trim())) { + list.add (curr); + curr = new Message(); + continue; + } + Matcher m = pattern.matcher(line); + if (m.matches()) { + // you can not be fucking serious!? + // this has got to be the most retarded regex + // interface in the history of the world ... + // (though I'm sure there's worse c++ regexp libs...) + MatchResult r = m.toMatchResult(); + String key = r.group(1).trim(); + String value = r.group(2).trim(); + if ("name".equals(key)) {curr.name = value;} + else if ("raw".equals(key)) {curr.raw = toByteArray(value);} //! + else if ("type".equals(key)) {curr.type = ParserType.parse(value);} + else if ("method".equals(key)) {curr.method = HTTPMethod.parse(value);} + else if ("status_code".equals(key)) {curr.status_code = Integer.parseInt(value);} + else if ("request_path".equals(key)) {curr.request_path = value;} + else if ("request_url".equals(key)) {curr.request_url = value;} + + else if ("fragment".equals(key)) {curr.fragment = value;} + else if ("query_string".equals(key)) {curr.query_string = value;} + else if ("body".equals(key)) {curr.body = toByteArray(value);} //! + else if ("body_size".equals(key)) {curr.body_size = Integer.parseInt(value);} + else if (key.startsWith("header")) { + String [] h = getHeader(value); + curr.header.put(h[0], h[1]); + } + else if ("should_keep_alive".equals(key)) + {curr.should_keep_alive = (1 == Integer.parseInt(value));} + else if ("upgrade".equals(key)) { curr.upgrade = toByteArray(value);} + else if ("http_major".equals(key)) {curr.http_major = Integer.parseInt(value);} + else if ("http_minor".equals(key)) {curr.http_minor = Integer.parseInt(value);} + } else { + p("WTF?"+line); + } + + } + } catch (Throwable t) { + throw new RuntimeException(t); + } + return list; + } + + static String [] getHeader(String value) { + // { "Host": "0.0.0.0=5000"} + Pattern p = Pattern.compile("\\{ ?\"([^\"]*)\": ?\"(.*)\"}"); + Matcher m = p.matcher(value); + if (!m.matches()) { + p(value); + throw new RuntimeException("something wrong"); + } + String [] result = new String[2]; + MatchResult r = m.toMatchResult(); + result[0] = r.group(1).trim(); + result[1] = r.group(2); //.trim(); + return result; + } + + static final byte BSLASH = 0x5c; + static final byte QUOT = 0x22; + static final byte CR = 0x0d; + static final byte LF = 0x0a; + static final byte n = 0x6e; + static final byte r = 0x72; + + static final Byte[] JAVA_GENERICS_ROCK_HARD = new Byte[0]; + + + static byte [] toByteArray (String quotedString) { + ArrayList bytes = new ArrayList(); + String s = quotedString.substring(1, quotedString.length()-1); + byte [] byts = s.getBytes(java.nio.charset.Charset.forName("UTF8")); + boolean escaped = false; + for (byte b : byts) { + switch (b) { + case BSLASH: + escaped = true; + break; + case n: + if (escaped) { + bytes.add(LF); + escaped = false; + } else { + bytes.add(b); + } + break; + case r: + if (escaped) { + escaped = false; + bytes.add(CR); + } else { + bytes.add(b); + } + break; + case QUOT: + escaped = false; + bytes.add(QUOT); + break; + default: + bytes.add(b); + } + + } + + byts = new byte[bytes.size()]; + int i = 0; + for (Byte b : bytes) { + byts[i++]=b; + } + return byts; + } + + public static void main(String [] args) throws Throwable { + //TestLoaderNG l = new TestLoaderNG(args[0]); + List ts = load(args[0]); + for (Message t : ts) { +// for (int i =0; i!= t.raw.length; ++i) { +// p(i+":"+t.raw[i]); +// } +// try { + t.execute_permutations(); +// } catch (Throwable th) { +// p("failed: "+t.name); +// } + t.execute(); + // System.exit(0); + } + } + + class Header { + String field; + String value; + } + enum LastHeader { + NONE + ,FIELD + ,VALUE + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java new file mode 100644 index 0000000000..13d8ea0b23 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java @@ -0,0 +1,62 @@ +package http_parser.lolevel; + +import java.nio.*; + +import static http_parser.lolevel.Util.*; + +public class TestNoOverflowLongBody { + + public static void test (http_parser.ParserType type, int len) { + HTTPParser parser = new HTTPParser(type); + ByteBuffer buf = getBytes(type, len); + + int buflen = buf.limit(); + + parser.execute(Util.SETTINGS_NULL, buf); + + check(buflen == buf.position()); + + buf = buffer("a"); + buflen = buf.limit(); + + for (int i = 0; i!= len; ++i) { + parser.execute(Util.SETTINGS_NULL, buf); + check(buflen == buf.position()); + buf.rewind(); + } + + buf = getBytes(type, len); + buflen = buf.limit(); + + parser.execute(Util.SETTINGS_NULL, buf); + + check(buflen == buf.position()); + + } + + static ByteBuffer getBytes (http_parser.ParserType type, int length) { + if (http_parser.ParserType.HTTP_BOTH == type) { + throw new RuntimeException("only HTTP_REQUEST and HTTP_RESPONSE"); + } + + String template = "%s\r\nConnection: Keep-Alive\r\nContent-Length: %d\r\n\r\n"; + String str = null; + if (http_parser.ParserType.HTTP_REQUEST == type) { + str = String.format(template, "GET / HTTP/1.1", length); + } else { + str = String.format(template, "HTTP/1.0 200 OK", length); + } + return buffer(str); + } + + public static void test () { + p(TestNoOverflowLongBody.class); + test(http_parser.ParserType.HTTP_REQUEST, 1000); + test(http_parser.ParserType.HTTP_REQUEST, 100000); + test(http_parser.ParserType.HTTP_RESPONSE, 1000); + test(http_parser.ParserType.HTTP_RESPONSE, 100000); + } + + + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java new file mode 100644 index 0000000000..415998033a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java @@ -0,0 +1,117 @@ +package http_parser.lolevel; + +import java.nio.ByteBuffer; +import http_parser.HTTPException; +import http_parser.Util; + +public class UnitTest { + + static void p(Object o) {System.out.println(o);} + + public static void testErrorFormat() { + String bla = "This has an error in position 10 (the n in 'an')"; + ByteBuffer buf = ByteBuffer.wrap(bla.getBytes()); + buf.position(10); + + String mes = +"This has an error in position 10 (the n in 'an')\n" + +"..........^"; + + check_equals(mes, Util.error ("test error", buf, 0)); + + + bla = "123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J"; + buf = ByteBuffer.wrap(bla.getBytes()); + buf.position(50); + mes = +"56789B123456789C123456789D123456789E123456789F123456789G123456789H123456\n"+ +"....................................^"; + check_equals(mes, Util.error("test trim right and left", buf, 0)); + + + buf.position(5); + mes = +"123456789A123456789B123456789C123456789D123456789E123456789F123456789G12\n"+ +".....^"; + check_equals(mes, Util.error("test trim right", buf, 0)); + + + int limit = buf.limit(); + buf.limit(10); + mes = +"123456789A\n"+ +".....^"; + check_equals(mes, Util.error("all before, not enough after", buf, 0)); + + + + buf.limit(limit); + buf.position(90); + mes = +"9C123456789D123456789E123456789F123456789G123456789H123456789I123456789J\n"+ +"..............................................................^"; + check_equals(mes, Util.error("test trim left", buf, 10)); + } + + + // Test that the error callbacks are properly called. + public static void testErrorCallback () { + String nothttp = "THis is certainly not valid HTTP"; + ByteBuffer buf = ByteBuffer.wrap(nothttp.getBytes()); + + ParserSettings s = new ParserSettings(); + s.on_error = new HTTPErrorCallback() { + public void cb (HTTPParser p, String mes, ByteBuffer buf, int pos) { + throw new HTTPException(mes); + } + }; // err callback + + + HTTPParser p = new HTTPParser(); + try { + p.execute(s, buf); + } catch (HTTPException e) { + check_equals("Invalid HTTP method", e.getMessage()); + } + + buf = ByteBuffer.wrap("GET / HTTP 1.10000".getBytes()); + p = new HTTPParser(); + try { + p.execute(s, buf); + } catch (HTTPException e) { + check_equals("ridiculous http minor", e.getMessage()); + } + + // if no error handler is defined, behave just like the above... + ParserSettings s0 = new ParserSettings(); + + buf = ByteBuffer.wrap("THis is certainly not valid HTTP".getBytes()); + p = new HTTPParser(); + try { + p.execute(s0, buf); + } catch (HTTPException e) { + check_equals("Invalid HTTP method", e.getMessage()); + } + + buf = ByteBuffer.wrap("GET / HTTP 1.10000".getBytes()); + p = new HTTPParser(); + try { + p.execute(s0, buf); + } catch (HTTPException e) { + check_equals("ridiculous http minor", e.getMessage()); + } + } + + static void check_equals(Object supposed2be, Object is) { + if (!supposed2be.equals(is)) { + throw new RuntimeException(is + " is supposed to be "+supposed2be); + } + } + + + public static void test () { + p(UnitTest.class); + testErrorFormat(); + testErrorCallback(); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java new file mode 100644 index 0000000000..9af3d4a44a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java @@ -0,0 +1,27 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.util.*; + +import http_parser.ParserType; + +import static http_parser.lolevel.Util.*; + +public class Upgrade { + static final String upgrade = "GET /demo HTTP/1.1\r\n" + + "Connection: Upgrade\r\n" + + "Upgrade: WebSocket\r\n\r\n" + + "third key data"; + static void test () { + p(Upgrade.class); + HTTPParser parser = new HTTPParser(ParserType.HTTP_REQUEST); + ByteBuffer buf = buffer(upgrade); + + int read = parser.execute(Util.SETTINGS_NULL, buf); + check (63 == read); + String s = str(buf); + check ("third key data".equals(str(buf))); + + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java new file mode 100644 index 0000000000..35469d1c44 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java @@ -0,0 +1,127 @@ +package http_parser.lolevel; + +import http_parser.FieldData; +import http_parser.HTTPParserUrl; + +import static http_parser.HTTPParserUrl.*; +import static http_parser.lolevel.HTTPParser.*; + +/** + */ +public class Url { + + public static Url[] URL_TESTS = new Url[]{ + new Url("proxy request", "http://hostname/", false, + new HTTPParserUrl( + (1 << UrlFields.UF_SCHEMA.getIndex()) | (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PATH.getIndex()), + 0, + new FieldData[]{ + new FieldData(0,4), + new FieldData(7,8), + new FieldData(0,0), + new FieldData(15,1), + new FieldData(0,0), + new FieldData(0,0) + }), + 0), + new Url("CONNECT request", "hostname:443", true, + new HTTPParserUrl( + (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PORT.getIndex()), + 443, + new FieldData[]{ + new FieldData(0,0), + new FieldData(0,8), + new FieldData(9,3), + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0) + }), + 0), + new Url("proxy ipv6 request", "http://[1:2::3:4]/", false, + new HTTPParserUrl( + (1 << UrlFields.UF_SCHEMA.getIndex()) | (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PATH.getIndex()), + 0, + new FieldData[]{ + new FieldData(0,4), + new FieldData(8,8), + new FieldData(0,0), + new FieldData(17,1), + new FieldData(0,0), + new FieldData(0,0) + }), + 0), + new Url("CONNECT ipv6 address", "[1:2::3:4]:443", true, + new HTTPParserUrl( + (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PORT.getIndex()), + 443, + new FieldData[]{ + new FieldData(0,0), + new FieldData(1,8), + new FieldData(11,3), + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0) + }), + 0), + new Url("extra ? in query string", + "http://a.tbcdn.cn/p/fp/2010c/??fp-header-min.css,fp-base-min.css,fp-channel-min.css,fp-product-min.css,fp-mall-min.css,fp-category-min.css,fp-sub-min.css,fp-gdp4p-min.css,fp-css3-min.css,fp-misc-min.css?t=20101022.css", + false, + new HTTPParserUrl( + (1 << UrlFields.UF_SCHEMA.getIndex()) | + (1 << UrlFields.UF_HOST.getIndex()) | + (1 << UrlFields.UF_PATH.getIndex()) | + (1 << UrlFields.UF_QUERY.getIndex()), + 0, + new FieldData[]{ + new FieldData(0,4), + new FieldData(7,10), + new FieldData(0,0), + new FieldData(17,12), + new FieldData(30,187), + new FieldData(0,0) + }), + 0), + new Url("proxy empty host", + "http://:443/", + false, + null, + 1), + new Url("proxy empty port", + "http://hostname:/", + false, + null, + 1), + new Url("CONNECT empty host", + ":443", + true, + null, + 1), + new Url("CONNECT empty port", + "hostname:", + true, + null, + 1), + new Url("CONNECT with extra bits", + "hostname:443/", + true, + null, + 1), + + }; + + String name; + String url; + boolean is_connect; + HTTPParserUrl u; + int rv; + + public Url(String name, String url, boolean is_connect, HTTPParserUrl u, int rv) { + this.name = name; + this.url = url; + this.is_connect = is_connect; + this.u = u; + this.rv = rv; + } + + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java new file mode 100644 index 0000000000..c73d9e6267 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java @@ -0,0 +1,236 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.util.*; + +import primitive.collection.ByteList; + +import http_parser.*; + +public class Util { + + static final ParserSettings SETTINGS_NULL = new ParserSettings(); + + static String str (ByteBuffer b, int pos, int len) { + byte [] by = new byte[len]; + int saved = b.position(); + b.position(pos); + b.get(by); + b.position(saved); + return new String(by); + } + static String str (ByteBuffer b) { + int len = b.limit() - b.position(); + byte [] by = new byte[len]; + int saved = b.position(); + b.get(by); + b.position(saved); + return new String(by); + } + + static ByteBuffer buffer(String str) { + return ByteBuffer.wrap(str.getBytes()); + } + + static ByteBuffer empty() { + return ByteBuffer.wrap(new byte[0]); + } + + static void check(boolean betterBtrue) { + if (!betterBtrue) { + throw new RuntimeException("!"); + } + } + static void check (int should, int is) { + if (should != is) { + throw new RuntimeException("should be: "+should+" is:"+is); + } + } + + static void test_message(Message mes) { + int raw_len = mes.raw.length; + for (int msg1len = 0; msg1len != raw_len; ++msg1len) { + mes.reset(); + ByteBuffer msg1 = ByteBuffer.wrap(mes.raw, 0, msg1len); + ByteBuffer msg2 = ByteBuffer.wrap(mes.raw, msg1len, mes.raw.length - msg1len); + + HTTPParser parser = new HTTPParser(mes.type); + ParserSettings settings = mes.settings(); + + int read = 0; + if (msg1len !=0) { + read = parser.execute(settings, msg1); + if (mes.upgrade() && parser.upgrade) { + // Messages have a settings() that checks itself... + check(1 == mes.num_called); + continue; + } + check(read == msg1len); + } + + read = parser.execute(settings, msg2); + if (mes.upgrade() && parser.upgrade) { + check(1 == mes.num_called); + continue; + } + + check( mes.raw.length - msg1len, read); + + ByteBuffer empty = Util.empty(); + read = parser.execute(settings, empty); + + if (mes.upgrade() && parser.upgrade) { + check(1 == mes.num_called); + continue; + } + check(empty.position() == empty.limit()); + check(0 == read); + check(1 == mes.num_called); + + } + } + + static void test_multiple3(Message r1, Message r2, Message r3) { + int message_count = 1; + if (!r1.upgrade()) { + message_count++; + if (!r2.upgrade()) { + message_count++; + } + } + boolean has_upgrade = (message_count < 3 || r3.upgrade()); + + ByteList blist = new ByteList(); + blist.addAll(r1.raw); + blist.addAll(r2.raw); + blist.addAll(r3.raw); + + byte [] raw = blist.toArray(); + ByteBuffer buf = ByteBuffer.wrap(raw); + + Util.Settings settings = Util.settings(); + HTTPParser parser = new HTTPParser(r1.type); + + int read = parser.execute(settings, buf); + if (has_upgrade && parser.upgrade) { + raw = upgrade_message_fix(raw, read, r1,r2,r3); + check(settings.numCalled == message_count); + return; + } + + check(read == raw.length); + + buf = Util.empty(); + read = parser.execute(settings, buf); + if (has_upgrade && parser.upgrade) { + check(settings.numCalled == message_count); + return; + } + + check(0 == read); + check(settings.numCalled == message_count); + } + + /* Given a sequence of bytes and the number of these that we were able to + * parse, verify that upgrade bodies are correct. + */ + static byte [] upgrade_message_fix(byte[] body, int nread, Message... msgs) { + int off = 0; + for (Message m : msgs) { + off += m.raw.length; + if (m.upgrade()) { + off -= m.upgrade.length; + // Original C: + // Check the portion of the response after its specified upgrade + // if (!check_str_eq(m, "upgrade", body + off, body + nread)) { + // abort(); + // } + // to me, this seems to be equivalent to comparing off and nread ... + check (off, nread); + + // Original C: + // Fix up the response so that message_eq() will verify the beginning + // of the upgrade */ + // + // *(body + nread + strlen(m->upgrade)) = '\0'; + // This only shortens body so the strlen check passes. + return new byte[off]; + + } + } + return null; + } +//upgrade_message_fix(char *body, const size_t nread, const size_t nmsgs, ...) { +// va_list ap; +// size_t i; +// size_t off = 0; +// +// va_start(ap, nmsgs); +// +// for (i = 0; i < nmsgs; i++) { +// struct message *m = va_arg(ap, struct message *); +// +// off += strlen(m->raw); +// +// if (m->upgrade) { +// off -= strlen(m->upgrade); +// +// /* Check the portion of the response after its specified upgrade */ +// if (!check_str_eq(m, "upgrade", body + off, body + nread)) { +// abort(); +// } +// +// /* Fix up the response so that message_eq() will verify the beginning +// * of the upgrade */ +// *(body + nread + strlen(m->upgrade)) = '\0'; +// messages[num_messages -1 ].upgrade = body + nread; +// +// va_end(ap); +// return; +// } +// } +// +// va_end(ap); +// printf("\n\n*** Error: expected a message with upgrade ***\n"); +// +// abort(); +//} + static void p (Object o) { + System.out.println(o); + } + + static Settings settings() { + return new Settings(); + } + static Message find(List list, String name) { + for (Message m : list) { + if (name.equals(m.name)) { + return m; + } + } + return null; + } + + static class Settings extends ParserSettings { + public int numCalled; + public int bodyCount; + Settings() { + this.on_message_complete = new HTTPCallback() { + public int cb (HTTPParser parser) { + numCalled++; + return 0; + } + }; + this.on_body = new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len) { + bodyCount += len; + return 0; + } + }; + } + + int numCalled () { + return this.numCalled; + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java new file mode 100644 index 0000000000..fc8f081247 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java @@ -0,0 +1,59 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.util.*; + +import http_parser.ParserType; + +import static http_parser.lolevel.Util.*; + +public class WrongContentLength { + static final String contentLength = "GET / HTTP/1.0\r\n" + + "Content-Length: 5\r\n" + + "\r\n" + + "hello" + + "hello_again"; + static void test () { + p(WrongContentLength.class); + HTTPParser parser = new HTTPParser(ParserType.HTTP_REQUEST); + ByteBuffer buf = buffer(contentLength); + + Settings settings = new Settings(); + + int read = parser.execute(settings, buf); + check (settings.msg_cmplt_called); + check ("invalid method".equals(settings.err)); + + } + public static void main(String [] args) { + test(); + } + + static class Settings extends ParserSettings { + public int bodyCount; + public boolean msg_cmplt_called; + public String err; + Settings () { + this.on_message_complete = new HTTPCallback () { + public int cb (HTTPParser p) { + check (5 == bodyCount); + msg_cmplt_called = true; + return 0; + } + }; + this.on_body = new HTTPDataCallback() { + public int cb (HTTPParser p, ByteBuffer b, int pos, int len) { + bodyCount += len; + check ("hello".equals(str(b, pos, len))); + return 0; + } + }; + this.on_error = new HTTPErrorCallback() { + public void cb (HTTPParser p, String mes, ByteBuffer b, int i) { + err = mes; + } + }; + } + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/test.c b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/test.c new file mode 100644 index 0000000000..3840747c30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/test.c @@ -0,0 +1,3425 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "http_parser.h" +#include +#include +#include +#include /* rand */ +#include +#include + +#undef TRUE +#define TRUE 1 +#undef FALSE +#define FALSE 0 + +#define MAX_HEADERS 13 +#define MAX_ELEMENT_SIZE 2048 + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) + +static http_parser *parser; + +struct message { + const char *name; // for debugging purposes + const char *raw; + enum http_parser_type type; + enum http_method method; + int status_code; + char request_path[MAX_ELEMENT_SIZE]; + char request_url[MAX_ELEMENT_SIZE]; + char fragment[MAX_ELEMENT_SIZE]; + char query_string[MAX_ELEMENT_SIZE]; + char body[MAX_ELEMENT_SIZE]; + size_t body_size; + const char *host; + const char *userinfo; + uint16_t port; + int num_headers; + enum { NONE=0, FIELD, VALUE } last_header_element; + char headers [MAX_HEADERS][2][MAX_ELEMENT_SIZE]; + int should_keep_alive; + + const char *upgrade; // upgraded body + + unsigned short http_major; + unsigned short http_minor; + + int message_begin_cb_called; + int headers_complete_cb_called; + int message_complete_cb_called; + int message_complete_on_eof; + int body_is_final; +}; + +static int currently_parsing_eof; + +static struct message messages[5]; +static int num_messages; +static http_parser_settings *current_pause_parser; + +/* * R E Q U E S T S * */ +const struct message requests[] = +#define CURL_GET 0 +{ {.name= "curl get" + ,.type= HTTP_REQUEST + ,.raw= "GET /test HTTP/1.1\r\n" + "User-Agent: curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1\r\n" + "Host: 0.0.0.0=5000\r\n" + "Accept: */*\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 3 + ,.headers= + { { "User-Agent", "curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1" } + , { "Host", "0.0.0.0=5000" } + , { "Accept", "*/*" } + } + ,.body= "" + } + +#define FIREFOX_GET 1 +, {.name= "firefox get" + ,.type= HTTP_REQUEST + ,.raw= "GET /favicon.ico HTTP/1.1\r\n" + "Host: 0.0.0.0=5000\r\n" + "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0\r\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" + "Accept-Language: en-us,en;q=0.5\r\n" + "Accept-Encoding: gzip,deflate\r\n" + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" + "Keep-Alive: 300\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/favicon.ico" + ,.request_url= "/favicon.ico" + ,.num_headers= 8 + ,.headers= + { { "Host", "0.0.0.0=5000" } + , { "User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0" } + , { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" } + , { "Accept-Language", "en-us,en;q=0.5" } + , { "Accept-Encoding", "gzip,deflate" } + , { "Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7" } + , { "Keep-Alive", "300" } + , { "Connection", "keep-alive" } + } + ,.body= "" + } + +#define DUMBFUCK 2 +, {.name= "dumbfuck" + ,.type= HTTP_REQUEST + ,.raw= "GET /dumbfuck HTTP/1.1\r\n" + "aaaaaaaaaaaaa:++++++++++\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/dumbfuck" + ,.request_url= "/dumbfuck" + ,.num_headers= 1 + ,.headers= + { { "aaaaaaaaaaaaa", "++++++++++" } + } + ,.body= "" + } + +#define FRAGMENT_IN_URI 3 +, {.name= "fragment in url" + ,.type= HTTP_REQUEST + ,.raw= "GET /forums/1/topics/2375?page=1#posts-17408 HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "page=1" + ,.fragment= "posts-17408" + ,.request_path= "/forums/1/topics/2375" + /* XXX request url does include fragment? */ + ,.request_url= "/forums/1/topics/2375?page=1#posts-17408" + ,.num_headers= 0 + ,.body= "" + } + +#define GET_NO_HEADERS_NO_BODY 4 +, {.name= "get no headers no body" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_no_headers_no_body/world HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE /* would need Connection: close */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_no_headers_no_body/world" + ,.request_url= "/get_no_headers_no_body/world" + ,.num_headers= 0 + ,.body= "" + } + +#define GET_ONE_HEADER_NO_BODY 5 +, {.name= "get one header no body" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_one_header_no_body HTTP/1.1\r\n" + "Accept: */*\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE /* would need Connection: close */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_one_header_no_body" + ,.request_url= "/get_one_header_no_body" + ,.num_headers= 1 + ,.headers= + { { "Accept" , "*/*" } + } + ,.body= "" + } + +#define GET_FUNKY_CONTENT_LENGTH 6 +, {.name= "get funky content length body hello" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_funky_content_length_body_hello HTTP/1.0\r\n" + "conTENT-Length: 5\r\n" + "\r\n" + "HELLO" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_funky_content_length_body_hello" + ,.request_url= "/get_funky_content_length_body_hello" + ,.num_headers= 1 + ,.headers= + { { "conTENT-Length" , "5" } + } + ,.body= "HELLO" + } + +#define POST_IDENTITY_BODY_WORLD 7 +, {.name= "post identity body world" + ,.type= HTTP_REQUEST + ,.raw= "POST /post_identity_body_world?q=search#hey HTTP/1.1\r\n" + "Accept: */*\r\n" + "Transfer-Encoding: identity\r\n" + "Content-Length: 5\r\n" + "\r\n" + "World" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "q=search" + ,.fragment= "hey" + ,.request_path= "/post_identity_body_world" + ,.request_url= "/post_identity_body_world?q=search#hey" + ,.num_headers= 3 + ,.headers= + { { "Accept", "*/*" } + , { "Transfer-Encoding", "identity" } + , { "Content-Length", "5" } + } + ,.body= "World" + } + +#define POST_CHUNKED_ALL_YOUR_BASE 8 +, {.name= "post - chunked body: all your base are belong to us" + ,.type= HTTP_REQUEST + ,.raw= "POST /post_chunked_all_your_base HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "1e\r\nall your base are belong to us\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/post_chunked_all_your_base" + ,.request_url= "/post_chunked_all_your_base" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding" , "chunked" } + } + ,.body= "all your base are belong to us" + } + +#define TWO_CHUNKS_MULT_ZERO_END 9 +, {.name= "two chunks ; triple zero ending" + ,.type= HTTP_REQUEST + ,.raw= "POST /two_chunks_mult_zero_end HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5\r\nhello\r\n" + "6\r\n world\r\n" + "000\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/two_chunks_mult_zero_end" + ,.request_url= "/two_chunks_mult_zero_end" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body= "hello world" + } + +#define CHUNKED_W_TRAILING_HEADERS 10 +, {.name= "chunked with trailing headers. blech." + ,.type= HTTP_REQUEST + ,.raw= "POST /chunked_w_trailing_headers HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5\r\nhello\r\n" + "6\r\n world\r\n" + "0\r\n" + "Vary: *\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/chunked_w_trailing_headers" + ,.request_url= "/chunked_w_trailing_headers" + ,.num_headers= 3 + ,.headers= + { { "Transfer-Encoding", "chunked" } + , { "Vary", "*" } + , { "Content-Type", "text/plain" } + } + ,.body= "hello world" + } + +#define CHUNKED_W_BULLSHIT_AFTER_LENGTH 11 +, {.name= "with bullshit after the length" + ,.type= HTTP_REQUEST + ,.raw= "POST /chunked_w_bullshit_after_length HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5; ihatew3;whatthefuck=aretheseparametersfor\r\nhello\r\n" + "6; blahblah; blah\r\n world\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/chunked_w_bullshit_after_length" + ,.request_url= "/chunked_w_bullshit_after_length" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body= "hello world" + } + +#define WITH_QUOTES 12 +, {.name= "with quotes" + ,.type= HTTP_REQUEST + ,.raw= "GET /with_\"stupid\"_quotes?foo=\"bar\" HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "foo=\"bar\"" + ,.fragment= "" + ,.request_path= "/with_\"stupid\"_quotes" + ,.request_url= "/with_\"stupid\"_quotes?foo=\"bar\"" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define APACHEBENCH_GET 13 +/* The server receiving this request SHOULD NOT wait for EOF + * to know that content-length == 0. + * How to represent this in a unit test? message_complete_on_eof + * Compare with NO_CONTENT_LENGTH_RESPONSE. + */ +, {.name = "apachebench get" + ,.type= HTTP_REQUEST + ,.raw= "GET /test HTTP/1.0\r\n" + "Host: 0.0.0.0:5000\r\n" + "User-Agent: ApacheBench/2.3\r\n" + "Accept: */*\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 3 + ,.headers= { { "Host", "0.0.0.0:5000" } + , { "User-Agent", "ApacheBench/2.3" } + , { "Accept", "*/*" } + } + ,.body= "" + } + +#define QUERY_URL_WITH_QUESTION_MARK_GET 14 +/* Some clients include '?' characters in query strings. + */ +, {.name = "query url with question mark" + ,.type= HTTP_REQUEST + ,.raw= "GET /test.cgi?foo=bar?baz HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "foo=bar?baz" + ,.fragment= "" + ,.request_path= "/test.cgi" + ,.request_url= "/test.cgi?foo=bar?baz" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define PREFIX_NEWLINE_GET 15 +/* Some clients, especially after a POST in a keep-alive connection, + * will send an extra CRLF before the next request + */ +, {.name = "newline prefix get" + ,.type= HTTP_REQUEST + ,.raw= "\r\nGET /test HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define UPGRADE_REQUEST 16 +, {.name = "upgrade request" + ,.type= HTTP_REQUEST + ,.raw= "GET /demo HTTP/1.1\r\n" + "Host: example.com\r\n" + "Connection: Upgrade\r\n" + "Sec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\n" + "Sec-WebSocket-Protocol: sample\r\n" + "Upgrade: WebSocket\r\n" + "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\n" + "Origin: http://example.com\r\n" + "\r\n" + "Hot diggity dogg" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/demo" + ,.request_url= "/demo" + ,.num_headers= 7 + ,.upgrade="Hot diggity dogg" + ,.headers= { { "Host", "example.com" } + , { "Connection", "Upgrade" } + , { "Sec-WebSocket-Key2", "12998 5 Y3 1 .P00" } + , { "Sec-WebSocket-Protocol", "sample" } + , { "Upgrade", "WebSocket" } + , { "Sec-WebSocket-Key1", "4 @1 46546xW%0l 1 5" } + , { "Origin", "http://example.com" } + } + ,.body= "" + } + +#define CONNECT_REQUEST 17 +, {.name = "connect request" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT 0-home0.netscape.com:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + "some data\r\n" + "and yet even more data" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "0-home0.netscape.com:443" + ,.num_headers= 2 + ,.upgrade="some data\r\nand yet even more data" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } + +#define REPORT_REQ 18 +, {.name= "report request" + ,.type= HTTP_REQUEST + ,.raw= "REPORT /test HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_REPORT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define NO_HTTP_VERSION 19 +, {.name= "request with no http version" + ,.type= HTTP_REQUEST + ,.raw= "GET /\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 0 + ,.http_minor= 9 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define MSEARCH_REQ 20 +, {.name= "m-search request" + ,.type= HTTP_REQUEST + ,.raw= "M-SEARCH * HTTP/1.1\r\n" + "HOST: 239.255.255.250:1900\r\n" + "MAN: \"ssdp:discover\"\r\n" + "ST: \"ssdp:all\"\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_MSEARCH + ,.query_string= "" + ,.fragment= "" + ,.request_path= "*" + ,.request_url= "*" + ,.num_headers= 3 + ,.headers= { { "HOST", "239.255.255.250:1900" } + , { "MAN", "\"ssdp:discover\"" } + , { "ST", "\"ssdp:all\"" } + } + ,.body= "" + } + +#define LINE_FOLDING_IN_HEADER 21 +, {.name= "line folding in header value" + ,.type= HTTP_REQUEST + ,.raw= "GET / HTTP/1.1\r\n" + "Line1: abc\r\n" + "\tdef\r\n" + " ghi\r\n" + "\t\tjkl\r\n" + " mno \r\n" + "\t \tqrs\r\n" + "Line2: \t line2\t\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 2 + ,.headers= { { "Line1", "abcdefghijklmno qrs" } + , { "Line2", "line2\t" } + } + ,.body= "" + } + + +#define QUERY_TERMINATED_HOST 22 +, {.name= "host terminated by a query string" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org?hail=all HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "hail=all" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org?hail=all" + ,.host= "hypnotoad.org" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define QUERY_TERMINATED_HOSTPORT 23 +, {.name= "host:port terminated by a query string" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org:1234?hail=all HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "hail=all" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org:1234?hail=all" + ,.host= "hypnotoad.org" + ,.port= 1234 + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define SPACE_TERMINATED_HOSTPORT 24 +, {.name= "host:port terminated by a space" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org:1234 HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org:1234" + ,.host= "hypnotoad.org" + ,.port= 1234 + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define PATCH_REQ 25 +, {.name = "PATCH request" + ,.type= HTTP_REQUEST + ,.raw= "PATCH /file.txt HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/example\r\n" + "If-Match: \"e0023aa4e\"\r\n" + "Content-Length: 10\r\n" + "\r\n" + "cccccccccc" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_PATCH + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/file.txt" + ,.request_url= "/file.txt" + ,.num_headers= 4 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/example" } + , { "If-Match", "\"e0023aa4e\"" } + , { "Content-Length", "10" } + } + ,.body= "cccccccccc" + } + +#define CONNECT_CAPS_REQUEST 26 +, {.name = "connect caps request" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT HOME0.NETSCAPE.COM:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "HOME0.NETSCAPE.COM:443" + ,.num_headers= 2 + ,.upgrade="" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } + +#if !HTTP_PARSER_STRICT +#define UTF8_PATH_REQ 27 +, {.name= "utf-8 path request" + ,.type= HTTP_REQUEST + ,.raw= "GET /δ¶/δt/pope?q=1#narf HTTP/1.1\r\n" + "Host: github.com\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "q=1" + ,.fragment= "narf" + ,.request_path= "/δ¶/δt/pope" + ,.request_url= "/δ¶/δt/pope?q=1#narf" + ,.num_headers= 1 + ,.headers= { {"Host", "github.com" } + } + ,.body= "" + } + +#define HOSTNAME_UNDERSCORE 28 +, {.name = "hostname underscore" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT home_0.netscape.com:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "home_0.netscape.com:443" + ,.num_headers= 2 + ,.upgrade="" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } +#endif /* !HTTP_PARSER_STRICT */ + +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_NO_CONNECTION_CLOSE 29 +, {.name = "eat CRLF between requests, no \"Connection: close\" header" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 3 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + } + ,.body= "q=42" + } + +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_WITH_CONNECTION_CLOSE 30 +, {.name = "eat CRLF between requests even if \"Connection: close\" is set" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "Connection: close\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE /* input buffer isn't empty when on_message_complete is called */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 4 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + , { "Connection", "close" } + } + ,.body= "q=42" + } + +#define PURGE_REQ 31 +, {.name = "PURGE request" + ,.type= HTTP_REQUEST + ,.raw= "PURGE /file.txt HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_PURGE + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/file.txt" + ,.request_url= "/file.txt" + ,.num_headers= 1 + ,.headers= { { "Host", "www.example.com" } } + ,.body= "" + } + +#define SEARCH_REQ 32 +, {.name = "SEARCH request" + ,.type= HTTP_REQUEST + ,.raw= "SEARCH / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_SEARCH + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 1 + ,.headers= { { "Host", "www.example.com" } } + ,.body= "" + } + +#define PROXY_WITH_BASIC_AUTH 33 +, {.name= "host:port and basic_auth" + ,.type= HTTP_REQUEST + ,.raw= "GET http://a%12:b!&*$@hypnotoad.org:1234/toto HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.fragment= "" + ,.request_path= "/toto" + ,.request_url= "http://a%12:b!&*$@hypnotoad.org:1234/toto" + ,.host= "hypnotoad.org" + ,.userinfo= "a%12:b!&*$" + ,.port= 1234 + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + + +, {.name= NULL } /* sentinel */ +}; + +/* * R E S P O N S E S * */ +const struct message responses[] = +#define GOOGLE_301 0 +{ {.name= "google 301" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 301 Moved Permanently\r\n" + "Location: http://www.google.com/\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Date: Sun, 26 Apr 2009 11:11:49 GMT\r\n" + "Expires: Tue, 26 May 2009 11:11:49 GMT\r\n" + "X-$PrototypeBI-Version: 1.6.0.3\r\n" /* $ char in header field */ + "Cache-Control: public, max-age=2592000\r\n" + "Server: gws\r\n" + "Content-Length: 219 \r\n" + "\r\n" + "\n" + "301 Moved\n" + "

                301 Moved

                \n" + "The document has moved\n" + "
                here.\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 301 + ,.num_headers= 8 + ,.headers= + { { "Location", "http://www.google.com/" } + , { "Content-Type", "text/html; charset=UTF-8" } + , { "Date", "Sun, 26 Apr 2009 11:11:49 GMT" } + , { "Expires", "Tue, 26 May 2009 11:11:49 GMT" } + , { "X-$PrototypeBI-Version", "1.6.0.3" } + , { "Cache-Control", "public, max-age=2592000" } + , { "Server", "gws" } + , { "Content-Length", "219 " } + } + ,.body= "\n" + "301 Moved\n" + "

                301 Moved

                \n" + "The document has moved\n" + "here.\r\n" + "\r\n" + } + +#define NO_CONTENT_LENGTH_RESPONSE 1 +/* The client should wait for the server's EOF. That is, when content-length + * is not specified, and "Connection: close", the end of body is specified + * by the EOF. + * Compare with APACHEBENCH_GET + */ +, {.name= "no content-length response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Date: Tue, 04 Aug 2009 07:59:32 GMT\r\n" + "Server: Apache\r\n" + "X-Powered-By: Servlet/2.5 JSP/2.1\r\n" + "Content-Type: text/xml; charset=utf-8\r\n" + "Connection: close\r\n" + "\r\n" + "\n" + "\n" + " \n" + " \n" + " SOAP-ENV:Client\n" + " Client Error\n" + " \n" + " \n" + "" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 5 + ,.headers= + { { "Date", "Tue, 04 Aug 2009 07:59:32 GMT" } + , { "Server", "Apache" } + , { "X-Powered-By", "Servlet/2.5 JSP/2.1" } + , { "Content-Type", "text/xml; charset=utf-8" } + , { "Connection", "close" } + } + ,.body= "\n" + "\n" + " \n" + " \n" + " SOAP-ENV:Client\n" + " Client Error\n" + " \n" + " \n" + "" + } + +#define NO_HEADERS_NO_BODY_404 2 +, {.name= "404 no headers no body" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 404 Not Found\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 404 + ,.num_headers= 0 + ,.headers= {} + ,.body_size= 0 + ,.body= "" + } + +#define NO_REASON_PHRASE 3 +, {.name= "301 no response phrase" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 301\r\n\r\n" + ,.should_keep_alive = FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 301 + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define TRAILING_SPACE_ON_CHUNKED_BODY 4 +, {.name="200 trailing space on chunked body" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "25 \r\n" + "This is the data in the first chunk\r\n" + "\r\n" + "1C\r\n" + "and this is the second one\r\n" + "\r\n" + "0 \r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { {"Content-Type", "text/plain" } + , {"Transfer-Encoding", "chunked" } + } + ,.body_size = 37+28 + ,.body = + "This is the data in the first chunk\r\n" + "and this is the second one\r\n" + + } + +#define NO_CARRIAGE_RET 5 +, {.name="no carriage ret" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\n" + "Content-Type: text/html; charset=utf-8\n" + "Connection: close\n" + "\n" + "these headers are from http://news.ycombinator.com/" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { {"Content-Type", "text/html; charset=utf-8" } + , {"Connection", "close" } + } + ,.body= "these headers are from http://news.ycombinator.com/" + } + +#define PROXY_CONNECTION 6 +, {.name="proxy connection" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Content-Length: 11\r\n" + "Proxy-Connection: close\r\n" + "Date: Thu, 31 Dec 2009 20:55:48 +0000\r\n" + "\r\n" + "hello world" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 4 + ,.headers= + { {"Content-Type", "text/html; charset=UTF-8" } + , {"Content-Length", "11" } + , {"Proxy-Connection", "close" } + , {"Date", "Thu, 31 Dec 2009 20:55:48 +0000"} + } + ,.body= "hello world" + } + +#define UNDERSTORE_HEADER_KEY 7 + // shown by + // curl -o /dev/null -v "http://ad.doubleclick.net/pfadx/DARTSHELLCONFIGXML;dcmt=text/xml;" +, {.name="underscore header key" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Server: DCLK-AdSvr\r\n" + "Content-Type: text/xml\r\n" + "Content-Length: 0\r\n" + "DCLK_imp: v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 4 + ,.headers= + { {"Server", "DCLK-AdSvr" } + , {"Content-Type", "text/xml" } + , {"Content-Length", "0" } + , {"DCLK_imp", "v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o" } + } + ,.body= "" + } + +#define BONJOUR_MADAME_FR 8 +/* The client should not merge two headers fields when the first one doesn't + * have a value. + */ +, {.name= "bonjourmadame.fr" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 301 Moved Permanently\r\n" + "Date: Thu, 03 Jun 2010 09:56:32 GMT\r\n" + "Server: Apache/2.2.3 (Red Hat)\r\n" + "Cache-Control: public\r\n" + "Pragma: \r\n" + "Location: http://www.bonjourmadame.fr/\r\n" + "Vary: Accept-Encoding\r\n" + "Content-Length: 0\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 301 + ,.num_headers= 9 + ,.headers= + { { "Date", "Thu, 03 Jun 2010 09:56:32 GMT" } + , { "Server", "Apache/2.2.3 (Red Hat)" } + , { "Cache-Control", "public" } + , { "Pragma", "" } + , { "Location", "http://www.bonjourmadame.fr/" } + , { "Vary", "Accept-Encoding" } + , { "Content-Length", "0" } + , { "Content-Type", "text/html; charset=UTF-8" } + , { "Connection", "keep-alive" } + } + ,.body= "" + } + +#define RES_FIELD_UNDERSCORE 9 +/* Should handle spaces in header fields */ +, {.name= "field underscore" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Date: Tue, 28 Sep 2010 01:14:13 GMT\r\n" + "Server: Apache\r\n" + "Cache-Control: no-cache, must-revalidate\r\n" + "Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n" + ".et-Cookie: PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com\r\n" + "Vary: Accept-Encoding\r\n" + "_eep-Alive: timeout=45\r\n" /* semantic value ignored */ + "_onnection: Keep-Alive\r\n" /* semantic value ignored */ + "Transfer-Encoding: chunked\r\n" + "Content-Type: text/html\r\n" + "Connection: close\r\n" + "\r\n" + "0\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 11 + ,.headers= + { { "Date", "Tue, 28 Sep 2010 01:14:13 GMT" } + , { "Server", "Apache" } + , { "Cache-Control", "no-cache, must-revalidate" } + , { "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" } + , { ".et-Cookie", "PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com" } + , { "Vary", "Accept-Encoding" } + , { "_eep-Alive", "timeout=45" } + , { "_onnection", "Keep-Alive" } + , { "Transfer-Encoding", "chunked" } + , { "Content-Type", "text/html" } + , { "Connection", "close" } + } + ,.body= "" + } + +#define NON_ASCII_IN_STATUS_LINE 10 +/* Should handle non-ASCII in status line */ +, {.name= "non-ASCII in status line" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 500 Oriëntatieprobleem\r\n" + "Date: Fri, 5 Nov 2010 23:07:12 GMT+2\r\n" + "Content-Length: 0\r\n" + "Connection: close\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 500 + ,.num_headers= 3 + ,.headers= + { { "Date", "Fri, 5 Nov 2010 23:07:12 GMT+2" } + , { "Content-Length", "0" } + , { "Connection", "close" } + } + ,.body= "" + } + +#define HTTP_VERSION_0_9 11 +/* Should handle HTTP/0.9 */ +, {.name= "http version 0.9" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/0.9 200 OK\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 0 + ,.http_minor= 9 + ,.status_code= 200 + ,.num_headers= 0 + ,.headers= + {} + ,.body= "" + } + +#define NO_CONTENT_LENGTH_NO_TRANSFER_ENCODING_RESPONSE 12 +/* The client should wait for the server's EOF. That is, when neither + * content-length nor transfer-encoding is specified, the end of body + * is specified by the EOF. + */ +, {.name= "neither content-length nor transfer-encoding response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + "hello world" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Content-Type", "text/plain" } + } + ,.body= "hello world" + } + +#define NO_BODY_HTTP10_KA_200 13 +, {.name= "HTTP/1.0 with keep-alive and EOF-terminated 200 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 200 OK\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Connection", "keep-alive" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP10_KA_204 14 +, {.name= "HTTP/1.0 with keep-alive and a 204 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 204 No content\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 204 + ,.num_headers= 1 + ,.headers= + { { "Connection", "keep-alive" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_200 15 +, {.name= "HTTP/1.1 with an EOF-terminated 200 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 0 + ,.headers={} + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_204 16 +, {.name= "HTTP/1.1 with a 204 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 204 No content\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 204 + ,.num_headers= 0 + ,.headers={} + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_NOKA_204 17 +, {.name= "HTTP/1.1 with a 204 status and keep-alive disabled" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 204 No content\r\n" + "Connection: close\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 204 + ,.num_headers= 1 + ,.headers= + { { "Connection", "close" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_CHUNKED_200 18 +, {.name= "HTTP/1.1 with chunked endocing and a 200 response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body_size= 0 + ,.body= "" + } + +#if !HTTP_PARSER_STRICT +#define SPACE_IN_FIELD_RES 19 +/* Should handle spaces in header fields */ +, {.name= "field space" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Server: Microsoft-IIS/6.0\r\n" + "X-Powered-By: ASP.NET\r\n" + "en-US Content-Type: text/xml\r\n" /* this is the problem */ + "Content-Type: text/xml\r\n" + "Content-Length: 16\r\n" + "Date: Fri, 23 Jul 2010 18:45:38 GMT\r\n" + "Connection: keep-alive\r\n" + "\r\n" + "hello" /* fake body */ + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 7 + ,.headers= + { { "Server", "Microsoft-IIS/6.0" } + , { "X-Powered-By", "ASP.NET" } + , { "en-US Content-Type", "text/xml" } + , { "Content-Type", "text/xml" } + , { "Content-Length", "16" } + , { "Date", "Fri, 23 Jul 2010 18:45:38 GMT" } + , { "Connection", "keep-alive" } + } + ,.body= "hello" + } +#endif /* !HTTP_PARSER_STRICT */ + +, {.name= NULL } /* sentinel */ +}; + +/* strnlen() is a POSIX.2008 addition. Can't rely on it being available so + * define it ourselves. + */ +size_t +strnlen(const char *s, size_t maxlen) +{ + const char *p; + + p = memchr(s, '\0', maxlen); + if (p == NULL) + return maxlen; + + return p - s; +} + +size_t +strlncat(char *dst, size_t len, const char *src, size_t n) +{ + size_t slen; + size_t dlen; + size_t rlen; + size_t ncpy; + + slen = strnlen(src, n); + dlen = strnlen(dst, len); + + if (dlen < len) { + rlen = len - dlen; + ncpy = slen < rlen ? slen : (rlen - 1); + memcpy(dst + dlen, src, ncpy); + dst[dlen + ncpy] = '\0'; + } + + assert(len > slen + dlen); + return slen + dlen; +} + +size_t +strlcat(char *dst, const char *src, size_t len) +{ + return strlncat(dst, len, src, (size_t) -1); +} + +size_t +strlncpy(char *dst, size_t len, const char *src, size_t n) +{ + size_t slen; + size_t ncpy; + + slen = strnlen(src, n); + + if (len > 0) { + ncpy = slen < len ? slen : (len - 1); + memcpy(dst, src, ncpy); + dst[ncpy] = '\0'; + } + + assert(len > slen); + return slen; +} + +size_t +strlcpy(char *dst, const char *src, size_t len) +{ + return strlncpy(dst, len, src, (size_t) -1); +} + +int +request_url_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + strlncat(messages[num_messages].request_url, + sizeof(messages[num_messages].request_url), + buf, + len); + return 0; +} + +int +status_complete_cb (http_parser *p) { + assert(p == parser); + p->data++; + return 0; +} + +int +header_field_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + struct message *m = &messages[num_messages]; + + if (m->last_header_element != FIELD) + m->num_headers++; + + strlncat(m->headers[m->num_headers-1][0], + sizeof(m->headers[m->num_headers-1][0]), + buf, + len); + + m->last_header_element = FIELD; + + return 0; +} + +int +header_value_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + struct message *m = &messages[num_messages]; + + strlncat(m->headers[m->num_headers-1][1], + sizeof(m->headers[m->num_headers-1][1]), + buf, + len); + + m->last_header_element = VALUE; + + return 0; +} + +void +check_body_is_final (const http_parser *p) +{ + if (messages[num_messages].body_is_final) { + fprintf(stderr, "\n\n *** Error http_body_is_final() should return 1 " + "on last on_body callback call " + "but it doesn't! ***\n\n"); + assert(0); + abort(); + } + messages[num_messages].body_is_final = http_body_is_final(p); +} + +int +body_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + strlncat(messages[num_messages].body, + sizeof(messages[num_messages].body), + buf, + len); + messages[num_messages].body_size += len; + check_body_is_final(p); + // printf("body_cb: '%s'\n", requests[num_messages].body); + return 0; +} + +int +count_body_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + assert(buf); + messages[num_messages].body_size += len; + check_body_is_final(p); + return 0; +} + +int +message_begin_cb (http_parser *p) +{ + assert(p == parser); + messages[num_messages].message_begin_cb_called = TRUE; + return 0; +} + +int +headers_complete_cb (http_parser *p) +{ + assert(p == parser); + messages[num_messages].method = parser->method; + messages[num_messages].status_code = parser->status_code; + messages[num_messages].http_major = parser->http_major; + messages[num_messages].http_minor = parser->http_minor; + messages[num_messages].headers_complete_cb_called = TRUE; + messages[num_messages].should_keep_alive = http_should_keep_alive(parser); + return 0; +} + +int +message_complete_cb (http_parser *p) +{ + assert(p == parser); + if (messages[num_messages].should_keep_alive != http_should_keep_alive(parser)) + { + fprintf(stderr, "\n\n *** Error http_should_keep_alive() should have same " + "value in both on_message_complete and on_headers_complete " + "but it doesn't! ***\n\n"); + assert(0); + abort(); + } + + if (messages[num_messages].body_size && + http_body_is_final(p) && + !messages[num_messages].body_is_final) + { + fprintf(stderr, "\n\n *** Error http_body_is_final() should return 1 " + "on last on_body callback call " + "but it doesn't! ***\n\n"); + assert(0); + abort(); + } + + messages[num_messages].message_complete_cb_called = TRUE; + + messages[num_messages].message_complete_on_eof = currently_parsing_eof; + + num_messages++; + return 0; +} + +/* These dontcall_* callbacks exist so that we can verify that when we're + * paused, no additional callbacks are invoked */ +int +dontcall_message_begin_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_message_begin() called on paused parser ***\n\n"); + abort(); +} + +int +dontcall_header_field_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_header_field() called on paused parser ***\n\n"); + abort(); +} + +int +dontcall_header_value_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_header_value() called on paused parser ***\n\n"); + abort(); +} + +int +dontcall_request_url_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_request_url() called on paused parser ***\n\n"); + abort(); +} + +int +dontcall_body_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_body_cb() called on paused parser ***\n\n"); + abort(); +} + +int +dontcall_headers_complete_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_headers_complete() called on paused " + "parser ***\n\n"); + abort(); +} + +int +dontcall_message_complete_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_message_complete() called on paused " + "parser ***\n\n"); + abort(); +} + +static http_parser_settings settings_dontcall = + {.on_message_begin = dontcall_message_begin_cb + ,.on_header_field = dontcall_header_field_cb + ,.on_header_value = dontcall_header_value_cb + ,.on_url = dontcall_request_url_cb + ,.on_body = dontcall_body_cb + ,.on_headers_complete = dontcall_headers_complete_cb + ,.on_message_complete = dontcall_message_complete_cb + }; + +/* These pause_* callbacks always pause the parser and just invoke the regular + * callback that tracks content. Before returning, we overwrite the parser + * settings to point to the _dontcall variety so that we can verify that + * the pause actually did, you know, pause. */ +int +pause_message_begin_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return message_begin_cb(p); +} + +int +pause_header_field_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return header_field_cb(p, buf, len); +} + +int +pause_header_value_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return header_value_cb(p, buf, len); +} + +int +pause_request_url_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return request_url_cb(p, buf, len); +} + +int +pause_body_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return body_cb(p, buf, len); +} + +int +pause_headers_complete_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return headers_complete_cb(p); +} + +int +pause_message_complete_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return message_complete_cb(p); +} + +static http_parser_settings settings_pause = + {.on_message_begin = pause_message_begin_cb + ,.on_header_field = pause_header_field_cb + ,.on_header_value = pause_header_value_cb + ,.on_url = pause_request_url_cb + ,.on_body = pause_body_cb + ,.on_headers_complete = pause_headers_complete_cb + ,.on_message_complete = pause_message_complete_cb + }; + +static http_parser_settings settings = + {.on_message_begin = message_begin_cb + ,.on_header_field = header_field_cb + ,.on_header_value = header_value_cb + ,.on_url = request_url_cb + ,.on_body = body_cb + ,.on_headers_complete = headers_complete_cb + ,.on_message_complete = message_complete_cb + }; + +static http_parser_settings settings_count_body = + {.on_message_begin = message_begin_cb + ,.on_header_field = header_field_cb + ,.on_header_value = header_value_cb + ,.on_url = request_url_cb + ,.on_body = count_body_cb + ,.on_headers_complete = headers_complete_cb + ,.on_message_complete = message_complete_cb + }; + +static http_parser_settings settings_null = + {.on_message_begin = 0 + ,.on_header_field = 0 + ,.on_header_value = 0 + ,.on_url = 0 + ,.on_body = 0 + ,.on_headers_complete = 0 + ,.on_message_complete = 0 + }; + +void +parser_init (enum http_parser_type type) +{ + num_messages = 0; + + assert(parser == NULL); + + parser = malloc(sizeof(http_parser)); + + http_parser_init(parser, type); + + memset(&messages, 0, sizeof messages); + +} + +void +parser_free () +{ + assert(parser); + free(parser); + parser = NULL; +} + +size_t parse (const char *buf, size_t len) +{ + size_t nparsed; + currently_parsing_eof = (len == 0); + nparsed = http_parser_execute(parser, &settings, buf, len); + return nparsed; +} + +size_t parse_count_body (const char *buf, size_t len) +{ + size_t nparsed; + currently_parsing_eof = (len == 0); + nparsed = http_parser_execute(parser, &settings_count_body, buf, len); + return nparsed; +} + +size_t parse_pause (const char *buf, size_t len) +{ + size_t nparsed; + http_parser_settings s = settings_pause; + + currently_parsing_eof = (len == 0); + current_pause_parser = &s; + nparsed = http_parser_execute(parser, current_pause_parser, buf, len); + return nparsed; +} + +static inline int +check_str_eq (const struct message *m, + const char *prop, + const char *expected, + const char *found) { + if ((expected == NULL) != (found == NULL)) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected %s\n", (expected == NULL) ? "NULL" : expected); + printf(" found %s\n", (found == NULL) ? "NULL" : found); + return 0; + } + if (expected != NULL && 0 != strcmp(expected, found)) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected '%s'\n", expected); + printf(" found '%s'\n", found); + return 0; + } + return 1; +} + +static inline int +check_num_eq (const struct message *m, + const char *prop, + int expected, + int found) { + if (expected != found) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected %d\n", expected); + printf(" found %d\n", found); + return 0; + } + return 1; +} + +#define MESSAGE_CHECK_STR_EQ(expected, found, prop) \ + if (!check_str_eq(expected, #prop, expected->prop, found->prop)) return 0 + +#define MESSAGE_CHECK_NUM_EQ(expected, found, prop) \ + if (!check_num_eq(expected, #prop, expected->prop, found->prop)) return 0 + +#define MESSAGE_CHECK_URL_EQ(u, expected, found, prop, fn) \ +do { \ + char ubuf[256]; \ + \ + if ((u)->field_set & (1 << (fn))) { \ + memcpy(ubuf, (found)->request_url + (u)->field_data[(fn)].off, \ + (u)->field_data[(fn)].len); \ + ubuf[(u)->field_data[(fn)].len] = '\0'; \ + } else { \ + ubuf[0] = '\0'; \ + } \ + \ + check_str_eq(expected, #prop, expected->prop, ubuf); \ +} while(0) + +int +message_eq (int index, const struct message *expected) +{ + int i; + struct message *m = &messages[index]; + + MESSAGE_CHECK_NUM_EQ(expected, m, http_major); + MESSAGE_CHECK_NUM_EQ(expected, m, http_minor); + + if (expected->type == HTTP_REQUEST) { + MESSAGE_CHECK_NUM_EQ(expected, m, method); + } else { + MESSAGE_CHECK_NUM_EQ(expected, m, status_code); + } + + MESSAGE_CHECK_NUM_EQ(expected, m, should_keep_alive); + MESSAGE_CHECK_NUM_EQ(expected, m, message_complete_on_eof); + + assert(m->message_begin_cb_called); + assert(m->headers_complete_cb_called); + assert(m->message_complete_cb_called); + + + MESSAGE_CHECK_STR_EQ(expected, m, request_url); + + /* Check URL components; we can't do this w/ CONNECT since it doesn't + * send us a well-formed URL. + */ + if (*m->request_url && m->method != HTTP_CONNECT) { + struct http_parser_url u; + + if (http_parser_parse_url(m->request_url, strlen(m->request_url), 0, &u)) { + fprintf(stderr, "\n\n*** failed to parse URL %s ***\n\n", + m->request_url); + abort(); + } + + if (expected->host) { + MESSAGE_CHECK_URL_EQ(&u, expected, m, host, UF_HOST); + } + + if (expected->userinfo) { + MESSAGE_CHECK_URL_EQ(&u, expected, m, userinfo, UF_USERINFO); + } + + m->port = (u.field_set & (1 << UF_PORT)) ? + u.port : 0; + + MESSAGE_CHECK_URL_EQ(&u, expected, m, query_string, UF_QUERY); + MESSAGE_CHECK_URL_EQ(&u, expected, m, fragment, UF_FRAGMENT); + MESSAGE_CHECK_URL_EQ(&u, expected, m, request_path, UF_PATH); + MESSAGE_CHECK_NUM_EQ(expected, m, port); + } + + if (expected->body_size) { + MESSAGE_CHECK_NUM_EQ(expected, m, body_size); + } else { + MESSAGE_CHECK_STR_EQ(expected, m, body); + } + + MESSAGE_CHECK_NUM_EQ(expected, m, num_headers); + + int r; + for (i = 0; i < m->num_headers; i++) { + r = check_str_eq(expected, "header field", expected->headers[i][0], m->headers[i][0]); + if (!r) return 0; + r = check_str_eq(expected, "header value", expected->headers[i][1], m->headers[i][1]); + if (!r) return 0; + } + + MESSAGE_CHECK_STR_EQ(expected, m, upgrade); + + return 1; +} + +/* Given a sequence of varargs messages, return the number of them that the + * parser should successfully parse, taking into account that upgraded + * messages prevent all subsequent messages from being parsed. + */ +size_t +count_parsed_messages(const size_t nmsgs, ...) { + size_t i; + va_list ap; + + va_start(ap, nmsgs); + + for (i = 0; i < nmsgs; i++) { + struct message *m = va_arg(ap, struct message *); + + if (m->upgrade) { + va_end(ap); + return i + 1; + } + } + + va_end(ap); + return nmsgs; +} + +/* Given a sequence of bytes and the number of these that we were able to + * parse, verify that upgrade bodies are correct. + */ +void +upgrade_message_fix(char *body, const size_t nread, const size_t nmsgs, ...) { + va_list ap; + size_t i; + size_t off = 0; + + va_start(ap, nmsgs); + + for (i = 0; i < nmsgs; i++) { + struct message *m = va_arg(ap, struct message *); + + off += strlen(m->raw); + + if (m->upgrade) { + off -= strlen(m->upgrade); + + /* Check the portion of the response after its specified upgrade */ + if (!check_str_eq(m, "upgrade", body + off, body + nread)) { + abort(); + } + + /* Fix up the response so that message_eq() will verify the beginning + * of the upgrade */ + *(body + nread + strlen(m->upgrade)) = '\0'; + messages[num_messages -1 ].upgrade = body + nread; + + va_end(ap); + return; + } + } + + va_end(ap); + printf("\n\n*** Error: expected a message with upgrade ***\n"); + + abort(); +} + +static void +print_error (const char *raw, size_t error_location) +{ + fprintf(stderr, "\n*** %s ***\n\n", + http_errno_description(HTTP_PARSER_ERRNO(parser))); + + int this_line = 0, char_len = 0; + size_t i, j, len = strlen(raw), error_location_line = 0; + for (i = 0; i < len; i++) { + if (i == error_location) this_line = 1; + switch (raw[i]) { + case '\r': + char_len = 2; + fprintf(stderr, "\\r"); + break; + + case '\n': + char_len = 2; + fprintf(stderr, "\\n\n"); + + if (this_line) goto print; + + error_location_line = 0; + continue; + + default: + char_len = 1; + fputc(raw[i], stderr); + break; + } + if (!this_line) error_location_line += char_len; + } + + fprintf(stderr, "[eof]\n"); + + print: + for (j = 0; j < error_location_line; j++) { + fputc(' ', stderr); + } + fprintf(stderr, "^\n\nerror location: %u\n", (unsigned int)error_location); +} + +void +test_preserve_data (void) +{ + char my_data[] = "application-specific data"; + http_parser parser; + parser.data = my_data; + http_parser_init(&parser, HTTP_REQUEST); + if (parser.data != my_data) { + printf("\n*** parser.data not preserved accross http_parser_init ***\n\n"); + abort(); + } +} + +struct url_test { + const char *name; + const char *url; + int is_connect; + struct http_parser_url u; + int rv; +}; + +const struct url_test url_tests[] = +{ {.name="proxy request" + ,.url="http://hostname/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PATH) + ,.port=0 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 7, 8 } /* UF_HOST */ + ,{ 0, 0 } /* UF_PORT */ + ,{ 15, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="proxy request with port" + ,.url="http://hostname:444/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PORT) | (1 << UF_PATH) + ,.port=444 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 7, 8 } /* UF_HOST */ + ,{ 16, 3 } /* UF_PORT */ + ,{ 19, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="CONNECT request" + ,.url="hostname:443" + ,.is_connect=1 + ,.u= + {.field_set=(1 << UF_HOST) | (1 << UF_PORT) + ,.port=443 + ,.field_data= + {{ 0, 0 } /* UF_SCHEMA */ + ,{ 0, 8 } /* UF_HOST */ + ,{ 9, 3 } /* UF_PORT */ + ,{ 0, 0 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="CONNECT request but not connect" + ,.url="hostname:443" + ,.is_connect=0 + ,.rv=1 + } + +, {.name="proxy ipv6 request" + ,.url="http://[1:2::3:4]/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PATH) + ,.port=0 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 8, 8 } /* UF_HOST */ + ,{ 0, 0 } /* UF_PORT */ + ,{ 17, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="proxy ipv6 request with port" + ,.url="http://[1:2::3:4]:67/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PORT) | (1 << UF_PATH) + ,.port=67 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 8, 8 } /* UF_HOST */ + ,{ 18, 2 } /* UF_PORT */ + ,{ 20, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="CONNECT ipv6 address" + ,.url="[1:2::3:4]:443" + ,.is_connect=1 + ,.u= + {.field_set=(1 << UF_HOST) | (1 << UF_PORT) + ,.port=443 + ,.field_data= + {{ 0, 0 } /* UF_SCHEMA */ + ,{ 1, 8 } /* UF_HOST */ + ,{ 11, 3 } /* UF_PORT */ + ,{ 0, 0 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="ipv4 in ipv6 address" + ,.url="http://[2001:0000:0000:0000:0000:0000:1.9.1.1]/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PATH) + ,.port=0 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 8, 37 } /* UF_HOST */ + ,{ 0, 0 } /* UF_PORT */ + ,{ 46, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + ,{ 0, 0 } /* UF_USERINFO */ + } + } + ,.rv=0 + } + +, {.name="extra ? in query string" + ,.url="http://a.tbcdn.cn/p/fp/2010c/??fp-header-min.css,fp-base-min.css," + "fp-channel-min.css,fp-product-min.css,fp-mall-min.css,fp-category-min.css," + "fp-sub-min.css,fp-gdp4p-min.css,fp-css3-min.css,fp-misc-min.css?t=20101022.css" + ,.is_connect=0 + ,.u= + {.field_set=(1<field_set, u->port); + for (i = 0; i < UF_MAX; i++) { + if ((u->field_set & (1 << i)) == 0) { + printf("\tfield_data[%u]: unset\n", i); + continue; + } + + printf("\tfield_data[%u]: off: %u len: %u part: \"%.*s\n\"", + i, + u->field_data[i].off, + u->field_data[i].len, + u->field_data[i].len, + url + u->field_data[i].off); + } +} + +void +test_parse_url (void) +{ + struct http_parser_url u; + const struct url_test *test; + unsigned int i; + int rv; + + for (i = 0; i < (sizeof(url_tests) / sizeof(url_tests[0])); i++) { + test = &url_tests[i]; + memset(&u, 0, sizeof(u)); + + rv = http_parser_parse_url(test->url, + strlen(test->url), + test->is_connect, + &u); + + if (test->rv == 0) { + if (rv != 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" test failed, " + "unexpected rv %d ***\n\n", test->url, test->name, rv); + abort(); + } + + if (memcmp(&u, &test->u, sizeof(u)) != 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" failed ***\n", + test->url, test->name); + + printf("target http_parser_url:\n"); + dump_url(test->url, &test->u); + printf("result http_parser_url:\n"); + dump_url(test->url, &u); + + abort(); + } + } else { + /* test->rv != 0 */ + if (rv == 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" test failed, " + "unexpected rv %d ***\n\n", test->url, test->name, rv); + abort(); + } + } + } +} + +void +test_method_str (void) +{ + assert(0 == strcmp("GET", http_method_str(HTTP_GET))); + assert(0 == strcmp("", http_method_str(1337))); +} + +void +test_message (const struct message *message) +{ + size_t raw_len = strlen(message->raw); + size_t msg1len; + for (msg1len = 0; msg1len < raw_len; msg1len++) { + parser_init(message->type); + + size_t read; + const char *msg1 = message->raw; + const char *msg2 = msg1 + msg1len; + size_t msg2len = raw_len - msg1len; + + if (msg1len) { + read = parse(msg1, msg1len); + + if (message->upgrade && parser->upgrade) { + messages[num_messages - 1].upgrade = msg1 + read; + goto test; + } + + if (read != msg1len) { + print_error(msg1, read); + abort(); + } + } + + + read = parse(msg2, msg2len); + + if (message->upgrade && parser->upgrade) { + messages[num_messages - 1].upgrade = msg2 + read; + goto test; + } + + if (read != msg2len) { + print_error(msg2, read); + abort(); + } + + read = parse(NULL, 0); + + if (read != 0) { + print_error(message->raw, read); + abort(); + } + + test: + + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name); + abort(); + } + + if(!message_eq(0, message)) abort(); + + parser_free(); + } +} + +void +test_message_count_body (const struct message *message) +{ + parser_init(message->type); + + size_t read; + size_t l = strlen(message->raw); + size_t i, toread; + size_t chunk = 4024; + + for (i = 0; i < l; i+= chunk) { + toread = MIN(l-i, chunk); + read = parse_count_body(message->raw + i, toread); + if (read != toread) { + print_error(message->raw, read); + abort(); + } + } + + + read = parse_count_body(NULL, 0); + if (read != 0) { + print_error(message->raw, read); + abort(); + } + + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name); + abort(); + } + + if(!message_eq(0, message)) abort(); + + parser_free(); +} + +void +test_simple (const char *buf, enum http_errno err_expected) +{ + parser_init(HTTP_REQUEST); + + size_t parsed; + int pass; + enum http_errno err; + + parsed = parse(buf, strlen(buf)); + pass = (parsed == strlen(buf)); + err = HTTP_PARSER_ERRNO(parser); + parsed = parse(NULL, 0); + pass &= (parsed == 0); + + parser_free(); + + /* In strict mode, allow us to pass with an unexpected HPE_STRICT as + * long as the caller isn't expecting success. + */ +#if HTTP_PARSER_STRICT + if (err_expected != err && err_expected != HPE_OK && err != HPE_STRICT) { +#else + if (err_expected != err) { +#endif + fprintf(stderr, "\n*** test_simple expected %s, but saw %s ***\n\n%s\n", + http_errno_name(err_expected), http_errno_name(err), buf); + abort(); + } +} + +void +test_header_overflow_error (int req) +{ + http_parser parser; + http_parser_init(&parser, req ? HTTP_REQUEST : HTTP_RESPONSE); + size_t parsed; + const char *buf; + buf = req ? "GET / HTTP/1.1\r\n" : "HTTP/1.0 200 OK\r\n"; + parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf)); + assert(parsed == strlen(buf)); + + buf = "header-key: header-value\r\n"; + size_t buflen = strlen(buf); + + int i; + for (i = 0; i < 10000; i++) { + parsed = http_parser_execute(&parser, &settings_null, buf, buflen); + if (parsed != buflen) { + //fprintf(stderr, "error found on iter %d\n", i); + assert(HTTP_PARSER_ERRNO(&parser) == HPE_HEADER_OVERFLOW); + return; + } + } + + fprintf(stderr, "\n*** Error expected but none in header overflow test ***\n"); + abort(); +} + +static void +test_content_length_overflow (const char *buf, size_t buflen, int expect_ok) +{ + http_parser parser; + http_parser_init(&parser, HTTP_RESPONSE); + http_parser_execute(&parser, &settings_null, buf, buflen); + + if (expect_ok) + assert(HTTP_PARSER_ERRNO(&parser) == HPE_OK); + else + assert(HTTP_PARSER_ERRNO(&parser) == HPE_INVALID_CONTENT_LENGTH); +} + +void +test_header_content_length_overflow_error (void) +{ +#define X(size) \ + "HTTP/1.1 200 OK\r\n" \ + "Content-Length: " #size "\r\n" \ + "\r\n" + const char a[] = X(18446744073709551614); /* 2^64-2 */ + const char b[] = X(18446744073709551615); /* 2^64-1 */ + const char c[] = X(18446744073709551616); /* 2^64 */ +#undef X + test_content_length_overflow(a, sizeof(a) - 1, 1); /* expect ok */ + test_content_length_overflow(b, sizeof(b) - 1, 0); /* expect failure */ + test_content_length_overflow(c, sizeof(c) - 1, 0); /* expect failure */ +} + +void +test_chunk_content_length_overflow_error (void) +{ +#define X(size) \ + "HTTP/1.1 200 OK\r\n" \ + "Transfer-Encoding: chunked\r\n" \ + "\r\n" \ + #size "\r\n" \ + "..." + const char a[] = X(FFFFFFFFFFFFFFFE); /* 2^64-2 */ + const char b[] = X(FFFFFFFFFFFFFFFF); /* 2^64-1 */ + const char c[] = X(10000000000000000); /* 2^64 */ +#undef X + test_content_length_overflow(a, sizeof(a) - 1, 1); /* expect ok */ + test_content_length_overflow(b, sizeof(b) - 1, 0); /* expect failure */ + test_content_length_overflow(c, sizeof(c) - 1, 0); /* expect failure */ +} + +void +test_no_overflow_long_body (int req, size_t length) +{ + http_parser parser; + http_parser_init(&parser, req ? HTTP_REQUEST : HTTP_RESPONSE); + size_t parsed; + size_t i; + char buf1[3000]; + size_t buf1len = sprintf(buf1, "%s\r\nConnection: Keep-Alive\r\nContent-Length: %lu\r\n\r\n", + req ? "POST / HTTP/1.0" : "HTTP/1.0 200 OK", (unsigned long)length); + parsed = http_parser_execute(&parser, &settings_null, buf1, buf1len); + if (parsed != buf1len) + goto err; + + for (i = 0; i < length; i++) { + char foo = 'a'; + parsed = http_parser_execute(&parser, &settings_null, &foo, 1); + if (parsed != 1) + goto err; + } + + parsed = http_parser_execute(&parser, &settings_null, buf1, buf1len); + if (parsed != buf1len) goto err; + return; + + err: + fprintf(stderr, + "\n*** error in test_no_overflow_long_body %s of length %lu ***\n", + req ? "REQUEST" : "RESPONSE", + (unsigned long)length); + abort(); +} + +void +test_multiple3 (const struct message *r1, const struct message *r2, const struct message *r3) +{ + int message_count = count_parsed_messages(3, r1, r2, r3); + + char total[ strlen(r1->raw) + + strlen(r2->raw) + + strlen(r3->raw) + + 1 + ]; + total[0] = '\0'; + + strcat(total, r1->raw); + strcat(total, r2->raw); + strcat(total, r3->raw); + + parser_init(r1->type); + + size_t read; + + read = parse(total, strlen(total)); + + if (parser->upgrade) { + upgrade_message_fix(total, read, 3, r1, r2, r3); + goto test; + } + + if (read != strlen(total)) { + print_error(total, read); + abort(); + } + + read = parse(NULL, 0); + + if (read != 0) { + print_error(total, read); + abort(); + } + +test: + + if (message_count != num_messages) { + fprintf(stderr, "\n\n*** Parser didn't see 3 messages only %d *** \n", num_messages); + abort(); + } + + if (!message_eq(0, r1)) abort(); + if (message_count > 1 && !message_eq(1, r2)) abort(); + if (message_count > 2 && !message_eq(2, r3)) abort(); + + parser_free(); +} + +/* SCAN through every possible breaking to make sure the + * parser can handle getting the content in any chunks that + * might come from the socket + */ +void +test_scan (const struct message *r1, const struct message *r2, const struct message *r3) +{ + char total[80*1024] = "\0"; + char buf1[80*1024] = "\0"; + char buf2[80*1024] = "\0"; + char buf3[80*1024] = "\0"; + + strcat(total, r1->raw); + strcat(total, r2->raw); + strcat(total, r3->raw); + + size_t read; + + int total_len = strlen(total); + + int total_ops = 2 * (total_len - 1) * (total_len - 2) / 2; + int ops = 0 ; + + size_t buf1_len, buf2_len, buf3_len; + int message_count = count_parsed_messages(3, r1, r2, r3); + + int i,j,type_both; + for (type_both = 0; type_both < 2; type_both ++ ) { + for (j = 2; j < total_len; j ++ ) { + for (i = 1; i < j; i ++ ) { + + if (ops % 1000 == 0) { + printf("\b\b\b\b%3.0f%%", 100 * (float)ops /(float)total_ops); + fflush(stdout); + } + ops += 1; + + parser_init(type_both ? HTTP_BOTH : r1->type); + + buf1_len = i; + strlncpy(buf1, sizeof(buf1), total, buf1_len); + buf1[buf1_len] = 0; + + buf2_len = j - i; + strlncpy(buf2, sizeof(buf1), total+i, buf2_len); + buf2[buf2_len] = 0; + + buf3_len = total_len - j; + strlncpy(buf3, sizeof(buf1), total+j, buf3_len); + buf3[buf3_len] = 0; + + read = parse(buf1, buf1_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len) { + print_error(buf1, read); + goto error; + } + + read += parse(buf2, buf2_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len + buf2_len) { + print_error(buf2, read); + goto error; + } + + read += parse(buf3, buf3_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len + buf2_len + buf3_len) { + print_error(buf3, read); + goto error; + } + + parse(NULL, 0); + +test: + if (parser->upgrade) { + upgrade_message_fix(total, read, 3, r1, r2, r3); + } + + if (message_count != num_messages) { + fprintf(stderr, "\n\nParser didn't see %d messages only %d\n", + message_count, num_messages); + goto error; + } + + if (!message_eq(0, r1)) { + fprintf(stderr, "\n\nError matching messages[0] in test_scan.\n"); + goto error; + } + + if (message_count > 1 && !message_eq(1, r2)) { + fprintf(stderr, "\n\nError matching messages[1] in test_scan.\n"); + goto error; + } + + if (message_count > 2 && !message_eq(2, r3)) { + fprintf(stderr, "\n\nError matching messages[2] in test_scan.\n"); + goto error; + } + + parser_free(); + } + } + } + puts("\b\b\b\b100%"); + return; + + error: + fprintf(stderr, "i=%d j=%d\n", i, j); + fprintf(stderr, "buf1 (%u) %s\n\n", (unsigned int)buf1_len, buf1); + fprintf(stderr, "buf2 (%u) %s\n\n", (unsigned int)buf2_len , buf2); + fprintf(stderr, "buf3 (%u) %s\n", (unsigned int)buf3_len, buf3); + abort(); +} + +// user required to free the result +// string terminated by \0 +char * +create_large_chunked_message (int body_size_in_kb, const char* headers) +{ + int i; + size_t wrote = 0; + size_t headers_len = strlen(headers); + size_t bufsize = headers_len + (5+1024+2)*body_size_in_kb + 6; + char * buf = malloc(bufsize); + + memcpy(buf, headers, headers_len); + wrote += headers_len; + + for (i = 0; i < body_size_in_kb; i++) { + // write 1kb chunk into the body. + memcpy(buf + wrote, "400\r\n", 5); + wrote += 5; + memset(buf + wrote, 'C', 1024); + wrote += 1024; + strcpy(buf + wrote, "\r\n"); + wrote += 2; + } + + memcpy(buf + wrote, "0\r\n\r\n", 6); + wrote += 6; + assert(wrote == bufsize); + + return buf; +} + +void +test_status_complete (void) +{ + parser_init(HTTP_RESPONSE); + parser->data = 0; + http_parser_settings settings = settings_null; + settings.on_status_complete = status_complete_cb; + + char *response = "don't mind me, just a simple response"; + http_parser_execute(parser, &settings, response, strlen(response)); + assert(parser->data == (void*)0); // the status_complete callback was never called + assert(parser->http_errno == HPE_INVALID_CONSTANT); // the errno for an invalid status line +} + +/* Verify that we can pause parsing at any of the bytes in the + * message and still get the result that we're expecting. */ +void +test_message_pause (const struct message *msg) +{ + char *buf = (char*) msg->raw; + size_t buflen = strlen(msg->raw); + size_t nread; + + parser_init(msg->type); + + do { + nread = parse_pause(buf, buflen); + + // We can only set the upgrade buffer once we've gotten our message + // completion callback. + if (messages[0].message_complete_cb_called && + msg->upgrade && + parser->upgrade) { + messages[0].upgrade = buf + nread; + goto test; + } + + if (nread < buflen) { + + // Not much do to if we failed a strict-mode check + if (HTTP_PARSER_ERRNO(parser) == HPE_STRICT) { + parser_free(); + return; + } + + assert (HTTP_PARSER_ERRNO(parser) == HPE_PAUSED); + } + + buf += nread; + buflen -= nread; + http_parser_pause(parser, 0); + } while (buflen > 0); + + nread = parse_pause(NULL, 0); + assert (nread == 0); + +test: + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", msg->name); + abort(); + } + + if(!message_eq(0, msg)) abort(); + + parser_free(); +} + +int +main (void) +{ + parser = NULL; + int i, j, k; + int request_count; + int response_count; + + printf("sizeof(http_parser) = %u\n", (unsigned int)sizeof(http_parser)); + + for (request_count = 0; requests[request_count].name; request_count++); + for (response_count = 0; responses[response_count].name; response_count++); + + //// API + test_preserve_data(); + test_parse_url(); + test_method_str(); + + //// OVERFLOW CONDITIONS + + test_header_overflow_error(HTTP_REQUEST); + test_no_overflow_long_body(HTTP_REQUEST, 1000); + test_no_overflow_long_body(HTTP_REQUEST, 100000); + + test_header_overflow_error(HTTP_RESPONSE); + test_no_overflow_long_body(HTTP_RESPONSE, 1000); + test_no_overflow_long_body(HTTP_RESPONSE, 100000); + + test_header_content_length_overflow_error(); + test_chunk_content_length_overflow_error(); + + //// RESPONSES + + for (i = 0; i < response_count; i++) { + test_message(&responses[i]); + } + + for (i = 0; i < response_count; i++) { + test_message_pause(&responses[i]); + } + + for (i = 0; i < response_count; i++) { + if (!responses[i].should_keep_alive) continue; + for (j = 0; j < response_count; j++) { + if (!responses[j].should_keep_alive) continue; + for (k = 0; k < response_count; k++) { + test_multiple3(&responses[i], &responses[j], &responses[k]); + } + } + } + + test_message_count_body(&responses[NO_HEADERS_NO_BODY_404]); + test_message_count_body(&responses[TRAILING_SPACE_ON_CHUNKED_BODY]); + + // test very large chunked response + { + char * msg = create_large_chunked_message(31337, + "HTTP/1.0 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + "Content-Type: text/plain\r\n" + "\r\n"); + struct message large_chunked = + {.name= "large chunked" + ,.type= HTTP_RESPONSE + ,.raw= msg + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { { "Transfer-Encoding", "chunked" } + , { "Content-Type", "text/plain" } + } + ,.body_size= 31337*1024 + }; + test_message_count_body(&large_chunked); + free(msg); + } + + + + printf("response scan 1/2 "); + test_scan( &responses[TRAILING_SPACE_ON_CHUNKED_BODY] + , &responses[NO_BODY_HTTP10_KA_204] + , &responses[NO_REASON_PHRASE] + ); + + printf("response scan 2/2 "); + test_scan( &responses[BONJOUR_MADAME_FR] + , &responses[UNDERSTORE_HEADER_KEY] + , &responses[NO_CARRIAGE_RET] + ); + + puts("responses okay"); + + + /// REQUESTS + + test_simple("hello world", HPE_INVALID_METHOD); + test_simple("GET / HTP/1.1\r\n\r\n", HPE_INVALID_VERSION); + + + test_simple("ASDF / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + test_simple("GETA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + + // Well-formed but incomplete + test_simple("GET / HTTP/1.1\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: 6\r\n" + "\r\n" + "fooba", + HPE_OK); + + static const char *all_methods[] = { + "DELETE", + "GET", + "HEAD", + "POST", + "PUT", + //"CONNECT", //CONNECT can't be tested like other methods, it's a tunnel + "OPTIONS", + "TRACE", + "COPY", + "LOCK", + "MKCOL", + "MOVE", + "PROPFIND", + "PROPPATCH", + "UNLOCK", + "REPORT", + "MKACTIVITY", + "CHECKOUT", + "MERGE", + "M-SEARCH", + "NOTIFY", + "SUBSCRIBE", + "UNSUBSCRIBE", + "PATCH", + 0 }; + const char **this_method; + for (this_method = all_methods; *this_method; this_method++) { + char buf[200]; + sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method); + test_simple(buf, HPE_OK); + } + + static const char *bad_methods[] = { + "C******", + "M****", + 0 }; + for (this_method = bad_methods; *this_method; this_method++) { + char buf[200]; + sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method); + test_simple(buf, HPE_UNKNOWN); + } + + const char *dumbfuck2 = + "GET / HTTP/1.1\r\n" + "X-SSL-Bullshit: -----BEGIN CERTIFICATE-----\r\n" + "\tMIIFbTCCBFWgAwIBAgICH4cwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVUsx\r\n" + "\tETAPBgNVBAoTCGVTY2llbmNlMRIwEAYDVQQLEwlBdXRob3JpdHkxCzAJBgNVBAMT\r\n" + "\tAkNBMS0wKwYJKoZIhvcNAQkBFh5jYS1vcGVyYXRvckBncmlkLXN1cHBvcnQuYWMu\r\n" + "\tdWswHhcNMDYwNzI3MTQxMzI4WhcNMDcwNzI3MTQxMzI4WjBbMQswCQYDVQQGEwJV\r\n" + "\tSzERMA8GA1UEChMIZVNjaWVuY2UxEzARBgNVBAsTCk1hbmNoZXN0ZXIxCzAJBgNV\r\n" + "\tBAcTmrsogriqMWLAk1DMRcwFQYDVQQDEw5taWNoYWVsIHBhcmQYJKoZIhvcNAQEB\r\n" + "\tBQADggEPADCCAQoCggEBANPEQBgl1IaKdSS1TbhF3hEXSl72G9J+WC/1R64fAcEF\r\n" + "\tW51rEyFYiIeZGx/BVzwXbeBoNUK41OK65sxGuflMo5gLflbwJtHBRIEKAfVVp3YR\r\n" + "\tgW7cMA/s/XKgL1GEC7rQw8lIZT8RApukCGqOVHSi/F1SiFlPDxuDfmdiNzL31+sL\r\n" + "\t0iwHDdNkGjy5pyBSB8Y79dsSJtCW/iaLB0/n8Sj7HgvvZJ7x0fr+RQjYOUUfrePP\r\n" + "\tu2MSpFyf+9BbC/aXgaZuiCvSR+8Snv3xApQY+fULK/xY8h8Ua51iXoQ5jrgu2SqR\r\n" + "\twgA7BUi3G8LFzMBl8FRCDYGUDy7M6QaHXx1ZWIPWNKsCAwEAAaOCAiQwggIgMAwG\r\n" + "\tA1UdEwEB/wQCMAAwEQYJYIZIAYb4QgHTTPAQDAgWgMA4GA1UdDwEB/wQEAwID6DAs\r\n" + "\tBglghkgBhvhCAQ0EHxYdVUsgZS1TY2llbmNlIFVzZXIgQ2VydGlmaWNhdGUwHQYD\r\n" + "\tVR0OBBYEFDTt/sf9PeMaZDHkUIldrDYMNTBZMIGaBgNVHSMEgZIwgY+AFAI4qxGj\r\n" + "\tloCLDdMVKwiljjDastqooXSkcjBwMQswCQYDVQQGEwJVSzERMA8GA1UEChMIZVNj\r\n" + "\taWVuY2UxEjAQBgNVBAsTCUF1dGhvcml0eTELMAkGA1UEAxMCQ0ExLTArBgkqhkiG\r\n" + "\t9w0BCQEWHmNhLW9wZXJhdG9yQGdyaWQtc3VwcG9ydC5hYy51a4IBADApBgNVHRIE\r\n" + "\tIjAggR5jYS1vcGVyYXRvckBncmlkLXN1cHBvcnQuYWMudWswGQYDVR0gBBIwEDAO\r\n" + "\tBgwrBgEEAdkvAQEBAQYwPQYJYIZIAYb4QgEEBDAWLmh0dHA6Ly9jYS5ncmlkLXN1\r\n" + "\tcHBvcnQuYWMudmT4sopwqlBWsvcHViL2NybC9jYWNybC5jcmwwPQYJYIZIAYb4QgEDBDAWLmh0\r\n" + "\tdHA6Ly9jYS5ncmlkLXN1cHBvcnQuYWMudWsvcHViL2NybC9jYWNybC5jcmwwPwYD\r\n" + "\tVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NhLmdyaWQt5hYy51ay9wdWIv\r\n" + "\tY3JsL2NhY3JsLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAS/U4iiooBENGW/Hwmmd3\r\n" + "\tXCy6Zrt08YjKCzGNjorT98g8uGsqYjSxv/hmi0qlnlHs+k/3Iobc3LjS5AMYr5L8\r\n" + "\tUO7OSkgFFlLHQyC9JzPfmLCAugvzEbyv4Olnsr8hbxF1MbKZoQxUZtMVu29wjfXk\r\n" + "\thTeApBv7eaKCWpSp7MCbvgzm74izKhu3vlDk9w6qVrxePfGgpKPqfHiOoGhFnbTK\r\n" + "\twTC6o2xq5y0qZ03JonF7OJspEd3I5zKY3E+ov7/ZhW6DqT8UFvsAdjvQbXyhV8Eu\r\n" + "\tYhixw1aKEPzNjNowuIseVogKOLXxWI5vAi5HgXdS0/ES5gDGsABo4fqovUKlgop3\r\n" + "\tRA==\r\n" + "\t-----END CERTIFICATE-----\r\n" + "\r\n"; + test_simple(dumbfuck2, HPE_OK); + +#if 0 + // NOTE(Wed Nov 18 11:57:27 CET 2009) this seems okay. we just read body + // until EOF. + // + // no content-length + // error if there is a body without content length + const char *bad_get_no_headers_no_body = "GET /bad_get_no_headers_no_body/world HTTP/1.1\r\n" + "Accept: */*\r\n" + "\r\n" + "HELLO"; + test_simple(bad_get_no_headers_no_body, 0); +#endif + /* TODO sending junk and large headers gets rejected */ + + + /* check to make sure our predefined requests are okay */ + for (i = 0; requests[i].name; i++) { + test_message(&requests[i]); + } + + for (i = 0; i < request_count; i++) { + test_message_pause(&requests[i]); + } + + for (i = 0; i < request_count; i++) { + if (!requests[i].should_keep_alive) continue; + for (j = 0; j < request_count; j++) { + if (!requests[j].should_keep_alive) continue; + for (k = 0; k < request_count; k++) { + test_multiple3(&requests[i], &requests[j], &requests[k]); + } + } + } + + printf("request scan 1/4 "); + test_scan( &requests[GET_NO_HEADERS_NO_BODY] + , &requests[GET_ONE_HEADER_NO_BODY] + , &requests[GET_NO_HEADERS_NO_BODY] + ); + + printf("request scan 2/4 "); + test_scan( &requests[POST_CHUNKED_ALL_YOUR_BASE] + , &requests[POST_IDENTITY_BODY_WORLD] + , &requests[GET_FUNKY_CONTENT_LENGTH] + ); + + printf("request scan 3/4 "); + test_scan( &requests[TWO_CHUNKS_MULT_ZERO_END] + , &requests[CHUNKED_W_TRAILING_HEADERS] + , &requests[CHUNKED_W_BULLSHIT_AFTER_LENGTH] + ); + + printf("request scan 4/4 "); + test_scan( &requests[QUERY_URL_WITH_QUESTION_MARK_GET] + , &requests[PREFIX_NEWLINE_GET ] + , &requests[CONNECT_REQUEST] + ); + + test_status_complete(); + + puts("requests okay"); + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped new file mode 100644 index 0000000000..038bb525d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped @@ -0,0 +1,845 @@ +name :curl get +raw :"GET /test HTTP/1.1\r\nUser-Agent: curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1\r\nHost: 0.0.0.0=5000\r\nAccept: */*\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/test +request_url :/test +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "User-Agent": "curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1"} +header_1 :{ "Host": "0.0.0.0=5000"} +header_2 :{ "Accept": "*/*"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :firefox get +raw :"GET /favicon.ico HTTP/1.1\r\nHost: 0.0.0.0=5000\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/favicon.ico +request_url :/favicon.ico +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Host": "0.0.0.0=5000"} +header_1 :{ "User-Agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0"} +header_2 :{ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"} +header_3 :{ "Accept-Language": "en-us,en;q=0.5"} +header_4 :{ "Accept-Encoding": "gzip,deflate"} +header_5 :{ "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7"} +header_6 :{ "Keep-Alive": "300"} +header_7 :{ "Connection": "keep-alive"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :dumbfuck +raw :"GET /dumbfuck HTTP/1.1\r\naaaaaaaaaaaaa:++++++++++\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/dumbfuck +request_url :/dumbfuck +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "aaaaaaaaaaaaa": "++++++++++"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :fragment in url +raw :"GET /forums/1/topics/2375?page=1#posts-17408 HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/forums/1/topics/2375 +request_url :/forums/1/topics/2375?page=1#posts-17408 +fragment :posts-17408 +query_string:page=1 +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :get no headers no body +raw :"GET /get_no_headers_no_body/world HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/get_no_headers_no_body/world +request_url :/get_no_headers_no_body/world +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :get one header no body +raw :"GET /get_one_header_no_body HTTP/1.1\r\nAccept: */*\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/get_one_header_no_body +request_url :/get_one_header_no_body +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Accept": "*/*"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :get funky content length body hello +raw :"GET /get_funky_content_length_body_hello HTTP/1.0\r\nconTENT-Length: 5\r\n\r\nHELLO" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/get_funky_content_length_body_hello +request_url :/get_funky_content_length_body_hello +fragment : +query_string: +body :"HELLO" +body_size :0 +header_0 :{ "conTENT-Length": "5"} +should_keep_alive :0 +http_major :1 +http_minor :0 + +name :post identity body world +raw :"POST /post_identity_body_world?q=search#hey HTTP/1.1\r\nAccept: */*\r\nTransfer-Encoding: identity\r\nContent-Length: 5\r\n\r\nWorld" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/post_identity_body_world +request_url :/post_identity_body_world?q=search#hey +fragment :hey +query_string:q=search +body :"World" +body_size :0 +header_0 :{ "Accept": "*/*"} +header_1 :{ "Transfer-Encoding": "identity"} +header_2 :{ "Content-Length": "5"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :post - chunked body: all your base are belong to us +raw :"POST /post_chunked_all_your_base HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1e\r\nall your base are belong to us\r\n0\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/post_chunked_all_your_base +request_url :/post_chunked_all_your_base +fragment : +query_string: +body :"all your base are belong to us" +body_size :0 +header_0 :{ "Transfer-Encoding": "chunked"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :two chunks ; triple zero ending +raw :"POST /two_chunks_mult_zero_end HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nhello\r\n6\r\n world\r\n000\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/two_chunks_mult_zero_end +request_url :/two_chunks_mult_zero_end +fragment : +query_string: +body :"hello world" +body_size :0 +header_0 :{ "Transfer-Encoding": "chunked"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :chunked with trailing headers. blech. +raw :"POST /chunked_w_trailing_headers HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nhello\r\n6\r\n world\r\n0\r\nVary: *\r\nContent-Type: text/plain\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/chunked_w_trailing_headers +request_url :/chunked_w_trailing_headers +fragment : +query_string: +body :"hello world" +body_size :0 +header_0 :{ "Transfer-Encoding": "chunked"} +header_1 :{ "Vary": "*"} +header_2 :{ "Content-Type": "text/plain"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :with bullshit after the length +raw :"POST /chunked_w_bullshit_after_length HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5; ihatew3;whatthefuck=aretheseparametersfor\r\nhello\r\n6; blahblah; blah\r\n world\r\n0\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/chunked_w_bullshit_after_length +request_url :/chunked_w_bullshit_after_length +fragment : +query_string: +body :"hello world" +body_size :0 +header_0 :{ "Transfer-Encoding": "chunked"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :with quotes +raw :"GET /with_\"stupid\"_quotes?foo=\"bar\" HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/with_"stupid"_quotes +request_url :/with_"stupid"_quotes?foo="bar" +fragment : +query_string:foo="bar" +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :apachebench get +raw :"GET /test HTTP/1.0\r\nHost: 0.0.0.0:5000\r\nUser-Agent: ApacheBench/2.3\r\nAccept: */*\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/test +request_url :/test +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Host": "0.0.0.0:5000"} +header_1 :{ "User-Agent": "ApacheBench/2.3"} +header_2 :{ "Accept": "*/*"} +should_keep_alive :0 +http_major :1 +http_minor :0 + +name :query url with question mark +raw :"GET /test.cgi?foo=bar?baz HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/test.cgi +request_url :/test.cgi?foo=bar?baz +fragment : +query_string:foo=bar?baz +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :newline prefix get +raw :"\r\nGET /test HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/test +request_url :/test +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :upgrade request +raw :"GET /demo HTTP/1.1\r\nHost: example.com\r\nConnection: Upgrade\r\nSec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\nSec-WebSocket-Protocol: sample\r\nUpgrade: WebSocket\r\nSec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\nOrigin: http://example.com\r\n\r\nHot diggity dogg" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/demo +request_url :/demo +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Host": "example.com"} +header_1 :{ "Connection": "Upgrade"} +header_2 :{ "Sec-WebSocket-Key2": "12998 5 Y3 1 .P00"} +header_3 :{ "Sec-WebSocket-Protocol": "sample"} +header_4 :{ "Upgrade": "WebSocket"} +header_5 :{ "Sec-WebSocket-Key1": "4 @1 46546xW%0l 1 5"} +header_6 :{ "Origin": "http://example.com"} +should_keep_alive :1 +upgrade :"Hot diggity dogg" +http_major :1 +http_minor :1 + +name :connect request +raw :"CONNECT 0-home0.netscape.com:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\nsome data\r\nand yet even more data" +type :HTTP_REQUEST +method: HTTP_CONNECT +status_code :0 +request_path: +request_url :0-home0.netscape.com:443 +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "User-agent": "Mozilla/1.1N"} +header_1 :{ "Proxy-authorization": "basic aGVsbG86d29ybGQ="} +should_keep_alive :0 +upgrade :"some data\r\nand yet even more data" +http_major :1 +http_minor :0 + +name :report request +raw :"REPORT /test HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_REPORT +status_code :0 +request_path:/test +request_url :/test +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :request with no http version +raw :"GET /\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/ +request_url :/ +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :0 +http_major :0 +http_minor :9 + +name :m-search request +raw :"M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: \"ssdp:all\"\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_MSEARCH +status_code :0 +request_path:* +request_url :* +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "HOST": "239.255.255.250:1900"} +header_1 :{ "MAN": ""ssdp:discover""} +header_2 :{ "ST": ""ssdp:all""} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :line folding in header value +raw :"GET / HTTP/1.1\r\nLine1: abc\r\n def\r\n ghi\r\n jkl\r\n mno \r\n qrs\r\nLine2: line2 \r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/ +request_url :/ +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Line1": "abcdefghijklmno qrs"} +header_1 :{ "Line2": "line2 "} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :host terminated by a query string +raw :"GET http://hypnotoad.org?hail=all HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path: +request_url :http://hypnotoad.org?hail=all +fragment : +query_string:hail=all +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :host:port terminated by a query string +raw :"GET http://hypnotoad.org:1234?hail=all HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path: +request_url :http://hypnotoad.org:1234?hail=all +fragment : +query_string:hail=all +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :host:port terminated by a space +raw :"GET http://hypnotoad.org:1234 HTTP/1.1\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path: +request_url :http://hypnotoad.org:1234 +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :PATCH request +raw :"PATCH /file.txt HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/example\r\nIf-Match: \"e0023aa4e\"\r\nContent-Length: 10\r\n\r\ncccccccccc" +type :HTTP_REQUEST +method: UNKNOWN +status_code :0 +request_path:/file.txt +request_url :/file.txt +fragment : +query_string: +body :"cccccccccc" +body_size :0 +header_0 :{ "Host": "www.example.com"} +header_1 :{ "Content-Type": "application/example"} +header_2 :{ "If-Match": ""e0023aa4e""} +header_3 :{ "Content-Length": "10"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :connect caps request +raw :"CONNECT HOME0.NETSCAPE.COM:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_CONNECT +status_code :0 +request_path: +request_url :HOME0.NETSCAPE.COM:443 +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "User-agent": "Mozilla/1.1N"} +header_1 :{ "Proxy-authorization": "basic aGVsbG86d29ybGQ="} +should_keep_alive :0 +upgrade :"" +http_major :1 +http_minor :0 + +name :eat CRLF between requests, no "Connection: close" header +raw :"POST / HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 4\r\n\r\nq=42\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/ +request_url :/ +fragment : +query_string: +body :"q=42" +body_size :0 +header_0 :{ "Host": "www.example.com"} +header_1 :{ "Content-Type": "application/x-www-form-urlencoded"} +header_2 :{ "Content-Length": "4"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :eat CRLF between requests even if "Connection: close" is set +raw :"POST / HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 4\r\nConnection: close\r\n\r\nq=42\r\n" +type :HTTP_REQUEST +method: HTTP_POST +status_code :0 +request_path:/ +request_url :/ +fragment : +query_string: +body :"q=42" +body_size :0 +header_0 :{ "Host": "www.example.com"} +header_1 :{ "Content-Type": "application/x-www-form-urlencoded"} +header_2 :{ "Content-Length": "4"} +header_3 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :PURGE request +raw :"PURGE /file.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n" +type :HTTP_REQUEST +method: UNKNOWN +status_code :0 +request_path:/file.txt +request_url :/file.txt +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Host": "www.example.com"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :google 301 +raw :"HTTP/1.1 301 Moved Permanently\r\nLocation: http://www.google.com/\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Sun, 26 Apr 2009 11:11:49 GMT\r\nExpires: Tue, 26 May 2009 11:11:49 GMT\r\nX-$PrototypeBI-Version: 1.6.0.3\r\nCache-Control: public, max-age=2592000\r\nServer: gws\r\nContent-Length: 219 \r\n\r\n\n301 Moved\n

                301 Moved

                \nThe document has moved\nhere.\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :301 +request_path: +request_url : +fragment : +query_string: +body :"\n301 Moved\n

                301 Moved

                \nThe document has moved\nhere.\r\n\r\n" +body_size :0 +header_0 :{ "Location": "http://www.google.com/"} +header_1 :{ "Content-Type": "text/html; charset=UTF-8"} +header_2 :{ "Date": "Sun, 26 Apr 2009 11:11:49 GMT"} +header_3 :{ "Expires": "Tue, 26 May 2009 11:11:49 GMT"} +header_4 :{ "X-$PrototypeBI-Version": "1.6.0.3"} +header_5 :{ "Cache-Control": "public, max-age=2592000"} +header_6 :{ "Server": "gws"} +header_7 :{ "Content-Length": "219 "} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :no content-length response +raw :"HTTP/1.1 200 OK\r\nDate: Tue, 04 Aug 2009 07:59:32 GMT\r\nServer: Apache\r\nX-Powered-By: Servlet/2.5 JSP/2.1\r\nContent-Type: text/xml; charset=utf-8\r\nConnection: close\r\n\r\n\n\n \n \n SOAP-ENV:Client\n Client Error\n \n \n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"\n\n \n \n SOAP-ENV:Client\n Client Error\n \n \n" +body_size :0 +header_0 :{ "Date": "Tue, 04 Aug 2009 07:59:32 GMT"} +header_1 :{ "Server": "Apache"} +header_2 :{ "X-Powered-By": "Servlet/2.5 JSP/2.1"} +header_3 :{ "Content-Type": "text/xml; charset=utf-8"} +header_4 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :404 no headers no body +raw :"HTTP/1.1 404 Not Found\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :404 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :301 no response phrase +raw :"HTTP/1.1 301\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :301 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :200 trailing space on chunked body +raw :"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n25 \r\nThis is the data in the first chunk\r\n\r\n1C\r\nand this is the second one\r\n\r\n0 \r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"This is the data in the first chunk\r\nand this is the second one\r\n" +body_size :65 +header_0 :{ "Content-Type": "text/plain"} +header_1 :{ "Transfer-Encoding": "chunked"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :no carriage ret +raw :"HTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nConnection: close\n\nthese headers are from http://news.ycombinator.com/" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"these headers are from http://news.ycombinator.com/" +body_size :0 +header_0 :{ "Content-Type": "text/html; charset=utf-8"} +header_1 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :proxy connection +raw :"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 11\r\nProxy-Connection: close\r\nDate: Thu, 31 Dec 2009 20:55:48 +0000\r\n\r\nhello world" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"hello world" +body_size :0 +header_0 :{ "Content-Type": "text/html; charset=UTF-8"} +header_1 :{ "Content-Length": "11"} +header_2 :{ "Proxy-Connection": "close"} +header_3 :{ "Date": "Thu, 31 Dec 2009 20:55:48 +0000"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :underscore header key +raw :"HTTP/1.1 200 OK\r\nServer: DCLK-AdSvr\r\nContent-Type: text/xml\r\nContent-Length: 0\r\nDCLK_imp: v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Server": "DCLK-AdSvr"} +header_1 :{ "Content-Type": "text/xml"} +header_2 :{ "Content-Length": "0"} +header_3 :{ "DCLK_imp": "v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o"} +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :bonjourmadame.fr +raw :"HTTP/1.0 301 Moved Permanently\r\nDate: Thu, 03 Jun 2010 09:56:32 GMT\r\nServer: Apache/2.2.3 (Red Hat)\r\nCache-Control: public\r\nPragma: \r\nLocation: http://www.bonjourmadame.fr/\r\nVary: Accept-Encoding\r\nContent-Length: 0\r\nContent-Type: text/html; charset=UTF-8\r\nConnection: keep-alive\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :301 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Date": "Thu, 03 Jun 2010 09:56:32 GMT"} +header_1 :{ "Server": "Apache/2.2.3 (Red Hat)"} +header_2 :{ "Cache-Control": "public"} +header_3 :{ "Pragma": ""} +header_4 :{ "Location": "http://www.bonjourmadame.fr/"} +header_5 :{ "Vary": "Accept-Encoding"} +header_6 :{ "Content-Length": "0"} +header_7 :{ "Content-Type": "text/html; charset=UTF-8"} +header_8 :{ "Connection": "keep-alive"} +should_keep_alive :1 +http_major :1 +http_minor :0 + +name :field underscore +raw :"HTTP/1.1 200 OK\r\nDate: Tue, 28 Sep 2010 01:14:13 GMT\r\nServer: Apache\r\nCache-Control: no-cache, must-revalidate\r\nExpires: Mon, 26 Jul 1997 05:00:00 GMT\r\n.et-Cookie: PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com\r\nVary: Accept-Encoding\r\n_eep-Alive: timeout=45\r\n_onnection: Keep-Alive\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n0\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Date": "Tue, 28 Sep 2010 01:14:13 GMT"} +header_1 :{ "Server": "Apache"} +header_2 :{ "Cache-Control": "no-cache, must-revalidate"} +header_3 :{ "Expires": "Mon, 26 Jul 1997 05:00:00 GMT"} +header_4 :{ ".et-Cookie": "PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com"} +header_5 :{ "Vary": "Accept-Encoding"} +header_6 :{ "_eep-Alive": "timeout=45"} +header_7 :{ "_onnection": "Keep-Alive"} +header_8 :{ "Transfer-Encoding": "chunked"} +header_9 :{ "Content-Type": "text/html"} +header_10 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :non-ASCII in status line +raw :"HTTP/1.1 500 Oriëntatieprobleem\r\nDate: Fri, 5 Nov 2010 23:07:12 GMT+2\r\nContent-Length: 0\r\nConnection: close\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :500 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Date": "Fri, 5 Nov 2010 23:07:12 GMT+2"} +header_1 :{ "Content-Length": "0"} +header_2 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :http version 0.9 +raw :"HTTP/0.9 200 OK\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :0 +http_major :0 +http_minor :9 + +name :neither content-length nor transfer-encoding response +raw :"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhello world" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"hello world" +body_size :0 +header_0 :{ "Content-Type": "text/plain"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :HTTP/1.0 with keep-alive and EOF-terminated 200 status +raw :"HTTP/1.0 200 OK\r\nConnection: keep-alive\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Connection": "keep-alive"} +should_keep_alive :0 +http_major :1 +http_minor :0 + +name :HTTP/1.0 with keep-alive and a 204 status +raw :"HTTP/1.0 204 No content\r\nConnection: keep-alive\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :204 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Connection": "keep-alive"} +should_keep_alive :1 +http_major :1 +http_minor :0 + +name :HTTP/1.1 with an EOF-terminated 200 status +raw :"HTTP/1.1 200 OK\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :HTTP/1.1 with a 204 status +raw :"HTTP/1.1 204 No content\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :204 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +should_keep_alive :1 +http_major :1 +http_minor :1 + +name :HTTP/1.1 with a 204 status and keep-alive disabled +raw :"HTTP/1.1 204 No content\r\nConnection: close\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :204 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Connection": "close"} +should_keep_alive :0 +http_major :1 +http_minor :1 + +name :HTTP/1.1 with chunked endocing and a 200 response +raw :"HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\n" +type :HTTP_RESPONSE +method: HTTP_DELETE +status_code :200 +request_path: +request_url : +fragment : +query_string: +body :"" +body_size :0 +header_0 :{ "Transfer-Encoding": "chunked"} +should_keep_alive :1 +http_major :1 +http_minor :1 + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 new file mode 100644 index 0000000000..5266159241 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 @@ -0,0 +1,17 @@ +name :utf-8 path request +raw :"GET /δ¶/δt/pope?q=1#narf HTTP/1.1\r\nHost: github.com\r\n\r\n" +type :HTTP_REQUEST +method: HTTP_GET +status_code :0 +request_path:/δ¶/δt/pope +request_url :/δ¶/δt/pope?q=1#narf +fragment :narf +query_string:q=1 +body :"" +body_size :0 +header_0 :{ "Host": "github.com"} +should_keep_alive :1 +upgrade :0 +http_major :1 +http_minor :1 + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb new file mode 100644 index 0000000000..16048905d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb @@ -0,0 +1,6 @@ + +"A".upto("Z") {|c| + puts "public static final byte #{c} = 0x#{c[0].to_s(16)};" +} + + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb new file mode 100644 index 0000000000..84f9699f3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb @@ -0,0 +1,13 @@ + + +def printbytes str +str.each_byte { |b| + print "0x#{b.to_s(16)}, " +} +end + +if $0 == __FILE__ + printf "static final byte [] #{ARGV[0]} = {\n" + printbytes ARGV[0] + printf "\n};\n" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb new file mode 100644 index 0000000000..13960cbd09 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb @@ -0,0 +1,15 @@ + + +0.upto(255) { |i| + printf "\n" if i%16 == 0 + printf " " if i%8 == 0 + s = ("" << i) + if s =~ /[A-Z0-9\-_\/ ]/ + print "0x#{i.to_s(16)}," + elsif s =~ /[a-z]/ + print "0x#{s.upcase[0].to_s(16)}," + else + print "0x00," + end + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb new file mode 100644 index 0000000000..683adb9d57 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb @@ -0,0 +1,33 @@ + + + + +# name : 200 trailing space on chunked body +# raw : "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n25 \r\nThis is the data in the first chunk\r\n\r\n1C\r\nand this is the second one\r\n\r\n0 \r\n\r\n" +# type : HTTP_RESPONSE +# method: HTTP_DELETE +# status code :200 +# request_path: +# request_url : +# fragment : +# query_string: +# body :"This is the data in the first chunk\r\nand this is the second one\r\n" +# body_size :65 +# header_0 :{ "Content-Type": "text/plain"} +# header_1 :{ "Transfer-Encoding": "chunked"} +# should_keep_alive :1 +# upgrade :0 +# http_major :1 +# http_minor :1 + + +class ParserTest + attr_accessor :name + attr_accessor :raw + attr_accessor :type + attr_accessor :method + attr_accessor :status_code + attr_accessor :request_path + attr_accessor :method +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS new file mode 100644 index 0000000000..abe99dee44 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS @@ -0,0 +1,32 @@ +# Authors ordered by first contribution. +Ryan Dahl +Jeremy Hinegardner +Sergey Shepelev +Joe Damato +tomika +Phoenix Sol +Cliff Frey +Ewen Cheslack-Postava +Santiago Gala +Tim Becker +Jeff Terrace +Ben Noordhuis +Nathan Rajlich +Mark Nottingham +Aman Gupta +Tim Becker +Sean Cunningham +Peter Griess +Salman Haq +Cliff Frey +Jon Kolb +Fouad Mardini +Paul Querna +Felix Geisendörfer +koichik +Andre Caron +Ivo Raisr +James McLaughlin +David Gwynne +LE ROUX Thomas +Randy Rizun diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS new file mode 100644 index 0000000000..11ba31e4b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS @@ -0,0 +1,4 @@ +Contributors must agree to the Contributor License Agreement before patches +can be accepted. + +http://spreadsheets2.google.com/viewform?hl=en&formkey=dDJXOGUwbzlYaWM4cHN1MERwQS1CSnc6MQ diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT new file mode 100644 index 0000000000..58010b3889 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT @@ -0,0 +1,23 @@ +http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright +Igor Sysoev. + +Additional changes are licensed under the same terms as NGINX and +copyright Joyent, Inc. and other Node contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/README.md b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/README.md new file mode 100644 index 0000000000..700c3ac98d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/README.md @@ -0,0 +1,178 @@ +HTTP Parser +=========== + +This is a parser for HTTP messages written in C. It parses both requests and +responses. The parser is designed to be used in performance HTTP +applications. It does not make any syscalls nor allocations, it does not +buffer data, it can be interrupted at anytime. Depending on your +architecture, it only requires about 40 bytes of data per message +stream (in a web server that is per connection). + +Features: + + * No dependencies + * Handles persistent streams (keep-alive). + * Decodes chunked encoding. + * Upgrade support + * Defends against buffer overflow attacks. + +The parser extracts the following information from HTTP messages: + + * Header fields and values + * Content-Length + * Request method + * Response status code + * Transfer-Encoding + * HTTP version + * Request URL + * Message body + + +Usage +----- + +One `http_parser` object is used per TCP connection. Initialize the struct +using `http_parser_init()` and set the callbacks. That might look something +like this for a request parser: + + http_parser_settings settings; + settings.on_path = my_path_callback; + settings.on_header_field = my_header_field_callback; + /* ... */ + + http_parser *parser = malloc(sizeof(http_parser)); + http_parser_init(parser, HTTP_REQUEST); + parser->data = my_socket; + +When data is received on the socket execute the parser and check for errors. + + size_t len = 80*1024, nparsed; + char buf[len]; + ssize_t recved; + + recved = recv(fd, buf, len, 0); + + if (recved < 0) { + /* Handle error. */ + } + + /* Start up / continue the parser. + * Note we pass recved==0 to signal that EOF has been recieved. + */ + nparsed = http_parser_execute(parser, &settings, buf, recved); + + if (parser->upgrade) { + /* handle new protocol */ + } else if (nparsed != recved) { + /* Handle error. Usually just close the connection. */ + } + +HTTP needs to know where the end of the stream is. For example, sometimes +servers send responses without Content-Length and expect the client to +consume input (for the body) until EOF. To tell http_parser about EOF, give +`0` as the forth parameter to `http_parser_execute()`. Callbacks and errors +can still be encountered during an EOF, so one must still be prepared +to receive them. + +Scalar valued message information such as `status_code`, `method`, and the +HTTP version are stored in the parser structure. This data is only +temporally stored in `http_parser` and gets reset on each new message. If +this information is needed later, copy it out of the structure during the +`headers_complete` callback. + +The parser decodes the transfer-encoding for both requests and responses +transparently. That is, a chunked encoding is decoded before being sent to +the on_body callback. + + +The Special Problem of Upgrade +------------------------------ + +HTTP supports upgrading the connection to a different protocol. An +increasingly common example of this is the Web Socket protocol which sends +a request like + + GET /demo HTTP/1.1 + Upgrade: WebSocket + Connection: Upgrade + Host: example.com + Origin: http://example.com + WebSocket-Protocol: sample + +followed by non-HTTP data. + +(See http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 for more +information the Web Socket protocol.) + +To support this, the parser will treat this as a normal HTTP message without a +body. Issuing both on_headers_complete and on_message_complete callbacks. However +http_parser_execute() will stop parsing at the end of the headers and return. + +The user is expected to check if `parser->upgrade` has been set to 1 after +`http_parser_execute()` returns. Non-HTTP data begins at the buffer supplied +offset by the return value of `http_parser_execute()`. + + +Callbacks +--------- + +During the `http_parser_execute()` call, the callbacks set in +`http_parser_settings` will be executed. The parser maintains state and +never looks behind, so buffering the data is not necessary. If you need to +save certain data for later usage, you can do that from the callbacks. + +There are two types of callbacks: + +* notification `typedef int (*http_cb) (http_parser*);` + Callbacks: on_message_begin, on_headers_complete, on_message_complete. +* data `typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);` + Callbacks: (requests only) on_uri, + (common) on_header_field, on_header_value, on_body; + +Callbacks must return 0 on success. Returning a non-zero value indicates +error to the parser, making it exit immediately. + +In case you parse HTTP message in chunks (i.e. `read()` request line +from socket, parse, read half headers, parse, etc) your data callbacks +may be called more than once. Http-parser guarantees that data pointer is only +valid for the lifetime of callback. You can also `read()` into a heap allocated +buffer to avoid copying memory around if this fits your application. + +Reading headers may be a tricky task if you read/parse headers partially. +Basically, you need to remember whether last header callback was field or value +and apply following logic: + + (on_header_field and on_header_value shortened to on_h_*) + ------------------------ ------------ -------------------------------------------- + | State (prev. callback) | Callback | Description/action | + ------------------------ ------------ -------------------------------------------- + | nothing (first call) | on_h_field | Allocate new buffer and copy callback data | + | | | into it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_field | New header started. | + | | | Copy current name,value buffers to headers | + | | | list and allocate new buffer for new name | + ------------------------ ------------ -------------------------------------------- + | field | on_h_field | Previous name continues. Reallocate name | + | | | buffer and append callback data to it | + ------------------------ ------------ -------------------------------------------- + | field | on_h_value | Value for current header started. Allocate | + | | | new buffer and copy callback data to it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_value | Value continues. Reallocate value buffer | + | | | and append callback data to it | + ------------------------ ------------ -------------------------------------------- + + +Parsing URLs +------------ + +A simplistic zero-copy URL parser is provided as `http_parser_parse_url()`. +Users of this library may wish to use it to parse URLs constructed from +consecutive `on_url` callbacks. + +See examples of reading in headers: + +* [partial example](http://gist.github.com/155877) in C +* [from http-parser tests](http://github.com/ry/http-parser/blob/37a0ff8928fb0d83cec0d0d8909c5a4abcd221af/test.c#L403) in C +* [from Node library](http://github.com/ry/node/blob/842eaf446d2fdcb33b296c67c911c32a0dabc747/src/http.js#L284) in Javascript diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c new file mode 100644 index 0000000000..f2ca661ba6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c @@ -0,0 +1,2058 @@ +/* Based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev + * + * Additional changes are licensed under the same terms as NGINX and + * copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "http_parser.h" +#include +#include +#include +#include +#include +#include + +#ifndef ULLONG_MAX +# define ULLONG_MAX ((uint64_t) -1) /* 2^64-1 */ +#endif + +#ifndef MIN +# define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + + +#if HTTP_PARSER_DEBUG +#define SET_ERRNO(e) \ +do { \ + parser->http_errno = (e); \ + parser->error_lineno = __LINE__; \ +} while (0) +#else +#define SET_ERRNO(e) \ +do { \ + parser->http_errno = (e); \ +} while(0) +#endif + + +/* Run the notify callback FOR, returning ER if it fails */ +#define CALLBACK_NOTIFY_(FOR, ER) \ +do { \ + assert(HTTP_PARSER_ERRNO(parser) == HPE_OK); \ + \ + if (settings->on_##FOR) { \ + if (0 != settings->on_##FOR(parser)) { \ + SET_ERRNO(HPE_CB_##FOR); \ + } \ + \ + /* We either errored above or got paused; get out */ \ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { \ + return (ER); \ + } \ + } \ +} while (0) + +/* Run the notify callback FOR and consume the current byte */ +#define CALLBACK_NOTIFY(FOR) CALLBACK_NOTIFY_(FOR, p - data + 1) + +/* Run the notify callback FOR and don't consume the current byte */ +#define CALLBACK_NOTIFY_NOADVANCE(FOR) CALLBACK_NOTIFY_(FOR, p - data) + +/* Run data callback FOR with LEN bytes, returning ER if it fails */ +#define CALLBACK_DATA_(FOR, LEN, ER) \ +do { \ + assert(HTTP_PARSER_ERRNO(parser) == HPE_OK); \ + \ + if (FOR##_mark) { \ + if (settings->on_##FOR) { \ + if (0 != settings->on_##FOR(parser, FOR##_mark, (LEN))) { \ + SET_ERRNO(HPE_CB_##FOR); \ + } \ + \ + /* We either errored above or got paused; get out */ \ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { \ + return (ER); \ + } \ + } \ + FOR##_mark = NULL; \ + } \ +} while (0) + +/* Run the data callback FOR and consume the current byte */ +#define CALLBACK_DATA(FOR) \ + CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1) + +/* Run the data callback FOR and don't consume the current byte */ +#define CALLBACK_DATA_NOADVANCE(FOR) \ + CALLBACK_DATA_(FOR, p - FOR##_mark, p - data) + +/* Set the mark FOR; non-destructive if mark is already set */ +#define MARK(FOR) \ +do { \ + if (!FOR##_mark) { \ + FOR##_mark = p; \ + } \ +} while (0) + + +#define PROXY_CONNECTION "proxy-connection" +#define CONNECTION "connection" +#define CONTENT_LENGTH "content-length" +#define TRANSFER_ENCODING "transfer-encoding" +#define UPGRADE "upgrade" +#define CHUNKED "chunked" +#define KEEP_ALIVE "keep-alive" +#define CLOSE "close" + + +static const char *method_strings[] = + { "DELETE" + , "GET" + , "HEAD" + , "POST" + , "PUT" + , "CONNECT" + , "OPTIONS" + , "TRACE" + , "COPY" + , "LOCK" + , "MKCOL" + , "MOVE" + , "PROPFIND" + , "PROPPATCH" + , "UNLOCK" + , "REPORT" + , "MKACTIVITY" + , "CHECKOUT" + , "MERGE" + , "M-SEARCH" + , "NOTIFY" + , "SUBSCRIBE" + , "UNSUBSCRIBE" + , "PATCH" + , "PURGE" + }; + + +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +static const char tokens[256] = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0, '!', 0, '#', '$', '%', '&', '\'', +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 0, 0, '*', '+', 0, '-', '.', 0, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + '0', '1', '2', '3', '4', '5', '6', '7', +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + '8', '9', 0, 0, 0, 0, 0, 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 0, 'a', 'b', 'c', 'd', 'e', 'f', 'g', +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 'x', 'y', 'z', 0, 0, 0, '^', '_', +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 'x', 'y', 'z', 0, '|', 0, '~', 0 }; + + +static const int8_t unhex[256] = + {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + }; + + +static const uint8_t normal_url_char[256] = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0, 1, 1, 0, 1, 1, 1, 1, +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + 1, 1, 1, 1, 1, 1, 1, 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 1, 1, 1, 1, 1, 1, 1, 1, +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 1, 1, 1, 1, 1, 1, 1, 0, }; + + +enum state + { s_dead = 1 /* important that this is > 0 */ + + , s_start_req_or_res + , s_res_or_resp_H + , s_start_res + , s_res_H + , s_res_HT + , s_res_HTT + , s_res_HTTP + , s_res_first_http_major + , s_res_http_major + , s_res_first_http_minor + , s_res_http_minor + , s_res_first_status_code + , s_res_status_code + , s_res_status + , s_res_line_almost_done + + , s_start_req + + , s_req_method + , s_req_spaces_before_url + , s_req_schema + , s_req_schema_slash + , s_req_schema_slash_slash + , s_req_host_start + , s_req_host_v6_start + , s_req_host_v6 + , s_req_host_v6_end + , s_req_host + , s_req_port_start + , s_req_port + , s_req_path + , s_req_query_string_start + , s_req_query_string + , s_req_fragment_start + , s_req_fragment + , s_req_http_start + , s_req_http_H + , s_req_http_HT + , s_req_http_HTT + , s_req_http_HTTP + , s_req_first_http_major + , s_req_http_major + , s_req_first_http_minor + , s_req_http_minor + , s_req_line_almost_done + + , s_header_field_start + , s_header_field + , s_header_value_start + , s_header_value + , s_header_value_lws + + , s_header_almost_done + + , s_chunk_size_start + , s_chunk_size + , s_chunk_parameters + , s_chunk_size_almost_done + + , s_headers_almost_done + , s_headers_done + + /* Important: 's_headers_done' must be the last 'header' state. All + * states beyond this must be 'body' states. It is used for overflow + * checking. See the PARSING_HEADER() macro. + */ + + , s_chunk_data + , s_chunk_data_almost_done + , s_chunk_data_done + + , s_body_identity + , s_body_identity_eof + + , s_message_done + }; + + +#define PARSING_HEADER(state) (state <= s_headers_done) + + +enum header_states + { h_general = 0 + , h_C + , h_CO + , h_CON + + , h_matching_connection + , h_matching_proxy_connection + , h_matching_content_length + , h_matching_transfer_encoding + , h_matching_upgrade + + , h_connection + , h_content_length + , h_transfer_encoding + , h_upgrade + + , h_matching_transfer_encoding_chunked + , h_matching_connection_keep_alive + , h_matching_connection_close + + , h_transfer_encoding_chunked + , h_connection_keep_alive + , h_connection_close + }; + + +/* Macros for character classes; depends on strict-mode */ +#define CR '\r' +#define LF '\n' +#define LOWER(c) (unsigned char)(c | 0x20) +#define IS_ALPHA(c) (LOWER(c) >= 'a' && LOWER(c) <= 'z') +#define IS_NUM(c) ((c) >= '0' && (c) <= '9') +#define IS_ALPHANUM(c) (IS_ALPHA(c) || IS_NUM(c)) +#define IS_HEX(c) (IS_NUM(c) || (LOWER(c) >= 'a' && LOWER(c) <= 'f')) + +#if HTTP_PARSER_STRICT +#define TOKEN(c) (tokens[(unsigned char)c]) +#define IS_URL_CHAR(c) (normal_url_char[(unsigned char) (c)]) +#define IS_HOST_CHAR(c) (IS_ALPHANUM(c) || (c) == '.' || (c) == '-') +#else +#define TOKEN(c) ((c == ' ') ? ' ' : tokens[(unsigned char)c]) +#define IS_URL_CHAR(c) \ + (normal_url_char[(unsigned char) (c)] || ((c) & 0x80)) +#define IS_HOST_CHAR(c) \ + (IS_ALPHANUM(c) || (c) == '.' || (c) == '-' || (c) == '_') +#endif + + +#define start_state (parser->type == HTTP_REQUEST ? s_start_req : s_start_res) + + +#if HTTP_PARSER_STRICT +# define STRICT_CHECK(cond) \ +do { \ + if (cond) { \ + SET_ERRNO(HPE_STRICT); \ + goto error; \ + } \ +} while (0) +# define NEW_MESSAGE() (http_should_keep_alive(parser) ? start_state : s_dead) +#else +# define STRICT_CHECK(cond) +# define NEW_MESSAGE() start_state +#endif + + +/* Map errno values to strings for human-readable output */ +#define HTTP_STRERROR_GEN(n, s) { "HPE_" #n, s }, +static struct { + const char *name; + const char *description; +} http_strerror_tab[] = { + HTTP_ERRNO_MAP(HTTP_STRERROR_GEN) +}; +#undef HTTP_STRERROR_GEN + +int http_message_needs_eof(http_parser *parser); + +/* Our URL parser. + * + * This is designed to be shared by http_parser_execute() for URL validation, + * hence it has a state transition + byte-for-byte interface. In addition, it + * is meant to be embedded in http_parser_parse_url(), which does the dirty + * work of turning state transitions URL components for its API. + * + * This function should only be invoked with non-space characters. It is + * assumed that the caller cares about (and can detect) the transition between + * URL and non-URL states by looking for these. + */ +static enum state +parse_url_char(enum state s, const char ch) +{ + assert(!isspace(ch)); + + switch (s) { + case s_req_spaces_before_url: + /* Proxied requests are followed by scheme of an absolute URI (alpha). + * All methods except CONNECT are followed by '/' or '*'. + */ + + if (ch == '/' || ch == '*') { + return s_req_path; + } + + if (IS_ALPHA(ch)) { + return s_req_schema; + } + + break; + + case s_req_schema: + if (IS_ALPHA(ch)) { + return s; + } + + if (ch == ':') { + return s_req_schema_slash; + } + + break; + + case s_req_schema_slash: + if (ch == '/') { + return s_req_schema_slash_slash; + } + + break; + + case s_req_schema_slash_slash: + if (ch == '/') { + return s_req_host_start; + } + + break; + + case s_req_host_start: + if (ch == '[') { + return s_req_host_v6_start; + } + + if (IS_HOST_CHAR(ch)) { + return s_req_host; + } + + break; + + case s_req_host: + if (IS_HOST_CHAR(ch)) { + return s_req_host; + } + + /* FALLTHROUGH */ + case s_req_host_v6_end: + switch (ch) { + case ':': + return s_req_port_start; + + case '/': + return s_req_path; + + case '?': + return s_req_query_string_start; + } + + break; + + case s_req_host_v6: + if (ch == ']') { + return s_req_host_v6_end; + } + + /* FALLTHROUGH */ + case s_req_host_v6_start: + if (IS_HEX(ch) || ch == ':') { + return s_req_host_v6; + } + break; + + case s_req_port: + switch (ch) { + case '/': + return s_req_path; + + case '?': + return s_req_query_string_start; + } + + /* FALLTHROUGH */ + case s_req_port_start: + if (IS_NUM(ch)) { + return s_req_port; + } + + break; + + case s_req_path: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + return s_req_query_string_start; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_query_string_start: + case s_req_query_string: + if (IS_URL_CHAR(ch)) { + return s_req_query_string; + } + + switch (ch) { + case '?': + /* allow extra '?' in query string */ + return s_req_query_string; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_fragment_start: + if (IS_URL_CHAR(ch)) { + return s_req_fragment; + } + + switch (ch) { + case '?': + return s_req_fragment; + + case '#': + return s; + } + + break; + + case s_req_fragment: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + case '#': + return s; + } + + break; + + default: + break; + } + + /* We should never fall out of the switch above unless there's an error */ + return s_dead; +} + +size_t http_parser_execute (http_parser *parser, + const http_parser_settings *settings, + const char *data, + size_t len) +{ + char c, ch; + int8_t unhex_val; + const char *p = data; + const char *header_field_mark = 0; + const char *header_value_mark = 0; + const char *url_mark = 0; + const char *body_mark = 0; + + /* We're in an error state. Don't bother doing anything. */ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { + return 0; + } + + if (len == 0) { + switch (parser->state) { + case s_body_identity_eof: + /* Use of CALLBACK_NOTIFY() here would erroneously return 1 byte read if + * we got paused. + */ + CALLBACK_NOTIFY_NOADVANCE(message_complete); + return 0; + + case s_dead: + case s_start_req_or_res: + case s_start_res: + case s_start_req: + return 0; + + default: + SET_ERRNO(HPE_INVALID_EOF_STATE); + return 1; + } + } + + + if (parser->state == s_header_field) + header_field_mark = data; + if (parser->state == s_header_value) + header_value_mark = data; + switch (parser->state) { + case s_req_path: + case s_req_schema: + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_host_start: + case s_req_host_v6_start: + case s_req_host_v6: + case s_req_host_v6_end: + case s_req_host: + case s_req_port_start: + case s_req_port: + case s_req_query_string_start: + case s_req_query_string: + case s_req_fragment_start: + case s_req_fragment: + url_mark = data; + break; + } + + for (p=data; p != data + len; p++) { + ch = *p; + + if (PARSING_HEADER(parser->state)) { + ++parser->nread; + /* Buffer overflow attack */ + if (parser->nread > HTTP_MAX_HEADER_SIZE) { + SET_ERRNO(HPE_HEADER_OVERFLOW); + goto error; + } + } + + reexecute_byte: + switch (parser->state) { + + case s_dead: + /* this state is used after a 'Connection: close' message + * the parser will error out if it reads another message + */ + if (ch == CR || ch == LF) + break; + + SET_ERRNO(HPE_CLOSED_CONNECTION); + goto error; + + case s_start_req_or_res: + { + if (ch == CR || ch == LF) + break; + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + if (ch == 'H') { + parser->state = s_res_or_resp_H; + + CALLBACK_NOTIFY(message_begin); + } else { + parser->type = HTTP_REQUEST; + parser->state = s_start_req; + goto reexecute_byte; + } + + break; + } + + case s_res_or_resp_H: + if (ch == 'T') { + parser->type = HTTP_RESPONSE; + parser->state = s_res_HT; + } else { + if (ch != 'E') { + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + + parser->type = HTTP_REQUEST; + parser->method = HTTP_HEAD; + parser->index = 2; + parser->state = s_req_method; + } + break; + + case s_start_res: + { + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + switch (ch) { + case 'H': + parser->state = s_res_H; + break; + + case CR: + case LF: + break; + + default: + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + + CALLBACK_NOTIFY(message_begin); + break; + } + + case s_res_H: + STRICT_CHECK(ch != 'T'); + parser->state = s_res_HT; + break; + + case s_res_HT: + STRICT_CHECK(ch != 'T'); + parser->state = s_res_HTT; + break; + + case s_res_HTT: + STRICT_CHECK(ch != 'P'); + parser->state = s_res_HTTP; + break; + + case s_res_HTTP: + STRICT_CHECK(ch != '/'); + parser->state = s_res_first_http_major; + break; + + case s_res_first_http_major: + if (ch < '0' || ch > '9') { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major = ch - '0'; + parser->state = s_res_http_major; + break; + + /* major HTTP version or dot */ + case s_res_http_major: + { + if (ch == '.') { + parser->state = s_res_first_http_minor; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major *= 10; + parser->http_major += ch - '0'; + + if (parser->http_major > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* first digit of minor HTTP version */ + case s_res_first_http_minor: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor = ch - '0'; + parser->state = s_res_http_minor; + break; + + /* minor HTTP version or end of request line */ + case s_res_http_minor: + { + if (ch == ' ') { + parser->state = s_res_first_status_code; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor *= 10; + parser->http_minor += ch - '0'; + + if (parser->http_minor > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + case s_res_first_status_code: + { + if (!IS_NUM(ch)) { + if (ch == ' ') { + break; + } + + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + parser->status_code = ch - '0'; + parser->state = s_res_status_code; + break; + } + + case s_res_status_code: + { + if (!IS_NUM(ch)) { + switch (ch) { + case ' ': + parser->state = s_res_status; + break; + case CR: + parser->state = s_res_line_almost_done; + break; + case LF: + parser->state = s_header_field_start; + break; + default: + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + break; + } + + parser->status_code *= 10; + parser->status_code += ch - '0'; + + if (parser->status_code > 999) { + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + + break; + } + + case s_res_status: + /* the human readable status. e.g. "NOT FOUND" + * we are not humans so just ignore this */ + if (ch == CR) { + parser->state = s_res_line_almost_done; + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + break; + } + break; + + case s_res_line_almost_done: + STRICT_CHECK(ch != LF); + parser->state = s_header_field_start; + break; + + case s_start_req: + { + if (ch == CR || ch == LF) + break; + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + if (!IS_ALPHA(ch)) { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + parser->method = (enum http_method) 0; + parser->index = 1; + switch (ch) { + case 'C': parser->method = HTTP_CONNECT; /* or COPY, CHECKOUT */ break; + case 'D': parser->method = HTTP_DELETE; break; + case 'G': parser->method = HTTP_GET; break; + case 'H': parser->method = HTTP_HEAD; break; + case 'L': parser->method = HTTP_LOCK; break; + case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH */ break; + case 'N': parser->method = HTTP_NOTIFY; break; + case 'O': parser->method = HTTP_OPTIONS; break; + case 'P': parser->method = HTTP_POST; + /* or PROPFIND|PROPPATCH|PUT|PATCH|PURGE */ + break; + case 'R': parser->method = HTTP_REPORT; break; + case 'S': parser->method = HTTP_SUBSCRIBE; break; + case 'T': parser->method = HTTP_TRACE; break; + case 'U': parser->method = HTTP_UNLOCK; /* or UNSUBSCRIBE */ break; + default: + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + parser->state = s_req_method; + + CALLBACK_NOTIFY(message_begin); + + break; + } + + case s_req_method: + { + const char *matcher; + if (ch == '\0') { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + matcher = method_strings[parser->method]; + if (ch == ' ' && matcher[parser->index] == '\0') { + parser->state = s_req_spaces_before_url; + } else if (ch == matcher[parser->index]) { + ; /* nada */ + } else if (parser->method == HTTP_CONNECT) { + if (parser->index == 1 && ch == 'H') { + parser->method = HTTP_CHECKOUT; + } else if (parser->index == 2 && ch == 'P') { + parser->method = HTTP_COPY; + } else { + goto error; + } + } else if (parser->method == HTTP_MKCOL) { + if (parser->index == 1 && ch == 'O') { + parser->method = HTTP_MOVE; + } else if (parser->index == 1 && ch == 'E') { + parser->method = HTTP_MERGE; + } else if (parser->index == 1 && ch == '-') { + parser->method = HTTP_MSEARCH; + } else if (parser->index == 2 && ch == 'A') { + parser->method = HTTP_MKACTIVITY; + } else { + goto error; + } + } else if (parser->index == 1 && parser->method == HTTP_POST) { + if (ch == 'R') { + parser->method = HTTP_PROPFIND; /* or HTTP_PROPPATCH */ + } else if (ch == 'U') { + parser->method = HTTP_PUT; /* or HTTP_PURGE */ + } else if (ch == 'A') { + parser->method = HTTP_PATCH; + } else { + goto error; + } + } else if (parser->index == 2) { + if (parser->method == HTTP_PUT) { + if (ch == 'R') parser->method = HTTP_PURGE; + } else if (parser->method == HTTP_UNLOCK) { + if (ch == 'S') parser->method = HTTP_UNSUBSCRIBE; + } + } else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { + parser->method = HTTP_PROPPATCH; + } else { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + ++parser->index; + break; + } + + case s_req_spaces_before_url: + { + if (ch == ' ') break; + + MARK(url); + if (parser->method == HTTP_CONNECT) { + parser->state = s_req_host_start; + } + + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + + break; + } + + case s_req_schema: + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_host_start: + case s_req_host_v6_start: + case s_req_host_v6: + case s_req_port_start: + { + switch (ch) { + /* No whitespace allowed here */ + case ' ': + case CR: + case LF: + SET_ERRNO(HPE_INVALID_URL); + goto error; + default: + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + } + + break; + } + + case s_req_host: + case s_req_host_v6_end: + case s_req_port: + case s_req_path: + case s_req_query_string_start: + case s_req_query_string: + case s_req_fragment_start: + case s_req_fragment: + { + switch (ch) { + case ' ': + parser->state = s_req_http_start; + CALLBACK_DATA(url); + break; + case CR: + case LF: + parser->http_major = 0; + parser->http_minor = 9; + parser->state = (ch == CR) ? + s_req_line_almost_done : + s_header_field_start; + CALLBACK_DATA(url); + break; + default: + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + } + break; + } + + case s_req_http_start: + switch (ch) { + case 'H': + parser->state = s_req_http_H; + break; + case ' ': + break; + default: + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + break; + + case s_req_http_H: + STRICT_CHECK(ch != 'T'); + parser->state = s_req_http_HT; + break; + + case s_req_http_HT: + STRICT_CHECK(ch != 'T'); + parser->state = s_req_http_HTT; + break; + + case s_req_http_HTT: + STRICT_CHECK(ch != 'P'); + parser->state = s_req_http_HTTP; + break; + + case s_req_http_HTTP: + STRICT_CHECK(ch != '/'); + parser->state = s_req_first_http_major; + break; + + /* first digit of major HTTP version */ + case s_req_first_http_major: + if (ch < '1' || ch > '9') { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major = ch - '0'; + parser->state = s_req_http_major; + break; + + /* major HTTP version or dot */ + case s_req_http_major: + { + if (ch == '.') { + parser->state = s_req_first_http_minor; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major *= 10; + parser->http_major += ch - '0'; + + if (parser->http_major > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* first digit of minor HTTP version */ + case s_req_first_http_minor: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor = ch - '0'; + parser->state = s_req_http_minor; + break; + + /* minor HTTP version or end of request line */ + case s_req_http_minor: + { + if (ch == CR) { + parser->state = s_req_line_almost_done; + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + break; + } + + /* XXX allow spaces after digit? */ + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor *= 10; + parser->http_minor += ch - '0'; + + if (parser->http_minor > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* end of request line */ + case s_req_line_almost_done: + { + if (ch != LF) { + SET_ERRNO(HPE_LF_EXPECTED); + goto error; + } + + parser->state = s_header_field_start; + break; + } + + case s_header_field_start: + { + if (ch == CR) { + parser->state = s_headers_almost_done; + break; + } + + if (ch == LF) { + /* they might be just sending \n instead of \r\n so this would be + * the second \n to denote the end of headers*/ + parser->state = s_headers_almost_done; + goto reexecute_byte; + } + + c = TOKEN(ch); + + if (!c) { + SET_ERRNO(HPE_INVALID_HEADER_TOKEN); + goto error; + } + + MARK(header_field); + + parser->index = 0; + parser->state = s_header_field; + + switch (c) { + case 'c': + parser->header_state = h_C; + break; + + case 'p': + parser->header_state = h_matching_proxy_connection; + break; + + case 't': + parser->header_state = h_matching_transfer_encoding; + break; + + case 'u': + parser->header_state = h_matching_upgrade; + break; + + default: + parser->header_state = h_general; + break; + } + break; + } + + case s_header_field: + { + c = TOKEN(ch); + + if (c) { + switch (parser->header_state) { + case h_general: + break; + + case h_C: + parser->index++; + parser->header_state = (c == 'o' ? h_CO : h_general); + break; + + case h_CO: + parser->index++; + parser->header_state = (c == 'n' ? h_CON : h_general); + break; + + case h_CON: + parser->index++; + switch (c) { + case 'n': + parser->header_state = h_matching_connection; + break; + case 't': + parser->header_state = h_matching_content_length; + break; + default: + parser->header_state = h_general; + break; + } + break; + + /* connection */ + + case h_matching_connection: + parser->index++; + if (parser->index > sizeof(CONNECTION)-1 + || c != CONNECTION[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CONNECTION)-2) { + parser->header_state = h_connection; + } + break; + + /* proxy-connection */ + + case h_matching_proxy_connection: + parser->index++; + if (parser->index > sizeof(PROXY_CONNECTION)-1 + || c != PROXY_CONNECTION[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(PROXY_CONNECTION)-2) { + parser->header_state = h_connection; + } + break; + + /* content-length */ + + case h_matching_content_length: + parser->index++; + if (parser->index > sizeof(CONTENT_LENGTH)-1 + || c != CONTENT_LENGTH[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CONTENT_LENGTH)-2) { + parser->header_state = h_content_length; + } + break; + + /* transfer-encoding */ + + case h_matching_transfer_encoding: + parser->index++; + if (parser->index > sizeof(TRANSFER_ENCODING)-1 + || c != TRANSFER_ENCODING[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(TRANSFER_ENCODING)-2) { + parser->header_state = h_transfer_encoding; + } + break; + + /* upgrade */ + + case h_matching_upgrade: + parser->index++; + if (parser->index > sizeof(UPGRADE)-1 + || c != UPGRADE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(UPGRADE)-2) { + parser->header_state = h_upgrade; + } + break; + + case h_connection: + case h_content_length: + case h_transfer_encoding: + case h_upgrade: + if (ch != ' ') parser->header_state = h_general; + break; + + default: + assert(0 && "Unknown header_state"); + break; + } + break; + } + + if (ch == ':') { + parser->state = s_header_value_start; + CALLBACK_DATA(header_field); + break; + } + + if (ch == CR) { + parser->state = s_header_almost_done; + CALLBACK_DATA(header_field); + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + CALLBACK_DATA(header_field); + break; + } + + SET_ERRNO(HPE_INVALID_HEADER_TOKEN); + goto error; + } + + case s_header_value_start: + { + if (ch == ' ' || ch == '\t') break; + + MARK(header_value); + + parser->state = s_header_value; + parser->index = 0; + + if (ch == CR) { + parser->header_state = h_general; + parser->state = s_header_almost_done; + CALLBACK_DATA(header_value); + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + CALLBACK_DATA(header_value); + break; + } + + c = LOWER(ch); + + switch (parser->header_state) { + case h_upgrade: + parser->flags |= F_UPGRADE; + parser->header_state = h_general; + break; + + case h_transfer_encoding: + /* looking for 'Transfer-Encoding: chunked' */ + if ('c' == c) { + parser->header_state = h_matching_transfer_encoding_chunked; + } else { + parser->header_state = h_general; + } + break; + + case h_content_length: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = ch - '0'; + break; + + case h_connection: + /* looking for 'Connection: keep-alive' */ + if (c == 'k') { + parser->header_state = h_matching_connection_keep_alive; + /* looking for 'Connection: close' */ + } else if (c == 'c') { + parser->header_state = h_matching_connection_close; + } else { + parser->header_state = h_general; + } + break; + + default: + parser->header_state = h_general; + break; + } + break; + } + + case s_header_value: + { + + if (ch == CR) { + parser->state = s_header_almost_done; + CALLBACK_DATA(header_value); + break; + } + + if (ch == LF) { + parser->state = s_header_almost_done; + CALLBACK_DATA_NOADVANCE(header_value); + goto reexecute_byte; + } + + c = LOWER(ch); + + switch (parser->header_state) { + case h_general: + break; + + case h_connection: + case h_transfer_encoding: + assert(0 && "Shouldn't get here."); + break; + + case h_content_length: + { + uint64_t t; + + if (ch == ' ') break; + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + t = parser->content_length; + t *= 10; + t += ch - '0'; + + /* Overflow? */ + if (t < parser->content_length || t == ULLONG_MAX) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = t; + break; + } + + /* Transfer-Encoding: chunked */ + case h_matching_transfer_encoding_chunked: + parser->index++; + if (parser->index > sizeof(CHUNKED)-1 + || c != CHUNKED[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CHUNKED)-2) { + parser->header_state = h_transfer_encoding_chunked; + } + break; + + /* looking for 'Connection: keep-alive' */ + case h_matching_connection_keep_alive: + parser->index++; + if (parser->index > sizeof(KEEP_ALIVE)-1 + || c != KEEP_ALIVE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(KEEP_ALIVE)-2) { + parser->header_state = h_connection_keep_alive; + } + break; + + /* looking for 'Connection: close' */ + case h_matching_connection_close: + parser->index++; + if (parser->index > sizeof(CLOSE)-1 || c != CLOSE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CLOSE)-2) { + parser->header_state = h_connection_close; + } + break; + + case h_transfer_encoding_chunked: + case h_connection_keep_alive: + case h_connection_close: + if (ch != ' ') parser->header_state = h_general; + break; + + default: + parser->state = s_header_value; + parser->header_state = h_general; + break; + } + break; + } + + case s_header_almost_done: + { + STRICT_CHECK(ch != LF); + + parser->state = s_header_value_lws; + + switch (parser->header_state) { + case h_connection_keep_alive: + parser->flags |= F_CONNECTION_KEEP_ALIVE; + break; + case h_connection_close: + parser->flags |= F_CONNECTION_CLOSE; + break; + case h_transfer_encoding_chunked: + parser->flags |= F_CHUNKED; + break; + default: + break; + } + + break; + } + + case s_header_value_lws: + { + if (ch == ' ' || ch == '\t') + parser->state = s_header_value_start; + else + { + parser->state = s_header_field_start; + goto reexecute_byte; + } + break; + } + + case s_headers_almost_done: + { + STRICT_CHECK(ch != LF); + + if (parser->flags & F_TRAILING) { + /* End of a chunked request */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + break; + } + + parser->state = s_headers_done; + + /* Set this here so that on_headers_complete() callbacks can see it */ + parser->upgrade = + (parser->flags & F_UPGRADE || parser->method == HTTP_CONNECT); + + /* Here we call the headers_complete callback. This is somewhat + * different than other callbacks because if the user returns 1, we + * will interpret that as saying that this message has no body. This + * is needed for the annoying case of recieving a response to a HEAD + * request. + * + * We'd like to use CALLBACK_NOTIFY_NOADVANCE() here but we cannot, so + * we have to simulate it by handling a change in errno below. + */ + if (settings->on_headers_complete) { + switch (settings->on_headers_complete(parser)) { + case 0: + break; + + case 1: + parser->flags |= F_SKIPBODY; + break; + + default: + SET_ERRNO(HPE_CB_headers_complete); + return p - data; /* Error */ + } + } + + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { + return p - data; + } + + goto reexecute_byte; + } + + case s_headers_done: + { + STRICT_CHECK(ch != LF); + + parser->nread = 0; + + /* Exit, the rest of the connect is in a different protocol. */ + if (parser->upgrade) { + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + return (p - data) + 1; + } + + if (parser->flags & F_SKIPBODY) { + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else if (parser->flags & F_CHUNKED) { + /* chunked encoding - ignore Content-Length header */ + parser->state = s_chunk_size_start; + } else { + if (parser->content_length == 0) { + /* Content-Length header given but zero: Content-Length: 0\r\n */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else if (parser->content_length != ULLONG_MAX) { + /* Content-Length header given and non-zero */ + parser->state = s_body_identity; + } else { + if (parser->type == HTTP_REQUEST || + !http_message_needs_eof(parser)) { + /* Assume content-length 0 - read the next */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else { + /* Read body until EOF */ + parser->state = s_body_identity_eof; + } + } + } + + break; + } + + case s_body_identity: + { + uint64_t to_read = MIN(parser->content_length, + (uint64_t) ((data + len) - p)); + + assert(parser->content_length != 0 + && parser->content_length != ULLONG_MAX); + + /* The difference between advancing content_length and p is because + * the latter will automaticaly advance on the next loop iteration. + * Further, if content_length ends up at 0, we want to see the last + * byte again for our message complete callback. + */ + MARK(body); + parser->content_length -= to_read; + p += to_read - 1; + + if (parser->content_length == 0) { + parser->state = s_message_done; + + /* Mimic CALLBACK_DATA_NOADVANCE() but with one extra byte. + * + * The alternative to doing this is to wait for the next byte to + * trigger the data callback, just as in every other case. The + * problem with this is that this makes it difficult for the test + * harness to distinguish between complete-on-EOF and + * complete-on-length. It's not clear that this distinction is + * important for applications, but let's keep it for now. + */ + CALLBACK_DATA_(body, p - body_mark + 1, p - data); + goto reexecute_byte; + } + + break; + } + + /* read until EOF */ + case s_body_identity_eof: + MARK(body); + p = data + len - 1; + + break; + + case s_message_done: + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + break; + + case s_chunk_size_start: + { + assert(parser->nread == 1); + assert(parser->flags & F_CHUNKED); + + unhex_val = unhex[(unsigned char)ch]; + if (unhex_val == -1) { + SET_ERRNO(HPE_INVALID_CHUNK_SIZE); + goto error; + } + + parser->content_length = unhex_val; + parser->state = s_chunk_size; + break; + } + + case s_chunk_size: + { + uint64_t t; + + assert(parser->flags & F_CHUNKED); + + if (ch == CR) { + parser->state = s_chunk_size_almost_done; + break; + } + + unhex_val = unhex[(unsigned char)ch]; + + if (unhex_val == -1) { + if (ch == ';' || ch == ' ') { + parser->state = s_chunk_parameters; + break; + } + + SET_ERRNO(HPE_INVALID_CHUNK_SIZE); + goto error; + } + + t = parser->content_length; + t *= 16; + t += unhex_val; + + /* Overflow? */ + if (t < parser->content_length || t == ULLONG_MAX) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = t; + break; + } + + case s_chunk_parameters: + { + assert(parser->flags & F_CHUNKED); + /* just ignore this shit. TODO check for overflow */ + if (ch == CR) { + parser->state = s_chunk_size_almost_done; + break; + } + break; + } + + case s_chunk_size_almost_done: + { + assert(parser->flags & F_CHUNKED); + STRICT_CHECK(ch != LF); + + parser->nread = 0; + + if (parser->content_length == 0) { + parser->flags |= F_TRAILING; + parser->state = s_header_field_start; + } else { + parser->state = s_chunk_data; + } + break; + } + + case s_chunk_data: + { + uint64_t to_read = MIN(parser->content_length, + (uint64_t) ((data + len) - p)); + + assert(parser->flags & F_CHUNKED); + assert(parser->content_length != 0 + && parser->content_length != ULLONG_MAX); + + /* See the explanation in s_body_identity for why the content + * length and data pointers are managed this way. + */ + MARK(body); + parser->content_length -= to_read; + p += to_read - 1; + + if (parser->content_length == 0) { + parser->state = s_chunk_data_almost_done; + } + + break; + } + + case s_chunk_data_almost_done: + assert(parser->flags & F_CHUNKED); + assert(parser->content_length == 0); + STRICT_CHECK(ch != CR); + parser->state = s_chunk_data_done; + CALLBACK_DATA(body); + break; + + case s_chunk_data_done: + assert(parser->flags & F_CHUNKED); + STRICT_CHECK(ch != LF); + parser->nread = 0; + parser->state = s_chunk_size_start; + break; + + default: + assert(0 && "unhandled state"); + SET_ERRNO(HPE_INVALID_INTERNAL_STATE); + goto error; + } + } + + /* Run callbacks for any marks that we have leftover after we ran our of + * bytes. There should be at most one of these set, so it's OK to invoke + * them in series (unset marks will not result in callbacks). + * + * We use the NOADVANCE() variety of callbacks here because 'p' has already + * overflowed 'data' and this allows us to correct for the off-by-one that + * we'd otherwise have (since CALLBACK_DATA() is meant to be run with a 'p' + * value that's in-bounds). + */ + + assert(((header_field_mark ? 1 : 0) + + (header_value_mark ? 1 : 0) + + (url_mark ? 1 : 0) + + (body_mark ? 1 : 0)) <= 1); + + CALLBACK_DATA_NOADVANCE(header_field); + CALLBACK_DATA_NOADVANCE(header_value); + CALLBACK_DATA_NOADVANCE(url); + CALLBACK_DATA_NOADVANCE(body); + + return len; + +error: + if (HTTP_PARSER_ERRNO(parser) == HPE_OK) { + SET_ERRNO(HPE_UNKNOWN); + } + + return (p - data); +} + + +/* Does the parser need to see an EOF to find the end of the message? */ +int +http_message_needs_eof (http_parser *parser) +{ + if (parser->type == HTTP_REQUEST) { + return 0; + } + + /* See RFC 2616 section 4.4 */ + if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */ + parser->status_code == 204 || /* No Content */ + parser->status_code == 304 || /* Not Modified */ + parser->flags & F_SKIPBODY) { /* response to a HEAD request */ + return 0; + } + + if ((parser->flags & F_CHUNKED) || parser->content_length != ULLONG_MAX) { + return 0; + } + + return 1; +} + + +int +http_should_keep_alive (http_parser *parser) +{ + if (parser->http_major > 0 && parser->http_minor > 0) { + /* HTTP/1.1 */ + if (parser->flags & F_CONNECTION_CLOSE) { + return 0; + } + } else { + /* HTTP/1.0 or earlier */ + if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) { + return 0; + } + } + + return !http_message_needs_eof(parser); +} + + +const char * http_method_str (enum http_method m) +{ + return method_strings[m]; +} + + +void +http_parser_init (http_parser *parser, enum http_parser_type t) +{ + void *data = parser->data; /* preserve application data */ + memset(parser, 0, sizeof(*parser)); + parser->data = data; + parser->type = t; + parser->state = (t == HTTP_REQUEST ? s_start_req : (t == HTTP_RESPONSE ? s_start_res : s_start_req_or_res)); + parser->http_errno = HPE_OK; +} + +const char * +http_errno_name(enum http_errno err) { + assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); + return http_strerror_tab[err].name; +} + +const char * +http_errno_description(enum http_errno err) { + assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); + return http_strerror_tab[err].description; +} + +int +http_parser_parse_url(const char *buf, size_t buflen, int is_connect, + struct http_parser_url *u) +{ + enum state s; + const char *p; + enum http_parser_url_fields uf, old_uf; + + u->port = u->field_set = 0; + s = is_connect ? s_req_host_start : s_req_spaces_before_url; + uf = old_uf = UF_MAX; + + for (p = buf; p < buf + buflen; p++) { + s = parse_url_char(s, *p); + + /* Figure out the next field that we're operating on */ + switch (s) { + case s_dead: + return 1; + + /* Skip delimeters */ + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_host_start: + case s_req_host_v6_start: + case s_req_host_v6_end: + case s_req_port_start: + case s_req_query_string_start: + case s_req_fragment_start: + continue; + + case s_req_schema: + uf = UF_SCHEMA; + break; + + case s_req_host: + case s_req_host_v6: + uf = UF_HOST; + break; + + case s_req_port: + uf = UF_PORT; + break; + + case s_req_path: + uf = UF_PATH; + break; + + case s_req_query_string: + uf = UF_QUERY; + break; + + case s_req_fragment: + uf = UF_FRAGMENT; + break; + + default: + assert(!"Unexpected state"); + return 1; + } + + /* Nothing's changed; soldier on */ + if (uf == old_uf) { + u->field_data[uf].len++; + continue; + } + + u->field_data[uf].off = p - buf; + u->field_data[uf].len = 1; + + u->field_set |= (1 << uf); + old_uf = uf; + } + + /* CONNECT requests can only contain "hostname:port" */ + if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) { + return 1; + } + + /* Make sure we don't end somewhere unexpected */ + switch (s) { + case s_req_host_v6_start: + case s_req_host_v6: + case s_req_host_v6_end: + case s_req_host: + case s_req_port_start: + return 1; + default: + break; + } + + if (u->field_set & (1 << UF_PORT)) { + /* Don't bother with endp; we've already validated the string */ + unsigned long v = strtoul(buf + u->field_data[UF_PORT].off, NULL, 10); + + /* Ports have a max value of 2^16 */ + if (v > 0xffff) { + return 1; + } + + u->port = (uint16_t) v; + } + + return 0; +} + +void +http_parser_pause(http_parser *parser, int paused) { + /* Users should only be pausing/unpausing a parser that is not in an error + * state. In non-debug builds, there's not much that we can do about this + * other than ignore it. + */ + if (HTTP_PARSER_ERRNO(parser) == HPE_OK || + HTTP_PARSER_ERRNO(parser) == HPE_PAUSED) { + SET_ERRNO((paused) ? HPE_PAUSED : HPE_OK); + } else { + assert(0 && "Attempting to pause parser in error state"); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp new file mode 100644 index 0000000000..c6eada707f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp @@ -0,0 +1,79 @@ +# This file is used with the GYP meta build system. +# http://code.google.com/p/gyp/ +# To build try this: +# svn co http://gyp.googlecode.com/svn/trunk gyp +# ./gyp/gyp -f make --depth=`pwd` http_parser.gyp +# ./out/Debug/test +{ + 'target_defaults': { + 'default_configuration': 'Debug', + 'configurations': { + # TODO: hoist these out and put them somewhere common, because + # RuntimeLibrary MUST MATCH across the entire project + 'Debug': { + 'defines': [ 'DEBUG', '_DEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 1, # static debug + }, + }, + }, + 'Release': { + 'defines': [ 'NDEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 0, # static release + }, + }, + } + }, + 'msvs_settings': { + 'VCCLCompilerTool': { + }, + 'VCLibrarianTool': { + }, + 'VCLinkerTool': { + 'GenerateDebugInformation': 'true', + }, + }, + 'conditions': [ + ['OS == "win"', { + 'defines': [ + 'WIN32' + ], + }] + ], + }, + + 'targets': [ + { + 'target_name': 'http_parser', + 'type': 'static_library', + 'include_dirs': [ '.' ], + 'direct_dependent_settings': { + 'include_dirs': [ '.' ], + }, + 'defines': [ 'HTTP_PARSER_STRICT=0' ], + 'sources': [ './http_parser.c', ], + 'conditions': [ + ['OS=="win"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + # Compile as C++. http_parser.c is actually C99, but C++ is + # close enough in this case. + 'CompileAs': 2, + }, + }, + }] + ], + }, + + { + 'target_name': 'test', + 'type': 'executable', + 'dependencies': [ 'http_parser' ], + 'sources': [ 'test.c' ] + } + ] +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h new file mode 100644 index 0000000000..78b3701b22 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h @@ -0,0 +1,312 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef http_parser_h +#define http_parser_h +#ifdef __cplusplus +extern "C" { +#endif + +#define HTTP_PARSER_VERSION_MAJOR 1 +#define HTTP_PARSER_VERSION_MINOR 0 + +#include +#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600) +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; + +typedef unsigned int size_t; +typedef int ssize_t; +#else +#include +#endif + +/* Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run + * faster + */ +#ifndef HTTP_PARSER_STRICT +# define HTTP_PARSER_STRICT 1 +#endif + +/* Compile with -DHTTP_PARSER_DEBUG=1 to add extra debugging information to + * the error reporting facility. + */ +#ifndef HTTP_PARSER_DEBUG +# define HTTP_PARSER_DEBUG 0 +#endif + + +/* Maximium header size allowed */ +#define HTTP_MAX_HEADER_SIZE (80*1024) + + +typedef struct http_parser http_parser; +typedef struct http_parser_settings http_parser_settings; +typedef struct http_parser_result http_parser_result; + + +/* Callbacks should return non-zero to indicate an error. The parser will + * then halt execution. + * + * The one exception is on_headers_complete. In a HTTP_RESPONSE parser + * returning '1' from on_headers_complete will tell the parser that it + * should not expect a body. This is used when receiving a response to a + * HEAD request which may contain 'Content-Length' or 'Transfer-Encoding: + * chunked' headers that indicate the presence of a body. + * + * http_data_cb does not return data chunks. It will be call arbitrarally + * many times for each string. E.G. you might get 10 callbacks for "on_path" + * each providing just a few characters more data. + */ +typedef int (*http_data_cb) (http_parser*, const char *at, size_t length); +typedef int (*http_cb) (http_parser*); + + +/* Request Methods */ +enum http_method + { HTTP_DELETE = 0 + , HTTP_GET + , HTTP_HEAD + , HTTP_POST + , HTTP_PUT + /* pathological */ + , HTTP_CONNECT + , HTTP_OPTIONS + , HTTP_TRACE + /* webdav */ + , HTTP_COPY + , HTTP_LOCK + , HTTP_MKCOL + , HTTP_MOVE + , HTTP_PROPFIND + , HTTP_PROPPATCH + , HTTP_UNLOCK + /* subversion */ + , HTTP_REPORT + , HTTP_MKACTIVITY + , HTTP_CHECKOUT + , HTTP_MERGE + /* upnp */ + , HTTP_MSEARCH + , HTTP_NOTIFY + , HTTP_SUBSCRIBE + , HTTP_UNSUBSCRIBE + /* RFC-5789 */ + , HTTP_PATCH + , HTTP_PURGE + }; + + +enum http_parser_type { HTTP_REQUEST, HTTP_RESPONSE, HTTP_BOTH }; + + +/* Flag values for http_parser.flags field */ +enum flags + { F_CHUNKED = 1 << 0 + , F_CONNECTION_KEEP_ALIVE = 1 << 1 + , F_CONNECTION_CLOSE = 1 << 2 + , F_TRAILING = 1 << 3 + , F_UPGRADE = 1 << 4 + , F_SKIPBODY = 1 << 5 + }; + + +/* Map for errno-related constants + * + * The provided argument should be a macro that takes 2 arguments. + */ +#define HTTP_ERRNO_MAP(XX) \ + /* No error */ \ + XX(OK, "success") \ + \ + /* Callback-related errors */ \ + XX(CB_message_begin, "the on_message_begin callback failed") \ + XX(CB_url, "the on_url callback failed") \ + XX(CB_header_field, "the on_header_field callback failed") \ + XX(CB_header_value, "the on_header_value callback failed") \ + XX(CB_headers_complete, "the on_headers_complete callback failed") \ + XX(CB_body, "the on_body callback failed") \ + XX(CB_message_complete, "the on_message_complete callback failed") \ + \ + /* Parsing-related errors */ \ + XX(INVALID_EOF_STATE, "stream ended at an unexpected time") \ + XX(HEADER_OVERFLOW, \ + "too many header bytes seen; overflow detected") \ + XX(CLOSED_CONNECTION, \ + "data received after completed connection: close message") \ + XX(INVALID_VERSION, "invalid HTTP version") \ + XX(INVALID_STATUS, "invalid HTTP status code") \ + XX(INVALID_METHOD, "invalid HTTP method") \ + XX(INVALID_URL, "invalid URL") \ + XX(INVALID_HOST, "invalid host") \ + XX(INVALID_PORT, "invalid port") \ + XX(INVALID_PATH, "invalid path") \ + XX(INVALID_QUERY_STRING, "invalid query string") \ + XX(INVALID_FRAGMENT, "invalid fragment") \ + XX(LF_EXPECTED, "LF character expected") \ + XX(INVALID_HEADER_TOKEN, "invalid character in header") \ + XX(INVALID_CONTENT_LENGTH, \ + "invalid character in content-length header") \ + XX(INVALID_CHUNK_SIZE, \ + "invalid character in chunk size header") \ + XX(INVALID_CONSTANT, "invalid constant string") \ + XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\ + XX(STRICT, "strict mode assertion failed") \ + XX(PAUSED, "parser is paused") \ + XX(UNKNOWN, "an unknown error occurred") + + +/* Define HPE_* values for each errno value above */ +#define HTTP_ERRNO_GEN(n, s) HPE_##n, +enum http_errno { + HTTP_ERRNO_MAP(HTTP_ERRNO_GEN) +}; +#undef HTTP_ERRNO_GEN + + +/* Get an http_errno value from an http_parser */ +#define HTTP_PARSER_ERRNO(p) ((enum http_errno) (p)->http_errno) + +/* Get the line number that generated the current error */ +#if HTTP_PARSER_DEBUG +#define HTTP_PARSER_ERRNO_LINE(p) ((p)->error_lineno) +#else +#define HTTP_PARSER_ERRNO_LINE(p) 0 +#endif + + +struct http_parser { + /** PRIVATE **/ + unsigned char type : 2; /* enum http_parser_type */ + unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */ + unsigned char state; /* enum state from http_parser.c */ + unsigned char header_state; /* enum header_state from http_parser.c */ + unsigned char index; /* index into current matcher */ + + uint32_t nread; /* # bytes read in various scenarios */ + uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */ + + /** READ-ONLY **/ + unsigned short http_major; + unsigned short http_minor; + unsigned short status_code; /* responses only */ + unsigned char method; /* requests only */ + unsigned char http_errno : 7; + + /* 1 = Upgrade header was present and the parser has exited because of that. + * 0 = No upgrade header present. + * Should be checked when http_parser_execute() returns in addition to + * error checking. + */ + unsigned char upgrade : 1; + +#if HTTP_PARSER_DEBUG + uint32_t error_lineno; +#endif + + /** PUBLIC **/ + void *data; /* A pointer to get hook to the "connection" or "socket" object */ +}; + + +struct http_parser_settings { + http_cb on_message_begin; + http_data_cb on_url; + http_data_cb on_header_field; + http_data_cb on_header_value; + http_cb on_headers_complete; + http_data_cb on_body; + http_cb on_message_complete; +}; + + +enum http_parser_url_fields + { UF_SCHEMA = 0 + , UF_HOST = 1 + , UF_PORT = 2 + , UF_PATH = 3 + , UF_QUERY = 4 + , UF_FRAGMENT = 5 + , UF_MAX = 6 + }; + + +/* Result structure for http_parser_parse_url(). + * + * Callers should index into field_data[] with UF_* values iff field_set + * has the relevant (1 << UF_*) bit set. As a courtesy to clients (and + * because we probably have padding left over), we convert any port to + * a uint16_t. + */ +struct http_parser_url { + uint16_t field_set; /* Bitmask of (1 << UF_*) values */ + uint16_t port; /* Converted UF_PORT string */ + + struct { + uint16_t off; /* Offset into buffer in which field starts */ + uint16_t len; /* Length of run in buffer */ + } field_data[UF_MAX]; +}; + + +void http_parser_init(http_parser *parser, enum http_parser_type type); + + +size_t http_parser_execute(http_parser *parser, + const http_parser_settings *settings, + const char *data, + size_t len); + + +/* If http_should_keep_alive() in the on_headers_complete or + * on_message_complete callback returns true, then this will be should be + * the last message on the connection. + * If you are the server, respond with the "Connection: close" header. + * If you are the client, close the connection. + */ +int http_should_keep_alive(http_parser *parser); + +/* Returns a string version of the HTTP method. */ +const char *http_method_str(enum http_method m); + +/* Return a string name of the given error */ +const char *http_errno_name(enum http_errno err); + +/* Return a string description of the given error */ +const char *http_errno_description(enum http_errno err); + +/* Parse a URL; return nonzero on failure */ +int http_parser_parse_url(const char *buf, size_t buflen, + int is_connect, + struct http_parser_url *u); + +/* Pause or un-pause the parser; a nonzero value pauses */ +void http_parser_pause(http_parser *parser, int paused); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/test.c b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/test.c new file mode 100644 index 0000000000..184ba243fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser/test.c @@ -0,0 +1,2876 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "http_parser.h" +#include +#include +#include +#include /* rand */ +#include +#include + +#undef TRUE +#define TRUE 1 +#undef FALSE +#define FALSE 0 + +#define MAX_HEADERS 13 +#define MAX_ELEMENT_SIZE 500 + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) + +static http_parser *parser; + +struct message { + const char *name; // for debugging purposes + const char *raw; + enum http_parser_type type; + enum http_method method; + int status_code; + char request_path[MAX_ELEMENT_SIZE]; + char request_url[MAX_ELEMENT_SIZE]; + char fragment[MAX_ELEMENT_SIZE]; + char query_string[MAX_ELEMENT_SIZE]; + char body[MAX_ELEMENT_SIZE]; + size_t body_size; + uint16_t port; + int num_headers; + enum { NONE=0, FIELD, VALUE } last_header_element; + char headers [MAX_HEADERS][2][MAX_ELEMENT_SIZE]; + int should_keep_alive; + + const char *upgrade; // upgraded body + + unsigned short http_major; + unsigned short http_minor; + + int message_begin_cb_called; + int headers_complete_cb_called; + int message_complete_cb_called; + int message_complete_on_eof; +}; + +static int currently_parsing_eof; + +static struct message messages[5]; +static int num_messages; +static http_parser_settings *current_pause_parser; + +/* * R E Q U E S T S * */ +const struct message requests[] = +#define CURL_GET 0 +{ {.name= "curl get" + ,.type= HTTP_REQUEST + ,.raw= "GET /test HTTP/1.1\r\n" + "User-Agent: curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1\r\n" + "Host: 0.0.0.0=5000\r\n" + "Accept: */*\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 3 + ,.headers= + { { "User-Agent", "curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1" } + , { "Host", "0.0.0.0=5000" } + , { "Accept", "*/*" } + } + ,.body= "" + } + +#define FIREFOX_GET 1 +, {.name= "firefox get" + ,.type= HTTP_REQUEST + ,.raw= "GET /favicon.ico HTTP/1.1\r\n" + "Host: 0.0.0.0=5000\r\n" + "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0\r\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" + "Accept-Language: en-us,en;q=0.5\r\n" + "Accept-Encoding: gzip,deflate\r\n" + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" + "Keep-Alive: 300\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/favicon.ico" + ,.request_url= "/favicon.ico" + ,.num_headers= 8 + ,.headers= + { { "Host", "0.0.0.0=5000" } + , { "User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0" } + , { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" } + , { "Accept-Language", "en-us,en;q=0.5" } + , { "Accept-Encoding", "gzip,deflate" } + , { "Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7" } + , { "Keep-Alive", "300" } + , { "Connection", "keep-alive" } + } + ,.body= "" + } + +#define DUMBFUCK 2 +, {.name= "dumbfuck" + ,.type= HTTP_REQUEST + ,.raw= "GET /dumbfuck HTTP/1.1\r\n" + "aaaaaaaaaaaaa:++++++++++\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/dumbfuck" + ,.request_url= "/dumbfuck" + ,.num_headers= 1 + ,.headers= + { { "aaaaaaaaaaaaa", "++++++++++" } + } + ,.body= "" + } + +#define FRAGMENT_IN_URI 3 +, {.name= "fragment in url" + ,.type= HTTP_REQUEST + ,.raw= "GET /forums/1/topics/2375?page=1#posts-17408 HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "page=1" + ,.fragment= "posts-17408" + ,.request_path= "/forums/1/topics/2375" + /* XXX request url does include fragment? */ + ,.request_url= "/forums/1/topics/2375?page=1#posts-17408" + ,.num_headers= 0 + ,.body= "" + } + +#define GET_NO_HEADERS_NO_BODY 4 +, {.name= "get no headers no body" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_no_headers_no_body/world HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE /* would need Connection: close */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_no_headers_no_body/world" + ,.request_url= "/get_no_headers_no_body/world" + ,.num_headers= 0 + ,.body= "" + } + +#define GET_ONE_HEADER_NO_BODY 5 +, {.name= "get one header no body" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_one_header_no_body HTTP/1.1\r\n" + "Accept: */*\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE /* would need Connection: close */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_one_header_no_body" + ,.request_url= "/get_one_header_no_body" + ,.num_headers= 1 + ,.headers= + { { "Accept" , "*/*" } + } + ,.body= "" + } + +#define GET_FUNKY_CONTENT_LENGTH 6 +, {.name= "get funky content length body hello" + ,.type= HTTP_REQUEST + ,.raw= "GET /get_funky_content_length_body_hello HTTP/1.0\r\n" + "conTENT-Length: 5\r\n" + "\r\n" + "HELLO" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/get_funky_content_length_body_hello" + ,.request_url= "/get_funky_content_length_body_hello" + ,.num_headers= 1 + ,.headers= + { { "conTENT-Length" , "5" } + } + ,.body= "HELLO" + } + +#define POST_IDENTITY_BODY_WORLD 7 +, {.name= "post identity body world" + ,.type= HTTP_REQUEST + ,.raw= "POST /post_identity_body_world?q=search#hey HTTP/1.1\r\n" + "Accept: */*\r\n" + "Transfer-Encoding: identity\r\n" + "Content-Length: 5\r\n" + "\r\n" + "World" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "q=search" + ,.fragment= "hey" + ,.request_path= "/post_identity_body_world" + ,.request_url= "/post_identity_body_world?q=search#hey" + ,.num_headers= 3 + ,.headers= + { { "Accept", "*/*" } + , { "Transfer-Encoding", "identity" } + , { "Content-Length", "5" } + } + ,.body= "World" + } + +#define POST_CHUNKED_ALL_YOUR_BASE 8 +, {.name= "post - chunked body: all your base are belong to us" + ,.type= HTTP_REQUEST + ,.raw= "POST /post_chunked_all_your_base HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "1e\r\nall your base are belong to us\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/post_chunked_all_your_base" + ,.request_url= "/post_chunked_all_your_base" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding" , "chunked" } + } + ,.body= "all your base are belong to us" + } + +#define TWO_CHUNKS_MULT_ZERO_END 9 +, {.name= "two chunks ; triple zero ending" + ,.type= HTTP_REQUEST + ,.raw= "POST /two_chunks_mult_zero_end HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5\r\nhello\r\n" + "6\r\n world\r\n" + "000\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/two_chunks_mult_zero_end" + ,.request_url= "/two_chunks_mult_zero_end" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body= "hello world" + } + +#define CHUNKED_W_TRAILING_HEADERS 10 +, {.name= "chunked with trailing headers. blech." + ,.type= HTTP_REQUEST + ,.raw= "POST /chunked_w_trailing_headers HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5\r\nhello\r\n" + "6\r\n world\r\n" + "0\r\n" + "Vary: *\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/chunked_w_trailing_headers" + ,.request_url= "/chunked_w_trailing_headers" + ,.num_headers= 3 + ,.headers= + { { "Transfer-Encoding", "chunked" } + , { "Vary", "*" } + , { "Content-Type", "text/plain" } + } + ,.body= "hello world" + } + +#define CHUNKED_W_BULLSHIT_AFTER_LENGTH 11 +, {.name= "with bullshit after the length" + ,.type= HTTP_REQUEST + ,.raw= "POST /chunked_w_bullshit_after_length HTTP/1.1\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "5; ihatew3;whatthefuck=aretheseparametersfor\r\nhello\r\n" + "6; blahblah; blah\r\n world\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/chunked_w_bullshit_after_length" + ,.request_url= "/chunked_w_bullshit_after_length" + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body= "hello world" + } + +#define WITH_QUOTES 12 +, {.name= "with quotes" + ,.type= HTTP_REQUEST + ,.raw= "GET /with_\"stupid\"_quotes?foo=\"bar\" HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "foo=\"bar\"" + ,.fragment= "" + ,.request_path= "/with_\"stupid\"_quotes" + ,.request_url= "/with_\"stupid\"_quotes?foo=\"bar\"" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define APACHEBENCH_GET 13 +/* The server receiving this request SHOULD NOT wait for EOF + * to know that content-length == 0. + * How to represent this in a unit test? message_complete_on_eof + * Compare with NO_CONTENT_LENGTH_RESPONSE. + */ +, {.name = "apachebench get" + ,.type= HTTP_REQUEST + ,.raw= "GET /test HTTP/1.0\r\n" + "Host: 0.0.0.0:5000\r\n" + "User-Agent: ApacheBench/2.3\r\n" + "Accept: */*\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 3 + ,.headers= { { "Host", "0.0.0.0:5000" } + , { "User-Agent", "ApacheBench/2.3" } + , { "Accept", "*/*" } + } + ,.body= "" + } + +#define QUERY_URL_WITH_QUESTION_MARK_GET 14 +/* Some clients include '?' characters in query strings. + */ +, {.name = "query url with question mark" + ,.type= HTTP_REQUEST + ,.raw= "GET /test.cgi?foo=bar?baz HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "foo=bar?baz" + ,.fragment= "" + ,.request_path= "/test.cgi" + ,.request_url= "/test.cgi?foo=bar?baz" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define PREFIX_NEWLINE_GET 15 +/* Some clients, especially after a POST in a keep-alive connection, + * will send an extra CRLF before the next request + */ +, {.name = "newline prefix get" + ,.type= HTTP_REQUEST + ,.raw= "\r\nGET /test HTTP/1.1\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define UPGRADE_REQUEST 16 +, {.name = "upgrade request" + ,.type= HTTP_REQUEST + ,.raw= "GET /demo HTTP/1.1\r\n" + "Host: example.com\r\n" + "Connection: Upgrade\r\n" + "Sec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\n" + "Sec-WebSocket-Protocol: sample\r\n" + "Upgrade: WebSocket\r\n" + "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\n" + "Origin: http://example.com\r\n" + "\r\n" + "Hot diggity dogg" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/demo" + ,.request_url= "/demo" + ,.num_headers= 7 + ,.upgrade="Hot diggity dogg" + ,.headers= { { "Host", "example.com" } + , { "Connection", "Upgrade" } + , { "Sec-WebSocket-Key2", "12998 5 Y3 1 .P00" } + , { "Sec-WebSocket-Protocol", "sample" } + , { "Upgrade", "WebSocket" } + , { "Sec-WebSocket-Key1", "4 @1 46546xW%0l 1 5" } + , { "Origin", "http://example.com" } + } + ,.body= "" + } + +#define CONNECT_REQUEST 17 +, {.name = "connect request" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT 0-home0.netscape.com:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + "some data\r\n" + "and yet even more data" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "0-home0.netscape.com:443" + ,.num_headers= 2 + ,.upgrade="some data\r\nand yet even more data" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } + +#define REPORT_REQ 18 +, {.name= "report request" + ,.type= HTTP_REQUEST + ,.raw= "REPORT /test HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_REPORT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/test" + ,.request_url= "/test" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define NO_HTTP_VERSION 19 +, {.name= "request with no http version" + ,.type= HTTP_REQUEST + ,.raw= "GET /\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 0 + ,.http_minor= 9 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define MSEARCH_REQ 20 +, {.name= "m-search request" + ,.type= HTTP_REQUEST + ,.raw= "M-SEARCH * HTTP/1.1\r\n" + "HOST: 239.255.255.250:1900\r\n" + "MAN: \"ssdp:discover\"\r\n" + "ST: \"ssdp:all\"\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_MSEARCH + ,.query_string= "" + ,.fragment= "" + ,.request_path= "*" + ,.request_url= "*" + ,.num_headers= 3 + ,.headers= { { "HOST", "239.255.255.250:1900" } + , { "MAN", "\"ssdp:discover\"" } + , { "ST", "\"ssdp:all\"" } + } + ,.body= "" + } + +#define LINE_FOLDING_IN_HEADER 20 +, {.name= "line folding in header value" + ,.type= HTTP_REQUEST + ,.raw= "GET / HTTP/1.1\r\n" + "Line1: abc\r\n" + "\tdef\r\n" + " ghi\r\n" + "\t\tjkl\r\n" + " mno \r\n" + "\t \tqrs\r\n" + "Line2: \t line2\t\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 2 + ,.headers= { { "Line1", "abcdefghijklmno qrs" } + , { "Line2", "line2\t" } + } + ,.body= "" + } + + +#define QUERY_TERMINATED_HOST 21 +, {.name= "host terminated by a query string" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org?hail=all HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "hail=all" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org?hail=all" + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define QUERY_TERMINATED_HOSTPORT 22 +, {.name= "host:port terminated by a query string" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org:1234?hail=all HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "hail=all" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org:1234?hail=all" + ,.port= 1234 + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define SPACE_TERMINATED_HOSTPORT 23 +, {.name= "host:port terminated by a space" + ,.type= HTTP_REQUEST + ,.raw= "GET http://hypnotoad.org:1234 HTTP/1.1\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "http://hypnotoad.org:1234" + ,.port= 1234 + ,.num_headers= 0 + ,.headers= { } + ,.body= "" + } + +#define PATCH_REQ 24 +, {.name = "PATCH request" + ,.type= HTTP_REQUEST + ,.raw= "PATCH /file.txt HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/example\r\n" + "If-Match: \"e0023aa4e\"\r\n" + "Content-Length: 10\r\n" + "\r\n" + "cccccccccc" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_PATCH + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/file.txt" + ,.request_url= "/file.txt" + ,.num_headers= 4 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/example" } + , { "If-Match", "\"e0023aa4e\"" } + , { "Content-Length", "10" } + } + ,.body= "cccccccccc" + } + +#define CONNECT_CAPS_REQUEST 25 +, {.name = "connect caps request" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT HOME0.NETSCAPE.COM:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "HOME0.NETSCAPE.COM:443" + ,.num_headers= 2 + ,.upgrade="" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } + +#if !HTTP_PARSER_STRICT +#define UTF8_PATH_REQ 26 +, {.name= "utf-8 path request" + ,.type= HTTP_REQUEST + ,.raw= "GET /δ¶/δt/pope?q=1#narf HTTP/1.1\r\n" + "Host: github.com\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_GET + ,.query_string= "q=1" + ,.fragment= "narf" + ,.request_path= "/δ¶/δt/pope" + ,.request_url= "/δ¶/δt/pope?q=1#narf" + ,.num_headers= 1 + ,.headers= { {"Host", "github.com" } + } + ,.body= "" + } + +#define HOSTNAME_UNDERSCORE 27 +, {.name = "hostname underscore" + ,.type= HTTP_REQUEST + ,.raw= "CONNECT home_0.netscape.com:443 HTTP/1.0\r\n" + "User-agent: Mozilla/1.1N\r\n" + "Proxy-authorization: basic aGVsbG86d29ybGQ=\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.method= HTTP_CONNECT + ,.query_string= "" + ,.fragment= "" + ,.request_path= "" + ,.request_url= "home_0.netscape.com:443" + ,.num_headers= 2 + ,.upgrade="" + ,.headers= { { "User-agent", "Mozilla/1.1N" } + , { "Proxy-authorization", "basic aGVsbG86d29ybGQ=" } + } + ,.body= "" + } +#endif /* !HTTP_PARSER_STRICT */ + +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_NO_CONNECTION_CLOSE 28 +, {.name = "eat CRLF between requests, no \"Connection: close\" header" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 3 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + } + ,.body= "q=42" + } + +/* see https://github.com/ry/http-parser/issues/47 */ +#define EAT_TRAILING_CRLF_WITH_CONNECTION_CLOSE 29 +, {.name = "eat CRLF between requests even if \"Connection: close\" is set" + ,.raw= "POST / HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 4\r\n" + "Connection: close\r\n" + "\r\n" + "q=42\r\n" /* note the trailing CRLF */ + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE /* input buffer isn't empty when on_message_complete is called */ + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_POST + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/" + ,.request_url= "/" + ,.num_headers= 4 + ,.upgrade= 0 + ,.headers= { { "Host", "www.example.com" } + , { "Content-Type", "application/x-www-form-urlencoded" } + , { "Content-Length", "4" } + , { "Connection", "close" } + } + ,.body= "q=42" + } + +#define PURGE_REQ 30 +, {.name = "PURGE request" + ,.type= HTTP_REQUEST + ,.raw= "PURGE /file.txt HTTP/1.1\r\n" + "Host: www.example.com\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.method= HTTP_PURGE + ,.query_string= "" + ,.fragment= "" + ,.request_path= "/file.txt" + ,.request_url= "/file.txt" + ,.num_headers= 1 + ,.headers= { { "Host", "www.example.com" } } + ,.body= "" + } + +, {.name= NULL } /* sentinel */ +}; + +/* * R E S P O N S E S * */ +const struct message responses[] = +#define GOOGLE_301 0 +{ {.name= "google 301" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 301 Moved Permanently\r\n" + "Location: http://www.google.com/\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Date: Sun, 26 Apr 2009 11:11:49 GMT\r\n" + "Expires: Tue, 26 May 2009 11:11:49 GMT\r\n" + "X-$PrototypeBI-Version: 1.6.0.3\r\n" /* $ char in header field */ + "Cache-Control: public, max-age=2592000\r\n" + "Server: gws\r\n" + "Content-Length: 219 \r\n" + "\r\n" + "\n" + "301 Moved\n" + "

                301 Moved

                \n" + "The document has moved\n" + "here.\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 301 + ,.num_headers= 8 + ,.headers= + { { "Location", "http://www.google.com/" } + , { "Content-Type", "text/html; charset=UTF-8" } + , { "Date", "Sun, 26 Apr 2009 11:11:49 GMT" } + , { "Expires", "Tue, 26 May 2009 11:11:49 GMT" } + , { "X-$PrototypeBI-Version", "1.6.0.3" } + , { "Cache-Control", "public, max-age=2592000" } + , { "Server", "gws" } + , { "Content-Length", "219 " } + } + ,.body= "\n" + "301 Moved\n" + "

                301 Moved

                \n" + "The document has moved\n" + "here.\r\n" + "\r\n" + } + +#define NO_CONTENT_LENGTH_RESPONSE 1 +/* The client should wait for the server's EOF. That is, when content-length + * is not specified, and "Connection: close", the end of body is specified + * by the EOF. + * Compare with APACHEBENCH_GET + */ +, {.name= "no content-length response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Date: Tue, 04 Aug 2009 07:59:32 GMT\r\n" + "Server: Apache\r\n" + "X-Powered-By: Servlet/2.5 JSP/2.1\r\n" + "Content-Type: text/xml; charset=utf-8\r\n" + "Connection: close\r\n" + "\r\n" + "\n" + "\n" + " \n" + " \n" + " SOAP-ENV:Client\n" + " Client Error\n" + " \n" + " \n" + "" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 5 + ,.headers= + { { "Date", "Tue, 04 Aug 2009 07:59:32 GMT" } + , { "Server", "Apache" } + , { "X-Powered-By", "Servlet/2.5 JSP/2.1" } + , { "Content-Type", "text/xml; charset=utf-8" } + , { "Connection", "close" } + } + ,.body= "\n" + "\n" + " \n" + " \n" + " SOAP-ENV:Client\n" + " Client Error\n" + " \n" + " \n" + "" + } + +#define NO_HEADERS_NO_BODY_404 2 +, {.name= "404 no headers no body" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 404 Not Found\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 404 + ,.num_headers= 0 + ,.headers= {} + ,.body_size= 0 + ,.body= "" + } + +#define NO_REASON_PHRASE 3 +, {.name= "301 no response phrase" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 301\r\n\r\n" + ,.should_keep_alive = FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 301 + ,.num_headers= 0 + ,.headers= {} + ,.body= "" + } + +#define TRAILING_SPACE_ON_CHUNKED_BODY 4 +, {.name="200 trailing space on chunked body" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "25 \r\n" + "This is the data in the first chunk\r\n" + "\r\n" + "1C\r\n" + "and this is the second one\r\n" + "\r\n" + "0 \r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { {"Content-Type", "text/plain" } + , {"Transfer-Encoding", "chunked" } + } + ,.body_size = 37+28 + ,.body = + "This is the data in the first chunk\r\n" + "and this is the second one\r\n" + + } + +#define NO_CARRIAGE_RET 5 +, {.name="no carriage ret" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\n" + "Content-Type: text/html; charset=utf-8\n" + "Connection: close\n" + "\n" + "these headers are from http://news.ycombinator.com/" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { {"Content-Type", "text/html; charset=utf-8" } + , {"Connection", "close" } + } + ,.body= "these headers are from http://news.ycombinator.com/" + } + +#define PROXY_CONNECTION 6 +, {.name="proxy connection" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Content-Length: 11\r\n" + "Proxy-Connection: close\r\n" + "Date: Thu, 31 Dec 2009 20:55:48 +0000\r\n" + "\r\n" + "hello world" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 4 + ,.headers= + { {"Content-Type", "text/html; charset=UTF-8" } + , {"Content-Length", "11" } + , {"Proxy-Connection", "close" } + , {"Date", "Thu, 31 Dec 2009 20:55:48 +0000"} + } + ,.body= "hello world" + } + +#define UNDERSTORE_HEADER_KEY 7 + // shown by + // curl -o /dev/null -v "http://ad.doubleclick.net/pfadx/DARTSHELLCONFIGXML;dcmt=text/xml;" +, {.name="underscore header key" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Server: DCLK-AdSvr\r\n" + "Content-Type: text/xml\r\n" + "Content-Length: 0\r\n" + "DCLK_imp: v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o\r\n\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 4 + ,.headers= + { {"Server", "DCLK-AdSvr" } + , {"Content-Type", "text/xml" } + , {"Content-Length", "0" } + , {"DCLK_imp", "v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o" } + } + ,.body= "" + } + +#define BONJOUR_MADAME_FR 8 +/* The client should not merge two headers fields when the first one doesn't + * have a value. + */ +, {.name= "bonjourmadame.fr" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 301 Moved Permanently\r\n" + "Date: Thu, 03 Jun 2010 09:56:32 GMT\r\n" + "Server: Apache/2.2.3 (Red Hat)\r\n" + "Cache-Control: public\r\n" + "Pragma: \r\n" + "Location: http://www.bonjourmadame.fr/\r\n" + "Vary: Accept-Encoding\r\n" + "Content-Length: 0\r\n" + "Content-Type: text/html; charset=UTF-8\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 301 + ,.num_headers= 9 + ,.headers= + { { "Date", "Thu, 03 Jun 2010 09:56:32 GMT" } + , { "Server", "Apache/2.2.3 (Red Hat)" } + , { "Cache-Control", "public" } + , { "Pragma", "" } + , { "Location", "http://www.bonjourmadame.fr/" } + , { "Vary", "Accept-Encoding" } + , { "Content-Length", "0" } + , { "Content-Type", "text/html; charset=UTF-8" } + , { "Connection", "keep-alive" } + } + ,.body= "" + } + +#define RES_FIELD_UNDERSCORE 9 +/* Should handle spaces in header fields */ +, {.name= "field underscore" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Date: Tue, 28 Sep 2010 01:14:13 GMT\r\n" + "Server: Apache\r\n" + "Cache-Control: no-cache, must-revalidate\r\n" + "Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n" + ".et-Cookie: PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com\r\n" + "Vary: Accept-Encoding\r\n" + "_eep-Alive: timeout=45\r\n" /* semantic value ignored */ + "_onnection: Keep-Alive\r\n" /* semantic value ignored */ + "Transfer-Encoding: chunked\r\n" + "Content-Type: text/html\r\n" + "Connection: close\r\n" + "\r\n" + "0\r\n\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 11 + ,.headers= + { { "Date", "Tue, 28 Sep 2010 01:14:13 GMT" } + , { "Server", "Apache" } + , { "Cache-Control", "no-cache, must-revalidate" } + , { "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" } + , { ".et-Cookie", "PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com" } + , { "Vary", "Accept-Encoding" } + , { "_eep-Alive", "timeout=45" } + , { "_onnection", "Keep-Alive" } + , { "Transfer-Encoding", "chunked" } + , { "Content-Type", "text/html" } + , { "Connection", "close" } + } + ,.body= "" + } + +#define NON_ASCII_IN_STATUS_LINE 10 +/* Should handle non-ASCII in status line */ +, {.name= "non-ASCII in status line" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 500 Oriëntatieprobleem\r\n" + "Date: Fri, 5 Nov 2010 23:07:12 GMT+2\r\n" + "Content-Length: 0\r\n" + "Connection: close\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 500 + ,.num_headers= 3 + ,.headers= + { { "Date", "Fri, 5 Nov 2010 23:07:12 GMT+2" } + , { "Content-Length", "0" } + , { "Connection", "close" } + } + ,.body= "" + } + +#define HTTP_VERSION_0_9 11 +/* Should handle HTTP/0.9 */ +, {.name= "http version 0.9" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/0.9 200 OK\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 0 + ,.http_minor= 9 + ,.status_code= 200 + ,.num_headers= 0 + ,.headers= + {} + ,.body= "" + } + +#define NO_CONTENT_LENGTH_NO_TRANSFER_ENCODING_RESPONSE 12 +/* The client should wait for the server's EOF. That is, when neither + * content-length nor transfer-encoding is specified, the end of body + * is specified by the EOF. + */ +, {.name= "neither content-length nor transfer-encoding response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + "hello world" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Content-Type", "text/plain" } + } + ,.body= "hello world" + } + +#define NO_BODY_HTTP10_KA_200 13 +, {.name= "HTTP/1.0 with keep-alive and EOF-terminated 200 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 200 OK\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Connection", "keep-alive" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP10_KA_204 14 +, {.name= "HTTP/1.0 with keep-alive and a 204 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.0 204 No content\r\n" + "Connection: keep-alive\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 204 + ,.num_headers= 1 + ,.headers= + { { "Connection", "keep-alive" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_200 15 +, {.name= "HTTP/1.1 with an EOF-terminated 200 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= TRUE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 0 + ,.headers={} + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_204 16 +, {.name= "HTTP/1.1 with a 204 status" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 204 No content\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 204 + ,.num_headers= 0 + ,.headers={} + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_NOKA_204 17 +, {.name= "HTTP/1.1 with a 204 status and keep-alive disabled" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 204 No content\r\n" + "Connection: close\r\n" + "\r\n" + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 204 + ,.num_headers= 1 + ,.headers= + { { "Connection", "close" } + } + ,.body_size= 0 + ,.body= "" + } + +#define NO_BODY_HTTP11_KA_CHUNKED_200 18 +, {.name= "HTTP/1.1 with chunked endocing and a 200 response" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n" + "0\r\n" + "\r\n" + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 1 + ,.headers= + { { "Transfer-Encoding", "chunked" } + } + ,.body_size= 0 + ,.body= "" + } + +#if !HTTP_PARSER_STRICT +#define SPACE_IN_FIELD_RES 19 +/* Should handle spaces in header fields */ +, {.name= "field space" + ,.type= HTTP_RESPONSE + ,.raw= "HTTP/1.1 200 OK\r\n" + "Server: Microsoft-IIS/6.0\r\n" + "X-Powered-By: ASP.NET\r\n" + "en-US Content-Type: text/xml\r\n" /* this is the problem */ + "Content-Type: text/xml\r\n" + "Content-Length: 16\r\n" + "Date: Fri, 23 Jul 2010 18:45:38 GMT\r\n" + "Connection: keep-alive\r\n" + "\r\n" + "hello" /* fake body */ + ,.should_keep_alive= TRUE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 1 + ,.status_code= 200 + ,.num_headers= 7 + ,.headers= + { { "Server", "Microsoft-IIS/6.0" } + , { "X-Powered-By", "ASP.NET" } + , { "en-US Content-Type", "text/xml" } + , { "Content-Type", "text/xml" } + , { "Content-Length", "16" } + , { "Date", "Fri, 23 Jul 2010 18:45:38 GMT" } + , { "Connection", "keep-alive" } + } + ,.body= "hello" + } +#endif /* !HTTP_PARSER_STRICT */ + +, {.name= NULL } /* sentinel */ +}; + +int +request_url_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + strncat(messages[num_messages].request_url, buf, len); + return 0; +} + +int +header_field_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + struct message *m = &messages[num_messages]; + + if (m->last_header_element != FIELD) + m->num_headers++; + + strncat(m->headers[m->num_headers-1][0], buf, len); + + m->last_header_element = FIELD; + + return 0; +} + +int +header_value_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + struct message *m = &messages[num_messages]; + + strncat(m->headers[m->num_headers-1][1], buf, len); + + m->last_header_element = VALUE; + + return 0; +} + +int +body_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + strncat(messages[num_messages].body, buf, len); + messages[num_messages].body_size += len; + // printf("body_cb: '%s'\n", requests[num_messages].body); + return 0; +} + +int +count_body_cb (http_parser *p, const char *buf, size_t len) +{ + assert(p == parser); + assert(buf); + messages[num_messages].body_size += len; + return 0; +} + +int +message_begin_cb (http_parser *p) +{ + assert(p == parser); + messages[num_messages].message_begin_cb_called = TRUE; + return 0; +} + +int +headers_complete_cb (http_parser *p) +{ + assert(p == parser); + messages[num_messages].method = parser->method; + messages[num_messages].status_code = parser->status_code; + messages[num_messages].http_major = parser->http_major; + messages[num_messages].http_minor = parser->http_minor; + messages[num_messages].headers_complete_cb_called = TRUE; + messages[num_messages].should_keep_alive = http_should_keep_alive(parser); + return 0; +} + +int +message_complete_cb (http_parser *p) +{ + assert(p == parser); + if (messages[num_messages].should_keep_alive != http_should_keep_alive(parser)) + { + fprintf(stderr, "\n\n *** Error http_should_keep_alive() should have same " + "value in both on_message_complete and on_headers_complete " + "but it doesn't! ***\n\n"); + assert(0); + exit(1); + } + messages[num_messages].message_complete_cb_called = TRUE; + + messages[num_messages].message_complete_on_eof = currently_parsing_eof; + + num_messages++; + return 0; +} + +/* These dontcall_* callbacks exist so that we can verify that when we're + * paused, no additional callbacks are invoked */ +int +dontcall_message_begin_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_message_begin() called on paused parser ***\n\n"); + exit(1); +} + +int +dontcall_header_field_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_header_field() called on paused parser ***\n\n"); + exit(1); +} + +int +dontcall_header_value_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_header_value() called on paused parser ***\n\n"); + exit(1); +} + +int +dontcall_request_url_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_request_url() called on paused parser ***\n\n"); + exit(1); +} + +int +dontcall_body_cb (http_parser *p, const char *buf, size_t len) +{ + if (p || buf || len) { } // gcc + fprintf(stderr, "\n\n*** on_body_cb() called on paused parser ***\n\n"); + exit(1); +} + +int +dontcall_headers_complete_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_headers_complete() called on paused " + "parser ***\n\n"); + exit(1); +} + +int +dontcall_message_complete_cb (http_parser *p) +{ + if (p) { } // gcc + fprintf(stderr, "\n\n*** on_message_complete() called on paused " + "parser ***\n\n"); + exit(1); +} + +static http_parser_settings settings_dontcall = + {.on_message_begin = dontcall_message_begin_cb + ,.on_header_field = dontcall_header_field_cb + ,.on_header_value = dontcall_header_value_cb + ,.on_url = dontcall_request_url_cb + ,.on_body = dontcall_body_cb + ,.on_headers_complete = dontcall_headers_complete_cb + ,.on_message_complete = dontcall_message_complete_cb + }; + +/* These pause_* callbacks always pause the parser and just invoke the regular + * callback that tracks content. Before returning, we overwrite the parser + * settings to point to the _dontcall variety so that we can verify that + * the pause actually did, you know, pause. */ +int +pause_message_begin_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return message_begin_cb(p); +} + +int +pause_header_field_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return header_field_cb(p, buf, len); +} + +int +pause_header_value_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return header_value_cb(p, buf, len); +} + +int +pause_request_url_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return request_url_cb(p, buf, len); +} + +int +pause_body_cb (http_parser *p, const char *buf, size_t len) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return body_cb(p, buf, len); +} + +int +pause_headers_complete_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return headers_complete_cb(p); +} + +int +pause_message_complete_cb (http_parser *p) +{ + http_parser_pause(p, 1); + *current_pause_parser = settings_dontcall; + return message_complete_cb(p); +} + +static http_parser_settings settings_pause = + {.on_message_begin = pause_message_begin_cb + ,.on_header_field = pause_header_field_cb + ,.on_header_value = pause_header_value_cb + ,.on_url = pause_request_url_cb + ,.on_body = pause_body_cb + ,.on_headers_complete = pause_headers_complete_cb + ,.on_message_complete = pause_message_complete_cb + }; + +static http_parser_settings settings = + {.on_message_begin = message_begin_cb + ,.on_header_field = header_field_cb + ,.on_header_value = header_value_cb + ,.on_url = request_url_cb + ,.on_body = body_cb + ,.on_headers_complete = headers_complete_cb + ,.on_message_complete = message_complete_cb + }; + +static http_parser_settings settings_count_body = + {.on_message_begin = message_begin_cb + ,.on_header_field = header_field_cb + ,.on_header_value = header_value_cb + ,.on_url = request_url_cb + ,.on_body = count_body_cb + ,.on_headers_complete = headers_complete_cb + ,.on_message_complete = message_complete_cb + }; + +static http_parser_settings settings_null = + {.on_message_begin = 0 + ,.on_header_field = 0 + ,.on_header_value = 0 + ,.on_url = 0 + ,.on_body = 0 + ,.on_headers_complete = 0 + ,.on_message_complete = 0 + }; + +void +parser_init (enum http_parser_type type) +{ + num_messages = 0; + + assert(parser == NULL); + + parser = malloc(sizeof(http_parser)); + + http_parser_init(parser, type); + + memset(&messages, 0, sizeof messages); + +} + +void +parser_free () +{ + assert(parser); + free(parser); + parser = NULL; +} + +size_t parse (const char *buf, size_t len) +{ + size_t nparsed; + currently_parsing_eof = (len == 0); + nparsed = http_parser_execute(parser, &settings, buf, len); + return nparsed; +} + +size_t parse_count_body (const char *buf, size_t len) +{ + size_t nparsed; + currently_parsing_eof = (len == 0); + nparsed = http_parser_execute(parser, &settings_count_body, buf, len); + return nparsed; +} + +size_t parse_pause (const char *buf, size_t len) +{ + size_t nparsed; + http_parser_settings s = settings_pause; + + currently_parsing_eof = (len == 0); + current_pause_parser = &s; + nparsed = http_parser_execute(parser, current_pause_parser, buf, len); + return nparsed; +} + +static inline int +check_str_eq (const struct message *m, + const char *prop, + const char *expected, + const char *found) { + if ((expected == NULL) != (found == NULL)) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected %s\n", (expected == NULL) ? "NULL" : expected); + printf(" found %s\n", (found == NULL) ? "NULL" : found); + return 0; + } + if (expected != NULL && 0 != strcmp(expected, found)) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected '%s'\n", expected); + printf(" found '%s'\n", found); + return 0; + } + return 1; +} + +static inline int +check_num_eq (const struct message *m, + const char *prop, + int expected, + int found) { + if (expected != found) { + printf("\n*** Error: %s in '%s' ***\n\n", prop, m->name); + printf("expected %d\n", expected); + printf(" found %d\n", found); + return 0; + } + return 1; +} + +#define MESSAGE_CHECK_STR_EQ(expected, found, prop) \ + if (!check_str_eq(expected, #prop, expected->prop, found->prop)) return 0 + +#define MESSAGE_CHECK_NUM_EQ(expected, found, prop) \ + if (!check_num_eq(expected, #prop, expected->prop, found->prop)) return 0 + +#define MESSAGE_CHECK_URL_EQ(u, expected, found, prop, fn) \ +do { \ + char ubuf[256]; \ + \ + if ((u)->field_set & (1 << (fn))) { \ + memcpy(ubuf, (found)->request_url + (u)->field_data[(fn)].off, \ + (u)->field_data[(fn)].len); \ + ubuf[(u)->field_data[(fn)].len] = '\0'; \ + } else { \ + ubuf[0] = '\0'; \ + } \ + \ + check_str_eq(expected, #prop, expected->prop, ubuf); \ +} while(0) + +int +message_eq (int index, const struct message *expected) +{ + int i; + struct message *m = &messages[index]; + + MESSAGE_CHECK_NUM_EQ(expected, m, http_major); + MESSAGE_CHECK_NUM_EQ(expected, m, http_minor); + + if (expected->type == HTTP_REQUEST) { + MESSAGE_CHECK_NUM_EQ(expected, m, method); + } else { + MESSAGE_CHECK_NUM_EQ(expected, m, status_code); + } + + MESSAGE_CHECK_NUM_EQ(expected, m, should_keep_alive); + MESSAGE_CHECK_NUM_EQ(expected, m, message_complete_on_eof); + + assert(m->message_begin_cb_called); + assert(m->headers_complete_cb_called); + assert(m->message_complete_cb_called); + + + MESSAGE_CHECK_STR_EQ(expected, m, request_url); + + /* Check URL components; we can't do this w/ CONNECT since it doesn't + * send us a well-formed URL. + */ + if (*m->request_url && m->method != HTTP_CONNECT) { + struct http_parser_url u; + + if (http_parser_parse_url(m->request_url, strlen(m->request_url), 0, &u)) { + fprintf(stderr, "\n\n*** failed to parse URL %s ***\n\n", + m->request_url); + exit(1); + } + + m->port = (u.field_set & (1 << UF_PORT)) ? + u.port : 0; + + MESSAGE_CHECK_URL_EQ(&u, expected, m, query_string, UF_QUERY); + MESSAGE_CHECK_URL_EQ(&u, expected, m, fragment, UF_FRAGMENT); + MESSAGE_CHECK_URL_EQ(&u, expected, m, request_path, UF_PATH); + MESSAGE_CHECK_NUM_EQ(expected, m, port); + } + + if (expected->body_size) { + MESSAGE_CHECK_NUM_EQ(expected, m, body_size); + } else { + MESSAGE_CHECK_STR_EQ(expected, m, body); + } + + MESSAGE_CHECK_NUM_EQ(expected, m, num_headers); + + int r; + for (i = 0; i < m->num_headers; i++) { + r = check_str_eq(expected, "header field", expected->headers[i][0], m->headers[i][0]); + if (!r) return 0; + r = check_str_eq(expected, "header value", expected->headers[i][1], m->headers[i][1]); + if (!r) return 0; + } + + MESSAGE_CHECK_STR_EQ(expected, m, upgrade); + + return 1; +} + +/* Given a sequence of varargs messages, return the number of them that the + * parser should successfully parse, taking into account that upgraded + * messages prevent all subsequent messages from being parsed. + */ +size_t +count_parsed_messages(const size_t nmsgs, ...) { + size_t i; + va_list ap; + + va_start(ap, nmsgs); + + for (i = 0; i < nmsgs; i++) { + struct message *m = va_arg(ap, struct message *); + + if (m->upgrade) { + va_end(ap); + return i + 1; + } + } + + va_end(ap); + return nmsgs; +} + +/* Given a sequence of bytes and the number of these that we were able to + * parse, verify that upgrade bodies are correct. + */ +void +upgrade_message_fix(char *body, const size_t nread, const size_t nmsgs, ...) { + va_list ap; + size_t i; + size_t off = 0; + + va_start(ap, nmsgs); + + for (i = 0; i < nmsgs; i++) { + struct message *m = va_arg(ap, struct message *); + + off += strlen(m->raw); + + if (m->upgrade) { + off -= strlen(m->upgrade); + + /* Check the portion of the response after its specified upgrade */ + if (!check_str_eq(m, "upgrade", body + off, body + nread)) { + exit(1); + } + + /* Fix up the response so that message_eq() will verify the beginning + * of the upgrade */ + *(body + nread + strlen(m->upgrade)) = '\0'; + messages[num_messages -1 ].upgrade = body + nread; + + va_end(ap); + return; + } + } + + va_end(ap); + printf("\n\n*** Error: expected a message with upgrade ***\n"); + + exit(1); +} + +static void +print_error (const char *raw, size_t error_location) +{ + fprintf(stderr, "\n*** %s:%d -- %s ***\n\n", + "http_parser.c", HTTP_PARSER_ERRNO_LINE(parser), + http_errno_description(HTTP_PARSER_ERRNO(parser))); + + int this_line = 0, char_len = 0; + size_t i, j, len = strlen(raw), error_location_line = 0; + for (i = 0; i < len; i++) { + if (i == error_location) this_line = 1; + switch (raw[i]) { + case '\r': + char_len = 2; + fprintf(stderr, "\\r"); + break; + + case '\n': + char_len = 2; + fprintf(stderr, "\\n\n"); + + if (this_line) goto print; + + error_location_line = 0; + continue; + + default: + char_len = 1; + fputc(raw[i], stderr); + break; + } + if (!this_line) error_location_line += char_len; + } + + fprintf(stderr, "[eof]\n"); + + print: + for (j = 0; j < error_location_line; j++) { + fputc(' ', stderr); + } + fprintf(stderr, "^\n\nerror location: %u\n", (unsigned int)error_location); +} + +void +test_preserve_data (void) +{ + char my_data[] = "application-specific data"; + http_parser parser; + parser.data = my_data; + http_parser_init(&parser, HTTP_REQUEST); + if (parser.data != my_data) { + printf("\n*** parser.data not preserved accross http_parser_init ***\n\n"); + exit(1); + } +} + +struct url_test { + const char *name; + const char *url; + int is_connect; + struct http_parser_url u; + int rv; +}; + +const struct url_test url_tests[] = +{ {.name="proxy request" + ,.url="http://hostname/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PATH) + ,.port=0 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 7, 8 } /* UF_HOST */ + ,{ 0, 0 } /* UF_PORT */ + ,{ 15, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + } + } + ,.rv=0 + } + +, {.name="CONNECT request" + ,.url="hostname:443" + ,.is_connect=1 + ,.u= + {.field_set=(1 << UF_HOST) | (1 << UF_PORT) + ,.port=443 + ,.field_data= + {{ 0, 0 } /* UF_SCHEMA */ + ,{ 0, 8 } /* UF_HOST */ + ,{ 9, 3 } /* UF_PORT */ + ,{ 0, 0 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + } + } + ,.rv=0 + } + +, {.name="proxy ipv6 request" + ,.url="http://[1:2::3:4]/" + ,.is_connect=0 + ,.u= + {.field_set=(1 << UF_SCHEMA) | (1 << UF_HOST) | (1 << UF_PATH) + ,.port=0 + ,.field_data= + {{ 0, 4 } /* UF_SCHEMA */ + ,{ 8, 8 } /* UF_HOST */ + ,{ 0, 0 } /* UF_PORT */ + ,{ 17, 1 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + } + } + ,.rv=0 + } + +, {.name="CONNECT ipv6 address" + ,.url="[1:2::3:4]:443" + ,.is_connect=1 + ,.u= + {.field_set=(1 << UF_HOST) | (1 << UF_PORT) + ,.port=443 + ,.field_data= + {{ 0, 0 } /* UF_SCHEMA */ + ,{ 1, 8 } /* UF_HOST */ + ,{ 11, 3 } /* UF_PORT */ + ,{ 0, 0 } /* UF_PATH */ + ,{ 0, 0 } /* UF_QUERY */ + ,{ 0, 0 } /* UF_FRAGMENT */ + } + } + ,.rv=0 + } + +, {.name="extra ? in query string" + ,.url="http://a.tbcdn.cn/p/fp/2010c/??fp-header-min.css,fp-base-min.css,fp-channel-min.css,fp-product-min.css,fp-mall-min.css,fp-category-min.css,fp-sub-min.css,fp-gdp4p-min.css,fp-css3-min.css,fp-misc-min.css?t=20101022.css" + ,.is_connect=0 + ,.u= + {.field_set=(1<field_set, u->port); + for (i = 0; i < UF_MAX; i++) { + if ((u->field_set & (1 << i)) == 0) { + printf("\tfield_data[%u]: unset\n", i); + continue; + } + + memcpy(part, url + u->field_data[i].off, u->field_data[i].len); + part[u->field_data[i].len] = '\0'; + + printf("\tfield_data[%u]: off: %u len: %u part: \"%s\"\n", + i, + u->field_data[i].off, + u->field_data[i].len, + part); + } +} + +void +test_parse_url (void) +{ + struct http_parser_url u; + const struct url_test *test; + unsigned int i; + int rv; + + for (i = 0; i < (sizeof(url_tests) / sizeof(url_tests[0])); i++) { + test = &url_tests[i]; + memset(&u, 0, sizeof(u)); + + rv = http_parser_parse_url(test->url, + strlen(test->url), + test->is_connect, + &u); + + if (test->rv == 0) { + if (rv != 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" test failed, " + "unexpected rv %d ***\n\n", test->url, test->name, rv); + exit(1); + } + + if (memcmp(&u, &test->u, sizeof(u)) != 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" failed ***\n", + test->url, test->name); + + printf("target http_parser_url:\n"); + dump_url(test->url, &test->u); + printf("result http_parser_url:\n"); + dump_url(test->url, &u); + + exit(1); + } + } else { + /* test->rv != 0 */ + if (rv == 0) { + printf("\n*** http_parser_parse_url(\"%s\") \"%s\" test failed, " + "unexpected rv %d ***\n\n", test->url, test->name, rv); + exit(1); + } + } + } +} + +void +test_message (const struct message *message) +{ + size_t raw_len = strlen(message->raw); + size_t msg1len; + for (msg1len = 0; msg1len < raw_len; msg1len++) { + parser_init(message->type); + + size_t read; + const char *msg1 = message->raw; + const char *msg2 = msg1 + msg1len; + size_t msg2len = raw_len - msg1len; + + if (msg1len) { + read = parse(msg1, msg1len); + + if (message->upgrade && parser->upgrade) { + messages[num_messages - 1].upgrade = msg1 + read; + goto test; + } + + if (read != msg1len) { + print_error(msg1, read); + exit(1); + } + } + + + read = parse(msg2, msg2len); + + if (message->upgrade && parser->upgrade) { + messages[num_messages - 1].upgrade = msg2 + read; + goto test; + } + + if (read != msg2len) { + print_error(msg2, read); + exit(1); + } + + read = parse(NULL, 0); + + if (read != 0) { + print_error(message->raw, read); + exit(1); + } + + test: + + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name); + exit(1); + } + + if(!message_eq(0, message)) exit(1); + + parser_free(); + } +} + +void +test_message_count_body (const struct message *message) +{ + parser_init(message->type); + + size_t read; + size_t l = strlen(message->raw); + size_t i, toread; + size_t chunk = 4024; + + for (i = 0; i < l; i+= chunk) { + toread = MIN(l-i, chunk); + read = parse_count_body(message->raw + i, toread); + if (read != toread) { + print_error(message->raw, read); + exit(1); + } + } + + + read = parse_count_body(NULL, 0); + if (read != 0) { + print_error(message->raw, read); + exit(1); + } + + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name); + exit(1); + } + + if(!message_eq(0, message)) exit(1); + + parser_free(); +} + +void +test_simple (const char *buf, enum http_errno err_expected) +{ + parser_init(HTTP_REQUEST); + + size_t parsed; + int pass; + enum http_errno err; + + parsed = parse(buf, strlen(buf)); + pass = (parsed == strlen(buf)); + err = HTTP_PARSER_ERRNO(parser); + parsed = parse(NULL, 0); + pass &= (parsed == 0); + + parser_free(); + + /* In strict mode, allow us to pass with an unexpected HPE_STRICT as + * long as the caller isn't expecting success. + */ +#if HTTP_PARSER_STRICT + if (err_expected != err && err_expected != HPE_OK && err != HPE_STRICT) { +#else + if (err_expected != err) { +#endif + fprintf(stderr, "\n*** test_simple expected %s, but saw %s ***\n\n%s\n", + http_errno_name(err_expected), http_errno_name(err), buf); + exit(1); + } +} + +void +test_header_overflow_error (int req) +{ + http_parser parser; + http_parser_init(&parser, req ? HTTP_REQUEST : HTTP_RESPONSE); + size_t parsed; + const char *buf; + buf = req ? "GET / HTTP/1.1\r\n" : "HTTP/1.0 200 OK\r\n"; + parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf)); + assert(parsed == strlen(buf)); + + buf = "header-key: header-value\r\n"; + size_t buflen = strlen(buf); + + int i; + for (i = 0; i < 10000; i++) { + parsed = http_parser_execute(&parser, &settings_null, buf, buflen); + if (parsed != buflen) { + //fprintf(stderr, "error found on iter %d\n", i); + assert(HTTP_PARSER_ERRNO(&parser) == HPE_HEADER_OVERFLOW); + return; + } + } + + fprintf(stderr, "\n*** Error expected but none in header overflow test ***\n"); + exit(1); +} + +static void +test_content_length_overflow (const char *buf, size_t buflen, int expect_ok) +{ + http_parser parser; + http_parser_init(&parser, HTTP_RESPONSE); + http_parser_execute(&parser, &settings_null, buf, buflen); + + if (expect_ok) + assert(HTTP_PARSER_ERRNO(&parser) == HPE_OK); + else + assert(HTTP_PARSER_ERRNO(&parser) == HPE_INVALID_CONTENT_LENGTH); +} + +void +test_header_content_length_overflow_error (void) +{ +#define X(size) \ + "HTTP/1.1 200 OK\r\n" \ + "Content-Length: " #size "\r\n" \ + "\r\n" + const char a[] = X(18446744073709551614); /* 2^64-2 */ + const char b[] = X(18446744073709551615); /* 2^64-1 */ + const char c[] = X(18446744073709551616); /* 2^64 */ +#undef X + test_content_length_overflow(a, sizeof(a) - 1, 1); /* expect ok */ + test_content_length_overflow(b, sizeof(b) - 1, 0); /* expect failure */ + test_content_length_overflow(c, sizeof(c) - 1, 0); /* expect failure */ +} + +void +test_chunk_content_length_overflow_error (void) +{ +#define X(size) \ + "HTTP/1.1 200 OK\r\n" \ + "Transfer-Encoding: chunked\r\n" \ + "\r\n" \ + #size "\r\n" \ + "..." + const char a[] = X(FFFFFFFFFFFFFFFE); /* 2^64-2 */ + const char b[] = X(FFFFFFFFFFFFFFFF); /* 2^64-1 */ + const char c[] = X(10000000000000000); /* 2^64 */ +#undef X + test_content_length_overflow(a, sizeof(a) - 1, 1); /* expect ok */ + test_content_length_overflow(b, sizeof(b) - 1, 0); /* expect failure */ + test_content_length_overflow(c, sizeof(c) - 1, 0); /* expect failure */ +} + +void +test_no_overflow_long_body (int req, size_t length) +{ + http_parser parser; + http_parser_init(&parser, req ? HTTP_REQUEST : HTTP_RESPONSE); + size_t parsed; + size_t i; + char buf1[3000]; + size_t buf1len = sprintf(buf1, "%s\r\nConnection: Keep-Alive\r\nContent-Length: %zu\r\n\r\n", + req ? "POST / HTTP/1.0" : "HTTP/1.0 200 OK", length); + parsed = http_parser_execute(&parser, &settings_null, buf1, buf1len); + if (parsed != buf1len) + goto err; + + for (i = 0; i < length; i++) { + char foo = 'a'; + parsed = http_parser_execute(&parser, &settings_null, &foo, 1); + if (parsed != 1) + goto err; + } + + parsed = http_parser_execute(&parser, &settings_null, buf1, buf1len); + if (parsed != buf1len) goto err; + return; + + err: + fprintf(stderr, + "\n*** error in test_no_overflow_long_body %s of length %zu ***\n", + req ? "REQUEST" : "RESPONSE", + length); + exit(1); +} + +void +test_multiple3 (const struct message *r1, const struct message *r2, const struct message *r3) +{ + int message_count = count_parsed_messages(3, r1, r2, r3); + + char total[ strlen(r1->raw) + + strlen(r2->raw) + + strlen(r3->raw) + + 1 + ]; + total[0] = '\0'; + + strcat(total, r1->raw); + strcat(total, r2->raw); + strcat(total, r3->raw); + + parser_init(r1->type); + + size_t read; + + read = parse(total, strlen(total)); + + if (parser->upgrade) { + upgrade_message_fix(total, read, 3, r1, r2, r3); + goto test; + } + + if (read != strlen(total)) { + print_error(total, read); + exit(1); + } + + read = parse(NULL, 0); + + if (read != 0) { + print_error(total, read); + exit(1); + } + +test: + + if (message_count != num_messages) { + fprintf(stderr, "\n\n*** Parser didn't see 3 messages only %d *** \n", num_messages); + exit(1); + } + + if (!message_eq(0, r1)) exit(1); + if (message_count > 1 && !message_eq(1, r2)) exit(1); + if (message_count > 2 && !message_eq(2, r3)) exit(1); + + parser_free(); +} + +/* SCAN through every possible breaking to make sure the + * parser can handle getting the content in any chunks that + * might come from the socket + */ +void +test_scan (const struct message *r1, const struct message *r2, const struct message *r3) +{ + char total[80*1024] = "\0"; + char buf1[80*1024] = "\0"; + char buf2[80*1024] = "\0"; + char buf3[80*1024] = "\0"; + + strcat(total, r1->raw); + strcat(total, r2->raw); + strcat(total, r3->raw); + + size_t read; + + int total_len = strlen(total); + + int total_ops = 2 * (total_len - 1) * (total_len - 2) / 2; + int ops = 0 ; + + size_t buf1_len, buf2_len, buf3_len; + int message_count = count_parsed_messages(3, r1, r2, r3); + + int i,j,type_both; + for (type_both = 0; type_both < 2; type_both ++ ) { + for (j = 2; j < total_len; j ++ ) { + for (i = 1; i < j; i ++ ) { + + if (ops % 1000 == 0) { + printf("\b\b\b\b%3.0f%%", 100 * (float)ops /(float)total_ops); + fflush(stdout); + } + ops += 1; + + parser_init(type_both ? HTTP_BOTH : r1->type); + + buf1_len = i; + strncpy(buf1, total, buf1_len); + buf1[buf1_len] = 0; + + buf2_len = j - i; + strncpy(buf2, total+i, buf2_len); + buf2[buf2_len] = 0; + + buf3_len = total_len - j; + strncpy(buf3, total+j, buf3_len); + buf3[buf3_len] = 0; + + read = parse(buf1, buf1_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len) { + print_error(buf1, read); + goto error; + } + + read += parse(buf2, buf2_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len + buf2_len) { + print_error(buf2, read); + goto error; + } + + read += parse(buf3, buf3_len); + + if (parser->upgrade) goto test; + + if (read != buf1_len + buf2_len + buf3_len) { + print_error(buf3, read); + goto error; + } + + parse(NULL, 0); + +test: + if (parser->upgrade) { + upgrade_message_fix(total, read, 3, r1, r2, r3); + } + + if (message_count != num_messages) { + fprintf(stderr, "\n\nParser didn't see %d messages only %d\n", + message_count, num_messages); + goto error; + } + + if (!message_eq(0, r1)) { + fprintf(stderr, "\n\nError matching messages[0] in test_scan.\n"); + goto error; + } + + if (message_count > 1 && !message_eq(1, r2)) { + fprintf(stderr, "\n\nError matching messages[1] in test_scan.\n"); + goto error; + } + + if (message_count > 2 && !message_eq(2, r3)) { + fprintf(stderr, "\n\nError matching messages[2] in test_scan.\n"); + goto error; + } + + parser_free(); + } + } + } + puts("\b\b\b\b100%"); + return; + + error: + fprintf(stderr, "i=%d j=%d\n", i, j); + fprintf(stderr, "buf1 (%u) %s\n\n", (unsigned int)buf1_len, buf1); + fprintf(stderr, "buf2 (%u) %s\n\n", (unsigned int)buf2_len , buf2); + fprintf(stderr, "buf3 (%u) %s\n", (unsigned int)buf3_len, buf3); + exit(1); +} + +// user required to free the result +// string terminated by \0 +char * +create_large_chunked_message (int body_size_in_kb, const char* headers) +{ + int i; + size_t wrote = 0; + size_t headers_len = strlen(headers); + size_t bufsize = headers_len + (5+1024+2)*body_size_in_kb + 6; + char * buf = malloc(bufsize); + + memcpy(buf, headers, headers_len); + wrote += headers_len; + + for (i = 0; i < body_size_in_kb; i++) { + // write 1kb chunk into the body. + memcpy(buf + wrote, "400\r\n", 5); + wrote += 5; + memset(buf + wrote, 'C', 1024); + wrote += 1024; + strcpy(buf + wrote, "\r\n"); + wrote += 2; + } + + memcpy(buf + wrote, "0\r\n\r\n", 6); + wrote += 6; + assert(wrote == bufsize); + + return buf; +} + +/* Verify that we can pause parsing at any of the bytes in the + * message and still get the result that we're expecting. */ +void +test_message_pause (const struct message *msg) +{ + char *buf = (char*) msg->raw; + size_t buflen = strlen(msg->raw); + size_t nread; + + parser_init(msg->type); + + do { + nread = parse_pause(buf, buflen); + + // We can only set the upgrade buffer once we've gotten our message + // completion callback. + if (messages[0].message_complete_cb_called && + msg->upgrade && + parser->upgrade) { + messages[0].upgrade = buf + nread; + goto test; + } + + if (nread < buflen) { + + // Not much do to if we failed a strict-mode check + if (HTTP_PARSER_ERRNO(parser) == HPE_STRICT) { + parser_free(); + return; + } + + assert (HTTP_PARSER_ERRNO(parser) == HPE_PAUSED); + } + + buf += nread; + buflen -= nread; + http_parser_pause(parser, 0); + } while (buflen > 0); + + nread = parse_pause(NULL, 0); + assert (nread == 0); + +test: + if (num_messages != 1) { + printf("\n*** num_messages != 1 after testing '%s' ***\n\n", msg->name); + exit(1); + } + + if(!message_eq(0, msg)) exit(1); + + parser_free(); +} + +int +main (void) +{ + parser = NULL; + int i, j, k; + int request_count; + int response_count; + + printf("sizeof(http_parser) = %u\n", (unsigned int)sizeof(http_parser)); + + for (request_count = 0; requests[request_count].name; request_count++); + for (response_count = 0; responses[response_count].name; response_count++); + + //// API + test_preserve_data(); + test_parse_url(); + + //// OVERFLOW CONDITIONS + + test_header_overflow_error(HTTP_REQUEST); + test_no_overflow_long_body(HTTP_REQUEST, 1000); + test_no_overflow_long_body(HTTP_REQUEST, 100000); + + test_header_overflow_error(HTTP_RESPONSE); + test_no_overflow_long_body(HTTP_RESPONSE, 1000); + test_no_overflow_long_body(HTTP_RESPONSE, 100000); + + test_header_content_length_overflow_error(); + test_chunk_content_length_overflow_error(); + + //// RESPONSES + + for (i = 0; i < response_count; i++) { + test_message(&responses[i]); + } + + for (i = 0; i < response_count; i++) { + test_message_pause(&responses[i]); + } + + for (i = 0; i < response_count; i++) { + if (!responses[i].should_keep_alive) continue; + for (j = 0; j < response_count; j++) { + if (!responses[j].should_keep_alive) continue; + for (k = 0; k < response_count; k++) { + test_multiple3(&responses[i], &responses[j], &responses[k]); + } + } + } + + test_message_count_body(&responses[NO_HEADERS_NO_BODY_404]); + test_message_count_body(&responses[TRAILING_SPACE_ON_CHUNKED_BODY]); + + // test very large chunked response + { + char * msg = create_large_chunked_message(31337, + "HTTP/1.0 200 OK\r\n" + "Transfer-Encoding: chunked\r\n" + "Content-Type: text/plain\r\n" + "\r\n"); + struct message large_chunked = + {.name= "large chunked" + ,.type= HTTP_RESPONSE + ,.raw= msg + ,.should_keep_alive= FALSE + ,.message_complete_on_eof= FALSE + ,.http_major= 1 + ,.http_minor= 0 + ,.status_code= 200 + ,.num_headers= 2 + ,.headers= + { { "Transfer-Encoding", "chunked" } + , { "Content-Type", "text/plain" } + } + ,.body_size= 31337*1024 + }; + test_message_count_body(&large_chunked); + free(msg); + } + + + + printf("response scan 1/2 "); + test_scan( &responses[TRAILING_SPACE_ON_CHUNKED_BODY] + , &responses[NO_BODY_HTTP10_KA_204] + , &responses[NO_REASON_PHRASE] + ); + + printf("response scan 2/2 "); + test_scan( &responses[BONJOUR_MADAME_FR] + , &responses[UNDERSTORE_HEADER_KEY] + , &responses[NO_CARRIAGE_RET] + ); + + puts("responses okay"); + + + /// REQUESTS + + test_simple("hello world", HPE_INVALID_METHOD); + test_simple("GET / HTP/1.1\r\n\r\n", HPE_INVALID_VERSION); + + + test_simple("ASDF / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + test_simple("GETA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD); + + // Well-formed but incomplete + test_simple("GET / HTTP/1.1\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: 6\r\n" + "\r\n" + "fooba", + HPE_OK); + + static const char *all_methods[] = { + "DELETE", + "GET", + "HEAD", + "POST", + "PUT", + //"CONNECT", //CONNECT can't be tested like other methods, it's a tunnel + "OPTIONS", + "TRACE", + "COPY", + "LOCK", + "MKCOL", + "MOVE", + "PROPFIND", + "PROPPATCH", + "UNLOCK", + "REPORT", + "MKACTIVITY", + "CHECKOUT", + "MERGE", + "M-SEARCH", + "NOTIFY", + "SUBSCRIBE", + "UNSUBSCRIBE", + "PATCH", + 0 }; + const char **this_method; + for (this_method = all_methods; *this_method; this_method++) { + char buf[200]; + sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method); + test_simple(buf, HPE_OK); + } + + static const char *bad_methods[] = { + "C******", + "M****", + 0 }; + for (this_method = bad_methods; *this_method; this_method++) { + char buf[200]; + sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method); + test_simple(buf, HPE_UNKNOWN); + } + + const char *dumbfuck2 = + "GET / HTTP/1.1\r\n" + "X-SSL-Bullshit: -----BEGIN CERTIFICATE-----\r\n" + "\tMIIFbTCCBFWgAwIBAgICH4cwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVUsx\r\n" + "\tETAPBgNVBAoTCGVTY2llbmNlMRIwEAYDVQQLEwlBdXRob3JpdHkxCzAJBgNVBAMT\r\n" + "\tAkNBMS0wKwYJKoZIhvcNAQkBFh5jYS1vcGVyYXRvckBncmlkLXN1cHBvcnQuYWMu\r\n" + "\tdWswHhcNMDYwNzI3MTQxMzI4WhcNMDcwNzI3MTQxMzI4WjBbMQswCQYDVQQGEwJV\r\n" + "\tSzERMA8GA1UEChMIZVNjaWVuY2UxEzARBgNVBAsTCk1hbmNoZXN0ZXIxCzAJBgNV\r\n" + "\tBAcTmrsogriqMWLAk1DMRcwFQYDVQQDEw5taWNoYWVsIHBhcmQYJKoZIhvcNAQEB\r\n" + "\tBQADggEPADCCAQoCggEBANPEQBgl1IaKdSS1TbhF3hEXSl72G9J+WC/1R64fAcEF\r\n" + "\tW51rEyFYiIeZGx/BVzwXbeBoNUK41OK65sxGuflMo5gLflbwJtHBRIEKAfVVp3YR\r\n" + "\tgW7cMA/s/XKgL1GEC7rQw8lIZT8RApukCGqOVHSi/F1SiFlPDxuDfmdiNzL31+sL\r\n" + "\t0iwHDdNkGjy5pyBSB8Y79dsSJtCW/iaLB0/n8Sj7HgvvZJ7x0fr+RQjYOUUfrePP\r\n" + "\tu2MSpFyf+9BbC/aXgaZuiCvSR+8Snv3xApQY+fULK/xY8h8Ua51iXoQ5jrgu2SqR\r\n" + "\twgA7BUi3G8LFzMBl8FRCDYGUDy7M6QaHXx1ZWIPWNKsCAwEAAaOCAiQwggIgMAwG\r\n" + "\tA1UdEwEB/wQCMAAwEQYJYIZIAYb4QgHTTPAQDAgWgMA4GA1UdDwEB/wQEAwID6DAs\r\n" + "\tBglghkgBhvhCAQ0EHxYdVUsgZS1TY2llbmNlIFVzZXIgQ2VydGlmaWNhdGUwHQYD\r\n" + "\tVR0OBBYEFDTt/sf9PeMaZDHkUIldrDYMNTBZMIGaBgNVHSMEgZIwgY+AFAI4qxGj\r\n" + "\tloCLDdMVKwiljjDastqooXSkcjBwMQswCQYDVQQGEwJVSzERMA8GA1UEChMIZVNj\r\n" + "\taWVuY2UxEjAQBgNVBAsTCUF1dGhvcml0eTELMAkGA1UEAxMCQ0ExLTArBgkqhkiG\r\n" + "\t9w0BCQEWHmNhLW9wZXJhdG9yQGdyaWQtc3VwcG9ydC5hYy51a4IBADApBgNVHRIE\r\n" + "\tIjAggR5jYS1vcGVyYXRvckBncmlkLXN1cHBvcnQuYWMudWswGQYDVR0gBBIwEDAO\r\n" + "\tBgwrBgEEAdkvAQEBAQYwPQYJYIZIAYb4QgEEBDAWLmh0dHA6Ly9jYS5ncmlkLXN1\r\n" + "\tcHBvcnQuYWMudmT4sopwqlBWsvcHViL2NybC9jYWNybC5jcmwwPQYJYIZIAYb4QgEDBDAWLmh0\r\n" + "\tdHA6Ly9jYS5ncmlkLXN1cHBvcnQuYWMudWsvcHViL2NybC9jYWNybC5jcmwwPwYD\r\n" + "\tVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NhLmdyaWQt5hYy51ay9wdWIv\r\n" + "\tY3JsL2NhY3JsLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAS/U4iiooBENGW/Hwmmd3\r\n" + "\tXCy6Zrt08YjKCzGNjorT98g8uGsqYjSxv/hmi0qlnlHs+k/3Iobc3LjS5AMYr5L8\r\n" + "\tUO7OSkgFFlLHQyC9JzPfmLCAugvzEbyv4Olnsr8hbxF1MbKZoQxUZtMVu29wjfXk\r\n" + "\thTeApBv7eaKCWpSp7MCbvgzm74izKhu3vlDk9w6qVrxePfGgpKPqfHiOoGhFnbTK\r\n" + "\twTC6o2xq5y0qZ03JonF7OJspEd3I5zKY3E+ov7/ZhW6DqT8UFvsAdjvQbXyhV8Eu\r\n" + "\tYhixw1aKEPzNjNowuIseVogKOLXxWI5vAi5HgXdS0/ES5gDGsABo4fqovUKlgop3\r\n" + "\tRA==\r\n" + "\t-----END CERTIFICATE-----\r\n" + "\r\n"; + test_simple(dumbfuck2, HPE_OK); + +#if 0 + // NOTE(Wed Nov 18 11:57:27 CET 2009) this seems okay. we just read body + // until EOF. + // + // no content-length + // error if there is a body without content length + const char *bad_get_no_headers_no_body = "GET /bad_get_no_headers_no_body/world HTTP/1.1\r\n" + "Accept: */*\r\n" + "\r\n" + "HELLO"; + test_simple(bad_get_no_headers_no_body, 0); +#endif + /* TODO sending junk and large headers gets rejected */ + + + /* check to make sure our predefined requests are okay */ + for (i = 0; requests[i].name; i++) { + test_message(&requests[i]); + } + + for (i = 0; i < request_count; i++) { + test_message_pause(&requests[i]); + } + + for (i = 0; i < request_count; i++) { + if (!requests[i].should_keep_alive) continue; + for (j = 0; j < request_count; j++) { + if (!requests[j].should_keep_alive) continue; + for (k = 0; k < request_count; k++) { + test_multiple3(&requests[i], &requests[j], &requests[k]); + } + } + } + + printf("request scan 1/4 "); + test_scan( &requests[GET_NO_HEADERS_NO_BODY] + , &requests[GET_ONE_HEADER_NO_BODY] + , &requests[GET_NO_HEADERS_NO_BODY] + ); + + printf("request scan 2/4 "); + test_scan( &requests[POST_CHUNKED_ALL_YOUR_BASE] + , &requests[POST_IDENTITY_BODY_WORLD] + , &requests[GET_FUNKY_CONTENT_LENGTH] + ); + + printf("request scan 3/4 "); + test_scan( &requests[TWO_CHUNKS_MULT_ZERO_END] + , &requests[CHUNKED_W_TRAILING_HEADERS] + , &requests[CHUNKED_W_BULLSHIT_AFTER_LENGTH] + ); + + printf("request scan 4/4 "); + test_scan( &requests[QUERY_URL_WITH_QUESTION_MARK_GET] + , &requests[PREFIX_NEWLINE_GET ] + , &requests[CONNECT_REQUEST] + ); + + puts("requests okay"); + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/http_parser.rb.gemspec b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/http_parser.rb.gemspec new file mode 100644 index 0000000000..9a406f8c62 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/http_parser.rb.gemspec @@ -0,0 +1,28 @@ +Gem::Specification.new do |s| + s.name = "http_parser.rb" + s.version = "0.6.0" + s.summary = "Simple callback-based HTTP request/response parser" + s.description = "Ruby bindings to http://github.com/ry/http-parser and http://github.com/a2800276/http-parser.java" + + s.authors = ["Marc-Andre Cournoyer", "Aman Gupta"] + s.email = ["macournoyer@gmail.com", "aman@tmm1.net"] + s.license = 'MIT' + + s.homepage = "http://github.com/tmm1/http_parser.rb" + s.files = `git ls-files`.split("\n") + Dir['ext/ruby_http_parser/vendor/**/*'] + + s.require_paths = ["lib"] + s.extensions = ["ext/ruby_http_parser/extconf.rb"] + + s.add_development_dependency 'rake-compiler', '>= 0.7.9' + s.add_development_dependency 'rspec', '>= 2.0.1' + s.add_development_dependency 'json', '>= 1.4.6' + s.add_development_dependency 'benchmark_suite' + s.add_development_dependency 'ffi' + + if RUBY_PLATFORM =~ /java/ + s.add_development_dependency 'jruby-openssl' + else + s.add_development_dependency 'yajl-ruby', '>= 0.8.1' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http/parser.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http/parser.rb new file mode 100644 index 0000000000..4881b031aa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http/parser.rb @@ -0,0 +1 @@ +require 'http_parser' diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http_parser.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http_parser.rb new file mode 100644 index 0000000000..c69f7a0bf1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/lib/http_parser.rb @@ -0,0 +1,21 @@ +$:.unshift File.expand_path('../', __FILE__) +require 'ruby_http_parser' + +Http = HTTP + +module HTTP + class Parser + class << self + attr_reader :default_header_value_type + + def default_header_value_type=(val) + if (val != :mixed && val != :strings && val != :arrays) + raise ArgumentError, "Invalid header value type" + end + @default_header_value_type = val + end + end + end +end + +HTTP::Parser.default_header_value_type = :mixed diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/parser_spec.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/parser_spec.rb new file mode 100644 index 0000000000..7134476bf6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/parser_spec.rb @@ -0,0 +1,350 @@ +require "spec_helper" +require "json" + +describe HTTP::Parser do + before do + @parser = HTTP::Parser.new + + @headers = nil + @body = "" + @started = false + @done = false + + @parser.on_message_begin = proc{ @started = true } + @parser.on_headers_complete = proc { |e| @headers = e } + @parser.on_body = proc { |chunk| @body << chunk } + @parser.on_message_complete = proc{ @done = true } + end + + it "should have initial state" do + @parser.headers.should be_nil + + @parser.http_version.should be_nil + @parser.http_method.should be_nil + @parser.status_code.should be_nil + + @parser.request_url.should be_nil + + @parser.header_value_type.should == :mixed + end + + it "should allow us to set the header value type" do + [:mixed, :arrays, :strings].each do |type| + @parser.header_value_type = type + @parser.header_value_type.should == type + + parser_tmp = HTTP::Parser.new(nil, type) + parser_tmp.header_value_type.should == type + end + end + + it "should allow us to set the default header value type" do + [:mixed, :arrays, :strings].each do |type| + HTTP::Parser.default_header_value_type = type + + parser = HTTP::Parser.new + parser.header_value_type.should == type + end + end + + it "should throw an Argument Error if header value type is invalid" do + proc{ @parser.header_value_type = 'bob' }.should raise_error(ArgumentError) + end + + it "should throw an Argument Error if default header value type is invalid" do + proc{ HTTP::Parser.default_header_value_type = 'bob' }.should raise_error(ArgumentError) + end + + it "should implement basic api" do + @parser << + "GET /test?ok=1 HTTP/1.1\r\n" + + "User-Agent: curl/7.18.0\r\n" + + "Host: 0.0.0.0:5000\r\n" + + "Accept: */*\r\n" + + "Content-Length: 5\r\n" + + "\r\n" + + "World" + + @started.should be_true + @done.should be_true + + @parser.http_major.should == 1 + @parser.http_minor.should == 1 + @parser.http_version.should == [1,1] + @parser.http_method.should == 'GET' + @parser.status_code.should be_nil + + @parser.request_url.should == '/test?ok=1' + + @parser.headers.should == @headers + @parser.headers['User-Agent'].should == 'curl/7.18.0' + @parser.headers['Host'].should == '0.0.0.0:5000' + + @body.should == "World" + end + + it "should raise errors on invalid data" do + proc{ @parser << "BLAH" }.should raise_error(HTTP::Parser::Error) + end + + it "should abort parser via callback" do + @parser.on_headers_complete = proc { |e| @headers = e; :stop } + + data = + "GET / HTTP/1.0\r\n" + + "Content-Length: 5\r\n" + + "\r\n" + + "World" + + bytes = @parser << data + + bytes.should == 37 + data[bytes..-1].should == 'World' + + @headers.should == {'Content-Length' => '5'} + @body.should be_empty + @done.should be_false + end + + it "should reset to initial state" do + @parser << "GET / HTTP/1.0\r\n\r\n" + + @parser.http_method.should == 'GET' + @parser.http_version.should == [1,0] + + @parser.request_url.should == '/' + + @parser.reset!.should be_true + + @parser.http_version.should be_nil + @parser.http_method.should be_nil + @parser.status_code.should be_nil + + @parser.request_url.should be_nil + end + + it "should optionally reset parser state on no-body responses" do + @parser.reset!.should be_true + + @head, @complete = 0, 0 + @parser.on_headers_complete = proc {|h| @head += 1; :reset } + @parser.on_message_complete = proc { @complete += 1 } + @parser.on_body = proc {|b| fail } + + head_response = "HTTP/1.1 200 OK\r\nContent-Length:10\r\n\r\n" + + @parser << head_response + @head.should == 1 + @complete.should == 1 + + @parser << head_response + @head.should == 2 + @complete.should == 2 + end + + it "should retain callbacks after reset" do + @parser.reset!.should be_true + + @parser << "GET / HTTP/1.0\r\n\r\n" + @started.should be_true + @headers.should == {} + @done.should be_true + end + + it "should parse headers incrementally" do + request = + "GET / HTTP/1.0\r\n" + + "Header1: value 1\r\n" + + "Header2: value 2\r\n" + + "\r\n" + + while chunk = request.slice!(0,2) and !chunk.empty? + @parser << chunk + end + + @parser.headers.should == { + 'Header1' => 'value 1', + 'Header2' => 'value 2' + } + end + + it "should handle multiple headers using strings" do + @parser.header_value_type = :strings + + @parser << + "GET / HTTP/1.0\r\n" + + "Set-Cookie: PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com\r\n" + + "Set-Cookie: NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly\r\n" + + "\r\n" + + @parser.headers["Set-Cookie"].should == "PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com, NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly" + end + + it "should handle multiple headers using strings" do + @parser.header_value_type = :arrays + + @parser << + "GET / HTTP/1.0\r\n" + + "Set-Cookie: PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com\r\n" + + "Set-Cookie: NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly\r\n" + + "\r\n" + + @parser.headers["Set-Cookie"].should == [ + "PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com", + "NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly" + ] + end + + it "should handle multiple headers using mixed" do + @parser.header_value_type = :mixed + + @parser << + "GET / HTTP/1.0\r\n" + + "Set-Cookie: PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com\r\n" + + "Set-Cookie: NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly\r\n" + + "\r\n" + + @parser.headers["Set-Cookie"].should == [ + "PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com", + "NID=46jSHxPM; path=/; domain=.bob.com; HttpOnly" + ] + end + + it "should handle a single cookie using mixed" do + @parser.header_value_type = :mixed + + @parser << + "GET / HTTP/1.0\r\n" + + "Set-Cookie: PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com\r\n" + + "\r\n" + + @parser.headers["Set-Cookie"].should == "PREF=ID=a7d2c98; expires=Fri, 05-Apr-2013 05:00:45 GMT; path=/; domain=.bob.com" + end + + it "should support alternative api" do + callbacks = double('callbacks') + callbacks.stub(:on_message_begin){ @started = true } + callbacks.stub(:on_headers_complete){ |e| @headers = e } + callbacks.stub(:on_body){ |chunk| @body << chunk } + callbacks.stub(:on_message_complete){ @done = true } + + @parser = HTTP::Parser.new(callbacks) + @parser << "GET / HTTP/1.0\r\n\r\n" + + @started.should be_true + @headers.should == {} + @body.should == '' + @done.should be_true + end + + it "should ignore extra content beyond specified length" do + @parser << + "GET / HTTP/1.0\r\n" + + "Content-Length: 5\r\n" + + "\r\n" + + "hello" + + " \n" + + @body.should == 'hello' + @done.should be_true + end + + it 'sets upgrade_data if available' do + @parser << + "GET /demo HTTP/1.1\r\n" + + "Connection: Upgrade\r\n" + + "Upgrade: WebSocket\r\n\r\n" + + "third key data" + + @parser.upgrade?.should be_true + @parser.upgrade_data.should == 'third key data' + end + + it 'sets upgrade_data to blank if un-available' do + @parser << + "GET /demo HTTP/1.1\r\n" + + "Connection: Upgrade\r\n" + + "Upgrade: WebSocket\r\n\r\n" + + @parser.upgrade?.should be_true + @parser.upgrade_data.should == '' + end + + it 'should stop parsing headers when instructed' do + request = "GET /websocket HTTP/1.1\r\n" + + "host: localhost\r\n" + + "connection: Upgrade\r\n" + + "upgrade: websocket\r\n" + + "sec-websocket-key: SD6/hpYbKjQ6Sown7pBbWQ==\r\n" + + "sec-websocket-version: 13\r\n" + + "\r\n" + + @parser.on_headers_complete = proc { |e| :stop } + offset = (@parser << request) + @parser.upgrade?.should be_true + @parser.upgrade_data.should == '' + offset.should == request.length + end + + it "should execute on_body on requests with no content-length" do + @parser.reset!.should be_true + + @head, @complete, @body = 0, 0, 0 + @parser.on_headers_complete = proc {|h| @head += 1 } + @parser.on_message_complete = proc { @complete += 1 } + @parser.on_body = proc {|b| @body += 1 } + + head_response = "HTTP/1.1 200 OK\r\n\r\nstuff" + + @parser << head_response + @parser << '' + @head.should == 1 + @complete.should == 1 + @body.should == 1 + end + + + %w[ request response ].each do |type| + JSON.parse(File.read(File.expand_path("../support/#{type}s.json", __FILE__))).each do |test| + test['headers'] ||= {} + next if !defined?(JRUBY_VERSION) and HTTP::Parser.strict? != test['strict'] + + it "should parse #{type}: #{test['name']}" do + @parser << test['raw'] + + @parser.http_method.should == test['method'] + @parser.keep_alive?.should == test['should_keep_alive'] + + if test.has_key?('upgrade') and test['upgrade'] != 0 + @parser.upgrade?.should be_true + @parser.upgrade_data.should == test['upgrade'] + end + + fields = %w[ + http_major + http_minor + ] + + if test['type'] == 'HTTP_REQUEST' + fields += %w[ + request_url + ] + else + fields += %w[ + status_code + ] + end + + fields.each do |field| + @parser.send(field).should == test[field] + end + + @headers.size.should == test['num_headers'] + @headers.should == test['headers'] + + @body.should == test['body'] + @body.size.should == test['body_size'] if test['body_size'] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/spec_helper.rb new file mode 100644 index 0000000000..a4295f90a7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/spec_helper.rb @@ -0,0 +1 @@ +require "http_parser" diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/requests.json b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/requests.json new file mode 100644 index 0000000000..dbb6e984a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/requests.json @@ -0,0 +1,612 @@ +[ + { + "name": "curl get", + "type": "HTTP_REQUEST", + "raw": "GET /test HTTP/1.1\r\nUser-Agent: curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1\r\nHost: 0.0.0.0=5000\r\nAccept: */*\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/test", + "request_url": "/test", + "num_headers": 3, + "headers": { + "User-Agent": "curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1", + "Host": "0.0.0.0=5000", + "Accept": "*/*" + }, + "body": "", + "strict": true + }, + { + "name": "firefox get", + "type": "HTTP_REQUEST", + "raw": "GET /favicon.ico HTTP/1.1\r\nHost: 0.0.0.0=5000\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/favicon.ico", + "request_url": "/favicon.ico", + "num_headers": 8, + "headers": { + "Host": "0.0.0.0=5000", + "User-Agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061015 Firefox/3.0", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "en-us,en;q=0.5", + "Accept-Encoding": "gzip,deflate", + "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", + "Keep-Alive": "300", + "Connection": "keep-alive" + }, + "body": "", + "strict": true + }, + { + "name": "dumbfuck", + "type": "HTTP_REQUEST", + "raw": "GET /dumbfuck HTTP/1.1\r\naaaaaaaaaaaaa:++++++++++\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/dumbfuck", + "request_url": "/dumbfuck", + "num_headers": 1, + "headers": { + "aaaaaaaaaaaaa": "++++++++++" + }, + "body": "", + "strict": true + }, + { + "name": "fragment in url", + "type": "HTTP_REQUEST", + "raw": "GET /forums/1/topics/2375?page=1#posts-17408 HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "page=1", + "fragment": "posts-17408", + "request_path": "/forums/1/topics/2375", + "request_url": "/forums/1/topics/2375?page=1#posts-17408", + "num_headers": 0, + "body": "", + "strict": true + }, + { + "name": "get no headers no body", + "type": "HTTP_REQUEST", + "raw": "GET /get_no_headers_no_body/world HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/get_no_headers_no_body/world", + "request_url": "/get_no_headers_no_body/world", + "num_headers": 0, + "body": "", + "strict": true + }, + { + "name": "get one header no body", + "type": "HTTP_REQUEST", + "raw": "GET /get_one_header_no_body HTTP/1.1\r\nAccept: */*\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/get_one_header_no_body", + "request_url": "/get_one_header_no_body", + "num_headers": 1, + "headers": { + "Accept": "*/*" + }, + "body": "", + "strict": true + }, + { + "name": "get funky content length body hello", + "type": "HTTP_REQUEST", + "raw": "GET /get_funky_content_length_body_hello HTTP/1.0\r\nconTENT-Length: 5\r\n\r\nHELLO", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/get_funky_content_length_body_hello", + "request_url": "/get_funky_content_length_body_hello", + "num_headers": 1, + "headers": { + "conTENT-Length": "5" + }, + "body": "HELLO", + "strict": true + }, + { + "name": "post identity body world", + "type": "HTTP_REQUEST", + "raw": "POST /post_identity_body_world?q=search#hey HTTP/1.1\r\nAccept: */*\r\nTransfer-Encoding: identity\r\nContent-Length: 5\r\n\r\nWorld", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "POST", + "query_string": "q=search", + "fragment": "hey", + "request_path": "/post_identity_body_world", + "request_url": "/post_identity_body_world?q=search#hey", + "num_headers": 3, + "headers": { + "Accept": "*/*", + "Transfer-Encoding": "identity", + "Content-Length": "5" + }, + "body": "World", + "strict": true + }, + { + "name": "post - chunked body: all your base are belong to us", + "type": "HTTP_REQUEST", + "raw": "POST /post_chunked_all_your_base HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1e\r\nall your base are belong to us\r\n0\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "POST", + "query_string": "", + "fragment": "", + "request_path": "/post_chunked_all_your_base", + "request_url": "/post_chunked_all_your_base", + "num_headers": 1, + "headers": { + "Transfer-Encoding": "chunked" + }, + "body": "all your base are belong to us", + "strict": true + }, + { + "name": "two chunks ; triple zero ending", + "type": "HTTP_REQUEST", + "raw": "POST /two_chunks_mult_zero_end HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nhello\r\n6\r\n world\r\n000\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "POST", + "query_string": "", + "fragment": "", + "request_path": "/two_chunks_mult_zero_end", + "request_url": "/two_chunks_mult_zero_end", + "num_headers": 1, + "headers": { + "Transfer-Encoding": "chunked" + }, + "body": "hello world", + "strict": true + }, + { + "name": "chunked with trailing headers. blech.", + "type": "HTTP_REQUEST", + "raw": "POST /chunked_w_trailing_headers HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nhello\r\n6\r\n world\r\n0\r\nVary: *\r\nContent-Type: text/plain\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "POST", + "query_string": "", + "fragment": "", + "request_path": "/chunked_w_trailing_headers", + "request_url": "/chunked_w_trailing_headers", + "num_headers": 3, + "headers": { + "Transfer-Encoding": "chunked", + "Vary": "*", + "Content-Type": "text/plain" + }, + "body": "hello world", + "strict": true + }, + { + "name": "with bullshit after the length", + "type": "HTTP_REQUEST", + "raw": "POST /chunked_w_bullshit_after_length HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n5; ihatew3;whatthefuck=aretheseparametersfor\r\nhello\r\n6; blahblah; blah\r\n world\r\n0\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "POST", + "query_string": "", + "fragment": "", + "request_path": "/chunked_w_bullshit_after_length", + "request_url": "/chunked_w_bullshit_after_length", + "num_headers": 1, + "headers": { + "Transfer-Encoding": "chunked" + }, + "body": "hello world", + "strict": true + }, + { + "name": "with quotes", + "type": "HTTP_REQUEST", + "raw": "GET /with_\"stupid\"_quotes?foo=\"bar\" HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "foo=\"bar\"", + "fragment": "", + "request_path": "/with_\"stupid\"_quotes", + "request_url": "/with_\"stupid\"_quotes?foo=\"bar\"", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "apachebench get", + "type": "HTTP_REQUEST", + "raw": "GET /test HTTP/1.0\r\nHost: 0.0.0.0:5000\r\nUser-Agent: ApacheBench/2.3\r\nAccept: */*\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/test", + "request_url": "/test", + "num_headers": 3, + "headers": { + "Host": "0.0.0.0:5000", + "User-Agent": "ApacheBench/2.3", + "Accept": "*/*" + }, + "body": "", + "strict": true + }, + { + "name": "query url with question mark", + "type": "HTTP_REQUEST", + "raw": "GET /test.cgi?foo=bar?baz HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "foo=bar?baz", + "fragment": "", + "request_path": "/test.cgi", + "request_url": "/test.cgi?foo=bar?baz", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "newline prefix get", + "type": "HTTP_REQUEST", + "raw": "\r\nGET /test HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/test", + "request_url": "/test", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "upgrade request", + "type": "HTTP_REQUEST", + "raw": "GET /demo HTTP/1.1\r\nHost: example.com\r\nConnection: Upgrade\r\nSec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\nSec-WebSocket-Protocol: sample\r\nUpgrade: WebSocket\r\nSec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\nOrigin: http://example.com\r\n\r\nHot diggity dogg", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/demo", + "request_url": "/demo", + "num_headers": 7, + "upgrade": "Hot diggity dogg", + "headers": { + "Host": "example.com", + "Connection": "Upgrade", + "Sec-WebSocket-Key2": "12998 5 Y3 1 .P00", + "Sec-WebSocket-Protocol": "sample", + "Upgrade": "WebSocket", + "Sec-WebSocket-Key1": "4 @1 46546xW%0l 1 5", + "Origin": "http://example.com" + }, + "body": "", + "strict": true + }, + { + "name": "connect request", + "type": "HTTP_REQUEST", + "raw": "CONNECT 0-home0.netscape.com:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\nsome data\r\nand yet even more data", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "method": "CONNECT", + "query_string": "", + "fragment": "", + "request_path": "", + "request_url": "0-home0.netscape.com:443", + "num_headers": 2, + "upgrade": "some data\r\nand yet even more data", + "headers": { + "User-agent": "Mozilla/1.1N", + "Proxy-authorization": "basic aGVsbG86d29ybGQ=" + }, + "body": "", + "strict": true + }, + { + "name": "report request", + "type": "HTTP_REQUEST", + "raw": "REPORT /test HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "REPORT", + "query_string": "", + "fragment": "", + "request_path": "/test", + "request_url": "/test", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "request with no http version", + "type": "HTTP_REQUEST", + "raw": "GET /\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 0, + "http_minor": 9, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/", + "request_url": "/", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "m-search request", + "type": "HTTP_REQUEST", + "raw": "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: \"ssdp:all\"\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "M-SEARCH", + "query_string": "", + "fragment": "", + "request_path": "*", + "request_url": "*", + "num_headers": 3, + "headers": { + "HOST": "239.255.255.250:1900", + "MAN": "\"ssdp:discover\"", + "ST": "\"ssdp:all\"" + }, + "body": "", + "strict": true + }, + { + "name": "line folding in header value", + "type": "HTTP_REQUEST", + "raw": "GET / HTTP/1.1\r\nLine1: abc\r\n\tdef\r\n ghi\r\n\t\tjkl\r\n mno \r\n\t \tqrs\r\nLine2: \t line2\t\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "/", + "request_url": "/", + "num_headers": 2, + "headers": { + "Line1": "abcdefghijklmno qrs", + "Line2": "line2\t" + }, + "body": "", + "strict": true + }, + { + "name": "host terminated by a query string", + "type": "HTTP_REQUEST", + "raw": "GET http://hypnotoad.org?hail=all HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "hail=all", + "fragment": "", + "request_path": "", + "request_url": "http://hypnotoad.org?hail=all", + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "host:port terminated by a query string", + "type": "HTTP_REQUEST", + "raw": "GET http://hypnotoad.org:1234?hail=all HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "hail=all", + "fragment": "", + "request_path": "", + "request_url": "http://hypnotoad.org:1234?hail=all", + "port": 1234, + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "host:port terminated by a space", + "type": "HTTP_REQUEST", + "raw": "GET http://hypnotoad.org:1234 HTTP/1.1\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "", + "fragment": "", + "request_path": "", + "request_url": "http://hypnotoad.org:1234", + "port": 1234, + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "PATCH request", + "type": "HTTP_REQUEST", + "raw": "PATCH /file.txt HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/example\r\nIf-Match: \"e0023aa4e\"\r\nContent-Length: 10\r\n\r\ncccccccccc", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "PATCH", + "query_string": "", + "fragment": "", + "request_path": "/file.txt", + "request_url": "/file.txt", + "num_headers": 4, + "headers": { + "Host": "www.example.com", + "Content-Type": "application/example", + "If-Match": "\"e0023aa4e\"", + "Content-Length": "10" + }, + "body": "cccccccccc", + "strict": true + }, + { + "name": "connect caps request", + "type": "HTTP_REQUEST", + "raw": "CONNECT HOME0.NETSCAPE.COM:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "method": "CONNECT", + "query_string": "", + "fragment": "", + "request_path": "", + "request_url": "HOME0.NETSCAPE.COM:443", + "num_headers": 2, + "upgrade": "", + "headers": { + "User-agent": "Mozilla/1.1N", + "Proxy-authorization": "basic aGVsbG86d29ybGQ=" + }, + "body": "", + "strict": true + }, + { + "name": "utf-8 path request", + "type": "HTTP_REQUEST", + "strict": false, + "raw": "GET /δ¶/δt/pope?q=1#narf HTTP/1.1\r\nHost: github.com\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "method": "GET", + "query_string": "q=1", + "fragment": "narf", + "request_path": "/δ¶/δt/pope", + "request_url": "/δ¶/δt/pope?q=1#narf", + "num_headers": 1, + "headers": { + "Host": "github.com" + }, + "body": "" + }, + { + "name": "hostname underscore", + "type": "HTTP_REQUEST", + "strict": false, + "raw": "CONNECT home_0.netscape.com:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "method": "CONNECT", + "query_string": "", + "fragment": "", + "request_path": "", + "request_url": "home_0.netscape.com:443", + "num_headers": 2, + "upgrade": "", + "headers": { + "User-agent": "Mozilla/1.1N", + "Proxy-authorization": "basic aGVsbG86d29ybGQ=" + }, + "body": "" + } +] \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/responses.json b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/responses.json new file mode 100644 index 0000000000..6dde20be30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/support/responses.json @@ -0,0 +1,375 @@ +[ + { + "name": "google 301", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 301 Moved Permanently\r\nLocation: http://www.google.com/\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Sun, 26 Apr 2009 11:11:49 GMT\r\nExpires: Tue, 26 May 2009 11:11:49 GMT\r\nX-$PrototypeBI-Version: 1.6.0.3\r\nCache-Control: public, max-age=2592000\r\nServer: gws\r\nContent-Length: 219 \r\n\r\n\n301 Moved\n

                301 Moved

                \nThe document has moved\nhere.\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 301, + "num_headers": 8, + "headers": { + "Location": "http://www.google.com/", + "Content-Type": "text/html; charset=UTF-8", + "Date": "Sun, 26 Apr 2009 11:11:49 GMT", + "Expires": "Tue, 26 May 2009 11:11:49 GMT", + "X-$PrototypeBI-Version": "1.6.0.3", + "Cache-Control": "public, max-age=2592000", + "Server": "gws", + "Content-Length": "219 " + }, + "body": "\n301 Moved\n

                301 Moved

                \nThe document has moved\nhere.\r\n\r\n", + "strict": true + }, + { + "name": "no content-length response", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nDate: Tue, 04 Aug 2009 07:59:32 GMT\r\nServer: Apache\r\nX-Powered-By: Servlet/2.5 JSP/2.1\r\nContent-Type: text/xml; charset=utf-8\r\nConnection: close\r\n\r\n\n\n \n \n SOAP-ENV:Client\n Client Error\n \n \n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 5, + "headers": { + "Date": "Tue, 04 Aug 2009 07:59:32 GMT", + "Server": "Apache", + "X-Powered-By": "Servlet/2.5 JSP/2.1", + "Content-Type": "text/xml; charset=utf-8", + "Connection": "close" + }, + "body": "\n\n \n \n SOAP-ENV:Client\n Client Error\n \n \n", + "strict": true + }, + { + "name": "404 no headers no body", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 404 Not Found\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 404, + "num_headers": 0, + "headers": { + + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "301 no response phrase", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 301\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 301, + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "200 trailing space on chunked body", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\n25 \r\nThis is the data in the first chunk\r\n\r\n1C\r\nand this is the second one\r\n\r\n0 \r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 2, + "headers": { + "Content-Type": "text/plain", + "Transfer-Encoding": "chunked" + }, + "body_size": 65, + "body": "This is the data in the first chunk\r\nand this is the second one\r\n", + "strict": true + }, + { + "name": "no carriage ret", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nConnection: close\n\nthese headers are from http://news.ycombinator.com/", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 2, + "headers": { + "Content-Type": "text/html; charset=utf-8", + "Connection": "close" + }, + "body": "these headers are from http://news.ycombinator.com/", + "strict": true + }, + { + "name": "proxy connection", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 11\r\nProxy-Connection: close\r\nDate: Thu, 31 Dec 2009 20:55:48 +0000\r\n\r\nhello world", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 4, + "headers": { + "Content-Type": "text/html; charset=UTF-8", + "Content-Length": "11", + "Proxy-Connection": "close", + "Date": "Thu, 31 Dec 2009 20:55:48 +0000" + }, + "body": "hello world", + "strict": true + }, + { + "name": "underscore header key", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nServer: DCLK-AdSvr\r\nContent-Type: text/xml\r\nContent-Length: 0\r\nDCLK_imp: v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 4, + "headers": { + "Server": "DCLK-AdSvr", + "Content-Type": "text/xml", + "Content-Length": "0", + "DCLK_imp": "v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o" + }, + "body": "", + "strict": true + }, + { + "name": "bonjourmadame.fr", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.0 301 Moved Permanently\r\nDate: Thu, 03 Jun 2010 09:56:32 GMT\r\nServer: Apache/2.2.3 (Red Hat)\r\nCache-Control: public\r\nPragma: \r\nLocation: http://www.bonjourmadame.fr/\r\nVary: Accept-Encoding\r\nContent-Length: 0\r\nContent-Type: text/html; charset=UTF-8\r\nConnection: keep-alive\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "status_code": 301, + "num_headers": 9, + "headers": { + "Date": "Thu, 03 Jun 2010 09:56:32 GMT", + "Server": "Apache/2.2.3 (Red Hat)", + "Cache-Control": "public", + "Pragma": "", + "Location": "http://www.bonjourmadame.fr/", + "Vary": "Accept-Encoding", + "Content-Length": "0", + "Content-Type": "text/html; charset=UTF-8", + "Connection": "keep-alive" + }, + "body": "", + "strict": true + }, + { + "name": "field underscore", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nDate: Tue, 28 Sep 2010 01:14:13 GMT\r\nServer: Apache\r\nCache-Control: no-cache, must-revalidate\r\nExpires: Mon, 26 Jul 1997 05:00:00 GMT\r\n.et-Cookie: PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com\r\nVary: Accept-Encoding\r\n_eep-Alive: timeout=45\r\n_onnection: Keep-Alive\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n0\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 11, + "headers": { + "Date": "Tue, 28 Sep 2010 01:14:13 GMT", + "Server": "Apache", + "Cache-Control": "no-cache, must-revalidate", + "Expires": "Mon, 26 Jul 1997 05:00:00 GMT", + ".et-Cookie": "PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com", + "Vary": "Accept-Encoding", + "_eep-Alive": "timeout=45", + "_onnection": "Keep-Alive", + "Transfer-Encoding": "chunked", + "Content-Type": "text/html", + "Connection": "close" + }, + "body": "", + "strict": true + }, + { + "name": "non-ASCII in status line", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 500 Oriëntatieprobleem\r\nDate: Fri, 5 Nov 2010 23:07:12 GMT+2\r\nContent-Length: 0\r\nConnection: close\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 500, + "num_headers": 3, + "headers": { + "Date": "Fri, 5 Nov 2010 23:07:12 GMT+2", + "Content-Length": "0", + "Connection": "close" + }, + "body": "", + "strict": true + }, + { + "name": "http version 0.9", + "type": "HTTP_RESPONSE", + "raw": "HTTP/0.9 200 OK\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 0, + "http_minor": 9, + "status_code": 200, + "num_headers": 0, + "headers": { + + }, + "body": "", + "strict": true + }, + { + "name": "neither content-length nor transfer-encoding response", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhello world", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 1, + "headers": { + "Content-Type": "text/plain" + }, + "body": "hello world", + "strict": true + }, + { + "name": "HTTP/1.0 with keep-alive and EOF-terminated 200 status", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.0 200 OK\r\nConnection: keep-alive\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 0, + "status_code": 200, + "num_headers": 1, + "headers": { + "Connection": "keep-alive" + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "HTTP/1.0 with keep-alive and a 204 status", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.0 204 No content\r\nConnection: keep-alive\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 0, + "status_code": 204, + "num_headers": 1, + "headers": { + "Connection": "keep-alive" + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "HTTP/1.1 with an EOF-terminated 200 status", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": true, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 0, + "headers": { + + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "HTTP/1.1 with a 204 status", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 204 No content\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 204, + "num_headers": 0, + "headers": { + + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "HTTP/1.1 with a 204 status and keep-alive disabled", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 204 No content\r\nConnection: close\r\n\r\n", + "should_keep_alive": false, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 204, + "num_headers": 1, + "headers": { + "Connection": "close" + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "HTTP/1.1 with chunked endocing and a 200 response", + "type": "HTTP_RESPONSE", + "raw": "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\n", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 1, + "headers": { + "Transfer-Encoding": "chunked" + }, + "body_size": 0, + "body": "", + "strict": true + }, + { + "name": "field space", + "type": "HTTP_RESPONSE", + "strict": false, + "raw": "HTTP/1.1 200 OK\r\nServer: Microsoft-IIS/6.0\r\nX-Powered-By: ASP.NET\r\nen-US Content-Type: text/xml\r\nContent-Type: text/xml\r\nContent-Length: 16\r\nDate: Fri, 23 Jul 2010 18:45:38 GMT\r\nConnection: keep-alive\r\n\r\nhello", + "should_keep_alive": true, + "message_complete_on_eof": false, + "http_major": 1, + "http_minor": 1, + "status_code": 200, + "num_headers": 7, + "headers": { + "Server": "Microsoft-IIS/6.0", + "X-Powered-By": "ASP.NET", + "en-US Content-Type": "text/xml", + "Content-Type": "text/xml", + "Content-Length": "16", + "Date": "Fri, 23 Jul 2010 18:45:38 GMT", + "Connection": "keep-alive" + }, + "body": "hello" + } +] \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/compile.rake b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/compile.rake new file mode 100644 index 0000000000..22d6f6d5ce --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/compile.rake @@ -0,0 +1,42 @@ +require 'rubygems/package_task' +require 'rake/extensiontask' +require 'rake/javaextensiontask' + +def gemspec + @clean_gemspec ||= eval(File.read(File.expand_path('../../http_parser.rb.gemspec', __FILE__))) +end + +Gem::PackageTask.new(gemspec) do |pkg| +end + +if RUBY_PLATFORM =~ /java/ + Rake::JavaExtensionTask.new("ruby_http_parser", gemspec) do |ext| + ext.classpath = File.expand_path('../../ext/ruby_http_parser/vendor/http-parser-java/ext/primitives.jar', __FILE__) + end +else + Rake::ExtensionTask.new("ruby_http_parser", gemspec) do |ext| + unless RUBY_PLATFORM =~ /mswin|mingw/ + ext.cross_compile = true + ext.cross_platform = ['x86-mingw32', 'x86-mswin32-60'] + + # inject 1.8/1.9 pure-ruby entry point + ext.cross_compiling do |spec| + spec.files += ['lib/ruby_http_parser.rb'] + end + end + end +end + +file 'lib/ruby_http_parser.rb' do |t| + File.open(t.name, 'wb') do |f| + f.write <<-eoruby +RUBY_VERSION =~ /(\\d+.\\d+)/ +require "\#{$1}/ruby_http_parser" + eoruby + end + at_exit{ FileUtils.rm t.name if File.exists?(t.name) } +end + +if Rake::Task.task_defined?(:cross) + task :cross => 'lib/ruby_http_parser.rb' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/fixtures.rake b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/fixtures.rake new file mode 100644 index 0000000000..b5d36ef81c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/fixtures.rake @@ -0,0 +1,71 @@ +desc "Generate test fixtures" +task :fixtures => :submodules do + require 'yajl' + data = File.read File.expand_path('../../ext/ruby_http_parser/vendor/http-parser/test.c', __FILE__) + + %w[ requests responses ].each do |type| + # find test definitions in between requests/responses[]= and .name=NULL + tmp = data[/#{type}\[\]\s*=(.+?),\s*\{\s*\.name=\s*NULL/m, 1] + + # replace first { with a [ (parsing an array of test cases) + tmp.sub!('{','[') + + # replace booleans + tmp.gsub!('TRUE', 'true') + tmp.gsub!('FALSE', 'false') + + # mark strict mode tests + tmp.gsub!(%r|#if\s+!HTTP_PARSER_STRICT(.+?)#endif\s*/\*\s*!HTTP_PARSER_STRICT.+\n|m){ + $1.gsub(/^(.+,\.type= .+)$/, "\\1\n, .strict= false") + } + + # remove macros and comments + tmp.gsub!(/^#(if|elif|endif|define).+$/,'') + tmp.gsub!(/\/\*(.+?)\*\/$/,'') + + # HTTP_* enums become strings + tmp.gsub!(/(= )(HTTP_\w+)/){ + "#{$1}#{$2.sub('MSEARCH','M-SEARCH').dump}" + } + + # join multiline strings for body and raw data + tmp.gsub!(/((body|raw)\s*=)(.+?)(\n\s+[\},])/m){ + before, after = $1, $4 + raw = $3.split("\n").map{ |l| l.strip[1..-2] }.join('') + "#{before} \"#{raw}\" #{after}" + } + + # make headers an array of array tuples + tmp.gsub!(/(\.headers\s*=)(.+?)(\s*,\.)/m){ + before, after = $1, $3 + raw = $2.gsub('{', '[').gsub('}', ']') + "#{before} #{raw} #{after}" + } + + # .name= becomes "name": + tmp.gsub!(/^(.{2,5})\.(\w+)\s*=/){ + "#{$1}#{$2.dump}: " + } + + # evaluate addition expressions + tmp.gsub!(/(body_size\":\s*)(\d+)\+(\d+)/){ + "#{$1}#{$2.to_i+$3.to_i}" + } + + # end result array + tmp << ']' + + # normalize data + results = Yajl.load(tmp, :symbolize_keys => true) + results.map{ |res| + res[:headers] and res[:headers] = Hash[*res[:headers].flatten] + res[:method] and res[:method].gsub!(/^HTTP_/, '') + res[:strict] = true unless res.has_key?(:strict) + } + + # write to a file + File.open("spec/support/#{type}.json", 'w'){ |f| + f.write Yajl.dump(results, :pretty => true) + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/spec.rake b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/spec.rake new file mode 100644 index 0000000000..8f5d9ea06e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/spec.rake @@ -0,0 +1,5 @@ +require "rspec/core/rake_task" + +RSpec::Core::RakeTask.new do |t| + t.rspec_opts = %w(-fs -c) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/submodules.rake b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/submodules.rake new file mode 100644 index 0000000000..d978e9ff0d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/tasks/submodules.rake @@ -0,0 +1,7 @@ +desc "Fetch upstream submodules" +task :submodules do + if Dir['ext/ruby_http_parser/vendor/http-parser/*'].empty? + sh 'git submodule init' + sh 'git submodule update' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/MIT-LICENSE b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/MIT-LICENSE new file mode 100644 index 0000000000..ed8e9ee66d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2008 The Ruby I18n team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/README.md b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/README.md new file mode 100644 index 0000000000..12b8ada1cf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/README.md @@ -0,0 +1,84 @@ +# Ruby I18n + +[![Build Status](https://api.travis-ci.org/svenfuchs/i18n.svg?branch=master)](https://travis-ci.org/svenfuchs/i18n) + +Ruby Internationalization and localization solution. + +[See the Rails Guide](http://guides.rubyonrails.org/i18n.html) for an example of its usage. (Note: This library can be used independently from Rails.) + +Features: + +* translation and localization +* interpolation of values to translations (Ruby 1.9 compatible syntax) +* pluralization (CLDR compatible) +* customizable transliteration to ASCII +* flexible defaults +* bulk lookup +* lambdas as translation data +* custom key/scope separator +* custom exception handlers +* extensible architecture with a swappable backend + +Pluggable features: + +* Cache +* Pluralization: lambda pluralizers stored as translation data +* Locale fallbacks, RFC4647 compliant (optionally: RFC4646 locale validation) +* [Gettext support](https://github.com/svenfuchs/i18n/wiki/Gettext) +* Translation metadata + +Alternative backends: + +* Chain +* ActiveRecord (optionally: ActiveRecord::Missing and ActiveRecord::StoreProcs) +* KeyValue (uses active_support/json and cannot store procs) + +For more information and lots of resources see [the 'Resources' page on the wiki](https://github.com/svenfuchs/i18n/wiki/Resources). + +## Installation + +``` +gem install i18n +``` + +## Tests + +You can run tests both with + +* `rake test` or just `rake` +* run any test file directly, e.g. `ruby -Ilib:test test/api/simple_test.rb` + +You can run all tests against all Gemfiles with + +* `ruby test/run_all.rb` + +The structure of the test suite is a bit unusual as it uses modules to reuse +particular tests in different test cases. + +The reason for this is that we need to enforce the I18n API across various +combinations of extensions. E.g. the Simple backend alone needs to support +the same API as any combination of feature and/or optimization modules included +to the Simple backend. We test this by reusing the same API defition (implemented +as test methods) in test cases with different setups. + +You can find the test cases that enforce the API in test/api. And you can find +the API definition test methods in test/api/tests. + +All other test cases (e.g. as defined in test/backend, test/core_ext) etc. +follow the usual test setup and should be easy to grok. + +## Authors + +* [Sven Fuchs](http://www.artweb-design.de) +* [Joshua Harvey](http://www.workingwithrails.com/person/759-joshua-harvey) +* [Stephan Soller](http://www.arkanis-development.de) +* [Saimon Moore](http://saimonmoore.net) +* [Matt Aimonetti](https://matt.aimonetti.net/) + +## Contributors + +https://github.com/svenfuchs/i18n/graphs/contributors + +## License + +MIT License. See the included MIT-LICENSE file. diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-3.2.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-3.2.x new file mode 100644 index 0000000000..071554fb35 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-3.2.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 3.2.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.0.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.0.x new file mode 100644 index 0000000000..cc527e7740 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.0.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 4.0.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.1.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.1.x new file mode 100644 index 0000000000..682685530e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.1.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 4.1.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.2.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.2.x new file mode 100644 index 0000000000..68b886c3de --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-4.2.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 4.2.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.0.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.0.x new file mode 100644 index 0000000000..1634537764 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.0.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 5.0.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.1.x b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.1.x new file mode 100644 index 0000000000..d8fc5685a0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-5.1.x @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', '~> 5.1.0' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-master b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-master new file mode 100644 index 0000000000..b0ae1ce96a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/gemfiles/Gemfile.rails-master @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec :path => '..' + +gem 'activesupport', github: 'rails/rails', branch: 'master' +gem 'mocha' +gem 'test_declarative' +gem 'rake' +gem 'minitest' +gem 'oj' diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n.rb new file mode 100644 index 0000000000..cf44ce3c89 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n.rb @@ -0,0 +1,356 @@ +require 'concurrent/map' + +require 'i18n/version' +require 'i18n/exceptions' +require 'i18n/interpolate/ruby' + +module I18n + autoload :Backend, 'i18n/backend' + autoload :Config, 'i18n/config' + autoload :Gettext, 'i18n/gettext' + autoload :Locale, 'i18n/locale' + autoload :Tests, 'i18n/tests' + autoload :Middleware, 'i18n/middleware' + + RESERVED_KEYS = [:scope, :default, :separator, :resolve, :object, :fallback, :fallback_in_progress, :format, :cascade, :throw, :raise, :deep_interpolation] + RESERVED_KEYS_PATTERN = /%\{(#{RESERVED_KEYS.join("|")})\}/ + + + def self.new_double_nested_cache # :nodoc: + Concurrent::Map.new { |h,k| h[k] = Concurrent::Map.new } + end + + module Base + # Gets I18n configuration object. + def config + Thread.current[:i18n_config] ||= I18n::Config.new + end + + # Sets I18n configuration object. + def config=(value) + Thread.current[:i18n_config] = value + end + + # Write methods which delegates to the configuration object + %w(locale backend default_locale available_locales default_separator + exception_handler load_path enforce_available_locales).each do |method| + module_eval <<-DELEGATORS, __FILE__, __LINE__ + 1 + def #{method} + config.#{method} + end + + def #{method}=(value) + config.#{method} = (value) + end + DELEGATORS + end + + # Tells the backend to reload translations. Used in situations like the + # Rails development environment. Backends can implement whatever strategy + # is useful. + def reload! + config.clear_available_locales_set + config.backend.reload! + end + + # Translates, pluralizes and interpolates a given key using a given locale, + # scope, and default, as well as interpolation values. + # + # *LOOKUP* + # + # Translation data is organized as a nested hash using the upper-level keys + # as namespaces. E.g., ActionView ships with the translation: + # :date => {:formats => {:short => "%b %d"}}. + # + # Translations can be looked up at any level of this hash using the key argument + # and the scope option. E.g., in this example I18n.t :date + # returns the whole translations hash {:formats => {:short => "%b %d"}}. + # + # Key can be either a single key or a dot-separated key (both Strings and Symbols + # work). E.g., the short format can be looked up using both: + # I18n.t 'date.formats.short' + # I18n.t :'date.formats.short' + # + # Scope can be either a single key, a dot-separated key or an array of keys + # or dot-separated keys. Keys and scopes can be combined freely. So these + # examples will all look up the same short date format: + # I18n.t 'date.formats.short' + # I18n.t 'formats.short', :scope => 'date' + # I18n.t 'short', :scope => 'date.formats' + # I18n.t 'short', :scope => %w(date formats) + # + # *INTERPOLATION* + # + # Translations can contain interpolation variables which will be replaced by + # values passed to #translate as part of the options hash, with the keys matching + # the interpolation variable names. + # + # E.g., with a translation :foo => "foo %{bar}" the option + # value for the key +bar+ will be interpolated into the translation: + # I18n.t :foo, :bar => 'baz' # => 'foo baz' + # + # *PLURALIZATION* + # + # Translation data can contain pluralized translations. Pluralized translations + # are arrays of singluar/plural versions of translations like ['Foo', 'Foos']. + # + # Note that I18n::Backend::Simple only supports an algorithm for English + # pluralization rules. Other algorithms can be supported by custom backends. + # + # This returns the singular version of a pluralized translation: + # I18n.t :foo, :count => 1 # => 'Foo' + # + # These both return the plural version of a pluralized translation: + # I18n.t :foo, :count => 0 # => 'Foos' + # I18n.t :foo, :count => 2 # => 'Foos' + # + # The :count option can be used both for pluralization and interpolation. + # E.g., with the translation + # :foo => ['%{count} foo', '%{count} foos'], count will + # be interpolated to the pluralized translation: + # I18n.t :foo, :count => 1 # => '1 foo' + # + # *DEFAULTS* + # + # This returns the translation for :foo or default if no translation was found: + # I18n.t :foo, :default => 'default' + # + # This returns the translation for :foo or the translation for :bar if no + # translation for :foo was found: + # I18n.t :foo, :default => :bar + # + # Returns the translation for :foo or the translation for :bar + # or default if no translations for :foo and :bar were found. + # I18n.t :foo, :default => [:bar, 'default'] + # + # *BULK LOOKUP* + # + # This returns an array with the translations for :foo and :bar. + # I18n.t [:foo, :bar] + # + # Can be used with dot-separated nested keys: + # I18n.t [:'baz.foo', :'baz.bar'] + # + # Which is the same as using a scope option: + # I18n.t [:foo, :bar], :scope => :baz + # + # *LAMBDAS* + # + # Both translations and defaults can be given as Ruby lambdas. Lambdas will be + # called and passed the key and options. + # + # E.g. assuming the key :salutation resolves to: + # lambda { |key, options| options[:gender] == 'm' ? "Mr. #{options[:name]}" : "Mrs. #{options[:name]}" } + # + # Then I18n.t(:salutation, :gender => 'w', :name => 'Smith') will result in "Mrs. Smith". + # + # Note that the string returned by lambda will go through string interpolation too, + # so the following lambda would give the same result: + # lambda { |key, options| options[:gender] == 'm' ? "Mr. %{name}" : "Mrs. %{name}" } + # + # It is recommended to use/implement lambdas in an "idempotent" way. E.g. when + # a cache layer is put in front of I18n.translate it will generate a cache key + # from the argument values passed to #translate. Therefor your lambdas should + # always return the same translations/values per unique combination of argument + # values. + def translate(*args) + options = args.last.is_a?(Hash) ? args.pop.dup : {} + key = args.shift + backend = config.backend + locale = options.delete(:locale) || config.locale + handling = options.delete(:throw) && :throw || options.delete(:raise) && :raise # TODO deprecate :raise + + enforce_available_locales!(locale) + + result = catch(:exception) do + if key.is_a?(Array) + key.map { |k| backend.translate(locale, k, options) } + else + backend.translate(locale, key, options) + end + end + result.is_a?(MissingTranslation) ? handle_exception(handling, result, locale, key, options) : result + end + alias :t :translate + + # Wrapper for translate that adds :raise => true. With + # this option, if no translation is found, it will raise I18n::MissingTranslationData + def translate!(key, options={}) + translate(key, options.merge(:raise => true)) + end + alias :t! :translate! + + # Returns true if a translation exists for a given key, otherwise returns false. + def exists?(key, locale = config.locale) + raise I18n::ArgumentError if key.is_a?(String) && key.empty? + config.backend.exists?(locale, key) + end + + # Transliterates UTF-8 characters to ASCII. By default this method will + # transliterate only Latin strings to an ASCII approximation: + # + # I18n.transliterate("Ærøskøbing") + # # => "AEroskobing" + # + # I18n.transliterate("日本語") + # # => "???" + # + # It's also possible to add support for per-locale transliterations. I18n + # expects transliteration rules to be stored at + # i18n.transliterate.rule. + # + # Transliteration rules can either be a Hash or a Proc. Procs must accept a + # single string argument. Hash rules inherit the default transliteration + # rules, while Procs do not. + # + # *Examples* + # + # Setting a Hash in .yml: + # + # i18n: + # transliterate: + # rule: + # ü: "ue" + # ö: "oe" + # + # Setting a Hash using Ruby: + # + # store_translations(:de, :i18n => { + # :transliterate => { + # :rule => { + # "ü" => "ue", + # "ö" => "oe" + # } + # } + # ) + # + # Setting a Proc: + # + # translit = lambda {|string| MyTransliterator.transliterate(string) } + # store_translations(:xx, :i18n => {:transliterate => {:rule => translit}) + # + # Transliterating strings: + # + # I18n.locale = :en + # I18n.transliterate("Jürgen") # => "Jurgen" + # I18n.locale = :de + # I18n.transliterate("Jürgen") # => "Juergen" + # I18n.transliterate("Jürgen", :locale => :en) # => "Jurgen" + # I18n.transliterate("Jürgen", :locale => :de) # => "Juergen" + def transliterate(*args) + options = args.pop.dup if args.last.is_a?(Hash) + key = args.shift + locale = options && options.delete(:locale) || config.locale + handling = options && (options.delete(:throw) && :throw || options.delete(:raise) && :raise) + replacement = options && options.delete(:replacement) + enforce_available_locales!(locale) + config.backend.transliterate(locale, key, replacement) + rescue I18n::ArgumentError => exception + handle_exception(handling, exception, locale, key, options || {}) + end + + # Localizes certain objects, such as dates and numbers to local formatting. + def localize(object, options = nil) + options = options ? options.dup : {} + locale = options.delete(:locale) || config.locale + format = options.delete(:format) || :default + enforce_available_locales!(locale) + config.backend.localize(locale, object, format, options) + end + alias :l :localize + + # Executes block with given I18n.locale set. + def with_locale(tmp_locale = nil) + if tmp_locale + current_locale = self.locale + self.locale = tmp_locale + end + yield + ensure + self.locale = current_locale if tmp_locale + end + + # Merges the given locale, key and scope into a single array of keys. + # Splits keys that contain dots into multiple keys. Makes sure all + # keys are Symbols. + def normalize_keys(locale, key, scope, separator = nil) + separator ||= I18n.default_separator + + keys = [] + keys.concat normalize_key(locale, separator) + keys.concat normalize_key(scope, separator) + keys.concat normalize_key(key, separator) + keys + end + + # Returns true when the passed locale, which can be either a String or a + # Symbol, is in the list of available locales. Returns false otherwise. + def locale_available?(locale) + I18n.config.available_locales_set.include?(locale) + end + + # Raises an InvalidLocale exception when the passed locale is not available. + def enforce_available_locales!(locale) + if config.enforce_available_locales + raise I18n::InvalidLocale.new(locale) if !locale_available?(locale) + end + end + + def available_locales_initialized? + config.available_locales_initialized? + end + + private + + # Any exceptions thrown in translate will be sent to the @@exception_handler + # which can be a Symbol, a Proc or any other Object unless they're forced to + # be raised or thrown (MissingTranslation). + # + # If exception_handler is a Symbol then it will simply be sent to I18n as + # a method call. A Proc will simply be called. In any other case the + # method #call will be called on the exception_handler object. + # + # Examples: + # + # I18n.exception_handler = :custom_exception_handler # this is the default + # I18n.custom_exception_handler(exception, locale, key, options) # will be called like this + # + # I18n.exception_handler = lambda { |*args| ... } # a lambda + # I18n.exception_handler.call(exception, locale, key, options) # will be called like this + # + # I18n.exception_handler = I18nExceptionHandler.new # an object + # I18n.exception_handler.call(exception, locale, key, options) # will be called like this + def handle_exception(handling, exception, locale, key, options) + case handling + when :raise + raise exception.respond_to?(:to_exception) ? exception.to_exception : exception + when :throw + throw :exception, exception + else + case handler = options[:exception_handler] || config.exception_handler + when Symbol + send(handler, exception, locale, key, options) + else + handler.call(exception, locale, key, options) + end + end + end + + @@normalized_key_cache = I18n.new_double_nested_cache + + def normalize_key(key, separator) + @@normalized_key_cache[separator][key] ||= + case key + when Array + key.map { |k| normalize_key(k, separator) }.flatten + else + keys = key.to_s.split(separator) + keys.delete('') + keys.map! { |k| k.to_sym } + keys + end + end + end + + extend Base +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend.rb new file mode 100644 index 0000000000..46ef054bfc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend.rb @@ -0,0 +1,18 @@ +module I18n + module Backend + autoload :Base, 'i18n/backend/base' + autoload :InterpolationCompiler, 'i18n/backend/interpolation_compiler' + autoload :Cache, 'i18n/backend/cache' + autoload :Cascade, 'i18n/backend/cascade' + autoload :Chain, 'i18n/backend/chain' + autoload :Fallbacks, 'i18n/backend/fallbacks' + autoload :Flatten, 'i18n/backend/flatten' + autoload :Gettext, 'i18n/backend/gettext' + autoload :KeyValue, 'i18n/backend/key_value' + autoload :Memoize, 'i18n/backend/memoize' + autoload :Metadata, 'i18n/backend/metadata' + autoload :Pluralization, 'i18n/backend/pluralization' + autoload :Simple, 'i18n/backend/simple' + autoload :Transliterator, 'i18n/backend/transliterator' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/base.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/base.rb new file mode 100644 index 0000000000..a73a3ae03c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/base.rb @@ -0,0 +1,255 @@ +require 'yaml' +require 'i18n/core_ext/hash' +require 'i18n/core_ext/kernel/suppress_warnings' + +module I18n + module Backend + module Base + include I18n::Backend::Transliterator + + # Accepts a list of paths to translation files. Loads translations from + # plain Ruby (*.rb) or YAML files (*.yml). See #load_rb and #load_yml + # for details. + def load_translations(*filenames) + filenames = I18n.load_path if filenames.empty? + filenames.flatten.each { |filename| load_file(filename) } + end + + # This method receives a locale, a data hash and options for storing translations. + # Should be implemented + def store_translations(locale, data, options = {}) + raise NotImplementedError + end + + def translate(locale, key, options = {}) + raise I18n::ArgumentError if (key.is_a?(String) || key.is_a?(Symbol)) && key.empty? + raise InvalidLocale.new(locale) unless locale + return nil if key.nil? && !options.key?(:default) + + entry = lookup(locale, key, options[:scope], options) unless key.nil? + + if entry.nil? && options.key?(:default) + entry = default(locale, key, options[:default], options) + else + entry = resolve(locale, key, entry, options) + end + + count = options[:count] + + if entry.nil? && (subtrees? || !count) + if (options.key?(:default) && !options[:default].nil?) || !options.key?(:default) + throw(:exception, I18n::MissingTranslation.new(locale, key, options)) + end + end + + entry = entry.dup if entry.is_a?(String) + entry = pluralize(locale, entry, count) if count + + if entry.nil? && !subtrees? + throw(:exception, I18n::MissingTranslation.new(locale, key, options)) + end + + deep_interpolation = options[:deep_interpolation] + values = options.except(*RESERVED_KEYS) + if values + entry = if deep_interpolation + deep_interpolate(locale, entry, values) + else + interpolate(locale, entry, values) + end + end + entry + end + + def exists?(locale, key) + lookup(locale, key) != nil + end + + # Acts the same as +strftime+, but uses a localized version of the + # format string. Takes a key from the date/time formats translations as + # a format argument (e.g., :short in :'date.formats'). + def localize(locale, object, format = :default, options = {}) + if object.nil? && options.include?(:default) + return options[:default] + end + raise ArgumentError, "Object must be a Date, DateTime or Time object. #{object.inspect} given." unless object.respond_to?(:strftime) + + if Symbol === format + key = format + type = object.respond_to?(:sec) ? 'time' : 'date' + options = options.merge(:raise => true, :object => object, :locale => locale) + format = I18n.t(:"#{type}.formats.#{key}", options) + end + + format = translate_localization_format(locale, object, format, options) + object.strftime(format) + end + + # Returns an array of locales for which translations are available + # ignoring the reserved translation meta data key :i18n. + def available_locales + raise NotImplementedError + end + + def reload! + end + + protected + + # The method which actually looks up for the translation in the store. + def lookup(locale, key, scope = [], options = {}) + raise NotImplementedError + end + + def subtrees? + true + end + + # Evaluates defaults. + # If given subject is an Array, it walks the array and returns the + # first translation that can be resolved. Otherwise it tries to resolve + # the translation directly. + def default(locale, object, subject, options = {}) + options = options.dup.reject { |key, value| key == :default } + case subject + when Array + subject.each do |item| + result = resolve(locale, object, item, options) + return result unless result.nil? + end and nil + else + resolve(locale, object, subject, options) + end + end + + # Resolves a translation. + # If the given subject is a Symbol, it will be translated with the + # given options. If it is a Proc then it will be evaluated. All other + # subjects will be returned directly. + def resolve(locale, object, subject, options = {}) + return subject if options[:resolve] == false + result = catch(:exception) do + case subject + when Symbol + I18n.translate(subject, options.merge(:locale => locale, :throw => true)) + when Proc + date_or_time = options.delete(:object) || object + resolve(locale, object, subject.call(date_or_time, options)) + else + subject + end + end + result unless result.is_a?(MissingTranslation) + end + + # Picks a translation from a pluralized mnemonic subkey according to English + # pluralization rules : + # - It will pick the :one subkey if count is equal to 1. + # - It will pick the :other subkey otherwise. + # - It will pick the :zero subkey in the special case where count is + # equal to 0 and there is a :zero subkey present. This behaviour is + # not standard with regards to the CLDR pluralization rules. + # Other backends can implement more flexible or complex pluralization rules. + def pluralize(locale, entry, count) + return entry unless entry.is_a?(Hash) && count + + key = pluralization_key(entry, count) + raise InvalidPluralizationData.new(entry, count, key) unless entry.has_key?(key) + entry[key] + end + + # Interpolates values into a given subject. + # + # if the given subject is a string then: + # method interpolates "file %{file} opened by %%{user}", :file => 'test.txt', :user => 'Mr. X' + # # => "file test.txt opened by %{user}" + # + # if the given subject is an array then: + # each element of the array is recursively interpolated (until it finds a string) + # method interpolates ["yes, %{user}", ["maybe no, %{user}, "no, %{user}"]], :user => "bartuz" + # # => "["yes, bartuz",["maybe no, bartuz", "no, bartuz"]]" + def interpolate(locale, subject, values = {}) + return subject if values.empty? + + case subject + when ::String then I18n.interpolate(subject, values) + when ::Array then subject.map { |element| interpolate(locale, element, values) } + else + subject + end + end + + # Deep interpolation + # + # deep_interpolate { people: { ann: "Ann is %{ann}", john: "John is %{john}" } }, + # ann: 'good', john: 'big' + # #=> { people: { ann: "Ann is good", john: "John is big" } } + def deep_interpolate(locale, data, values = {}) + return data if values.empty? + + case data + when ::String + I18n.interpolate(data, values) + when ::Hash + data.each_with_object({}) do |(k, v), result| + result[k] = deep_interpolate(locale, v, values) + end + when ::Array + data.map do |v| + deep_interpolate(locale, v, values) + end + else + data + end + end + + # Loads a single translations file by delegating to #load_rb or + # #load_yml depending on the file extension and directly merges the + # data to the existing translations. Raises I18n::UnknownFileType + # for all other file extensions. + def load_file(filename) + type = File.extname(filename).tr('.', '').downcase + raise UnknownFileType.new(type, filename) unless respond_to?(:"load_#{type}", true) + data = send(:"load_#{type}", filename) + unless data.is_a?(Hash) + raise InvalidLocaleData.new(filename, 'expects it to return a hash, but does not') + end + data.each { |locale, d| store_translations(locale, d || {}) } + end + + # Loads a plain Ruby translations file. eval'ing the file must yield + # a Hash containing translation data with locales as toplevel keys. + def load_rb(filename) + eval(IO.read(filename), binding, filename) + end + + # Loads a YAML translations file. The data must have locales as + # toplevel keys. + def load_yml(filename) + begin + YAML.load_file(filename) + rescue TypeError, ScriptError, StandardError => e + raise InvalidLocaleData.new(filename, e.inspect) + end + end + + def translate_localization_format(locale, object, format, options) + format.to_s.gsub(/%[aAbBpP]/) do |match| + case match + when '%a' then I18n.t(:"date.abbr_day_names", :locale => locale, :format => format)[object.wday] + when '%A' then I18n.t(:"date.day_names", :locale => locale, :format => format)[object.wday] + when '%b' then I18n.t(:"date.abbr_month_names", :locale => locale, :format => format)[object.mon] + when '%B' then I18n.t(:"date.month_names", :locale => locale, :format => format)[object.mon] + when '%p' then I18n.t(:"time.#{object.hour < 12 ? :am : :pm}", :locale => locale, :format => format).upcase if object.respond_to? :hour + when '%P' then I18n.t(:"time.#{object.hour < 12 ? :am : :pm}", :locale => locale, :format => format).downcase if object.respond_to? :hour + end + end + end + + def pluralization_key(entry, count) + key = :zero if count == 0 && entry.has_key?(:zero) + key ||= count == 1 ? :one : :other + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cache.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cache.rb new file mode 100644 index 0000000000..1aa6434876 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cache.rb @@ -0,0 +1,114 @@ +# This module allows you to easily cache all responses from the backend - thus +# speeding up the I18n aspects of your application quite a bit. +# +# To enable caching you can simply include the Cache module to the Simple +# backend - or whatever other backend you are using: +# +# I18n::Backend::Simple.send(:include, I18n::Backend::Cache) +# +# You will also need to set a cache store implementation that you want to use: +# +# I18n.cache_store = ActiveSupport::Cache.lookup_store(:memory_store) +# +# You can use any cache implementation you want that provides the same API as +# ActiveSupport::Cache (only the methods #fetch and #write are being used). +# +# The cache_key implementation by default assumes you pass values that return +# a valid key from #hash (see +# http://www.ruby-doc.org/core/classes/Object.html#M000337). However, you can +# configure your own digest method via which responds to #hexdigest (see +# http://ruby-doc.org/stdlib/libdoc/digest/rdoc/index.html): +# +# I18n.cache_key_digest = Digest::MD5.new +# +# If you use a lambda as a default value in your translation like this: +# +# I18n.t(:"date.order", :default => lambda {[:month, :day, :year]}) +# +# Then you will always have a cache miss, because each time this method +# is called the lambda will have a different hash value. If you know +# the result of the lambda is a constant as in the example above, then +# to cache this you can make the lambda a constant, like this: +# +# DEFAULT_DATE_ORDER = lambda {[:month, :day, :year]} +# ... +# I18n.t(:"date.order", :default => DEFAULT_DATE_ORDER) +# +# If the lambda may result in different values for each call then consider +# also using the Memoize backend. +# +module I18n + class << self + @@cache_store = nil + @@cache_namespace = nil + @@cache_key_digest = nil + + def cache_store + @@cache_store + end + + def cache_store=(store) + @@cache_store = store + end + + def cache_namespace + @@cache_namespace + end + + def cache_namespace=(namespace) + @@cache_namespace = namespace + end + + def cache_key_digest + @@cache_key_digest + end + + def cache_key_digest=(key_digest) + @@cache_key_digest = key_digest + end + + def perform_caching? + !cache_store.nil? + end + end + + module Backend + # TODO Should the cache be cleared if new translations are stored? + module Cache + def translate(locale, key, options = {}) + I18n.perform_caching? ? fetch(cache_key(locale, key, options)) { super } : super + end + + protected + + def fetch(cache_key, &block) + result = _fetch(cache_key, &block) + throw(:exception, result) if result.is_a?(MissingTranslation) + result = result.dup if result.frozen? rescue result + result + end + + def _fetch(cache_key, &block) + result = I18n.cache_store.read(cache_key) + return result unless result.nil? + result = catch(:exception, &block) + I18n.cache_store.write(cache_key, result) unless result.is_a?(Proc) + result + end + + def cache_key(locale, key, options) + # This assumes that only simple, native Ruby values are passed to I18n.translate. + "i18n/#{I18n.cache_namespace}/#{locale}/#{digest_item(key)}/#{USE_INSPECT_HASH ? digest_item(options.inspect) : digest_item(options)}" + end + + private + # In Ruby < 1.9 the following is true: { :foo => 1, :bar => 2 }.hash == { :foo => 2, :bar => 1 }.hash + # Therefore we must use the hash of the inspect string instead to avoid cache key colisions. + USE_INSPECT_HASH = RUBY_VERSION <= "1.9" + + def digest_item(key) + I18n.cache_key_digest ? I18n.cache_key_digest.hexdigest(key.to_s) : key.hash + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cascade.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cascade.rb new file mode 100644 index 0000000000..d8fb1cf48b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/cascade.rb @@ -0,0 +1,54 @@ +# The Cascade module adds the ability to do cascading lookups to backends that +# are compatible to the Simple backend. +# +# By cascading lookups we mean that for any key that can not be found the +# Cascade module strips one segment off the scope part of the key and then +# tries to look up the key in that scope. +# +# E.g. when a lookup for the key :"foo.bar.baz" does not yield a result then +# the segment :bar will be stripped off the scope part :"foo.bar" and the new +# scope :foo will be used to look up the key :baz. If that does not succeed +# then the remaining scope segment :foo will be omitted, too, and again the +# key :baz will be looked up (now with no scope). +# +# To enable a cascading lookup one passes the :cascade option: +# +# I18n.t(:'foo.bar.baz', :cascade => true) +# +# This will return the first translation found for :"foo.bar.baz", :"foo.baz" +# or :baz in this order. +# +# The cascading lookup takes precedence over resolving any given defaults. +# I.e. defaults will kick in after the cascading lookups haven't succeeded. +# +# This behavior is useful for libraries like ActiveRecord validations where +# the library wants to give users a bunch of more or less fine-grained options +# of scopes for a particular key. +# +# Thanks to Clemens Kofler for the initial idea and implementation! See +# http://github.com/clemens/i18n-cascading-backend + +module I18n + module Backend + module Cascade + def lookup(locale, key, scope = [], options = {}) + return super unless cascade = options[:cascade] + + cascade = { :step => 1 } unless cascade.is_a?(Hash) + step = cascade[:step] || 1 + offset = cascade[:offset] || 1 + separator = options[:separator] || I18n.default_separator + skip_root = cascade.has_key?(:skip_root) ? cascade[:skip_root] : true + + scope = I18n.normalize_keys(nil, key, scope, separator) + key = (scope.slice!(-offset, offset) || []).join(separator) + + begin + result = super + return result unless result.nil? + scope = scope.dup + end while (!scope.empty? || !skip_root) && scope.slice!(-step, step) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/chain.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/chain.rb new file mode 100644 index 0000000000..2a45cad340 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/chain.rb @@ -0,0 +1,97 @@ +module I18n + module Backend + # Backend that chains multiple other backends and checks each of them when + # a translation needs to be looked up. This is useful when you want to use + # standard translations with a Simple backend but store custom application + # translations in a database or other backends. + # + # To use the Chain backend instantiate it and set it to the I18n module. + # You can add chained backends through the initializer or backends + # accessor: + # + # # preserves the existing Simple backend set to I18n.backend + # I18n.backend = I18n::Backend::Chain.new(I18n::Backend::ActiveRecord.new, I18n.backend) + # + # The implementation assumes that all backends added to the Chain implement + # a lookup method with the same API as Simple backend does. + class Chain + module Implementation + include Base + + attr_accessor :backends + + def initialize(*backends) + self.backends = backends + end + + def reload! + backends.each { |backend| backend.reload! } + end + + def store_translations(locale, data, options = {}) + backends.first.store_translations(locale, data, options) + end + + def available_locales + backends.map { |backend| backend.available_locales }.flatten.uniq + end + + def translate(locale, key, default_options = {}) + namespace = nil + options = default_options.except(:default) + + backends.each do |backend| + catch(:exception) do + options = default_options if backend == backends.last + translation = backend.translate(locale, key, options) + if namespace_lookup?(translation, options) + namespace = _deep_merge(translation, namespace || {}) + elsif !translation.nil? || (options.key?(:default) && options[:default].nil?) + return translation + end + end + end + + return namespace if namespace + throw(:exception, I18n::MissingTranslation.new(locale, key, options)) + end + + def exists?(locale, key) + backends.any? do |backend| + backend.exists?(locale, key) + end + end + + def localize(locale, object, format = :default, options = {}) + backends.each do |backend| + catch(:exception) do + result = backend.localize(locale, object, format, options) and return result + end + end + throw(:exception, I18n::MissingTranslation.new(locale, format, options)) + end + + protected + def namespace_lookup?(result, options) + result.is_a?(Hash) && !options.has_key?(:count) + end + + private + # This is approximately what gets used in ActiveSupport. + # However since we are not guaranteed to run in an ActiveSupport context + # it is wise to have our own copy. We underscore it + # to not pollute the namespace of the including class. + def _deep_merge(hash, other_hash) + copy = hash.dup + other_hash.each_pair do |k,v| + value_from_other = hash[k] + copy[k] = value_from_other.is_a?(Hash) && v.is_a?(Hash) ? _deep_merge(value_from_other, v) : v + end + copy + end + end + + include Implementation + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/fallbacks.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/fallbacks.rb new file mode 100644 index 0000000000..a3badaea57 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/fallbacks.rb @@ -0,0 +1,86 @@ +# I18n locale fallbacks are useful when you want your application to use +# translations from other locales when translations for the current locale are +# missing. E.g. you might want to use :en translations when translations in +# your applications main locale :de are missing. +# +# To enable locale fallbacks you can simply include the Fallbacks module to +# the Simple backend - or whatever other backend you are using: +# +# I18n::Backend::Simple.include(I18n::Backend::Fallbacks) +module I18n + @@fallbacks = nil + + class << self + # Returns the current fallbacks implementation. Defaults to +I18n::Locale::Fallbacks+. + def fallbacks + @@fallbacks ||= I18n::Locale::Fallbacks.new + end + + # Sets the current fallbacks implementation. Use this to set a different fallbacks implementation. + def fallbacks=(fallbacks) + @@fallbacks = fallbacks + end + end + + module Backend + module Fallbacks + # Overwrites the Base backend translate method so that it will try each + # locale given by I18n.fallbacks for the given locale. E.g. for the + # locale :"de-DE" it might try the locales :"de-DE", :de and :en + # (depends on the fallbacks implementation) until it finds a result with + # the given options. If it does not find any result for any of the + # locales it will then throw MissingTranslation as usual. + # + # The default option takes precedence over fallback locales only when + # it's a Symbol. When the default contains a String, Proc or Hash + # it is evaluated last after all the fallback locales have been tried. + def translate(locale, key, options = {}) + return super unless options.fetch(:fallback, true) + return super if options[:fallback_in_progress] + default = extract_non_symbol_default!(options) if options[:default] + + begin + options[:fallback_in_progress] = true + I18n.fallbacks[locale].each do |fallback| + begin + catch(:exception) do + result = super(fallback, key, options) + return result unless result.nil? + end + rescue I18n::InvalidLocale + # we do nothing when the locale is invalid, as this is a fallback anyways. + end + end + ensure + options.delete(:fallback_in_progress) + end + + return if options.key?(:default) && options[:default].nil? + + return super(locale, nil, options.merge(:default => default)) if default + throw(:exception, I18n::MissingTranslation.new(locale, key, options)) + end + + def extract_non_symbol_default!(options) + defaults = [options[:default]].flatten + first_non_symbol_default = defaults.detect{|default| !default.is_a?(Symbol)} + if first_non_symbol_default + options[:default] = defaults[0, defaults.index(first_non_symbol_default)] + end + return first_non_symbol_default + end + + def exists?(locale, key) + I18n.fallbacks[locale].each do |fallback| + begin + return true if super(fallback, key) + rescue I18n::InvalidLocale + # we do nothing when the locale is invalid, as this is a fallback anyways. + end + end + + false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/flatten.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/flatten.rb new file mode 100644 index 0000000000..995c34629c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/flatten.rb @@ -0,0 +1,113 @@ +module I18n + module Backend + # This module contains several helpers to assist flattening translations. + # You may want to flatten translations for: + # + # 1) speed up lookups, as in the Memoize backend; + # 2) In case you want to store translations in a data store, as in ActiveRecord backend; + # + # You can check both backends above for some examples. + # This module also keeps all links in a hash so they can be properly resolved when flattened. + module Flatten + SEPARATOR_ESCAPE_CHAR = "\001" + FLATTEN_SEPARATOR = "." + + # normalize_keys the flatten way. This method is significantly faster + # and creates way less objects than the one at I18n.normalize_keys. + # It also handles escaping the translation keys. + def self.normalize_flat_keys(locale, key, scope, separator) + keys = [scope, key].flatten.compact + separator ||= I18n.default_separator + + if separator != FLATTEN_SEPARATOR + keys.map! do |k| + k.to_s.tr("#{FLATTEN_SEPARATOR}#{separator}", + "#{SEPARATOR_ESCAPE_CHAR}#{FLATTEN_SEPARATOR}") + end + end + + keys.join(".") + end + + # Receives a string and escape the default separator. + def self.escape_default_separator(key) #:nodoc: + key.to_s.tr(FLATTEN_SEPARATOR, SEPARATOR_ESCAPE_CHAR) + end + + # Shortcut to I18n::Backend::Flatten.normalize_flat_keys + # and then resolve_links. + def normalize_flat_keys(locale, key, scope, separator) + key = I18n::Backend::Flatten.normalize_flat_keys(locale, key, scope, separator) + resolve_link(locale, key) + end + + # Store flattened links. + def links + @links ||= I18n.new_double_nested_cache + end + + # Flatten keys for nested Hashes by chaining up keys: + # + # >> { "a" => { "b" => { "c" => "d", "e" => "f" }, "g" => "h" }, "i" => "j"}.wind + # => { "a.b.c" => "d", "a.b.e" => "f", "a.g" => "h", "i" => "j" } + # + def flatten_keys(hash, escape, prev_key=nil, &block) + hash.each_pair do |key, value| + key = escape_default_separator(key) if escape + curr_key = [prev_key, key].compact.join(FLATTEN_SEPARATOR).to_sym + yield curr_key, value + flatten_keys(value, escape, curr_key, &block) if value.is_a?(Hash) + end + end + + # Receives a hash of translations (where the key is a locale and + # the value is another hash) and return a hash with all + # translations flattened. + # + # Nested hashes are included in the flattened hash just if subtree + # is true and Symbols are automatically stored as links. + def flatten_translations(locale, data, escape, subtree) + hash = {} + flatten_keys(data, escape) do |key, value| + if value.is_a?(Hash) + hash[key] = value if subtree + else + store_link(locale, key, value) if value.is_a?(Symbol) + hash[key] = value + end + end + hash + end + + protected + + def store_link(locale, key, link) + links[locale.to_sym][key.to_s] = link.to_s + end + + def resolve_link(locale, key) + key, locale = key.to_s, locale.to_sym + links = self.links[locale] + + if links.key?(key) + links[key] + elsif link = find_link(locale, key) + store_link(locale, key, key.gsub(*link)) + else + key + end + end + + def find_link(locale, key) #:nodoc: + links[locale].each_pair do |from, to| + return [from, to] if key[0, from.length] == from + end && nil + end + + def escape_default_separator(key) #:nodoc: + I18n::Backend::Flatten.escape_default_separator(key) + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/gettext.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/gettext.rb new file mode 100644 index 0000000000..f41df68578 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/gettext.rb @@ -0,0 +1,81 @@ +require 'i18n/gettext' +require 'i18n/gettext/po_parser' + +module I18n + module Backend + # Experimental support for using Gettext po files to store translations. + # + # To use this you can simply include the module to the Simple backend - or + # whatever other backend you are using. + # + # I18n::Backend::Simple.include(I18n::Backend::Gettext) + # + # Now you should be able to include your Gettext translation (*.po) files to + # the +I18n.load_path+ so they're loaded to the backend and you can use them as + # usual: + # + # I18n.load_path += Dir["path/to/locales/*.po"] + # + # Following the Gettext convention this implementation expects that your + # translation files are named by their locales. E.g. the file en.po would + # contain the translations for the English locale. + # + # To translate text you must use one of the translate methods provided by + # I18n::Gettext::Helpers. + # + # include I18n::Gettext::Helpers + # puts _("some string") + # + # Without it strings containing periods (".") will not be translated. + + module Gettext + class PoData < Hash + def set_comment(msgid_or_sym, comment) + # ignore + end + end + + protected + def load_po(filename) + locale = ::File.basename(filename, '.po').to_sym + data = normalize(locale, parse(filename)) + { locale => data } + end + + def parse(filename) + GetText::PoParser.new.parse(::File.read(filename), PoData.new) + end + + def normalize(locale, data) + data.inject({}) do |result, (key, value)| + unless key.nil? || key.empty? + key = key.gsub(I18n::Gettext::CONTEXT_SEPARATOR, '|') + key, value = normalize_pluralization(locale, key, value) if key.index("\000") + + parts = key.split('|').reverse + normalized = parts.inject({}) do |_normalized, part| + { part => _normalized.empty? ? value : _normalized } + end + + result.deep_merge!(normalized) + end + result + end + end + + def normalize_pluralization(locale, key, value) + # FIXME po_parser includes \000 chars that can not be turned into Symbols + key = key.gsub("\000", I18n::Gettext::PLURAL_SEPARATOR).split(I18n::Gettext::PLURAL_SEPARATOR).first + + keys = I18n::Gettext.plural_keys(locale) + values = value.split("\000") + raise "invalid number of plurals: #{values.size}, keys: #{keys.inspect} on #{locale} locale for msgid #{key.inspect} with values #{values.inspect}" if values.size != keys.size + + result = {} + values.each_with_index { |_value, ix| result[keys[ix]] = _value } + [key, result] + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/interpolation_compiler.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/interpolation_compiler.rb new file mode 100644 index 0000000000..0e3a603af9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/interpolation_compiler.rb @@ -0,0 +1,121 @@ +# The InterpolationCompiler module contains optimizations that can tremendously +# speed up the interpolation process on the Simple backend. +# +# It works by defining a pre-compiled method on stored translation Strings that +# already bring all the knowledge about contained interpolation variables etc. +# so that the actual recurring interpolation will be very fast. +# +# To enable pre-compiled interpolations you can simply include the +# InterpolationCompiler module to the Simple backend: +# +# I18n::Backend::Simple.include(I18n::Backend::InterpolationCompiler) +# +# Note that InterpolationCompiler does not yield meaningful results and consequently +# should not be used with Ruby 1.9 (YARV) but improves performance everywhere else +# (jRuby, Rubinius). +module I18n + module Backend + module InterpolationCompiler + module Compiler + extend self + + TOKENIZER = /(%%\{[^\}]+\}|%\{[^\}]+\})/ + INTERPOLATION_SYNTAX_PATTERN = /(%)?(%\{([^\}]+)\})/ + + def compile_if_an_interpolation(string) + if interpolated_str?(string) + string.instance_eval <<-RUBY_EVAL, __FILE__, __LINE__ + def i18n_interpolate(v = {}) + "#{compiled_interpolation_body(string)}" + end + RUBY_EVAL + end + + string + end + + def interpolated_str?(str) + str.kind_of?(::String) && str =~ INTERPOLATION_SYNTAX_PATTERN + end + + protected + # tokenize("foo %{bar} baz %%{buz}") # => ["foo ", "%{bar}", " baz ", "%%{buz}"] + def tokenize(str) + str.split(TOKENIZER) + end + + def compiled_interpolation_body(str) + tokenize(str).map do |token| + (matchdata = token.match(INTERPOLATION_SYNTAX_PATTERN)) ? handle_interpolation_token(token, matchdata) : escape_plain_str(token) + end.join + end + + def handle_interpolation_token(interpolation, matchdata) + escaped, pattern, key = matchdata.values_at(1, 2, 3) + escaped ? pattern : compile_interpolation_token(key.to_sym) + end + + def compile_interpolation_token(key) + "\#{#{interpolate_or_raise_missing(key)}}" + end + + def interpolate_or_raise_missing(key) + escaped_key = escape_key_sym(key) + RESERVED_KEYS.include?(key) ? reserved_key(escaped_key) : interpolate_key(escaped_key) + end + + def interpolate_key(key) + [direct_key(key), nil_key(key), missing_key(key)].join('||') + end + + def direct_key(key) + "((t = v[#{key}]) && t.respond_to?(:call) ? t.call : t)" + end + + def nil_key(key) + "(v.has_key?(#{key}) && '')" + end + + def missing_key(key) + "I18n.config.missing_interpolation_argument_handler.call(#{key}, v, self)" + end + + def reserved_key(key) + "raise(ReservedInterpolationKey.new(#{key}, self))" + end + + def escape_plain_str(str) + str.gsub(/"|\\|#/) {|x| "\\#{x}"} + end + + def escape_key_sym(key) + # rely on Ruby to do all the hard work :) + key.to_sym.inspect + end + end + + def interpolate(locale, string, values) + if string.respond_to?(:i18n_interpolate) + string.i18n_interpolate(values) + elsif values + super + else + string + end + end + + def store_translations(locale, data, options = {}) + compile_all_strings_in(data) + super + end + + protected + def compile_all_strings_in(data) + data.each_value do |value| + Compiler.compile_if_an_interpolation(value) + compile_all_strings_in(value) if value.kind_of?(Hash) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/key_value.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/key_value.rb new file mode 100644 index 0000000000..95bdc64178 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/key_value.rb @@ -0,0 +1,177 @@ +require 'i18n/backend/base' + +module I18n + + begin + require 'oj' + class JSON + class << self + def encode(value) + Oj::Rails.encode(value) + end + def decode(value) + Oj.load(value) + end + end + end + rescue LoadError + require 'active_support/json' + JSON = ActiveSupport::JSON + end + + module Backend + # This is a basic backend for key value stores. It receives on + # initialization the store, which should respond to three methods: + # + # * store#[](key) - Used to get a value + # * store#[]=(key, value) - Used to set a value + # * store#keys - Used to get all keys + # + # Since these stores only supports string, all values are converted + # to JSON before being stored, allowing it to also store booleans, + # hashes and arrays. However, this store does not support Procs. + # + # As the ActiveRecord backend, Symbols are just supported when loading + # translations from the filesystem or through explicit store translations. + # + # Also, avoid calling I18n.available_locales since it's a somehow + # expensive operation in most stores. + # + # == Example + # + # To setup I18n to use TokyoCabinet in memory is quite straightforward: + # + # require 'rufus/tokyo/cabinet' # gem install rufus-tokyo + # I18n.backend = I18n::Backend::KeyValue.new(Rufus::Tokyo::Cabinet.new('*')) + # + # == Performance + # + # You may make this backend even faster by including the Memoize module. + # However, notice that you should properly clear the cache if you change + # values directly in the key-store. + # + # == Subtrees + # + # In most backends, you are allowed to retrieve part of a translation tree: + # + # I18n.backend.store_translations :en, :foo => { :bar => :baz } + # I18n.t "foo" #=> { :bar => :baz } + # + # This backend supports this feature by default, but it slows down the storage + # of new data considerably and makes hard to delete entries. That said, you are + # allowed to disable the storage of subtrees on initialization: + # + # I18n::Backend::KeyValue.new(@store, false) + # + # This is useful if you are using a KeyValue backend chained to a Simple backend. + class KeyValue + module Implementation + attr_accessor :store + + include Base, Flatten + + def initialize(store, subtrees=true) + @store, @subtrees = store, subtrees + end + + def store_translations(locale, data, options = {}) + escape = options.fetch(:escape, true) + flatten_translations(locale, data, escape, @subtrees).each do |key, value| + key = "#{locale}.#{key}" + + case value + when Hash + if @subtrees && (old_value = @store[key]) + old_value = JSON.decode(old_value) + value = old_value.deep_symbolize_keys.deep_merge!(value) if old_value.is_a?(Hash) + end + when Proc + raise "Key-value stores cannot handle procs" + end + + @store[key] = JSON.encode(value) unless value.is_a?(Symbol) + end + end + + def available_locales + locales = @store.keys.map { |k| k =~ /\./; $` } + locales.uniq! + locales.compact! + locales.map! { |k| k.to_sym } + locales + end + + protected + + def subtrees? + @subtrees + end + + def lookup(locale, key, scope = [], options = {}) + key = normalize_flat_keys(locale, key, scope, options[:separator]) + value = @store["#{locale}.#{key}"] + value = JSON.decode(value) if value + + if value.is_a?(Hash) + value.deep_symbolize_keys + elsif !value.nil? + value + elsif !@subtrees + SubtreeProxy.new("#{locale}.#{key}", @store) + end + end + + def pluralize(locale, entry, count) + if subtrees? + super + else + key = pluralization_key(entry, count) + entry[key] + end + end + end + + class SubtreeProxy + def initialize(master_key, store) + @master_key = master_key + @store = store + @subtree = nil + end + + def has_key?(key) + @subtree && @subtree.has_key?(key) || self[key] + end + + def [](key) + unless @subtree && value = @subtree[key] + value = @store["#{@master_key}.#{key}"] + if value + value = JSON.decode(value) + (@subtree ||= {})[key] = value + end + end + value + end + + def is_a?(klass) + Hash == klass || super + end + alias :kind_of? :is_a? + + def instance_of?(klass) + Hash == klass || super + end + + def nil? + @subtree.nil? + end + + def inspect + @subtree.inspect + end + end + + include Implementation + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/memoize.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/memoize.rb new file mode 100644 index 0000000000..a11bdec113 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/memoize.rb @@ -0,0 +1,46 @@ +# Memoize module simply memoizes the values returned by lookup using +# a flat hash and can tremendously speed up the lookup process in a backend. +# +# To enable it you can simply include the Memoize module to your backend: +# +# I18n::Backend::Simple.include(I18n::Backend::Memoize) +# +# Notice that it's the responsibility of the backend to define whenever the +# cache should be cleaned. +module I18n + module Backend + module Memoize + def available_locales + @memoized_locales ||= super + end + + def store_translations(locale, data, options = {}) + reset_memoizations!(locale) + super + end + + def reload! + reset_memoizations! + super + end + + protected + + def lookup(locale, key, scope = nil, options = {}) + flat_key = I18n::Backend::Flatten.normalize_flat_keys(locale, + key, scope, options[:separator]).to_sym + flat_hash = memoized_lookup[locale.to_sym] + flat_hash.key?(flat_key) ? flat_hash[flat_key] : (flat_hash[flat_key] = super) + end + + def memoized_lookup + @memoized_lookup ||= I18n.new_double_nested_cache + end + + def reset_memoizations!(locale=nil) + @memoized_locales = nil + (locale ? memoized_lookup[locale.to_sym] : memoized_lookup).clear + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/metadata.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/metadata.rb new file mode 100644 index 0000000000..a8d922a061 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/metadata.rb @@ -0,0 +1,69 @@ +# I18n translation metadata is useful when you want to access information +# about how a translation was looked up, pluralized or interpolated in +# your application. +# +# msg = I18n.t(:message, :default => 'Hi!', :scope => :foo) +# msg.translation_metadata +# # => { :key => :message, :scope => :foo, :default => 'Hi!' } +# +# If a :count option was passed to #translate it will be set to the metadata. +# Likewise, if any interpolation variables were passed they will also be set. +# +# To enable translation metadata you can simply include the Metadata module +# into the Simple backend class - or whatever other backend you are using: +# +# I18n::Backend::Simple.include(I18n::Backend::Metadata) +# +module I18n + module Backend + module Metadata + class << self + def included(base) + Object.class_eval do + def translation_metadata + unless self.frozen? + @translation_metadata ||= {} + else + {} + end + end + + def translation_metadata=(translation_metadata) + @translation_metadata = translation_metadata unless self.frozen? + end + end unless Object.method_defined?(:translation_metadata) + end + end + + def translate(locale, key, options = {}) + metadata = { + :locale => locale, + :key => key, + :scope => options[:scope], + :default => options[:default], + :separator => options[:separator], + :values => options.reject { |name, value| RESERVED_KEYS.include?(name) } + } + with_metadata(metadata) { super } + end + + def interpolate(locale, entry, values = {}) + metadata = entry.translation_metadata.merge(:original => entry) + with_metadata(metadata) { super } + end + + def pluralize(locale, entry, count) + with_metadata(:count => count) { super } + end + + protected + + def with_metadata(metadata, &block) + result = yield + result.translation_metadata = result.translation_metadata.merge(metadata) if result + result + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/pluralization.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/pluralization.rb new file mode 100644 index 0000000000..01e68d2794 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/pluralization.rb @@ -0,0 +1,53 @@ +# I18n Pluralization are useful when you want your application to +# customize pluralization rules. +# +# To enable locale specific pluralizations you can simply include the +# Pluralization module to the Simple backend - or whatever other backend you +# are using. +# +# I18n::Backend::Simple.include(I18n::Backend::Pluralization) +# +# You also need to make sure to provide pluralization algorithms to the +# backend, i.e. include them to your I18n.load_path accordingly. +module I18n + module Backend + module Pluralization + # Overwrites the Base backend translate method so that it will check the + # translation meta data space (:i18n) for a locale specific pluralization + # rule and use it to pluralize the given entry. I.e. the library expects + # pluralization rules to be stored at I18n.t(:'i18n.plural.rule') + # + # Pluralization rules are expected to respond to #call(count) and + # return a pluralization key. Valid keys depend on the translation data + # hash (entry) but it is generally recommended to follow CLDR's style, + # i.e., return one of the keys :zero, :one, :few, :many, :other. + # + # The :zero key is always picked directly when count equals 0 AND the + # translation data has the key :zero. This way translators are free to + # either pick a special :zero translation even for languages where the + # pluralizer does not return a :zero key. + def pluralize(locale, entry, count) + return entry unless entry.is_a?(Hash) and count + + pluralizer = pluralizer(locale) + if pluralizer.respond_to?(:call) + key = count == 0 && entry.has_key?(:zero) ? :zero : pluralizer.call(count) + raise InvalidPluralizationData.new(entry, count, key) unless entry.has_key?(key) + entry[key] + else + super + end + end + + protected + + def pluralizers + @pluralizers ||= {} + end + + def pluralizer(locale) + pluralizers[locale] ||= I18n.t(:'i18n.plural.rule', :locale => locale, :resolve => false) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/simple.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/simple.rb new file mode 100644 index 0000000000..4744130feb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/simple.rb @@ -0,0 +1,93 @@ +module I18n + module Backend + # A simple backend that reads translations from YAML files and stores them in + # an in-memory hash. Relies on the Base backend. + # + # The implementation is provided by a Implementation module allowing to easily + # extend Simple backend's behavior by including modules. E.g.: + # + # module I18n::Backend::Pluralization + # def pluralize(*args) + # # extended pluralization logic + # super + # end + # end + # + # I18n::Backend::Simple.include(I18n::Backend::Pluralization) + class Simple + (class << self; self; end).class_eval { public :include } + + module Implementation + include Base + + def initialized? + @initialized ||= false + end + + # Stores translations for the given locale in memory. + # This uses a deep merge for the translations hash, so existing + # translations will be overwritten by new ones only at the deepest + # level of the hash. + def store_translations(locale, data, options = {}) + if I18n.enforce_available_locales && + I18n.available_locales_initialized? && + !I18n.available_locales.include?(locale.to_sym) && + !I18n.available_locales.include?(locale.to_s) + return data + end + locale = locale.to_sym + translations[locale] ||= {} + data = data.deep_symbolize_keys + translations[locale].deep_merge!(data) + end + + # Get available locales from the translations hash + def available_locales + init_translations unless initialized? + translations.inject([]) do |locales, (locale, data)| + locales << locale unless data.size <= 1 && (data.empty? || data.has_key?(:i18n)) + locales + end + end + + # Clean up translations hash and set initialized to false on reload! + def reload! + @initialized = false + @translations = nil + super + end + + protected + + def init_translations + load_translations + @initialized = true + end + + def translations + @translations ||= {} + end + + # Looks up a translation from the translations hash. Returns nil if + # either key is nil, or locale, scope or key do not exist as a key in the + # nested translations hash. Splits keys or scopes containing dots + # into multiple keys, i.e. currency.format is regarded the same as + # %w(currency format). + def lookup(locale, key, scope = [], options = {}) + init_translations unless initialized? + keys = I18n.normalize_keys(locale, key, scope, options[:separator]) + + keys.inject(translations) do |result, _key| + _key = _key.to_sym + return nil unless result.is_a?(Hash) && result.has_key?(_key) + result = result[_key] + result = resolve(locale, _key, result, options.merge(:scope => nil)) if result.is_a?(Symbol) + result + end + end + end + + include Implementation + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/transliterator.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/transliterator.rb new file mode 100644 index 0000000000..2617bcf2a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/backend/transliterator.rb @@ -0,0 +1,106 @@ +# encoding: utf-8 +module I18n + module Backend + module Transliterator + DEFAULT_REPLACEMENT_CHAR = "?" + + # Given a locale and a UTF-8 string, return the locale's ASCII + # approximation for the string. + def transliterate(locale, string, replacement = nil) + @transliterators ||= {} + @transliterators[locale] ||= Transliterator.get I18n.t(:'i18n.transliterate.rule', + :locale => locale, :resolve => false, :default => {}) + @transliterators[locale].transliterate(string, replacement) + end + + # Get a transliterator instance. + def self.get(rule = nil) + if !rule || rule.kind_of?(Hash) + HashTransliterator.new(rule) + elsif rule.kind_of? Proc + ProcTransliterator.new(rule) + else + raise I18n::ArgumentError, "Transliteration rule must be a proc or a hash." + end + end + + # A transliterator which accepts a Proc as its transliteration rule. + class ProcTransliterator + def initialize(rule) + @rule = rule + end + + def transliterate(string, replacement = nil) + @rule.call(string) + end + end + + # A transliterator which accepts a Hash of characters as its translation + # rule. + class HashTransliterator + DEFAULT_APPROXIMATIONS = { + "À"=>"A", "Á"=>"A", "Â"=>"A", "Ã"=>"A", "Ä"=>"A", "Å"=>"A", "Æ"=>"AE", + "Ç"=>"C", "È"=>"E", "É"=>"E", "Ê"=>"E", "Ë"=>"E", "Ì"=>"I", "Í"=>"I", + "Î"=>"I", "Ï"=>"I", "Ð"=>"D", "Ñ"=>"N", "Ò"=>"O", "Ó"=>"O", "Ô"=>"O", + "Õ"=>"O", "Ö"=>"O", "×"=>"x", "Ø"=>"O", "Ù"=>"U", "Ú"=>"U", "Û"=>"U", + "Ü"=>"U", "Ý"=>"Y", "Þ"=>"Th", "ß"=>"ss", "à"=>"a", "á"=>"a", "â"=>"a", + "ã"=>"a", "ä"=>"a", "å"=>"a", "æ"=>"ae", "ç"=>"c", "è"=>"e", "é"=>"e", + "ê"=>"e", "ë"=>"e", "ì"=>"i", "í"=>"i", "î"=>"i", "ï"=>"i", "ð"=>"d", + "ñ"=>"n", "ò"=>"o", "ó"=>"o", "ô"=>"o", "õ"=>"o", "ö"=>"o", "ø"=>"o", + "ù"=>"u", "ú"=>"u", "û"=>"u", "ü"=>"u", "ý"=>"y", "þ"=>"th", "ÿ"=>"y", + "Ā"=>"A", "ā"=>"a", "Ă"=>"A", "ă"=>"a", "Ą"=>"A", "ą"=>"a", "Ć"=>"C", + "ć"=>"c", "Ĉ"=>"C", "ĉ"=>"c", "Ċ"=>"C", "ċ"=>"c", "Č"=>"C", "č"=>"c", + "Ď"=>"D", "ď"=>"d", "Đ"=>"D", "đ"=>"d", "Ē"=>"E", "ē"=>"e", "Ĕ"=>"E", + "ĕ"=>"e", "Ė"=>"E", "ė"=>"e", "Ę"=>"E", "ę"=>"e", "Ě"=>"E", "ě"=>"e", + "Ĝ"=>"G", "ĝ"=>"g", "Ğ"=>"G", "ğ"=>"g", "Ġ"=>"G", "ġ"=>"g", "Ģ"=>"G", + "ģ"=>"g", "Ĥ"=>"H", "ĥ"=>"h", "Ħ"=>"H", "ħ"=>"h", "Ĩ"=>"I", "ĩ"=>"i", + "Ī"=>"I", "ī"=>"i", "Ĭ"=>"I", "ĭ"=>"i", "Į"=>"I", "į"=>"i", "İ"=>"I", + "ı"=>"i", "IJ"=>"IJ", "ij"=>"ij", "Ĵ"=>"J", "ĵ"=>"j", "Ķ"=>"K", "ķ"=>"k", + "ĸ"=>"k", "Ĺ"=>"L", "ĺ"=>"l", "Ļ"=>"L", "ļ"=>"l", "Ľ"=>"L", "ľ"=>"l", + "Ŀ"=>"L", "ŀ"=>"l", "Ł"=>"L", "ł"=>"l", "Ń"=>"N", "ń"=>"n", "Ņ"=>"N", + "ņ"=>"n", "Ň"=>"N", "ň"=>"n", "ʼn"=>"'n", "Ŋ"=>"NG", "ŋ"=>"ng", + "Ō"=>"O", "ō"=>"o", "Ŏ"=>"O", "ŏ"=>"o", "Ő"=>"O", "ő"=>"o", "Œ"=>"OE", + "œ"=>"oe", "Ŕ"=>"R", "ŕ"=>"r", "Ŗ"=>"R", "ŗ"=>"r", "Ř"=>"R", "ř"=>"r", + "Ś"=>"S", "ś"=>"s", "Ŝ"=>"S", "ŝ"=>"s", "Ş"=>"S", "ş"=>"s", "Š"=>"S", + "š"=>"s", "Ţ"=>"T", "ţ"=>"t", "Ť"=>"T", "ť"=>"t", "Ŧ"=>"T", "ŧ"=>"t", + "Ũ"=>"U", "ũ"=>"u", "Ū"=>"U", "ū"=>"u", "Ŭ"=>"U", "ŭ"=>"u", "Ů"=>"U", + "ů"=>"u", "Ű"=>"U", "ű"=>"u", "Ų"=>"U", "ų"=>"u", "Ŵ"=>"W", "ŵ"=>"w", + "Ŷ"=>"Y", "ŷ"=>"y", "Ÿ"=>"Y", "Ź"=>"Z", "ź"=>"z", "Ż"=>"Z", "ż"=>"z", + "Ž"=>"Z", "ž"=>"z" + }.freeze + + def initialize(rule = nil) + @rule = rule + add_default_approximations + add rule if rule + end + + def transliterate(string, replacement = nil) + replacement ||= DEFAULT_REPLACEMENT_CHAR + string.gsub(/[^\x00-\x7f]/u) do |char| + approximations[char] || replacement + end + end + + private + + def approximations + @approximations ||= {} + end + + def add_default_approximations + DEFAULT_APPROXIMATIONS.each do |key, value| + approximations[key] = value + end + end + + # Add transliteration rules to the approximations hash. + def add(hash) + hash.each do |key, value| + approximations[key.to_s] = value.to_s + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/config.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/config.rb new file mode 100644 index 0000000000..b37368963c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/config.rb @@ -0,0 +1,147 @@ +require 'set' + +module I18n + class Config + # The only configuration value that is not global and scoped to thread is :locale. + # It defaults to the default_locale. + def locale + defined?(@locale) && @locale ? @locale : default_locale + end + + # Sets the current locale pseudo-globally, i.e. in the Thread.current hash. + def locale=(locale) + I18n.enforce_available_locales!(locale) + @locale = locale && locale.to_sym + end + + # Returns the current backend. Defaults to +Backend::Simple+. + def backend + @@backend ||= Backend::Simple.new + end + + # Sets the current backend. Used to set a custom backend. + def backend=(backend) + @@backend = backend + end + + # Returns the current default locale. Defaults to :'en' + def default_locale + @@default_locale ||= :en + end + + # Sets the current default locale. Used to set a custom default locale. + def default_locale=(locale) + I18n.enforce_available_locales!(locale) + @@default_locale = locale && locale.to_sym + end + + # Returns an array of locales for which translations are available. + # Unless you explicitely set these through I18n.available_locales= + # the call will be delegated to the backend. + def available_locales + @@available_locales ||= nil + @@available_locales || backend.available_locales + end + + # Caches the available locales list as both strings and symbols in a Set, so + # that we can have faster lookups to do the available locales enforce check. + def available_locales_set #:nodoc: + @@available_locales_set ||= available_locales.inject(Set.new) do |set, locale| + set << locale.to_s << locale.to_sym + end + end + + # Sets the available locales. + def available_locales=(locales) + @@available_locales = Array(locales).map { |locale| locale.to_sym } + @@available_locales = nil if @@available_locales.empty? + @@available_locales_set = nil + end + + # Returns true if the available_locales have been initialized + def available_locales_initialized? + ( !!defined?(@@available_locales) && !!@@available_locales ) + end + + # Clears the available locales set so it can be recomputed again after I18n + # gets reloaded. + def clear_available_locales_set #:nodoc: + @@available_locales_set = nil + end + + # Returns the current default scope separator. Defaults to '.' + def default_separator + @@default_separator ||= '.' + end + + # Sets the current default scope separator. + def default_separator=(separator) + @@default_separator = separator + end + + # Returns the current exception handler. Defaults to an instance of + # I18n::ExceptionHandler. + def exception_handler + @@exception_handler ||= ExceptionHandler.new + end + + # Sets the exception handler. + def exception_handler=(exception_handler) + @@exception_handler = exception_handler + end + + # Returns the current handler for situations when interpolation argument + # is missing. MissingInterpolationArgument will be raised by default. + def missing_interpolation_argument_handler + @@missing_interpolation_argument_handler ||= lambda do |missing_key, provided_hash, string| + raise MissingInterpolationArgument.new(missing_key, provided_hash, string) + end + end + + # Sets the missing interpolation argument handler. It can be any + # object that responds to #call. The arguments that will be passed to #call + # are the same as for MissingInterpolationArgument initializer. Use +Proc.new+ + # if you don't care about arity. + # + # == Example: + # You can supress raising an exception and return string instead: + # + # I18n.config.missing_interpolation_argument_handler = Proc.new do |key| + # "#{key} is missing" + # end + def missing_interpolation_argument_handler=(exception_handler) + @@missing_interpolation_argument_handler = exception_handler + end + + # Allow clients to register paths providing translation data sources. The + # backend defines acceptable sources. + # + # E.g. the provided SimpleBackend accepts a list of paths to translation + # files which are either named *.rb and contain plain Ruby Hashes or are + # named *.yml and contain YAML data. So for the SimpleBackend clients may + # register translation files like this: + # I18n.load_path << 'path/to/locale/en.yml' + def load_path + @@load_path ||= [] + end + + # Sets the load path instance. Custom implementations are expected to + # behave like a Ruby Array. + def load_path=(load_path) + @@load_path = load_path + @@available_locales_set = nil + backend.reload! + end + + # Whether or not to verify if locales are in the list of available locales. + # Defaults to true. + @@enforce_available_locales = true + def enforce_available_locales + @@enforce_available_locales + end + + def enforce_available_locales=(enforce_available_locales) + @@enforce_available_locales = enforce_available_locales + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/hash.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/hash.rb new file mode 100644 index 0000000000..895f41a43f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/hash.rb @@ -0,0 +1,29 @@ +class Hash + def slice(*keep_keys) + h = {} + keep_keys.each { |key| h[key] = fetch(key) if has_key?(key) } + h + end unless Hash.method_defined?(:slice) + + def except(*less_keys) + slice(*keys - less_keys) + end unless Hash.method_defined?(:except) + + def deep_symbolize_keys + inject({}) { |result, (key, value)| + value = value.deep_symbolize_keys if value.is_a?(Hash) + result[(key.to_sym rescue key) || key] = value + result + } + end unless Hash.method_defined?(:deep_symbolize_keys) + + # deep_merge_hash! by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809 + MERGER = proc do |key, v1, v2| + Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : v2 + end + + def deep_merge!(data) + merge!(data, &MERGER) + end unless Hash.method_defined?(:deep_merge!) +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/kernel/suppress_warnings.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/kernel/suppress_warnings.rb new file mode 100644 index 0000000000..eec1435a71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/kernel/suppress_warnings.rb @@ -0,0 +1,8 @@ +module Kernel + def suppress_warnings + original_verbosity, $VERBOSE = $VERBOSE, nil + yield + ensure + $VERBOSE = original_verbosity + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/string/interpolate.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/string/interpolate.rb new file mode 100644 index 0000000000..a353310bef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/core_ext/string/interpolate.rb @@ -0,0 +1,9 @@ +# This file used to backport the Ruby 1.9 String interpolation syntax to Ruby 1.8. +# +# Since I18n has dropped support to Ruby 1.8, this file is not required anymore, +# however, Rails 3.2 still requires it directly: +# +# https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/core_ext/string/interpolation.rb#L2 +# +# So we can't just drop the file entirely, which would then break Rails users +# under Ruby 1.9. This file can be removed once Rails 3.2 support is dropped. diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/exceptions.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/exceptions.rb new file mode 100644 index 0000000000..7e8b0d6981 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/exceptions.rb @@ -0,0 +1,104 @@ +require 'cgi' + +module I18n + # Handles exceptions raised in the backend. All exceptions except for + # MissingTranslationData exceptions are re-thrown. When a MissingTranslationData + # was caught the handler returns an error message string containing the key/scope. + # Note that the exception handler is not called when the option :throw was given. + class ExceptionHandler + include Module.new { + def call(exception, locale, key, options) + case exception + when MissingTranslation + exception.message + when Exception + raise exception + else + throw :exception, exception + end + end + } + end + + class ArgumentError < ::ArgumentError; end + + class InvalidLocale < ArgumentError + attr_reader :locale + def initialize(locale) + @locale = locale + super "#{locale.inspect} is not a valid locale" + end + end + + class InvalidLocaleData < ArgumentError + attr_reader :filename + def initialize(filename, exception_message) + @filename, @exception_message = filename, exception_message + super "can not load translations from #{filename}: #{exception_message}" + end + end + + class MissingTranslation < ArgumentError + module Base + attr_reader :locale, :key, :options + + def initialize(locale, key, options = {}) + @key, @locale, @options = key, locale, options.dup + options.each { |k, v| self.options[k] = v.inspect if v.is_a?(Proc) } + end + + def keys + @keys ||= I18n.normalize_keys(locale, key, options[:scope]).tap do |keys| + keys << 'no key' if keys.size < 2 + end + end + + def message + "translation missing: #{keys.join('.')}" + end + alias :to_s :message + + def to_exception + MissingTranslationData.new(locale, key, options) + end + end + + include Base + end + + class MissingTranslationData < ArgumentError + include MissingTranslation::Base + end + + class InvalidPluralizationData < ArgumentError + attr_reader :entry, :count, :key + def initialize(entry, count, key) + @entry, @count, @key = entry, count, key + super "translation data #{entry.inspect} can not be used with :count => #{count}. key '#{key}' is missing." + end + end + + class MissingInterpolationArgument < ArgumentError + attr_reader :key, :values, :string + def initialize(key, values, string) + @key, @values, @string = key, values, string + super "missing interpolation argument #{key.inspect} in #{string.inspect} (#{values.inspect} given)" + end + end + + class ReservedInterpolationKey < ArgumentError + attr_reader :key, :string + def initialize(key, string) + @key, @string = key, string + super "reserved key #{key.inspect} used in #{string.inspect}" + end + end + + class UnknownFileType < ArgumentError + attr_reader :type, :filename + def initialize(type, filename) + @type, @filename = type, filename + super "can not load translations from #{filename}, the file type #{type} is not known" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext.rb new file mode 100644 index 0000000000..392cccd3a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext.rb @@ -0,0 +1,26 @@ +module I18n + module Gettext + PLURAL_SEPARATOR = "\001" + CONTEXT_SEPARATOR = "\004" + + autoload :Helpers, 'i18n/gettext/helpers' + + @@plural_keys = { :en => [:one, :other] } + + class << self + # returns an array of plural keys for the given locale or the whole hash + # of locale mappings to plural keys so that we can convert from gettext's + # integer-index based style + # TODO move this information to the pluralization module + def plural_keys(*args) + args.empty? ? @@plural_keys : @@plural_keys[args.first] || @@plural_keys[:en] + end + + def extract_scope(msgid, separator) + scope = msgid.to_s.split(separator) + msgid = scope.pop + [scope, msgid] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/helpers.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/helpers.rb new file mode 100644 index 0000000000..c97fd349d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/helpers.rb @@ -0,0 +1,73 @@ +require 'i18n/gettext' + +module I18n + module Gettext + # Implements classical Gettext style accessors. To use this include the + # module to the global namespace or wherever you want to use it. + # + # include I18n::Gettext::Helpers + module Helpers + # Makes dynamic translation messages readable for the gettext parser. + # _(fruit) cannot be understood by the gettext parser. To help the parser find all your translations, + # you can add fruit = N_("Apple") which does not translate, but tells the parser: "Apple" needs translation. + # * msgid: the message id. + # * Returns: msgid. + def N_(msgsid) + msgsid + end + + def gettext(msgid, options = {}) + I18n.t(msgid, { :default => msgid, :separator => '|' }.merge(options)) + end + alias _ gettext + + def sgettext(msgid, separator = '|') + scope, msgid = I18n::Gettext.extract_scope(msgid, separator) + I18n.t(msgid, :scope => scope, :default => msgid, :separator => separator) + end + alias s_ sgettext + + def pgettext(msgctxt, msgid) + separator = I18n::Gettext::CONTEXT_SEPARATOR + sgettext([msgctxt, msgid].join(separator), separator) + end + alias p_ pgettext + + def ngettext(msgid, msgid_plural, n = 1) + nsgettext(msgid, msgid_plural, n) + end + alias n_ ngettext + + # Method signatures: + # nsgettext('Fruits|apple', 'apples', 2) + # nsgettext(['Fruits|apple', 'apples'], 2) + def nsgettext(msgid, msgid_plural, n = 1, separator = '|') + if msgid.is_a?(Array) + msgid, msgid_plural, n, separator = msgid[0], msgid[1], msgid_plural, n + separator = '|' unless separator.is_a?(::String) + end + + scope, msgid = I18n::Gettext.extract_scope(msgid, separator) + default = { :one => msgid, :other => msgid_plural } + I18n.t(msgid, :default => default, :count => n, :scope => scope, :separator => separator) + end + alias ns_ nsgettext + + # Method signatures: + # npgettext('Fruits', 'apple', 'apples', 2) + # npgettext('Fruits', ['apple', 'apples'], 2) + def npgettext(msgctxt, msgid, msgid_plural, n = 1) + separator = I18n::Gettext::CONTEXT_SEPARATOR + + if msgid.is_a?(Array) + msgid_plural, msgid, n = msgid[1], [msgctxt, msgid[0]].join(separator), msgid_plural + else + msgid = [msgctxt, msgid].join(separator) + end + + nsgettext(msgid, msgid_plural, n, separator) + end + alias np_ npgettext + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/po_parser.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/po_parser.rb new file mode 100644 index 0000000000..547df6a593 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/gettext/po_parser.rb @@ -0,0 +1,329 @@ +=begin + poparser.rb - Generate a .mo + + Copyright (C) 2003-2009 Masao Mutoh + + You may redistribute it and/or modify it under the same + license terms as Ruby. +=end + +#MODIFIED +# removed include GetText etc +# added stub translation method _(x) +require 'racc/parser' + +module GetText + + class PoParser < Racc::Parser + + def _(x) + x + end + +module_eval <<'..end src/poparser.ry modeval..id7a99570e05', 'src/poparser.ry', 108 + def unescape(orig) + ret = orig.gsub(/\\n/, "\n") + ret.gsub!(/\\t/, "\t") + ret.gsub!(/\\r/, "\r") + ret.gsub!(/\\"/, "\"") + ret + end + + def parse(str, data, ignore_fuzzy = true) + @comments = [] + @data = data + @fuzzy = false + @msgctxt = "" + $ignore_fuzzy = ignore_fuzzy + + str.strip! + @q = [] + until str.empty? do + case str + when /\A\s+/ + str = $' + when /\Amsgctxt/ + @q.push [:MSGCTXT, $&] + str = $' + when /\Amsgid_plural/ + @q.push [:MSGID_PLURAL, $&] + str = $' + when /\Amsgid/ + @q.push [:MSGID, $&] + str = $' + when /\Amsgstr/ + @q.push [:MSGSTR, $&] + str = $' + when /\A\[(\d+)\]/ + @q.push [:PLURAL_NUM, $1] + str = $' + when /\A\#~(.*)/ + $stderr.print _("Warning: obsolete msgid exists.\n") + $stderr.print " #{$&}\n" + @q.push [:COMMENT, $&] + str = $' + when /\A\#(.*)/ + @q.push [:COMMENT, $&] + str = $' + when /\A\"(.*)\"/ + @q.push [:STRING, $1] + str = $' + else + #c = str[0,1] + #@q.push [:STRING, c] + str = str[1..-1] + end + end + @q.push [false, '$end'] + if $DEBUG + @q.each do |a,b| + puts "[#{a}, #{b}]" + end + end + @yydebug = true if $DEBUG + do_parse + + if @comments.size > 0 + @data.set_comment(:last, @comments.join("\n")) + end + @data + end + + def next_token + @q.shift + end + + def on_message(msgid, msgstr) + if msgstr.size > 0 + @data[msgid] = msgstr + @data.set_comment(msgid, @comments.join("\n")) + end + @comments.clear + @msgctxt = "" + end + + def on_comment(comment) + @fuzzy = true if (/fuzzy/ =~ comment) + @comments << comment + end + + +..end src/poparser.ry modeval..id7a99570e05 + +##### racc 1.4.5 generates ### + +racc_reduce_table = [ + 0, 0, :racc_error, + 0, 10, :_reduce_none, + 2, 10, :_reduce_none, + 2, 10, :_reduce_none, + 2, 10, :_reduce_none, + 2, 12, :_reduce_5, + 1, 13, :_reduce_none, + 1, 13, :_reduce_none, + 4, 15, :_reduce_8, + 5, 16, :_reduce_9, + 2, 17, :_reduce_10, + 1, 17, :_reduce_none, + 3, 18, :_reduce_12, + 1, 11, :_reduce_13, + 2, 14, :_reduce_14, + 1, 14, :_reduce_15 ] + +racc_reduce_n = 16 + +racc_shift_n = 26 + +racc_action_table = [ + 3, 13, 5, 7, 9, 15, 16, 17, 20, 17, + 13, 17, 13, 13, 11, 17, 23, 20, 13, 17 ] + +racc_action_check = [ + 1, 16, 1, 1, 1, 12, 12, 12, 18, 18, + 7, 14, 15, 9, 3, 19, 20, 21, 23, 25 ] + +racc_action_pointer = [ + nil, 0, nil, 14, nil, nil, nil, 3, nil, 6, + nil, nil, 0, nil, 4, 5, -6, nil, 2, 8, + 8, 11, nil, 11, nil, 12 ] + +racc_action_default = [ + -1, -16, -2, -16, -3, -13, -4, -16, -6, -16, + -7, 26, -16, -15, -5, -16, -16, -14, -16, -8, + -16, -9, -11, -16, -10, -12 ] + +racc_goto_table = [ + 12, 22, 14, 4, 24, 6, 2, 8, 18, 19, + 10, 21, 1, nil, nil, nil, 25 ] + +racc_goto_check = [ + 5, 9, 5, 3, 9, 4, 2, 6, 5, 5, + 7, 8, 1, nil, nil, nil, 5 ] + +racc_goto_pointer = [ + nil, 12, 5, 2, 4, -7, 6, 9, -7, -17 ] + +racc_goto_default = [ + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ] + +racc_token_table = { + false => 0, + Object.new => 1, + :COMMENT => 2, + :MSGID => 3, + :MSGCTXT => 4, + :MSGID_PLURAL => 5, + :MSGSTR => 6, + :STRING => 7, + :PLURAL_NUM => 8 } + +racc_use_result_var = true + +racc_nt_base = 9 + +Racc_arg = [ + racc_action_table, + racc_action_check, + racc_action_default, + racc_action_pointer, + racc_goto_table, + racc_goto_check, + racc_goto_default, + racc_goto_pointer, + racc_nt_base, + racc_reduce_table, + racc_token_table, + racc_shift_n, + racc_reduce_n, + racc_use_result_var ] + +Racc_token_to_s_table = [ +'$end', +'error', +'COMMENT', +'MSGID', +'MSGCTXT', +'MSGID_PLURAL', +'MSGSTR', +'STRING', +'PLURAL_NUM', +'$start', +'msgfmt', +'comment', +'msgctxt', +'message', +'string_list', +'single_message', +'plural_message', +'msgstr_plural', +'msgstr_plural_line'] + +Racc_debug_parser = true + +##### racc system variables end ##### + + # reduce 0 omitted + + # reduce 1 omitted + + # reduce 2 omitted + + # reduce 3 omitted + + # reduce 4 omitted + +module_eval <<'.,.,', 'src/poparser.ry', 25 + def _reduce_5( val, _values, result ) + @msgctxt = unescape(val[1]) + "\004" + result + end +.,., + + # reduce 6 omitted + + # reduce 7 omitted + +module_eval <<'.,.,', 'src/poparser.ry', 48 + def _reduce_8( val, _values, result ) + if @fuzzy and $ignore_fuzzy + if val[1] != "" + $stderr.print _("Warning: fuzzy message was ignored.\n") + $stderr.print " msgid '#{val[1]}'\n" + else + on_message('', unescape(val[3])) + end + @fuzzy = false + else + on_message(@msgctxt + unescape(val[1]), unescape(val[3])) + end + result = "" + result + end +.,., + +module_eval <<'.,.,', 'src/poparser.ry', 65 + def _reduce_9( val, _values, result ) + if @fuzzy and $ignore_fuzzy + if val[1] != "" + $stderr.print _("Warning: fuzzy message was ignored.\n") + $stderr.print "msgid = '#{val[1]}\n" + else + on_message('', unescape(val[3])) + end + @fuzzy = false + else + on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4])) + end + result = "" + result + end +.,., + +module_eval <<'.,.,', 'src/poparser.ry', 76 + def _reduce_10( val, _values, result ) + if val[0].size > 0 + result = val[0] + "\000" + val[1] + else + result = "" + end + result + end +.,., + + # reduce 11 omitted + +module_eval <<'.,.,', 'src/poparser.ry', 84 + def _reduce_12( val, _values, result ) + result = val[2] + result + end +.,., + +module_eval <<'.,.,', 'src/poparser.ry', 91 + def _reduce_13( val, _values, result ) + on_comment(val[0]) + result + end +.,., + +module_eval <<'.,.,', 'src/poparser.ry', 99 + def _reduce_14( val, _values, result ) + result = val.delete_if{|item| item == ""}.join + result + end +.,., + +module_eval <<'.,.,', 'src/poparser.ry', 103 + def _reduce_15( val, _values, result ) + result = val[0] + result + end +.,., + + def _reduce_none( val, _values, result ) + result + end + + end # class PoParser + +end # module GetText diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/interpolate/ruby.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/interpolate/ruby.rb new file mode 100644 index 0000000000..d2fdda75ec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/interpolate/ruby.rb @@ -0,0 +1,37 @@ +# heavily based on Masao Mutoh's gettext String interpolation extension +# http://github.com/mutoh/gettext/blob/f6566738b981fe0952548c421042ad1e0cdfb31e/lib/gettext/core_ext/string.rb + +module I18n + INTERPOLATION_PATTERN = Regexp.union( + /%%/, + /%\{(\w+)\}/, # matches placeholders like "%{foo}" + /%<(\w+)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/ # matches placeholders like "%.d" + ) + + class << self + # Return String or raises MissingInterpolationArgument exception. + # Missing argument's logic is handled by I18n.config.missing_interpolation_argument_handler. + def interpolate(string, values) + raise ReservedInterpolationKey.new($1.to_sym, string) if string =~ RESERVED_KEYS_PATTERN + raise ArgumentError.new('Interpolation values must be a Hash.') unless values.kind_of?(Hash) + interpolate_hash(string, values) + end + + def interpolate_hash(string, values) + string.gsub(INTERPOLATION_PATTERN) do |match| + if match == '%%' + '%' + else + key = ($1 || $2 || match.tr("%{}", "")).to_sym + value = if values.key?(key) + values[key] + else + config.missing_interpolation_argument_handler.call(key, values, string) + end + value = value.call(values) if value.respond_to?(:call) + $3 ? sprintf("%#{$3}", value) : value + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale.rb new file mode 100644 index 0000000000..4f9d0266d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale.rb @@ -0,0 +1,6 @@ +module I18n + module Locale + autoload :Fallbacks, 'i18n/locale/fallbacks' + autoload :Tag, 'i18n/locale/tag' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/fallbacks.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/fallbacks.rb new file mode 100644 index 0000000000..08bf6f5508 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/fallbacks.rb @@ -0,0 +1,96 @@ +# Locale Fallbacks +# +# Extends the I18n module to hold a fallbacks instance which is set to an +# instance of I18n::Locale::Fallbacks by default but can be swapped with a +# different implementation. +# +# Locale fallbacks will compute a number of fallback locales for a given locale. +# For example: +# +#
                
                +# I18n.fallbacks[:"es-MX"] # => [:"es-MX", :es, :en] 
                +# +# Locale fallbacks always fall back to +# +# * all parent locales of a given locale (e.g. :es for :"es-MX") first, +# * the current default locales and all of their parents second +# +# The default locales are set to [I18n.default_locale] by default but can be +# set to something else. +# +# One can additionally add any number of additional fallback locales manually. +# These will be added before the default locales to the fallback chain. For +# example: +# +# # using the default locale as default fallback locale +# +# I18n.default_locale = :"en-US" +# I18n.fallbacks = I18n::Locale::Fallbacks.new(:"de-AT" => :"de-DE") +# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :"de-DE", :de, :"en-US", :en] +# +# # using a custom locale as default fallback locale +# +# I18n.fallbacks = I18n::Locale::Fallbacks.new(:"en-GB", :"de-AT" => :de, :"de-CH" => :de) +# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :de, :"en-GB", :en] +# I18n.fallbacks[:"de-CH"] # => [:"de-CH", :de, :"en-GB", :en] +# +# # mapping fallbacks to an existing instance +# +# # people speaking Catalan also speak Spanish as spoken in Spain +# fallbacks = I18n.fallbacks +# fallbacks.map(:ca => :"es-ES") +# fallbacks[:ca] # => [:ca, :"es-ES", :es, :"en-US", :en] +# +# # people speaking Arabian as spoken in Palestine also speak Hebrew as spoken in Israel +# fallbacks.map(:"ar-PS" => :"he-IL") +# fallbacks[:"ar-PS"] # => [:"ar-PS", :ar, :"he-IL", :he, :"en-US", :en] +# fallbacks[:"ar-EG"] # => [:"ar-EG", :ar, :"en-US", :en] +# +# # people speaking Sami as spoken in Finnland also speak Swedish and Finnish as spoken in Finnland +# fallbacks.map(:sms => [:"se-FI", :"fi-FI"]) +# fallbacks[:sms] # => [:sms, :"se-FI", :se, :"fi-FI", :fi, :"en-US", :en] + +module I18n + module Locale + class Fallbacks < Hash + def initialize(*mappings) + @map = {} + map(mappings.pop) if mappings.last.is_a?(Hash) + self.defaults = mappings.empty? ? [I18n.default_locale.to_sym] : mappings + end + + def defaults=(defaults) + @defaults = defaults.map { |default| compute(default, false) }.flatten + end + attr_reader :defaults + + def [](locale) + raise InvalidLocale.new(locale) if locale.nil? + locale = locale.to_sym + super || store(locale, compute(locale)) + end + + def map(mappings) + mappings.each do |from, to| + from, to = from.to_sym, Array(to) + to.each do |_to| + @map[from] ||= [] + @map[from] << _to.to_sym + end + end + end + + protected + + def compute(tags, include_defaults = true, exclude = []) + result = Array(tags).collect do |tag| + tags = I18n::Locale::Tag.tag(tag).self_and_parents.map! { |t| t.to_sym } - exclude + tags.each { |_tag| tags += compute(@map[_tag], false, exclude + tags) if @map[_tag] } + tags + end.flatten + result.push(*defaults) if include_defaults + result.uniq.compact + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag.rb new file mode 100644 index 0000000000..a640b4465f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag.rb @@ -0,0 +1,28 @@ +# encoding: utf-8 + +module I18n + module Locale + module Tag + autoload :Parents, 'i18n/locale/tag/parents' + autoload :Rfc4646, 'i18n/locale/tag/rfc4646' + autoload :Simple, 'i18n/locale/tag/simple' + + class << self + # Returns the current locale tag implementation. Defaults to +I18n::Locale::Tag::Simple+. + def implementation + @@implementation ||= Simple + end + + # Sets the current locale tag implementation. Use this to set a different locale tag implementation. + def implementation=(implementation) + @@implementation = implementation + end + + # Factory method for locale tags. Delegates to the current locale tag implementation. + def tag(tag) + implementation.tag(tag) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/parents.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/parents.rb new file mode 100644 index 0000000000..ec53060f9c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/parents.rb @@ -0,0 +1,22 @@ +module I18n + module Locale + module Tag + module Parents + def parent + @parent ||= begin + segs = to_a.compact + segs.length > 1 ? self.class.tag(*segs[0..(segs.length-2)].join('-')) : nil + end + end + + def self_and_parents + @self_and_parents ||= [self] + parents + end + + def parents + @parents ||= ([parent] + (parent ? parent.parents : [])).compact + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/rfc4646.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/rfc4646.rb new file mode 100644 index 0000000000..4ce4c751ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/rfc4646.rb @@ -0,0 +1,74 @@ +# RFC 4646/47 compliant Locale tag implementation that parses locale tags to +# subtags such as language, script, region, variant etc. +# +# For more information see by http://en.wikipedia.org/wiki/IETF_language_tag +# +# Rfc4646::Parser does not implement grandfathered tags. + +module I18n + module Locale + module Tag + RFC4646_SUBTAGS = [ :language, :script, :region, :variant, :extension, :privateuse, :grandfathered ] + RFC4646_FORMATS = { :language => :downcase, :script => :capitalize, :region => :upcase, :variant => :downcase } + + class Rfc4646 < Struct.new(*RFC4646_SUBTAGS) + class << self + # Parses the given tag and returns a Tag instance if it is valid. + # Returns false if the given tag is not valid according to RFC 4646. + def tag(tag) + matches = parser.match(tag) + new(*matches) if matches + end + + def parser + @@parser ||= Rfc4646::Parser + end + + def parser=(parser) + @@parser = parser + end + end + + include Parents + + RFC4646_FORMATS.each do |name, format| + define_method(name) { self[name].send(format) unless self[name].nil? } + end + + def to_sym + to_s.to_sym + end + + def to_s + @tag ||= to_a.compact.join("-") + end + + def to_a + members.collect { |attr| self.send(attr) } + end + + module Parser + PATTERN = %r{\A(?: + ([a-z]{2,3}(?:(?:-[a-z]{3}){0,3})?|[a-z]{4}|[a-z]{5,8}) # language + (?:-([a-z]{4}))? # script + (?:-([a-z]{2}|\d{3}))? # region + (?:-([0-9a-z]{5,8}|\d[0-9a-z]{3}))* # variant + (?:-([0-9a-wyz](?:-[0-9a-z]{2,8})+))* # extension + (?:-(x(?:-[0-9a-z]{1,8})+))?| # privateuse subtag + (x(?:-[0-9a-z]{1,8})+)| # privateuse tag + /* ([a-z]{1,3}(?:-[0-9a-z]{2,8}){1,2}) */ # grandfathered + )\z}xi + + class << self + def match(tag) + c = PATTERN.match(tag.to_s).captures + c[0..4] << (c[5].nil? ? c[6] : c[5]) << c[7] # TODO c[7] is grandfathered, throw a NotImplemented exception here? + rescue + false + end + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/simple.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/simple.rb new file mode 100644 index 0000000000..68642a123f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/locale/tag/simple.rb @@ -0,0 +1,39 @@ +# Simple Locale tag implementation that computes subtags by simply splitting +# the locale tag at '-' occurences. +module I18n + module Locale + module Tag + class Simple + class << self + def tag(tag) + new(tag) + end + end + + include Parents + + attr_reader :tag + + def initialize(*tag) + @tag = tag.join('-').to_sym + end + + def subtags + @subtags = tag.to_s.split('-').map { |subtag| subtag.to_s } + end + + def to_sym + tag + end + + def to_s + tag.to_s + end + + def to_a + subtags + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/middleware.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/middleware.rb new file mode 100644 index 0000000000..67461f7a5e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/middleware.rb @@ -0,0 +1,15 @@ +module I18n + class Middleware + + def initialize(app) + @app = app + end + + def call(env) + @app.call(env) + ensure + Thread.current[:i18n_config] = I18n::Config.new + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests.rb new file mode 100644 index 0000000000..554cdefea0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests.rb @@ -0,0 +1,12 @@ +module I18n + module Tests + autoload :Basics, 'i18n/tests/basics' + autoload :Defaults, 'i18n/tests/defaults' + autoload :Interpolation, 'i18n/tests/interpolation' + autoload :Link, 'i18n/tests/link' + autoload :Localization, 'i18n/tests/localization' + autoload :Lookup, 'i18n/tests/lookup' + autoload :Pluralization, 'i18n/tests/pluralization' + autoload :Procs, 'i18n/tests/procs' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/basics.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/basics.rb new file mode 100644 index 0000000000..951d7ab5db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/basics.rb @@ -0,0 +1,60 @@ +module I18n + module Tests + module Basics + def teardown + I18n.available_locales = nil + end + + test "available_locales returns the locales stored to the backend by default" do + I18n.backend.store_translations('de', :foo => 'bar') + I18n.backend.store_translations('en', :foo => 'foo') + + assert I18n.available_locales.include?(:de) + assert I18n.available_locales.include?(:en) + end + + test "available_locales can be set to something else independently from the actual locale data" do + I18n.backend.store_translations('de', :foo => 'bar') + I18n.backend.store_translations('en', :foo => 'foo') + + I18n.available_locales = :foo + assert_equal [:foo], I18n.available_locales + + I18n.available_locales = [:foo, 'bar'] + assert_equal [:foo, :bar], I18n.available_locales + + I18n.available_locales = nil + assert I18n.available_locales.include?(:de) + assert I18n.available_locales.include?(:en) + end + + test "available_locales memoizes when set explicitely" do + I18n.backend.expects(:available_locales).never + I18n.available_locales = [:foo] + I18n.backend.store_translations('de', :bar => 'baz') + I18n.reload! + assert_equal [:foo], I18n.available_locales + end + + test "available_locales delegates to the backend when not set explicitely" do + original_available_locales_value = I18n.backend.available_locales + I18n.backend.expects(:available_locales).returns(original_available_locales_value).twice + assert_equal I18n.backend.available_locales, I18n.available_locales + end + + test "exists? is implemented by the backend" do + I18n.backend.store_translations(:foo, :bar => 'baz') + assert I18n.exists?(:bar, :foo) + end + + test "storing a nil value as a translation removes it from the available locale data" do + I18n.backend.store_translations(:en, :to_be_deleted => 'bar') + assert_equal 'bar', I18n.t(:to_be_deleted, :default => 'baz') + + I18n.cache_store.clear if I18n.respond_to?(:cache_store) && I18n.cache_store + I18n.backend.store_translations(:en, :to_be_deleted => nil) + assert_equal 'baz', I18n.t(:to_be_deleted, :default => 'baz') + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/defaults.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/defaults.rb new file mode 100644 index 0000000000..b46af61f0d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/defaults.rb @@ -0,0 +1,52 @@ +# encoding: utf-8 + +module I18n + module Tests + module Defaults + def setup + super + I18n.backend.store_translations(:en, :foo => { :bar => 'bar', :baz => 'baz' }) + end + + test "defaults: given nil as a key it returns the given default" do + assert_equal 'default', I18n.t(nil, :default => 'default') + end + + test "defaults: given a symbol as a default it translates the symbol" do + assert_equal 'bar', I18n.t(nil, :default => :'foo.bar') + end + + test "defaults: given a symbol as a default and a scope it stays inside the scope when looking up the symbol" do + assert_equal 'bar', I18n.t(:missing, :default => :bar, :scope => :foo) + end + + test "defaults: given an array as a default it returns the first match" do + assert_equal 'bar', I18n.t(:does_not_exist, :default => [:does_not_exist_2, :'foo.bar']) + end + + test "defaults: given an array as a default with false it returns false" do + assert_equal false, I18n.t(:does_not_exist, :default => [false]) + end + + test "defaults: given false it returns false" do + assert_equal false, I18n.t(:does_not_exist, :default => false) + end + + test "defaults: given nil it returns nil" do + assert_nil I18n.t(:does_not_exist, :default => nil) + end + + test "defaults: given an array of missing keys it raises a MissingTranslationData exception" do + assert_raise I18n::MissingTranslationData do + I18n.t(:does_not_exist, :default => [:does_not_exist_2, :does_not_exist_3], :raise => true) + end + end + + test "defaults: using a custom scope separator" do + # data must have been stored using the custom separator when using the ActiveRecord backend + I18n.backend.store_translations(:en, { :foo => { :bar => 'bar' } }, { :separator => '|' }) + assert_equal 'bar', I18n.t(nil, :default => :'foo|bar', :separator => '|') + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/interpolation.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/interpolation.rb new file mode 100644 index 0000000000..27c99c3b38 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/interpolation.rb @@ -0,0 +1,158 @@ +# encoding: utf-8 + +module I18n + module Tests + module Interpolation + # If no interpolation parameter is not given, I18n should not alter the string. + # This behavior is due to three reasons: + # + # * Checking interpolation keys in all strings hits performance, badly; + # + # * This allows us to retrieve untouched values through I18n. For example + # I could have a middleware that returns I18n lookup results in JSON + # to be processed through Javascript. Leaving the keys untouched allows + # the interpolation to happen at the javascript level; + # + # * Security concerns: if I allow users to translate a web site, they can + # insert %{} in messages causing the I18n lookup to fail in every request. + # + test "interpolation: given no values it does not alter the string" do + assert_equal 'Hi %{name}!', interpolate(:default => 'Hi %{name}!') + end + + test "interpolation: given values it interpolates them into the string" do + assert_equal 'Hi David!', interpolate(:default => 'Hi %{name}!', :name => 'David') + end + + test "interpolation: given a nil value it still interpolates it into the string" do + assert_equal 'Hi !', interpolate(:default => 'Hi %{name}!', :name => nil) + end + + test "interpolation: given a lambda as a value it calls it if the string contains the key" do + assert_equal 'Hi David!', interpolate(:default => 'Hi %{name}!', :name => lambda { |*args| 'David' }) + end + + test "interpolation: given a lambda as a value it does not call it if the string does not contain the key" do + assert_nothing_raised { interpolate(:default => 'Hi!', :name => lambda { |*args| raise 'fail' }) } + end + + test "interpolation: given values but missing a key it raises I18n::MissingInterpolationArgument" do + assert_raise(I18n::MissingInterpolationArgument) do + interpolate(:default => '%{foo}', :bar => 'bar') + end + end + + test "interpolation: it does not raise I18n::MissingInterpolationArgument for escaped variables" do + assert_nothing_raised(I18n::MissingInterpolationArgument) do + assert_equal 'Barr %{foo}', interpolate(:default => '%{bar} %%{foo}', :bar => 'Barr') + end + end + + test "interpolation: it does not change the original, stored translation string" do + I18n.backend.store_translations(:en, :interpolate => 'Hi %{name}!') + assert_equal 'Hi David!', interpolate(:interpolate, :name => 'David') + assert_equal 'Hi Yehuda!', interpolate(:interpolate, :name => 'Yehuda') + end + + test "interpolation: given an array interpolates each element" do + I18n.backend.store_translations(:en, :array_interpolate => ['Hi', 'Mr. %{name}', 'or sir %{name}']) + assert_equal ['Hi', 'Mr. Bartuz', 'or sir Bartuz'], interpolate(:array_interpolate, :name => 'Bartuz') + end + + test "interpolation: given the translation is in utf-8 it still works" do + assert_equal 'Häi David!', interpolate(:default => 'Häi %{name}!', :name => 'David') + end + + test "interpolation: given the value is in utf-8 it still works" do + assert_equal 'Hi ゆきひろ!', interpolate(:default => 'Hi %{name}!', :name => 'ゆきひろ') + end + + test "interpolation: given the translation and the value are in utf-8 it still works" do + assert_equal 'こんにちは、ゆきひろさん!', interpolate(:default => 'こんにちは、%{name}さん!', :name => 'ゆきひろ') + end + + if Object.const_defined?(:Encoding) + test "interpolation: given a euc-jp translation and a utf-8 value it raises Encoding::CompatibilityError" do + assert_raise(Encoding::CompatibilityError) do + interpolate(:default => euc_jp('こんにちは、%{name}さん!'), :name => 'ゆきひろ') + end + end + + test "interpolation: given a utf-8 translation and a euc-jp value it raises Encoding::CompatibilityError" do + assert_raise(Encoding::CompatibilityError) do + interpolate(:default => 'こんにちは、%{name}さん!', :name => euc_jp('ゆきひろ')) + end + end + + test "interpolation: ASCII strings in the backend should be encoded to UTF8 if interpolation options are in UTF8" do + I18n.backend.store_translations 'en', 'encoding' => ('%{who} let me go'.force_encoding("ASCII")) + result = I18n.t 'encoding', :who => "måmmå miå" + assert_equal Encoding::UTF_8, result.encoding + end + + test "interpolation: UTF8 strings in the backend are still returned as UTF8 with ASCII interpolation" do + I18n.backend.store_translations 'en', 'encoding' => 'måmmå miå %{what}' + result = I18n.t 'encoding', :what => 'let me go'.force_encoding("ASCII") + assert_equal Encoding::UTF_8, result.encoding + end + + test "interpolation: UTF8 strings in the backend are still returned as UTF8 even with numbers interpolation" do + I18n.backend.store_translations 'en', 'encoding' => '%{count} times: måmmå miå' + result = I18n.t 'encoding', :count => 3 + assert_equal Encoding::UTF_8, result.encoding + end + end + + test "interpolation: given a translations containing a reserved key it raises I18n::ReservedInterpolationKey" do + assert_raise(I18n::ReservedInterpolationKey) { interpolate(:default => '%{default}', :foo => :bar) } + assert_raise(I18n::ReservedInterpolationKey) { interpolate(:default => '%{scope}', :foo => :bar) } + assert_raise(I18n::ReservedInterpolationKey) { interpolate(:default => '%{separator}', :foo => :bar) } + end + + test "interpolation: deep interpolation for default string" do + assert_equal 'Hi %{name}!', interpolate(:default => 'Hi %{name}!', :deep_interpolation => true) + end + + test "interpolation: deep interpolation for interpolated string" do + assert_equal 'Hi Ann!', interpolate(:default => 'Hi %{name}!', :name => 'Ann', :deep_interpolation => true) + end + + test "interpolation: deep interpolation for Hash" do + people = { :people => { :ann => 'Ann is %{ann}', :john => 'John is %{john}' } } + interpolated_people = { :people => { :ann => 'Ann is good', :john => 'John is big' } } + assert_equal interpolated_people, interpolate(:default => people, :ann => 'good', :john => 'big', :deep_interpolation => true) + end + + test "interpolation: deep interpolation for Array" do + people = { :people => ['Ann is %{ann}', 'John is %{john}'] } + interpolated_people = { :people => ['Ann is good', 'John is big'] } + assert_equal interpolated_people, interpolate(:default => people, :ann => 'good', :john => 'big', :deep_interpolation => true) + end + + protected + + def capture(stream) + begin + stream = stream.to_s + eval "$#{stream} = StringIO.new" + yield + result = eval("$#{stream}").string + ensure + eval("$#{stream} = #{stream.upcase}") + end + + result + end + + def euc_jp(string) + string.encode!(Encoding::EUC_JP) + end + + def interpolate(*args) + options = args.last.is_a?(Hash) ? args.pop : {} + key = args.pop + I18n.backend.translate('en', key, options) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/link.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/link.rb new file mode 100644 index 0000000000..da84a2c843 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/link.rb @@ -0,0 +1,56 @@ +# encoding: utf-8 + +module I18n + module Tests + module Link + test "linked lookup: if a key resolves to a symbol it looks up the symbol" do + I18n.backend.store_translations 'en', { + :link => :linked, + :linked => 'linked' + } + assert_equal 'linked', I18n.backend.translate('en', :link) + end + + test "linked lookup: if a key resolves to a dot-separated symbol it looks up the symbol" do + I18n.backend.store_translations 'en', { + :link => :"foo.linked", + :foo => { :linked => 'linked' } + } + assert_equal('linked', I18n.backend.translate('en', :link)) + end + + test "linked lookup: if a dot-separated key resolves to a symbol it looks up the symbol" do + I18n.backend.store_translations 'en', { + :foo => { :link => :linked }, + :linked => 'linked' + } + assert_equal('linked', I18n.backend.translate('en', :'foo.link')) + end + + test "linked lookup: if a dot-separated key resolves to a dot-separated symbol it looks up the symbol" do + I18n.backend.store_translations 'en', { + :foo => { :link => :"bar.linked" }, + :bar => { :linked => 'linked' } + } + assert_equal('linked', I18n.backend.translate('en', :'foo.link')) + end + + test "linked lookup: links always refer to the absolute key" do + I18n.backend.store_translations 'en', { + :foo => { :link => :linked, :linked => 'linked in foo' }, + :linked => 'linked absolutely' + } + assert_equal 'linked absolutely', I18n.backend.translate('en', :link, :scope => :foo) + end + + test "linked lookup: a link can resolve to a namespace in the middle of a dot-separated key" do + I18n.backend.store_translations 'en', { + :activemodel => { :errors => { :messages => { :blank => "can't be blank" } } }, + :activerecord => { :errors => { :messages => :"activemodel.errors.messages" } } + } + assert_equal "can't be blank", I18n.t(:"activerecord.errors.messages.blank") + assert_equal "can't be blank", I18n.t(:"activerecord.errors.messages.blank") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization.rb new file mode 100644 index 0000000000..53b15029da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization.rb @@ -0,0 +1,19 @@ +module I18n + module Tests + module Localization + autoload :Date, 'i18n/tests/localization/date' + autoload :DateTime, 'i18n/tests/localization/date_time' + autoload :Time, 'i18n/tests/localization/time' + autoload :Procs, 'i18n/tests/localization/procs' + + def self.included(base) + base.class_eval do + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Procs + include I18n::Tests::Localization::Time + end + end + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date.rb new file mode 100644 index 0000000000..fba5fe5c0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date.rb @@ -0,0 +1,95 @@ +# encoding: utf-8 + +module I18n + module Tests + module Localization + module Date + def setup + super + setup_date_translations + @date = ::Date.new(2008, 3, 1) + end + + test "localize Date: given the short format it uses it" do + # TODO should be Mrz, shouldn't it? + assert_equal '01. Mar', I18n.l(@date, :format => :short, :locale => :de) + end + + test "localize Date: given the long format it uses it" do + assert_equal '01. März 2008', I18n.l(@date, :format => :long, :locale => :de) + end + + test "localize Date: given the default format it uses it" do + assert_equal '01.03.2008', I18n.l(@date, :format => :default, :locale => :de) + end + + test "localize Date: given a day name format it returns the correct day name" do + assert_equal 'Samstag', I18n.l(@date, :format => '%A', :locale => :de) + end + + test "localize Date: given an abbreviated day name format it returns the correct abbreviated day name" do + assert_equal 'Sa', I18n.l(@date, :format => '%a', :locale => :de) + end + + test "localize Date: given a month name format it returns the correct month name" do + assert_equal 'März', I18n.l(@date, :format => '%B', :locale => :de) + end + + test "localize Date: given an abbreviated month name format it returns the correct abbreviated month name" do + # TODO should be Mrz, shouldn't it? + assert_equal 'Mar', I18n.l(@date, :format => '%b', :locale => :de) + end + + test "localize Date: given an unknown format it does not fail" do + assert_nothing_raised { I18n.l(@date, :format => '%x') } + end + + test "localize Date: does not modify the options hash" do + options = { :format => '%b', :locale => :de } + assert_equal 'Mar', I18n.l(@date, options) + assert_equal({ :format => '%b', :locale => :de }, options) + assert_nothing_raised { I18n.l(@date, options.freeze) } + end + + test "localize Date: given nil with default value it returns default" do + assert_equal 'default', I18n.l(nil, :default => 'default') + end + + test "localize Date: given nil it raises I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.l(nil) } + end + + test "localize Date: given a plain Object it raises I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.l(Object.new) } + end + + test "localize Date: given a format is missing it raises I18n::MissingTranslationData" do + assert_raise(I18n::MissingTranslationData) { I18n.l(@date, :format => :missing) } + end + + test "localize Date: it does not alter the format string" do + assert_equal '01. Februar 2009', I18n.l(::Date.parse('2009-02-01'), :format => :long, :locale => :de) + assert_equal '01. Oktober 2009', I18n.l(::Date.parse('2009-10-01'), :format => :long, :locale => :de) + end + + protected + + def setup_date_translations + I18n.backend.store_translations :de, { + :date => { + :formats => { + :default => "%d.%m.%Y", + :short => "%d. %b", + :long => "%d. %B %Y", + }, + :day_names => %w(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag), + :abbr_day_names => %w(So Mo Di Mi Do Fr Sa), + :month_names => %w(Januar Februar März April Mai Juni Juli August September Oktober November Dezember).unshift(nil), + :abbr_month_names => %w(Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Dez).unshift(nil) + } + } + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date_time.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date_time.rb new file mode 100644 index 0000000000..7a30bff491 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/date_time.rb @@ -0,0 +1,82 @@ +# encoding: utf-8 + +module I18n + module Tests + module Localization + module DateTime + def setup + super + setup_datetime_translations + @datetime = ::DateTime.new(2008, 3, 1, 6) + @other_datetime = ::DateTime.new(2008, 3, 1, 18) + end + + test "localize DateTime: given the short format it uses it" do + # TODO should be Mrz, shouldn't it? + assert_equal '01. Mar 06:00', I18n.l(@datetime, :format => :short, :locale => :de) + end + + test "localize DateTime: given the long format it uses it" do + assert_equal '01. März 2008 06:00', I18n.l(@datetime, :format => :long, :locale => :de) + end + + test "localize DateTime: given the default format it uses it" do + # TODO should be Mrz, shouldn't it? + assert_equal 'Sa, 01. Mar 2008 06:00:00 +0000', I18n.l(@datetime, :format => :default, :locale => :de) + end + + test "localize DateTime: given a day name format it returns the correct day name" do + assert_equal 'Samstag', I18n.l(@datetime, :format => '%A', :locale => :de) + end + + test "localize DateTime: given an abbreviated day name format it returns the correct abbreviated day name" do + assert_equal 'Sa', I18n.l(@datetime, :format => '%a', :locale => :de) + end + + test "localize DateTime: given a month name format it returns the correct month name" do + assert_equal 'März', I18n.l(@datetime, :format => '%B', :locale => :de) + end + + test "localize DateTime: given an abbreviated month name format it returns the correct abbreviated month name" do + # TODO should be Mrz, shouldn't it? + assert_equal 'Mar', I18n.l(@datetime, :format => '%b', :locale => :de) + end + + test "localize DateTime: given a meridian indicator format it returns the correct meridian indicator" do + assert_equal 'AM', I18n.l(@datetime, :format => '%p', :locale => :de) + assert_equal 'PM', I18n.l(@other_datetime, :format => '%p', :locale => :de) + end + + test "localize DateTime: given a meridian indicator format it returns the correct meridian indicator in downcase" do + assert_equal 'am', I18n.l(@datetime, :format => '%P', :locale => :de) + assert_equal 'pm', I18n.l(@other_datetime, :format => '%P', :locale => :de) + end + + test "localize DateTime: given an unknown format it does not fail" do + assert_nothing_raised { I18n.l(@datetime, :format => '%x') } + end + + test "localize DateTime: given a format is missing it raises I18n::MissingTranslationData" do + assert_raise(I18n::MissingTranslationData) { I18n.l(@datetime, :format => :missing) } + end + + protected + + def setup_datetime_translations + # time translations might have been set up in Tests::Api::Localization::Time + I18n.backend.store_translations :de, { + :time => { + :formats => { + :default => "%a, %d. %b %Y %H:%M:%S %z", + :short => "%d. %b %H:%M", + :long => "%d. %B %Y %H:%M" + }, + :am => 'am', + :pm => 'pm' + } + } + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/procs.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/procs.rb new file mode 100644 index 0000000000..de62488862 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/procs.rb @@ -0,0 +1,116 @@ +# encoding: utf-8 + +module I18n + module Tests + module Localization + module Procs + test "localize: using day names from lambdas" do + setup_time_proc_translations + time = ::Time.utc(2008, 3, 1, 6, 0) + assert_match(/Суббота/, I18n.l(time, :format => "%A, %d %B", :locale => :ru)) + assert_match(/суббота/, I18n.l(time, :format => "%d %B (%A)", :locale => :ru)) + end + + test "localize: using month names from lambdas" do + setup_time_proc_translations + time = ::Time.utc(2008, 3, 1, 6, 0) + assert_match(/марта/, I18n.l(time, :format => "%d %B %Y", :locale => :ru)) + assert_match(/Март /, I18n.l(time, :format => "%B %Y", :locale => :ru)) + end + + test "localize: using abbreviated day names from lambdas" do + setup_time_proc_translations + time = ::Time.utc(2008, 3, 1, 6, 0) + assert_match(/марта/, I18n.l(time, :format => "%d %b %Y", :locale => :ru)) + assert_match(/март /, I18n.l(time, :format => "%b %Y", :locale => :ru)) + end + + test "localize Date: given a format that resolves to a Proc it calls the Proc with the object" do + setup_time_proc_translations + date = ::Date.new(2008, 3, 1) + assert_equal '[Sat, 01 Mar 2008, {}]', I18n.l(date, :format => :proc, :locale => :ru) + end + + test "localize Date: given a format that resolves to a Proc it calls the Proc with the object and extra options" do + setup_time_proc_translations + date = ::Date.new(2008, 3, 1) + assert_equal '[Sat, 01 Mar 2008, {:foo=>"foo"}]', I18n.l(date, :format => :proc, :foo => 'foo', :locale => :ru) + end + + test "localize DateTime: given a format that resolves to a Proc it calls the Proc with the object" do + setup_time_proc_translations + datetime = ::DateTime.new(2008, 3, 1, 6) + assert_equal '[Sat, 01 Mar 2008 06:00:00 +00:00, {}]', I18n.l(datetime, :format => :proc, :locale => :ru) + end + + test "localize DateTime: given a format that resolves to a Proc it calls the Proc with the object and extra options" do + setup_time_proc_translations + datetime = ::DateTime.new(2008, 3, 1, 6) + assert_equal '[Sat, 01 Mar 2008 06:00:00 +00:00, {:foo=>"foo"}]', I18n.l(datetime, :format => :proc, :foo => 'foo', :locale => :ru) + end + + test "localize Time: given a format that resolves to a Proc it calls the Proc with the object" do + setup_time_proc_translations + time = ::Time.utc(2008, 3, 1, 6, 0) + assert_equal I18n::Tests::Localization::Procs.inspect_args([time, {}]), I18n.l(time, :format => :proc, :locale => :ru) + end + + test "localize Time: given a format that resolves to a Proc it calls the Proc with the object and extra options" do + setup_time_proc_translations + time = ::Time.utc(2008, 3, 1, 6, 0) + options = { :foo => 'foo' } + assert_equal I18n::Tests::Localization::Procs.inspect_args([time, options]), I18n.l(time, options.merge(:format => :proc, :locale => :ru)) + end + + protected + + def self.inspect_args(args) + args = args.map do |arg| + case arg + when ::Time, ::DateTime + arg.strftime('%a, %d %b %Y %H:%M:%S %Z').sub('+0000', '+00:00') + when ::Date + arg.strftime('%a, %d %b %Y') + when Hash + arg.delete(:fallback_in_progress) + arg.inspect + else + arg.inspect + end + end + "[#{args.join(', ')}]" + end + + def setup_time_proc_translations + I18n.backend.store_translations :ru, { + :time => { + :formats => { + :proc => lambda { |*args| I18n::Tests::Localization::Procs.inspect_args(args) } + } + }, + :date => { + :formats => { + :proc => lambda { |*args| I18n::Tests::Localization::Procs.inspect_args(args) } + }, + :'day_names' => lambda { |key, options| + (options[:format] =~ /^%A/) ? + %w(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота) : + %w(воскресенье понедельник вторник среда четверг пятница суббота) + }, + :'month_names' => lambda { |key, options| + (options[:format] =~ /(%d|%e)(\s*)?(%B)/) ? + %w(января февраля марта апреля мая июня июля августа сентября октября ноября декабря).unshift(nil) : + %w(Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь).unshift(nil) + }, + :'abbr_month_names' => lambda { |key, options| + (options[:format] =~ /(%d|%e)(\s*)(%b)/) ? + %w(янв. февр. марта апр. мая июня июля авг. сент. окт. нояб. дек.).unshift(nil) : + %w(янв. февр. март апр. май июнь июль авг. сент. окт. нояб. дек.).unshift(nil) + }, + } + } + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/time.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/time.rb new file mode 100644 index 0000000000..8bbba43c18 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/localization/time.rb @@ -0,0 +1,81 @@ +# encoding: utf-8 + +module I18n + module Tests + module Localization + module Time + def setup + super + setup_time_translations + @time = ::Time.utc(2008, 3, 1, 6, 0) + @other_time = ::Time.utc(2008, 3, 1, 18, 0) + end + + test "localize Time: given the short format it uses it" do + # TODO should be Mrz, shouldn't it? + assert_equal '01. Mar 06:00', I18n.l(@time, :format => :short, :locale => :de) + end + + test "localize Time: given the long format it uses it" do + assert_equal '01. März 2008 06:00', I18n.l(@time, :format => :long, :locale => :de) + end + + # TODO Seems to break on Windows because ENV['TZ'] is ignored. What's a better way to do this? + # def test_localize_given_the_default_format_it_uses_it + # assert_equal 'Sa, 01. Mar 2008 06:00:00 +0000', I18n.l(@time, :format => :default, :locale => :de) + # end + + test "localize Time: given a day name format it returns the correct day name" do + assert_equal 'Samstag', I18n.l(@time, :format => '%A', :locale => :de) + end + + test "localize Time: given an abbreviated day name format it returns the correct abbreviated day name" do + assert_equal 'Sa', I18n.l(@time, :format => '%a', :locale => :de) + end + + test "localize Time: given a month name format it returns the correct month name" do + assert_equal 'März', I18n.l(@time, :format => '%B', :locale => :de) + end + + test "localize Time: given an abbreviated month name format it returns the correct abbreviated month name" do + # TODO should be Mrz, shouldn't it? + assert_equal 'Mar', I18n.l(@time, :format => '%b', :locale => :de) + end + + test "localize Time: given a meridian indicator format it returns the correct meridian indicator" do + assert_equal 'AM', I18n.l(@time, :format => '%p', :locale => :de) + assert_equal 'PM', I18n.l(@other_time, :format => '%p', :locale => :de) + end + + test "localize Time: given a meridian indicator format it returns the correct meridian indicator in upcase" do + assert_equal 'am', I18n.l(@time, :format => '%P', :locale => :de) + assert_equal 'pm', I18n.l(@other_time, :format => '%P', :locale => :de) + end + + test "localize Time: given an unknown format it does not fail" do + assert_nothing_raised { I18n.l(@time, :format => '%x') } + end + + test "localize Time: given a format is missing it raises I18n::MissingTranslationData" do + assert_raise(I18n::MissingTranslationData) { I18n.l(@time, :format => :missing) } + end + + protected + + def setup_time_translations + I18n.backend.store_translations :de, { + :time => { + :formats => { + :default => "%a, %d. %b %Y %H:%M:%S %z", + :short => "%d. %b %H:%M", + :long => "%d. %B %Y %H:%M", + }, + :am => 'am', + :pm => 'pm' + } + } + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/lookup.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/lookup.rb new file mode 100644 index 0000000000..3b4c843494 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/lookup.rb @@ -0,0 +1,81 @@ +# encoding: utf-8 + +module I18n + module Tests + module Lookup + def setup + super + I18n.backend.store_translations(:en, :foo => { :bar => 'bar', :baz => 'baz' }, :falsy => false, :truthy => true, + :string => "a", :array => %w(a b c), :hash => { "a" => "b" }) + end + + test "lookup: it returns a string" do + assert_equal("a", I18n.t(:string)) + end + + test "lookup: it returns hash" do + assert_equal({ :a => "b" }, I18n.t(:hash)) + end + + test "lookup: it returns an array" do + assert_equal(%w(a b c), I18n.t(:array)) + end + + test "lookup: it returns a native true" do + assert I18n.t(:truthy) === true + end + + test "lookup: it returns a native false" do + assert I18n.t(:falsy) === false + end + + test "lookup: given a missing key, no default and no raise option it returns an error message" do + assert_equal "translation missing: en.missing", I18n.t(:missing) + end + + test "lookup: given a missing key, no default and the raise option it raises MissingTranslationData" do + assert_raise(I18n::MissingTranslationData) { I18n.t(:missing, :raise => true) } + end + + test "lookup: does not raise an exception if no translation data is present for the given locale" do + assert_nothing_raised { I18n.t(:foo, :locale => :xx) } + end + + test "lookup: does not modify the options hash" do + options = {} + assert_equal "a", I18n.t(:string, options) + assert_equal({}, options) + assert_nothing_raised { I18n.t(:string, options.freeze) } + end + + test "lookup: given an array of keys it translates all of them" do + assert_equal %w(bar baz), I18n.t([:bar, :baz], :scope => [:foo]) + end + + test "lookup: using a custom scope separator" do + # data must have been stored using the custom separator when using the ActiveRecord backend + I18n.backend.store_translations(:en, { :foo => { :bar => 'bar' } }, { :separator => '|' }) + assert_equal 'bar', I18n.t('foo|bar', :separator => '|') + end + + # In fact it probably *should* fail but Rails currently relies on using the default locale instead. + # So we'll stick to this for now until we get it fixed in Rails. + test "lookup: given nil as a locale it does not raise but use the default locale" do + # assert_raise(I18n::InvalidLocale) { I18n.t(:bar, :locale => nil) } + assert_nothing_raised { I18n.t(:bar, :locale => nil) } + end + + test "lookup: a resulting String is not frozen" do + assert !I18n.t(:string).frozen? + end + + test "lookup: a resulting Array is not frozen" do + assert !I18n.t(:array).frozen? + end + + test "lookup: a resulting Hash is not frozen" do + assert !I18n.t(:hash).frozen? + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/pluralization.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/pluralization.rb new file mode 100644 index 0000000000..d3319dcdad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/pluralization.rb @@ -0,0 +1,35 @@ +# encoding: utf-8 + +module I18n + module Tests + module Pluralization + test "pluralization: given 0 it returns the :zero translation if it is defined" do + assert_equal 'zero', I18n.t(:default => { :zero => 'zero' }, :count => 0) + end + + test "pluralization: given 0 it returns the :other translation if :zero is not defined" do + assert_equal 'bars', I18n.t(:default => { :other => 'bars' }, :count => 0) + end + + test "pluralization: given 1 it returns the singular translation" do + assert_equal 'bar', I18n.t(:default => { :one => 'bar' }, :count => 1) + end + + test "pluralization: given 2 it returns the :other translation" do + assert_equal 'bars', I18n.t(:default => { :other => 'bars' }, :count => 2) + end + + test "pluralization: given 3 it returns the :other translation" do + assert_equal 'bars', I18n.t(:default => { :other => 'bars' }, :count => 3) + end + + test "pluralization: given nil it returns the whole entry" do + assert_equal({ :one => 'bar' }, I18n.t(:default => { :one => 'bar' }, :count => nil)) + end + + test "pluralization: given incomplete pluralization data it raises I18n::InvalidPluralizationData" do + assert_raise(I18n::InvalidPluralizationData) { I18n.t(:default => { :one => 'bar' }, :count => 2) } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/procs.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/procs.rb new file mode 100644 index 0000000000..aa2df19afb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/tests/procs.rb @@ -0,0 +1,55 @@ +# encoding: utf-8 + +module I18n + module Tests + module Procs + test "lookup: given a translation is a proc it calls the proc with the key and interpolation values" do + I18n.backend.store_translations(:en, :a_lambda => lambda { |*args| I18n::Tests::Procs.filter_args(*args) }) + assert_equal '[:a_lambda, {:foo=>"foo"}]', I18n.t(:a_lambda, :foo => 'foo') + end + + test "defaults: given a default is a Proc it calls it with the key and interpolation values" do + proc = lambda { |*args| I18n::Tests::Procs.filter_args(*args) } + assert_equal '[nil, {:foo=>"foo"}]', I18n.t(nil, :default => proc, :foo => 'foo') + end + + test "defaults: given a default is a key that resolves to a Proc it calls it with the key and interpolation values" do + the_lambda = lambda { |*args| I18n::Tests::Procs.filter_args(*args) } + I18n.backend.store_translations(:en, :a_lambda => the_lambda) + assert_equal '[:a_lambda, {:foo=>"foo"}]', I18n.t(nil, :default => :a_lambda, :foo => 'foo') + assert_equal '[:a_lambda, {:foo=>"foo"}]', I18n.t(nil, :default => [nil, :a_lambda], :foo => 'foo') + end + + test "interpolation: given an interpolation value is a lambda it calls it with key and values before interpolating it" do + proc = lambda { |*args| I18n::Tests::Procs.filter_args(*args) } + assert_match %r(\[\{:foo=>#\}\]), I18n.t(nil, :default => '%{foo}', :foo => proc) + end + + test "interpolation: given a key resolves to a Proc that returns a string then interpolation still works" do + proc = lambda { |*args| "%{foo}: " + I18n::Tests::Procs.filter_args(*args) } + assert_equal 'foo: [nil, {:foo=>"foo"}]', I18n.t(nil, :default => proc, :foo => 'foo') + end + + test "pluralization: given a key resolves to a Proc that returns valid data then pluralization still works" do + proc = lambda { |*args| { :zero => 'zero', :one => 'one', :other => 'other' } } + assert_equal 'zero', I18n.t(:default => proc, :count => 0) + assert_equal 'one', I18n.t(:default => proc, :count => 1) + assert_equal 'other', I18n.t(:default => proc, :count => 2) + end + + test "lookup: given the option :resolve => false was passed it does not resolve proc translations" do + I18n.backend.store_translations(:en, :a_lambda => lambda { |*args| I18n::Tests::Procs.filter_args(*args) }) + assert_equal Proc, I18n.t(:a_lambda, :resolve => false).class + end + + test "lookup: given the option :resolve => false was passed it does not resolve proc default" do + assert_equal Proc, I18n.t(nil, :default => lambda { |*args| I18n::Tests::Procs.filter_args(*args) }, :resolve => false).class + end + + + def self.filter_args(*args) + args.map {|arg| arg.delete(:fallback_in_progress) if arg.is_a?(Hash) ; arg }.inspect + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/version.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/version.rb new file mode 100644 index 0000000000..0681a8216f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/lib/i18n/version.rb @@ -0,0 +1,3 @@ +module I18n + VERSION = "0.9.5" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/all_features_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/all_features_test.rb new file mode 100644 index 0000000000..a1799bd6e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/all_features_test.rb @@ -0,0 +1,58 @@ +require 'test_helper' + +begin + require 'rubygems' + require 'active_support' +rescue LoadError + puts "not testing with Cache enabled because active_support can not be found" +end + +class I18nAllFeaturesApiTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Metadata + include I18n::Backend::Cache + include I18n::Backend::Cascade + include I18n::Backend::Fallbacks + include I18n::Backend::Pluralization + include I18n::Backend::Memoize + end + + def setup + I18n.backend = I18n::Backend::Chain.new(Backend.new, I18n::Backend::Simple.new) + I18n.cache_store = cache_store + super + end + + def teardown + I18n.cache_store.clear if I18n.cache_store + I18n.cache_store = nil + super + end + + def cache_store + ActiveSupport::Cache.lookup_store(:memory_store) if cache_available? + end + + def cache_available? + defined?(ActiveSupport) && defined?(ActiveSupport::Cache) + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use a Chain backend with an all features backend" do + assert_equal I18n::Backend::Chain, I18n.backend.class + assert_equal Backend, I18n.backend.backends.first.class + end + + # links: test that keys stored on one backend can link to keys stored on another backend +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/cascade_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/cascade_test.rb new file mode 100644 index 0000000000..4d9516c46e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/cascade_test.rb @@ -0,0 +1,28 @@ +require 'test_helper' + +class I18nCascadeApiTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Cascade + end + + def setup + I18n.backend = Backend.new + super + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use a backend with Cascade included" do + assert_equal Backend, I18n.backend.class + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/chain_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/chain_test.rb new file mode 100644 index 0000000000..f3dff1b574 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/chain_test.rb @@ -0,0 +1,24 @@ +require 'test_helper' + +class I18nApiChainTest < I18n::TestCase + def setup + super + I18n.backend = I18n::Backend::Chain.new(I18n::Backend::Simple.new, I18n.backend) + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use the Chain backend" do + assert_equal I18n::Backend::Chain, I18n.backend.class + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/fallbacks_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/fallbacks_test.rb new file mode 100644 index 0000000000..e5ca5f2066 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/fallbacks_test.rb @@ -0,0 +1,30 @@ +require 'test_helper' + +class I18nFallbacksApiTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Fallbacks + end + + def setup + I18n.backend = Backend.new + super + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use a backend with Fallbacks included" do + assert_equal Backend, I18n.backend.class + end + + # links: test that keys stored on one backend can link to keys stored on another backend +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/key_value_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/key_value_test.rb new file mode 100644 index 0000000000..4d6cdd8a42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/key_value_test.rb @@ -0,0 +1,24 @@ +require 'test_helper' + +class I18nKeyValueApiTest < I18n::TestCase + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + # include Tests::Api::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + # include Tests::Api::Localization::Procs + + def setup + I18n.backend = I18n::Backend::KeyValue.new({}) + super + end + + test "make sure we use the KeyValue backend" do + assert_equal I18n::Backend::KeyValue, I18n.backend.class + end +end if I18n::TestCase.key_value? diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/memoize_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/memoize_test.rb new file mode 100644 index 0000000000..ed938665c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/memoize_test.rb @@ -0,0 +1,56 @@ +require 'test_helper' + +class I18nMemoizeBackendWithSimpleApiTest < I18n::TestCase + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + class MemoizeBackend < I18n::Backend::Simple + include I18n::Backend::Memoize + end + + def setup + I18n.backend = MemoizeBackend.new + super + end + + test "make sure we use the MemoizeBackend backend" do + assert_equal MemoizeBackend, I18n.backend.class + end +end + +class I18nMemoizeBackendWithKeyValueApiTest < I18n::TestCase + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + + # include I18n::Tests::Procs + # include I18n::Tests::Localization::Procs + + class MemoizeBackend < I18n::Backend::KeyValue + include I18n::Backend::Memoize + end + + def setup + I18n.backend = MemoizeBackend.new({}) + super + end + + test "make sure we use the MemoizeBackend backend" do + assert_equal MemoizeBackend, I18n.backend.class + end +end if I18n::TestCase.key_value? diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/override_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/override_test.rb new file mode 100644 index 0000000000..6e1248ad4d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/override_test.rb @@ -0,0 +1,42 @@ +require 'test_helper' + +class I18nOverrideTest < I18n::TestCase + module OverrideInverse + def translate(*args) + super(*args).reverse + end + alias :t :translate + end + + module OverrideSignature + def translate(*args) + args.first + args[1] + end + alias :t :translate + end + + def setup + super + @I18n = I18n.dup + @I18n.backend = I18n::Backend::Simple.new + end + + test "make sure modules can overwrite I18n methods" do + @I18n.extend OverrideInverse + @I18n.backend.store_translations('en', :foo => 'bar') + + assert_equal 'rab', @I18n.translate(:foo, :locale => 'en') + assert_equal 'rab', @I18n.t(:foo, :locale => 'en') + assert_equal 'rab', @I18n.translate!(:foo, :locale => 'en') + assert_equal 'rab', @I18n.t!(:foo, :locale => 'en') + end + + test "make sure modules can overwrite I18n signature" do + exception = catch(:exception) do + @I18n.t('Hello', 'Welcome message on home page', :tokenize => true, :throw => true) + end + assert exception.message + @I18n.extend OverrideSignature + assert_equal 'HelloWelcome message on home page', @I18n.translate('Hello', 'Welcome message on home page', :tokenize => true) # tr8n example + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/pluralization_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/pluralization_test.rb new file mode 100644 index 0000000000..53004beb71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/pluralization_test.rb @@ -0,0 +1,30 @@ +require 'test_helper' + +class I18nPluralizationApiTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Pluralization + end + + def setup + I18n.backend = Backend.new + super + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use a backend with Pluralization included" do + assert_equal Backend, I18n.backend.class + end + + # links: test that keys stored on one backend can link to keys stored on another backend +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/simple_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/simple_test.rb new file mode 100644 index 0000000000..3fd3a4247a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/api/simple_test.rb @@ -0,0 +1,28 @@ +require 'test_helper' + +class I18nSimpleBackendApiTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Pluralization + end + + def setup + I18n.backend = I18n::Backend::Simple.new + super + end + + include I18n::Tests::Basics + include I18n::Tests::Defaults + include I18n::Tests::Interpolation + include I18n::Tests::Link + include I18n::Tests::Lookup + include I18n::Tests::Pluralization + include I18n::Tests::Procs + include I18n::Tests::Localization::Date + include I18n::Tests::Localization::DateTime + include I18n::Tests::Localization::Time + include I18n::Tests::Localization::Procs + + test "make sure we use the Simple backend" do + assert_equal I18n::Backend::Simple, I18n.backend.class + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cache_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cache_test.rb new file mode 100644 index 0000000000..3f44a6d43c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cache_test.rb @@ -0,0 +1,109 @@ +require 'test_helper' +require 'digest/md5' + +begin + require 'active_support' +rescue LoadError + $stderr.puts "Skipping cache tests using ActiveSupport" +else + +class I18nBackendCacheTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Cache + end + + def setup + I18n.backend = Backend.new + super + I18n.cache_store = ActiveSupport::Cache.lookup_store(:memory_store) + I18n.cache_key_digest = nil + end + + def teardown + super + I18n.cache_store = nil + end + + test "it uses the cache" do + assert I18n.cache_store.is_a?(ActiveSupport::Cache::MemoryStore) + end + + test "translate hits the backend and caches the response" do + I18n.backend.expects(:lookup).returns('Foo') + assert_equal 'Foo', I18n.t(:foo) + + I18n.backend.expects(:lookup).never + assert_equal 'Foo', I18n.t(:foo) + + I18n.backend.expects(:lookup).returns('Bar') + assert_equal 'Bar', I18n.t(:bar) + end + + test "translate returns a cached false response" do + I18n.backend.expects(:lookup).never + I18n.cache_store.expects(:read).returns(false) + assert_equal false, I18n.t(:foo) + end + + test "still raises MissingTranslationData but also caches it" do + assert_raise(I18n::MissingTranslationData) { I18n.t(:missing, :raise => true) } + assert_raise(I18n::MissingTranslationData) { I18n.t(:missing, :raise => true) } + assert_equal 1, I18n.cache_store.instance_variable_get(:@data).size + + # I18n.backend.expects(:lookup).returns(nil) + # assert_raise(I18n::MissingTranslationData) { I18n.t(:missing, :raise => true) } + # I18n.backend.expects(:lookup).never + # assert_raise(I18n::MissingTranslationData) { I18n.t(:missing, :raise => true) } + end + + test "uses 'i18n' as a cache key namespace by default" do + assert_equal 0, I18n.backend.send(:cache_key, :en, :foo, {}).index('i18n') + end + + test "adds a custom cache key namespace" do + with_cache_namespace('bar') do + assert_equal 0, I18n.backend.send(:cache_key, :en, :foo, {}).index('i18n/bar/') + end + end + + test "adds locale and hash of key and hash of options" do + options = { :bar=>1 } + options_hash = RUBY_VERSION <= "1.9" ? options.inspect.hash : options.hash + assert_equal "i18n//en/#{:foo.hash}/#{options_hash}", I18n.backend.send(:cache_key, :en, :foo, options) + end + + test "cache_key uses configured digest method" do + md5 = Digest::MD5.new + options = { :bar=>1 } + options_hash = options.inspect + with_cache_key_digest(md5) do + assert_equal "i18n//en/#{md5.hexdigest(:foo.to_s)}/#{md5.hexdigest(options_hash)}", I18n.backend.send(:cache_key, :en, :foo, options) + end + end + + test "keys should not be equal" do + interpolation_values1 = { :foo => 1, :bar => 2 } + interpolation_values2 = { :foo => 2, :bar => 1 } + + key1 = I18n.backend.send(:cache_key, :en, :some_key, interpolation_values1) + key2 = I18n.backend.send(:cache_key, :en, :some_key, interpolation_values2) + + assert key1 != key2 + end + + protected + + def with_cache_namespace(namespace) + I18n.cache_namespace = namespace + yield + I18n.cache_namespace = nil + end + + def with_cache_key_digest(digest) + I18n.cache_key_digest = digest + yield + I18n.cache_key_digest = nil + end +end + +end # AS cache check diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cascade_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cascade_test.rb new file mode 100644 index 0000000000..1101460542 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/cascade_test.rb @@ -0,0 +1,86 @@ +require 'test_helper' + +class I18nBackendCascadeTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Cascade + end + + def setup + super + I18n.backend = Backend.new + store_translations(:en, :foo => 'foo', :bar => { :baz => 'baz' }) + @cascade_options = { :step => 1, :offset => 1, :skip_root => false } + end + + def lookup(key, options = {}) + I18n.t(key, options.merge(:cascade => @cascade_options)) + end + + test "still returns an existing translation as usual" do + assert_equal 'foo', lookup(:foo) + assert_equal 'baz', lookup(:'bar.baz') + end + + test "falls back by cutting keys off the end of the scope" do + assert_equal 'foo', lookup(:foo, :scope => :'missing') + assert_equal 'foo', lookup(:foo, :scope => :'missing.missing') + assert_equal 'baz', lookup(:baz, :scope => :'bar.missing') + assert_equal 'baz', lookup(:baz, :scope => :'bar.missing.missing') + end + + test "raises I18n::MissingTranslationData exception when no translation was found" do + assert_raise(I18n::MissingTranslationData) { lookup(:'foo.missing', :raise => true) } + assert_raise(I18n::MissingTranslationData) { lookup(:'bar.baz.missing', :raise => true) } + assert_raise(I18n::MissingTranslationData) { lookup(:'missing.bar.baz', :raise => true) } + end + + test "cascades before evaluating the default" do + assert_equal 'foo', lookup(:foo, :scope => :missing, :default => 'default') + end + + test "cascades defaults, too" do + assert_equal 'foo', lookup(nil, :default => [:'missing.missing', :'missing.foo']) + end + + test "works with :offset => 2 and a single key" do + @cascade_options[:offset] = 2 + lookup(:foo) + end + + test "assemble required fallbacks for ActiveRecord validation messages" do + store_translations(:en, + :errors => { + :odd => 'errors.odd', + :reply => { :title => { :blank => 'errors.reply.title.blank' }, :taken => 'errors.reply.taken' }, + :topic => { :title => { :format => 'errors.topic.title.format' }, :length => 'errors.topic.length' } + } + ) + assert_equal 'errors.reply.title.blank', lookup(:'errors.reply.title.blank', :default => :'errors.topic.title.blank') + assert_equal 'errors.reply.taken', lookup(:'errors.reply.title.taken', :default => :'errors.topic.title.taken') + assert_equal 'errors.topic.title.format', lookup(:'errors.reply.title.format', :default => :'errors.topic.title.format') + assert_equal 'errors.topic.length', lookup(:'errors.reply.title.length', :default => :'errors.topic.title.length') + assert_equal 'errors.odd', lookup(:'errors.reply.title.odd', :default => :'errors.topic.title.odd') + end + + test "assemble action view translation helper lookup cascade" do + @cascade_options[:offset] = 2 + + store_translations(:en, + :menu => { :show => 'menu.show' }, + :namespace => { + :menu => { :new => 'namespace.menu.new' }, + :controller => { + :menu => { :edit => 'namespace.controller.menu.edit' }, + :action => { + :menu => { :destroy => 'namespace.controller.action.menu.destroy' } + } + } + } + ) + + assert_equal 'menu.show', lookup(:'namespace.controller.action.menu.show') + assert_equal 'namespace.menu.new', lookup(:'namespace.controller.action.menu.new') + assert_equal 'namespace.controller.menu.edit', lookup(:'namespace.controller.action.menu.edit') + assert_equal 'namespace.controller.action.menu.destroy', lookup(:'namespace.controller.action.menu.destroy') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/chain_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/chain_test.rb new file mode 100644 index 0000000000..2fae0945bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/chain_test.rb @@ -0,0 +1,122 @@ +require 'test_helper' + +class I18nBackendChainTest < I18n::TestCase + def setup + super + @first = backend(:en => { + :foo => 'Foo', :formats => { + :short => 'short', + :subformats => {:short => 'short'}, + }, + :plural_1 => { :one => '%{count}' }, + :dates => {:a => "A"} + }) + @second = backend(:en => { + :bar => 'Bar', :formats => { + :long => 'long', + :subformats => {:long => 'long'}, + }, + :plural_2 => { :one => 'one' }, + :dates => {:a => "B", :b => "B"} + }) + @chain = I18n.backend = I18n::Backend::Chain.new(@first, @second) + end + + test "looks up translations from the first chained backend" do + assert_equal 'Foo', @first.send(:translations)[:en][:foo] + assert_equal 'Foo', I18n.t(:foo) + end + + test "looks up translations from the second chained backend" do + assert_equal 'Bar', @second.send(:translations)[:en][:bar] + assert_equal 'Bar', I18n.t(:bar) + end + + test "defaults only apply to lookups on the last backend in the chain" do + assert_equal 'Foo', I18n.t(:foo, :default => 'Bah') + assert_equal 'Bar', I18n.t(:bar, :default => 'Bah') + assert_equal 'Bah', I18n.t(:bah, :default => 'Bah') # default kicks in only here + end + + test "default" do + assert_equal 'Fuh', I18n.t(:default => 'Fuh') + assert_equal 'Zero', I18n.t(:default => { :zero => 'Zero' }, :count => 0) + assert_equal({ :zero => 'Zero' }, I18n.t(:default => { :zero => 'Zero' })) + assert_equal 'Foo', I18n.t(:default => :foo) + end + + test 'default is returned if translation is missing' do + assert_equal({}, I18n.t(:'i18n.transliterate.rule', :locale => 'en', :default => {})) + end + + test "namespace lookup collects results from all backends and merges deep hashes" do + assert_equal({:long=>"long", :subformats=>{:long=>"long", :short=>"short"}, :short=>"short"}, I18n.t(:formats)) + end + + test "namespace lookup collects results from all backends and lets leftmost backend take priority" do + assert_equal({ :a => "A", :b => "B" }, I18n.t(:dates)) + end + + test "namespace lookup with only the first backend returning a result" do + assert_equal({ :one => '%{count}' }, I18n.t(:plural_1)) + end + + test "pluralization still works" do + assert_equal '1', I18n.t(:plural_1, :count => 1) + assert_equal 'one', I18n.t(:plural_2, :count => 1) + end + + test "bulk lookup collects results from all backends" do + assert_equal ['Foo', 'Bar'], I18n.t([:foo, :bar]) + assert_equal ['Foo', 'Bar', 'Bah'], I18n.t([:foo, :bar, :bah], :default => 'Bah') + assert_equal [{ + :long=>"long", + :subformats=>{:long=>"long", :short=>"short"}, + :short=>"short"}, {:one=>"one"}, + "Bah"], I18n.t([:formats, :plural_2, :bah], :default => 'Bah') + end + + test "store_translations options are not dropped while transfering to backend" do + @first.expects(:store_translations).with(:foo, {:bar => :baz}, {:option => 'persists'}) + I18n.backend.store_translations :foo, {:bar => :baz}, {:option => 'persists'} + end + + protected + + def backend(translations) + backend = I18n::Backend::Simple.new + translations.each { |locale, data| backend.store_translations(locale, data) } + backend + end +end + +class I18nBackendChainWithKeyValueTest < I18n::TestCase + def setup_backend!(subtrees = true) + first = I18n::Backend::KeyValue.new({}, subtrees) + first.store_translations(:en, :plural_1 => { :one => '%{count}' }) + + second = I18n::Backend::Simple.new + second.store_translations(:en, :plural_2 => { :one => 'one' }) + I18n.backend = I18n::Backend::Chain.new(first, second) + end + + test "subtrees enabled: looks up pluralization translations from the first chained backend" do + setup_backend! + assert_equal '1', I18n.t(:plural_1, count: 1) + end + + test "subtrees disabled: looks up pluralization translations from the first chained backend" do + setup_backend!(false) + assert_equal '1', I18n.t(:plural_1, count: 1) + end + + test "subtrees enabled: looks up translations from the second chained backend" do + setup_backend! + assert_equal 'one', I18n.t(:plural_2, count: 1) + end + + test "subtrees disabled: looks up translations from the second chained backend" do + setup_backend!(false) + assert_equal 'one', I18n.t(:plural_2, count: 1) + end +end if I18n::TestCase.key_value? diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/exceptions_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/exceptions_test.rb new file mode 100644 index 0000000000..cc221669b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/exceptions_test.rb @@ -0,0 +1,36 @@ +require 'test_helper' + +class I18nBackendExceptionsTest < I18n::TestCase + def setup + super + I18n.backend = I18n::Backend::Simple.new + end + + test "throw message: MissingTranslation message from #translate includes the given scope and full key" do + exception = catch(:exception) do + I18n.t(:'baz.missing', :scope => :'foo.bar', :throw => true) + end + assert_equal "translation missing: en.foo.bar.baz.missing", exception.message + end + + test "exceptions: MissingTranslationData message from #translate includes the given scope and full key" do + begin + I18n.t(:'baz.missing', :scope => :'foo.bar', :raise => true) + rescue I18n::MissingTranslationData => exception + end + assert_equal "translation missing: en.foo.bar.baz.missing", exception.message + end + + test "exceptions: MissingTranslationData message from #localize includes the given scope and full key" do + begin + I18n.l(Time.now, :format => :foo) + rescue I18n::MissingTranslationData => exception + end + assert_equal "translation missing: en.time.formats.foo", exception.message + end + + test "exceptions: MissingInterpolationArgument message includes missing key, provided keys and full string" do + exception = I18n::MissingInterpolationArgument.new('key', {:this => 'was given'}, 'string') + assert_equal 'missing interpolation argument "key" in "string" ({:this=>"was given"} given)', exception.message + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/fallbacks_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/fallbacks_test.rb new file mode 100644 index 0000000000..a220c03850 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/fallbacks_test.rb @@ -0,0 +1,219 @@ +require 'test_helper' + +class I18nBackendFallbacksTranslateTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Fallbacks + end + + def setup + super + I18n.backend = Backend.new + store_translations(:en, :foo => 'Foo in :en', :bar => 'Bar in :en', :buz => 'Buz in :en', :interpolate => 'Interpolate %{value}') + store_translations(:de, :bar => 'Bar in :de', :baz => 'Baz in :de') + store_translations(:'de-DE', :baz => 'Baz in :de-DE') + store_translations(:'pt-BR', :baz => 'Baz in :pt-BR') + end + + test "still returns an existing translation as usual" do + assert_equal 'Foo in :en', I18n.t(:foo, :locale => :en) + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :de) + assert_equal 'Baz in :de-DE', I18n.t(:baz, :locale => :'de-DE') + end + + test "returns interpolated value if no key provided" do + assert_equal 'Interpolate %{value}', I18n.t(:interpolate) + end + + test "returns the :en translation for a missing :de translation" do + assert_equal 'Foo in :en', I18n.t(:foo, :locale => :de) + end + + test "returns the :de translation for a missing :'de-DE' translation" do + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE') + end + + test "returns the :en translation for translation missing in both :de and :'de-De'" do + assert_equal 'Buz in :en', I18n.t(:buz, :locale => :'de-DE') + end + + test "returns the :de translation for a missing :'de-DE' when :default is a String" do + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE', :default => "Default Bar") + assert_equal "Default Bar", I18n.t(:missing_bar, :locale => :'de-DE', :default => "Default Bar") + end + + test "returns the :de translation for a missing :'de-DE' when defaults is a Symbol (which exists in :en)" do + assert_equal "Bar in :de", I18n.t(:bar, :locale => :'de-DE', :default => [:buz]) + end + + test "returns the :'de-DE' default :baz translation for a missing :'de-DE' (which exists in :de)" do + assert_equal "Baz in :de-DE", I18n.t(:bar, :locale => :'de-DE', :default => [:baz]) + end + + test "returns the :de translation for a missing :'de-DE' when :default is a Proc" do + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE', :default => Proc.new { "Default Bar" }) + assert_equal "Default Bar", I18n.t(:missing_bar, :locale => :'de-DE', :default => Proc.new { "Default Bar" }) + end + + test "returns the :de translation for a missing :'de-DE' when :default is a Hash" do + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE', :default => {}) + assert_equal({}, I18n.t(:missing_bar, :locale => :'de-DE', :default => {})) + end + + test "returns the :de translation for a missing :'de-DE' when :default is nil" do + assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE', :default => nil) + assert_nil I18n.t(:missing_bar, :locale => :'de-DE', :default => nil) + end + + test "returns the translation missing message if the default is also missing" do + assert_equal 'translation missing: de-DE.missing_bar', I18n.t(:missing_bar, :locale => :'de-DE', :default => [:missing_baz]) + end + + test "returns the :'de-DE' default :baz translation for a missing :'de-DE' when defaults contains Symbol" do + assert_equal 'Baz in :de-DE', I18n.t(:missing_foo, :locale => :'de-DE', :default => [:baz, "Default Bar"]) + end + + test "returns the defaults translation for a missing :'de-DE' when defaults contains a String or Proc before Symbol" do + assert_equal "Default Bar", I18n.t(:missing_foo, :locale => :'de-DE', :default => [:missing_bar, "Default Bar", :baz]) + assert_equal "Default Bar", I18n.t(:missing_foo, :locale => :'de-DE', :default => [:missing_bar, Proc.new { "Default Bar" }, :baz]) + end + + test "returns the default translation for a missing :'de-DE' and existing :de when default is a Hash" do + assert_equal 'Default 6 Bars', I18n.t(:missing_foo, :locale => :'de-DE', :default => [:missing_bar, {:other => "Default %{count} Bars"}, "Default Bar"], :count => 6) + end + + test "returns the default translation for a missing :de translation even when default is a String when fallback is disabled" do + assert_equal 'Default String', I18n.t(:foo, :locale => :de, :default => 'Default String', :fallback => false) + end + + test "raises I18n::MissingTranslationData exception when fallback is disabled even when fallback translation exists" do + assert_raise(I18n::MissingTranslationData) { I18n.t(:foo, :locale => :de, :fallback => false, :raise => true) } + end + + test "raises I18n::MissingTranslationData exception when no translation was found" do + assert_raise(I18n::MissingTranslationData) { I18n.t(:faa, :locale => :en, :raise => true) } + assert_raise(I18n::MissingTranslationData) { I18n.t(:faa, :locale => :de, :raise => true) } + end + + test "should ensure that default is not splitted on new line char" do + assert_equal "Default \n Bar", I18n.t(:missing_bar, :default => "Default \n Bar") + end + + test "should not raise error when enforce_available_locales is true, :'pt' is missing and default is a Symbol" do + I18n.enforce_available_locales = true + begin + assert_equal 'Foo', I18n.t(:'model.attrs.foo', :locale => :'pt-BR', :default => [:'attrs.foo', "Foo"]) + ensure + I18n.enforce_available_locales = false + end + end +end + +class I18nBackendFallbacksLocalizeTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Fallbacks + end + + def setup + super + I18n.backend = Backend.new + store_translations(:en, :date => { :formats => { :en => 'en' }, :day_names => %w(Sunday) }) + store_translations(:de, :date => { :formats => { :de => 'de' } }) + end + + test "still uses an existing format as usual" do + assert_equal 'en', I18n.l(Date.today, :format => :en, :locale => :en) + end + + test "looks up and uses a fallback locale's format for a key missing in the given locale (1)" do + assert_equal 'en', I18n.l(Date.today, :format => :en, :locale => :de) + end + + test "looks up and uses a fallback locale's format for a key missing in the given locale (2)" do + assert_equal 'de', I18n.l(Date.today, :format => :de, :locale => :'de-DE') + end + + test "still uses an existing day name translation as usual" do + assert_equal 'Sunday', I18n.l(Date.new(2010, 1, 3), :format => '%A', :locale => :en) + end + + test "uses a fallback locale's translation for a key missing in the given locale" do + assert_equal 'Sunday', I18n.l(Date.new(2010, 1, 3), :format => '%A', :locale => :de) + end +end + +class I18nBackendFallbacksWithChainTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Fallbacks + end + + class Chain < I18n::Backend::Chain + include I18n::Backend::Fallbacks + end + + def setup + super + backend = Backend.new + backend.store_translations(:de, :foo => 'FOO') + backend.store_translations(:'pt-BR', :foo => 'Baz in :pt-BR') + I18n.backend = Chain.new(I18n::Backend::Simple.new, backend) + end + + test "falls back from de-DE to de when there is no translation for de-DE available" do + assert_equal 'FOO', I18n.t(:foo, :locale => :'de-DE') + end + + test "falls back from de-DE to de when there is no translation for de-DE available when using arrays, too" do + assert_equal ['FOO', 'FOO'], I18n.t([:foo, :foo], :locale => :'de-DE') + end + + test "should not raise error when enforce_available_locales is true, :'pt' is missing and default is a Symbol" do + I18n.enforce_available_locales = true + begin + assert_equal 'Foo', I18n.t(:'model.attrs.foo', :locale => :'pt-BR', :default => [:'attrs.foo', "Foo"]) + ensure + I18n.enforce_available_locales = false + end + end +end + +class I18nBackendFallbacksExistsTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Fallbacks + end + + def setup + super + I18n.backend = Backend.new + store_translations(:en, :foo => 'Foo in :en', :bar => 'Bar in :en') + store_translations(:de, :bar => 'Bar in :de') + store_translations(:'de-DE', :baz => 'Baz in :de-DE') + end + + test "exists? given an existing key will return true" do + assert_equal true, I18n.exists?(:foo) + end + + test "exists? given a non-existing key will return false" do + assert_equal false, I18n.exists?(:bogus) + end + + test "exists? given an existing key and an existing locale will return true" do + assert_equal true, I18n.exists?(:foo, :en) + assert_equal true, I18n.exists?(:bar, :de) + end + + test "exists? given a non-existing key and an existing locale will return false" do + assert_equal false, I18n.exists?(:bogus, :en) + assert_equal false, I18n.exists?(:bogus, :de) + end + + test "exists? should return true given a key which is missing from the given locale and exists in a fallback locale" do + assert_equal true, I18n.exists?(:foo, :de) + assert_equal true, I18n.exists?(:foo, :'de-DE') + end + + test "exists? should return false given a key which is missing from the given locale and all its fallback locales" do + assert_equal false, I18n.exists?(:baz, :de) + assert_equal false, I18n.exists?(:bogus, :'de-DE') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/interpolation_compiler_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/interpolation_compiler_test.rb new file mode 100644 index 0000000000..cffe28f9ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/interpolation_compiler_test.rb @@ -0,0 +1,118 @@ +require 'test_helper' + +class InterpolationCompilerTest < I18n::TestCase + Compiler = I18n::Backend::InterpolationCompiler::Compiler + + def compile_and_interpolate(str, values = {}) + Compiler.compile_if_an_interpolation(str).i18n_interpolate(values) + end + + def assert_escapes_interpolation_key(expected, malicious_str) + assert_equal(expected, Compiler.send(:escape_key_sym, malicious_str)) + end + + def test_escape_key_properly_escapes + assert_escapes_interpolation_key ':"\""', '"' + assert_escapes_interpolation_key ':"\\\\"', '\\' + assert_escapes_interpolation_key ':"\\\\\""', '\\"' + assert_escapes_interpolation_key ':"\#{}"', '#{}' + assert_escapes_interpolation_key ':"\\\\\#{}"', '\#{}' + end + + def assert_escapes_plain_string(expected, plain_str) + assert_equal expected, Compiler.send(:escape_plain_str, plain_str) + end + + def test_escape_plain_string_properly_escapes + assert_escapes_plain_string '\\"', '"' + assert_escapes_plain_string '\'', '\'' + assert_escapes_plain_string '\\#', '#' + assert_escapes_plain_string '\\#{}', '#{}' + assert_escapes_plain_string '\\\\\\"','\\"' + end + + def test_non_interpolated_strings_or_arrays_dont_get_compiled + ['abc', '\\{a}}', '{a}}', []].each do |obj| + Compiler.compile_if_an_interpolation(obj) + assert_equal false, obj.respond_to?(:i18n_interpolate) + end + end + + def test_interpolated_string_gets_compiled + assert_equal '-A-', compile_and_interpolate('-%{a}-', :a => 'A') + end + + def assert_handles_key(str, key) + assert_equal 'A', compile_and_interpolate(str, key => 'A') + end + + def test_compiles_fancy_keys + assert_handles_key('%{\}', :'\\' ) + assert_handles_key('%{#}', :'#' ) + assert_handles_key('%{#{}', :'#{' ) + assert_handles_key('%{#$SAFE}', :'#$SAFE') + assert_handles_key('%{\000}', :'\000' ) + assert_handles_key('%{\'}', :'\'' ) + assert_handles_key('%{\'\'}', :'\'\'' ) + assert_handles_key('%{a.b}', :'a.b' ) + assert_handles_key('%{ }', :' ' ) + assert_handles_key('%{:}', :':' ) + assert_handles_key("%{:''}", :":''" ) + assert_handles_key('%{:"}', :':"' ) + end + + def test_str_containing_only_escaped_interpolation_is_handled_correctly + assert_equal 'abc %{x}', compile_and_interpolate('abc %%{x}') + end + + def test_handles_weird_strings + assert_equal '#{} a', compile_and_interpolate('#{} %{a}', :a => 'a') + assert_equal '"#{abc}"', compile_and_interpolate('"#{ab%{a}c}"', :a => '' ) + assert_equal 'a}', compile_and_interpolate('%{{a}}', :'{a' => 'a') + assert_equal '"', compile_and_interpolate('"%{a}', :a => '' ) + assert_equal 'a%{a}', compile_and_interpolate('%{a}%%{a}', :a => 'a') + assert_equal '%%{a}', compile_and_interpolate('%%%{a}') + assert_equal '\";eval("a")', compile_and_interpolate('\";eval("%{a}")', :a => 'a') + assert_equal '\";eval("a")', compile_and_interpolate('\";eval("a")%{a}', :a => '' ) + assert_equal "\na", compile_and_interpolate("\n%{a}", :a => 'a') + end + + def test_raises_exception_when_argument_is_missing + assert_raise(I18n::MissingInterpolationArgument) do + compile_and_interpolate('%{first} %{last}', :first => 'first') + end + end + + def test_custom_missing_interpolation_argument_handler + old_handler = I18n.config.missing_interpolation_argument_handler + I18n.config.missing_interpolation_argument_handler = lambda do |key, values, string| + "missing key is #{key}, values are #{values.inspect}, given string is '#{string}'" + end + assert_equal %|first missing key is last, values are {:first=>"first"}, given string is '%{first} %{last}'|, + compile_and_interpolate('%{first} %{last}', :first => 'first') + ensure + I18n.config.missing_interpolation_argument_handler = old_handler + end +end + +class I18nBackendInterpolationCompilerTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::InterpolationCompiler + end + + include I18n::Tests::Interpolation + + def setup + I18n.backend = Backend.new + super + end + + # pre-compile default strings to make sure we are testing I18n::Backend::InterpolationCompiler + def interpolate(*args) + options = args.last.kind_of?(Hash) ? args.last : {} + if default_str = options[:default] + I18n::Backend::InterpolationCompiler::Compiler.compile_if_an_interpolation(default_str) + end + super + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/key_value_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/key_value_test.rb new file mode 100644 index 0000000000..be220d346d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/key_value_test.rb @@ -0,0 +1,61 @@ +require 'test_helper' + +class I18nBackendKeyValueTest < I18n::TestCase + def setup_backend!(subtree=true) + I18n.backend = I18n::Backend::KeyValue.new({}, subtree) + store_translations(:en, :foo => { :bar => 'bar', :baz => 'baz' }) + end + + def assert_flattens(expected, nested, escape=true, subtree=true) + assert_equal expected, I18n.backend.flatten_translations("en", nested, escape, subtree) + end + + test "hash flattening works" do + setup_backend! + assert_flattens( + {:a=>'a', :b=>{:c=>'c', :d=>'d', :f=>{:x=>'x'}}, :"b.f" => {:x=>"x"}, :"b.c"=>"c", :"b.f.x"=>"x", :"b.d"=>"d"}, + {:a=>'a', :b=>{:c=>'c', :d=>'d', :f=>{:x=>'x'}}} + ) + assert_flattens({:a=>{:b =>['a', 'b']}, :"a.b"=>['a', 'b']}, {:a=>{:b =>['a', 'b']}}) + assert_flattens({:"a\001b" => "c"}, {:"a.b" => "c"}) + assert_flattens({:"a.b"=>['a', 'b']}, {:a=>{:b =>['a', 'b']}}, true, false) + assert_flattens({:"a.b" => "c"}, {:"a.b" => "c"}, false) + end + + test "store_translations handle subtrees by default" do + setup_backend! + assert_equal({ :bar => 'bar', :baz => 'baz' }, I18n.t("foo")) + end + + test "store_translations merge subtrees accordingly" do + setup_backend! + store_translations(:en, :foo => { :baz => "BAZ"}) + assert_equal('BAZ', I18n.t("foo.baz")) + assert_equal({ :bar => 'bar', :baz => 'BAZ' }, I18n.t("foo")) + end + + test "store_translations does not handle subtrees if desired" do + setup_backend!(false) + assert_raise I18n::MissingTranslationData do + I18n.t("foo", :raise => true) + end + end + + test "subtrees enabled: given incomplete pluralization data it raises I18n::InvalidPluralizationData" do + setup_backend! + store_translations(:en, :bar => { :one => "One" }) + assert_raise(I18n::InvalidPluralizationData) { I18n.t(:bar, :count => 2) } + end + + test "subtrees disabled: given incomplete pluralization data it returns an error message" do + setup_backend!(false) + store_translations(:en, :bar => { :one => "One" }) + assert_equal "translation missing: en.bar", I18n.t(:bar, :count => 2) + end + + test "translate handles subtrees for pluralization" do + setup_backend!(false) + store_translations(:en, :bar => { :one => "One" }) + assert_equal("One", I18n.t("bar", :count => 1)) + end +end if I18n::TestCase.key_value? diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/memoize_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/memoize_test.rb new file mode 100644 index 0000000000..344890494c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/memoize_test.rb @@ -0,0 +1,79 @@ +require 'test_helper' +# TODO: change back to "require 'backend/simple'" when dropping support to Ruby 1.8.7. +require File.expand_path('../simple_test', __FILE__) + +class I18nBackendMemoizeTest < I18nBackendSimpleTest + module MemoizeSpy + attr_accessor :spy_calls + + def available_locales + self.spy_calls = (self.spy_calls || 0) + 1 + super + end + end + + class MemoizeBackend < I18n::Backend::Simple + include MemoizeSpy + include I18n::Backend::Memoize + end + + def setup + super + I18n.backend = MemoizeBackend.new + end + + def test_memoizes_available_locales + I18n.backend.spy_calls = 0 + assert_equal I18n.available_locales, I18n.available_locales + assert_equal 1, I18n.backend.spy_calls + end + + def test_resets_available_locales_on_reload! + I18n.available_locales + I18n.backend.spy_calls = 0 + I18n.reload! + assert_equal I18n.available_locales, I18n.available_locales + assert_equal 1, I18n.backend.spy_calls + end + + def test_resets_available_locales_on_store_translations + I18n.available_locales + I18n.backend.spy_calls = 0 + I18n.backend.store_translations(:copa, :ca => :bana) + assert_equal I18n.available_locales, I18n.available_locales + assert I18n.available_locales.include?(:copa) + assert_equal 1, I18n.backend.spy_calls + end + + module TestLookup + def lookup(locale, key, scope = [], options = {}) + keys = I18n.normalize_keys(locale, key, scope, options[:separator]) + keys.inspect + end + end + + def test_lookup_concurrent_consistency + backend_impl = Class.new(I18n::Backend::Simple) do + include TestLookup + include I18n::Backend::Memoize + end + backend = backend_impl.new + + memoized_lookup = backend.send(:memoized_lookup) + + assert_equal "[:foo, :scoped, :sample]", backend.translate('foo', scope = [:scoped, :sample]) + + results = [] + 30.times.inject([]) do |memo, i| + memo << Thread.new do + backend.translate('bar', scope); backend.translate(:baz, scope) + end + end.each(&:join) + + memoized_lookup = backend.send(:memoized_lookup) + puts memoized_lookup.inspect if $VERBOSE + assert_equal 3, memoized_lookup.size, "NON-THREAD-SAFE lookup memoization backend: #{memoized_lookup.class}" + # if a plain Hash is used might eventually end up in a weird (inconsistent) state + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/metadata_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/metadata_test.rb new file mode 100644 index 0000000000..44612cf080 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/metadata_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class I18nBackendMetadataTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Metadata + end + + def setup + super + I18n.backend = Backend.new + store_translations(:en, :foo => 'Hi %{name}') + end + + test "translation strings carry metadata" do + translation = I18n.t(:foo, :name => 'David') + assert translation.respond_to?(:translation_metadata) + assert translation.translation_metadata.is_a?(Hash) + end + + test "translate adds the locale to metadata on Strings" do + assert_equal :en, I18n.t(:foo, :name => 'David', :locale => :en).translation_metadata[:locale] + end + + test "translate adds the key to metadata on Strings" do + assert_equal :foo, I18n.t(:foo, :name => 'David').translation_metadata[:key] + end + + test "translate adds the default to metadata on Strings" do + assert_equal 'bar', I18n.t(:foo, :default => 'bar', :name => '').translation_metadata[:default] + end + + test "translation adds the interpolation values to metadata on Strings" do + assert_equal({:name => 'David'}, I18n.t(:foo, :name => 'David').translation_metadata[:values]) + end + + test "interpolation adds the original string to metadata on Strings" do + assert_equal('Hi %{name}', I18n.t(:foo, :name => 'David').translation_metadata[:original]) + end + + test "pluralization adds the count to metadata on Strings" do + assert_equal(1, I18n.t(:missing, :count => 1, :default => { :one => 'foo' }).translation_metadata[:count]) + end + + test "metadata works with frozen values" do + assert_equal(1, I18n.t(:missing, :count => 1, :default => 'foo'.freeze).translation_metadata[:count]) + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/pluralization_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/pluralization_test.rb new file mode 100644 index 0000000000..1518efdb67 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/pluralization_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class I18nBackendPluralizationTest < I18n::TestCase + class Backend < I18n::Backend::Simple + include I18n::Backend::Pluralization + include I18n::Backend::Fallbacks + end + + def setup + super + I18n.backend = Backend.new + @rule = lambda { |n| n == 1 ? :one : n == 0 || (2..10).include?(n % 100) ? :few : (11..19).include?(n % 100) ? :many : :other } + store_translations(:xx, :i18n => { :plural => { :rule => @rule } }) + @entry = { :zero => 'zero', :one => 'one', :few => 'few', :many => 'many', :other => 'other' } + end + + test "pluralization picks a pluralizer from :'i18n.pluralize'" do + assert_equal @rule, I18n.backend.send(:pluralizer, :xx) + end + + test "pluralization picks :one for 1" do + assert_equal 'one', I18n.t(:count => 1, :default => @entry, :locale => :xx) + end + + test "pluralization picks :few for 2" do + assert_equal 'few', I18n.t(:count => 2, :default => @entry, :locale => :xx) + end + + test "pluralization picks :many for 11" do + assert_equal 'many', I18n.t(:count => 11, :default => @entry, :locale => :xx) + end + + test "pluralization picks zero for 0 if the key is contained in the data" do + assert_equal 'zero', I18n.t(:count => 0, :default => @entry, :locale => :xx) + end + + test "pluralization picks few for 0 if the key is not contained in the data" do + @entry.delete(:zero) + assert_equal 'few', I18n.t(:count => 0, :default => @entry, :locale => :xx) + end + + test "Fallbacks can pick up rules from fallback locales, too" do + assert_equal @rule, I18n.backend.send(:pluralizer, :'xx-XX') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/simple_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/simple_test.rb new file mode 100644 index 0000000000..be5715f5c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/simple_test.rb @@ -0,0 +1,103 @@ +require 'test_helper' + +class I18nBackendSimpleTest < I18n::TestCase + def setup + super + I18n.backend = I18n::Backend::Simple.new + I18n.load_path = [locales_dir + '/en.yml'] + end + + # useful because this way we can use the backend with no key for interpolation/pluralization + test "simple backend translate: given nil as a key it still interpolations the default value" do + assert_equal "Hi David", I18n.t(nil, :default => "Hi %{name}", :name => "David") + end + + # loading translations + test "simple load_translations: given an unknown file type it raises I18n::UnknownFileType" do + assert_raise(I18n::UnknownFileType) { I18n.backend.load_translations("#{locales_dir}/en.xml") } + end + + test "simple load_translations: given a Ruby file name it does not raise anything" do + assert_nothing_raised { I18n.backend.load_translations("#{locales_dir}/en.rb") } + end + + test "simple load_translations: given no argument, it uses I18n.load_path" do + I18n.backend.load_translations + assert_equal({ :en => { :foo => { :bar => 'baz' } } }, I18n.backend.send(:translations)) + end + + test "simple load_rb: loads data from a Ruby file" do + data = I18n.backend.send(:load_rb, "#{locales_dir}/en.rb") + assert_equal({ :en => { :fuh => { :bah => 'bas' } } }, data) + end + + test "simple load_yml: loads data from a YAML file" do + data = I18n.backend.send(:load_yml, "#{locales_dir}/en.yml") + assert_equal({ 'en' => { 'foo' => { 'bar' => 'baz' } } }, data) + end + + test "simple load_translations: loads data from known file formats" do + I18n.backend = I18n::Backend::Simple.new + I18n.backend.load_translations("#{locales_dir}/en.rb", "#{locales_dir}/en.yml") + expected = { :en => { :fuh => { :bah => "bas" }, :foo => { :bar => "baz" } } } + assert_equal expected, translations + end + + test "simple load_translations: given file names as array it does not raise anything" do + assert_nothing_raised { I18n.backend.load_translations(["#{locales_dir}/en.rb", "#{locales_dir}/en.yml"]) } + end + + # storing translations + + test "simple store_translations: stores translations, ... no, really :-)" do + store_translations :'en', :foo => 'bar' + assert_equal Hash[:'en', {:foo => 'bar'}], translations + end + + test "simple store_translations: deep_merges with existing translations" do + store_translations :'en', :foo => {:bar => 'bar'} + store_translations :'en', :foo => {:baz => 'baz'} + assert_equal Hash[:'en', {:foo => {:bar => 'bar', :baz => 'baz'}}], translations + end + + test "simple store_translations: converts the given locale to a Symbol" do + store_translations 'en', :foo => 'bar' + assert_equal Hash[:'en', {:foo => 'bar'}], translations + end + + test "simple store_translations: converts keys to Symbols" do + store_translations 'en', 'foo' => {'bar' => 'bar', 'baz' => 'baz'} + assert_equal Hash[:'en', {:foo => {:bar => 'bar', :baz => 'baz'}}], translations + end + + test "simple store_translations: do not store translations unavailable locales if enforce_available_locales is true" do + begin + I18n.enforce_available_locales = true + I18n.available_locales = [:en, :es] + store_translations(:fr, :foo => {:bar => 'barfr', :baz => 'bazfr'}) + store_translations(:es, :foo => {:bar => 'bares', :baz => 'bazes'}) + assert_nil translations[:fr] + assert_equal Hash[:foo, {:bar => 'bares', :baz => 'bazes'}], translations[:es] + ensure + I18n.config.enforce_available_locales = false + end + end + + test "simple store_translations: store translations for unavailable locales if enforce_available_locales is false" do + I18n.available_locales = [:en, :es] + store_translations(:fr, :foo => {:bar => 'barfr', :baz => 'bazfr'}) + assert_equal Hash[:foo, {:bar => 'barfr', :baz => 'bazfr'}], translations[:fr] + end + + # reloading translations + + test "simple reload_translations: unloads translations" do + I18n.backend.reload! + assert_nil translations + end + + test "simple reload_translations: uninitializes the backend" do + I18n.backend.reload! + assert_equal false, I18n.backend.initialized? + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/transliterator_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/transliterator_test.rb new file mode 100644 index 0000000000..c40e2bbffa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/backend/transliterator_test.rb @@ -0,0 +1,84 @@ +# encoding: utf-8 +require 'test_helper' + +class I18nBackendTransliterator < I18n::TestCase + def setup + super + I18n.backend = I18n::Backend::Simple.new + @proc = lambda { |n| n.upcase } + @hash = { "ü" => "ue", "ö" => "oe", "a" => "a" } + @transliterator = I18n::Backend::Transliterator.get + end + + test "transliteration rule can be a proc" do + store_translations(:xx, :i18n => {:transliterate => {:rule => @proc}}) + assert_equal "HELLO", I18n.backend.transliterate(:xx, "hello") + end + + test "transliteration rule can be a hash" do + store_translations(:xx, :i18n => {:transliterate => {:rule => @hash}}) + assert_equal "ue", I18n.backend.transliterate(:xx, "ü") + end + + test "transliteration rule must be a proc or hash" do + store_translations(:xx, :i18n => {:transliterate => {:rule => ""}}) + assert_raise I18n::ArgumentError do + I18n.backend.transliterate(:xx, "ü") + end + end + + test "transliterator defaults to latin => ascii when no rule is given" do + assert_equal "AEroskobing", I18n.backend.transliterate(:xx, "Ærøskøbing") + end + + test "default transliterator should not modify ascii characters" do + (0..127).each do |byte| + char = [byte].pack("U") + assert_equal char, @transliterator.transliterate(char) + end + end + + test "default transliterator correctly transliterates latin characters" do + # create string with range of Unicode's western characters with + # diacritics, excluding the division and multiplication signs which for + # some reason or other are floating in the middle of all the letters. + string = (0xC0..0x17E).to_a.reject {|c| [0xD7, 0xF7].include? c}.pack("U*") + string.split(//) do |char| + assert_match %r{^[a-zA-Z']*$}, @transliterator.transliterate(string) + end + end + + test "should replace non-ASCII chars not in map with a replacement char" do + assert_equal "abc?", @transliterator.transliterate("abcſ") + end + + test "can replace non-ASCII chars not in map with a custom replacement string" do + assert_equal "abc#", @transliterator.transliterate("abcſ", "#") + end + + test "default transliterator raises errors for invalid UTF-8" do + assert_raise ArgumentError do + @transliterator.transliterate("a\x92b") + end + end + + test "I18n.transliterate should transliterate using a default transliterator" do + assert_equal "aeo", I18n.transliterate("áèö") + end + + test "I18n.transliterate should transliterate using a locale" do + store_translations(:xx, :i18n => {:transliterate => {:rule => @hash}}) + assert_equal "ue", I18n.transliterate("ü", :locale => :xx) + end + + test "default transliterator fails with custom rules with uncomposed input" do + char = [117, 776].pack("U*") # "ü" as ASCII "u" plus COMBINING DIAERESIS + transliterator = I18n::Backend::Transliterator.get(@hash) + assert_not_equal "ue", transliterator.transliterate(char) + end + + test "DEFAULT_APPROXIMATIONS is frozen to prevent concurrency issues" do + assert I18n::Backend::Transliterator::HashTransliterator::DEFAULT_APPROXIMATIONS.frozen? + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/core_ext/hash_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/core_ext/hash_test.rb new file mode 100644 index 0000000000..f7ebd6fee0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/core_ext/hash_test.rb @@ -0,0 +1,36 @@ +require 'test_helper' +require 'i18n/core_ext/hash' + +class I18nCoreExtHashInterpolationTest < I18n::TestCase + test "#deep_symbolize_keys" do + hash = { 'foo' => { 'bar' => { 'baz' => 'bar' } } } + expected = { :foo => { :bar => { :baz => 'bar' } } } + assert_equal expected, hash.deep_symbolize_keys + end + + test "#slice" do + hash = { :foo => 'bar', :baz => 'bar' } + expected = { :foo => 'bar' } + assert_equal expected, hash.slice(:foo) + end + + test "#slice non-existent key" do + hash = { :foo => 'bar', :baz => 'bar' } + expected = { :foo => 'bar' } + assert_equal expected, hash.slice(:foo, :not_here) + end + + test "#except" do + hash = { :foo => 'bar', :baz => 'bar' } + expected = { :foo => 'bar' } + assert_equal expected, hash.except(:baz) + end + + test "#deep_merge!" do + hash = { :foo => { :bar => { :baz => 'bar' } }, :baz => 'bar' } + hash.deep_merge!(:foo => { :bar => { :baz => 'foo' } }) + + expected = { :foo => { :bar => { :baz => 'foo' } }, :baz => 'bar' } + assert_equal expected, hash + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/api_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/api_test.rb new file mode 100644 index 0000000000..2cd157c0d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/api_test.rb @@ -0,0 +1,214 @@ +# encoding: utf-8 +require 'test_helper' +require 'i18n/gettext/helpers' + +include I18n::Gettext::Helpers + +class I18nGettextApiTest < I18n::TestCase + def setup + super + I18n.locale = :en + I18n.backend.store_translations :de, { + 'Hi Gettext!' => 'Hallo Gettext!', + 'Sentence 1. Sentence 2.' => 'Satz 1. Satz 2.', + "An apple" => { :one => 'Ein Apfel', :other => '%{count} Äpfel' }, + :special => { "A special apple" => { :one => 'Ein spezieller Apfel', :other => '%{count} spezielle Äpfel' } }, + :foo => { :bar => 'bar-de' }, + 'foo.bar' => 'Foo Bar' + }, :separator => '|' + end + + # N_ + def test_N_returns_original_msg + assert_equal 'foo|bar', N_('foo|bar') + I18n.locale = :de + assert_equal 'Hi Gettext!', N_('Hi Gettext!') + end + + # gettext + def test_gettext_uses_msg_as_default + assert_equal 'Hi Gettext!', _('Hi Gettext!') + end + + def test_gettext_uses_msg_as_key + I18n.locale = :de + assert_equal 'Hallo Gettext!', gettext('Hi Gettext!') + assert_equal 'Hallo Gettext!', _('Hi Gettext!') + end + + def test_gettext_uses_msg_containing_dots_as_default + assert_equal 'Sentence 1. Sentence 2.', gettext('Sentence 1. Sentence 2.') + assert_equal 'Sentence 1. Sentence 2.', _('Sentence 1. Sentence 2.') + end + + def test_gettext_uses_msg_containing_dots_as_key + I18n.locale = :de + assert_equal 'Satz 1. Satz 2.', gettext('Sentence 1. Sentence 2.') + assert_equal 'Satz 1. Satz 2.', _('Sentence 1. Sentence 2.') + end + + # sgettext + def test_sgettext_defaults_to_the_last_token_of_a_scoped_msgid + assert_equal 'bar', sgettext('foo|bar') + assert_equal 'bar', s_('foo|bar') + end + + def test_sgettext_looks_up_a_scoped_translation + I18n.locale = :de + assert_equal 'bar-de', sgettext('foo|bar') + assert_equal 'bar-de', s_('foo|bar') + end + + def test_sgettext_ignores_dots + I18n.locale = :de + assert_equal 'Foo Bar', sgettext('foo.bar') + assert_equal 'Foo Bar', s_('foo.bar') + end + + # pgettext + def test_pgettext_defaults_to_msgid + assert_equal 'bar', pgettext('foo', 'bar') + assert_equal 'bar', p_('foo', 'bar') + end + + def test_pgettext_looks_up_a_scoped_translation + I18n.locale = :de + assert_equal 'bar-de', pgettext('foo', 'bar') + assert_equal 'bar-de', p_('foo', 'bar') + end + + # ngettext + def test_ngettext_looks_up_msg_id_as_default_singular + assert_equal 'An apple', ngettext('An apple', '%{count} apples', 1) + assert_equal 'An apple', n_('An apple', '%{count} apples', 1) + end + + def test_ngettext_looks_up_msg_id_plural_as_default_plural + assert_equal '2 apples', ngettext('An apple', '%{count} apples', 2) + assert_equal '2 apples', n_('An apple', '%{count} apples', 2) + end + + def test_ngettext_looks_up_a_singular + I18n.locale = :de + assert_equal 'Ein Apfel', ngettext('An apple', '%{count} apples', 1) + assert_equal 'Ein Apfel', n_('An apple', '%{count} apples', 1) + end + + def test_ngettext_looks_up_a_plural + I18n.locale = :de + assert_equal '2 Äpfel', ngettext('An apple', '%{count} apples', 2) + assert_equal '2 Äpfel', n_('An apple', '%{count} apples', 2) + end + + def test_ngettext_looks_up_msg_id_as_default_singular_with_alternative_syntax + assert_equal 'An apple', ngettext(['An apple', '%{count} apples'], 1) + assert_equal 'An apple', n_(['An apple', '%{count} apples'], 1) + end + + def test_ngettext_looks_up_msg_id_plural_as_default_plural_with_alternative_syntax + assert_equal '2 apples', ngettext(['An apple', '%{count} apples'], 2) + assert_equal '2 apples', n_(['An apple', '%{count} apples'], 2) + end + + def test_ngettext_looks_up_a_singular_with_alternative_syntax + I18n.locale = :de + assert_equal 'Ein Apfel', ngettext(['An apple', '%{count} apples'], 1) + assert_equal 'Ein Apfel', n_(['An apple', '%{count} apples'], 1) + end + + def test_ngettext_looks_up_a_plural_with_alternative_syntax + I18n.locale = :de + assert_equal '2 Äpfel', ngettext(['An apple', '%{count} apples'], 2) + assert_equal '2 Äpfel', n_(['An apple', '%{count} apples'], 2) + end + + # nsgettext + def test_nsgettext_looks_up_msg_id_as_default_singular + assert_equal 'A special apple', nsgettext('special|A special apple', '%{count} special apples', 1) + assert_equal 'A special apple', ns_('special|A special apple', '%{count} special apples', 1) + end + + def test_nsgettext_looks_up_msg_id_plural_as_default_plural + assert_equal '2 special apples', nsgettext('special|A special apple', '%{count} special apples', 2) + assert_equal '2 special apples', ns_('special|A special apple', '%{count} special apples', 2) + end + + def test_nsgettext_looks_up_a_singular + I18n.locale = :de + assert_equal 'Ein spezieller Apfel', nsgettext('special|A special apple', '%{count} special apples', 1) + assert_equal 'Ein spezieller Apfel', ns_('special|A special apple', '%{count} special apples', 1) + end + + def test_nsgettext_looks_up_a_plural + I18n.locale = :de + assert_equal '2 spezielle Äpfel', nsgettext('special|A special apple', '%{count} special apples', 2) + assert_equal '2 spezielle Äpfel', ns_('special|A special apple', '%{count} special apples', 2) + end + + def test_nsgettext_looks_up_msg_id_as_default_singular_with_alternative_syntax + assert_equal 'A special apple', nsgettext(['special|A special apple', '%{count} special apples'], 1) + assert_equal 'A special apple', ns_(['special|A special apple', '%{count} special apples'], 1) + end + + def test_nsgettext_looks_up_msg_id_plural_as_default_plural_with_alternative_syntax + assert_equal '2 special apples', nsgettext(['special|A special apple', '%{count} special apples'], 2) + assert_equal '2 special apples', ns_(['special|A special apple', '%{count} special apples'], 2) + end + + def test_nsgettext_looks_up_a_singular_with_alternative_syntax + I18n.locale = :de + assert_equal 'Ein spezieller Apfel', nsgettext(['special|A special apple', '%{count} special apples'], 1) + assert_equal 'Ein spezieller Apfel', ns_(['special|A special apple', '%{count} special apples'], 1) + end + + def test_nsgettext_looks_up_a_plural_with_alternative_syntax + I18n.locale = :de + assert_equal '2 spezielle Äpfel', nsgettext(['special|A special apple', '%{count} special apples'], 2) + assert_equal '2 spezielle Äpfel', ns_(['special|A special apple', '%{count} special apples'], 2) + end + + # npgettext + def test_npgettext_looks_up_msg_id_as_default_singular + assert_equal 'A special apple', npgettext('special', 'A special apple', '%{count} special apples', 1) + assert_equal 'A special apple', np_('special', 'A special apple', '%{count} special apples', 1) + end + + def test_npgettext_looks_up_msg_id_plural_as_default_plural + assert_equal '2 special apples', npgettext('special', 'A special apple', '%{count} special apples', 2) + assert_equal '2 special apples', np_('special', 'A special apple', '%{count} special apples', 2) + end + + def test_npgettext_looks_up_a_singular + I18n.locale = :de + assert_equal 'Ein spezieller Apfel', npgettext('special', 'A special apple', '%{count} special apples', 1) + assert_equal 'Ein spezieller Apfel', np_('special', 'A special apple', '%{count} special apples', 1) + end + + def test_npgettext_looks_up_a_plural + I18n.locale = :de + assert_equal '2 spezielle Äpfel', npgettext('special', 'A special apple', '%{count} special apples', 2) + assert_equal '2 spezielle Äpfel', np_('special', 'A special apple', '%{count} special apples', 2) + end + + def test_npgettext_looks_up_msg_id_as_default_singular_with_alternative_syntax + assert_equal 'A special apple', npgettext('special', ['A special apple', '%{count} special apples'], 1) + assert_equal 'A special apple', np_('special', ['A special apple', '%{count} special apples'], 1) + end + + def test_npgettext_looks_up_msg_id_plural_as_default_plural_with_alternative_syntax + assert_equal '2 special apples', npgettext('special', ['A special apple', '%{count} special apples'], 2) + assert_equal '2 special apples', np_('special', ['A special apple', '%{count} special apples'], 2) + end + + def test_npgettext_looks_up_a_singular_with_alternative_syntax + I18n.locale = :de + assert_equal 'Ein spezieller Apfel', npgettext('special', ['A special apple', '%{count} special apples'], 1) + assert_equal 'Ein spezieller Apfel', np_('special', ['A special apple', '%{count} special apples'], 1) + end + + def test_npgettext_looks_up_a_plural_with_alternative_syntax + I18n.locale = :de + assert_equal '2 spezielle Äpfel', npgettext('special', ['A special apple', '%{count} special apples'], 2) + assert_equal '2 spezielle Äpfel', np_('special', ['A special apple', '%{count} special apples'], 2) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/backend_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/backend_test.rb new file mode 100644 index 0000000000..30254e6be0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/gettext/backend_test.rb @@ -0,0 +1,92 @@ +# encoding: utf-8 + +require 'test_helper' + +class I18nGettextBackendTest < I18n::TestCase + include I18n::Gettext::Helpers + + class Backend < I18n::Backend::Simple + include I18n::Backend::Gettext + end + + def setup + super + I18n.backend = Backend.new + I18n.locale = :en + I18n.load_path = ["#{locales_dir}/de.po"] + I18n.default_separator = '|' + end + + def test_backend_loads_po_file + I18n.backend.send(:init_translations) + assert I18n.backend.send(:translations)[:de][:"Axis"] + end + + def test_looks_up_a_translation + I18n.locale = :de + assert_equal 'Auto', gettext('car') + end + + def test_uses_default_translation + assert_equal 'car', gettext('car') + end + + def test_looks_up_a_namespaced_translation + I18n.locale = :de + assert_equal 'Räderzahl', sgettext('Car|Wheels count') + assert_equal 'Räderzahl', pgettext('Car', 'Wheels count') + assert_equal 'Räderzahl!', pgettext('New car', 'Wheels count') + end + + def test_uses_namespaced_default_translation + assert_equal 'Wheels count', sgettext('Car|Wheels count') + assert_equal 'Wheels count', pgettext('Car', 'Wheels count') + assert_equal 'Wheels count', pgettext('New car', 'Wheels count') + end + + def test_pluralizes_entry + I18n.locale = :de + assert_equal 'Achse', ngettext('Axis', 'Axis', 1) + assert_equal 'Achsen', ngettext('Axis', 'Axis', 2) + end + + def test_pluralizes_default_entry + assert_equal 'Axis', ngettext('Axis', 'Axis', 1) + assert_equal 'Axis', ngettext('Axis', 'Axis', 2) + end + + def test_pluralizes_namespaced_entry + I18n.locale = :de + assert_equal 'Rad', nsgettext('Car|wheel', 'wheels', 1) + assert_equal 'Räder', nsgettext('Car|wheel', 'wheels', 2) + assert_equal 'Rad', npgettext('Car', 'wheel', 'wheels', 1) + assert_equal 'Räder', npgettext('Car', 'wheel', 'wheels', 2) + assert_equal 'Rad!', npgettext('New car', 'wheel', 'wheels', 1) + assert_equal 'Räder!', npgettext('New car', 'wheel', 'wheels', 2) + end + + def test_pluralizes_namespaced_default_entry + assert_equal 'wheel', nsgettext('Car|wheel', 'wheels', 1) + assert_equal 'wheels', nsgettext('Car|wheel', 'wheels', 2) + assert_equal 'wheel', npgettext('Car', 'wheel', 'wheels', 1) + assert_equal 'wheels', npgettext('Car', 'wheel', 'wheels', 2) + assert_equal 'wheel', npgettext('New car', 'wheel', 'wheels', 1) + assert_equal 'wheels', npgettext('New car', 'wheel', 'wheels', 2) + end + + def test_pluralizes_namespaced_entry_with_alternative_syntax + I18n.locale = :de + assert_equal 'Rad', nsgettext(['Car|wheel', 'wheels'], 1) + assert_equal 'Räder', nsgettext(['Car|wheel', 'wheels'], 2) + assert_equal 'Rad', npgettext('Car', ['wheel', 'wheels'], 1) + assert_equal 'Räder', npgettext('Car', ['wheel', 'wheels'], 2) + assert_equal 'Rad!', npgettext('New car', ['wheel', 'wheels'], 1) + assert_equal 'Räder!', npgettext('New car', ['wheel', 'wheels'], 2) + end + + def test_ngettextpluralizes_entry_with_dots + I18n.locale = :de + assert_equal 'Auf 1 Achse.', n_("On %{count} wheel.", "On %{count} wheels.", 1) + assert_equal 'Auf 2 Achsen.', n_("On %{count} wheel.", "On %{count} wheels.", 2) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/exceptions_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/exceptions_test.rb new file mode 100644 index 0000000000..84e1c8fca4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/exceptions_test.rb @@ -0,0 +1,117 @@ +require 'test_helper' + +class I18nExceptionsTest < I18n::TestCase + def test_invalid_locale_stores_locale + force_invalid_locale + rescue I18n::ArgumentError => exception + assert_nil exception.locale + end + + test "passing an invalid locale raises an InvalidLocale exception" do + force_invalid_locale do |exception| + assert_equal 'nil is not a valid locale', exception.message + end + end + + test "MissingTranslation can be initialized without options" do + exception = I18n::MissingTranslation.new(:en, 'foo') + assert_equal({}, exception.options) + end + + test "MissingTranslationData exception stores locale, key and options" do + force_missing_translation_data do |exception| + assert_equal 'de', exception.locale + assert_equal :foo, exception.key + assert_equal({:scope => :bar}, exception.options) + end + end + + test "MissingTranslationData message contains the locale and scoped key" do + force_missing_translation_data do |exception| + assert_equal 'translation missing: de.bar.foo', exception.message + end + end + + test "InvalidPluralizationData stores entry, count and key" do + force_invalid_pluralization_data do |exception| + assert_equal({:other => "bar"}, exception.entry) + assert_equal 1, exception.count + assert_equal :one, exception.key + end + end + + test "InvalidPluralizationData message contains count, data and missing key" do + force_invalid_pluralization_data do |exception| + assert_match '1', exception.message + assert_match '{:other=>"bar"}', exception.message + assert_match 'one', exception.message + end + end + + test "MissingInterpolationArgument stores key and string" do + assert_raise(I18n::MissingInterpolationArgument) { force_missing_interpolation_argument } + force_missing_interpolation_argument do |exception| + assert_equal :bar, exception.key + assert_equal "%{bar}", exception.string + end + end + + test "MissingInterpolationArgument message contains the missing and given arguments" do + force_missing_interpolation_argument do |exception| + assert_equal 'missing interpolation argument :bar in "%{bar}" ({:baz=>"baz"} given)', exception.message + end + end + + test "ReservedInterpolationKey stores key and string" do + force_reserved_interpolation_key do |exception| + assert_equal :scope, exception.key + assert_equal "%{scope}", exception.string + end + end + + test "ReservedInterpolationKey message contains the reserved key" do + force_reserved_interpolation_key do |exception| + assert_equal 'reserved key :scope used in "%{scope}"', exception.message + end + end + + test "MissingTranslationData#new can be initialized with just two arguments" do + assert I18n::MissingTranslationData.new('en', 'key') + end + + private + + def force_invalid_locale + I18n.translate(:foo, :locale => nil) + rescue I18n::ArgumentError => e + block_given? ? yield(e) : raise(e) + end + + def force_missing_translation_data(options = {}) + store_translations('de', :bar => nil) + I18n.translate(:foo, options.merge(:scope => :bar, :locale => :de)) + rescue I18n::ArgumentError => e + block_given? ? yield(e) : raise(e) + end + + def force_invalid_pluralization_data + store_translations('de', :foo => { :other => 'bar' }) + I18n.translate(:foo, :count => 1, :locale => :de) + rescue I18n::ArgumentError => e + block_given? ? yield(e) : raise(e) + end + + def force_missing_interpolation_argument + store_translations('de', :foo => "%{bar}") + I18n.translate(:foo, :baz => 'baz', :locale => :de) + rescue I18n::ArgumentError => e + block_given? ? yield(e) : raise(e) + end + + def force_reserved_interpolation_key + store_translations('de', :foo => "%{scope}") + I18n.translate(:foo, :baz => 'baz', :locale => :de) + rescue I18n::ArgumentError => e + block_given? ? yield(e) : raise(e) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/gettext_plural_keys_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/gettext_plural_keys_test.rb new file mode 100644 index 0000000000..4d0c977804 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/gettext_plural_keys_test.rb @@ -0,0 +1,20 @@ +require 'test_helper' + +class I18nGettextPluralKeysTest < I18n::TestCase + def setup + super + I18n::Gettext.plural_keys[:zz] = [:value1, :value2] + end + + test "Returns the plural keys of the given locale if present" do + assert_equal I18n::Gettext.plural_keys(:zz), [:value1, :value2] + end + + test "Returns the plural keys of :en if given locale not present" do + assert_equal I18n::Gettext.plural_keys(:yy), [:one, :other] + end + + test "Returns the whole hash with no arguments" do + assert_equal I18n::Gettext.plural_keys, { :en => [:one, :other], :zz => [:value1, :value2] } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/interpolate_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/interpolate_test.rb new file mode 100644 index 0000000000..78e54d3bbb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/interpolate_test.rb @@ -0,0 +1,91 @@ +require 'test_helper' + +# thanks to Masao's String extensions, some tests taken from Masao's tests +# http://github.com/mutoh/gettext/blob/edbbe1fa8238fa12c7f26f2418403015f0270e47/test/test_string.rb + +class I18nInterpolateTest < I18n::TestCase + test "String interpolates a hash argument w/ named placeholders" do + assert_equal "Masao Mutoh", I18n.interpolate("%{first} %{last}", :first => 'Masao', :last => 'Mutoh' ) + end + + test "String interpolates a hash argument w/ named placeholders (reverse order)" do + assert_equal "Mutoh, Masao", I18n.interpolate("%{last}, %{first}", :first => 'Masao', :last => 'Mutoh' ) + end + + test "String interpolates named placeholders with sprintf syntax" do + assert_equal "10, 43.4", I18n.interpolate("%d, %.1f", :integer => 10, :float => 43.4) + end + + test "String interpolates named placeholders with sprintf syntax, does not recurse" do + assert_equal "%s", I18n.interpolate("%{msg}", :msg => '%s', :not_translated => 'should not happen' ) + end + + test "String interpolation does not replace anything when no placeholders are given" do + assert_equal "aaa", I18n.interpolate("aaa", :num => 1) + end + + test "String interpolation sprintf behaviour equals Ruby 1.9 behaviour" do + assert_equal "1", I18n.interpolate("%d", :num => 1) + assert_equal "0b1", I18n.interpolate("%#b", :num => 1) + assert_equal "foo", I18n.interpolate("%s", :msg => "foo") + assert_equal "1.000000", I18n.interpolate("%f", :num => 1.0) + assert_equal " 1", I18n.interpolate("%3.0f", :num => 1.0) + assert_equal "100.00", I18n.interpolate("%2.2f", :num => 100.0) + assert_equal "0x64", I18n.interpolate("%#x", :num => 100.0) + assert_raise(ArgumentError) { I18n.interpolate("%,d", :num => 100) } + assert_raise(ArgumentError) { I18n.interpolate("%/d", :num => 100) } + end + + test "String interpolation raises an I18n::MissingInterpolationArgument when the string has extra placeholders" do + assert_raise(I18n::MissingInterpolationArgument) do # Ruby 1.9 msg: "key not found" + I18n.interpolate("%{first} %{last}", :first => 'Masao') + end + end + + test "String interpolation does not raise when extra values were passed" do + assert_nothing_raised do + assert_equal "Masao Mutoh", I18n.interpolate("%{first} %{last}", :first => 'Masao', :last => 'Mutoh', :salutation => 'Mr.' ) + end + end + + test "% acts as escape character in String interpolation" do + assert_equal "%{first}", I18n.interpolate("%%{first}", :first => 'Masao') + assert_equal "% 1", I18n.interpolate("%% %d", :num => 1.0) + assert_equal "%{num} %d", I18n.interpolate("%%{num} %%d", :num => 1) + end + + def test_sprintf_mix_unformatted_and_formatted_named_placeholders + assert_equal "foo 1.000000", I18n.interpolate("%{name} %f", :name => "foo", :num => 1.0) + end + + class RailsSafeBuffer < String + + def gsub(*args, &block) + to_str.gsub(*args, &block) + end + + end + test "with String subclass that redefined gsub method" do + assert_equal "Hello mars world", I18n.interpolate(RailsSafeBuffer.new("Hello %{planet} world"), :planet => 'mars') + end +end + +class I18nMissingInterpolationCustomHandlerTest < I18n::TestCase + def setup + super + @old_handler = I18n.config.missing_interpolation_argument_handler + I18n.config.missing_interpolation_argument_handler = lambda do |key, values, string| + "missing key is #{key}, values are #{values.inspect}, given string is '#{string}'" + end + end + + def teardown + I18n.config.missing_interpolation_argument_handler = @old_handler + super + end + + test "String interpolation can use custom missing interpolation handler" do + assert_equal %|Masao missing key is last, values are {:first=>"Masao"}, given string is '%{first} %{last}'|, + I18n.interpolate("%{first} %{last}", :first => 'Masao') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/load_path_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/load_path_test.rb new file mode 100644 index 0000000000..804aa88f7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/load_path_test.rb @@ -0,0 +1,34 @@ +require 'test_helper' + +class I18nLoadPathTest < I18n::TestCase + def setup + super + I18n.locale = :en + I18n.backend = I18n::Backend::Simple.new + store_translations(:en, :foo => {:bar => 'bar', :baz => 'baz'}) + end + + test "nested load paths do not break locale loading" do + I18n.load_path = [[locales_dir + '/en.yml']] + assert_equal "baz", I18n.t(:'foo.bar') + end + + test "loading an empty yml file raises an InvalidLocaleData exception" do + assert_raise I18n::InvalidLocaleData do + I18n.load_path = [[locales_dir + '/invalid/empty.yml']] + I18n.t(:'foo.bar', :default => "baz") + end + end + + test "loading an invalid yml file raises an InvalidLocaleData exception" do + assert_raise I18n::InvalidLocaleData do + I18n.load_path = [[locales_dir + '/invalid/syntax.yml']] + I18n.t(:'foo.bar', :default => "baz") + end + end + + test "adding arrays of filenames to the load path does not break locale loading" do + I18n.load_path << Dir[locales_dir + '/*.{rb,yml}'] + assert_equal "baz", I18n.t(:'foo.bar') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/middleware_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/middleware_test.rb new file mode 100644 index 0000000000..2190d189f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n/middleware_test.rb @@ -0,0 +1,24 @@ +require 'test_helper' + +class I18nMiddlewareTest < I18n::TestCase + def setup + super + I18n.default_locale = :fr + @app = DummyRackApp.new + @middleware = I18n::Middleware.new(@app) + end + + test "middleware initializes new config object after request" do + old_i18n_config_object_id = Thread.current[:i18n_config].object_id + @middleware.call({}) + + updated_i18n_config_object_id = Thread.current[:i18n_config].object_id + assert_not_equal updated_i18n_config_object_id, old_i18n_config_object_id + end + + test "succesfully resets i18n locale to default locale by defining new config" do + @middleware.call({}) + + assert_equal :fr, I18n.locale + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n_test.rb new file mode 100644 index 0000000000..c7e6b437fa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/i18n_test.rb @@ -0,0 +1,462 @@ +# encoding: utf-8 +require 'test_helper' + +class I18nTest < I18n::TestCase + def setup + super + store_translations(:en, :currency => { :format => { :separator => '.', :delimiter => ',', } }) + store_translations(:nl, :currency => { :format => { :separator => ',', :delimiter => '.', } }) + store_translations(:en, "true" => "Yes", "false" => "No") + end + + test "exposes its VERSION constant" do + assert I18n::VERSION + end + + test "uses the simple backend by default" do + assert I18n.backend.is_a?(I18n::Backend::Simple) + end + + test "can set the backend" do + begin + assert_nothing_raised { I18n.backend = self } + assert_equal self, I18n.backend + ensure + I18n.backend = I18n::Backend::Simple.new + end + end + + test "uses :en as a default_locale by default" do + assert_equal :en, I18n.default_locale + end + + test "can set the default locale" do + begin + assert_nothing_raised { I18n.default_locale = 'de' } + assert_equal :de, I18n.default_locale + ensure + I18n.default_locale = :en + end + end + + test "default_locale= doesn't ignore junk" do + assert_raise(NoMethodError) { I18n.default_locale = Class } + end + + test "raises an I18n::InvalidLocale exception when setting an unavailable default locale" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.default_locale = :klingon } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "uses the default locale as a locale by default" do + assert_equal I18n.default_locale, I18n.locale + end + + test "sets the current locale to Thread.current" do + assert_nothing_raised { I18n.locale = 'de' } + assert_equal :de, I18n.locale + assert_equal :de, Thread.current[:i18n_config].locale + I18n.locale = :en + end + + test "locale= doesn't ignore junk" do + assert_raise(NoMethodError) { I18n.locale = Class } + end + + test "raises an I18n::InvalidLocale exception when setting an unavailable locale" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.locale = :klingon } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "can set the configuration object" do + begin + I18n.config = self + assert_equal self, I18n.config + assert_equal self, Thread.current[:i18n_config] + ensure + I18n.config = ::I18n::Config.new + end + end + + test "locale is not shared between configurations" do + a = I18n::Config.new + b = I18n::Config.new + a.locale = :fr + b.locale = :es + assert_equal :fr, a.locale + assert_equal :es, b.locale + assert_equal :en, I18n.locale + end + + test "other options are shared between configurations" do + begin + a = I18n::Config.new + b = I18n::Config.new + a.default_locale = :fr + b.default_locale = :es + assert_equal :es, a.default_locale + assert_equal :es, b.default_locale + assert_equal :es, I18n.default_locale + ensure + I18n.default_locale = :en + end + end + + test "uses a dot as a default_separator by default" do + assert_equal '.', I18n.default_separator + end + + test "can set the default_separator" do + begin + assert_nothing_raised { I18n.default_separator = "\001" } + ensure + I18n.default_separator = '.' + end + end + + test "normalize_keys normalizes given locale, keys and scope to an array of single-key symbols" do + assert_equal [:en, :foo, :bar], I18n.normalize_keys(:en, :bar, :foo) + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, :'baz.buz', :'foo.bar') + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, 'baz.buz', 'foo.bar') + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, %w(baz buz), %w(foo bar)) + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, [:baz, :buz], [:foo, :bar]) + end + + test "normalize_keys discards empty keys" do + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, :'baz..buz', :'foo..bar') + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, :'baz......buz', :'foo......bar') + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, ['baz', nil, '', 'buz'], ['foo', nil, '', 'bar']) + end + + test "normalize_keys uses a given separator" do + assert_equal [:en, :foo, :bar, :baz, :buz], I18n.normalize_keys(:en, :'baz|buz', :'foo|bar', '|') + end + + test "can set the exception_handler" do + begin + previous_exception_handler = I18n.exception_handler + assert_nothing_raised { I18n.exception_handler = :custom_exception_handler } + ensure + I18n.exception_handler = previous_exception_handler + end + end + + test "uses a custom exception handler set to I18n.exception_handler" do + begin + previous_exception_handler = I18n.exception_handler + I18n.exception_handler = :custom_exception_handler + I18n.expects(:custom_exception_handler) + I18n.translate :bogus + ensure + I18n.exception_handler = previous_exception_handler + end + end + + test "uses a custom exception handler passed as an option" do + I18n.expects(:custom_exception_handler) + I18n.translate(:bogus, :exception_handler => :custom_exception_handler) + end + + test "delegates translate calls to the backend" do + I18n.backend.expects(:translate).with('de', :foo, {}) + I18n.translate :foo, :locale => 'de' + end + + test "delegates localize calls to the backend" do + I18n.backend.expects(:localize).with('de', :whatever, :default, {}) + I18n.localize :whatever, :locale => 'de' + end + + test "translate given no locale uses the current locale" do + I18n.backend.expects(:translate).with(:en, :foo, {}) + I18n.translate :foo + end + + test "translate works with nested symbol keys" do + assert_equal ".", I18n.t(:'currency.format.separator') + end + + test "translate works with nested string keys" do + assert_equal ".", I18n.t('currency.format.separator') + end + + test "translate with an array as a scope works" do + assert_equal ".", I18n.t(:separator, :scope => %w(currency format)) + end + + test "translate with an array containing dot separated strings as a scope works" do + assert_equal ".", I18n.t(:separator, :scope => ['currency.format']) + end + + test "translate with an array of keys and a dot separated string as a scope works" do + assert_equal [".", ","], I18n.t(%w(separator delimiter), :scope => 'currency.format') + end + + test "translate with an array of dot separated keys and a scope works" do + assert_equal [".", ","], I18n.t(%w(format.separator format.delimiter), :scope => 'currency') + end + + # def test_translate_given_no_args_raises_missing_translation_data + # assert_equal "translation missing: en, no key", I18n.t + # end + + test "translate given a bogus key returns an error message" do + assert_equal "translation missing: en.bogus", I18n.t(:bogus) + end + + test "translate given an empty string as a key raises an I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.t("") } + end + + test "translate given an empty symbol as a key raises an I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.t(:"") } + end + + test "translate given an array with empty string as a key raises an I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.t(["", :foo]) } + end + + test "translate given an empty array as a key returns empty array" do + assert_equal [], I18n.t([]) + end + + test "translate given nil returns nil" do + assert_nil I18n.t(nil) + end + + test "translate given an unavailable locale rases an I18n::InvalidLocale" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.t(:foo, :locale => 'klingon') } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "translate given true as a key works" do + assert_equal "Yes", I18n.t(true) + end + + test "translate given false as a key works" do + assert_equal "No", I18n.t(false) + end + + test "available_locales can be replaced at runtime" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.t(:foo, :locale => 'klingon') } + old_locales, I18n.config.available_locales = I18n.config.available_locales, [:klingon] + I18n.t(:foo, :locale => 'klingon') + ensure + I18n.config.enforce_available_locales = false + I18n.config.available_locales = old_locales + end + end + + test "available_locales_set should return a set" do + assert_equal Set, I18n.config.available_locales_set.class + assert_equal I18n.config.available_locales.size * 2, I18n.config.available_locales_set.size + end + + test "exists? given an existing key will return true" do + assert_equal true, I18n.exists?(:currency) + end + + test "exists? given a non-existing key will return false" do + assert_equal false, I18n.exists?(:bogus) + end + + test "exists? given an existing dot-separated key will return true" do + assert_equal true, I18n.exists?('currency.format.delimiter') + end + + test "exists? given a non-existing dot-separated key will return false" do + assert_equal false, I18n.exists?('currency.format.bogus') + end + + test "exists? given an existing key and an existing locale will return true" do + assert_equal true, I18n.exists?(:currency, :nl) + end + + test "exists? given a non-existing key and an existing locale will return false" do + assert_equal false, I18n.exists?(:bogus, :nl) + end + + test "localize given nil raises an I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.l nil } + end + + test "localize given nil and default returns default" do + assert_nil I18n.l(nil, :default => nil) + end + + test "localize given an Object raises an I18n::ArgumentError" do + assert_raise(I18n::ArgumentError) { I18n.l Object.new } + end + + test "localize given an unavailable locale rases an I18n::InvalidLocale" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.l(Time.now, :locale => 'klingon') } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "can use a lambda as an exception handler" do + begin + previous_exception_handler = I18n.exception_handler + I18n.exception_handler = Proc.new { |exception, locale, key, options| key } + assert_equal :test_proc_handler, I18n.translate(:test_proc_handler) + ensure + I18n.exception_handler = previous_exception_handler + end + end + + test "can use an object responding to #call as an exception handler" do + begin + previous_exception_handler = I18n.exception_handler + I18n.exception_handler = Class.new do + def call(exception, locale, key, options); key; end + end.new + assert_equal :test_proc_handler, I18n.translate(:test_proc_handler) + ensure + I18n.exception_handler = previous_exception_handler + end + end + + test "I18n.with_locale temporarily sets the given locale" do + store_translations(:en, :foo => 'Foo in :en') + store_translations(:de, :foo => 'Foo in :de') + store_translations(:pl, :foo => 'Foo in :pl') + + I18n.with_locale { assert_equal [:en, 'Foo in :en'], [I18n.locale, I18n.t(:foo)] } + I18n.with_locale(:de) { assert_equal [:de, 'Foo in :de'], [I18n.locale, I18n.t(:foo)] } + I18n.with_locale(:pl) { assert_equal [:pl, 'Foo in :pl'], [I18n.locale, I18n.t(:foo)] } + I18n.with_locale(:en) { assert_equal [:en, 'Foo in :en'], [I18n.locale, I18n.t(:foo)] } + + assert_equal I18n.default_locale, I18n.locale + end + + test "I18n.with_locale resets the locale in case of errors" do + assert_raise(I18n::ArgumentError) { I18n.with_locale(:pl) { raise I18n::ArgumentError } } + assert_equal I18n.default_locale, I18n.locale + end + + test "I18n.translitarate handles I18n::ArgumentError exception" do + I18n::Backend::Transliterator.stubs(:get).raises(I18n::ArgumentError) + I18n.exception_handler.expects(:call).raises(I18n::ArgumentError) + assert_raise(I18n::ArgumentError) { + I18n.transliterate("ąćó") + } + end + + test "I18n.translitarate raises I18n::ArgumentError exception" do + I18n::Backend::Transliterator.stubs(:get).raises(I18n::ArgumentError) + I18n.exception_handler.expects(:call).never + assert_raise(I18n::ArgumentError) { + I18n.transliterate("ąćó", :raise => true) + } + end + + test "transliterate given an unavailable locale rases an I18n::InvalidLocale" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.transliterate('string', :locale => 'klingon') } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "transliterate non-ASCII chars not in map with default replacement char" do + assert_equal "???", I18n.transliterate("日本語") + end + + test "I18n.locale_available? returns true when the passed locale is available" do + I18n.available_locales = [:en, :de] + assert_equal true, I18n.locale_available?(:de) + end + + test "I18n.locale_available? returns true when the passed locale is a string and is available" do + I18n.available_locales = [:en, :de] + assert_equal true, I18n.locale_available?('de') + end + + test "I18n.locale_available? returns false when the passed locale is unavailable" do + assert_equal false, I18n.locale_available?(:klingon) + end + + test "I18n.enforce_available_locales! raises an I18n::InvalidLocale when the passed locale is unavailable" do + begin + I18n.config.enforce_available_locales = true + assert_raise(I18n::InvalidLocale) { I18n.enforce_available_locales!(:klingon) } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "I18n.enforce_available_locales! does nothing when the passed locale is available" do + I18n.available_locales = [:en, :de] + begin + I18n.config.enforce_available_locales = true + assert_nothing_raised { I18n.enforce_available_locales!(:en) } + ensure + I18n.config.enforce_available_locales = false + end + end + + test "I18n.enforce_available_locales config can be set to false" do + begin + I18n.config.enforce_available_locales = false + assert_equal false, I18n.config.enforce_available_locales + ensure + I18n.config.enforce_available_locales = false + end + end + + test 'I18n.reload! reloads the set of locales that are enforced' do + begin + # Clear the backend that affects the available locales and somehow can remain + # set from the last running test. + # For instance, it contains enough translations to cause a false positive with + # this test when ran with --seed=50992 + I18n.backend = I18n::Backend::Simple.new + + assert !I18n.available_locales.include?(:de), "Available locales should not include :de at this point" + + I18n.enforce_available_locales = true + + assert_raise(I18n::InvalidLocale) { I18n.default_locale = :de } + assert_raise(I18n::InvalidLocale) { I18n.locale = :de } + + store_translations(:de, :foo => 'Foo in :de') + + assert_raise(I18n::InvalidLocale) { I18n.default_locale = :de } + assert_raise(I18n::InvalidLocale) { I18n.locale = :de } + + I18n.reload! + + store_translations(:en, :foo => 'Foo in :en') + store_translations(:de, :foo => 'Foo in :de') + store_translations(:pl, :foo => 'Foo in :pl') + + assert I18n.available_locales.include?(:de), ":de should now be allowed" + assert I18n.available_locales.include?(:en), ":en should now be allowed" + assert I18n.available_locales.include?(:pl), ":pl should now be allowed" + + assert_nothing_raised { I18n.default_locale = I18n.locale = :en } + assert_nothing_raised { I18n.default_locale = I18n.locale = :de } + assert_nothing_raised { I18n.default_locale = I18n.locale = :pl } + ensure + I18n.enforce_available_locales = false + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/fallbacks_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/fallbacks_test.rb new file mode 100644 index 0000000000..7a438523ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/fallbacks_test.rb @@ -0,0 +1,133 @@ +require 'test_helper' + +include I18n::Locale + +class I18nFallbacksDefaultsTest < I18n::TestCase + test "defaults reflect the I18n.default_locale if no default has been set manually" do + I18n.default_locale = :'en-US' + fallbacks = Fallbacks.new + assert_equal [:'en-US', :en], fallbacks.defaults + end + + test "defaults reflect a manually passed default locale if any" do + fallbacks = Fallbacks.new(:'fi-FI') + assert_equal [:'fi-FI', :fi], fallbacks.defaults + I18n.default_locale = :'de-DE' + assert_equal [:'fi-FI', :fi], fallbacks.defaults + end + + test "defaults allows to set multiple defaults" do + fallbacks = Fallbacks.new(:'fi-FI', :'se-FI') + assert_equal [:'fi-FI', :fi, :'se-FI', :se], fallbacks.defaults + end +end + +class I18nFallbacksComputationTest < I18n::TestCase + def setup + super + @fallbacks = Fallbacks.new(:'en-US') + end + + test "with no mappings defined it returns [:es, :en-US] for :es" do + assert_equal [:es, :"en-US", :en], @fallbacks[:es] + end + + test "with no mappings defined it returns [:es-ES, :es, :en-US] for :es-ES" do + assert_equal [:"es-ES", :es, :"en-US", :en], @fallbacks[:"es-ES"] + end + + test "with no mappings defined it returns [:es-MX, :es, :en-US] for :es-MX" do + assert_equal [:"es-MX", :es, :"en-US", :en], @fallbacks[:"es-MX"] + end + + test "with no mappings defined it returns [:es-Latn-ES, :es-Latn, :es, :en-US] for :es-Latn-ES" do + assert_equal [:"es-Latn-ES", :"es-Latn", :es, :"en-US", :en], @fallbacks[:'es-Latn-ES'] + end + + test "with no mappings defined it returns [:en, :en-US] for :en" do + assert_equal [:en, :"en-US"], @fallbacks[:en] + end + + test "with no mappings defined it returns [:en-US, :en] for :en-US (special case: locale == default)" do + assert_equal [:"en-US", :en], @fallbacks[:"en-US"] + end + + # Most people who speak Catalan also live in Spain, so it is safe to assume + # that they also speak Spanish as spoken in Spain. + test "with a Catalan mapping defined it returns [:ca, :es-ES, :es, :en-US] for :ca" do + @fallbacks.map(:ca => :"es-ES") + assert_equal [:ca, :"es-ES", :es, :"en-US", :en], @fallbacks[:ca] + end + + test "with a Catalan mapping defined it returns [:ca-ES, :ca, :es-ES, :es, :en-US] for :ca-ES" do + @fallbacks.map(:ca => :"es-ES") + assert_equal [:"ca-ES", :ca, :"es-ES", :es, :"en-US", :en], @fallbacks[:"ca-ES"] + end + + # People who speak Arabic as spoken in Palestine often times also speak + # Hebrew as spoken in Israel. However it is in no way safe to assume that + # everybody who speaks Arabic also speaks Hebrew. + + test "with a Hebrew mapping defined it returns [:ar, :en-US] for :ar" do + @fallbacks.map(:"ar-PS" => :"he-IL") + assert_equal [:ar, :"en-US", :en], @fallbacks[:ar] + end + + test "with a Hebrew mapping defined it returns [:ar-EG, :ar, :en-US] for :ar-EG" do + @fallbacks.map(:"ar-PS" => :"he-IL") + assert_equal [:"ar-EG", :ar, :"en-US", :en], @fallbacks[:"ar-EG"] + end + + test "with a Hebrew mapping defined it returns [:ar-PS, :ar, :he-IL, :he, :en-US] for :ar-PS" do + @fallbacks.map(:"ar-PS" => :"he-IL") + assert_equal [:"ar-PS", :ar, :"he-IL", :he, :"en-US", :en], @fallbacks[:"ar-PS"] + end + + # Sami people live in several scandinavian countries. In Finnland many people + # know Swedish and Finnish. Thus, it can be assumed that Sami living in + # Finnland also speak Swedish and Finnish. + + test "with a Sami mapping defined it returns [:sms-FI, :sms, :se-FI, :se, :fi-FI, :fi, :en-US] for :sms-FI" do + @fallbacks.map(:sms => [:"se-FI", :"fi-FI"]) + assert_equal [:"sms-FI", :sms, :"se-FI", :se, :"fi-FI", :fi, :"en-US", :en], @fallbacks[:"sms-FI"] + end + + # Austrian people understand German as spoken in Germany + + test "with a German mapping defined it returns [:de, :en-US] for de" do + @fallbacks.map(:"de-AT" => :"de-DE") + assert_equal [:de, :"en-US", :en], @fallbacks[:"de"] + end + + test "with a German mapping defined it returns [:de-DE, :de, :en-US] for de-DE" do + @fallbacks.map(:"de-AT" => :"de-DE") + assert_equal [:"de-DE", :de, :"en-US", :en], @fallbacks[:"de-DE"] + end + + test "with a German mapping defined it returns [:de-AT, :de, :de-DE, :en-US] for de-AT" do + @fallbacks.map(:"de-AT" => :"de-DE") + assert_equal [:"de-AT", :de, :"de-DE", :"en-US", :en], @fallbacks[:"de-AT"] + end + + # Mapping :de => :en, :he => :en + + test "with a mapping :de => :en, :he => :en defined it returns [:de, :en] for :de" do + assert_equal [:de, :"en-US", :en], @fallbacks[:de] + end + + test "with a mapping :de => :en, :he => :en defined it [:he, :en] for :de" do + assert_equal [:he, :"en-US", :en], @fallbacks[:he] + end + + # Test allowing mappings that fallback to each other + + test "with :no => :nb, :nb => :no defined :no returns [:no, :nb, :en-US, :en]" do + @fallbacks.map(:no => :nb, :nb => :no) + assert_equal [:no, :nb, :"en-US", :en], @fallbacks[:no] + end + + test "with :no => :nb, :nb => :no defined :nb returns [:nb, :no, :en-US, :en]" do + @fallbacks.map(:no => :nb, :nb => :no) + assert_equal [:nb, :no, :"en-US", :en], @fallbacks[:nb] + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/rfc4646_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/rfc4646_test.rb new file mode 100644 index 0000000000..a0f4286434 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/rfc4646_test.rb @@ -0,0 +1,143 @@ +# encoding: utf-8 +require 'test_helper' + +class I18nLocaleTagRfc4646ParserTest < I18n::TestCase + include I18n::Locale + + test "Rfc4646::Parser given a valid tag 'de' returns an array of subtags" do + assert_equal ['de', nil, nil, nil, nil, nil, nil], Tag::Rfc4646::Parser.match('de') + end + + test "Rfc4646::Parser given a valid tag 'de-DE' returns an array of subtags" do + assert_equal ['de', nil, 'DE', nil, nil, nil, nil], Tag::Rfc4646::Parser.match('de-DE') + end + + test "Rfc4646::Parser given a valid lowercase tag 'de-latn-de-variant-x-phonebk' returns an array of subtags" do + assert_equal ['de', 'latn', 'de', 'variant', nil, 'x-phonebk', nil], Tag::Rfc4646::Parser.match('de-latn-de-variant-x-phonebk') + end + + test "Rfc4646::Parser given a valid uppercase tag 'DE-LATN-DE-VARIANT-X-PHONEBK' returns an array of subtags" do + assert_equal ['DE', 'LATN', 'DE', 'VARIANT', nil, 'X-PHONEBK', nil], Tag::Rfc4646::Parser.match('DE-LATN-DE-VARIANT-X-PHONEBK') + end + + test "Rfc4646::Parser given an invalid tag 'a-DE' it returns false" do + assert_equal false, Tag::Rfc4646::Parser.match('a-DE') + end + + test "Rfc4646::Parser given an invalid tag 'de-419-DE' it returns false" do + assert_equal false, Tag::Rfc4646::Parser.match('de-419-DE') + end +end + +# Tag for the locale 'de-Latn-DE-Variant-a-ext-x-phonebk-i-klingon' + +class I18nLocaleTagSubtagsTest < I18n::TestCase + include I18n::Locale + + def setup + super + subtags = %w(de Latn DE variant a-ext x-phonebk i-klingon) + @tag = Tag::Rfc4646.new(*subtags) + end + + test "returns 'de' as the language subtag in lowercase" do + assert_equal 'de', @tag.language + end + + test "returns 'Latn' as the script subtag in titlecase" do + assert_equal 'Latn', @tag.script + end + + test "returns 'DE' as the region subtag in uppercase" do + assert_equal 'DE', @tag.region + end + + test "returns 'variant' as the variant subtag in lowercase" do + assert_equal 'variant', @tag.variant + end + + test "returns 'a-ext' as the extension subtag" do + assert_equal 'a-ext', @tag.extension + end + + test "returns 'x-phonebk' as the privateuse subtag" do + assert_equal 'x-phonebk', @tag.privateuse + end + + test "returns 'i-klingon' as the grandfathered subtag" do + assert_equal 'i-klingon', @tag.grandfathered + end + + test "returns a formatted tag string from #to_s" do + assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon', @tag.to_s + end + + test "returns an array containing the formatted subtags from #to_a" do + assert_equal %w(de Latn DE variant a-ext x-phonebk i-klingon), @tag.to_a + end +end + +# Tag inheritance + +class I18nLocaleTagSubtagsTest < I18n::TestCase + test "#parent returns 'de-Latn-DE-variant-a-ext-x-phonebk' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do + tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon)) + assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk', tag.parent.to_s + end + + test "#parent returns 'de-Latn-DE-variant-a-ext' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk'" do + tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk)) + assert_equal 'de-Latn-DE-variant-a-ext', tag.parent.to_s + end + + test "#parent returns 'de-Latn-DE-variant' as the parent of 'de-Latn-DE-variant-a-ext'" do + tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext)) + assert_equal 'de-Latn-DE-variant', tag.parent.to_s + end + + test "#parent returns 'de-Latn-DE' as the parent of 'de-Latn-DE-variant'" do + tag = Tag::Rfc4646.new(*%w(de Latn DE variant)) + assert_equal 'de-Latn-DE', tag.parent.to_s + end + + test "#parent returns 'de-Latn' as the parent of 'de-Latn-DE'" do + tag = Tag::Rfc4646.new(*%w(de Latn DE)) + assert_equal 'de-Latn', tag.parent.to_s + end + + test "#parent returns 'de' as the parent of 'de-Latn'" do + tag = Tag::Rfc4646.new(*%w(de Latn)) + assert_equal 'de', tag.parent.to_s + end + + # TODO RFC4647 says: "If no language tag matches the request, the "default" value is returned." + # where should we set the default language? + # test "#parent returns '' as the parent of 'de'" do + # tag = Tag::Rfc4646.new *%w(de) + # assert_equal '', tag.parent.to_s + # end + + test "#parent returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do + parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon + de-Latn-DE-variant-a-ext-x-phonebk + de-Latn-DE-variant-a-ext + de-Latn-DE-variant + de-Latn-DE + de-Latn + de) + tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon)) + assert_equal parents, tag.self_and_parents.map(&:to_s) + end + + test "returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do + parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon + de-Latn-DE-variant-a-ext-x-phonebk + de-Latn-DE-variant-a-ext + de-Latn-DE-variant + de-Latn-DE + de-Latn + de) + tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon)) + assert_equal parents, tag.self_and_parents.map(&:to_s) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/simple_test.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/simple_test.rb new file mode 100644 index 0000000000..002c63d266 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/locale/tag/simple_test.rb @@ -0,0 +1,32 @@ +# encoding: utf-8 +require 'test_helper' + +class I18nLocaleTagSimpleTest < I18n::TestCase + include I18n::Locale + + test "returns 'de' as the language subtag in lowercase" do + assert_equal %w(de Latn DE), Tag::Simple.new('de-Latn-DE').subtags + end + + test "returns a formatted tag string from #to_s" do + assert_equal 'de-Latn-DE', Tag::Simple.new('de-Latn-DE').to_s + end + + test "returns an array containing the formatted subtags from #to_a" do + assert_equal %w(de Latn DE), Tag::Simple.new('de-Latn-DE').to_a + end + + # Tag inheritance + + test "#parent returns 'de-Latn' as the parent of 'de-Latn-DE'" do + assert_equal 'de-Latn', Tag::Simple.new('de-Latn-DE').parent.to_s + end + + test "#parent returns 'de' as the parent of 'de-Latn'" do + assert_equal 'de', Tag::Simple.new('de-Latn').parent.to_s + end + + test "#self_and_parents returns an array of 3 tags for 'de-Latn-DE'" do + assert_equal %w(de-Latn-DE de-Latn de), Tag::Simple.new('de-Latn-DE').self_and_parents.map { |tag| tag.to_s} + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/run_all.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/run_all.rb new file mode 100644 index 0000000000..64ff743db6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/run_all.rb @@ -0,0 +1,20 @@ +def bundle_check + `bundle check` == "Resolving dependencies...\nThe Gemfile's dependencies are satisfied\n" +end + +def execute(command) + puts command + system command +end + +gemfiles = %w(Gemfile) + Dir['gemfiles/Gemfile*'].reject { |f| f.end_with?('.lock') } + +results = gemfiles.map do |gemfile| + puts "\nBUNDLE_GEMFILE=#{gemfile}" + ENV['BUNDLE_GEMFILE'] = File.expand_path("../../#{gemfile}", __FILE__) + + execute 'bundle install' unless bundle_check + execute 'bundle exec rake test' +end + +exit results.all? diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/de.po b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/de.po new file mode 100644 index 0000000000..f3c9998d03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/de.po @@ -0,0 +1,82 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: version 0.0.1\n" +"POT-Creation-Date: 2009-02-26 19:50+0100\n" +"PO-Revision-Date: 2009-02-18 14:53+0100\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +# #: app/helpers/translation_helper.rb:3 +# msgid "%{relative_time} ago" +# msgstr "vor %{relative_time}" + +#: app/views/cars/show.html.erb:5 +msgid "Axis" +msgid_plural "Axis" +msgstr[0] "Achse" +msgstr[1] "Achsen" + +#: app/controllers/cars_controller.rb:47 +msgid "Car was successfully created." +msgstr "Auto wurde erfolgreich gespeichert" + +#: app/controllers/cars_controller.rb:64 +msgid "Car was successfully updated." +msgstr "Auto wurde erfolgreich aktualisiert" + +#: app/views/cars/show.html.erb:1 locale/model_attributes.rb:3 +msgid "Car|Model" +msgstr "Modell" + +#: app/views/cars/show.html.erb:3 locale/model_attributes.rb:4 +msgid "Car|Wheels count" +msgstr "Räderzahl" + +msgctxt "New car" +msgid "Wheels count" +msgstr "Räderzahl!" + +#: app/views/cars/show.html.erb:7 +msgid "Created" +msgstr "Erstellt" + +#: app/views/cars/show.html.erb:9 +msgid "Month" +msgstr "Monat" + +#: locale/model_attributes.rb:2 +msgid "car" +msgstr "Auto" + +#: locale/testlog_phrases.rb:2 +msgid "this is a dynamic translation which was found thorugh gettext_test_log!" +msgstr "" +"Dies ist eine dynamische Übersetzung, die durch gettext_test_log " +"gefunden wurde!" + +#: app/views/cars/nowhere_really +msgid "Car|wheel" +msgid_plural "Car|wheels" +msgstr[0] "Rad" +msgstr[1] "Räder" + +msgctxt "New car" +msgid "wheel" +msgid_plural "wheels" +msgstr[0] "Rad!" +msgstr[1] "Räder!" + +msgid "On %{count} wheel." +msgid_plural "On %{count} wheels." +msgstr[0] "Auf %{count} Achse." +msgstr[1] "Auf %{count} Achsen." diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.rb new file mode 100644 index 0000000000..e847d1046c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.rb @@ -0,0 +1,3 @@ +# encoding: utf-8 + +{ :en => { :fuh => { :bah => "bas" } } } \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.yml b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.yml new file mode 100644 index 0000000000..25f5bb6dde --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/en.yml @@ -0,0 +1,3 @@ +en: + foo: + bar: baz \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/empty.yml b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/empty.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/syntax.yml b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/syntax.yml new file mode 100644 index 0000000000..40b1e61402 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/invalid/syntax.yml @@ -0,0 +1,4 @@ +en: + foo: foo + bar: + baz: \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/plurals.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/plurals.rb new file mode 100644 index 0000000000..f4002851a2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_data/locales/plurals.rb @@ -0,0 +1,113 @@ +# encoding: utf-8 + +{ + :af => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :am => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :ar => { :i18n => { :plural => { :keys => [:zero, :one, :two, :few, :many, :other], :rule => lambda { |n| n == 0 ? :zero : n == 1 ? :one : n == 2 ? :two : [3, 4, 5, 6, 7, 8, 9, 10].include?(n % 100) ? :few : [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99].include?(n % 100) ? :many : :other } } } }, + :az => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :be => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :bg => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :bh => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :bn => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :bo => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :bs => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :ca => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :cs => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n) ? :few : :other } } } }, + :cy => { :i18n => { :plural => { :keys => [:one, :two, :many, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : n == 8 || n == 11 ? :many : :other } } } }, + :da => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :de => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :dz => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :el => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :en => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :eo => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :es => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :et => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :eu => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :fa => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :fi => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :fil => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :fo => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :fr => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n.between?(0, 2) && n != 2 ? :one : :other } } } }, + :fur => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :fy => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ga => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :gl => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :gu => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :guw => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :ha => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :he => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :hi => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :hr => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :hu => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :id => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :is => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :it => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :iw => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ja => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :jv => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :ka => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :km => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :kn => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :ko => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :ku => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :lb => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ln => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :lt => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n % 10 == 1 && ![11, 12, 13, 14, 15, 16, 17, 18, 19].include?(n % 100) ? :one : [2, 3, 4, 5, 6, 7, 8, 9].include?(n % 10) && ![11, 12, 13, 14, 15, 16, 17, 18, 19].include?(n % 100) ? :few : :other } } } }, + :lv => { :i18n => { :plural => { :keys => [:zero, :one, :other], :rule => lambda { |n| n == 0 ? :zero : n % 10 == 1 && n % 100 != 11 ? :one : :other } } } }, + :mg => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :mk => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n % 10 == 1 ? :one : :other } } } }, + :ml => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :mn => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :mo => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 ? :few : :other } } } }, + :mr => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ms => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :mt => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 || [2, 3, 4, 5, 6, 7, 8, 9, 10].include?(n % 100) ? :few : [11, 12, 13, 14, 15, 16, 17, 18, 19].include?(n % 100) ? :many : :other } } } }, + :my => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :nah => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :nb => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ne => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :nl => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :nn => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :no => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :nso => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :om => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :or => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :pa => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :pap => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :pl => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : (n != 1 && [0, 1].include?(n % 10)) || [5, 6, 7, 8, 9].include?(n % 10) || [12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :ps => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :pt => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :"pt-PT" => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ro => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 ? :few : :other } } } }, + :ru => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :se => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :sh => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :sk => { :i18n => { :plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n) ? :few : :other } } } }, + :sl => { :i18n => { :plural => { :keys => [:one, :two, :few, :other], :rule => lambda { |n| n % 100 == 1 ? :one : n % 100 == 2 ? :two : [3, 4].include?(n % 100) ? :few : :other } } } }, + :sma => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :smi => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :smj => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :smn => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :sms => { :i18n => { :plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } }, + :so => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :sq => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :sr => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :sv => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :sw => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :ta => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :te => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :th => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :ti => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :tk => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :tl => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :to => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :tr => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :uk => { :i18n => { :plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } }, + :ur => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, + :vi => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :wa => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, + :yo => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :zh => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :zu => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_helper.rb b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_helper.rb new file mode 100644 index 0000000000..702a1b57d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/i18n-0.9.5/test/test_helper.rb @@ -0,0 +1,61 @@ +$KCODE = 'u' if RUBY_VERSION <= '1.9' + +require 'minitest/autorun' +TEST_CASE = defined?(Minitest::Test) ? Minitest::Test : MiniTest::Unit::TestCase + +# TODO: Remove these aliases and update tests accordingly. +class TEST_CASE + alias :assert_raise :assert_raises + alias :assert_not_equal :refute_equal + + def assert_nothing_raised(*args) + yield + end +end + +require 'bundler/setup' +require 'i18n' +require 'mocha/setup' +require 'test_declarative' + +class I18n::TestCase < TEST_CASE + def self.key_value? + defined?(ActiveSupport) + end + + def setup + super + I18n.enforce_available_locales = false + end + + def teardown + I18n.locale = nil + I18n.default_locale = nil + I18n.load_path = nil + I18n.available_locales = nil + I18n.backend = nil + I18n.default_separator = nil + I18n.enforce_available_locales = true + super + end + + protected + + def translations + I18n.backend.instance_variable_get(:@translations) + end + + def store_translations(locale, data) + I18n.backend.store_translations(locale, data) + end + + def locales_dir + File.dirname(__FILE__) + '/test_data/locales' + end +end + +class DummyRackApp + def call(env) + I18n.locale = :es + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/.rubocop.yml new file mode 100644 index 0000000000..ffd8bed899 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/.rubocop.yml @@ -0,0 +1,181 @@ +--- + +require: + - ./rubocop/jekyll + +Jekyll/NoPutsAllowed: + Exclude: + - rake/*.rake + +AllCops: + TargetRubyVersion: 2.1 + Include: + - lib/**/*.rb + Exclude: + - bin/**/* + - exe/**/* + - benchmark/**/* + - script/**/* + - vendor/**/* + - tmp/**/* +Layout/AlignArray: + Enabled: false +Layout/AlignHash: + EnforcedHashRocketStyle: table +Layout/AlignParameters: + Enabled: false +Layout/EmptyLinesAroundAccessModifier: + Enabled: false +Layout/EmptyLinesAroundModuleBody: + Enabled: false +Layout/EndOfLine: + EnforcedStyle: native +Layout/ExtraSpacing: + AllowForAlignment: true +Layout/FirstParameterIndentation: + EnforcedStyle: consistent +Layout/IndentationWidth: + Severity: error +Layout/IndentArray: + EnforcedStyle: consistent +Layout/IndentHash: + EnforcedStyle: consistent +Layout/IndentHeredoc: + Enabled: false +Layout/MultilineMethodCallIndentation: + EnforcedStyle: indented +Layout/MultilineOperationIndentation: + EnforcedStyle: indented +Lint/NestedPercentLiteral: + Exclude: + - test/test_site.rb +Layout/EmptyComment: + Enabled: false +Layout/EndAlignment: + Severity: error +Lint/UnreachableCode: + Severity: error +Lint/UselessAccessModifier: + Enabled: false +Lint/Void: + Enabled: false +Metrics/AbcSize: + Max: 21 +Metrics/BlockLength: + Exclude: + - test/**/*.rb + - lib/jekyll/configuration.rb + - rake/*.rake + - jekyll.gemspec +Metrics/ClassLength: + Exclude: + - !ruby/regexp /features\/.*.rb$/ + - !ruby/regexp /test\/.*.rb$/ + Max: 300 +Metrics/CyclomaticComplexity: + Max: 9 +Metrics/LineLength: + Exclude: + - !ruby/regexp /features\/.*.rb/ + - Rakefile + - rake/*.rake + - Gemfile + - jekyll.gemspec + Max: 90 + Severity: warning +Metrics/MethodLength: + CountComments: false + Max: 20 + Severity: error +Metrics/ModuleLength: + Max: 240 +Metrics/ParameterLists: + Max: 4 +Metrics/PerceivedComplexity: + Max: 8 +Naming/FileName: + Enabled: false +Naming/HeredocDelimiterNaming: + Enabled: false +Naming/MemoizedInstanceVariableName: + Exclude: + - lib/jekyll/page_without_a_file.rb + - lib/jekyll/drops/unified_payload_drop.rb + - lib/jekyll/drops/site_drop.rb +Naming/UncommunicativeMethodParamName: + AllowedNames: + - _ +Security/MarshalLoad: + Exclude: + - !ruby/regexp /test\/.*.rb$/ + - lib/jekyll/regenerator.rb +Security/YAMLLoad: + Exclude: + - !ruby/regexp /features\/.*.rb/ + - !ruby/regexp /test\/.*.rb$/ +Style/Alias: + Enabled: false +Style/AndOr: + Severity: error +Style/BracesAroundHashParameters: + Enabled: false +Style/ClassAndModuleChildren: + Enabled: false +Style/FrozenStringLiteralComment: + EnforcedStyle: always +Style/Documentation: + Enabled: false + Exclude: + - !ruby/regexp /features\/.*.rb$/ +Style/DoubleNegation: + Enabled: false +Style/FormatStringToken: + Exclude: + - lib/jekyll/utils/ansi.rb +Style/GuardClause: + Enabled: false +Style/HashSyntax: + EnforcedStyle: hash_rockets + Severity: error +Style/IfUnlessModifier: + Enabled: false +Style/InverseMethods: + Enabled: false +Style/MixinUsage: + Exclude: + - test/helper.rb +Style/ModuleFunction: + Enabled: false +Style/MultilineTernaryOperator: + Severity: error +Style/PercentLiteralDelimiters: + PreferredDelimiters: + "%q": "{}" + "%Q": "{}" + "%r": "!!" + "%s": "()" + "%w": "()" + "%W": "()" + "%x": "()" +Style/RedundantReturn: + Enabled: false +Style/RedundantSelf: + Enabled: false +Style/RegexpLiteral: + EnforcedStyle: percent_r +Style/RescueModifier: + Enabled: false +Style/SignalException: + EnforcedStyle: only_raise +Style/SingleLineMethods: + Enabled: false +Style/StringLiterals: + EnforcedStyle: double_quotes +Style/StringLiteralsInInterpolation: + EnforcedStyle: double_quotes +Style/SymbolArray: + Enabled: false +Style/TrailingCommaInArrayLiteral: + EnforcedStyleForMultiline: consistent_comma +Style/TrailingCommaInHashLiteral: + EnforcedStyleForMultiline: consistent_comma diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/LICENSE b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/LICENSE new file mode 100644 index 0000000000..c98bc25f31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2008-2018 Tom Preston-Werner and Jekyll contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/README.markdown b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/README.markdown new file mode 100644 index 0000000000..c6864b4b3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/README.markdown @@ -0,0 +1,61 @@ +# [Jekyll](https://jekyllrb.com/) + +[![Gem Version](https://img.shields.io/gem/v/jekyll.svg)][ruby-gems] +[![Linux Build Status](https://img.shields.io/travis/jekyll/jekyll/master.svg?label=Linux%20build)][travis] +[![Windows Build status](https://img.shields.io/appveyor/ci/jekyll/jekyll/master.svg?label=Windows%20build)][appveyor] +[![Maintainability](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/maintainability)](codeclimate) +[![Test Coverage](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/test_coverage)](coverage) +[![Dependency Status](https://img.shields.io/gemnasium/jekyll/jekyll.svg)][gemnasium] +[![Security](https://hakiri.io/github/jekyll/jekyll/master.svg)][hakiri] + +[ruby-gems]: https://rubygems.org/gems/jekyll +[gemnasium]: https://gemnasium.com/jekyll/jekyll +[codeclimate]: https://codeclimate.com/github/jekyll/jekyll +[coverage]: https://codeclimate.com/github/jekyll/jekyll/coverage +[hakiri]: https://hakiri.io/github/jekyll/jekyll/master +[travis]: https://travis-ci.org/jekyll/jekyll +[appveyor]: https://ci.appveyor.com/project/jekyll/jekyll/branch/master + +Jekyll is a simple, blog-aware, static site generator perfect for personal, project, or organization sites. Think of it like a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind [GitHub Pages](https://pages.github.com), which you can use to host sites right from your GitHub repositories. + +## Philosophy + +Jekyll does what you tell it to do — no more, no less. It doesn't try to outsmart users by making bold assumptions, nor does it burden them with needless complexity and configuration. Put simply, Jekyll gets out of your way and allows you to concentrate on what truly matters: your content. + +See: https://jekyllrb.com/philosophy + +## Having trouble? + +See: https://jekyllrb.com/docs/troubleshooting/ + +## Getting Started + +* [Install](https://jekyllrb.com/docs/installation/) the gem +* Read up about its [Usage](https://jekyllrb.com/docs/usage/) and [Configuration](https://jekyllrb.com/docs/configuration/) +* Take a gander at some existing [Sites](https://wiki.github.com/jekyll/jekyll/sites) +* [Fork](https://github.com/jekyll/jekyll/fork) and [Contribute](https://jekyllrb.com/docs/contributing/) your own modifications +* Have questions? Check out our official forum community [Jekyll Talk](https://talk.jekyllrb.com/) or [`#jekyll` on irc.freenode.net](https://botbot.me/freenode/jekyll/) + +## Code of Conduct + +In order to have a more open and welcoming community, Jekyll adheres to a +[code of conduct](CODE_OF_CONDUCT.markdown) adapted from the Ruby on Rails code of +conduct. + +Please adhere to this code of conduct in any interactions you have in the +Jekyll community. It is strictly enforced on all official Jekyll +repositories, websites, and resources. If you encounter someone violating +these terms, please let one of our core team members [Olivia](mailto:olivia@jekyllrb.com?subject=Jekyll%20CoC%20Violation), [Pat](mailto:pat@jekyllrb.com?subject=Jekyll%20CoC%20Violation), [Matt](mailto:matt@jekyllrb.com?subject=Jekyll%20CoC%20Violation) or [Parker](mailto:parker@jekyllrb.com?subject=Jekyll%20CoC%20Violation) know and we will address it as soon as possible. + +## Diving In + +* [Migrate](http://import.jekyllrb.com/docs/home/) from your previous system +* Learn how the [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) works +* Put information on your site with [Variables](https://jekyllrb.com/docs/variables/) +* Customize the [Permalinks](https://jekyllrb.com/docs/permalinks/) your posts are generated with +* Use the built-in [Liquid Extensions](https://jekyllrb.com/docs/templates/) to make your life easier +* Use custom [Plugins](https://jekyllrb.com/docs/plugins/) to generate content specific to your site + +## License + +See the [LICENSE](https://github.com/jekyll/jekyll/blob/master/LICENSE) file. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/exe/jekyll b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/exe/jekyll new file mode 100755 index 0000000000..07e1371777 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/exe/jekyll @@ -0,0 +1,57 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +STDOUT.sync = true + +$LOAD_PATH.unshift File.expand_path("../lib", __dir__) + +require "jekyll" +require "mercenary" + +Jekyll::PluginManager.require_from_bundler + +Jekyll::Deprecator.process(ARGV) + +Mercenary.program(:jekyll) do |p| + p.version Jekyll::VERSION + p.description "Jekyll is a blog-aware, static site generator in Ruby" + p.syntax "jekyll [options]" + + p.option "source", "-s", "--source [DIR]", "Source directory (defaults to ./)" + p.option "destination", "-d", "--destination [DIR]", + "Destination directory (defaults to ./_site)" + p.option "safe", "--safe", "Safe mode (defaults to false)" + p.option "plugins_dir", "-p", "--plugins PLUGINS_DIR1[,PLUGINS_DIR2[,...]]", Array, + "Plugins directory (defaults to ./_plugins)" + p.option "layouts_dir", "--layouts DIR", String, + "Layouts directory (defaults to ./_layouts)" + p.option "profile", "--profile", "Generate a Liquid rendering profile" + + Jekyll::External.require_if_present(Jekyll::External.blessed_gems) do |g, ver_constraint| + cmd = g.split("-").last + p.command(cmd.to_sym) do |c| + c.syntax cmd + c.action do + Jekyll.logger.abort_with "You must install the '#{g}' gem" \ + " version #{ver_constraint} to use the 'jekyll #{cmd}' command." + end + end + end + + Jekyll::Command.subclasses.each { |c| c.init_with_program(p) } + + p.action do |args, _| + if args.empty? + Jekyll.logger.error "A subcommand is required." + puts p + abort + else + subcommand = args.first + unless p.has_command? subcommand + Jekyll.logger.abort_with "fatal: 'jekyll #{args.first}' could not" \ + " be found. You may need to install the jekyll-#{args.first} gem" \ + " or a related gem to be able to use this subcommand." + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll.rb new file mode 100644 index 0000000000..56a9b84f5b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll.rb @@ -0,0 +1,200 @@ +# frozen_string_literal: true + +$LOAD_PATH.unshift __dir__ # For use/testing when no gem is installed + +# Require all of the Ruby files in the given directory. +# +# path - The String relative path from here to the directory. +# +# Returns nothing. +def require_all(path) + glob = File.join(__dir__, path, "*.rb") + Dir[glob].sort.each do |f| + require f + end +end + +# rubygems +require "rubygems" + +# stdlib +require "forwardable" +require "fileutils" +require "time" +require "English" +require "pathname" +require "logger" +require "set" +require "csv" +require "json" + +# 3rd party +require "pathutil" +require "addressable/uri" +require "safe_yaml/load" +require "liquid" +require "kramdown" +require "colorator" +require "i18n" + +SafeYAML::OPTIONS[:suppress_warnings] = true + +module Jekyll + # internal requires + autoload :Cleaner, "jekyll/cleaner" + autoload :Collection, "jekyll/collection" + autoload :Configuration, "jekyll/configuration" + autoload :Convertible, "jekyll/convertible" + autoload :Deprecator, "jekyll/deprecator" + autoload :Document, "jekyll/document" + autoload :EntryFilter, "jekyll/entry_filter" + autoload :Errors, "jekyll/errors" + autoload :Excerpt, "jekyll/excerpt" + autoload :External, "jekyll/external" + autoload :FrontmatterDefaults, "jekyll/frontmatter_defaults" + autoload :Hooks, "jekyll/hooks" + autoload :Layout, "jekyll/layout" + autoload :CollectionReader, "jekyll/readers/collection_reader" + autoload :DataReader, "jekyll/readers/data_reader" + autoload :LayoutReader, "jekyll/readers/layout_reader" + autoload :PostReader, "jekyll/readers/post_reader" + autoload :PageReader, "jekyll/readers/page_reader" + autoload :StaticFileReader, "jekyll/readers/static_file_reader" + autoload :ThemeAssetsReader, "jekyll/readers/theme_assets_reader" + autoload :LogAdapter, "jekyll/log_adapter" + autoload :Page, "jekyll/page" + autoload :PageWithoutAFile, "jekyll/page_without_a_file" + autoload :PluginManager, "jekyll/plugin_manager" + autoload :Publisher, "jekyll/publisher" + autoload :Reader, "jekyll/reader" + autoload :Regenerator, "jekyll/regenerator" + autoload :RelatedPosts, "jekyll/related_posts" + autoload :Renderer, "jekyll/renderer" + autoload :LiquidRenderer, "jekyll/liquid_renderer" + autoload :Site, "jekyll/site" + autoload :StaticFile, "jekyll/static_file" + autoload :Stevenson, "jekyll/stevenson" + autoload :Theme, "jekyll/theme" + autoload :ThemeBuilder, "jekyll/theme_builder" + autoload :URL, "jekyll/url" + autoload :Utils, "jekyll/utils" + autoload :VERSION, "jekyll/version" + + # extensions + require "jekyll/plugin" + require "jekyll/converter" + require "jekyll/generator" + require "jekyll/command" + require "jekyll/liquid_extensions" + require "jekyll/filters" + + class << self + # Public: Tells you which Jekyll environment you are building in so you can skip tasks + # if you need to. This is useful when doing expensive compression tasks on css and + # images and allows you to skip that when working in development. + + def env + ENV["JEKYLL_ENV"] || "development" + end + + # Public: Generate a Jekyll configuration Hash by merging the default + # options with anything in _config.yml, and adding the given options on top. + # + # override - A Hash of config directives that override any options in both + # the defaults and the config file. + # See Jekyll::Configuration::DEFAULTS for a + # list of option names and their defaults. + # + # Returns the final configuration Hash. + def configuration(override = {}) + config = Configuration.new + override = Configuration[override].stringify_keys + unless override.delete("skip_config_files") + config = config.read_config_files(config.config_files(override)) + end + + # Merge DEFAULTS < _config.yml < override + Configuration.from(Utils.deep_merge_hashes(config, override)).tap do |obj| + set_timezone(obj["timezone"]) if obj["timezone"] + end + end + + # Public: Set the TZ environment variable to use the timezone specified + # + # timezone - the IANA Time Zone + # + # Returns nothing + # rubocop:disable Naming/AccessorMethodName + def set_timezone(timezone) + ENV["TZ"] = if Utils::Platforms.really_windows? + Utils::WinTZ.calculate(timezone) + else + timezone + end + end + # rubocop:enable Naming/AccessorMethodName + + # Public: Fetch the logger instance for this Jekyll process. + # + # Returns the LogAdapter instance. + def logger + @logger ||= LogAdapter.new(Stevenson.new, (ENV["JEKYLL_LOG_LEVEL"] || :info).to_sym) + end + + # Public: Set the log writer. + # New log writer must respond to the same methods + # as Ruby's interal Logger. + # + # writer - the new Logger-compatible log transport + # + # Returns the new logger. + def logger=(writer) + @logger = LogAdapter.new(writer, (ENV["JEKYLL_LOG_LEVEL"] || :info).to_sym) + end + + # Public: An array of sites + # + # Returns the Jekyll sites created. + def sites + @sites ||= [] + end + + # Public: Ensures the questionable path is prefixed with the base directory + # and prepends the questionable path with the base directory if false. + # + # base_directory - the directory with which to prefix the questionable path + # questionable_path - the path we're unsure about, and want prefixed + # + # Returns the sanitized path. + def sanitized_path(base_directory, questionable_path) + return base_directory if base_directory.eql?(questionable_path) + + clean_path = questionable_path.dup + clean_path.insert(0, "/") if clean_path.start_with?("~") + clean_path = File.expand_path(clean_path, "/") + + return clean_path if clean_path.eql?(base_directory) + + if clean_path.start_with?(base_directory.sub(%r!\z!, "/")) + clean_path + else + clean_path.sub!(%r!\A\w:/!, "/") + File.join(base_directory, clean_path) + end + end + + # Conditional optimizations + Jekyll::External.require_if_present("liquid-c") + end +end + +require "jekyll/drops/drop" +require "jekyll/drops/document_drop" +require_all "jekyll/commands" +require_all "jekyll/converters" +require_all "jekyll/converters/markdown" +require_all "jekyll/drops" +require_all "jekyll/generators" +require_all "jekyll/tags" + +require "jekyll-sass-converter" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/cleaner.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/cleaner.rb new file mode 100644 index 0000000000..36d28a9b6d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/cleaner.rb @@ -0,0 +1,110 @@ +# frozen_string_literal: true + +module Jekyll + # Handles the cleanup of a site's destination before it is built. + class Cleaner + HIDDEN_FILE_REGEX = %r!\/\.{1,2}$! + attr_reader :site + + def initialize(site) + @site = site + end + + # Cleans up the site's destination directory + def cleanup! + FileUtils.rm_rf(obsolete_files) + FileUtils.rm_rf(metadata_file) unless @site.incremental? + end + + private + + # Private: The list of files and directories to be deleted during cleanup process + # + # Returns an Array of the file and directory paths + def obsolete_files + out = (existing_files - new_files - new_dirs + replaced_files).to_a + Jekyll::Hooks.trigger :clean, :on_obsolete, out + out + end + + # Private: The metadata file storing dependency tree and build history + # + # Returns an Array with the metdata file as the only item + def metadata_file + [site.regenerator.metadata_file] + end + + # Private: The list of existing files, apart from those included in + # keep_files and hidden files. + # + # Returns a Set with the file paths + def existing_files + files = Set.new + regex = keep_file_regex + dirs = keep_dirs + + Utils.safe_glob(site.in_dest_dir, ["**", "*"], File::FNM_DOTMATCH).each do |file| + next if file =~ HIDDEN_FILE_REGEX || file =~ regex || dirs.include?(file) + files << file + end + + files + end + + # Private: The list of files to be created when site is built. + # + # Returns a Set with the file paths + def new_files + @new_files ||= Set.new.tap do |files| + site.each_site_file { |item| files << item.destination(site.dest) } + end + end + + # Private: The list of directories to be created when site is built. + # These are the parent directories of the files in #new_files. + # + # Returns a Set with the directory paths + def new_dirs + @new_dirs ||= new_files.map { |file| parent_dirs(file) }.flatten.to_set + end + + # Private: The list of parent directories of a given file + # + # Returns an Array with the directory paths + def parent_dirs(file) + parent_dir = File.dirname(file) + if parent_dir == site.dest + [] + else + [parent_dir] + parent_dirs(parent_dir) + end + end + + # Private: The list of existing files that will be replaced by a directory + # during build + # + # Returns a Set with the file paths + def replaced_files + new_dirs.select { |dir| File.file?(dir) }.to_set + end + + # Private: The list of directories that need to be kept because they are + # parent directories of files specified in keep_files + # + # Returns a Set with the directory paths + def keep_dirs + site.keep_files.map { |file| parent_dirs(site.in_dest_dir(file)) }.flatten.to_set + end + + # Private: Creates a regular expression from the config's keep_files array + # + # Examples + # ['.git','.svn'] with site.dest "/myblog/_site" creates + # the following regex: /\A\/myblog\/_site\/(\.git|\/.svn)/ + # + # Returns the regular expression + def keep_file_regex + %r!\A#{Regexp.quote(site.dest)}\/(#{Regexp.union(site.keep_files).source})! + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/collection.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/collection.rb new file mode 100644 index 0000000000..4a8b6f5320 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/collection.rb @@ -0,0 +1,237 @@ +# frozen_string_literal: true + +module Jekyll + class Collection + attr_reader :site, :label, :metadata + attr_writer :docs + + # Create a new Collection. + # + # site - the site to which this collection belongs. + # label - the name of the collection + # + # Returns nothing. + def initialize(site, label) + @site = site + @label = sanitize_label(label) + @metadata = extract_metadata + end + + # Fetch the Documents in this collection. + # Defaults to an empty array if no documents have been read in. + # + # Returns an array of Jekyll::Document objects. + def docs + @docs ||= [] + end + + # Override of normal respond_to? to match method_missing's logic for + # looking in @data. + def respond_to_missing?(method, include_private = false) + docs.respond_to?(method.to_sym, include_private) || super + end + + # Override of method_missing to check in @data for the key. + def method_missing(method, *args, &blck) + if docs.respond_to?(method.to_sym) + Jekyll.logger.warn "Deprecation:", + "#{label}.#{method} should be changed to #{label}.docs.#{method}." + Jekyll.logger.warn "", "Called by #{caller(0..0)}." + docs.public_send(method.to_sym, *args, &blck) + else + super + end + end + + # Fetch the static files in this collection. + # Defaults to an empty array if no static files have been read in. + # + # Returns an array of Jekyll::StaticFile objects. + def files + @files ||= [] + end + + # Read the allowed documents into the collection's array of docs. + # + # Returns the sorted array of docs. + def read + filtered_entries.each do |file_path| + full_path = collection_dir(file_path) + next if File.directory?(full_path) + if Utils.has_yaml_header? full_path + read_document(full_path) + else + read_static_file(file_path, full_path) + end + end + docs.sort! + end + + # All the entries in this collection. + # + # Returns an Array of file paths to the documents in this collection + # relative to the collection's directory + def entries + return [] unless exists? + @entries ||= + Utils.safe_glob(collection_dir, ["**", "*"], File::FNM_DOTMATCH).map do |entry| + entry["#{collection_dir}/"] = "" + entry + end + end + + # Filtered version of the entries in this collection. + # See `Jekyll::EntryFilter#filter` for more information. + # + # Returns a list of filtered entry paths. + def filtered_entries + return [] unless exists? + @filtered_entries ||= + Dir.chdir(directory) do + entry_filter.filter(entries).reject do |f| + path = collection_dir(f) + File.directory?(path) || entry_filter.symlink?(f) + end + end + end + + # The directory for this Collection, relative to the site source or the directory + # containing the collection. + # + # Returns a String containing the directory name where the collection + # is stored on the filesystem. + def relative_directory + @relative_directory ||= "_#{label}" + end + + # The full path to the directory containing the collection. + # + # Returns a String containing th directory name where the collection + # is stored on the filesystem. + def directory + @directory ||= site.in_source_dir( + File.join(container, relative_directory) + ) + end + + # The full path to the directory containing the collection, with + # optional subpaths. + # + # *files - (optional) any other path pieces relative to the + # directory to append to the path + # + # Returns a String containing th directory name where the collection + # is stored on the filesystem. + def collection_dir(*files) + return directory if files.empty? + site.in_source_dir(container, relative_directory, *files) + end + + # Checks whether the directory "exists" for this collection. + # The directory must exist on the filesystem and must not be a symlink + # if in safe mode. + # + # Returns false if the directory doesn't exist or if it's a symlink + # and we're in safe mode. + def exists? + File.directory?(directory) && !entry_filter.symlink?(directory) + end + + # The entry filter for this collection. + # Creates an instance of Jekyll::EntryFilter. + # + # Returns the instance of Jekyll::EntryFilter for this collection. + def entry_filter + @entry_filter ||= Jekyll::EntryFilter.new(site, relative_directory) + end + + # An inspect string. + # + # Returns the inspect string + def inspect + "#" + end + + # Produce a sanitized label name + # Label names may not contain anything but alphanumeric characters, + # underscores, and hyphens. + # + # label - the possibly-unsafe label + # + # Returns a sanitized version of the label. + def sanitize_label(label) + label.gsub(%r![^a-z0-9_\-\.]!i, "") + end + + # Produce a representation of this Collection for use in Liquid. + # Exposes two attributes: + # - label + # - docs + # + # Returns a representation of this collection for use in Liquid. + def to_liquid + Drops::CollectionDrop.new self + end + + # Whether the collection's documents ought to be written as individual + # files in the output. + # + # Returns true if the 'write' metadata is true, false otherwise. + def write? + !!metadata.fetch("output", false) + end + + # The URL template to render collection's documents at. + # + # Returns the URL template to render collection's documents at. + def url_template + @url_template ||= metadata.fetch("permalink") do + Utils.add_permalink_suffix("/:collection/:path", site.permalink_style) + end + end + + # Extract options for this collection from the site configuration. + # + # Returns the metadata for this collection + def extract_metadata + if site.config["collections"].is_a?(Hash) + site.config["collections"][label] || {} + else + {} + end + end + + private + + def container + @container ||= site.config["collections_dir"] + end + + private + + def read_document(full_path) + doc = Document.new(full_path, :site => site, :collection => self) + doc.read + if site.unpublished || doc.published? + docs << doc + end + end + + private + + def read_static_file(file_path, full_path) + relative_dir = Jekyll.sanitized_path( + relative_directory, + File.dirname(file_path) + ).chomp("/.") + + files << StaticFile.new( + site, + site.source, + relative_dir, + File.basename(full_path), + self + ) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/command.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/command.rb new file mode 100644 index 0000000000..2df86ed336 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/command.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +module Jekyll + class Command + class << self + # A list of subclasses of Jekyll::Command + def subclasses + @subclasses ||= [] + end + + # Keep a list of subclasses of Jekyll::Command every time it's inherited + # Called automatically. + # + # base - the subclass + # + # Returns nothing + def inherited(base) + subclasses << base + super(base) + end + + # Run Site#process and catch errors + # + # site - the Jekyll::Site object + # + # Returns nothing + def process_site(site) + site.process + rescue Jekyll::Errors::FatalException => e + Jekyll.logger.error "ERROR:", "YOUR SITE COULD NOT BE BUILT:" + Jekyll.logger.error "", "------------------------------------" + Jekyll.logger.error "", e.message + exit(1) + end + + # Create a full Jekyll configuration with the options passed in as overrides + # + # options - the configuration overrides + # + # Returns a full Jekyll configuration + def configuration_from_options(options) + return options if options.is_a?(Jekyll::Configuration) + Jekyll.configuration(options) + end + + # Add common options to a command for building configuration + # + # cmd - the Jekyll::Command to add these options to + # + # Returns nothing + # rubocop:disable Metrics/MethodLength + def add_build_options(cmd) + cmd.option "config", "--config CONFIG_FILE[,CONFIG_FILE2,...]", + Array, "Custom configuration file" + cmd.option "destination", "-d", "--destination DESTINATION", + "The current folder will be generated into DESTINATION" + cmd.option "source", "-s", "--source SOURCE", "Custom source directory" + cmd.option "future", "--future", "Publishes posts with a future date" + cmd.option "limit_posts", "--limit_posts MAX_POSTS", Integer, + "Limits the number of posts to parse and publish" + cmd.option "watch", "-w", "--[no-]watch", "Watch for changes and rebuild" + cmd.option "baseurl", "-b", "--baseurl URL", + "Serve the website from the given base URL" + cmd.option "force_polling", "--force_polling", "Force watch to use polling" + cmd.option "lsi", "--lsi", "Use LSI for improved related posts" + cmd.option "show_drafts", "-D", "--drafts", "Render posts in the _drafts folder" + cmd.option "unpublished", "--unpublished", + "Render posts that were marked as unpublished" + cmd.option "quiet", "-q", "--quiet", "Silence output." + cmd.option "verbose", "-V", "--verbose", "Print verbose output." + cmd.option "incremental", "-I", "--incremental", "Enable incremental rebuild." + cmd.option "strict_front_matter", "--strict_front_matter", + "Fail if errors are present in front matter" + end + # rubocop:enable Metrics/MethodLength + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb new file mode 100644 index 0000000000..96a48cdfd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/build.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +module Jekyll + module Commands + class Build < Command + class << self + # Create the Mercenary command for the Jekyll CLI for this Command + def init_with_program(prog) + prog.command(:build) do |c| + c.syntax "build [options]" + c.description "Build your site" + c.alias :b + + add_build_options(c) + + c.action do |_, options| + options["serving"] = false + Jekyll::Commands::Build.process(options) + end + end + end + + # Build your jekyll site + # Continuously watch if `watch` is set to true in the config. + def process(options) + # Adjust verbosity quickly + Jekyll.logger.adjust_verbosity(options) + + options = configuration_from_options(options) + site = Jekyll::Site.new(options) + + if options.fetch("skip_initial_build", false) + Jekyll.logger.warn "Build Warning:", "Skipping the initial build." \ + " This may result in an out-of-date site." + else + build(site, options) + end + + if options.fetch("detach", false) + Jekyll.logger.info "Auto-regeneration:", + "disabled when running server detached." + elsif options.fetch("watch", false) + watch(site, options) + else + Jekyll.logger.info "Auto-regeneration:", "disabled. Use --watch to enable." + end + end + + # Build your Jekyll site. + # + # site - the Jekyll::Site instance to build + # options - A Hash of options passed to the command + # + # Returns nothing. + def build(site, options) + t = Time.now + source = options["source"] + destination = options["destination"] + incremental = options["incremental"] + Jekyll.logger.info "Source:", source + Jekyll.logger.info "Destination:", destination + Jekyll.logger.info "Incremental build:", + (incremental ? "enabled" : "disabled. Enable with --incremental") + Jekyll.logger.info "Generating..." + process_site(site) + Jekyll.logger.info "", "done in #{(Time.now - t).round(3)} seconds." + end + + # Private: Watch for file changes and rebuild the site. + # + # site - A Jekyll::Site instance + # options - A Hash of options passed to the command + # + # Returns nothing. + def watch(site, options) + # Warn Windows users that they might need to upgrade. + if Utils::Platforms.bash_on_windows? + Jekyll.logger.warn "", + "Auto-regeneration may not work on some Windows versions." + Jekyll.logger.warn "", + "Please see: https://github.com/Microsoft/BashOnWindows/issues/216" + Jekyll.logger.warn "", + "If it does not work, please upgrade Bash on Windows or "\ + "run Jekyll with --no-watch." + end + + External.require_with_graceful_fail "jekyll-watch" + watch_method = Jekyll::Watcher.method(:watch) + if watch_method.parameters.size == 1 + watch_method.call( + options + ) + else + watch_method.call( + options, site + ) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/clean.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/clean.rb new file mode 100644 index 0000000000..1ef65db22d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/clean.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module Jekyll + module Commands + class Clean < Command + class << self + def init_with_program(prog) + prog.command(:clean) do |c| + c.syntax "clean [subcommand]" + c.description "Clean the site " \ + "(removes site output and metadata file) without building." + + add_build_options(c) + + c.action do |_, options| + Jekyll::Commands::Clean.process(options) + end + end + end + + def process(options) + options = configuration_from_options(options) + destination = options["destination"] + metadata_file = File.join(options["source"], ".jekyll-metadata") + sass_cache = ".sass-cache" + + remove(destination, :checker_func => :directory?) + remove(metadata_file, :checker_func => :file?) + remove(sass_cache, :checker_func => :directory?) + end + + def remove(filename, checker_func: :file?) + if File.public_send(checker_func, filename) + Jekyll.logger.info "Cleaner:", "Removing #{filename}..." + FileUtils.rm_rf(filename) + else + Jekyll.logger.info "Cleaner:", "Nothing to do for #{filename}." + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb new file mode 100644 index 0000000000..bb313152c3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/doctor.rb @@ -0,0 +1,166 @@ +# frozen_string_literal: true + +module Jekyll + module Commands + class Doctor < Command + class << self + def init_with_program(prog) + prog.command(:doctor) do |c| + c.syntax "doctor" + c.description "Search site and print specific deprecation warnings" + c.alias(:hyde) + + c.option "config", "--config CONFIG_FILE[,CONFIG_FILE2,...]", Array, + "Custom configuration file" + + c.action do |_, options| + Jekyll::Commands::Doctor.process(options) + end + end + end + + def process(options) + site = Jekyll::Site.new(configuration_from_options(options)) + site.reset + site.read + site.generate + + if healthy?(site) + Jekyll.logger.info "Your test results", "are in. Everything looks fine." + else + abort + end + end + + def healthy?(site) + [ + fsnotify_buggy?(site), + !deprecated_relative_permalinks(site), + !conflicting_urls(site), + !urls_only_differ_by_case(site), + proper_site_url?(site), + properly_gathered_posts?(site), + ].all? + end + + def properly_gathered_posts?(site) + return true if site.config["collections_dir"].empty? + posts_at_root = site.in_source_dir("_posts") + return true unless File.directory?(posts_at_root) + Jekyll.logger.warn "Warning:", + "Detected '_posts' directory outside custom `collections_dir`!" + Jekyll.logger.warn "", + "Please move '#{posts_at_root}' into the custom directory at " \ + "'#{site.in_source_dir(site.config["collections_dir"])}'" + false + end + + def deprecated_relative_permalinks(site) + if site.config["relative_permalinks"] + Jekyll::Deprecator.deprecation_message "Your site still uses relative" \ + " permalinks, which was removed in" \ + " Jekyll v3.0.0." + return true + end + end + + def conflicting_urls(site) + conflicting_urls = false + urls = {} + urls = collect_urls(urls, site.pages, site.dest) + urls = collect_urls(urls, site.posts.docs, site.dest) + urls.each do |url, paths| + next unless paths.size > 1 + conflicting_urls = true + Jekyll.logger.warn "Conflict:", "The URL '#{url}' is the destination" \ + " for the following pages: #{paths.join(", ")}" + end + conflicting_urls + end + + def fsnotify_buggy?(_site) + return true unless Utils::Platforms.osx? + if Dir.pwd != `pwd`.strip + Jekyll.logger.error " " + <<-STR.strip.gsub(%r!\n\s+!, "\n ") + We have detected that there might be trouble using fsevent on your + operating system, you can read https://github.com/thibaudgg/rb-fsevent/wiki/no-fsevents-fired-(OSX-bug) + for possible work arounds or you can work around it immediately + with `--force-polling`. + STR + + false + end + + true + end + + def urls_only_differ_by_case(site) + urls_only_differ_by_case = false + urls = case_insensitive_urls(site.pages + site.docs_to_write, site.dest) + urls.each_value do |real_urls| + next unless real_urls.uniq.size > 1 + urls_only_differ_by_case = true + Jekyll.logger.warn "Warning:", "The following URLs only differ" \ + " by case. On a case-insensitive file system one of the URLs" \ + " will be overwritten by the other: #{real_urls.join(", ")}" + end + urls_only_differ_by_case + end + + def proper_site_url?(site) + url = site.config["url"] + [ + url_exists?(url), + url_valid?(url), + url_absolute(url), + ].all? + end + + private + def collect_urls(urls, things, destination) + things.each do |thing| + dest = thing.destination(destination) + if urls[dest] + urls[dest] << thing.path + else + urls[dest] = [thing.path] + end + end + urls + end + + def case_insensitive_urls(things, destination) + things.each_with_object({}) do |thing, memo| + dest = thing.destination(destination) + (memo[dest.downcase] ||= []) << dest + end + end + + def url_exists?(url) + return true unless url.nil? || url.empty? + Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, "\ + "you may encounter problems with some plugins." + false + end + + def url_valid?(url) + Addressable::URI.parse(url) + true + # Addressable::URI#parse only raises a TypeError + # https://git.io/vFfbx + rescue TypeError + Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, "\ + "check the value of `url` in your config file." + false + end + + def url_absolute(url) + return true if Addressable::URI.parse(url).absolute? + Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, "\ + "check the value of `url` in your config file." + false + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/help.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/help.rb new file mode 100644 index 0000000000..80c80e9aea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/help.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Jekyll + module Commands + class Help < Command + class << self + def init_with_program(prog) + prog.command(:help) do |c| + c.syntax "help [subcommand]" + c.description "Show the help message, optionally for a given subcommand." + + c.action do |args, _| + cmd = (args.first || "").to_sym + if args.empty? + Jekyll.logger.info prog.to_s + elsif prog.has_command? cmd + Jekyll.logger.info prog.commands[cmd].to_s + else + invalid_command(prog, cmd) + abort + end + end + end + end + + def invalid_command(prog, cmd) + Jekyll.logger.error "Error:", + "Hmm... we don't know what the '#{cmd}' command is." + Jekyll.logger.info "Valid commands:", prog.commands.keys.join(", ") + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new.rb new file mode 100644 index 0000000000..b123015641 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new.rb @@ -0,0 +1,163 @@ +# frozen_string_literal: true + +require "erb" + +module Jekyll + module Commands + class New < Command + class << self + def init_with_program(prog) + prog.command(:new) do |c| + c.syntax "new PATH" + c.description "Creates a new Jekyll site scaffold in PATH" + + c.option "force", "--force", "Force creation even if PATH already exists" + c.option "blank", "--blank", "Creates scaffolding but with empty files" + c.option "skip-bundle", "--skip-bundle", "Skip 'bundle install'" + + c.action do |args, options| + Jekyll::Commands::New.process(args, options) + end + end + end + + def process(args, options = {}) + raise ArgumentError, "You must specify a path." if args.empty? + + new_blog_path = File.expand_path(args.join(" "), Dir.pwd) + FileUtils.mkdir_p new_blog_path + if preserve_source_location?(new_blog_path, options) + Jekyll.logger.error "Conflict:", "#{new_blog_path} exists and is not empty." + Jekyll.logger.abort_with "", "Ensure #{new_blog_path} is empty or else " \ + "try again with `--force` to proceed and overwrite any files." + end + + if options["blank"] + create_blank_site new_blog_path + else + create_site new_blog_path + end + + after_install(new_blog_path, options) + end + + def create_blank_site(path) + Dir.chdir(path) do + FileUtils.mkdir(%w(_layouts _posts _drafts)) + FileUtils.touch("index.html") + end + end + + def scaffold_post_content + ERB.new(File.read(File.expand_path(scaffold_path, site_template))).result + end + + # Internal: Gets the filename of the sample post to be created + # + # Returns the filename of the sample post, as a String + def initialized_post_name + "_posts/#{Time.now.strftime("%Y-%m-%d")}-welcome-to-jekyll.markdown" + end + + private + + def gemfile_contents + <<-RUBY +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "~> #{Jekyll::VERSION}" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0" if Gem.win_platform? + +RUBY + end + + def create_site(new_blog_path) + create_sample_files new_blog_path + + File.open(File.expand_path(initialized_post_name, new_blog_path), "w") do |f| + f.write(scaffold_post_content) + end + + File.open(File.expand_path("Gemfile", new_blog_path), "w") do |f| + f.write(gemfile_contents) + end + end + + def preserve_source_location?(path, options) + !options["force"] && !Dir["#{path}/**/*"].empty? + end + + def create_sample_files(path) + FileUtils.cp_r site_template + "/.", path + FileUtils.chmod_R "u+w", path + FileUtils.rm File.expand_path(scaffold_path, path) + end + + def site_template + File.expand_path("../../site_template", __dir__) + end + + def scaffold_path + "_posts/0000-00-00-welcome-to-jekyll.markdown.erb" + end + + # After a new blog has been created, print a success notification and + # then automatically execute bundle install from within the new blog dir + # unless the user opts to generate a blank blog or skip 'bundle install'. + + def after_install(path, options = {}) + unless options["blank"] || options["skip-bundle"] + begin + require "bundler" + bundle_install path + rescue LoadError + Jekyll.logger.info "Could not load Bundler. Bundle install skipped." + end + end + + Jekyll.logger.info "New jekyll site installed in #{path.cyan}." + Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"] + end + + def bundle_install(path) + Jekyll.logger.info "Running bundle install in #{path.cyan}..." + Dir.chdir(path) do + exe = Gem.bin_path("bundler", "bundle") + process, output = Jekyll::Utils::Exec.run("ruby", exe, "install") + + output.to_s.each_line do |line| + Jekyll.logger.info("Bundler:".green, line.strip) unless line.to_s.empty? + end + + raise SystemExit unless process.success? + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new_theme.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new_theme.rb new file mode 100644 index 0000000000..c55e68127d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/new_theme.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require "erb" + +class Jekyll::Commands::NewTheme < Jekyll::Command + class << self + def init_with_program(prog) + prog.command(:"new-theme") do |c| + c.syntax "new-theme NAME" + c.description "Creates a new Jekyll theme scaffold" + c.option "code_of_conduct", \ + "-c", "--code-of-conduct", \ + "Include a Code of Conduct. (defaults to false)" + + c.action do |args, opts| + Jekyll::Commands::NewTheme.process(args, opts) + end + end + end + + # rubocop:disable Metrics/AbcSize + def process(args, opts) + if !args || args.empty? + raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name." + end + + new_theme_name = args.join("_") + theme = Jekyll::ThemeBuilder.new(new_theme_name, opts) + if theme.path.exist? + Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists." + end + + theme.create! + Jekyll.logger.info "Your new Jekyll theme, #{theme.name.cyan}," \ + " is ready for you in #{theme.path.to_s.cyan}!" + Jekyll.logger.info "For help getting started, read #{theme.path}/README.md." + end + # rubocop:enable Metrics/AbcSize + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve.rb new file mode 100644 index 0000000000..7efeb72d49 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve.rb @@ -0,0 +1,388 @@ +# frozen_string_literal: true + +require "thread" + +module Jekyll + module Commands + class Serve < Command + # Similar to the pattern in Utils::ThreadEvent except we are maintaining the + # state of @running instead of just signaling an event. We have to maintain this + # state since Serve is just called via class methods instead of an instance + # being created each time. + @mutex = Mutex.new + @run_cond = ConditionVariable.new + @running = false + + class << self + COMMAND_OPTIONS = { + "ssl_cert" => ["--ssl-cert [CERT]", "X.509 (SSL) certificate."], + "host" => ["host", "-H", "--host [HOST]", "Host to bind to"], + "open_url" => ["-o", "--open-url", "Launch your site in a browser"], + "detach" => ["-B", "--detach", + "Run the server in the background",], + "ssl_key" => ["--ssl-key [KEY]", "X.509 (SSL) Private Key."], + "port" => ["-P", "--port [PORT]", "Port to listen on"], + "show_dir_listing" => ["--show-dir-listing", + "Show a directory listing instead of loading your index file.",], + "skip_initial_build" => ["skip_initial_build", "--skip-initial-build", + "Skips the initial site build which occurs before the server is started.",], + "livereload" => ["-l", "--livereload", + "Use LiveReload to automatically refresh browsers",], + "livereload_ignore" => ["--livereload-ignore ignore GLOB1[,GLOB2[,...]]", + Array, + "Files for LiveReload to ignore. Remember to quote the values so your shell "\ + "won't expand them",], + "livereload_min_delay" => ["--livereload-min-delay [SECONDS]", + "Minimum reload delay",], + "livereload_max_delay" => ["--livereload-max-delay [SECONDS]", + "Maximum reload delay",], + "livereload_port" => ["--livereload-port [PORT]", Integer, + "Port for LiveReload to listen on",], + }.freeze + + DIRECTORY_INDEX = %w( + index.htm + index.html + index.rhtml + index.cgi + index.xml + index.json + ).freeze + + LIVERELOAD_PORT = 35_729 + LIVERELOAD_DIR = File.join(__dir__, "serve", "livereload_assets") + + attr_reader :mutex, :run_cond, :running + alias_method :running?, :running + + def init_with_program(prog) + prog.command(:serve) do |cmd| + cmd.description "Serve your site locally" + cmd.syntax "serve [options]" + cmd.alias :server + cmd.alias :s + + add_build_options(cmd) + COMMAND_OPTIONS.each do |key, val| + cmd.option key, *val + end + + cmd.action do |_, opts| + opts["livereload_port"] ||= LIVERELOAD_PORT + opts["serving"] = true + opts["watch"] = true unless opts.key?("watch") + + start(opts) + end + end + end + + # + + def start(opts) + # Set the reactor to nil so any old reactor will be GCed. + # We can't unregister a hook so in testing when Serve.start is + # called multiple times we don't want to inadvertently keep using + # a reactor created by a previous test when our test might not + @reload_reactor = nil + + config = configuration_from_options(opts) + if Jekyll.env == "development" + config["url"] = default_url(config) + end + [Build, Serve].each { |klass| klass.process(config) } + end + + # + + def process(opts) + opts = configuration_from_options(opts) + destination = opts["destination"] + register_reload_hooks(opts) if opts["livereload"] + setup(destination) + + start_up_webrick(opts, destination) + end + + def shutdown + @server.shutdown if running? + end + + # Perform logical validation of CLI options + + private + def validate_options(opts) + if opts["livereload"] + if opts["detach"] + Jekyll.logger.warn "Warning:", + "--detach and --livereload are mutually exclusive. Choosing --livereload" + opts["detach"] = false + end + if opts["ssl_cert"] || opts["ssl_key"] + # This is not technically true. LiveReload works fine over SSL, but + # EventMachine's SSL support in Windows requires building the gem's + # native extensions against OpenSSL and that proved to be a process + # so tedious that expecting users to do it is a non-starter. + Jekyll.logger.abort_with "Error:", "LiveReload does not support SSL" + end + unless opts["watch"] + # Using livereload logically implies you want to watch the files + opts["watch"] = true + end + elsif %w(livereload_min_delay + livereload_max_delay + livereload_ignore + livereload_port).any? { |o| opts[o] } + Jekyll.logger.abort_with "--livereload-min-delay, "\ + "--livereload-max-delay, --livereload-ignore, and "\ + "--livereload-port require the --livereload option." + end + end + + # + + private + # rubocop:disable Metrics/AbcSize + def register_reload_hooks(opts) + require_relative "serve/live_reload_reactor" + @reload_reactor = LiveReloadReactor.new + + Jekyll::Hooks.register(:site, :post_render) do |site| + regenerator = Jekyll::Regenerator.new(site) + @changed_pages = site.pages.select do |p| + regenerator.regenerate?(p) + end + end + + # A note on ignoring files: LiveReload errs on the side of reloading when it + # comes to the message it gets. If, for example, a page is ignored but a CSS + # file linked in the page isn't, the page will still be reloaded if the CSS + # file is contained in the message sent to LiveReload. Additionally, the + # path matching is very loose so that a message to reload "/" will always + # lead the page to reload since every page starts with "/". + Jekyll::Hooks.register(:site, :post_write) do + if @changed_pages && @reload_reactor && @reload_reactor.running? + ignore, @changed_pages = @changed_pages.partition do |p| + Array(opts["livereload_ignore"]).any? do |filter| + File.fnmatch(filter, Jekyll.sanitized_path(p.relative_path)) + end + end + Jekyll.logger.debug "LiveReload:", "Ignoring #{ignore.map(&:relative_path)}" + @reload_reactor.reload(@changed_pages) + end + @changed_pages = nil + end + end + # rubocop:enable Metrics/AbcSize + + # Do a base pre-setup of WEBRick so that everything is in place + # when we get ready to party, checking for an setting up an error page + # and making sure our destination exists. + + private + def setup(destination) + require_relative "serve/servlet" + + FileUtils.mkdir_p(destination) + if File.exist?(File.join(destination, "404.html")) + WEBrick::HTTPResponse.class_eval do + def create_error_page + @header["Content-Type"] = "text/html; charset=UTF-8" + @body = IO.read(File.join(@config[:DocumentRoot], "404.html")) + end + end + end + end + + # + + private + def webrick_opts(opts) + opts = { + :JekyllOptions => opts, + :DoNotReverseLookup => true, + :MimeTypes => mime_types, + :DocumentRoot => opts["destination"], + :StartCallback => start_callback(opts["detach"]), + :StopCallback => stop_callback(opts["detach"]), + :BindAddress => opts["host"], + :Port => opts["port"], + :DirectoryIndex => DIRECTORY_INDEX, + } + + opts[:DirectoryIndex] = [] if opts[:JekyllOptions]["show_dir_listing"] + + enable_ssl(opts) + enable_logging(opts) + opts + end + + # + + private + def start_up_webrick(opts, destination) + if opts["livereload"] + @reload_reactor.start(opts) + end + + @server = WEBrick::HTTPServer.new(webrick_opts(opts)).tap { |o| o.unmount("") } + @server.mount(opts["baseurl"].to_s, Servlet, destination, file_handler_opts) + + Jekyll.logger.info "Server address:", server_address(@server, opts) + launch_browser @server, opts if opts["open_url"] + boot_or_detach @server, opts + end + + # Recreate NondisclosureName under utf-8 circumstance + + private + def file_handler_opts + WEBrick::Config::FileHandler.merge({ + :FancyIndexing => true, + :NondisclosureName => [ + ".ht*", "~*", + ], + }) + end + + # + + private + def server_address(server, options = {}) + format_url( + server.config[:SSLEnable], + server.config[:BindAddress], + server.config[:Port], + options["baseurl"] + ) + end + + private + def format_url(ssl_enabled, address, port, baseurl = nil) + format("%s://%
                s:%i%s", { + :prefix => ssl_enabled ? "https" : "http", + :address => address, + :port => port, + :baseurl => baseurl ? "#{baseurl}/" : "", + }) + end + + # + + private + def default_url(opts) + config = configuration_from_options(opts) + format_url( + config["ssl_cert"] && config["ssl_key"], + config["host"] == "127.0.0.1" ? "localhost" : config["host"], + config["port"] + ) + end + + # + + private + def launch_browser(server, opts) + address = server_address(server, opts) + return system "start", address if Utils::Platforms.windows? + return system "xdg-open", address if Utils::Platforms.linux? + return system "open", address if Utils::Platforms.osx? + Jekyll.logger.error "Refusing to launch browser; " \ + "Platform launcher unknown." + end + + # Keep in our area with a thread or detach the server as requested + # by the user. This method determines what we do based on what you + # ask us to do. + + private + def boot_or_detach(server, opts) + if opts["detach"] + pid = Process.fork do + server.start + end + + Process.detach(pid) + Jekyll.logger.info "Server detached with pid '#{pid}'.", \ + "Run `pkill -f jekyll' or `kill -9 #{pid}' to stop the server." + else + t = Thread.new { server.start } + trap("INT") { server.shutdown } + t.join + end + end + + # Make the stack verbose if the user requests it. + + private + def enable_logging(opts) + opts[:AccessLog] = [] + level = WEBrick::Log.const_get(opts[:JekyllOptions]["verbose"] ? :DEBUG : :WARN) + opts[:Logger] = WEBrick::Log.new($stdout, level) + end + + # Add SSL to the stack if the user triggers --enable-ssl and they + # provide both types of certificates commonly needed. Raise if they + # forget to add one of the certificates. + + private + def enable_ssl(opts) + cert, key, src = + opts[:JekyllOptions].values_at("ssl_cert", "ssl_key", "source") + + return if cert.nil? && key.nil? + raise "Missing --ssl_cert or --ssl_key. Both are required." unless cert && key + + require "openssl" + require "webrick/https" + + opts[:SSLCertificate] = OpenSSL::X509::Certificate.new(read_file(src, cert)) + opts[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(read_file(src, key)) + opts[:SSLEnable] = true + end + + private + def start_callback(detached) + unless detached + proc do + mutex.synchronize do + # Block until EventMachine reactor starts + @reload_reactor.started_event.wait unless @reload_reactor.nil? + @running = true + Jekyll.logger.info("Server running...", "press ctrl-c to stop.") + @run_cond.broadcast + end + end + end + end + + private + def stop_callback(detached) + unless detached + proc do + mutex.synchronize do + unless @reload_reactor.nil? + @reload_reactor.stop + @reload_reactor.stopped_event.wait + end + @running = false + @run_cond.broadcast + end + end + end + end + + private + def mime_types + file = File.expand_path("../mime.types", __dir__) + WEBrick::HTTPUtils.load_mime_types(file) + end + + private + def read_file(source_dir, file_path) + File.read(Jekyll.sanitized_path(source_dir, file_path)) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/live_reload_reactor.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/live_reload_reactor.rb new file mode 100644 index 0000000000..5f3a4877cc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/live_reload_reactor.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +require "em-websocket" + +require_relative "websockets" + +module Jekyll + module Commands + class Serve + class LiveReloadReactor + attr_reader :started_event + attr_reader :stopped_event + attr_reader :thread + + def initialize + @websockets = [] + @connections_count = 0 + @started_event = Utils::ThreadEvent.new + @stopped_event = Utils::ThreadEvent.new + end + + def stop + # There is only one EventMachine instance per Ruby process so stopping + # it here will stop the reactor thread we have running. + EM.stop if EM.reactor_running? + Jekyll.logger.debug "LiveReload Server:", "halted" + end + + def running? + EM.reactor_running? + end + + def handle_websockets_event(websocket) + websocket.onopen { |handshake| connect(websocket, handshake) } + websocket.onclose { disconnect(websocket) } + websocket.onmessage { |msg| print_message(msg) } + websocket.onerror { |error| log_error(error) } + end + + def start(opts) + @thread = Thread.new do + # Use epoll if the kernel supports it + EM.epoll + EM.run do + EM.error_handler { |e| log_error(e) } + + EM.start_server( + opts["host"], + opts["livereload_port"], + HttpAwareConnection, + opts + ) do |ws| + handle_websockets_event(ws) + end + + # Notify blocked threads that EventMachine has started or shutdown + EM.schedule { @started_event.set } + EM.add_shutdown_hook { @stopped_event.set } + + Jekyll.logger.info "LiveReload address:", + "http://#{opts["host"]}:#{opts["livereload_port"]}" + end + end + @thread.abort_on_exception = true + end + + # For a description of the protocol see + # http://feedback.livereload.com/knowledgebase/articles/86174-livereload-protocol + def reload(pages) + pages.each do |p| + json_message = JSON.dump({ + :command => "reload", + :path => p.url, + :liveCSS => true, + }) + + Jekyll.logger.debug "LiveReload:", "Reloading #{p.url}" + Jekyll.logger.debug "", json_message + @websockets.each { |ws| ws.send(json_message) } + end + end + + private + def connect(websocket, handshake) + @connections_count += 1 + if @connections_count == 1 + message = "Browser connected" + message += " over SSL/TLS" if handshake.secure? + Jekyll.logger.info "LiveReload:", message + end + websocket.send( + JSON.dump( + :command => "hello", + :protocols => ["http://livereload.com/protocols/official-7"], + :serverName => "jekyll" + ) + ) + + @websockets << websocket + end + + private + def disconnect(websocket) + @websockets.delete(websocket) + end + + private + def print_message(json_message) + msg = JSON.parse(json_message) + # Not sure what the 'url' command even does in LiveReload. The spec is silent + # on its purpose. + if msg["command"] == "url" + Jekyll.logger.info "LiveReload:", "Browser URL: #{msg["url"]}" + end + end + + private + def log_error(error) + Jekyll.logger.error "LiveReload experienced an error. " \ + "Run with --trace for more information." + raise error + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/livereload_assets/livereload.js b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/livereload_assets/livereload.js new file mode 100644 index 0000000000..eee60ec8b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/livereload_assets/livereload.js @@ -0,0 +1,1183 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o tag"); + return; + } + } + this.reloader = new Reloader(this.window, this.console, Timer); + this.connector = new Connector(this.options, this.WebSocket, Timer, { + connecting: (function(_this) { + return function() {}; + })(this), + socketConnected: (function(_this) { + return function() {}; + })(this), + connected: (function(_this) { + return function(protocol) { + var _base; + if (typeof (_base = _this.listeners).connect === "function") { + _base.connect(); + } + _this.log("LiveReload is connected to " + _this.options.host + ":" + _this.options.port + " (protocol v" + protocol + ")."); + return _this.analyze(); + }; + })(this), + error: (function(_this) { + return function(e) { + if (e instanceof ProtocolError) { + if (typeof console !== "undefined" && console !== null) { + return console.log("" + e.message + "."); + } + } else { + if (typeof console !== "undefined" && console !== null) { + return console.log("LiveReload internal error: " + e.message); + } + } + }; + })(this), + disconnected: (function(_this) { + return function(reason, nextDelay) { + var _base; + if (typeof (_base = _this.listeners).disconnect === "function") { + _base.disconnect(); + } + switch (reason) { + case 'cannot-connect': + return _this.log("LiveReload cannot connect to " + _this.options.host + ":" + _this.options.port + ", will retry in " + nextDelay + " sec."); + case 'broken': + return _this.log("LiveReload disconnected from " + _this.options.host + ":" + _this.options.port + ", reconnecting in " + nextDelay + " sec."); + case 'handshake-timeout': + return _this.log("LiveReload cannot connect to " + _this.options.host + ":" + _this.options.port + " (handshake timeout), will retry in " + nextDelay + " sec."); + case 'handshake-failed': + return _this.log("LiveReload cannot connect to " + _this.options.host + ":" + _this.options.port + " (handshake failed), will retry in " + nextDelay + " sec."); + case 'manual': + break; + case 'error': + break; + default: + return _this.log("LiveReload disconnected from " + _this.options.host + ":" + _this.options.port + " (" + reason + "), reconnecting in " + nextDelay + " sec."); + } + }; + })(this), + message: (function(_this) { + return function(message) { + switch (message.command) { + case 'reload': + return _this.performReload(message); + case 'alert': + return _this.performAlert(message); + } + }; + })(this) + }); + this.initialized = true; + } + + LiveReload.prototype.on = function(eventName, handler) { + return this.listeners[eventName] = handler; + }; + + LiveReload.prototype.log = function(message) { + return this.console.log("" + message); + }; + + LiveReload.prototype.performReload = function(message) { + var _ref, _ref1; + this.log("LiveReload received reload request: " + (JSON.stringify(message, null, 2))); + return this.reloader.reload(message.path, { + liveCSS: (_ref = message.liveCSS) != null ? _ref : true, + liveImg: (_ref1 = message.liveImg) != null ? _ref1 : true, + originalPath: message.originalPath || '', + overrideURL: message.overrideURL || '', + serverURL: "http://" + this.options.host + ":" + this.options.port + }); + }; + + LiveReload.prototype.performAlert = function(message) { + return alert(message.message); + }; + + LiveReload.prototype.shutDown = function() { + var _base; + if (!this.initialized) { + return; + } + this.connector.disconnect(); + this.log("LiveReload disconnected."); + return typeof (_base = this.listeners).shutdown === "function" ? _base.shutdown() : void 0; + }; + + LiveReload.prototype.hasPlugin = function(identifier) { + return !!this.pluginIdentifiers[identifier]; + }; + + LiveReload.prototype.addPlugin = function(pluginClass) { + var plugin; + if (!this.initialized) { + return; + } + if (this.hasPlugin(pluginClass.identifier)) { + return; + } + this.pluginIdentifiers[pluginClass.identifier] = true; + plugin = new pluginClass(this.window, { + _livereload: this, + _reloader: this.reloader, + _connector: this.connector, + console: this.console, + Timer: Timer, + generateCacheBustUrl: (function(_this) { + return function(url) { + return _this.reloader.generateCacheBustUrl(url); + }; + })(this) + }); + this.plugins.push(plugin); + this.reloader.addPlugin(plugin); + }; + + LiveReload.prototype.analyze = function() { + var plugin, pluginData, pluginsData, _i, _len, _ref; + if (!this.initialized) { + return; + } + if (!(this.connector.protocol >= 7)) { + return; + } + pluginsData = {}; + _ref = this.plugins; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + plugin = _ref[_i]; + pluginsData[plugin.constructor.identifier] = pluginData = (typeof plugin.analyze === "function" ? plugin.analyze() : void 0) || {}; + pluginData.version = plugin.constructor.version; + } + this.connector.sendCommand({ + command: 'info', + plugins: pluginsData, + url: this.window.location.href + }); + }; + + return LiveReload; + + })(); + +}).call(this); + +},{"./connector":1,"./options":5,"./reloader":7,"./timer":9}],5:[function(require,module,exports){ +(function() { + var Options; + + exports.Options = Options = (function() { + function Options() { + this.https = false; + this.host = null; + this.port = 35729; + this.snipver = null; + this.ext = null; + this.extver = null; + this.mindelay = 1000; + this.maxdelay = 60000; + this.handshake_timeout = 5000; + } + + Options.prototype.set = function(name, value) { + if (typeof value === 'undefined') { + return; + } + if (!isNaN(+value)) { + value = +value; + } + return this[name] = value; + }; + + return Options; + + })(); + + Options.extract = function(document) { + var element, keyAndValue, m, mm, options, pair, src, _i, _j, _len, _len1, _ref, _ref1; + _ref = document.getElementsByTagName('script'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + element = _ref[_i]; + if ((src = element.src) && (m = src.match(/^[^:]+:\/\/(.*)\/z?livereload\.js(?:\?(.*))?$/))) { + options = new Options(); + options.https = src.indexOf("https") === 0; + if (mm = m[1].match(/^([^\/:]+)(?::(\d+))?$/)) { + options.host = mm[1]; + if (mm[2]) { + options.port = parseInt(mm[2], 10); + } + } + if (m[2]) { + _ref1 = m[2].split('&'); + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + pair = _ref1[_j]; + if ((keyAndValue = pair.split('=')).length > 1) { + options.set(keyAndValue[0].replace(/-/g, '_'), keyAndValue.slice(1).join('=')); + } + } + } + return options; + } + } + return null; + }; + +}).call(this); + +},{}],6:[function(require,module,exports){ +(function() { + var PROTOCOL_6, PROTOCOL_7, Parser, ProtocolError, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + + exports.PROTOCOL_6 = PROTOCOL_6 = 'http://livereload.com/protocols/official-6'; + + exports.PROTOCOL_7 = PROTOCOL_7 = 'http://livereload.com/protocols/official-7'; + + exports.ProtocolError = ProtocolError = (function() { + function ProtocolError(reason, data) { + this.message = "LiveReload protocol error (" + reason + ") after receiving data: \"" + data + "\"."; + } + + return ProtocolError; + + })(); + + exports.Parser = Parser = (function() { + function Parser(handlers) { + this.handlers = handlers; + this.reset(); + } + + Parser.prototype.reset = function() { + return this.protocol = null; + }; + + Parser.prototype.process = function(data) { + var command, e, message, options, _ref; + try { + if (this.protocol == null) { + if (data.match(/^!!ver:([\d.]+)$/)) { + this.protocol = 6; + } else if (message = this._parseMessage(data, ['hello'])) { + if (!message.protocols.length) { + throw new ProtocolError("no protocols specified in handshake message"); + } else if (__indexOf.call(message.protocols, PROTOCOL_7) >= 0) { + this.protocol = 7; + } else if (__indexOf.call(message.protocols, PROTOCOL_6) >= 0) { + this.protocol = 6; + } else { + throw new ProtocolError("no supported protocols found"); + } + } + return this.handlers.connected(this.protocol); + } else if (this.protocol === 6) { + message = JSON.parse(data); + if (!message.length) { + throw new ProtocolError("protocol 6 messages must be arrays"); + } + command = message[0], options = message[1]; + if (command !== 'refresh') { + throw new ProtocolError("unknown protocol 6 command"); + } + return this.handlers.message({ + command: 'reload', + path: options.path, + liveCSS: (_ref = options.apply_css_live) != null ? _ref : true + }); + } else { + message = this._parseMessage(data, ['reload', 'alert']); + return this.handlers.message(message); + } + } catch (_error) { + e = _error; + if (e instanceof ProtocolError) { + return this.handlers.error(e); + } else { + throw e; + } + } + }; + + Parser.prototype._parseMessage = function(data, validCommands) { + var e, message, _ref; + try { + message = JSON.parse(data); + } catch (_error) { + e = _error; + throw new ProtocolError('unparsable JSON', data); + } + if (!message.command) { + throw new ProtocolError('missing "command" key', data); + } + if (_ref = message.command, __indexOf.call(validCommands, _ref) < 0) { + throw new ProtocolError("invalid command '" + message.command + "', only valid commands are: " + (validCommands.join(', ')) + ")", data); + } + return message; + }; + + return Parser; + + })(); + +}).call(this); + +},{}],7:[function(require,module,exports){ +(function() { + var IMAGE_STYLES, Reloader, numberOfMatchingSegments, pathFromUrl, pathsMatch, pickBestMatch, splitUrl; + + splitUrl = function(url) { + var hash, index, params; + if ((index = url.indexOf('#')) >= 0) { + hash = url.slice(index); + url = url.slice(0, index); + } else { + hash = ''; + } + if ((index = url.indexOf('?')) >= 0) { + params = url.slice(index); + url = url.slice(0, index); + } else { + params = ''; + } + return { + url: url, + params: params, + hash: hash + }; + }; + + pathFromUrl = function(url) { + var path; + url = splitUrl(url).url; + if (url.indexOf('file://') === 0) { + path = url.replace(/^file:\/\/(localhost)?/, ''); + } else { + path = url.replace(/^([^:]+:)?\/\/([^:\/]+)(:\d*)?\//, '/'); + } + return decodeURIComponent(path); + }; + + pickBestMatch = function(path, objects, pathFunc) { + var bestMatch, object, score, _i, _len; + bestMatch = { + score: 0 + }; + for (_i = 0, _len = objects.length; _i < _len; _i++) { + object = objects[_i]; + score = numberOfMatchingSegments(path, pathFunc(object)); + if (score > bestMatch.score) { + bestMatch = { + object: object, + score: score + }; + } + } + if (bestMatch.score > 0) { + return bestMatch; + } else { + return null; + } + }; + + numberOfMatchingSegments = function(path1, path2) { + var comps1, comps2, eqCount, len; + path1 = path1.replace(/^\/+/, '').toLowerCase(); + path2 = path2.replace(/^\/+/, '').toLowerCase(); + if (path1 === path2) { + return 10000; + } + comps1 = path1.split('/').reverse(); + comps2 = path2.split('/').reverse(); + len = Math.min(comps1.length, comps2.length); + eqCount = 0; + while (eqCount < len && comps1[eqCount] === comps2[eqCount]) { + ++eqCount; + } + return eqCount; + }; + + pathsMatch = function(path1, path2) { + return numberOfMatchingSegments(path1, path2) > 0; + }; + + IMAGE_STYLES = [ + { + selector: 'background', + styleNames: ['backgroundImage'] + }, { + selector: 'border', + styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] + } + ]; + + exports.Reloader = Reloader = (function() { + function Reloader(window, console, Timer) { + this.window = window; + this.console = console; + this.Timer = Timer; + this.document = this.window.document; + this.importCacheWaitPeriod = 200; + this.plugins = []; + } + + Reloader.prototype.addPlugin = function(plugin) { + return this.plugins.push(plugin); + }; + + Reloader.prototype.analyze = function(callback) { + return results; + }; + + Reloader.prototype.reload = function(path, options) { + var plugin, _base, _i, _len, _ref; + this.options = options; + if ((_base = this.options).stylesheetReloadTimeout == null) { + _base.stylesheetReloadTimeout = 15000; + } + _ref = this.plugins; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + plugin = _ref[_i]; + if (plugin.reload && plugin.reload(path, options)) { + return; + } + } + if (options.liveCSS) { + if (path.match(/\.css$/i)) { + if (this.reloadStylesheet(path)) { + return; + } + } + } + if (options.liveImg) { + if (path.match(/\.(jpe?g|png|gif)$/i)) { + this.reloadImages(path); + return; + } + } + return this.reloadPage(); + }; + + Reloader.prototype.reloadPage = function() { + return this.window.document.location.reload(); + }; + + Reloader.prototype.reloadImages = function(path) { + var expando, img, selector, styleNames, styleSheet, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3, _results; + expando = this.generateUniqueString(); + _ref = this.document.images; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + img = _ref[_i]; + if (pathsMatch(path, pathFromUrl(img.src))) { + img.src = this.generateCacheBustUrl(img.src, expando); + } + } + if (this.document.querySelectorAll) { + for (_j = 0, _len1 = IMAGE_STYLES.length; _j < _len1; _j++) { + _ref1 = IMAGE_STYLES[_j], selector = _ref1.selector, styleNames = _ref1.styleNames; + _ref2 = this.document.querySelectorAll("[style*=" + selector + "]"); + for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { + img = _ref2[_k]; + this.reloadStyleImages(img.style, styleNames, path, expando); + } + } + } + if (this.document.styleSheets) { + _ref3 = this.document.styleSheets; + _results = []; + for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) { + styleSheet = _ref3[_l]; + _results.push(this.reloadStylesheetImages(styleSheet, path, expando)); + } + return _results; + } + }; + + Reloader.prototype.reloadStylesheetImages = function(styleSheet, path, expando) { + var e, rule, rules, styleNames, _i, _j, _len, _len1; + try { + rules = styleSheet != null ? styleSheet.cssRules : void 0; + } catch (_error) { + e = _error; + } + if (!rules) { + return; + } + for (_i = 0, _len = rules.length; _i < _len; _i++) { + rule = rules[_i]; + switch (rule.type) { + case CSSRule.IMPORT_RULE: + this.reloadStylesheetImages(rule.styleSheet, path, expando); + break; + case CSSRule.STYLE_RULE: + for (_j = 0, _len1 = IMAGE_STYLES.length; _j < _len1; _j++) { + styleNames = IMAGE_STYLES[_j].styleNames; + this.reloadStyleImages(rule.style, styleNames, path, expando); + } + break; + case CSSRule.MEDIA_RULE: + this.reloadStylesheetImages(rule, path, expando); + } + } + }; + + Reloader.prototype.reloadStyleImages = function(style, styleNames, path, expando) { + var newValue, styleName, value, _i, _len; + for (_i = 0, _len = styleNames.length; _i < _len; _i++) { + styleName = styleNames[_i]; + value = style[styleName]; + if (typeof value === 'string') { + newValue = value.replace(/\burl\s*\(([^)]*)\)/, (function(_this) { + return function(match, src) { + if (pathsMatch(path, pathFromUrl(src))) { + return "url(" + (_this.generateCacheBustUrl(src, expando)) + ")"; + } else { + return match; + } + }; + })(this)); + if (newValue !== value) { + style[styleName] = newValue; + } + } + } + }; + + Reloader.prototype.reloadStylesheet = function(path) { + var imported, link, links, match, style, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1; + links = (function() { + var _i, _len, _ref, _results; + _ref = this.document.getElementsByTagName('link'); + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + link = _ref[_i]; + if (link.rel.match(/^stylesheet$/i) && !link.__LiveReload_pendingRemoval) { + _results.push(link); + } + } + return _results; + }).call(this); + imported = []; + _ref = this.document.getElementsByTagName('style'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + style = _ref[_i]; + if (style.sheet) { + this.collectImportedStylesheets(style, style.sheet, imported); + } + } + for (_j = 0, _len1 = links.length; _j < _len1; _j++) { + link = links[_j]; + this.collectImportedStylesheets(link, link.sheet, imported); + } + if (this.window.StyleFix && this.document.querySelectorAll) { + _ref1 = this.document.querySelectorAll('style[data-href]'); + for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) { + style = _ref1[_k]; + links.push(style); + } + } + this.console.log("LiveReload found " + links.length + " LINKed stylesheets, " + imported.length + " @imported stylesheets"); + match = pickBestMatch(path, links.concat(imported), (function(_this) { + return function(l) { + return pathFromUrl(_this.linkHref(l)); + }; + })(this)); + if (match) { + if (match.object.rule) { + this.console.log("LiveReload is reloading imported stylesheet: " + match.object.href); + this.reattachImportedRule(match.object); + } else { + this.console.log("LiveReload is reloading stylesheet: " + (this.linkHref(match.object))); + this.reattachStylesheetLink(match.object); + } + } else { + this.console.log("LiveReload will reload all stylesheets because path '" + path + "' did not match any specific one"); + for (_l = 0, _len3 = links.length; _l < _len3; _l++) { + link = links[_l]; + this.reattachStylesheetLink(link); + } + } + return true; + }; + + Reloader.prototype.collectImportedStylesheets = function(link, styleSheet, result) { + var e, index, rule, rules, _i, _len; + try { + rules = styleSheet != null ? styleSheet.cssRules : void 0; + } catch (_error) { + e = _error; + } + if (rules && rules.length) { + for (index = _i = 0, _len = rules.length; _i < _len; index = ++_i) { + rule = rules[index]; + switch (rule.type) { + case CSSRule.CHARSET_RULE: + continue; + case CSSRule.IMPORT_RULE: + result.push({ + link: link, + rule: rule, + index: index, + href: rule.href + }); + this.collectImportedStylesheets(link, rule.styleSheet, result); + break; + default: + break; + } + } + } + }; + + Reloader.prototype.waitUntilCssLoads = function(clone, func) { + var callbackExecuted, executeCallback, poll; + callbackExecuted = false; + executeCallback = (function(_this) { + return function() { + if (callbackExecuted) { + return; + } + callbackExecuted = true; + return func(); + }; + })(this); + clone.onload = (function(_this) { + return function() { + _this.console.log("LiveReload: the new stylesheet has finished loading"); + _this.knownToSupportCssOnLoad = true; + return executeCallback(); + }; + })(this); + if (!this.knownToSupportCssOnLoad) { + (poll = (function(_this) { + return function() { + if (clone.sheet) { + _this.console.log("LiveReload is polling until the new CSS finishes loading..."); + return executeCallback(); + } else { + return _this.Timer.start(50, poll); + } + }; + })(this))(); + } + return this.Timer.start(this.options.stylesheetReloadTimeout, executeCallback); + }; + + Reloader.prototype.linkHref = function(link) { + return link.href || link.getAttribute('data-href'); + }; + + Reloader.prototype.reattachStylesheetLink = function(link) { + var clone, parent; + if (link.__LiveReload_pendingRemoval) { + return; + } + link.__LiveReload_pendingRemoval = true; + if (link.tagName === 'STYLE') { + clone = this.document.createElement('link'); + clone.rel = 'stylesheet'; + clone.media = link.media; + clone.disabled = link.disabled; + } else { + clone = link.cloneNode(false); + } + clone.href = this.generateCacheBustUrl(this.linkHref(link)); + parent = link.parentNode; + if (parent.lastChild === link) { + parent.appendChild(clone); + } else { + parent.insertBefore(clone, link.nextSibling); + } + return this.waitUntilCssLoads(clone, (function(_this) { + return function() { + var additionalWaitingTime; + if (/AppleWebKit/.test(navigator.userAgent)) { + additionalWaitingTime = 5; + } else { + additionalWaitingTime = 200; + } + return _this.Timer.start(additionalWaitingTime, function() { + var _ref; + if (!link.parentNode) { + return; + } + link.parentNode.removeChild(link); + clone.onreadystatechange = null; + return (_ref = _this.window.StyleFix) != null ? _ref.link(clone) : void 0; + }); + }; + })(this)); + }; + + Reloader.prototype.reattachImportedRule = function(_arg) { + var href, index, link, media, newRule, parent, rule, tempLink; + rule = _arg.rule, index = _arg.index, link = _arg.link; + parent = rule.parentStyleSheet; + href = this.generateCacheBustUrl(rule.href); + media = rule.media.length ? [].join.call(rule.media, ', ') : ''; + newRule = "@import url(\"" + href + "\") " + media + ";"; + rule.__LiveReload_newHref = href; + tempLink = this.document.createElement("link"); + tempLink.rel = 'stylesheet'; + tempLink.href = href; + tempLink.__LiveReload_pendingRemoval = true; + if (link.parentNode) { + link.parentNode.insertBefore(tempLink, link); + } + return this.Timer.start(this.importCacheWaitPeriod, (function(_this) { + return function() { + if (tempLink.parentNode) { + tempLink.parentNode.removeChild(tempLink); + } + if (rule.__LiveReload_newHref !== href) { + return; + } + parent.insertRule(newRule, index); + parent.deleteRule(index + 1); + rule = parent.cssRules[index]; + rule.__LiveReload_newHref = href; + return _this.Timer.start(_this.importCacheWaitPeriod, function() { + if (rule.__LiveReload_newHref !== href) { + return; + } + parent.insertRule(newRule, index); + return parent.deleteRule(index + 1); + }); + }; + })(this)); + }; + + Reloader.prototype.generateUniqueString = function() { + return 'livereload=' + Date.now(); + }; + + Reloader.prototype.generateCacheBustUrl = function(url, expando) { + var hash, oldParams, originalUrl, params, _ref; + if (expando == null) { + expando = this.generateUniqueString(); + } + _ref = splitUrl(url), url = _ref.url, hash = _ref.hash, oldParams = _ref.params; + if (this.options.overrideURL) { + if (url.indexOf(this.options.serverURL) < 0) { + originalUrl = url; + url = this.options.serverURL + this.options.overrideURL + "?url=" + encodeURIComponent(url); + this.console.log("LiveReload is overriding source URL " + originalUrl + " with " + url); + } + } + params = oldParams.replace(/(\?|&)livereload=(\d+)/, function(match, sep) { + return "" + sep + expando; + }); + if (params === oldParams) { + if (oldParams.length === 0) { + params = "?" + expando; + } else { + params = "" + oldParams + "&" + expando; + } + } + return url + params + hash; + }; + + return Reloader; + + })(); + +}).call(this); + +},{}],8:[function(require,module,exports){ +(function() { + var CustomEvents, LiveReload, k; + + CustomEvents = require('./customevents'); + + LiveReload = window.LiveReload = new (require('./livereload').LiveReload)(window); + + for (k in window) { + if (k.match(/^LiveReloadPlugin/)) { + LiveReload.addPlugin(window[k]); + } + } + + LiveReload.addPlugin(require('./less')); + + LiveReload.on('shutdown', function() { + return delete window.LiveReload; + }); + + LiveReload.on('connect', function() { + return CustomEvents.fire(document, 'LiveReloadConnect'); + }); + + LiveReload.on('disconnect', function() { + return CustomEvents.fire(document, 'LiveReloadDisconnect'); + }); + + CustomEvents.bind(document, 'LiveReloadShutDown', function() { + return LiveReload.shutDown(); + }); + +}).call(this); + +},{"./customevents":2,"./less":3,"./livereload":4}],9:[function(require,module,exports){ +(function() { + var Timer; + + exports.Timer = Timer = (function() { + function Timer(func) { + this.func = func; + this.running = false; + this.id = null; + this._handler = (function(_this) { + return function() { + _this.running = false; + _this.id = null; + return _this.func(); + }; + })(this); + } + + Timer.prototype.start = function(timeout) { + if (this.running) { + clearTimeout(this.id); + } + this.id = setTimeout(this._handler, timeout); + return this.running = true; + }; + + Timer.prototype.stop = function() { + if (this.running) { + clearTimeout(this.id); + this.running = false; + return this.id = null; + } + }; + + return Timer; + + })(); + + Timer.start = function(timeout, func) { + return setTimeout(func, timeout); + }; + +}).call(this); + +},{}]},{},[8]); diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/servlet.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/servlet.rb new file mode 100644 index 0000000000..567ec313cb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/servlet.rb @@ -0,0 +1,205 @@ +# frozen_string_literal: true + +require "webrick" + +module Jekyll + module Commands + class Serve + # This class is used to determine if the Servlet should modify a served file + # to insert the LiveReload script tags + class SkipAnalyzer + BAD_USER_AGENTS = [%r!MSIE!].freeze + + def self.skip_processing?(request, response, options) + new(request, response, options).skip_processing? + end + + def initialize(request, response, options) + @options = options + @request = request + @response = response + end + + def skip_processing? + !html? || chunked? || inline? || bad_browser? + end + + def chunked? + @response["Transfer-Encoding"] == "chunked" + end + + def inline? + @response["Content-Disposition"] =~ %r!^inline! + end + + def bad_browser? + BAD_USER_AGENTS.any? { |pattern| @request["User-Agent"] =~ pattern } + end + + def html? + @response["Content-Type"] =~ %r!text/html! + end + end + + # This class inserts the LiveReload script tags into HTML as it is served + class BodyProcessor + HEAD_TAG_REGEX = %r!|! + + attr_reader :content_length, :new_body, :livereload_added + + def initialize(body, options) + @body = body + @options = options + @processed = false + end + + def processed? + @processed + end + + # rubocop:disable Metrics/MethodLength + def process! + @new_body = [] + # @body will usually be a File object but Strings occur in rare cases + if @body.respond_to?(:each) + begin + @body.each { |line| @new_body << line.to_s } + ensure + @body.close + end + else + @new_body = @body.lines + end + + @content_length = 0 + @livereload_added = false + + @new_body.each do |line| + if !@livereload_added && line[" + document.write( + ' + TEMPLATE + ERB.new(Jekyll::Utils.strip_heredoc(template)) + end + + def livereload_args + # XHTML standard requires ampersands to be encoded as entities when in + # attributes. See http://stackoverflow.com/a/2190292 + src = "" + if @options["livereload_min_delay"] + src += "&mindelay=#{@options["livereload_min_delay"]}" + end + if @options["livereload_max_delay"] + src += "&maxdelay=#{@options["livereload_max_delay"]}" + end + if @options["livereload_port"] + src += "&port=#{@options["livereload_port"]}" + end + src + end + end + + class Servlet < WEBrick::HTTPServlet::FileHandler + DEFAULTS = { + "Cache-Control" => "private, max-age=0, proxy-revalidate, " \ + "no-store, no-cache, must-revalidate", + }.freeze + + def initialize(server, root, callbacks) + # So we can access them easily. + @jekyll_opts = server.config[:JekyllOptions] + set_defaults + super + end + + def search_index_file(req, res) + super || search_file(req, res, ".html") + end + + # Add the ability to tap file.html the same way that Nginx does on our + # Docker images (or on GitHub Pages.) The difference is that we might end + # up with a different preference on which comes first. + + def search_file(req, res, basename) + # /file.* > /file/index.html > /file.html + super || super(req, res, "#{basename}.html") + end + + # rubocop:disable Naming/MethodName + def do_GET(req, res) + rtn = super + + if @jekyll_opts["livereload"] + return rtn if SkipAnalyzer.skip_processing?(req, res, @jekyll_opts) + + processor = BodyProcessor.new(res.body, @jekyll_opts) + processor.process! + res.body = processor.new_body + res.content_length = processor.content_length.to_s + + if processor.livereload_added + # Add a header to indicate that the page content has been modified + res["X-Rack-LiveReload"] = "1" + end + end + + validate_and_ensure_charset(req, res) + res.header.merge!(@headers) + rtn + end + # rubocop:enable Naming/MethodName + + # + + private + def validate_and_ensure_charset(_req, res) + key = res.header.keys.grep(%r!content-type!i).first + typ = res.header[key] + + unless typ =~ %r!;\s*charset=! + res.header[key] = "#{typ}; charset=#{@jekyll_opts["encoding"]}" + end + end + + # + + private + def set_defaults + hash_ = @jekyll_opts.fetch("webrick", {}).fetch("headers", {}) + DEFAULTS.each_with_object(@headers = hash_) do |(key, val), hash| + hash[key] = val unless hash.key?(key) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/websockets.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/websockets.rb new file mode 100644 index 0000000000..8b49bd65cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/commands/serve/websockets.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +require "http/parser" + +module Jekyll + module Commands + class Serve + # The LiveReload protocol requires the server to serve livereload.js over HTTP + # despite the fact that the protocol itself uses WebSockets. This custom connection + # class addresses the dual protocols that the server needs to understand. + class HttpAwareConnection < EventMachine::WebSocket::Connection + attr_reader :reload_body, :reload_size + + def initialize(_opts) + # If EventMachine SSL support on Windows ever gets better, the code below will + # set up the reactor to handle SSL + # + # @ssl_enabled = opts["ssl_cert"] && opts["ssl_key"] + # if @ssl_enabled + # em_opts[:tls_options] = { + # :private_key_file => Jekyll.sanitized_path(opts["source"], opts["ssl_key"]), + # :cert_chain_file => Jekyll.sanitized_path(opts["source"], opts["ssl_cert"]) + # } + # em_opts[:secure] = true + # end + + # This is too noisy even for --verbose, but uncomment if you need it for + # a specific WebSockets issue. Adding ?LR-verbose=true onto the URL will + # enable logging on the client side. + # em_opts[:debug] = true + + em_opts = {} + super(em_opts) + + reload_file = File.join(Serve.singleton_class::LIVERELOAD_DIR, "livereload.js") + + @reload_body = File.read(reload_file) + @reload_size = @reload_body.bytesize + end + + # rubocop:disable Metrics/MethodLength + def dispatch(data) + parser = Http::Parser.new + parser << data + + # WebSockets requests will have a Connection: Upgrade header + if parser.http_method != "GET" || parser.upgrade? + super + elsif parser.request_url =~ %r!^\/livereload.js! + headers = [ + "HTTP/1.1 200 OK", + "Content-Type: application/javascript", + "Content-Length: #{reload_size}", + "", + "", + ].join("\r\n") + send_data(headers) + + # stream_file_data would free us from keeping livereload.js in memory + # but JRuby blocks on that call and never returns + send_data(reload_body) + close_connection_after_writing + else + body = "This port only serves livereload.js over HTTP.\n" + headers = [ + "HTTP/1.1 400 Bad Request", + "Content-Type: text/plain", + "Content-Length: #{body.bytesize}", + "", + "", + ].join("\r\n") + send_data(headers) + send_data(body) + close_connection_after_writing + end + end + # rubocop:enable Metrics/MethodLength + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/configuration.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/configuration.rb new file mode 100644 index 0000000000..f64264c936 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/configuration.rb @@ -0,0 +1,404 @@ +# frozen_string_literal: true + +module Jekyll + class Configuration < Hash + # Default options. Overridden by values in _config.yml. + # Strings rather than symbols are used for compatibility with YAML. + DEFAULTS = Configuration[{ + # Where things are + "source" => Dir.pwd, + "destination" => File.join(Dir.pwd, "_site"), + "collections_dir" => "", + "plugins_dir" => "_plugins", + "layouts_dir" => "_layouts", + "data_dir" => "_data", + "includes_dir" => "_includes", + "collections" => {}, + + # Handling Reading + "safe" => false, + "include" => [".htaccess"], + "exclude" => %w( + Gemfile Gemfile.lock node_modules vendor/bundle/ vendor/cache/ vendor/gems/ + vendor/ruby/ + ), + "keep_files" => [".git", ".svn"], + "encoding" => "utf-8", + "markdown_ext" => "markdown,mkdown,mkdn,mkd,md", + "strict_front_matter" => false, + + # Filtering Content + "show_drafts" => nil, + "limit_posts" => 0, + "future" => false, + "unpublished" => false, + + # Plugins + "whitelist" => [], + "plugins" => [], + + # Conversion + "markdown" => "kramdown", + "highlighter" => "rouge", + "lsi" => false, + "excerpt_separator" => "\n\n", + "incremental" => false, + + # Serving + "detach" => false, # default to not detaching the server + "port" => "4000", + "host" => "127.0.0.1", + "baseurl" => nil, # this mounts at /, i.e. no subdirectory + "show_dir_listing" => false, + + # Output Configuration + "permalink" => "date", + "paginate_path" => "/page:num", + "timezone" => nil, # use the local timezone + + "quiet" => false, + "verbose" => false, + "defaults" => [], + + "liquid" => { + "error_mode" => "warn", + "strict_filters" => false, + "strict_variables" => false, + }, + + "rdiscount" => { + "extensions" => [], + }, + + "redcarpet" => { + "extensions" => [], + }, + + "kramdown" => { + "auto_ids" => true, + "toc_levels" => "1..6", + "entity_output" => "as_char", + "smart_quotes" => "lsquo,rsquo,ldquo,rdquo", + "input" => "GFM", + "hard_wrap" => false, + "footnote_nr" => 1, + "show_warnings" => false, + }, + }.map { |k, v| [k, v.freeze] }].freeze + + class << self + # Static: Produce a Configuration ready for use in a Site. + # It takes the input, fills in the defaults where values do not + # exist, and patches common issues including migrating options for + # backwards compatiblity. Except where a key or value is being fixed, + # the user configuration will override the defaults. + # + # user_config - a Hash or Configuration of overrides. + # + # Returns a Configuration filled with defaults and fixed for common + # problems and backwards-compatibility. + def from(user_config) + Utils.deep_merge_hashes(DEFAULTS, Configuration[user_config].stringify_keys) + .add_default_collections + end + end + + # Public: Turn all keys into string + # + # Return a copy of the hash where all its keys are strings + def stringify_keys + reduce({}) { |hsh, (k, v)| hsh.merge(k.to_s => v) } + end + + def get_config_value_with_override(config_key, override) + override[config_key] || self[config_key] || DEFAULTS[config_key] + end + + # Public: Directory of the Jekyll source folder + # + # override - the command-line options hash + # + # Returns the path to the Jekyll source directory + def source(override) + get_config_value_with_override("source", override) + end + + def quiet(override = {}) + get_config_value_with_override("quiet", override) + end + alias_method :quiet?, :quiet + + def verbose(override = {}) + get_config_value_with_override("verbose", override) + end + alias_method :verbose?, :verbose + + def safe_load_file(filename) + case File.extname(filename) + when %r!\.toml!i + Jekyll::External.require_with_graceful_fail("tomlrb") unless defined?(Tomlrb) + Tomlrb.load_file(filename) + when %r!\.ya?ml!i + SafeYAML.load_file(filename) || {} + else + raise ArgumentError, "No parser for '#{filename}' is available. + Use a .y(a)ml or .toml file instead." + end + end + + # Public: Generate list of configuration files from the override + # + # override - the command-line options hash + # + # Returns an Array of config files + def config_files(override) + # Adjust verbosity quickly + Jekyll.logger.adjust_verbosity( + :quiet => quiet?(override), + :verbose => verbose?(override) + ) + + # Get configuration from /_config.yml or / + config_files = override["config"] + if config_files.to_s.empty? + default = %w(yml yaml).find(-> { "yml" }) do |ext| + File.exist?(Jekyll.sanitized_path(source(override), "_config.#{ext}")) + end + config_files = Jekyll.sanitized_path(source(override), "_config.#{default}") + @default_config_file = true + end + Array(config_files) + end + + # Public: Read configuration and return merged Hash + # + # file - the path to the YAML file to be read in + # + # Returns this configuration, overridden by the values in the file + def read_config_file(file) + next_config = safe_load_file(file) + check_config_is_hash!(next_config, file) + Jekyll.logger.info "Configuration file:", file + next_config + rescue SystemCallError + if @default_config_file ||= nil + Jekyll.logger.warn "Configuration file:", "none" + {} + else + Jekyll.logger.error "Fatal:", "The configuration file '#{file}' + could not be found." + raise LoadError, "The Configuration file '#{file}' could not be found." + end + end + + # Public: Read in a list of configuration files and merge with this hash + # + # files - the list of configuration file paths + # + # Returns the full configuration, with the defaults overridden by the values in the + # configuration files + def read_config_files(files) + configuration = clone + + begin + files.each do |config_file| + next if config_file.nil? || config_file.empty? + new_config = read_config_file(config_file) + configuration = Utils.deep_merge_hashes(configuration, new_config) + end + rescue ArgumentError => err + Jekyll.logger.warn "WARNING:", "Error reading configuration. " \ + "Using defaults (and options)." + warn err + end + + configuration.backwards_compatibilize.add_default_collections + end + + # Public: Split a CSV string into an array containing its values + # + # csv - the string of comma-separated values + # + # Returns an array of the values contained in the CSV + def csv_to_array(csv) + csv.split(",").map(&:strip) + end + + # Public: Ensure the proper options are set in the configuration to allow for + # backwards-compatibility with Jekyll pre-1.0 + # + # Returns the backwards-compatible configuration + def backwards_compatibilize + config = clone + # Provide backwards-compatibility + check_auto(config) + check_server(config) + check_plugins(config) + + renamed_key "server_port", "port", config + renamed_key "gems", "plugins", config + renamed_key "layouts", "layouts_dir", config + renamed_key "data_source", "data_dir", config + + check_pygments(config) + check_include_exclude(config) + check_coderay(config) + check_maruku(config) + + config + end + + # DEPRECATED. + def fix_common_issues + self + end + + def add_default_collections + config = clone + + # It defaults to `{}`, so this is only if someone sets it to null manually. + return config if config["collections"].nil? + + # Ensure we have a hash. + if config["collections"].is_a?(Array) + config["collections"] = Hash[config["collections"].map { |c| [c, {}] }] + end + + config["collections"] = Utils.deep_merge_hashes( + { "posts" => {} }, config["collections"] + ).tap do |collections| + collections["posts"]["output"] = true + if config["permalink"] + collections["posts"]["permalink"] ||= style_to_permalink(config["permalink"]) + end + end + + config + end + + def renamed_key(old, new, config, _ = nil) + if config.key?(old) + Jekyll::Deprecator.deprecation_message "The '#{old}' configuration" \ + " option has been renamed to '#{new}'. Please update your config" \ + " file accordingly." + config[new] = config.delete(old) + end + end + + private + def style_to_permalink(permalink_style) + case permalink_style.to_sym + when :pretty + "/:categories/:year/:month/:day/:title/" + when :none + "/:categories/:title:output_ext" + when :date + "/:categories/:year/:month/:day/:title:output_ext" + when :ordinal + "/:categories/:year/:y_day/:title:output_ext" + else + permalink_style.to_s + end + end + + # Private: Checks if a given config is a hash + # + # extracted_config - the value to check + # file - the file from which the config was extracted + # + # Raises an ArgumentError if given config is not a hash + private + def check_config_is_hash!(extracted_config, file) + unless extracted_config.is_a?(Hash) + raise ArgumentError, "Configuration file: (INVALID) #{file}".yellow + end + end + + private + def check_auto(config) + if config.key?("auto") || config.key?("watch") + Jekyll::Deprecator.deprecation_message "Auto-regeneration can no longer" \ + " be set from your configuration file(s). Use the" \ + " --[no-]watch/-w command-line option instead." + config.delete("auto") + config.delete("watch") + end + end + + private + def check_server(config) + if config.key?("server") + Jekyll::Deprecator.deprecation_message "The 'server' configuration option" \ + " is no longer accepted. Use the 'jekyll serve'" \ + " subcommand to serve your site with WEBrick." + config.delete("server") + end + end + + private + def check_pygments(config) + if config.key?("pygments") + Jekyll::Deprecator.deprecation_message "The 'pygments' configuration option" \ + " has been renamed to 'highlighter'. Please update your" \ + " config file accordingly. The allowed values are 'rouge', " \ + "'pygments' or null." + + config["highlighter"] = "pygments" if config["pygments"] + config.delete("pygments") + end + end + + private + def check_include_exclude(config) + %w(include exclude).each do |option| + if config[option].is_a?(String) + Jekyll::Deprecator.deprecation_message "The '#{option}' configuration option" \ + " must now be specified as an array, but you specified" \ + " a string. For now, we've treated the string you provided" \ + " as a list of comma-separated values." + config[option] = csv_to_array(config[option]) + end + config[option].map!(&:to_s) if config[option] + end + end + + private + def check_coderay(config) + if (config["kramdown"] || {}).key?("use_coderay") + Jekyll::Deprecator.deprecation_message "Please change 'use_coderay'" \ + " to 'enable_coderay' in your configuration file." + config["kramdown"]["use_coderay"] = config["kramdown"].delete("enable_coderay") + end + end + + private + def check_maruku(config) + if config.fetch("markdown", "kramdown").to_s.casecmp("maruku").zero? + Jekyll.logger.abort_with "Error:", "You're using the 'maruku' " \ + "Markdown processor, which has been removed as of 3.0.0. " \ + "We recommend you switch to Kramdown. To do this, replace " \ + "`markdown: maruku` with `markdown: kramdown` in your " \ + "`_config.yml` file." + end + end + + # Private: Checks if the `plugins` config is a String + # + # config - the config hash + # + # Raises a Jekyll::Errors::InvalidConfigurationError if the config `plugins` + # is a string + private + def check_plugins(config) + if config.key?("plugins") && config["plugins"].is_a?(String) + Jekyll.logger.error "Configuration Error:", "You specified the" \ + " `plugins` config in your configuration file as a string, please" \ + " use an array instead. If you wanted to set the directory of your" \ + " plugins, use the config key `plugins_dir` instead." + raise Jekyll::Errors::InvalidConfigurationError, + "'plugins' should not be a string, but was: " \ + "#{config["plugins"].inspect}. Use 'plugins_dir' instead." + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converter.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converter.rb new file mode 100644 index 0000000000..3cb74de212 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converter.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +module Jekyll + class Converter < Plugin + # Public: Get or set the highlighter prefix. When an argument is specified, + # the prefix will be set. If no argument is specified, the current prefix + # will be returned. + # + # highlighter_prefix - The String prefix (default: nil). + # + # Returns the String prefix. + def self.highlighter_prefix(highlighter_prefix = nil) + unless defined?(@highlighter_prefix) && highlighter_prefix.nil? + @highlighter_prefix = highlighter_prefix + end + @highlighter_prefix + end + + # Public: Get or set the highlighter suffix. When an argument is specified, + # the suffix will be set. If no argument is specified, the current suffix + # will be returned. + # + # highlighter_suffix - The String suffix (default: nil). + # + # Returns the String suffix. + def self.highlighter_suffix(highlighter_suffix = nil) + unless defined?(@highlighter_suffix) && highlighter_suffix.nil? + @highlighter_suffix = highlighter_suffix + end + @highlighter_suffix + end + + # Initialize the converter. + # + # Returns an initialized Converter. + def initialize(config = {}) + @config = config + end + + # Get the highlighter prefix. + # + # Returns the String prefix. + def highlighter_prefix + self.class.highlighter_prefix + end + + # Get the highlighter suffix. + # + # Returns the String suffix. + def highlighter_suffix + self.class.highlighter_suffix + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/identity.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/identity.rb new file mode 100644 index 0000000000..2296aff196 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/identity.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Jekyll + module Converters + class Identity < Converter + safe true + + priority :lowest + + def matches(_ext) + true + end + + def output_ext(ext) + ext + end + + def convert(content) + content + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown.rb new file mode 100644 index 0000000000..17d102ff03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +module Jekyll + module Converters + class Markdown < Converter + highlighter_prefix "\n" + highlighter_suffix "\n" + safe true + + def setup + return if @setup ||= false + unless (@parser = get_processor) + Jekyll.logger.error "Invalid Markdown processor given:", @config["markdown"] + if @config["safe"] + Jekyll.logger.info "", "Custom processors are not loaded in safe mode" + end + Jekyll.logger.error( + "", + "Available processors are: #{valid_processors.join(", ")}" + ) + raise Errors::FatalException, "Bailing out; invalid Markdown processor." + end + + @setup = true + end + + # Rubocop does not allow reader methods to have names starting with `get_` + # To ensure compatibility, this check has been disabled on this method + # + # rubocop:disable Naming/AccessorMethodName + def get_processor + case @config["markdown"].downcase + when "redcarpet" then return RedcarpetParser.new(@config) + when "kramdown" then return KramdownParser.new(@config) + when "rdiscount" then return RDiscountParser.new(@config) + else + custom_processor + end + end + # rubocop:enable Naming/AccessorMethodName + + # Public: Provides you with a list of processors, the ones we + # support internally and the ones that you have provided to us (if you + # are not in safe mode.) + + def valid_processors + %w(rdiscount kramdown redcarpet) + third_party_processors + end + + # Public: A list of processors that you provide via plugins. + # This is really only available if you are not in safe mode, if you are + # in safe mode (re: GitHub) then there will be none. + + def third_party_processors + self.class.constants - \ + %w(KramdownParser RDiscountParser RedcarpetParser PRIORITIES).map( + &:to_sym + ) + end + + def extname_list + @extname_list ||= @config["markdown_ext"].split(",").map do |e| + ".#{e.downcase}" + end + end + + def matches(ext) + extname_list.include?(ext.downcase) + end + + def output_ext(_ext) + ".html" + end + + def convert(content) + setup + @parser.convert(content) + end + + private + def custom_processor + converter_name = @config["markdown"] + if custom_class_allowed?(converter_name) + self.class.const_get(converter_name).new(@config) + end + end + + # Private: Determine whether a class name is an allowed custom + # markdown class name. + # + # parser_name - the name of the parser class + # + # Returns true if the parser name contains only alphanumeric + # characters and is defined within Jekyll::Converters::Markdown + + private + def custom_class_allowed?(parser_name) + parser_name !~ %r![^A-Za-z0-9_]! && self.class.constants.include?( + parser_name.to_sym + ) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/kramdown_parser.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/kramdown_parser.rb new file mode 100644 index 0000000000..b7caab551d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -0,0 +1,126 @@ +# Frozen-string-literal: true + +module Jekyll + module Converters + class Markdown + class KramdownParser + CODERAY_DEFAULTS = { + "css" => "style", + "bold_every" => 10, + "line_numbers" => "inline", + "line_number_start" => 1, + "tab_width" => 4, + "wrap" => "div", + }.freeze + + def initialize(config) + @main_fallback_highlighter = config["highlighter"] || "rouge" + @config = config["kramdown"] || {} + @highlighter = nil + setup + end + + # Setup and normalize the configuration: + # * Create Kramdown if it doesn't exist. + # * Set syntax_highlighter, detecting enable_coderay and merging + # highlighter if none. + # * Merge kramdown[coderay] into syntax_highlighter_opts stripping coderay_. + # * Make sure `syntax_highlighter_opts` exists. + + def setup + @config["syntax_highlighter"] ||= highlighter + @config["syntax_highlighter_opts"] ||= {} + @config["coderay"] ||= {} # XXX: Legacy. + modernize_coderay_config + make_accessible + end + + def convert(content) + document = Kramdown::Document.new(content, @config) + html_output = document.to_html + if @config["show_warnings"] + document.warnings.each do |warning| + Jekyll.logger.warn "Kramdown warning:", warning + end + end + html_output + end + + private + def make_accessible(hash = @config) + hash.keys.each do |key| + hash[key.to_sym] = hash[key] + make_accessible(hash[key]) if hash[key].is_a?(Hash) + end + end + + # config[kramdown][syntax_higlighter] > + # config[kramdown][enable_coderay] > + # config[highlighter] + # Where `enable_coderay` is now deprecated because Kramdown + # supports Rouge now too. + + private + def highlighter + return @highlighter if @highlighter + + if @config["syntax_highlighter"] + return @highlighter = @config[ + "syntax_highlighter" + ] + end + + @highlighter = begin + if @config.key?("enable_coderay") && @config["enable_coderay"] + Jekyll::Deprecator.deprecation_message( + "You are using 'enable_coderay', " \ + "use syntax_highlighter: coderay in your configuration file." + ) + + "coderay" + else + @main_fallback_highlighter + end + end + end + + private + def strip_coderay_prefix(hash) + hash.each_with_object({}) do |(key, val), hsh| + cleaned_key = key.to_s.gsub(%r!\Acoderay_!, "") + + if key != cleaned_key + Jekyll::Deprecator.deprecation_message( + "You are using '#{key}'. Normalizing to #{cleaned_key}." + ) + end + + hsh[cleaned_key] = val + end + end + + # If our highlighter is CodeRay we go in to merge the CodeRay defaults + # with your "coderay" key if it's there, deprecating it in the + # process of you using it. + + private + def modernize_coderay_config + unless @config["coderay"].empty? + Jekyll::Deprecator.deprecation_message( + "You are using 'kramdown.coderay' in your configuration, " \ + "please use 'syntax_highlighter_opts' instead." + ) + + @config["syntax_highlighter_opts"] = begin + strip_coderay_prefix( + @config["syntax_highlighter_opts"] \ + .merge(CODERAY_DEFAULTS) \ + .merge(@config["coderay"]) + ) + end + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/rdiscount_parser.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/rdiscount_parser.rb new file mode 100644 index 0000000000..9da177d4ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/rdiscount_parser.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module Jekyll + module Converters + class Markdown + class RDiscountParser + def initialize(config) + unless defined?(RDiscount) + Jekyll::External.require_with_graceful_fail "rdiscount" + end + @config = config + @rdiscount_extensions = @config["rdiscount"]["extensions"].map(&:to_sym) + end + + def convert(content) + rd = RDiscount.new(content, *@rdiscount_extensions) + html = rd.to_html + if @config["rdiscount"]["toc_token"] + html = replace_generated_toc(rd, html, @config["rdiscount"]["toc_token"]) + end + html + end + + private + def replace_generated_toc(rd_instance, html, toc_token) + if rd_instance.generate_toc && html.include?(toc_token) + utf8_toc = rd_instance.toc_content + utf8_toc.force_encoding("utf-8") if utf8_toc.respond_to?(:force_encoding) + html.gsub(toc_token, utf8_toc) + else + html + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/redcarpet_parser.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/redcarpet_parser.rb new file mode 100644 index 0000000000..d148e06d20 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/markdown/redcarpet_parser.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +class Jekyll::Converters::Markdown::RedcarpetParser + module CommonMethods + def add_code_tags(code, lang) + code = code.to_s + code = code.sub( + %r!
                !,
                +        "
                "
                +      )
                +      code = code.sub(%r!
                !, "
                ") + code + end + end + + module WithPygments + include CommonMethods + def block_code(code, lang) + unless defined?(Pygments) + Jekyll::External.require_with_graceful_fail("pygments") + end + lang = lang && lang.split.first || "text" + add_code_tags( + Pygments.highlight( + code, + { + :lexer => lang, + :options => { :encoding => "utf-8" }, + } + ), + lang + ) + end + end + + module WithoutHighlighting + require "cgi" + + include CommonMethods + + def code_wrap(code) + "
                #{CGI.escapeHTML(code)}
                " + end + + def block_code(code, lang) + lang = lang && lang.split.first || "text" + add_code_tags(code_wrap(code), lang) + end + end + + module WithRouge + def block_code(_code, lang) + code = "
                #{super}
                " + + "
                #{add_code_tags(code, lang)}
                " + end + + protected + def rouge_formatter(_lexer) + Jekyll::Utils::Rouge.html_formatter(:wrap => false) + end + end + + def initialize(config) + unless defined?(Redcarpet) + Jekyll::External.require_with_graceful_fail("redcarpet") + end + @config = config + @redcarpet_extensions = {} + @config["redcarpet"]["extensions"].each do |e| + @redcarpet_extensions[e.to_sym] = true + end + + @renderer ||= class_with_proper_highlighter(@config["highlighter"]) + end + + def class_with_proper_highlighter(highlighter) + Class.new(Redcarpet::Render::HTML) do + case highlighter + when "pygments" + include WithPygments + when "rouge" + Jekyll::External.require_with_graceful_fail(%w( + rouge rouge/plugins/redcarpet + )) + + unless Gem::Version.new(Rouge.version) > Gem::Version.new("1.3.0") + abort "Please install Rouge 1.3.0 or greater and try running Jekyll again." + end + + include Rouge::Plugins::Redcarpet + include CommonMethods + include WithRouge + else + include WithoutHighlighting + end + end + end + + def convert(content) + @redcarpet_extensions[:fenced_code_blocks] = \ + !@redcarpet_extensions[:no_fenced_code_blocks] + if @redcarpet_extensions[:smart] + @renderer.send :include, Redcarpet::Render::SmartyPants + end + markdown = Redcarpet::Markdown.new( + @renderer.new(@redcarpet_extensions), + @redcarpet_extensions + ) + markdown.render(content) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/smartypants.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/smartypants.rb new file mode 100644 index 0000000000..8234a41afc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/converters/smartypants.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +class Kramdown::Parser::SmartyPants < Kramdown::Parser::Kramdown + def initialize(source, options) + super + @block_parsers = [:block_html, :content] + @span_parsers = [:smart_quotes, :html_entity, :typographic_syms, :span_html] + end + + def parse_content + add_text @src.scan(%r!\A.*\n!) + end + define_parser(:content, %r!\A!) +end + +module Jekyll + module Converters + class SmartyPants < Converter + safe true + priority :low + + def initialize(config) + unless defined?(Kramdown) + Jekyll::External.require_with_graceful_fail "kramdown" + end + @config = config["kramdown"].dup || {} + @config[:input] = :SmartyPants + end + + def matches(_) + false + end + + def output_ext(_) + nil + end + + def convert(content) + document = Kramdown::Document.new(content, @config) + html_output = document.to_html.chomp + if @config["show_warnings"] + document.warnings.each do |warning| + Jekyll.logger.warn "Kramdown warning:", warning.sub(%r!^Warning:\s+!, "") + end + end + html_output + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb new file mode 100644 index 0000000000..bfd0398632 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/convertible.rb @@ -0,0 +1,255 @@ +# frozen_string_literal: true + +# Convertible provides methods for converting a pagelike item +# from a certain type of markup into actual content +# +# Requires +# self.site -> Jekyll::Site +# self.content +# self.content= +# self.data= +# self.ext= +# self.output= +# self.name +# self.path +# self.type -> :page, :post or :draft + +module Jekyll + module Convertible + # Returns the contents as a String. + def to_s + content || "" + end + + # Whether the file is published or not, as indicated in YAML front-matter + def published? + !(data.key?("published") && data["published"] == false) + end + + # Read the YAML frontmatter. + # + # base - The String path to the dir containing the file. + # name - The String filename of the file. + # opts - optional parameter to File.read, default at site configs + # + # Returns nothing. + # rubocop:disable Metrics/AbcSize + def read_yaml(base, name, opts = {}) + filename = File.join(base, name) + + begin + self.content = File.read(@path || site.in_source_dir(base, name), + Utils.merged_file_read_opts(site, opts)) + if content =~ Document::YAML_FRONT_MATTER_REGEXP + self.content = $POSTMATCH + self.data = SafeYAML.load(Regexp.last_match(1)) + end + rescue Psych::SyntaxError => e + Jekyll.logger.warn "YAML Exception reading #{filename}: #{e.message}" + raise e if self.site.config["strict_front_matter"] + rescue StandardError => e + Jekyll.logger.warn "Error reading file #{filename}: #{e.message}" + raise e if self.site.config["strict_front_matter"] + end + + self.data ||= {} + + validate_data! filename + validate_permalink! filename + + self.data + end + # rubocop:enable Metrics/AbcSize + + def validate_data!(filename) + unless self.data.is_a?(Hash) + raise Errors::InvalidYAMLFrontMatterError, + "Invalid YAML front matter in #{filename}" + end + end + + def validate_permalink!(filename) + if self.data["permalink"] && self.data["permalink"].to_s.empty? + raise Errors::InvalidPermalinkError, "Invalid permalink in #{filename}" + end + end + + # Transform the contents based on the content type. + # + # Returns the transformed contents. + def transform + _renderer.convert(content) + end + + # Determine the extension depending on content_type. + # + # Returns the String extension for the output file. + # e.g. ".html" for an HTML output file. + def output_ext + _renderer.output_ext + end + + # Determine which converter to use based on this convertible's + # extension. + # + # Returns the Converter instance. + def converters + _renderer.converters + end + + # Render Liquid in the content + # + # content - the raw Liquid content to render + # payload - the payload for Liquid + # info - the info for Liquid + # + # Returns the converted content + def render_liquid(content, payload, info, path) + _renderer.render_liquid(content, payload, info, path) + end + + # Convert this Convertible's data to a Hash suitable for use by Liquid. + # + # Returns the Hash representation of this Convertible. + def to_liquid(attrs = nil) + further_data = Hash[(attrs || self.class::ATTRIBUTES_FOR_LIQUID).map do |attribute| + [attribute, send(attribute)] + end] + + defaults = site.frontmatter_defaults.all(relative_path, type) + Utils.deep_merge_hashes defaults, Utils.deep_merge_hashes(data, further_data) + end + + # The type of a document, + # i.e., its classname downcase'd and to_sym'd. + # + # Returns the type of self. + def type + if is_a?(Page) + :pages + end + end + + # returns the owner symbol for hook triggering + def hook_owner + if is_a?(Page) + :pages + end + end + + # Determine whether the document is an asset file. + # Asset files include CoffeeScript files and Sass/SCSS files. + # + # Returns true if the extname belongs to the set of extensions + # that asset files use. + def asset_file? + sass_file? || coffeescript_file? + end + + # Determine whether the document is a Sass file. + # + # Returns true if extname == .sass or .scss, false otherwise. + def sass_file? + %w(.sass .scss).include?(ext) + end + + # Determine whether the document is a CoffeeScript file. + # + # Returns true if extname == .coffee, false otherwise. + def coffeescript_file? + ext == ".coffee" + end + + # Determine whether the file should be rendered with Liquid. + # + # Returns true if the file has Liquid Tags or Variables, false otherwise. + def render_with_liquid? + Jekyll::Utils.has_liquid_construct?(content) + end + + # Determine whether the file should be placed into layouts. + # + # Returns false if the document is an asset file or if the front matter + # specifies `layout: none` + def place_in_layout? + !(asset_file? || no_layout?) + end + + # Checks if the layout specified in the document actually exists + # + # layout - the layout to check + # + # Returns true if the layout is invalid, false if otherwise + def invalid_layout?(layout) + !data["layout"].nil? && layout.nil? && !(self.is_a? Jekyll::Excerpt) + end + + # Recursively render layouts + # + # layouts - a list of the layouts + # payload - the payload for Liquid + # info - the info for Liquid + # + # Returns nothing + def render_all_layouts(layouts, payload, info) + _renderer.layouts = layouts + self.output = _renderer.place_in_layouts(output, payload, info) + ensure + @_renderer = nil # this will allow the modifications above to disappear + end + + # Add any necessary layouts to this convertible document. + # + # payload - The site payload Drop or Hash. + # layouts - A Hash of {"name" => "layout"}. + # + # Returns nothing. + def do_layout(payload, layouts) + self.output = _renderer.tap do |renderer| + renderer.layouts = layouts + renderer.payload = payload + end.run + + Jekyll.logger.debug "Post-Render Hooks:", self.relative_path + Jekyll::Hooks.trigger hook_owner, :post_render, self + ensure + @_renderer = nil # this will allow the modifications above to disappear + end + + # Write the generated page file to the destination directory. + # + # dest - The String path to the destination dir. + # + # Returns nothing. + def write(dest) + path = destination(dest) + FileUtils.mkdir_p(File.dirname(path)) + Jekyll.logger.debug "Writing:", path + File.write(path, output, :mode => "wb") + Jekyll::Hooks.trigger hook_owner, :post_write, self + end + + # Accessor for data properties by Liquid. + # + # property - The String name of the property to retrieve. + # + # Returns the String value or nil if the property isn't included. + def [](property) + if self.class::ATTRIBUTES_FOR_LIQUID.include?(property) + send(property) + else + data[property] + end + end + + private + + def _renderer + @_renderer ||= Jekyll::Renderer.new(site, self) + end + + def no_layout? + data["layout"] == "none" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/deprecator.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/deprecator.rb new file mode 100644 index 0000000000..327358c2d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/deprecator.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module Jekyll + module Deprecator + extend self + + def process(args) + arg_is_present? args, "--server", "The --server command has been replaced by the \ + 'serve' subcommand." + arg_is_present? args, "--serve", "The --serve command has been replaced by the \ + 'serve' subcommand." + arg_is_present? args, "--no-server", "To build Jekyll without launching a server, \ + use the 'build' subcommand." + arg_is_present? args, "--auto", "The switch '--auto' has been replaced with \ + '--watch'." + arg_is_present? args, "--no-auto", "To disable auto-replication, simply leave off \ + the '--watch' switch." + arg_is_present? args, "--pygments", "The 'pygments'settings has been removed in \ + favour of 'highlighter'." + arg_is_present? args, "--paginate", "The 'paginate' setting can only be set in \ + your config files." + arg_is_present? args, "--url", "The 'url' setting can only be set in your \ + config files." + no_subcommand(args) + end + + def no_subcommand(args) + unless args.empty? || + args.first !~ %r(!/^--/!) || %w(--help --version).include?(args.first) + deprecation_message "Jekyll now uses subcommands instead of just switches. \ + Run `jekyll help` to find out more." + abort + end + end + + def arg_is_present?(args, deprecated_argument, message) + if args.include?(deprecated_argument) + deprecation_message(message) + end + end + + def deprecation_message(message) + Jekyll.logger.warn "Deprecation:", message + end + + def defaults_deprecate_type(old, current) + Jekyll.logger.warn "Defaults:", "The '#{old}' type has become '#{current}'." + Jekyll.logger.warn "Defaults:", "Please update your front-matter defaults to use \ + 'type: #{current}'." + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/document.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/document.rb new file mode 100644 index 0000000000..061839f13b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/document.rb @@ -0,0 +1,508 @@ +# frozen_string_literal: true + +module Jekyll + class Document + include Comparable + extend Forwardable + + attr_reader :path, :site, :extname, :collection + attr_accessor :content, :output + + def_delegator :self, :read_post_data, :post_read + + YAML_FRONT_MATTER_REGEXP = %r!\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)!m + DATELESS_FILENAME_MATCHER = %r!^(?:.+/)*(.*)(\.[^.]+)$! + DATE_FILENAME_MATCHER = %r!^(?:.+/)*(\d{2,4}-\d{1,2}-\d{1,2})-(.*)(\.[^.]+)$! + + # Create a new Document. + # + # path - the path to the file + # relations - a hash with keys :site and :collection, the values of which + # are the Jekyll::Site and Jekyll::Collection to which this + # Document belong. + # + # Returns nothing. + def initialize(path, relations = {}) + @site = relations[:site] + @path = path + @extname = File.extname(path) + @collection = relations[:collection] + @has_yaml_header = nil + + if draft? + categories_from_path("_drafts") + else + categories_from_path(collection.relative_directory) + end + + data.default_proc = proc do |_, key| + site.frontmatter_defaults.find(relative_path, collection.label, key) + end + + trigger_hooks(:post_init) + end + + # Fetch the Document's data. + # + # Returns a Hash containing the data. An empty hash is returned if + # no data was read. + def data + @data ||= {} + end + + # Merge some data in with this document's data. + # + # Returns the merged data. + def merge_data!(other, source: "YAML front matter") + merge_categories!(other) + Utils.deep_merge_hashes!(data, other) + merge_date!(source) + data + end + + def date + data["date"] ||= (draft? ? source_file_mtime : site.time) + end + + def source_file_mtime + @source_file_mtime ||= File.mtime(path) + end + + # Returns whether the document is a draft. This is only the case if + # the document is in the 'posts' collection but in a different + # directory than '_posts'. + # + # Returns whether the document is a draft. + def draft? + data["draft"] ||= relative_path.index(collection.relative_directory).nil? && + collection.label == "posts" + end + + # The path to the document, relative to the collections_dir. + # + # Returns a String path which represents the relative path from the collections_dir + # to this document. + def relative_path + @relative_path ||= path.sub("#{site.collections_path}/", "") + end + + # The output extension of the document. + # + # Returns the output extension + def output_ext + @output_ext ||= Jekyll::Renderer.new(site, self).output_ext + end + + # The base filename of the document, without the file extname. + # + # Returns the basename without the file extname. + def basename_without_ext + @basename_without_ext ||= File.basename(path, ".*") + end + + # The base filename of the document. + # + # Returns the base filename of the document. + def basename + @basename ||= File.basename(path) + end + + # Produces a "cleaned" relative path. + # The "cleaned" relative path is the relative path without the extname + # and with the collection's directory removed as well. + # This method is useful when building the URL of the document. + # + # Examples: + # When relative_path is "_methods/site/generate.md": + # cleaned_relative_path + # # => "/site/generate" + # + # Returns the cleaned relative path of the document. + def cleaned_relative_path + @cleaned_relative_path ||= + relative_path[0..-extname.length - 1].sub(collection.relative_directory, "") + end + + # Determine whether the document is a YAML file. + # + # Returns true if the extname is either .yml or .yaml, false otherwise. + def yaml_file? + %w(.yaml .yml).include?(extname) + end + + # Determine whether the document is an asset file. + # Asset files include CoffeeScript files and Sass/SCSS files. + # + # Returns true if the extname belongs to the set of extensions + # that asset files use. + def asset_file? + sass_file? || coffeescript_file? + end + + # Determine whether the document is a Sass file. + # + # Returns true if extname == .sass or .scss, false otherwise. + def sass_file? + %w(.sass .scss).include?(extname) + end + + # Determine whether the document is a CoffeeScript file. + # + # Returns true if extname == .coffee, false otherwise. + def coffeescript_file? + extname == ".coffee" + end + + # Determine whether the file should be rendered with Liquid. + # + # Returns false if the document is either an asset file or a yaml file, + # or if the document doesn't contain any Liquid Tags or Variables, + # true otherwise. + def render_with_liquid? + !(coffeescript_file? || yaml_file? || !Utils.has_liquid_construct?(content)) + end + + # Determine whether the file should be rendered with a layout. + # + # Returns true if the Front Matter specifies that `layout` is set to `none`. + def no_layout? + data["layout"] == "none" + end + + # Determine whether the file should be placed into layouts. + # + # Returns false if the document is set to `layouts: none`, or is either an + # asset file or a yaml file. Returns true otherwise. + def place_in_layout? + !(asset_file? || yaml_file? || no_layout?) + end + + # The URL template where the document would be accessible. + # + # Returns the URL template for the document. + def url_template + collection.url_template + end + + # Construct a Hash of key-value pairs which contain a mapping between + # a key in the URL template and the corresponding value for this document. + # + # Returns the Hash of key-value pairs for replacement in the URL. + def url_placeholders + @url_placeholders ||= Drops::UrlDrop.new(self) + end + + # The permalink for this Document. + # Permalink is set via the data Hash. + # + # Returns the permalink or nil if no permalink was set in the data. + def permalink + data && data.is_a?(Hash) && data["permalink"] + end + + # The computed URL for the document. See `Jekyll::URL#to_s` for more details. + # + # Returns the computed URL for the document. + def url + @url ||= URL.new({ + :template => url_template, + :placeholders => url_placeholders, + :permalink => permalink, + }).to_s + end + + def [](key) + data[key] + end + + # The full path to the output file. + # + # base_directory - the base path of the output directory + # + # Returns the full path to the output file of this document. + def destination(base_directory) + dest = site.in_dest_dir(base_directory) + path = site.in_dest_dir(dest, URL.unescape_path(url)) + if url.end_with? "/" + path = File.join(path, "index.html") + else + path << output_ext unless path.end_with? output_ext + end + path + end + + # Write the generated Document file to the destination directory. + # + # dest - The String path to the destination dir. + # + # Returns nothing. + def write(dest) + path = destination(dest) + FileUtils.mkdir_p(File.dirname(path)) + Jekyll.logger.debug "Writing:", path + File.write(path, output, :mode => "wb") + + trigger_hooks(:post_write) + end + + # Whether the file is published or not, as indicated in YAML front-matter + # + # Returns 'false' if the 'published' key is specified in the + # YAML front-matter and is 'false'. Otherwise returns 'true'. + def published? + !(data.key?("published") && data["published"] == false) + end + + # Read in the file and assign the content and data based on the file contents. + # Merge the frontmatter of the file with the frontmatter default + # values + # + # Returns nothing. + def read(opts = {}) + Jekyll.logger.debug "Reading:", relative_path + + if yaml_file? + @data = SafeYAML.load_file(path) + else + begin + merge_defaults + read_content(opts) + read_post_data + rescue StandardError => e + handle_read_error(e) + end + end + end + + # Create a Liquid-understandable version of this Document. + # + # Returns a Hash representing this Document's data. + def to_liquid + @to_liquid ||= Drops::DocumentDrop.new(self) + end + + # The inspect string for this document. + # Includes the relative path and the collection label. + # + # Returns the inspect string for this document. + def inspect + "#" + end + + # The string representation for this document. + # + # Returns the content of the document + def to_s + output || content || "NO CONTENT" + end + + # Compare this document against another document. + # Comparison is a comparison between the 2 paths of the documents. + # + # Returns -1, 0, +1 or nil depending on whether this doc's path is less than, + # equal or greater than the other doc's path. See String#<=> for more details. + def <=>(other) + return nil unless other.respond_to?(:data) + cmp = data["date"] <=> other.data["date"] + cmp = path <=> other.path if cmp.nil? || cmp.zero? + cmp + end + + # Determine whether this document should be written. + # Based on the Collection to which it belongs. + # + # True if the document has a collection and if that collection's #write? + # method returns true, and if the site's Publisher will publish the document. + # False otherwise. + def write? + collection && collection.write? && site.publisher.publish?(self) + end + + # The Document excerpt_separator, from the YAML Front-Matter or site + # default excerpt_separator value + # + # Returns the document excerpt_separator + def excerpt_separator + (data["excerpt_separator"] || site.config["excerpt_separator"]).to_s + end + + # Whether to generate an excerpt + # + # Returns true if the excerpt separator is configured. + def generate_excerpt? + !excerpt_separator.empty? + end + + def next_doc + pos = collection.docs.index { |post| post.equal?(self) } + if pos && pos < collection.docs.length - 1 + collection.docs[pos + 1] + end + end + + def previous_doc + pos = collection.docs.index { |post| post.equal?(self) } + if pos && pos > 0 + collection.docs[pos - 1] + end + end + + def trigger_hooks(hook_name, *args) + Jekyll::Hooks.trigger collection.label.to_sym, hook_name, self, *args if collection + Jekyll::Hooks.trigger :documents, hook_name, self, *args + end + + def id + @id ||= File.join(File.dirname(url), (data["slug"] || basename_without_ext).to_s) + end + + # Calculate related posts. + # + # Returns an Array of related Posts. + def related_posts + @related_posts ||= Jekyll::RelatedPosts.new(self).build + end + + # Override of normal respond_to? to match method_missing's logic for + # looking in @data. + def respond_to?(method, include_private = false) + data.key?(method.to_s) || super + end + + # Override of method_missing to check in @data for the key. + def method_missing(method, *args, &blck) + if data.key?(method.to_s) + Jekyll::Deprecator.deprecation_message "Document##{method} is now a key "\ + "in the #data hash." + Jekyll::Deprecator.deprecation_message "Called by #{caller(0..0)}." + data[method.to_s] + else + super + end + end + + def respond_to_missing?(method, *) + data.key?(method.to_s) || super + end + + # Add superdirectories of the special_dir to categories. + # In the case of es/_posts, 'es' is added as a category. + # In the case of _posts/es, 'es' is NOT added as a category. + # + # Returns nothing. + def categories_from_path(special_dir) + superdirs = relative_path.sub(%r!#{special_dir}(.*)!, "") + .split(File::SEPARATOR) + .reject do |c| + c.empty? || c == special_dir || c == basename + end + merge_data!({ "categories" => superdirs }, :source => "file path") + end + + def populate_categories + merge_data!({ + "categories" => ( + Array(data["categories"]) + Utils.pluralized_array_from_hash( + data, "category", "categories" + ) + ).map(&:to_s).flatten.uniq, + }) + end + + def populate_tags + merge_data!({ + "tags" => Utils.pluralized_array_from_hash(data, "tag", "tags").flatten, + }) + end + + private + def merge_categories!(other) + if other.key?("categories") && !other["categories"].nil? + if other["categories"].is_a?(String) + other["categories"] = other["categories"].split + end + other["categories"] = (data["categories"] || []) | other["categories"] + end + end + + private + def merge_date!(source) + if data.key?("date") + data["date"] = Utils.parse_date( + data["date"].to_s, + "Document '#{relative_path}' does not have a valid date in the #{source}." + ) + end + end + + private + def merge_defaults + defaults = @site.frontmatter_defaults.all( + relative_path, + collection.label.to_sym + ) + merge_data!(defaults, :source => "front matter defaults") unless defaults.empty? + end + + private + def read_content(opts) + self.content = File.read(path, Utils.merged_file_read_opts(site, opts)) + if content =~ YAML_FRONT_MATTER_REGEXP + self.content = $POSTMATCH + data_file = SafeYAML.load(Regexp.last_match(1)) + merge_data!(data_file, :source => "YAML front matter") if data_file + end + end + + private + def read_post_data + populate_title + populate_categories + populate_tags + generate_excerpt + end + + private + def handle_read_error(error) + if error.is_a? Psych::SyntaxError + Jekyll.logger.error "Error:", "YAML Exception reading #{path}: #{error.message}" + else + Jekyll.logger.error "Error:", "could not read file #{path}: #{error.message}" + end + + if site.config["strict_front_matter"] || error.is_a?(Jekyll::Errors::FatalException) + raise error + end + end + + private + def populate_title + if relative_path =~ DATE_FILENAME_MATCHER + date, slug, ext = Regexp.last_match.captures + modify_date(date) + elsif relative_path =~ DATELESS_FILENAME_MATCHER + slug, ext = Regexp.last_match.captures + end + + # Try to ensure the user gets a title. + data["title"] ||= Utils.titleize_slug(slug) + # Only overwrite slug & ext if they aren't specified. + data["slug"] ||= slug + data["ext"] ||= ext + end + + private + def modify_date(date) + if !data["date"] || data["date"].to_i == site.time.to_i + merge_data!({ "date" => date }, :source => "filename") + end + end + + private + def generate_excerpt + if generate_excerpt? + data["excerpt"] ||= Jekyll::Excerpt.new(self) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/collection_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/collection_drop.rb new file mode 100644 index 0000000000..858a721a6f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/collection_drop.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class CollectionDrop < Drop + extend Forwardable + + mutable false + + def_delegator :@obj, :write?, :output + def_delegators :@obj, :label, :docs, :files, :directory, + :relative_directory + + private def_delegator :@obj, :metadata, :fallback_data + + def to_s + docs.to_s + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb new file mode 100644 index 0000000000..9c19ec911a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class DocumentDrop < Drop + extend Forwardable + + NESTED_OBJECT_FIELD_BLACKLIST = %w( + content output excerpt next previous + ).freeze + + mutable false + + def_delegator :@obj, :relative_path, :path + def_delegators :@obj, :id, :output, :content, :to_s, :relative_path, :url + + private def_delegator :@obj, :data, :fallback_data + + def collection + @obj.collection.label + end + + def excerpt + fallback_data["excerpt"].to_s + end + + def <=>(other) + return nil unless other.is_a? DocumentDrop + cmp = self["date"] <=> other["date"] + cmp = self["path"] <=> other["path"] if cmp.nil? || cmp.zero? + cmp + end + + def previous + @obj.previous_doc.to_liquid + end + + def next + @obj.next_doc.to_liquid + end + + # Generate a Hash for use in generating JSON. + # This is useful if fields need to be cleared before the JSON can generate. + # + # state - the JSON::State object which determines the state of current processing. + # + # Returns a Hash ready for JSON generation. + def hash_for_json(state = nil) + to_h.tap do |hash| + if state && state.depth >= 2 + hash["previous"] = collapse_document(hash["previous"]) if hash["previous"] + hash["next"] = collapse_document(hash["next"]) if hash["next"] + end + end + end + + # Generate a Hash which breaks the recursive chain. + # Certain fields which are normally available are omitted. + # + # Returns a Hash with only non-recursive fields present. + def collapse_document(doc) + doc.keys.each_with_object({}) do |(key, _), result| + result[key] = doc[key] unless NESTED_OBJECT_FIELD_BLACKLIST.include?(key) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb new file mode 100644 index 0000000000..be842737b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb @@ -0,0 +1,212 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class Drop < Liquid::Drop + include Enumerable + + NON_CONTENT_METHODS = [:fallback_data, :collapse_document].freeze + + # Get or set whether the drop class is mutable. + # Mutability determines whether or not pre-defined fields may be + # overwritten. + # + # is_mutable - Boolean set mutability of the class (default: nil) + # + # Returns the mutability of the class + def self.mutable(is_mutable = nil) + @is_mutable = if is_mutable + is_mutable + else + false + end + end + + def self.mutable? + @is_mutable + end + + # Create a new Drop + # + # obj - the Jekyll Site, Collection, or Document required by the + # drop. + # + # Returns nothing + def initialize(obj) + @obj = obj + @mutations = {} # only if mutable: true + end + + # Access a method in the Drop or a field in the underlying hash data. + # If mutable, checks the mutations first. Then checks the methods, + # and finally check the underlying hash (e.g. document front matter) + # if all the previous places didn't match. + # + # key - the string key whose value to fetch + # + # Returns the value for the given key, or nil if none exists + def [](key) + if self.class.mutable? && @mutations.key?(key) + @mutations[key] + elsif self.class.invokable? key + public_send key + else + fallback_data[key] + end + end + alias_method :invoke_drop, :[] + + # Set a field in the Drop. If mutable, sets in the mutations and + # returns. If not mutable, checks first if it's trying to override a + # Drop method and raises a DropMutationException if so. If not + # mutable and the key is not a method on the Drop, then it sets the + # key to the value in the underlying hash (e.g. document front + # matter) + # + # key - the String key whose value to set + # val - the Object to set the key's value to + # + # Returns the value the key was set to unless the Drop is not mutable + # and the key matches a method in which case it raises a + # DropMutationException. + def []=(key, val) + if respond_to?("#{key}=") + public_send("#{key}=", val) + elsif respond_to?(key.to_s) + if self.class.mutable? + @mutations[key] = val + else + raise Errors::DropMutationException, "Key #{key} cannot be set in the drop." + end + else + fallback_data[key] = val + end + end + + # Generates a list of strings which correspond to content getter + # methods. + # + # Returns an Array of strings which represent method-specific keys. + def content_methods + @content_methods ||= ( + self.class.instance_methods \ + - Jekyll::Drops::Drop.instance_methods \ + - NON_CONTENT_METHODS + ).map(&:to_s).reject do |method| + method.end_with?("=") + end + end + + # Check if key exists in Drop + # + # key - the string key whose value to fetch + # + # Returns true if the given key is present + def key?(key) + return false if key.nil? + return true if self.class.mutable? && @mutations.key?(key) + respond_to?(key) || fallback_data.key?(key) + end + + # Generates a list of keys with user content as their values. + # This gathers up the Drop methods and keys of the mutations and + # underlying data hashes and performs a set union to ensure a list + # of unique keys for the Drop. + # + # Returns an Array of unique keys for content for the Drop. + def keys + (content_methods | + @mutations.keys | + fallback_data.keys).flatten + end + + # Generate a Hash representation of the Drop by resolving each key's + # value. It includes Drop methods, mutations, and the underlying object's + # data. See the documentation for Drop#keys for more. + # + # Returns a Hash with all the keys and values resolved. + def to_h + keys.each_with_object({}) do |(key, _), result| + result[key] = self[key] + end + end + alias_method :to_hash, :to_h + + # Inspect the drop's keys and values through a JSON representation + # of its keys and values. + # + # Returns a pretty generation of the hash representation of the Drop. + def inspect + JSON.pretty_generate to_h + end + + # Generate a Hash for use in generating JSON. + # This is useful if fields need to be cleared before the JSON can generate. + # + # Returns a Hash ready for JSON generation. + def hash_for_json(*) + to_h + end + + # Generate a JSON representation of the Drop. + # + # state - the JSON::State object which determines the state of current processing. + # + # Returns a JSON representation of the Drop in a String. + def to_json(state = nil) + JSON.generate(hash_for_json(state), state) + end + + # Collects all the keys and passes each to the block in turn. + # + # block - a block which accepts one argument, the key + # + # Returns nothing. + def each_key(&block) + keys.each(&block) + end + + def each + each_key.each do |key| + yield key, self[key] + end + end + + def merge(other, &block) + self.dup.tap do |me| + if block.nil? + me.merge!(other) + else + me.merge!(other, block) + end + end + end + + def merge!(other) + other.each_key do |key| + if block_given? + self[key] = yield key, self[key], other[key] + else + if Utils.mergable?(self[key]) && Utils.mergable?(other[key]) + self[key] = Utils.deep_merge_hashes(self[key], other[key]) + next + end + + self[key] = other[key] unless other[key].nil? + end + end + end + + # Imitate Hash.fetch method in Drop + # + # Returns value if key is present in Drop, otherwise returns default value + # KeyError is raised if key is not present and no default value given + def fetch(key, default = nil, &block) + return self[key] if key?(key) + raise KeyError, %(key not found: "#{key}") if default.nil? && block.nil? + return yield(key) unless block.nil? + return default unless default.nil? + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/excerpt_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/excerpt_drop.rb new file mode 100644 index 0000000000..0362d9304e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/excerpt_drop.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class ExcerptDrop < DocumentDrop + def layout + @obj.doc.data["layout"] + end + + def excerpt + nil + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/jekyll_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/jekyll_drop.rb new file mode 100644 index 0000000000..63187cc4dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/jekyll_drop.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class JekyllDrop < Liquid::Drop + class << self + def global + @global ||= JekyllDrop.new + end + end + + def version + Jekyll::VERSION + end + + def environment + Jekyll.env + end + + def to_h + @to_h ||= { + "version" => version, + "environment" => environment, + } + end + + def to_json(state = nil) + JSON.generate(to_h, state) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/site_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/site_drop.rb new file mode 100644 index 0000000000..1cb636d882 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/site_drop.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class SiteDrop < Drop + extend Forwardable + + mutable false + + def_delegator :@obj, :site_data, :data + def_delegators :@obj, :time, :pages, :static_files, :documents, + :tags, :categories + + private def_delegator :@obj, :config, :fallback_data + + def [](key) + if @obj.collections.key?(key) && key != "posts" + @obj.collections[key].docs + else + super(key) + end + end + + def key?(key) + (@obj.collections.key?(key) && key != "posts") || super + end + + def posts + @site_posts ||= @obj.posts.docs.sort { |a, b| b <=> a } + end + + def html_pages + @site_html_pages ||= @obj.pages.select do |page| + page.html? || page.url.end_with?("/") + end + end + + def collections + @site_collections ||= @obj.collections.values.sort_by(&:label).map(&:to_liquid) + end + + # `{{ site.related_posts }}` is how posts can get posts related to + # them, either through LSI if it's enabled, or through the most + # recent posts. + # We should remove this in 4.0 and switch to `{{ post.related_posts }}`. + def related_posts + return nil unless @current_document.is_a?(Jekyll::Document) + @current_document.related_posts + end + attr_writer :current_document + + # return nil for `{{ site.config }}` even if --config was passed via CLI + def config; end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/static_file_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/static_file_drop.rb new file mode 100644 index 0000000000..e76566b054 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/static_file_drop.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class StaticFileDrop < Drop + extend Forwardable + def_delegators :@obj, :name, :extname, :modified_time, :basename + def_delegator :@obj, :relative_path, :path + def_delegator :@obj, :type, :collection + + private def_delegator :@obj, :data, :fallback_data + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/unified_payload_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/unified_payload_drop.rb new file mode 100644 index 0000000000..52647f98bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/unified_payload_drop.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class UnifiedPayloadDrop < Drop + mutable true + + attr_accessor :page, :layout, :content, :paginator + attr_accessor :highlighter_prefix, :highlighter_suffix + + def jekyll + JekyllDrop.global + end + + def site + @site_drop ||= SiteDrop.new(@obj) + end + + private + def fallback_data + @fallback_data ||= {} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/url_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/url_drop.rb new file mode 100644 index 0000000000..0571558bf4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/url_drop.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +module Jekyll + module Drops + class UrlDrop < Drop + extend Forwardable + + mutable false + + def_delegator :@obj, :cleaned_relative_path, :path + def_delegator :@obj, :output_ext, :output_ext + + def collection + @obj.collection.label + end + + def name + Utils.slugify(@obj.basename_without_ext) + end + + def title + Utils.slugify(@obj.data["slug"], :mode => "pretty", :cased => true) || + Utils.slugify(@obj.basename_without_ext, :mode => "pretty", :cased => true) + end + + def slug + Utils.slugify(@obj.data["slug"]) || Utils.slugify(@obj.basename_without_ext) + end + + def categories + category_set = Set.new + Array(@obj.data["categories"]).each do |category| + category_set << category.to_s.downcase + end + category_set.to_a.join("/") + end + + def year + @obj.date.strftime("%Y") + end + + def month + @obj.date.strftime("%m") + end + + def day + @obj.date.strftime("%d") + end + + def hour + @obj.date.strftime("%H") + end + + def minute + @obj.date.strftime("%M") + end + + def second + @obj.date.strftime("%S") + end + + def i_day + @obj.date.strftime("%-d") + end + + def i_month + @obj.date.strftime("%-m") + end + + def short_month + @obj.date.strftime("%b") + end + + def short_year + @obj.date.strftime("%y") + end + + def y_day + @obj.date.strftime("%j") + end + + private + def fallback_data + {} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/entry_filter.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/entry_filter.rb new file mode 100644 index 0000000000..91d7961c94 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/entry_filter.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +module Jekyll + class EntryFilter + attr_reader :site + SPECIAL_LEADING_CHARACTERS = [ + ".", "_", "#", "~", + ].freeze + + def initialize(site, base_directory = nil) + @site = site + @base_directory = derive_base_directory( + @site, base_directory.to_s.dup + ) + end + + def base_directory + @base_directory.to_s + end + + def derive_base_directory(site, base_dir) + base_dir[site.source] = "" if base_dir.start_with?(site.source) + base_dir + end + + def relative_to_source(entry) + File.join( + base_directory, entry + ) + end + + def filter(entries) + entries.reject do |e| + # Reject this entry if it is a symlink. + next true if symlink?(e) + # Do not reject this entry if it is included. + next false if included?(e) + # Reject this entry if it is special, a backup file, or excluded. + special?(e) || backup?(e) || excluded?(e) + end + end + + def included?(entry) + glob_include?(site.include, entry) || + glob_include?(site.include, File.basename(entry)) + end + + def special?(entry) + SPECIAL_LEADING_CHARACTERS.include?(entry[0..0]) || + SPECIAL_LEADING_CHARACTERS.include?(File.basename(entry)[0..0]) + end + + def backup?(entry) + entry[-1..-1] == "~" + end + + def excluded?(entry) + glob_include?(site.exclude, relative_to_source(entry)).tap do |excluded| + if excluded + Jekyll.logger.debug( + "EntryFilter:", + "excluded #{relative_to_source(entry)}" + ) + end + end + end + + # -- + # Check if a file is a symlink. + # NOTE: This can be converted to allowing even in safe, + # since we use Pathutil#in_path? now. + # -- + def symlink?(entry) + site.safe && File.symlink?(entry) && symlink_outside_site_source?(entry) + end + + # -- + # NOTE: Pathutil#in_path? gets the realpath. + # @param [] entry the entry you want to validate. + # Check if a path is outside of our given root. + # -- + def symlink_outside_site_source?(entry) + !Pathutil.new(entry).in_path?( + site.in_source_dir + ) + end + + # -- + # Check if an entry matches a specific pattern and return true,false. + # Returns true if path matches against any glob pattern. + # -- + def glob_include?(enum, entry) + entry_path = Pathutil.new(site.in_source_dir).join(entry) + enum.any? do |exp| + # Users who send a Regexp knows what they want to + # exclude, so let them send a Regexp to exclude files, + # we will not bother caring if it works or not, it's + # on them at this point. + + if exp.is_a?(Regexp) + entry_path =~ exp + + else + item = Pathutil.new(site.in_source_dir).join(exp) + + # If it's a directory they want to exclude, AKA + # ends with a "/" then we will go on to check and + # see if the entry falls within that path and + # exclude it if that's the case. + + if entry.end_with?("/") + entry_path.in_path?( + item + ) + + else + File.fnmatch?(item, entry_path) || + entry_path.to_path.start_with?( + item + ) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/errors.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/errors.rb new file mode 100644 index 0000000000..8d659e8d28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/errors.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Jekyll + module Errors + FatalException = Class.new(::RuntimeError) + + InvalidThemeName = Class.new(FatalException) + + DropMutationException = Class.new(FatalException) + InvalidPermalinkError = Class.new(FatalException) + InvalidYAMLFrontMatterError = Class.new(FatalException) + MissingDependencyException = Class.new(FatalException) + + InvalidDateError = Class.new(FatalException) + InvalidPostNameError = Class.new(FatalException) + PostURLError = Class.new(FatalException) + InvalidURLError = Class.new(FatalException) + InvalidConfigurationError = Class.new(FatalException) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb new file mode 100644 index 0000000000..202c9bb3d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/excerpt.rb @@ -0,0 +1,190 @@ +# frozen_string_literal: true + +module Jekyll + class Excerpt + extend Forwardable + + attr_accessor :doc + attr_accessor :content, :ext + attr_writer :output + + def_delegators :@doc, :site, :name, :ext, :extname, + :collection, :related_posts, + :coffeescript_file?, :yaml_file?, + :url, :next_doc, :previous_doc + + private :coffeescript_file?, :yaml_file? + + # Initialize this Excerpt instance. + # + # doc - The Document. + # + # Returns the new Excerpt. + def initialize(doc) + self.doc = doc + self.content = extract_excerpt(doc.content) + end + + # Fetch YAML front-matter data from related doc, without layout key + # + # Returns Hash of doc data + def data + @data ||= doc.data.dup + @data.delete("layout") + @data.delete("excerpt") + @data + end + + def trigger_hooks(*); end + + # 'Path' of the excerpt. + # + # Returns the path for the doc this excerpt belongs to with #excerpt appended + def path + File.join(doc.path, "#excerpt") + end + + # 'Relative Path' of the excerpt. + # + # Returns the relative_path for the doc this excerpt belongs to with #excerpt appended + def relative_path + File.join(doc.relative_path, "#excerpt") + end + + # Check if excerpt includes a string + # + # Returns true if the string passed in + def include?(something) + (output && output.include?(something)) || content.include?(something) + end + + # The UID for this doc (useful in feeds). + # e.g. /2008/11/05/my-awesome-doc + # + # Returns the String UID. + def id + "#{doc.id}#excerpt" + end + + def to_s + output || content + end + + def to_liquid + Jekyll::Drops::ExcerptDrop.new(self) + end + + # Returns the shorthand String identifier of this doc. + def inspect + "" + end + + def output + @output ||= Renderer.new(doc.site, self, site.site_payload).run + end + + def place_in_layout? + false + end + + def render_with_liquid? + !(coffeescript_file? || yaml_file? || !Utils.has_liquid_construct?(content)) + end + + protected + + # Internal: Extract excerpt from the content + # + # By default excerpt is your first paragraph of a doc: everything before + # the first two new lines: + # + # --- + # title: Example + # --- + # + # First paragraph with [link][1]. + # + # Second paragraph. + # + # [1]: http://example.com/ + # + # This is fairly good option for Markdown and Textile files. But might cause + # problems for HTML docs (which is quite unusual for Jekyll). If default + # excerpt delimiter is not good for you, you might want to set your own via + # configuration option `excerpt_separator`. For example, following is a good + # alternative for HTML docs: + # + # # file: _config.yml + # excerpt_separator: "" + # + # Notice that all markdown-style link references will be appended to the + # excerpt. So the example doc above will have this excerpt source: + # + # First paragraph with [link][1]. + # + # [1]: http://example.com/ + # + # Excerpts are rendered same time as content is rendered. + # + # Returns excerpt String + + LIQUID_TAG_REGEX = %r!{%-?\s*(\w+)\s*.*?-?%}!m + MKDWN_LINK_REF_REGEX = %r!^ {0,3}\[[^\]]+\]:.+$! + + def extract_excerpt(doc_content) + head, _, tail = doc_content.to_s.partition(doc.excerpt_separator) + + # append appropriate closing tag(s) (for each Liquid block), to the `head` + # if the partitioning resulted in leaving the closing tag somewhere + # in the `tail` partition. + + if head.include?("{%") + modified = false + tag_names = head.scan(LIQUID_TAG_REGEX) + tag_names.flatten! + tag_names.reverse_each do |tag_name| + next unless liquid_block?(tag_name) + next if head =~ endtag_regex_stash(tag_name) + + modified = true + head << "\n{% end#{tag_name} %}" + end + print_build_warning if modified + end + + return head if tail.empty? + + head << "\n\n" << tail.scan(MKDWN_LINK_REF_REGEX).join("\n") + end + + private + + def endtag_regex_stash(tag_name) + @endtag_regex_stash ||= {} + @endtag_regex_stash[tag_name] ||= %r!{%-?\s*end#{tag_name}.*?\s*-?%}!m + end + + def liquid_block?(tag_name) + return false unless tag_name.is_a?(String) + return false if tag_name.start_with?("end") + + Liquid::Template.tags[tag_name].ancestors.include?(Liquid::Block) + rescue NoMethodError + Jekyll.logger.error "Error:", + "A Liquid tag in the excerpt of #{doc.relative_path} couldn't be " \ + "parsed." + raise + end + + def print_build_warning + Jekyll.logger.warn "Warning:", "Excerpt modified in #{doc.relative_path}!" + Jekyll.logger.warn "", "Found a Liquid block containing the excerpt separator" \ + " #{doc.excerpt_separator.inspect}. " + Jekyll.logger.warn "", "The block has been modified with the appropriate" \ + " closing tag." + Jekyll.logger.warn "", "Feel free to define a custom excerpt or" \ + " excerpt_separator in the document's front matter" \ + " if the generated excerpt is unsatisfactory." + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/external.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/external.rb new file mode 100644 index 0000000000..0a65dfad05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/external.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +module Jekyll + module External + class << self + # + # Gems that, if installed, should be loaded. + # Usually contain subcommands. + # + def blessed_gems + %w( + jekyll-docs + jekyll-import + ) + end + + # + # Require a gem or file if it's present, otherwise silently fail. + # + # names - a string gem name or array of gem names + # + def require_if_present(names) + Array(names).each do |name| + begin + require name + rescue LoadError + Jekyll.logger.debug "Couldn't load #{name}. Skipping." + yield(name, version_constraint(name)) if block_given? + false + end + end + end + + # + # The version constraint required to activate a given gem. + # Usually the gem version requirement is "> 0," because any version + # will do. In the case of jekyll-docs, however, we require the exact + # same version as Jekyll. + # + # Returns a String version constraint in a parseable form for + # RubyGems. + def version_constraint(gem_name) + return "= #{Jekyll::VERSION}" if gem_name.to_s.eql?("jekyll-docs") + "> 0" + end + + # + # Require a gem or gems. If it's not present, show a very nice error + # message that explains everything and is much more helpful than the + # normal LoadError. + # + # names - a string gem name or array of gem names + # + def require_with_graceful_fail(names) + Array(names).each do |name| + begin + Jekyll.logger.debug "Requiring:", name.to_s + require name + rescue LoadError => e + Jekyll.logger.error "Dependency Error:", <<-MSG +Yikes! It looks like you don't have #{name} or one of its dependencies installed. +In order to use Jekyll as currently configured, you'll need to install this gem. + +The full error message from Ruby is: '#{e.message}' + +If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/! + MSG + raise Jekyll::Errors::MissingDependencyException, name + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters.rb new file mode 100644 index 0000000000..209a3e0e33 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters.rb @@ -0,0 +1,379 @@ +# frozen_string_literal: true + +require_all "jekyll/filters" + +module Jekyll + module Filters + include URLFilters + include GroupingFilters + include DateFilters + + # Convert a Markdown string into HTML output. + # + # input - The Markdown String to convert. + # + # Returns the HTML formatted String. + def markdownify(input) + @context.registers[:site].find_converter_instance( + Jekyll::Converters::Markdown + ).convert(input.to_s) + end + + # Convert quotes into smart quotes. + # + # input - The String to convert. + # + # Returns the smart-quotified String. + def smartify(input) + @context.registers[:site].find_converter_instance( + Jekyll::Converters::SmartyPants + ).convert(input.to_s) + end + + # Convert a Sass string into CSS output. + # + # input - The Sass String to convert. + # + # Returns the CSS formatted String. + def sassify(input) + @context.registers[:site].find_converter_instance( + Jekyll::Converters::Sass + ).convert(input) + end + + # Convert a Scss string into CSS output. + # + # input - The Scss String to convert. + # + # Returns the CSS formatted String. + def scssify(input) + @context.registers[:site].find_converter_instance( + Jekyll::Converters::Scss + ).convert(input) + end + + # Slugify a filename or title. + # + # input - The filename or title to slugify. + # mode - how string is slugified + # + # Returns the given filename or title as a lowercase URL String. + # See Utils.slugify for more detail. + def slugify(input, mode = nil) + Utils.slugify(input, :mode => mode) + end + + # XML escape a string for use. Replaces any special characters with + # appropriate HTML entity replacements. + # + # input - The String to escape. + # + # Examples + # + # xml_escape('foo "bar" ') + # # => "foo "bar" <baz>" + # + # Returns the escaped String. + def xml_escape(input) + input.to_s.encode(:xml => :attr).gsub(%r!\A"|"\Z!, "") + end + + # CGI escape a string for use in a URL. Replaces any special characters + # with appropriate %XX replacements. + # + # input - The String to escape. + # + # Examples + # + # cgi_escape('foo,bar;baz?') + # # => "foo%2Cbar%3Bbaz%3F" + # + # Returns the escaped String. + def cgi_escape(input) + CGI.escape(input) + end + + # URI escape a string. + # + # input - The String to escape. + # + # Examples + # + # uri_escape('foo, bar \\baz?') + # # => "foo,%20bar%20%5Cbaz?" + # + # Returns the escaped String. + def uri_escape(input) + Addressable::URI.normalize_component(input) + end + + # Replace any whitespace in the input string with a single space + # + # input - The String on which to operate. + # + # Returns the formatted String + def normalize_whitespace(input) + input.to_s.gsub(%r!\s+!, " ").strip + end + + # Count the number of words in the input string. + # + # input - The String on which to operate. + # + # Returns the Integer word count. + def number_of_words(input) + input.split.length + end + + # Join an array of things into a string by separating with commas and the + # word "and" for the last one. + # + # array - The Array of Strings to join. + # connector - Word used to connect the last 2 items in the array + # + # Examples + # + # array_to_sentence_string(["apples", "oranges", "grapes"]) + # # => "apples, oranges, and grapes" + # + # Returns the formatted String. + def array_to_sentence_string(array, connector = "and") + case array.length + when 0 + "" + when 1 + array[0].to_s + when 2 + "#{array[0]} #{connector} #{array[1]}" + else + "#{array[0...-1].join(", ")}, #{connector} #{array[-1]}" + end + end + + # Convert the input into json string + # + # input - The Array or Hash to be converted + # + # Returns the converted json string + def jsonify(input) + as_liquid(input).to_json + end + + # Filter an array of objects + # + # input - the object array + # property - property within each object to filter by + # value - desired value + # + # Returns the filtered array of objects + def where(input, property, value) + return input if property.nil? || value.nil? + return input unless input.respond_to?(:select) + input = input.values if input.is_a?(Hash) + input_id = input.hash + + # implement a hash based on method parameters to cache the end-result + # for given parameters. + @where_filter_cache ||= {} + @where_filter_cache[input_id] ||= {} + @where_filter_cache[input_id][property] ||= {} + + # stash or retrive results to return + @where_filter_cache[input_id][property][value] ||= begin + input.select do |object| + Array(item_property(object, property)).map!(&:to_s).include?(value.to_s) + end || [] + end + end + + # Filters an array of objects against an expression + # + # input - the object array + # variable - the variable to assign each item to in the expression + # expression - a Liquid comparison expression passed in as a string + # + # Returns the filtered array of objects + def where_exp(input, variable, expression) + return input unless input.respond_to?(:select) + input = input.values if input.is_a?(Hash) # FIXME + + condition = parse_condition(expression) + @context.stack do + input.select do |object| + @context[variable] = object + condition.evaluate(@context) + end + end || [] + end + + # Convert the input into integer + # + # input - the object string + # + # Returns the integer value + def to_integer(input) + return 1 if input == true + return 0 if input == false + input.to_i + end + + # Sort an array of objects + # + # input - the object array + # property - property within each object to filter by + # nils ('first' | 'last') - nils appear before or after non-nil values + # + # Returns the filtered array of objects + def sort(input, property = nil, nils = "first") + if input.nil? + raise ArgumentError, "Cannot sort a null object." + end + if property.nil? + input.sort + else + if nils == "first" + order = - 1 + elsif nils == "last" + order = + 1 + else + raise ArgumentError, "Invalid nils order: " \ + "'#{nils}' is not a valid nils order. It must be 'first' or 'last'." + end + + sort_input(input, property, order) + end + end + + def pop(array, num = 1) + return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) + new_ary = array.dup + new_ary.pop(num) + new_ary + end + + def push(array, input) + return array unless array.is_a?(Array) + new_ary = array.dup + new_ary.push(input) + new_ary + end + + def shift(array, num = 1) + return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) + new_ary = array.dup + new_ary.shift(num) + new_ary + end + + def unshift(array, input) + return array unless array.is_a?(Array) + new_ary = array.dup + new_ary.unshift(input) + new_ary + end + + def sample(input, num = 1) + return input unless input.respond_to?(:sample) + num = Liquid::Utils.to_integer(num) rescue 1 + if num == 1 + input.sample + else + input.sample(num) + end + end + + # Convert an object into its String representation for debugging + # + # input - The Object to be converted + # + # Returns a String representation of the object. + def inspect(input) + xml_escape(input.inspect) + end + + private + + # Sort the input Enumerable by the given property. + # If the property doesn't exist, return the sort order respective of + # which item doesn't have the property. + # We also utilize the Schwartzian transform to make this more efficient. + def sort_input(input, property, order) + input.map { |item| [item_property(item, property), item] } + .sort! do |apple_info, orange_info| + apple_property = apple_info.first + orange_property = orange_info.first + + if !apple_property.nil? && orange_property.nil? + - order + elsif apple_property.nil? && !orange_property.nil? + + order + else + apple_property <=> orange_property + end + end + .map!(&:last) + end + + private + def item_property(item, property) + if item.respond_to?(:to_liquid) + property.to_s.split(".").reduce(item.to_liquid) do |subvalue, attribute| + subvalue[attribute] + end + elsif item.respond_to?(:data) + item.data[property.to_s] + else + item[property.to_s] + end + end + + private + def as_liquid(item) + case item + when Hash + pairs = item.map { |k, v| as_liquid([k, v]) } + Hash[pairs] + when Array + item.map { |i| as_liquid(i) } + else + if item.respond_to?(:to_liquid) + liquidated = item.to_liquid + # prevent infinite recursion for simple types (which return `self`) + if liquidated == item + item + else + as_liquid(liquidated) + end + else + item + end + end + end + + # Parse a string to a Liquid Condition + private + def parse_condition(exp) + parser = Liquid::Parser.new(exp) + left_expr = parser.expression + operator = parser.consume?(:comparison) + condition = + if operator + Liquid::Condition.new(Liquid::Expression.parse(left_expr), + operator, + Liquid::Expression.parse(parser.expression)) + else + Liquid::Condition.new(Liquid::Expression.parse(left_expr)) + end + parser.consume(:end_of_string) + + condition + end + + end +end + +Liquid::Template.register_filter( + Jekyll::Filters +) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/date_filters.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/date_filters.rb new file mode 100644 index 0000000000..40028c88c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/date_filters.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +module Jekyll + module Filters + module DateFilters + # Format a date in short format e.g. "27 Jan 2011". + # Ordinal format is also supported, in both the UK + # (e.g. "27th Jan 2011") and US ("e.g. Jan 27th, 2011") formats. + # UK format is the default. + # + # date - the Time to format. + # type - if "ordinal" the returned String will be in ordinal format + # style - if "US" the returned String will be in US format. + # Otherwise it will be in UK format. + # + # Returns the formatting String. + def date_to_string(date, type = nil, style = nil) + stringify_date(date, "%b", type, style) + end + + # Format a date in long format e.g. "27 January 2011". + # Ordinal format is also supported, in both the UK + # (e.g. "27th January 2011") and US ("e.g. January 27th, 2011") formats. + # UK format is the default. + # + # date - the Time to format. + # type - if "ordinal" the returned String will be in ordinal format + # style - if "US" the returned String will be in US format. + # Otherwise it will be in UK format. + # + # Returns the formatted String. + def date_to_long_string(date, type = nil, style = nil) + stringify_date(date, "%B", type, style) + end + + # Format a date for use in XML. + # + # date - The Time to format. + # + # Examples + # + # date_to_xmlschema(Time.now) + # # => "2011-04-24T20:34:46+08:00" + # + # Returns the formatted String. + def date_to_xmlschema(date) + return date if date.to_s.empty? + time(date).xmlschema + end + + # Format a date according to RFC-822 + # + # date - The Time to format. + # + # Examples + # + # date_to_rfc822(Time.now) + # # => "Sun, 24 Apr 2011 12:34:46 +0000" + # + # Returns the formatted String. + def date_to_rfc822(date) + return date if date.to_s.empty? + time(date).rfc822 + end + + private + # month_type: Notations that evaluate to 'Month' via `Time#strftime` ("%b", "%B") + # type: nil (default) or "ordinal" + # style: nil (default) or "US" + # + # Returns a stringified date or the empty input. + def stringify_date(date, month_type, type = nil, style = nil) + return date if date.to_s.empty? + time = time(date) + if type == "ordinal" + day = time.day + ordinal_day = "#{day}#{ordinal(day)}" + return time.strftime("#{month_type} #{ordinal_day}, %Y") if style == "US" + return time.strftime("#{ordinal_day} #{month_type} %Y") + end + time.strftime("%d #{month_type} %Y") + end + + private + def ordinal(number) + return "th" if (11..13).cover?(number) + + case number % 10 + when 1 then "st" + when 2 then "nd" + when 3 then "rd" + else "th" + end + end + + private + def time(input) + date = Liquid::Utils.to_date(input) + unless date.respond_to?(:to_time) + raise Errors::InvalidDateError, + "Invalid Date: '#{input.inspect}' is not a valid datetime." + end + date.to_time.dup.localtime + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/grouping_filters.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/grouping_filters.rb new file mode 100644 index 0000000000..4086bbe985 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/grouping_filters.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +module Jekyll + module Filters + module GroupingFilters + # Group an array of items by a property + # + # input - the inputted Enumerable + # property - the property + # + # Returns an array of Hashes, each looking something like this: + # {"name" => "larry" + # "items" => [...] } # all the items where `property` == "larry" + def group_by(input, property) + if groupable?(input) + groups = input.group_by { |item| item_property(item, property).to_s } + grouped_array(groups) + else + input + end + end + + # Group an array of items by an expression + # + # input - the object array + # variable - the variable to assign each item to in the expression + # expression -a Liquid comparison expression passed in as a string + # + # Returns the filtered array of objects + def group_by_exp(input, variable, expression) + return input unless groupable?(input) + + parsed_expr = parse_expression(expression) + @context.stack do + groups = input.group_by do |item| + @context[variable] = item + parsed_expr.render(@context) + end + grouped_array(groups) + end + end + + private + def parse_expression(str) + Liquid::Variable.new(str, Liquid::ParseContext.new) + end + + private + def groupable?(element) + element.respond_to?(:group_by) + end + + private + def grouped_array(groups) + groups.each_with_object([]) do |item, array| + array << { + "name" => item.first, + "items" => item.last, + "size" => item.last.size, + } + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/url_filters.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/url_filters.rb new file mode 100644 index 0000000000..67abe137ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/filters/url_filters.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +module Jekyll + module Filters + module URLFilters + # Produces an absolute URL based on site.url and site.baseurl. + # + # input - the URL to make absolute. + # + # Returns the absolute URL as a String. + def absolute_url(input) + return if input.nil? + input = input.url if input.respond_to?(:url) + return input if Addressable::URI.parse(input.to_s).absolute? + site = @context.registers[:site] + return relative_url(input) if site.config["url"].nil? + Addressable::URI.parse( + site.config["url"].to_s + relative_url(input) + ).normalize.to_s + end + + # Produces a URL relative to the domain root based on site.baseurl + # unless it is already an absolute url with an authority (host). + # + # input - the URL to make relative to the domain root + # + # Returns a URL relative to the domain root as a String. + def relative_url(input) + return if input.nil? + input = input.url if input.respond_to?(:url) + return input if Addressable::URI.parse(input.to_s).absolute? + + parts = [sanitized_baseurl, input] + Addressable::URI.parse( + parts.compact.map { |part| ensure_leading_slash(part.to_s) }.join + ).normalize.to_s + end + + # Strips trailing `/index.html` from URLs to create pretty permalinks + # + # input - the URL with a possible `/index.html` + # + # Returns a URL with the trailing `/index.html` removed + def strip_index(input) + return if input.nil? || input.to_s.empty? + input.sub(%r!/index\.html?$!, "/") + end + + private + + def sanitized_baseurl + site = @context.registers[:site] + site.config["baseurl"].to_s.chomp("/") + end + + def ensure_leading_slash(input) + return input if input.nil? || input.empty? || input.start_with?("/") + "/#{input}" + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/frontmatter_defaults.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/frontmatter_defaults.rb new file mode 100644 index 0000000000..7d96b8cade --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/frontmatter_defaults.rb @@ -0,0 +1,229 @@ +# frozen_string_literal: true + +module Jekyll + # This class handles custom defaults for YAML frontmatter settings. + # These are set in _config.yml and apply both to internal use (e.g. layout) + # and the data available to liquid. + # + # It is exposed via the frontmatter_defaults method on the site class. + class FrontmatterDefaults + # Initializes a new instance. + def initialize(site) + @site = site + end + + def update_deprecated_types(set) + return set unless set.key?("scope") && set["scope"].key?("type") + + set["scope"]["type"] = + case set["scope"]["type"] + when "page" + Deprecator.defaults_deprecate_type("page", "pages") + "pages" + when "post" + Deprecator.defaults_deprecate_type("post", "posts") + "posts" + when "draft" + Deprecator.defaults_deprecate_type("draft", "drafts") + "drafts" + else + set["scope"]["type"] + end + + set + end + + def ensure_time!(set) + return set unless set.key?("values") && set["values"].key?("date") + return set if set["values"]["date"].is_a?(Time) + set["values"]["date"] = Utils.parse_date( + set["values"]["date"], + "An invalid date format was found in a front-matter default set: #{set}" + ) + set + end + + # Finds a default value for a given setting, filtered by path and type + # + # path - the path (relative to the source) of the page, + # post or :draft the default is used in + # type - a symbol indicating whether a :page, + # a :post or a :draft calls this method + # + # Returns the default value or nil if none was found + def find(path, type, setting) + value = nil + old_scope = nil + + matching_sets(path, type).each do |set| + if set["values"].key?(setting) && has_precedence?(old_scope, set["scope"]) + value = set["values"][setting] + old_scope = set["scope"] + end + end + value + end + + # Collects a hash with all default values for a page or post + # + # path - the relative path of the page or post + # type - a symbol indicating the type (:post, :page or :draft) + # + # Returns a hash with all default values (an empty hash if there are none) + def all(path, type) + defaults = {} + old_scope = nil + matching_sets(path, type).each do |set| + if has_precedence?(old_scope, set["scope"]) + defaults = Utils.deep_merge_hashes(defaults, set["values"]) + old_scope = set["scope"] + else + defaults = Utils.deep_merge_hashes(set["values"], defaults) + end + end + defaults + end + + private + + # Checks if a given default setting scope matches the given path and type + # + # scope - the hash indicating the scope, as defined in _config.yml + # path - the path to check for + # type - the type (:post, :page or :draft) to check for + # + # Returns true if the scope applies to the given path and type + def applies?(scope, path, type) + applies_path?(scope, path) && applies_type?(scope, type) + end + + # rubocop:disable Metrics/AbcSize + def applies_path?(scope, path) + return true if !scope.key?("path") || scope["path"].empty? + + sanitized_path = Pathname.new(sanitize_path(path)) + site_path = Pathname.new(@site.source) + rel_scope_path = Pathname.new(scope["path"]) + abs_scope_path = File.join(@site.source, rel_scope_path) + + if scope["path"].to_s.include?("*") + Dir.glob(abs_scope_path).each do |scope_path| + scope_path = Pathname.new(scope_path).relative_path_from(site_path) + scope_path = strip_collections_dir(scope_path) + Jekyll.logger.debug "Globbed Scope Path:", scope_path + return true if path_is_subpath?(sanitized_path, scope_path) + end + false + else + path_is_subpath?(sanitized_path, strip_collections_dir(rel_scope_path)) + end + end + # rubocop:enable Metrics/AbcSize + + def path_is_subpath?(path, parent_path) + path.ascend do |ascended_path| + if ascended_path.to_s == parent_path.to_s + return true + end + end + + false + end + + def strip_collections_dir(path) + collections_dir = @site.config["collections_dir"] + slashed_coll_dir = "#{collections_dir}/" + return path if collections_dir.empty? || !path.to_s.start_with?(slashed_coll_dir) + path.sub(slashed_coll_dir, "") + end + + # Determines whether the scope applies to type. + # The scope applies to the type if: + # 1. no 'type' is specified + # 2. the 'type' in the scope is the same as the type asked about + # + # scope - the Hash defaults set being asked about application + # type - the type of the document being processed / asked about + # its defaults. + # + # Returns true if either of the above conditions are satisfied, + # otherwise returns false + def applies_type?(scope, type) + !scope.key?("type") || scope["type"].eql?(type.to_s) + end + + # Checks if a given set of default values is valid + # + # set - the default value hash, as defined in _config.yml + # + # Returns true if the set is valid and can be used in this class + def valid?(set) + set.is_a?(Hash) && set["values"].is_a?(Hash) + end + + # Determines if a new scope has precedence over an old one + # + # old_scope - the old scope hash, or nil if there's none + # new_scope - the new scope hash + # + # Returns true if the new scope has precedence over the older + # rubocop: disable PredicateName + def has_precedence?(old_scope, new_scope) + return true if old_scope.nil? + + new_path = sanitize_path(new_scope["path"]) + old_path = sanitize_path(old_scope["path"]) + + if new_path.length != old_path.length + new_path.length >= old_path.length + elsif new_scope.key?("type") + true + else + !old_scope.key? "type" + end + end + # rubocop: enable PredicateName + + # Collects a list of sets that match the given path and type + # + # Returns an array of hashes + def matching_sets(path, type) + valid_sets.select do |set| + !set.key?("scope") || applies?(set["scope"], path, type) + end + end + + # Returns a list of valid sets + # + # This is not cached to allow plugins to modify the configuration + # and have their changes take effect + # + # Returns an array of hashes + def valid_sets + sets = @site.config["defaults"] + return [] unless sets.is_a?(Array) + + sets.map do |set| + if valid?(set) + ensure_time!(update_deprecated_types(set)) + else + Jekyll.logger.warn "Defaults:", "An invalid front-matter default set was found:" + Jekyll.logger.warn set.to_s + nil + end + end.compact + end + + # Sanitizes the given path by removing a leading and adding a trailing slash + + SANITIZATION_REGEX = %r!\A/|(?<=[^/])\z! + + def sanitize_path(path) + if path.nil? || path.empty? + "" + else + path.gsub(SANITIZATION_REGEX, "") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/generator.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/generator.rb new file mode 100644 index 0000000000..649715f840 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/generator.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module Jekyll + Generator = Class.new(Plugin) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/hooks.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/hooks.rb new file mode 100644 index 0000000000..64496b5311 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/hooks.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +module Jekyll + module Hooks + DEFAULT_PRIORITY = 20 + + # compatibility layer for octopress-hooks users + PRIORITY_MAP = { + :low => 10, + :normal => 20, + :high => 30, + }.freeze + + # initial empty hooks + @registry = { + :site => { + :after_init => [], + :after_reset => [], + :post_read => [], + :pre_render => [], + :post_render => [], + :post_write => [], + }, + :pages => { + :post_init => [], + :pre_render => [], + :post_render => [], + :post_write => [], + }, + :posts => { + :post_init => [], + :pre_render => [], + :post_render => [], + :post_write => [], + }, + :documents => { + :post_init => [], + :pre_render => [], + :post_render => [], + :post_write => [], + }, + :clean => { + :on_obsolete => [], + }, + } + + # map of all hooks and their priorities + @hook_priority = {} + + NotAvailable = Class.new(RuntimeError) + Uncallable = Class.new(RuntimeError) + + # register hook(s) to be called later, public API + def self.register(owners, event, priority: DEFAULT_PRIORITY, &block) + Array(owners).each do |owner| + register_one(owner, event, priority_value(priority), &block) + end + end + + # Ensure the priority is a Fixnum + def self.priority_value(priority) + return priority if priority.is_a?(Integer) + PRIORITY_MAP[priority] || DEFAULT_PRIORITY + end + + # register a single hook to be called later, internal API + def self.register_one(owner, event, priority, &block) + @registry[owner] ||= { + :post_init => [], + :pre_render => [], + :post_render => [], + :post_write => [], + } + + unless @registry[owner][event] + raise NotAvailable, "Invalid hook. #{owner} supports only the " \ + "following hooks #{@registry[owner].keys.inspect}" + end + + unless block.respond_to? :call + raise Uncallable, "Hooks must respond to :call" + end + + insert_hook owner, event, priority, &block + end + + def self.insert_hook(owner, event, priority, &block) + @hook_priority[block] = [-priority, @hook_priority.size] + @registry[owner][event] << block + end + + # interface for Jekyll core components to trigger hooks + def self.trigger(owner, event, *args) + # proceed only if there are hooks to call + return unless @registry[owner] + return unless @registry[owner][event] + + # hooks to call for this owner and event + hooks = @registry[owner][event] + + # sort and call hooks according to priority and load order + hooks.sort_by { |h| @hook_priority[h] }.each do |hook| + hook.call(*args) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/layout.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/layout.rb new file mode 100644 index 0000000000..f62fec08be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/layout.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +module Jekyll + class Layout + include Convertible + + # Gets the Site object. + attr_reader :site + + # Gets the name of this layout. + attr_reader :name + + # Gets the path to this layout. + attr_reader :path + + # Gets the path to this layout relative to its base + attr_reader :relative_path + + # Gets/Sets the extension of this layout. + attr_accessor :ext + + # Gets/Sets the Hash that holds the metadata for this layout. + attr_accessor :data + + # Gets/Sets the content of this layout. + attr_accessor :content + + # Initialize a new Layout. + # + # site - The Site. + # base - The String path to the source. + # name - The String filename of the post file. + def initialize(site, base, name) + @site = site + @base = base + @name = name + + if site.theme && site.theme.layouts_path.eql?(base) + @base_dir = site.theme.root + @path = site.in_theme_dir(base, name) + else + @base_dir = site.source + @path = site.in_source_dir(base, name) + end + @relative_path = @path.sub(@base_dir, "") + + self.data = {} + + process(name) + read_yaml(base, name) + end + + # Extract information from the layout filename. + # + # name - The String filename of the layout file. + # + # Returns nothing. + def process(name) + self.ext = File.extname(name) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_extensions.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_extensions.rb new file mode 100644 index 0000000000..4551ac19bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_extensions.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module Jekyll + module LiquidExtensions + + # Lookup a Liquid variable in the given context. + # + # context - the Liquid context in question. + # variable - the variable name, as a string. + # + # Returns the value of the variable in the context + # or the variable name if not found. + def lookup_variable(context, variable) + lookup = context + + variable.split(".").each do |value| + lookup = lookup[value] + end + + lookup || variable + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer.rb new file mode 100644 index 0000000000..55e4e0fb01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require_relative "liquid_renderer/file" +require_relative "liquid_renderer/table" + +module Jekyll + class LiquidRenderer + extend Forwardable + + private def_delegator :@site, :in_source_dir, :source_dir + private def_delegator :@site, :in_theme_dir, :theme_dir + + def initialize(site) + @site = site + Liquid::Template.error_mode = @site.config["liquid"]["error_mode"].to_sym + reset + end + + def reset + @stats = {} + end + + def file(filename) + filename.match(filename_regex) + filename = + if Regexp.last_match(1) == theme_dir("") + ::File.join(::File.basename(Regexp.last_match(1)), Regexp.last_match(2)) + else + Regexp.last_match(2) + end + LiquidRenderer::File.new(self, filename).tap do + @stats[filename] ||= new_profile_hash + @stats[filename][:count] += 1 + end + end + + def increment_bytes(filename, bytes) + @stats[filename][:bytes] += bytes + end + + def increment_time(filename, time) + @stats[filename][:time] += time + end + + def stats_table(num_of_rows = 50) + LiquidRenderer::Table.new(@stats).to_s(num_of_rows) + end + + def self.format_error(error, path) + "#{error.message} in #{path}" + end + + private + + def filename_regex + @filename_regex ||= %r!\A(#{source_dir}/|#{theme_dir}/|\W*)(.*)!i + end + + def new_profile_hash + Hash.new { |hash, key| hash[key] = 0 } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb new file mode 100644 index 0000000000..574bbd3130 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/file.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +module Jekyll + class LiquidRenderer + class File + def initialize(renderer, filename) + @renderer = renderer + @filename = filename + end + + def parse(content) + measure_time do + @template = Liquid::Template.parse(content, :line_numbers => true) + end + + self + end + + def render(*args) + measure_time do + measure_bytes do + @template.render(*args) + end + end + end + + def render!(*args) + measure_time do + measure_bytes do + @template.render!(*args) + end + end + end + + def warnings + @template.warnings + end + + private + + def measure_bytes + yield.tap do |str| + @renderer.increment_bytes(@filename, str.bytesize) + end + end + + def measure_time + before = Time.now + yield + ensure + after = Time.now + @renderer.increment_time(@filename, after - before) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/table.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/table.rb new file mode 100644 index 0000000000..b2d91fecd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/liquid_renderer/table.rb @@ -0,0 +1,96 @@ +# frozen_string_literal: true + +module Jekyll + class LiquidRenderer::Table + def initialize(stats) + @stats = stats + end + + def to_s(num_of_rows = 50) + data = data_for_table(num_of_rows) + widths = table_widths(data) + generate_table(data, widths) + end + + private + + def generate_table(data, widths) + str = String.new("\n") + + table_head = data.shift + str << generate_row(table_head, widths) + str << generate_table_head_border(table_head, widths) + + data.each do |row_data| + str << generate_row(row_data, widths) + end + + str << "\n" + str + end + + def generate_table_head_border(row_data, widths) + str = String.new("") + + row_data.each_index do |cell_index| + str << "-" * widths[cell_index] + str << "-+-" unless cell_index == row_data.length - 1 + end + + str << "\n" + str + end + + def generate_row(row_data, widths) + str = String.new("") + + row_data.each_with_index do |cell_data, cell_index| + str << if cell_index.zero? + cell_data.ljust(widths[cell_index], " ") + else + cell_data.rjust(widths[cell_index], " ") + end + + str << " | " unless cell_index == row_data.length - 1 + end + + str << "\n" + str + end + + def table_widths(data) + widths = [] + + data.each do |row| + row.each_with_index do |cell, index| + widths[index] = [cell.length, widths[index]].compact.max + end + end + + widths + end + + def data_for_table(num_of_rows) + sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] } + sorted = sorted.slice(0, num_of_rows) + + table = [%w(Filename Count Bytes Time)] + + sorted.each do |filename, file_stats| + row = [] + row << filename + row << file_stats[:count].to_s + row << format_bytes(file_stats[:bytes]) + row << format("%.3f", file_stats[:time]) + table << row + end + + table + end + + def format_bytes(bytes) + bytes /= 1024.0 + format("%.2fK", bytes) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/log_adapter.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/log_adapter.rb new file mode 100644 index 0000000000..65b8f9deb7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/log_adapter.rb @@ -0,0 +1,147 @@ +# frozen_string_literal: true + +module Jekyll + class LogAdapter + attr_reader :writer, :messages, :level + + LOG_LEVELS = { + :debug => ::Logger::DEBUG, + :info => ::Logger::INFO, + :warn => ::Logger::WARN, + :error => ::Logger::ERROR, + }.freeze + + # Public: Create a new instance of a log writer + # + # writer - Logger compatible instance + # log_level - (optional, symbol) the log level + # + # Returns nothing + def initialize(writer, level = :info) + @messages = [] + @writer = writer + self.log_level = level + end + + # Public: Set the log level on the writer + # + # level - (symbol) the log level + # + # Returns nothing + def log_level=(level) + writer.level = LOG_LEVELS.fetch(level) + @level = level + end + + def adjust_verbosity(options = {}) + # Quiet always wins. + if options[:quiet] + self.log_level = :error + elsif options[:verbose] + self.log_level = :debug + end + debug "Logging at level:", LOG_LEVELS.key(writer.level).to_s + end + + # Public: Print a debug message + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns nothing + def debug(topic, message = nil, &block) + write(:debug, topic, message, &block) + end + + # Public: Print a message + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns nothing + def info(topic, message = nil, &block) + write(:info, topic, message, &block) + end + + # Public: Print a message + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns nothing + def warn(topic, message = nil, &block) + write(:warn, topic, message, &block) + end + + # Public: Print an error message + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns nothing + def error(topic, message = nil, &block) + write(:error, topic, message, &block) + end + + # Public: Print an error message and immediately abort the process + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail (can be omitted) + # + # Returns nothing + def abort_with(topic, message = nil, &block) + error(topic, message, &block) + abort + end + + # Internal: Build a topic method + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns the formatted message + def message(topic, message = nil) + raise ArgumentError, "block or message, not both" if block_given? && message + + message = yield if block_given? + message = message.to_s.gsub(%r!\s+!, " ") + topic = formatted_topic(topic, block_given?) + out = topic + message + messages << out + out + end + + # Internal: Format the topic + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # colon - + # + # Returns the formatted topic statement + def formatted_topic(topic, colon = false) + "#{topic}#{colon ? ": " : " "}".rjust(20) + end + + # Internal: Check if the message should be written given the log level. + # + # level_of_message - the Symbol level of message, one of :debug, :info, :warn, :error + # + # Returns whether the message should be written. + def write_message?(level_of_message) + LOG_LEVELS.fetch(level) <= LOG_LEVELS.fetch(level_of_message) + end + + # Internal: Log a message. + # + # level_of_message - the Symbol level of message, one of :debug, :info, :warn, :error + # topic - the String topic or full message + # message - the String message (optional) + # block - a block containing the message (optional) + # + # Returns false if the message was not written, otherwise returns the value of calling + # the appropriate writer method, e.g. writer.info. + def write(level_of_message, topic, message = nil, &block) + return false unless write_message?(level_of_message) + writer.public_send(level_of_message, message(topic, message, &block)) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/mime.types b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/mime.types new file mode 100644 index 0000000000..af68d359e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/mime.types @@ -0,0 +1,825 @@ +# Woah there. Do not edit this file directly. +# This file is generated automatically by script/vendor-mimes. + +application/andrew-inset ez +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +application/atomsvc+xml atomsvc +application/bdoc bdoc +application/ccxml+xml ccxml +application/cdmi-capability cdmia +application/cdmi-container cdmic +application/cdmi-domain cdmid +application/cdmi-object cdmio +application/cdmi-queue cdmiq +application/cu-seeme cu +application/dash+xml mpd +application/davmount+xml davmount +application/docbook+xml dbk +application/dssc+der dssc +application/dssc+xml xdssc +application/ecmascript ecma +application/emma+xml emma +application/epub+zip epub +application/exi exi +application/font-tdpfr pfr +application/font-woff woff +application/font-woff2 woff2 +application/geo+json geojson +application/gml+xml gml +application/gpx+xml gpx +application/gxf gxf +application/gzip gz +application/hyperstudio stk +application/inkml+xml ink inkml +application/ipfix ipfix +application/java-archive jar war ear +application/java-serialized-object ser +application/java-vm class +application/javascript js mjs +application/json json map +application/json5 json5 +application/jsonml+json jsonml +application/ld+json jsonld +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/mads+xml mads +application/manifest+json webmanifest +application/marc mrc +application/marcxml+xml mrcx +application/mathematica ma nb mb +application/mathml+xml mathml +application/mbox mbox +application/mediaservercontrol+xml mscml +application/metalink+xml metalink +application/metalink4+xml meta4 +application/mets+xml mets +application/mods+xml mods +application/mp21 m21 mp21 +application/mp4 mp4s m4p +application/msword doc dot +application/mxf mxf +application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy exe dll deb dmg iso img msi msp msm buffer +application/oda oda +application/oebps-package+xml opf +application/ogg ogx +application/omdoc+xml omdoc +application/onenote onetoc onetoc2 onetmp onepkg +application/oxps oxps +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +application/pgp-signature asc sig +application/pics-rules prf +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkcs8 p8 +application/pkix-attr-cert ac +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +application/postscript ai eps ps +application/prs.cww cww +application/pskc+xml pskcxml +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +application/rls-services+xml rs +application/rpki-ghostbusters gbr +application/rpki-manifest mft +application/rpki-roa roa +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +application/set-payment-initiation setpay +application/set-registration-initiation setreg +application/shf+xml shf +application/smil+xml smi smil +application/sparql-query rq +application/sparql-results+xml srx +application/srgs gram +application/srgs+xml grxml +application/sru+xml sru +application/ssdl+xml ssdl +application/ssml+xml ssml +application/tei+xml tei teicorpus +application/thraud+xml tfi +application/timestamped-data tsd +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.formscentral.fcdt fcdt +application/vnd.adobe.fxp fxp fxpl +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +application/vnd.ahead.space ahead +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +application/vnd.apple.pkpass pkpass +application/vnd.aristanetworks.swi swi +application/vnd.astraea-software.iota iota +application/vnd.audiograph aep +application/vnd.blueice.multipass mpm +application/vnd.bmi bmi +application/vnd.businessobjects rep +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.cluetrust.cartomobile-config c11amc +application/vnd.cluetrust.cartomobile-config-pkg c11amz +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +application/vnd.cups-ppd ppd +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +application/vnd.dart dart +application/vnd.data-vision.rdz rdz +application/vnd.dece.data uvf uvvf uvd uvvd +application/vnd.dece.ttml+xml uvt uvvt +application/vnd.dece.unspecified uvx uvvx +application/vnd.dece.zip uvz uvvz +application/vnd.denovo.fcselayout-link fe_launch +application/vnd.dna dna +application/vnd.dolby.mlp mlp +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.ds-keypoint kpxx +application/vnd.dvb.ait ait +application/vnd.dvb.service svc +application/vnd.dynageo geo +application/vnd.ecowin.chart mag +application/vnd.enliven nml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +application/vnd.eszigno3+xml es3 et3 +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +application/vnd.framemaker fm frame maker book +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +application/vnd.gmx gmx +application/vnd.google-apps.document gdoc +application/vnd.google-apps.presentation gslides +application/vnd.google-apps.spreadsheet gsheet +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +application/vnd.hal+xml hal +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +application/vnd.insors.igm igm +application/vnd.intercon.formnet xpw xpx +application/vnd.intergeo i2g +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.isac.fcs fcs +application/vnd.jam jam +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.kodak-descriptor sse +application/vnd.las.las+xml lasxml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +application/vnd.ms-officetheme thmx +application/vnd.ms-outlook msg +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +application/vnd.musician mus +application/vnd.muvee.style msty +application/vnd.mynfc taglet +application/vnd.neurolanguage.nlu nlu +application/vnd.nitf ntf nitf +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.olpc-sugar xo +application/vnd.oma.dd2+xml dd2 +application/vnd.openofficeorg.extension oxt +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +application/vnd.openxmlformats-officedocument.presentationml.template potx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +application/vnd.osgeo.mapguide.package mgp +application/vnd.osgi.dp dp +application/vnd.osgi.subsystem esa +application/vnd.palm pdb pqa oprc +application/vnd.pawaafile paw +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +application/vnd.picsel efif +application/vnd.pmi.widget wg +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +application/vnd.realvnc.bed bed +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +application/vnd.rig.cryptonote cryptonote +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.rn-realmedia-vbr rmvb +application/vnd.route66.link66+xml link66 +application/vnd.sailingtracker.track st +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +application/vnd.smart.teacher teacher +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stepmania.package smzip +application/vnd.stepmania.stepchart sm +application/vnd.sun.wadl+xml wadl +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +application/vnd.sus-calendar sus susp +application/vnd.svd svd +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +application/vnd.tao.intent-module-archive tao +application/vnd.tcpdump.pcap pcap cap dmp +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +application/vnd.vcx vcx +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +application/vnd.vsf vsf +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +application/vnd.wolfram.player nbp +application/vnd.wordperfect wpd +application/vnd.wqd wqd +application/vnd.wt.stf stf +application/vnd.xara xar +application/vnd.xfdl xfdl +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +application/widget wgt +application/winhlp hlp +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-7z-compressed 7z +application/x-abiword abw +application/x-ace-compressed ace +application/x-arj arj +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-blorb blb blorb +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cbr cbr cba cbt cbz cb7 +application/x-cdlink vcd +application/x-cfs-compressed cfs +application/x-chat chat +application/x-chess-pgn pgn +application/x-chrome-extension crx +application/x-cocoa cco +application/x-conference nsc +application/x-cpio cpio +application/x-csh csh +application/x-debian-package udeb +application/x-dgc-compressed dgc +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-envoy evy +application/x-eva eva +application/x-font-bdf bdf +application/x-font-ghostscript gsf +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +application/x-freearc arc +application/x-futuresplash spl +application/x-gca-compressed gca +application/x-glulx ulx +application/x-gnumeric gnumeric +application/x-gramps-xml gramps +application/x-gtar gtar +application/x-hdf hdf +application/x-httpd-php php +application/x-install-instructions install +application/x-java-archive-diff jardiff +application/x-java-jnlp-file jnlp +application/x-latex latex +application/x-lua-bytecode luac +application/x-lzh-compressed lzh lha +application/x-makeself run +application/x-mie mie +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-shortcut lnk +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload com bat +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf emf emz +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-ns-proxy-autoconfig pac +application/x-nzb nzb +application/x-perl pl pm +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-redhat-package-manager rpm +application/x-research-info-systems ris +application/x-sea sea +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-sql sql +application/x-stuffit sit +application/x-stuffitx sitx +application/x-subrip srt +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-t3vm-image t3 +application/x-tads gam +application/x-tar tar +application/x-tcl tcl tk +application/x-tex tex +application/x-tex-tfm tfm +application/x-texinfo texinfo texi +application/x-tgif obj +application/x-ustar ustar +application/x-virtualbox-hdd hdd +application/x-virtualbox-ova ova +application/x-virtualbox-ovf ovf +application/x-virtualbox-vbox vbox +application/x-virtualbox-vbox-extpack vbox-extpack +application/x-virtualbox-vdi vdi +application/x-virtualbox-vhd vhd +application/x-virtualbox-vmdk vmdk +application/x-wais-source src +application/x-web-app-manifest+json webapp +application/x-x509-ca-cert der crt pem +application/x-xfig fig +application/x-xliff+xml xlf +application/x-xpinstall xpi +application/x-xz xz +application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 +application/xaml+xml xaml +application/xcap-diff+xml xdf +application/xenc+xml xenc +application/xhtml+xml xhtml xht +application/xml xml xsl xsd rng +application/xml-dtd dtd +application/xop+xml xop +application/xproc+xml xpl +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/yang yang +application/yin+xml yin +application/zip zip +audio/3gpp 3gpp +audio/adpcm adp +audio/basic au snd +audio/midi mid midi kar rmi +audio/mp3 mp3 +audio/mp4 m4a mp4a +audio/mpeg mpga mp2 mp2a m2a m3a +audio/ogg oga ogg spx +audio/s3m s3m +audio/silk sil +audio/vnd.dece.audio uva uvva +audio/vnd.digital-winds eol +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +audio/vnd.rip rip +audio/wav wav +audio/webm weba +audio/x-aac aac +audio/x-aiff aif aiff aifc +audio/x-caf caf +audio/x-flac flac +audio/x-matroska mka +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/xm xm +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +chemical/x-xyz xyz +image/apng apng +image/bmp bmp +image/cgm cgm +image/g3fax g3 +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/ktx ktx +image/png png +image/prs.btif btif +image/sgi sgi +image/svg+xml svg svgz +image/tiff tiff tif +image/vnd.adobe.photoshop psd +image/vnd.dece.graphic uvi uvvi uvg uvvg +image/vnd.djvu djvu djv +image/vnd.dvb.subtitle sub +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +image/vnd.ms-modi mdi +image/vnd.ms-photo wdp +image/vnd.net-fpx npx +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/webp webp +image/x-3ds 3ds +image/x-cmu-raster ras +image/x-cmx cmx +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-jng jng +image/x-mrsid-image sid +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-tga tga +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/rfc822 eml mime +model/gltf+json gltf +model/gltf-binary glb +model/iges igs iges +model/mesh msh mesh silo +model/vnd.collada+xml dae +model/vnd.dwf dwf +model/vnd.gdl gdl +model/vnd.gtw gtw +model/vnd.mts mts +model/vnd.vtu vtu +model/vrml wrl vrml +model/x3d+binary x3db x3dbz +model/x3d+vrml x3dv x3dvz +model/x3d+xml x3d x3dz +text/cache-manifest appcache manifest +text/calendar ics ifb +text/coffeescript coffee litcoffee +text/css css +text/csv csv +text/hjson hjson +text/html html htm shtml +text/jade jade +text/jsx jsx +text/less less +text/markdown markdown md +text/mathml mml +text/n3 n3 +text/plain txt text conf def list log in ini +text/prs.lines.tag dsc +text/richtext rtx +text/sgml sgml sgm +text/slim slim slm +text/stylus stylus styl +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/turtle ttl +text/uri-list uri uris urls +text/vcard vcard +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.mcurl mcurl +text/vnd.curl.scurl scurl +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +text/vnd.sun.j2me.app-descriptor jad +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/vtt vtt +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-component htc +text/x-fortran f for f77 f90 +text/x-handlebars-template hbs +text/x-java-source java +text/x-lua lua +text/x-markdown mkd +text/x-nfo nfo +text/x-opml opml +text/x-pascal p pas +text/x-processing pde +text/x-sass sass +text/x-scss scss +text/x-setext etx +text/x-sfv sfv +text/x-suse-ymp ymp +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +text/yaml yaml yml +video/3gpp 3gp +video/3gpp2 3g2 +video/h261 h261 +video/h263 h263 +video/h264 h264 +video/jpeg jpgv +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +video/mp2t ts +video/mp4 mp4 mp4v mpg4 +video/mpeg mpeg mpg mpe m1v m2v +video/ogg ogv +video/quicktime qt mov +video/vnd.dece.hd uvh uvvh +video/vnd.dece.mobile uvm uvvm +video/vnd.dece.pd uvp uvvp +video/vnd.dece.sd uvs uvvs +video/vnd.dece.video uvv uvvv +video/vnd.dvb.file dvb +video/vnd.fvt fvt +video/vnd.mpegurl mxu m4u +video/vnd.ms-playready.media.pyv pyv +video/vnd.uvvu.mp4 uvu uvvu +video/vnd.vivo viv +video/webm webm +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-matroska mkv mk3d mks +video/x-mng mng +video/x-ms-asf asf asx +video/x-ms-vob vob +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +video/x-smv smv +x-conference/x-cooltalk ice \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page.rb new file mode 100644 index 0000000000..caea9cd924 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page.rb @@ -0,0 +1,187 @@ +# frozen_string_literal: true + +module Jekyll + class Page + include Convertible + + attr_writer :dir + attr_accessor :site, :pager + attr_accessor :name, :ext, :basename + attr_accessor :data, :content, :output + + alias_method :extname, :ext + + FORWARD_SLASH = "/".freeze + + # Attributes for Liquid templates + ATTRIBUTES_FOR_LIQUID = %w( + content + dir + name + path + url + ).freeze + + # A set of extensions that are considered HTML or HTML-like so we + # should not alter them, this includes .xhtml through XHTM5. + + HTML_EXTENSIONS = %w( + .html + .xhtml + .htm + ).freeze + + # Initialize a new Page. + # + # site - The Site object. + # base - The String path to the source. + # dir - The String path between the source and the file. + # name - The String filename of the file. + def initialize(site, base, dir, name) + @site = site + @base = base + @dir = dir + @name = name + @path = if site.in_theme_dir(base) == base # we're in a theme + site.in_theme_dir(base, dir, name) + else + site.in_source_dir(base, dir, name) + end + + process(name) + read_yaml(File.join(base, dir), name) + + data.default_proc = proc do |_, key| + site.frontmatter_defaults.find(File.join(dir, name), type, key) + end + + Jekyll::Hooks.trigger :pages, :post_init, self + end + + # The generated directory into which the page will be placed + # upon generation. This is derived from the permalink or, if + # permalink is absent, will be '/' + # + # Returns the String destination directory. + def dir + if url.end_with?(FORWARD_SLASH) + url + else + url_dir = File.dirname(url) + url_dir.end_with?(FORWARD_SLASH) ? url_dir : "#{url_dir}/" + end + end + + # The full path and filename of the post. Defined in the YAML of the post + # body. + # + # Returns the String permalink or nil if none has been set. + def permalink + data.nil? ? nil : data["permalink"] + end + + # The template of the permalink. + # + # Returns the template String. + def template + if !html? + "/:path/:basename:output_ext" + elsif index? + "/:path/" + else + Utils.add_permalink_suffix("/:path/:basename", site.permalink_style) + end + end + + # The generated relative url of this page. e.g. /about.html. + # + # Returns the String url. + def url + @url ||= URL.new({ + :template => template, + :placeholders => url_placeholders, + :permalink => permalink, + }).to_s + end + + # Returns a hash of URL placeholder names (as symbols) mapping to the + # desired placeholder replacements. For details see "url.rb" + def url_placeholders + { + :path => @dir, + :basename => basename, + :output_ext => output_ext, + } + end + + # Extract information from the page filename. + # + # name - The String filename of the page file. + # + # Returns nothing. + def process(name) + self.ext = File.extname(name) + self.basename = name[0..-ext.length - 1] + end + + # Add any necessary layouts to this post + # + # layouts - The Hash of {"name" => "layout"}. + # site_payload - The site payload Hash. + # + # Returns String rendered page. + def render(layouts, site_payload) + site_payload["page"] = to_liquid + site_payload["paginator"] = pager.to_liquid + + do_layout(site_payload, layouts) + end + + # The path to the source file + # + # Returns the path to the source file + def path + data.fetch("path") { relative_path } + end + + # The path to the page source file, relative to the site source + def relative_path + File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r!\A\/!, "") + end + + # Obtain destination path. + # + # dest - The String path to the destination dir. + # + # Returns the destination file path String. + def destination(dest) + path = site.in_dest_dir(dest, URL.unescape_path(url)) + path = File.join(path, "index") if url.end_with?("/") + path << output_ext unless path.end_with? output_ext + path + end + + # Returns the object as a debug String. + def inspect + "#" + end + + # Returns the Boolean of whether this Page is HTML or not. + def html? + HTML_EXTENSIONS.include?(output_ext) + end + + # Returns the Boolean of whether this Page is an index file or not. + def index? + basename == "index" + end + + def trigger_hooks(hook_name, *args) + Jekyll::Hooks.trigger :pages, hook_name, self, *args + end + + def write? + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page_without_a_file.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page_without_a_file.rb new file mode 100644 index 0000000000..2d30af5111 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/page_without_a_file.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Jekyll + # A Jekyll::Page subclass to handle processing files without reading it to + # determine the page-data and page-content based on Front Matter delimiters. + # + # The class instance is basically just a bare-bones entity with just + # attributes "dir", "name", "path", "url" defined on it. + class PageWithoutAFile < Page + def read_yaml(*) + @data ||= {} + end + + def inspect + "#" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin.rb new file mode 100644 index 0000000000..2a9dbeed41 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin.rb @@ -0,0 +1,98 @@ +# frozen_string_literal: true + +module Jekyll + class Plugin + PRIORITIES = { + :low => -10, + :highest => 100, + :lowest => -100, + :normal => 0, + :high => 10, + }.freeze + + # + + def self.inherited(const) + return catch_inheritance(const) do |const_| + catch_inheritance(const_) + end + end + + # + + def self.catch_inheritance(const) + const.define_singleton_method :inherited do |const_| + (@children ||= Set.new).add const_ + if block_given? + yield const_ + end + end + end + + # + + def self.descendants + @children ||= Set.new + out = @children.map(&:descendants) + out << self unless superclass == Plugin + Set.new(out).flatten + end + + # Get or set the priority of this plugin. When called without an + # argument it returns the priority. When an argument is given, it will + # set the priority. + # + # priority - The Symbol priority (default: nil). Valid options are: + # :lowest, :low, :normal, :high, :highest + # + # Returns the Symbol priority. + def self.priority(priority = nil) + @priority ||= nil + if priority && PRIORITIES.key?(priority) + @priority = priority + end + @priority || :normal + end + + # Get or set the safety of this plugin. When called without an argument + # it returns the safety. When an argument is given, it will set the + # safety. + # + # safe - The Boolean safety (default: nil). + # + # Returns the safety Boolean. + def self.safe(safe = nil) + unless defined?(@safe) && safe.nil? + @safe = safe + end + @safe || false + end + + # Spaceship is priority [higher -> lower] + # + # other - The class to be compared. + # + # Returns -1, 0, 1. + def self.<=>(other) + PRIORITIES[other.priority] <=> PRIORITIES[self.priority] + end + + # Spaceship is priority [higher -> lower] + # + # other - The class to be compared. + # + # Returns -1, 0, 1. + def <=>(other) + self.class <=> other.class + end + + # Initialize a new plugin. This should be overridden by the subclass. + # + # config - The Hash of configuration options. + # + # Returns a new instance. + def initialize(config = {}) + # no-op for default + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin_manager.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin_manager.rb new file mode 100644 index 0000000000..f53d187a33 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/plugin_manager.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +module Jekyll + class PluginManager + attr_reader :site + + # Create an instance of this class. + # + # site - the instance of Jekyll::Site we're concerned with + # + # Returns nothing + def initialize(site) + @site = site + end + + # Require all the plugins which are allowed. + # + # Returns nothing + def conscientious_require + require_theme_deps if site.theme + require_plugin_files + require_gems + deprecation_checks + end + + # Require each of the gem plugins specified. + # + # Returns nothing. + def require_gems + Jekyll::External.require_with_graceful_fail( + site.gems.select { |plugin| plugin_allowed?(plugin) } + ) + end + + # Require each of the runtime_dependencies specified by the theme's gemspec. + # + # Returns false only if no dependencies have been specified, otherwise nothing. + def require_theme_deps + return false unless site.theme.runtime_dependencies + site.theme.runtime_dependencies.each do |dep| + next if dep.name == "jekyll" + External.require_with_graceful_fail(dep.name) if plugin_allowed?(dep.name) + end + end + + def self.require_from_bundler + if !ENV["JEKYLL_NO_BUNDLER_REQUIRE"] && File.file?("Gemfile") + require "bundler" + + Bundler.setup + required_gems = Bundler.require(:jekyll_plugins) + message = "Required #{required_gems.map(&:name).join(", ")}" + Jekyll.logger.debug("PluginManager:", message) + ENV["JEKYLL_NO_BUNDLER_REQUIRE"] = "true" + + true + else + false + end + end + + # Check whether a gem plugin is allowed to be used during this build. + # + # plugin_name - the name of the plugin + # + # Returns true if the plugin name is in the whitelist or if the site is not + # in safe mode. + def plugin_allowed?(plugin_name) + !site.safe || whitelist.include?(plugin_name) + end + + # Build an array of allowed plugin gem names. + # + # Returns an array of strings, each string being the name of a gem name + # that is allowed to be used. + def whitelist + @whitelist ||= Array[site.config["whitelist"]].flatten + end + + # Require all .rb files if safe mode is off + # + # Returns nothing. + def require_plugin_files + unless site.safe + plugins_path.each do |plugin_search_path| + plugin_files = Utils.safe_glob(plugin_search_path, File.join("**", "*.rb")) + Jekyll::External.require_with_graceful_fail(plugin_files) + end + end + end + + # Public: Setup the plugin search path + # + # Returns an Array of plugin search paths + def plugins_path + if site.config["plugins_dir"].eql? Jekyll::Configuration::DEFAULTS["plugins_dir"] + [site.in_source_dir(site.config["plugins_dir"])] + else + Array(site.config["plugins_dir"]).map { |d| File.expand_path(d) } + end + end + + def deprecation_checks + pagination_included = (site.config["plugins"] || []).include?("jekyll-paginate") || + defined?(Jekyll::Paginate) + if site.config["paginate"] && !pagination_included + Jekyll::Deprecator.deprecation_message "You appear to have pagination " \ + "turned on, but you haven't included the `jekyll-paginate` gem. " \ + "Ensure you have `plugins: [jekyll-paginate]` in your configuration file." + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/publisher.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/publisher.rb new file mode 100644 index 0000000000..26fe4a3869 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/publisher.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Jekyll + class Publisher + def initialize(site) + @site = site + end + + def publish?(thing) + can_be_published?(thing) && !hidden_in_the_future?(thing) + end + + def hidden_in_the_future?(thing) + thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i + end + + private + + def can_be_published?(thing) + thing.data.fetch("published", true) || @site.unpublished + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/reader.rb new file mode 100644 index 0000000000..fed76a1630 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/reader.rb @@ -0,0 +1,154 @@ +# frozen_string_literal: true + +module Jekyll + class Reader + attr_reader :site + + def initialize(site) + @site = site + end + + # Read Site data from disk and load it into internal data structures. + # + # Returns nothing. + def read + @site.layouts = LayoutReader.new(site).read + read_directories + sort_files! + @site.data = DataReader.new(site).read(site.config["data_dir"]) + CollectionReader.new(site).read + ThemeAssetsReader.new(site).read + end + + # Sorts posts, pages, and static files. + def sort_files! + site.collections.each_value { |c| c.docs.sort! } + site.pages.sort_by!(&:name) + site.static_files.sort_by!(&:relative_path) + end + + # Recursively traverse directories to find pages and static files + # that will become part of the site according to the rules in + # filter_entries. + # + # dir - The String relative path of the directory to read. Default: ''. + # + # Returns nothing. + def read_directories(dir = "") + base = site.in_source_dir(dir) + + return unless File.directory?(base) + + dot = Dir.chdir(base) { filter_entries(Dir.entries("."), base) } + dot_dirs = dot.select { |file| File.directory?(@site.in_source_dir(base, file)) } + dot_files = (dot - dot_dirs) + dot_pages = dot_files.select do |file| + Utils.has_yaml_header?(@site.in_source_dir(base, file)) + end + dot_static_files = dot_files - dot_pages + + retrieve_posts(dir) + retrieve_dirs(base, dir, dot_dirs) + retrieve_pages(dir, dot_pages) + retrieve_static_files(dir, dot_static_files) + end + + # Retrieves all the posts(posts/drafts) from the given directory + # and add them to the site and sort them. + # + # dir - The String representing the directory to retrieve the posts from. + # + # Returns nothing. + def retrieve_posts(dir) + return if outside_configured_directory?(dir) + site.posts.docs.concat(post_reader.read_posts(dir)) + site.posts.docs.concat(post_reader.read_drafts(dir)) if site.show_drafts + end + + # Recursively traverse directories with the read_directories function. + # + # base - The String representing the site's base directory. + # dir - The String representing the directory to traverse down. + # dot_dirs - The Array of subdirectories in the dir. + # + # Returns nothing. + def retrieve_dirs(_base, dir, dot_dirs) + dot_dirs.each do |file| + dir_path = site.in_source_dir(dir, file) + rel_path = File.join(dir, file) + unless @site.dest.chomp("/") == dir_path + @site.reader.read_directories(rel_path) + end + end + end + + # Retrieve all the pages from the current directory, + # add them to the site and sort them. + # + # dir - The String representing the directory retrieve the pages from. + # dot_pages - The Array of pages in the dir. + # + # Returns nothing. + def retrieve_pages(dir, dot_pages) + site.pages.concat(PageReader.new(site, dir).read(dot_pages)) + end + + # Retrieve all the static files from the current directory, + # add them to the site and sort them. + # + # dir - The directory retrieve the static files from. + # dot_static_files - The static files in the dir. + # + # Returns nothing. + def retrieve_static_files(dir, dot_static_files) + site.static_files.concat(StaticFileReader.new(site, dir).read(dot_static_files)) + end + + # Filter out any files/directories that are hidden or backup files (start + # with "." or "#" or end with "~"), or contain site content (start with "_"), + # or are excluded in the site configuration, unless they are web server + # files such as '.htaccess'. + # + # entries - The Array of String file/directory entries to filter. + # base_directory - The string representing the optional base directory. + # + # Returns the Array of filtered entries. + def filter_entries(entries, base_directory = nil) + EntryFilter.new(site, base_directory).filter(entries) + end + + # Read the entries from a particular directory for processing + # + # dir - The String representing the relative path of the directory to read. + # subfolder - The String representing the directory to read. + # + # Returns the list of entries to process + def get_entries(dir, subfolder) + base = site.in_source_dir(dir, subfolder) + return [] unless File.exist?(base) + entries = Dir.chdir(base) { filter_entries(Dir["**/*"], base) } + entries.delete_if { |e| File.directory?(site.in_source_dir(base, e)) } + end + + private + + # Internal + # + # Determine if the directory is supposed to contain posts and drafts. + # If the user has defined a custom collections_dir, then attempt to read + # posts and drafts only from within that directory. + # + # Returns true if a custom collections_dir has been set but current directory lies + # outside that directory. + def outside_configured_directory?(dir) + collections_dir = site.config["collections_dir"] + !collections_dir.empty? && !dir.start_with?("/#{collections_dir}") + end + + # Create a single PostReader instance to retrieve drafts and posts from all valid + # directories in current site. + def post_reader + @post_reader ||= PostReader.new(site) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/collection_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/collection_reader.rb new file mode 100644 index 0000000000..77c700976f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/collection_reader.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Jekyll + class CollectionReader + SPECIAL_COLLECTIONS = %w(posts data).freeze + + attr_reader :site, :content + def initialize(site) + @site = site + @content = {} + end + + # Read in all collections specified in the configuration + # + # Returns nothing. + def read + site.collections.each_value do |collection| + collection.read unless SPECIAL_COLLECTIONS.include?(collection.label) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/data_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/data_reader.rb new file mode 100644 index 0000000000..445d548802 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/data_reader.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +module Jekyll + class DataReader + attr_reader :site, :content + def initialize(site) + @site = site + @content = {} + @entry_filter = EntryFilter.new(site) + end + + # Read all the files in and adds them to @content + # + # dir - The String relative path of the directory to read. + # + # Returns @content, a Hash of the .yaml, .yml, + # .json, and .csv files in the base directory + def read(dir) + base = site.in_source_dir(dir) + read_data_to(base, @content) + @content + end + + # Read and parse all .yaml, .yml, .json, .csv and .tsv + # files under and add them to the variable. + # + # dir - The string absolute path of the directory to read. + # data - The variable to which data will be added. + # + # Returns nothing + def read_data_to(dir, data) + return unless File.directory?(dir) && !@entry_filter.symlink?(dir) + + entries = Dir.chdir(dir) do + Dir["*.{yaml,yml,json,csv,tsv}"] + Dir["*"].select { |fn| File.directory?(fn) } + end + + entries.each do |entry| + path = @site.in_source_dir(dir, entry) + next if @entry_filter.symlink?(path) + + if File.directory?(path) + read_data_to(path, data[sanitize_filename(entry)] = {}) + else + key = sanitize_filename(File.basename(entry, ".*")) + data[key] = read_data_file(path) + end + end + end + + # Determines how to read a data file. + # + # Returns the contents of the data file. + def read_data_file(path) + case File.extname(path).downcase + when ".csv" + CSV.read(path, { + :headers => true, + :encoding => site.config["encoding"], + }).map(&:to_hash) + when ".tsv" + CSV.read(path, { + :col_sep => "\t", + :headers => true, + :encoding => site.config["encoding"], + }).map(&:to_hash) + else + SafeYAML.load_file(path) + end + end + + def sanitize_filename(name) + name.gsub(%r![^\w\s-]+|(?<=^|\b\s)\s+(?=$|\s?\b)!, "") + .gsub(%r!\s+!, "_") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/layout_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/layout_reader.rb new file mode 100644 index 0000000000..706dfed8c4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/layout_reader.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +module Jekyll + class LayoutReader + attr_reader :site + def initialize(site) + @site = site + @layouts = {} + end + + def read + layout_entries.each do |layout_file| + @layouts[layout_name(layout_file)] = \ + Layout.new(site, layout_directory, layout_file) + end + + theme_layout_entries.each do |layout_file| + @layouts[layout_name(layout_file)] ||= \ + Layout.new(site, theme_layout_directory, layout_file) + end + + @layouts + end + + def layout_directory + @layout_directory ||= (layout_directory_in_cwd || layout_directory_inside_source) + end + + def theme_layout_directory + @theme_layout_directory ||= site.theme.layouts_path if site.theme + end + + private + + def layout_entries + entries_in layout_directory + end + + def theme_layout_entries + theme_layout_directory ? entries_in(theme_layout_directory) : [] + end + + def entries_in(dir) + entries = [] + within(dir) do + entries = EntryFilter.new(site).filter(Dir["**/*.*"]) + end + entries + end + + def layout_name(file) + file.split(".")[0..-2].join(".") + end + + def within(directory) + return unless File.exist?(directory) + Dir.chdir(directory) { yield } + end + + def layout_directory_inside_source + site.in_source_dir(site.config["layouts_dir"]) + end + + def layout_directory_in_cwd + dir = Jekyll.sanitized_path(Dir.pwd, site.config["layouts_dir"]) + if File.directory?(dir) && !site.safe + dir + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/page_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/page_reader.rb new file mode 100644 index 0000000000..62d7419efe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/page_reader.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Jekyll + class PageReader + attr_reader :site, :dir, :unfiltered_content + def initialize(site, dir) + @site = site + @dir = dir + @unfiltered_content = [] + end + + # Read all the files in // for Yaml header and create a new Page + # object for each file. + # + # dir - The String relative path of the directory to read. + # + # Returns an array of static pages. + def read(files) + files.map do |page| + @unfiltered_content << Page.new(@site, @site.source, @dir, page) + end + @unfiltered_content.select { |page| site.publisher.publish?(page) } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/post_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/post_reader.rb new file mode 100644 index 0000000000..b0dc30326b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/post_reader.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +module Jekyll + class PostReader + attr_reader :site, :unfiltered_content + def initialize(site) + @site = site + end + + # Read all the files in //_drafts and create a new + # Document object with each one. + # + # dir - The String relative path of the directory to read. + # + # Returns nothing. + def read_drafts(dir) + read_publishable(dir, "_drafts", Document::DATELESS_FILENAME_MATCHER) + end + + # Read all the files in //_posts and create a new Document + # object with each one. + # + # dir - The String relative path of the directory to read. + # + # Returns nothing. + def read_posts(dir) + read_publishable(dir, "_posts", Document::DATE_FILENAME_MATCHER) + end + + # Read all the files in // and create a new + # Document object with each one insofar as it matches the regexp matcher. + # + # dir - The String relative path of the directory to read. + # + # Returns nothing. + def read_publishable(dir, magic_dir, matcher) + read_content(dir, magic_dir, matcher).tap { |docs| docs.each(&:read) } + .select do |doc| + if doc.content.valid_encoding? + site.publisher.publish?(doc).tap do |will_publish| + if !will_publish && site.publisher.hidden_in_the_future?(doc) + Jekyll.logger.debug "Skipping:", "#{doc.relative_path} has a future date" + end + end + else + Jekyll.logger.debug "Skipping:", "#{doc.relative_path} is not valid UTF-8" + false + end + end + end + + # Read all the content files from //magic_dir + # and return them with the type klass. + # + # dir - The String relative path of the directory to read. + # magic_dir - The String relative directory to , + # looks for content here. + # klass - The return type of the content. + # + # Returns klass type of content files + def read_content(dir, magic_dir, matcher) + @site.reader.get_entries(dir, magic_dir).map do |entry| + next unless entry =~ matcher + path = @site.in_source_dir(File.join(dir, magic_dir, entry)) + Document.new(path, { + :site => @site, + :collection => @site.posts, + }) + end.reject(&:nil?) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/static_file_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/static_file_reader.rb new file mode 100644 index 0000000000..6bf07f5a0c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/static_file_reader.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Jekyll + class StaticFileReader + attr_reader :site, :dir, :unfiltered_content + def initialize(site, dir) + @site = site + @dir = dir + @unfiltered_content = [] + end + + # Read all the files in // for Yaml header and create a new Page + # object for each file. + # + # dir - The String relative path of the directory to read. + # + # Returns an array of static files. + def read(files) + files.map do |file| + @unfiltered_content << StaticFile.new(@site, @site.source, @dir, file) + end + @unfiltered_content + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/theme_assets_reader.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/theme_assets_reader.rb new file mode 100644 index 0000000000..2706690c5c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/readers/theme_assets_reader.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module Jekyll + class ThemeAssetsReader + attr_reader :site + def initialize(site) + @site = site + end + + def read + return unless site.theme && site.theme.assets_path + + Find.find(site.theme.assets_path) do |path| + next if File.directory?(path) + if File.symlink?(path) + Jekyll.logger.warn "Theme reader:", "Ignored symlinked asset: #{path}" + else + read_theme_asset(path) + end + end + end + + private + def read_theme_asset(path) + base = site.theme.root + dir = File.dirname(path.sub("#{site.theme.root}/", "")) + name = File.basename(path) + + if Utils.has_yaml_header?(path) + append_unless_exists site.pages, + Jekyll::Page.new(site, base, dir, name) + else + append_unless_exists site.static_files, + Jekyll::StaticFile.new(site, base, "/#{dir}", name) + end + end + + def append_unless_exists(haystack, new_item) + if haystack.any? { |file| file.relative_path == new_item.relative_path } + Jekyll.logger.debug "Theme:", + "Ignoring #{new_item.relative_path} in theme due to existing file " \ + "with that path in site." + return + end + + haystack << new_item + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/regenerator.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/regenerator.rb new file mode 100644 index 0000000000..178cb1a90c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/regenerator.rb @@ -0,0 +1,203 @@ +# frozen_string_literal: true + +module Jekyll + class Regenerator + attr_reader :site, :metadata, :cache + attr_accessor :disabled + private :disabled, :disabled= + + def initialize(site) + @site = site + + # Read metadata from file + read_metadata + + # Initialize cache to an empty hash + clear_cache + end + + # Checks if a renderable object needs to be regenerated + # + # Returns a boolean. + def regenerate?(document) + return true if disabled + case document + when Page + regenerate_page?(document) + when Document + regenerate_document?(document) + else + source_path = document.respond_to?(:path) ? document.path : nil + dest_path = if document.respond_to?(:destination) + document.destination(@site.dest) + end + source_modified_or_dest_missing?(source_path, dest_path) + end + end + + # Add a path to the metadata + # + # Returns true, also on failure. + def add(path) + return true unless File.exist?(path) + + metadata[path] = { + "mtime" => File.mtime(path), + "deps" => [], + } + cache[path] = true + end + + # Force a path to regenerate + # + # Returns true. + def force(path) + cache[path] = true + end + + # Clear the metadata and cache + # + # Returns nothing + def clear + @metadata = {} + clear_cache + end + + # Clear just the cache + # + # Returns nothing + def clear_cache + @cache = {} + end + + # Checks if the source has been modified or the + # destination is missing + # + # returns a boolean + def source_modified_or_dest_missing?(source_path, dest_path) + modified?(source_path) || (dest_path && !File.exist?(dest_path)) + end + + # Checks if a path's (or one of its dependencies) + # mtime has changed + # + # Returns a boolean. + def modified?(path) + return true if disabled? + + # objects that don't have a path are always regenerated + return true if path.nil? + + # Check for path in cache + if cache.key? path + return cache[path] + end + + if metadata[path] + # If we have seen this file before, + # check if it or one of its dependencies has been modified + existing_file_modified?(path) + else + # If we have not seen this file before, add it to the metadata and regenerate it + add(path) + end + end + + # Add a dependency of a path + # + # Returns nothing. + def add_dependency(path, dependency) + return if metadata[path].nil? || disabled + + unless metadata[path]["deps"].include? dependency + metadata[path]["deps"] << dependency + add(dependency) unless metadata.include?(dependency) + end + regenerate? dependency + end + + # Write the metadata to disk + # + # Returns nothing. + def write_metadata + unless disabled? + Jekyll.logger.debug "Writing Metadata:", ".jekyll-metadata" + File.binwrite(metadata_file, Marshal.dump(metadata)) + end + end + + # Produce the absolute path of the metadata file + # + # Returns the String path of the file. + def metadata_file + @metadata_file ||= site.in_source_dir(".jekyll-metadata") + end + + # Check if metadata has been disabled + # + # Returns a Boolean (true for disabled, false for enabled). + def disabled? + self.disabled = !site.incremental? if disabled.nil? + disabled + end + + private + + # Read metadata from the metadata file, if no file is found, + # initialize with an empty hash + # + # Returns the read metadata. + def read_metadata + @metadata = + if !disabled? && File.file?(metadata_file) + content = File.binread(metadata_file) + + begin + Marshal.load(content) + rescue TypeError + SafeYAML.load(content) + rescue ArgumentError => e + Jekyll.logger.warn("Failed to load #{metadata_file}: #{e}") + {} + end + else + {} + end + end + + private + def regenerate_page?(document) + document.asset_file? || document.data["regenerate"] || + source_modified_or_dest_missing?( + site.in_source_dir(document.relative_path), document.destination(@site.dest) + ) + end + + private + def regenerate_document?(document) + !document.write? || document.data["regenerate"] || + source_modified_or_dest_missing?( + document.path, document.destination(@site.dest) + ) + end + + private + def existing_file_modified?(path) + # If one of this file dependencies have been modified, + # set the regeneration bit for both the dependency and the file to true + metadata[path]["deps"].each do |dependency| + if modified?(dependency) + return cache[dependency] = cache[path] = true + end + end + + if File.exist?(path) && metadata[path]["mtime"].eql?(File.mtime(path)) + # If this file has not been modified, set the regeneration bit to false + cache[path] = false + else + # If it has been modified, set it to true + add(path) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/related_posts.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/related_posts.rb new file mode 100644 index 0000000000..4ad16ef4b7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/related_posts.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module Jekyll + class RelatedPosts + class << self + attr_accessor :lsi + end + + attr_reader :post, :site + + def initialize(post) + @post = post + @site = post.site + Jekyll::External.require_with_graceful_fail("classifier-reborn") if site.lsi + end + + def build + return [] unless site.posts.docs.size > 1 + + if site.lsi + build_index + lsi_related_posts + else + most_recent_posts + end + end + + def build_index + self.class.lsi ||= begin + lsi = ClassifierReborn::LSI.new(:auto_rebuild => false) + Jekyll.logger.info("Populating LSI...") + + site.posts.docs.each do |x| + lsi.add_item(x) + end + + Jekyll.logger.info("Rebuilding index...") + lsi.build_index + Jekyll.logger.info("") + lsi + end + end + + def lsi_related_posts + self.class.lsi.find_related(post, 11) + end + + def most_recent_posts + @most_recent_posts ||= (site.posts.docs.last(11).reverse - [post]).first(10) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb new file mode 100644 index 0000000000..9c47b2568e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/renderer.rb @@ -0,0 +1,278 @@ +# frozen_string_literal: true + +module Jekyll + class Renderer + attr_reader :document, :site + attr_writer :layouts, :payload + + def initialize(site, document, site_payload = nil) + @site = site + @document = document + @payload = site_payload + end + + # Fetches the payload used in Liquid rendering. + # It can be written with #payload=(new_payload) + # Falls back to site.site_payload if no payload is set. + # + # Returns a Jekyll::Drops::UnifiedPayloadDrop + def payload + @payload ||= site.site_payload + end + + # The list of layouts registered for this Renderer. + # It can be written with #layouts=(new_layouts) + # Falls back to site.layouts if no layouts are registered. + # + # Returns a Hash of String => Jekyll::Layout identified + # as basename without the extension name. + def layouts + @layouts || site.layouts + end + + # Determine which converters to use based on this document's + # extension. + # + # Returns Array of Converter instances. + def converters + @converters ||= site.converters.select { |c| c.matches(document.extname) }.sort + end + + # Determine the extname the outputted file should have + # + # Returns String the output extname including the leading period. + def output_ext + @output_ext ||= (permalink_ext || converter_output_ext) + end + + # Prepare payload and render the document + # + # Returns String rendered document output + def run + Jekyll.logger.debug "Rendering:", document.relative_path + + assign_pages! + assign_current_document! + assign_highlighter_options! + assign_layout_data! + + Jekyll.logger.debug "Pre-Render Hooks:", document.relative_path + document.trigger_hooks(:pre_render, payload) + + render_document + end + + # Render the document. + # + # Returns String rendered document output + # rubocop: disable AbcSize + def render_document + info = { + :registers => { :site => site, :page => payload["page"] }, + :strict_filters => liquid_options["strict_filters"], + :strict_variables => liquid_options["strict_variables"], + } + + output = document.content + if document.render_with_liquid? + Jekyll.logger.debug "Rendering Liquid:", document.relative_path + output = render_liquid(output, payload, info, document.path) + end + + Jekyll.logger.debug "Rendering Markup:", document.relative_path + output = convert(output.to_s) + document.content = output + + if document.place_in_layout? + Jekyll.logger.debug "Rendering Layout:", document.relative_path + output = place_in_layouts(output, payload, info) + end + + output + end + # rubocop: enable AbcSize + + # Convert the document using the converters which match this renderer's document. + # + # Returns String the converted content. + def convert(content) + converters.reduce(content) do |output, converter| + begin + converter.convert output + rescue StandardError => e + Jekyll.logger.error "Conversion error:", + "#{converter.class} encountered an error while "\ + "converting '#{document.relative_path}':" + Jekyll.logger.error("", e.to_s) + raise e + end + end + end + + # Render the given content with the payload and info + # + # content - + # payload - + # info - + # path - (optional) the path to the file, for use in ex + # + # Returns String the content, rendered by Liquid. + def render_liquid(content, payload, info, path = nil) + template = site.liquid_renderer.file(path).parse(content) + template.warnings.each do |e| + Jekyll.logger.warn "Liquid Warning:", + LiquidRenderer.format_error(e, path || document.relative_path) + end + template.render!(payload, info) + # rubocop: disable RescueException + rescue Exception => e + Jekyll.logger.error "Liquid Exception:", + LiquidRenderer.format_error(e, path || document.relative_path) + raise e + end + # rubocop: enable RescueException + + # Checks if the layout specified in the document actually exists + # + # layout - the layout to check + # + # Returns Boolean true if the layout is invalid, false if otherwise + def invalid_layout?(layout) + !document.data["layout"].nil? && layout.nil? && !(document.is_a? Jekyll::Excerpt) + end + + # Render layouts and place document content inside. + # + # Returns String rendered content + def place_in_layouts(content, payload, info) + output = content.dup + layout = layouts[document.data["layout"].to_s] + validate_layout(layout) + + used = Set.new([layout]) + + # Reset the payload layout data to ensure it starts fresh for each page. + payload["layout"] = nil + + while layout + output = render_layout(output, layout, info) + add_regenerator_dependencies(layout) + + if (layout = site.layouts[layout.data["layout"]]) + break if used.include?(layout) + used << layout + end + end + output + end + + # Checks if the layout specified in the document actually exists + # + # layout - the layout to check + # Returns nothing + private + def validate_layout(layout) + if invalid_layout?(layout) + Jekyll.logger.warn( + "Build Warning:", + "Layout '#{document.data["layout"]}' requested "\ + "in #{document.relative_path} does not exist." + ) + elsif !layout.nil? + layout_source = layout.path.start_with?(site.source) ? :site : :theme + Jekyll.logger.debug "Layout source:", layout_source + end + end + + # Render layout content into document.output + # + # Returns String rendered content + private + def render_layout(output, layout, info) + payload["content"] = output + payload["layout"] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {}) + + render_liquid( + layout.content, + payload, + info, + layout.relative_path + ) + end + + private + def add_regenerator_dependencies(layout) + return unless document.write? + site.regenerator.add_dependency( + site.in_source_dir(document.path), + layout.path + ) + end + + # Set page content to payload and assign pager if document has one. + # + # Returns nothing + private + def assign_pages! + payload["page"] = document.to_liquid + payload["paginator"] = if document.respond_to?(:pager) + document.pager.to_liquid + end + end + + # Set related posts to payload if document is a post. + # + # Returns nothing + private + def assign_current_document! + payload["site"].current_document = document + end + + # Set highlighter prefix and suffix + # + # Returns nothing + private + def assign_highlighter_options! + payload["highlighter_prefix"] = converters.first.highlighter_prefix + payload["highlighter_suffix"] = converters.first.highlighter_suffix + end + + private + def assign_layout_data! + layout = layouts[document.data["layout"]] + if layout + payload["layout"] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {}) + end + end + + private + def permalink_ext + document_permalink = document.permalink + if document_permalink && !document_permalink.end_with?("/") + permalink_ext = File.extname(document_permalink) + permalink_ext unless permalink_ext.empty? + end + end + + private + def converter_output_ext + if output_exts.size == 1 + output_exts.last + else + output_exts[-2] + end + end + + private + def output_exts + @output_exts ||= converters.map do |c| + c.output_ext(document.extname) + end.compact + end + + private + def liquid_options + @liquid_options ||= site.config["liquid"] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/site.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/site.rb new file mode 100644 index 0000000000..25257a64c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/site.rb @@ -0,0 +1,483 @@ +# frozen_string_literal: true + +module Jekyll + class Site + attr_reader :source, :dest, :config + attr_accessor :layouts, :pages, :static_files, :drafts, + :exclude, :include, :lsi, :highlighter, :permalink_style, + :time, :future, :unpublished, :safe, :plugins, :limit_posts, + :show_drafts, :keep_files, :baseurl, :data, :file_read_opts, + :gems, :plugin_manager, :theme + + attr_accessor :converters, :generators, :reader + attr_reader :regenerator, :liquid_renderer, :includes_load_paths + + # Public: Initialize a new Site. + # + # config - A Hash containing site configuration details. + def initialize(config) + # Source and destination may not be changed after the site has been created. + @source = File.expand_path(config["source"]).freeze + @dest = File.expand_path(config["destination"]).freeze + + self.config = config + + @reader = Reader.new(self) + @regenerator = Regenerator.new(self) + @liquid_renderer = LiquidRenderer.new(self) + + Jekyll.sites << self + + reset + setup + + Jekyll::Hooks.trigger :site, :after_init, self + end + + # Public: Set the site's configuration. This handles side-effects caused by + # changing values in the configuration. + # + # config - a Jekyll::Configuration, containing the new configuration. + # + # Returns the new configuration. + def config=(config) + @config = config.clone + + %w(safe lsi highlighter baseurl exclude include future unpublished + show_drafts limit_posts keep_files).each do |opt| + self.send("#{opt}=", config[opt]) + end + + # keep using `gems` to avoid breaking change + self.gems = config["plugins"] + + configure_plugins + configure_theme + configure_include_paths + configure_file_read_opts + + self.permalink_style = config["permalink"].to_sym + + @config + end + + # Public: Read, process, and write this Site to output. + # + # Returns nothing. + def process + reset + read + generate + render + cleanup + write + print_stats if config["profile"] + end + + def print_stats + Jekyll.logger.info @liquid_renderer.stats_table + end + + # Reset Site details. + # + # Returns nothing + def reset + self.time = if config["time"] + Utils.parse_date(config["time"].to_s, "Invalid time in _config.yml.") + else + Time.now + end + self.layouts = {} + self.pages = [] + self.static_files = [] + self.data = {} + @site_data = nil + @collections = nil + @docs_to_write = nil + @regenerator.clear_cache + @liquid_renderer.reset + @site_cleaner = nil + + if limit_posts < 0 + raise ArgumentError, "limit_posts must be a non-negative number" + end + + Jekyll::Hooks.trigger :site, :after_reset, self + end + + # Load necessary libraries, plugins, converters, and generators. + # + # Returns nothing. + def setup + ensure_not_in_dest + + plugin_manager.conscientious_require + + self.converters = instantiate_subclasses(Jekyll::Converter) + self.generators = instantiate_subclasses(Jekyll::Generator) + end + + # Check that the destination dir isn't the source dir or a directory + # parent to the source dir. + def ensure_not_in_dest + dest_pathname = Pathname.new(dest) + Pathname.new(source).ascend do |path| + if path == dest_pathname + raise Errors::FatalException, + "Destination directory cannot be or contain the Source directory." + end + end + end + + # The list of collections and their corresponding Jekyll::Collection instances. + # If config['collections'] is set, a new instance is created + # for each item in the collection, a new hash is returned otherwise. + # + # Returns a Hash containing collection name-to-instance pairs. + def collections + @collections ||= Hash[collection_names.map do |coll| + [coll, Jekyll::Collection.new(self, coll)] + end] + end + + # The list of collection names. + # + # Returns an array of collection names from the configuration, + # or an empty array if the `collections` key is not set. + def collection_names + case config["collections"] + when Hash + config["collections"].keys + when Array + config["collections"] + when nil + [] + else + raise ArgumentError, "Your `collections` key must be a hash or an array." + end + end + + # Read Site data from disk and load it into internal data structures. + # + # Returns nothing. + def read + reader.read + limit_posts! + Jekyll::Hooks.trigger :site, :post_read, self + end + + # Run each of the Generators. + # + # Returns nothing. + def generate + generators.each do |generator| + start = Time.now + generator.generate(self) + Jekyll.logger.debug "Generating:", + "#{generator.class} finished in #{Time.now - start} seconds." + end + end + + # Render the site to the destination. + # + # Returns nothing. + def render + relative_permalinks_are_deprecated + + payload = site_payload + + Jekyll::Hooks.trigger :site, :pre_render, self, payload + + render_docs(payload) + render_pages(payload) + + Jekyll::Hooks.trigger :site, :post_render, self, payload + end + + # Remove orphaned files and empty directories in destination. + # + # Returns nothing. + def cleanup + site_cleaner.cleanup! + end + + # Write static files, pages, and posts. + # + # Returns nothing. + def write + each_site_file do |item| + item.write(dest) if regenerator.regenerate?(item) + end + regenerator.write_metadata + Jekyll::Hooks.trigger :site, :post_write, self + end + + def posts + collections["posts"] ||= Collection.new(self, "posts") + end + + # Construct a Hash of Posts indexed by the specified Post attribute. + # + # post_attr - The String name of the Post attribute. + # + # Examples + # + # post_attr_hash('categories') + # # => { 'tech' => [, ], + # # 'ruby' => [] } + # + # Returns the Hash: { attr => posts } where + # attr - One of the values for the requested attribute. + # posts - The Array of Posts with the given attr value. + def post_attr_hash(post_attr) + # Build a hash map based on the specified post attribute ( post attr => + # array of posts ) then sort each array in reverse order. + hash = Hash.new { |h, key| h[key] = [] } + posts.docs.each do |p| + p.data[post_attr].each { |t| hash[t] << p } if p.data[post_attr] + end + hash.each_value { |posts| posts.sort!.reverse! } + hash + end + + def tags + post_attr_hash("tags") + end + + def categories + post_attr_hash("categories") + end + + # Prepare site data for site payload. The method maintains backward compatibility + # if the key 'data' is already used in _config.yml. + # + # Returns the Hash to be hooked to site.data. + def site_data + @site_data ||= (config["data"] || data) + end + + # The Hash payload containing site-wide data. + # + # Returns the Hash: { "site" => data } where data is a Hash with keys: + # "time" - The Time as specified in the configuration or the + # current time if none was specified. + # "posts" - The Array of Posts, sorted chronologically by post date + # and then title. + # "pages" - The Array of all Pages. + # "html_pages" - The Array of HTML Pages. + # "categories" - The Hash of category values and Posts. + # See Site#post_attr_hash for type info. + # "tags" - The Hash of tag values and Posts. + # See Site#post_attr_hash for type info. + def site_payload + Drops::UnifiedPayloadDrop.new self + end + alias_method :to_liquid, :site_payload + + # Get the implementation class for the given Converter. + # Returns the Converter instance implementing the given Converter. + # klass - The Class of the Converter to fetch. + def find_converter_instance(klass) + @find_converter_instance ||= {} + @find_converter_instance[klass] ||= begin + converters.find { |converter| converter.instance_of?(klass) } || \ + raise("No Converters found for #{klass}") + end + end + + # klass - class or module containing the subclasses. + # Returns array of instances of subclasses of parameter. + # Create array of instances of the subclasses of the class or module + # passed in as argument. + + def instantiate_subclasses(klass) + klass.descendants.select { |c| !safe || c.safe }.sort.map do |c| + c.new(config) + end + end + + # Warns the user if permanent links are relative to the parent + # directory. As this is a deprecated function of Jekyll. + # + # Returns + def relative_permalinks_are_deprecated + if config["relative_permalinks"] + Jekyll.logger.abort_with "Since v3.0, permalinks for pages" \ + " in subfolders must be relative to the" \ + " site source directory, not the parent" \ + " directory. Check https://jekyllrb.com/docs/upgrading/"\ + " for more info." + end + end + + # Get the to be written documents + # + # Returns an Array of Documents which should be written + def docs_to_write + @docs_to_write ||= documents.select(&:write?) + end + + # Get all the documents + # + # Returns an Array of all Documents + def documents + collections.reduce(Set.new) do |docs, (_, collection)| + docs + collection.docs + collection.files + end.to_a + end + + def each_site_file + %w(pages static_files docs_to_write).each do |type| + send(type).each do |item| + yield item + end + end + end + + # Returns the FrontmatterDefaults or creates a new FrontmatterDefaults + # if it doesn't already exist. + # + # Returns The FrontmatterDefaults + def frontmatter_defaults + @frontmatter_defaults ||= FrontmatterDefaults.new(self) + end + + # Whether to perform a full rebuild without incremental regeneration + # + # Returns a Boolean: true for a full rebuild, false for normal build + def incremental?(override = {}) + override["incremental"] || config["incremental"] + end + + # Returns the publisher or creates a new publisher if it doesn't + # already exist. + # + # Returns The Publisher + def publisher + @publisher ||= Publisher.new(self) + end + + # Public: Prefix a given path with the source directory. + # + # paths - (optional) path elements to a file or directory within the + # source directory + # + # Returns a path which is prefixed with the source directory. + def in_source_dir(*paths) + paths.reduce(source) do |base, path| + Jekyll.sanitized_path(base, path) + end + end + + # Public: Prefix a given path with the theme directory. + # + # paths - (optional) path elements to a file or directory within the + # theme directory + # + # Returns a path which is prefixed with the theme root directory. + def in_theme_dir(*paths) + return nil unless theme + paths.reduce(theme.root) do |base, path| + Jekyll.sanitized_path(base, path) + end + end + + # Public: Prefix a given path with the destination directory. + # + # paths - (optional) path elements to a file or directory within the + # destination directory + # + # Returns a path which is prefixed with the destination directory. + def in_dest_dir(*paths) + paths.reduce(dest) do |base, path| + Jekyll.sanitized_path(base, path) + end + end + + # Public: The full path to the directory that houses all the collections registered + # with the current site. + # + # Returns the source directory or the absolute path to the custom collections_dir + def collections_path + dir_str = config["collections_dir"] + @collections_path ||= dir_str.empty? ? source : in_source_dir(dir_str) + end + + # Limits the current posts; removes the posts which exceed the limit_posts + # + # Returns nothing + private + def limit_posts! + if limit_posts > 0 + limit = posts.docs.length < limit_posts ? posts.docs.length : limit_posts + self.posts.docs = posts.docs[-limit, limit] + end + end + + # Returns the Cleaner or creates a new Cleaner if it doesn't + # already exist. + # + # Returns The Cleaner + private + def site_cleaner + @site_cleaner ||= Cleaner.new(self) + end + + private + def configure_plugins + self.plugin_manager = Jekyll::PluginManager.new(self) + self.plugins = plugin_manager.plugins_path + end + + private + def configure_theme + self.theme = nil + return if config["theme"].nil? + + self.theme = + if config["theme"].is_a?(String) + Jekyll::Theme.new(config["theme"]) + else + Jekyll.logger.warn "Theme:", "value of 'theme' in config should be " \ + "String to use gem-based themes, but got #{config["theme"].class}" + nil + end + end + + private + def configure_include_paths + @includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s)) + @includes_load_paths << theme.includes_path if theme && theme.includes_path + end + + private + def configure_file_read_opts + self.file_read_opts = {} + self.file_read_opts[:encoding] = config["encoding"] if config["encoding"] + self.file_read_opts = Jekyll::Utils.merged_file_read_opts(self, {}) + end + + private + def render_docs(payload) + collections.each_value do |collection| + collection.docs.each do |document| + render_regenerated(document, payload) + end + end + end + + private + def render_pages(payload) + pages.flatten.each do |page| + render_regenerated(page, payload) + end + end + + private + def render_regenerated(document, payload) + return unless regenerator.regenerate?(document) + document.output = Jekyll::Renderer.new(self, document, payload).run + document.trigger_hooks(:post_render) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/static_file.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/static_file.rb new file mode 100644 index 0000000000..ea89b6d2be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/static_file.rb @@ -0,0 +1,167 @@ +# frozen_string_literal: true + +module Jekyll + class StaticFile + extend Forwardable + + attr_reader :relative_path, :extname, :name, :data + + def_delegator :to_liquid, :to_json, :to_json + + class << self + # The cache of last modification times [path] -> mtime. + def mtimes + @mtimes ||= {} + end + + def reset_cache + @mtimes = nil + end + end + + # Initialize a new StaticFile. + # + # site - The Site. + # base - The String path to the . + # dir - The String path between and the file. + # name - The String filename of the file. + # rubocop: disable ParameterLists + def initialize(site, base, dir, name, collection = nil) + @site = site + @base = base + @dir = dir + @name = name + @collection = collection + @relative_path = File.join(*[@dir, @name].compact) + @extname = File.extname(@name) + @data = @site.frontmatter_defaults.all(relative_path, type) + end + # rubocop: enable ParameterLists + + # Returns source file path. + def path + # Static file is from a collection inside custom collections directory + if !@collection.nil? && !@site.config["collections_dir"].empty? + File.join(*[@base, @site.config["collections_dir"], @dir, @name].compact) + else + File.join(*[@base, @dir, @name].compact) + end + end + + # Obtain destination path. + # + # dest - The String path to the destination dir. + # + # Returns destination file path. + def destination(dest) + @site.in_dest_dir(*[dest, destination_rel_dir, @name].compact) + end + + def destination_rel_dir + if @collection + File.dirname(url) + else + @dir + end + end + + def modified_time + @modified_time ||= File.stat(path).mtime + end + + # Returns last modification time for this file. + def mtime + modified_time.to_i + end + + # Is source path modified? + # + # Returns true if modified since last write. + def modified? + self.class.mtimes[path] != mtime + end + + # Whether to write the file to the filesystem + # + # Returns true unless the defaults for the destination path from + # _config.yml contain `published: false`. + def write? + defaults.fetch("published", true) + end + + # Write the static file to the destination directory (if modified). + # + # dest - The String path to the destination dir. + # + # Returns false if the file was not modified since last time (no-op). + def write(dest) + dest_path = destination(dest) + + return false if File.exist?(dest_path) && !modified? + self.class.mtimes[path] = mtime + + FileUtils.mkdir_p(File.dirname(dest_path)) + FileUtils.rm(dest_path) if File.exist?(dest_path) + copy_file(dest_path) + + true + end + + def to_liquid + @to_liquid ||= Drops::StaticFileDrop.new(self) + end + + def basename + File.basename(name, extname) + end + + def placeholders + { + :collection => @collection.label, + :path => relative_path[ + @collection.relative_directory.size..relative_path.size], + :output_ext => "", + :name => "", + :title => "", + } + end + + # Applies a similar URL-building technique as Jekyll::Document that takes + # the collection's URL template into account. The default URL template can + # be overriden in the collection's configuration in _config.yml. + def url + @url ||= if @collection.nil? + relative_path + else + ::Jekyll::URL.new({ + :template => @collection.url_template, + :placeholders => placeholders, + }) + end.to_s.chomp("/") + end + + # Returns the type of the collection if present, nil otherwise. + def type + @type ||= @collection.nil? ? nil : @collection.label.to_sym + end + + # Returns the front matter defaults defined for the file's URL and/or type + # as defined in _config.yml. + def defaults + @defaults ||= @site.frontmatter_defaults.all url, type + end + + private + def copy_file(dest_path) + if @site.safe || Jekyll.env == "production" + FileUtils.cp(path, dest_path) + else + FileUtils.copy_entry(path, dest_path) + end + + unless File.symlink?(dest_path) + File.utime(self.class.mtimes[path], self.class.mtimes[path], dest_path) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/stevenson.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/stevenson.rb new file mode 100644 index 0000000000..bbec66171f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/stevenson.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +module Jekyll + class Stevenson < ::Logger + def initialize + @progname = nil + @level = DEBUG + @default_formatter = Formatter.new + @logdev = $stdout + @formatter = proc do |_, _, _, msg| + msg.to_s + end + end + + def add(severity, message = nil, progname = nil) + severity ||= UNKNOWN + @logdev = logdevice(severity) + + if @logdev.nil? || severity < @level + return true + end + progname ||= @progname + if message.nil? + if block_given? + message = yield + else + message = progname + progname = @progname + end + end + @logdev.puts( + format_message(format_severity(severity), Time.now, progname, message) + ) + true + end + + # Log a +WARN+ message + def warn(progname = nil, &block) + add(WARN, nil, progname.yellow, &block) + end + + # Log an +ERROR+ message + def error(progname = nil, &block) + add(ERROR, nil, progname.red, &block) + end + + def close + # No LogDevice in use + end + + private + + def logdevice(severity) + if severity > INFO + $stderr + else + $stdout + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/highlight.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/highlight.rb new file mode 100644 index 0000000000..37fbec2c6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/highlight.rb @@ -0,0 +1,142 @@ +# frozen_string_literal: true + +module Jekyll + module Tags + class HighlightBlock < Liquid::Block + include Liquid::StandardFilters + + # The regular expression syntax checker. Start with the language specifier. + # Follow that by zero or more space separated options that take one of three + # forms: name, name=value, or name="" + # + # is a space-separated list of numbers + SYNTAX = %r!^([a-zA-Z0-9.+#_-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$! + + def initialize(tag_name, markup, tokens) + super + if markup.strip =~ SYNTAX + @lang = Regexp.last_match(1).downcase + @highlight_options = parse_options(Regexp.last_match(2)) + else + raise SyntaxError, <<-MSG +Syntax Error in tag 'highlight' while parsing the following markup: + + #{markup} + +Valid syntax: highlight [linenos] +MSG + end + end + + def render(context) + prefix = context["highlighter_prefix"] || "" + suffix = context["highlighter_suffix"] || "" + code = super.to_s.gsub(%r!\A(\n|\r)+|(\n|\r)+\z!, "") + + is_safe = !!context.registers[:site].safe + + output = + case context.registers[:site].highlighter + when "pygments" + render_pygments(code, is_safe) + when "rouge" + render_rouge(code) + else + render_codehighlighter(code) + end + + rendered_output = add_code_tag(output) + prefix + rendered_output + suffix + end + + def sanitized_opts(opts, is_safe) + if is_safe + Hash[[ + [:startinline, opts.fetch(:startinline, nil)], + [:hl_lines, opts.fetch(:hl_lines, nil)], + [:linenos, opts.fetch(:linenos, nil)], + [:encoding, opts.fetch(:encoding, "utf-8")], + [:cssclass, opts.fetch(:cssclass, nil)], + ].reject { |f| f.last.nil? }] + else + opts + end + end + + private + + OPTIONS_REGEX = %r!(?:\w="[^"]*"|\w=\w|\w)+! + + def parse_options(input) + options = {} + return options if input.empty? + + # Split along 3 possible forms -- key="", key=value, or key + input.scan(OPTIONS_REGEX) do |opt| + key, value = opt.split("=") + # If a quoted list, convert to array + if value && value.include?('"') + value.delete!('"') + value = value.split + end + options[key.to_sym] = value || true + end + + options[:linenos] = "inline" if options[:linenos] == true + options + end + + def render_pygments(code, is_safe) + Jekyll::External.require_with_graceful_fail("pygments") unless defined?(Pygments) + + highlighted_code = Pygments.highlight( + code, + :lexer => @lang, + :options => sanitized_opts(@highlight_options, is_safe) + ) + + if highlighted_code.nil? + Jekyll.logger.error <<-MSG +There was an error highlighting your code: + +#{code} + +While attempting to convert the above code, Pygments.rb returned an unacceptable value. +This is usually a timeout problem solved by running `jekyll build` again. +MSG + raise ArgumentError, "Pygments.rb returned an unacceptable value "\ + "when attempting to highlight some code." + end + + highlighted_code.sub('
                ', "").sub("
                ", "") + end + + def render_rouge(code) + formatter = Jekyll::Utils::Rouge.html_formatter( + :line_numbers => @highlight_options[:linenos], + :wrap => false, + :css_class => "highlight", + :gutter_class => "gutter", + :code_class => "code" + ) + lexer = ::Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText + formatter.format(lexer.lex(code)) + end + + def render_codehighlighter(code) + h(code).strip + end + + def add_code_tag(code) + code_attributes = [ + "class=\"language-#{@lang.to_s.tr("+", "-")}\"", + "data-lang=\"#{@lang}\"", + ].join(" ") + "
                "\
                +        "#{code.chomp}
                " + end + end + end +end + +Liquid::Template.register_tag("highlight", Jekyll::Tags::HighlightBlock) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/include.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/include.rb new file mode 100644 index 0000000000..0ee983dc17 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/include.rb @@ -0,0 +1,235 @@ +# frozen_string_literal: true + +module Jekyll + module Tags + class IncludeTagError < StandardError + attr_accessor :path + + def initialize(msg, path) + super(msg) + @path = path + end + end + + class IncludeTag < Liquid::Tag + VALID_SYNTAX = %r! + ([\w-]+)\s*=\s* + (?:"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'|([\w\.-]+)) + !x + VARIABLE_SYNTAX = %r! + (?[^{]*(\{\{\s*[\w\-\.]+\s*(\|.*)?\}\}[^\s{}]*)+) + (?.*) + !mx + + FULL_VALID_SYNTAX = %r!\A\s*(?:#{VALID_SYNTAX}(?=\s|\z)\s*)*\z! + VALID_FILENAME_CHARS = %r!^[\w/\.-]+$! + INVALID_SEQUENCES = %r![./]{2,}! + + def initialize(tag_name, markup, tokens) + super + matched = markup.strip.match(VARIABLE_SYNTAX) + if matched + @file = matched["variable"].strip + @params = matched["params"].strip + else + @file, @params = markup.strip.split(%r!\s+!, 2) + end + validate_params if @params + @tag_name = tag_name + end + + def syntax_example + "{% #{@tag_name} file.ext param='value' param2='value' %}" + end + + def parse_params(context) + params = {} + markup = @params + + while (match = VALID_SYNTAX.match(markup)) + markup = markup[match.end(0)..-1] + + value = if match[2] + match[2].gsub(%r!\\"!, '"') + elsif match[3] + match[3].gsub(%r!\\'!, "'") + elsif match[4] + context[match[4]] + end + + params[match[1]] = value + end + params + end + + def validate_file_name(file) + if file =~ INVALID_SEQUENCES || file !~ VALID_FILENAME_CHARS + raise ArgumentError, <<-MSG +Invalid syntax for include tag. File contains invalid characters or sequences: + + #{file} + +Valid syntax: + + #{syntax_example} + +MSG + end + end + + def validate_params + unless @params =~ FULL_VALID_SYNTAX + raise ArgumentError, <<-MSG +Invalid syntax for include tag: + + #{@params} + +Valid syntax: + + #{syntax_example} + +MSG + end + end + + # Grab file read opts in the context + def file_read_opts(context) + context.registers[:site].file_read_opts + end + + # Render the variable if required + def render_variable(context) + if @file =~ VARIABLE_SYNTAX + partial = context.registers[:site] + .liquid_renderer + .file("(variable)") + .parse(@file) + partial.render!(context) + end + end + + def tag_includes_dirs(context) + context.registers[:site].includes_load_paths.freeze + end + + def locate_include_file(context, file, safe) + includes_dirs = tag_includes_dirs(context) + includes_dirs.each do |dir| + path = File.join(dir.to_s, file.to_s) + return path if valid_include_file?(path, dir.to_s, safe) + end + raise IOError, could_not_locate_message(file, includes_dirs, safe) + end + + def render(context) + site = context.registers[:site] + + file = render_variable(context) || @file + validate_file_name(file) + + path = locate_include_file(context, file, site.safe) + return unless path + + add_include_to_dependency(site, path, context) + + partial = load_cached_partial(path, context) + + context.stack do + context["include"] = parse_params(context) if @params + begin + partial.render!(context) + rescue Liquid::Error => e + e.template_name = path + e.markup_context = "included " if e.markup_context.nil? + raise e + end + end + end + + def add_include_to_dependency(site, path, context) + if context.registers[:page] && context.registers[:page].key?("path") + site.regenerator.add_dependency( + site.in_source_dir(context.registers[:page]["path"]), + path + ) + end + end + + def load_cached_partial(path, context) + context.registers[:cached_partials] ||= {} + cached_partial = context.registers[:cached_partials] + + if cached_partial.key?(path) + cached_partial[path] + else + unparsed_file = context.registers[:site] + .liquid_renderer + .file(path) + begin + cached_partial[path] = unparsed_file.parse(read_file(path, context)) + rescue Liquid::Error => e + e.template_name = path + e.markup_context = "included " if e.markup_context.nil? + raise e + end + end + end + + def valid_include_file?(path, dir, safe) + !outside_site_source?(path, dir, safe) && File.file?(path) + end + + def outside_site_source?(path, dir, safe) + safe && !realpath_prefixed_with?(path, dir) + end + + def realpath_prefixed_with?(path, dir) + File.exist?(path) && File.realpath(path).start_with?(dir) + rescue StandardError + false + end + + # This method allows to modify the file content by inheriting from the class. + def read_file(file, context) + File.read(file, file_read_opts(context)) + end + + private + + def could_not_locate_message(file, includes_dirs, safe) + message = "Could not locate the included file '#{file}' in any of "\ + "#{includes_dirs}. Ensure it exists in one of those directories and" + message + if safe + " is not a symlink as those are not allowed in safe mode." + else + ", if it is a symlink, does not point outside your site source." + end + end + end + + class IncludeRelativeTag < IncludeTag + def tag_includes_dirs(context) + Array(page_path(context)).freeze + end + + def page_path(context) + if context.registers[:page].nil? + context.registers[:site].source + else + site = context.registers[:site] + page_payload = context.registers[:page] + resource_path = \ + if page_payload["collection"].nil? + page_payload["path"] + else + File.join(site.config["collections_dir"], page_payload["path"]) + end + site.in_source_dir File.dirname(resource_path) + end + end + end + end +end + +Liquid::Template.register_tag("include", Jekyll::Tags::IncludeTag) +Liquid::Template.register_tag("include_relative", Jekyll::Tags::IncludeRelativeTag) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/link.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/link.rb new file mode 100644 index 0000000000..b3f5a2ad40 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/link.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module Jekyll + module Tags + class Link < Liquid::Tag + class << self + def tag_name + self.name.split("::").last.downcase + end + end + + def initialize(tag_name, relative_path, tokens) + super + + @relative_path = relative_path.strip + end + + def render(context) + site = context.registers[:site] + + site.each_site_file do |item| + return item.url if item.relative_path == @relative_path + # This takes care of the case for static files that have a leading / + return item.url if item.relative_path == "/#{@relative_path}" + end + + raise ArgumentError, <<-MSG +Could not find document '#{@relative_path}' in tag '#{self.class.tag_name}'. + +Make sure the document exists and the path is correct. +MSG + end + end + end +end + +Liquid::Template.register_tag(Jekyll::Tags::Link.tag_name, Jekyll::Tags::Link) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/post_url.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/post_url.rb new file mode 100644 index 0000000000..db0b3fa06f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/tags/post_url.rb @@ -0,0 +1,103 @@ +# frozen_string_literal: true + +module Jekyll + module Tags + class PostComparer + MATCHER = %r!^(.+/)*(\d+-\d+-\d+)-(.*)$! + + attr_reader :path, :date, :slug, :name + + def initialize(name) + @name = name + + all, @path, @date, @slug = *name.sub(%r!^/!, "").match(MATCHER) + unless all + raise Jekyll::Errors::InvalidPostNameError, + "'#{name}' does not contain valid date and/or title." + end + + escaped_slug = Regexp.escape(slug) + @name_regex = %r!^_posts/#{path}#{date}-#{escaped_slug}\.[^.]+| + ^#{path}_posts/?#{date}-#{escaped_slug}\.[^.]+!x + end + + def post_date + @post_date ||= Utils.parse_date(date, + "\"#{date}\" does not contain valid date and/or title.") + end + + def ==(other) + other.relative_path.match(@name_regex) + end + + def deprecated_equality(other) + slug == post_slug(other) && + post_date.year == other.date.year && + post_date.month == other.date.month && + post_date.day == other.date.day + end + + private + # Construct the directory-aware post slug for a Jekyll::Post + # + # other - the Jekyll::Post + # + # Returns the post slug with the subdirectory (relative to _posts) + def post_slug(other) + path = other.basename.split("/")[0...-1].join("/") + if path.nil? || path == "" + other.data["slug"] + else + path + "/" + other.data["slug"] + end + end + end + + class PostUrl < Liquid::Tag + def initialize(tag_name, post, tokens) + super + @orig_post = post.strip + begin + @post = PostComparer.new(@orig_post) + rescue StandardError => e + raise Jekyll::Errors::PostURLError, <<-MSG +Could not parse name of post "#{@orig_post}" in tag 'post_url'. + +Make sure the post exists and the name is correct. + +#{e.class}: #{e.message} +MSG + end + end + + def render(context) + site = context.registers[:site] + + site.posts.docs.each do |p| + return p.url if @post == p + end + + # New matching method did not match, fall back to old method + # with deprecation warning if this matches + + site.posts.docs.each do |p| + next unless @post.deprecated_equality p + Jekyll::Deprecator.deprecation_message "A call to "\ + "'{% post_url #{@post.name} %}' did not match " \ + "a post using the new matching method of checking name " \ + "(path-date-slug) equality. Please make sure that you " \ + "change this tag to match the post's name exactly." + return p.url + end + + raise Jekyll::Errors::PostURLError, <<-MSG +Could not find post "#{@orig_post}" in tag 'post_url'. + +Make sure the post exists and the name is correct. +MSG + end + end + end +end + +Liquid::Template.register_tag("post_url", Jekyll::Tags::PostUrl) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme.rb new file mode 100644 index 0000000000..a21b4bdfea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +module Jekyll + class Theme + extend Forwardable + attr_reader :name + def_delegator :gemspec, :version, :version + + def initialize(name) + @name = name.downcase.strip + Jekyll.logger.debug "Theme:", name + Jekyll.logger.debug "Theme source:", root + configure_sass + end + + def root + # Must use File.realpath to resolve symlinks created by rbenv + # Otherwise, Jekyll.sanitized path with prepend the unresolved root + @root ||= File.realpath(gemspec.full_gem_path) + rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP + raise "Path #{gemspec.full_gem_path} does not exist, is not accessible "\ + "or includes a symbolic link loop" + end + + def includes_path + @includes_path ||= path_for "_includes".freeze + end + + def layouts_path + @layouts_path ||= path_for "_layouts".freeze + end + + def sass_path + @sass_path ||= path_for "_sass".freeze + end + + def assets_path + @assets_path ||= path_for "assets".freeze + end + + def configure_sass + return unless sass_path + External.require_with_graceful_fail("sass") unless defined?(Sass) + Sass.load_paths << sass_path + end + + def runtime_dependencies + gemspec.runtime_dependencies + end + + private + + def path_for(folder) + path = realpath_for(folder) + path if path && File.directory?(path) + end + + def realpath_for(folder) + File.realpath(Jekyll.sanitized_path(root, folder.to_s)) + rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP + Jekyll.logger.warn "Invalid theme folder:", folder + nil + end + + def gemspec + @gemspec ||= Gem::Specification.find_by_name(name) + rescue Gem::LoadError + raise Jekyll::Errors::MissingDependencyException, + "The #{name} theme could not be found." + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme_builder.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme_builder.rb new file mode 100644 index 0000000000..36ef71611d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/theme_builder.rb @@ -0,0 +1,119 @@ +# frozen_string_literal: true + +class Jekyll::ThemeBuilder + SCAFFOLD_DIRECTORIES = %w( + assets _layouts _includes _sass + ).freeze + + attr_reader :name, :path, :code_of_conduct + + def initialize(theme_name, opts) + @name = theme_name.to_s.tr(" ", "_").squeeze("_") + @path = Pathname.new(File.expand_path(name, Dir.pwd)) + @code_of_conduct = !!opts["code_of_conduct"] + end + + def create! + create_directories + create_starter_files + create_gemspec + create_accessories + initialize_git_repo + end + + def user_name + @user_name ||= `git config user.name`.chomp + end + + def user_email + @user_email ||= `git config user.email`.chomp + end + + private + + def root + @root ||= Pathname.new(File.expand_path("../", __dir__)) + end + + def template_file(filename) + [ + root.join("theme_template", "#{filename}.erb"), + root.join("theme_template", filename.to_s), + ].find(&:exist?) + end + + def template(filename) + erb.render(template_file(filename).read) + end + + def erb + @erb ||= ERBRenderer.new(self) + end + + def mkdir_p(directories) + Array(directories).each do |directory| + full_path = path.join(directory) + Jekyll.logger.info "create", full_path.to_s + FileUtils.mkdir_p(full_path) + end + end + + def write_file(filename, contents) + full_path = path.join(filename) + Jekyll.logger.info "create", full_path.to_s + File.write(full_path, contents) + end + + def create_directories + mkdir_p(SCAFFOLD_DIRECTORIES) + end + + def create_starter_files + %w(page post default).each do |layout| + write_file("_layouts/#{layout}.html", template("_layouts/#{layout}.html")) + end + end + + def create_gemspec + write_file("Gemfile", template("Gemfile")) + write_file("#{name}.gemspec", template("theme.gemspec")) + end + + def create_accessories + accessories = %w(README.md LICENSE.txt) + accessories << "CODE_OF_CONDUCT.md" if code_of_conduct + accessories.each do |filename| + write_file(filename, template(filename)) + end + end + + def initialize_git_repo + Jekyll.logger.info "initialize", path.join(".git").to_s + Dir.chdir(path.to_s) { `git init` } + write_file(".gitignore", template("gitignore")) + end + + class ERBRenderer + extend Forwardable + + def_delegator :@theme_builder, :name, :theme_name + def_delegator :@theme_builder, :user_name, :user_name + def_delegator :@theme_builder, :user_email, :user_email + + def initialize(theme_builder) + @theme_builder = theme_builder + end + + def jekyll_version_with_minor + Jekyll::VERSION.split(".").take(2).join(".") + end + + def theme_directories + SCAFFOLD_DIRECTORIES + end + + def render(contents) + ERB.new(contents).result binding + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/url.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/url.rb new file mode 100644 index 0000000000..87f20e138e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/url.rb @@ -0,0 +1,159 @@ +# frozen_string_literal: true + +# Public: Methods that generate a URL for a resource such as a Post or a Page. +# +# Examples +# +# URL.new({ +# :template => /:categories/:title.html", +# :placeholders => {:categories => "ruby", :title => "something"} +# }).to_s +# +module Jekyll + class URL + # options - One of :permalink or :template must be supplied. + # :template - The String used as template for URL generation, + # for example "/:path/:basename:output_ext", where + # a placeholder is prefixed with a colon. + # :placeholders - A hash containing the placeholders which will be + # replaced when used inside the template. E.g. + # { "year" => Time.now.strftime("%Y") } would replace + # the placeholder ":year" with the current year. + # :permalink - If supplied, no URL will be generated from the + # template. Instead, the given permalink will be + # used as URL. + def initialize(options) + @template = options[:template] + @placeholders = options[:placeholders] || {} + @permalink = options[:permalink] + + if (@template || @permalink).nil? + raise ArgumentError, "One of :template or :permalink must be supplied." + end + end + + # The generated relative URL of the resource + # + # Returns the String URL + def to_s + sanitize_url(generated_permalink || generated_url) + end + + # Generates a URL from the permalink + # + # Returns the _unsanitized String URL + def generated_permalink + (@generated_permalink ||= generate_url(@permalink)) if @permalink + end + + # Generates a URL from the template + # + # Returns the unsanitized String URL + def generated_url + @generated_url ||= generate_url(@template) + end + + # Internal: Generate the URL by replacing all placeholders with their + # respective values in the given template + # + # Returns the unsanitized String URL + def generate_url(template) + if @placeholders.is_a? Drops::UrlDrop + generate_url_from_drop(template) + else + generate_url_from_hash(template) + end + end + + def generate_url_from_hash(template) + @placeholders.inject(template) do |result, token| + break result if result.index(":").nil? + if token.last.nil? + # Remove leading "/" to avoid generating urls with `//` + result.gsub("/:#{token.first}", "") + else + result.gsub(":#{token.first}", self.class.escape_path(token.last)) + end + end + end + + # We include underscores in keys to allow for 'i_month' and so forth. + # This poses a problem for keys which are followed by an underscore + # but the underscore is not part of the key, e.g. '/:month_:day'. + # That should be :month and :day, but our key extraction regexp isn't + # smart enough to know that so we have to make it an explicit + # possibility. + def possible_keys(key) + if key.end_with?("_") + [key, key.chomp("_")] + else + [key] + end + end + + def generate_url_from_drop(template) + template.gsub(%r!:([a-z_]+)!) do |match| + pool = possible_keys(match.sub(":", "")) + + winner = pool.find { |key| @placeholders.key?(key) } + if winner.nil? + raise NoMethodError, + "The URL template doesn't have #{pool.join(" or ")} keys. "\ + "Check your permalink template!" + end + + value = @placeholders[winner] + value = "" if value.nil? + replacement = self.class.escape_path(value) + + match.sub(":#{winner}", replacement) + end.squeeze("/") + end + + # Returns a sanitized String URL, stripping "../../" and multiples of "/", + # as well as the beginning "/" so we can enforce and ensure it. + + def sanitize_url(str) + "/#{str}".gsub("..", "/").gsub("./", "").squeeze("/") + end + + # Escapes a path to be a valid URL path segment + # + # path - The path to be escaped. + # + # Examples: + # + # URL.escape_path("/a b") + # # => "/a%20b" + # + # Returns the escaped path. + def self.escape_path(path) + # Because URI.escape doesn't escape "?", "[" and "]" by default, + # specify unsafe string (except unreserved, sub-delims, ":", "@" and "/"). + # + # URI path segment is defined in RFC 3986 as follows: + # segment = *pchar + # pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + # unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + # pct-encoded = "%" HEXDIG HEXDIG + # sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + # / "*" / "+" / "," / ";" / "=" + path = Addressable::URI.encode(path) + path.encode("utf-8").sub("#", "%23") + end + + # Unescapes a URL path segment + # + # path - The path to be unescaped. + # + # Examples: + # + # URL.unescape_path("/a%20b") + # # => "/a b" + # + # Returns the unescaped path. + def self.unescape_path(path) + Addressable::URI.unencode(path.encode("utf-8")) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils.rb new file mode 100644 index 0000000000..742a862c4e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils.rb @@ -0,0 +1,370 @@ +# frozen_string_literal: true + +module Jekyll + module Utils + extend self + autoload :Ansi, "jekyll/utils/ansi" + autoload :Exec, "jekyll/utils/exec" + autoload :Internet, "jekyll/utils/internet" + autoload :Platforms, "jekyll/utils/platforms" + autoload :Rouge, "jekyll/utils/rouge" + autoload :ThreadEvent, "jekyll/utils/thread_event" + autoload :WinTZ, "jekyll/utils/win_tz" + + # Constants for use in #slugify + SLUGIFY_MODES = %w(raw default pretty ascii latin).freeze + SLUGIFY_RAW_REGEXP = Regexp.new('\\s+').freeze + SLUGIFY_DEFAULT_REGEXP = Regexp.new("[^[:alnum:]]+").freeze + SLUGIFY_PRETTY_REGEXP = Regexp.new("[^[:alnum:]._~!$&'()+,;=@]+").freeze + SLUGIFY_ASCII_REGEXP = Regexp.new("[^[A-Za-z0-9]]+").freeze + + # Takes an indented string and removes the preceding spaces on each line + + def strip_heredoc(str) + str.gsub(%r!^[ \t]{#{(str.scan(%r!^[ \t]*(?=\S)!).min || "").size}}!, "") + end + + # Takes a slug and turns it into a simple title. + + def titleize_slug(slug) + slug.split("-").map!(&:capitalize).join(" ") + end + + # Non-destructive version of deep_merge_hashes! See that method. + # + # Returns the merged hashes. + def deep_merge_hashes(master_hash, other_hash) + deep_merge_hashes!(master_hash.dup, other_hash) + end + + # Merges a master hash with another hash, recursively. + # + # master_hash - the "parent" hash whose values will be overridden + # other_hash - the other hash whose values will be persisted after the merge + # + # This code was lovingly stolen from some random gem: + # http://gemjack.com/gems/tartan-0.1.1/classes/Hash.html + # + # Thanks to whoever made it. + def deep_merge_hashes!(target, overwrite) + merge_values(target, overwrite) + merge_default_proc(target, overwrite) + duplicate_frozen_values(target) + + target + end + + def mergable?(value) + value.is_a?(Hash) || value.is_a?(Drops::Drop) + end + + def duplicable?(obj) + case obj + when nil, false, true, Symbol, Numeric + false + else + true + end + end + + # Read array from the supplied hash favouring the singular key + # and then the plural key, and handling any nil entries. + # + # hash - the hash to read from + # singular_key - the singular key + # plural_key - the plural key + # + # Returns an array + def pluralized_array_from_hash(hash, singular_key, plural_key) + [].tap do |array| + value = value_from_singular_key(hash, singular_key) + value ||= value_from_plural_key(hash, plural_key) + array << value + end.flatten.compact + end + + def value_from_singular_key(hash, key) + hash[key] if hash.key?(key) || (hash.default_proc && hash[key]) + end + + def value_from_plural_key(hash, key) + if hash.key?(key) || (hash.default_proc && hash[key]) + val = hash[key] + case val + when String + val.split + when Array + val.compact + end + end + end + + def transform_keys(hash) + result = {} + hash.each_key do |key| + result[yield(key)] = hash[key] + end + result + end + + # Apply #to_sym to all keys in the hash + # + # hash - the hash to which to apply this transformation + # + # Returns a new hash with symbolized keys + def symbolize_hash_keys(hash) + transform_keys(hash) { |key| key.to_sym rescue key } + end + + # Apply #to_s to all keys in the Hash + # + # hash - the hash to which to apply this transformation + # + # Returns a new hash with stringified keys + def stringify_hash_keys(hash) + transform_keys(hash) { |key| key.to_s rescue key } + end + + # Parse a date/time and throw an error if invalid + # + # input - the date/time to parse + # msg - (optional) the error message to show the user + # + # Returns the parsed date if successful, throws a FatalException + # if not + def parse_date(input, msg = "Input could not be parsed.") + Time.parse(input).localtime + rescue ArgumentError + raise Errors::InvalidDateError, "Invalid date '#{input}': #{msg}" + end + + # Determines whether a given file has + # + # Returns true if the YAML front matter is present. + # rubocop: disable PredicateName + def has_yaml_header?(file) + !!(File.open(file, "rb", &:readline) =~ %r!\A---\s*\r?\n!) + rescue EOFError + false + end + + # Determine whether the given content string contains Liquid Tags or Vaiables + # + # Returns true is the string contains sequences of `{%` or `{{` + def has_liquid_construct?(content) + return false if content.nil? || content.empty? + content.include?("{%") || content.include?("{{") + end + # rubocop: enable PredicateName + + # Slugify a filename or title. + # + # string - the filename or title to slugify + # mode - how string is slugified + # cased - whether to replace all uppercase letters with their + # lowercase counterparts + # + # When mode is "none", return the given string. + # + # When mode is "raw", return the given string, + # with every sequence of spaces characters replaced with a hyphen. + # + # When mode is "default" or nil, non-alphabetic characters are + # replaced with a hyphen too. + # + # When mode is "pretty", some non-alphabetic characters (._~!$&'()+,;=@) + # are not replaced with hyphen. + # + # When mode is "ascii", some everything else except ASCII characters + # a-z (lowercase), A-Z (uppercase) and 0-9 (numbers) are not replaced with hyphen. + # + # When mode is "latin", the input string is first preprocessed so that + # any letters with accents are replaced with the plain letter. Afterwards, + # it follows the "default" mode of operation. + # + # If cased is true, all uppercase letters in the result string are + # replaced with their lowercase counterparts. + # + # Examples: + # slugify("The _config.yml file") + # # => "the-config-yml-file" + # + # slugify("The _config.yml file", "pretty") + # # => "the-_config.yml-file" + # + # slugify("The _config.yml file", "pretty", true) + # # => "The-_config.yml file" + # + # slugify("The _config.yml file", "ascii") + # # => "the-config-yml-file" + # + # slugify("The _config.yml file", "latin") + # # => "the-config-yml-file" + # + # Returns the slugified string. + def slugify(string, mode: nil, cased: false) + mode ||= "default" + return nil if string.nil? + + unless SLUGIFY_MODES.include?(mode) + return cased ? string : string.downcase + end + + # Drop accent marks from latin characters. Everything else turns to ? + if mode == "latin" + I18n.config.available_locales = :en if I18n.config.available_locales.empty? + string = I18n.transliterate(string) + end + + slug = replace_character_sequence_with_hyphen(string, :mode => mode) + + # Remove leading/trailing hyphen + slug.gsub!(%r!^\-|\-$!i, "") + + slug.downcase! unless cased + slug + end + + # Add an appropriate suffix to template so that it matches the specified + # permalink style. + # + # template - permalink template without trailing slash or file extension + # permalink_style - permalink style, either built-in or custom + # + # The returned permalink template will use the same ending style as + # specified in permalink_style. For example, if permalink_style contains a + # trailing slash (or is :pretty, which indirectly has a trailing slash), + # then so will the returned template. If permalink_style has a trailing + # ":output_ext" (or is :none, :date, or :ordinal) then so will the returned + # template. Otherwise, template will be returned without modification. + # + # Examples: + # add_permalink_suffix("/:basename", :pretty) + # # => "/:basename/" + # + # add_permalink_suffix("/:basename", :date) + # # => "/:basename:output_ext" + # + # add_permalink_suffix("/:basename", "/:year/:month/:title/") + # # => "/:basename/" + # + # add_permalink_suffix("/:basename", "/:year/:month/:title") + # # => "/:basename" + # + # Returns the updated permalink template + def add_permalink_suffix(template, permalink_style) + template = template.dup + + case permalink_style + when :pretty + template << "/" + when :date, :ordinal, :none + template << ":output_ext" + else + template << "/" if permalink_style.to_s.end_with?("/") + template << ":output_ext" if permalink_style.to_s.end_with?(":output_ext") + end + + template + end + + # Work the same way as Dir.glob but seperating the input into two parts + # ('dir' + '/' + 'pattern') to make sure the first part('dir') does not act + # as a pattern. + # + # For example, Dir.glob("path[/*") always returns an empty array, + # because the method fails to find the closing pattern to '[' which is ']' + # + # Examples: + # safe_glob("path[", "*") + # # => ["path[/file1", "path[/file2"] + # + # safe_glob("path", "*", File::FNM_DOTMATCH) + # # => ["path/.", "path/..", "path/file1"] + # + # safe_glob("path", ["**", "*"]) + # # => ["path[/file1", "path[/folder/file2"] + # + # dir - the dir where glob will be executed under + # (the dir will be included to each result) + # patterns - the patterns (or the pattern) which will be applied under the dir + # flags - the flags which will be applied to the pattern + # + # Returns matched pathes + def safe_glob(dir, patterns, flags = 0) + return [] unless Dir.exist?(dir) + pattern = File.join(Array(patterns)) + return [dir] if pattern.empty? + Dir.chdir(dir) do + Dir.glob(pattern, flags).map { |f| File.join(dir, f) } + end + end + + # Returns merged option hash for File.read of self.site (if exists) + # and a given param + def merged_file_read_opts(site, opts) + merged = (site ? site.file_read_opts : {}).merge(opts) + if merged[:encoding] && !merged[:encoding].start_with?("bom|") + merged[:encoding] = "bom|#{merged[:encoding]}" + end + if merged["encoding"] && !merged["encoding"].start_with?("bom|") + merged["encoding"] = "bom|#{merged["encoding"]}" + end + merged + end + + private + def merge_values(target, overwrite) + target.merge!(overwrite) do |_key, old_val, new_val| + if new_val.nil? + old_val + elsif mergable?(old_val) && mergable?(new_val) + deep_merge_hashes(old_val, new_val) + else + new_val + end + end + end + + private + def merge_default_proc(target, overwrite) + if target.is_a?(Hash) && overwrite.is_a?(Hash) && target.default_proc.nil? + target.default_proc = overwrite.default_proc + end + end + + private + def duplicate_frozen_values(target) + target.each do |key, val| + target[key] = val.dup if val.frozen? && duplicable?(val) + end + end + + # Replace each character sequence with a hyphen. + # + # See Utils#slugify for a description of the character sequence specified + # by each mode. + private + def replace_character_sequence_with_hyphen(string, mode: "default") + replaceable_char = + case mode + when "raw" + SLUGIFY_RAW_REGEXP + when "pretty" + # "._~!$&'()+,;=@" is human readable (not URI-escaped) in URL + # and is allowed in both extN and NTFS. + SLUGIFY_PRETTY_REGEXP + when "ascii" + # For web servers not being able to handle Unicode, the safe + # method is to ditch anything else but latin letters and numeric + # digits. + SLUGIFY_ASCII_REGEXP + else + SLUGIFY_DEFAULT_REGEXP + end + + # Strip according to the mode + string.gsub(replaceable_char, "-") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/ansi.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/ansi.rb new file mode 100644 index 0000000000..b680528eb9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/ansi.rb @@ -0,0 +1,57 @@ +# Frozen-string-literal: true + +module Jekyll + module Utils + module Ansi + extend self + + ESCAPE = format("%c", 27) + MATCH = %r!#{ESCAPE}\[(?:\d+)(?:;\d+)*(j|k|m|s|u|A|B|G)|\e\(B\e\[m!ix + COLORS = { + :red => 31, + :green => 32, + :black => 30, + :magenta => 35, + :yellow => 33, + :white => 37, + :blue => 34, + :cyan => 36, + }.freeze + + # Strip ANSI from the current string. It also strips cursor stuff, + # well some of it, and it also strips some other stuff that a lot of + # the other ANSI strippers don't. + + def strip(str) + str.gsub MATCH, "" + end + + # + + def has?(str) + !!(str =~ MATCH) + end + + # Reset the color back to the default color so that you do not leak any + # colors when you move onto the next line. This is probably normally + # used as part of a wrapper so that we don't leak colors. + + def reset(str = "") + @ansi_reset ||= format("%c[0m", 27) + "#{@ansi_reset}#{str}" + end + + # SEE: `self::COLORS` for a list of methods. They are mostly + # standard base colors supported by pretty much any xterm-color, we do + # not need more than the base colors so we do not include them. + # Actually... if I'm honest we don't even need most of the + # base colors. + + COLORS.each do |color, num| + define_method color do |str| + "#{format("%c", 27)}[#{num}m#{str}#{reset}" + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/exec.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/exec.rb new file mode 100644 index 0000000000..fee8b2d2e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/exec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require "open3" + +module Jekyll + module Utils + module Exec + extend self + + # Runs a program in a sub-shell. + # + # *args - a list of strings containing the program name and arguments + # + # Returns a Process::Status and a String of output in an array in + # that order. + def run(*args) + stdin, stdout, stderr, process = Open3.popen3(*args) + out = stdout.read.strip + err = stderr.read.strip + + [stdin, stdout, stderr].each(&:close) + [process.value, out + err] + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/internet.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/internet.rb new file mode 100644 index 0000000000..f895596c54 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/internet.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Jekyll + module Utils + module Internet + + # Public: Determine whether the present device has a connection to + # the Internet. This allows plugin writers which require the outside + # world to have a neat fallback mechanism for offline building. + # + # Example: + # if Internet.connected? + # Typhoeus.get("https://pages.github.com/versions.json") + # else + # Jekyll.logger.warn "Warning:", "Version check has been disabled." + # Jekyll.logger.warn "", "Connect to the Internet to enable it." + # nil + # end + # + # Returns true if a DNS call can successfully be made, or false if not. + module_function + def connected? + !dns("example.com").nil? + end + + private + module_function + def dns(domain) + require "resolv" + Resolv::DNS.open do |resolver| + resolver.getaddress(domain) + end + rescue Resolv::ResolvError, Resolv::ResolvTimeout + nil + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/platforms.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/platforms.rb new file mode 100644 index 0000000000..6665527a72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/platforms.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +module Jekyll + module Utils + module Platforms + extend self + + # Provides jruby? and mri? which respectively detect these two types of + # tested Engines we support, in the future we might probably support the + # other one that everyone used to talk about. + + { :jruby? => "jruby", :mri? => "ruby" }.each do |k, v| + define_method k do + ::RUBY_ENGINE == v + end + end + + # -- + # Allows you to detect "real" Windows, or what we would consider + # "real" Windows. That is, that we can pass the basic test and the + # /proc/version returns nothing to us. + # -- + + def vanilla_windows? + RbConfig::CONFIG["host_os"] =~ %r!mswin|mingw|cygwin!i && \ + !proc_version + end + + # -- + # XXX: Remove in 4.0 + # -- + + alias_method :really_windows?, \ + :vanilla_windows? + + # + + def bash_on_windows? + RbConfig::CONFIG["host_os"] =~ %r!linux! && \ + proc_version =~ %r!microsoft!i + end + + # + + def windows? + vanilla_windows? || bash_on_windows? + end + + # + + def linux? + RbConfig::CONFIG["host_os"] =~ %r!linux! && \ + proc_version !~ %r!microsoft!i + end + + # Provides windows?, linux?, osx?, unix? so that we can detect + # platforms. This is mostly useful for `jekyll doctor` and for testing + # where we kick off certain tests based on the platform. + + { :osx? => %r!darwin|mac os!, :unix? => %r!solaris|bsd! }.each do |k, v| + define_method k do + !!( + RbConfig::CONFIG["host_os"] =~ v + ) + end + end + + # + + private + def proc_version + @proc_version ||= begin + Pathutil.new( + "/proc/version" + ).read + rescue Errno::ENOENT + nil + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/rouge.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/rouge.rb new file mode 100644 index 0000000000..9afc689fe8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/rouge.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +Jekyll::External.require_with_graceful_fail("rouge") + +module Jekyll + module Utils + module Rouge + + def self.html_formatter(*args) + if old_api? + ::Rouge::Formatters::HTML.new(*args) + else + ::Rouge::Formatters::HTMLLegacy.new(*args) + end + end + + def self.old_api? + ::Rouge.version.to_s < "2" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/thread_event.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/thread_event.rb new file mode 100644 index 0000000000..5afb50d93e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/thread_event.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require "thread" + +module Jekyll + module Utils + # Based on the pattern and code from + # https://emptysqua.re/blog/an-event-synchronization-primitive-for-ruby/ + class ThreadEvent + attr_reader :flag + + def initialize + @lock = Mutex.new + @cond = ConditionVariable.new + @flag = false + end + + def set + @lock.synchronize do + yield if block_given? + @flag = true + @cond.broadcast + end + end + + def wait + @lock.synchronize do + unless @flag + @cond.wait(@lock) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/win_tz.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/win_tz.rb new file mode 100644 index 0000000000..239650f71f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/utils/win_tz.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +module Jekyll + module Utils + module WinTZ + extend self + + # Public: Calculate the Timezone for Windows when the config file has a defined + # 'timezone' key. + # + # timezone - the IANA Time Zone specified in "_config.yml" + # + # Returns a string that ultimately re-defines ENV["TZ"] in Windows + def calculate(timezone) + External.require_with_graceful_fail("tzinfo") unless defined?(TZInfo) + tz = TZInfo::Timezone.get(timezone) + difference = Time.now.to_i - tz.now.to_i + # + # POSIX style definition reverses the offset sign. + # e.g. Eastern Standard Time (EST) that is 5Hrs. to the 'west' of Prime Meridian + # is denoted as: + # EST+5 (or) EST+05:00 + # Reference: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + sign = difference < 0 ? "-" : "+" + offset = sign == "-" ? "+" : "-" unless difference.zero? + # + # convert the difference (in seconds) to hours, as a rational number, and perform + # a modulo operation on it. + modulo = modulo_of(rational_hour(difference)) + # + # Format the hour as a two-digit number. + # Establish the minutes based on modulo expression. + hh = format("%02d", absolute_hour(difference).ceil) + mm = modulo.zero? ? "00" : "30" + + Jekyll.logger.debug "Timezone:", "#{timezone} #{offset}#{hh}:#{mm}" + # + # Note: The 3-letter-word below doesn't have a particular significance. + "WTZ#{sign}#{hh}:#{mm}" + end + + private + + # Private: Convert given seconds to an hour as a rational number. + # + # seconds - supplied as an integer, it is converted to a rational number. + # 3600 - no. of seconds in an hour. + # + # Returns a rational number. + def rational_hour(seconds) + seconds.to_r / 3600 + end + + # Private: Convert given seconds to an hour as an absolute number. + # + # seconds - supplied as an integer, it is converted to its absolute. + # 3600 - no. of seconds in an hour. + # + # Returns an integer. + def absolute_hour(seconds) + seconds.abs / 3600 + end + + # Private: Perform a modulo operation on a given fraction. + # + # fraction - supplied as a rational number, its numerator is divided + # by its denominator and the remainder returned. + # + # Returns an integer. + def modulo_of(fraction) + fraction.numerator % fraction.denominator + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/version.rb new file mode 100644 index 0000000000..22907b282e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/jekyll/version.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module Jekyll + VERSION = "3.8.5".freeze +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/.gitignore b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/.gitignore new file mode 100644 index 0000000000..45c150536e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/.gitignore @@ -0,0 +1,3 @@ +_site +.sass-cache +.jekyll-metadata diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/404.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/404.html new file mode 100644 index 0000000000..c472b4ea0a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
                +

                404

                + +

                Page not found :(

                +

                The requested page could not be found.

                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_config.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_config.yml new file mode 100644 index 0000000000..f91333e510 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_config.yml @@ -0,0 +1,43 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Your awesome title +email: your-email@example.com +description: >- # this means to ignore newlines until "baseurl:" + Write an awesome description for your new site here. You can edit this + line in _config.yml. It will appear in your document head meta (for + Google search results) and in your feed.xml site description. +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +twitter_username: jekyllrb +github_username: jekyll + +# Build settings +markdown: kramdown +theme: minima +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb new file mode 100644 index 0000000000..8d8f7c162b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb @@ -0,0 +1,25 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: <%= Time.now.strftime('%Y-%m-%d %H:%M:%S %z') %> +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/about.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/about.md new file mode 100644 index 0000000000..8b4e0b28c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/about.md @@ -0,0 +1,18 @@ +--- +layout: page +title: About +permalink: /about/ +--- + +This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) + +You can find the source code for Minima at GitHub: +[jekyll][jekyll-organization] / +[minima](https://github.com/jekyll/minima) + +You can find the source code for Jekyll at GitHub: +[jekyll][jekyll-organization] / +[jekyll](https://github.com/jekyll/jekyll) + + +[jekyll-organization]: https://github.com/jekyll diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/index.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/index.md new file mode 100644 index 0000000000..0671507841 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/site_template/index.md @@ -0,0 +1,6 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +layout: home +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/CODE_OF_CONDUCT.md.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/CODE_OF_CONDUCT.md.erb new file mode 100644 index 0000000000..2b2c7734f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/CODE_OF_CONDUCT.md.erb @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at <%= user_email %>. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/Gemfile b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/Gemfile new file mode 100644 index 0000000000..bb94df8293 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/Gemfile @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +source "https://rubygems.org" +gemspec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/LICENSE.txt.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/LICENSE.txt.erb new file mode 100644 index 0000000000..38a0eb4e8e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/LICENSE.txt.erb @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) <%= Time.now.year %> <%= user_name %> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/README.md.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/README.md.erb new file mode 100644 index 0000000000..ff8ad05fb2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/README.md.erb @@ -0,0 +1,52 @@ +# <%= theme_name %> + +Welcome to your new Jekyll theme! In this directory, you'll find the files you need to be able to package up your theme into a gem. Put your layouts in `_layouts`, your includes in `_includes`, your sass files in `_sass` and any other assets in `assets`. + +To experiment with this code, add some sample content and run `bundle exec jekyll serve` – this directory is setup just like a Jekyll site! + +TODO: Delete this and the text above, and describe your gem + + +## Installation + +Add this line to your Jekyll site's `Gemfile`: + +```ruby +gem <%= theme_name.inspect %> +``` + +And add this line to your Jekyll site's `_config.yml`: + +```yaml +theme: <%= theme_name %> +``` + +And then execute: + + $ bundle + +Or install it yourself as: + + $ gem install <%= theme_name %> + +## Usage + +TODO: Write usage instructions here. Describe your available layouts, includes, sass and/or assets. + +## Contributing + +Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/hello. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. + +## Development + +To set up your environment to develop this theme, run `bundle install`. + +Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. + +When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled. +To add a custom directory to your theme-gem, please edit the regexp in `<%= theme_name %>.gemspec` accordingly. + +## License + +The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/default.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/default.html new file mode 100644 index 0000000000..cddd07099f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/default.html @@ -0,0 +1 @@ +{{ content }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/page.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/page.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/page.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/post.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/post.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/_layouts/post.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_config.yml.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_config.yml.erb new file mode 100644 index 0000000000..82e8d42df7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_config.yml.erb @@ -0,0 +1 @@ +theme: <%= theme_name %> diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_post.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_post.md new file mode 100644 index 0000000000..145b21de42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/_post.md @@ -0,0 +1,12 @@ +--- +layout: post +--- + +Eos eu docendi tractatos sapientem, brute option menandri in vix, quando vivendo accommodare te ius. Nec melius fastidii constituam id, viderer theophrastus ad sit, hinc semper periculis cum id. Noluisse postulant assentior est in, no choro sadipscing repudiandae vix. Vis in euismod delenit dignissim. Ex quod nostrum sit, suas decore animal id ius, nobis solet detracto quo te. + +{% comment %} +Might you have an include in your theme? Why not try it here! +{% include my-themes-great-include.html %} +{% endcomment %} + +No laudem altera adolescens has, volumus lucilius eum no. Eam ei nulla audiam efficiantur. Suas affert per no, ei tale nibh sea. Sea ne magna harum, in denique scriptorem sea, cetero alienum tibique ei eos. Labores persequeris referrentur eos ei. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/index.html new file mode 100644 index 0000000000..b688538cd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/index.html @@ -0,0 +1,14 @@ +--- +layout: page +--- + +Lorem ipsum dolor sit amet, quo id prima corrumpit pertinacia, id ius dolor dolores, an veri pertinax explicari mea. Agam solum et qui, his id ludus graeco adipiscing. Duis theophrastus nam in, at his vidisse atomorum. Tantas gloriatur scripserit ne eos. Est wisi tempor habemus at, ei graeco dissentiet eos. Ne usu aliquip sanctus conceptam, te vis ignota animal, modus latine contentiones ius te. + +{% for post in site.posts %} +

                {{ post.title }}

                +
                {{ post.excerpt }}
                +{% endfor %} + +Te falli veritus sea, at molestiae scribentur deterruisset vix, et mea zril phaedrum vulputate. No cum dicit consulatu. Ut has nostro noluisse expetendis, te pro quaeque disputando, eu sed summo omnes. Eos at tale aperiam, usu cu propriae quaestio constituto, sed aperiam erroribus temporibus an. + +Quo eu liber mediocritatem, vix an delectus eleifend, iuvaret suscipit ei vel. Partem invenire per an, mea postulant dissentias eu, ius tantas audire nominavi eu. Dicunt tritani veritus ex vis, mei in case sententiae. At exerci democritum nam, cu lobortis iracundia mei. Alia eligendi consectetuer eu sed, paulo docendi noluisse sit ex. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/style.scss b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/style.scss new file mode 100644 index 0000000000..7388f52b36 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/example/style.scss @@ -0,0 +1,7 @@ +--- +--- + +// Here, you can test out the Sass/SCSS that you include in your theme. +// Simply `@import` the necessary file(s) to get the proper styles on the site. +// E.g.: +// @import "a-file-from-my-theme"; diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/gitignore.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/gitignore.erb new file mode 100644 index 0000000000..867d3792d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/gitignore.erb @@ -0,0 +1,5 @@ +*.gem +.bundle +.sass-cache +_site +Gemfile.lock diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/theme.gemspec.erb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/theme.gemspec.erb new file mode 100644 index 0000000000..3b41e49169 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/lib/theme_template/theme.gemspec.erb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +Gem::Specification.new do |spec| + spec.name = <%= theme_name.inspect %> + spec.version = "0.1.0" + spec.authors = [<%= user_name.inspect %>] + spec.email = [<%= user_email.inspect %>] + + spec.summary = "TODO: Write a short summary, because Rubygems requires one." + spec.homepage = "TODO: Put your gem's website or public repo URL here." + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r!^(<%= theme_directories.join("|") %>|LICENSE|README)!i) } + + spec.add_runtime_dependency "jekyll", "~> <%= jekyll_version_with_minor %>" + + spec.add_development_dependency "bundler", "~> 1.16" + spec.add_development_dependency "rake", "~> 12.0" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll.rb new file mode 100644 index 0000000000..31236b8ab1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +Dir[File.join(File.expand_path("jekyll", __dir__), "*.rb")].each do |ruby_file| + require ruby_file +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_p_allowed.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_p_allowed.rb new file mode 100644 index 0000000000..cc7d997b71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_p_allowed.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rubocop" + +module RuboCop + module Cop + module Jekyll + class NoPAllowed < Cop + MSG = "Avoid using `p` to print things. Use `Jekyll.logger` instead.".freeze + + def_node_search :p_called?, <<-PATTERN + (send _ :p _) + PATTERN + + def on_send(node) + if p_called?(node) + add_offense(node, :location => :selector) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_puts_allowed.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_puts_allowed.rb new file mode 100644 index 0000000000..a666aacbfc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-3.8.5/rubocop/jekyll/no_puts_allowed.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rubocop" + +module RuboCop + module Cop + module Jekyll + class NoPutsAllowed < Cop + MSG = "Avoid using `puts` to print things. Use `Jekyll.logger` instead.".freeze + + def_node_search :puts_called?, <<-PATTERN + (send nil? :puts _) + PATTERN + + def on_send(node) + if puts_called?(node) + add_offense(node, :location => :selector) + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives.rb new file mode 100644 index 0000000000..94e59a9116 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives.rb @@ -0,0 +1,132 @@ +require 'jekyll' + +module Jekyll + module Archives + # Internal requires + autoload :Archive, 'jekyll-archives/archive' + autoload :VERSION, 'jekyll-archives/version' + + if (Jekyll.const_defined? :Hooks) + Jekyll::Hooks.register :site, :after_reset do |site| + # We need to disable incremental regen for Archives to generate with the + # correct content + site.regenerator.instance_variable_set(:@disabled, true) + end + end + + class Archives < Jekyll::Generator + safe true + + DEFAULTS = { + 'layout' => 'archive', + 'enabled' => [], + 'permalinks' => { + 'year' => '/:year/', + 'month' => '/:year/:month/', + 'day' => '/:year/:month/:day/', + 'tag' => '/tag/:name/', + 'category' => '/category/:name/' + } + } + + def initialize(config = nil) + if config['jekyll-archives'].nil? + @config = DEFAULTS + else + @config = Utils.deep_merge_hashes(DEFAULTS, config['jekyll-archives']) + end + end + + def generate(site) + @site = site + @posts = site.posts + @archives = [] + + @site.config['jekyll-archives'] = @config + + read + @site.pages.concat(@archives) + + @site.config["archives"] = @archives + end + + # Read archive data from posts + def read + read_tags + read_categories + read_dates + end + + def read_tags + if enabled? "tags" + tags.each do |title, posts| + @archives << Archive.new(@site, title, "tag", posts) + end + end + end + + def read_categories + if enabled? "categories" + categories.each do |title, posts| + @archives << Archive.new(@site, title, "category", posts) + end + end + end + + def read_dates + years.each do |year, posts| + @archives << Archive.new(@site, { :year => year }, "year", posts) if enabled? "year" + months(posts).each do |month, posts| + @archives << Archive.new(@site, { :year => year, :month => month }, "month", posts) if enabled? "month" + days(posts).each do |day, posts| + @archives << Archive.new(@site, { :year => year, :month => month, :day => day }, "day", posts) if enabled? "day" + end + end + end + end + + # Checks if archive type is enabled in config + def enabled?(archive) + @config["enabled"] == true || @config["enabled"] == "all" || if @config["enabled"].is_a? Array + @config["enabled"].include? archive + end + end + + def tags + @site.post_attr_hash('tags') + end + + def categories + @site.post_attr_hash('categories') + end + + # Custom `post_attr_hash` method for years + def years + hash = Hash.new { |h, key| h[key] = [] } + + # In Jekyll 3, Collection#each should be called on the #docs array directly. + if Jekyll::VERSION >= '3.0.0' + @posts.docs.each { |p| hash[p.date.strftime("%Y")] << p } + else + @posts.each { |p| hash[p.date.strftime("%Y")] << p } + end + hash.values.each { |posts| posts.sort!.reverse! } + hash + end + + def months(year_posts) + hash = Hash.new { |h, key| h[key] = [] } + year_posts.each { |p| hash[p.date.strftime("%m")] << p } + hash.values.each { |posts| posts.sort!.reverse! } + hash + end + + def days(month_posts) + hash = Hash.new { |h, key| h[key] = [] } + month_posts.each { |p| hash[p.date.strftime("%d")] << p } + hash.values.each { |posts| posts.sort!.reverse! } + hash + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives/archive.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives/archive.rb new file mode 100644 index 0000000000..c87ea893c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-archives-2.1.1/lib/jekyll-archives/archive.rb @@ -0,0 +1,124 @@ +module Jekyll + module Archives + class Archive < Jekyll::Page + + attr_accessor :posts, :type, :slug + + # Attributes for Liquid templates + ATTRIBUTES_FOR_LIQUID = %w( + posts + type + title + date + name + path + url + ).freeze + + # Initialize a new Archive page + # + # site - The Site object. + # title - The name of the tag/category or a Hash of the year/month/day in case of date. + # e.g. { :year => 2014, :month => 08 } or "my-category" or "my-tag". + # type - The type of archive. Can be one of "year", "month", "day", "category", or "tag" + # posts - The array of posts that belong in this archive. + def initialize(site, title, type, posts) + @site = site + @posts = posts + @type = type + @title = title + @config = site.config['jekyll-archives'] + + # Generate slug if tag or category (taken from jekyll/jekyll/features/support/env.rb) + if title.to_s.length + @slug = Utils.slugify(title.to_s) + end + + # Use ".html" for file extension and url for path + @ext = File.extname(relative_path) + @path = relative_path + @name = File.basename(relative_path, @ext) + + @data = { + "layout" => layout + } + @content = "" + end + + # The template of the permalink. + # + # Returns the template String. + def template + @config['permalinks'][type] + end + + # The layout to use for rendering + # + # Returns the layout as a String + def layout + if @config['layouts'] && @config['layouts'][type] + @config['layouts'][type] + else + @config['layout'] + end + end + + # Returns a hash of URL placeholder names (as symbols) mapping to the + # desired placeholder replacements. For details see "url.rb". + def url_placeholders + if @title.is_a? Hash + @title.merge({ :type => @type }) + else + { :name => @slug, :type => @type } + end + end + + # The generated relative url of this page. e.g. /about.html. + # + # Returns the String url. + def url + @url ||= URL.new({ + :template => template, + :placeholders => url_placeholders, + :permalink => nil + }).to_s + rescue ArgumentError + raise ArgumentError.new "Template \"#{template}\" provided is invalid." + end + + # Produce a title object suitable for Liquid based on type of archive. + # + # Returns a String (for tag and category archives) and nil for + # date-based archives. + def title + if @title.is_a? String + @title + end + end + + # Produce a date object if a date-based archive + # + # Returns a Date. + def date + if @title.is_a? Hash + args = @title.values.map { |s| s.to_i } + Date.new(*args) + end + end + + # Obtain the write path relative to the destination directory + # + # Returns the destination relative path String. + def relative_path + path = URL.unescape_path(url).gsub(/^\//, '') + path = File.join(path, "index.html") if url =~ /\/$/ + path + end + + # Returns the object as a debug String. + def inspect + "#" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.gitignore new file mode 100644 index 0000000000..73a290dcc1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.gitignore @@ -0,0 +1,20 @@ +/vendor +/.bundle/ +/.yardoc +/Gemfile.lock +/_yardoc/ +/coverage/ +/doc/ +/pkg/ +/spec/reports/ +/tmp/ +*.bundle +*.so +*.o +*.a +mkmf.log +*.gem +Gemfile.lock +spec/dest +.bundle +spec/fixtures/.jekyll-metadata diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rspec new file mode 100644 index 0000000000..5f1647637a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rspec @@ -0,0 +1,2 @@ +--color +--format progress diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rubocop.yml new file mode 100644 index 0000000000..9cb9afc0d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.rubocop.yml @@ -0,0 +1,28 @@ +inherit_gem: + jekyll: .rubocop.yml + +AllCops: + TargetRubyVersion: 2.3 + Include: + - lib/**/*.rb + + Exclude: + - .gitignore + - .rspec + - .rubocop.yml + - .travis.yml + + - Gemfile.lock + - History.markdown + - LICENSE.txt + - README.md + + - features/**/* + - script/**/* + - spec/**/* + - test/**/* + - vendor/**/* + +Naming/MemoizedInstanceVariableName: + Exclude: + - lib/jekyll-feed/page-without-a-file.rb diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.travis.yml new file mode 100644 index 0000000000..16cd6a60f0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/.travis.yml @@ -0,0 +1,25 @@ +language: ruby +cache: bundler +sudo: false +rvm: +- 2.5 +- 2.4 +- 2.3 +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true +before_install: +- gem update --system +- gem install bundler +before_script: bundle update +script: script/cibuild +notifications: + email: false +deploy: + provider: rubygems + api_key: + secure: qz0q6ur0kGo03jjLdoAak6WcEAwxX2r9LG3DVrhOrcfoFipkuW+uwR0et4tpK8uFrz0P9y7eTIKOb0XCXeIsIXWj6R5benpRGr2U8m9A+tE/jxviBFUaxaokte0lqWiX1fEyhRmW3zvcdLQ47Vd2EwTNaq6ZmPulmEe9gS0rBQghyclakGlZ17LI7oGgiNL9SQ335Yqa1qJklTHYHbodWQ3Z07v7VN2jxqi3WH6NacT5gUGp5iCNCLLa8+jpKr4uONNIoy6/geAWdqtvgGUE8oTjIWDoJarrknJpqfx9Rd0KLDzkyneAigHDYPW60QtrE6GGpK/+TF1pF4DzdK2EgTWqGFnZf8ehfnxmtHVl2Xq/DPr6hS8Q/f+ut4ioMzBQxPD0hfh8/EOMYKsO8mOuOlYTiZXC7iuGyvFUOl2hnBgWA99t+I0NNB06qFp3ZxIjolEc3zjzc9f1a5HUXlEut5V8nqvCwbctNiTVpT8ZEWlsQlyRUnr9cIMUTEfLgQ+v6DnvAJBMO1EILq6liB5qfutjNhzhlREt7P/ZdppGsAzWpgt0q2PafqVoPe62WR3+/8Lj2ErMr034xSSqZVNcBS0mbdvW6k3jaABo1VJ4XuHm6/yDuemWzWb7kdG9/14+IIJMW1VuaWcmnCnB6gxjkCW3Dm2ftYiN7Rfn3AUz/nU= + gem: jekyll-feed + on: + tags: true + repo: jekyll/jekyll-feed diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Gemfile new file mode 100644 index 0000000000..9a5d6595ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Gemfile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +source "https://rubygems.org" +gemspec + +if ENV["JEKYLL_VERSION"] + gem "jekyll", "~> #{ENV["JEKYLL_VERSION"]}" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/History.markdown b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/History.markdown new file mode 100644 index 0000000000..ac48ede749 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/History.markdown @@ -0,0 +1,142 @@ +## HEAD + + * Release 💎 0.11 (#241) + +## 0.11.0 / 2018-09-09 + +### Development Fixes + + * Require Ruby 2.3 (#222) + * Refactor to remove redundant calls and variables (#240) + +### Minor Enhancements + + * Categories and collections (#228) + * Remove check for older version of Jekyll (#234) + +## 0.10.0 / 2018-06-04 + +### Bug Fixes + + * Escape image URL (#209) + +### Development Fixes + + * Rubocop 0.55 (#223) + * Bump Rubocop (#230) + +### Minor Enhancements + + * Support Typhoeus 1.0 (#232) + +## 0.9.3 / 2018-02-04 + + * Define path with __dir (#187) + * Bump Ruby for Travis (#188) + +### Documentation + + * Fix: Add note about using plugins instead of gems key (#197) + * Add documentation for disabling smartify filter (#205) + * Use `https` in more places. (#165) + +### Development Fixes + + * Rubocop: Target Ruby 2.2 (#195) + * Test feeds that have a `site.lang` (#164) + * Test against Ruby 2.5 (#201) + +### Minor Enhancements + + * fix template for posts with post.lang defined (#168) + +## 0.9.3 / 2017-03-28 + +## 0.9.1 / 2017-02-17 + +### Minor Enhancements + + * Update feed.xml (#162) + +## 0.9.0 / 2017-02-16 + +### Minor Enhancements + + * Use absolute_url to generate the feed_meta url (#150) + * Make feed stylesheet optional (#149) + * Use new `normalize_whitespace` filter (#143) + * Feed entries must contain (#152) + * Remove trailing slash from feed ID (#159) + +### Development Fixes + + * Simplify minify regular expression (#141) + * Namespace as JekyllFeed (#151) + * rubocop -a (#160) + +### Bug Fixes + + * Filter out drafts before limit (#154) + +## 0.8.0 / 2016-10-06 + + * Use filters to clean up Liquid template (#134) + +### Minor Enhancements + + * Don't set @site.config["time"] on feed generation (#138) + +### pedantry + + * Appease Rubocop (#139) + +## 0.7.2 / 2016-10-06 + + * Support `image.path` when `post.image` is an object (#137) + +## 0.7.1 / 2016-09-26 + + * Assign `url_base` before first usage (#133) + +## 0.7.0 / 2016-09-06 + + * Use type="html" to skirt around double escaping problem (#127) + +## 0.6.0 / 2016-07-08 + + * Cleanup `post_author` logic (#113) + * Add XML stylesheet example with XSLT (#119) + * DRY up and add more doc (#120) + * Use smartify filter (#117) + +## 0.5.1 / 2016-04-18 + + * Fix mangling of whitespace when `site.lang` is set (#110) + +## 0.5.0 / 2016-04-13 + + * Consolidate regexps for stripping whitespace (#82) + * Only test against Jekyll 3 (#99) + * Think about how i18n might work (#75) + * Find author by reference (#106) + * Drop support for Jekyll 2 (#105) + * Add support for post image (#104) + +### Minor Enhancements + + * Use Module#method_defined? (#83) + * Use site.title for meta tag if available (#100) + +### Development Fixes + + * Do not require [**jekyll-last-modified-at**](https://github.com/gjtorikian/jekyll-last-modified-at) in tests (#87) + * Add Rubocop (#81) + * Correct typo in tests (#102) + * Simplify testing feed_meta tag (#101) + * Quiet known warnings in tests (#103) + +## 0.4.0 / 2015-12-30 + + * Feed uses `site.title`, or `site.name` if `title` doesn't exist (#72) + * Replace newlines with spaces in `title` and `summary` elements (#67) + * Properly render post content with Jekyll (#73) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/LICENSE.txt new file mode 100644 index 0000000000..e8e1337687 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2015-present Ben Balter and jekyll-feed contributors + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/README.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/README.md new file mode 100644 index 0000000000..84d6863403 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/README.md @@ -0,0 +1,191 @@ +# Jekyll Feed plugin + +A Jekyll plugin to generate an Atom (RSS-like) feed of your Jekyll posts + +[![Build Status](https://travis-ci.org/jekyll/jekyll-feed.svg)](https://travis-ci.org/jekyll/jekyll-feed) [![Gem Version](https://badge.fury.io/rb/jekyll-feed.svg)](https://badge.fury.io/rb/jekyll-feed) + +## Installation + +Add this line to your site's Gemfile: + +```ruby +gem 'jekyll-feed' +``` + +And then add this line to your site's `_config.yml`: + +```yml +plugins: + - jekyll-feed +``` + +:warning: If you are using Jekyll < 3.5.0 use the `gems` key instead of `plugins`. + +## Usage + +The plugin will automatically generate an Atom feed at `/feed.xml`. + +### Optional configuration options + +The plugin will automatically use any of the following configuration variables, if they are present in your site's `_config.yml` file. + +* `title` or `name` - The title of the site, e.g., "My awesome site" +* `description` - A longer description of what your site is about, e.g., "Where I blog about Jekyll and other awesome things" +* `url` - The URL to your site, e.g., `http://example.com`. If none is provided, the plugin will try to use `site.github.url`. +* `author` - Global author information (see below) + +### Already have a feed path? + +Do you already have an existing feed someplace other than `/feed.xml`, but are on a host like GitHub Pages that doesn't support machine-friendly redirects? If you simply swap out `jekyll-feed` for your existing template, your existing subscribers won't continue to get updates. Instead, you can specify a non-default path via your site's config. + +```yml +feed: + path: atom.xml +``` + +To note, you shouldn't have to do this unless you already have a feed you're using, and you can't or wish not to redirect existing subscribers. + +### Optional front matter + +The plugin will use the following post metadata, automatically generated by Jekyll, which you can override via a post's YAML front matter: + +* `date` +* `title` +* `excerpt` +* `id` +* `category` +* `tags` + +Additionally, the plugin will use the following values, if present in a post's YAML front matter: + +* `image` - URL of an image that is representative of the post (can also be passed as `image.path`) + +* `author` - The author of the post, e.g., "Dr. Jekyll". If none is given, feed readers will look to the feed author as defined in `_config.yml`. Like the feed author, this can also be an object or a reference to an author in `_data/authors.yml` (see below). + +### Author information + +*TL;DR: In most cases, put `author: [your name]` in the document's front matter, for sites with multiple authors. If you need something more complicated, read on.* + +There are several ways to convey author-specific information. Author information is found in the following order of priority: + +1. An `author` object, in the documents's front matter, e.g.: + + ```yml + author: + twitter: benbalter + ``` + +2. An `author` object, in the site's `_config.yml`, e.g.: + + ```yml + author: + twitter: benbalter + ``` + +3. `site.data.authors[author]`, if an author is specified in the document's front matter, and a corresponding key exists in `site.data.authors`. E.g., you have the following in the document's front matter: + + ```yml + author: benbalter + ``` + + And you have the following in `_data/authors.yml`: + + ```yml + benbalter: + picture: /img/benbalter.png + twitter: jekyllrb + + potus: + picture: /img/potus.png + twitter: whitehouse + ``` + + In the above example, the author `benbalter`'s Twitter handle will be resolved to `@jekyllrb`. This allows you to centralize author information in a single `_data/authors` file for site with many authors that require more than just the author's username. + + *Pro-tip: If `authors` is present in the document's front matter as an array (and `author` is not), the plugin will use the first author listed.* + +4. An author in the document's front matter (the simplest way), e.g.: + + ```yml + author: benbalter + ``` + +5. An author in the site's `_config.yml`, e.g.: + + ```yml + author: benbalter + ``` + +### Meta tags + +The plugin exposes a helper tag to expose the appropriate meta tags to support automated discovery of your feed. Simply place `{% feed_meta %}` someplace in your template's `` section, to output the necessary metadata. + +### SmartyPants + +The plugin uses [Jekyll's `smartify` filter](https://jekyllrb.com/docs/templates/) for processing the site title and post titles. This will translate plain ASCII punctuation into "smart" typographic punctuation. This will not render or strip any Markdown you may be using in a title. + +Jekyll's `smartify` filter uses [kramdown](https://kramdown.gettalong.org/options.html) as a processor. Accordingly, if you do not want "smart" typographic punctuation, disabling them in kramdown in your `_config.yml` will disable them in your feed. For example: + + ```yml + kramdown: + smart_quotes: apos,apos,quot,quot + typographic_symbols: {hellip: ...} + ``` + +### Custom styling + +Want to style what your feed looks like in the browser? Simply add an XSLT at `/feed.xslt.xml` and Jekyll Feed will link to the stylesheet. + +## Why Atom, and not RSS? + +Great question. In short, Atom is a better format. Think of it like RSS 3.0. For more information, see [this discussion on why we chose Atom over RSS 2.0](https://github.com/jekyll/jekyll-rss-feed/issues/2). + +## Categories + +Jekyll Feed can generate feeds for each category. Simply define which categories you'd like feeds for in your config: + +```yml +feed: + categories: + - news + - updates +``` + +## Collections + +Jekyll Feed can generate feeds for collections other than the Posts collection. This works best for chronological collections (e.g., collections with dates in the filenames). Simply define which collections you'd like feeds for in your config: + +```yml +feed: + collections: + - changes +``` + +By default, collection feeds will be outputted to `/feed/.xml`. If you'd like to customize the output path, specify a collection's custom path as follows: + +```yml +feed: + collections: + changes: + path: "/changes.xml" +``` + +Finally, collections can also have category feeds which are outputted as `/feed//.xml`. Specify categories like so: + +```yml +feed: + collections: + changes: + path: "/changes.xml" + categories: + - news + - updates +``` + +## Contributing + +1. Fork it (https://github.com/jekyll/jekyll-feed/fork) +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create a new Pull Request diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Rakefile new file mode 100644 index 0000000000..ee617bbbf3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/Rakefile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require "bundler/gem_tasks" +require "rspec/core/rake_task" + +RSpec::Core::RakeTask.new(:spec) + +task :default => :spec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/jekyll-feed.gemspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/jekyll-feed.gemspec new file mode 100644 index 0000000000..1f4b6610a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/jekyll-feed.gemspec @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +lib = File.expand_path("lib", __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require "jekyll-feed/version" + +Gem::Specification.new do |spec| + spec.name = "jekyll-feed" + spec.version = Jekyll::Feed::VERSION + spec.authors = ["Ben Balter"] + spec.email = ["ben.balter@github.com"] + spec.summary = "A Jekyll plugin to generate an Atom feed of your Jekyll posts" + spec.homepage = "https://github.com/jekyll/jekyll-feed" + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0") + spec.executables = spec.files.grep(%r!^bin/!) { |f| File.basename(f) } + spec.test_files = spec.files.grep(%r!^(test|spec|features)/!) + spec.require_paths = ["lib"] + + spec.required_ruby_version = ">= 2.3.0" + + spec.add_dependency "jekyll", "~> 3.3" + spec.add_development_dependency "bundler", "~> 1.15" + spec.add_development_dependency "nokogiri", "~> 1.6" + spec.add_development_dependency "rake", "~> 12.0" + spec.add_development_dependency "rspec", "~> 3.0" + spec.add_development_dependency "rubocop", "~> 0.57.2" + spec.add_development_dependency "typhoeus", ">= 0.7", "< 2.0" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed.rb new file mode 100644 index 0000000000..60dd6078b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require "jekyll" +require "fileutils" +require "jekyll-feed/generator" + +module JekyllFeed + autoload :MetaTag, "jekyll-feed/meta-tag" + autoload :PageWithoutAFile, "jekyll-feed/page-without-a-file.rb" +end + +Liquid::Template.register_tag "feed_meta", JekyllFeed::MetaTag diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/feed.xml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/feed.xml new file mode 100644 index 0000000000..cf9f9ed475 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/feed.xml @@ -0,0 +1,92 @@ + +{% if page.xsl %} + +{% endif %} + + Jekyll + + + {{ site.time | date_to_xmlschema }} + {{ page.url | absolute_url | xml_escape }} + + {% assign title = site.title | default: site.name %} + {% if page.collection != "posts" %} + {% assign collection = page.collection | capitalize %} + {% assign title = title | append: " | " | append: collection %} + {% endif %} + {% if page.category %} + {% assign category = page.category | capitalize %} + {% assign title = title | append: " | " | append: category %} + {% endif %} + + {% if title %} + {{ title | smartify | xml_escape }} + {% endif %} + + {% if site.description %} + {{ site.description | xml_escape }} + {% endif %} + + {% if site.author %} + + {{ site.author.name | default: site.author | xml_escape }} + {% if site.author.email %} + {{ site.author.email | xml_escape }} + {% endif %} + {% if site.author.uri %} + {{ site.author.uri | xml_escape }} + {% endif %} + + {% endif %} + + {% assign posts = site[page.collection] | where_exp: "post", "post.draft != true" | sort: "date" | reverse %} + {% if page.category %} + {% assign posts = posts | where: "category",page.category %} + {% endif %} + {% for post in posts limit: 10 %} + + {{ post.title | smartify | strip_html | normalize_whitespace | xml_escape }} + + {{ post.date | date_to_xmlschema }} + {{ post.last_modified_at | default: post.date | date_to_xmlschema }} + {{ post.id | absolute_url | xml_escape }} + {{ post.content | strip | xml_escape }} + + {% assign post_author = post.author | default: post.authors[0] | default: site.author %} + {% assign post_author = site.data.authors[post_author] | default: post_author %} + {% assign post_author_email = post_author.email | default: nil %} + {% assign post_author_uri = post_author.uri | default: nil %} + {% assign post_author_name = post_author.name | default: post_author %} + + + {{ post_author_name | default: "" | xml_escape }} + {% if post_author_email %} + {{ post_author_email | xml_escape }} + {% endif %} + {% if post_author_uri %} + {{ post_author_uri | xml_escape }} + {% endif %} + + + {% if post.category %} + + {% endif %} + + {% for tag in post.tags %} + + {% endfor %} + + {% if post.excerpt and post.excerpt != empty %} + {{ post.excerpt | strip_html | normalize_whitespace | xml_escape }} + {% endif %} + + {% assign post_image = post.image.path | default: post.image %} + {% if post_image %} + {% unless post_image contains "://" %} + {% assign post_image = post_image | absolute_url %} + {% endunless %} + + {% endif %} + + {% endfor %} + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/generator.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/generator.rb new file mode 100644 index 0000000000..120ad2eac0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/generator.rb @@ -0,0 +1,111 @@ +# frozen_string_literal: true + +module JekyllFeed + class Generator < Jekyll::Generator + safe true + priority :lowest + + # Main plugin action, called by Jekyll-core + def generate(site) + @site = site + collections.each do |name, meta| + Jekyll.logger.info "Jekyll Feed:", "Generating feed for #{name}" + (meta["categories"] + [nil]).each do |category| + path = feed_path(:collection => name, :category => category) + next if file_exists?(path) + @site.pages << make_page(path, :collection => name, :category => category) + end + end + end + + private + + # Matches all whitespace that follows + # 1. A '>', which closes an XML tag or + # 2. A '}', which closes a Liquid tag + # We will strip all of this whitespace to minify the template + MINIFY_REGEX = %r!(?<=>|})\s+! + + # Returns the plugin's config or an empty hash if not set + def config + @config ||= @site.config["feed"] || {} + end + + # Determines the destination path of a given feed + # + # collection - the name of a collection, e.g., "posts" + # category - a category within that collection, e.g., "news" + # + # Will return "/feed.xml", or the config-specified default feed for posts + # Will return `/feed/category.xml` for post categories + # WIll return `/feed/collection.xml` for other collections + # Will return `/feed/collection/category.xml` for other collection categories + def feed_path(collection: "posts", category: nil) + prefix = collection == "posts" ? "/feed" : "/feed/#{collection}" + return "#{prefix}/#{category}.xml" if category + + collections.dig(collection, "path") || "#{prefix}.xml" + end + + # Returns a hash representing all collections to be processed and their metadata + # in the form of { collection_name => { categories = [...], path = "..." } } + def collections + return @collections if defined?(@collections) + + @collections = if config["collections"].is_a?(Array) + config["collections"].map { |c| [c, {}] }.to_h + elsif config["collections"].is_a?(Hash) + config["collections"] + else + {} + end + + @collections = normalize_posts_meta(@collections) + @collections.each_value do |meta| + meta["categories"] = (meta["categories"] || []).to_set + end + + @collections + end + + # Path to feed.xml template file + def feed_source_path + @feed_source_path ||= File.expand_path "feed.xml", __dir__ + end + + def feed_template + @feed_template ||= File.read(feed_source_path).gsub(MINIFY_REGEX, "") + end + + # Checks if a file already exists in the site source + def file_exists?(file_path) + File.exist? @site.in_source_dir(file_path) + end + + # Generates contents for a file + + def make_page(file_path, collection: "posts", category: nil) + PageWithoutAFile.new(@site, __dir__, "", file_path).tap do |file| + file.content = feed_template + file.data.merge!( + "layout" => nil, + "sitemap" => false, + "xsl" => file_exists?("feed.xslt.xml"), + "collection" => collection, + "category" => category + ) + file.output + end + end + + # Special case the "posts" collection, which, for ease of use and backwards + # compatability, can be configured via top-level keys or directly as a collection + def normalize_posts_meta(hash) + hash["posts"] ||= {} + hash["posts"]["path"] ||= config["path"] + hash["posts"]["categories"] ||= config["categories"] + config["path"] ||= hash["posts"]["path"] + hash + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/meta-tag.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/meta-tag.rb new file mode 100644 index 0000000000..76da23f0d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/meta-tag.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module JekyllFeed + class MetaTag < Liquid::Tag + # Use Jekyll's native relative_url filter + include Jekyll::Filters::URLFilters + + def render(context) + @context = context + attrs = attributes.map { |k, v| %(#{k}="#{v}") }.join(" ") + "" + end + + private + + def config + @config ||= @context.registers[:site].config + end + + def attributes + { + :type => "application/atom+xml", + :rel => "alternate", + :href => absolute_url(path), + :title => title, + }.keep_if { |_, v| v } + end + + def path + config.dig("feed", "path") || "feed.xml" + end + + def title + config["title"] || config["name"] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/page-without-a-file.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/page-without-a-file.rb new file mode 100644 index 0000000000..b7d3278aa5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/page-without-a-file.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module JekyllFeed + class PageWithoutAFile < Jekyll::Page + def read_yaml(*) + @data ||= {} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/version.rb new file mode 100644 index 0000000000..2486a2c4d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/lib/jekyll-feed/version.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module Jekyll + module Feed + VERSION = "0.11.0" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/bootstrap b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/bootstrap new file mode 100755 index 0000000000..8a09d8a6bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/bootstrap @@ -0,0 +1,3 @@ +#! /bin/bash + +bundle install diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/cibuild b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/cibuild new file mode 100755 index 0000000000..2f12fc3fd8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/cibuild @@ -0,0 +1,7 @@ +#! /bin/bash + +set -e + +script/test +script/fmt +bundle exec rake build diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/fmt b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/fmt new file mode 100755 index 0000000000..c5351ecf01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/fmt @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +echo "Rubocop $(bundle exec rubocop --version)" +bundle exec rubocop -D -E $@ +success=$? +if ((success != 0)); then + echo -e "\nTry running \`script/fmt -a\` to automatically fix errors" +fi +exit $success diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/release b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/release new file mode 100755 index 0000000000..a9c226f977 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/release @@ -0,0 +1,7 @@ +#!/bin/sh +# Tag and push a release. + +set -e + +script/cibuild +bundle exec rake release diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/test b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/test new file mode 100755 index 0000000000..d57e61a45d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/script/test @@ -0,0 +1,4 @@ +#!/bin/bash +set -ex + +bundle exec rspec "$@" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-01-collection-doc.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-01-collection-doc.md new file mode 100644 index 0000000000..2bacb11511 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-01-collection-doc.md @@ -0,0 +1,4 @@ +--- +--- + +Look at me! I'm a collection! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-02-collection-category-doc.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-02-collection-category-doc.md new file mode 100644 index 0000000000..e5899e98d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_collection/2018-01-02-collection-category-doc.md @@ -0,0 +1,5 @@ +--- +category: news +--- + +Look at me! I'm a collection doc in a category! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_config.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_config.yml new file mode 100644 index 0000000000..32bccc5240 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_config.yml @@ -0,0 +1,9 @@ +timezone: UTC + +defaults: + - + scope: + path: "" + type: page + values: + layout: some_default diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_data/authors.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_data/authors.yml new file mode 100644 index 0000000000..78a6ff9540 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_data/authors.yml @@ -0,0 +1,5 @@ +garthdb: + name: Garth + twitter: garthdb + uri: "http://garthdb.com" + email: example@mail.com diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_drafts/2015-01-12-a-draft.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_drafts/2015-01-12-a-draft.md new file mode 100644 index 0000000000..bf78910c80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_drafts/2015-01-12-a-draft.md @@ -0,0 +1,4 @@ +--- +--- + +This is a draft. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_layouts/some_default.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_layouts/some_default.html new file mode 100644 index 0000000000..60411727ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_layouts/some_default.html @@ -0,0 +1,11 @@ +--- +--- + + + {% feed_meta %} + + +THIS IS MY LAYOUT +{{ content }} + + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md new file mode 100644 index 0000000000..13b97917ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md @@ -0,0 +1,7 @@ +--- +excerpt: "Foo" +image: "/image.png" +category: news +--- + +# December the twelfth, actually. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-02-march-the-second.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-02-march-the-second.md new file mode 100644 index 0000000000..e33a699d4e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-02-march-the-second.md @@ -0,0 +1,6 @@ +--- +image: https://cdn.example.org/absolute.png?h=188&w=250 +category: news +--- + +March the second! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md new file mode 100644 index 0000000000..2401ecc3bd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md @@ -0,0 +1,9 @@ +--- +tags: + - '"/>' +image: + path: "/object-image.png" +category: updates +--- + +March the fourth! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md new file mode 100644 index 0000000000..f032a1bca7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md @@ -0,0 +1,5 @@ +--- +last_modified_at: 2015-05-12T13:27:59+00:00 +--- + +Please don't modify this file. It's modified time is important. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-02-12-strip-newlines.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-02-12-strip-newlines.md new file mode 100644 index 0000000000..7d7a373f29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-02-12-strip-newlines.md @@ -0,0 +1,6 @@ +--- +title: + The plugin + will properly + strip newlines. +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-liquid.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-liquid.md new file mode 100644 index 0000000000..81aaeae593 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-liquid.md @@ -0,0 +1,7 @@ +--- +--- + +{% capture liquidstring %} +Liquid is not rendered. +{% endcapture %} +{{ liquidstring | replace:'not ','' }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-pre.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-pre.html new file mode 100644 index 0000000000..42b54b592f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-12-pre.html @@ -0,0 +1,8 @@ +--- +author: Pat +lang: en +--- + +
                Line 1
                +Line 2
                +Line 3
                diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-18-author-detail.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-18-author-detail.md new file mode 100644 index 0000000000..c4c42bd3f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-05-18-author-detail.md @@ -0,0 +1,9 @@ +--- +excerpt: "" +author: + name: Ben + uri: "http://ben.balter.com" + email: ben@example.com +--- + +# December the twelfth, actually. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-08-08-stuck-in-the-middle.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-08-08-stuck-in-the-middle.html new file mode 100644 index 0000000000..a845151cc8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2015-08-08-stuck-in-the-middle.html @@ -0,0 +1,2 @@ +--- +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2016-04-25-author-reference.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2016-04-25-author-reference.md new file mode 100644 index 0000000000..f9a0f0cc9e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/_posts/2016-04-25-author-reference.md @@ -0,0 +1,6 @@ +--- +excerpt: "" +author: garthdb +--- + +# April the twenty-fifth? diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/feed.xslt.xml b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/fixtures/feed.xslt.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/jekyll-feed_spec.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/jekyll-feed_spec.rb new file mode 100644 index 0000000000..e042c4255a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/jekyll-feed_spec.rb @@ -0,0 +1,474 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe(JekyllFeed) do + let(:overrides) { {} } + let(:config) do + Jekyll.configuration(Jekyll::Utils.deep_merge_hashes({ + "full_rebuild" => true, + "source" => source_dir, + "destination" => dest_dir, + "show_drafts" => true, + "url" => "http://example.org", + "name" => "My awesome site", + "author" => { + "name" => "Dr. Jekyll", + }, + "collections" => { + "my_collection" => { "output" => true }, + "other_things" => { "output" => false }, + }, + }, overrides)) + end + let(:site) { Jekyll::Site.new(config) } + let(:contents) { File.read(dest_dir("feed.xml")) } + let(:context) { make_context(:site => site) } + let(:feed_meta) { Liquid::Template.parse("{% feed_meta %}").render!(context, {}) } + before(:each) do + site.process + end + + it "has no layout" do + expect(contents).not_to match(%r!\ATHIS IS MY LAYOUT!) + end + + it "creates a feed.xml file" do + expect(Pathname.new(dest_dir("feed.xml"))).to exist + end + + it "doesn't have multiple new lines or trailing whitespace" do + expect(contents).to_not match %r!\s+\n! + expect(contents).to_not match %r!\n{2,}! + end + + it "puts all the posts in the feed.xml file" do + expect(contents).to match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2014\/03\/02\/march-the-second\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2013\/12\/12\/dec-the-second\.html/ + expect(contents).to match "http://example.org/2015/08/08/stuck-in-the-middle.html" + expect(contents).to_not match /http:\/\/example\.org\/2016\/02\/09\/a-draft\.html/ + end + + it "does not include assets or any static files that aren't .html" do + expect(contents).not_to match /http:\/\/example\.org\/images\/hubot\.png/ + expect(contents).not_to match /http:\/\/example\.org\/feeds\/atom\.xml/ + end + + it "preserves linebreaks in preformatted text in posts" do + expect(contents).to match %r!Line 1\nLine 2\nLine 3! + end + + it "supports post author name as an object" do + expect(contents).to match /\s*Ben<\/name>\s*ben@example.com<\/email>\s*http:\/\/ben.balter.com<\/uri>\s*<\/author>/ + end + + it "supports post author name as a string" do + expect(contents).to match /\s*Pat<\/name>\s*<\/author>/ + end + + it "does not output author tag no author is provided" do + expect(contents).not_to match /\s*<\/name>\s*<\/author>/ + end + + it "does use author reference with data from _data/authors.yml" do + expect(contents).to match /\s*Garth<\/name>\s*example@mail.com<\/email>\s*http:\/\/garthdb.com<\/uri>\s*<\/author>/ + end + + it "converts markdown posts to HTML" do + expect(contents).to match /<p>March the second!<\/p>/ + end + + it "uses last_modified_at where available" do + expect(contents).to match /2015-05-12T13:27:59\+00:00<\/updated>/ + end + + it "replaces newlines in posts to spaces" do + expect(contents).to match %r!The plugin will properly strip newlines.! + end + + it "renders Liquid inside posts" do + expect(contents).to match %r!Liquid is rendered\.! + expect(contents).not_to match %r!Liquid is not rendered\.! + end + + it "includes the item image" do + expect(contents).to include('') + expect(contents).to include('') + expect(contents).to include('') + end + + context "parsing" do + let(:feed) { RSS::Parser.parse(contents) } + + it "outputs an RSS feed" do + expect(feed.feed_type).to eql("atom") + expect(feed.feed_version).to eql("1.0") + expect(feed.encoding).to eql("UTF-8") + expect(feed.lang).to be_nil + expect(feed.valid?).to eql(true) + end + + it "outputs the link" do + expect(feed.link.href).to eql("http://example.org/feed.xml") + end + + it "outputs the generator" do + expect(feed.generator.content).to eql("Jekyll") + expect(feed.generator.version).to eql(Jekyll::VERSION) + end + + it "includes the items" do + expect(feed.items.count).to eql(10) + end + + it "includes item contents" do + post = feed.items.last + expect(post.title.content).to eql("Dec The Second") + expect(post.link.href).to eql("http://example.org/news/2013/12/12/dec-the-second.html") + expect(post.published.content).to eql(Time.parse("2013-12-12")) + end + + it "includes the item's excerpt" do + post = feed.items.last + expect(post.summary.content).to eql("Foo") + end + + it "doesn't include the item's excerpt if blank" do + post = feed.items.first + expect(post.summary).to be_nil + end + + context "with site.lang set" do + lang = "en_US" + let(:overrides) { { "lang" => lang } } + it "outputs a valid feed" do + expect(feed.feed_type).to eql("atom") + expect(feed.feed_version).to eql("1.0") + expect(feed.encoding).to eql("UTF-8") + expect(feed.valid?).to eql(true) + end + + it "outputs the correct language" do + expect(feed.lang).to eql(lang) + end + + it "sets the language of entries" do + post = feed.items.first + expect(post.lang).to eql(lang) + end + + it "renders the feed meta" do + expected = %r!! + expect(contents).to match(expected) + end + end + + context "with site.title set" do + let(:site_title) { "My Site Title" } + let(:overrides) { { "title" => site_title } } + + it "uses site.title for the title" do + expect(feed.title.content).to eql(site_title) + end + end + + context "with site.name set" do + let(:site_name) { "My Site Name" } + let(:overrides) { { "name" => site_name } } + + it "uses site.name for the title" do + expect(feed.title.content).to eql(site_name) + end + end + + context "with site.name and site.title set" do + let(:site_title) { "My Site Title" } + let(:site_name) { "My Site Name" } + let(:overrides) { { "title" => site_title, "name" => site_name } } + + it "uses site.title for the title, dropping site.name" do + expect(feed.title.content).to eql(site_title) + end + end + end + + context "smartify" do + let(:site_title) { "Pat's Site" } + let(:overrides) { { "title" => site_title } } + let(:feed) { RSS::Parser.parse(contents) } + + it "processes site title with SmartyPants" do + expect(feed.title.content).to eql("Pat’s Site") + end + end + + context "validation" do + it "validates" do + # See https://validator.w3.org/docs/api.html + url = "https://validator.w3.org/feed/check.cgi?output=soap12" + response = Typhoeus.post(url, :body => { :rawdata => contents }, :accept_encoding => "gzip") + pending "Something went wrong with the W3 validator" unless response.success? + result = Nokogiri::XML(response.body) + result.remove_namespaces! + + result.css("warning").each do |warning| + # Quiet a warning that results from us passing the feed as a string + next if warning.css("text").text =~ %r!Self reference doesn't match document location! + + # Quiet expected warning that results from blank summary test case + next if warning.css("text").text =~ %r!(content|summary) should not be blank! + + # Quiet expected warning about multiple posts with same updated time + next if warning.css("text").text =~ %r!Two entries with the same value for atom:updated! + + warn "Validation warning: #{warning.css("text").text} on line #{warning.css("line").text} column #{warning.css("column").text}" + end + + errors = result.css("error").map do |error| + "Validation error: #{error.css("text").text} on line #{error.css("line").text} column #{error.css("column").text}" + end + + expect(result.css("validity").text).to eql("true"), errors.join("\n") + end + end + + context "with a baseurl" do + let(:overrides) do + { "baseurl" => "/bass" } + end + + it "correctly adds the baseurl to the posts" do + expect(contents).to match /http:\/\/example\.org\/bass\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(contents).to match /http:\/\/example\.org\/bass\/news\/2014\/03\/02\/march-the-second\.html/ + expect(contents).to match /http:\/\/example\.org\/bass\/news\/2013\/12\/12\/dec-the-second\.html/ + end + + it "renders the feed meta" do + expected = 'href="http://example.org/bass/feed.xml"' + expect(feed_meta).to include(expected) + end + end + + context "feed meta" do + it "renders the feed meta" do + expected = '' + expect(feed_meta).to eql(expected) + end + + context "with a blank site name" do + let(:config) do + Jekyll.configuration({ + "source" => source_dir, + "destination" => dest_dir, + "url" => "http://example.org", + }) + end + + it "does not output blank title" do + expect(feed_meta).not_to include("title=") + end + end + end + + context "changing the feed path" do + let(:overrides) do + { + "feed" => { + "path" => "atom.xml", + }, + } + end + + it "should write to atom.xml" do + expect(Pathname.new(dest_dir("atom.xml"))).to exist + end + + it "renders the feed meta with custom feed path" do + expected = 'href="http://example.org/atom.xml"' + expect(feed_meta).to include(expected) + end + end + + context "changing the file path via collection meta" do + let(:overrides) do + { + "feed" => { + "collections" => { + "posts" => { + "path" => "atom.xml" + } + } + }, + } + end + + it "should write to atom.xml" do + expect(Pathname.new(dest_dir("atom.xml"))).to exist + end + + it "renders the feed meta with custom feed path" do + expected = 'href="http://example.org/atom.xml"' + expect(feed_meta).to include(expected) + end + end + + context "feed stylesheet" do + it "includes the stylesheet" do + expect(contents).to include('') + end + end + + context "with site.lang set" do + let(:overrides) { { "lang" => "en-US" } } + + it "should set the language" do + expect(contents).to match %r!type="text/html" hreflang="en-US" />! + end + end + + context "with post.lang set" do + it "should set the language for that entry" do + expect(contents).to match %r!! + expect(contents).to match %r!! + end + end + + context "categories" do + context "with top-level post categories" do + let(:overrides) { + { + "feed" => { "categories" => ["news"] } + } + } + let(:news_feed) { File.read(dest_dir("feed/news.xml")) } + + it "outputs the primary feed" do + expect(contents).to match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2014\/03\/02\/march-the-second\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2013\/12\/12\/dec-the-second\.html/ + expect(contents).to match "http://example.org/2015/08/08/stuck-in-the-middle.html" + expect(contents).to_not match /http:\/\/example\.org\/2016\/02\/09\/a-draft\.html/ + end + + it "outputs the category feed" do + expect(news_feed).to match "My awesome site | News" + expect(news_feed).to match /http:\/\/example\.org\/news\/2014\/03\/02\/march-the-second\.html/ + expect(news_feed).to match /http:\/\/example\.org\/news\/2013\/12\/12\/dec-the-second\.html/ + expect(news_feed).to_not match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(news_feed).to_not match "http://example.org/2015/08/08/stuck-in-the-middle.html" + end + end + + context "with collection-level post categories" do + let(:overrides) { + { + "feed" => { + "collections" => { + "posts" => { + "categories" => ["news"] + } + } + } + } + } + let(:news_feed) { File.read(dest_dir("feed/news.xml")) } + + it "outputs the primary feed" do + expect(contents).to match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2014\/03\/02\/march-the-second\.html/ + expect(contents).to match /http:\/\/example\.org\/news\/2013\/12\/12\/dec-the-second\.html/ + expect(contents).to match "http://example.org/2015/08/08/stuck-in-the-middle.html" + expect(contents).to_not match /http:\/\/example\.org\/2016\/02\/09\/a-draft\.html/ + end + + it "outputs the category feed" do + expect(news_feed).to match "My awesome site | News" + expect(news_feed).to match /http:\/\/example\.org\/news\/2014\/03\/02\/march-the-second\.html/ + expect(news_feed).to match /http:\/\/example\.org\/news\/2013\/12\/12\/dec-the-second\.html/ + expect(news_feed).to_not match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(news_feed).to_not match "http://example.org/2015/08/08/stuck-in-the-middle.html" + end + end + end + + context "collections" do + let(:collection_feed) { File.read(dest_dir("feed/collection.xml")) } + + context "when initialized as an array" do + let(:overrides) { + { + "collections" => { + "collection" => { + "output" => true + } + }, + "feed" => { "collections" => ["collection"] } + } + } + + + it "outputs the collection feed" do + expect(collection_feed).to match "My awesome site | Collection" + expect(collection_feed).to match "http://example.org/collection/2018-01-01-collection-doc.html" + expect(collection_feed).to match "http://example.org/collection/2018-01-02-collection-category-doc.html" + expect(collection_feed).to_not match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(collection_feed).to_not match "http://example.org/2015/08/08/stuck-in-the-middle.html" + end + end + + context "with categories" do + let(:overrides) { + { + "collections" => { + "collection" => { + "output" => true + } + }, + "feed" => { + "collections" => { + "collection" => { + "categories" => ["news"] + } + } + } + } + } + let(:news_feed) { File.read(dest_dir("feed/collection/news.xml")) } + + it "outputs the collection category feed" do + expect(news_feed).to match "My awesome site | Collection | News" + expect(news_feed).to match "http://example.org/collection/2018-01-02-collection-category-doc.html" + expect(news_feed).to_not match "http://example.org/collection/2018-01-01-collection-doc.html" + expect(news_feed).to_not match /http:\/\/example\.org\/updates\/2014\/03\/04\/march-the-fourth\.html/ + expect(news_feed).to_not match "http://example.org/2015/08/08/stuck-in-the-middle.html" + end + end + + context "with a custom path" do + let(:overrides) { + { + "collections" => { + "collection" => { + "output" => true + } + }, + "feed" => { + "collections" => { + "collection" => { + "categories" => ["news"], + "path" => "custom.xml" + } + } + } + } + } + + it "should write to the custom path" do + expect(Pathname.new(dest_dir("custom.xml"))).to exist + expect(Pathname.new(dest_dir("feed/collection.xml"))).to_not exist + expect(Pathname.new(dest_dir("feed/collection/news.xml"))).to exist + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/spec_helper.rb new file mode 100644 index 0000000000..8f1bbe7054 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-feed-0.11.0/spec/spec_helper.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require "jekyll" +require "typhoeus" +require "nokogiri" +require "rss" +require File.expand_path("../lib/jekyll-feed", __dir__) + +Jekyll.logger.log_level = :error + +RSpec.configure do |config| + config.run_all_when_everything_filtered = true + config.filter_run :focus + config.order = "random" + + SOURCE_DIR = File.expand_path("fixtures", __dir__) + DEST_DIR = File.expand_path("dest", __dir__) + + def source_dir(*files) + File.join(SOURCE_DIR, *files) + end + + def dest_dir(*files) + File.join(DEST_DIR, *files) + end + + def make_context(registers = {}) + Liquid::Context.new({}, {}, { :site => site }.merge(registers)) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.gitignore new file mode 100644 index 0000000000..35d00b2e6e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.gitignore @@ -0,0 +1,16 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +spec/dest +tmp diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.rspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.rspec new file mode 100644 index 0000000000..5f1647637a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.rspec @@ -0,0 +1,2 @@ +--color +--format progress diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.travis.yml new file mode 100644 index 0000000000..55765aad44 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/.travis.yml @@ -0,0 +1,21 @@ +language: ruby +cache: bundler +before_install: script/unbundle +install: +- travis_retry bundle install --path vendor/bundle +rvm: +- 2.1 +- 2.0 +- 1.9.3 +script: script/cibuild +notifications: + irc: + on_success: change + on_failure: change + channels: + - irc.freenode.org#jekyll + template: + - '%{repository}#%{build_number} (%{branch}) %{message} %{build_url}' + email: + on_success: never + on_failure: never diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Gemfile new file mode 100644 index 0000000000..c892bd3635 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in jekyll-paginate.gemspec +gemspec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/History.markdown b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/History.markdown new file mode 100644 index 0000000000..605e4c3661 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/History.markdown @@ -0,0 +1,9 @@ +## 1.1.0 / 2014-10-14 + +### Minor Enhancements + + * Filter out posts that have `hidden: true` in front matter (#13) + +### Development Fixes + + * Fix tests for rspec 3. (#9) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/LICENSE.txt new file mode 100644 index 0000000000..3ed9f598eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2014 Parker Moore + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/README.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/README.md new file mode 100644 index 0000000000..67fd2fc1c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/README.md @@ -0,0 +1,31 @@ +# Jekyll::Paginate + +Default pagination generator for Jekyll. + +[![Build Status](https://secure.travis-ci.org/jekyll/jekyll-paginate.svg?branch=master)](https://travis-ci.org/jekyll/jekyll-paginate) + +## Installation + +Add this line to your application's Gemfile: + + gem 'jekyll-paginate' + +And then execute: + + $ bundle + +Or install it yourself as: + + $ gem install jekyll-paginate + +## Usage + +Once the gem is installed on your system, Jekyll will auto-require it. Just set the following configuration + +## Contributing + +1. Fork it ( http://github.com/jekyll/jekyll-paginate/fork ) +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Rakefile new file mode 100644 index 0000000000..29955274e0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/Rakefile @@ -0,0 +1 @@ +require "bundler/gem_tasks" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/jekyll-paginate.gemspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/jekyll-paginate.gemspec new file mode 100644 index 0000000000..ab4606735e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/jekyll-paginate.gemspec @@ -0,0 +1,24 @@ +# coding: utf-8 +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'jekyll-paginate/version' + +Gem::Specification.new do |spec| + spec.name = "jekyll-paginate" + spec.version = Jekyll::Paginate::VERSION + spec.authors = ["Parker Moore"] + spec.email = ["parkrmoore@gmail.com"] + spec.summary = %q{Built-in Pagination Generator for Jekyll} + spec.homepage = "https://github.com/jekyll/jekyll-paginate" + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0") + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } + spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) + spec.require_paths = ["lib"] + + spec.add_development_dependency "jekyll", "~> 2.0" + spec.add_development_dependency "bundler", "~> 1.5" + spec.add_development_dependency "rake" + spec.add_development_dependency "rspec", "~> 3.0" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate.rb new file mode 100644 index 0000000000..3a3d6ff0f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate.rb @@ -0,0 +1,8 @@ +require "jekyll-paginate/version" +require "jekyll-paginate/pager" +require "jekyll-paginate/pagination" + +module Jekyll + module Paginate + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pager.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pager.rb new file mode 100644 index 0000000000..eba983d282 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pager.rb @@ -0,0 +1,137 @@ +module Jekyll + module Paginate + class Pager + attr_reader :page, :per_page, :posts, :total_posts, :total_pages, + :previous_page, :previous_page_path, :next_page, :next_page_path + + # Calculate the number of pages. + # + # all_posts - The Array of all Posts. + # per_page - The Integer of entries per page. + # + # Returns the Integer number of pages. + def self.calculate_pages(all_posts, per_page) + (all_posts.size.to_f / per_page.to_i).ceil + end + + # Determine if pagination is enabled the site. + # + # site - the Jekyll::Site object + # + # Returns true if pagination is enabled, false otherwise. + def self.pagination_enabled?(site) + !site.config['paginate'].nil? && + site.pages.size > 0 + end + + # Static: Determine if a page is a possible candidate to be a template page. + # Page's name must be `index.html` and exist in any of the directories + # between the site source and `paginate_path`. + # + # config - the site configuration hash + # page - the Jekyll::Page about which we're inquiring + # + # Returns true if the + def self.pagination_candidate?(config, page) + page_dir = File.dirname(File.expand_path(remove_leading_slash(page.path), config['source'])) + paginate_path = remove_leading_slash(config['paginate_path']) + paginate_path = File.expand_path(paginate_path, config['source']) + page.name == 'index.html' && + in_hierarchy(config['source'], page_dir, File.dirname(paginate_path)) + end + + # Determine if the subdirectories of the two paths are the same relative to source + # + # source - the site source + # page_dir - the directory of the Jekyll::Page + # paginate_path - the absolute paginate path (from root of FS) + # + # Returns whether the subdirectories are the same relative to source + def self.in_hierarchy(source, page_dir, paginate_path) + return false if paginate_path == File.dirname(paginate_path) + return false if paginate_path == Pathname.new(source).parent + page_dir == paginate_path || + in_hierarchy(source, page_dir, File.dirname(paginate_path)) + end + + # Static: Return the pagination path of the page + # + # site - the Jekyll::Site object + # num_page - the pagination page number + # + # Returns the pagination path as a string + def self.paginate_path(site, num_page) + return nil if num_page.nil? + return Pagination.first_page_url(site) if num_page <= 1 + format = site.config['paginate_path'] + format = format.sub(':num', num_page.to_s) + ensure_leading_slash(format) + end + + # Static: Return a String version of the input which has a leading slash. + # If the input already has a forward slash in position zero, it will be + # returned unchanged. + # + # path - a String path + # + # Returns the path with a leading slash + def self.ensure_leading_slash(path) + path[0..0] == "/" ? path : "/#{path}" + end + + # Static: Return a String version of the input without a leading slash. + # + # path - a String path + # + # Returns the input without the leading slash + def self.remove_leading_slash(path) + ensure_leading_slash(path)[1..-1] + end + + # Initialize a new Pager. + # + # site - the Jekyll::Site object + # page - The Integer page number. + # all_posts - The Array of all the site's Posts. + # num_pages - The Integer number of pages or nil if you'd like the number + # of pages calculated. + def initialize(site, page, all_posts, num_pages = nil) + @page = page + @per_page = site.config['paginate'].to_i + @total_pages = num_pages || Pager.calculate_pages(all_posts, @per_page) + + if @page > @total_pages + raise RuntimeError, "page number can't be greater than total pages: #{@page} > #{@total_pages}" + end + + init = (@page - 1) * @per_page + offset = (init + @per_page - 1) >= all_posts.size ? all_posts.size : (init + @per_page - 1) + + @total_posts = all_posts.size + @posts = all_posts[init..offset] + @previous_page = @page != 1 ? @page - 1 : nil + @previous_page_path = Pager.paginate_path(site, @previous_page) + @next_page = @page != @total_pages ? @page + 1 : nil + @next_page_path = Pager.paginate_path(site, @next_page) + end + + # Convert this Pager's data to a Hash suitable for use by Liquid. + # + # Returns the Hash representation of this Pager. + def to_liquid + { + 'page' => page, + 'per_page' => per_page, + 'posts' => posts, + 'total_posts' => total_posts, + 'total_pages' => total_pages, + 'previous_page' => previous_page, + 'previous_page_path' => previous_page_path, + 'next_page' => next_page, + 'next_page_path' => next_page_path + } + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pagination.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pagination.rb new file mode 100644 index 0000000000..79614c4cdf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/pagination.rb @@ -0,0 +1,86 @@ +module Jekyll + module Paginate + class Pagination < Generator + # This generator is safe from arbitrary code execution. + safe true + + # This generator should be passive with regard to its execution + priority :lowest + + # Generate paginated pages if necessary. + # + # site - The Site. + # + # Returns nothing. + def generate(site) + if Pager.pagination_enabled?(site) + if template = template_page(site) + paginate(site, template) + else + Jekyll.logger.warn "Pagination:", "Pagination is enabled, but I couldn't find " + + "an index.html page to use as the pagination template. Skipping pagination." + end + end + end + + # Paginates the blog's posts. Renders the index.html file into paginated + # directories, e.g.: page2/index.html, page3/index.html, etc and adds more + # site-wide data. + # + # site - The Site. + # page - The index.html Page that requires pagination. + # + # {"paginator" => { "page" => , + # "per_page" => , + # "posts" => [], + # "total_posts" => , + # "total_pages" => , + # "previous_page" => , + # "next_page" => }} + def paginate(site, page) + all_posts = site.site_payload['site']['posts'] + all_posts = all_posts.reject { |p| p['hidden'] } + pages = Pager.calculate_pages(all_posts, site.config['paginate'].to_i) + (1..pages).each do |num_page| + pager = Pager.new(site, num_page, all_posts, pages) + if num_page > 1 + newpage = Page.new(site, site.source, page.dir, page.name) + newpage.pager = pager + newpage.dir = Pager.paginate_path(site, num_page) + site.pages << newpage + else + page.pager = pager + end + end + end + + # Static: Fetch the URL of the template page. Used to determine the + # path to the first pager in the series. + # + # site - the Jekyll::Site object + # + # Returns the url of the template page + def self.first_page_url(site) + if page = Pagination.new.template_page(site) + page.url + else + nil + end + end + + # Public: Find the Jekyll::Page which will act as the pager template + # + # site - the Jekyll::Site object + # + # Returns the Jekyll::Page which will act as the pager template + def template_page(site) + site.pages.dup.select do |page| + Pager.pagination_candidate?(site.config, page) + end.sort do |one, two| + two.path.size <=> one.path.size + end.first + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/version.rb new file mode 100644 index 0000000000..4442dcca60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/lib/jekyll-paginate/version.rb @@ -0,0 +1,5 @@ +module Jekyll + module Paginate + VERSION = "1.1.0" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/bootstrap b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/bootstrap new file mode 100755 index 0000000000..0a7447970f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/bootstrap @@ -0,0 +1,3 @@ +#!/bin/bash + +bundle install diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/cibuild b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/cibuild new file mode 100755 index 0000000000..45d681aa3f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/cibuild @@ -0,0 +1,3 @@ +#!/bin/bash + +bundle exec rspec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/unbundle b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/unbundle new file mode 100755 index 0000000000..9c4120b93b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/script/unbundle @@ -0,0 +1,8 @@ +#!/bin/bash + +RELEASES_URL="https://github.com/jekyll/jekyll/releases" +JEKYLL_VERSION=`curl http://jekyllrb.com/latest_version.txt` +JEKYLL_BUNDLE="jekyll-${JEKYLL_VERSION}.tar.gz" + +wget "${RELEASES_URL}/download/v${JEKYLL_VERSION}/${JEKYLL_BUNDLE}" +tar -xzvf ${JEKYLL_BUNDLE} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pager_spec.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pager_spec.rb new file mode 100644 index 0000000000..2dba114ab8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pager_spec.rb @@ -0,0 +1,134 @@ +require 'spec_helper' + +RSpec.describe(Jekyll::Paginate::Pager) do + + it "calculate number of pages" do + expect(described_class.calculate_pages([], '2')).to eql(0) + expect(described_class.calculate_pages([1], '2')).to eql(1) + expect(described_class.calculate_pages([1,2], '2')).to eql(1) + expect(described_class.calculate_pages([1,2,3], '2')).to eql(2) + expect(described_class.calculate_pages([1,2,3,4], '2')).to eql(2) + expect(described_class.calculate_pages([1,2,3,4,5], '2')).to eql(3) + end + + context "with the default paginate_path" do + let(:site) { build_site } + + it "determines the correct pagination path for each page" do + expect(described_class.paginate_path(site, 1)).to eql("/index.html") + expect(described_class.paginate_path(site, 2)).to eql("/page2") + end + end + + context "with paginate_path set to a subdirectory with no index.html" do + let(:site) { build_site({'paginate_path' => '/blog/page-:num'}) } + + it "determines the correct pagination path for each page" do + expect(described_class.paginate_path(site, 1)).to eql("/index.html") + expect(described_class.paginate_path(site, 2)).to eql("/blog/page-2") + end + end + + context "with paginate_path set to a subdirectory with no index.html with num pages being in subdirectories" do + let(:site) { build_site({'paginate_path' => '/blog/page/:num'}) } + + it "determines the correct pagination path for each page" do + expect(described_class.paginate_path(site, 1)).to eql("/index.html") + expect(described_class.paginate_path(site, 2)).to eql("/blog/page/2") + end + end + + context "with paginate_path set to a subdirectory wherein an index.html exists" do + let(:site) { build_site({'paginate_path' => '/contacts/page:num'}) } + + it "determines the correct pagination path for each page" do + expect(described_class.paginate_path(site, 1)).to eql("/contacts/index.html") + expect(described_class.paginate_path(site, 2)).to eql("/contacts/page2") + end + end + + context "with paginate_path set to a subdir wherein an index.html exists with pages in subdirs" do + let(:site) { build_site({'paginate_path' => '/contacts/page/:num'}) } + + it "determines the correct pagination path for each page" do + expect(described_class.paginate_path(site, 1)).to eql("/contacts/index.html") + expect(described_class.paginate_path(site, 2)).to eql("/contacts/page/2") + end + end + + context "pagination disabled" do + let(:site) { build_site('paginate' => nil) } + + it "report that pagination is disabled" do + expect(described_class.pagination_enabled?(site)).to be_falsey + end + end + + context "pagination enabled for 2" do + let(:site) { build_site('paginate' => 2) } + let(:posts) { site.posts } + + it "report that pagination is enabled" do + expect(described_class.pagination_enabled?(site)).to be_truthy + end + + context "with 4 posts" do + let(:posts) { site.posts[1..4] } + + it "create first pager" do + pager = described_class.new(site, 1, posts) + expect(pager.posts.size).to eql(2) + expect(pager.total_pages).to eql(2) + expect(pager.previous_page).to be_nil + expect(pager.next_page).to eql(2) + end + + it "create second pager" do + pager = described_class.new(site, 2, posts) + expect(pager.posts.size).to eql(2) + expect(pager.total_pages).to eql(2) + expect(pager.previous_page).to eql(1) + expect(pager.next_page).to be_nil + end + + it "not create third pager" do + expect { described_class.new(site, 3, posts) }.to raise_error + end + + end + + context "with 5 posts" do + let(:posts) { site.posts[1..5] } + + it "create first pager" do + pager = described_class.new(site, 1, posts) + expect(pager.posts.size).to eql(2) + expect(pager.total_pages).to eql(3) + expect(pager.previous_page).to be_nil + expect(pager.next_page).to eql(2) + end + + it "create second pager" do + pager = described_class.new(site, 2, posts) + expect(pager.posts.size).to eql(2) + expect(pager.total_pages).to eql(3) + expect(pager.previous_page).to eql(1) + expect(pager.next_page).to eql(3) + end + + it "create third pager" do + pager = described_class.new(site, 3, posts) + expect(pager.posts.size).to eql(1) + expect(pager.total_pages).to eql(3) + expect(pager.previous_page).to eql(2) + expect(pager.next_page).to be_nil + end + + it "not create fourth pager" do + expect { described_class.new(site, 4, posts) }.to raise_error(RuntimeError) + end + + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pagination_spec.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/pagination_spec.rb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-20-blah.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-20-blah.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-21-bleh.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-21-bleh.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-22-humor.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-22-humor.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-23-hey-there.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-23-hey-there.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-24-whateva.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-24-whateva.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-25-oh-yes.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/_posts/2014-05-25-oh-yes.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/contacts/index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/contacts/index.html new file mode 100644 index 0000000000..a49ba48448 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/contacts/index.html @@ -0,0 +1,2 @@ +--- +--- \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/index.html new file mode 100644 index 0000000000..a49ba48448 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/source/index.html @@ -0,0 +1,2 @@ +--- +--- \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/spec_helper.rb new file mode 100644 index 0000000000..c8de5348bd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-paginate-1.1.0/spec/spec_helper.rb @@ -0,0 +1,97 @@ +require 'jekyll' +require File.expand_path("../lib/jekyll-paginate", File.dirname(__FILE__)) + +module TestMethods + def test_dir(*subdirs) + File.join(File.dirname(__FILE__), *subdirs) + end + + def dest_dir(*subdirs) + test_dir('dest', *subdirs) + end + + def source_dir(*subdirs) + test_dir('source', *subdirs) + end + + def build_configs(overrides, base_hash = Jekyll::Configuration::DEFAULTS) + Jekyll::Utils.deep_merge_hashes(base_hash, overrides) + end + + def site_configuration(overrides = {}) + build_configs({ + "source" => source_dir, + "destination" => dest_dir + }, build_configs(overrides)) + end + + def build_site(config = {}) + site = Jekyll::Site.new(site_configuration( + {"paginate" => 1}.merge(config) + )) + site.process + site + end +end + +RSpec.configure do |config| + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + + # These two settings work together to allow you to limit a spec run + # to individual examples or groups you care about by tagging them with + # `:focus` metadata. When nothing is tagged with `:focus`, all examples + # get run. + config.filter_run :focus + config.run_all_when_everything_filtered = true + + # Limits the available syntax to the non-monkey patched syntax that is recommended. + # For more details, see: + # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax + # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching + config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + # config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = 'doc' + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed + + include TestMethods +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter.rb new file mode 100644 index 0000000000..ed73199d6e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require "jekyll-sass-converter/version" +require "jekyll/converters/scss" +require "jekyll/converters/sass" + +module JekyllSassConverter +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter/version.rb new file mode 100644 index 0000000000..47e34f8f8c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll-sass-converter/version.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module JekyllSassConverter + VERSION = "1.5.2".freeze +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/sass.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/sass.rb new file mode 100644 index 0000000000..1124988c76 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/sass.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "sass" +require "jekyll/utils" +require "jekyll/converters/scss" + +module Jekyll + module Converters + class Sass < Scss + safe true + priority :low + + def matches(ext) + ext =~ %r!^\.sass$!i + end + + def syntax + :sass + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/scss.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/scss.rb new file mode 100644 index 0000000000..fe41cfed29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sass-converter-1.5.2/lib/jekyll/converters/scss.rb @@ -0,0 +1,132 @@ +# frozen_string_literal: true + +require "sass" +require "jekyll/utils" + +module Jekyll + module Converters + class Scss < Converter + BYTE_ORDER_MARK = %r!^\xEF\xBB\xBF! + SyntaxError = Class.new(ArgumentError) + + safe true + priority :low + + ALLOWED_STYLES = %w(nested expanded compact compressed).freeze + + def matches(ext) + ext =~ %r!^\.scss$!i + end + + def output_ext(_ext) + ".css" + end + + def safe? + !!@config["safe"] + end + + def jekyll_sass_configuration + options = @config["sass"] || {} + unless options["style"].nil? + options["style"] = options["style"].to_s.gsub(%r!\A:!, "").to_sym + end + options + end + + def sass_build_configuration_options(overrides) + if safe? + { + :load_paths => sass_load_paths, + :syntax => syntax, + :style => sass_style, + :cache => false, + } + else + Jekyll::Utils.symbolize_hash_keys( + Jekyll::Utils.deep_merge_hashes( + jekyll_sass_configuration, + overrides + ) + ) + end + end + + def syntax + :scss + end + + def sass_dir + return "_sass" if jekyll_sass_configuration["sass_dir"].to_s.empty? + jekyll_sass_configuration["sass_dir"] + end + + def sass_style + style = jekyll_sass_configuration.fetch("style", :compact) + ALLOWED_STYLES.include?(style.to_s) ? style.to_sym : :compact + end + + def user_sass_load_paths + Array(jekyll_sass_configuration["load_paths"]) + end + + def sass_dir_relative_to_site_source + Jekyll.sanitized_path(site_source, sass_dir) + end + + def sass_load_paths + paths = user_sass_load_paths + [sass_dir_relative_to_site_source] + + if safe? + # Sanitize paths to prevent any attack vectors (.e.g. `/**/*`) + paths.map! { |path| Jekyll.sanitized_path(site_source, path) } + end + + # Expand file globs (e.g. `node_modules/*/node_modules` ) + Dir.chdir(site_source) do + paths = paths.map { |path| Dir.glob(path) }.flatten.uniq + + paths.map! do |path| + if safe? + # Sanitize again in case globbing was able to do something crazy. + Jekyll.sanitized_path(site_source, path) + else + File.expand_path(path) + end + end + end + + paths.select { |path| File.directory?(path) } + end + + def allow_caching? + !safe? + end + + def add_charset? + !!jekyll_sass_configuration["add_charset"] + end + + def sass_configs + sass_build_configuration_options({ + "syntax" => syntax, + "cache" => allow_caching?, + "load_paths" => sass_load_paths, + }) + end + + def convert(content) + output = ::Sass.compile(content, sass_configs) + replacement = add_charset? ? '@charset "UTF-8";' : "" + output.sub(BYTE_ORDER_MARK, replacement) + rescue ::Sass::SyntaxError => e + raise SyntaxError, "#{e} on line #{e.sass_line}" + end + + private + def site_source + @site_source ||= File.expand_path(@config["source"]).freeze + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.gitignore new file mode 100644 index 0000000000..cc6acc6427 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.gitignore @@ -0,0 +1,12 @@ +/.bundle/ +/.yardoc +/Gemfile.lock +/_yardoc/ +/coverage/ +/doc/ +/pkg/ +/spec/reports/ +/tmp/ +/bin/ +*.gem +_site diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rspec new file mode 100644 index 0000000000..83e16f8044 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rspec @@ -0,0 +1,2 @@ +--color +--require spec_helper diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rubocop.yml new file mode 100644 index 0000000000..630a477876 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.rubocop.yml @@ -0,0 +1,20 @@ +inherit_gem: + jekyll: .rubocop.yml + +AllCops: + TargetRubyVersion: 2.3 + Exclude: + - vendor/**/* + +Metrics/LineLength: + Exclude: + - spec/**/* + - jekyll-seo-tag.gemspec + +Metrics/BlockLength: + Exclude: + - spec/**/* + +Layout/IndentHeredoc: + Exclude: + - spec/**/* diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.travis.yml new file mode 100644 index 0000000000..4c96096051 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/.travis.yml @@ -0,0 +1,13 @@ +rvm: + - 2.3 + - 2.4 + - 2.5 +before_install: gem install bundler +language: ruby +script: script/cibuild +sudo: false +cache: bundler + +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/Gemfile new file mode 100644 index 0000000000..83c46cab9c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gemspec + +gem "github-pages", :group => :jekyll_plugins diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/History.markdown b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/History.markdown new file mode 100644 index 0000000000..78e7e358b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/History.markdown @@ -0,0 +1,118 @@ +## 2.5.0 / 2018-05-18 + + * Docs: Prevent GitHub Pages from processing Liquid raw tag (#276) + +### Documentation + + * Use gems config key for Jekyll < 3.5.0 (#255) + * docs/usage - replace "below" with correct link (#280) + +### Development Fixes + + * Test against Ruby 2.5 (#260) + * add tests for twitter.card types (#289) + * Target Ruby 2.3 and Rubocop 0.56.0 (#292) + +### Minor Enhancements + + * Add webmaster_verifications for baidu (#263) + * Include page number in title (#250) + * Configure default Twitter summary card type (V2) (#225) + +## 2.4.0 / 2017-12-04 + +### Minor + + * Add meta generator (#236) + * Consistently use self-closing tags (#246) + * Strip null values from JSON-LD hash (#249) + +### Documentation + + * Avoid deprecation warning when building docs (#243) + +### Development Fixes + + * Test against latest Rubies (#242) + * Use Nokigiri on CI (#181) + +## 2.3.0 + +### Minor Enhancements + + * Use canonical_url specified in page if present #211 + * Fix for image.path causing an invalid url error #228 + * Ensure `site.data.authors` is properly formatted before attempting to retrieve author meta #227 + * Convert author, image, and JSON-LD to dedicated drops #229 + * Cache parsed template #231 + * Define path with `__dir__` #232 + +### Documentation + + * gems: is deprecated in current Jekyll version of github-pages #230 + +## 2.2.3 + + * Guard against the author's Twitter handle being Nil when stripping @'s #203 + * Guard against empty title or description strings #206 + +## 2.2.2 + +### Minor Enhancements + + * Guard against arrays in subhashes #197 + * Guard against invalid or missing URLs #199 + +### Development fixes + + * Remove dynamic GitHub Pages logic from Gemfile #194 + +## 2.2.1 + + * Convert template logic to a Liquid Drop (significant performance improvement) (#184) + * Fix for JSON-LD validation warning for images missing required properties (#183) + +## 2.2.0 + +### Major Enhancements + + * Add author meta (#103) + * Add og:locale support #166 + * Add support for Bing and Yandex webmaster tools. Closes #147 (#148) + * Add SEO author and date modified to validate JSON-LD output (#151) + +### Minor Enhancements + + * Use `|` for title separator (#162) + * Use `og:image` for twitter image (#174) + +### Development Fixes + + * Style fixes (#170, #157, #149) + * Test against latest version of Jekyll (#171) + * Bump dev dependencies (#172) + * Remove Rake dependency (#180) + +## 2.1.0 + +### Major Enhancement + + * Use new URL filters (#123) + +### Minor Enhancements + + * Wraps logo image json data in a publisher property (#133) + * Fix duplicated `escape_once` (#93) + * Simplify minify regex (#125) + * Don't mangle text with newlines #126 + +### Documentation + + * Add front matter default example for image (#132) + * Fix tiny typo (#106) + * add example usage of social profiles (#139) + +### Development + + * Inherit Jekyll's rubocop config for consistency (#109) + * Correct spelling in .travis.yml (#112) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/LICENSE.txt new file mode 100644 index 0000000000..3b5c0a6ed8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present Ben Balter and the jekyll-seo-tag contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/README.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/README.md new file mode 100644 index 0000000000..a168de8c2d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/README.md @@ -0,0 +1,33 @@ +## About Jekyll SEO Tag + +A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content. + +[![Gem Version](https://badge.fury.io/rb/jekyll-seo-tag.svg)](https://badge.fury.io/rb/jekyll-seo-tag) [![Build Status](https://travis-ci.org/jekyll/jekyll-seo-tag.svg)](https://travis-ci.org/jekyll/jekyll-seo-tag) + +## What it does + +Jekyll SEO Tag adds the following meta tags to your site: + +* Page title, with site title or description appended +* Page description +* Canonical URL +* Next and previous URLs on paginated pages +* [JSON-LD Site and post metadata](https://developers.google.com/structured-data/) for richer indexing +* [Open Graph](http://ogp.me/) title, description, site title, and URL (for Facebook, LinkedIn, etc.) +* [Twitter Summary Card](https://dev.twitter.com/cards/overview) metadata + +While you could theoretically add the necessary metadata tags yourself, Jekyll SEO Tag provides a battle-tested template of crowdsourced best-practices. + +## What it doesn't do + +Jekyll SEO tag is designed to output machine-readable metadata for search engines and social networks to index and display. If you're looking for something to analyze your Jekyll site's structure and content (e.g., more traditional SEO optimization), take a look at [The Jekyll SEO Gem](https://github.com/pmarsceill/jekyll-seo-gem). + +Jekyll SEO tag isn't designed to accommodate every possible use case. It should work for most site out of the box and without a laundry list of configuration options that serve only to confuse most users. + +## Documentation + +For more information, see: + +* [Installation](installation.md) +* [Usage](usage.md) +* [Advanced usage](advanced-usage.md) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_config.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_config.yml new file mode 100644 index 0000000000..286cdd04ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_config.yml @@ -0,0 +1,10 @@ +title: Jekyll SEO Tag +description: A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content. + +permalink: pretty + +plugins: + - jekyll-seo-tag + - jekyll-sitemap + +theme: jekyll-theme-primer diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_layouts/default.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_layouts/default.html new file mode 100644 index 0000000000..da8eec83f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/_layouts/default.html @@ -0,0 +1,18 @@ + + + + + + + {% seo %} + + +
                +

                {{ site.title }}

                + + {{ content }} +
                + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/advanced-usage.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/advanced-usage.md new file mode 100644 index 0000000000..c2fbed5212 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/advanced-usage.md @@ -0,0 +1,140 @@ +## Advanced usage + +Jekyll SEO Tag is designed to implement SEO best practices by default and to be the right fit for most sites right out of the box. If for some reason, you need more control over the output, read on: + +### Disabling `` output + +If for some reason, you don't want the plugin to output `<title>` tags on each page, simply invoke the plugin within your template like so: + +<!-- {% raw %} --> +``` +{% seo title=false %} +``` +<!-- {% endraw %} --> + +### Author information + +Author information is used to propagate the `creator` field of Twitter summary cards. This should be an author-specific, not site-wide Twitter handle (the site-wide username be stored as `site.twitter.username`). + +*TL;DR: In most cases, put `author: [your Twitter handle]` in the document's front matter, for sites with multiple authors. If you need something more complicated, read on.* + +There are several ways to convey this author-specific information. Author information is found in the following order of priority: + +1. An `author` object, in the documents's front matter, e.g.: + + ```yml + author: + twitter: benbalter + ``` + +2. An `author` object, in the site's `_config.yml`, e.g.: + + ```yml + author: + twitter: benbalter + ``` + +3. `site.data.authors[author]`, if an author is specified in the document's front matter, and a corresponding key exists in `site.data.authors`. E.g., you have the following in the document's front matter: + + ```yml + author: benbalter + ``` + + And you have the following in `_data/authors.yml`: + + ```yml + benbalter: + picture: /img/benbalter.png + twitter: jekyllrb + + potus: + picture: /img/potus.png + twitter: whitehouse + ``` + + In the above example, the author `benbalter`'s Twitter handle will be resolved to `@jekyllrb`. This allows you to centralize author information in a single `_data/authors` file for site with many authors that require more than just the author's username. + + *Pro-tip: If `authors` is present in the document's front matter as an array (and `author` is not), the plugin will use the first author listed, as Twitter supports only one author.* + +4. An author in the document's front matter (the simplest way), e.g.: + + ```yml + author: benbalter + ``` + +5. An author in the site's `_config.yml`, e.g.: + + ```yml + author: benbalter + ``` + +### Customizing JSON-LD output + +The following options can be set for any particular page. While the default options are meant to serve most users in the most common circumstances, there may be situations where more precise control is necessary. + +* `seo` + * `name` - If the name of the thing that the page represents is different from the page title. (i.e.: "Frank's Café" vs "Welcome to Frank's Café") + * `type` - The type of things that the page represents. This must be a [Schema.org type](http://schema.org/docs/schemas.html), and will probably usually be something like [`BlogPosting`](http://schema.org/BlogPosting), [`NewsArticle`](http://schema.org/NewsArticle), [`Person`](http://schema.org/Person), [`Organization`](http://schema.org/Organization), etc. + * `links` - An array of other URLs that represent the same thing that this page represents. For instance, Jane's bio page might include links to Jane's GitHub and Twitter profiles. + +### Customizing image output + +For most users, setting `image: [path-to-image]` on a per-page basis should be enough. If you need more control over how images are represented, the `image` property can also be an object, with the following options: + +* `path` - The relative path to the image. Same as `image: [path-to-image]` +* `height` - The height of the Open Graph (`og:image`) image +* `width` - The width of the Open Graph (`og:image`) image + +You can use any of the above, optional properties, like so: + +```yml +image: + path: /img/twitter.png + height: 100 + width: 100 +``` + +### Setting a default image + +You can define a default image using [Front Matter default](https://jekyllrb.com/docs/configuration/#front-matter-defaults), to provide a default Twitter Card or OGP image to all of your posts and pages. + +Here is a very basic example, that you are encouraged to adapt to your needs: + +```yml +defaults: + - scope: + path: "" + values: + image: /assets/images/default-card.png +``` + +### SmartyPants Titles + +Titles will be processed using [Jekyll's `smartify` filter](https://jekyllrb.com/docs/templates/). This will use SmartyPants to translate plain ASCII punctuation into "smart" typographic punctuation. This will not render or strip any Markdown you may be using in a page title. + +### Setting customized Canonical URL + +You can set custom Canonical URL for a page by specifying canonical_url option in page front-matter. +E.g., you have the following in the page's front matter: +```yml +layout: post +title: Title of Your Post +canonical_url: 'https://github.com/jekyll/jekyll-seo-tag/' +``` + +Which will generate canonical_url with specified link in canonical_url. +```html +<link rel="canonical" href="https://github.com/jekyll/jekyll-seo-tag/" /> +``` + +If no canonical_url option was specified, then uses page url for generating canonical_url. +E.g., you have not specified canonical_url in front-matter: +```yml +layout: post +title: Title of Your Post +``` + +Which will generate following canonical_url: +```html +<link rel="canonical" href="http://yoursite.com/title-of-your-post" /> +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/installation.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/installation.md new file mode 100644 index 0000000000..4a913403da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/installation.md @@ -0,0 +1,24 @@ +# Installing Jekyll SEO Tag + +1. Add the following to your site's `Gemfile`: + + ```ruby + gem 'jekyll-seo-tag' + ``` + +2. Add the following to your site's `_config.yml`: + + ```yml + plugins: + - jekyll-seo-tag + ``` + +If you are using a Jekyll version less than `3.5.0`, use the `gems` key instead of `plugins`. + +3. Add the following right before `</head>` in your site's template(s): + +<!-- {% raw %} --> + ```liquid + {% seo %} + ``` +<!-- {% endraw %} --> diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/usage.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/usage.md new file mode 100644 index 0000000000..c966ae8d1e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/docs/usage.md @@ -0,0 +1,74 @@ +## Usage + +The SEO tag will respect any of the following if included in your site's `_config.yml` (and simply not include them if they're not defined): + +* `title` - Your site's title (e.g., Ben's awesome site, The GitHub Blog, etc.) +* `description` - A short description (e.g., A blog dedicated to reviewing cat gifs) +* `url` - The full URL to your site. Note: `site.github.url` will be used by default. +* `author` - global author information (see [Advanced usage](advanced-usage.md#author-information)) + +* `twitter` - The following properties are available: + * `twitter:card` - The site's default card type + * `twitter:username` - The site's Twitter handle. You'll want to describe it like so: + + ```yml + twitter: + username: benbalter + card: summary + ``` + +* `facebook` - The following properties are available: + * `facebook:app_id` - a Facebook app ID for Facebook insights + * `facebook:publisher` - a Facebook page URL or ID of the publishing entity + * `facebook:admins` - a Facebook user ID for domain insights linked to a personal account + + You'll want to describe one or more like so: + + ```yml + facebook: + app_id: 1234 + publisher: 1234 + admins: 1234 + ``` + +* `logo` - URL to a site-wide logo (e.g., `/assets/your-company-logo.png`) - If you would like the "publisher" property to be present, you must add this field to your site's configuration, during the validation of the structured data by Google web master tools, if the `logo` field is not validated, you will find errors inherent to the publisher in the [structured datas test](https://search.google.com/structured-data/testing-tool/u/0/) +* `social` - For [specifying social profiles](https://developers.google.com/structured-data/customize/social-profiles). The following properties are available: + * `name` - If the user or organization name differs from the site's name + * `links` - An array of links to social media profiles. + * `date_modified` - Manually specify the `dateModified` field in the JSON-LD output to override Jekyll's own `dateModified`. This field will take **first priority** for the `dateModified` JSON-LD output. This is useful when the file timestamp does not match the true time that the content was modified. A user may also install [Last Modified At](https://github.com/gjtorikian/jekyll-last-modified-at) which will offer an alternative way of providing for the `dateModified` field. + + ```yml + social: + name: Ben Balter + links: + - https://twitter.com/BenBalter + - https://www.facebook.com/ben.balter + - https://www.linkedin.com/in/BenBalter + - https://plus.google.com/+BenBalter + - https://github.com/benbalter + - https://keybase.io/benbalter + ``` + +* `google_site_verification` for verifying ownership via Google webmaster tools +* Alternatively, verify ownership with several services at once using the following format: + +```yml +webmaster_verifications: + google: 1234 + bing: 1234 + alexa: 1234 + yandex: 1234 + baidu: 1234 +``` + +* `lang` - The locale these tags are marked up in. Of the format `language_TERRITORY`. Default is `en_US`. + +The SEO tag will respect the following YAML front matter if included in a post, page, or document: + +* `title` - The title of the post, page, or document +* `description` - A short description of the page's content +* `image` - URL to an image associated with the post, page, or document (e.g., `/assets/page-pic.jpg`) +* `author` - Page-, post-, or document-specific author information (see [Advanced usage](advanced-usage.md#author-information)) +* `lang` - Page-, post-, or document-specific language information + +*Note:* Front matter defaults can be used for any of the above values as described in advanced usage with an image example. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/jekyll-seo-tag.gemspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/jekyll-seo-tag.gemspec new file mode 100644 index 0000000000..19496a2a60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/jekyll-seo-tag.gemspec @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +lib = File.expand_path("lib", __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require "jekyll-seo-tag/version" + +Gem::Specification.new do |spec| + spec.name = "jekyll-seo-tag" + spec.version = Jekyll::SeoTag::VERSION + spec.authors = ["Ben Balter"] + spec.email = ["ben.balter@github.com"] + spec.summary = "A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content." + spec.homepage = "https://github.com/benbalter/jekyll-seo-tag" + spec.license = "MIT" + + # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or + # delete this section to allow pushing this gem to any host. + if spec.respond_to?(:metadata) + spec.metadata["allowed_push_host"] = "https://rubygems.org" + else + raise "RubyGems 2.0 or newer is required to protect against public gem pushes." + end + + spec.required_ruby_version = ">= 2.3.0" + + spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) } + spec.bindir = "exe" + spec.executables = spec.files.grep(%r!^exe/!) { |f| File.basename(f) } + spec.require_paths = ["lib"] + + spec.add_dependency "jekyll", "~> 3.3" + spec.add_development_dependency "bundler", "~> 1.15" + spec.add_development_dependency "html-proofer", "~> 3.7" + spec.add_development_dependency "rspec", "~> 3.5" + spec.add_development_dependency "rubocop", "~> 0.56.0" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag.rb new file mode 100644 index 0000000000..ca04c65884 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +require "jekyll" +require "jekyll-seo-tag/version" + +module Jekyll + class SeoTag < Liquid::Tag + autoload :JSONLD, "jekyll-seo-tag/json_ld" + autoload :AuthorDrop, "jekyll-seo-tag/author_drop" + autoload :ImageDrop, "jekyll-seo-tag/image_drop" + autoload :JSONLDDrop, "jekyll-seo-tag/json_ld_drop" + autoload :UrlHelper, "jekyll-seo-tag/url_helper" + autoload :Drop, "jekyll-seo-tag/drop" + autoload :Filters, "jekyll-seo-tag/filters" + + attr_accessor :context + + # Matches all whitespace that follows either + # 1. A '}', which closes a Liquid tag + # 2. A '{', which opens a JSON block + # 3. A '>' followed by a newline, which closes an XML tag or + # 4. A ',' followed by a newline, which ends a JSON line + # We will strip all of this whitespace to minify the template + # We will not strip any whitespace if the next character is a '-' + # so that we do not interfere with the HTML comment at the + # very begining + MINIFY_REGEX = %r!(?<=[{}]|[>,]\n)\s+(?\!-)! + + def initialize(_tag_name, text, _tokens) + super + @text = text + end + + def render(context) + @context = context + SeoTag.template.render!(payload, info) + end + + private + + def options + { + "version" => Jekyll::SeoTag::VERSION, + "title" => title?, + } + end + + def payload + # site_payload is an instance of UnifiedPayloadDrop. See https://git.io/v5ajm + Jekyll::Utils.deep_merge_hashes(context.registers[:site].site_payload, { + "page" => context.registers[:page], + "paginator" => context["paginator"], + "seo_tag" => drop, + }) + end + + def drop + @drop ||= Jekyll::SeoTag::Drop.new(@text, @context) + end + + def info + { + :registers => context.registers, + :filters => [Jekyll::Filters], + } + end + + class << self + def template + @template ||= Liquid::Template.parse template_contents + end + + private + + def template_contents + @template_contents ||= begin + File.read(template_path).gsub(MINIFY_REGEX, "") + end + end + + def template_path + @template_path ||= begin + File.expand_path "./template.html", File.dirname(__FILE__) + end + end + end + end +end + +Liquid::Template.register_tag("seo", Jekyll::SeoTag) diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/author_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/author_drop.rb new file mode 100644 index 0000000000..94a6b68320 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/author_drop.rb @@ -0,0 +1,87 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + # A drop representing the current page's author + # + # Author name will be pulled from: + # + # 1. The page's `author` key + # 2. The first author in the page's `authors` key + # 3. The `author` key in the site config + # + # If the result from the name search is a string, we'll also check + # for additional author metadata in `site.data.authors` + class AuthorDrop < Jekyll::Drops::Drop + # Initialize a new AuthorDrop + # + # page - The page hash (e.g., Page#to_liquid) + # site - The Jekyll::Drops::SiteDrop + def initialize(page: nil, site: nil) + raise ArgumentError unless page && site + @mutations = {} + @page = page + @site = site + end + + # AuthorDrop#to_s should return name, allowing the author drop to safely + # replace `page.author`, if necessary, and remain backwards compatible + def name + author_hash["name"] + end + alias_method :to_s, :name + + def twitter + return @twitter if defined? @twitter + twitter = author_hash["twitter"] || author_hash["name"] + @twitter = twitter.is_a?(String) ? twitter.sub(%r!^@!, "") : nil + end + + private + + attr_reader :page + attr_reader :site + + # Finds the page author in the page.author, page.authors, or site.author + # + # Returns a string or hash representing the author + def resolved_author + return @resolved_author if defined? @resolved_author + sources = [page["author"]] + sources << page["authors"].first if page["authors"].is_a?(Array) + sources << site["author"] + @resolved_author = sources.find { |s| !s.to_s.empty? } + end + + # If resolved_author is a string, attempts to find coresponding author + # metadata in `site.data.authors` + # + # Returns a hash representing additional metadata or an empty hash + def site_data_hash + @site_data_hash ||= begin + return {} unless resolved_author.is_a?(String) + return {} unless site.data["authors"].is_a?(Hash) + author_hash = site.data["authors"][resolved_author] + author_hash.is_a?(Hash) ? author_hash : {} + end + end + + # Returns the normalized author hash representing the page author, + # including site-wide metadata if the author is provided as a string, + # or an empty hash, if the author cannot be resolved + def author_hash + if resolved_author.is_a? Hash + resolved_author + elsif resolved_author.is_a? String + { "name" => resolved_author }.merge(site_data_hash) + else + {} + end + end + + # Since author_hash is aliased to fallback_data, any values in the hash + # will be exposed via the drop, allowing support for arbitrary metadata + alias_method :fallback_data, :author_hash + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/drop.rb new file mode 100644 index 0000000000..b684229862 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/drop.rb @@ -0,0 +1,236 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + class Drop < Jekyll::Drops::Drop + include Jekyll::SeoTag::UrlHelper + + TITLE_SEPARATOR = " | " + FORMAT_STRING_METHODS = %i[ + markdownify strip_html normalize_whitespace escape_once + ].freeze + HOMEPAGE_OR_ABOUT_REGEX = %r!^/(about/)?(index.html?)?$! + + def initialize(text, context) + @obj = {} + @mutations = {} + @text = text + @context = context + end + + def version + Jekyll::SeoTag::VERSION + end + + # Should the `<title>` tag be generated for this page? + def title? + return false unless title + return @display_title if defined?(@display_title) + @display_title = (@text !~ %r!title=false!i) + end + + def site_title + @site_title ||= format_string(site["title"] || site["name"]) + end + + def site_description + @site_description ||= format_string site["description"] + end + + # Page title without site title or description appended + def page_title + @page_title ||= format_string(page["title"]) || site_title + end + + # Page title with site title or description appended + def title + @title ||= begin + if site_title && page_title != site_title + page_title + TITLE_SEPARATOR + site_title + elsif site_description && site_title + site_title + TITLE_SEPARATOR + site_description + else + page_title || site_title + end + end + + if page_number + return page_number + @title + end + + @title + end + + def name + return @name if defined?(@name) + @name = if seo_name + seo_name + elsif !homepage_or_about? + nil + elsif site_social["name"] + format_string site_social["name"] + elsif site_title + site_title + end + end + + def description + @description ||= begin + format_string(page["description"] || page["excerpt"]) || site_description + end + end + + # A drop representing the page author + def author + @author ||= AuthorDrop.new(:page => page, :site => site) + end + + # A drop representing the JSON-LD output + def json_ld + @json_ld ||= JSONLDDrop.new(self) + end + + # Returns a Drop representing the page's image + # Returns nil if the image has no path, to preserve backwards compatability + def image + @image ||= ImageDrop.new(:page => page, :context => @context) + @image if @image.path + end + + def date_modified + @date_modified ||= begin + date = if page_seo["date_modified"] + page_seo["date_modified"] + elsif page["last_modified_at"] + page["last_modified_at"].to_liquid + else + page["date"] + end + filters.date_to_xmlschema(date) if date + end + end + + def date_published + @date_published ||= filters.date_to_xmlschema(page["date"]) if page["date"] + end + + def type + @type ||= begin + if page_seo["type"] + page_seo["type"] + elsif homepage_or_about? + "WebSite" + elsif page["date"] + "BlogPosting" + else + "WebPage" + end + end + end + + def links + @links ||= begin + if page_seo["links"] + page_seo["links"] + elsif homepage_or_about? && site_social["links"] + site_social["links"] + end + end + end + + def logo + @logo ||= begin + return unless site["logo"] + if absolute_url? site["logo"] + filters.uri_escape site["logo"] + else + filters.uri_escape filters.absolute_url site["logo"] + end + end + end + + def page_lang + @page_lang ||= page["lang"] || site["lang"] || "en_US" + end + + def canonical_url + @canonical_url ||= begin + if page["canonical_url"].to_s.empty? + filters.absolute_url(page["url"]).to_s.gsub(%r!/index\.html$!, "/") + else + page["canonical_url"] + end + end + end + + private + + def filters + @filters ||= Jekyll::SeoTag::Filters.new(@context) + end + + def page + @page ||= @context.registers[:page].to_liquid + end + + def site + @site ||= @context.registers[:site].site_payload["site"].to_liquid + end + + def homepage_or_about? + page["url"] =~ HOMEPAGE_OR_ABOUT_REGEX + end + + def page_number + return unless @context["paginator"] && @context["paginator"]["page"] + + current = @context["paginator"]["page"] + total = @context["paginator"]["total_pages"] + + if current > 1 + return "Page #{current} of #{total} for " + end + end + + attr_reader :context + + def fallback_data + @fallback_data ||= {} + end + + def format_string(string) + string = FORMAT_STRING_METHODS.reduce(string) do |memo, method| + filters.public_send(method, memo) + end + + string unless string.empty? + end + + def seo_name + @seo_name ||= format_string(page_seo["name"]) if page_seo["name"] + end + + def page_seo + @page_seo ||= sub_hash(page, "seo") + end + + def site_social + @site_social ||= sub_hash(site, "social") + end + + # Safely returns a sub hash + # + # hash - the parent hash + # key - the key in the parent hash + # + # Returns the sub hash or an empty hash, if it does not exist + def sub_hash(hash, key) + if hash[key].is_a?(Hash) + hash[key] + else + {} + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/filters.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/filters.rb new file mode 100644 index 0000000000..6cbdf817b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/filters.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + class Filters + include Jekyll::Filters + include Liquid::StandardFilters + + def initialize(context) + @context = context + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/image_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/image_drop.rb new file mode 100644 index 0000000000..74c0bf31d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/image_drop.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + # A drop representing the page image + # The image path will be pulled from: + # + # 1. The `image` key if it's a string + # 2. The `image.path` key if it's a hash + # 3. The `image.facebook` key + # 4. The `image.twitter` key + class ImageDrop < Jekyll::Drops::Drop + include Jekyll::SeoTag::UrlHelper + + # Initialize a new ImageDrop + # + # page - The page hash (e.g., Page#to_liquid) + # context - the Liquid::Context + def initialize(page: nil, context: nil) + raise ArgumentError unless page && context + @mutations = {} + @page = page + @context = context + end + + # Called path for backwards compatability, this is really + # the escaped, absolute URL representing the page's image + # Returns nil if no image path can be determined + def path + @path ||= filters.uri_escape(absolute_url) if absolute_url + end + alias_method :to_s, :path + + private + + attr_accessor :page + attr_accessor :context + + # The normalized image hash with a `path` key (which may be nil) + def image_hash + @image_hash ||= if page["image"].is_a?(Hash) + { "path" => nil }.merge(page["image"]) + elsif page["image"].is_a?(String) + { "path" => page["image"] } + else + { "path" => nil } + end + end + alias_method :fallback_data, :image_hash + + def raw_path + @raw_path ||= begin + image_hash["path"] || image_hash["facebook"] || image_hash["twitter"] + end + end + + def absolute_url + return unless raw_path + return @absolute_url if defined? @absolute_url + @absolute_url = if raw_path.is_a?(String) && absolute_url?(raw_path) == false + filters.absolute_url raw_path + else + raw_path + end + end + + def filters + @filters ||= Jekyll::SeoTag::Filters.new(context) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld.rb new file mode 100644 index 0000000000..34d424ab05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + # This module is deprecated, but is included in the Gem to avoid a breaking + # change and should be removed at the next major version bump + module JSONLD + METHODS_KEYS = { + :json_context => "@context", + :type => "@type", + :name => "name", + :page_title => "headline", + :json_author => "author", + :json_image => "image", + :date_published => "datePublished", + :date_modified => "dateModified", + :description => "description", + :publisher => "publisher", + :main_entity => "mainEntityOfPage", + :links => "sameAs", + :canonical_url => "url", + }.freeze + + # Self should be a Jekyll::SeoTag::Drop instance (when extending the module) + def json_ld + Jekyll.logger.warn "Jekyll::SeoTag::JSONLD is deprecated" + @json_ld ||= JSONLDDrop.new(self) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld_drop.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld_drop.rb new file mode 100644 index 0000000000..a8122ea033 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/json_ld_drop.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + class JSONLDDrop < Jekyll::Drops::Drop + extend Forwardable + + def_delegator :page_drop, :name, :name + def_delegator :page_drop, :description, :description + def_delegator :page_drop, :canonical_url, :url + def_delegator :page_drop, :page_title, :headline + def_delegator :page_drop, :date_modified, :dateModified + def_delegator :page_drop, :date_published, :datePublished + def_delegator :page_drop, :links, :sameAs + def_delegator :page_drop, :logo, :logo + def_delegator :page_drop, :type, :type + + # Expose #type and #logo as private methods and #@type as a public method + alias_method :"@type", :type + private :type + private :logo + + # page_drop should be an instance of Jekyll::SeoTag::Drop + def initialize(page_drop) + @mutations = {} + @page_drop = page_drop + end + + def fallback_data + { + "@context" => "http://schema.org", + } + end + + def author + return unless page_drop.author["name"] + { + "@type" => "Person", + "name" => page_drop.author["name"], + } + end + + def image + return unless page_drop.image + return page_drop.image.path if page_drop.image.keys.length == 1 + + hash = page_drop.image.to_h + hash["url"] = hash.delete("path") + hash["@type"] = "imageObject" + hash + end + + def publisher + return unless logo + output = { + "@type" => "Organization", + "logo" => { + "@type" => "ImageObject", + "url" => logo, + }, + } + output["name"] = page_drop.author.name if page_drop.author.name + output + end + + def main_entity + return unless %w(BlogPosting CreativeWork).include?(type) + { + "@type" => "WebPage", + "@id" => page_drop.canonical_url, + } + end + alias_method :mainEntityOfPage, :main_entity + private :main_entity + + def to_json + to_h.reject { |_k, v| v.nil? }.to_json + end + + private + + attr_reader :page_drop + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/url_helper.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/url_helper.rb new file mode 100644 index 0000000000..ead8e41d02 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/url_helper.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Jekyll + class SeoTag + # Mixin to share common URL-related methods between class + module UrlHelper + private + + # Determines if the given string is an absolute URL + # + # Returns true if an absolute URL. + # Retruns false if it's a relative URL + # Returns nil if it is not a string or can't be parsed as a URL + def absolute_url?(string) + return unless string + Addressable::URI.parse(string).absolute? + rescue Addressable::URI::InvalidURIError + nil + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/version.rb new file mode 100644 index 0000000000..3fe158c99c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/jekyll-seo-tag/version.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Prevent bundler errors +module Liquid; class Tag; end; end + +module Jekyll + class SeoTag < Liquid::Tag + VERSION = "2.5.0" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/template.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/template.html new file mode 100755 index 0000000000..c2dffef5f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/lib/template.html @@ -0,0 +1,110 @@ +<!-- Begin Jekyll SEO tag v{{ seo_tag.version }} --> +{% if seo_tag.title? %} + <title>{{ seo_tag.title }} +{% endif %} + + + +{% if seo_tag.page_title %} + +{% endif %} + +{% if seo_tag.author.name %} + +{% endif %} + + + +{% if seo_tag.description %} + + +{% endif %} + +{% if site.url %} + + +{% endif %} + +{% if seo_tag.site_title %} + +{% endif %} + +{% if seo_tag.image %} + + {% if seo_tag.image.height %} + + {% endif %} + {% if seo_tag.image.width %} + + {% endif %} +{% endif %} + +{% if page.date %} + + +{% endif %} + +{% if paginator.previous_page %} + +{% endif %} +{% if paginator.next_page %} + +{% endif %} + +{% if site.twitter %} + {% if seo_tag.image %} + + {% else %} + + {% endif %} + + + + {% if seo_tag.author.twitter %} + + {% endif %} +{% endif %} + +{% if site.facebook %} + {% if site.facebook.admins %} + + {% endif %} + + {% if site.facebook.publisher %} + + {% endif %} + + {% if site.facebook.app_id %} + + {% endif %} +{% endif %} + +{% if site.webmaster_verifications %} + {% if site.webmaster_verifications.google %} + + {% endif %} + + {% if site.webmaster_verifications.bing %} + + {% endif %} + + {% if site.webmaster_verifications.alexa %} + + {% endif %} + + {% if site.webmaster_verifications.yandex %} + + {% endif %} + + {% if site.webmaster_verifications.baidu %} + + {% endif %} +{% elsif site.google_site_verification %} + +{% endif %} + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/bootstrap b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/bootstrap new file mode 100755 index 0000000000..654265ea24 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/bootstrap @@ -0,0 +1,5 @@ +#!/bin/sh + +set -ex + +bundle install diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/cibuild b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/cibuild new file mode 100755 index 0000000000..dec4aa6e30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/cibuild @@ -0,0 +1,7 @@ +#!/bin/sh + +set -ex + +bundle exec rspec +bundle exec rubocop -S -D +bundle exec gem build jekyll-seo-tag.gemspec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/release b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/release new file mode 100755 index 0000000000..14588429a8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/release @@ -0,0 +1,38 @@ +#!/bin/sh +# Tag and push a release. + +set -e + +# Make sure we're in the project root. + +cd $(dirname "$0")/.. + +# Build a new gem archive. + +rm -rf jekyll-seo-tag-*.gem +gem build -q jekyll-seo-tag.gemspec + +# Make sure we're on the master branch. + +(git branch | grep -q '* master') || { + echo "Only release from the master branch." + exit 1 +} + +# Figure out what version we're releasing. + +tag=v`ls jekyll-seo-tag-*.gem | sed 's/^jekyll-seo-tag-\(.*\)\.gem$/\1/'` + +# Make sure we haven't released this version before. + +git fetch -t origin + +(git tag -l | grep -q "$tag") && { + echo "Whoops, there's already a '${tag}' tag." + exit 1 +} + +# Tag it and bag it. + +gem push jekyll-seo-tag-*.gem && git tag "$tag" && + git push origin master && git push origin "$tag" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/site b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/site new file mode 100755 index 0000000000..9e4f56f2e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-seo-tag-2.5.0/script/site @@ -0,0 +1,3 @@ +#!/bin/sh + +bundle exec jekyll serve --source docs diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.gitignore new file mode 100644 index 0000000000..a9ab0c7917 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.gitignore @@ -0,0 +1,4 @@ +*.gem +Gemfile.lock +spec/dest +.bundle diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rspec new file mode 100644 index 0000000000..5f1647637a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rspec @@ -0,0 +1,2 @@ +--color +--format progress diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rubocop.yml new file mode 100644 index 0000000000..e67c816d13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.rubocop.yml @@ -0,0 +1,11 @@ +inherit_gem: + jekyll: .rubocop.yml + +AllCops: + TargetRubyVersion: 2.1 + Include: + - lib/*.rb + + Exclude: + - script/**/* + - spec/**/* diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.travis.yml new file mode 100644 index 0000000000..0deacf90b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/.travis.yml @@ -0,0 +1,49 @@ +sudo: false +language: ruby +cache: bundler +rvm: +- 2.2 +- 2.3 +- 2.4 +- 2.5 +matrix: + include: + # GitHub Pages + - rvm: 2.4.0 + env: + - JEKYLL_VERSION=3.6.2 + - GITHUB_PAGES=1 # Only set on one build in matrix +env: + matrix: + - JEKYLL_VERSION=3.6 +branches: + only: + - master + - /^v\d+\.\d+\.\d+/ +git: + depth: 1000 +before_install: +- gem update --system +install: +- travis_retry script/bootstrap +script: script/cibuild +notifications: + irc: + on_success: change + on_failure: change + channels: + - irc.freenode.org#jekyll + template: + - "%{repository}#%{build_number} %{message} %{build_url}" + email: + on_success: never + on_failure: change +deploy: + provider: rubygems + api_key: + secure: O8fGRnM6OJCqC2BlVE1BqYfq5aR19ulpiHhQwRiHbtSCh8H4rYt7FLsuOwSTtRQjhWYRRSpdRt2ilfQ6PY6Jx1UkxZq5zo9QAPQ9tKxiFTm7gBpZAiAgb06eyaMBSzyQ8qe2qccaFI6CiZhsiaGMsdKsWuYpuoPmdLPd7aDyYJs= + gem: jekyll-sitemap + on: + tags: true + repo: jekyll/jekyll-sitemap + condition: "$GITHUB_PAGES == 1" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Gemfile new file mode 100644 index 0000000000..9a5d6595ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Gemfile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +source "https://rubygems.org" +gemspec + +if ENV["JEKYLL_VERSION"] + gem "jekyll", "~> #{ENV["JEKYLL_VERSION"]}" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/History.markdown b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/History.markdown new file mode 100644 index 0000000000..b1a31f43fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/History.markdown @@ -0,0 +1,187 @@ +## 1.2.0 / 2018-01-25 + +### Minor Enhancements + + * Remove excluded static files from the sitemap (#166) + * filter/replace static index.html paths to permalink (#170) + +### Development Fixes + + * Condition the static file tests on Jekyll 3.4.2 and above (#167) + * Update versions for Travis (#174) + * Fix Travis Deploy (#173) + * Test against Jekyll 3.4.x *and* latest 3.x (#177) + * Define path with __dir__ (#186) + * Style: Rubocop auto-correct (#195) + * Test against Ruby 2.5 (#201) + +### Documentation + + * Add note about use with Github Pages gem (#179) + * Fix a couple of typos (#184) + * Use plugins instead of gems in README config (#185) + * Docs: set site.url in config (#172) + +## 1.1.1 / 2017-04-11 + + * Cut a new version to alleviate sha256 checksum issue on RubyGems.org (#165) + +## 1.1.0 / 2017-04-10 + +### Minor Enhancements + + * escape& (#162) + * feat: remove 404 pages from the sitemap. closes #113 (#164) + +## 1.0.0 / 2017-01-06 + + * No new changes + +## 0.13.0 / 2017-01-05 + +### Minor Enhancements + + * Add sitemap.xsl if exists (#143) + * Add robots.txt when none exists (#146) + * Refactor and add sitemap to `site.pages` (#137) + * DRY in sitemap.xml (#136) + +### Documentation + + * Fix #134: Rename "Issues" to "Known Issues" (#135) + * Fix #104: Add explanation in README for tag (#139) + * Update copyright attribution (#149) + +### Development Fixes + + * Travis should do a deep clone (#147) + +## 0.12.0 / 2016-10-06 + +### Minor Enhancements + + * Don't set @site.config["time"] on sitemap generation (#131) + * Use filters to clean up Liquid template (#128) + +### Development Fixes + + * Appease Rubocop (#132) + * Drop Addressable dependency (#133) + +## 0.11.0 / 2016-07-08 + + * Add Rubocop (#100) + * Allow Travis to cache dependencies (#108) + * Properly Escape URLs (#107) + * Include PDF files in sitemap (#109) + +## 0.10.0 / 2016-01-05 + + * URI encode sitemap URLs (#85) + * Do not include 'posts' collection twice (#92) + * Fix GitHub Pages tests to test just the Jekyll version (#87) + * Allow HTML files to end with `.xhtml` or `.htm` (#93) + * Simplify whitespace regex for stripping whitespace (#96) + +## 0.9.0 / 2015-09-21 + + * Test against Jekyll 2, 3, and the GitHub Pages version. (#83) + +## 0.8.1 / 2015-03-11 + + * Do not assume all pages have changed (#35) + * Remove duplicated range from regex (#73) + +## 0.8.0 / 2015-02-03 + + * Call each page `page` in pages loop in `sitemap.xml` for clarity (#64) + * Remove `changefreq` (#34) + * Remove `priority` (#33) + * Don't strip 'index.html' when there is more to filename ## Minor Enhancements (#68) + +## 0.7.0 / 2014-12-07 + + * Make `site.baseurl` support more robust (#59) + * Add `site.baseurl` to base site URL construction ## Development Fixes (#50) + * Remove unnecessary spaces and escaping in README ## Bug Fixes (#58) + +## 0.6.3 / 2014-11-11 + + * Be backwards-compatible when `Site#in_source_dir` and `Site#in_dest_dir` don't exist (#57) + +## 0.6.2 / 2014-11-08 + +### Bug Fixes + + * Don't attempt to read the sitemap upon page creation. (#52) + * Use new secure methods to build source & dest paths. (#53) + +## 0.6.1 / 2014-10-17 + +### Minor Enhancements + + * Strip excess whitespace (#40) + +### Bug Fixes + + * Add UTC offset to `` to handle non-UTC timezones (#49) + +### Development Fixes + + * Adding information about exclusion flag (#45) + +## 0.6.0 / 2014-09-05 + +### Minor Enhancements + + * Include custom collections in the sitemap. (#30) + * Use `post.last_modified_at` for post `` if available (#37) + +## 0.5.1 / 2014-07-31 + +### Bug Fixes + + * Explicitly set sitemap layout to `nil` to avoid warning (#32) + +## 0.5.0 / 2014-06-02 + +### Minor Enhancements + + * Allow users to exclude a page/post from the sitemap (#11) + +## 0.4.1 / 2014-05-10 + +### Bug Fixes + + * Force sitemap layout to be `nil` (#16) + * Correct seconds in timestamp for static files # Development Fixes (#24) + * Upgrade to Rspec 3.0 and use `be_truthy` (#24) + +## 0.4.0 / 2014-05-06 + +### Major Enhancements + + * Support Jekyll 2.0 (#12) + +## 0.3.0 / 2014-05-05 + +### Minor Enhancements + + * Generate sitemap using html_pages (#10) + +### Bug Fixes + + * Remove stray sitemap.xsl from template (#8) + +### Development Fixes + + * Added travis (#6) + * Better timezone support (#7) + +## 0.2.0 / 2014-03-24 + + * Loosen Jekyll requirement (#4) + +## 0.1.0 / 2014-03-15 + + * Birthday! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/LICENSE.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/LICENSE.md new file mode 100644 index 0000000000..1672e4a6b3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present, GitHub, inc. and the jekyll-sitemap contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/README.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/README.md new file mode 100644 index 0000000000..083531705c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/README.md @@ -0,0 +1,79 @@ +# Jekyll Sitemap Generator Plugin + +*Jekyll plugin to silently generate a sitemaps.org compliant sitemap for your Jekyll site* + +[![Build Status](https://travis-ci.org/jekyll/jekyll-sitemap.svg?branch=master)](https://travis-ci.org/jekyll/jekyll-sitemap) + +## Usage + +1. Add `gem 'jekyll-sitemap'` to your site's Gemfile and run `bundle` +2. Add the following to your site's `_config.yml`: + +```yml +url: "http://example.com" # the base hostname & protocol for your site +plugins: + - jekyll-sitemap +``` + +💡 If you are using a Jekyll version less than 3.5.0, use the `gems` key instead of `plugins`. + +If all gem plugins have the same `priority`, they will be executed in the +order they are required, generally. Thus, if you have other plugins which +generate content and store that content in `site.pages`, `site.posts`, or +`site.collections`, be sure to require `jekyll-sitemap` either *after* +those other gems if you *want* the sitemap to include the generated +content, or *before* those other gems if you *don't want* the sitemap to +include the generated content from the gems. (Programming is *hard*.) + +Because the sitemap is added to `site.pages`, you may have to modify any +templates that iterate through all pages (for example, to build a menu of +all of the site's content). + +## Note on Use with Github Pages Gem +The Github Pages gem ignores all plugins included in the Gemfile. If you only include `jekyll-sitemap` in the Gemfile without also including it in the `_config.yml` *the plugin will not work*. This can be confusing because the official Jekyll docs state that plugins can be included in either the Gemfile or `_config.yml`. + +When building a site that uses the Github Pages gem, follow the instructions above and ensure that `jekyll-sitemap` is listed in the `plugins` array in `_config.yml`. + +:warning: If you are using Jekyll < 3.5.0 use the `gems` key instead of `plugins`. + +## `` tag +The `` tag in the `sitemap.xml` will reflect by priority: + +1. The modified date of the file as reported by the filesystem if you have `jekyll-last-modified-at` plugin installed (not compatible with Github Pages auto building) +2. A personalised date if you add the variable `last_modified_at:` with a date in the Front Matter +3. The creation date of your post (corresponding to the `post.date` variable) + +## Exclusions + +If you would like to exclude specific pages/posts from the sitemap set the +sitemap flag to `false` in the front matter for the page/post. + +```yml +sitemap: false +``` + +## Override default development settings + +[Follow these instructions on Jekyll's documentation](https://jekyllrb.com/docs/usage/#override-default-development-settings). + +## Developing locally + +* Use `script/bootstrap` to bootstrap your local development environment. +* Use `script/console` to load a local IRB console with the Gem. + +## Testing + +1. `script/bootstrap` +2. `script/cibuild` + +## Known Issues + +1. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure `_config.yml` doesn't have `safe: true`. That prevents all plugins from working. +2. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure that you don't have a sitemap generator plugin in your `_plugin` folder. + +## Contributing + +1. Fork the project +2. Create a descriptively named feature branch +3. Add your feature +4. Submit a pull request diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Rakefile new file mode 100644 index 0000000000..ee617bbbf3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/Rakefile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require "bundler/gem_tasks" +require "rspec/core/rake_task" + +RSpec::Core::RakeTask.new(:spec) + +task :default => :spec diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/jekyll-sitemap.gemspec b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/jekyll-sitemap.gemspec new file mode 100644 index 0000000000..5ed3b8ae1a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/jekyll-sitemap.gemspec @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +lib = File.expand_path("lib", __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require "jekyll-sitemap/version" + +Gem::Specification.new do |spec| + spec.name = "jekyll-sitemap" + spec.summary = "Automatically generate a sitemap.xml for your Jekyll site." + spec.version = Jekyll::Sitemap::VERSION + spec.authors = ["GitHub, Inc."] + spec.email = "support@github.com" + spec.homepage = "https://github.com/jekyll/jekyll-sitemap" + spec.licenses = ["MIT"] + + spec.files = `git ls-files -z`.split("\x0") + spec.executables = spec.files.grep(%r!^bin/!) { |f| File.basename(f) } + spec.test_files = spec.files.grep(%r!^(test|spec|features)/!) + spec.require_paths = ["lib"] + + spec.add_dependency "jekyll", "~> 3.3" + + spec.add_development_dependency "bundler", "~> 1.16" + spec.add_development_dependency "jekyll-last-modified-at", "0.3.4" + spec.add_development_dependency "rake" + spec.add_development_dependency "rspec", "~> 3.0" + spec.add_development_dependency "rubocop", "0.51" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap.rb new file mode 100644 index 0000000000..b788fae939 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +require "jekyll/page_without_a_file" +require "jekyll/jekyll-sitemap" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap/version.rb new file mode 100644 index 0000000000..20b2220c52 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll-sitemap/version.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module Jekyll + module Sitemap + VERSION = "1.2.0".freeze + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/jekyll-sitemap.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/jekyll-sitemap.rb new file mode 100644 index 0000000000..8fb7999756 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/jekyll-sitemap.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require "fileutils" + +module Jekyll + class JekyllSitemap < Jekyll::Generator + safe true + priority :lowest + + # Main plugin action, called by Jekyll-core + def generate(site) + @site = site + @site.pages << sitemap unless file_exists?("sitemap.xml") + @site.pages << robots unless file_exists?("robots.txt") + end + + private + + INCLUDED_EXTENSIONS = %w( + .htm + .html + .xhtml + .pdf + ).freeze + + # Matches all whitespace that follows + # 1. A '>' followed by a newline or + # 2. A '}' which closes a Liquid tag + # We will strip all of this whitespace to minify the template + MINIFY_REGEX = %r!(?<=>\n|})\s+! + + # Array of all non-jekyll site files with an HTML extension + def static_files + @site.static_files.select { |file| INCLUDED_EXTENSIONS.include? file.extname } + end + + # Path to sitemap.xml template file + def source_path(file = "sitemap.xml") + File.expand_path "../#{file}", __dir__ + end + + # Destination for sitemap.xml file within the site source directory + def destination_path(file = "sitemap.xml") + @site.in_dest_dir(file) + end + + def sitemap + site_map = PageWithoutAFile.new(@site, __dir__, "", "sitemap.xml") + site_map.content = File.read(source_path).gsub(MINIFY_REGEX, "") + site_map.data["layout"] = nil + site_map.data["static_files"] = static_files.map(&:to_liquid) + site_map.data["xsl"] = file_exists?("sitemap.xsl") + site_map + end + + def robots + robots = PageWithoutAFile.new(@site, __dir__, "", "robots.txt") + robots.content = File.read(source_path("robots.txt")) + robots.data["layout"] = nil + robots + end + + # Checks if a file already exists in the site source + def file_exists?(file_path) + if @site.respond_to?(:in_source_dir) + File.exist? @site.in_source_dir(file_path) + else + File.exist? Jekyll.sanitized_path(@site.source, file_path) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/page_without_a_file.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/page_without_a_file.rb new file mode 100644 index 0000000000..4b73dcf5fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/jekyll/page_without_a_file.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Jekyll + class PageWithoutAFile < Page + def read_yaml(*) + @data ||= {} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/robots.txt b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/robots.txt new file mode 100644 index 0000000000..a699016f65 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/robots.txt @@ -0,0 +1 @@ +Sitemap: {{ "sitemap.xml" | absolute_url }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/sitemap.xml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/sitemap.xml new file mode 100644 index 0000000000..75d0c1ecf0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/lib/sitemap.xml @@ -0,0 +1,36 @@ + +{% if page.xsl %} + +{% endif %} + + {% assign collections = site.collections | where_exp:'collection','collection.output != false' %} + {% for collection in collections %} + {% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %} + {% for doc in docs %} + + {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} + {% if doc.last_modified_at or doc.date %} + {{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} + {% endif %} + + {% endfor %} + {% endfor %} + + {% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %} + {% for page in pages %} + + {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} + {% if page.last_modified_at %} + {{ page.last_modified_at | date_to_xmlschema }} + {% endif %} + + {% endfor %} + + {% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %} + {% for file in static_files %} + + {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} + {{ file.modified_time | date_to_xmlschema }} + + {% endfor %} + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/bootstrap b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/bootstrap new file mode 100755 index 0000000000..e2b126bd7d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/bootstrap @@ -0,0 +1,4 @@ +#!/bin/sh +set -ex + +bundle install diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/cibuild b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/cibuild new file mode 100755 index 0000000000..509b0c9f70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/cibuild @@ -0,0 +1,5 @@ +#!/bin/sh +set -e + +time script/fmt +time script/test diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/console b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/console new file mode 100755 index 0000000000..07680c7a2d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/console @@ -0,0 +1,34 @@ +#! /usr/bin/env ruby + +def relative_to_root(path) + File.expand_path(path, File.dirname(__dir__)) +end + +require "jekyll" +require relative_to_root("lib/jekyll-sitemap.rb") +require "pry-debugger" + +SOURCE_DIR = relative_to_root("spec/fixtures") +DEST_DIR = relative_to_root("spec/dest") + +def source_dir(*files) + File.join(SOURCE_DIR, *files) +end + +def dest_dir(*files) + File.join(DEST_DIR, *files) +end + +def config(overrides = {}) + Jekyll.configuration({ + "source" => source_dir, + "destination" => dest_dir, + "url" => "http://example.org", + }).merge(overrides) +end + +def site(configuration = config) + Jekyll::Site.new(configuration) +end + +binding.pry diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/fmt b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/fmt new file mode 100755 index 0000000000..c5351ecf01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/fmt @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +echo "Rubocop $(bundle exec rubocop --version)" +bundle exec rubocop -D -E $@ +success=$? +if ((success != 0)); then + echo -e "\nTry running \`script/fmt -a\` to automatically fix errors" +fi +exit $success diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/release b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/release new file mode 100755 index 0000000000..a9c226f977 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/release @@ -0,0 +1,7 @@ +#!/bin/sh +# Tag and push a release. + +set -e + +script/cibuild +bundle exec rake release diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/test b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/test new file mode 100755 index 0000000000..506d5ef598 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/script/test @@ -0,0 +1,5 @@ +#!/bin/bash +set -ex + +bundle exec rspec "$@" +bundle exec rspec spec/test_jekyll-last-modified-at.rb diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/404.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/404.md new file mode 100644 index 0000000000..0d9de631b2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/404.md @@ -0,0 +1,4 @@ +--- +--- + +404. That's an error. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_config.yml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_config.yml new file mode 100644 index 0000000000..cffd3fbfba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_config.yml @@ -0,0 +1,19 @@ +timezone: UTC + +defaults: + - + scope: + path: "" + type: page + values: + layout: some_default + - + scope: + path: "static_files/excluded.pdf" + values: + sitemap: false + - + scope: + path: "static_files/html_file.html" + values: + sitemap: false diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_layouts/some_default.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_layouts/some_default.html new file mode 100644 index 0000000000..c38a7b9fd9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_layouts/some_default.html @@ -0,0 +1,4 @@ +--- +--- +THIS IS MY LAYOUT +{{ content }} diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink.md new file mode 100644 index 0000000000..ce4a7d05db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink.md @@ -0,0 +1,5 @@ +--- +permalink: /permalink/ +--- + +# Custom permalink diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink_2.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink_2.md new file mode 100644 index 0000000000..551ee02524 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/custom_permalink_2.md @@ -0,0 +1,5 @@ +--- +permalink: /permalink/unique_name.html +--- + +# Unique html name diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/test.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/test.html new file mode 100644 index 0000000000..2d84021519 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/test.html @@ -0,0 +1,4 @@ +--- +--- + +This is just a test. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/this-has-non-standard-chars.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/this-has-non-standard-chars.md new file mode 100644 index 0000000000..519dae0a3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_my_collection/this-has-non-standard-chars.md @@ -0,0 +1,5 @@ +--- +permalink: this url has an ümlaut +--- + +# URL contains characters that need to be URI encoded diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_other_things/test2.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_other_things/test2.html new file mode 100644 index 0000000000..d222dde770 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_other_things/test2.html @@ -0,0 +1,4 @@ +--- +--- + +This file shouldn't show up in the sitemap. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md new file mode 100644 index 0000000000..0282994563 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2013-12-12-dec-the-second.md @@ -0,0 +1,4 @@ +--- +--- + +December the twelfth, actually. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-02-march-the-second.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-02-march-the-second.md new file mode 100644 index 0000000000..9a47b49f12 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-02-march-the-second.md @@ -0,0 +1,4 @@ +--- +--- + +March the second! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md new file mode 100644 index 0000000000..42ed97c8cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-03-04-march-the-fourth.md @@ -0,0 +1,4 @@ +--- +--- + +March the fourth! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-05-11-exclude-this-post.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-05-11-exclude-this-post.md new file mode 100644 index 0000000000..ccd540faba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2014-05-11-exclude-this-post.md @@ -0,0 +1,5 @@ +--- +sitemap: false +--- + +This post should not appear in the sitemap. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md new file mode 100644 index 0000000000..e26b59b744 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md @@ -0,0 +1,4 @@ +--- +--- + +Please don't modify this file. It's modified time is important. diff --git "a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-01-\351\224\231\350\257\257.html" "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-01-\351\224\231\350\257\257.html" new file mode 100644 index 0000000000..a845151cc8 --- /dev/null +++ "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-01-\351\224\231\350\257\257.html" @@ -0,0 +1,2 @@ +--- +--- diff --git "a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-02-\351\224\231\350\257\257.html" "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-02-\351\224\231\350\257\257.html" new file mode 100644 index 0000000000..f660f6f388 --- /dev/null +++ "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-02-\351\224\231\350\257\257.html" @@ -0,0 +1,3 @@ +--- +permalink: "/2016/04/02/错误.html" +--- diff --git "a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-03-\351\224\231\350\257\257.html" "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-03-\351\224\231\350\257\257.html" new file mode 100644 index 0000000000..3123e48aaf --- /dev/null +++ "b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/_posts/2016-04-03-\351\224\231\350\257\257.html" @@ -0,0 +1,3 @@ +--- +permalink: "/2016/04/03/%E9%94%99%E8%AF%AF.html" +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/feeds/atom.xml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/feeds/atom.xml new file mode 100644 index 0000000000..58715b686f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/feeds/atom.xml @@ -0,0 +1,6 @@ +--- +--- + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/images/hubot.png b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/images/hubot.png new file mode 100644 index 0000000000000000000000000000000000000000..75da791d8e0a57edb16fc3f9a24bff8adebe6de7 GIT binary patch literal 54008 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͇I%WF1+TGcogj++ry$ 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 FV1lSgY=8g& literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/index.html new file mode 100644 index 0000000000..fce076a33a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/index.html @@ -0,0 +1,4 @@ +--- +--- + +HERE IS MY SITE I AM SO EXCITED TO BE USING GITHUB PAGES diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/jekyll-last-modified-at/page.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/jekyll-last-modified-at/page.html new file mode 100644 index 0000000000..6fe4bdb8c4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/jekyll-last-modified-at/page.html @@ -0,0 +1,4 @@ +--- +--- + +This is a page with a modified time. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/exclude-this-page.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/exclude-this-page.html new file mode 100644 index 0000000000..9eea02e7d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/exclude-this-page.html @@ -0,0 +1,5 @@ +--- +sitemap: false +--- + +Exclude this page diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/htm.htm b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/htm.htm new file mode 100644 index 0000000000..7da6a6b037 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/htm.htm @@ -0,0 +1 @@ +This file has an .htm extension, and should be included in the sitemap diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/index.html new file mode 100644 index 0000000000..2c2b27d6ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/index.html @@ -0,0 +1 @@ +static subfolder index.html file that should be indexed as permalink diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/test_index.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/test_index.html new file mode 100644 index 0000000000..e1ac7a9643 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/test_index.html @@ -0,0 +1,4 @@ +--- +--- + +The permalink of this page does not end with a '/', but with a filename diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subfile.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subfile.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subpage.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subpage.html new file mode 100644 index 0000000000..06dd707864 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/this-is-a-subpage.html @@ -0,0 +1,4 @@ +--- +--- + +This is a subpage! diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/xhtml.xhtml b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/xhtml.xhtml new file mode 100644 index 0000000000..7c5eafafed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/some-subfolder/xhtml.xhtml @@ -0,0 +1 @@ +This file has an .xhtml extension, and should be included in the sitemap diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/404.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/404.html new file mode 100644 index 0000000000..5416e29758 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/404.html @@ -0,0 +1 @@ +404. That's an error. diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/excluded.pdf b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/excluded.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/html_file.html b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/html_file.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/test.pdf b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/fixtures/static_files/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/jekyll-sitemap_spec.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/jekyll-sitemap_spec.rb new file mode 100644 index 0000000000..83defdb0e3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/jekyll-sitemap_spec.rb @@ -0,0 +1,207 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe(Jekyll::JekyllSitemap) do + let(:overrides) do + { + "source" => source_dir, + "destination" => dest_dir, + "url" => "http://example.org", + "collections" => { + "my_collection" => { "output" => true }, + "other_things" => { "output" => false }, + }, + } + end + let(:config) do + Jekyll.configuration(overrides) + end + let(:site) { Jekyll::Site.new(config) } + let(:contents) { File.read(dest_dir("sitemap.xml")) } + before(:each) do + site.process + end + + it "has no layout" do + expect(contents).not_to match(%r!\ATHIS IS MY LAYOUT!) + end + + it "creates a sitemap.xml file" do + expect(File.exist?(dest_dir("sitemap.xml"))).to be_truthy + end + + it "doesn't have multiple new lines or trailing whitespace" do + expect(contents).to_not match %r!\s+\n! + expect(contents).to_not match %r!\n{2,}! + end + + it "puts all the pages in the sitemap.xml file" do + expect(contents).to match /http:\/\/example\.org\/<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/some-subfolder\/this-is-a-subpage\.html<\/loc>/ + end + + it "only strips 'index.html' from end of permalink" do + expect(contents).to match /http:\/\/example\.org\/some-subfolder\/test_index\.html<\/loc>/ + end + + it "puts all the posts in the sitemap.xml file" do + expect(contents).to match /http:\/\/example\.org\/2014\/03\/04\/march-the-fourth\.html<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/2014\/03\/02\/march-the-second\.html<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/2013\/12\/12\/dec-the-second\.html<\/loc>/ + end + + describe "collections" do + it "puts all the `output:true` into sitemap.xml" do + expect(contents).to match /http:\/\/example\.org\/my_collection\/test\.html<\/loc>/ + end + + it "doesn't put all the `output:false` into sitemap.xml" do + expect(contents).to_not match /http:\/\/example\.org\/other_things\/test2\.html<\/loc>/ + end + + it "remove 'index.html' for directory custom permalinks" do + expect(contents).to match /http:\/\/example\.org\/permalink\/<\/loc>/ + end + + it "doesn't remove filename for non-directory custom permalinks" do + expect(contents).to match /http:\/\/example\.org\/permalink\/unique_name\.html<\/loc>/ + end + + it "performs URI encoding of site paths" do + expect(contents).to match /http:\/\/example\.org\/this%20url%20has%20an%20%C3%BCmlaut<\/loc>/ + end + end + + it "generates the correct date for each of the posts" do + expect(contents).to match /2014-03-04T00:00:00(-|\+)\d+:\d+<\/lastmod>/ + expect(contents).to match /2014-03-02T00:00:00(-|\+)\d+:\d+<\/lastmod>/ + expect(contents).to match /2013-12-12T00:00:00(-|\+)\d+:\d+<\/lastmod>/ + end + + it "puts all the static HTML files in the sitemap.xml file" do + expect(contents).to match /http:\/\/example\.org\/some-subfolder\/this-is-a-subfile\.html<\/loc>/ + end + + it "does not include assets or any static files that aren't .html" do + expect(contents).not_to match /http:\/\/example\.org\/images\/hubot\.png<\/loc>/ + expect(contents).not_to match /http:\/\/example\.org\/feeds\/atom\.xml<\/loc>/ + end + + it "converts static index.html files to permalink version" do + expect(contents).to match /http:\/\/example\.org\/some-subfolder\/<\/loc>/ + end + + it "does include assets or any static files with .xhtml and .htm extensions" do + expect(contents).to match /\/some-subfolder\/xhtml\.xhtml/ + expect(contents).to match /\/some-subfolder\/htm\.htm/ + end + + it "does include assets or any static files with .pdf extension" do + expect(contents).to match %r!/static_files/test.pdf! + end + + it "does not include any static files named 404.html" do + expect(contents).not_to match %r!/static_files/404.html! + end + + if Gem::Version.new(Jekyll::VERSION) >= Gem::Version.new("3.4.2") + it "does not include any static files that have set 'sitemap: false'" do + expect(contents).not_to match %r!/static_files/excluded\.pdf! + end + + it "does not include any static files that have set 'sitemap: false'" do + expect(contents).not_to match %r!/static_files/html_file\.html! + end + end + + it "does not include posts that have set 'sitemap: false'" do + expect(contents).not_to match /\/exclude-this-post\.html<\/loc>/ + end + + it "does not include pages that have set 'sitemap: false'" do + expect(contents).not_to match /\/exclude-this-page\.html<\/loc>/ + end + + it "does not include the 404 page" do + expect(contents).not_to match /\/404\.html<\/loc>/ + end + + it "correctly formats timestamps of static files" do + expect(contents).to match /\/this-is-a-subfile\.html<\/loc>\s+\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(-|\+)\d{2}:\d{2}<\/lastmod>/ + end + + it "includes the correct number of items" do + # static_files/excluded.pdf is excluded on Jekyll 3.4.2 and above + if Gem::Version.new(Jekyll::VERSION) >= Gem::Version.new("3.4.2") + expect(contents.scan(%r!(?=)!).count).to eql 20 + else + expect(contents.scan(%r!(?=)!).count).to eql 21 + end + end + + context "with a baseurl" do + let(:config) do + Jekyll.configuration(Jekyll::Utils.deep_merge_hashes(overrides, { "baseurl" => "/bass" })) + end + + it "correctly adds the baseurl to the static files" do + expect(contents).to match /http:\/\/example\.org\/bass\/some-subfolder\/this-is-a-subfile\.html<\/loc>/ + end + + it "correctly adds the baseurl to the collections" do + expect(contents).to match /http:\/\/example\.org\/bass\/my_collection\/test\.html<\/loc>/ + end + + it "correctly adds the baseurl to the pages" do + expect(contents).to match /http:\/\/example\.org\/bass\/<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/bass\/some-subfolder\/this-is-a-subpage\.html<\/loc>/ + end + + it "correctly adds the baseurl to the posts" do + expect(contents).to match /http:\/\/example\.org\/bass\/2014\/03\/04\/march-the-fourth\.html<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/bass\/2014\/03\/02\/march-the-second\.html<\/loc>/ + expect(contents).to match /http:\/\/example\.org\/bass\/2013\/12\/12\/dec-the-second\.html<\/loc>/ + end + + it "adds baseurl to robots.txt" do + content = File.read(dest_dir("robots.txt")) + expect(content).to match("Sitemap: http://example.org/bass/sitemap.xml") + end + end + + context "with urls that needs URI encoding" do + let(:config) do + Jekyll.configuration(Jekyll::Utils.deep_merge_hashes(overrides, { "url" => "http://ümlaut.example.org" })) + end + + it "performs URI encoding of site url" do + expect(contents).to match %r!http://xn--mlaut-jva.example.org/! + expect(contents).to match %r!http://xn--mlaut-jva.example.org/some-subfolder/this-is-a-subpage.html! + expect(contents).to match %r!http://xn--mlaut-jva.example.org/2014/03/04/march-the-fourth.html! + expect(contents).to match %r!http://xn--mlaut-jva.example.org/2016/04/01/%E9%94%99%E8%AF%AF.html! + expect(contents).to match %r!http://xn--mlaut-jva.example.org/2016/04/02/%E9%94%99%E8%AF%AF.html! + expect(contents).to match %r!http://xn--mlaut-jva.example.org/2016/04/03/%E9%94%99%E8%AF%AF.html! + end + + it "does not double-escape urls" do + expect(contents).to_not match %r!%25! + end + + context "readme" do + let(:contents) { File.read(dest_dir("robots.txt")) } + + it "has no layout" do + expect(contents).not_to match(%r!\ATHIS IS MY LAYOUT!) + end + + it "creates a sitemap.xml file" do + expect(File.exist?(dest_dir("robots.txt"))).to be_truthy + end + + it "renders liquid" do + expect(contents).to match("Sitemap: http://xn--mlaut-jva.example.org/sitemap.xml") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/spec_helper.rb new file mode 100644 index 0000000000..911bc451f5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/spec_helper.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "jekyll" +require File.expand_path("../lib/jekyll-sitemap", __dir__) + +Jekyll.logger.log_level = :error + +RSpec.configure do |config| + config.run_all_when_everything_filtered = true + config.filter_run :focus + config.order = "random" + + SOURCE_DIR = File.expand_path("fixtures", __dir__) + DEST_DIR = File.expand_path("dest", __dir__) + + def source_dir(*files) + File.join(SOURCE_DIR, *files) + end + + def dest_dir(*files) + File.join(DEST_DIR, *files) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/test_jekyll-last-modified-at.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/test_jekyll-last-modified-at.rb new file mode 100644 index 0000000000..4bbbfa72d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-sitemap-1.2.0/spec/test_jekyll-last-modified-at.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require "spec_helper" +require "jekyll-last-modified-at" + +describe(Jekyll::JekyllSitemap) do + let(:overrides) do + { + "source" => source_dir, + "destination" => dest_dir, + "url" => "http://example.org", + "collections" => { + "my_collection" => { "output" => true }, + "other_things" => { "output" => false }, + }, + } + end + let(:config) do + Jekyll.configuration(overrides) + end + let(:site) { Jekyll::Site.new(config) } + let(:contents) { File.read(dest_dir("sitemap.xml")) } + before(:each) do + site.process + end + + context "with jekyll-last-modified-at" do + it "correctly adds the modified time to the posts" do + expect(contents).to match /http:\/\/example.org\/2015\/01\/18\/jekyll-last-modified-at.html<\/loc>\s+2015-01-19T07:03:38\+00:00<\/lastmod>/ + end + + it "correctly adds the modified time to the pages" do + expect(contents).to match /http:\/\/example.org\/jekyll-last-modified-at\/page.html<\/loc>\s+2015-01-19T07:03:38\+00:00<\/lastmod>/ + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch.rb new file mode 100644 index 0000000000..0f8b68bce1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +require "jekyll-watch/version" +require_relative "jekyll/watcher" +require_relative "jekyll/commands/watch" diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch/version.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch/version.rb new file mode 100644 index 0000000000..8e8beb86e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll-watch/version.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module Jekyll + module Watch + VERSION = "2.1.2" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/commands/watch.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/commands/watch.rb new file mode 100644 index 0000000000..bf4321d1c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/commands/watch.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Jekyll + module Commands + module Watch + extend self + + def init_with_program(prog); end + + # Build your jekyll site + # Continuously watch if `watch` is set to true in the config. + def process(options) + Jekyll.logger.log_level = :error if options["quiet"] + Jekyll::Watcher.watch(options) if options["watch"] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/watcher.rb b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/watcher.rb new file mode 100644 index 0000000000..e3344d28ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/jekyll-watch-2.1.2/lib/jekyll/watcher.rb @@ -0,0 +1,127 @@ +# frozen_string_literal: true + +require "listen" + +module Jekyll + module Watcher + extend self + + # Public: Continuously watch for file changes and rebuild the site + # whenever a change is detected. + # + # If the optional site argument is populated, that site instance will be + # reused and the options Hash ignored. Otherwise, a new site instance will + # be instantiated from the options Hash and used. + # + # options - A Hash containing the site configuration + # site - The current site instance (populated starting with Jekyll 3.2) + # (optional, default: nil) + # + # Returns nothing. + def watch(options, site = nil) + ENV["LISTEN_GEM_DEBUGGING"] ||= "1" if options["verbose"] + + site ||= Jekyll::Site.new(options) + listener = build_listener(site, options) + listener.start + + Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'" + + unless options["serving"] + trap("INT") do + listener.stop + Jekyll.logger.info "", "Halting auto-regeneration." + exit 0 + end + + sleep_forever + end + rescue ThreadError + # You pressed Ctrl-C, oh my! + end + + private + + def build_listener(site, options) + Listen.to( + options["source"], + :ignore => listen_ignore_paths(options), + :force_polling => options["force_polling"], + &listen_handler(site) + ) + end + + def listen_handler(site) + proc do |modified, added, removed| + t = Time.now + c = modified + added + removed + n = c.length + + Jekyll.logger.info "Regenerating:", + "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")}" + + c.each { |path| Jekyll.logger.info "", path["#{site.source}/".length..-1] } + process(site, t) + end + end + + def custom_excludes(options) + Array(options["exclude"]).map { |e| Jekyll.sanitized_path(options["source"], e) } + end + + def config_files(options) + %w(yml yaml toml).map do |ext| + Jekyll.sanitized_path(options["source"], "_config.#{ext}") + end + end + + def to_exclude(options) + [ + config_files(options), + options["destination"], + custom_excludes(options), + ].flatten + end + + # Paths to ignore for the watch option + # + # options - A Hash of options passed to the command + # + # Returns a list of relative paths from source that should be ignored + def listen_ignore_paths(options) + source = Pathname.new(options["source"]).expand_path + paths = to_exclude(options) + + paths.map do |p| + absolute_path = Pathname.new(p).expand_path + next unless absolute_path.exist? + + begin + relative_path = absolute_path.relative_path_from(source).to_s + unless relative_path.start_with?("../") + path_to_ignore = Regexp.new(Regexp.escape(relative_path)) + Jekyll.logger.debug "Watcher:", "Ignoring #{path_to_ignore}" + path_to_ignore + end + rescue ArgumentError + # Could not find a relative path + end + end.compact + [%r!\.jekyll\-metadata!] + end + + def sleep_forever + loop { sleep 1000 } + end + + def process(site, time) + begin + site.process + Jekyll.logger.info "", "...done in #{Time.now - time} seconds." + rescue => e + Jekyll.logger.warn "Error:", e.message + Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information." + end + Jekyll.logger.info "" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/AUTHORS b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/AUTHORS new file mode 100644 index 0000000000..058359671d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/AUTHORS @@ -0,0 +1 @@ +The author of kramdown is Thomas Leitner . diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/CONTRIBUTERS b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/CONTRIBUTERS new file mode 100644 index 0000000000..7ba1baded5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/CONTRIBUTERS @@ -0,0 +1,65 @@ + Count Name +======= ==== + 887 Thomas Leitner + 7 Christian Cornelssen + 6 Gioele Barabucci + 4 Ted Pak + 4 Shuanglei Tao + 4 Gleb Mazovetskiy + 4 Arne Brasseur + 3 Henning Perl + 3 gettalong + 3 Brandur + 3 Ben Armston + 3 Alex Marandon + 2 Tom Thorogood + 2 Parker Moore + 2 Nathanael Jones + 2 Max Meyer + 2 Jo Hund + 2 Dan Allen + 2 Bran + 1 winniehell + 1 William + 1 Uwe Kubosch + 1 utenmiki + 1 Trevor Wennblom + 1 tomykaira + 1 Tim Blair + 1 Tim Besard + 1 Tim Bates + 1 Sun Yaozhu + 1 Simon Lydell + 1 Shusaku NAKAZATO + 1 Sebastian Boehm + 1 scherr + 1 Postmodern + 1 Pete Michaud + 1 myqlarson + 1 milo.simpson + 1 Michal Till + 1 Matt Hickford + 1 Martyn Chamberlin + 1 Marek Tuchowski + 1 Marcus Stollsteimer + 1 Luca Barbato + 1 l3kn + 1 Kir Kolyshkin + 1 Jonathan Hooper + 1 John Croisant + 1 Joe Fiorini + 1 Jens Kraemer + 1 Hirofumi Wakasugi + 1 Hector Correa + 1 Florian Klampfer + 1 Floreal Morandat florealm@gmail.com + 1 Diego Galeota + 1 Damien Pollet + 1 Christopher Jefferson + 1 Cédric Boutillier + 1 Ashwin Maroli + 1 Ashe Connor + 1 Andrew + 1 Alpha Chen + 1 Alex Tomlins + 1 Alexey Vasiliev diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/COPYING b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/COPYING new file mode 100644 index 0000000000..1c29282ea2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/COPYING @@ -0,0 +1,30 @@ +kramdown - fast, pure-Ruby Markdown-superset converter +Copyright (C) 2009-2013 Thomas Leitner + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Some test cases and the benchmark files are based on test cases from +the MDTest test suite: + + MDTest + Copyright (c) 2007 Michel Fortin + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/README.md b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/README.md new file mode 100644 index 0000000000..139bf06bba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/README.md @@ -0,0 +1,71 @@ +# kramdown + +## Readme first! + +kramdown was originally licensed under the GPL until the 1.0.0 release. However, due to the many +requests it is now released under the MIT license and therefore can easily be used in commercial +projects, too. + +However, if you use kramdown in a commercial setting, please consider **contributing back any +changes** for the benefit of the community and/or +[**becoming a patron**](https://www.patreon.com/gettalong) - thanks! + + +## Introduction + +kramdown is a fast, pure Ruby Markdown superset converter, using a strict syntax definition and +supporting several common extensions. + +The syntax definition for the kramdown syntax can be found in **doc/syntax.page** (or online at +) and a quick reference is available in +**doc/quickref.page** or online at . + +The kramdown library is mainly written to support the kramdown-to-HTML conversion chain. However, +due to its flexibility (by creating an internal AST) it supports other input and output formats as +well. Here is a list of the supported formats: + +* input formats: kramdown (a Markdown superset), Markdown, GFM, HTML +* output formats: HTML, kramdown, LaTeX (and therefore PDF), PDF via Prawn + +All the documentation on the available input and output formats is available in the **doc/** +directory and online at . + +Starting from version 1.0.0 kramdown is using a versioning scheme with major, minor and patch parts +in the version number where the major number changes on backwards-incompatible changes, the minor +number on the introduction of new features and the patch number on everything else. + +For information about changes between versions, have a look at + or the commit history! + + +## Usage + +kramdown has a very simple API, so using kramdown is as easy as + +```ruby +require 'kramdown' + +Kramdown::Document.new(text).to_html +``` + +For detailed information have a look at the API documentation of the `Kramdown::Document` class. + +The full API documentation is available at , other sites with an +API documentation for kramdown probably don't provide the complete documentation! + +There are also some third-party libraries that extend the functionality of kramdown -- see the +kramdown Wiki at . + + +## Development + +Just clone the git repository as described in **doc/installation.page** and you are good to go. You +probably want to install `rake` so that you can use the provided rake tasks. + +If you want to run the tests, the development dependencies are needed as well as some additional +programs like `tidy` and `latex`. See the `.travis.yml` file for more information. + + +## License + +MIT - see the **COPYING** file. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/Rakefile new file mode 100644 index 0000000000..6113bfcfd0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/Rakefile @@ -0,0 +1,341 @@ +# -*- ruby -*- + +# load all optional developer libraries +begin + require 'rubygems' + require 'rubygems/package_task' +rescue LoadError +end + +begin + require 'webgen/page' +rescue LoadError +end + +begin + gem 'rdoc' if RUBY_VERSION >= '1.9' + require 'rdoc/task' + require 'rdoc/rdoc' + + class RDoc::RDoc + + alias :old_parse_files :parse_files + + def parse_files(options) + file_info = old_parse_files(options) + require 'kramdown/options' + + # Add options documentation to Kramdown::Options module + opt_module = @store.all_classes_and_modules.find {|m| m.full_name == 'Kramdown::Options'} + opt_defs = Kramdown::Options.definitions.sort.collect do |n, definition| + desc = definition.desc.split(/\n/).map {|l| " #{l}"} + desc[-2] = [] + desc = desc.join("\n") + "[#{n} (type: #{definition.type}, default: #{definition.default.inspect})]\n#{desc}\n\n" + end + opt_module.comment.text += "\n== Available Options\n\n" << opt_defs.join("\n\n") + + file_info + end + + end + +rescue LoadError +end + +begin + require 'rcov/rcovtask' +rescue LoadError +end + +require 'fileutils' +require 'rake/clean' +require 'rake/testtask' +require 'rake/packagetask' +require 'erb' + +$:.unshift('lib') +require 'kramdown' + +# End user tasks ################################################################ + +task :default => :test + +desc "Install using setup.rb" +task :install do + ruby "setup.rb config" + ruby "setup.rb setup" + ruby "setup.rb install" +end + +task :clobber do + ruby "setup.rb clean" +end + +if defined?(Webgen) + desc "Generate the HTML documentation" + task :htmldoc do + ruby "-Ilib -S webgen" + end + CLOBBER << "htmldoc/" + CLOBBER << "webgen-tmp" +end + +if defined? RDoc::Task + rd = RDoc::Task.new do |rdoc| + rdoc.rdoc_dir = 'htmldoc/rdoc' + rdoc.title = 'kramdown' + rdoc.main = 'lib/kramdown/document.rb' + rdoc.rdoc_files.include('lib') + end +end + +if defined?(Webgen) && defined?(RDoc::Task) + desc "Build the whole user documentation" + task :doc => [:rdoc, 'htmldoc'] +end + +tt = Rake::TestTask.new do |test| + test.warning = false + test.libs << 'test' + test.test_files = FileList['test/test_*.rb'] +end + +# Release tasks and development tasks ############################################ + +namespace :dev do + + SUMMARY = 'kramdown is a fast, pure-Ruby Markdown-superset converter.' + DESCRIPTION = < CONTRIBUTERS` + `echo "======= ====" >> CONTRIBUTERS` + `git log | grep ^Author: | sed 's/^Author: //' | sort | uniq -c | sort -nr >> CONTRIBUTERS` + end + + CLOBBER << "man/man1/kramdown.1" + file 'man/man1/kramdown.1' => ['man/man1/kramdown.1.erb'] do + puts "Generating kramdown man page" + File.open('man/man1/kramdown.1', 'w+') do |file| + data = ERB.new(File.read('man/man1/kramdown.1.erb')).result(binding) + file.write(Kramdown::Document.new(data).to_man) + end + end + + Rake::PackageTask.new('kramdown', Kramdown::VERSION) do |pkg| + pkg.need_tar = true + pkg.need_zip = true + pkg.package_files = PKG_FILES + end + + if defined? Gem + spec = Gem::Specification.new do |s| + + #### Basic information + s.name = 'kramdown' + s.version = Kramdown::VERSION + s.summary = SUMMARY + s.description = DESCRIPTION + s.license = 'MIT' + + #### Dependencies, requirements and files + s.files = PKG_FILES.to_a + + s.require_path = 'lib' + s.executables = ['kramdown'] + s.default_executable = 'kramdown' + s.required_ruby_version = '>= 2.0' + s.add_development_dependency 'minitest', '~> 5.0' + s.add_development_dependency 'coderay', '~> 1.0.0' + s.add_development_dependency 'rouge' + s.add_development_dependency 'stringex', '~> 1.5.1' + s.add_development_dependency 'prawn', '~> 2.0' + s.add_development_dependency 'prawn-table', '~> 0.2.2' + s.add_development_dependency 'ritex', '~> 1.0' + s.add_development_dependency 'itextomml', '~> 1.5' + s.add_development_dependency 'execjs', '~> 2.7' + s.add_development_dependency 'sskatex', '>= 0.9.37' + s.add_development_dependency 'katex', '~> 0.4.3' + + #### Documentation + + s.has_rdoc = true + s.rdoc_options = ['--main', 'lib/kramdown/document.rb'] + + #### Author and project details + + s.author = 'Thomas Leitner' + s.email = 't_leitner@gmx.at' + s.homepage = "http://kramdown.gettalong.org" + end + + + task :gemspec => [ 'CONTRIBUTERS', 'VERSION', 'man/man1/kramdown.1'] do + print "Generating Gemspec\n" + contents = spec.to_ruby + File.open("kramdown.gemspec", 'w+') {|f| f.puts(contents)} + end + + Gem::PackageTask.new(spec) do |pkg| + pkg.need_zip = true + pkg.need_tar = true + end + + end + + if defined?(Webgen) && defined?(Gem) && defined?(Rake::RDocTask) + desc 'Release Kramdown version ' + Kramdown::VERSION + task :release => [:clobber, :package, :publish_files, :publish_website] + end + + if defined?(Gem) + desc "Upload the release to Rubygems" + task :publish_files => [:package] do + sh "gem push pkg/kramdown-#{Kramdown::VERSION}.gem" + puts 'done' + end + end + + desc "Upload the website" + task :publish_website => ['doc'] do + puts "Transfer manually!!!" + # sh "rsync -avc --delete --exclude 'MathJax' --exclude 'robots.txt' htmldoc/ gettalong@rubyforge.org:/var/www/gforge-projects/kramdown/" + end + + + if defined? Rcov + Rcov::RcovTask.new do |rcov| + rcov.libs << 'test' + end + end + + CODING_LINE = "# -*- coding: utf-8 -*-\n" + COPYRIGHT=< +# +# This file is part of kramdown which is licensed under the MIT. +#++ +# +EOF + + desc "Insert/Update copyright notice" + task :update_copyright do + inserted = false + Dir["lib/**/*.rb", "test/**/*.rb"].each do |file| + if !File.read(file).start_with?(CODING_LINE + COPYRIGHT) + inserted = true + puts "Updating file #{file}" + old = File.read(file) + if !old.gsub!(/\A#{Regexp.escape(CODING_LINE)}#\n#--.*?\n#\+\+\n#\n/m, CODING_LINE + COPYRIGHT) + old.gsub!(/\A(#{Regexp.escape(CODING_LINE)})?/, CODING_LINE + COPYRIGHT + "\n") + end + File.open(file, 'w+') {|f| f.puts(old)} + end + end + puts "Look through the above mentioned files and correct all problems" if inserted + end + + desc "Check for MathjaxNode availability" + task :test_mathjaxnode_deps do + html = %x{echo '$$a$$' | \ + #{RbConfig.ruby} -Ilib bin/kramdown --no-config-file --math-engine mathjaxnode} + raise (<\Z}m === html +The MathjaxNode engine is not available. Try "npm install mathjax-node-cli". +MJN + puts "MathjaxNode is available, and its default configuration works." + end + + desc "Update kramdown MathjaxNode test reference outputs" + task update_mathjaxnode_tests: [:test_mathjaxnode_deps] do + # Not framed in terms of rake file tasks to prevent accidental overwrites. + Dir['test/testcases/**/mathjaxnode*.text'].each do |f| + stem = f[0..-6] # Remove .text + ruby "-Ilib bin/kramdown --config-file #{stem}.options #{f} >#{stem}.html.19" + end + end + + desc "Check for SsKaTeX availability" + task :test_sskatex_deps do + katexjs = 'katex/katex.min.js' + raise (<#{stem}.html.19" + end + end + + desc "Update kramdown KaTeX test reference outputs" + task :update_katex_tests do + # Not framed in terms of rake file tasks to prevent accidental overwrites. + Dir['test/testcases/**/katex*.text'].each do |f| + stem = f[0..-6] # Remove .text + ruby "-Ilib bin/kramdown --config-file #{stem}.options #{f} >#{stem}.html.19" + end + end +end + +task :gemspec => ['dev:gemspec'] + +task :clobber => ['dev:clobber'] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/VERSION b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/VERSION new file mode 100644 index 0000000000..092afa15df --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/VERSION @@ -0,0 +1 @@ +1.17.0 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.rb b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.rb new file mode 100644 index 0000000000..bad86af105 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.rb @@ -0,0 +1,43 @@ +require 'benchmark' +require 'stringio' + +require 'kramdown' +require 'bluecloth' +require 'maruku' +require 'maruku/version' +require 'rdiscount' +require 'bluefeather' +require 'redcarpet' + +module MaRuKu::Errors + def tell_user(s) + end +end + + +RUNS=20 + +FILES=['mdsyntax.text', 'mdbasics.text'] + +puts "Running tests on #{Time.now.strftime("%Y-%m-%d")} under #{RUBY_DESCRIPTION}" + +FILES.each do |file| + data = File.read(File.join(File.dirname(__FILE__), file)) + puts + puts "Test using file #{file} and #{RUNS} runs" + results = Benchmark.bmbm do |b| + b.report("kramdown #{Kramdown::VERSION}") { RUNS.times { Kramdown::Document.new(data).to_html } } + b.report("Maruku #{MaRuKu::Version}") { RUNS.times { Maruku.new(data, :on_error => :ignore).to_html } } + b.report("BlueFeather #{BlueFeather::VERSION}") { RUNS.times { BlueFeather.parse(data) } } + b.report("BlueCloth #{BlueCloth::VERSION}") { RUNS.times { BlueCloth.new(data).to_html } } + b.report("RDiscount #{RDiscount::VERSION}") { RUNS.times { RDiscount.new(data).to_html } } + b.report("redcarpet #{Redcarpet::VERSION}") { RUNS.times { Redcarpet::Markdown.new(Redcarpet::Render::HTML).render(data) } } + end + + puts + puts "Real time of X divided by real time of kramdown" + kd = results.shift.real + %w[Maruku BlueFeather BlueCloth RDiscount redcarpet].each do |name| + puts name.ljust(19) << (results.shift.real/kd).round(4).to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.sh b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.sh new file mode 100755 index 0000000000..3fe600c31b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/benchmark.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +source ~/.profile + +RUBY_VERSIONS=`rvm list strings | sort` +KD_VERSIONS="`git tag | sort -V` master" +OTHERS=false +AVERAGE=1 +MASTER_AS=master + +while getopts "r:k:om:a:" optname; do + case "$optname" in + "r") + RUBY_VERSIONS="$OPTARG" + ;; + "k") + KD_VERSIONS="$OPTARG" + ;; + "o") + OTHERS=true + ;; + "m") + MASTER_AS="$OPTARG" + ;; + "a") + AVERAGE="$OPTARG" + ;; + "?") + echo "Unknown option $OPTARG" + exit 1 + ;; + ":") + echo "No argument value for option $OPTARG" + exit 1 + ;; + *) + echo "Unknown error while processing options" + exit 1 + ;; + esac +done + +TMPDIR=/tmp/kramdown-benchmark + +rm -rf $TMPDIR +mkdir -p $TMPDIR +cp benchmark/md* $TMPDIR +cp benchmark/generate_data.rb $TMPDIR +git clone .git ${TMPDIR}/kramdown +cd ${TMPDIR}/kramdown + +for RUBY_VERSION in $RUBY_VERSIONS; do + rvm use $RUBY_VERSION + echo "Creating benchmark data for $(ruby -v)" + + for KD_VERSION in $KD_VERSIONS; do + echo "Using kramdown version $KD_VERSION" + git co $KD_VERSION 2>/dev/null + if [ -z $MASTER_AS -o $KD_VERSION != master ]; then + VNUM=${KD_VERSION} + else + VNUM=$MASTER_AS + fi + ruby -I${TMPDIR}/kramdown/lib ../generate_data.rb -k ${VNUM} -a ${AVERAGE} >/dev/null + done + + if [ $OTHERS = "true" ]; then + ruby -rubygems -I${TMPDIR}/kramdown/lib ../generate_data.rb -o >/dev/null + fi +done + +cd ${TMPDIR} +rvm default +ruby generate_data.rb -g diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/generate_data.rb b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/generate_data.rb new file mode 100644 index 0000000000..762ebc3d2b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/generate_data.rb @@ -0,0 +1,119 @@ +require 'benchmark' +require 'optparse' +require 'fileutils' + +require 'kramdown' + +options = {:others => false, :average => 1} +OptionParser.new do |opts| + opts.on("-a AVG", "--average AVG", Integer, "Average times over the specified number of runs") {|v| options[:average] = v } + opts.on("-o", "--[no-]others", "Generate data for other parsers") {|v| options[:others] = v} + opts.on("-g", "--[no-]graph", "Generate graph") {|v| options[:graph] = v} + opts.on("-k VERSION", "--kramdown VERSION", String, "Add benchmark data for kramdown version VERSION") {|v| options[:kramdown] = v} +end.parse! + +THISRUBY = (self.class.const_defined?(:RUBY_DESCRIPTION) ? RUBY_DESCRIPTION.scan(/^.*?(?=\s*\()/).first.sub(/\s/, '-') : "ruby-#{RUBY_VERSION}") + '-' + RUBY_PATCHLEVEL.to_s + +Dir.chdir(File.dirname(__FILE__)) +BMDATA = File.read('mdbasics.text') +MULTIPLIER = (0..5).map {|i| 2**i} + +if options[:others] + require 'maruku' + require 'maruku/version' + begin + require 'rdiscount' + rescue LoadError + end + #require 'bluefeather' + + module MaRuKu::Errors + def tell_user(s) + end + end + + bmdata = {} + labels = [] + MULTIPLIER.each do |i| + $stderr.puts "Generating benchmark data for other parsers, multiplier #{i}" + mddata = BMDATA*i + labels = [] + bmdata[i] = Benchmark::bmbm do |x| + labels << "Maruku #{MaRuKu::Version}" + x.report { Maruku.new(mddata, :on_error => :ignore).to_html } + if self.class.const_defined?(:BlueFeather) + labels << "BlueFeather #{BlueFeather::VERSION}" + x.report { BlueFeather.parse(mddata) } + end + if self.class.const_defined?(:RDiscount) + labels << "RDiscount #{RDiscount::VERSION}" + x.report { RDiscount.new(mddata).to_html } + end + end + end + File.open("static-#{THISRUBY}.dat", 'w+') do |f| + f.puts "# " + labels.join(" || ") + format_str = "%5d" + " %10.5f"*bmdata[MULTIPLIER.first].size + bmdata.sort.each do |m,v| + f.puts format_str % [m, *v.map {|tms| tms.real}] + end + end +end + +if options[:kramdown] + kramdown = "kramdown-#{THISRUBY}.dat" + data = if File.exist?(kramdown) + lines = File.readlines(kramdown).map {|l| l.chomp} + lines.first << " || " + lines + else + ["# ", *MULTIPLIER.map {|m| "%3d" % m}] + end + data.first << "#{options[:kramdown]}".rjust(10) + + times = [] + options[:average].times do + MULTIPLIER.each_with_index do |m, i| + $stderr.puts "Generating benchmark data for kramdown version #{options[:kramdown]}, multiplier #{m}" + mddata = BMDATA*m + begin + (times[i] ||= []) << Benchmark::bmbm {|x| x.report { Kramdown::Document.new(mddata).to_html } }.first.real + rescue + $stderr.puts $!.message + (times[i] ||= []) << 0 + end + end + end + times.each_with_index {|t,i| data[i+1] << "%14.5f" % (t.inject(0) {|sum,v| sum+v}/3.0)} + File.open(kramdown, 'w+') do |f| + data.each {|l| f.puts l} + end +end + +if options[:graph] + Dir['kramdown-*.dat'].each do |kramdown_name| + theruby = kramdown_name.sub(/^kramdown-/, '').sub(/\.dat$/, '') + graph_name = "graph-#{theruby}.png" + static_name = "static-#{theruby}.dat" + kramdown_names = File.readlines(kramdown_name).first.chomp[1..-1].split(/\s*\|\|\s*/) + static_names = (File.exist?(static_name) ? File.readlines(static_name).first.chomp[1..-1].split(/\s*\|\|\s*/) : []) + File.open("gnuplot.dat", "w+") do |f| + f.puts < + +
              1. Basics
              2. +
              3. Syntax
              4. +
              5. License
              6. +
              7. Dingus
              8. + + + +Getting the Gist of Markdown's Formatting Syntax +------------------------------------------------ + +This page offers a brief overview of what it's like to use Markdown. +The [syntax page] [s] provides complete, detailed documentation for +every feature, but Markdown should be very easy to pick up simply by +looking at a few examples of it in action. The examples on this page +are written in a before/after style, showing example syntax and the +HTML output produced by Markdown. + +It's also helpful to simply try Markdown out; the [Dingus] [d] is a +web application that allows you type your own Markdown-formatted text +and translate it to XHTML. + +**Note:** This document is itself written using Markdown; you +can [see the source for it by adding '.text' to the URL] [src]. + + [s]: /projects/markdown/syntax "Markdown Syntax" + [d]: /projects/markdown/dingus "Markdown Dingus" + [src]: /projects/markdown/basics.text + + +## Paragraphs, Headers, Blockquotes ## + +A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs. + +Markdown offers two styles of headers: *Setext* and *atx*. +Setext-style headers for `

                ` and `

                ` are created by +"underlining" with equal signs (`=`) and hyphens (`-`), respectively. +To create an atx-style header, you put 1-6 hash marks (`#`) at the +beginning of the line -- the number of hashes equals the resulting +HTML header level. + +Blockquotes are indicated using email-style '`>`' angle brackets. + +Markdown: + + A First Level Header + ==================== + + A Second Level Header + --------------------- + + Now is the time for all good men to come to + the aid of their country. This is just a + regular paragraph. + + The quick brown fox jumped over the lazy + dog's back. + + ### Header 3 + + > This is a blockquote. + > + > This is the second paragraph in the blockquote. + > + > ## This is an H2 in a blockquote + + +Output: + +

                A First Level Header

                + +

                A Second Level Header

                + +

                Now is the time for all good men to come to + the aid of their country. This is just a + regular paragraph.

                + +

                The quick brown fox jumped over the lazy + dog's back.

                + +

                Header 3

                + +
                +

                This is a blockquote.

                + +

                This is the second paragraph in the blockquote.

                + +

                This is an H2 in a blockquote

                +
                + + + +### Phrase Emphasis ### + +Markdown uses asterisks and underscores to indicate spans of emphasis. + +Markdown: + + Some of these words *are emphasized*. + Some of these words _are emphasized also_. + + Use two asterisks for **strong emphasis**. + Or, if you prefer, __use two underscores instead__. + +Output: + +

                Some of these words are emphasized. + Some of these words are emphasized also.

                + +

                Use two asterisks for strong emphasis. + Or, if you prefer, use two underscores instead.

                + + + +## Lists ## + +Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`, +`+`, and `-`) as list markers. These three markers are +interchangable; this: + + * Candy. + * Gum. + * Booze. + +this: + + + Candy. + + Gum. + + Booze. + +and this: + + - Candy. + - Gum. + - Booze. + +all produce the same output: + +
                  +
                • Candy.
                • +
                • Gum.
                • +
                • Booze.
                • +
                + +Ordered (numbered) lists use regular numbers, followed by periods, as +list markers: + + 1. Red + 2. Green + 3. Blue + +Output: + +
                  +
                1. Red
                2. +
                3. Green
                4. +
                5. Blue
                6. +
                + +If you put blank lines between items, you'll get `

                ` tags for the +list item text. You can create multi-paragraph list items by indenting +the paragraphs by 4 spaces or 1 tab: + + * A list item. + + With multiple paragraphs. + + * Another item in the list. + +Output: + +

                  +
                • A list item.

                  +

                  With multiple paragraphs.

                • +
                • Another item in the list.

                • +
                + + + +### Links ### + +Markdown supports two styles for creating links: *inline* and +*reference*. With both styles, you use square brackets to delimit the +text you want to turn into a link. + +Inline-style links use parentheses immediately after the link text. +For example: + + This is an [example link](http://example.com/). + +Output: + +

                This is an + example link.

                + +Optionally, you may include a title attribute in the parentheses: + + This is an [example link](http://example.com/ "With a Title"). + +Output: + +

                This is an + example link.

                + +Reference-style links allow you to refer to your links by names, which +you define elsewhere in your document: + + I get 10 times more traffic from [Google][1] than from + [Yahoo][2] or [MSN][3]. + + [1]: http://google.com/ "Google" + [2]: http://search.yahoo.com/ "Yahoo Search" + [3]: http://search.msn.com/ "MSN Search" + +Output: + +

                I get 10 times more traffic from Google than from Yahoo or MSN.

                + +The title attribute is optional. Link names may contain letters, +numbers and spaces, but are *not* case sensitive: + + I start my morning with a cup of coffee and + [The New York Times][NY Times]. + + [ny times]: http://www.nytimes.com/ + +Output: + +

                I start my morning with a cup of coffee and + The New York Times.

                + + +### Images ### + +Image syntax is very much like link syntax. + +Inline (titles are optional): + + ![alt text](/path/to/img.jpg "Title") + +Reference-style: + + ![alt text][id] + + [id]: /path/to/img.jpg "Title" + +Both of the above examples produce the same output: + + alt text + + + +### Code ### + +In a regular paragraph, you can create code span by wrapping text in +backtick quotes. Any ampersands (`&`) and angle brackets (`<` or +`>`) will automatically be translated into HTML entities. This makes +it easy to use Markdown to write about HTML example code: + + I strongly recommend against using any `` tags. + + I wish SmartyPants used named entities like `—` + instead of decimal-encoded entites like `—`. + +Output: + +

                I strongly recommend against using any + <blink> tags.

                + +

                I wish SmartyPants used named entities like + &mdash; instead of decimal-encoded + entites like &#8212;.

                + + +To specify an entire block of pre-formatted code, indent every line of +the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`, +and `>` characters will be escaped automatically. + +Markdown: + + If you want your page to validate under XHTML 1.0 Strict, + you've got to put paragraph tags in your blockquotes: + +
                +

                For example.

                +
                + +Output: + +

                If you want your page to validate under XHTML 1.0 Strict, + you've got to put paragraph tags in your blockquotes:

                + +
                <blockquote>
                +        <p>For example.</p>
                +    </blockquote>
                +    
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/mdsyntax.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/mdsyntax.text new file mode 100644 index 0000000000..57360a16c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/mdsyntax.text @@ -0,0 +1,888 @@ +Markdown: Syntax +================ + + + + +* [Overview](#overview) + * [Philosophy](#philosophy) + * [Inline HTML](#html) + * [Automatic Escaping for Special Characters](#autoescape) +* [Block Elements](#block) + * [Paragraphs and Line Breaks](#p) + * [Headers](#header) + * [Blockquotes](#blockquote) + * [Lists](#list) + * [Code Blocks](#precode) + * [Horizontal Rules](#hr) +* [Span Elements](#span) + * [Links](#link) + * [Emphasis](#em) + * [Code](#code) + * [Images](#img) +* [Miscellaneous](#misc) + * [Backslash Escapes](#backslash) + * [Automatic Links](#autolink) + + +**Note:** This document is itself written using Markdown; you +can [see the source for it by adding '.text' to the URL][src]. + + [src]: /projects/markdown/syntax.text + +* * * + +

                Overview

                + +

                Philosophy

                + +Markdown is intended to be as easy-to-read and easy-to-write as is feasible. + +Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4], +[Grutatext] [5], and [EtText] [6] -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email. + + [1]: http://docutils.sourceforge.net/mirror/setext.html + [2]: http://www.aaronsw.com/2002/atx/ + [3]: http://textism.com/tools/textile/ + [4]: http://docutils.sourceforge.net/rst.html + [5]: http://www.triptico.com/software/grutatxt.html + [6]: http://ettext.taint.org/doc/ + +To this end, Markdown's syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like \*emphasis\*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you've ever +used email. + + + +

                Inline HTML

                + +Markdown's syntax is intended for one purpose: to be used as a +format for *writing* for the web. + +Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is *not* to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a *publishing* format; Markdown is a *writing* +format. Thus, Markdown's formatting syntax only addresses issues that +can be conveyed in plain text. + +For any markup that is not covered by Markdown's syntax, you simply +use HTML itself. There's no need to preface it or delimit it to +indicate that you're switching from Markdown to HTML; you just use +the tags. + +The only restrictions are that block-level HTML elements -- e.g. `
                `, +``, `
                `, `

                `, etc. -- must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted) `

                ` tags around HTML block-level tags. + +For example, to add an HTML table to a Markdown article: + + This is a regular paragraph. + +

                + + + +
                Foo
                + + This is another regular paragraph. + +Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an +HTML block. + +Span-level HTML tags -- e.g. ``, ``, or `` -- can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you'd prefer to use HTML `` or `` tags instead of Markdown's +link or image syntax, go right ahead. + +Unlike block-level HTML tags, Markdown syntax *is* processed within +span-level tags. + + +

                Automatic Escaping for Special Characters

                + +In HTML, there are two characters that demand special treatment: `<` +and `&`. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g. `<`, and +`&`. + +Ampersands in particular are bedeviling for web writers. If you want to +write about 'AT&T', you need to write '`AT&T`'. You even need to +escape ampersands within URLs. Thus, if you want to link to: + + http://images.google.com/images?num=30&q=larry+bird + +you need to encode the URL as: + + http://images.google.com/images?num=30&q=larry+bird + +in your anchor tag `href` attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites. + +Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into `&`. + +So, if you want to include a copyright symbol in your article, you can write: + + © + +and Markdown will leave it alone. But if you write: + + AT&T + +Markdown will translate it to: + + AT&T + +Similarly, because Markdown supports [inline HTML](#html), if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write: + + 4 < 5 + +Markdown will translate it to: + + 4 < 5 + +However, inside Markdown code spans and blocks, angle brackets and +ampersands are *always* encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single `<` +and `&` in your example code needs to be escaped.) + + +* * * + + +

                Block Elements

                + + +

                Paragraphs and Line Breaks

                + +A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs. + +The implication of the "one or more consecutive lines of text" rule is +that Markdown supports "hard-wrapped" text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's "Convert Line Breaks" option) which translate every line break +character in a paragraph into a `
                ` tag. + +When you *do* want to insert a `
                ` break tag using Markdown, you +end a line with two or more spaces, then type return. + +Yes, this takes a tad more effort to create a `
                `, but a simplistic +"every line break is a `
                `" rule wouldn't work for Markdown. +Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l] +work best -- and look better -- when you format them with hard breaks. + + [bq]: #blockquote + [l]: #list + + + + + +Markdown supports two styles of headers, [Setext] [1] and [atx] [2]. + +Setext-style headers are "underlined" using equal signs (for first-level +headers) and dashes (for second-level headers). For example: + + This is an H1 + ============= + + This is an H2 + ------------- + +Any number of underlining `=`'s or `-`'s will work. + +Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example: + + # This is an H1 + + ## This is an H2 + + ###### This is an H6 + +Optionally, you may "close" atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) : + + # This is an H1 # + + ## This is an H2 ## + + ### This is an H3 ###### + + +

                Blockquotes

                + +Markdown uses email-style `>` characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a `>` before every line: + + > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, + > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. + > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. + > + > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse + > id sem consectetuer libero luctus adipiscing. + +Markdown allows you to be lazy and only put the `>` before the first +line of a hard-wrapped paragraph: + + > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. + Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. + + > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse + id sem consectetuer libero luctus adipiscing. + +Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of `>`: + + > This is the first level of quoting. + > + > > This is nested blockquote. + > + > Back to the first level. + +Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks: + + > ## This is a header. + > + > 1. This is the first list item. + > 2. This is the second list item. + > + > Here's some example code: + > + > return shell_exec("echo $input | $markdown_script"); + +Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu. + + +

                Lists

                + +Markdown supports ordered (numbered) and unordered (bulleted) lists. + +Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers: + + * Red + * Green + * Blue + +is equivalent to: + + + Red + + Green + + Blue + +and: + + - Red + - Green + - Blue + +Ordered lists use numbers followed by periods: + + 1. Bird + 2. McHale + 3. Parish + +It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is: + +
                  +
                1. Bird
                2. +
                3. McHale
                4. +
                5. Parish
                6. +
                + +If you instead wrote the list in Markdown like this: + + 1. Bird + 1. McHale + 1. Parish + +or even: + + 3. Bird + 1. McHale + 8. Parish + +you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to. + +If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number. + +List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab. + +To make lists look nice, you can wrap items with hanging indents: + + * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, + viverra nec, fringilla in, laoreet vitae, risus. + * Donec sit amet nisl. Aliquam semper ipsum sit amet velit. + Suspendisse id sem consectetuer libero luctus adipiscing. + +But if you want to be lazy, you don't have to: + + * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, + viverra nec, fringilla in, laoreet vitae, risus. + * Donec sit amet nisl. Aliquam semper ipsum sit amet velit. + Suspendisse id sem consectetuer libero luctus adipiscing. + +If list items are separated by blank lines, Markdown will wrap the +items in `

                ` tags in the HTML output. For example, this input: + + * Bird + * Magic + +will turn into: + +

                  +
                • Bird
                • +
                • Magic
                • +
                + +But this: + + * Bird + + * Magic + +will turn into: + +
                  +
                • Bird

                • +
                • Magic

                • +
                + +List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be intended by either 4 spaces +or one tab: + + 1. This is a list item with two paragraphs. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. Aliquam hendrerit + mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. Donec sit amet nisl. Aliquam semper ipsum + sit amet velit. + + 2. Suspendisse id sem consectetuer libero luctus adipiscing. + +It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy: + + * This is a list item with two paragraphs. + + This is the second paragraph in the list item. You're + only required to indent the first line. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. + + * Another item in the same list. + +To put a blockquote within a list item, the blockquote's `>` +delimiters need to be indented: + + * A list item with a blockquote: + + > This is a blockquote + > inside a list item. + +To put a code block within a list item, the code block needs +to be indented *twice* -- 8 spaces or two tabs: + + * A list item with a code block: + + + + +It's worth noting that it's possible to trigger an ordered list by +accident, by writing something like this: + + 1986. What a great season. + +In other words, a *number-period-space* sequence at the beginning of a +line. To avoid this, you can backslash-escape the period: + + 1986\. What a great season. + + + +

                Code Blocks

                + +Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both `
                ` and `` tags.
                +
                +To produce a code block in Markdown, simply indent every line of the
                +block by at least 4 spaces or 1 tab. For example, given this input:
                +
                +    This is a normal paragraph:
                +
                +        This is a code block.
                +
                +Markdown will generate:
                +
                +    

                This is a normal paragraph:

                + +
                This is a code block.
                +    
                + +One level of indentation -- 4 spaces or 1 tab -- is removed from each +line of the code block. For example, this: + + Here is an example of AppleScript: + + tell application "Foo" + beep + end tell + +will turn into: + +

                Here is an example of AppleScript:

                + +
                tell application "Foo"
                +        beep
                +    end tell
                +    
                + +A code block continues until it reaches a line that is not indented +(or the end of the article). + +Within a code block, ampersands (`&`) and angle brackets (`<` and `>`) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown -- just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this: + + + +will turn into: + +
                <div class="footer">
                +        &copy; 2004 Foo Corporation
                +    </div>
                +    
                + +Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it's also easy to use Markdown to write about Markdown's own syntax. + + + +

                Horizontal Rules

                + +You can produce a horizontal rule tag (`
                `) by placing three or +more hyphens, asterisks, or underscores on a line by themselves. If you +wish, you may use spaces between the hyphens or asterisks. Each of the +following lines will produce a horizontal rule: + + * * * + + *** + + ***** + + - - - + + --------------------------------------- + + _ _ _ + + +* * * + +

                Span Elements

                + + + +Markdown supports two style of links: *inline* and *reference*. + +In both styles, the link text is delimited by [square brackets]. + +To create an inline link, use a set of regular parentheses immediately +after the link text's closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an *optional* +title for the link, surrounded in quotes. For example: + + This is [an example](http://example.com/ "Title") inline link. + + [This link](http://example.net/) has no title attribute. + +Will produce: + +

                This is + an example inline link.

                + +

                This link has no + title attribute.

                + +If you're referring to a local resource on the same server, you can +use relative paths: + + See my [About](/about/) page for details. + +Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link: + + This is [an example][id] reference-style link. + +You can optionally use a space to separate the sets of brackets: + + This is [an example] [id] reference-style link. + +Then, anywhere in the document, you define your link label like this, +on a line by itself: + + [id]: http://example.com/ "Optional Title Here" + +That is: + +* Square brackets containing the link identifier (optionally + indented from the left margin using up to three spaces); +* followed by a colon; +* followed by one or more spaces (or tabs); +* followed by the URL for the link; +* optionally followed by a title attribute for the link, enclosed + in double or single quotes. + +The link URL may, optionally, be surrounded by angle brackets: + + [id]: "Optional Title Here" + +You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs: + + [id]: http://example.com/longish/path/to/resource/here + "Optional Title Here" + +Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output. + +Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links: + + [link text][a] + [link text][A] + +are equivalent. + +The *implicit link name* shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets -- e.g., to link the word +"Google" to the google.com web site, you could simply write: + + [Google][] + +And then define the link: + + [Google]: http://google.com/ + +Because link names may contain spaces, this shortcut even works for +multiple words in the link text: + + Visit [Daring Fireball][] for more information. + +And then define the link: + + [Daring Fireball]: http://daringfireball.net/ + +Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they're +used, but if you want, you can put them all at the end of your +document, sort of like footnotes. + +Here's an example of reference links in action: + + I get 10 times more traffic from [Google] [1] than from + [Yahoo] [2] or [MSN] [3]. + + [1]: http://google.com/ "Google" + [2]: http://search.yahoo.com/ "Yahoo Search" + [3]: http://search.msn.com/ "MSN Search" + +Using the implicit link name shortcut, you could instead write: + + I get 10 times more traffic from [Google][] than from + [Yahoo][] or [MSN][]. + + [google]: http://google.com/ "Google" + [yahoo]: http://search.yahoo.com/ "Yahoo Search" + [msn]: http://search.msn.com/ "MSN Search" + +Both of the above examples will produce the following HTML output: + +

                I get 10 times more traffic from Google than from + Yahoo + or MSN.

                + +For comparison, here is the same paragraph written using +Markdown's inline link style: + + I get 10 times more traffic from [Google](http://google.com/ "Google") + than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or + [MSN](http://search.msn.com/ "MSN Search"). + +The point of reference-style links is not that they're easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it's 176 characters; and as raw HTML, +it's 234 characters. In the raw HTML, there's more markup than there +is text. + +With Markdown's reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose. + + +

                Emphasis

                + +Markdown treats asterisks (`*`) and underscores (`_`) as indicators of +emphasis. Text wrapped with one `*` or `_` will be wrapped with an +HTML `` tag; double `*`'s or `_`'s will be wrapped with an HTML +`` tag. E.g., this input: + + *single asterisks* + + _single underscores_ + + **double asterisks** + + __double underscores__ + +will produce: + + single asterisks + + single underscores + + double asterisks + + double underscores + +You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span. + +Emphasis can be used in the middle of a word: + + un*fucking*believable + +But if you surround an `*` or `_` with spaces, it'll be treated as a +literal asterisk or underscore. + +To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it: + + \*this text is surrounded by literal asterisks\* + + + +

                Code

                + +To indicate a span of code, wrap it with backtick quotes (`` ` ``). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example: + + Use the `printf()` function. + +will produce: + +

                Use the printf() function.

                + +To include a literal backtick character within a code span, you can use +multiple backticks as the opening and closing delimiters: + + ``There is a literal backtick (`) here.`` + +which will produce this: + +

                There is a literal backtick (`) here.

                + +The backtick delimiters surrounding a code span may include spaces -- +one after the opening, one before the closing. This allows you to place +literal backtick characters at the beginning or end of a code span: + + A single backtick in a code span: `` ` `` + + A backtick-delimited string in a code span: `` `foo` `` + +will produce: + +

                A single backtick in a code span: `

                + +

                A backtick-delimited string in a code span: `foo`

                + +With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this: + + Please don't use any `` tags. + +into: + +

                Please don't use any <blink> tags.

                + +You can write this: + + `—` is the decimal-encoded equivalent of `—`. + +to produce: + +

                &#8212; is the decimal-encoded + equivalent of &mdash;.

                + + + +

                Images

                + +Admittedly, it's fairly difficult to devise a "natural" syntax for +placing images into a plain text document format. + +Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: *inline* and *reference*. + +Inline image syntax looks like this: + + ![Alt text](/path/to/img.jpg) + + ![Alt text](/path/to/img.jpg "Optional title") + +That is: + +* An exclamation mark: `!`; +* followed by a set of square brackets, containing the `alt` + attribute text for the image; +* followed by a set of parentheses, containing the URL or path to + the image, and an optional `title` attribute enclosed in double + or single quotes. + +Reference-style image syntax looks like this: + + ![Alt text][id] + +Where "id" is the name of a defined image reference. Image references +are defined using syntax identical to link references: + + [id]: url/to/image "Optional title attribute" + +As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML `` tags. + + +* * * + + +

                Miscellaneous

                + + + +Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this: + + + +Markdown will turn this into: + + http://example.com/ + +Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this: + + + +into something like this: + + address@exa + mple.com + +which will render in a browser as a clickable link to "address@example.com". + +(This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won't fool all of +them. It's better than nothing, but an address published in this way +will probably eventually start receiving spam.) + + + +

                Backslash Escapes

                + +Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown's +formatting syntax. For example, if you wanted to surround a word with +literal asterisks (instead of an HTML `` tag), you can backslashes +before the asterisks, like this: + + \*literal asterisks\* + +Markdown provides backslash escapes for the following characters: + + \ backslash + ` backtick + * asterisk + _ underscore + {} curly braces + [] square brackets + () parentheses + # hash mark + + plus sign + - minus sign (hyphen) + . dot + ! exclamation mark + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/testing.sh b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/testing.sh new file mode 100755 index 0000000000..683afc81f0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/testing.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +source ~/.profile + +COMMAND="$@" +if [[ -z "$COMMAND" ]]; then COMMAND="rake test"; fi + +for VERSION in `rvm list strings | sort`; do + rvm $VERSION + echo $(ruby -v) + RUBYOPT=-rubygems $COMMAND +done diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/timing.sh b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/timing.sh new file mode 100755 index 0000000000..fc009a3c0a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/benchmark/timing.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +source ~/.bashrc + +for VERSION in `rvm list strings | sort`; do + rvm $VERSION + echo $(ruby -v) + ruby -Ilib bin/kramdown < benchmark/mdsyntax.text 2>/dev/null >/dev/null + time ruby -Ilib bin/kramdown < benchmark/mdsyntax.text 2>/dev/null >/dev/null +done diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/bin/kramdown b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/bin/kramdown new file mode 100755 index 0000000000..19798f2e0f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/bin/kramdown @@ -0,0 +1,104 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- +# +#-- +# Copyright (C) 2009-2015 Thomas Leitner +# +# This file is part of kramdown which is licensed under the MIT. +#++ +# + +require 'optparse' +require 'rbconfig' +require 'yaml' +require 'kramdown' + +config_file = nil +begin + config_dir = case RbConfig::CONFIG['host_os'] + when /bccwin|cygwin|djgpp|mingw|mswin|wince/i + File.expand_path((ENV['HOME'] || ENV['USERPROFILE'] || "~") + "/AppData/Local") + when /darwin|mac os/ + File.expand_path("~/Library/Preferences/") + else + File.expand_path(ENV['XDG_CONFIG_HOME'] || '~/.config') + end + config_file = File.join(config_dir, "kramdownrc") +rescue +end + +options = {} +format = ['html'] + +OptionParser.new do |opts| + opts.banner = "Usage: kramdown [options] [FILE FILE ...]" + opts.summary_indent = ' '*4 + + opts.separator "" + opts.separator "Command line options:" + opts.separator "" + + opts.on("-i", "--input ARG", "Specify the input format: kramdown (default), " \ + "html, GFM or markdown") {|v| options[:input] = v} + opts.on("-o", "--output ARG", Array, "Specify one or more output formats separated by commas: " \ + "html (default),", "kramdown, latex, pdf, man or remove_html_tags") {|v| format = v} + opts.separator "" + opts.on("--no-config-file", "Do not read any configuration file. Default behavior is to check " \ + "for a", "configuration file and read it if it exists.") {config_file = nil} + opts.on("--config-file FILE", "Specify the name of a configuration file with kramdown options " \ + "in YAML", "format, e.g. \"auto_id_prefix: ARG\" instead of \"--auto-id-prefix ARG\"", + "and \"auto_ids: false\" instead of \"--no-auto-ids\".", + "Default: #{config_file}") {|v| config_file = v} + opts.separator "" + opts.on("-v", "--version", "Show the version of kramdown") do + puts Kramdown::VERSION + exit + end + opts.on("-h", "--help", "Show the help") do + puts opts.summarize('', 5, 72) + exit + end + + opts.separator "" + opts.separator "kramdown options:" + opts.separator "" + + Kramdown::Options.definitions.sort.each do |n, definition| + no = n.to_s.tr('_', '-') + if definition.type == Kramdown::Options::Boolean + opts.on("--[no-]#{no}") {|v| options[n] = Kramdown::Options.parse(n, v)} + else + type = definition.type + type = String if type == Symbol || type == Object + opts.on("--#{no} ARG", type) {|v| options[n] = Kramdown::Options.parse(n, v)} + end + + definition.desc.split(/\n/).each do |line| + opts.separator opts.summary_indent + ' '*6 + line + end + opts.separator '' + end + +end.parse! + +begin + if config_file && File.exist?(config_file) + config_file_options = YAML.safe_load(File.read(config_file), [Symbol]) + case config_file_options + when nil # empty configuration file except perhaps YAML header and comments + # Nothing to do + when Hash + options = config_file_options.merge(options) + else + raise Kramdown::Error, "No YAML map in configuration file \"#{config_file}\"" + end + end + doc = Kramdown::Document.new(ARGF.read, options) + result = '' + format.each {|f| result = doc.send("to_#{f}")} + puts result + doc.warnings.each {|warn| $stderr.puts "Warning: #{warn}"} +rescue Kramdown::Error => e + $stderr.puts "Error: #{e.message}" + exit(1) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.html new file mode 100644 index 0000000000..731d0ea915 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.html @@ -0,0 +1,22 @@ + + + + <% if @converter.root.options[:encoding] %> + + <% end %> +<% +extend ::Kramdown::Utils::Html +title = '' +h = @converter.root.children.find {|c| c.type == :header} +if h + collector = lambda {|c| c.children.collect {|cc| cc.type == :text ? escape_html(cc.value, :text) : collector.call(cc)}.join('')} + title = collector.call(h) +end +%> + <%= title %> + + + + <%= @body %> + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.latex new file mode 100644 index 0000000000..acdf346ab6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/data/kramdown/document.latex @@ -0,0 +1,50 @@ +<% +encmap = { + 'UTF-8' => 'utf8x', + 'US-ASCII' => 'ascii', + 'ISO-8859-1' => 'latin1', + 'ISO-8859-2' => 'latin2', + 'ISO-8859-3' => 'latin3', + 'ISO-8859-4' => 'latin4', + 'ISO-8859-5' => 'latin5', + 'ISO-8859-9' => 'latin9', + 'ISO-8859-10' => 'latin10', + 'CP850' => 'cp850', + 'CP852' => 'cp852', + 'CP858' => 'cp858', + 'CP437' => 'cp437', + 'CP865' => 'cp865', + 'CP1250' => 'cp120', + 'CP1252' => 'cp1252', + 'CP1257' => 'cp1257' +} +%> +\documentclass{scrartcl} +<% if RUBY_VERSION >= '1.9' %> +\usepackage[<%= encmap[@body.encoding.name] %>]{inputenc} +<% else %> +\usepackage[mathletters]{ucs} +\usepackage[utf8x]{inputenc} +<% end %> +\usepackage[T1]{fontenc} +\usepackage{listings} +<% @converter.data[:packages].each {|pkg| %>\usepackage{<%= pkg %>} +<% } %> +\usepackage{hyperref} + +<% if @converter.data[:packages].include?('fancyvrb') %> +\VerbatimFootnotes +<% end %> + +<% if @converter.data[:packages].include?('acronym') %> +<% @converter.root.options[:abbrev_defs].each_pair do |k,v| %>\acrodef{<%= @converter.normalize_abbreviation_key(k) %>}[<%= k %>]{<%= @converter.escape(v) %>} +<% end %> +<% end %> + +\setcounter{footnote}{<%= @converter.options[:footnote_nr] - 1 %>} + +\hypersetup{colorlinks=true,urlcolor=blue} + +\begin{document} +<%= @body %> +\end{document} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/_design.scss b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/_design.scss new file mode 100644 index 0000000000..f665700eab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/_design.scss @@ -0,0 +1,441 @@ +/* Based on the Less Framework 4 + http://lessframework.com + by Joni Korpi + License: http://opensource.org/licenses/mit-license.php */ + + +/***** Variables for easy customization *****/ + +/* the baseline height in px */ +$baseline-height: 24; + +/* The overlay color for the background image */ +$bg-grad-color: rgba(255,255,128,0.1); + +/* The font size of the logo in px */ +$logo-size: 36; + +/* Color settings */ +$link-color: #1666A3; + + + +/* Resets + ------ */ + +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, a, abbr, address, cite, code, del, dfn, em, +img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, hr, +dl, dt, dd, ol, ul, li, fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figure, figcaption, hgroup, +menu, footer, header, nav, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; +} + +article, aside, canvas, figure, figure img, figcaption, hgroup, +footer, header, nav, section, audio, video { + display: block; +} + +a img {border: 0;} + + + +/* Typography presets + ------------------ */ + +.gigantic { + font-size: 59px; + line-height: 72px; +} + +.huge { + font-size: 36px; + line-height: 48px; +} + +.large { + font-size: 23px; + line-height: 24px; +} + +.bigger { + font-size: 18px; + line-height: 24px; +} + +.big { + font-size: 14px; + line-height: 24px; +} + +body { + font: 14px/24px 'Palatino Linotype', 'Book Antiqua', Palatino, serif; +} + +.small, small { + font-size: 12px; + line-height: 24px; +} + +*:target::after { + content: " ☜"; +} + + +/* Typographics grid overlay */ + +.grid{ + background-image: -moz-linear-gradient(top, rgba(0,0,0,0) 95%, rgba(0,0,0,0.3) 100%); /* FF3.6+ */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(95%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0.3))); /* Chrome,Safari4+ */ + background-image: -webkit-linear-gradient(top, rgba(0,0,0,0) 95%,rgba(0,0,0,0.3) 100%); /* Chrome10+,Safari5.1+ */ + background-image: -o-linear-gradient(top, rgba(0,0,0,0) 95%, rgba(0,0,0,0.3) 100%); /* Opera11.10+ */ + background-image: -ms-linear-gradient(top, rgba(0,0,0,0) 95%,rgba(0,0,0,0.3) 100%); /* IE10+ */ + background-image: linear-gradient(top, rgba(0,0,0,0.3) 95%,rgba(0,0,0,0.3) 100%); /* W3C */ + + -webkit-background-size: 100% #{$baseline-height}px; + -o-background-size: 100% #{$baseline-height}px; + background-size: 100% #{$baseline-height}px; +} + + +/* Basic mixins */ + +@mixin background { + background-image: -moz-linear-gradient($bg-grad-color, $bg-grad-color), url('bg.png'); + background-image: -webkit-linear-gradient($bg-grad-color, $bg-grad-color), url('bg.png'); + background-image: -o-linear-gradient($bg-grad-color, $bg-grad-color), url('bg.png'); + background-image: -ms-linear-gradient($bg-grad-color, $bg-grad-color), url('bg.png'); + background-image: linear-gradient($bg-grad-color, $bg-grad-color), url('bg.png'); +} + +@mixin typography($size: big) { + h3, h4, h5, h6, p, ul, ol, dl, pre, blockquote, table { + margin-top: 24px; + margin-bottom: 24px; + } + + @if $size == big { + h1 { @extend .huge } + h2 { @extend .large } + h3 { @extend .bigger } + h4,h5,h6 { @extend .big } + } @else { + h1 { @extend .large } + h2 { @extend .bigger } + h3,h4,h5,h6 { @extend .big } + } + + h1, h2, h3, h4, h5, h6 { + font-weight: normal; + padding-left: 48px; + margin-left: -48px; + margin-top: 36px; + margin-bottom: -12px; + } + + ul, ol, dd { + padding-left: 24px; + } + + ul ul, ul ol, ol ul, ol ol { + margin-top: 0; + margin-bottom: 0; + } + + pre { + padding-left: 12px; + padding-right: 12px; + border: 1px solid #ccc; + font-family: "Bitstream Vera Sans Mono", Consolas, monospace; + } + + dt { + font-weight: bold; + } + + a { + color: $link-color; + text-decoration: underline; + } + + a:hover, a:link { + color: scale-color($link-color, $lightness: -50%); + } +} + +/* Default Layout: 992px. + Gutters: 24px. + Outer margins: 48px. + Leftover space for scrollbars @1024px: 32px. + ------------------------------------------------------------------------------- + cols 1 2 3 4 5 6 7 8 9 10 + px 68 160 252 344 436 528 620 712 804 896 */ + +body { + width: 992px; + margin: 0 auto 48px; + color: rgb(60,60,60); + -webkit-text-size-adjust: 100%; /* Stops Mobile Safari from auto-adjusting font-sizes */ + @include background; +} + +body > header { + position: relative; + padding: 12px; + font-family: Verdana; + color: #eee; + -moz-box-shadow: 0 0 24px rgba(0,0,0,0.6); + -webkit-box-shadow: 0 0 24px rgba(0,0,0,0.6); + box-shadow: 0 0 24px rgba(0,0,0,0.6); + z-index: 1; +} + +#logo { + font-size: #{$logo-size}px; + line-height: #{$baseline-height * (floor($logo-size / $baseline-height) + 1)}px; + margin: 12px; + text-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5); + + a { + color: #eee; + text-decoration: none; + + &:hover { + color: #fff; + } + } + +} + +#slogan { + font-size: 100%; + margin: 12px; + text-shadow: 0px 2px 5px rgba(0, 0, 0, 0.5); +} + +nav { + position: absolute; + bottom: 0px; + right: 0px; + background-color: rgba(255,255,255,0.1); + + li { + display: inline-block; + } + + ul { + margin: 0; + padding: 0; + } + + a, span { + display: block; + padding: 12px; + color: #ccc; + text-decoration: none; + } + + span { + background-color: rgba(255,255,255,0.3); + } + + a:hover { + background-color: rgba(255,255,255,0.3); + } + +} + +#wrapper { + clear: both; + position: relative; + background-color: white; + -moz-box-shadow: 0 0 24px rgba(0,0,0,0.6); + -webkit-box-shadow: 0 0 24px rgba(0,0,0,0.6); + box-shadow: 0 0 24px rgba(0,0,0,0.6); +} + +aside { + float: right; + right: 0; + background-color: white; + width: 252px; + padding: 24px; + + @include typography(small); + + h1, h2, h3, h4, h5, h6 { + padding-left: 48px; + margin-left: -48px; + } +} + + +aside.banner { + @include background; + position: relative; + width: inherit; + margin: 0; + float: none; + padding: 24px; + border: 10px solid rgba(255,255,255,0.1); + color: #ccc; + font-size: 36px; + line-height: 48px; + + a { + color: #ccc; + text-decoration: underline; + } + + a:hover { + background-color: rgba(255,255,255,0.3); + } + + p { + margin: 0; + } + + p + p { + margin-top: 24px; + } +} + +#content { + width: 620px; + padding: 24px 48px; + + @include typography(big); +} + +footer { + background-color: rgba(255,255,255,0.1); + min-height: 24px; + color: #eee; +} + + +/* Tablet Layout: 768px. + Gutters: 24px. + Outer margins: 28px. + Inherits styles from: Default Layout. + ----------------------------------------------------------------- + cols 1 2 3 4 5 6 7 8 + px 68 160 252 344 436 528 620 712 */ + +@media only screen and (min-width: 768px) and (max-width: 1005px) { + + body { + width: 716px; + } + + body > header { + padding: 0; + } + + aside { + position: static; + float: right; + } + + nav { + position: relative; + margin-top: 12px; + } +} + + + +/* Mobile Layout: 320px. + Gutters: 24px. + Outer margins: 34px. + Inherits styles from: Default Layout. + --------------------------------------------- + cols 1 2 3 + px 68 160 252 */ + +@media only screen and (max-width: 767px) { + + body { + width: 320px; + } + + body > header { + padding: 0; + } + + nav { + position: relative; + margin-top: 12px; + } + + aside { + position: relative; + } + + #content, aside { + width: 296px; + padding: 24px 12px; + } + + #content { + h1, h2, h3, h4, h5, h6 { + padding-left: 12px; + margin-left: -12px; + } + } + +} + + + +/* Wide Mobile Layout: 480px. + Gutters: 24px. + Outer margins: 22px. + Inherits styles from: Default Layout, Mobile Layout. + ------------------------------------------------------------ + cols 1 2 3 4 5 + px 68 160 252 344 436 */ + +@media only screen and (min-width: 480px) and (max-width: 767px) { + + body { + width: 90%; + } + + aside { + position: relative; + } + + #content, aside { + width: inherit; + padding: 24px 48px; + } + + #content { + h1, h2, h3, h4, h5, h6 { + padding-left: 48px; + margin-left: -48px; + } + } + +} + + +/* Retina media query. + Overrides styles for devices with a + device-pixel-ratio of 2+, such as iPhone 4. + ----------------------------------------------- */ + +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and (min-device-pixel-ratio: 2) { + + body { + + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/bg.png b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b4df134dee0896f31dda02cc8773a68a263e771d GIT binary patch literal 56156 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 LNkvXXu0mjfZuDE* literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.scss b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.scss new file mode 100644 index 0000000000..f76dca40d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.scss @@ -0,0 +1,217 @@ +@import 'design'; + +a:hover { + background-color: rgba(0,0,0,0.1); +} + +aside.banner { + font-size: 18px; + line-height: 27px; +} + +aside a { + text-decoration: none; + + &:hover, &:link { + text-decoration: underline; + } + +} + +#content { + blockquote.information { + border-left: 12px solid #080; + background-color: #bfb; + padding: 12px 12px 12px 0; + margin-left: -48px; + padding-left: 48px; + } + + blockquote.markdown-difference { + border-left: 12px solid #dc0; + background-color: #ffa; + padding: 12px 12px 12px 0; + margin-left: -48px; + padding-left: 48px; + + &:before { + content: "Difference to Standard Markdown"; + display: block; + font-weight: bold; + } + } + + blockquote pre { + border: none; + } + + table { + border-collapse: collapse; + margin-left: auto; + margin-right: auto; + width: 100%; + + td, th { + padding: 3px 5px; + } + th { + background-color: #080; + color: white; + } + } + + pre.show-whitespaces .ws-space { + background-color: #f44; + } + pre.show-whitespaces .ws-space-l { + background-color: #f22; + } + pre.show-whitespaces .ws-space-r { + background-color: #f00; + } + pre.show-whitespaces .ws-tab { + background-color: #ff4; + } + pre.show-whitespaces .ws-tab-l { + background-color: #ff2; + } + pre.show-whitespaces .ws-tab-r { + background-color: #ff0; + } + pre.show-whitespaces.ws-lr .ws-tab { + background-color: inherit; + } + pre.show-whitespaces.ws-lr .ws-space { + background-color: inherit; + opacity: 0; + } + + table.kdexample td { + vertical-align: top; + } + + table.kdexample pre { + margin: 5px 0px; + } + + .kdexample:hover .kdexample-after-source { + display: block; + } + + .kdexample-after-source { + display: none; + background-color: #ffffee; + border: 2px solid #e6e8e9; + margin: 0 10px; + padding: 5px; + } + + .kdexample-after-live { + background-color: #eeffee; + border: 2px solid #e6e8e9; + margin: 5px 0px 12px; + padding: 5px; + } + + div.kdsyntaxlink { + float: right; + position: relative; + top: -17px; + padding: 5px; + border: 1px solid #e6e8e9; + margin-right: 10px; + margin-left: 10px; + + a { + text-decoration: none; + } + } +} + +.news-item { + border-top: 2px solid #ddd; + margin-top: 46px; +} + +.news-date { + float: right; + margin-top: 2px; + font-size: small; + color: #888; +} + +footer { + clear: both; + font-size: 92%; + text-align: left; + + a { + color: #898989; + + &:hover { + text-decoration: none; + color: #666; + } + } +} + +/* common rules */ +acronym { + cursor: help; + border-bottom: 1px solid #777; +} + +.float-left { + float: left; +} + +.float-right { + float: right; +} + +.a-left, tr.a-left td { + text-align: left; +} + +.a-center, tr.a-center td { + text-align: center; +} + +.a-right, tr.a-right td { + text-align: right; +} + +.clear { + clear: both; +} + +.inline-important { + font-weight: bold; + display: block; + text-align: center; +} + + +.patreon, .patreon:hover { + border-radius: 50px; + padding: 5px 10px; + margin: 0 5px; + display: inline-block; + text-decoration: none !important; + background-color: #e6461a !important; + box-shadow: 0px 0px 5px 5px #e6461a; + color: white !important; + font-weight: bold; + + &:hover { + box-shadow: 0px 0px 0px 5px #e6461a; + } +} + +#call-to-arms { + text-align: center; + margin: 40px 0 10px; + background-color: rgba(255, 255, 255, 0.18); + padding: 30px; + border-radius: 100px; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.template b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.template new file mode 100644 index 0000000000..4cc5541be1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/default.template @@ -0,0 +1,62 @@ + + + + + + + + + + + {title:} | kramdown + + +
                +
                +

                kramdown

                +

                fast, pure-Ruby Markdown-superset converter

                +
                + + +
                + +
                + <% if context.content_node.blocks.has_key?('intro') %> + + <% end %> + + + +
                + +
                +
                +
                + +
                +
                Copyright © 2009-2016 Thomas Leitner
                +
                Generated by webgen
                +
                + + + + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.page new file mode 100644 index 0000000000..ebafaaf8be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.page @@ -0,0 +1,84 @@ +--- +title: Documentation +in_menu: true +sort_info: 7 +--- +# kramdown Documentation + +## Overview + +kramdown is first and foremost a library for converting text written in a superset of Markdown to +HTML. However, due to its modular architecture it is able to support additional input and output +formats. The following input and output formats are currently supported: + +* Input: [kramdown](parser/kramdown.html) (a superset of Markdown), + [Markdown](parser/markdown.html), [Github Flavored Markdown](parser/gfm.html), [HTML](parser/html.html) + +* Output: [HTML](converter/html.html), [LaTeX](converter/latex.html), + [kramdown](converter/kramdown.html), [RemoveHtmlTags](converter/remove_html_tags.html) (a special + converter which removes HTML tags, normally used in conjunction with the LaTeX or kramdown + converters) + +The [kramdown syntax page](syntax.html) describes in detail what is supported and how it differs +from standard Markdown. + +For all available options have a look at the [options documentation](options.html) or have a look at +a parser/converter page to see which options they support! + + +## Usage + +{:ruby: .language-ruby} + +The kramdown package provides two ways for using it: + +* **As a library** + + kramdown uses basically the same API as [RedCloth], [BlueCloth] and [Maruku]: + + require 'kramdown' + + puts Kramdown::Document.new(text).to_html + {:ruby} + + The second parameter to the `new` call is an options hash for (de)activating certain features. For + example, to disable automatic header ID generation, you can do the following: + + puts Kramdown::Document.new(text, :auto_ids => false).to_html + {:ruby} + + The default parser used is `kramdown`, however, you can select a different one with the `:input` + option: + + puts Kramdown::Document.new(text, :input => 'html').to_latex + {:ruby} + + You can also reuse the created document object to produce multiple outputs: + + doc = Kramdown::Document.new(text, :input => 'html') + puts doc.to_html + puts doc.to_latex + {:ruby} + + More information on how to use or extend kramdown can be found in the [API + documentation](rdoc/index.html)! + +* **As an application** + + Together with the library files a binary called `kramdown` is shipped which can be used to convert + text in any supported input format to any supported output format. It either reads from the files + specified as the command line arguments or from the standard input. For example: + + kramdown path/to/kramdown/doc/syntax.page + + The input and output formats as well as all available kramdown options are supported through + command line switches. + + +## Tests + +kramdown uses various test suites to verify the correct working of the parsers and converters. For +more information, have a look at the [tests document](tests.html). + + +{include_file: doc/links.markdown} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.template b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.template new file mode 100644 index 0000000000..b83c2d7d7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/documentation.template @@ -0,0 +1,36 @@ +--- name:sidebar pipeline:erb,tags,kramdown + + +

                Documentation

                + +* Parsers + * [kramdown](parser/kramdown.html) + * [GFM](parser/gfm.html) + * [Markdown](parser/markdown.html) + * [HTML](parser/html.html) +* Converters + * [HTML](converter/html.html) + * [LaTeX](converter/latex.html) + * [man](converter/man.html) + * [kramdown](converter/kramdown.html) + * [RemoveHtmlTags](converter/remove_html_tags.html) +* Syntax Highlighters + * [Rouge](syntax_highlighter/rouge.html) + * [Coderay](syntax_highlighter/coderay.html) +* Math Engines + * [MathJax](math_engine/mathjax.html) + * [KaTeX](math_engine/katex.html) + * [SsKaTeX](math_engine/sskatex.html) + * [Mathjax-Node](math_engine/mathjaxnode.html) + * [Ritex](math_engine/ritex.html) + * [itex2MML](math_engine/itex2mml.html) +* [Configuration Options](options.html) +* [Tests](tests.html) + +<% if context.node.children.first && context.node.children.first.children.length > 1 %> +

                Contents

                +<% end %> + +{menu: {options: {descendants: true, levels: [3,6]}}} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/index.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/index.page new file mode 100644 index 0000000000..a5d16ee8ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/index.page @@ -0,0 +1,113 @@ +--- +title: Home +in_menu: true +sort_info: 1 +--- +## Overview + +If you want to get started with kramdown, have a look at the [installation page](installation.html) +to see how you can install it on your system. Then look through the +[documentation](documentation.html) for finding information about how to actually use kramdown and +its parsers/converters. The [quick reference](quickref.html) provides a overview of the syntax -- if +you need a more detailed description of the superset of Markdown which kramdown supports the [syntax +page](syntax.html) is the place to go! + +{tikz:: +path: overview.png +img_attr: {style: 'background:transparent'} +content_processor.tikz.libraries: [mindmap, trees, arrows] +content_processor.tikz.transparent: true +content_processor.tikz.resolution: 300 100 +content_processor.tikz.opts: | + mindmap, concept color=black, text=white, + root concept/.append style={font=\Large}, + level 1 concept/.append style={font=\Large, minimum size=2.6cm}, + level 2 concept/.append style={font=\Large}, +} +\node[concept, font=\Large] (lib) {kramdown's internal representation} + child[concept color=orange, grow=120, ->] {node[concept] (i-kramdown) {kramdown}} + child[concept color=orange, grow=160] {node[concept] (i-html) {HTML}} + child[concept color=orange, grow=200] {node[concept] (i-gfm) {GFM}} + child[concept color=orange, grow=240] {node[concept] (i-markdown) {Markdown}} + child[concept color=green!50!black, grow=60] {node[concept] (o-html) {HTML}} + child[concept color=green!50!black, grow=20] {node[concept] (o-kramdown) {kramdown}} + child[concept color=green!50!black, grow=-20] { + node[concept] (o-latex) {\LaTeX} + child[grow=0] { + node[concept] (o-latex-pdf) {PDF} + } + } + child[concept color=green!50!black, grow=-60] {node[concept] (o-pdf) {PDF}} +; +\draw [dash pattern=on 0pt off 2pt,line width=5pt,arrows=-angle 60,shorten >=15pt,shorten <=10pt,color=orange] + (i-kramdown) edge(lib) + (i-markdown) edge(lib) + (i-html) edge (lib) + (i-gfm) edge (lib); +\draw [dash pattern=on 0pt off 2pt,line width=5pt,arrows=-angle 60,shorten >=10pt,shorten <=15pt,color=green!50!black] + (lib) edge(o-html) + (lib) edge (o-kramdown) + (lib) edge (o-latex) + (lib) edge (o-pdf); +{tikz} +{: style="text-align: center"} + + +## Bugs, Forums, Mailing Lists + +If you have found a bug, you should [report it here][bug_report]. Also, there is the [kramdown-users +google group][ml] available if you have any questions! + +[bug_report]: http://github.com/gettalong/kramdown/issues +[ml]: https://groups.google.com/forum/#!forum/kramdown-users + + +## Thanks + +kramdown would not be possible without the prior work of many other people. I want to thank everyone +involved with making Markdown such a nice markup language and especially the developers of other +Markdown implementations because kramdown borrowed many ideas from existing packages. + + +## Author + +* Thomas Leitner +* e-Mail: + +[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/ +[Maruku]: http://maruku.rubyforge.org +[BlueFeather]: http://ruby.morphball.net/bluefeather/index_en.html + +--- intro +
                + + + + +**kramdown**{:itemprop="name"} (sic, not Kramdown or KramDown, just kramdown) is a *free* +[MIT](https://github.com/gettalong/kramdown/blob/master/COPYING){:itemprop="license"}-licensed +[Ruby](http://www.ruby-lang.org) library for parsing and converting a superset of Markdown. It is +completely written in Ruby, supports standard Markdown (with some minor modifications) and various +extensions that have been made popular by the [PHP Markdown Extra] package and [Maruku]. +{:itemprop="description"} + +It is probably the fastest pure-Ruby Markdown converter available (September 2014), being about 3x +faster than [Maruku] and about 4.5x faster than [BlueFeather]. + +Version **1.17.0**{:itemprop="softwareVersion"} released on +**2018-05-31**{:itemprop="datePublished"}, [more news](news.html) +{: style="text-align: center; font-size: 80%"} + +
                + +
                +Support kramdown development and become a patron! +
                + + +[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/ +[Maruku]: http://maruku.rubyforge.org +[BlueFeather]: http://ruby.morphball.net/bluefeather/index_en.html diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/installation.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/installation.page new file mode 100644 index 0000000000..179a1e94ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/installation.page @@ -0,0 +1,88 @@ +--- +title: Installation +in_menu: true +sort_info: 5 +--- +# Download & Installation + +## Dependencies + +Since kramdown is written in Ruby, you just need the [Ruby interpreter](http://www.ruby-lang.org), +version 2.x. There are no other dependencies. + + +## Compatibility Notes + +kramdown should work on any platform which supports Ruby. It has been successfully tested on the +following platforms: + +* Linux with Ruby 2.x and jruby 9.0.0.0. + +See the platform specific installation notes for more information! + + +## Platform Specific Installation Instructions + +### Linux + +You need to make sure that Ruby is installed. If it isn't, consult the documentation of the Linux +distribution you are using on how to install it. For example, in case of Ubuntu 17.10 (this should +probably also work for any newer Ubuntu version or any recent Debian based distribution) all you +need to do is: + + sudo apt-get install ruby + +Once you have Ruby installed, you need to execute the following command to install kramdown: + + sudo gem install kramdown + + +### Mac OS X + +Mac OS X Snow Leopard comes with Ruby and Rubygems preinstalled. So installing kramdown is as easy +as running: + + sudo gem install kramdown + + +### Windows + +You need to install Ruby first. This can easily be done by using the [RubyInstaller] - just download +the installation binary and run it. After that open a command shell (select `Start -> Run...`, then +enter `cmd` and click on `Ok`) and type in the following: + + gem install kramdown + +[RubyInstaller]: http://rubyinstaller.org + + +## Generic Installation Instructions + + +### Using Rubygems + +If you are using Rubygems, installing the latest version of kramdown is as simple as executing + + gem install kramdown + + +### Manual Installation + +The latest version of kramdown can always be downloaded as `.tar.gz` or `.zip` via the [Github +releases page][ghreleases]. After the download the package needs to be decompressed and then you can +install kramdown using the included `setup.rb` installation method: + + $ ruby setup.rb config + $ ruby setup.rb setup + $ ruby setup.rb install + +[ghreleases]: https://github.com/gettalong/kramdown/releases + + +### Using the repository version + +kramdown uses git as its versioning system and kramdown's repository is hosted on GitHub. The +repository always contains a clean state of the current development version of kramdown. To check +out kramdown use the following command: + + git clone git://github.com/gettalong/kramdown.git diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/links.markdown b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/links.markdown new file mode 100644 index 0000000000..6baa05acd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/links.markdown @@ -0,0 +1,6 @@ +[Maruku]: http://maruku.rubyforge.org +[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/ +[Pandoc]: http://johnmacfarlane.net/pandoc/ +[MathJax]: http://www.mathjax.org +[BlueCloth]: http://deveiate.org/projects/BlueCloth +[RedCloth]: http://redcloth.org/ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/metainfo b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/metainfo new file mode 100644 index 0000000000..89ddeb2f9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/metainfo @@ -0,0 +1,13 @@ +--- paths +[/**/*.js, /**/*.css]: + modified_at_in_dest_path: true + +/**/*.scss: + modified_at_in_dest_path: true + +--- alcn +[converter/*.html, parser/*.html, documentation.en.html, options.en.html, tests.en.html]: + template: ../documentation.template + +/**/*.css: + pipeline: scss,cssminify diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.feed b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.feed new file mode 100644 index 0000000000..84e611d2d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.feed @@ -0,0 +1,9 @@ +--- +title: kramdown News +description: kramdown - a fast, pure Ruby Markdown-superset converter +author: Thomas Leitner +author_url: https://kramdown.gettalong.org +entries: {alcn: news/*.html, sort: sort_info, reverse: true, limit: 10} +versions: + atom: + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.page new file mode 100644 index 0000000000..b0f7f42303 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/news.page @@ -0,0 +1,29 @@ +--- +title: News +in_menu: false +sort_info: 30 +--- pipeline:tags,blocks,fragments + +

                News

                + +Atom-Feed + + + +--- name:newsdata pipeline:erb +<% +opts = {:alcn => '/news/*.html', :sort => 'sort_info', :reverse => true, :flatten => true} +context.website.ext.item_tracker.add(context.dest_node, :nodes, :node_finder_option_set, + {:opts => opts, :ref_alcn => context.node.alcn}, :content) +context.website.ext.node_finder.find(opts, context.node).each do |node| + # context.options['contentprocessor.kramdown.options'] = {:auto_id_prefix => node.lcn.tr('.', '-')} +%> + +
                +
                + Published on <%= node['created_at'].strftime("%A, %d %B %Y") %> +
                +<%= context.render_block(:name => 'content', :chain => [node]) %> +
                + +<% end %> diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/options.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/options.page new file mode 100644 index 0000000000..6b8bb48ad3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/options.page @@ -0,0 +1,49 @@ +--- +title: Options +--- +## Options + +The behaviour of kramdown can be adjusted via the available options. + +Options can be specified in multiple ways: + +On the command line +: The `kramdown` binary allows setting any option by using command line switches. + + For example, the following command will disable automatic header ID generation and defines the + first footnote number as 5: + + ~~~ + $ kramdown --no-auto-ids --footnote-nr 5 + ~~~ + + As you can see all underscores in option names have to be replaced with dashes. The built-in help + of the binary as well as the man-page show all available options. + +Within a kramdown document +: By using the special extension syntax, it is possible to set options within a document. + + Using the above example, the options would be set like this within a document: + + ~~~ + {::options auto_ids="false" footnote_nr="5" /} + ~~~ + +Using Ruby code + +: If you are using kramdown as a library, you can pass any options as second parameter to the + `Kramdown::Document.new` method. + + Again, using the above example you would initalize the kramdown document class as follows: + + ~~~ ruby + Kramdown::Document.new(source_text, \{auto_ids: false, footnote_nr: 5}) + ~~~ + + +## Available Options + +Below is a list of all currently available options. Have a look at the documentation of a converter +or parser to see directly which options they support! + +{options: {items: all}} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/quickref.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/quickref.page new file mode 100644 index 0000000000..eeeacfb5bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/quickref.page @@ -0,0 +1,603 @@ +--- +title: Quick Reference +in_menu: true +sort_info: 9 +--- name:sidebar + + +

                Contents

                + +{menu: {options: {descendants: true, levels: [2,6]}}} +--- name:content +# Quick Reference + +Below are examples of all available structural elements that can be used in a kramdown text. Since +the kramdown syntax is a superset of the Markdown syntax, only a small part of the available syntax +is not available in standard Markdown syntax. Note, that only the most basic syntax information is +given. However, a link to the detailed syntax for each element is provided (which also details the +differences to the standard Markdown syntax). The quick reference is for version **<%= +::Kramdown::VERSION %>** of the syntax documentation. + +kramdown has two main classes of elements: block and span-level elements. Block-level elements are +used to create paragraphs, headers, lists and so on whereas span-level elements are used to markup +text phrases as emphasized, as a link and so on. + +All examples below feature the kramdown source, the converted HTML source (shown when hovering over +the kramdown source) and the output as it appears in the browser. This looks like this: + + + + + + +
                kramdown example code
                Example code converted to HTML
                +
                +Live browser view of example code +
                +
                + + +# Block-level Elements - Main Structural Elements + +## Paragraphs + +{kdlink: {oid: paragraphs, part: "paragraphs"}} + +Consecutive lines of text are considered to be one paragraph. As with other block level elements you +have to add a blank line to separate it from the following block-level element: + +{kdexample::} +The first paragraph. + +Another paragraph +{kdexample} + +Explicit line breaks in a paragraph can be made by using two spaces or two backslashes at the end of a line: + +{kdexample::} +This is a paragraph +which contains a hard line break. +{kdexample} + + +## Headers + +{kdlink: {oid: headers, part: "headers"}} + +kramdown supports Setext style headers and atx style headers. A header must always be preceded by a +blank line except at the beginning of the document: + + +{kdexample::} +First level header +================== + +Second level header +------------------- +{kdexample} + +{kdexample::} +# H1 header + +## H2 header + +### H3 header + +#### H4 header + +##### H5 header + +###### H6 header +{kdexample} + +If you set the option `auto_ids` to `false` (for example, by using the `options` extension, see +[Extensions](#extensions)), then the automatic header ID generation is turned off: + +{kdexample::} +{::options auto_ids="false" /} + +# A header without an ID +{kdexample} + + +## Blockquotes + +{kdlink: {oid: blockquotes, part: "blockquotes"}} + +A blockquote is started using the `>` marker followed by an optional space; all following lines that +are also started with the blockquote marker belong to the blockquote. You can use any block-level +elements inside a blockquote: + +{kdexample::} +> A sample blockquote. +> +> >Nested blockquotes are +> >also possible. +> +> ## Headers work too +> This is the outer quote again. +{kdexample} + +You may also be lazy with the `>` markers as long as there is no blank line: + +{kdexample::} +> This is a blockquote +continued on this +and this line. + +But this is a separate paragraph. +{kdexample} + +## Code Blocks + +{kdlink: {oid: code-blocks, part: "code blocks"}} + +kramdown supports two different code block styles. One uses lines indented with either four spaces +or one tab whereas the other uses lines with tilde characters as delimiters -- therefore the content +does not need to be indented: + +{kdexample::} + This is a sample code block. + + Continued here. +{kdexample} + +{kdexample::} +~~~~~~ +This is also a code block. +~~~ +Ending lines must have at least as +many tildes as the starting line. +~~~~~~~~~~~~ +{kdexample} + +The following is a code block with a language specified: + +{kdexample::} +~~~ ruby +def what? + 42 +end +~~~ +{kdexample} + + +## Horizontal Rules + +{kdlink: {oid: horizontal-rules, part: "horizontal rules"}} + +It is easy to insert a horizontal rule in kramdown: just use three or more asterisks, dashes or +underscores, optionally separated by spaces or tabs, on an otherwise blank line: + +{kdexample::} +* * * + +\--- + + _ _ _ _ + +--------------- +{kdexample} + + +## Lists + +{kdlink: {oid: lists, part: "lists"}} + +kramdown supports ordered and unordered lists. Ordered lists are started by using a number followed +by a period, a space and then the list item text. The content of a list item consists of block-level +elements. All lines which have the same indent as the text of the line with the list marker belong +to the list item: + +{kdexample::} +1. This is a list item +2. And another item +2. And the third one + with additional text +{kdexample} + +As with block quotes, you may be lazy when using the list item marker: + +{kdexample::} +* A list item +with additional text +{kdexample} + +As the content consists of block-level elements you can do things like the following: + +{kdexample::} +1. This is a list item + + > with a blockquote + + # And a header + +2. Followed by another item +{kdexample} + +Nested lists are also easy to create: + +{kdexample::} +1. Item one + 1. sub item one + 2. sub item two + 3. sub item three +2. Item two +{kdexample} + +Lists can occur directly after other block-level elements, however, there has to be at least one +blank line if you want to follow a paragraph with a list: + +{kdexample::} +This is a paragraph. +1. This is NOT a list. + +1. This is a list! +{kdexample} + +Unordered lists are started by using an asterisk, a dash or a plus sign (they can be mixed) and a +space. Apart from that unordered lists follow the same rules as ordered lists: + +{kdexample::} +* Item one ++ Item two +- Item three +{kdexample} + +## Definition Lists + +{kdlink: {oid: definition-lists, part: "definition lists"}} + +A definition list works similar to a normal list and is used to associate definitions with terms. +Definition lists are started when a normal paragraph is followed by a line starting with a colon and +then the definition text. One term can have many definitions and multiple terms can have the same +definition. Each line of the preceding paragraph is assumed to contain one term, for example: + +{kdexample::} +term +: definition +: another definition + +another term +and another term +: and a definition for the term +{kdexample} + +If you insert a blank line before a definition (note: there must only be one blank line between the +terms and the first definition), the definition will be wrapped in a paragraph: + +{kdexample::} +term + +: definition +: definition +{kdexample} + +Each term can be styled using span-level elements and each definition is parsed as block-level +elements, i.e. you can use any block-level in a definition. Just use the same indent for the lines +following the definition line: + +{kdexample::} +This *is* a term + +: This will be a para + + > a blockquote + + # A header +{kdexample} + + +## Tables + +{kdlink: {oid: tables, part: "tables"}} + +kramdown supports a syntax for creating simple tables. A line starting with a pipe character (`|`) +starts a table row. However, if the pipe characters is immediately followed by a dash (`-`), a +separator line is created. Separator lines are used to split the table header from the table body +(and optionally align the table columns) and to split the table body into multiple parts. If the +pipe character is followed by an equal sign (`=`), the tables rows below it are part of the table +footer. + +{kdexample::} +| A simple | table | +| with multiple | lines| +{kdexample} + +{kdexample::} +| Header1 | Header2 | Header3 | +|:--------|:-------:|--------:| +| cell1 | cell2 | cell3 | +| cell4 | cell5 | cell6 | +|---- +| cell1 | cell2 | cell3 | +| cell4 | cell5 | cell6 | +|===== +| Foot1 | Foot2 | Foot3 +{: rules="groups"} +{kdexample} + + +## HTML elements + +{kdlink: {oid: html-blocks, part: "HTML blocks"}} + +kramdown allows you to use block-level HTML tags (`div`, `p`, `pre`, ...) to markup whole blocks of +text -- just start a line with a block-level HTML tag. kramdown syntax is normally not processed +inside an HTML tag but this can be changed with the `parse_block_html` option. If this options is +set to `true`, then the content of a block-level HTML tag is parsed by kramdown either as block +level or span-level text, depending on the tag: + +{kdexample::} +
                +Something that stays right and is not wrapped in a para. +
                + +{::options parse_block_html="true" /} + +
                +This is wrapped in a para. +
                +

                +This can contain only *span* level elements. +

                +{kdexample} + + +## Block Attributes + +{kdlink: {oid: block-ials, part: "block IALs"}} +{kdlink: {oid: attribute-list-definitions, part: "ALDs"}} + +You can assign any attribute to a block-level element. Just directly follow the block with a *block +inline attribute list* (or short: block IAL). A block IAL consists of a left curly brace, followed +by a colon, the attribute definitions and a right curly brace. Here is a simple example which sets the +`title` attribute of a block quote: + +{kdexample::} +> A nice blockquote +{: title="Blockquote title"} +{kdexample} + +As one often wants to set one or more CSS classes on an element, there is an easy shortcut: + +{kdexample::} +> A nice blockquote +{: .class1 .class2} +{kdexample} + +A shortcut for setting the ID is also provided. Just prefix the ID with a hash symbol: + +{kdexample::} +> A nice blockquote +{: #with-an-id} +{kdexample} + +Sometimes one wants to use the same attributes for many elements. kramdown allows you to define the +attributes in one place with an *attribute list definition* (or short: ALD) and just reference this +definition in a block IAL. An ALD has the same structure as a block IAL but the colon has to be +replace with a colon, the reference name and another colon. By just using the reference name as-is +in a block IAL, one can include the attributes of the referenced ALD: + +{kdexample::} +{:refdef: .c1 #id .c2 title="title"} +paragraph +{: refdef} +{kdexample} + +The order in a block IAL or ALD is important because later defined attributes overwrite (with the +exception of the shortcut for CSS classes) prior defined attributes: + +{kdexample::} +{:refdef: .c1 #id .c2 title="title"} +paragraph +{: refdef .c3 title="t" #para} +{kdexample} + + +## Extensions + +{kdlink: {oid: extensions, part: "extensions"}} + +kramdown provides some less used functionality through a common syntax. This will allow the easy +addition of other extensions if need arises. Currently, there are extensions for ignoring text (i.e. +treating text as comment), for inserting arbitrary text as-is into the output and for setting +kramdown options. + +Here is an example that shows how to insert comments into text: + +{kdexample::} +This is a paragraph +{::comment} +This is a comment which is +completely ignored. +{:/comment} +... paragraph continues here. + +Extensions can also be used +inline {::nomarkdown}**see**{:/}! +{kdexample} + +As one can see from the above example, the syntax for extensions is nearly identical to that of +ALDs. However, there is no trailing colon after the extension name and the extension end tag needs a +slash between the colon and the extension name. One can also use the short form of the end tag, i.e. +`{:/}`. Attribute definitions can be specified on the start tag by separating them with a space from +the extension name. Also, if the extension does not have a body, there needs to be a slash right +before the closing brace: + +{kdexample::} +{::options auto_ids="false" /} + +# Header without id +{kdexample} + + + + +# Span-Level Elements - Text Modifiers + +## Emphasis + +{kdlink: {oid: emphasis, part: "emphasis"}} + +Emphasis can be added to text by surrounding the text with either asterisks or underscores: + +{kdexample::} +This is *emphasized*, +_this_ too! +{kdexample} + +Strong emphasis can be done by doubling the delimiters: + +{kdexample::} +This is **strong**, +__this__ too! +{kdexample} + +The form with the asterisks can also be used to markup parts of words: + +{kdexample::} +This w**ork**s as expected! +{kdexample} + + +## Links and Images + +{kdlink: {oid: links-and-images, part: "links and images"}} + +A simple link can be created by surrounding the text with square brackets and the link URL with +parentheses: + +{kdexample::} +A [link](http://kramdown.gettalong.org) +to the kramdown homepage. +{kdexample} + +You can also add title information to the link: + +{kdexample::} +A [link](http://kramdown.gettalong.org "hp") +to the homepage. +{kdexample} + +There is another way to create links which does not interrupt the text flow. The URL and title are +defined using a reference name and this reference name is then used in square brackets instead of +the link URL: + +{kdexample::} +A [link][kramdown hp] +to the homepage. + +[kramdown hp]: http://kramdown.gettalong.org "hp" +{kdexample} + +If the link text itself is the reference name, the second set of square brackets can be omitted: + +{kdexample::} +A link to the [kramdown hp]. + +[kramdown hp]: http://kramdown.gettalong.org "hp" +{kdexample} + +Images can be created in a similar way: just use an exclamation mark before the square brackets. The +link text will become the alternative text of the image and the link URL specifies the image source: + +{kdexample::} +An image: ![gras](img/image.jpg) +{kdexample} + + +## Inline Code + +{kdlink: {oid: code-spans, part: "code spans"}} + +Text phrases can be easily marked up as code by surrounding them with backticks: + +{kdexample::} +Use `Kramdown::Document.new(text).to_html` +to convert the `text` in kramdown +syntax to HTML. +{kdexample} + +If you want to use literal backticks in your code, just use two or more backticks as delimiters. The +space right after the beginning delimiter and the one right before the closing delimiter are ignored: + +{kdexample::} +Use backticks to markup code, +e.g. `` `code` ``. +{kdexample} + + +## Footnotes + +{kdlink: {oid: footnotes, part: "footnotes"}} + +Footnotes can easily be used in kramdown. Just set a footnote marker (consists of square brackets +with a caret and the footnote name inside) in the text and somewhere else the footnote definition (which +basically looks like a reference link definition): + +{kdexample::} +This is a text with a +footnote[^1]. + +[^1]: And here is the definition. +{kdexample} + +The footnote definition can contain any block-level element, all lines following a footnote +definition indented with four spaces or one tab belong to the definition: + +{kdexample::} +This is a text with a +footnote[^2]. + +[^2]: + And here is the definition. + + > With a quote! +{kdexample} + +As can be seen above the footnote name is only used for the anchors and the numbering is done +automatically in document order. Repeated footnote markers will link to the same footnote +definition. + + +## Abbreviations + +{kdlink: {oid: abbreviations, part: "abbreviations"}} + +Abbreviations will work out of the box once you add an abbreviation definition. So you can just +write the text and add the definitions later on. + +{kdexample::} +This is an HTML +example. + +*[HTML]: Hyper Text Markup Language +{kdexample} + + +## HTML Elements + +{kdlink: {oid: html-spans, part: "HTML spans"}} + +HTML is not only supported on the block-level but also on the span-level: + +{kdexample::} +This is written in +red. +{kdexample} + + +## Inline Attributes + +{kdlink: {oid: span-ials, part: "span IALs"}} + +As with a block-level element you can assign any attribute to a span-level elements using a *span +inline attribute list* (or short: span IAL). A span IAL has the same syntax as a block IAL and must +immediately follow the span-level element: + +{kdexample::} +This is *red*{: style="color: red"}. +{kdexample} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sidebar.template b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sidebar.template new file mode 100644 index 0000000000..9702a40754 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sidebar.template @@ -0,0 +1,22 @@ +

                Support kramdown

                + +

                If you like kramdown and would like to support it, you are welcome to make a small +donation (Patreon or PayPal) -- it will surely be appreciated! Thanks!

                + +
                + +Become a Patron! + +
                + + + +
                + +
                + +

                Sponsors

                + +

                GROSSWEBER provides software +development consulting and training services. We like to work on open source. We use it heavily. +We love kramdown!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sitemap.sitemap b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sitemap.sitemap new file mode 100644 index 0000000000..1f19756483 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/sitemap.sitemap @@ -0,0 +1,5 @@ +--- +entries: + alcn: /**/*.html +default_change_freq: monthly +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/syntax.page b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/syntax.page new file mode 100644 index 0000000000..e8477a5964 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/doc/syntax.page @@ -0,0 +1,1799 @@ +--- +title: Syntax +in_menu: true +sort_info: 10 +--- name:sidebar + + +

                Contents

                + +{menu: {options: {descendants: true, levels: [2,6]}}} +--- name:content + +# kramdown Syntax + +This is version **<%= ::Kramdown::VERSION %>** of the syntax documentation. + +The kramdown syntax is based on the Markdown syntax and has been enhanced with features that are +found in other Markdown implementations like [Maruku], [PHP Markdown Extra] and [Pandoc]. However, +it strives to provide a strict syntax with definite rules and therefore isn't completely compatible +with Markdown. Nonetheless, most Markdown documents should work fine when parsed with kramdown. All +places where the kramdown syntax differs from the Markdown syntax are highlighted. + +Following is the complete syntax definition for all elements kramdown supports. Together with the +documentation on the available converters, it is clearly specified what you will get when a kramdown +document is converted. + + +## Source Text Formatting + +A kramdown document may be in any encoding, for example ASCII, UTF-8 or ISO-8859-1, and the output +will have the same encoding as the source. + +The document consists of two types of elements, block-level elements and span-level elements: + +* Block-level elements define the main structure of the content, for example, what part of the text + should be a paragraph, a list, a blockquote and so on. + +* Span-level elements mark up small text parts as, for example, emphasized text or a link. + +Thus span-level elements can only occur inside block-level elements or other span-level elements. + +You will often find references to the "first column" or "first character" of a line in a block-level +element descriptions. Such a reference is always to be taken relative to the current indentation +level because some block-level elements open up a new indentation level (e.g. blockquotes). The +beginning of a kramdown document opens up the default indentation level which begins at the first +column of the text. + + +### Line Wrapping + +Some lightweight markup syntax don't work well in environments where lines are hard-wrapped. For +example, this is the case with many email programs. Therefore kramdown allows content like +paragraphs or blockquotes to be hard-wrapped, i.e. broken across lines. This is sometimes referred +to as "lazy syntax" since the indentation or line prefix required for the first line of content is +not required for the consecutive lines. + +Block-level elements that support line wrapping always end when one of the following conditions is +met: + +* a [blank line](#blank-lines), an [EOB marker line](#eob-marker), a [block IAL](#block-ials) or the + end of the document (i.e. a [block boundary](#block-boundaries)), + +* or an [HTML block](#html-blocks). + +Line wrapping is allowed throughout a kramdown document but there are some block-level elements that +do *not* support being hard-wrapped: + +[headers](#headers) + +: This is not an issue in most situations since headers normally fit on one line. If a header text + gets too long for one line, you need to use HTML syntax instead. + +[fenced code blocks](#fenced-code-blocks) + +: The delimiting lines of a fenced code block do not support hard-wrapping. Since everything between + the delimiting lines is taken as is, the content of a fenced code block does also not support + hard-wrapping. + +[definition list terms](#definition-lists) + +: Each definition term has to appear on a separate line. Hard-wrapping would therefore introduce + additional definition terms. The definitions themselves, however, do support hard-wrapping. + +[tables](#tables) + +: Since each line of a kramdown table describes one table row or a separator, it is not possible to + hard-wrap tables. + +**Note** that it is **NOT** recommended to use lazy syntax to write a kramdown document. The +flexibility that the kramdown syntax offers due to the issue of line wrapping hinders readability +and should therefore not be used. + + +### Usage of Tabs + +kramdown assumes that tab stops are set at multiples of four. This is especially important when +using tabs for indentation in lists. Also, tabs may only be used at the beginning of a line when +indenting text and must not be preceded by spaces. Otherwise the results may be unexpected. + + +### Automatic and Manual Escaping + +Depending on the output format, there are often characters that need special treatment. For example, +when converting a kramdown document to HTML one needs to take care of the characters `<`, `>` and +`&`. To ease working with these special characters, they are automatically and correctly escaped +depending on the output format. + +This means, for example, that you can just use `<`, `>` and `&` in a kramdown document and need not +think about when to use their HTML entity counterparts. However, if you *do use* HTML entities or +HTML tags which use one of the characters, the result will be correct nonetheless! + +Since kramdown also uses some characters to mark-up the text, there needs to be a way to escape +these special characters so that they can have their normal meaning. This can be done by using +backslash escapes. For example, you can use a literal back tick like this: + + This \`is not a code\` span! + +Following is a list of all the characters (character sequences) that can be escaped: + + \ backslash + . period + * asterisk + _ underscore + + plus + - minus + = equal sign + ` back tick + ()[]{}<> left and right parens/brackets/braces/angle brackets + # hash + ! bang + << left guillemet + >> right guillemet + : colon + | pipe + " double quote + ' single quote + $ dollar sign + + +## Block Boundaries + +Some block-level elements have to start and/or end on so called block boundaries, as stated in their +documentation. There are two cases where block boundaries come into play: + +* If a block-level element has to start on a block boundary, it has to be preceded by either a + [blank line](#blank-lines), an [EOB marker](#eob-marker), a [block IAL](#block-ials) or it has to + be the first element. + +* If a block-level element has to end on a block boundary, it has to be followed by either a [blank + line](#blank-lines), an [EOB marker](#eob-marker), a [block IAL](#block-ials) or it has to be the + last element. + + + +# Structural Elements + +All structural elements are block-level elements and they are used to structure the content. They +can mark up some text as, for example, a simple paragraph, a quote or as a list item. + + +## Blank lines + +Any line that just contains white space characters such as spaces and tabs is considered a blank +line by kramdown. One or more consecutive blank lines are handled as one empty blank line. Blank +lines are used to separate block-level elements from each other and in this case they don't have +semantic meaning. However, there are some cases where blank lines do have a semantic meaning: + +* When used in headers -- see the [headers section](#headers) +* When used in code blocks -- see the [code blocks section](#code-blocks) +* When used in lists -- see the [lists section](#lists) +* When used in math blocks -- see the [math blocks section](#math-blocks) +* When used for elements that have to start/end on [block boundaries](#block-boundaries) + + +## Paragraphs + +Paragraphs are the most used block-level elements. One or more consecutive lines of text are +interpreted as one paragraph. The first line of a paragraph may be indented up to three spaces, the +other lines can have any amount of indentation because paragraphs support [line +wrapping](#line-wrapping). In addition to the rules outlined in the section about line wrapping, a +paragraph ends when a [definition list line](#definition-lists) is encountered. + +You can separate two consecutive paragraphs from each other by using one or more blank lines. Notice +that a line break in the source does not mean a line break in the output (due to the [lazy +syntax](#line-wrapping))!. If you want to have an explicit line break (i.e. a `
                ` tag) you need +to end a line with two or more spaces or two backslashes! Note, however, that a line break on the +last text line of a paragraph is not possible and will be ignored. Leading and trailing spaces will +be stripped from the paragraph text. + +The following gives you an example of how paragraphs look like: + + This para line starts at the first column. However, + the following lines can be indented any number of spaces/tabs. + The para continues here. + + This is another paragraph, not connected to the above one. But + with a hard line break. \\ + And another one. +{: .show-whitespaces .ws-lr} + + +## Headers + +kramdown supports so called Setext style and atx style headers. Both forms can be used inside a +single document. + +### Setext Style + +Setext style headers have to start on a [block boundary](#block-boundaries) with a line of text (the +header text) and a line with only equal signs (for a first level header) or dashes (for a second +level header). The header text may be indented up to three spaces but any leading or trailing spaces +are stripped from the header text. The amount of equal signs or dashes is not significant, just one +is enough but more may look better. The equal signs or dashes have to begin at the first column. For +example: + + First level header + ================== + + Second level header + ------ + + Other first level header + = + +Since Setext headers start on block boundaries, this means in most situations that they have to be +preceded by a blank line. However, blank lines are not necessary after a Setext header: + + This is a normal + paragraph. + + And A Header + ------------ + And a paragraph + + > This is a blockquote. + + And A Header + ------------ + +However, it is generally a good idea to also use a blank line after a Setext header because it looks +more appropriate and eases reading of the document. + +> The original Markdown syntax allows one to omit the blank line before a Setext header. However, +> this leads to ambiguities and makes reading the document harder than necessary. Therefore it is +> not allowed in a kramdown document. +{: .markdown-difference} + +An edge case worth mentioning is the following: + + header + --- + para + +One might ask if this represents two paragraphs separated by a [horizontal rule](#horizontal-rules) +or a second level header and a paragraph. As suggested by the wording in the example, the latter is +the case. The general rule is that Setext headers are processed before horizontal rules. + +### atx Style + +atx style headers have to start on a [block boundary](#block-boundaries) with a line that contains +one or more hash characters and then the header text. No spaces are allowed before the hash +characters. The number of hash characters specifies the heading level: one hash character gives you +a first level heading, two a second level heading and so on until the maximum of six hash characters +for a sixth level heading. You may optionally use any number of hashes at the end of the line to +close the header. Any leading or trailing spaces are stripped from the header text. For example: + + # First level header + + ### Third level header ### + + ## Second level header ###### + +> Again, the original Markdown syntax allows one to omit the blank line before an atx style header. +{: .markdown-difference} + + +### Specifying a Header ID + +kramdown supports a nice way for explicitly setting the header ID which is taken from [PHP Markdown +Extra] and [Maruku]: If you follow the header text with an opening curly bracket (separated from the +text with a least one space), a hash, the ID and a closing curly bracket, the ID is set on the +header. If you use the trailing hash feature of atx style headers, the header ID has to go after the +trailing hashes. For example: + + Hello {#id} + ----- + + # Hello {#id} + + # Hello # {#id} + +> This additional syntax is not part of standard Markdown. +{: .markdown-difference} + + +## Blockquotes + +A blockquote is started using the `>` marker followed by an optional space and the content of the +blockquote. The marker itself may be indented up to three spaces. All following lines, whether they +are started with the blockquote marker or just contain text, belong to the blockquote because +blockquotes support [line wrapping](#line-wrapping). + +The contents of a blockquote are block-level elements. This means that if you are just using text as +content that it will be wrapped in a paragraph. For example, the following gives you one blockquote +with two paragraphs in it: + + > This is a blockquote. + > on multiple lines + that may be lazy. + > + > This is the second paragraph. + +Since the contents of a blockquote are block-level elements, you can nest blockquotes and use other +block-level elements (this is also the reason why blockquotes need to support line wrapping): + + > This is a paragraph. + > + > > A nested blockquote. + > + > ## Headers work + > + > * lists too + > + > and all other block-level elements + +Note that the first space character after the `>` marker does *not* count when counting spaces for +the indentation of the block-level elements inside the blockquote! So [code blocks](#code-blocks) +will have to be indented with five spaces or one space and one tab, like this: + + > A code block: + > + > ruby -e 'puts :works' + +[Line wrapping](#line-wrapping) allows one to be lazy but hinders readability and should therefore +be avoided, especially with blockquotes. Here is an example of using blockquotes with line wrapping: + + > This is a paragraph inside + a blockquote. + > + > > This is a nested paragraph + that continues here + > and here + > > and here + + +## Code Blocks + +Code blocks can be used to represent verbatim text like markup, HTML or a program fragment because +no syntax is parsed within a code block. + +### Standard Code Blocks + +A code block can be started by using four spaces or one tab and then the text of the code block. All +following lines containing text, whether they adhere to this syntax or not, belong to the code block +because code blocks support [line wrapping](#line-wrapping)). A wrapped code line is automatically +appended to the preceding code line by substituting the line break with a space character. The +indentation (four spaces or one tab) is stripped from each line of the code block. + +> The original Markdown syntax does not allow line wrapping in code blocks. +{: .markdown-difference} + +Note that consecutive code blocks that are only separate by [blank lines](#blank-lines) are merged +together into one code block: + + Here comes some code + + This text belongs to the same code block. + +If you want to have one code block directly after another one, you need to use an [EOB +marker](#eob-marker) to separate the two: + + Here comes some code + ^ + This one is separate. + +### Fenced Code Blocks + +> This alternative syntax is not part of the original Markdown syntax. The idea and syntax comes +> from the [PHP Markdown Extra] package. +{: .markdown-difference} + +kramdown also supports an alternative syntax for code blocks which does not use indented blocks but +delimiting lines. The starting line needs to begin with three or more tilde characters (`~`) and the +closing line needs to have at least the number of tildes the starting line has. Everything between +is taken literally as with the other syntax but there is no need for indenting the text. For +example: + + ~~~~~~~~ + Here comes some code. + ~~~~~~~~ + +If you need lines of tildes in such a code block, just start the code block with more tildes. For +example: + + ~~~~~~~~~~~~ + ~~~~~~~ + code with tildes + ~~~~~~~~ + ~~~~~~~~~~~~~~~~~~ + +This type of code block is especially useful for copy-pasted code since you don't need to indent the +code. + +### Language of Code Blocks + +You can tell kramdown the language of a code block by using an [IAL](#inline-attribute-lists): + + ~~~ + def what? + 42 + end + ~~~ + {: .language-ruby} + +The specially named class `language-ruby` tells kramdown that this code block is written in the Ruby +language. Such information can be used, for example, by converters to do syntax highlighting on the +code block. + +Fenced code blocks provide an easier way to specify the language, namely by appending the language +of the code block to the end of the starting line: + + ~~~ ruby + def what? + 42 + end + ~~~ + + +## Lists + +kramdown provides syntax elements for creating ordered and unordered lists as well as definition +lists. + +### Ordered and Unordered lists + +Both ordered and unordered lists follow the same rules. + +A list is started with a list marker (in case of unordered lists one of `+`, `-` or `*` -- you can +mix them -- and in case of ordered lists a number followed by a period) followed by one tab or at +least one space, optionally followed by an [IAL](#inline-attribute-lists) that should be applied to +the list item and then the first part of the content of the list item. The leading tabs or spaces +are stripped away from this first line of content to allow for a nice alignment with the following +content of a list item (see below). All following list items with the same marker type (unordered or +ordered) are put into the same list. The numbers used for ordered lists are irrelevant, an ordered +list always starts at 1. + +The following gives you an unordered list and an ordered list: + + * kram + + down + - now + + 1. kram + 2. down + 3. now + +> The original Markdown syntax allows the markers of ordered and unordered lists to be mixed, the +> first marker specifying the list type (ordered or unordered). This is not allowed in kramdown. As +> stated, the above example will give you two lists (an unordered and an ordered) in kramdown and +> only one unordered list in Markdown. +{: .markdown-difference} + +The first list marker in a list may be indented up to three spaces. The column number of the first +non-space character which appears after the list item marker on the same line specifies the +indentation that has to be used for the following lines of content of the list item. If there is no +such character, the indentation that needs to be used is four spaces or one tab. Indented lines may +be followed by lines containing text with any amount of indentation due to [line +wrapping](#line-wrapping). Note, however, that in addition to the rules outlined in the section +about line wrapping, a list item also ends when a line with another list item marker is encountered +-- see the next paragraph. + +The indentation is stripped from the content and the content (note that the content naturally also +contains the content of the line with the item marker) is processed as text containing block-level +elements. All other list markers in the list may be indented up to three spaces or the number of +spaces used for the indentation of the last list item minus one, whichever number is smaller. For +example: + + * This is the first line. Since the first non-space characters appears in + column 3, all other indented lines have to be indented 2 spaces. + However, one could be lazy and not indent a line but this is not + recommended. + * This is the another item of the list. It uses a different number + of spaces for indentation which is okay but should generally be avoided. + * The list item marker is indented 3 spaces which is allowed but should + also be avoided and starts the third list item. Note that the lazy + line in the second list item may make you believe that this is a + sub-list which it isn't! So avoid being lazy! + +So, while the above is possible and creates one list with three items, it is not advised to use +different (marker and list content) indents for same level list items as well as lazy indentation! +It is much better to write such a list in the following way: + + * This is the first list item bla blabla blabla blabla blabla blabla + blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla + blabla blabla blabla bla + * This is the another item of the list. bla blabla blabla blabla blabla + blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla + +> The original Markdown syntax also allows you to indent the marker, however, the behaviour of what +> happens with the list items is not clearly specified and may surprise you. +> +> Also, Markdown uses a fixed number of spaces/tabs to indent the lines that belong to a list item! +{: .markdown-difference} + +Unordered and ordered lists work the same way in regard to the indentation: + + * list 1 item 1 + * list 1 item 2 (indent 1 space) + * list 1 item 3 (indent 2 spaces) + * list 1 item 4 (indent 3 spaces) + * lazy text belonging to above item 4 + +^ + + 1. list 1 item 1 + 2. list 1 item 2 (indent 1 space) + 3. list 1 item 3 (indent 2 spaces) + 4. list 1 item 4 (indent 3 spaces) + 5. lazy text belonging to above item 4 + +^ + + * list 1 item 1 + * nested list item 1 + * nested list item 2 + * list 1 item 2 + * nested list item 1 + +^ + + 1. list 1 item 1 + 1. nested list item 1 + 2. nested list item 2 + 10. list 1 item 2 + 1. nested list item 1 + +^ + + 1. text for this list item + further text (indent 3 spaces) + + 10. text for this list item + further text (indent 4 spaces) + +When using tabs for indenting the content of a list item, remember that tab stops occur at multiples +of four for kramdown. Tabs are correctly converted to spaces for calculating the indentation. For +example: + + * Using a tab to indent this line, the tab only counts as three spaces + and therefore the overall indentation is four spaces. + + 1. The tab after the marker counts here as three spaces. Since the + indentation of the marker is three spaces and the marker itself + takes two characters, the overall indentation needed for the + following lines is eight spaces or two tabs. + +It is clear that you might get unexpected results if you mix tabs and spaces or if you don't have +the tab stops set to multiples of four in your editor! Therefore this should be avoided! + +The content of a list item is made up of either text or block-level elements. Simple list items only +contain text like in the above examples. They are not even wrapped in a paragraph tag. If the first +list text is followed by one or more blank lines, it will be wrapped in a paragraph tag: + + * kram + + * down + * now + +In the above example, the first list item text will be wrapped in a paragraph tag since it is +followed by a blank line whereas the second list item contains just text. There is obviously a +problem for doing this with the last list item when it contains only text. You can circumvent this +by leaving a blank line after the last list item and using an EOB marker: + + * Not wrapped in a paragraph + * Wrapped in a paragraph due to the following blank line. + + * Also wrapped in a paragraph due to the + following blank line and the EOB marker. + + ^ + +The text of the last list item is also wrapped in a paragraph tag if *all* other list items contain +a proper paragraph as first element. This makes the following use case work like expected, i.e. +*all* the list items are wrapped in paragraphs: + + * First list item + + * Second list item + + * Last list item + +> The original Markdown syntax page specifies that list items which are separated by one or more +> blank lines are wrapped in paragraph tags. This means that the first text will also be wrapped in +> a paragraph if you have block-level elements in a list which are separated by blank lines. The +> above rule is easy to remember and lets you exactly specify when the first list text should be +> wrapped in a paragraph. The idea for the above rule comes from the [Pandoc] package. +{: .markdown-difference} + +As seen in the examples above, blank lines between list items are allowed. + +Since the content of a list item can contain block-level elements, you can do the following: + + * First item + + A second paragraph + + * nested list + + > blockquote + + * Second item + +However, there is a problem when you want to have a code block immediately after a list item. You +can use an EOB marker to circumvent this problem: + + * This is a list item. + + The second para of the list item. + ^ + A code block following the list item. + +You can have any block-level element as first element in a list item. However, as described above, +the leading tabs or spaces of the line with the list item marker are stripped away. This leads to a +problem when you want to have a code block as first element. The solution to this problem is the +following construct: + + * + This is a code block (indentation needs to be 4(1)+4(1) + spaces (tabs)). +{: .show-whitespaces .ws-lr} + +Note that the list marker needs to be followed with at least one space or tab! Otherwise the line is +not recognized as the start of a list item but interpreted as a paragraph containing the list +marker. + +If you want to have one list directly after another one (both with the same list type, i.e. ordered +or unordered), you need to use an EOB marker to separate the two: + + * List one + ^ + * List two + +Since paragraphs support [line wrapping](#line-wrapping), it would usually not be possible to create +compact nested list, i.e. a list where the text is not wrapped in paragraphs because there is no +blank line but a sub list after it: + + * This is just text. + * this is a sub list item + * this is a sub sub list item + * This is just text, + spanning two lines + * this is a nested list item. + +However, this is an often used syntax and is therefore support by kramdown. + +If you want to start a paragraph with something that looks like a list item marker, you need to +escape it. This is done by escaping the period in an ordered list or the list item marker in an +unordered list: + + 1984\. It was great + \- others say that, too! + +As mentioned at the beginning, an optional IAL for applying attributes to a list item can be used +after the list item marker: + + * {:.cls} This item has the class "cls". + Here continues the above paragraph. + + * This is a normal list item. + + +### Definition Lists + +> This syntax feature is not part of the original Markdown syntax. The idea and syntax comes from +> the [PHP Markdown Extra] package. +{: .markdown-difference} + +Definition lists allow you to assign one or more definitions to one or more terms. + +A definition list is started when a normal paragraph is followed by a line with a definition marker +(a colon which may be optionally indented up to three spaces), then at least one tab or one space, +optionally followed by an [IAL](#inline-attribute-lists) that should be applied to the list item and +then the first part of the definition. The line with the definition marker may optionally be +separated from the preceding paragraph by a blank line. The leading tabs or spaces are stripped away +from this first line of the definition to allow for a nice alignment with the following definition +content. Each line of the preceding paragraph is taken to be a term and the lines separately parsed +as span-level elements. Each such term may optionally start with an [IAL](#inline-attribute-lists) +that should be applied to the term. + +The following is a simple definition list: + + kramdown + : A Markdown-superset converter + + Maruku + : Another Markdown-superset converter + +The column number of the first non-space character which appears after a definition marker on the +same line specifies the indentation that has to be used for the following lines of the definition. +If there is no such character, the indentation that needs to be used is four spaces or one tab. +Indented lines may be followed by lines containing text with any amount of indentation due to [line +wrapping](#line-wrapping). Note, however, that in addition to the rules outlined in the section +about line wrapping, a list item also ends when a line with another definition marker is encountered. + +The indentation is stripped from the definition and it (note that the definition naturally also +contains the content of the line with the definition marker) is processed as text containing block +level elements. If there is more than one definition, all other definition markers for the term may +be indented up to three spaces or the number of spaces used for the indentation of the last +definition minus one, whichever number is smaller. For example: + + definition term 1 + definition term 2 + : This is the first line. Since the first non-space characters appears in + column 3, all other lines have to be indented 2 spaces (or lazy syntax may + be used after an indented line). This tells kramdown that the lines + belong to the definition. + : This is the another definition for the same term. It uses a + different number of spaces for indentation which is okay but + should generally be avoided. + : The definition marker is indented 3 spaces which is allowed but + should also be avoided. + +So, while the above is possible and creates a definition list with two terms and three definitions +for them, it is not advised to use different (definition marker and definition) indents in the same +definition list as well as lazy indentation! + +The definition for a term is made up of text and/or block-level elements. If a definition is *not* +preceded by a blank line, the first part of the definition will just be text if it would be a +paragraph otherwise: + + definition term + : This definition will just be text because it would normally be a + paragraph and the there is no preceding blank line. + + > although the definition contains other block-level elements + + : This definition *will* be a paragraph since it is preceded by a + blank line. + +The rules about having any block-level element as first element in a list item also apply to a +definition. + +As mentioned at the beginning, an optional IAL for applying attributes to a term or a definition can +be used: + + {:#term} Term with id="term" + : {:.cls} Definition with class "cls" + + {:#term1} First term + {:#term2} Second term + : {:.cls} Definition + + +## Tables + +> This syntax feature is not part of the original Markdown syntax. The syntax is based on the one +> from the [PHP Markdown Extra] package. +{: .markdown-difference} + +Sometimes one wants to include simple tabular data in a kramdown document for which using a +full-blown HTML table is just too much. kramdown supports this with a simple syntax for ASCII +tables. + +Tables can be created with or without a leading pipe character: If the first line of a table +contains a pipe character at the start of the line (optionally indented up to three spaces), then +all leading pipe characters (i.e. pipe characters that are only preceded by whitespace) are ignored +on all table lines. Otherwise they are not ignored and count when dividing a table line into table +cells. + +There are four different line types that can be used in a table: + +* *Table rows* define the content of a table. + + A table row is any line that contains at least one pipe character and is not identified as any + other type of table line! The table row is divided into individual table cells by pipe characters. + An optional trailing pipe character is ignored. Note that literal pipe characters need to be + escaped *except* if they occur in code spans or HTML `` elements! + + Header rows, footer rows and normal rows are all done using these table rows. Table cells can only + contain a single line of text, no multi-line text is supported. The text of a table cell is parsed + as span-level elements. + + Here are some example table rows: + + | First cell|Second cell|Third cell + | First | Second | Third | + + First | Second | | Fourth | + +* *Separator lines* are used to split the table body into multiple body parts. + + A separator line is any line that contains only pipes, dashes, pluses, colons and spaces/tabs and + which contains at least one dash and one pipe character. The pipe and plus characters can be used + to visually separate columns although this is not needed. Multiple separator lines after another + are treated as one separator line. + + Here are some example separator lines: + + |----+----| + +----|----+ + |---------| + |- + | :-----: | + -|- + +* The first separator line after at least one table row is treated specially, namely as *header + separator line*. It is used to demarcate header rows from normal table rows and/or to set column + alignments. All table rows above the header separator line are considered to be header rows. + + The header separator line can be specially formatted to contain column alignment definitions: An + alignment definition consists of an optional space/tab followed by an optional colon, one or more + dashes, an optional colon and another optional space/tab. The colons of an alignment definition + are used to set the alignment of a column: if there are no colons, the column uses the default + alignment, if there is a colon only before the dashes, the column is left aligned, if there are + colons before and after the dashes, the column is center aligned and if there is only a colon + after the dashes, the column is right aligned. Each alignment definition sets the alignment for + one column, the first alignment definition for the first column, the second alignment definition + for the second column and so on. + + Here are some example header separator lines with alignment definitions: + + |---+---+---| + + :-: |:------| ---:| + | :-: :- -: - + :-: | :- + +* A *footer separator line* is used to demarcate footer rows from normal table rows. All table rows + below the footer separator line are considered to be footer rows. + + A footer separator line is like a normal separator line except that dashes are replaced by equal + signs. A footer separator line may only appear once in a table. If multiple footer separator lines + are used in one table, only the last is treated as footer separator line, all others are treated + as normal separator lines. Normal separator lines that are used after the footer separator line + are ignored. + + Here are some example footer separator lines: + + |====+====| + +====|====+ + |=========| + |= + +Trailing spaces or tabs are ignored in all cases. To simplify table creation and maintenance, +header, footer and normal separator lines need not specify the same number of columns as table rows; +even `|-` and `|=` are a valid separators. + +Given the above components, a table is specified by + +* an optional separator line, +* optionally followed by zero, one or more table rows followed by a header separator line, +* one or more table rows, optionally interspersed with separator lines, +* optionally followed by a footer separator line and zero, one or more table rows and +* an optional trailing separator line. + +Also note + +* that the first line of a table must not have more than three spaces of indentation before the + first non-space character, +* that each line of a table needs to have at least one not escaped pipe character so that kramdown + recognizes it as a line belonging to the table and +* that tables have to start and end on [block boundaries](#block-boundaries)! + +> The table syntax differs from the one used in [PHP Markdown Extra] as follows: +> +> * kramdown tables do not need to have a table header. +> * kramdown tables can be structured using separator lines. +> * kramdown tables can contain a table footer. +> * kramdown tables need to be separated from other block-level elements. +{: .markdown-difference} + +Here is an example for a kramdown table with a table header row, two table bodies and a table footer +row: + + |-----------------+------------+-----------------+----------------| + | Default aligned |Left aligned| Center aligned | Right aligned | + |-----------------|:-----------|:---------------:|---------------:| + | First body part |Second cell | Third cell | fourth cell | + | Second line |foo | **strong** | baz | + | Third line |quux | baz | bar | + |-----------------+------------+-----------------+----------------| + | Second body | | | | + | 2 line | | | | + |=================+============+=================+================| + | Footer row | | | | + |-----------------+------------+-----------------+----------------| + +The above example table is rather time-consuming to create without the help of an ASCII table +editor. However, the table syntax is flexible and the above table could also be written like this: + + |--- + | Default aligned | Left aligned | Center aligned | Right aligned + |-|:-|:-:|-: + | First body part | Second cell | Third cell | fourth cell + | Second line |foo | **strong** | baz + | Third line |quux | baz | bar + |--- + | Second body + | 2 line + |=== + | Footer row + + +## Horizontal Rules + +A horizontal rule for visually separating content is created by using three or more asterisks, +dashes or underscores (these may not be mixed on a line), optionally separated by spaces or tabs, on +an otherwise blank line. The first asterisk, dash or underscore may optionally be indented up to +three spaces. The following examples show different possibilities to create a horizontal rule: + + * * * + + --- + + _ _ _ _ + + --------------- + + +## Math Blocks + +> This syntax feature is not part of the original Markdown syntax. The idea comes from the [Maruku] +> and [Pandoc] packages. +{: .markdown-difference} + +kramdown has built-in support for block and span-level mathematics written in LaTeX. + +A math block needs to start and end on [block boundaries](#block-boundaries). It is started using +two dollar signs, optionally indented up to three spaces. The math block continues until the next +two dollar signs (which may be on the same line or on one of the next lines) that appear at the end +of a line, i.e. they may only be followed by whitespace characters. The content of a math block has +to be valid LaTeX math. It is always wrapped inside a `\begin{displaymath}...\end{displaymath}` +enviroment except if it begins with a `\begin` statement. + +The following kramdown fragment + + $$ + \begin{align*} + & \phi(x,y) = \phi \left(\sum_{i=1}^n x_ie_i, \sum_{j=1}^n y_je_j \right) + = \sum_{i=1}^n \sum_{j=1}^n x_i y_j \phi(e_i, e_j) = \\ + & (x_1, \ldots, x_n) \left( \begin{array}{ccc} + \phi(e_1, e_1) & \cdots & \phi(e_1, e_n) \\ + \vdots & \ddots & \vdots \\ + \phi(e_n, e_1) & \cdots & \phi(e_n, e_n) + \end{array} \right) + \left( \begin{array}{c} + y_1 \\ + \vdots \\ + y_n + \end{array} \right) + \end{align*} + $$ + +renders (using Javascript library [MathJax](http://www.mathjax.org/)) as + +$$ +\begin{align*} + & \phi(x,y) = \phi \left(\sum_{i=1}^n x_ie_i, \sum_{j=1}^n y_je_j \right) + = \sum_{i=1}^n \sum_{j=1}^n x_i y_j \phi(e_i, e_j) = \\ + & (x_1, \ldots, x_n) \left( \begin{array}{ccc} + \phi(e_1, e_1) & \cdots & \phi(e_1, e_n) \\ + \vdots & \ddots & \vdots \\ + \phi(e_n, e_1) & \cdots & \phi(e_n, e_n) + \end{array} \right) + \left( \begin{array}{c} + y_1 \\ + \vdots \\ + y_n + \end{array} \right) +\end{align*} +$$ + +Using inline math is also easy: just surround your math content with two dollar signs, like with a +math block. If you don't want to start an inline math statement, just escape the dollar signs and +they will be treated as simple dollar signs. + +> **Note** that LaTeX code that uses the pipe symbol `|` in inline math statements may lead to a +> line being recognized as a table line. This problem can be avoided by using the `\vert` command +> instead of `|`! +{:.information} + +If you have a paragraph that looks like a math block but should actually be a paragraph with just an +inline math statement, you need to escape the first dollar sign: + + The following is a math block: + + $$ 5 + 5 $$ + + But next comes a paragraph with an inline math statement: + + \$$ 5 + 5 $$ + +If you don't even want the inline math statement, escape the first two dollar signs: + + \$\$ 5 + 5 $$ + +## HTML Blocks + +> The original Markdown syntax specifies that an HTML block must start at the left margin, i.e. no +> indentation is allowed. Also, the HTML block has to be surrounded by blank lines. Both +> restrictions are lifted for kramdown documents. Additionally, the original syntax does not allow +> you to use Markdown syntax in HTML blocks which is allowed with kramdown. +{: .markdown-difference} + +An HTML block is potentially started if a line is encountered that begins with a non-span-level HTML +tag or a general XML tag (opening or closing) which may be indented up to three spaces. + +The following HTML tags count as span-level HTML tags and *won't* start an HTML block if found at +the beginning of an HTML block line: + + a abbr acronym b big bdo br button cite code del dfn em i img input + ins kbd label option q rb rbc rp rt rtc ruby samp select small span + strong sub sup textarea tt var + +Further parsing of a found start tag depends on the tag and in which of three possible ways its +content is parsed: + +* Parse as raw HTML block: If the HTML/XML tag content should be handled as raw HTML, then only + HTML/XML tags are parsed from this point onwards and text is handled as raw, unparsed text until + the matching end tag is found or until the end of the document. Each found tag will be parsed as + raw HTML again. However, if a tag has a `markdown` attribute, this attribute controls parsing of + this one tag (see below). + + Note that the parser basically supports only correct XHTML! However, there are some exceptions. + For example, attributes without values (i.e. boolean attributes) are also supported and elements + without content like `
                ` can be written as `
                `. If an invalid closing tag is found, it is + ignored. + +* Parse as block-level elements: If the HTML/XML tag content should be parsed as text containing + block-level elements, the remaining text on the line will be parsed by the block-level parser as + if it appears on a separate line (**Caution**: This also means that if the line consists of the + start tag, text and the end tag, the end tag will not be found!). All following lines are parsed + as block-level elements until an HTML block line with the matching end tag is found or until the + end of the document. + +* Parse as span-level elements: If the HTML/XML tag content should be parsed as text containing span + level elements, then all text until the *next* matching end tag or until the end of the document + will be the content of the tag and will later be parsed by the span-level parser. This also means + that if the matching end tag is inside what appears to be a code span, it is still used! + +If there is text after an end tag, it will be parsed as if it appears on a separate line except when +inside a raw HTML block. + +Also, if an invalid closing tag is found, it is ignored. + +Note that all HTML tag and attribute names are converted to lowercase! + +By default, kramdown parses all block HTML tags and all XML tags as raw HTML blocks. However, this +can be configured with the `parse_block_html`. If this is set to `true`, then syntax parsing in HTML +blocks is globally enabled. It is also possible to enable/disable syntax parsing on a tag per tag +basis using the `markdown` attribute: + +* If an HTML tag has an attribute `markdown="0"`, then the tag is parsed as raw HTML block. + +* If an HTML tag has an attribute `markdown="1"`, then the default mechanism for parsing syntax in + this tag is used. + +* If an HTML tag has an attribute `markdown="block"`, then the content of the tag is parsed as block + level elements. + +* If an HTML tag has an attribute `markdown="span"`, then the content of the tag is parsed as span + level elements. + +The following list shows which HTML tags are parsed in which mode by default when `markdown="1"` is +applied or `parse_block_html` is `true`: + +Parse as raw HTML +: + script style math option textarea pre code kbd samp var + + Also, all general XML tags are parsed as raw HTML blocks. + +Parse as block-level elements +: + applet button blockquote body colgroup dd div dl fieldset form iframe li + map noscript object ol table tbody thead tfoot tr td ul + +Parse as span-level elements +: + a abbr acronym address b bdo big cite caption code del dfn dt em + h1 h2 h3 h4 h5 h6 i ins kbd label legend optgroup p pre q rb rbc + rp rt rtc ruby samp select small span strong sub sup th tt var + +> Remember that all span-level HTML tags like `a` or `b` do not start a HTML block! However, the +> above lists also include span-level HTML tags in the case the `markdown` attribute is used on a +> tag inside a raw HTML block. + +Here is a simple example input and its HTML output with `parse_block_html` set to `false`: + + This is a para. +
                + Something in here. +
                + Other para. +^ +

                This is a para.

                +
                + Something in here. +
                +

                Other para.

                + +As one can see the content of the `div` tag will be parsed as raw HTML block and left alone. +However, if the `markdown="1"` attribute was used on the `div` tag, the content would be parsed as +block-level elements and therefore converted to a paragraph. + +You can also use several HTML tags at once: + +
                + This is some text in the `layer1` div. +
                + This is some text in the `layers` div. +
                + This is a para outside the HTML block. + +However, remember that if the content of a tag is parsed as block-level elements, the content that +appears after a start/end tag but on the same line, is processed as if it appears on a new line: + +
                This is the first part of a para, + which is continued here. +
                + +

                This works without problems because it is parsed as + span-level elements

                + +
                The end tag is not found because + this line is parsed as a paragraph
                + +Since setting `parse_block_html` to `true` can lead to some not wanted behaviour, it is generally +better to selectively enable or disable block/span-level elements parsing by using the `markdown` +attribute! + +Unclosed block-level HTML tags are correctly closed at the end of the document to ensure correct +nesting and invalidly used end tags are removed from the output: + + This is a para. +
                + Another para. +

                +^ +

                This is a para.

                +
                +

                Another para.

                +
                + +The parsing of processing instructions and XML comments is also supported. The content of both, PIs +and XML comments, may span multiple lines. The start of a PI/XML comment may only appear at the +beginning of a line, optionally indented up to three spaces. If there is text after the end of a PI +or XML comment, it will be parsed as if it appears on a separate line. kramdown syntax in PIs/XML +comments is not processed: + + This is a para. + + First part of para, + continues here. + + + +# Text Markup + +These elements are all span-level elements and used inside block-level elements to markup text +fragments. For example, one can easily create links or apply emphasis to certain text parts. + +Note that empty span-level elements are not converted to empty HTML tags but are copied as-is to the +output. + + + +## Links and Images + +Three types of links are supported: automatic links, inline links and reference links. + +### Automatic Links + +This is the easiest one to create: Just surround a web address or an email address with angle +brackets and the address will be turned into a proper link. The address will be used as link target +and as link text. For example: + + Information can be found on the homepage. + You can also mail me: + +It is not possible to specify a different link text using automatic links -- use the other link +types for this! + + +### Inline Links + +As the wording suggests, inline links provide all information inline in the text flow. Reference +style links only provide the link text in the text flow and everything else is defined +elsewhere. This also allows you to reuse link definitions. + +An inline style link can be created by surrounding the link text with square brackets, followed +immediately by the link URL (and an optional title in single or double quotes preceded by at least +one space) in normal parentheses. For example: + + This is [a link](http://rubyforge.org) to a page. + A [link](../test "local URI") can also have a title. + And [spaces](link with spaces.html)! + +Notes: + +* The link text is treated like normal span-level text and therefore is parsed and converted. + However, if you use square brackets within the link text, you have to either properly nest them or + to escape them. It is not possible to create nested links! + + The link text may also be omitted, e.g. for creating link anchors. + +* The link URL has to contain properly nested parentheses if no title is specified, or the link URL + must be contained in angle brackets (incorrectly nested parentheses are allowed). + +* The link title may not contain its delimiters and may not be empty. + +* Additional link attributes can be added by using a [span IAL](#span-ials) after the inline link, + for example: + + This is a [link](http://example.com){:hreflang="de"} + +### Reference Links + +To create a reference style link, you need to surround the link text with square brackets (as with +inline links), followed by optional spaces/tabs/line breaks and then optionally followed with +another set of square brackets with the link identifier in them. A link identifier may not contain a +closing bracket and, when specified in a link definition, newline characters; it is also not case +sensitive, line breaks and tabs are converted to spaces and multiple spaces are compressed into one. +For example: + + This is a [reference style link][linkid] to a page. And [this] + [linkid] is also a link. As is [this][] and [THIS]. + +If you don't specify a link identifier (i.e. only use empty square brackets) or completely omit the +second pair of square brackets, the link text is converted to a valid link identifier by removing +all invalid characters and inserting spaces for line breaks. If there is a link definition found for +the link identifier, a link will be created. Otherwise the text is not converted to a link. + +As with inline links, additional link attributes can be added by using a [span IAL](#span-ials) +after the reference link. + +### Link Definitions + +The link definition can be put anywhere in the document. It does not appear in the output. A link +definition looks like this: + + [linkid]: http://www.example.com/ "Optional Title" + +> Link definitions are, despite being described here, non-content block-level elements. +{: .information} + +The link definition has the following structure: + +* The link identifier in square brackets, optionally indented up to three spaces, +* then a colon and one or more optional spaces/tabs, +* then the link URL which must contain at least one non-space character, or a left angle bracket, + the link URL and a right angle bracket, +* then optionally the title in single or double quotes, separated from the link URL by one or more + spaces or on the next line by itself indented any number of spaces/tabs. + +> The original Markdown syntax also allowed the title to be specified in parenthesis. This is not +> allowed for consistency with the inline title. +{: .markdown-difference} + +If you have some text that looks like a link definition but should really be a link and some text, +you can escape the colon after the link identifier: + + The next paragraph contains a link and some text. + + [Room 100]\: There you should find everything you need! + + [Room 100]: link_to_room_100.html + +Although link definitions are non-content block-level elements, [block IALs](#block-ials) can be +used on them to specify additional attributes for the links: + + [linkid]: http://example.com + {:hreflang="de"} + +### Images + +Images can be specified via a syntax that is similar to the one used by links. The difference is +that you have to use an exclamation mark before the first square bracket and that the link text of a +normal link becomes the alternative text of the image link. As with normal links, image links can be +written inline or reference style. For example: + + Here comes a ![smiley](../images/smiley.png)! And here + ![too](../images/other.png 'Title text'). Or ![here]. + With empty alt text ![](see.jpg) + +The link definition for images is exactly the same as the link definition for normal links. Since +additional attributes can be added via span and block IALs, it is possible, for example, to specify +image width and height: + + Here is an inline ![smiley](smiley.png){:height="36px" width="36px"}. + + And here is a referenced ![smile] + + [smile]: smile.png + {: height="36px" width="36px"} + +## Emphasis + +kramdown supports two types of emphasis: light and strong emphasis. Text parts that are surrounded +with single asterisks `*` or underscores `_` are treated as text with light emphasis, text parts +surrounded with two asterisks or underscores are treated as text with strong emphasis. Surrounded +means that the starting delimiter must not be followed by a space and that the stopping delimiter +must not be preceded by a space. + +Here is an example for text with light and strong emphasis: + + *some text* + _some text_ + **some text** + __some text__ + +The asterisk form is also allowed within a single word: + + This is un*believe*able! This d_oe_s not work! + +Text can be marked up with both light and strong emphasis, possibly using different delimiters. +However, it is not possible to nest strong within strong or light within light emphasized text: + + This is a ***text with light and strong emphasis***. + This **is _emphasized_ as well**. + This *does _not_ work*. + This **does __not__ work either**. + +If one or two asterisks or underscores are surrounded by spaces, they are treated literally. If you +want to force the literal meaning of an asterisk or an underscore you can backslash-escape it: + + This is a * literal asterisk. + These are ** two literal asterisk. + As \*are\* these! + + +## Code Spans + +This is the span-level equivalent of the [code block](#code-blocks) element. You can markup a text +part as code span by surrounding it with backticks `` ` ``. For example: + + Use `` tags for this. + +Note that all special characters in a code span are treated correctly. For example, when a code span +is converted to HTML, the characters `<`, `>` and `&` are substituted by their respective HTML +counterparts. + +To include a literal backtick in a code span, you need to use two or more backticks as delimiters. +You can insert one optional space after the starting and before the ending delimiter (these spaces +are not used in the output). For example: + + Here is a literal `` ` `` backtick. + And here is `` `some` `` text (note the two spaces so that one is left + in the output!). + +A single backtick surrounded by spaces is treated as literal backtick. If you want to force the +literal meaning of a backtick you can backslash-escape it: + + This is a ` literal backtick. + As \`are\` these! + +As with [code blocks](#language-of-code-blocks) you can set the language of a code span by using an +[IAL](#inline-attribute-lists): + + This is a Ruby code fragment `x = Class.new`{:.language-ruby} + + +## HTML Spans + +HTML tags cannot only be used on the block-level but also on the span-level. Span-level HTML tags +can only be used inside one block-level element, it is not possible to use a start tag in one block +level element and the end tag in another. Note that only correct XHTML is supported! This means that +you have to use, for example, `
                ` instead of `
                ` (although kramdown tries to fix such errors +if possible). + +By default, kramdown parses kramdown syntax inside span HTML tags. However, this behaviour can be +configured with the `parse_span_html` option. If this is set to `true`, then syntax parsing in HTML +spans is enabled, if it is set to `false`, parsing is disabled. It is also possible to +enable/disable syntax parsing on a tag per tag basis using the `markdown` attribute: + +* If an HTML tag has an attribute `markdown="0"`, then no parsing (except parsing of HTML span tags) + is done inside that HTML tag. + +* If an HTML tag has an attribute `markdown="1"`, then the content of the tag is parsed as span + level elements. + +* If an HTML tag has an attribute `markdown="block"`, then a warning is issued because HTML spans + cannot contain block-level elements and the attribute is ignored. + +* If an HTML tag has an attribute `markdown="span"`, then the content of the tag is parsed as span + level elements. + +The content of a span-level HTML tag is normally parsed as span-level elements. Note, however, that +some tags like `

                + + + + +

                parsed +This too +

                + + + + + + + + + +

                http://example.com

                + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.htmlinput b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.htmlinput new file mode 100644 index 0000000000..22b9ea5c1b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.htmlinput @@ -0,0 +1,34 @@ +

                baz { |qux| quux }

                + +

                This is some para. +

                + + + + +

                parsed +This too +

                + + + + + + + + + +

                http://example.com

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.options new file mode 100644 index 0000000000..a660da25c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.options @@ -0,0 +1 @@ +:parse_block_html: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.text new file mode 100644 index 0000000000..e0617c4169 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_raw.text @@ -0,0 +1,33 @@ +

                baz { |qux| quux }

                + +This is some para. + + + + +

                *parsed* +This too +

                + + + + + + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.html new file mode 100644 index 0000000000..2a6191fb48 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.html @@ -0,0 +1,12 @@ +

                This text +should be parsed +as span +

                + +

                This produces `

                +

                ` an unwanted result.</p>

                + +

                This text too

                +

                +some text +

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.htmlinput b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.htmlinput new file mode 100644 index 0000000000..4199b8b2f3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.htmlinput @@ -0,0 +1,12 @@ +

                This text +should be parsed +as span +

                + +

                This produces `

                +

                ` an unwanted result.</p>

                + +

                This text too

                +

                +some text +

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.options new file mode 100644 index 0000000000..a660da25c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.options @@ -0,0 +1 @@ +:parse_block_html: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.text new file mode 100644 index 0000000000..d07cf6d883 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_as_span.text @@ -0,0 +1,9 @@ +

                This *text +should* be parsed +as span +

                + +

                This produces `

                ` an unwanted result.

                + +

                This *text* too

                +some text diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.html new file mode 100644 index 0000000000..8de78c049b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.html @@ -0,0 +1,21 @@ +

                +

                test

                +
                + +
                +
                test
                +
                +
                +
                test
                +
                +
                +
                + +
                +
                code block with </div>
                +
                +
                + +
                +

                No matching end tag

                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.options new file mode 100644 index 0000000000..a660da25c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.options @@ -0,0 +1 @@ +:parse_block_html: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.text new file mode 100644 index 0000000000..b8b18453e8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/parse_block_html.text @@ -0,0 +1,17 @@ +
                + test +
                + +
                + test +
                + test +
                +
                + +
                + code block with
                +
                + +
                +No matching end tag diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.html new file mode 100644 index 0000000000..b292a058ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.html @@ -0,0 +1,13 @@ + + +

                para

                + + +

                para

                + +

                other

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.text new file mode 100644 index 0000000000..fcb866ffa0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/processing_instruction.text @@ -0,0 +1,12 @@ + + +para + + para + +other + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html new file mode 100644 index 0000000000..28361560d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html @@ -0,0 +1,60 @@ +
                +

                test

                +
                + +

                +para2 +

                + +
                +

                tes

                + +

                test +weiter +

                +
                + +

                para4

                + +
                +
                +
                +

                foo

                +
                +
                +
                +
                +

                bar 

                +
                +
                + +

                para5

                + +
                +

                id

                +
                +

                test

                + +
                +

                hallo

                +
                +
                +

                hallo

                +
                + +

                para6

                + +
                +
                +

                Another para.

                +
                + +

                Test

                + +

                Test

                + +

                Test + +

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html.19 new file mode 100644 index 0000000000..0d926c5d32 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.html.19 @@ -0,0 +1,60 @@ +
                +

                test

                +
                + +

                +para2 +

                + +
                +

                tes

                + +

                test +weiter +

                +
                + +

                para4

                + +
                +
                +
                +

                foo

                +
                +
                +
                +
                +

                bar 

                +
                +
                + +

                para5

                + +
                +

                id

                +
                +

                test

                + +
                +

                hallo

                +
                +
                +

                hallo

                +
                + +

                para6

                + +
                +
                +

                Another para.

                +
                + +

                Test

                + +

                Test

                + +

                Test + +

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.options new file mode 100644 index 0000000000..a660da25c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.options @@ -0,0 +1 @@ +:parse_block_html: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.text new file mode 100644 index 0000000000..a2ffe25ebd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/simple.text @@ -0,0 +1,55 @@ +
                +test +
                + +

                +para2 +

                + +
                +

                tes

                + +

                test +weiter +

                +
                + +para4 + +
                +
                +
                +foo +
                +
                +
                +
                bar  +
                +
                + +para5 + +
                id +
                test + +
                +hallo +
                +hallo +
                + +para6 + +
                +Another para. +
                + +Test + +

                Test

                + +

                Test + +

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.html new file mode 100644 index 0000000000..6f5693edea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.html @@ -0,0 +1,8 @@ +

                This is a

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.text new file mode 100644 index 0000000000..a240f5c48c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/textarea.text @@ -0,0 +1,8 @@ +This is a + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.html new file mode 100644 index 0000000000..d941bc098f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.html @@ -0,0 +1,8 @@ + + +doit + +doit + +doit</some> + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.text new file mode 100644 index 0000000000..6427fae321 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/09_html/xml.text @@ -0,0 +1,7 @@ + + +doit + +doit + +doit diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.html new file mode 100644 index 0000000000..74b03d58f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.html @@ -0,0 +1,2 @@ +

                Some paragraph

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.text new file mode 100644 index 0000000000..f58768a37f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/10_ald/simple.text @@ -0,0 +1,8 @@ +Some paragraph + +{:id: ref1} +{:id: .class1} + {:id: #id} + {:id: key="value"} + {:id: .class2 .class3 ref2 #id-with key="value" key='value' key='dfsd\}' } +{:test: k ey=value} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.html new file mode 100644 index 0000000000..9857a0380f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.html @@ -0,0 +1 @@ +

                A header

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.options new file mode 100644 index 0000000000..8776b5524d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.options @@ -0,0 +1 @@ +:auto_ids: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.text new file mode 100644 index 0000000000..f521fb0fc2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/auto_id_and_ial.text @@ -0,0 +1,2 @@ +## A header +{:#myid .cls} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.html new file mode 100644 index 0000000000..84cc368d30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.html @@ -0,0 +1,11 @@ +
                +test +
                + +
                +

                test

                +
                + +
                +

                para

                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.text new file mode 100644 index 0000000000..827645cc92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/nested.text @@ -0,0 +1,15 @@ +{:.cls} +
                +test +
                +{:#id} + +{:.cls} +
                +test +
                +{:#id} + +{:.cls} +> para +{:#id} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.html new file mode 100644 index 0000000000..1086f0cfc1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.html @@ -0,0 +1,29 @@ +

                Some paragraph.

                + +

                Some paragraph.

                + +
                +

                quote

                +
                + +
                  +
                • list
                • +
                + +
                code block
                +
                + +
                other code block
                +
                + +

                A header

                + +

                Some paragraph here

                + +

                Some paragraph here

                + +

                Paragraph

                +

                Paragraph

                + +

                Another header

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.text new file mode 100644 index 0000000000..b97eef3fbd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/11_ial/simple.text @@ -0,0 +1,41 @@ +Some paragraph. +{:.class .-class id key="val"} + +Some paragraph. +{:.cls1#id.cls2} + +> quote +{: #id} + {: .class} + +* list +{: key="val"} + + code block +{: #other} + + other code block + +## A header +{:#myid} + +{:.cls} +Some paragraph here + +{:.cls1} +{:.cls2} +Some paragraph here + +Paragraph +{:.cls} +Paragraph + +Another header +============== +{: .class #other} + +{:id: #id key="valo"} +{:id: #other .myclass other} +{:other: key1="val\"" - ig.nored as_is#this key2='val\'' .other-class} + +{:.invalid} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.html new file mode 100644 index 0000000000..20b4c662c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.html @@ -0,0 +1,8 @@ +

                This is a simple paragraph.

                + + + +

                And another paragraph

                + +

                {::comment} +Another paragraph

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.text new file mode 100644 index 0000000000..2dfc919712 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/comment.text @@ -0,0 +1,12 @@ +This is a simple paragraph. + +{::comment} +This is a comment {:/}which is {:/comment} ignored. +{:/comment} + +And another paragraph + +{::comment this='is' .ignore /} + +{::comment} +Another paragraph diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.html new file mode 100644 index 0000000000..17aae5cd5a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.html @@ -0,0 +1,8 @@ +

                paragraph

                + +

                {::something} +anotherthing +{:/something}

                + +

                {::something/} +paragraph

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.text new file mode 100644 index 0000000000..ae94a8fe36 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/ignored.text @@ -0,0 +1,8 @@ +paragraph + +{::something} +anotherthing +{:/something} + +{::something/} +paragraph diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.html new file mode 100644 index 0000000000..7fe58d504a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.html @@ -0,0 +1,10 @@ +

                This is a simple paragraph.

                + +This *is* not processed + +

                And another paragraph

                + +bold + +

                {::nomarkdown} +Another paragraph

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.kramdown b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.kramdown new file mode 100644 index 0000000000..2cee512260 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.kramdown @@ -0,0 +1,20 @@ +This is a simple paragraph. + +{::nomarkdown} +This *is* not processed +{:/} + +And another paragraph + +{::nomarkdown type="html"} +bold +{:/} + +{::nomarkdown type="latex"} +\begin{itemize} +\item[Yes] YESSSS! +\end{itemize} +{:/} + +\{::nomarkdown} Another paragraph + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.latex new file mode 100644 index 0000000000..5af0263cdc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.latex @@ -0,0 +1,13 @@ +This is a simple paragraph. + +This *is* not processed + +And another paragraph + +\begin{itemize} +\item[Yes] YESSSS! +\end{itemize} + +\{::nomarkdown\} +Another paragraph + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.text new file mode 100644 index 0000000000..43d441dfce --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/nomarkdown.text @@ -0,0 +1,21 @@ +This is a simple paragraph. + +{::nomarkdown} +This *is* not processed + {:/nomarkdown} + +And another paragraph + +{::nomarkdown this='is' .ignore /} + +{::nomarkdown type='html'} +bold +{:/} +{::nomarkdown type="latex"} +\begin{itemize} +\item[Yes] YESSSS! +\end{itemize} +{:/} + +{::nomarkdown} +Another paragraph diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.html new file mode 100644 index 0000000000..d3567ecbe2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.html @@ -0,0 +1,21 @@ +

                No header id

                + +

                without header id

                + +
                +some *para* +
                + +
                +

                some para

                +
                + +

                Some text10.

                + +
                +
                  +
                1. +

                  Some text. 

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.text new file mode 100644 index 0000000000..5991ab7b94 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options.text @@ -0,0 +1,21 @@ +# No header id + +{::options unusedvar="val" /} + +# without header id + +
                +some *para* +
                + +{::options parse_block_html="true" parse_span_html="true" /} + +
                +some *para* +
                + +{::options footnote_nr="10" /} + +Some text[^ab]. + +[^ab]: Some text. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.html new file mode 100644 index 0000000000..203d6eb00b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.html @@ -0,0 +1,10 @@ + +

                Some text1.

                + +
                +
                  +
                1. +

                  Some text. 

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.text new file mode 100644 index 0000000000..78abfbeeac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options2.text @@ -0,0 +1,5 @@ +{::options footnote_nr="da10" /} + +Some text[^ab]. + +[^ab]: Some text. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.html new file mode 100644 index 0000000000..7434df6f06 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.html @@ -0,0 +1,7 @@ +
                x = Class.new + +
                + +
                x = Class.new + +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.text new file mode 100644 index 0000000000..e0ee87c5fd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/12_extension/options3.text @@ -0,0 +1,7 @@ + x = Class.new +{: .language-ruby} + +{::options coderay_wrap="span" coderay_line_numbers="" coderay_css="class" coderay_tab_width="4" /} + + x = Class.new +{: .language-ruby} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.html new file mode 100644 index 0000000000..398628ab60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.html @@ -0,0 +1,15 @@ +
                +
                item
                +
                def
                +
                item2
                +
                def
                +
                + +
                +
                item
                +
                def
                +
                item2
                +
                def
                +
                item3
                +
                def
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.text new file mode 100644 index 0000000000..f1797a746f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/auto_ids.text @@ -0,0 +1,18 @@ +{:auto_ids} +item +: def + +item2 +: def + +^ + +{:auto_ids-prefix-} +item +: def + +item2 +: def + +{:#id} item3 +: def diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.html new file mode 100644 index 0000000000..7c5cc04831 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.html @@ -0,0 +1 @@ +

                : no definition

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.text new file mode 100644 index 0000000000..cd3671b9e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/definition_at_beginning.text @@ -0,0 +1 @@ +: no definition diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.html new file mode 100644 index 0000000000..3090b1ef13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.html @@ -0,0 +1,4 @@ +
                +
                item
                +
                definition
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.text new file mode 100644 index 0000000000..587c3b07bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/deflist_ial.text @@ -0,0 +1,4 @@ +{:.dl-horizontal} +item +: definition +{:.dl-other} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.html new file mode 100644 index 0000000000..0ed1197f8e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.html @@ -0,0 +1,17 @@ +
                +
                item
                +
                definition +continued
                +
                another {:.cls}
                +
                +
                code
                +
                +
                +
                IAL at last + no code bc of text
                +
                term
                +
                definition
                +
                term1
                +
                term2
                +
                definition
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.text new file mode 100644 index 0000000000..2058d7497b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/item_ial.text @@ -0,0 +1,16 @@ +item +: {:.cls} definition + continued +: another {:.cls} +: {:.class} + code +: {:.cls} IAL at last + no code bc of text + + +{:.class} term +: definition + +{:.class1} term1 +{:.class2} term2 +: definition diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.html new file mode 100644 index 0000000000..e2e089b37d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.html @@ -0,0 +1,13 @@ +
                +
                kram
                +
                down
                +
                now
                +
                definition 1
                +
                definition 2
                +
                +

                definition 3

                +
                +
                +

                definition 4

                +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.text new file mode 100644 index 0000000000..b834258b7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/multiple_terms.text @@ -0,0 +1,10 @@ +kram +*down* +now +: definition 1 +: definition 2 + +: definition 3 + + +: definition 4 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.html new file mode 100644 index 0000000000..c16f962381 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.html @@ -0,0 +1,2 @@ +

                This is a para +: and not a definition list

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.text new file mode 100644 index 0000000000..98b52b3744 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/no_def_list.text @@ -0,0 +1,2 @@ +This is a para +\: and not a definition list diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.html new file mode 100644 index 0000000000..5f28fdf8a2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.html @@ -0,0 +1,10 @@ +
                +
                term
                +
                +

                definition

                +
                +
                definition
                +
                +

                definition

                +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.text new file mode 100644 index 0000000000..280fa4746c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/para_wrapping.text @@ -0,0 +1,6 @@ +term + +: definition +: definition + +: definition diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.html new file mode 100644 index 0000000000..0a1c4dc2b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.html @@ -0,0 +1,8 @@ +
                +
                kram
                +
                down
                +
                +
                +
                kram
                +
                down
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.text new file mode 100644 index 0000000000..56fedf16a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/separated_by_eob.text @@ -0,0 +1,5 @@ +kram +: down +^ +kram +: down diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.html new file mode 100644 index 0000000000..791f14515a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.html @@ -0,0 +1,10 @@ +
                +
                kram
                +
                down
                +
                novalue
                +
                +
                kram
                +
                down +kram
                +
                down
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.text new file mode 100644 index 0000000000..e3bf730eb0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/simple.text @@ -0,0 +1,10 @@ +kram +: down + +novalue +: + +kram +: down +kram +: down diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.html new file mode 100644 index 0000000000..cf7d7859a0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.html @@ -0,0 +1,4 @@ +
                +
                kram
                +
                down
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.text new file mode 100644 index 0000000000..76eb3553f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/styled_terms.text @@ -0,0 +1,2 @@ +*kram* +: down diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.html new file mode 100644 index 0000000000..b4df878077 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.html @@ -0,0 +1,3 @@ +

                para

                + +

                : no definition

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.text new file mode 100644 index 0000000000..30ab445c8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/too_much_space.text @@ -0,0 +1,4 @@ +para + + +: no definition diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.html new file mode 100644 index 0000000000..45b58656ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.html @@ -0,0 +1,38 @@ +
                +
                kram
                +
                this is some +text
                +
                +

                this is some +more text

                +
                +
                kram
                +
                +
                +

                blockquote

                +
                +
                +
                kram
                +
                +
                code
                +
                +
                +
                kram
                +
                +
                +
                kram
                +
                down
                +
                +
                +
                kram
                +
                +

                header

                +
                +
                kram
                +
                +
                  +
                • list
                • +
                • items
                • +
                +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.text new file mode 100644 index 0000000000..15195ce3f3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/13_definition_list/with_blocks.text @@ -0,0 +1,24 @@ +kram +: this is some + text + + : this is some + more text + +kram +: > blockquote + +kram +: + code + +kram +: kram + : down + +kram +: # header + +kram +: * list + * items diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.html new file mode 100644 index 0000000000..af9b3e5f5a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.html @@ -0,0 +1,8 @@ + + + + + + + +
                first line of cell
                second line of cell
                another cell
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.options new file mode 100644 index 0000000000..63936b9955 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.options @@ -0,0 +1 @@ +:html_to_native: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.text new file mode 100644 index 0000000000..60fec0b40a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/empty_tag_in_cell.text @@ -0,0 +1 @@ +| first line of cell
                second line of cell | another cell | diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.html new file mode 100644 index 0000000000..302e97aedc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.html @@ -0,0 +1,12 @@ +

                No table body

                + +

                |-|-|-

                + +

                |no|table|here|

                + +

                |no|table|here| +paragraph

                + +

                |-|-| +|-|-|

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.text new file mode 100644 index 0000000000..3565d5b826 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/errors.text @@ -0,0 +1,13 @@ +No table body + +|-|-|- + +[5]: test +|no|table|here| + +|no|table|here| +paragraph + +|-|-| +|-|-| + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.html new file mode 100644 index 0000000000..b4528a17dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.html @@ -0,0 +1,52 @@ +

                cell 1 | cell 2

                + +

                cell 1 | cell 2

                + + + + + + + + +
                cell 1cell 2 | continued
                + + + + + + + + +
                cell 1cell 2
                + + + + + + + + +
                cell 1code | span
                + +

                cell 1 code | span

                + +

                cell 1 | code | span

                + + + + + + + + + + + + + + +
                cell 1cell `2cell 3
                cell 1`cell 2cell 3
                + +

                cell 1 | cell 2 | cell 3 +cell 1 | cell 2 | cell 3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.text new file mode 100644 index 0000000000..a8a24d6a30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/escaping.text @@ -0,0 +1,19 @@ +`cell 1 | cell 2` + +cell 1 \| cell 2 + +cell 1 | cell 2 \| continued + +cell 1 | cell `2` + +cell 1 | `code | span` + +cell 1 `code | span` + +cell 1 \| `code | span` + +cell 1 | cell `2 | cell 3 +cell 1` | cell 2 | cell 3 + +cell 1 \| cell `2 | cell 3 +cell 1` | cell 2 | cell 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.html new file mode 100644 index 0000000000..e6596ed5eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.html @@ -0,0 +1,65 @@ +

                Simple footer

                + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                + +

                Full footer

                + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                + +

                Footer with separator lines

                + + + + + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                cell5cell6
                + +

                Empty footer

                + + + + + + + + +
                cell1cell2
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.text new file mode 100644 index 0000000000..faaed8d9fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/footer.text @@ -0,0 +1,25 @@ +Simple footer + +| cell1 | cell2 +|= +| cell3 | cell4 + +Full footer + +| cell1 | cell2 +|=======|=======| +| cell3 | cell4 + +Footer with separator lines + +| cell1 | cell2 +|=======|=======| +| cell3 | cell4 +|--- +| cell5 | cell6 +|--- + +Empty footer + +| cell1 | cell2 +|= diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.html new file mode 100644 index 0000000000..647f2c48fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.html @@ -0,0 +1,117 @@ +

                Simple header

                + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                + +

                Full header

                + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                + +

                With alignment and superfluous alignment defs

                + + + + + + + + + + + + + + + + + + + + +
                defaultleftcenterrightdefault
                cell1cell2cell3cell4cell5
                + +

                With leading sep line

                + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                + +

                Multiple bodies

                + + + + + + + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                cell5cell6
                + +

                Sep line with tab

                + + + + + + + + + + + + + + + + + + +
                rightcenter
                cell1cell2
                cell3cell4
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.text new file mode 100644 index 0000000000..6961bfb9d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/header.text @@ -0,0 +1,39 @@ +Simple header + +| cell1 | cell2 +|----- +| cell3 | cell4 + +Full header + +| cell1 | cell2 +|-------|-------| +| cell3 | cell4 + +With alignment and superfluous alignment defs + +| default | left | center | right | default +|-| :- |:-: | -: | - | :-: | :- +| cell1 | cell2 | cell3 | cell4 | cell5 + +With leading sep line + +|:-:|-:| +| cell1 | cell2 +|-------|-------| +| cell3 | cell4 + +Multiple bodies + +| cell1 | cell2 ++ :-: | +| cell3 | cell4 +|----||| +| cell5 | cell6 + +Sep line with tab + +right | center +---: | :---: +cell1 | cell2 +cell3 | cell4 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.html new file mode 100644 index 0000000000..dce46b1d31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.html @@ -0,0 +1,3 @@ +

                No table

                + +

                | Some | thing | here

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.text new file mode 100644 index 0000000000..90f90b3d9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/no_table.text @@ -0,0 +1,3 @@ +No table + +\| Some \| thing \| here diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.html new file mode 100644 index 0000000000..506b442176 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + +
                cell1cell2
                cell3cell4
                cell5cell6 |
                cell7cell8
                + +

                Missing cells at end

                + + + + + + + + + + + + + + + + + + + +
                cell1cell2cell3
                cell1  
                 cell2cell3
                + +

                Escaped pipe characters

                + + + + + + + + + + + + + + + + +
                cell1 | cell1cell2
                cell1cell2 |
                cell1 | concell2
                + +

                Table with code elements

                + + + + + + + + + + + + + + + + +
                This is a span | with a pipe.   
                Some span</em> herea span | with apipe.
                + +

                Special cases regarding codespan syntax

                + + + + + + + + +
                ab
                + + + + + + + +
                a
                + + + + + + + + + +
                tablewithial
                + + + + + + + + + +
                tablewithial
                + +

                not starting with a bar

                + + + + + + + + +
                simpletable
                + + + + + + + + + + + + + + +
                head1head2
                cell1cell2
                + + + + + + + + + + + + + + +
                head1head2
                 cell2
                + + + + + + + + + + + + + + + + +
                ab
                cd
                ef
                + + + + + + + + + + + + + + +
                KeyValue type
                Type"GROUP"|"UNKNOWN"
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.text new file mode 100644 index 0000000000..0f225a4ee1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/simple.text @@ -0,0 +1,53 @@ +| cell1 | cell2 | +|cell3 | cell4| +|cell5|cell6 \| +| cell7|cell8 + +Missing cells at end + +| cell1 | cell2 | cell3 | +| cell1 || +|| cell2 | cell3 + +Escaped pipe characters + +| cell1 \| cell1 | cell2 | +| cell1 | cell2 \| +| cell1 `|` con | cell2 + +Table with code elements + +| This is a span | with a pipe. +| Some span | here | a span | with a | pipe. + +Special cases regarding codespan syntax + +|a|`b` + +|`a` + +{:.cls} +| table | with | ial + +| table | with | ial +{:.cls} + +not starting with a bar + +simple | table + +head1 | head2 +------|------ +cell1 | cell2 + + head1 | head2 +-------|------ + | cell2 + +| a | b | + c | d +| e | f | + +| Key | Value type | +|--------|------------------------| +| `Type` | `"GROUP"`\|`"UNKNOWN"` | diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.html new file mode 100644 index 0000000000..0bf6781760 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.html @@ -0,0 +1,25 @@ + + + + + + + + + + + +
                this is 1a table
                with afootnote
                + +
                +
                  +
                1. +

                  Something

                  + +
                  +

                  special here

                  +
                  +

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.latex new file mode 100644 index 0000000000..99b5312f33 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.latex @@ -0,0 +1,11 @@ +\begin{longtable}{|l|l|} +\hline +this is \footnote{Something + +\begin{quote} +special here +\end{quote}} & a table\\ +with a & footnote\\ +\hline +\end{longtable} + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.text new file mode 100644 index 0000000000..345fc5d308 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/14_table/table_with_footnote.text @@ -0,0 +1,6 @@ +| this is [^1] | a table +| with a | footnote + +[^1]: Something + + > special here diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.html new file mode 100644 index 0000000000..ab27b4be13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.html @@ -0,0 +1,2 @@ + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.text new file mode 100644 index 0000000000..95252a76e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/gh_128.text @@ -0,0 +1 @@ +$$ $$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.html new file mode 100644 index 0000000000..214212a28e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.html @@ -0,0 +1 @@ +f(x)=ax 3+bx 2+cx+df(x) = a{x^3} + b{x^2} + cx + d diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.options new file mode 100644 index 0000000000..953bdae24b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.options @@ -0,0 +1 @@ +:math_engine: itex2mml diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.text new file mode 100644 index 0000000000..23fe297bff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/itex2mml.text @@ -0,0 +1 @@ +$$f(x) = a{x^3} + b{x^2} + cx + d$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.html.19 new file mode 100644 index 0000000000..9e89673d7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.html.19 @@ -0,0 +1,2 @@ +Δ=12abcdefghi\Delta = \frac{1}{2} +\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.options new file mode 100644 index 0000000000..108b2654a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.options @@ -0,0 +1 @@ +:math_engine: :katex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.text new file mode 100644 index 0000000000..2f184908e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/katex.text @@ -0,0 +1,2 @@ +$$\Delta = \frac{1}{2} +\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix}$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.html new file mode 100644 index 0000000000..5ef3a830f2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.html @@ -0,0 +1,4 @@ +

                This is a 5 + 5 statement

                + +
                5 + 5
                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.options new file mode 100644 index 0000000000..75f702c41b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.options @@ -0,0 +1,2 @@ +:math_engine_opts: + :preview: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.text new file mode 100644 index 0000000000..7068767b08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview.text @@ -0,0 +1,5 @@ +This is a $$5 + 5$$ statement + +$$ +5 + 5 +$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.html new file mode 100644 index 0000000000..1ee20d4f19 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.html @@ -0,0 +1,4 @@ +

                This is a 5 + 5 statement

                + +
                5 + 5
                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.options new file mode 100644 index 0000000000..ab0bc547f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.options @@ -0,0 +1,3 @@ +:math_engine_opts: + :preview: true + :preview_as_code: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.text new file mode 100644 index 0000000000..7068767b08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_as_code.text @@ -0,0 +1,5 @@ +This is a $$5 + 5$$ statement + +$$ +5 + 5 +$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.html new file mode 100644 index 0000000000..623d286205 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.html @@ -0,0 +1,4 @@ +

                This is a math statement

                + +
                math
                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.options new file mode 100644 index 0000000000..28a68b50af --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.options @@ -0,0 +1,2 @@ +:math_engine_opts: + :preview: 'math' diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.text new file mode 100644 index 0000000000..7068767b08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjax_preview_simple.text @@ -0,0 +1,5 @@ +This is a $$5 + 5$$ statement + +$$ +5 + 5 +$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.html.19 new file mode 100644 index 0000000000..713f9bcb5b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.html.19 @@ -0,0 +1,27 @@ + + f + ( + x + ) + = + a + + + x + 3 + + + + + b + + + x + 2 + + + + + c + x + + + d + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.options new file mode 100644 index 0000000000..adc27e8aa1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.options @@ -0,0 +1 @@ +:math_engine: mathjaxnode diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.text new file mode 100644 index 0000000000..23fe297bff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode.text @@ -0,0 +1 @@ +$$f(x) = a{x^3} + b{x^2} + cx + d$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 new file mode 100644 index 0000000000..234f23ea15 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 @@ -0,0 +1,23 @@ + + f + ( + x + ) + = + a + + x + 3 + + + + b + + x + 2 + + + + c + x + + + d + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.options new file mode 100644 index 0000000000..827e462795 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.options @@ -0,0 +1,3 @@ +:math_engine: mathjaxnode +:math_engine_opts: + :texhints: false diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.text new file mode 100644 index 0000000000..23fe297bff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_notexhints.text @@ -0,0 +1 @@ +$$f(x) = a{x^3} + b{x^2} + cx + d$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.html.19 new file mode 100644 index 0000000000..d85fddf8c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.html.19 @@ -0,0 +1,32 @@ + + + + f + ( + x + ) + = + a + + + x + 3 + + + + + b + + + x + 2 + + + + + c + x + + + d + + f(x) = a{x^3} + b{x^2} + cx + d + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.options new file mode 100644 index 0000000000..1f645b1629 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.options @@ -0,0 +1,3 @@ +:math_engine: mathjaxnode +:math_engine_opts: + :semantics: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.text new file mode 100644 index 0000000000..23fe297bff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/mathjaxnode_semantics.text @@ -0,0 +1 @@ +$$f(x) = a{x^3} + b{x^2} + cx + d$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.html new file mode 100644 index 0000000000..5d6b343e81 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.html @@ -0,0 +1,3 @@ +
                $$ +5+5 +$$
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.options new file mode 100644 index 0000000000..06d559e545 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.options @@ -0,0 +1 @@ +:math_engine: ~ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.text new file mode 100644 index 0000000000..fdee5cfbea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/no_engine.text @@ -0,0 +1,2 @@ +{: #math-id} +$$5+5$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.html new file mode 100644 index 0000000000..3000a86b65 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.html @@ -0,0 +1,29 @@ +

                This is a para. +

                + + + +

                +This is a para.

                + + + + + + + + + + + +
                $$5+5$$
                +
                + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.text new file mode 100644 index 0000000000..aa5984a2c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/normal.text @@ -0,0 +1,30 @@ +This is a para. +$$ \text{LaTeX} \lambda_5 $$ + +$$\lambda_5 = \alpha + 4$$ + +$$\lambda_\alpha > 5$$ +This is a para. + +$$\begin{align*} +&=5 \\ +&=6 \\ +\end{align*}$$ + +$$5+5$$ + + $$5+5$$ + + $$5+5$$ + + $$5+5$$ + + $$5+5$$ + +{:.cls} +$$5+5$$ +^ +$$5+5$$ +{:.cls} + +$$|x| = 5$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.html new file mode 100644 index 0000000000..e9d61b5388 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.html @@ -0,0 +1 @@ +f(x)=ax3+bx2+cx+d diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.options new file mode 100644 index 0000000000..0ef54eb92a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.options @@ -0,0 +1 @@ +:math_engine: ritex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.text new file mode 100644 index 0000000000..23fe297bff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/ritex.text @@ -0,0 +1 @@ +$$f(x) = a{x^3} + b{x^2} + cx + d$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.html.19 new file mode 100644 index 0000000000..f1623a1f18 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.html.19 @@ -0,0 +1,2 @@ +Δ=12abcdefghi\Delta = \frac{1}{2} +\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.options new file mode 100644 index 0000000000..214a301b97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.options @@ -0,0 +1 @@ +:math_engine: sskatex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.text new file mode 100644 index 0000000000..2f184908e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/15_math/sskatex.text @@ -0,0 +1,2 @@ +$$\Delta = \frac{1}{2} +\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix}$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.html new file mode 100644 index 0000000000..bbb831e93b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.html @@ -0,0 +1,14 @@ + +

                Header level 1

                + +

                Header level 2

                + +

                Header level 3

                + +

                Header level 4

                + +

                Other header level 1

                + +

                Other header level 2

                + +

                Other header level 3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.text new file mode 100644 index 0000000000..11ad82916c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/no_toc.text @@ -0,0 +1,16 @@ +* Here comes the table of content +{:toc} + +# Header level 1 + +## Header level 2 + +### Header level 3 + +#### Header level 4 + +# Other header level 1 + +## Other header level 2 + +### Other header level 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.html new file mode 100644 index 0000000000..d35268469d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.html @@ -0,0 +1,35 @@ +

                Contents

                + + + +

                Header level 1

                + +

                Header level 2

                + +

                Header level 3

                + +

                Header level 4

                + +

                Other header level 1

                + +

                Other header level 2

                + +

                Other header level 3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.options new file mode 100644 index 0000000000..8776b5524d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.options @@ -0,0 +1 @@ +:auto_ids: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.text new file mode 100644 index 0000000000..d8f0b863fd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_exclude.text @@ -0,0 +1,19 @@ +# Contents +{:.no_toc} + +* Here comes the table of content +{:toc} + +# Header level 1 + +## Header level 2 + +### Header level 3 + +#### Header level 4 + +# Other header level 1 + +## Other header level 2 + +### Other header level 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.html new file mode 100644 index 0000000000..e50a07c4d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.html @@ -0,0 +1,24 @@ + + +

                Header level 1

                + +

                Header \` level 2

                + +

                Header level 3

                + +

                Header level 4

                + +

                Other header level 1

                + +

                Other header level 2

                + +

                Other header level 3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.options new file mode 100644 index 0000000000..bdfbeba1ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.options @@ -0,0 +1,2 @@ +:toc_levels: 2..3 +:auto_ids: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.text new file mode 100644 index 0000000000..1a62dea2f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_levels.text @@ -0,0 +1,16 @@ +* Here comes the table of content +{:toc} + +# Header level 1 + +## Header \\\` level 2 + +### Header level 3 + +#### Header level 4 + +# Other header level 1 + +## Other header level 2 + +### Other header level 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.html new file mode 100644 index 0000000000..a395a02ba2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.html @@ -0,0 +1,13 @@ + + +

                Header1 level 1

                + +
                +
                  +
                1. +

                  Some footnote content here 

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.options new file mode 100644 index 0000000000..8776b5524d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.options @@ -0,0 +1 @@ +:auto_ids: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.text new file mode 100644 index 0000000000..5879ed5761 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_footnotes.text @@ -0,0 +1,6 @@ +* Here comes the table of content +{:toc} + +# Header[^1] level 1 + +[^1]: Some footnote content here diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.html new file mode 100644 index 0000000000..ebde543b72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.html @@ -0,0 +1,8 @@ +

                Header

                + +

                Header

                + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.options new file mode 100644 index 0000000000..36c20f5ad2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.options @@ -0,0 +1,2 @@ +:auto_ids: true +:auto_id_stripping: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.text new file mode 100644 index 0000000000..9b4ac0739b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/block/16_toc/toc_with_links.text @@ -0,0 +1,8 @@ +# [Header] + +# [Header] + +[header]: test.html + +* toc +{:toc} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.html new file mode 100644 index 0000000000..0339347f2f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.html @@ -0,0 +1,46 @@ +

                Das ist gewöhnlich ein Über-Problem mit manchen
                +Sälen http://example.org und anderen Dinge. Siehe +Über mich!

                + +
                +

                Vielleicht höre ich nicht richtig?

                +
                + +
                  +
                • Sollten wir uns das überlegen? Verhöhne mich nicht!
                • +
                • Ho ho höher! Sind *wir* da?
                • +
                + +

                Titel sind urschön

                + +

                Manche mögens ärmer

                + +
                öha
                +was nun?
                +
                + +
                +
                Töne
                +
                Laute Geräusche
                +
                vielleicht noch was ähnliches
                +
                + + + + + + + + + + + + + + + + +
                hochhöheram höchsten
                überdrübermüde
                + +

                Das ist schön +gemacht

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.text new file mode 100644 index 0000000000..65edf4b02d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/encoding.text @@ -0,0 +1,28 @@ +Das ist gewöhnlich *ein* [Über-Problem](http://example.org) mit manchen +Sälen und anderen Dinge. Siehe +![Über mich](http://example.org)! + +> Vielleicht *höre*{:.red} ich nicht richtig? +{:.test} + +* Sollten wir uns das überl*egen*? *Verhöhne* mich nicht! +* Ho ho höher! Sind \*wir\* da? + +Titel sind urschön +================== + +## Manche mögens *ärmer* {#hot} + + öha + was nun? + +Töne +: Laute Geräusche +: vielleicht noch was ä*hnliches* + +| hoch | höher | am höchsten | +|----------------------------| +| über | drüber | müde | + +

                Das ist schön +gemacht

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.man new file mode 100644 index 0000000000..b1afee7845 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.man @@ -0,0 +1,123 @@ +.\" generated by kramdown +.TH "NAME" "1" "November 2016" "Some extra data" +.SH NAME +name \- description +.SH "SYNOPSIS" +\fBname\fP [\fBOPTIONS\fP] \fIarguments\fP\.\.\. +.SH "DESCRIPTION" +This is a normal paragraph\. +.sp +.PD 0 +.IP \(bu 4 +A +.IP \(bu 4 +compact +.IP \(bu 4 +list +.IP \(bu 4 +with multiple +.RS +.IP \(bu 4 +items and +.RS +.IP \(bu 4 +nested +.RE +.RE +.IP \(bu 4 +as well +.PD +.RS +.P +blockquotes are fine +.IP 1. 4 +numbered lists +.IP 2. 4 +work too +.RS +.IP 1. 4 +and they +.IP 2. 4 +can be +.RS +.IP 1. 4 +nested +.RE +.RE +.IP 3. 4 +again +.RE +.sp +.RS 4 +.EX +Some fancy code + going + on + here +.EE +.RE +.TP +\fB\-o\fP +.TQ +\fB\-\-option\fP +Description lists +.sp +are useful as well +.P +And compact definition lists: +.sp +.PD 0 +.TP +\fBo\fP +Option +.TP +\fBk\fP +Key +.TP +\fBv\fP +Value +.PD +.TS +box center ; +l l l l . +tables can be centered +.TE +.sp +.TS +box ; +lb lb cb rb . +Default aligned Left aligned Center aligned Right aligned += +.T& +l l c r . +First body part Second cell Third cell fourth cell +Second \fIline\fP foo \fBstrong\fP baz +Third line \fBquux\fP baz bar +_ +.T& +l l c r . +Second body +2nd line += +Footer row one +Footer row two +.TE +.sp +.P +Inline formatting like \fIemphasis\fP, \fBstrong\fP and \fBcode span\fP work as ususal\. +.UR are_well\.html +Links +.UE +work, too! As do +.br +line breaks\. +.P +Abbreviations like MD can be used but the abbreviation title is ignored\. +.P +Math elements work \fB\el = 5\fP inline and in block form: +.sp +.RS 4 +.EX +\elambda_5 = \ealpha + 4 +.EE +.RE diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.text new file mode 100644 index 0000000000..12b011bb01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/example.text @@ -0,0 +1,85 @@ +# name(1) - description +{: data-date="November 2016" data-extra="Some extra data"} + +## SYNOPSIS + +`name` \[`OPTIONS`\] *arguments*... + +## DESCRIPTION + +This is a normal paragraph. + +* A +* compact +* list +* with multiple + * items and + * nested +* as well +{:.compact} + +> blockquotes are fine +> +> 1. numbered lists +> +> 2. work too +> 1. and they +> 2. can be +> 1. nested +> +> 3. again + +~~~ +Some fancy code + going + on + here +~~~ + +`-o` +`--option` +: Description lists +: are useful as well + +And compact definition lists: + +`o` +: Option + +`k` +: Key + +`v` +: Value +{:.compact} + +| tables | can | be | centered | +{:.center} + +|-----------------+------------+-----------------+----------------| +| Default aligned |Left aligned| Center aligned | Right aligned | +|-----------------|:-----------|:---------------:|---------------:| +| First body part |Second cell | Third cell | fourth cell | +| Second *line* |foo | **strong** | baz | +| Third line |`quux` | baz | bar | +|-----------------+------------+-----------------+----------------| +| Second body | | | | +| 2nd line | | | | +|=================+============+=================+================| +| Footer row one | | | | +| Footer row two | | | | +|-----------------+------------+-----------------+----------------| + + +Inline formatting like *emphasis*, **strong** and `code span` work +as ususal. [Links](are_well.html) work, too! As do\\ +line breaks. + +Abbreviations like MD can be used but the abbreviation title is +ignored. + +*[MD]: Markdown + +Math elements work $$\l = 5$$ inline and in block form: + +$$\lambda_5 = \alpha + 4$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.man new file mode 100644 index 0000000000..8e47527e1b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.man @@ -0,0 +1,4 @@ +.\" generated by kramdown +.TH "NAME" "7" +.SH NAME +name \- description diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.text new file mode 100644 index 0000000000..832c92139d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-dash-description.text @@ -0,0 +1 @@ +# name -- description diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.man new file mode 100644 index 0000000000..e59dc5ecea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.man @@ -0,0 +1,4 @@ +.\" generated by kramdown +.TH "NAME" "1" "November 2016" "Something extra" +.SH NAME +name \- description diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.text new file mode 100644 index 0000000000..941482c117 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-description.text @@ -0,0 +1,2 @@ +# name description +{: data-section="1" data-date="November 2016" data-extra="Something extra"} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.man new file mode 100644 index 0000000000..8df4ff7116 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.man @@ -0,0 +1,4 @@ +.\" generated by kramdown +.TH "NAME" "1" +.SH NAME +name \- description diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.text new file mode 100644 index 0000000000..5f3e765b14 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section-description.text @@ -0,0 +1 @@ +# name(1) -- description diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.man new file mode 100644 index 0000000000..7ca8757405 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.man @@ -0,0 +1,2 @@ +.\" generated by kramdown +.TH "NAME" "1" diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.text new file mode 100644 index 0000000000..da98dbdacb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name-section.text @@ -0,0 +1 @@ +# name(1) diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.man new file mode 100644 index 0000000000..8488496fd0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.man @@ -0,0 +1,2 @@ +.\" generated by kramdown +.TH "NAME" "7" diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.text new file mode 100644 index 0000000000..5f4656ae18 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/heading-name.text @@ -0,0 +1 @@ +# name diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.man new file mode 100644 index 0000000000..14ab2336fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.man @@ -0,0 +1,4 @@ +.\" generated by kramdown +.SH "NAME" +works +.SS "Sub section" diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.text new file mode 100644 index 0000000000..d1f5f86426 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/sections.text @@ -0,0 +1,11 @@ +## NAME + +works + +### Sub section + +#### Ignored + +##### Ignored + +###### Ignored diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.man b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.man new file mode 100644 index 0000000000..710a4f14c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.man @@ -0,0 +1,8 @@ +.\" generated by kramdown +\&\. at the start of the line +.P +line with \efB backslash symbol +.P +some \. other \- escaped \' symbols +.P +\&\. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.text new file mode 100644 index 0000000000..052b94f5c6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/man/text-escaping.text @@ -0,0 +1,7 @@ +. at the start of the line + +line with \fB backslash symbol + +some . other - escaped \' symbols + +. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.html new file mode 100644 index 0000000000..a1102eadbb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.html @@ -0,0 +1,5 @@ +

                This is [] empty.

                + +

                This is [][] empty.

                + +

                This is empty.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.text new file mode 100644 index 0000000000..cca5de5f64 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty.text @@ -0,0 +1,5 @@ +This is [] empty. + +This is [][] empty. + +This is [](test.html) empty. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.htmlinput b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.htmlinput new file mode 100644 index 0000000000..b95b2cc7a0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.htmlinput @@ -0,0 +1,3 @@ +

                Image with empty title: alt text

                + +

                Link reference with empty title.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.text new file mode 100644 index 0000000000..baabe7da19 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/empty_title.text @@ -0,0 +1,7 @@ +Image with empty title: ![alt text](/images/other.png) + +Link [reference][1] with empty title. + + + +[1]: http://example.tld diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.html new file mode 100644 index 0000000000..e1f4ade52d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.html @@ -0,0 +1,5 @@ +

                Simple: Some alt text

                + +

                Nested: Some alt ![img](text.png) text

                + +

                Simple: Some text alt text text

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.text new file mode 100644 index 0000000000..bdbfb65ee1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/image_in_a.text @@ -0,0 +1,5 @@ +Simple: [Some ![alt text](/images/other.png)](local.html) + +Nested: [Some ![alt ![img](text.png) text](/images/other.png)](local.html) + +Simple: [Some *text ![alt text](/images/other.png) text*](local.html) diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.html new file mode 100644 index 0000000000..565d36f70a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.html @@ -0,0 +1,15 @@ +

                Simple: alt text

                + +

                Simple with title: alt text

                + +

                Empty img link: alt text

                + +

                Reference style: alt text

                + +

                Reference style with title: alt text

                + +

                No alt text:

                + +

                No id: imgo

                + +

                With escaped pipe: an | pipe

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.text new file mode 100644 index 0000000000..05050a24be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/imagelinks.text @@ -0,0 +1,18 @@ +Simple: ![alt text](/images/other.png) + +Simple with title: ![alt text](/images/other.png "title") + +Empty img link: ![alt text]() + +Reference style: ![alt text][img] + +Reference style with title: ![alt text][imgo] + +No alt text: ![](other.png) + +No id: ![imgo] + +[img]: other.png +[imgo]: other.png "Title" + +With escaped pipe: ![an \| pipe](other.png) diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html new file mode 100644 index 0000000000..0810bc76fd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html @@ -0,0 +1,46 @@ +

                simple URL

                + +

                simple URL

                + +

                simple URL with formatting

                + +

                simple URL with single quoted title

                + +

                simple URL with double quoted title

                + +

                simple URL [with ] escaped

                + +

                simple URL with ] escaped

                + +

                simple URL [with] nested

                + +

                simple URL with [no](link.html) inside

                + +

                simple URL with parens

                + +

                simple URL with parens

                + +

                simple URL broken +on line

                + +

                simple URL with spaces

                + +

                simple URL with spaces

                + +

                simple URL with spaces

                + +

                simple leading/trailing spaces

                + +

                simple leading/trailing spaces

                + +

                simple leading/trailing spaces

                + +

                bad [URL not

                + +

                bad [URL with parens](something(new.html)

                + +

                bad [URL with empty title](something.html ‘’)

                + +

                bad [URL](

                + +

                bad [URL](no

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html.19 new file mode 100644 index 0000000000..8d00efa9ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.html.19 @@ -0,0 +1,46 @@ +

                simple URL

                + +

                simple URL

                + +

                simple URL with formatting

                + +

                simple URL with single quoted title

                + +

                simple URL with double quoted title

                + +

                simple URL [with ] escaped

                + +

                simple URL with ] escaped

                + +

                simple URL [with] nested

                + +

                simple URL with [no](link.html) inside

                + +

                simple URL with parens

                + +

                simple URL with parens

                + +

                simple URL broken +on line

                + +

                simple URL with spaces

                + +

                simple URL with spaces

                + +

                simple URL with spaces

                + +

                simple leading/trailing spaces

                + +

                simple leading/trailing spaces

                + +

                simple leading/trailing spaces

                + +

                bad [URL not

                + +

                bad [URL with parens](something(new.html)

                + +

                bad [URL with empty title](something.html ‘’)

                + +

                bad [URL](

                + +

                bad [URL](no

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.text new file mode 100644 index 0000000000..c70576466e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/inline.text @@ -0,0 +1,48 @@ +simple [URL]() + +simple [URL](something.html) + +simple [URL *with* formatting](something.html) + +simple [URL with single quoted title](something.html 'a t"itle') + +simple [URL with double quoted title](something.html "a t'itle") + +simple [URL \[with \] escaped](something.html) + +simple [URL with \] escaped](something.html) + +simple [URL [with] nested](something.html) + +simple [URL with [no](link.html) inside](something.html) + +simple [URL with parens](/something/to(do)) + +simple [URL with parens](/something/to(do "doit") + +simple [URL broken +on line](something.html +"title") + +simple [URL with spaces](with spaces.html) + +simple [URL with spaces](with spaces.html 'title') + +simple [URL with spaces](with (spaces).html) + +simple [leading/trailing spaces]( spaces.html) + +simple [leading/trailing spaces](spaces.html ) + +simple [leading/trailing spaces]( spaces.html ) + + +bad [URL [not](something.html) + +bad [URL with parens](something(new.html) + +bad [URL with empty title](something.html '') + +bad [URL]( + +bad [URL](no diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.latex new file mode 100644 index 0000000000..63e58e74ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.latex @@ -0,0 +1,6 @@ +\href{https://example.com/~tilde/}{https://example.com/\ensuremath{\sim}tilde/} + +\href{http://example.com/percent\%20percent}{http://example.com/percent\%20percent} + +\href{http://example.com/hash#hash}{http://example.com/hash\#hash} + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.text new file mode 100644 index 0000000000..9b27ae86b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/latex_escaping.text @@ -0,0 +1,5 @@ + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.html new file mode 100644 index 0000000000..15e2ca71a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.html @@ -0,0 +1,9 @@ +

                This is a para. +[id]: http://www.example.com/

                + +
                [4]: nourl
                +
                + +

                Points to 1 and 2 and 3 but not [4]

                + +

                Points to _.:,;!?- and otherid8

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.text new file mode 100644 index 0000000000..16a25b5b9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs.text @@ -0,0 +1,27 @@ +This is a para. +[id]: http://www.example.com/ + +[otherid1]: http://wwww.example.com/ "title 1" +[otherid2]: http://wwww.example.com/ 'title 2' +[otherid3]: +[otherid4]: 'title' +[otherid5]: some spaces.html +[otherid6]: some spaces.html 'title' +[otherid7]: some spaces + "title" +[otherid8]:test.html#'test' 'title' + +[break]: http://www.example.com/test/asdf.html + 'Another title' + +[1]: ignored.url + [1]: one.url + [2]: two.url + [3]: three.url + [4]: nourl + +Points to [1] and [2] and [3] but not [4] + +[_.:,;!?-]: http://example.com + +Points to [_.:,;!?-] and [otherid8] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.html new file mode 100644 index 0000000000..f56d77ded6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.html @@ -0,0 +1,4 @@ +

                Link def with attr and attr 2 and attr 3 and attr before

                + +

                test

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.text new file mode 100644 index 0000000000..59398a3ab7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/link_defs_with_ial.text @@ -0,0 +1,16 @@ +Link def with [attr] and [attr 2] and [attr 3] and [attr before] + +[attr]: http://example.com 'title' +{: hreflang="en" .test} + +[attr 2]: http://example.com 'title' +{: hreflang="en"} +{: .test} + +[attr 3]: http://example.com +{: .test} +test + +{: hreflang="en"} +{: .test} +[attr before]: http://example.com diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.html new file mode 100644 index 0000000000..ecaa31e562 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.html @@ -0,0 +1,3 @@ +

                This is a link.

                + +

                This is a link.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.text new file mode 100644 index 0000000000..2cf0ececeb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/links_with_angle_brackets.text @@ -0,0 +1,3 @@ +This is a [link](). + +This is a [link]( 'and title'). diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html new file mode 100644 index 0000000000..49afd2eec7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html @@ -0,0 +1,37 @@ + +

                simple URL and URL

                + +

                simple URL and URL

                + +

                simple 1 and isurl

                + +

                simple 1 and isurl

                + +

                this is [a holy isurl]

                + +

                no [resolution][] here and [here]

                + +

                with a break in +the text

                + +

                this not [isurl] and not [isurl]

                + +

                a Link with_BIG letters

                + +

                bad [no URL] d isurl

                + +

                [no url] invalid.html +[no url]:

                + +

                “title”

                + +

                test url but no title +test [urldef]

                + +

                [urldef]: some.url ‘title”

                + +

                some with spaces

                + +

                this is a ‘special’ occasion for /all/ of us

                + +

                this is predefined for URI

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html.19 new file mode 100644 index 0000000000..f6fed181eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.html.19 @@ -0,0 +1,37 @@ + +

                simple URL and URL

                + +

                simple URL and URL

                + +

                simple 1 and isurl

                + +

                simple 1 and isurl

                + +

                this is [a holy isurl]

                + +

                no [resolution][] here and [here]

                + +

                with a break in +the text

                + +

                this not [isurl] and not [isurl]

                + +

                a Link with_BIG letters

                + +

                bad [no URL] d isurl

                + +

                [no url] invalid.html +[no url]:

                + +

                “title”

                + +

                test url but no title +test [urldef]

                + +

                [urldef]: some.url ‘title”

                + +

                some with spaces

                + +

                this is a ‘special’ occasion for /all/ of us

                + +

                this is predefined for URI

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.options new file mode 100644 index 0000000000..efb4b0184c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.options @@ -0,0 +1,3 @@ +:link_defs: + predefined: [predefined.html] + URI: [uri.html, My URI] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.text new file mode 100644 index 0000000000..9f39fa70ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/01_link/reference.text @@ -0,0 +1,53 @@ +[isurl]: someurl.html + [1]: otherurl.html + +simple [URL][1] and [URL][isurl] + +simple [URL] [1] and [URL] +[isurl] + +simple [1][] and [isurl][] + +simple [1] and [isurl] + +this is [a holy [isurl]] + +no [resolution][] here and [here] + +with a [break in +the text] + + [break in the text]: url.html + +this not \[isurl] and not [isurl\] + +a [Link with_BIG] letters + + [link WITH_big]: letters.html + 'This is the title' + +bad [no URL] d [isurl] + +[no url] invalid.html +[no url]: + +[URL but no title]: invalid.html + + "title" + +test [url but no title] +test [urldef] + +[urldef]: some.url 'title" + + +some [with spaces] + +[with spaces]: with spaces.html "title" + +this [is a 'special' occasion for /all/ of us] + +[is a 'special' occasion for /all/ of us]: occasion.html + + +this is [predefined] for [URI] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.html new file mode 100644 index 0000000000..127e69437a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.html @@ -0,0 +1,3 @@ +

                This __is **empty.

                + +

                This **is empty.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.text new file mode 100644 index 0000000000..c99d053f42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/empty.text @@ -0,0 +1,3 @@ +This __is **empty. + +This ****is empty. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.html new file mode 100644 index 0000000000..e62f03fd1c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.html @@ -0,0 +1,9 @@ +

                This is a *star.

                + +

                This is a **star.

                + +

                This is *a *star.

                + +

                This is *a star*.

                + +

                This** is** a star.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.text new file mode 100644 index 0000000000..e80e5eb477 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/errors.text @@ -0,0 +1,9 @@ +This is a *star. + +This is a **star. + +This is **a *star*. + +This is *a star\*. + +This** is** a star. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.html new file mode 100644 index 0000000000..3d34cee168 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.html @@ -0,0 +1,41 @@ +
                  +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                • test test
                • +
                +
                  +
                • ab
                • +
                • ab
                • +
                • abc
                • +
                • ab
                • +
                • ab
                • +
                • abc
                • +
                +
                  +
                • _a_b
                • +
                • a_b_
                • +
                • a_b_c
                • +
                • __a__b
                • +
                • a__b__
                • +
                • a__b__c
                • +
                • a__2__c
                • +
                • a__2__3
                • +
                • 1__2__3
                • +
                +
                  +
                • a _b_ c
                • +
                • a __b__ c
                • +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.text new file mode 100644 index 0000000000..ba67e84b71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/nesting.text @@ -0,0 +1,36 @@ +- ***test test*** +- ___test test___ +- *test **test*** +- **test *test*** +- ***test* test** +- ***test** test* +- ***test* test** +- **test *test*** +- *test **test*** +- _test __test___ +- __test _test___ +- ___test_ test__ +- ___test__ test_ +- ___test_ test__ +- __test _test___ +- _test __test___ +^ +- *a*b +- a*b* +- a*b*c +- **a**b +- a**b** +- a**b**c +^ +- _a_b +- a_b_ +- a_b_c +- __a__b +- a__b__ +- a__b__c +- a__2__c +- a__2__3 +- 1__2__3 +^ +- *a _b_ c* +- **a __b__ c** diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.html new file mode 100644 index 0000000000..ca53cfe0fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.html @@ -0,0 +1,61 @@ +

                This is so hard.

                + +

                This is so hard too.

                + +

                At start +At start

                + +

                At end +At end

                + +

                At start +At start

                + +

                At end +At end

                + +

                And nested.

                + +

                And nest**ed.

                + +

                And *nested* like this.

                + +

                And not_nest_ed.

                + +

                And nested.

                + +

                And nested.

                + +

                And neste.

                + +

                And lonely * here*.

                + +

                And lonely ** here**.

                + +

                And lonely ** here.

                + +

                ** and here**.

                + +

                And compli*cated * here

                + +

                Some**what more * **here

                + +

                Do it *this* way +Or this *this* way +Or that *that* way +Or that *that* way

                + +

                http://blah.com/blah_%28

                + +

                A-_B

                + +
                  +
                • test
                • +
                • test
                • +
                • test
                • +
                • (“test”)
                • +
                • (test)
                • +
                • test
                • +
                • `test
                • +
                • test
                • +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.options new file mode 100644 index 0000000000..2e6e0a1206 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.options @@ -0,0 +1 @@ +:entity_output: :numeric diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.text new file mode 100644 index 0000000000..ab3091384b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/02_emphasis/normal.text @@ -0,0 +1,59 @@ +This *is* so **hard**. + +This _is_ so __hard__ too. + +*At* start +*At* start + +At *end* +At *end* + +_At_ start +_At_ start + +At _end_ +At _end_ + +And *nest**ed***. + +And *nest**ed*. + +And *nest**ed* like** this. + +And *not_nest_ed*. + +And ***nested***. + +And ___nested___. + +And **nest*e***. + +And lonely * here*. + +And lonely ** here**. + +And **lonely ** here**. + +** and here**. + +And **compli*cated \*** here + +Some***what* more * ***he*re + +Do it *\*this\** way +Or this \**this*\* way +Or that *\*that*\* way +Or that \**that\** way + +[http://blah.com/blah_%28](http://blah.com/blah_%28) + +[A-_B](A_-B) + +- _test_ +- '_test_' +- "_test_" +- ("_test_") +- (_test_) +- “_test_” +- \`_test_' +- „_test_“ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.html new file mode 100644 index 0000000000..20c5051950 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.html @@ -0,0 +1,5 @@ +

                This is `` empty.

                + +

                This is ``empty.

                + +

                This is ````empty.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.text new file mode 100644 index 0000000000..cbb91529d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/empty.text @@ -0,0 +1,5 @@ +This is `` empty. + +This is ``empty. + +This is ````empty. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.html new file mode 100644 index 0000000000..1d341a8f41 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.html @@ -0,0 +1 @@ +

                Not ended `span.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.text new file mode 100644 index 0000000000..7a948b41ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/errors.text @@ -0,0 +1 @@ +Not ended `span. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.latex new file mode 100644 index 0000000000..a1f84d90ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.latex @@ -0,0 +1,2 @@ +You can say \mintinline{ruby}{x = Class.new}, for example. + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.options new file mode 100644 index 0000000000..c11ebb6a40 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.options @@ -0,0 +1 @@ +:syntax_highlighter: minted diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.text new file mode 100644 index 0000000000..7373290933 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting-minted.text @@ -0,0 +1 @@ +You can say `x = Class.new`{:.language-ruby}, for example. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.html new file mode 100644 index 0000000000..c6860f62a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.html @@ -0,0 +1 @@ +

                You can say x = Class.new, for example.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.text new file mode 100644 index 0000000000..7373290933 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/highlighting.text @@ -0,0 +1 @@ +You can say `x = Class.new`{:.language-ruby}, for example. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.html new file mode 100644 index 0000000000..68eddbe8db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.html @@ -0,0 +1,16 @@ +

                This is a simple span.

                + +

                With some<ht>&ml in it.

                + +

                And ` backticks.

                + +

                And ``some`` more.

                + +

                With backslash in\ it.

                + +

                This is a ` literal backtick. +As `are` these!

                + +

                No literal backtick.

                + +

                something

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.text new file mode 100644 index 0000000000..10d06e2ff4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/normal.text @@ -0,0 +1,16 @@ +This is `a` simple span. + +With `some&ml` in it. + +And `` ` `` backticks. + +And ``` ``some`` ``` more. + +With backslash `in\` it. + +This is a ` literal backtick. +As \`are\` these! + +No `` literal backtick``. + +`something` diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.html new file mode 100644 index 0000000000..7822f7884d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.html @@ -0,0 +1 @@ +

                You can say Class.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.options new file mode 100644 index 0000000000..34094e96bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.options @@ -0,0 +1,4 @@ +:syntax_highlighter: rouge +:syntax_highlighter_opts: + span: + disable: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.text new file mode 100644 index 0000000000..d958d9149a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/disabled.text @@ -0,0 +1 @@ +You can say `Class`{:.language-ruby}. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.html new file mode 100644 index 0000000000..4294542d80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.html @@ -0,0 +1 @@ +

                You can say x = Class.new, for example.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.options new file mode 100644 index 0000000000..9ac61e7e43 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.options @@ -0,0 +1 @@ +:syntax_highlighter: rouge diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.text new file mode 100644 index 0000000000..7373290933 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/03_codespan/rouge/simple.text @@ -0,0 +1 @@ +You can say `x = Class.new`{:.language-ruby}, for example. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.html new file mode 100644 index 0000000000..b983b5a879 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.html @@ -0,0 +1,79 @@ +

                This is 123456789

                + +
                +
                  +
                1. + +

                  A paragraph 

                  +
                2. +
                3. + +

                  A header 

                  +
                4. +
                5. + +
                  +

                  blockquote

                  + +

                  paragraph 

                  +
                  +
                6. +
                7. + +
                  codeblock
                  +
                  +

                  +
                8. +
                9. + +
                    +
                  • item 1
                  • +
                  • item 2 +
                      +
                    • +

                      sub item

                      + +
                      +

                      blockquote

                      + +

                      header 

                      +
                      +
                    • +
                    +
                  • +
                  +
                10. +
                11. + + + + + + + + + + + + +
                  ab
                  cd
                  +

                  +
                12. +
                13. + +
                  +

                  +
                14. +
                15. + + +

                  +
                16. +
                17. + +
                  test +
                  +

                  +
                18. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.options new file mode 100644 index 0000000000..ac54fc0de6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.options @@ -0,0 +1 @@ +footnote_backlink_inline: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.text new file mode 100644 index 0000000000..55f94a3477 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_inline.text @@ -0,0 +1,38 @@ +This is [^paragraph][^header][^blockquote][^codeblock][^list][^table][^hrule][^mathblock][^html] + +[^paragraph]: + A paragraph + +[^header]: + # A header + +[^blockquote]: + > blockquote + > + > paragraph + +[^codeblock]: + codeblock + +[^list]: + * item 1 + * item 2 + * sub item + + > blockquote + > + > # header + +[^table]: + | a | b | + | c | d | + +[^hrule]: + *** + +[^mathblock]: + $$x + 2$$ + +[^html]: +
                test +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.html new file mode 100644 index 0000000000..dc66dc89b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.html @@ -0,0 +1,9 @@ +

                Some footnote here1

                + +
                +
                  +
                1. +

                  Some text here text &8617; <img />

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.options new file mode 100644 index 0000000000..4c677eff13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.options @@ -0,0 +1 @@ +:footnote_backlink: 'text &8617; ' diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.text new file mode 100644 index 0000000000..41a6f98449 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/backlink_text.text @@ -0,0 +1,3 @@ +Some footnote here[^fn] + +[^fn]: Some text here diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.html new file mode 100644 index 0000000000..9012cc069c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.html @@ -0,0 +1,17 @@ +

                Some para.

                + +
                +

                blockquote

                +
                + +
                  +
                • a list +with some text
                • +
                + +
                  +
                • other list
                • +
                +
                code
                +
                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.latex new file mode 100644 index 0000000000..965653c8ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.latex @@ -0,0 +1,17 @@ +Some para. + +\begin{quote} +blockquote +\end{quote} + +\begin{itemize} +\item{} a list +with some text +\end{itemize} + +\begin{itemize} +\item{} other list +\end{itemize} +\begin{verbatim}code +\end{verbatim} + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.text new file mode 100644 index 0000000000..44b52e00bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/definitions.text @@ -0,0 +1,24 @@ +Some para. + +[^footnote]: ignored definition +[^footnote]: Some footnote text + +> blockquote + +[^other]: some + foot + + note text + +* a list + with some text + +[^tnote]: foot note + +* other list +^ + code + +[^1]: + > a blockquote + and some para diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.html new file mode 100644 index 0000000000..bbd8eac7ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.html @@ -0,0 +1,12 @@ +

                This is a footnote35. And another36.

                + +
                +
                  +
                1. +

                  Some text. 

                  +
                2. +
                3. +

                  Some other text. 

                  +
                4. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.latex new file mode 100644 index 0000000000..8f07dde0a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.latex @@ -0,0 +1,2 @@ +This is a footnote\footnote{Some text.}. And another\footnote{Some other text.}. + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.options new file mode 100644 index 0000000000..f606ecfa7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.options @@ -0,0 +1 @@ +:footnote_nr: 35 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.text new file mode 100644 index 0000000000..cad29357b5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/footnote_nr.text @@ -0,0 +1,4 @@ +This is a footnote[^ab]. And another[^bc]. + +[^ab]: Some text. +[^bc]: Some other text. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.html new file mode 100644 index 0000000000..26ce52eaac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.html @@ -0,0 +1,17 @@ +

                Lorem ipsum1 dolor sit amet.

                + +

                Lorem ipsum2 dolor sit amet.

                + +
                +
                  +
                1. +

                  Consecutur adisping.3 

                  +
                2. +
                3. +

                  Sed ut perspiciatis unde omnis. 

                  +
                4. +
                5. +

                  Sed ut. 

                  +
                6. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.text new file mode 100644 index 0000000000..f4f91e9398 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/inside_footnote.text @@ -0,0 +1,9 @@ +Lorem ipsum[^first] dolor sit amet. + +Lorem ipsum[^second] dolor sit amet. + +[^first]: Consecutur adisping.[^third] + +[^second]: Sed ut perspiciatis unde omnis. + +[^third]: Sed ut. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.html new file mode 100644 index 0000000000..d4c45d729f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.html @@ -0,0 +1,46 @@ +

                This is some *ref.1

                + +
                +

                a blockquote 2

                +
                + +
                  +
                • and a list item 3
                • +
                + +

                And a header4

                + +

                A marker without a definition [^without].

                + +

                A marker 5 used twice1 and thrice1.

                + +
                +
                  +
                1. +

                  Some foot note text  2 3

                  +
                2. +
                3. +

                  other text +with more lines

                  + +
                  +

                  and a quote

                  +
                  +

                  +
                4. +
                5. +

                  some text 

                  +
                6. +
                7. + +
                  code block
                  +continued here
                  +
                  +

                  +
                8. +
                9. + +

                  +
                10. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.latex new file mode 100644 index 0000000000..8f406b8665 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.latex @@ -0,0 +1,23 @@ +This is some *ref.\footnote{Some foot note text} + +\begin{quote} +a blockquote \footnote{other text +with more lines + +\begin{quote} +and a quote +\end{quote}} +\end{quote} + +\begin{itemize} +\item{} and a list item \footnote{some \emph{text}} +\end{itemize} + +\section*{And a header\footnote{\begin{verbatim}code block +continued here +\end{verbatim}}} + +A marker without a definition {[}\^{}without{]}. + +A marker \footnote{} used twice\footnote{Some foot note text} and thrice\footnote{Some foot note text}. + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.options new file mode 100644 index 0000000000..5cfe2502a8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.options @@ -0,0 +1,2 @@ +:auto_ids: false +:entity_output: :symbolic diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.text new file mode 100644 index 0000000000..42b77fb544 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/markers.text @@ -0,0 +1,27 @@ +This is some *ref.[^fn] + +[^fn]: Some foot note text +{: .class} + +> a blockquote [^3] + +* and a list item [^1] + +# And a header[^now] + +[^1]:some *text* +[^3]: other text + with more lines + + > and a quote + +A marker without a definition [^without]. + +A marker [^empty] used twice[^fn] and thrice[^fn]. + +[^now]: + + code block + continued here + +[^empty]: diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.html new file mode 100644 index 0000000000..997ef26fb5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.html @@ -0,0 +1,11 @@ +
                +
                  +
                1. +

                  Footnote \` text 

                  +
                2. +
                +
                + +

                Some para with a1 footnote.

                + +

                And another para.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.options new file mode 100644 index 0000000000..2e6e0a1206 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.options @@ -0,0 +1 @@ +:entity_output: :numeric diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.text new file mode 100644 index 0000000000..97c0ab1a08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/placement.text @@ -0,0 +1,8 @@ +* footnotes will be placed here +{:footnotes} + +Some para with a[^1] footnote. + +[^1]: Footnote \\\` text + +And another para. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.html new file mode 100644 index 0000000000..d246a37208 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.html @@ -0,0 +1,14 @@ +

                Something

                +

                something1.

                + +

                Footnotes

                + +

                Test

                +
                +
                  +
                1. + +

                  A note 

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.options new file mode 100644 index 0000000000..5cfe2502a8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.options @@ -0,0 +1,2 @@ +:auto_ids: false +:entity_output: :symbolic diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.text new file mode 100644 index 0000000000..6a60c61264 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/regexp_problem.text @@ -0,0 +1,52 @@ +# Something +something[^note1]. + +# Footnotes +[^note1]: + A note + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# Test diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.html new file mode 100644 index 0000000000..df5e9173a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.html @@ -0,0 +1,9 @@ +

                Some footnote here1

                + +
                +
                  +
                1. +

                  Some text here

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.options new file mode 100644 index 0000000000..0512dd6da0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.options @@ -0,0 +1 @@ +:footnote_backlink: '' diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.text new file mode 100644 index 0000000000..41a6f98449 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/04_footnote/without_backlink.text @@ -0,0 +1,3 @@ +Some footnote here[^fn] + +[^fn]: Some text here diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.html new file mode 100644 index 0000000000..e7cec40f80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.html @@ -0,0 +1 @@ +

                Link: test

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.text new file mode 100644 index 0000000000..8f39d9599e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/across_lines.text @@ -0,0 +1,2 @@ +Link: test diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.html new file mode 100644 index 0000000000..c49bb52f69 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.html @@ -0,0 +1,7 @@ +

                + +

                First some text and then a

                + +

                and then text.

                + +

                A it.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.text new file mode 100644 index 0000000000..e0a7783c80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/button.text @@ -0,0 +1,7 @@ + + +First some text and then a + + and then text. + +A it. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.html new file mode 100644 index 0000000000..030552fc86 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.html @@ -0,0 +1 @@ +

                This is some text

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.text new file mode 100644 index 0000000000..383f0a83f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/invalid.text @@ -0,0 +1 @@ +This is some text diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.html new file mode 100644 index 0000000000..7d0d6ad6a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.html @@ -0,0 +1 @@ +

                Link: text

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.text new file mode 100644 index 0000000000..fb01619621 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/link_with_mailto.text @@ -0,0 +1 @@ +Link: text diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.html new file mode 100644 index 0000000000..b6989b7f28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.html @@ -0,0 +1,3 @@ +

                Lorem ipsum.

                + +

                Test

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.text new file mode 100644 index 0000000000..6ae30e039c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/mark_element.text @@ -0,0 +1,3 @@ +Lorem ipsum. + +Test diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.html new file mode 100644 index 0000000000..44158c3b9e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.html @@ -0,0 +1,6 @@ +

                This is text +This is *text* +This is text +This is text +This is *nothing* to fear about. +This is <http://example.com>.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.text new file mode 100644 index 0000000000..dcc10ff835 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/markdown_attr.text @@ -0,0 +1,6 @@ +This is *text* +This is *text* +This is *text* +This is *text* +This is *nothing* to *fear* about. +This is . diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.html new file mode 100644 index 0000000000..0da5f26a3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.html @@ -0,0 +1,43 @@ +

                Empty !

                + +

                title is a title.

                + +

                This is .

                + +

                This is comment.

                + +

                This is multiline comment.

                + +

                This is tag +now .

                + +

                This is tag + now.

                + +

                This is an empty tag.

                + +

                This is something strange.

                + +

                Auto-closing:

                + +

                Expanding:

                + +

                An invalid tag: <hR>

                + +

                A <p>block tag</p>.

                + +

                An invalid </closing> tag.

                + +

                A tag.

                + +

                An unclosed tag.

                + +

                Some element with | pipe symbol

                + +

                Some element with | pipe symbol

                + +

                Some element with | pipe +symbol|

                + +

                underlined

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.text new file mode 100644 index 0000000000..0156d7c05b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/normal.text @@ -0,0 +1,43 @@ +Empty ! + +title is a title. + +This is . + +This is comment. + +This is multiline comment. + +This is tag +now . + +This is tag + now. + +This is an empty tag. + +This is _something strange_. + +Auto-closing:
                + +Expanding: + +An invalid tag:
                + +A

                block tag

                . + +An invalid tag. + +A tag. + +An unclosed *tag.* + +Some element with | pipe symbol + +Some element with | pipe symbol + +Some element with | pipe +symbol| + +underlined diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.html new file mode 100644 index 0000000000..808f1dbf3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.html @@ -0,0 +1,2 @@ +

                This is raw --version and --version and --version and +---version.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.text new file mode 100644 index 0000000000..5b128fcbe9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/raw_span_elements.text @@ -0,0 +1,2 @@ +This is raw --version and --version and --version and +---version. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.html new file mode 100644 index 0000000000..00b43c1247 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.html @@ -0,0 +1,5 @@ +

                This doit test

                + +

                This doit test

                + +

                This doit</some> test

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.text new file mode 100644 index 0000000000..bc234de42b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/05_html/xml.text @@ -0,0 +1,5 @@ +This doit test + +This doit test + +This doit test diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.html new file mode 100644 index 0000000000..f247c538da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.html @@ -0,0 +1,21 @@ +

                This is some text.

                + +

                There is some real concern about OtHeR!

                + +

                is some Think empty about Oesterreich. CSS und CSS3

                + +

                no abbrev here because there is someone and kulis some

                + +
                  +
                • (X)HTML test
                • +
                • line two
                • +
                + +

                (X)HTML

                + +
                  +
                • test (X)HTML
                • +
                + +

                This is awesome.

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.text new file mode 100644 index 0000000000..1aa8100c59 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev.text @@ -0,0 +1,34 @@ +This is some text. + +*[is some]: Yes it is +*[OtHeR!]: This & that + +*[is some]: It is, yes +*[empty]: + +There *is some real* concern about OtHeR! + +is some Think empty about Oesterreich. CSS und CSS3 + +no abbrev here because there is someone and kulis some + +*[Oesterreich]: Very nice country + +*[CSS]: Cascading +*[CSS3]: Cascading 3 + +* (X)HTML test +* line two + +[(X)HTML](http://en.wikipedia.org/wiki/Xhtml) + +* test (X)HTML + +*[(X)HTML]: (eXtensible) HyperText Markup Language + + +This is awesome. + +{:.testit} +*[awesome]: Some text here +{:.test} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.html new file mode 100644 index 0000000000..108fcfcea8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.html @@ -0,0 +1,2 @@ +
                *[4]: noabbrev
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.text new file mode 100644 index 0000000000..3f3a0e5b6d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/abbrev_defs.text @@ -0,0 +1,5 @@ +*[ABBR]: Some abbreviations + *[one abbr]: one abbrev + *[2 and other]: another + *[3]: yet another + *[4]: noabbrev diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.html new file mode 100644 index 0000000000..f4f6ea4cf5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.html @@ -0,0 +1,9 @@ +

                There is a TXT file here. 1

                + +
                +
                  +
                1. +

                  A TXT file. 

                  +
                2. +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.text new file mode 100644 index 0000000000..e7709cb96d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/abbreviations/in_footnote.text @@ -0,0 +1,5 @@ +There is a TXT file here. [^1] + +*[TXT]: Text File + +[^1]: A TXT file. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.html new file mode 100644 index 0000000000..90eae7d58d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.html @@ -0,0 +1,15 @@ +

                This should be a http://www.example.com/ link. +This should be a john.doe@example.com link. +As should john.doe@example.com this. +As should john_doe@example.com this. +As should CSS@example.com this. +Another ampersand http://www.example.com/?doit&x=y link. +More entities http://www.example.com/?doit&x="y&z=y.

                + +

                Email international übung@macht.den.meister.de, ü.äß@hülse.de +Email invalid: <me@example.com>

                + +

                Autolink with underscore: http://www.example.com/with_under_score

                + +

                http://www.example.com/

                + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.text new file mode 100644 index 0000000000..033e8af43b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/autolinks/url_links.text @@ -0,0 +1,16 @@ +This should be a link. +This should be a link. +As should this. +As should this. +As should this. +Another ampersand link. +More entities . + +Email international <übung@macht.den.meister.de>, <ü.äß@hülse.de> +Email invalid: <[me@example.com](mailtos:me@example.com)> + +Autolink with underscore: + + + +*[CSS]: Cascading diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.html new file mode 100644 index 0000000000..015d594828 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.html @@ -0,0 +1,47 @@ +

                \

                + +

                .

                + +

                *

                + +

                _

                + +

                +

                + +

                -

                + +

                `

                + +

                (

                + +

                )

                + +

                [

                + +

                ]

                + +

                {

                + +

                }

                + +

                #

                + +

                !

                + +

                <<

                + +

                >>

                + +

                :

                + +

                |

                + +

                "

                + +

                '

                + +

                =

                + +

                >

                + +

                <

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.text new file mode 100644 index 0000000000..1c47104acf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/escaped_chars/normal.text @@ -0,0 +1,47 @@ +\\ + +\. + +\* + +\_ + +\+ + +\- + +\` + +\( + +\) + +\[ + +\] + +\{ + +\} + +\# + +\! + +\<< + +\>> + +\: + +\| + +\" + +\' + +\= + +\> + +\< diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.html new file mode 100644 index 0000000000..3544d49fb7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.html @@ -0,0 +1,6 @@ +

                This is a paragraph. +This is a paragraph. +This is a . +This is a paragraph. +This is a {:/comment} simple {:/} paragraph. +This is a {::comment} paragraph.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.text new file mode 100644 index 0000000000..8b9e8d362d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/comment.text @@ -0,0 +1,6 @@ +This is a {::comment}simple{:/} paragraph. +This is a {::comment}simple{:/comment} paragraph. +This is a {::comment}simple {:/other} paragraph{:/comment}. +This is a {::comment/} paragraph. +This is a {:/comment} simple {:/} paragraph. +This is a {::comment} paragraph. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.html new file mode 100644 index 0000000000..63c2c404c6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.html @@ -0,0 +1 @@ +

                This is {::something}paragraph{:/}

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.text new file mode 100644 index 0000000000..a7e77375f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/ignored.text @@ -0,0 +1 @@ +This is {::something}paragraph{:/} diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.html new file mode 100644 index 0000000000..83de93125f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.html @@ -0,0 +1 @@ +

                This is *some* text.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.text new file mode 100644 index 0000000000..57c4b38fd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/nomarkdown.text @@ -0,0 +1 @@ +This is {::nomarkdown}*some*{:/} text. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.html new file mode 100644 index 0000000000..48e3076a96 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.html @@ -0,0 +1 @@ +

                This is an option *true*!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.text new file mode 100644 index 0000000000..e289491ef7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/extension/options.text @@ -0,0 +1 @@ +This is an {::options parse_span_html="false" /} option *true*! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.html new file mode 100644 index 0000000000..c0f3a4757b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.html @@ -0,0 +1,6 @@ +

                This is a span.

                + +

                This is a span.

                + +

                This is an{: .ignored} span ial. +This is an{: .escaped} span ial.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.text new file mode 100644 index 0000000000..8945602b21 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/ial/simple.text @@ -0,0 +1,6 @@ +This is a `span`{: .hund #dog}. + +This is a `span`{: .hund #dog}{: .katz key='val'}. + +This is an{: .ignored} span ial. +This is an\{: .escaped} span ial. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.html new file mode 100644 index 0000000000..11066a509f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.html @@ -0,0 +1,11 @@ +

                This is a line
                +with a line break.

                + +

                This is a line +without a line break.

                + +

                This is a line
                +with a line\
                +break.

                + +

                Line break on last line.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.latex new file mode 100644 index 0000000000..a62ff56167 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.latex @@ -0,0 +1,12 @@ +This is a line\newline +with a line break. + +This is a line +without a line break. + +This is a line \newline +with a line\textbackslash{} \newline +break. + +Line break on last line. + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.text new file mode 100644 index 0000000000..92f866f2e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/line_breaks/normal.text @@ -0,0 +1,11 @@ +This is a line +with a line break. + +This is a line +without a line break. + +This is a line \\ +with a line\\ +break. + +Line break on last line. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.html new file mode 100644 index 0000000000..4e195d18f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.html @@ -0,0 +1 @@ +

                This is f(x)=ax 3+bx 2+cx+df(x) = a{x^3} + b{x^2} + cx + d something!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.options new file mode 100644 index 0000000000..953bdae24b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.options @@ -0,0 +1 @@ +:math_engine: itex2mml diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.text new file mode 100644 index 0000000000..3e20b55e82 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/itex2mml.text @@ -0,0 +1 @@ +This is $$f(x) = a{x^3} + b{x^2} + cx + d$$ something! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.html.19 new file mode 100644 index 0000000000..7317df21c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.html.19 @@ -0,0 +1 @@ +

                Erst einmal eine Formel wie a2+b2=c2a^2+b^2=c^2 innerhalb eines Satzes.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.options new file mode 100644 index 0000000000..108b2654a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.options @@ -0,0 +1 @@ +:math_engine: :katex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.text new file mode 100644 index 0000000000..94af23014b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/katex.text @@ -0,0 +1 @@ +Erst einmal eine Formel wie $$a^2+b^2=c^2$$ innerhalb eines Satzes. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.html.19 new file mode 100644 index 0000000000..df82f90fdd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.html.19 @@ -0,0 +1,27 @@ +

                This is + f + ( + x + ) + = + a + + + x + 3 + + + + + b + + + x + 2 + + + + + c + x + + + d + something!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.options new file mode 100644 index 0000000000..adc27e8aa1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.options @@ -0,0 +1 @@ +:math_engine: mathjaxnode diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.text new file mode 100644 index 0000000000..3e20b55e82 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/mathjaxnode.text @@ -0,0 +1 @@ +This is $$f(x) = a{x^3} + b{x^2} + cx + d$$ something! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.html new file mode 100644 index 0000000000..3b93c542fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.html @@ -0,0 +1 @@ +

                $5+5$ inline math

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.options new file mode 100644 index 0000000000..06d559e545 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.options @@ -0,0 +1 @@ +:math_engine: ~ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.text new file mode 100644 index 0000000000..a22f9fd458 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/no_engine.text @@ -0,0 +1 @@ +$$5+5$$ inline math diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.html new file mode 100644 index 0000000000..d99130e7d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.html @@ -0,0 +1,10 @@ +

                This is some math. With new line characters in between.

                + +

                inline math, $5.00 $$no math$$

                + +

                $$5+5$$ inline math

                + +

                + +

                $$5+5$$

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.text new file mode 100644 index 0000000000..e37a007892 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/normal.text @@ -0,0 +1,10 @@ +This is $$\lambda_\alpha > 5$$ some math. With $$1 ++ 1$$ new line characters in between. + +$$5+5$$ inline math, $5.00 \$$no math$$ + +\$\$5+5$$ inline math + +\$$5+5$$ + +\$\$5+5$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.html new file mode 100644 index 0000000000..60ba8fea66 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.html @@ -0,0 +1 @@ +

                This is f(x)=ax3+bx2+cx+d something!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.options new file mode 100644 index 0000000000..0ef54eb92a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.options @@ -0,0 +1 @@ +:math_engine: ritex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.text new file mode 100644 index 0000000000..3e20b55e82 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/ritex.text @@ -0,0 +1 @@ +This is $$f(x) = a{x^3} + b{x^2} + cx + d$$ something! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.html.19 new file mode 100644 index 0000000000..7317df21c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.html.19 @@ -0,0 +1 @@ +

                Erst einmal eine Formel wie a2+b2=c2a^2+b^2=c^2 innerhalb eines Satzes.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.options new file mode 100644 index 0000000000..214a301b97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.options @@ -0,0 +1 @@ +:math_engine: sskatex diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.text new file mode 100644 index 0000000000..94af23014b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/math/sskatex.text @@ -0,0 +1 @@ +Erst einmal eine Formel wie $$a^2+b^2=c^2$$ innerhalb eines Satzes. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.html new file mode 100644 index 0000000000..96b3b5ce25 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.html @@ -0,0 +1,6 @@ +

                This is the A&O. © 2008 by me +As well \& as this. Some ŗ other +values may ¯ may also show but +not st. like &#xYZ;.

                + +

                This is BS&T; done!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.options new file mode 100644 index 0000000000..036c561983 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.options @@ -0,0 +1 @@ +:entity_output: :as_input diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.text new file mode 100644 index 0000000000..0446f4c519 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities.text @@ -0,0 +1,6 @@ +This is the A&O. © 2008 by me +As well \& as this. Some ŗ other +values may ¯ may also show but +not st. like &#xYZ;. + +This is BS&T; done! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html new file mode 100644 index 0000000000..7507f751b2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html @@ -0,0 +1 @@ +

                This "is" 'the' A&O. © 2008 by me ŗ and λ

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html.19 new file mode 100644 index 0000000000..ed2817bbeb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.html.19 @@ -0,0 +1 @@ +

                This "is" 'the' A&O. © 2008 by me ŗ and λ

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.options new file mode 100644 index 0000000000..32a751e36f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.options @@ -0,0 +1,2 @@ +:entity_output: :as_char +:smart_quotes: apos,apos,quot,quot diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.text new file mode 100644 index 0000000000..279b511523 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_char.text @@ -0,0 +1 @@ +This "is" 'the' A&O. © 2008 by me ŗ and λ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.html new file mode 100644 index 0000000000..d2eec9dd61 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.html @@ -0,0 +1 @@ +

                This is the A&O. © 2008 by me ŗ and λ

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.options new file mode 100644 index 0000000000..036c561983 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.options @@ -0,0 +1 @@ +:entity_output: :as_input diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.text new file mode 100644 index 0000000000..1ddf7cdd92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_as_input.text @@ -0,0 +1 @@ +This is the A&O. © 2008 by me ŗ and λ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.html new file mode 100644 index 0000000000..d04613ee95 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.html @@ -0,0 +1 @@ +

                This is the A&O. © 2008 by me ŗ and λ

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.options new file mode 100644 index 0000000000..2e6e0a1206 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.options @@ -0,0 +1 @@ +:entity_output: :numeric diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.text new file mode 100644 index 0000000000..1ddf7cdd92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_numeric.text @@ -0,0 +1 @@ +This is the A&O. © 2008 by me ŗ and λ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.html new file mode 100644 index 0000000000..258ba147a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.html @@ -0,0 +1 @@ +

                This is the A&O. © 2008 by me ŗ and λ

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.options new file mode 100644 index 0000000000..c195785fba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.options @@ -0,0 +1 @@ +:entity_output: :symbolic diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.text new file mode 100644 index 0000000000..1ddf7cdd92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/entities_symbolic.text @@ -0,0 +1 @@ +This is the A&O. © 2008 by me ŗ and λ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.html new file mode 100644 index 0000000000..dcce4cc381 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.html @@ -0,0 +1 @@ +

                2 > 1 > 0

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.text new file mode 100644 index 0000000000..7dfb7f123c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/greaterthan.text @@ -0,0 +1 @@ +2 > 1 > 0 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.html new file mode 100644 index 0000000000..8ebac23706 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.html @@ -0,0 +1 @@ +

                0 < 1 < 2

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.text new file mode 100644 index 0000000000..038df8bb46 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/lowerthan.text @@ -0,0 +1 @@ +0 < 1 < 2 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.html new file mode 100644 index 0000000000..02d1dbce2e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.html @@ -0,0 +1,40 @@ +

                This is… something—this too–!

                + +

                This «is» some text, « this » too!

                + +

                “Fancy quotes” are ‘cool’, even in the ’80s! +Je t’ aime. You’re a funny one! Thomas’ name +Mark’s name. “…you” +“‘Nested’ quotes are ‘possible’”, too! +‘“Otherway” is “round”’!

                + +

                ‘Opening now!’

                + +

                ’80s are really cool.

                + +

                Cluster’s Last Stand.

                + +

                Nam liber tempor +“…At vero eos et accusam”

                + +

                Single underscores should work.”

                + +

                Single asterisks should work.”

                + +

                Double underscores should work.’

                + +

                Double asterisks should work.’

                + +

                Hurrah!

                + +

                Absolutely.’

                + +

                “…some Text”

                + +

                “… some Text”

                + +

                This: “…some Text”

                + +

                This: “… some Text”

                + +

                ”[foo]” “[foo]” d “[foo]”

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.options new file mode 100644 index 0000000000..4f1c17c63e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.options @@ -0,0 +1 @@ +:entity_output: symbolic diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.text new file mode 100644 index 0000000000..27e090e902 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography.text @@ -0,0 +1,40 @@ +This is... something---this too--! + +This <> some text, << this >> too! + +"Fancy quotes" are 'cool', even in the '80s! +Je t' aime. You're a funny one! Thomas' name +Mark's name. "...you" +"'Nested' quotes are 'possible'", too! +'"Otherway" is "round"'! + +'Opening now!' + +'80s are really cool. + +Cluster's Last Stand. + +Nam liber tempor +"...At vero eos et accusam" + +"_Single underscores_ should work." + +"*Single asterisks* should work." + +'__Double underscores__ should work.' + +'**Double asterisks** should work.' + +"_Hurrah!_" + +'__Absolutely__.' + +"...some Text" + +"... some Text" + +This: "...some Text" + +This: "... some Text" + +"\[foo]" "\[foo]" d "\[foo]" diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.html new file mode 100644 index 0000000000..4a6c2260d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.html @@ -0,0 +1,3 @@ +

                This ... something---this too--!

                + +

                This <<is>> some text, << this >> too!

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.latex b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.latex new file mode 100644 index 0000000000..c7d9ba59a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.latex @@ -0,0 +1,4 @@ +This ... something---this too--! + +This \textless{}\textless{}is\textgreater{}\textgreater{} some text, \textless{}\textless{} this \textgreater{}\textgreater{} too! + diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.options new file mode 100644 index 0000000000..d0a031322d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.options @@ -0,0 +1,8 @@ +typographic_symbols: + hellip: '...' + mdash: '---' + ndash: '--' + laquo: '<<' + raquo: '>>' + laquo_space: '<< ' + raquo_space: ' >>' diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.text new file mode 100644 index 0000000000..a3d59b3786 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases/span/text_substitutions/typography_subst.text @@ -0,0 +1,3 @@ +This ... something---this too--! + +This <> some text, << this >> too! diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.html new file mode 100644 index 0000000000..776d7a15ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.html @@ -0,0 +1,3 @@ +

                header

                + +

                #no header

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.text new file mode 100644 index 0000000000..5e70e2b139 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/atx_header.text @@ -0,0 +1,3 @@ +# header + +#no header diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.html new file mode 100644 index 0000000000..8390d097a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.html @@ -0,0 +1,2 @@ +
                Kramdown::Document.new(text, :input => 'GFM')
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.options new file mode 100644 index 0000000000..72e9bc1eec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.options @@ -0,0 +1 @@ +:enable_coderay: false diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.text new file mode 100644 index 0000000000..98cf3a858c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_disable_highlighting.text @@ -0,0 +1,3 @@ +```ruby +Kramdown::Document.new(text, :input => 'GFM') +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.html new file mode 100644 index 0000000000..8c1079d16f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.html @@ -0,0 +1,20 @@ +
                Three backticks
                +
                + +
                Four backticks
                +
                + +
                Unbalanced bottom heavy
                +
                + +
                +
                1language no space
                +
                +
                +
                + +
                +
                1language with space
                +
                +
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.text new file mode 100644 index 0000000000..fb5c6111f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/backticks_syntax.text @@ -0,0 +1,19 @@ +``` +Three backticks +``` + +```` +Four backticks +```` + +``` +Unbalanced bottom heavy +`````` + +````ruby +language no space +```` + +```` ruby +language with space +```` diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.html new file mode 100644 index 0000000000..0bdefdc3e0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.html @@ -0,0 +1,20 @@ +

                normal

                + +
                require 'kramdown'
                +
                +Kramdown::Document.new(text).to_html
                +
                + +

                indent with tab

                + +
                ```ruby
                +require 'kramdown'
                +
                +Kramdown::Document.new(text).to_html
                +```
                +
                + +

                indent with 2 spaces

                + +
                  console.log("hello");
                +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.options new file mode 100644 index 0000000000..72e9bc1eec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.options @@ -0,0 +1 @@ +:enable_coderay: false diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.text new file mode 100644 index 0000000000..5e3e192cde --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/codeblock_fenced.text @@ -0,0 +1,21 @@ +normal + +```ruby +require 'kramdown' + +Kramdown::Document.new(text).to_html +``` + +indent with tab + + ```ruby + require 'kramdown' + + Kramdown::Document.new(text).to_html + ``` + +indent with 2 spaces + + ```js + console.log("hello"); + ``` diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.html new file mode 100644 index 0000000000..1dfb2f08d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.html @@ -0,0 +1,3 @@ +

                one
                +two
                +three

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.text new file mode 100644 index 0000000000..f1287bde81 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks.text @@ -0,0 +1,3 @@ +one +_two_ +three diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.html new file mode 100644 index 0000000000..e1dba2bfcc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.html @@ -0,0 +1,2 @@ +

                This is just a normal paragraph.
                +Containing a manual line break above.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.options new file mode 100644 index 0000000000..f2da68328b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.options @@ -0,0 +1 @@ +:hard_wrap: false diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.text new file mode 100644 index 0000000000..2fe88b94f3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/hard_line_breaks_off.text @@ -0,0 +1,2 @@ +This is just a normal paragraph. +Containing a manual line break above. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html new file mode 100644 index 0000000000..1e5265073c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html @@ -0,0 +1,27 @@ +

                test

                + +

                variable_name

                + +

                abc def öúß

                + +

                192 abc 192

                + +

                ;.;;

                + +

                variable_name

                + +

                variable_name

                + +

                ;;

                + +

                before after tab

                + +

                with code

                + +

                with  ä space

                + +

                With “smart” quotes

                + +

                with — « typographic » … symbols

                + +

                with

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html.19 new file mode 100644 index 0000000000..b45fe8f367 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.html.19 @@ -0,0 +1,27 @@ +

                test

                + +

                variable_name

                + +

                abc def öúß

                + +

                192 abc 192

                + +

                ;.;;

                + +

                variable_name

                + +

                variable_name

                + +

                ;;

                + +

                before after tab

                + +

                with code

                + +

                with  ä space

                + +

                With “smart” quotes

                + +

                with — « typographic » … symbols

                + +

                with

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.options new file mode 100644 index 0000000000..8776b5524d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.options @@ -0,0 +1 @@ +:auto_ids: true diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.text new file mode 100644 index 0000000000..0a89c0b4ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids.text @@ -0,0 +1,27 @@ +### test {#myid} + +### variable_name + +### abc def öúß + +### 192 abc 192 + +### ;.;; + +### variable_name + +### variable_name + +### ;; + +### before after tab + +### with `code` + +### with  ä space + +### With "smart" quotes + +### with --- << typographic >> ... symbols + +### with $$m=5$$ diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.html new file mode 100644 index 0000000000..4aab0728ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.html @@ -0,0 +1,3 @@ +

                Header 1

                + +

                123

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.options new file mode 100644 index 0000000000..f37255d52b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.options @@ -0,0 +1,2 @@ +:auto_ids: true +:auto_id_prefix: hallo- diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.text new file mode 100644 index 0000000000..acf09fe446 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/header_ids_with_prefix.text @@ -0,0 +1,3 @@ +# Header 1 + +# 123 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html new file mode 100644 index 0000000000..beecad4c3c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html @@ -0,0 +1,3 @@ +

                Header with --ndash

                + +

                with --- << typographic >> ... symbols

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html.19 new file mode 100644 index 0000000000..beecad4c3c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.html.19 @@ -0,0 +1,3 @@ +

                Header with --ndash

                + +

                with --- << typographic >> ... symbols

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.options new file mode 100644 index 0000000000..4a83cd1bb9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.options @@ -0,0 +1 @@ +:gfm_quirks: [no_auto_typographic] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.text new file mode 100644 index 0000000000..f57965114e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/no_typographic.text @@ -0,0 +1,3 @@ +### Header with --ndash + +### with --- << typographic >> ... symbols diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.html new file mode 100644 index 0000000000..41dfb3a6a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.html @@ -0,0 +1,31 @@ +

                A
                + - b

                + +

                This is a list
                +- or is it

                + +

                blockquote
                +> text

                + +

                header
                +# text

                + +

                codeblock fenced
                + +puts hello world +

                + +
                  +
                • +

                  level 1
                  +some text

                  + +

                  begin level 2
                  +* level 2
                  +* level 2

                  +
                • +
                + +

                h1

                +

                ## h2
                +### h3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.options b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.options new file mode 100644 index 0000000000..704f643d0f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.options @@ -0,0 +1 @@ +:gfm_quirks: [] diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.text new file mode 100644 index 0000000000..4e09e0391a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end-disabled.text @@ -0,0 +1,27 @@ +A + - b + +This is a list +- or is it + +blockquote +> text + +header +# text + +codeblock fenced +``` +puts hello world +``` + +* level 1 + some text + + begin level 2 + * level 2 + * level 2 + +# h1 +## h2 +### h3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.html new file mode 100644 index 0000000000..c337d61d96 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.html @@ -0,0 +1,38 @@ +

                A

                +
                  +
                • b
                • +
                + +

                This is a list

                +
                  +
                • or is it
                • +
                + +

                blockquote

                +
                +

                text

                +
                + +

                header

                +

                text

                + +

                codeblock fenced

                +
                puts hello world
                +
                + +
                  +
                • +

                  level 1
                  +some text

                  + +

                  begin level 2

                  +
                    +
                  • level 2
                  • +
                  • level 2
                  • +
                  +
                • +
                + +

                h1

                +

                h2

                +

                h3

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.text new file mode 100644 index 0000000000..4e09e0391a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/paragraph_end.text @@ -0,0 +1,27 @@ +A + - b + +This is a list +- or is it + +blockquote +> text + +header +# text + +codeblock fenced +``` +puts hello world +``` + +* level 1 + some text + + begin level 2 + * level 2 + * level 2 + +# h1 +## h2 +### h3 diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html new file mode 100644 index 0000000000..dad32abfdb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html @@ -0,0 +1,27 @@ +

                This is a test

                + +

                ~This is another test~

                + +

                This is yet another test~

                + +

                ~~ This is a test of it NOT working ~~

                + +

                ~~
                +This
                +is
                +a
                +multiline
                +test
                +~~

                + +

                This is an inline strikethrough test

                + +

                This is an ~~escaped~~ strikethrough.

                + +

                This is a strikethrough with a ~ in the middle

                + +

                I don’t even~ have an extra tilde.

                + +

                This should ~~not be struck.

                + +

                This is a complex strike through *test ~~with nesting involved* here~~.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html.19 b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html.19 new file mode 100644 index 0000000000..ed28995610 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.html.19 @@ -0,0 +1,27 @@ +

                This is a test

                + +

                ~This is another test~

                + +

                This is yet another test~

                + +

                ~~ This is a test of it NOT working ~~

                + +

                ~~
                +This
                +is
                +a
                +multiline
                +test
                +~~

                + +

                This is an inline strikethrough test

                + +

                This is an ~~escaped~~ strikethrough.

                + +

                This is a strikethrough with a ~ in the middle

                + +

                I don’t even~ have an extra tilde.

                + +

                This should ~~not be struck.

                + +

                This is a complex strike through *test ~~with nesting involved* here~~.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.text new file mode 100644 index 0000000000..fbeffc6d5c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/strikethrough.text @@ -0,0 +1,27 @@ +~~This is a test~~ + +~~~This is another test~~~ + +~~This is yet another test~~~ + +~~ This is a test of it NOT working ~~ + +~~ +This +is +a +**multiline** +test +~~ + +This is an ~~_inline_ **strikethrough**~~ test + +This is an \~~escaped~~ strikethrough. + +This is a ~~strikethrough with a ~ in the middle~~ + +I ~~don't even~~~ have an extra tilde. + +This should ~~not be struck. + +This ~~is a complex *strike* through *test ~~with nesting~~ involved* here~~. diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.html new file mode 100644 index 0000000000..a11b553b36 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.html @@ -0,0 +1,40 @@ +

                unordered task list

                + +
                  +
                • first ul task item
                • +
                • second ul task item
                • +
                • third ul task item
                • +
                • fourth ul task item [ ] next
                • +
                + +

                unordered list

                + +
                  +
                • +
                  +

                  first ul item

                  +
                  +
                • +
                • +
                • +
                  test
                  +
                  +
                • +
                • second ul item
                • +
                + +

                ordered list

                + +
                  +
                1. first ol item
                2. +
                3. second ol item
                4. +
                + +

                ordered task list

                + +
                  +
                1. first ol task item
                2. +
                3. second ol task item
                4. +
                5. third ol task item
                6. +
                7. fourth ol task item
                8. +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.text new file mode 100644 index 0000000000..f6ade2faf1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/task_list.text @@ -0,0 +1,26 @@ +unordered task list + +- [ ] first ul task item +- [x] second ul task item +- [X] third ul task item +- [ ] fourth ul task item [ ] next + +unordered list + +- > first ul item +- +- + test +- second ul item + +ordered list + +1. first ol item +2. second ol item + +ordered task list + +1. [ ] first ol task item +2. [x] second ol task item +3. [X] third ol task item +4. [ ] fourth ol task item diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.html b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.html new file mode 100644 index 0000000000..d5ba2e41f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.html @@ -0,0 +1,4 @@ +

                This is just a normal paragraph.
                +Containing a line break.

                + +

                Another paragraph.

                diff --git a/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.text b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.text new file mode 100644 index 0000000000..6b3d7c55c5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/kramdown-1.17.0/test/testcases_gfm/two_para_hard_line_breaks.text @@ -0,0 +1,4 @@ +This is just a normal paragraph. +Containing a line break. + +Another paragraph. diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/History.md b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/History.md new file mode 100644 index 0000000000..2dc8f3d06f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/History.md @@ -0,0 +1,235 @@ +# Liquid Change Log + +## 4.0.0 / 2016-12-14 / branch "4-0-stable" + +### Changed +* Render an opaque internal error by default for non-Liquid::Error (#835) [Dylan Thacker-Smith] +* Ruby 2.0 support dropped (#832) [Dylan Thacker-Smith] +* Add to_number Drop method to allow custom drops to work with number filters (#731) +* Add strict_variables and strict_filters options to detect undefined references (#691) +* Improve loop performance (#681) [Florian Weingarten] +* Rename Drop method `before_method` to `liquid_method_missing` (#661) [Thierry Joyal] +* Add url_decode filter to invert url_encode (#645) [Larry Archer] +* Add global_filter to apply a filter to all output (#610) [Loren Hale] +* Add compact filter (#600) [Carson Reinke] +* Rename deprecated "has_key?" and "has_interrupt?" methods (#593) [Florian Weingarten] +* Include template name with line numbers in render errors (574) [Dylan Thacker-Smith] +* Add sort_natural filter (#554) [Martin Hanzel] +* Add forloop.parentloop as a reference to the parent loop (#520) [Justin Li] +* Block parsing moved to BlockBody class (#458) [Dylan Thacker-Smith] +* Add concat filter to concatenate arrays (#429) [Diogo Beato] +* Ruby 1.9 support dropped (#491) [Justin Li] +* Liquid::Template.file_system's read_template_file method is no longer passed the context. (#441) [James Reid-Smith] +* Remove `liquid_methods` (See https://github.com/Shopify/liquid/pull/568 for replacement) +* Liquid::Template.register_filter raises when the module overrides registered public methods as private or protected (#705) [Gaurav Chande] + +### Fixed + +* Fix variable names being detected as an operator when starting with contains (#788) [Michael Angell] +* Fix include tag used with strict_variables (#828) [QuickPay] +* Fix map filter when value is a Proc (#672) [Guillaume Malette] +* Fix truncate filter when value is not a string (#672) [Guillaume Malette] +* Fix behaviour of escape filter when input is nil (#665) [Tanel Jakobsoo] +* Fix sort filter behaviour with empty array input (#652) [Marcel Cary] +* Fix test failure under certain timezones (#631) [Dylan Thacker-Smith] +* Fix bug in uniq filter (#595) [Florian Weingarten] +* Fix bug when "blank" and "empty" are used as variable names (#592) [Florian Weingarten] +* Fix condition parse order in strict mode (#569) [Justin Li] +* Fix naming of the "context variable" when dynamically including a template (#559) [Justin Li] +* Gracefully accept empty strings in the date filter (#555) [Loren Hale] +* Fix capturing into variables with a hyphen in the name (#505) [Florian Weingarten] +* Fix case sensitivity regression in date standard filter (#499) [Kelley Reynolds] +* Disallow filters with no variable in strict mode (#475) [Justin Li] +* Disallow variable names in the strict parser that are not valid in the lax parser (#463) [Justin Li] +* Fix BlockBody#warnings taking exponential time to compute (#486) [Justin Li] + +## 3.0.5 / 2015-07-23 / branch "3-0-stable" + +* Fix test failure under certain timezones [Dylan Thacker-Smith] + +## 3.0.4 / 2015-07-17 + +* Fix chained access to multi-dimensional hashes [Florian Weingarten] + +## 3.0.3 / 2015-05-28 + +* Fix condition parse order in strict mode (#569) [Justin Li] + +## 3.0.2 / 2015-04-24 + +* Expose VariableLookup private members (#551) [Justin Li] +* Documentation fixes + +## 3.0.1 / 2015-01-23 + +* Remove duplicate `index0` key in TableRow tag (#502) [Alfred Xing] + +## 3.0.0 / 2014-11-12 + +* Removed Block#end_tag. Instead, override parse with `super` followed by your code. See #446 [Dylan Thacker-Smith] +* Fixed condition with wrong data types (#423) [Bogdan Gusiev] +* Add url_encode to standard filters (#421) [Derrick Reimer] +* Add uniq to standard filters [Florian Weingarten] +* Add exception_handler feature (#397) and #254 [Bogdan Gusiev, Florian Weingarten] +* Optimize variable parsing to avoid repeated regex evaluation during template rendering #383 [Jason Hiltz-Laforge] +* Optimize checking for block interrupts to reduce object allocation #380 [Jason Hiltz-Laforge] +* Properly set context rethrow_errors on render! #349 [Thierry Joyal] +* Fix broken rendering of variables which are equal to false (#345) [Florian Weingarten] +* Remove ActionView template handler [Dylan Thacker-Smith] +* Freeze lots of string literals for new Ruby 2.1 optimization (#297) [Florian Weingarten] +* Allow newlines in tags and variables (#324) [Dylan Thacker-Smith] +* Tag#parse is called after initialize, which now takes options instead of tokens as the 3rd argument. See #321 [Dylan Thacker-Smith] +* Raise `Liquid::ArgumentError` instead of `::ArgumentError` when filter has wrong number of arguments #309 [Bogdan Gusiev] +* Add a to_s default for liquid drops (#306) [Adam Doeler] +* Add strip, lstrip, and rstrip to standard filters [Florian Weingarten] +* Make if, for & case tags return complete and consistent nodelists (#250) [Nick Jones] +* Prevent arbitrary method invocation on condition objects (#274) [Dylan Thacker-Smith] +* Don't call to_sym when creating conditions for security reasons (#273) [Bouke van der Bijl] +* Fix resource counting bug with respond_to?(:length) (#263) [Florian Weingarten] +* Allow specifying custom patterns for template filenames (#284) [Andrei Gladkyi] +* Allow drops to optimize loading a slice of elements (#282) [Tom Burns] +* Support for passing variables to snippets in subdirs (#271) [Joost Hietbrink] +* Add a class cache to avoid runtime extend calls (#249) [James Tucker] +* Remove some legacy Ruby 1.8 compatibility code (#276) [Florian Weingarten] +* Add default filter to standard filters (#267) [Derrick Reimer] +* Add optional strict parsing and warn parsing (#235) [Tristan Hume] +* Add I18n syntax error translation (#241) [Simon Hørup Eskildsen, Sirupsen] +* Make sort filter work on enumerable drops (#239) [Florian Weingarten] +* Fix clashing method names in enumerable drops (#238) [Florian Weingarten] +* Make map filter work on enumerable drops (#233) [Florian Weingarten] +* Improved whitespace stripping for blank blocks, related to #216 [Florian Weingarten] + +## 2.6.3 / 2015-07-23 / branch "2-6-stable" + +* Fix test failure under certain timezones [Dylan Thacker-Smith] + +## 2.6.2 / 2015-01-23 + +* Remove duplicate hash key [Parker Moore] + +## 2.6.1 / 2014-01-10 + +Security fix, cherry-picked from master (4e14a65): +* Don't call to_sym when creating conditions for security reasons (#273) [Bouke van der Bijl] +* Prevent arbitrary method invocation on condition objects (#274) [Dylan Thacker-Smith] + +## 2.6.0 / 2013-11-25 + +IMPORTANT: Liquid 2.6 is going to be the last version of Liquid which maintains explicit Ruby 1.8 compatability. +The following releases will only be tested against Ruby 1.9 and Ruby 2.0 and are likely to break on Ruby 1.8. + +* Bugfix for #106: fix example servlet [gnowoel] +* Bugfix for #97: strip_html filter supports multi-line tags [Jo Liss] +* Bugfix for #114: strip_html filter supports style tags [James Allardice] +* Bugfix for #117: 'now' support for date filter in Ruby 1.9 [Notre Dame Webgroup] +* Bugfix for #166: truncate filter on UTF-8 strings with Ruby 1.8 [Florian Weingarten] +* Bugfix for #204: 'raw' parsing bug [Florian Weingarten] +* Bugfix for #150: 'for' parsing bug [Peter Schröder] +* Bugfix for #126: Strip CRLF in strip_newline [Peter Schröder] +* Bugfix for #174, "can't convert Fixnum into String" for "replace" [jsw0528] +* Allow a Liquid::Drop to be passed into Template#render [Daniel Huckstep] +* Resource limits [Florian Weingarten] +* Add reverse filter [Jay Strybis] +* Add utf-8 support +* Use array instead of Hash to keep the registered filters [Tasos Stathopoulos] +* Cache tokenized partial templates [Tom Burns] +* Avoid warnings in Ruby 1.9.3 [Marcus Stollsteimer] +* Better documentation for 'include' tag (closes #163) [Peter Schröder] +* Use of BigDecimal on filters to have better precision (closes #155) [Arthur Nogueira Neves] + +## 2.5.5 / 2014-01-10 / branch "2-5-stable" + +Security fix, cherry-picked from master (4e14a65): +* Don't call to_sym when creating conditions for security reasons (#273) [Bouke van der Bijl] +* Prevent arbitrary method invocation on condition objects (#274) [Dylan Thacker-Smith] + +## 2.5.4 / 2013-11-11 + +* Fix "can't convert Fixnum into String" for "replace" (#173), [jsw0528] + +## 2.5.3 / 2013-10-09 + +* #232, #234, #237: Fix map filter bugs [Florian Weingarten] + +## 2.5.2 / 2013-09-03 / deleted + +Yanked from rubygems, as it contained too many changes that broke compatibility. Those changes will be on following major releases. + +## 2.5.1 / 2013-07-24 + +* #230: Fix security issue with map filter, Use invoke_drop in map filter [Florian Weingarten] + +## 2.5.0 / 2013-03-06 + +* Prevent Object methods from being called on drops +* Avoid symbol injection from liquid +* Added break and continue statements +* Fix filter parser for args without space separators +* Add support for filter keyword arguments + + +## 2.4.0 / 2012-08-03 + +* Performance improvements +* Allow filters in `assign` +* Add `modulo` filter +* Ruby 1.8, 1.9, and Rubinius compatibility fixes +* Add support for `quoted['references']` in `tablerow` +* Add support for Enumerable to `tablerow` +* `strip_html` filter removes html comments + + +## 2.3.0 / 2011-10-16 + +* Several speed/memory improvements +* Numerous bug fixes +* Added support for MRI 1.9, Rubinius, and JRuby +* Added support for integer drop parameters +* Added epoch support to `date` filter +* New `raw` tag that suppresses parsing +* Added `else` option to `for` tag +* New `increment` tag +* New `split` filter + + +## 2.2.1 / 2010-08-23 + +* Added support for literal tags + + +## 2.2.0 / 2010-08-22 + +* Compatible with Ruby 1.8.7, 1.9.1 and 1.9.2-p0 +* Merged some changed made by the community + + +## 1.9.0 / 2008-03-04 + +* Fixed gem install rake task +* Improve Error encapsulation in liquid by maintaining a own set of exceptions instead of relying on ruby build ins + + +## Before 1.9.0 + +* Added If with or / and expressions +* Implemented .to_liquid for all objects which can be passed to liquid like Strings Arrays Hashes Numerics and Booleans. To export new objects to liquid just implement .to_liquid on them and return objects which themselves have .to_liquid methods. +* Added more tags to standard library +* Added include tag ( like partials in rails ) +* [...] Gazillion of detail improvements +* Added strainers as filter hosts for better security [Tobias Luetke] +* Fixed that rails integration would call filter with the wrong "self" [Michael Geary] +* Fixed bad error reporting when a filter called a method which doesn't exist. Liquid told you that it couldn't find the filter which was obviously misleading [Tobias Luetke] +* Removed count helper from standard lib. use size [Tobias Luetke] +* Fixed bug with string filter parameters failing to tolerate commas in strings. [Paul Hammond] +* Improved filter parameters. Filter parameters are now context sensitive; Types are resolved according to the rules of the context. Multiple parameters are now separated by the Liquid::ArgumentSeparator: , by default [Paul Hammond] + {{ 'Typo' | link_to: 'http://typo.leetsoft.com', 'Typo - a modern weblog engine' }} +* Added Liquid::Drop. A base class which you can use for exporting proxy objects to liquid which can acquire more data when used in liquid. [Tobias Luetke] + + class ProductDrop < Liquid::Drop + def top_sales + Shop.current.products.find(:all, :order => 'sales', :limit => 10 ) + end + end + t = Liquid::Template.parse( ' {% for product in product.top_sales %} {{ product.name }} {% endfor %} ' ) + t.render('product' => ProductDrop.new ) +* Added filter parameters support. Example: {{ date | format_date: "%Y" }} [Paul Hammond] diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/LICENSE b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/LICENSE new file mode 100644 index 0000000000..926b04eb58 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2005, 2006 Tobias Luetke + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/README.md b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/README.md new file mode 100644 index 0000000000..77e9ff435d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/README.md @@ -0,0 +1,108 @@ +[![Build Status](https://api.travis-ci.org/Shopify/liquid.svg?branch=master)](http://travis-ci.org/Shopify/liquid) +[![Inline docs](http://inch-ci.org/github/Shopify/liquid.svg?branch=master)](http://inch-ci.org/github/Shopify/liquid) + +# Liquid template engine + +* [Contributing guidelines](CONTRIBUTING.md) +* [Version history](History.md) +* [Liquid documentation from Shopify](http://docs.shopify.com/themes/liquid-basics) +* [Liquid Wiki at GitHub](https://github.com/Shopify/liquid/wiki) +* [Website](http://liquidmarkup.org/) + +## Introduction + +Liquid is a template engine which was written with very specific requirements: + +* It has to have beautiful and simple markup. Template engines which don't produce good looking markup are no fun to use. +* It needs to be non evaling and secure. Liquid templates are made so that users can edit them. You don't want to run code on your server which your users wrote. +* It has to be stateless. Compile and render steps have to be separate so that the expensive parsing and compiling can be done once and later on you can just render it passing in a hash with local variables and objects. + +## Why you should use Liquid + +* You want to allow your users to edit the appearance of your application but don't want them to run **insecure code on your server**. +* You want to render templates directly from the database. +* You like smarty (PHP) style template engines. +* You need a template engine which does HTML just as well as emails. +* You don't like the markup of your current templating engine. + +## What does it look like? + +```html +
                  + {% for product in products %} +
                • +

                  {{ product.name }}

                  + Only {{ product.price | price }} + + {{ product.description | prettyprint | paragraph }} +
                • + {% endfor %} +
                +``` + +## How to use Liquid + +Install Liquid by adding `gem 'liquid'` to your gemfile. + +Liquid supports a very simple API based around the Liquid::Template class. +For standard use you can just pass it the content of a file and call render with a parameters hash. + +```ruby +@template = Liquid::Template.parse("hi {{name}}") # Parses and compiles the template +@template.render('name' => 'tobi') # => "hi tobi" +``` + +### Error Modes + +Setting the error mode of Liquid lets you specify how strictly you want your templates to be interpreted. +Normally the parser is very lax and will accept almost anything without error. Unfortunately this can make +it very hard to debug and can lead to unexpected behaviour. + +Liquid also comes with a stricter parser that can be used when editing templates to give better error messages +when templates are invalid. You can enable this new parser like this: + +```ruby +Liquid::Template.error_mode = :strict # Raises a SyntaxError when invalid syntax is used +Liquid::Template.error_mode = :warn # Adds errors to template.errors but continues as normal +Liquid::Template.error_mode = :lax # The default mode, accepts almost anything. +``` + +If you want to set the error mode only on specific templates you can pass `:error_mode` as an option to `parse`: +```ruby +Liquid::Template.parse(source, :error_mode => :strict) +``` +This is useful for doing things like enabling strict mode only in the theme editor. + +It is recommended that you enable `:strict` or `:warn` mode on new apps to stop invalid templates from being created. +It is also recommended that you use it in the template editors of existing apps to give editors better error messages. + +### Undefined variables and filters + +By default, the renderer doesn't raise or in any other way notify you if some variables or filters are missing, i.e. not passed to the `render` method. +You can improve this situation by passing `strict_variables: true` and/or `strict_filters: true` options to the `render` method. +When one of these options is set to true, all errors about undefined variables and undefined filters will be stored in `errors` array of a `Liquid::Template` instance. +Here are some examples: + +```ruby +template = Liquid::Template.parse("{{x}} {{y}} {{z.a}} {{z.b}}") +template.render({ 'x' => 1, 'z' => { 'a' => 2 } }, { strict_variables: true }) +#=> '1 2 ' # when a variable is undefined, it's rendered as nil +template.errors +#=> [#, #] +``` + +```ruby +template = Liquid::Template.parse("{{x | filter1 | upcase}}") +template.render({ 'x' => 'foo' }, { strict_filters: true }) +#=> '' # when at least one filter in the filter chain is undefined, a whole expression is rendered as nil +template.errors +#=> [#] +``` + +If you want to raise on a first exception instead of pushing all of them in `errors`, you can use `render!` method: + +```ruby +template = Liquid::Template.parse("{{x}} {{y}}") +template.render!({ 'x' => 1}, { strict_variables: true }) +#=> Liquid::UndefinedVariable: Liquid error: undefined variable y +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid.rb new file mode 100644 index 0000000000..7d9da2696c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid.rb @@ -0,0 +1,79 @@ +# Copyright (c) 2005 Tobias Luetke +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module Liquid + FilterSeparator = /\|/ + ArgumentSeparator = ','.freeze + FilterArgumentSeparator = ':'.freeze + VariableAttributeSeparator = '.'.freeze + WhitespaceControl = '-'.freeze + TagStart = /\{\%/ + TagEnd = /\%\}/ + VariableSignature = /\(?[\w\-\.\[\]]\)?/ + VariableSegment = /[\w\-]/ + VariableStart = /\{\{/ + VariableEnd = /\}\}/ + VariableIncompleteEnd = /\}\}?/ + QuotedString = /"[^"]*"|'[^']*'/ + QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/o + TagAttributes = /(\w+)\s*\:\s*(#{QuotedFragment})/o + AnyStartingTag = /#{TagStart}|#{VariableStart}/o + PartialTemplateParser = /#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd}/om + TemplateParser = /(#{PartialTemplateParser}|#{AnyStartingTag})/om + VariableParser = /\[[^\]]+\]|#{VariableSegment}+\??/o + + singleton_class.send(:attr_accessor, :cache_classes) + self.cache_classes = true +end + +require "liquid/version" +require 'liquid/lexer' +require 'liquid/parser' +require 'liquid/i18n' +require 'liquid/drop' +require 'liquid/tablerowloop_drop' +require 'liquid/forloop_drop' +require 'liquid/extensions' +require 'liquid/errors' +require 'liquid/interrupts' +require 'liquid/strainer' +require 'liquid/expression' +require 'liquid/context' +require 'liquid/parser_switching' +require 'liquid/tag' +require 'liquid/block' +require 'liquid/block_body' +require 'liquid/document' +require 'liquid/variable' +require 'liquid/variable_lookup' +require 'liquid/range_lookup' +require 'liquid/file_system' +require 'liquid/resource_limits' +require 'liquid/template' +require 'liquid/standardfilters' +require 'liquid/condition' +require 'liquid/utils' +require 'liquid/tokenizer' +require 'liquid/parse_context' + +# Load all the tags of the standard library +# +Dir["#{__dir__}/liquid/tags/*.rb"].each { |f| require f } diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block.rb new file mode 100644 index 0000000000..00c59b2d11 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block.rb @@ -0,0 +1,77 @@ +module Liquid + class Block < Tag + MAX_DEPTH = 100 + + def initialize(tag_name, markup, options) + super + @blank = true + end + + def parse(tokens) + @body = BlockBody.new + while parse_body(@body, tokens) + end + end + + def render(context) + @body.render(context) + end + + def blank? + @blank + end + + def nodelist + @body.nodelist + end + + def unknown_tag(tag, _params, _tokens) + if tag == 'else'.freeze + raise SyntaxError.new(parse_context.locale.t("errors.syntax.unexpected_else".freeze, + block_name: block_name)) + elsif tag.start_with?('end'.freeze) + raise SyntaxError.new(parse_context.locale.t("errors.syntax.invalid_delimiter".freeze, + tag: tag, + block_name: block_name, + block_delimiter: block_delimiter)) + else + raise SyntaxError.new(parse_context.locale.t("errors.syntax.unknown_tag".freeze, tag: tag)) + end + end + + def block_name + @tag_name + end + + def block_delimiter + @block_delimiter ||= "end#{block_name}" + end + + protected + + def parse_body(body, tokens) + if parse_context.depth >= MAX_DEPTH + raise StackLevelError, "Nesting too deep".freeze + end + parse_context.depth += 1 + begin + body.parse(tokens, parse_context) do |end_tag_name, end_tag_params| + @blank &&= body.blank? + + return false if end_tag_name == block_delimiter + unless end_tag_name + raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_never_closed".freeze, block_name: block_name)) + end + + # this tag is not registered with the system + # pass it to the current block for special handling or error reporting + unknown_tag(end_tag_name, end_tag_params, tokens) + end + ensure + parse_context.depth -= 1 + end + + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block_body.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block_body.rb new file mode 100644 index 0000000000..266d8ed739 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/block_body.rb @@ -0,0 +1,142 @@ +module Liquid + class BlockBody + FullToken = /\A#{TagStart}#{WhitespaceControl}?\s*(\w+)\s*(.*?)#{WhitespaceControl}?#{TagEnd}\z/om + ContentOfVariable = /\A#{VariableStart}#{WhitespaceControl}?(.*?)#{WhitespaceControl}?#{VariableEnd}\z/om + WhitespaceOrNothing = /\A\s*\z/ + TAGSTART = "{%".freeze + VARSTART = "{{".freeze + + attr_reader :nodelist + + def initialize + @nodelist = [] + @blank = true + end + + def parse(tokenizer, parse_context) + parse_context.line_number = tokenizer.line_number + while token = tokenizer.shift + next if token.empty? + case + when token.start_with?(TAGSTART) + whitespace_handler(token, parse_context) + unless token =~ FullToken + raise_missing_tag_terminator(token, parse_context) + end + tag_name = $1 + markup = $2 + # fetch the tag from registered blocks + unless tag = registered_tags[tag_name] + # end parsing if we reach an unknown tag and let the caller decide + # determine how to proceed + return yield tag_name, markup + end + new_tag = tag.parse(tag_name, markup, tokenizer, parse_context) + @blank &&= new_tag.blank? + @nodelist << new_tag + when token.start_with?(VARSTART) + whitespace_handler(token, parse_context) + @nodelist << create_variable(token, parse_context) + @blank = false + else + if parse_context.trim_whitespace + token.lstrip! + end + parse_context.trim_whitespace = false + @nodelist << token + @blank &&= !!(token =~ WhitespaceOrNothing) + end + parse_context.line_number = tokenizer.line_number + end + + yield nil, nil + end + + def whitespace_handler(token, parse_context) + if token[2] == WhitespaceControl + previous_token = @nodelist.last + if previous_token.is_a? String + previous_token.rstrip! + end + end + parse_context.trim_whitespace = (token[-3] == WhitespaceControl) + end + + def blank? + @blank + end + + def render(context) + output = [] + context.resource_limits.render_score += @nodelist.length + + idx = 0 + while node = @nodelist[idx] + case node + when String + check_resources(context, node) + output << node + when Variable + render_node_to_output(node, output, context) + when Block + render_node_to_output(node, output, context, node.blank?) + break if context.interrupt? # might have happened in a for-block + when Continue, Break + # If we get an Interrupt that means the block must stop processing. An + # Interrupt is any command that stops block execution such as {% break %} + # or {% continue %} + context.push_interrupt(node.interrupt) + break + else # Other non-Block tags + render_node_to_output(node, output, context) + end + idx += 1 + end + + output.join + end + + private + + def render_node_to_output(node, output, context, skip_output = false) + node_output = node.render(context) + node_output = node_output.is_a?(Array) ? node_output.join : node_output.to_s + check_resources(context, node_output) + output << node_output unless skip_output + rescue MemoryError => e + raise e + rescue UndefinedVariable, UndefinedDropMethod, UndefinedFilter => e + context.handle_error(e, node.line_number) + output << nil + rescue ::StandardError => e + line_number = node.is_a?(String) ? nil : node.line_number + output << context.handle_error(e, line_number) + end + + def check_resources(context, node_output) + context.resource_limits.render_length += node_output.length + return unless context.resource_limits.reached? + raise MemoryError.new("Memory limits exceeded".freeze) + end + + def create_variable(token, parse_context) + token.scan(ContentOfVariable) do |content| + markup = content.first + return Variable.new(markup, parse_context) + end + raise_missing_variable_terminator(token, parse_context) + end + + def raise_missing_tag_terminator(token, parse_context) + raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_termination".freeze, token: token, tag_end: TagEnd.inspect)) + end + + def raise_missing_variable_terminator(token, parse_context) + raise SyntaxError.new(parse_context.locale.t("errors.syntax.variable_termination".freeze, token: token, tag_end: VariableEnd.inspect)) + end + + def registered_tags + Template.tags + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/condition.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/condition.rb new file mode 100644 index 0000000000..3e798498c5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/condition.rb @@ -0,0 +1,142 @@ +module Liquid + # Container for liquid nodes which conveniently wraps decision making logic + # + # Example: + # + # c = Condition.new(1, '==', 1) + # c.evaluate #=> true + # + class Condition #:nodoc: + @@operators = { + '=='.freeze => ->(cond, left, right) { cond.send(:equal_variables, left, right) }, + '!='.freeze => ->(cond, left, right) { !cond.send(:equal_variables, left, right) }, + '<>'.freeze => ->(cond, left, right) { !cond.send(:equal_variables, left, right) }, + '<'.freeze => :<, + '>'.freeze => :>, + '>='.freeze => :>=, + '<='.freeze => :<=, + 'contains'.freeze => lambda do |cond, left, right| + if left && right && left.respond_to?(:include?) + right = right.to_s if left.is_a?(String) + left.include?(right) + else + false + end + end + } + + def self.operators + @@operators + end + + attr_reader :attachment + attr_accessor :left, :operator, :right + + def initialize(left = nil, operator = nil, right = nil) + @left = left + @operator = operator + @right = right + @child_relation = nil + @child_condition = nil + end + + def evaluate(context = Context.new) + condition = self + result = nil + loop do + result = interpret_condition(condition.left, condition.right, condition.operator, context) + + case condition.child_relation + when :or + break if result + when :and + break unless result + else + break + end + condition = condition.child_condition + end + result + end + + def or(condition) + @child_relation = :or + @child_condition = condition + end + + def and(condition) + @child_relation = :and + @child_condition = condition + end + + def attach(attachment) + @attachment = attachment + end + + def else? + false + end + + def inspect + "#" + end + + protected + + attr_reader :child_relation, :child_condition + + private + + def equal_variables(left, right) + if left.is_a?(Liquid::Expression::MethodLiteral) + if right.respond_to?(left.method_name) + return right.send(left.method_name) + else + return nil + end + end + + if right.is_a?(Liquid::Expression::MethodLiteral) + if left.respond_to?(right.method_name) + return left.send(right.method_name) + else + return nil + end + end + + left == right + end + + def interpret_condition(left, right, op, context) + # If the operator is empty this means that the decision statement is just + # a single variable. We can just poll this variable from the context and + # return this as the result. + return context.evaluate(left) if op.nil? + + left = context.evaluate(left) + right = context.evaluate(right) + + operation = self.class.operators[op] || raise(Liquid::ArgumentError.new("Unknown operator #{op}")) + + if operation.respond_to?(:call) + operation.call(self, left, right) + elsif left.respond_to?(operation) && right.respond_to?(operation) && !left.is_a?(Hash) && !right.is_a?(Hash) + begin + left.send(operation, right) + rescue ::ArgumentError => e + raise Liquid::ArgumentError.new(e.message) + end + end + end + end + + class ElseCondition < Condition + def else? + true + end + + def evaluate(_context) + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/context.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/context.rb new file mode 100644 index 0000000000..2dcc6af8cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/context.rb @@ -0,0 +1,226 @@ +module Liquid + # Context keeps the variable stack and resolves variables, as well as keywords + # + # context['variable'] = 'testing' + # context['variable'] #=> 'testing' + # context['true'] #=> true + # context['10.2232'] #=> 10.2232 + # + # context.stack do + # context['bob'] = 'bobsen' + # end + # + # context['bob'] #=> nil class Context + class Context + attr_reader :scopes, :errors, :registers, :environments, :resource_limits + attr_accessor :exception_renderer, :template_name, :partial, :global_filter, :strict_variables, :strict_filters + + def initialize(environments = {}, outer_scope = {}, registers = {}, rethrow_errors = false, resource_limits = nil) + @environments = [environments].flatten + @scopes = [(outer_scope || {})] + @registers = registers + @errors = [] + @partial = false + @strict_variables = false + @resource_limits = resource_limits || ResourceLimits.new(Template.default_resource_limits) + squash_instance_assigns_with_environments + + @this_stack_used = false + + self.exception_renderer = Template.default_exception_renderer + if rethrow_errors + self.exception_renderer = ->(e) { raise } + end + + @interrupts = [] + @filters = [] + @global_filter = nil + end + + def warnings + @warnings ||= [] + end + + def strainer + @strainer ||= Strainer.create(self, @filters) + end + + # Adds filters to this context. + # + # Note that this does not register the filters with the main Template object. see Template.register_filter + # for that + def add_filters(filters) + filters = [filters].flatten.compact + @filters += filters + @strainer = nil + end + + def apply_global_filter(obj) + global_filter.nil? ? obj : global_filter.call(obj) + end + + # are there any not handled interrupts? + def interrupt? + !@interrupts.empty? + end + + # push an interrupt to the stack. this interrupt is considered not handled. + def push_interrupt(e) + @interrupts.push(e) + end + + # pop an interrupt from the stack + def pop_interrupt + @interrupts.pop + end + + def handle_error(e, line_number = nil) + e = internal_error unless e.is_a?(Liquid::Error) + e.template_name ||= template_name + e.line_number ||= line_number + errors.push(e) + exception_renderer.call(e).to_s + end + + def invoke(method, *args) + strainer.invoke(method, *args).to_liquid + end + + # Push new local scope on the stack. use Context#stack instead + def push(new_scope = {}) + @scopes.unshift(new_scope) + raise StackLevelError, "Nesting too deep".freeze if @scopes.length > Block::MAX_DEPTH + end + + # Merge a hash of variables in the current local scope + def merge(new_scopes) + @scopes[0].merge!(new_scopes) + end + + # Pop from the stack. use Context#stack instead + def pop + raise ContextError if @scopes.size == 1 + @scopes.shift + end + + # Pushes a new local scope on the stack, pops it at the end of the block + # + # Example: + # context.stack do + # context['var'] = 'hi' + # end + # + # context['var] #=> nil + def stack(new_scope = nil) + old_stack_used = @this_stack_used + if new_scope + push(new_scope) + @this_stack_used = true + else + @this_stack_used = false + end + + yield + ensure + pop if @this_stack_used + @this_stack_used = old_stack_used + end + + def clear_instance_assigns + @scopes[0] = {} + end + + # Only allow String, Numeric, Hash, Array, Proc, Boolean or Liquid::Drop + def []=(key, value) + unless @this_stack_used + @this_stack_used = true + push({}) + end + @scopes[0][key] = value + end + + # Look up variable, either resolve directly after considering the name. We can directly handle + # Strings, digits, floats and booleans (true,false). + # If no match is made we lookup the variable in the current scope and + # later move up to the parent blocks to see if we can resolve the variable somewhere up the tree. + # Some special keywords return symbols. Those symbols are to be called on the rhs object in expressions + # + # Example: + # products == empty #=> products.empty? + def [](expression) + evaluate(Expression.parse(expression)) + end + + def key?(key) + self[key] != nil + end + + def evaluate(object) + object.respond_to?(:evaluate) ? object.evaluate(self) : object + end + + # Fetches an object starting at the local scope and then moving up the hierachy + def find_variable(key, raise_on_not_found: true) + # This was changed from find() to find_index() because this is a very hot + # path and find_index() is optimized in MRI to reduce object allocation + index = @scopes.find_index { |s| s.key?(key) } + scope = @scopes[index] if index + + variable = nil + + if scope.nil? + @environments.each do |e| + variable = lookup_and_evaluate(e, key, raise_on_not_found: raise_on_not_found) + # When lookup returned a value OR there is no value but the lookup also did not raise + # then it is the value we are looking for. + if !variable.nil? || @strict_variables && raise_on_not_found + scope = e + break + end + end + end + + scope ||= @environments.last || @scopes.last + variable ||= lookup_and_evaluate(scope, key, raise_on_not_found: raise_on_not_found) + + variable = variable.to_liquid + variable.context = self if variable.respond_to?(:context=) + + variable + end + + def lookup_and_evaluate(obj, key, raise_on_not_found: true) + if @strict_variables && raise_on_not_found && obj.respond_to?(:key?) && !obj.key?(key) + raise Liquid::UndefinedVariable, "undefined variable #{key}" + end + + value = obj[key] + + if value.is_a?(Proc) && obj.respond_to?(:[]=) + obj[key] = (value.arity == 0) ? value.call : value.call(self) + else + value + end + end + + private + + def internal_error + # raise and catch to set backtrace and cause on exception + raise Liquid::InternalError, 'internal' + rescue Liquid::InternalError => exc + exc + end + + def squash_instance_assigns_with_environments + @scopes.last.each_key do |k| + @environments.each do |env| + if env.key?(k) + scopes.last[k] = lookup_and_evaluate(env, k) + break + end + end + end + end # squash_instance_assigns_with_environments + end # Context +end # Liquid diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/document.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/document.rb new file mode 100644 index 0000000000..d035dd466e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/document.rb @@ -0,0 +1,27 @@ +module Liquid + class Document < BlockBody + def self.parse(tokens, parse_context) + doc = new + doc.parse(tokens, parse_context) + doc + end + + def parse(tokens, parse_context) + super do |end_tag_name, end_tag_params| + unknown_tag(end_tag_name, parse_context) if end_tag_name + end + rescue SyntaxError => e + e.line_number ||= parse_context.line_number + raise + end + + def unknown_tag(tag, parse_context) + case tag + when 'else'.freeze, 'end'.freeze + raise SyntaxError.new(parse_context.locale.t("errors.syntax.unexpected_outer_tag".freeze, tag: tag)) + else + raise SyntaxError.new(parse_context.locale.t("errors.syntax.unknown_tag".freeze, tag: tag)) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/drop.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/drop.rb new file mode 100644 index 0000000000..6b5aa99330 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/drop.rb @@ -0,0 +1,78 @@ +require 'set' + +module Liquid + # A drop in liquid is a class which allows you to export DOM like things to liquid. + # Methods of drops are callable. + # The main use for liquid drops is to implement lazy loaded objects. + # If you would like to make data available to the web designers which you don't want loaded unless needed then + # a drop is a great way to do that. + # + # Example: + # + # class ProductDrop < Liquid::Drop + # def top_sales + # Shop.current.products.find(:all, :order => 'sales', :limit => 10 ) + # end + # end + # + # tmpl = Liquid::Template.parse( ' {% for product in product.top_sales %} {{ product.name }} {%endfor%} ' ) + # tmpl.render('product' => ProductDrop.new ) # will invoke top_sales query. + # + # Your drop can either implement the methods sans any parameters + # or implement the liquid_method_missing(name) method which is a catch all. + class Drop + attr_writer :context + + # Catch all for the method + def liquid_method_missing(method) + return nil unless @context && @context.strict_variables + raise Liquid::UndefinedDropMethod, "undefined method #{method}" + end + + # called by liquid to invoke a drop + def invoke_drop(method_or_key) + if self.class.invokable?(method_or_key) + send(method_or_key) + else + liquid_method_missing(method_or_key) + end + end + + def key?(_name) + true + end + + def inspect + self.class.to_s + end + + def to_liquid + self + end + + def to_s + self.class.name + end + + alias_method :[], :invoke_drop + + # Check for method existence without invoking respond_to?, which creates symbols + def self.invokable?(method_name) + invokable_methods.include?(method_name.to_s) + end + + def self.invokable_methods + @invokable_methods ||= begin + blacklist = Liquid::Drop.public_instance_methods + [:each] + + if include?(Enumerable) + blacklist += Enumerable.public_instance_methods + blacklist -= [:sort, :count, :first, :min, :max, :include?] + end + + whitelist = [:to_liquid] + (public_instance_methods - blacklist) + Set.new(whitelist.map(&:to_s)) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/errors.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/errors.rb new file mode 100644 index 0000000000..defa5ea97f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/errors.rb @@ -0,0 +1,56 @@ +module Liquid + class Error < ::StandardError + attr_accessor :line_number + attr_accessor :template_name + attr_accessor :markup_context + + def to_s(with_prefix = true) + str = "" + str << message_prefix if with_prefix + str << super() + + if markup_context + str << " " + str << markup_context + end + + str + end + + private + + def message_prefix + str = "" + if is_a?(SyntaxError) + str << "Liquid syntax error" + else + str << "Liquid error" + end + + if line_number + str << " (" + str << template_name << " " if template_name + str << "line " << line_number.to_s << ")" + end + + str << ": " + str + end + end + + ArgumentError = Class.new(Error) + ContextError = Class.new(Error) + FileSystemError = Class.new(Error) + StandardError = Class.new(Error) + SyntaxError = Class.new(Error) + StackLevelError = Class.new(Error) + TaintedError = Class.new(Error) + MemoryError = Class.new(Error) + ZeroDivisionError = Class.new(Error) + FloatDomainError = Class.new(Error) + UndefinedVariable = Class.new(Error) + UndefinedDropMethod = Class.new(Error) + UndefinedFilter = Class.new(Error) + MethodOverrideError = Class.new(Error) + InternalError = Class.new(Error) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/expression.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/expression.rb new file mode 100644 index 0000000000..1d01cddf99 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/expression.rb @@ -0,0 +1,49 @@ +module Liquid + class Expression + class MethodLiteral + attr_reader :method_name, :to_s + + def initialize(method_name, to_s) + @method_name = method_name + @to_s = to_s + end + + def to_liquid + to_s + end + end + + LITERALS = { + nil => nil, 'nil'.freeze => nil, 'null'.freeze => nil, ''.freeze => nil, + 'true'.freeze => true, + 'false'.freeze => false, + 'blank'.freeze => MethodLiteral.new(:blank?, '').freeze, + 'empty'.freeze => MethodLiteral.new(:empty?, '').freeze + } + + SINGLE_QUOTED_STRING = /\A'(.*)'\z/m + DOUBLE_QUOTED_STRING = /\A"(.*)"\z/m + INTEGERS_REGEX = /\A(-?\d+)\z/ + FLOATS_REGEX = /\A(-?\d[\d\.]+)\z/ + RANGES_REGEX = /\A\((\S+)\.\.(\S+)\)\z/ + + def self.parse(markup) + if LITERALS.key?(markup) + LITERALS[markup] + else + case markup + when SINGLE_QUOTED_STRING, DOUBLE_QUOTED_STRING + $1 + when INTEGERS_REGEX + $1.to_i + when RANGES_REGEX + RangeLookup.parse($1, $2) + when FLOATS_REGEX + $1.to_f + else + VariableLookup.parse(markup) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/extensions.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/extensions.rb new file mode 100644 index 0000000000..0907819302 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/extensions.rb @@ -0,0 +1,74 @@ +require 'time' +require 'date' + +class String # :nodoc: + def to_liquid + self + end +end + +class Symbol # :nodoc: + def to_liquid + to_s + end +end + +class Array # :nodoc: + def to_liquid + self + end +end + +class Hash # :nodoc: + def to_liquid + self + end +end + +class Numeric # :nodoc: + def to_liquid + self + end +end + +class Range # :nodoc: + def to_liquid + self + end +end + +class Time # :nodoc: + def to_liquid + self + end +end + +class DateTime < Date # :nodoc: + def to_liquid + self + end +end + +class Date # :nodoc: + def to_liquid + self + end +end + +class TrueClass + def to_liquid # :nodoc: + self + end +end + +class FalseClass + def to_liquid # :nodoc: + self + end +end + +class NilClass + def to_liquid # :nodoc: + self + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/file_system.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/file_system.rb new file mode 100644 index 0000000000..13f1f46060 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/file_system.rb @@ -0,0 +1,73 @@ +module Liquid + # A Liquid file system is a way to let your templates retrieve other templates for use with the include tag. + # + # You can implement subclasses that retrieve templates from the database, from the file system using a different + # path structure, you can provide them as hard-coded inline strings, or any manner that you see fit. + # + # You can add additional instance variables, arguments, or methods as needed. + # + # Example: + # + # Liquid::Template.file_system = Liquid::LocalFileSystem.new(template_path) + # liquid = Liquid::Template.parse(template) + # + # This will parse the template with a LocalFileSystem implementation rooted at 'template_path'. + class BlankFileSystem + # Called by Liquid to retrieve a template file + def read_template_file(_template_path) + raise FileSystemError, "This liquid context does not allow includes." + end + end + + # This implements an abstract file system which retrieves template files named in a manner similar to Rails partials, + # ie. with the template name prefixed with an underscore. The extension ".liquid" is also added. + # + # For security reasons, template paths are only allowed to contain letters, numbers, and underscore. + # + # Example: + # + # file_system = Liquid::LocalFileSystem.new("/some/path") + # + # file_system.full_path("mypartial") # => "/some/path/_mypartial.liquid" + # file_system.full_path("dir/mypartial") # => "/some/path/dir/_mypartial.liquid" + # + # Optionally in the second argument you can specify a custom pattern for template filenames. + # The Kernel::sprintf format specification is used. + # Default pattern is "_%s.liquid". + # + # Example: + # + # file_system = Liquid::LocalFileSystem.new("/some/path", "%s.html") + # + # file_system.full_path("index") # => "/some/path/index.html" + # + class LocalFileSystem + attr_accessor :root + + def initialize(root, pattern = "_%s.liquid".freeze) + @root = root + @pattern = pattern + end + + def read_template_file(template_path) + full_path = full_path(template_path) + raise FileSystemError, "No such template '#{template_path}'" unless File.exist?(full_path) + + File.read(full_path) + end + + def full_path(template_path) + raise FileSystemError, "Illegal template name '#{template_path}'" unless template_path =~ /\A[^.\/][a-zA-Z0-9_\/]+\z/ + + full_path = if template_path.include?('/'.freeze) + File.join(root, File.dirname(template_path), @pattern % File.basename(template_path)) + else + File.join(root, @pattern % template_path) + end + + raise FileSystemError, "Illegal template path '#{File.expand_path(full_path)}'" unless File.expand_path(full_path).start_with?(File.expand_path(root)) + + full_path + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/forloop_drop.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/forloop_drop.rb new file mode 100644 index 0000000000..81b2d1a281 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/forloop_drop.rb @@ -0,0 +1,42 @@ +module Liquid + class ForloopDrop < Drop + def initialize(name, length, parentloop) + @name = name + @length = length + @parentloop = parentloop + @index = 0 + end + + attr_reader :name, :length, :parentloop + + def index + @index + 1 + end + + def index0 + @index + end + + def rindex + @length - @index + end + + def rindex0 + @length - @index - 1 + end + + def first + @index == 0 + end + + def last + @index == @length - 1 + end + + protected + + def increment! + @index += 1 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/i18n.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/i18n.rb new file mode 100644 index 0000000000..e998d58120 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/i18n.rb @@ -0,0 +1,39 @@ +require 'yaml' + +module Liquid + class I18n + DEFAULT_LOCALE = File.join(File.expand_path(__dir__), "locales", "en.yml") + + TranslationError = Class.new(StandardError) + + attr_reader :path + + def initialize(path = DEFAULT_LOCALE) + @path = path + end + + def translate(name, vars = {}) + interpolate(deep_fetch_translation(name), vars) + end + alias_method :t, :translate + + def locale + @locale ||= YAML.load_file(@path) + end + + private + + def interpolate(name, vars) + name.gsub(/%\{(\w+)\}/) do + # raise TranslationError, "Undefined key #{$1} for interpolation in translation #{name}" unless vars[$1.to_sym] + "#{vars[$1.to_sym]}" + end + end + + def deep_fetch_translation(name) + name.split('.'.freeze).reduce(locale) do |level, cur| + level[cur] or raise TranslationError, "Translation for #{name} does not exist in locale #{path}" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/interrupts.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/interrupts.rb new file mode 100644 index 0000000000..41359d7875 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/interrupts.rb @@ -0,0 +1,16 @@ +module Liquid + # An interrupt is any command that breaks processing of a block (ex: a for loop). + class Interrupt + attr_reader :message + + def initialize(message = nil) + @message = message || "interrupt".freeze + end + end + + # Interrupt that is thrown whenever a {% break %} is called. + class BreakInterrupt < Interrupt; end + + # Interrupt that is thrown whenever a {% continue %} is called. + class ContinueInterrupt < Interrupt; end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/lexer.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/lexer.rb new file mode 100644 index 0000000000..e9114df1ff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/lexer.rb @@ -0,0 +1,55 @@ +require "strscan" +module Liquid + class Lexer + SPECIALS = { + '|'.freeze => :pipe, + '.'.freeze => :dot, + ':'.freeze => :colon, + ','.freeze => :comma, + '['.freeze => :open_square, + ']'.freeze => :close_square, + '('.freeze => :open_round, + ')'.freeze => :close_round, + '?'.freeze => :question, + '-'.freeze => :dash + } + IDENTIFIER = /[a-zA-Z_][\w-]*\??/ + SINGLE_STRING_LITERAL = /'[^\']*'/ + DOUBLE_STRING_LITERAL = /"[^\"]*"/ + NUMBER_LITERAL = /-?\d+(\.\d+)?/ + DOTDOT = /\.\./ + COMPARISON_OPERATOR = /==|!=|<>|<=?|>=?|contains(?=\s)/ + WHITESPACE_OR_NOTHING = /\s*/ + + def initialize(input) + @ss = StringScanner.new(input) + end + + def tokenize + @output = [] + + until @ss.eos? + @ss.skip(WHITESPACE_OR_NOTHING) + break if @ss.eos? + tok = case + when t = @ss.scan(COMPARISON_OPERATOR) then [:comparison, t] + when t = @ss.scan(SINGLE_STRING_LITERAL) then [:string, t] + when t = @ss.scan(DOUBLE_STRING_LITERAL) then [:string, t] + when t = @ss.scan(NUMBER_LITERAL) then [:number, t] + when t = @ss.scan(IDENTIFIER) then [:id, t] + when t = @ss.scan(DOTDOT) then [:dotdot, t] + else + c = @ss.getch + if s = SPECIALS[c] + [s, c] + else + raise SyntaxError, "Unexpected character #{c}" + end + end + @output << tok + end + + @output << [:end_of_string] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/locales/en.yml b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/locales/en.yml new file mode 100644 index 0000000000..48b3b1d839 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/locales/en.yml @@ -0,0 +1,26 @@ +--- + errors: + syntax: + tag_unexpected_args: "Syntax Error in '%{tag}' - Valid syntax: %{tag}" + assign: "Syntax Error in 'assign' - Valid syntax: assign [var] = [source]" + capture: "Syntax Error in 'capture' - Valid syntax: capture [var]" + case: "Syntax Error in 'case' - Valid syntax: case [condition]" + case_invalid_when: "Syntax Error in tag 'case' - Valid when condition: {% when [condition] [or condition2...] %}" + case_invalid_else: "Syntax Error in tag 'case' - Valid else condition: {% else %} (no parameters) " + cycle: "Syntax Error in 'cycle' - Valid syntax: cycle [name :] var [, var2, var3 ...]" + for: "Syntax Error in 'for loop' - Valid syntax: for [item] in [collection]" + for_invalid_in: "For loops require an 'in' clause" + for_invalid_attribute: "Invalid attribute in for loop. Valid attributes are limit and offset" + if: "Syntax Error in tag 'if' - Valid syntax: if [expression]" + include: "Error in tag 'include' - Valid syntax: include '[template]' (with|for) [object|collection]" + unknown_tag: "Unknown tag '%{tag}'" + invalid_delimiter: "'%{tag}' is not a valid delimiter for %{block_name} tags. use %{block_delimiter}" + unexpected_else: "%{block_name} tag does not expect 'else' tag" + unexpected_outer_tag: "Unexpected outer '%{tag}' tag" + tag_termination: "Tag '%{token}' was not properly terminated with regexp: %{tag_end}" + variable_termination: "Variable '%{token}' was not properly terminated with regexp: %{tag_end}" + tag_never_closed: "'%{block_name}' tag was never closed" + meta_syntax_error: "Liquid syntax error: #{e.message}" + table_row: "Syntax Error in 'table_row loop' - Valid syntax: table_row [item] in [collection] cols=3" + argument: + include: "Argument error in tag 'include' - Illegal template name" diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parse_context.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parse_context.rb new file mode 100644 index 0000000000..abcdaeba85 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parse_context.rb @@ -0,0 +1,38 @@ +module Liquid + class ParseContext + attr_accessor :locale, :line_number, :trim_whitespace, :depth + attr_reader :partial, :warnings, :error_mode + + def initialize(options = {}) + @template_options = options ? options.dup : {} + @locale = @template_options[:locale] ||= I18n.new + @warnings = [] + self.depth = 0 + self.partial = false + end + + def [](option_key) + @options[option_key] + end + + def partial=(value) + @partial = value + @options = value ? partial_options : @template_options + @error_mode = @options[:error_mode] || Template.error_mode + value + end + + def partial_options + @partial_options ||= begin + dont_pass = @template_options[:include_options_blacklist] + if dont_pass == true + { locale: locale } + elsif dont_pass.is_a?(Array) + @template_options.reject { |k, v| dont_pass.include?(k) } + else + @template_options + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser.rb new file mode 100644 index 0000000000..6954343420 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser.rb @@ -0,0 +1,90 @@ +module Liquid + class Parser + def initialize(input) + l = Lexer.new(input) + @tokens = l.tokenize + @p = 0 # pointer to current location + end + + def jump(point) + @p = point + end + + def consume(type = nil) + token = @tokens[@p] + if type && token[0] != type + raise SyntaxError, "Expected #{type} but found #{@tokens[@p].first}" + end + @p += 1 + token[1] + end + + # Only consumes the token if it matches the type + # Returns the token's contents if it was consumed + # or false otherwise. + def consume?(type) + token = @tokens[@p] + return false unless token && token[0] == type + @p += 1 + token[1] + end + + # Like consume? Except for an :id token of a certain name + def id?(str) + token = @tokens[@p] + return false unless token && token[0] == :id + return false unless token[1] == str + @p += 1 + token[1] + end + + def look(type, ahead = 0) + tok = @tokens[@p + ahead] + return false unless tok + tok[0] == type + end + + def expression + token = @tokens[@p] + if token[0] == :id + variable_signature + elsif [:string, :number].include? token[0] + consume + elsif token.first == :open_round + consume + first = expression + consume(:dotdot) + last = expression + consume(:close_round) + "(#{first}..#{last})" + else + raise SyntaxError, "#{token} is not a valid expression" + end + end + + def argument + str = "" + # might be a keyword argument (identifier: expression) + if look(:id) && look(:colon, 1) + str << consume << consume << ' '.freeze + end + + str << expression + str + end + + def variable_signature + str = consume(:id) + while look(:open_square) + str << consume + str << expression + str << consume(:close_square) + end + if look(:dot) + str << consume + str << variable_signature + end + str + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser_switching.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser_switching.rb new file mode 100644 index 0000000000..3aa664abee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/parser_switching.rb @@ -0,0 +1,31 @@ +module Liquid + module ParserSwitching + def parse_with_selected_parser(markup) + case parse_context.error_mode + when :strict then strict_parse_with_error_context(markup) + when :lax then lax_parse(markup) + when :warn + begin + return strict_parse_with_error_context(markup) + rescue SyntaxError => e + parse_context.warnings << e + return lax_parse(markup) + end + end + end + + private + + def strict_parse_with_error_context(markup) + strict_parse(markup) + rescue SyntaxError => e + e.line_number = line_number + e.markup_context = markup_context(markup) + raise e + end + + def markup_context(markup) + "in \"#{markup.strip}\"" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler.rb new file mode 100644 index 0000000000..dc9db60a78 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler.rb @@ -0,0 +1,158 @@ +require 'liquid/profiler/hooks' + +module Liquid + # Profiler enables support for profiling template rendering to help track down performance issues. + # + # To enable profiling, first require 'liquid/profiler'. + # Then, to profile a parse/render cycle, pass the profile: true option to Liquid::Template.parse. + # After Liquid::Template#render is called, the template object makes available an instance of this + # class via the Liquid::Template#profiler method. + # + # template = Liquid::Template.parse(template_content, profile: true) + # output = template.render + # profile = template.profiler + # + # This object contains all profiling information, containing information on what tags were rendered, + # where in the templates these tags live, and how long each tag took to render. + # + # This is a tree structure that is Enumerable all the way down, and keeps track of tags and rendering times + # inside of {% include %} tags. + # + # profile.each do |node| + # # Access to the node itself + # node.code + # + # # Which template and line number of this node. + # # If top level, this will be "". + # node.partial + # node.line_number + # + # # Render time in seconds of this node + # node.render_time + # + # # If the template used {% include %}, this node will also have children. + # node.children.each do |child2| + # # ... + # end + # end + # + # Profiler also exposes the total time of the template's render in Liquid::Profiler#total_render_time. + # + # All render times are in seconds. There is a small performance hit when profiling is enabled. + # + class Profiler + include Enumerable + + class Timing + attr_reader :code, :partial, :line_number, :children + + def initialize(node, partial) + @code = node.respond_to?(:raw) ? node.raw : node + @partial = partial + @line_number = node.respond_to?(:line_number) ? node.line_number : nil + @children = [] + end + + def self.start(node, partial) + new(node, partial).tap(&:start) + end + + def start + @start_time = Time.now + end + + def finish + @end_time = Time.now + end + + def render_time + @end_time - @start_time + end + end + + def self.profile_node_render(node) + if Profiler.current_profile && node.respond_to?(:render) + Profiler.current_profile.start_node(node) + output = yield + Profiler.current_profile.end_node(node) + output + else + yield + end + end + + def self.profile_children(template_name) + if Profiler.current_profile + Profiler.current_profile.push_partial(template_name) + output = yield + Profiler.current_profile.pop_partial + output + else + yield + end + end + + def self.current_profile + Thread.current[:liquid_profiler] + end + + def initialize + @partial_stack = [""] + + @root_timing = Timing.new("", current_partial) + @timing_stack = [@root_timing] + + @render_start_at = Time.now + @render_end_at = @render_start_at + end + + def start + Thread.current[:liquid_profiler] = self + @render_start_at = Time.now + end + + def stop + Thread.current[:liquid_profiler] = nil + @render_end_at = Time.now + end + + def total_render_time + @render_end_at - @render_start_at + end + + def each(&block) + @root_timing.children.each(&block) + end + + def [](idx) + @root_timing.children[idx] + end + + def length + @root_timing.children.length + end + + def start_node(node) + @timing_stack.push(Timing.start(node, current_partial)) + end + + def end_node(_node) + timing = @timing_stack.pop + timing.finish + + @timing_stack.last.children << timing + end + + def current_partial + @partial_stack.last + end + + def push_partial(partial_name) + @partial_stack.push(partial_name) + end + + def pop_partial + @partial_stack.pop + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler/hooks.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler/hooks.rb new file mode 100644 index 0000000000..cb11cd7e9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/profiler/hooks.rb @@ -0,0 +1,23 @@ +module Liquid + class BlockBody + def render_node_with_profiling(node, output, context, skip_output = false) + Profiler.profile_node_render(node) do + render_node_without_profiling(node, output, context, skip_output) + end + end + + alias_method :render_node_without_profiling, :render_node_to_output + alias_method :render_node_to_output, :render_node_with_profiling + end + + class Include < Tag + def render_with_profiling(context) + Profiler.profile_children(context.evaluate(@template_name_expr).to_s) do + render_without_profiling(context) + end + end + + alias_method :render_without_profiling, :render + alias_method :render, :render_with_profiling + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/range_lookup.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/range_lookup.rb new file mode 100644 index 0000000000..93bb420c1d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/range_lookup.rb @@ -0,0 +1,37 @@ +module Liquid + class RangeLookup + def self.parse(start_markup, end_markup) + start_obj = Expression.parse(start_markup) + end_obj = Expression.parse(end_markup) + if start_obj.respond_to?(:evaluate) || end_obj.respond_to?(:evaluate) + new(start_obj, end_obj) + else + start_obj.to_i..end_obj.to_i + end + end + + def initialize(start_obj, end_obj) + @start_obj = start_obj + @end_obj = end_obj + end + + def evaluate(context) + start_int = to_integer(context.evaluate(@start_obj)) + end_int = to_integer(context.evaluate(@end_obj)) + start_int..end_int + end + + private + + def to_integer(input) + case input + when Integer + input + when NilClass, String + input.to_i + else + Utils.to_integer(input) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/resource_limits.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/resource_limits.rb new file mode 100644 index 0000000000..08b359bab5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/resource_limits.rb @@ -0,0 +1,23 @@ +module Liquid + class ResourceLimits + attr_accessor :render_length, :render_score, :assign_score, + :render_length_limit, :render_score_limit, :assign_score_limit + + def initialize(limits) + @render_length_limit = limits[:render_length_limit] + @render_score_limit = limits[:render_score_limit] + @assign_score_limit = limits[:assign_score_limit] + reset + end + + def reached? + (@render_length_limit && @render_length > @render_length_limit) || + (@render_score_limit && @render_score > @render_score_limit) || + (@assign_score_limit && @assign_score > @assign_score_limit) + end + + def reset + @render_length = @render_score = @assign_score = 0 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/standardfilters.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/standardfilters.rb new file mode 100644 index 0000000000..35809ce84a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/standardfilters.rb @@ -0,0 +1,456 @@ +require 'cgi' +require 'bigdecimal' + +module Liquid + module StandardFilters + HTML_ESCAPE = { + '&'.freeze => '&'.freeze, + '>'.freeze => '>'.freeze, + '<'.freeze => '<'.freeze, + '"'.freeze => '"'.freeze, + "'".freeze => '''.freeze + } + HTML_ESCAPE_ONCE_REGEXP = /["><']|&(?!([a-zA-Z]+|(#\d+));)/ + + # Return the size of an array or of an string + def size(input) + input.respond_to?(:size) ? input.size : 0 + end + + # convert an input string to DOWNCASE + def downcase(input) + input.to_s.downcase + end + + # convert an input string to UPCASE + def upcase(input) + input.to_s.upcase + end + + # capitalize words in the input centence + def capitalize(input) + input.to_s.capitalize + end + + def escape(input) + CGI.escapeHTML(input.to_s).untaint unless input.nil? + end + alias_method :h, :escape + + def escape_once(input) + input.to_s.gsub(HTML_ESCAPE_ONCE_REGEXP, HTML_ESCAPE) + end + + def url_encode(input) + CGI.escape(input.to_s) unless input.nil? + end + + def url_decode(input) + CGI.unescape(input.to_s) unless input.nil? + end + + def slice(input, offset, length = nil) + offset = Utils.to_integer(offset) + length = length ? Utils.to_integer(length) : 1 + + if input.is_a?(Array) + input.slice(offset, length) || [] + else + input.to_s.slice(offset, length) || '' + end + end + + # Truncate a string down to x characters + def truncate(input, length = 50, truncate_string = "...".freeze) + return if input.nil? + input_str = input.to_s + length = Utils.to_integer(length) + truncate_string_str = truncate_string.to_s + l = length - truncate_string_str.length + l = 0 if l < 0 + input_str.length > length ? input_str[0...l] + truncate_string_str : input_str + end + + def truncatewords(input, words = 15, truncate_string = "...".freeze) + return if input.nil? + wordlist = input.to_s.split + words = Utils.to_integer(words) + l = words - 1 + l = 0 if l < 0 + wordlist.length > l ? wordlist[0..l].join(" ".freeze) + truncate_string.to_s : input + end + + # Split input string into an array of substrings separated by given pattern. + # + # Example: + #
                {{ post | split '//' | first }}
                + # + def split(input, pattern) + input.to_s.split(pattern.to_s) + end + + def strip(input) + input.to_s.strip + end + + def lstrip(input) + input.to_s.lstrip + end + + def rstrip(input) + input.to_s.rstrip + end + + def strip_html(input) + empty = ''.freeze + input.to_s.gsub(//m, empty).gsub(//m, empty).gsub(//m, empty).gsub(/<.*?>/m, empty) + end + + # Remove all newlines from the string + def strip_newlines(input) + input.to_s.gsub(/\r?\n/, ''.freeze) + end + + # Join elements of the array with certain character between them + def join(input, glue = ' '.freeze) + InputIterator.new(input).join(glue) + end + + # Sort elements of the array + # provide optional property with which to sort an array of hashes or drops + def sort(input, property = nil) + ary = InputIterator.new(input) + if property.nil? + ary.sort do |a, b| + if !a.nil? && !b.nil? + a <=> b + else + a.nil? ? 1 : -1 + end + end + elsif ary.empty? # The next two cases assume a non-empty array. + [] + elsif ary.all? { |el| el.respond_to?(:[]) } + ary.sort do |a, b| + a = a[property] + b = b[property] + if !a.nil? && !b.nil? + a <=> b + else + a.nil? ? 1 : -1 + end + end + end + end + + # Sort elements of an array ignoring case if strings + # provide optional property with which to sort an array of hashes or drops + def sort_natural(input, property = nil) + ary = InputIterator.new(input) + + if property.nil? + ary.sort do |a, b| + if !a.nil? && !b.nil? + a.to_s.casecmp(b.to_s) + else + a.nil? ? 1 : -1 + end + end + elsif ary.empty? # The next two cases assume a non-empty array. + [] + elsif ary.all? { |el| el.respond_to?(:[]) } + ary.sort do |a, b| + a = a[property] + b = b[property] + if !a.nil? && !b.nil? + a.to_s.casecmp(b.to_s) + else + a.nil? ? 1 : -1 + end + end + end + end + + # Remove duplicate elements from an array + # provide optional property with which to determine uniqueness + def uniq(input, property = nil) + ary = InputIterator.new(input) + + if property.nil? + ary.uniq + elsif ary.empty? # The next two cases assume a non-empty array. + [] + elsif ary.first.respond_to?(:[]) + ary.uniq{ |a| a[property] } + end + end + + # Reverse the elements of an array + def reverse(input) + ary = InputIterator.new(input) + ary.reverse + end + + # map/collect on a given property + def map(input, property) + InputIterator.new(input).map do |e| + e = e.call if e.is_a?(Proc) + + if property == "to_liquid".freeze + e + elsif e.respond_to?(:[]) + r = e[property] + r.is_a?(Proc) ? r.call : r + end + end + end + + # Remove nils within an array + # provide optional property with which to check for nil + def compact(input, property = nil) + ary = InputIterator.new(input) + + if property.nil? + ary.compact + elsif ary.empty? # The next two cases assume a non-empty array. + [] + elsif ary.first.respond_to?(:[]) + ary.reject{ |a| a[property].nil? } + end + end + + # Replace occurrences of a string with another + def replace(input, string, replacement = ''.freeze) + input.to_s.gsub(string.to_s, replacement.to_s) + end + + # Replace the first occurrences of a string with another + def replace_first(input, string, replacement = ''.freeze) + input.to_s.sub(string.to_s, replacement.to_s) + end + + # remove a substring + def remove(input, string) + input.to_s.gsub(string.to_s, ''.freeze) + end + + # remove the first occurrences of a substring + def remove_first(input, string) + input.to_s.sub(string.to_s, ''.freeze) + end + + # add one string to another + def append(input, string) + input.to_s + string.to_s + end + + def concat(input, array) + unless array.respond_to?(:to_ary) + raise ArgumentError.new("concat filter requires an array argument") + end + InputIterator.new(input).concat(array) + end + + # prepend a string to another + def prepend(input, string) + string.to_s + input.to_s + end + + # Add
                tags in front of all newlines in input string + def newline_to_br(input) + input.to_s.gsub(/\n/, "
                \n".freeze) + end + + # Reformat a date using Ruby's core Time#strftime( string ) -> string + # + # %a - The abbreviated weekday name (``Sun'') + # %A - The full weekday name (``Sunday'') + # %b - The abbreviated month name (``Jan'') + # %B - The full month name (``January'') + # %c - The preferred local date and time representation + # %d - Day of the month (01..31) + # %H - Hour of the day, 24-hour clock (00..23) + # %I - Hour of the day, 12-hour clock (01..12) + # %j - Day of the year (001..366) + # %m - Month of the year (01..12) + # %M - Minute of the hour (00..59) + # %p - Meridian indicator (``AM'' or ``PM'') + # %s - Number of seconds since 1970-01-01 00:00:00 UTC. + # %S - Second of the minute (00..60) + # %U - Week number of the current year, + # starting with the first Sunday as the first + # day of the first week (00..53) + # %W - Week number of the current year, + # starting with the first Monday as the first + # day of the first week (00..53) + # %w - Day of the week (Sunday is 0, 0..6) + # %x - Preferred representation for the date alone, no time + # %X - Preferred representation for the time alone, no date + # %y - Year without a century (00..99) + # %Y - Year with century + # %Z - Time zone name + # %% - Literal ``%'' character + # + # See also: http://www.ruby-doc.org/core/Time.html#method-i-strftime + def date(input, format) + return input if format.to_s.empty? + + return input unless date = Utils.to_date(input) + + date.strftime(format.to_s) + end + + # Get the first element of the passed in array + # + # Example: + # {{ product.images | first | to_img }} + # + def first(array) + array.first if array.respond_to?(:first) + end + + # Get the last element of the passed in array + # + # Example: + # {{ product.images | last | to_img }} + # + def last(array) + array.last if array.respond_to?(:last) + end + + # absolute value + def abs(input) + result = Utils.to_number(input).abs + result.is_a?(BigDecimal) ? result.to_f : result + end + + # addition + def plus(input, operand) + apply_operation(input, operand, :+) + end + + # subtraction + def minus(input, operand) + apply_operation(input, operand, :-) + end + + # multiplication + def times(input, operand) + apply_operation(input, operand, :*) + end + + # division + def divided_by(input, operand) + apply_operation(input, operand, :/) + rescue ::ZeroDivisionError => e + raise Liquid::ZeroDivisionError, e.message + end + + def modulo(input, operand) + apply_operation(input, operand, :%) + rescue ::ZeroDivisionError => e + raise Liquid::ZeroDivisionError, e.message + end + + def round(input, n = 0) + result = Utils.to_number(input).round(Utils.to_number(n)) + result = result.to_f if result.is_a?(BigDecimal) + result = result.to_i if n == 0 + result + rescue ::FloatDomainError => e + raise Liquid::FloatDomainError, e.message + end + + def ceil(input) + Utils.to_number(input).ceil.to_i + rescue ::FloatDomainError => e + raise Liquid::FloatDomainError, e.message + end + + def floor(input) + Utils.to_number(input).floor.to_i + rescue ::FloatDomainError => e + raise Liquid::FloatDomainError, e.message + end + + def at_least(input, n) + min_value = Utils.to_number(n) + + result = Utils.to_number(input) + result = min_value if min_value > result + result.is_a?(BigDecimal) ? result.to_f : result + end + + def at_most(input, n) + max_value = Utils.to_number(n) + + result = Utils.to_number(input) + result = max_value if max_value < result + result.is_a?(BigDecimal) ? result.to_f : result + end + + def default(input, default_value = ''.freeze) + if !input || input.respond_to?(:empty?) && input.empty? + default_value + else + input + end + end + + private + + def apply_operation(input, operand, operation) + result = Utils.to_number(input).send(operation, Utils.to_number(operand)) + result.is_a?(BigDecimal) ? result.to_f : result + end + + class InputIterator + include Enumerable + + def initialize(input) + @input = if input.is_a?(Array) + input.flatten + elsif input.is_a?(Hash) + [input] + elsif input.is_a?(Enumerable) + input + else + Array(input) + end + end + + def join(glue) + to_a.join(glue.to_s) + end + + def concat(args) + to_a.concat(args) + end + + def reverse + reverse_each.to_a + end + + def uniq(&block) + to_a.uniq(&block) + end + + def compact + to_a.compact + end + + def empty? + @input.each { return false } + true + end + + def each + @input.each do |e| + yield(e.respond_to?(:to_liquid) ? e.to_liquid : e) + end + end + end + end + + Template.register_filter(StandardFilters) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/strainer.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/strainer.rb new file mode 100644 index 0000000000..76d56d2312 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/strainer.rb @@ -0,0 +1,66 @@ +require 'set' + +module Liquid + # Strainer is the parent class for the filters system. + # New filters are mixed into the strainer class which is then instantiated for each liquid template render run. + # + # The Strainer only allows method calls defined in filters given to it via Strainer.global_filter, + # Context#add_filters or Template.register_filter + class Strainer #:nodoc: + @@global_strainer = Class.new(Strainer) do + @filter_methods = Set.new + end + @@strainer_class_cache = Hash.new do |hash, filters| + hash[filters] = Class.new(@@global_strainer) do + @filter_methods = @@global_strainer.filter_methods.dup + filters.each { |f| add_filter(f) } + end + end + + def initialize(context) + @context = context + end + + class << self + attr_reader :filter_methods + end + + def self.add_filter(filter) + raise ArgumentError, "Expected module but got: #{filter.class}" unless filter.is_a?(Module) + unless self.include?(filter) + invokable_non_public_methods = (filter.private_instance_methods + filter.protected_instance_methods).select { |m| invokable?(m) } + if invokable_non_public_methods.any? + raise MethodOverrideError, "Filter overrides registered public methods as non public: #{invokable_non_public_methods.join(', ')}" + else + send(:include, filter) + @filter_methods.merge(filter.public_instance_methods.map(&:to_s)) + end + end + end + + def self.global_filter(filter) + @@strainer_class_cache.clear + @@global_strainer.add_filter(filter) + end + + def self.invokable?(method) + @filter_methods.include?(method.to_s) + end + + def self.create(context, filters = []) + @@strainer_class_cache[filters].new(context) + end + + def invoke(method, *args) + if self.class.invokable?(method) + send(method, *args) + elsif @context && @context.strict_filters + raise Liquid::UndefinedFilter, "undefined filter #{method}" + else + args.first + end + rescue ::ArgumentError => e + raise Liquid::ArgumentError, e.message, e.backtrace + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tablerowloop_drop.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tablerowloop_drop.rb new file mode 100644 index 0000000000..cda4a1ed43 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tablerowloop_drop.rb @@ -0,0 +1,62 @@ +module Liquid + class TablerowloopDrop < Drop + def initialize(length, cols) + @length = length + @row = 1 + @col = 1 + @cols = cols + @index = 0 + end + + attr_reader :length, :col, :row + + def index + @index + 1 + end + + def index0 + @index + end + + def col0 + @col - 1 + end + + def rindex + @length - @index + end + + def rindex0 + @length - @index - 1 + end + + def first + @index == 0 + end + + def last + @index == @length - 1 + end + + def col_first + @col == 1 + end + + def col_last + @col == @cols + end + + protected + + def increment! + @index += 1 + + if @col == @cols + @col = 1 + @row += 1 + else + @col += 1 + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tag.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tag.rb new file mode 100644 index 0000000000..06970c18b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tag.rb @@ -0,0 +1,43 @@ +module Liquid + class Tag + attr_reader :nodelist, :tag_name, :line_number, :parse_context + alias_method :options, :parse_context + include ParserSwitching + + class << self + def parse(tag_name, markup, tokenizer, options) + tag = new(tag_name, markup, options) + tag.parse(tokenizer) + tag + end + + private :new + end + + def initialize(tag_name, markup, parse_context) + @tag_name = tag_name + @markup = markup + @parse_context = parse_context + @line_number = parse_context.line_number + end + + def parse(_tokens) + end + + def raw + "#{@tag_name} #{@markup}" + end + + def name + self.class.name.downcase + end + + def render(_context) + ''.freeze + end + + def blank? + false + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/assign.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/assign.rb new file mode 100644 index 0000000000..f6cd5fad69 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/assign.rb @@ -0,0 +1,51 @@ +module Liquid + # Assign sets a variable in your template. + # + # {% assign foo = 'monkey' %} + # + # You can then use the variable later in the page. + # + # {{ foo }} + # + class Assign < Tag + Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/om + + def initialize(tag_name, markup, options) + super + if markup =~ Syntax + @to = $1 + @from = Variable.new($2, options) + else + raise SyntaxError.new options[:locale].t("errors.syntax.assign".freeze) + end + end + + def render(context) + val = @from.render(context) + context.scopes.last[@to] = val + context.resource_limits.assign_score += assign_score_of(val) + ''.freeze + end + + def blank? + true + end + + private + + def assign_score_of(val) + if val.instance_of?(String) + val.length + elsif val.instance_of?(Array) || val.instance_of?(Hash) + sum = 1 + # Uses #each to avoid extra allocations. + val.each { |child| sum += assign_score_of(child) } + sum + else + 1 + end + end + end + + Template.register_tag('assign'.freeze, Assign) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/break.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/break.rb new file mode 100644 index 0000000000..6fe0969ba7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/break.rb @@ -0,0 +1,18 @@ +module Liquid + # Break tag to be used to break out of a for loop. + # + # == Basic Usage: + # {% for item in collection %} + # {% if item.condition %} + # {% break %} + # {% endif %} + # {% endfor %} + # + class Break < Tag + def interrupt + BreakInterrupt.new + end + end + + Template.register_tag('break'.freeze, Break) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/capture.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/capture.rb new file mode 100644 index 0000000000..8674356733 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/capture.rb @@ -0,0 +1,38 @@ +module Liquid + # Capture stores the result of a block into a variable without rendering it inplace. + # + # {% capture heading %} + # Monkeys! + # {% endcapture %} + # ... + #

                {{ heading }}

                + # + # Capture is useful for saving content for use later in your template, such as + # in a sidebar or footer. + # + class Capture < Block + Syntax = /(#{VariableSignature}+)/o + + def initialize(tag_name, markup, options) + super + if markup =~ Syntax + @to = $1 + else + raise SyntaxError.new(options[:locale].t("errors.syntax.capture")) + end + end + + def render(context) + output = super + context.scopes.last[@to] = output + context.resource_limits.assign_score += output.length + ''.freeze + end + + def blank? + true + end + end + + Template.register_tag('capture'.freeze, Capture) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/case.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/case.rb new file mode 100644 index 0000000000..453b4d6773 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/case.rb @@ -0,0 +1,86 @@ +module Liquid + class Case < Block + Syntax = /(#{QuotedFragment})/o + WhenSyntax = /(#{QuotedFragment})(?:(?:\s+or\s+|\s*\,\s*)(#{QuotedFragment}.*))?/om + + def initialize(tag_name, markup, options) + super + @blocks = [] + + if markup =~ Syntax + @left = Expression.parse($1) + else + raise SyntaxError.new(options[:locale].t("errors.syntax.case".freeze)) + end + end + + def parse(tokens) + body = BlockBody.new + while parse_body(body, tokens) + body = @blocks.last.attachment + end + end + + def nodelist + @blocks.map(&:attachment) + end + + def unknown_tag(tag, markup, tokens) + case tag + when 'when'.freeze + record_when_condition(markup) + when 'else'.freeze + record_else_condition(markup) + else + super + end + end + + def render(context) + context.stack do + execute_else_block = true + + output = '' + @blocks.each do |block| + if block.else? + return block.attachment.render(context) if execute_else_block + elsif block.evaluate(context) + execute_else_block = false + output << block.attachment.render(context) + end + end + output + end + end + + private + + def record_when_condition(markup) + body = BlockBody.new + + while markup + unless markup =~ WhenSyntax + raise SyntaxError.new(options[:locale].t("errors.syntax.case_invalid_when".freeze)) + end + + markup = $2 + + block = Condition.new(@left, '=='.freeze, Expression.parse($1)) + block.attach(body) + @blocks << block + end + end + + def record_else_condition(markup) + unless markup.strip.empty? + raise SyntaxError.new(options[:locale].t("errors.syntax.case_invalid_else".freeze)) + end + + block = ElseCondition.new + block.attach(BlockBody.new) + @blocks << block + end + end + + Template.register_tag('case'.freeze, Case) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/comment.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/comment.rb new file mode 100644 index 0000000000..c57c9cd653 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/comment.rb @@ -0,0 +1,16 @@ +module Liquid + class Comment < Block + def render(_context) + ''.freeze + end + + def unknown_tag(_tag, _markup, _tokens) + end + + def blank? + true + end + end + + Template.register_tag('comment'.freeze, Comment) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/continue.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/continue.rb new file mode 100644 index 0000000000..9c81ec2c71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/continue.rb @@ -0,0 +1,18 @@ +module Liquid + # Continue tag to be used to break out of a for loop. + # + # == Basic Usage: + # {% for item in collection %} + # {% if item.condition %} + # {% continue %} + # {% endif %} + # {% endfor %} + # + class Continue < Tag + def interrupt + ContinueInterrupt.new + end + end + + Template.register_tag('continue'.freeze, Continue) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/cycle.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/cycle.rb new file mode 100644 index 0000000000..ad116a61f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/cycle.rb @@ -0,0 +1,57 @@ +module Liquid + # Cycle is usually used within a loop to alternate between values, like colors or DOM classes. + # + # {% for item in items %} + #
                {{ item }}
                + # {% end %} + # + #
                Item one
                + #
                Item two
                + #
                Item three
                + #
                Item four
                + #
                Item five
                + # + class Cycle < Tag + SimpleSyntax = /\A#{QuotedFragment}+/o + NamedSyntax = /\A(#{QuotedFragment})\s*\:\s*(.*)/om + + def initialize(tag_name, markup, options) + super + case markup + when NamedSyntax + @variables = variables_from_string($2) + @name = Expression.parse($1) + when SimpleSyntax + @variables = variables_from_string(markup) + @name = @variables.to_s + else + raise SyntaxError.new(options[:locale].t("errors.syntax.cycle".freeze)) + end + end + + def render(context) + context.registers[:cycle] ||= {} + + context.stack do + key = context.evaluate(@name) + iteration = context.registers[:cycle][key].to_i + result = context.evaluate(@variables[iteration]) + iteration += 1 + iteration = 0 if iteration >= @variables.size + context.registers[:cycle][key] = iteration + result + end + end + + private + + def variables_from_string(markup) + markup.split(',').collect do |var| + var =~ /\s*(#{QuotedFragment})\s*/o + $1 ? Expression.parse($1) : nil + end.compact + end + end + + Template.register_tag('cycle', Cycle) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/decrement.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/decrement.rb new file mode 100644 index 0000000000..b5cdaaa6ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/decrement.rb @@ -0,0 +1,35 @@ +module Liquid + # decrement is used in a place where one needs to insert a counter + # into a template, and needs the counter to survive across + # multiple instantiations of the template. + # NOTE: decrement is a pre-decrement, --i, + # while increment is post: i++. + # + # (To achieve the survival, the application must keep the context) + # + # if the variable does not exist, it is created with value 0. + + # Hello: {% decrement variable %} + # + # gives you: + # + # Hello: -1 + # Hello: -2 + # Hello: -3 + # + class Decrement < Tag + def initialize(tag_name, markup, options) + super + @variable = markup.strip + end + + def render(context) + value = context.environments.first[@variable] ||= 0 + value -= 1 + context.environments.first[@variable] = value + value.to_s + end + end + + Template.register_tag('decrement'.freeze, Decrement) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/for.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/for.rb new file mode 100644 index 0000000000..6c95624d7d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/for.rb @@ -0,0 +1,198 @@ +module Liquid + # "For" iterates over an array or collection. + # Several useful variables are available to you within the loop. + # + # == Basic usage: + # {% for item in collection %} + # {{ forloop.index }}: {{ item.name }} + # {% endfor %} + # + # == Advanced usage: + # {% for item in collection %} + #
                + # Item {{ forloop.index }}: {{ item.name }} + #
                + # {% else %} + # There is nothing in the collection. + # {% endfor %} + # + # You can also define a limit and offset much like SQL. Remember + # that offset starts at 0 for the first item. + # + # {% for item in collection limit:5 offset:10 %} + # {{ item.name }} + # {% end %} + # + # To reverse the for loop simply use {% for item in collection reversed %} (note that the flag's spelling is different to the filter `reverse`) + # + # == Available variables: + # + # forloop.name:: 'item-collection' + # forloop.length:: Length of the loop + # forloop.index:: The current item's position in the collection; + # forloop.index starts at 1. + # This is helpful for non-programmers who start believe + # the first item in an array is 1, not 0. + # forloop.index0:: The current item's position in the collection + # where the first item is 0 + # forloop.rindex:: Number of items remaining in the loop + # (length - index) where 1 is the last item. + # forloop.rindex0:: Number of items remaining in the loop + # where 0 is the last item. + # forloop.first:: Returns true if the item is the first item. + # forloop.last:: Returns true if the item is the last item. + # forloop.parentloop:: Provides access to the parent loop, if present. + # + class For < Block + Syntax = /\A(#{VariableSegment}+)\s+in\s+(#{QuotedFragment}+)\s*(reversed)?/o + + attr_reader :collection_name + attr_reader :variable_name + + def initialize(tag_name, markup, options) + super + @from = @limit = nil + parse_with_selected_parser(markup) + @for_block = BlockBody.new + @else_block = nil + end + + def parse(tokens) + return unless parse_body(@for_block, tokens) + parse_body(@else_block, tokens) + end + + def nodelist + @else_block ? [@for_block, @else_block] : [@for_block] + end + + def unknown_tag(tag, markup, tokens) + return super unless tag == 'else'.freeze + @else_block = BlockBody.new + end + + def render(context) + segment = collection_segment(context) + + if segment.empty? + render_else(context) + else + render_segment(context, segment) + end + end + + protected + + def lax_parse(markup) + if markup =~ Syntax + @variable_name = $1 + collection_name = $2 + @reversed = !!$3 + @name = "#{@variable_name}-#{collection_name}" + @collection_name = Expression.parse(collection_name) + markup.scan(TagAttributes) do |key, value| + set_attribute(key, value) + end + else + raise SyntaxError.new(options[:locale].t("errors.syntax.for".freeze)) + end + end + + def strict_parse(markup) + p = Parser.new(markup) + @variable_name = p.consume(:id) + raise SyntaxError.new(options[:locale].t("errors.syntax.for_invalid_in".freeze)) unless p.id?('in'.freeze) + collection_name = p.expression + @name = "#{@variable_name}-#{collection_name}" + @collection_name = Expression.parse(collection_name) + @reversed = p.id?('reversed'.freeze) + + while p.look(:id) && p.look(:colon, 1) + unless attribute = p.id?('limit'.freeze) || p.id?('offset'.freeze) + raise SyntaxError.new(options[:locale].t("errors.syntax.for_invalid_attribute".freeze)) + end + p.consume + set_attribute(attribute, p.expression) + end + p.consume(:end_of_string) + end + + private + + def collection_segment(context) + offsets = context.registers[:for] ||= {} + + from = if @from == :continue + offsets[@name].to_i + else + context.evaluate(@from).to_i + end + + collection = context.evaluate(@collection_name) + collection = collection.to_a if collection.is_a?(Range) + + limit = context.evaluate(@limit) + to = limit ? limit.to_i + from : nil + + segment = Utils.slice_collection(collection, from, to) + segment.reverse! if @reversed + + offsets[@name] = from + segment.length + + segment + end + + def render_segment(context, segment) + for_stack = context.registers[:for_stack] ||= [] + length = segment.length + + result = '' + + context.stack do + loop_vars = Liquid::ForloopDrop.new(@name, length, for_stack[-1]) + + for_stack.push(loop_vars) + + begin + context['forloop'.freeze] = loop_vars + + segment.each do |item| + context[@variable_name] = item + result << @for_block.render(context) + loop_vars.send(:increment!) + + # Handle any interrupts if they exist. + if context.interrupt? + interrupt = context.pop_interrupt + break if interrupt.is_a? BreakInterrupt + next if interrupt.is_a? ContinueInterrupt + end + end + ensure + for_stack.pop + end + end + + result + end + + def set_attribute(key, expr) + case key + when 'offset'.freeze + @from = if expr == 'continue'.freeze + :continue + else + Expression.parse(expr) + end + when 'limit'.freeze + @limit = Expression.parse(expr) + end + end + + def render_else(context) + @else_block ? @else_block.render(context) : ''.freeze + end + end + + Template.register_tag('for'.freeze, For) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/if.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/if.rb new file mode 100644 index 0000000000..904369ddd7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/if.rb @@ -0,0 +1,114 @@ +module Liquid + # If is the conditional block + # + # {% if user.admin %} + # Admin user! + # {% else %} + # Not admin user + # {% endif %} + # + # There are {% if count < 5 %} less {% else %} more {% endif %} items than you need. + # + class If < Block + Syntax = /(#{QuotedFragment})\s*([=!<>a-z_]+)?\s*(#{QuotedFragment})?/o + ExpressionsAndOperators = /(?:\b(?:\s?and\s?|\s?or\s?)\b|(?:\s*(?!\b(?:\s?and\s?|\s?or\s?)\b)(?:#{QuotedFragment}|\S+)\s*)+)/o + BOOLEAN_OPERATORS = %w(and or) + + def initialize(tag_name, markup, options) + super + @blocks = [] + push_block('if'.freeze, markup) + end + + def parse(tokens) + while parse_body(@blocks.last.attachment, tokens) + end + end + + def nodelist + @blocks.map(&:attachment) + end + + def unknown_tag(tag, markup, tokens) + if ['elsif'.freeze, 'else'.freeze].include?(tag) + push_block(tag, markup) + else + super + end + end + + def render(context) + context.stack do + @blocks.each do |block| + if block.evaluate(context) + return block.attachment.render(context) + end + end + ''.freeze + end + end + + private + + def push_block(tag, markup) + block = if tag == 'else'.freeze + ElseCondition.new + else + parse_with_selected_parser(markup) + end + + @blocks.push(block) + block.attach(BlockBody.new) + end + + def lax_parse(markup) + expressions = markup.scan(ExpressionsAndOperators) + raise(SyntaxError.new(options[:locale].t("errors.syntax.if".freeze))) unless expressions.pop =~ Syntax + + condition = Condition.new(Expression.parse($1), $2, Expression.parse($3)) + + until expressions.empty? + operator = expressions.pop.to_s.strip + + raise(SyntaxError.new(options[:locale].t("errors.syntax.if".freeze))) unless expressions.pop.to_s =~ Syntax + + new_condition = Condition.new(Expression.parse($1), $2, Expression.parse($3)) + raise(SyntaxError.new(options[:locale].t("errors.syntax.if".freeze))) unless BOOLEAN_OPERATORS.include?(operator) + new_condition.send(operator, condition) + condition = new_condition + end + + condition + end + + def strict_parse(markup) + p = Parser.new(markup) + condition = parse_binary_comparisons(p) + p.consume(:end_of_string) + condition + end + + def parse_binary_comparisons(p) + condition = parse_comparison(p) + first_condition = condition + while op = (p.id?('and'.freeze) || p.id?('or'.freeze)) + child_condition = parse_comparison(p) + condition.send(op, child_condition) + condition = child_condition + end + first_condition + end + + def parse_comparison(p) + a = Expression.parse(p.expression) + if op = p.consume?(:comparison) + b = Expression.parse(p.expression) + Condition.new(a, op, b) + else + Condition.new(a) + end + end + end + + Template.register_tag('if'.freeze, If) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/ifchanged.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/ifchanged.rb new file mode 100644 index 0000000000..d70cbe1f3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/ifchanged.rb @@ -0,0 +1,18 @@ +module Liquid + class Ifchanged < Block + def render(context) + context.stack do + output = super + + if output != context.registers[:ifchanged] + context.registers[:ifchanged] = output + output + else + ''.freeze + end + end + end + end + + Template.register_tag('ifchanged'.freeze, Ifchanged) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/include.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/include.rb new file mode 100644 index 0000000000..a80070362c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/include.rb @@ -0,0 +1,113 @@ +module Liquid + # Include allows templates to relate with other templates + # + # Simply include another template: + # + # {% include 'product' %} + # + # Include a template with a local variable: + # + # {% include 'product' with products[0] %} + # + # Include a template for a collection: + # + # {% include 'product' for products %} + # + class Include < Tag + Syntax = /(#{QuotedFragment}+)(\s+(?:with|for)\s+(#{QuotedFragment}+))?/o + + def initialize(tag_name, markup, options) + super + + if markup =~ Syntax + + template_name = $1 + variable_name = $3 + + @variable_name_expr = variable_name ? Expression.parse(variable_name) : nil + @template_name_expr = Expression.parse(template_name) + @attributes = {} + + markup.scan(TagAttributes) do |key, value| + @attributes[key] = Expression.parse(value) + end + + else + raise SyntaxError.new(options[:locale].t("errors.syntax.include".freeze)) + end + end + + def parse(_tokens) + end + + def render(context) + template_name = context.evaluate(@template_name_expr) + raise ArgumentError.new(options[:locale].t("errors.argument.include")) unless template_name + + partial = load_cached_partial(template_name, context) + context_variable_name = template_name.split('/'.freeze).last + + variable = if @variable_name_expr + context.evaluate(@variable_name_expr) + else + context.find_variable(template_name, raise_on_not_found: false) + end + + old_template_name = context.template_name + old_partial = context.partial + begin + context.template_name = template_name + context.partial = true + context.stack do + @attributes.each do |key, value| + context[key] = context.evaluate(value) + end + + if variable.is_a?(Array) + variable.collect do |var| + context[context_variable_name] = var + partial.render(context) + end + else + context[context_variable_name] = variable + partial.render(context) + end + end + ensure + context.template_name = old_template_name + context.partial = old_partial + end + end + + private + + alias_method :parse_context, :options + private :parse_context + + def load_cached_partial(template_name, context) + cached_partials = context.registers[:cached_partials] || {} + + if cached = cached_partials[template_name] + return cached + end + source = read_template_from_file_system(context) + begin + parse_context.partial = true + partial = Liquid::Template.parse(source, parse_context) + ensure + parse_context.partial = false + end + cached_partials[template_name] = partial + context.registers[:cached_partials] = cached_partials + partial + end + + def read_template_from_file_system(context) + file_system = context.registers[:file_system] || Liquid::Template.file_system + + file_system.read_template_file(context.evaluate(@template_name_expr)) + end + end + + Template.register_tag('include'.freeze, Include) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/increment.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/increment.rb new file mode 100644 index 0000000000..baa0cbb62a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/increment.rb @@ -0,0 +1,31 @@ +module Liquid + # increment is used in a place where one needs to insert a counter + # into a template, and needs the counter to survive across + # multiple instantiations of the template. + # (To achieve the survival, the application must keep the context) + # + # if the variable does not exist, it is created with value 0. + # + # Hello: {% increment variable %} + # + # gives you: + # + # Hello: 0 + # Hello: 1 + # Hello: 2 + # + class Increment < Tag + def initialize(tag_name, markup, options) + super + @variable = markup.strip + end + + def render(context) + value = context.environments.first[@variable] ||= 0 + context.environments.first[@variable] = value + 1 + value.to_s + end + end + + Template.register_tag('increment'.freeze, Increment) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/raw.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/raw.rb new file mode 100644 index 0000000000..6b461bdb5e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/raw.rb @@ -0,0 +1,47 @@ +module Liquid + class Raw < Block + Syntax = /\A\s*\z/ + FullTokenPossiblyInvalid = /\A(.*)#{TagStart}\s*(\w+)\s*(.*)?#{TagEnd}\z/om + + def initialize(tag_name, markup, parse_context) + super + + ensure_valid_markup(tag_name, markup, parse_context) + end + + def parse(tokens) + @body = '' + while token = tokens.shift + if token =~ FullTokenPossiblyInvalid + @body << $1 if $1 != "".freeze + return if block_delimiter == $2 + end + @body << token unless token.empty? + end + + raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_never_closed".freeze, block_name: block_name)) + end + + def render(_context) + @body + end + + def nodelist + [@body] + end + + def blank? + @body.empty? + end + + protected + + def ensure_valid_markup(tag_name, markup, parse_context) + unless markup =~ Syntax + raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_unexpected_args".freeze, tag: tag_name)) + end + end + end + + Template.register_tag('raw'.freeze, Raw) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/table_row.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/table_row.rb new file mode 100644 index 0000000000..cfdef33f6b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/table_row.rb @@ -0,0 +1,54 @@ +module Liquid + class TableRow < Block + Syntax = /(\w+)\s+in\s+(#{QuotedFragment}+)/o + + def initialize(tag_name, markup, options) + super + if markup =~ Syntax + @variable_name = $1 + @collection_name = Expression.parse($2) + @attributes = {} + markup.scan(TagAttributes) do |key, value| + @attributes[key] = Expression.parse(value) + end + else + raise SyntaxError.new(options[:locale].t("errors.syntax.table_row".freeze)) + end + end + + def render(context) + collection = context.evaluate(@collection_name) or return ''.freeze + + from = @attributes.key?('offset'.freeze) ? context.evaluate(@attributes['offset'.freeze]).to_i : 0 + to = @attributes.key?('limit'.freeze) ? from + context.evaluate(@attributes['limit'.freeze]).to_i : nil + + collection = Utils.slice_collection(collection, from, to) + + length = collection.length + + cols = context.evaluate(@attributes['cols'.freeze]).to_i + + result = "\n" + context.stack do + tablerowloop = Liquid::TablerowloopDrop.new(length, cols) + context['tablerowloop'.freeze] = tablerowloop + + collection.each do |item| + context[@variable_name] = item + + result << "" << super << '' + + if tablerowloop.col_last && !tablerowloop.last + result << "\n" + end + + tablerowloop.send(:increment!) + end + end + result << "\n" + result + end + end + + Template.register_tag('tablerow'.freeze, TableRow) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/unless.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/unless.rb new file mode 100644 index 0000000000..1d4280dbf9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tags/unless.rb @@ -0,0 +1,30 @@ +require_relative 'if' + +module Liquid + # Unless is a conditional just like 'if' but works on the inverse logic. + # + # {% unless x < 0 %} x is greater than zero {% endunless %} + # + class Unless < If + def render(context) + context.stack do + # First condition is interpreted backwards ( if not ) + first_block = @blocks.first + unless first_block.evaluate(context) + return first_block.attachment.render(context) + end + + # After the first condition unless works just like if + @blocks[1..-1].each do |block| + if block.evaluate(context) + return block.attachment.render(context) + end + end + + ''.freeze + end + end + end + + Template.register_tag('unless'.freeze, Unless) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/template.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/template.rb new file mode 100644 index 0000000000..31a67e49e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/template.rb @@ -0,0 +1,254 @@ +module Liquid + # Templates are central to liquid. + # Interpretating templates is a two step process. First you compile the + # source code you got. During compile time some extensive error checking is performed. + # your code should expect to get some SyntaxErrors. + # + # After you have a compiled template you can then render it. + # You can use a compiled template over and over again and keep it cached. + # + # Example: + # + # template = Liquid::Template.parse(source) + # template.render('user_name' => 'bob') + # + class Template + attr_accessor :root + attr_reader :resource_limits, :warnings + + @@file_system = BlankFileSystem.new + + class TagRegistry + include Enumerable + + def initialize + @tags = {} + @cache = {} + end + + def [](tag_name) + return nil unless @tags.key?(tag_name) + return @cache[tag_name] if Liquid.cache_classes + + lookup_class(@tags[tag_name]).tap { |o| @cache[tag_name] = o } + end + + def []=(tag_name, klass) + @tags[tag_name] = klass.name + @cache[tag_name] = klass + end + + def delete(tag_name) + @tags.delete(tag_name) + @cache.delete(tag_name) + end + + def each(&block) + @tags.each(&block) + end + + private + + def lookup_class(name) + name.split("::").reject(&:empty?).reduce(Object) { |scope, const| scope.const_get(const) } + end + end + + attr_reader :profiler + + class << self + # Sets how strict the parser should be. + # :lax acts like liquid 2.5 and silently ignores malformed tags in most cases. + # :warn is the default and will give deprecation warnings when invalid syntax is used. + # :strict will enforce correct syntax. + attr_writer :error_mode + + # Sets how strict the taint checker should be. + # :lax is the default, and ignores the taint flag completely + # :warn adds a warning, but does not interrupt the rendering + # :error raises an error when tainted output is used + attr_writer :taint_mode + + attr_accessor :default_exception_renderer + Template.default_exception_renderer = lambda do |exception| + exception + end + + def file_system + @@file_system + end + + def file_system=(obj) + @@file_system = obj + end + + def register_tag(name, klass) + tags[name.to_s] = klass + end + + def tags + @tags ||= TagRegistry.new + end + + def error_mode + @error_mode ||= :lax + end + + def taint_mode + @taint_mode ||= :lax + end + + # Pass a module with filter methods which should be available + # to all liquid views. Good for registering the standard library + def register_filter(mod) + Strainer.global_filter(mod) + end + + def default_resource_limits + @default_resource_limits ||= {} + end + + # creates a new Template object from liquid source code + # To enable profiling, pass in profile: true as an option. + # See Liquid::Profiler for more information + def parse(source, options = {}) + template = Template.new + template.parse(source, options) + end + end + + def initialize + @rethrow_errors = false + @resource_limits = ResourceLimits.new(self.class.default_resource_limits) + end + + # Parse source code. + # Returns self for easy chaining + def parse(source, options = {}) + @options = options + @profiling = options[:profile] + @line_numbers = options[:line_numbers] || @profiling + parse_context = options.is_a?(ParseContext) ? options : ParseContext.new(options) + @root = Document.parse(tokenize(source), parse_context) + @warnings = parse_context.warnings + self + end + + def registers + @registers ||= {} + end + + def assigns + @assigns ||= {} + end + + def instance_assigns + @instance_assigns ||= {} + end + + def errors + @errors ||= [] + end + + # Render takes a hash with local variables. + # + # if you use the same filters over and over again consider registering them globally + # with Template.register_filter + # + # if profiling was enabled in Template#parse then the resulting profiling information + # will be available via Template#profiler + # + # Following options can be passed: + # + # * filters : array with local filters + # * registers : hash with register variables. Those can be accessed from + # filters and tags and might be useful to integrate liquid more with its host application + # + def render(*args) + return ''.freeze if @root.nil? + + context = case args.first + when Liquid::Context + c = args.shift + + if @rethrow_errors + c.exception_renderer = ->(e) { raise } + end + + c + when Liquid::Drop + drop = args.shift + drop.context = Context.new([drop, assigns], instance_assigns, registers, @rethrow_errors, @resource_limits) + when Hash + Context.new([args.shift, assigns], instance_assigns, registers, @rethrow_errors, @resource_limits) + when nil + Context.new(assigns, instance_assigns, registers, @rethrow_errors, @resource_limits) + else + raise ArgumentError, "Expected Hash or Liquid::Context as parameter" + end + + case args.last + when Hash + options = args.pop + + registers.merge!(options[:registers]) if options[:registers].is_a?(Hash) + + apply_options_to_context(context, options) + when Module, Array + context.add_filters(args.pop) + end + + # Retrying a render resets resource usage + context.resource_limits.reset + + begin + # render the nodelist. + # for performance reasons we get an array back here. join will make a string out of it. + result = with_profiling(context) do + @root.render(context) + end + result.respond_to?(:join) ? result.join : result + rescue Liquid::MemoryError => e + context.handle_error(e) + ensure + @errors = context.errors + end + end + + def render!(*args) + @rethrow_errors = true + render(*args) + end + + private + + def tokenize(source) + Tokenizer.new(source, @line_numbers) + end + + def with_profiling(context) + if @profiling && !context.partial + raise "Profiler not loaded, require 'liquid/profiler' first" unless defined?(Liquid::Profiler) + + @profiler = Profiler.new + @profiler.start + + begin + yield + ensure + @profiler.stop + end + else + yield + end + end + + def apply_options_to_context(context, options) + context.add_filters(options[:filters]) if options[:filters] + context.global_filter = options[:global_filter] if options[:global_filter] + context.exception_renderer = options[:exception_renderer] if options[:exception_renderer] + context.strict_variables = options[:strict_variables] if options[:strict_variables] + context.strict_filters = options[:strict_filters] if options[:strict_filters] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tokenizer.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tokenizer.rb new file mode 100644 index 0000000000..d03657e843 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/tokenizer.rb @@ -0,0 +1,31 @@ +module Liquid + class Tokenizer + attr_reader :line_number + + def initialize(source, line_numbers = false) + @source = source + @line_number = line_numbers ? 1 : nil + @tokens = tokenize + end + + def shift + token = @tokens.shift + @line_number += token.count("\n") if @line_number && token + token + end + + private + + def tokenize + @source = @source.source if @source.respond_to?(:source) + return [] if @source.to_s.empty? + + tokens = @source.split(TemplateParser) + + # removes the rogue empty element at the beginning of the array + tokens.shift if tokens[0] && tokens[0].empty? + + tokens + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/utils.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/utils.rb new file mode 100644 index 0000000000..516ac0cfcc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/utils.rb @@ -0,0 +1,83 @@ +module Liquid + module Utils + def self.slice_collection(collection, from, to) + if (from != 0 || !to.nil?) && collection.respond_to?(:load_slice) + collection.load_slice(from, to) + else + slice_collection_using_each(collection, from, to) + end + end + + def self.slice_collection_using_each(collection, from, to) + segments = [] + index = 0 + + # Maintains Ruby 1.8.7 String#each behaviour on 1.9 + if collection.is_a?(String) + return collection.empty? ? [] : [collection] + end + return [] unless collection.respond_to?(:each) + + collection.each do |item| + if to && to <= index + break + end + + if from <= index + segments << item + end + + index += 1 + end + + segments + end + + def self.to_integer(num) + return num if num.is_a?(Integer) + num = num.to_s + begin + Integer(num) + rescue ::ArgumentError + raise Liquid::ArgumentError, "invalid integer" + end + end + + def self.to_number(obj) + case obj + when Float + BigDecimal(obj.to_s) + when Numeric + obj + when String + (obj.strip =~ /\A-?\d+\.\d+\z/) ? BigDecimal(obj) : obj.to_i + else + if obj.respond_to?(:to_number) + obj.to_number + else + 0 + end + end + end + + def self.to_date(obj) + return obj if obj.respond_to?(:strftime) + + if obj.is_a?(String) + return nil if obj.empty? + obj = obj.downcase + end + + case obj + when 'now'.freeze, 'today'.freeze + Time.now + when /\A\d+\z/, Integer + Time.at(obj.to_i) + when String + Time.parse(obj) + end + rescue ::ArgumentError + nil + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable.rb new file mode 100644 index 0000000000..5f88eb38da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable.rb @@ -0,0 +1,142 @@ +module Liquid + # Holds variables. Variables are only loaded "just in time" + # and are not evaluated as part of the render stage + # + # {{ monkey }} + # {{ user.name }} + # + # Variables can be combined with filters: + # + # {{ user | link }} + # + class Variable + FilterMarkupRegex = /#{FilterSeparator}\s*(.*)/om + FilterParser = /(?:\s+|#{QuotedFragment}|#{ArgumentSeparator})+/o + FilterArgsRegex = /(?:#{FilterArgumentSeparator}|#{ArgumentSeparator})\s*((?:\w+\s*\:\s*)?#{QuotedFragment})/o + JustTagAttributes = /\A#{TagAttributes}\z/o + MarkupWithQuotedFragment = /(#{QuotedFragment})(.*)/om + + attr_accessor :filters, :name, :line_number + attr_reader :parse_context + alias_method :options, :parse_context + + include ParserSwitching + + def initialize(markup, parse_context) + @markup = markup + @name = nil + @parse_context = parse_context + @line_number = parse_context.line_number + + parse_with_selected_parser(markup) + end + + def raw + @markup + end + + def markup_context(markup) + "in \"{{#{markup}}}\"" + end + + def lax_parse(markup) + @filters = [] + return unless markup =~ MarkupWithQuotedFragment + + name_markup = $1 + filter_markup = $2 + @name = Expression.parse(name_markup) + if filter_markup =~ FilterMarkupRegex + filters = $1.scan(FilterParser) + filters.each do |f| + next unless f =~ /\w+/ + filtername = Regexp.last_match(0) + filterargs = f.scan(FilterArgsRegex).flatten + @filters << parse_filter_expressions(filtername, filterargs) + end + end + end + + def strict_parse(markup) + @filters = [] + p = Parser.new(markup) + + @name = Expression.parse(p.expression) + while p.consume?(:pipe) + filtername = p.consume(:id) + filterargs = p.consume?(:colon) ? parse_filterargs(p) : [] + @filters << parse_filter_expressions(filtername, filterargs) + end + p.consume(:end_of_string) + end + + def parse_filterargs(p) + # first argument + filterargs = [p.argument] + # followed by comma separated others + filterargs << p.argument while p.consume?(:comma) + filterargs + end + + def render(context) + obj = @filters.inject(context.evaluate(@name)) do |output, (filter_name, filter_args, filter_kwargs)| + filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs) + context.invoke(filter_name, output, *filter_args) + end + + obj = context.apply_global_filter(obj) + + taint_check(context, obj) + + obj + end + + private + + def parse_filter_expressions(filter_name, unparsed_args) + filter_args = [] + keyword_args = {} + unparsed_args.each do |a| + if matches = a.match(JustTagAttributes) + keyword_args[matches[1]] = Expression.parse(matches[2]) + else + filter_args << Expression.parse(a) + end + end + result = [filter_name, filter_args] + result << keyword_args unless keyword_args.empty? + result + end + + def evaluate_filter_expressions(context, filter_args, filter_kwargs) + parsed_args = filter_args.map{ |expr| context.evaluate(expr) } + if filter_kwargs + parsed_kwargs = {} + filter_kwargs.each do |key, expr| + parsed_kwargs[key] = context.evaluate(expr) + end + parsed_args << parsed_kwargs + end + parsed_args + end + + def taint_check(context, obj) + return unless obj.tainted? + return if Template.taint_mode == :lax + + @markup =~ QuotedFragment + name = Regexp.last_match(0) + + error = TaintedError.new("variable '#{name}' is tainted and was not escaped") + error.line_number = line_number + error.template_name = context.template_name + + case Template.taint_mode + when :warn + context.warnings << error + when :error + raise error + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable_lookup.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable_lookup.rb new file mode 100644 index 0000000000..3ed4e4a4ec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/variable_lookup.rb @@ -0,0 +1,82 @@ +module Liquid + class VariableLookup + SQUARE_BRACKETED = /\A\[(.*)\]\z/m + COMMAND_METHODS = ['size'.freeze, 'first'.freeze, 'last'.freeze] + + attr_reader :name, :lookups + + def self.parse(markup) + new(markup) + end + + def initialize(markup) + lookups = markup.scan(VariableParser) + + name = lookups.shift + if name =~ SQUARE_BRACKETED + name = Expression.parse($1) + end + @name = name + + @lookups = lookups + @command_flags = 0 + + @lookups.each_index do |i| + lookup = lookups[i] + if lookup =~ SQUARE_BRACKETED + lookups[i] = Expression.parse($1) + elsif COMMAND_METHODS.include?(lookup) + @command_flags |= 1 << i + end + end + end + + def evaluate(context) + name = context.evaluate(@name) + object = context.find_variable(name) + + @lookups.each_index do |i| + key = context.evaluate(@lookups[i]) + + # If object is a hash- or array-like object we look for the + # presence of the key and if its available we return it + if object.respond_to?(:[]) && + ((object.respond_to?(:key?) && object.key?(key)) || + (object.respond_to?(:fetch) && key.is_a?(Integer))) + + # if its a proc we will replace the entry with the proc + res = context.lookup_and_evaluate(object, key) + object = res.to_liquid + + # Some special cases. If the part wasn't in square brackets and + # no key with the same name was found we interpret following calls + # as commands and call them on the current object + elsif @command_flags & (1 << i) != 0 && object.respond_to?(key) + object = object.send(key).to_liquid + + # No key was present with the desired value and it wasn't one of the directly supported + # keywords either. The only thing we got left is to return nil or + # raise an exception if `strict_variables` option is set to true + else + return nil unless context.strict_variables + raise Liquid::UndefinedVariable, "undefined variable #{key}" + end + + # If we are dealing with a drop here we have to + object.context = context if object.respond_to?(:context=) + end + + object + end + + def ==(other) + self.class == other.class && state == other.state + end + + protected + + def state + [@name, @lookups, @command_flags] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/version.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/version.rb new file mode 100644 index 0000000000..64abb7ee16 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/lib/liquid/version.rb @@ -0,0 +1,4 @@ +# encoding: utf-8 +module Liquid + VERSION = "4.0.1" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/fixtures/en_locale.yml b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/fixtures/en_locale.yml new file mode 100644 index 0000000000..0b113c676e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/fixtures/en_locale.yml @@ -0,0 +1,9 @@ +--- + simple: "less is more" + whatever: "something %{something}" + errors: + i18n: + undefined_interpolation: "undefined key %{key}" + unknown_translation: "translation '%{name}' wasn't found" + syntax: + oops: "something wasn't right" diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/assign_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/assign_test.rb new file mode 100644 index 0000000000..5502289999 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/assign_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class AssignTest < Minitest::Test + include Liquid + + def test_assign_with_hyphen_in_variable_name + template_source = <<-END_TEMPLATE + {% assign this-thing = 'Print this-thing' %} + {{ this-thing }} + END_TEMPLATE + template = Template.parse(template_source) + rendered = template.render! + assert_equal "Print this-thing", rendered.strip + end + + def test_assigned_variable + assert_template_result('.foo.', + '{% assign foo = values %}.{{ foo[0] }}.', + 'values' => %w(foo bar baz)) + + assert_template_result('.bar.', + '{% assign foo = values %}.{{ foo[1] }}.', + 'values' => %w(foo bar baz)) + end + + def test_assign_with_filter + assert_template_result('.bar.', + '{% assign foo = values | split: "," %}.{{ foo[1] }}.', + 'values' => "foo,bar,baz") + end + + def test_assign_syntax_error + assert_match_syntax_error(/assign/, + '{% assign foo not values %}.', + 'values' => "foo,bar,baz") + end + + def test_assign_uses_error_mode + with_error_mode(:strict) do + assert_raises(SyntaxError) do + Template.parse("{% assign foo = ('X' | downcase) %}") + end + end + with_error_mode(:lax) do + assert Template.parse("{% assign foo = ('X' | downcase) %}") + end + end +end # AssignTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/blank_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/blank_test.rb new file mode 100644 index 0000000000..e9b56df13c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/blank_test.rb @@ -0,0 +1,106 @@ +require 'test_helper' + +class FoobarTag < Liquid::Tag + def render(*args) + " " + end + + Liquid::Template.register_tag('foobar', FoobarTag) +end + +class BlankTestFileSystem + def read_template_file(template_path) + template_path + end +end + +class BlankTest < Minitest::Test + include Liquid + N = 10 + + def wrap_in_for(body) + "{% for i in (1..#{N}) %}#{body}{% endfor %}" + end + + def wrap_in_if(body) + "{% if true %}#{body}{% endif %}" + end + + def wrap(body) + wrap_in_for(body) + wrap_in_if(body) + end + + def test_new_tags_are_not_blank_by_default + assert_template_result(" " * N, wrap_in_for("{% foobar %}")) + end + + def test_loops_are_blank + assert_template_result("", wrap_in_for(" ")) + end + + def test_if_else_are_blank + assert_template_result("", "{% if true %} {% elsif false %} {% else %} {% endif %}") + end + + def test_unless_is_blank + assert_template_result("", wrap("{% unless true %} {% endunless %}")) + end + + def test_mark_as_blank_only_during_parsing + assert_template_result(" " * (N + 1), wrap(" {% if false %} this never happens, but still, this block is not blank {% endif %}")) + end + + def test_comments_are_blank + assert_template_result("", wrap(" {% comment %} whatever {% endcomment %} ")) + end + + def test_captures_are_blank + assert_template_result("", wrap(" {% capture foo %} whatever {% endcapture %} ")) + end + + def test_nested_blocks_are_blank_but_only_if_all_children_are + assert_template_result("", wrap(wrap(" "))) + assert_template_result("\n but this is not " * (N + 1), + wrap('{% if true %} {% comment %} this is blank {% endcomment %} {% endif %} + {% if true %} but this is not {% endif %}')) + end + + def test_assigns_are_blank + assert_template_result("", wrap(' {% assign foo = "bar" %} ')) + end + + def test_whitespace_is_blank + assert_template_result("", wrap(" ")) + assert_template_result("", wrap("\t")) + end + + def test_whitespace_is_not_blank_if_other_stuff_is_present + body = " x " + assert_template_result(body * (N + 1), wrap(body)) + end + + def test_increment_is_not_blank + assert_template_result(" 0" * 2 * (N + 1), wrap("{% assign foo = 0 %} {% increment foo %} {% decrement foo %}")) + end + + def test_cycle_is_not_blank + assert_template_result(" " * ((N + 1) / 2) + " ", wrap("{% cycle ' ', ' ' %}")) + end + + def test_raw_is_not_blank + assert_template_result(" " * (N + 1), wrap(" {% raw %} {% endraw %}")) + end + + def test_include_is_blank + Liquid::Template.file_system = BlankTestFileSystem.new + assert_template_result "foobar" * (N + 1), wrap("{% include 'foobar' %}") + assert_template_result " foobar " * (N + 1), wrap("{% include ' foobar ' %}") + assert_template_result " " * (N + 1), wrap(" {% include ' ' %} ") + end + + def test_case_is_blank + assert_template_result("", wrap(" {% assign foo = 'bar' %} {% case foo %} {% when 'bar' %} {% when 'whatever' %} {% else %} {% endcase %} ")) + assert_template_result("", wrap(" {% assign foo = 'else' %} {% case foo %} {% when 'bar' %} {% when 'whatever' %} {% else %} {% endcase %} ")) + assert_template_result(" x " * (N + 1), wrap(" {% assign foo = 'else' %} {% case foo %} {% when 'bar' %} {% when 'whatever' %} {% else %} x {% endcase %} ")) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/block_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/block_test.rb new file mode 100644 index 0000000000..0824530163 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/block_test.rb @@ -0,0 +1,12 @@ +require 'test_helper' + +class BlockTest < Minitest::Test + include Liquid + + def test_unexpected_end_tag + exc = assert_raises(SyntaxError) do + Template.parse("{% if true %}{% endunless %}") + end + assert_equal exc.message, "Liquid syntax error: 'endunless' is not a valid delimiter for if tags. use endif" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/capture_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/capture_test.rb new file mode 100644 index 0000000000..8d965b35e7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/capture_test.rb @@ -0,0 +1,50 @@ +require 'test_helper' + +class CaptureTest < Minitest::Test + include Liquid + + def test_captures_block_content_in_variable + assert_template_result("test string", "{% capture 'var' %}test string{% endcapture %}{{var}}", {}) + end + + def test_capture_with_hyphen_in_variable_name + template_source = <<-END_TEMPLATE + {% capture this-thing %}Print this-thing{% endcapture %} + {{ this-thing }} + END_TEMPLATE + template = Template.parse(template_source) + rendered = template.render! + assert_equal "Print this-thing", rendered.strip + end + + def test_capture_to_variable_from_outer_scope_if_existing + template_source = <<-END_TEMPLATE + {% assign var = '' %} + {% if true %} + {% capture var %}first-block-string{% endcapture %} + {% endif %} + {% if true %} + {% capture var %}test-string{% endcapture %} + {% endif %} + {{var}} + END_TEMPLATE + template = Template.parse(template_source) + rendered = template.render! + assert_equal "test-string", rendered.gsub(/\s/, '') + end + + def test_assigning_from_capture + template_source = <<-END_TEMPLATE + {% assign first = '' %} + {% assign second = '' %} + {% for number in (1..3) %} + {% capture first %}{{number}}{% endcapture %} + {% assign second = first %} + {% endfor %} + {{ first }}-{{ second }} + END_TEMPLATE + template = Template.parse(template_source) + rendered = template.render! + assert_equal "3-3", rendered.gsub(/\s/, '') + end +end # CaptureTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/context_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/context_test.rb new file mode 100644 index 0000000000..2d109bb75f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/context_test.rb @@ -0,0 +1,32 @@ +require 'test_helper' + +class ContextTest < Minitest::Test + include Liquid + + def test_override_global_filter + global = Module.new do + def notice(output) + "Global #{output}" + end + end + + local = Module.new do + def notice(output) + "Local #{output}" + end + end + + with_global_filter(global) do + assert_equal 'Global test', Template.parse("{{'test' | notice }}").render! + assert_equal 'Local test', Template.parse("{{'test' | notice }}").render!({}, filters: [local]) + end + end + + def test_has_key_will_not_add_an_error_for_missing_keys + with_error_mode :strict do + context = Context.new + context.key?('unknown') + assert_empty context.errors + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/document_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/document_test.rb new file mode 100644 index 0000000000..bcc4a21c36 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/document_test.rb @@ -0,0 +1,19 @@ +require 'test_helper' + +class DocumentTest < Minitest::Test + include Liquid + + def test_unexpected_outer_tag + exc = assert_raises(SyntaxError) do + Template.parse("{% else %}") + end + assert_equal exc.message, "Liquid syntax error: Unexpected outer 'else' tag" + end + + def test_unknown_tag + exc = assert_raises(SyntaxError) do + Template.parse("{% foo %}") + end + assert_equal exc.message, "Liquid syntax error: Unknown tag 'foo'" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/drop_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/drop_test.rb new file mode 100644 index 0000000000..2de4a5a153 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/drop_test.rb @@ -0,0 +1,273 @@ +require 'test_helper' + +class ContextDrop < Liquid::Drop + def scopes + @context.scopes.size + end + + def scopes_as_array + (1..@context.scopes.size).to_a + end + + def loop_pos + @context['forloop.index'] + end + + def liquid_method_missing(method) + @context[method] + end +end + +class ProductDrop < Liquid::Drop + class TextDrop < Liquid::Drop + def array + ['text1', 'text2'] + end + + def text + 'text1' + end + end + + class CatchallDrop < Liquid::Drop + def liquid_method_missing(method) + 'catchall_method: ' << method.to_s + end + end + + def texts + TextDrop.new + end + + def catchall + CatchallDrop.new + end + + def context + ContextDrop.new + end + + def user_input + "foo".taint + end + + protected + + def callmenot + "protected" + end +end + +class EnumerableDrop < Liquid::Drop + def liquid_method_missing(method) + method + end + + def size + 3 + end + + def first + 1 + end + + def count + 3 + end + + def min + 1 + end + + def max + 3 + end + + def each + yield 1 + yield 2 + yield 3 + end +end + +class RealEnumerableDrop < Liquid::Drop + include Enumerable + + def liquid_method_missing(method) + method + end + + def each + yield 1 + yield 2 + yield 3 + end +end + +class DropsTest < Minitest::Test + include Liquid + + def test_product_drop + tpl = Liquid::Template.parse(' ') + assert_equal ' ', tpl.render!('product' => ProductDrop.new) + end + + def test_rendering_raises_on_tainted_attr + with_taint_mode(:error) do + tpl = Liquid::Template.parse('{{ product.user_input }}') + assert_raises TaintedError do + tpl.render!('product' => ProductDrop.new) + end + end + end + + def test_rendering_warns_on_tainted_attr + with_taint_mode(:warn) do + tpl = Liquid::Template.parse('{{ product.user_input }}') + context = Context.new('product' => ProductDrop.new) + tpl.render!(context) + assert_equal [Liquid::TaintedError], context.warnings.map(&:class) + assert_equal "variable 'product.user_input' is tainted and was not escaped", context.warnings.first.to_s(false) + end + end + + def test_rendering_doesnt_raise_on_escaped_tainted_attr + with_taint_mode(:error) do + tpl = Liquid::Template.parse('{{ product.user_input | escape }}') + tpl.render!('product' => ProductDrop.new) + end + end + + def test_drop_does_only_respond_to_whitelisted_methods + assert_equal "", Liquid::Template.parse("{{ product.inspect }}").render!('product' => ProductDrop.new) + assert_equal "", Liquid::Template.parse("{{ product.pretty_inspect }}").render!('product' => ProductDrop.new) + assert_equal "", Liquid::Template.parse("{{ product.whatever }}").render!('product' => ProductDrop.new) + assert_equal "", Liquid::Template.parse('{{ product | map: "inspect" }}').render!('product' => ProductDrop.new) + assert_equal "", Liquid::Template.parse('{{ product | map: "pretty_inspect" }}').render!('product' => ProductDrop.new) + assert_equal "", Liquid::Template.parse('{{ product | map: "whatever" }}').render!('product' => ProductDrop.new) + end + + def test_drops_respond_to_to_liquid + assert_equal "text1", Liquid::Template.parse("{{ product.to_liquid.texts.text }}").render!('product' => ProductDrop.new) + assert_equal "text1", Liquid::Template.parse('{{ product | map: "to_liquid" | map: "texts" | map: "text" }}').render!('product' => ProductDrop.new) + end + + def test_text_drop + output = Liquid::Template.parse(' {{ product.texts.text }} ').render!('product' => ProductDrop.new) + assert_equal ' text1 ', output + end + + def test_catchall_unknown_method + output = Liquid::Template.parse(' {{ product.catchall.unknown }} ').render!('product' => ProductDrop.new) + assert_equal ' catchall_method: unknown ', output + end + + def test_catchall_integer_argument_drop + output = Liquid::Template.parse(' {{ product.catchall[8] }} ').render!('product' => ProductDrop.new) + assert_equal ' catchall_method: 8 ', output + end + + def test_text_array_drop + output = Liquid::Template.parse('{% for text in product.texts.array %} {{text}} {% endfor %}').render!('product' => ProductDrop.new) + assert_equal ' text1 text2 ', output + end + + def test_context_drop + output = Liquid::Template.parse(' {{ context.bar }} ').render!('context' => ContextDrop.new, 'bar' => "carrot") + assert_equal ' carrot ', output + end + + def test_nested_context_drop + output = Liquid::Template.parse(' {{ product.context.foo }} ').render!('product' => ProductDrop.new, 'foo' => "monkey") + assert_equal ' monkey ', output + end + + def test_protected + output = Liquid::Template.parse(' {{ product.callmenot }} ').render!('product' => ProductDrop.new) + assert_equal ' ', output + end + + def test_object_methods_not_allowed + [:dup, :clone, :singleton_class, :eval, :class_eval, :inspect].each do |method| + output = Liquid::Template.parse(" {{ product.#{method} }} ").render!('product' => ProductDrop.new) + assert_equal ' ', output + end + end + + def test_scope + assert_equal '1', Liquid::Template.parse('{{ context.scopes }}').render!('context' => ContextDrop.new) + assert_equal '2', Liquid::Template.parse('{%for i in dummy%}{{ context.scopes }}{%endfor%}').render!('context' => ContextDrop.new, 'dummy' => [1]) + assert_equal '3', Liquid::Template.parse('{%for i in dummy%}{%for i in dummy%}{{ context.scopes }}{%endfor%}{%endfor%}').render!('context' => ContextDrop.new, 'dummy' => [1]) + end + + def test_scope_though_proc + assert_equal '1', Liquid::Template.parse('{{ s }}').render!('context' => ContextDrop.new, 's' => proc{ |c| c['context.scopes'] }) + assert_equal '2', Liquid::Template.parse('{%for i in dummy%}{{ s }}{%endfor%}').render!('context' => ContextDrop.new, 's' => proc{ |c| c['context.scopes'] }, 'dummy' => [1]) + assert_equal '3', Liquid::Template.parse('{%for i in dummy%}{%for i in dummy%}{{ s }}{%endfor%}{%endfor%}').render!('context' => ContextDrop.new, 's' => proc{ |c| c['context.scopes'] }, 'dummy' => [1]) + end + + def test_scope_with_assigns + assert_equal 'variable', Liquid::Template.parse('{% assign a = "variable"%}{{a}}').render!('context' => ContextDrop.new) + assert_equal 'variable', Liquid::Template.parse('{% assign a = "variable"%}{%for i in dummy%}{{a}}{%endfor%}').render!('context' => ContextDrop.new, 'dummy' => [1]) + assert_equal 'test', Liquid::Template.parse('{% assign header_gif = "test"%}{{header_gif}}').render!('context' => ContextDrop.new) + assert_equal 'test', Liquid::Template.parse("{% assign header_gif = 'test'%}{{header_gif}}").render!('context' => ContextDrop.new) + end + + def test_scope_from_tags + assert_equal '1', Liquid::Template.parse('{% for i in context.scopes_as_array %}{{i}}{% endfor %}').render!('context' => ContextDrop.new, 'dummy' => [1]) + assert_equal '12', Liquid::Template.parse('{%for a in dummy%}{% for i in context.scopes_as_array %}{{i}}{% endfor %}{% endfor %}').render!('context' => ContextDrop.new, 'dummy' => [1]) + assert_equal '123', Liquid::Template.parse('{%for a in dummy%}{%for a in dummy%}{% for i in context.scopes_as_array %}{{i}}{% endfor %}{% endfor %}{% endfor %}').render!('context' => ContextDrop.new, 'dummy' => [1]) + end + + def test_access_context_from_drop + assert_equal '123', Liquid::Template.parse('{%for a in dummy%}{{ context.loop_pos }}{% endfor %}').render!('context' => ContextDrop.new, 'dummy' => [1, 2, 3]) + end + + def test_enumerable_drop + assert_equal '123', Liquid::Template.parse('{% for c in collection %}{{c}}{% endfor %}').render!('collection' => EnumerableDrop.new) + end + + def test_enumerable_drop_size + assert_equal '3', Liquid::Template.parse('{{collection.size}}').render!('collection' => EnumerableDrop.new) + end + + def test_enumerable_drop_will_invoke_liquid_method_missing_for_clashing_method_names + ["select", "each", "map", "cycle"].each do |method| + assert_equal method.to_s, Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => EnumerableDrop.new) + assert_equal method.to_s, Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => EnumerableDrop.new) + assert_equal method.to_s, Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => RealEnumerableDrop.new) + assert_equal method.to_s, Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => RealEnumerableDrop.new) + end + end + + def test_some_enumerable_methods_still_get_invoked + [ :count, :max ].each do |method| + assert_equal "3", Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => RealEnumerableDrop.new) + assert_equal "3", Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => RealEnumerableDrop.new) + assert_equal "3", Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => EnumerableDrop.new) + assert_equal "3", Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => EnumerableDrop.new) + end + + assert_equal "yes", Liquid::Template.parse("{% if collection contains 3 %}yes{% endif %}").render!('collection' => RealEnumerableDrop.new) + + [ :min, :first ].each do |method| + assert_equal "1", Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => RealEnumerableDrop.new) + assert_equal "1", Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => RealEnumerableDrop.new) + assert_equal "1", Liquid::Template.parse("{{collection.#{method}}}").render!('collection' => EnumerableDrop.new) + assert_equal "1", Liquid::Template.parse("{{collection[\"#{method}\"]}}").render!('collection' => EnumerableDrop.new) + end + end + + def test_empty_string_value_access + assert_equal '', Liquid::Template.parse('{{ product[value] }}').render!('product' => ProductDrop.new, 'value' => '') + end + + def test_nil_value_access + assert_equal '', Liquid::Template.parse('{{ product[value] }}').render!('product' => ProductDrop.new, 'value' => nil) + end + + def test_default_to_s_on_drops + assert_equal 'ProductDrop', Liquid::Template.parse("{{ product }}").render!('product' => ProductDrop.new) + assert_equal 'EnumerableDrop', Liquid::Template.parse('{{ collection }}').render!('collection' => EnumerableDrop.new) + end +end # DropsTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/error_handling_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/error_handling_test.rb new file mode 100644 index 0000000000..ba8186124d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/error_handling_test.rb @@ -0,0 +1,260 @@ +require 'test_helper' + +class ErrorHandlingTest < Minitest::Test + include Liquid + + def test_templates_parsed_with_line_numbers_renders_them_in_errors + template = <<-LIQUID + Hello, + + {{ errors.standard_error }} will raise a standard error. + + Bla bla test. + + {{ errors.syntax_error }} will raise a syntax error. + + This is an argument error: {{ errors.argument_error }} + + Bla. + LIQUID + + expected = <<-TEXT + Hello, + + Liquid error (line 3): standard error will raise a standard error. + + Bla bla test. + + Liquid syntax error (line 7): syntax error will raise a syntax error. + + This is an argument error: Liquid error (line 9): argument error + + Bla. + TEXT + + output = Liquid::Template.parse(template, line_numbers: true).render('errors' => ErrorDrop.new) + assert_equal expected, output + end + + def test_standard_error + template = Liquid::Template.parse(' {{ errors.standard_error }} ') + assert_equal ' Liquid error: standard error ', template.render('errors' => ErrorDrop.new) + + assert_equal 1, template.errors.size + assert_equal StandardError, template.errors.first.class + end + + def test_syntax + template = Liquid::Template.parse(' {{ errors.syntax_error }} ') + assert_equal ' Liquid syntax error: syntax error ', template.render('errors' => ErrorDrop.new) + + assert_equal 1, template.errors.size + assert_equal SyntaxError, template.errors.first.class + end + + def test_argument + template = Liquid::Template.parse(' {{ errors.argument_error }} ') + assert_equal ' Liquid error: argument error ', template.render('errors' => ErrorDrop.new) + + assert_equal 1, template.errors.size + assert_equal ArgumentError, template.errors.first.class + end + + def test_missing_endtag_parse_time_error + assert_raises(Liquid::SyntaxError) do + Liquid::Template.parse(' {% for a in b %} ... ') + end + end + + def test_unrecognized_operator + with_error_mode(:strict) do + assert_raises(SyntaxError) do + Liquid::Template.parse(' {% if 1 =! 2 %}ok{% endif %} ') + end + end + end + + def test_lax_unrecognized_operator + template = Liquid::Template.parse(' {% if 1 =! 2 %}ok{% endif %} ', error_mode: :lax) + assert_equal ' Liquid error: Unknown operator =! ', template.render + assert_equal 1, template.errors.size + assert_equal Liquid::ArgumentError, template.errors.first.class + end + + def test_with_line_numbers_adds_numbers_to_parser_errors + err = assert_raises(SyntaxError) do + Liquid::Template.parse(%q( + foobar + + {% "cat" | foobar %} + + bla + ), + line_numbers: true + ) + end + + assert_match(/Liquid syntax error \(line 4\)/, err.message) + end + + def test_with_line_numbers_adds_numbers_to_parser_errors_with_whitespace_trim + err = assert_raises(SyntaxError) do + Liquid::Template.parse(%q( + foobar + + {%- "cat" | foobar -%} + + bla + ), + line_numbers: true + ) + end + + assert_match(/Liquid syntax error \(line 4\)/, err.message) + end + + def test_parsing_warn_with_line_numbers_adds_numbers_to_lexer_errors + template = Liquid::Template.parse(' + foobar + + {% if 1 =! 2 %}ok{% endif %} + + bla + ', + error_mode: :warn, + line_numbers: true + ) + + assert_equal ['Liquid syntax error (line 4): Unexpected character = in "1 =! 2"'], + template.warnings.map(&:message) + end + + def test_parsing_strict_with_line_numbers_adds_numbers_to_lexer_errors + err = assert_raises(SyntaxError) do + Liquid::Template.parse(' + foobar + + {% if 1 =! 2 %}ok{% endif %} + + bla + ', + error_mode: :strict, + line_numbers: true + ) + end + + assert_equal 'Liquid syntax error (line 4): Unexpected character = in "1 =! 2"', err.message + end + + def test_syntax_errors_in_nested_blocks_have_correct_line_number + err = assert_raises(SyntaxError) do + Liquid::Template.parse(' + foobar + + {% if 1 != 2 %} + {% foo %} + {% endif %} + + bla + ', + line_numbers: true + ) + end + + assert_equal "Liquid syntax error (line 5): Unknown tag 'foo'", err.message + end + + def test_strict_error_messages + err = assert_raises(SyntaxError) do + Liquid::Template.parse(' {% if 1 =! 2 %}ok{% endif %} ', error_mode: :strict) + end + assert_equal 'Liquid syntax error: Unexpected character = in "1 =! 2"', err.message + + err = assert_raises(SyntaxError) do + Liquid::Template.parse('{{%%%}}', error_mode: :strict) + end + assert_equal 'Liquid syntax error: Unexpected character % in "{{%%%}}"', err.message + end + + def test_warnings + template = Liquid::Template.parse('{% if ~~~ %}{{%%%}}{% else %}{{ hello. }}{% endif %}', error_mode: :warn) + assert_equal 3, template.warnings.size + assert_equal 'Unexpected character ~ in "~~~"', template.warnings[0].to_s(false) + assert_equal 'Unexpected character % in "{{%%%}}"', template.warnings[1].to_s(false) + assert_equal 'Expected id but found end_of_string in "{{ hello. }}"', template.warnings[2].to_s(false) + assert_equal '', template.render + end + + def test_warning_line_numbers + template = Liquid::Template.parse("{% if ~~~ %}\n{{%%%}}{% else %}\n{{ hello. }}{% endif %}", error_mode: :warn, line_numbers: true) + assert_equal 'Liquid syntax error (line 1): Unexpected character ~ in "~~~"', template.warnings[0].message + assert_equal 'Liquid syntax error (line 2): Unexpected character % in "{{%%%}}"', template.warnings[1].message + assert_equal 'Liquid syntax error (line 3): Expected id but found end_of_string in "{{ hello. }}"', template.warnings[2].message + assert_equal 3, template.warnings.size + assert_equal [1, 2, 3], template.warnings.map(&:line_number) + end + + # Liquid should not catch Exceptions that are not subclasses of StandardError, like Interrupt and NoMemoryError + def test_exceptions_propagate + assert_raises Exception do + template = Liquid::Template.parse('{{ errors.exception }}') + template.render('errors' => ErrorDrop.new) + end + end + + def test_default_exception_renderer_with_internal_error + template = Liquid::Template.parse('This is a runtime error: {{ errors.runtime_error }}', line_numbers: true) + + output = template.render({ 'errors' => ErrorDrop.new }) + + assert_equal 'This is a runtime error: Liquid error (line 1): internal', output + assert_equal [Liquid::InternalError], template.errors.map(&:class) + end + + def test_setting_default_exception_renderer + old_exception_renderer = Liquid::Template.default_exception_renderer + exceptions = [] + Liquid::Template.default_exception_renderer = ->(e) { exceptions << e; '' } + template = Liquid::Template.parse('This is a runtime error: {{ errors.argument_error }}') + + output = template.render({ 'errors' => ErrorDrop.new }) + + assert_equal 'This is a runtime error: ', output + assert_equal [Liquid::ArgumentError], template.errors.map(&:class) + ensure + Liquid::Template.default_exception_renderer = old_exception_renderer if old_exception_renderer + end + + def test_exception_renderer_exposing_non_liquid_error + template = Liquid::Template.parse('This is a runtime error: {{ errors.runtime_error }}', line_numbers: true) + exceptions = [] + handler = ->(e) { exceptions << e; e.cause } + + output = template.render({ 'errors' => ErrorDrop.new }, exception_renderer: handler) + + assert_equal 'This is a runtime error: runtime error', output + assert_equal [Liquid::InternalError], exceptions.map(&:class) + assert_equal exceptions, template.errors + assert_equal '#', exceptions.first.cause.inspect + end + + class TestFileSystem + def read_template_file(template_path) + "{{ errors.argument_error }}" + end + end + + def test_included_template_name_with_line_numbers + old_file_system = Liquid::Template.file_system + + begin + Liquid::Template.file_system = TestFileSystem.new + template = Liquid::Template.parse("Argument error:\n{% include 'product' %}", line_numbers: true) + page = template.render('errors' => ErrorDrop.new) + ensure + Liquid::Template.file_system = old_file_system + end + assert_equal "Argument error:\nLiquid error (product line 1): argument error", page + assert_equal "product", template.errors.first.template_name + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/filter_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/filter_test.rb new file mode 100644 index 0000000000..d3c880e833 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/filter_test.rb @@ -0,0 +1,178 @@ +require 'test_helper' + +module MoneyFilter + def money(input) + sprintf(' %d$ ', input) + end + + def money_with_underscore(input) + sprintf(' %d$ ', input) + end +end + +module CanadianMoneyFilter + def money(input) + sprintf(' %d$ CAD ', input) + end +end + +module SubstituteFilter + def substitute(input, params = {}) + input.gsub(/%\{(\w+)\}/) { |match| params[$1] } + end +end + +class FiltersTest < Minitest::Test + include Liquid + + module OverrideObjectMethodFilter + def tap(input) + "tap overridden" + end + end + + def setup + @context = Context.new + end + + def test_local_filter + @context['var'] = 1000 + @context.add_filters(MoneyFilter) + + assert_equal ' 1000$ ', Template.parse("{{var | money}}").render(@context) + end + + def test_underscore_in_filter_name + @context['var'] = 1000 + @context.add_filters(MoneyFilter) + assert_equal ' 1000$ ', Template.parse("{{var | money_with_underscore}}").render(@context) + end + + def test_second_filter_overwrites_first + @context['var'] = 1000 + @context.add_filters(MoneyFilter) + @context.add_filters(CanadianMoneyFilter) + + assert_equal ' 1000$ CAD ', Template.parse("{{var | money}}").render(@context) + end + + def test_size + @context['var'] = 'abcd' + @context.add_filters(MoneyFilter) + + assert_equal '4', Template.parse("{{var | size}}").render(@context) + end + + def test_join + @context['var'] = [1, 2, 3, 4] + + assert_equal "1 2 3 4", Template.parse("{{var | join}}").render(@context) + end + + def test_sort + @context['value'] = 3 + @context['numbers'] = [2, 1, 4, 3] + @context['words'] = ['expected', 'as', 'alphabetic'] + @context['arrays'] = ['flower', 'are'] + @context['case_sensitive'] = ['sensitive', 'Expected', 'case'] + + assert_equal '1 2 3 4', Template.parse("{{numbers | sort | join}}").render(@context) + assert_equal 'alphabetic as expected', Template.parse("{{words | sort | join}}").render(@context) + assert_equal '3', Template.parse("{{value | sort}}").render(@context) + assert_equal 'are flower', Template.parse("{{arrays | sort | join}}").render(@context) + assert_equal 'Expected case sensitive', Template.parse("{{case_sensitive | sort | join}}").render(@context) + end + + def test_sort_natural + @context['words'] = ['case', 'Assert', 'Insensitive'] + @context['hashes'] = [{ 'a' => 'A' }, { 'a' => 'b' }, { 'a' => 'C' }] + @context['objects'] = [TestObject.new('A'), TestObject.new('b'), TestObject.new('C')] + + # Test strings + assert_equal 'Assert case Insensitive', Template.parse("{{words | sort_natural | join}}").render(@context) + + # Test hashes + assert_equal 'A b C', Template.parse("{{hashes | sort_natural: 'a' | map: 'a' | join}}").render(@context) + + # Test objects + assert_equal 'A b C', Template.parse("{{objects | sort_natural: 'a' | map: 'a' | join}}").render(@context) + end + + def test_compact + @context['words'] = ['a', nil, 'b', nil, 'c'] + @context['hashes'] = [{ 'a' => 'A' }, { 'a' => nil }, { 'a' => 'C' }] + @context['objects'] = [TestObject.new('A'), TestObject.new(nil), TestObject.new('C')] + + # Test strings + assert_equal 'a b c', Template.parse("{{words | compact | join}}").render(@context) + + # Test hashes + assert_equal 'A C', Template.parse("{{hashes | compact: 'a' | map: 'a' | join}}").render(@context) + + # Test objects + assert_equal 'A C', Template.parse("{{objects | compact: 'a' | map: 'a' | join}}").render(@context) + end + + def test_strip_html + @context['var'] = "bla blub" + + assert_equal "bla blub", Template.parse("{{ var | strip_html }}").render(@context) + end + + def test_strip_html_ignore_comments_with_html + @context['var'] = "bla blub" + + assert_equal "bla blub", Template.parse("{{ var | strip_html }}").render(@context) + end + + def test_capitalize + @context['var'] = "blub" + + assert_equal "Blub", Template.parse("{{ var | capitalize }}").render(@context) + end + + def test_nonexistent_filter_is_ignored + @context['var'] = 1000 + + assert_equal '1000', Template.parse("{{ var | xyzzy }}").render(@context) + end + + def test_filter_with_keyword_arguments + @context['surname'] = 'john' + @context['input'] = 'hello %{first_name}, %{last_name}' + @context.add_filters(SubstituteFilter) + output = Template.parse(%({{ input | substitute: first_name: surname, last_name: 'doe' }})).render(@context) + assert_equal 'hello john, doe', output + end + + def test_override_object_method_in_filter + assert_equal "tap overridden", Template.parse("{{var | tap}}").render!({ 'var' => 1000 }, filters: [OverrideObjectMethodFilter]) + + # tap still treated as a non-existent filter + assert_equal "1000", Template.parse("{{var | tap}}").render!({ 'var' => 1000 }) + end +end + +class FiltersInTemplate < Minitest::Test + include Liquid + + def test_local_global + with_global_filter(MoneyFilter) do + assert_equal " 1000$ ", Template.parse("{{1000 | money}}").render!(nil, nil) + assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render!(nil, filters: CanadianMoneyFilter) + assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render!(nil, filters: [CanadianMoneyFilter]) + end + end + + def test_local_filter_with_deprecated_syntax + assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render!(nil, CanadianMoneyFilter) + assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render!(nil, [CanadianMoneyFilter]) + end +end # FiltersTest + +class TestObject < Liquid::Drop + attr_accessor :a + def initialize(a) + @a = a + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/hash_ordering_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/hash_ordering_test.rb new file mode 100644 index 0000000000..dfc1c29fc0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/hash_ordering_test.rb @@ -0,0 +1,23 @@ +require 'test_helper' + +class HashOrderingTest < Minitest::Test + module MoneyFilter + def money(input) + sprintf(' %d$ ', input) + end + end + + module CanadianMoneyFilter + def money(input) + sprintf(' %d$ CAD ', input) + end + end + + include Liquid + + def test_global_register_order + with_global_filter(MoneyFilter, CanadianMoneyFilter) do + assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render(nil, nil) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/output_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/output_test.rb new file mode 100644 index 0000000000..b4cf9d707c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/output_test.rb @@ -0,0 +1,123 @@ +require 'test_helper' + +module FunnyFilter + def make_funny(input) + 'LOL' + end + + def cite_funny(input) + "LOL: #{input}" + end + + def add_smiley(input, smiley = ":-)") + "#{input} #{smiley}" + end + + def add_tag(input, tag = "p", id = "foo") + %(<#{tag} id="#{id}">#{input}) + end + + def paragraph(input) + "

                #{input}

                " + end + + def link_to(name, url) + %(#{name}) + end +end + +class OutputTest < Minitest::Test + include Liquid + + def setup + @assigns = { + 'best_cars' => 'bmw', + 'car' => { 'bmw' => 'good', 'gm' => 'bad' } + } + end + + def test_variable + text = %( {{best_cars}} ) + + expected = %( bmw ) + assert_equal expected, Template.parse(text).render!(@assigns) + end + + def test_variable_traversing_with_two_brackets + text = %({{ site.data.menu[include.menu][include.locale] }}) + assert_equal "it works!", Template.parse(text).render!( + "site" => { "data" => { "menu" => { "foo" => { "bar" => "it works!" } } } }, + "include" => { "menu" => "foo", "locale" => "bar" } + ) + end + + def test_variable_traversing + text = %( {{car.bmw}} {{car.gm}} {{car.bmw}} ) + + expected = %( good bad good ) + assert_equal expected, Template.parse(text).render!(@assigns) + end + + def test_variable_piping + text = %( {{ car.gm | make_funny }} ) + expected = %( LOL ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_variable_piping_with_input + text = %( {{ car.gm | cite_funny }} ) + expected = %( LOL: bad ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_variable_piping_with_args + text = %! {{ car.gm | add_smiley : ':-(' }} ! + expected = %| bad :-( | + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_variable_piping_with_no_args + text = %( {{ car.gm | add_smiley }} ) + expected = %| bad :-) | + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_multiple_variable_piping_with_args + text = %! {{ car.gm | add_smiley : ':-(' | add_smiley : ':-('}} ! + expected = %| bad :-( :-( | + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_variable_piping_with_multiple_args + text = %( {{ car.gm | add_tag : 'span', 'bar'}} ) + expected = %( bad ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_variable_piping_with_variable_args + text = %( {{ car.gm | add_tag : 'span', car.bmw}} ) + expected = %( bad ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_multiple_pipings + text = %( {{ best_cars | cite_funny | paragraph }} ) + expected = %(

                LOL: bmw

                ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end + + def test_link_to + text = %( {{ 'Typo' | link_to: 'http://typo.leetsoft.com' }} ) + expected = %( Typo ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: [FunnyFilter]) + end +end # OutputTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/parsing_quirks_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/parsing_quirks_test.rb new file mode 100644 index 0000000000..23742dc76d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/parsing_quirks_test.rb @@ -0,0 +1,122 @@ +require 'test_helper' + +class ParsingQuirksTest < Minitest::Test + include Liquid + + def test_parsing_css + text = " div { font-weight: bold; } " + assert_equal text, Template.parse(text).render! + end + + def test_raise_on_single_close_bracet + assert_raises(SyntaxError) do + Template.parse("text {{method} oh nos!") + end + end + + def test_raise_on_label_and_no_close_bracets + assert_raises(SyntaxError) do + Template.parse("TEST {{ ") + end + end + + def test_raise_on_label_and_no_close_bracets_percent + assert_raises(SyntaxError) do + Template.parse("TEST {% ") + end + end + + def test_error_on_empty_filter + assert Template.parse("{{test}}") + + with_error_mode(:lax) do + assert Template.parse("{{|test}}") + end + + with_error_mode(:strict) do + assert_raises(SyntaxError) { Template.parse("{{|test}}") } + assert_raises(SyntaxError) { Template.parse("{{test |a|b|}}") } + end + end + + def test_meaningless_parens_error + with_error_mode(:strict) do + assert_raises(SyntaxError) do + markup = "a == 'foo' or (b == 'bar' and c == 'baz') or false" + Template.parse("{% if #{markup} %} YES {% endif %}") + end + end + end + + def test_unexpected_characters_syntax_error + with_error_mode(:strict) do + assert_raises(SyntaxError) do + markup = "true && false" + Template.parse("{% if #{markup} %} YES {% endif %}") + end + assert_raises(SyntaxError) do + markup = "false || true" + Template.parse("{% if #{markup} %} YES {% endif %}") + end + end + end + + def test_no_error_on_lax_empty_filter + assert Template.parse("{{test |a|b|}}", error_mode: :lax) + assert Template.parse("{{test}}", error_mode: :lax) + assert Template.parse("{{|test|}}", error_mode: :lax) + end + + def test_meaningless_parens_lax + with_error_mode(:lax) do + assigns = { 'b' => 'bar', 'c' => 'baz' } + markup = "a == 'foo' or (b == 'bar' and c == 'baz') or false" + assert_template_result(' YES ', "{% if #{markup} %} YES {% endif %}", assigns) + end + end + + def test_unexpected_characters_silently_eat_logic_lax + with_error_mode(:lax) do + markup = "true && false" + assert_template_result(' YES ', "{% if #{markup} %} YES {% endif %}") + markup = "false || true" + assert_template_result('', "{% if #{markup} %} YES {% endif %}") + end + end + + def test_raise_on_invalid_tag_delimiter + assert_raises(Liquid::SyntaxError) do + Template.new.parse('{% end %}') + end + end + + def test_unanchored_filter_arguments + with_error_mode(:lax) do + assert_template_result('hi', "{{ 'hi there' | split$$$:' ' | first }}") + + assert_template_result('x', "{{ 'X' | downcase) }}") + + # After the messed up quotes a filter without parameters (reverse) should work + # but one with parameters (remove) shouldn't be detected. + assert_template_result('here', "{{ 'hi there' | split:\"t\"\" | reverse | first}}") + assert_template_result('hi ', "{{ 'hi there' | split:\"t\"\" | remove:\"i\" | first}}") + end + end + + def test_invalid_variables_work + with_error_mode(:lax) do + assert_template_result('bar', "{% assign 123foo = 'bar' %}{{ 123foo }}") + assert_template_result('123', "{% assign 123 = 'bar' %}{{ 123 }}") + end + end + + def test_extra_dots_in_ranges + with_error_mode(:lax) do + assert_template_result('12345', "{% for i in (1...5) %}{{ i }}{% endfor %}") + end + end + + def test_contains_in_id + assert_template_result(' YES ', '{% if containsallshipments == true %} YES {% endif %}', 'containsallshipments' => true) + end +end # ParsingQuirksTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/render_profiling_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/render_profiling_test.rb new file mode 100644 index 0000000000..d0111e77dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/render_profiling_test.rb @@ -0,0 +1,154 @@ +require 'test_helper' + +class RenderProfilingTest < Minitest::Test + include Liquid + + class ProfilingFileSystem + def read_template_file(template_path) + "Rendering template {% assign template_name = '#{template_path}'%}\n{{ template_name }}" + end + end + + def setup + Liquid::Template.file_system = ProfilingFileSystem.new + end + + def test_template_allows_flagging_profiling + t = Template.parse("{{ 'a string' | upcase }}") + t.render! + + assert_nil t.profiler + end + + def test_parse_makes_available_simple_profiling + t = Template.parse("{{ 'a string' | upcase }}", profile: true) + t.render! + + assert_equal 1, t.profiler.length + + node = t.profiler[0] + assert_equal " 'a string' | upcase ", node.code + end + + def test_render_ignores_raw_strings_when_profiling + t = Template.parse("This is raw string\nstuff\nNewline", profile: true) + t.render! + + assert_equal 0, t.profiler.length + end + + def test_profiling_includes_line_numbers_of_liquid_nodes + t = Template.parse("{{ 'a string' | upcase }}\n{% increment test %}", profile: true) + t.render! + assert_equal 2, t.profiler.length + + # {{ 'a string' | upcase }} + assert_equal 1, t.profiler[0].line_number + # {{ increment test }} + assert_equal 2, t.profiler[1].line_number + end + + def test_profiling_includes_line_numbers_of_included_partials + t = Template.parse("{% include 'a_template' %}", profile: true) + t.render! + + included_children = t.profiler[0].children + + # {% assign template_name = 'a_template' %} + assert_equal 1, included_children[0].line_number + # {{ template_name }} + assert_equal 2, included_children[1].line_number + end + + def test_profiling_times_the_rendering_of_tokens + t = Template.parse("{% include 'a_template' %}", profile: true) + t.render! + + node = t.profiler[0] + refute_nil node.render_time + end + + def test_profiling_times_the_entire_render + t = Template.parse("{% include 'a_template' %}", profile: true) + t.render! + + assert t.profiler.total_render_time >= 0, "Total render time was not calculated" + end + + def test_profiling_uses_include_to_mark_children + t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}", profile: true) + t.render! + + include_node = t.profiler[1] + assert_equal 2, include_node.children.length + end + + def test_profiling_marks_children_with_the_name_of_included_partial + t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}", profile: true) + t.render! + + include_node = t.profiler[1] + include_node.children.each do |child| + assert_equal "a_template", child.partial + end + end + + def test_profiling_supports_multiple_templates + t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}\n{% include 'b_template' %}", profile: true) + t.render! + + a_template = t.profiler[1] + a_template.children.each do |child| + assert_equal "a_template", child.partial + end + + b_template = t.profiler[2] + b_template.children.each do |child| + assert_equal "b_template", child.partial + end + end + + def test_profiling_supports_rendering_the_same_partial_multiple_times + t = Template.parse("{{ 'a string' | upcase }}\n{% include 'a_template' %}\n{% include 'a_template' %}", profile: true) + t.render! + + a_template1 = t.profiler[1] + a_template1.children.each do |child| + assert_equal "a_template", child.partial + end + + a_template2 = t.profiler[2] + a_template2.children.each do |child| + assert_equal "a_template", child.partial + end + end + + def test_can_iterate_over_each_profiling_entry + t = Template.parse("{{ 'a string' | upcase }}\n{% increment test %}", profile: true) + t.render! + + timing_count = 0 + t.profiler.each do |timing| + timing_count += 1 + end + + assert_equal 2, timing_count + end + + def test_profiling_marks_children_of_if_blocks + t = Template.parse("{% if true %} {% increment test %} {{ test }} {% endif %}", profile: true) + t.render! + + assert_equal 1, t.profiler.length + assert_equal 2, t.profiler[0].children.length + end + + def test_profiling_marks_children_of_for_blocks + t = Template.parse("{% for item in collection %} {{ item }} {% endfor %}", profile: true) + t.render!({ "collection" => ["one", "two"] }) + + assert_equal 1, t.profiler.length + # Will profile each invocation of the for block + assert_equal 2, t.profiler[0].children.length + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/security_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/security_test.rb new file mode 100644 index 0000000000..f603ff082f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/security_test.rb @@ -0,0 +1,80 @@ +require 'test_helper' + +module SecurityFilter + def add_one(input) + "#{input} + 1" + end +end + +class SecurityTest < Minitest::Test + include Liquid + + def setup + @assigns = {} + end + + def test_no_instance_eval + text = %( {{ '1+1' | instance_eval }} ) + expected = %( 1+1 ) + + assert_equal expected, Template.parse(text).render!(@assigns) + end + + def test_no_existing_instance_eval + text = %( {{ '1+1' | __instance_eval__ }} ) + expected = %( 1+1 ) + + assert_equal expected, Template.parse(text).render!(@assigns) + end + + def test_no_instance_eval_after_mixing_in_new_filter + text = %( {{ '1+1' | instance_eval }} ) + expected = %( 1+1 ) + + assert_equal expected, Template.parse(text).render!(@assigns) + end + + def test_no_instance_eval_later_in_chain + text = %( {{ '1+1' | add_one | instance_eval }} ) + expected = %( 1+1 + 1 ) + + assert_equal expected, Template.parse(text).render!(@assigns, filters: SecurityFilter) + end + + def test_does_not_add_filters_to_symbol_table + current_symbols = Symbol.all_symbols + + test = %( {{ "some_string" | a_bad_filter }} ) + + template = Template.parse(test) + assert_equal [], (Symbol.all_symbols - current_symbols) + + template.render! + assert_equal [], (Symbol.all_symbols - current_symbols) + end + + def test_does_not_add_drop_methods_to_symbol_table + current_symbols = Symbol.all_symbols + + assigns = { 'drop' => Drop.new } + assert_equal "", Template.parse("{{ drop.custom_method_1 }}", assigns).render! + assert_equal "", Template.parse("{{ drop.custom_method_2 }}", assigns).render! + assert_equal "", Template.parse("{{ drop.custom_method_3 }}", assigns).render! + + assert_equal [], (Symbol.all_symbols - current_symbols) + end + + def test_max_depth_nested_blocks_does_not_raise_exception + depth = Liquid::Block::MAX_DEPTH + code = "{% if true %}" * depth + "rendered" + "{% endif %}" * depth + assert_equal "rendered", Template.parse(code).render! + end + + def test_more_than_max_depth_nested_blocks_raises_exception + depth = Liquid::Block::MAX_DEPTH + 1 + code = "{% if true %}" * depth + "rendered" + "{% endif %}" * depth + assert_raises(Liquid::StackLevelError) do + Template.parse(code).render! + end + end +end # SecurityTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/standard_filter_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/standard_filter_test.rb new file mode 100644 index 0000000000..bb72862a1b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/standard_filter_test.rb @@ -0,0 +1,626 @@ +# encoding: utf-8 + +require 'test_helper' + +class Filters + include Liquid::StandardFilters +end + +class TestThing + attr_reader :foo + + def initialize + @foo = 0 + end + + def to_s + "woot: #{@foo}" + end + + def [](whatever) + to_s + end + + def to_liquid + @foo += 1 + self + end +end + +class TestDrop < Liquid::Drop + def test + "testfoo" + end +end + +class TestEnumerable < Liquid::Drop + include Enumerable + + def each(&block) + [ { "foo" => 1, "bar" => 2 }, { "foo" => 2, "bar" => 1 }, { "foo" => 3, "bar" => 3 } ].each(&block) + end +end + +class NumberLikeThing < Liquid::Drop + def initialize(amount) + @amount = amount + end + + def to_number + @amount + end +end + +class StandardFiltersTest < Minitest::Test + include Liquid + + def setup + @filters = Filters.new + end + + def test_size + assert_equal 3, @filters.size([1, 2, 3]) + assert_equal 0, @filters.size([]) + assert_equal 0, @filters.size(nil) + end + + def test_downcase + assert_equal 'testing', @filters.downcase("Testing") + assert_equal '', @filters.downcase(nil) + end + + def test_upcase + assert_equal 'TESTING', @filters.upcase("Testing") + assert_equal '', @filters.upcase(nil) + end + + def test_slice + assert_equal 'oob', @filters.slice('foobar', 1, 3) + assert_equal 'oobar', @filters.slice('foobar', 1, 1000) + assert_equal '', @filters.slice('foobar', 1, 0) + assert_equal 'o', @filters.slice('foobar', 1, 1) + assert_equal 'bar', @filters.slice('foobar', 3, 3) + assert_equal 'ar', @filters.slice('foobar', -2, 2) + assert_equal 'ar', @filters.slice('foobar', -2, 1000) + assert_equal 'r', @filters.slice('foobar', -1) + assert_equal '', @filters.slice(nil, 0) + assert_equal '', @filters.slice('foobar', 100, 10) + assert_equal '', @filters.slice('foobar', -100, 10) + assert_equal 'oob', @filters.slice('foobar', '1', '3') + assert_raises(Liquid::ArgumentError) do + @filters.slice('foobar', nil) + end + assert_raises(Liquid::ArgumentError) do + @filters.slice('foobar', 0, "") + end + end + + def test_slice_on_arrays + input = 'foobar'.split(//) + assert_equal %w(o o b), @filters.slice(input, 1, 3) + assert_equal %w(o o b a r), @filters.slice(input, 1, 1000) + assert_equal %w(), @filters.slice(input, 1, 0) + assert_equal %w(o), @filters.slice(input, 1, 1) + assert_equal %w(b a r), @filters.slice(input, 3, 3) + assert_equal %w(a r), @filters.slice(input, -2, 2) + assert_equal %w(a r), @filters.slice(input, -2, 1000) + assert_equal %w(r), @filters.slice(input, -1) + assert_equal %w(), @filters.slice(input, 100, 10) + assert_equal %w(), @filters.slice(input, -100, 10) + end + + def test_truncate + assert_equal '1234...', @filters.truncate('1234567890', 7) + assert_equal '1234567890', @filters.truncate('1234567890', 20) + assert_equal '...', @filters.truncate('1234567890', 0) + assert_equal '1234567890', @filters.truncate('1234567890') + assert_equal "测试...", @filters.truncate("测试测试测试测试", 5) + assert_equal '12341', @filters.truncate("1234567890", 5, 1) + end + + def test_split + assert_equal ['12', '34'], @filters.split('12~34', '~') + assert_equal ['A? ', ' ,Z'], @filters.split('A? ~ ~ ~ ,Z', '~ ~ ~') + assert_equal ['A?Z'], @filters.split('A?Z', '~') + assert_equal [], @filters.split(nil, ' ') + assert_equal ['A', 'Z'], @filters.split('A1Z', 1) + end + + def test_escape + assert_equal '<strong>', @filters.escape('') + assert_equal '1', @filters.escape(1) + assert_equal '2001-02-03', @filters.escape(Date.new(2001, 2, 3)) + assert_nil @filters.escape(nil) + end + + def test_h + assert_equal '<strong>', @filters.h('') + assert_equal '1', @filters.h(1) + assert_equal '2001-02-03', @filters.h(Date.new(2001, 2, 3)) + assert_nil @filters.h(nil) + end + + def test_escape_once + assert_equal '<strong>Hulk</strong>', @filters.escape_once('<strong>Hulk') + end + + def test_url_encode + assert_equal 'foo%2B1%40example.com', @filters.url_encode('foo+1@example.com') + assert_equal '1', @filters.url_encode(1) + assert_equal '2001-02-03', @filters.url_encode(Date.new(2001, 2, 3)) + assert_nil @filters.url_encode(nil) + end + + def test_url_decode + assert_equal 'foo bar', @filters.url_decode('foo+bar') + assert_equal 'foo bar', @filters.url_decode('foo%20bar') + assert_equal 'foo+1@example.com', @filters.url_decode('foo%2B1%40example.com') + assert_equal '1', @filters.url_decode(1) + assert_equal '2001-02-03', @filters.url_decode(Date.new(2001, 2, 3)) + assert_nil @filters.url_decode(nil) + end + + def test_truncatewords + assert_equal 'one two three', @filters.truncatewords('one two three', 4) + assert_equal 'one two...', @filters.truncatewords('one two three', 2) + assert_equal 'one two three', @filters.truncatewords('one two three') + assert_equal 'Two small (13” x 5.5” x 10” high) baskets fit inside one large basket (13”...', @filters.truncatewords('Two small (13” x 5.5” x 10” high) baskets fit inside one large basket (13” x 16” x 10.5” high) with cover.', 15) + assert_equal "测试测试测试测试", @filters.truncatewords('测试测试测试测试', 5) + assert_equal 'one two1', @filters.truncatewords("one two three", 2, 1) + end + + def test_strip_html + assert_equal 'test', @filters.strip_html("
                test
                ") + assert_equal 'test', @filters.strip_html("
                test
                ") + assert_equal '', @filters.strip_html("") + assert_equal '', @filters.strip_html("") + assert_equal 'test', @filters.strip_html("test
                ") + assert_equal 'test', @filters.strip_html("test") + assert_equal '', @filters.strip_html(nil) + end + + def test_join + assert_equal '1 2 3 4', @filters.join([1, 2, 3, 4]) + assert_equal '1 - 2 - 3 - 4', @filters.join([1, 2, 3, 4], ' - ') + assert_equal '1121314', @filters.join([1, 2, 3, 4], 1) + end + + def test_sort + assert_equal [1, 2, 3, 4], @filters.sort([4, 3, 2, 1]) + assert_equal [{ "a" => 1 }, { "a" => 2 }, { "a" => 3 }, { "a" => 4 }], @filters.sort([{ "a" => 4 }, { "a" => 3 }, { "a" => 1 }, { "a" => 2 }], "a") + end + + def test_sort_with_nils + assert_equal [1, 2, 3, 4, nil], @filters.sort([nil, 4, 3, 2, 1]) + assert_equal [{ "a" => 1 }, { "a" => 2 }, { "a" => 3 }, { "a" => 4 }, {}], @filters.sort([{ "a" => 4 }, { "a" => 3 }, {}, { "a" => 1 }, { "a" => 2 }], "a") + end + + def test_sort_when_property_is_sometimes_missing_puts_nils_last + input = [ + { "price" => 4, "handle" => "alpha" }, + { "handle" => "beta" }, + { "price" => 1, "handle" => "gamma" }, + { "handle" => "delta" }, + { "price" => 2, "handle" => "epsilon" } + ] + expectation = [ + { "price" => 1, "handle" => "gamma" }, + { "price" => 2, "handle" => "epsilon" }, + { "price" => 4, "handle" => "alpha" }, + { "handle" => "delta" }, + { "handle" => "beta" } + ] + assert_equal expectation, @filters.sort(input, "price") + end + + def test_sort_natural + assert_equal ["a", "B", "c", "D"], @filters.sort_natural(["c", "D", "a", "B"]) + assert_equal [{ "a" => "a" }, { "a" => "B" }, { "a" => "c" }, { "a" => "D" }], @filters.sort_natural([{ "a" => "D" }, { "a" => "c" }, { "a" => "a" }, { "a" => "B" }], "a") + end + + def test_sort_natural_with_nils + assert_equal ["a", "B", "c", "D", nil], @filters.sort_natural([nil, "c", "D", "a", "B"]) + assert_equal [{ "a" => "a" }, { "a" => "B" }, { "a" => "c" }, { "a" => "D" }, {}], @filters.sort_natural([{ "a" => "D" }, { "a" => "c" }, {}, { "a" => "a" }, { "a" => "B" }], "a") + end + + def test_sort_natural_when_property_is_sometimes_missing_puts_nils_last + input = [ + { "price" => "4", "handle" => "alpha" }, + { "handle" => "beta" }, + { "price" => "1", "handle" => "gamma" }, + { "handle" => "delta" }, + { "price" => 2, "handle" => "epsilon" } + ] + expectation = [ + { "price" => "1", "handle" => "gamma" }, + { "price" => 2, "handle" => "epsilon" }, + { "price" => "4", "handle" => "alpha" }, + { "handle" => "delta" }, + { "handle" => "beta" } + ] + assert_equal expectation, @filters.sort_natural(input, "price") + end + + def test_sort_natural_case_check + input = [ + { "key" => "X" }, + { "key" => "Y" }, + { "key" => "Z" }, + { "fake" => "t" }, + { "key" => "a" }, + { "key" => "b" }, + { "key" => "c" } + ] + expectation = [ + { "key" => "a" }, + { "key" => "b" }, + { "key" => "c" }, + { "key" => "X" }, + { "key" => "Y" }, + { "key" => "Z" }, + { "fake" => "t" } + ] + assert_equal expectation, @filters.sort_natural(input, "key") + assert_equal ["a", "b", "c", "X", "Y", "Z"], @filters.sort_natural(["X", "Y", "Z", "a", "b", "c"]) + end + + def test_sort_empty_array + assert_equal [], @filters.sort([], "a") + end + + def test_sort_natural_empty_array + assert_equal [], @filters.sort_natural([], "a") + end + + def test_legacy_sort_hash + assert_equal [{ a: 1, b: 2 }], @filters.sort({ a: 1, b: 2 }) + end + + def test_numerical_vs_lexicographical_sort + assert_equal [2, 10], @filters.sort([10, 2]) + assert_equal [{ "a" => 2 }, { "a" => 10 }], @filters.sort([{ "a" => 10 }, { "a" => 2 }], "a") + assert_equal ["10", "2"], @filters.sort(["10", "2"]) + assert_equal [{ "a" => "10" }, { "a" => "2" }], @filters.sort([{ "a" => "10" }, { "a" => "2" }], "a") + end + + def test_uniq + assert_equal ["foo"], @filters.uniq("foo") + assert_equal [1, 3, 2, 4], @filters.uniq([1, 1, 3, 2, 3, 1, 4, 3, 2, 1]) + assert_equal [{ "a" => 1 }, { "a" => 3 }, { "a" => 2 }], @filters.uniq([{ "a" => 1 }, { "a" => 3 }, { "a" => 1 }, { "a" => 2 }], "a") + testdrop = TestDrop.new + assert_equal [testdrop], @filters.uniq([testdrop, TestDrop.new], 'test') + end + + def test_uniq_empty_array + assert_equal [], @filters.uniq([], "a") + end + + def test_compact_empty_array + assert_equal [], @filters.compact([], "a") + end + + def test_reverse + assert_equal [4, 3, 2, 1], @filters.reverse([1, 2, 3, 4]) + end + + def test_legacy_reverse_hash + assert_equal [{ a: 1, b: 2 }], @filters.reverse(a: 1, b: 2) + end + + def test_map + assert_equal [1, 2, 3, 4], @filters.map([{ "a" => 1 }, { "a" => 2 }, { "a" => 3 }, { "a" => 4 }], 'a') + assert_template_result 'abc', "{{ ary | map:'foo' | map:'bar' }}", + 'ary' => [{ 'foo' => { 'bar' => 'a' } }, { 'foo' => { 'bar' => 'b' } }, { 'foo' => { 'bar' => 'c' } }] + end + + def test_map_doesnt_call_arbitrary_stuff + assert_template_result "", '{{ "foo" | map: "__id__" }}' + assert_template_result "", '{{ "foo" | map: "inspect" }}' + end + + def test_map_calls_to_liquid + t = TestThing.new + assert_template_result "woot: 1", '{{ foo | map: "whatever" }}', "foo" => [t] + end + + def test_map_on_hashes + assert_template_result "4217", '{{ thing | map: "foo" | map: "bar" }}', + "thing" => { "foo" => [ { "bar" => 42 }, { "bar" => 17 } ] } + end + + def test_legacy_map_on_hashes_with_dynamic_key + template = "{% assign key = 'foo' %}{{ thing | map: key | map: 'bar' }}" + hash = { "foo" => { "bar" => 42 } } + assert_template_result "42", template, "thing" => hash + end + + def test_sort_calls_to_liquid + t = TestThing.new + Liquid::Template.parse('{{ foo | sort: "whatever" }}').render("foo" => [t]) + assert t.foo > 0 + end + + def test_map_over_proc + drop = TestDrop.new + p = proc{ drop } + templ = '{{ procs | map: "test" }}' + assert_template_result "testfoo", templ, "procs" => [p] + end + + def test_map_over_drops_returning_procs + drops = [ + { + "proc" => ->{ "foo" }, + }, + { + "proc" => ->{ "bar" }, + }, + ] + templ = '{{ drops | map: "proc" }}' + assert_template_result "foobar", templ, "drops" => drops + end + + def test_map_works_on_enumerables + assert_template_result "123", '{{ foo | map: "foo" }}', "foo" => TestEnumerable.new + end + + def test_sort_works_on_enumerables + assert_template_result "213", '{{ foo | sort: "bar" | map: "foo" }}', "foo" => TestEnumerable.new + end + + def test_first_and_last_call_to_liquid + assert_template_result 'foobar', '{{ foo | first }}', 'foo' => [ThingWithToLiquid.new] + assert_template_result 'foobar', '{{ foo | last }}', 'foo' => [ThingWithToLiquid.new] + end + + def test_truncate_calls_to_liquid + assert_template_result "wo...", '{{ foo | truncate: 5 }}', "foo" => TestThing.new + end + + def test_date + assert_equal 'May', @filters.date(Time.parse("2006-05-05 10:00:00"), "%B") + assert_equal 'June', @filters.date(Time.parse("2006-06-05 10:00:00"), "%B") + assert_equal 'July', @filters.date(Time.parse("2006-07-05 10:00:00"), "%B") + + assert_equal 'May', @filters.date("2006-05-05 10:00:00", "%B") + assert_equal 'June', @filters.date("2006-06-05 10:00:00", "%B") + assert_equal 'July', @filters.date("2006-07-05 10:00:00", "%B") + + assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "") + assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "") + assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", "") + assert_equal '2006-07-05 10:00:00', @filters.date("2006-07-05 10:00:00", nil) + + assert_equal '07/05/2006', @filters.date("2006-07-05 10:00:00", "%m/%d/%Y") + + assert_equal "07/16/2004", @filters.date("Fri Jul 16 01:00:00 2004", "%m/%d/%Y") + assert_equal "#{Date.today.year}", @filters.date('now', '%Y') + assert_equal "#{Date.today.year}", @filters.date('today', '%Y') + assert_equal "#{Date.today.year}", @filters.date('Today', '%Y') + + assert_nil @filters.date(nil, "%B") + + assert_equal '', @filters.date('', "%B") + + with_timezone("UTC") do + assert_equal "07/05/2006", @filters.date(1152098955, "%m/%d/%Y") + assert_equal "07/05/2006", @filters.date("1152098955", "%m/%d/%Y") + end + end + + def test_first_last + assert_equal 1, @filters.first([1, 2, 3]) + assert_equal 3, @filters.last([1, 2, 3]) + assert_nil @filters.first([]) + assert_nil @filters.last([]) + end + + def test_replace + assert_equal '2 2 2 2', @filters.replace('1 1 1 1', '1', 2) + assert_equal '2 2 2 2', @filters.replace('1 1 1 1', 1, 2) + assert_equal '2 1 1 1', @filters.replace_first('1 1 1 1', '1', 2) + assert_equal '2 1 1 1', @filters.replace_first('1 1 1 1', 1, 2) + assert_template_result '2 1 1 1', "{{ '1 1 1 1' | replace_first: '1', 2 }}" + end + + def test_remove + assert_equal ' ', @filters.remove("a a a a", 'a') + assert_equal ' ', @filters.remove("1 1 1 1", 1) + assert_equal 'a a a', @filters.remove_first("a a a a", 'a ') + assert_equal ' 1 1 1', @filters.remove_first("1 1 1 1", 1) + assert_template_result 'a a a', "{{ 'a a a a' | remove_first: 'a ' }}" + end + + def test_pipes_in_string_arguments + assert_template_result 'foobar', "{{ 'foo|bar' | remove: '|' }}" + end + + def test_strip + assert_template_result 'ab c', "{{ source | strip }}", 'source' => " ab c " + assert_template_result 'ab c', "{{ source | strip }}", 'source' => " \tab c \n \t" + end + + def test_lstrip + assert_template_result 'ab c ', "{{ source | lstrip }}", 'source' => " ab c " + assert_template_result "ab c \n \t", "{{ source | lstrip }}", 'source' => " \tab c \n \t" + end + + def test_rstrip + assert_template_result " ab c", "{{ source | rstrip }}", 'source' => " ab c " + assert_template_result " \tab c", "{{ source | rstrip }}", 'source' => " \tab c \n \t" + end + + def test_strip_newlines + assert_template_result 'abc', "{{ source | strip_newlines }}", 'source' => "a\nb\nc" + assert_template_result 'abc', "{{ source | strip_newlines }}", 'source' => "a\r\nb\nc" + end + + def test_newlines_to_br + assert_template_result "a
                \nb
                \nc", "{{ source | newline_to_br }}", 'source' => "a\nb\nc" + end + + def test_plus + assert_template_result "2", "{{ 1 | plus:1 }}" + assert_template_result "2.0", "{{ '1' | plus:'1.0' }}" + + assert_template_result "5", "{{ price | plus:'2' }}", 'price' => NumberLikeThing.new(3) + end + + def test_minus + assert_template_result "4", "{{ input | minus:operand }}", 'input' => 5, 'operand' => 1 + assert_template_result "2.3", "{{ '4.3' | minus:'2' }}" + + assert_template_result "5", "{{ price | minus:'2' }}", 'price' => NumberLikeThing.new(7) + end + + def test_abs + assert_template_result "17", "{{ 17 | abs }}" + assert_template_result "17", "{{ -17 | abs }}" + assert_template_result "17", "{{ '17' | abs }}" + assert_template_result "17", "{{ '-17' | abs }}" + assert_template_result "0", "{{ 0 | abs }}" + assert_template_result "0", "{{ '0' | abs }}" + assert_template_result "17.42", "{{ 17.42 | abs }}" + assert_template_result "17.42", "{{ -17.42 | abs }}" + assert_template_result "17.42", "{{ '17.42' | abs }}" + assert_template_result "17.42", "{{ '-17.42' | abs }}" + end + + def test_times + assert_template_result "12", "{{ 3 | times:4 }}" + assert_template_result "0", "{{ 'foo' | times:4 }}" + assert_template_result "6", "{{ '2.1' | times:3 | replace: '.','-' | plus:0}}" + assert_template_result "7.25", "{{ 0.0725 | times:100 }}" + assert_template_result "-7.25", '{{ "-0.0725" | times:100 }}' + assert_template_result "7.25", '{{ "-0.0725" | times: -100 }}' + assert_template_result "4", "{{ price | times:2 }}", 'price' => NumberLikeThing.new(2) + end + + def test_divided_by + assert_template_result "4", "{{ 12 | divided_by:3 }}" + assert_template_result "4", "{{ 14 | divided_by:3 }}" + + assert_template_result "5", "{{ 15 | divided_by:3 }}" + assert_equal "Liquid error: divided by 0", Template.parse("{{ 5 | divided_by:0 }}").render + + assert_template_result "0.5", "{{ 2.0 | divided_by:4 }}" + assert_raises(Liquid::ZeroDivisionError) do + assert_template_result "4", "{{ 1 | modulo: 0 }}" + end + + assert_template_result "5", "{{ price | divided_by:2 }}", 'price' => NumberLikeThing.new(10) + end + + def test_modulo + assert_template_result "1", "{{ 3 | modulo:2 }}" + assert_raises(Liquid::ZeroDivisionError) do + assert_template_result "4", "{{ 1 | modulo: 0 }}" + end + + assert_template_result "1", "{{ price | modulo:2 }}", 'price' => NumberLikeThing.new(3) + end + + def test_round + assert_template_result "5", "{{ input | round }}", 'input' => 4.6 + assert_template_result "4", "{{ '4.3' | round }}" + assert_template_result "4.56", "{{ input | round: 2 }}", 'input' => 4.5612 + assert_raises(Liquid::FloatDomainError) do + assert_template_result "4", "{{ 1.0 | divided_by: 0.0 | round }}" + end + + assert_template_result "5", "{{ price | round }}", 'price' => NumberLikeThing.new(4.6) + assert_template_result "4", "{{ price | round }}", 'price' => NumberLikeThing.new(4.3) + end + + def test_ceil + assert_template_result "5", "{{ input | ceil }}", 'input' => 4.6 + assert_template_result "5", "{{ '4.3' | ceil }}" + assert_raises(Liquid::FloatDomainError) do + assert_template_result "4", "{{ 1.0 | divided_by: 0.0 | ceil }}" + end + + assert_template_result "5", "{{ price | ceil }}", 'price' => NumberLikeThing.new(4.6) + end + + def test_floor + assert_template_result "4", "{{ input | floor }}", 'input' => 4.6 + assert_template_result "4", "{{ '4.3' | floor }}" + assert_raises(Liquid::FloatDomainError) do + assert_template_result "4", "{{ 1.0 | divided_by: 0.0 | floor }}" + end + + assert_template_result "5", "{{ price | floor }}", 'price' => NumberLikeThing.new(5.4) + end + + def test_at_most + assert_template_result "4", "{{ 5 | at_most:4 }}" + assert_template_result "5", "{{ 5 | at_most:5 }}" + assert_template_result "5", "{{ 5 | at_most:6 }}" + + assert_template_result "4.5", "{{ 4.5 | at_most:5 }}" + assert_template_result "5", "{{ width | at_most:5 }}", 'width' => NumberLikeThing.new(6) + assert_template_result "4", "{{ width | at_most:5 }}", 'width' => NumberLikeThing.new(4) + assert_template_result "4", "{{ 5 | at_most: width }}", 'width' => NumberLikeThing.new(4) + end + + def test_at_least + assert_template_result "5", "{{ 5 | at_least:4 }}" + assert_template_result "5", "{{ 5 | at_least:5 }}" + assert_template_result "6", "{{ 5 | at_least:6 }}" + + assert_template_result "5", "{{ 4.5 | at_least:5 }}" + assert_template_result "6", "{{ width | at_least:5 }}", 'width' => NumberLikeThing.new(6) + assert_template_result "5", "{{ width | at_least:5 }}", 'width' => NumberLikeThing.new(4) + assert_template_result "6", "{{ 5 | at_least: width }}", 'width' => NumberLikeThing.new(6) + end + + def test_append + assigns = { 'a' => 'bc', 'b' => 'd' } + assert_template_result('bcd', "{{ a | append: 'd'}}", assigns) + assert_template_result('bcd', "{{ a | append: b}}", assigns) + end + + def test_concat + assert_equal [1, 2, 3, 4], @filters.concat([1, 2], [3, 4]) + assert_equal [1, 2, 'a'], @filters.concat([1, 2], ['a']) + assert_equal [1, 2, 10], @filters.concat([1, 2], [10]) + + assert_raises(Liquid::ArgumentError, "concat filter requires an array argument") do + @filters.concat([1, 2], 10) + end + end + + def test_prepend + assigns = { 'a' => 'bc', 'b' => 'a' } + assert_template_result('abc', "{{ a | prepend: 'a'}}", assigns) + assert_template_result('abc', "{{ a | prepend: b}}", assigns) + end + + def test_default + assert_equal "foo", @filters.default("foo", "bar") + assert_equal "bar", @filters.default(nil, "bar") + assert_equal "bar", @filters.default("", "bar") + assert_equal "bar", @filters.default(false, "bar") + assert_equal "bar", @filters.default([], "bar") + assert_equal "bar", @filters.default({}, "bar") + end + + def test_cannot_access_private_methods + assert_template_result('a', "{{ 'a' | to_number }}") + end + + def test_date_raises_nothing + assert_template_result('', "{{ '' | date: '%D' }}") + assert_template_result('abc', "{{ 'abc' | date: '%D' }}") + end + + private + + def with_timezone(tz) + old_tz = ENV['TZ'] + ENV['TZ'] = tz + yield + ensure + ENV['TZ'] = old_tz + end +end # StandardFiltersTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/break_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/break_tag_test.rb new file mode 100644 index 0000000000..0fbde83762 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/break_tag_test.rb @@ -0,0 +1,15 @@ +require 'test_helper' + +class BreakTagTest < Minitest::Test + include Liquid + + # tests that no weird errors are raised if break is called outside of a + # block + def test_break_with_no_block + assigns = { 'i' => 1 } + markup = '{% break %}' + expected = '' + + assert_template_result(expected, markup, assigns) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/continue_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/continue_tag_test.rb new file mode 100644 index 0000000000..ce4c158b00 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/continue_tag_test.rb @@ -0,0 +1,15 @@ +require 'test_helper' + +class ContinueTagTest < Minitest::Test + include Liquid + + # tests that no weird errors are raised if continue is called outside of a + # block + def test_continue_with_no_block + assigns = {} + markup = '{% continue %}' + expected = '' + + assert_template_result(expected, markup, assigns) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/for_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/for_tag_test.rb new file mode 100644 index 0000000000..cb7a822d60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/for_tag_test.rb @@ -0,0 +1,410 @@ +require 'test_helper' + +class ThingWithValue < Liquid::Drop + def value + 3 + end +end + +class ForTagTest < Minitest::Test + include Liquid + + def test_for + assert_template_result(' yo yo yo yo ', '{%for item in array%} yo {%endfor%}', 'array' => [1, 2, 3, 4]) + assert_template_result('yoyo', '{%for item in array%}yo{%endfor%}', 'array' => [1, 2]) + assert_template_result(' yo ', '{%for item in array%} yo {%endfor%}', 'array' => [1]) + assert_template_result('', '{%for item in array%}{%endfor%}', 'array' => [1, 2]) + expected = < [1, 2, 3]) + end + + def test_for_reversed + assigns = { 'array' => [ 1, 2, 3] } + assert_template_result('321', '{%for item in array reversed %}{{item}}{%endfor%}', assigns) + end + + def test_for_with_range + assert_template_result(' 1 2 3 ', '{%for item in (1..3) %} {{item}} {%endfor%}') + + assert_raises(Liquid::ArgumentError) do + Template.parse('{% for i in (a..2) %}{% endfor %}').render!("a" => [1, 2]) + end + + assert_template_result(' 0 1 2 3 ', '{% for item in (a..3) %} {{item}} {% endfor %}', "a" => "invalid integer") + end + + def test_for_with_variable_range + assert_template_result(' 1 2 3 ', '{%for item in (1..foobar) %} {{item}} {%endfor%}', "foobar" => 3) + end + + def test_for_with_hash_value_range + foobar = { "value" => 3 } + assert_template_result(' 1 2 3 ', '{%for item in (1..foobar.value) %} {{item}} {%endfor%}', "foobar" => foobar) + end + + def test_for_with_drop_value_range + foobar = ThingWithValue.new + assert_template_result(' 1 2 3 ', '{%for item in (1..foobar.value) %} {{item}} {%endfor%}', "foobar" => foobar) + end + + def test_for_with_variable + assert_template_result(' 1 2 3 ', '{%for item in array%} {{item}} {%endfor%}', 'array' => [1, 2, 3]) + assert_template_result('123', '{%for item in array%}{{item}}{%endfor%}', 'array' => [1, 2, 3]) + assert_template_result('123', '{% for item in array %}{{item}}{% endfor %}', 'array' => [1, 2, 3]) + assert_template_result('abcd', '{%for item in array%}{{item}}{%endfor%}', 'array' => ['a', 'b', 'c', 'd']) + assert_template_result('a b c', '{%for item in array%}{{item}}{%endfor%}', 'array' => ['a', ' ', 'b', ' ', 'c']) + assert_template_result('abc', '{%for item in array%}{{item}}{%endfor%}', 'array' => ['a', '', 'b', '', 'c']) + end + + def test_for_helpers + assigns = { 'array' => [1, 2, 3] } + assert_template_result(' 1/3 2/3 3/3 ', + '{%for item in array%} {{forloop.index}}/{{forloop.length}} {%endfor%}', + assigns) + assert_template_result(' 1 2 3 ', '{%for item in array%} {{forloop.index}} {%endfor%}', assigns) + assert_template_result(' 0 1 2 ', '{%for item in array%} {{forloop.index0}} {%endfor%}', assigns) + assert_template_result(' 2 1 0 ', '{%for item in array%} {{forloop.rindex0}} {%endfor%}', assigns) + assert_template_result(' 3 2 1 ', '{%for item in array%} {{forloop.rindex}} {%endfor%}', assigns) + assert_template_result(' true false false ', '{%for item in array%} {{forloop.first}} {%endfor%}', assigns) + assert_template_result(' false false true ', '{%for item in array%} {{forloop.last}} {%endfor%}', assigns) + end + + def test_for_and_if + assigns = { 'array' => [1, 2, 3] } + assert_template_result('+--', + '{%for item in array%}{% if forloop.first %}+{% else %}-{% endif %}{%endfor%}', + assigns) + end + + def test_for_else + assert_template_result('+++', '{%for item in array%}+{%else%}-{%endfor%}', 'array' => [1, 2, 3]) + assert_template_result('-', '{%for item in array%}+{%else%}-{%endfor%}', 'array' => []) + assert_template_result('-', '{%for item in array%}+{%else%}-{%endfor%}', 'array' => nil) + end + + def test_limiting + assigns = { 'array' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } + assert_template_result('12', '{%for i in array limit:2 %}{{ i }}{%endfor%}', assigns) + assert_template_result('1234', '{%for i in array limit:4 %}{{ i }}{%endfor%}', assigns) + assert_template_result('3456', '{%for i in array limit:4 offset:2 %}{{ i }}{%endfor%}', assigns) + assert_template_result('3456', '{%for i in array limit: 4 offset: 2 %}{{ i }}{%endfor%}', assigns) + end + + def test_dynamic_variable_limiting + assigns = { 'array' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } + assigns['limit'] = 2 + assigns['offset'] = 2 + + assert_template_result('34', '{%for i in array limit: limit offset: offset %}{{ i }}{%endfor%}', assigns) + end + + def test_nested_for + assigns = { 'array' => [[1, 2], [3, 4], [5, 6]] } + assert_template_result('123456', '{%for item in array%}{%for i in item%}{{ i }}{%endfor%}{%endfor%}', assigns) + end + + def test_offset_only + assigns = { 'array' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } + assert_template_result('890', '{%for i in array offset:7 %}{{ i }}{%endfor%}', assigns) + end + + def test_pause_resume + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } } + markup = <<-MKUP + {%for i in array.items limit: 3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit: 3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit: 3 %}{{i}}{%endfor%} + MKUP + expected = <<-XPCTD + 123 + next + 456 + next + 789 + XPCTD + assert_template_result(expected, markup, assigns) + end + + def test_pause_resume_limit + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } } + markup = <<-MKUP + {%for i in array.items limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:1 %}{{i}}{%endfor%} + MKUP + expected = <<-XPCTD + 123 + next + 456 + next + 7 + XPCTD + assert_template_result(expected, markup, assigns) + end + + def test_pause_resume_big_limit + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } } + markup = <<-MKUP + {%for i in array.items limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:1000 %}{{i}}{%endfor%} + MKUP + expected = <<-XPCTD + 123 + next + 456 + next + 7890 + XPCTD + assert_template_result(expected, markup, assigns) + end + + def test_pause_resume_big_offset + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] } } + markup = '{%for i in array.items limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:3 %}{{i}}{%endfor%} + next + {%for i in array.items offset:continue limit:3 offset:1000 %}{{i}}{%endfor%}' + expected = '123 + next + 456 + next + ' + assert_template_result(expected, markup, assigns) + end + + def test_for_with_break + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } } + + markup = '{% for i in array.items %}{% break %}{% endfor %}' + expected = "" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{{ i }}{% break %}{% endfor %}' + expected = "1" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{% break %}{{ i }}{% endfor %}' + expected = "" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{{ i }}{% if i > 3 %}{% break %}{% endif %}{% endfor %}' + expected = "1234" + assert_template_result(expected, markup, assigns) + + # tests to ensure it only breaks out of the local for loop + # and not all of them. + assigns = { 'array' => [[1, 2], [3, 4], [5, 6]] } + markup = '{% for item in array %}' \ + '{% for i in item %}' \ + '{% if i == 1 %}' \ + '{% break %}' \ + '{% endif %}' \ + '{{ i }}' \ + '{% endfor %}' \ + '{% endfor %}' + expected = '3456' + assert_template_result(expected, markup, assigns) + + # test break does nothing when unreached + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5] } } + markup = '{% for i in array.items %}{% if i == 9999 %}{% break %}{% endif %}{{ i }}{% endfor %}' + expected = '12345' + assert_template_result(expected, markup, assigns) + end + + def test_for_with_continue + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5] } } + + markup = '{% for i in array.items %}{% continue %}{% endfor %}' + expected = "" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{{ i }}{% continue %}{% endfor %}' + expected = "12345" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{% continue %}{{ i }}{% endfor %}' + expected = "" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{% if i > 3 %}{% continue %}{% endif %}{{ i }}{% endfor %}' + expected = "123" + assert_template_result(expected, markup, assigns) + + markup = '{% for i in array.items %}{% if i == 3 %}{% continue %}{% else %}{{ i }}{% endif %}{% endfor %}' + expected = "1245" + assert_template_result(expected, markup, assigns) + + # tests to ensure it only continues the local for loop and not all of them. + assigns = { 'array' => [[1, 2], [3, 4], [5, 6]] } + markup = '{% for item in array %}' \ + '{% for i in item %}' \ + '{% if i == 1 %}' \ + '{% continue %}' \ + '{% endif %}' \ + '{{ i }}' \ + '{% endfor %}' \ + '{% endfor %}' + expected = '23456' + assert_template_result(expected, markup, assigns) + + # test continue does nothing when unreached + assigns = { 'array' => { 'items' => [1, 2, 3, 4, 5] } } + markup = '{% for i in array.items %}{% if i == 9999 %}{% continue %}{% endif %}{{ i }}{% endfor %}' + expected = '12345' + assert_template_result(expected, markup, assigns) + end + + def test_for_tag_string + # ruby 1.8.7 "String".each => Enumerator with single "String" element. + # ruby 1.9.3 no longer supports .each on String though we mimic + # the functionality for backwards compatibility + + assert_template_result('test string', + '{%for val in string%}{{val}}{%endfor%}', + 'string' => "test string") + + assert_template_result('test string', + '{%for val in string limit:1%}{{val}}{%endfor%}', + 'string' => "test string") + + assert_template_result('val-string-1-1-0-1-0-true-true-test string', + '{%for val in string%}' \ + '{{forloop.name}}-' \ + '{{forloop.index}}-' \ + '{{forloop.length}}-' \ + '{{forloop.index0}}-' \ + '{{forloop.rindex}}-' \ + '{{forloop.rindex0}}-' \ + '{{forloop.first}}-' \ + '{{forloop.last}}-' \ + '{{val}}{%endfor%}', + 'string' => "test string") + end + + def test_for_parentloop_references_parent_loop + assert_template_result('1.1 1.2 1.3 2.1 2.2 2.3 ', + '{% for inner in outer %}{% for k in inner %}' \ + '{{ forloop.parentloop.index }}.{{ forloop.index }} ' \ + '{% endfor %}{% endfor %}', + 'outer' => [[1, 1, 1], [1, 1, 1]]) + end + + def test_for_parentloop_nil_when_not_present + assert_template_result('.1 .2 ', + '{% for inner in outer %}' \ + '{{ forloop.parentloop.index }}.{{ forloop.index }} ' \ + '{% endfor %}', + 'outer' => [[1, 1, 1], [1, 1, 1]]) + end + + def test_inner_for_over_empty_input + assert_template_result 'oo', '{% for a in (1..2) %}o{% for b in empty %}{% endfor %}{% endfor %}' + end + + def test_blank_string_not_iterable + assert_template_result('', "{% for char in characters %}I WILL NOT BE OUTPUT{% endfor %}", 'characters' => '') + end + + def test_bad_variable_naming_in_for_loop + assert_raises(Liquid::SyntaxError) do + Liquid::Template.parse('{% for a/b in x %}{% endfor %}') + end + end + + def test_spacing_with_variable_naming_in_for_loop + expected = '12345' + template = '{% for item in items %}{{item}}{% endfor %}' + assigns = { 'items' => [1, 2, 3, 4, 5] } + assert_template_result(expected, template, assigns) + end + + class LoaderDrop < Liquid::Drop + attr_accessor :each_called, :load_slice_called + + def initialize(data) + @data = data + end + + def each + @each_called = true + @data.each { |el| yield el } + end + + def load_slice(from, to) + @load_slice_called = true + @data[(from..to - 1)] + end + end + + def test_iterate_with_each_when_no_limit_applied + loader = LoaderDrop.new([1, 2, 3, 4, 5]) + assigns = { 'items' => loader } + expected = '12345' + template = '{% for item in items %}{{item}}{% endfor %}' + assert_template_result(expected, template, assigns) + assert loader.each_called + assert !loader.load_slice_called + end + + def test_iterate_with_load_slice_when_limit_applied + loader = LoaderDrop.new([1, 2, 3, 4, 5]) + assigns = { 'items' => loader } + expected = '1' + template = '{% for item in items limit:1 %}{{item}}{% endfor %}' + assert_template_result(expected, template, assigns) + assert !loader.each_called + assert loader.load_slice_called + end + + def test_iterate_with_load_slice_when_limit_and_offset_applied + loader = LoaderDrop.new([1, 2, 3, 4, 5]) + assigns = { 'items' => loader } + expected = '34' + template = '{% for item in items offset:2 limit:2 %}{{item}}{% endfor %}' + assert_template_result(expected, template, assigns) + assert !loader.each_called + assert loader.load_slice_called + end + + def test_iterate_with_load_slice_returns_same_results_as_without + loader = LoaderDrop.new([1, 2, 3, 4, 5]) + loader_assigns = { 'items' => loader } + array_assigns = { 'items' => [1, 2, 3, 4, 5] } + expected = '34' + template = '{% for item in items offset:2 limit:2 %}{{item}}{% endfor %}' + assert_template_result(expected, template, loader_assigns) + assert_template_result(expected, template, array_assigns) + end + + def test_for_cleans_up_registers + context = Context.new(ErrorDrop.new) + + assert_raises(StandardError) do + Liquid::Template.parse('{% for i in (1..2) %}{{ standard_error }}{% endfor %}').render!(context) + end + + assert context.registers[:for_stack].empty? + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/if_else_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/if_else_tag_test.rb new file mode 100644 index 0000000000..45a5d3ac9d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/if_else_tag_test.rb @@ -0,0 +1,188 @@ +require 'test_helper' + +class IfElseTagTest < Minitest::Test + include Liquid + + def test_if + assert_template_result(' ', ' {% if false %} this text should not go into the output {% endif %} ') + assert_template_result(' this text should go into the output ', + ' {% if true %} this text should go into the output {% endif %} ') + assert_template_result(' you rock ?', '{% if false %} you suck {% endif %} {% if true %} you rock {% endif %}?') + end + + def test_literal_comparisons + assert_template_result(' NO ', '{% assign v = false %}{% if v %} YES {% else %} NO {% endif %}') + assert_template_result(' YES ', '{% assign v = nil %}{% if v == nil %} YES {% else %} NO {% endif %}') + end + + def test_if_else + assert_template_result(' YES ', '{% if false %} NO {% else %} YES {% endif %}') + assert_template_result(' YES ', '{% if true %} YES {% else %} NO {% endif %}') + assert_template_result(' YES ', '{% if "foo" %} YES {% else %} NO {% endif %}') + end + + def test_if_boolean + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => true) + end + + def test_if_or + assert_template_result(' YES ', '{% if a or b %} YES {% endif %}', 'a' => true, 'b' => true) + assert_template_result(' YES ', '{% if a or b %} YES {% endif %}', 'a' => true, 'b' => false) + assert_template_result(' YES ', '{% if a or b %} YES {% endif %}', 'a' => false, 'b' => true) + assert_template_result('', '{% if a or b %} YES {% endif %}', 'a' => false, 'b' => false) + + assert_template_result(' YES ', '{% if a or b or c %} YES {% endif %}', 'a' => false, 'b' => false, 'c' => true) + assert_template_result('', '{% if a or b or c %} YES {% endif %}', 'a' => false, 'b' => false, 'c' => false) + end + + def test_if_or_with_operators + assert_template_result(' YES ', '{% if a == true or b == true %} YES {% endif %}', 'a' => true, 'b' => true) + assert_template_result(' YES ', '{% if a == true or b == false %} YES {% endif %}', 'a' => true, 'b' => true) + assert_template_result('', '{% if a == false or b == false %} YES {% endif %}', 'a' => true, 'b' => true) + end + + def test_comparison_of_strings_containing_and_or_or + awful_markup = "a == 'and' and b == 'or' and c == 'foo and bar' and d == 'bar or baz' and e == 'foo' and foo and bar" + assigns = { 'a' => 'and', 'b' => 'or', 'c' => 'foo and bar', 'd' => 'bar or baz', 'e' => 'foo', 'foo' => true, 'bar' => true } + assert_template_result(' YES ', "{% if #{awful_markup} %} YES {% endif %}", assigns) + end + + def test_comparison_of_expressions_starting_with_and_or_or + assigns = { 'order' => { 'items_count' => 0 }, 'android' => { 'name' => 'Roy' } } + assert_template_result("YES", + "{% if android.name == 'Roy' %}YES{% endif %}", + assigns) + assert_template_result("YES", + "{% if order.items_count == 0 %}YES{% endif %}", + assigns) + end + + def test_if_and + assert_template_result(' YES ', '{% if true and true %} YES {% endif %}') + assert_template_result('', '{% if false and true %} YES {% endif %}') + assert_template_result('', '{% if false and true %} YES {% endif %}') + end + + def test_hash_miss_generates_false + assert_template_result('', '{% if foo.bar %} NO {% endif %}', 'foo' => {}) + end + + def test_if_from_variable + assert_template_result('', '{% if var %} NO {% endif %}', 'var' => false) + assert_template_result('', '{% if var %} NO {% endif %}', 'var' => nil) + assert_template_result('', '{% if foo.bar %} NO {% endif %}', 'foo' => { 'bar' => false }) + assert_template_result('', '{% if foo.bar %} NO {% endif %}', 'foo' => {}) + assert_template_result('', '{% if foo.bar %} NO {% endif %}', 'foo' => nil) + assert_template_result('', '{% if foo.bar %} NO {% endif %}', 'foo' => true) + + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => "text") + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => true) + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => 1) + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => {}) + assert_template_result(' YES ', '{% if var %} YES {% endif %}', 'var' => []) + assert_template_result(' YES ', '{% if "foo" %} YES {% endif %}') + assert_template_result(' YES ', '{% if foo.bar %} YES {% endif %}', 'foo' => { 'bar' => true }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% endif %}', 'foo' => { 'bar' => "text" }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% endif %}', 'foo' => { 'bar' => 1 }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% endif %}', 'foo' => { 'bar' => {} }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% endif %}', 'foo' => { 'bar' => [] }) + + assert_template_result(' YES ', '{% if var %} NO {% else %} YES {% endif %}', 'var' => false) + assert_template_result(' YES ', '{% if var %} NO {% else %} YES {% endif %}', 'var' => nil) + assert_template_result(' YES ', '{% if var %} YES {% else %} NO {% endif %}', 'var' => true) + assert_template_result(' YES ', '{% if "foo" %} YES {% else %} NO {% endif %}', 'var' => "text") + + assert_template_result(' YES ', '{% if foo.bar %} NO {% else %} YES {% endif %}', 'foo' => { 'bar' => false }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% else %} NO {% endif %}', 'foo' => { 'bar' => true }) + assert_template_result(' YES ', '{% if foo.bar %} YES {% else %} NO {% endif %}', 'foo' => { 'bar' => "text" }) + assert_template_result(' YES ', '{% if foo.bar %} NO {% else %} YES {% endif %}', 'foo' => { 'notbar' => true }) + assert_template_result(' YES ', '{% if foo.bar %} NO {% else %} YES {% endif %}', 'foo' => {}) + assert_template_result(' YES ', '{% if foo.bar %} NO {% else %} YES {% endif %}', 'notfoo' => { 'bar' => true }) + end + + def test_nested_if + assert_template_result('', '{% if false %}{% if false %} NO {% endif %}{% endif %}') + assert_template_result('', '{% if false %}{% if true %} NO {% endif %}{% endif %}') + assert_template_result('', '{% if true %}{% if false %} NO {% endif %}{% endif %}') + assert_template_result(' YES ', '{% if true %}{% if true %} YES {% endif %}{% endif %}') + + assert_template_result(' YES ', '{% if true %}{% if true %} YES {% else %} NO {% endif %}{% else %} NO {% endif %}') + assert_template_result(' YES ', '{% if true %}{% if false %} NO {% else %} YES {% endif %}{% else %} NO {% endif %}') + assert_template_result(' YES ', '{% if false %}{% if true %} NO {% else %} NONO {% endif %}{% else %} YES {% endif %}') + end + + def test_comparisons_on_null + assert_template_result('', '{% if null < 10 %} NO {% endif %}') + assert_template_result('', '{% if null <= 10 %} NO {% endif %}') + assert_template_result('', '{% if null >= 10 %} NO {% endif %}') + assert_template_result('', '{% if null > 10 %} NO {% endif %}') + + assert_template_result('', '{% if 10 < null %} NO {% endif %}') + assert_template_result('', '{% if 10 <= null %} NO {% endif %}') + assert_template_result('', '{% if 10 >= null %} NO {% endif %}') + assert_template_result('', '{% if 10 > null %} NO {% endif %}') + end + + def test_else_if + assert_template_result('0', '{% if 0 == 0 %}0{% elsif 1 == 1%}1{% else %}2{% endif %}') + assert_template_result('1', '{% if 0 != 0 %}0{% elsif 1 == 1%}1{% else %}2{% endif %}') + assert_template_result('2', '{% if 0 != 0 %}0{% elsif 1 != 1%}1{% else %}2{% endif %}') + + assert_template_result('elsif', '{% if false %}if{% elsif true %}elsif{% endif %}') + end + + def test_syntax_error_no_variable + assert_raises(SyntaxError){ assert_template_result('', '{% if jerry == 1 %}') } + end + + def test_syntax_error_no_expression + assert_raises(SyntaxError) { assert_template_result('', '{% if %}') } + end + + def test_if_with_custom_condition + original_op = Condition.operators['contains'] + Condition.operators['contains'] = :[] + + assert_template_result('yes', %({% if 'bob' contains 'o' %}yes{% endif %})) + assert_template_result('no', %({% if 'bob' contains 'f' %}yes{% else %}no{% endif %})) + ensure + Condition.operators['contains'] = original_op + end + + def test_operators_are_ignored_unless_isolated + original_op = Condition.operators['contains'] + Condition.operators['contains'] = :[] + + assert_template_result('yes', + %({% if 'gnomeslab-and-or-liquid' contains 'gnomeslab-and-or-liquid' %}yes{% endif %})) + ensure + Condition.operators['contains'] = original_op + end + + def test_operators_are_whitelisted + assert_raises(SyntaxError) do + assert_template_result('', %({% if 1 or throw or or 1 %}yes{% endif %})) + end + end + + def test_multiple_conditions + tpl = "{% if a or b and c %}true{% else %}false{% endif %}" + + tests = { + [true, true, true] => true, + [true, true, false] => true, + [true, false, true] => true, + [true, false, false] => true, + [false, true, true] => true, + [false, true, false] => false, + [false, false, true] => false, + [false, false, false] => false, + } + + tests.each do |vals, expected| + a, b, c = vals + assigns = { 'a' => a, 'b' => b, 'c' => c } + assert_template_result expected.to_s, tpl, assigns, assigns.to_s + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/include_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/include_tag_test.rb new file mode 100644 index 0000000000..1d854b0c74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/include_tag_test.rb @@ -0,0 +1,245 @@ +require 'test_helper' + +class TestFileSystem + def read_template_file(template_path) + case template_path + when "product" + "Product: {{ product.title }} " + + when "locale_variables" + "Locale: {{echo1}} {{echo2}}" + + when "variant" + "Variant: {{ variant.title }}" + + when "nested_template" + "{% include 'header' %} {% include 'body' %} {% include 'footer' %}" + + when "body" + "body {% include 'body_detail' %}" + + when "nested_product_template" + "Product: {{ nested_product_template.title }} {%include 'details'%} " + + when "recursively_nested_template" + "-{% include 'recursively_nested_template' %}" + + when "pick_a_source" + "from TestFileSystem" + + when 'assignments' + "{% assign foo = 'bar' %}" + + else + template_path + end + end +end + +class OtherFileSystem + def read_template_file(template_path) + 'from OtherFileSystem' + end +end + +class CountingFileSystem + attr_reader :count + def read_template_file(template_path) + @count ||= 0 + @count += 1 + 'from CountingFileSystem' + end +end + +class CustomInclude < Liquid::Tag + Syntax = /(#{Liquid::QuotedFragment}+)(\s+(?:with|for)\s+(#{Liquid::QuotedFragment}+))?/o + + def initialize(tag_name, markup, tokens) + markup =~ Syntax + @template_name = $1 + super + end + + def parse(tokens) + end + + def render(context) + @template_name[1..-2] + end +end + +class IncludeTagTest < Minitest::Test + include Liquid + + def setup + Liquid::Template.file_system = TestFileSystem.new + end + + def test_include_tag_looks_for_file_system_in_registers_first + assert_equal 'from OtherFileSystem', + Template.parse("{% include 'pick_a_source' %}").render!({}, registers: { file_system: OtherFileSystem.new }) + end + + def test_include_tag_with + assert_template_result "Product: Draft 151cm ", + "{% include 'product' with products[0] %}", "products" => [ { 'title' => 'Draft 151cm' }, { 'title' => 'Element 155cm' } ] + end + + def test_include_tag_with_default_name + assert_template_result "Product: Draft 151cm ", + "{% include 'product' %}", "product" => { 'title' => 'Draft 151cm' } + end + + def test_include_tag_for + assert_template_result "Product: Draft 151cm Product: Element 155cm ", + "{% include 'product' for products %}", "products" => [ { 'title' => 'Draft 151cm' }, { 'title' => 'Element 155cm' } ] + end + + def test_include_tag_with_local_variables + assert_template_result "Locale: test123 ", "{% include 'locale_variables' echo1: 'test123' %}" + end + + def test_include_tag_with_multiple_local_variables + assert_template_result "Locale: test123 test321", + "{% include 'locale_variables' echo1: 'test123', echo2: 'test321' %}" + end + + def test_include_tag_with_multiple_local_variables_from_context + assert_template_result "Locale: test123 test321", + "{% include 'locale_variables' echo1: echo1, echo2: more_echos.echo2 %}", + 'echo1' => 'test123', 'more_echos' => { "echo2" => 'test321' } + end + + def test_included_templates_assigns_variables + assert_template_result "bar", "{% include 'assignments' %}{{ foo }}" + end + + def test_nested_include_tag + assert_template_result "body body_detail", "{% include 'body' %}" + + assert_template_result "header body body_detail footer", "{% include 'nested_template' %}" + end + + def test_nested_include_with_variable + assert_template_result "Product: Draft 151cm details ", + "{% include 'nested_product_template' with product %}", "product" => { "title" => 'Draft 151cm' } + + assert_template_result "Product: Draft 151cm details Product: Element 155cm details ", + "{% include 'nested_product_template' for products %}", "products" => [{ "title" => 'Draft 151cm' }, { "title" => 'Element 155cm' }] + end + + def test_recursively_included_template_does_not_produce_endless_loop + infinite_file_system = Class.new do + def read_template_file(template_path) + "-{% include 'loop' %}" + end + end + + Liquid::Template.file_system = infinite_file_system.new + + assert_raises(Liquid::StackLevelError) do + Template.parse("{% include 'loop' %}").render! + end + end + + def test_dynamically_choosen_template + assert_template_result "Test123", "{% include template %}", "template" => 'Test123' + assert_template_result "Test321", "{% include template %}", "template" => 'Test321' + + assert_template_result "Product: Draft 151cm ", "{% include template for product %}", + "template" => 'product', 'product' => { 'title' => 'Draft 151cm' } + end + + def test_include_tag_caches_second_read_of_same_partial + file_system = CountingFileSystem.new + assert_equal 'from CountingFileSystemfrom CountingFileSystem', + Template.parse("{% include 'pick_a_source' %}{% include 'pick_a_source' %}").render!({}, registers: { file_system: file_system }) + assert_equal 1, file_system.count + end + + def test_include_tag_doesnt_cache_partials_across_renders + file_system = CountingFileSystem.new + assert_equal 'from CountingFileSystem', + Template.parse("{% include 'pick_a_source' %}").render!({}, registers: { file_system: file_system }) + assert_equal 1, file_system.count + + assert_equal 'from CountingFileSystem', + Template.parse("{% include 'pick_a_source' %}").render!({}, registers: { file_system: file_system }) + assert_equal 2, file_system.count + end + + def test_include_tag_within_if_statement + assert_template_result "foo_if_true", "{% if true %}{% include 'foo_if_true' %}{% endif %}" + end + + def test_custom_include_tag + original_tag = Liquid::Template.tags['include'] + Liquid::Template.tags['include'] = CustomInclude + begin + assert_equal "custom_foo", + Template.parse("{% include 'custom_foo' %}").render! + ensure + Liquid::Template.tags['include'] = original_tag + end + end + + def test_custom_include_tag_within_if_statement + original_tag = Liquid::Template.tags['include'] + Liquid::Template.tags['include'] = CustomInclude + begin + assert_equal "custom_foo_if_true", + Template.parse("{% if true %}{% include 'custom_foo_if_true' %}{% endif %}").render! + ensure + Liquid::Template.tags['include'] = original_tag + end + end + + def test_does_not_add_error_in_strict_mode_for_missing_variable + Liquid::Template.file_system = TestFileSystem.new + + a = Liquid::Template.parse(' {% include "nested_template" %}') + a.render! + assert_empty a.errors + end + + def test_passing_options_to_included_templates + assert_raises(Liquid::SyntaxError) do + Template.parse("{% include template %}", error_mode: :strict).render!("template" => '{{ "X" || downcase }}') + end + with_error_mode(:lax) do + assert_equal 'x', Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: true).render!("template" => '{{ "X" || downcase }}') + end + assert_raises(Liquid::SyntaxError) do + Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: [:locale]).render!("template" => '{{ "X" || downcase }}') + end + with_error_mode(:lax) do + assert_equal 'x', Template.parse("{% include template %}", error_mode: :strict, include_options_blacklist: [:error_mode]).render!("template" => '{{ "X" || downcase }}') + end + end + + def test_render_raise_argument_error_when_template_is_undefined + assert_raises(Liquid::ArgumentError) do + template = Liquid::Template.parse('{% include undefined_variable %}') + template.render! + end + assert_raises(Liquid::ArgumentError) do + template = Liquid::Template.parse('{% include nil %}') + template.render! + end + end + + def test_including_via_variable_value + assert_template_result "from TestFileSystem", "{% assign page = 'pick_a_source' %}{% include page %}" + + assert_template_result "Product: Draft 151cm ", "{% assign page = 'product' %}{% include page %}", "product" => { 'title' => 'Draft 151cm' } + + assert_template_result "Product: Draft 151cm ", "{% assign page = 'product' %}{% include page for foo %}", "foo" => { 'title' => 'Draft 151cm' } + end + + def test_including_with_strict_variables + template = Liquid::Template.parse("{% include 'simple' %}", error_mode: :warn) + template.render(nil, strict_variables: true) + + assert_equal [], template.errors + end +end # IncludeTagTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/increment_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/increment_tag_test.rb new file mode 100644 index 0000000000..97c51ac5bc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/increment_tag_test.rb @@ -0,0 +1,23 @@ +require 'test_helper' + +class IncrementTagTest < Minitest::Test + include Liquid + + def test_inc + assert_template_result('0', '{%increment port %}', {}) + assert_template_result('0 1', '{%increment port %} {%increment port%}', {}) + assert_template_result('0 0 1 2 1', + '{%increment port %} {%increment starboard%} ' \ + '{%increment port %} {%increment port%} ' \ + '{%increment starboard %}', {}) + end + + def test_dec + assert_template_result('9', '{%decrement port %}', { 'port' => 10 }) + assert_template_result('-1 -2', '{%decrement port %} {%decrement port%}', {}) + assert_template_result('1 5 2 2 5', + '{%increment port %} {%increment starboard%} ' \ + '{%increment port %} {%decrement port%} ' \ + '{%decrement starboard %}', { 'port' => 1, 'starboard' => 5 }) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/raw_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/raw_tag_test.rb new file mode 100644 index 0000000000..634d052d1e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/raw_tag_test.rb @@ -0,0 +1,31 @@ +require 'test_helper' + +class RawTagTest < Minitest::Test + include Liquid + + def test_tag_in_raw + assert_template_result '{% comment %} test {% endcomment %}', + '{% raw %}{% comment %} test {% endcomment %}{% endraw %}' + end + + def test_output_in_raw + assert_template_result '{{ test }}', '{% raw %}{{ test }}{% endraw %}' + end + + def test_open_tag_in_raw + assert_template_result ' Foobar {% invalid ', '{% raw %} Foobar {% invalid {% endraw %}' + assert_template_result ' Foobar invalid %} ', '{% raw %} Foobar invalid %} {% endraw %}' + assert_template_result ' Foobar {{ invalid ', '{% raw %} Foobar {{ invalid {% endraw %}' + assert_template_result ' Foobar invalid }} ', '{% raw %} Foobar invalid }} {% endraw %}' + assert_template_result ' Foobar {% invalid {% {% endraw ', '{% raw %} Foobar {% invalid {% {% endraw {% endraw %}' + assert_template_result ' Foobar {% {% {% ', '{% raw %} Foobar {% {% {% {% endraw %}' + assert_template_result ' test {% raw %} {% endraw %}', '{% raw %} test {% raw %} {% {% endraw %}endraw %}' + assert_template_result ' Foobar {{ invalid 1', '{% raw %} Foobar {{ invalid {% endraw %}{{ 1 }}' + end + + def test_invalid_raw + assert_match_syntax_error(/tag was never closed/, '{% raw %} foo') + assert_match_syntax_error(/Valid syntax/, '{% raw } foo {% endraw %}') + assert_match_syntax_error(/Valid syntax/, '{% raw } foo %}{% endraw %}') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/standard_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/standard_tag_test.rb new file mode 100644 index 0000000000..4b4703a6f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/standard_tag_test.rb @@ -0,0 +1,296 @@ +require 'test_helper' + +class StandardTagTest < Minitest::Test + include Liquid + + def test_no_transform + assert_template_result('this text should come out of the template without change...', + 'this text should come out of the template without change...') + + assert_template_result('blah', 'blah') + assert_template_result('', '') + assert_template_result('|,.:', '|,.:') + assert_template_result('', '') + + text = %(this shouldnt see any transformation either but has multiple lines + as you can clearly see here ...) + assert_template_result(text, text) + end + + def test_has_a_block_which_does_nothing + assert_template_result(%(the comment block should be removed .. right?), + %(the comment block should be removed {%comment%} be gone.. {%endcomment%} .. right?)) + + assert_template_result('', '{%comment%}{%endcomment%}') + assert_template_result('', '{%comment%}{% endcomment %}') + assert_template_result('', '{% comment %}{%endcomment%}') + assert_template_result('', '{% comment %}{% endcomment %}') + assert_template_result('', '{%comment%}comment{%endcomment%}') + assert_template_result('', '{% comment %}comment{% endcomment %}') + assert_template_result('', '{% comment %} 1 {% comment %} 2 {% endcomment %} 3 {% endcomment %}') + + assert_template_result('', '{%comment%}{%blabla%}{%endcomment%}') + assert_template_result('', '{% comment %}{% blabla %}{% endcomment %}') + assert_template_result('', '{%comment%}{% endif %}{%endcomment%}') + assert_template_result('', '{% comment %}{% endwhatever %}{% endcomment %}') + assert_template_result('', '{% comment %}{% raw %} {{%%%%}} }} { {% endcomment %} {% comment {% endraw %} {% endcomment %}') + + assert_template_result('foobar', 'foo{%comment%}comment{%endcomment%}bar') + assert_template_result('foobar', 'foo{% comment %}comment{% endcomment %}bar') + assert_template_result('foobar', 'foo{%comment%} comment {%endcomment%}bar') + assert_template_result('foobar', 'foo{% comment %} comment {% endcomment %}bar') + + assert_template_result('foo bar', 'foo {%comment%} {%endcomment%} bar') + assert_template_result('foo bar', 'foo {%comment%}comment{%endcomment%} bar') + assert_template_result('foo bar', 'foo {%comment%} comment {%endcomment%} bar') + + assert_template_result('foobar', 'foo{%comment%} + {%endcomment%}bar') + end + + def test_hyphenated_assign + assigns = { 'a-b' => '1' } + assert_template_result('a-b:1 a-b:2', 'a-b:{{a-b}} {%assign a-b = 2 %}a-b:{{a-b}}', assigns) + end + + def test_assign_with_colon_and_spaces + assigns = { 'var' => { 'a:b c' => { 'paged' => '1' } } } + assert_template_result('var2: 1', '{%assign var2 = var["a:b c"].paged %}var2: {{var2}}', assigns) + end + + def test_capture + assigns = { 'var' => 'content' } + assert_template_result('content foo content foo ', + '{{ var2 }}{% capture var2 %}{{ var }} foo {% endcapture %}{{ var2 }}{{ var2 }}', + assigns) + end + + def test_capture_detects_bad_syntax + assert_raises(SyntaxError) do + assert_template_result('content foo content foo ', + '{{ var2 }}{% capture %}{{ var }} foo {% endcapture %}{{ var2 }}{{ var2 }}', + { 'var' => 'content' }) + end + end + + def test_case + assigns = { 'condition' => 2 } + assert_template_result(' its 2 ', + '{% case condition %}{% when 1 %} its 1 {% when 2 %} its 2 {% endcase %}', + assigns) + + assigns = { 'condition' => 1 } + assert_template_result(' its 1 ', + '{% case condition %}{% when 1 %} its 1 {% when 2 %} its 2 {% endcase %}', + assigns) + + assigns = { 'condition' => 3 } + assert_template_result('', + '{% case condition %}{% when 1 %} its 1 {% when 2 %} its 2 {% endcase %}', + assigns) + + assigns = { 'condition' => "string here" } + assert_template_result(' hit ', + '{% case condition %}{% when "string here" %} hit {% endcase %}', + assigns) + + assigns = { 'condition' => "bad string here" } + assert_template_result('', + '{% case condition %}{% when "string here" %} hit {% endcase %}',\ + assigns) + end + + def test_case_with_else + assigns = { 'condition' => 5 } + assert_template_result(' hit ', + '{% case condition %}{% when 5 %} hit {% else %} else {% endcase %}', + assigns) + + assigns = { 'condition' => 6 } + assert_template_result(' else ', + '{% case condition %}{% when 5 %} hit {% else %} else {% endcase %}', + assigns) + + assigns = { 'condition' => 6 } + assert_template_result(' else ', + '{% case condition %} {% when 5 %} hit {% else %} else {% endcase %}', + assigns) + end + + def test_case_on_size + assert_template_result('', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => []) + assert_template_result('1', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => [1]) + assert_template_result('2', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => [1, 1]) + assert_template_result('', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => [1, 1, 1]) + assert_template_result('', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => [1, 1, 1, 1]) + assert_template_result('', '{% case a.size %}{% when 1 %}1{% when 2 %}2{% endcase %}', 'a' => [1, 1, 1, 1, 1]) + end + + def test_case_on_size_with_else + assert_template_result('else', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => []) + + assert_template_result('1', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => [1]) + + assert_template_result('2', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => [1, 1]) + + assert_template_result('else', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => [1, 1, 1]) + + assert_template_result('else', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => [1, 1, 1, 1]) + + assert_template_result('else', + '{% case a.size %}{% when 1 %}1{% when 2 %}2{% else %}else{% endcase %}', + 'a' => [1, 1, 1, 1, 1]) + end + + def test_case_on_length_with_else + assert_template_result('else', + '{% case a.empty? %}{% when true %}true{% when false %}false{% else %}else{% endcase %}', + {}) + + assert_template_result('false', + '{% case false %}{% when true %}true{% when false %}false{% else %}else{% endcase %}', + {}) + + assert_template_result('true', + '{% case true %}{% when true %}true{% when false %}false{% else %}else{% endcase %}', + {}) + + assert_template_result('else', + '{% case NULL %}{% when true %}true{% when false %}false{% else %}else{% endcase %}', + {}) + end + + def test_assign_from_case + # Example from the shopify forums + code = "{% case collection.handle %}{% when 'menswear-jackets' %}{% assign ptitle = 'menswear' %}{% when 'menswear-t-shirts' %}{% assign ptitle = 'menswear' %}{% else %}{% assign ptitle = 'womenswear' %}{% endcase %}{{ ptitle }}" + template = Liquid::Template.parse(code) + assert_equal "menswear", template.render!("collection" => { 'handle' => 'menswear-jackets' }) + assert_equal "menswear", template.render!("collection" => { 'handle' => 'menswear-t-shirts' }) + assert_equal "womenswear", template.render!("collection" => { 'handle' => 'x' }) + assert_equal "womenswear", template.render!("collection" => { 'handle' => 'y' }) + assert_equal "womenswear", template.render!("collection" => { 'handle' => 'z' }) + end + + def test_case_when_or + code = '{% case condition %}{% when 1 or 2 or 3 %} its 1 or 2 or 3 {% when 4 %} its 4 {% endcase %}' + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 1 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 2 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 3 }) + assert_template_result(' its 4 ', code, { 'condition' => 4 }) + assert_template_result('', code, { 'condition' => 5 }) + + code = '{% case condition %}{% when 1 or "string" or null %} its 1 or 2 or 3 {% when 4 %} its 4 {% endcase %}' + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 1 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 'string' }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => nil }) + assert_template_result('', code, { 'condition' => 'something else' }) + end + + def test_case_when_comma + code = '{% case condition %}{% when 1, 2, 3 %} its 1 or 2 or 3 {% when 4 %} its 4 {% endcase %}' + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 1 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 2 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 3 }) + assert_template_result(' its 4 ', code, { 'condition' => 4 }) + assert_template_result('', code, { 'condition' => 5 }) + + code = '{% case condition %}{% when 1, "string", null %} its 1 or 2 or 3 {% when 4 %} its 4 {% endcase %}' + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 1 }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => 'string' }) + assert_template_result(' its 1 or 2 or 3 ', code, { 'condition' => nil }) + assert_template_result('', code, { 'condition' => 'something else' }) + end + + def test_assign + assert_template_result 'variable', '{% assign a = "variable"%}{{a}}' + end + + def test_assign_unassigned + assigns = { 'var' => 'content' } + assert_template_result('var2: var2:content', 'var2:{{var2}} {%assign var2 = var%} var2:{{var2}}', assigns) + end + + def test_assign_an_empty_string + assert_template_result '', '{% assign a = ""%}{{a}}' + end + + def test_assign_is_global + assert_template_result 'variable', '{%for i in (1..2) %}{% assign a = "variable"%}{% endfor %}{{a}}' + end + + def test_case_detects_bad_syntax + assert_raises(SyntaxError) do + assert_template_result('', '{% case false %}{% when %}true{% endcase %}', {}) + end + + assert_raises(SyntaxError) do + assert_template_result('', '{% case false %}{% huh %}true{% endcase %}', {}) + end + end + + def test_cycle + assert_template_result('one', '{%cycle "one", "two"%}') + assert_template_result('one two', '{%cycle "one", "two"%} {%cycle "one", "two"%}') + assert_template_result(' two', '{%cycle "", "two"%} {%cycle "", "two"%}') + + assert_template_result('one two one', '{%cycle "one", "two"%} {%cycle "one", "two"%} {%cycle "one", "two"%}') + + assert_template_result('text-align: left text-align: right', + '{%cycle "text-align: left", "text-align: right" %} {%cycle "text-align: left", "text-align: right"%}') + end + + def test_multiple_cycles + assert_template_result('1 2 1 1 2 3 1', + '{%cycle 1,2%} {%cycle 1,2%} {%cycle 1,2%} {%cycle 1,2,3%} {%cycle 1,2,3%} {%cycle 1,2,3%} {%cycle 1,2,3%}') + end + + def test_multiple_named_cycles + assert_template_result('one one two two one one', + '{%cycle 1: "one", "two" %} {%cycle 2: "one", "two" %} {%cycle 1: "one", "two" %} {%cycle 2: "one", "two" %} {%cycle 1: "one", "two" %} {%cycle 2: "one", "two" %}') + end + + def test_multiple_named_cycles_with_names_from_context + assigns = { "var1" => 1, "var2" => 2 } + assert_template_result('one one two two one one', + '{%cycle var1: "one", "two" %} {%cycle var2: "one", "two" %} {%cycle var1: "one", "two" %} {%cycle var2: "one", "two" %} {%cycle var1: "one", "two" %} {%cycle var2: "one", "two" %}', assigns) + end + + def test_size_of_array + assigns = { "array" => [1, 2, 3, 4] } + assert_template_result('array has 4 elements', "array has {{ array.size }} elements", assigns) + end + + def test_size_of_hash + assigns = { "hash" => { a: 1, b: 2, c: 3, d: 4 } } + assert_template_result('hash has 4 elements', "hash has {{ hash.size }} elements", assigns) + end + + def test_illegal_symbols + assert_template_result('', '{% if true == empty %}?{% endif %}', {}) + assert_template_result('', '{% if true == null %}?{% endif %}', {}) + assert_template_result('', '{% if empty == true %}?{% endif %}', {}) + assert_template_result('', '{% if null == true %}?{% endif %}', {}) + end + + def test_ifchanged + assigns = { 'array' => [ 1, 1, 2, 2, 3, 3] } + assert_template_result('123', '{%for item in array%}{%ifchanged%}{{item}}{% endifchanged %}{%endfor%}', assigns) + + assigns = { 'array' => [ 1, 1, 1, 1] } + assert_template_result('1', '{%for item in array%}{%ifchanged%}{{item}}{% endifchanged %}{%endfor%}', assigns) + end + + def test_multiline_tag + assert_template_result '0 1 2 3', "0{%\nfor i in (1..3)\n%} {{\ni\n}}{%\nendfor\n%}" + end +end # StandardTagTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/statements_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/statements_test.rb new file mode 100644 index 0000000000..eeff166f5b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/statements_test.rb @@ -0,0 +1,111 @@ +require 'test_helper' + +class StatementsTest < Minitest::Test + include Liquid + + def test_true_eql_true + text = ' {% if true == true %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text + end + + def test_true_not_eql_true + text = ' {% if true != true %} true {% else %} false {% endif %} ' + assert_template_result ' false ', text + end + + def test_true_lq_true + text = ' {% if 0 > 0 %} true {% else %} false {% endif %} ' + assert_template_result ' false ', text + end + + def test_one_lq_zero + text = ' {% if 1 > 0 %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text + end + + def test_zero_lq_one + text = ' {% if 0 < 1 %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text + end + + def test_zero_lq_or_equal_one + text = ' {% if 0 <= 0 %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text + end + + def test_zero_lq_or_equal_one_involving_nil + text = ' {% if null <= 0 %} true {% else %} false {% endif %} ' + assert_template_result ' false ', text + + text = ' {% if 0 <= null %} true {% else %} false {% endif %} ' + assert_template_result ' false ', text + end + + def test_zero_lqq_or_equal_one + text = ' {% if 0 >= 0 %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text + end + + def test_strings + text = " {% if 'test' == 'test' %} true {% else %} false {% endif %} " + assert_template_result ' true ', text + end + + def test_strings_not_equal + text = " {% if 'test' != 'test' %} true {% else %} false {% endif %} " + assert_template_result ' false ', text + end + + def test_var_strings_equal + text = ' {% if var == "hello there!" %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => 'hello there!' + end + + def test_var_strings_are_not_equal + text = ' {% if "hello there!" == var %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => 'hello there!' + end + + def test_var_and_long_string_are_equal + text = " {% if var == 'hello there!' %} true {% else %} false {% endif %} " + assert_template_result ' true ', text, 'var' => 'hello there!' + end + + def test_var_and_long_string_are_equal_backwards + text = " {% if 'hello there!' == var %} true {% else %} false {% endif %} " + assert_template_result ' true ', text, 'var' => 'hello there!' + end + + # def test_is_nil + # text = %| {% if var != nil %} true {% else %} false {% end %} | + # @template.assigns = { 'var' => 'hello there!'} + # expected = %| true | + # assert_equal expected, @template.parse(text) + # end + + def test_is_collection_empty + text = ' {% if array == empty %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'array' => [] + end + + def test_is_not_collection_empty + text = ' {% if array == empty %} true {% else %} false {% endif %} ' + assert_template_result ' false ', text, 'array' => [1, 2, 3] + end + + def test_nil + text = ' {% if var == nil %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => nil + + text = ' {% if var == null %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => nil + end + + def test_not_nil + text = ' {% if var != nil %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => 1 + + text = ' {% if var != null %} true {% else %} false {% endif %} ' + assert_template_result ' true ', text, 'var' => 1 + end +end # StatementsTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/table_row_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/table_row_test.rb new file mode 100644 index 0000000000..d7bc14cf4b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/table_row_test.rb @@ -0,0 +1,64 @@ +require 'test_helper' + +class TableRowTest < Minitest::Test + include Liquid + + class ArrayDrop < Liquid::Drop + include Enumerable + + def initialize(array) + @array = array + end + + def each(&block) + @array.each(&block) + end + end + + def test_table_row + assert_template_result("\n 1 2 3 \n 4 5 6 \n", + '{% tablerow n in numbers cols:3%} {{n}} {% endtablerow %}', + 'numbers' => [1, 2, 3, 4, 5, 6]) + + assert_template_result("\n\n", + '{% tablerow n in numbers cols:3%} {{n}} {% endtablerow %}', + 'numbers' => []) + end + + def test_table_row_with_different_cols + assert_template_result("\n 1 2 3 4 5 \n 6 \n", + '{% tablerow n in numbers cols:5%} {{n}} {% endtablerow %}', + 'numbers' => [1, 2, 3, 4, 5, 6]) + end + + def test_table_col_counter + assert_template_result("\n12\n12\n12\n", + '{% tablerow n in numbers cols:2%}{{tablerowloop.col}}{% endtablerow %}', + 'numbers' => [1, 2, 3, 4, 5, 6]) + end + + def test_quoted_fragment + assert_template_result("\n 1 2 3 \n 4 5 6 \n", + "{% tablerow n in collections.frontpage cols:3%} {{n}} {% endtablerow %}", + 'collections' => { 'frontpage' => [1, 2, 3, 4, 5, 6] }) + assert_template_result("\n 1 2 3 \n 4 5 6 \n", + "{% tablerow n in collections['frontpage'] cols:3%} {{n}} {% endtablerow %}", + 'collections' => { 'frontpage' => [1, 2, 3, 4, 5, 6] }) + end + + def test_enumerable_drop + assert_template_result("\n 1 2 3 \n 4 5 6 \n", + '{% tablerow n in numbers cols:3%} {{n}} {% endtablerow %}', + 'numbers' => ArrayDrop.new([1, 2, 3, 4, 5, 6])) + end + + def test_offset_and_limit + assert_template_result("\n 1 2 3 \n 4 5 6 \n", + '{% tablerow n in numbers cols:3 offset:1 limit:6%} {{n}} {% endtablerow %}', + 'numbers' => [0, 1, 2, 3, 4, 5, 6, 7]) + end + + def test_blank_string_not_iterable + assert_template_result("\n\n", "{% tablerow char in characters cols:3 %}I WILL NOT BE OUTPUT{% endtablerow %}", 'characters' => '') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/unless_else_tag_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/unless_else_tag_test.rb new file mode 100644 index 0000000000..c414a715b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/tags/unless_else_tag_test.rb @@ -0,0 +1,26 @@ +require 'test_helper' + +class UnlessElseTagTest < Minitest::Test + include Liquid + + def test_unless + assert_template_result(' ', ' {% unless true %} this text should not go into the output {% endunless %} ') + assert_template_result(' this text should go into the output ', + ' {% unless false %} this text should go into the output {% endunless %} ') + assert_template_result(' you rock ?', '{% unless true %} you suck {% endunless %} {% unless false %} you rock {% endunless %}?') + end + + def test_unless_else + assert_template_result(' YES ', '{% unless true %} NO {% else %} YES {% endunless %}') + assert_template_result(' YES ', '{% unless false %} YES {% else %} NO {% endunless %}') + assert_template_result(' YES ', '{% unless "foo" %} NO {% else %} YES {% endunless %}') + end + + def test_unless_in_loop + assert_template_result '23', '{% for i in choices %}{% unless i %}{{ forloop.index }}{% endunless %}{% endfor %}', 'choices' => [1, nil, false] + end + + def test_unless_else_in_loop + assert_template_result ' TRUE 2 3 ', '{% for i in choices %}{% unless i %} {{ forloop.index }} {% else %} TRUE {% endunless %}{% endfor %}', 'choices' => [1, nil, false] + end +end # UnlessElseTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/template_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/template_test.rb new file mode 100644 index 0000000000..d10e1c5e7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/template_test.rb @@ -0,0 +1,332 @@ +require 'test_helper' +require 'timeout' + +class TemplateContextDrop < Liquid::Drop + def liquid_method_missing(method) + method + end + + def foo + 'fizzbuzz' + end + + def baz + @context.registers['lulz'] + end +end + +class SomethingWithLength < Liquid::Drop + def length + nil + end +end + +class ErroneousDrop < Liquid::Drop + def bad_method + raise 'ruby error in drop' + end +end + +class DropWithUndefinedMethod < Liquid::Drop + def foo + 'foo' + end +end + +class TemplateTest < Minitest::Test + include Liquid + + def test_instance_assigns_persist_on_same_template_object_between_parses + t = Template.new + assert_equal 'from instance assigns', t.parse("{% assign foo = 'from instance assigns' %}{{ foo }}").render! + assert_equal 'from instance assigns', t.parse("{{ foo }}").render! + end + + def test_warnings_is_not_exponential_time + str = "false" + 100.times do + str = "{% if true %}true{% else %}#{str}{% endif %}" + end + + t = Template.parse(str) + assert_equal [], Timeout.timeout(1) { t.warnings } + end + + def test_instance_assigns_persist_on_same_template_parsing_between_renders + t = Template.new.parse("{{ foo }}{% assign foo = 'foo' %}{{ foo }}") + assert_equal 'foo', t.render! + assert_equal 'foofoo', t.render! + end + + def test_custom_assigns_do_not_persist_on_same_template + t = Template.new + assert_equal 'from custom assigns', t.parse("{{ foo }}").render!('foo' => 'from custom assigns') + assert_equal '', t.parse("{{ foo }}").render! + end + + def test_custom_assigns_squash_instance_assigns + t = Template.new + assert_equal 'from instance assigns', t.parse("{% assign foo = 'from instance assigns' %}{{ foo }}").render! + assert_equal 'from custom assigns', t.parse("{{ foo }}").render!('foo' => 'from custom assigns') + end + + def test_persistent_assigns_squash_instance_assigns + t = Template.new + assert_equal 'from instance assigns', t.parse("{% assign foo = 'from instance assigns' %}{{ foo }}").render! + t.assigns['foo'] = 'from persistent assigns' + assert_equal 'from persistent assigns', t.parse("{{ foo }}").render! + end + + def test_lambda_is_called_once_from_persistent_assigns_over_multiple_parses_and_renders + t = Template.new + t.assigns['number'] = -> { @global ||= 0; @global += 1 } + assert_equal '1', t.parse("{{number}}").render! + assert_equal '1', t.parse("{{number}}").render! + assert_equal '1', t.render! + @global = nil + end + + def test_lambda_is_called_once_from_custom_assigns_over_multiple_parses_and_renders + t = Template.new + assigns = { 'number' => -> { @global ||= 0; @global += 1 } } + assert_equal '1', t.parse("{{number}}").render!(assigns) + assert_equal '1', t.parse("{{number}}").render!(assigns) + assert_equal '1', t.render!(assigns) + @global = nil + end + + def test_resource_limits_works_with_custom_length_method + t = Template.parse("{% assign foo = bar %}") + t.resource_limits.render_length_limit = 42 + assert_equal "", t.render!("bar" => SomethingWithLength.new) + end + + def test_resource_limits_render_length + t = Template.parse("0123456789") + t.resource_limits.render_length_limit = 5 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + + t.resource_limits.render_length_limit = 10 + assert_equal "0123456789", t.render! + refute_nil t.resource_limits.render_length + end + + def test_resource_limits_render_score + t = Template.parse("{% for a in (1..10) %} {% for a in (1..10) %} foo {% endfor %} {% endfor %}") + t.resource_limits.render_score_limit = 50 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + + t = Template.parse("{% for a in (1..100) %} foo {% endfor %}") + t.resource_limits.render_score_limit = 50 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + + t.resource_limits.render_score_limit = 200 + assert_equal (" foo " * 100), t.render! + refute_nil t.resource_limits.render_score + end + + def test_resource_limits_assign_score + t = Template.parse("{% assign foo = 42 %}{% assign bar = 23 %}") + t.resource_limits.assign_score_limit = 1 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + + t.resource_limits.assign_score_limit = 2 + assert_equal "", t.render! + refute_nil t.resource_limits.assign_score + end + + def test_resource_limits_assign_score_nested + t = Template.parse("{% assign foo = 'aaaa' | reverse %}") + + t.resource_limits.assign_score_limit = 3 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + + t.resource_limits.assign_score_limit = 5 + assert_equal "", t.render! + end + + def test_resource_limits_aborts_rendering_after_first_error + t = Template.parse("{% for a in (1..100) %} foo1 {% endfor %} bar {% for a in (1..100) %} foo2 {% endfor %}") + t.resource_limits.render_score_limit = 50 + assert_equal "Liquid error: Memory limits exceeded", t.render + assert t.resource_limits.reached? + end + + def test_resource_limits_hash_in_template_gets_updated_even_if_no_limits_are_set + t = Template.parse("{% for a in (1..100) %} {% assign foo = 1 %} {% endfor %}") + t.render! + assert t.resource_limits.assign_score > 0 + assert t.resource_limits.render_score > 0 + assert t.resource_limits.render_length > 0 + end + + def test_render_length_persists_between_blocks + t = Template.parse("{% if true %}aaaa{% endif %}") + t.resource_limits.render_length_limit = 7 + assert_equal "Liquid error: Memory limits exceeded", t.render + t.resource_limits.render_length_limit = 8 + assert_equal "aaaa", t.render + + t = Template.parse("{% if true %}aaaa{% endif %}{% if true %}bbb{% endif %}") + t.resource_limits.render_length_limit = 13 + assert_equal "Liquid error: Memory limits exceeded", t.render + t.resource_limits.render_length_limit = 14 + assert_equal "aaaabbb", t.render + + t = Template.parse("{% if true %}a{% endif %}{% if true %}b{% endif %}{% if true %}a{% endif %}{% if true %}b{% endif %}{% if true %}a{% endif %}{% if true %}b{% endif %}") + t.resource_limits.render_length_limit = 5 + assert_equal "Liquid error: Memory limits exceeded", t.render + t.resource_limits.render_length_limit = 11 + assert_equal "Liquid error: Memory limits exceeded", t.render + t.resource_limits.render_length_limit = 12 + assert_equal "ababab", t.render + end + + def test_default_resource_limits_unaffected_by_render_with_context + context = Context.new + t = Template.parse("{% for a in (1..100) %} {% assign foo = 1 %} {% endfor %}") + t.render!(context) + assert context.resource_limits.assign_score > 0 + assert context.resource_limits.render_score > 0 + assert context.resource_limits.render_length > 0 + end + + def test_can_use_drop_as_context + t = Template.new + t.registers['lulz'] = 'haha' + drop = TemplateContextDrop.new + assert_equal 'fizzbuzz', t.parse('{{foo}}').render!(drop) + assert_equal 'bar', t.parse('{{bar}}').render!(drop) + assert_equal 'haha', t.parse("{{baz}}").render!(drop) + end + + def test_render_bang_force_rethrow_errors_on_passed_context + context = Context.new({ 'drop' => ErroneousDrop.new }) + t = Template.new.parse('{{ drop.bad_method }}') + + e = assert_raises RuntimeError do + t.render!(context) + end + assert_equal 'ruby error in drop', e.message + end + + def test_exception_renderer_that_returns_string + exception = nil + handler = ->(e) { exception = e; '' } + + output = Template.parse("{{ 1 | divided_by: 0 }}").render({}, exception_renderer: handler) + + assert exception.is_a?(Liquid::ZeroDivisionError) + assert_equal '', output + end + + def test_exception_renderer_that_raises + exception = nil + assert_raises(Liquid::ZeroDivisionError) do + Template.parse("{{ 1 | divided_by: 0 }}").render({}, exception_renderer: ->(e) { exception = e; raise }) + end + assert exception.is_a?(Liquid::ZeroDivisionError) + end + + def test_global_filter_option_on_render + global_filter_proc = ->(output) { "#{output} filtered" } + rendered_template = Template.parse("{{name}}").render({ "name" => "bob" }, global_filter: global_filter_proc) + + assert_equal 'bob filtered', rendered_template + end + + def test_global_filter_option_when_native_filters_exist + global_filter_proc = ->(output) { "#{output} filtered" } + rendered_template = Template.parse("{{name | upcase}}").render({ "name" => "bob" }, global_filter: global_filter_proc) + + assert_equal 'BOB filtered', rendered_template + end + + def test_undefined_variables + t = Template.parse("{{x}} {{y}} {{z.a}} {{z.b}} {{z.c.d}}") + result = t.render({ 'x' => 33, 'z' => { 'a' => 32, 'c' => { 'e' => 31 } } }, { strict_variables: true }) + + assert_equal '33 32 ', result + assert_equal 3, t.errors.count + assert_instance_of Liquid::UndefinedVariable, t.errors[0] + assert_equal 'Liquid error: undefined variable y', t.errors[0].message + assert_instance_of Liquid::UndefinedVariable, t.errors[1] + assert_equal 'Liquid error: undefined variable b', t.errors[1].message + assert_instance_of Liquid::UndefinedVariable, t.errors[2] + assert_equal 'Liquid error: undefined variable d', t.errors[2].message + end + + def test_nil_value_does_not_raise + Liquid::Template.error_mode = :strict + t = Template.parse("some{{x}}thing") + result = t.render!({ 'x' => nil }, strict_variables: true) + + assert_equal 0, t.errors.count + assert_equal 'something', result + end + + def test_undefined_variables_raise + t = Template.parse("{{x}} {{y}} {{z.a}} {{z.b}} {{z.c.d}}") + + assert_raises UndefinedVariable do + t.render!({ 'x' => 33, 'z' => { 'a' => 32, 'c' => { 'e' => 31 } } }, { strict_variables: true }) + end + end + + def test_undefined_drop_methods + d = DropWithUndefinedMethod.new + t = Template.new.parse('{{ foo }} {{ woot }}') + result = t.render(d, { strict_variables: true }) + + assert_equal 'foo ', result + assert_equal 1, t.errors.count + assert_instance_of Liquid::UndefinedDropMethod, t.errors[0] + end + + def test_undefined_drop_methods_raise + d = DropWithUndefinedMethod.new + t = Template.new.parse('{{ foo }} {{ woot }}') + + assert_raises UndefinedDropMethod do + t.render!(d, { strict_variables: true }) + end + end + + def test_undefined_filters + t = Template.parse("{{a}} {{x | upcase | somefilter1 | somefilter2 | somefilter3}}") + filters = Module.new do + def somefilter3(v) + "-#{v}-" + end + end + result = t.render({ 'a' => 123, 'x' => 'foo' }, { filters: [filters], strict_filters: true }) + + assert_equal '123 ', result + assert_equal 1, t.errors.count + assert_instance_of Liquid::UndefinedFilter, t.errors[0] + assert_equal 'Liquid error: undefined filter somefilter1', t.errors[0].message + end + + def test_undefined_filters_raise + t = Template.parse("{{x | somefilter1 | upcase | somefilter2}}") + + assert_raises UndefinedFilter do + t.render!({ 'x' => 'foo' }, { strict_filters: true }) + end + end + + def test_using_range_literal_works_as_expected + t = Template.parse("{% assign foo = (x..y) %}{{ foo }}") + result = t.render({ 'x' => 1, 'y' => 5 }) + assert_equal '1..5', result + + t = Template.parse("{% assign nums = (x..y) %}{% for num in nums %}{{ num }}{% endfor %}") + result = t.render({ 'x' => 1, 'y' => 5 }) + assert_equal '12345', result + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/trim_mode_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/trim_mode_test.rb new file mode 100644 index 0000000000..52248cff6b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/trim_mode_test.rb @@ -0,0 +1,529 @@ +require 'test_helper' + +class TrimModeTest < Minitest::Test + include Liquid + + # Make sure the trim isn't applied to standard output + def test_standard_output + text = <<-END_TEMPLATE +
                +

                + {{ 'John' }} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + John +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_variable_output_with_multiple_blank_lines + text = <<-END_TEMPLATE +
                +

                + + + {{- 'John' -}} + + +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                John

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_tag_output_with_multiple_blank_lines + text = <<-END_TEMPLATE +
                +

                + + + {%- if true -%} + yes + {%- endif -%} + + +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                yes

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + # Make sure the trim isn't applied to standard tags + def test_standard_tags + whitespace = ' ' + text = <<-END_TEMPLATE +
                +

                + {% if true %} + yes + {% endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +#{whitespace} + yes +#{whitespace} +

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {% if false %} + no + {% endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +#{whitespace} +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + # Make sure the trim isn't too agressive + def test_no_trim_output + text = '

                {{- \'John\' -}}

                ' + expected = '

                John

                ' + assert_template_result(expected, text) + end + + # Make sure the trim isn't too agressive + def test_no_trim_tags + text = '

                {%- if true -%}yes{%- endif -%}

                ' + expected = '

                yes

                ' + assert_template_result(expected, text) + + text = '

                {%- if false -%}no{%- endif -%}

                ' + expected = '

                ' + assert_template_result(expected, text) + end + + def test_single_line_outer_tag + text = '

                {%- if true %} yes {% endif -%}

                ' + expected = '

                yes

                ' + assert_template_result(expected, text) + + text = '

                {%- if false %} no {% endif -%}

                ' + expected = '

                ' + assert_template_result(expected, text) + end + + def test_single_line_inner_tag + text = '

                {% if true -%} yes {%- endif %}

                ' + expected = '

                yes

                ' + assert_template_result(expected, text) + + text = '

                {% if false -%} no {%- endif %}

                ' + expected = '

                ' + assert_template_result(expected, text) + end + + def test_single_line_post_tag + text = '

                {% if true -%} yes {% endif -%}

                ' + expected = '

                yes

                ' + assert_template_result(expected, text) + + text = '

                {% if false -%} no {% endif -%}

                ' + expected = '

                ' + assert_template_result(expected, text) + end + + def test_single_line_pre_tag + text = '

                {%- if true %} yes {%- endif %}

                ' + expected = '

                yes

                ' + assert_template_result(expected, text) + + text = '

                {%- if false %} no {%- endif %}

                ' + expected = '

                ' + assert_template_result(expected, text) + end + + def test_pre_trim_output + text = <<-END_TEMPLATE +
                +

                + {{- 'John' }} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                John +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_pre_trim_tags + text = <<-END_TEMPLATE +
                +

                + {%- if true %} + yes + {%- endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + yes +

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {%- if false %} + no + {%- endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_post_trim_output + text = <<-END_TEMPLATE +
                +

                + {{ 'John' -}} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + John

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_post_trim_tags + text = <<-END_TEMPLATE +
                +

                + {% if true -%} + yes + {% endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + yes +

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {% if false -%} + no + {% endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_pre_and_post_trim_tags + text = <<-END_TEMPLATE +
                +

                + {%- if true %} + yes + {% endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + yes +

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {%- if false %} + no + {% endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_post_and_pre_trim_tags + text = <<-END_TEMPLATE +
                +

                + {% if true -%} + yes + {%- endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                + yes +

                +
                + END_EXPECTED + assert_template_result(expected, text) + + whitespace = ' ' + text = <<-END_TEMPLATE +
                +

                + {% if false -%} + no + {%- endif %} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +#{whitespace} +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_trim_output + text = <<-END_TEMPLATE +
                +

                + {{- 'John' -}} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                John

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_trim_tags + text = <<-END_TEMPLATE +
                +

                + {%- if true -%} + yes + {%- endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                yes

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {%- if false -%} + no + {%- endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_whitespace_trim_output + text = <<-END_TEMPLATE +
                +

                + {{- 'John' -}}, + {{- '30' -}} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                John,30

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_whitespace_trim_tags + text = <<-END_TEMPLATE +
                +

                + {%- if true -%} + yes + {%- endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                yes

                +
                + END_EXPECTED + assert_template_result(expected, text) + + text = <<-END_TEMPLATE +
                +

                + {%- if false -%} + no + {%- endif -%} +

                +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_complex_trim_output + text = <<-END_TEMPLATE +
                +

                + {{- 'John' -}} + {{- '30' -}} +

                + + {{ 'John' -}} + {{- '30' }} + + + {{- 'John' }} + {{ '30' -}} + +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +

                John30

                + + John30 + + John + 30 +
                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_complex_trim + text = <<-END_TEMPLATE +
                + {%- if true -%} + {%- if true -%} +

                + {{- 'John' -}} +

                + {%- endif -%} + {%- endif -%} +
                + END_TEMPLATE + expected = <<-END_EXPECTED +

                John

                + END_EXPECTED + assert_template_result(expected, text) + end + + def test_right_trim_followed_by_tag + assert_template_result('ab c', '{{ "a" -}}{{ "b" }} c') + end + + def test_raw_output + whitespace = ' ' + text = <<-END_TEMPLATE +
                + {% raw %} + {%- if true -%} +

                + {{- 'John' -}} +

                + {%- endif -%} + {% endraw %} +
                + END_TEMPLATE + expected = <<-END_EXPECTED +
                +#{whitespace} + {%- if true -%} +

                + {{- 'John' -}} +

                + {%- endif -%} +#{whitespace} +
                + END_EXPECTED + assert_template_result(expected, text) + end +end # TrimModeTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/variable_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/variable_test.rb new file mode 100644 index 0000000000..abd6e70c67 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/integration/variable_test.rb @@ -0,0 +1,96 @@ +require 'test_helper' + +class VariableTest < Minitest::Test + include Liquid + + def test_simple_variable + template = Template.parse(%({{test}})) + assert_equal 'worked', template.render!('test' => 'worked') + assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully') + end + + def test_variable_render_calls_to_liquid + assert_template_result 'foobar', '{{ foo }}', 'foo' => ThingWithToLiquid.new + end + + def test_simple_with_whitespaces + template = Template.parse(%( {{ test }} )) + assert_equal ' worked ', template.render!('test' => 'worked') + assert_equal ' worked wonderfully ', template.render!('test' => 'worked wonderfully') + end + + def test_ignore_unknown + template = Template.parse(%({{ test }})) + assert_equal '', template.render! + end + + def test_using_blank_as_variable_name + template = Template.parse("{% assign foo = blank %}{{ foo }}") + assert_equal '', template.render! + end + + def test_using_empty_as_variable_name + template = Template.parse("{% assign foo = empty %}{{ foo }}") + assert_equal '', template.render! + end + + def test_hash_scoping + template = Template.parse(%({{ test.test }})) + assert_equal 'worked', template.render!('test' => { 'test' => 'worked' }) + end + + def test_false_renders_as_false + assert_equal 'false', Template.parse("{{ foo }}").render!('foo' => false) + assert_equal 'false', Template.parse("{{ false }}").render! + end + + def test_nil_renders_as_empty_string + assert_equal '', Template.parse("{{ nil }}").render! + assert_equal 'cat', Template.parse("{{ nil | append: 'cat' }}").render! + end + + def test_preset_assigns + template = Template.parse(%({{ test }})) + template.assigns['test'] = 'worked' + assert_equal 'worked', template.render! + end + + def test_reuse_parsed_template + template = Template.parse(%({{ greeting }} {{ name }})) + template.assigns['greeting'] = 'Goodbye' + assert_equal 'Hello Tobi', template.render!('greeting' => 'Hello', 'name' => 'Tobi') + assert_equal 'Hello ', template.render!('greeting' => 'Hello', 'unknown' => 'Tobi') + assert_equal 'Hello Brian', template.render!('greeting' => 'Hello', 'name' => 'Brian') + assert_equal 'Goodbye Brian', template.render!('name' => 'Brian') + assert_equal({ 'greeting' => 'Goodbye' }, template.assigns) + end + + def test_assigns_not_polluted_from_template + template = Template.parse(%({{ test }}{% assign test = 'bar' %}{{ test }})) + template.assigns['test'] = 'baz' + assert_equal 'bazbar', template.render! + assert_equal 'bazbar', template.render! + assert_equal 'foobar', template.render!('test' => 'foo') + assert_equal 'bazbar', template.render! + end + + def test_hash_with_default_proc + template = Template.parse(%(Hello {{ test }})) + assigns = Hash.new { |h, k| raise "Unknown variable '#{k}'" } + assigns['test'] = 'Tobi' + assert_equal 'Hello Tobi', template.render!(assigns) + assigns.delete('test') + e = assert_raises(RuntimeError) do + template.render!(assigns) + end + assert_equal "Unknown variable 'test'", e.message + end + + def test_multiline_variable + assert_equal 'worked', Template.parse("{{\ntest\n}}").render!('test' => 'worked') + end + + def test_render_symbol + assert_template_result 'bar', '{{ foo }}', 'foo' => :bar + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/test_helper.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/test_helper.rb new file mode 100644 index 0000000000..ac5ab53d00 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/test_helper.rb @@ -0,0 +1,116 @@ +#!/usr/bin/env ruby + +ENV["MT_NO_EXPECTATIONS"] = "1" +require 'minitest/autorun' + +$LOAD_PATH.unshift(File.join(File.expand_path(__dir__), '..', 'lib')) +require 'liquid.rb' +require 'liquid/profiler' + +mode = :strict +if env_mode = ENV['LIQUID_PARSER_MODE'] + puts "-- #{env_mode.upcase} ERROR MODE" + mode = env_mode.to_sym +end +Liquid::Template.error_mode = mode + +if ENV['LIQUID-C'] == '1' + puts "-- LIQUID C" + require 'liquid/c' +end + +if Minitest.const_defined?('Test') + # We're on Minitest 5+. Nothing to do here. +else + # Minitest 4 doesn't have Minitest::Test yet. + Minitest::Test = MiniTest::Unit::TestCase +end + +module Minitest + class Test + def fixture(name) + File.join(File.expand_path(__dir__), "fixtures", name) + end + end + + module Assertions + include Liquid + + def assert_template_result(expected, template, assigns = {}, message = nil) + assert_equal expected, Template.parse(template).render!(assigns), message + end + + def assert_template_result_matches(expected, template, assigns = {}, message = nil) + return assert_template_result(expected, template, assigns, message) unless expected.is_a? Regexp + + assert_match expected, Template.parse(template).render!(assigns), message + end + + def assert_match_syntax_error(match, template, assigns = {}) + exception = assert_raises(Liquid::SyntaxError) do + Template.parse(template).render(assigns) + end + assert_match match, exception.message + end + + def with_global_filter(*globals) + original_global_strainer = Liquid::Strainer.class_variable_get(:@@global_strainer) + Liquid::Strainer.class_variable_set(:@@global_strainer, Class.new(Liquid::Strainer) do + @filter_methods = Set.new + end) + Liquid::Strainer.class_variable_get(:@@strainer_class_cache).clear + + globals.each do |global| + Liquid::Template.register_filter(global) + end + yield + ensure + Liquid::Strainer.class_variable_get(:@@strainer_class_cache).clear + Liquid::Strainer.class_variable_set(:@@global_strainer, original_global_strainer) + end + + def with_taint_mode(mode) + old_mode = Liquid::Template.taint_mode + Liquid::Template.taint_mode = mode + yield + ensure + Liquid::Template.taint_mode = old_mode + end + + def with_error_mode(mode) + old_mode = Liquid::Template.error_mode + Liquid::Template.error_mode = mode + yield + ensure + Liquid::Template.error_mode = old_mode + end + end +end + +class ThingWithToLiquid + def to_liquid + 'foobar' + end +end + +class ErrorDrop < Liquid::Drop + def standard_error + raise Liquid::StandardError, 'standard error' + end + + def argument_error + raise Liquid::ArgumentError, 'argument error' + end + + def syntax_error + raise Liquid::SyntaxError, 'syntax error' + end + + def runtime_error + raise 'runtime error' + end + + def exception + raise Exception, 'exception' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/block_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/block_unit_test.rb new file mode 100644 index 0000000000..6a27a7d42a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/block_unit_test.rb @@ -0,0 +1,58 @@ +require 'test_helper' + +class BlockUnitTest < Minitest::Test + include Liquid + + def test_blankspace + template = Liquid::Template.parse(" ") + assert_equal [" "], template.root.nodelist + end + + def test_variable_beginning + template = Liquid::Template.parse("{{funk}} ") + assert_equal 2, template.root.nodelist.size + assert_equal Variable, template.root.nodelist[0].class + assert_equal String, template.root.nodelist[1].class + end + + def test_variable_end + template = Liquid::Template.parse(" {{funk}}") + assert_equal 2, template.root.nodelist.size + assert_equal String, template.root.nodelist[0].class + assert_equal Variable, template.root.nodelist[1].class + end + + def test_variable_middle + template = Liquid::Template.parse(" {{funk}} ") + assert_equal 3, template.root.nodelist.size + assert_equal String, template.root.nodelist[0].class + assert_equal Variable, template.root.nodelist[1].class + assert_equal String, template.root.nodelist[2].class + end + + def test_variable_many_embedded_fragments + template = Liquid::Template.parse(" {{funk}} {{so}} {{brother}} ") + assert_equal 7, template.root.nodelist.size + assert_equal [String, Variable, String, Variable, String, Variable, String], + block_types(template.root.nodelist) + end + + def test_with_block + template = Liquid::Template.parse(" {% comment %} {% endcomment %} ") + assert_equal [String, Comment, String], block_types(template.root.nodelist) + assert_equal 3, template.root.nodelist.size + end + + def test_with_custom_tag + Liquid::Template.register_tag("testtag", Block) + assert Liquid::Template.parse("{% testtag %} {% endtesttag %}") + ensure + Liquid::Template.tags.delete('testtag') + end + + private + + def block_types(nodelist) + nodelist.collect(&:class) + end +end # VariableTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/condition_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/condition_unit_test.rb new file mode 100644 index 0000000000..5afa2b7f05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/condition_unit_test.rb @@ -0,0 +1,166 @@ +require 'test_helper' + +class ConditionUnitTest < Minitest::Test + include Liquid + + def setup + @context = Liquid::Context.new + end + + def test_basic_condition + assert_equal false, Condition.new(1, '==', 2).evaluate + assert_equal true, Condition.new(1, '==', 1).evaluate + end + + def test_default_operators_evalute_true + assert_evaluates_true 1, '==', 1 + assert_evaluates_true 1, '!=', 2 + assert_evaluates_true 1, '<>', 2 + assert_evaluates_true 1, '<', 2 + assert_evaluates_true 2, '>', 1 + assert_evaluates_true 1, '>=', 1 + assert_evaluates_true 2, '>=', 1 + assert_evaluates_true 1, '<=', 2 + assert_evaluates_true 1, '<=', 1 + # negative numbers + assert_evaluates_true 1, '>', -1 + assert_evaluates_true (-1), '<', 1 + assert_evaluates_true 1.0, '>', -1.0 + assert_evaluates_true (-1.0), '<', 1.0 + end + + def test_default_operators_evalute_false + assert_evaluates_false 1, '==', 2 + assert_evaluates_false 1, '!=', 1 + assert_evaluates_false 1, '<>', 1 + assert_evaluates_false 1, '<', 0 + assert_evaluates_false 2, '>', 4 + assert_evaluates_false 1, '>=', 3 + assert_evaluates_false 2, '>=', 4 + assert_evaluates_false 1, '<=', 0 + assert_evaluates_false 1, '<=', 0 + end + + def test_contains_works_on_strings + assert_evaluates_true 'bob', 'contains', 'o' + assert_evaluates_true 'bob', 'contains', 'b' + assert_evaluates_true 'bob', 'contains', 'bo' + assert_evaluates_true 'bob', 'contains', 'ob' + assert_evaluates_true 'bob', 'contains', 'bob' + + assert_evaluates_false 'bob', 'contains', 'bob2' + assert_evaluates_false 'bob', 'contains', 'a' + assert_evaluates_false 'bob', 'contains', '---' + end + + def test_invalid_comparation_operator + assert_evaluates_argument_error 1, '~~', 0 + end + + def test_comparation_of_int_and_str + assert_evaluates_argument_error '1', '>', 0 + assert_evaluates_argument_error '1', '<', 0 + assert_evaluates_argument_error '1', '>=', 0 + assert_evaluates_argument_error '1', '<=', 0 + end + + def test_hash_compare_backwards_compatibility + assert_nil Condition.new({}, '>', 2).evaluate + assert_nil Condition.new(2, '>', {}).evaluate + assert_equal false, Condition.new({}, '==', 2).evaluate + assert_equal true, Condition.new({ 'a' => 1 }, '==', { 'a' => 1 }).evaluate + assert_equal true, Condition.new({ 'a' => 2 }, 'contains', 'a').evaluate + end + + def test_contains_works_on_arrays + @context = Liquid::Context.new + @context['array'] = [1, 2, 3, 4, 5] + array_expr = VariableLookup.new("array") + + assert_evaluates_false array_expr, 'contains', 0 + assert_evaluates_true array_expr, 'contains', 1 + assert_evaluates_true array_expr, 'contains', 2 + assert_evaluates_true array_expr, 'contains', 3 + assert_evaluates_true array_expr, 'contains', 4 + assert_evaluates_true array_expr, 'contains', 5 + assert_evaluates_false array_expr, 'contains', 6 + assert_evaluates_false array_expr, 'contains', "1" + end + + def test_contains_returns_false_for_nil_operands + @context = Liquid::Context.new + assert_evaluates_false VariableLookup.new('not_assigned'), 'contains', '0' + assert_evaluates_false 0, 'contains', VariableLookup.new('not_assigned') + end + + def test_contains_return_false_on_wrong_data_type + assert_evaluates_false 1, 'contains', 0 + end + + def test_contains_with_string_left_operand_coerces_right_operand_to_string + assert_evaluates_true ' 1 ', 'contains', 1 + assert_evaluates_false ' 1 ', 'contains', 2 + end + + def test_or_condition + condition = Condition.new(1, '==', 2) + + assert_equal false, condition.evaluate + + condition.or Condition.new(2, '==', 1) + + assert_equal false, condition.evaluate + + condition.or Condition.new(1, '==', 1) + + assert_equal true, condition.evaluate + end + + def test_and_condition + condition = Condition.new(1, '==', 1) + + assert_equal true, condition.evaluate + + condition.and Condition.new(2, '==', 2) + + assert_equal true, condition.evaluate + + condition.and Condition.new(2, '==', 1) + + assert_equal false, condition.evaluate + end + + def test_should_allow_custom_proc_operator + Condition.operators['starts_with'] = proc { |cond, left, right| left =~ %r{^#{right}} } + + assert_evaluates_true 'bob', 'starts_with', 'b' + assert_evaluates_false 'bob', 'starts_with', 'o' + ensure + Condition.operators.delete 'starts_with' + end + + def test_left_or_right_may_contain_operators + @context = Liquid::Context.new + @context['one'] = @context['another'] = "gnomeslab-and-or-liquid" + + assert_evaluates_true VariableLookup.new("one"), '==', VariableLookup.new("another") + end + + private + + def assert_evaluates_true(left, op, right) + assert Condition.new(left, op, right).evaluate(@context), + "Evaluated false: #{left} #{op} #{right}" + end + + def assert_evaluates_false(left, op, right) + assert !Condition.new(left, op, right).evaluate(@context), + "Evaluated true: #{left} #{op} #{right}" + end + + def assert_evaluates_argument_error(left, op, right) + assert_raises(Liquid::ArgumentError) do + Condition.new(left, op, right).evaluate(@context) + end + end +end # ConditionTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/context_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/context_unit_test.rb new file mode 100644 index 0000000000..fab19b84ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/context_unit_test.rb @@ -0,0 +1,489 @@ +require 'test_helper' + +class HundredCentes + def to_liquid + 100 + end +end + +class CentsDrop < Liquid::Drop + def amount + HundredCentes.new + end + + def non_zero? + true + end +end + +class ContextSensitiveDrop < Liquid::Drop + def test + @context['test'] + end +end + +class Category < Liquid::Drop + attr_accessor :name + + def initialize(name) + @name = name + end + + def to_liquid + CategoryDrop.new(self) + end +end + +class CategoryDrop + attr_accessor :category, :context + def initialize(category) + @category = category + end +end + +class CounterDrop < Liquid::Drop + def count + @count ||= 0 + @count += 1 + end +end + +class ArrayLike + def fetch(index) + end + + def [](index) + @counts ||= [] + @counts[index] ||= 0 + @counts[index] += 1 + end + + def to_liquid + self + end +end + +class ContextUnitTest < Minitest::Test + include Liquid + + def setup + @context = Liquid::Context.new + end + + def test_variables + @context['string'] = 'string' + assert_equal 'string', @context['string'] + + @context['num'] = 5 + assert_equal 5, @context['num'] + + @context['time'] = Time.parse('2006-06-06 12:00:00') + assert_equal Time.parse('2006-06-06 12:00:00'), @context['time'] + + @context['date'] = Date.today + assert_equal Date.today, @context['date'] + + now = DateTime.now + @context['datetime'] = now + assert_equal now, @context['datetime'] + + @context['bool'] = true + assert_equal true, @context['bool'] + + @context['bool'] = false + assert_equal false, @context['bool'] + + @context['nil'] = nil + assert_nil @context['nil'] + assert_nil @context['nil'] + end + + def test_variables_not_existing + assert_nil @context['does_not_exist'] + end + + def test_scoping + @context.push + @context.pop + + assert_raises(Liquid::ContextError) do + @context.pop + end + + assert_raises(Liquid::ContextError) do + @context.push + @context.pop + @context.pop + end + end + + def test_length_query + @context['numbers'] = [1, 2, 3, 4] + + assert_equal 4, @context['numbers.size'] + + @context['numbers'] = { 1 => 1, 2 => 2, 3 => 3, 4 => 4 } + + assert_equal 4, @context['numbers.size'] + + @context['numbers'] = { 1 => 1, 2 => 2, 3 => 3, 4 => 4, 'size' => 1000 } + + assert_equal 1000, @context['numbers.size'] + end + + def test_hyphenated_variable + @context['oh-my'] = 'godz' + assert_equal 'godz', @context['oh-my'] + end + + def test_add_filter + filter = Module.new do + def hi(output) + output + ' hi!' + end + end + + context = Context.new + context.add_filters(filter) + assert_equal 'hi? hi!', context.invoke(:hi, 'hi?') + + context = Context.new + assert_equal 'hi?', context.invoke(:hi, 'hi?') + + context.add_filters(filter) + assert_equal 'hi? hi!', context.invoke(:hi, 'hi?') + end + + def test_only_intended_filters_make_it_there + filter = Module.new do + def hi(output) + output + ' hi!' + end + end + + context = Context.new + assert_equal "Wookie", context.invoke("hi", "Wookie") + + context.add_filters(filter) + assert_equal "Wookie hi!", context.invoke("hi", "Wookie") + end + + def test_add_item_in_outer_scope + @context['test'] = 'test' + @context.push + assert_equal 'test', @context['test'] + @context.pop + assert_equal 'test', @context['test'] + end + + def test_add_item_in_inner_scope + @context.push + @context['test'] = 'test' + assert_equal 'test', @context['test'] + @context.pop + assert_nil @context['test'] + end + + def test_hierachical_data + @context['hash'] = { "name" => 'tobi' } + assert_equal 'tobi', @context['hash.name'] + assert_equal 'tobi', @context['hash["name"]'] + end + + def test_keywords + assert_equal true, @context['true'] + assert_equal false, @context['false'] + end + + def test_digits + assert_equal 100, @context['100'] + assert_equal 100.00, @context['100.00'] + end + + def test_strings + assert_equal "hello!", @context['"hello!"'] + assert_equal "hello!", @context["'hello!'"] + end + + def test_merge + @context.merge({ "test" => "test" }) + assert_equal 'test', @context['test'] + @context.merge({ "test" => "newvalue", "foo" => "bar" }) + assert_equal 'newvalue', @context['test'] + assert_equal 'bar', @context['foo'] + end + + def test_array_notation + @context['test'] = [1, 2, 3, 4, 5] + + assert_equal 1, @context['test[0]'] + assert_equal 2, @context['test[1]'] + assert_equal 3, @context['test[2]'] + assert_equal 4, @context['test[3]'] + assert_equal 5, @context['test[4]'] + end + + def test_recoursive_array_notation + @context['test'] = { 'test' => [1, 2, 3, 4, 5] } + + assert_equal 1, @context['test.test[0]'] + + @context['test'] = [{ 'test' => 'worked' }] + + assert_equal 'worked', @context['test[0].test'] + end + + def test_hash_to_array_transition + @context['colors'] = { + 'Blue' => ['003366', '336699', '6699CC', '99CCFF'], + 'Green' => ['003300', '336633', '669966', '99CC99'], + 'Yellow' => ['CC9900', 'FFCC00', 'FFFF99', 'FFFFCC'], + 'Red' => ['660000', '993333', 'CC6666', 'FF9999'] + } + + assert_equal '003366', @context['colors.Blue[0]'] + assert_equal 'FF9999', @context['colors.Red[3]'] + end + + def test_try_first + @context['test'] = [1, 2, 3, 4, 5] + + assert_equal 1, @context['test.first'] + assert_equal 5, @context['test.last'] + + @context['test'] = { 'test' => [1, 2, 3, 4, 5] } + + assert_equal 1, @context['test.test.first'] + assert_equal 5, @context['test.test.last'] + + @context['test'] = [1] + assert_equal 1, @context['test.first'] + assert_equal 1, @context['test.last'] + end + + def test_access_hashes_with_hash_notation + @context['products'] = { 'count' => 5, 'tags' => ['deepsnow', 'freestyle'] } + @context['product'] = { 'variants' => [ { 'title' => 'draft151cm' }, { 'title' => 'element151cm' } ] } + + assert_equal 5, @context['products["count"]'] + assert_equal 'deepsnow', @context['products["tags"][0]'] + assert_equal 'deepsnow', @context['products["tags"].first'] + assert_equal 'draft151cm', @context['product["variants"][0]["title"]'] + assert_equal 'element151cm', @context['product["variants"][1]["title"]'] + assert_equal 'draft151cm', @context['product["variants"][0]["title"]'] + assert_equal 'element151cm', @context['product["variants"].last["title"]'] + end + + def test_access_variable_with_hash_notation + @context['foo'] = 'baz' + @context['bar'] = 'foo' + + assert_equal 'baz', @context['["foo"]'] + assert_equal 'baz', @context['[bar]'] + end + + def test_access_hashes_with_hash_access_variables + @context['var'] = 'tags' + @context['nested'] = { 'var' => 'tags' } + @context['products'] = { 'count' => 5, 'tags' => ['deepsnow', 'freestyle'] } + + assert_equal 'deepsnow', @context['products[var].first'] + assert_equal 'freestyle', @context['products[nested.var].last'] + end + + def test_hash_notation_only_for_hash_access + @context['array'] = [1, 2, 3, 4, 5] + @context['hash'] = { 'first' => 'Hello' } + + assert_equal 1, @context['array.first'] + assert_nil @context['array["first"]'] + assert_equal 'Hello', @context['hash["first"]'] + end + + def test_first_can_appear_in_middle_of_callchain + @context['product'] = { 'variants' => [ { 'title' => 'draft151cm' }, { 'title' => 'element151cm' } ] } + + assert_equal 'draft151cm', @context['product.variants[0].title'] + assert_equal 'element151cm', @context['product.variants[1].title'] + assert_equal 'draft151cm', @context['product.variants.first.title'] + assert_equal 'element151cm', @context['product.variants.last.title'] + end + + def test_cents + @context.merge("cents" => HundredCentes.new) + assert_equal 100, @context['cents'] + end + + def test_nested_cents + @context.merge("cents" => { 'amount' => HundredCentes.new }) + assert_equal 100, @context['cents.amount'] + + @context.merge("cents" => { 'cents' => { 'amount' => HundredCentes.new } }) + assert_equal 100, @context['cents.cents.amount'] + end + + def test_cents_through_drop + @context.merge("cents" => CentsDrop.new) + assert_equal 100, @context['cents.amount'] + end + + def test_nested_cents_through_drop + @context.merge("vars" => { "cents" => CentsDrop.new }) + assert_equal 100, @context['vars.cents.amount'] + end + + def test_drop_methods_with_question_marks + @context.merge("cents" => CentsDrop.new) + assert @context['cents.non_zero?'] + end + + def test_context_from_within_drop + @context.merge("test" => '123', "vars" => ContextSensitiveDrop.new) + assert_equal '123', @context['vars.test'] + end + + def test_nested_context_from_within_drop + @context.merge("test" => '123', "vars" => { "local" => ContextSensitiveDrop.new }) + assert_equal '123', @context['vars.local.test'] + end + + def test_ranges + @context.merge("test" => '5') + assert_equal (1..5), @context['(1..5)'] + assert_equal (1..5), @context['(1..test)'] + assert_equal (5..5), @context['(test..test)'] + end + + def test_cents_through_drop_nestedly + @context.merge("cents" => { "cents" => CentsDrop.new }) + assert_equal 100, @context['cents.cents.amount'] + + @context.merge("cents" => { "cents" => { "cents" => CentsDrop.new } }) + assert_equal 100, @context['cents.cents.cents.amount'] + end + + def test_drop_with_variable_called_only_once + @context['counter'] = CounterDrop.new + + assert_equal 1, @context['counter.count'] + assert_equal 2, @context['counter.count'] + assert_equal 3, @context['counter.count'] + end + + def test_drop_with_key_called_only_once + @context['counter'] = CounterDrop.new + + assert_equal 1, @context['counter["count"]'] + assert_equal 2, @context['counter["count"]'] + assert_equal 3, @context['counter["count"]'] + end + + def test_proc_as_variable + @context['dynamic'] = proc { 'Hello' } + + assert_equal 'Hello', @context['dynamic'] + end + + def test_lambda_as_variable + @context['dynamic'] = proc { 'Hello' } + + assert_equal 'Hello', @context['dynamic'] + end + + def test_nested_lambda_as_variable + @context['dynamic'] = { "lambda" => proc { 'Hello' } } + + assert_equal 'Hello', @context['dynamic.lambda'] + end + + def test_array_containing_lambda_as_variable + @context['dynamic'] = [1, 2, proc { 'Hello' }, 4, 5] + + assert_equal 'Hello', @context['dynamic[2]'] + end + + def test_lambda_is_called_once + @context['callcount'] = proc { @global ||= 0; @global += 1; @global.to_s } + + assert_equal '1', @context['callcount'] + assert_equal '1', @context['callcount'] + assert_equal '1', @context['callcount'] + + @global = nil + end + + def test_nested_lambda_is_called_once + @context['callcount'] = { "lambda" => proc { @global ||= 0; @global += 1; @global.to_s } } + + assert_equal '1', @context['callcount.lambda'] + assert_equal '1', @context['callcount.lambda'] + assert_equal '1', @context['callcount.lambda'] + + @global = nil + end + + def test_lambda_in_array_is_called_once + @context['callcount'] = [1, 2, proc { @global ||= 0; @global += 1; @global.to_s }, 4, 5] + + assert_equal '1', @context['callcount[2]'] + assert_equal '1', @context['callcount[2]'] + assert_equal '1', @context['callcount[2]'] + + @global = nil + end + + def test_access_to_context_from_proc + @context.registers[:magic] = 345392 + + @context['magic'] = proc { @context.registers[:magic] } + + assert_equal 345392, @context['magic'] + end + + def test_to_liquid_and_context_at_first_level + @context['category'] = Category.new("foobar") + assert_kind_of CategoryDrop, @context['category'] + assert_equal @context, @context['category'].context + end + + def test_interrupt_avoids_object_allocations + assert_no_object_allocations do + @context.interrupt? + end + end + + def test_context_initialization_with_a_proc_in_environment + contx = Context.new([test: ->(c) { c['poutine'] }], { test: :foo }) + + assert contx + assert_nil contx['poutine'] + end + + def test_apply_global_filter + global_filter_proc = ->(output) { "#{output} filtered" } + + context = Context.new + context.global_filter = global_filter_proc + + assert_equal 'hi filtered', context.apply_global_filter('hi') + end + + def test_apply_global_filter_when_no_global_filter_exist + context = Context.new + assert_equal 'hi', context.apply_global_filter('hi') + end + + private + + def assert_no_object_allocations + unless RUBY_ENGINE == 'ruby' + skip "stackprof needed to count object allocations" + end + require 'stackprof' + + profile = StackProf.run(mode: :object) do + yield + end + assert_equal 0, profile[:samples] + end +end # ContextTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/file_system_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/file_system_unit_test.rb new file mode 100644 index 0000000000..2c7250ba0f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/file_system_unit_test.rb @@ -0,0 +1,35 @@ +require 'test_helper' + +class FileSystemUnitTest < Minitest::Test + include Liquid + + def test_default + assert_raises(FileSystemError) do + BlankFileSystem.new.read_template_file("dummy") + end + end + + def test_local + file_system = Liquid::LocalFileSystem.new("/some/path") + assert_equal "/some/path/_mypartial.liquid", file_system.full_path("mypartial") + assert_equal "/some/path/dir/_mypartial.liquid", file_system.full_path("dir/mypartial") + + assert_raises(FileSystemError) do + file_system.full_path("../dir/mypartial") + end + + assert_raises(FileSystemError) do + file_system.full_path("/dir/../../dir/mypartial") + end + + assert_raises(FileSystemError) do + file_system.full_path("/etc/passwd") + end + end + + def test_custom_template_filename_patterns + file_system = Liquid::LocalFileSystem.new("/some/path", "%s.html") + assert_equal "/some/path/mypartial.html", file_system.full_path("mypartial") + assert_equal "/some/path/dir/mypartial.html", file_system.full_path("dir/mypartial") + end +end # FileSystemTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/i18n_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/i18n_unit_test.rb new file mode 100644 index 0000000000..b57500e3ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/i18n_unit_test.rb @@ -0,0 +1,37 @@ +require 'test_helper' + +class I18nUnitTest < Minitest::Test + include Liquid + + def setup + @i18n = I18n.new(fixture("en_locale.yml")) + end + + def test_simple_translate_string + assert_equal "less is more", @i18n.translate("simple") + end + + def test_nested_translate_string + assert_equal "something wasn't right", @i18n.translate("errors.syntax.oops") + end + + def test_single_string_interpolation + assert_equal "something different", @i18n.translate("whatever", something: "different") + end + + # def test_raises_translation_error_on_undefined_interpolation_key + # assert_raises I18n::TranslationError do + # @i18n.translate("whatever", :oopstypos => "yes") + # end + # end + + def test_raises_unknown_translation + assert_raises I18n::TranslationError do + @i18n.translate("doesnt_exist") + end + end + + def test_sets_default_path_to_en + assert_equal I18n::DEFAULT_LOCALE, I18n.new.path + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/lexer_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/lexer_unit_test.rb new file mode 100644 index 0000000000..5adcf2bddf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/lexer_unit_test.rb @@ -0,0 +1,51 @@ +require 'test_helper' + +class LexerUnitTest < Minitest::Test + include Liquid + + def test_strings + tokens = Lexer.new(%( 'this is a test""' "wat 'lol'")).tokenize + assert_equal [[:string, %('this is a test""')], [:string, %("wat 'lol'")], [:end_of_string]], tokens + end + + def test_integer + tokens = Lexer.new('hi 50').tokenize + assert_equal [[:id, 'hi'], [:number, '50'], [:end_of_string]], tokens + end + + def test_float + tokens = Lexer.new('hi 5.0').tokenize + assert_equal [[:id, 'hi'], [:number, '5.0'], [:end_of_string]], tokens + end + + def test_comparison + tokens = Lexer.new('== <> contains ').tokenize + assert_equal [[:comparison, '=='], [:comparison, '<>'], [:comparison, 'contains'], [:end_of_string]], tokens + end + + def test_specials + tokens = Lexer.new('| .:').tokenize + assert_equal [[:pipe, '|'], [:dot, '.'], [:colon, ':'], [:end_of_string]], tokens + tokens = Lexer.new('[,]').tokenize + assert_equal [[:open_square, '['], [:comma, ','], [:close_square, ']'], [:end_of_string]], tokens + end + + def test_fancy_identifiers + tokens = Lexer.new('hi five?').tokenize + assert_equal [[:id, 'hi'], [:id, 'five?'], [:end_of_string]], tokens + + tokens = Lexer.new('2foo').tokenize + assert_equal [[:number, '2'], [:id, 'foo'], [:end_of_string]], tokens + end + + def test_whitespace + tokens = Lexer.new("five|\n\t ==").tokenize + assert_equal [[:id, 'five'], [:pipe, '|'], [:comparison, '=='], [:end_of_string]], tokens + end + + def test_unexpected_character + assert_raises(SyntaxError) do + Lexer.new("%").tokenize + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/parser_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/parser_unit_test.rb new file mode 100644 index 0000000000..9f23337af0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/parser_unit_test.rb @@ -0,0 +1,82 @@ +require 'test_helper' + +class ParserUnitTest < Minitest::Test + include Liquid + + def test_consume + p = Parser.new("wat: 7") + assert_equal 'wat', p.consume(:id) + assert_equal ':', p.consume(:colon) + assert_equal '7', p.consume(:number) + end + + def test_jump + p = Parser.new("wat: 7") + p.jump(2) + assert_equal '7', p.consume(:number) + end + + def test_consume? + p = Parser.new("wat: 7") + assert_equal 'wat', p.consume?(:id) + assert_equal false, p.consume?(:dot) + assert_equal ':', p.consume(:colon) + assert_equal '7', p.consume?(:number) + end + + def test_id? + p = Parser.new("wat 6 Peter Hegemon") + assert_equal 'wat', p.id?('wat') + assert_equal false, p.id?('endgame') + assert_equal '6', p.consume(:number) + assert_equal 'Peter', p.id?('Peter') + assert_equal false, p.id?('Achilles') + end + + def test_look + p = Parser.new("wat 6 Peter Hegemon") + assert_equal true, p.look(:id) + assert_equal 'wat', p.consume(:id) + assert_equal false, p.look(:comparison) + assert_equal true, p.look(:number) + assert_equal true, p.look(:id, 1) + assert_equal false, p.look(:number, 1) + end + + def test_expressions + p = Parser.new("hi.there hi?[5].there? hi.there.bob") + assert_equal 'hi.there', p.expression + assert_equal 'hi?[5].there?', p.expression + assert_equal 'hi.there.bob', p.expression + + p = Parser.new("567 6.0 'lol' \"wut\"") + assert_equal '567', p.expression + assert_equal '6.0', p.expression + assert_equal "'lol'", p.expression + assert_equal '"wut"', p.expression + end + + def test_ranges + p = Parser.new("(5..7) (1.5..9.6) (young..old) (hi[5].wat..old)") + assert_equal '(5..7)', p.expression + assert_equal '(1.5..9.6)', p.expression + assert_equal '(young..old)', p.expression + assert_equal '(hi[5].wat..old)', p.expression + end + + def test_arguments + p = Parser.new("filter: hi.there[5], keyarg: 7") + assert_equal 'filter', p.consume(:id) + assert_equal ':', p.consume(:colon) + assert_equal 'hi.there[5]', p.argument + assert_equal ',', p.consume(:comma) + assert_equal 'keyarg: 7', p.argument + end + + def test_invalid_expression + assert_raises(SyntaxError) do + p = Parser.new("==") + p.expression + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/regexp_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/regexp_unit_test.rb new file mode 100644 index 0000000000..0821229f31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/regexp_unit_test.rb @@ -0,0 +1,44 @@ +require 'test_helper' + +class RegexpUnitTest < Minitest::Test + include Liquid + + def test_empty + assert_equal [], ''.scan(QuotedFragment) + end + + def test_quote + assert_equal ['"arg 1"'], '"arg 1"'.scan(QuotedFragment) + end + + def test_words + assert_equal ['arg1', 'arg2'], 'arg1 arg2'.scan(QuotedFragment) + end + + def test_tags + assert_equal ['', ''], ' '.scan(QuotedFragment) + assert_equal [''], ''.scan(QuotedFragment) + assert_equal ['', ''], %().scan(QuotedFragment) + end + + def test_double_quoted_words + assert_equal ['arg1', 'arg2', '"arg 3"'], 'arg1 arg2 "arg 3"'.scan(QuotedFragment) + end + + def test_single_quoted_words + assert_equal ['arg1', 'arg2', "'arg 3'"], 'arg1 arg2 \'arg 3\''.scan(QuotedFragment) + end + + def test_quoted_words_in_the_middle + assert_equal ['arg1', 'arg2', '"arg 3"', 'arg4'], 'arg1 arg2 "arg 3" arg4 '.scan(QuotedFragment) + end + + def test_variable_parser + assert_equal ['var'], 'var'.scan(VariableParser) + assert_equal ['var', 'method'], 'var.method'.scan(VariableParser) + assert_equal ['var', '[method]'], 'var[method]'.scan(VariableParser) + assert_equal ['var', '[method]', '[0]'], 'var[method][0]'.scan(VariableParser) + assert_equal ['var', '["method"]', '[0]'], 'var["method"][0]'.scan(VariableParser) + assert_equal ['var', '[method]', '[0]', 'method'], 'var[method][0].method'.scan(VariableParser) + end +end # RegexpTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/strainer_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/strainer_unit_test.rb new file mode 100644 index 0000000000..5ce2100415 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/strainer_unit_test.rb @@ -0,0 +1,164 @@ +require 'test_helper' + +class StrainerUnitTest < Minitest::Test + include Liquid + + module AccessScopeFilters + def public_filter + "public" + end + + def private_filter + "private" + end + private :private_filter + end + + Strainer.global_filter(AccessScopeFilters) + + def test_strainer + strainer = Strainer.create(nil) + assert_equal 5, strainer.invoke('size', 'input') + assert_equal "public", strainer.invoke("public_filter") + end + + def test_stainer_raises_argument_error + strainer = Strainer.create(nil) + assert_raises(Liquid::ArgumentError) do + strainer.invoke("public_filter", 1) + end + end + + def test_stainer_argument_error_contains_backtrace + strainer = Strainer.create(nil) + begin + strainer.invoke("public_filter", 1) + rescue Liquid::ArgumentError => e + assert_match( + /\ALiquid error: wrong number of arguments \((1 for 0|given 1, expected 0)\)\z/, + e.message) + assert_equal e.backtrace[0].split(':')[0], __FILE__ + end + end + + def test_strainer_only_invokes_public_filter_methods + strainer = Strainer.create(nil) + assert_equal false, strainer.class.invokable?('__test__') + assert_equal false, strainer.class.invokable?('test') + assert_equal false, strainer.class.invokable?('instance_eval') + assert_equal false, strainer.class.invokable?('__send__') + assert_equal true, strainer.class.invokable?('size') # from the standard lib + end + + def test_strainer_returns_nil_if_no_filter_method_found + strainer = Strainer.create(nil) + assert_nil strainer.invoke("private_filter") + assert_nil strainer.invoke("undef_the_filter") + end + + def test_strainer_returns_first_argument_if_no_method_and_arguments_given + strainer = Strainer.create(nil) + assert_equal "password", strainer.invoke("undef_the_method", "password") + end + + def test_strainer_only_allows_methods_defined_in_filters + strainer = Strainer.create(nil) + assert_equal "1 + 1", strainer.invoke("instance_eval", "1 + 1") + assert_equal "puts", strainer.invoke("__send__", "puts", "Hi Mom") + assert_equal "has_method?", strainer.invoke("invoke", "has_method?", "invoke") + end + + def test_strainer_uses_a_class_cache_to_avoid_method_cache_invalidation + a = Module.new + b = Module.new + strainer = Strainer.create(nil, [a, b]) + assert_kind_of Strainer, strainer + assert_kind_of a, strainer + assert_kind_of b, strainer + assert_kind_of Liquid::StandardFilters, strainer + end + + def test_add_filter_when_wrong_filter_class + c = Context.new + s = c.strainer + wrong_filter = ->(v) { v.reverse } + + assert_raises ArgumentError do + s.class.add_filter(wrong_filter) + end + end + + module PrivateMethodOverrideFilter + private + + def public_filter + "overriden as private" + end + end + + def test_add_filter_raises_when_module_privately_overrides_registered_public_methods + strainer = Context.new.strainer + + error = assert_raises(Liquid::MethodOverrideError) do + strainer.class.add_filter(PrivateMethodOverrideFilter) + end + assert_equal 'Liquid error: Filter overrides registered public methods as non public: public_filter', error.message + end + + module ProtectedMethodOverrideFilter + protected + + def public_filter + "overriden as protected" + end + end + + def test_add_filter_raises_when_module_overrides_registered_public_method_as_protected + strainer = Context.new.strainer + + error = assert_raises(Liquid::MethodOverrideError) do + strainer.class.add_filter(ProtectedMethodOverrideFilter) + end + assert_equal 'Liquid error: Filter overrides registered public methods as non public: public_filter', error.message + end + + module PublicMethodOverrideFilter + def public_filter + "public" + end + end + + def test_add_filter_does_not_raise_when_module_overrides_previously_registered_method + strainer = Context.new.strainer + strainer.class.add_filter(PublicMethodOverrideFilter) + assert strainer.class.filter_methods.include?('public_filter') + end + + module LateAddedFilter + def late_added_filter(input) + "filtered" + end + end + + def test_global_filter_clears_cache + assert_equal 'input', Strainer.create(nil).invoke('late_added_filter', 'input') + Strainer.global_filter(LateAddedFilter) + assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input') + end + + def test_add_filter_does_not_include_already_included_module + mod = Module.new do + class << self + attr_accessor :include_count + def included(mod) + self.include_count += 1 + end + end + self.include_count = 0 + end + strainer = Context.new.strainer + strainer.class.add_filter(mod) + strainer.class.add_filter(mod) + assert_equal 1, mod.include_count + end +end # StrainerTest diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tag_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tag_unit_test.rb new file mode 100644 index 0000000000..c4b901b11f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tag_unit_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +class TagUnitTest < Minitest::Test + include Liquid + + def test_tag + tag = Tag.parse('tag', "", Tokenizer.new(""), ParseContext.new) + assert_equal 'liquid::tag', tag.name + assert_equal '', tag.render(Context.new) + end + + def test_return_raw_text_of_tag + tag = Tag.parse("long_tag", "param1, param2, param3", Tokenizer.new(""), ParseContext.new) + assert_equal("long_tag param1, param2, param3", tag.raw) + end + + def test_tag_name_should_return_name_of_the_tag + tag = Tag.parse("some_tag", "", Tokenizer.new(""), ParseContext.new) + assert_equal 'some_tag', tag.tag_name + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/case_tag_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/case_tag_unit_test.rb new file mode 100644 index 0000000000..7110308171 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/case_tag_unit_test.rb @@ -0,0 +1,10 @@ +require 'test_helper' + +class CaseTagUnitTest < Minitest::Test + include Liquid + + def test_case_nodelist + template = Liquid::Template.parse('{% case var %}{% when true %}WHEN{% else %}ELSE{% endcase %}') + assert_equal ['WHEN', 'ELSE'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/for_tag_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/for_tag_unit_test.rb new file mode 100644 index 0000000000..b8fc520698 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/for_tag_unit_test.rb @@ -0,0 +1,13 @@ +require 'test_helper' + +class ForTagUnitTest < Minitest::Test + def test_for_nodelist + template = Liquid::Template.parse('{% for item in items %}FOR{% endfor %}') + assert_equal ['FOR'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten + end + + def test_for_else_nodelist + template = Liquid::Template.parse('{% for item in items %}FOR{% else %}ELSE{% endfor %}') + assert_equal ['FOR', 'ELSE'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/if_tag_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/if_tag_unit_test.rb new file mode 100644 index 0000000000..7ecfc409c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tags/if_tag_unit_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class IfTagUnitTest < Minitest::Test + def test_if_nodelist + template = Liquid::Template.parse('{% if true %}IF{% else %}ELSE{% endif %}') + assert_equal ['IF', 'ELSE'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/template_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/template_unit_test.rb new file mode 100644 index 0000000000..6328be531c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/template_unit_test.rb @@ -0,0 +1,78 @@ +require 'test_helper' + +class TemplateUnitTest < Minitest::Test + include Liquid + + def test_sets_default_localization_in_document + t = Template.new + t.parse('{%comment%}{%endcomment%}') + assert_instance_of I18n, t.root.nodelist[0].options[:locale] + end + + def test_sets_default_localization_in_context_with_quick_initialization + t = Template.new + t.parse('{%comment%}{%endcomment%}', locale: I18n.new(fixture("en_locale.yml"))) + + locale = t.root.nodelist[0].options[:locale] + assert_instance_of I18n, locale + assert_equal fixture("en_locale.yml"), locale.path + end + + def test_with_cache_classes_tags_returns_the_same_class + original_cache_setting = Liquid.cache_classes + Liquid.cache_classes = true + + original_klass = Class.new + Object.send(:const_set, :CustomTag, original_klass) + Template.register_tag('custom', CustomTag) + + Object.send(:remove_const, :CustomTag) + + new_klass = Class.new + Object.send(:const_set, :CustomTag, new_klass) + + assert Template.tags['custom'].equal?(original_klass) + ensure + Object.send(:remove_const, :CustomTag) + Template.tags.delete('custom') + Liquid.cache_classes = original_cache_setting + end + + def test_without_cache_classes_tags_reloads_the_class + original_cache_setting = Liquid.cache_classes + Liquid.cache_classes = false + + original_klass = Class.new + Object.send(:const_set, :CustomTag, original_klass) + Template.register_tag('custom', CustomTag) + + Object.send(:remove_const, :CustomTag) + + new_klass = Class.new + Object.send(:const_set, :CustomTag, new_klass) + + assert Template.tags['custom'].equal?(new_klass) + ensure + Object.send(:remove_const, :CustomTag) + Template.tags.delete('custom') + Liquid.cache_classes = original_cache_setting + end + + class FakeTag; end + + def test_tags_delete + Template.register_tag('fake', FakeTag) + assert_equal FakeTag, Template.tags['fake'] + + Template.tags.delete('fake') + assert_nil Template.tags['fake'] + end + + def test_tags_can_be_looped_over + Template.register_tag('fake', FakeTag) + result = Template.tags.map { |name, klass| [name, klass] } + assert result.include?(["fake", "TemplateUnitTest::FakeTag"]) + ensure + Template.tags.delete('fake') + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tokenizer_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tokenizer_unit_test.rb new file mode 100644 index 0000000000..de84c1fb01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/tokenizer_unit_test.rb @@ -0,0 +1,55 @@ +require 'test_helper' + +class TokenizerTest < Minitest::Test + def test_tokenize_strings + assert_equal [' '], tokenize(' ') + assert_equal ['hello world'], tokenize('hello world') + end + + def test_tokenize_variables + assert_equal ['{{funk}}'], tokenize('{{funk}}') + assert_equal [' ', '{{funk}}', ' '], tokenize(' {{funk}} ') + assert_equal [' ', '{{funk}}', ' ', '{{so}}', ' ', '{{brother}}', ' '], tokenize(' {{funk}} {{so}} {{brother}} ') + assert_equal [' ', '{{ funk }}', ' '], tokenize(' {{ funk }} ') + end + + def test_tokenize_blocks + assert_equal ['{%comment%}'], tokenize('{%comment%}') + assert_equal [' ', '{%comment%}', ' '], tokenize(' {%comment%} ') + + assert_equal [' ', '{%comment%}', ' ', '{%endcomment%}', ' '], tokenize(' {%comment%} {%endcomment%} ') + assert_equal [' ', '{% comment %}', ' ', '{% endcomment %}', ' '], tokenize(" {% comment %} {% endcomment %} ") + end + + def test_calculate_line_numbers_per_token_with_profiling + assert_equal [1], tokenize_line_numbers("{{funk}}") + assert_equal [1, 1, 1], tokenize_line_numbers(" {{funk}} ") + assert_equal [1, 2, 2], tokenize_line_numbers("\n{{funk}}\n") + assert_equal [1, 1, 3], tokenize_line_numbers(" {{\n funk \n}} ") + end + + private + + def tokenize(source) + tokenizer = Liquid::Tokenizer.new(source) + tokens = [] + while t = tokenizer.shift + tokens << t + end + tokens + end + + def tokenize_line_numbers(source) + tokenizer = Liquid::Tokenizer.new(source, true) + line_numbers = [] + loop do + line_number = tokenizer.line_number + if tokenizer.shift + line_numbers << line_number + else + break + end + end + line_numbers + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/variable_unit_test.rb b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/variable_unit_test.rb new file mode 100644 index 0000000000..5a21ace8ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/liquid-4.0.1/test/unit/variable_unit_test.rb @@ -0,0 +1,162 @@ +require 'test_helper' + +class VariableUnitTest < Minitest::Test + include Liquid + + def test_variable + var = create_variable('hello') + assert_equal VariableLookup.new('hello'), var.name + end + + def test_filters + var = create_variable('hello | textileze') + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['textileze', []]], var.filters + + var = create_variable('hello | textileze | paragraph') + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['textileze', []], ['paragraph', []]], var.filters + + var = create_variable(%( hello | strftime: '%Y')) + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['strftime', ['%Y']]], var.filters + + var = create_variable(%( 'typo' | link_to: 'Typo', true )) + assert_equal 'typo', var.name + assert_equal [['link_to', ['Typo', true]]], var.filters + + var = create_variable(%( 'typo' | link_to: 'Typo', false )) + assert_equal 'typo', var.name + assert_equal [['link_to', ['Typo', false]]], var.filters + + var = create_variable(%( 'foo' | repeat: 3 )) + assert_equal 'foo', var.name + assert_equal [['repeat', [3]]], var.filters + + var = create_variable(%( 'foo' | repeat: 3, 3 )) + assert_equal 'foo', var.name + assert_equal [['repeat', [3, 3]]], var.filters + + var = create_variable(%( 'foo' | repeat: 3, 3, 3 )) + assert_equal 'foo', var.name + assert_equal [['repeat', [3, 3, 3]]], var.filters + + var = create_variable(%( hello | strftime: '%Y, okay?')) + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['strftime', ['%Y, okay?']]], var.filters + + var = create_variable(%( hello | things: "%Y, okay?", 'the other one')) + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['things', ['%Y, okay?', 'the other one']]], var.filters + end + + def test_filter_with_date_parameter + var = create_variable(%( '2006-06-06' | date: "%m/%d/%Y")) + assert_equal '2006-06-06', var.name + assert_equal [['date', ['%m/%d/%Y']]], var.filters + end + + def test_filters_without_whitespace + var = create_variable('hello | textileze | paragraph') + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['textileze', []], ['paragraph', []]], var.filters + + var = create_variable('hello|textileze|paragraph') + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['textileze', []], ['paragraph', []]], var.filters + + var = create_variable("hello|replace:'foo','bar'|textileze") + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['replace', ['foo', 'bar']], ['textileze', []]], var.filters + end + + def test_symbol + var = create_variable("http://disney.com/logo.gif | image: 'med' ", error_mode: :lax) + assert_equal VariableLookup.new('http://disney.com/logo.gif'), var.name + assert_equal [['image', ['med']]], var.filters + end + + def test_string_to_filter + var = create_variable("'http://disney.com/logo.gif' | image: 'med' ") + assert_equal 'http://disney.com/logo.gif', var.name + assert_equal [['image', ['med']]], var.filters + end + + def test_string_single_quoted + var = create_variable(%( "hello" )) + assert_equal 'hello', var.name + end + + def test_string_double_quoted + var = create_variable(%( 'hello' )) + assert_equal 'hello', var.name + end + + def test_integer + var = create_variable(%( 1000 )) + assert_equal 1000, var.name + end + + def test_float + var = create_variable(%( 1000.01 )) + assert_equal 1000.01, var.name + end + + def test_dashes + assert_equal VariableLookup.new('foo-bar'), create_variable('foo-bar').name + assert_equal VariableLookup.new('foo-bar-2'), create_variable('foo-bar-2').name + + with_error_mode :strict do + assert_raises(Liquid::SyntaxError) { create_variable('foo - bar') } + assert_raises(Liquid::SyntaxError) { create_variable('-foo') } + assert_raises(Liquid::SyntaxError) { create_variable('2foo') } + end + end + + def test_string_with_special_chars + var = create_variable(%( 'hello! $!@.;"ddasd" ' )) + assert_equal 'hello! $!@.;"ddasd" ', var.name + end + + def test_string_dot + var = create_variable(%( test.test )) + assert_equal VariableLookup.new('test.test'), var.name + end + + def test_filter_with_keyword_arguments + var = create_variable(%( hello | things: greeting: "world", farewell: 'goodbye')) + assert_equal VariableLookup.new('hello'), var.name + assert_equal [['things', [], { 'greeting' => 'world', 'farewell' => 'goodbye' }]], var.filters + end + + def test_lax_filter_argument_parsing + var = create_variable(%( number_of_comments | pluralize: 'comment': 'comments' ), error_mode: :lax) + assert_equal VariableLookup.new('number_of_comments'), var.name + assert_equal [['pluralize', ['comment', 'comments']]], var.filters + end + + def test_strict_filter_argument_parsing + with_error_mode(:strict) do + assert_raises(SyntaxError) do + create_variable(%( number_of_comments | pluralize: 'comment': 'comments' )) + end + end + end + + def test_output_raw_source_of_variable + var = create_variable(%( name_of_variable | upcase )) + assert_equal " name_of_variable | upcase ", var.raw + end + + def test_variable_lookup_interface + lookup = VariableLookup.new('a.b.c') + assert_equal 'a', lookup.name + assert_equal ['b', 'c'], lookup.lookups + end + + private + + def create_variable(markup, options = {}) + Variable.new(markup, ParseContext.new(options)) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CHANGELOG.md new file mode 100644 index 0000000000..232adbd890 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CHANGELOG.md @@ -0,0 +1 @@ +# Moved to [GitHub releases](https://github.com/guard/listen/releases) page. diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CONTRIBUTING.md b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CONTRIBUTING.md new file mode 100644 index 0000000000..5a5d6de658 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/CONTRIBUTING.md @@ -0,0 +1,38 @@ +Contribute to Listen +=================== + +File an issue +------------- + +If you haven't already, first see [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) for known issues, solutions and workarounds. + +You can report bugs and feature requests to [GitHub Issues](https://github.com/guard/listen/issues). + +**Please don't ask question in the issue tracker**, instead ask them in our +[Google group](http://groups.google.com/group/guard-dev) or on `#guard` (irc.freenode.net). + +Try to figure out where the issue belongs to: Is it an issue with Listen itself or with Guard? + + +**It's most likely that your bug gets resolved faster if you provide as much information as possible!** + +The MOST useful information is debugging output from Listen (`LISTEN_GEM_DEBUGGING=1`) - see [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) for details. + + +Development +----------- + +* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/listen/master/frames). +* Source hosted at [GitHub](https://github.com/guard/listen). + +Pull requests are very welcome! Please try to follow these simple rules if applicable: + +* Please create a topic branch for every separate change you make. +* Make sure your patches are well tested. All specs run with `rake spec` must pass. +* Update the [Yard](http://yardoc.org/) documentation. +* Update the [README](https://github.com/guard/listen/blob/master/README.md). +* Update the [CHANGELOG](https://github.com/guard/listen/blob/master/CHANGELOG.md) for noteworthy changes. +* Please **do not change** the version number. + +For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on +`#guard` (irc.freenode.net). diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/LICENSE.txt new file mode 100644 index 0000000000..b5f71c8b7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Thibaud Guillaume-Gentil + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/README.md b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/README.md new file mode 100644 index 0000000000..268287218e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/README.md @@ -0,0 +1,297 @@ +## IMPORTANT: [Ruby 2.1 is officially outdated and unsupported!](https://www.ruby-lang.org/en/news/2016/03/30/ruby-2-1-9-released/) Please upgrade to Ruby 2.2 before installing Listen! + +### (To install for older versions, update Bundler to a prerelease version: `gem install bundler --pre` and Bundler should correctly resolve to an earlier gems for your given Ruby version). + +:exclamation: Listen is currently accepting more maintainers. Please [read this](https://github.com/guard/guard/wiki/Maintainers) if you're interested in joining the team. + +# Listen + +[![Gem Version](https://badge.fury.io/rb/listen.png)](http://badge.fury.io/rb/listen) [![Build Status](https://travis-ci.org/guard/listen.png)](https://travis-ci.org/guard/listen) [![Dependency Status](https://gemnasium.com/guard/listen.png)](https://gemnasium.com/guard/listen) [![Code Climate](https://codeclimate.com/github/guard/listen.png)](https://codeclimate.com/github/guard/listen) [![Coverage Status](https://coveralls.io/repos/guard/listen/badge.png?branch=master)](https://coveralls.io/r/guard/listen) + +The Listen gem listens to file modifications and notifies you about the changes. + +## Features + +* OS-optimized adapters on MRI for Mac OS X 10.6+, Linux, \*BSD and Windows, [more info](#listen-adapters) below. +* Detects file modification, addition and removal. +* You can watch multiple directories. +* Regexp-patterns for ignoring paths for more accuracy and speed +* Increased change detection accuracy on OS X HFS and VFAT volumes. +* Tested on selected Ruby environments via [Travis CI](https://travis-ci.org/guard/listen). (See [.travis.yml](https:///github.com/guard/listen/master/.travis.yml) for supported/tested Ruby Versions), + +## Issues / limitations + +* Limited support for symlinked directories ([#279](https://github.com/guard/listen/issues/279)): + * Symlinks are always followed ([#25](https://github.com/guard/listen/issues/25)). + * Symlinked directories pointing within a watched directory are not supported ([#273](https://github.com/guard/listen/pull/273)- see [Duplicate directory errors](https://github.com/guard/listen/wiki/Duplicate-directory-errors)). +* No directory/adapter-specific configuration options. +* Support for plugins planned for future. +* TCP functionality was removed in Listen [3.0.0](https://github.com/guard/listen/releases/tag/v3.0.0) ([#319](https://github.com/guard/listen/issues/319), [#218](https://github.com/guard/listen/issues/218)). There are plans to extract this feature to separate gems ([#258](https://github.com/guard/listen/issues/258)), until this is finished, you can use by locking the `listen` gem to version `'~> 2.10'`. +* Some filesystems won't work without polling (VM/Vagrant Shared folders, NFS, Samba, sshfs, etc.). +* Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work. +* Windows and \*BSD adapter aren't continuously and automatically tested. +* OSX adapter has some performance limitations ([#342](https://github.com/guard/listen/issues/342)). +* Ruby < 2.2.x is no longer supported - upgrade to Ruby 2.2 or 2.3 + +Pull requests or help is very welcome for these. + +## Install + +The simplest way to install Listen is to use [Bundler](http://bundler.io). + +```ruby +gem 'listen', '~> 3.0' # NOTE: for TCP functionality, use '~> 2.10' for now +``` + +## Usage + +Call `Listen.to` with either a single directory or multiple directories, then define the "changes" callback in a block. + +``` ruby +listener = Listen.to('dir/to/listen', 'dir/to/listen2') do |modified, added, removed| + puts "modified absolute path: #{modified}" + puts "added absolute path: #{added}" + puts "removed absolute path: #{removed}" +end +listener.start # not blocking +sleep +``` + +### Pause / unpause / stop + +Listeners can also be easily paused/unpaused: + +``` ruby +listener = Listen.to('dir/path/to/listen') { |modified, added, removed| puts 'handle changes here...' } + +listener.start +listener.paused? # => false +listener.processing? # => true + +listener.pause # stops processing changes (but keeps on collecting them) +listener.paused? # => true +listener.processing? # => false + +listener.unpause # resumes processing changes ("start" would do the same) +listener.stop # stop both listening to changes and processing them +``` + + Note: While paused, Listen keeps on collecting changes in the background - to clear them, call "stop" + + Note: You should keep track of all started listeners and stop them properly on finish. + +### Ignore / ignore! + +Listen ignores some directories and extensions by default (See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer), you can add ignoring patterns with the `ignore` option/method or overwrite default with `ignore!` option/method. + +``` ruby +listener = Listen.to('dir/path/to/listen', ignore: /\.txt/) { |modified, added, removed| # ... } +listener.start +listener.ignore! /\.pkg/ # overwrite all patterns and only ignore pkg extension. +listener.ignore /\.rb/ # ignore rb extension in addition of pkg. +sleep +``` + +Note: `:ignore` regexp patterns are evaluated against relative paths. + +Note: Ignoring paths does not improve performance, except when Polling ([#274](https://github.com/guard/listen/issues/274)) + +### Only + +Listen catches all files (less the ignored ones) by default. If you want to only listen to a specific type of file (i.e., just `.rb` extension), you should use the `only` option/method. + +``` ruby +listener = Listen.to('dir/path/to/listen', only: /\.rb$/) { |modified, added, removed| # ... } +listener.start +listener.only /_spec\.rb$/ # overwrite all existing only patterns. +sleep +``` + +Note: `:only` regexp patterns are evaluated only against relative **file** paths. + + +## Changes callback + +Changes to the listened-to directories gets reported back to the user in a callback. +The registered callback gets invoked, when there are changes, with **three** parameters: +`modified`, `added` and `removed` paths, in that particular order. +Paths are always returned in their absolute form. + +Example: + +```ruby +listener = Listen.to('path/to/app') do |modified, added, removed| + # This block will be called when there are changes. +end +listener.start +sleep +``` + +or ... + +```ruby +# Create a callback +callback = Proc.new do |modified, added, removed| + # This proc will be called when there are changes. +end +listener = Listen.to('dir', &callback) +listener.start +sleep +``` + +## Options + +All the following options can be set through the `Listen.to` after the directory path(s) params. + +```ruby +ignore: [%r{/foo/bar}, /\.pid$/, /\.coffee$/] # Ignore a list of paths + # default: See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer + +ignore!: %r{/foo/bar} # Same as ignore options, but overwrite default ignored paths. + +only: %r{.rb$} # Only listen to specific files + # default: none + +latency: 0.5 # Set the delay (**in seconds**) between checking for changes + # default: 0.25 sec (1.0 sec for polling) + +wait_for_delay: 4 # Set the delay (**in seconds**) between calls to the callback when changes exist + # default: 0.10 sec + +force_polling: true # Force the use of the polling adapter + # default: none + +relative: false # Whether changes should be relative to current dir or not + # default: false + +polling_fallback_message: 'custom message' # Set a custom polling fallback message (or disable it with false) + # default: "Listen will be polling for changes. Learn more at https://github.com/guard/listen#listen-adapters." +``` + +## Debugging + +Setting the environment variable `LISTEN_GEM_DEBUGGING=1` sets up the INFO level logger, while `LISTEN_GEM_DEBUGGING=2` sets up the DEBUG level logger. + +You can also set `Listen.logger` to a custom logger. + + +## Listen adapters + +The Listen gem has a set of adapters to notify it when there are changes. + +There are 4 OS-specific adapters to support Darwin, Linux, \*BSD and Windows. +These adapters are fast as they use some system-calls to implement the notifying function. + +There is also a polling adapter - although it's much slower than other adapters, +it works on every platform/system and scenario (including network filesystems such as VM shared folders). + +The Darwin and Linux adapters are dependencies of the Listen gem so they work out of the box. For other adapters a specific gem will have to be added to your Gemfile, please read below. + +The Listen gem will choose the best adapter automatically, if present. If you +want to force the use of the polling adapter, use the `:force_polling` option +while initializing the listener. + +### On Windows + +If you are on Windows, it's recommended to use the [`wdm`](https://github.com/Maher4Ever/wdm) adapter instead of polling. + +Please add the following to your Gemfile: + +```ruby +gem 'wdm', '>= 0.1.0' if Gem.win_platform? +``` + +### On \*BSD + +If you are on \*BSD you can try to use the [`rb-kqueue`](https://github.com/mat813/rb-kqueue) adapter instead of polling. + +Please add the following to your Gemfile: + +```ruby +require 'rbconfig' +if RbConfig::CONFIG['target_os'] =~ /bsd|dragonfly/i + gem 'rb-kqueue', '>= 0.2' +end + +``` + +### Getting the [polling fallback message](#options)? + +Please visit the [installation section of the Listen WIKI](https://github.com/guard/listen/wiki#installation) for more information and options for potential fixes. + +### Issues and troubleshooting + +*NOTE: without providing the output after setting the `LISTEN_GEM_DEBUGGING=1` environment variable, it can be almost impossible to guess why listen is not working as expected.* + +See [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) + +## Performance + +If Listen seems slow or unresponsive, make sure you're not using the Polling adapter (you should see a warning upon startup if you are). + +Also, if the directories you're watching contain many files, make sure you're: + +* not using Polling (ideally) +* using `:ignore` and `:only` options to avoid tracking directories you don't care about (important with Polling and on MacOS) +* running Listen with the `:latency` and `:wait_for_delay` options not too small or too big (depends on needs) +* not watching directories with log files, database files or other frequently changing files +* not using a version of Listen prior to 2.7.7 +* not getting silent crashes within Listen (see LISTEN_GEM_DEBUGGING=2) +* not running multiple instances of Listen in the background +* using a file system with atime modification disabled (ideally) +* not using a filesystem with inaccurate file modification times (ideally), e.g. HFS, VFAT +* not buffering to a slow terminal (e.g. transparency + fancy font + slow gfx card + lots of output) +* ideally not running a slow encryption stack, e.g. btrfs + ecryptfs + +When in doubt, LISTEN_GEM_DEBUGGING=2 can help discover the actual events and time they happened. + +See also [Tips and Techniques](https://github.com/guard/listen/wiki/Tips-and-Techniques). + +## Development + +* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/listen/master/frames). +* Source hosted at [GitHub](https://github.com/guard/listen). + +Pull requests are very welcome! Please try to follow these simple rules if applicable: + +* Please create a topic branch for every separate change you make. +* Make sure your patches are well tested. All specs must pass on [Travis CI](https://travis-ci.org/guard/listen). +* Update the [Yard](http://yardoc.org/) documentation. +* Update the [README](https://github.com/guard/listen/blob/master/README.md). +* Please **do not change** the version number. + +For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on +`#guard` (irc.freenode.net). + +## Acknowledgments + +* [Michael Kessler (netzpirat)][] for having written the [initial specs](https://github.com/guard/listen/commit/1e457b13b1bb8a25d2240428ce5ed488bafbed1f). +* [Travis Tilley (ttilley)][] for this awesome work on [fssm][] & [rb-fsevent][]. +* [Nathan Weizenbaum (nex3)][] for [rb-inotify][], a thorough inotify wrapper. +* [Mathieu Arnold (mat813)][] for [rb-kqueue][], a simple kqueue wrapper. +* [Maher Sallam][] for [wdm][], windows support wouldn't exist without him. +* [Yehuda Katz (wycats)][] for [vigilo][], that has been a great source of inspiration. + +## Author + +[Thibaud Guillaume-Gentil](https://github.com/thibaudgg) ([@thibaudgg](https://twitter.com/thibaudgg)) + +## Contributors + +[https://github.com/guard/listen/graphs/contributors](https://github.com/guard/listen/graphs/contributors) + +[Thibaud Guillaume-Gentil (thibaudgg)]: https://github.com/thibaudgg +[Maher Sallam]: https://github.com/Maher4Ever +[Michael Kessler (netzpirat)]: https://github.com/netzpirat +[Travis Tilley (ttilley)]: https://github.com/ttilley +[fssm]: https://github.com/ttilley/fssm +[rb-fsevent]: https://github.com/thibaudgg/rb-fsevent +[Mathieu Arnold (mat813)]: https://github.com/mat813 +[Nathan Weizenbaum (nex3)]: https://github.com/nex3 +[rb-inotify]: https://github.com/nex3/rb-inotify +[stereobooster]: https://github.com/stereobooster +[rb-fchange]: https://github.com/stereobooster/rb-fchange +[rb-kqueue]: https://github.com/mat813/rb-kqueue +[Yehuda Katz (wycats)]: https://github.com/wycats +[vigilo]: https://github.com/wycats/vigilo +[wdm]: https://github.com/Maher4Ever/wdm diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/bin/listen b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/bin/listen new file mode 100755 index 0000000000..dbbdef2416 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/bin/listen @@ -0,0 +1,12 @@ +#!/usr/bin/env ruby + +require 'listen' +require 'listen/cli' + +unless defined?(JRUBY_VERSION) + if Signal.list.keys.include?('INT') + Signal.trap('INT') { Thread.new { Listen.stop } } + end +end + +Listen::CLI.start diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen.rb new file mode 100644 index 0000000000..fc9ae3e3f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen.rb @@ -0,0 +1,57 @@ +require 'logger' +require 'listen/logger' +require 'listen/listener' + +require 'listen/internals/thread_pool' + +# Show warnings about vulnerabilities, bugs and outdated Rubies, since previous +# versions aren't tested or officially supported. +require 'ruby_dep/warning' +RubyDep::Warning.new.show_warnings + +# Always set up logging by default first time file is required +# +# NOTE: If you need to clear the logger completely, do so *after* +# requiring this file. If you need to set a custom logger, +# require the listen/logger file and set the logger before requiring +# this file. +Listen.setup_default_logger_if_unset + +# Won't print anything by default because of level - unless you've set +# LISTEN_GEM_DEBUGGING or provided your own logger with a high enough level +Listen::Logger.info "Listen loglevel set to: #{Listen.logger.level}" +Listen::Logger.info "Listen version: #{Listen::VERSION}" + +module Listen + class << self + # Listens to file system modifications on a either single directory or + # multiple directories. + # + # @param (see Listen::Listener#new) + # + # @yield [modified, added, removed] the changed files + # @yieldparam [Array] modified the list of modified files + # @yieldparam [Array] added the list of added files + # @yieldparam [Array] removed the list of removed files + # + # @return [Listen::Listener] the listener + # + def to(*args, &block) + @listeners ||= [] + Listener.new(*args, &block).tap do |listener| + @listeners << listener + end + end + + # This is used by the `listen` binary to handle Ctrl-C + # + def stop + Internals::ThreadPool.stop + @listeners ||= [] + + # TODO: should use a mutex for this + @listeners.each(&:stop) + @listeners = nil + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter.rb new file mode 100644 index 0000000000..a1954d9097 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter.rb @@ -0,0 +1,45 @@ +require 'listen/adapter/base' +require 'listen/adapter/bsd' +require 'listen/adapter/darwin' +require 'listen/adapter/linux' +require 'listen/adapter/polling' +require 'listen/adapter/windows' + +module Listen + module Adapter + OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows].freeze + POLLING_FALLBACK_MESSAGE = 'Listen will be polling for changes.'\ + 'Learn more at https://github.com/guard/listen#listen-adapters.'.freeze + + class << self + def select(options = {}) + _log :debug, 'Adapter: considering polling ...' + return Polling if options[:force_polling] + _log :debug, 'Adapter: considering optimized backend...' + return _usable_adapter_class if _usable_adapter_class + _log :debug, 'Adapter: falling back to polling...' + _warn_polling_fallback(options) + Polling + rescue + _log :warn, format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect, + $ERROR_POSITION * "\n") + raise + end + + private + + def _usable_adapter_class + OPTIMIZED_ADAPTERS.detect(&:usable?) + end + + def _warn_polling_fallback(options) + msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE) + Kernel.warn "[Listen warning]:\n #{msg}" if msg + end + + def _log(type, message) + Listen::Logger.send(type, message) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb new file mode 100644 index 0000000000..e33349a53e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb @@ -0,0 +1,141 @@ +require 'listen/options' +require 'listen/record' +require 'listen/change' + +module Listen + module Adapter + class Base + attr_reader :options + + # TODO: only used by tests + DEFAULTS = {}.freeze + + attr_reader :config + + def initialize(config) + @started = false + @config = config + + @configured = nil + + fail 'No directories to watch!' if config.directories.empty? + + defaults = self.class.const_get('DEFAULTS') + @options = Listen::Options.new(config.adapter_options, defaults) + rescue + _log_exception 'adapter config failed: %s:%s called from: %s', caller + raise + end + + # TODO: it's a separate method as a temporary workaround for tests + def configure + if @configured + _log(:warn, 'Adapter already configured!') + return + end + + @configured = true + + @callbacks ||= {} + config.directories.each do |dir| + callback = @callbacks[dir] || lambda do |event| + _process_event(dir, event) + end + @callbacks[dir] = callback + _configure(dir, &callback) + end + + @snapshots ||= {} + # TODO: separate config per directory (some day maybe) + change_config = Change::Config.new(config.queue, config.silencer) + config.directories.each do |dir| + record = Record.new(dir) + snapshot = Change.new(change_config, record) + @snapshots[dir] = snapshot + end + end + + def started? + @started + end + + def start + configure + + if started? + _log(:warn, 'Adapter already started!') + return + end + + @started = true + + calling_stack = caller.dup + Listen::Internals::ThreadPool.add do + begin + @snapshots.values.each do |snapshot| + _timed('Record.build()') { snapshot.record.build } + end + _run + rescue + msg = 'run() in thread failed: %s:\n'\ + ' %s\n\ncalled from:\n %s' + _log_exception(msg, calling_stack) + raise # for unit tests mostly + end + end + end + + def stop + _stop + end + + def self.usable? + const_get('OS_REGEXP') =~ RbConfig::CONFIG['target_os'] + end + + private + + def _stop + end + + def _timed(title) + start = Time.now.to_f + yield + diff = Time.now.to_f - start + Listen::Logger.info format('%s: %.05f seconds', title, diff) + rescue + Listen::Logger.warn "#{title} crashed: #{$ERROR_INFO.inspect}" + raise + end + + # TODO: allow backend adapters to pass specific invalidation objects + # e.g. Darwin -> DirRescan, INotify -> MoveScan, etc. + def _queue_change(type, dir, rel_path, options) + @snapshots[dir].invalidate(type, rel_path, options) + end + + def _log(*args, &block) + self.class.send(:_log, *args, &block) + end + + def _log_exception(msg, caller_stack) + formatted = format( + msg, + $ERROR_INFO, + $ERROR_POSITION * "\n", + caller_stack * "\n" + ) + + _log(:error, formatted) + end + + class << self + private + + def _log(*args, &block) + Listen::Logger.send(*args, &block) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/bsd.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/bsd.rb new file mode 100644 index 0000000000..7db424f956 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/bsd.rb @@ -0,0 +1,106 @@ +# Listener implementation for BSD's `kqueue`. +# @see http://www.freebsd.org/cgi/man.cgi?query=kqueue +# @see https://github.com/mat813/rb-kqueue/blob/master/lib/rb-kqueue/queue.rb +# +module Listen + module Adapter + class BSD < Base + OS_REGEXP = /bsd|dragonfly/i + + DEFAULTS = { + events: [ + :delete, + :write, + :extend, + :attrib, + :rename + # :link, :revoke + ] + }.freeze + + BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '') + Please add the following to your Gemfile to avoid polling for changes: + require 'rbconfig' + if RbConfig::CONFIG['target_os'] =~ /#{OS_REGEXP}/ + gem 'rb-kqueue', '>= 0.2' + end + EOS + + def self.usable? + return false unless super + require 'rb-kqueue' + require 'find' + true + rescue LoadError + Kernel.warn BUNDLER_DECLARE_GEM + false + end + + private + + def _configure(directory, &callback) + @worker ||= KQueue::Queue.new + @callback = callback + # use Record to make a snapshot of dir, so we + # can detect new files + _find(directory.to_s) { |path| _watch_file(path, @worker) } + end + + def _run + @worker.run + end + + def _process_event(dir, event) + full_path = _event_path(event) + if full_path.directory? + # Force dir content tracking to kick in, or we won't have + # names of added files + _queue_change(:dir, dir, '.', recursive: true) + elsif full_path.exist? + path = full_path.relative_path_from(dir) + _queue_change(:file, dir, path.to_s, change: _change(event.flags)) + end + + # If it is a directory, and it has a write flag, it means a + # file has been added so find out which and deal with it. + # No need to check for removed files, kqueue will forget them + # when the vfs does. + _watch_for_new_file(event) if full_path.directory? + end + + def _change(event_flags) + { modified: [:attrib, :extend], + added: [:write], + removed: [:rename, :delete] + }.each do |change, flags| + return change unless (flags & event_flags).empty? + end + nil + end + + def _event_path(event) + Pathname.new(event.watcher.path) + end + + def _watch_for_new_file(event) + queue = event.watcher.queue + _find(_event_path(event).to_s) do |file_path| + unless queue.watchers.detect { |_, v| v.path == file_path.to_s } + _watch_file(file_path, queue) + end + end + end + + def _watch_file(path, queue) + queue.watch_file(path, *options.events, &@callback) + rescue Errno::ENOENT => e + _log :warn, "kqueue: watch file failed: #{e.message}" + end + + # Quick rubocop workaround + def _find(*paths, &block) + Find.send(:find, *paths, &block) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/config.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/config.rb new file mode 100644 index 0000000000..fbd60e0991 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/config.rb @@ -0,0 +1,26 @@ +require 'pathname' + +module Listen + module Adapter + class Config + attr_reader :directories + attr_reader :silencer + attr_reader :queue + attr_reader :adapter_options + + def initialize(directories, queue, silencer, adapter_options) + # Default to current directory if no directories are supplied + directories = [Dir.pwd] if directories.to_a.empty? + + # TODO: fix (flatten, array, compact?) + @directories = directories.map do |directory| + Pathname.new(directory.to_s).realpath + end + + @silencer = silencer + @queue = queue + @adapter_options = adapter_options + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/darwin.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/darwin.rb new file mode 100644 index 0000000000..d65779f419 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/darwin.rb @@ -0,0 +1,92 @@ +require 'thread' +require 'listen/internals/thread_pool' + +module Listen + module Adapter + # Adapter implementation for Mac OS X `FSEvents`. + # + class Darwin < Base + OS_REGEXP = /darwin(?1\d+)/i + + # The default delay between checking for changes. + DEFAULTS = { latency: 0.1 }.freeze + + INCOMPATIBLE_GEM_VERSION = <<-EOS.gsub(/^ {8}/, '') + rb-fsevent > 0.9.4 no longer supports OS X 10.6 through 10.8. + + Please add the following to your Gemfile to avoid polling for changes: + require 'rbconfig' + if RbConfig::CONFIG['target_os'] =~ /darwin(1[0-3])/i + gem 'rb-fsevent', '<= 0.9.4' + end + EOS + + def self.usable? + require 'rb-fsevent' + version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version] + return false unless version + return true if version.to_i >= 13 # darwin13 is OS X 10.9 + + fsevent_version = Gem::Version.new(FSEvent::VERSION) + return true if fsevent_version <= Gem::Version.new('0.9.4') + Kernel.warn INCOMPATIBLE_GEM_VERSION + false + end + + private + + # NOTE: each directory gets a DIFFERENT callback! + def _configure(dir, &callback) + opts = { latency: options.latency } + + @workers ||= ::Queue.new + @workers << FSEvent.new.tap do |worker| + _log :debug, "fsevent: watching: #{dir.to_s.inspect}" + worker.watch(dir.to_s, opts, &callback) + end + end + + def _run + first = @workers.pop + + # NOTE: _run is called within a thread, so run every other + # worker in it's own thread + _run_workers_in_background(_to_array(@workers)) + _run_worker(first) + end + + def _process_event(dir, event) + _log :debug, "fsevent: processing event: #{event.inspect}" + event.each do |path| + new_path = Pathname.new(path.sub(%r{\/$}, '')) + _log :debug, "fsevent: #{new_path}" + # TODO: does this preserve symlinks? + rel_path = new_path.relative_path_from(dir).to_s + _queue_change(:dir, dir, rel_path, recursive: true) + end + end + + def _run_worker(worker) + _log :debug, "fsevent: running worker: #{worker.inspect}" + worker.run + rescue + format_string = 'fsevent: running worker failed: %s:%s called from: %s' + _log_exception format_string, caller + end + + def _run_workers_in_background(workers) + workers.each do |worker| + # NOTE: while passing local variables to the block below is not + # thread safe, using 'worker' from the enumerator above is ok + Listen::Internals::ThreadPool.add { _run_worker(worker) } + end + end + + def _to_array(queue) + workers = [] + workers << queue.pop until queue.empty? + workers + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/linux.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/linux.rb new file mode 100644 index 0000000000..c1ddf736b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/linux.rb @@ -0,0 +1,106 @@ +module Listen + module Adapter + # @see https://github.com/nex3/rb-inotify + class Linux < Base + OS_REGEXP = /linux/i + + DEFAULTS = { + events: [ + :recursive, + :attrib, + :create, + :delete, + :move, + :close_write + ], + wait_for_delay: 0.1 + }.freeze + + private + + WIKI_URL = 'https://github.com/guard/listen'\ + '/wiki/Increasing-the-amount-of-inotify-watchers'.freeze + + INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '') + FATAL: Listen error: unable to monitor directories for changes. + Visit #{WIKI_URL} for info on how to fix this. + EOS + + def _configure(directory, &callback) + require 'rb-inotify' + @worker ||= ::INotify::Notifier.new + @worker.watch(directory.to_s, *options.events, &callback) + rescue Errno::ENOSPC + abort(INOTIFY_LIMIT_MESSAGE) + end + + def _run + Thread.current[:listen_blocking_read_thread] = true + @worker.run + Thread.current[:listen_blocking_read_thread] = false + end + + def _process_event(dir, event) + # NOTE: avoid using event.absolute_name since new API + # will need to have a custom recursion implemented + # to properly match events to configured directories + path = Pathname.new(event.watcher.path) + event.name + rel_path = path.relative_path_from(dir).to_s + + _log(:debug) { "inotify: #{rel_path} (#{event.flags.inspect})" } + + if /1|true/ =~ ENV['LISTEN_GEM_SIMULATE_FSEVENT'] + if (event.flags & [:moved_to, :moved_from]) || _dir_event?(event) + rel_path = path.dirname.relative_path_from(dir).to_s + end + _queue_change(:dir, dir, rel_path, {}) + return + end + + return if _skip_event?(event) + + cookie_params = event.cookie.zero? ? {} : { cookie: event.cookie } + + # Note: don't pass options to force rescanning the directory, so we can + # detect moving/deleting a whole tree + if _dir_event?(event) + _queue_change(:dir, dir, rel_path, cookie_params) + return + end + + params = cookie_params.merge(change: _change(event.flags)) + + _queue_change(:file, dir, rel_path, params) + end + + def _skip_event?(event) + # Event on root directory + return true if event.name == '' + # INotify reports changes to files inside directories as events + # on the directories themselves too. + # + # @see http://linux.die.net/man/7/inotify + _dir_event?(event) && (event.flags & [:close, :modify]).any? + end + + def _change(event_flags) + { modified: [:attrib, :close_write], + moved_to: [:moved_to], + moved_from: [:moved_from], + added: [:create], + removed: [:delete] }.each do |change, flags| + return change unless (flags & event_flags).empty? + end + nil + end + + def _dir_event?(event) + event.flags.include?(:isdir) + end + + def _stop + @worker && @worker.close + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/polling.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/polling.rb new file mode 100644 index 0000000000..486eafe4ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/polling.rb @@ -0,0 +1,37 @@ +module Listen + module Adapter + # Polling Adapter that works cross-platform and + # has no dependencies. This is the adapter that + # uses the most CPU processing power and has higher + # file IO than the other implementations. + # + class Polling < Base + OS_REGEXP = // # match every OS + + DEFAULTS = { latency: 1.0, wait_for_delay: 0.05 }.freeze + + private + + def _configure(_, &callback) + @polling_callbacks ||= [] + @polling_callbacks << callback + end + + def _run + loop do + start = Time.now.to_f + @polling_callbacks.each do |callback| + callback.call(nil) + nap_time = options.latency - (Time.now.to_f - start) + # TODO: warn if nap_time is negative (polling too slow) + sleep(nap_time) if nap_time > 0 + end + end + end + + def _process_event(dir, _) + _queue_change(:dir, dir, '.', recursive: true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/windows.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/windows.rb new file mode 100644 index 0000000000..35dcca7bb6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/adapter/windows.rb @@ -0,0 +1,98 @@ +module Listen + module Adapter + # Adapter implementation for Windows `wdm`. + # + class Windows < Base + OS_REGEXP = /mswin|mingw|cygwin/i + + BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '') + Please add the following to your Gemfile to avoid polling for changes: + gem 'wdm', '>= 0.1.0' if Gem.win_platform? + EOS + + def self.usable? + return false unless super + require 'wdm' + true + rescue LoadError + _log :debug, format('wdm - load failed: %s:%s', $ERROR_INFO, + $ERROR_POSITION * "\n") + + Kernel.warn BUNDLER_DECLARE_GEM + false + end + + private + + def _configure(dir) + require 'wdm' + _log :debug, 'wdm - starting...' + @worker ||= WDM::Monitor.new + @worker.watch_recursively(dir.to_s, :files) do |change| + yield([:file, change]) + end + + @worker.watch_recursively(dir.to_s, :directories) do |change| + yield([:dir, change]) + end + + events = [:attributes, :last_write] + @worker.watch_recursively(dir.to_s, *events) do |change| + yield([:attr, change]) + end + end + + def _run + @worker.run! + end + + def _process_event(dir, event) + _log :debug, "wdm - callback: #{event.inspect}" + + type, change = event + + full_path = Pathname(change.path) + + rel_path = full_path.relative_path_from(dir).to_s + + options = { change: _change(change.type) } + + case type + when :file + _queue_change(:file, dir, rel_path, options) + when :attr + unless full_path.directory? + _queue_change(:file, dir, rel_path, options) + end + when :dir + if change.type == :removed + # TODO: check if watched dir? + _queue_change(:dir, dir, Pathname(rel_path).dirname.to_s, {}) + elsif change.type == :added + _queue_change(:dir, dir, rel_path, {}) + # do nothing - changed directory means either: + # - removed subdirs (handled above) + # - added subdirs (handled above) + # - removed files (handled by _file_callback) + # - added files (handled by _file_callback) + # so what's left? + end + end + rescue + details = event.inspect + _log :error, format('wdm - callback (%s): %s:%s', details, $ERROR_INFO, + $ERROR_POSITION * "\n") + raise + end + + def _change(type) + { modified: [:modified, :attrib], # TODO: is attrib really passed? + added: [:added, :renamed_new_file], + removed: [:removed, :renamed_old_file] }.each do |change, types| + return change if types.include?(type) + end + nil + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/backend.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/backend.rb new file mode 100644 index 0000000000..ff254953af --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/backend.rb @@ -0,0 +1,38 @@ +require 'listen/adapter' +require 'listen/adapter/base' +require 'listen/adapter/config' + +require 'forwardable' + +# This class just aggregates configuration object to avoid Listener specs +# from exploding with huge test setup blocks +module Listen + class Backend + extend Forwardable + + def initialize(directories, queue, silencer, config) + adapter_select_opts = config.adapter_select_options + + adapter_class = Adapter.select(adapter_select_opts) + + # Use default from adapter if possible + @min_delay_between_events = config.min_delay_between_events + @min_delay_between_events ||= adapter_class::DEFAULTS[:wait_for_delay] + @min_delay_between_events ||= 0.1 + + adapter_opts = config.adapter_instance_options(adapter_class) + + aconfig = Adapter::Config.new(directories, queue, silencer, adapter_opts) + @adapter = adapter_class.new(aconfig) + end + + delegate start: :adapter + delegate stop: :adapter + + attr_reader :min_delay_between_events + + private + + attr_reader :adapter + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/change.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/change.rb new file mode 100644 index 0000000000..3d49c79e00 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/change.rb @@ -0,0 +1,76 @@ +require 'listen/file' +require 'listen/directory' + +module Listen + # TODO: rename to Snapshot + class Change + # TODO: test this class for coverage + class Config + def initialize(queue, silencer) + @queue = queue + @silencer = silencer + end + + def silenced?(path, type) + @silencer.silenced?(Pathname(path), type) + end + + def queue(*args) + @queue << args + end + end + + attr_reader :record + + def initialize(config, record) + @config = config + @record = record + end + + # Invalidate some part of the snapshot/record (dir, file, subtree, etc.) + def invalidate(type, rel_path, options) + watched_dir = Pathname.new(record.root) + + change = options[:change] + cookie = options[:cookie] + + if !cookie && config.silenced?(rel_path, type) + Listen::Logger.debug { "(silenced): #{rel_path.inspect}" } + return + end + + path = watched_dir + rel_path + + Listen::Logger.debug do + log_details = options[:silence] && 'recording' || change || 'unknown' + "#{log_details}: #{type}:#{path} (#{options.inspect})" + end + + if change + options = cookie ? { cookie: cookie } : {} + config.queue(type, change, watched_dir, rel_path, options) + elsif type == :dir + # NOTE: POSSIBLE RECURSION + # TODO: fix - use a queue instead + Directory.scan(self, rel_path, options) + else + change = File.change(record, rel_path) + return if !change || options[:silence] + config.queue(:file, change, watched_dir, rel_path) + end + rescue RuntimeError => ex + msg = format( + '%s#%s crashed %s:%s', + self.class, + __method__, + exinspect, + ex.backtrace * "\n") + Listen::Logger.error(msg) + raise + end + + private + + attr_reader :config + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/cli.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/cli.rb new file mode 100644 index 0000000000..851f063ceb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/cli.rb @@ -0,0 +1,65 @@ +require 'thor' +require 'listen' +require 'logger' + +module Listen + class CLI < Thor + default_task :start + + desc 'start', 'Starts Listen' + + class_option :verbose, + type: :boolean, + default: false, + aliases: '-v', + banner: 'Verbose' + + class_option :directory, + type: :array, + default: '.', + aliases: '-d', + banner: 'The directory to listen to' + + class_option :relative, + type: :boolean, + default: false, + aliases: '-r', + banner: 'Convert paths relative to current directory' + + def start + Listen::Forwarder.new(options).start + end + end + + class Forwarder + attr_reader :logger + def initialize(options) + @options = options + @logger = ::Logger.new(STDOUT) + @logger.level = ::Logger::INFO + @logger.formatter = proc { |_, _, _, msg| "#{msg}\n" } + end + + def start + logger.info 'Starting listen...' + directory = @options[:directory] + relative = @options[:relative] + callback = proc do |modified, added, removed| + if @options[:verbose] + logger.info "+ #{added}" unless added.empty? + logger.info "- #{removed}" unless removed.empty? + logger.info "> #{modified}" unless modified.empty? + end + end + + listener = Listen.to( + directory, + relative: relative, + &callback) + + listener.start + + sleep 0.5 while listener.processing? + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/directory.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/directory.rb new file mode 100644 index 0000000000..873a722343 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/directory.rb @@ -0,0 +1,87 @@ +require 'set' + +module Listen + # TODO: refactor (turn it into a normal object, cache the stat, etc) + class Directory + def self.scan(snapshot, rel_path, options) + record = snapshot.record + dir = Pathname.new(record.root) + previous = record.dir_entries(rel_path) + + record.add_dir(rel_path) + + # TODO: use children(with_directory: false) + path = dir + rel_path + current = Set.new(_children(path)) + + Listen::Logger.debug do + format('%s: %s(%s): %s -> %s', + (options[:silence] ? 'Recording' : 'Scanning'), + rel_path, options.inspect, previous.inspect, current.inspect) + end + + begin + current.each do |full_path| + type = ::File.lstat(full_path.to_s).directory? ? :dir : :file + item_rel_path = full_path.relative_path_from(dir).to_s + _change(snapshot, type, item_rel_path, options) + end + rescue Errno::ENOENT + # The directory changed meanwhile, so rescan it + current = Set.new(_children(path)) + retry + end + + # TODO: this is not tested properly + previous = previous.reject { |entry, _| current.include? path + entry } + + _async_changes(snapshot, Pathname.new(rel_path), previous, options) + + rescue Errno::ENOENT, Errno::EHOSTDOWN + record.unset_path(rel_path) + _async_changes(snapshot, Pathname.new(rel_path), previous, options) + + rescue Errno::ENOTDIR + # TODO: path not tested + record.unset_path(rel_path) + _async_changes(snapshot, path, previous, options) + _change(snapshot, :file, rel_path, options) + rescue + Listen::Logger.warn do + format('scan DIED: %s:%s', $ERROR_INFO, $ERROR_POSITION * "\n") + end + raise + end + + def self._async_changes(snapshot, path, previous, options) + fail "Not a Pathname: #{path.inspect}" unless path.respond_to?(:children) + previous.each do |entry, data| + # TODO: this is a hack with insufficient testing + type = data.key?(:mtime) ? :file : :dir + rel_path_s = (path + entry).to_s + _change(snapshot, type, rel_path_s, options) + end + end + + def self._change(snapshot, type, path, options) + return snapshot.invalidate(type, path, options) if type == :dir + + # Minor param cleanup for tests + # TODO: use a dedicated Event class + opts = options.dup + opts.delete(:recursive) + snapshot.invalidate(type, path, opts) + end + + def self._children(path) + return path.children unless RUBY_ENGINE == 'jruby' + + # JRuby inconsistency workaround, see: + # https://github.com/jruby/jruby/issues/3840 + exists = path.exist? + directory = path.directory? + return path.children unless exists && !directory + raise Errno::ENOTDIR, path.to_s + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/config.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/config.rb new file mode 100644 index 0000000000..d49a8f2505 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/config.rb @@ -0,0 +1,55 @@ +module Listen + module Event + class Config + def initialize( + listener, + event_queue, + queue_optimizer, + wait_for_delay, + &block) + + @listener = listener + @event_queue = event_queue + @queue_optimizer = queue_optimizer + @min_delay_between_events = wait_for_delay + @block = block + end + + def sleep(*args) + Kernel.sleep(*args) + end + + def call(*args) + @block.call(*args) if @block + end + + def timestamp + Time.now.to_f + end + + attr_reader :event_queue + + def callable? + @block + end + + def optimize_changes(changes) + @queue_optimizer.smoosh_changes(changes) + end + + attr_reader :min_delay_between_events + + def stopped? + listener.state == :stopped + end + + def paused? + listener.state == :paused + end + + private + + attr_reader :listener + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/loop.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/loop.rb new file mode 100644 index 0000000000..008dbfb7e3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/loop.rb @@ -0,0 +1,117 @@ +require 'thread' + +require 'timeout' +require 'listen/event/processor' + +module Listen + module Event + class Loop + class Error < RuntimeError + class NotStarted < Error + end + end + + def initialize(config) + @config = config + @wait_thread = nil + @state = :paused + @reasons = ::Queue.new + end + + def wakeup_on_event + return if stopped? + return unless processing? + return unless wait_thread.alive? + _wakeup(:event) + end + + def paused? + wait_thread && state == :paused + end + + def processing? + return false if stopped? + return false if paused? + state == :processing + end + + def setup + # TODO: use a Fiber instead? + q = ::Queue.new + @wait_thread = Internals::ThreadPool.add do + _wait_for_changes(q, config) + end + + Listen::Logger.debug('Waiting for processing to start...') + Timeout.timeout(5) { q.pop } + end + + def resume + fail Error::NotStarted if stopped? + return unless wait_thread + _wakeup(:resume) + end + + def pause + # TODO: works? + # fail NotImplementedError + end + + def teardown + return unless wait_thread + if wait_thread.alive? + _wakeup(:teardown) + wait_thread.join + end + @wait_thread = nil + end + + def stopped? + !wait_thread + end + + private + + attr_reader :config + attr_reader :wait_thread + + attr_accessor :state + + def _wait_for_changes(ready_queue, config) + processor = Event::Processor.new(config, @reasons) + + _wait_until_resumed(ready_queue) + processor.loop_for(config.min_delay_between_events) + rescue StandardError => ex + _nice_error(ex) + end + + def _sleep(*args) + Kernel.sleep(*args) + end + + def _wait_until_resumed(ready_queue) + self.state = :paused + ready_queue << :ready + sleep + self.state = :processing + end + + def _nice_error(ex) + indent = "\n -- " + msg = format( + 'exception while processing events: %s Backtrace:%s%s', + ex, + indent, + ex.backtrace * indent + ) + Listen::Logger.error(msg) + end + + def _wakeup(reason) + @reasons << reason + wait_thread.wakeup + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/processor.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/processor.rb new file mode 100644 index 0000000000..ab492e73ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/processor.rb @@ -0,0 +1,122 @@ +module Listen + module Event + class Processor + def initialize(config, reasons) + @config = config + @reasons = reasons + _reset_no_unprocessed_events + end + + # TODO: implement this properly instead of checking the state at arbitrary + # points in time + def loop_for(latency) + @latency = latency + + loop do + _wait_until_events + _wait_until_events_calm_down + _wait_until_no_longer_paused + _process_changes + end + rescue Stopped + Listen::Logger.debug('Processing stopped') + end + + private + + class Stopped < RuntimeError + end + + def _wait_until_events_calm_down + loop do + now = _timestamp + + # Assure there's at least latency between callbacks to allow + # for accumulating changes + diff = _deadline - now + break if diff <= 0 + + # give events a bit of time to accumulate so they can be + # compressed/optimized + _sleep(:waiting_until_latency, diff) + end + end + + def _wait_until_no_longer_paused + # TODO: may not be a good idea? + _sleep(:waiting_for_unpause) while config.paused? + end + + def _check_stopped + return unless config.stopped? + + _flush_wakeup_reasons + raise Stopped + end + + def _sleep(_local_reason, *args) + _check_stopped + sleep_duration = config.sleep(*args) + _check_stopped + + _flush_wakeup_reasons do |reason| + next unless reason == :event + _remember_time_of_first_unprocessed_event unless config.paused? + end + + sleep_duration + end + + def _remember_time_of_first_unprocessed_event + @first_unprocessed_event_time ||= _timestamp + end + + def _reset_no_unprocessed_events + @first_unprocessed_event_time = nil + end + + def _deadline + @first_unprocessed_event_time + @latency + end + + def _wait_until_events + # TODO: long sleep may not be a good idea? + _sleep(:waiting_for_events) while config.event_queue.empty? + @first_unprocessed_event_time ||= _timestamp + end + + def _flush_wakeup_reasons + reasons = @reasons + until reasons.empty? + reason = reasons.pop + yield reason if block_given? + end + end + + def _timestamp + config.timestamp + end + + # for easier testing without sleep loop + def _process_changes + _reset_no_unprocessed_events + + changes = [] + changes << config.event_queue.pop until config.event_queue.empty? + + callable = config.callable? + return unless callable + + hash = config.optimize_changes(changes) + result = [hash[:modified], hash[:added], hash[:removed]] + return if result.all?(&:empty?) + + block_start = _timestamp + config.call(*result) + Listen::Logger.debug "Callback took #{_timestamp - block_start} sec" + end + + attr_reader :config + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/queue.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/queue.rb new file mode 100644 index 0000000000..9daf175cf5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/event/queue.rb @@ -0,0 +1,55 @@ +require 'thread' + +require 'forwardable' + +module Listen + module Event + class Queue + extend Forwardable + + class Config + def initialize(relative) + @relative = relative + end + + def relative? + @relative + end + end + + def initialize(config, &block) + @event_queue = ::Queue.new + @block = block + @config = config + end + + def <<(args) + type, change, dir, path, options = *args + fail "Invalid type: #{type.inspect}" unless [:dir, :file].include? type + fail "Invalid change: #{change.inspect}" unless change.is_a?(Symbol) + fail "Invalid path: #{path.inspect}" unless path.is_a?(String) + + dir = _safe_relative_from_cwd(dir) + event_queue.public_send(:<<, [type, change, dir, path, options]) + + block.call(args) if block + end + + delegate empty?: :event_queue + delegate pop: :event_queue + + private + + attr_reader :event_queue + attr_reader :block + attr_reader :config + + def _safe_relative_from_cwd(dir) + return dir unless config.relative? + dir.relative_path_from(Pathname.pwd) + rescue ArgumentError + dir + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/file.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/file.rb new file mode 100644 index 0000000000..32fc6c3905 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/file.rb @@ -0,0 +1,80 @@ +require 'digest/md5' + +module Listen + class File + def self.change(record, rel_path) + path = Pathname.new(record.root) + rel_path + lstat = path.lstat + + data = { mtime: lstat.mtime.to_f, mode: lstat.mode } + + record_data = record.file_data(rel_path) + + if record_data.empty? + record.update_file(rel_path, data) + return :added + end + + if data[:mode] != record_data[:mode] + record.update_file(rel_path, data) + return :modified + end + + if data[:mtime] != record_data[:mtime] + record.update_file(rel_path, data) + return :modified + end + + return if /1|true/ =~ ENV['LISTEN_GEM_DISABLE_HASHING'] + return unless inaccurate_mac_time?(lstat) + + # Check if change happened within 1 second (maybe it's even + # too much, e.g. 0.3-0.5 could be sufficient). + # + # With rb-fsevent, there's a (configurable) latency between + # when file was changed and when the event was triggered. + # + # If a file is saved at ???14.998, by the time the event is + # actually received by Listen, the time could already be e.g. + # ???15.7. + # + # And since Darwin adapter uses directory scanning, the file + # mtime may be the same (e.g. file was changed at ???14.001, + # then at ???14.998, but the fstat time would be ???14.0 in + # both cases). + # + # If change happend at ???14.999997, the mtime is 14.0, so for + # an mtime=???14.0 we assume it could even be almost ???15.0 + # + # So if Time.now.to_f is ???15.999998 and stat reports mtime + # at ???14.0, then event was due to that file'd change when: + # + # ???15.999997 - ???14.999998 < 1.0s + # + # So the "2" is "1 + 1" (1s to cover rb-fsevent latency + + # 1s maximum difference between real mtime and that recorded + # in the file system) + # + return if data[:mtime].to_i + 2 <= Time.now.to_f + + md5 = Digest::MD5.file(path).digest + record.update_file(rel_path, data.merge(md5: md5)) + :modified if record_data[:md5] && md5 != record_data[:md5] + rescue SystemCallError + record.unset_path(rel_path) + :removed + rescue + Listen::Logger.debug "lstat failed for: #{rel_path} (#{$ERROR_INFO})" + raise + end + + def self.inaccurate_mac_time?(stat) + # 'mac' means Modified/Accessed/Created + + # Since precision depends on mounted FS (e.g. you can have a FAT partiion + # mounted on Linux), check for fields with a remainder to detect this + + [stat.mtime, stat.ctime, stat.atime].map(&:usec).all?(&:zero?) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/fsm.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/fsm.rb new file mode 100644 index 0000000000..882cc00a06 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/fsm.rb @@ -0,0 +1,132 @@ +# Code copied from https://github.com/celluloid/celluloid-fsm +module Listen + module FSM + DEFAULT_STATE = :default # Default state name unless one is explicitly set + + # Included hook to extend class methods + def self.included(klass) + klass.send :extend, ClassMethods + end + + module ClassMethods + # Obtain or set the default state + # Passing a state name sets the default state + def default_state(new_default = nil) + if new_default + @default_state = new_default.to_sym + else + defined?(@default_state) ? @default_state : DEFAULT_STATE + end + end + + # Obtain the valid states for this FSM + def states + @states ||= {} + end + + # Declare an FSM state and optionally provide a callback block to fire + # Options: + # * to: a state or array of states this state can transition to + def state(*args, &block) + if args.last.is_a? Hash + # Stringify keys :/ + options = args.pop.each_with_object({}) { |(k, v), h| h[k.to_s] = v } + else + options = {} + end + + args.each do |name| + name = name.to_sym + default_state name if options['default'] + states[name] = State.new(name, options['to'], &block) + end + end + end + + # Be kind and call super if you must redefine initialize + def initialize + @state = self.class.default_state + end + + # Obtain the current state of the FSM + attr_reader :state + + def transition(state_name) + new_state = validate_and_sanitize_new_state(state_name) + return unless new_state + transition_with_callbacks!(new_state) + end + + # Immediate state transition with no checks, or callbacks. "Dangerous!" + def transition!(state_name) + @state = state_name + end + + protected + + def validate_and_sanitize_new_state(state_name) + state_name = state_name.to_sym + + return if current_state_name == state_name + + if current_state && !current_state.valid_transition?(state_name) + valid = current_state.transitions.map(&:to_s).join(', ') + msg = "#{self.class} can't change state from '#{@state}'"\ + " to '#{state_name}', only to: #{valid}" + fail ArgumentError, msg + end + + new_state = states[state_name] + + unless new_state + return if state_name == default_state + fail ArgumentError, "invalid state for #{self.class}: #{state_name}" + end + + new_state + end + + def transition_with_callbacks!(state_name) + transition! state_name.name + state_name.call(self) + end + + def states + self.class.states + end + + def default_state + self.class.default_state + end + + def current_state + states[@state] + end + + def current_state_name + current_state && current_state.name || '' + end + + class State + attr_reader :name, :transitions + + def initialize(name, transitions = nil, &block) + @name = name + @block = block + @transitions = nil + @transitions = Array(transitions).map(&:to_sym) if transitions + end + + def call(obj) + obj.instance_eval(&@block) if @block + end + + def valid_transition?(new_state) + # All transitions are allowed unless expressly + return true unless @transitions + + @transitions.include? new_state.to_sym + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb new file mode 100644 index 0000000000..e112d90a73 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb @@ -0,0 +1,29 @@ +module Listen + # @private api + module Internals + module ThreadPool + def self.add(&block) + Thread.new { block.call }.tap do |th| + (@threads ||= Queue.new) << th + end + end + + def self.stop + return unless @threads ||= nil + return if @threads.empty? # return to avoid using possibly stubbed Queue + + killed = Queue.new + # You can't kill a read on a descriptor in JRuby, so let's just + # ignore running threads (listen rb-inotify waiting for disk activity + # before closing) pray threads die faster than they are created... + limit = RUBY_ENGINE == 'jruby' ? [1] : [] + + killed << @threads.pop.kill until @threads.empty? + until killed.empty? + th = killed.pop + th.join(*limit) unless th[:listen_blocking_read_thread] + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener.rb new file mode 100644 index 0000000000..e0fe656d24 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener.rb @@ -0,0 +1,133 @@ +require 'English' + +require 'listen/version' + +require 'listen/backend' + +require 'listen/silencer' +require 'listen/silencer/controller' + +require 'listen/queue_optimizer' + +require 'listen/fsm' + +require 'listen/event/loop' +require 'listen/event/queue' +require 'listen/event/config' + +require 'listen/listener/config' + +module Listen + class Listener + # TODO: move the state machine's methods private + include Listen::FSM + + # Initializes the directories listener. + # + # @param [String] directory the directories to listen to + # @param [Hash] options the listen options (see Listen::Listener::Options) + # + # @yield [modified, added, removed] the changed files + # @yieldparam [Array] modified the list of modified files + # @yieldparam [Array] added the list of added files + # @yieldparam [Array] removed the list of removed files + # + def initialize(*dirs, &block) + options = dirs.last.is_a?(Hash) ? dirs.pop : {} + + @config = Config.new(options) + + eq_config = Event::Queue::Config.new(@config.relative?) + queue = Event::Queue.new(eq_config) { @processor.wakeup_on_event } + + silencer = Silencer.new + rules = @config.silencer_rules + @silencer_controller = Silencer::Controller.new(silencer, rules) + + @backend = Backend.new(dirs, queue, silencer, @config) + + optimizer_config = QueueOptimizer::Config.new(@backend, silencer) + + pconfig = Event::Config.new( + self, + queue, + QueueOptimizer.new(optimizer_config), + @backend.min_delay_between_events, + &block) + + @processor = Event::Loop.new(pconfig) + + super() # FSM + end + + default_state :initializing + + state :initializing, to: [:backend_started, :stopped] + + state :backend_started, to: [:frontend_ready, :stopped] do + backend.start + end + + state :frontend_ready, to: [:processing_events, :stopped] do + processor.setup + end + + state :processing_events, to: [:paused, :stopped] do + processor.resume + end + + state :paused, to: [:processing_events, :stopped] do + processor.pause + end + + state :stopped, to: [:backend_started] do + backend.stop # should be before processor.teardown to halt events ASAP + processor.teardown + end + + # Starts processing events and starts adapters + # or resumes invoking callbacks if paused + def start + transition :backend_started if state == :initializing + transition :frontend_ready if state == :backend_started + transition :processing_events if state == :frontend_ready + transition :processing_events if state == :paused + end + + # Stops both listening for events and processing them + def stop + transition :stopped + end + + # Stops invoking callbacks (messages pile up) + def pause + transition :paused + end + + # processing means callbacks are called + def processing? + state == :processing_events + end + + def paused? + state == :paused + end + + def ignore(regexps) + @silencer_controller.append_ignores(regexps) + end + + def ignore!(regexps) + @silencer_controller.replace_with_bang_ignores(regexps) + end + + def only(regexps) + @silencer_controller.replace_with_only(regexps) + end + + private + + attr_reader :processor + attr_reader :backend + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener/config.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener/config.rb new file mode 100644 index 0000000000..d13532278e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/listener/config.rb @@ -0,0 +1,41 @@ +module Listen + class Listener + class Config + DEFAULTS = { + # Listener options + debug: false, # TODO: is this broken? + wait_for_delay: nil, # NOTE: should be provided by adapter if possible + relative: false, + + # Backend selecting options + force_polling: false, + polling_fallback_message: nil + }.freeze + + def initialize(opts) + @options = DEFAULTS.merge(opts) + @relative = @options[:relative] + @min_delay_between_events = @options[:wait_for_delay] + @silencer_rules = @options # silencer will extract what it needs + end + + def relative? + @relative + end + + attr_reader :min_delay_between_events + + attr_reader :silencer_rules + + def adapter_instance_options(klass) + valid_keys = klass.const_get('DEFAULTS').keys + Hash[@options.select { |key, _| valid_keys.include?(key) }] + end + + def adapter_select_options + valid_keys = %w(force_polling polling_fallback_message).map(&:to_sym) + Hash[@options.select { |key, _| valid_keys.include?(key) }] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/logger.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/logger.rb new file mode 100644 index 0000000000..b0e6333e23 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/logger.rb @@ -0,0 +1,32 @@ +module Listen + def self.logger + @logger ||= nil + end + + def self.logger=(logger) + @logger = logger + end + + def self.setup_default_logger_if_unset + self.logger ||= ::Logger.new(STDERR).tap do |logger| + debugging = ENV['LISTEN_GEM_DEBUGGING'] + logger.level = + case debugging.to_s + when /2/ + ::Logger::DEBUG + when /true|yes|1/i + ::Logger::INFO + else + ::Logger::ERROR + end + end + end + + class Logger + [:fatal, :error, :warn, :info, :debug].each do |meth| + define_singleton_method(meth) do |*args, &block| + Listen.logger.public_send(meth, *args, &block) if Listen.logger + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/options.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/options.rb new file mode 100644 index 0000000000..7ae36a7f3b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/options.rb @@ -0,0 +1,23 @@ +module Listen + class Options + def initialize(opts, defaults) + @options = {} + given_options = opts.dup + defaults.keys.each do |key| + @options[key] = given_options.delete(key) || defaults[key] + end + + return if given_options.empty? + + msg = "Unknown options: #{given_options.inspect}" + Listen::Logger.warn msg + fail msg + end + + def method_missing(name, *_) + return @options[name] if @options.key?(name) + msg = "Bad option: #{name.inspect} (valid:#{@options.keys.inspect})" + fail NameError, msg + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/queue_optimizer.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/queue_optimizer.rb new file mode 100644 index 0000000000..752297a787 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/queue_optimizer.rb @@ -0,0 +1,132 @@ +module Listen + class QueueOptimizer + class Config + def initialize(adapter_class, silencer) + @adapter_class = adapter_class + @silencer = silencer + end + + def exist?(path) + Pathname(path).exist? + end + + def silenced?(path, type) + @silencer.silenced?(path, type) + end + + def debug(*args, &block) + Listen.logger.debug(*args, &block) + end + end + + def smoosh_changes(changes) + # TODO: adapter could be nil at this point (shutdown) + cookies = changes.group_by do |_, _, _, _, options| + (options || {})[:cookie] + end + _squash_changes(_reinterpret_related_changes(cookies)) + end + + def initialize(config) + @config = config + end + + private + + attr_reader :config + + # groups changes into the expected structure expected by + # clients + def _squash_changes(changes) + # We combine here for backward compatibility + # Newer clients should receive dir and path separately + changes = changes.map { |change, dir, path| [change, dir + path] } + + actions = changes.group_by(&:last).map do |path, action_list| + [_logical_action_for(path, action_list.map(&:first)), path.to_s] + end + + config.debug("listen: raw changes: #{actions.inspect}") + + { modified: [], added: [], removed: [] }.tap do |squashed| + actions.each do |type, path| + squashed[type] << path unless type.nil? + end + config.debug("listen: final changes: #{squashed.inspect}") + end + end + + def _logical_action_for(path, actions) + actions << :added if actions.delete(:moved_to) + actions << :removed if actions.delete(:moved_from) + + modified = actions.detect { |x| x == :modified } + _calculate_add_remove_difference(actions, path, modified) + end + + def _calculate_add_remove_difference(actions, path, default_if_exists) + added = actions.count { |x| x == :added } + removed = actions.count { |x| x == :removed } + diff = added - removed + + # TODO: avoid checking if path exists and instead assume the events are + # in order (if last is :removed, it doesn't exist, etc.) + if config.exist?(path) + if diff > 0 + :added + elsif diff.zero? && added > 0 + :modified + else + default_if_exists + end + else + diff < 0 ? :removed : nil + end + end + + # remove extraneous rb-inotify events, keeping them only if it's a possible + # editor rename() call (e.g. Kate and Sublime) + def _reinterpret_related_changes(cookies) + table = { moved_to: :added, moved_from: :removed } + cookies.flat_map do |_, changes| + data = _detect_possible_editor_save(changes) + if data + to_dir, to_file = data + [[:modified, to_dir, to_file]] + else + not_silenced = changes.reject do |type, _, _, path, _| + config.silenced?(Pathname(path), type) + end + not_silenced.map do |_, change, dir, path, _| + [table.fetch(change, change), dir, path] + end + end + end + end + + def _detect_possible_editor_save(changes) + return unless changes.size == 2 + + from_type = from_change = from = nil + to_type = to_change = to_dir = to = nil + + changes.each do |data| + case data[1] + when :moved_from + from_type, from_change, _, from, = data + when :moved_to + to_type, to_change, to_dir, to, = data + else + return nil + end + end + + return unless from && to + + # Expect an ignored moved_from and non-ignored moved_to + # to qualify as an "editor modify" + return unless config.silenced?(Pathname(from), from_type) + config.silenced?(Pathname(to), to_type) ? nil : [to_dir, to] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record.rb new file mode 100644 index 0000000000..ad374cec51 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record.rb @@ -0,0 +1,118 @@ +require 'thread' +require 'listen/record/entry' +require 'listen/record/symlink_detector' + +module Listen + class Record + # TODO: one Record object per watched directory? + # TODO: deprecate + + attr_reader :root + def initialize(directory) + @tree = _auto_hash + @root = directory.to_s + end + + def add_dir(rel_path) + return if [nil, '', '.'].include? rel_path + @tree[rel_path] ||= {} + end + + def update_file(rel_path, data) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + _fast_update_file(dirname, basename, data) + end + + def unset_path(rel_path) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + _fast_unset_path(dirname, basename) + end + + def file_data(rel_path) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + if [nil, '', '.'].include? dirname + tree[basename] ||= {} + tree[basename].dup + else + tree[dirname] ||= {} + tree[dirname][basename] ||= {} + tree[dirname][basename].dup + end + end + + def dir_entries(rel_path) + subtree = + if [nil, '', '.'].include? rel_path.to_s + tree + else + tree[rel_path.to_s] ||= _auto_hash + tree[rel_path.to_s] + end + + result = {} + subtree.each do |key, values| + # only get data for file entries + result[key] = values.key?(:mtime) ? values : {} + end + result + end + + def build + @tree = _auto_hash + # TODO: test with a file name given + # TODO: test other permissions + # TODO: test with mixed encoding + symlink_detector = SymlinkDetector.new + remaining = ::Queue.new + remaining << Entry.new(root, nil, nil) + _fast_build_dir(remaining, symlink_detector) until remaining.empty? + end + + private + + def _auto_hash + Hash.new { |h, k| h[k] = Hash.new } + end + + attr_reader :tree + + def _fast_update_file(dirname, basename, data) + if [nil, '', '.'].include? dirname + tree[basename] = (tree[basename] || {}).merge(data) + else + tree[dirname] ||= {} + tree[dirname][basename] = (tree[dirname][basename] || {}).merge(data) + end + end + + def _fast_unset_path(dirname, basename) + # this may need to be reworked to properly remove + # entries from a tree, without adding non-existing dirs to the record + if [nil, '', '.'].include? dirname + return unless tree.key?(basename) + tree.delete(basename) + else + return unless tree.key?(dirname) + tree[dirname].delete(basename) + end + end + + def _fast_build_dir(remaining, symlink_detector) + entry = remaining.pop + children = entry.children # NOTE: children() implicitly tests if dir + symlink_detector.verify_unwatched!(entry) + children.each { |child| remaining << child } + add_dir(entry.record_dir_key) + rescue Errno::ENOTDIR + _fast_try_file(entry) + rescue SystemCallError, SymlinkDetector::Error + _fast_unset_path(entry.relative, entry.name) + end + + def _fast_try_file(entry) + _fast_update_file(entry.relative, entry.name, entry.meta) + rescue SystemCallError + _fast_unset_path(entry.relative, entry.name) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb new file mode 100644 index 0000000000..759be61492 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb @@ -0,0 +1,64 @@ +module Listen + # @private api + class Record + # Represents a directory entry (dir or file) + class Entry + # file: "/home/me/watched_dir", "app/models", "foo.rb" + # dir, "/home/me/watched_dir", "." + def initialize(root, relative, name = nil) + @root = root + @relative = relative + @name = name + end + + attr_reader :root, :relative, :name + + def children + child_relative = _join + (_entries(sys_path) - %w(. ..)).map do |name| + Entry.new(@root, child_relative, name) + end + end + + def meta + lstat = ::File.lstat(sys_path) + { mtime: lstat.mtime.to_f, mode: lstat.mode } + end + + # record hash is e.g. + # if @record["/home/me/watched_dir"]["project/app/models"]["foo.rb"] + # if @record["/home/me/watched_dir"]["project/app"]["models"] + # record_dir_key is "project/app/models" + def record_dir_key + ::File.join(*[@relative, @name].compact) + end + + def sys_path + # Use full path in case someone uses chdir + ::File.join(*[@root, @relative, @name].compact) + end + + def real_path + @real_path ||= ::File.realpath(sys_path) + end + + private + + def _join + args = [@relative, @name].compact + args.empty? ? nil : ::File.join(*args) + end + + def _entries(dir) + return Dir.entries(dir) unless RUBY_ENGINE == 'jruby' + + # JRuby inconsistency workaround, see: + # https://github.com/jruby/jruby/issues/3840 + exists = ::File.exist?(dir) + directory = ::File.directory?(dir) + return Dir.entries(dir) unless exists && !directory + raise Errno::ENOTDIR, dir + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/symlink_detector.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/symlink_detector.rb new file mode 100644 index 0000000000..588409258a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/record/symlink_detector.rb @@ -0,0 +1,39 @@ +require 'set' + +module Listen + # @private api + class Record + class SymlinkDetector + WIKI = 'https://github.com/guard/listen/wiki/Duplicate-directory-errors'.freeze + + SYMLINK_LOOP_ERROR = <<-EOS.freeze + ** ERROR: directory is already being watched! ** + + Directory: %s + + is already being watched through: %s + + MORE INFO: #{WIKI} + EOS + + class Error < RuntimeError + end + + def initialize + @real_dirs = Set.new + end + + def verify_unwatched!(entry) + real_path = entry.real_path + @real_dirs.add?(real_path) || _fail(entry.sys_path, real_path) + end + + private + + def _fail(symlinked, real_path) + STDERR.puts format(SYMLINK_LOOP_ERROR, symlinked, real_path) + fail Error, 'Failed due to looped symlinks' + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer.rb new file mode 100644 index 0000000000..4addd34a4d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer.rb @@ -0,0 +1,97 @@ +module Listen + class Silencer + # The default list of directories that get ignored. + DEFAULT_IGNORED_DIRECTORIES = %r{^(?: + \.git + | \.svn + | \.hg + | \.rbx + | \.bundle + | bundle + | vendor/bundle + | log + | tmp + |vendor/ruby + )(/|$)}x + + # The default list of files that get ignored. + DEFAULT_IGNORED_EXTENSIONS = %r{(?: + # Kate's tmp\/swp files + \..*\d+\.new + | \.kate-swp + + # Gedit tmp files + | \.goutputstream-.{6} + + # Intellij files + | ___jb_bak___ + | ___jb_old___ + + # Vim swap files and write test + | \.sw[px] + | \.swpx + | ^4913 + + # Sed temporary files - but without actual words, like 'sedatives' + | (?:^ + sed + + (?: + [a-zA-Z0-9]{0}[A-Z]{1}[a-zA-Z0-9]{5} | + [a-zA-Z0-9]{1}[A-Z]{1}[a-zA-Z0-9]{4} | + [a-zA-Z0-9]{2}[A-Z]{1}[a-zA-Z0-9]{3} | + [a-zA-Z0-9]{3}[A-Z]{1}[a-zA-Z0-9]{2} | + [a-zA-Z0-9]{4}[A-Z]{1}[a-zA-Z0-9]{1} | + [a-zA-Z0-9]{5}[A-Z]{1}[a-zA-Z0-9]{0} + ) + ) + + # other files + | \.DS_Store + | \.tmp + | ~ + )$}x + + attr_accessor :only_patterns, :ignore_patterns + + def initialize + configure({}) + end + + def configure(options) + @only_patterns = options[:only] ? Array(options[:only]) : nil + @ignore_patterns = _init_ignores(options[:ignore], options[:ignore!]) + end + + # Note: relative_path is temporarily expected to be a relative Pathname to + # make refactoring easier (ideally, it would take a string) + + # TODO: switch type and path places - and verify + def silenced?(relative_path, type) + path = relative_path.to_s + + if only_patterns && type == :file + return true unless only_patterns.any? { |pattern| path =~ pattern } + end + + ignore_patterns.any? { |pattern| path =~ pattern } + end + + private + + attr_reader :options + + def _init_ignores(ignores, overrides) + patterns = [] + unless overrides + patterns << DEFAULT_IGNORED_DIRECTORIES + patterns << DEFAULT_IGNORED_EXTENSIONS + end + + patterns << ignores + patterns << overrides + + patterns.compact.flatten + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer/controller.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer/controller.rb new file mode 100644 index 0000000000..a07e0ae1f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/silencer/controller.rb @@ -0,0 +1,48 @@ +module Listen + class Silencer + class Controller + def initialize(silencer, default_options) + @silencer = silencer + + opts = default_options + + @prev_silencer_options = {} + rules = [:only, :ignore, :ignore!].map do |option| + [option, opts[option]] if opts.key? option + end + + _reconfigure_silencer(Hash[rules.compact]) + end + + def append_ignores(*regexps) + prev_ignores = Array(@prev_silencer_options[:ignore]) + _reconfigure_silencer(ignore: [prev_ignores + regexps]) + end + + def replace_with_bang_ignores(regexps) + _reconfigure_silencer(ignore!: regexps) + end + + def replace_with_only(regexps) + _reconfigure_silencer(only: regexps) + end + + private + + def _reconfigure_silencer(extra_options) + opts = extra_options.dup + opts = opts.map do |key, value| + [key, Array(value).flatten.compact] + end + opts = Hash[opts] + + if opts.key?(:ignore) && opts[:ignore].empty? + opts.delete(:ignore) + end + + @prev_silencer_options = opts + @silencer.configure(@prev_silencer_options.dup.freeze) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/version.rb b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/version.rb new file mode 100644 index 0000000000..2a19c7fdaa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/version.rb @@ -0,0 +1,3 @@ +module Listen + VERSION = '3.1.5'.freeze +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.gitignore b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.gitignore new file mode 100644 index 0000000000..d87d4be66f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.gitignore @@ -0,0 +1,17 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +test/tmp +test/version_tmp +tmp diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.rspec b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.rspec new file mode 100644 index 0000000000..5f1647637a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.rspec @@ -0,0 +1,2 @@ +--color +--format progress diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.travis.yml new file mode 100644 index 0000000000..d7c261d30b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/.travis.yml @@ -0,0 +1,15 @@ +language: ruby +rvm: + - 1.9.3 + - 2.0.0 + - 2.1 +sudo: false +cache: bundler +before_script: bundle update +script: "./script/cibuild" +notifications: + email: + recipients: + - mercenary@jekyllrb.com + on_success: change + on_failure: change diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Gemfile b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Gemfile new file mode 100644 index 0000000000..50c90dbd84 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in mercenary.gemspec +gemspec diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/History.markdown b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/History.markdown new file mode 100644 index 0000000000..360b83f7d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/History.markdown @@ -0,0 +1,109 @@ +## 0.3.6 / 2016-04-07 + +### Bug Fixes + + * Presenter: Options should include those from parent command (#42) + +## 0.3.5 / 2014-11-12 + +### Bug Fixes + + * Capture `OptionsParser::InvalidOption` and show a nice error message (#38) + * Absolute paths for requires and autoloads (#39) + +### Development Fixes + + * Bump to RSpec 3 (#40) + +## 0.3.4 / 2014-07-11 + +### Bug Fixes + + * Use option object as key in the command's `@map` hash (#35) + +## 0.3.3 / 2014-05-07 + +### Bug Fixes + + * The `--version` flag should not exit with code 1, but instead code 0. (#33) + +## 0.3.2 / 2014-03-18 + +### Bug Fixes + + * Remove duplicate commands from help output; show aliases w/command names (#29) + +## 0.3.1 / 2014-02-21 + +### Minor Enhancements + + * Add `-t/--trace` to list of options in help message (#19) + +### Bug Fixes + + * `Mercenary::Option` now accepts return values in the form of Class constants (#22) + +## 0.3.0 / 2014-02-20 + +### Major Enhancements + + * Officially drop 1.8.7 support (#14) + * Allow Commands to set their own versions (#17) + * Show subcommands, options and usage in help and attach to all commands (#18) + * Add `-t, --trace` to allow full exception backtrace to print, otherwise print just the error message (#19) + +### Minor Enhancements + + * Logging state is maintained throughout process (#12) + * Tidy up Command#logger output (#21) + +### Development Fixes + + * Added specs for `Program` (#13) + +## 0.2.1 / 2013-12-25 + +### Bug Fixes + + * Added missing comma to fix '-v' and '--version' options (#9) + +## 0.2.0 / 2013-11-30 + +### Major Enhancements + + * Add `Command#default_command` to specify a default command if none is given by the user at runtime (#7) + +### Minor Enhancements + + * Add `Command#execute` to execute the actions of a command (#6) + +### Development Fixes + + * Add standard GitHub bootstrap and cibuild scripts to `script/` (#2) + +## 0.1.0 / 2013-11-08 + +### Major Enhancements + + * It works! + +### Minor Enhancements + + * Add a logger to `Command` + * Add `--version` switch to all programs + +### Bug Fixes + + * Fix `Command#syntax` and `Command#description`'s handing of setting vs getting + * Fix load path problem in `lib/mercenary.rb` + +### Development Fixes + + * Add TomDoc to everything + * Add a couple starter specs + * Add TravisCI badge + * Add Travis configuration + +## 0.0.1 / 2013-11-06 + + * Birthday! diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/LICENSE.txt new file mode 100644 index 0000000000..354c0b20e0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013-2014 Parker Moore + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/README.md b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/README.md new file mode 100644 index 0000000000..ed9b1a1b26 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/README.md @@ -0,0 +1,250 @@ +# Mercenary + +Lightweight and flexible library for writing command-line apps in Ruby. + +[![Build Status](https://secure.travis-ci.org/jekyll/mercenary.png)](https://travis-ci.org/jekyll/mercenary) + +## Installation + +Add this line to your application's Gemfile: + + gem 'mercenary' + +And then execute: + + $ bundle + +Or install it yourself as: + + $ gem install mercenary + +**Note: Mercenary may not work with Ruby < 1.9.3.** + +## Usage + +Creating programs and commands with Mercenary is easy: + +```ruby +Mercenary.program(:jekyll) do |p| + p.version Jekyll::VERSION + p.description 'Jekyll is a blog-aware, static site generator in Ruby' + p.syntax "jekyll [options]" + + p.command(:new) do |c| + c.syntax "new PATH" # do not include the program name or super commands + c.description "Creates a new Jekyll site scaffold in PATH" + c.option 'blank', '--blank', 'Initialize the new site without any content.' + + c.action do |args, options| + Jekyll::Commands::New.process(args, blank: options['blank']) + end + end + + p.command(:build) do |c| + c.syntax "build [options]" + c.description "Builds your Jekyll site" + + c.option 'safe', '--safe', 'Run in safe mode' + c.option 'source', '--source DIR', 'From where to collect the source files' + c.option 'destination', '--dest DIR', 'To where the compiled files should be written' + + c.action do |_, options| + Jekyll::Commands::Build.process(options) + end + end + + # Bring in command bundled in external gem + begin + require "jekyll-import" + JekyllImport.init_with_program(p) + rescue LoadError + end + + p.default_command(:build) +end +``` + +All commands have the following default options: + +- `-h/--help` - show a help message +- `-v/--version` - show the program version +- `-t/--trace` - show the full backtrace when an error occurs + +## API + +### `Mercenary` + +#### `.program` + +Creates and executes a program. Accepts two arguments: + +- `name` - program name as a Symbol +- `block` - the specification for the program, passed the program instance as an + argument. + +Example is above, under the heading [Usage](#usage). + +### `Program` + +`Program` is a subclass of `Command`, so it has all of the methods documented +below as well as those for `Command`. + +#### `#config` + +Fetches the program configuration hash. + +### `Command` + +#### `#new` + +Create a new command. Accepts two arguments: + +- `name` - the name of your command, as a symbol +- `parent` - (optional) the parent Command + +#### `#version` + +Sets or gets the version of the command. Accepts an optional argument: + +- `version` - (optional) the version to set for the command. If present, this + becomes the new version for the command and persists. + +#### `#syntax` + +Sets or gets the syntax of the command. Built on parent syntaxes if a parent +exists. Accepts one optional argument: + +- `syntax` - (optional) the syntax to set for the command. Will inherit from the + parent commands or program. Usually in the form of + `"command_name [OPTIONS]"` + +When a parent command exists, say `supercommand`, with syntax set as +`supercommand [OPTIONS]`, the syntax of the command in question +will be `supercommand command_name [OPTIONS]` with both +`` and `[OPTIONS]` stripped out. Any text between `<` and `>` or +between `[` and `]` will be stripped from parent command syntaxes. The purpose +of this chaining is to reduce redundancy. + +#### `#description` + +Sets or gets the description of the command. Accepts one optional argument: + +- `desc` - (optional) the description to set for the command. If + provided, will override any previous description set for the command. + +#### `#default_command` + +Sets or gets the default subcommand of the command to execute in the event no +subcommand is passed during execution. Accepts one optional argument: + +- `command_name` - (optional) the `Symbol` name of the subcommand to be + executed. Raises an `ArgumentError` if the subcommand doesn't exist. + Overwrites previously-set default commands. + +#### `#option` + +Adds a new option to the command. Accepts many arguments: + +- `config_key` - the configuration key that the value of this option maps to. +- `*options` - all the options, globbed, to be passed to `OptionParser`, namely the + switches and the option description. Usually in the format + `"-s", "--switch", "Sets the 'switch' flag"`. + +Valid option calls: + +```ruby +cmd.option 'config_key', '-c', 'Sets the "config" flag' +cmd.option 'config_key', '--config', 'Sets the "config" flag' +cmd.option 'config_key', '-c', '--config', 'Sets the "config" flag.' +cmd.option 'config_key', '-c FILE', '--config FILE', 'The config file.' +cmd.option 'config_key', '-c FILE1[,FILE2[,FILE3...]]', '--config FILE1[,FILE2[,FILE3...]]', Array, 'The config files.' +``` + +Notice that you can specify either a short switch, a long switch, or both. If +you want to accept an argument, you have to specify it in the switch strings. +The class of the argument defaults to `String`, but you can optionally set a +different class to create, e.g. `Array`, if you are expecting a particular class +in your code from this option's value. The description is also optional, but +it's highly recommended to include a description. + +#### `#alias` + +Specifies an alias for this command such that the alias may be used in place of +the command during execution. Accepts one argument: + +- `cmd_name` - the alias name for this command as a `Symbol` + +Example: + +```ruby +cmd.alias(:my_alias) +# Now `cmd` is now also executable via "my_alias" +``` + +#### `#action` + +Specifies a block to be executed in the event the command is specified at +runtime. The block is given two arguments: + +- `args` - the non-switch arguments given from the command-line +- `options` - the options hash built via the switches passed + +**Note that actions are additive**, meaning any new call to `#action` will +result in another action to be executed at runtime. Actions will be executed in +the order they are specified in. + +Example: + +```ruby +cmd.action do |args, options| + # do something! +end +``` + +#### `#logger` + +Access the logger for this command. Useful for outputting information to STDOUT. +Accepts one optional argument: + +- `level` - (optional) the severity threshold at which to begin logging. Uses + Ruby's built-in + [`Logger`](http://www.ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html) + levels. + +Log level defaults to `Logger::INFO`. + +Examples: + +```ruby +cmd.logger(Logger::DEBUG) +cmd.logger.debug "My debug message." +cmd.logger.info "My informative message." +cmd.logger.warn "ACHTUNG!!" +cmd.logger.error "Something terrible has happened." +cmd.logger.fatal "I can't continue doing what I'm doing." +``` + +#### `#command` + +Creates a new subcommand for the current command. Accepts two arguments: + +- `cmd_name` - the command name, as a Symbol +- `block` - the specification of the subcommand in a block + +Example: + +```ruby +my_command.command(:my_subcommand) do |subcmd| + subcmd.description 'My subcommand' + subcmd.syntax 'my_subcommand [OPTIONS]' + # ... +end +``` + +## Contributing + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Rakefile b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Rakefile new file mode 100644 index 0000000000..29955274e0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/Rakefile @@ -0,0 +1 @@ +require "bundler/gem_tasks" diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/help_dialogue.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/help_dialogue.rb new file mode 100755 index 0000000000..807e587848 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/help_dialogue.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby + +$:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib }) + +require "mercenary" + +# This example sets the logging mode of mercenary to +# debug. Logging messages from "p.logger.debug" will +# be output to STDOUT. + +Mercenary.program(:help_dialogue) do |p| + + p.version "2.0.1" + p.description 'An example of the help dialogue in Mercenary' + p.syntax 'help_dialogue ' + + p.command(:some_subcommand) do |c| + c.version '1.4.2' + c.syntax 'some_subcommand [options]' + c.description 'Some subcommand to do something' + c.option 'an_option', '-o', '--option', 'Some option' + c.alias(:blah) + + c.command(:yet_another_sub) do |f| + f.syntax 'yet_another_sub [options]' + f.description 'Do amazing things' + f.option 'blah', '-b', '--blah', 'Trigger blah flag' + f.option 'heh', '-H ARG', '--heh ARG', 'Give a heh' + + f.action do |args, options| + print "Args: " + p args + print "Opts: " + p options + end + end + end + + p.command(:another_subcommand) do |c| + c.syntax 'another_subcommand [options]' + c.description 'Another subcommand to do something different.' + c.option 'an_option', '-O', '--option', 'Some option' + c.option 'another_options', '--pluginzzz', 'Set where the plugins should be found from' + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/logging.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/logging.rb new file mode 100644 index 0000000000..2cb867a5a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/logging.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby + +$:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib }) + +require "mercenary" + +# This example sets the logging mode of mercenary to +# debug. Logging messages from "p.logger.debug" will +# be output to STDOUT. + +Mercenary.program(:logger_output) do |p| + + p.version "5.2.6" + p.description 'An example of turning on logging for Mercenary.' + p.syntax 'logger_output' + + + p.logger.info "The default log level is INFO. So this will output." + p.logger.debug "Since DEBUG is below INFO, this will not output." + + p.logger(Logger::DEBUG) + p.logger.debug "Logger level now set to DEBUG. So everything will output." + + p.logger.debug "Example of DEBUG level message." + p.logger.info "Example of INFO level message." + p.logger.warn "Example of WARN level message." + p.logger.error "Example of ERROR level message." + p.logger.fatal "Example of FATAL level message." + p.logger.unknown "Example of UNKNOWN level message." + + p.action do |args, options| + + p.logger(Logger::INFO) + p.logger.debug "Logger level back to INFO. This line will not output." + p.logger.info "This INFO message will output." + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/trace.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/trace.rb new file mode 100644 index 0000000000..0aaa365506 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/examples/trace.rb @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby + +$:.unshift File.join(File.dirname(__FILE__), *%w{ .. lib }) + +require "mercenary" + +# This example sets the logging mode of mercenary to +# debug. Logging messages from "p.logger.debug" will +# be output to STDOUT. + +Mercenary.program(:trace) do |p| + + p.version "2.0.1" + p.description 'An example of traces in Mercenary' + p.syntax 'trace ' + + p.action do |_, _| + raise ArgumentError.new("YOU DID SOMETHING TERRIBLE YOU BUFFOON") + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary.rb new file mode 100644 index 0000000000..1c4be62a74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary.rb @@ -0,0 +1,21 @@ +require File.expand_path("../mercenary/version", __FILE__) +require "optparse" +require "logger" + +module Mercenary + autoload :Command, File.expand_path("../mercenary/command", __FILE__) + autoload :Option, File.expand_path("../mercenary/option", __FILE__) + autoload :Presenter, File.expand_path("../mercenary/presenter", __FILE__) + autoload :Program, File.expand_path("../mercenary/program", __FILE__) + + # Public: Instantiate a new program and execute. + # + # name - the name of your program + # + # Returns nothing. + def self.program(name) + program = Program.new(name) + yield program + program.go(ARGV) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/command.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/command.rb new file mode 100644 index 0000000000..0bcc4dd089 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/command.rb @@ -0,0 +1,280 @@ +module Mercenary + class Command + attr_reader :name + attr_reader :description + attr_reader :syntax + attr_accessor :options + attr_accessor :commands + attr_accessor :actions + attr_reader :map + attr_accessor :parent + attr_reader :trace + attr_reader :aliases + + # Public: Creates a new Command + # + # name - the name of the command + # parent - (optional) the instancce of Mercenary::Command which you wish to + # be the parent of this command + # + # Returns nothing + def initialize(name, parent = nil) + @name = name + @options = [] + @commands = {} + @actions = [] + @map = {} + @parent = parent + @trace = false + @aliases = [] + end + + # Public: Sets or gets the command version + # + # version - the command version (optional) + # + # Returns the version and sets it if an argument is non-nil + def version(version = nil) + @version = version if version + @version + end + + # Public: Sets or gets the syntax string + # + # syntax - the string which describes this command's usage syntax (optional) + # + # Returns the syntax string and sets it if an argument is present + def syntax(syntax = nil) + @syntax = syntax if syntax + syntax_list = [] + if parent + syntax_list << parent.syntax.to_s.gsub(/<[\w\s-]+>/, '').gsub(/\[[\w\s-]+\]/, '').strip + end + syntax_list << (@syntax || name.to_s) + syntax_list.join(" ") + end + + # Public: Sets or gets the command description + # + # description - the description of what the command does (optional) + # + # Returns the description and sets it if an argument is present + def description(desc = nil) + @description = desc if desc + @description + end + + # Public: Sets the default command + # + # command_name - the command name to be executed in the event no args are + # present + # + # Returns the default command if there is one, `nil` otherwise + def default_command(command_name = nil) + if command_name + if commands.has_key?(command_name) + @default_command = commands[command_name] if command_name + @default_command + else + raise ArgumentError.new("'#{command_name}' couldn't be found in this command's list of commands.") + end + else + @default_command + end + end + + # Public: Adds an option switch + # + # sym - the variable key which is used to identify the value of the switch + # at runtime in the options hash + # + # Returns nothing + def option(sym, *options) + new_option = Option.new(sym, options) + @options << new_option + @map[new_option] = sym + end + + # Public: Adds a subcommand + # + # cmd_name - the name of the command + # block - a block accepting the new instance of Mercenary::Command to be + # modified (optional) + # + # Returns nothing + def command(cmd_name) + cmd = Command.new(cmd_name, self) + yield cmd + @commands[cmd_name] = cmd + end + + # Public: Add an alias for this command's name to be attached to the parent + # + # cmd_name - the name of the alias + # + # Returns nothing + def alias(cmd_name) + logger.debug "adding alias to parent for self: '#{cmd_name}'" + aliases << cmd_name + @parent.commands[cmd_name] = self + end + + # Public: Add an action Proc to be executed at runtime + # + # block - the Proc to be executed at runtime + # + # Returns nothing + def action(&block) + @actions << block + end + + # Public: Fetch a Logger (stdlib) + # + # level - the logger level (a Logger constant, see docs for more info) + # + # Returns the instance of Logger + def logger(level = nil) + unless @logger + @logger = Logger.new(STDOUT) + @logger.level = level || Logger::INFO + @logger.formatter = proc do |severity, datetime, progname, msg| + "#{identity} | " << "#{severity.downcase.capitalize}:".ljust(7) << " #{msg}\n" + end + end + + @logger.level = level unless level.nil? + @logger + end + + # Public: Run the command + # + # argv - an array of string args + # opts - the instance of OptionParser + # config - the output config hash + # + # Returns the command to be executed + def go(argv, opts, config) + opts.banner = "Usage: #{syntax}" + process_options(opts, config) + add_default_options(opts) + + if argv[0] && cmd = commands[argv[0].to_sym] + logger.debug "Found subcommand '#{cmd.name}'" + argv.shift + cmd.go(argv, opts, config) + else + logger.debug "No additional command found, time to exec" + self + end + end + + # Public: Add this command's options to OptionParser and set a default + # action of setting the value of the option to the inputted hash + # + # opts - instance of OptionParser + # config - the Hash in which the option values should be placed + # + # Returns nothing + def process_options(opts, config) + options.each do |option| + opts.on(*option.for_option_parser) do |x| + config[map[option]] = x + end + end + end + + # Public: Add version and help options to the command + # + # opts - instance of OptionParser + # + # Returns nothing + def add_default_options(opts) + option 'show_help', '-h', '--help', 'Show this message' + option 'show_version', '-v', '--version', 'Print the name and version' + option 'show_backtrace', '-t', '--trace', 'Show the full backtrace when an error occurs' + opts.on("-v", "--version", "Print the version") do + puts "#{name} #{version}" + exit(0) + end + + opts.on('-t', '--trace', 'Show full backtrace if an error occurs') do + @trace = true + end + + opts.on_tail("-h", "--help", "Show this message") do + puts self + exit + end + end + + # Public: Execute all actions given the inputted args and options + # + # argv - (optional) command-line args (sans opts) + # config - (optional) the Hash configuration of string key to value + # + # Returns nothing + def execute(argv = [], config = {}) + if actions.empty? && !default_command.nil? + default_command.execute + else + actions.each { |a| a.call(argv, config) } + end + end + + # Public: Check if this command has a subcommand + # + # sub_command - the name of the subcommand + # + # Returns true if this command is the parent of a command of name + # 'sub_command' and false otherwise + def has_command?(sub_command) + commands.keys.include?(sub_command) + end + + # Public: Identify this command + # + # Returns a string which identifies this command + def ident + "" + end + + # Public: Get the full identity (name & version) of this command + # + # Returns a string containing the name and version if it exists + def identity + "#{full_name} #{version if version}".strip + end + + # Public: Get the name of the current command plus that of + # its parent commands + # + # Returns the full name of the command + def full_name + the_name = [] + the_name << parent.full_name if parent && parent.full_name + the_name << name + the_name.join(" ") + end + + # Public: Return all the names and aliases for this command. + # + # Returns a comma-separated String list of the name followed by its aliases + def names_and_aliases + ([name.to_s] + aliases).compact.join(", ") + end + + # Public: Build a string containing a summary of the command + # + # Returns a one-line summary of the command. + def summarize + " #{names_and_aliases.ljust(20)} #{description}" + end + + # Public: Build a string containing the command name, options and any subcommands + # + # Returns the string identifying this command, its options and its subcommands + def to_s + Presenter.new(self).print_command + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/option.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/option.rb new file mode 100644 index 0000000000..56a49b6243 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/option.rb @@ -0,0 +1,87 @@ +module Mercenary + class Option + attr_reader :config_key, :description, :short, :long, :return_type + + # Public: Create a new Option + # + # config_key - the key in the config hash to which the value of this option + # will map + # info - an array containing first the switches, then an optional + # return type (e.g. Array), then a description of the option + # + # Returns nothing + def initialize(config_key, info) + @config_key = config_key + while arg = info.shift + begin + @return_type = Object.const_get("#{arg}") + next + rescue NameError + end + if arg.start_with?("-") + if arg.start_with?("--") + @long = arg + else + @short = arg + end + next + end + @description = arg + end + end + + # Public: Fetch the array containing the info OptionParser is interested in + # + # Returns the array which OptionParser#on wants + def for_option_parser + [short, long, return_type, description].flatten.reject{ |o| o.to_s.empty? } + end + + # Public: Build a string representation of this option including the + # switches and description + # + # Returns a string representation of this option + def to_s + "#{formatted_switches} #{description}" + end + + # Public: Build a beautifully-formatted string representation of the switches + # + # Returns a formatted string representation of the switches + def formatted_switches + [ + switches.first.rjust(10), + switches.last.ljust(13) + ].join(", ").gsub(/ , /, ' ').gsub(/, /, ' ') + end + + # Public: Hash based on the hash value of instance variables + # + # Returns a Fixnum which is unique to this Option based on the instance variables + def hash + instance_variables.map do |var| + instance_variable_get(var).hash + end.reduce(:^) + end + + # Public: Check equivalence of two Options based on equivalence of their + # instance variables + # + # Returns true if all the instance variables are equal, false otherwise + def eql?(other) + return false unless self.class.eql?(other.class) + instance_variables.map do |var| + instance_variable_get(var).eql?(other.instance_variable_get(var)) + end.all? + end + + # Public: Fetch an array of switches, including the short and long versions + # + # Returns an array of two strings. An empty string represents no switch in + # that position. + def switches + [short, long].map(&:to_s) + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/presenter.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/presenter.rb new file mode 100644 index 0000000000..0521ee01a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/presenter.rb @@ -0,0 +1,94 @@ +module Mercenary + class Presenter + attr_accessor :command + + # Public: Make a new Presenter + # + # command - a Mercenary::Command to present + # + # Returns nothing + def initialize(command) + @command = command + end + + # Public: Builds a string representation of the command usage + # + # Returns the string representation of the command usage + def usage_presentation + " #{command.syntax}" + end + + # Public: Builds a string representation of the options + # + # Returns the string representation of the options + def options_presentation + return nil unless command_options_presentation || parent_command_options_presentation + [command_options_presentation, parent_command_options_presentation].compact.join("\n") + end + + def command_options_presentation + return nil unless command.options.size > 0 + command.options.map(&:to_s).join("\n") + end + + # Public: Builds a string representation of the options for parent + # commands + # + # Returns the string representation of the options for parent commands + def parent_command_options_presentation + return nil unless command.parent + Presenter.new(command.parent).options_presentation + end + + # Public: Builds a string representation of the subcommands + # + # Returns the string representation of the subcommands + def subcommands_presentation + return nil unless command.commands.size > 0 + command.commands.values.uniq.map(&:summarize).join("\n") + end + + # Public: Builds the command header, including the command identity and description + # + # Returns the command header as a String + def command_header + header = "#{command.identity}" + header << " -- #{command.description}" if command.description + header + end + + # Public: Builds a string representation of the whole command + # + # Returns the string representation of the whole command + def command_presentation + msg = [] + msg << command_header + msg << "Usage:" + msg << usage_presentation + + if opts = options_presentation + msg << "Options:\n#{opts}" + end + if subcommands = subcommands_presentation + msg << "Subcommands:\n#{subcommands_presentation}" + end + msg.join("\n\n") + end + + # Public: Turn a print_* into a *_presentation or freak out + # + # meth - the method being called + # args - an array of arguments passed to the missing method + # block - the block passed to the missing method + # + # Returns the value of whatever function is called + def method_missing(meth, *args, &block) + if meth.to_s =~ /^print_(.+)$/ + send("#{$1.downcase}_presentation") + else + super # You *must* call super if you don't handle the method, + # otherwise you'll mess up Ruby's method lookup. + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/program.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/program.rb new file mode 100644 index 0000000000..53591c0120 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/program.rb @@ -0,0 +1,53 @@ +module Mercenary + class Program < Command + attr_reader :optparse + attr_reader :config + + # Public: Creates a new Program + # + # name - the name of the program + # + # Returns nothing + def initialize(name) + @config = {} + super(name) + end + + # Public: Run the program + # + # argv - an array of string args (usually ARGV) + # + # Returns nothing + def go(argv) + logger.debug("Using args passed in: #{argv.inspect}") + + cmd = nil + + @optparse = OptionParser.new do |opts| + cmd = super(argv, opts, @config) + end + + begin + @optparse.parse!(argv) + rescue OptionParser::InvalidOption => e + logger.error "Whoops, we can't understand your command." + logger.error "#{e.message}" + logger.error "Run your command again with the --help switch to see available options." + abort + end + + logger.debug("Parsed config: #{@config.inspect}") + + begin + cmd.execute(argv, @config) + rescue => e + if cmd.trace + raise e + else + logger.error e.message + abort + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/version.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/version.rb new file mode 100644 index 0000000000..296046bb37 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/lib/mercenary/version.rb @@ -0,0 +1,3 @@ +module Mercenary + VERSION = "0.3.6" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/mercenary.gemspec b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/mercenary.gemspec new file mode 100644 index 0000000000..e9f8294772 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/mercenary.gemspec @@ -0,0 +1,24 @@ +# coding: utf-8 +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'mercenary/version' + +Gem::Specification.new do |spec| + spec.name = "mercenary" + spec.version = Mercenary::VERSION + spec.authors = ["Tom Preston-Werner", "Parker Moore"] + spec.email = ["tom@mojombo.com", "parkrmoore@gmail.com"] + spec.description = %q{Lightweight and flexible library for writing command-line apps in Ruby.} + spec.summary = %q{Lightweight and flexible library for writing command-line apps in Ruby.} + spec.homepage = "https://github.com/jekyll/mercenary" + spec.license = "MIT" + + spec.files = `git ls-files`.split($/) + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } + spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) + spec.require_paths = ["lib"] + + spec.add_development_dependency "bundler", "~> 1.3" + spec.add_development_dependency "rake" + spec.add_development_dependency "rspec", "~> 3.0" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/bootstrap b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/bootstrap new file mode 100755 index 0000000000..a0cf262eea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/bootstrap @@ -0,0 +1,7 @@ +#! /bin/sh + +set -e + +echo "Time to get set up." +bundle install +echo "Boom." diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/cibuild b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/cibuild new file mode 100755 index 0000000000..260e363876 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/cibuild @@ -0,0 +1,6 @@ +#! /bin/sh + +set -ex + +bundle exec rspec +./script/examples diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/console b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/console new file mode 100755 index 0000000000..27ed279ef2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/console @@ -0,0 +1,3 @@ +#! /bin/bash + +irb -r./lib/mercenary.rb diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/examples b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/examples new file mode 100755 index 0000000000..a722ab32fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/script/examples @@ -0,0 +1,18 @@ +#! /bin/bash + +set -e + +function run () { + echo "+ ruby ./examples/$@" + ruby -e "puts '=' * 79" + ruby ./examples/$@ + ruby -e "puts '=' * 79" +} + +run logging.rb +run logging.rb -v +run help_dialogue.rb -h +run help_dialogue.rb some_subcommand -h +run help_dialogue.rb another_subcommand -h +run help_dialogue.rb some_subcommand yet_another_sub -h +run help_dialogue.rb some_subcommand yet_another_sub -b diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/command_spec.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/command_spec.rb new file mode 100644 index 0000000000..e1c029aab4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/command_spec.rb @@ -0,0 +1,98 @@ +require "spec_helper" + +describe(Mercenary::Command) do + + context "a basic command" do + let(:command) { Mercenary::Command.new(:my_name) } + let(:parent) { Mercenary::Command.new(:my_parent) } + let(:with_sub) do + c = Mercenary::Command.new(:i_have_subcommand) + add_sub.call(c) + c + end + let(:command_with_parent) do + Mercenary::Command.new( + :i_have_parent, + parent + ) + end + let(:add_sub) do + Proc.new do |c| + c.command(:sub_command) { |p| } + end + end + + it "can be created with just a name" do + expect(command.name).to eql(:my_name) + end + + it "can hold a parent command" do + expect(command_with_parent.parent).to eql(parent) + end + + it "can create subcommands" do + expect(add_sub.call(command)).to be_a(Mercenary::Command) + expect(add_sub.call(command).parent).to eq(command) + end + + it "can set its version" do + version = "1.4.2" + command.version version + expect(command.version).to eq(version) + end + + it "can set its syntax" do + syntax_string = "my_name [options]" + cmd = described_class.new(:my_name) + cmd.syntax syntax_string + expect(cmd.syntax).to eq(syntax_string) + end + + it "can set its description" do + desc = "run all the things" + command.description desc + expect(command.description).to eq(desc) + end + + it "can set its options" do + name = "show_drafts" + opts = ['--drafts', 'Render posts in the _drafts folder'] + option = Mercenary::Option.new(name, opts) + command.option name, *opts + expect(command.options).to eql([option]) + expect(command.map.values).to include(name) + end + + it "knows its full name" do + expect(command_with_parent.full_name).to eql("my_parent i_have_parent") + end + + it "knows its identity" do + command_with_parent.version '1.8.7' + expect(command_with_parent.identity).to eql("my_parent i_have_parent 1.8.7") + end + + it "raises an ArgumentError if I specify a default_command that isn't there" do + c = command # some weird NameError with the block below? + expect { c.default_command(:nope) }.to raise_error(ArgumentError) + end + + it "sets the default_command" do + expect(with_sub.default_command(:sub_command).name).to eq(:sub_command) + end + + context "with an alias" do + before(:each) do + command_with_parent.alias(:an_alias) + end + it "shows the alias in the summary" do + expect(command_with_parent.summarize).to eql(" i_have_parent, an_alias ") + end + + it "its names_and_aliases method reports both the name and alias" do + expect(command_with_parent.names_and_aliases).to eql("i_have_parent, an_alias") + end + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/option_spec.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/option_spec.rb new file mode 100644 index 0000000000..83e58fd947 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/option_spec.rb @@ -0,0 +1,83 @@ +require 'spec_helper' + +describe(Mercenary::Option) do + let(:config_key) { "largo" } + let(:description) { "This is a description" } + let(:switches) { ['-l', '--largo'] } + let(:option) { described_class.new(config_key, [switches, description].flatten.reject(&:nil?)) } + + it "knows its config key" do + expect(option.config_key).to eql(config_key) + end + + it "knows its description" do + expect(option.description).to eql(description) + end + + it "knows its switches" do + expect(option.switches).to eql(switches) + end + + it "knows how to present itself" do + expect(option.to_s).to eql(" -l, --largo #{description}") + end + + it "has an OptionParser representation" do + expect(option.for_option_parser).to eql([switches, description].flatten) + end + + it "compares itself with other options well" do + new_option = described_class.new(config_key, ['-l', '--largo', description]) + expect(option.eql?(new_option)).to be(true) + expect(option.hash.eql?(new_option.hash)).to be(true) + end + + it "has a custom #hash" do + expect(option.hash.to_s).to match(/\d+/) + end + + context "with just the long switch" do + let(:switches) { ['--largo'] } + + it "adds an empty string in place of the short switch" do + expect(option.switches).to eql(['', '--largo']) + end + + it "sets its description properly" do + expect(option.description).to eql(description) + end + + it "knows how to present the switch" do + expect(option.formatted_switches).to eql(" --largo ") + end + end + + context "with just the short switch" do + let(:switches) { ['-l'] } + + it "adds an empty string in place of the long switch" do + expect(option.switches).to eql(['-l', '']) + end + + it "sets its description properly" do + expect(option.description).to eql(description) + end + + it "knows how to present the switch" do + expect(option.formatted_switches).to eql(" -l ") + end + end + + context "without a description" do + let(:description) { nil } + + it "knows there is no description" do + expect(option.description).to be(nil) + end + + it "knows both inputs are switches" do + expect(option.switches).to eql(switches) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/presenter_spec.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/presenter_spec.rb new file mode 100644 index 0000000000..f61ed45b50 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/presenter_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +describe(Mercenary::Presenter) do + let(:supercommand) { Mercenary::Command.new(:script_name) } + let(:command) { Mercenary::Command.new(:subcommand, supercommand) } + let(:presenter) { described_class.new(command) } + + before(:each) do + command.version '1.4.2' + command.description 'Do all the things.' + command.option 'one', '-1', '--one', 'The first option' + command.option 'two', '-2', '--two', 'The second option' + command.alias :cmd + supercommand.commands[command.name] = command + end + + it "knows how to present the command" do + expect(presenter.command_presentation).to eql("script_name subcommand 1.4.2 -- Do all the things.\n\nUsage:\n\n script_name subcommand\n\nOptions:\n -1, --one The first option\n -2, --two The second option") + end + + it "knows how to present the subcommands, without duplicates for aliases" do + expect(described_class.new(supercommand).subcommands_presentation).to eql(" subcommand, cmd Do all the things.") + end + + it "knows how to present the usage" do + expect(presenter.usage_presentation).to eql(" script_name subcommand") + end + + it "knows how to present the options" do + expect(presenter.options_presentation).to eql(" -1, --one The first option\n -2, --two The second option") + end + + it "allows you to say print_* instead of *_presentation" do + expect(presenter.print_usage).to eql(presenter.usage_presentation) + expect(presenter.print_subcommands).to eql(presenter.subcommands_presentation) + expect(presenter.print_options).to eql(presenter.options_presentation) + expect(presenter.print_command).to eql(presenter.command_presentation) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/program_spec.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/program_spec.rb new file mode 100644 index 0000000000..f5d961e15a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/program_spec.rb @@ -0,0 +1,19 @@ +require "spec_helper" + +describe(Mercenary::Program) do + + context "a basic program" do + let(:program) { Mercenary::Program.new(:my_name) } + + it "can be created with just a name" do + expect(program.name).to eql(:my_name) + end + + it "can set its version" do + version = Mercenary::VERSION + program.version version + expect(program.version).to eq(version) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/spec_helper.rb new file mode 100644 index 0000000000..c3799855dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/mercenary-0.3.6/spec/spec_helper.rb @@ -0,0 +1,14 @@ +lib = File.expand_path('../../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'mercenary' + +RSpec.configure do |config| + config.run_all_when_everything_filtered = true + config.filter_run :focus + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = 'random' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Gemfile b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Gemfile new file mode 100644 index 0000000000..60ea36cfec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Gemfile @@ -0,0 +1,22 @@ +# Frozen-string-literal: true +# Copyright: 2015 - 2017 Jordon Bedwell - MIT License +# Encoding: utf-8 + +source "https://rubygems.org" +gem "rake", :require => false +gemspec + +group :test do + gem "safe_yaml", :require => false + gem "luna-rspec-formatters", :require => false + gem "simplecov", :require => false +end + +group :development do + gem "rspec", :require => false + gem "rspec-helpers", :require => false + gem "rubocop", :github => "bbatsov/rubocop", :require => false + gem "benchmark-ips", :require => false + gem "simple-ansi", :require => false + gem "pry", :require => false +end diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/LICENSE b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/LICENSE new file mode 100644 index 0000000000..139db7925a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 - 2017 Jordon Bedwell + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Rakefile b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Rakefile new file mode 100644 index 0000000000..a09025154e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/Rakefile @@ -0,0 +1,12 @@ +# Frozen-string-literal: true +# Copyright: 2017 - 2018 - MIT License +# Source: https://github.com/envygeeks/devfiles +# Author: Jordon Bedwell +# Encoding: utf-8 + +task default: [:spec] +task(:spec) { exec "script/test" } +task(:test) { exec "script/test" } +Dir.glob("script/rake.d/*.rake").each do |v| + load v +end diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil.rb b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil.rb new file mode 100644 index 0000000000..1a15873ddb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil.rb @@ -0,0 +1,909 @@ +# Frozen-string-literal: true +# Copyright: 2015 - 2017 Jordon Bedwell - MIT License +# Encoding: utf-8 + +require "pathutil/helpers" +require "forwardable/extended" +require "find" + +class Pathutil + attr_writer :encoding + extend Forwardable::Extended + extend Helpers + + # -- + # @note A lot of this class can be compatible with Pathname. + # Initialize a new instance. + # @return Pathutil + # -- + def initialize(path) + return @path = path if path.is_a?(String) + return @path = path.to_path if path.respond_to?(:to_path) + return @path = path.to_s + end + + # -- + # Make a path relative. + # -- + def relative + return self if relative? + self.class.new(strip_windows_drive.gsub( + %r!\A(\\+|/+)!, "" + )) + end + + # -- + # Make a path absolute + # -- + def absolute + return self if absolute? + self.class.new("/").join( + @path + ) + end + + # -- + # @see Pathname#cleanpath. + # @note This is a wholesale rip and cleanup of Pathname#cleanpath + # @return Pathutil + # -- + def cleanpath(symlink = false) + symlink ? conservative_cleanpath : aggressive_cleanpath + end + + # -- + # @yield Pathutil + # @note It will return all results that it finds across all ascending paths. + # @example Pathutil.new("~/").expand_path.search_backwards(".bashrc") => [#] + # Search backwards for a file (like Rakefile, _config.yml, opts.yml). + # @return Enum + # -- + def search_backwards(file, backwards: Float::INFINITY) + ary = [] + + ascend.with_index(1).each do |path, index| + if index > backwards + break + + else + Dir.chdir path do + if block_given? + file = self.class.new(file) + if yield(file) + ary.push( + file + ) + end + + elsif File.exist?(file) + ary.push(self.class.new( + path.join(file) + )) + end + end + end + end + + ary + end + + # -- + # Read the file as a YAML file turning it into an object. + # @see self.class.load_yaml as this a direct alias of that method. + # @return Hash + # -- + def read_yaml(throw_missing: false, **kwd) + self.class.load_yaml( + read, **kwd + ) + + rescue Errno::ENOENT + throw_missing ? raise : ( + return {} + ) + end + + # -- + # Read the file as a JSON file turning it into an object. + # @see self.class.read_json as this is a direct alias of that method. + # @return Hash + # -- + def read_json(throw_missing: false) + JSON.parse( + read + ) + + rescue Errno::ENOENT + throw_missing ? raise : ( + return {} + ) + end + + # -- + # @note The blank part is intentionally left there so that you can rejoin. + # Splits the path into all parts so that you can do step by step comparisons + # @example Pathutil.new("/my/path").split_path # => ["", "my", "path"] + # @return Array + # -- + def split_path + @path.split( + %r!\\+|/+! + ) + end + + # -- + # @see `String#==` for more details. + # A stricter version of `==` that also makes sure the object matches. + # @return true|false + # -- + def ===(other) + other.is_a?(self.class) && @path == other + end + + # -- + # @example Pathutil.new("/hello") >= Pathutil.new("/") # => true + # @example Pathutil.new("/hello") >= Pathutil.new("/hello") # => true + # Checks to see if a path falls within a path and deeper or is the other. + # @return true|false + # -- + def >=(other) + mine, other = expanded_paths(other) + return true if other == mine + mine.in_path?(other) + end + + # -- + # @example Pathutil.new("/hello/world") > Pathutil.new("/hello") # => true + # Strictly checks to see if a path is deeper but within the path of the other. + # @return true|false + # -- + def >(other) + mine, other = expanded_paths(other) + return false if other == mine + mine.in_path?(other) + end + + # -- + # @example Pathutil.new("/") < Pathutil.new("/hello") # => true + # Strictly check to see if a path is behind other path but within it. + # @return true|false + # -- + def <(other) + mine, other = expanded_paths(other) + return false if other == mine + other.in_path?(mine) + end + + # -- + # Check to see if a path is behind the other path but within it. + # @example Pathutil.new("/hello") < Pathutil.new("/hello") # => true + # @example Pathutil.new("/") < Pathutil.new("/hello") # => true + # @return true|false + # -- + def <=(other) + mine, other = expanded_paths(other) + return true if other == mine + other.in_path?(mine) + end + + # -- + # @note "./" is considered relative. + # Check to see if the path is absolute, as in: starts with "/" + # @return true|false + # -- + def absolute? + return !!( + @path =~ %r!\A(?:[A-Za-z]:)?(?:\\+|/+)! + ) + end + + # -- + # @yield Pathutil + # Break apart the path and yield each with the previous parts. + # @example Pathutil.new("/hello/world").ascend.to_a # => ["/", "/hello", "/hello/world"] + # @example Pathutil.new("/hello/world").ascend { |path| $stdout.puts path } + # @return Enum + # -- + def ascend + unless block_given? + return to_enum( + __method__ + ) + end + + yield( + path = self + ) + + while (new_path = path.dirname) + if path == new_path || new_path == "." + break + else + path = new_path + yield new_path + end + end + + nil + end + + # -- + # @yield Pathutil + # Break apart the path in reverse order and descend into the path. + # @example Pathutil.new("/hello/world").descend.to_a # => ["/hello/world", "/hello", "/"] + # @example Pathutil.new("/hello/world").descend { |path| $stdout.puts path } + # @return Enum + # -- + def descend + unless block_given? + return to_enum( + __method__ + ) + end + + ascend.to_a.reverse_each do |val| + yield val + end + + nil + end + + # -- + # @yield Pathutil + # @example Pathutil.new("/hello/world").each_line { |line| $stdout.puts line } + # Wraps `readlines` and allows you to yield on the result. + # @return Enum + # -- + def each_line + return to_enum(__method__) unless block_given? + readlines.each do |line| + yield line + end + + nil + end + + # -- + # @example Pathutil.new("/hello").fnmatch?("/hello") # => true + # Unlike traditional `fnmatch`, with this one `Regexp` is allowed. + # @example Pathutil.new("/hello").fnmatch?(/h/) # => true + # @see `File#fnmatch` for more information. + # @return true|false + # -- + def fnmatch?(matcher) + matcher.is_a?(Regexp) ? !!(self =~ matcher) : \ + File.fnmatch(matcher, self) + end + + # -- + # Allows you to quickly determine if the file is the root folder. + # @return true|false + # -- + def root? + !!(self =~ %r!\A(?:[A-Za-z]:)?(?:\\+|/+)\z!) + end + + # -- + # Allows you to check if the current path is in the path you want. + # @return true|false + # -- + def in_path?(path) + path = self.class.new(path).expand_path.split_path + mine = (symlink?? expand_path.realpath : expand_path).split_path + path.each_with_index { |part, index| return false if mine[index] != part } + true + end + + # -- + def inspect + "#<#{self.class}:#{@path}>" + end + + # -- + # @return Array + # Grab all of the children from the current directory, including hidden. + # @yield Pathutil + # -- + def children + ary = [] + + Dir.foreach(@path) do |path| + if path == "." || path == ".." + next + else + path = self.class.new(File.join(@path, path)) + yield path if block_given? + ary.push( + path + ) + end + end + + ary + end + + # -- + # @yield Pathutil + # Allows you to glob however you wish to glob in the current `Pathutil` + # @see `File::Constants` for a list of flags. + # @return Enum + # -- + def glob(pattern, flags = 0) + unless block_given? + return to_enum( + __method__, pattern, flags + ) + end + + chdir do + Dir.glob(pattern, flags).each do |file| + yield self.class.new( + File.join(@path, file) + ) + end + end + + nil + end + + # -- + # @yield &block + # Move to the current directory temporarily (or for good) and do work son. + # @note you do not need to ship a block at all. + # @return nil + # -- + def chdir + if !block_given? + Dir.chdir( + @path + ) + + else + Dir.chdir @path do + yield + end + end + end + + # -- + # @yield Pathutil + # Find all files without care and yield the given block. + # @return Enum + # -- + def find + return to_enum(__method__) unless block_given? + Find.find @path do |val| + yield self.class.new(val) + end + end + + # -- + # @yield Pathutil + # Splits the path returning each part (filename) back to you. + # @return Enum + # -- + def each_filename + return to_enum(__method__) unless block_given? + @path.split(File::SEPARATOR).delete_if(&:empty?).each do |file| + yield file + end + end + + # -- + # Get the parent of the current path. + # @note This will simply return self if "/". + # @return Pathutil + # -- + def parent + return self if @path == "/" + self.class.new(absolute?? File.dirname(@path) : File.join( + @path, ".." + )) + end + + # -- + # @yield Pathutil + # Split the file into its dirname and basename, so you can do stuff. + # @return nil + # -- + def split + File.split(@path).collect! do |path| + self.class.new(path) + end + end + + # -- + # @note Your extension should start with "." + # Replace a files extension with your given extension. + # @return Pathutil + # -- + def sub_ext(ext) + self.class.new(@path.chomp(File.extname(@path)) + ext) + end + + # -- + # A less complex version of `relative_path_from` that simply uses a + # `Regexp` and returns the full path if it cannot be determined. + # @return Pathutil + # -- + def relative_path_from(from) + from = self.class.new(from).expand_path.gsub(%r!/$!, "") + self.class.new(expand_path.gsub(%r!^#{ + from.regexp_escape + }/!, "")) + end + + # -- + # Expands the path and left joins the root to the path. + # @return Pathutil + # -- + def enforce_root(root) + return self if !relative? && in_path?(root) + self.class.new(root).join( + self + ) + end + + # -- + # Copy a directory, allowing symlinks if the link falls inside of the root. + # This is indented for people who wish some safety to their copies. + # @note Ignore is ignored on safe_copy file because it's explicit. + # @return nil + # -- + def safe_copy(to, root: nil, ignore: []) + raise ArgumentError, "must give a root" unless root + root = self.class.new(root) + to = self.class.new(to) + + if directory? + safe_copy_directory(to, { + :root => root, :ignore => ignore + }) + + else + safe_copy_file(to, { + :root => root + }) + end + end + + # -- + # @see `self.class.normalize` as this is an alias. + # -- + def normalize + return @normalize ||= begin + self.class.normalize + end + end + + # -- + # @see `self.class.encoding` as this is an alias. + # -- + def encoding + return @encoding ||= begin + self.class.encoding + end + end + + # -- + # @note You can set the default encodings via the class. + # Read took two steroid shots: it can normalize your string, and encode. + # @return String + # -- + def read(*args, **kwd) + kwd[:encoding] ||= encoding + + if normalize[:read] + File.read(self, *args, kwd).encode({ + :universal_newline => true + }) + + else + File.read( + self, *args, kwd + ) + end + end + + # -- + # @note You can set the default encodings via the class. + # Binread took two steroid shots: it can normalize your string, and encode. + # @return String + # -- + def binread(*args, **kwd) + kwd[:encoding] ||= encoding + + if normalize[:read] + File.binread(self, *args, kwd).encode({ + :universal_newline => true + }) + + else + File.read( + self, *args, kwd + ) + end + end + + # -- + # @note You can set the default encodings via the class. + # Readlines took two steroid shots: it can normalize your string, and encode. + # @return Array + # -- + def readlines(*args, **kwd) + kwd[:encoding] ||= encoding + + if normalize[:read] + File.readlines(self, *args, kwd).encode({ + :universal_newline => true + }) + + else + File.readlines( + self, *args, kwd + ) + end + end + + # -- + # @note You can set the default encodings via the class. + # Write took two steroid shots: it can normalize your string, and encode. + # @return Fixnum + # -- + def write(data, *args, **kwd) + kwd[:encoding] ||= encoding + + if normalize[:write] + File.write(self, data.encode( + :crlf_newline => true + ), *args, kwd) + + else + File.write( + self, data, *args, kwd + ) + end + end + + # -- + # @note You can set the default encodings via the class. + # Binwrite took two steroid shots: it can normalize your string, and encode. + # @return Fixnum + # -- + def binwrite(data, *args, **kwd) + kwd[:encoding] ||= encoding + + if normalize[:write] + File.binwrite(self, data.encode( + :crlf_newline => true + ), *args, kwd) + + else + File.binwrite( + self, data, *args, kwd + ) + end + end + + # -- + def to_regexp(guard: true) + Regexp.new((guard ? "\\A" : "") + Regexp.escape( + self + )) + end + + # -- + # Strips the windows drive from the path. + # -- + def strip_windows_drive(path = @path) + self.class.new(path.gsub( + %r!\A[A-Za-z]:(?:\\+|/+)!, "" + )) + end + + # -- + # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/CyclomaticComplexity + # rubocop:disable Metrics/PerceivedComplexity + # -- + + def aggressive_cleanpath + return self.class.new("/") if root? + + _out = split_path.each_with_object([]) do |part, out| + next if part == "." || (part == ".." && out.last == "") + if part == ".." && out.last && out.last != ".." + out.pop + + else + out.push( + part + ) + end + end + + # -- + + return self.class.new("/") if _out == [""].freeze + return self.class.new(".") if _out.empty? && (end_with?(".") || relative?) + self.class.new(_out.join("/")) + end + + # -- + def conservative_cleanpath + _out = split_path.each_with_object([]) do |part, out| + next if part == "." || (part == ".." && out.last == "") + out.push( + part + ) + end + + # -- + + if !_out.empty? && basename == "." && _out.last != "" && _out.last != ".." + _out << "." + end + + # -- + + return self.class.new("/") if _out == [""].freeze + return self.class.new(".") if _out.empty? && (end_with?(".") || relative?) + return self.class.new(_out.join("/")).join("") if @path =~ %r!/\z! \ + && _out.last != "." && _out.last != ".." + self.class.new(_out.join("/")) + end + + # -- + # rubocop:enable Metrics/AbcSize + # rubocop:enable Metrics/CyclomaticComplexity + # rubocop:enable Metrics/PerceivedComplexity + # Expand the paths and return. + # -- + private + def expanded_paths(path) + return expand_path, self.class.new(path).expand_path + end + + # -- + # Safely copy a file. + # -- + private + def safe_copy_file(to, root: nil) + raise Errno::EPERM, "#{self} not in #{root}" unless in_path?(root) + FileUtils.cp(self, to, { + :preserve => true + }) + end + + # -- + # Safely copy a directory and it's sub-files. + # -- + private + def safe_copy_directory(to, root: nil, ignore: []) + ignore = [ignore].flatten.uniq + + if !in_path?(root) + raise Errno::EPERM, "#{self} not in #{ + root + }" + + else + to.mkdir_p unless to.exist? + children do |file| + unless ignore.any? { |path| file.in_path?(path) } + if !file.in_path?(root) + raise Errno::EPERM, "#{file} not in #{ + root + }" + + elsif file.file? + FileUtils.cp(file, to, { + :preserve => true + }) + + else + path = file.realpath + path.safe_copy(to.join(file.basename), { + :root => root, :ignore => ignore + }) + end + end + end + end + end + + class << self + attr_writer :encoding + + # -- + # @note We do nothing special here. + # Get the current directory that Ruby knows about. + # @return Pathutil + # -- + def pwd + new( + Dir.pwd + ) + end + + alias gcwd pwd + alias cwd pwd + + # -- + # @note you are encouraged to override this if you need to. + # Aliases the default system encoding to us so that we can do most read + # and write operations with that encoding, instead of being crazy. + # -- + def encoding + return @encoding ||= begin + Encoding.default_external + end + end + + # -- + # Normalize CRLF -> LF on Windows reads, to ease your troubles. + # Normalize LF -> CLRF on Windows write, to ease your troubles. + # -- + def normalize + return @normalize ||= { + :read => Gem.win_platform?, + :write => Gem.win_platform? + } + end + + # -- + # Make a temporary directory. + # @note if you adruptly exit it will not remove the dir. + # @note this directory is removed on exit. + # @return Pathutil + # -- + def tmpdir(*args) + rtn = new(make_tmpname(*args)).tap(&:mkdir) + ObjectSpace.define_finalizer(rtn, proc do + rtn.rm_rf + end) + + rtn + end + + # -- + # Make a temporary file. + # @note if you adruptly exit it will not remove the dir. + # @note this file is removed on exit. + # @return Pathutil + # -- + def tmpfile(*args) + rtn = new(make_tmpname(*args)).tap(&:touch) + ObjectSpace.define_finalizer(rtn, proc do + rtn.rm_rf + end) + + rtn + end + end + + # -- + + rb_delegate :gcwd, :to => :"self.class" + rb_delegate :pwd, :to => :"self.class" + + # -- + + rb_delegate :sub, :to => :@path, :wrap => true + rb_delegate :chomp, :to => :@path, :wrap => true + rb_delegate :gsub, :to => :@path, :wrap => true + rb_delegate :[], :to => :@path + rb_delegate :=~, :to => :@path + rb_delegate :==, :to => :@path + rb_delegate :to_s, :to => :@path + rb_delegate :freeze, :to => :@path + rb_delegate :end_with?, :to => :@path + rb_delegate :start_with?, :to => :@path + rb_delegate :frozen?, :to => :@path + rb_delegate :to_str, :to => :@path + rb_delegate :"!~", :to => :@path + rb_delegate :<=>, :to => :@path + + # -- + + rb_delegate :chmod, :to => :File, :args => { :after => :@path } + rb_delegate :lchown, :to => :File, :args => { :after => :@path } + rb_delegate :lchmod, :to => :File, :args => { :after => :@path } + rb_delegate :chown, :to => :File, :args => { :after => :@path } + rb_delegate :basename, :to => :File, :args => :@path, :wrap => true + rb_delegate :dirname, :to => :File, :args => :@path, :wrap => true + rb_delegate :readlink, :to => :File, :args => :@path, :wrap => true + rb_delegate :expand_path, :to => :File, :args => :@path, :wrap => true + rb_delegate :realdirpath, :to => :File, :args => :@path, :wrap => true + rb_delegate :realpath, :to => :File, :args => :@path, :wrap => true + rb_delegate :rename, :to => :File, :args => :@path, :wrap => true + rb_delegate :join, :to => :File, :args => :@path, :wrap => true + rb_delegate :empty?, :to => :file, :args => :@path + rb_delegate :size, :to => :File, :args => :@path + rb_delegate :link, :to => :File, :args => :@path + rb_delegate :atime, :to => :File, :args => :@path + rb_delegate :ctime, :to => :File, :args => :@path + rb_delegate :lstat, :to => :File, :args => :@path + rb_delegate :utime, :to => :File, :args => :@path + rb_delegate :sysopen, :to => :File, :args => :@path + rb_delegate :birthtime, :to => :File, :args => :@path + rb_delegate :mountpoint?, :to => :File, :args => :@path + rb_delegate :truncate, :to => :File, :args => :@path + rb_delegate :symlink, :to => :File, :args => :@path + rb_delegate :extname, :to => :File, :args => :@path + rb_delegate :zero?, :to => :File, :args => :@path + rb_delegate :ftype, :to => :File, :args => :@path + rb_delegate :mtime, :to => :File, :args => :@path + rb_delegate :open, :to => :File, :args => :@path + rb_delegate :stat, :to => :File, :args => :@path + + # -- + + rb_delegate :pipe?, :to => :FileTest, :args => :@path + rb_delegate :file?, :to => :FileTest, :args => :@path + rb_delegate :owned?, :to => :FileTest, :args => :@path + rb_delegate :setgid?, :to => :FileTest, :args => :@path + rb_delegate :socket?, :to => :FileTest, :args => :@path + rb_delegate :readable?, :to => :FileTest, :args => :@path + rb_delegate :blockdev?, :to => :FileTest, :args => :@path + rb_delegate :directory?, :to => :FileTest, :args => :@path + rb_delegate :readable_real?, :to => :FileTest, :args => :@path + rb_delegate :world_readable?, :to => :FileTest, :args => :@path + rb_delegate :executable_real?, :to => :FileTest, :args => :@path + rb_delegate :world_writable?, :to => :FileTest, :args => :@path + rb_delegate :writable_real?, :to => :FileTest, :args => :@path + rb_delegate :executable?, :to => :FileTest, :args => :@path + rb_delegate :writable?, :to => :FileTest, :args => :@path + rb_delegate :grpowned?, :to => :FileTest, :args => :@path + rb_delegate :chardev?, :to => :FileTest, :args => :@path + rb_delegate :symlink?, :to => :FileTest, :args => :@path + rb_delegate :sticky?, :to => :FileTest, :args => :@path + rb_delegate :setuid?, :to => :FileTest, :args => :@path + rb_delegate :exist?, :to => :FileTest, :args => :@path + rb_delegate :size?, :to => :FileTest, :args => :@path + + # -- + + rb_delegate :rm_rf, :to => :FileUtils, :args => :@path + rb_delegate :rm_r, :to => :FileUtils, :args => :@path + rb_delegate :rm_f, :to => :FileUtils, :args => :@path + rb_delegate :rm, :to => :FileUtils, :args => :@path + rb_delegate :cp_r, :to => :FileUtils, :args => :@path + rb_delegate :touch, :to => :FileUtils, :args => :@path + rb_delegate :mkdir_p, :to => :FileUtils, :args => :@path + rb_delegate :mkpath, :to => :FileUtils, :args => :@path + rb_delegate :cp, :to => :FileUtils, :args => :@path + + # -- + + rb_delegate :each_child, :to => :children + rb_delegate :each_entry, :to => :children + rb_delegate :to_a, :to => :children + + # -- + + rb_delegate :opendir, :to => :Dir, :alias_of => :open + rb_delegate :relative?, :to => :self, :alias_of => :absolute?, :bool => :reverse + rb_delegate :regexp_escape, :to => :Regexp, :args => :@path, :alias_of => :escape + rb_delegate :shellescape, :to => :Shellwords, :args => :@path + rb_delegate :mkdir, :to => :Dir, :args => :@path + + # -- + + alias + join + alias delete rm + alias rmtree rm_r + alias to_path to_s + alias last basename + alias entries children + alias make_symlink symlink + alias cleanpath_conservative conservative_cleanpath + alias cleanpath_aggressive aggressive_cleanpath + alias prepend enforce_root + alias fnmatch fnmatch? + alias make_link link + alias first dirname + alias rmdir rm_r + alias unlink rm + alias / join +end diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/helpers.rb b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/helpers.rb new file mode 100644 index 0000000000..7398008dba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/helpers.rb @@ -0,0 +1,129 @@ +# Frozen-string-literal: true +# Copyright: 2015 - 2017 Jordon Bedwell - MIT License +# Encoding: utf-8 + +class Pathutil + module Helpers + extend self + + # -- + + def allowed + return @allowed ||= begin + { + :yaml => { + :classes => [], + :symbols => [] + } + } + end + end + + # -- + # Wraps around YAML and SafeYAML to provide alternatives to Rubies. + # @note We default aliases to yes so we can detect if you explicit true. + # @return Hash + # -- + def load_yaml(data, safe: true, whitelist_classes: allowed[:yaml][:classes], \ + whitelist_symbols: allowed[:yaml][:symbols], aliases: :yes) + + require "yaml" + unless safe + return YAML.load( + data + ) + end + + if !YAML.respond_to?(:safe_load) + setup_safe_yaml whitelist_classes, aliases + SafeYAML.load( + data + ) + + else + YAML.safe_load( + data, + whitelist_classes, + whitelist_symbols, + aliases + ) + end + end + + # -- + # Make a temporary name suitable for temporary files and directories. + # @return String + # -- + def make_tmpname(prefix = "", suffix = nil, root = nil) + prefix = tmpname_prefix(prefix) + suffix = tmpname_suffix(suffix) + + root ||= Dir::Tmpname.tmpdir + File.join(root, __make_tmpname( + prefix, suffix + )) + end + + # -- + private + def __make_tmpname((prefix, suffix), number) + prefix &&= String.try_convert(prefix) || tmpname_agerr(:prefix, prefix) + suffix &&= String.try_convert(suffix) || tmpname_agerr(:suffix, suffix) + + time = Time.now.strftime("%Y%m%d") + path = "#{prefix}#{time}-#{$$}-#{rand(0x100000000).to_s(36)}".dup + path << "-#{number}" if number + path << suffix if suffix + path + end + + private + def tmpname_agerr(type, val) + raise ArgumentError, "unexpected #{type}: #{val.inspect}" + end + + # -- + private + def tmpname_suffix(suffix) + suffix = suffix.join("-") if suffix.is_a?(Array) + suffix = suffix.gsub(/\A\-/, "") unless !suffix || suffix.empty? + suffix + end + + # -- + # Cleanup the temp name prefix, joining if necessary. + # rubocop:disable Style/ParallelAssignment + # -- + private + def tmpname_prefix(prefix) + ext, prefix = prefix, "" if !prefix.is_a?(Array) && prefix.start_with?(".") + ext = prefix.pop if prefix.is_a?(Array) && prefix[-1].start_with?(".") + prefix = prefix.join("-") if prefix.is_a?(Array) + + unless prefix.empty? + prefix = prefix.gsub(/\-\Z/, "") \ + + "-" + end + + return [ + prefix, ext || "" + ] + end + + # -- + # Wrap around, cleanup, deprecate and use SafeYAML. + # rubocop:enable Style/ParallelAssignment + # -- + private + def setup_safe_yaml(whitelist_classes, aliases) + warn "WARN: SafeYAML does not support disabling of aliases." if aliases && aliases != :yes + warn "WARN: SafeYAML will be removed when Ruby 2.0 goes EOL." + require "safe_yaml/load" + + SafeYAML.restore_defaults! + whitelist_classes.map(&SafeYAML.method( + :whitelist_class! + )) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/version.rb b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/version.rb new file mode 100644 index 0000000000..bfe223c18f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/pathutil-0.16.2/lib/pathutil/version.rb @@ -0,0 +1,7 @@ +# Frozen-string-literal: true +# Copyright: 2015 - 2017 Jordon Bedwell - MIT License +# Encoding: utf-8 + +class Pathutil + VERSION = "0.16.2" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.gitignore b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.gitignore new file mode 100644 index 0000000000..9e5a30abb5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.gitignore @@ -0,0 +1,11 @@ +# Bundler +.bundle +Gemfile.lock +pkg/* + +# Rubinius +*.rbc + +# YARD +.yardoc +yardoc/ diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop.yml new file mode 100644 index 0000000000..5283089ca2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop.yml @@ -0,0 +1,36 @@ +inherit_from: + - .rubocop_defaults.yml + +AllCops: + Exclude: + # Exclude .gemspec files because they are generally auto-generated + - '*.gemspec' + # Exclude vendored folders + - 'tmp/**/*' + - 'vendor/**/*' + # Exclude artifacts + - 'pkg/**/*' + # Other + - 'test/benchmarks/**/*' + - 'test/profilers/**/*' + +# I often use @_variable to avoid clashing. +Naming/MemoizedInstanceVariableName: + Enabled: false + +Style/ClassAndModuleChildren: + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + +# Dear Rubocop, I don't want to use String#strip_heredoc +Layout/IndentHeredoc: + Enabled: false + +Style/WordArray: + Enabled: false + MinSize: 3 + +Style/SymbolArray: + Enabled: false + MinSize: 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop_defaults.yml b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop_defaults.yml new file mode 100644 index 0000000000..4d07840d99 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.rubocop_defaults.yml @@ -0,0 +1,184 @@ +AllCops: + Exclude: + # Exclude .gemspec files because they are generally auto-generated + - '*.gemspec' + # Exclude vendored folders + - 'tmp/**/*' + - 'vendor/**/*' + +# [codesmell] +Metrics/AbcSize: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + +# [codesmell] +Metrics/BlockLength: + Enabled: false + +# [codesmell] +Metrics/CyclomaticComplexity: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + +# [codesmell] +Metrics/ClassLength: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + +# [codesmell] +Metrics/LineLength: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + Max: 100 + +# [codesmell] +Metrics/MethodLength: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + Max: 10 + +# [codesmell] +Metrics/ModuleLength: + Enabled: false + Exclude: + - 'spec/**/*_spec.rb' + - 'test/**/*_test.rb' + +# [codesmell] +Metrics/ParameterLists: + Enabled: false + Max: 5 + +# [codesmell] +Metrics/PerceivedComplexity: + Enabled: false + +# [codesmell] +# I don't really get the point of this cop. +Performance/RedundantMerge: + Enabled: false + +# Do not use "and" or "or" in conditionals, but for readability we can use it +# to chain executions. Just beware of operator order. +Style/AndOr: + EnforcedStyle: conditionals + +Style/Documentation: + Exclude: + - 'spec/**/*' + - 'test/**/*' + +# Double empty lines are useful to separate conceptually different methods +# in the same class or module. +Layout/EmptyLines: + Enabled: false + +# In most cases, a space is nice. Sometimes, it's not. +# Just be consistent with the rest of the surrounding code. +Layout/EmptyLinesAroundClassBody: + Enabled: false + +# In most cases, a space is nice. Sometimes, it's not. +# Just be consistent with the rest of the surrounding code. +Layout/EmptyLinesAroundModuleBody: + Enabled: false + +# This is quite buggy, as it doesn't recognize double lines. +# Double empty lines are useful to separate conceptually different methods +# in the same class or module. +Layout/EmptyLineBetweenDefs: + Enabled: false + +# I personally don't care about the format style. +# In most cases I like to use %, but not at the point I want to enforce it +# as a convention in the entire code. +Style/FormatString: + Enabled: false + +# Annotated tokens (like %s) are a good thing, but in most cases we don't need them. +# %s is a simpler and straightforward version that works in almost all cases. So don't complain. +Style/FormatStringToken: + Enabled: false + +# Prefer the latest Hash syntax +Style/HashSyntax: + Exclude: + # But Rakefiles generally have some definition like + # :default => :test + # that looks nicer with the old rocket syntax. + - 'Rakefile' + +Style/RescueStandardError: + Enabled: false + +# Array indentation should be considered like MultilineMethodCallIndentation indentation +# and use 4 spaces instead of 2. +Layout/IndentArray: + IndentationWidth: 4 + +# Hash indentation should be considered like MultilineMethodCallIndentation indentation +# and use 4 spaces instead of 2. +Layout/IndentHash: + IndentationWidth: 4 + +# Multi-line differs from standard indentation, they are indented twice. +Layout/MultilineMethodCallIndentation: + EnforcedStyle: indented + IndentationWidth: 4 + +# unless is not always cool. +Style/NegatedIf: + Enabled: false + +# For years, %w() has been the de-facto standard. A lot of libraries are using (). +# Switching to [] would be a nightmare. +Style/PercentLiteralDelimiters: + Enabled: false + +# There are cases were the inline rescue is ok. We can either downgrade the severity, +# or rely on the developer judgement on a case-by-case basis. +Style/RescueModifier: + Enabled: false + +# Sorry, but using trailing spaces helps readability. +# +# %w( foo bar ) +# +# looks better to me than +# +# %w( foo bar ) +# +Layout/SpaceInsidePercentLiteralDelimiters: + Enabled: false + +# Hate It or Love It, I prefer double quotes as this is more consistent +# with several other programming languages and the output of puts and inspect. +Style/StringLiterals: + EnforcedStyle: double_quotes + +# It's nice to be consistent. The trailing comma also allows easy reordering, +# and doesn't cause a diff in Git when you add a line to the bottom. +Style/TrailingCommaInArrayLiteral: + EnforcedStyleForMultiline: consistent_comma +Style/TrailingCommaInHashLiteral: + EnforcedStyleForMultiline: consistent_comma + +Style/TrivialAccessors: + # IgnoreClassMethods because I want to be able to define class-level accessors + # that sets an instance variable on the metaclass, such as: + # + # def self.default=(value) + # @default = value + # end + # + IgnoreClassMethods: true diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.ruby-gemset b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.ruby-gemset new file mode 100644 index 0000000000..06070ae975 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.ruby-gemset @@ -0,0 +1 @@ +publicsuffix \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.travis.yml new file mode 100644 index 0000000000..e023d2ebae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.travis.yml @@ -0,0 +1,25 @@ +language: ruby + +rvm: + - 2.1 + - 2.2 + - 2.3 + - 2.4 + - 2.5 + - jruby-9.1.5.0 + - ruby-head + +env: + - COVERALL=1 + +cache: + - bundler + +matrix: + allow_failures: + - rvm: ruby-head + - rvm: jruby-9.1.0.0 + +before_install: + - rvm get latest + - gem install bundler diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.yardopts b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.yardopts new file mode 100644 index 0000000000..0a782de2ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.yardopts @@ -0,0 +1 @@ +--title 'Ruby Public Suffix API Documentation' diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/2.0-Upgrade.md b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/2.0-Upgrade.md new file mode 100644 index 0000000000..1a10bfb36e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/2.0-Upgrade.md @@ -0,0 +1,52 @@ +# Welcome to PublicSuffix 2.0! + +PublicSuffix 2.0 contains a rewritten internal representation and comparison logic, that drastically increases the lookup performance. The new version also changes several internal and external API. + +This document documents the most relevant changes to help you upgrading from PublicSuffix 1.0 to 2.0. + +## What's New + +- The library is now 100% compliants with the official PublicSuffix tests. The major breaking change you may experience, is that if a domain passed as input doesn't match any rule, the rule `*` is assumed. You can override this behavior by passing a custom default rule with the `default_rule` option. The old behavior can be restored by passing `default_rule: nil`. +- `PublicSuffix.domain` is a new method that parses the input and returns the domain (combination of second level domain + suffix). This is a convenient helper to parse a domain name, for example when you need to determine the cookie or SSL scope. +- Added the ability to disable the use of private domains either at runtime, in addition to the ability to not load the private domains section when reading the list (`private_domains: false`). This feature also superseded the `private_domains` class-level attribute, that is no longer available. + +## Upgrade + +When upgrading, here's the most relevant changes to keep an eye on: + +- Several futile utility helpers were removed, such as `Domain#rule`, `Domain#is_a_domain?`, `Domain#is_a_subdomain?`, `Domain#valid?`. You can easily obtain the same result by having a custom method that reconstructs the logic, and/or calling `PublicSuffix.{domain|parse}(domain.to_s)`. +- `PublicSuffix::List.private_domains` is no longer available. Instead, you now have two ways to enable/disable the private domains: + + 1. At runtime, by using the `ignore_private` option + + ```ruby + PublicSuffix.domain("something.blogspot.com", ignore_private: true) + ``` + + 1. Loading a filtered list: + + ```ruby + # Disable support for private TLDs + PublicSuffix::List.default = PublicSuffix::List.parse(File.read(PublicSuffix::List::DEFAULT_LIST_PATH), private_domains: false) + # => "blogspot.com" + PublicSuffix.domain("something.blogspot.com") + # => "blogspot.com" + ``` +- Now that the library is 100% compliant with the official PublicSuffix algorithm, if a domain passed as input doesn't match any rule, the wildcard rule `*` is assumed. This means that unlisted TLDs will be considered valid by default, when they would have been invalid in 1.x. However, you can override this behavior to emulate the 1.x behavior if needed: + + ```ruby + # 1.x: + + PublicSuffix.valid?("google.commm") + # => false + + # 2.x: + + PublicSuffix.valid?("google.commm") + # => true + + # Overriding 2.x behavior if needed: + + PublicSuffix.valid?("google.commm", default_rule: nil) + # => false + ```` diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/CHANGELOG.md new file mode 100644 index 0000000000..5df36bfc89 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/CHANGELOG.md @@ -0,0 +1,340 @@ +# Changelog + + +#### Release 3.0.3 + +- CHANGED: Updated definitions. + + +#### Release 3.0.2 + +- CHANGED: Updated definitions. + + +#### Release 3.0.1 + +- CHANGED: Updated definitions. +- CHANGED: Improve performance and avoid allocation (GH-146). [Thanks @robholland] + + +#### Release 3.0.0 + +This new version includes a major redesign of the library internals, with the goal to drastically +improve the lookup time while reducing storage space. + +For this reason, several public methods that are no longer applicable have been deprecated +and/or removed. You can find more information at GH-133. + +- CHANGED: Updated definitions. +- CHANGED: Dropped support for Ruby < 2.1 +- CHANGED: `PublicSuffix::List#rules` is now protected. You should not rely on it as the internal rule representation is subject to change to optimize performances. +- CHANGED: Removed `PublicSuffix::List.clear`, it was an unnecessary accessor method. Use `PublicSuffix::List.default = nil` if you **really** need to reset the default list. You shouldn't. +- CHANGED: `PublicSuffix::List#select` is now private. You should not use it, instead use `PublicSuffix::List#find`. +- CHANGED: `PublicSuffix::List` no longer implements Enumerable. Instead, use `#each` to loop over, or get an Enumerator. +- CHANGED: Redesigned internal list storage and lookup algorithm to achieve O(1) lookup time (see GH-133). + + +#### Release 2.0.5 + +- CHANGED: Updated definitions. +- CHANGED: Initialization performance improvements (GH-128). [Thanks @casperisfine] + + +#### Release 2.0.4 + +- FIXED: Fix a bug that caused the GEM to be published with the wrong version number in the gemspec (GH-121). + +- CHANGED: Updated definitions. + + +#### Release 2.0.3 + +- CHANGED: Updated definitions. + + +#### Release 2.0.2 + +- CHANGED: Updated definitions. + + +#### Release 2.0.1 + +- FIXED: Fix bug that prevented .valid? to reset the default rule + + +#### Release 2.0.0 + +- NEW: Added PublicSuffix.domain # => sld.tld +- NEW: Added the ability to disable the use of private domains either at runtime, in addition to the ability to not load the private domains section when reading the list (`private_domains: false`). This feature also superseded the `private_domains` class-level attribute, that is no longer available. + +- CHANGED: Considerable performance improvements (GH-92) +- CHANGED: Updated definitions. +- CHANGED: Removed deprecated PublicSuffix::InvalidDomain exception +- CHANGED: If the suffix is now listed, then the prevaling rule is "*" as defined by the PSL algorithm (GH-91) +- CHANGED: Input validation is performed only if you call `PublicSuffix.parse` or `PublicSuffix.list` +- CHANGED: Input with leading dot is invalid per PSL acceptance tests +- CHANGED: Removed `private_domains` class-level attribute. It is replaced by the `private_domains: false` option in the list parse method. +- CHANGED: The default list now assumes you use UTF-8 for reading the input (GH-94), + +- REMOVED: Removed futile utility helpers such as `Domain#rule`, `Domain#is_a_domain?`, `Domain#is_a_subdomain?`, `Domain#valid?`. You can easily obtain the same result by having a custom method that reconstructs the logic, and/or calling `PublicSuffix.{domain|parse}(domain.to_s)`. + + +#### Release 1.5.3 + +- FIXED: Don't duplicate rule indices when creating index (GH-77). [Thanks @ags] + +- CHANGED: Updated definitions. + + +#### Release 1.5.2 + +- CHANGED: Updated definitions. + + +#### Release 1.5.1 + +- FIXED: Ignore case for parsing and validating (GH-62) + +- CHANGED: Updated definitions. + + +#### Release 1.5.0 + +- CHANGED: Dropped support for Ruby < 2.0 + +- CHANGED: Updated definitions. + + +#### Release 1.4.6 + +- CHANGED: Updated definitions. + + +#### Release 1.4.5 + +- CHANGED: Updated definitions. + + +#### Release 1.4.4 + +- CHANGED: Updated definitions. + + +#### Release 1.4.3 + +- CHANGED: Updated definitions. + + +#### Release 1.4.2 + +- CHANGED: Updated definitions. + + +#### Release 1.4.1 + +- CHANGED: Updated definitions. + + +#### Release 1.4.0 + +- CHANGED: Moved the definitions in the lib folder. + +- CHANGED: Updated definitions. + + +#### Release 1.3.3 + +- CHANGED: Updated definitions. + + +#### Release 1.3.2 + +- CHANGED: Updated definitions. + + +#### Release 1.3.1 + +- CHANGED: Updated definitions. + + +#### Release 1.3.0 + +- NEW: Ability to skip Private Domains (GH-28). [Thanks @rb2k] + +- CHANGED: Updated definitions. + + +#### Release 1.2.1 + +- CHANGED: Updated definitions. + + +#### Release 1.2.0 + +- NEW: Allow a custom List on `PublicSuffix.parse` (GH-26). [Thanks @itspriddle] + +- FIXED: PublicSuffix.parse and PublicSuffix.valid? crashes when input is nil (GH-20). + +- CHANGED: Updated definitions. + + +#### Release 1.1.3 + +- CHANGED: Updated definitions. + + +#### Release 1.1.2 + +- CHANGED: Updated definitions. + + +#### Release 1.1.1 + +- CHANGED: Updated definitions. + + +#### Release 1.1.0 + +- FIXED: #valid? and #parse consider URIs as valid domains (GH-15) + +- CHANGED: Updated definitions. + +- CHANGED: Removed deprecatd PublicSuffixService::RuleList. + + +#### Release 1.0.0 + +- CHANGED: Updated definitions. + + +#### Release 1.0.0.rc1 + +The library is now known as PublicSuffix. + + +#### Release 0.9.1 + +- CHANGED: Renamed PublicSuffixService::RuleList to PublicSuffixService::List. + +- CHANGED: Renamed PublicSuffixService::List#list to PublicSuffixService::List#rules. + +- CHANGED: Renamed PublicSuffixService to PublicSuffix. + +- CHANGED: Updated definitions. + + +#### Release 0.9.0 + +- CHANGED: Minimum Ruby version increased to Ruby 1.8.7. + +- CHANGED: rake/gempackagetask is deprecated. Use rubygems/package_task instead. + + +#### Release 0.8.4 + +- FIXED: Reverted bugfix for issue #12 for Ruby 1.8.6. + This is the latest version compatible with Ruby 1.8.6. + + +#### Release 0.8.3 + +- FIXED: Fixed ArgumentError: invalid byte sequence in US-ASCII with Ruby 1.9.2 (#12). + +- CHANGED: Updated definitions (#11). + +- CHANGED: Renamed definitions.txt to definitions.dat. + + +#### Release 0.8.2 + +- NEW: Added support for rubygems-test. + +- CHANGED: Integrated Bundler. + +- CHANGED: Updated definitions. + + +#### Release 0.8.1 + +- FIXED: The files in the release 0.8.0 have wrong permission 600 and can't be loaded (#10). + + +#### Release 0.8.0 + +- CHANGED: Update public suffix list to d1a5599b49fa 2010-10-25 15:10 +0100 (#9) + +- NEW: Add support for Fully Qualified Domain Names (#7) + + +#### Release 0.7.0 + +- CHANGED: Using YARD to document the code instead of RDoc. + +- FIXED: RuleList cache is not recreated when a new rule is appended to the list (#6) + +- FIXED: PublicSuffixService.valid? should return false if the domain is not defined or not allowed (#4, #5) + + +#### Release 0.6.0 + +- NEW: PublicSuffixService.parse raises DomainNotAllowed when trying to parse a domain name + which exists, but is not allowed by the current definition list (#3) + + PublicSuffixService.parse("nic.do") + # => PublicSuffixService::DomainNotAllowed + +- CHANGED: Renamed PublicSuffixService::InvalidDomain to PublicSuffixService::DomainInvalid + + +#### Release 0.5.2 + +- CHANGED: Update public suffix list to 248ea690d671 2010-09-16 18:02 +0100 + + +#### Release 0.5.1 + +- CHANGED: Update public suffix list to 14dc66dd53c1 2010-09-15 17:09 +0100 + + +#### Release 0.5.0 + +- CHANGED: Improve documentation for Domain#domain and Domain#subdomain (#1). + +- CHANGED: Performance improvements (#2). + + +#### Release 0.4.0 + +- CHANGED: Rename library from DomainName to PublicSuffixService to reduce the probability of name conflicts. + + +#### Release 0.3.1 + +- Deprecated DomainName library. + + +#### Release 0.3.0 + +- CHANGED: DomainName#domain and DomainName#subdomain are no longer alias of Domain#sld and Domain#tld. + +- CHANGED: Removed DomainName#labels and decoupled Rule from DomainName. + +- CHANGED: DomainName#valid? no longer instantiates new DomainName objects. This means less overhead. + +- CHANGED: Refactoring the entire DomainName API. Removed the internal on-the-fly parsing. Added a bunch of new methods to check and validate the DomainName. + + +#### Release 0.2.0 + +- NEW: DomainName#valid? + +- NEW: DomainName#parse and DomainName#parse! + +- NEW: DomainName#valid_domain? and DomainName#valid_subdomain? + +- CHANGED: Make sure RuleList lookup is only performed once. + + +#### Release 0.1.0 + +- Initial version diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Gemfile b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Gemfile new file mode 100644 index 0000000000..db22b745d0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Gemfile @@ -0,0 +1,10 @@ +source "https://rubygems.org" + +gemspec + +gem "coveralls", require: false +gem "minitest" +gem "minitest-reporters" +gem "rubocop", require: false + +gem "memory_profiler", require: false diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/LICENSE.txt new file mode 100644 index 0000000000..69e44dac99 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2009-2018 Simone Carletti + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/README.md b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/README.md new file mode 100644 index 0000000000..a82c95a1fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/README.md @@ -0,0 +1,202 @@ +# Public Suffix for Ruby + +PublicSuffix is a Ruby domain name parser based on the [Public Suffix List](https://publicsuffix.org/). + +[![Build Status](https://travis-ci.org/weppos/publicsuffix-ruby.svg?branch=master)](https://travis-ci.org/weppos/publicsuffix-ruby) + + +## Requirements + +- Ruby >= 2.1 + +For an older versions of Ruby use a previous release. + + +## Installation + +You can install the gem manually: + +```shell +$ gem install public_suffix +``` + +Or use Bundler and define it as a dependency in your `Gemfile`: + +```ruby +gem 'public_suffix' +``` + +If you are upgrading to 2.0, see [2.0-Upgrade.md](2.0-Upgrade.md). + +## Usage + +Extract the domain out from a name: + +```ruby +PublicSuffix.domain("google.com") +# => "google.com" +PublicSuffix.domain("www.google.com") +# => "google.com" +PublicSuffix.domain("www.google.co.uk") +# => "google.co.uk" +``` + +Parse a domain without subdomains: + +```ruby +domain = PublicSuffix.parse("google.com") +# => # +domain.tld +# => "com" +domain.sld +# => "google" +domain.trd +# => nil +domain.domain +# => "google.com" +domain.subdomain +# => nil +``` + +Parse a domain with subdomains: + +```ruby +domain = PublicSuffix.parse("www.google.com") +# => # +domain.tld +# => "com" +domain.sld +# => "google" +domain.trd +# => "www" +domain.domain +# => "google.com" +domain.subdomain +# => "www.google.com" +``` + +Simple validation example: + +```ruby +PublicSuffix.valid?("google.com") +# => true + +PublicSuffix.valid?("www.google.com") +# => true + +# Explicitly forbidden, it is listed as a private domain +PublicSuffix.valid?("blogspot.com") +# => false + +# Unknown/not-listed TLD domains are valid by default +PublicSuffix.valid?("example.tldnotlisted") +# => true +``` + +Strict validation (without applying the default * rule): + +```ruby +PublicSuffix.valid?("example.tldnotlisted", default_rule: nil) +# => false +``` + + +## Fully Qualified Domain Names + +This library automatically recognizes Fully Qualified Domain Names. A FQDN is a domain name that end with a trailing dot. + +```ruby +# Parse a standard domain name +PublicSuffix.domain("www.google.com") +# => "google.com" + +# Parse a fully qualified domain name +PublicSuffix.domain("www.google.com.") +# => "google.com" +``` + +## Private domains + +This library has support for switching off support for private (non-ICANN). + +```ruby +# Extract a domain including private domains (by default) +PublicSuffix.domain("something.blogspot.com") +# => "something.blogspot.com" + +# Extract a domain excluding private domains +PublicSuffix.domain("something.blogspot.com", ignore_private: true) +# => "blogspot.com" + +# It also works for #parse and #valid? +PublicSuffix.parse("something.blogspot.com", ignore_private: true) +PublicSuffix.valid?("something.blogspot.com", ignore_private: true) +``` + +If you don't care about private domains at all, it's more efficient to exclude them when the list is parsed: + +```ruby +# Disable support for private TLDs +PublicSuffix::List.default = PublicSuffix::List.parse(File.read(PublicSuffix::List::DEFAULT_LIST_PATH), private_domains: false) +# => "blogspot.com" +PublicSuffix.domain("something.blogspot.com") +# => "blogspot.com" +``` + + +## What is the Public Suffix List? + +The [Public Suffix List](https://publicsuffix.org) is a cross-vendor initiative to provide an accurate list of domain name suffixes. + +The Public Suffix List is an initiative of the Mozilla Project, but is maintained as a community resource. It is available for use in any software, but was originally created to meet the needs of browser manufacturers. + +A "public suffix" is one under which Internet users can directly register names. Some examples of public suffixes are ".com", ".co.uk" and "pvt.k12.wy.us". The Public Suffix List is a list of all known public suffixes. + + +## Why the Public Suffix List is better than any available Regular Expression parser? + +Previously, browsers used an algorithm which basically only denied setting wide-ranging cookies for top-level domains with no dots (e.g. com or org). However, this did not work for top-level domains where only third-level registrations are allowed (e.g. co.uk). In these cases, websites could set a cookie for co.uk which will be passed onto every website registered under co.uk. + +Clearly, this was a security risk as it allowed websites other than the one setting the cookie to read it, and therefore potentially extract sensitive information. + +Since there is no algorithmic method of finding the highest level at which a domain may be registered for a particular top-level domain (the policies differ with each registry), the only method is to create a list of all top-level domains and the level at which domains can be registered. This is the aim of the effective TLD list. + +As well as being used to prevent cookies from being set where they shouldn't be, the list can also potentially be used for other applications where the registry controlled and privately controlled parts of a domain name need to be known, for example when grouping by top-level domains. + +Source: https://wiki.mozilla.org/Public_Suffix_List + +Not convinced yet? Check out [this real world example](https://stackoverflow.com/q/288810/123527). + + +## Does PublicSuffix make requests to Public Suffix List website? + +No. PublicSuffix comes with a bundled list. It does not make any HTTP requests to parse or validate a domain. + + +## Feedback and bug reports + +If you use this library and find yourself missing any functionality, please [let me know](mailto:weppos@weppos.net). + +Pull requests are very welcome! Please include tests and/or feature coverage for every patch, and create a topic branch for every separate change you make. + +Report issues or feature requests to [GitHub Issues](https://github.com/weppos/publicsuffix-ruby/issues). + + +## More + +- [Homepage](https://simonecarletti.com/code/publicsuffix-ruby) +- [Repository](https://github.com/weppos/publicsuffix-ruby) +- [API Documentation](http://rubydoc.info/gems/public_suffix) +- [Introducing the Public Suffix List library for Ruby](https://simonecarletti.com/blog/2010/06/public-suffix-list-library-for-ruby/) + + +## Changelog + +See the [CHANGELOG.md](CHANGELOG.md) file for details. + + +## License + +Copyright (c) 2009-2018 Simone Carletti. This is Free Software distributed under the MIT license. + +The [Public Suffix List source](https://publicsuffix.org/list/) is subject to the terms of the Mozilla Public License, v. 2.0. diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Rakefile b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Rakefile new file mode 100644 index 0000000000..d304b66255 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/Rakefile @@ -0,0 +1,49 @@ +require "bundler/gem_tasks" + +# By default, run tests and linter. +task default: [:test, :rubocop] + + +require "rake/testtask" + +Rake::TestTask.new do |t| + t.libs = %w( lib test ) + t.pattern = "test/**/*_test.rb" + t.verbose = !ENV["VERBOSE"].nil? + t.warning = !ENV["WARNING"].nil? +end + +require "rubocop/rake_task" + +RuboCop::RakeTask.new + + +require "yard/rake/yardoc_task" + +YARD::Rake::YardocTask.new(:yardoc) do |y| + y.options = ["--output-dir", "yardoc"] +end + +CLOBBER.include "yardoc" + + +task :benchmarks do + Dir["benchmarks/bm_*.rb"].each do |file| + sh "ruby #{file}" + end +end +task default: [:benchmarks] if ENV["BENCHMARKS"] == "1" + + +desc "Downloads the Public Suffix List file from the repository and stores it locally." +task :"update-list" do + require "net/http" + + DEFINITION_URL = "https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat".freeze + + File.open("data/list.txt", "w+") do |f| + response = Net::HTTP.get_response(URI.parse(DEFINITION_URL)) + response.body + f.write(response.body) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/bin/console b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/bin/console new file mode 100755 index 0000000000..fd0f7392bf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/bin/console @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby + +require "bundler/setup" +require "public_suffix" + +# You can add fixtures and/or initialization code here to make experimenting +# with your gem easier. You can also use a different console, if you like. + +# (If you use this, don't forget to add pry to your Gemfile!) +# require "pry" +# Pry.start + +require "irb" +IRB.start diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/data/list.txt b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/data/list.txt new file mode 100644 index 0000000000..f671831a79 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/data/list.txt @@ -0,0 +1,12659 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, +// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. + +// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. + +// ===BEGIN ICANN DOMAINS=== + +// ac : https://en.wikipedia.org/wiki/.ac +ac +com.ac +edu.ac +gov.ac +net.ac +mil.ac +org.ac + +// ad : https://en.wikipedia.org/wiki/.ad +ad +nom.ad + +// ae : https://en.wikipedia.org/wiki/.ae +// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php +ae +co.ae +net.ae +org.ae +sch.ae +ac.ae +gov.ae +mil.ae + +// aero : see https://www.information.aero/index.php?id=66 +aero +accident-investigation.aero +accident-prevention.aero +aerobatic.aero +aeroclub.aero +aerodrome.aero +agents.aero +aircraft.aero +airline.aero +airport.aero +air-surveillance.aero +airtraffic.aero +air-traffic-control.aero +ambulance.aero +amusement.aero +association.aero +author.aero +ballooning.aero +broker.aero +caa.aero +cargo.aero +catering.aero +certification.aero +championship.aero +charter.aero +civilaviation.aero +club.aero +conference.aero +consultant.aero +consulting.aero +control.aero +council.aero +crew.aero +design.aero +dgca.aero +educator.aero +emergency.aero +engine.aero +engineer.aero +entertainment.aero +equipment.aero +exchange.aero +express.aero +federation.aero +flight.aero +freight.aero +fuel.aero +gliding.aero +government.aero +groundhandling.aero +group.aero +hanggliding.aero +homebuilt.aero +insurance.aero +journal.aero +journalist.aero +leasing.aero +logistics.aero +magazine.aero +maintenance.aero +media.aero +microlight.aero +modelling.aero +navigation.aero +parachuting.aero +paragliding.aero +passenger-association.aero +pilot.aero +press.aero +production.aero +recreation.aero +repbody.aero +res.aero +research.aero +rotorcraft.aero +safety.aero +scientist.aero +services.aero +show.aero +skydiving.aero +software.aero +student.aero +trader.aero +trading.aero +trainer.aero +union.aero +workinggroup.aero +works.aero + +// af : http://www.nic.af/help.jsp +af +gov.af +com.af +org.af +net.af +edu.af + +// ag : http://www.nic.ag/prices.htm +ag +com.ag +org.ag +net.ag +co.ag +nom.ag + +// ai : http://nic.com.ai/ +ai +off.ai +com.ai +net.ai +org.ai + +// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 +al +com.al +edu.al +gov.al +mil.al +net.al +org.al + +// am : https://en.wikipedia.org/wiki/.am +am + +// ao : https://en.wikipedia.org/wiki/.ao +// http://www.dns.ao/REGISTR.DOC +ao +ed.ao +gv.ao +og.ao +co.ao +pb.ao +it.ao + +// aq : https://en.wikipedia.org/wiki/.aq +aq + +// ar : https://nic.ar/nic-argentina/normativa-vigente +ar +com.ar +edu.ar +gob.ar +gov.ar +int.ar +mil.ar +musica.ar +net.ar +org.ar +tur.ar + +// arpa : https://en.wikipedia.org/wiki/.arpa +// Confirmed by registry 2008-06-18 +arpa +e164.arpa +in-addr.arpa +ip6.arpa +iris.arpa +uri.arpa +urn.arpa + +// as : https://en.wikipedia.org/wiki/.as +as +gov.as + +// asia : https://en.wikipedia.org/wiki/.asia +asia + +// at : https://en.wikipedia.org/wiki/.at +// Confirmed by registry 2008-06-17 +at +ac.at +co.at +gv.at +or.at + +// au : https://en.wikipedia.org/wiki/.au +// http://www.auda.org.au/ +au +// 2LDs +com.au +net.au +org.au +edu.au +gov.au +asn.au +id.au +// Historic 2LDs (closed to new registration, but sites still exist) +info.au +conf.au +oz.au +// CGDNs - http://www.cgdn.org.au/ +act.au +nsw.au +nt.au +qld.au +sa.au +tas.au +vic.au +wa.au +// 3LDs +act.edu.au +nsw.edu.au +nt.edu.au +qld.edu.au +sa.edu.au +tas.edu.au +vic.edu.au +wa.edu.au +// act.gov.au Bug 984824 - Removed at request of Greg Tankard +// nsw.gov.au Bug 547985 - Removed at request of +// nt.gov.au Bug 940478 - Removed at request of Greg Connors +qld.gov.au +sa.gov.au +tas.gov.au +vic.gov.au +wa.gov.au + +// aw : https://en.wikipedia.org/wiki/.aw +aw +com.aw + +// ax : https://en.wikipedia.org/wiki/.ax +ax + +// az : https://en.wikipedia.org/wiki/.az +az +com.az +net.az +int.az +gov.az +org.az +edu.az +info.az +pp.az +mil.az +name.az +pro.az +biz.az + +// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf +ba +com.ba +edu.ba +gov.ba +mil.ba +net.ba +org.ba + +// bb : https://en.wikipedia.org/wiki/.bb +bb +biz.bb +co.bb +com.bb +edu.bb +gov.bb +info.bb +net.bb +org.bb +store.bb +tv.bb + +// bd : https://en.wikipedia.org/wiki/.bd +*.bd + +// be : https://en.wikipedia.org/wiki/.be +// Confirmed by registry 2008-06-08 +be +ac.be + +// bf : https://en.wikipedia.org/wiki/.bf +bf +gov.bf + +// bg : https://en.wikipedia.org/wiki/.bg +// https://www.register.bg/user/static/rules/en/index.html +bg +a.bg +b.bg +c.bg +d.bg +e.bg +f.bg +g.bg +h.bg +i.bg +j.bg +k.bg +l.bg +m.bg +n.bg +o.bg +p.bg +q.bg +r.bg +s.bg +t.bg +u.bg +v.bg +w.bg +x.bg +y.bg +z.bg +0.bg +1.bg +2.bg +3.bg +4.bg +5.bg +6.bg +7.bg +8.bg +9.bg + +// bh : https://en.wikipedia.org/wiki/.bh +bh +com.bh +edu.bh +net.bh +org.bh +gov.bh + +// bi : https://en.wikipedia.org/wiki/.bi +// http://whois.nic.bi/ +bi +co.bi +com.bi +edu.bi +or.bi +org.bi + +// biz : https://en.wikipedia.org/wiki/.biz +biz + +// bj : https://en.wikipedia.org/wiki/.bj +bj +asso.bj +barreau.bj +gouv.bj + +// bm : http://www.bermudanic.bm/dnr-text.txt +bm +com.bm +edu.bm +gov.bm +net.bm +org.bm + +// bn : http://www.bnnic.bn/faqs +bn +com.bn +edu.bn +gov.bn +net.bn +org.bn + +// bo : https://nic.bo/delegacion2015.php#h-1.10 +bo +com.bo +edu.bo +gob.bo +int.bo +org.bo +net.bo +mil.bo +tv.bo +web.bo +// Social Domains +academia.bo +agro.bo +arte.bo +blog.bo +bolivia.bo +ciencia.bo +cooperativa.bo +democracia.bo +deporte.bo +ecologia.bo +economia.bo +empresa.bo +indigena.bo +industria.bo +info.bo +medicina.bo +movimiento.bo +musica.bo +natural.bo +nombre.bo +noticias.bo +patria.bo +politica.bo +profesional.bo +plurinacional.bo +pueblo.bo +revista.bo +salud.bo +tecnologia.bo +tksat.bo +transporte.bo +wiki.bo + +// br : http://registro.br/dominio/categoria.html +// Submitted by registry +br +9guacu.br +abc.br +adm.br +adv.br +agr.br +aju.br +am.br +anani.br +aparecida.br +arq.br +art.br +ato.br +b.br +barueri.br +belem.br +bhz.br +bio.br +blog.br +bmd.br +boavista.br +bsb.br +campinagrande.br +campinas.br +caxias.br +cim.br +cng.br +cnt.br +com.br +contagem.br +coop.br +cri.br +cuiaba.br +curitiba.br +def.br +ecn.br +eco.br +edu.br +emp.br +eng.br +esp.br +etc.br +eti.br +far.br +feira.br +flog.br +floripa.br +fm.br +fnd.br +fortal.br +fot.br +foz.br +fst.br +g12.br +ggf.br +goiania.br +gov.br +// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil +ac.gov.br +al.gov.br +am.gov.br +ap.gov.br +ba.gov.br +ce.gov.br +df.gov.br +es.gov.br +go.gov.br +ma.gov.br +mg.gov.br +ms.gov.br +mt.gov.br +pa.gov.br +pb.gov.br +pe.gov.br +pi.gov.br +pr.gov.br +rj.gov.br +rn.gov.br +ro.gov.br +rr.gov.br +rs.gov.br +sc.gov.br +se.gov.br +sp.gov.br +to.gov.br +gru.br +imb.br +ind.br +inf.br +jab.br +jampa.br +jdf.br +joinville.br +jor.br +jus.br +leg.br +lel.br +londrina.br +macapa.br +maceio.br +manaus.br +maringa.br +mat.br +med.br +mil.br +morena.br +mp.br +mus.br +natal.br +net.br +niteroi.br +*.nom.br +not.br +ntr.br +odo.br +org.br +osasco.br +palmas.br +poa.br +ppg.br +pro.br +psc.br +psi.br +pvh.br +qsl.br +radio.br +rec.br +recife.br +ribeirao.br +rio.br +riobranco.br +riopreto.br +salvador.br +sampa.br +santamaria.br +santoandre.br +saobernardo.br +saogonca.br +sjc.br +slg.br +slz.br +sorocaba.br +srv.br +taxi.br +teo.br +the.br +tmp.br +trd.br +tur.br +tv.br +udi.br +vet.br +vix.br +vlog.br +wiki.br +zlg.br + +// bs : http://www.nic.bs/rules.html +bs +com.bs +net.bs +org.bs +edu.bs +gov.bs + +// bt : https://en.wikipedia.org/wiki/.bt +bt +com.bt +edu.bt +gov.bt +net.bt +org.bt + +// bv : No registrations at this time. +// Submitted by registry +bv + +// bw : https://en.wikipedia.org/wiki/.bw +// http://www.gobin.info/domainname/bw.doc +// list of other 2nd level tlds ? +bw +co.bw +org.bw + +// by : https://en.wikipedia.org/wiki/.by +// http://tld.by/rules_2006_en.html +// list of other 2nd level tlds ? +by +gov.by +mil.by +// Official information does not indicate that com.by is a reserved +// second-level domain, but it's being used as one (see www.google.com.by and +// www.yahoo.com.by, for example), so we list it here for safety's sake. +com.by + +// http://hoster.by/ +of.by + +// bz : https://en.wikipedia.org/wiki/.bz +// http://www.belizenic.bz/ +bz +com.bz +net.bz +org.bz +edu.bz +gov.bz + +// ca : https://en.wikipedia.org/wiki/.ca +ca +// ca geographical names +ab.ca +bc.ca +mb.ca +nb.ca +nf.ca +nl.ca +ns.ca +nt.ca +nu.ca +on.ca +pe.ca +qc.ca +sk.ca +yk.ca +// gc.ca: https://en.wikipedia.org/wiki/.gc.ca +// see also: http://registry.gc.ca/en/SubdomainFAQ +gc.ca + +// cat : https://en.wikipedia.org/wiki/.cat +cat + +// cc : https://en.wikipedia.org/wiki/.cc +cc + +// cd : https://en.wikipedia.org/wiki/.cd +// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 +cd +gov.cd + +// cf : https://en.wikipedia.org/wiki/.cf +cf + +// cg : https://en.wikipedia.org/wiki/.cg +cg + +// ch : https://en.wikipedia.org/wiki/.ch +ch + +// ci : https://en.wikipedia.org/wiki/.ci +// http://www.nic.ci/index.php?page=charte +ci +org.ci +or.ci +com.ci +co.ci +edu.ci +ed.ci +ac.ci +net.ci +go.ci +asso.ci +aéroport.ci +int.ci +presse.ci +md.ci +gouv.ci + +// ck : https://en.wikipedia.org/wiki/.ck +*.ck +!www.ck + +// cl : https://en.wikipedia.org/wiki/.cl +cl +gov.cl +gob.cl +co.cl +mil.cl + +// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927 +cm +co.cm +com.cm +gov.cm +net.cm + +// cn : https://en.wikipedia.org/wiki/.cn +// Submitted by registry +cn +ac.cn +com.cn +edu.cn +gov.cn +net.cn +org.cn +mil.cn +公司.cn +网络.cn +網絡.cn +// cn geographic names +ah.cn +bj.cn +cq.cn +fj.cn +gd.cn +gs.cn +gz.cn +gx.cn +ha.cn +hb.cn +he.cn +hi.cn +hl.cn +hn.cn +jl.cn +js.cn +jx.cn +ln.cn +nm.cn +nx.cn +qh.cn +sc.cn +sd.cn +sh.cn +sn.cn +sx.cn +tj.cn +xj.cn +xz.cn +yn.cn +zj.cn +hk.cn +mo.cn +tw.cn + +// co : https://en.wikipedia.org/wiki/.co +// Submitted by registry +co +arts.co +com.co +edu.co +firm.co +gov.co +info.co +int.co +mil.co +net.co +nom.co +org.co +rec.co +web.co + +// com : https://en.wikipedia.org/wiki/.com +com + +// coop : https://en.wikipedia.org/wiki/.coop +coop + +// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do +cr +ac.cr +co.cr +ed.cr +fi.cr +go.cr +or.cr +sa.cr + +// cu : https://en.wikipedia.org/wiki/.cu +cu +com.cu +edu.cu +org.cu +net.cu +gov.cu +inf.cu + +// cv : https://en.wikipedia.org/wiki/.cv +cv + +// cw : http://www.una.cw/cw_registry/ +// Confirmed by registry 2013-03-26 +cw +com.cw +edu.cw +net.cw +org.cw + +// cx : https://en.wikipedia.org/wiki/.cx +// list of other 2nd level tlds ? +cx +gov.cx + +// cy : http://www.nic.cy/ +// Submitted by registry Panayiotou Fotia +cy +ac.cy +biz.cy +com.cy +ekloges.cy +gov.cy +ltd.cy +name.cy +net.cy +org.cy +parliament.cy +press.cy +pro.cy +tm.cy + +// cz : https://en.wikipedia.org/wiki/.cz +cz + +// de : https://en.wikipedia.org/wiki/.de +// Confirmed by registry (with technical +// reservations) 2008-07-01 +de + +// dj : https://en.wikipedia.org/wiki/.dj +dj + +// dk : https://en.wikipedia.org/wiki/.dk +// Confirmed by registry 2008-06-17 +dk + +// dm : https://en.wikipedia.org/wiki/.dm +dm +com.dm +net.dm +org.dm +edu.dm +gov.dm + +// do : https://en.wikipedia.org/wiki/.do +do +art.do +com.do +edu.do +gob.do +gov.do +mil.do +net.do +org.do +sld.do +web.do + +// dz : https://en.wikipedia.org/wiki/.dz +dz +com.dz +org.dz +net.dz +gov.dz +edu.dz +asso.dz +pol.dz +art.dz + +// ec : http://www.nic.ec/reg/paso1.asp +// Submitted by registry +ec +com.ec +info.ec +net.ec +fin.ec +k12.ec +med.ec +pro.ec +org.ec +edu.ec +gov.ec +gob.ec +mil.ec + +// edu : https://en.wikipedia.org/wiki/.edu +edu + +// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B +ee +edu.ee +gov.ee +riik.ee +lib.ee +med.ee +com.ee +pri.ee +aip.ee +org.ee +fie.ee + +// eg : https://en.wikipedia.org/wiki/.eg +eg +com.eg +edu.eg +eun.eg +gov.eg +mil.eg +name.eg +net.eg +org.eg +sci.eg + +// er : https://en.wikipedia.org/wiki/.er +*.er + +// es : https://www.nic.es/site_ingles/ingles/dominios/index.html +es +com.es +nom.es +org.es +gob.es +edu.es + +// et : https://en.wikipedia.org/wiki/.et +et +com.et +gov.et +org.et +edu.et +biz.et +name.et +info.et +net.et + +// eu : https://en.wikipedia.org/wiki/.eu +eu + +// fi : https://en.wikipedia.org/wiki/.fi +fi +// aland.fi : https://en.wikipedia.org/wiki/.ax +// This domain is being phased out in favor of .ax. As there are still many +// domains under aland.fi, we still keep it on the list until aland.fi is +// completely removed. +// TODO: Check for updates (expected to be phased out around Q1/2009) +aland.fi + +// fj : https://en.wikipedia.org/wiki/.fj +*.fj + +// fk : https://en.wikipedia.org/wiki/.fk +*.fk + +// fm : https://en.wikipedia.org/wiki/.fm +fm + +// fo : https://en.wikipedia.org/wiki/.fo +fo + +// fr : http://www.afnic.fr/ +// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs +fr +com.fr +asso.fr +nom.fr +prd.fr +presse.fr +tm.fr +// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels +aeroport.fr +assedic.fr +avocat.fr +avoues.fr +cci.fr +chambagri.fr +chirurgiens-dentistes.fr +experts-comptables.fr +geometre-expert.fr +gouv.fr +greta.fr +huissier-justice.fr +medecin.fr +notaires.fr +pharmacien.fr +port.fr +veterinaire.fr + +// ga : https://en.wikipedia.org/wiki/.ga +ga + +// gb : This registry is effectively dormant +// Submitted by registry +gb + +// gd : https://en.wikipedia.org/wiki/.gd +gd + +// ge : http://www.nic.net.ge/policy_en.pdf +ge +com.ge +edu.ge +gov.ge +org.ge +mil.ge +net.ge +pvt.ge + +// gf : https://en.wikipedia.org/wiki/.gf +gf + +// gg : http://www.channelisles.net/register-domains/ +// Confirmed by registry 2013-11-28 +gg +co.gg +net.gg +org.gg + +// gh : https://en.wikipedia.org/wiki/.gh +// see also: http://www.nic.gh/reg_now.php +// Although domains directly at second level are not possible at the moment, +// they have been possible for some time and may come back. +gh +com.gh +edu.gh +gov.gh +org.gh +mil.gh + +// gi : http://www.nic.gi/rules.html +gi +com.gi +ltd.gi +gov.gi +mod.gi +edu.gi +org.gi + +// gl : https://en.wikipedia.org/wiki/.gl +// http://nic.gl +gl +co.gl +com.gl +edu.gl +net.gl +org.gl + +// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm +gm + +// gn : http://psg.com/dns/gn/gn.txt +// Submitted by registry +gn +ac.gn +com.gn +edu.gn +gov.gn +org.gn +net.gn + +// gov : https://en.wikipedia.org/wiki/.gov +gov + +// gp : http://www.nic.gp/index.php?lang=en +gp +com.gp +net.gp +mobi.gp +edu.gp +org.gp +asso.gp + +// gq : https://en.wikipedia.org/wiki/.gq +gq + +// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html +// Submitted by registry +gr +com.gr +edu.gr +net.gr +org.gr +gov.gr + +// gs : https://en.wikipedia.org/wiki/.gs +gs + +// gt : http://www.gt/politicas_de_registro.html +gt +com.gt +edu.gt +gob.gt +ind.gt +mil.gt +net.gt +org.gt + +// gu : http://gadao.gov.gu/register.html +// University of Guam : https://www.uog.edu +// Submitted by uognoc@triton.uog.edu +gu +com.gu +edu.gu +gov.gu +guam.gu +info.gu +net.gu +org.gu +web.gu + +// gw : https://en.wikipedia.org/wiki/.gw +gw + +// gy : https://en.wikipedia.org/wiki/.gy +// http://registry.gy/ +gy +co.gy +com.gy +edu.gy +gov.gy +net.gy +org.gy + +// hk : https://www.hkirc.hk +// Submitted by registry +hk +com.hk +edu.hk +gov.hk +idv.hk +net.hk +org.hk +公司.hk +教育.hk +敎育.hk +政府.hk +個人.hk +个人.hk +箇人.hk +網络.hk +网络.hk +组織.hk +網絡.hk +网絡.hk +组织.hk +組織.hk +組织.hk + +// hm : https://en.wikipedia.org/wiki/.hm +hm + +// hn : http://www.nic.hn/politicas/ps02,,05.html +hn +com.hn +edu.hn +org.hn +net.hn +mil.hn +gob.hn + +// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf +hr +iz.hr +from.hr +name.hr +com.hr + +// ht : http://www.nic.ht/info/charte.cfm +ht +com.ht +shop.ht +firm.ht +info.ht +adult.ht +net.ht +pro.ht +org.ht +med.ht +art.ht +coop.ht +pol.ht +asso.ht +edu.ht +rel.ht +gouv.ht +perso.ht + +// hu : http://www.domain.hu/domain/English/sld.html +// Confirmed by registry 2008-06-12 +hu +co.hu +info.hu +org.hu +priv.hu +sport.hu +tm.hu +2000.hu +agrar.hu +bolt.hu +casino.hu +city.hu +erotica.hu +erotika.hu +film.hu +forum.hu +games.hu +hotel.hu +ingatlan.hu +jogasz.hu +konyvelo.hu +lakas.hu +media.hu +news.hu +reklam.hu +sex.hu +shop.hu +suli.hu +szex.hu +tozsde.hu +utazas.hu +video.hu + +// id : https://pandi.id/en/domain/registration-requirements/ +id +ac.id +biz.id +co.id +desa.id +go.id +mil.id +my.id +net.id +or.id +ponpes.id +sch.id +web.id + +// ie : https://en.wikipedia.org/wiki/.ie +ie +gov.ie + +// il : http://www.isoc.org.il/domains/ +il +ac.il +co.il +gov.il +idf.il +k12.il +muni.il +net.il +org.il + +// im : https://www.nic.im/ +// Submitted by registry +im +ac.im +co.im +com.im +ltd.co.im +net.im +org.im +plc.co.im +tt.im +tv.im + +// in : https://en.wikipedia.org/wiki/.in +// see also: https://registry.in/Policies +// Please note, that nic.in is not an official eTLD, but used by most +// government institutions. +in +co.in +firm.in +net.in +org.in +gen.in +ind.in +nic.in +ac.in +edu.in +res.in +gov.in +mil.in + +// info : https://en.wikipedia.org/wiki/.info +info + +// int : https://en.wikipedia.org/wiki/.int +// Confirmed by registry 2008-06-18 +int +eu.int + +// io : http://www.nic.io/rules.html +// list of other 2nd level tlds ? +io +com.io + +// iq : http://www.cmc.iq/english/iq/iqregister1.htm +iq +gov.iq +edu.iq +mil.iq +com.iq +org.iq +net.iq + +// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules +// Also see http://www.nic.ir/Internationalized_Domain_Names +// Two .ir entries added at request of , 2010-04-16 +ir +ac.ir +co.ir +gov.ir +id.ir +net.ir +org.ir +sch.ir +// xn--mgba3a4f16a.ir (.ir, Persian YEH) +ایران.ir +// xn--mgba3a4fra.ir (.ir, Arabic YEH) +ايران.ir + +// is : http://www.isnic.is/domain/rules.php +// Confirmed by registry 2008-12-06 +is +net.is +com.is +edu.is +gov.is +org.is +int.is + +// it : https://en.wikipedia.org/wiki/.it +it +gov.it +edu.it +// Reserved geo-names (regions and provinces): +// http://www.nic.it/sites/default/files/docs/Regulation_assignation_v7.1.pdf +// Regions +abr.it +abruzzo.it +aosta-valley.it +aostavalley.it +bas.it +basilicata.it +cal.it +calabria.it +cam.it +campania.it +emilia-romagna.it +emiliaromagna.it +emr.it +friuli-v-giulia.it +friuli-ve-giulia.it +friuli-vegiulia.it +friuli-venezia-giulia.it +friuli-veneziagiulia.it +friuli-vgiulia.it +friuliv-giulia.it +friulive-giulia.it +friulivegiulia.it +friulivenezia-giulia.it +friuliveneziagiulia.it +friulivgiulia.it +fvg.it +laz.it +lazio.it +lig.it +liguria.it +lom.it +lombardia.it +lombardy.it +lucania.it +mar.it +marche.it +mol.it +molise.it +piedmont.it +piemonte.it +pmn.it +pug.it +puglia.it +sar.it +sardegna.it +sardinia.it +sic.it +sicilia.it +sicily.it +taa.it +tos.it +toscana.it +trentin-sud-tirol.it +trentin-süd-tirol.it +trentin-sudtirol.it +trentin-südtirol.it +trentin-sued-tirol.it +trentin-suedtirol.it +trentino-a-adige.it +trentino-aadige.it +trentino-alto-adige.it +trentino-altoadige.it +trentino-s-tirol.it +trentino-stirol.it +trentino-sud-tirol.it +trentino-süd-tirol.it +trentino-sudtirol.it +trentino-südtirol.it +trentino-sued-tirol.it +trentino-suedtirol.it +trentino.it +trentinoa-adige.it +trentinoaadige.it +trentinoalto-adige.it +trentinoaltoadige.it +trentinos-tirol.it +trentinostirol.it +trentinosud-tirol.it +trentinosüd-tirol.it +trentinosudtirol.it +trentinosüdtirol.it +trentinosued-tirol.it +trentinosuedtirol.it +trentinsud-tirol.it +trentinsüd-tirol.it +trentinsudtirol.it +trentinsüdtirol.it +trentinsued-tirol.it +trentinsuedtirol.it +tuscany.it +umb.it +umbria.it +val-d-aosta.it +val-daosta.it +vald-aosta.it +valdaosta.it +valle-aosta.it +valle-d-aosta.it +valle-daosta.it +valleaosta.it +valled-aosta.it +valledaosta.it +vallee-aoste.it +vallée-aoste.it +vallee-d-aoste.it +vallée-d-aoste.it +valleeaoste.it +valléeaoste.it +valleedaoste.it +valléedaoste.it +vao.it +vda.it +ven.it +veneto.it +// Provinces +ag.it +agrigento.it +al.it +alessandria.it +alto-adige.it +altoadige.it +an.it +ancona.it +andria-barletta-trani.it +andria-trani-barletta.it +andriabarlettatrani.it +andriatranibarletta.it +ao.it +aosta.it +aoste.it +ap.it +aq.it +aquila.it +ar.it +arezzo.it +ascoli-piceno.it +ascolipiceno.it +asti.it +at.it +av.it +avellino.it +ba.it +balsan-sudtirol.it +balsan-südtirol.it +balsan-suedtirol.it +balsan.it +bari.it +barletta-trani-andria.it +barlettatraniandria.it +belluno.it +benevento.it +bergamo.it +bg.it +bi.it +biella.it +bl.it +bn.it +bo.it +bologna.it +bolzano-altoadige.it +bolzano.it +bozen-sudtirol.it +bozen-südtirol.it +bozen-suedtirol.it +bozen.it +br.it +brescia.it +brindisi.it +bs.it +bt.it +bulsan-sudtirol.it +bulsan-südtirol.it +bulsan-suedtirol.it +bulsan.it +bz.it +ca.it +cagliari.it +caltanissetta.it +campidano-medio.it +campidanomedio.it +campobasso.it +carbonia-iglesias.it +carboniaiglesias.it +carrara-massa.it +carraramassa.it +caserta.it +catania.it +catanzaro.it +cb.it +ce.it +cesena-forli.it +cesena-forlì.it +cesenaforli.it +cesenaforlì.it +ch.it +chieti.it +ci.it +cl.it +cn.it +co.it +como.it +cosenza.it +cr.it +cremona.it +crotone.it +cs.it +ct.it +cuneo.it +cz.it +dell-ogliastra.it +dellogliastra.it +en.it +enna.it +fc.it +fe.it +fermo.it +ferrara.it +fg.it +fi.it +firenze.it +florence.it +fm.it +foggia.it +forli-cesena.it +forlì-cesena.it +forlicesena.it +forlìcesena.it +fr.it +frosinone.it +ge.it +genoa.it +genova.it +go.it +gorizia.it +gr.it +grosseto.it +iglesias-carbonia.it +iglesiascarbonia.it +im.it +imperia.it +is.it +isernia.it +kr.it +la-spezia.it +laquila.it +laspezia.it +latina.it +lc.it +le.it +lecce.it +lecco.it +li.it +livorno.it +lo.it +lodi.it +lt.it +lu.it +lucca.it +macerata.it +mantova.it +massa-carrara.it +massacarrara.it +matera.it +mb.it +mc.it +me.it +medio-campidano.it +mediocampidano.it +messina.it +mi.it +milan.it +milano.it +mn.it +mo.it +modena.it +monza-brianza.it +monza-e-della-brianza.it +monza.it +monzabrianza.it +monzaebrianza.it +monzaedellabrianza.it +ms.it +mt.it +na.it +naples.it +napoli.it +no.it +novara.it +nu.it +nuoro.it +og.it +ogliastra.it +olbia-tempio.it +olbiatempio.it +or.it +oristano.it +ot.it +pa.it +padova.it +padua.it +palermo.it +parma.it +pavia.it +pc.it +pd.it +pe.it +perugia.it +pesaro-urbino.it +pesarourbino.it +pescara.it +pg.it +pi.it +piacenza.it +pisa.it +pistoia.it +pn.it +po.it +pordenone.it +potenza.it +pr.it +prato.it +pt.it +pu.it +pv.it +pz.it +ra.it +ragusa.it +ravenna.it +rc.it +re.it +reggio-calabria.it +reggio-emilia.it +reggiocalabria.it +reggioemilia.it +rg.it +ri.it +rieti.it +rimini.it +rm.it +rn.it +ro.it +roma.it +rome.it +rovigo.it +sa.it +salerno.it +sassari.it +savona.it +si.it +siena.it +siracusa.it +so.it +sondrio.it +sp.it +sr.it +ss.it +suedtirol.it +südtirol.it +sv.it +ta.it +taranto.it +te.it +tempio-olbia.it +tempioolbia.it +teramo.it +terni.it +tn.it +to.it +torino.it +tp.it +tr.it +trani-andria-barletta.it +trani-barletta-andria.it +traniandriabarletta.it +tranibarlettaandria.it +trapani.it +trento.it +treviso.it +trieste.it +ts.it +turin.it +tv.it +ud.it +udine.it +urbino-pesaro.it +urbinopesaro.it +va.it +varese.it +vb.it +vc.it +ve.it +venezia.it +venice.it +verbania.it +vercelli.it +verona.it +vi.it +vibo-valentia.it +vibovalentia.it +vicenza.it +viterbo.it +vr.it +vs.it +vt.it +vv.it + +// je : http://www.channelisles.net/register-domains/ +// Confirmed by registry 2013-11-28 +je +co.je +net.je +org.je + +// jm : http://www.com.jm/register.html +*.jm + +// jo : http://www.dns.jo/Registration_policy.aspx +jo +com.jo +org.jo +net.jo +edu.jo +sch.jo +gov.jo +mil.jo +name.jo + +// jobs : https://en.wikipedia.org/wiki/.jobs +jobs + +// jp : https://en.wikipedia.org/wiki/.jp +// http://jprs.co.jp/en/jpdomain.html +// Submitted by registry +jp +// jp organizational type names +ac.jp +ad.jp +co.jp +ed.jp +go.jp +gr.jp +lg.jp +ne.jp +or.jp +// jp prefecture type names +aichi.jp +akita.jp +aomori.jp +chiba.jp +ehime.jp +fukui.jp +fukuoka.jp +fukushima.jp +gifu.jp +gunma.jp +hiroshima.jp +hokkaido.jp +hyogo.jp +ibaraki.jp +ishikawa.jp +iwate.jp +kagawa.jp +kagoshima.jp +kanagawa.jp +kochi.jp +kumamoto.jp +kyoto.jp +mie.jp +miyagi.jp +miyazaki.jp +nagano.jp +nagasaki.jp +nara.jp +niigata.jp +oita.jp +okayama.jp +okinawa.jp +osaka.jp +saga.jp +saitama.jp +shiga.jp +shimane.jp +shizuoka.jp +tochigi.jp +tokushima.jp +tokyo.jp +tottori.jp +toyama.jp +wakayama.jp +yamagata.jp +yamaguchi.jp +yamanashi.jp +栃木.jp +愛知.jp +愛媛.jp +兵庫.jp +熊本.jp +茨城.jp +北海道.jp +千葉.jp +和歌山.jp +長崎.jp +長野.jp +新潟.jp +青森.jp +静岡.jp +東京.jp +石川.jp +埼玉.jp +三重.jp +京都.jp +佐賀.jp +大分.jp +大阪.jp +奈良.jp +宮城.jp +宮崎.jp +富山.jp +山口.jp +山形.jp +山梨.jp +岩手.jp +岐阜.jp +岡山.jp +島根.jp +広島.jp +徳島.jp +沖縄.jp +滋賀.jp +神奈川.jp +福井.jp +福岡.jp +福島.jp +秋田.jp +群馬.jp +香川.jp +高知.jp +鳥取.jp +鹿児島.jp +// jp geographic type names +// http://jprs.jp/doc/rule/saisoku-1.html +*.kawasaki.jp +*.kitakyushu.jp +*.kobe.jp +*.nagoya.jp +*.sapporo.jp +*.sendai.jp +*.yokohama.jp +!city.kawasaki.jp +!city.kitakyushu.jp +!city.kobe.jp +!city.nagoya.jp +!city.sapporo.jp +!city.sendai.jp +!city.yokohama.jp +// 4th level registration +aisai.aichi.jp +ama.aichi.jp +anjo.aichi.jp +asuke.aichi.jp +chiryu.aichi.jp +chita.aichi.jp +fuso.aichi.jp +gamagori.aichi.jp +handa.aichi.jp +hazu.aichi.jp +hekinan.aichi.jp +higashiura.aichi.jp +ichinomiya.aichi.jp +inazawa.aichi.jp +inuyama.aichi.jp +isshiki.aichi.jp +iwakura.aichi.jp +kanie.aichi.jp +kariya.aichi.jp +kasugai.aichi.jp +kira.aichi.jp +kiyosu.aichi.jp +komaki.aichi.jp +konan.aichi.jp +kota.aichi.jp +mihama.aichi.jp +miyoshi.aichi.jp +nishio.aichi.jp +nisshin.aichi.jp +obu.aichi.jp +oguchi.aichi.jp +oharu.aichi.jp +okazaki.aichi.jp +owariasahi.aichi.jp +seto.aichi.jp +shikatsu.aichi.jp +shinshiro.aichi.jp +shitara.aichi.jp +tahara.aichi.jp +takahama.aichi.jp +tobishima.aichi.jp +toei.aichi.jp +togo.aichi.jp +tokai.aichi.jp +tokoname.aichi.jp +toyoake.aichi.jp +toyohashi.aichi.jp +toyokawa.aichi.jp +toyone.aichi.jp +toyota.aichi.jp +tsushima.aichi.jp +yatomi.aichi.jp +akita.akita.jp +daisen.akita.jp +fujisato.akita.jp +gojome.akita.jp +hachirogata.akita.jp +happou.akita.jp +higashinaruse.akita.jp +honjo.akita.jp +honjyo.akita.jp +ikawa.akita.jp +kamikoani.akita.jp +kamioka.akita.jp +katagami.akita.jp +kazuno.akita.jp +kitaakita.akita.jp +kosaka.akita.jp +kyowa.akita.jp +misato.akita.jp +mitane.akita.jp +moriyoshi.akita.jp +nikaho.akita.jp +noshiro.akita.jp +odate.akita.jp +oga.akita.jp +ogata.akita.jp +semboku.akita.jp +yokote.akita.jp +yurihonjo.akita.jp +aomori.aomori.jp +gonohe.aomori.jp +hachinohe.aomori.jp +hashikami.aomori.jp +hiranai.aomori.jp +hirosaki.aomori.jp +itayanagi.aomori.jp +kuroishi.aomori.jp +misawa.aomori.jp +mutsu.aomori.jp +nakadomari.aomori.jp +noheji.aomori.jp +oirase.aomori.jp +owani.aomori.jp +rokunohe.aomori.jp +sannohe.aomori.jp +shichinohe.aomori.jp +shingo.aomori.jp +takko.aomori.jp +towada.aomori.jp +tsugaru.aomori.jp +tsuruta.aomori.jp +abiko.chiba.jp +asahi.chiba.jp +chonan.chiba.jp +chosei.chiba.jp +choshi.chiba.jp +chuo.chiba.jp +funabashi.chiba.jp +futtsu.chiba.jp +hanamigawa.chiba.jp +ichihara.chiba.jp +ichikawa.chiba.jp +ichinomiya.chiba.jp +inzai.chiba.jp +isumi.chiba.jp +kamagaya.chiba.jp +kamogawa.chiba.jp +kashiwa.chiba.jp +katori.chiba.jp +katsuura.chiba.jp +kimitsu.chiba.jp +kisarazu.chiba.jp +kozaki.chiba.jp +kujukuri.chiba.jp +kyonan.chiba.jp +matsudo.chiba.jp +midori.chiba.jp +mihama.chiba.jp +minamiboso.chiba.jp +mobara.chiba.jp +mutsuzawa.chiba.jp +nagara.chiba.jp +nagareyama.chiba.jp +narashino.chiba.jp +narita.chiba.jp +noda.chiba.jp +oamishirasato.chiba.jp +omigawa.chiba.jp +onjuku.chiba.jp +otaki.chiba.jp +sakae.chiba.jp +sakura.chiba.jp +shimofusa.chiba.jp +shirako.chiba.jp +shiroi.chiba.jp +shisui.chiba.jp +sodegaura.chiba.jp +sosa.chiba.jp +tako.chiba.jp +tateyama.chiba.jp +togane.chiba.jp +tohnosho.chiba.jp +tomisato.chiba.jp +urayasu.chiba.jp +yachimata.chiba.jp +yachiyo.chiba.jp +yokaichiba.chiba.jp +yokoshibahikari.chiba.jp +yotsukaido.chiba.jp +ainan.ehime.jp +honai.ehime.jp +ikata.ehime.jp +imabari.ehime.jp +iyo.ehime.jp +kamijima.ehime.jp +kihoku.ehime.jp +kumakogen.ehime.jp +masaki.ehime.jp +matsuno.ehime.jp +matsuyama.ehime.jp +namikata.ehime.jp +niihama.ehime.jp +ozu.ehime.jp +saijo.ehime.jp +seiyo.ehime.jp +shikokuchuo.ehime.jp +tobe.ehime.jp +toon.ehime.jp +uchiko.ehime.jp +uwajima.ehime.jp +yawatahama.ehime.jp +echizen.fukui.jp +eiheiji.fukui.jp +fukui.fukui.jp +ikeda.fukui.jp +katsuyama.fukui.jp +mihama.fukui.jp +minamiechizen.fukui.jp +obama.fukui.jp +ohi.fukui.jp +ono.fukui.jp +sabae.fukui.jp +sakai.fukui.jp +takahama.fukui.jp +tsuruga.fukui.jp +wakasa.fukui.jp +ashiya.fukuoka.jp +buzen.fukuoka.jp +chikugo.fukuoka.jp +chikuho.fukuoka.jp +chikujo.fukuoka.jp +chikushino.fukuoka.jp +chikuzen.fukuoka.jp +chuo.fukuoka.jp +dazaifu.fukuoka.jp +fukuchi.fukuoka.jp +hakata.fukuoka.jp +higashi.fukuoka.jp +hirokawa.fukuoka.jp +hisayama.fukuoka.jp +iizuka.fukuoka.jp +inatsuki.fukuoka.jp +kaho.fukuoka.jp +kasuga.fukuoka.jp +kasuya.fukuoka.jp +kawara.fukuoka.jp +keisen.fukuoka.jp +koga.fukuoka.jp +kurate.fukuoka.jp +kurogi.fukuoka.jp +kurume.fukuoka.jp +minami.fukuoka.jp +miyako.fukuoka.jp +miyama.fukuoka.jp +miyawaka.fukuoka.jp +mizumaki.fukuoka.jp +munakata.fukuoka.jp +nakagawa.fukuoka.jp +nakama.fukuoka.jp +nishi.fukuoka.jp +nogata.fukuoka.jp +ogori.fukuoka.jp +okagaki.fukuoka.jp +okawa.fukuoka.jp +oki.fukuoka.jp +omuta.fukuoka.jp +onga.fukuoka.jp +onojo.fukuoka.jp +oto.fukuoka.jp +saigawa.fukuoka.jp +sasaguri.fukuoka.jp +shingu.fukuoka.jp +shinyoshitomi.fukuoka.jp +shonai.fukuoka.jp +soeda.fukuoka.jp +sue.fukuoka.jp +tachiarai.fukuoka.jp +tagawa.fukuoka.jp +takata.fukuoka.jp +toho.fukuoka.jp +toyotsu.fukuoka.jp +tsuiki.fukuoka.jp +ukiha.fukuoka.jp +umi.fukuoka.jp +usui.fukuoka.jp +yamada.fukuoka.jp +yame.fukuoka.jp +yanagawa.fukuoka.jp +yukuhashi.fukuoka.jp +aizubange.fukushima.jp +aizumisato.fukushima.jp +aizuwakamatsu.fukushima.jp +asakawa.fukushima.jp +bandai.fukushima.jp +date.fukushima.jp +fukushima.fukushima.jp +furudono.fukushima.jp +futaba.fukushima.jp +hanawa.fukushima.jp +higashi.fukushima.jp +hirata.fukushima.jp +hirono.fukushima.jp +iitate.fukushima.jp +inawashiro.fukushima.jp +ishikawa.fukushima.jp +iwaki.fukushima.jp +izumizaki.fukushima.jp +kagamiishi.fukushima.jp +kaneyama.fukushima.jp +kawamata.fukushima.jp +kitakata.fukushima.jp +kitashiobara.fukushima.jp +koori.fukushima.jp +koriyama.fukushima.jp +kunimi.fukushima.jp +miharu.fukushima.jp +mishima.fukushima.jp +namie.fukushima.jp +nango.fukushima.jp +nishiaizu.fukushima.jp +nishigo.fukushima.jp +okuma.fukushima.jp +omotego.fukushima.jp +ono.fukushima.jp +otama.fukushima.jp +samegawa.fukushima.jp +shimogo.fukushima.jp +shirakawa.fukushima.jp +showa.fukushima.jp +soma.fukushima.jp +sukagawa.fukushima.jp +taishin.fukushima.jp +tamakawa.fukushima.jp +tanagura.fukushima.jp +tenei.fukushima.jp +yabuki.fukushima.jp +yamato.fukushima.jp +yamatsuri.fukushima.jp +yanaizu.fukushima.jp +yugawa.fukushima.jp +anpachi.gifu.jp +ena.gifu.jp +gifu.gifu.jp +ginan.gifu.jp +godo.gifu.jp +gujo.gifu.jp +hashima.gifu.jp +hichiso.gifu.jp +hida.gifu.jp +higashishirakawa.gifu.jp +ibigawa.gifu.jp +ikeda.gifu.jp +kakamigahara.gifu.jp +kani.gifu.jp +kasahara.gifu.jp +kasamatsu.gifu.jp +kawaue.gifu.jp +kitagata.gifu.jp +mino.gifu.jp +minokamo.gifu.jp +mitake.gifu.jp +mizunami.gifu.jp +motosu.gifu.jp +nakatsugawa.gifu.jp +ogaki.gifu.jp +sakahogi.gifu.jp +seki.gifu.jp +sekigahara.gifu.jp +shirakawa.gifu.jp +tajimi.gifu.jp +takayama.gifu.jp +tarui.gifu.jp +toki.gifu.jp +tomika.gifu.jp +wanouchi.gifu.jp +yamagata.gifu.jp +yaotsu.gifu.jp +yoro.gifu.jp +annaka.gunma.jp +chiyoda.gunma.jp +fujioka.gunma.jp +higashiagatsuma.gunma.jp +isesaki.gunma.jp +itakura.gunma.jp +kanna.gunma.jp +kanra.gunma.jp +katashina.gunma.jp +kawaba.gunma.jp +kiryu.gunma.jp +kusatsu.gunma.jp +maebashi.gunma.jp +meiwa.gunma.jp +midori.gunma.jp +minakami.gunma.jp +naganohara.gunma.jp +nakanojo.gunma.jp +nanmoku.gunma.jp +numata.gunma.jp +oizumi.gunma.jp +ora.gunma.jp +ota.gunma.jp +shibukawa.gunma.jp +shimonita.gunma.jp +shinto.gunma.jp +showa.gunma.jp +takasaki.gunma.jp +takayama.gunma.jp +tamamura.gunma.jp +tatebayashi.gunma.jp +tomioka.gunma.jp +tsukiyono.gunma.jp +tsumagoi.gunma.jp +ueno.gunma.jp +yoshioka.gunma.jp +asaminami.hiroshima.jp +daiwa.hiroshima.jp +etajima.hiroshima.jp +fuchu.hiroshima.jp +fukuyama.hiroshima.jp +hatsukaichi.hiroshima.jp +higashihiroshima.hiroshima.jp +hongo.hiroshima.jp +jinsekikogen.hiroshima.jp +kaita.hiroshima.jp +kui.hiroshima.jp +kumano.hiroshima.jp +kure.hiroshima.jp +mihara.hiroshima.jp +miyoshi.hiroshima.jp +naka.hiroshima.jp +onomichi.hiroshima.jp +osakikamijima.hiroshima.jp +otake.hiroshima.jp +saka.hiroshima.jp +sera.hiroshima.jp +seranishi.hiroshima.jp +shinichi.hiroshima.jp +shobara.hiroshima.jp +takehara.hiroshima.jp +abashiri.hokkaido.jp +abira.hokkaido.jp +aibetsu.hokkaido.jp +akabira.hokkaido.jp +akkeshi.hokkaido.jp +asahikawa.hokkaido.jp +ashibetsu.hokkaido.jp +ashoro.hokkaido.jp +assabu.hokkaido.jp +atsuma.hokkaido.jp +bibai.hokkaido.jp +biei.hokkaido.jp +bifuka.hokkaido.jp +bihoro.hokkaido.jp +biratori.hokkaido.jp +chippubetsu.hokkaido.jp +chitose.hokkaido.jp +date.hokkaido.jp +ebetsu.hokkaido.jp +embetsu.hokkaido.jp +eniwa.hokkaido.jp +erimo.hokkaido.jp +esan.hokkaido.jp +esashi.hokkaido.jp +fukagawa.hokkaido.jp +fukushima.hokkaido.jp +furano.hokkaido.jp +furubira.hokkaido.jp +haboro.hokkaido.jp +hakodate.hokkaido.jp +hamatonbetsu.hokkaido.jp +hidaka.hokkaido.jp +higashikagura.hokkaido.jp +higashikawa.hokkaido.jp +hiroo.hokkaido.jp +hokuryu.hokkaido.jp +hokuto.hokkaido.jp +honbetsu.hokkaido.jp +horokanai.hokkaido.jp +horonobe.hokkaido.jp +ikeda.hokkaido.jp +imakane.hokkaido.jp +ishikari.hokkaido.jp +iwamizawa.hokkaido.jp +iwanai.hokkaido.jp +kamifurano.hokkaido.jp +kamikawa.hokkaido.jp +kamishihoro.hokkaido.jp +kamisunagawa.hokkaido.jp +kamoenai.hokkaido.jp +kayabe.hokkaido.jp +kembuchi.hokkaido.jp +kikonai.hokkaido.jp +kimobetsu.hokkaido.jp +kitahiroshima.hokkaido.jp +kitami.hokkaido.jp +kiyosato.hokkaido.jp +koshimizu.hokkaido.jp +kunneppu.hokkaido.jp +kuriyama.hokkaido.jp +kuromatsunai.hokkaido.jp +kushiro.hokkaido.jp +kutchan.hokkaido.jp +kyowa.hokkaido.jp +mashike.hokkaido.jp +matsumae.hokkaido.jp +mikasa.hokkaido.jp +minamifurano.hokkaido.jp +mombetsu.hokkaido.jp +moseushi.hokkaido.jp +mukawa.hokkaido.jp +muroran.hokkaido.jp +naie.hokkaido.jp +nakagawa.hokkaido.jp +nakasatsunai.hokkaido.jp +nakatombetsu.hokkaido.jp +nanae.hokkaido.jp +nanporo.hokkaido.jp +nayoro.hokkaido.jp +nemuro.hokkaido.jp +niikappu.hokkaido.jp +niki.hokkaido.jp +nishiokoppe.hokkaido.jp +noboribetsu.hokkaido.jp +numata.hokkaido.jp +obihiro.hokkaido.jp +obira.hokkaido.jp +oketo.hokkaido.jp +okoppe.hokkaido.jp +otaru.hokkaido.jp +otobe.hokkaido.jp +otofuke.hokkaido.jp +otoineppu.hokkaido.jp +oumu.hokkaido.jp +ozora.hokkaido.jp +pippu.hokkaido.jp +rankoshi.hokkaido.jp +rebun.hokkaido.jp +rikubetsu.hokkaido.jp +rishiri.hokkaido.jp +rishirifuji.hokkaido.jp +saroma.hokkaido.jp +sarufutsu.hokkaido.jp +shakotan.hokkaido.jp +shari.hokkaido.jp +shibecha.hokkaido.jp +shibetsu.hokkaido.jp +shikabe.hokkaido.jp +shikaoi.hokkaido.jp +shimamaki.hokkaido.jp +shimizu.hokkaido.jp +shimokawa.hokkaido.jp +shinshinotsu.hokkaido.jp +shintoku.hokkaido.jp +shiranuka.hokkaido.jp +shiraoi.hokkaido.jp +shiriuchi.hokkaido.jp +sobetsu.hokkaido.jp +sunagawa.hokkaido.jp +taiki.hokkaido.jp +takasu.hokkaido.jp +takikawa.hokkaido.jp +takinoue.hokkaido.jp +teshikaga.hokkaido.jp +tobetsu.hokkaido.jp +tohma.hokkaido.jp +tomakomai.hokkaido.jp +tomari.hokkaido.jp +toya.hokkaido.jp +toyako.hokkaido.jp +toyotomi.hokkaido.jp +toyoura.hokkaido.jp +tsubetsu.hokkaido.jp +tsukigata.hokkaido.jp +urakawa.hokkaido.jp +urausu.hokkaido.jp +uryu.hokkaido.jp +utashinai.hokkaido.jp +wakkanai.hokkaido.jp +wassamu.hokkaido.jp +yakumo.hokkaido.jp +yoichi.hokkaido.jp +aioi.hyogo.jp +akashi.hyogo.jp +ako.hyogo.jp +amagasaki.hyogo.jp +aogaki.hyogo.jp +asago.hyogo.jp +ashiya.hyogo.jp +awaji.hyogo.jp +fukusaki.hyogo.jp +goshiki.hyogo.jp +harima.hyogo.jp +himeji.hyogo.jp +ichikawa.hyogo.jp +inagawa.hyogo.jp +itami.hyogo.jp +kakogawa.hyogo.jp +kamigori.hyogo.jp +kamikawa.hyogo.jp +kasai.hyogo.jp +kasuga.hyogo.jp +kawanishi.hyogo.jp +miki.hyogo.jp +minamiawaji.hyogo.jp +nishinomiya.hyogo.jp +nishiwaki.hyogo.jp +ono.hyogo.jp +sanda.hyogo.jp +sannan.hyogo.jp +sasayama.hyogo.jp +sayo.hyogo.jp +shingu.hyogo.jp +shinonsen.hyogo.jp +shiso.hyogo.jp +sumoto.hyogo.jp +taishi.hyogo.jp +taka.hyogo.jp +takarazuka.hyogo.jp +takasago.hyogo.jp +takino.hyogo.jp +tamba.hyogo.jp +tatsuno.hyogo.jp +toyooka.hyogo.jp +yabu.hyogo.jp +yashiro.hyogo.jp +yoka.hyogo.jp +yokawa.hyogo.jp +ami.ibaraki.jp +asahi.ibaraki.jp +bando.ibaraki.jp +chikusei.ibaraki.jp +daigo.ibaraki.jp +fujishiro.ibaraki.jp +hitachi.ibaraki.jp +hitachinaka.ibaraki.jp +hitachiomiya.ibaraki.jp +hitachiota.ibaraki.jp +ibaraki.ibaraki.jp +ina.ibaraki.jp +inashiki.ibaraki.jp +itako.ibaraki.jp +iwama.ibaraki.jp +joso.ibaraki.jp +kamisu.ibaraki.jp +kasama.ibaraki.jp +kashima.ibaraki.jp +kasumigaura.ibaraki.jp +koga.ibaraki.jp +miho.ibaraki.jp +mito.ibaraki.jp +moriya.ibaraki.jp +naka.ibaraki.jp +namegata.ibaraki.jp +oarai.ibaraki.jp +ogawa.ibaraki.jp +omitama.ibaraki.jp +ryugasaki.ibaraki.jp +sakai.ibaraki.jp +sakuragawa.ibaraki.jp +shimodate.ibaraki.jp +shimotsuma.ibaraki.jp +shirosato.ibaraki.jp +sowa.ibaraki.jp +suifu.ibaraki.jp +takahagi.ibaraki.jp +tamatsukuri.ibaraki.jp +tokai.ibaraki.jp +tomobe.ibaraki.jp +tone.ibaraki.jp +toride.ibaraki.jp +tsuchiura.ibaraki.jp +tsukuba.ibaraki.jp +uchihara.ibaraki.jp +ushiku.ibaraki.jp +yachiyo.ibaraki.jp +yamagata.ibaraki.jp +yawara.ibaraki.jp +yuki.ibaraki.jp +anamizu.ishikawa.jp +hakui.ishikawa.jp +hakusan.ishikawa.jp +kaga.ishikawa.jp +kahoku.ishikawa.jp +kanazawa.ishikawa.jp +kawakita.ishikawa.jp +komatsu.ishikawa.jp +nakanoto.ishikawa.jp +nanao.ishikawa.jp +nomi.ishikawa.jp +nonoichi.ishikawa.jp +noto.ishikawa.jp +shika.ishikawa.jp +suzu.ishikawa.jp +tsubata.ishikawa.jp +tsurugi.ishikawa.jp +uchinada.ishikawa.jp +wajima.ishikawa.jp +fudai.iwate.jp +fujisawa.iwate.jp +hanamaki.iwate.jp +hiraizumi.iwate.jp +hirono.iwate.jp +ichinohe.iwate.jp +ichinoseki.iwate.jp +iwaizumi.iwate.jp +iwate.iwate.jp +joboji.iwate.jp +kamaishi.iwate.jp +kanegasaki.iwate.jp +karumai.iwate.jp +kawai.iwate.jp +kitakami.iwate.jp +kuji.iwate.jp +kunohe.iwate.jp +kuzumaki.iwate.jp +miyako.iwate.jp +mizusawa.iwate.jp +morioka.iwate.jp +ninohe.iwate.jp +noda.iwate.jp +ofunato.iwate.jp +oshu.iwate.jp +otsuchi.iwate.jp +rikuzentakata.iwate.jp +shiwa.iwate.jp +shizukuishi.iwate.jp +sumita.iwate.jp +tanohata.iwate.jp +tono.iwate.jp +yahaba.iwate.jp +yamada.iwate.jp +ayagawa.kagawa.jp +higashikagawa.kagawa.jp +kanonji.kagawa.jp +kotohira.kagawa.jp +manno.kagawa.jp +marugame.kagawa.jp +mitoyo.kagawa.jp +naoshima.kagawa.jp +sanuki.kagawa.jp +tadotsu.kagawa.jp +takamatsu.kagawa.jp +tonosho.kagawa.jp +uchinomi.kagawa.jp +utazu.kagawa.jp +zentsuji.kagawa.jp +akune.kagoshima.jp +amami.kagoshima.jp +hioki.kagoshima.jp +isa.kagoshima.jp +isen.kagoshima.jp +izumi.kagoshima.jp +kagoshima.kagoshima.jp +kanoya.kagoshima.jp +kawanabe.kagoshima.jp +kinko.kagoshima.jp +kouyama.kagoshima.jp +makurazaki.kagoshima.jp +matsumoto.kagoshima.jp +minamitane.kagoshima.jp +nakatane.kagoshima.jp +nishinoomote.kagoshima.jp +satsumasendai.kagoshima.jp +soo.kagoshima.jp +tarumizu.kagoshima.jp +yusui.kagoshima.jp +aikawa.kanagawa.jp +atsugi.kanagawa.jp +ayase.kanagawa.jp +chigasaki.kanagawa.jp +ebina.kanagawa.jp +fujisawa.kanagawa.jp +hadano.kanagawa.jp +hakone.kanagawa.jp +hiratsuka.kanagawa.jp +isehara.kanagawa.jp +kaisei.kanagawa.jp +kamakura.kanagawa.jp +kiyokawa.kanagawa.jp +matsuda.kanagawa.jp +minamiashigara.kanagawa.jp +miura.kanagawa.jp +nakai.kanagawa.jp +ninomiya.kanagawa.jp +odawara.kanagawa.jp +oi.kanagawa.jp +oiso.kanagawa.jp +sagamihara.kanagawa.jp +samukawa.kanagawa.jp +tsukui.kanagawa.jp +yamakita.kanagawa.jp +yamato.kanagawa.jp +yokosuka.kanagawa.jp +yugawara.kanagawa.jp +zama.kanagawa.jp +zushi.kanagawa.jp +aki.kochi.jp +geisei.kochi.jp +hidaka.kochi.jp +higashitsuno.kochi.jp +ino.kochi.jp +kagami.kochi.jp +kami.kochi.jp +kitagawa.kochi.jp +kochi.kochi.jp +mihara.kochi.jp +motoyama.kochi.jp +muroto.kochi.jp +nahari.kochi.jp +nakamura.kochi.jp +nankoku.kochi.jp +nishitosa.kochi.jp +niyodogawa.kochi.jp +ochi.kochi.jp +okawa.kochi.jp +otoyo.kochi.jp +otsuki.kochi.jp +sakawa.kochi.jp +sukumo.kochi.jp +susaki.kochi.jp +tosa.kochi.jp +tosashimizu.kochi.jp +toyo.kochi.jp +tsuno.kochi.jp +umaji.kochi.jp +yasuda.kochi.jp +yusuhara.kochi.jp +amakusa.kumamoto.jp +arao.kumamoto.jp +aso.kumamoto.jp +choyo.kumamoto.jp +gyokuto.kumamoto.jp +kamiamakusa.kumamoto.jp +kikuchi.kumamoto.jp +kumamoto.kumamoto.jp +mashiki.kumamoto.jp +mifune.kumamoto.jp +minamata.kumamoto.jp +minamioguni.kumamoto.jp +nagasu.kumamoto.jp +nishihara.kumamoto.jp +oguni.kumamoto.jp +ozu.kumamoto.jp +sumoto.kumamoto.jp +takamori.kumamoto.jp +uki.kumamoto.jp +uto.kumamoto.jp +yamaga.kumamoto.jp +yamato.kumamoto.jp +yatsushiro.kumamoto.jp +ayabe.kyoto.jp +fukuchiyama.kyoto.jp +higashiyama.kyoto.jp +ide.kyoto.jp +ine.kyoto.jp +joyo.kyoto.jp +kameoka.kyoto.jp +kamo.kyoto.jp +kita.kyoto.jp +kizu.kyoto.jp +kumiyama.kyoto.jp +kyotamba.kyoto.jp +kyotanabe.kyoto.jp +kyotango.kyoto.jp +maizuru.kyoto.jp +minami.kyoto.jp +minamiyamashiro.kyoto.jp +miyazu.kyoto.jp +muko.kyoto.jp +nagaokakyo.kyoto.jp +nakagyo.kyoto.jp +nantan.kyoto.jp +oyamazaki.kyoto.jp +sakyo.kyoto.jp +seika.kyoto.jp +tanabe.kyoto.jp +uji.kyoto.jp +ujitawara.kyoto.jp +wazuka.kyoto.jp +yamashina.kyoto.jp +yawata.kyoto.jp +asahi.mie.jp +inabe.mie.jp +ise.mie.jp +kameyama.mie.jp +kawagoe.mie.jp +kiho.mie.jp +kisosaki.mie.jp +kiwa.mie.jp +komono.mie.jp +kumano.mie.jp +kuwana.mie.jp +matsusaka.mie.jp +meiwa.mie.jp +mihama.mie.jp +minamiise.mie.jp +misugi.mie.jp +miyama.mie.jp +nabari.mie.jp +shima.mie.jp +suzuka.mie.jp +tado.mie.jp +taiki.mie.jp +taki.mie.jp +tamaki.mie.jp +toba.mie.jp +tsu.mie.jp +udono.mie.jp +ureshino.mie.jp +watarai.mie.jp +yokkaichi.mie.jp +furukawa.miyagi.jp +higashimatsushima.miyagi.jp +ishinomaki.miyagi.jp +iwanuma.miyagi.jp +kakuda.miyagi.jp +kami.miyagi.jp +kawasaki.miyagi.jp +marumori.miyagi.jp +matsushima.miyagi.jp +minamisanriku.miyagi.jp +misato.miyagi.jp +murata.miyagi.jp +natori.miyagi.jp +ogawara.miyagi.jp +ohira.miyagi.jp +onagawa.miyagi.jp +osaki.miyagi.jp +rifu.miyagi.jp +semine.miyagi.jp +shibata.miyagi.jp +shichikashuku.miyagi.jp +shikama.miyagi.jp +shiogama.miyagi.jp +shiroishi.miyagi.jp +tagajo.miyagi.jp +taiwa.miyagi.jp +tome.miyagi.jp +tomiya.miyagi.jp +wakuya.miyagi.jp +watari.miyagi.jp +yamamoto.miyagi.jp +zao.miyagi.jp +aya.miyazaki.jp +ebino.miyazaki.jp +gokase.miyazaki.jp +hyuga.miyazaki.jp +kadogawa.miyazaki.jp +kawaminami.miyazaki.jp +kijo.miyazaki.jp +kitagawa.miyazaki.jp +kitakata.miyazaki.jp +kitaura.miyazaki.jp +kobayashi.miyazaki.jp +kunitomi.miyazaki.jp +kushima.miyazaki.jp +mimata.miyazaki.jp +miyakonojo.miyazaki.jp +miyazaki.miyazaki.jp +morotsuka.miyazaki.jp +nichinan.miyazaki.jp +nishimera.miyazaki.jp +nobeoka.miyazaki.jp +saito.miyazaki.jp +shiiba.miyazaki.jp +shintomi.miyazaki.jp +takaharu.miyazaki.jp +takanabe.miyazaki.jp +takazaki.miyazaki.jp +tsuno.miyazaki.jp +achi.nagano.jp +agematsu.nagano.jp +anan.nagano.jp +aoki.nagano.jp +asahi.nagano.jp +azumino.nagano.jp +chikuhoku.nagano.jp +chikuma.nagano.jp +chino.nagano.jp +fujimi.nagano.jp +hakuba.nagano.jp +hara.nagano.jp +hiraya.nagano.jp +iida.nagano.jp +iijima.nagano.jp +iiyama.nagano.jp +iizuna.nagano.jp +ikeda.nagano.jp +ikusaka.nagano.jp +ina.nagano.jp +karuizawa.nagano.jp +kawakami.nagano.jp +kiso.nagano.jp +kisofukushima.nagano.jp +kitaaiki.nagano.jp +komagane.nagano.jp +komoro.nagano.jp +matsukawa.nagano.jp +matsumoto.nagano.jp +miasa.nagano.jp +minamiaiki.nagano.jp +minamimaki.nagano.jp +minamiminowa.nagano.jp +minowa.nagano.jp +miyada.nagano.jp +miyota.nagano.jp +mochizuki.nagano.jp +nagano.nagano.jp +nagawa.nagano.jp +nagiso.nagano.jp +nakagawa.nagano.jp +nakano.nagano.jp +nozawaonsen.nagano.jp +obuse.nagano.jp +ogawa.nagano.jp +okaya.nagano.jp +omachi.nagano.jp +omi.nagano.jp +ookuwa.nagano.jp +ooshika.nagano.jp +otaki.nagano.jp +otari.nagano.jp +sakae.nagano.jp +sakaki.nagano.jp +saku.nagano.jp +sakuho.nagano.jp +shimosuwa.nagano.jp +shinanomachi.nagano.jp +shiojiri.nagano.jp +suwa.nagano.jp +suzaka.nagano.jp +takagi.nagano.jp +takamori.nagano.jp +takayama.nagano.jp +tateshina.nagano.jp +tatsuno.nagano.jp +togakushi.nagano.jp +togura.nagano.jp +tomi.nagano.jp +ueda.nagano.jp +wada.nagano.jp +yamagata.nagano.jp +yamanouchi.nagano.jp +yasaka.nagano.jp +yasuoka.nagano.jp +chijiwa.nagasaki.jp +futsu.nagasaki.jp +goto.nagasaki.jp +hasami.nagasaki.jp +hirado.nagasaki.jp +iki.nagasaki.jp +isahaya.nagasaki.jp +kawatana.nagasaki.jp +kuchinotsu.nagasaki.jp +matsuura.nagasaki.jp +nagasaki.nagasaki.jp +obama.nagasaki.jp +omura.nagasaki.jp +oseto.nagasaki.jp +saikai.nagasaki.jp +sasebo.nagasaki.jp +seihi.nagasaki.jp +shimabara.nagasaki.jp +shinkamigoto.nagasaki.jp +togitsu.nagasaki.jp +tsushima.nagasaki.jp +unzen.nagasaki.jp +ando.nara.jp +gose.nara.jp +heguri.nara.jp +higashiyoshino.nara.jp +ikaruga.nara.jp +ikoma.nara.jp +kamikitayama.nara.jp +kanmaki.nara.jp +kashiba.nara.jp +kashihara.nara.jp +katsuragi.nara.jp +kawai.nara.jp +kawakami.nara.jp +kawanishi.nara.jp +koryo.nara.jp +kurotaki.nara.jp +mitsue.nara.jp +miyake.nara.jp +nara.nara.jp +nosegawa.nara.jp +oji.nara.jp +ouda.nara.jp +oyodo.nara.jp +sakurai.nara.jp +sango.nara.jp +shimoichi.nara.jp +shimokitayama.nara.jp +shinjo.nara.jp +soni.nara.jp +takatori.nara.jp +tawaramoto.nara.jp +tenkawa.nara.jp +tenri.nara.jp +uda.nara.jp +yamatokoriyama.nara.jp +yamatotakada.nara.jp +yamazoe.nara.jp +yoshino.nara.jp +aga.niigata.jp +agano.niigata.jp +gosen.niigata.jp +itoigawa.niigata.jp +izumozaki.niigata.jp +joetsu.niigata.jp +kamo.niigata.jp +kariwa.niigata.jp +kashiwazaki.niigata.jp +minamiuonuma.niigata.jp +mitsuke.niigata.jp +muika.niigata.jp +murakami.niigata.jp +myoko.niigata.jp +nagaoka.niigata.jp +niigata.niigata.jp +ojiya.niigata.jp +omi.niigata.jp +sado.niigata.jp +sanjo.niigata.jp +seiro.niigata.jp +seirou.niigata.jp +sekikawa.niigata.jp +shibata.niigata.jp +tagami.niigata.jp +tainai.niigata.jp +tochio.niigata.jp +tokamachi.niigata.jp +tsubame.niigata.jp +tsunan.niigata.jp +uonuma.niigata.jp +yahiko.niigata.jp +yoita.niigata.jp +yuzawa.niigata.jp +beppu.oita.jp +bungoono.oita.jp +bungotakada.oita.jp +hasama.oita.jp +hiji.oita.jp +himeshima.oita.jp +hita.oita.jp +kamitsue.oita.jp +kokonoe.oita.jp +kuju.oita.jp +kunisaki.oita.jp +kusu.oita.jp +oita.oita.jp +saiki.oita.jp +taketa.oita.jp +tsukumi.oita.jp +usa.oita.jp +usuki.oita.jp +yufu.oita.jp +akaiwa.okayama.jp +asakuchi.okayama.jp +bizen.okayama.jp +hayashima.okayama.jp +ibara.okayama.jp +kagamino.okayama.jp +kasaoka.okayama.jp +kibichuo.okayama.jp +kumenan.okayama.jp +kurashiki.okayama.jp +maniwa.okayama.jp +misaki.okayama.jp +nagi.okayama.jp +niimi.okayama.jp +nishiawakura.okayama.jp +okayama.okayama.jp +satosho.okayama.jp +setouchi.okayama.jp +shinjo.okayama.jp +shoo.okayama.jp +soja.okayama.jp +takahashi.okayama.jp +tamano.okayama.jp +tsuyama.okayama.jp +wake.okayama.jp +yakage.okayama.jp +aguni.okinawa.jp +ginowan.okinawa.jp +ginoza.okinawa.jp +gushikami.okinawa.jp +haebaru.okinawa.jp +higashi.okinawa.jp +hirara.okinawa.jp +iheya.okinawa.jp +ishigaki.okinawa.jp +ishikawa.okinawa.jp +itoman.okinawa.jp +izena.okinawa.jp +kadena.okinawa.jp +kin.okinawa.jp +kitadaito.okinawa.jp +kitanakagusuku.okinawa.jp +kumejima.okinawa.jp +kunigami.okinawa.jp +minamidaito.okinawa.jp +motobu.okinawa.jp +nago.okinawa.jp +naha.okinawa.jp +nakagusuku.okinawa.jp +nakijin.okinawa.jp +nanjo.okinawa.jp +nishihara.okinawa.jp +ogimi.okinawa.jp +okinawa.okinawa.jp +onna.okinawa.jp +shimoji.okinawa.jp +taketomi.okinawa.jp +tarama.okinawa.jp +tokashiki.okinawa.jp +tomigusuku.okinawa.jp +tonaki.okinawa.jp +urasoe.okinawa.jp +uruma.okinawa.jp +yaese.okinawa.jp +yomitan.okinawa.jp +yonabaru.okinawa.jp +yonaguni.okinawa.jp +zamami.okinawa.jp +abeno.osaka.jp +chihayaakasaka.osaka.jp +chuo.osaka.jp +daito.osaka.jp +fujiidera.osaka.jp +habikino.osaka.jp +hannan.osaka.jp +higashiosaka.osaka.jp +higashisumiyoshi.osaka.jp +higashiyodogawa.osaka.jp +hirakata.osaka.jp +ibaraki.osaka.jp +ikeda.osaka.jp +izumi.osaka.jp +izumiotsu.osaka.jp +izumisano.osaka.jp +kadoma.osaka.jp +kaizuka.osaka.jp +kanan.osaka.jp +kashiwara.osaka.jp +katano.osaka.jp +kawachinagano.osaka.jp +kishiwada.osaka.jp +kita.osaka.jp +kumatori.osaka.jp +matsubara.osaka.jp +minato.osaka.jp +minoh.osaka.jp +misaki.osaka.jp +moriguchi.osaka.jp +neyagawa.osaka.jp +nishi.osaka.jp +nose.osaka.jp +osakasayama.osaka.jp +sakai.osaka.jp +sayama.osaka.jp +sennan.osaka.jp +settsu.osaka.jp +shijonawate.osaka.jp +shimamoto.osaka.jp +suita.osaka.jp +tadaoka.osaka.jp +taishi.osaka.jp +tajiri.osaka.jp +takaishi.osaka.jp +takatsuki.osaka.jp +tondabayashi.osaka.jp +toyonaka.osaka.jp +toyono.osaka.jp +yao.osaka.jp +ariake.saga.jp +arita.saga.jp +fukudomi.saga.jp +genkai.saga.jp +hamatama.saga.jp +hizen.saga.jp +imari.saga.jp +kamimine.saga.jp +kanzaki.saga.jp +karatsu.saga.jp +kashima.saga.jp +kitagata.saga.jp +kitahata.saga.jp +kiyama.saga.jp +kouhoku.saga.jp +kyuragi.saga.jp +nishiarita.saga.jp +ogi.saga.jp +omachi.saga.jp +ouchi.saga.jp +saga.saga.jp +shiroishi.saga.jp +taku.saga.jp +tara.saga.jp +tosu.saga.jp +yoshinogari.saga.jp +arakawa.saitama.jp +asaka.saitama.jp +chichibu.saitama.jp +fujimi.saitama.jp +fujimino.saitama.jp +fukaya.saitama.jp +hanno.saitama.jp +hanyu.saitama.jp +hasuda.saitama.jp +hatogaya.saitama.jp +hatoyama.saitama.jp +hidaka.saitama.jp +higashichichibu.saitama.jp +higashimatsuyama.saitama.jp +honjo.saitama.jp +ina.saitama.jp +iruma.saitama.jp +iwatsuki.saitama.jp +kamiizumi.saitama.jp +kamikawa.saitama.jp +kamisato.saitama.jp +kasukabe.saitama.jp +kawagoe.saitama.jp +kawaguchi.saitama.jp +kawajima.saitama.jp +kazo.saitama.jp +kitamoto.saitama.jp +koshigaya.saitama.jp +kounosu.saitama.jp +kuki.saitama.jp +kumagaya.saitama.jp +matsubushi.saitama.jp +minano.saitama.jp +misato.saitama.jp +miyashiro.saitama.jp +miyoshi.saitama.jp +moroyama.saitama.jp +nagatoro.saitama.jp +namegawa.saitama.jp +niiza.saitama.jp +ogano.saitama.jp +ogawa.saitama.jp +ogose.saitama.jp +okegawa.saitama.jp +omiya.saitama.jp +otaki.saitama.jp +ranzan.saitama.jp +ryokami.saitama.jp +saitama.saitama.jp +sakado.saitama.jp +satte.saitama.jp +sayama.saitama.jp +shiki.saitama.jp +shiraoka.saitama.jp +soka.saitama.jp +sugito.saitama.jp +toda.saitama.jp +tokigawa.saitama.jp +tokorozawa.saitama.jp +tsurugashima.saitama.jp +urawa.saitama.jp +warabi.saitama.jp +yashio.saitama.jp +yokoze.saitama.jp +yono.saitama.jp +yorii.saitama.jp +yoshida.saitama.jp +yoshikawa.saitama.jp +yoshimi.saitama.jp +aisho.shiga.jp +gamo.shiga.jp +higashiomi.shiga.jp +hikone.shiga.jp +koka.shiga.jp +konan.shiga.jp +kosei.shiga.jp +koto.shiga.jp +kusatsu.shiga.jp +maibara.shiga.jp +moriyama.shiga.jp +nagahama.shiga.jp +nishiazai.shiga.jp +notogawa.shiga.jp +omihachiman.shiga.jp +otsu.shiga.jp +ritto.shiga.jp +ryuoh.shiga.jp +takashima.shiga.jp +takatsuki.shiga.jp +torahime.shiga.jp +toyosato.shiga.jp +yasu.shiga.jp +akagi.shimane.jp +ama.shimane.jp +gotsu.shimane.jp +hamada.shimane.jp +higashiizumo.shimane.jp +hikawa.shimane.jp +hikimi.shimane.jp +izumo.shimane.jp +kakinoki.shimane.jp +masuda.shimane.jp +matsue.shimane.jp +misato.shimane.jp +nishinoshima.shimane.jp +ohda.shimane.jp +okinoshima.shimane.jp +okuizumo.shimane.jp +shimane.shimane.jp +tamayu.shimane.jp +tsuwano.shimane.jp +unnan.shimane.jp +yakumo.shimane.jp +yasugi.shimane.jp +yatsuka.shimane.jp +arai.shizuoka.jp +atami.shizuoka.jp +fuji.shizuoka.jp +fujieda.shizuoka.jp +fujikawa.shizuoka.jp +fujinomiya.shizuoka.jp +fukuroi.shizuoka.jp +gotemba.shizuoka.jp +haibara.shizuoka.jp +hamamatsu.shizuoka.jp +higashiizu.shizuoka.jp +ito.shizuoka.jp +iwata.shizuoka.jp +izu.shizuoka.jp +izunokuni.shizuoka.jp +kakegawa.shizuoka.jp +kannami.shizuoka.jp +kawanehon.shizuoka.jp +kawazu.shizuoka.jp +kikugawa.shizuoka.jp +kosai.shizuoka.jp +makinohara.shizuoka.jp +matsuzaki.shizuoka.jp +minamiizu.shizuoka.jp +mishima.shizuoka.jp +morimachi.shizuoka.jp +nishiizu.shizuoka.jp +numazu.shizuoka.jp +omaezaki.shizuoka.jp +shimada.shizuoka.jp +shimizu.shizuoka.jp +shimoda.shizuoka.jp +shizuoka.shizuoka.jp +susono.shizuoka.jp +yaizu.shizuoka.jp +yoshida.shizuoka.jp +ashikaga.tochigi.jp +bato.tochigi.jp +haga.tochigi.jp +ichikai.tochigi.jp +iwafune.tochigi.jp +kaminokawa.tochigi.jp +kanuma.tochigi.jp +karasuyama.tochigi.jp +kuroiso.tochigi.jp +mashiko.tochigi.jp +mibu.tochigi.jp +moka.tochigi.jp +motegi.tochigi.jp +nasu.tochigi.jp +nasushiobara.tochigi.jp +nikko.tochigi.jp +nishikata.tochigi.jp +nogi.tochigi.jp +ohira.tochigi.jp +ohtawara.tochigi.jp +oyama.tochigi.jp +sakura.tochigi.jp +sano.tochigi.jp +shimotsuke.tochigi.jp +shioya.tochigi.jp +takanezawa.tochigi.jp +tochigi.tochigi.jp +tsuga.tochigi.jp +ujiie.tochigi.jp +utsunomiya.tochigi.jp +yaita.tochigi.jp +aizumi.tokushima.jp +anan.tokushima.jp +ichiba.tokushima.jp +itano.tokushima.jp +kainan.tokushima.jp +komatsushima.tokushima.jp +matsushige.tokushima.jp +mima.tokushima.jp +minami.tokushima.jp +miyoshi.tokushima.jp +mugi.tokushima.jp +nakagawa.tokushima.jp +naruto.tokushima.jp +sanagochi.tokushima.jp +shishikui.tokushima.jp +tokushima.tokushima.jp +wajiki.tokushima.jp +adachi.tokyo.jp +akiruno.tokyo.jp +akishima.tokyo.jp +aogashima.tokyo.jp +arakawa.tokyo.jp +bunkyo.tokyo.jp +chiyoda.tokyo.jp +chofu.tokyo.jp +chuo.tokyo.jp +edogawa.tokyo.jp +fuchu.tokyo.jp +fussa.tokyo.jp +hachijo.tokyo.jp +hachioji.tokyo.jp +hamura.tokyo.jp +higashikurume.tokyo.jp +higashimurayama.tokyo.jp +higashiyamato.tokyo.jp +hino.tokyo.jp +hinode.tokyo.jp +hinohara.tokyo.jp +inagi.tokyo.jp +itabashi.tokyo.jp +katsushika.tokyo.jp +kita.tokyo.jp +kiyose.tokyo.jp +kodaira.tokyo.jp +koganei.tokyo.jp +kokubunji.tokyo.jp +komae.tokyo.jp +koto.tokyo.jp +kouzushima.tokyo.jp +kunitachi.tokyo.jp +machida.tokyo.jp +meguro.tokyo.jp +minato.tokyo.jp +mitaka.tokyo.jp +mizuho.tokyo.jp +musashimurayama.tokyo.jp +musashino.tokyo.jp +nakano.tokyo.jp +nerima.tokyo.jp +ogasawara.tokyo.jp +okutama.tokyo.jp +ome.tokyo.jp +oshima.tokyo.jp +ota.tokyo.jp +setagaya.tokyo.jp +shibuya.tokyo.jp +shinagawa.tokyo.jp +shinjuku.tokyo.jp +suginami.tokyo.jp +sumida.tokyo.jp +tachikawa.tokyo.jp +taito.tokyo.jp +tama.tokyo.jp +toshima.tokyo.jp +chizu.tottori.jp +hino.tottori.jp +kawahara.tottori.jp +koge.tottori.jp +kotoura.tottori.jp +misasa.tottori.jp +nanbu.tottori.jp +nichinan.tottori.jp +sakaiminato.tottori.jp +tottori.tottori.jp +wakasa.tottori.jp +yazu.tottori.jp +yonago.tottori.jp +asahi.toyama.jp +fuchu.toyama.jp +fukumitsu.toyama.jp +funahashi.toyama.jp +himi.toyama.jp +imizu.toyama.jp +inami.toyama.jp +johana.toyama.jp +kamiichi.toyama.jp +kurobe.toyama.jp +nakaniikawa.toyama.jp +namerikawa.toyama.jp +nanto.toyama.jp +nyuzen.toyama.jp +oyabe.toyama.jp +taira.toyama.jp +takaoka.toyama.jp +tateyama.toyama.jp +toga.toyama.jp +tonami.toyama.jp +toyama.toyama.jp +unazuki.toyama.jp +uozu.toyama.jp +yamada.toyama.jp +arida.wakayama.jp +aridagawa.wakayama.jp +gobo.wakayama.jp +hashimoto.wakayama.jp +hidaka.wakayama.jp +hirogawa.wakayama.jp +inami.wakayama.jp +iwade.wakayama.jp +kainan.wakayama.jp +kamitonda.wakayama.jp +katsuragi.wakayama.jp +kimino.wakayama.jp +kinokawa.wakayama.jp +kitayama.wakayama.jp +koya.wakayama.jp +koza.wakayama.jp +kozagawa.wakayama.jp +kudoyama.wakayama.jp +kushimoto.wakayama.jp +mihama.wakayama.jp +misato.wakayama.jp +nachikatsuura.wakayama.jp +shingu.wakayama.jp +shirahama.wakayama.jp +taiji.wakayama.jp +tanabe.wakayama.jp +wakayama.wakayama.jp +yuasa.wakayama.jp +yura.wakayama.jp +asahi.yamagata.jp +funagata.yamagata.jp +higashine.yamagata.jp +iide.yamagata.jp +kahoku.yamagata.jp +kaminoyama.yamagata.jp +kaneyama.yamagata.jp +kawanishi.yamagata.jp +mamurogawa.yamagata.jp +mikawa.yamagata.jp +murayama.yamagata.jp +nagai.yamagata.jp +nakayama.yamagata.jp +nanyo.yamagata.jp +nishikawa.yamagata.jp +obanazawa.yamagata.jp +oe.yamagata.jp +oguni.yamagata.jp +ohkura.yamagata.jp +oishida.yamagata.jp +sagae.yamagata.jp +sakata.yamagata.jp +sakegawa.yamagata.jp +shinjo.yamagata.jp +shirataka.yamagata.jp +shonai.yamagata.jp +takahata.yamagata.jp +tendo.yamagata.jp +tozawa.yamagata.jp +tsuruoka.yamagata.jp +yamagata.yamagata.jp +yamanobe.yamagata.jp +yonezawa.yamagata.jp +yuza.yamagata.jp +abu.yamaguchi.jp +hagi.yamaguchi.jp +hikari.yamaguchi.jp +hofu.yamaguchi.jp +iwakuni.yamaguchi.jp +kudamatsu.yamaguchi.jp +mitou.yamaguchi.jp +nagato.yamaguchi.jp +oshima.yamaguchi.jp +shimonoseki.yamaguchi.jp +shunan.yamaguchi.jp +tabuse.yamaguchi.jp +tokuyama.yamaguchi.jp +toyota.yamaguchi.jp +ube.yamaguchi.jp +yuu.yamaguchi.jp +chuo.yamanashi.jp +doshi.yamanashi.jp +fuefuki.yamanashi.jp +fujikawa.yamanashi.jp +fujikawaguchiko.yamanashi.jp +fujiyoshida.yamanashi.jp +hayakawa.yamanashi.jp +hokuto.yamanashi.jp +ichikawamisato.yamanashi.jp +kai.yamanashi.jp +kofu.yamanashi.jp +koshu.yamanashi.jp +kosuge.yamanashi.jp +minami-alps.yamanashi.jp +minobu.yamanashi.jp +nakamichi.yamanashi.jp +nanbu.yamanashi.jp +narusawa.yamanashi.jp +nirasaki.yamanashi.jp +nishikatsura.yamanashi.jp +oshino.yamanashi.jp +otsuki.yamanashi.jp +showa.yamanashi.jp +tabayama.yamanashi.jp +tsuru.yamanashi.jp +uenohara.yamanashi.jp +yamanakako.yamanashi.jp +yamanashi.yamanashi.jp + +// ke : http://www.kenic.or.ke/index.php/en/ke-domains/ke-domains +ke +ac.ke +co.ke +go.ke +info.ke +me.ke +mobi.ke +ne.ke +or.ke +sc.ke + +// kg : http://www.domain.kg/dmn_n.html +kg +org.kg +net.kg +com.kg +edu.kg +gov.kg +mil.kg + +// kh : http://www.mptc.gov.kh/dns_registration.htm +*.kh + +// ki : http://www.ki/dns/index.html +ki +edu.ki +biz.ki +net.ki +org.ki +gov.ki +info.ki +com.ki + +// km : https://en.wikipedia.org/wiki/.km +// http://www.domaine.km/documents/charte.doc +km +org.km +nom.km +gov.km +prd.km +tm.km +edu.km +mil.km +ass.km +com.km +// These are only mentioned as proposed suggestions at domaine.km, but +// https://en.wikipedia.org/wiki/.km says they're available for registration: +coop.km +asso.km +presse.km +medecin.km +notaires.km +pharmaciens.km +veterinaire.km +gouv.km + +// kn : https://en.wikipedia.org/wiki/.kn +// http://www.dot.kn/domainRules.html +kn +net.kn +org.kn +edu.kn +gov.kn + +// kp : http://www.kcce.kp/en_index.php +kp +com.kp +edu.kp +gov.kp +org.kp +rep.kp +tra.kp + +// kr : https://en.wikipedia.org/wiki/.kr +// see also: http://domain.nida.or.kr/eng/registration.jsp +kr +ac.kr +co.kr +es.kr +go.kr +hs.kr +kg.kr +mil.kr +ms.kr +ne.kr +or.kr +pe.kr +re.kr +sc.kr +// kr geographical names +busan.kr +chungbuk.kr +chungnam.kr +daegu.kr +daejeon.kr +gangwon.kr +gwangju.kr +gyeongbuk.kr +gyeonggi.kr +gyeongnam.kr +incheon.kr +jeju.kr +jeonbuk.kr +jeonnam.kr +seoul.kr +ulsan.kr + +// kw : https://www.nic.kw/policies/ +// Confirmed by registry +kw +com.kw +edu.kw +emb.kw +gov.kw +ind.kw +net.kw +org.kw + +// ky : http://www.icta.ky/da_ky_reg_dom.php +// Confirmed by registry 2008-06-17 +ky +edu.ky +gov.ky +com.ky +org.ky +net.ky + +// kz : https://en.wikipedia.org/wiki/.kz +// see also: http://www.nic.kz/rules/index.jsp +kz +org.kz +edu.kz +net.kz +gov.kz +mil.kz +com.kz + +// la : https://en.wikipedia.org/wiki/.la +// Submitted by registry +la +int.la +net.la +info.la +edu.la +gov.la +per.la +com.la +org.la + +// lb : https://en.wikipedia.org/wiki/.lb +// Submitted by registry +lb +com.lb +edu.lb +gov.lb +net.lb +org.lb + +// lc : https://en.wikipedia.org/wiki/.lc +// see also: http://www.nic.lc/rules.htm +lc +com.lc +net.lc +co.lc +org.lc +edu.lc +gov.lc + +// li : https://en.wikipedia.org/wiki/.li +li + +// lk : http://www.nic.lk/seclevpr.html +lk +gov.lk +sch.lk +net.lk +int.lk +com.lk +org.lk +edu.lk +ngo.lk +soc.lk +web.lk +ltd.lk +assn.lk +grp.lk +hotel.lk +ac.lk + +// lr : http://psg.com/dns/lr/lr.txt +// Submitted by registry +lr +com.lr +edu.lr +gov.lr +org.lr +net.lr + +// ls : https://en.wikipedia.org/wiki/.ls +ls +co.ls +org.ls + +// lt : https://en.wikipedia.org/wiki/.lt +lt +// gov.lt : http://www.gov.lt/index_en.php +gov.lt + +// lu : http://www.dns.lu/en/ +lu + +// lv : http://www.nic.lv/DNS/En/generic.php +lv +com.lv +edu.lv +gov.lv +org.lv +mil.lv +id.lv +net.lv +asn.lv +conf.lv + +// ly : http://www.nic.ly/regulations.php +ly +com.ly +net.ly +gov.ly +plc.ly +edu.ly +sch.ly +med.ly +org.ly +id.ly + +// ma : https://en.wikipedia.org/wiki/.ma +// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf +ma +co.ma +net.ma +gov.ma +org.ma +ac.ma +press.ma + +// mc : http://www.nic.mc/ +mc +tm.mc +asso.mc + +// md : https://en.wikipedia.org/wiki/.md +md + +// me : https://en.wikipedia.org/wiki/.me +me +co.me +net.me +org.me +edu.me +ac.me +gov.me +its.me +priv.me + +// mg : http://nic.mg/nicmg/?page_id=39 +mg +org.mg +nom.mg +gov.mg +prd.mg +tm.mg +edu.mg +mil.mg +com.mg +co.mg + +// mh : https://en.wikipedia.org/wiki/.mh +mh + +// mil : https://en.wikipedia.org/wiki/.mil +mil + +// mk : https://en.wikipedia.org/wiki/.mk +// see also: http://dns.marnet.net.mk/postapka.php +mk +com.mk +org.mk +net.mk +edu.mk +gov.mk +inf.mk +name.mk + +// ml : http://www.gobin.info/domainname/ml-template.doc +// see also: https://en.wikipedia.org/wiki/.ml +ml +com.ml +edu.ml +gouv.ml +gov.ml +net.ml +org.ml +presse.ml + +// mm : https://en.wikipedia.org/wiki/.mm +*.mm + +// mn : https://en.wikipedia.org/wiki/.mn +mn +gov.mn +edu.mn +org.mn + +// mo : http://www.monic.net.mo/ +mo +com.mo +net.mo +org.mo +edu.mo +gov.mo + +// mobi : https://en.wikipedia.org/wiki/.mobi +mobi + +// mp : http://www.dot.mp/ +// Confirmed by registry 2008-06-17 +mp + +// mq : https://en.wikipedia.org/wiki/.mq +mq + +// mr : https://en.wikipedia.org/wiki/.mr +mr +gov.mr + +// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf +ms +com.ms +edu.ms +gov.ms +net.ms +org.ms + +// mt : https://www.nic.org.mt/go/policy +// Submitted by registry +mt +com.mt +edu.mt +net.mt +org.mt + +// mu : https://en.wikipedia.org/wiki/.mu +mu +com.mu +net.mu +org.mu +gov.mu +ac.mu +co.mu +or.mu + +// museum : http://about.museum/naming/ +// http://index.museum/ +museum +academy.museum +agriculture.museum +air.museum +airguard.museum +alabama.museum +alaska.museum +amber.museum +ambulance.museum +american.museum +americana.museum +americanantiques.museum +americanart.museum +amsterdam.museum +and.museum +annefrank.museum +anthro.museum +anthropology.museum +antiques.museum +aquarium.museum +arboretum.museum +archaeological.museum +archaeology.museum +architecture.museum +art.museum +artanddesign.museum +artcenter.museum +artdeco.museum +arteducation.museum +artgallery.museum +arts.museum +artsandcrafts.museum +asmatart.museum +assassination.museum +assisi.museum +association.museum +astronomy.museum +atlanta.museum +austin.museum +australia.museum +automotive.museum +aviation.museum +axis.museum +badajoz.museum +baghdad.museum +bahn.museum +bale.museum +baltimore.museum +barcelona.museum +baseball.museum +basel.museum +baths.museum +bauern.museum +beauxarts.museum +beeldengeluid.museum +bellevue.museum +bergbau.museum +berkeley.museum +berlin.museum +bern.museum +bible.museum +bilbao.museum +bill.museum +birdart.museum +birthplace.museum +bonn.museum +boston.museum +botanical.museum +botanicalgarden.museum +botanicgarden.museum +botany.museum +brandywinevalley.museum +brasil.museum +bristol.museum +british.museum +britishcolumbia.museum +broadcast.museum +brunel.museum +brussel.museum +brussels.museum +bruxelles.museum +building.museum +burghof.museum +bus.museum +bushey.museum +cadaques.museum +california.museum +cambridge.museum +can.museum +canada.museum +capebreton.museum +carrier.museum +cartoonart.museum +casadelamoneda.museum +castle.museum +castres.museum +celtic.museum +center.museum +chattanooga.museum +cheltenham.museum +chesapeakebay.museum +chicago.museum +children.museum +childrens.museum +childrensgarden.museum +chiropractic.museum +chocolate.museum +christiansburg.museum +cincinnati.museum +cinema.museum +circus.museum +civilisation.museum +civilization.museum +civilwar.museum +clinton.museum +clock.museum +coal.museum +coastaldefence.museum +cody.museum +coldwar.museum +collection.museum +colonialwilliamsburg.museum +coloradoplateau.museum +columbia.museum +columbus.museum +communication.museum +communications.museum +community.museum +computer.museum +computerhistory.museum +comunicações.museum +contemporary.museum +contemporaryart.museum +convent.museum +copenhagen.museum +corporation.museum +correios-e-telecomunicações.museum +corvette.museum +costume.museum +countryestate.museum +county.museum +crafts.museum +cranbrook.museum +creation.museum +cultural.museum +culturalcenter.museum +culture.museum +cyber.museum +cymru.museum +dali.museum +dallas.museum +database.museum +ddr.museum +decorativearts.museum +delaware.museum +delmenhorst.museum +denmark.museum +depot.museum +design.museum +detroit.museum +dinosaur.museum +discovery.museum +dolls.museum +donostia.museum +durham.museum +eastafrica.museum +eastcoast.museum +education.museum +educational.museum +egyptian.museum +eisenbahn.museum +elburg.museum +elvendrell.museum +embroidery.museum +encyclopedic.museum +england.museum +entomology.museum +environment.museum +environmentalconservation.museum +epilepsy.museum +essex.museum +estate.museum +ethnology.museum +exeter.museum +exhibition.museum +family.museum +farm.museum +farmequipment.museum +farmers.museum +farmstead.museum +field.museum +figueres.museum +filatelia.museum +film.museum +fineart.museum +finearts.museum +finland.museum +flanders.museum +florida.museum +force.museum +fortmissoula.museum +fortworth.museum +foundation.museum +francaise.museum +frankfurt.museum +franziskaner.museum +freemasonry.museum +freiburg.museum +fribourg.museum +frog.museum +fundacio.museum +furniture.museum +gallery.museum +garden.museum +gateway.museum +geelvinck.museum +gemological.museum +geology.museum +georgia.museum +giessen.museum +glas.museum +glass.museum +gorge.museum +grandrapids.museum +graz.museum +guernsey.museum +halloffame.museum +hamburg.museum +handson.museum +harvestcelebration.museum +hawaii.museum +health.museum +heimatunduhren.museum +hellas.museum +helsinki.museum +hembygdsforbund.museum +heritage.museum +histoire.museum +historical.museum +historicalsociety.museum +historichouses.museum +historisch.museum +historisches.museum +history.museum +historyofscience.museum +horology.museum +house.museum +humanities.museum +illustration.museum +imageandsound.museum +indian.museum +indiana.museum +indianapolis.museum +indianmarket.museum +intelligence.museum +interactive.museum +iraq.museum +iron.museum +isleofman.museum +jamison.museum +jefferson.museum +jerusalem.museum +jewelry.museum +jewish.museum +jewishart.museum +jfk.museum +journalism.museum +judaica.museum +judygarland.museum +juedisches.museum +juif.museum +karate.museum +karikatur.museum +kids.museum +koebenhavn.museum +koeln.museum +kunst.museum +kunstsammlung.museum +kunstunddesign.museum +labor.museum +labour.museum +lajolla.museum +lancashire.museum +landes.museum +lans.museum +läns.museum +larsson.museum +lewismiller.museum +lincoln.museum +linz.museum +living.museum +livinghistory.museum +localhistory.museum +london.museum +losangeles.museum +louvre.museum +loyalist.museum +lucerne.museum +luxembourg.museum +luzern.museum +mad.museum +madrid.museum +mallorca.museum +manchester.museum +mansion.museum +mansions.museum +manx.museum +marburg.museum +maritime.museum +maritimo.museum +maryland.museum +marylhurst.museum +media.museum +medical.museum +medizinhistorisches.museum +meeres.museum +memorial.museum +mesaverde.museum +michigan.museum +midatlantic.museum +military.museum +mill.museum +miners.museum +mining.museum +minnesota.museum +missile.museum +missoula.museum +modern.museum +moma.museum +money.museum +monmouth.museum +monticello.museum +montreal.museum +moscow.museum +motorcycle.museum +muenchen.museum +muenster.museum +mulhouse.museum +muncie.museum +museet.museum +museumcenter.museum +museumvereniging.museum +music.museum +national.museum +nationalfirearms.museum +nationalheritage.museum +nativeamerican.museum +naturalhistory.museum +naturalhistorymuseum.museum +naturalsciences.museum +nature.museum +naturhistorisches.museum +natuurwetenschappen.museum +naumburg.museum +naval.museum +nebraska.museum +neues.museum +newhampshire.museum +newjersey.museum +newmexico.museum +newport.museum +newspaper.museum +newyork.museum +niepce.museum +norfolk.museum +north.museum +nrw.museum +nuernberg.museum +nuremberg.museum +nyc.museum +nyny.museum +oceanographic.museum +oceanographique.museum +omaha.museum +online.museum +ontario.museum +openair.museum +oregon.museum +oregontrail.museum +otago.museum +oxford.museum +pacific.museum +paderborn.museum +palace.museum +paleo.museum +palmsprings.museum +panama.museum +paris.museum +pasadena.museum +pharmacy.museum +philadelphia.museum +philadelphiaarea.museum +philately.museum +phoenix.museum +photography.museum +pilots.museum +pittsburgh.museum +planetarium.museum +plantation.museum +plants.museum +plaza.museum +portal.museum +portland.museum +portlligat.museum +posts-and-telecommunications.museum +preservation.museum +presidio.museum +press.museum +project.museum +public.museum +pubol.museum +quebec.museum +railroad.museum +railway.museum +research.museum +resistance.museum +riodejaneiro.museum +rochester.museum +rockart.museum +roma.museum +russia.museum +saintlouis.museum +salem.museum +salvadordali.museum +salzburg.museum +sandiego.museum +sanfrancisco.museum +santabarbara.museum +santacruz.museum +santafe.museum +saskatchewan.museum +satx.museum +savannahga.museum +schlesisches.museum +schoenbrunn.museum +schokoladen.museum +school.museum +schweiz.museum +science.museum +scienceandhistory.museum +scienceandindustry.museum +sciencecenter.museum +sciencecenters.museum +science-fiction.museum +sciencehistory.museum +sciences.museum +sciencesnaturelles.museum +scotland.museum +seaport.museum +settlement.museum +settlers.museum +shell.museum +sherbrooke.museum +sibenik.museum +silk.museum +ski.museum +skole.museum +society.museum +sologne.museum +soundandvision.museum +southcarolina.museum +southwest.museum +space.museum +spy.museum +square.museum +stadt.museum +stalbans.museum +starnberg.museum +state.museum +stateofdelaware.museum +station.museum +steam.museum +steiermark.museum +stjohn.museum +stockholm.museum +stpetersburg.museum +stuttgart.museum +suisse.museum +surgeonshall.museum +surrey.museum +svizzera.museum +sweden.museum +sydney.museum +tank.museum +tcm.museum +technology.museum +telekommunikation.museum +television.museum +texas.museum +textile.museum +theater.museum +time.museum +timekeeping.museum +topology.museum +torino.museum +touch.museum +town.museum +transport.museum +tree.museum +trolley.museum +trust.museum +trustee.museum +uhren.museum +ulm.museum +undersea.museum +university.museum +usa.museum +usantiques.museum +usarts.museum +uscountryestate.museum +usculture.museum +usdecorativearts.museum +usgarden.museum +ushistory.museum +ushuaia.museum +uslivinghistory.museum +utah.museum +uvic.museum +valley.museum +vantaa.museum +versailles.museum +viking.museum +village.museum +virginia.museum +virtual.museum +virtuel.museum +vlaanderen.museum +volkenkunde.museum +wales.museum +wallonie.museum +war.museum +washingtondc.museum +watchandclock.museum +watch-and-clock.museum +western.museum +westfalen.museum +whaling.museum +wildlife.museum +williamsburg.museum +windmill.museum +workshop.museum +york.museum +yorkshire.museum +yosemite.museum +youth.museum +zoological.museum +zoology.museum +ירושלים.museum +иком.museum + +// mv : https://en.wikipedia.org/wiki/.mv +// "mv" included because, contra Wikipedia, google.mv exists. +mv +aero.mv +biz.mv +com.mv +coop.mv +edu.mv +gov.mv +info.mv +int.mv +mil.mv +museum.mv +name.mv +net.mv +org.mv +pro.mv + +// mw : http://www.registrar.mw/ +mw +ac.mw +biz.mw +co.mw +com.mw +coop.mw +edu.mw +gov.mw +int.mw +museum.mw +net.mw +org.mw + +// mx : http://www.nic.mx/ +// Submitted by registry +mx +com.mx +org.mx +gob.mx +edu.mx +net.mx + +// my : http://www.mynic.net.my/ +my +com.my +net.my +org.my +gov.my +edu.my +mil.my +name.my + +// mz : http://www.uem.mz/ +// Submitted by registry +mz +ac.mz +adv.mz +co.mz +edu.mz +gov.mz +mil.mz +net.mz +org.mz + +// na : http://www.na-nic.com.na/ +// http://www.info.na/domain/ +na +info.na +pro.na +name.na +school.na +or.na +dr.na +us.na +mx.na +ca.na +in.na +cc.na +tv.na +ws.na +mobi.na +co.na +com.na +org.na + +// name : has 2nd-level tlds, but there's no list of them +name + +// nc : http://www.cctld.nc/ +nc +asso.nc +nom.nc + +// ne : https://en.wikipedia.org/wiki/.ne +ne + +// net : https://en.wikipedia.org/wiki/.net +net + +// nf : https://en.wikipedia.org/wiki/.nf +nf +com.nf +net.nf +per.nf +rec.nf +web.nf +arts.nf +firm.nf +info.nf +other.nf +store.nf + +// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds +ng +com.ng +edu.ng +gov.ng +i.ng +mil.ng +mobi.ng +name.ng +net.ng +org.ng +sch.ng + +// ni : http://www.nic.ni/ +ni +ac.ni +biz.ni +co.ni +com.ni +edu.ni +gob.ni +in.ni +info.ni +int.ni +mil.ni +net.ni +nom.ni +org.ni +web.ni + +// nl : https://en.wikipedia.org/wiki/.nl +// https://www.sidn.nl/ +// ccTLD for the Netherlands +nl + +// BV.nl will be a registry for dutch BV's (besloten vennootschap) +bv.nl + +// no : http://www.norid.no/regelverk/index.en.html +// The Norwegian registry has declined to notify us of updates. The web pages +// referenced below are the official source of the data. There is also an +// announce mailing list: +// https://postlister.uninett.no/sympa/info/norid-diskusjon +no +// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html +fhs.no +vgs.no +fylkesbibl.no +folkebibl.no +museum.no +idrett.no +priv.no +// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html +mil.no +stat.no +dep.no +kommune.no +herad.no +// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html +// counties +aa.no +ah.no +bu.no +fm.no +hl.no +hm.no +jan-mayen.no +mr.no +nl.no +nt.no +of.no +ol.no +oslo.no +rl.no +sf.no +st.no +svalbard.no +tm.no +tr.no +va.no +vf.no +// primary and lower secondary schools per county +gs.aa.no +gs.ah.no +gs.bu.no +gs.fm.no +gs.hl.no +gs.hm.no +gs.jan-mayen.no +gs.mr.no +gs.nl.no +gs.nt.no +gs.of.no +gs.ol.no +gs.oslo.no +gs.rl.no +gs.sf.no +gs.st.no +gs.svalbard.no +gs.tm.no +gs.tr.no +gs.va.no +gs.vf.no +// cities +akrehamn.no +åkrehamn.no +algard.no +ålgård.no +arna.no +brumunddal.no +bryne.no +bronnoysund.no +brønnøysund.no +drobak.no +drøbak.no +egersund.no +fetsund.no +floro.no +florø.no +fredrikstad.no +hokksund.no +honefoss.no +hønefoss.no +jessheim.no +jorpeland.no +jørpeland.no +kirkenes.no +kopervik.no +krokstadelva.no +langevag.no +langevåg.no +leirvik.no +mjondalen.no +mjøndalen.no +mo-i-rana.no +mosjoen.no +mosjøen.no +nesoddtangen.no +orkanger.no +osoyro.no +osøyro.no +raholt.no +råholt.no +sandnessjoen.no +sandnessjøen.no +skedsmokorset.no +slattum.no +spjelkavik.no +stathelle.no +stavern.no +stjordalshalsen.no +stjørdalshalsen.no +tananger.no +tranby.no +vossevangen.no +// communities +afjord.no +åfjord.no +agdenes.no +al.no +ål.no +alesund.no +ålesund.no +alstahaug.no +alta.no +áltá.no +alaheadju.no +álaheadju.no +alvdal.no +amli.no +åmli.no +amot.no +åmot.no +andebu.no +andoy.no +andøy.no +andasuolo.no +ardal.no +årdal.no +aremark.no +arendal.no +ås.no +aseral.no +åseral.no +asker.no +askim.no +askvoll.no +askoy.no +askøy.no +asnes.no +åsnes.no +audnedaln.no +aukra.no +aure.no +aurland.no +aurskog-holand.no +aurskog-høland.no +austevoll.no +austrheim.no +averoy.no +averøy.no +balestrand.no +ballangen.no +balat.no +bálát.no +balsfjord.no +bahccavuotna.no +báhccavuotna.no +bamble.no +bardu.no +beardu.no +beiarn.no +bajddar.no +bájddar.no +baidar.no +báidár.no +berg.no +bergen.no +berlevag.no +berlevåg.no +bearalvahki.no +bearalváhki.no +bindal.no +birkenes.no +bjarkoy.no +bjarkøy.no +bjerkreim.no +bjugn.no +bodo.no +bodø.no +badaddja.no +bådåddjå.no +budejju.no +bokn.no +bremanger.no +bronnoy.no +brønnøy.no +bygland.no +bykle.no +barum.no +bærum.no +bo.telemark.no +bø.telemark.no +bo.nordland.no +bø.nordland.no +bievat.no +bievát.no +bomlo.no +bømlo.no +batsfjord.no +båtsfjord.no +bahcavuotna.no +báhcavuotna.no +dovre.no +drammen.no +drangedal.no +dyroy.no +dyrøy.no +donna.no +dønna.no +eid.no +eidfjord.no +eidsberg.no +eidskog.no +eidsvoll.no +eigersund.no +elverum.no +enebakk.no +engerdal.no +etne.no +etnedal.no +evenes.no +evenassi.no +evenášši.no +evje-og-hornnes.no +farsund.no +fauske.no +fuossko.no +fuoisku.no +fedje.no +fet.no +finnoy.no +finnøy.no +fitjar.no +fjaler.no +fjell.no +flakstad.no +flatanger.no +flekkefjord.no +flesberg.no +flora.no +fla.no +flå.no +folldal.no +forsand.no +fosnes.no +frei.no +frogn.no +froland.no +frosta.no +frana.no +fræna.no +froya.no +frøya.no +fusa.no +fyresdal.no +forde.no +førde.no +gamvik.no +gangaviika.no +gáŋgaviika.no +gaular.no +gausdal.no +gildeskal.no +gildeskål.no +giske.no +gjemnes.no +gjerdrum.no +gjerstad.no +gjesdal.no +gjovik.no +gjøvik.no +gloppen.no +gol.no +gran.no +grane.no +granvin.no +gratangen.no +grimstad.no +grong.no +kraanghke.no +kråanghke.no +grue.no +gulen.no +hadsel.no +halden.no +halsa.no +hamar.no +hamaroy.no +habmer.no +hábmer.no +hapmir.no +hápmir.no +hammerfest.no +hammarfeasta.no +hámmárfeasta.no +haram.no +hareid.no +harstad.no +hasvik.no +aknoluokta.no +ákŋoluokta.no +hattfjelldal.no +aarborte.no +haugesund.no +hemne.no +hemnes.no +hemsedal.no +heroy.more-og-romsdal.no +herøy.møre-og-romsdal.no +heroy.nordland.no +herøy.nordland.no +hitra.no +hjartdal.no +hjelmeland.no +hobol.no +hobøl.no +hof.no +hol.no +hole.no +holmestrand.no +holtalen.no +holtålen.no +hornindal.no +horten.no +hurdal.no +hurum.no +hvaler.no +hyllestad.no +hagebostad.no +hægebostad.no +hoyanger.no +høyanger.no +hoylandet.no +høylandet.no +ha.no +hå.no +ibestad.no +inderoy.no +inderøy.no +iveland.no +jevnaker.no +jondal.no +jolster.no +jølster.no +karasjok.no +karasjohka.no +kárášjohka.no +karlsoy.no +galsa.no +gálsá.no +karmoy.no +karmøy.no +kautokeino.no +guovdageaidnu.no +klepp.no +klabu.no +klæbu.no +kongsberg.no +kongsvinger.no +kragero.no +kragerø.no +kristiansand.no +kristiansund.no +krodsherad.no +krødsherad.no +kvalsund.no +rahkkeravju.no +ráhkkerávju.no +kvam.no +kvinesdal.no +kvinnherad.no +kviteseid.no +kvitsoy.no +kvitsøy.no +kvafjord.no +kvæfjord.no +giehtavuoatna.no +kvanangen.no +kvænangen.no +navuotna.no +návuotna.no +kafjord.no +kåfjord.no +gaivuotna.no +gáivuotna.no +larvik.no +lavangen.no +lavagis.no +loabat.no +loabát.no +lebesby.no +davvesiida.no +leikanger.no +leirfjord.no +leka.no +leksvik.no +lenvik.no +leangaviika.no +leaŋgaviika.no +lesja.no +levanger.no +lier.no +lierne.no +lillehammer.no +lillesand.no +lindesnes.no +lindas.no +lindås.no +lom.no +loppa.no +lahppi.no +láhppi.no +lund.no +lunner.no +luroy.no +lurøy.no +luster.no +lyngdal.no +lyngen.no +ivgu.no +lardal.no +lerdal.no +lærdal.no +lodingen.no +lødingen.no +lorenskog.no +lørenskog.no +loten.no +løten.no +malvik.no +masoy.no +måsøy.no +muosat.no +muosát.no +mandal.no +marker.no +marnardal.no +masfjorden.no +meland.no +meldal.no +melhus.no +meloy.no +meløy.no +meraker.no +meråker.no +moareke.no +moåreke.no +midsund.no +midtre-gauldal.no +modalen.no +modum.no +molde.no +moskenes.no +moss.no +mosvik.no +malselv.no +målselv.no +malatvuopmi.no +málatvuopmi.no +namdalseid.no +aejrie.no +namsos.no +namsskogan.no +naamesjevuemie.no +nååmesjevuemie.no +laakesvuemie.no +nannestad.no +narvik.no +narviika.no +naustdal.no +nedre-eiker.no +nes.akershus.no +nes.buskerud.no +nesna.no +nesodden.no +nesseby.no +unjarga.no +unjárga.no +nesset.no +nissedal.no +nittedal.no +nord-aurdal.no +nord-fron.no +nord-odal.no +norddal.no +nordkapp.no +davvenjarga.no +davvenjárga.no +nordre-land.no +nordreisa.no +raisa.no +ráisa.no +nore-og-uvdal.no +notodden.no +naroy.no +nærøy.no +notteroy.no +nøtterøy.no +odda.no +oksnes.no +øksnes.no +oppdal.no +oppegard.no +oppegård.no +orkdal.no +orland.no +ørland.no +orskog.no +ørskog.no +orsta.no +ørsta.no +os.hedmark.no +os.hordaland.no +osen.no +osteroy.no +osterøy.no +ostre-toten.no +østre-toten.no +overhalla.no +ovre-eiker.no +øvre-eiker.no +oyer.no +øyer.no +oygarden.no +øygarden.no +oystre-slidre.no +øystre-slidre.no +porsanger.no +porsangu.no +porsáŋgu.no +porsgrunn.no +radoy.no +radøy.no +rakkestad.no +rana.no +ruovat.no +randaberg.no +rauma.no +rendalen.no +rennebu.no +rennesoy.no +rennesøy.no +rindal.no +ringebu.no +ringerike.no +ringsaker.no +rissa.no +risor.no +risør.no +roan.no +rollag.no +rygge.no +ralingen.no +rælingen.no +rodoy.no +rødøy.no +romskog.no +rømskog.no +roros.no +røros.no +rost.no +røst.no +royken.no +røyken.no +royrvik.no +røyrvik.no +rade.no +råde.no +salangen.no +siellak.no +saltdal.no +salat.no +sálát.no +sálat.no +samnanger.no +sande.more-og-romsdal.no +sande.møre-og-romsdal.no +sande.vestfold.no +sandefjord.no +sandnes.no +sandoy.no +sandøy.no +sarpsborg.no +sauda.no +sauherad.no +sel.no +selbu.no +selje.no +seljord.no +sigdal.no +siljan.no +sirdal.no +skaun.no +skedsmo.no +ski.no +skien.no +skiptvet.no +skjervoy.no +skjervøy.no +skierva.no +skiervá.no +skjak.no +skjåk.no +skodje.no +skanland.no +skånland.no +skanit.no +skánit.no +smola.no +smøla.no +snillfjord.no +snasa.no +snåsa.no +snoasa.no +snaase.no +snåase.no +sogndal.no +sokndal.no +sola.no +solund.no +songdalen.no +sortland.no +spydeberg.no +stange.no +stavanger.no +steigen.no +steinkjer.no +stjordal.no +stjørdal.no +stokke.no +stor-elvdal.no +stord.no +stordal.no +storfjord.no +omasvuotna.no +strand.no +stranda.no +stryn.no +sula.no +suldal.no +sund.no +sunndal.no +surnadal.no +sveio.no +svelvik.no +sykkylven.no +sogne.no +søgne.no +somna.no +sømna.no +sondre-land.no +søndre-land.no +sor-aurdal.no +sør-aurdal.no +sor-fron.no +sør-fron.no +sor-odal.no +sør-odal.no +sor-varanger.no +sør-varanger.no +matta-varjjat.no +mátta-várjjat.no +sorfold.no +sørfold.no +sorreisa.no +sørreisa.no +sorum.no +sørum.no +tana.no +deatnu.no +time.no +tingvoll.no +tinn.no +tjeldsund.no +dielddanuorri.no +tjome.no +tjøme.no +tokke.no +tolga.no +torsken.no +tranoy.no +tranøy.no +tromso.no +tromsø.no +tromsa.no +romsa.no +trondheim.no +troandin.no +trysil.no +trana.no +træna.no +trogstad.no +trøgstad.no +tvedestrand.no +tydal.no +tynset.no +tysfjord.no +divtasvuodna.no +divttasvuotna.no +tysnes.no +tysvar.no +tysvær.no +tonsberg.no +tønsberg.no +ullensaker.no +ullensvang.no +ulvik.no +utsira.no +vadso.no +vadsø.no +cahcesuolo.no +čáhcesuolo.no +vaksdal.no +valle.no +vang.no +vanylven.no +vardo.no +vardø.no +varggat.no +várggát.no +vefsn.no +vaapste.no +vega.no +vegarshei.no +vegårshei.no +vennesla.no +verdal.no +verran.no +vestby.no +vestnes.no +vestre-slidre.no +vestre-toten.no +vestvagoy.no +vestvågøy.no +vevelstad.no +vik.no +vikna.no +vindafjord.no +volda.no +voss.no +varoy.no +værøy.no +vagan.no +vågan.no +voagat.no +vagsoy.no +vågsøy.no +vaga.no +vågå.no +valer.ostfold.no +våler.østfold.no +valer.hedmark.no +våler.hedmark.no + +// np : http://www.mos.com.np/register.html +*.np + +// nr : http://cenpac.net.nr/dns/index.html +// Submitted by registry +nr +biz.nr +info.nr +gov.nr +edu.nr +org.nr +net.nr +com.nr + +// nu : https://en.wikipedia.org/wiki/.nu +nu + +// nz : https://en.wikipedia.org/wiki/.nz +// Submitted by registry +nz +ac.nz +co.nz +cri.nz +geek.nz +gen.nz +govt.nz +health.nz +iwi.nz +kiwi.nz +maori.nz +mil.nz +māori.nz +net.nz +org.nz +parliament.nz +school.nz + +// om : https://en.wikipedia.org/wiki/.om +om +co.om +com.om +edu.om +gov.om +med.om +museum.om +net.om +org.om +pro.om + +// onion : https://tools.ietf.org/html/rfc7686 +onion + +// org : https://en.wikipedia.org/wiki/.org +org + +// pa : http://www.nic.pa/ +// Some additional second level "domains" resolve directly as hostnames, such as +// pannet.pa, so we add a rule for "pa". +pa +ac.pa +gob.pa +com.pa +org.pa +sld.pa +edu.pa +net.pa +ing.pa +abo.pa +med.pa +nom.pa + +// pe : https://www.nic.pe/InformeFinalComision.pdf +pe +edu.pe +gob.pe +nom.pe +mil.pe +org.pe +com.pe +net.pe + +// pf : http://www.gobin.info/domainname/formulaire-pf.pdf +pf +com.pf +org.pf +edu.pf + +// pg : https://en.wikipedia.org/wiki/.pg +*.pg + +// ph : http://www.domains.ph/FAQ2.asp +// Submitted by registry +ph +com.ph +net.ph +org.ph +gov.ph +edu.ph +ngo.ph +mil.ph +i.ph + +// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK +pk +com.pk +net.pk +edu.pk +org.pk +fam.pk +biz.pk +web.pk +gov.pk +gob.pk +gok.pk +gon.pk +gop.pk +gos.pk +info.pk + +// pl http://www.dns.pl/english/index.html +// Submitted by registry +pl +com.pl +net.pl +org.pl +// pl functional domains (http://www.dns.pl/english/index.html) +aid.pl +agro.pl +atm.pl +auto.pl +biz.pl +edu.pl +gmina.pl +gsm.pl +info.pl +mail.pl +miasta.pl +media.pl +mil.pl +nieruchomosci.pl +nom.pl +pc.pl +powiat.pl +priv.pl +realestate.pl +rel.pl +sex.pl +shop.pl +sklep.pl +sos.pl +szkola.pl +targi.pl +tm.pl +tourism.pl +travel.pl +turystyka.pl +// Government domains +gov.pl +ap.gov.pl +ic.gov.pl +is.gov.pl +us.gov.pl +kmpsp.gov.pl +kppsp.gov.pl +kwpsp.gov.pl +psp.gov.pl +wskr.gov.pl +kwp.gov.pl +mw.gov.pl +ug.gov.pl +um.gov.pl +umig.gov.pl +ugim.gov.pl +upow.gov.pl +uw.gov.pl +starostwo.gov.pl +pa.gov.pl +po.gov.pl +psse.gov.pl +pup.gov.pl +rzgw.gov.pl +sa.gov.pl +so.gov.pl +sr.gov.pl +wsa.gov.pl +sko.gov.pl +uzs.gov.pl +wiih.gov.pl +winb.gov.pl +pinb.gov.pl +wios.gov.pl +witd.gov.pl +wzmiuw.gov.pl +piw.gov.pl +wiw.gov.pl +griw.gov.pl +wif.gov.pl +oum.gov.pl +sdn.gov.pl +zp.gov.pl +uppo.gov.pl +mup.gov.pl +wuoz.gov.pl +konsulat.gov.pl +oirm.gov.pl +// pl regional domains (http://www.dns.pl/english/index.html) +augustow.pl +babia-gora.pl +bedzin.pl +beskidy.pl +bialowieza.pl +bialystok.pl +bielawa.pl +bieszczady.pl +boleslawiec.pl +bydgoszcz.pl +bytom.pl +cieszyn.pl +czeladz.pl +czest.pl +dlugoleka.pl +elblag.pl +elk.pl +glogow.pl +gniezno.pl +gorlice.pl +grajewo.pl +ilawa.pl +jaworzno.pl +jelenia-gora.pl +jgora.pl +kalisz.pl +kazimierz-dolny.pl +karpacz.pl +kartuzy.pl +kaszuby.pl +katowice.pl +kepno.pl +ketrzyn.pl +klodzko.pl +kobierzyce.pl +kolobrzeg.pl +konin.pl +konskowola.pl +kutno.pl +lapy.pl +lebork.pl +legnica.pl +lezajsk.pl +limanowa.pl +lomza.pl +lowicz.pl +lubin.pl +lukow.pl +malbork.pl +malopolska.pl +mazowsze.pl +mazury.pl +mielec.pl +mielno.pl +mragowo.pl +naklo.pl +nowaruda.pl +nysa.pl +olawa.pl +olecko.pl +olkusz.pl +olsztyn.pl +opoczno.pl +opole.pl +ostroda.pl +ostroleka.pl +ostrowiec.pl +ostrowwlkp.pl +pila.pl +pisz.pl +podhale.pl +podlasie.pl +polkowice.pl +pomorze.pl +pomorskie.pl +prochowice.pl +pruszkow.pl +przeworsk.pl +pulawy.pl +radom.pl +rawa-maz.pl +rybnik.pl +rzeszow.pl +sanok.pl +sejny.pl +slask.pl +slupsk.pl +sosnowiec.pl +stalowa-wola.pl +skoczow.pl +starachowice.pl +stargard.pl +suwalki.pl +swidnica.pl +swiebodzin.pl +swinoujscie.pl +szczecin.pl +szczytno.pl +tarnobrzeg.pl +tgory.pl +turek.pl +tychy.pl +ustka.pl +walbrzych.pl +warmia.pl +warszawa.pl +waw.pl +wegrow.pl +wielun.pl +wlocl.pl +wloclawek.pl +wodzislaw.pl +wolomin.pl +wroclaw.pl +zachpomor.pl +zagan.pl +zarow.pl +zgora.pl +zgorzelec.pl + +// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +pm + +// pn : http://www.government.pn/PnRegistry/policies.htm +pn +gov.pn +co.pn +org.pn +edu.pn +net.pn + +// post : https://en.wikipedia.org/wiki/.post +post + +// pr : http://www.nic.pr/index.asp?f=1 +pr +com.pr +net.pr +org.pr +gov.pr +edu.pr +isla.pr +pro.pr +biz.pr +info.pr +name.pr +// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr +est.pr +prof.pr +ac.pr + +// pro : http://registry.pro/get-pro +pro +aaa.pro +aca.pro +acct.pro +avocat.pro +bar.pro +cpa.pro +eng.pro +jur.pro +law.pro +med.pro +recht.pro + +// ps : https://en.wikipedia.org/wiki/.ps +// http://www.nic.ps/registration/policy.html#reg +ps +edu.ps +gov.ps +sec.ps +plo.ps +com.ps +org.ps +net.ps + +// pt : http://online.dns.pt/dns/start_dns +pt +net.pt +gov.pt +org.pt +edu.pt +int.pt +publ.pt +com.pt +nome.pt + +// pw : https://en.wikipedia.org/wiki/.pw +pw +co.pw +ne.pw +or.pw +ed.pw +go.pw +belau.pw + +// py : http://www.nic.py/pautas.html#seccion_9 +// Submitted by registry +py +com.py +coop.py +edu.py +gov.py +mil.py +net.py +org.py + +// qa : http://domains.qa/en/ +qa +com.qa +edu.qa +gov.qa +mil.qa +name.qa +net.qa +org.qa +sch.qa + +// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs +re +asso.re +com.re +nom.re + +// ro : http://www.rotld.ro/ +ro +arts.ro +com.ro +firm.ro +info.ro +nom.ro +nt.ro +org.ro +rec.ro +store.ro +tm.ro +www.ro + +// rs : https://www.rnids.rs/en/domains/national-domains +rs +ac.rs +co.rs +edu.rs +gov.rs +in.rs +org.rs + +// ru : https://cctld.ru/en/domains/domens_ru/reserved/ +ru +ac.ru +edu.ru +gov.ru +int.ru +mil.ru +test.ru + +// rw : http://www.nic.rw/cgi-bin/policy.pl +rw +gov.rw +net.rw +edu.rw +ac.rw +com.rw +co.rw +int.rw +mil.rw +gouv.rw + +// sa : http://www.nic.net.sa/ +sa +com.sa +net.sa +org.sa +gov.sa +med.sa +pub.sa +edu.sa +sch.sa + +// sb : http://www.sbnic.net.sb/ +// Submitted by registry +sb +com.sb +edu.sb +gov.sb +net.sb +org.sb + +// sc : http://www.nic.sc/ +sc +com.sc +gov.sc +net.sc +org.sc +edu.sc + +// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm +// Submitted by registry +sd +com.sd +net.sd +org.sd +edu.sd +med.sd +tv.sd +gov.sd +info.sd + +// se : https://en.wikipedia.org/wiki/.se +// Submitted by registry +se +a.se +ac.se +b.se +bd.se +brand.se +c.se +d.se +e.se +f.se +fh.se +fhsk.se +fhv.se +g.se +h.se +i.se +k.se +komforb.se +kommunalforbund.se +komvux.se +l.se +lanbib.se +m.se +n.se +naturbruksgymn.se +o.se +org.se +p.se +parti.se +pp.se +press.se +r.se +s.se +t.se +tm.se +u.se +w.se +x.se +y.se +z.se + +// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines +sg +com.sg +net.sg +org.sg +gov.sg +edu.sg +per.sg + +// sh : http://www.nic.sh/registrar.html +sh +com.sh +net.sh +gov.sh +org.sh +mil.sh + +// si : https://en.wikipedia.org/wiki/.si +si + +// sj : No registrations at this time. +// Submitted by registry +sj + +// sk : https://en.wikipedia.org/wiki/.sk +// list of 2nd level domains ? +sk + +// sl : http://www.nic.sl +// Submitted by registry +sl +com.sl +net.sl +edu.sl +gov.sl +org.sl + +// sm : https://en.wikipedia.org/wiki/.sm +sm + +// sn : https://en.wikipedia.org/wiki/.sn +sn +art.sn +com.sn +edu.sn +gouv.sn +org.sn +perso.sn +univ.sn + +// so : http://www.soregistry.com/ +so +com.so +net.so +org.so + +// sr : https://en.wikipedia.org/wiki/.sr +sr + +// st : http://www.nic.st/html/policyrules/ +st +co.st +com.st +consulado.st +edu.st +embaixada.st +gov.st +mil.st +net.st +org.st +principe.st +saotome.st +store.st + +// su : https://en.wikipedia.org/wiki/.su +su + +// sv : http://www.svnet.org.sv/niveldos.pdf +sv +com.sv +edu.sv +gob.sv +org.sv +red.sv + +// sx : https://en.wikipedia.org/wiki/.sx +// Submitted by registry +sx +gov.sx + +// sy : https://en.wikipedia.org/wiki/.sy +// see also: http://www.gobin.info/domainname/sy.doc +sy +edu.sy +gov.sy +net.sy +mil.sy +com.sy +org.sy + +// sz : https://en.wikipedia.org/wiki/.sz +// http://www.sispa.org.sz/ +sz +co.sz +ac.sz +org.sz + +// tc : https://en.wikipedia.org/wiki/.tc +tc + +// td : https://en.wikipedia.org/wiki/.td +td + +// tel: https://en.wikipedia.org/wiki/.tel +// http://www.telnic.org/ +tel + +// tf : https://en.wikipedia.org/wiki/.tf +tf + +// tg : https://en.wikipedia.org/wiki/.tg +// http://www.nic.tg/ +tg + +// th : https://en.wikipedia.org/wiki/.th +// Submitted by registry +th +ac.th +co.th +go.th +in.th +mi.th +net.th +or.th + +// tj : http://www.nic.tj/policy.html +tj +ac.tj +biz.tj +co.tj +com.tj +edu.tj +go.tj +gov.tj +int.tj +mil.tj +name.tj +net.tj +nic.tj +org.tj +test.tj +web.tj + +// tk : https://en.wikipedia.org/wiki/.tk +tk + +// tl : https://en.wikipedia.org/wiki/.tl +tl +gov.tl + +// tm : http://www.nic.tm/local.html +tm +com.tm +co.tm +org.tm +net.tm +nom.tm +gov.tm +mil.tm +edu.tm + +// tn : https://en.wikipedia.org/wiki/.tn +// http://whois.ati.tn/ +tn +com.tn +ens.tn +fin.tn +gov.tn +ind.tn +intl.tn +nat.tn +net.tn +org.tn +info.tn +perso.tn +tourism.tn +edunet.tn +rnrt.tn +rns.tn +rnu.tn +mincom.tn +agrinet.tn +defense.tn +turen.tn + +// to : https://en.wikipedia.org/wiki/.to +// Submitted by registry +to +com.to +gov.to +net.to +org.to +edu.to +mil.to + +// subTLDs: https://www.nic.tr/forms/eng/policies.pdf +// and: https://www.nic.tr/forms/politikalar.pdf +// Submitted by +tr +com.tr +info.tr +biz.tr +net.tr +org.tr +web.tr +gen.tr +tv.tr +av.tr +dr.tr +bbs.tr +name.tr +tel.tr +gov.tr +bel.tr +pol.tr +mil.tr +k12.tr +edu.tr +kep.tr + +// Used by Northern Cyprus +nc.tr + +// Used by government agencies of Northern Cyprus +gov.nc.tr + +// tt : http://www.nic.tt/ +tt +co.tt +com.tt +org.tt +net.tt +biz.tt +info.tt +pro.tt +int.tt +coop.tt +jobs.tt +mobi.tt +travel.tt +museum.tt +aero.tt +name.tt +gov.tt +edu.tt + +// tv : https://en.wikipedia.org/wiki/.tv +// Not listing any 2LDs as reserved since none seem to exist in practice, +// Wikipedia notwithstanding. +tv + +// tw : https://en.wikipedia.org/wiki/.tw +tw +edu.tw +gov.tw +mil.tw +com.tw +net.tw +org.tw +idv.tw +game.tw +ebiz.tw +club.tw +網路.tw +組織.tw +商業.tw + +// tz : http://www.tznic.or.tz/index.php/domains +// Submitted by registry +tz +ac.tz +co.tz +go.tz +hotel.tz +info.tz +me.tz +mil.tz +mobi.tz +ne.tz +or.tz +sc.tz +tv.tz + +// ua : https://hostmaster.ua/policy/?ua +// Submitted by registry +ua +// ua 2LD +com.ua +edu.ua +gov.ua +in.ua +net.ua +org.ua +// ua geographic names +// https://hostmaster.ua/2ld/ +cherkassy.ua +cherkasy.ua +chernigov.ua +chernihiv.ua +chernivtsi.ua +chernovtsy.ua +ck.ua +cn.ua +cr.ua +crimea.ua +cv.ua +dn.ua +dnepropetrovsk.ua +dnipropetrovsk.ua +dominic.ua +donetsk.ua +dp.ua +if.ua +ivano-frankivsk.ua +kh.ua +kharkiv.ua +kharkov.ua +kherson.ua +khmelnitskiy.ua +khmelnytskyi.ua +kiev.ua +kirovograd.ua +km.ua +kr.ua +krym.ua +ks.ua +kv.ua +kyiv.ua +lg.ua +lt.ua +lugansk.ua +lutsk.ua +lv.ua +lviv.ua +mk.ua +mykolaiv.ua +nikolaev.ua +od.ua +odesa.ua +odessa.ua +pl.ua +poltava.ua +rivne.ua +rovno.ua +rv.ua +sb.ua +sebastopol.ua +sevastopol.ua +sm.ua +sumy.ua +te.ua +ternopil.ua +uz.ua +uzhgorod.ua +vinnica.ua +vinnytsia.ua +vn.ua +volyn.ua +yalta.ua +zaporizhzhe.ua +zaporizhzhia.ua +zhitomir.ua +zhytomyr.ua +zp.ua +zt.ua + +// ug : https://www.registry.co.ug/ +ug +co.ug +or.ug +ac.ug +sc.ug +go.ug +ne.ug +com.ug +org.ug + +// uk : https://en.wikipedia.org/wiki/.uk +// Submitted by registry +uk +ac.uk +co.uk +gov.uk +ltd.uk +me.uk +net.uk +nhs.uk +org.uk +plc.uk +police.uk +*.sch.uk + +// us : https://en.wikipedia.org/wiki/.us +us +dni.us +fed.us +isa.us +kids.us +nsn.us +// us geographic names +ak.us +al.us +ar.us +as.us +az.us +ca.us +co.us +ct.us +dc.us +de.us +fl.us +ga.us +gu.us +hi.us +ia.us +id.us +il.us +in.us +ks.us +ky.us +la.us +ma.us +md.us +me.us +mi.us +mn.us +mo.us +ms.us +mt.us +nc.us +nd.us +ne.us +nh.us +nj.us +nm.us +nv.us +ny.us +oh.us +ok.us +or.us +pa.us +pr.us +ri.us +sc.us +sd.us +tn.us +tx.us +ut.us +vi.us +vt.us +va.us +wa.us +wi.us +wv.us +wy.us +// The registrar notes several more specific domains available in each state, +// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat +// haphazard; in some states these domains resolve as addresses, while in others +// only subdomains are available, or even nothing at all. We include the +// most common ones where it's clear that different sites are different +// entities. +k12.ak.us +k12.al.us +k12.ar.us +k12.as.us +k12.az.us +k12.ca.us +k12.co.us +k12.ct.us +k12.dc.us +k12.de.us +k12.fl.us +k12.ga.us +k12.gu.us +// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login +k12.ia.us +k12.id.us +k12.il.us +k12.in.us +k12.ks.us +k12.ky.us +k12.la.us +k12.ma.us +k12.md.us +k12.me.us +k12.mi.us +k12.mn.us +k12.mo.us +k12.ms.us +k12.mt.us +k12.nc.us +// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso +k12.ne.us +k12.nh.us +k12.nj.us +k12.nm.us +k12.nv.us +k12.ny.us +k12.oh.us +k12.ok.us +k12.or.us +k12.pa.us +k12.pr.us +k12.ri.us +k12.sc.us +// k12.sd.us Bug 934131 - Removed at request of James Booze +k12.tn.us +k12.tx.us +k12.ut.us +k12.vi.us +k12.vt.us +k12.va.us +k12.wa.us +k12.wi.us +// k12.wv.us Bug 947705 - Removed at request of Verne Britton +k12.wy.us +cc.ak.us +cc.al.us +cc.ar.us +cc.as.us +cc.az.us +cc.ca.us +cc.co.us +cc.ct.us +cc.dc.us +cc.de.us +cc.fl.us +cc.ga.us +cc.gu.us +cc.hi.us +cc.ia.us +cc.id.us +cc.il.us +cc.in.us +cc.ks.us +cc.ky.us +cc.la.us +cc.ma.us +cc.md.us +cc.me.us +cc.mi.us +cc.mn.us +cc.mo.us +cc.ms.us +cc.mt.us +cc.nc.us +cc.nd.us +cc.ne.us +cc.nh.us +cc.nj.us +cc.nm.us +cc.nv.us +cc.ny.us +cc.oh.us +cc.ok.us +cc.or.us +cc.pa.us +cc.pr.us +cc.ri.us +cc.sc.us +cc.sd.us +cc.tn.us +cc.tx.us +cc.ut.us +cc.vi.us +cc.vt.us +cc.va.us +cc.wa.us +cc.wi.us +cc.wv.us +cc.wy.us +lib.ak.us +lib.al.us +lib.ar.us +lib.as.us +lib.az.us +lib.ca.us +lib.co.us +lib.ct.us +lib.dc.us +// lib.de.us Issue #243 - Moved to Private section at request of Ed Moore +lib.fl.us +lib.ga.us +lib.gu.us +lib.hi.us +lib.ia.us +lib.id.us +lib.il.us +lib.in.us +lib.ks.us +lib.ky.us +lib.la.us +lib.ma.us +lib.md.us +lib.me.us +lib.mi.us +lib.mn.us +lib.mo.us +lib.ms.us +lib.mt.us +lib.nc.us +lib.nd.us +lib.ne.us +lib.nh.us +lib.nj.us +lib.nm.us +lib.nv.us +lib.ny.us +lib.oh.us +lib.ok.us +lib.or.us +lib.pa.us +lib.pr.us +lib.ri.us +lib.sc.us +lib.sd.us +lib.tn.us +lib.tx.us +lib.ut.us +lib.vi.us +lib.vt.us +lib.va.us +lib.wa.us +lib.wi.us +// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold +lib.wy.us +// k12.ma.us contains school districts in Massachusetts. The 4LDs are +// managed independently except for private (PVT), charter (CHTR) and +// parochial (PAROCH) schools. Those are delegated directly to the +// 5LD operators. +pvt.k12.ma.us +chtr.k12.ma.us +paroch.k12.ma.us +// Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following +// see also: http://domreg.merit.edu +// see also: whois -h whois.domreg.merit.edu help +ann-arbor.mi.us +cog.mi.us +dst.mi.us +eaton.mi.us +gen.mi.us +mus.mi.us +tec.mi.us +washtenaw.mi.us + +// uy : http://www.nic.org.uy/ +uy +com.uy +edu.uy +gub.uy +mil.uy +net.uy +org.uy + +// uz : http://www.reg.uz/ +uz +co.uz +com.uz +net.uz +org.uz + +// va : https://en.wikipedia.org/wiki/.va +va + +// vc : https://en.wikipedia.org/wiki/.vc +// Submitted by registry +vc +com.vc +net.vc +org.vc +gov.vc +mil.vc +edu.vc + +// ve : https://registro.nic.ve/ +// Submitted by registry +ve +arts.ve +co.ve +com.ve +e12.ve +edu.ve +firm.ve +gob.ve +gov.ve +info.ve +int.ve +mil.ve +net.ve +org.ve +rec.ve +store.ve +tec.ve +web.ve + +// vg : https://en.wikipedia.org/wiki/.vg +vg + +// vi : http://www.nic.vi/newdomainform.htm +// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other +// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they +// are available for registration (which they do not seem to be). +vi +co.vi +com.vi +k12.vi +net.vi +org.vi + +// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp +vn +com.vn +net.vn +org.vn +edu.vn +gov.vn +int.vn +ac.vn +biz.vn +info.vn +name.vn +pro.vn +health.vn + +// vu : https://en.wikipedia.org/wiki/.vu +// http://www.vunic.vu/ +vu +com.vu +edu.vu +net.vu +org.vu + +// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +wf + +// ws : https://en.wikipedia.org/wiki/.ws +// http://samoanic.ws/index.dhtml +ws +com.ws +net.ws +org.ws +gov.ws +edu.ws + +// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +yt + +// IDN ccTLDs +// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then +// U-label, and follow this format: +// // A-Label ("", [, variant info]) : +// // [sponsoring org] +// U-Label + +// xn--mgbaam7a8h ("Emerat", Arabic) : AE +// http://nic.ae/english/arabicdomain/rules.jsp +امارات + +// xn--y9a3aq ("hye", Armenian) : AM +// ISOC AM (operated by .am Registry) +հայ + +// xn--54b7fta0cc ("Bangla", Bangla) : BD +বাংলা + +// xn--90ae ("bg", Bulgarian) : BG +бг + +// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY +// Operated by .by registry +бел + +// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中国 + +// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中國 + +// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ +الجزائر + +// xn--wgbh1c ("Egypt/Masr", Arabic) : EG +// http://www.dotmasr.eg/ +مصر + +// xn--e1a4c ("eu", Cyrillic) : EU +ею + +// xn--node ("ge", Georgian Mkhedruli) : GE +გე + +// xn--qxam ("el", Greek) : GR +// Hellenic Ministry of Infrastructure, Transport, and Networks +ελ + +// xn--j6w193g ("Hong Kong", Chinese) : HK +// https://www.hkirc.hk +// Submitted by registry +// https://www.hkirc.hk/content.jsp?id=30#!/34 +香港 +公司.香港 +教育.香港 +政府.香港 +個人.香港 +網絡.香港 +組織.香港 + +// xn--2scrj9c ("Bharat", Kannada) : IN +// India +ಭಾರತ + +// xn--3hcrj9c ("Bharat", Oriya) : IN +// India +ଭାରତ + +// xn--45br5cyl ("Bharatam", Assamese) : IN +// India +ভাৰত + +// xn--h2breg3eve ("Bharatam", Sanskrit) : IN +// India +भारतम् + +// xn--h2brj9c8c ("Bharot", Santali) : IN +// India +भारोत + +// xn--mgbgu82a ("Bharat", Sindhi) : IN +// India +ڀارت + +// xn--rvc1e0am3e ("Bharatam", Malayalam) : IN +// India +ഭാരതം + +// xn--h2brj9c ("Bharat", Devanagari) : IN +// India +भारत + +// xn--mgbbh1a ("Bharat", Kashmiri) : IN +// India +بارت + +// xn--mgbbh1a71e ("Bharat", Arabic) : IN +// India +بھارت + +// xn--fpcrj9c3d ("Bharat", Telugu) : IN +// India +భారత్ + +// xn--gecrj9c ("Bharat", Gujarati) : IN +// India +ભારત + +// xn--s9brj9c ("Bharat", Gurmukhi) : IN +// India +ਭਾਰਤ + +// xn--45brj9c ("Bharat", Bengali) : IN +// India +ভারত + +// xn--xkc2dl3a5ee0h ("India", Tamil) : IN +// India +இந்தியா + +// xn--mgba3a4f16a ("Iran", Persian) : IR +ایران + +// xn--mgba3a4fra ("Iran", Arabic) : IR +ايران + +// xn--mgbtx2b ("Iraq", Arabic) : IQ +// Communications and Media Commission +عراق + +// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO +// National Information Technology Center (NITC) +// Royal Scientific Society, Al-Jubeiha +الاردن + +// xn--3e0b707e ("Republic of Korea", Hangul) : KR +한국 + +// xn--80ao21a ("Kaz", Kazakh) : KZ +қаз + +// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK +// http://nic.lk +ලංකා + +// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK +// http://nic.lk +இலங்கை + +// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA +المغرب + +// xn--d1alf ("mkd", Macedonian) : MK +// MARnet +мкд + +// xn--l1acc ("mon", Mongolian) : MN +мон + +// xn--mix891f ("Macao", Chinese, Traditional) : MO +// MONIC / HNET Asia (Registry Operator for .mo) +澳門 + +// xn--mix082f ("Macao", Chinese, Simplified) : MO +澳门 + +// xn--mgbx4cd0ab ("Malaysia", Malay) : MY +مليسيا + +// xn--mgb9awbf ("Oman", Arabic) : OM +عمان + +// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK +پاکستان + +// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK +پاكستان + +// xn--ygbi2ammx ("Falasteen", Arabic) : PS +// The Palestinian National Internet Naming Authority (PNINA) +// http://www.pnina.ps +فلسطين + +// xn--90a3ac ("srb", Cyrillic) : RS +// https://www.rnids.rs/en/domains/national-domains +срб +пр.срб +орг.срб +обр.срб +од.срб +упр.срб +ак.срб + +// xn--p1ai ("rf", Russian-Cyrillic) : RU +// http://www.cctld.ru/en/docs/rulesrf.php +рф + +// xn--wgbl6a ("Qatar", Arabic) : QA +// http://www.ict.gov.qa/ +قطر + +// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA +// http://www.nic.net.sa/ +السعودية + +// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA +السعودیة + +// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA +السعودیۃ + +// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA +السعوديه + +// xn--mgbpl2fh ("sudan", Arabic) : SD +// Operated by .sd registry +سودان + +// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG +新加坡 + +// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG +சிங்கப்பூர் + +// xn--ogbpf8fl ("Syria", Arabic) : SY +سورية + +// xn--mgbtf8fl ("Syria", Arabic, variant) : SY +سوريا + +// xn--o3cw4h ("Thai", Thai) : TH +// http://www.thnic.co.th +ไทย +ศึกษา.ไทย +ธุรกิจ.ไทย +รัฐบาล.ไทย +ทหาร.ไทย +เน็ต.ไทย +องค์กร.ไทย + +// xn--pgbs0dh ("Tunisia", Arabic) : TN +// http://nic.tn +تونس + +// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台灣 + +// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台湾 + +// xn--nnx388a ("Taiwan", Chinese, variant) : TW +臺灣 + +// xn--j1amh ("ukr", Cyrillic) : UA +укр + +// xn--mgb2ddes ("AlYemen", Arabic) : YE +اليمن + +// xxx : http://icmregistry.com +xxx + +// ye : http://www.y.net.ye/services/domain_name.htm +*.ye + +// za : http://www.zadna.org.za/content/page/domain-information +ac.za +agric.za +alt.za +co.za +edu.za +gov.za +grondar.za +law.za +mil.za +net.za +ngo.za +nis.za +nom.za +org.za +school.za +tm.za +web.za + +// zm : https://zicta.zm/ +// Submitted by registry +zm +ac.zm +biz.zm +co.zm +com.zm +edu.zm +gov.zm +info.zm +mil.zm +net.zm +org.zm +sch.zm + +// zw : https://www.potraz.gov.zw/ +// Confirmed by registry 2017-01-25 +zw +ac.zw +co.zw +gov.zw +mil.zw +org.zw + + +// newGTLDs +// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2018-05-08T19:40:37Z +// This list is auto-generated, don't edit it manually. + +// aaa : 2015-02-26 American Automobile Association, Inc. +aaa + +// aarp : 2015-05-21 AARP +aarp + +// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V. +abarth + +// abb : 2014-10-24 ABB Ltd +abb + +// abbott : 2014-07-24 Abbott Laboratories, Inc. +abbott + +// abbvie : 2015-07-30 AbbVie Inc. +abbvie + +// abc : 2015-07-30 Disney Enterprises, Inc. +abc + +// able : 2015-06-25 Able Inc. +able + +// abogado : 2014-04-24 Minds + Machines Group Limited +abogado + +// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre +abudhabi + +// academy : 2013-11-07 Binky Moon, LLC +academy + +// accenture : 2014-08-15 Accenture plc +accenture + +// accountant : 2014-11-20 dot Accountant Limited +accountant + +// accountants : 2014-03-20 Binky Moon, LLC +accountants + +// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG +aco + +// active : 2014-05-01 Active Network, LLC +active + +// actor : 2013-12-12 United TLD Holdco Ltd. +actor + +// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) +adac + +// ads : 2014-12-04 Charleston Road Registry Inc. +ads + +// adult : 2014-10-16 ICM Registry AD LLC +adult + +// aeg : 2015-03-19 Aktiebolaget Electrolux +aeg + +// aetna : 2015-05-21 Aetna Life Insurance Company +aetna + +// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc. +afamilycompany + +// afl : 2014-10-02 Australian Football League +afl + +// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa +africa + +// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +agakhan + +// agency : 2013-11-14 Binky Moon, LLC +agency + +// aig : 2014-12-18 American International Group, Inc. +aig + +// aigo : 2015-08-06 aigo Digital Technology Co,Ltd. +aigo + +// airbus : 2015-07-30 Airbus S.A.S. +airbus + +// airforce : 2014-03-06 United TLD Holdco Ltd. +airforce + +// airtel : 2014-10-24 Bharti Airtel Limited +airtel + +// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +akdn + +// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V. +alfaromeo + +// alibaba : 2015-01-15 Alibaba Group Holding Limited +alibaba + +// alipay : 2015-01-15 Alibaba Group Holding Limited +alipay + +// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +allfinanz + +// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company +allstate + +// ally : 2015-06-18 Ally Financial Inc. +ally + +// alsace : 2014-07-02 Region Grand Est +alsace + +// alstom : 2015-07-30 ALSTOM +alstom + +// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc. +americanexpress + +// americanfamily : 2015-07-23 AmFam, Inc. +americanfamily + +// amex : 2015-07-31 American Express Travel Related Services Company, Inc. +amex + +// amfam : 2015-07-23 AmFam, Inc. +amfam + +// amica : 2015-05-28 Amica Mutual Insurance Company +amica + +// amsterdam : 2014-07-24 Gemeente Amsterdam +amsterdam + +// analytics : 2014-12-18 Campus IP LLC +analytics + +// android : 2014-08-07 Charleston Road Registry Inc. +android + +// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +anquan + +// anz : 2015-07-31 Australia and New Zealand Banking Group Limited +anz + +// aol : 2015-09-17 Oath Inc. +aol + +// apartments : 2014-12-11 Binky Moon, LLC +apartments + +// app : 2015-05-14 Charleston Road Registry Inc. +app + +// apple : 2015-05-14 Apple Inc. +apple + +// aquarelle : 2014-07-24 Aquarelle.com +aquarelle + +// arab : 2015-11-12 League of Arab States +arab + +// aramco : 2014-11-20 Aramco Services Company +aramco + +// archi : 2014-02-06 Afilias plc +archi + +// army : 2014-03-06 United TLD Holdco Ltd. +army + +// art : 2016-03-24 UK Creative Ideas Limited +art + +// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. +arte + +// asda : 2015-07-31 Wal-Mart Stores, Inc. +asda + +// associates : 2014-03-06 Binky Moon, LLC +associates + +// athleta : 2015-07-30 The Gap, Inc. +athleta + +// attorney : 2014-03-20 United TLD Holdco Ltd. +attorney + +// auction : 2014-03-20 United TLD Holdco Ltd. +auction + +// audi : 2015-05-21 AUDI Aktiengesellschaft +audi + +// audible : 2015-06-25 Amazon Registry Services, Inc. +audible + +// audio : 2014-03-20 Uniregistry, Corp. +audio + +// auspost : 2015-08-13 Australian Postal Corporation +auspost + +// author : 2014-12-18 Amazon Registry Services, Inc. +author + +// auto : 2014-11-13 Cars Registry Limited +auto + +// autos : 2014-01-09 DERAutos, LLC +autos + +// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca +avianca + +// aws : 2015-06-25 Amazon Registry Services, Inc. +aws + +// axa : 2013-12-19 AXA SA +axa + +// azure : 2014-12-18 Microsoft Corporation +azure + +// baby : 2015-04-09 Johnson & Johnson Services, Inc. +baby + +// baidu : 2015-01-08 Baidu, Inc. +baidu + +// banamex : 2015-07-30 Citigroup Inc. +banamex + +// bananarepublic : 2015-07-31 The Gap, Inc. +bananarepublic + +// band : 2014-06-12 United TLD Holdco Ltd. +band + +// bank : 2014-09-25 fTLD Registry Services LLC +bank + +// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +bar + +// barcelona : 2014-07-24 Municipi de Barcelona +barcelona + +// barclaycard : 2014-11-20 Barclays Bank PLC +barclaycard + +// barclays : 2014-11-20 Barclays Bank PLC +barclays + +// barefoot : 2015-06-11 Gallo Vineyards, Inc. +barefoot + +// bargains : 2013-11-14 Binky Moon, LLC +bargains + +// baseball : 2015-10-29 MLB Advanced Media DH, LLC +baseball + +// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA) +basketball + +// bauhaus : 2014-04-17 Werkhaus GmbH +bauhaus + +// bayern : 2014-01-23 Bayern Connect GmbH +bayern + +// bbc : 2014-12-18 British Broadcasting Corporation +bbc + +// bbt : 2015-07-23 BB&T Corporation +bbt + +// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +bbva + +// bcg : 2015-04-02 The Boston Consulting Group, Inc. +bcg + +// bcn : 2014-07-24 Municipi de Barcelona +bcn + +// beats : 2015-05-14 Beats Electronics, LLC +beats + +// beauty : 2015-12-03 L'Oréal +beauty + +// beer : 2014-01-09 Minds + Machines Group Limited +beer + +// bentley : 2014-12-18 Bentley Motors Limited +bentley + +// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG +berlin + +// best : 2013-12-19 BestTLD Pty Ltd +best + +// bestbuy : 2015-07-31 BBY Solutions, Inc. +bestbuy + +// bet : 2015-05-07 Afilias plc +bet + +// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited +bharti + +// bible : 2014-06-19 American Bible Society +bible + +// bid : 2013-12-19 dot Bid Limited +bid + +// bike : 2013-08-27 Binky Moon, LLC +bike + +// bing : 2014-12-18 Microsoft Corporation +bing + +// bingo : 2014-12-04 Binky Moon, LLC +bingo + +// bio : 2014-03-06 Afilias plc +bio + +// black : 2014-01-16 Afilias plc +black + +// blackfriday : 2014-01-16 Uniregistry, Corp. +blackfriday + +// blanco : 2015-07-16 BLANCO GmbH + Co KG +blanco + +// blockbuster : 2015-07-30 Dish DBS Corporation +blockbuster + +// blog : 2015-05-14 Knock Knock WHOIS There, LLC +blog + +// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC +bloomberg + +// blue : 2013-11-07 Afilias plc +blue + +// bms : 2014-10-30 Bristol-Myers Squibb Company +bms + +// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +bmw + +// bnl : 2014-07-24 Banca Nazionale del Lavoro +bnl + +// bnpparibas : 2014-05-29 BNP Paribas +bnpparibas + +// boats : 2014-12-04 DERBoats, LLC +boats + +// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH +boehringer + +// bofa : 2015-07-31 Bank of America Corporation +bofa + +// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +bom + +// bond : 2014-06-05 Bond University Limited +bond + +// boo : 2014-01-30 Charleston Road Registry Inc. +boo + +// book : 2015-08-27 Amazon Registry Services, Inc. +book + +// booking : 2015-07-16 Booking.com B.V. +booking + +// bosch : 2015-06-18 Robert Bosch GMBH +bosch + +// bostik : 2015-05-28 Bostik SA +bostik + +// boston : 2015-12-10 Boston TLD Management, LLC +boston + +// bot : 2014-12-18 Amazon Registry Services, Inc. +bot + +// boutique : 2013-11-14 Binky Moon, LLC +boutique + +// box : 2015-11-12 NS1 Limited +box + +// bradesco : 2014-12-18 Banco Bradesco S.A. +bradesco + +// bridgestone : 2014-12-18 Bridgestone Corporation +bridgestone + +// broadway : 2014-12-22 Celebrate Broadway, Inc. +broadway + +// broker : 2014-12-11 Dotbroker Registry Limited +broker + +// brother : 2015-01-29 Brother Industries, Ltd. +brother + +// brussels : 2014-02-06 DNS.be vzw +brussels + +// budapest : 2013-11-21 Minds + Machines Group Limited +budapest + +// bugatti : 2015-07-23 Bugatti International SA +bugatti + +// build : 2013-11-07 Plan Bee LLC +build + +// builders : 2013-11-07 Binky Moon, LLC +builders + +// business : 2013-11-07 Binky Moon, LLC +business + +// buy : 2014-12-18 Amazon Registry Services, Inc. +buy + +// buzz : 2013-10-02 DOTSTRATEGY CO. +buzz + +// bzh : 2014-02-27 Association www.bzh +bzh + +// cab : 2013-10-24 Binky Moon, LLC +cab + +// cafe : 2015-02-11 Binky Moon, LLC +cafe + +// cal : 2014-07-24 Charleston Road Registry Inc. +cal + +// call : 2014-12-18 Amazon Registry Services, Inc. +call + +// calvinklein : 2015-07-30 PVH gTLD Holdings LLC +calvinklein + +// cam : 2016-04-21 AC Webconnecting Holding B.V. +cam + +// camera : 2013-08-27 Binky Moon, LLC +camera + +// camp : 2013-11-07 Binky Moon, LLC +camp + +// cancerresearch : 2014-05-15 Australian Cancer Research Foundation +cancerresearch + +// canon : 2014-09-12 Canon Inc. +canon + +// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +capetown + +// capital : 2014-03-06 Binky Moon, LLC +capital + +// capitalone : 2015-08-06 Capital One Financial Corporation +capitalone + +// car : 2015-01-22 Cars Registry Limited +car + +// caravan : 2013-12-12 Caravan International, Inc. +caravan + +// cards : 2013-12-05 Binky Moon, LLC +cards + +// care : 2014-03-06 Binky Moon, LLC +care + +// career : 2013-10-09 dotCareer LLC +career + +// careers : 2013-10-02 Binky Moon, LLC +careers + +// cars : 2014-11-13 Cars Registry Limited +cars + +// cartier : 2014-06-23 Richemont DNS Inc. +cartier + +// casa : 2013-11-21 Minds + Machines Group Limited +casa + +// case : 2015-09-03 CNH Industrial N.V. +case + +// caseih : 2015-09-03 CNH Industrial N.V. +caseih + +// cash : 2014-03-06 Binky Moon, LLC +cash + +// casino : 2014-12-18 Binky Moon, LLC +casino + +// catering : 2013-12-05 Binky Moon, LLC +catering + +// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +catholic + +// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +cba + +// cbn : 2014-08-22 The Christian Broadcasting Network, Inc. +cbn + +// cbre : 2015-07-02 CBRE, Inc. +cbre + +// cbs : 2015-08-06 CBS Domains Inc. +cbs + +// ceb : 2015-04-09 The Corporate Executive Board Company +ceb + +// center : 2013-11-07 Binky Moon, LLC +center + +// ceo : 2013-11-07 CEOTLD Pty Ltd +ceo + +// cern : 2014-06-05 European Organization for Nuclear Research ("CERN") +cern + +// cfa : 2014-08-28 CFA Institute +cfa + +// cfd : 2014-12-11 DotCFD Registry Limited +cfd + +// chanel : 2015-04-09 Chanel International B.V. +chanel + +// channel : 2014-05-08 Charleston Road Registry Inc. +channel + +// charity : 2018-04-11 Corn Lake, LLC +charity + +// chase : 2015-04-30 JPMorgan Chase Bank, National Association +chase + +// chat : 2014-12-04 Binky Moon, LLC +chat + +// cheap : 2013-11-14 Binky Moon, LLC +cheap + +// chintai : 2015-06-11 CHINTAI Corporation +chintai + +// christmas : 2013-11-21 Uniregistry, Corp. +christmas + +// chrome : 2014-07-24 Charleston Road Registry Inc. +chrome + +// chrysler : 2015-07-30 FCA US LLC. +chrysler + +// church : 2014-02-06 Binky Moon, LLC +church + +// cipriani : 2015-02-19 Hotel Cipriani Srl +cipriani + +// circle : 2014-12-18 Amazon Registry Services, Inc. +circle + +// cisco : 2014-12-22 Cisco Technology, Inc. +cisco + +// citadel : 2015-07-23 Citadel Domain LLC +citadel + +// citi : 2015-07-30 Citigroup Inc. +citi + +// citic : 2014-01-09 CITIC Group Corporation +citic + +// city : 2014-05-29 Binky Moon, LLC +city + +// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc. +cityeats + +// claims : 2014-03-20 Binky Moon, LLC +claims + +// cleaning : 2013-12-05 Binky Moon, LLC +cleaning + +// click : 2014-06-05 Uniregistry, Corp. +click + +// clinic : 2014-03-20 Binky Moon, LLC +clinic + +// clinique : 2015-10-01 The Estée Lauder Companies Inc. +clinique + +// clothing : 2013-08-27 Binky Moon, LLC +clothing + +// cloud : 2015-04-16 Aruba PEC S.p.A. +cloud + +// club : 2013-11-08 .CLUB DOMAINS, LLC +club + +// clubmed : 2015-06-25 Club Méditerranée S.A. +clubmed + +// coach : 2014-10-09 Binky Moon, LLC +coach + +// codes : 2013-10-31 Binky Moon, LLC +codes + +// coffee : 2013-10-17 Binky Moon, LLC +coffee + +// college : 2014-01-16 XYZ.COM LLC +college + +// cologne : 2014-02-05 punkt.wien GmbH +cologne + +// comcast : 2015-07-23 Comcast IP Holdings I, LLC +comcast + +// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +commbank + +// community : 2013-12-05 Binky Moon, LLC +community + +// company : 2013-11-07 Binky Moon, LLC +company + +// compare : 2015-10-08 iSelect Ltd +compare + +// computer : 2013-10-24 Binky Moon, LLC +computer + +// comsec : 2015-01-08 VeriSign, Inc. +comsec + +// condos : 2013-12-05 Binky Moon, LLC +condos + +// construction : 2013-09-16 Binky Moon, LLC +construction + +// consulting : 2013-12-05 United TLD Holdco Ltd. +consulting + +// contact : 2015-01-08 Top Level Spectrum, Inc. +contact + +// contractors : 2013-09-10 Binky Moon, LLC +contractors + +// cooking : 2013-11-21 Minds + Machines Group Limited +cooking + +// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +cookingchannel + +// cool : 2013-11-14 Binky Moon, LLC +cool + +// corsica : 2014-09-25 Collectivité de Corse +corsica + +// country : 2013-12-19 DotCountry LLC +country + +// coupon : 2015-02-26 Amazon Registry Services, Inc. +coupon + +// coupons : 2015-03-26 Binky Moon, LLC +coupons + +// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD +courses + +// credit : 2014-03-20 Binky Moon, LLC +credit + +// creditcard : 2014-03-20 Binky Moon, LLC +creditcard + +// creditunion : 2015-01-22 CUNA Performance Resources, LLC +creditunion + +// cricket : 2014-10-09 dot Cricket Limited +cricket + +// crown : 2014-10-24 Crown Equipment Corporation +crown + +// crs : 2014-04-03 Federated Co-operatives Limited +crs + +// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd. +cruise + +// cruises : 2013-12-05 Binky Moon, LLC +cruises + +// csc : 2014-09-25 Alliance-One Services, Inc. +csc + +// cuisinella : 2014-04-03 SALM S.A.S. +cuisinella + +// cymru : 2014-05-08 Nominet UK +cymru + +// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd. +cyou + +// dabur : 2014-02-06 Dabur India Limited +dabur + +// dad : 2014-01-23 Charleston Road Registry Inc. +dad + +// dance : 2013-10-24 United TLD Holdco Ltd. +dance + +// data : 2016-06-02 Dish DBS Corporation +data + +// date : 2014-11-20 dot Date Limited +date + +// dating : 2013-12-05 Binky Moon, LLC +dating + +// datsun : 2014-03-27 NISSAN MOTOR CO., LTD. +datsun + +// day : 2014-01-30 Charleston Road Registry Inc. +day + +// dclk : 2014-11-20 Charleston Road Registry Inc. +dclk + +// dds : 2015-05-07 Minds + Machines Group Limited +dds + +// deal : 2015-06-25 Amazon Registry Services, Inc. +deal + +// dealer : 2014-12-22 Dealer Dot Com, Inc. +dealer + +// deals : 2014-05-22 Binky Moon, LLC +deals + +// degree : 2014-03-06 United TLD Holdco Ltd. +degree + +// delivery : 2014-09-11 Binky Moon, LLC +delivery + +// dell : 2014-10-24 Dell Inc. +dell + +// deloitte : 2015-07-31 Deloitte Touche Tohmatsu +deloitte + +// delta : 2015-02-19 Delta Air Lines, Inc. +delta + +// democrat : 2013-10-24 United TLD Holdco Ltd. +democrat + +// dental : 2014-03-20 Binky Moon, LLC +dental + +// dentist : 2014-03-20 United TLD Holdco Ltd. +dentist + +// desi : 2013-11-14 Desi Networks LLC +desi + +// design : 2014-11-07 Top Level Design, LLC +design + +// dev : 2014-10-16 Charleston Road Registry Inc. +dev + +// dhl : 2015-07-23 Deutsche Post AG +dhl + +// diamonds : 2013-09-22 Binky Moon, LLC +diamonds + +// diet : 2014-06-26 Uniregistry, Corp. +diet + +// digital : 2014-03-06 Binky Moon, LLC +digital + +// direct : 2014-04-10 Binky Moon, LLC +direct + +// directory : 2013-09-20 Binky Moon, LLC +directory + +// discount : 2014-03-06 Binky Moon, LLC +discount + +// discover : 2015-07-23 Discover Financial Services +discover + +// dish : 2015-07-30 Dish DBS Corporation +dish + +// diy : 2015-11-05 Lifestyle Domain Holdings, Inc. +diy + +// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. +dnp + +// docs : 2014-10-16 Charleston Road Registry Inc. +docs + +// doctor : 2016-06-02 Binky Moon, LLC +doctor + +// dodge : 2015-07-30 FCA US LLC. +dodge + +// dog : 2014-12-04 Binky Moon, LLC +dog + +// doha : 2014-09-18 Communications Regulatory Authority (CRA) +doha + +// domains : 2013-10-17 Binky Moon, LLC +domains + +// dot : 2015-05-21 Dish DBS Corporation +dot + +// download : 2014-11-20 dot Support Limited +download + +// drive : 2015-03-05 Charleston Road Registry Inc. +drive + +// dtv : 2015-06-04 Dish DBS Corporation +dtv + +// dubai : 2015-01-01 Dubai Smart Government Department +dubai + +// duck : 2015-07-23 Johnson Shareholdings, Inc. +duck + +// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company +dunlop + +// duns : 2015-08-06 The Dun & Bradstreet Corporation +duns + +// dupont : 2015-06-25 E. I. du Pont de Nemours and Company +dupont + +// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +durban + +// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +dvag + +// dvr : 2016-05-26 Hughes Satellite Systems Corporation +dvr + +// earth : 2014-12-04 Interlink Co., Ltd. +earth + +// eat : 2014-01-23 Charleston Road Registry Inc. +eat + +// eco : 2016-07-08 Big Room Inc. +eco + +// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V. +edeka + +// education : 2013-11-07 Binky Moon, LLC +education + +// email : 2013-10-31 Binky Moon, LLC +email + +// emerck : 2014-04-03 Merck KGaA +emerck + +// energy : 2014-09-11 Binky Moon, LLC +energy + +// engineer : 2014-03-06 United TLD Holdco Ltd. +engineer + +// engineering : 2014-03-06 Binky Moon, LLC +engineering + +// enterprises : 2013-09-20 Binky Moon, LLC +enterprises + +// epost : 2015-07-23 Deutsche Post AG +epost + +// epson : 2014-12-04 Seiko Epson Corporation +epson + +// equipment : 2013-08-27 Binky Moon, LLC +equipment + +// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson +ericsson + +// erni : 2014-04-03 ERNI Group Holding AG +erni + +// esq : 2014-05-08 Charleston Road Registry Inc. +esq + +// estate : 2013-08-27 Binky Moon, LLC +estate + +// esurance : 2015-07-23 Esurance Insurance Company +esurance + +// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +etisalat + +// eurovision : 2014-04-24 European Broadcasting Union (EBU) +eurovision + +// eus : 2013-12-12 Puntueus Fundazioa +eus + +// events : 2013-12-05 Binky Moon, LLC +events + +// everbank : 2014-05-15 EverBank +everbank + +// exchange : 2014-03-06 Binky Moon, LLC +exchange + +// expert : 2013-11-21 Binky Moon, LLC +expert + +// exposed : 2013-12-05 Binky Moon, LLC +exposed + +// express : 2015-02-11 Binky Moon, LLC +express + +// extraspace : 2015-05-14 Extra Space Storage LLC +extraspace + +// fage : 2014-12-18 Fage International S.A. +fage + +// fail : 2014-03-06 Binky Moon, LLC +fail + +// fairwinds : 2014-11-13 FairWinds Partners, LLC +fairwinds + +// faith : 2014-11-20 dot Faith Limited +faith + +// family : 2015-04-02 United TLD Holdco Ltd. +family + +// fan : 2014-03-06 Asiamix Digital Limited +fan + +// fans : 2014-11-07 Asiamix Digital Limited +fans + +// farm : 2013-11-07 Binky Moon, LLC +farm + +// farmers : 2015-07-09 Farmers Insurance Exchange +farmers + +// fashion : 2014-07-03 Minds + Machines Group Limited +fashion + +// fast : 2014-12-18 Amazon Registry Services, Inc. +fast + +// fedex : 2015-08-06 Federal Express Corporation +fedex + +// feedback : 2013-12-19 Top Level Spectrum, Inc. +feedback + +// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V. +ferrari + +// ferrero : 2014-12-18 Ferrero Trading Lux S.A. +ferrero + +// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V. +fiat + +// fidelity : 2015-07-30 Fidelity Brokerage Services LLC +fidelity + +// fido : 2015-08-06 Rogers Communications Canada Inc. +fido + +// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd +film + +// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +final + +// finance : 2014-03-20 Binky Moon, LLC +finance + +// financial : 2014-03-06 Binky Moon, LLC +financial + +// fire : 2015-06-25 Amazon Registry Services, Inc. +fire + +// firestone : 2014-12-18 Bridgestone Licensing Services, Inc +firestone + +// firmdale : 2014-03-27 Firmdale Holdings Limited +firmdale + +// fish : 2013-12-12 Binky Moon, LLC +fish + +// fishing : 2013-11-21 Minds + Machines Group Limited +fishing + +// fit : 2014-11-07 Minds + Machines Group Limited +fit + +// fitness : 2014-03-06 Binky Moon, LLC +fitness + +// flickr : 2015-04-02 Yahoo! Domain Services Inc. +flickr + +// flights : 2013-12-05 Binky Moon, LLC +flights + +// flir : 2015-07-23 FLIR Systems, Inc. +flir + +// florist : 2013-11-07 Binky Moon, LLC +florist + +// flowers : 2014-10-09 Uniregistry, Corp. +flowers + +// fly : 2014-05-08 Charleston Road Registry Inc. +fly + +// foo : 2014-01-23 Charleston Road Registry Inc. +foo + +// food : 2016-04-21 Lifestyle Domain Holdings, Inc. +food + +// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc. +foodnetwork + +// football : 2014-12-18 Binky Moon, LLC +football + +// ford : 2014-11-13 Ford Motor Company +ford + +// forex : 2014-12-11 Dotforex Registry Limited +forex + +// forsale : 2014-05-22 United TLD Holdco Ltd. +forsale + +// forum : 2015-04-02 Fegistry, LLC +forum + +// foundation : 2013-12-05 Binky Moon, LLC +foundation + +// fox : 2015-09-11 FOX Registry, LLC +fox + +// free : 2015-12-10 Amazon Registry Services, Inc. +free + +// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH +fresenius + +// frl : 2014-05-15 FRLregistry B.V. +frl + +// frogans : 2013-12-19 OP3FT +frogans + +// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc. +frontdoor + +// frontier : 2015-02-05 Frontier Communications Corporation +frontier + +// ftr : 2015-07-16 Frontier Communications Corporation +ftr + +// fujitsu : 2015-07-30 Fujitsu Limited +fujitsu + +// fujixerox : 2015-07-23 Xerox DNHC LLC +fujixerox + +// fun : 2016-01-14 DotSpace Inc. +fun + +// fund : 2014-03-20 Binky Moon, LLC +fund + +// furniture : 2014-03-20 Binky Moon, LLC +furniture + +// futbol : 2013-09-20 United TLD Holdco Ltd. +futbol + +// fyi : 2015-04-02 Binky Moon, LLC +fyi + +// gal : 2013-11-07 Asociación puntoGAL +gal + +// gallery : 2013-09-13 Binky Moon, LLC +gallery + +// gallo : 2015-06-11 Gallo Vineyards, Inc. +gallo + +// gallup : 2015-02-19 Gallup, Inc. +gallup + +// game : 2015-05-28 Uniregistry, Corp. +game + +// games : 2015-05-28 United TLD Holdco Ltd. +games + +// gap : 2015-07-31 The Gap, Inc. +gap + +// garden : 2014-06-26 Minds + Machines Group Limited +garden + +// gbiz : 2014-07-17 Charleston Road Registry Inc. +gbiz + +// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems" +gdn + +// gea : 2014-12-04 GEA Group Aktiengesellschaft +gea + +// gent : 2014-01-23 COMBELL NV +gent + +// genting : 2015-03-12 Resorts World Inc Pte. Ltd. +genting + +// george : 2015-07-31 Wal-Mart Stores, Inc. +george + +// ggee : 2014-01-09 GMO Internet, Inc. +ggee + +// gift : 2013-10-17 DotGift, LLC +gift + +// gifts : 2014-07-03 Binky Moon, LLC +gifts + +// gives : 2014-03-06 United TLD Holdco Ltd. +gives + +// giving : 2014-11-13 Giving Limited +giving + +// glade : 2015-07-23 Johnson Shareholdings, Inc. +glade + +// glass : 2013-11-07 Binky Moon, LLC +glass + +// gle : 2014-07-24 Charleston Road Registry Inc. +gle + +// global : 2014-04-17 Dot Global Domain Registry Limited +global + +// globo : 2013-12-19 Globo Comunicação e Participações S.A +globo + +// gmail : 2014-05-01 Charleston Road Registry Inc. +gmail + +// gmbh : 2016-01-29 Binky Moon, LLC +gmbh + +// gmo : 2014-01-09 GMO Internet Pte. Ltd. +gmo + +// gmx : 2014-04-24 1&1 Mail & Media GmbH +gmx + +// godaddy : 2015-07-23 Go Daddy East, LLC +godaddy + +// gold : 2015-01-22 Binky Moon, LLC +gold + +// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +goldpoint + +// golf : 2014-12-18 Binky Moon, LLC +golf + +// goo : 2014-12-18 NTT Resonant Inc. +goo + +// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company +goodhands + +// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company +goodyear + +// goog : 2014-11-20 Charleston Road Registry Inc. +goog + +// google : 2014-07-24 Charleston Road Registry Inc. +google + +// gop : 2014-01-16 Republican State Leadership Committee, Inc. +gop + +// got : 2014-12-18 Amazon Registry Services, Inc. +got + +// grainger : 2015-05-07 Grainger Registry Services, LLC +grainger + +// graphics : 2013-09-13 Binky Moon, LLC +graphics + +// gratis : 2014-03-20 Binky Moon, LLC +gratis + +// green : 2014-05-08 Afilias plc +green + +// gripe : 2014-03-06 Binky Moon, LLC +gripe + +// grocery : 2016-06-16 Wal-Mart Stores, Inc. +grocery + +// group : 2014-08-15 Binky Moon, LLC +group + +// guardian : 2015-07-30 The Guardian Life Insurance Company of America +guardian + +// gucci : 2014-11-13 Guccio Gucci S.p.a. +gucci + +// guge : 2014-08-28 Charleston Road Registry Inc. +guge + +// guide : 2013-09-13 Binky Moon, LLC +guide + +// guitars : 2013-11-14 Uniregistry, Corp. +guitars + +// guru : 2013-08-27 Binky Moon, LLC +guru + +// hair : 2015-12-03 L'Oréal +hair + +// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH +hamburg + +// hangout : 2014-11-13 Charleston Road Registry Inc. +hangout + +// haus : 2013-12-05 United TLD Holdco Ltd. +haus + +// hbo : 2015-07-30 HBO Registry Services, Inc. +hbo + +// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +hdfc + +// hdfcbank : 2015-02-12 HDFC Bank Limited +hdfcbank + +// health : 2015-02-11 DotHealth, LLC +health + +// healthcare : 2014-06-12 Binky Moon, LLC +healthcare + +// help : 2014-06-26 Uniregistry, Corp. +help + +// helsinki : 2015-02-05 City of Helsinki +helsinki + +// here : 2014-02-06 Charleston Road Registry Inc. +here + +// hermes : 2014-07-10 HERMES INTERNATIONAL +hermes + +// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc. +hgtv + +// hiphop : 2014-03-06 Uniregistry, Corp. +hiphop + +// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc. +hisamitsu + +// hitachi : 2014-10-31 Hitachi, Ltd. +hitachi + +// hiv : 2014-03-13 Uniregistry, Corp. +hiv + +// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited +hkt + +// hockey : 2015-03-19 Binky Moon, LLC +hockey + +// holdings : 2013-08-27 Binky Moon, LLC +holdings + +// holiday : 2013-11-07 Binky Moon, LLC +holiday + +// homedepot : 2015-04-02 Home Depot Product Authority, LLC +homedepot + +// homegoods : 2015-07-16 The TJX Companies, Inc. +homegoods + +// homes : 2014-01-09 DERHomes, LLC +homes + +// homesense : 2015-07-16 The TJX Companies, Inc. +homesense + +// honda : 2014-12-18 Honda Motor Co., Ltd. +honda + +// honeywell : 2015-07-23 Honeywell GTLD LLC +honeywell + +// horse : 2013-11-21 Minds + Machines Group Limited +horse + +// hospital : 2016-10-20 Binky Moon, LLC +hospital + +// host : 2014-04-17 DotHost Inc. +host + +// hosting : 2014-05-29 Uniregistry, Corp. +hosting + +// hot : 2015-08-27 Amazon Registry Services, Inc. +hot + +// hoteles : 2015-03-05 Travel Reservations SRL +hoteles + +// hotels : 2016-04-07 Booking.com B.V. +hotels + +// hotmail : 2014-12-18 Microsoft Corporation +hotmail + +// house : 2013-11-07 Binky Moon, LLC +house + +// how : 2014-01-23 Charleston Road Registry Inc. +how + +// hsbc : 2014-10-24 HSBC Global Services (UK) Limited +hsbc + +// hughes : 2015-07-30 Hughes Satellite Systems Corporation +hughes + +// hyatt : 2015-07-30 Hyatt GTLD, L.L.C. +hyatt + +// hyundai : 2015-07-09 Hyundai Motor Company +hyundai + +// ibm : 2014-07-31 International Business Machines Corporation +ibm + +// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited +icbc + +// ice : 2014-10-30 IntercontinentalExchange, Inc. +ice + +// icu : 2015-01-08 ShortDot SA +icu + +// ieee : 2015-07-23 IEEE Global LLC +ieee + +// ifm : 2014-01-30 ifm electronic gmbh +ifm + +// ikano : 2015-07-09 Ikano S.A. +ikano + +// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +imamat + +// imdb : 2015-06-25 Amazon Registry Services, Inc. +imdb + +// immo : 2014-07-10 Binky Moon, LLC +immo + +// immobilien : 2013-11-07 United TLD Holdco Ltd. +immobilien + +// inc : 2018-03-10 GTLD Limited +inc + +// industries : 2013-12-05 Binky Moon, LLC +industries + +// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD. +infiniti + +// ing : 2014-01-23 Charleston Road Registry Inc. +ing + +// ink : 2013-12-05 Top Level Design, LLC +ink + +// institute : 2013-11-07 Binky Moon, LLC +institute + +// insurance : 2015-02-19 fTLD Registry Services LLC +insurance + +// insure : 2014-03-20 Binky Moon, LLC +insure + +// intel : 2015-08-06 Intel Corporation +intel + +// international : 2013-11-07 Binky Moon, LLC +international + +// intuit : 2015-07-30 Intuit Administrative Services, Inc. +intuit + +// investments : 2014-03-20 Binky Moon, LLC +investments + +// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A. +ipiranga + +// irish : 2014-08-07 Binky Moon, LLC +irish + +// iselect : 2015-02-11 iSelect Ltd +iselect + +// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +ismaili + +// ist : 2014-08-28 Istanbul Metropolitan Municipality +ist + +// istanbul : 2014-08-28 Istanbul Metropolitan Municipality +istanbul + +// itau : 2014-10-02 Itau Unibanco Holding S.A. +itau + +// itv : 2015-07-09 ITV Services Limited +itv + +// iveco : 2015-09-03 CNH Industrial N.V. +iveco + +// jaguar : 2014-11-13 Jaguar Land Rover Ltd +jaguar + +// java : 2014-06-19 Oracle Corporation +java + +// jcb : 2014-11-20 JCB Co., Ltd. +jcb + +// jcp : 2015-04-23 JCP Media, Inc. +jcp + +// jeep : 2015-07-30 FCA US LLC. +jeep + +// jetzt : 2014-01-09 Binky Moon, LLC +jetzt + +// jewelry : 2015-03-05 Binky Moon, LLC +jewelry + +// jio : 2015-04-02 Reliance Industries Limited +jio + +// jlc : 2014-12-04 Richemont DNS Inc. +jlc + +// jll : 2015-04-02 Jones Lang LaSalle Incorporated +jll + +// jmp : 2015-03-26 Matrix IP LLC +jmp + +// jnj : 2015-06-18 Johnson & Johnson Services, Inc. +jnj + +// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +joburg + +// jot : 2014-12-18 Amazon Registry Services, Inc. +jot + +// joy : 2014-12-18 Amazon Registry Services, Inc. +joy + +// jpmorgan : 2015-04-30 JPMorgan Chase Bank, National Association +jpmorgan + +// jprs : 2014-09-18 Japan Registry Services Co., Ltd. +jprs + +// juegos : 2014-03-20 Uniregistry, Corp. +juegos + +// juniper : 2015-07-30 JUNIPER NETWORKS, INC. +juniper + +// kaufen : 2013-11-07 United TLD Holdco Ltd. +kaufen + +// kddi : 2014-09-12 KDDI CORPORATION +kddi + +// kerryhotels : 2015-04-30 Kerry Trading Co. Limited +kerryhotels + +// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited +kerrylogistics + +// kerryproperties : 2015-04-09 Kerry Trading Co. Limited +kerryproperties + +// kfh : 2014-12-04 Kuwait Finance House +kfh + +// kia : 2015-07-09 KIA MOTORS CORPORATION +kia + +// kim : 2013-09-23 Afilias plc +kim + +// kinder : 2014-11-07 Ferrero Trading Lux S.A. +kinder + +// kindle : 2015-06-25 Amazon Registry Services, Inc. +kindle + +// kitchen : 2013-09-20 Binky Moon, LLC +kitchen + +// kiwi : 2013-09-20 DOT KIWI LIMITED +kiwi + +// koeln : 2014-01-09 punkt.wien GmbH +koeln + +// komatsu : 2015-01-08 Komatsu Ltd. +komatsu + +// kosher : 2015-08-20 Kosher Marketing Assets LLC +kosher + +// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft) +kpmg + +// kpn : 2015-01-08 Koninklijke KPN N.V. +kpn + +// krd : 2013-12-05 KRG Department of Information Technology +krd + +// kred : 2013-12-19 KredTLD Pty Ltd +kred + +// kuokgroup : 2015-04-09 Kerry Trading Co. Limited +kuokgroup + +// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen +kyoto + +// lacaixa : 2014-01-09 Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa” +lacaixa + +// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC +ladbrokes + +// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A. +lamborghini + +// lamer : 2015-10-01 The Estée Lauder Companies Inc. +lamer + +// lancaster : 2015-02-12 LANCASTER +lancaster + +// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V. +lancia + +// lancome : 2015-07-23 L'Oréal +lancome + +// land : 2013-09-10 Binky Moon, LLC +land + +// landrover : 2014-11-13 Jaguar Land Rover Ltd +landrover + +// lanxess : 2015-07-30 LANXESS Corporation +lanxess + +// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated +lasalle + +// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico +lat + +// latino : 2015-07-30 Dish DBS Corporation +latino + +// latrobe : 2014-06-16 La Trobe University +latrobe + +// law : 2015-01-22 Minds + Machines Group Limited +law + +// lawyer : 2014-03-20 United TLD Holdco Ltd. +lawyer + +// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") +lds + +// lease : 2014-03-06 Binky Moon, LLC +lease + +// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +leclerc + +// lefrak : 2015-07-16 LeFrak Organization, Inc. +lefrak + +// legal : 2014-10-16 Binky Moon, LLC +legal + +// lego : 2015-07-16 LEGO Juris A/S +lego + +// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION +lexus + +// lgbt : 2014-05-08 Afilias plc +lgbt + +// liaison : 2014-10-02 Liaison Technologies, Incorporated +liaison + +// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +lidl + +// life : 2014-02-06 Binky Moon, LLC +life + +// lifeinsurance : 2015-01-15 American Council of Life Insurers +lifeinsurance + +// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. +lifestyle + +// lighting : 2013-08-27 Binky Moon, LLC +lighting + +// like : 2014-12-18 Amazon Registry Services, Inc. +like + +// lilly : 2015-07-31 Eli Lilly and Company +lilly + +// limited : 2014-03-06 Binky Moon, LLC +limited + +// limo : 2013-10-17 Binky Moon, LLC +limo + +// lincoln : 2014-11-13 Ford Motor Company +lincoln + +// linde : 2014-12-04 Linde Aktiengesellschaft +linde + +// link : 2013-11-14 Uniregistry, Corp. +link + +// lipsy : 2015-06-25 Lipsy Ltd +lipsy + +// live : 2014-12-04 United TLD Holdco Ltd. +live + +// living : 2015-07-30 Lifestyle Domain Holdings, Inc. +living + +// lixil : 2015-03-19 LIXIL Group Corporation +lixil + +// llc : 2017-12-14 Afilias plc +llc + +// loan : 2014-11-20 dot Loan Limited +loan + +// loans : 2014-03-20 Binky Moon, LLC +loans + +// locker : 2015-06-04 Dish DBS Corporation +locker + +// locus : 2015-06-25 Locus Analytics LLC +locus + +// loft : 2015-07-30 Annco, Inc. +loft + +// lol : 2015-01-30 Uniregistry, Corp. +lol + +// london : 2013-11-14 Dot London Domains Limited +london + +// lotte : 2014-11-07 Lotte Holdings Co., Ltd. +lotte + +// lotto : 2014-04-10 Afilias plc +lotto + +// love : 2014-12-22 Merchant Law Group LLP +love + +// lpl : 2015-07-30 LPL Holdings, Inc. +lpl + +// lplfinancial : 2015-07-30 LPL Holdings, Inc. +lplfinancial + +// ltd : 2014-09-25 Binky Moon, LLC +ltd + +// ltda : 2014-04-17 InterNetX, Corp +ltda + +// lundbeck : 2015-08-06 H. Lundbeck A/S +lundbeck + +// lupin : 2014-11-07 LUPIN LIMITED +lupin + +// luxe : 2014-01-09 Minds + Machines Group Limited +luxe + +// luxury : 2013-10-17 Luxury Partners, LLC +luxury + +// macys : 2015-07-31 Macys, Inc. +macys + +// madrid : 2014-05-01 Comunidad de Madrid +madrid + +// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF) +maif + +// maison : 2013-12-05 Binky Moon, LLC +maison + +// makeup : 2015-01-15 L'Oréal +makeup + +// man : 2014-12-04 MAN SE +man + +// management : 2013-11-07 Binky Moon, LLC +management + +// mango : 2013-10-24 PUNTO FA S.L. +mango + +// map : 2016-06-09 Charleston Road Registry Inc. +map + +// market : 2014-03-06 United TLD Holdco Ltd. +market + +// marketing : 2013-11-07 Binky Moon, LLC +marketing + +// markets : 2014-12-11 Dotmarkets Registry Limited +markets + +// marriott : 2014-10-09 Marriott Worldwide Corporation +marriott + +// marshalls : 2015-07-16 The TJX Companies, Inc. +marshalls + +// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V. +maserati + +// mattel : 2015-08-06 Mattel Sites, Inc. +mattel + +// mba : 2015-04-02 Binky Moon, LLC +mba + +// mckinsey : 2015-07-31 McKinsey Holdings, Inc. +mckinsey + +// med : 2015-08-06 Medistry LLC +med + +// media : 2014-03-06 Binky Moon, LLC +media + +// meet : 2014-01-16 Charleston Road Registry Inc. +meet + +// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +melbourne + +// meme : 2014-01-30 Charleston Road Registry Inc. +meme + +// memorial : 2014-10-16 Dog Beach, LLC +memorial + +// men : 2015-02-26 Exclusive Registry Limited +men + +// menu : 2013-09-11 Wedding TLD2, LLC +menu + +// merckmsd : 2016-07-14 MSD Registry Holdings, Inc. +merckmsd + +// metlife : 2015-05-07 MetLife Services and Solutions, LLC +metlife + +// miami : 2013-12-19 Minds + Machines Group Limited +miami + +// microsoft : 2014-12-18 Microsoft Corporation +microsoft + +// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +mini + +// mint : 2015-07-30 Intuit Administrative Services, Inc. +mint + +// mit : 2015-07-02 Massachusetts Institute of Technology +mit + +// mitsubishi : 2015-07-23 Mitsubishi Corporation +mitsubishi + +// mlb : 2015-05-21 MLB Advanced Media DH, LLC +mlb + +// mls : 2015-04-23 The Canadian Real Estate Association +mls + +// mma : 2014-11-07 MMA IARD +mma + +// mobile : 2016-06-02 Dish DBS Corporation +mobile + +// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. +mobily + +// moda : 2013-11-07 United TLD Holdco Ltd. +moda + +// moe : 2013-11-13 Interlink Co., Ltd. +moe + +// moi : 2014-12-18 Amazon Registry Services, Inc. +moi + +// mom : 2015-04-16 Uniregistry, Corp. +mom + +// monash : 2013-09-30 Monash University +monash + +// money : 2014-10-16 Binky Moon, LLC +money + +// monster : 2015-09-11 Monster Worldwide, Inc. +monster + +// mopar : 2015-07-30 FCA US LLC. +mopar + +// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") +mormon + +// mortgage : 2014-03-20 United TLD Holdco Ltd. +mortgage + +// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +moscow + +// moto : 2015-06-04 Motorola Trademark Holdings, LLC +moto + +// motorcycles : 2014-01-09 DERMotorcycles, LLC +motorcycles + +// mov : 2014-01-30 Charleston Road Registry Inc. +mov + +// movie : 2015-02-05 Binky Moon, LLC +movie + +// movistar : 2014-10-16 Telefónica S.A. +movistar + +// msd : 2015-07-23 MSD Registry Holdings, Inc. +msd + +// mtn : 2014-12-04 MTN Dubai Limited +mtn + +// mtr : 2015-03-12 MTR Corporation Limited +mtr + +// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC +mutual + +// nab : 2015-08-20 National Australia Bank Limited +nab + +// nadex : 2014-12-11 Nadex Domains, Inc. +nadex + +// nagoya : 2013-10-24 GMO Registry, Inc. +nagoya + +// nationwide : 2015-07-23 Nationwide Mutual Insurance Company +nationwide + +// natura : 2015-03-12 NATURA COSMÉTICOS S.A. +natura + +// navy : 2014-03-06 United TLD Holdco Ltd. +navy + +// nba : 2015-07-31 NBA REGISTRY, LLC +nba + +// nec : 2015-01-08 NEC Corporation +nec + +// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +netbank + +// netflix : 2015-06-18 Netflix, Inc. +netflix + +// network : 2013-11-14 Binky Moon, LLC +network + +// neustar : 2013-12-05 Registry Services, LLC +neustar + +// new : 2014-01-30 Charleston Road Registry Inc. +new + +// newholland : 2015-09-03 CNH Industrial N.V. +newholland + +// news : 2014-12-18 United TLD Holdco Ltd. +news + +// next : 2015-06-18 Next plc +next + +// nextdirect : 2015-06-18 Next plc +nextdirect + +// nexus : 2014-07-24 Charleston Road Registry Inc. +nexus + +// nfl : 2015-07-23 NFL Reg Ops LLC +nfl + +// ngo : 2014-03-06 Public Interest Registry +ngo + +// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK) +nhk + +// nico : 2014-12-04 DWANGO Co., Ltd. +nico + +// nike : 2015-07-23 NIKE, Inc. +nike + +// nikon : 2015-05-21 NIKON CORPORATION +nikon + +// ninja : 2013-11-07 United TLD Holdco Ltd. +ninja + +// nissan : 2014-03-27 NISSAN MOTOR CO., LTD. +nissan + +// nissay : 2015-10-29 Nippon Life Insurance Company +nissay + +// nokia : 2015-01-08 Nokia Corporation +nokia + +// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC +northwesternmutual + +// norton : 2014-12-04 Symantec Corporation +norton + +// now : 2015-06-25 Amazon Registry Services, Inc. +now + +// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +nowruz + +// nowtv : 2015-05-14 Starbucks (HK) Limited +nowtv + +// nra : 2014-05-22 NRA Holdings Company, INC. +nra + +// nrw : 2013-11-21 Minds + Machines GmbH +nrw + +// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION +ntt + +// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications +nyc + +// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA +obi + +// observer : 2015-04-30 Top Level Spectrum, Inc. +observer + +// off : 2015-07-23 Johnson Shareholdings, Inc. +off + +// office : 2015-03-12 Microsoft Corporation +office + +// okinawa : 2013-12-05 BRregistry, Inc. +okinawa + +// olayan : 2015-05-14 Crescent Holding GmbH +olayan + +// olayangroup : 2015-05-14 Crescent Holding GmbH +olayangroup + +// oldnavy : 2015-07-31 The Gap, Inc. +oldnavy + +// ollo : 2015-06-04 Dish DBS Corporation +ollo + +// omega : 2015-01-08 The Swatch Group Ltd +omega + +// one : 2014-11-07 One.com A/S +one + +// ong : 2014-03-06 Public Interest Registry +ong + +// onl : 2013-09-16 I-Registry Ltd. +onl + +// online : 2015-01-15 DotOnline Inc. +online + +// onyourside : 2015-07-23 Nationwide Mutual Insurance Company +onyourside + +// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED +ooo + +// open : 2015-07-31 American Express Travel Related Services Company, Inc. +open + +// oracle : 2014-06-19 Oracle Corporation +oracle + +// orange : 2015-03-12 Orange Brand Services Limited +orange + +// organic : 2014-03-27 Afilias plc +organic + +// origins : 2015-10-01 The Estée Lauder Companies Inc. +origins + +// osaka : 2014-09-04 Osaka Registry Co., Ltd. +osaka + +// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. +otsuka + +// ott : 2015-06-04 Dish DBS Corporation +ott + +// ovh : 2014-01-16 OVH SAS +ovh + +// page : 2014-12-04 Charleston Road Registry Inc. +page + +// panasonic : 2015-07-30 Panasonic Corporation +panasonic + +// panerai : 2014-11-07 Richemont DNS Inc. +panerai + +// paris : 2014-01-30 City of Paris +paris + +// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +pars + +// partners : 2013-12-05 Binky Moon, LLC +partners + +// parts : 2013-12-05 Binky Moon, LLC +parts + +// party : 2014-09-11 Blue Sky Registry Limited +party + +// passagens : 2015-03-05 Travel Reservations SRL +passagens + +// pay : 2015-08-27 Amazon Registry Services, Inc. +pay + +// pccw : 2015-05-14 PCCW Enterprises Limited +pccw + +// pet : 2015-05-07 Afilias plc +pet + +// pfizer : 2015-09-11 Pfizer Inc. +pfizer + +// pharmacy : 2014-06-19 National Association of Boards of Pharmacy +pharmacy + +// phd : 2016-07-28 Charleston Road Registry Inc. +phd + +// philips : 2014-11-07 Koninklijke Philips N.V. +philips + +// phone : 2016-06-02 Dish DBS Corporation +phone + +// photo : 2013-11-14 Uniregistry, Corp. +photo + +// photography : 2013-09-20 Binky Moon, LLC +photography + +// photos : 2013-10-17 Binky Moon, LLC +photos + +// physio : 2014-05-01 PhysBiz Pty Ltd +physio + +// piaget : 2014-10-16 Richemont DNS Inc. +piaget + +// pics : 2013-11-14 Uniregistry, Corp. +pics + +// pictet : 2014-06-26 Pictet Europe S.A. +pictet + +// pictures : 2014-03-06 Binky Moon, LLC +pictures + +// pid : 2015-01-08 Top Level Spectrum, Inc. +pid + +// pin : 2014-12-18 Amazon Registry Services, Inc. +pin + +// ping : 2015-06-11 Ping Registry Provider, Inc. +ping + +// pink : 2013-10-01 Afilias plc +pink + +// pioneer : 2015-07-16 Pioneer Corporation +pioneer + +// pizza : 2014-06-26 Binky Moon, LLC +pizza + +// place : 2014-04-24 Binky Moon, LLC +place + +// play : 2015-03-05 Charleston Road Registry Inc. +play + +// playstation : 2015-07-02 Sony Computer Entertainment Inc. +playstation + +// plumbing : 2013-09-10 Binky Moon, LLC +plumbing + +// plus : 2015-02-05 Binky Moon, LLC +plus + +// pnc : 2015-07-02 PNC Domain Co., LLC +pnc + +// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +pohl + +// poker : 2014-07-03 Afilias plc +poker + +// politie : 2015-08-20 Politie Nederland +politie + +// porn : 2014-10-16 ICM Registry PN LLC +porn + +// pramerica : 2015-07-30 Prudential Financial, Inc. +pramerica + +// praxi : 2013-12-05 Praxi S.p.A. +praxi + +// press : 2014-04-03 DotPress Inc. +press + +// prime : 2015-06-25 Amazon Registry Services, Inc. +prime + +// prod : 2014-01-23 Charleston Road Registry Inc. +prod + +// productions : 2013-12-05 Binky Moon, LLC +productions + +// prof : 2014-07-24 Charleston Road Registry Inc. +prof + +// progressive : 2015-07-23 Progressive Casualty Insurance Company +progressive + +// promo : 2014-12-18 Afilias plc +promo + +// properties : 2013-12-05 Binky Moon, LLC +properties + +// property : 2014-05-22 Uniregistry, Corp. +property + +// protection : 2015-04-23 XYZ.COM LLC +protection + +// pru : 2015-07-30 Prudential Financial, Inc. +pru + +// prudential : 2015-07-30 Prudential Financial, Inc. +prudential + +// pub : 2013-12-12 United TLD Holdco Ltd. +pub + +// pwc : 2015-10-29 PricewaterhouseCoopers LLP +pwc + +// qpon : 2013-11-14 dotCOOL, Inc. +qpon + +// quebec : 2013-12-19 PointQuébec Inc +quebec + +// quest : 2015-03-26 Quest ION Limited +quest + +// qvc : 2015-07-30 QVC, Inc. +qvc + +// racing : 2014-12-04 Premier Registry Limited +racing + +// radio : 2016-07-21 European Broadcasting Union (EBU) +radio + +// raid : 2015-07-23 Johnson Shareholdings, Inc. +raid + +// read : 2014-12-18 Amazon Registry Services, Inc. +read + +// realestate : 2015-09-11 dotRealEstate LLC +realestate + +// realtor : 2014-05-29 Real Estate Domains LLC +realtor + +// realty : 2015-03-19 Fegistry, LLC +realty + +// recipes : 2013-10-17 Binky Moon, LLC +recipes + +// red : 2013-11-07 Afilias plc +red + +// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. +redstone + +// redumbrella : 2015-03-26 Travelers TLD, LLC +redumbrella + +// rehab : 2014-03-06 United TLD Holdco Ltd. +rehab + +// reise : 2014-03-13 Binky Moon, LLC +reise + +// reisen : 2014-03-06 Binky Moon, LLC +reisen + +// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. +reit + +// reliance : 2015-04-02 Reliance Industries Limited +reliance + +// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd. +ren + +// rent : 2014-12-04 XYZ.COM LLC +rent + +// rentals : 2013-12-05 Binky Moon, LLC +rentals + +// repair : 2013-11-07 Binky Moon, LLC +repair + +// report : 2013-12-05 Binky Moon, LLC +report + +// republican : 2014-03-20 United TLD Holdco Ltd. +republican + +// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +rest + +// restaurant : 2014-07-03 Binky Moon, LLC +restaurant + +// review : 2014-11-20 dot Review Limited +review + +// reviews : 2013-09-13 United TLD Holdco Ltd. +reviews + +// rexroth : 2015-06-18 Robert Bosch GMBH +rexroth + +// rich : 2013-11-21 I-Registry Ltd. +rich + +// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited +richardli + +// ricoh : 2014-11-20 Ricoh Company, Ltd. +ricoh + +// rightathome : 2015-07-23 Johnson Shareholdings, Inc. +rightathome + +// ril : 2015-04-02 Reliance Industries Limited +ril + +// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO +rio + +// rip : 2014-07-10 United TLD Holdco Ltd. +rip + +// rmit : 2015-11-19 Royal Melbourne Institute of Technology +rmit + +// rocher : 2014-12-18 Ferrero Trading Lux S.A. +rocher + +// rocks : 2013-11-14 United TLD Holdco Ltd. +rocks + +// rodeo : 2013-12-19 Minds + Machines Group Limited +rodeo + +// rogers : 2015-08-06 Rogers Communications Canada Inc. +rogers + +// room : 2014-12-18 Amazon Registry Services, Inc. +room + +// rsvp : 2014-05-08 Charleston Road Registry Inc. +rsvp + +// rugby : 2016-12-15 World Rugby Strategic Developments Limited +rugby + +// ruhr : 2013-10-02 regiodot GmbH & Co. KG +ruhr + +// run : 2015-03-19 Binky Moon, LLC +run + +// rwe : 2015-04-02 RWE AG +rwe + +// ryukyu : 2014-01-09 BRregistry, Inc. +ryukyu + +// saarland : 2013-12-12 dotSaarland GmbH +saarland + +// safe : 2014-12-18 Amazon Registry Services, Inc. +safe + +// safety : 2015-01-08 Safety Registry Services, LLC. +safety + +// sakura : 2014-12-18 SAKURA Internet Inc. +sakura + +// sale : 2014-10-16 United TLD Holdco Ltd. +sale + +// salon : 2014-12-11 Binky Moon, LLC +salon + +// samsclub : 2015-07-31 Wal-Mart Stores, Inc. +samsclub + +// samsung : 2014-04-03 SAMSUNG SDS CO., LTD +samsung + +// sandvik : 2014-11-13 Sandvik AB +sandvik + +// sandvikcoromant : 2014-11-07 Sandvik AB +sandvikcoromant + +// sanofi : 2014-10-09 Sanofi +sanofi + +// sap : 2014-03-27 SAP AG +sap + +// sarl : 2014-07-03 Binky Moon, LLC +sarl + +// sas : 2015-04-02 Research IP LLC +sas + +// save : 2015-06-25 Amazon Registry Services, Inc. +save + +// saxo : 2014-10-31 Saxo Bank A/S +saxo + +// sbi : 2015-03-12 STATE BANK OF INDIA +sbi + +// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION +sbs + +// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) +sca + +// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB") +scb + +// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG +schaeffler + +// schmidt : 2014-04-03 SALM S.A.S. +schmidt + +// scholarships : 2014-04-24 Scholarships.com, LLC +scholarships + +// school : 2014-12-18 Binky Moon, LLC +school + +// schule : 2014-03-06 Binky Moon, LLC +schule + +// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +schwarz + +// science : 2014-09-11 dot Science Limited +science + +// scjohnson : 2015-07-23 Johnson Shareholdings, Inc. +scjohnson + +// scor : 2014-10-31 SCOR SE +scor + +// scot : 2014-01-23 Dot Scot Registry Limited +scot + +// search : 2016-06-09 Charleston Road Registry Inc. +search + +// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) +seat + +// secure : 2015-08-27 Amazon Registry Services, Inc. +secure + +// security : 2015-05-14 XYZ.COM LLC +security + +// seek : 2014-12-04 Seek Limited +seek + +// select : 2015-10-08 iSelect Ltd +select + +// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A. +sener + +// services : 2014-02-27 Binky Moon, LLC +services + +// ses : 2015-07-23 SES +ses + +// seven : 2015-08-06 Seven West Media Ltd +seven + +// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG +sew + +// sex : 2014-11-13 ICM Registry SX LLC +sex + +// sexy : 2013-09-11 Uniregistry, Corp. +sexy + +// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR +sfr + +// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited +shangrila + +// sharp : 2014-05-01 Sharp Corporation +sharp + +// shaw : 2015-04-23 Shaw Cablesystems G.P. +shaw + +// shell : 2015-07-30 Shell Information Technology International Inc +shell + +// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +shia + +// shiksha : 2013-11-14 Afilias plc +shiksha + +// shoes : 2013-10-02 Binky Moon, LLC +shoes + +// shop : 2016-04-08 GMO Registry, Inc. +shop + +// shopping : 2016-03-31 Binky Moon, LLC +shopping + +// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +shouji + +// show : 2015-03-05 Binky Moon, LLC +show + +// showtime : 2015-08-06 CBS Domains Inc. +showtime + +// shriram : 2014-01-23 Shriram Capital Ltd. +shriram + +// silk : 2015-06-25 Amazon Registry Services, Inc. +silk + +// sina : 2015-03-12 Sina Corporation +sina + +// singles : 2013-08-27 Binky Moon, LLC +singles + +// site : 2015-01-15 DotSite Inc. +site + +// ski : 2015-04-09 Afilias plc +ski + +// skin : 2015-01-15 L'Oréal +skin + +// sky : 2014-06-19 Sky International AG +sky + +// skype : 2014-12-18 Microsoft Corporation +skype + +// sling : 2015-07-30 Hughes Satellite Systems Corporation +sling + +// smart : 2015-07-09 Smart Communications, Inc. (SMART) +smart + +// smile : 2014-12-18 Amazon Registry Services, Inc. +smile + +// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F +sncf + +// soccer : 2015-03-26 Binky Moon, LLC +soccer + +// social : 2013-11-07 United TLD Holdco Ltd. +social + +// softbank : 2015-07-02 SoftBank Corp. +softbank + +// software : 2014-03-20 United TLD Holdco Ltd. +software + +// sohu : 2013-12-19 Sohu.com Limited +sohu + +// solar : 2013-11-07 Binky Moon, LLC +solar + +// solutions : 2013-11-07 Binky Moon, LLC +solutions + +// song : 2015-02-26 Amazon Registry Services, Inc. +song + +// sony : 2015-01-08 Sony Corporation +sony + +// soy : 2014-01-23 Charleston Road Registry Inc. +soy + +// space : 2014-04-03 DotSpace Inc. +space + +// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG +spiegel + +// sport : 2017-11-16 Global Association of International Sports Federations (GAISF) +sport + +// spot : 2015-02-26 Amazon Registry Services, Inc. +spot + +// spreadbetting : 2014-12-11 Dotspreadbetting Registry Limited +spreadbetting + +// srl : 2015-05-07 InterNetX, Corp +srl + +// srt : 2015-07-30 FCA US LLC. +srt + +// stada : 2014-11-13 STADA Arzneimittel AG +stada + +// staples : 2015-07-30 Staples, Inc. +staples + +// star : 2015-01-08 Star India Private Limited +star + +// starhub : 2015-02-05 StarHub Ltd +starhub + +// statebank : 2015-03-12 STATE BANK OF INDIA +statebank + +// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company +statefarm + +// statoil : 2014-12-04 Statoil ASA +statoil + +// stc : 2014-10-09 Saudi Telecom Company +stc + +// stcgroup : 2014-10-09 Saudi Telecom Company +stcgroup + +// stockholm : 2014-12-18 Stockholms kommun +stockholm + +// storage : 2014-12-22 XYZ.COM LLC +storage + +// store : 2015-04-09 DotStore Inc. +store + +// stream : 2016-01-08 dot Stream Limited +stream + +// studio : 2015-02-11 United TLD Holdco Ltd. +studio + +// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD +study + +// style : 2014-12-04 Binky Moon, LLC +style + +// sucks : 2014-12-22 Vox Populi Registry Ltd. +sucks + +// supplies : 2013-12-19 Binky Moon, LLC +supplies + +// supply : 2013-12-19 Binky Moon, LLC +supply + +// support : 2013-10-24 Binky Moon, LLC +support + +// surf : 2014-01-09 Minds + Machines Group Limited +surf + +// surgery : 2014-03-20 Binky Moon, LLC +surgery + +// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION +suzuki + +// swatch : 2015-01-08 The Swatch Group Ltd +swatch + +// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited +swiftcover + +// swiss : 2014-10-16 Swiss Confederation +swiss + +// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet +sydney + +// symantec : 2014-12-04 Symantec Corporation +symantec + +// systems : 2013-11-07 Binky Moon, LLC +systems + +// tab : 2014-12-04 Tabcorp Holdings Limited +tab + +// taipei : 2014-07-10 Taipei City Government +taipei + +// talk : 2015-04-09 Amazon Registry Services, Inc. +talk + +// taobao : 2015-01-15 Alibaba Group Holding Limited +taobao + +// target : 2015-07-31 Target Domain Holdings, LLC +target + +// tatamotors : 2015-03-12 Tata Motors Ltd +tatamotors + +// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +tatar + +// tattoo : 2013-08-30 Uniregistry, Corp. +tattoo + +// tax : 2014-03-20 Binky Moon, LLC +tax + +// taxi : 2015-03-19 Binky Moon, LLC +taxi + +// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +tci + +// tdk : 2015-06-11 TDK Corporation +tdk + +// team : 2015-03-05 Binky Moon, LLC +team + +// tech : 2015-01-30 Personals TLD Inc. +tech + +// technology : 2013-09-13 Binky Moon, LLC +technology + +// telecity : 2015-02-19 TelecityGroup International Limited +telecity + +// telefonica : 2014-10-16 Telefónica S.A. +telefonica + +// temasek : 2014-08-07 Temasek Holdings (Private) Limited +temasek + +// tennis : 2014-12-04 Binky Moon, LLC +tennis + +// teva : 2015-07-02 Teva Pharmaceutical Industries Limited +teva + +// thd : 2015-04-02 Home Depot Product Authority, LLC +thd + +// theater : 2015-03-19 Binky Moon, LLC +theater + +// theatre : 2015-05-07 XYZ.COM LLC +theatre + +// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America +tiaa + +// tickets : 2015-02-05 Accent Media Limited +tickets + +// tienda : 2013-11-14 Binky Moon, LLC +tienda + +// tiffany : 2015-01-30 Tiffany and Company +tiffany + +// tips : 2013-09-20 Binky Moon, LLC +tips + +// tires : 2014-11-07 Binky Moon, LLC +tires + +// tirol : 2014-04-24 punkt Tirol GmbH +tirol + +// tjmaxx : 2015-07-16 The TJX Companies, Inc. +tjmaxx + +// tjx : 2015-07-16 The TJX Companies, Inc. +tjx + +// tkmaxx : 2015-07-16 The TJX Companies, Inc. +tkmaxx + +// tmall : 2015-01-15 Alibaba Group Holding Limited +tmall + +// today : 2013-09-20 Binky Moon, LLC +today + +// tokyo : 2013-11-13 GMO Registry, Inc. +tokyo + +// tools : 2013-11-21 Binky Moon, LLC +tools + +// top : 2014-03-20 .TOP Registry +top + +// toray : 2014-12-18 Toray Industries, Inc. +toray + +// toshiba : 2014-04-10 TOSHIBA Corporation +toshiba + +// total : 2015-08-06 Total SA +total + +// tours : 2015-01-22 Binky Moon, LLC +tours + +// town : 2014-03-06 Binky Moon, LLC +town + +// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION +toyota + +// toys : 2014-03-06 Binky Moon, LLC +toys + +// trade : 2014-01-23 Elite Registry Limited +trade + +// trading : 2014-12-11 Dottrading Registry Limited +trading + +// training : 2013-11-07 Binky Moon, LLC +training + +// travel : Dog Beach, LLC +travel + +// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +travelchannel + +// travelers : 2015-03-26 Travelers TLD, LLC +travelers + +// travelersinsurance : 2015-03-26 Travelers TLD, LLC +travelersinsurance + +// trust : 2014-10-16 NCC Group Inc. +trust + +// trv : 2015-03-26 Travelers TLD, LLC +trv + +// tube : 2015-06-11 Latin American Telecom LLC +tube + +// tui : 2014-07-03 TUI AG +tui + +// tunes : 2015-02-26 Amazon Registry Services, Inc. +tunes + +// tushu : 2014-12-18 Amazon Registry Services, Inc. +tushu + +// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED +tvs + +// ubank : 2015-08-20 National Australia Bank Limited +ubank + +// ubs : 2014-12-11 UBS AG +ubs + +// uconnect : 2015-07-30 FCA US LLC. +uconnect + +// unicom : 2015-10-15 China United Network Communications Corporation Limited +unicom + +// university : 2014-03-06 Binky Moon, LLC +university + +// uno : 2013-09-11 Dot Latin LLC +uno + +// uol : 2014-05-01 UBN INTERNET LTDA. +uol + +// ups : 2015-06-25 UPS Market Driver, Inc. +ups + +// vacations : 2013-12-05 Binky Moon, LLC +vacations + +// vana : 2014-12-11 Lifestyle Domain Holdings, Inc. +vana + +// vanguard : 2015-09-03 The Vanguard Group, Inc. +vanguard + +// vegas : 2014-01-16 Dot Vegas, Inc. +vegas + +// ventures : 2013-08-27 Binky Moon, LLC +ventures + +// verisign : 2015-08-13 VeriSign, Inc. +verisign + +// versicherung : 2014-03-20 TLD-BOX Registrydienstleistungen GmbH +versicherung + +// vet : 2014-03-06 United TLD Holdco Ltd. +vet + +// viajes : 2013-10-17 Binky Moon, LLC +viajes + +// video : 2014-10-16 United TLD Holdco Ltd. +video + +// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +vig + +// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd. +viking + +// villas : 2013-12-05 Binky Moon, LLC +villas + +// vin : 2015-06-18 Binky Moon, LLC +vin + +// vip : 2015-01-22 Minds + Machines Group Limited +vip + +// virgin : 2014-09-25 Virgin Enterprises Limited +virgin + +// visa : 2015-07-30 Visa Worldwide Pte. Limited +visa + +// vision : 2013-12-05 Binky Moon, LLC +vision + +// vista : 2014-09-18 Vistaprint Limited +vista + +// vistaprint : 2014-09-18 Vistaprint Limited +vistaprint + +// viva : 2014-11-07 Saudi Telecom Company +viva + +// vivo : 2015-07-31 Telefonica Brasil S.A. +vivo + +// vlaanderen : 2014-02-06 DNS.be vzw +vlaanderen + +// vodka : 2013-12-19 Minds + Machines Group Limited +vodka + +// volkswagen : 2015-05-14 Volkswagen Group of America Inc. +volkswagen + +// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag +volvo + +// vote : 2013-11-21 Monolith Registry LLC +vote + +// voting : 2013-11-13 Valuetainment Corp. +voting + +// voto : 2013-11-21 Monolith Registry LLC +voto + +// voyage : 2013-08-27 Binky Moon, LLC +voyage + +// vuelos : 2015-03-05 Travel Reservations SRL +vuelos + +// wales : 2014-05-08 Nominet UK +wales + +// walmart : 2015-07-31 Wal-Mart Stores, Inc. +walmart + +// walter : 2014-11-13 Sandvik AB +walter + +// wang : 2013-10-24 Zodiac Wang Limited +wang + +// wanggou : 2014-12-18 Amazon Registry Services, Inc. +wanggou + +// warman : 2015-06-18 Weir Group IP Limited +warman + +// watch : 2013-11-14 Binky Moon, LLC +watch + +// watches : 2014-12-22 Richemont DNS Inc. +watches + +// weather : 2015-01-08 International Business Machines Corporation +weather + +// weatherchannel : 2015-03-12 International Business Machines Corporation +weatherchannel + +// webcam : 2014-01-23 dot Webcam Limited +webcam + +// weber : 2015-06-04 Saint-Gobain Weber SA +weber + +// website : 2014-04-03 DotWebsite Inc. +website + +// wed : 2013-10-01 Atgron, Inc. +wed + +// wedding : 2014-04-24 Minds + Machines Group Limited +wedding + +// weibo : 2015-03-05 Sina Corporation +weibo + +// weir : 2015-01-29 Weir Group IP Limited +weir + +// whoswho : 2014-02-20 Who's Who Registry +whoswho + +// wien : 2013-10-28 punkt.wien GmbH +wien + +// wiki : 2013-11-07 Top Level Design, LLC +wiki + +// williamhill : 2014-03-13 William Hill Organization Limited +williamhill + +// win : 2014-11-20 First Registry Limited +win + +// windows : 2014-12-18 Microsoft Corporation +windows + +// wine : 2015-06-18 Binky Moon, LLC +wine + +// winners : 2015-07-16 The TJX Companies, Inc. +winners + +// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC +wme + +// wolterskluwer : 2015-08-06 Wolters Kluwer N.V. +wolterskluwer + +// woodside : 2015-07-09 Woodside Petroleum Limited +woodside + +// work : 2013-12-19 Minds + Machines Group Limited +work + +// works : 2013-11-14 Binky Moon, LLC +works + +// world : 2014-06-12 Binky Moon, LLC +world + +// wow : 2015-10-08 Amazon Registry Services, Inc. +wow + +// wtc : 2013-12-19 World Trade Centers Association, Inc. +wtc + +// wtf : 2014-03-06 Binky Moon, LLC +wtf + +// xbox : 2014-12-18 Microsoft Corporation +xbox + +// xerox : 2014-10-24 Xerox DNHC LLC +xerox + +// xfinity : 2015-07-09 Comcast IP Holdings I, LLC +xfinity + +// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +xihuan + +// xin : 2014-12-11 Elegant Leader Limited +xin + +// xn--11b4c3d : 2015-01-15 VeriSign Sarl +कॉम + +// xn--1ck2e1b : 2015-02-26 Amazon Registry Services, Inc. +セール + +// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. +佛山 + +// xn--30rr7y : 2014-06-12 Excellent First Limited +慈善 + +// xn--3bst00m : 2013-09-13 Eagle Horizon Limited +集团 + +// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED +在线 + +// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd. +大众汽车 + +// xn--3pxu8k : 2015-01-15 VeriSign Sarl +点看 + +// xn--42c2d9a : 2015-01-15 VeriSign Sarl +คอม + +// xn--45q11c : 2013-11-21 Zodiac Gemini Ltd +八卦 + +// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment +موقع + +// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center +公益 + +// xn--55qx5d : 2013-11-14 China Internet Network Information Center (CNNIC) +公司 + +// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited +香格里拉 + +// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited +网站 + +// xn--6frz82g : 2013-09-23 Afilias plc +移动 + +// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited +我爱你 + +// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +москва + +// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +католик + +// xn--80asehdb : 2013-07-14 CORE Association +онлайн + +// xn--80aswg : 2013-07-14 CORE Association +сайт + +// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited +联通 + +// xn--9dbq2a : 2015-01-15 VeriSign Sarl +קום + +// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED +时尚 + +// xn--9krt00a : 2015-03-12 Sina Corporation +微博 + +// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited +淡马锡 + +// xn--bck1b9a5dre4c : 2015-02-26 Amazon Registry Services, Inc. +ファッション + +// xn--c1avg : 2013-11-14 Public Interest Registry +орг + +// xn--c2br7g : 2015-01-15 VeriSign Sarl +नेट + +// xn--cck2b3b : 2015-02-26 Amazon Registry Services, Inc. +ストア + +// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD +삼성 + +// xn--czr694b : 2014-01-16 Dot Trademark TLD Holding Company Limited +商标 + +// xn--czrs0t : 2013-12-19 Binky Moon, LLC +商店 + +// xn--czru2d : 2013-11-21 Zodiac Aquarius Limited +商城 + +// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet” +дети + +// xn--eckvdtc9d : 2014-12-18 Amazon Registry Services, Inc. +ポイント + +// xn--efvy88h : 2014-08-22 Guangzhou YU Wei Information Technology Co., Ltd. +新闻 + +// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited +工行 + +// xn--fct429k : 2015-04-09 Amazon Registry Services, Inc. +家電 + +// xn--fhbei : 2015-01-15 VeriSign Sarl +كوم + +// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED +中文网 + +// xn--fiq64b : 2013-10-14 CITIC Group Corporation +中信 + +// xn--fjq720a : 2014-05-22 Binky Moon, LLC +娱乐 + +// xn--flw351e : 2014-07-31 Charleston Road Registry Inc. +谷歌 + +// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited +電訊盈科 + +// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited +购物 + +// xn--gckr3f0f : 2015-02-26 Amazon Registry Services, Inc. +クラウド + +// xn--gk3at1e : 2015-10-08 Amazon Registry Services, Inc. +通販 + +// xn--hxt814e : 2014-05-15 Zodiac Taurus Limited +网店 + +// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry +संगठन + +// xn--imr513n : 2014-12-11 Dot Trademark TLD Holding Company Limited +餐厅 + +// xn--io0a7i : 2013-11-14 China Internet Network Information Center (CNNIC) +网络 + +// xn--j1aef : 2015-01-15 VeriSign Sarl +ком + +// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation +诺基亚 + +// xn--jvr189m : 2015-02-26 Amazon Registry Services, Inc. +食品 + +// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. +飞利浦 + +// xn--kpu716f : 2014-12-22 Richemont DNS Inc. +手表 + +// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd +手机 + +// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company +ارامكو + +// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH +العليان + +// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +اتصالات + +// xn--mgbab2bd : 2013-10-31 CORE Association +بازار + +// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L. +موبايلي + +// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre +ابوظبي + +// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +كاثوليك + +// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +همراه + +// xn--mk1bu44c : 2015-01-15 VeriSign Sarl +닷컴 + +// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. +政府 + +// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd. +شبكة + +// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House +بيتك + +// xn--ngbrx : 2015-11-12 League of Arab States +عرب + +// xn--nqv7f : 2013-11-14 Public Interest Registry +机构 + +// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry +组织机构 + +// xn--nyqy26a : 2014-11-07 Stable Tone Limited +健康 + +// xn--otu796d : 2017-08-06 Dot Trademark TLD Holding Company Limited +招聘 + +// xn--p1acf : 2013-12-12 Rusnames Limited +рус + +// xn--pbt977c : 2014-12-22 Richemont DNS Inc. +珠宝 + +// xn--pssy2u : 2015-01-15 VeriSign Sarl +大拿 + +// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. +みんな + +// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc. +グーグル + +// xn--rhqv96g : 2013-09-11 Stable Tone Limited +世界 + +// xn--rovu88b : 2015-02-26 Amazon Registry Services, Inc. +書籍 + +// xn--ses554g : 2014-01-16 KNET Co., Ltd. +网址 + +// xn--t60b56a : 2015-01-15 VeriSign Sarl +닷넷 + +// xn--tckwe : 2015-01-15 VeriSign Sarl +コム + +// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +天主教 + +// xn--unup4y : 2013-07-14 Binky Moon, LLC +游戏 + +// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberater + +// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberatung + +// xn--vhquv : 2013-08-27 Binky Moon, LLC +企业 + +// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. +信息 + +// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited +嘉里大酒店 + +// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited +嘉里 + +// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. +广东 + +// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center +政务 + +// xyz : 2013-12-05 XYZ.COM LLC +xyz + +// yachts : 2014-01-09 DERYachts, LLC +yachts + +// yahoo : 2015-04-02 Yahoo! Domain Services Inc. +yahoo + +// yamaxun : 2014-12-18 Amazon Registry Services, Inc. +yamaxun + +// yandex : 2014-04-10 YANDEX, LLC +yandex + +// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +yodobashi + +// yoga : 2014-05-29 Minds + Machines Group Limited +yoga + +// yokohama : 2013-12-12 GMO Registry, Inc. +yokohama + +// you : 2015-04-09 Amazon Registry Services, Inc. +you + +// youtube : 2014-05-01 Charleston Road Registry Inc. +youtube + +// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +yun + +// zappos : 2015-06-25 Amazon Registry Services, Inc. +zappos + +// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) +zara + +// zero : 2014-12-18 Amazon Registry Services, Inc. +zero + +// zip : 2014-05-08 Charleston Road Registry Inc. +zip + +// zippo : 2015-07-02 Zadco Company +zippo + +// zone : 2013-11-14 Binky Moon, LLC +zone + +// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) +zuerich + + +// ===END ICANN DOMAINS=== +// ===BEGIN PRIVATE DOMAINS=== +// (Note: these are in alphabetical order by company name) + +// 1GB LLC : https://www.1gb.ua/ +// Submitted by 1GB LLC +cc.ua +inf.ua +ltd.ua + +// Agnat sp. z o.o. : https://domena.pl +// Submitted by Przemyslaw Plewa +beep.pl + +// Alces Software Ltd : http://alces-software.com +// Submitted by Mark J. Titorenko +*.compute.estate +*.alces.network + +// alwaysdata : https://www.alwaysdata.com +// Submitted by Cyril +alwaysdata.net + +// Amazon CloudFront : https://aws.amazon.com/cloudfront/ +// Submitted by Donavan Miller +cloudfront.net + +// Amazon Elastic Compute Cloud : https://aws.amazon.com/ec2/ +// Submitted by Luke Wells +*.compute.amazonaws.com +*.compute-1.amazonaws.com +*.compute.amazonaws.com.cn +us-east-1.amazonaws.com + +// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ +// Submitted by Luke Wells +cn-north-1.eb.amazonaws.com.cn +elasticbeanstalk.com +ap-northeast-1.elasticbeanstalk.com +ap-northeast-2.elasticbeanstalk.com +ap-northeast-3.elasticbeanstalk.com +ap-south-1.elasticbeanstalk.com +ap-southeast-1.elasticbeanstalk.com +ap-southeast-2.elasticbeanstalk.com +ca-central-1.elasticbeanstalk.com +eu-central-1.elasticbeanstalk.com +eu-west-1.elasticbeanstalk.com +eu-west-2.elasticbeanstalk.com +eu-west-3.elasticbeanstalk.com +sa-east-1.elasticbeanstalk.com +us-east-1.elasticbeanstalk.com +us-east-2.elasticbeanstalk.com +us-gov-west-1.elasticbeanstalk.com +us-west-1.elasticbeanstalk.com +us-west-2.elasticbeanstalk.com + +// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/ +// Submitted by Luke Wells +*.elb.amazonaws.com +*.elb.amazonaws.com.cn + +// Amazon S3 : https://aws.amazon.com/s3/ +// Submitted by Luke Wells +s3.amazonaws.com +s3-ap-northeast-1.amazonaws.com +s3-ap-northeast-2.amazonaws.com +s3-ap-south-1.amazonaws.com +s3-ap-southeast-1.amazonaws.com +s3-ap-southeast-2.amazonaws.com +s3-ca-central-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-west-1.amazonaws.com +s3-eu-west-2.amazonaws.com +s3-eu-west-3.amazonaws.com +s3-external-1.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +s3-sa-east-1.amazonaws.com +s3-us-gov-west-1.amazonaws.com +s3-us-east-2.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3.ap-northeast-2.amazonaws.com +s3.ap-south-1.amazonaws.com +s3.cn-north-1.amazonaws.com.cn +s3.ca-central-1.amazonaws.com +s3.eu-central-1.amazonaws.com +s3.eu-west-2.amazonaws.com +s3.eu-west-3.amazonaws.com +s3.us-east-2.amazonaws.com +s3.dualstack.ap-northeast-1.amazonaws.com +s3.dualstack.ap-northeast-2.amazonaws.com +s3.dualstack.ap-south-1.amazonaws.com +s3.dualstack.ap-southeast-1.amazonaws.com +s3.dualstack.ap-southeast-2.amazonaws.com +s3.dualstack.ca-central-1.amazonaws.com +s3.dualstack.eu-central-1.amazonaws.com +s3.dualstack.eu-west-1.amazonaws.com +s3.dualstack.eu-west-2.amazonaws.com +s3.dualstack.eu-west-3.amazonaws.com +s3.dualstack.sa-east-1.amazonaws.com +s3.dualstack.us-east-1.amazonaws.com +s3.dualstack.us-east-2.amazonaws.com +s3-website-us-east-1.amazonaws.com +s3-website-us-west-1.amazonaws.com +s3-website-us-west-2.amazonaws.com +s3-website-ap-northeast-1.amazonaws.com +s3-website-ap-southeast-1.amazonaws.com +s3-website-ap-southeast-2.amazonaws.com +s3-website-eu-west-1.amazonaws.com +s3-website-sa-east-1.amazonaws.com +s3-website.ap-northeast-2.amazonaws.com +s3-website.ap-south-1.amazonaws.com +s3-website.ca-central-1.amazonaws.com +s3-website.eu-central-1.amazonaws.com +s3-website.eu-west-2.amazonaws.com +s3-website.eu-west-3.amazonaws.com +s3-website.us-east-2.amazonaws.com + +// Amune : https://amune.org/ +// Submitted by Team Amune +t3l3p0rt.net +tele.amune.org + +// Aptible : https://www.aptible.com/ +// Submitted by Thomas Orozco +on-aptible.com + +// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/ +// Submitted by Hector Martin +user.party.eus + +// Association potager.org : https://potager.org/ +// Submitted by Lunar +pimienta.org +poivron.org +potager.org +sweetpepper.org + +// ASUSTOR Inc. : http://www.asustor.com +// Submitted by Vincent Tseng +myasustor.com + +// AVM : https://avm.de +// Submitted by Andreas Weise +myfritz.net + +// AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com +// Submitted by James Kennedy +*.awdev.ca +*.advisor.ws + +// backplane : https://www.backplane.io +// Submitted by Anthony Voutas +backplaneapp.io + +// BetaInABox +// Submitted by Adrian +betainabox.com + +// BinaryLane : http://www.binarylane.com +// Submitted by Nathan O'Sullivan +bnr.la + +// Blackbaud, Inc. : https://www.blackbaud.com +// Submitted by Paul Crowder +blackbaudcdn.net + +// Boomla : https://boomla.com +// Submitted by Tibor Halter +boomla.net + +// Boxfuse : https://boxfuse.com +// Submitted by Axel Fontaine +boxfuse.io + +// bplaced : https://www.bplaced.net/ +// Submitted by Miroslav Bozic +square7.ch +bplaced.com +bplaced.de +square7.de +bplaced.net +square7.net + +// BrowserSafetyMark +// Submitted by Dave Tharp +browsersafetymark.io + +// callidomus : https://www.callidomus.com/ +// Submitted by Marcus Popp +mycd.eu + +// CentralNic : http://www.centralnic.com/names/domains +// Submitted by registry +ae.org +ar.com +br.com +cn.com +com.de +com.se +de.com +eu.com +gb.com +gb.net +hu.com +hu.net +jp.net +jpn.com +kr.com +mex.com +no.com +qc.com +ru.com +sa.com +se.net +uk.com +uk.net +us.com +uy.com +za.bz +za.com + +// Africa.com Web Solutions Ltd : https://registry.africa.com +// Submitted by Gavin Brown +africa.com + +// iDOT Services Limited : http://www.domain.gr.com +// Submitted by Gavin Brown +gr.com + +// Radix FZC : http://domains.in.net +// Submitted by Gavin Brown +in.net + +// US REGISTRY LLC : http://us.org +// Submitted by Gavin Brown +us.org + +// co.com Registry, LLC : https://registry.co.com +// Submitted by Gavin Brown +co.com + +// c.la : http://www.c.la/ +c.la + +// certmgr.org : https://certmgr.org +// Submitted by B. Blechschmidt +certmgr.org + +// Citrix : https://citrix.com +// Submitted by Alex Stoddard +xenapponazure.com + +// ClearVox : http://www.clearvox.nl/ +// Submitted by Leon Rowland +virtueeldomein.nl + +// Clever Cloud : https://www.clever-cloud.com/ +// Submitted by Quentin Adam +cleverapps.io + +// Cloud66 : https://www.cloud66.com/ +// Submitted by Khash Sajadi +c66.me +cloud66.ws + +// CloudAccess.net : https://www.cloudaccess.net/ +// Submitted by Pawel Panek +jdevcloud.com +wpdevcloud.com +cloudaccess.host +freesite.host +cloudaccess.net + +// cloudControl : https://www.cloudcontrol.com/ +// Submitted by Tobias Wilken +cloudcontrolled.com +cloudcontrolapp.com + +// co.ca : http://registry.co.ca/ +co.ca + +// Co & Co : https://co-co.nl/ +// Submitted by Govert Versluis +*.otap.co + +// i-registry s.r.o. : http://www.i-registry.cz/ +// Submitted by Martin Semrad +co.cz + +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes +c.cdn77.org +cdn77-ssl.net +r.cdn77.net +rsc.cdn77.org +ssl.origin.cdn77-secure.org + +// Cloud DNS Ltd : http://www.cloudns.net +// Submitted by Aleksander Hristov +cloudns.asia +cloudns.biz +cloudns.club +cloudns.cc +cloudns.eu +cloudns.in +cloudns.info +cloudns.org +cloudns.pro +cloudns.pw +cloudns.us + +// Cloudeity Inc : https://cloudeity.com +// Submitted by Stefan Dimitrov +cloudeity.net + +// CNPY : https://cnpy.gdn +// Submitted by Angelo Gladding +cnpy.gdn + +// CoDNS B.V. +co.nl +co.no + +// Combell.com : https://www.combell.com +// Submitted by Thomas Wouters +webhosting.be +hosting-cluster.nl + +// COSIMO GmbH : http://www.cosimo.de +// Submitted by Rene Marticke +dyn.cosidns.de +dynamisches-dns.de +dnsupdater.de +internet-dns.de +l-o-g-i-n.de +dynamic-dns.info +feste-ip.net +knx-server.net +static-access.net + +// Craynic, s.r.o. : http://www.craynic.com/ +// Submitted by Ales Krajnik +realm.cz + +// Cryptonomic : https://cryptonomic.net/ +// Submitted by Andrew Cady +*.cryptonomic.net + +// Cupcake : https://cupcake.io/ +// Submitted by Jonathan Rudenberg +cupcake.is + +// cyon GmbH : https://www.cyon.ch/ +// Submitted by Dominic Luechinger +cyon.link +cyon.site + +// Daplie, Inc : https://daplie.com +// Submitted by AJ ONeal +daplie.me +localhost.daplie.me + +// Datto, Inc. : https://www.datto.com/ +// Submitted by Philipp Heckel +dattolocal.com +dattorelay.com +dattoweb.com +mydatto.com +dattolocal.net +mydatto.net + +// Dansk.net : http://www.dansk.net/ +// Submitted by Anani Voule +biz.dk +co.dk +firm.dk +reg.dk +store.dk + +// Debian : https://www.debian.org/ +// Submitted by Peter Palfrader / Debian Sysadmin Team +debian.net + +// deSEC : https://desec.io/ +// Submitted by Peter Thomassen +dedyn.io + +// DNShome : https://www.dnshome.de/ +// Submitted by Norbert Auler +dnshome.de + +// DrayTek Corp. : https://www.draytek.com/ +// Submitted by Paul Fang +drayddns.com + +// DreamHost : http://www.dreamhost.com/ +// Submitted by Andrew Farmer +dreamhosters.com + +// Drobo : http://www.drobo.com/ +// Submitted by Ricardo Padilha +mydrobo.com + +// Drud Holdings, LLC. : https://www.drud.com/ +// Submitted by Kevin Bridges +drud.io +drud.us + +// DuckDNS : http://www.duckdns.org/ +// Submitted by Richard Harper +duckdns.org + +// dy.fi : http://dy.fi/ +// Submitted by Heikki Hannikainen +dy.fi +tunk.org + +// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ +dyndns-at-home.com +dyndns-at-work.com +dyndns-blog.com +dyndns-free.com +dyndns-home.com +dyndns-ip.com +dyndns-mail.com +dyndns-office.com +dyndns-pics.com +dyndns-remote.com +dyndns-server.com +dyndns-web.com +dyndns-wiki.com +dyndns-work.com +dyndns.biz +dyndns.info +dyndns.org +dyndns.tv +at-band-camp.net +ath.cx +barrel-of-knowledge.info +barrell-of-knowledge.info +better-than.tv +blogdns.com +blogdns.net +blogdns.org +blogsite.org +boldlygoingnowhere.org +broke-it.net +buyshouses.net +cechire.com +dnsalias.com +dnsalias.net +dnsalias.org +dnsdojo.com +dnsdojo.net +dnsdojo.org +does-it.net +doesntexist.com +doesntexist.org +dontexist.com +dontexist.net +dontexist.org +doomdns.com +doomdns.org +dvrdns.org +dyn-o-saur.com +dynalias.com +dynalias.net +dynalias.org +dynathome.net +dyndns.ws +endofinternet.net +endofinternet.org +endoftheinternet.org +est-a-la-maison.com +est-a-la-masion.com +est-le-patron.com +est-mon-blogueur.com +for-better.biz +for-more.biz +for-our.info +for-some.biz +for-the.biz +forgot.her.name +forgot.his.name +from-ak.com +from-al.com +from-ar.com +from-az.net +from-ca.com +from-co.net +from-ct.com +from-dc.com +from-de.com +from-fl.com +from-ga.com +from-hi.com +from-ia.com +from-id.com +from-il.com +from-in.com +from-ks.com +from-ky.com +from-la.net +from-ma.com +from-md.com +from-me.org +from-mi.com +from-mn.com +from-mo.com +from-ms.com +from-mt.com +from-nc.com +from-nd.com +from-ne.com +from-nh.com +from-nj.com +from-nm.com +from-nv.com +from-ny.net +from-oh.com +from-ok.com +from-or.com +from-pa.com +from-pr.com +from-ri.com +from-sc.com +from-sd.com +from-tn.com +from-tx.com +from-ut.com +from-va.com +from-vt.com +from-wa.com +from-wi.com +from-wv.com +from-wy.com +ftpaccess.cc +fuettertdasnetz.de +game-host.org +game-server.cc +getmyip.com +gets-it.net +go.dyndns.org +gotdns.com +gotdns.org +groks-the.info +groks-this.info +ham-radio-op.net +here-for-more.info +hobby-site.com +hobby-site.org +home.dyndns.org +homedns.org +homeftp.net +homeftp.org +homeip.net +homelinux.com +homelinux.net +homelinux.org +homeunix.com +homeunix.net +homeunix.org +iamallama.com +in-the-band.net +is-a-anarchist.com +is-a-blogger.com +is-a-bookkeeper.com +is-a-bruinsfan.org +is-a-bulls-fan.com +is-a-candidate.org +is-a-caterer.com +is-a-celticsfan.org +is-a-chef.com +is-a-chef.net +is-a-chef.org +is-a-conservative.com +is-a-cpa.com +is-a-cubicle-slave.com +is-a-democrat.com +is-a-designer.com +is-a-doctor.com +is-a-financialadvisor.com +is-a-geek.com +is-a-geek.net +is-a-geek.org +is-a-green.com +is-a-guru.com +is-a-hard-worker.com +is-a-hunter.com +is-a-knight.org +is-a-landscaper.com +is-a-lawyer.com +is-a-liberal.com +is-a-libertarian.com +is-a-linux-user.org +is-a-llama.com +is-a-musician.com +is-a-nascarfan.com +is-a-nurse.com +is-a-painter.com +is-a-patsfan.org +is-a-personaltrainer.com +is-a-photographer.com +is-a-player.com +is-a-republican.com +is-a-rockstar.com +is-a-socialist.com +is-a-soxfan.org +is-a-student.com +is-a-teacher.com +is-a-techie.com +is-a-therapist.com +is-an-accountant.com +is-an-actor.com +is-an-actress.com +is-an-anarchist.com +is-an-artist.com +is-an-engineer.com +is-an-entertainer.com +is-by.us +is-certified.com +is-found.org +is-gone.com +is-into-anime.com +is-into-cars.com +is-into-cartoons.com +is-into-games.com +is-leet.com +is-lost.org +is-not-certified.com +is-saved.org +is-slick.com +is-uberleet.com +is-very-bad.org +is-very-evil.org +is-very-good.org +is-very-nice.org +is-very-sweet.org +is-with-theband.com +isa-geek.com +isa-geek.net +isa-geek.org +isa-hockeynut.com +issmarterthanyou.com +isteingeek.de +istmein.de +kicks-ass.net +kicks-ass.org +knowsitall.info +land-4-sale.us +lebtimnetz.de +leitungsen.de +likes-pie.com +likescandy.com +merseine.nu +mine.nu +misconfused.org +mypets.ws +myphotos.cc +neat-url.com +office-on-the.net +on-the-web.tv +podzone.net +podzone.org +readmyblog.org +saves-the-whales.com +scrapper-site.net +scrapping.cc +selfip.biz +selfip.com +selfip.info +selfip.net +selfip.org +sells-for-less.com +sells-for-u.com +sells-it.net +sellsyourhome.org +servebbs.com +servebbs.net +servebbs.org +serveftp.net +serveftp.org +servegame.org +shacknet.nu +simple-url.com +space-to-rent.com +stuff-4-sale.org +stuff-4-sale.us +teaches-yoga.com +thruhere.net +traeumtgerade.de +webhop.biz +webhop.info +webhop.net +webhop.org +worse-than.tv +writesthisblog.com + +// ddnss.de : https://www.ddnss.de/ +// Submitted by Robert Niedziela +ddnss.de +dyn.ddnss.de +dyndns.ddnss.de +dyndns1.de +dyn-ip24.de +home-webserver.de +dyn.home-webserver.de +myhome-server.de +ddnss.org + +// Definima : http://www.definima.com/ +// Submitted by Maxence Bitterli +definima.net +definima.io + +// dnstrace.pro : https://dnstrace.pro/ +// Submitted by Chris Partridge +bci.dnstrace.pro + +// Dynu.com : https://www.dynu.com/ +// Submitted by Sue Ye +ddnsfree.com +ddnsgeek.com +giize.com +gleeze.com +kozow.com +loseyourip.com +ooguy.com +theworkpc.com +casacam.net +dynu.net +accesscam.org +camdvr.org +freeddns.org +mywire.org +webredirect.org +myddns.rocks +blogsite.xyz + +// dynv6 : https://dynv6.com +// Submitted by Dominik Menke +dynv6.net + +// E4YOU spol. s.r.o. : https://e4you.cz/ +// Submitted by Vladimir Dudr +e4.cz + +// Enalean SAS: https://www.enalean.com +// Submitted by Thomas Cottier +mytuleap.com + +// Enonic : http://enonic.com/ +// Submitted by Erik Kaareng-Sunde +enonic.io +customer.enonic.io + +// EU.org https://eu.org/ +// Submitted by Pierre Beyssac +eu.org +al.eu.org +asso.eu.org +at.eu.org +au.eu.org +be.eu.org +bg.eu.org +ca.eu.org +cd.eu.org +ch.eu.org +cn.eu.org +cy.eu.org +cz.eu.org +de.eu.org +dk.eu.org +edu.eu.org +ee.eu.org +es.eu.org +fi.eu.org +fr.eu.org +gr.eu.org +hr.eu.org +hu.eu.org +ie.eu.org +il.eu.org +in.eu.org +int.eu.org +is.eu.org +it.eu.org +jp.eu.org +kr.eu.org +lt.eu.org +lu.eu.org +lv.eu.org +mc.eu.org +me.eu.org +mk.eu.org +mt.eu.org +my.eu.org +net.eu.org +ng.eu.org +nl.eu.org +no.eu.org +nz.eu.org +paris.eu.org +pl.eu.org +pt.eu.org +q-a.eu.org +ro.eu.org +ru.eu.org +se.eu.org +si.eu.org +sk.eu.org +tr.eu.org +uk.eu.org +us.eu.org + +// Evennode : http://www.evennode.com/ +// Submitted by Michal Kralik +eu-1.evennode.com +eu-2.evennode.com +eu-3.evennode.com +eu-4.evennode.com +us-1.evennode.com +us-2.evennode.com +us-3.evennode.com +us-4.evennode.com + +// eDirect Corp. : https://hosting.url.com.tw/ +// Submitted by C.S. chang +twmail.cc +twmail.net +twmail.org +mymailer.com.tw +url.tw + +// Facebook, Inc. +// Submitted by Peter Ruibal +apps.fbsbx.com + +// FAITID : https://faitid.org/ +// Submitted by Maxim Alzoba +// https://www.flexireg.net/stat_info +ru.net +adygeya.ru +bashkiria.ru +bir.ru +cbg.ru +com.ru +dagestan.ru +grozny.ru +kalmykia.ru +kustanai.ru +marine.ru +mordovia.ru +msk.ru +mytis.ru +nalchik.ru +nov.ru +pyatigorsk.ru +spb.ru +vladikavkaz.ru +vladimir.ru +abkhazia.su +adygeya.su +aktyubinsk.su +arkhangelsk.su +armenia.su +ashgabad.su +azerbaijan.su +balashov.su +bashkiria.su +bryansk.su +bukhara.su +chimkent.su +dagestan.su +east-kazakhstan.su +exnet.su +georgia.su +grozny.su +ivanovo.su +jambyl.su +kalmykia.su +kaluga.su +karacol.su +karaganda.su +karelia.su +khakassia.su +krasnodar.su +kurgan.su +kustanai.su +lenug.su +mangyshlak.su +mordovia.su +msk.su +murmansk.su +nalchik.su +navoi.su +north-kazakhstan.su +nov.su +obninsk.su +penza.su +pokrovsk.su +sochi.su +spb.su +tashkent.su +termez.su +togliatti.su +troitsk.su +tselinograd.su +tula.su +tuva.su +vladikavkaz.su +vladimir.su +vologda.su + +// Fancy Bits, LLC : http://getchannels.com +// Submitted by Aman Gupta +channelsdvr.net + +// Fastly Inc. : http://www.fastly.com/ +// Submitted by Fastly Security +fastlylb.net +map.fastlylb.net +freetls.fastly.net +map.fastly.net +a.prod.fastly.net +global.prod.fastly.net +a.ssl.fastly.net +b.ssl.fastly.net +global.ssl.fastly.net + +// FASTVPS EESTI OU : https://fastvps.ru/ +// Submitted by Likhachev Vasiliy +fastpanel.direct +fastvps-server.com + +// Featherhead : https://featherhead.xyz/ +// Submitted by Simon Menke +fhapp.xyz + +// Fedora : https://fedoraproject.org/ +// submitted by Patrick Uiterwijk +fedorainfracloud.org +fedorapeople.org +cloud.fedoraproject.org +app.os.fedoraproject.org +app.os.stg.fedoraproject.org + +// Filegear Inc. : https://www.filegear.com +// Submitted by Jason Zhu +filegear.me + +// Firebase, Inc. +// Submitted by Chris Raynor +firebaseapp.com + +// Flynn : https://flynn.io +// Submitted by Jonathan Rudenberg +flynnhub.com +flynnhosting.net + +// Freebox : http://www.freebox.fr +// Submitted by Romain Fliedel +freebox-os.com +freeboxos.com +fbx-os.fr +fbxos.fr +freebox-os.fr +freeboxos.fr + +// freedesktop.org : https://www.freedesktop.org +// Submitted by Daniel Stone +freedesktop.org + +// Futureweb OG : http://www.futureweb.at +// Submitted by Andreas Schnederle-Wagner +*.futurecms.at +*.ex.futurecms.at +*.in.futurecms.at +futurehosting.at +futuremailing.at +*.ex.ortsinfo.at +*.kunden.ortsinfo.at +*.statics.cloud + +// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains +// Submitted by David Illsley +service.gov.uk + +// GitHub, Inc. +// Submitted by Patrick Toomey +github.io +githubusercontent.com + +// GitLab, Inc. +// Submitted by Alex Hanselka +gitlab.io + +// UKHomeOffice : https://www.gov.uk/government/organisations/home-office +// Submitted by Jon Shanks +homeoffice.gov.uk + +// GlobeHosting, Inc. +// Submitted by Zoltan Egresi +ro.im +shop.ro + +// GoIP DNS Services : http://www.goip.de +// Submitted by Christian Poulter +goip.de + +// Google, Inc. +// Submitted by Eduardo Vela +*.0emm.com +appspot.com +blogspot.ae +blogspot.al +blogspot.am +blogspot.ba +blogspot.be +blogspot.bg +blogspot.bj +blogspot.ca +blogspot.cf +blogspot.ch +blogspot.cl +blogspot.co.at +blogspot.co.id +blogspot.co.il +blogspot.co.ke +blogspot.co.nz +blogspot.co.uk +blogspot.co.za +blogspot.com +blogspot.com.ar +blogspot.com.au +blogspot.com.br +blogspot.com.by +blogspot.com.co +blogspot.com.cy +blogspot.com.ee +blogspot.com.eg +blogspot.com.es +blogspot.com.mt +blogspot.com.ng +blogspot.com.tr +blogspot.com.uy +blogspot.cv +blogspot.cz +blogspot.de +blogspot.dk +blogspot.fi +blogspot.fr +blogspot.gr +blogspot.hk +blogspot.hr +blogspot.hu +blogspot.ie +blogspot.in +blogspot.is +blogspot.it +blogspot.jp +blogspot.kr +blogspot.li +blogspot.lt +blogspot.lu +blogspot.md +blogspot.mk +blogspot.mr +blogspot.mx +blogspot.my +blogspot.nl +blogspot.no +blogspot.pe +blogspot.pt +blogspot.qa +blogspot.re +blogspot.ro +blogspot.rs +blogspot.ru +blogspot.se +blogspot.sg +blogspot.si +blogspot.sk +blogspot.sn +blogspot.td +blogspot.tw +blogspot.ug +blogspot.vn +cloudfunctions.net +cloud.goog +codespot.com +googleapis.com +googlecode.com +pagespeedmobilizer.com +publishproxy.com +withgoogle.com +withyoutube.com + +// Hashbang : https://hashbang.sh +hashbang.sh + +// Hasura : https://hasura.io +// Submitted by Shahidh K Muhammed +hasura.app +hasura-app.io + +// Hepforge : https://www.hepforge.org +// Submitted by David Grellscheid +hepforge.org + +// Heroku : https://www.heroku.com/ +// Submitted by Tom Maher +herokuapp.com +herokussl.com + +// Hibernating Rhinos +// Submitted by Oren Eini +myravendb.com +ravendb.community +ravendb.me +development.run +ravendb.run + +// Ici la Lune : http://www.icilalune.com/ +// Submitted by Simon Morvan +moonscale.net + +// iki.fi +// Submitted by Hannu Aronsson +iki.fi + +// info.at : http://www.info.at/ +biz.at +info.at + +// info.cx : http://info.cx +// Submitted by Jacob Slater +info.cx + +// Interlegis : http://www.interlegis.leg.br +// Submitted by Gabriel Ferreira +ac.leg.br +al.leg.br +am.leg.br +ap.leg.br +ba.leg.br +ce.leg.br +df.leg.br +es.leg.br +go.leg.br +ma.leg.br +mg.leg.br +ms.leg.br +mt.leg.br +pa.leg.br +pb.leg.br +pe.leg.br +pi.leg.br +pr.leg.br +rj.leg.br +rn.leg.br +ro.leg.br +rr.leg.br +rs.leg.br +sc.leg.br +se.leg.br +sp.leg.br +to.leg.br + +// intermetrics GmbH : https://pixolino.com/ +// Submitted by Wolfgang Schwarz +pixolino.com + +// IPiFony Systems, Inc. : https://www.ipifony.com/ +// Submitted by Matthew Hardeman +ipifony.net + +// IServ GmbH : https://iserv.eu +// Submitted by Kim-Alexander Brodowski +mein-iserv.de +test-iserv.de + +// Jino : https://www.jino.ru +// Submitted by Sergey Ulyashin +myjino.ru +*.hosting.myjino.ru +*.landing.myjino.ru +*.spectrum.myjino.ru +*.vps.myjino.ru + +// Joyent : https://www.joyent.com/ +// Submitted by Brian Bennett +*.triton.zone +*.cns.joyent.com + +// JS.ORG : http://dns.js.org +// Submitted by Stefan Keim +js.org + +// Keyweb AG : https://www.keyweb.de +// Submitted by Martin Dannehl +keymachine.de + +// KnightPoint Systems, LLC : http://www.knightpoint.com/ +// Submitted by Roy Keene +knightpoint.systems + +// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf +co.krd +edu.krd + +// LCube - Professional hosting e.K. : https://www.lcube-webhosting.de +// Submitted by Lars Laehn +git-repos.de +lcube-server.de +svn-repos.de + +// Lightmaker Property Manager, Inc. : https://app.lmpm.com/ +// Submitted by Greg Holland +app.lmpm.com + +// Linki Tools UG : https://linki.tools +// Submitted by Paulo Matos +linkitools.space + +// linkyard ldt: https://www.linkyard.ch/ +// Submitted by Mario Siegenthaler +linkyard.cloud +linkyard-cloud.ch + +// LiquidNet Ltd : http://www.liquidnetlimited.com/ +// Submitted by Victor Velchev +we.bs + +// Lug.org.uk : https://lug.org.uk +// Submitted by Jon Spriggs +uklugs.org +glug.org.uk +lug.org.uk +lugs.org.uk + +// Lukanet Ltd : https://lukanet.com +// Submitted by Anton Avramov +barsy.bg +barsy.co.uk +barsyonline.co.uk +barsycenter.com +barsyonline.com +barsy.club +barsy.de +barsy.eu +barsy.in +barsy.info +barsy.io +barsy.me +barsy.menu +barsy.mobi +barsy.net +barsy.online +barsy.org +barsy.pro +barsy.pub +barsy.shop +barsy.site +barsy.support +barsy.uk + +// Magento Commerce +// Submitted by Damien Tournoud +*.magentosite.cloud + +// May First - People Link : https://mayfirst.org/ +// Submitted by Jamie McClelland +mayfirst.info +mayfirst.org + +// Mail.Ru Group : https://hb.cldmail.ru +// Submitted by Ilya Zaretskiy +hb.cldmail.ru + +// Memset hosting : https://www.memset.com +// Submitted by Tom Whitwell +miniserver.com +memset.net + +// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ +// Submitted by Zdeněk Šustr +cloud.metacentrum.cz +custom.metacentrum.cz + +// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ +// Submitted by Radim Janča +flt.cloud.muni.cz +usr.cloud.muni.cz + +// Meteor Development Group : https://www.meteor.com/hosting +// Submitted by Pierre Carrier +meteorapp.com +eu.meteorapp.com + +// Michau Enterprises Limited : http://www.co.pl/ +co.pl + +// Microsoft Corporation : http://microsoft.com +// Submitted by Justin Luk +azurecontainer.io +azurewebsites.net +azure-mobile.net +cloudapp.net + +// Mozilla Corporation : https://mozilla.com +// Submitted by Ben Francis +mozilla-iot.org + +// Mozilla Foundation : https://mozilla.org/ +// Submitted by glob +bmoattachments.org + +// MSK-IX : https://www.msk-ix.ru/ +// Submitted by Khannanov Roman +net.ru +org.ru +pp.ru + +// Netlify : https://www.netlify.com +// Submitted by Jessica Parsons +bitballoon.com +netlify.com + +// Neustar Inc. +// Submitted by Trung Tran +4u.com + +// ngrok : https://ngrok.com/ +// Submitted by Alan Shreve +ngrok.io + +// Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/ +// Submitted by Nicholas Ford +nh-serv.co.uk + +// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ +// Submitted by Jeff Wheelhouse +nfshost.com + +// Now-DNS : https://now-dns.com +// Submitted by Steve Russell +dnsking.ch +mypi.co +n4t.co +001www.com +ddnslive.com +myiphost.com +forumz.info +16-b.it +32-b.it +64-b.it +soundcast.me +tcp4.me +dnsup.net +hicam.net +now-dns.net +ownip.net +vpndns.net +dynserv.org +now-dns.org +x443.pw +now-dns.top +ntdll.top +freeddns.us +crafting.xyz +zapto.xyz + +// nsupdate.info : https://www.nsupdate.info/ +// Submitted by Thomas Waldmann +nsupdate.info +nerdpol.ovh + +// No-IP.com : https://noip.com/ +// Submitted by Deven Reza +blogsyte.com +brasilia.me +cable-modem.org +ciscofreak.com +collegefan.org +couchpotatofries.org +damnserver.com +ddns.me +ditchyourip.com +dnsfor.me +dnsiskinky.com +dvrcam.info +dynns.com +eating-organic.net +fantasyleague.cc +geekgalaxy.com +golffan.us +health-carereform.com +homesecuritymac.com +homesecuritypc.com +hopto.me +ilovecollege.info +loginto.me +mlbfan.org +mmafan.biz +myactivedirectory.com +mydissent.net +myeffect.net +mymediapc.net +mypsx.net +mysecuritycamera.com +mysecuritycamera.net +mysecuritycamera.org +net-freaks.com +nflfan.org +nhlfan.net +no-ip.ca +no-ip.co.uk +no-ip.net +noip.us +onthewifi.com +pgafan.net +point2this.com +pointto.us +privatizehealthinsurance.net +quicksytes.com +read-books.org +securitytactics.com +serveexchange.com +servehumour.com +servep2p.com +servesarcasm.com +stufftoread.com +ufcfan.org +unusualperson.com +workisboring.com +3utilities.com +bounceme.net +ddns.net +ddnsking.com +gotdns.ch +hopto.org +myftp.biz +myftp.org +myvnc.com +no-ip.biz +no-ip.info +no-ip.org +noip.me +redirectme.net +servebeer.com +serveblog.net +servecounterstrike.com +serveftp.com +servegame.com +servehalflife.com +servehttp.com +serveirc.com +serveminecraft.net +servemp3.com +servepics.com +servequake.com +sytes.net +webhop.me +zapto.org + +// NodeArt : https://nodeart.io +// Submitted by Konstantin Nosov +stage.nodeart.io + +// Nodum B.V. : https://nodum.io/ +// Submitted by Wietse Wind +nodum.co +nodum.io + +// Nucleos Inc. : https://nucleos.com +// Submitted by Piotr Zduniak +pcloud.host + +// NYC.mn : http://www.information.nyc.mn +// Submitted by Matthew Brown +nyc.mn + +// NymNom : https://nymnom.com/ +// Submitted by Dave McCormack +nom.ae +nom.af +nom.ai +nom.al +nym.by +nym.bz +nom.cl +nom.gd +nom.ge +nom.gl +nym.gr +nom.gt +nym.gy +nom.hn +nym.ie +nom.im +nom.ke +nym.kz +nym.la +nym.lc +nom.li +nym.li +nym.lt +nym.lu +nym.me +nom.mk +nym.mn +nym.mx +nom.nu +nym.nz +nym.pe +nym.pt +nom.pw +nom.qa +nym.ro +nom.rs +nom.si +nym.sk +nom.st +nym.su +nym.sx +nom.tj +nym.tw +nom.ug +nom.uy +nom.vc +nom.vg + +// Octopodal Solutions, LLC. : https://ulterius.io/ +// Submitted by Andrew Sampson +cya.gg + +// Omnibond Systems, LLC. : https://www.omnibond.com +// Submitted by Cole Estep +cloudycluster.net + +// One Fold Media : http://www.onefoldmedia.com/ +// Submitted by Eddie Jones +nid.io + +// OpenCraft GmbH : http://opencraft.com/ +// Submitted by Sven Marnach +opencraft.hosting + +// Opera Software, A.S.A. +// Submitted by Yngve Pettersen +operaunite.com + +// OutSystems +// Submitted by Duarte Santos +outsystemscloud.com + +// OwnProvider GmbH: http://www.ownprovider.com +// Submitted by Jan Moennich +ownprovider.com +own.pm + +// OX : http://www.ox.rs +// Submitted by Adam Grand +ox.rs + +// oy.lc +// Submitted by Charly Coste +oy.lc + +// Pagefog : https://pagefog.com/ +// Submitted by Derek Myers +pgfog.com + +// Pagefront : https://www.pagefronthq.com/ +// Submitted by Jason Kriss +pagefrontapp.com + +// .pl domains (grandfathered) +art.pl +gliwice.pl +krakow.pl +poznan.pl +wroc.pl +zakopane.pl + +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina +pantheonsite.io +gotpantheon.com + +// Peplink | Pepwave : http://peplink.com/ +// Submitted by Steve Leung +mypep.link + +// Planet-Work : https://www.planet-work.com/ +// Submitted by Frédéric VANNIÈRE +on-web.fr + +// Platform.sh : https://platform.sh +// Submitted by Nikola Kotur +*.platform.sh +*.platformsh.site + +// prgmr.com : https://prgmr.com/ +// Submitted by Sarah Newman +xen.prgmr.com + +// priv.at : http://www.nic.priv.at/ +// Submitted by registry +priv.at + +// Protonet GmbH : http://protonet.io +// Submitted by Martin Meier +protonet.io + +// Publication Presse Communication SARL : https://ppcom.fr +// Submitted by Yaacov Akiba Slama +chirurgiens-dentistes-en-france.fr +byen.site + +// Russian Academy of Sciences +// Submitted by Tech Support +ras.ru + +// QA2 +// Submitted by Daniel Dent (https://www.danieldent.com/) +qa2.com + +// QNAP System Inc : https://www.qnap.com +// Submitted by Nick Chang +dev-myqnapcloud.com +alpha-myqnapcloud.com +myqnapcloud.com + +// Quip : https://quip.com +// Submitted by Patrick Linehan +*.quipelements.com + +// Qutheory LLC : http://qutheory.io +// Submitted by Jonas Schwartz +vapor.cloud +vaporcloud.io + +// Rackmaze LLC : https://www.rackmaze.com +// Submitted by Kirill Pertsev +rackmaze.com +rackmaze.net + +// Red Hat, Inc. OpenShift : https://openshift.redhat.com/ +// Submitted by Tim Kramer +rhcloud.com + +// Resin.io : https://resin.io +// Submitted by Tim Perry +resindevice.io +devices.resinstaging.io + +// RethinkDB : https://www.rethinkdb.com/ +// Submitted by Chris Kastorff +hzc.io + +// Revitalised Limited : http://www.revitalised.co.uk +// Submitted by Jack Price +wellbeingzone.eu +ptplus.fit +wellbeingzone.co.uk + +// Sandstorm Development Group, Inc. : https://sandcats.io/ +// Submitted by Asheesh Laroia +sandcats.io + +// SBE network solutions GmbH : https://www.sbe.de/ +// Submitted by Norman Meilick +logoip.de +logoip.com + +// schokokeks.org GbR : https://schokokeks.org/ +// Submitted by Hanno Böck +schokokeks.net + +// Scry Security : http://www.scrysec.com +// Submitted by Shante Adam +scrysec.com + +// Securepoint GmbH : https://www.securepoint.de +// Submitted by Erik Anders +firewall-gateway.com +firewall-gateway.de +my-gateway.de +my-router.de +spdns.de +spdns.eu +firewall-gateway.net +my-firewall.org +myfirewall.org +spdns.org + +// SensioLabs, SAS : https://sensiolabs.com/ +// Submitted by Fabien Potencier +*.s5y.io +*.sensiosite.cloud + +// Service Online LLC : http://drs.ua/ +// Submitted by Serhii Bulakh +biz.ua +co.ua +pp.ua + +// ShiftEdit : https://shiftedit.net/ +// Submitted by Adam Jimenez +shiftedit.io + +// Shopblocks : http://www.shopblocks.com/ +// Submitted by Alex Bowers +myshopblocks.com + +// SinaAppEngine : http://sae.sina.com.cn/ +// Submitted by SinaAppEngine +1kapp.com +appchizi.com +applinzi.com +sinaapp.com +vipsinaapp.com + +// Skyhat : http://www.skyhat.io +// Submitted by Shante Adam +bounty-full.com +alpha.bounty-full.com +beta.bounty-full.com + +// staticland : https://static.land +// Submitted by Seth Vincent +static.land +dev.static.land +sites.static.land + +// SourceLair PC : https://www.sourcelair.com +// Submitted by Antonis Kalipetis +apps.lair.io +*.stolos.io + +// SpaceKit : https://www.spacekit.io/ +// Submitted by Reza Akhavan +spacekit.io + +// SpeedPartner GmbH: https://www.speedpartner.de/ +// Submitted by Stefan Neufeind +customer.speedpartner.de + +// Storj Labs Inc. : https://storj.io/ +// Submitted by Philip Hutchins +storj.farm + +// Studenten Net Twente : http://www.snt.utwente.nl/ +// Submitted by Silke Hofstra +utwente.io + +// Sub 6 Limited: http://www.sub6.com +// Submitted by Dan Miller +temp-dns.com + +// Synology, Inc. : https://www.synology.com/ +// Submitted by Rony Weng +diskstation.me +dscloud.biz +dscloud.me +dscloud.mobi +dsmynas.com +dsmynas.net +dsmynas.org +familyds.com +familyds.net +familyds.org +i234.me +myds.me +synology.me +vpnplus.to + +// TAIFUN Software AG : http://taifun-software.de +// Submitted by Bjoern Henke +taifun-dns.de + +// TASK geographical domains (www.task.gda.pl/uslugi/dns) +gda.pl +gdansk.pl +gdynia.pl +med.pl +sopot.pl + +// The Gwiddle Foundation : https://gwiddlefoundation.org.uk +// Submitted by Joshua Bayfield +gwiddle.co.uk + +// Thingdust AG : https://thingdust.com/ +// Submitted by Adrian Imboden +cust.dev.thingdust.io +cust.disrec.thingdust.io +cust.prod.thingdust.io +cust.testing.thingdust.io + +// TownNews.com : http://www.townnews.com +// Submitted by Dustin Ward +bloxcms.com +townnews-staging.com + +// TrafficPlex GmbH : https://www.trafficplex.de/ +// Submitted by Phillipp Röll +12hp.at +2ix.at +4lima.at +lima-city.at +12hp.ch +2ix.ch +4lima.ch +lima-city.ch +trafficplex.cloud +de.cool +12hp.de +2ix.de +4lima.de +lima-city.de +1337.pictures +clan.rip +lima-city.rocks +webspace.rocks +lima.zone + +// TransIP : https://www.transip.nl +// Submitted by Rory Breuk +*.transurl.be +*.transurl.eu +*.transurl.nl + +// TuxFamily : http://tuxfamily.org +// Submitted by TuxFamily administrators +tuxfamily.org + +// TwoDNS : https://www.twodns.de/ +// Submitted by TwoDNS-Support +dd-dns.de +diskstation.eu +diskstation.org +dray-dns.de +draydns.de +dyn-vpn.de +dynvpn.de +mein-vigor.de +my-vigor.de +my-wan.de +syno-ds.de +synology-diskstation.de +synology-ds.de + +// Uberspace : https://uberspace.de +// Submitted by Moritz Werner +uber.space +*.uberspace.de + +// UDR Limited : http://www.udr.hk.com +// Submitted by registry +hk.com +hk.org +ltd.hk +inc.hk + +// United Gameserver GmbH : https://united-gameserver.de +// Submitted by Stefan Schwarz +virtualuser.de +virtual-user.de + +// .US +// Submitted by Ed Moore +lib.de.us + +// VeryPositive SIA : http://very.lv +// Submitted by Danko Aleksejevs +2038.io + +// Viprinet Europe GmbH : http://www.viprinet.com +// Submitted by Simon Kissel +router.management + +// Virtual-Info : https://www.virtual-info.info/ +// Submitted by Adnan RIHAN +v-info.info + +// WeDeploy by Liferay, Inc. : https://www.wedeploy.com +// Submitted by Henrique Vicente +wedeploy.io +wedeploy.me +wedeploy.sh + +// Western Digital Technologies, Inc : https://www.wdc.com +// Submitted by Jung Jin +remotewd.com + +// Wikimedia Labs : https://wikitech.wikimedia.org +// Submitted by Yuvi Panda +wmflabs.org + +// XenonCloud GbR: https://xenoncloud.net +// Submitted by Julian Uphoff +half.host + +// XnBay Technology : http://www.xnbay.com/ +// Submitted by XnBay Developer +xnbay.com +u2.xnbay.com +u2-local.xnbay.com + +// XS4ALL Internet bv : https://www.xs4all.nl/ +// Submitted by Daniel Mostertman +cistron.nl +demon.nl +xs4all.space + +// YesCourse Pty Ltd : https://yescourse.com +// Submitted by Atul Bhouraskar +official.academy + +// Yola : https://www.yola.com/ +// Submitted by Stefano Rivera +yolasite.com + +// Yombo : https://yombo.net +// Submitted by Mitch Schwenk +ybo.faith +yombo.me +homelink.one +ybo.party +ybo.review +ybo.science +ybo.trade + +// Yunohost : https://yunohost.org +// Submitted by Valentin Grimaud +nohost.me +noho.st + +// ZaNiC : http://www.za.net/ +// Submitted by registry +za.net +za.org + +// Zeit, Inc. : https://zeit.domains/ +// Submitted by Olli Vanhoja +now.sh + +// Zone.id : https://zone.id/ +// Submitted by Su Hendro +zone.id + +// ===END PRIVATE DOMAINS=== diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix.rb new file mode 100644 index 0000000000..c94eb66f3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix.rb @@ -0,0 +1,175 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +require_relative "public_suffix/domain" +require_relative "public_suffix/version" +require_relative "public_suffix/errors" +require_relative "public_suffix/rule" +require_relative "public_suffix/list" + +# PublicSuffix is a Ruby domain name parser based on the Public Suffix List. +# +# The [Public Suffix List](https://publicsuffix.org) is a cross-vendor initiative +# to provide an accurate list of domain name suffixes. +# +# The Public Suffix List is an initiative of the Mozilla Project, +# but is maintained as a community resource. It is available for use in any software, +# but was originally created to meet the needs of browser manufacturers. +module PublicSuffix + + DOT = ".".freeze + BANG = "!".freeze + STAR = "*".freeze + + # Parses +name+ and returns the {PublicSuffix::Domain} instance. + # + # @example Parse a valid domain + # PublicSuffix.parse("google.com") + # # => # + # + # @example Parse a valid subdomain + # PublicSuffix.parse("www.google.com") + # # => # + # + # @example Parse a fully qualified domain + # PublicSuffix.parse("google.com.") + # # => # + # + # @example Parse a fully qualified domain (subdomain) + # PublicSuffix.parse("www.google.com.") + # # => # + # + # @example Parse an invalid (unlisted) domain + # PublicSuffix.parse("x.yz") + # # => # + # + # @example Parse an invalid (unlisted) domain with strict checking (without applying the default * rule) + # PublicSuffix.parse("x.yz", default_rule: nil) + # # => PublicSuffix::DomainInvalid: `x.yz` is not a valid domain + # + # @example Parse an URL (not supported, only domains) + # PublicSuffix.parse("http://www.google.com") + # # => PublicSuffix::DomainInvalid: http://www.google.com is not expected to contain a scheme + # + # + # @param [String, #to_s] name The domain name or fully qualified domain name to parse. + # @param [PublicSuffix::List] list The rule list to search, defaults to the default {PublicSuffix::List} + # @param [Boolean] ignore_private + # @return [PublicSuffix::Domain] + # + # @raise [PublicSuffix::DomainInvalid] + # If domain is not a valid domain. + # @raise [PublicSuffix::DomainNotAllowed] + # If a rule for +domain+ is found, but the rule doesn't allow +domain+. + def self.parse(name, list: List.default, default_rule: list.default_rule, ignore_private: false) + what = normalize(name) + raise what if what.is_a?(DomainInvalid) + + rule = list.find(what, default: default_rule, ignore_private: ignore_private) + + # rubocop:disable Style/IfUnlessModifier + if rule.nil? + raise DomainInvalid, "`#{what}` is not a valid domain" + end + if rule.decompose(what).last.nil? + raise DomainNotAllowed, "`#{what}` is not allowed according to Registry policy" + end + # rubocop:enable Style/IfUnlessModifier + + decompose(what, rule) + end + + # Checks whether +domain+ is assigned and allowed, without actually parsing it. + # + # This method doesn't care whether domain is a domain or subdomain. + # The validation is performed using the default {PublicSuffix::List}. + # + # @example Validate a valid domain + # PublicSuffix.valid?("example.com") + # # => true + # + # @example Validate a valid subdomain + # PublicSuffix.valid?("www.example.com") + # # => true + # + # @example Validate a not-listed domain + # PublicSuffix.valid?("example.tldnotlisted") + # # => true + # + # @example Validate a not-listed domain with strict checking (without applying the default * rule) + # PublicSuffix.valid?("example.tldnotlisted") + # # => true + # PublicSuffix.valid?("example.tldnotlisted", default_rule: nil) + # # => false + # + # @example Validate a fully qualified domain + # PublicSuffix.valid?("google.com.") + # # => true + # PublicSuffix.valid?("www.google.com.") + # # => true + # + # @example Check an URL (which is not a valid domain) + # PublicSuffix.valid?("http://www.example.com") + # # => false + # + # + # @param [String, #to_s] name The domain name or fully qualified domain name to validate. + # @param [Boolean] ignore_private + # @return [Boolean] + def self.valid?(name, list: List.default, default_rule: list.default_rule, ignore_private: false) + what = normalize(name) + return false if what.is_a?(DomainInvalid) + + rule = list.find(what, default: default_rule, ignore_private: ignore_private) + + !rule.nil? && !rule.decompose(what).last.nil? + end + + # Attempt to parse the name and returns the domain, if valid. + # + # This method doesn't raise. Instead, it returns nil if the domain is not valid for whatever reason. + # + # @param [String, #to_s] name The domain name or fully qualified domain name to parse. + # @param [PublicSuffix::List] list The rule list to search, defaults to the default {PublicSuffix::List} + # @param [Boolean] ignore_private + # @return [String] + def self.domain(name, **options) + parse(name, **options).domain + rescue PublicSuffix::Error + nil + end + + + # private + + def self.decompose(name, rule) + left, right = rule.decompose(name) + + parts = left.split(DOT) + # If we have 0 parts left, there is just a tld and no domain or subdomain + # If we have 1 part left, there is just a tld, domain and not subdomain + # If we have 2 parts left, the last part is the domain, the other parts (combined) are the subdomain + tld = right + sld = parts.empty? ? nil : parts.pop + trd = parts.empty? ? nil : parts.join(DOT) + + Domain.new(tld, sld, trd) + end + + # Pretend we know how to deal with user input. + def self.normalize(name) + name = name.to_s.dup + name.strip! + name.chomp!(DOT) + name.downcase! + + return DomainInvalid.new("Name is blank") if name.empty? + return DomainInvalid.new("Name starts with a dot") if name.start_with?(DOT) + return DomainInvalid.new("%s is not expected to contain a scheme" % name) if name.include?("://") + name + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/domain.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/domain.rb new file mode 100644 index 0000000000..07ca88948a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/domain.rb @@ -0,0 +1,233 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +module PublicSuffix + + # Domain represents a domain name, composed by a TLD, SLD and TRD. + class Domain + + # Splits a string into the labels, that is the dot-separated parts. + # + # The input is not validated, but it is assumed to be a valid domain name. + # + # @example + # + # name_to_labels('example.com') + # # => ['example', 'com'] + # + # name_to_labels('example.co.uk') + # # => ['example', 'co', 'uk'] + # + # @param name [String, #to_s] The domain name to split. + # @return [Array] + def self.name_to_labels(name) + name.to_s.split(DOT) + end + + + attr_reader :tld, :sld, :trd + + # Creates and returns a new {PublicSuffix::Domain} instance. + # + # @overload initialize(tld) + # Initializes with a +tld+. + # @param [String] tld The TLD (extension) + # @overload initialize(tld, sld) + # Initializes with a +tld+ and +sld+. + # @param [String] tld The TLD (extension) + # @param [String] sld The TRD (domain) + # @overload initialize(tld, sld, trd) + # Initializes with a +tld+, +sld+ and +trd+. + # @param [String] tld The TLD (extension) + # @param [String] sld The SLD (domain) + # @param [String] tld The TRD (subdomain) + # + # @yield [self] Yields on self. + # @yieldparam [PublicSuffix::Domain] self The newly creates instance + # + # @example Initialize with a TLD + # PublicSuffix::Domain.new("com") + # # => # + # + # @example Initialize with a TLD and SLD + # PublicSuffix::Domain.new("com", "example") + # # => # + # + # @example Initialize with a TLD, SLD and TRD + # PublicSuffix::Domain.new("com", "example", "wwww") + # # => # + # + def initialize(*args) + @tld, @sld, @trd = args + yield(self) if block_given? + end + + # Returns a string representation of this object. + # + # @return [String] + def to_s + name + end + + # Returns an array containing the domain parts. + # + # @return [Array] + # + # @example + # + # PublicSuffix::Domain.new("google.com").to_a + # # => [nil, "google", "com"] + # + # PublicSuffix::Domain.new("www.google.com").to_a + # # => [nil, "google", "com"] + # + def to_a + [@trd, @sld, @tld] + end + + # Returns the full domain name. + # + # @return [String] + # + # @example Gets the domain name of a domain + # PublicSuffix::Domain.new("com", "google").name + # # => "google.com" + # + # @example Gets the domain name of a subdomain + # PublicSuffix::Domain.new("com", "google", "www").name + # # => "www.google.com" + # + def name + [@trd, @sld, @tld].compact.join(DOT) + end + + # Returns a domain-like representation of this object + # if the object is a {#domain?}, nil otherwise. + # + # PublicSuffix::Domain.new("com").domain + # # => nil + # + # PublicSuffix::Domain.new("com", "google").domain + # # => "google.com" + # + # PublicSuffix::Domain.new("com", "google", "www").domain + # # => "www.google.com" + # + # This method doesn't validate the input. It handles the domain + # as a valid domain name and simply applies the necessary transformations. + # + # This method returns a FQD, not just the domain part. + # To get the domain part, use #sld (aka second level domain). + # + # PublicSuffix::Domain.new("com", "google", "www").domain + # # => "google.com" + # + # PublicSuffix::Domain.new("com", "google", "www").sld + # # => "google" + # + # @see #domain? + # @see #subdomain + # + # @return [String] + def domain + [@sld, @tld].join(DOT) if domain? + end + + # Returns a subdomain-like representation of this object + # if the object is a {#subdomain?}, nil otherwise. + # + # PublicSuffix::Domain.new("com").subdomain + # # => nil + # + # PublicSuffix::Domain.new("com", "google").subdomain + # # => nil + # + # PublicSuffix::Domain.new("com", "google", "www").subdomain + # # => "www.google.com" + # + # This method doesn't validate the input. It handles the domain + # as a valid domain name and simply applies the necessary transformations. + # + # This method returns a FQD, not just the subdomain part. + # To get the subdomain part, use #trd (aka third level domain). + # + # PublicSuffix::Domain.new("com", "google", "www").subdomain + # # => "www.google.com" + # + # PublicSuffix::Domain.new("com", "google", "www").trd + # # => "www" + # + # @see #subdomain? + # @see #domain + # + # @return [String] + def subdomain + [@trd, @sld, @tld].join(DOT) if subdomain? + end + + # Checks whether self looks like a domain. + # + # This method doesn't actually validate the domain. + # It only checks whether the instance contains + # a value for the {#tld} and {#sld} attributes. + # + # @example + # + # PublicSuffix::Domain.new("com").domain? + # # => false + # + # PublicSuffix::Domain.new("com", "google").domain? + # # => true + # + # PublicSuffix::Domain.new("com", "google", "www").domain? + # # => true + # + # # This is an invalid domain, but returns true + # # because this method doesn't validate the content. + # PublicSuffix::Domain.new("com", nil).domain? + # # => true + # + # @see #subdomain? + # + # @return [Boolean] + def domain? + !(@tld.nil? || @sld.nil?) + end + + # Checks whether self looks like a subdomain. + # + # This method doesn't actually validate the subdomain. + # It only checks whether the instance contains + # a value for the {#tld}, {#sld} and {#trd} attributes. + # If you also want to validate the domain, + # use {#valid_subdomain?} instead. + # + # @example + # + # PublicSuffix::Domain.new("com").subdomain? + # # => false + # + # PublicSuffix::Domain.new("com", "google").subdomain? + # # => false + # + # PublicSuffix::Domain.new("com", "google", "www").subdomain? + # # => true + # + # # This is an invalid domain, but returns true + # # because this method doesn't validate the content. + # PublicSuffix::Domain.new("com", "example", nil).subdomain? + # # => true + # + # @see #domain? + # + # @return [Boolean] + def subdomain? + !(@tld.nil? || @sld.nil? || @trd.nil?) + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/errors.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/errors.rb new file mode 100644 index 0000000000..687befb41e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/errors.rb @@ -0,0 +1,39 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +module PublicSuffix + + class Error < StandardError + end + + # Raised when trying to parse an invalid name. + # A name is considered invalid when no rule is found in the definition list. + # + # @example + # + # PublicSuffix.parse("nic.test") + # # => PublicSuffix::DomainInvalid + # + # PublicSuffix.parse("http://www.nic.it") + # # => PublicSuffix::DomainInvalid + # + class DomainInvalid < Error + end + + # Raised when trying to parse a name that matches a suffix. + # + # @example + # + # PublicSuffix.parse("nic.do") + # # => PublicSuffix::DomainNotAllowed + # + # PublicSuffix.parse("www.nic.do") + # # => PublicSuffix::Domain + # + class DomainNotAllowed < DomainInvalid + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/list.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/list.rb new file mode 100644 index 0000000000..605a9186ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/list.rb @@ -0,0 +1,243 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +module PublicSuffix + + # A {PublicSuffix::List} is a collection of one + # or more {PublicSuffix::Rule}. + # + # Given a {PublicSuffix::List}, + # you can add or remove {PublicSuffix::Rule}, + # iterate all items in the list or search for the first rule + # which matches a specific domain name. + # + # # Create a new list + # list = PublicSuffix::List.new + # + # # Push two rules to the list + # list << PublicSuffix::Rule.factory("it") + # list << PublicSuffix::Rule.factory("com") + # + # # Get the size of the list + # list.size + # # => 2 + # + # # Search for the rule matching given domain + # list.find("example.com") + # # => # + # list.find("example.org") + # # => nil + # + # You can create as many {PublicSuffix::List} you want. + # The {PublicSuffix::List.default} rule list is used + # to tokenize and validate a domain. + # + class List + + DEFAULT_LIST_PATH = File.expand_path("../../data/list.txt", __dir__) + + # Gets the default rule list. + # + # Initializes a new {PublicSuffix::List} parsing the content + # of {PublicSuffix::List.default_list_content}, if required. + # + # @return [PublicSuffix::List] + def self.default(**options) + @default ||= parse(File.read(DEFAULT_LIST_PATH), options) + end + + # Sets the default rule list to +value+. + # + # @param value [PublicSuffix::List] the new list + # @return [PublicSuffix::List] + def self.default=(value) + @default = value + end + + # Parse given +input+ treating the content as Public Suffix List. + # + # See http://publicsuffix.org/format/ for more details about input format. + # + # @param string [#each_line] the list to parse + # @param private_domains [Boolean] whether to ignore the private domains section + # @return [PublicSuffix::List] + def self.parse(input, private_domains: true) + comment_token = "//".freeze + private_token = "===BEGIN PRIVATE DOMAINS===".freeze + section = nil # 1 == ICANN, 2 == PRIVATE + + new do |list| + input.each_line do |line| + line.strip! + case # rubocop:disable Style/EmptyCaseCondition + + # skip blank lines + when line.empty? + next + + # include private domains or stop scanner + when line.include?(private_token) + break if !private_domains + section = 2 + + # skip comments + when line.start_with?(comment_token) + next + + else + list.add(Rule.factory(line, private: section == 2)) + + end + end + end + end + + + # Initializes an empty {PublicSuffix::List}. + # + # @yield [self] Yields on self. + # @yieldparam [PublicSuffix::List] self The newly created instance. + def initialize + @rules = {} + yield(self) if block_given? + end + + + # Checks whether two lists are equal. + # + # List one is equal to two, if two is an instance of + # {PublicSuffix::List} and each +PublicSuffix::Rule::*+ + # in list one is available in list two, in the same order. + # + # @param other [PublicSuffix::List] the List to compare + # @return [Boolean] + def ==(other) + return false unless other.is_a?(List) + equal?(other) || @rules == other.rules + end + alias eql? == + + # Iterates each rule in the list. + def each(&block) + Enumerator.new do |y| + @rules.each do |key, node| + y << entry_to_rule(node, key) + end + end.each(&block) + end + + + # Adds the given object to the list and optionally refreshes the rule index. + # + # @param rule [PublicSuffix::Rule::*] the rule to add to the list + # @return [self] + def add(rule) + @rules[rule.value] = rule_to_entry(rule) + self + end + alias << add + + # Gets the number of rules in the list. + # + # @return [Integer] + def size + @rules.size + end + + # Checks whether the list is empty. + # + # @return [Boolean] + def empty? + @rules.empty? + end + + # Removes all rules. + # + # @return [self] + def clear + @rules.clear + self + end + + # Finds and returns the rule corresponding to the longest public suffix for the hostname. + # + # @param name [#to_s] the hostname + # @param default [PublicSuffix::Rule::*] the default rule to return in case no rule matches + # @return [PublicSuffix::Rule::*] + def find(name, default: default_rule, **options) + rule = select(name, **options).inject do |l, r| + return r if r.class == Rule::Exception + l.length > r.length ? l : r + end + rule || default + end + + # Selects all the rules matching given hostame. + # + # If `ignore_private` is set to true, the algorithm will skip the rules that are flagged as + # private domain. Note that the rules will still be part of the loop. + # If you frequently need to access lists ignoring the private domains, + # you should create a list that doesn't include these domains setting the + # `private_domains: false` option when calling {.parse}. + # + # Note that this method is currently private, as you should not rely on it. Instead, + # the public interface is {#find}. The current internal algorithm allows to return all + # matching rules, but different data structures may not be able to do it, and instead would + # return only the match. For this reason, you should rely on {#find}. + # + # @param name [#to_s] the hostname + # @param ignore_private [Boolean] + # @return [Array] + def select(name, ignore_private: false) + name = name.to_s + + parts = name.split(DOT).reverse! + index = 0 + query = parts[index] + rules = [] + + loop do + match = @rules[query] + if !match.nil? && (ignore_private == false || match.private == false) + rules << entry_to_rule(match, query) + end + + index += 1 + break if index >= parts.size + query = parts[index] + DOT + query + end + + rules + end + private :select # rubocop:disable Style/AccessModifierDeclarations + + # Gets the default rule. + # + # @see PublicSuffix::Rule.default_rule + # + # @return [PublicSuffix::Rule::*] + def default_rule + PublicSuffix::Rule.default + end + + + protected + + attr_reader :rules + + + private + + def entry_to_rule(entry, value) + entry.type.new(value: value, length: entry.length, private: entry.private) + end + + def rule_to_entry(rule) + Rule::Entry.new(rule.class, rule.length, rule.private) + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/rule.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/rule.rb new file mode 100644 index 0000000000..ec2ecd0c9f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/rule.rb @@ -0,0 +1,348 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +module PublicSuffix + + # A Rule is a special object which holds a single definition + # of the Public Suffix List. + # + # There are 3 types of rules, each one represented by a specific + # subclass within the +PublicSuffix::Rule+ namespace. + # + # To create a new Rule, use the {PublicSuffix::Rule#factory} method. + # + # PublicSuffix::Rule.factory("ar") + # # => # + # + module Rule + + # @api internal + Entry = Struct.new(:type, :length, :private) + + # = Abstract rule class + # + # This represent the base class for a Rule definition + # in the {Public Suffix List}[https://publicsuffix.org]. + # + # This is intended to be an Abstract class + # and you shouldn't create a direct instance. The only purpose + # of this class is to expose a common interface + # for all the available subclasses. + # + # * {PublicSuffix::Rule::Normal} + # * {PublicSuffix::Rule::Exception} + # * {PublicSuffix::Rule::Wildcard} + # + # ## Properties + # + # A rule is composed by 4 properties: + # + # value - A normalized version of the rule name. + # The normalization process depends on rule tpe. + # + # Here's an example + # + # PublicSuffix::Rule.factory("*.google.com") + # # + # + # ## Rule Creation + # + # The best way to create a new rule is passing the rule name + # to the PublicSuffix::Rule.factory method. + # + # PublicSuffix::Rule.factory("com") + # # => PublicSuffix::Rule::Normal + # + # PublicSuffix::Rule.factory("*.com") + # # => PublicSuffix::Rule::Wildcard + # + # This method will detect the rule type and create an instance + # from the proper rule class. + # + # ## Rule Usage + # + # A rule describes the composition of a domain name and explains how to tokenize + # the name into tld, sld and trd. + # + # To use a rule, you first need to be sure the name you want to tokenize + # can be handled by the current rule. + # You can use the #match? method. + # + # rule = PublicSuffix::Rule.factory("com") + # + # rule.match?("google.com") + # # => true + # + # rule.match?("google.com") + # # => false + # + # Rule order is significant. A name can match more than one rule. + # See the {Public Suffix Documentation}[http://publicsuffix.org/format/] + # to learn more about rule priority. + # + # When you have the right rule, you can use it to tokenize the domain name. + # + # rule = PublicSuffix::Rule.factory("com") + # + # rule.decompose("google.com") + # # => ["google", "com"] + # + # rule.decompose("www.google.com") + # # => ["www.google", "com"] + # + # @abstract + # + class Base + + # @return [String] the rule definition + attr_reader :value + + # @return [String] the length of the rule + attr_reader :length + + # @return [Boolean] true if the rule is a private domain + attr_reader :private + + + # Initializes a new rule from the content. + # + # @param content [String] the content of the rule + # @param private [Boolean] + def self.build(content, private: false) + new(value: content, private: private) + end + + # Initializes a new rule. + # + # @param value [String] + # @param private [Boolean] + def initialize(value:, length: nil, private: false) + @value = value.to_s + @length = length || @value.count(DOT) + 1 + @private = private + end + + # Checks whether this rule is equal to other. + # + # @param [PublicSuffix::Rule::*] other The rule to compare + # @return [Boolean] + # Returns true if this rule and other are instances of the same class + # and has the same value, false otherwise. + def ==(other) + equal?(other) || (self.class == other.class && value == other.value) + end + alias eql? == + + # Checks if this rule matches +name+. + # + # A domain name is said to match a rule if and only if + # all of the following conditions are met: + # + # - When the domain and rule are split into corresponding labels, + # that the domain contains as many or more labels than the rule. + # - Beginning with the right-most labels of both the domain and the rule, + # and continuing for all labels in the rule, one finds that for every pair, + # either they are identical, or that the label from the rule is "*". + # + # @see https://publicsuffix.org/list/ + # + # @example + # PublicSuffix::Rule.factory("com").match?("example.com") + # # => true + # PublicSuffix::Rule.factory("com").match?("example.net") + # # => false + # + # @param name [String] the domain name to check + # @return [Boolean] + def match?(name) + # Note: it works because of the assumption there are no + # rules like foo.*.com. If the assumption is incorrect, + # we need to properly walk the input and skip parts according + # to wildcard component. + diff = name.chomp(value) + diff.empty? || diff.end_with?(DOT) + end + + # @abstract + def parts + raise NotImplementedError + end + + # @abstract + # @param [String, #to_s] name The domain name to decompose + # @return [Array] + def decompose(*) + raise NotImplementedError + end + + end + + # Normal represents a standard rule (e.g. com). + class Normal < Base + + # Gets the original rule definition. + # + # @return [String] The rule definition. + def rule + value + end + + # Decomposes the domain name according to rule properties. + # + # @param [String, #to_s] name The domain name to decompose + # @return [Array] The array with [trd + sld, tld]. + def decompose(domain) + suffix = parts.join('\.') + matches = domain.to_s.match(/^(.*)\.(#{suffix})$/) + matches ? matches[1..2] : [nil, nil] + end + + # dot-split rule value and returns all rule parts + # in the order they appear in the value. + # + # @return [Array] + def parts + @value.split(DOT) + end + + end + + # Wildcard represents a wildcard rule (e.g. *.co.uk). + class Wildcard < Base + + # Initializes a new rule from the content. + # + # @param content [String] the content of the rule + # @param private [Boolean] + def self.build(content, private: false) + new(value: content.to_s[2..-1], private: private) + end + + # Initializes a new rule. + # + # @param value [String] + # @param private [Boolean] + def initialize(value:, length: nil, private: false) + super(value: value, length: length, private: private) + length or @length += 1 # * counts as 1 + end + + # Gets the original rule definition. + # + # @return [String] The rule definition. + def rule + value == "" ? STAR : STAR + DOT + value + end + + # Decomposes the domain name according to rule properties. + # + # @param [String, #to_s] name The domain name to decompose + # @return [Array] The array with [trd + sld, tld]. + def decompose(domain) + suffix = ([".*?"] + parts).join('\.') + matches = domain.to_s.match(/^(.*)\.(#{suffix})$/) + matches ? matches[1..2] : [nil, nil] + end + + # dot-split rule value and returns all rule parts + # in the order they appear in the value. + # + # @return [Array] + def parts + @value.split(DOT) + end + + end + + # Exception represents an exception rule (e.g. !parliament.uk). + class Exception < Base + + # Initializes a new rule from the content. + # + # @param content [String] the content of the rule + # @param private [Boolean] + def self.build(content, private: false) + new(value: content.to_s[1..-1], private: private) + end + + # Gets the original rule definition. + # + # @return [String] The rule definition. + def rule + BANG + value + end + + # Decomposes the domain name according to rule properties. + # + # @param [String, #to_s] name The domain name to decompose + # @return [Array] The array with [trd + sld, tld]. + def decompose(domain) + suffix = parts.join('\.') + matches = domain.to_s.match(/^(.*)\.(#{suffix})$/) + matches ? matches[1..2] : [nil, nil] + end + + # dot-split rule value and returns all rule parts + # in the order they appear in the value. + # The leftmost label is not considered a label. + # + # See http://publicsuffix.org/format/: + # If the prevailing rule is a exception rule, + # modify it by removing the leftmost label. + # + # @return [Array] + def parts + @value.split(DOT)[1..-1] + end + + end + + + # Takes the +name+ of the rule, detects the specific rule class + # and creates a new instance of that class. + # The +name+ becomes the rule +value+. + # + # @example Creates a Normal rule + # PublicSuffix::Rule.factory("ar") + # # => # + # + # @example Creates a Wildcard rule + # PublicSuffix::Rule.factory("*.ar") + # # => # + # + # @example Creates an Exception rule + # PublicSuffix::Rule.factory("!congresodelalengua3.ar") + # # => # + # + # @param [String] content The rule content. + # @return [PublicSuffix::Rule::*] A rule instance. + def self.factory(content, private: false) + case content.to_s[0, 1] + when STAR + Wildcard + when BANG + Exception + else + Normal + end.build(content, private: private) + end + + # The default rule to use if no rule match. + # + # The default rule is "*". From https://publicsuffix.org/list/: + # + # > If no rules match, the prevailing rule is "*". + # + # @return [PublicSuffix::Rule::Wildcard] The default rule. + def self.default + factory(STAR) + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/version.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/version.rb new file mode 100644 index 0000000000..85fc0e6ec0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/lib/public_suffix/version.rb @@ -0,0 +1,10 @@ +# = Public Suffix +# +# Domain name parser based on the Public Suffix List. +# +# Copyright (c) 2009-2018 Simone Carletti + +module PublicSuffix + # The current library version. + VERSION = "3.0.3".freeze +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/public_suffix.gemspec b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/public_suffix.gemspec new file mode 100644 index 0000000000..44bfccf124 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/public_suffix.gemspec @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +$LOAD_PATH.push File.expand_path("../lib", __FILE__) +require "public_suffix/version" + +Gem::Specification.new do |s| + s.name = "public_suffix" + s.version = PublicSuffix::VERSION + s.authors = ["Simone Carletti"] + s.email = ["weppos@weppos.net"] + s.homepage = "https://simonecarletti.com/code/publicsuffix-ruby" + s.summary = "Domain name parser based on the Public Suffix List." + s.description = "PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains." + s.licenses = ["MIT"] + + s.required_ruby_version = ">= 2.1" + + s.require_paths = ["lib"] + s.files = `git ls-files`.split("\n") + s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.extra_rdoc_files = %w( LICENSE.txt ) + + s.add_development_dependency "rake" + s.add_development_dependency "mocha" + s.add_development_dependency "yard" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/.empty b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/.empty new file mode 100644 index 0000000000..e3220151c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/.empty @@ -0,0 +1,2 @@ +# This is an empty file I use to force a non-empty commit when I only need to store notes +.. \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/acceptance_test.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/acceptance_test.rb new file mode 100644 index 0000000000..ce53bb8f42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/acceptance_test.rb @@ -0,0 +1,127 @@ +require "test_helper" + +class AcceptanceTest < Minitest::Test + + VALID_CASES = [ + ["example.com", "example.com", [nil, "example", "com"]], + ["foo.example.com", "example.com", ["foo", "example", "com"]], + + ["verybritish.co.uk", "verybritish.co.uk", [nil, "verybritish", "co.uk"]], + ["foo.verybritish.co.uk", "verybritish.co.uk", ["foo", "verybritish", "co.uk"]], + + ["parliament.uk", "parliament.uk", [nil, "parliament", "uk"]], + ["foo.parliament.uk", "parliament.uk", ["foo", "parliament", "uk"]], + ].freeze + + def test_valid + VALID_CASES.each do |input, domain, results| + parsed = PublicSuffix.parse(input) + trd, sld, tld = results + assert_equal tld, parsed.tld, "Invalid tld for `#{name}`" + assert_equal sld, parsed.sld, "Invalid sld for `#{name}`" + if trd.nil? + assert_nil parsed.trd, "Invalid trd for `#{name}`" + else + assert_equal trd, parsed.trd, "Invalid trd for `#{name}`" + end + + assert_equal domain, PublicSuffix.domain(input) + assert PublicSuffix.valid?(input) + end + end + + + INVALID_CASES = [ + ["nic.bd", PublicSuffix::DomainNotAllowed], + [nil, PublicSuffix::DomainInvalid], + ["", PublicSuffix::DomainInvalid], + [" ", PublicSuffix::DomainInvalid], + ].freeze + + def test_invalid + INVALID_CASES.each do |(name, error)| + assert_raises(error) { PublicSuffix.parse(name) } + assert !PublicSuffix.valid?(name) + end + end + + + REJECTED_CASES = [ + ["www. .com", true], + ["foo.co..uk", true], + ["goo,gle.com", true], + ["-google.com", true], + ["google-.com", true], + + # This case was covered in GH-15. + # I decided to cover this case because it's not easily reproducible with URI.parse + # and can lead to several false positives. + ["http://google.com", false], + ].freeze + + def test_rejected + REJECTED_CASES.each do |name, expected| + assert_equal expected, PublicSuffix.valid?(name), + "Expected %s to be %s" % [name.inspect, expected.inspect] + assert !valid_domain?(name), + "#{name} expected to be invalid" + end + end + + + CASE_CASES = [ + ["Www.google.com", %w( www google com )], + ["www.Google.com", %w( www google com )], + ["www.google.Com", %w( www google com )], + ].freeze + + def test_ignore_case + CASE_CASES.each do |name, results| + domain = PublicSuffix.parse(name) + trd, sld, tld = results + assert_equal tld, domain.tld, "Invalid tld for `#{name}'" + assert_equal sld, domain.sld, "Invalid sld for `#{name}'" + assert_equal trd, domain.trd, "Invalid trd for `#{name}'" + assert PublicSuffix.valid?(name) + end + end + + + INCLUDE_PRIVATE_CASES = [ + ["blogspot.com", true, "blogspot.com"], + ["blogspot.com", false, nil], + ["subdomain.blogspot.com", true, "blogspot.com"], + ["subdomain.blogspot.com", false, "subdomain.blogspot.com"], + ].freeze + + def test_ignore_private + # test domain and parse + INCLUDE_PRIVATE_CASES.each do |given, ignore_private, expected| + if expected.nil? + assert_nil PublicSuffix.domain(given, ignore_private: ignore_private) + else + assert_equal expected, PublicSuffix.domain(given, ignore_private: ignore_private) + end + end + # test valid? + INCLUDE_PRIVATE_CASES.each do |given, ignore_private, expected| + assert_equal !expected.nil?, PublicSuffix.valid?(given, ignore_private: ignore_private) + end + end + + + def valid_uri?(name) + uri = URI.parse(name) + !uri.host.nil? + rescue + false + end + + def valid_domain?(name) + uri = URI.parse(name) + !uri.host.nil? && uri.scheme.nil? + rescue + false + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find.rb new file mode 100644 index 0000000000..0074f1d094 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find.rb @@ -0,0 +1,66 @@ +require 'benchmark' +require_relative "../../lib/public_suffix" + +NAME_SHORT = "example.de" +NAME_MEDIUM = "www.subdomain.example.de" +NAME_LONG = "one.two.three.four.five.example.de" +NAME_WILD = "one.two.three.four.five.example.bd" +NAME_EXCP = "one.two.three.four.five.www.ck" + +IAAA = "www.example.ac" +IZZZ = "www.example.zone" + +PAAA = "one.two.three.four.five.example.beep.pl" +PZZZ = "one.two.three.four.five.example.now.sh" + +JP = "www.yokoshibahikari.chiba.jp" +IT = "www.example.it" +COM = "www.example.com" + +TIMES = (ARGV.first || 50_000).to_i + +# Initialize +PublicSuffixList = PublicSuffix::List.default +PublicSuffixList.find("example.com") + +Benchmark.bmbm(25) do |x| + x.report("NAME_SHORT") do + TIMES.times { PublicSuffixList.find(NAME_SHORT) != nil } + end + x.report("NAME_MEDIUM") do + TIMES.times { PublicSuffixList.find(NAME_MEDIUM) != nil } + end + x.report("NAME_LONG") do + TIMES.times { PublicSuffixList.find(NAME_LONG) != nil } + end + x.report("NAME_WILD") do + TIMES.times { PublicSuffixList.find(NAME_WILD) != nil } + end + x.report("NAME_EXCP") do + TIMES.times { PublicSuffixList.find(NAME_EXCP) != nil } + end + + x.report("IAAA") do + TIMES.times { PublicSuffixList.find(IAAA) != nil } + end + x.report("IZZZ") do + TIMES.times { PublicSuffixList.find(IZZZ) != nil } + end + + x.report("PAAA") do + TIMES.times { PublicSuffixList.find(PAAA) != nil } + end + x.report("PZZZ") do + TIMES.times { PublicSuffixList.find(PZZZ) != nil } + end + + x.report("JP") do + TIMES.times { PublicSuffixList.find(JP) != nil } + end + x.report("IT") do + TIMES.times { PublicSuffixList.find(IT) != nil } + end + x.report("COM") do + TIMES.times { PublicSuffixList.find(COM) != nil } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find_all.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find_all.rb new file mode 100644 index 0000000000..0bcfd42c8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_find_all.rb @@ -0,0 +1,102 @@ +require 'benchmark' +require_relative "../../lib/public_suffix" + +NAME_SHORT = "example.de" +NAME_MEDIUM = "www.subdomain.example.de" +NAME_LONG = "one.two.three.four.five.example.de" +NAME_WILD = "one.two.three.four.five.example.bd" +NAME_EXCP = "one.two.three.four.five.www.ck" + +IAAA = "www.example.ac" +IZZZ = "www.example.zone" + +PAAA = "one.two.three.four.five.example.beep.pl" +PZZZ = "one.two.three.four.five.example.now.sh" + +JP = "www.yokoshibahikari.chiba.jp" +IT = "www.example.it" +COM = "www.example.com" + +TIMES = (ARGV.first || 50_000).to_i + +# Initialize +PublicSuffixList = PublicSuffix::List.default +PublicSuffixList.find("example.com") + +Benchmark.bmbm(25) do |x| + x.report("NAME_SHORT") do + TIMES.times { PublicSuffixList.find(NAME_SHORT) != nil } + end + x.report("NAME_SHORT (noprivate)") do + TIMES.times { PublicSuffixList.find(NAME_SHORT, ignore_private: true) != nil } + end + x.report("NAME_MEDIUM") do + TIMES.times { PublicSuffixList.find(NAME_MEDIUM) != nil } + end + x.report("NAME_MEDIUM (noprivate)") do + TIMES.times { PublicSuffixList.find(NAME_MEDIUM, ignore_private: true) != nil } + end + x.report("NAME_LONG") do + TIMES.times { PublicSuffixList.find(NAME_LONG) != nil } + end + x.report("NAME_LONG (noprivate)") do + TIMES.times { PublicSuffixList.find(NAME_LONG, ignore_private: true) != nil } + end + x.report("NAME_WILD") do + TIMES.times { PublicSuffixList.find(NAME_WILD) != nil } + end + x.report("NAME_WILD (noprivate)") do + TIMES.times { PublicSuffixList.find(NAME_WILD, ignore_private: true) != nil } + end + x.report("NAME_EXCP") do + TIMES.times { PublicSuffixList.find(NAME_EXCP) != nil } + end + x.report("NAME_EXCP (noprivate)") do + TIMES.times { PublicSuffixList.find(NAME_EXCP, ignore_private: true) != nil } + end + + x.report("IAAA") do + TIMES.times { PublicSuffixList.find(IAAA) != nil } + end + x.report("IAAA (noprivate)") do + TIMES.times { PublicSuffixList.find(IAAA, ignore_private: true) != nil } + end + x.report("IZZZ") do + TIMES.times { PublicSuffixList.find(IZZZ) != nil } + end + x.report("IZZZ (noprivate)") do + TIMES.times { PublicSuffixList.find(IZZZ, ignore_private: true) != nil } + end + + x.report("PAAA") do + TIMES.times { PublicSuffixList.find(PAAA) != nil } + end + x.report("PAAA (noprivate)") do + TIMES.times { PublicSuffixList.find(PAAA, ignore_private: true) != nil } + end + x.report("PZZZ") do + TIMES.times { PublicSuffixList.find(PZZZ) != nil } + end + x.report("PZZZ (noprivate)") do + TIMES.times { PublicSuffixList.find(PZZZ, ignore_private: true) != nil } + end + + x.report("JP") do + TIMES.times { PublicSuffixList.find(JP) != nil } + end + x.report("JP (noprivate)") do + TIMES.times { PublicSuffixList.find(JP, ignore_private: true) != nil } + end + x.report("IT") do + TIMES.times { PublicSuffixList.find(IT) != nil } + end + x.report("IT (noprivate)") do + TIMES.times { PublicSuffixList.find(IT, ignore_private: true) != nil } + end + x.report("COM") do + TIMES.times { PublicSuffixList.find(COM) != nil } + end + x.report("COM (noprivate)") do + TIMES.times { PublicSuffixList.find(COM, ignore_private: true) != nil } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_names.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_names.rb new file mode 100644 index 0000000000..36b2bce36a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_names.rb @@ -0,0 +1,91 @@ +require 'benchmark/ips' + +STRING = "www.subdomain.example.com" +ARRAY = %w( + com + example.com + subdomain.example.com + www.subdomain.example.com +) + +def tokenizer1(string) + parts = string.split(".").reverse! + index = 0 + query = parts[index] + names = [] + + loop do + names << query + + index += 1 + break if index >= parts.size + query = parts[index] + "." + query + end + names +end + +def tokenizer2(string) + parts = string.split(".") + index = parts.size - 1 + query = parts[index] + names = [] + + loop do + names << query + + index -= 1 + break if index < 0 + query = parts[index] + "." + query + end + names +end + +def tokenizer3(string) + isx = string.size + idx = string.size - 1 + names = [] + + loop do + isx = string.rindex(".", isx - 1) || -1 + names << string[isx + 1, idx - isx] + + break if isx <= 0 + end + names +end + +def tokenizer4(string) + isx = string.size + idx = string.size - 1 + names = [] + + loop do + isx = string.rindex(".", isx - 1) || -1 + names << string[(isx+1)..idx] + + break if isx <= 0 + end + names +end + +(x = tokenizer1(STRING)) == ARRAY or fail("tokenizer1 failed: #{x.inspect}") +(x = tokenizer2(STRING)) == ARRAY or fail("tokenizer2 failed: #{x.inspect}") +(x = tokenizer3(STRING)) == ARRAY or fail("tokenizer3 failed: #{x.inspect}") +(x = tokenizer4(STRING)) == ARRAY or fail("tokenizer4 failed: #{x.inspect}") + +Benchmark.ips do |x| + x.report("tokenizer1") do + tokenizer1(STRING).is_a?(Array) + end + x.report("tokenizer2") do + tokenizer2(STRING).is_a?(Array) + end + x.report("tokenizer3") do + tokenizer3(STRING).is_a?(Array) + end + x.report("tokenizer4") do + tokenizer4(STRING).is_a?(Array) + end + + x.compare! +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select.rb new file mode 100644 index 0000000000..66d908b8ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select.rb @@ -0,0 +1,26 @@ +require 'benchmark' +require_relative "../../lib/public_suffix" + +JP = "www.yokoshibahikari.chiba.jp" + +TIMES = (ARGV.first || 50_000).to_i + +# Initialize +class PublicSuffix::List + public :select +end +PublicSuffixList = PublicSuffix::List.default +PublicSuffixList.select("example.jp") +PublicSuffixList.find("example.jp") + +Benchmark.bmbm(25) do |x| + x.report("JP select") do + TIMES.times { PublicSuffixList.select(JP) } + end + x.report("JP find") do + TIMES.times { PublicSuffixList.find(JP) } + end + # x.report("JP (noprivate)") do + # TIMES.times { PublicSuffixList.find(JP, ignore_private: true) != nil } + # end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select_incremental.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select_incremental.rb new file mode 100644 index 0000000000..f002c827b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_select_incremental.rb @@ -0,0 +1,25 @@ +require 'benchmark' +require_relative "../../lib/public_suffix" + +JP = "www.yokoshibahikari.chiba.jp" + +TIMES = (ARGV.first || 50_000).to_i + +# Initialize +class PublicSuffix::List + public :select +end +PublicSuffixList = PublicSuffix::List.default +PublicSuffixList.select("example.jp") + +Benchmark.bmbm(25) do |x| + x.report("select jp") do + TIMES.times { PublicSuffixList.select("jp") } + end + x.report("select example.jp") do + TIMES.times { PublicSuffixList.select("example.jp") } + end + x.report("select www.example.jp") do + TIMES.times { PublicSuffixList.select("www.example.jp") } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_valid.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_valid.rb new file mode 100644 index 0000000000..a484451fff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/benchmarks/bm_valid.rb @@ -0,0 +1,101 @@ +require 'benchmark' +require_relative "../../lib/public_suffix" + +NAME_SHORT = "example.de" +NAME_MEDIUM = "www.subdomain.example.de" +NAME_LONG = "one.two.three.four.five.example.de" +NAME_WILD = "one.two.three.four.five.example.bd" +NAME_EXCP = "one.two.three.four.five.www.ck" + +IAAA = "www.example.ac" +IZZZ = "www.example.zone" + +PAAA = "one.two.three.four.five.example.beep.pl" +PZZZ = "one.two.three.four.five.example.now.sh" + +JP = "www.yokoshibahikari.chiba.jp" +IT = "www.example.it" +COM = "www.example.com" + +TIMES = (ARGV.first || 50_000).to_i + +# Initialize +PublicSuffix.valid?("example.com") + +Benchmark.bmbm(25) do |x| + x.report("NAME_SHORT") do + TIMES.times { PublicSuffix.valid?(NAME_SHORT) == true } + end + x.report("NAME_SHORT (noprivate)") do + TIMES.times { PublicSuffix.valid?(NAME_SHORT, ignore_private: true) == true } + end + x.report("NAME_MEDIUM") do + TIMES.times { PublicSuffix.valid?(NAME_MEDIUM) == true } + end + x.report("NAME_MEDIUM (noprivate)") do + TIMES.times { PublicSuffix.valid?(NAME_MEDIUM, ignore_private: true) == true } + end + x.report("NAME_LONG") do + TIMES.times { PublicSuffix.valid?(NAME_LONG) == true } + end + x.report("NAME_LONG (noprivate)") do + TIMES.times { PublicSuffix.valid?(NAME_LONG, ignore_private: true) == true } + end + x.report("NAME_WILD") do + TIMES.times { PublicSuffix.valid?(NAME_WILD) == true } + end + x.report("NAME_WILD (noprivate)") do + TIMES.times { PublicSuffix.valid?(NAME_WILD, ignore_private: true) == true } + end + x.report("NAME_EXCP") do + TIMES.times { PublicSuffix.valid?(NAME_EXCP) == true } + end + x.report("NAME_EXCP (noprivate)") do + TIMES.times { PublicSuffix.valid?(NAME_EXCP, ignore_private: true) == true } + end + + x.report("IAAA") do + TIMES.times { PublicSuffix.valid?(IAAA) == true } + end + x.report("IAAA (noprivate)") do + TIMES.times { PublicSuffix.valid?(IAAA, ignore_private: true) == true } + end + x.report("IZZZ") do + TIMES.times { PublicSuffix.valid?(IZZZ) == true } + end + x.report("IZZZ (noprivate)") do + TIMES.times { PublicSuffix.valid?(IZZZ, ignore_private: true) == true } + end + + x.report("PAAA") do + TIMES.times { PublicSuffix.valid?(PAAA) == true } + end + x.report("PAAA (noprivate)") do + TIMES.times { PublicSuffix.valid?(PAAA, ignore_private: true) == true } + end + x.report("PZZZ") do + TIMES.times { PublicSuffix.valid?(PZZZ) == true } + end + x.report("PZZZ (noprivate)") do + TIMES.times { PublicSuffix.valid?(PZZZ, ignore_private: true) == true } + end + + x.report("JP") do + TIMES.times { PublicSuffix.valid?(JP) == true } + end + x.report("JP (noprivate)") do + TIMES.times { PublicSuffix.valid?(JP, ignore_private: true) == true } + end + x.report("IT") do + TIMES.times { PublicSuffix.valid?(IT) == true } + end + x.report("IT (noprivate)") do + TIMES.times { PublicSuffix.valid?(IT, ignore_private: true) == true } + end + x.report("COM") do + TIMES.times { PublicSuffix.valid?(COM) == true } + end + x.report("COM (noprivate)") do + TIMES.times { PublicSuffix.valid?(COM, ignore_private: true) == true } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/domain_profiler.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/domain_profiler.rb new file mode 100644 index 0000000000..1ed10500d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/domain_profiler.rb @@ -0,0 +1,12 @@ +$LOAD_PATH.unshift File.expand_path("../../lib", __dir__) + +require "memory_profiler" +require "public_suffix" + +PublicSuffix::List.default + +report = MemoryProfiler.report do + PublicSuffix.domain("www.example.com") +end + +report.pretty_print diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler.rb new file mode 100644 index 0000000000..53d28ebcac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler.rb @@ -0,0 +1,12 @@ +$LOAD_PATH.unshift File.expand_path("../../lib", __dir__) + +require "memory_profiler" +require "public_suffix" + +PublicSuffix::List.default + +report = MemoryProfiler.report do + PublicSuffix::List.default.find("www.example.com") +end + +report.pretty_print diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler_jp.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler_jp.rb new file mode 100644 index 0000000000..65c13fea7f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/find_profiler_jp.rb @@ -0,0 +1,12 @@ +$LOAD_PATH.unshift File.expand_path("../../lib", __dir__) + +require "memory_profiler" +require "public_suffix" + +PublicSuffix::List.default + +report = MemoryProfiler.report do + PublicSuffix::List.default.find("a.b.ide.kyoto.jp") +end + +report.pretty_print diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/initialization_profiler.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/initialization_profiler.rb new file mode 100644 index 0000000000..008b1e757c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/initialization_profiler.rb @@ -0,0 +1,11 @@ +$LOAD_PATH.unshift File.expand_path("../../lib", __dir__) + +require "memory_profiler" +require "public_suffix" + +report = MemoryProfiler.report do + PublicSuffix::List.default +end + +report.pretty_print +# report.pretty_print(to_file: 'profiler-%s-%d.txt' % [ARGV[0], Time.now.to_i]) diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/list_profsize.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/list_profsize.rb new file mode 100644 index 0000000000..0b98b4b385 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/list_profsize.rb @@ -0,0 +1,11 @@ +$LOAD_PATH.unshift File.expand_path("../../lib", __dir__) + +require_relative "object_binsize" +require "public_suffix" + +list = PublicSuffix::List.default +puts "#{list.size} rules:" + +prof = ObjectBinsize.new +prof.report(PublicSuffix::List.default, label: "PublicSuffix::List size") +prof.report(PublicSuffix::List.default.instance_variable_get(:@rules), label: "Size of rules") diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/object_binsize.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/object_binsize.rb new file mode 100644 index 0000000000..dc60bdb469 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/profilers/object_binsize.rb @@ -0,0 +1,57 @@ +require 'tempfile' + +# A very simple memory profiles that checks the full size of a variable +# by serializing into a binary file. +# +# Yes, I know this is very rough, but there are cases where ObjectSpace.memsize_of +# doesn't cooperate, and this is one of the possible workarounds. +# +# For certain cases, it works (TM). +class ObjectBinsize + + def measure(var, label: nil) + dump(var, label: label) + end + + def report(var, label: nil, padding: 10) + file = measure(var, label: label) + + size = format_integer(file.size) + name = label || File.basename(file.path) + printf("%#{padding}s %s\n", size, name) + end + + private + + def dump(var, **args) + file = Tempfile.new(args[:label].to_s) + file.write(Marshal.dump(var)) + file + ensure + file.close + end + + def format_integer(int) + int.to_s.reverse.gsub(/...(?=.)/, '\&,').reverse + end + +end + +if __FILE__ == $0 + prof = ObjectBinsize.new + + prof.report(nil, label: "nil") + prof.report(false, label: "false") + prof.report(true, label: "true") + prof.report(0, label: "integer") + prof.report("", label: "empty string") + prof.report({}, label: "empty hash") + prof.report({}, label: "empty array") + + prof.report({ foo: "1" }, label: "hash 1 item (symbol)") + prof.report({ foo: "1", bar: 2 }, label: "hash 2 items (symbol)") + prof.report({ "foo" => "1" }, label: "hash 1 item (string)") + prof.report({ "foo" => "1", "bar" => 2 }, label: "hash 2 items (string)") + + prof.report("big string" * 200, label: "big string * 200") +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/psl_test.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/psl_test.rb new file mode 100644 index 0000000000..004eb26e0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/psl_test.rb @@ -0,0 +1,49 @@ +require "test_helper" +require "public_suffix" + +# This test runs against the current PSL file and ensures +# the definitions satisfies the test suite. +class PslTest < Minitest::Test + + ROOT = File.expand_path("..", __dir__) + + # rubocop:disable Security/Eval + def self.tests + File.readlines(File.join(ROOT, "test/tests.txt")).map do |line| + line = line.strip + next if line.empty? + next if line.start_with?("//") + input, output = line.split(", ") + + # handle the case of eval("null"), it must be eval("nil") + input = "nil" if input == "null" + output = "nil" if output == "null" + + input = eval(input) + output = eval(output) + [input, output] + end + end + # rubocop:enable Security/Eval + + + def test_valid + # Parse the PSL and run the tests + data = File.read(PublicSuffix::List::DEFAULT_LIST_PATH) + PublicSuffix::List.default = PublicSuffix::List.parse(data) + + failures = [] + self.class.tests.each do |input, output| + # Punycode domains are not supported ATM + next if input =~ /xn\-\-/ + + domain = PublicSuffix.domain(input) rescue nil + failures << [input, output, domain] if output != domain + end + + message = "The following #{failures.size} tests fail:\n" + failures.each { |i, o, d| message += "Expected %s to be %s, got %s\n" % [i.inspect, o.inspect, d.inspect] } + assert_equal 0, failures.size, message + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/test_helper.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/test_helper.rb new file mode 100644 index 0000000000..55a9643b49 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/test_helper.rb @@ -0,0 +1,13 @@ +if ENV["COVERALL"] + require "coveralls" + Coveralls.wear! +end + +require "minitest/autorun" +require "minitest/reporters" +require "mocha/setup" + +Minitest::Reporters.use! Minitest::Reporters::DefaultReporter.new(color: true) + +$LOAD_PATH.unshift File.expand_path("../lib", __dir__) +require "public_suffix" diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/tests.txt b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/tests.txt new file mode 100644 index 0000000000..b11150ab85 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/tests.txt @@ -0,0 +1,98 @@ +// Any copyright is dedicated to the Public Domain. +// http://creativecommons.org/publicdomain/zero/1.0/ + +// null input +null, null +// Mixed case +'COM', null +'example.COM', 'example.com' +'WwW.example.COM', 'example.com' +// Leading dot +'.com', null +'.example', null +'.example.com', null +'.example.example', null +// Unlisted TLD +'example', null +'example.example', 'example.example' +'b.example.example', 'example.example' +'a.b.example.example', 'example.example' +// Listed, but non-Internet, TLD +//'local', null +//'example.local', null +//'b.example.local', null +//'a.b.example.local', null +// TLD with only 1 rule +'biz', null +'domain.biz', 'domain.biz' +'b.domain.biz', 'domain.biz' +'a.b.domain.biz', 'domain.biz' +// TLD with some 2-level rules +'com', null +'example.com', 'example.com' +'b.example.com', 'example.com' +'a.b.example.com', 'example.com' +'uk.com', null +'example.uk.com', 'example.uk.com' +'b.example.uk.com', 'example.uk.com' +'a.b.example.uk.com', 'example.uk.com' +'test.ac', 'test.ac' +// TLD with only 1 (wildcard) rule +'mm', null +'c.mm', null +'b.c.mm', 'b.c.mm' +'a.b.c.mm', 'b.c.mm' +// More complex TLD +'jp', null +'test.jp', 'test.jp' +'www.test.jp', 'test.jp' +'ac.jp', null +'test.ac.jp', 'test.ac.jp' +'www.test.ac.jp', 'test.ac.jp' +'kyoto.jp', null +'test.kyoto.jp', 'test.kyoto.jp' +'ide.kyoto.jp', null +'b.ide.kyoto.jp', 'b.ide.kyoto.jp' +'a.b.ide.kyoto.jp', 'b.ide.kyoto.jp' +'c.kobe.jp', null +'b.c.kobe.jp', 'b.c.kobe.jp' +'a.b.c.kobe.jp', 'b.c.kobe.jp' +'city.kobe.jp', 'city.kobe.jp' +'www.city.kobe.jp', 'city.kobe.jp' +// TLD with a wildcard rule and exceptions +'ck', null +'test.ck', null +'b.test.ck', 'b.test.ck' +'a.b.test.ck', 'b.test.ck' +'www.ck', 'www.ck' +'www.www.ck', 'www.ck' +// US K12 +'us', null +'test.us', 'test.us' +'www.test.us', 'test.us' +'ak.us', null +'test.ak.us', 'test.ak.us' +'www.test.ak.us', 'test.ak.us' +'k12.ak.us', null +'test.k12.ak.us', 'test.k12.ak.us' +'www.test.k12.ak.us', 'test.k12.ak.us' +// IDN labels +'食狮.com.cn', '食狮.com.cn' +'食狮.公司.cn', '食狮.公司.cn' +'www.食狮.公司.cn', '食狮.公司.cn' +'shishi.公司.cn', 'shishi.公司.cn' +'公司.cn', null +'食狮.中国', '食狮.中国' +'www.食狮.中国', '食狮.中国' +'shishi.中国', 'shishi.中国' +'中国', null +// Same as above, but punycoded +'xn--85x722f.com.cn', 'xn--85x722f.com.cn' +'xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn' +'www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn' +'shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn' +'xn--55qx5d.cn', null +'xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s' +'www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s' +'shishi.xn--fiqs8s', 'shishi.xn--fiqs8s' +'xn--fiqs8s', null diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/domain_test.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/domain_test.rb new file mode 100644 index 0000000000..509ce1b5c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/domain_test.rb @@ -0,0 +1,104 @@ +require "test_helper" + +class PublicSuffix::DomainTest < Minitest::Test + + def setup + @klass = PublicSuffix::Domain + end + + # Tokenizes given input into labels. + def test_self_name_to_labels + assert_equal %w( someone spaces live com ), + PublicSuffix::Domain.name_to_labels("someone.spaces.live.com") + assert_equal %w( leontina23samiko wiki zoho com ), + PublicSuffix::Domain.name_to_labels("leontina23samiko.wiki.zoho.com") + end + + # Converts input into String. + def test_self_name_to_labels_converts_input_to_string + assert_equal %w( someone spaces live com ), + PublicSuffix::Domain.name_to_labels(:"someone.spaces.live.com") + end + + + def test_initialize_with_tld + domain = @klass.new("com") + assert_equal "com", domain.tld + assert_nil domain.sld + assert_nil domain.trd + end + + def test_initialize_with_tld_and_sld + domain = @klass.new("com", "google") + assert_equal "com", domain.tld + assert_equal "google", domain.sld + assert_nil domain.trd + end + + def test_initialize_with_tld_and_sld_and_trd + domain = @klass.new("com", "google", "www") + assert_equal "com", domain.tld + assert_equal "google", domain.sld + assert_equal "www", domain.trd + end + + + def test_to_s + assert_equal "com", @klass.new("com").to_s + assert_equal "google.com", @klass.new("com", "google").to_s + assert_equal "www.google.com", @klass.new("com", "google", "www").to_s + end + + def test_to_a + assert_equal [nil, nil, "com"], @klass.new("com").to_a + assert_equal [nil, "google", "com"], @klass.new("com", "google").to_a + assert_equal ["www", "google", "com"], @klass.new("com", "google", "www").to_a + end + + + def test_tld + assert_equal "com", @klass.new("com", "google", "www").tld + end + + def test_sld + assert_equal "google", @klass.new("com", "google", "www").sld + end + + def test_trd + assert_equal "www", @klass.new("com", "google", "www").trd + end + + + def test_name + assert_equal "com", @klass.new("com").name + assert_equal "google.com", @klass.new("com", "google").name + assert_equal "www.google.com", @klass.new("com", "google", "www").name + end + + def test_domain + assert_nil @klass.new("com").domain + assert_nil @klass.new("tldnotlisted").domain + assert_equal "google.com", @klass.new("com", "google").domain + assert_equal "google.tldnotlisted", @klass.new("tldnotlisted", "google").domain + assert_equal "google.com", @klass.new("com", "google", "www").domain + assert_equal "google.tldnotlisted", @klass.new("tldnotlisted", "google", "www").domain + end + + def test_subdomain + assert_nil @klass.new("com").subdomain + assert_nil @klass.new("tldnotlisted").subdomain + assert_nil @klass.new("com", "google").subdomain + assert_nil @klass.new("tldnotlisted", "google").subdomain + assert_equal "www.google.com", @klass.new("com", "google", "www").subdomain + assert_equal "www.google.tldnotlisted", @klass.new("tldnotlisted", "google", "www").subdomain + end + + + def test_domain_question + assert !@klass.new("com").domain? + assert @klass.new("com", "example").domain? + assert @klass.new("com", "example", "www").domain? + assert @klass.new("tldnotlisted", "example").domain? + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/errors_test.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/errors_test.rb new file mode 100644 index 0000000000..47ac592e1a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/errors_test.rb @@ -0,0 +1,23 @@ +require "test_helper" + +class ErrorsTest < Minitest::Test + + # Inherits from StandardError + def test_error_inheritance + assert_kind_of StandardError, + PublicSuffix::Error.new + end + + # Inherits from PublicSuffix::Error + def test_domain_invalid_inheritance + assert_kind_of PublicSuffix::Error, + PublicSuffix::DomainInvalid.new + end + + # Inherits from PublicSuffix::DomainInvalid + def test_domain_not_allowed_inheritance + assert_kind_of PublicSuffix::DomainInvalid, + PublicSuffix::DomainNotAllowed.new + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/list_test.rb b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/list_test.rb new file mode 100644 index 0000000000..693945d1ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/unit/list_test.rb @@ -0,0 +1,239 @@ +require "test_helper" + +class PublicSuffix::ListTest < Minitest::Test + + def setup + @list = PublicSuffix::List.new + end + + def teardown + PublicSuffix::List.default = nil + end + + + def test_initialize + assert_instance_of PublicSuffix::List, @list + assert_equal 0, @list.size + end + + + def test_equality_with_self + list = PublicSuffix::List.new + assert_equal list, list + end + + def test_equality_with_internals + rule = PublicSuffix::Rule.factory("com") + assert_equal PublicSuffix::List.new.add(rule), PublicSuffix::List.new.add(rule) + end + + def test_each_without_block + list = PublicSuffix::List.parse(< 1.5, :no_defer => true } + +fsevent = FSEvent.new +fsevent.watch paths, options do |directories| + puts "Detected change inside: #{directories.inspect}" +end +fsevent.run +``` + +### Multiple paths and additional options as an Array + +```ruby +require 'rb-fsevent' + +paths = ['/tmp/path/one', '/tmp/path/two', Dir.pwd] +options = ['--latency', 1.5, '--no-defer'] + +fsevent = FSEvent.new +fsevent.watch paths, options do |directories| + puts "Detected change inside: #{directories.inspect}" +end +fsevent.run +``` + +### Using _full_ event information + +```ruby +require 'rb-fsevent' +fsevent = FSEvent.new +fsevent.watch Dir.pwd do |paths, event_meta| + event_meta.events.each do |event| + puts "event ID: #{event.id}" + puts "path: #{event.path}" + puts "c flags: #{event.cflags}" + puts "named flags: #{event.flags.join(', ')}" + # named flags will include strings such as `ItemInodeMetaMod` or `OwnEvent` + end +end +fsevent.run +``` + +## Options + +When defining options using a hash or hash-like object, it gets checked for validity and converted to the appropriate fsevent\_watch commandline arguments array when the FSEvent class is instantiated. This is obviously the safest and preferred method of passing in options. + +You may, however, choose to pass in an array of commandline arguments as your options value and it will be passed on, unmodified, to the fsevent\_watch binary when called. + +So far, the following options are supported: + +* :latency => 0.5 # in seconds +* :no\_defer => true +* :watch\_root => true +* :since\_when => 18446744073709551615 # an FSEventStreamEventId +* :file\_events => true + +### Latency + +The :latency parameter determines how long the service should wait after the first event before passing that information along to the client. If your latency is set to 4 seconds, and 300 changes occur in the first three, then the callback will be fired only once. If latency is set to 0.1 in the exact same scenario, you will see that callback fire somewhere closer to between 25 and 30 times. + +Setting a higher latency value allows for more effective temporal coalescing, resulting in fewer callbacks and greater overall efficiency... at the cost of apparent responsiveness. Setting this to a reasonably high value (and NOT setting :no\_defer) is particularly well suited for background, daemon, or batch processing applications. + +Implementation note: It appears that FSEvents will only coalesce events from a maximum of 32 distinct subpaths, making the above completely accurate only when events are to fewer than 32 subpaths. Creating 300 files in one directory, for example, or 30 files in 10 subdirectories, but not 300 files within 300 subdirectories. In the latter case, you may receive 31 callbacks in one go after the latency period. As this appears to be an implementation detail, the number could potentially differ across OS revisions. It is entirely possible that this number is somehow configurable, but I have not yet discovered an accepted method of doing so. + +### NoDefer + +The :no\_defer option changes the behavior of the latency parameter completely. Rather than waiting for $latency period of time before sending along events in an attempt to coalesce a potential deluge ahead of time, that first event is sent along to the client immediately and is followed by a $latency period of silence before sending along any additional events that occurred within that period. + +This behavior is particularly useful for interactive applications where that feeling of apparent responsiveness is most important, but you still don't want to get overwhelmed by a series of events that occur in rapid succession. + +### WatchRoot + +The :watch\_root option allows for catching the scenario where you start watching "~/src/demo\_project" and either it is later renamed to "~/src/awesome\_sauce\_3000" or the path changes in such a manner that the original directory is now at "~/clients/foo/iteration4/demo\_project". + +Unfortunately, while this behavior is somewhat supported in the fsevent\_watch binary built as part of this project, support for passing across detailed metadata is not (yet). As a result, you would not receive the appropriate RootChanged event and be able to react appropriately. Also, since the C code doesn't open watched directories and retain that file descriptor as part of path-specific callback metadata, we are unable to issue an F\_GETPATH fcntl() to determine the directory's new path. + +Please do not use this option until proper support is added (or, even better, add it and submit a pull request). + +### SinceWhen + +The FSEventStreamEventId passed in to :since\_when is used as a base for reacting to historic events. Unfortunately, not only is the metadata for transitioning from historic to live events not currently passed along, but it is incorrectly passed as a change event on the root path, and only per-host event streams are currently supported. When using per-host event streams, the event IDs are not guaranteed to be unique or contiguous when shared volumes (firewire/USB/net/etc) are used on multiple macs. + +Please do not use this option until proper support is added, unless it's acceptable for you to receive that one fake event that's handled incorrectly when events transition from historical to live. Even in that scenario, there's no metadata available for determining the FSEventStreamEventId of the last received event. + +WARNING: passing in 0 as the parameter to :since\_when will return events for every directory modified since "the beginning of time". + +### FileEvents ### + +Prepare yourself for an obscene number of callbacks. Realistically, an "Atomic Save" could easily fire maybe 6 events for the combination of creating the new file, changing metadata/permissions, writing content, swapping out the old file for the new may itself result in multiple events being fired, and so forth. By the time you get the event for the temporary file being created as part of the atomic save, it will already be gone and swapped with the original file. This and issues of a similar nature have prevented me from adding the option to the ruby code despite the fsevent\_watch binary supporting file level events for quite some time now. Mountain Lion seems to be better at coalescing needless events, but that might just be my imagination. + +## Debugging output + +If the gem is re-compiled with the environment variable FWDEBUG set, then fsevent\_watch will be built with its various DEBUG sections defined, and the output to STDERR is truly verbose (and hopefully helpful in debugging your application and not just fsevent\_watch itself). If enough people find this to be directly useful when developing code that makes use of rb-fsevent, then it wouldn't be hard to clean this up and make it a feature enabled by a commandline argument instead. Until somebody files an issue, however, I will assume otherwise. + + append_path called for: /tmp/moo/cow/ + resolved path to: /private/tmp/moo/cow + + config.sinceWhen 18446744073709551615 + config.latency 0.300000 + config.flags 00000000 + config.paths + /private/tmp/moo/cow + + FSEventStreamRef @ 0x100108540: + allocator = 0x7fff705a4ee0 + callback = 0x10000151e + context = {0, 0x0, 0x0, 0x0, 0x0} + numPathsToWatch = 1 + pathsToWatch = 0x7fff705a4ee0 + pathsToWatch[0] = '/private/tmp/moo/cow' + latestEventId = -1 + latency = 300000 (microseconds) + flags = 0x00000000 + runLoop = 0x0 + runLoopMode = 0x0 + + FSEventStreamCallback fired! + numEvents: 32 + event path: /private/tmp/moo/cow/1/a/ + event flags: 00000000 + event ID: 1023767 + event path: /private/tmp/moo/cow/1/b/ + event flags: 00000000 + event ID: 1023782 + event path: /private/tmp/moo/cow/1/c/ + event flags: 00000000 + event ID: 1023797 + event path: /private/tmp/moo/cow/1/d/ + event flags: 00000000 + event ID: 1023812 + [etc] + + +## Development + +* Source hosted at [GitHub](http://github.com/thibaudgg/rb-fsevent) +* Report issues/Questions/Feature requests on [GitHub Issues](http://github.com/thibaudgg/rb-fsevent/issues) + +Pull requests are quite welcome! Please ensure that your commits are in a topic branch for each individual changeset that can be reasonably isolated. It is also important to ensure that your changes are well tested... whether that means new tests, modified tests, or fixing a scenario where the existing tests currently fail. If you have rbenv and ruby-build, we have a helper task for running the testsuite in all of them: + + rake spec:portability + +The list of tested targets is currently: + + %w[2.4.1 rbx-3.72 jruby-1.7.26 jruby-9.1.8.0] + +## Authors + +* [Travis Tilley](http://github.com/ttilley) +* [Thibaud Guillaume-Gentil](http://github.com/thibaudgg) +* [Andrey Tarantsov](https://github.com/andreyvit) diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Rakefile b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Rakefile new file mode 100644 index 0000000000..53a08a14f0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/Rakefile @@ -0,0 +1,33 @@ +# -*- encoding: utf-8 -*- +require 'bundler' +Bundler::GemHelper.install_tasks + +require 'rspec/core/rake_task' +RSpec::Core::RakeTask.new(:spec) +task :default => :spec + +namespace(:spec) do + desc "Run all specs on multiple ruby versions" + task(:portability) do + versions = %w[2.4.1 rbx-3.72 jruby-1.7.26 jruby-9.1.8.0] + versions.each do |version| + # system <<-BASH + # bash -c 'source ~/.rvm/scripts/rvm; + # rvm #{version}; + # echo "--------- version #{version} ----------\n"; + # bundle install; + # rake spec' + # BASH + system <<-BASH + bash -c 'export PATH="$HOME/.rbenv/bin:$PATH"; + [[ `which rbenv` ]] && eval "$(rbenv init -)"; + [[ ! -a $HOME/.rbenv/versions/#{version} ]] && rbenv install #{version}; + rbenv shell #{version}; + rbenv which bundle 2> /dev/null || gem install bundler; + rm Gemfile.lock; + bundle install; + rake spec;' + BASH + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/bin/fsevent_watch b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/bin/fsevent_watch new file mode 100755 index 0000000000000000000000000000000000000000..889204f817bb1d78d27a44090b3deff259732162 GIT binary patch literal 42376 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/LICENSE b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/LICENSE new file mode 100644 index 0000000000..a35e1957dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2011-2013 Travis Tilley + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.c new file mode 100644 index 0000000000..60e3d37bd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.c @@ -0,0 +1,626 @@ +/* + * FSEventsFix + * + * Resolves a long-standing bug in realpath() that prevents FSEvents API from + * monitoring certain folders on a wide range of OS X released (10.6-10.10 at least). + * + * The underlying issue is that for some folders, realpath() call starts returning + * a path with incorrect casing (e.g. "/users/smt" instead of "/Users/smt"). + * FSEvents is case-sensitive and calls realpath() on the paths you pass in, so + * an incorrect value returned by realpath() prevents FSEvents from seeing any + * change events. + * + * See the discussion at https://github.com/thibaudgg/rb-fsevent/issues/10 about + * the history of this bug and how this library came to exist. + * + * This library uses Facebook's fishhook to replace a custom implementation of + * realpath in place of the system realpath; FSEvents will then invoke our custom + * implementation (which does not screw up the names) and will thus work correctly. + * + * Our implementation of realpath is based on the open-source implementation from + * OS X 10.10, with a single change applied (enclosed in "BEGIN WORKAROUND FOR + * OS X BUG" ... "END WORKAROUND FOR OS X BUG"). + * + * Include FSEventsFix.{h,c} into your project and call FSEventsFixInstall(). + * + * It is recommended that you install FSEventsFix on demand, using FSEventsFixIsBroken + * to check if the folder you're about to pass to FSEventStreamCreate needs the fix. + * Note that the fix must be applied before calling FSEventStreamCreate. + * + * FSEventsFixIsBroken requires a path that uses the correct case for all folder names, + * i.e. a path provided by the system APIs or constructed from folder names provided + * by the directory enumeration APIs. + * + * Copyright (c) 2015 Andrey Tarantsov + * Copyright (c) 2003 Constantin S. Svintsoff + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Based on a realpath implementation from Apple libc 498.1.7, taken from + * http://www.opensource.apple.com/source/Libc/Libc-498.1.7/stdlib/FreeBSD/realpath.c + * and provided under the following license: + * + * Copyright (c) 2003 Constantin S. Svintsoff + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include "FSEventsFix.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +const char *const FSEventsFixVersionString = "0.11.0"; + + +#pragma mark - Forward declarations + +static char *(*orig_realpath)(const char *restrict file_name, char resolved_name[PATH_MAX]); +static char *CFURL_realpath(const char *restrict file_name, char resolved_name[PATH_MAX]); +static char *FSEventsFix_realpath_wrapper(const char *restrict src, char *restrict dst); + +static void _FSEventsFixHookInstall(); +static void _FSEventsFixHookUninstall(); + + +#pragma mark - Internal state + +static dispatch_queue_t g_queue = NULL; + +static int64_t g_enable_refcount = 0; + +static bool g_in_self_test = false; +static bool g_hook_operational = false; + +static void(^g_logging_block)(FSEventsFixMessageType type, const char *message); +static FSEventsFixDebugOptions g_debug_opt = 0; + +typedef struct { + char *name; + void *replacement; + void *original; + uint hooked_symbols; +} rebinding_t; + +static rebinding_t g_rebindings[] = { + { "_realpath$DARWIN_EXTSN", (void *) &FSEventsFix_realpath_wrapper, (void *) &realpath, 0 } +}; +static const uint g_rebindings_nel = sizeof(g_rebindings) / sizeof(g_rebindings[0]); + + +#pragma mark - Logging + +static void _FSEventsFixLog(FSEventsFixMessageType type, const char *__restrict fmt, ...) __attribute__((__format__ (__printf__, 2, 3))); + +static void _FSEventsFixLog(FSEventsFixMessageType type, const char *__restrict fmt, ...) { + if (g_logging_block) { + char *message = NULL; + va_list va; + va_start(va, fmt); + vasprintf(&message, fmt, va); + va_end(va); + + if (message) { + if (!!(g_debug_opt & FSEventsFixDebugOptionLogToStderr)) { + fprintf(stderr, "FSEventsFix: %s\n", message); + } + if (g_logging_block) { + g_logging_block(type, message); + } + free(message); + } + } +} + + +#pragma mark - API + +void _FSEventsFixInitialize() { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + g_queue = dispatch_queue_create("FSEventsFix", DISPATCH_QUEUE_SERIAL); + }); +} + +void FSEventsFixConfigure(FSEventsFixDebugOptions debugOptions, void(^loggingBlock)(FSEventsFixMessageType severity, const char *message)) { + _FSEventsFixInitialize(); + loggingBlock = Block_copy(loggingBlock); + dispatch_sync(g_queue, ^{ + g_debug_opt = debugOptions; + g_logging_block = loggingBlock; + }); +} + +// Must be called from the private serial queue. +void _FSEventsFixSelfTest() { + g_in_self_test = true; + g_hook_operational = false; + static char result[1024]; + realpath("/Etc/__!FSEventsFixSelfTest!__", result); + g_in_self_test = false; +} + +void FSEventsFixEnable() { + _FSEventsFixInitialize(); + dispatch_sync(g_queue, ^{ + if (++g_enable_refcount == 1) { + orig_realpath = dlsym(RTLD_DEFAULT, "realpath"); + _FSEventsFixHookInstall(); + _FSEventsFixSelfTest(); + if (g_hook_operational) { + _FSEventsFixLog(FSEventsFixMessageTypeStatusChange, "Enabled"); + } else { + _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Failed to enable (hook not called)"); + } + } + }); +} + +void FSEventsFixDisable() { + _FSEventsFixInitialize(); + dispatch_sync(g_queue, ^{ + if (g_enable_refcount == 0) { + abort(); + } + if (--g_enable_refcount == 0) { + _FSEventsFixHookUninstall(); + _FSEventsFixSelfTest(); + if (!g_hook_operational) { + _FSEventsFixLog(FSEventsFixMessageTypeStatusChange, "Disabled"); + } else { + _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Failed to disable (hook still called)"); + } + } + }); +} + +bool FSEventsFixIsOperational() { + _FSEventsFixInitialize(); + __block bool result = false; + dispatch_sync(g_queue, ^{ + result = g_hook_operational; + }); + return result; +} + +bool _FSEventsFixIsBroken_noresolve(const char *resolved) { + if (!!(g_debug_opt & FSEventsFixDebugOptionSimulateBroken)) { + if (strstr(resolved, FSEventsFixSimulatedBrokenFolderMarker)) { + return true; + } + } + + char *reresolved = realpath(resolved, NULL); + if (reresolved) { + bool broken = (0 != strcmp(resolved, reresolved)); + free(reresolved); + return broken; + } else { + return true; + } +} + +bool FSEventsFixIsBroken(const char *path) { + char *resolved = CFURL_realpath(path, NULL); + if (!resolved) { + return true; + } + bool broken = _FSEventsFixIsBroken_noresolve(resolved); + free(resolved); + return broken; +} + +char *FSEventsFixCopyRootBrokenFolderPath(const char *inpath) { + if (!FSEventsFixIsBroken(inpath)) { + return NULL; + } + + // get a mutable copy of an absolute path + char *path = CFURL_realpath(inpath, NULL); + if (!path) { + return NULL; + } + + for (;;) { + char *sep = strrchr(path, '/'); + if ((sep == NULL) || (sep == path)) { + break; + } + *sep = 0; + if (!_FSEventsFixIsBroken_noresolve(path)) { + *sep = '/'; + break; + } + } + + return path; +} + +static void _FSEventsFixAttemptRepair(const char *folder) { + int rv = rename(folder, folder); + + if (!!(g_debug_opt & FSEventsFixDebugOptionSimulateRepair)) { + const char *pos = strstr(folder, FSEventsFixSimulatedBrokenFolderMarker); + if (pos) { + char *fixed = strdup(folder); + fixed[pos - folder] = 0; + strcat(fixed, pos + strlen(FSEventsFixSimulatedBrokenFolderMarker)); + + rv = rename(folder, fixed); + free(fixed); + } + } + + if (rv != 0) { + if (errno == EPERM) { + _FSEventsFixLog(FSEventsFixMessageTypeResult, "Permission error when trying to repair '%s'", folder); + } else { + _FSEventsFixLog(FSEventsFixMessageTypeExpectedFailure, "Unknown error when trying to repair '%s': errno = %d", folder, errno); + } + } +} + +FSEventsFixRepairStatus FSEventsFixRepairIfNeeded(const char *inpath) { + char *root = FSEventsFixCopyRootBrokenFolderPath(inpath); + if (root == NULL) { + return FSEventsFixRepairStatusNotBroken; + } + + for (;;) { + _FSEventsFixAttemptRepair(root); + char *newRoot = FSEventsFixCopyRootBrokenFolderPath(inpath); + if (newRoot == NULL) { + _FSEventsFixLog(FSEventsFixMessageTypeResult, "Repaired '%s' in '%s'", root, inpath); + free(root); + return FSEventsFixRepairStatusRepaired; + } + if (0 == strcmp(root, newRoot)) { + _FSEventsFixLog(FSEventsFixMessageTypeResult, "Failed to repair '%s' in '%s'", root, inpath); + free(root); + free(newRoot); + return FSEventsFixRepairStatusFailed; + } + _FSEventsFixLog(FSEventsFixMessageTypeResult, "Partial success, repaired '%s' in '%s'", root, inpath); + free(root); + root = newRoot; + } +} + + +#pragma mark - FSEventsFix realpath wrapper + +static char *FSEventsFix_realpath_wrapper(const char * __restrict src, char * __restrict dst) { + if (g_in_self_test) { + if (strstr(src, "__!FSEventsFixSelfTest!__")) { + g_hook_operational = true; + } + } + + // CFURL_realpath doesn't support putting where resolution failed into the + // dst buffer, so we call the original realpath here first and if it gets a + // result, replace that with the output of CFURL_realpath. that way all the + // features of the original realpath are available. + char *rv = NULL; + char *orv = orig_realpath(src, dst); + if (orv != NULL) { rv = CFURL_realpath(src, dst); } + + if (!!(g_debug_opt & FSEventsFixDebugOptionLogCalls)) { + char *result = rv ?: dst; + _FSEventsFixLog(FSEventsFixMessageTypeCall, "realpath(%s) => %s\n", src, result); + } + + if (!!(g_debug_opt & FSEventsFixDebugOptionUppercaseReturn)) { + char *result = rv ?: dst; + if (result) { + for (char *pch = result; *pch; ++pch) { + *pch = (char)toupper(*pch); + } + } + } + + return rv; +} + + +#pragma mark - realpath + +// naive implementation of realpath on top of CFURL +// NOTE: doesn't quite support the full range of errno results one would +// expect here, in part because some of these functions just return a boolean, +// and in part because i'm not dealing with messy CFErrorRef objects and +// attempting to translate those to sane errno values. +// NOTE: the OSX realpath will return _where_ resolution failed in resolved_name +// if passed in and return NULL. we can't properly support that extension here +// since the resolution happens entirely behind the scenes to us in CFURL. +static char* CFURL_realpath(const char *file_name, char resolved_name[PATH_MAX]) +{ + char* resolved; + CFURLRef url1; + CFURLRef url2; + CFStringRef path; + + if (file_name == NULL) { + errno = EINVAL; + return (NULL); + } + +#if __DARWIN_UNIX03 + if (*file_name == 0) { + errno = ENOENT; + return (NULL); + } +#endif + + // create a buffer to store our result if we weren't passed one + if (!resolved_name) { + if ((resolved = malloc(PATH_MAX)) == NULL) return (NULL); + } else { + resolved = resolved_name; + } + + url1 = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8*)file_name, (CFIndex)strlen(file_name), false); + if (url1 == NULL) { goto error_return; } + + url2 = CFURLCopyAbsoluteURL(url1); + CFRelease(url1); + if (url2 == NULL) { goto error_return; } + + url1 = CFURLCreateFileReferenceURL(NULL, url2, NULL); + CFRelease(url2); + if (url1 == NULL) { goto error_return; } + + // if there are multiple hard links to the original path, this may end up + // being _completely_ different from what was intended + url2 = CFURLCreateFilePathURL(NULL, url1, NULL); + CFRelease(url1); + if (url2 == NULL) { goto error_return; } + + path = CFURLCopyFileSystemPath(url2, kCFURLPOSIXPathStyle); + CFRelease(url2); + if (path == NULL) { goto error_return; } + + bool success = CFStringGetCString(path, resolved, PATH_MAX, kCFStringEncodingUTF8); + CFRelease(path); + if (!success) { goto error_return; } + + return resolved; + +error_return: + if (!resolved_name) { + // we weren't passed in an output buffer and created our own. free it + int e = errno; + free(resolved); + errno = e; + } + return (NULL); +} + + +#pragma mark - fishhook + +// Copyright (c) 2013, Facebook, Inc. +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name Facebook nor the names of its contributors may be used to +// endorse or promote products derived from this software without specific +// prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#import +#import +#import +#import +#import +#import + +#ifdef __LP64__ +typedef struct mach_header_64 mach_header_t; +typedef struct segment_command_64 segment_command_t; +typedef struct section_64 section_t; +typedef struct nlist_64 nlist_t; +#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT_64 +#else +typedef struct mach_header mach_header_t; +typedef struct segment_command segment_command_t; +typedef struct section section_t; +typedef struct nlist nlist_t; +#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT +#endif + +static volatile bool g_hook_installed = false; + +static void _FSEventsFixHookUpdateSection(section_t *section, intptr_t slide, nlist_t *symtab, char *strtab, uint32_t *indirect_symtab) +{ + uint32_t *indirect_symbol_indices = indirect_symtab + section->reserved1; + void **indirect_symbol_bindings = (void **)((uintptr_t)slide + section->addr); + for (uint i = 0; i < section->size / sizeof(void *); i++) { + uint32_t symtab_index = indirect_symbol_indices[i]; + if (symtab_index == INDIRECT_SYMBOL_ABS || symtab_index == INDIRECT_SYMBOL_LOCAL || + symtab_index == (INDIRECT_SYMBOL_LOCAL | INDIRECT_SYMBOL_ABS)) { + continue; + } + uint32_t strtab_offset = symtab[symtab_index].n_un.n_strx; + char *symbol_name = strtab + strtab_offset; + for (rebinding_t *cur = g_rebindings, *end = g_rebindings + g_rebindings_nel; cur < end; ++cur) { + if (strcmp(symbol_name, cur->name) == 0) { + if (g_hook_installed) { + if (indirect_symbol_bindings[i] != cur->replacement) { + indirect_symbol_bindings[i] = cur->replacement; + ++cur->hooked_symbols; + } + } else if (cur->original != NULL) { + if (indirect_symbol_bindings[i] == cur->replacement) { + indirect_symbol_bindings[i] = cur->original; + if (cur->hooked_symbols > 0) { + --cur->hooked_symbols; + } + } + } + goto symbol_loop; + } + } + symbol_loop:; + } +} + +static void _FSEventsFixHookUpdateImage(const struct mach_header *header, intptr_t slide) { + Dl_info info; + if (dladdr(header, &info) == 0) { + return; + } + + segment_command_t *cur_seg_cmd; + segment_command_t *linkedit_segment = NULL; + struct symtab_command* symtab_cmd = NULL; + struct dysymtab_command* dysymtab_cmd = NULL; + + uintptr_t cur = (uintptr_t)header + sizeof(mach_header_t); + for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) { + cur_seg_cmd = (segment_command_t *)cur; + if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) { + if (strcmp(cur_seg_cmd->segname, SEG_LINKEDIT) == 0) { + linkedit_segment = cur_seg_cmd; + } + } else if (cur_seg_cmd->cmd == LC_SYMTAB) { + symtab_cmd = (struct symtab_command*)cur_seg_cmd; + } else if (cur_seg_cmd->cmd == LC_DYSYMTAB) { + dysymtab_cmd = (struct dysymtab_command*)cur_seg_cmd; + } + } + + if (!symtab_cmd || !dysymtab_cmd || !linkedit_segment || + !dysymtab_cmd->nindirectsyms) { + return; + } + + // Find base symbol/string table addresses + uintptr_t linkedit_base = (uintptr_t)slide + linkedit_segment->vmaddr - linkedit_segment->fileoff; + nlist_t *symtab = (nlist_t *)(linkedit_base + symtab_cmd->symoff); + char *strtab = (char *)(linkedit_base + symtab_cmd->stroff); + + // Get indirect symbol table (array of uint32_t indices into symbol table) + uint32_t *indirect_symtab = (uint32_t *)(linkedit_base + dysymtab_cmd->indirectsymoff); + + cur = (uintptr_t)header + sizeof(mach_header_t); + for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) { + cur_seg_cmd = (segment_command_t *)cur; + if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) { + if (strcmp(cur_seg_cmd->segname, SEG_DATA) != 0) { + continue; + } + for (uint j = 0; j < cur_seg_cmd->nsects; j++) { + section_t *sect = + (section_t *)(cur + sizeof(segment_command_t)) + j; + if ((sect->flags & SECTION_TYPE) == S_LAZY_SYMBOL_POINTERS) { + _FSEventsFixHookUpdateSection(sect, slide, symtab, strtab, indirect_symtab); + } + if ((sect->flags & SECTION_TYPE) == S_NON_LAZY_SYMBOL_POINTERS) { + _FSEventsFixHookUpdateSection(sect, slide, symtab, strtab, indirect_symtab); + } + } + } + } +} + +static void _FSEventsFixHookSaveOriginals() { + for (rebinding_t *cur = g_rebindings, *end = g_rebindings + g_rebindings_nel; cur < end; ++cur) { + void *original = cur->original = dlsym(RTLD_DEFAULT, cur->name+1); + if (!original) { + const char *error = dlerror(); + _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Cannot find symbol %s, dlsym says: %s\n", cur->name, error); + } + } +} + +static void _FSEventsFixHookUpdate() { + uint32_t c = _dyld_image_count(); + for (uint32_t i = 0; i < c; i++) { + _FSEventsFixHookUpdateImage(_dyld_get_image_header(i), _dyld_get_image_vmaddr_slide(i)); + } +} + +static void _FSEventsFixHookInstall() { + static bool first_rebinding_done = false; + + if (!g_hook_installed) { + g_hook_installed = true; + + if (!first_rebinding_done) { + first_rebinding_done = true; + _FSEventsFixHookSaveOriginals(); + _dyld_register_func_for_add_image(_FSEventsFixHookUpdateImage); + } else { + _FSEventsFixHookUpdate(); + } + } +} + +static void _FSEventsFixHookUninstall() { + if (g_hook_installed) { + g_hook_installed = false; + _FSEventsFixHookUpdate(); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.h new file mode 100644 index 0000000000..b70b8800c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/FSEventsFix.h @@ -0,0 +1,105 @@ +/* + * FSEventsFix + * + * Works around a long-standing bug in realpath() that prevents FSEvents API from + * monitoring certain folders on a wide range of OS X releases (10.6-10.10 at least). + * + * The underlying issue is that for some folders, realpath() call starts returning + * a path with incorrect casing (e.g. "/users/smt" instead of "/Users/smt"). + * FSEvents is case-sensitive and calls realpath() on the paths you pass in, so + * an incorrect value returned by realpath() prevents FSEvents from seeing any + * change events. + * + * See the discussion at https://github.com/thibaudgg/rb-fsevent/issues/10 about + * the history of this bug and how this library came to exist. + * + * This library uses Facebook's fishhook to replace a custom implementation of + * realpath in place of the system realpath; FSEvents will then invoke our custom + * implementation (which does not screw up the names) and will thus work correctly. + * + * Our implementation of realpath is based on the open-source implementation from + * OS X 10.10, with a single change applied (enclosed in "BEGIN WORKAROUND FOR + * OS X BUG" ... "END WORKAROUND FOR OS X BUG"). + * + * Include FSEventsFix.{h,c} into your project and call FSEventsFixInstall(). + * + * It is recommended that you install FSEventsFix on demand, using FSEventsFixIsBroken + * to check if the folder you're about to pass to FSEventStreamCreate needs the fix. + * Note that the fix must be applied before calling FSEventStreamCreate. + * + * FSEventsFixIsBroken requires a path that uses the correct case for all folder names, + * i.e. a path provided by the system APIs or constructed from folder names provided + * by the directory enumeration APIs. + * + * See .c file for license & copyrights, but basically this is available under a mix + * of MIT and BSD licenses. + */ + +#ifndef __FSEventsFix__ +#define __FSEventsFix__ + +#include + +/// A library version string (e.g. 1.2.3) for displaying and logging purposes +extern const char *const FSEventsFixVersionString; + +/// See FSEventsFixDebugOptionSimulateBroken +#define FSEventsFixSimulatedBrokenFolderMarker "__!FSEventsBroken!__" + +typedef CF_OPTIONS(unsigned, FSEventsFixDebugOptions) { + /// Always return an uppercase string from realpath + FSEventsFixDebugOptionUppercaseReturn = 0x01, + + /// Log all calls to realpath using the logger configured via FSEventsFixConfigure + FSEventsFixDebugOptionLogCalls = 0x02, + + /// In addition to the logging block (if any), log everything to stderr + FSEventsFixDebugOptionLogToStderr = 0x08, + + /// Report paths containing FSEventsFixSimulatedBrokenFolderMarker as broken + FSEventsFixDebugOptionSimulateBroken = 0x10, + + /// Repair paths containing FSEventsFixSimulatedBrokenFolderMarker by renaming them + FSEventsFixDebugOptionSimulateRepair = 0x20, +}; + +typedef CF_ENUM(int, FSEventsFixMessageType) { + /// Call logging requested via FSEventsFixDebugOptionLogCalls + FSEventsFixMessageTypeCall, + + /// Results of actions like repair, and other pretty verbose, but notable, stuff. + FSEventsFixMessageTypeResult, + + /// Enabled/disabled status change + FSEventsFixMessageTypeStatusChange, + + /// Expected failure (treat as a warning) + FSEventsFixMessageTypeExpectedFailure, + + /// Severe failure that most likely means that the library won't work + FSEventsFixMessageTypeFatalError +}; + +typedef CF_ENUM(int, FSEventsFixRepairStatus) { + FSEventsFixRepairStatusNotBroken, + FSEventsFixRepairStatusRepaired, + FSEventsFixRepairStatusFailed, +}; + +/// Note that the logging block can be called on any dispatch queue. +void FSEventsFixConfigure(FSEventsFixDebugOptions debugOptions, void(^loggingBlock)(FSEventsFixMessageType type, const char *message)); + +void FSEventsFixEnable(); +void FSEventsFixDisable(); + +bool FSEventsFixIsOperational(); + +bool FSEventsFixIsBroken(const char *path); + +/// If the path is broken, returns a string identifying the root broken folder, +/// otherwise, returns NULL. You need to free() the returned string. +char *FSEventsFixCopyRootBrokenFolderPath(const char *path); + +FSEventsFixRepairStatus FSEventsFixRepairIfNeeded(const char *path); + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.c new file mode 100644 index 0000000000..6e033d0638 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.c @@ -0,0 +1,373 @@ +// +// TSICTString.c +// TSITString +// +// Created by Travis Tilley on 9/27/11. +// + +#include "TSICTString.h" + + +const char* const TNetstringTypes = ",#^!~}]Z"; +const char* const OTNetstringTypes = ",#^!~{[Z"; +const UInt8 TNetstringSeparator = ':'; + +TSITStringFormat TSITStringDefaultFormat = kTSITStringFormatTNetstring; + +static const CFRange BeginningRange = {0,0}; + +static CFTypeID kCFDataTypeID = -1UL; +static CFTypeID kCFStringTypeID = -1UL; +static CFTypeID kCFNumberTypeID = -1UL; +static CFTypeID kCFBooleanTypeID = -1UL; +static CFTypeID kCFNullTypeID = -1UL; +static CFTypeID kCFArrayTypeID = -1UL; +static CFTypeID kCFDictionaryTypeID = -1UL; + + +__attribute__((constructor)) void Init_TSICTString(void) +{ + kCFDataTypeID = CFDataGetTypeID(); + kCFStringTypeID = CFStringGetTypeID(); + kCFNumberTypeID = CFNumberGetTypeID(); + kCFBooleanTypeID = CFBooleanGetTypeID(); + kCFNullTypeID = CFNullGetTypeID(); + kCFArrayTypeID = CFArrayGetTypeID(); + kCFDictionaryTypeID = CFDictionaryGetTypeID(); +} + + +void TSICTStringSetDefaultFormat(TSITStringFormat format) +{ + if (format == kTSITStringFormatDefault) { + TSITStringDefaultFormat = kTSITStringFormatTNetstring; + } else { + TSITStringDefaultFormat = format; + } +} + +TSITStringFormat TSICTStringGetDefaultFormat(void) +{ + return TSITStringDefaultFormat; +} + + +void TSICTStringDestroy(TStringIRep* rep) +{ + CFRelease(rep->data); + free(rep->length); + free(rep); +} + + +static inline TStringIRep* TSICTStringCreateWithDataOfTypeAndFormat(CFDataRef data, TSITStringTag type, TSITStringFormat format) +{ + if (format == kTSITStringFormatDefault) { + format = TSICTStringGetDefaultFormat(); + } + + TStringIRep* rep = calloc(1, sizeof(TStringIRep)); + rep->data = CFDataCreateCopy(kCFAllocatorDefault, data); + rep->type = type; + rep->format = format; + rep->length = calloc(10, sizeof(char)); + + CFIndex len = CFDataGetLength(rep->data); + if (snprintf(rep->length, 10, "%lu", len)) { + return rep; + } else { + TSICTStringDestroy(rep); + return NULL; + } +} + +static inline CFDataRef TSICTStringCreateDataFromIntermediateRepresentation(TStringIRep* rep) +{ + CFIndex len = CFDataGetLength(rep->data); + CFMutableDataRef buffer = CFDataCreateMutableCopy(kCFAllocatorDefault, (len + 12), rep->data); + UInt8* bufferBytes = CFDataGetMutableBytePtr(buffer); + + size_t prefixLength = strlen(rep->length) + 1; + CFDataReplaceBytes(buffer, BeginningRange, (const UInt8*)rep->length, (CFIndex)prefixLength); + + if (rep->format == kTSITStringFormatTNetstring) { + const UInt8 ftag = (UInt8)TNetstringTypes[rep->type]; + CFDataAppendBytes(buffer, &ftag, 1); + bufferBytes[(prefixLength - 1)] = TNetstringSeparator; + } else if (rep->format == kTSITStringFormatOTNetstring) { + const UInt8 ftag = (UInt8)OTNetstringTypes[rep->type]; + bufferBytes[(prefixLength - 1)] = ftag; + } + + CFDataRef dataRep = CFDataCreateCopy(kCFAllocatorDefault, buffer); + CFRelease(buffer); + + return dataRep; +} + +static inline CFStringRef TSICTStringCreateStringFromIntermediateRepresentation(TStringIRep* rep) +{ + CFDataRef data = TSICTStringCreateDataFromIntermediateRepresentation(rep); + CFStringRef string = CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, data, kCFStringEncodingUTF8); + CFRelease(data); + return string; +} + +static inline void TSICTStringAppendObjectToMutableDataWithFormat(CFTypeRef object, CFMutableDataRef buffer, TSITStringFormat format) +{ + if (object == NULL) { + object = kCFNull; + } + + CFRetain(object); + + TStringIRep* objRep = TSICTStringCreateWithObjectAndFormat(object, format); + CFDataRef objData = TSICTStringCreateDataFromIntermediateRepresentation(objRep); + CFDataAppendBytes(buffer, (CFDataGetBytePtr(objData)), CFDataGetLength(objData)); + CFRelease(objData); + TSICTStringDestroy(objRep); + + CFRelease(object); +} + +static void ArrayBufferAppendCallback(const void* item, void* context) +{ + TStringCollectionCallbackContext* cx = (TStringCollectionCallbackContext*)context; + CFMutableDataRef buffer = cx->buffer; + TSITStringFormat format = cx->format; + + TSICTStringAppendObjectToMutableDataWithFormat(item, buffer, format); +} + +static void DictionaryBufferAppendCallback(const void* key, const void* value, void* context) +{ + TStringCollectionCallbackContext* cx = (TStringCollectionCallbackContext*)context; + CFMutableDataRef buffer = cx->buffer; + TSITStringFormat format = cx->format; + + TSICTStringAppendObjectToMutableDataWithFormat(key, buffer, format); + TSICTStringAppendObjectToMutableDataWithFormat(value, buffer, format); +} + + +CFDataRef TSICTStringCreateRenderedData(TStringIRep* rep) +{ + return TSICTStringCreateDataFromIntermediateRepresentation(rep); +} + +CFDataRef TSICTStringCreateRenderedDataFromObjectWithFormat(CFTypeRef object, TSITStringFormat format) +{ + if (object == NULL) { + object = kCFNull; + } + + CFRetain(object); + + TStringIRep* rep = TSICTStringCreateWithObjectAndFormat(object, format); + CFDataRef data = TSICTStringCreateDataFromIntermediateRepresentation(rep); + + TSICTStringDestroy(rep); + CFRelease(object); + + return data; +} + +CFStringRef TSICTStringCreateRenderedString(TStringIRep* rep) +{ + return TSICTStringCreateStringFromIntermediateRepresentation(rep); +} + +CFStringRef TSICTStringCreateRenderedStringFromObjectWithFormat(CFTypeRef object, TSITStringFormat format) +{ + if (object == NULL) { + object = kCFNull; + } + + CFRetain(object); + + TStringIRep* rep = TSICTStringCreateWithObjectAndFormat(object, format); + CFStringRef string = TSICTStringCreateStringFromIntermediateRepresentation(rep); + + TSICTStringDestroy(rep); + CFRelease(object); + + return string; +} + + +TStringIRep* TSICTStringCreateWithObjectAndFormat(CFTypeRef object, TSITStringFormat format) +{ + if (object == NULL) { + return TSICTStringCreateNullWithFormat(format); + } + CFRetain(object); + + CFTypeID cfType = CFGetTypeID(object); + TStringIRep* rep = NULL; + + if (cfType == kCFDataTypeID) { + rep = TSICTStringCreateWithDataOfTypeAndFormat(object, kTSITStringTagString, format); + } else if (cfType == kCFStringTypeID) { + rep = TSICTStringCreateWithStringAndFormat(object, format); + } else if (cfType == kCFNumberTypeID) { + rep = TSICTStringCreateWithNumberAndFormat(object, format); + } else if (cfType == kCFBooleanTypeID) { + if (CFBooleanGetValue(object)) { + rep = TSICTStringCreateTrueWithFormat(format); + } else { + rep = TSICTStringCreateFalseWithFormat(format); + } + } else if (cfType == kCFNullTypeID) { + rep = TSICTStringCreateNullWithFormat(format); + } else if (cfType == kCFArrayTypeID) { + rep = TSICTStringCreateWithArrayAndFormat(object, format); + } else if (cfType == kCFDictionaryTypeID) { + rep = TSICTStringCreateWithDictionaryAndFormat(object, format); + } else { + rep = TSICTStringCreateInvalidWithFormat(format); + } + + CFRelease(object); + return rep; +} + +TStringIRep* TSICTStringCreateWithStringAndFormat(CFStringRef string, TSITStringFormat format) +{ + CFRetain(string); + CFDataRef data = CFStringCreateExternalRepresentation(kCFAllocatorDefault, string, kCFStringEncodingUTF8, '?'); + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, kTSITStringTagString, format); + CFRelease(data); + CFRelease(string); + return rep; +} + +TStringIRep* TSICTStringCreateWithNumberAndFormat(CFNumberRef number, TSITStringFormat format) +{ + CFRetain(number); + TSITStringTag tag = kTSITStringTagNumber; + CFDataRef data; + CFNumberType numType = CFNumberGetType(number); + + switch(numType) { + case kCFNumberCharType: + { + int value; + if (CFNumberGetValue(number, kCFNumberIntType, &value)) { + if (value == 0 || value == 1) { + tag = kTSITStringTagBool; + } else { + tag = kTSITStringTagString; + } + } + break; + } + case kCFNumberFloat32Type: + case kCFNumberFloat64Type: + case kCFNumberFloatType: + case kCFNumberDoubleType: + { + tag = kTSITStringTagFloat; + break; + } + } + + if (tag == kTSITStringTagBool) { + bool value; + CFNumberGetValue(number, kCFNumberIntType, &value); + if (value) { + data = CFDataCreate(kCFAllocatorDefault, (UInt8*)"true", 4); + } else { + data = CFDataCreate(kCFAllocatorDefault, (UInt8*)"false", 5); + } + } else if (tag == kTSITStringTagFloat) { + char buf[32]; + char *p, *e; + double value; + + CFNumberGetValue(number, numType, &value); + sprintf(buf, "%#.15g", value); + + e = buf + strlen(buf); + p = e; + while (p[-1]=='0' && ('0' <= p[-2] && p[-2] <= '9')) { + p--; + } + memmove(p, e, strlen(e)+1); + + data = CFDataCreate(kCFAllocatorDefault, (UInt8*)buf, (CFIndex)strlen(buf)); + } else { + char buf[32]; + SInt64 value; + CFNumberGetValue(number, numType, &value); + sprintf(buf, "%lli", value); + data = CFDataCreate(kCFAllocatorDefault, (UInt8*)buf, (CFIndex)strlen(buf)); + } + + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, tag, format); + CFRelease(data); + CFRelease(number); + return rep; +} + +TStringIRep* TSICTStringCreateTrueWithFormat(TSITStringFormat format) +{ + CFDataRef data = CFDataCreate(kCFAllocatorDefault, (UInt8*)"true", 4); + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, kTSITStringTagBool, format); + CFRelease(data); + return rep; +} + +TStringIRep* TSICTStringCreateFalseWithFormat(TSITStringFormat format) +{ + CFDataRef data = CFDataCreate(kCFAllocatorDefault, (UInt8*)"false", 5); + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, kTSITStringTagBool, format); + CFRelease(data); + return rep; +} + +TStringIRep* TSICTStringCreateNullWithFormat(TSITStringFormat format) +{ + CFDataRef data = CFDataCreate(kCFAllocatorDefault, NULL, 0); + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, kTSITStringTagNull, format); + CFRelease(data); + return rep; +} + +TStringIRep* TSICTStringCreateInvalidWithFormat(TSITStringFormat format) +{ + CFDataRef data = CFDataCreate(kCFAllocatorDefault, NULL, 0); + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(data, kTSITStringTagInvalid, format); + CFRelease(data); + return rep; +} + +TStringIRep* TSICTStringCreateWithArrayAndFormat(CFArrayRef array, TSITStringFormat format) +{ + CFRetain(array); + + CFMutableDataRef buffer = CFDataCreateMutable(kCFAllocatorDefault, 0); + + CFRange all = CFRangeMake(0, CFArrayGetCount(array)); + TStringCollectionCallbackContext cx = {buffer, format}; + CFArrayApplyFunction(array, all, ArrayBufferAppendCallback, &cx); + + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(buffer, kTSITStringTagList, format); + CFRelease(buffer); + CFRelease(array); + return rep; +} + +TStringIRep* TSICTStringCreateWithDictionaryAndFormat(CFDictionaryRef dictionary, TSITStringFormat format) +{ + CFRetain(dictionary); + + CFMutableDataRef buffer = CFDataCreateMutable(kCFAllocatorDefault, 0); + + TStringCollectionCallbackContext cx = {buffer, format}; + CFDictionaryApplyFunction(dictionary, DictionaryBufferAppendCallback, &cx); + + TStringIRep* rep = TSICTStringCreateWithDataOfTypeAndFormat(buffer, kTSITStringTagDict, format); + CFRelease(buffer); + CFRelease(dictionary); + return rep; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.h new file mode 100644 index 0000000000..daf085c32f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/TSICTString.h @@ -0,0 +1,74 @@ +// +// TSICTString.h +// TSITString +// +// Created by Travis Tilley on 9/27/11. +// + +#ifndef TSICTString_H +#define TSICTString_H + +#include + + +typedef enum { + kTSITStringTagString = 0, + kTSITStringTagNumber = 1, + kTSITStringTagFloat = 2, + kTSITStringTagBool = 3, + kTSITStringTagNull = 4, + kTSITStringTagDict = 5, + kTSITStringTagList = 6, + kTSITStringTagInvalid = 7, +} TSITStringTag; + +extern const char* const TNetstringTypes; +extern const char* const OTNetstringTypes; +extern const UInt8 TNetstringSeparator; + +typedef enum { + kTSITStringFormatDefault = 0, + kTSITStringFormatOTNetstring = 1, + kTSITStringFormatTNetstring = 2, +} TSITStringFormat; + +extern TSITStringFormat TSITStringDefaultFormat; + +typedef struct TSITStringIntermediate { + CFDataRef data; + char* length; + TSITStringTag type; + TSITStringFormat format; +} TStringIRep; + +typedef struct { + CFMutableDataRef buffer; + TSITStringFormat format; +} TStringCollectionCallbackContext; + + +void Init_TSICTString(void); + +void TSICTStringSetDefaultFormat(TSITStringFormat format); +TSITStringFormat TSICTStringGetDefaultFormat(void); + +void TSICTStringDestroy(TStringIRep* rep); + +CFDataRef TSICTStringCreateRenderedData(TStringIRep* rep); +CFDataRef TSICTStringCreateRenderedDataFromObjectWithFormat(CFTypeRef object, TSITStringFormat format); + +CFStringRef TSICTStringCreateRenderedString(TStringIRep* rep); +CFStringRef TSICTStringCreateRenderedStringFromObjectWithFormat(CFTypeRef object, TSITStringFormat format); + +TStringIRep* TSICTStringCreateWithObjectAndFormat(CFTypeRef object, TSITStringFormat format); +TStringIRep* TSICTStringCreateWithStringAndFormat(CFStringRef string, TSITStringFormat format); +TStringIRep* TSICTStringCreateWithNumberAndFormat(CFNumberRef number, TSITStringFormat format); +TStringIRep* TSICTStringCreateTrueWithFormat(TSITStringFormat format); +TStringIRep* TSICTStringCreateFalseWithFormat(TSITStringFormat format); +TStringIRep* TSICTStringCreateNullWithFormat(TSITStringFormat format); +TStringIRep* TSICTStringCreateInvalidWithFormat(TSITStringFormat format); +TStringIRep* TSICTStringCreateWithArrayAndFormat(CFArrayRef array, TSITStringFormat format); +TStringIRep* TSICTStringCreateWithDictionaryAndFormat(CFDictionaryRef dictionary, TSITStringFormat format); + + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.c new file mode 100644 index 0000000000..6d36dd13dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.c @@ -0,0 +1,201 @@ +#include +#include "cli.h" + +const char* cli_info_purpose = "A flexible command-line interface for the FSEvents API"; +const char* cli_info_usage = "Usage: fsevent_watch [OPTIONS]... [PATHS]..."; +const char* cli_info_help[] = { + " -h, --help you're looking at it", + " -V, --version print version number and exit", + " -p, --show-plist display the embedded Info.plist values", + " -s, --since-when=EventID fire historical events since ID", + " -l, --latency=seconds latency period (default='0.5')", + " -n, --no-defer enable no-defer latency modifier", + " -r, --watch-root watch for when the root path has changed", + // " -i, --ignore-self ignore current process", + " -F, --file-events provide file level event data", + " -f, --format=name output format (classic, niw, \n" + " tnetstring, otnetstring)", + 0 +}; + +static void default_args (struct cli_info* args_info) +{ + args_info->since_when_arg = kFSEventStreamEventIdSinceNow; + args_info->latency_arg = 0.5; + args_info->no_defer_flag = false; + args_info->watch_root_flag = false; + args_info->ignore_self_flag = false; + args_info->file_events_flag = false; + args_info->mark_self_flag = false; + args_info->format_arg = kFSEventWatchOutputFormatOTNetstring; +} + +static void cli_parser_release (struct cli_info* args_info) +{ + unsigned int i; + + for (i=0; i < args_info->inputs_num; ++i) { + free(args_info->inputs[i]); + } + + if (args_info->inputs_num) { + free(args_info->inputs); + } + + args_info->inputs_num = 0; +} + +void cli_parser_init (struct cli_info* args_info) +{ + default_args(args_info); + + args_info->inputs = 0; + args_info->inputs_num = 0; +} + +void cli_parser_free (struct cli_info* args_info) +{ + cli_parser_release(args_info); +} + +static void cli_print_info_dict (const void *key, + const void *value, + void *context) +{ + CFStringRef entry = CFStringCreateWithFormat(NULL, NULL, + CFSTR("%@:\n %@"), key, value); + if (entry) { + CFShow(entry); + CFRelease(entry); + } +} + +void cli_show_plist (void) +{ + CFBundleRef mainBundle = CFBundleGetMainBundle(); + CFRetain(mainBundle); + CFDictionaryRef mainBundleDict = CFBundleGetInfoDictionary(mainBundle); + if (mainBundleDict) { + CFRetain(mainBundleDict); + printf("Embedded Info.plist metadata:\n\n"); + CFDictionaryApplyFunction(mainBundleDict, cli_print_info_dict, NULL); + CFRelease(mainBundleDict); + } + CFRelease(mainBundle); + printf("\n"); +} + +void cli_print_version (void) +{ + printf("%s %s\n\n", CLI_NAME, CLI_VERSION); +#ifdef COMPILED_AT + printf("Compiled at: %s\n", COMPILED_AT); +#endif +#ifdef COMPILER + printf("Compiled with: %s\n", COMPILER); +#endif +#ifdef TARGET_CPU + printf("Compiled for: %s\n", TARGET_CPU); +#endif + printf("\n"); +} + +void cli_print_help (void) +{ + cli_print_version(); + + printf("\n%s\n", cli_info_purpose); + printf("\n%s\n", cli_info_usage); + printf("\n"); + + int i = 0; + while (cli_info_help[i]) { + printf("%s\n", cli_info_help[i++]); + } +} + +int cli_parser (int argc, const char** argv, struct cli_info* args_info) +{ + static struct option longopts[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, 'V' }, + { "show-plist", no_argument, NULL, 'p' }, + { "since-when", required_argument, NULL, 's' }, + { "latency", required_argument, NULL, 'l' }, + { "no-defer", no_argument, NULL, 'n' }, + { "watch-root", no_argument, NULL, 'r' }, + { "ignore-self", no_argument, NULL, 'i' }, + { "file-events", no_argument, NULL, 'F' }, + { "mark-self", no_argument, NULL, 'm' }, + { "format", required_argument, NULL, 'f' }, + { 0, 0, 0, 0 } + }; + + const char* shortopts = "hVps:l:nriFf:"; + + int c = -1; + + while ((c = getopt_long(argc, (char * const*)argv, shortopts, longopts, NULL)) != -1) { + switch(c) { + case 's': // since-when + args_info->since_when_arg = strtoull(optarg, NULL, 0); + break; + case 'l': // latency + args_info->latency_arg = strtod(optarg, NULL); + break; + case 'n': // no-defer + args_info->no_defer_flag = true; + break; + case 'r': // watch-root + args_info->watch_root_flag = true; + break; + case 'i': // ignore-self + args_info->ignore_self_flag = true; + break; + case 'F': // file-events + args_info->file_events_flag = true; + break; + case 'm': // mark-self + args_info->mark_self_flag = true; + break; + case 'f': // format + if (strcmp(optarg, "classic") == 0) { + args_info->format_arg = kFSEventWatchOutputFormatClassic; + } else if (strcmp(optarg, "niw") == 0) { + args_info->format_arg = kFSEventWatchOutputFormatNIW; + } else if (strcmp(optarg, "tnetstring") == 0) { + args_info->format_arg = kFSEventWatchOutputFormatTNetstring; + } else if (strcmp(optarg, "otnetstring") == 0) { + args_info->format_arg = kFSEventWatchOutputFormatOTNetstring; + } else { + fprintf(stderr, "Unknown output format: %s\n", optarg); + exit(EXIT_FAILURE); + } + break; + case 'V': // version + cli_print_version(); + exit(EXIT_SUCCESS); + case 'p': // show-plist + cli_show_plist(); + exit(EXIT_SUCCESS); + case 'h': // help + case '?': // invalid option + case ':': // missing argument + cli_print_help(); + exit((c == 'h') ? EXIT_SUCCESS : EXIT_FAILURE); + } + } + + if (optind < argc) { + int i = 0; + args_info->inputs_num = (unsigned int)(argc - optind); + args_info->inputs = + (char**)(malloc ((args_info->inputs_num)*sizeof(char*))); + while (optind < argc) + if (argv[optind++] != argv[0]) { + args_info->inputs[i++] = strdup(argv[optind-1]); + } + } + + return EXIT_SUCCESS; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.h new file mode 100644 index 0000000000..2164995a5d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/cli.h @@ -0,0 +1,45 @@ +#ifndef CLI_H +#define CLI_H + +#include "common.h" + +#ifndef CLI_NAME +#define CLI_NAME "fsevent_watch" +#endif /* CLI_NAME */ + +#ifndef PROJECT_VERSION +#error "PROJECT_VERSION not set" +#endif /* PROJECT_VERSION */ + +#ifndef CLI_VERSION +#define CLI_VERSION _xstr(PROJECT_VERSION) +#endif /* CLI_VERSION */ + + +struct cli_info { + UInt64 since_when_arg; + double latency_arg; + bool no_defer_flag; + bool watch_root_flag; + bool ignore_self_flag; + bool file_events_flag; + bool mark_self_flag; + enum FSEventWatchOutputFormat format_arg; + + char** inputs; + unsigned inputs_num; +}; + +extern const char* cli_info_purpose; +extern const char* cli_info_usage; +extern const char* cli_info_help[]; + +void cli_print_help(void); +void cli_print_version(void); + +int cli_parser (int argc, const char** argv, struct cli_info* args_info); +void cli_parser_init (struct cli_info* args_info); +void cli_parser_free (struct cli_info* args_info); + + +#endif /* CLI_H */ diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/common.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/common.h new file mode 100644 index 0000000000..b2d3e4ebf4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/common.h @@ -0,0 +1,22 @@ +#ifndef fsevent_watch_common_h +#define fsevent_watch_common_h + +#include +#ifdef __OBJC__ +#import +#endif + +#include +#include +#include "compat.h" +#include "defines.h" +#include "TSICTString.h" + +enum FSEventWatchOutputFormat { + kFSEventWatchOutputFormatClassic, + kFSEventWatchOutputFormatNIW, + kFSEventWatchOutputFormatTNetstring, + kFSEventWatchOutputFormatOTNetstring +}; + +#endif /* fsevent_watch_common_h */ diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.c new file mode 100644 index 0000000000..5f51baff11 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.c @@ -0,0 +1,41 @@ +#include "compat.h" + + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_6) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0) +FSEventStreamCreateFlags kFSEventStreamCreateFlagIgnoreSelf = 0x00000008; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_7) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0) +FSEventStreamCreateFlags kFSEventStreamCreateFlagFileEvents = 0x00000010; +FSEventStreamEventFlags kFSEventStreamEventFlagItemCreated = 0x00000100; +FSEventStreamEventFlags kFSEventStreamEventFlagItemRemoved = 0x00000200; +FSEventStreamEventFlags kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400; +FSEventStreamEventFlags kFSEventStreamEventFlagItemRenamed = 0x00000800; +FSEventStreamEventFlags kFSEventStreamEventFlagItemModified = 0x00001000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemChangeOwner = 0x00004000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemXattrMod = 0x00008000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemIsFile = 0x00010000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemIsDir = 0x00020000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemIsSymlink = 0x00040000; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_9) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_7_0) +FSEventStreamCreateFlags kFSEventStreamCreateFlagMarkSelf = 0x00000020; +FSEventStreamEventFlags kFSEventStreamEventFlagOwnEvent = 0x00080000; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_10) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0) +FSEventStreamEventFlags kFSEventStreamEventFlagItemIsHardlink = 0x00100000; +FSEventStreamEventFlags kFSEventStreamEventFlagItemIsLastHardlink = 0x00200000; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_13) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_11_0) +FSEventStreamCreateFlags kFSEventStreamCreateFlagUseExtendedData = 0x00000040; +FSEventStreamEventFlags kFSEventStreamEventFlagItemCloned = 0x00400000; +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.h new file mode 100644 index 0000000000..757b413565 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/compat.h @@ -0,0 +1,100 @@ +/** + * @headerfile compat.h + * FSEventStream flag compatibility shim + * + * In order to compile a binary against an older SDK yet still support the + * features present in later OS releases, we need to define any missing enum + * constants not present in the older SDK. This allows us to safely defer + * feature detection to runtime (and avoid recompilation). + */ + + +#ifndef listen_fsevents_compat_h +#define listen_fsevents_compat_h + +#ifndef __CORESERVICES__ +#include +#endif // __CORESERVICES__ + +#ifndef __AVAILABILITY__ +#include +#endif // __AVAILABILITY__ + +#ifndef __MAC_10_6 +#define __MAC_10_6 1060 +#endif +#ifndef __MAC_10_7 +#define __MAC_10_7 1070 +#endif +#ifndef __MAC_10_9 +#define __MAC_10_9 1090 +#endif +#ifndef __MAC_10_10 +#define __MAC_10_10 101000 +#endif +#ifndef __MAC_10_13 +#define __MAC_10_13 101300 +#endif +#ifndef __IPHONE_6_0 +#define __IPHONE_6_0 60000 +#endif +#ifndef __IPHONE_7_0 +#define __IPHONE_7_0 70000 +#endif +#ifndef __IPHONE_9_0 +#define __IPHONE_9_0 90000 +#endif +#ifndef __IPHONE_11_0 +#define __IPHONE_11_0 110000 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_6) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0) +extern FSEventStreamCreateFlags kFSEventStreamCreateFlagIgnoreSelf; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_7) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0) +extern FSEventStreamCreateFlags kFSEventStreamCreateFlagFileEvents; +extern FSEventStreamEventFlags kFSEventStreamEventFlagItemCreated, + kFSEventStreamEventFlagItemRemoved, + kFSEventStreamEventFlagItemInodeMetaMod, + kFSEventStreamEventFlagItemRenamed, + kFSEventStreamEventFlagItemModified, + kFSEventStreamEventFlagItemFinderInfoMod, + kFSEventStreamEventFlagItemChangeOwner, + kFSEventStreamEventFlagItemXattrMod, + kFSEventStreamEventFlagItemIsFile, + kFSEventStreamEventFlagItemIsDir, + kFSEventStreamEventFlagItemIsSymlink; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_9) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_7_0) +extern FSEventStreamCreateFlags kFSEventStreamCreateFlagMarkSelf; +extern FSEventStreamEventFlags kFSEventStreamEventFlagOwnEvent; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_10) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0) +extern FSEventStreamEventFlags kFSEventStreamEventFlagItemIsHardlink, + kFSEventStreamEventFlagItemIsLastHardlink; +#endif + +#if (defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_13) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_11_0) +extern FSEventStreamCreateFlags kFSEventStreamCreateFlagUseExtendedData; +extern FSEventStreamEventFlags kFSEventStreamEventFlagItemCloned; +#endif + + +#ifdef __cplusplus +} +#endif + +#endif // listen_fsevents_compat_h diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/defines.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/defines.h new file mode 100644 index 0000000000..6f6e87b08a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/defines.h @@ -0,0 +1,40 @@ +#ifndef fsevent_watch_defines_h +#define fsevent_watch_defines_h + +#define _str(s) #s +#define _xstr(s) _str(s) + +#define COMPILED_AT __DATE__ " " __TIME__ + +#if defined (__clang__) +#define COMPILER "clang " __clang_version__ +#elif defined (__GNUC__) +#define COMPILER "gcc " __VERSION__ +#else +#define COMPILER "unknown" +#endif + +#if defined(__ppc__) +#define TARGET_CPU "ppc" +#elif defined(__ppc64__) +#define TARGET_CPU "ppc64" +#elif defined(__i386__) +#define TARGET_CPU "i386" +#elif defined(__x86_64__) +#define TARGET_CPU "x86_64" +#else +#define TARGET_CPU "unknown" +#endif + +#define FLAG_CHECK(flags, flag) ((flags) & (flag)) + +#define FPRINTF_FLAG_CHECK(flags, flag, msg, fd) \ + do { \ + if (FLAG_CHECK(flags, flag)) { \ + fprintf(fd, "%s", msg "\n"); } } \ + while (0) + +#define FLAG_CHECK_STDERR(flags, flag, msg) \ + FPRINTF_FLAG_CHECK(flags, flag, msg, stderr) + +#endif /* fsevent_watch_defines_h */ diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/main.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/main.c new file mode 100644 index 0000000000..b18596a603 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/main.c @@ -0,0 +1,548 @@ +#include "common.h" +#include "signal_handlers.h" +#include "cli.h" +#include "FSEventsFix.h" + +// TODO: set on fire. cli.{h,c} handle both parsing and defaults, so there's +// no need to set those here. also, in order to scope metadata by path, +// each stream will need its own configuration... so this won't work as +// a global any more. In the end the goal is to make the output format +// able to declare not just that something happened and what flags were +// attached, but what path it was watching that caused those events (so +// that the path itself can be used for routing that information to the +// relevant callback). +// +// Structure for storing metadata parsed from the commandline +static struct { + FSEventStreamEventId sinceWhen; + CFTimeInterval latency; + FSEventStreamCreateFlags flags; + CFMutableArrayRef paths; + enum FSEventWatchOutputFormat format; +} config = { + (UInt64) kFSEventStreamEventIdSinceNow, + (double) 0.3, + (CFOptionFlags) kFSEventStreamCreateFlagNone, + NULL, + kFSEventWatchOutputFormatOTNetstring +}; + +// Prototypes +static void append_path(const char* path); +static inline void parse_cli_settings(int argc, const char* argv[]); +static void callback(FSEventStreamRef streamRef, + void* clientCallBackInfo, + size_t numEvents, + void* eventPaths, + const FSEventStreamEventFlags eventFlags[], + const FSEventStreamEventId eventIds[]); +static bool needs_fsevents_fix = false; + +// Resolve a path and append it to the CLI settings structure +// The FSEvents API will, internally, resolve paths using a similar scheme. +// Performing this ahead of time makes things less confusing, IMHO. +static void append_path(const char* path) +{ +#ifdef DEBUG + fprintf(stderr, "\n"); + fprintf(stderr, "append_path called for: %s\n", path); +#endif + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 + +#ifdef DEBUG + fprintf(stderr, "compiled against 10.6+, using CFURLCreateFileReferenceURL\n"); +#endif + + CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8*)path, (CFIndex)strlen(path), false); + CFURLRef placeholder = CFURLCopyAbsoluteURL(url); + CFRelease(url); + + CFMutableArrayRef imaginary = NULL; + + // if we don't have an existing url, spin until we get to a parent that + // does exist, saving any imaginary components for appending back later + while(!CFURLResourceIsReachable(placeholder, NULL)) { +#ifdef DEBUG + fprintf(stderr, "path does not exist\n"); +#endif + + CFStringRef child; + + if (imaginary == NULL) { + imaginary = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks); + } + + child = CFURLCopyLastPathComponent(placeholder); + CFArrayInsertValueAtIndex(imaginary, 0, child); + CFRelease(child); + + url = CFURLCreateCopyDeletingLastPathComponent(NULL, placeholder); + CFRelease(placeholder); + placeholder = url; + +#ifdef DEBUG + fprintf(stderr, "parent: "); + CFShow(placeholder); +#endif + } + +#ifdef DEBUG + fprintf(stderr, "path exists\n"); +#endif + + // realpath() doesn't always return the correct case for a path, so this + // is a funky workaround that converts a path into a (volId/inodeId) pair + // and asks what the path should be for that. since it looks at the actual + // inode instead of returning the same case passed in like realpath() + // appears to do for HFS+, it should always be correct. + url = CFURLCreateFileReferenceURL(NULL, placeholder, NULL); + CFRelease(placeholder); + placeholder = CFURLCreateFilePathURL(NULL, url, NULL); + CFRelease(url); + +#ifdef DEBUG + fprintf(stderr, "path resolved to: "); + CFShow(placeholder); +#endif + + // if we stripped off any imaginary path components, append them back on + if (imaginary != NULL) { + CFIndex count = CFArrayGetCount(imaginary); + for (CFIndex i = 0; i= 6)) { + config.flags |= kFSEventStreamCreateFlagIgnoreSelf; + } else { + fprintf(stderr, "MacOSX 10.6 or later is required for --ignore-self\n"); + exit(EXIT_FAILURE); + } + } + + if (args_info.file_events_flag) { + if ((osMajorVersion == 10) & (osMinorVersion >= 7)) { + config.flags |= kFSEventStreamCreateFlagFileEvents; + } else { + fprintf(stderr, "MacOSX 10.7 or later required for --file-events\n"); + exit(EXIT_FAILURE); + } + } + + if (args_info.mark_self_flag) { + if ((osMajorVersion == 10) & (osMinorVersion >= 9)) { + config.flags |= kFSEventStreamCreateFlagMarkSelf; + } else { + fprintf(stderr, "MacOSX 10.9 or later required for --mark-self\n"); + exit(EXIT_FAILURE); + } + } + + if (args_info.inputs_num == 0) { + append_path("."); + } else { + for (unsigned int i=0; i < args_info.inputs_num; ++i) { + append_path(args_info.inputs[i]); + } + } + + cli_parser_free(&args_info); + +#ifdef DEBUG + fprintf(stderr, "config.sinceWhen %llu\n", config.sinceWhen); + fprintf(stderr, "config.latency %f\n", config.latency); + +// STFU clang +#if defined(__LP64__) + fprintf(stderr, "config.flags %#.8x\n", config.flags); +#else + fprintf(stderr, "config.flags %#.8lx\n", config.flags); +#endif + + FLAG_CHECK_STDERR(config.flags, kFSEventStreamCreateFlagUseCFTypes, + " Using CF instead of C types"); + FLAG_CHECK_STDERR(config.flags, kFSEventStreamCreateFlagNoDefer, + " NoDefer latency modifier enabled"); + FLAG_CHECK_STDERR(config.flags, kFSEventStreamCreateFlagWatchRoot, + " WatchRoot notifications enabled"); + FLAG_CHECK_STDERR(config.flags, kFSEventStreamCreateFlagIgnoreSelf, + " IgnoreSelf enabled"); + FLAG_CHECK_STDERR(config.flags, kFSEventStreamCreateFlagFileEvents, + " FileEvents enabled"); + + fprintf(stderr, "config.paths\n"); + + long numpaths = CFArrayGetCount(config.paths); + + for (long i = 0; i < numpaths; i++) { + char path[PATH_MAX]; + CFStringGetCString(CFArrayGetValueAtIndex(config.paths, i), + path, + PATH_MAX, + kCFStringEncodingUTF8); + fprintf(stderr, " %s\n", path); + } + + fprintf(stderr, "\n"); +#endif +} + +// original output format for rb-fsevent +static void classic_output_format(size_t numEvents, + char** paths) +{ + for (size_t i = 0; i < numEvents; i++) { + fprintf(stdout, "%s:", paths[i]); + } + fprintf(stdout, "\n"); +} + +// output format used in the Yoshimasa Niwa branch of rb-fsevent +static void niw_output_format(size_t numEvents, + char** paths, + const FSEventStreamEventFlags eventFlags[], + const FSEventStreamEventId eventIds[]) +{ + for (size_t i = 0; i < numEvents; i++) { + fprintf(stdout, "%lu:%llu:%s\n", + (unsigned long)eventFlags[i], + (unsigned long long)eventIds[i], + paths[i]); + } + fprintf(stdout, "\n"); +} + +static void tstring_output_format(size_t numEvents, + char** paths, + const FSEventStreamEventFlags eventFlags[], + const FSEventStreamEventId eventIds[], + TSITStringFormat format) +{ + CFMutableArrayRef events = CFArrayCreateMutable(kCFAllocatorDefault, + 0, &kCFTypeArrayCallBacks); + + for (size_t i = 0; i < numEvents; i++) { + CFMutableDictionaryRef event = CFDictionaryCreateMutable(kCFAllocatorDefault, + 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + + CFStringRef path = CFStringCreateWithBytes(kCFAllocatorDefault, + (const UInt8*)paths[i], + (CFIndex)strlen(paths[i]), + kCFStringEncodingUTF8, + false); + CFDictionarySetValue(event, CFSTR("path"), path); + + CFNumberRef ident = CFNumberCreate(kCFAllocatorDefault, kCFNumberLongLongType, &eventIds[i]); + CFDictionarySetValue(event, CFSTR("id"), ident); + + CFNumberRef cflags = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &eventFlags[i]); + CFDictionarySetValue(event, CFSTR("cflags"), cflags); + + CFMutableArrayRef flags = CFArrayCreateMutable(kCFAllocatorDefault, + 0, &kCFTypeArrayCallBacks); + +#define FLAG_ADD_NAME(flagsnum, flagnum, flagname, flagarray) \ + do { \ + if (FLAG_CHECK(flagsnum, flagnum)) { \ + CFArrayAppendValue(flagarray, CFSTR(flagname)); } } \ + while(0) + + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagMustScanSubDirs, "MustScanSubDirs", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagUserDropped, "UserDropped", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagKernelDropped, "KernelDropped", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagEventIdsWrapped, "EventIdsWrapped", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagHistoryDone, "HistoryDone", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagRootChanged, "RootChanged", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagMount, "Mount", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagUnmount, "Unmount", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemCreated, "ItemCreated", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemRemoved, "ItemRemoved", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemInodeMetaMod, "ItemInodeMetaMod", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemRenamed, "ItemRenamed", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemModified, "ItemModified", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemFinderInfoMod, "ItemFinderInfoMod", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemChangeOwner, "ItemChangeOwner", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemXattrMod, "ItemXattrMod", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemIsFile, "ItemIsFile", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemIsDir, "ItemIsDir", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemIsSymlink, "ItemIsSymlink", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagOwnEvent, "OwnEvent", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemIsHardlink, "ItemIsHardLink", flags); + FLAG_ADD_NAME(eventFlags[i], kFSEventStreamEventFlagItemIsLastHardlink, "ItemIsLastHardLink", flags); + + CFDictionarySetValue(event, CFSTR("flags"), flags); + + + CFArrayAppendValue(events, event); + + CFRelease(event); + CFRelease(path); + CFRelease(ident); + CFRelease(cflags); + CFRelease(flags); + } + + CFMutableDictionaryRef meta = CFDictionaryCreateMutable(kCFAllocatorDefault, + 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFDictionarySetValue(meta, CFSTR("events"), events); + + CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberCFIndexType, &numEvents); + CFDictionarySetValue(meta, CFSTR("numEvents"), num); + + CFDataRef data = TSICTStringCreateRenderedDataFromObjectWithFormat(meta, format); + fprintf(stdout, "%s", CFDataGetBytePtr(data)); + + CFRelease(events); + CFRelease(num); + CFRelease(meta); + CFRelease(data); +} + +static void callback(__attribute__((unused)) FSEventStreamRef streamRef, + __attribute__((unused)) void* clientCallBackInfo, + size_t numEvents, + void* eventPaths, + const FSEventStreamEventFlags eventFlags[], + const FSEventStreamEventId eventIds[]) +{ + char** paths = eventPaths; + + +#ifdef DEBUG + fprintf(stderr, "\n"); + fprintf(stderr, "FSEventStreamCallback fired!\n"); + fprintf(stderr, " numEvents: %lu\n", numEvents); + + for (size_t i = 0; i < numEvents; i++) { + fprintf(stderr, "\n"); + fprintf(stderr, " event ID: %llu\n", eventIds[i]); + +// STFU clang +#if defined(__LP64__) + fprintf(stderr, " event flags: %#.8x\n", eventFlags[i]); +#else + fprintf(stderr, " event flags: %#.8lx\n", eventFlags[i]); +#endif + + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagMustScanSubDirs, + " Recursive scanning of directory required"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagUserDropped, + " Buffering problem: events dropped user-side"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagKernelDropped, + " Buffering problem: events dropped kernel-side"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagEventIdsWrapped, + " Event IDs have wrapped"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagHistoryDone, + " All historical events have been processed"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagRootChanged, + " Root path has changed"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagMount, + " A new volume was mounted at this path"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagUnmount, + " A volume was unmounted from this path"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemCreated, + " Item created"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemRemoved, + " Item removed"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemInodeMetaMod, + " Item metadata modified"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemRenamed, + " Item renamed"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemModified, + " Item modified"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemFinderInfoMod, + " Item Finder Info modified"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemChangeOwner, + " Item changed ownership"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemXattrMod, + " Item extended attributes modified"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemIsFile, + " Item is a file"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemIsDir, + " Item is a directory"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemIsSymlink, + " Item is a symbolic link"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemIsHardlink, + " Item is a hard link"); + FLAG_CHECK_STDERR(eventFlags[i], kFSEventStreamEventFlagItemIsLastHardlink, + " Item is the last hard link"); + fprintf(stderr, " event path: %s\n", paths[i]); + fprintf(stderr, "\n"); + } + + fprintf(stderr, "\n"); +#endif + + if (config.format == kFSEventWatchOutputFormatClassic) { + classic_output_format(numEvents, paths); + } else if (config.format == kFSEventWatchOutputFormatNIW) { + niw_output_format(numEvents, paths, eventFlags, eventIds); + } else if (config.format == kFSEventWatchOutputFormatTNetstring) { + tstring_output_format(numEvents, paths, eventFlags, eventIds, + kTSITStringFormatTNetstring); + } else if (config.format == kFSEventWatchOutputFormatOTNetstring) { + tstring_output_format(numEvents, paths, eventFlags, eventIds, + kTSITStringFormatOTNetstring); + } + + fflush(stdout); +} + +int main(int argc, const char* argv[]) +{ + install_signal_handlers(); + parse_cli_settings(argc, argv); + + if (needs_fsevents_fix) { + FSEventsFixEnable(); + } + + FSEventStreamContext context = {0, NULL, NULL, NULL, NULL}; + FSEventStreamRef stream; + stream = FSEventStreamCreate(kCFAllocatorDefault, + (FSEventStreamCallback)&callback, + &context, + config.paths, + config.sinceWhen, + config.latency, + config.flags); + +#ifdef DEBUG + FSEventStreamShow(stream); + fprintf(stderr, "\n"); +#endif + + if (needs_fsevents_fix) { + FSEventsFixDisable(); + } + + FSEventStreamScheduleWithRunLoop(stream, + CFRunLoopGetCurrent(), + kCFRunLoopDefaultMode); + FSEventStreamStart(stream); + CFRunLoopRun(); + FSEventStreamFlushSync(stream); + FSEventStreamStop(stream); + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.c b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.c new file mode 100644 index 0000000000..b20da3f381 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.c @@ -0,0 +1,66 @@ +#include "signal_handlers.h" +#include +#include +#include +#include +#include +#include + + +#define PPID_ALARM_INTERVAL 2 // send SIGALRM every this seconds + + +static pid_t orig_ppid; + + +static void signal_handler(int _) { + exit(EXIT_FAILURE); +} + +static void check_ppid(void) { + if (getppid() != orig_ppid) { + exit(EXIT_FAILURE); + } +} + +static void check_stdout_open(void) { + if (fcntl(STDOUT_FILENO, F_GETFD) < 0) { + exit(EXIT_FAILURE); + } +} + +static void alarm_handler(int _) { + check_ppid(); + check_stdout_open(); + alarm(PPID_ALARM_INTERVAL); + signal(SIGALRM, alarm_handler); +} + +static void die(const char *msg) { + fprintf(stderr, "\nFATAL: %s\n", msg); + abort(); +} + +static void install_signal_handler(int sig, void (*handler)(int)) { + if (signal(sig, handler) == SIG_ERR) { + die("Could not install signal handler"); + } +} + +void install_signal_handlers(void) { + // check pipe is still connected + check_stdout_open(); + + // watch getppid() every PPID_ALARM_INTERVAL seconds + orig_ppid = getppid(); + if (orig_ppid <= 1) { + die("prematurely zombied"); + } + install_signal_handler(SIGALRM, alarm_handler); + alarm(PPID_ALARM_INTERVAL); + + // be sure to exit on SIGHUP, SIGPIPE + install_signal_handler(SIGHUP, signal_handler); + install_signal_handler(SIGPIPE, signal_handler); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.h b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.h new file mode 100644 index 0000000000..c31685d9ec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/fsevent_watch/signal_handlers.h @@ -0,0 +1,16 @@ +/** + * @headerfile signal_handlers.h + * Signal handlers to stop the zombie hordes + * + * Catch and handle signals better so that we die faster like a good meat puppet. + */ + + +#ifndef fsevent_watch_signal_handlers_h +#define fsevent_watch_signal_handlers_h + + +void install_signal_handlers(void); + + +#endif // fsevent_watch_signal_handlers_h diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/rakefile.rb b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/rakefile.rb new file mode 100644 index 0000000000..d7789bdc31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/ext/rakefile.rb @@ -0,0 +1,226 @@ +# -*- encoding: utf-8 -*- +require 'rubygems' unless defined?(Gem) +require 'pathname' +require 'date' +require 'time' +require 'rake/clean' + +raise "unable to find xcodebuild" unless system('which', 'xcodebuild') + + +FSEVENT_WATCH_EXE_VERSION = '0.1.5' + +$this_dir = Pathname.new(__FILE__).dirname.expand_path +$final_exe = $this_dir.parent.join('bin/fsevent_watch') + +$src_dir = $this_dir.join('fsevent_watch') +$obj_dir = $this_dir.join('build') + +SRC = Pathname.glob("#{$src_dir}/*.c") +OBJ = SRC.map {|s| $obj_dir.join("#{s.basename('.c')}.o")} + +$now = DateTime.now.xmlschema rescue Time.now.xmlschema + +$CC = ENV['CC'] || `which clang || which gcc`.strip +$CFLAGS = ENV['CFLAGS'] || '-fconstant-cfstrings -fasm-blocks -fstrict-aliasing -Wall' +$ARCHFLAGS = ENV['ARCHFLAGS'] || '-arch x86_64' +$DEFINES = "-DNS_BUILD_32_LIKE_64 -DNS_BLOCK_ASSERTIONS -DPROJECT_VERSION=#{FSEVENT_WATCH_EXE_VERSION}" + +$GCC_C_LANGUAGE_STANDARD = ENV['GCC_C_LANGUAGE_STANDARD'] || 'gnu11' + +# generic developer id name so it'll match correctly for anyone who has only +# one developer id in their keychain (not that I expect anyone else to bother) +$CODE_SIGN_IDENTITY = 'Developer ID Application' + +$arch = `uname -m`.strip +$os_release = `uname -r`.strip +$BUILD_TRIPLE = "#{$arch}-apple-darwin#{$os_release}" + +$CCVersion = `#{$CC} --version | head -n 1`.strip + + +CLEAN.include OBJ.map(&:to_s) +CLEAN.include $obj_dir.join('Info.plist').to_s +CLEAN.include $obj_dir.join('fsevent_watch').to_s +CLOBBER.include $final_exe.to_s + + +task :sw_vers do + $mac_product_version = `sw_vers -productVersion`.strip + $mac_build_version = `sw_vers -buildVersion`.strip + $MACOSX_DEPLOYMENT_TARGET = ENV['MACOSX_DEPLOYMENT_TARGET'] || $mac_product_version.sub(/\.\d*$/, '') + $CFLAGS = "#{$CFLAGS} -mmacosx-version-min=#{$MACOSX_DEPLOYMENT_TARGET}" +end + +task :get_sdk_info => :sw_vers do + $SDK_INFO = {} + version_info = `xcodebuild -version -sdk macosx#{$MACOSX_DEPLOYMENT_TARGET}` + raise "invalid SDK" unless !!$?.exitstatus + version_info.strip.each_line do |line| + next if line.strip.empty? + next unless line.include?(':') + match = line.match(/([^:]*): (.*)/) + next unless match + $SDK_INFO[match[1]] = match[2] + end +end + +task :debug => :sw_vers do + $DEFINES = "-DDEBUG #{$DEFINES}" + $CFLAGS = "#{$CFLAGS} -O0 -fno-omit-frame-pointer -g" +end + +task :release => :sw_vers do + $DEFINES = "-DNDEBUG #{$DEFINES}" + $CFLAGS = "#{$CFLAGS} -Ofast" +end + +desc 'configure build type depending on whether ENV var FWDEBUG is set' +task :set_build_type => :sw_vers do + if ENV['FWDEBUG'] + Rake::Task[:debug].invoke + else + Rake::Task[:release].invoke + end +end + +desc 'set build arch to ppc' +task :ppc do + $ARCHFLAGS = '-arch ppc' +end + +desc 'set build arch to x86_64' +task :x86_64 do + $ARCHFLAGS = '-arch x86_64' +end + +desc 'set build arch to i386' +task :x86 do + $ARCHFLAGS = '-arch i386' +end + +task :setup_env => [:set_build_type, :sw_vers, :get_sdk_info] + +directory $obj_dir.to_s +file $obj_dir.to_s => :setup_env + +SRC.zip(OBJ).each do |source, object| + file object.to_s => [source.to_s, $obj_dir.to_s] do + cmd = [ + $CC, + $ARCHFLAGS, + "-std=#{$GCC_C_LANGUAGE_STANDARD}", + $CFLAGS, + $DEFINES, + "-I#{$src_dir}", + '-isysroot', + $SDK_INFO['Path'], + '-c', source, + '-o', object + ] + sh(cmd.map {|s| s.to_s}.join(' ')) + end +end + +file $obj_dir.join('Info.plist').to_s => [$obj_dir.to_s, :setup_env] do + File.open($obj_dir.join('Info.plist').to_s, 'w+') do |file| + indentation = '' + indent = lambda {|num| indentation = ' ' * num } + add = lambda {|str| file << "#{indentation}#{str}\n" } + key = lambda {|str| add["#{str}"] } + string = lambda {|str| add["#{str}"] } + + + add[''] + add[''] + add[''] + + indent[2] + add[''] + indent[4] + + key['CFBundleExecutable'] + string['fsevent_watch'] + key['CFBundleIdentifier'] + string['com.teaspoonofinsanity.fsevent_watch'] + key['CFBundleName'] + string['fsevent_watch'] + key['CFBundleDisplayName'] + string['FSEvent Watch CLI'] + key['NSHumanReadableCopyright'] + string['Copyright (C) 2011-2017 Travis Tilley'] + + key['CFBundleVersion'] + string["#{FSEVENT_WATCH_EXE_VERSION}"] + key['LSMinimumSystemVersion'] + string["#{$MACOSX_DEPLOYMENT_TARGET}"] + key['DTSDKBuild'] + string["#{$SDK_INFO['ProductBuildVersion']}"] + key['DTSDKName'] + string["macosx#{$SDK_INFO['SDKVersion']}"] + key['DTSDKPath'] + string["#{$SDK_INFO['Path']}"] + key['BuildMachineOSBuild'] + string["#{$mac_build_version}"] + key['BuildMachineOSVersion'] + string["#{$mac_product_version}"] + key['FSEWCompiledAt'] + string["#{$now}"] + key['FSEWVersionInfoBuilder'] + string["#{`whoami`.strip}"] + key['FSEWBuildTriple'] + string["#{$BUILD_TRIPLE}"] + key['FSEWCC'] + string["#{$CC}"] + key['FSEWCCVersion'] + string["#{$CCVersion}"] + key['FSEWCFLAGS'] + string["#{$CFLAGS}"] + + indent[2] + add[''] + indent[0] + + add[''] + end +end + +desc 'generate an Info.plist used for code signing as well as embedding build settings into the resulting binary' +task :plist => $obj_dir.join('Info.plist').to_s + + +file $obj_dir.join('fsevent_watch').to_s => [$obj_dir.to_s, $obj_dir.join('Info.plist').to_s] + OBJ.map(&:to_s) do + cmd = [ + $CC, + $ARCHFLAGS, + "-std=#{$GCC_C_LANGUAGE_STANDARD}", + $CFLAGS, + $DEFINES, + "-I#{$src_dir}", + '-isysroot', + $SDK_INFO['Path'], + '-framework CoreFoundation -framework CoreServices', + '-sectcreate __TEXT __info_plist', + $obj_dir.join('Info.plist') + ] + OBJ + [ + '-o', $obj_dir.join('fsevent_watch') + ] + sh(cmd.map {|s| s.to_s}.join(' ')) +end + +desc 'compile and link build/fsevent_watch' +task :build => $obj_dir.join('fsevent_watch').to_s + +desc 'codesign build/fsevent_watch binary' +task :codesign => :build do + sh "codesign -s '#{$CODE_SIGN_IDENTITY}' #{$obj_dir.join('fsevent_watch')}" +end + +directory $this_dir.parent.join('bin') + +desc 'replace bundled fsevent_watch binary with build/fsevent_watch' +task :replace_exe => [$this_dir.parent.join('bin'), :build] do + sh "mv #{$obj_dir.join('fsevent_watch')} #{$final_exe}" +end + +task :default => [:replace_exe, :clean] diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/otnetstring.rb b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/otnetstring.rb new file mode 100644 index 0000000000..cd8de4c253 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/otnetstring.rb @@ -0,0 +1,85 @@ +# Copyright (c) 2011 Konstantin Haase +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + + +require 'stringio' + +module OTNetstring + class Error < StandardError; end + + class << self + def parse(io, encoding = 'internal', fallback_encoding = nil) + fallback_encoding = io.encoding if io.respond_to? :encoding + io = StringIO.new(io) if io.respond_to? :to_str + length, byte = "", nil + + while byte.nil? || byte =~ /\d/ + length << byte if byte + byte = io.read(1) + end + + if length.size > 9 + raise Error, "#{length} is longer than 9 digits" + elsif length !~ /\d+/ + raise Error, "Expected '#{byte}' to be a digit" + end + length = Integer(length) + + case byte + when '#' then Integer io.read(length) + when ',' then with_encoding io.read(length), encoding, fallback_encoding + when '~' then + raise Error, "nil has length of 0, #{length} given" unless length == 0 + when '!' then io.read(length) == 'true' + when '[', '{' + array = [] + start = io.pos + array << parse(io, encoding, fallback_encoding) while io.pos - start < length + raise Error, 'Nested element longer than container' if io.pos - start != length + byte == "{" ? Hash[*array] : array + else + raise Error, "Unknown type '#{byte}'" + end + end + + def encode(obj, string_sep = ',') + case obj + when String then with_encoding "#{obj.bytesize}#{string_sep}#{obj}", "binary" + when Integer then encode(obj.inspect, '#') + when NilClass then "0~" + when Array then encode(obj.map { |e| encode(e) }.join, '[') + when Hash then encode(obj.map { |a,b| encode(a)+encode(b) }.join, '{') + when FalseClass, TrueClass then encode(obj.inspect, '!') + else raise Error, 'cannot encode %p' % obj + end + end + + private + + def with_encoding(str, encoding, fallback = nil) + return str unless str.respond_to? :encode + encoding = Encoding.find encoding if encoding.respond_to? :to_str + encoding ||= fallback + encoding ? str.encode(encoding) : str + rescue EncodingError + str.force_encoding(encoding) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent.rb b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent.rb new file mode 100644 index 0000000000..1ff68a3095 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent.rb @@ -0,0 +1,3 @@ +# -*- encoding: utf-8 -*- +require 'rb-fsevent/fsevent' +require 'rb-fsevent/version' diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/fsevent.rb b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/fsevent.rb new file mode 100644 index 0000000000..23c5aa9edd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/fsevent.rb @@ -0,0 +1,157 @@ +# -*- encoding: utf-8 -*- + +require 'otnetstring' + +class FSEvent + class << self + class_eval <<-END + def root_path + "#{File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))}" + end + END + class_eval <<-END + def watcher_path + "#{File.join(FSEvent.root_path, 'bin', 'fsevent_watch')}" + end + END + end + + attr_reader :paths, :callback + + def initialize args = nil, &block + watch(args, &block) unless args.nil? + end + + def watch(watch_paths, options=nil, &block) + @paths = watch_paths.kind_of?(Array) ? watch_paths : [watch_paths] + @callback = block + + if options.kind_of?(Hash) + @options = parse_options(options) + elsif options.kind_of?(Array) + @options = options + else + @options = [] + end + end + + def run + @pipe = open_pipe + @running = true + + # please note the use of IO::select() here, as it is used specifically to + # preserve correct signal handling behavior in ruby 1.8. + while @running && IO::select([@pipe], nil, nil, nil) + # managing the IO ourselves allows us to be careful and never pass an + # incomplete message to OTNetstring.parse() + message = "" + length = "" + byte = nil + + reading_length = true + found_length = false + + while reading_length + byte = @pipe.read_nonblock(1) + if "#{byte}" =~ /\d/ + length << byte + found_length = true + elsif found_length == false + next + else + reading_length = false + end + end + length = Integer(length, 10) + type = byte + + message << "#{length}#{type}" + message << @pipe.read(length) + + decoded = OTNetstring.parse(message) + modified_paths = decoded["events"].map {|event| event["path"]} + # passing the full info as a second block param feels icky, but such is + # the trap of backward compatibility. + case callback.arity + when 1 + callback.call(modified_paths) + when 2 + callback.call(modified_paths, decoded) + end + end + rescue Interrupt, IOError, Errno::EBADF + ensure + stop + end + + def stop + unless @pipe.nil? + Process.kill('KILL', @pipe.pid) if process_running?(@pipe.pid) + @pipe.close + end + rescue IOError + ensure + @running = false + end + + def process_running?(pid) + begin + Process.kill(0, pid) + true + rescue Errno::ESRCH + false + end + end + + if RUBY_VERSION < '1.9' + def open_pipe + IO.popen("'#{self.class.watcher_path}' #{options_string} #{shellescaped_paths}") + end + + private + + def options_string + @options.join(' ') + end + + def shellescaped_paths + @paths.map {|path| shellescape(path)}.join(' ') + end + + # for Ruby 1.8.6 support + def shellescape(str) + # An empty argument will be skipped, so return empty quotes. + return "''" if str.empty? + + str = str.dup + + # Process as a single byte sequence because not all shell + # implementations are multibyte aware. + str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1") + + # A LF cannot be escaped with a backslash because a backslash + LF + # combo is regarded as line continuation and simply ignored. + str.gsub!(/\n/, "'\n'") + + return str + end + else + def open_pipe + IO.popen([self.class.watcher_path] + @options + @paths) + end + end + + private + + def parse_options(options={}) + opts = ['--format=otnetstring'] + opts.concat(['--since-when', options[:since_when]]) if options[:since_when] + opts.concat(['--latency', options[:latency]]) if options[:latency] + opts.push('--no-defer') if options[:no_defer] + opts.push('--watch-root') if options[:watch_root] + opts.push('--file-events') if options[:file_events] + # ruby 1.9's IO.popen(array-of-stuff) syntax requires all items to be strings + opts.map {|opt| "#{opt}"} + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/version.rb b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/version.rb new file mode 100644 index 0000000000..ced715129b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/lib/rb-fsevent/version.rb @@ -0,0 +1,5 @@ +# -*- encoding: utf-8 -*- + +class FSEvent + VERSION = '0.10.3' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/rb-fsevent.gemspec b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/rb-fsevent.gemspec new file mode 100644 index 0000000000..a7370dbf0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-fsevent-0.10.3/rb-fsevent.gemspec @@ -0,0 +1,27 @@ +# coding: utf-8 +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'rb-fsevent/version' + +Gem::Specification.new do |s| + s.name = 'rb-fsevent' + s.version = FSEvent::VERSION + s.authors = ['Thibaud Guillaume-Gentil', 'Travis Tilley'] + s.email = ['thibaud@thibaud.gg', 'ttilley@gmail.com'] + s.homepage = 'http://rubygems.org/gems/rb-fsevent' + s.summary = 'Very simple & usable FSEvents API' + s.description = 'FSEvents API with Signals catching (without RubyCocoa)' + s.license = 'MIT' + + s.metadata = { + 'source_code_uri' => 'https://github.com/thibaudgg/rb-fsevent' + } + + s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) } + s.require_path = 'lib' + + s.add_development_dependency 'bundler', '~> 1.0' + s.add_development_dependency 'rspec', '~> 3.6' + s.add_development_dependency 'guard-rspec', '~> 4.2' + s.add_development_dependency 'rake', '~> 12.0' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.gitignore new file mode 100644 index 0000000000..79dfcae942 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.gitignore @@ -0,0 +1,21 @@ +*.gem +*.rbc +.bundle +.config +.yardoc +Gemfile.lock +InstalledFiles +_yardoc +coverage +doc/ +lib/bundler/man +pkg +rdoc +spec/reports +test/tmp +test/version_tmp +tmp +.tags* +.rspec_status +/guard/ +/listen/ diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.travis.yml new file mode 100644 index 0000000000..72313cbfd0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.travis.yml @@ -0,0 +1,21 @@ +language: ruby +cache: bundler + +matrix: + include: + - rvm: 2.3 + - rvm: 2.4 + - rvm: 2.5 + - rvm: 2.6 + - rvm: jruby + - rvm: truffleruby + - rvm: jruby-head + - rvm: ruby-head + - rvm: rbx-3 + allow_failures: + - rvm: truffleruby + - rvm: jruby + - rvm: ruby-head + - rvm: jruby-head + - rvm: rbx-3 + fast_finish: true diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.yardopts b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.yardopts new file mode 100644 index 0000000000..cd347c5076 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/.yardopts @@ -0,0 +1,4 @@ +--readme README.md +--markup markdown +--markup-provider maruku +--no-private diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Gemfile new file mode 100644 index 0000000000..9b2ce272ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Gemfile @@ -0,0 +1,16 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in utopia.gemspec +gemspec + +group :development do + gem 'pry' + gem 'pry-coolline' + + gem 'tty-prompt' +end + +group :test do + gem 'simplecov' + gem 'coveralls', require: false +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/LICENSE.md b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/LICENSE.md new file mode 100644 index 0000000000..53caf2a4ce --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/LICENSE.md @@ -0,0 +1,10 @@ +# The MIT License (MIT) + +Copyright, 2009, by [Natalie Weizenbaum](https://github.com/nex3). +Copyright, 2017, by [Samuel G. D. Williams](http://www.codeotaku.com/samuel-williams). + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/README.md b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/README.md new file mode 100644 index 0000000000..032246e459 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/README.md @@ -0,0 +1,103 @@ +# rb-inotify + +This is a simple wrapper over the [inotify](http://en.wikipedia.org/wiki/Inotify) Linux kernel subsystem +for monitoring changes to files and directories. +It uses the [FFI](http://wiki.github.com/ffi/ffi) gem to avoid having to compile a C extension. + +[API documentation is available on rdoc.info](http://rdoc.info/projects/nex3/rb-inotify). + +[![Build Status](https://secure.travis-ci.org/guard/rb-inotify.svg)](http://travis-ci.org/guard/rb-inotify) +[![Code Climate](https://codeclimate.com/github/guard/rb-inotify.svg)](https://codeclimate.com/github/guard/rb-inotify) +[![Coverage Status](https://coveralls.io/repos/guard/rb-inotify/badge.svg)](https://coveralls.io/r/guard/rb-inotify) + +## Basic Usage + +The API is similar to the inotify C API, but with a more Rubyish feel. +First, create a notifier: + + notifier = INotify::Notifier.new + +Then, tell it to watch the paths you're interested in +for the events you care about: + + notifier.watch("path/to/foo.txt", :modify) {puts "foo.txt was modified!"} + notifier.watch("path/to/bar", :moved_to, :create) do |event| + puts "#{event.name} is now in path/to/bar!" + end + +Inotify can watch directories or individual files. +It can pay attention to all sorts of events; +for a full list, see [the inotify man page](http://www.tin.org/bin/man.cgi?section=7&topic=inotify). + +Finally, you get at the events themselves: + + notifier.run + +This will loop infinitely, calling the appropriate callbacks when the files are changed. +If you don't want infinite looping, +you can also block until there are available events, +process them all at once, +and then continue on your merry way: + + notifier.process + +## Advanced Usage + +Sometimes it's necessary to have finer control over the underlying IO operations +than is provided by the simple callback API. +The trick to this is that the \{INotify::Notifier#to_io Notifier#to_io} method +returns a fully-functional IO object, +with a file descriptor and everything. +This means, for example, that it can be passed to `IO#select`: + + # Wait 10 seconds for an event then give up + if IO.select([notifier.to_io], [], [], 10) + notifier.process + end + +It can even be used with EventMachine: + + require 'eventmachine' + + EM.run do + EM.watch notifier.to_io do + notifier.process + end + end + +Unfortunately, this currently doesn't work under JRuby. +JRuby currently doesn't use native file descriptors for the IO object, +so we can't use the notifier's file descriptor as a stand-in. + +## Contributing + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request + +## License + +Released under the MIT license. + +Copyright, 2009, by [Natalie Weizenbaum](https://github.com/nex3). +Copyright, 2017, by [Samuel G. D. Williams](http://www.codeotaku.com/samuel-williams). + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Rakefile new file mode 100644 index 0000000000..bc3a3b6b8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/Rakefile @@ -0,0 +1,14 @@ +require "bundler/gem_tasks" +require 'rspec/core/rake_task' + +RSpec::Core::RakeTask.new(:spec) + +desc "Run tests" +task :default => :spec + +task :console do + require 'rb-inotify' + require 'pry' + + binding.pry +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify.rb new file mode 100644 index 0000000000..8897aefabe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify.rb @@ -0,0 +1,15 @@ +require 'rb-inotify/version' +require 'rb-inotify/native' +require 'rb-inotify/native/flags' +require 'rb-inotify/notifier' +require 'rb-inotify/watcher' +require 'rb-inotify/event' +require 'rb-inotify/errors' + +# The root module of the library, which is laid out as so: +# +# * {Notifier} -- The main class, where the notifications are set up +# * {Watcher} -- A watcher for a single file or directory +# * {Event} -- An filesystem event notification +module INotify +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/errors.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/errors.rb new file mode 100644 index 0000000000..afee709935 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/errors.rb @@ -0,0 +1,3 @@ +module INotify + class QueueOverflowError < RuntimeError; end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/event.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/event.rb new file mode 100644 index 0000000000..11701acfa1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/event.rb @@ -0,0 +1,146 @@ +module INotify + # An event caused by a change on the filesystem. + # Each {Watcher} can fire many events, + # which are passed to that watcher's callback. + class Event + # A list of other events that are related to this one. + # Currently, this is only used for files that are moved within the same directory: + # the `:moved_from` and the `:moved_to` events will be related. + # + # @return [Array] + attr_reader :related + + # The name of the file that the event occurred on. + # This is only set for events that occur on files in directories; + # otherwise, it's `""`. + # Similarly, if the event is being fired for the directory itself + # the name will be `""` + # + # This pathname is relative to the enclosing directory. + # For the absolute pathname, use \{#absolute\_name}. + # Note that when the `:recursive` flag is passed to {Notifier#watch}, + # events in nested subdirectories will still have a `#name` field + # relative to their immediately enclosing directory. + # For example, an event on the file `"foo/bar/baz"` + # will have name `"baz"`. + # + # @return [String] + attr_reader :name + + # The {Notifier} that fired this event. + # + # @return [Notifier] + attr_reader :notifier + + # An integer specifying that this event is related to some other event, + # which will have the same cookie. + # + # Currently, this is only used for files that are moved within the same directory. + # Both the `:moved_from` and the `:moved_to` events will have the same cookie. + # + # @private + # @return [Fixnum] + attr_reader :cookie + + # The {Watcher#id id} of the {Watcher} that fired this event. + # + # @private + # @return [Fixnum] + attr_reader :watcher_id + + # Returns the {Watcher} that fired this event. + # + # @return [Watcher] + def watcher + @watcher ||= @notifier.watchers[@watcher_id] + end + + # The absolute path of the file that the event occurred on. + # + # This is actually only as absolute as the path passed to the {Watcher} + # that created this event. + # However, it is relative to the working directory, + # assuming that hasn't changed since the watcher started. + # + # @return [String] + def absolute_name + return watcher.path if name.empty? + return File.join(watcher.path, name) + end + + # Returns the flags that describe this event. + # This is generally similar to the input to {Notifier#watch}, + # except that it won't contain options flags nor `:all_events`, + # and it may contain one or more of the following flags: + # + # `:unmount` + # : The filesystem containing the watched file or directory was unmounted. + # + # `:ignored` + # : The \{#watcher watcher} was closed, or the watched file or directory was deleted. + # + # `:isdir` + # : The subject of this event is a directory. + # + # @return [Array] + def flags + @flags ||= Native::Flags.from_mask(@native[:mask]) + end + + # Constructs an {Event} object from a string of binary data, + # and destructively modifies the string to get rid of the initial segment + # used to construct the Event. + # + # @private + # @param data [String] The string to be modified + # @param notifier [Notifier] The {Notifier} that fired the event + # @return [Event, nil] The event, or `nil` if the string is empty + def self.consume(data, notifier) + return nil if data.empty? + ev = new(data, notifier) + data.replace data[ev.size..-1] + ev + end + + # Creates an event from a string of binary data. + # Differs from {Event.consume} in that it doesn't modify the string. + # + # @private + # @param data [String] The data string + # @param notifier [Notifier] The {Notifier} that fired the event + def initialize(data, notifier) + ptr = FFI::MemoryPointer.from_string(data) + @native = Native::Event.new(ptr) + @related = [] + @cookie = @native[:cookie] + @name = fix_encoding(data[@native.size, @native[:len]].gsub(/\0+$/, '')) + @notifier = notifier + @watcher_id = @native[:wd] + + raise QueueOverflowError.new("inotify event queue has overflowed.") if @native[:mask] & Native::Flags::IN_Q_OVERFLOW != 0 + end + + # Calls the callback of the watcher that fired this event, + # passing in the event itself. + # + # @private + def callback! + watcher && watcher.callback!(self) + end + + # Returns the size of this event object in bytes, + # including the \{#name} string. + # + # @return [Fixnum] + def size + @native.size + @native[:len] + end + + private + + def fix_encoding(name) + name.force_encoding('filesystem') if name.respond_to?(:force_encoding) + name + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native.rb new file mode 100644 index 0000000000..6da36eb1cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native.rb @@ -0,0 +1,33 @@ +require 'ffi' + +module INotify + # This module contains the low-level foreign-function interface code + # for dealing with the inotify C APIs. + # It's an implementation detail, and not meant for users to deal with. + # + # @private + module Native + extend FFI::Library + ffi_lib FFI::Library::LIBC + begin + ffi_lib 'inotify' + rescue LoadError + end + + # The C struct describing an inotify event. + # + # @private + class Event < FFI::Struct + layout( + :wd, :int, + :mask, :uint32, + :cookie, :uint32, + :len, :uint32) + end + + attach_function :inotify_init, [], :int + attach_function :inotify_add_watch, [:int, :string, :uint32], :int + attach_function :inotify_rm_watch, [:int, :uint32], :int + attach_function :fpathconf, [:int, :int], :long + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native/flags.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native/flags.rb new file mode 100644 index 0000000000..5640130630 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/native/flags.rb @@ -0,0 +1,94 @@ +module INotify + module Native + # A module containing all the inotify flags + # to be passed to {Notifier#watch}. + # + # @private + module Flags + # File was accessed. + IN_ACCESS = 0x00000001 + # Metadata changed. + IN_ATTRIB = 0x00000004 + # Writtable file was closed. + IN_CLOSE_WRITE = 0x00000008 + # File was modified. + IN_MODIFY = 0x00000002 + # Unwrittable file closed. + IN_CLOSE_NOWRITE = 0x00000010 + # File was opened. + IN_OPEN = 0x00000020 + # File was moved from X. + IN_MOVED_FROM = 0x00000040 + # File was moved to Y. + IN_MOVED_TO = 0x00000080 + # Subfile was created. + IN_CREATE = 0x00000100 + # Subfile was deleted. + IN_DELETE = 0x00000200 + # Self was deleted. + IN_DELETE_SELF = 0x00000400 + # Self was moved. + IN_MOVE_SELF = 0x00000800 + + ## Helper events. + + # Close. + IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + # Moves. + IN_MOVE = (IN_MOVED_FROM | IN_MOVED_TO) + # All events which a program can wait on. + IN_ALL_EVENTS = (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | + IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | IN_MOVED_TO | IN_CREATE | + IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF) + + + ## Special flags. + + # Only watch the path if it is a directory. + IN_ONLYDIR = 0x01000000 + # Do not follow a sym link. + IN_DONT_FOLLOW = 0x02000000 + # Add to the mask of an already existing watch. + IN_MASK_ADD = 0x20000000 + # Only send event once. + IN_ONESHOT = 0x80000000 + + + ## Events sent by the kernel. + + # Backing fs was unmounted. + IN_UNMOUNT = 0x00002000 + # Event queued overflowed. + IN_Q_OVERFLOW = 0x00004000 + # File was ignored. + IN_IGNORED = 0x00008000 + # Event occurred against dir. + IN_ISDIR = 0x40000000 + + ## fpathconf Macros + + # returns the maximum length of a filename in the directory path or fd that the process is allowed to create. The corresponding macro is _POSIX_NAME_MAX. + PC_NAME_MAX = 3 + + # Converts a list of flags to the bitmask that the C API expects. + # + # @param flags [Array] + # @return [Fixnum] + def self.to_mask(flags) + flags.map {|flag| const_get("IN_#{flag.to_s.upcase}")}. + inject(0) {|mask, flag| mask | flag} + end + + # Converts a bitmask from the C API into a list of flags. + # + # @param mask [Fixnum] + # @return [Array] + def self.from_mask(mask) + constants.map {|c| c.to_s}.select do |c| + next false unless c =~ /^IN_/ + const_get(c) & mask != 0 + end.map {|c| c.sub("IN_", "").downcase.to_sym} - [:all_events] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/notifier.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/notifier.rb new file mode 100644 index 0000000000..5884e9590f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/notifier.rb @@ -0,0 +1,315 @@ +require 'thread' + +module INotify + # Notifier wraps a single instance of inotify. + # It's possible to have more than one instance, + # but usually unnecessary. + # + # @example + # # Create the notifier + # notifier = INotify::Notifier.new + # + # # Run this callback whenever the file path/to/foo.txt is read + # notifier.watch("path/to/foo.txt", :access) do + # puts "Foo.txt was accessed!" + # end + # + # # Watch for any file in the directory being deleted + # # or moved out of the directory. + # notifier.watch("path/to/directory", :delete, :moved_from) do |event| + # # The #name field of the event object contains the name of the affected file + # puts "#{event.name} is no longer in the directory!" + # end + # + # # Nothing happens until you run the notifier! + # notifier.run + class Notifier + # A list of directories that should never be recursively watched. + # + # * Files in `/dev/fd` sometimes register as directories, but are not enumerable. + RECURSIVE_BLACKLIST = %w[/dev/fd] + + # A hash from {Watcher} ids to the instances themselves. + # + # @private + # @return [{Fixnum => Watcher}] + attr_reader :watchers + + # The underlying file descriptor for this notifier. + # This is a valid OS file descriptor, and can be used as such + # (except under JRuby -- see \{#to\_io}). + # + # @return [Fixnum] + def fd + @handle.fileno + end + + # Creates a new {Notifier}. + # + # @return [Notifier] + # @raise [SystemCallError] if inotify failed to initialize for some reason + def initialize + @running = Mutex.new + @pipe = IO.pipe + + @watchers = {} + + fd = Native.inotify_init + unless fd < 0 + @handle = IO.new(fd) + return + end + + raise SystemCallError.new( + "Failed to initialize inotify" + + case FFI.errno + when Errno::EMFILE::Errno; ": the user limit on the total number of inotify instances has been reached." + when Errno::ENFILE::Errno; ": the system limit on the total number of file descriptors has been reached." + when Errno::ENOMEM::Errno; ": insufficient kernel memory is available." + else; "" + end, + FFI.errno) + end + + # Returns a Ruby IO object wrapping the underlying file descriptor. + # Since this file descriptor is fully functional (except under JRuby), + # this IO object can be used in any way a Ruby-created IO object can. + # This includes passing it to functions like `#select`. + # + # Note that this always returns the same IO object. + # Creating lots of IO objects for the same file descriptor + # can cause some odd problems. + # + # **This is not supported under JRuby**. + # JRuby currently doesn't use native file descriptors for the IO object, + # so we can't use this file descriptor as a stand-in. + # + # @return [IO] An IO object wrapping the file descriptor + # @raise [NotImplementedError] if this is being called in JRuby + def to_io + @handle + end + + # Watches a file or directory for changes, + # calling the callback when there are. + # This is only activated once \{#process} or \{#run} is called. + # + # **Note that by default, this does not recursively watch subdirectories + # of the watched directory**. + # To do so, use the `:recursive` flag. + # + # ## Flags + # + # `:access` + # : A file is accessed (that is, read). + # + # `:attrib` + # : A file's metadata is changed (e.g. permissions, timestamps, etc). + # + # `:close_write` + # : A file that was opened for writing is closed. + # + # `:close_nowrite` + # : A file that was not opened for writing is closed. + # + # `:modify` + # : A file is modified. + # + # `:open` + # : A file is opened. + # + # ### Directory-Specific Flags + # + # These flags only apply when a directory is being watched. + # + # `:moved_from` + # : A file is moved out of the watched directory. + # + # `:moved_to` + # : A file is moved into the watched directory. + # + # `:create` + # : A file is created in the watched directory. + # + # `:delete` + # : A file is deleted in the watched directory. + # + # `:delete_self` + # : The watched file or directory itself is deleted. + # + # `:move_self` + # : The watched file or directory itself is moved. + # + # ### Helper Flags + # + # These flags are just combinations of the flags above. + # + # `:close` + # : Either `:close_write` or `:close_nowrite` is activated. + # + # `:move` + # : Either `:moved_from` or `:moved_to` is activated. + # + # `:all_events` + # : Any event above is activated. + # + # ### Options Flags + # + # These flags don't actually specify events. + # Instead, they specify options for the watcher. + # + # `:onlydir` + # : Only watch the path if it's a directory. + # + # `:dont_follow` + # : Don't follow symlinks. + # + # `:mask_add` + # : Add these flags to the pre-existing flags for this path. + # + # `:oneshot` + # : Only send the event once, then shut down the watcher. + # + # `:recursive` + # : Recursively watch any subdirectories that are created. + # Note that this is a feature of rb-inotify, + # rather than of inotify itself, which can only watch one level of a directory. + # This means that the {Event#name} field + # will contain only the basename of the modified file. + # When using `:recursive`, {Event#absolute_name} should always be used. + # + # @param path [String] The path to the file or directory + # @param flags [Array] Which events to watch for + # @yield [event] A block that will be called + # whenever one of the specified events occur + # @yieldparam event [Event] The Event object containing information + # about the event that occured + # @return [Watcher] A Watcher set up to watch this path for these events + # @raise [SystemCallError] if the file or directory can't be watched, + # e.g. if the file isn't found, read access is denied, + # or the flags don't contain any events + def watch(path, *flags, &callback) + return Watcher.new(self, path, *flags, &callback) unless flags.include?(:recursive) + + dir = Dir.new(path) + + dir.each do |base| + d = File.join(path, base) + binary_d = d.respond_to?(:force_encoding) ? d.dup.force_encoding('BINARY') : d + next if binary_d =~ /\/\.\.?$/ # Current or parent directory + next if RECURSIVE_BLACKLIST.include?(d) + next if flags.include?(:dont_follow) && File.symlink?(d) + next if !File.directory?(d) + + watch(d, *flags, &callback) + end + + dir.close + + rec_flags = [:create, :moved_to] + return watch(path, *((flags - [:recursive]) | rec_flags)) do |event| + callback.call(event) if flags.include?(:all_events) || !(flags & event.flags).empty? + next if (rec_flags & event.flags).empty? || !event.flags.include?(:isdir) + begin + watch(event.absolute_name, *flags, &callback) + rescue Errno::ENOENT + # If the file has been deleted since the glob was run, we don't want to error out. + end + end + end + + # Starts the notifier watching for filesystem events. + # Blocks until \{#stop} is called. + # + # @see #process + def run + @running.synchronize do + @stop = false + + process until @stop + end + end + + # Stop watching for filesystem events. + # That is, if we're in a \{#run} loop, + # exit out as soon as we finish handling the events. + def stop + @stop = true + @pipe.last.write "." + + @running.synchronize do + # no-op: we just needed to wait until the lock was available + end + end + + # Blocks until there are one or more filesystem events + # that this notifier has watchers registered for. + # Once there are events, the appropriate callbacks are called + # and this function returns. + # + # @see #run + def process + read_events.each do |event| + event.callback! + event.flags.include?(:ignored) && event.notifier.watchers.delete(event.watcher_id) + end + end + + # Close the notifier. + # + # @raise [SystemCallError] if closing the underlying file descriptor fails. + def close + stop + @handle.close + @watchers.clear + end + + # Blocks until there are one or more filesystem events that this notifier + # has watchers registered for. Once there are events, returns their {Event} + # objects. + # + # This can return an empty list if the watcher was closed elsewhere. + # + # {#run} or {#process} are ususally preferable to calling this directly. + def read_events + size = Native::Event.size + Native.fpathconf(fd, Native::Flags::PC_NAME_MAX) + 1 + tries = 1 + + begin + data = readpartial(size) + rescue SystemCallError => er + # EINVAL means that there's more data to be read + # than will fit in the buffer size + raise er unless er.errno == Errno::EINVAL::Errno && tries < 5 + size *= 2 + tries += 1 + retry + end + return [] if data.nil? + + events = [] + cookies = {} + while event = Event.consume(data, self) + events << event + next if event.cookie == 0 + cookies[event.cookie] ||= [] + cookies[event.cookie] << event + end + cookies.each {|c, evs| evs.each {|ev| ev.related.replace(evs - [ev]).freeze}} + events + end + + private + + # Same as IO#readpartial, or as close as we need. + def readpartial(size) + readable, = select([@handle, @pipe.first]) + return nil if readable.include?(@pipe.first) + @handle.readpartial(size) + rescue Errno::EBADF + # If the IO has already been closed, reading from it will cause + # Errno::EBADF. + nil + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/version.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/version.rb new file mode 100644 index 0000000000..ecb53138ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/version.rb @@ -0,0 +1,24 @@ +# Copyright, 2012, by Natalie Weizenbaum. +# Copyright, 2017, by Samuel G. D. Williams. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +module INotify + VERSION = '0.10.0' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/watcher.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/watcher.rb new file mode 100644 index 0000000000..1205e2dea5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/lib/rb-inotify/watcher.rb @@ -0,0 +1,88 @@ +module INotify + # Watchers monitor a single path for changes, + # specified by {INotify::Notifier#watch event flags}. + # A watcher is usually created via \{Notifier#watch}. + # + # One {Notifier} may have many {Watcher}s. + # The Notifier actually takes care of the checking for events, + # via \{Notifier#run #run} or \{Notifier#process #process}. + # The main purpose of having Watcher objects + # is to be able to disable them using \{#close}. + class Watcher + # The {Notifier} that this Watcher belongs to. + # + # @return [Notifier] + attr_reader :notifier + + # The path that this Watcher is watching. + # + # @return [String] + attr_reader :path + + # The {INotify::Notifier#watch flags} + # specifying the events that this Watcher is watching for, + # and potentially some options as well. + # + # @return [Array] + attr_reader :flags + + # The id for this Watcher. + # Used to retrieve this Watcher from {Notifier#watchers}. + # + # @private + # @return [Fixnum] + attr_reader :id + + # Calls this Watcher's callback with the given {Event}. + # + # @private + # @param event [Event] + def callback!(event) + @callback[event] + end + + # Disables this Watcher, so that it doesn't fire any more events. + # + # @raise [SystemCallError] if the watch fails to be disabled for some reason + def close + if Native.inotify_rm_watch(@notifier.fd, @id) == 0 + @notifier.watchers.delete(@id) + return + end + + raise SystemCallError.new("Failed to stop watching #{path.inspect}", + FFI.errno) + end + + # Creates a new {Watcher}. + # + # @private + # @see Notifier#watch + def initialize(notifier, path, *flags, &callback) + @notifier = notifier + @callback = callback || proc {} + @path = path + @flags = flags.freeze + @id = Native.inotify_add_watch(@notifier.fd, path.dup, + Native::Flags.to_mask(flags)) + + unless @id < 0 + @notifier.watchers[@id] = self + return + end + + raise SystemCallError.new( + "Failed to watch #{path.inspect}" + + case FFI.errno + when Errno::EACCES::Errno; ": read access to the given file is not permitted." + when Errno::EBADF::Errno; ": the given file descriptor is not valid." + when Errno::EFAULT::Errno; ": path points outside of the process's accessible address space." + when Errno::EINVAL::Errno; ": the given event mask contains no legal events; or fd is not an inotify file descriptor." + when Errno::ENOMEM::Errno; ": insufficient kernel memory was available." + when Errno::ENOSPC::Errno; ": The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource." + else; "" + end, + FFI.errno) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/rb-inotify.gemspec b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/rb-inotify.gemspec new file mode 100644 index 0000000000..e83eafeb9b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/rb-inotify.gemspec @@ -0,0 +1,28 @@ +# -*- encoding: utf-8 -*- +require_relative 'lib/rb-inotify/version' + +Gem::Specification.new do |spec| + spec.name = 'rb-inotify' + spec.version = INotify::VERSION + spec.platform = Gem::Platform::RUBY + + spec.summary = 'A Ruby wrapper for Linux inotify, using FFI' + spec.authors = ['Natalie Weizenbaum', 'Samuel Williams'] + spec.email = ['nex342@gmail.com', 'samuel.williams@oriontransfer.co.nz'] + spec.homepage = 'https://github.com/guard/rb-inotify' + spec.licenses = ['MIT'] + + spec.files = `git ls-files`.split($/) + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } + spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) + spec.require_paths = ["lib"] + + spec.required_ruby_version = '>= 2.2' + + spec.add_dependency "ffi", "~> 1.0" + + spec.add_development_dependency "rspec", "~> 3.6" + spec.add_development_dependency "bundler" + spec.add_development_dependency "rake" + spec.add_development_dependency "concurrent-ruby" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/inotify_spec.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/inotify_spec.rb new file mode 100644 index 0000000000..b73ea3033f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/inotify_spec.rb @@ -0,0 +1,9 @@ +require 'spec_helper' + +describe INotify do + describe "version" do + it "exists" do + expect(INotify::VERSION).to be_truthy + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/notifier_spec.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/notifier_spec.rb new file mode 100644 index 0000000000..4d7c1d0c49 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/notifier_spec.rb @@ -0,0 +1,170 @@ +require 'spec_helper' +require 'tmpdir' +require 'concurrent' + +describe INotify::Notifier do + describe "instance" do + around do |block| + Dir.mktmpdir do |dir| + @root = Pathname.new(dir) + @notifier = INotify::Notifier.new + + begin + block.call + ensure + @notifier.close + end + end + end + + let(:dir) do + @root.join("foo").tap(&:mkdir) + end + + let(:another_dir) do + @root.join("bar").tap(&:mkdir) + end + + it "stops" do + @notifier.stop + end + + describe :process do + it "gets events" do + events = recording(dir, :create) + dir.join("test.txt").write("hello world") + + @notifier.process + + expect(events.size).to eq(1) + expect(events.first.name).to eq("test.txt") + expect(events.first.absolute_name).to eq(dir.join("test.txt").to_s) + end + + it "gets simultaneous events" do + events = recording(dir, :create) + + dir.join("one.txt").write("hello world") + dir.join("two.txt").write("hello world") + + @notifier.process + + expect(events.map(&:name)).to match_array(%w(one.txt two.txt)) + end + + it "separates events between watches" do + bar_events = nil + + foo_events = recording(dir, :create) + bar_events = recording(another_dir, :create) + + dir.join("test.txt").write("hello world") + another_dir.join("test_two.txt").write("hello world") + + @notifier.process + + expect(foo_events.size).to eq(1) + expect(foo_events.first.name).to eq("test.txt") + expect(foo_events.first.absolute_name).to eq(dir.join("test.txt").to_s) + + expect(bar_events.size).to eq(1) + expect(bar_events.first.name).to eq("test_two.txt") + expect(bar_events.first.absolute_name).to eq(another_dir.join("test_two.txt").to_s) + end + end + + describe :run do + it "processes repeatedly until stopped" do + barriers = Array.new(3) { Concurrent::Event.new } + barrier_queue = barriers.dup + events = recording(dir, :create) { barrier_queue.shift.set } + + run_thread = Thread.new { @notifier.run } + + dir.join("one.txt").write("hello world") + barriers.shift.wait(1) or raise "timeout" + + expect(events.map(&:name)).to match_array(%w(one.txt)) + + dir.join("two.txt").write("hello world") + barriers.shift.wait(1) or raise "timeout" + + expect(events.map(&:name)).to match_array(%w(one.txt two.txt)) + + @notifier.stop + + dir.join("three.txt").write("hello world") + barriers.shift.wait(1) + + dir.join("four.txt").write("hello world") + run_thread.join + + expect(events.map(&:name)).to match_array(%w(one.txt two.txt)) + end + end + + describe :fd do + it "returns an integer" do + expect(@notifier.fd).to be_an(Integer) + end + end + + describe :to_io do + it "returns a ruby IO" do + expect(@notifier.to_io).to be_an(::IO) + end + + it "matches the fd" do + expect(@notifier.to_io.fileno).to eq(@notifier.fd) + end + + it "caches its result" do + expect(@notifier.to_io).to be(@notifier.to_io) + end + + it "is selectable" do + events = recording(dir, :create) + expect(select([@notifier.to_io], nil, nil, 0.2)).to be_nil + + dir.join("test.txt").write("hello world") + expect(select([@notifier.to_io], nil, nil, 0.2)).to eq([[@notifier.to_io], [], []]) + + @notifier.process + expect(select([@notifier.to_io], nil, nil, 0.2)).to be_nil + end + end + + private + + def recording(dir, *flags, callback: nil) + events = [] + @notifier.watch(dir.to_s, *flags) do |event| + events << event + yield if block_given? + end + + events + end + end + + describe "mixed instances" do + it "doesn't tangle fds" do + notifiers = Array.new(30) { INotify::Notifier.new } + notifiers.each(&:to_io) + + one = Array.new(10) { IO.pipe.last } + notifiers.each(&:close) + + two = Array.new(10) { IO.pipe.last } + + notifiers = nil + GC.start + + _, writable, _ = select(nil, one, nil, 1) + expect(writable).to match_array(one) + + _, writable, _ = select(nil, two, nil, 1) + expect(writable).to match_array(two) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/spec_helper.rb new file mode 100644 index 0000000000..b62f9cf5ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rb-inotify-0.10.0/spec/spec_helper.rb @@ -0,0 +1,29 @@ + +if ENV['COVERAGE'] || ENV['TRAVIS'] + begin + require 'simplecov' + + SimpleCov.start do + add_filter "/spec/" + end + + if ENV['TRAVIS'] + require 'coveralls' + Coveralls.wear! + end + rescue LoadError + warn "Could not load simplecov: #{$!}" + end +end + +require "bundler/setup" +require "rb-inotify" + +RSpec.configure do |config| + # Enable flags like --only-failures and --next-failure + config.example_status_persistence_file_path = ".rspec_status" + + config.expect_with :rspec do |c| + c.syntax = :expect + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/Gemfile new file mode 100644 index 0000000000..700b0cea01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/Gemfile @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +source 'http://rubygems.org' + +gemspec + +gem 'bundler', '~> 1.15' +gem 'rake' + +gem 'minitest', '>= 5.0' +gem 'minitest-power_assert' + +gem 'rubocop', '~> 0.49.1' + +# don't try to install redcarpet under jruby +gem 'redcarpet', :platforms => :ruby + +group :development do + gem 'pry' + + # docs + gem 'yard' + gem 'github-markup' + + # for visual tests + gem 'sinatra' + gem 'shotgun' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/LICENSE b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/LICENSE new file mode 100644 index 0000000000..660592c179 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/LICENSE @@ -0,0 +1,186 @@ +# MIT license. See http://www.opensource.org/licenses/mit-license.php + +Copyright (c) 2012 Jeanine Adkisson. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +# SPECIAL NOTE: +Many of the lexers in this project are adaptations of those in Pygments +(pygments.org). The license for Pygments is as follows: + +# BEGIN pygments/LICENSE # + +Copyright (c) 2006-2012 by the respective authors (see AUTHORS file). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# END pygments/LICENSE # + +The contents of the AUTHORS file at the time of porting was: + +# BEGIN pygments/AUTHORS # + +Pygments is written and maintained by Georg Brandl . + +Major developers are Tim Hatch and Armin Ronacher +. + +Other contributors, listed alphabetically, are: + +* Sam Aaron -- Ioke lexer +* Kumar Appaiah -- Debian control lexer +* Ali Afshar -- image formatter +* Andreas Amann -- AppleScript lexer +* Jeffrey Arnold -- R/S lexer, BUGS lexers +* Jeremy Ashkenas -- CoffeeScript lexer +* Stefan Matthias Aust -- Smalltalk lexer +* Ben Bangert -- Mako lexers +* Max Battcher -- Darcs patch lexer +* Paul Baumgart, 280 North, Inc. -- Objective-J lexer +* Michael Bayer -- Myghty lexers +* John Benediktsson -- Factor lexer +* Christopher Bertels -- Fancy lexer +* Jarrett Billingsley -- MiniD lexer +* Adam Blinkinsop -- Haskell, Redcode lexers +* Frits van Bommel -- assembler lexers +* Pierre Bourdon -- bugfixes +* Hiram Chirino -- Scaml and Jade lexers +* Leaf Corcoran -- MoonScript lexer +* Christopher Creutzig -- MuPAD lexer +* Pete Curry -- bugfixes +* Owen Durni -- haXe lexer +* Nick Efford -- Python 3 lexer +* Sven Efftinge -- Xtend lexer +* Artem Egorkine -- terminal256 formatter +* James H. Fisher -- PostScript lexer +* Carlos Galdino -- Elixir and Elixir Console lexers +* Naveen Garg -- Autohotkey lexer +* Laurent Gautier -- R/S lexer +* Alex Gaynor -- PyPy log lexer +* Bertrand Goetzmann -- Groovy lexer +* Krzysiek Goj -- Scala lexer +* Matt Good -- Genshi, Cheetah lexers +* Patrick Gotthardt -- PHP namespaces support +* Olivier Guibe -- Asymptote lexer +* Martin Harriman -- SNOBOL lexer +* Matthew Harrison -- SVG formatter +* Steven Hazel -- Tcl lexer +* Aslak Hellesøy -- Gherkin lexer +* Greg Hendershott -- Racket lexer +* Jordi Gutiérrez Hermoso -- Octave lexer +* David Hess, Fish Software, Inc. -- Objective-J lexer +* Varun Hiremath -- Debian control lexer +* Doug Hogan -- Mscgen lexer +* Ben Hollis -- Mason lexer +* Tim Howard -- BlitzMax lexer +* Ivan Inozemtsev -- Fantom lexer +* Brian R. Jackson -- Tea lexer +* Dennis Kaarsemaker -- sources.list lexer +* Igor Kalnitsky -- vhdl lexer +* Eric Knibbe -- Lasso lexer +* Adam Koprowski -- Opa lexer +* Benjamin Kowarsch -- Modula-2 lexer +* Alexander Kriegisch -- Kconfig and AspectJ lexers +* Marek Kubica -- Scheme lexer +* Jochen Kupperschmidt -- Markdown processor +* Gerd Kurzbach -- Modelica lexer +* Olov Lassus -- Dart lexer +* Sylvestre Ledru -- Scilab lexer +* Mark Lee -- Vala lexer +* Ben Mabey -- Gherkin lexer +* Simone Margaritelli -- Hybris lexer +* Kirk McDonald -- D lexer +* Gordon McGregor -- SystemVerilog lexer +* Stephen McKamey -- Duel/JBST lexer +* Brian McKenna -- F# lexer +* Lukas Meuser -- BBCode formatter, Lua lexer +* Paul Miller -- LiveScript lexer +* Hong Minhee -- HTTP lexer +* Michael Mior -- Awk lexer +* Jon Morton -- Rust lexer +* Paulo Moura -- Logtalk lexer +* Mher Movsisyan -- DTD lexer +* Ana Nelson -- Ragel, ANTLR, R console lexers +* Nam T. Nguyen -- Monokai style +* Jesper Noehr -- HTML formatter "anchorlinenos" +* Mike Nolta -- Julia lexer +* Jonas Obrist -- BBCode lexer +* David Oliva -- Rebol lexer +* Jon Parise -- Protocol buffers lexer +* Ronny Pfannschmidt -- BBCode lexer +* Benjamin Peterson -- Test suite refactoring +* Dominik Picheta -- Nimrod lexer +* Clément Prévost -- UrbiScript lexer +* Kashif Rasul -- CUDA lexer +* Justin Reidy -- MXML lexer +* Norman Richards -- JSON lexer +* Lubomir Rintel -- GoodData MAQL and CL lexers +* Andre Roberge -- Tango style +* Konrad Rudolph -- LaTeX formatter enhancements +* Mario Ruggier -- Evoque lexers +* Stou Sandalski -- NumPy, FORTRAN, tcsh and XSLT lexers +* Matteo Sasso -- Common Lisp lexer +* Joe Schafer -- Ada lexer +* Ken Schutte -- Matlab lexers +* Tassilo Schweyer -- Io, MOOCode lexers +* Joerg Sieker -- ABAP lexer +* Robert Simmons -- Standard ML lexer +* Kirill Simonov -- YAML lexer +* Steve Spigarelli -- XQuery lexer +* Jerome St-Louis -- eC lexer +* James Strachan -- Kotlin lexer +* Tiberius Teng -- default style overhaul +* Jeremy Thurgood -- Erlang, Squid config lexers +* Erick Tryzelaar -- Felix lexer +* Daniele Varrazzo -- PostgreSQL lexers +* Abe Voelker -- OpenEdge ABL lexer +* Whitney Young -- ObjectiveC lexer +* Matthias Vallentin -- Bro lexer +* Nathan Weizenbaum -- Haml and Sass lexers +* Dietmar Winkler -- Modelica lexer +* Nils Winter -- Smalltalk lexer +* Davy Wybiral -- Clojure lexer +* Diego Zamboni -- CFengine3 lexer +* Alex Zimin -- Nemerle lexer + +Many thanks for all contributions! + +# END pygments/AUTHORS # diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/bin/rougify b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/bin/rougify new file mode 100755 index 0000000000..1a7cc5be7d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/bin/rougify @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require 'pathname' +ROOT_DIR = Pathname.new(__FILE__).dirname.parent +load ROOT_DIR.join('lib/rouge.rb') +load ROOT_DIR.join('lib/rouge/cli.rb') +Signal.trap('PIPE', 'SYSTEM_DEFAULT') if Signal.list.include? 'PIPE' + +begin + Rouge::CLI.parse(ARGV).run +rescue Rouge::CLI::Error => e + puts e.message + exit e.status +rescue Interrupt + $stderr.puts "\nrouge: interrupted" + exit 2 +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge.rb new file mode 100644 index 0000000000..6aa9c55c7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge.rb @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# stdlib +require 'pathname' + +# The containing module for Rouge +module Rouge + class << self + def reload! + Object.send :remove_const, :Rouge + load __FILE__ + end + + # Highlight some text with a given lexer and formatter. + # + # @example + # Rouge.highlight('@foo = 1', 'ruby', 'html') + # Rouge.highlight('var foo = 1;', 'js', 'terminal256') + # + # # streaming - chunks become available as they are lexed + # Rouge.highlight(large_string, 'ruby', 'html') do |chunk| + # $stdout.print chunk + # end + def highlight(text, lexer, formatter, &b) + lexer = Lexer.find(lexer) unless lexer.respond_to? :lex + raise "unknown lexer #{lexer}" unless lexer + + formatter = Formatter.find(formatter) unless formatter.respond_to? :format + raise "unknown formatter #{formatter}" unless formatter + + formatter.format(lexer.lex(text), &b) + end + end +end + +load_dir = Pathname.new(__FILE__).dirname +load load_dir.join('rouge/version.rb') + +load load_dir.join('rouge/util.rb') + +load load_dir.join('rouge/text_analyzer.rb') +load load_dir.join('rouge/token.rb') + +load load_dir.join('rouge/lexer.rb') +load load_dir.join('rouge/regex_lexer.rb') +load load_dir.join('rouge/template_lexer.rb') + +lexers_dir = load_dir.join('rouge/lexers') +Dir.glob(lexers_dir.join('*.rb')).each do |f| + Rouge::Lexers.load_lexer(Pathname.new(f).relative_path_from(lexers_dir).to_s) +end + +load load_dir.join('rouge/guesser.rb') +load load_dir.join('rouge/guessers/util.rb') +load load_dir.join('rouge/guessers/glob_mapping.rb') +load load_dir.join('rouge/guessers/modeline.rb') +load load_dir.join('rouge/guessers/filename.rb') +load load_dir.join('rouge/guessers/mimetype.rb') +load load_dir.join('rouge/guessers/source.rb') +load load_dir.join('rouge/guessers/disambiguation.rb') + +load load_dir.join('rouge/formatter.rb') +load load_dir.join('rouge/formatters/html.rb') +load load_dir.join('rouge/formatters/html_table.rb') +load load_dir.join('rouge/formatters/html_pygments.rb') +load load_dir.join('rouge/formatters/html_legacy.rb') +load load_dir.join('rouge/formatters/html_linewise.rb') +load load_dir.join('rouge/formatters/html_inline.rb') +load load_dir.join('rouge/formatters/terminal256.rb') +load load_dir.join('rouge/formatters/null.rb') + +load load_dir.join('rouge/theme.rb') +load load_dir.join('rouge/themes/thankful_eyes.rb') +load load_dir.join('rouge/themes/colorful.rb') +load load_dir.join('rouge/themes/base16.rb') +load load_dir.join('rouge/themes/github.rb') +load load_dir.join('rouge/themes/igor_pro.rb') +load load_dir.join('rouge/themes/monokai.rb') +load load_dir.join('rouge/themes/molokai.rb') +load load_dir.join('rouge/themes/monokai_sublime.rb') +load load_dir.join('rouge/themes/gruvbox.rb') +load load_dir.join('rouge/themes/tulip.rb') +load load_dir.join('rouge/themes/pastie.rb') diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/cli.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/cli.rb new file mode 100644 index 0000000000..80ff051e8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/cli.rb @@ -0,0 +1,432 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# not required by the main lib. +# to use this module, require 'rouge/cli'. + +module Rouge + class FileReader + attr_reader :input + def initialize(input) + @input = input + end + + def file + case input + when '-' + IO.new($stdin.fileno, 'rt:bom|utf-8') + when String + File.new(input, 'rt:bom|utf-8') + when ->(i){ i.respond_to? :read } + input + end + end + + def read + @read ||= begin + file.read + rescue => e + $stderr.puts "unable to open #{input}: #{e.message}" + exit 1 + ensure + file.close + end + end + end + + class CLI + def self.doc + return enum_for(:doc) unless block_given? + + yield %|usage: rougify [command] [args...]| + yield %|| + yield %|where is one of:| + yield %| highlight #{Highlight.desc}| + yield %| help #{Help.desc}| + yield %| style #{Style.desc}| + yield %| list #{List.desc}| + yield %| guess #{Guess.desc}| + yield %| version #{Version.desc}| + yield %|| + yield %|See `rougify help ` for more info.| + end + + class Error < StandardError + attr_reader :message, :status + def initialize(message, status=1) + @message = message + @status = status + end + end + + def self.parse(argv=ARGV) + argv = normalize_syntax(argv) + + mode = argv.shift + + klass = class_from_arg(mode) + return klass.parse(argv) if klass + + case mode + when '-h', '--help', 'help', '-help', nil + Help.parse(argv) + else + argv.unshift(mode) if mode + Highlight.parse(argv) + end + end + + def initialize(options={}) + end + + def self.error!(msg, status=1) + raise Error.new(msg, status) + end + + def error!(*a) + self.class.error!(*a) + end + + def self.class_from_arg(arg) + case arg + when 'version', '--version', '-v' + Version + when 'help' + Help + when 'highlight', 'hi' + Highlight + when 'style' + Style + when 'list' + List + when 'guess' + Guess + end + end + + class Version < CLI + def self.desc + "print the rouge version number" + end + + def self.parse(*); new; end + + def run + puts Rouge.version + end + end + + class Help < CLI + def self.desc + "print help info" + end + + def self.doc + return enum_for(:doc) unless block_given? + + yield %|usage: rougify help | + yield %|| + yield %|print help info for .| + end + + def self.parse(argv) + opts = { :mode => CLI } + until argv.empty? + arg = argv.shift + klass = class_from_arg(arg) + if klass + opts[:mode] = klass + next + end + end + new(opts) + end + + def initialize(opts={}) + @mode = opts[:mode] + end + + def run + @mode.doc.each(&method(:puts)) + end + end + + class Highlight < CLI + def self.desc + "highlight code" + end + + def self.doc + return enum_for(:doc) unless block_given? + + yield %[usage: rougify highlight [options...]] + yield %[ rougify highlight [options...]] + yield %[] + yield %[--input-file|-i specify a file to read, or - to use stdin] + yield %[] + yield %[--lexer|-l specify the lexer to use.] + yield %[ If not provided, rougify will try to guess] + yield %[ based on --mimetype, the filename, and the] + yield %[ file contents.] + yield %[] + yield %[--formatter|-f specify the output formatter to use.] + yield %[ If not provided, rougify will default to] + yield %[ terminal256.] + yield %[] + yield %[--theme|-t specify the theme to use for highlighting] + yield %[ the file. (only applies to some formatters)] + yield %[] + yield %[--mimetype|-m specify a mimetype for lexer guessing] + yield %[] + yield %[--lexer-opts|-L specify lexer options in CGI format] + yield %[ (opt1=val1&opt2=val2)] + yield %[] + yield %[--formatter-opts|-F specify formatter options in CGI format] + yield %[ (opt1=val1&opt2=val2)] + yield %[] + yield %[--require|-r require a filename or library before] + yield %[ highlighting] + end + + def self.parse(argv) + opts = { + :formatter => 'terminal256', + :theme => 'thankful_eyes', + :css_class => 'codehilite', + :input_file => '-', + :lexer_opts => {}, + :formatter_opts => {}, + :requires => [], + } + + until argv.empty? + arg = argv.shift + case arg + when '-r', '--require' + opts[:requires] << argv.shift + when '--input-file', '-i' + opts[:input_file] = argv.shift + when '--mimetype', '-m' + opts[:mimetype] = argv.shift + when '--lexer', '-l' + opts[:lexer] = argv.shift + when '--formatter-preset', '-f' + opts[:formatter] = argv.shift + when '--theme', '-t' + opts[:theme] = argv.shift + when '--css-class', '-c' + opts[:css_class] = argv.shift + when '--lexer-opts', '-L' + opts[:lexer_opts] = parse_cgi(argv.shift) + when /^--/ + error! "unknown option #{arg.inspect}" + else + opts[:input_file] = arg + end + end + + new(opts) + end + + def input_stream + @input_stream ||= FileReader.new(@input_file) + end + + def input + @input ||= input_stream.read + end + + def lexer_class + @lexer_class ||= Lexer.guess( + :filename => @input_file, + :mimetype => @mimetype, + :source => input_stream, + ) + end + + def lexer + @lexer ||= lexer_class.new(@lexer_opts) + end + + attr_reader :input_file, :lexer_name, :mimetype, :formatter + + def initialize(opts={}) + Rouge::Lexer.enable_debug! + + opts[:requires].each do |r| + require r + end + + @input_file = opts[:input_file] + + if opts[:lexer] + @lexer_class = Lexer.find(opts[:lexer]) \ + or error! "unknown lexer #{opts[:lexer].inspect}" + else + @lexer_name = opts[:lexer] + @mimetype = opts[:mimetype] + end + + @lexer_opts = opts[:lexer_opts] + + theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}" + + @formatter = case opts[:formatter] + when 'terminal256' then Formatters::Terminal256.new(theme) + when 'html' then Formatters::HTML.new + when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class]) + when 'html-inline' then Formatters::HTMLInline.new(theme) + when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new) + when 'null', 'raw', 'tokens' then Formatters::Null.new + else + error! "unknown formatter preset #{opts[:formatter]}" + end + end + + def run + formatter.format(lexer.lex(input), &method(:print)) + end + + private_class_method + def self.parse_cgi(str) + pairs = CGI.parse(str).map { |k, v| [k.to_sym, v.first] } + Hash[pairs] + end + end + + class Style < CLI + def self.desc + "print CSS styles" + end + + def self.doc + return enum_for(:doc) unless block_given? + + yield %|usage: rougify style [] []| + yield %|| + yield %|Print CSS styles for the given theme. Extra options are| + yield %|passed to the theme. To select a mode (light/dark) for the| + yield %|theme, append '.light' or '.dark' to the | + yield %|respectively. Theme defaults to thankful_eyes.| + yield %|| + yield %|options:| + yield %| --scope (default: .highlight) a css selector to scope by| + yield %|| + yield %|available themes:| + yield %| #{Theme.registry.keys.sort.join(', ')}| + end + + def self.parse(argv) + opts = { :theme_name => 'thankful_eyes' } + + until argv.empty? + arg = argv.shift + case arg + when /--(\w+)/ + opts[$1.tr('-', '_').to_sym] = argv.shift + else + opts[:theme_name] = arg + end + end + + new(opts) + end + + def initialize(opts) + theme_name = opts.delete(:theme_name) + theme_class = Theme.find(theme_name) \ + or error! "unknown theme: #{theme_name}" + + @theme = theme_class.new(opts) + end + + def run + @theme.render(&method(:puts)) + end + end + + class List < CLI + def self.desc + "list available lexers" + end + + def self.doc + return enum_for(:doc) unless block_given? + + yield %|usage: rouge list| + yield %|| + yield %|print a list of all available lexers with their descriptions.| + end + + def self.parse(argv) + new + end + + def run + puts "== Available Lexers ==" + + Lexer.all.sort_by(&:tag).each do |lexer| + desc = String.new("#{lexer.desc}") + if lexer.aliases.any? + desc << " [aliases: #{lexer.aliases.join(',')}]" + end + puts "%s: %s" % [lexer.tag, desc] + + lexer.option_docs.keys.sort.each do |option| + puts " ?#{option}= #{lexer.option_docs[option]}" + end + + puts + end + end + end + + class Guess < CLI + def self.desc + "guess the languages of file" + end + + def self.parse(args) + new(input_file: args.shift) + end + + attr_reader :input_file, :input_source + + def initialize(opts) + @input_file = opts[:input_file] || '-' + @input_source = FileReader.new(@input_file).read + end + + def lexers + Lexer.guesses( + filename: input_file, + source: input_source, + ) + end + + def run + lexers.each do |l| + puts "{ tag: #{l.tag.inspect}, title: #{l.title.inspect}, desc: #{l.desc.inspect} }" + end + end + end + + + private_class_method + def self.normalize_syntax(argv) + out = [] + argv.each do |arg| + case arg + when /^(--\w+)=(.*)$/ + out << $1 << $2 + when /^(-\w)(.+)$/ + out << $1 << $2 + else + out << arg + end + end + + out + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/abap b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/abap new file mode 100644 index 0000000000..1f0171bb91 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/abap @@ -0,0 +1,6 @@ +lo_obj ?= lo_obj->do_nothing( 'Char' && ` String` ). + +SELECT SINGLE * FROM mara INTO ls_mara WHERE matkl EQ '1324'. +LOOP AT lt_mara ASSIGNING . + CHECK -mtart EQ '0001'. +ENDLOOP. diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/actionscript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/actionscript new file mode 100644 index 0000000000..f081e25cc9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/actionscript @@ -0,0 +1,4 @@ +function hello(name:String):void +{ + trace("hello " + name); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apache b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apache new file mode 100644 index 0000000000..ce3e5fc952 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apache @@ -0,0 +1,21 @@ +AddDefaultCharset UTF-8 + +RewriteEngine On + +# Serve gzipped version if available and accepted +AddEncoding x-gzip .gz +RewriteCond %{HTTP:Accept-Encoding} gzip +RewriteCond %{REQUEST_FILENAME}.gz -f +RewriteRule ^(.*)$ $1.gz [QSA,L] + + ForceType text/css + Header append Vary Accept-Encoding + + + ForceType application/javascript + Header append Vary Accept-Encoding + + + ForceType text/html + Header append Vary Accept-Encoding + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apiblueprint b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apiblueprint new file mode 100644 index 0000000000..25dc577726 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/apiblueprint @@ -0,0 +1,33 @@ +FORMAT: 1A +HOST: http://polls.apiblueprint.org/ + +# Polls + +Polls is a simple API allowing consumers to view polls and vote in them. + +# Polls API Root [/] + +## Group Question + +Resources related to questions in the API. + +## Question [/questions/{question_id}] + ++ Parameters + + question_id: 1 (number, required) - ID of the Question in form of an integer + ++ Attributes + + question: `Favourite programming language?` (required) + + published_at: `2014-11-11T08:40:51.620Z` - An ISO8601 date when the question was published + + choices (array[Choice], required) - An array of Choice objects + + url: /questions/1 + +### View a Questions Detail [GET] + ++ Response 200 (application/json) + + Attributes (Question) + +### Delete a Question [DELETE] + ++ Relation: delete ++ Response 204 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/applescript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/applescript new file mode 100644 index 0000000000..c824919abd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/applescript @@ -0,0 +1,2 @@ +-- AppleScript playing with iTunes +tell application "iTunes" to get current selection diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/awk b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/awk new file mode 100644 index 0000000000..fb6ca7219f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/awk @@ -0,0 +1,4 @@ +BEGIN { # Simulate echo(1) + for (i = 1; i < ARGC; i++) printf "%s ", ARGV[i] + printf "\n" + exit } diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/biml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/biml new file mode 100644 index 0000000000..e4d5f68d87 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/biml @@ -0,0 +1,38 @@ +<#@ template language="C#" #> +<#@ import namespace="System.Data" #> + + + + + + + + + + + + + EXEC usp_StoredProc + + <# foreach (var table in RootNode.Tables) { #> + + + + SELECT * FROM <#=table.Name#> + + + + + + + <# } #> + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/bsl b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/bsl new file mode 100644 index 0000000000..a71bca25c3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/bsl @@ -0,0 +1,7 @@ +#Область ПрограммныйИнтерфейс + +Процедура ПриветМир() Экспорт + Сообщить("Привет мир"); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/c b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/c new file mode 100644 index 0000000000..34771c8c2c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/c @@ -0,0 +1,8 @@ +#include "ruby/ruby.h" + +static int +clone_method_i(st_data_t key, st_data_t value, st_data_t data) +{ + clone_method((VALUE)data, (ID)key, (const rb_method_entry_t *)value); + return ST_CONTINUE; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ceylon b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ceylon new file mode 100644 index 0000000000..fcf19e0b73 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ceylon @@ -0,0 +1,7 @@ +shared class CeylonClass() + given Parameter satisfies Object { + + shared String name => "CeylonClass"; +} + +shared void run() => CeylonClass(); diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cfscript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cfscript new file mode 100644 index 0000000000..9006416813 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cfscript @@ -0,0 +1,18 @@ +component accessors="true" { + + property type="string" name="firstName" default=""; + property string username; + + function init(){ + return this; + } + + public any function submitOrder( required product, coupon="", boolean results=true ){ + + var foo = function( required string baz, x=true, y=false ){ + return "bar!"; + }; + + return foo; + } +} \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/clojure b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/clojure new file mode 100644 index 0000000000..a9b682e7e2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/clojure @@ -0,0 +1,5 @@ +(defn make-adder [x] + (let [y x] + (fn [z] (+ y z)))) +(def add2 (make-adder 2)) +(add2 4) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cmake b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cmake new file mode 100644 index 0000000000..89fcc51570 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cmake @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 2.8.3) + +project(foo C) + +# some note +add_executable(foo utils.c "foo.c") +target_link_libraries(foo ${LIBRARIES}) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coffeescript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coffeescript new file mode 100644 index 0000000000..a562db6415 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coffeescript @@ -0,0 +1,5 @@ +# Objects: +math = + root: Math.sqrt + square: square + cube: (x) -> x * square x diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/common_lisp b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/common_lisp new file mode 100644 index 0000000000..c6d2861c19 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/common_lisp @@ -0,0 +1 @@ +(defun square (x) (* x x)) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/conf b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/conf new file mode 100644 index 0000000000..5386d4ed15 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/conf @@ -0,0 +1,4 @@ +# A generic configuration file +option1 "val1" +option2 23 +option3 'val3' diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/console b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/console new file mode 100644 index 0000000000..9d6ed1c9e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/console @@ -0,0 +1,6 @@ +# prints "hello, world" to the screen +~# echo Hello, World +Hello, World + +# don't run this +~# rm -rf --no-preserve-root / diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coq b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coq new file mode 100644 index 0000000000..1d8d68ff3d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/coq @@ -0,0 +1,13 @@ +Require Import Coq.Lists.List. + +Section with_T. + Context {T : Type}. + + Fixpoint length (ls : list T) : nat := + match ls with + | nil => 0 + | _ :: ls => S (length ls) + end. +End with_T. + +Definition a_string := "hello \" world". \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cpp b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cpp new file mode 100644 index 0000000000..c20cf27c7c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/cpp @@ -0,0 +1,8 @@ +#include + +using namespace std; + +int main() +{ + cout << "Hello World" << endl; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/crystal b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/crystal new file mode 100644 index 0000000000..988753e96d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/crystal @@ -0,0 +1,45 @@ +lib LibC + WNOHANG = 0x00000001 + + @[ReturnsTwice] + fun fork : PidT + fun getpgid(pid : PidT) : PidT + fun kill(pid : PidT, signal : Int) : Int + fun getpid : PidT + fun getppid : PidT + fun exit(status : Int) : NoReturn + + ifdef x86_64 + alias ClockT = UInt64 + else + alias ClockT = UInt32 + end + + SC_CLK_TCK = 3 + + struct Tms + utime : ClockT + stime : ClockT + cutime : ClockT + cstime : ClockT + end + + fun times(buffer : Tms*) : ClockT + fun sysconf(name : Int) : Long +end + +class Process + def self.exit(status = 0) + LibC.exit(status) + end + + def self.pid + LibC.getpid + end + + def self.getpgid(pid : Int32) + ret = LibC.getpgid(pid) + raise Errno.new(ret) if ret < 0 + ret + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/csharp b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/csharp new file mode 100644 index 0000000000..04e4a8ee7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/csharp @@ -0,0 +1,5 @@ +// reverse byte order (16-bit) +public static UInt16 ReverseBytes(UInt16 value) +{ + return (UInt16)((value & 0xFFU) << 8 | (value & 0xFF00U) >> 8); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/css b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/css new file mode 100644 index 0000000000..0d1fe74b9c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/css @@ -0,0 +1,4 @@ +body { + font-size: 12pt; + background: #fff url(temp.png) top left no-repeat; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/d b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/d new file mode 100644 index 0000000000..65d494503f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/d @@ -0,0 +1,16 @@ +import std.algorithm, std.conv, std.functional, + std.math, std.regex, std.stdio; + +alias round = pipe!(to!real, std.math.round, to!string); +static reFloatingPoint = ctRegex!`[0-9]+\.[0-9]+`; + +void main() +{ + // Replace anything that looks like a real + // number with the rounded equivalent. + stdin + .byLine + .map!(l => l.replaceAll!(c => c.hit.round) + (reFloatingPoint)) + .each!writeln; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dart b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dart new file mode 100644 index 0000000000..4b40da537f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dart @@ -0,0 +1,6 @@ +void main() { + var collection=[1,2,3,4,5]; + for(var a in collection){ + print(a); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/diff b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/diff new file mode 100644 index 0000000000..ab4f3162f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/diff @@ -0,0 +1,7 @@ +--- file1 2012-10-16 15:07:58.086886874 +0100 ++++ file2 2012-10-16 15:08:07.642887236 +0100 +@@ -1,3 +1,3 @@ + a b c +-d e f ++D E F + g h i diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/digdag b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/digdag new file mode 100644 index 0000000000..f7dbad0a4f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/digdag @@ -0,0 +1,19 @@ +# this is digdag task definitions +timezone: UTC + ++setup: + echo>: start ${session_time} + ++disp_current_date: + echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')} + ++repeat: + for_each>: + order: [first, second, third] + animal: [dog, cat] + _do: + echo>: ${order} ${animal} + _parallel: true + ++teardown: + echo>: finish ${session_time} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/docker b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/docker new file mode 100644 index 0000000000..656d2bc1d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/docker @@ -0,0 +1,9 @@ +maintainer First O'Last + +run echo \ + 123 $bar +# comment +onbuild add . /app/src +onbuild run echo \ + 123 $bar +CMD /bin/bash diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dot b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dot new file mode 100644 index 0000000000..243ee731d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/dot @@ -0,0 +1,5 @@ +// The graph name and the semicolons are optional +graph G { + a -- b -- c; + b -- d; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/eiffel b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/eiffel new file mode 100644 index 0000000000..ec025cc9e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/eiffel @@ -0,0 +1,30 @@ +note + description: "Represents a person." + +class + PERSON + +create + make, make_unknown + +feature {NONE} -- Creation + + make (a_name: like name) + -- Create a person with `a_name' as `name'. + do + name := a_name + ensure + name = a_name + end + + make_unknown + do ensure + name = Void + end + +feature -- Access + + name: detachable STRING + -- Full name or Void if unknown. + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elixir b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elixir new file mode 100644 index 0000000000..f81d641399 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elixir @@ -0,0 +1 @@ +Enum.map([1,2,3], fn(x) -> x * 2 end) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elm b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elm new file mode 100644 index 0000000000..8d38380514 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/elm @@ -0,0 +1,4 @@ +import Html exposing (text) + +main = + text "Hello, World!" diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erb new file mode 100644 index 0000000000..1f922b6743 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erb @@ -0,0 +1 @@ +<%= @title %> diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erlang b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erlang new file mode 100644 index 0000000000..c942b606f3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/erlang @@ -0,0 +1,7 @@ +%%% Geometry module. +-module(geometry). +-export([area/1]). + +%% Compute rectangle and circle area. +area({rectangle, Width, Ht}) -> Width * Ht; +area({circle, R}) -> 3.14159 * R * R. \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/factor b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/factor new file mode 100644 index 0000000000..2538dff29b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/factor @@ -0,0 +1,5 @@ +USING: io kernel sequences ; + +4 iota [ + "Happy Birthday " write 2 = "dear NAME" "to You" ? print +] each diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fortran b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fortran new file mode 100644 index 0000000000..4fc52c510a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fortran @@ -0,0 +1,22 @@ +program bottles + + implicit none + integer :: nbottles + + do nbottles = 99, 1, -1 + call print_bottles(nbottles) + end do + +contains + + subroutine print_bottles(n) + implicit none + integer, intent(in) :: n + + write(*, "(I0, 1X, 'bottles of beer on the wall,')") n + write(*, "(I0, 1X, 'bottles of beer.')") n + write(*, "('Take one down, pass it around,')") + write(*, "(I0, 1X, 'bottles of beer on the wall.', /)") n - 1 + end subroutine print_bottles + +end program bottles diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fsharp b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fsharp new file mode 100644 index 0000000000..b1812eec8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/fsharp @@ -0,0 +1,12 @@ +(* Binary tree with leaves car­rying an integer. *) +type Tree = Leaf of int | Node of Tree * Tree + +let rec existsLeaf test tree = + match tree with + | Leaf v -> test v + | Node (left, right) -> + existsLeaf test left + || existsLeaf test right + +let hasEvenLeaf tree = + existsLeaf (fun n -> n % 2 = 0) tree \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/gherkin b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/gherkin new file mode 100644 index 0000000000..78e4ba6e87 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/gherkin @@ -0,0 +1,17 @@ +# language: en +Feature: Addition + In order to avoid silly mistakes + As someone who has trouble with mental math + I want to be told the sum of two numbers + + Scenario Outline: Add two numbers + Given I have entered into the calculator + And I have entered into the calculator + When I press
              9. Main
              10. sbkcp*iqe~=D1g! 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/package.rake b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/package.rake new file mode 100644 index 0000000000..00419d0bdb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/package.rake @@ -0,0 +1,120 @@ +require 'rubygems' +require 'rubygems/package_task' + +begin + require 'rake/extensiontask' + require 'rake/javaextensiontask' +rescue LoadError => e + puts <<-MSG +rake-compiler gem seems to be missing. Please install it with + + gem install rake-compiler + +(add sudo if necessary). + MSG +end + +Gem::PackageTask.new(GEMSPEC) do |pkg| +end + +if RUBY_PLATFORM =~ /java/ + Rake::JavaExtensionTask.new("rubyeventmachine", GEMSPEC) do |ext| + ext.ext_dir = 'java/src' + end +else + def setup_cross_compilation(ext) + unless RUBY_PLATFORM =~ /mswin|mingw/ + ext.cross_compile = true + ext.cross_platform = ['x86-mingw32', 'x64-mingw32'] + end + end + def hack_cross_compilation(ext) + # inject 1.8/1.9 pure-ruby entry point + # HACK: add these dependencies to the task instead of using cross_compiling + if ext.cross_platform.is_a?(Array) + ext.cross_platform.each do |platform| + task = "native:#{GEMSPEC.name}:#{platform}" + if Rake::Task.task_defined?(task) + Rake::Task[task].prerequisites.unshift "lib/#{ext.name}.rb" + end + end + end + end + + em = Rake::ExtensionTask.new("rubyeventmachine", GEMSPEC) do |ext| + ext.ext_dir = 'ext' + ext.source_pattern = '*.{h,c,cpp}' + setup_cross_compilation(ext) + end + hack_cross_compilation em + + ff = Rake::ExtensionTask.new("fastfilereaderext", GEMSPEC) do |ext| + ext.ext_dir = 'ext/fastfilereader' + ext.source_pattern = '*.{h,c,cpp}' + setup_cross_compilation(ext) + end + hack_cross_compilation ff +end + +# Setup shim files that require 1.8 vs 1.9 extensions in win32 bin gems +%w[ rubyeventmachine fastfilereaderext ].each do |filename| + file("lib/#{filename}.rb") do |t| + File.open(t.name, 'wb') do |f| + f.write <<-eoruby + RUBY_VERSION =~ /(\\d+.\\d+)/ + require "\#{$1}/#{File.basename(t.name, '.rb')}" + eoruby + end + at_exit{ FileUtils.rm t.name if File.exist?(t.name) } + end +end + +task :cross_cxx do + ENV['CROSS_COMPILING'] = 'yes' + require 'rake/extensioncompiler' + ENV['CXX'] = "#{Rake::ExtensionCompiler.mingw_host}-g++" +end + +if Rake::Task.task_defined?(:cross) + task :cross => 'lib/rubyeventmachine.rb' + task :cross => 'lib/fastfilereaderext.rb' + task :cross => :cross_cxx +end + +def windows?; RUBY_PLATFORM =~ /mswin|mingw/; end +def sudo(cmd) + if windows? || (require 'etc'; Etc.getpwuid.uid == 0) + sh cmd + else + sh "sudo #{cmd}" + end +end +def gem_cmd(action, name, *args) + rb = Gem.ruby rescue nil + rb ||= (require 'rbconfig'; File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])) + sudo "#{rb} -r rubygems -e 'require %{rubygems/gem_runner}; Gem::GemRunner.new.run(%w{#{action} #{name} #{args.join(' ')}})'" +end + +Rake::Task[:clean].enhance [:clobber_package] + +# DevKit task following the example of Luis Lavena's test-ruby-c-extension +task :devkit do + begin + require "devkit" + rescue LoadError => e + abort "Failed to activate RubyInstaller's DevKit required for compilation." + end +end + +if RUBY_PLATFORM =~ /mingw|mswin/ + Rake::Task['compile'].prerequisites.unshift 'devkit' +end + +desc "Build binary gems for Windows with rake-compiler-dock" +task 'gem:windows' do + require 'rake_compiler_dock' + RakeCompilerDock.sh <<-EOT + RUBY_CC_VERSION="${RUBY_CC_VERSION//1.8.7/}" + bundle && rake cross native gem + EOT +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test.rake b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test.rake new file mode 100644 index 0000000000..1185ac70c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test.rake @@ -0,0 +1,8 @@ +require 'rake/testtask' + +Rake::TestTask.new(:test) do |t| + t.libs << "tests" + t.libs << "lib" + t.pattern = 'tests/**/test_*.rb' + t.warning = true +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test_pure.rake b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test_pure.rake new file mode 100644 index 0000000000..5a84ded207 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/rakelib/test_pure.rake @@ -0,0 +1,13 @@ +require 'rake/testtask' + +Rake::TestTask.new(:test_pure) do |t| + t.libs << 'tests' + t.libs << 'lib' + t.test_files = Dir.glob('tests/**/test_pure*.rb') + Dir.glob('tests/**/test_ssl*.rb') + t.warning = true +end + +task :test_em_pure_ruby do + ENV['EM_PURE_RUBY'] = 'true' + Rake::Task['test_pure'].execute +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.crt b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.crt new file mode 100644 index 0000000000..1919d976c6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFRDCCAywCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCRU0xFTATBgNV +BAgTDEV2ZW50TWFjaGluZTEVMBMGA1UEChMMRXZlbnRNYWNoaW5lMRQwEgYDVQQL +EwtEZXZlbG9wbWVudDEVMBMGA1UEAxMMRXZlbnRNYWNoaW5lMB4XDTA5MDMyOTAy +MzE0NloXDTEwMDMyOTAyMzE0NlowaDELMAkGA1UEBhMCRU0xFTATBgNVBAgTDEV2 +ZW50TWFjaGluZTEVMBMGA1UEChMMRXZlbnRNYWNoaW5lMRQwEgYDVQQLEwtEZXZl +bG9wbWVudDEVMBMGA1UEAxMMRXZlbnRNYWNoaW5lMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAv1FSOIX1z7CQtVBFlrB0A3/V29T+22STKKmiRWYkKL5b ++hkrp9IZ5J4phZHgUVM2VDPOO2Oc2PU6dlGGZISg+UPERunTogxQKezCV0vcE9cK +OwzxCFDRvv5rK8aKMscfBLbNKocAXywuRRQmdxPiVRzbyPrl+qCr/EDLXAX3D77l +S8n2AwDg19VyI+IgFUE+Dy5e1eLoY6nV+Mq+vNXdn3ttF3t+ngac5pj5Q9h+pD5p +67baDHSnf/7cy2fa/LKrLolVHQR9G2K6cEfeM99NtcsMbkoPs4iI3FA05OVTQHXg +C8C8cRxrb9APl95I/ep65OIaCJgcdYxJ3QD3qOtQo6/NQsGnjbyiUxaEpjfqyT1N +uzWD81Q8uXGNS8yD6dDynt/lseBjyp2nfC3uQ5fY18VdIcu0MJ9pezBUKrNuhlsy +XXEZ2DXj4sY8QOvIcBqSB/zmS1nGEK55xrtkaiaNrY8fe8wRVpcPLxy+P225NFw+ +B69FJRA0Lj6Jt9BM4hV/3MSIEWwTVhuw4E02ywDYTzz1wq3ITf0tsbIPn0hXQMxD +ohhAoKioM6u+yHtqsxD0eYaAWmHTVn5oDvOSGpvCpBfWHyA7FP5UQak0fKABEAgK +iQYEnb294AXwXymJttfGTIV/Ne4tLN5dIpNma8UO8rlThlcr6xnTQDbR3gkTDRsC +AwEAATANBgkqhkiG9w0BAQUFAAOCAgEAj7J8fy1LUWoVWnrXDAC9jwJ1nI/YjoSU +6ywke3o04+nZC5S+dPnuVy+HAwsU940CoNvP6RStI/bH6JL+NIqEFmwM3M8xIEWV +MYVPkfvQUxxGvDnaY7vv93u+6Q77HV3qlhAQBHChyuXyO7TG3+WzsiT9AnBNtAP0 +4jClt5kCAQXLO/p0SFEZQ8Ru9SM8d1i73Z0VDVzs8jYWlBhiherSgbw1xK4wBOpJ +43XmjZsBSrDpiAXd07Ak3UL2GjfT7eStgebL3UIe39ThE/s/+l43bh0M6WbOBvyQ +i/rZ50kd1GvN0xnZhtv07hIJWO85FGWi7Oet8AzdUZJ17v1Md/f2vdhPVTFN9q+w +mQ6LxjackqCvaJaQfBEbqsn2Tklxk4tZuDioiQbOElT2e6vljQVJWIfNx38Ny2LM +aiXQPQu+4CI7meAh5gXM5nyJGbZvRPsxj89CqYzyHCYs5HBP3AsviBvn26ziOF+c +544VmHd9HkIv8UTC29hh+R64RlgMQQQdaXFaUrFPTs/do0k8n/c2bPc0iTdfi5Q2 +gq6Vi8q6Ay5wGgTtRRbn/mWKuCFjEh94z6pF9Xr06NX0PuEOdf+Ls9vI5vz6G0w6 +0Li7devEN7EKBY+7Mcjg918yq9i5tEiMkUgT68788t3fTC+4iUQ5fDtdrHsaOlIR +8bs/XQVNE/s= +-----END CERTIFICATE----- diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.key b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.key new file mode 100644 index 0000000000..87a25311c7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/client.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/dhparam.pem b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/dhparam.pem new file mode 100644 index 0000000000..b6464ab837 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/dhparam.pem @@ -0,0 +1,13 @@ +-----BEGIN DH PARAMETERS----- +MIICCAKCAgEAikiatXa5aAteOtd6hOO33npjCvJByD3dwuM8rWzz0DFZdUH9nFJi +b0VvTVweVECb6XZBsrDNLqGQykCrm43swSk5D9XQCGJLxFERD6yk3b90xaeCm3/a +b0Ek5ZVvV73Cc/YbVmpBiOHoTFpUFJLZ7pLMQUSn8y3qUlNcY9/88HuwFi1s1lRM +ovihSRyZMYAuYWOD4yuOuIcroKVjD6gWFrsW9XrALWny6vUXQrhk8Q3rj+wM6ZtE +5afcB0b6ZJtphrDfk3dFjOVG/zVT37VWgrY8GABrpo2ey0W0WIQJ7rDKLaPaI4kc +voOgC2K8Z3kSARZK+jULnwmBeYECz4EH/FF6FEp3GOKtkL4mqEkvh1n5EAesDOGl +iiX+RZXcUrZliSeifSXBTMJWWFVC0fkGIMb9PTZfZHyAC54lpuxzVki0HIyQG9Fs +41zBJ5e8eEoXXlfUYtduUC35YGy2IxSzYLAJE76rctAZSWghha9xLOCDFoLjMr8h +FosKeHKJcBQ0bc8ymOpRIfrYLWhc0Pz2zkpJ/4eYw9t7NYg7S+jP19IE0gUnuM9v +SpoYMtS28tP9nEdokdwuBKD0D3bJEBBefDlHgfXoMgvy9Hivc9PBGGNTNpyFPpwF +sWVAkfhoNMJMC5V7LZsze+lftiDtzVoLSPDa9bO4BK7b/MgwCxfOhGsCAQI= +-----END DH PARAMETERS----- diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/em_test_helper.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/em_test_helper.rb new file mode 100644 index 0000000000..20a3e59a65 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/em_test_helper.rb @@ -0,0 +1,154 @@ +require 'em/pure_ruby' if ENV['EM_PURE_RUBY'] +require 'eventmachine' +require 'test/unit' +require 'rbconfig' +require 'socket' + +puts "EM Library Type: #{EM.library_type}" + +class Test::Unit::TestCase + class EMTestTimeout < StandardError ; end + + def setup_timeout(timeout = TIMEOUT_INTERVAL) + EM.schedule { + EM.add_timer(timeout) { + raise EMTestTimeout, "Test was cancelled after #{timeout} seconds." + } + } + end + + def port_in_use?(port, host="127.0.0.1") + s = TCPSocket.new(host, port) + s.close + s + rescue Errno::ECONNREFUSED + false + end + + def next_port + @@port ||= 9000 + begin + @@port += 1 + end while port_in_use?(@@port) + + @@port + end + + # Returns true if the host have a localhost 127.0.0.1 IPv4. + def self.local_ipv4? + return @@has_local_ipv4 if defined?(@@has_local_ipv4) + begin + get_my_ipv4_address "127.0.0.1" + @@has_local_ipv4 = true + rescue + @@has_local_ipv4 = false + end + end + + # Returns true if the host have a public IPv4 and stores it in + # @@public_ipv4. + def self.public_ipv4? + return @@has_public_ipv4 if defined?(@@has_public_ipv4) + begin + @@public_ipv4 = get_my_ipv4_address "1.2.3.4" + @@has_public_ipv4 = true + rescue + @@has_public_ipv4 = false + end + end + + # Returns true if the host have a localhost ::1 IPv6. + def self.local_ipv6? + return @@has_local_ipv6 if defined?(@@has_local_ipv6) + begin + get_my_ipv6_address "::1" + @@has_local_ipv6 = true + rescue + @@has_local_ipv6 = false + end + end + + # Returns true if the host have a public IPv6 and stores it in + # @@public_ipv6. + def self.public_ipv6? + return @@has_public_ipv6 if defined?(@@has_public_ipv6) + begin + @@public_ipv6 = get_my_ipv6_address "2001::1" + @@has_public_ipv6 = true + rescue + @@has_public_ipv6 = false + end + end + + # Returns an array with the localhost addresses (IPv4 and/or IPv6). + def local_ips + return @@local_ips if defined?(@@local_ips) + @@local_ips = [] + @@local_ips << "127.0.0.1" if self.class.local_ipv4? + @@local_ips << "::1" if self.class.local_ipv6? + @@local_ips + end + + def exception_class + jruby? ? NativeException : RuntimeError + end + + module PlatformHelper + # http://blog.emptyway.com/2009/11/03/proper-way-to-detect-windows-platform-in-ruby/ + def windows? + RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ + end + + def solaris? + RUBY_PLATFORM =~ /solaris/ + end + + # http://stackoverflow.com/questions/1342535/how-can-i-tell-if-im-running-from-jruby-vs-ruby/1685970#1685970 + def jruby? + defined? JRUBY_VERSION + end + + def rbx? + defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx' + end + end + + include PlatformHelper + extend PlatformHelper + + # Tests run significantly slower on windows. YMMV + TIMEOUT_INTERVAL = windows? ? 1 : 0.25 + + def silent + backup, $VERBOSE = $VERBOSE, nil + begin + yield + ensure + $VERBOSE = backup + end + end + + + private + + def self.get_my_ipv4_address ip + orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily + UDPSocket.open(Socket::AF_INET) do |s| + s.connect ip, 1 + s.addr.last + end + ensure + Socket.do_not_reverse_lookup = orig + end + + def self.get_my_ipv6_address ip + orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily + UDPSocket.open(Socket::AF_INET6) do |s| + s.connect ip, 1 + s.addr.last + end + ensure + Socket.do_not_reverse_lookup = orig + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_attach.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_attach.rb new file mode 100644 index 0000000000..4a55017c95 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_attach.rb @@ -0,0 +1,151 @@ +require 'em_test_helper' +require 'socket' + +class TestAttach < Test::Unit::TestCase + class EchoServer < EM::Connection + def receive_data data + $received_data << data + send_data data + end + end + + class EchoClient < EM::Connection + def initialize socket + self.notify_readable = true + @socket = socket + @socket.write("abc\n") + end + + def notify_readable + $read = @socket.readline + $fd = detach + end + + def unbind + EM.next_tick do + @socket.write("def\n") + EM.add_timer(0.1) { EM.stop } + end + end + end + + def setup + @port = next_port + $read, $r, $w, $fd = nil + $received_data = "" + end + + def teardown + [$r, $w].each do |io| + io.close rescue nil + end + $received_data = nil + end + + def test_attach + socket = nil + + EM.run { + EM.start_server "127.0.0.1", @port, EchoServer + socket = TCPSocket.new "127.0.0.1", @port + EM.watch socket, EchoClient, socket + } + + assert_equal $read, "abc\n" + unless jruby? # jruby filenos are not real + assert_equal $fd, socket.fileno + end + assert_equal false, socket.closed? + assert_equal socket.readline, "def\n" + end + + module PipeWatch + def notify_readable + $read = $r.readline + EM.stop + end + end + + def test_attach_server + omit_if(jruby?) + $before = TCPServer.new("127.0.0.1", @port) + sig = nil + EM.run { + sig = EM.attach_server $before, EchoServer + + handler = Class.new(EM::Connection) do + def initialize + send_data "hello world" + close_connection_after_writing + EM.add_timer(0.1) { EM.stop } + end + end + EM.connect("127.0.0.1", @port, handler) + } + + assert_equal false, $before.closed? + assert_equal "hello world", $received_data + assert sig.is_a?(Integer) + end + + def test_attach_pipe + EM.run{ + $r, $w = IO.pipe + EM.watch $r, PipeWatch do |c| + c.notify_readable = true + end + $w.write("ghi\n") + } + + assert_equal $read, "ghi\n" + end + + def test_set_readable + before, after = nil + + EM.run{ + $r, $w = IO.pipe + c = EM.watch $r, PipeWatch do |con| + con.notify_readable = false + end + + EM.next_tick{ + before = c.notify_readable? + c.notify_readable = true + after = c.notify_readable? + } + + $w.write("jkl\n") + } + + assert !before + assert after + assert_equal $read, "jkl\n" + end + + def test_read_write_pipe + result = nil + + pipe_reader = Module.new do + define_method :receive_data do |data| + result = data + EM.stop + end + end + + r,w = IO.pipe + + EM.run { + EM.attach r, pipe_reader + writer = EM.attach(w) + writer.send_data 'ghi' + + # XXX: Process will hang in Windows without this line + writer.close_connection_after_writing + } + + assert_equal "ghi", result + ensure + [r,w].each {|io| io.close rescue nil } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_basic.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_basic.rb new file mode 100644 index 0000000000..4d7252400e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_basic.rb @@ -0,0 +1,321 @@ +require 'em_test_helper' +require 'socket' + +class TestBasic < Test::Unit::TestCase + def setup + @port = next_port + end + + def test_connection_class_cache + mod = Module.new + a, b = nil, nil + EM.run { + EM.start_server '127.0.0.1', @port, mod + a = EM.connect '127.0.0.1', @port, mod + b = EM.connect '127.0.0.1', @port, mod + EM.stop + } + assert_equal a.class, b.class + assert_kind_of EM::Connection, a + end + + #------------------------------------- + + + def test_em + assert_nothing_raised do + EM.run { + setup_timeout + EM.add_timer 0 do + EM.stop + end + } + end + end + + #------------------------------------- + + def test_timer + assert_nothing_raised do + EM.run { + setup_timeout + n = 0 + EM.add_periodic_timer(0.1) { + n += 1 + EM.stop if n == 2 + } + } + end + end + + #------------------------------------- + + # This test once threw an already-running exception. + module Trivial + def post_init + EM.stop + end + end + + def test_server + assert_nothing_raised do + EM.run { + setup_timeout + EM.start_server "127.0.0.1", @port, Trivial + EM.connect "127.0.0.1", @port + } + end + end + + #-------------------------------------- + + # EM#run_block starts the reactor loop, runs the supplied block, and then STOPS + # the loop automatically. Contrast with EM#run, which keeps running the reactor + # even after the supplied block completes. + def test_run_block + assert !EM.reactor_running? + a = nil + EM.run_block { a = "Worked" } + assert a + assert !EM.reactor_running? + end + + class UnbindError < EM::Connection + ERR = Class.new(StandardError) + def initialize *args + super + end + def connection_completed + close_connection_after_writing + end + def unbind + raise ERR + end + end + + def test_unbind_error_during_stop + assert_raises( UnbindError::ERR ) { + EM.run { + EM.start_server "127.0.0.1", @port + EM.connect "127.0.0.1", @port, UnbindError do + EM.stop + end + } + } + end + + def test_unbind_error + EM.run { + EM.error_handler do |e| + assert(e.is_a?(UnbindError::ERR)) + EM.stop + end + EM.start_server "127.0.0.1", @port + EM.connect "127.0.0.1", @port, UnbindError + } + + # Remove the error handler before the next test + EM.error_handler(nil) + end + + module BrsTestSrv + def receive_data data + $received << data + end + def unbind + EM.stop + end + end + module BrsTestCli + def post_init + send_data $sent + close_connection_after_writing + end + end + + # From ticket #50 + def test_byte_range_send + $received = '' + $sent = (0..255).to_a.pack('C*') + EM::run { + EM::start_server "127.0.0.1", @port, BrsTestSrv + EM::connect "127.0.0.1", @port, BrsTestCli + + setup_timeout + } + assert_equal($sent, $received) + end + + def test_bind_connect + pend('FIXME: this test is broken on Windows') if windows? + + local_ip = UDPSocket.open {|s| s.connect('localhost', 80); s.addr.last } + + bind_port = next_port + + port, ip = nil + bound_server = Module.new do + define_method :post_init do + begin + port, ip = Socket.unpack_sockaddr_in(get_peername) + ensure + EM.stop + end + end + end + + EM.run do + setup_timeout + EM.start_server "127.0.0.1", @port, bound_server + EM.bind_connect local_ip, bind_port, "127.0.0.1", @port + end + + assert_equal bind_port, port + assert_equal local_ip, ip + end + + def test_invalid_address_bind_connect_dst + e = nil + EM.run do + begin + EM.bind_connect('localhost', nil, 'invalid.invalid', 80) + rescue Exception => e + # capture the exception + ensure + EM.stop + end + end + + assert_kind_of(EventMachine::ConnectionError, e) + assert_match(/unable to resolve address:.*not known/, e.message) + end + + def test_invalid_address_bind_connect_src + e = nil + EM.run do + begin + EM.bind_connect('invalid.invalid', nil, 'localhost', 80) + rescue Exception => e + # capture the exception + ensure + EM.stop + end + end + + assert_kind_of(EventMachine::ConnectionError, e) + assert_match(/invalid bind address:.*not known/, e.message) + end + + def test_reactor_thread? + assert !EM.reactor_thread? + EM.run { assert EM.reactor_thread?; EM.stop } + assert !EM.reactor_thread? + end + + def test_schedule_on_reactor_thread + x = false + EM.run do + EM.schedule { x = true } + EM.stop + end + assert x + end + + def test_schedule_from_thread + x = false + EM.run do + Thread.new { EM.schedule { x = true; EM.stop } }.join + end + assert x + end + + def test_set_heartbeat_interval + omit_if(jruby?) + interval = 0.5 + EM.run { + EM.set_heartbeat_interval interval + $interval = EM.get_heartbeat_interval + EM.stop + } + assert_equal(interval, $interval) + end + + module PostInitRaiser + ERR = Class.new(StandardError) + def post_init + raise ERR + end + end + + def test_bubble_errors_from_post_init + assert_raises(PostInitRaiser::ERR) do + EM.run do + EM.start_server "127.0.0.1", @port + EM.connect "127.0.0.1", @port, PostInitRaiser + end + end + end + + module InitializeRaiser + ERR = Class.new(StandardError) + def initialize + raise ERR + end + end + + def test_bubble_errors_from_initialize + assert_raises(InitializeRaiser::ERR) do + EM.run do + EM.start_server "127.0.0.1", @port + EM.connect "127.0.0.1", @port, InitializeRaiser + end + end + end + + def test_schedule_close + omit_if(jruby?) + localhost, port = '127.0.0.1', 9000 + timer_ran = false + num_close_scheduled = nil + EM.run do + assert_equal 0, EM.num_close_scheduled + EM.add_timer(1) { timer_ran = true; EM.stop } + EM.start_server localhost, port do |s| + s.close_connection + num_close_scheduled = EM.num_close_scheduled + end + EM.connect localhost, port do |c| + def c.unbind + EM.stop + end + end + end + assert !timer_ran + assert_equal 1, num_close_scheduled + end + + def test_error_handler_idempotent # issue 185 + errors = [] + ticks = [] + EM.error_handler do |e| + errors << e + end + + EM.run do + EM.next_tick do + ticks << :first + raise + end + EM.next_tick do + ticks << :second + end + EM.add_timer(0.001) { EM.stop } + end + + # Remove the error handler before the next test + EM.error_handler(nil) + + assert_equal 1, errors.size + assert_equal [:first, :second], ticks + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_channel.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_channel.rb new file mode 100644 index 0000000000..c54bf1da7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_channel.rb @@ -0,0 +1,75 @@ +require 'em_test_helper' + +class TestEMChannel < Test::Unit::TestCase + def test_channel_subscribe + s = 0 + EM.run do + c = EM::Channel.new + c.subscribe { |v| s = v; EM.stop } + c << 1 + end + assert_equal 1, s + end + + def test_channel_unsubscribe + s = 0 + EM.run do + c = EM::Channel.new + subscription = c.subscribe { |v| s = v } + c.unsubscribe(subscription) + c << 1 + EM.next_tick { EM.stop } + end + assert_not_equal 1, s + end + + def test_channel_pop + s = 0 + EM.run do + c = EM::Channel.new + c.pop{ |v| s = v } + c.push(1,2,3) + c << 4 + c << 5 + EM.next_tick { EM.stop } + end + assert_equal 1, s + end + + def test_channel_reactor_thread_push + out = [] + c = EM::Channel.new + c.subscribe { |v| out << v } + Thread.new { c.push(1,2,3) }.join + assert out.empty? + + EM.run { EM.next_tick { EM.stop } } + + assert_equal [1,2,3], out + end + + def test_channel_reactor_thread_callback + out = [] + c = EM::Channel.new + Thread.new { c.subscribe { |v| out << v } }.join + c.push(1,2,3) + assert out.empty? + + EM.run { EM.next_tick { EM.stop } } + + assert_equal [1,2,3], out + end + + def test_channel_num_subscribers + subs = 0 + EM.run do + c = EM::Channel.new + c.subscribe { |v| s = v } + c.subscribe { |v| s = v } + EM.next_tick { EM.stop } + subs = c.num_subscribers + end + + assert_equal subs, 2 + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_completion.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_completion.rb new file mode 100644 index 0000000000..1bd9a8f4e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_completion.rb @@ -0,0 +1,178 @@ +require 'em_test_helper' +require 'em/completion' + +class TestCompletion < Test::Unit::TestCase + def completion + @completion ||= EM::Completion.new + end + + def crank + # This is a slow solution, but this just executes the next tick queue + # once. It's the easiest way for now. + EM.run { EM.stop } + end + + def results + @results ||= [] + end + + def test_state + assert_equal :unknown, completion.state + end + + def test_succeed + completion.callback { |val| results << val } + completion.succeed :object + crank + assert_equal :succeeded, completion.state + assert_equal [:object], results + end + + def test_fail + completion.errback { |val| results << val } + completion.fail :object + crank + assert_equal :failed, completion.state + assert_equal [:object], results + end + + def test_callback + completion.callback { results << :callback } + completion.errback { results << :errback } + completion.succeed + crank + assert_equal [:callback], results + end + + def test_errback + completion.callback { results << :callback } + completion.errback { results << :errback } + completion.fail + crank + assert_equal [:errback], results + end + + def test_stateback + completion.stateback(:magic) { results << :stateback } + completion.change_state(:magic) + crank + assert_equal [:stateback], results + end + + def test_does_not_enqueue_when_completed + completion.callback { results << :callback } + completion.succeed + completion.errback { results << :errback } + completion.fail + crank + assert_equal [:callback], results + end + + def test_completed + assert_equal false, completion.completed? + completion.succeed + assert_equal true, completion.completed? + completion.fail + assert_equal true, completion.completed? + completion.change_state :magic + assert_equal false, completion.completed? + end + + def test_recursive_callbacks + completion.callback do |val| + results << val + completion.succeed :two + end + completion.callback do |val| + results << val + completion.succeed :three + end + completion.callback do |val| + results << val + end + completion.succeed :one + crank + assert_equal [:one, :two, :three], results + end + + def test_late_defined_callbacks + completion.callback { results << :one } + completion.succeed + crank + assert_equal [:one], results + completion.callback { results << :two } + crank + assert_equal [:one, :two], results + end + + def test_cleared_completions + completion.callback { results << :callback } + completion.errback { results << :errback } + + completion.succeed + crank + completion.fail + crank + completion.succeed + crank + + assert_equal [:callback], results + end + + def test_skip_completed_callbacks + completion.callback { results << :callback } + completion.succeed + crank + + completion.errback { results << :errback } + completion.fail + crank + + assert_equal [:callback], results + end + + def test_completions + completion.completion { results << :completion } + completion.succeed + crank + assert_equal [:completion], results + + completion.change_state(:unknown) + results.clear + + completion.completion { results << :completion } + completion.fail + crank + assert_equal [:completion], results + end + + def test_latent_completion + completion.completion { results << :completion } + completion.succeed + crank + completion.completion { results << :completion } + crank + assert_equal [:completion, :completion], results + end + + def test_timeout + args = [1, 2, 3] + EM.run do + completion.timeout(0.0001, *args) + completion.errback { |*errargs| results << errargs } + completion.completion { EM.stop } + EM.add_timer(0.1) { flunk 'test timed out' } + end + assert_equal [[1,2,3]], results + end + + def test_timeout_gets_cancelled + EM.run do + completion.timeout(0.0001, :timeout) + completion.errback { results << :errback } + completion.succeed + EM.add_timer(0.0002) { EM.stop } + end + assert_equal [], results + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_count.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_count.rb new file mode 100644 index 0000000000..350c41774a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_count.rb @@ -0,0 +1,83 @@ +require 'em_test_helper' + +class TestConnectionCount < Test::Unit::TestCase + def teardown + EM.epoll = false + EM.kqueue = false + end + + def test_idle_connection_count + count = nil + EM.run { + count = EM.connection_count + EM.stop_event_loop + } + assert_equal(0, count) + end + + # Run this again with epoll enabled (if available) + def test_idle_connection_count_epoll + EM.epoll if EM.epoll? + + count = nil + EM.run { + count = EM.connection_count + EM.stop_event_loop + } + assert_equal(0, count) + end + + # Run this again with kqueue enabled (if available) + def test_idle_connection_count_kqueue + EM.kqueue if EM.kqueue? + + count = nil + EM.run { + count = EM.connection_count + EM.stop_event_loop + } + assert_equal(0, count) + end + + module Client + def connection_completed + $client_conns += 1 + EM.stop if $client_conns == 3 + end + end + + def test_with_some_connections + EM.run { + $client_conns = 0 + $initial_conns = EM.connection_count + EM.start_server("127.0.0.1", 9999) + $server_conns = EM.connection_count + 3.times { EM.connect("127.0.0.1", 9999, Client) } + } + + assert_equal(0, $initial_conns) + assert_equal(1, $server_conns) + assert_equal(4, $client_conns + $server_conns) + end + + module DoubleCloseClient + def unbind + close_connection + $num_close_scheduled_1 = EM.num_close_scheduled + EM.next_tick do + $num_close_scheduled_2 = EM.num_close_scheduled + EM.stop + end + end + end + + def test_num_close_scheduled + omit_if(jruby?) + EM.run { + assert_equal(0, EM.num_close_scheduled) + EM.connect("127.0.0.1", 9999, DoubleCloseClient) # nothing listening on 9999 + } + assert_equal(1, $num_close_scheduled_1) + assert_equal(0, $num_close_scheduled_2) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_write.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_write.rb new file mode 100644 index 0000000000..35533b526e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_connection_write.rb @@ -0,0 +1,35 @@ +require 'em_test_helper' + +class TestConnectionWrite < Test::Unit::TestCase + + # This test takes advantage of the fact that EM::_RunSelectOnce iterates over the connections twice: + # - once to determine which ones to call Write() on + # - and once to call Write() on each of them. + # + # But state may change in the meantime before Write() is finally called. + # And that is what we try to exploit to get Write() to be called when bWatchOnly is true, and bNotifyWritable is false, + # to cause an assertion failure. + + module SimpleClient + def notify_writable + $conn2.notify_writable = false # Being naughty in callback + # If this doesn't crash anything, the test passed! + end + end + + def test_with_naughty_callback + EM.run do + r1, _ = IO.pipe + r2, _ = IO.pipe + + # Adding EM.watches + $conn1 = EM.watch(r1, SimpleClient) + $conn2 = EM.watch(r2, SimpleClient) + + $conn1.notify_writable = true + $conn2.notify_writable = true + + EM.stop + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_defer.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_defer.rb new file mode 100644 index 0000000000..aeca127d89 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_defer.rb @@ -0,0 +1,35 @@ +require 'em_test_helper' + +class TestDefer < Test::Unit::TestCase + + def test_defers + n = 0 + n_times = 20 + EM.run { + n_times.times { + work_proc = proc { n += 1 } + callback = proc { EM.stop if n == n_times } + EM.defer work_proc, callback + } + } + assert_equal( n, n_times ) + end + + def test_errbacks + iterations = 20 + callback_parameter = rand(100) + callback_parameters = [] + callback_op = proc { callback_parameter } + callback = proc { |result| callback_parameters << result } + errback_parameter = Exception.new + errback_parameters = [] + errback_op = proc { raise errback_parameter } + errback = proc { |error| errback_parameters << error } + EventMachine.run do + (1..iterations).each { |index| EventMachine.defer(index.even? ? callback_op : errback_op, callback, errback) } + EventMachine.add_periodic_timer(0.1) { EventMachine.stop if EventMachine.defers_finished? } + end + assert_equal(callback_parameters.select { |parameter| parameter == callback_parameter }.length, iterations * 0.5) + assert_equal(errback_parameters.select{ |parameter| parameter == errback_parameter }.length, iterations * 0.5) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_deferrable.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_deferrable.rb new file mode 100644 index 0000000000..5f286a77e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_deferrable.rb @@ -0,0 +1,35 @@ +require 'em_test_helper' + +class TestDeferrable < Test::Unit::TestCase + class Later + include EM::Deferrable + end + + def test_timeout_without_args + assert_nothing_raised do + EM.run { + df = Later.new + df.timeout(0) + df.errback { EM.stop } + EM.add_timer(0.01) { flunk "Deferrable was not timed out." } + } + end + end + + def test_timeout_with_args + args = nil + + EM.run { + df = Later.new + df.timeout(0, :timeout, :foo) + df.errback do |type, name| + args = [type, name] + EM.stop + end + + EM.add_timer(0.01) { flunk "Deferrable was not timed out." } + } + + assert_equal [:timeout, :foo], args + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_epoll.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_epoll.rb new file mode 100644 index 0000000000..36f5609ab0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_epoll.rb @@ -0,0 +1,142 @@ +require 'em_test_helper' + + +class TestEpoll < Test::Unit::TestCase + + module TestEchoServer + def receive_data data + send_data data + close_connection_after_writing + end + end + + module TestEchoClient + def connection_completed + send_data "ABCDE" + $max += 1 + end + def receive_data data + raise "bad response" unless data == "ABCDE" + end + def unbind + $n -= 1 + EM.stop if $n == 0 + end + end + + + # We can set the rlimit/nofile of a process but we can only set it + # higher if we're running as root. + # On most systems, the default value is 1024. + def test_rlimit + omit_if(windows? || jruby?) + unless EM.set_descriptor_table_size >= 1024 + a = EM.set_descriptor_table_size + assert( a <= 1024 ) + a = EM.set_descriptor_table_size( 1024 ) + assert( a == 1024 ) + end + end + + # Run a high-volume version of this test by kicking the number of connections + # up past 512. (Each connection uses two sockets, a client and a server.) + # (Will require running the test as root) + # This test exercises TCP clients and servers. + # + # XXX this test causes all sort of weird issues on OSX (when run as part of the suite) + def _test_descriptors + EM.epoll + EM.set_descriptor_table_size 60000 + EM.run { + EM.start_server "127.0.0.1", 9800, TestEchoServer + $n = 0 + $max = 0 + 100.times { + EM.connect("127.0.0.1", 9800, TestEchoClient) {$n += 1} + } + } + assert_equal(0, $n) + assert_equal(100, $max) + end + + def setup + @port = next_port + end + + module TestDatagramServer + def receive_data dgm + $in = dgm + send_data "abcdefghij" + end + end + module TestDatagramClient + def initialize port + @port = port + end + + def post_init + send_datagram "1234567890", "127.0.0.1", @port + end + + def receive_data dgm + $out = dgm + EM.stop + end + end + + def test_datagrams + $in = $out = "" + EM.run { + EM.open_datagram_socket "127.0.0.1", @port, TestDatagramServer + EM.open_datagram_socket "127.0.0.1", 0, TestDatagramClient, @port + } + assert_equal( "1234567890", $in ) + assert_equal( "abcdefghij", $out ) + end + + # XXX this test fails randomly... + def _test_unix_domain + fn = "/tmp/xxx.chain" + EM.epoll + EM.set_descriptor_table_size 60000 + EM.run { + # The pure-Ruby version won't let us open the socket if the node already exists. + # Not sure, that actually may be correct and the compiled version is wrong. + # Pure Ruby also oddly won't let us make that many connections. This test used + # to run 100 times. Not sure where that lower connection-limit is coming from in + # pure Ruby. + # Let's not sweat the Unix-ness of the filename, since this test can't possibly + # work on Windows anyway. + # + File.unlink(fn) if File.exist?(fn) + EM.start_unix_domain_server fn, TestEchoServer + $n = 0 + $max = 0 + 50.times { + EM.connect_unix_domain(fn, TestEchoClient) {$n += 1} + } + EM::add_timer(1) { $stderr.puts("test_unix_domain timed out!"); EM::stop } + } + assert_equal(0, $n) + assert_equal(50, $max) + ensure + File.unlink(fn) if File.exist?(fn) + end + + def test_attach_detach + EM.epoll + EM.run { + EM.add_timer(0.01) { EM.stop } + + r, _ = IO.pipe + + # This tests a regression where detach in the same tick as attach crashes EM + EM.watch(r) do |connection| + connection.detach + end + } + + assert true + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_error_handler.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_error_handler.rb new file mode 100644 index 0000000000..23c23f74bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_error_handler.rb @@ -0,0 +1,38 @@ +require 'em_test_helper' + +class TestErrorHandler < Test::Unit::TestCase + def setup + @exception = Class.new(StandardError) + end + + def test_error_handler + error = nil + + EM.error_handler{ |e| + error = e + EM.error_handler(nil) + EM.stop + } + + assert_nothing_raised do + EM.run{ + EM.add_timer(0){ + raise @exception, 'test' + } + } + end + + assert_equal error.class, @exception + assert_equal error.message, 'test' + end + + def test_without_error_handler + assert_raise @exception do + EM.run{ + EM.add_timer(0){ + raise @exception, 'test' + } + } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_exc.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_exc.rb new file mode 100644 index 0000000000..d9c860aed8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_exc.rb @@ -0,0 +1,43 @@ +require 'em_test_helper' + +class TestSomeExceptions < Test::Unit::TestCase + class DoomedConnectionError < StandardError + end + class DoomedConnection < EventMachine::Connection + def unbind + raise DoomedConnectionError + end + end + + # Read the commentary in EM#run. + # This test exercises the ensure block in #run that makes sure + # EM#release_machine gets called even if an exception is + # thrown within the user code. Without the ensured call to release_machine, + # the second call to EM#run will fail with a C++ exception + # because the machine wasn't cleaned up properly. + + def test_a + assert_raises(RuntimeError) { + EM.run { + raise "some exception" + } + } + end + + def test_b + assert_raises(RuntimeError) { + EM.run { + raise "some exception" + } + } + end + + def test_exception_on_unbind + assert_raises(DoomedConnectionError) { + EM.run { + EM.connect("localhost", 8888, DoomedConnection) + } + } + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_file_watch.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_file_watch.rb new file mode 100644 index 0000000000..560207174f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_file_watch.rb @@ -0,0 +1,85 @@ +require 'em_test_helper' +require 'tempfile' + +class TestFileWatch < Test::Unit::TestCase + if windows? + def test_watch_file_raises_unsupported_error + assert_raises(EM::Unsupported) do + EM.run do + file = Tempfile.new("fake_file") + EM.watch_file(file.path) + end + end + end + elsif EM.respond_to? :watch_filename + module FileWatcher + def file_modified + $modified = true + end + def file_deleted + $deleted = true + end + def unbind + $unbind = true + EM.stop + end + end + + def setup + EM.kqueue = true if EM.kqueue? + end + + def teardown + EM.kqueue = false if EM.kqueue? + end + + def test_events + omit_if(solaris?) + EM.run{ + file = Tempfile.new('em-watch') + $tmp_path = file.path + + # watch it + watch = EM.watch_file(file.path, FileWatcher) + $path = watch.path + + # modify it + File.open(file.path, 'w'){ |f| f.puts 'hi' } + + # delete it + EM.add_timer(0.01){ file.close; file.delete } + } + + assert_equal($path, $tmp_path) + assert($modified) + assert($deleted) + assert($unbind) + end + + # Refer: https://github.com/eventmachine/eventmachine/issues/512 + def test_invalid_signature + # This works fine with kqueue, only fails with linux inotify. + omit_if(EM.kqueue?) + + EM.run { + file = Tempfile.new('foo') + + w1 = EventMachine.watch_file(file.path) + w2 = EventMachine.watch_file(file.path) + + assert_raise EventMachine::InvalidSignature do + w2.stop_watching + end + + EM.stop + } + end + else + warn "EM.watch_file not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_watch_file_unsupported + assert true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_fork.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_fork.rb new file mode 100644 index 0000000000..8b15bb5861 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_fork.rb @@ -0,0 +1,75 @@ +require 'em_test_helper' + +class TestFork < Test::Unit::TestCase + + def test_fork_safe + omit_if(jruby?) + omit_if(windows?) + + fork_pid = nil + read, write = IO.pipe + EM.run do + fork_pid = fork do + write.puts "forked" + EM.run do + EM.next_tick do + write.puts "EM ran" + EM.stop + end + end + end + EM.stop + end + + sleep 0.1 + begin + Timeout::timeout 1 do + assert_equal "forked\n", read.readline + assert_equal "EM ran\n", read.readline + end + rescue Timeout::Error + Process.kill 'TERM', fork_pid + flunk "Timeout waiting for next_tick in new fork reactor" + end + ensure + read.close rescue nil + write.close rescue nil + end + + def test_fork_reactor + omit_if(jruby?) + omit_if(windows?) + + fork_pid = nil + read, write = IO.pipe + EM.run do + EM.defer do + write.puts Process.pid + EM.defer do + EM.stop + end + end + fork_pid = EM.fork_reactor do + EM.defer do + write.puts Process.pid + EM.stop + end + end + end + + sleep 0.1 + begin + Timeout::timeout 1 do + assert_equal Process.pid.to_s, read.readline.chomp + assert_equal fork_pid.to_s, read.readline.chomp + end + rescue Timeout::Error + Process.kill 'TERM', fork_pid + flunk "Timeout waiting for deferred block in fork_reactor" + end + ensure + read.close rescue nil + write.close rescue nil + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_futures.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_futures.rb new file mode 100644 index 0000000000..b4948567dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_futures.rb @@ -0,0 +1,170 @@ +require 'em_test_helper' + +class TestFutures < Test::Unit::TestCase + + def setup + end + + def teardown + end + + def test_future + assert_equal(100, EM::Deferrable.future(100) ) + + p1 = proc { 100 + 1 } + assert_equal(101, EM::Deferrable.future(p1) ) + end + + class MyFuture + include EM::Deferrable + def initialize *args + super + set_deferred_status :succeeded, 40 + end + end + + class MyErrorFuture + include EM::Deferrable + def initialize *args + super + set_deferred_status :failed, 41 + end + end + + + def test_future_1 + # Call future with one additional argument and it will be treated as a callback. + def my_future + MyFuture.new + end + + value = nil + EM::Deferrable.future my_future, proc {|v| value=v} + assert_equal( 40, value ) + end + + + def test_future_2 + # Call future with two additional arguments and they will be treated as a callback + # and an errback. + value = nil + EM::Deferrable.future MyErrorFuture.new, nil, proc {|v| value=v} + assert_equal( 41, value ) + end + + + def test_future_3 + # Call future with no additional arguments but with a block, and the block will be + # treated as a callback. + value = nil + EM::Deferrable.future MyFuture.new do |v| + value=v + end + assert_equal( 40, value ) + end + + + class RecursiveCallback + include EM::Deferrable + end + + # A Deferrable callback can call #set_deferred_status to change the values + # passed to subsequent callbacks. + # + def test_recursive_callbacks + n = 0 # counter assures that all the tests actually run. + rc = RecursiveCallback.new + rc.callback {|a| + assert_equal(100, a) + n += 1 + rc.set_deferred_status :succeeded, 101, 101 + } + rc.callback {|a,b| + assert_equal(101, a) + assert_equal(101, b) + n += 1 + rc.set_deferred_status :succeeded, 102, 102, 102 + } + rc.callback {|a,b,c| + assert_equal(102, a) + assert_equal(102, b) + assert_equal(102, c) + n += 1 + } + rc.set_deferred_status :succeeded, 100 + assert_equal(3, n) + end + + def test_syntactic_sugar + rc = RecursiveCallback.new + rc.set_deferred_success 100 + rc.set_deferred_failure 200 + end + + # It doesn't raise an error to set deferred status more than once. + # In fact, this is a desired and useful idiom when it happens INSIDE + # a callback or errback. + # However, it's less useful otherwise, and in fact would generally be + # indicative of a programming error. However, we would like to be resistant + # to such errors. So whenever we set deferred status, we also clear BOTH + # stacks of handlers. + # + def test_double_calls + s = 0 + e = 0 + + d = EM::DefaultDeferrable.new + d.callback {s += 1} + d.errback {e += 1} + + d.succeed # We expect the callback to be called, and the errback to be DISCARDED. + d.fail # Presumably an error. We expect the errback NOT to be called. + d.succeed # We expect the callback to have been discarded and NOT to be called again. + + assert_equal(1, s) + assert_equal(0, e) + end + + # Adding a callback to a Deferrable that is already in a success state executes the callback + # immediately. The same applies to a an errback added to an already-failed Deferrable. + # HOWEVER, we expect NOT to be able to add errbacks to succeeded Deferrables, or callbacks + # to failed ones. + # + # We illustrate this with a rather contrived test. The test calls #fail after #succeed, + # which ordinarily would not happen in a real program. + # + # What we're NOT attempting to specify is what happens if a Deferrable is succeeded and then + # failed (or vice-versa). Should we then be able to add callbacks/errbacks of the appropriate + # type for immediate execution? For now at least, the official answer is "don't do that." + # + def test_delayed_callbacks + s1 = 0 + s2 = 0 + e = 0 + + d = EM::DefaultDeferrable.new + d.callback {s1 += 1} + + d.succeed # Triggers and discards the callback. + + d.callback {s2 += 1} # This callback is executed immediately and discarded. + + d.errback {e += 1} # This errback should be DISCARDED and never execute. + d.fail # To prove it, fail and assert e is 0 + + assert_equal( [1,1], [s1,s2] ) + assert_equal( 0, e ) + end + + def test_timeout + n = 0 + EM.run { + d = EM::DefaultDeferrable.new + d.callback {n = 1; EM.stop} + d.errback {n = 2; EM.stop} + d.timeout(0.01) + } + assert_equal( 2, n ) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_handler_check.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_handler_check.rb new file mode 100644 index 0000000000..c4176941bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_handler_check.rb @@ -0,0 +1,35 @@ +require 'em_test_helper' + +class TestHandlerCheck < Test::Unit::TestCase + + class Foo < EM::Connection; end; + module TestModule; end; + + def test_with_correct_class + assert_nothing_raised do + EM.run { + EM.connect("127.0.0.1", 80, Foo) + EM.stop_event_loop + } + end + end + + def test_with_incorrect_class + assert_raise(ArgumentError) do + EM.run { + EM.connect("127.0.0.1", 80, String) + EM.stop_event_loop + } + end + end + + def test_with_module + assert_nothing_raised do + EM.run { + EM.connect("127.0.0.1", 80, TestModule) + EM.stop_event_loop + } + end + end + +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_hc.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_hc.rb new file mode 100644 index 0000000000..28e32c9ced --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_hc.rb @@ -0,0 +1,155 @@ +require 'em_test_helper' + +class TestHeaderAndContentProtocol < Test::Unit::TestCase + + class SimpleTest < EM::P::HeaderAndContentProtocol + attr_reader :first_header, :my_headers, :request + + def receive_first_header_line hdr + @first_header ||= [] + @first_header << hdr + end + def receive_headers hdrs + @my_headers ||= [] + @my_headers << hdrs + end + def receive_request hdrs, content + @request ||= [] + @request << [hdrs, content] + end + end + + class StopOnUnbind < EM::Connection + def unbind + EM.add_timer(0.01) { EM.stop } + end + end + + def setup + @port = next_port + end + + def test_no_content + the_connection = nil + EM.run { + EM.start_server( "127.0.0.1", @port, SimpleTest ) do |conn| + the_connection = conn + end + setup_timeout + + EM.connect "127.0.0.1", @port, StopOnUnbind do |c| + c.send_data [ "aaa\n", "bbb\r\n", "ccc\n", "\n" ].join + c.close_connection_after_writing + end + } + assert_equal( ["aaa"], the_connection.first_header ) + assert_equal( [%w(aaa bbb ccc)], the_connection.my_headers ) + assert_equal( [[%w(aaa bbb ccc), ""]], the_connection.request ) + end + + def test_content + the_connection = nil + content = "A" * 50 + headers = ["aaa", "bbb", "Content-length: #{content.length}", "ccc"] + EM.run { + EM.start_server( "127.0.0.1", @port, SimpleTest ) do |conn| + the_connection = conn + end + setup_timeout + + EM.connect "127.0.0.1", @port, StopOnUnbind do |c| + headers.each { |h| c.send_data "#{h}\r\n" } + c.send_data "\n" + c.send_data content + c.close_connection_after_writing + end + } + assert_equal( ["aaa"], the_connection.first_header ) + assert_equal( [headers], the_connection.my_headers ) + assert_equal( [[headers, content]], the_connection.request ) + end + + def test_several_requests + the_connection = nil + content = "A" * 50 + headers = ["aaa", "bbb", "Content-length: #{content.length}", "ccc"] + EM.run { + EM.start_server( "127.0.0.1", @port, SimpleTest ) do |conn| + the_connection = conn + end + setup_timeout + + EM.connect( "127.0.0.1", @port, StopOnUnbind ) do |c| + 5.times do + headers.each { |h| c.send_data "#{h}\r\n" } + c.send_data "\n" + c.send_data content + end + c.close_connection_after_writing + end + } + assert_equal( ["aaa"] * 5, the_connection.first_header ) + assert_equal( [headers] * 5, the_connection.my_headers ) + assert_equal( [[headers, content]] * 5, the_connection.request ) + end + + + # def x_test_multiple_content_length_headers + # # This is supposed to throw a RuntimeError but it throws a C++ exception instead. + # the_connection = nil + # content = "A" * 50 + # headers = ["aaa", "bbb", ["Content-length: #{content.length}"]*2, "ccc"].flatten + # EM.run { + # EM.start_server( "127.0.0.1", @port, SimpleTest ) do |conn| + # the_connection = conn + # end + # EM.add_timer(4) {raise "test timed out"} + # test_proc = proc { + # t = TCPSocket.new "127.0.0.1", @port + # headers.each {|h| t.write "#{h}\r\n" } + # t.write "\n" + # t.write content + # t.close + # } + # EM.defer test_proc, proc { + # EM.stop + # } + # } + # end + + def test_interpret_headers + the_connection = nil + content = "A" * 50 + headers = [ + "GET / HTTP/1.0", + "Accept: aaa", + "User-Agent: bbb", + "Host: ccc", + "x-tempest-header:ddd" + ] + + EM.run { + EM.start_server( "127.0.0.1", @port, SimpleTest ) do |conn| + the_connection = conn + end + setup_timeout + + EM.connect( "127.0.0.1", @port, StopOnUnbind ) do |c| + headers.each { |h| c.send_data "#{h}\r\n" } + c.send_data "\n" + c.send_data content + c.close_connection_after_writing + end + } + + hsh = the_connection.headers_2_hash( the_connection.my_headers.shift ) + expect = { + :accept => "aaa", + :user_agent => "bbb", + :host => "ccc", + :x_tempest_header => "ddd" + } + assert_equal(expect, hsh) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient.rb new file mode 100644 index 0000000000..572a8022b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient.rb @@ -0,0 +1,238 @@ +require 'em_test_helper' + +class TestHttpClient < Test::Unit::TestCase + + def setup + @port = next_port + end + + #------------------------------------- + + def test_http_client + ok = false + EM.run { + c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 } + c.callback { + ok = true + c.close_connection + EM.stop + } + c.errback {EM.stop} # necessary, otherwise a failure blocks the test suite forever. + } + assert ok + end + + #------------------------------------- + + def test_http_client_1 + ok = false + EM.run { + c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 } + c.callback { + ok = true + c.close_connection + EM.stop + } + c.errback {EM.stop} + } + assert ok + end + + #------------------------------------- + + def test_http_client_2 + ok = false + EM.run { + c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 } + c.callback { + ok = true + c.close_connection + EM.stop + } + c.errback {EM.stop} + } + assert ok + end + + + #----------------------------------------- + + # Test a server that returns a page with a zero content-length. + # This caused an early version of the HTTP client not to generate a response, + # causing this test to hang. Observe, there was no problem with responses + # lacking a content-length, just when the content-length was zero. + # + class EmptyContent < EM::Connection + def initialize *args + super + end + def receive_data data + send_data "HTTP/1.0 404 ...\r\nContent-length: 0\r\n\r\n" + close_connection_after_writing + end + end + + def test_http_empty_content + ok = false + EM.run { + EM.start_server "127.0.0.1", @port, EmptyContent + c = silent { EM::P::HttpClient.send :request, :host => "127.0.0.1", :port => @port } + c.callback { + ok = true + c.close_connection + EM.stop + } + } + assert ok + end + + + #--------------------------------------- + + class PostContent < EM::P::LineAndTextProtocol + def initialize *args + super + @lines = [] + end + def receive_line line + if line.length > 0 + @lines << line + else + process_headers + end + end + def receive_binary_data data + @post_content = data + send_response + end + def process_headers + if @lines.first =~ /\APOST ([^\s]+) HTTP\/1.1\Z/ + @uri = $1.dup + else + raise "bad request" + end + + @lines.each {|line| + if line =~ /\AContent-length:\s*(\d+)\Z/i + @content_length = $1.dup.to_i + elsif line =~ /\AContent-type:\s*(\d+)\Z/i + @content_type = $1.dup + end + } + + raise "invalid content length" unless @content_length + set_binary_mode @content_length + end + def send_response + send_data "HTTP/1.1 200 ...\r\nConnection: close\r\nContent-length: 10\r\nContent-type: text/html\r\n\r\n0123456789" + close_connection_after_writing + end + end + + # TODO, this is WRONG. The handler is asserting an HTTP 1.1 request, but the client + # is sending a 1.0 request. Gotta fix the client + def test_post + response = nil + EM.run { + EM.start_server '127.0.0.1', @port, PostContent + setup_timeout(2) + c = silent { EM::P::HttpClient.request( + :host => '127.0.0.1', + :port => @port, + :method => :post, + :request => "/aaa", + :content => "XYZ", + :content_type => "text/plain" + )} + c.callback {|r| + response = r + EM.stop + } + } + + assert_equal( 200, response[:status] ) + assert_equal( "0123456789", response[:content] ) + end + + + # TODO, need a more intelligent cookie tester. + # In fact, this whole test-harness needs a beefier server implementation. + def test_cookie + ok = false + EM.run { + c = silent { EM::Protocols::HttpClient.send :request, :host => "www.google.com", :port => 80, :cookie=>"aaa=bbb" } + c.callback { + ok = true + c.close_connection + EM.stop + } + c.errback {EM.stop} + } + assert ok + end + + # We can tell the client to send an HTTP/1.0 request (default is 1.1). + # This is useful for suppressing chunked responses until those are working. + def test_version_1_0 + ok = false + EM.run { + c = silent { EM::P::HttpClient.request( + :host => "www.google.com", + :port => 80, + :version => "1.0" + )} + c.callback { + ok = true + c.close_connection + EM.stop + } + c.errback {EM.stop} + } + assert ok + end + + #----------------------------------------- + + # Test a server that returns chunked encoding + # + class ChunkedEncodingContent < EventMachine::Connection + def initialize *args + super + end + def receive_data data + send_data ["HTTP/1.1 200 OK", + "Server: nginx/0.7.67", + "Date: Sat, 23 Oct 2010 16:41:32 GMT", + "Content-Type: application/json", + "Transfer-Encoding: chunked", + "Connection: keep-alive", + "", + "1800", + "chunk1" * 1024, + "5a", + "chunk2" * 15, + "0", + ""].join("\r\n") + close_connection_after_writing + end + end + + def test_http_chunked_encoding_content + ok = false + EM.run { + EM.start_server "127.0.0.1", @port, ChunkedEncodingContent + c = silent { EM::P::HttpClient.send :request, :host => "127.0.0.1", :port => @port } + c.callback { |result| + if result[:content] == "chunk1" * 1024 + "chunk2" * 15 + ok = true + end + c.close_connection + EM.stop + } + } + assert ok + end + +end + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient2.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient2.rb new file mode 100644 index 0000000000..a00fcbcb4a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_httpclient2.rb @@ -0,0 +1,128 @@ +require 'em_test_helper' + +class TestHttpClient2 < Test::Unit::TestCase + class TestServer < EM::Connection + end + + def setup + @port = next_port + end + + # #connect returns an object which has made a connection to an HTTP server + # and exposes methods for making HTTP requests on that connection. + # #connect can take either a pair of parameters (a host and a port), + # or a single parameter which is a Hash. + # + def test_connect + EM.run { + setup_timeout(1) + EM.start_server '127.0.0.1', @port, TestServer + silent do + EM::P::HttpClient2.connect '127.0.0.1', @port + EM::P::HttpClient2.connect( :host=>'127.0.0.1', :port=>@port ) + end + EM.stop + } + end + + def test_bad_port + EM.run { + setup_timeout(1) + EM.start_server '127.0.0.1', @port, TestServer + assert_raises( ArgumentError ) { + silent { EM::P::HttpClient2.connect '127.0.0.1', "xxx" } + } + EM.stop + } + end + + def test_bad_server + err = nil + EM.run { + setup_timeout(1) + http = silent { EM::P::HttpClient2.connect '127.0.0.1', 9999 } + d = http.get "/" + d.errback { err = true; d.internal_error; EM.stop } + } + assert(err) + end + + def test_get + content = nil + EM.run { + setup_timeout(1) + http = silent { EM::P::HttpClient2.connect :host => "google.com", :port => 80, :version => '1.0' } + d = http.get "/" + d.callback { + content = d.content + EM.stop + } + } + assert(content) + end + + # Not a pipelined request because we wait for one response before we request the next. + # XXX this test is broken because it sends the second request to the first connection + # XXX right before the connection closes + def _test_get_multiple + content = nil + EM.run { + setup_timeout(1) + http = silent { EM::P::HttpClient2.connect "google.com", :version => '1.0' } + d = http.get "/" + d.callback { + e = http.get "/" + e.callback { + content = e.content + EM.stop + } + } + } + assert(content) + end + + def test_get_pipeline + headers, headers2 = nil, nil + EM.run { + setup_timeout(1) + http = silent { EM::P::HttpClient2.connect "google.com", 80 } + d = http.get("/") + d.callback { + headers = d.headers + } + e = http.get("/") + e.callback { + headers2 = e.headers + } + EM.tick_loop { EM.stop if headers && headers2 } + EM.add_timer(1) { EM.stop } + } + assert(headers) + assert(headers2) + end + + def test_authheader + EM.run { + setup_timeout(1) + EM.start_server '127.0.0.1', @port, TestServer + http = silent { EM::P::HttpClient2.connect '127.0.0.1', 18842 } + d = http.get :url=>"/", :authorization=>"Basic xxx" + d.callback {EM.stop} + d.errback {EM.stop} + } + end + + def test_https_get + omit_unless(EM.ssl?) + d = nil + EM.run { + setup_timeout(1) + http = silent { EM::P::HttpClient2.connect :host => 'www.google.com', :port => 443, :ssl => true, :version => '1.0' } + d = http.get "/" + d.callback {EM.stop} + d.errback {EM.stop} + } + assert_equal(200, d.status) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_idle_connection.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_idle_connection.rb new file mode 100644 index 0000000000..bfc57cd99f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_idle_connection.rb @@ -0,0 +1,31 @@ +require 'em_test_helper' + +class TestIdleConnection < Test::Unit::TestCase + def setup + @port = next_port + end + + def test_idle_time + omit_if(!EM.respond_to?(:get_idle_time)) + + a, b = nil, nil + EM.run do + EM.start_server '127.0.0.1', @port, Module.new + conn = EM.connect '127.0.0.1', @port + EM.add_timer(0.3) do + a = conn.get_idle_time + conn.send_data 'a' + EM.next_tick do + EM.next_tick do + b = conn.get_idle_time + conn.close_connection + EM.stop + end + end + end + end + + assert_in_delta 0.3, a, 0.1 + assert_in_delta 0, b, 0.1 + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_inactivity_timeout.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_inactivity_timeout.rb new file mode 100644 index 0000000000..15e39a2f73 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_inactivity_timeout.rb @@ -0,0 +1,54 @@ +require 'em_test_helper' + +class TestInactivityTimeout < Test::Unit::TestCase + + if EM.respond_to? :get_comm_inactivity_timeout + def test_default + EM.run { + c = EM.connect("127.0.0.1", 54321) + assert_equal 0.0, c.comm_inactivity_timeout + EM.stop + } + end + + def test_set_and_get + EM.run { + c = EM.connect("127.0.0.1", 54321) + c.comm_inactivity_timeout = 2.5 + assert_equal 2.5, c.comm_inactivity_timeout + EM.stop + } + end + + def test_for_real + start, finish = nil + + timeout_handler = Module.new do + define_method :unbind do + finish = Time.now + EM.stop + end + end + + EM.run { + setup_timeout + EM.heartbeat_interval = 0.01 + EM.start_server("127.0.0.1", 12345) + EM.add_timer(0.01) { + start = Time.now + c = EM.connect("127.0.0.1", 12345, timeout_handler) + c.comm_inactivity_timeout = 0.02 + } + } + + assert_in_delta(0.02, (finish - start), 0.02) + end + else + warn "EM.comm_inactivity_timeout not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_comm_inactivity_timeout_not_implemented + assert true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv4.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv4.rb new file mode 100644 index 0000000000..bd11bbfe39 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv4.rb @@ -0,0 +1,95 @@ +require 'em_test_helper' + +class TestIPv4 < Test::Unit::TestCase + # Runs a TCP server in the local IPv4 address, connects to it and sends a specific data. + # Timeout in 2 seconds. + def test_ipv4_tcp_local_server + omit_if(!Test::Unit::TestCase.public_ipv4?) + + @@received_data = nil + @local_port = next_port + setup_timeout(2) + + EM.run do + EM::start_server(@@public_ipv4, @local_port) do |s| + def s.receive_data data + @@received_data = data + EM.stop + end + end + + EM::connect(@@public_ipv4, @local_port) do |c| + c.send_data "ipv4/tcp" + end + end + + assert_equal "ipv4/tcp", @@received_data + end + + # Runs a UDP server in the local IPv4 address, connects to it and sends a specific data. + # Timeout in 2 seconds. + def test_ipv4_udp_local_server + omit_if(!Test::Unit::TestCase.public_ipv4?) + + @@received_data = nil + @local_port = next_port + setup_timeout(2) + + EM.run do + EM::open_datagram_socket(@@public_ipv4, @local_port) do |s| + def s.receive_data data + @@received_data = data + EM.stop + end + end + + EM::open_datagram_socket(@@public_ipv4, next_port) do |c| + c.send_datagram "ipv4/udp", @@public_ipv4, @local_port + end + end + + assert_equal "ipv4/udp", @@received_data + end + + # Try to connect via TCP to an invalid IPv4. EM.connect should raise + # EM::ConnectionError. + def test_tcp_connect_to_invalid_ipv4 + omit_if(!Test::Unit::TestCase.public_ipv4?) + + invalid_ipv4 = "9.9:9" + + EM.run do + begin + error = nil + EM.connect(invalid_ipv4, 1234) + rescue => e + error = e + ensure + EM.stop + assert_equal EM::ConnectionError, (error && error.class) + end + end + end + + # Try to send a UDP datagram to an invalid IPv4. EM.send_datagram should raise + # EM::ConnectionError. + def test_udp_send_datagram_to_invalid_ipv4 + omit_if(!Test::Unit::TestCase.public_ipv4?) + + invalid_ipv4 = "9.9:9" + + EM.run do + begin + error = nil + EM.open_datagram_socket(@@public_ipv4, next_port) do |c| + c.send_datagram "hello", invalid_ipv4, 1234 + end + rescue => e + error = e + ensure + EM.stop + assert_equal EM::ConnectionError, (error && error.class) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv6.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv6.rb new file mode 100644 index 0000000000..b52fef1f87 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ipv6.rb @@ -0,0 +1,107 @@ +require 'em_test_helper' + +class TestIPv6 < Test::Unit::TestCase + + if Test::Unit::TestCase.public_ipv6? + + # Runs a TCP server in the local IPv6 address, connects to it and sends a specific data. + # Timeout in 2 seconds. + def test_ipv6_tcp_local_server + @@received_data = nil + @local_port = next_port + setup_timeout(2) + + EM.run do + EM.start_server(@@public_ipv6, @local_port) do |s| + def s.receive_data data + @@received_data = data + EM.stop + end + end + + EM::connect(@@public_ipv6, @local_port) do |c| + def c.unbind(reason) + warn "unbind: #{reason.inspect}" if reason # XXX at least find out why it failed + end + c.send_data "ipv6/tcp" + end + end + + assert_equal "ipv6/tcp", @@received_data + end + + # Runs a UDP server in the local IPv6 address, connects to it and sends a specific data. + # Timeout in 2 seconds. + def test_ipv6_udp_local_server + @@received_data = nil + @local_port = next_port + @@remote_ip = nil + setup_timeout(2) + + EM.run do + EM.open_datagram_socket(@@public_ipv6, @local_port) do |s| + def s.receive_data data + _port, @@remote_ip = Socket.unpack_sockaddr_in(get_peername) + @@received_data = data + EM.stop + end + end + + EM.open_datagram_socket(@@public_ipv6, next_port) do |c| + c.send_datagram "ipv6/udp", @@public_ipv6, @local_port + end + end + assert_equal @@remote_ip, @@public_ipv6 + assert_equal "ipv6/udp", @@received_data + end + + # Try to connect via TCP to an invalid IPv6. EM.connect should raise + # EM::ConnectionError. + def test_tcp_connect_to_invalid_ipv6 + invalid_ipv6 = "1:A" + + EM.run do + begin + error = nil + EM.connect(invalid_ipv6, 1234) + rescue => e + error = e + ensure + EM.stop + assert_equal EM::ConnectionError, (error && error.class) + end + end + end + + # Try to send a UDP datagram to an invalid IPv6. EM.send_datagram should raise + # EM::ConnectionError. + def test_udp_send_datagram_to_invalid_ipv6 + invalid_ipv6 = "1:A" + + EM.run do + begin + error = nil + EM.open_datagram_socket(@@public_ipv6, next_port) do |c| + c.send_datagram "hello", invalid_ipv6, 1234 + end + rescue => e + error = e + ensure + EM.stop + assert_equal EM::ConnectionError, (error && error.class) + end + end + end + + + else + warn "no IPv6 in this host, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests. + def test_ipv6_unavailable + assert true + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_iterator.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_iterator.rb new file mode 100644 index 0000000000..6ec4e4642e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_iterator.rb @@ -0,0 +1,118 @@ +require 'em_test_helper' + +class TestIterator < Test::Unit::TestCase + + # By default, format the time with tenths-of-seconds. + # Some tests should ask for extra decimal places to ensure + # that delays between iterations will receive a changed time. + def get_time(n=1) + time = EM.current_time + time.strftime('%H:%M:%S.') + time.tv_usec.to_s[0, n] + end + + def test_default_concurrency + items = {} + list = 1..10 + EM.run { + EM::Iterator.new(list).each( proc {|num,iter| + time = get_time(3) + items[time] ||= [] + items[time] << num + EM::Timer.new(0.02) {iter.next} + }, proc {EM.stop}) + } + assert_equal(10, items.keys.size) + assert_equal(list.to_a.sort, items.values.flatten.sort) + end + + def test_default_concurrency_with_a_proc + items = {} + list = (1..10).to_a + original_list = list.dup + EM.run { + EM::Iterator.new(proc{list.pop || EM::Iterator::Stop}).each( proc {|num,iter| + time = get_time(3) + items[time] ||= [] + items[time] << num + EM::Timer.new(0.02) {iter.next} + }, proc {EM.stop}) + } + assert_equal(10, items.keys.size) + assert_equal(original_list.to_a.sort, items.values.flatten.sort) + end + + def test_concurrency_bigger_than_list_size + items = {} + list = [1,2,3] + EM.run { + EM::Iterator.new(list,10).each(proc {|num,iter| + time = get_time + items[time] ||= [] + items[time] << num + EM::Timer.new(1) {iter.next} + }, proc {EM.stop}) + } + assert_equal(1, items.keys.size) + assert_equal(list.to_a.sort, items.values.flatten.sort) + end + + def test_changing_concurrency_affects_active_iteration + items = {} + list = 1..25 + seen = 0 + EM.run { + i = EM::Iterator.new(list,1) + i.each(proc {|num,iter| + time = get_time + items[time] ||= [] + items[time] << num + if (seen += 1) == 5 + # The first 5 items will be distinct times + # The next 20 items will happen in 2 bursts + i.concurrency = 10 + end + EM::Timer.new(0.2) {iter.next} + }, proc {EM.stop}) + } + assert_in_delta(7, items.keys.size, 1) + assert_equal(list.to_a.sort, items.values.flatten.sort) + end + + def test_map + list = 100..150 + EM.run { + EM::Iterator.new(list).map(proc{ |num,iter| + EM.add_timer(0.01){ iter.return(num) } + }, proc{ |results| + assert_equal(list.to_a.size, results.size) + EM.stop + }) + } + end + + def test_inject + omit_if(windows?) + + list = %w[ pwd uptime uname date ] + EM.run { + EM::Iterator.new(list, 2).inject({}, proc{ |hash,cmd,iter| + EM.system(cmd){ |output,status| + hash[cmd] = status.exitstatus == 0 ? output.strip : nil + iter.return(hash) + } + }, proc{ |results| + assert_equal(results.keys.sort, list.sort) + EM.stop + }) + } + end + + def test_concurrency_is_0 + EM.run { + assert_raise ArgumentError do + EM::Iterator.new(1..5,0) + end + EM.stop + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_kb.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_kb.rb new file mode 100644 index 0000000000..9c31f5fbcc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_kb.rb @@ -0,0 +1,28 @@ +require 'em_test_helper' + +class TestKeyboardEvents < Test::Unit::TestCase + + module KbHandler + include EM::Protocols::LineText2 + def receive_line d + EM::stop if d == "STOP" + end + end + + # This test doesn't actually do anything useful but is here to + # illustrate the usage. If you removed the timer and ran this test + # by itself on a console, and then typed into the console, it would + # work. + # I don't know how to get the test harness to simulate actual keystrokes. + # When someone figures that out, then we can make this a real test. + # + def test_kb + omit_if(jruby?) + omit_if(!$stdout.tty?) # don't run the test unless it stands a chance of validity. + EM.run do + EM.open_keyboard KbHandler + EM::Timer.new(1) { EM.stop } + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_line_protocol.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_line_protocol.rb new file mode 100644 index 0000000000..2067a72e6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_line_protocol.rb @@ -0,0 +1,33 @@ +require 'em_test_helper' + +class TestLineProtocol < Test::Unit::TestCase + class LineProtocolTestClass + include EM::Protocols::LineProtocol + + def lines + @lines ||= [] + end + + def receive_line(line) + lines << line + end + end + + def setup + @proto = LineProtocolTestClass.new + end + + def test_simple_split_line + @proto.receive_data("this is") + assert_equal([], @proto.lines) + + @proto.receive_data(" a test\n") + assert_equal(["this is a test"], @proto.lines) + end + + def test_simple_lines + @proto.receive_data("aaa\nbbb\r\nccc\nddd") + assert_equal(%w(aaa bbb ccc), @proto.lines) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp.rb new file mode 100644 index 0000000000..06c2685145 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp.rb @@ -0,0 +1,155 @@ +require 'em_test_helper' + +class TestLineAndTextProtocol < Test::Unit::TestCase + + class TLP_LineBuffer < EM::P::LineAndTextProtocol + attr_reader :line_buffer + + def initialize + super + @line_buffer = [] + end + + def receive_line line + @line_buffer << line + end + end + + module StopClient + def set_receive_data(&blk) + @rdb = blk + end + + def receive_data data + @rdb.call(data) if @rdb + end + + def unbind + EM.add_timer(0.1) { EM.stop } + end + end + + def setup + @port = next_port + end + + def test_simple_lines + conn = nil + EM.run { + EM.start_server( "127.0.0.1", @port, TLP_LineBuffer ) do |c| + conn = c + end + setup_timeout + + EM.connect "127.0.0.1", @port, StopClient do |c| + c.send_data "aaa\nbbb\r\nccc\n" + c.close_connection_after_writing + end + } + assert_equal( %w(aaa bbb ccc), conn.line_buffer) + end + + #-------------------------------------------------------------------- + + class TLP_ErrorMessage < EM::P::LineAndTextProtocol + attr_reader :error_message + + def initialize + super + @error_message = [] + end + + def receive_line text + raise + end + + def receive_error text + @error_message << text + end + end + + def test_overlength_lines + conn = nil + EM.run { + EM.start_server( "127.0.0.1", @port, TLP_ErrorMessage ) do |c| + conn = c + end + setup_timeout + EM.connect "127.0.0.1", @port, StopClient do |c| + c.send_data "a" * (16*1024 + 1) + c.send_data "\n" + c.close_connection_after_writing + end + + } + assert_equal( ["overlength line"], conn.error_message ) + end + + + #-------------------------------------------------------------------- + + class LineAndTextTest < EM::P::LineAndTextProtocol + def receive_line line + if line =~ /content-length:\s*(\d+)/i + @content_length = $1.to_i + elsif line.length == 0 + set_binary_mode @content_length + end + end + def receive_binary_data text + send_data "received #{text.length} bytes" + close_connection_after_writing + end + end + + def test_lines_and_text + output = '' + EM.run { + EM.start_server( "127.0.0.1", @port, LineAndTextTest ) + setup_timeout + + EM.connect "127.0.0.1", @port, StopClient do |c| + c.set_receive_data { |data| output << data } + c.send_data "Content-length: 400\n" + c.send_data "\n" + c.send_data "A" * 400 + EM.add_timer(0.1) { c.close_connection_after_writing } + end + } + assert_equal( "received 400 bytes", output ) + end + + #-------------------------------------------------------------------- + + + class BinaryTextTest < EM::P::LineAndTextProtocol + def receive_line line + if line =~ /content-length:\s*(\d+)/i + set_binary_mode $1.to_i + else + raise "protocol error" + end + end + def receive_binary_data text + send_data "received #{text.length} bytes" + close_connection_after_writing + end + end + + def test_binary_text + output = '' + EM.run { + EM.start_server( "127.0.0.1", @port, BinaryTextTest ) + setup_timeout + + EM.connect "127.0.0.1", @port, StopClient do |c| + c.set_receive_data { |data| output << data } + c.send_data "Content-length: 10000\n" + c.send_data "A" * 10000 + EM.add_timer(0.1) { c.close_connection_after_writing } + end + } + assert_equal( "received 10000 bytes", output ) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp2.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp2.rb new file mode 100644 index 0000000000..220fcbe1cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ltp2.rb @@ -0,0 +1,332 @@ +require 'em_test_helper' + +# TODO!!! Need tests for overlength headers and text bodies. + +class TestLineText2 < Test::Unit::TestCase + + # Run each of these tests two ways: passing in the whole test-dataset in one chunk, + # and passing it in one character at a time. + + class Basic + include EM::Protocols::LineText2 + attr_reader :lines + def receive_line line + (@lines ||= []) << line + end + end + def test_basic + testdata = "Line 1\nLine 2\r\nLine 3\n" + + a = Basic.new + a.receive_data testdata + assert_equal( ["Line 1", "Line 2", "Line 3"], a.lines ) + + a = Basic.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( ["Line 1", "Line 2", "Line 3"], a.lines ) + end + + # The basic test above shows that extra newlines are chomped + # This test shows that newlines are preserved if the delimiter isn't \n + class PreserveNewlines + include EM::Protocols::LineText2 + attr_reader :lines + def initialize *args + super + @delim = "|" + set_delimiter @delim + end + def receive_line line + (@lines ||= []) << line + end + end + def test_preserve_newlines + a = PreserveNewlines.new + a.receive_data "aaa|bbb|ccc|\n|\r\n| \t ||" + assert_equal( ["aaa", "bbb", "ccc", "\n", "\r\n", " \t ", ""], a.lines ) + end + + class ChangeDelimiter + include EM::Protocols::LineText2 + attr_reader :lines + def initialize *args + super + @delim = "A" + set_delimiter @delim + end + def receive_line line + (@lines ||= []) << line + set_delimiter( @delim.succ! ) + end + end + + def test_change_delimiter + testdata = %Q(LineaALinebBLinecCLinedD) + + a = ChangeDelimiter.new + a.receive_data testdata + assert_equal( ["Linea", "Lineb", "Linec", "Lined"], a.lines ) + + a = ChangeDelimiter.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( ["Linea", "Lineb", "Linec", "Lined"], a.lines ) + end + + class RegexDelimiter + include EM::Protocols::LineText2 + attr_reader :lines + def initialize *args + super + @delim = /[A-D]/ + set_delimiter @delim + end + def receive_line line + (@lines ||= []) << line + end + end + + def test_regex_delimiter + testdata = %Q(LineaALinebBLinecCLinedD) + + a = RegexDelimiter.new + a.receive_data testdata + assert_equal( ["Linea", "Lineb", "Linec", "Lined"], a.lines ) + + a = RegexDelimiter.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( ["Linea", "Lineb", "Linec", "Lined"], a.lines ) + end + + #-- + # Test two lines followed by an empty line, ten bytes of binary data, then + # two more lines. + + class Binary + include EM::Protocols::LineText2 + attr_reader :lines, :body + def initialize *args + super + @lines = [] + @body = nil + end + def receive_line ln + if ln == "" + set_text_mode 10 + else + @lines << ln + end + end + def receive_binary_data data + @body = data + end + end + + def test_binary + testdata = %Q(Line 1 +Line 2 + +0000000000Line 3 +Line 4 +) + + a = Binary.new + a.receive_data testdata + assert_equal( ["Line 1", "Line 2", "Line 3", "Line 4"], a.lines) + assert_equal( "0000000000", a.body ) + + a = Binary.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( ["Line 1", "Line 2", "Line 3", "Line 4"], a.lines) + assert_equal( "0000000000", a.body ) + end + + + # Test unsized binary data. The expectation is that each chunk of it + # will be passed to us as it it received. + class UnsizedBinary + include EM::Protocols::LineText2 + attr_reader :n_calls, :body + def initialize *args + super + set_text_mode + end + def receive_binary_data data + @n_calls ||= 0 + @n_calls += 1 + (@body ||= "") << data + end + end + + def test_unsized_binary + testdata = "X\0" * 1000 + + a = UnsizedBinary.new + a.receive_data testdata + assert_equal( 1, a.n_calls ) + assert_equal( testdata, a.body ) + + a = UnsizedBinary.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( 2000, a.n_calls ) + assert_equal( testdata, a.body ) + end + + + # Test binary data with a "throw back" into line-mode. + class ThrowBack + include EM::Protocols::LineText2 + attr_reader :headers + def initialize *args + super + @headers = [] + @n_bytes = 0 + set_text_mode + end + def receive_binary_data data + wanted = 25 - @n_bytes + will_take = if data.length > wanted + data.length - wanted + else + data.length + end + @n_bytes += will_take + + if @n_bytes == 25 + set_line_mode( data[will_take..-1] ) + end + end + def receive_line ln + @headers << ln + end + end + def test_throw_back + testdata = "Line\n" * 10 + + a = ThrowBack.new + a.receive_data testdata + assert_equal( ["Line"] * 5, a.headers ) + + a = ThrowBack.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( ["Line"] * 5, a.headers ) + end + + # Test multi-character line delimiters. + # Also note that the test data has a "tail" with no delimiter, that will be + # discarded, but cf. the BinaryTail test. + # TODO!!! This test doesn't work in the byte-by-byte case. + class Multichar + include EM::Protocols::LineText2 + attr_reader :lines + def initialize *args + super + @lines = [] + set_delimiter "012" + end + def receive_line ln + @lines << ln + end + end + def test_multichar + testdata = "Line012Line012Line012Line" + + a = Multichar.new + a.receive_data testdata + assert_equal( ["Line"]*3, a.lines ) + + a = Multichar.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + # DOESN'T WORK in this case. Multi-character delimiters are broken. + #assert_equal( ["Line"]*3, a.lines ) + end + + # Test a binary "tail," when a sized binary transfer doesn't complete because + # of an unbind. We get a partial result. + class BinaryTail + include EM::Protocols::LineText2 + attr_reader :data + def initialize *args + super + @data = "" + set_text_mode 1000 + end + def receive_binary_data data + # we expect to get all the data in one chunk, even in the byte-by-byte case, + # because sized transfers by definition give us exactly one call to + # #receive_binary_data. + @data = data + end + end + def test_binary_tail + testdata = "0" * 500 + + a = BinaryTail.new + a.receive_data testdata + a.unbind + assert_equal( "0" * 500, a.data ) + + a = BinaryTail.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + a.unbind + assert_equal( "0" * 500, a.data ) + end + + + # Test an end-of-binary call. Arrange to receive binary data but don't bother counting it + # as it comes. Rely on getting receive_end_of_binary_data to signal the transition back to + # line mode. + # At the present time, this isn't strictly necessary with sized binary chunks because by + # definition we accumulate them and make exactly one call to receive_binary_data, but + # we may want to support a mode in the future that would break up large chunks into multiple + # calls. + class LazyBinary + include EM::Protocols::LineText2 + attr_reader :data, :end + def initialize *args + super + @data = "" + set_text_mode 1000 + end + def receive_binary_data data + # we expect to get all the data in one chunk, even in the byte-by-byte case, + # because sized transfers by definition give us exactly one call to + # #receive_binary_data. + @data = data + end + def receive_end_of_binary_data + @end = true + end + end + def test_receive_end_of_binary_data + testdata = "_" * 1000 + a = LazyBinary.new + testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } + assert_equal( "_" * 1000, a.data ) + assert( a.end ) + end + + + # This tests a bug fix in which calling set_text_mode failed when called + # inside receive_binary_data. + # + class BinaryPair + include EM::Protocols::LineText2 + attr_reader :sizes + def initialize *args + super + set_text_mode 1 + @sizes = [] + end + def receive_binary_data dt + @sizes << dt.length + set_text_mode( (dt.length == 1) ? 2 : 1 ) + end + end + def test_binary_pairs + test_data = "123" * 5 + a = BinaryPair.new + a.receive_data test_data + assert_equal( [1,2,1,2,1,2,1,2,1,2], a.sizes ) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_many_fds.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_many_fds.rb new file mode 100644 index 0000000000..7c126dcc72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_many_fds.rb @@ -0,0 +1,22 @@ +require 'em_test_helper' +require 'socket' + +class TestManyFDs < Test::Unit::TestCase + def setup + @port = next_port + end + + def test_connection_class_cache + mod = Module.new + a = nil + Process.setrlimit(Process::RLIMIT_NOFILE, 4096) rescue nil + EM.run { + EM.start_server '127.0.0.1', @port, mod + 1100.times do + a = EM.connect '127.0.0.1', @port, mod + assert_kind_of EM::Connection, a + end + EM.stop + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_next_tick.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_next_tick.rb new file mode 100644 index 0000000000..9b60359c3d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_next_tick.rb @@ -0,0 +1,104 @@ +require 'em_test_helper' + +class TestNextTick < Test::Unit::TestCase + + def test_tick_arg + pr = proc {EM.stop} + EM.run { + EM.next_tick pr + } + assert true + end + + def test_tick_block + EM.run { + EM.next_tick {EM.stop} + } + assert true + end + + # This illustrates the solution to a long-standing problem. + # It's now possible to correctly nest calls to EM#run. + # See the source code commentary for EM#run for more info. + # + def test_run_run + EM.run { + EM.run { + EM.next_tick {EM.stop} + } + } + end + + def test_pre_run_queue + x = false + EM.next_tick { EM.stop; x = true } + EM.run { EM.add_timer(0.01) { EM.stop } } + assert x + end + + def test_cleanup_after_stop + x = true + EM.run{ + EM.next_tick{ + EM.stop + EM.next_tick{ x=false } + } + } + EM.run{ + EM.next_tick{ EM.stop } + } + assert x + end + + # We now support an additional parameter for EM#run. + # You can pass two procs to EM#run now. The first is executed as the normal + # run block. The second (if given) is scheduled for execution after the + # reactor loop completes. + # The reason for supporting this is subtle. There has always been an expectation + # that EM#run doesn't return until after the reactor loop ends. But now it's + # possible to nest calls to EM#run, which means that a nested call WILL + # RETURN. In order to write code that will run correctly either way, it's + # recommended to put any code which must execute after the reactor completes + # in the second parameter. + # + def test_run_run_2 + a = proc {EM.stop} + b = proc {assert true} + EM.run a, b + end + + + # This illustrates that EM#run returns when it's called nested. + # This isn't a feature, rather it's something to be wary of when writing code + # that must run correctly even if EM#run is called while a reactor is already + # running. + def test_run_run_3 + a = [] + EM.run { + EM.run proc {EM.stop}, proc {a << 2} + a << 1 + } + assert_equal( [1,2], a ) + end + + + def test_schedule_on_reactor_thread + x = false + EM.run do + EM.schedule { x = true } + EM.stop + end + assert x + end + + def test_schedule_from_thread + x = false + EM.run do + Thread.new { EM.schedule { x = true } }.join + assert !x + EM.next_tick { EM.stop } + end + assert x + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_object_protocol.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_object_protocol.rb new file mode 100644 index 0000000000..b1287ea81e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_object_protocol.rb @@ -0,0 +1,36 @@ +require 'em_test_helper' + +class TestObjectProtocol < Test::Unit::TestCase + module Server + include EM::P::ObjectProtocol + def post_init + send_object :hello=>'world' + end + def receive_object obj + $server = obj + EM.stop + end + end + + module Client + include EM::P::ObjectProtocol + def receive_object obj + $client = obj + send_object 'you_said'=>obj + end + end + + def setup + @port = next_port + end + + def test_send_receive + EM.run{ + EM.start_server "127.0.0.1", @port, Server + EM.connect "127.0.0.1", @port, Client + } + + assert($client == {:hello=>'world'}) + assert($server == {'you_said'=>{:hello=>'world'}}) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pause.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pause.rb new file mode 100644 index 0000000000..d078a77faa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pause.rb @@ -0,0 +1,107 @@ +require 'em_test_helper' + +class TestPause < Test::Unit::TestCase + if EM.respond_to? :pause_connection + def setup + @port = next_port + end + + def teardown + assert(!EM.reactor_running?) + end + + def test_pause_resume + server = nil + + s_rx = c_rx = 0 + + test_server = Module.new do + define_method :post_init do + server = self + end + + define_method :receive_data do |data| + s_rx += 1 + + EM.add_periodic_timer(0.01) { send_data 'hi' } + send_data 'hi' + + # pause server, now no outgoing data will actually + # be sent and no more incoming data will be received + pause + end + end + + test_client = Module.new do + def post_init + EM.add_periodic_timer(0.01) do + send_data 'hello' + end + end + + define_method :receive_data do |data| + c_rx += 1 + end + end + + EM.run do + EM.start_server "127.0.0.1", @port, test_server + EM.connect "127.0.0.1", @port, test_client + + EM.add_timer(0.05) do + assert_equal 1, s_rx + assert_equal 0, c_rx + assert server.paused? + + # resume server, queued outgoing and incoming data will be flushed + server.resume + + assert !server.paused? + + EM.add_timer(0.05) do + assert server.paused? + assert s_rx > 1 + assert c_rx > 0 + EM.stop + end + end + end + end + + def test_pause_in_receive_data + incoming = [] + + test_server = Module.new do + define_method(:receive_data) do |data| + incoming << data + pause + EM.add_timer(0.5){ close_connection } + end + define_method(:unbind) do + EM.stop + end + end + + buf = 'a' * 1024 + + EM.run do + EM.start_server "127.0.0.1", @port, test_server + cli = EM.connect "127.0.0.1", @port + 128.times do + cli.send_data buf + end + end + + assert_equal 1, incoming.size + assert incoming[0].bytesize > buf.bytesize + assert incoming[0].bytesize < buf.bytesize * 128 + end + else + warn "EM.pause_connection not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_pause_connection_not_implemented + assert true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pending_connect_timeout.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pending_connect_timeout.rb new file mode 100644 index 0000000000..a3f7fa4d87 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pending_connect_timeout.rb @@ -0,0 +1,52 @@ +require 'em_test_helper' + +class TestPendingConnectTimeout < Test::Unit::TestCase + + if EM.respond_to? :get_pending_connect_timeout + def test_default + EM.run { + c = EM.connect("127.0.0.1", 54321) + assert_equal 20.0, c.pending_connect_timeout + EM.stop + } + end + + def test_set_and_get + EM.run { + c = EM.connect("127.0.0.1", 54321) + c.pending_connect_timeout = 2.5 + assert_equal 2.5, c.pending_connect_timeout + EM.stop + } + end + + def test_for_real + start, finish = nil + + timeout_handler = Module.new do + define_method :unbind do + finish = EM.current_time + EM.stop + end + end + + EM.run { + setup_timeout + EM.heartbeat_interval = 0.1 + start = EM.current_time + c = EM.connect('192.0.2.0', 54321, timeout_handler) + c.pending_connect_timeout = 0.2 + } + + assert_in_delta(0.2, (finish - start), 0.1) + end + else + warn "EM.pending_connect_timeout not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_pending_connect_timeout_not_implemented + assert true + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pool.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pool.rb new file mode 100644 index 0000000000..f859a9d101 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pool.rb @@ -0,0 +1,196 @@ +require 'em_test_helper' + +class TestPool < Test::Unit::TestCase + def pool + @pool ||= EM::Pool.new + end + + def go + EM.run { yield } + end + + def stop + EM.stop + end + + def deferrable + @deferrable ||= EM::DefaultDeferrable.new + end + + def test_supports_more_work_than_resources + ran = false + go do + pool.perform do + ran = true + deferrable + end + stop + end + assert_equal false, ran + go do + pool.add :resource + stop + end + assert_equal true, ran + end + + def test_reques_resources_on_error + pooled_res, pooled_res2 = nil + pool.add :res + go do + pool.perform do |res| + pooled_res = res + deferrable + end + stop + end + deferrable.fail + go do + pool.perform do |res| + pooled_res2 = res + deferrable + end + stop + end + assert_equal :res, pooled_res + assert_equal pooled_res, pooled_res2 + end + + def test_supports_custom_on_error + eres = nil + pool.on_error do |res| + eres = res + end + performs = [] + pool.add :res + go do + pool.perform do |res| + performs << res + deferrable + end + pool.perform do |res| + performs << res + deferrable + end + deferrable.fail + stop + end + assert_equal :res, eres + # manual requeues required when error handler is installed: + assert_equal 1, performs.size + assert_equal :res, performs.first + end + + def test_catches_successful_deferrables + performs = [] + pool.add :res + go do + pool.perform { |res| performs << res; deferrable } + pool.perform { |res| performs << res; deferrable } + stop + end + assert_equal [:res], performs + deferrable.succeed + go { stop } + assert_equal [:res, :res], performs + end + + def test_prunes_locked_and_removed_resources + performs = [] + pool.add :res + deferrable.succeed + go do + pool.perform { |res| performs << res; pool.remove res; deferrable } + pool.perform { |res| performs << res; pool.remove res; deferrable } + stop + end + assert_equal [:res], performs + end + + # Contents is only to be used for inspection of the pool! + def test_contents + pool.add :res + assert_equal [:res], pool.contents + # Assert that modifying the contents list does not affect the pools + # contents. + pool.contents.delete(:res) + assert_equal [:res], pool.contents + end + + def test_contents_when_perform_errors_and_on_error_is_not_set + pool.add :res + assert_equal [:res], pool.contents + + pool.perform do |r| + d = EM::DefaultDeferrable.new + d.fail + d + end + + EM.run { EM.next_tick { EM.stop } } + + assert_equal [:res], pool.contents + end + + def test_contents_when_perform_errors_and_on_error_is_set + pool.add :res + res = nil + pool.on_error do |r| + res = r + end + assert_equal [:res], pool.contents + + pool.perform do |r| + d = EM::DefaultDeferrable.new + d.fail 'foo' + d + end + + EM.run { EM.next_tick { EM.stop } } + + assert_equal :res, res + assert_equal [], pool.contents + end + + def test_num_waiting + pool.add :res + assert_equal 0, pool.num_waiting + pool.perform { |r| EM::DefaultDeferrable.new } + assert_equal 0, pool.num_waiting + 10.times { pool.perform { |r| EM::DefaultDeferrable.new } } + EM.run { EM.next_tick { EM.stop } } + assert_equal 10, pool.num_waiting + end + + def test_exceptions_in_the_work_block_bubble_up_raise_and_fail_the_resource + pool.add :res + + res = nil + pool.on_error { |r| res = r } + pool.perform { raise 'boom' } + + assert_raises(RuntimeError) do + EM.run { EM.next_tick { EM.stop } } + end + + assert_equal [], pool.contents + assert_equal :res, res + end + + def test_removed_list_does_not_leak_on_errors + pool.add :res + + pool.on_error do |r| + # This is actually the wrong thing to do, and not required, but some users + # might do it. When they do, they would find that @removed would cause a + # slow leak. + pool.remove r + end + + pool.perform { d = EM::DefaultDeferrable.new; d.fail; d } + + EM.run { EM.next_tick { EM.stop } } + assert_equal [], pool.instance_variable_get(:@removed) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_process_watch.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_process_watch.rb new file mode 100644 index 0000000000..6e0c49a75e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_process_watch.rb @@ -0,0 +1,50 @@ +require 'em_test_helper' + +if EM.kqueue? + class TestProcessWatch < Test::Unit::TestCase + module ParentProcessWatcher + def process_forked + $forked = true + end + end + + module ChildProcessWatcher + def process_exited + $exited = true + end + def unbind + $unbind = true + EM.stop + end + end + + def setup + EM.kqueue = true + end + + def teardown + EM.kqueue = false + end + + def test_events + omit_if(rbx?) + omit_if(jruby?) + EM.run{ + # watch ourselves for a fork notification + EM.watch_process(Process.pid, ParentProcessWatcher) + $fork_pid = fork{ sleep } + child = EM.watch_process($fork_pid, ChildProcessWatcher) + $pid = child.pid + + EM.add_timer(0.2){ + Process.kill('TERM', $fork_pid) + } + } + + assert_equal($pid, $fork_pid) + assert($forked) + assert($exited) + assert($unbind) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_processes.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_processes.rb new file mode 100644 index 0000000000..dd03cf02da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_processes.rb @@ -0,0 +1,128 @@ +require 'em_test_helper' + +class TestProcesses < Test::Unit::TestCase + + if !windows? && !jruby? + + # EM::DeferrableChildProcess is a sugaring of a common use-case + # involving EM::popen. + # Call the #open method on EM::DeferrableChildProcess, passing + # a command-string. #open immediately returns an EM::Deferrable + # object. It also schedules the forking of a child process, which + # will execute the command passed to #open. + # When the forked child terminates, the Deferrable will be signalled + # and execute its callbacks, passing the data that the child process + # wrote to stdout. + # + def test_deferrable_child_process + ls = "" + EM.run { + d = EM::DeferrableChildProcess.open( "ls -ltr" ) + d.callback {|data_from_child| + ls = data_from_child + EM.stop + } + } + assert( ls.length > 0) + end + + def setup + $out = nil + $status = nil + end + + def test_em_system + EM.run{ + EM.system('ls'){ |out,status| $out, $status = out, status; EM.stop } + } + + assert( $out.length > 0 ) + assert_equal(0, $status.exitstatus) + assert_kind_of(Process::Status, $status) + end + + def test_em_system_pid + $pids = [] + + EM.run{ + $pids << EM.system('echo hi', proc{ |out,status|$pids << status.pid; EM.stop }) + } + + assert_equal $pids[0], $pids[1] + end + + def test_em_system_with_proc + EM.run{ + EM.system('ls', proc{ |out,status| $out, $status = out, status; EM.stop }) + } + + assert( $out.length > 0 ) + assert_equal(0, $status.exitstatus) + assert_kind_of(Process::Status, $status) + end + + def test_em_system_with_two_procs + EM.run{ + EM.system('sh', proc{ |process| + process.send_data("echo hello\n") + process.send_data("exit\n") + }, proc{ |out,status| + $out = out + $status = status + EM.stop + }) + } + + assert_equal("hello\n", $out) + end + + def test_em_system_cmd_arguments + EM.run{ + EM.system('echo', '1', '2', 'version', proc{ |process| + }, proc{ |out,status| + $out = out + $status = status + EM.stop + }) + } + + assert_match(/1 2 version/i, $out) + end + + def test_em_system_spaced_arguments + EM.run{ + EM.system('ruby', '-e', 'puts "hello"', proc{ |out,status| + $out = out + EM.stop + }) + } + + assert_equal("hello\n", $out) + end + + def test_em_popen_pause_resume + c_rx = 0 + + test_client = Module.new do + define_method :receive_data do |data| + c_rx += 1 + pause + EM.add_timer(0.5) { EM.stop } + end + end + + EM.run do + EM.popen('echo 1', test_client) + end + + assert_equal 1, c_rx + end + else + warn "EM.popen not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_popen_unsupported + assert true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_proxy_connection.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_proxy_connection.rb new file mode 100644 index 0000000000..11c0fb4100 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_proxy_connection.rb @@ -0,0 +1,180 @@ +require 'em_test_helper' + +class TestProxyConnection < Test::Unit::TestCase + + if EM.respond_to?(:start_proxy) + module ProxyConnection + def initialize(client, request) + @client, @request = client, request + end + + def post_init + EM::enable_proxy(self, @client) + end + + def connection_completed + EM.next_tick { + send_data @request + } + end + + def proxy_target_unbound + $unbound_early = true + EM.stop + end + + def unbind + $proxied_bytes = self.get_proxied_bytes + @client.close_connection_after_writing + end + end + + module PartialProxyConnection + def initialize(client, request, length) + @client, @request, @length = client, request, length + end + + def post_init + EM::enable_proxy(self, @client, 0, @length) + end + + def receive_data(data) + $unproxied_data = data + @client.send_data(data) + end + + def connection_completed + EM.next_tick { + send_data @request + } + end + + def proxy_target_unbound + $unbound_early = true + EM.stop + end + + def proxy_completed + $proxy_completed = true + end + + def unbind + @client.close_connection_after_writing + end + end + + module Client + def connection_completed + send_data "EM rocks!" + end + + def receive_data(data) + $client_data = data + end + + def unbind + EM.stop + end + end + + module Client2 + include Client + def unbind; end + end + + module Server + def receive_data(data) + send_data "I know!" if data == "EM rocks!" + close_connection_after_writing + end + end + + module ProxyServer + def initialize port + @port = port + end + + def receive_data(data) + @proxy = EM.connect("127.0.0.1", @port, ProxyConnection, self, data) + end + end + + module PartialProxyServer + def initialize port + @port = port + end + + def receive_data(data) + EM.connect("127.0.0.1", @port, PartialProxyConnection, self, data, 1) + end + end + + module EarlyClosingProxy + def initialize port + @port = port + end + + def receive_data(data) + EM.connect("127.0.0.1", @port, ProxyConnection, self, data) + close_connection + end + end + + def setup + @port = next_port + @proxy_port = next_port + end + + def test_proxy_connection + EM.run { + EM.start_server("127.0.0.1", @port, Server) + EM.start_server("127.0.0.1", @proxy_port, ProxyServer, @port) + EM.connect("127.0.0.1", @proxy_port, Client) + } + + assert_equal("I know!", $client_data) + end + + def test_proxied_bytes + EM.run { + EM.start_server("127.0.0.1", @port, Server) + EM.start_server("127.0.0.1", @proxy_port, ProxyServer, @port) + EM.connect("127.0.0.1", @proxy_port, Client) + } + + assert_equal("I know!", $client_data) + assert_equal("I know!".bytesize, $proxied_bytes) + end + + def test_partial_proxy_connection + EM.run { + EM.start_server("127.0.0.1", @port, Server) + EM.start_server("127.0.0.1", @proxy_port, PartialProxyServer, @port) + EM.connect("127.0.0.1", @proxy_port, Client) + } + + assert_equal("I know!", $client_data) + assert_equal(" know!", $unproxied_data) + assert($proxy_completed) + end + + def test_early_close + $client_data = nil + EM.run { + EM.start_server("127.0.0.1", @port, Server) + EM.start_server("127.0.0.1", @proxy_port, EarlyClosingProxy, @port) + EM.connect("127.0.0.1", @proxy_port, Client2) + } + + assert($unbound_early) + end + else + warn "EM.start_proxy not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_start_proxy_not_implemented + assert !EM.respond_to?(:start_proxy) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pure.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pure.rb new file mode 100644 index 0000000000..8863a8d109 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_pure.rb @@ -0,0 +1,139 @@ +require 'em_test_helper' + +class TestPure < Test::Unit::TestCase + + def setup + @port = next_port + end + + # These tests are intended to exercise problems that come up in the + # pure-Ruby implementation. However, we DON'T constrain them such that + # they only run in pure-Ruby. These tests need to work identically in + # any implementation. + + #------------------------------------- + + # The EM reactor needs to run down open connections and release other resources + # when it stops running. Make sure this happens even if user code throws a Ruby + # exception. + # If exception handling is incorrect, the second test will fail with a no-bind error + # because the TCP server opened in the first test will not have been closed. + + def test_exception_handling_releases_resources + exception = Class.new(StandardError) + + 2.times do + assert_raises(exception) do + EM.run do + EM.start_server "127.0.0.1", @port + raise exception + end + end + end + end + + # Under some circumstances, the pure Ruby library would emit an Errno::ECONNREFUSED + # exception on certain kinds of TCP connect-errors. + # It's always been something of an open question whether EM should throw an exception + # in these cases but the defined answer has always been to catch it the unbind method. + # With a connect failure, the latter will always fire, but connection_completed will + # never fire. So even though the point is arguable, it's incorrect for the pure Ruby + # version to throw an exception. + module TestConnrefused + def unbind + EM.stop + end + def connection_completed + raise "should never get here" + end + end + + def test_connrefused + assert_nothing_raised do + EM.run { + setup_timeout(2) + EM.connect "127.0.0.1", @port, TestConnrefused + } + end + end + + # Make sure connection_completed gets called as expected with TCP clients. This is the + # opposite of test_connrefused. + # If the test fails, it will hang because EM.stop never gets called. + # + module TestConnaccepted + def connection_completed + EM.stop + end + end + def test_connaccepted + assert_nothing_raised do + EM.run { + EM.start_server "127.0.0.1", @port + EM.connect "127.0.0.1", @port, TestConnaccepted + setup_timeout(1) + } + end + end + + def test_reactor_running + a = false + EM.run { + a = EM.reactor_running? + EM.next_tick {EM.stop} + } + assert a + end + + module TLSServer + def post_init + start_tls + end + + def ssl_handshake_completed + $server_handshake_completed = true + end + + def receive_data(data) + $server_received_data = data + send_data(data) + end + end + + module TLSClient + def post_init + start_tls + end + + def ssl_handshake_completed + $client_handshake_completed = true + end + + def connection_completed + send_data('Hello World!') + end + + def receive_data(data) + $client_received_data = data + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + def test_start_tls + $client_handshake_completed, $server_handshake_completed = false, false + $client_received_data, $server_received_data = nil, nil + EM.run do + EM.start_server("127.0.0.1", 16789, TLSServer) + EM.connect("127.0.0.1", 16789, TLSClient) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + assert($client_received_data == "Hello World!") + assert($server_received_data == "Hello World!") + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_queue.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_queue.rb new file mode 100644 index 0000000000..34278c05b5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_queue.rb @@ -0,0 +1,64 @@ +require 'em_test_helper' + +class TestEMQueue < Test::Unit::TestCase + def test_queue_push + s = 0 + EM.run do + q = EM::Queue.new + q.push(1) + EM.next_tick { s = q.size; EM.stop } + end + assert_equal 1, s + end + + def test_queue_pop + x,y,z = nil + EM.run do + q = EM::Queue.new + q.push(1,2,3) + q.pop { |v| x = v } + q.pop { |v| y = v } + q.pop { |v| z = v; EM.stop } + end + assert_equal 1, x + assert_equal 2, y + assert_equal 3, z + end + + def test_queue_reactor_thread + q = EM::Queue.new + + Thread.new { q.push(1,2,3) }.join + assert q.empty? + EM.run { EM.next_tick { EM.stop } } + assert_equal 3, q.size + + x = nil + Thread.new { q.pop { |v| x = v } }.join + assert_equal nil, x + EM.run { EM.next_tick { EM.stop } } + assert_equal 1, x + end + + def test_num_waiting + q = EM::Queue.new + many = 3 + many.times { q.pop {} } + EM.run { EM.next_tick { EM.stop } } + assert_equal many, q.num_waiting + end + + def test_big_queue + EM.run do + q = EM::Queue.new + 2000.times do |i| + q.push(*0..1000) + q.pop { |v| assert_equal v, i % 1001 } + end + q.pop do + assert_equal 1_999_999, q.size + EM.stop + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_resolver.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_resolver.rb new file mode 100644 index 0000000000..58ed5f574e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_resolver.rb @@ -0,0 +1,105 @@ +require 'em_test_helper' + +class TestResolver < Test::Unit::TestCase + def test_nameserver + assert_kind_of(String, EM::DNS::Resolver.nameserver) + end + + def test_nameservers + assert_kind_of(Array, EM::DNS::Resolver.nameservers) + end + + def test_hosts + assert_kind_of(Hash, EM::DNS::Resolver.hosts) + + # Make sure that blank or comment lines are skipped + refute(EM::DNS::Resolver.hosts.include? nil) + end + + def test_a + pend('FIXME: this test is broken on Windows') if windows? + + EM.run { + d = EM::DNS::Resolver.resolve "example.com" + d.errback { assert false } + d.callback { |r| + assert r + EM.stop + } + } + end + + def test_bad_host + EM.run { + d = EM::DNS::Resolver.resolve "asdfasasdf" + d.callback { assert false } + d.errback { assert true; EM.stop } + } + end + + def test_garbage + assert_raises( ArgumentError ) { + EM.run { + EM::DNS::Resolver.resolve 123 + } + } + end + + # There isn't a public DNS entry like 'example.com' with an A rrset + def test_a_pair + pend('FIXME: this test is broken on Windows') if windows? + + EM.run { + d = EM::DNS::Resolver.resolve "yahoo.com" + d.errback { |err| assert false, "failed to resolve yahoo.com: #{err}" } + d.callback { |r| + assert_kind_of(Array, r) + assert r.size > 1, "returned #{r.size} results: #{r.inspect}" + EM.stop + } + } + end + + def test_localhost + pend('FIXME: this test is broken on Windows') if windows? + + EM.run { + d = EM::DNS::Resolver.resolve "localhost" + d.errback { assert false } + d.callback { |r| + assert_include(["127.0.0.1", "::1"], r.first) + assert_kind_of(Array, r) + + EM.stop + } + } + end + + def test_timer_cleanup + pend('FIXME: this test is broken on Windows') if windows? + + EM.run { + d = EM::DNS::Resolver.resolve "example.com" + d.errback { |err| assert false, "failed to resolve example.com: #{err}" } + d.callback { |r| + # This isn't a great test, but it's hard to get more canonical + # confirmation that the timer is cancelled + assert_nil(EM::DNS::Resolver.socket.instance_variable_get(:@timer)) + + EM.stop + } + } + end + + def test_failure_timer_cleanup + EM.run { + d = EM::DNS::Resolver.resolve "asdfasdf" + d.callback { assert false } + d.errback { + assert_nil(EM::DNS::Resolver.socket.instance_variable_get(:@timer)) + + EM.stop + } + } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_running.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_running.rb new file mode 100644 index 0000000000..693b3901ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_running.rb @@ -0,0 +1,14 @@ +require 'em_test_helper' + +class TestRunning < Test::Unit::TestCase + def test_running + assert_equal( false, EM::reactor_running? ) + r = false + EM.run { + r = EM::reactor_running? + EM.stop + } + assert_equal( true, r ) + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sasl.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sasl.rb new file mode 100644 index 0000000000..e80f6571ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sasl.rb @@ -0,0 +1,47 @@ +require 'em_test_helper' + + +class TestSASL < Test::Unit::TestCase + + # SASL authentication is usually done with UNIX-domain sockets, but + # we'll use TCP so this test will work on Windows. As far as the + # protocol handlers are concerned, there's no difference. + + TestUser,TestPsw = "someone", "password" + + class SaslServer < EM::Connection + include EM::Protocols::SASLauth + def validate usr, psw, sys, realm + usr == TestUser and psw == TestPsw + end + end + + class SaslClient < EM::Connection + include EM::Protocols::SASLauthclient + end + + def setup + @port = next_port + end + + def test_sasl + resp = nil + EM.run { + EM.start_server( "127.0.0.1", @port, SaslServer ) + + c = EM.connect( "127.0.0.1", @port, SaslClient ) + d = c.validate?( TestUser, TestPsw ) + d.timeout 1 + d.callback { + resp = true + EM.stop + } + d.errback { + resp = false + EM.stop + } + } + assert_equal( true, resp ) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_send_file.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_send_file.rb new file mode 100644 index 0000000000..a784b505dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_send_file.rb @@ -0,0 +1,217 @@ +require 'em_test_helper' +require 'tempfile' + +class TestSendFile < Test::Unit::TestCase + + if EM.respond_to?(:send_file_data) + module TestModule + def initialize filename + @filename = filename + end + + def post_init + send_file_data @filename + close_connection_after_writing + end + end + + module TestClient + def data_to(&blk) + @data_to = blk + end + + def receive_data(data) + @data_to.call(data) if @data_to + end + + def unbind + EM.stop + end + end + + def setup + @file = Tempfile.new("em_test_file") + @filename = @file.path + @port = next_port + end + + def test_send_file + File.open( @filename, "w" ) {|f| + f << ("A" * 5000) + } + + data = '' + + EM.run { + EM.start_server "127.0.0.1", @port, TestModule, @filename + setup_timeout + + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + assert_equal( "A" * 5000, data ) + end + + # EM::Connection#send_file_data has a strict upper limit on the filesize it will work with. + def test_send_large_file + File.open( @filename, "w" ) {|f| + f << ("A" * 1000000) + } + + data = '' + + assert_raises(RuntimeError) { + EM.run { + EM.start_server "127.0.0.1", @port, TestModule, @filename + setup_timeout + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + } + end + + module StreamTestModule + def initialize filename + @filename = filename + end + + def post_init + EM::Deferrable.future( stream_file_data(@filename)) { + close_connection_after_writing + } + end + end + + module ChunkStreamTestModule + def initialize filename + @filename = filename + end + + def post_init + EM::Deferrable.future( stream_file_data(@filename, :http_chunks=>true)) { + close_connection_after_writing + } + end + end + + def test_stream_file_data + File.open( @filename, "w" ) {|f| + f << ("A" * 1000) + } + + data = '' + + EM.run { + EM.start_server "127.0.0.1", @port, StreamTestModule, @filename + setup_timeout + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + assert_equal( "A" * 1000, data ) + end + + def test_stream_chunked_file_data + File.open( @filename, "w" ) {|f| + f << ("A" * 1000) + } + + data = '' + + EM.run { + EM.start_server "127.0.0.1", @port, ChunkStreamTestModule, @filename + setup_timeout + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + assert_equal( "3e8\r\n#{"A" * 1000}\r\n0\r\n\r\n", data ) + end + + module BadFileTestModule + def initialize filename + @filename = filename + end + + def post_init + de = stream_file_data( @filename+".wrong" ) + de.errback {|msg| + send_data msg + close_connection_after_writing + } + end + end + def test_stream_bad_file + data = '' + EM.run { + EM.start_server "127.0.0.1", @port, BadFileTestModule, @filename + setup_timeout(5) + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + assert_equal( "file not found", data ) + end + else + warn "EM.send_file_data not implemented, skipping tests in #{__FILE__}" + + # Because some rubies will complain if a TestCase class has no tests + def test_em_send_file_data_not_implemented + assert !EM.respond_to?(:send_file_data) + end + end + + begin + require 'fastfilereaderext' + + def test_stream_large_file_data + File.open( @filename, "w" ) {|f| + f << ("A" * 10000) + } + + data = '' + + EM.run { + EM.start_server "127.0.0.1", @port, StreamTestModule, @filename + setup_timeout + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + assert_equal( "A" * 10000, data ) + end + + def test_stream_large_chunked_file_data + File.open( @filename, "w" ) {|f| + f << ("A" * 100000) + } + + data = '' + + EM.run { + EM.start_server "127.0.0.1", @port, ChunkStreamTestModule, @filename + setup_timeout + EM.connect "127.0.0.1", @port, TestClient do |c| + c.data_to { |d| data << d } + end + } + + expected = [ + "4000\r\n#{"A" * 16384}\r\n" * 6, + "6a0\r\n#{"A" * 0x6a0}\r\n", + "0\r\n\r\n" + ].join + assert_equal( expected, data ) + end + rescue LoadError + warn "require 'fastfilereaderext' failed, skipping tests in #{__FILE__}" + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_servers.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_servers.rb new file mode 100644 index 0000000000..2a170504da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_servers.rb @@ -0,0 +1,33 @@ +require 'em_test_helper' +require 'socket' + +class TestServers < Test::Unit::TestCase + + def setup + @port = next_port + end + + def server_alive? + port_in_use?(@port) + end + + def run_test_stop_server + EM.run { + sig = EM.start_server("127.0.0.1", @port) + assert server_alive?, "Server didn't start" + EM.stop_server sig + # Give the server some time to shutdown. + EM.add_timer(0.1) { + assert !server_alive?, "Server didn't stop" + EM.stop + } + } + end + + def test_stop_server + assert !server_alive?, "Port already in use" + 2.times { run_test_stop_server } + assert !server_alive?, "Servers didn't stop" + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_shutdown_hooks.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_shutdown_hooks.rb new file mode 100644 index 0000000000..b0e0c5cc56 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_shutdown_hooks.rb @@ -0,0 +1,23 @@ +require 'em_test_helper' + +class TestShutdownHooks < Test::Unit::TestCase + def test_shutdown_hooks + r = false + EM.run { + EM.add_shutdown_hook { r = true } + EM.stop + } + assert_equal( true, r ) + end + + def test_hook_order + r = [] + EM.run { + EM.add_shutdown_hook { r << 2 } + EM.add_shutdown_hook { r << 1 } + EM.stop + } + assert_equal( [1, 2], r ) + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpclient.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpclient.rb new file mode 100644 index 0000000000..71ed5844a7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpclient.rb @@ -0,0 +1,75 @@ +require 'em_test_helper' + +class TestSmtpClient < Test::Unit::TestCase + + Localhost = "127.0.0.1" + Localport = 9801 + + def setup + end + + def teardown + end + + def test_a + # No real tests until we have a server implementation to test against. + # This is what the call looks like, though: + err = nil + EM.run { + d = EM::Protocols::SmtpClient.send :domain=>"example.com", + :host=>Localhost, + :port=>Localport, # optional, defaults 25 + :starttls=>true, + :from=>"sender@example.com", + :to=> ["to_1@example.com", "to_2@example.com"], + :header=> {"Subject" => "This is a subject line"}, + :body=> "This is the body of the email", + :verbose=>true + d.errback {|e| + err = e + EM.stop + } + } + assert(err) + end + + def test_content + err = nil + EM.run { + d = EM::Protocols::SmtpClient.send :domain=>"example.com", + :host=>Localhost, + :port=>Localport, # optional, defaults 25 + :starttls=>true, + :from=>"sender@example.com", + :to=> ["to_1@example.com", "to_2@example.com"], + :content => ["Subject: xxx\r\n\r\ndata\r\n.\r\n"], + :verbose=>true + d.errback {|e| + err = e + EM.stop + } + } + assert(err) + end + + + EM::Protocols::SmtpClient.__send__(:public, :escape_leading_dots) + + def test_escaping + smtp = EM::Protocols::SmtpClient.new :domain => "example.com" + + expectations = { + "Hello\r\n" => "Hello\r\n", + "\r\n.whatever\r\n" => "\r\n..whatever\r\n", + "\r\n.\r\n" => "\r\n..\r\n", + "\r\n.\r\n." => "\r\n..\r\n..", + ".\r\n.\r\n" => "..\r\n..\r\n", + "..\r\n" => "...\r\n" + } + + expectations.each do |input, output| + assert_equal output, smtp.escape_leading_dots(input) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpserver.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpserver.rb new file mode 100644 index 0000000000..18c50febd8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_smtpserver.rb @@ -0,0 +1,57 @@ +require 'em_test_helper' + +class TestSmtpServer < Test::Unit::TestCase + + # Don't test on port 25. It requires superuser and there's probably + # a mail server already running there anyway. + Localhost = "127.0.0.1" + Localport = 25001 + + # This class is an example of what you need to write in order + # to implement a mail server. You override the methods you are + # interested in. Some, but not all, of these are illustrated here. + # + class Mailserver < EM::Protocols::SmtpServer + + attr_reader :my_msg_body, :my_sender, :my_recipients + + def initialize *args + super + end + def receive_sender sender + @my_sender = sender + #p sender + true + end + def receive_recipient rcpt + @my_recipients ||= [] + @my_recipients << rcpt + true + end + def receive_data_chunk c + @my_msg_body = c.last + end + def connection_ended + EM.stop + end + end + + def test_mail + c = nil + EM.run { + EM.start_server( Localhost, Localport, Mailserver ) {|conn| c = conn} + EM::Timer.new(2) {EM.stop} # prevent hanging the test suite in case of error + EM::Protocols::SmtpClient.send :host=>Localhost, + :port=>Localport, + :domain=>"bogus", + :from=>"me@example.com", + :to=>"you@example.com", + :header=> {"Subject"=>"Email subject line", "Reply-to"=>"me@example.com"}, + :body=>"Not much of interest here." + + } + assert_equal( "Not much of interest here.", c.my_msg_body ) + assert_equal( "", c.my_sender ) + assert_equal( [""], c.my_recipients ) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sock_opt.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sock_opt.rb new file mode 100644 index 0000000000..60fba351e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_sock_opt.rb @@ -0,0 +1,54 @@ +require 'em_test_helper' +require 'socket' + +class TestSockOpt < Test::Unit::TestCase + def setup + assert(!EM.reactor_running?) + @port = next_port + end + + def teardown + assert(!EM.reactor_running?) + end + + def test_set_sock_opt + omit_if(windows?) + omit_if(!EM.respond_to?(:set_sock_opt)) + + val = nil + test_module = Module.new do + define_method :post_init do + val = set_sock_opt Socket::SOL_SOCKET, Socket::SO_BROADCAST, true + EM.stop + end + end + + EM.run do + EM.start_server '127.0.0.1', @port + EM.connect '127.0.0.1', @port, test_module + end + + assert_equal 0, val + end + + def test_get_sock_opt + omit_if(windows?) + omit_if(!EM.respond_to?(:set_sock_opt)) + + val = nil + test_module = Module.new do + define_method :connection_completed do + val = get_sock_opt Socket::SOL_SOCKET, Socket::SO_ERROR + EM.stop + end + end + + EM.run do + EM.start_server '127.0.0.1', @port + EM.connect '127.0.0.1', @port, test_module + end + + assert_equal "\0\0\0\0", val + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_spawn.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_spawn.rb new file mode 100644 index 0000000000..ab0a92f771 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_spawn.rb @@ -0,0 +1,293 @@ + +require 'em_test_helper' + + + +class TestSpawn < Test::Unit::TestCase + + # Spawn a process that simply stops the reactor. + # Assert that the notification runs after the block that calls it. + # + def test_stop + x = nil + EM.run { + s = EM.spawn {EM.stop} + s.notify + x = true + } + assert x + end + + + # Pass a parameter to a spawned process. + # + def test_parms + val = 5 + EM.run { + s = EM.spawn {|v| val *= v; EM.stop} + s.notify 3 + } + assert_equal( 15, val ) + end + + # Pass multiple parameters to a spawned process. + # + def test_multiparms + val = 5 + EM.run { + s = EM.spawn {|v1,v2| val *= (v1 + v2); EM.stop} + s.notify 3,4 + } + assert_equal( 35, val ) + end + + + # This test demonstrates that a notification does not happen immediately, + # but rather is scheduled sometime after the current code path completes. + # + def test_race + x = 0 + EM.run { + s = EM.spawn {x *= 2; EM.stop} + s.notify + x = 2 + } + assert_equal( 4, x) + end + + + # Spawn a process and notify it 25 times to run fibonacci + # on a pair of global variables. + # + def test_fibonacci + x = 1 + y = 1 + EM.run { + s = EM.spawn {x,y = y,x+y} + 25.times {s.notify} + + t = EM.spawn {EM.stop} + t.notify + } + assert_equal( 121393, x) + assert_equal( 196418, y) + end + + # This one spawns 25 distinct processes, and notifies each one once, + # rather than notifying a single process 25 times. + # + def test_another_fibonacci + x = 1 + y = 1 + EM.run { + 25.times { + s = EM.spawn {x,y = y,x+y} + s.notify + } + + t = EM.spawn {EM.stop} + t.notify + } + assert_equal( 121393, x) + assert_equal( 196418, y) + end + + + # Make a chain of processes that notify each other in turn + # with intermediate fibonacci results. The final process in + # the chain stops the loop and returns the result. + # + def test_fibonacci_chain + a,b = nil + + EM.run { + nextpid = EM.spawn {|x,y| + a,b = x,y + EM.stop + } + + 25.times { + n = nextpid + nextpid = EM.spawn {|x,y| n.notify( y, x+y )} + } + + nextpid.notify( 1, 1 ) + } + + assert_equal( 121393, a) + assert_equal( 196418, b) + end + + + # EM#yield gives a spawed process to yield control to other processes + # (in other words, to stop running), and to specify a different code block + # that will run on its next notification. + # + def test_yield + a = 0 + EM.run { + n = EM.spawn { + a += 10 + EM.yield { + a += 20 + EM.yield { + a += 30 + EM.stop + } + } + } + n.notify + n.notify + n.notify + } + assert_equal( 60, a ) + end + + # EM#yield_and_notify behaves like EM#yield, except that it also notifies the + # yielding process. This may sound trivial, since the yield block will run very + # shortly after with no action by the program, but this actually can be very useful, + # because it causes the reactor core to execute once before the yielding process + # gets control back. So it can be used to allow heavily-used network connections + # to clear buffers, or allow other processes to process their notifications. + # + # Notice in this test code that only a simple notify is needed at the bottom + # of the initial block. Even so, all of the yielded blocks will execute. + # + def test_yield_and_notify + a = 0 + EM.run { + n = EM.spawn { + a += 10 + EM.yield_and_notify { + a += 20 + EM.yield_and_notify { + a += 30 + EM.stop + } + } + } + n.notify + } + assert_equal( 60, a ) + end + + # resume is an alias for notify. + # + def test_resume + EM.run { + n = EM.spawn {EM.stop} + n.resume + } + assert true + end + + # run is an idiomatic alias for notify. + # + def test_run + EM.run { + (EM.spawn {EM.stop}).run + } + assert true + end + + + # Clones the ping-pong example from the Erlang tutorial, in much less code. + # Illustrates that a spawned block executes in the context of a SpawnableObject. + # (Meaning, we can pass self as a parameter to another process that can then + # notify us.) + # + def test_ping_pong + n_pongs = 0 + EM.run { + pong = EM.spawn {|x, ping| + n_pongs += 1 + ping.notify( x-1 ) + } + ping = EM.spawn {|x| + if x > 0 + pong.notify x, self + else + EM.stop + end + } + ping.notify 3 + } + assert_equal( 3, n_pongs ) + end + + # Illustrates that you can call notify inside a notification, and it will cause + # the currently-executing process to be re-notified. Of course, the new notification + # won't run until sometime after the current one completes. + # + def test_self_notify + n = 0 + EM.run { + pid = EM.spawn {|x| + if x > 0 + n += x + notify( x-1 ) + else + EM.stop + end + } + pid.notify 3 + } + assert_equal( 6, n ) + end + + + # Illustrates that the block passed to #spawn executes in the context of a + # SpawnedProcess object, NOT in the local context. This can often be deceptive. + # + class BlockScopeTest + attr_reader :var + def run + # The following line correctly raises a NameError. + # The problem is that the programmer expected the spawned block to + # execute in the local context, but it doesn't. + # + # (EM.spawn { do_something }).notify ### NO! BAD! + + + + # The following line correctly passes self as a parameter to the + # notified process. + # + (EM.spawn {|obj| obj.do_something }).notify(self) + + + + # Here's another way to do it. This works because "myself" is bound + # in the local scope, unlike "self," so the spawned block sees it. + # + myself = self + (EM.spawn { myself.do_something }).notify + + + + # And we end the loop. + # This is a tangential point, but observe that #notify never blocks. + # It merely appends a message to the internal queue of a spawned process + # and returns. As it turns out, the reactor processes notifications for ALL + # spawned processes in the order that #notify is called. So there is a + # reasonable expectation that the process which stops the reactor will + # execute after the previous ones in this method. HOWEVER, this is NOT + # a documented behavior and is subject to change. + # + (EM.spawn {EM.stop}).notify + end + def do_something + @var ||= 0 + @var += 100 + end + end + + def test_block_scope + bs = BlockScopeTest.new + EM.run { + bs.run + } + assert_equal( 200, bs.var ) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_args.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_args.rb new file mode 100644 index 0000000000..d337628c7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_args.rb @@ -0,0 +1,78 @@ +require "test/unit" +require 'tempfile' + +require 'em_test_helper' + +module EM + def self._set_mocks + class < priv_file) + end + assert_raises(EM::FileNotFoundException) do + conn.start_tls(:cert_chain_file => cert_file) + end + assert_raises(EM::FileNotFoundException) do + conn.start_tls(:private_key_file => priv_file, :cert_chain_file => cert_file) + end + end + + def test_tls_params_file_does_exist + priv_file = Tempfile.new('em_test') + cert_file = Tempfile.new('em_test') + priv_file_path = priv_file.path + cert_file_path = cert_file.path + conn = EM::Connection.new('foo') + params = {:private_key_file => priv_file_path, :cert_chain_file => cert_file_path} + begin + conn.start_tls params + rescue Object + assert(false, 'should not have raised an exception') + end + end +end if EM.ssl? diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_dhparam.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_dhparam.rb new file mode 100644 index 0000000000..85f52d2f19 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_dhparam.rb @@ -0,0 +1,84 @@ +require 'em_test_helper' + +class TestSslDhParam < Test::Unit::TestCase + def setup + $dir = File.dirname(File.expand_path(__FILE__)) + '/' + $dhparam_file = File.join($dir, 'dhparam.pem') + end + + module Client + def post_init + start_tls + end + + def ssl_handshake_completed + $client_handshake_completed = true + $client_cipher_name = get_cipher_name + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + module Server + def post_init + start_tls(:dhparam => $dhparam_file, :cipher_list => "DHE,EDH") + end + + def ssl_handshake_completed + $server_handshake_completed = true + $server_cipher_name = get_cipher_name + end + end + + module NoDhServer + def post_init + start_tls(:cipher_list => "DHE,EDH") + end + + def ssl_handshake_completed + $server_handshake_completed = true + $server_cipher_name = get_cipher_name + end + end + + def test_no_dhparam + omit_unless(EM.ssl?) + omit_if(EM.library_type == :pure_ruby) # DH will work with defaults + omit_if(rbx?) + + $client_handshake_completed, $server_handshake_completed = false, false + $server_cipher_name, $client_cipher_name = nil, nil + + EM.run { + EM.start_server("127.0.0.1", 16784, NoDhServer) + EM.connect("127.0.0.1", 16784, Client) + } + + assert(!$client_handshake_completed) + assert(!$server_handshake_completed) + end + + def test_dhparam + omit_unless(EM.ssl?) + omit_if(rbx?) + + $client_handshake_completed, $server_handshake_completed = false, false + $server_cipher_name, $client_cipher_name = nil, nil + + EM.run { + EM.start_server("127.0.0.1", 16784, Server) + EM.connect("127.0.0.1", 16784, Client) + } + + assert($client_handshake_completed) + assert($server_handshake_completed) + + assert($client_cipher_name.length > 0) + assert_equal($client_cipher_name, $server_cipher_name) + + assert_match(/^(DHE|EDH)/, $client_cipher_name) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_ecdh_curve.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_ecdh_curve.rb new file mode 100644 index 0000000000..8dc167b67f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_ecdh_curve.rb @@ -0,0 +1,80 @@ +require 'em_test_helper' + +class TestSslEcdhCurve < Test::Unit::TestCase + module Client + def post_init + start_tls + end + + def ssl_handshake_completed + $client_handshake_completed = true + $client_cipher_name = get_cipher_name + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + module Server + def post_init + start_tls(:ecdh_curve => "prime256v1", :cipher_list => "ECDH") + end + + def ssl_handshake_completed + $server_handshake_completed = true + $server_cipher_name = get_cipher_name + end + end + + module NoCurveServer + def post_init + start_tls(:cipher_list => "ECDH") + end + + def ssl_handshake_completed + $server_handshake_completed = true + $server_cipher_name = get_cipher_name + end + end + + def test_no_ecdh_curve + omit_unless(EM.ssl?) + omit_if(rbx?) + + $client_handshake_completed, $server_handshake_completed = false, false + + EM.run { + EM.start_server("127.0.0.1", 16784, NoCurveServer) + EM.connect("127.0.0.1", 16784, Client) + } + + assert(!$client_handshake_completed) + assert(!$server_handshake_completed) + end + + def test_ecdh_curve + omit_unless(EM.ssl?) + omit_if(EM.library_type == :pure_ruby && RUBY_VERSION < "2.3.0") + omit_if(rbx?) + + $client_handshake_completed, $server_handshake_completed = false, false + $server_cipher_name, $client_cipher_name = nil, nil + + EM.run { + EM.start_server("127.0.0.1", 16784, Server) + EM.connect("127.0.0.1", 16784, Client) + } + + assert($client_handshake_completed) + assert($server_handshake_completed) + + assert($client_cipher_name.length > 0) + assert_equal($client_cipher_name, $server_cipher_name) + + assert_match(/^(AECDH|ECDHE)/, $client_cipher_name) + end + + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_extensions.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_extensions.rb new file mode 100644 index 0000000000..0610ba88f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_extensions.rb @@ -0,0 +1,49 @@ +require 'em_test_helper' + +require 'socket' +require 'openssl' + +if EM.ssl? + class TestSslExtensions < Test::Unit::TestCase + + module Client + def ssl_handshake_completed + $client_handshake_completed = true + close_connection + end + + def unbind + EM.stop_event_loop + end + + def post_init + start_tls(:ssl_version => :tlsv1, :sni_hostname => 'example.com') + end + end + + module Server + def ssl_handshake_completed + $server_handshake_completed = true + $server_sni_hostname = get_sni_hostname + end + + def post_init + start_tls(:ssl_version => :TLSv1) + end + end + + def test_tlsext_sni_hostname + $server_handshake_completed = false + + EM.run do + EM.start_server("127.0.0.1", 16784, Server) + EM.connect("127.0.0.1", 16784, Client) + end + + assert($server_handshake_completed) + assert_equal('example.com', $server_sni_hostname) + end + end +else + warn "EM built without SSL support, skipping tests in #{__FILE__}" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_methods.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_methods.rb new file mode 100644 index 0000000000..c2e5744d90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_methods.rb @@ -0,0 +1,65 @@ +require 'em_test_helper' + +class TestSSLMethods < Test::Unit::TestCase + + module ServerHandler + def post_init + start_tls + end + + def ssl_handshake_completed + $server_called_back = true + $server_cert_value = get_peer_cert + $server_cipher_bits = get_cipher_bits + $server_cipher_name = get_cipher_name + $server_cipher_protocol = get_cipher_protocol + end + end + + module ClientHandler + def post_init + start_tls + end + + def ssl_handshake_completed + $client_called_back = true + $client_cert_value = get_peer_cert + $client_cipher_bits = get_cipher_bits + $client_cipher_name = get_cipher_name + $client_cipher_protocol = get_cipher_protocol + EM.stop_event_loop + end + end + + def test_ssl_methods + omit_unless(EM.ssl?) + omit_if(rbx?) + $server_called_back, $client_called_back = false, false + $server_cert_value, $client_cert_value = nil, nil + $server_cipher_bits, $client_cipher_bits = nil, nil + $server_cipher_name, $client_cipher_name = nil, nil + $server_cipher_protocol, $client_cipher_protocol = nil, nil + + EM.run { + EM.start_server("127.0.0.1", 9999, ServerHandler) + EM.connect("127.0.0.1", 9999, ClientHandler) + } + + assert($server_called_back) + assert($client_called_back) + + assert($server_cert_value.is_a?(NilClass)) + assert($client_cert_value.is_a?(String)) + + assert($client_cipher_bits > 0) + assert_equal($client_cipher_bits, $server_cipher_bits) + + assert($client_cipher_name.length > 0) + assert_match(/AES/, $client_cipher_name) + assert_equal($client_cipher_name, $server_cipher_name) + + assert_match(/TLS/, $client_cipher_protocol) + assert_equal($client_cipher_protocol, $server_cipher_protocol) + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_protocols.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_protocols.rb new file mode 100644 index 0000000000..bcb6824617 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_protocols.rb @@ -0,0 +1,246 @@ +require 'em_test_helper' + +require 'socket' +require 'openssl' + +if EM.ssl? + class TestSslProtocols < Test::Unit::TestCase + + module Client + def ssl_handshake_completed + $client_handshake_completed = true + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + module Server + def ssl_handshake_completed + $server_handshake_completed = true + end + end + + module ClientAny + include Client + def post_init + start_tls(:ssl_version => %w(sslv2 sslv3 tlsv1 tlsv1_1 tlsv1_2)) + end + end + + module ClientDefault + include Client + def post_init + start_tls + end + end + + module ClientSSLv3 + include Client + def post_init + start_tls(:ssl_version => %w(SSLv3)) + end + end + + module ServerSSLv3 + include Server + def post_init + start_tls(:ssl_version => %w(SSLv3)) + end + end + + module ServerTLSv1CaseInsensitive + include Server + def post_init + start_tls(:ssl_version => %w(tlsv1)) + end + end + + module ServerAny + include Server + def post_init + start_tls(:ssl_version => %w(sslv2 sslv3 tlsv1 tlsv1_1 tlsv1_2)) + end + end + + module ServerDefault + include Server + def post_init + start_tls + end + end + + module InvalidProtocol + include Client + def post_init + start_tls(:ssl_version => %w(tlsv1 badinput)) + end + end + + def test_invalid_ssl_version + assert_raises(RuntimeError, "Unrecognized SSL/TLS Version: badinput") do + EM.run do + EM.start_server("127.0.0.1", 16784, InvalidProtocol) + EM.connect("127.0.0.1", 16784, InvalidProtocol) + end + end + end + + def test_any_to_v3 + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerSSLv3) + EM.connect("127.0.0.1", 16784, ClientAny) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_case_insensitivity + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerTLSv1CaseInsensitive) + EM.connect("127.0.0.1", 16784, ClientAny) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_v3_to_any + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerAny) + EM.connect("127.0.0.1", 16784, ClientSSLv3) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_v3_to_v3 + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerSSLv3) + EM.connect("127.0.0.1", 16784, ClientSSLv3) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_any_to_any + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerAny) + EM.connect("127.0.0.1", 16784, ClientAny) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_default_to_default + $client_handshake_completed, $server_handshake_completed = false, false + EM.run do + EM.start_server("127.0.0.1", 16784, ServerDefault) + EM.connect("127.0.0.1", 16784, ClientDefault) + end + + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + module ServerV3StopAfterHandshake + def post_init + start_tls(:ssl_version => %w(SSLv3)) + end + + def ssl_handshake_completed + $server_handshake_completed = true + EM.stop_event_loop + end + end + + module ServerTLSv1StopAfterHandshake + def post_init + start_tls(:ssl_version => %w(TLSv1)) + end + + def ssl_handshake_completed + $server_handshake_completed = true + EM.stop_event_loop + end + end + + def test_v3_with_external_client + $server_handshake_completed = false + EM.run do + setup_timeout(2) + EM.start_server("127.0.0.1", 16784, ServerV3StopAfterHandshake) + EM.defer do + sock = TCPSocket.new("127.0.0.1", 16784) + ctx = OpenSSL::SSL::SSLContext.new + ctx.ssl_version = :SSLv3_client + ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) + ssl.connect + ssl.close rescue nil + sock.close rescue nil + end + end + + assert($server_handshake_completed) + end + + def test_tlsv1_with_external_client + $server_handshake_completed = false + EM.run do + setup_timeout(2) + EM.start_server("127.0.0.1", 16784, ServerTLSv1StopAfterHandshake) + EM.defer do + sock = TCPSocket.new("127.0.0.1", 16784) + ctx = OpenSSL::SSL::SSLContext.new + ctx.ssl_version = :TLSv1_client + ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) + ssl.connect + ssl.close rescue nil + sock.close rescue nil + end + end + + assert($server_handshake_completed) + end + + def test_tlsv1_required_with_external_client + $server_handshake_completed = false + + EM.run do + n = 0 + EM.add_periodic_timer(0.5) do + n += 1 + (EM.stop rescue nil) if n == 2 + end + EM.start_server("127.0.0.1", 16784, ServerTLSv1StopAfterHandshake) + EM.defer do + sock = TCPSocket.new("127.0.0.1", 16784) + ctx = OpenSSL::SSL::SSLContext.new + ctx.ssl_version = :SSLv3_client + ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) + assert_raise OpenSSL::SSL::SSLError do + ssl.connect + end + ssl.close rescue nil + sock.close rescue nil + EM.stop rescue nil + end + end + + assert(!$server_handshake_completed) + end + end +else + warn "EM built without SSL support, skipping tests in #{__FILE__}" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_verify.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_verify.rb new file mode 100644 index 0000000000..a6d8fca77e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ssl_verify.rb @@ -0,0 +1,128 @@ +require 'em_test_helper' + +class TestSslVerify < Test::Unit::TestCase + def setup + $dir = File.dirname(File.expand_path(__FILE__)) + '/' + $cert_from_file = File.read($dir+'client.crt') + end + + module ClientNoCert + def connection_completed + start_tls() + end + + def ssl_handshake_completed + $client_handshake_completed = true + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + module Client + def connection_completed + start_tls(:private_key_file => $dir+'client.key', :cert_chain_file => $dir+'client.crt') + end + + def ssl_handshake_completed + $client_handshake_completed = true + close_connection + end + + def unbind + EM.stop_event_loop + end + end + + module AcceptServer + def post_init + start_tls(:verify_peer => true) + end + + def ssl_verify_peer(cert) + $cert_from_server = cert + true + end + + def ssl_handshake_completed + $server_handshake_completed = true + end + end + + module DenyServer + def post_init + start_tls(:verify_peer => true) + end + + def ssl_verify_peer(cert) + $cert_from_server = cert + # Do not accept the peer. This should now cause the connection to shut down without the SSL handshake being completed. + false + end + + def ssl_handshake_completed + $server_handshake_completed = true + end + end + + module FailServerNoPeerCert + def post_init + start_tls(:verify_peer => true, :fail_if_no_peer_cert => true) + end + + def ssl_verify_peer(cert) + raise "Verify peer should not get called for a client without a certificate" + end + + def ssl_handshake_completed + $server_handshake_completed = true + end + end + + def test_fail_no_peer_cert + omit_unless(EM.ssl?) + omit_if(rbx?) + + $client_handshake_completed, $server_handshake_completed = false, false + + EM.run { + EM.start_server("127.0.0.1", 16784, FailServerNoPeerCert) + EM.connect("127.0.0.1", 16784, ClientNoCert) + } + + assert(!$client_handshake_completed) + assert(!$server_handshake_completed) + end + + def test_accept_server + omit_unless(EM.ssl?) + omit_if(EM.library_type == :pure_ruby) # Server has a default cert chain + omit_if(rbx?) + $client_handshake_completed, $server_handshake_completed = false, false + EM.run { + EM.start_server("127.0.0.1", 16784, AcceptServer) + EM.connect("127.0.0.1", 16784, Client).instance_variable_get("@signature") + } + + assert_equal($cert_from_file, $cert_from_server) + assert($client_handshake_completed) + assert($server_handshake_completed) + end + + def test_deny_server + omit_unless(EM.ssl?) + omit_if(EM.library_type == :pure_ruby) # Server has a default cert chain + omit_if(rbx?) + $client_handshake_completed, $server_handshake_completed = false, false + EM.run { + EM.start_server("127.0.0.1", 16784, DenyServer) + EM.connect("127.0.0.1", 16784, Client) + } + + assert_equal($cert_from_file, $cert_from_server) + assert(!$client_handshake_completed) + assert(!$server_handshake_completed) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_stomp.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_stomp.rb new file mode 100644 index 0000000000..53c0502ab2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_stomp.rb @@ -0,0 +1,38 @@ +require 'em_test_helper' + +class TestStomp < Test::Unit::TestCase + CONTENT_LENGTH_REGEX = /^content-length: (\d+)$/ + + def bytesize(str) + str = str.to_s + size = str.bytesize if str.respond_to?(:bytesize) # bytesize added in 1.9 + size || str.size + end + + class TStomp + include EM::P::Stomp + + def last_sent_content_length + @sent && Integer(@sent[CONTENT_LENGTH_REGEX, 1]) + end + + def send_data(string) + @sent = string + end + end + + def test_content_length_in_bytes + connection = TStomp.new + + queue = "queue" + failure_message = "header content-length is not the byte size of last sent body" + + body = "test" + connection.send queue, body + assert_equal bytesize(body), connection.last_sent_content_length, failure_message + + body = "test\u221A" + connection.send queue, body + assert_equal bytesize(body), connection.last_sent_content_length, failure_message + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_system.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_system.rb new file mode 100644 index 0000000000..fbbe2c9e84 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_system.rb @@ -0,0 +1,46 @@ +# coding: utf-8 +require 'em_test_helper' + +class TestSystem < Test::Unit::TestCase + def setup + @filename = File.expand_path("../я манал dump.txt", __FILE__) + @test_data = 'a' * 100 + File.open(@filename, 'w'){|f| f.write(@test_data)} + end + + def test_system + omit_if(windows?) + + result = nil + status = nil + EM.run { + EM.system('cat', @filename){|out, state| + result = out + status = state.exitstatus + EM.stop + } + } + assert_equal(0, status) + assert_equal(@test_data, result) + end + + def test_system_with_string + omit_if(windows?) + + result = nil + status = nil + EM.run { + EM.system("cat '#@filename'"){|out, state| + result = out + status = state.exitstatus + EM.stop + } + } + assert_equal(0, status) + assert_equal(@test_data, result) + end + + def teardown + File.unlink(@filename) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_threaded_resource.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_threaded_resource.rb new file mode 100644 index 0000000000..9bb39c6e0a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_threaded_resource.rb @@ -0,0 +1,63 @@ +require 'em_test_helper' + +class TestThreadedResource < Test::Unit::TestCase + def object + @object ||= {} + end + + def resource + @resource = EM::ThreadedResource.new do + object + end + end + + def teardown + resource.shutdown + end + + def test_dispatch_completion + EM.run do + EM.add_timer(3) do + EM.stop + fail 'Resource dispatch timed out' + end + completion = resource.dispatch do |o| + o[:foo] = :bar + :foo + end + completion.callback do |result| + assert_equal :foo, result + EM.stop + end + completion.errback do |error| + EM.stop + fail "Unexpected error: #{error.message}" + end + end + assert_equal :bar, object[:foo] + end + + def test_dispatch_failure + completion = resource.dispatch do |o| + raise 'boom' + end + completion.errback do |error| + assert_kind_of RuntimeError, error + assert_equal 'boom', error.message + end + end + + def test_dispatch_threading + main = Thread.current + resource.dispatch do |o| + o[:dispatch_thread] = Thread.current + end + assert_not_equal main, object[:dispatch_thread] + end + + def test_shutdown + # This test should get improved sometime. The method returning thread is + # NOT an api that will be maintained. + assert !resource.shutdown.alive? + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_tick_loop.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_tick_loop.rb new file mode 100644 index 0000000000..39d86b54d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_tick_loop.rb @@ -0,0 +1,59 @@ +require "test/unit" +require 'em_test_helper' + +class TestEmTickLoop < Test::Unit::TestCase + def test_em_tick_loop + i = 0 + EM.tick_loop { i += 1; EM.stop if i == 10 } + EM.run { EM.add_timer(1) { EM.stop } } + assert_equal i, 10 + end + + def test_tick_loop_on_stop + t = nil + tick_loop = EM.tick_loop { :stop } + tick_loop.on_stop { t = true } + EM.run { EM.next_tick { EM.stop } } + assert t + end + + def test_start_twice + i = 0 + s = 0 + tick_loop = EM.tick_loop { i += 1; :stop } + tick_loop.on_stop { s += 1; EM.stop } + EM.run { EM.next_tick { EM.stop } } + assert_equal 1, i + assert_equal 1, s + tick_loop.start + EM.run { EM.next_tick { EM.stop } } + assert_equal 2, i + assert_equal 1, s # stop callbacks are only called once + end + + def test_stop + i, s = 0, 0 + tick_loop = EM.tick_loop { i += 1 } + tick_loop.on_stop { s += 1 } + EM.run { EM.next_tick { tick_loop.stop; EM.next_tick { EM.stop } } } + assert tick_loop.stopped? + assert_equal 1, i + assert_equal 1, s + end + + def test_immediate_stops + s = 0 + tick_loop = EM::TickLoop.new { } + tick_loop.on_stop { s += 1 } + tick_loop.on_stop { s += 1 } + assert_equal 2, s + end + + def test_stopped + tick_loop = EM::TickLoop.new { } + assert tick_loop.stopped? + tick_loop.start + assert !tick_loop.stopped? + end + +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_timers.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_timers.rb new file mode 100644 index 0000000000..88b3b781d3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_timers.rb @@ -0,0 +1,130 @@ +require 'em_test_helper' + +class TestTimers < Test::Unit::TestCase + + def test_timer_with_block + x = false + EM.run { + EM::Timer.new(0) { + x = true + EM.stop + } + } + assert x + end + + def test_timer_with_proc + x = false + EM.run { + EM::Timer.new(0, proc { + x = true + EM.stop + }) + } + assert x + end + + def test_timer_cancel + assert_nothing_raised do + EM.run { + timer = EM::Timer.new(0.01) { flunk "Timer was not cancelled." } + timer.cancel + + EM.add_timer(0.02) { EM.stop } + } + end + end + + def test_periodic_timer + x = 0 + EM.run { + EM::PeriodicTimer.new(0.01) do + x += 1 + EM.stop if x == 4 + end + } + + assert_equal 4, x + end + + def test_add_periodic_timer + x = 0 + EM.run { + t = EM.add_periodic_timer(0.01) do + x += 1 + EM.stop if x == 4 + end + assert t.respond_to?(:cancel) + } + assert_equal 4, x + end + + def test_periodic_timer_cancel + x = 0 + EM.run { + pt = EM::PeriodicTimer.new(0.01) { x += 1 } + pt.cancel + EM::Timer.new(0.02) { EM.stop } + } + assert_equal 0, x + end + + def test_add_periodic_timer_cancel + x = 0 + EM.run { + pt = EM.add_periodic_timer(0.01) { x += 1 } + EM.cancel_timer(pt) + EM.add_timer(0.02) { EM.stop } + } + assert_equal 0, x + end + + def test_periodic_timer_self_cancel + x = 0 + EM.run { + pt = EM::PeriodicTimer.new(0) { + x += 1 + if x == 4 + pt.cancel + EM.stop + end + } + } + assert_equal 4, x + end + + def test_oneshot_timer_large_future_value + large_value = 11948602000 + EM.run { + EM.add_timer(large_value) { EM.stop } + EM.add_timer(0.02) { EM.stop } + } + end + + # This test is only applicable to compiled versions of the reactor. + # Pure ruby and java versions have no built-in limit on the number of outstanding timers. + unless [:pure_ruby, :java].include? EM.library_type + def test_timer_change_max_outstanding + defaults = EM.get_max_timers + EM.set_max_timers(100) + + one_hundred_one_timers = lambda do + 101.times { EM.add_timer(0.01) {} } + EM.stop + end + + assert_raises(RuntimeError) do + EM.run( &one_hundred_one_timers ) + end + + EM.set_max_timers( 101 ) + + assert_nothing_raised do + EM.run( &one_hundred_one_timers ) + end + ensure + EM.set_max_timers(defaults) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ud.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ud.rb new file mode 100644 index 0000000000..3559756e23 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_ud.rb @@ -0,0 +1,8 @@ +require 'em_test_helper' + +class TestUserDefinedEvents < Test::Unit::TestCase + + def test_a + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_unbind_reason.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_unbind_reason.rb new file mode 100644 index 0000000000..ff9193e01a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/tests/test_unbind_reason.rb @@ -0,0 +1,40 @@ +require 'em_test_helper' + +class TestUnbindReason < Test::Unit::TestCase + + class StubConnection < EM::Connection + attr_reader :error + def unbind(reason = nil) + @error = reason + EM.stop + end + end + + # RFC 5737 Address Blocks Reserved for Documentation + def test_connect_timeout + conn = nil + EM.run do + conn = EM.connect '192.0.2.0', 80, StubConnection + conn.pending_connect_timeout = 1 + end + assert_equal Errno::ETIMEDOUT, conn.error + end + + def test_connect_refused + pend('FIXME: this test is broken on Windows') if windows? + conn = nil + EM.run do + conn = EM.connect '127.0.0.1', 12388, StubConnection + end + assert_equal Errno::ECONNREFUSED, conn.error + end + + def test_optional_argument + pend('FIXME: this test is broken on Windows') if windows? + conn = nil + EM.run do + conn = EM.connect '127.0.0.1', 12388, StubConnection + end + assert_equal Errno::ECONNREFUSED, conn.error + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitignore new file mode 100644 index 0000000000..8a552812ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitignore @@ -0,0 +1,22 @@ +doc/ +bin/ +.yardoc +*.orig +nbproject/private +pkg +*.orig +*.rej +*.patch +*.diff +build +*.so +*.[oa] +core +lib/ffi/types.conf +lib/ffi_c.bundle +lib/ffi_c.so +vendor +.bundle +Gemfile.lock +types_log +*.gem diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitmodules b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitmodules new file mode 100644 index 0000000000..fd11f34a2e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ext/ffi_c/libffi"] + path = ext/ffi_c/libffi + url = https://github.com/libffi/libffi.git diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.travis.yml new file mode 100644 index 0000000000..bc9c7f74a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.travis.yml @@ -0,0 +1,43 @@ +dist: trusty +sudo: false +group: beta +language: ruby +before_install: + - gem install bundler +script: + - bundle exec rake compile || bundle exec rake compile + - bundle exec rake test +os: + - linux + - osx +rvm: + - 2.3.8 + - 2.4.5 + - 2.5.3 + - 2.6.0 + - ruby-head + - system +env: + - CC=gcc + - CC=clang +matrix: + allow_failures: + - rvm: system + - os: osx + rvm: ruby-head + exclude: # ruby 2.4.2 needs build with xcode9 or later on osx + - os: osx + rvm: 2.4.2 + include: + - os: osx + osx_image: xcode9.1 + rvm: 2.4.2 + env: + - CC=gcc + - os: osx + osx_image: xcode9.1 + rvm: 2.4.2 + env: + - CC=clang +after_failure: + - "find build -name mkmf.log | xargs cat" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.yardopts b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.yardopts new file mode 100644 index 0000000000..8ef32b9f34 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/.yardopts @@ -0,0 +1,5 @@ +--title "Ruby FFI" +--charset UTF-8 +--private +lib/**/*.rb +ext/**/*.c \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/CHANGELOG.md new file mode 100644 index 0000000000..9f3aaf48ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/CHANGELOG.md @@ -0,0 +1,98 @@ +1.10.0 / 2019-01-06 +------------------- + +Added: +* Add /opt/local/lib/ to ffi's fallback library search path. #638 +* Add binary gem support for ruby-2.6 on Windows +* Add FreeBSD on AArch64 and ARM support. #644 +* Add FFI::LastError.winapi_error on Windows native or Cygwin. #633 + +Changed: +* Update to rake-compiler-dock-0.7.0 +* Use 64-bit inodes on FreeBSD >= 12. #644 +* Switch time_t and suseconds_t types to long on FreeBSD. #627 +* Make register_t long_long on 64-bit FreeBSD. #644 +* Fix Pointer#write_array_of_type #637 + +Removed: +* Drop binary gem support for ruby-2.0 and 2.1 on Windows + + +1.9.25 / 2018-06-03 +------------------- + +Changed: +* Revert closures via libffi. + This re-adds ClosurePool and fixes compat with SELinux enabled systems. #621 + + +1.9.24 / 2018-06-02 +------------------- + +Security Note: + +This update addresses vulnerability CVE-2018-1000201: DLL loading issue which can be hijacked on Windows OS, when a Symbol is used as DLL name instead of a String. Found by Matthew Bush. + +Added: +* Added a CHANGELOG file +* Add mips64(eb) support, and mips r6 support. (#601) + +Changed: +* Update libffi to latest changes on master. +* Don't search in hardcoded /usr paths on Windows. +* Don't treat Symbol args different to Strings in ffi_lib. +* Make sure size_t is defined in Thread.c. Fixes #609 + + +1.9.23 / 2018-02-25 +------------------- + +Changed: +* Fix unnecessary rebuild of configure in darwin multi arch. Fixes #605 + + +1.9.22 / 2018-02-22 +------------------- + +Changed: +* Update libffi to latest changes on master. +* Update detection of system libffi to match new requirements. Fixes #617 +* Prefer bundled libffi over system libffi on Mac OS. +* Do closures via libffi. This removes ClosurePool and fixes compat with PaX. #540 +* Use a more deterministic gem packaging. +* Fix unnecessary update of autoconf files at gem install. + + +1.9.21 / 2018-02-06 +------------------- + +Added: +* Ruby-2.5 support by Windows binary gems. Fixes #598 +* Add missing win64 types. +* Added support for Bitmask. (#573) +* Add support for MSYS2 (#572) and Sparc64 Linux. (#574) + +Changed: +* Fix read_string to not throw an error on length 0. +* Don't use absolute paths for sh and env. Fixes usage on Adroid #528 +* Use Ruby implementation for `which` for better compat with Windows. Fixes #315 +* Fix compatibility with PPC64LE platform. (#577) +* Normalize sparc64 to sparcv9. (#575) + +Removed: +* Drop Ruby 1.8.7 support (#480) + + +1.9.18 / 2017-03-03 +------------------- + +Added: +* Add compatibility with Ruby-2.4. + +Changed: +* Add missing shlwapi.h include to fix Windows build. +* Avoid undefined behaviour of LoadLibrary() on Windows. #553 + + +1.9.17 / 2017-01-13 +------------------- diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/COPYING b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/COPYING new file mode 100644 index 0000000000..76223189f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/COPYING @@ -0,0 +1,49 @@ +Copyright (c) 2008-2013, Ruby FFI project contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Ruby FFI project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +libffi, used by this project, is licensed under the MIT license: + +libffi - Copyright (c) 1996-2011 Anthony Green, Red Hat, Inc and others. +See source files for details. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Gemfile new file mode 100644 index 0000000000..c2549f786f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Gemfile @@ -0,0 +1,15 @@ +source 'https://rubygems.org' + +group :development do + gem 'rake', '~> 10.1' + gem 'rake-compiler', '~> 1.0.3' + gem 'rake-compiler-dock', '~> 0.7.0' + gem 'rspec', '~> 3.0' + gem 'rubygems-tasks', '~> 0.2.4', :require => 'rubygems/tasks' + gem "rubysl", "~> 2.0", :platforms => 'rbx' +end + +group :doc do + gem 'kramdown' + gem 'yard', '~> 0.9' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE new file mode 100644 index 0000000000..20185fd4f5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2008-2016, Ruby FFI project contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Ruby FFI project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE.SPECS b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE.SPECS new file mode 100644 index 0000000000..5c9ffcee31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/LICENSE.SPECS @@ -0,0 +1,22 @@ +Copyright (c) 2008-2012 Ruby-FFI contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/README.md b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/README.md new file mode 100644 index 0000000000..be3053c7e8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/README.md @@ -0,0 +1,112 @@ +# ruby-ffi https://wiki.github.com/ffi/ffi [![Build Status](https://travis-ci.org/ffi/ffi.png?branch=master)](https://travis-ci.org/ffi/ffi) [![Build status Windows](https://ci.appveyor.com/api/projects/status/r8wxn1sd4s794gg1/branch/master?svg=true)](https://ci.appveyor.com/project/larskanis/ffi-aofqa/branch/master) + +## Description + +Ruby-FFI is a ruby extension for programmatically loading dynamic +libraries, binding functions within them, and calling those functions +from Ruby code. Moreover, a Ruby-FFI extension works without changes +on Ruby and JRuby. [Discover why you should write your next extension +using Ruby-FFI](https://wiki.github.com/ffi/ffi/why-use-ffi). + +## Features/problems + +* Intuitive DSL +* Supports all C native types +* C structs (also nested), enums and global variables +* Callbacks from C to ruby +* Automatic garbage collection of native memory + +## Synopsis + +```ruby +require 'ffi' + +module MyLib + extend FFI::Library + ffi_lib 'c' + attach_function :puts, [ :string ], :int +end + +MyLib.puts 'Hello, World using libc!' +``` + +For less minimalistic and more sane examples you may look at: + +* the samples/ folder +* the examples on the [wiki](https://wiki.github.com/ffi/ffi) +* the projects using FFI listed on this page (https://wiki.github.com/ffi/ffi/projects-using-ffi) + +## Requirements + +You need a sane building environment in order to compile the extension. +At a minimum, you will need: +* A C compiler (e.g. Xcode on OSX, gcc on everything else) +* libffi development library - this is commonly in the libffi-dev or libffi-devel + +On Linux systems running with [PaX](https://en.wikipedia.org/wiki/PaX) (Gentoo, Alpine, etc.) FFI may trigger `mprotect` errors. You may need to disable [mprotect](https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Restrict_mprotect.28.29) for ruby (`paxctl -m [/path/to/ruby]`) for the time being until a solution is found. + +## Installation + +From rubygems: + + [sudo] gem install ffi + +or from the git repository on github: + + git clone git://github.com/ffi/ffi.git + git submodule update --init --recursive + cd ffi + rake install + +## License + +The ffi library is covered by the BSD license, also see the LICENSE file. +The specs are shared with Rubyspec and are licensed by the same license +as Rubyspec, see the LICENSE.SPECS file. + +## Credits + +The following people have submitted code, bug reports, or otherwise contributed to the success of this project: + +* Alban Peignier +* Aman Gupta +* Andrea Fazzi +* Andreas Niederl +* Andrew Cholakian +* Antonio Terceiro +* Brian Candler +* Brian D. Burns +* Bryan Kearney +* Charlie Savage +* Chikanaga Tomoyuki +* Hongli Lai +* Ian MacLeod +* Jake Douglas +* Jean-Dominique Morani +* Jeremy Hinegardner +* Jesús García Sáez +* Joe Khoobyar +* Jurij Smakov +* KISHIMOTO, Makoto +* Kim Burgestrand +* Lars Kanis +* Luc Heinrich +* Luis Lavena +* Matijs van Zuijlen +* Matthew King +* Mike Dalessio +* NARUSE, Yui +* Park Heesob +* Shin Yee +* Stephen Bannasch +* Suraj N. Kurapati +* Sylvain Daubert +* Victor Costan +* beoran@gmail.com +* ctide +* emboss +* hobophobe +* meh +* postmodern +* wycats@gmail.com +* Wayne Meissner diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Rakefile new file mode 100644 index 0000000000..33f6730e63 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/Rakefile @@ -0,0 +1,268 @@ +require 'rubygems/tasks' +require 'rbconfig' +require 'rake/clean' +require File.expand_path("./lib/ffi/version") + +USE_RAKE_COMPILER = (RUBY_PLATFORM =~ /java/) ? false : true +if USE_RAKE_COMPILER + require 'rake/extensiontask' +end + +require 'date' +require 'fileutils' +require 'rbconfig' +require 'rspec/core/rake_task' +require 'rubygems/package_task' + +LIBEXT = case RbConfig::CONFIG['host_os'].downcase + when /darwin/ + "dylib" + when /mswin|mingw/ + "dll" + else + RbConfig::CONFIG['DLEXT'] + end + +CPU = case RbConfig::CONFIG['host_cpu'].downcase + when /i[3456]86/ + # Darwin always reports i686, even when running in 64bit mode + if RbConfig::CONFIG['host_os'] =~ /darwin/ && 0xfee1deadbeef.is_a?(Fixnum) + "x86_64" + else + "i386" + end + + when /amd64|x86_64/ + "x86_64" + + when /ppc64|powerpc64/ + "powerpc64" + + when /ppc|powerpc/ + "powerpc" + + when /^arm/ + "arm" + + else + RbConfig::CONFIG['host_cpu'] + end + +OS = case RbConfig::CONFIG['host_os'].downcase + when /linux/ + "linux" + when /darwin/ + "darwin" + when /freebsd/ + "freebsd" + when /openbsd/ + "openbsd" + when /sunos|solaris/ + "solaris" + when /mswin|mingw/ + "win32" + else + RbConfig::CONFIG['host_os'].downcase + end + +def which(name) + exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] + ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| + exts.each do |ext| + app = File.join(path, name+ext) + return app if File.executable? app + end + end + nil +end + +GMAKE = which('gmake').nil? ? 'make' : 'gmake' + +LIBTEST = "build/libtest.#{LIBEXT}" +BUILD_DIR = "build" +BUILD_EXT_DIR = File.join(BUILD_DIR, "#{RbConfig::CONFIG['arch']}", 'ffi_c', RUBY_VERSION) + +def gem_spec + @gem_spec ||= Gem::Specification.load('ffi.gemspec') +end + +TEST_DEPS = [ LIBTEST ] +if RUBY_PLATFORM == "java" + RSpec::Core::RakeTask.new(:spec) do |config| + config.rspec_opts = YAML.load_file 'spec/spec.opts' + end +else + RSpec::Core::RakeTask.new(:spec => :compile) do |config| + config.rspec_opts = YAML.load_file 'spec/spec.opts' + end + + TEST_DEPS.unshift :compile +end + +desc "Build all packages" +task :package => %w[ gem:java gem:windows ] + +CLOBBER.include 'lib/ffi/types.conf' +CLOBBER.include 'pkg' +CLOBBER.include 'log' + +CLEAN.include 'build' +CLEAN.include 'conftest.dSYM' +CLEAN.include 'spec/ffi/fixtures/libtest.{dylib,so,dll}' +CLEAN.include 'spec/ffi/fixtures/*.o' +CLEAN.include "pkg/ffi-*-{mingw32,java}" +CLEAN.include 'lib/1.*' +CLEAN.include 'lib/2.*' +CLEAN.include 'bin' + +task :distclean => :clobber + +desc "Build the native test lib" +file "build/libtest.#{LIBEXT}" => FileList['libtest/**/*.[ch]'] do + sh %{#{GMAKE} -f libtest/GNUmakefile CPU=#{CPU} OS=#{OS} } +end + + +desc "Build test helper lib" +task :libtest => "build/libtest.#{LIBEXT}" + +desc "Test the extension" +task :test => [ :spec ] + + +namespace :bench do + ITER = ENV['ITER'] ? ENV['ITER'].to_i : 100000 + bench_libs = "-Ilib -I#{BUILD_DIR}" unless RUBY_PLATFORM == "java" + bench_files = Dir["bench/bench_*.rb"].reject { |f| f == "bench_helper.rb" } + bench_files.each do |bench| + task File.basename(bench, ".rb")[6..-1] => TEST_DEPS do + sh %{#{Gem.ruby} #{bench_libs} #{bench} #{ITER}} + end + end + task :all => TEST_DEPS do + bench_files.each do |bench| + sh %{#{Gem.ruby} #{bench_libs} #{bench}} + end + end +end + +task 'spec:run' => TEST_DEPS +task 'spec:specdoc' => TEST_DEPS + +task :default => :spec + +namespace 'java' do + + java_gem_spec = Gem::Specification.new do |s| + s.name = gem_spec.name + s.version = gem_spec.version + s.author = gem_spec.author + s.email = gem_spec.email + s.homepage = gem_spec.homepage + s.summary = gem_spec.summary + s.description = gem_spec.description + s.files = %w(LICENSE COPYING README.md CHANGELOG.md Rakefile) + s.license = gem_spec.license + s.platform = 'java' + end + + Gem::PackageTask.new(java_gem_spec) do |pkg| + pkg.need_zip = true + pkg.need_tar = true + pkg.package_dir = 'pkg' + end +end + +task 'gem:java' => 'java:gem' + + +if USE_RAKE_COMPILER + Rake::ExtensionTask.new('ffi_c', gem_spec) do |ext| + ext.name = 'ffi_c' # indicate the name of the extension. + # ext.lib_dir = BUILD_DIR # put binaries into this folder. + ext.tmp_dir = BUILD_DIR # temporary folder used during compilation. + ext.cross_compile = true # enable cross compilation (requires cross compile toolchain) + ext.cross_platform = %w[i386-mingw32 x64-mingw32] # forces the Windows platform instead of the default one + ext.cross_compiling do |spec| + spec.files.reject! { |path| File.fnmatch?('ext/*', path) } + end + end + + # To reduce the gem file size strip mingw32 dlls before packaging + ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version| + task "build/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" do |t| + sh "i686-w64-mingw32-strip -S build/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" + end + + task "build/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" do |t| + sh "x86_64-w64-mingw32-strip -S build/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" + end + end +end + +desc "build a windows gem without all the ceremony" +task "gem:windows" do + require "rake_compiler_dock" + sh "bundle package" + RakeCompilerDock.sh "sudo apt-get update && sudo apt-get install -y libltdl-dev && bundle --local && rake cross native gem MAKE='nice make -j`nproc`'" +end + +directory "ext/ffi_c/libffi" +file "ext/ffi_c/libffi/autogen.sh" => "ext/ffi_c/libffi" do + warn "Downloading libffi ..." + sh "git submodule update --init --recursive" +end + +LIBFFI_GIT_FILES = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0") + +# Generate files in gemspec but not in libffi's git repo by running autogen.sh +gem_spec.files.select do |f| + f =~ /ext\/ffi_c\/libffi\/(.*)/ && !LIBFFI_GIT_FILES.include?($1) +end.each do |f| + file f => "ext/ffi_c/libffi/autogen.sh" do + chdir "ext/ffi_c/libffi" do + sh "sh ./autogen.sh" + end + touch f + if gem_spec.files != Gem::Specification.load('./ffi.gemspec').files + warn "gemspec files have changed -> Please restart rake!" + exit 1 + end + end +end + +$LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib') +require 'ffi/platform' +types_conf = File.expand_path(File.join(FFI::Platform::CONF_DIR, 'types.conf')) +logfile = File.join(File.dirname(__FILE__), 'types_log') + +file types_conf => File.join("lib", "ffi", "version.rb") do |task| + require 'fileutils' + require 'ffi/tools/types_generator' + options = {} + FileUtils.mkdir_p(File.dirname(task.name), { :mode => 0755 }) + File.open(task.name, File::CREAT|File::TRUNC|File::RDWR, 0644) do |f| + f.puts FFI::TypesGenerator.generate(options) + end + File.open(logfile, 'w') do |log| + log.puts(types_conf) + end +end + +task :types_conf => types_conf do +end + +Gem::Tasks.new do |t| + t.scm.tag.format = '%s' +end + +begin + require 'yard' + + namespace :doc do + YARD::Rake::YardocTask.new do |yard| + end + end +rescue LoadError + warn "[warn] YARD unavailable" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/appveyor.yml b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/appveyor.yml new file mode 100644 index 0000000000..6b2d8e882c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/appveyor.yml @@ -0,0 +1,22 @@ +install: + - SET PATH=C:\Ruby%RUBYVER%\bin;%PATH% + - SET RAKEOPT=-rdevkit + - ps: | + if ($env:RUBYVER -like "*head*") { + $(new-object net.webclient).DownloadFile("https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-$env:RUBYVER.exe", "$pwd/ruby-setup.exe") + cmd /c ruby-setup.exe /verysilent /dir=C:/Ruby$env:RUBYVER + } + - ridk version + - gem --version + - gem install bundler --quiet --no-document + - bundle install +build: off +build_script: + - bundle exec rake compile || bundle exec rake compile +test_script: + - bundle exec rake test +environment: + matrix: + - RUBYVER: "head-x64" + - RUBYVER: 24 + - RUBYVER: 25-x64 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/.sitearchdir.time b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/.sitearchdir.time new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.c new file mode 100644 index 0000000000..684907bb6f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.c @@ -0,0 +1,1109 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (C) 2009 Jake Douglas + * Copyright (C) 2008 Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#ifndef _MSC_VER +# include +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif + +#include +#include + +#include "rbffi.h" +#include "compat.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "Function.h" +#include "LongDouble.h" + +#ifdef PRIsVALUE +# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj) +# define RB_OBJ_STRING(obj) (obj) +#else +# define PRIsVALUE "s" +# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj) +# define RB_OBJ_STRING(obj) StringValueCStr(obj) +#endif + +static inline char* memory_address(VALUE self); +VALUE rbffi_AbstractMemoryClass = Qnil; +static VALUE NullPointerErrorClass = Qnil; +static ID id_to_ptr = 0, id_plus = 0, id_call = 0; + +static VALUE +memory_allocate(VALUE klass) +{ + AbstractMemory* memory; + VALUE obj; + obj = Data_Make_Struct(klass, AbstractMemory, NULL, -1, memory); + memory->flags = MEM_RD | MEM_WR; + + return obj; +} +#define VAL(x, swap) (unlikely(((memory->flags & MEM_SWAP) != 0)) ? swap((x)) : (x)) + +#define NUM_OP(name, type, toNative, fromNative, swap) \ +static void memory_op_put_##name(AbstractMemory* memory, long off, VALUE value); \ +static void \ +memory_op_put_##name(AbstractMemory* memory, long off, VALUE value) \ +{ \ + type tmp = (type) VAL(toNative(value), swap); \ + checkWrite(memory); \ + checkBounds(memory, off, sizeof(type)); \ + memcpy(memory->address + off, &tmp, sizeof(tmp)); \ +} \ +static VALUE memory_put_##name(VALUE self, VALUE offset, VALUE value); \ +static VALUE \ +memory_put_##name(VALUE self, VALUE offset, VALUE value) \ +{ \ + AbstractMemory* memory; \ + Data_Get_Struct(self, AbstractMemory, memory); \ + memory_op_put_##name(memory, NUM2LONG(offset), value); \ + return self; \ +} \ +static VALUE memory_write_##name(VALUE self, VALUE value); \ +static VALUE \ +memory_write_##name(VALUE self, VALUE value) \ +{ \ + AbstractMemory* memory; \ + Data_Get_Struct(self, AbstractMemory, memory); \ + memory_op_put_##name(memory, 0, value); \ + return self; \ +} \ +static VALUE memory_op_get_##name(AbstractMemory* memory, long off); \ +static VALUE \ +memory_op_get_##name(AbstractMemory* memory, long off) \ +{ \ + type tmp; \ + checkRead(memory); \ + checkBounds(memory, off, sizeof(type)); \ + memcpy(&tmp, memory->address + off, sizeof(tmp)); \ + return fromNative(VAL(tmp, swap)); \ +} \ +static VALUE memory_get_##name(VALUE self, VALUE offset); \ +static VALUE \ +memory_get_##name(VALUE self, VALUE offset) \ +{ \ + AbstractMemory* memory; \ + Data_Get_Struct(self, AbstractMemory, memory); \ + return memory_op_get_##name(memory, NUM2LONG(offset)); \ +} \ +static VALUE memory_read_##name(VALUE self); \ +static VALUE \ +memory_read_##name(VALUE self) \ +{ \ + AbstractMemory* memory; \ + Data_Get_Struct(self, AbstractMemory, memory); \ + return memory_op_get_##name(memory, 0); \ +} \ +static MemoryOp memory_op_##name = { memory_op_get_##name, memory_op_put_##name }; \ +\ +static VALUE memory_put_array_of_##name(VALUE self, VALUE offset, VALUE ary); \ +static VALUE \ +memory_put_array_of_##name(VALUE self, VALUE offset, VALUE ary) \ +{ \ + long count = RARRAY_LEN(ary); \ + long off = NUM2LONG(offset); \ + AbstractMemory* memory = MEMORY(self); \ + long i; \ + checkWrite(memory); \ + checkBounds(memory, off, count * sizeof(type)); \ + for (i = 0; i < count; i++) { \ + type tmp = (type) VAL(toNative(RARRAY_PTR(ary)[i]), swap); \ + memcpy(memory->address + off + (i * sizeof(type)), &tmp, sizeof(tmp)); \ + } \ + return self; \ +} \ +static VALUE memory_write_array_of_##name(VALUE self, VALUE ary); \ +static VALUE \ +memory_write_array_of_##name(VALUE self, VALUE ary) \ +{ \ + return memory_put_array_of_##name(self, INT2FIX(0), ary); \ +} \ +static VALUE memory_get_array_of_##name(VALUE self, VALUE offset, VALUE length); \ +static VALUE \ +memory_get_array_of_##name(VALUE self, VALUE offset, VALUE length) \ +{ \ + long count = NUM2LONG(length); \ + long off = NUM2LONG(offset); \ + AbstractMemory* memory = MEMORY(self); \ + VALUE retVal = rb_ary_new2(count); \ + long i; \ + checkRead(memory); \ + checkBounds(memory, off, count * sizeof(type)); \ + for (i = 0; i < count; ++i) { \ + type tmp; \ + memcpy(&tmp, memory->address + off + (i * sizeof(type)), sizeof(tmp)); \ + rb_ary_push(retVal, fromNative(VAL(tmp, swap))); \ + } \ + return retVal; \ +} \ +static VALUE memory_read_array_of_##name(VALUE self, VALUE length); \ +static VALUE \ +memory_read_array_of_##name(VALUE self, VALUE length) \ +{ \ + return memory_get_array_of_##name(self, INT2FIX(0), length); \ +} + +#define NOSWAP(x) (x) +#define bswap16(x) (((x) >> 8) & 0xff) | (((x) << 8) & 0xff00); +static inline int16_t +SWAPS16(int16_t x) +{ + return bswap16(x); +} + +static inline uint16_t +SWAPU16(uint16_t x) +{ + return bswap16(x); +} + +#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) +#define bswap32(x) \ + (((x << 24) & 0xff000000) | \ + ((x << 8) & 0x00ff0000) | \ + ((x >> 8) & 0x0000ff00) | \ + ((x >> 24) & 0x000000ff)) + +#define bswap64(x) \ + (((x << 56) & 0xff00000000000000ULL) | \ + ((x << 40) & 0x00ff000000000000ULL) | \ + ((x << 24) & 0x0000ff0000000000ULL) | \ + ((x << 8) & 0x000000ff00000000ULL) | \ + ((x >> 8) & 0x00000000ff000000ULL) | \ + ((x >> 24) & 0x0000000000ff0000ULL) | \ + ((x >> 40) & 0x000000000000ff00ULL) | \ + ((x >> 56) & 0x00000000000000ffULL)) + +static inline int32_t +SWAPS32(int32_t x) +{ + return bswap32(x); +} + +static inline uint32_t +SWAPU32(uint32_t x) +{ + return bswap32(x); +} + +static inline int64_t +SWAPS64(int64_t x) +{ + return bswap64(x); +} + +static inline uint64_t +SWAPU64(uint64_t x) +{ + return bswap64(x); +} + +#else +# define SWAPS32(x) ((int32_t) __builtin_bswap32(x)) +# define SWAPU32(x) ((uint32_t) __builtin_bswap32(x)) +# define SWAPS64(x) ((int64_t) __builtin_bswap64(x)) +# define SWAPU64(x) ((uint64_t) __builtin_bswap64(x)) +#endif + +#if LONG_MAX > INT_MAX +# define SWAPSLONG SWAPS64 +# define SWAPULONG SWAPU64 +#else +# define SWAPSLONG SWAPS32 +# define SWAPULONG SWAPU32 +#endif + +NUM_OP(int8, int8_t, NUM2INT, INT2NUM, NOSWAP); +NUM_OP(uint8, uint8_t, NUM2UINT, UINT2NUM, NOSWAP); +NUM_OP(int16, int16_t, NUM2INT, INT2NUM, SWAPS16); +NUM_OP(uint16, uint16_t, NUM2UINT, UINT2NUM, SWAPU16); +NUM_OP(int32, int32_t, NUM2INT, INT2NUM, SWAPS32); +NUM_OP(uint32, uint32_t, NUM2UINT, UINT2NUM, SWAPU32); +NUM_OP(int64, int64_t, NUM2LL, LL2NUM, SWAPS64); +NUM_OP(uint64, uint64_t, NUM2ULL, ULL2NUM, SWAPU64); +NUM_OP(long, long, NUM2LONG, LONG2NUM, SWAPSLONG); +NUM_OP(ulong, unsigned long, NUM2ULONG, ULONG2NUM, SWAPULONG); +NUM_OP(float32, float, NUM2DBL, rb_float_new, NOSWAP); +NUM_OP(float64, double, NUM2DBL, rb_float_new, NOSWAP); +NUM_OP(longdouble, long double, rbffi_num2longdouble, rbffi_longdouble_new, NOSWAP); + +static inline void* +get_pointer_value(VALUE value) +{ + const int type = TYPE(value); + if (type == T_DATA && rb_obj_is_kind_of(value, rbffi_PointerClass)) { + return memory_address(value); + } else if (type == T_NIL) { + return NULL; + } else if (type == T_FIXNUM) { + return (void *) (uintptr_t) FIX2ULONG(value); + } else if (type == T_BIGNUM) { + return (void *) (uintptr_t) NUM2ULL(value); + } else if (rb_respond_to(value, id_to_ptr)) { + return MEMORY_PTR(rb_funcall2(value, id_to_ptr, 0, NULL)); + } else { + rb_raise(rb_eArgError, "value is not a pointer"); + return NULL; + } +} + +NUM_OP(pointer, void *, get_pointer_value, rbffi_Pointer_NewInstance, NOSWAP); + +static inline uint8_t +rbffi_bool_value(VALUE value) +{ + return RTEST(value); +} + +static inline VALUE +rbffi_bool_new(uint8_t value) +{ + return (value & 1) != 0 ? Qtrue : Qfalse; +} + +NUM_OP(bool, unsigned char, rbffi_bool_value, rbffi_bool_new, NOSWAP); + + +/* + * call-seq: memory.clear + * Set the memory to all-zero. + * @return [self] + */ +static VALUE +memory_clear(VALUE self) +{ + AbstractMemory* ptr = MEMORY(self); + memset(ptr->address, 0, ptr->size); + return self; +} + +/* + * call-seq: memory.size + * Return memory size in bytes (alias: #total) + * @return [Numeric] + */ +static VALUE +memory_size(VALUE self) +{ + AbstractMemory* ptr; + + Data_Get_Struct(self, AbstractMemory, ptr); + + return LONG2NUM(ptr->size); +} + +/* + * call-seq: memory.get(type, offset) + * Return data of given type contained in memory. + * @param [Symbol, Type] type_name type of data to get + * @param [Numeric] offset point in buffer to start from + * @return [Object] + * @raise {ArgumentError} if type is not supported + */ +static VALUE +memory_get(VALUE self, VALUE type_name, VALUE offset) +{ + AbstractMemory* ptr; + VALUE nType; + Type *type; + + nType = rbffi_Type_Lookup(type_name); + if(NIL_P(nType)) goto undefined_type; + + Data_Get_Struct(self, AbstractMemory, ptr); + Data_Get_Struct(nType, Type, type); + + MemoryOp *op = get_memory_op(type); + if(op == NULL) goto undefined_type; + + return op->get(ptr, NUM2LONG(offset)); + +undefined_type: { + VALUE msg = rb_sprintf("undefined type '%" PRIsVALUE "'", type_name); + rb_exc_raise(rb_exc_new3(rb_eArgError, msg)); + return Qnil; + } +} + +/* + * call-seq: memory.put(type, offset, value) + * @param [Symbol, Type] type_name type of data to put + * @param [Numeric] offset point in buffer to start from + * @return [nil] + * @raise {ArgumentError} if type is not supported + */ +static VALUE +memory_put(VALUE self, VALUE type_name, VALUE offset, VALUE value) +{ + AbstractMemory* ptr; + VALUE nType; + Type *type; + + nType = rbffi_Type_Lookup(type_name); + if(NIL_P(nType)) goto undefined_type; + + Data_Get_Struct(self, AbstractMemory, ptr); + Data_Get_Struct(nType, Type, type); + + MemoryOp *op = get_memory_op(type); + if(op == NULL) goto undefined_type; + + op->put(ptr, NUM2LONG(offset), value); + return Qnil; + +undefined_type: { + VALUE msg = rb_sprintf("unsupported type '%" PRIsVALUE "'", type_name); + rb_exc_raise(rb_exc_new3(rb_eArgError, msg)); + return Qnil; + } +} + +/* + * call-seq: memory.get_string(offset, length=nil) + * Return string contained in memory. + * @param [Numeric] offset point in buffer to start from + * @param [Numeric] length string's length in bytes. If nil, a (memory size - offset) length string is returned). + * @return [String] + * @raise {IndexError} if +length+ is too great + * @raise {NullPointerError} if memory not initialized + */ +static VALUE +memory_get_string(int argc, VALUE* argv, VALUE self) +{ + VALUE length = Qnil, offset = Qnil; + AbstractMemory* ptr = MEMORY(self); + long off, len; + char* end; + int nargs = rb_scan_args(argc, argv, "11", &offset, &length); + + off = NUM2LONG(offset); + len = nargs > 1 && length != Qnil ? NUM2LONG(length) : (ptr->size - off); + checkRead(ptr); + checkBounds(ptr, off, len); + + end = memchr(ptr->address + off, 0, len); + return rb_tainted_str_new((char *) ptr->address + off, + (end != NULL ? end - ptr->address - off : len)); +} + +/* + * call-seq: memory.get_array_of_string(offset, count=nil) + * Return an array of strings contained in memory. + * @param [Numeric] offset point in memory to start from + * @param [Numeric] count number of strings to get. If nil, return all strings + * @return [Array] + * @raise {IndexError} if +offset+ is too great + * @raise {NullPointerError} if memory not initialized + */ +static VALUE +memory_get_array_of_string(int argc, VALUE* argv, VALUE self) +{ + VALUE offset = Qnil, countnum = Qnil, retVal = Qnil; + AbstractMemory* ptr; + long off; + int count; + + rb_scan_args(argc, argv, "11", &offset, &countnum); + off = NUM2LONG(offset); + count = (countnum == Qnil ? 0 : NUM2INT(countnum)); + retVal = rb_ary_new2(count); + + Data_Get_Struct(self, AbstractMemory, ptr); + checkRead(ptr); + + if (countnum != Qnil) { + int i; + + checkBounds(ptr, off, count * sizeof (char*)); + + for (i = 0; i < count; ++i) { + const char* strptr = *((const char**) (ptr->address + off) + i); + rb_ary_push(retVal, (strptr == NULL ? Qnil : rb_tainted_str_new2(strptr))); + } + + } else { + checkBounds(ptr, off, sizeof (char*)); + for ( ; off < ptr->size - (long) sizeof (void *); off += (long) sizeof (void *)) { + const char* strptr = *(const char**) (ptr->address + off); + if (strptr == NULL) { + break; + } + rb_ary_push(retVal, rb_tainted_str_new2(strptr)); + } + } + + return retVal; +} + +/* + * call-seq: memory.read_array_of_string(count=nil) + * Return an array of strings contained in memory. Same as: + * memory.get_array_of_string(0, count) + * @param [Numeric] count number of strings to get. If nil, return all strings + * @return [Array] + */ +static VALUE +memory_read_array_of_string(int argc, VALUE* argv, VALUE self) +{ + VALUE* rargv = ALLOCA_N(VALUE, argc + 1); + int i; + + rargv[0] = INT2FIX(0); + for (i = 0; i < argc; i++) { + rargv[i + 1] = argv[i]; + } + + return memory_get_array_of_string(argc + 1, rargv, self); +} + + +/* + * call-seq: memory.put_string(offset, str) + * @param [Numeric] offset + * @param [String] str + * @return [self] + * @raise {SecurityError} when writing unsafe string to memory + * @raise {IndexError} if +offset+ is too great + * @raise {NullPointerError} if memory not initialized + * Put a string in memory. + */ +static VALUE +memory_put_string(VALUE self, VALUE offset, VALUE str) +{ + AbstractMemory* ptr = MEMORY(self); + long off, len; + + Check_Type(str, T_STRING); + off = NUM2LONG(offset); + len = RSTRING_LEN(str); + + checkWrite(ptr); + checkBounds(ptr, off, len + 1); + + memcpy(ptr->address + off, RSTRING_PTR(str), len); + *((char *) ptr->address + off + len) = '\0'; + + return self; +} + +/* + * call-seq: memory.get_bytes(offset, length) + * Return string contained in memory. + * @param [Numeric] offset point in buffer to start from + * @param [Numeric] length string's length in bytes. + * @return [String] + * @raise {IndexError} if +length+ is too great + * @raise {NullPointerError} if memory not initialized + */ +static VALUE +memory_get_bytes(VALUE self, VALUE offset, VALUE length) +{ + AbstractMemory* ptr = MEMORY(self); + long off, len; + + off = NUM2LONG(offset); + len = NUM2LONG(length); + + checkRead(ptr); + checkBounds(ptr, off, len); + + return rb_tainted_str_new((char *) ptr->address + off, len); +} + +/* + * call-seq: memory.put_bytes(offset, str, index=0, length=nil) + * Put a string in memory. + * @param [Numeric] offset point in buffer to start from + * @param [String] str string to put to memory + * @param [Numeric] index + * @param [Numeric] length string's length in bytes. If nil, a (memory size - offset) length string is returned). + * @return [self] + * @raise {IndexError} if +length+ is too great + * @raise {NullPointerError} if memory not initialized + * @raise {RangeError} if +index+ is negative, or if index+length is greater than size of string + * @raise {SecurityError} when writing unsafe string to memory + */ +static VALUE +memory_put_bytes(int argc, VALUE* argv, VALUE self) +{ + AbstractMemory* ptr = MEMORY(self); + VALUE offset = Qnil, str = Qnil, rbIndex = Qnil, rbLength = Qnil; + long off, len, idx; + int nargs = rb_scan_args(argc, argv, "22", &offset, &str, &rbIndex, &rbLength); + + Check_Type(str, T_STRING); + + off = NUM2LONG(offset); + idx = nargs > 2 ? NUM2LONG(rbIndex) : 0; + if (idx < 0) { + rb_raise(rb_eRangeError, "index cannot be less than zero"); + return Qnil; + } + len = nargs > 3 ? NUM2LONG(rbLength) : (RSTRING_LEN(str) - idx); + if ((idx + len) > RSTRING_LEN(str)) { + rb_raise(rb_eRangeError, "index+length is greater than size of string"); + return Qnil; + } + + checkWrite(ptr); + checkBounds(ptr, off, len); + + if (rb_safe_level() >= 1 && OBJ_TAINTED(str)) { + rb_raise(rb_eSecurityError, "Writing unsafe string to memory"); + return Qnil; + } + memcpy(ptr->address + off, RSTRING_PTR(str) + idx, len); + + return self; +} + +/* + * call-seq: memory.read_bytes(length) + * @param [Numeric] length of string to return + * @return [String] + * equivalent to : + * memory.get_bytes(0, length) + */ +static VALUE +memory_read_bytes(VALUE self, VALUE length) +{ + return memory_get_bytes(self, INT2FIX(0), length); +} + +/* + * call-seq: memory.write_bytes(str, index=0, length=nil) + * @param [String] str string to put to memory + * @param [Numeric] index + * @param [Numeric] length string's length in bytes. If nil, a (memory size - offset) length string is returned). + * @return [self] + * equivalent to : + * memory.put_bytes(0, str, index, length) + */ +static VALUE +memory_write_bytes(int argc, VALUE* argv, VALUE self) +{ + VALUE* wargv = ALLOCA_N(VALUE, argc + 1); + int i; + + wargv[0] = INT2FIX(0); + for (i = 0; i < argc; i++) { + wargv[i + 1] = argv[i]; + } + + return memory_put_bytes(argc + 1, wargv, self); +} + +/* + * call-seq: memory.type_size + * @return [Numeric] type size in bytes + * Get the memory's type size. + */ +static VALUE +memory_type_size(VALUE self) +{ + AbstractMemory* ptr; + + Data_Get_Struct(self, AbstractMemory, ptr); + + return INT2NUM(ptr->typeSize); +} + +/* + * Document-method: [] + * call-seq: memory[idx] + * @param [Numeric] idx index to access in memory + * @return + * Memory read accessor. + */ +static VALUE +memory_aref(VALUE self, VALUE idx) +{ + AbstractMemory* ptr; + VALUE rbOffset = Qnil; + + Data_Get_Struct(self, AbstractMemory, ptr); + + rbOffset = ULONG2NUM(NUM2ULONG(idx) * ptr->typeSize); + + return rb_funcall2(self, id_plus, 1, &rbOffset); +} + +static inline char* +memory_address(VALUE obj) +{ + return ((AbstractMemory *) DATA_PTR(obj))->address; +} + +static VALUE +memory_copy_from(VALUE self, VALUE rbsrc, VALUE rblen) +{ + AbstractMemory* dst; + + Data_Get_Struct(self, AbstractMemory, dst); + + memcpy(dst->address, rbffi_AbstractMemory_Cast(rbsrc, rbffi_AbstractMemoryClass)->address, NUM2INT(rblen)); + + return self; +} + +AbstractMemory* +rbffi_AbstractMemory_Cast(VALUE obj, VALUE klass) +{ + if (rb_obj_is_kind_of(obj, klass)) { + AbstractMemory* memory; + Data_Get_Struct(obj, AbstractMemory, memory); + return memory; + } + + rb_raise(rb_eArgError, "Invalid Memory object"); + return NULL; +} + +void +rbffi_AbstractMemory_Error(AbstractMemory *mem, int op) +{ + VALUE rbErrorClass = mem->address == NULL ? NullPointerErrorClass : rb_eRuntimeError; + if (op == MEM_RD) { + rb_raise(rbErrorClass, "invalid memory read at address=%p", mem->address); + } else if (op == MEM_WR) { + rb_raise(rbErrorClass, "invalid memory write at address=%p", mem->address); + } else { + rb_raise(rbErrorClass, "invalid memory access at address=%p", mem->address); + } +} + +static VALUE +memory_op_get_strptr(AbstractMemory* ptr, long offset) +{ + void* tmp = NULL; + + if (ptr != NULL && ptr->address != NULL) { + checkRead(ptr); + checkBounds(ptr, offset, sizeof(tmp)); + memcpy(&tmp, ptr->address + offset, sizeof(tmp)); + } + + return tmp != NULL ? rb_tainted_str_new2(tmp) : Qnil; +} + +static void +memory_op_put_strptr(AbstractMemory* ptr, long offset, VALUE value) +{ + rb_raise(rb_eArgError, "Cannot set :string fields"); +} + +static MemoryOp memory_op_strptr = { memory_op_get_strptr, memory_op_put_strptr }; + + +MemoryOps rbffi_AbstractMemoryOps = { + &memory_op_int8, /*.int8 */ + &memory_op_uint8, /* .uint8 */ + &memory_op_int16, /* .int16 */ + &memory_op_uint16, /* .uint16 */ + &memory_op_int32, /* .int32 */ + &memory_op_uint32, /* .uint32 */ + &memory_op_int64, /* .int64 */ + &memory_op_uint64, /* .uint64 */ + &memory_op_long, /* .slong */ + &memory_op_ulong, /* .uslong */ + &memory_op_float32, /* .float32 */ + &memory_op_float64, /* .float64 */ + &memory_op_longdouble, /* .longdouble */ + &memory_op_pointer, /* .pointer */ + &memory_op_strptr, /* .strptr */ + &memory_op_bool /* .boolOp */ +}; + +void +rbffi_AbstractMemory_Init(VALUE moduleFFI) +{ + /* + * Document-class: FFI::AbstractMemory + * + * {AbstractMemory} is the base class for many memory management classes such as {Buffer}. + * + * This class has a lot of methods to work with integers : + * * put_intsize(offset, value) + * * get_intsize(offset) + * * put_uintsize(offset, value) + * * get_uintsize(offset) + * * writeuintsize(value) + * * read_intsize + * * write_uintsize(value) + * * read_uintsize + * * put_array_of_intsize(offset, ary) + * * get_array_of_intsize(offset, length) + * * put_array_of_uintsize(offset, ary) + * * get_array_of_uintsize(offset, length) + * * write_array_of_intsize(ary) + * * read_array_of_intsize(length) + * * write_array_of_uintsize(ary) + * * read_array_of_uintsize(length) + * where _size_ is 8, 16, 32 or 64. Same methods exist for long type. + * + * Aliases exist : _char_ for _int8_, _short_ for _int16_, _int_ for _int32_ and long_long for _int64_. + * + * Others methods are listed below. + */ + VALUE classMemory = rb_define_class_under(moduleFFI, "AbstractMemory", rb_cObject); + rbffi_AbstractMemoryClass = classMemory; + /* + * Document-variable: FFI::AbstractMemory + */ + rb_global_variable(&rbffi_AbstractMemoryClass); + rb_define_alloc_func(classMemory, memory_allocate); + + NullPointerErrorClass = rb_define_class_under(moduleFFI, "NullPointerError", rb_eRuntimeError); + /* Document-variable: NullPointerError */ + rb_global_variable(&NullPointerErrorClass); + + +#undef INT +#define INT(type) \ + rb_define_method(classMemory, "put_" #type, memory_put_##type, 2); \ + rb_define_method(classMemory, "get_" #type, memory_get_##type, 1); \ + rb_define_method(classMemory, "put_u" #type, memory_put_u##type, 2); \ + rb_define_method(classMemory, "get_u" #type, memory_get_u##type, 1); \ + rb_define_method(classMemory, "write_" #type, memory_write_##type, 1); \ + rb_define_method(classMemory, "read_" #type, memory_read_##type, 0); \ + rb_define_method(classMemory, "write_u" #type, memory_write_u##type, 1); \ + rb_define_method(classMemory, "read_u" #type, memory_read_u##type, 0); \ + rb_define_method(classMemory, "put_array_of_" #type, memory_put_array_of_##type, 2); \ + rb_define_method(classMemory, "get_array_of_" #type, memory_get_array_of_##type, 2); \ + rb_define_method(classMemory, "put_array_of_u" #type, memory_put_array_of_u##type, 2); \ + rb_define_method(classMemory, "get_array_of_u" #type, memory_get_array_of_u##type, 2); \ + rb_define_method(classMemory, "write_array_of_" #type, memory_write_array_of_##type, 1); \ + rb_define_method(classMemory, "read_array_of_" #type, memory_read_array_of_##type, 1); \ + rb_define_method(classMemory, "write_array_of_u" #type, memory_write_array_of_u##type, 1); \ + rb_define_method(classMemory, "read_array_of_u" #type, memory_read_array_of_u##type, 1); + + INT(int8); + INT(int16); + INT(int32); + INT(int64); + INT(long); + +#define ALIAS(name, old) \ + rb_define_alias(classMemory, "put_" #name, "put_" #old); \ + rb_define_alias(classMemory, "get_" #name, "get_" #old); \ + rb_define_alias(classMemory, "put_u" #name, "put_u" #old); \ + rb_define_alias(classMemory, "get_u" #name, "get_u" #old); \ + rb_define_alias(classMemory, "write_" #name, "write_" #old); \ + rb_define_alias(classMemory, "read_" #name, "read_" #old); \ + rb_define_alias(classMemory, "write_u" #name, "write_u" #old); \ + rb_define_alias(classMemory, "read_u" #name, "read_u" #old); \ + rb_define_alias(classMemory, "put_array_of_" #name, "put_array_of_" #old); \ + rb_define_alias(classMemory, "get_array_of_" #name, "get_array_of_" #old); \ + rb_define_alias(classMemory, "put_array_of_u" #name, "put_array_of_u" #old); \ + rb_define_alias(classMemory, "get_array_of_u" #name, "get_array_of_u" #old); \ + rb_define_alias(classMemory, "write_array_of_" #name, "write_array_of_" #old); \ + rb_define_alias(classMemory, "read_array_of_" #name, "read_array_of_" #old); \ + rb_define_alias(classMemory, "write_array_of_u" #name, "write_array_of_u" #old); \ + rb_define_alias(classMemory, "read_array_of_u" #name, "read_array_of_u" #old); + + ALIAS(char, int8); + ALIAS(short, int16); + ALIAS(int, int32); + ALIAS(long_long, int64); + + /* + * Document-method: put_float32 + * call-seq: memory.put_float32offset, value) + * @param [Numeric] offset + * @param [Numeric] value + * @return [self] + * Put +value+ as a 32-bit float in memory at offset +offset+ (alias: #put_float). + */ + rb_define_method(classMemory, "put_float32", memory_put_float32, 2); + /* + * Document-method: get_float32 + * call-seq: memory.get_float32(offset) + * @param [Numeric] offset + * @return [Float] + * Get a 32-bit float from memory at offset +offset+ (alias: #get_float). + */ + rb_define_method(classMemory, "get_float32", memory_get_float32, 1); + rb_define_alias(classMemory, "put_float", "put_float32"); + rb_define_alias(classMemory, "get_float", "get_float32"); + /* + * Document-method: write_float + * call-seq: memory.write_float(value) + * @param [Numeric] value + * @return [self] + * Write +value+ as a 32-bit float in memory. + * + * Same as: + * memory.put_float(0, value) + */ + rb_define_method(classMemory, "write_float", memory_write_float32, 1); + /* + * Document-method: read_float + * call-seq: memory.read_float + * @return [Float] + * Read a 32-bit float from memory. + * + * Same as: + * memory.get_float(0) + */ + rb_define_method(classMemory, "read_float", memory_read_float32, 0); + /* + * Document-method: put_array_of_float32 + * call-seq: memory.put_array_of_float32(offset, ary) + * @param [Numeric] offset + * @param [Array] ary + * @return [self] + * Put values from +ary+ as 32-bit floats in memory from offset +offset+ (alias: #put_array_of_float). + */ + rb_define_method(classMemory, "put_array_of_float32", memory_put_array_of_float32, 2); + /* + * Document-method: get_array_of_float32 + * call-seq: memory.get_array_of_float32(offset, length) + * @param [Numeric] offset + * @param [Numeric] length number of Float to get + * @return [Array] + * Get 32-bit floats in memory from offset +offset+ (alias: #get_array_of_float). + */ + rb_define_method(classMemory, "get_array_of_float32", memory_get_array_of_float32, 2); + /* + * Document-method: write_array_of_float + * call-seq: memory.write_array_of_float(ary) + * @param [Array] ary + * @return [self] + * Write values from +ary+ as 32-bit floats in memory. + * + * Same as: + * memory.put_array_of_float(0, ary) + */ + rb_define_method(classMemory, "write_array_of_float", memory_write_array_of_float32, 1); + /* + * Document-method: read_array_of_float + * call-seq: memory.read_array_of_float(length) + * @param [Numeric] length number of Float to read + * @return [Array] + * Read 32-bit floats from memory. + * + * Same as: + * memory.get_array_of_float(0, ary) + */ + rb_define_method(classMemory, "read_array_of_float", memory_read_array_of_float32, 1); + rb_define_alias(classMemory, "put_array_of_float", "put_array_of_float32"); + rb_define_alias(classMemory, "get_array_of_float", "get_array_of_float32"); + /* + * Document-method: put_float64 + * call-seq: memory.put_float64(offset, value) + * @param [Numeric] offset + * @param [Numeric] value + * @return [self] + * Put +value+ as a 64-bit float (double) in memory at offset +offset+ (alias: #put_double). + */ + rb_define_method(classMemory, "put_float64", memory_put_float64, 2); + /* + * Document-method: get_float64 + * call-seq: memory.get_float64(offset) + * @param [Numeric] offset + * @return [Float] + * Get a 64-bit float (double) from memory at offset +offset+ (alias: #get_double). + */ + rb_define_method(classMemory, "get_float64", memory_get_float64, 1); + rb_define_alias(classMemory, "put_double", "put_float64"); + rb_define_alias(classMemory, "get_double", "get_float64"); + /* + * Document-method: write_double + * call-seq: memory.write_double(value) + * @param [Numeric] value + * @return [self] + * Write +value+ as a 64-bit float (double) in memory. + * + * Same as: + * memory.put_double(0, value) + */ + rb_define_method(classMemory, "write_double", memory_write_float64, 1); + /* + * Document-method: read_double + * call-seq: memory.read_double + * @return [Float] + * Read a 64-bit float (double) from memory. + * + * Same as: + * memory.get_double(0) + */ + rb_define_method(classMemory, "read_double", memory_read_float64, 0); + /* + * Document-method: put_array_of_float64 + * call-seq: memory.put_array_of_float64(offset, ary) + * @param [Numeric] offset + * @param [Array] ary + * @return [self] + * Put values from +ary+ as 64-bit floats (doubles) in memory from offset +offset+ (alias: #put_array_of_double). + */ + rb_define_method(classMemory, "put_array_of_float64", memory_put_array_of_float64, 2); + /* + * Document-method: get_array_of_float64 + * call-seq: memory.get_array_of_float64(offset, length) + * @param [Numeric] offset + * @param [Numeric] length number of Float to get + * @return [Array] + * Get 64-bit floats (doubles) in memory from offset +offset+ (alias: #get_array_of_double). + */ + rb_define_method(classMemory, "get_array_of_float64", memory_get_array_of_float64, 2); + /* + * Document-method: write_array_of_double + * call-seq: memory.write_array_of_double(ary) + * @param [Array] ary + * @return [self] + * Write values from +ary+ as 64-bit floats (doubles) in memory. + * + * Same as: + * memory.put_array_of_double(0, ary) + */ + rb_define_method(classMemory, "write_array_of_double", memory_write_array_of_float64, 1); + /* + * Document-method: read_array_of_double + * call-seq: memory.read_array_of_double(length) + * @param [Numeric] length number of Float to read + * @return [Array] + * Read 64-bit floats (doubles) from memory. + * + * Same as: + * memory.get_array_of_double(0, ary) + */ + rb_define_method(classMemory, "read_array_of_double", memory_read_array_of_float64, 1); + rb_define_alias(classMemory, "put_array_of_double", "put_array_of_float64"); + rb_define_alias(classMemory, "get_array_of_double", "get_array_of_float64"); + /* + * Document-method: put_pointer + * call-seq: memory.put_pointer(offset, value) + * @param [Numeric] offset + * @param [nil,Pointer, Integer, #to_ptr] value + * @return [self] + * Put +value+ in memory from +offset+.. + */ + rb_define_method(classMemory, "put_pointer", memory_put_pointer, 2); + /* + * Document-method: get_pointer + * call-seq: memory.get_pointer(offset) + * @param [Numeric] offset + * @return [Pointer] + * Get a {Pointer} to the memory from +offset+. + */ + rb_define_method(classMemory, "get_pointer", memory_get_pointer, 1); + /* + * Document-method: write_pointer + * call-seq: memory.write_pointer(value) + * @param [nil,Pointer, Integer, #to_ptr] value + * @return [self] + * Write +value+ in memory. + * + * Equivalent to: + * memory.put_pointer(0, value) + */ + rb_define_method(classMemory, "write_pointer", memory_write_pointer, 1); + /* + * Document-method: read_pointer + * call-seq: memory.read_pointer + * @return [Pointer] + * Get a {Pointer} to the memory from base address. + * + * Equivalent to: + * memory.get_pointer(0) + */ + rb_define_method(classMemory, "read_pointer", memory_read_pointer, 0); + /* + * Document-method: put_array_of_pointer + * call-seq: memory.put_array_of_pointer(offset, ary) + * @param [Numeric] offset + * @param [Array<#to_ptr>] ary + * @return [self] + * Put an array of {Pointer} into memory from +offset+. + */ + rb_define_method(classMemory, "put_array_of_pointer", memory_put_array_of_pointer, 2); + /* + * Document-method: get_array_of_pointer + * call-seq: memory.get_array_of_pointer(offset, length) + * @param [Numeric] offset + * @param [Numeric] length + * @return [Array] + * Get an array of {Pointer} of length +length+ from +offset+. + */ + rb_define_method(classMemory, "get_array_of_pointer", memory_get_array_of_pointer, 2); + /* + * Document-method: write_array_of_pointer + * call-seq: memory.write_array_of_pointer(ary) + * @param [Array<#to_ptr>] ary + * @return [self] + * Write an array of {Pointer} into memory from +offset+. + * + * Same as : + * memory.put_array_of_pointer(0, ary) + */ + rb_define_method(classMemory, "write_array_of_pointer", memory_write_array_of_pointer, 1); + /* + * Document-method: read_array_of_pointer + * call-seq: memory.read_array_of_pointer(length) + * @param [Numeric] length + * @return [Array] + * Read an array of {Pointer} of length +length+. + * + * Same as: + * memory.get_array_of_pointer(0, length) + */ + rb_define_method(classMemory, "read_array_of_pointer", memory_read_array_of_pointer, 1); + + rb_define_method(classMemory, "get_string", memory_get_string, -1); + rb_define_method(classMemory, "put_string", memory_put_string, 2); + rb_define_method(classMemory, "get_bytes", memory_get_bytes, 2); + rb_define_method(classMemory, "put_bytes", memory_put_bytes, -1); + rb_define_method(classMemory, "read_bytes", memory_read_bytes, 1); + rb_define_method(classMemory, "write_bytes", memory_write_bytes, -1); + rb_define_method(classMemory, "get_array_of_string", memory_get_array_of_string, -1); + + rb_define_method(classMemory, "get", memory_get, 2); + rb_define_method(classMemory, "put", memory_put, 3); + + rb_define_method(classMemory, "clear", memory_clear, 0); + rb_define_method(classMemory, "total", memory_size, 0); + rb_define_alias(classMemory, "size", "total"); + rb_define_method(classMemory, "type_size", memory_type_size, 0); + rb_define_method(classMemory, "[]", memory_aref, 1); + rb_define_method(classMemory, "__copy_from__", memory_copy_from, 2); + + id_to_ptr = rb_intern("to_ptr"); + id_call = rb_intern("call"); + id_plus = rb_intern("+"); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.h new file mode 100644 index 0000000000..11192885ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/AbstractMemory.h @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_ABSTRACTMEMORY_H +#define RBFFI_ABSTRACTMEMORY_H + +#ifndef _MSC_VER +#include +#endif +#include +#ifndef _MSC_VER +#include +#endif + +#include "compat.h" +#include "Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +#define MEM_RD 0x01 +#define MEM_WR 0x02 +#define MEM_CODE 0x04 +#define MEM_SWAP 0x08 +#define MEM_EMBED 0x10 + +typedef struct AbstractMemory_ AbstractMemory; + +typedef struct { + VALUE (*get)(AbstractMemory* ptr, long offset); + void (*put)(AbstractMemory* ptr, long offset, VALUE value); +} MemoryOp; + +typedef struct { + MemoryOp* int8; + MemoryOp* uint8; + MemoryOp* int16; + MemoryOp* uint16; + MemoryOp* int32; + MemoryOp* uint32; + MemoryOp* int64; + MemoryOp* uint64; + MemoryOp* slong; + MemoryOp* uslong; + MemoryOp* float32; + MemoryOp* float64; + MemoryOp* longdouble; + MemoryOp* pointer; + MemoryOp* strptr; + MemoryOp* boolOp; +} MemoryOps; + +struct AbstractMemory_ { + char* address; /* Use char* instead of void* to ensure adding to it works correctly */ + long size; + int flags; + int typeSize; +}; + + +extern VALUE rbffi_AbstractMemoryClass; +extern MemoryOps rbffi_AbstractMemoryOps; + +extern void rbffi_AbstractMemory_Init(VALUE ffiModule); + +extern AbstractMemory* rbffi_AbstractMemory_Cast(VALUE obj, VALUE klass); + +extern void rbffi_AbstractMemory_Error(AbstractMemory *, int op); + +static inline void +checkBounds(AbstractMemory* mem, long off, long len) +{ + if (unlikely((off | len | (off + len) | (mem->size - (off + len))) < 0)) { + rb_raise(rb_eIndexError, "Memory access offset=%ld size=%ld is out of bounds", + off, len); + } +} + +static inline void +checkRead(AbstractMemory* mem) +{ + if (unlikely((mem->flags & MEM_RD) == 0)) { + rbffi_AbstractMemory_Error(mem, MEM_RD); + } +} + +static inline void +checkWrite(AbstractMemory* mem) +{ + if (unlikely((mem->flags & MEM_WR) == 0)) { + rbffi_AbstractMemory_Error(mem, MEM_WR); + } +} + +static inline MemoryOp* +get_memory_op(Type* type) +{ + switch (type->nativeType) { + case NATIVE_INT8: + return rbffi_AbstractMemoryOps.int8; + case NATIVE_UINT8: + return rbffi_AbstractMemoryOps.uint8; + case NATIVE_INT16: + return rbffi_AbstractMemoryOps.int16; + case NATIVE_UINT16: + return rbffi_AbstractMemoryOps.uint16; + case NATIVE_INT32: + return rbffi_AbstractMemoryOps.int32; + case NATIVE_UINT32: + return rbffi_AbstractMemoryOps.uint32; + case NATIVE_INT64: + return rbffi_AbstractMemoryOps.int64; + case NATIVE_UINT64: + return rbffi_AbstractMemoryOps.uint64; + case NATIVE_LONG: + return rbffi_AbstractMemoryOps.slong; + case NATIVE_ULONG: + return rbffi_AbstractMemoryOps.uslong; + case NATIVE_FLOAT32: + return rbffi_AbstractMemoryOps.float32; + case NATIVE_FLOAT64: + return rbffi_AbstractMemoryOps.float64; + case NATIVE_LONGDOUBLE: + return rbffi_AbstractMemoryOps.longdouble; + case NATIVE_POINTER: + return rbffi_AbstractMemoryOps.pointer; + case NATIVE_STRING: + return rbffi_AbstractMemoryOps.strptr; + case NATIVE_BOOL: + return rbffi_AbstractMemoryOps.boolOp; + default: + return NULL; + } +} + +#define MEMORY(obj) rbffi_AbstractMemory_Cast((obj), rbffi_AbstractMemoryClass) +#define MEMORY_PTR(obj) MEMORY((obj))->address +#define MEMORY_LEN(obj) MEMORY((obj))->size + + + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_ABSTRACTMEMORY_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.c new file mode 100644 index 0000000000..bfd666a7e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.c @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "ArrayType.h" + +static VALUE array_type_s_allocate(VALUE klass); +static VALUE array_type_initialize(VALUE self, VALUE rbComponentType, VALUE rbLength); +static void array_type_mark(ArrayType *); +static void array_type_free(ArrayType *); + +VALUE rbffi_ArrayTypeClass = Qnil; + +static VALUE +array_type_s_allocate(VALUE klass) +{ + ArrayType* array; + VALUE obj; + + obj = Data_Make_Struct(klass, ArrayType, array_type_mark, array_type_free, array); + + array->base.nativeType = NATIVE_ARRAY; + array->base.ffiType = xcalloc(1, sizeof(*array->base.ffiType)); + array->base.ffiType->type = FFI_TYPE_STRUCT; + array->base.ffiType->size = 0; + array->base.ffiType->alignment = 0; + array->rbComponentType = Qnil; + + return obj; +} + +static void +array_type_mark(ArrayType *array) +{ + rb_gc_mark(array->rbComponentType); +} + +static void +array_type_free(ArrayType *array) +{ + xfree(array->base.ffiType); + xfree(array->ffiTypes); + xfree(array); +} + + +/* + * call-seq: initialize(component_type, length) + * @param [Type] component_type + * @param [Numeric] length + * @return [self] + * A new instance of ArrayType. + */ +static VALUE +array_type_initialize(VALUE self, VALUE rbComponentType, VALUE rbLength) +{ + ArrayType* array; + int i; + + Data_Get_Struct(self, ArrayType, array); + + array->length = NUM2UINT(rbLength); + array->rbComponentType = rbComponentType; + Data_Get_Struct(rbComponentType, Type, array->componentType); + + array->ffiTypes = xcalloc(array->length + 1, sizeof(*array->ffiTypes)); + array->base.ffiType->elements = array->ffiTypes; + array->base.ffiType->size = array->componentType->ffiType->size * array->length; + array->base.ffiType->alignment = array->componentType->ffiType->alignment; + + for (i = 0; i < array->length; ++i) { + array->ffiTypes[i] = array->componentType->ffiType; + } + + return self; +} + +/* + * call-seq: length + * @return [Numeric] + * Get array's length + */ +static VALUE +array_type_length(VALUE self) +{ + ArrayType* array; + + Data_Get_Struct(self, ArrayType, array); + + return UINT2NUM(array->length); +} + +/* + * call-seq: element_type + * @return [Type] + * Get element type. + */ +static VALUE +array_type_element_type(VALUE self) +{ + ArrayType* array; + + Data_Get_Struct(self, ArrayType, array); + + return array->rbComponentType; +} + +void +rbffi_ArrayType_Init(VALUE moduleFFI) +{ + VALUE ffi_Type; + + ffi_Type = rbffi_TypeClass; + + /* + * Document-class: FFI::ArrayType < FFI::Type + * + * This is a typed array. The type is a {NativeType native type}. + */ + rbffi_ArrayTypeClass = rb_define_class_under(moduleFFI, "ArrayType", ffi_Type); + /* + * Document-variable: FFI::ArrayType + */ + rb_global_variable(&rbffi_ArrayTypeClass); + /* + * Document-constant: FFI::Type::Array + */ + rb_define_const(ffi_Type, "Array", rbffi_ArrayTypeClass); + + rb_define_alloc_func(rbffi_ArrayTypeClass, array_type_s_allocate); + rb_define_method(rbffi_ArrayTypeClass, "initialize", array_type_initialize, 2); + rb_define_method(rbffi_ArrayTypeClass, "length", array_type_length, 0); + rb_define_method(rbffi_ArrayTypeClass, "elem_type", array_type_element_type, 0); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.h new file mode 100644 index 0000000000..356ffb1c28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ArrayType.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_ARRAYTYPE_H +#define RBFFI_ARRAYTYPE_H + +#include +#include +#include "Type.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct ArrayType_ { + Type base; + int length; + ffi_type** ffiTypes; + Type* componentType; + VALUE rbComponentType; +} ArrayType; + +extern void rbffi_ArrayType_Init(VALUE moduleFFI); +extern VALUE rbffi_ArrayTypeClass; + + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_ARRAYTYPE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Buffer.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Buffer.c new file mode 100644 index 0000000000..faf4834d02 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Buffer.c @@ -0,0 +1,365 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * Copyright (C) 2009 Aman Gupta + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include +#include "rbffi.h" +#include "rbffi_endian.h" +#include "AbstractMemory.h" + +#define BUFFER_EMBED_MAXLEN (8) +typedef struct Buffer { + AbstractMemory memory; + + union { + VALUE rbParent; /* link to parent buffer */ + char* storage; /* start of malloc area */ + long embed[BUFFER_EMBED_MAXLEN / sizeof(long)]; /* storage for tiny allocations */ + } data; +} Buffer; + +static VALUE buffer_allocate(VALUE klass); +static VALUE buffer_initialize(int argc, VALUE* argv, VALUE self); +static void buffer_release(Buffer* ptr); +static void buffer_mark(Buffer* ptr); +static VALUE buffer_free(VALUE self); + +static VALUE BufferClass = Qnil; + +static VALUE +buffer_allocate(VALUE klass) +{ + Buffer* buffer; + VALUE obj; + + obj = Data_Make_Struct(klass, Buffer, NULL, buffer_release, buffer); + buffer->data.rbParent = Qnil; + buffer->memory.flags = MEM_RD | MEM_WR; + + return obj; +} + +static void +buffer_release(Buffer* ptr) +{ + if ((ptr->memory.flags & MEM_EMBED) == 0 && ptr->data.storage != NULL) { + xfree(ptr->data.storage); + ptr->data.storage = NULL; + } + + xfree(ptr); +} + +/* + * call-seq: initialize(size, count=1, clear=false) + * @param [Integer, Symbol, #size] Type or size in bytes of a buffer cell + * @param [Fixnum] count number of cell in the Buffer + * @param [Boolean] clear if true, set the buffer to all-zero + * @return [self] + * @raise {NoMemoryError} if failed to allocate memory for Buffer + * A new instance of Buffer. + */ +static VALUE +buffer_initialize(int argc, VALUE* argv, VALUE self) +{ + VALUE rbSize = Qnil, rbCount = Qnil, rbClear = Qnil; + Buffer* p; + int nargs; + + Data_Get_Struct(self, Buffer, p); + + nargs = rb_scan_args(argc, argv, "12", &rbSize, &rbCount, &rbClear); + p->memory.typeSize = rbffi_type_size(rbSize); + p->memory.size = p->memory.typeSize * (nargs > 1 ? NUM2LONG(rbCount) : 1); + + if (p->memory.size > BUFFER_EMBED_MAXLEN) { + p->data.storage = xmalloc(p->memory.size + 7); + if (p->data.storage == NULL) { + rb_raise(rb_eNoMemError, "Failed to allocate memory size=%lu bytes", p->memory.size); + return Qnil; + } + + /* ensure the memory is aligned on at least a 8 byte boundary */ + p->memory.address = (void *) (((uintptr_t) p->data.storage + 0x7) & (uintptr_t) ~0x7UL); + + if (p->memory.size > 0 && (nargs < 3 || RTEST(rbClear))) { + memset(p->memory.address, 0, p->memory.size); + } + + } else { + p->memory.flags |= MEM_EMBED; + p->memory.address = (void *) &p->data.embed[0]; + } + + if (rb_block_given_p()) { + return rb_ensure(rb_yield, self, buffer_free, self); + } + + return self; +} + +/* + * call-seq: initialize_copy(other) + * @return [self] + * DO NOT CALL THIS METHOD. + */ +static VALUE +buffer_initialize_copy(VALUE self, VALUE other) +{ + AbstractMemory* src; + Buffer* dst; + + Data_Get_Struct(self, Buffer, dst); + src = rbffi_AbstractMemory_Cast(other, BufferClass); + if ((dst->memory.flags & MEM_EMBED) == 0 && dst->data.storage != NULL) { + xfree(dst->data.storage); + } + dst->data.storage = xmalloc(src->size + 7); + if (dst->data.storage == NULL) { + rb_raise(rb_eNoMemError, "failed to allocate memory size=%lu bytes", src->size); + return Qnil; + } + + dst->memory.address = (void *) (((uintptr_t) dst->data.storage + 0x7) & (uintptr_t) ~0x7UL); + dst->memory.size = src->size; + dst->memory.typeSize = src->typeSize; + + /* finally, copy the actual buffer contents */ + memcpy(dst->memory.address, src->address, src->size); + + return self; +} + +static VALUE +buffer_alloc_inout(int argc, VALUE* argv, VALUE klass) +{ + return buffer_initialize(argc, argv, buffer_allocate(klass)); +} + +static VALUE +slice(VALUE self, long offset, long len) +{ + Buffer* ptr; + Buffer* result; + VALUE obj = Qnil; + + Data_Get_Struct(self, Buffer, ptr); + checkBounds(&ptr->memory, offset, len); + + obj = Data_Make_Struct(BufferClass, Buffer, buffer_mark, -1, result); + result->memory.address = ptr->memory.address + offset; + result->memory.size = len; + result->memory.flags = ptr->memory.flags; + result->memory.typeSize = ptr->memory.typeSize; + result->data.rbParent = self; + + return obj; +} + +/* + * call-seq: + offset + * @param [Numeric] offset + * @return [Buffer] a new instance of Buffer pointing from offset until end of previous buffer. + * Add a Buffer with an offset + */ +static VALUE +buffer_plus(VALUE self, VALUE rbOffset) +{ + Buffer* ptr; + long offset = NUM2LONG(rbOffset); + + Data_Get_Struct(self, Buffer, ptr); + + return slice(self, offset, ptr->memory.size - offset); +} + +/* + * call-seq: slice(offset, length) + * @param [Numeric] offset + * @param [Numeric] length + * @return [Buffer] a new instance of Buffer + * Slice an existing Buffer. + */ +static VALUE +buffer_slice(VALUE self, VALUE rbOffset, VALUE rbLength) +{ + return slice(self, NUM2LONG(rbOffset), NUM2LONG(rbLength)); +} + +/* + * call-seq: inspect + * @return [String] + * Inspect a Buffer. + */ +static VALUE +buffer_inspect(VALUE self) +{ + char tmp[100]; + Buffer* ptr; + + Data_Get_Struct(self, Buffer, ptr); + + snprintf(tmp, sizeof(tmp), "#", ptr, ptr->memory.address, ptr->memory.size); + + return rb_str_new2(tmp); +} + + +#if BYTE_ORDER == LITTLE_ENDIAN +# define SWAPPED_ORDER BIG_ENDIAN +#else +# define SWAPPED_ORDER LITTLE_ENDIAN +#endif + +/* + * Set or get endianness of Buffer. + * @overload order + * @return [:big, :little] + * Get endianness of Buffer. + * @overload order(order) + * @param [:big, :little, :network] order + * @return [self] + * Set endianness of Buffer (+:network+ is an alias for +:big+). + */ +static VALUE +buffer_order(int argc, VALUE* argv, VALUE self) +{ + Buffer* ptr; + + Data_Get_Struct(self, Buffer, ptr); + if (argc == 0) { + int order = (ptr->memory.flags & MEM_SWAP) == 0 ? BYTE_ORDER : SWAPPED_ORDER; + return order == BIG_ENDIAN ? ID2SYM(rb_intern("big")) : ID2SYM(rb_intern("little")); + } else { + VALUE rbOrder = Qnil; + int order = BYTE_ORDER; + + if (rb_scan_args(argc, argv, "1", &rbOrder) < 1) { + rb_raise(rb_eArgError, "need byte order"); + } + if (SYMBOL_P(rbOrder)) { + ID id = SYM2ID(rbOrder); + if (id == rb_intern("little")) { + order = LITTLE_ENDIAN; + + } else if (id == rb_intern("big") || id == rb_intern("network")) { + order = BIG_ENDIAN; + } + } + if (order != BYTE_ORDER) { + Buffer* p2; + VALUE retval = slice(self, 0, ptr->memory.size); + + Data_Get_Struct(retval, Buffer, p2); + p2->memory.flags |= MEM_SWAP; + return retval; + } + + return self; + } +} + +/* Only used to free the buffer if the yield in the initializer throws an exception */ +static VALUE +buffer_free(VALUE self) +{ + Buffer* ptr; + + Data_Get_Struct(self, Buffer, ptr); + if ((ptr->memory.flags & MEM_EMBED) == 0 && ptr->data.storage != NULL) { + xfree(ptr->data.storage); + ptr->data.storage = NULL; + } + + return self; +} + +static void +buffer_mark(Buffer* ptr) +{ + rb_gc_mark(ptr->data.rbParent); +} + +void +rbffi_Buffer_Init(VALUE moduleFFI) +{ + VALUE ffi_AbstractMemory = rbffi_AbstractMemoryClass; + + /* + * Document-class: FFI::Buffer < FFI::AbstractMemory + * + * A Buffer is a function argument type. It should be use with functions playing with C arrays. + */ + BufferClass = rb_define_class_under(moduleFFI, "Buffer", ffi_AbstractMemory); + + /* + * Document-variable: FFI::Buffer + */ + rb_global_variable(&BufferClass); + rb_define_alloc_func(BufferClass, buffer_allocate); + + /* + * Document-method: alloc_inout + * call-seq: alloc_inout(*args) + * Create a new Buffer for in and out arguments (alias : new_inout). + */ + rb_define_singleton_method(BufferClass, "alloc_inout", buffer_alloc_inout, -1); + /* + * Document-method: alloc_out + * call-seq: alloc_out(*args) + * Create a new Buffer for out arguments (alias : new_out). + */ + rb_define_singleton_method(BufferClass, "alloc_out", buffer_alloc_inout, -1); + /* + * Document-method: alloc_in + * call-seq: alloc_in(*args) + * Create a new Buffer for in arguments (alias : new_in). + */ + rb_define_singleton_method(BufferClass, "alloc_in", buffer_alloc_inout, -1); + rb_define_alias(rb_singleton_class(BufferClass), "new_in", "alloc_in"); + rb_define_alias(rb_singleton_class(BufferClass), "new_out", "alloc_out"); + rb_define_alias(rb_singleton_class(BufferClass), "new_inout", "alloc_inout"); + + rb_define_method(BufferClass, "initialize", buffer_initialize, -1); + rb_define_method(BufferClass, "initialize_copy", buffer_initialize_copy, 1); + rb_define_method(BufferClass, "order", buffer_order, -1); + rb_define_method(BufferClass, "inspect", buffer_inspect, 0); + rb_define_alias(BufferClass, "length", "total"); + rb_define_method(BufferClass, "+", buffer_plus, 1); + rb_define_method(BufferClass, "slice", buffer_slice, 2); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.c new file mode 100644 index 0000000000..0b9aceb872 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.c @@ -0,0 +1,520 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * Copyright (c) 2009, Mike Dalessio + * Copyright (c) 2009, Aman Gupta. + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include +#if defined(HAVE_RUBY_THREAD_H) +#include +#endif +#if defined(HAVE_NATIVETHREAD) && (defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) && !defined(_WIN32) +# include +# include +#endif +#include +#include "extconf.h" +#include "rbffi.h" +#include "compat.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "Struct.h" +#include "Function.h" +#include "Type.h" +#include "LastError.h" +#include "Call.h" +#include "MappedType.h" +#include "Thread.h" +#include "LongDouble.h" + +#ifdef USE_RAW +# ifndef __i386__ +# error "RAW argument packing only supported on i386" +# endif + +#define INT8_ADJ (4) +#define INT16_ADJ (4) +#define INT32_ADJ (4) +#define INT64_ADJ (8) +#define LONG_ADJ (sizeof(long)) +#define FLOAT32_ADJ (4) +#define FLOAT64_ADJ (8) +#define ADDRESS_ADJ (sizeof(void *)) +#define LONGDOUBLE_ADJ (ffi_type_longdouble.alignment) + +#endif /* USE_RAW */ + +#ifdef USE_RAW +# define ADJ(p, a) ((p) = (FFIStorage*) (((char *) p) + a##_ADJ)) +#else +# define ADJ(p, a) (++(p)) +#endif + +static void* callback_param(VALUE proc, VALUE cbinfo); +static inline void* getPointer(VALUE value, int type); + +static ID id_to_ptr, id_map_symbol, id_to_native; + +void +rbffi_SetupCallParams(int argc, VALUE* argv, int paramCount, Type** paramTypes, + FFIStorage* paramStorage, void** ffiValues, + VALUE* callbackParameters, int callbackCount, VALUE enums) +{ + VALUE callbackProc = Qnil; + FFIStorage* param = ¶mStorage[0]; + int i, argidx, cbidx, argCount; + + if (unlikely(paramCount != -1 && paramCount != argc)) { + if (argc == (paramCount - 1) && callbackCount == 1 && rb_block_given_p()) { + callbackProc = rb_block_proc(); + } else { + rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, paramCount); + } + } + + argCount = paramCount != -1 ? paramCount : argc; + + for (i = 0, argidx = 0, cbidx = 0; i < argCount; ++i) { + Type* paramType = paramTypes[i]; + int type; + + + if (unlikely(paramType->nativeType == NATIVE_MAPPED)) { + VALUE values[] = { argv[argidx], Qnil }; + argv[argidx] = rb_funcall2(((MappedType *) paramType)->rbConverter, id_to_native, 2, values); + paramType = ((MappedType *) paramType)->type; + } + + type = argidx < argc ? TYPE(argv[argidx]) : T_NONE; + ffiValues[i] = param; + + switch (paramType->nativeType) { + + case NATIVE_INT8: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->s8 = NUM2INT(value); + } else { + param->s8 = NUM2INT(argv[argidx]); + } + + ++argidx; + ADJ(param, INT8); + break; + + case NATIVE_INT16: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->s16 = NUM2INT(value); + + } else { + param->s16 = NUM2INT(argv[argidx]); + } + + ++argidx; + ADJ(param, INT16); + break; + + case NATIVE_INT32: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->s32 = NUM2INT(value); + + } else { + param->s32 = NUM2INT(argv[argidx]); + } + + ++argidx; + ADJ(param, INT32); + break; + + case NATIVE_BOOL: + if (type != T_TRUE && type != T_FALSE) { + rb_raise(rb_eTypeError, "wrong argument type (expected a boolean parameter)"); + } + param->s8 = argv[argidx++] == Qtrue; + ADJ(param, INT8); + break; + + case NATIVE_UINT8: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->u8 = NUM2UINT(value); + } else { + param->u8 = NUM2UINT(argv[argidx]); + } + + ADJ(param, INT8); + ++argidx; + break; + + case NATIVE_UINT16: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->u16 = NUM2UINT(value); + } else { + param->u16 = NUM2UINT(argv[argidx]); + } + + ADJ(param, INT16); + ++argidx; + break; + + case NATIVE_UINT32: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->u32 = NUM2UINT(value); + } else { + param->u32 = NUM2UINT(argv[argidx]); + } + + ADJ(param, INT32); + ++argidx; + break; + + case NATIVE_INT64: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->i64 = NUM2LL(value); + } else { + param->i64 = NUM2LL(argv[argidx]); + } + + ADJ(param, INT64); + ++argidx; + break; + + case NATIVE_UINT64: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->u64 = NUM2ULL(value); + } else { + param->u64 = NUM2ULL(argv[argidx]); + } + + ADJ(param, INT64); + ++argidx; + break; + + case NATIVE_LONG: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + *(ffi_sarg *) param = NUM2LONG(value); + } else { + *(ffi_sarg *) param = NUM2LONG(argv[argidx]); + } + + ADJ(param, LONG); + ++argidx; + break; + + case NATIVE_ULONG: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + *(ffi_arg *) param = NUM2ULONG(value); + } else { + *(ffi_arg *) param = NUM2ULONG(argv[argidx]); + } + + ADJ(param, LONG); + ++argidx; + break; + + case NATIVE_FLOAT32: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->f32 = (float) NUM2DBL(value); + } else { + param->f32 = (float) NUM2DBL(argv[argidx]); + } + + ADJ(param, FLOAT32); + ++argidx; + break; + + case NATIVE_FLOAT64: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->f64 = NUM2DBL(value); + } else { + param->f64 = NUM2DBL(argv[argidx]); + } + + ADJ(param, FLOAT64); + ++argidx; + break; + + case NATIVE_LONGDOUBLE: + if (unlikely(type == T_SYMBOL && enums != Qnil)) { + VALUE value = rb_funcall(enums, id_map_symbol, 1, argv[argidx]); + param->ld = rbffi_num2longdouble(value); + } else { + param->ld = rbffi_num2longdouble(argv[argidx]); + } + + ADJ(param, LONGDOUBLE); + ++argidx; + break; + + + case NATIVE_STRING: + if (type == T_NIL) { + param->ptr = NULL; + + } else { + if (rb_safe_level() >= 1 && OBJ_TAINTED(argv[argidx])) { + rb_raise(rb_eSecurityError, "Unsafe string parameter"); + } + + param->ptr = StringValueCStr(argv[argidx]); + } + + ADJ(param, ADDRESS); + ++argidx; + break; + + case NATIVE_POINTER: + case NATIVE_BUFFER_IN: + case NATIVE_BUFFER_OUT: + case NATIVE_BUFFER_INOUT: + param->ptr = getPointer(argv[argidx++], type); + ADJ(param, ADDRESS); + break; + + + case NATIVE_FUNCTION: + case NATIVE_CALLBACK: + if (callbackProc != Qnil) { + param->ptr = callback_param(callbackProc, callbackParameters[cbidx++]); + } else { + param->ptr = callback_param(argv[argidx], callbackParameters[cbidx++]); + ++argidx; + } + ADJ(param, ADDRESS); + break; + + case NATIVE_STRUCT: + ffiValues[i] = getPointer(argv[argidx++], type); + break; + + default: + rb_raise(rb_eArgError, "Invalid parameter type: %d", paramType->nativeType); + } + } +} + +static void * +call_blocking_function(void* data) +{ + rbffi_blocking_call_t* b = (rbffi_blocking_call_t *) data; + b->frame->has_gvl = false; + ffi_call(&b->cif, FFI_FN(b->function), b->retval, b->ffiValues); + b->frame->has_gvl = true; + + return NULL; +} + +VALUE +rbffi_do_blocking_call(void *data) +{ + rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL); + + return Qnil; +} + +VALUE +rbffi_save_frame_exception(void *data, VALUE exc) +{ + rbffi_frame_t* frame = (rbffi_frame_t *) data; + frame->exc = exc; + return Qnil; +} + +VALUE +rbffi_CallFunction(int argc, VALUE* argv, void* function, FunctionType* fnInfo) +{ + void* retval; + void** ffiValues; + FFIStorage* params; + VALUE rbReturnValue; + rbffi_frame_t frame = { 0 }; + + retval = alloca(MAX(fnInfo->ffi_cif.rtype->size, FFI_SIZEOF_ARG)); + + if (unlikely(fnInfo->blocking)) { + rbffi_blocking_call_t* bc; + + /* + * due to the way thread switching works on older ruby variants, we + * cannot allocate anything passed to the blocking function on the stack + */ +#if defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL) + ffiValues = ALLOCA_N(void *, fnInfo->parameterCount); + params = ALLOCA_N(FFIStorage, fnInfo->parameterCount); + bc = ALLOCA_N(rbffi_blocking_call_t, 1); + bc->retval = retval; +#else + ffiValues = ALLOC_N(void *, fnInfo->parameterCount); + params = ALLOC_N(FFIStorage, fnInfo->parameterCount); + bc = ALLOC_N(rbffi_blocking_call_t, 1); + bc->retval = xmalloc(MAX(fnInfo->ffi_cif.rtype->size, FFI_SIZEOF_ARG)); + bc->stkretval = retval; +#endif + bc->cif = fnInfo->ffi_cif; + bc->function = function; + bc->ffiValues = ffiValues; + bc->params = params; + bc->frame = &frame; + + rbffi_SetupCallParams(argc, argv, + fnInfo->parameterCount, fnInfo->parameterTypes, params, ffiValues, + fnInfo->callbackParameters, fnInfo->callbackCount, fnInfo->rbEnums); + + rbffi_frame_push(&frame); + rb_rescue2(rbffi_do_blocking_call, (VALUE) bc, rbffi_save_frame_exception, (VALUE) &frame, rb_eException, (VALUE) 0); + rbffi_frame_pop(&frame); + +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + memcpy(bc->stkretval, bc->retval, MAX(bc->cif.rtype->size, FFI_SIZEOF_ARG)); + xfree(bc->params); + xfree(bc->ffiValues); + xfree(bc->retval); + xfree(bc); +#endif + + } else { + + ffiValues = ALLOCA_N(void *, fnInfo->parameterCount); + params = ALLOCA_N(FFIStorage, fnInfo->parameterCount); + + rbffi_SetupCallParams(argc, argv, + fnInfo->parameterCount, fnInfo->parameterTypes, params, ffiValues, + fnInfo->callbackParameters, fnInfo->callbackCount, fnInfo->rbEnums); + + rbffi_frame_push(&frame); + ffi_call(&fnInfo->ffi_cif, FFI_FN(function), retval, ffiValues); + rbffi_frame_pop(&frame); + } + + if (unlikely(!fnInfo->ignoreErrno)) { + rbffi_save_errno(); + } + + if (RTEST(frame.exc) && frame.exc != Qnil) { + rb_exc_raise(frame.exc); + } + + RB_GC_GUARD(rbReturnValue) = rbffi_NativeValue_ToRuby(fnInfo->returnType, fnInfo->rbReturnType, retval); + RB_GC_GUARD(fnInfo->rbReturnType); + + return rbReturnValue; +} + +static inline void* +getPointer(VALUE value, int type) +{ + if (likely(type == T_DATA && rb_obj_is_kind_of(value, rbffi_AbstractMemoryClass))) { + + return ((AbstractMemory *) DATA_PTR(value))->address; + + } else if (type == T_DATA && rb_obj_is_kind_of(value, rbffi_StructClass)) { + + AbstractMemory* memory = ((Struct *) DATA_PTR(value))->pointer; + return memory != NULL ? memory->address : NULL; + + } else if (type == T_STRING) { + + return StringValuePtr(value); + + } else if (type == T_NIL) { + + return NULL; + + } else if (rb_respond_to(value, id_to_ptr)) { + + VALUE ptr = rb_funcall2(value, id_to_ptr, 0, NULL); + if (rb_obj_is_kind_of(ptr, rbffi_AbstractMemoryClass) && TYPE(ptr) == T_DATA) { + return ((AbstractMemory *) DATA_PTR(ptr))->address; + } + rb_raise(rb_eArgError, "to_ptr returned an invalid pointer"); + } + + rb_raise(rb_eArgError, ":pointer argument is not a valid pointer"); + return NULL; +} + +Invoker +rbffi_GetInvoker(FunctionType *fnInfo) +{ + return rbffi_CallFunction; +} + + +static void* +callback_param(VALUE proc, VALUE cbInfo) +{ + VALUE callback ; + if (unlikely(proc == Qnil)) { + return NULL ; + } + + /* Handle Function pointers here */ + if (rb_obj_is_kind_of(proc, rbffi_FunctionClass)) { + AbstractMemory* ptr; + Data_Get_Struct(proc, AbstractMemory, ptr); + return ptr->address; + } + + callback = rbffi_Function_ForProc(cbInfo, proc); + RB_GC_GUARD(callback); + + return ((AbstractMemory *) DATA_PTR(callback))->address; +} + + +void +rbffi_Call_Init(VALUE moduleFFI) +{ + id_to_ptr = rb_intern("to_ptr"); + id_to_native = rb_intern("to_native"); + id_map_symbol = rb_intern("__map_symbol"); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.h new file mode 100644 index 0000000000..56bdd61a6f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Call.h @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * Copyright (c) 2009, Mike Dalessio + * Copyright (c) 2009, Aman Gupta. + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_CALL_H +#define RBFFI_CALL_H + +#include "Thread.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__i386__) && \ + (defined(HAVE_RAW_API) || defined(USE_INTERNAL_LIBFFI)) && \ + !defined(_WIN32) && !defined(__WIN32__) +# define USE_RAW +#endif + +#if (defined(__i386__) || defined(__x86_64__)) && !(defined(_WIN32) || defined(__WIN32__)) +# define BYPASS_FFI 1 +#endif + +typedef union { +#ifdef USE_RAW + signed int s8, s16, s32; + unsigned int u8, u16, u32; +#else + signed char s8; + unsigned char u8; + signed short s16; + unsigned short u16; + signed int s32; + unsigned int u32; +#endif + signed long long i64; + unsigned long long u64; + signed long sl; + unsigned long ul; + void* ptr; + float f32; + double f64; + long double ld; +} FFIStorage; + +extern void rbffi_Call_Init(VALUE moduleFFI); + +extern void rbffi_SetupCallParams(int argc, VALUE* argv, int paramCount, Type** paramTypes, + FFIStorage* paramStorage, void** ffiValues, + VALUE* callbackParameters, int callbackCount, VALUE enums); + +struct FunctionType_; +extern VALUE rbffi_CallFunction(int argc, VALUE* argv, void* function, struct FunctionType_* fnInfo); + +typedef VALUE (*Invoker)(int argc, VALUE* argv, void* function, struct FunctionType_* fnInfo); + +Invoker rbffi_GetInvoker(struct FunctionType_* fnInfo); + +extern VALUE rbffi_GetEnumValue(VALUE enums, VALUE value); +extern int rbffi_GetSignedIntValue(VALUE value, int type, int minValue, int maxValue, const char* typeName, VALUE enums); + +typedef struct rbffi_blocking_call { + rbffi_frame_t* frame; + void* function; + ffi_cif cif; + void **ffiValues; + void* retval; + void* params; +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + void* stkretval; +#endif +} rbffi_blocking_call_t; + +VALUE rbffi_do_blocking_call(void* data); +VALUE rbffi_save_frame_exception(void *data, VALUE exc); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_CALL_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.c new file mode 100644 index 0000000000..5499b40d45 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.c @@ -0,0 +1,283 @@ +/* + * Copyright (c) 2009, 2010 Wayne Meissner + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include +#if defined(__CYGWIN__) || !defined(_WIN32) +# include +#endif +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#if defined(__CYGWIN__) || !defined(_WIN32) +# include +#else +# include +# define _WINSOCKAPI_ +# include +#endif +#include +#include + +#if defined(_MSC_VER) && !defined(INT8_MIN) +# include "win32/stdint.h" +#endif +#include +#include "rbffi.h" +#include "compat.h" + +#include "Function.h" +#include "Types.h" +#include "Type.h" +#include "LastError.h" +#include "Call.h" + +#include "ClosurePool.h" + + +#ifndef roundup +# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +#endif +#ifdef _WIN32 + typedef char* caddr_t; +#endif + +typedef struct Memory { + void* code; + void* data; + struct Memory* next; +} Memory; + +struct ClosurePool_ { + void* ctx; + int closureSize; + bool (*prep)(void* ctx, void *code, Closure* closure, char* errbuf, size_t errbufsize); + struct Memory* blocks; /* Keeps track of all the allocated memory for this pool */ + Closure* list; + long refcnt; +}; + +static long pageSize; + +static void* allocatePage(void); +static bool freePage(void *); +static bool protectPage(void *); + +ClosurePool* +rbffi_ClosurePool_New(int closureSize, + bool (*prep)(void* ctx, void *code, Closure* closure, char* errbuf, size_t errbufsize), + void* ctx) +{ + ClosurePool* pool; + + pool = xcalloc(1, sizeof(*pool)); + pool->closureSize = closureSize; + pool->ctx = ctx; + pool->prep = prep; + pool->refcnt = 1; + + return pool; +} + +void +cleanup_closure_pool(ClosurePool* pool) +{ + Memory* memory; + + for (memory = pool->blocks; memory != NULL; ) { + Memory* next = memory->next; + freePage(memory->code); + free(memory->data); + free(memory); + memory = next; + } + xfree(pool); +} + +void +rbffi_ClosurePool_Free(ClosurePool* pool) +{ + if (pool != NULL) { + long refcnt = --(pool->refcnt); + if (refcnt == 0) { + cleanup_closure_pool(pool); + } + } +} + +Closure* +rbffi_Closure_Alloc(ClosurePool* pool) +{ + Closure *list = NULL; + Memory* block = NULL; + caddr_t code = NULL; + char errmsg[256]; + int nclosures; + long trampolineSize; + int i; + + if (pool->list != NULL) { + Closure* closure = pool->list; + pool->list = pool->list->next; + pool->refcnt++; + + return closure; + } + + trampolineSize = roundup(pool->closureSize, 8); + nclosures = (int) (pageSize / trampolineSize); + block = calloc(1, sizeof(*block)); + list = calloc(nclosures, sizeof(*list)); + code = allocatePage(); + + if (block == NULL || list == NULL || code == NULL) { + snprintf(errmsg, sizeof(errmsg), "failed to allocate a page. errno=%d (%s)", errno, strerror(errno)); + goto error; + } + + for (i = 0; i < nclosures; ++i) { + Closure* closure = &list[i]; + closure->next = &list[i + 1]; + closure->pool = pool; + closure->code = (code + (i * trampolineSize)); + + if (!(*pool->prep)(pool->ctx, closure->code, closure, errmsg, sizeof(errmsg))) { + goto error; + } + } + + if (!protectPage(code)) { + goto error; + } + + /* Track the allocated page + Closure memory area */ + block->data = list; + block->code = code; + block->next = pool->blocks; + pool->blocks = block; + + /* Thread the new block onto the free list, apart from the first one. */ + list[nclosures - 1].next = pool->list; + pool->list = list->next; + pool->refcnt++; + + /* Use the first one as the new handle */ + return list; + +error: + free(block); + free(list); + if (code != NULL) { + freePage(code); + } + + + rb_raise(rb_eRuntimeError, "%s", errmsg); + return NULL; +} + +void +rbffi_Closure_Free(Closure* closure) +{ + if (closure != NULL) { + ClosurePool* pool = closure->pool; + long refcnt; + /* Just push it on the front of the free list */ + closure->next = pool->list; + pool->list = closure; + refcnt = --(pool->refcnt); + if (refcnt == 0) { + cleanup_closure_pool(pool); + } + } +} + +void* +rbffi_Closure_CodeAddress(Closure* handle) +{ + return handle->code; +} + + +static long +getPageSize() +{ +#if !defined(__CYGWIN__) && (defined(_WIN32) || defined(__WIN32__)) + SYSTEM_INFO si; + GetSystemInfo(&si); + return si.dwPageSize; +#else + return sysconf(_SC_PAGESIZE); +#endif +} + +static void* +allocatePage(void) +{ +#if !defined(__CYGWIN__) && (defined(_WIN32) || defined(__WIN32__)) + return VirtualAlloc(NULL, pageSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); +#else + caddr_t page = mmap(NULL, pageSize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); + return (page != (caddr_t) -1) ? page : NULL; +#endif +} + +static bool +freePage(void *addr) +{ +#if !defined(__CYGWIN__) && (defined(_WIN32) || defined(__WIN32__)) + return VirtualFree(addr, 0, MEM_RELEASE); +#else + return munmap(addr, pageSize) == 0; +#endif +} + +static bool +protectPage(void* page) +{ +#if !defined(__CYGWIN__) && (defined(_WIN32) || defined(__WIN32__)) + DWORD oldProtect; + return VirtualProtect(page, pageSize, PAGE_EXECUTE_READ, &oldProtect); +#else + return mprotect(page, pageSize, PROT_READ | PROT_EXEC) == 0; +#endif +} + +void +rbffi_ClosurePool_Init(VALUE module) +{ + pageSize = getPageSize(); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.h new file mode 100644 index 0000000000..b842375ae9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ClosurePool.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2009, 2010 Wayne Meissner + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RUBYFFI_CLOSUREPOOL_H +#define RUBYFFI_CLOSUREPOOL_H + +typedef struct ClosurePool_ ClosurePool; +typedef struct Closure_ Closure; + +struct Closure_ { + void* info; /* opaque handle for storing closure-instance specific data */ + void* function; /* closure-instance specific function, called by custom trampoline */ + void* code; /* The native trampoline code location */ + struct ClosurePool_* pool; + Closure* next; +}; + +void rbffi_ClosurePool_Init(VALUE module); + +ClosurePool* rbffi_ClosurePool_New(int closureSize, + bool (*prep)(void* ctx, void *code, Closure* closure, char* errbuf, size_t errbufsize), + void* ctx); + +void rbffi_ClosurePool_Free(ClosurePool *); + +Closure* rbffi_Closure_Alloc(ClosurePool *); +void rbffi_Closure_Free(Closure *); + +void* rbffi_Closure_GetCodeAddress(Closure *); + +#endif /* RUBYFFI_CLOSUREPOOL_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DataConverter.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DataConverter.c new file mode 100644 index 0000000000..2d5b827438 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DataConverter.c @@ -0,0 +1,91 @@ + +#include + +#include +#include "rbffi.h" + +#include "Type.h" +#include "MappedType.h" + + +VALUE rbffi_DataConverterClass = Qnil; +static ID id_native_type_ivar; + +/* + * Get native type. + * @overload native_type(type) + * @param [String, Symbol, Type] type + * @return [Type] + * Get native type from +type+. + * @overload native_type + * @raise {NotImplementedError} This method must be overriden. + */ +static VALUE +conv_native_type(int argc, VALUE* argv, VALUE self) +{ + if (argc == 0) { + if (!rb_ivar_defined(self, id_native_type_ivar)) { + rb_raise(rb_eNotImpError, "native_type method not overridden and no native_type set"); + } + + return rb_ivar_get(self, id_native_type_ivar); + + } else if (argc == 1) { + VALUE type = rbffi_Type_Find(argv[0]); + + rb_ivar_set(self, id_native_type_ivar, type); + + return type; + + } else { + rb_raise(rb_eArgError, "incorrect arguments"); + } +} + +/* + * call-seq: to_native(value, ctx) + * @param value + * @param ctx + * @return [value] + * Convert to a native type. + */ +static VALUE +conv_to_native(VALUE self, VALUE value, VALUE ctx) +{ + return value; +} + +/* + * call-seq: from_native(value, ctx) + * @param value + * @param ctx + * @return [value] + * Convert from a native type. + */ +static VALUE +conv_from_native(VALUE self, VALUE value, VALUE ctx) +{ + return value; +} + + + +void +rbffi_DataConverter_Init(VALUE moduleFFI) +{ + /* + * Document-module: FFI::DataConverter + * This module is used to extend somes classes and give then a common API. + * + * Most of methods defined here must be overriden. + */ + rbffi_DataConverterClass = rb_define_module_under(moduleFFI, "DataConverter"); + + rb_define_method(rbffi_DataConverterClass, "native_type", conv_native_type, -1); + rb_define_method(rbffi_DataConverterClass, "to_native", conv_to_native, 2); + rb_define_method(rbffi_DataConverterClass, "from_native", conv_from_native, 2); + + id_native_type_ivar = rb_intern("@native_type"); +} + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.c new file mode 100644 index 0000000000..4a2ea386d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.c @@ -0,0 +1,339 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#ifndef _MSC_VER +# include +#endif +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__) +# include +# define _WINSOCKAPI_ +# include +# include +#else +# include +#endif +#include +#if defined(_MSC_VER) && !defined(INT8_MIN) +# include "win32/stdint.h" +#endif + +#include + +#include "rbffi.h" +#include "compat.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "DynamicLibrary.h" + +typedef struct LibrarySymbol_ { + Pointer base; + VALUE library; + VALUE name; +} LibrarySymbol; + +static VALUE library_initialize(VALUE self, VALUE libname, VALUE libflags); +static void library_free(Library* lib); + + +static VALUE symbol_allocate(VALUE klass); +static VALUE symbol_new(VALUE library, void* address, VALUE name); +static void symbol_mark(LibrarySymbol* sym); + +static VALUE LibraryClass = Qnil, SymbolClass = Qnil; + +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__) +static void* dl_open(const char* name, int flags); +static void dl_error(char* buf, int size); +#define dl_sym(handle, name) GetProcAddress(handle, name) +#define dl_close(handle) FreeLibrary(handle) +#else +# define dl_open(name, flags) dlopen(name, flags != 0 ? flags : RTLD_LAZY) +# define dl_error(buf, size) do { snprintf(buf, size, "%s", dlerror()); } while(0) +# define dl_sym(handle, name) dlsym(handle, name) +# define dl_close(handle) dlclose(handle) +#endif + +static VALUE +library_allocate(VALUE klass) +{ + Library* library; + return Data_Make_Struct(klass, Library, NULL, library_free, library); +} + +/* + * call-seq: DynamicLibrary.open(libname, libflags) + * @param libname (see #initialize) + * @param libflags (see #initialize) + * @return [FFI::DynamicLibrary] + * @raise {LoadError} if +libname+ cannot be opened + * Open a library. + */ +static VALUE +library_open(VALUE klass, VALUE libname, VALUE libflags) +{ + return library_initialize(library_allocate(klass), libname, libflags); +} + +/* + * call-seq: initialize(libname, libflags) + * @param [String] libname name of library to open + * @param [Fixnum] libflags flags for library to open + * @return [FFI::DynamicLibrary] + * @raise {LoadError} if +libname+ cannot be opened + * A new DynamicLibrary instance. + */ +static VALUE +library_initialize(VALUE self, VALUE libname, VALUE libflags) +{ + Library* library; + int flags; + + Check_Type(libflags, T_FIXNUM); + + Data_Get_Struct(self, Library, library); + flags = libflags != Qnil ? NUM2UINT(libflags) : 0; + + library->handle = dl_open(libname != Qnil ? StringValueCStr(libname) : NULL, flags); + if (library->handle == NULL) { + char errmsg[1024]; + dl_error(errmsg, sizeof(errmsg)); + rb_raise(rb_eLoadError, "Could not open library '%s': %s", + libname != Qnil ? StringValueCStr(libname) : "[current process]", + errmsg); + } +#ifdef __CYGWIN__ + // On Cygwin 1.7.17 "dlsym(dlopen(0,0), 'getpid')" fails. (dlerror: "No such process") + // As a workaround we can use "dlsym(RTLD_DEFAULT, 'getpid')" instead. + // Since 0 == RTLD_DEFAULT we won't call dl_close later. + if (libname == Qnil) { + dl_close(library->handle); + library->handle = RTLD_DEFAULT; + } +#endif + rb_iv_set(self, "@name", libname != Qnil ? libname : rb_str_new2("[current process]")); + return self; +} + +static VALUE +library_dlsym(VALUE self, VALUE name) +{ + Library* library; + void* address = NULL; + Check_Type(name, T_STRING); + + Data_Get_Struct(self, Library, library); + address = dl_sym(library->handle, StringValueCStr(name)); + + return address != NULL ? symbol_new(self, address, name) : Qnil; +} + +/* + * call-seq: last_error + * @return [String] library's last error string + */ +static VALUE +library_dlerror(VALUE self) +{ + char errmsg[1024]; + dl_error(errmsg, sizeof(errmsg)); + return rb_tainted_str_new2(errmsg); +} + +static void +library_free(Library* library) +{ + /* dlclose() on MacOS tends to segfault - avoid it */ +#ifndef __APPLE__ + if (library->handle != NULL) { + dl_close(library->handle); + } +#endif + xfree(library); +} + +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__) +static void* +dl_open(const char* name, int flags) +{ + if (name == NULL) { + return GetModuleHandle(NULL); + } else { + DWORD dwFlags = PathIsRelativeA(name) ? 0 : LOAD_WITH_ALTERED_SEARCH_PATH; + return LoadLibraryExA(name, NULL, dwFlags); + } +} + +static void +dl_error(char* buf, int size) +{ + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), + 0, buf, size, NULL); +} +#endif + +static VALUE +symbol_allocate(VALUE klass) +{ + LibrarySymbol* sym; + VALUE obj = Data_Make_Struct(klass, LibrarySymbol, NULL, -1, sym); + sym->name = Qnil; + sym->library = Qnil; + sym->base.rbParent = Qnil; + + return obj; +} + + +/* + * call-seq: initialize_copy(other) + * @param [Object] other + * @return [nil] + * DO NOT CALL THIS METHOD + */ +static VALUE +symbol_initialize_copy(VALUE self, VALUE other) +{ + rb_raise(rb_eRuntimeError, "cannot duplicate symbol"); + return Qnil; +} + +static VALUE +symbol_new(VALUE library, void* address, VALUE name) +{ + LibrarySymbol* sym; + VALUE obj = Data_Make_Struct(SymbolClass, LibrarySymbol, symbol_mark, -1, sym); + + sym->base.memory.address = address; + sym->base.memory.size = LONG_MAX; + sym->base.memory.typeSize = 1; + sym->base.memory.flags = MEM_RD | MEM_WR; + sym->library = library; + sym->name = name; + + return obj; +} + +static void +symbol_mark(LibrarySymbol* sym) +{ + rb_gc_mark(sym->library); + rb_gc_mark(sym->name); +} + +/* + * call-seq: inspect + * @return [String] + * Inspect. + */ +static VALUE +symbol_inspect(VALUE self) +{ + LibrarySymbol* sym; + char buf[256]; + + Data_Get_Struct(self, LibrarySymbol, sym); + snprintf(buf, sizeof(buf), "#", + StringValueCStr(sym->name), sym->base.memory.address); + return rb_str_new2(buf); +} + +void +rbffi_DynamicLibrary_Init(VALUE moduleFFI) +{ + /* + * Document-class: FFI::DynamicLibrary + */ + LibraryClass = rb_define_class_under(moduleFFI, "DynamicLibrary", rb_cObject); + rb_global_variable(&LibraryClass); + /* + * Document-class: FFI::DynamicLibrary::Symbol < FFI::Pointer + * + * An instance of this class represents a library symbol. It may be a {Pointer pointer} to + * a function or to a variable. + */ + SymbolClass = rb_define_class_under(LibraryClass, "Symbol", rbffi_PointerClass); + rb_global_variable(&SymbolClass); + + /* + * Document-const: FFI::NativeLibrary + * Backward compatibility for FFI::DynamicLibrary + */ + rb_define_const(moduleFFI, "NativeLibrary", LibraryClass); /* backwards compat library */ + rb_define_alloc_func(LibraryClass, library_allocate); + rb_define_singleton_method(LibraryClass, "open", library_open, 2); + rb_define_singleton_method(LibraryClass, "last_error", library_dlerror, 0); + rb_define_method(LibraryClass, "initialize", library_initialize, 2); + /* + * Document-method: find_symbol + * call-seq: find_symbol(name) + * @param [String] name library symbol's name + * @return [FFI::DynamicLibrary::Symbol] library symbol + */ + rb_define_method(LibraryClass, "find_symbol", library_dlsym, 1); + /* + * Document-method: find_function + * call-seq: find_function(name) + * @param [String] name library function's name + * @return [FFI::DynamicLibrary::Symbol] library function symbol + */ + rb_define_method(LibraryClass, "find_function", library_dlsym, 1); + /* + * Document-method: find_variable + * call-seq: find_variable(name) + * @param [String] name library variable's name + * @return [FFI::DynamicLibrary::Symbol] library variable symbol + */ + rb_define_method(LibraryClass, "find_variable", library_dlsym, 1); + rb_define_method(LibraryClass, "last_error", library_dlerror, 0); + rb_define_attr(LibraryClass, "name", 1, 0); + + rb_define_alloc_func(SymbolClass, symbol_allocate); + rb_undef_method(SymbolClass, "new"); + rb_define_method(SymbolClass, "inspect", symbol_inspect, 0); + rb_define_method(SymbolClass, "initialize_copy", symbol_initialize_copy, 1); + +#define DEF(x) rb_define_const(LibraryClass, "RTLD_" #x, UINT2NUM(RTLD_##x)) + DEF(LAZY); + DEF(NOW); + DEF(GLOBAL); + DEF(LOCAL); + DEF(NOLOAD); + DEF(NODELETE); + DEF(FIRST); + DEF(DEEPBIND); + DEF(MEMBER); + DEF(BINDING_MASK); + DEF(LOCATION_MASK); + DEF(ALL_MASK); +#undef DEF + +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.h new file mode 100644 index 0000000000..97bf7bce68 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/DynamicLibrary.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LIBRARY_H +#define _LIBRARY_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* if these aren't defined (eg. windows), we need sensible defaults */ +#ifndef RTLD_LAZY +#define RTLD_LAZY 1 +#endif + +#ifndef RTLD_NOW +#define RTLD_NOW 2 +#endif + +#ifndef RTLD_LOCAL +#define RTLD_LOCAL 4 +#endif + +#ifndef RTLD_GLOBAL +#define RTLD_GLOBAL 8 +#endif + +/* If these aren't defined, they're not supported so define as 0 */ +#ifndef RTLD_NOLOAD +#define RTLD_NOLOAD 0 +#endif + +#ifndef RTLD_NODELETE +#define RTLD_NODELETE 0 +#endif + +#ifndef RTLD_FIRST +#define RTLD_FIRST 0 +#endif + +#ifndef RTLD_DEEPBIND +#define RTLD_DEEPBIND 0 +#endif + +#ifndef RTLD_MEMBER +#define RTLD_MEMBER 0 +#endif + +/* convenience */ +#ifndef RTLD_BINDING_MASK +#define RTLD_BINDING_MASK (RTLD_LAZY | RTLD_NOW) +#endif + +#ifndef RTLD_LOCATION_MASK +#define RTLD_LOCATION_MASK (RTLD_LOCAL | RTLD_GLOBAL) +#endif + +#ifndef RTLD_ALL_MASK +#define RTLD_ALL_MASK (RTLD_BINDING_MASK | RTLD_LOCATION_MASK | RTLD_NOLOAD | RTLD_NODELETE | RTLD_FIRST | RTLD_DEEPBIND | RTLD_MEMBER) +#endif + +typedef struct Library { + void* handle; +} Library; + +extern void rbffi_DynamicLibrary_Init(VALUE ffiModule); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBRARY_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.c new file mode 100644 index 0000000000..9e861ff9e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.c @@ -0,0 +1,1001 @@ +/* + * Copyright (c) 2009-2011 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include +#ifndef _WIN32 +# include +# include +#endif + +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# if !defined(INT8_MIN) +# include "win32/stdint.h" +# endif +#endif +#include +#if defined(HAVE_RUBY_THREAD_H) +#include +#endif + +#include +#if defined(HAVE_NATIVETHREAD) && !defined(_WIN32) +#include +#endif +#include + +#include "rbffi.h" +#include "compat.h" + +#include "AbstractMemory.h" +#include "Pointer.h" +#include "Struct.h" +#include "Platform.h" +#include "Type.h" +#include "LastError.h" +#include "Call.h" +#include "ClosurePool.h" +#include "MappedType.h" +#include "Thread.h" +#include "LongDouble.h" +#include "MethodHandle.h" +#include "Function.h" + +typedef struct Function_ { + Pointer base; + FunctionType* info; + MethodHandle* methodHandle; + bool autorelease; + Closure* closure; + VALUE rbProc; + VALUE rbFunctionInfo; +} Function; + +static void function_mark(Function *); +static void function_free(Function *); +static VALUE function_init(VALUE self, VALUE rbFunctionInfo, VALUE rbProc); +static void callback_invoke(ffi_cif* cif, void* retval, void** parameters, void* user_data); +static bool callback_prep(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize); +static void* callback_with_gvl(void* data); +static VALUE invoke_callback(void* data); +static VALUE save_callback_exception(void* data, VALUE exc); + +#define DEFER_ASYNC_CALLBACK 1 + + +#if defined(DEFER_ASYNC_CALLBACK) +static VALUE async_cb_event(void *); +static VALUE async_cb_call(void *); +#endif + +#ifdef HAVE_RB_THREAD_CALL_WITH_GVL +extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); +#endif + +VALUE rbffi_FunctionClass = Qnil; + +#if defined(DEFER_ASYNC_CALLBACK) +static VALUE async_cb_thread = Qnil; +#endif + +static ID id_call = 0, id_to_native = 0, id_from_native = 0, id_cbtable = 0, id_cb_ref = 0; + +struct gvl_callback { + Closure* closure; + void* retval; + void** parameters; + bool done; + rbffi_frame_t *frame; +#if defined(DEFER_ASYNC_CALLBACK) + struct gvl_callback* next; +# ifndef _WIN32 + pthread_cond_t async_cond; + pthread_mutex_t async_mutex; +# else + HANDLE async_event; +# endif +#endif +}; + + +#if defined(DEFER_ASYNC_CALLBACK) +static struct gvl_callback* async_cb_list = NULL; +# ifndef _WIN32 + static pthread_mutex_t async_cb_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_cond_t async_cb_cond = PTHREAD_COND_INITIALIZER; +# if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + static int async_cb_pipe[2]; +# endif +# else + static HANDLE async_cb_cond; + static CRITICAL_SECTION async_cb_lock; +# if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + static int async_cb_pipe[2]; +# endif +# endif +#endif + + +static VALUE +function_allocate(VALUE klass) +{ + Function *fn; + VALUE obj; + + obj = Data_Make_Struct(klass, Function, function_mark, function_free, fn); + + fn->base.memory.flags = MEM_RD; + fn->base.rbParent = Qnil; + fn->rbProc = Qnil; + fn->rbFunctionInfo = Qnil; + fn->autorelease = true; + + return obj; +} + +static void +function_mark(Function *fn) +{ + rb_gc_mark(fn->base.rbParent); + rb_gc_mark(fn->rbProc); + rb_gc_mark(fn->rbFunctionInfo); +} + +static void +function_free(Function *fn) +{ + if (fn->methodHandle != NULL) { + rbffi_MethodHandle_Free(fn->methodHandle); + } + + if (fn->closure != NULL && fn->autorelease) { + rbffi_Closure_Free(fn->closure); + } + + xfree(fn); +} + +/* + * @param [Type, Symbol] return_type return type for the function + * @param [Array] param_types array of parameters types + * @param [Hash] options see {FFI::FunctionType} for available options + * @return [self] + * A new Function instance. + * + * Define a function from a Proc or a block. + * + * @overload initialize(return_type, param_types, options = {}) { |i| ... } + * @yieldparam i parameters for the function + * @overload initialize(return_type, param_types, proc, options = {}) + * @param [Proc] proc + */ +static VALUE +function_initialize(int argc, VALUE* argv, VALUE self) +{ + + VALUE rbReturnType = Qnil, rbParamTypes = Qnil, rbProc = Qnil, rbOptions = Qnil; + VALUE rbFunctionInfo = Qnil; + VALUE infoArgv[3]; + int nargs; + + nargs = rb_scan_args(argc, argv, "22", &rbReturnType, &rbParamTypes, &rbProc, &rbOptions); + + /* + * Callback with block, + * e.g. Function.new(:int, [ :int ]) { |i| blah } + * or Function.new(:int, [ :int ], { :convention => :stdcall }) { |i| blah } + */ + if (rb_block_given_p()) { + if (nargs > 3) { + rb_raise(rb_eArgError, "cannot create function with both proc/address and block"); + } + rbOptions = rbProc; + rbProc = rb_block_proc(); + } else { + /* Callback with proc, or Function with address + * e.g. Function.new(:int, [ :int ], Proc.new { |i| }) + * Function.new(:int, [ :int ], Proc.new { |i| }, { :convention => :stdcall }) + * Function.new(:int, [ :int ], addr) + * Function.new(:int, [ :int ], addr, { :convention => :stdcall }) + */ + } + + infoArgv[0] = rbReturnType; + infoArgv[1] = rbParamTypes; + infoArgv[2] = rbOptions; + rbFunctionInfo = rb_class_new_instance(rbOptions != Qnil ? 3 : 2, infoArgv, rbffi_FunctionTypeClass); + + function_init(self, rbFunctionInfo, rbProc); + + return self; +} + +/* + * call-seq: initialize_copy(other) + * @return [nil] + * DO NOT CALL THIS METHOD + */ +static VALUE +function_initialize_copy(VALUE self, VALUE other) +{ + rb_raise(rb_eRuntimeError, "cannot duplicate function instances"); + return Qnil; +} + +VALUE +rbffi_Function_NewInstance(VALUE rbFunctionInfo, VALUE rbProc) +{ + return function_init(function_allocate(rbffi_FunctionClass), rbFunctionInfo, rbProc); +} + +VALUE +rbffi_Function_ForProc(VALUE rbFunctionInfo, VALUE proc) +{ + VALUE callback, cbref, cbTable; + Function* fp; + + cbref = RTEST(rb_ivar_defined(proc, id_cb_ref)) ? rb_ivar_get(proc, id_cb_ref) : Qnil; + /* If the first callback reference has the same function function signature, use it */ + if (cbref != Qnil && CLASS_OF(cbref) == rbffi_FunctionClass) { + Data_Get_Struct(cbref, Function, fp); + if (fp->rbFunctionInfo == rbFunctionInfo) { + return cbref; + } + } + + cbTable = RTEST(rb_ivar_defined(proc, id_cbtable)) ? rb_ivar_get(proc, id_cbtable) : Qnil; + if (cbTable != Qnil && (callback = rb_hash_aref(cbTable, rbFunctionInfo)) != Qnil) { + return callback; + } + + /* No existing function for the proc with that signature, create a new one and cache it */ + callback = rbffi_Function_NewInstance(rbFunctionInfo, proc); + if (cbref == Qnil) { + /* If there is no other cb already cached for this proc, we can use the ivar slot */ + rb_ivar_set(proc, id_cb_ref, callback); + } else { + /* The proc instance has been used as more than one type of callback, store extras in a hash */ + cbTable = rb_hash_new(); + rb_ivar_set(proc, id_cbtable, cbTable); + rb_hash_aset(cbTable, rbFunctionInfo, callback); + } + + return callback; +} + +static VALUE +function_init(VALUE self, VALUE rbFunctionInfo, VALUE rbProc) +{ + Function* fn = NULL; + + Data_Get_Struct(self, Function, fn); + + fn->rbFunctionInfo = rbFunctionInfo; + + Data_Get_Struct(fn->rbFunctionInfo, FunctionType, fn->info); + + if (rb_obj_is_kind_of(rbProc, rbffi_PointerClass)) { + Pointer* orig; + Data_Get_Struct(rbProc, Pointer, orig); + fn->base.memory = orig->memory; + fn->base.rbParent = rbProc; + + } else if (rb_obj_is_kind_of(rbProc, rb_cProc) || rb_respond_to(rbProc, id_call)) { + if (fn->info->closurePool == NULL) { + fn->info->closurePool = rbffi_ClosurePool_New(sizeof(ffi_closure), callback_prep, fn->info); + if (fn->info->closurePool == NULL) { + rb_raise(rb_eNoMemError, "failed to create closure pool"); + } + } + +#if defined(DEFER_ASYNC_CALLBACK) + if (async_cb_thread == Qnil) { +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) && defined(_WIN32) + _pipe(async_cb_pipe, 1024, O_BINARY); +#elif !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + pipe(async_cb_pipe); + fcntl(async_cb_pipe[0], F_SETFL, fcntl(async_cb_pipe[0], F_GETFL) | O_NONBLOCK); + fcntl(async_cb_pipe[1], F_SETFL, fcntl(async_cb_pipe[1], F_GETFL) | O_NONBLOCK); +#endif + async_cb_thread = rb_thread_create(async_cb_event, NULL); + } + +#endif + + fn->closure = rbffi_Closure_Alloc(fn->info->closurePool); + fn->closure->info = fn; + fn->base.memory.address = fn->closure->code; + fn->base.memory.size = sizeof(*fn->closure); + fn->autorelease = true; + + } else { + rb_raise(rb_eTypeError, "wrong argument type %s, expected pointer or proc", + rb_obj_classname(rbProc)); + } + + fn->rbProc = rbProc; + + return self; +} + +/* + * call-seq: call(*args) + * @param [Array] args function arguments + * @return [FFI::Type] + * Call the function + */ +static VALUE +function_call(int argc, VALUE* argv, VALUE self) +{ + Function* fn; + + Data_Get_Struct(self, Function, fn); + + return (*fn->info->invoke)(argc, argv, fn->base.memory.address, fn->info); +} + +/* + * call-seq: attach(m, name) + * @param [Module] m + * @param [String] name + * @return [self] + * Attach a Function to the Module +m+ as +name+. + */ +static VALUE +function_attach(VALUE self, VALUE module, VALUE name) +{ + Function* fn; + char var[1024]; + + Data_Get_Struct(self, Function, fn); + + if (fn->info->parameterCount == -1) { + rb_raise(rb_eRuntimeError, "cannot attach variadic functions"); + return Qnil; + } + + if (!rb_obj_is_kind_of(module, rb_cModule)) { + rb_raise(rb_eRuntimeError, "trying to attach function to non-module"); + return Qnil; + } + + if (fn->methodHandle == NULL) { + fn->methodHandle = rbffi_MethodHandle_Alloc(fn->info, fn->base.memory.address); + } + + /* + * Stash the Function in a module variable so it does not get garbage collected + */ + snprintf(var, sizeof(var), "@@%s", StringValueCStr(name)); + rb_cv_set(module, var, self); + + rb_define_singleton_method(module, StringValueCStr(name), + rbffi_MethodHandle_CodeAddress(fn->methodHandle), -1); + + + rb_define_method(module, StringValueCStr(name), + rbffi_MethodHandle_CodeAddress(fn->methodHandle), -1); + + return self; +} + +/* + * call-seq: autorelease = autorelease + * @param [Boolean] autorelease + * @return [self] + * Set +autorelease+ attribute (See {Pointer}). + */ +static VALUE +function_set_autorelease(VALUE self, VALUE autorelease) +{ + Function* fn; + + Data_Get_Struct(self, Function, fn); + + fn->autorelease = RTEST(autorelease); + + return self; +} + +static VALUE +function_autorelease_p(VALUE self) +{ + Function* fn; + + Data_Get_Struct(self, Function, fn); + + return fn->autorelease ? Qtrue : Qfalse; +} + +/* + * call-seq: free + * @return [self] + * Free memory allocated by Function. + */ +static VALUE +function_release(VALUE self) +{ + Function* fn; + + Data_Get_Struct(self, Function, fn); + + if (fn->closure == NULL) { + rb_raise(rb_eRuntimeError, "cannot free function which was not allocated"); + } + + rbffi_Closure_Free(fn->closure); + fn->closure = NULL; + + return self; +} + +static void +callback_invoke(ffi_cif* cif, void* retval, void** parameters, void* user_data) +{ + struct gvl_callback cb = { 0 }; + + cb.closure = (Closure *) user_data; + cb.retval = retval; + cb.parameters = parameters; + cb.done = false; + cb.frame = rbffi_frame_current(); + + if (cb.frame != NULL) cb.frame->exc = Qnil; + if (cb.frame != NULL && cb.frame->has_gvl) { + callback_with_gvl(&cb); + +#if defined(HAVE_RB_THREAD_CALL_WITH_GVL) + } else if (cb.frame != NULL) { + rb_thread_call_with_gvl(callback_with_gvl, &cb); +#endif +#if defined(DEFER_ASYNC_CALLBACK) && !defined(_WIN32) + } else { + bool empty = false; + + pthread_mutex_init(&cb.async_mutex, NULL); + pthread_cond_init(&cb.async_cond, NULL); + + /* Now signal the async callback thread */ + pthread_mutex_lock(&async_cb_mutex); + empty = async_cb_list == NULL; + cb.next = async_cb_list; + async_cb_list = &cb; + +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + pthread_mutex_unlock(&async_cb_mutex); + /* Only signal if the list was empty */ + if (empty) { + char c; + write(async_cb_pipe[1], &c, 1); + } +#else + pthread_cond_signal(&async_cb_cond); + pthread_mutex_unlock(&async_cb_mutex); +#endif + + /* Wait for the thread executing the ruby callback to signal it is done */ + pthread_mutex_lock(&cb.async_mutex); + while (!cb.done) { + pthread_cond_wait(&cb.async_cond, &cb.async_mutex); + } + pthread_mutex_unlock(&cb.async_mutex); + pthread_cond_destroy(&cb.async_cond); + pthread_mutex_destroy(&cb.async_mutex); + +#elif defined(DEFER_ASYNC_CALLBACK) && defined(_WIN32) + } else { + bool empty = false; + + cb.async_event = CreateEvent(NULL, FALSE, FALSE, NULL); + + /* Now signal the async callback thread */ + EnterCriticalSection(&async_cb_lock); + empty = async_cb_list == NULL; + cb.next = async_cb_list; + async_cb_list = &cb; + LeaveCriticalSection(&async_cb_lock); + +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + /* Only signal if the list was empty */ + if (empty) { + char c; + write(async_cb_pipe[1], &c, 1); + } +#else + SetEvent(async_cb_cond); +#endif + + /* Wait for the thread executing the ruby callback to signal it is done */ + WaitForSingleObject(cb.async_event, INFINITE); + CloseHandle(cb.async_event); +#endif + } +} + +#if defined(DEFER_ASYNC_CALLBACK) +struct async_wait { + void* cb; + bool stop; +}; + +static void * async_cb_wait(void *); +static void async_cb_stop(void *); + +#if defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL) +static VALUE +async_cb_event(void* unused) +{ + struct async_wait w = { 0 }; + + w.stop = false; + while (!w.stop) { +#if defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL) + rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w); +#else + rb_thread_blocking_region(async_cb_wait, &w, async_cb_stop, &w); +#endif + if (w.cb != NULL) { + /* Start up a new ruby thread to run the ruby callback */ + rb_thread_create(async_cb_call, w.cb); + } + } + + return Qnil; +} + +#elif defined(_WIN32) +static VALUE +async_cb_event(void* unused) +{ + while (true) { + struct gvl_callback* cb; + char buf[64]; + fd_set rfds; + + FD_ZERO(&rfds); + FD_SET(async_cb_pipe[0], &rfds); + rb_thread_select(async_cb_pipe[0] + 1, &rfds, NULL, NULL, NULL); + read(async_cb_pipe[0], buf, sizeof(buf)); + + EnterCriticalSection(&async_cb_lock); + cb = async_cb_list; + async_cb_list = NULL; + LeaveCriticalSection(&async_cb_lock); + + while (cb != NULL) { + struct gvl_callback* next = cb->next; + /* Start up a new ruby thread to run the ruby callback */ + rb_thread_create(async_cb_call, cb); + cb = next; + } + } + + return Qnil; +} +#else +static VALUE +async_cb_event(void* unused) +{ + while (true) { + struct gvl_callback* cb; + char buf[64]; + + if (read(async_cb_pipe[0], buf, sizeof(buf)) < 0) { + rb_thread_wait_fd(async_cb_pipe[0]); + while (read(async_cb_pipe[0], buf, sizeof (buf)) < 0) { + if (rb_io_wait_readable(async_cb_pipe[0]) != Qtrue) { + return Qfalse; + } + } + } + + pthread_mutex_lock(&async_cb_mutex); + cb = async_cb_list; + async_cb_list = NULL; + pthread_mutex_unlock(&async_cb_mutex); + + while (cb != NULL) { + struct gvl_callback* next = cb->next; + /* Start up a new ruby thread to run the ruby callback */ + rb_thread_create(async_cb_call, cb); + cb = next; + } + } + + return Qnil; +} +#endif + +#ifdef _WIN32 +static void * +async_cb_wait(void *data) +{ + struct async_wait* w = (struct async_wait *) data; + + w->cb = NULL; + + EnterCriticalSection(&async_cb_lock); + + while (!w->stop && async_cb_list == NULL) { + LeaveCriticalSection(&async_cb_lock); + WaitForSingleObject(async_cb_cond, INFINITE); + EnterCriticalSection(&async_cb_lock); + } + + if (async_cb_list != NULL) { + w->cb = async_cb_list; + async_cb_list = async_cb_list->next; + } + + LeaveCriticalSection(&async_cb_lock); + + return NULL; +} + +static void +async_cb_stop(void *data) +{ + struct async_wait* w = (struct async_wait *) data; + + EnterCriticalSection(&async_cb_lock); + w->stop = true; + LeaveCriticalSection(&async_cb_lock); + SetEvent(async_cb_cond); +} + +#else +static void * +async_cb_wait(void *data) +{ + struct async_wait* w = (struct async_wait *) data; + + w->cb = NULL; + + pthread_mutex_lock(&async_cb_mutex); + + while (!w->stop && async_cb_list == NULL) { + pthread_cond_wait(&async_cb_cond, &async_cb_mutex); + } + + if (async_cb_list != NULL) { + w->cb = async_cb_list; + async_cb_list = async_cb_list->next; + } + + pthread_mutex_unlock(&async_cb_mutex); + + return NULL; +} + +static void +async_cb_stop(void *data) +{ + struct async_wait* w = (struct async_wait *) data; + + pthread_mutex_lock(&async_cb_mutex); + w->stop = true; + pthread_cond_signal(&async_cb_cond); + pthread_mutex_unlock(&async_cb_mutex); +} +#endif + +static VALUE +async_cb_call(void *data) +{ + struct gvl_callback* cb = (struct gvl_callback *) data; + + callback_with_gvl(data); + + /* Signal the original native thread that the ruby code has completed */ +#ifdef _WIN32 + SetEvent(cb->async_event); +#else + pthread_mutex_lock(&cb->async_mutex); + cb->done = true; + pthread_cond_signal(&cb->async_cond); + pthread_mutex_unlock(&cb->async_mutex); +#endif + + return Qnil; +} + +#endif + +static void * +callback_with_gvl(void* data) +{ + rb_rescue2(invoke_callback, (VALUE) data, save_callback_exception, (VALUE) data, rb_eException, (VALUE) 0); + return NULL; +} + +static VALUE +invoke_callback(void* data) +{ + struct gvl_callback* cb = (struct gvl_callback *) data; + + Function* fn = (Function *) cb->closure->info; + FunctionType *cbInfo = fn->info; + Type* returnType = cbInfo->returnType; + void* retval = cb->retval; + void** parameters = cb->parameters; + VALUE* rbParams; + VALUE rbReturnType = cbInfo->rbReturnType; + VALUE rbReturnValue; + int i; + + rbParams = ALLOCA_N(VALUE, cbInfo->parameterCount); + for (i = 0; i < cbInfo->parameterCount; ++i) { + VALUE param; + Type* paramType = cbInfo->parameterTypes[i]; + VALUE rbParamType = rb_ary_entry(cbInfo->rbParameterTypes, i); + + if (unlikely(paramType->nativeType == NATIVE_MAPPED)) { + rbParamType = ((MappedType *) paramType)->rbType; + paramType = ((MappedType *) paramType)->type; + } + + switch (paramType->nativeType) { + case NATIVE_INT8: + param = INT2NUM(*(int8_t *) parameters[i]); + break; + case NATIVE_UINT8: + param = UINT2NUM(*(uint8_t *) parameters[i]); + break; + case NATIVE_INT16: + param = INT2NUM(*(int16_t *) parameters[i]); + break; + case NATIVE_UINT16: + param = UINT2NUM(*(uint16_t *) parameters[i]); + break; + case NATIVE_INT32: + param = INT2NUM(*(int32_t *) parameters[i]); + break; + case NATIVE_UINT32: + param = UINT2NUM(*(uint32_t *) parameters[i]); + break; + case NATIVE_INT64: + param = LL2NUM(*(int64_t *) parameters[i]); + break; + case NATIVE_UINT64: + param = ULL2NUM(*(uint64_t *) parameters[i]); + break; + case NATIVE_LONG: + param = LONG2NUM(*(long *) parameters[i]); + break; + case NATIVE_ULONG: + param = ULONG2NUM(*(unsigned long *) parameters[i]); + break; + case NATIVE_FLOAT32: + param = rb_float_new(*(float *) parameters[i]); + break; + case NATIVE_FLOAT64: + param = rb_float_new(*(double *) parameters[i]); + break; + case NATIVE_LONGDOUBLE: + param = rbffi_longdouble_new(*(long double *) parameters[i]); + break; + case NATIVE_STRING: + param = (*(void **) parameters[i] != NULL) ? rb_tainted_str_new2(*(char **) parameters[i]) : Qnil; + break; + case NATIVE_POINTER: + param = rbffi_Pointer_NewInstance(*(void **) parameters[i]); + break; + case NATIVE_BOOL: + param = (*(uint8_t *) parameters[i]) ? Qtrue : Qfalse; + break; + + case NATIVE_FUNCTION: + case NATIVE_CALLBACK: + case NATIVE_STRUCT: + param = rbffi_NativeValue_ToRuby(paramType, rbParamType, parameters[i]); + break; + + default: + param = Qnil; + break; + } + + /* Convert the native value into a custom ruby value */ + if (unlikely(cbInfo->parameterTypes[i]->nativeType == NATIVE_MAPPED)) { + VALUE values[] = { param, Qnil }; + param = rb_funcall2(((MappedType *) cbInfo->parameterTypes[i])->rbConverter, id_from_native, 2, values); + } + + rbParams[i] = param; + } + + rbReturnValue = rb_funcall2(fn->rbProc, id_call, cbInfo->parameterCount, rbParams); + + if (unlikely(returnType->nativeType == NATIVE_MAPPED)) { + VALUE values[] = { rbReturnValue, Qnil }; + rbReturnValue = rb_funcall2(((MappedType *) returnType)->rbConverter, id_to_native, 2, values); + rbReturnType = ((MappedType *) returnType)->rbType; + returnType = ((MappedType* ) returnType)->type; + } + + if (rbReturnValue == Qnil || TYPE(rbReturnValue) == T_NIL) { + memset(retval, 0, returnType->ffiType->size); + } else switch (returnType->nativeType) { + case NATIVE_INT8: + case NATIVE_INT16: + case NATIVE_INT32: + *((ffi_sarg *) retval) = NUM2INT(rbReturnValue); + break; + case NATIVE_UINT8: + case NATIVE_UINT16: + case NATIVE_UINT32: + *((ffi_arg *) retval) = NUM2UINT(rbReturnValue); + break; + case NATIVE_INT64: + *((int64_t *) retval) = NUM2LL(rbReturnValue); + break; + case NATIVE_UINT64: + *((uint64_t *) retval) = NUM2ULL(rbReturnValue); + break; + case NATIVE_LONG: + *((ffi_sarg *) retval) = NUM2LONG(rbReturnValue); + break; + case NATIVE_ULONG: + *((ffi_arg *) retval) = NUM2ULONG(rbReturnValue); + break; + case NATIVE_FLOAT32: + *((float *) retval) = (float) NUM2DBL(rbReturnValue); + break; + case NATIVE_FLOAT64: + *((double *) retval) = NUM2DBL(rbReturnValue); + break; + case NATIVE_POINTER: + if (TYPE(rbReturnValue) == T_DATA && rb_obj_is_kind_of(rbReturnValue, rbffi_PointerClass)) { + *((void **) retval) = ((AbstractMemory *) DATA_PTR(rbReturnValue))->address; + } else { + /* Default to returning NULL if not a value pointer object. handles nil case as well */ + *((void **) retval) = NULL; + } + break; + + case NATIVE_BOOL: + *((ffi_arg *) retval) = rbReturnValue == Qtrue; + break; + + case NATIVE_FUNCTION: + case NATIVE_CALLBACK: + if (TYPE(rbReturnValue) == T_DATA && rb_obj_is_kind_of(rbReturnValue, rbffi_PointerClass)) { + + *((void **) retval) = ((AbstractMemory *) DATA_PTR(rbReturnValue))->address; + + } else if (rb_obj_is_kind_of(rbReturnValue, rb_cProc) || rb_respond_to(rbReturnValue, id_call)) { + VALUE function; + + function = rbffi_Function_ForProc(rbReturnType, rbReturnValue); + + *((void **) retval) = ((AbstractMemory *) DATA_PTR(function))->address; + } else { + *((void **) retval) = NULL; + } + break; + + case NATIVE_STRUCT: + if (TYPE(rbReturnValue) == T_DATA && rb_obj_is_kind_of(rbReturnValue, rbffi_StructClass)) { + AbstractMemory* memory = ((Struct *) DATA_PTR(rbReturnValue))->pointer; + + if (memory->address != NULL) { + memcpy(retval, memory->address, returnType->ffiType->size); + + } else { + memset(retval, 0, returnType->ffiType->size); + } + + } else { + memset(retval, 0, returnType->ffiType->size); + } + break; + + default: + *((ffi_arg *) retval) = 0; + break; + } + + return Qnil; +} + +static VALUE +save_callback_exception(void* data, VALUE exc) +{ + struct gvl_callback* cb = (struct gvl_callback *) data; + + memset(cb->retval, 0, ((Function *) cb->closure->info)->info->returnType->ffiType->size); + if (cb->frame != NULL) cb->frame->exc = exc; + + return Qnil; +} + +static bool +callback_prep(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize) +{ + FunctionType* fnInfo = (FunctionType *) ctx; + ffi_status ffiStatus; + + ffiStatus = ffi_prep_closure(code, &fnInfo->ffi_cif, callback_invoke, closure); + if (ffiStatus != FFI_OK) { + snprintf(errmsg, errmsgsize, "ffi_prep_closure failed. status=%#x", ffiStatus); + return false; + } + + return true; +} + +void +rbffi_Function_Init(VALUE moduleFFI) +{ + rbffi_FunctionInfo_Init(moduleFFI); + /* + * Document-class: FFI::Function < FFI::Pointer + */ + rbffi_FunctionClass = rb_define_class_under(moduleFFI, "Function", rbffi_PointerClass); + + rb_global_variable(&rbffi_FunctionClass); + rb_define_alloc_func(rbffi_FunctionClass, function_allocate); + + rb_define_method(rbffi_FunctionClass, "initialize", function_initialize, -1); + rb_define_method(rbffi_FunctionClass, "initialize_copy", function_initialize_copy, 1); + rb_define_method(rbffi_FunctionClass, "call", function_call, -1); + rb_define_method(rbffi_FunctionClass, "attach", function_attach, 2); + rb_define_method(rbffi_FunctionClass, "free", function_release, 0); + rb_define_method(rbffi_FunctionClass, "autorelease=", function_set_autorelease, 1); + /* + * call-seq: autorelease + * @return [Boolean] + * Get +autorelease+ attribute. + * Synonymous for {#autorelease?}. + */ + rb_define_method(rbffi_FunctionClass, "autorelease", function_autorelease_p, 0); + /* + * call-seq: autorelease? + * @return [Boolean] +autorelease+ attribute + * Get +autorelease+ attribute. + */ + rb_define_method(rbffi_FunctionClass, "autorelease?", function_autorelease_p, 0); + + id_call = rb_intern("call"); + id_cbtable = rb_intern("@__ffi_callback_table__"); + id_cb_ref = rb_intern("@__ffi_callback__"); + id_to_native = rb_intern("to_native"); + id_from_native = rb_intern("from_native"); +#if defined(_WIN32) + InitializeCriticalSection(&async_cb_lock); + async_cb_cond = CreateEvent(NULL, FALSE, FALSE, NULL); +#endif +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.h new file mode 100644 index 0000000000..052aaf6a28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Function.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_FUNCTION_H +#define RBFFI_FUNCTION_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _MSC_VER +# include +#else +# include "win32/stdbool.h" +#endif + +#include + +typedef struct FunctionType_ FunctionType; + +#include "Type.h" +#include "Call.h" +#include "ClosurePool.h" + +struct FunctionType_ { + Type type; /* The native type of a FunctionInfo object */ + VALUE rbReturnType; + VALUE rbParameterTypes; + + Type* returnType; + Type** parameterTypes; + NativeType* nativeParameterTypes; + ffi_type* ffiReturnType; + ffi_type** ffiParameterTypes; + ffi_cif ffi_cif; + Invoker invoke; + ClosurePool* closurePool; + int parameterCount; + int flags; + ffi_abi abi; + int callbackCount; + VALUE* callbackParameters; + VALUE rbEnums; + bool ignoreErrno; + bool blocking; + bool hasStruct; +}; + +extern VALUE rbffi_FunctionTypeClass, rbffi_FunctionClass; + +void rbffi_Function_Init(VALUE moduleFFI); +VALUE rbffi_Function_NewInstance(VALUE functionInfo, VALUE proc); +VALUE rbffi_Function_ForProc(VALUE cbInfo, VALUE proc); +void rbffi_FunctionInfo_Init(VALUE moduleFFI); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_FUNCTION_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/FunctionInfo.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/FunctionInfo.c new file mode 100644 index 0000000000..8085c870eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/FunctionInfo.c @@ -0,0 +1,271 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * Copyright (C) 2009 Andrea Fazzi + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +#endif +#include +#include + +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +#endif + +#include +#include + +#include +#include "rbffi.h" +#include "compat.h" + +#include "AbstractMemory.h" +#include "Types.h" +#include "Type.h" +#include "StructByValue.h" +#include "Function.h" + +static VALUE fntype_allocate(VALUE klass); +static VALUE fntype_initialize(int argc, VALUE* argv, VALUE self); +static void fntype_mark(FunctionType*); +static void fntype_free(FunctionType *); + +VALUE rbffi_FunctionTypeClass = Qnil; + +static VALUE +fntype_allocate(VALUE klass) +{ + FunctionType* fnInfo; + VALUE obj = Data_Make_Struct(klass, FunctionType, fntype_mark, fntype_free, fnInfo); + + fnInfo->type.ffiType = &ffi_type_pointer; + fnInfo->type.nativeType = NATIVE_FUNCTION; + fnInfo->rbReturnType = Qnil; + fnInfo->rbParameterTypes = Qnil; + fnInfo->rbEnums = Qnil; + fnInfo->invoke = rbffi_CallFunction; + fnInfo->closurePool = NULL; + + return obj; +} + +static void +fntype_mark(FunctionType* fnInfo) +{ + rb_gc_mark(fnInfo->rbReturnType); + rb_gc_mark(fnInfo->rbParameterTypes); + rb_gc_mark(fnInfo->rbEnums); + if (fnInfo->callbackCount > 0 && fnInfo->callbackParameters != NULL) { + rb_gc_mark_locations(&fnInfo->callbackParameters[0], &fnInfo->callbackParameters[fnInfo->callbackCount]); + } +} + +static void +fntype_free(FunctionType* fnInfo) +{ + xfree(fnInfo->parameterTypes); + xfree(fnInfo->ffiParameterTypes); + xfree(fnInfo->nativeParameterTypes); + xfree(fnInfo->callbackParameters); + if (fnInfo->closurePool != NULL) { + rbffi_ClosurePool_Free(fnInfo->closurePool); + } + xfree(fnInfo); +} + +/* + * call-seq: initialize(return_type, param_types, options={}) + * @param [Type, Symbol] return_type return type for the function + * @param [Array] param_types array of parameters types + * @param [Hash] options + * @option options [Boolean] :blocking set to true if the C function is a blocking call + * @option options [Symbol] :convention calling convention see {FFI::Library#calling_convention} + * @option options [FFI::Enums] :enums + * @return [self] + * A new FunctionType instance. + */ +static VALUE +fntype_initialize(int argc, VALUE* argv, VALUE self) +{ + FunctionType *fnInfo; + ffi_status status; + VALUE rbReturnType = Qnil, rbParamTypes = Qnil, rbOptions = Qnil; + VALUE rbEnums = Qnil, rbConvention = Qnil, rbBlocking = Qnil; +#if defined(X86_WIN32) + VALUE rbConventionStr; +#endif + int i, nargs; + + nargs = rb_scan_args(argc, argv, "21", &rbReturnType, &rbParamTypes, &rbOptions); + if (nargs >= 3 && rbOptions != Qnil) { + rbConvention = rb_hash_aref(rbOptions, ID2SYM(rb_intern("convention"))); + rbEnums = rb_hash_aref(rbOptions, ID2SYM(rb_intern("enums"))); + rbBlocking = rb_hash_aref(rbOptions, ID2SYM(rb_intern("blocking"))); + } + + Check_Type(rbParamTypes, T_ARRAY); + + Data_Get_Struct(self, FunctionType, fnInfo); + fnInfo->parameterCount = (int) RARRAY_LEN(rbParamTypes); + fnInfo->parameterTypes = xcalloc(fnInfo->parameterCount, sizeof(*fnInfo->parameterTypes)); + fnInfo->ffiParameterTypes = xcalloc(fnInfo->parameterCount, sizeof(ffi_type *)); + fnInfo->nativeParameterTypes = xcalloc(fnInfo->parameterCount, sizeof(*fnInfo->nativeParameterTypes)); + fnInfo->rbParameterTypes = rb_ary_new2(fnInfo->parameterCount); + fnInfo->rbEnums = rbEnums; + fnInfo->blocking = RTEST(rbBlocking); + fnInfo->hasStruct = false; + + for (i = 0; i < fnInfo->parameterCount; ++i) { + VALUE entry = rb_ary_entry(rbParamTypes, i); + VALUE type = rbffi_Type_Lookup(entry); + + if (!RTEST(type)) { + VALUE typeName = rb_funcall2(entry, rb_intern("inspect"), 0, NULL); + rb_raise(rb_eTypeError, "Invalid parameter type (%s)", RSTRING_PTR(typeName)); + } + + if (rb_obj_is_kind_of(type, rbffi_FunctionTypeClass)) { + REALLOC_N(fnInfo->callbackParameters, VALUE, fnInfo->callbackCount + 1); + fnInfo->callbackParameters[fnInfo->callbackCount++] = type; + } + + if (rb_obj_is_kind_of(type, rbffi_StructByValueClass)) { + fnInfo->hasStruct = true; + } + + rb_ary_push(fnInfo->rbParameterTypes, type); + Data_Get_Struct(type, Type, fnInfo->parameterTypes[i]); + fnInfo->ffiParameterTypes[i] = fnInfo->parameterTypes[i]->ffiType; + fnInfo->nativeParameterTypes[i] = fnInfo->parameterTypes[i]->nativeType; + } + + fnInfo->rbReturnType = rbffi_Type_Lookup(rbReturnType); + if (!RTEST(fnInfo->rbReturnType)) { + VALUE typeName = rb_funcall2(rbReturnType, rb_intern("inspect"), 0, NULL); + rb_raise(rb_eTypeError, "Invalid return type (%s)", RSTRING_PTR(typeName)); + } + + if (rb_obj_is_kind_of(fnInfo->rbReturnType, rbffi_StructByValueClass)) { + fnInfo->hasStruct = true; + } + + Data_Get_Struct(fnInfo->rbReturnType, Type, fnInfo->returnType); + fnInfo->ffiReturnType = fnInfo->returnType->ffiType; + + +#if defined(X86_WIN32) + rbConventionStr = (rbConvention != Qnil) ? rb_funcall2(rbConvention, rb_intern("to_s"), 0, NULL) : Qnil; + fnInfo->abi = (rbConventionStr != Qnil && strcmp(StringValueCStr(rbConventionStr), "stdcall") == 0) + ? FFI_STDCALL : FFI_DEFAULT_ABI; +#else + fnInfo->abi = FFI_DEFAULT_ABI; +#endif + + status = ffi_prep_cif(&fnInfo->ffi_cif, fnInfo->abi, fnInfo->parameterCount, + fnInfo->ffiReturnType, fnInfo->ffiParameterTypes); + switch (status) { + case FFI_BAD_ABI: + rb_raise(rb_eArgError, "Invalid ABI specified"); + case FFI_BAD_TYPEDEF: + rb_raise(rb_eArgError, "Invalid argument type specified"); + case FFI_OK: + break; + default: + rb_raise(rb_eArgError, "Unknown FFI error"); + } + + fnInfo->invoke = rbffi_GetInvoker(fnInfo); + + return self; +} + +/* + * call-seq: result_type + * @return [Type] + * Get the return type of the function type + */ +static VALUE +fntype_result_type(VALUE self) +{ + FunctionType* ft; + + Data_Get_Struct(self, FunctionType, ft); + + return ft->rbReturnType; +} + +/* + * call-seq: param_types + * @return [Array] + * Get parameters types. + */ +static VALUE +fntype_param_types(VALUE self) +{ + FunctionType* ft; + + Data_Get_Struct(self, FunctionType, ft); + + return rb_ary_dup(ft->rbParameterTypes); +} + +void +rbffi_FunctionInfo_Init(VALUE moduleFFI) +{ + VALUE ffi_Type; + + ffi_Type = rbffi_TypeClass; + + /* + * Document-class: FFI::FunctionType < FFI::Type + */ + rbffi_FunctionTypeClass = rb_define_class_under(moduleFFI, "FunctionType",ffi_Type); + rb_global_variable(&rbffi_FunctionTypeClass); + /* + * Document-const: FFI::CallbackInfo = FFI::FunctionType + */ + rb_define_const(moduleFFI, "CallbackInfo", rbffi_FunctionTypeClass); + /* + * Document-const: FFI::FunctionInfo = FFI::FunctionType + */ + rb_define_const(moduleFFI, "FunctionInfo", rbffi_FunctionTypeClass); + /* + * Document-const: FFI::Type::Function = FFI::FunctionType + */ + rb_define_const(ffi_Type, "Function", rbffi_FunctionTypeClass); + + rb_define_alloc_func(rbffi_FunctionTypeClass, fntype_allocate); + rb_define_method(rbffi_FunctionTypeClass, "initialize", fntype_initialize, -1); + rb_define_method(rbffi_FunctionTypeClass, "result_type", fntype_result_type, 0); + rb_define_method(rbffi_FunctionTypeClass, "param_types", fntype_param_types, 0); + +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.c new file mode 100644 index 0000000000..8a460f3b4a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.c @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (C) 2009 Aman Gupta + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +#endif +#include +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +#endif +#include +#include + +#include "LastError.h" + +#if defined(HAVE_NATIVETHREAD) && !defined(_WIN32) && !defined(__WIN32__) +# include +# define USE_PTHREAD_LOCAL +#endif + +#if defined(__CYGWIN__) +typedef uint32_t DWORD; +DWORD __stdcall GetLastError(void); +void __stdcall SetLastError(DWORD); +#endif + +typedef struct ThreadData { + int td_errno; +#if defined(_WIN32) || defined(__CYGWIN__) + DWORD td_winapi_errno; +#endif +} ThreadData; + +#if defined(USE_PTHREAD_LOCAL) +static pthread_key_t threadDataKey; +#endif + +static inline ThreadData* thread_data_get(void); + +#if defined(USE_PTHREAD_LOCAL) + +static ThreadData* +thread_data_init(void) +{ + ThreadData* td = xcalloc(1, sizeof(ThreadData)); + + pthread_setspecific(threadDataKey, td); + + return td; +} + + +static inline ThreadData* +thread_data_get(void) +{ + ThreadData* td = pthread_getspecific(threadDataKey); + return td != NULL ? td : thread_data_init(); +} + +static void +thread_data_free(void *ptr) +{ + xfree(ptr); +} + +#else +static ID id_thread_data; + +static ThreadData* +thread_data_init(void) +{ + ThreadData* td; + VALUE obj; + + obj = Data_Make_Struct(rb_cObject, ThreadData, NULL, -1, td); + rb_thread_local_aset(rb_thread_current(), id_thread_data, obj); + + return td; +} + +static inline ThreadData* +thread_data_get() +{ + VALUE obj = rb_thread_local_aref(rb_thread_current(), id_thread_data); + + if (obj != Qnil && TYPE(obj) == T_DATA) { + return (ThreadData *) DATA_PTR(obj); + } + + return thread_data_init(); +} + +#endif + + +/* + * call-seq: error + * @return [Numeric] + * Get +errno+ value. + */ +static VALUE +get_last_error(VALUE self) +{ + return INT2NUM(thread_data_get()->td_errno); +} + +#if defined(_WIN32) || defined(__CYGWIN__) +/* + * call-seq: winapi_error + * @return [Numeric] + * Get +GetLastError()+ value. Only Windows or Cygwin. + */ +static VALUE +get_last_winapi_error(VALUE self) +{ + return INT2NUM(thread_data_get()->td_winapi_errno); +} +#endif + + +/* + * call-seq: error(error) + * @param [Numeric] error + * @return [nil] + * Set +errno+ value. + */ +static VALUE +set_last_error(VALUE self, VALUE error) +{ + +#ifdef _WIN32 + SetLastError(NUM2INT(error)); +#else + errno = NUM2INT(error); +#endif + + return Qnil; +} + +#if defined(_WIN32) || defined(__CYGWIN__) +/* + * call-seq: error(error) + * @param [Numeric] error + * @return [nil] + * Set +GetLastError()+ value. Only on Windows and Cygwin. + */ +static VALUE +set_last_winapi_error(VALUE self, VALUE error) +{ + SetLastError(NUM2INT(error)); + return Qnil; +} +#endif + + +void +rbffi_save_errno(void) +{ + int error = 0; +#ifdef _WIN32 + error = GetLastError(); +#else + error = errno; +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) + DWORD winapi_error = GetLastError(); + thread_data_get()->td_winapi_errno = winapi_error; +#endif + + thread_data_get()->td_errno = error; +} + +void +rbffi_LastError_Init(VALUE moduleFFI) +{ + /* + * Document-module: FFI::LastError + * This module defines a couple of method to set and get +errno+ + * for current thread. + */ + VALUE moduleError = rb_define_module_under(moduleFFI, "LastError"); + + rb_define_module_function(moduleError, "error", get_last_error, 0); + rb_define_module_function(moduleError, "error=", set_last_error, 1); + +#if defined(_WIN32) || defined(__CYGWIN__) + rb_define_module_function(moduleError, "winapi_error", get_last_winapi_error, 0); + rb_define_module_function(moduleError, "winapi_error=", set_last_winapi_error, 1); +#endif + +#if defined(USE_PTHREAD_LOCAL) + pthread_key_create(&threadDataKey, thread_data_free); +#else + id_thread_data = rb_intern("ffi_thread_local_data"); +#endif /* USE_PTHREAD_LOCAL */ +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.h new file mode 100644 index 0000000000..ee1dfbb2d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LastError.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_LASTERROR_H +#define RBFFI_LASTERROR_H + +#ifdef __cplusplus +extern "C" { +#endif + + +void rbffi_LastError_Init(VALUE moduleFFI); + +void rbffi_save_errno(void); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_LASTERROR_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.c new file mode 100644 index 0000000000..a21883afed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.c @@ -0,0 +1,63 @@ +#include "LongDouble.h" +#include +#include +#include + +#if defined (__CYGWIN__) || defined(__INTERIX) +# define strtold(str, endptr) ((long double) strtod((str), (endptr))) +#endif /* defined (__CYGWIN__) */ + +static VALUE rb_cBigDecimal = Qnil; +static VALUE bigdecimal_load(VALUE unused); +static VALUE bigdecimal_failed(VALUE value); + +VALUE +rbffi_longdouble_new(long double ld) +{ + if (!RTEST(rb_cBigDecimal)) { + /* allow fallback if the bigdecimal library is unavailable in future ruby versions */ + rb_cBigDecimal = rb_rescue(bigdecimal_load, Qnil, bigdecimal_failed, rb_cObject); + } + + if (RTEST(rb_cBigDecimal) && rb_cBigDecimal != rb_cObject) { + char buf[128]; + return rb_funcall(rb_cBigDecimal, rb_intern("new"), 1, rb_str_new(buf, sprintf(buf, "%.35Le", ld))); + } + + /* Fall through to handling as a float */ + return rb_float_new(ld); +} + +long double +rbffi_num2longdouble(VALUE value) +{ + if (TYPE(value) == T_FLOAT) { + return rb_num2dbl(value); + } + + if (!RTEST(rb_cBigDecimal) && rb_const_defined(rb_cObject, rb_intern("BigDecimal"))) { + rb_cBigDecimal = rb_const_get(rb_cObject, rb_intern("BigDecimal")); + } + + if (RTEST(rb_cBigDecimal) && rb_cBigDecimal != rb_cObject && RTEST(rb_obj_is_kind_of(value, rb_cBigDecimal))) { + VALUE s = rb_funcall(value, rb_intern("to_s"), 1, rb_str_new2("E")); + return strtold(RSTRING_PTR(s), NULL); + } + + /* Fall through to handling as a float */ + return rb_num2dbl(value); +} + + +static VALUE +bigdecimal_load(VALUE unused) +{ + rb_require("bigdecimal"); + return rb_const_get(rb_cObject, rb_intern("BigDecimal")); +} + +static VALUE +bigdecimal_failed(VALUE value) +{ + return value; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.h new file mode 100644 index 0000000000..2e52ccb33d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/LongDouble.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2012, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_LONGDOUBLE_H +#define RBFFI_LONGDOUBLE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _MSC_VER +#define strtold strtod +#endif + +extern VALUE rbffi_longdouble_new(long double ld); +extern long double rbffi_num2longdouble(VALUE value); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_LONGDOUBLE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Makefile b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Makefile new file mode 100644 index 0000000000..debcf0b2b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Makefile @@ -0,0 +1,263 @@ + +SHELL = /bin/sh + +# V=0 quiet, V=1 verbose. other values don't work. +V = 0 +Q1 = $(V:1=) +Q = $(Q1:0=@) +ECHO1 = $(V:1=@ :) +ECHO = $(ECHO1:0=@ echo) +NULLCMD = : + +#### Start of system configuration section. #### + +srcdir = . +topdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 +hdrdir = $(topdir) +arch_hdrdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux +PATH_SEPARATOR = : +VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby +prefix = $(DESTDIR)/home/travis/.rvm/rubies/ruby-2.5.3 +rubysitearchprefix = $(rubylibprefix)/$(sitearch) +rubyarchprefix = $(rubylibprefix)/$(arch) +rubylibprefix = $(libdir)/$(RUBY_BASE_NAME) +exec_prefix = $(prefix) +vendorarchhdrdir = $(vendorhdrdir)/$(sitearch) +sitearchhdrdir = $(sitehdrdir)/$(sitearch) +rubyarchhdrdir = $(rubyhdrdir)/$(arch) +vendorhdrdir = $(rubyhdrdir)/vendor_ruby +sitehdrdir = $(rubyhdrdir)/site_ruby +rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME) +vendorarchdir = $(vendorlibdir)/$(sitearch) +vendorlibdir = $(vendordir)/$(ruby_version) +vendordir = $(rubylibprefix)/vendor_ruby +sitearchdir = $(DESTDIR)./.gem.20200317-4716-whh5hw +sitelibdir = $(DESTDIR)./.gem.20200317-4716-whh5hw +sitedir = $(rubylibprefix)/site_ruby +rubyarchdir = $(rubylibdir)/$(arch) +rubylibdir = $(rubylibprefix)/$(ruby_version) +sitearchincludedir = $(includedir)/$(sitearch) +archincludedir = $(includedir)/$(arch) +sitearchlibdir = $(libdir)/$(sitearch) +archlibdir = $(libdir)/$(arch) +ridir = $(datarootdir)/$(RI_BASE_NAME) +mandir = $(datarootdir)/man +localedir = $(datarootdir)/locale +libdir = $(exec_prefix)/lib +psdir = $(docdir) +pdfdir = $(docdir) +dvidir = $(docdir) +htmldir = $(docdir) +infodir = $(datarootdir)/info +docdir = $(datarootdir)/doc/$(PACKAGE) +oldincludedir = $(DESTDIR)/usr/include +includedir = $(prefix)/include +localstatedir = $(prefix)/var +sharedstatedir = $(prefix)/com +sysconfdir = $(DESTDIR)/etc +datadir = $(datarootdir) +datarootdir = $(prefix)/share +libexecdir = $(exec_prefix)/libexec +sbindir = $(exec_prefix)/sbin +bindir = $(exec_prefix)/bin +archdir = $(rubyarchdir) + + +CC = gcc +CXX = g++ +LIBRUBY = $(LIBRUBY_SO) +LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a +LIBRUBYARG_SHARED = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME) +LIBRUBYARG_STATIC = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME)-static +empty = +OUTFLAG = -o $(empty) +COUTFLAG = -o $(empty) +CSRCFLAG = $(empty) + +RUBY_EXTCONF_H = extconf.h +cflags = $(optflags) $(debugflags) $(warnflags) +cxxflags = $(optflags) $(debugflags) $(warnflags) +optflags = -O3 +debugflags = -ggdb3 +warnflags = +CCDLFLAGS = -fPIC +CFLAGS = $(CCDLFLAGS) $(cflags) -fPIC $(ARCH_FLAG) +INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir) +DEFS = +CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\" $(DEFS) $(cppflags) +CXXFLAGS = $(CCDLFLAGS) $(cxxflags) $(ARCH_FLAG) +ldflags = -L. -fstack-protector -rdynamic -Wl,-export-dynamic +dldflags = -Wl,--compress-debug-sections=zlib +ARCH_FLAG = +DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG) +LDSHARED = $(CC) -shared +LDSHAREDXX = $(CXX) -shared +AR = ar +EXEEXT = + +RUBY_INSTALL_NAME = $(RUBY_BASE_NAME) +RUBY_SO_NAME = ruby +RUBYW_INSTALL_NAME = +RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version) +RUBYW_BASE_NAME = rubyw +RUBY_BASE_NAME = ruby + +arch = x86_64-linux +sitearch = $(arch) +ruby_version = 2.5.0 +ruby = $(bindir)/$(RUBY_BASE_NAME) +RUBY = $(ruby) +ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h $(RUBY_EXTCONF_H) + +RM = rm -f +RM_RF = $(RUBY) -run -e rm -- -rf +RMDIRS = rmdir --ignore-fail-on-non-empty -p +MAKEDIRS = /bin/mkdir -p +INSTALL = /usr/bin/install +INSTALL_PROG = $(INSTALL) -m 0755 +INSTALL_DATA = $(INSTALL) -m 644 +COPY = cp +TOUCH = exit > + +#### End of system configuration section. #### + +preload = +libpath = . $(libdir) +LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir) +DEFFILE = + +CLEANFILES = mkmf.log +DISTCLEANFILES = +DISTCLEANDIRS = + +extout = +extout_prefix = +target_prefix = +LOCAL_LIBS = +LIBS = $(LIBRUBYARG_SHARED) -lffi -lffi -lpthread -ldl -lcrypt -lm -lc +ORIG_SRCS = AbstractMemory.c ArrayType.c Buffer.c Call.c ClosurePool.c DataConverter.c DynamicLibrary.c Function.c FunctionInfo.c LastError.c LongDouble.c MappedType.c MemoryPointer.c MethodHandle.c Platform.c Pointer.c Struct.c StructByReference.c StructByValue.c StructLayout.c Thread.c Type.c Types.c Variadic.c ffi.c +SRCS = $(ORIG_SRCS) +OBJS = AbstractMemory.o ArrayType.o Buffer.o Call.o ClosurePool.o DataConverter.o DynamicLibrary.o Function.o FunctionInfo.o LastError.o LongDouble.o MappedType.o MemoryPointer.o MethodHandle.o Platform.o Pointer.o Struct.o StructByReference.o StructByValue.o StructLayout.o Thread.o Type.o Types.o Variadic.o ffi.o +HDRS = $(srcdir)/StructByReference.h $(srcdir)/Thread.h $(srcdir)/Function.h $(srcdir)/LongDouble.h $(srcdir)/DynamicLibrary.h $(srcdir)/AbstractMemory.h $(srcdir)/Call.h $(srcdir)/Platform.h $(srcdir)/MappedType.h $(srcdir)/MemoryPointer.h $(srcdir)/rbffi_endian.h $(srcdir)/MethodHandle.h $(srcdir)/ArrayType.h $(srcdir)/compat.h $(srcdir)/Struct.h $(srcdir)/extconf.h $(srcdir)/ClosurePool.h $(srcdir)/Type.h $(srcdir)/Types.h $(srcdir)/Pointer.h $(srcdir)/rbffi.h $(srcdir)/LastError.h $(srcdir)/StructByValue.h +LOCAL_HDRS = +TARGET = ffi_c +TARGET_NAME = ffi_c +TARGET_ENTRY = Init_$(TARGET_NAME) +DLLIB = $(TARGET).so +EXTSTATIC = +STATIC_LIB = + +TIMESTAMP_DIR = . +BINDIR = $(bindir) +RUBYCOMMONDIR = $(sitedir)$(target_prefix) +RUBYLIBDIR = $(sitelibdir)$(target_prefix) +RUBYARCHDIR = $(sitearchdir)$(target_prefix) +HDRDIR = $(rubyhdrdir)/ruby$(target_prefix) +ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix) +TARGET_SO_DIR = +TARGET_SO = $(TARGET_SO_DIR)$(DLLIB) +CLEANLIBS = $(TARGET_SO) +CLEANOBJS = *.o *.bak + +all: $(DLLIB) +static: $(STATIC_LIB) +.PHONY: all install static install-so install-rb +.PHONY: clean clean-so clean-static clean-rb + +clean-static:: +clean-rb-default:: +clean-rb:: +clean-so:: +clean: clean-so clean-static clean-rb-default clean-rb + -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time + +distclean-rb-default:: +distclean-rb:: +distclean-so:: +distclean-static:: +distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb + -$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log + -$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES) + -$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true + +realclean: distclean +install: install-so install-rb + +install-so: $(DLLIB) $(TIMESTAMP_DIR)/.sitearchdir.time + $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR) +clean-static:: + -$(Q)$(RM) $(STATIC_LIB) +install-rb: pre-install-rb do-install-rb install-rb-default +install-rb-default: pre-install-rb-default do-install-rb-default +pre-install-rb: Makefile +pre-install-rb-default: Makefile +do-install-rb: +do-install-rb-default: +pre-install-rb-default: + @$(NULLCMD) +$(TIMESTAMP_DIR)/.sitearchdir.time: + $(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR) + $(Q) $(TOUCH) $@ + +site-install: site-install-so site-install-rb +site-install-so: install-so +site-install-rb: install-rb + +.SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S + +.cc.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cc.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.mm.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.mm.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cxx.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cxx.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cpp.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cpp.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.c.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.c.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.m.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.m.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +$(TARGET_SO): $(OBJS) Makefile + $(ECHO) linking shared-object $(DLLIB) + -$(Q)$(RM) $(@) + $(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS) + + + +$(OBJS): $(HDRS) $(ruby_headers) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.c new file mode 100644 index 0000000000..d1a41894b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.c @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2010, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include "rbffi.h" + +#include "Type.h" +#include "MappedType.h" + + +static VALUE mapped_allocate(VALUE); +static VALUE mapped_initialize(VALUE, VALUE); +static void mapped_mark(MappedType *); +static ID id_native_type, id_to_native, id_from_native; + +VALUE rbffi_MappedTypeClass = Qnil; + +static VALUE +mapped_allocate(VALUE klass) +{ + MappedType* m; + + VALUE obj = Data_Make_Struct(klass, MappedType, mapped_mark, -1, m); + + m->rbConverter = Qnil; + m->rbType = Qnil; + m->type = NULL; + m->base.nativeType = NATIVE_MAPPED; + m->base.ffiType = &ffi_type_void; + + return obj; +} + +/* + * call-seq: initialize(converter) + * @param [#native_type, #to_native, #from_native] converter +converter+ must respond to + * all these methods + * @return [self] + */ +static VALUE +mapped_initialize(VALUE self, VALUE rbConverter) +{ + MappedType* m = NULL; + + if (!rb_respond_to(rbConverter, id_native_type)) { + rb_raise(rb_eNoMethodError, "native_type method not implemented"); + } + + if (!rb_respond_to(rbConverter, id_to_native)) { + rb_raise(rb_eNoMethodError, "to_native method not implemented"); + } + + if (!rb_respond_to(rbConverter, id_from_native)) { + rb_raise(rb_eNoMethodError, "from_native method not implemented"); + } + + Data_Get_Struct(self, MappedType, m); + m->rbType = rb_funcall2(rbConverter, id_native_type, 0, NULL); + if (!(rb_obj_is_kind_of(m->rbType, rbffi_TypeClass))) { + rb_raise(rb_eTypeError, "native_type did not return instance of FFI::Type"); + } + + m->rbConverter = rbConverter; + Data_Get_Struct(m->rbType, Type, m->type); + m->base.ffiType = m->type->ffiType; + + return self; +} + +static void +mapped_mark(MappedType* m) +{ + rb_gc_mark(m->rbType); + rb_gc_mark(m->rbConverter); +} + +/* + * call-seq: mapped_type.native_type + * @return [Type] + * Get native type of mapped type. + */ +static VALUE +mapped_native_type(VALUE self) +{ + MappedType*m = NULL; + Data_Get_Struct(self, MappedType, m); + + return m->rbType; +} + +/* + * call-seq: mapped_type.to_native(*args) + * @param args depends on {FFI::DataConverter} used to initialize +self+ + */ +static VALUE +mapped_to_native(int argc, VALUE* argv, VALUE self) +{ + MappedType*m = NULL; + + Data_Get_Struct(self, MappedType, m); + + return rb_funcall2(m->rbConverter, id_to_native, argc, argv); +} + +/* + * call-seq: mapped_type.from_native(*args) + * @param args depends on {FFI::DataConverter} used to initialize +self+ + */ +static VALUE +mapped_from_native(int argc, VALUE* argv, VALUE self) +{ + MappedType*m = NULL; + + Data_Get_Struct(self, MappedType, m); + + return rb_funcall2(m->rbConverter, id_from_native, argc, argv); +} + +void +rbffi_MappedType_Init(VALUE moduleFFI) +{ + /* + * Document-class: FFI::Type::Mapped < FFI::Type + */ + rbffi_MappedTypeClass = rb_define_class_under(rbffi_TypeClass, "Mapped", rbffi_TypeClass); + + rb_global_variable(&rbffi_MappedTypeClass); + + id_native_type = rb_intern("native_type"); + id_to_native = rb_intern("to_native"); + id_from_native = rb_intern("from_native"); + + rb_define_alloc_func(rbffi_MappedTypeClass, mapped_allocate); + rb_define_method(rbffi_MappedTypeClass, "initialize", mapped_initialize, 1); + rb_define_method(rbffi_MappedTypeClass, "type", mapped_native_type, 0); + rb_define_method(rbffi_MappedTypeClass, "native_type", mapped_native_type, 0); + rb_define_method(rbffi_MappedTypeClass, "to_native", mapped_to_native, -1); + rb_define_method(rbffi_MappedTypeClass, "from_native", mapped_from_native, -1); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.h new file mode 100644 index 0000000000..4b26cc1c62 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MappedType.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_MAPPEDTYPE_H +#define RBFFI_MAPPEDTYPE_H + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct MappedType_ { + Type base; + Type* type; + VALUE rbConverter; + VALUE rbType; + +} MappedType; + +void rbffi_MappedType_Init(VALUE moduleFFI); + +extern VALUE rbffi_MappedTypeClass; + + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_MAPPEDTYPE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.c new file mode 100644 index 0000000000..0d91c35b7c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.c @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (C) 2009 Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include +#include "rbffi.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "MemoryPointer.h" + + +static VALUE memptr_allocate(VALUE klass); +static void memptr_release(Pointer* ptr); +static VALUE memptr_malloc(VALUE self, long size, long count, bool clear); +static VALUE memptr_free(VALUE self); + +VALUE rbffi_MemoryPointerClass; + +#define MEMPTR(obj) ((MemoryPointer *) rbffi_AbstractMemory_Cast(obj, rbffi_MemoryPointerClass)) + +VALUE +rbffi_MemoryPointer_NewInstance(long size, long count, bool clear) +{ + return memptr_malloc(memptr_allocate(rbffi_MemoryPointerClass), size, count, clear); +} + +static VALUE +memptr_allocate(VALUE klass) +{ + Pointer* p; + VALUE obj = Data_Make_Struct(klass, Pointer, NULL, memptr_release, p); + p->rbParent = Qnil; + p->memory.flags = MEM_RD | MEM_WR; + + return obj; +} + +/* + * call-seq: initialize(size, count=1, clear=true) + * @param [Fixnum, Bignum, Symbol, FFI::Type] size size of a memory cell (in bytes, or type whom size will be used) + * @param [Numeric] count number of cells in memory + * @param [Boolean] clear set memory to all-zero if +true+ + * @return [self] + * A new instance of FFI::MemoryPointer. + */ +static VALUE +memptr_initialize(int argc, VALUE* argv, VALUE self) +{ + VALUE size = Qnil, count = Qnil, clear = Qnil; + int nargs = rb_scan_args(argc, argv, "12", &size, &count, &clear); + + memptr_malloc(self, rbffi_type_size(size), nargs > 1 ? NUM2LONG(count) : 1, + RTEST(clear) || clear == Qnil); + + if (rb_block_given_p()) { + return rb_ensure(rb_yield, self, memptr_free, self); + } + + return self; +} + +static VALUE +memptr_malloc(VALUE self, long size, long count, bool clear) +{ + Pointer* p; + unsigned long msize; + + Data_Get_Struct(self, Pointer, p); + + msize = size * count; + + p->storage = xmalloc(msize + 7); + if (p->storage == NULL) { + rb_raise(rb_eNoMemError, "Failed to allocate memory size=%ld bytes", msize); + return Qnil; + } + p->autorelease = true; + p->memory.typeSize = (int) size; + p->memory.size = msize; + /* ensure the memory is aligned on at least a 8 byte boundary */ + p->memory.address = (char *) (((uintptr_t) p->storage + 0x7) & (uintptr_t) ~0x7UL);; + p->allocated = true; + + if (clear && p->memory.size > 0) { + memset(p->memory.address, 0, p->memory.size); + } + + return self; +} + +static VALUE +memptr_free(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + if (ptr->allocated) { + if (ptr->storage != NULL) { + xfree(ptr->storage); + ptr->storage = NULL; + } + ptr->allocated = false; + } + + return self; +} + +static void +memptr_release(Pointer* ptr) +{ + if (ptr->autorelease && ptr->allocated && ptr->storage != NULL) { + xfree(ptr->storage); + ptr->storage = NULL; + } + xfree(ptr); +} + +/* + * call-seq: from_string(s) + * @param [String] s string + * @return [MemoryPointer] + * Create a {MemoryPointer} with +s+ inside. + */ +static VALUE +memptr_s_from_string(VALUE klass, VALUE to_str) +{ + VALUE s = StringValue(to_str); + VALUE args[] = { INT2FIX(1), LONG2NUM(RSTRING_LEN(s) + 1), Qfalse }; + VALUE obj = rb_class_new_instance(3, args, klass); + rb_funcall(obj, rb_intern("put_string"), 2, INT2FIX(0), s); + + return obj; +} + +void +rbffi_MemoryPointer_Init(VALUE moduleFFI) +{ + VALUE ffi_Pointer; + + ffi_Pointer = rbffi_PointerClass; + + /* + * Document-class: FFI::MemoryPointer < FFI::Pointer + * A MemoryPointer is a specific {Pointer}. It points to a memory composed of cells. All cells have the + * same size. + * + * @example Create a new MemoryPointer + * mp = FFI::MemoryPointer.new(:long, 16) # Create a pointer on a memory of 16 long ints. + * @example Create a new MemoryPointer from a String + * mp1 = FFI::MemoryPointer.from_string("this is a string") + * # same as: + * mp2 = FFI::MemoryPointer.new(:char,16) + * mp2.put_string("this is a string") + */ + rbffi_MemoryPointerClass = rb_define_class_under(moduleFFI, "MemoryPointer", ffi_Pointer); + rb_global_variable(&rbffi_MemoryPointerClass); + + rb_define_alloc_func(rbffi_MemoryPointerClass, memptr_allocate); + rb_define_method(rbffi_MemoryPointerClass, "initialize", memptr_initialize, -1); + rb_define_singleton_method(rbffi_MemoryPointerClass, "from_string", memptr_s_from_string, 1); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.h new file mode 100644 index 0000000000..12576838a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MemoryPointer.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (c) 2008, Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_MEMORYPOINTER_H +#define RBFFI_MEMORYPOINTER_H + +#ifndef _MSC_VER +# include +#else +# include "win32/stdbool.h" +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif + + extern void rbffi_MemoryPointer_Init(VALUE moduleFFI); + extern VALUE rbffi_MemoryPointerClass; + extern VALUE rbffi_MemoryPointer_NewInstance(long size, long count, bool clear); +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_MEMORYPOINTER_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.c new file mode 100644 index 0000000000..70efb72574 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2009, 2010 Wayne Meissner + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include +#ifndef _WIN32 +# include +#endif +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdint.h" +# include "win32/stdbool.h" +#endif +#ifndef _WIN32 +# include +#endif +#include +#include +#if defined(HAVE_NATIVETHREAD) && !defined(_WIN32) && !defined(__WIN32__) +# include +#endif + +#include +#include "rbffi.h" +#include "compat.h" + +#include "Function.h" +#include "Types.h" +#include "Type.h" +#include "LastError.h" +#include "Call.h" +#include "ClosurePool.h" +#include "MethodHandle.h" + + +#define MAX_METHOD_FIXED_ARITY (6) + +#ifndef roundup +# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +#endif +#ifdef _WIN32 + typedef char* caddr_t; +#endif + +#ifdef USE_RAW +# define METHOD_CLOSURE ffi_raw_closure +# define METHOD_PARAMS ffi_raw* +#else +# define METHOD_CLOSURE ffi_closure +# define METHOD_PARAMS void** +#endif + + + +static bool prep_trampoline(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize); +static long trampoline_size(void); + +#if defined(__x86_64__) && (defined(__linux__) || defined(__APPLE__)) +# define CUSTOM_TRAMPOLINE 1 +#endif + + +struct MethodHandle { + Closure* closure; +}; + +static ClosurePool* defaultClosurePool; + + +MethodHandle* +rbffi_MethodHandle_Alloc(FunctionType* fnInfo, void* function) +{ + MethodHandle* handle; + Closure* closure = rbffi_Closure_Alloc(defaultClosurePool); + if (closure == NULL) { + rb_raise(rb_eNoMemError, "failed to allocate closure from pool"); + return NULL; + } + + handle = xcalloc(1, sizeof(*handle)); + handle->closure = closure; + closure->info = fnInfo; + closure->function = function; + + return handle; +} + +void +rbffi_MethodHandle_Free(MethodHandle* handle) +{ + if (handle != NULL) { + rbffi_Closure_Free(handle->closure); + } +} + +void* +rbffi_MethodHandle_CodeAddress(MethodHandle* handle) +{ + return handle->closure->code; +} + +#ifndef CUSTOM_TRAMPOLINE +static void attached_method_invoke(ffi_cif* cif, void* retval, METHOD_PARAMS parameters, void* user_data); + +static ffi_type* methodHandleParamTypes[] = { + &ffi_type_sint, + &ffi_type_pointer, + &ffi_type_ulong, +}; + +static ffi_cif mh_cif; + +static bool +prep_trampoline(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize) +{ + ffi_status ffiStatus; + +#if defined(USE_RAW) + ffiStatus = ffi_prep_raw_closure(code, &mh_cif, attached_method_invoke, closure); +#else + ffiStatus = ffi_prep_closure(code, &mh_cif, attached_method_invoke, closure); +#endif + if (ffiStatus != FFI_OK) { + snprintf(errmsg, errmsgsize, "ffi_prep_closure failed. status=%#x", ffiStatus); + return false; + } + + return true; +} + + +static long +trampoline_size(void) +{ + return sizeof(METHOD_CLOSURE); +} + +/* + * attached_method_invoke is used functions with more than 6 parameters, or + * with struct param or return values + */ +static void +attached_method_invoke(ffi_cif* cif, void* mretval, METHOD_PARAMS parameters, void* user_data) +{ + Closure* handle = (Closure *) user_data; + FunctionType* fnInfo = (FunctionType *) handle->info; + +#ifdef USE_RAW + int argc = parameters[0].sint; + VALUE* argv = *(VALUE **) ¶meters[1]; +#else + int argc = *(int *) parameters[0]; + VALUE* argv = *(VALUE **) parameters[1]; +#endif + + *(VALUE *) mretval = (*fnInfo->invoke)(argc, argv, handle->function, fnInfo); +} + +#endif + + + +#if defined(CUSTOM_TRAMPOLINE) +#if defined(__x86_64__) + +static VALUE custom_trampoline(int argc, VALUE* argv, VALUE self, Closure*); + +#define TRAMPOLINE_CTX_MAGIC (0xfee1deadcafebabe) +#define TRAMPOLINE_FUN_MAGIC (0xfeedfacebeeff00d) + +/* + * This is a hand-coded trampoline to speedup entry from ruby to the FFI translation + * layer for x86_64 arches. + * + * Since a ruby function has exactly 3 arguments, and the first 6 arguments are + * passed in registers for x86_64, we can tack on a context pointer by simply + * putting a value in %rcx, then jumping to the C trampoline code. + * + * This results in approx a 30% speedup for x86_64 FFI dispatch + */ +__asm__( + ".text\n\t" + ".globl ffi_trampoline\n\t" + ".globl _ffi_trampoline\n\t" + "ffi_trampoline:\n\t" + "_ffi_trampoline:\n\t" + "movabsq $0xfee1deadcafebabe, %rcx\n\t" + "movabsq $0xfeedfacebeeff00d, %r11\n\t" + "jmpq *%r11\n\t" + ".globl ffi_trampoline_end\n\t" + "ffi_trampoline_end:\n\t" + ".globl _ffi_trampoline_end\n\t" + "_ffi_trampoline_end:\n\t" +); + +static VALUE +custom_trampoline(int argc, VALUE* argv, VALUE self, Closure* handle) +{ + FunctionType* fnInfo = (FunctionType *) handle->info; + VALUE rbReturnValue; + + RB_GC_GUARD(rbReturnValue) = (*fnInfo->invoke)(argc, argv, handle->function, fnInfo); + RB_GC_GUARD(self); + + return rbReturnValue; +} + +#elif defined(__i386__) && 0 + +static VALUE custom_trampoline(caddr_t args, Closure*); +#define TRAMPOLINE_CTX_MAGIC (0xfee1dead) +#define TRAMPOLINE_FUN_MAGIC (0xbeefcafe) + +/* + * This is a hand-coded trampoline to speed-up entry from ruby to the FFI translation + * layer for i386 arches. + * + * This does not make a discernible difference vs a raw closure, so for now, + * it is not enabled. + */ +__asm__( + ".text\n\t" + ".globl ffi_trampoline\n\t" + ".globl _ffi_trampoline\n\t" + "ffi_trampoline:\n\t" + "_ffi_trampoline:\n\t" + "subl $12, %esp\n\t" + "leal 16(%esp), %eax\n\t" + "movl %eax, (%esp)\n\t" + "movl $0xfee1dead, 4(%esp)\n\t" + "movl $0xbeefcafe, %eax\n\t" + "call *%eax\n\t" + "addl $12, %esp\n\t" + "ret\n\t" + ".globl ffi_trampoline_end\n\t" + "ffi_trampoline_end:\n\t" + ".globl _ffi_trampoline_end\n\t" + "_ffi_trampoline_end:\n\t" +); + +static VALUE +custom_trampoline(caddr_t args, Closure* handle) +{ + FunctionType* fnInfo = (FunctionType *) handle->info; + return (*fnInfo->invoke)(*(int *) args, *(VALUE **) (args + 4), handle->function, fnInfo); +} + +#endif /* __x86_64__ else __i386__ */ + +extern void ffi_trampoline(int argc, VALUE* argv, VALUE self); +extern void ffi_trampoline_end(void); +static int trampoline_offsets(long *, long *); + +static long trampoline_ctx_offset, trampoline_func_offset; + +static long +trampoline_offset(int off, const long value) +{ + caddr_t ptr; + for (ptr = (caddr_t) &ffi_trampoline + off; ptr < (caddr_t) &ffi_trampoline_end; ++ptr) { + if (*(long *) ptr == value) { + return ptr - (caddr_t) &ffi_trampoline; + } + } + + return -1; +} + +static int +trampoline_offsets(long* ctxOffset, long* fnOffset) +{ + *ctxOffset = trampoline_offset(0, TRAMPOLINE_CTX_MAGIC); + if (*ctxOffset == -1) { + return -1; + } + + *fnOffset = trampoline_offset(0, TRAMPOLINE_FUN_MAGIC); + if (*fnOffset == -1) { + return -1; + } + + return 0; +} + +static bool +prep_trampoline(void* ctx, void* code, Closure* closure, char* errmsg, size_t errmsgsize) +{ + caddr_t ptr = (caddr_t) code; + + memcpy(ptr, &ffi_trampoline, trampoline_size()); + /* Patch the context and function addresses into the stub code */ + *(intptr_t *)(ptr + trampoline_ctx_offset) = (intptr_t) closure; + *(intptr_t *)(ptr + trampoline_func_offset) = (intptr_t) custom_trampoline; + + return true; +} + +static long +trampoline_size(void) +{ + return (caddr_t) &ffi_trampoline_end - (caddr_t) &ffi_trampoline; +} + +#endif /* CUSTOM_TRAMPOLINE */ + + +void +rbffi_MethodHandle_Init(VALUE module) +{ +#ifndef CUSTOM_TRAMPOLINE + ffi_status ffiStatus; +#endif + + defaultClosurePool = rbffi_ClosurePool_New((int) trampoline_size(), prep_trampoline, NULL); + +#if defined(CUSTOM_TRAMPOLINE) + if (trampoline_offsets(&trampoline_ctx_offset, &trampoline_func_offset) != 0) { + rb_raise(rb_eFatal, "Could not locate offsets in trampoline code"); + } +#else + ffiStatus = ffi_prep_cif(&mh_cif, FFI_DEFAULT_ABI, 3, &ffi_type_ulong, + methodHandleParamTypes); + if (ffiStatus != FFI_OK) { + rb_raise(rb_eFatal, "ffi_prep_cif failed. status=%#x", ffiStatus); + } + +#endif +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.h new file mode 100644 index 0000000000..c3341bf30d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/MethodHandle.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_METHODHANDLE_H +#define RBFFI_METHODHANDLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "Function.h" + + +typedef struct MethodHandlePool MethodHandlePool; +typedef struct MethodHandle MethodHandle; + + +MethodHandle* rbffi_MethodHandle_Alloc(FunctionType* fnInfo, void* function); +void rbffi_MethodHandle_Free(MethodHandle* handle); +void* rbffi_MethodHandle_CodeAddress(MethodHandle* handle); +void rbffi_MethodHandle_Init(VALUE module); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_METHODHANDLE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.c new file mode 100644 index 0000000000..de114a88b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.c @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +#endif +# include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdint.h" +# include "win32/stdbool.h" +#endif +#include +#include +#include "rbffi_endian.h" +#include "Platform.h" + +#if defined(__GNU__) || defined(__GLIBC__) +# include +#endif + +static VALUE PlatformModule = Qnil; + +/* + * Determine the cpu type at compile time - useful for MacOSX where the the + * system installed ruby incorrectly reports 'host_cpu' as 'powerpc' when running + * on intel. + */ +#if defined(__x86_64__) || defined(__x86_64) || defined(__amd64) || defined(_M_X64) || defined(_M_AMD64) +# define CPU "x86_64" + +#elif defined(__i386__) || defined(__i386) || defined(_M_IX86) +# define CPU "i386" + +#elif defined(__ppc64__) || defined(__powerpc64__) || defined(_M_PPC) +# define CPU "ppc64" + +#elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc) +# define CPU "ppc" + +/* + * Need to check for __sparcv9 first, because __sparc will be defined either way. + * Note that __sparcv9 seems to only be set for Solaris. On Linux, __sparc will + * be set, along with __arch64__ if a 64-bit platform. + */ +#elif defined(__sparcv9__) || defined(__sparcv9) +# define CPU "sparcv9" + +#elif defined(__sparc__) || defined(__sparc) +# if defined(__arch64__) +# define CPU "sparcv9" +# else +# define CPU "sparc" +# endif + +#elif defined(__arm__) || defined(__arm) +# define CPU "arm" + +#elif defined(__mips__) || defined(__mips) +# define CPU "mips" + +#elif defined(__s390__) +# define CPU "s390" + +#else +# define CPU "unknown" +#endif + +static void +export_primitive_types(VALUE module) +{ +#define S(name, T) do { \ + typedef struct { char c; T v; } s; \ + rb_define_const(module, #name "_ALIGN", INT2NUM((sizeof(s) - sizeof(T)) * 8)); \ + rb_define_const(module, #name "_SIZE", INT2NUM(sizeof(T)* 8)); \ +} while(0) + S(INT8, char); + S(INT16, short); + S(INT32, int); + S(INT64, long long); + S(LONG, long); + S(FLOAT, float); + S(DOUBLE, double); + S(ADDRESS, void*); +#undef S +} + +void +rbffi_Platform_Init(VALUE moduleFFI) +{ + PlatformModule = rb_define_module_under(moduleFFI, "Platform"); + rb_define_const(PlatformModule, "BYTE_ORDER", INT2FIX(BYTE_ORDER)); + rb_define_const(PlatformModule, "LITTLE_ENDIAN", INT2FIX(LITTLE_ENDIAN)); + rb_define_const(PlatformModule, "BIG_ENDIAN", INT2FIX(BIG_ENDIAN)); + rb_define_const(PlatformModule, "CPU", rb_str_new2(CPU)); +#if defined(__GNU__) || defined(__GLIBC__) + rb_define_const(PlatformModule, "GNU_LIBC", rb_str_new2(LIBC_SO)); +#endif + export_primitive_types(PlatformModule); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.h new file mode 100644 index 0000000000..5575e34ab9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Platform.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_PLATFORM_H +#define RBFFI_PLATFORM_H + +#ifdef __cplusplus +extern "C" { +#endif + + extern void rbffi_Platform_Init(VALUE moduleFFI); + + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_PLATFORM_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.c new file mode 100644 index 0000000000..1eee790db5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.c @@ -0,0 +1,508 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdint.h" +# include "win32/stdbool.h" +#endif +#include +#include +#include "rbffi.h" +#include "rbffi_endian.h" +#include "AbstractMemory.h" +#include "Pointer.h" + +#define POINTER(obj) rbffi_AbstractMemory_Cast((obj), rbffi_PointerClass) + +VALUE rbffi_PointerClass = Qnil; +VALUE rbffi_NullPointerSingleton = Qnil; + +static void ptr_release(Pointer* ptr); +static void ptr_mark(Pointer* ptr); + +VALUE +rbffi_Pointer_NewInstance(void* addr) +{ + Pointer* p; + VALUE obj; + + if (addr == NULL) { + return rbffi_NullPointerSingleton; + } + + obj = Data_Make_Struct(rbffi_PointerClass, Pointer, NULL, -1, p); + p->memory.address = addr; + p->memory.size = LONG_MAX; + p->memory.flags = (addr == NULL) ? 0 : (MEM_RD | MEM_WR); + p->memory.typeSize = 1; + p->rbParent = Qnil; + + return obj; +} + +static VALUE +ptr_allocate(VALUE klass) +{ + Pointer* p; + VALUE obj; + + obj = Data_Make_Struct(klass, Pointer, ptr_mark, ptr_release, p); + p->rbParent = Qnil; + p->memory.flags = MEM_RD | MEM_WR; + + return obj; +} + +/* + * @overload initialize(pointer) + * @param [Pointer] pointer another pointer to initialize from + * Create a new pointer from another {Pointer}. + * @overload initialize(type, address) + * @param [Type] type type for pointer + * @param [Integer] address base address for pointer + * Create a new pointer from a {Type} and a base address + * @return [self] + * A new instance of Pointer. + */ +static VALUE +ptr_initialize(int argc, VALUE* argv, VALUE self) +{ + Pointer* p; + VALUE rbType = Qnil, rbAddress = Qnil; + int typeSize = 1; + + Data_Get_Struct(self, Pointer, p); + + switch (rb_scan_args(argc, argv, "11", &rbType, &rbAddress)) { + case 1: + rbAddress = rbType; + typeSize = 1; + break; + case 2: + typeSize = rbffi_type_size(rbType); + break; + default: + rb_raise(rb_eArgError, "Invalid arguments"); + } + + switch (TYPE(rbAddress)) { + case T_FIXNUM: + case T_BIGNUM: + p->memory.address = (void*) (uintptr_t) NUM2LL(rbAddress); + p->memory.size = LONG_MAX; + if (p->memory.address == NULL) { + p->memory.flags = 0; + } + break; + + default: + if (rb_obj_is_kind_of(rbAddress, rbffi_PointerClass)) { + Pointer* orig; + + p->rbParent = rbAddress; + Data_Get_Struct(rbAddress, Pointer, orig); + p->memory = orig->memory; + } else { + rb_raise(rb_eTypeError, "wrong argument type, expected Integer or FFI::Pointer"); + } + break; + } + + p->memory.typeSize = typeSize; + + return self; +} + +/* + * call-seq: ptr.initialize_copy(other) + * @param [Pointer] other source for cloning or dupping + * @return [self] + * @raise {RuntimeError} if +other+ is an unbounded memory area, or is unreadable/unwritable + * @raise {NoMemError} if failed to allocate memory for new object + * DO NOT CALL THIS METHOD. + * + * This method is internally used by #dup and #clone. Memory content is copied from +other+. + */ +static VALUE +ptr_initialize_copy(VALUE self, VALUE other) +{ + AbstractMemory* src; + Pointer* dst; + + Data_Get_Struct(self, Pointer, dst); + src = POINTER(other); + if (src->size == LONG_MAX) { + rb_raise(rb_eRuntimeError, "cannot duplicate unbounded memory area"); + return Qnil; + } + + if ((dst->memory.flags & (MEM_RD | MEM_WR)) != (MEM_RD | MEM_WR)) { + rb_raise(rb_eRuntimeError, "cannot duplicate unreadable/unwritable memory area"); + return Qnil; + } + + if (dst->storage != NULL) { + xfree(dst->storage); + dst->storage = NULL; + } + + dst->storage = xmalloc(src->size + 7); + if (dst->storage == NULL) { + rb_raise(rb_eNoMemError, "failed to allocate memory size=%lu bytes", src->size); + return Qnil; + } + + dst->allocated = true; + dst->autorelease = true; + dst->memory.address = (void *) (((uintptr_t) dst->storage + 0x7) & (uintptr_t) ~0x7UL); + dst->memory.size = src->size; + dst->memory.typeSize = src->typeSize; + + /* finally, copy the actual memory contents */ + memcpy(dst->memory.address, src->address, src->size); + + return self; +} + +static VALUE +slice(VALUE self, long offset, long size) +{ + AbstractMemory* ptr; + Pointer* p; + VALUE retval; + + Data_Get_Struct(self, AbstractMemory, ptr); + checkBounds(ptr, offset, size == LONG_MAX ? 1 : size); + + retval = Data_Make_Struct(rbffi_PointerClass, Pointer, ptr_mark, -1, p); + + p->memory.address = ptr->address + offset; + p->memory.size = size; + p->memory.flags = ptr->flags; + p->memory.typeSize = ptr->typeSize; + p->rbParent = self; + + return retval; +} + +/* + * Document-method: + + * call-seq: ptr + offset + * @param [Numeric] offset + * @return [Pointer] + * Return a new {Pointer} from an existing pointer and an +offset+. + */ +static VALUE +ptr_plus(VALUE self, VALUE offset) +{ + AbstractMemory* ptr; + long off = NUM2LONG(offset); + + Data_Get_Struct(self, AbstractMemory, ptr); + + return slice(self, off, ptr->size == LONG_MAX ? LONG_MAX : ptr->size - off); +} + +/* + * call-seq: ptr.slice(offset, length) + * @param [Numeric] offset + * @param [Numeric] length + * @return [Pointer] + * Return a new {Pointer} from an existing one. This pointer points on same contents + * from +offset+ for a length +length+. + */ +static VALUE +ptr_slice(VALUE self, VALUE rbOffset, VALUE rbLength) +{ + return slice(self, NUM2LONG(rbOffset), NUM2LONG(rbLength)); +} + +/* + * call-seq: ptr.inspect + * @return [String] + * Inspect pointer object. + */ +static VALUE +ptr_inspect(VALUE self) +{ + char buf[100]; + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + if (ptr->memory.size != LONG_MAX) { + snprintf(buf, sizeof(buf), "#<%s address=%p size=%lu>", + rb_obj_classname(self), ptr->memory.address, ptr->memory.size); + } else { + snprintf(buf, sizeof(buf), "#<%s address=%p>", rb_obj_classname(self), ptr->memory.address); + } + + return rb_str_new2(buf); +} + +/* + * Document-method: null? + * call-seq: ptr.null? + * @return [Boolean] + * Return +true+ if +self+ is a {NULL} pointer. + */ +static VALUE +ptr_null_p(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + return ptr->memory.address == NULL ? Qtrue : Qfalse; +} + +/* + * Document-method: == + * call-seq: ptr == other + * @param [Pointer] other + * Check equality between +self+ and +other+. Equality is tested on {#address}. + */ +static VALUE +ptr_equals(VALUE self, VALUE other) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + if (NIL_P(other)) { + return ptr->memory.address == NULL ? Qtrue : Qfalse; + } + + return ptr->memory.address == POINTER(other)->address ? Qtrue : Qfalse; +} + +/* + * call-seq: ptr.address + * @return [Numeric] pointer's base address + * Return +self+'s base address (alias: #to_i). + */ +static VALUE +ptr_address(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + return ULL2NUM((uintptr_t) ptr->memory.address); +} + +#if BYTE_ORDER == LITTLE_ENDIAN +# define SWAPPED_ORDER BIG_ENDIAN +#else +# define SWAPPED_ORDER LITTLE_ENDIAN +#endif + +/* + * Get or set +self+'s endianness + * @overload order + * @return [:big, :little] endianness of +self+ + * @overload order(order) + * @param [Symbol] order endianness to set (+:little+, +:big+ or +:network+). +:big+ and +:network+ + * are synonymous. + * @return [self] + */ +static VALUE +ptr_order(int argc, VALUE* argv, VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + if (argc == 0) { + int order = (ptr->memory.flags & MEM_SWAP) == 0 ? BYTE_ORDER : SWAPPED_ORDER; + return order == BIG_ENDIAN ? ID2SYM(rb_intern("big")) : ID2SYM(rb_intern("little")); + } else { + VALUE rbOrder = Qnil; + int order = BYTE_ORDER; + + if (rb_scan_args(argc, argv, "1", &rbOrder) < 1) { + rb_raise(rb_eArgError, "need byte order"); + } + if (SYMBOL_P(rbOrder)) { + ID id = SYM2ID(rbOrder); + if (id == rb_intern("little")) { + order = LITTLE_ENDIAN; + + } else if (id == rb_intern("big") || id == rb_intern("network")) { + order = BIG_ENDIAN; + } + } + if (order != BYTE_ORDER) { + Pointer* p2; + VALUE retval = slice(self, 0, ptr->memory.size); + + Data_Get_Struct(retval, Pointer, p2); + p2->memory.flags |= MEM_SWAP; + return retval; + } + + return self; + } +} + + +/* + * call-seq: ptr.free + * @return [self] + * Free memory pointed by +self+. + */ +static VALUE +ptr_free(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + if (ptr->allocated) { + if (ptr->storage != NULL) { + xfree(ptr->storage); + ptr->storage = NULL; + } + ptr->allocated = false; + + } else { + VALUE caller = rb_funcall(rb_funcall(Qnil, rb_intern("caller"), 0), rb_intern("first"), 0); + + rb_warn("calling free on non allocated pointer %s from %s", RSTRING_PTR(ptr_inspect(self)), RSTRING_PTR(rb_str_to_str(caller))); + } + + return self; +} + +static VALUE +ptr_type_size(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + return INT2NUM(ptr->memory.typeSize); +} + +/* + * call-seq: ptr.autorelease = autorelease + * @param [Boolean] autorelease + * @return [Boolean] +autorelease+ + * Set +autorelease+ attribute. See also Autorelease section. + */ +static VALUE +ptr_autorelease(VALUE self, VALUE autorelease) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + ptr->autorelease = autorelease == Qtrue; + + return autorelease; +} + +/* + * call-seq: ptr.autorelease? + * @return [Boolean] + * Get +autorelease+ attribute. See also Autorelease section. + */ +static VALUE +ptr_autorelease_p(VALUE self) +{ + Pointer* ptr; + + Data_Get_Struct(self, Pointer, ptr); + + return ptr->autorelease ? Qtrue : Qfalse; +} + + +static void +ptr_release(Pointer* ptr) +{ + if (ptr->autorelease && ptr->allocated && ptr->storage != NULL) { + xfree(ptr->storage); + ptr->storage = NULL; + } + xfree(ptr); +} + +static void +ptr_mark(Pointer* ptr) +{ + rb_gc_mark(ptr->rbParent); +} + +void +rbffi_Pointer_Init(VALUE moduleFFI) +{ + VALUE rbNullAddress = ULL2NUM(0); + VALUE ffi_AbstractMemory = rbffi_AbstractMemoryClass; + + /* + * Document-class: FFI::Pointer < FFI::AbstractMemory + * Pointer class is used to manage C pointers with ease. A {Pointer} object is defined by his + * {#address} (as a C pointer). It permits additions with an integer for pointer arithmetic. + * + * ==Autorelease + * A pointer object may autorelease his contents when freed (by default). This behaviour may be + * changed with {#autorelease=} method. + */ + rbffi_PointerClass = rb_define_class_under(moduleFFI, "Pointer", ffi_AbstractMemory); + /* + * Document-variable: Pointer + */ + rb_global_variable(&rbffi_PointerClass); + + rb_define_alloc_func(rbffi_PointerClass, ptr_allocate); + rb_define_method(rbffi_PointerClass, "initialize", ptr_initialize, -1); + rb_define_method(rbffi_PointerClass, "initialize_copy", ptr_initialize_copy, 1); + rb_define_method(rbffi_PointerClass, "inspect", ptr_inspect, 0); + rb_define_method(rbffi_PointerClass, "to_s", ptr_inspect, 0); + rb_define_method(rbffi_PointerClass, "+", ptr_plus, 1); + rb_define_method(rbffi_PointerClass, "slice", ptr_slice, 2); + rb_define_method(rbffi_PointerClass, "null?", ptr_null_p, 0); + rb_define_method(rbffi_PointerClass, "address", ptr_address, 0); + rb_define_alias(rbffi_PointerClass, "to_i", "address"); + rb_define_method(rbffi_PointerClass, "==", ptr_equals, 1); + rb_define_method(rbffi_PointerClass, "order", ptr_order, -1); + rb_define_method(rbffi_PointerClass, "autorelease=", ptr_autorelease, 1); + rb_define_method(rbffi_PointerClass, "autorelease?", ptr_autorelease_p, 0); + rb_define_method(rbffi_PointerClass, "free", ptr_free, 0); + rb_define_method(rbffi_PointerClass, "type_size", ptr_type_size, 0); + + rbffi_NullPointerSingleton = rb_class_new_instance(1, &rbNullAddress, rbffi_PointerClass); + /* + * NULL pointer + */ + rb_define_const(rbffi_PointerClass, "NULL", rbffi_NullPointerSingleton); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.h new file mode 100644 index 0000000000..2d868518e9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Pointer.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_POINTER_H +#define RBFFI_POINTER_H + +#ifndef _MSC_VER +# include +#else +# include "win32/stdbool.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "AbstractMemory.h" + +extern void rbffi_Pointer_Init(VALUE moduleFFI); +extern VALUE rbffi_Pointer_NewInstance(void* addr); +extern VALUE rbffi_PointerClass; +extern VALUE rbffi_NullPointerSingleton; + +typedef struct Pointer { + AbstractMemory memory; + VALUE rbParent; + char* storage; /* start of malloc area */ + bool autorelease; + bool allocated; +} Pointer; + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_POINTER_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.c new file mode 100644 index 0000000000..c6428a2128 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.c @@ -0,0 +1,829 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (C) 2009 Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#ifndef _MSC_VER +# include +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include "rbffi.h" +#include "compat.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "MemoryPointer.h" +#include "Function.h" +#include "Types.h" +#include "Function.h" +#include "StructByValue.h" +#include "ArrayType.h" +#include "MappedType.h" +#include "Struct.h" + +typedef struct InlineArray_ { + VALUE rbMemory; + VALUE rbField; + + AbstractMemory* memory; + StructField* field; + MemoryOp *op; + Type* componentType; + ArrayType* arrayType; + int length; +} InlineArray; + + +static void struct_mark(Struct *); +static void struct_free(Struct *); +static VALUE struct_class_layout(VALUE klass); +static void struct_malloc(Struct* s); +static void inline_array_mark(InlineArray *); +static void store_reference_value(StructField* f, Struct* s, VALUE value); + +VALUE rbffi_StructClass = Qnil; + +VALUE rbffi_StructInlineArrayClass = Qnil; +VALUE rbffi_StructLayoutCharArrayClass = Qnil; + +static ID id_pointer_ivar = 0, id_layout_ivar = 0; +static ID id_get = 0, id_put = 0, id_to_ptr = 0, id_to_s = 0, id_layout = 0; + +static inline char* +memory_address(VALUE self) +{ + return ((AbstractMemory *)DATA_PTR((self)))->address; +} + +static VALUE +struct_allocate(VALUE klass) +{ + Struct* s; + VALUE obj = Data_Make_Struct(klass, Struct, struct_mark, struct_free, s); + + s->rbPointer = Qnil; + s->rbLayout = Qnil; + + return obj; +} + +/* + * call-seq: initialize + * @overload initialize(pointer, *args) + * @param [AbstractMemory] pointer + * @param [Array] args + * @return [self] + */ +static VALUE +struct_initialize(int argc, VALUE* argv, VALUE self) +{ + Struct* s; + VALUE rbPointer = Qnil, rest = Qnil, klass = CLASS_OF(self); + int nargs; + + Data_Get_Struct(self, Struct, s); + + nargs = rb_scan_args(argc, argv, "01*", &rbPointer, &rest); + + /* Call up into ruby code to adjust the layout */ + if (nargs > 1) { + s->rbLayout = rb_funcall2(CLASS_OF(self), id_layout, (int) RARRAY_LEN(rest), RARRAY_PTR(rest)); + } else { + s->rbLayout = struct_class_layout(klass); + } + + if (!rb_obj_is_kind_of(s->rbLayout, rbffi_StructLayoutClass)) { + rb_raise(rb_eRuntimeError, "Invalid Struct layout"); + } + + Data_Get_Struct(s->rbLayout, StructLayout, s->layout); + + if (rbPointer != Qnil) { + s->pointer = MEMORY(rbPointer); + s->rbPointer = rbPointer; + } else { + struct_malloc(s); + } + + return self; +} + +/* + * call-seq: initialize_copy(other) + * @return [nil] + * DO NOT CALL THIS METHOD + */ +static VALUE +struct_initialize_copy(VALUE self, VALUE other) +{ + Struct* src; + Struct* dst; + + Data_Get_Struct(self, Struct, dst); + Data_Get_Struct(other, Struct, src); + if (dst == src) { + return self; + } + + dst->rbLayout = src->rbLayout; + dst->layout = src->layout; + + /* + * A new MemoryPointer instance is allocated here instead of just calling + * #dup on rbPointer, since the Pointer may not know its length, or may + * be longer than just this struct. + */ + if (src->pointer->address != NULL) { + dst->rbPointer = rbffi_MemoryPointer_NewInstance(1, src->layout->size, false); + dst->pointer = MEMORY(dst->rbPointer); + memcpy(dst->pointer->address, src->pointer->address, src->layout->size); + } else { + dst->rbPointer = src->rbPointer; + dst->pointer = src->pointer; + } + + if (src->layout->referenceFieldCount > 0) { + dst->rbReferences = ALLOC_N(VALUE, dst->layout->referenceFieldCount); + memcpy(dst->rbReferences, src->rbReferences, dst->layout->referenceFieldCount * sizeof(VALUE)); + } + + return self; +} + +static VALUE +struct_class_layout(VALUE klass) +{ + VALUE layout; + if (!rb_ivar_defined(klass, id_layout_ivar)) { + rb_raise(rb_eRuntimeError, "no Struct layout configured for %s", rb_class2name(klass)); + } + + layout = rb_ivar_get(klass, id_layout_ivar); + if (!rb_obj_is_kind_of(layout, rbffi_StructLayoutClass)) { + rb_raise(rb_eRuntimeError, "invalid Struct layout for %s", rb_class2name(klass)); + } + + return layout; +} + +static StructLayout* +struct_layout(VALUE self) +{ + Struct* s = (Struct *) DATA_PTR(self); + if (s->layout != NULL) { + return s->layout; + } + + if (s->layout == NULL) { + s->rbLayout = struct_class_layout(CLASS_OF(self)); + Data_Get_Struct(s->rbLayout, StructLayout, s->layout); + } + + return s->layout; +} + +static Struct* +struct_validate(VALUE self) +{ + Struct* s; + Data_Get_Struct(self, Struct, s); + + if (struct_layout(self) == NULL) { + rb_raise(rb_eRuntimeError, "struct layout == null"); + } + + if (s->pointer == NULL) { + struct_malloc(s); + } + + return s; +} + +static void +struct_malloc(Struct* s) +{ + if (s->rbPointer == Qnil) { + s->rbPointer = rbffi_MemoryPointer_NewInstance(s->layout->size, 1, true); + + } else if (!rb_obj_is_kind_of(s->rbPointer, rbffi_AbstractMemoryClass)) { + rb_raise(rb_eRuntimeError, "invalid pointer in struct"); + } + + s->pointer = (AbstractMemory *) DATA_PTR(s->rbPointer); +} + +static void +struct_mark(Struct *s) +{ + rb_gc_mark(s->rbPointer); + rb_gc_mark(s->rbLayout); + if (s->rbReferences != NULL) { + rb_gc_mark_locations(&s->rbReferences[0], &s->rbReferences[s->layout->referenceFieldCount]); + } +} + +static void +struct_free(Struct* s) +{ + xfree(s->rbReferences); + xfree(s); +} + + +static void +store_reference_value(StructField* f, Struct* s, VALUE value) +{ + if (unlikely(f->referenceIndex == -1)) { + rb_raise(rb_eRuntimeError, "put_reference_value called for non-reference type"); + return; + } + if (s->rbReferences == NULL) { + int i; + s->rbReferences = ALLOC_N(VALUE, s->layout->referenceFieldCount); + for (i = 0; i < s->layout->referenceFieldCount; ++i) { + s->rbReferences[i] = Qnil; + } + } + + s->rbReferences[f->referenceIndex] = value; +} + + +static VALUE +struct_field(Struct* s, VALUE fieldName) +{ + StructLayout* layout = s->layout; + VALUE rbField; + + if (likely(SYMBOL_P(fieldName) && st_lookup(layout->fieldSymbolTable, fieldName, (st_data_t *) &rbField))) { + return rbField; + } + + // TODO does this ever return anything? + rbField = rb_hash_aref(layout->rbFieldMap, fieldName); + if (rbField == Qnil) { + VALUE str = rb_funcall2(fieldName, id_to_s, 0, NULL); + rb_raise(rb_eArgError, "No such field '%s'", StringValuePtr(str)); + } + + return rbField; +} + +/* + * call-seq: struct[field_name] + * @param field_name field to access + * Acces to a Struct field. + */ +static VALUE +struct_aref(VALUE self, VALUE fieldName) +{ + Struct* s; + VALUE rbField; + StructField* f; + + s = struct_validate(self); + + rbField = struct_field(s, fieldName); + f = (StructField *) DATA_PTR(rbField); + + if (f->get != NULL) { + return (*f->get)(f, s); + + } else if (f->memoryOp != NULL) { + return (*f->memoryOp->get)(s->pointer, f->offset); + + } else { + + /* call up to the ruby code to fetch the value */ + return rb_funcall2(rbField, id_get, 1, &s->rbPointer); + } +} + +/* + * call-seq: []=(field_name, value) + * @param field_name field to access + * @param value value to set to +field_name+ + * @return [value] + * Set a field in Struct. + */ +static VALUE +struct_aset(VALUE self, VALUE fieldName, VALUE value) +{ + Struct* s; + VALUE rbField; + StructField* f; + + + s = struct_validate(self); + + rbField = struct_field(s, fieldName); + f = (StructField *) DATA_PTR(rbField); + if (f->put != NULL) { + (*f->put)(f, s, value); + + } else if (f->memoryOp != NULL) { + + (*f->memoryOp->put)(s->pointer, f->offset, value); + + } else { + /* call up to the ruby code to set the value */ + VALUE argv[2]; + argv[0] = s->rbPointer; + argv[1] = value; + rb_funcall2(rbField, id_put, 2, argv); + } + + if (f->referenceRequired) { + store_reference_value(f, s, value); + } + + return value; +} + +/* + * call-seq: pointer= pointer + * @param [AbstractMemory] pointer + * @return [self] + * Make Struct point to +pointer+. + */ +static VALUE +struct_set_pointer(VALUE self, VALUE pointer) +{ + Struct* s; + StructLayout* layout; + AbstractMemory* memory; + + if (!rb_obj_is_kind_of(pointer, rbffi_AbstractMemoryClass)) { + rb_raise(rb_eTypeError, "wrong argument type %s (expected Pointer or Buffer)", + rb_obj_classname(pointer)); + return Qnil; + } + + + Data_Get_Struct(self, Struct, s); + Data_Get_Struct(pointer, AbstractMemory, memory); + layout = struct_layout(self); + + if ((int) layout->base.ffiType->size > memory->size) { + rb_raise(rb_eArgError, "memory of %ld bytes too small for struct %s (expected at least %ld)", + memory->size, rb_obj_classname(self), (long) layout->base.ffiType->size); + } + + s->pointer = MEMORY(pointer); + s->rbPointer = pointer; + rb_ivar_set(self, id_pointer_ivar, pointer); + + return self; +} + +/* + * call-seq: pointer + * @return [AbstractMemory] + * Get pointer to Struct contents. + */ +static VALUE +struct_get_pointer(VALUE self) +{ + Struct* s; + + Data_Get_Struct(self, Struct, s); + + return s->rbPointer; +} + +/* + * call-seq: layout= layout + * @param [StructLayout] layout + * @return [self] + * Set the Struct's layout. + */ +static VALUE +struct_set_layout(VALUE self, VALUE layout) +{ + Struct* s; + Data_Get_Struct(self, Struct, s); + + if (!rb_obj_is_kind_of(layout, rbffi_StructLayoutClass)) { + rb_raise(rb_eTypeError, "wrong argument type %s (expected %s)", + rb_obj_classname(layout), rb_class2name(rbffi_StructLayoutClass)); + return Qnil; + } + + Data_Get_Struct(layout, StructLayout, s->layout); + rb_ivar_set(self, id_layout_ivar, layout); + + return self; +} + +/* + * call-seq: layout + * @return [StructLayout] + * Get the Struct's layout. + */ +static VALUE +struct_get_layout(VALUE self) +{ + Struct* s; + + Data_Get_Struct(self, Struct, s); + + return s->rbLayout; +} + +/* + * call-seq: null? + * @return [Boolean] + * Test if Struct's pointer is NULL + */ +static VALUE +struct_null_p(VALUE self) +{ + Struct* s; + + Data_Get_Struct(self, Struct, s); + + return s->pointer->address == NULL ? Qtrue : Qfalse; +} + +/* + * (see Pointer#order) + */ +static VALUE +struct_order(int argc, VALUE* argv, VALUE self) +{ + Struct* s; + + Data_Get_Struct(self, Struct, s); + if (argc == 0) { + return rb_funcall(s->rbPointer, rb_intern("order"), 0); + + } else { + VALUE retval = rb_obj_dup(self); + VALUE rbPointer = rb_funcall2(s->rbPointer, rb_intern("order"), argc, argv); + struct_set_pointer(retval, rbPointer); + + return retval; + } +} + +static VALUE +inline_array_allocate(VALUE klass) +{ + InlineArray* array; + VALUE obj; + + obj = Data_Make_Struct(klass, InlineArray, inline_array_mark, -1, array); + array->rbField = Qnil; + array->rbMemory = Qnil; + + return obj; +} + +static void +inline_array_mark(InlineArray* array) +{ + rb_gc_mark(array->rbField); + rb_gc_mark(array->rbMemory); +} + +/* + * Document-method: FFI::Struct::InlineArray#initialize + * call-seq: initialize(memory, field) + * @param [AbstractMemory] memory + * @param [StructField] field + * @return [self] + */ +static VALUE +inline_array_initialize(VALUE self, VALUE rbMemory, VALUE rbField) +{ + InlineArray* array; + + Data_Get_Struct(self, InlineArray, array); + array->rbMemory = rbMemory; + array->rbField = rbField; + + Data_Get_Struct(rbMemory, AbstractMemory, array->memory); + Data_Get_Struct(rbField, StructField, array->field); + Data_Get_Struct(array->field->rbType, ArrayType, array->arrayType); + Data_Get_Struct(array->arrayType->rbComponentType, Type, array->componentType); + + array->op = get_memory_op(array->componentType); + if (array->op == NULL && array->componentType->nativeType == NATIVE_MAPPED) { + array->op = get_memory_op(((MappedType *) array->componentType)->type); + } + + array->length = array->arrayType->length; + + return self; +} + +/* + * call-seq: size + * @return [Numeric] + * Get size + */ +static VALUE +inline_array_size(VALUE self) +{ + InlineArray* array; + + Data_Get_Struct(self, InlineArray, array); + + return UINT2NUM(((ArrayType *) array->field->type)->length); +} + +static int +inline_array_offset(InlineArray* array, int index) +{ + if (index < 0 || (index >= array->length && array->length > 0)) { + rb_raise(rb_eIndexError, "index %d out of bounds", index); + } + + return (int) array->field->offset + (index * (int) array->componentType->ffiType->size); +} + +/* + * call-seq: [](index) + * @param [Numeric] index + * @return [Type, Struct] + */ +static VALUE +inline_array_aref(VALUE self, VALUE rbIndex) +{ + InlineArray* array; + + Data_Get_Struct(self, InlineArray, array); + + if (array->op != NULL) { + VALUE rbNativeValue = array->op->get(array->memory, + inline_array_offset(array, NUM2INT(rbIndex))); + if (unlikely(array->componentType->nativeType == NATIVE_MAPPED)) { + return rb_funcall(((MappedType *) array->componentType)->rbConverter, + rb_intern("from_native"), 2, rbNativeValue, Qnil); + } else { + return rbNativeValue; + } + + } else if (array->componentType->nativeType == NATIVE_STRUCT) { + VALUE rbOffset = INT2NUM(inline_array_offset(array, NUM2INT(rbIndex))); + VALUE rbLength = INT2NUM(array->componentType->ffiType->size); + VALUE rbPointer = rb_funcall(array->rbMemory, rb_intern("slice"), 2, rbOffset, rbLength); + + return rb_class_new_instance(1, &rbPointer, ((StructByValue *) array->componentType)->rbStructClass); + } else { + + rb_raise(rb_eArgError, "get not supported for %s", rb_obj_classname(array->arrayType->rbComponentType)); + return Qnil; + } +} + +/* + * call-seq: []=(index, value) + * @param [Numeric] index + * @param [Type, Struct] + * @return [value] + */ +static VALUE +inline_array_aset(VALUE self, VALUE rbIndex, VALUE rbValue) +{ + InlineArray* array; + + Data_Get_Struct(self, InlineArray, array); + + if (array->op != NULL) { + if (unlikely(array->componentType->nativeType == NATIVE_MAPPED)) { + rbValue = rb_funcall(((MappedType *) array->componentType)->rbConverter, + rb_intern("to_native"), 2, rbValue, Qnil); + } + array->op->put(array->memory, inline_array_offset(array, NUM2INT(rbIndex)), + rbValue); + + } else if (array->componentType->nativeType == NATIVE_STRUCT) { + int offset = inline_array_offset(array, NUM2INT(rbIndex)); + Struct* s; + + if (!rb_obj_is_kind_of(rbValue, rbffi_StructClass)) { + rb_raise(rb_eTypeError, "argument not an instance of struct"); + return Qnil; + } + + checkWrite(array->memory); + checkBounds(array->memory, offset, array->componentType->ffiType->size); + + Data_Get_Struct(rbValue, Struct, s); + checkRead(s->pointer); + checkBounds(s->pointer, 0, array->componentType->ffiType->size); + + memcpy(array->memory->address + offset, s->pointer->address, array->componentType->ffiType->size); + + } else { + ArrayType* arrayType; + Data_Get_Struct(array->field->rbType, ArrayType, arrayType); + + rb_raise(rb_eArgError, "set not supported for %s", rb_obj_classname(arrayType->rbComponentType)); + return Qnil; + } + + return rbValue; +} + +/* + * call-seq: each + * Yield block for each element of +self+. + */ +static VALUE +inline_array_each(VALUE self) +{ + InlineArray* array; + + int i; + + Data_Get_Struct(self, InlineArray, array); + + for (i = 0; i < array->length; ++i) { + rb_yield(inline_array_aref(self, INT2FIX(i))); + } + + return self; +} + +/* + * call-seq: to_a + * @return [Array] + * Convert +self+ to an array. + */ +static VALUE +inline_array_to_a(VALUE self) +{ + InlineArray* array; + VALUE obj; + int i; + + Data_Get_Struct(self, InlineArray, array); + obj = rb_ary_new2(array->length); + + + for (i = 0; i < array->length; ++i) { + rb_ary_push(obj, inline_array_aref(self, INT2FIX(i))); + } + + return obj; +} + +/* + * Document-method: FFI::StructLayout::CharArray#to_s + * call-seq: to_s + * @return [String] + * Convert +self+ to a string. + */ +static VALUE +inline_array_to_s(VALUE self) +{ + InlineArray* array; + VALUE argv[2]; + + Data_Get_Struct(self, InlineArray, array); + + if (array->componentType->nativeType != NATIVE_INT8 && array->componentType->nativeType != NATIVE_UINT8) { + VALUE dummy = Qnil; + return rb_call_super(0, &dummy); + } + + argv[0] = UINT2NUM(array->field->offset); + argv[1] = UINT2NUM(array->length); + + return rb_funcall2(array->rbMemory, rb_intern("get_string"), 2, argv); +} + +/* + * call-seq: to_ptr + * @return [AbstractMemory] + * Get pointer to +self+ content. + */ +static VALUE +inline_array_to_ptr(VALUE self) +{ + InlineArray* array; + + Data_Get_Struct(self, InlineArray, array); + + return rb_funcall(array->rbMemory, rb_intern("slice"), 2, + UINT2NUM(array->field->offset), UINT2NUM(array->arrayType->base.ffiType->size)); +} + + +void +rbffi_Struct_Init(VALUE moduleFFI) +{ + VALUE StructClass; + + rbffi_StructLayout_Init(moduleFFI); + + /* + * Document-class: FFI::Struct + * + * A FFI::Struct means to mirror a C struct. + * + * A Struct is defined as: + * class MyStruct < FFI::Struct + * layout :value1, :int, + * :value2, :double + * end + * and is used as: + * my_struct = MyStruct.new + * my_struct[:value1] = 12 + * + * For more information, see http://github.com/ffi/ffi/wiki/Structs + */ + rbffi_StructClass = rb_define_class_under(moduleFFI, "Struct", rb_cObject); + StructClass = rbffi_StructClass; // put on a line alone to help RDoc + rb_global_variable(&rbffi_StructClass); + + /* + * Document-class: FFI::Struct::InlineArray + */ + rbffi_StructInlineArrayClass = rb_define_class_under(rbffi_StructClass, "InlineArray", rb_cObject); + rb_global_variable(&rbffi_StructInlineArrayClass); + + /* + * Document-class: FFI::StructLayout::CharArray < FFI::Struct::InlineArray + */ + rbffi_StructLayoutCharArrayClass = rb_define_class_under(rbffi_StructLayoutClass, "CharArray", + rbffi_StructInlineArrayClass); + rb_global_variable(&rbffi_StructLayoutCharArrayClass); + + + rb_define_alloc_func(StructClass, struct_allocate); + rb_define_method(StructClass, "initialize", struct_initialize, -1); + rb_define_method(StructClass, "initialize_copy", struct_initialize_copy, 1); + rb_define_method(StructClass, "order", struct_order, -1); + + rb_define_alias(rb_singleton_class(StructClass), "alloc_in", "new"); + rb_define_alias(rb_singleton_class(StructClass), "alloc_out", "new"); + rb_define_alias(rb_singleton_class(StructClass), "alloc_inout", "new"); + rb_define_alias(rb_singleton_class(StructClass), "new_in", "new"); + rb_define_alias(rb_singleton_class(StructClass), "new_out", "new"); + rb_define_alias(rb_singleton_class(StructClass), "new_inout", "new"); + + rb_define_method(StructClass, "pointer", struct_get_pointer, 0); + rb_define_private_method(StructClass, "pointer=", struct_set_pointer, 1); + + rb_define_method(StructClass, "layout", struct_get_layout, 0); + rb_define_private_method(StructClass, "layout=", struct_set_layout, 1); + + rb_define_method(StructClass, "[]", struct_aref, 1); + rb_define_method(StructClass, "[]=", struct_aset, 2); + rb_define_method(StructClass, "null?", struct_null_p, 0); + + rb_include_module(rbffi_StructInlineArrayClass, rb_mEnumerable); + rb_define_alloc_func(rbffi_StructInlineArrayClass, inline_array_allocate); + rb_define_method(rbffi_StructInlineArrayClass, "initialize", inline_array_initialize, 2); + rb_define_method(rbffi_StructInlineArrayClass, "[]", inline_array_aref, 1); + rb_define_method(rbffi_StructInlineArrayClass, "[]=", inline_array_aset, 2); + rb_define_method(rbffi_StructInlineArrayClass, "each", inline_array_each, 0); + rb_define_method(rbffi_StructInlineArrayClass, "size", inline_array_size, 0); + rb_define_method(rbffi_StructInlineArrayClass, "to_a", inline_array_to_a, 0); + rb_define_method(rbffi_StructInlineArrayClass, "to_ptr", inline_array_to_ptr, 0); + + rb_define_method(rbffi_StructLayoutCharArrayClass, "to_s", inline_array_to_s, 0); + rb_define_alias(rbffi_StructLayoutCharArrayClass, "to_str", "to_s"); + + id_pointer_ivar = rb_intern("@pointer"); + id_layout_ivar = rb_intern("@layout"); + id_layout = rb_intern("layout"); + id_get = rb_intern("get"); + id_put = rb_intern("put"); + id_to_ptr = rb_intern("to_ptr"); + id_to_s = rb_intern("to_s"); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.h new file mode 100644 index 0000000000..85e826390f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Struct.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_STRUCT_H +#define RBFFI_STRUCT_H + +#include "extconf.h" +#include "AbstractMemory.h" +#include "Type.h" +#ifdef RUBY_1_9 +#include +#else +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + extern void rbffi_Struct_Init(VALUE ffiModule); + extern void rbffi_StructLayout_Init(VALUE ffiModule); + typedef struct StructField_ StructField; + typedef struct StructLayout_ StructLayout; + typedef struct Struct_ Struct; + + struct StructField_ { + Type* type; + unsigned int offset; + + int referenceIndex; + + bool referenceRequired; + VALUE rbType; + VALUE rbName; + + VALUE (*get)(StructField* field, Struct* s); + void (*put)(StructField* field, Struct* s, VALUE value); + + MemoryOp* memoryOp; + }; + + struct StructLayout_ { + Type base; + StructField** fields; + int fieldCount; + int size; + int align; + ffi_type** ffiTypes; + struct st_table* fieldSymbolTable; + + /** The number of reference tracking fields in this struct */ + int referenceFieldCount; + + VALUE rbFieldNames; + VALUE rbFieldMap; + VALUE rbFields; + }; + + struct Struct_ { + StructLayout* layout; + AbstractMemory* pointer; + VALUE* rbReferences; + + VALUE rbLayout; + VALUE rbPointer; + }; + + extern VALUE rbffi_StructClass, rbffi_StructLayoutClass; + extern VALUE rbffi_StructLayoutFieldClass, rbffi_StructLayoutFunctionFieldClass; + extern VALUE rbffi_StructLayoutArrayFieldClass; + extern VALUE rbffi_StructInlineArrayClass; + extern VALUE rbffi_StructLayoutCharArrayClass; + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_STRUCT_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.c new file mode 100644 index 0000000000..73e51116ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2010, Wayne Meissner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * The name of the author or authors may not be used to endorse or promote + * products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +# include +#endif +#include +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include + +#include +#include "rbffi.h" +#include "compat.h" + +#include "Pointer.h" +#include "Struct.h" +#include "StructByReference.h" + + +#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) + +static VALUE sbr_allocate(VALUE); +static VALUE sbr_initialize(VALUE, VALUE); +static void sbr_mark(StructByReference *); + +VALUE rbffi_StructByReferenceClass = Qnil; + +static VALUE +sbr_allocate(VALUE klass) +{ + StructByReference* sbr; + + VALUE obj = Data_Make_Struct(klass, StructByReference, sbr_mark, -1, sbr); + + sbr->rbStructClass = Qnil; + + return obj; +} + +/* + * call-seq: initialize(struc_class) + * @param [Struct] struct_calss + * @return [self] + * A new instance of StructByReference. + */ +static VALUE +sbr_initialize(VALUE self, VALUE rbStructClass) +{ + StructByReference* sbr = NULL; + + if (!rb_class_inherited_p(rbStructClass, rbffi_StructClass)) { + rb_raise(rb_eTypeError, "wrong type (expected subclass of FFI::Struct)"); + } + + Data_Get_Struct(self, StructByReference, sbr); + sbr->rbStructClass = rbStructClass; + + return self; +} + +static void +sbr_mark(StructByReference *sbr) +{ + rb_gc_mark(sbr->rbStructClass); +} + + +/* + * call-seq: struct_class + * @return [Struct] + * Get +struct_class+. + */ +static VALUE +sbr_struct_class(VALUE self) +{ + StructByReference* sbr; + + Data_Get_Struct(self, StructByReference, sbr); + + return sbr->rbStructClass; +} + +/* + * call-seq: native_type + * @return [Class] + * Always get {FFI::Type}::POINTER. + */ +static VALUE +sbr_native_type(VALUE self) +{ + return rb_const_get(rbffi_TypeClass, rb_intern("POINTER")); +} + +/* + * call-seq: to_native(value, ctx) + * @param [nil, Struct] value + * @param [nil] ctx + * @return [AbstractMemory] Pointer on +value+. + */ +static VALUE +sbr_to_native(VALUE self, VALUE value, VALUE ctx) +{ + StructByReference* sbr; + Struct* s; + + if (unlikely(value == Qnil)) { + return rbffi_NullPointerSingleton; + } + + Data_Get_Struct(self, StructByReference, sbr); + if (!rb_obj_is_kind_of(value, sbr->rbStructClass)) { + rb_raise(rb_eTypeError, "wrong argument type %s (expected %s)", + rb_obj_classname(value), + RSTRING_PTR(rb_class_name(sbr->rbStructClass))); + } + + Data_Get_Struct(value, Struct, s); + + return s->rbPointer; +} + +/* + * call-seq: from_native(value, ctx) + * @param [AbstractMemory] value + * @param [nil] ctx + * @return [Struct] + * Create a struct from content of memory +value+. + */ +static VALUE +sbr_from_native(VALUE self, VALUE value, VALUE ctx) +{ + StructByReference* sbr; + + Data_Get_Struct(self, StructByReference, sbr); + + return rb_class_new_instance(1, &value, sbr->rbStructClass); +} + + +void +rbffi_StructByReference_Init(VALUE moduleFFI) +{ + /* + * Document-class: FFI::StructByReference + * This class includes {FFI::DataConverter} module. + */ + rbffi_StructByReferenceClass = rb_define_class_under(moduleFFI, "StructByReference", rb_cObject); + rb_global_variable(&rbffi_StructByReferenceClass); + rb_include_module(rbffi_StructByReferenceClass, rb_const_get(moduleFFI, rb_intern("DataConverter"))); + + rb_define_alloc_func(rbffi_StructByReferenceClass, sbr_allocate); + rb_define_method(rbffi_StructByReferenceClass, "initialize", sbr_initialize, 1); + rb_define_method(rbffi_StructByReferenceClass, "struct_class", sbr_struct_class, 0); + rb_define_method(rbffi_StructByReferenceClass, "native_type", sbr_native_type, 0); + rb_define_method(rbffi_StructByReferenceClass, "to_native", sbr_to_native, 2); + rb_define_method(rbffi_StructByReferenceClass, "from_native", sbr_from_native, 2); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.h new file mode 100644 index 0000000000..cf797af62f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByReference.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * The name of the author or authors may not be used to endorse or promote + * products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_STRUCTBYREFERENCE_H +#define RBFFI_STRUCTBYREFERENCE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct StructByReference_ { + VALUE rbStructClass; +} StructByReference; + +void rbffi_StructByReference_Init(VALUE moduleFFI); + +extern VALUE rbffi_StructByReferenceClass; + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_STRUCTBYREFERENCE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.c new file mode 100644 index 0000000000..0d9fb9c534 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.c @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include + +#include +#include "rbffi.h" +#include "compat.h" + +#include "Type.h" +#include "StructByValue.h" +#include "Struct.h" + +#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) + +static VALUE sbv_allocate(VALUE); +static VALUE sbv_initialize(VALUE, VALUE); +static void sbv_mark(StructByValue *); +static void sbv_free(StructByValue *); + +VALUE rbffi_StructByValueClass = Qnil; + +static VALUE +sbv_allocate(VALUE klass) +{ + StructByValue* sbv; + + VALUE obj = Data_Make_Struct(klass, StructByValue, sbv_mark, sbv_free, sbv); + + sbv->rbStructClass = Qnil; + sbv->rbStructLayout = Qnil; + sbv->base.nativeType = NATIVE_STRUCT; + + sbv->base.ffiType = xcalloc(1, sizeof(*sbv->base.ffiType)); + sbv->base.ffiType->size = 0; + sbv->base.ffiType->alignment = 1; + sbv->base.ffiType->type = FFI_TYPE_STRUCT; + + return obj; +} + +static VALUE +sbv_initialize(VALUE self, VALUE rbStructClass) +{ + StructByValue* sbv = NULL; + StructLayout* layout = NULL; + VALUE rbLayout = Qnil; + + rbLayout = rb_ivar_get(rbStructClass, rb_intern("@layout")); + if (!rb_obj_is_instance_of(rbLayout, rbffi_StructLayoutClass)) { + rb_raise(rb_eTypeError, "wrong type in @layout ivar (expected FFI::StructLayout)"); + } + + Data_Get_Struct(rbLayout, StructLayout, layout); + Data_Get_Struct(self, StructByValue, sbv); + sbv->rbStructClass = rbStructClass; + sbv->rbStructLayout = rbLayout; + + /* We can just use everything from the ffi_type directly */ + *sbv->base.ffiType = *layout->base.ffiType; + + return self; +} + +static void +sbv_mark(StructByValue *sbv) +{ + rb_gc_mark(sbv->rbStructClass); + rb_gc_mark(sbv->rbStructLayout); +} + +static void +sbv_free(StructByValue *sbv) +{ + xfree(sbv->base.ffiType); + xfree(sbv); +} + + +static VALUE +sbv_layout(VALUE self) +{ + StructByValue* sbv; + + Data_Get_Struct(self, StructByValue, sbv); + return sbv->rbStructLayout; +} + +static VALUE +sbv_struct_class(VALUE self) +{ + StructByValue* sbv; + + Data_Get_Struct(self, StructByValue, sbv); + + return sbv->rbStructClass; +} + +void +rbffi_StructByValue_Init(VALUE moduleFFI) +{ + rbffi_StructByValueClass = rb_define_class_under(moduleFFI, "StructByValue", rbffi_TypeClass); + rb_global_variable(&rbffi_StructByValueClass); + rb_define_const(rbffi_TypeClass, "Struct", rbffi_StructByValueClass); + + rb_define_alloc_func(rbffi_StructByValueClass, sbv_allocate); + rb_define_method(rbffi_StructByValueClass, "initialize", sbv_initialize, 1); + rb_define_method(rbffi_StructByValueClass, "layout", sbv_layout, 0); + rb_define_method(rbffi_StructByValueClass, "struct_class", sbv_struct_class, 0); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.h new file mode 100644 index 0000000000..07b27639d1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructByValue.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_STRUCTBYVALUE_H +#define RBFFI_STRUCTBYVALUE_H + +#include +#include "Type.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct StructByValue_ { + Type base; + VALUE rbStructClass; + VALUE rbStructLayout; +} StructByValue; + +void rbffi_StructByValue_Init(VALUE moduleFFI); + +extern VALUE rbffi_StructByValueClass; + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_STRUCTBYVALUE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructLayout.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructLayout.c new file mode 100644 index 0000000000..483e532866 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/StructLayout.c @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#ifndef _MSC_VER +# include +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include "rbffi.h" +#include "compat.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "MemoryPointer.h" +#include "Function.h" +#include "Types.h" +#include "StructByValue.h" +#include "ArrayType.h" +#include "Function.h" +#include "MappedType.h" +#include "Struct.h" + +#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) + +static void struct_layout_mark(StructLayout *); +static void struct_layout_free(StructLayout *); +static void struct_field_mark(StructField* ); + +VALUE rbffi_StructLayoutFieldClass = Qnil; +VALUE rbffi_StructLayoutNumberFieldClass = Qnil, rbffi_StructLayoutPointerFieldClass = Qnil; +VALUE rbffi_StructLayoutStringFieldClass = Qnil; +VALUE rbffi_StructLayoutFunctionFieldClass = Qnil, rbffi_StructLayoutArrayFieldClass = Qnil; + +VALUE rbffi_StructLayoutClass = Qnil; + + +static VALUE +struct_field_allocate(VALUE klass) +{ + StructField* field; + VALUE obj; + + obj = Data_Make_Struct(klass, StructField, struct_field_mark, -1, field); + field->rbType = Qnil; + field->rbName = Qnil; + + return obj; +} + +static void +struct_field_mark(StructField* f) +{ + rb_gc_mark(f->rbType); + rb_gc_mark(f->rbName); +} + +/* + * call-seq: initialize(name, offset, type) + * @param [String,Symbol] name + * @param [Fixnum] offset + * @param [FFI::Type] type + * @return [self] + * A new FFI::StructLayout::Field instance. + */ +static VALUE +struct_field_initialize(int argc, VALUE* argv, VALUE self) +{ + VALUE rbOffset = Qnil, rbName = Qnil, rbType = Qnil; + StructField* field; + int nargs; + + Data_Get_Struct(self, StructField, field); + + nargs = rb_scan_args(argc, argv, "3", &rbName, &rbOffset, &rbType); + + if (TYPE(rbName) != T_SYMBOL && TYPE(rbName) != T_STRING) { + rb_raise(rb_eTypeError, "wrong argument type %s (expected Symbol/String)", + rb_obj_classname(rbName)); + } + + Check_Type(rbOffset, T_FIXNUM); + + if (!rb_obj_is_kind_of(rbType, rbffi_TypeClass)) { + rb_raise(rb_eTypeError, "wrong argument type %s (expected FFI::Type)", + rb_obj_classname(rbType)); + } + + field->offset = NUM2UINT(rbOffset); + field->rbName = (TYPE(rbName) == T_SYMBOL) ? rbName : rb_str_intern(rbName); + field->rbType = rbType; + Data_Get_Struct(field->rbType, Type, field->type); + field->memoryOp = get_memory_op(field->type); + field->referenceIndex = -1; + + switch (field->type->nativeType == NATIVE_MAPPED ? ((MappedType *) field->type)->type->nativeType : field->type->nativeType) { + case NATIVE_FUNCTION: + case NATIVE_CALLBACK: + case NATIVE_POINTER: + field->referenceRequired = true; + break; + + default: + field->referenceRequired = (rb_respond_to(self, rb_intern("reference_required?")) + && RTEST(rb_funcall2(self, rb_intern("reference_required?"), 0, NULL))) + || (rb_respond_to(rbType, rb_intern("reference_required?")) + && RTEST(rb_funcall2(rbType, rb_intern("reference_required?"), 0, NULL))); + break; + } + + return self; +} + +/* + * call-seq: offset + * @return [Numeric] + * Get the field offset. + */ +static VALUE +struct_field_offset(VALUE self) +{ + StructField* field; + Data_Get_Struct(self, StructField, field); + return UINT2NUM(field->offset); +} + +/* + * call-seq: size + * @return [Numeric] + * Get the field size. + */ +static VALUE +struct_field_size(VALUE self) +{ + StructField* field; + Data_Get_Struct(self, StructField, field); + return UINT2NUM(field->type->ffiType->size); +} + +/* + * call-seq: alignment + * @return [Numeric] + * Get the field alignment. + */ +static VALUE +struct_field_alignment(VALUE self) +{ + StructField* field; + Data_Get_Struct(self, StructField, field); + return UINT2NUM(field->type->ffiType->alignment); +} + +/* + * call-seq: type + * @return [Type] + * Get the field type. + */ +static VALUE +struct_field_type(VALUE self) +{ + StructField* field; + Data_Get_Struct(self, StructField, field); + + return field->rbType; +} + +/* + * call-seq: name + * @return [Symbol] + * Get the field name. + */ +static VALUE +struct_field_name(VALUE self) +{ + StructField* field; + Data_Get_Struct(self, StructField, field); + return field->rbName; +} + +/* + * call-seq: get(pointer) + * @param [AbstractMemory] pointer pointer on a {Struct} + * @return [Object] + * Get an object of type {#type} from memory pointed by +pointer+. + */ +static VALUE +struct_field_get(VALUE self, VALUE pointer) +{ + StructField* f; + + Data_Get_Struct(self, StructField, f); + if (f->memoryOp == NULL) { + rb_raise(rb_eArgError, "get not supported for %s", rb_obj_classname(f->rbType)); + return Qnil; + } + + return (*f->memoryOp->get)(MEMORY(pointer), f->offset); +} + +/* + * call-seq: put(pointer, value) + * @param [AbstractMemory] pointer pointer on a {Struct} + * @param [Object] value this object must be a kind of {#type} + * @return [self] + * Put an object to memory pointed by +pointer+. + */ +static VALUE +struct_field_put(VALUE self, VALUE pointer, VALUE value) +{ + StructField* f; + + Data_Get_Struct(self, StructField, f); + if (f->memoryOp == NULL) { + rb_raise(rb_eArgError, "put not supported for %s", rb_obj_classname(f->rbType)); + return self; + } + + (*f->memoryOp->put)(MEMORY(pointer), f->offset, value); + + return self; +} + +/* + * call-seq: get(pointer) + * @param [AbstractMemory] pointer pointer on a {Struct} + * @return [Function] + * Get a {Function} from memory pointed by +pointer+. + */ +static VALUE +function_field_get(VALUE self, VALUE pointer) +{ + StructField* f; + + Data_Get_Struct(self, StructField, f); + + return rbffi_Function_NewInstance(f->rbType, (*rbffi_AbstractMemoryOps.pointer->get)(MEMORY(pointer), f->offset)); +} + +/* + * call-seq: put(pointer, proc) + * @param [AbstractMemory] pointer pointer to a {Struct} + * @param [Function, Proc] proc + * @return [Function] + * Set a {Function} to memory pointed by +pointer+ as a function. + * + * If a Proc is submitted as +proc+, it is automatically transformed to a {Function}. + */ +static VALUE +function_field_put(VALUE self, VALUE pointer, VALUE proc) +{ + StructField* f; + VALUE value = Qnil; + + Data_Get_Struct(self, StructField, f); + + if (NIL_P(proc) || rb_obj_is_kind_of(proc, rbffi_FunctionClass)) { + value = proc; + } else if (rb_obj_is_kind_of(proc, rb_cProc) || rb_respond_to(proc, rb_intern("call"))) { + value = rbffi_Function_ForProc(f->rbType, proc); + } else { + rb_raise(rb_eTypeError, "wrong type (expected Proc or Function)"); + } + + (*rbffi_AbstractMemoryOps.pointer->put)(MEMORY(pointer), f->offset, value); + + return self; +} + +static inline bool +isCharArray(ArrayType* arrayType) +{ + return arrayType->componentType->nativeType == NATIVE_INT8 + || arrayType->componentType->nativeType == NATIVE_UINT8; +} + +/* + * call-seq: get(pointer) + * @param [AbstractMemory] pointer pointer on a {Struct} + * @return [FFI::StructLayout::CharArray, FFI::Struct::InlineArray] + * Get an array from a {Struct}. + */ +static VALUE +array_field_get(VALUE self, VALUE pointer) +{ + StructField* f; + ArrayType* array; + VALUE argv[2]; + + Data_Get_Struct(self, StructField, f); + Data_Get_Struct(f->rbType, ArrayType, array); + + argv[0] = pointer; + argv[1] = self; + + return rb_class_new_instance(2, argv, isCharArray(array) + ? rbffi_StructLayoutCharArrayClass : rbffi_StructInlineArrayClass); +} + +/* + * call-seq: put(pointer, value) + * @param [AbstractMemory] pointer pointer on a {Struct} + * @param [String, Array] value +value+ may be a String only if array's type is a kind of +int8+ + * @return [value] + * Set an array in a {Struct}. + */ +static VALUE +array_field_put(VALUE self, VALUE pointer, VALUE value) +{ + StructField* f; + ArrayType* array; + + + Data_Get_Struct(self, StructField, f); + Data_Get_Struct(f->rbType, ArrayType, array); + + if (isCharArray(array) && rb_obj_is_instance_of(value, rb_cString)) { + VALUE argv[2]; + + argv[0] = INT2FIX(f->offset); + argv[1] = value; + + rb_funcall2(pointer, rb_intern("put_string"), 2, argv); + + } else { +#ifdef notyet + MemoryOp* op; + int count = RARRAY_LEN(value); + int i; + AbstractMemory* memory = MEMORY(pointer); + + if (count > array->length) { + rb_raise(rb_eIndexError, "array too large"); + } + + /* clear the contents in case of a short write */ + checkWrite(memory); + checkBounds(memory, f->offset, f->type->ffiType->size); + if (count < array->length) { + memset(memory->address + f->offset + (count * array->componentType->ffiType->size), + 0, (array->length - count) * array->componentType->ffiType->size); + } + + /* now copy each element in */ + if ((op = get_memory_op(array->componentType)) != NULL) { + + for (i = 0; i < count; ++i) { + (*op->put)(memory, f->offset + (i * array->componentType->ffiType->size), rb_ary_entry(value, i)); + } + + } else if (array->componentType->nativeType == NATIVE_STRUCT) { + + for (i = 0; i < count; ++i) { + VALUE entry = rb_ary_entry(value, i); + Struct* s; + + if (!rb_obj_is_kind_of(entry, rbffi_StructClass)) { + rb_raise(rb_eTypeError, "array element not an instance of FFI::Struct"); + break; + } + + Data_Get_Struct(entry, Struct, s); + checkRead(s->pointer); + checkBounds(s->pointer, 0, array->componentType->ffiType->size); + + memcpy(memory->address + f->offset + (i * array->componentType->ffiType->size), + s->pointer->address, array->componentType->ffiType->size); + } + + } else { + rb_raise(rb_eNotImpError, "put not supported for arrays of type %s", rb_obj_classname(array->rbComponentType)); + } +#else + rb_raise(rb_eNotImpError, "cannot set array field"); +#endif + } + + return value; +} + + +static VALUE +struct_layout_allocate(VALUE klass) +{ + StructLayout* layout; + VALUE obj; + + obj = Data_Make_Struct(klass, StructLayout, struct_layout_mark, struct_layout_free, layout); + layout->rbFieldMap = Qnil; + layout->rbFieldNames = Qnil; + layout->rbFields = Qnil; + layout->fieldSymbolTable = st_init_numtable(); + layout->base.ffiType = xcalloc(1, sizeof(*layout->base.ffiType)); + layout->base.ffiType->size = 0; + layout->base.ffiType->alignment = 0; + layout->base.ffiType->type = FFI_TYPE_STRUCT; + + return obj; +} + +/* + * call-seq: initialize(fields, size, align) + * @param [Array] fields + * @param [Numeric] size + * @param [Numeric] align + * @return [self] + * A new StructLayout instance. + */ +static VALUE +struct_layout_initialize(VALUE self, VALUE fields, VALUE size, VALUE align) +{ + StructLayout* layout; + ffi_type* ltype; + int i; + + Data_Get_Struct(self, StructLayout, layout); + layout->fieldCount = (int) RARRAY_LEN(fields); + layout->rbFieldMap = rb_hash_new(); + layout->rbFieldNames = rb_ary_new2(layout->fieldCount); + layout->size = (int) FFI_ALIGN(NUM2INT(size), NUM2INT(align)); + layout->align = NUM2INT(align); + layout->fields = xcalloc(layout->fieldCount, sizeof(StructField *)); + layout->ffiTypes = xcalloc(layout->fieldCount + 1, sizeof(ffi_type *)); + layout->rbFields = rb_ary_new2(layout->fieldCount); + layout->referenceFieldCount = 0; + layout->base.ffiType->elements = layout->ffiTypes; + layout->base.ffiType->size = layout->size; + layout->base.ffiType->alignment = layout->align; + + ltype = layout->base.ffiType; + for (i = 0; i < (int) layout->fieldCount; ++i) { + VALUE rbField = rb_ary_entry(fields, i); + VALUE rbName; + StructField* field; + ffi_type* ftype; + + + if (!rb_obj_is_kind_of(rbField, rbffi_StructLayoutFieldClass)) { + rb_raise(rb_eTypeError, "wrong type for field %d.", i); + } + rbName = rb_funcall2(rbField, rb_intern("name"), 0, NULL); + + Data_Get_Struct(rbField, StructField, field); + layout->fields[i] = field; + + if (field->type == NULL || field->type->ffiType == NULL) { + rb_raise(rb_eRuntimeError, "type of field %d not supported", i); + } + + ftype = field->type->ffiType; + if (ftype->size == 0 && i < ((int) layout->fieldCount - 1)) { + rb_raise(rb_eTypeError, "type of field %d has zero size", i); + } + + if (field->referenceRequired) { + field->referenceIndex = layout->referenceFieldCount++; + } + + + layout->ffiTypes[i] = ftype->size > 0 ? ftype : NULL; + st_insert(layout->fieldSymbolTable, rbName, rbField); + rb_hash_aset(layout->rbFieldMap, rbName, rbField); + rb_ary_push(layout->rbFields, rbField); + rb_ary_push(layout->rbFieldNames, rbName); + } + + if (ltype->size == 0) { + rb_raise(rb_eRuntimeError, "Struct size is zero"); + } + + return self; +} + +/* + * call-seq: [](field) + * @param [Symbol] field + * @return [StructLayout::Field] + * Get a field from the layout. + */ +static VALUE +struct_layout_union_bang(VALUE self) +{ + const ffi_type *alignment_types[] = { &ffi_type_sint8, &ffi_type_sint16, &ffi_type_sint32, &ffi_type_sint64, + &ffi_type_float, &ffi_type_double, &ffi_type_longdouble, NULL }; + StructLayout* layout; + ffi_type *t = NULL; + int count, i; + + Data_Get_Struct(self, StructLayout, layout); + + for (i = 0; alignment_types[i] != NULL; ++i) { + if (alignment_types[i]->alignment == layout->align) { + t = (ffi_type *) alignment_types[i]; + break; + } + } + if (t == NULL) { + rb_raise(rb_eRuntimeError, "cannot create libffi union representation for alignment %d", layout->align); + return Qnil; + } + + count = (int) layout->size / (int) t->size; + xfree(layout->ffiTypes); + layout->ffiTypes = xcalloc(count + 1, sizeof(ffi_type *)); + layout->base.ffiType->elements = layout->ffiTypes; + + for (i = 0; i < count; ++i) { + layout->ffiTypes[i] = t; + } + + return self; +} + +static VALUE +struct_layout_aref(VALUE self, VALUE field) +{ + StructLayout* layout; + + Data_Get_Struct(self, StructLayout, layout); + + return rb_hash_aref(layout->rbFieldMap, field); +} + +/* + * call-seq: fields + * @return [Array] + * Get fields list. + */ +static VALUE +struct_layout_fields(VALUE self) +{ + StructLayout* layout; + + Data_Get_Struct(self, StructLayout, layout); + + return rb_ary_dup(layout->rbFields); +} + +/* + * call-seq: members + * @return [Array] + * Get list of field names. + */ +static VALUE +struct_layout_members(VALUE self) +{ + StructLayout* layout; + + Data_Get_Struct(self, StructLayout, layout); + + return rb_ary_dup(layout->rbFieldNames); +} + +/* + * call-seq: to_a + * @return [Array] + * Get an array of fields. + */ +static VALUE +struct_layout_to_a(VALUE self) +{ + StructLayout* layout; + + Data_Get_Struct(self, StructLayout, layout); + + return rb_ary_dup(layout->rbFields); +} + +static void +struct_layout_mark(StructLayout *layout) +{ + rb_gc_mark(layout->rbFieldMap); + rb_gc_mark(layout->rbFieldNames); + rb_gc_mark(layout->rbFields); +} + +static void +struct_layout_free(StructLayout *layout) +{ + xfree(layout->ffiTypes); + xfree(layout->base.ffiType); + xfree(layout->fields); + st_free_table(layout->fieldSymbolTable); + xfree(layout); +} + + +void +rbffi_StructLayout_Init(VALUE moduleFFI) +{ + VALUE ffi_Type = rbffi_TypeClass; + + /* + * Document-class: FFI::StructLayout < FFI::Type + * + * This class aims at defining a struct layout. + */ + rbffi_StructLayoutClass = rb_define_class_under(moduleFFI, "StructLayout", ffi_Type); + rb_global_variable(&rbffi_StructLayoutClass); + + /* + * Document-class: FFI::StructLayout::Field + * A field in a {StructLayout}. + */ + rbffi_StructLayoutFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "Field", rb_cObject); + rb_global_variable(&rbffi_StructLayoutFieldClass); + + /* + * Document-class: FFI::StructLayout::Number + * A numeric {Field} in a {StructLayout}. + */ + rbffi_StructLayoutNumberFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "Number", rbffi_StructLayoutFieldClass); + rb_global_variable(&rbffi_StructLayoutNumberFieldClass); + + /* + * Document-class: FFI::StructLayout::String + * A string {Field} in a {StructLayout}. + */ + rbffi_StructLayoutStringFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "String", rbffi_StructLayoutFieldClass); + rb_global_variable(&rbffi_StructLayoutStringFieldClass); + + /* + * Document-class: FFI::StructLayout::Pointer + * A pointer {Field} in a {StructLayout}. + */ + rbffi_StructLayoutPointerFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "Pointer", rbffi_StructLayoutFieldClass); + rb_global_variable(&rbffi_StructLayoutPointerFieldClass); + + /* + * Document-class: FFI::StructLayout::Function + * A function pointer {Field} in a {StructLayout}. + */ + rbffi_StructLayoutFunctionFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "Function", rbffi_StructLayoutFieldClass); + rb_global_variable(&rbffi_StructLayoutFunctionFieldClass); + + /* + * Document-class: FFI::StructLayout::Array + * An array {Field} in a {StructLayout}. + */ + rbffi_StructLayoutArrayFieldClass = rb_define_class_under(rbffi_StructLayoutClass, "Array", rbffi_StructLayoutFieldClass); + rb_global_variable(&rbffi_StructLayoutArrayFieldClass); + + rb_define_alloc_func(rbffi_StructLayoutFieldClass, struct_field_allocate); + rb_define_method(rbffi_StructLayoutFieldClass, "initialize", struct_field_initialize, -1); + rb_define_method(rbffi_StructLayoutFieldClass, "offset", struct_field_offset, 0); + rb_define_method(rbffi_StructLayoutFieldClass, "size", struct_field_size, 0); + rb_define_method(rbffi_StructLayoutFieldClass, "alignment", struct_field_alignment, 0); + rb_define_method(rbffi_StructLayoutFieldClass, "name", struct_field_name, 0); + rb_define_method(rbffi_StructLayoutFieldClass, "type", struct_field_type, 0); + rb_define_method(rbffi_StructLayoutFieldClass, "put", struct_field_put, 2); + rb_define_method(rbffi_StructLayoutFieldClass, "get", struct_field_get, 1); + + rb_define_method(rbffi_StructLayoutFunctionFieldClass, "put", function_field_put, 2); + rb_define_method(rbffi_StructLayoutFunctionFieldClass, "get", function_field_get, 1); + + rb_define_method(rbffi_StructLayoutArrayFieldClass, "get", array_field_get, 1); + rb_define_method(rbffi_StructLayoutArrayFieldClass, "put", array_field_put, 2); + + rb_define_alloc_func(rbffi_StructLayoutClass, struct_layout_allocate); + rb_define_method(rbffi_StructLayoutClass, "initialize", struct_layout_initialize, 3); + rb_define_method(rbffi_StructLayoutClass, "[]", struct_layout_aref, 1); + rb_define_method(rbffi_StructLayoutClass, "fields", struct_layout_fields, 0); + rb_define_method(rbffi_StructLayoutClass, "members", struct_layout_members, 0); + rb_define_method(rbffi_StructLayoutClass, "to_a", struct_layout_to_a, 0); + rb_define_method(rbffi_StructLayoutClass, "__union!", struct_layout_union_bang, 0); + +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.c new file mode 100644 index 0000000000..e85ea40b20 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.c @@ -0,0 +1,353 @@ +/* + * Copyright (c) 2010 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#ifndef _MSC_VER +#include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif + +#if defined(__CYGWIN__) || !defined(_WIN32) +# include +# include +# include +# include +#else +# include +# define _WINSOCKAPI_ +# include +#endif +#include +#include "Thread.h" + +#ifdef _WIN32 +static volatile DWORD frame_thread_key = TLS_OUT_OF_INDEXES; +#else +static pthread_key_t thread_data_key; +struct thread_data { + rbffi_frame_t* frame; +}; +static inline struct thread_data* thread_data_get(void); + +#endif + +rbffi_frame_t* +rbffi_frame_current(void) +{ +#ifdef _WIN32 + return (rbffi_frame_t *) TlsGetValue(frame_thread_key); +#else + struct thread_data* td = (struct thread_data *) pthread_getspecific(thread_data_key); + return td != NULL ? td->frame : NULL; +#endif +} + +void +rbffi_frame_push(rbffi_frame_t* frame) +{ + memset(frame, 0, sizeof(*frame)); + frame->has_gvl = true; + frame->exc = Qnil; + +#ifdef _WIN32 + frame->prev = TlsGetValue(frame_thread_key); + TlsSetValue(frame_thread_key, frame); +#else + frame->td = thread_data_get(); + frame->prev = frame->td->frame; + frame->td->frame = frame; +#endif +} + +void +rbffi_frame_pop(rbffi_frame_t* frame) +{ +#ifdef _WIN32 + TlsSetValue(frame_thread_key, frame->prev); +#else + frame->td->frame = frame->prev; +#endif +} + +#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)) + +#if !defined(_WIN32) + +struct BlockingThread { + pthread_t tid; + VALUE (*fn)(void *); + void *data; + void (*ubf)(void *); + void *data2; + VALUE retval; + int wrfd; + int rdfd; +}; + +static void* +rbffi_blocking_thread(void* args) +{ + struct BlockingThread* thr = (struct BlockingThread *) args; + char c = 1; + VALUE retval; + + retval = (*thr->fn)(thr->data); + + pthread_testcancel(); + + thr->retval = retval; + + write(thr->wrfd, &c, sizeof(c)); + + return NULL; +} + +static VALUE +wait_for_thread(void *data) +{ + struct BlockingThread* thr = (struct BlockingThread *) data; + char c; + + if (read(thr->rdfd, &c, 1) < 1) { + rb_thread_wait_fd(thr->rdfd); + while (read(thr->rdfd, &c, 1) < 1 && rb_io_wait_readable(thr->rdfd) == Qtrue) { + ; + } + } + + return Qnil; +} + +static VALUE +cleanup_blocking_thread(void *data, VALUE exc) +{ + struct BlockingThread* thr = (struct BlockingThread *) data; + + if (thr->ubf != (void (*)(void *)) -1) { + (*thr->ubf)(thr->data2); + } else { + pthread_kill(thr->tid, SIGVTALRM); + } + + return exc; +} + +VALUE +rbffi_thread_blocking_region(VALUE (*func)(void *), void *data1, void (*ubf)(void *), void *data2) +{ + struct BlockingThread* thr; + int fd[2]; + VALUE exc; + + if (pipe(fd) < 0) { + rb_raise(rb_eSystemCallError, "pipe(2) failed"); + return Qnil; + } + fcntl(fd[0], F_SETFL, fcntl(fd[0], F_GETFL) | O_NONBLOCK); + + thr = ALLOC_N(struct BlockingThread, 1); + thr->rdfd = fd[0]; + thr->wrfd = fd[1]; + thr->fn = func; + thr->data = data1; + thr->ubf = ubf; + thr->data2 = data2; + thr->retval = Qnil; + + if (pthread_create(&thr->tid, NULL, rbffi_blocking_thread, thr) != 0) { + close(fd[0]); + close(fd[1]); + xfree(thr); + rb_raise(rb_eSystemCallError, "pipe(2) failed"); + return Qnil; + } + + exc = rb_rescue2(wait_for_thread, (VALUE) thr, cleanup_blocking_thread, (VALUE) thr, + rb_eException); + + pthread_join(thr->tid, NULL); + close(fd[1]); + close(fd[0]); + xfree(thr); + + if (exc != Qnil) { + rb_exc_raise(exc); + } + + return thr->retval; +} + +#else +/* win32 implementation */ + +struct BlockingThread { + HANDLE tid; + VALUE (*fn)(void *); + void *data; + void (*ubf)(void *); + void *data2; + VALUE retval; + int wrfd; + int rdfd; +}; + +static DWORD __stdcall +rbffi_blocking_thread(LPVOID args) +{ + struct BlockingThread* thr = (struct BlockingThread *) args; + char c = 1; + VALUE retval; + + retval = (*thr->fn)(thr->data); + thr->retval = retval; + + write(thr->wrfd, &c, sizeof(c)); + + return 0; +} + +static VALUE +wait_for_thread(void *data) +{ + struct BlockingThread* thr = (struct BlockingThread *) data; + char c, res; + fd_set rfds; + + FD_ZERO(&rfds); + FD_SET(thr->rdfd, &rfds); + rb_thread_select(thr->rdfd + 1, &rfds, NULL, NULL, NULL); + read(thr->rdfd, &c, 1); + return Qnil; +} + +static VALUE +cleanup_blocking_thread(void *data, VALUE exc) +{ + struct BlockingThread* thr = (struct BlockingThread *) data; + + if (thr->ubf != (void (*)(void *)) -1) { + (*thr->ubf)(thr->data2); + } else { + TerminateThread(thr->tid, 0); + } + + return exc; +} + +VALUE +rbffi_thread_blocking_region(VALUE (*func)(void *), void *data1, void (*ubf)(void *), void *data2) +{ + struct BlockingThread* thr; + int fd[2]; + VALUE exc; + DWORD state; + DWORD res; + + if (_pipe(fd, 1024, O_BINARY) == -1) { + rb_raise(rb_eSystemCallError, "_pipe() failed"); + return Qnil; + } + + thr = ALLOC_N(struct BlockingThread, 1); + thr->rdfd = fd[0]; + thr->wrfd = fd[1]; + thr->fn = func; + thr->data = data1; + thr->ubf = ubf; + thr->data2 = data2; + thr->retval = Qnil; + + thr->tid = CreateThread(NULL, 0, rbffi_blocking_thread, thr, 0, NULL); + if (!thr->tid) { + close(fd[0]); + close(fd[1]); + xfree(thr); + rb_raise(rb_eSystemCallError, "CreateThread() failed"); + return Qnil; + } + + exc = rb_rescue2(wait_for_thread, (VALUE) thr, cleanup_blocking_thread, (VALUE) thr, + rb_eException); + + /* The thread should be finished, already. */ + WaitForSingleObject(thr->tid, INFINITE); + CloseHandle(thr->tid); + close(fd[1]); + close(fd[0]); + xfree(thr); + + if (exc != Qnil) { + rb_exc_raise(exc); + } + + return thr->retval; +} + +#endif /* !_WIN32 */ + +#endif /* HAVE_RB_THREAD_BLOCKING_REGION */ + +#ifndef _WIN32 +static struct thread_data* thread_data_init(void); + +static inline struct thread_data* +thread_data_get(void) +{ + struct thread_data* td = (struct thread_data *) pthread_getspecific(thread_data_key); + return td != NULL ? td : thread_data_init(); +} + +static struct thread_data* +thread_data_init(void) +{ + struct thread_data* td = calloc(1, sizeof(struct thread_data)); + + pthread_setspecific(thread_data_key, td); + + return td; +} + +static void +thread_data_free(void *ptr) +{ + free(ptr); +} +#endif + +void +rbffi_Thread_Init(VALUE moduleFFI) +{ +#ifdef _WIN32 + frame_thread_key = TlsAlloc(); +#else + pthread_key_create(&thread_data_key, thread_data_free); +#endif +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.h new file mode 100644 index 0000000000..c51a5a93e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Thread.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2010 Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_THREAD_H +#define RBFFI_THREAD_H + +#ifndef _MSC_VER +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include +#include "extconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef _WIN32 +# include +#else +# include +#endif + +typedef struct { +#ifdef _WIN32 + DWORD id; +#else + pthread_t id; +#endif + bool valid; + bool has_gvl; + VALUE exc; +} rbffi_thread_t; + +typedef struct rbffi_frame { +#ifndef _WIN32 + struct thread_data* td; +#endif + struct rbffi_frame* prev; + bool has_gvl; + VALUE exc; +} rbffi_frame_t; + +rbffi_frame_t* rbffi_frame_current(void); +void rbffi_frame_push(rbffi_frame_t* frame); +void rbffi_frame_pop(rbffi_frame_t* frame); + +#ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL +# define rbffi_thread_blocking_region rb_thread_call_without_gvl + +#elif defined(HAVE_RB_THREAD_BLOCKING_REGION) +# define rbffi_thread_blocking_region rb_thread_blocking_region + +#else + +VALUE rbffi_thread_blocking_region(VALUE (*func)(void *), void *data1, void (*ubf)(void *), void *data2); + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_THREAD_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.c new file mode 100644 index 0000000000..034482f2c4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.c @@ -0,0 +1,397 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif + +#include +#include +#include +#include "rbffi.h" +#include "compat.h" +#include "Types.h" +#include "Type.h" + + +typedef struct BuiltinType_ { + Type type; + char* name; +} BuiltinType; + +static void builtin_type_free(BuiltinType *); + +VALUE rbffi_TypeClass = Qnil; + +static VALUE classBuiltinType = Qnil; +static VALUE moduleNativeType = Qnil; +static VALUE typeMap = Qnil, sizeMap = Qnil; +static ID id_find_type = 0, id_type_size = 0, id_size = 0; + +static VALUE +type_allocate(VALUE klass) +{ + Type* type; + VALUE obj = Data_Make_Struct(klass, Type, NULL, -1, type); + + type->nativeType = -1; + type->ffiType = &ffi_type_void; + + return obj; +} + +/* + * Document-method: initialize + * call-seq: initialize(value) + * @param [Fixnum,Type] value + * @return [self] + */ +static VALUE +type_initialize(VALUE self, VALUE value) +{ + Type* type; + Type* other; + + Data_Get_Struct(self, Type, type); + + if (FIXNUM_P(value)) { + type->nativeType = FIX2INT(value); + } else if (rb_obj_is_kind_of(value, rbffi_TypeClass)) { + Data_Get_Struct(value, Type, other); + type->nativeType = other->nativeType; + type->ffiType = other->ffiType; + } else { + rb_raise(rb_eArgError, "wrong type"); + } + + return self; +} + +/* + * call-seq: type.size + * @return [Fixnum] + * Return type's size, in bytes. + */ +static VALUE +type_size(VALUE self) +{ + Type *type; + + Data_Get_Struct(self, Type, type); + + return INT2FIX(type->ffiType->size); +} + +/* + * call-seq: type.alignment + * @return [Fixnum] + * Get Type alignment. + */ +static VALUE +type_alignment(VALUE self) +{ + Type *type; + + Data_Get_Struct(self, Type, type); + + return INT2FIX(type->ffiType->alignment); +} + +/* + * call-seq: type.inspect + * @return [String] + * Inspect {Type} object. + */ +static VALUE +type_inspect(VALUE self) +{ + char buf[100]; + Type *type; + + Data_Get_Struct(self, Type, type); + + snprintf(buf, sizeof(buf), "#<%s:%p size=%d alignment=%d>", + rb_obj_classname(self), type, (int) type->ffiType->size, (int) type->ffiType->alignment); + + return rb_str_new2(buf); +} + +static VALUE +builtin_type_new(VALUE klass, int nativeType, ffi_type* ffiType, const char* name) +{ + BuiltinType* type; + VALUE obj = Qnil; + + obj = Data_Make_Struct(klass, BuiltinType, NULL, builtin_type_free, type); + + type->name = strdup(name); + type->type.nativeType = nativeType; + type->type.ffiType = ffiType; + + return obj; +} + +static void +builtin_type_free(BuiltinType *type) +{ + free(type->name); + xfree(type); +} + +/* + * call-seq: type.inspect + * @return [String] + * Inspect {Type::Builtin} object. + */ +static VALUE +builtin_type_inspect(VALUE self) +{ + char buf[100]; + BuiltinType *type; + + Data_Get_Struct(self, BuiltinType, type); + snprintf(buf, sizeof(buf), "#<%s:%s size=%d alignment=%d>", + rb_obj_classname(self), type->name, (int) type->type.ffiType->size, type->type.ffiType->alignment); + + return rb_str_new2(buf); +} + +int +rbffi_type_size(VALUE type) +{ + int t = TYPE(type); + + if (t == T_FIXNUM || t == T_BIGNUM) { + return NUM2INT(type); + + } else if (t == T_SYMBOL) { + /* + * Try looking up directly in the type and size maps + */ + VALUE nType; + if ((nType = rb_hash_lookup(typeMap, type)) != Qnil) { + if (rb_obj_is_kind_of(nType, rbffi_TypeClass)) { + Type* type; + Data_Get_Struct(nType, Type, type); + return (int) type->ffiType->size; + + } else if (rb_respond_to(nType, id_size)) { + return NUM2INT(rb_funcall2(nType, id_size, 0, NULL)); + } + } + + /* Not found - call up to the ruby version to resolve */ + return NUM2INT(rb_funcall2(rbffi_FFIModule, id_type_size, 1, &type)); + + } else { + return NUM2INT(rb_funcall2(type, id_size, 0, NULL)); + } +} + +VALUE +rbffi_Type_Lookup(VALUE name) +{ + int t = TYPE(name); + if (t == T_SYMBOL || t == T_STRING) { + /* + * Try looking up directly in the type Map + */ + VALUE nType; + if ((nType = rb_hash_lookup(typeMap, name)) != Qnil && rb_obj_is_kind_of(nType, rbffi_TypeClass)) { + return nType; + } + } else if (rb_obj_is_kind_of(name, rbffi_TypeClass)) { + + return name; + } + + /* Nothing found - let caller handle raising exceptions */ + return Qnil; +} + +/** + * rbffi_Type_Find() is like rbffi_Type_Lookup, but an error is raised if the + * type is not found. + */ +VALUE +rbffi_Type_Find(VALUE name) +{ + VALUE rbType = rbffi_Type_Lookup(name); + + if (!RTEST(rbType)) { + VALUE s = rb_inspect(name); + rb_raise(rb_eTypeError, "invalid type, %s", RSTRING_PTR(s)); + RB_GC_GUARD(s); + } + + return rbType; +} + +void +rbffi_Type_Init(VALUE moduleFFI) +{ + /* + * Document-class: FFI::Type + * This class manages C types. + * + * It embbed {FFI::Type::Builtin} objects as constants (for names, + * see {FFI::NativeType}). + */ + rbffi_TypeClass = rb_define_class_under(moduleFFI, "Type", rb_cObject); + + /* + * Document-constant: FFI::TypeDefs + */ + rb_define_const(moduleFFI, "TypeDefs", typeMap = rb_hash_new()); + rb_define_const(moduleFFI, "SizeTypes", sizeMap = rb_hash_new()); + rb_global_variable(&typeMap); + rb_global_variable(&sizeMap); + id_find_type = rb_intern("find_type"); + id_type_size = rb_intern("type_size"); + id_size = rb_intern("size"); + + /* + * Document-class: FFI::Type::Builtin + * Class for Built-in types. + */ + classBuiltinType = rb_define_class_under(rbffi_TypeClass, "Builtin", rbffi_TypeClass); + /* + * Document-module: FFI::NativeType + * This module defines constants for native (C) types. + * + * ==Native type constants + * Native types are defined by constants : + * * INT8, SCHAR, CHAR + * * UINT8, UCHAR + * * INT16, SHORT, SSHORT + * * UINT16, USHORT + * * INT32,, INT, SINT + * * UINT32, UINT + * * INT64, LONG_LONG, SLONG_LONG + * * UINT64, ULONG_LONG + * * LONG, SLONG + * * ULONG + * * FLOAT32, FLOAT + * * FLOAT64, DOUBLE + * * POINTER + * * CALLBACK + * * FUNCTION + * * CHAR_ARRAY + * * BOOL + * * STRING (immutable string, nul terminated) + * * STRUCT (struct-b-value param or result) + * * ARRAY (array type definition) + * * MAPPED (custom native type) + * For function return type only : + * * VOID + * For function argument type only : + * * BUFFER_IN + * * BUFFER_OUT + * * VARARGS (function takes a variable number of arguments) + * + * All these constants are exported to {FFI} module prefixed with "TYPE_". + * They are objets from {FFI::Type::Builtin} class. + */ + moduleNativeType = rb_define_module_under(moduleFFI, "NativeType"); + + /* + * Document-global: FFI::Type + */ + rb_global_variable(&rbffi_TypeClass); + rb_global_variable(&classBuiltinType); + rb_global_variable(&moduleNativeType); + + rb_define_alloc_func(rbffi_TypeClass, type_allocate); + rb_define_method(rbffi_TypeClass, "initialize", type_initialize, 1); + rb_define_method(rbffi_TypeClass, "size", type_size, 0); + rb_define_method(rbffi_TypeClass, "alignment", type_alignment, 0); + rb_define_method(rbffi_TypeClass, "inspect", type_inspect, 0); + + /* Make Type::Builtin non-allocatable */ + rb_undef_method(CLASS_OF(classBuiltinType), "new"); + rb_define_method(classBuiltinType, "inspect", builtin_type_inspect, 0); + + rb_global_variable(&rbffi_TypeClass); + rb_global_variable(&classBuiltinType); + + /* Define all the builtin types */ + #define T(x, ffiType) do { \ + VALUE t = Qnil; \ + rb_define_const(rbffi_TypeClass, #x, t = builtin_type_new(classBuiltinType, NATIVE_##x, ffiType, #x)); \ + rb_define_const(moduleNativeType, #x, t); \ + rb_define_const(moduleFFI, "TYPE_" #x, t); \ + } while(0) + + #define A(old_type, new_type) do { \ + VALUE t = rb_const_get(rbffi_TypeClass, rb_intern(#old_type)); \ + rb_const_set(rbffi_TypeClass, rb_intern(#new_type), t); \ + } while(0) + + /* + * Document-constant: FFI::Type::Builtin::VOID + */ + T(VOID, &ffi_type_void); + T(INT8, &ffi_type_sint8); + A(INT8, SCHAR); + A(INT8, CHAR); + T(UINT8, &ffi_type_uint8); + A(UINT8, UCHAR); + + T(INT16, &ffi_type_sint16); + A(INT16, SHORT); + A(INT16, SSHORT); + T(UINT16, &ffi_type_uint16); + A(UINT16, USHORT); + T(INT32, &ffi_type_sint32); + A(INT32, INT); + A(INT32, SINT); + T(UINT32, &ffi_type_uint32); + A(UINT32, UINT); + T(INT64, &ffi_type_sint64); + A(INT64, LONG_LONG); + A(INT64, SLONG_LONG); + T(UINT64, &ffi_type_uint64); + A(UINT64, ULONG_LONG); + T(LONG, &ffi_type_slong); + A(LONG, SLONG); + T(ULONG, &ffi_type_ulong); + T(FLOAT32, &ffi_type_float); + A(FLOAT32, FLOAT); + T(FLOAT64, &ffi_type_double); + A(FLOAT64, DOUBLE); + T(LONGDOUBLE, &ffi_type_longdouble); + T(POINTER, &ffi_type_pointer); + T(STRING, &ffi_type_pointer); + T(BUFFER_IN, &ffi_type_pointer); + T(BUFFER_OUT, &ffi_type_pointer); + T(BUFFER_INOUT, &ffi_type_pointer); + T(BOOL, &ffi_type_uchar); + T(VARARGS, &ffi_type_void); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.h new file mode 100644 index 0000000000..d5522ee8a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Type.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * Copyright (C) 2009 Luc Heinrich + * + * This file is part of ruby-ffi. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the Evan Phoenix nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef RBFFI_TYPE_H +#define RBFFI_TYPE_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct Type_ Type; + +#include "Types.h" + +struct Type_ { + NativeType nativeType; + ffi_type* ffiType; +}; + +extern VALUE rbffi_TypeClass; +extern VALUE rbffi_Type_Lookup(VALUE type); +extern VALUE rbffi_Type_Find(VALUE type); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_TYPE_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.c new file mode 100644 index 0000000000..bccf8943f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.c @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * Copyright (c) 2009, Aman Gupta. + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "Pointer.h" +#include "rbffi.h" +#include "Function.h" +#include "StructByValue.h" +#include "Types.h" +#include "Struct.h" +#include "MappedType.h" +#include "MemoryPointer.h" +#include "LongDouble.h" + +static ID id_from_native = 0; + + +VALUE +rbffi_NativeValue_ToRuby(Type* type, VALUE rbType, const void* ptr) +{ + switch (type->nativeType) { + case NATIVE_VOID: + return Qnil; + case NATIVE_INT8: + return INT2NUM((signed char) *(ffi_sarg *) ptr); + case NATIVE_INT16: + return INT2NUM((signed short) *(ffi_sarg *) ptr); + case NATIVE_INT32: + return INT2NUM((signed int) *(ffi_sarg *) ptr); + case NATIVE_LONG: + return LONG2NUM((signed long) *(ffi_sarg *) ptr); + case NATIVE_INT64: + return LL2NUM(*(signed long long *) ptr); + + case NATIVE_UINT8: + return UINT2NUM((unsigned char) *(ffi_arg *) ptr); + case NATIVE_UINT16: + return UINT2NUM((unsigned short) *(ffi_arg *) ptr); + case NATIVE_UINT32: + return UINT2NUM((unsigned int) *(ffi_arg *) ptr); + case NATIVE_ULONG: + return ULONG2NUM((unsigned long) *(ffi_arg *) ptr); + case NATIVE_UINT64: + return ULL2NUM(*(unsigned long long *) ptr); + + case NATIVE_FLOAT32: + return rb_float_new(*(float *) ptr); + case NATIVE_FLOAT64: + return rb_float_new(*(double *) ptr); + + case NATIVE_LONGDOUBLE: + return rbffi_longdouble_new(*(long double *) ptr); + + case NATIVE_STRING: + return (*(void **) ptr != NULL) ? rb_tainted_str_new2(*(char **) ptr) : Qnil; + case NATIVE_POINTER: + return rbffi_Pointer_NewInstance(*(void **) ptr); + case NATIVE_BOOL: + return ((unsigned char) *(ffi_arg *) ptr) ? Qtrue : Qfalse; + + case NATIVE_FUNCTION: + case NATIVE_CALLBACK: { + return *(void **) ptr != NULL + ? rbffi_Function_NewInstance(rbType, rbffi_Pointer_NewInstance(*(void **) ptr)) + : Qnil; + } + + case NATIVE_STRUCT: { + StructByValue* sbv = (StructByValue *)type; + AbstractMemory* mem; + VALUE rbMemory = rbffi_MemoryPointer_NewInstance(1, sbv->base.ffiType->size, false); + + Data_Get_Struct(rbMemory, AbstractMemory, mem); + memcpy(mem->address, ptr, sbv->base.ffiType->size); + RB_GC_GUARD(rbMemory); + RB_GC_GUARD(rbType); + + return rb_class_new_instance(1, &rbMemory, sbv->rbStructClass); + } + + case NATIVE_MAPPED: { + /* + * For mapped types, first convert to the real native type, then upcall to + * ruby to convert to the expected return type + */ + MappedType* m = (MappedType *) type; + VALUE values[2], rbReturnValue; + + values[0] = rbffi_NativeValue_ToRuby(m->type, m->rbType, ptr); + values[1] = Qnil; + + + rbReturnValue = rb_funcall2(m->rbConverter, id_from_native, 2, values); + RB_GC_GUARD(values[0]); + RB_GC_GUARD(rbType); + + return rbReturnValue; + } + + default: + rb_raise(rb_eRuntimeError, "Unknown type: %d", type->nativeType); + return Qnil; + } +} + +void +rbffi_Types_Init(VALUE moduleFFI) +{ + id_from_native = rb_intern("from_native"); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.h new file mode 100644 index 0000000000..0d4806f85a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Types.h @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (c) 2009, Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_TYPES_H +#define RBFFI_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + NATIVE_VOID, + NATIVE_INT8, + NATIVE_UINT8, + NATIVE_INT16, + NATIVE_UINT16, + NATIVE_INT32, + NATIVE_UINT32, + NATIVE_INT64, + NATIVE_UINT64, + NATIVE_LONG, + NATIVE_ULONG, + NATIVE_FLOAT32, + NATIVE_FLOAT64, + NATIVE_LONGDOUBLE, + NATIVE_POINTER, + NATIVE_CALLBACK, + NATIVE_FUNCTION, + NATIVE_BUFFER_IN, + NATIVE_BUFFER_OUT, + NATIVE_BUFFER_INOUT, + NATIVE_CHAR_ARRAY, + NATIVE_BOOL, + + /** An immutable string. Nul terminated, but only copies in to the native function */ + NATIVE_STRING, + + /** The function takes a variable number of arguments */ + NATIVE_VARARGS, + + /** Struct-by-value param or result */ + NATIVE_STRUCT, + + /** An array type definition */ + NATIVE_ARRAY, + + /** Custom native type */ + NATIVE_MAPPED, +} NativeType; + +#include +#include "Type.h" + +VALUE rbffi_NativeValue_ToRuby(Type* type, VALUE rbType, const void* ptr); +void rbffi_Types_Init(VALUE moduleFFI); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_TYPES_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Variadic.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Variadic.c new file mode 100644 index 0000000000..877ffaba56 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/Variadic.c @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2008-2010 Wayne Meissner + * Copyright (C) 2009 Andrea Fazzi + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MSC_VER +#include +#endif +#include + +#include +#ifndef _MSC_VER +# include +# include +#else +# include "win32/stdbool.h" +# include "win32/stdint.h" +#endif +#include + +#include +#include "rbffi.h" +#include "compat.h" + +#include "AbstractMemory.h" +#include "Pointer.h" +#include "Types.h" +#include "Type.h" +#include "LastError.h" +#include "MethodHandle.h" +#include "Call.h" +#include "Thread.h" + +typedef struct VariadicInvoker_ { + VALUE rbAddress; + VALUE rbReturnType; + VALUE rbEnums; + + Type* returnType; + ffi_abi abi; + void* function; + int paramCount; + bool blocking; +} VariadicInvoker; + + +static VALUE variadic_allocate(VALUE klass); +static VALUE variadic_initialize(VALUE self, VALUE rbFunction, VALUE rbParameterTypes, + VALUE rbReturnType, VALUE options); +static void variadic_mark(VariadicInvoker *); + +static VALUE classVariadicInvoker = Qnil; + + +static VALUE +variadic_allocate(VALUE klass) +{ + VariadicInvoker *invoker; + VALUE obj = Data_Make_Struct(klass, VariadicInvoker, variadic_mark, -1, invoker); + + invoker->rbAddress = Qnil; + invoker->rbEnums = Qnil; + invoker->rbReturnType = Qnil; + invoker->blocking = false; + + return obj; +} + +static void +variadic_mark(VariadicInvoker *invoker) +{ + rb_gc_mark(invoker->rbEnums); + rb_gc_mark(invoker->rbAddress); + rb_gc_mark(invoker->rbReturnType); +} + +static VALUE +variadic_initialize(VALUE self, VALUE rbFunction, VALUE rbParameterTypes, VALUE rbReturnType, VALUE options) +{ + VariadicInvoker* invoker = NULL; + VALUE retval = Qnil; + VALUE convention = Qnil; + VALUE fixed = Qnil; +#if defined(X86_WIN32) + VALUE rbConventionStr; +#endif + int i; + + Check_Type(options, T_HASH); + convention = rb_hash_aref(options, ID2SYM(rb_intern("convention"))); + + Data_Get_Struct(self, VariadicInvoker, invoker); + invoker->rbEnums = rb_hash_aref(options, ID2SYM(rb_intern("enums"))); + invoker->rbAddress = rbFunction; + invoker->function = rbffi_AbstractMemory_Cast(rbFunction, rbffi_PointerClass)->address; + invoker->blocking = RTEST(rb_hash_aref(options, ID2SYM(rb_intern("blocking")))); + +#if defined(X86_WIN32) + rbConventionStr = rb_funcall2(convention, rb_intern("to_s"), 0, NULL); + invoker->abi = (RTEST(convention) && strcmp(StringValueCStr(rbConventionStr), "stdcall") == 0) + ? FFI_STDCALL : FFI_DEFAULT_ABI; +#else + invoker->abi = FFI_DEFAULT_ABI; +#endif + + invoker->rbReturnType = rbffi_Type_Lookup(rbReturnType); + if (!RTEST(invoker->rbReturnType)) { + VALUE typeName = rb_funcall2(rbReturnType, rb_intern("inspect"), 0, NULL); + rb_raise(rb_eTypeError, "Invalid return type (%s)", RSTRING_PTR(typeName)); + } + + Data_Get_Struct(rbReturnType, Type, invoker->returnType); + + invoker->paramCount = -1; + + fixed = rb_ary_new2(RARRAY_LEN(rbParameterTypes) - 1); + for (i = 0; i < RARRAY_LEN(rbParameterTypes); ++i) { + VALUE entry = rb_ary_entry(rbParameterTypes, i); + VALUE rbType = rbffi_Type_Lookup(entry); + Type* type; + + if (!RTEST(rbType)) { + VALUE typeName = rb_funcall2(entry, rb_intern("inspect"), 0, NULL); + rb_raise(rb_eTypeError, "Invalid parameter type (%s)", RSTRING_PTR(typeName)); + } + Data_Get_Struct(rbType, Type, type); + if (type->nativeType != NATIVE_VARARGS) { + rb_ary_push(fixed, entry); + } + } + /* + * @fixed and @type_map are used by the parameter mangling ruby code + */ + rb_iv_set(self, "@fixed", fixed); + rb_iv_set(self, "@type_map", rb_hash_aref(options, ID2SYM(rb_intern("type_map")))); + + return retval; +} + +static VALUE +variadic_invoke(VALUE self, VALUE parameterTypes, VALUE parameterValues) +{ + VariadicInvoker* invoker; + FFIStorage* params; + void* retval; + ffi_cif cif; + void** ffiValues; + ffi_type** ffiParamTypes; + ffi_type* ffiReturnType; + Type** paramTypes; + VALUE* argv; + int paramCount = 0, fixedCount = 0, i; + ffi_status ffiStatus; + rbffi_frame_t frame = { 0 }; + + Check_Type(parameterTypes, T_ARRAY); + Check_Type(parameterValues, T_ARRAY); + + Data_Get_Struct(self, VariadicInvoker, invoker); + paramCount = (int) RARRAY_LEN(parameterTypes); + paramTypes = ALLOCA_N(Type *, paramCount); + ffiParamTypes = ALLOCA_N(ffi_type *, paramCount); + params = ALLOCA_N(FFIStorage, paramCount); + ffiValues = ALLOCA_N(void*, paramCount); + argv = ALLOCA_N(VALUE, paramCount); + retval = alloca(MAX(invoker->returnType->ffiType->size, FFI_SIZEOF_ARG)); + + for (i = 0; i < paramCount; ++i) { + VALUE rbType = rb_ary_entry(parameterTypes, i); + + if (!rb_obj_is_kind_of(rbType, rbffi_TypeClass)) { + rb_raise(rb_eTypeError, "wrong type. Expected (FFI::Type)"); + } + Data_Get_Struct(rbType, Type, paramTypes[i]); + + switch (paramTypes[i]->nativeType) { + case NATIVE_INT8: + case NATIVE_INT16: + case NATIVE_INT32: + rbType = rb_const_get(rbffi_TypeClass, rb_intern("INT32")); + Data_Get_Struct(rbType, Type, paramTypes[i]); + break; + case NATIVE_UINT8: + case NATIVE_UINT16: + case NATIVE_UINT32: + rbType = rb_const_get(rbffi_TypeClass, rb_intern("UINT32")); + Data_Get_Struct(rbType, Type, paramTypes[i]); + break; + + case NATIVE_FLOAT32: + rbType = rb_const_get(rbffi_TypeClass, rb_intern("DOUBLE")); + Data_Get_Struct(rbType, Type, paramTypes[i]); + break; + + default: + break; + } + + + ffiParamTypes[i] = paramTypes[i]->ffiType; + if (ffiParamTypes[i] == NULL) { + rb_raise(rb_eArgError, "Invalid parameter type #%x", paramTypes[i]->nativeType); + } + argv[i] = rb_ary_entry(parameterValues, i); + } + + ffiReturnType = invoker->returnType->ffiType; + if (ffiReturnType == NULL) { + rb_raise(rb_eArgError, "Invalid return type"); + } + + /*Get the number of fixed args from @fixed array*/ + fixedCount = RARRAY_LEN(rb_iv_get(self, "@fixed")); + +#ifdef HAVE_FFI_PREP_CIF_VAR + ffiStatus = ffi_prep_cif_var(&cif, invoker->abi, fixedCount, paramCount, ffiReturnType, ffiParamTypes); +#else + ffiStatus = ffi_prep_cif(&cif, invoker->abi, paramCount, ffiReturnType, ffiParamTypes); +#endif + switch (ffiStatus) { + case FFI_BAD_ABI: + rb_raise(rb_eArgError, "Invalid ABI specified"); + case FFI_BAD_TYPEDEF: + rb_raise(rb_eArgError, "Invalid argument type specified"); + case FFI_OK: + break; + default: + rb_raise(rb_eArgError, "Unknown FFI error"); + } + + rbffi_SetupCallParams(paramCount, argv, -1, paramTypes, params, + ffiValues, NULL, 0, invoker->rbEnums); + + rbffi_frame_push(&frame); +#ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL + /* In Call.c, blocking: true is supported on older ruby variants + * without rb_thread_call_without_gvl by allocating on the heap instead + * of the stack. Since this functionality is being added later, + * we’re skipping support for old rubies here. */ + if(unlikely(invoker->blocking)) { + rbffi_blocking_call_t* bc; + bc = ALLOCA_N(rbffi_blocking_call_t, 1); + bc->retval = retval; + bc->function = invoker->function; + bc->ffiValues = ffiValues; + bc->params = params; + bc->frame = &frame; + bc->cif = cif; + + rb_rescue2(rbffi_do_blocking_call, (VALUE) bc, rbffi_save_frame_exception, (VALUE) &frame, rb_eException, (VALUE) 0); + } else { + ffi_call(&cif, FFI_FN(invoker->function), retval, ffiValues); + } +#else + ffi_call(&cif, FFI_FN(invoker->function), retval, ffiValues); +#endif + rbffi_frame_pop(&frame); + + rbffi_save_errno(); + + if (RTEST(frame.exc) && frame.exc != Qnil) { + rb_exc_raise(frame.exc); + } + + return rbffi_NativeValue_ToRuby(invoker->returnType, invoker->rbReturnType, retval); +} + + +void +rbffi_Variadic_Init(VALUE moduleFFI) +{ + classVariadicInvoker = rb_define_class_under(moduleFFI, "VariadicInvoker", rb_cObject); + rb_global_variable(&classVariadicInvoker); + + rb_define_alloc_func(classVariadicInvoker, variadic_allocate); + + rb_define_method(classVariadicInvoker, "initialize", variadic_initialize, 4); + rb_define_method(classVariadicInvoker, "invoke", variadic_invoke, 2); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/compat.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/compat.h new file mode 100644 index 0000000000..a4dfc08516 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/compat.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_COMPAT_H +#define RBFFI_COMPAT_H + +#include + +#ifndef RARRAY_LEN +# define RARRAY_LEN(ary) RARRAY(ary)->len +#endif + +#ifndef RARRAY_PTR +# define RARRAY_PTR(ary) RARRAY(ary)->ptr +#endif + +#ifndef RSTRING_LEN +# define RSTRING_LEN(s) RSTRING(s)->len +#endif + +#ifndef RSTRING_PTR +# define RSTRING_PTR(s) RSTRING(s)->ptr +#endif + +#ifndef NUM2ULL +# define NUM2ULL(x) rb_num2ull((VALUE)x) +#endif + +#ifndef roundup +# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +#endif + +#ifdef __GNUC__ +# define likely(x) __builtin_expect((x), 1) +# define unlikely(x) __builtin_expect((x), 0) +#else +# define likely(x) (x) +# define unlikely(x) (x) +#endif + +#ifndef MAX +# define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif +#ifndef MIN +# define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +#ifndef RB_GC_GUARD +# define RB_GC_GUARD(x) (x) +#endif + +#endif /* RBFFI_COMPAT_H */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.h new file mode 100644 index 0000000000..03b40a34aa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.h @@ -0,0 +1,12 @@ +#ifndef EXTCONF_H +#define EXTCONF_H +#define HAVE_FFI_CLOSURE_ALLOC 1 +#define HAVE_FFI_RAW_CALL 1 +#define HAVE_FFI_PREP_RAW_CLOSURE 1 +#define HAVE_RAW_API 1 +#define HAVE_RUBY_THREAD_H 1 +#define HAVE_RB_THREAD_CALL_WITH_GVL 1 +#define HAVE_RB_THREAD_CALL_WITHOUT_GVL 1 +#define HAVE_FFI_PREP_CIF_VAR 1 +#define RUBY_1_9 1 +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.rb new file mode 100644 index 0000000000..45ab9770ff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/extconf.rb @@ -0,0 +1,72 @@ +#!/usr/bin/env ruby + +if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx' + require 'mkmf' + require 'rbconfig' + dir_config("ffi_c") + + # recent versions of ruby add restrictive ansi and warning flags on a whim - kill them all + $warnflags = '' + $CFLAGS.gsub!(/[\s+]-ansi/, '') + $CFLAGS.gsub!(/[\s+]-std=[^\s]+/, '') + # solaris 10 needs -c99 for + $CFLAGS << " -std=c99" if RbConfig::CONFIG['host_os'] =~ /solaris(!?2\.11)/ + + if ENV['RUBY_CC_VERSION'].nil? && (pkg_config("libffi") || + have_header("ffi.h") || + find_header("ffi.h", "/usr/local/include", "/usr/include/ffi")) + + # We need at least ffi_call and ffi_closure_alloc + libffi_ok = have_library("ffi", "ffi_call", [ "ffi.h" ]) || + have_library("libffi", "ffi_call", [ "ffi.h" ]) + libffi_ok &&= have_func("ffi_closure_alloc") + + # Check if the raw api is available. + $defs << "-DHAVE_RAW_API" if have_func("ffi_raw_call") && have_func("ffi_prep_raw_closure") + end + + have_header('shlwapi.h') + have_header('ruby/thread.h') # for compat with ruby < 2.0 + have_func('rb_thread_blocking_region') + have_func('rb_thread_call_with_gvl') + have_func('rb_thread_call_without_gvl') + + if libffi_ok + have_func('ffi_prep_cif_var') + else + $defs << "-DHAVE_FFI_PREP_CIF_VAR" + end + + $defs << "-DHAVE_EXTCONF_H" if $defs.empty? # needed so create_header works + $defs << "-DUSE_INTERNAL_LIBFFI" unless libffi_ok + $defs << "-DRUBY_1_9" if RUBY_VERSION >= "1.9.0" + $defs << "-DFFI_BUILDING" if RbConfig::CONFIG['host_os'] =~ /mswin/ # for compatibility with newer libffi + + create_header + + $LOCAL_LIBS << " ./libffi/.libs/libffi_convenience.lib" if !libffi_ok && RbConfig::CONFIG['host_os'] =~ /mswin/ + + create_makefile("ffi_c") + unless libffi_ok + File.open("Makefile", "a") do |mf| + mf.puts "LIBFFI_HOST=--host=#{RbConfig::CONFIG['host_alias']}" if RbConfig::CONFIG.has_key?("host_alias") + if RbConfig::CONFIG['host_os'].downcase =~ /darwin/ + mf.puts "include ${srcdir}/libffi.darwin.mk" + elsif RbConfig::CONFIG['host_os'].downcase =~ /bsd/ + mf.puts '.include "${srcdir}/libffi.bsd.mk"' + elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin64/ + mf.puts '!include $(srcdir)/libffi.vc64.mk' + elsif RbConfig::CONFIG['host_os'].downcase =~ /mswin32/ + mf.puts '!include $(srcdir)/libffi.vc.mk' + else + mf.puts "include ${srcdir}/libffi.mk" + end + end + end + +else + File.open("Makefile", "w") do |mf| + mf.puts "# Dummy makefile for non-mri rubies" + mf.puts "all install::\n" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ffi.c new file mode 100644 index 0000000000..ea9a058761 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/ffi.c @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * Copyright (C) 2009 Luc Heinrich + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include + +#include + +#include "rbffi.h" +#include "AbstractMemory.h" +#include "Pointer.h" +#include "MemoryPointer.h" +#include "Struct.h" +#include "StructByValue.h" +#include "StructByReference.h" +#include "DynamicLibrary.h" +#include "Platform.h" +#include "Types.h" +#include "LastError.h" +#include "Function.h" +#include "ClosurePool.h" +#include "MethodHandle.h" +#include "Call.h" +#include "ArrayType.h" +#include "MappedType.h" + +void Init_ffi_c(void); + +VALUE rbffi_FFIModule = Qnil; + +static VALUE moduleFFI = Qnil; + +void +Init_ffi_c(void) +{ + /* + * Document-module: FFI + * + * This module embbed type constants from {FFI::NativeType}. + */ + rbffi_FFIModule = moduleFFI = rb_define_module("FFI"); + rb_global_variable(&rbffi_FFIModule); + + rbffi_Thread_Init(rbffi_FFIModule); + + /* FFI::Type needs to be initialized before most other classes */ + rbffi_Type_Init(moduleFFI); + + rbffi_DataConverter_Init(moduleFFI); + + rbffi_ArrayType_Init(moduleFFI); + rbffi_LastError_Init(moduleFFI); + rbffi_Call_Init(moduleFFI); + rbffi_ClosurePool_Init(moduleFFI); + rbffi_MethodHandle_Init(moduleFFI); + rbffi_Platform_Init(moduleFFI); + rbffi_AbstractMemory_Init(moduleFFI); + rbffi_Pointer_Init(moduleFFI); + rbffi_Function_Init(moduleFFI); + rbffi_MemoryPointer_Init(moduleFFI); + rbffi_Buffer_Init(moduleFFI); + rbffi_StructByValue_Init(moduleFFI); + rbffi_StructByReference_Init(moduleFFI); + rbffi_Struct_Init(moduleFFI); + rbffi_DynamicLibrary_Init(moduleFFI); + rbffi_Variadic_Init(moduleFFI); + rbffi_Types_Init(moduleFFI); + rbffi_MappedType_Init(moduleFFI); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.bsd.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.bsd.mk new file mode 100644 index 0000000000..ab66256ef0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.bsd.mk @@ -0,0 +1,40 @@ +# -*- makefile -*- +# +# Makefile for BSD systems +# + +LOCAL_LIBS += ${LIBFFI} -lpthread + +LIBFFI_CFLAGS = ${FFI_MMAP_EXEC} -pthread +LIBFFI_BUILD_DIR = ${.CURDIR}/libffi-${arch} +INCFLAGS := -I${LIBFFI_BUILD_DIR}/include -I${INCFLAGS} + +.if ${srcdir} == "." + LIBFFI_SRC_DIR := ${.CURDIR}/libffi +.else + LIBFFI_SRC_DIR := ${srcdir}/libffi +.endif + + +LIBFFI = ${LIBFFI_BUILD_DIR}/.libs/libffi_convenience.a +LIBFFI_AUTOGEN = ${LIBFFI_SRC_DIR}/autogen.sh +LIBFFI_CONFIGURE = ${LIBFFI_SRC_DIR}/configure --disable-static \ + --with-pic=yes --disable-dependency-tracking --disable-docs + +$(OBJS): ${LIBFFI} + +$(LIBFFI): + @mkdir -p ${LIBFFI_BUILD_DIR} + @if [ ! -f $(LIBFFI_SRC_DIR)/configure ]; then \ + echo "Running autoreconf for libffi"; \ + cd "$(LIBFFI_SRC_DIR)" && \ + /bin/sh $(LIBFFI_AUTOGEN) > /dev/null; \ + fi + @if [ ! -f ${LIBFFI_BUILD_DIR}/Makefile ]; then \ + echo "Configuring libffi"; \ + cd ${LIBFFI_BUILD_DIR} && \ + /usr/bin/env CC="${CC}" LD="${LD}" CFLAGS="${LIBFFI_CFLAGS}" GREP_OPTIONS="" \ + /bin/sh ${LIBFFI_CONFIGURE} ${LIBFFI_HOST} > /dev/null; \ + fi + @cd ${LIBFFI_BUILD_DIR} && ${MAKE} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.darwin.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.darwin.mk new file mode 100644 index 0000000000..59e51fcc7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.darwin.mk @@ -0,0 +1,105 @@ +# -*- makefile -*- + +include ${srcdir}/libffi.gnu.mk + +CCACHE := $(shell type -p ccache) +BUILD_DIR := $(shell pwd) + +INCFLAGS += -I"$(BUILD_DIR)" + +# Work out which arches we need to compile the lib for +ARCHES := +ARCHFLAGS ?= $(filter -arch %, $(CFLAGS)) + +ifneq ($(findstring -arch ppc,$(ARCHFLAGS)),) + ARCHES += ppc +endif + +ifneq ($(findstring -arch i386,$(ARCHFLAGS)),) + ARCHES += i386 +endif + +ifneq ($(findstring -arch x86_64,$(ARCHFLAGS)),) + ARCHES += x86_64 +endif + +ifeq ($(strip $(ARCHES)),) +LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi-$(arch) +# Just build the one (default) architecture +$(LIBFFI): + @mkdir -p "$(LIBFFI_BUILD_DIR)" "$(@D)" + @if [ ! -f "$(LIBFFI_SRC_DIR)"/configure ]; then \ + echo "Running autoreconf for libffi"; \ + cd "$(LIBFFI_SRC_DIR)" && \ + /bin/sh $(LIBFFI_AUTOGEN) > /dev/null; \ + fi + @if [ ! -f "$(LIBFFI_BUILD_DIR)"/Makefile ]; then \ + echo "Configuring libffi"; \ + cd "$(LIBFFI_BUILD_DIR)" && \ + /usr/bin/env CC="$(CC)" LD="$(LD)" CFLAGS="$(LIBFFI_CFLAGS)" GREP_OPTIONS="" \ + /bin/sh $(LIBFFI_CONFIGURE) $(LIBFFI_HOST) > /dev/null; \ + fi + cd "$(LIBFFI_BUILD_DIR)" && $(MAKE) + +else +LIBTARGETS = $(foreach arch,$(ARCHES),"$(BUILD_DIR)"/libffi-$(arch)/.libs/libffi_convenience.a) + +# Build a fat binary and assemble +build_ffi = \ + mkdir -p "$(BUILD_DIR)"/libffi-$(1); \ + (if [ ! -f "$(LIBFFI_SRC_DIR)"/configure ]; then \ + echo "Running autoreconf for libffi"; \ + cd "$(LIBFFI_SRC_DIR)" && \ + /bin/sh $(LIBFFI_AUTOGEN) > /dev/null; \ + fi); \ + (if [ ! -f "$(BUILD_DIR)"/libffi-$(1)/Makefile ]; then \ + echo "Configuring libffi for $(1)"; \ + cd "$(BUILD_DIR)"/libffi-$(1) && \ + env CC="$(CCACHE) $(CC)" CFLAGS="-arch $(1) $(LIBFFI_CFLAGS)" LDFLAGS="-arch $(1)" \ + $(LIBFFI_CONFIGURE) --host=$(1)-apple-darwin > /dev/null; \ + fi); \ + env MACOSX_DEPLOYMENT_TARGET=10.4 $(MAKE) -C "$(BUILD_DIR)"/libffi-$(1) + +target_ffi = "$(BUILD_DIR)"/libffi-$(1)/.libs/libffi_convenience.a:; $(call build_ffi,$(1)) + +# Work out which arches we need to compile the lib for +ifneq ($(findstring ppc,$(ARCHES)),) + $(call target_ffi,ppc) +endif + +ifneq ($(findstring i386,$(ARCHES)),) + $(call target_ffi,i386) +endif + +ifneq ($(findstring x86_64,$(ARCHES)),) + $(call target_ffi,x86_64) +endif + + +$(LIBFFI): $(LIBTARGETS) + # Assemble into a FAT (x86_64, i386, ppc) library + @mkdir -p "$(@D)" + /usr/bin/libtool -static -o $@ \ + $(foreach arch, $(ARCHES),"$(BUILD_DIR)"/libffi-$(arch)/.libs/libffi_convenience.a) + @mkdir -p "$(LIBFFI_BUILD_DIR)"/include + $(RM) "$(LIBFFI_BUILD_DIR)"/include/ffi.h + @( \ + printf "#if defined(__i386__)\n"; \ + printf "#include \"libffi-i386/include/ffi.h\"\n"; \ + printf "#elif defined(__x86_64__)\n"; \ + printf "#include \"libffi-x86_64/include/ffi.h\"\n";\ + printf "#elif defined(__ppc__)\n"; \ + printf "#include \"libffi-ppc/include/ffi.h\"\n";\ + printf "#endif\n";\ + ) > "$(LIBFFI_BUILD_DIR)"/include/ffi.h + @( \ + printf "#if defined(__i386__)\n"; \ + printf "#include \"libffi-i386/include/ffitarget.h\"\n"; \ + printf "#elif defined(__x86_64__)\n"; \ + printf "#include \"libffi-x86_64/include/ffitarget.h\"\n";\ + printf "#elif defined(__ppc__)\n"; \ + printf "#include \"libffi-ppc/include/ffitarget.h\"\n";\ + printf "#endif\n";\ + ) > "$(LIBFFI_BUILD_DIR)"/include/ffitarget.h + +endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.gnu.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.gnu.mk new file mode 100644 index 0000000000..473b8fb9d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.gnu.mk @@ -0,0 +1,32 @@ +# -*- makefile -*- +# +# Common definitions for all systems that use GNU make +# + + +# Tack the extra deps onto the autogenerated variables +LOCAL_LIBS += $(LIBFFI) +BUILD_DIR = $(shell pwd) +LIBFFI_CFLAGS = $(FFI_MMAP_EXEC) +LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi-$(arch) +INCFLAGS := -I"$(LIBFFI_BUILD_DIR)"/include $(INCFLAGS) + +ifeq ($(srcdir),.) + LIBFFI_SRC_DIR := $(shell pwd)/libffi +else ifeq ($(srcdir),..) + LIBFFI_SRC_DIR := $(shell pwd)/../libffi +else + LIBFFI_SRC_DIR := $(realpath $(srcdir)/libffi) +endif + +LIBFFI = "$(LIBFFI_BUILD_DIR)"/.libs/libffi_convenience.a +LIBFFI_AUTOGEN = ${LIBFFI_SRC_DIR}/autogen.sh +LIBFFI_CONFIGURE = "$(LIBFFI_SRC_DIR)"/configure --disable-static \ + --with-pic=yes --disable-dependency-tracking --disable-docs + +$(OBJS): $(LIBFFI) + +# +# libffi.mk or libffi.darwin.mk contains rules for building the actual library +# + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.mk new file mode 100644 index 0000000000..3b58227b56 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.mk @@ -0,0 +1,18 @@ +# -*- makefile -*- + +include ${srcdir}/libffi.gnu.mk + +$(LIBFFI): + @mkdir -p "$(LIBFFI_BUILD_DIR)" "$@(D)" + @if [ ! -f "$(LIBFFI_SRC_DIR)"/configure ]; then \ + echo "Running autoreconf for libffi"; \ + cd "$(LIBFFI_SRC_DIR)" && \ + /bin/sh $(LIBFFI_AUTOGEN) > /dev/null; \ + fi + @if [ ! -f "$(LIBFFI_BUILD_DIR)"/Makefile ]; then \ + echo "Configuring libffi"; \ + cd "$(LIBFFI_BUILD_DIR)" && \ + env CFLAGS="$(LIBFFI_CFLAGS)" GREP_OPTIONS="" \ + sh $(LIBFFI_CONFIGURE) $(LIBFFI_HOST) > /dev/null; \ + fi + $(MAKE) -C "$(LIBFFI_BUILD_DIR)" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc.mk new file mode 100644 index 0000000000..8cd4603517 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc.mk @@ -0,0 +1,26 @@ +# -*- makefile -*- +# +# Makefile for msvc +# + +# Tack the extra deps onto the autogenerated variables +INCFLAGS = -I$(LIBFFI_BUILD_DIR)/include -I$(LIBFFI_BUILD_DIR)/src/x86 $(INCFLAGS) +LOCAL_LIBS = $(LOCAL_LIBS) $(LIBFFI) +BUILD_DIR = $(MAKEDIR) +LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi + +!IF "$(srcdir)" == "." +LIBFFI_SRC_DIR = $(MAKEDIR)/libffi +!ELSE +LIBFFI_SRC_DIR = $(srcdir)/libffi +!ENDIF + +LIBFFI = $(LIBFFI_BUILD_DIR)/.libs/libffi_convenience.lib + +$(OBJS): $(LIBFFI) + +$(LIBFFI): + @$(MAKEDIRS) $(LIBFFI_BUILD_DIR) + @cd $(LIBFFI_BUILD_DIR) && $(MAKE) -f Makefile.vc + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc64.mk b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc64.mk new file mode 100644 index 0000000000..6f3dbbc849 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi.vc64.mk @@ -0,0 +1,26 @@ +# -*- makefile -*- +# +# Makefile for msvc +# + +# Tack the extra deps onto the autogenerated variables +INCFLAGS = -I$(LIBFFI_BUILD_DIR)/include -I$(LIBFFI_BUILD_DIR)/src/x86 $(INCFLAGS) +LOCAL_LIBS = $(LOCAL_LIBS) $(LIBFFI) +BUILD_DIR = $(MAKEDIR) +LIBFFI_BUILD_DIR = $(BUILD_DIR)/libffi + +!IF "$(srcdir)" == "." +LIBFFI_SRC_DIR = $(MAKEDIR)/libffi +!ELSE +LIBFFI_SRC_DIR = $(srcdir)/libffi +!ENDIF + +LIBFFI = $(LIBFFI_BUILD_DIR)/.libs/libffi_convenience.lib + +$(OBJS): $(LIBFFI) + +$(LIBFFI): + @$(MAKEDIRS) $(LIBFFI_BUILD_DIR) + @cd $(LIBFFI_BUILD_DIR) && $(MAKE) -f Makefile.vc64 + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.appveyor.yml b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.appveyor.yml new file mode 100644 index 0000000000..5a4f096038 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.appveyor.yml @@ -0,0 +1,50 @@ +shallow_clone: true + +# We're currently only testing 64-bit libffi built with Microsoft's +# tools. +# This matrix should be expanded to include at least: +# 32- and 64-bit gcc/cygwin +# 32- and 64-bit gcc/mingw +# 32- and 64-bit clang/mingw +# and perhaps more. + +image: Visual Studio 2013 +platform: + - x64 + +environment: + global: + CYG_ROOT: C:/cygwin + CYG_CACHE: C:/cygwin/var/cache/setup + CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/ + matrix: + - VSVER: 12 + +install: + - ps: >- + If ($env:Platform -Match "x86") { + $env:VCVARS_PLATFORM="x86" + $env:BUILD="x86-pc-cygwin" + $env:HOST="x86-pc-windows" + } Else { + $env:VCVARS_PLATFORM="amd64" + $env:BUILD="x86_64-w64-cygwin" + $env:HOST="x86_64-w64-cygwin" + } + - 'appveyor DownloadFile https://cygwin.com/setup-x86.exe -FileName setup.exe' + - 'setup.exe -qnNdO -R "%CYG_ROOT%" -s "%CYG_MIRROR%" -l "%CYG_CACHE%" -P dejagnu >NUL' + - '%CYG_ROOT%/bin/bash -lc "cygcheck -dc cygwin"' + - ps: $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:VSVER" + "0COMNTOOLS")) + - echo "Using Visual Studio %VSVER%.0 at %VSCOMNTOOLS%" + - call "%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM% + +build_script: + - c:\cygwin\bin\sh -lc "(cd $OLDPWD; ./autogen.sh;)" + - c:\cygwin\bin\sh -lc "(cd $OLDPWD; ./configure CC='/cygdrive/c/projects/libffi/msvcc.sh -m64' CXX='/cygdrive/c/projects/libffi/msvcc.sh -m64' LD='link' CPP='cl -nologo -EP' CXXCPP='cl -nologo -EP' CPPFLAGS='-DFFI_BUILDING_DLL' AR='/cygdrive/c/projects/libffi/.travis/ar-lib lib' NM='dumpbin -symbols' STRIP=':' --build=$BUILD --host=$HOST;)" + - c:\cygwin\bin\sh -lc "(cd $OLDPWD; cp src/x86/ffitarget.h include; make; find .;)" + - c:\cygwin\bin\sh -lc "(cd $OLDPWD; cp `find . -name 'libffi-?.dll'` $HOST/testsuite/; make check; cat `find ./ -name libffi.log`)" + +# FIXME: "make check" currently fails. It just looks like msvcc needs +# to learn about -L and -l options. If you add "make check; cat `find +# ./ -name libffi.log" to the end of that build command you'll see +# what I mean. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.github/issue_template.md b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.github/issue_template.md new file mode 100644 index 0000000000..e197e2cea7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.github/issue_template.md @@ -0,0 +1,10 @@ +## System Details + + + + +## Problems Description + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.gitignore b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.gitignore new file mode 100644 index 0000000000..5d3968946e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.gitignore @@ -0,0 +1,38 @@ +.libs +.deps +*.o +*.lo +.dirstamp +*.la +Makefile +!testsuite/libffi.bhaible/Makefile +Makefile.in +aclocal.m4 +compile +!.travis/compile +configure +depcomp +doc/libffi.info +*~ +fficonfig.h.in +fficonfig.h +include/ffi.h +include/ffitarget.h +install-sh +libffi.pc +libtool +libtool-ldflags +ltmain.sh +m4/libtool.m4 +m4/lt*.m4 +mdate-sh +missing +stamp-h1 +libffi*gz +autom4te.cache +libffi.xcodeproj/xcuserdata +libffi.xcodeproj/project.xcworkspace +build_*/ +darwin_*/ +src/arm/trampoline.S +**/texinfo.tex diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis.yml new file mode 100644 index 0000000000..b6e5cb7212 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis.yml @@ -0,0 +1,34 @@ +--- +sudo: required + +language: cpp + +matrix: + include: + - os: osx + env: HOST=arm-apple-darwin + - os: linux + compiler: gcc + env: HOST=i386-pc-linux-gnu MEVAL='export CC="$CC -m32" && CXX="$CXX -m32"' + - os: linux + compiler: gcc + - os: linux + compiler: gcc + env: CONFIGURE_OPTIONS=--disable-shared + - os: linux + compiler: clang + - os: linux + compiler: clang + env: CONFIGURE_OPTIONS=--disable-shared + - os: linux + env: HOST=moxie-elf MEVAL='export PATH=/opt/moxielogic/bin:$PATH && CC=moxie-elf-gcc && CXX=moxie-elf-g++' LDFLAGS=-Tsim.ld RUNTESTFLAGS="--target_board moxie-sim" DEJAGNU="$TRAVIS_BUILD_DIR/.travis/site.exp" + +before_install: + - if test x"$MEVAL" != x; then eval ${MEVAL}; fi + +install: + - ./.travis/install.sh + +script: + - if ! test x"$MEVAL" = x; then eval ${MEVAL}; fi + - ./.travis/build.sh diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/ar-lib b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/ar-lib new file mode 100755 index 0000000000..0baa4f6076 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/ar-lib @@ -0,0 +1,270 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2012-03-01.08; # UTC + +# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -warn) + eat=1 + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/install.sh b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/install.sh new file mode 100755 index 0000000000..56b3f6ab61 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/install.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -x + +if [[ $TRAVIS_OS_NAME != 'linux' ]]; then + brew update + # fix an issue with libtool on travis by reinstalling it + brew uninstall libtool; + brew install libtool dejagnu; +else + sudo apt-get update + sudo apt-get install dejagnu texinfo + case "$HOST" in + i386-pc-linux-gnu) + sudo apt-get install gcc-multilib g++-multilib + ;; + moxie-elf) + echo 'deb http://repos.moxielogic.org:7114/MoxieLogic moxiedev main' | sudo tee -a /etc/apt/sources.list + sudo apt-get update -qq + sudo apt-get install -y --allow-unauthenticated moxielogic-moxie-elf-gcc moxielogic-moxie-elf-gcc-c++ moxielogic-moxie-elf-gcc-libstdc++ moxielogic-moxie-elf-gdb-sim + ;; + esac +fi diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/moxie-sim.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/moxie-sim.exp new file mode 100644 index 0000000000..3a6042ee40 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/moxie-sim.exp @@ -0,0 +1,60 @@ +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This file is part of DejaGnu. +# +# DejaGnu is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# DejaGnu is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with DejaGnu; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# This is a list of toolchains that are supported on this board. +set_board_info target_install {moxie-elf} + +# Load the generic configuration for this board. This will define a basic set +# of routines needed by the tool to communicate with the board. +load_generic_config "sim" + +# basic-sim.exp is a basic description for the standard Cygnus simulator. +load_base_board_description "basic-sim" + +# "moxie" is the name of the sim subdir in devo/sim. +setup_sim moxie + +# No multilib options needed by default. +process_multilib_options "" + +# We only support newlib on this target. We assume that all multilib +# options have been specified before we get here. + +set_board_info compiler "[find_gcc]" +set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]" +set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]" +# No linker script needed. +set_board_info ldscript "-Tsim.ld" + +# Configuration settings for testsuites +set_board_info noargs 1 +set_board_info gdb,nosignals 1 +set_board_info gdb,noresults 1 +set_board_info gdb,cannot_call_functions 1 +set_board_info gdb,skip_float_tests 1 +set_board_info gdb,can_reverse 1 +set_board_info gdb,use_precord 1 + +# More time is needed +set_board_info gcc,timeout 800 +set_board_info gdb,timeout 60 + +# Used by a few gcc.c-torture testcases to delimit how large the stack can +# be. +set_board_info gcc,stack_size 5000 + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/site.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/site.exp new file mode 100644 index 0000000000..e42cb1d09c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/.travis/site.exp @@ -0,0 +1,18 @@ +# Copyright (C) 2008, 2010, 2018 Anthony Green + +# Make sure we look in the right place for the board description files. +if ![info exists boards_dir] { + set boards_dir {} +} + +lappend boards_dir $::env(TRAVIS_BUILD_DIR)/.travis + +verbose "Global Config File: target_triplet is $target_triplet" 2 +global target_list + +case "$target_triplet" in { + { "moxie-elf" } { + set target_list "moxie-sim" + } +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi new file mode 100644 index 0000000000..49ba8dad3a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi @@ -0,0 +1,584 @@ +2011-02-08 Andreas Tobler + + * testsuite/lib/libffi.exp: Tweak for stand-alone mode. + +2009-12-25 Samuli Suominen + + * configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + +2009-06-16 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. + * testsuite/libffi.call/float2.c: Fix dg-excess-errors. + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. + +2009-06-12 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + testsuite/libffi.special/unwindtest.cc: include stdint.h. + +2009-06-11 Timothy Wall + + * Makefile.am, + configure.ac, + include/ffi.h.in, + include/ffi_common.h, + src/closures.c, + src/dlmalloc.c, + src/x86/ffi.c, + src/x86/ffitarget.h, + src/x86/win64.S (new), + README: Added win64 support (mingw or MSVC) + * Makefile.in, + include/Makefile.in, + man/Makefile.in, + testsuite/Makefile.in, + configure, + aclocal.m4: Regenerated + * ltcf-c.sh: properly escape cygwin/w32 path + * man/ffi_call.3: Clarify size requirements for return value. + * src/x86/ffi64.c: Fix filename in comment. + * src/x86/win32.S: Remove unused extern. + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/err_bad_abi.c, + testsuite/libffi.call/err_bad_typedef.c, + testsuite/libffi.call/float2.c, + testsuite/libffi.call/huge_struct.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/return_ldl.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead + of checking for MMAP. Use intptr_t instead of long casts. + +2009-06-04 Andrew Haley + + * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. + +2009-06-04 Andrew Haley + + * src/mips/o32.S, + src/mips/n32.S: Fix licence formatting. + +2009-06-04 Andrew Haley + + * src/x86/darwin.S: Fix licence formatting. + src/x86/win32.S: Likewise. + src/sh64/sysv.S: Likewise. + src/sh/sysv.S: Likewise. + +2009-06-04 Andrew Haley + + * src/sh64/ffi.c: Remove lint directives. Was missing from merge + of Andreas Tobler's patch from 2006-04-22. + +2009-06-04 Andrew Haley + + * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of + 2007-03-07. + +2008-12-26 Timothy Wall + + * testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected + failures on x86_64 cygwin/mingw. + +2008-12-22 Timothy Wall + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_loc_fn0.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: use portable cast from + pointer to integer (intptr_t). + * testsuite/libffi.call/cls_longdouble.c: disable for win64. + +2008-12-19 Anthony Green + + * configure.ac: Bump version to 3.0.8. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-11-11 Anthony Green + + * configure.ac: Bump version to 3.0.7. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-08-25 Andreas Tobler + + * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and + FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. + Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. + Adjust copyright notice. + * src/powerpc/ffi.c: Add two new flags to indicate if we have one + register or two register to use for FFI_SYSV structs. + (ffi_prep_cif_machdep): Pass the right register flag introduced above. + (ffi_closure_helper_SYSV): Fix the return type for + FFI_SYSV_TYPE_SMALL_STRUCT. Comment. + Adjust copyright notice. + +2008-07-24 Anthony Green + + * testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/err_bad_abi.c: Clean up failures from + compiler warnings. + +2008-07-17 Anthony Green + + * configure.ac: Bump version to 3.0.6. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. Add documentation. + * README: Update for new release. + +2008-07-16 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned + int. + +2008-07-16 Kaz Kojima + + * src/sh/sysv.S: Add .note.GNU-stack on Linux. + * src/sh64/sysv.S: Likewise. + +2008-04-03 Anthony Green + + * libffi.pc.in (Libs): Add -L${libdir}. + * configure.ac: Bump version to 3.0.5. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-04-03 Anthony Green + Xerces Ranby + + * include/ffi.h.in: Wrap definition of target architecture to + protect from double definitions. + +2008-03-22 Moriyoshi Koizumi + + * src/x86/ffi.c (ffi_prep_closure_loc): Fix for bug revealed in + closure_loc_fn0.c. + * testsuite/libffi.call/closure_loc_fn0.c (closure_loc_test_fn0): + New test. + +2008-03-04 Anthony Green + Blake Chaffin + hos@tamanegi.org + + * testsuite/libffi.call/cls_align_longdouble_split2.c + testsuite/libffi.call/cls_align_longdouble_split.c + testsuite/libffi.call/cls_dbls_struct.c + testsuite/libffi.call/cls_double_va.c + testsuite/libffi.call/cls_longdouble.c + testsuite/libffi.call/cls_longdouble_va.c + testsuite/libffi.call/cls_pointer.c + testsuite/libffi.call/cls_pointer_stack.c + testsuite/libffi.call/err_bad_abi.c + testsuite/libffi.call/err_bad_typedef.c + testsuite/libffi.call/huge_struct.c + testsuite/libffi.call/stret_large2.c + testsuite/libffi.call/stret_large.c + testsuite/libffi.call/stret_medium2.c + testsuite/libffi.call/stret_medium.c: New tests from Apple. + +2008-02-26 Jakub Jelinek + Anthony Green + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +2008-02-26 Anthony Green + Thomas Heller + + * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C + comment. + +2008-02-26 Anthony Green + Thomas Heller + + * include/ffi.h.in: Change void (*)() to void (*)(void). + +2008-02-26 Anthony Green + Thomas Heller + + * src/alpha/ffi.c: Change void (*)() to void (*)(void). + src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, + src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, + src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, + src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, + src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, + src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S, + src/x86/ffi64.c: Ditto. + +2008-02-24 Anthony Green + + * configure.ac: Accept openbsd*, not just openbsd. + Bump version to 3.0.4. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-22 Anthony Green + + * README: Clean up list of tested platforms. + +2008-02-22 Anthony Green + + * configure.ac: Bump version to 3.0.3. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. Clean up test docs. + +2008-02-22 Bjoern Koenig + Andreas Tobler + + * configure.ac: Add amd64-*-freebsd* target. + * configure: Regenerate. + +2008-02-22 Thomas Heller + + * configure.ac: Add x86 OpenBSD support. + * configure: Rebuilt. + +2008-02-21 Thomas Heller + + * README: Change "make test" to "make check". + +2008-02-21 Anthony Green + + * configure.ac: Bump version to 3.0.2. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-21 Björn König + + * src/x86/freebsd.S: New file. + * configure.ac: Add x86 FreeBSD support. + * Makefile.am: Ditto. + +2008-02-15 Anthony Green + + * configure.ac: Bump version to 3.0.1. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-15 David Daney + + * src/mips/ffi.c: Remove extra '>' from include directive. + (ffi_prep_closure_loc): Use clear_location instead of tramp. + +2008-02-15 Anthony Green + + * configure.ac: Bump version to 3.0.0. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-15 David Daney + + * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): + Define (conditionally), and use it to include cachectl.h. + (ffi_prep_closure_loc): Fix cache flushing. + * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. + +2008-02-15 Anthony Green + + * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: + Update dates and remove all references to ffi_prep_closure. + * configure.ac: Bump version to 2.99.9. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-15 Anthony Green + + * man/ffi_prep_closure.3: Delete. + * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. + (man_MANS): Ditto. + * man/Makefile.in: Rebuilt. + * configure.ac: Bump version to 2.99.8. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-14 Anthony Green + + * configure.ac: Bump version to 2.99.7. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * include/ffi.h.in LICENSE src/debug.c src/closures.c + src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h + src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c + src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S + src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c + src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c + src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S + src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h + src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c + src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S + src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h + src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h + src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S + src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h + src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S + src/arm/ffitarget.h src/prep_cif.c: Update license text. + +2008-02-14 Anthony Green + + * README: Update tested platforms. + * configure.ac: Bump version to 2.99.6. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * configure.ac: Bump version to 2.99.5. + * configure: Rebuilt. + * Makefile.am (EXTRA_DIST): Add darwin64.S + * Makefile.in: Rebuilt. + * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. + * LICENSE: Update WARRANTY. + +2008-02-14 Anthony Green + + * libffi.pc.in (libdir): Fix libdir definition. + * configure.ac: Bump version to 2.99.4. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * README: Update. + * libffi.info: New file. + * doc/stamp-vti: New file. + * configure.ac: Bump version to 2.99.3. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * Makefile.am (SUBDIRS): Add man dir. + * Makefile.in: Rebuilt. + * configure.ac: Create Makefile. + * configure: Rebuilt. + * man/ffi_call.3 man/ffi_prep_cif.3 man/ffi_prep_closure.3 + man/Makefile.am man/Makefile.in: New files. + +2008-02-14 Tom Tromey + + * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. + * mdate-sh, texinfo.tex: New files. + * Makefile.am (info_TEXINFOS): New variable. + * doc/libffi.texi: New file. + * doc/version.texi: Likewise. + +2008-02-14 Anthony Green + + * Makefile.am (AM_CFLAGS): Don't compile with -D$(TARGET). + (lib_LTLIBRARIES): Define. + (toolexeclib_LIBRARIES): Undefine. + * Makefile.in: Rebuilt. + * configure.ac: Reset version to 2.99.1. + * configure.in: Rebuilt. + +2008-02-14 Anthony Green + + * libffi.pc.in: Use @PACKAGE_NAME@ and @PACKAGE_VERSION@. + * configure.ac: Reset version to 2.99.1. + * configure.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. + * Makefile.in: Rebuilt. + * LICENSE: Update copyright notice. + +2008-02-14 Anthony Green + + * include/Makefile.am (nodist_includes_HEADERS): Define. Don't + distribute ffitarget.h or ffi.h from the build include dir. + * Makefile.in: Rebuilt. + +2008-02-14 Anthony Green + + * include/Makefile.am (includesdir): Install headers under libdir. + (pkgconfigdir): Define. Install libffi.pc. + * include/Makefile.in: Rebuilt. + * libffi.pc.in: Create. + * libtool-version: Increment CURRENT + * configure.ac: Add libffi.pc.in + * configure: Rebuilt. + +2008-02-03 Anthony Green + + * include/Makefile.am (includesdir): Fix header install with + DESTDIR. + * include/Makefile.in: Rebuilt. + +2008-02-03 Timothy Wall + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return + offset based on code pointer, not data pointer. + +2008-02-01 Anthony Green + + * include/Makefile.am: Fix header installs. + * Makefile.am: Ditto. + * include/Makefile.in: Rebuilt. + * Makefile.in: Ditto. + +2008-02-01 Anthony Green + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL, + FFI_INIT_TRAMPOLINE): Revert my broken changes to twall's last + patch. + +2008-01-31 Anthony Green + + * Makefile.am (EXTRA_DIST): Add missing files. + * testsuite/Makefile.am: Ditto. + * Makefile.in, testsuite/Makefile.in: Rebuilt. + +2008-01-31 Timothy Wall + + * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall + closures. + * src/x86/ffitarget.h: Increase size of trampoline for stdcall + closures. + * src/x86/win32.S: Add assembly for stdcall closure. + * src/x86/ffi.c: Initialize stdcall closure trampoline. + +2008-01-30 H.J. Lu + + PR libffi/34612 + * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when + returning struct. + + * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" + tests. + +2008-01-30 Anthony Green + + * Makefile.am, include/Makefile.am: Move headers to + libffi_la_SOURCES for new automake. + * Makefile.in, include/Makefile.in: Rebuilt. + + * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for + execution outside of gcc tree. + * testsuite/lib/target-libpath.exp: Ditto. + + * testsuite/lib/libffi-dg.exp: Many changes to allow for execution + outside of gcc tree. + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi-3.1 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi-3.1 new file mode 100644 index 0000000000..8f7f50d6f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libffi-3.1 @@ -0,0 +1,6000 @@ +2014-03-16 Josh Triplett + + * ChangeLog: Archive to ChangeLog.libffi-3.1 and delete. Future + changelogs will come from git, with autogenerated snapshots shipped in + distributed tarballs. + +2014-03-16 Josh Triplett + + Add support for stdcall, thiscall, and fastcall on non-Windows + x86-32. + + Linux supports the stdcall calling convention, either via + functions explicitly declared with the stdcall attribute, or via + code compiled with -mrtd which effectively makes stdcall the + default. + + This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on + non-Windows x86-32 platforms, as non-default calling conventions. + + * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32. + * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and + FFI_FASTCALL on non-Windows x86-32. Increase trampoline size to + accomodate these calling conventions, and unify some ifdeffery. + * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and + FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery. + * src/x86/win32.S: Support compiling on non-Windows x86-32 + platforms. On those platforms, avoid redefining the SYSV symbols + already provided by src/x86/sysv.S. + * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows. + #define __stdcall if needed. + * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows. + #define __fastcall if needed. + * testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows. + * testsuite/libffi.call/fastthis2_win32.c: Ditto. + * testsuite/libffi.call/fastthis3_win32.c: Ditto. + * testsuite/libffi.call/many2_win32.c: Ditto. + * testsuite/libffi.call/many_win32.c: Ditto. + * testsuite/libffi.call/strlen2_win32.c: Ditto. + * testsuite/libffi.call/strlen_win32.c: Ditto. + * testsuite/libffi.call/struct1_win32.c: Ditto. + * testsuite/libffi.call/struct2_win32.c: Ditto. + +2014-03-16 Josh Triplett + + * prep_cif.c: Remove unnecessary ifdef for X86_WIN32. + ffi_prep_cif_core had a special case for X86_WIN32, checking for + FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI + range before returning FFI_BAD_ABI. However, on X86_WIN32, + FFI_THISCALL already falls in that range, making the special case + unnecessary. Remove it. + +2014-03-16 Josh Triplett + + * testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/closure_thiscall.c: Remove fragile stack + pointer checks. These files included inline assembly to save the + stack pointer before and after the call, and compare the values. + However, compilers can and do leave the stack in different states + for these two pieces of inline assembly, such as by saving a + temporary value on the stack across the call; observed with gcc + -Os, and verified as spurious through careful inspection of + disassembly. + +2014-03-16 Josh Triplett + + * testsuite/libffi.call/many.c: Avoid spurious failure due to + excess floating-point precision. + * testsuite/libffi.call/many_win32.c: Ditto. + +2014-03-16 Josh Triplett + + * libtool-ldflags: Re-add. + +2014-03-16 Josh Triplett + + * Makefile.in, aclocal.m4, compile, config.guess, config.sub, + configure, depcomp, include/Makefile.in, install-sh, + libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, + m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, + man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete + autogenerated files from version control. + * .gitignore: Add autogenerated files. + * autogen.sh: New script to generate the autogenerated files. + * README: Document requirement to run autogen.sh when building + directly from version control. + * .travis.yml: Run autogen.sh + +2014-03-14 Anthony Green + + * configure, Makefile.in: Rebuilt. + +2014-03-10 Mike Hommey + + * configure.ac: Allow building for mipsel with Android NDK r8. + * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single + quotes. + +2014-03-10 Landry Breuil + + * configure.ac: Ensure the linker supports @unwind sections in libffi. + +2014-03-01 Anthony Green + + * Makefile.am (EXTRA_DIST): Replace old scripts with + generate-darwin-source-and-headers.py. + * Makefile.in: Rebuilt. + +2014-02-28 Anthony Green + + * Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for + --enable-debug builds. + * Makefile.in: Rebuilt. + +2014-02-28 Makoto Kato + + * src/closures.c: Fix build failure when using clang for Android. + +2014-02-28 Marcin Wojdyr + + * libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead + of -L${libdir}. + +2014-02-28 Paulo Pizarro + + * src/bfin/sysv.S: Calling functions in shared libraries requires + considering the GOT. + +2014-02-28 Josh Triplett + + * src/x86/ffi64.c (classify_argument): Handle case where + FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE. + +2014-02-28 Anthony Green + + * ltmain.sh: Generate with libtool-2.4.2.418. + * m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto. + * configure: Rebuilt. + +2014-02-28 Dominik Vogt + + * configure.ac (AC_ARG_ENABLE struct): Fix typo in help + message. + (AC_ARG_ENABLE raw_api): Ditto. + * configure, fficonfig.h.in: Rebuilt. + +2014-02-28 Will Newton + + * src/arm/sysv.S: Initialize IP register with FP. + +2014-02-28 Yufeng Zhang + + * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the + main CFA reg; update cfi_rel_offset. + +2014-02-15 Marcus Comstedt + + * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove + assumption on contents of r11 in closure. + +2014-02-09 Heiher + + * src/mips/n32.S: Fix call floating point va function. + +2014-01-21 Zachary Waldowski + + * src/aarch64/ffi.c: Fix missing semicolons on assertions under + debug mode. + +2013-12-30 Zachary Waldowski + + * .gitignore: Exclude darwin_* generated source and build_* trees. + * src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang + previous prototype warnings. + * src/arm/ffi.c: Prevent NULL dereference, fix short type warning + * src/dlmalloc.c: Fix warnings from set_segment_flags return type, + and the native use of size_t for malloc on platforms + * src/arm/sysv.S: Use unified syntax. Clang clean-ups for + ARM_FUNC_START. + * generate-osx-source-and-headers.py: Remove. + * build-ios.sh: Remove. + * libffi.xcodeproj/project.pbxproj: Rebuild targets. Include + x86_64+aarch64 pieces in library. Export headers properly. + * src/x86/ffi64.c: More Clang warning clean-ups. + * src/closures.c (open_temp_exec_file_dir): Use size_t. + * src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result. + * src/aarch64/sysv.S: Use CNAME for global symbols. Only use + .size for ELF targets. + * src/aarch64/ffi.c: Clean up for double == long double. Clean up + from Clang warnings. Use Clang cache invalidation builtin. Use + size_t in place of unsigned in many places. Accommodate for + differences in Apple AArch64 ABI. + +2013-12-02 Daniel Rodríguez Troitiño + + * generate-darwin-source-and-headers.py: Clean up, modernize, + merged version of previous scripts. + +2013-11-21 Anthony Green + + * configure, Makefile.in, include/Makefile.in, include/ffi.h.in, + man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt. + +2013-11-21 Alan Modra + + * Makefile.am (EXTRA_DIST): Add new src/powerpc files. + (nodist_libffi_la_SOURCES ): Likewise. + * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc. + * include/ffi.h.in (ffi_prep_types): Declare. + * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types. + * src/types.c (FFI_NONCONST_TYPEDEF): Define and use for + HAVE_LONG_DOUBLE_VARIANT. + * src/powerpc/ffi_powerpc.h: New file. + * src/powerpc/ffi.c: Split into.. + * src/powerpc/ffi_sysv.c: ..new file, and.. + * src/powerpc/ffi_linux64.c: ..new file, rewriting parts. + * src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI + selection as bits controlling features. + * src/powerpc/linux64.S: For consistency, use POWERPC64 rather + than __powerpc64__. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. Move .note.FNU-stack + inside guard. + * src/powerpc/sysv.S: Likewise. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * Makefile.in: Regenerate. + +2013-11-20 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use + NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their + 32-bit versions for 64-bit code. + * src/powerpc/linux64_closure.S: Don't use the return value area + as a parameter save area on ELFv2. + +2013-11-18 Iain Sandoe + + * src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding. + * src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase + labels. + +2013-11-18 Anthony Green + + * src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of + function. + * src/arm/ffi.c (ffi_closure_inner): Moderize function declaration + to appease compiler. + Thanks for Gregory P. Smith . + +2013-11-18 Anthony Green + + * README (tested): Mention PowerPC ELFv2. + +2013-11-16 Alan Modra + + * src/powerpc/ppc_closure.S: Move errant #endif to where it belongs. + Don't bl .Luint128. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF + test to select parameter save sizing for ELFv2 vs. ELFv1. + * src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG, + FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define. + (FFI_TRAMPOLINE_SIZE): Define variant for ELFv2. + * src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define. + (discover_homogeneous_aggregate): New function. + (ffi_prep_args64): Adjust start of param save area for ELFv2. + Handle homogenous floating point struct parms. + (ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2. + Handle ELFv2 return values. Set FLAG_ARG_NEEDS_PSAVE. Handle + homogenous floating point structs. + (ffi_call): Increase size of smst_buffer for ELFv2. Handle ELFv2. + (flush_icache): Compile for ELFv2. + (ffi_prep_closure_loc): Set up ELFv2 trampoline. + (ffi_closure_helper_LINUX64): Don't return all structs directly + to caller. Handle homogenous floating point structs. Handle + ELFv2 struct return values. + * src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for + ELFv2. Adjust toc save location. Call function pointer using + r12. Handle FLAG_RETURNS_SMST. Don't predict branches. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2 + for ELFv2. Define ELFv2 versions of STACKFRAME, PARMSAVE, and + RETVAL. Handle possibly missing parameter save area. Handle + ELFv2 return values. + (.note.GNU-stack): Move inside outer #ifdef. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08 + change. Do not consume an int arg when returning a small struct + for FFI_SYSV ABI. + (ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST. + Properly copy bounce buffer to destination. + * src/powerpc/sysv.S: Revert 2013-02-08 change. + * src/powerpc/ppc_closure.S: Remove stray '+'. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters + according to __STRUCT_PARM_ALIGN__. + (ffi_prep_cif_machdep_core): Likewise. + (ffi_closure_helper_LINUX64): Likewise. + +2013-11-16 Alan Modra + + * src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28. + (.note.GNU-stack): Move inside outer #ifdef. + * src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE, + RETVAL): Define and use throughout. + (ffi_closure_LINUX64): Save fprs before buying stack. + (.note.GNU-stack): Move inside outer #ifdef. + +2013-11-16 Alan Modra + + * src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define. + (FFI_EXTRA_CIF_FIELDS): Define. + * src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the + ABI, not to both fpr and param save area. + (ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep. + Keep initial flags. Formatting. Remove dead FFI_LINUX_SOFT_FLOAT + code. + (ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions. + (ffi_closure_helper_LINUX64): Pass floating point as per ABI, + not to both fpr and parameter save areas. + + * libffi/testsuite/libffi.call/cls_double_va.c (main): Correct + function cast and don't call ffi_prep_cif. + * libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise. + +2013-11-15 Andrew Haley + + * doc/libffi.texi (Closure Example): Fix the sample code. + * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. + +2013-11-15 Andrew Haley + + * testsuite/libffi.call/va_struct1.c (main): Fix broken test. + * testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise + * testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise. + * testsuite/libffi.call/va_1.c (main): Likewise. + +2013-11-14 David Schneider + + * src/arm/ffi.c: Fix register allocation for mixed float and + doubles. + * testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase + for many mixed float and double arguments. + +2013-11-13 Alan Modra + + * doc/libffi.texi (Simple Example): Correct example code. + * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. + +2013-11-13 Anthony Green + + * include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler + based build. (Thanks to tmr111116 on github) + +2013-11-09 Anthony Green + + * m4/libtool.m4: Refresh. + * configure, Makefile.in: Rebuilt. + * README: Add more notes about next release. + +2013-11-09 Shigeharu TAKENO + + * m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize + UltraSPARC-IIi as ultrasparc3. + +2013-11-06 Mark Kettenis + + * src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to + 16-bytes. + +2013-11-06 Konstantin Belousov + + * src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler + source as not requiring executable stack. + +2013-11-02 Anthony Green + + * doc/libffi.texi (The Basics): Clarify return value buffer size + requirements. Also, NULL result buffer pointers are no longer + supported. + * doc/libffi.info: Rebuilt. + +2013-11-02 Mischa Jonker + + * Makefile.am (nodist_libffi_la_SOURCES): Fix build error. + * Makefile.in: Rebuilt. + +2013-11-02 David Schneider + + * src/arm/ffi.c: more robust argument handling for closures on arm hardfloat + * testsuite/libffi.call/many_mixed.c: New file. + * testsuite/libffi.call/cls_many_mixed_args.c: More tests. + +2013-11-02 Vitaly Budovski + + * src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32. + +2013-10-23 Mark H Weaver + + * src/mips/ffi.c: Fix handling of uint32_t arguments on the + MIPS N32 ABI. + +2013-10-13 Sandra Loosemore + + * README: Add Nios II to table of supported platforms. + * Makefile.am (EXTRA_DIST): Add nios2 files. + (nodist_libffi_la_SOURCES): Likewise. + * Makefile.in: Regenerated. + * configure.ac (nios2*-linux*): New host. + (NIOS2): Add AM_CONDITIONAL. + * configure: Regenerated. + * src/nios2/ffi.c: New. + * src/nios2/ffitarget.h: New. + * src/nios2/sysv.S: New. + * src/prep_cif.c (initialize_aggregate): Handle extra structure + alignment via FFI_AGGREGATE_ALIGNMENT. + (ffi_prep_cif_core): Conditionalize structure return for NIOS2. + +2013-10-10 Sandra Loosemore + + * testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn): + Fix uninitialized variable. + +2013-10-11 Marcus Shawcroft + + * testsuite/libffi.call/many.c (many): Replace * with +. + +2013-10-08 Ondřej Bílka + + * src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c, + src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c, + src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c, + src/microblaze/sysv.S, src/powerpc/darwin_closure.S, + src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c, + src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix + spelling errors. + +2013-10-08 Anthony Green + + * aclocal.m4, compile, config.guess, config.sub, depcomp, + install-sh, mdate-sh, missing, texinfo.tex: Update from upstream. + * configure.ac: Update version to 3.0.14-rc0. + * Makefile.in, configure, Makefile.in, include/Makefile.in, + man/Makefile.in, testsuite/Makefile.in: Rebuilt. + * README: Mention M88K and VAX. + +2013-07-15 Miod Vallat + + * Makefile.am, + configure.ac, + src/m88k/ffi.c, + src/m88k/ffitarget.h, + src/m88k/obsd.S, + src/vax/elfbsd.S, + src/vax/ffi.c, + src/vax/ffitarget.h: Add m88k and vax support. + +2013-06-24 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration + before statements. + (ffi_prep_args64): Support little-endian. + (ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise. + +2013-06-12 Mischa Jonker + + * configure.ac: Add support for ARC. + * Makefile.am: Likewise. + * README: Add ARC details. + * src/arc/arcompact.S: New. + * src/arc/ffi.c: Likewise. + * src/arc/ffitarget.h: Likewise. + +2013-03-28 David Schneider + + * src/arm/ffi.c: Fix support for ARM hard-float calling convention. + * src/arm/sysv.S: call different methods for SYSV and VFP ABIs. + * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with + mixed arguments, many doubles. + * testsuite/libffi.call/many_double.c: testcase for calling a function using + more than 8 doubles. + * testcase/libffi.call/many.c: use absolute value to check result against an + epsilon + +2013-03-17 Anthony Green + + * README: Update for 3.0.13. + * configure.ac: Ditto. + * configure: Rebuilt. + * doc/*: Update version. + +2013-03-17 Dave Korn + + * src/closures.c (is_emutramp_enabled + [!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside + enclosing #if scope. + +2013-03-17 Anthony Green + + * configure.ac: Only modify toolexecdir in certain cases. + * configure: Rebuilt. + +2013-03-16 Gilles Talis + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use + fparg_count,etc on __NO_FPRS__ targets. + +2013-03-16 Alan Hourihane + + * src/m68k/sysv.S (epilogue): Don't use extb instruction on + m680000 machines. + +2013-03-16 Alex Gaynor + + * src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack. + +2013-03-13 Markos Chandras + + * configure.ac: Add support for Imagination Technologies Meta. + * Makefile.am: Likewise. + * README: Add Imagination Technologies Meta details. + * src/metag/ffi.c: New. + * src/metag/ffitarget.h: Likewise. + * src/metag/sysv.S: Likewise. + +2013-02-24 Andreas Schwab + + * doc/libffi.texi (Structures): Fix missing category argument of + @deftp. + +2013-02-11 Anthony Green + + * configure.ac: Update release number to 3.0.12. + * configure: Rebuilt. + * README: Update release info. + +2013-02-10 Anthony Green + + * README: Add Moxie. + * src/moxie/ffi.c: Created. + * src/moxie/eabi.S: Created. + * src/moxie/ffitarget.h: Created. + * Makefile.am (nodist_libffi_la_SOURCES): Add Moxie. + * Makefile.in: Rebuilt. + * configure.ac: Add Moxie. + * configure: Rebuilt. + * testsuite/libffi.call/huge_struct.c: Disable format string + warnings for moxie*-*-elf tests. + +2013-02-10 Anthony Green + + * Makefile.am (LTLDFLAGS): Fix reference. + * Makefile.in: Rebuilt. + +2013-02-10 Anthony Green + + * README: Update supported platforms. Update test results link. + +2013-02-09 Anthony Green + + * testsuite/libffi.call/negint.c: Remove forced -O2. + * testsuite/libffi.call/many2.c (foo): Remove GCCism. + * testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition. + + * src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong + closure return type fix developed by Martin v. Löwis for cpython + fork. + +2013-02-08 Andreas Tobler + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct + support. + * src/powerpc/sysv.S: Ditto. + +2013-02-08 Anthony Green + + * testsuite/libffi.call/cls_longdouble.c: Remove xfail for + arm*-*-*. + +2013-02-08 Anthony Green + + * src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC. + +2013-02-08 Matthias Klose + + * man/ffi_prep_cif.3: Clean up for debian linter. + +2013-02-08 Peter Bergner + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed + on the stack. + +2013-02-08 Anthony Green + + * Makefile.am (EXTRA_DIST): Add missing files. + * testsuite/Makefile.am (EXTRA_DIST): Ditto. + * Makefile.in: Rebuilt. + +2013-02-08 Anthony Green + + * configure.ac: Move sparc asm config checks to within functions + for compatibility with sun tools. + * configure: Rebuilt. + * src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9 + systems. + * src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache + flusher. + +2013-02-08 Nathan Rossi + + * src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of + small big-endian structures. + (ffi_prep_args): Ditto. + +2013-02-07 Anthony Green + + * src/sparc/v8.S (ffi_call_v8): Fix typo from last patch + (effectively hiding ffi_call_v8). + +2013-02-07 Anthony Green + + * configure.ac: Update bug reporting address. + * configure.in: Rebuild. + + * src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for + Sun compiler. + * src/sparc/ffi.c (ffi_call): Remove warning. + Call ffi_flush_icache for non-GCC builds. + (ffi_prep_closure_loc): Use ffi_flush_icache. + + * Makefile.am (EXTRA_DIST): Add libtool-ldflags. + * Makefile.in: Rebuilt. + * libtool-ldflags: New file. + +2013-02-07 Daniel Schepler + + * configure.ac: Correctly identify x32 systems as 64-bit. + * m4/libtool.m4: Remove libtool expr error. + * aclocal.m4, configure: Rebuilt. + +2013-02-07 Anthony Green + + * configure.ac: Fix GCC usage test. + * configure: Rebuilt. + * README: Mention LLVM/GCC x86_64 issue. + * testsuite/Makefile.in: Rebuilt. + +2013-02-07 Anthony Green + + * testsuite/libffi.call/cls_double_va.c (main): Replace // style + comments with /* */ for xlc compiler. + * testsuite/libffi.call/stret_large.c (main): Ditto. + * testsuite/libffi.call/stret_large2.c (main): Ditto. + * testsuite/libffi.call/nested_struct1.c (main): Ditto. + * testsuite/libffi.call/huge_struct.c (main): Ditto. + * testsuite/libffi.call/float_va.c (main): Ditto. + * testsuite/libffi.call/cls_struct_va1.c (main): Ditto. + * testsuite/libffi.call/cls_pointer_stack.c (main): Ditto. + * testsuite/libffi.call/cls_pointer.c (main): Ditto. + * testsuite/libffi.call/cls_longdouble_va.c (main): Ditto. + +2013-02-06 Anthony Green + + * man/ffi_prep_cif.3: Clean up for debian lintian checker. + +2013-02-06 Anthony Green + + * Makefile.am (pkgconfigdir): Add missing pkgconfig install bits. + * Makefile.in: Rebuild. + +2013-02-02 Mark H Weaver + + * src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed + via general purpose registers. + +2013-01-21 Nathan Rossi + + * README: Add MicroBlaze details. + * Makefile.am: Add MicroBlaze support. + * configure.ac: Likewise. + * src/microblaze/ffi.c: New. + * src/microblaze/ffitarget.h: Likewise. + * src/microblaze/sysv.S: Likewise. + +2013-01-21 Nathan Rossi + * testsuite/libffi.call/return_uc.c: Fixed issue. + +2013-01-21 Chris Zankel + + * README: Add Xtensa support. + * Makefile.am: Likewise. + * configure.ac: Likewise. + * Makefile.in Regenerate. + * configure: Likewise. + * src/prep_cif.c: Handle Xtensa. + * src/xtensa: New directory. + * src/xtensa/ffi.c: New file. + * src/xtensa/ffitarget.h: Ditto. + * src/xtensa/sysv.S: Ditto. + +2013-01-11 Anthony Green + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style + comments with /* */ for xlc compiler. + * src/powerpc/aix.S (ffi_call_AIX): Ditto. + * testsuite/libffi.call/ffitest.h (allocate_mmap): Delete + deprecated inline function. + * testsuite/libffi.special/ffitestcxx.h: Ditto. + * README: Add update for AIX support. + +2013-01-11 Anthony Green + + * configure.ac: Robustify pc relative reloc check. + * m4/ax_cc_maxopt.m4: Don't -malign-double. This is an ABI + changing option for 32-bit x86. + * aclocal.m4, configure: Rebuilt. + * README: Update supported target list. + +2013-01-10 Anthony Green + + * README (tested): Add Compiler column to table. + +2013-01-10 Anthony Green + + * src/x86/ffi64.c (struct register_args): Make sse array and array + of unions for sunpro compiler compatibility. + +2013-01-10 Anthony Green + + * configure.ac: Test target platform size_t size. Handle both 32 + and 64-bit builds for x86_64-* and i?86-* targets (allowing for + CFLAG option to change default settings). + * configure, aclocal.m4: Rebuilt. + +2013-01-10 Anthony Green + + * testsuite/libffi.special/special.exp: Only run exception + handling tests when using GNU compiler. + + * m4/ax_compiler_vendor.m4: New file. + * configure.ac: Test for compiler vendor and don't use + AX_CFLAGS_WARN_ALL with the sun compiler. + * aclocal.m4, configure: Rebuilt. + +2013-01-10 Anthony Green + + * include/ffi_common.h: Don't use GCCisms to define types when + building with the SUNPRO compiler. + +2013-01-10 Anthony Green + + * configure.ac: Put local.exp in the right place. + * configure: Rebuilt. + + * src/x86/ffi.c: Update comment about regparm function attributes. + * src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires + that all function arguments be passed on the stack (no regparm + support). + +2013-01-08 Anthony Green + + * configure.ac: Generate local.exp. This sets CC_FOR_TARGET + when we are using the vendor compiler. + * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to + ../local.exp. + * configure, testsuite/Makefile.in: Rebuilt. + + * testsuite/libffi.call/call.exp: Run tests with different + options, depending on whether or not we are using gcc or the + vendor compiler. + * testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on + whether or not we are building/testing with gcc. + +2013-01-08 Anthony Green + + * configure.ac: Switch x86 solaris target to X86 by default. + * configure: Rebuilt. + +2013-01-08 Anthony Green + + * configure.ac: Fix test for read-only eh_frame. + * configure: Rebuilt. + +2013-01-08 Anthony Green + + * src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info + when building with the GNU toolchain. + * testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor + compiler. + +2013-01-07 Thorsten Glaser + + * testsuite/libffi.call/cls_uchar_va.c, + testsuite/libffi.call/cls_ushort_va.c, + testsuite/libffi.call/va_1.c: Testsuite fixes. + +2013-01-07 Thorsten Glaser + + * src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define. + (ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls. + * src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto. + +2013-01-04 Anthony Green + + * Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions + and -Wall. This is set in the configure script after testing for + GCC. + * Makefile.in: Rebuilt. + +2013-01-02 rofl0r + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc + when long double == double. + +2013-01-02 Reini Urban + + * Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS + (required for shared libs on cygwin/mingw). + * Makefile.in: Rebuilt. + +2012-10-31 Alan Modra + + * src/powerpc/linux64_closure.S: Add new ABI support. + * src/powerpc/linux64.S: Likewise. + +2012-10-30 Magnus Granberg + Pavel Labushev + + * configure.ac: New options pax_emutramp + * configure, fficonfig.h.in: Regenerated + * src/closures.c: New function emutramp_enabled_check() and + checks. + +2012-10-30 Frederick Cheung + + * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain + lion) and future version. + * configure: Rebuild. + +2012-10-30 James Greenhalgh + Marcus Shawcroft + + * README: Add details of aarch64 port. + * src/aarch64/ffi.c: New. + * src/aarch64/ffitarget.h: Likewise. + * src/aarch64/sysv.S: Likewise. + * Makefile.am: Support aarch64. + * configure.ac: Support aarch64. + * Makefile.in, configure: Rebuilt. + +2012-10-30 James Greenhalgh + Marcus Shawcroft + + * testsuite/lib/libffi.exp: Add support for aarch64. + * testsuite/libffi.call/cls_struct_va1.c: New. + * testsuite/libffi.call/cls_uchar_va.c: Likewise. + * testsuite/libffi.call/cls_uint_va.c: Likewise. + * testsuite/libffi.call/cls_ulong_va.c: Likewise. + * testsuite/libffi.call/cls_ushort_va.c: Likewise. + * testsuite/libffi.call/nested_struct11.c: Likewise. + * testsuite/libffi.call/uninitialized.c: Likewise. + * testsuite/libffi.call/va_1.c: Likewise. + * testsuite/libffi.call/va_struct1.c: Likewise. + * testsuite/libffi.call/va_struct2.c: Likewise. + * testsuite/libffi.call/va_struct3.c: Likewise. + +2012-10-12 Walter Lee + + * Makefile.am: Add TILE-Gx/TILEPro support. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * configure: Likewise. + * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro. + * src/tile: New directory. + * src/tile/ffi.c: New file. + * src/tile/ffitarget.h: Ditto. + * src/tile/tile.S: Ditto. + +2012-10-12 Matthias Klose + + * generate-osx-source-and-headers.py: Normalize whitespace. + +2012-09-14 David Edelsohn + + * configure: Regenerated. + +2012-08-26 Andrew Pinski + + PR libffi/53014 + * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with + soft-float. + +2012-08-08 Uros Bizjak + + * src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + +2012-07-18 H.J. Lu + + PR libffi/53982 + PR libffi/53973 + * src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32. + (FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32. + +2012-05-16 H.J. Lu + + * configure: Regenerated. + +2012-05-05 Nicolas Lelong + + * libffi.xcodeproj/project.pbxproj: Fixes. + * README: Update for iOS builds. + +2012-04-23 Alexandre Keunecke I. de Mendonca + + * configure.ac: Add Blackfin/sysv support + * Makefile.am: Add Blackfin/sysv support + * src/bfin/ffi.c: Add Blackfin/sysv support + * src/bfin/ffitarget.h: Add Blackfin/sysv support + +2012-04-11 Anthony Green + + * Makefile.am (EXTRA_DIST): Add new script. + * Makefile.in: Rebuilt. + +2012-04-11 Zachary Waldowski + + * generate-ios-source-and-headers.py, + libffi.xcodeproj/project.pbxproj: Support a Mac static library via + Xcode. Set iOS compatibility to 4.0. Move iOS trampoline + generation into an Xcode "run script" phase. Include both as + Xcode build scripts. Don't always regenerate config files. + +2012-04-10 Anthony Green + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon. + +2012-04-06 Anthony Green + + * Makefile.am (EXTRA_DIST): Add new iOS/xcode files. + * Makefile.in: Rebuilt. + +2012-04-06 Mike Lewis + + * generate-ios-source-and-headers.py: New file. + * libffi.xcodeproj/project.pbxproj: New file. + * README: Update instructions on building iOS binary. + * build-ios.sh: Delete. + +2012-04-06 Anthony Green + + * src/x86/ffi64.c (UINT128): Define differently for Intel and GNU + compilers, then use it. + +2012-04-06 H.J. Lu + + * m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32. + +2012-04-06 Anthony Green + + * testsuite/Makefile.am (EXTRA_DIST): Add missing test cases. + * testsuite/Makefile.in: Rebuilt. + +2012-04-05 Zachary Waldowski + + * include/ffi.h.in: Add missing trampoline table fields. + * src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references + in CNAME. + * src/x86/ffi.c: Wrap Windows specific code in ifdefs. + +2012-04-02 Peter Bergner + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp. + Silence casting pointer to integer of different size warning. + Delete goto to previously deleted label. + (ffi_call): Silence possibly undefined warning. + (ffi_closure_helper_SYSV): Declare variable type. + +2012-04-02 Peter Rosin + + * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return + value in the Intel version as is already done for the AT&T version. + (ffi_closure_SYSV): Likewise. + (ffi_closure_raw_SYSV): Likewise. + (ffi_closure_STDCALL): Likewise. + +2012-03-29 Peter Rosin + + * src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame + generation, fix the ENDP label and remove the surplus third arg + from the 'lea' insn. + +2012-03-29 Peter Rosin + + * src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label + visible outside the PROC, so that ffi_closure_raw_THISCALL can see + it. Also instruct the assembler to add a frame to the function. + +2012-03-23 Peter Rosin + + * Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING. + * Makefile.in: Rebuilt. + * include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations + to all data exports, when compiling libffi clients using MSVC. + +2012-03-29 Peter Rosin + + * src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and + make it the default for MSVC. + (FFI_TYPE_MS_STRUCT): New structure return convention. + * src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure + return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT + instead of an ordinary FFI_TYPE_STRUCT. + (ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. + (ffi_call): Likewise. + (ffi_prep_incoming_args_SYSV): Likewise. + (ffi_raw_call): Likewise. + (ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV. + * src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT, + return a pointer to the result structure in eax and don't pop + that pointer from the stack, the caller takes care of it. + (ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. + (ffi_closure_raw_SYSV): Likewise. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline + assembly version with Intel syntax. + * testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise. + +2012-03-23 Peter Rosin + + * testsuite/libffi.call/ffitest.h: Provide abstration of + __attribute__((fastcall)) in the form of a __FASTCALL__ + define. Define it to __fastcall for MSVC. + * testsuite/libffi.call/fastthis1_win32.c: Use the above. + * testsuite/libffi.call/fastthis2_win32.c: Likewise. + * testsuite/libffi.call/fastthis3_win32.c: Likewise. + * testsuite/libffi.call/strlen2_win32.c: Likewise. + * testsuite/libffi.call/struct1_win32.c: Likewise. + * testsuite/libffi.call/struct2_win32.c: Likewise. + +2012-03-22 Peter Rosin + + * src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual + frame on function entry, MASM adds one automatically. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing + bits in the MSVC headers. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style + with no declarations after statements. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5_1_byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6_1_byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7_1_byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble_split.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_dbls_struct.c: Likewise. + * testsuite/libffi.call/cls_pointer_stack.c: Likewise. + * testsuite/libffi.call/err_bad_typedef.c: Likewise. + * testsuite/libffi.call/huge_struct.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct10.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/nested_struct4.c: Likewise. + * testsuite/libffi.call/nested_struct5.c: Likewise. + * testsuite/libffi.call/nested_struct6.c: Likewise. + * testsuite/libffi.call/nested_struct7.c: Likewise. + * testsuite/libffi.call/nested_struct8.c: Likewise. + * testsuite/libffi.call/nested_struct9.c: Likewise. + * testsuite/libffi.call/stret_large.c: Likewise. + * testsuite/libffi.call/stret_large2.c: Likewise. + * testsuite/libffi.call/stret_medium.c: Likewise. + * testsuite/libffi.call/stret_medium2.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + * testsuite/libffi.call/struct1_win32.c: Likewise. + * testsuite/libffi.call/struct2.c: Likewise. + * testsuite/libffi.call/struct2_win32.c: Likewise. + * testsuite/libffi.call/struct3.c: Likewise. + * testsuite/libffi.call/struct4.c: Likewise. + * testsuite/libffi.call/struct5.c: Likewise. + * testsuite/libffi.call/struct6.c: Likewise. + * testsuite/libffi.call/struct7.c: Likewise. + * testsuite/libffi.call/struct8.c: Likewise. + * testsuite/libffi.call/struct9.c: Likewise. + * testsuite/libffi.call/testclosure.c: Likewise. + +2012-03-21 Peter Rosin + + * testsuite/libffi.call/float_va.c (float_va_fn): Use %f when + printing doubles (%lf is for long doubles). + (main): Likewise. + +2012-03-21 Peter Rosin + + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] + (set_ld_library_path_env_vars): Add the library search dir to PATH + (and save PATH for later). + (restore_ld_library_path_env_vars): Restore PATH. + +2012-03-21 Peter Rosin + + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] + (set_ld_library_path_env_vars): Add the library search dir to PATH + (and save PATH for later). + (restore_ld_library_path_env_vars): Restore PATH. + +2012-03-20 Peter Rosin + + * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. + * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label + visible outside the PROC, so that ffi_closure_THISCALL can see it. + +2012-03-20 Peter Rosin + + * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. + * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label + visible outside the PROC, so that ffi_closure_THISCALL can see it. + +2012-03-19 Alan Hourihane + + * src/m68k/ffi.c: Add MINT support. + * src/m68k/sysv.S: Ditto. + +2012-03-06 Chung-Lin Tang + + * src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to + ffi_call_VFP(). + (ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of + ffi_closure_VFP. + * src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code. + +2012-03-19 chennam + + * src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure + support. + +2012-03-13 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto. + +2012-03-09 David Edelsohn + + * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 + change to return value of ffi_closure_helper_DARWIN and load type + from return type. + +2012-03-03 H.J. Lu + + * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned + long. + (ffi_prep_closure_loc): Cast to 64bit address in trampoline. + (ffi_closure_unix64_inner): Cast return pointer to unsigned long + first. + + * src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32. + (ffi_arg): Set to unsigned long long for x32. + (ffi_sarg): Set to long long for x32. + +2012-03-03 H.J. Lu + + * src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI. + +2012-03-03 Andoni Morales Alastruey + + * configure.ac: Add -no-undefined for both 32- and 64-bit x86 + windows-like hosts. + * configure: Rebuilt. + +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + +2012-02-23 Anthony Green + + * src/*/ffitarget.h: Ensure that users never include ffitarget.h + directly. + +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + +2012-02-10 Kai Tietz + + * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 + windows target. + * configure: Regenerated. + +2012-02-08 Kai Tietz + + * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 + also FFI_THISCALL. + * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype. + (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code. + (ffi_prep_closure_loc): Add FFI_THISCALL support. + * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size. + * src/x86/win32.S (ffi_closure_THISCALL): New closure code + for thiscall-calling convention. + * testsuite/libffi.call/closure_thiscall.c: New test. + +2012-01-28 Kai Tietz + + * src/libffi/src/x86/ffi.c (ffi_call_win32): Add new + argument to prototype for specify calling-convention. + (ffi_call): Add support for stdcall/thiscall convention. + (ffi_prep_args): Likewise. + (ffi_raw_call): Likewise. + * src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and + FFI_FASTCALL. + * src/x86/win32.S (_ffi_call_win32): Add support for + fastcall/thiscall calling-convention calls. + * testsuite/libffi.call/fastthis1_win32.c: New test. + * testsuite/libffi.call/fastthis2_win32.c: New test. + * testsuite/libffi.call/fastthis3_win32.c: New test. + * testsuite/libffi.call/strlen2_win32.c: New test. + * testsuite/libffi.call/many2_win32.c: New test. + * testsuite/libffi.call/struct1_win32.c: New test. + * testsuite/libffi.call/struct2_win32.c: New test. + +2012-01-23 Uros Bizjak + + * src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI. + +2012-01-23 Anthony Green + Chris Young + + * configure.ac: Add Amiga support. + * configure: Rebuilt. + +2012-01-23 Dmitry Nadezhin + + * include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions. + +2012-01-23 Andreas Schwab + + * src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain + mc68000. Test for __HAVE_68881__ in addition to __MC68881__. + +2012-01-19 Jakub Jelinek + + PR rtl-optimization/48496 + * src/ia64/ffi.c (ffi_call): Fix up aliasing violations. + +2012-01-09 Rainer Orth + + * configure.ac (i?86-*-*): Set TARGET to X86_64. + * configure: Regenerate. + +2011-12-07 Andrew Pinski + + PR libffi/50051 + * src/mips/n32.S: Add ".set mips4". + +2011-11-21 Andreas Tobler + + * configure: Regenerate. + +2011-11-12 David Gilbert + + * doc/libffi.texi, include/ffi.h.in, include/ffi_common.h, + man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3, + man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h, + src/cris/ffi.c, src/prep_cif.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/float_va.c: Many changes to support variadic + function calls. + +2011-11-12 Kyle Moffett + + * src/powerpc/ffi.c, src/powerpc/ffitarget.h, + src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for + softfloat powerpc variants. + +2011-11-12 Petr Salinger + + * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support. + * configure: Rebuilt. + +2011-11-12 Timothy Wall + + * src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max + alignment of 4 for wince on ARM. + +2011-11-12 Kyle Moffett + Anthony Green + + * src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string + instructions (not available on some cores, like the PPC440). + +2011-11-12 Kimura Wataru + + * m4/ax_enable_builddir: Change from string comparison to numeric + comparison for wc output. + * configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS + X 10.7. + * configure: Rebuilt. + +2011-11-12 Anthony Green + + * Makefile.am (AM_CCASFLAGS): Add -g option to build assembly + files with debug info. + * Makefile.in: Rebuilt. + +2011-11-12 Jasper Lievisse Adriaanse + + * README: Update list of supported OpenBSD systems. + +2011-11-12 Anthony Green + + * libtool-version: Update. + * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if + FFI_DEBUG. + (libffi_la_SOURCES): Remove src/debug.c + (EXTRA_DIST): Add src/debug.c + * Makefile.in: Rebuilt. + * README: Update for 3.0.11. + +2011-11-10 Richard Henderson + + * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check. + * configure, aclocal.m4: Rebuild. + +2011-09-04 Iain Sandoe + + PR libffi/49594 + * src/powerpc/darwin_closure.S (stubs): Make the stub binding + helper reference track the architecture pointer size. + +2011-08-25 Andrew Haley + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly + instructions. + * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead. + +2011-07-11 Andrew Haley + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache. + +2011-06-29 Rainer Orth + + * testsuite/libffi.call/cls_double_va.c: Move PR number to comment. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + +2011-06-29 Rainer Orth + + PR libffi/46660 + * testsuite/libffi.call/cls_double_va.c: xfail dg-output on + mips-sgi-irix6*. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + +2011-06-14 Rainer Orth + + * testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8, + PRId8 instead of %hhu, %hhd. + * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8, + PRIu8): Define. + [__sgi__] (PRId8, PRIu8): Define. + +2011-04-29 Rainer Orth + + * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): + Define. + Use them to handle ELF vs. ECOFF differences. + [__osf__] (_GLOBAL__F_ffi_call_osf): Define. + +2011-03-30 Timothy Wall + + * src/powerpc/darwin.S: Fix unknown FDE encoding. + * src/powerpc/darwin_closure.S: ditto. + +2011-02-25 Anthony Green + + * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more + 32-bit ABIs. + +2011-02-15 Anthony Green + + * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math. + * configure: Rebuilt. + +2011-02-13 Ralf Wildenhues + + * configure: Regenerate. + +2011-02-13 Anthony Green + + * include/ffi_common.h (UNLIKELY, LIKELY): Define. + * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition. + * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition. + + * src/prep_cif.c (initialize_aggregate): Convert assertion into + FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0. + + * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + * src/arm/ffi.c (ffi_prep_closure_loc): Ditto. + * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto. + * src/mips/ffi.c (ffi_prep_closure_loc): Ditto. + * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto. + * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto. + +2011-02-11 Anthony Green + + * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + +2011-02-09 Stuart Shelton + + http://bugs.gentoo.org/show_bug.cgi?id=286911 + * src/mips/ffitarget.h: Clean up error messages. + * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to + ffi_raw*. + * include/ffi.h.in: Add pragma for SGI compiler. + +2011-02-09 Anthony Green + + * configure.ac: Add powerpc64-*-darwin* support. + +2011-02-09 Anthony Green + + * README: Mention Interix. + +2011-02-09 Jonathan Callen + + * configure.ac: Add Interix to win32/cygwin/mingw case. + * configure: Ditto. + * src/closures.c: Treat Interix like Cygwin, instead of as a + generic win32. + +2011-02-09 Anthony Green + + * testsuite/libffi.call/err_bad_typedef.c: Remove xfail. + * testsuite/libffi.call/err_bad_abi.c: Remove xfail. + * src/x86/ffi64.c (UNLIKELY, LIKELY): Define. + (ffi_prep_closure_loc): Check for bad ABI. + * src/prep_cif.c (UNLIKELY, LIKELY): Define. + (initialize_aggregate): Check for bad types. + +2011-02-09 Landon Fuller + + * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh, + src/arm/trampoline.S. + (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S. + * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define. + * src/arm/ffi.c (ffi_trampoline_table) + (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry) + (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) + (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables) + (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free): + Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS). + (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case + separately. + * src/arm/sysv.S: Handle Apple iOS host. + * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case. + * build-ios.sh: New file. + * fficonfig.h.in, configure, Makefile.in: Rebuilt. + * README: Mention ARM iOS. + +2011-02-08 Oren Held + + * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid + redefinition of mallinfo on HP-UX. + +2011-02-08 Ginn Chen + + * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio + aggregate return ABI. Flush cache. + (ffi_prep_closure_loc): Flush cache. + +2011-02-11 Anthony Green + + From Tom Honermann : + * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on + AIX. Declare .ffi_prep_args. Insert nops after branch + instructions so that the AIX linker can insert TOC reload + instructions. + * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN. + +2011-02-08 Ed + + * src/powerpc/asm.h: Fix grammar nit in comment. + +2011-02-08 Uli Link + + * include/ffi.h.in (FFI_64_BIT_MAX): Define and use. + +2011-02-09 Rainer Orth + + PR libffi/46661 + * testsuite/libffi.call/cls_pointer.c (main): Cast void * to + uintptr_t first. + * testsuite/libffi.call/cls_pointer_stack.c (main): Likewise. + +2011-02-08 Rafael Avila de Espindola + + * configure.ac: Fix x86 test for pc related relocs. + * configure: Rebuilt. + +2011-02-07 Joel Sherrill + + * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing. + Handle case when CPU variant does not have long double support. + * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire, + and cores with soft floating point. + +2011-02-07 Joel Sherrill + + * configure.ac: Add mips*-*-rtems* support. + * configure: Regenerate. + * src/mips/ffitarget.h: Ensure needed constants are available + for targets which do not have sgidefs.h. + +2011-01-26 Dave Korn + + PR target/40125 + * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs. + * configure: Regenerate. + +2010-12-18 Iain Sandoe + + PR libffi/29152 + PR libffi/42378 + * src/powerpc/darwin_closure.S: Provide Darwin64 implementation, + update comments. + * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New, + (FFI_TRAMPOLINE_SIZE): Update for Darwin64. + * src/powerpc/darwin.S: Provide Darwin64 implementation, + update comments. + * src/powerpc/ffi_darwin.c: Likewise. + +2010-12-06 Rainer Orth + + * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double + backslashes. + (libffi_cv_as_string_pseudo_op): Likewise. + * configure: Regenerate. + +2010-12-03 Chung-Lin Tang + + * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive. + (ffi_closure_VFP): Same. + (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp' + directive. + +2010-12-01 Rainer Orth + + * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define. + (PRIuPTR): Define. + +2010-11-29 Richard Henderson + Rainer Orth + + * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define. + (.eh_frame): Use FDE_ENCODING. + (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE. + +2010-11-22 Jacek Caban + + * configure.ac: Check for symbol underscores on mingw-w64. + * configure: Rebuilt. + * src/x86/win64.S: Correctly access extern symbols in respect to + underscores. + +2010-11-15 Rainer Orth + + * testsuite/lib/libffi-dg.exp: Rename ... + * testsuite/lib/libffi.exp: ... to this. + * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp. + * libffi/testsuite/libffi.special/special.exp: Likewise. + +2010-10-28 Chung-Lin Tang + + * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling + code, new parameter, and return value. Update comments. + (ffi_prep_cif_machdep): Add case for VFP struct return values. Add + call to layout_vfp_args(). + (ffi_call_SYSV): Update declaration. + (ffi_call_VFP): New declaration. + (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP() + when ABI is FFI_VFP. + (ffi_closure_VFP): New declaration. + (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to + ffi_prep_incoming_args_SYSV(). + (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument + case handling. + (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline + construction under VFP hard-float. + (rec_vfp_type_p): New function. + (vfp_type_p): Same. + (place_vfp_arg): Same. + (layout_vfp_args): Same. + * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI + based on __ARM_PCS_VFP. + (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific + fields. + (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code. + (FFI_TYPE_STRUCT_VFP_DOUBLE): Same. + * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to + direct call. Move function pointer load upwards. + (ffi_call_VFP): New function. + (ffi_closure_VFP): Same. + + * testsuite/lib/libffi-dg.exp (check-flags): New function. + (dg-skip-if): New function. + * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-* + and compiler options include -mfloat-abi=hard. + * testsuite/libffi.call/cls_longdouble_va.c: Same. + +2010-10-01 Jakub Jelinek + + PR libffi/45677 + * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is + a multiple of 8. + * testsuite/libffi.call/many2.c: New test. + +2010-08-20 Mark Wielaard + + * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r + returns NULL. + +2010-08-09 Andreas Tobler + + * configure.ac: Add target powerpc64-*-freebsd*. + * configure: Regenerate. + * testsuite/libffi.call/cls_align_longdouble_split.c: Pass + -mlong-double-128 only to linux targets. + * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. + * testsuite/libffi.call/cls_longdouble.c: Likewise. + * testsuite/libffi.call/huge_struct.c: Likewise. + +2010-08-05 Dan Witte + + * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the + debug CRT when --enable-debug is given. + * configure.ac: Define it. + * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately. + +2010-08-04 Dan Witte + + * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64 + platforms. + * src/x86/ffi.c: Remove redundant ifdef checks. + * src/prep_cif.c: Push stack space computation into src/x86/ffi.c + for X86_ANY so return value space doesn't get added twice. + +2010-08-03 Neil Rashbrooke + + * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy. + +2010-07-22 Dan Witte + + * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI. + * src/prep_cif.c: Fix ABI assertion. + * src/cris/ffi.c: Ditto. + +2010-07-10 Evan Phoenix + + * src/closures.c (selinux_enabled_check): Fix strncmp usage bug. + +2010-07-07 Dan Horák + + * include/ffi.h.in: Protect #define with #ifndef. + * src/powerpc/ffitarget.h: Ditto. + * src/s390/ffitarget.h: Ditto. + * src/sparc/ffitarget.h: Ditto. + +2010-07-07 Neil Roberts + + * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to + 16-bytes. + +2010-07-02 Jakub Jelinek + + * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes. + * Makefile.in: Regenerated. + +2010-05-19 Rainer Orth + + * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as + output, too. + (libffi_cv_as_ascii_pseudo_op): Check for .ascii. + (libffi_cv_as_string_pseudo_op): Check for .string. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error. + +2010-05-11 Dan Witte + + * doc/libffi.tex: Document previous change. + +2010-05-11 Makoto Kato + + * src/x86/ffi.c (ffi_call): Don't copy structs passed by value. + +2010-05-05 Michael Kohler + + * src/dlmalloc.c (dlfree): Fix spelling. + * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto. + * configure.ac: Ditto. + * configure: Rebuilt. + +2010-04-13 Dan Witte + + * msvcc.sh: Build with -W3 instead of -Wall. + * src/powerpc/ffi_darwin.c: Remove build warnings. + * src/x86/ffi.c: Ditto. + * src/x86/ffitarget.h: Ditto. + +2010-04-12 Dan Witte + Walter Meinl + + * configure.ac: Add OS/2 support. + * configure: Rebuilt. + * src/closures.c: Ditto. + * src/dlmalloc.c: Ditto. + * src/x86/win32.S: Ditto. + +2010-04-07 Jakub Jelinek + + * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable. + +2010-04-02 Ralf Wildenhues + + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2010-03-30 Dan Witte + + * msvcc.sh: Disable build warnings. + * README (tested): Clarify windows build procedure. + +2010-03-15 Rainer Orth + + * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * libffi/src/x86/unix64.S (.eh_frame) + [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type. + +2010-03-14 Matthias Klose + + * src/x86/ffi64.c: Fix typo in comment. + * src/x86/ffi.c: Use /* ... */ comment style. + +2010-02-24 Rainer Orth + + * doc/libffi.texi (The Closure API): Fix typo. + * doc/libffi.info: Remove. + +2010-02-15 Matthias Klose + + * src/arm/sysv.S (__ARM_ARCH__): Define for processor + __ARM_ARCH_7EM__. + +2010-01-15 Anthony Green + + * README: Add notes on building with Microsoft Visual C++. + +2010-01-15 Daniel Witte + + * msvcc.sh: New file. + + * src/x86/win32.S: Port assembly routines to MSVC and #ifdef. + * src/x86/ffi.c: Tweak function declaration and remove excess + parens. + * include/ffi.h.in: Add __declspec(align(8)) to typedef struct + ffi_closure. + + * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new + function ffi_call_win32 on X86_WIN32. + * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32. + (ffi_call_STDCALL): Remove. + + * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code + to ffi_prep_cif_machdep for x86. + * src/x86/ffi.c (ffi_prep_cif_machdep): To here. + +2010-01-15 Oliver Kiddle + + * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for + Sun Studio compiler compatibility. + +2010-01-12 Conrad Irwin + + * doc/libffi.texi: Add closure example. + +2010-01-07 Rainer Orth + + PR libffi/40701 + * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL, + PRIuLL, PRId64, PRIu64, PRIuPTR): Define. + * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on + alpha*-dec-osf*. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/return_ll1.c: Likewise. + * testsuite/libffi.call/stret_medium2.c: Likewise. + * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast + MAP_FAILED to char *. + +2010-01-06 Rainer Orth + + * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__. + +2009-12-31 Anthony Green + + * README: Update for libffi 3.0.9. + +2009-12-27 Matthias Klose + + * configure.ac (HAVE_LONG_DOUBLE): Define for mips when + appropriate. + * configure: Rebuilt. + +2009-12-26 Anthony Green + + * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for + avr32*-*-*. + * testsuite/libffi.call/cls_double_va.c: Ditto. + +2009-12-26 Andreas Tobler + + * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h + and inttypes.h. + * testsuite/libffi.special/unwindtest.cc: Ditto. + +2009-12-26 Andreas Tobler + + * configure.ac: Add amd64-*-openbsd*. + * configure: Rebuilt. + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link + openbsd programs with -lpthread. + +2009-12-26 Anthony Green + + * testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for + mips*-*-* and arm*-*-*. + * testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*. + +2009-12-31 Kay Tietz + + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix + definitions. + +2009-12-31 Carlo Bramini + + * configure.ac (AM_LTLDFLAGS): Define for windows hosts. + * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS. + * configure: Rebuilt. + * Makefile.in: Rebuilt. + +2009-12-31 Anthony Green + Blake Chaffin. + + * testsuite/libffi.call/huge_struct.c: New test case from Blake + Chaffin @ Apple. + +2009-12-28 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to + local variables. + (aix_adjust_aggregate_sizes): New function. + (ffi_prep_cif_machdep): Call it. + +2009-12-26 Andreas Tobler + + * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets. + * configure: Regenerate. + * fficonfig.h.in: Likewise. + * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for + Solaris/x86. + +2009-12-26 Andreas Schwab + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count + when a float arguments is passed in memory. + (ffi_closure_helper_SYSV): Mark general registers as used up when + a 64bit or soft-float long double argument is passed in memory. + +2009-12-25 Matthias Klose + + * man/ffi_call.3: Fix #include in examples. + * doc/libffi.texi: Add dircategory. + +2009-12-25 Frank Everdij + + * include/ffi.h.in: Placed '__GNUC__' ifdef around + '__attribute__((aligned(8)))' in ffi_closure, fixes compile for + IRIX MIPSPro c99. + * include/ffi_common.h: Added '__sgi' define to non + '__attribute__((__mode__()))' integer typedefs. + * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32, + ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check. + (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added + FFI_LONGDOUBLE support and alignment(N32 only). + * src/mips/ffitarget.h: Corrected '#include ' for IRIX and + fixed non '__attribute__((__mode__()))' integer typedefs. + * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame' + since they are Linux/GNU Assembler specific. + +2009-12-25 Bradley Smith + + * configure.ac, Makefile.am, src/avr32/ffi.c, + src/avr32/ffitarget.h, + src/avr32/sysv.S: Add AVR32 port. + * configure, Makefile.in: Rebuilt. + +2009-12-21 Andreas Tobler + + * configure.ac: Make i?86 build on FreeBSD and OpenBSD. + * configure: Regenerate. + +2009-12-15 John David Anglin + + * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX. + +2009-12-13 John David Anglin + + * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE + type on HP-UX. + +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + +2009-12-11 Eric Botcazou + + * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long + double' arguments. + +2009-12-11 Eric Botcazou + + * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. + +2009-12-10 Rainer Orth + + PR libffi/40700 + * src/closures.c [X86_64 && __sun__ && __svr4__] + (FFI_MMAP_EXEC_WRIT): Define. + +2009-12-08 David Daney + + * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-* + * testsuite/libffi.call/cls_align_longdouble_split2.c: Same. + * testsuite/libffi.call/stret_large.c: Same. + * testsuite/libffi.call/cls_align_longdouble_split.c: Same. + * testsuite/libffi.call/stret_large2.c: Same. + * testsuite/libffi.call/stret_medium2.c: Same. + +2009-12-07 David Edelsohn + + * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump + typo. + +2009-12-05 David Edelsohn + + * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64 + code. + * src/powerpc/aix_closure.S: Same. + +2009-12-05 Ralf Wildenhues + + * Makefile.in: Regenerate. + * configure: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2009-12-04 David Edelsohn + + * src/powerpc/aix_closure.S: Reorganize 64-bit code to match + linux64_closure.S. + +2009-12-04 Uros Bizjak + + PR libffi/41908 + * src/x86/ffi64.c (classify_argument): Update from + gcc/config/i386/i386.c. + (ffi_closure_unix64_inner): Do not use the address of two consecutive + SSE registers directly. + * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail + for x86_64 linux targets. + +2009-12-04 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment + pfr for long double split between fpr13 and stack. + +2009-12-03 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and + fparg_count twice for long double. + +2009-12-03 David Edelsohn + + PR libffi/42243 + * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses. + +2009-12-03 Uros Bizjak + + * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string. + Remove xfails for x86 linux targets. + +2009-12-02 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64 + case. + +2009-12-01 David Edelsohn + + * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard + register usage. Call ffi_prep_args directly. Add long double + return value support. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment + applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo. + Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases. + (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit + mode. + (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp + into case. + * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment. + Allocate result area between params and FPRs. + +2009-11-30 David Edelsohn + + PR target/35484 + * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and + AIX64. + * src/powerpc/aix.S: Implement AIX64 version. + * src/powerpc/aix_closure.S: Implement AIX64 version. + (ffi_closure_ASM): Use extsb, lha and displament addresses. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64 + support. + (ffi_prep_cif_machdep): Same. + (ffi_call): Same. + (ffi_closure_helper_DARWIN): Same. + +2009-11-02 Andreas Tobler + + PR libffi/41908 + * testsuite/libffi.call/testclosure.c: New test. + +2009-09-28 Kai Tietz + + * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu + assembly version use of ___chkstk. + +2009-09-23 Matthias Klose + + PR libffi/40242, PR libffi/41443 + * src/arm/sysv.S (__ARM_ARCH__): Define for processors + __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__, + __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__. + Change the conditionals to __SOFTFP__ || __ARM_EABI__ + for -mfloat-abi=softfp to work. + +2009-09-17 Loren J. Rittle + + PR testsuite/32843 (strikes again) + * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to + enable proper extension on char and short. + +2009-09-15 David Daney + + * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special + handling for FFI_TYPE_POINTER. + * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT, + FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT, + FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT, + FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines. + (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations. + (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float. + * src/mips/n32.S (ffi_call_N32): Add handling for soft-float + structure and pointer returns. + (ffi_closure_N32): Add handling for pointer returns. + * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags, + calc_n32_return_struct_flags): Handle soft-float. + (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling. + (ffi_call_N32): Declare proper argument types. + (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle + soft-float. + +2009-08-24 Ralf Wildenhues + + * configure.ac (AC_PREREQ): Bump to 2.64. + +2009-08-22 Ralf Wildenhues + + * Makefile.am (install-html, install-pdf): Remove. + * Makefile.in: Regenerate. + + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2011-08-22 Jasper Lievisse Adriaanse + + * configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support. + * configure: Rebuilt. + +2009-07-30 Ralf Wildenhues + + * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. + +2009-07-24 Dave Korn + + PR libffi/40807 + * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending + return types for X86_WIN32. + * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types. + (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV, + _ffi_closure_STDCALL): Likewise. + + * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin. + (dlmmap, dlmunmap): Also use these functions on Cygwin. + +2009-07-11 Richard Sandiford + + PR testsuite/40699 + PR testsuite/40707 + PR testsuite/40709 + * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and + 2009-06-30 commits. + +2009-07-01 Richard Sandiford + + * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path + to "" before adding paths. (This reinstates an assignment that + was removed by my 2009-06-30 commit, but changes the initial + value from "." to "".) + +2009-07-01 H.J. Lu + + PR testsuite/40601 + * testsuite/lib/libffi-dg.exp (libffi-init): Properly set + gccdir. Adjust ld_library_path for gcc only if gccdir isn't + empty. + +2009-06-30 Richard Sandiford + + * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "." + to ld_library_path. Use add_path. Add just find_libgcc_s + to ld_library_path, not every libgcc multilib directory. + +2009-06-16 Wim Lewis + + * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are + supposed to be callee-saved. + * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of + return buffer for odd-size structs. + +2009-06-16 Andreas Tobler + + PR libffi/40444 + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add + allow_stack_execute for Darwin. + +2009-06-16 Andrew Haley + + * configure.ac (TARGETDIR): Add missing blank lines. + * configure: Regenerate. + +2009-06-16 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. + +2009-06-15 Andrew Haley + + * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. + * testsuite/libffi.call/err_bad_abi.c: Likewise. + +2009-06-12 Andrew Haley + + * Makefile.am: Remove info_TEXINFOS. + +2009-06-12 Andrew Haley + + * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + testsuite/libffi.special/unwindtest.cc: include stdint.h. + +2009-06-11 Timothy Wall + + * Makefile.am, + configure.ac, + include/ffi.h.in, + include/ffi_common.h, + src/closures.c, + src/dlmalloc.c, + src/x86/ffi.c, + src/x86/ffitarget.h, + src/x86/win64.S (new), + README: Added win64 support (mingw or MSVC) + * Makefile.in, + include/Makefile.in, + man/Makefile.in, + testsuite/Makefile.in, + configure, + aclocal.m4: Regenerated + * ltcf-c.sh: properly escape cygwin/w32 path + * man/ffi_call.3: Clarify size requirements for return value. + * src/x86/ffi64.c: Fix filename in comment. + * src/x86/win32.S: Remove unused extern. + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/err_bad_abi.c, + testsuite/libffi.call/err_bad_typedef.c, + testsuite/libffi.call/float2.c, + testsuite/libffi.call/huge_struct.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/return_ldl.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead + of checking for MMAP. Use intptr_t instead of long casts. + +2009-06-11 Kaz Kojima + + * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. + * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. + * testsuite/libffi.call/err_bad_typedef.c: Likewise. + +2009-06-09 Andrew Haley + + * src/x86/freebsd.S: Add missing file. + +2009-06-08 Andrew Haley + + Import from libffi 3.0.8: + + * doc/libffi.texi: New file. + * doc/libffi.info: Likewise. + * doc/stamp-vti: Likewise. + * man/Makefile.am: New file. + * man/ffi_call.3: New file. + + * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S, + src/dlmalloc.c. + (nodist_libffi_la_SOURCES): Add X86_FREEBSD. + + * configure.ac: Bump version to 3.0.8. + parisc*-*-linux*: Add. + i386-*-freebsd* | i386-*-openbsd*: Add. + powerpc-*-beos*: Add. + AM_CONDITIONAL X86_FREEBSD: Add. + AC_CONFIG_FILES: Add man/Makefile. + + * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void). + +2009-06-08 Andrew Haley + + * README: Import from libffi 3.0.8. + +2009-06-08 Andrew Haley + + * testsuite/libffi.call/err_bad_abi.c: Add xfails. + * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. + * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. + * testsuite/libffi.call/err_bad_typedef.c: Add xfails. + + * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. + * testsuite/libffi.call/stret_medium.c: Likewise. + * testsuite/libffi.call/stret_large2.c: Likewise. + * testsuite/libffi.call/stret_large.c: Likewise. + +2008-12-26 Timothy Wall + + * testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected + failures on x86_64 cygwin/mingw. + +2008-12-22 Timothy Wall + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_loc_fn0.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: use portable cast from + pointer to integer (intptr_t). + * testsuite/libffi.call/cls_longdouble.c: disable for win64. + +2008-07-24 Anthony Green + + * testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/err_bad_abi.c: Clean up failures from + compiler warnings. + +2008-03-04 Anthony Green + Blake Chaffin + hos@tamanegi.org + + * testsuite/libffi.call/cls_align_longdouble_split2.c + testsuite/libffi.call/cls_align_longdouble_split.c + testsuite/libffi.call/cls_dbls_struct.c + testsuite/libffi.call/cls_double_va.c + testsuite/libffi.call/cls_longdouble.c + testsuite/libffi.call/cls_longdouble_va.c + testsuite/libffi.call/cls_pointer.c + testsuite/libffi.call/cls_pointer_stack.c + testsuite/libffi.call/err_bad_abi.c + testsuite/libffi.call/err_bad_typedef.c + testsuite/libffi.call/stret_large2.c + testsuite/libffi.call/stret_large.c + testsuite/libffi.call/stret_medium2.c + testsuite/libffi.call/stret_medium.c: New tests from Apple. + +2009-06-05 Andrew Haley + + * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from + libffi. + +2009-06-04 Andrew Haley + + * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out + stdcall changes. + +2008-02-26 Anthony Green + Thomas Heller + + * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C + comment. + +2008-02-03 Timothy Wall + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return + offset based on code pointer, not data pointer. + +2008-01-31 Timothy Wall + + * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall + closures. + * src/x86/ffitarget.h: Increase size of trampoline for stdcall + closures. + * src/x86/win32.S: Add assembly for stdcall closure. + * src/x86/ffi.c: Initialize stdcall closure trampoline. + +2009-06-04 Andrew Haley + + * include/ffi.h.in: Change void (*)() to void (*)(void). + * src/x86/ffi.c: Likewise. + +2009-06-04 Andrew Haley + + * src/powerpc/ppc_closure.S: Insert licence header. + * src/powerpc/linux64_closure.S: Likewise. + * src/m68k/sysv.S: Likewise. + + * src/sh64/ffi.c: Change void (*)() to void (*)(void). + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/m32r/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/x86/ffi64.c: Likewise. + * src/alpha/ffi.c: Likewise. + * src/alpha/osf.S: Likewise. + * src/frv/ffi.c: Likewise. + * src/s390/ffi.c: Likewise. + * src/pa/ffi.c: Likewise. + * src/pa/hpux32.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/ia64/ffi.c: Likewise. + * src/sparc/ffi.c: Likewise. + * src/mips/ffi.c: Likewise. + * src/sh/ffi.c: Likewise. + +2008-02-15 David Daney + + * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): + Define (conditionally), and use it to include cachectl.h. + (ffi_prep_closure_loc): Fix cache flushing. + * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. + +2009-06-04 Andrew Haley + + include/ffi.h.in, + src/arm/ffitarget.h, + src/arm/ffi.c, + src/arm/sysv.S, + src/powerpc/ffitarget.h, + src/closures.c, + src/sh64/ffitarget.h, + src/sh64/ffi.c, + src/sh64/sysv.S, + src/types.c, + src/x86/ffi64.c, + src/x86/ffitarget.h, + src/x86/win32.S, + src/x86/darwin.S, + src/x86/ffi.c, + src/x86/sysv.S, + src/x86/unix64.S, + src/alpha/ffitarget.h, + src/alpha/ffi.c, + src/alpha/osf.S, + src/m68k/ffitarget.h, + src/frv/ffitarget.h, + src/frv/ffi.c, + src/s390/ffitarget.h, + src/s390/sysv.S, + src/cris/ffitarget.h, + src/pa/linux.S, + src/pa/ffitarget.h, + src/pa/ffi.c, + src/raw_api.c, + src/ia64/ffitarget.h, + src/ia64/unix.S, + src/ia64/ffi.c, + src/ia64/ia64_flags.h, + src/java_raw_api.c, + src/debug.c, + src/sparc/v9.S, + src/sparc/ffitarget.h, + src/sparc/ffi.c, + src/sparc/v8.S, + src/mips/ffitarget.h, + src/mips/n32.S, + src/mips/o32.S, + src/mips/ffi.c, + src/prep_cif.c, + src/sh/ffitarget.h, + src/sh/ffi.c, + src/sh/sysv.S: Update license text. + +2009-05-22 Dave Korn + + * src/x86/win32.S (_ffi_closure_STDCALL): New function. + (.eh_frame): Add FDE for it. + +2009-05-22 Dave Korn + + * configure.ac: Also check if assembler supports pc-relative + relocs on X86_WIN32 targets. + * configure: Regenerate. + * src/x86/win32.S (ffi_prep_args): Declare extern, not global. + (_ffi_call_SYSV): Add missing function type symbol .def and + add EH markup labels. + (_ffi_call_STDCALL): Likewise. + (_ffi_closure_SYSV): Likewise. + (_ffi_closure_raw_SYSV): Likewise. + (.eh_frame): Add hand-crafted EH data. + +2009-04-09 Jakub Jelinek + + * testsuite/lib/libffi-dg.exp: Change copyright header to refer to + version 3 of the GNU General Public License and to point readers + at the COPYING3 file and the FSF's license web page. + * testsuite/libffi.call/call.exp: Likewise. + * testsuite/libffi.special/special.exp: Likewise. + +2009-03-01 Ralf Wildenhues + + * configure: Regenerate. + +2008-12-18 Rainer Orth + + PR libffi/26048 + * configure.ac (HAVE_AS_X86_PCREL): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate + RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET, + RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler. + (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. + * src/x86/unix64.S (.Lstore_table): Move to .text section. + (.Lload_table): Likewise. + (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. + +2008-12-18 Ralf Wildenhues + + * configure: Regenerate. + +2008-11-21 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for + signed/unsigned int8/16 return values. + * src/sparc/v8.S (ffi_call_v8): Likewise. + (ffi_closure_v8): Likewise. + +2008-09-26 Peter O'Gorman + Steve Ellcey + + * configure: Regenerate for new libtool. + * Makefile.in: Ditto. + * include/Makefile.in: Ditto. + * aclocal.m4: Ditto. + +2008-08-25 Andreas Tobler + + * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and + FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. + Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. + Adjust copyright notice. + * src/powerpc/ffi.c: Add two new flags to indicate if we have one + register or two register to use for FFI_SYSV structs. + (ffi_prep_cif_machdep): Pass the right register flag introduced above. + (ffi_closure_helper_SYSV): Fix the return type for + FFI_SYSV_TYPE_SMALL_STRUCT. Comment. + Adjust copyright notice. + +2008-07-16 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned + int. + +2008-06-17 Ralf Wildenhues + + * configure: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2008-06-07 Joseph Myers + + * configure.ac (parisc*-*-linux*, powerpc-*-sysv*, + powerpc-*-beos*): Remove. + * configure: Regenerate. + +2008-05-09 Julian Brown + + * Makefile.am (LTLDFLAGS): New. + (libffi_la_LDFLAGS): Use above. + * Makefile.in: Regenerate. + +2008-04-18 Paolo Bonzini + + PR bootstrap/35457 + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2008-03-26 Kaz Kojima + + * src/sh/sysv.S: Add .note.GNU-stack on Linux. + * src/sh64/sysv.S: Likewise. + +2008-03-26 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2008-03-26 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/arm/sysv.S: Likewise. + +2008-03-16 Ralf Wildenhues + + * aclocal.m4: Regenerate. + * configure: Likewise. + * Makefile.in: Likewise. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + +2008-02-12 Bjoern Koenig + Andreas Tobler + + * configure.ac: Add amd64-*-freebsd* target. + * configure: Regenerate. + +2008-01-30 H.J. Lu + + PR libffi/34612 + * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when + returning struct. + + * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" + tests. + +2008-01-24 David Edelsohn + + * configure: Regenerate. + +2008-01-06 Andreas Tobler + + * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko. + +2008-01-05 Andreas Tobler + + PR testsuite/32843 + * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for + signed/unsigned int8/16 for X86_DARWIN. + Updated copyright info. + Handle one and two byte structs with special cif->flags. + * src/x86/ffitarget.h: Add special types for one and two byte structs. + Updated copyright info. + * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like + sysv.S + Remove code to pop args from the stack after call. + Special-case signed/unsigned for int8/16, one and two byte structs. + (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, + FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, + FFI_TYPE_SINT32. + Updated copyright info. + +2007-12-08 David Daney + + * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with + SUBU, add with ADDU and use smaller code sequences. + +2007-12-07 David Daney + + * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return + type. + +2007-12-06 David Daney + + * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already + defined. + (ffi_java_raw): New typedef. + (ffi_java_raw_call, ffi_java_ptrarray_to_raw, + ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to + ffi_java_raw. + (ffi_java_raw_closure) : Same. + (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change + parameter types. + * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with + FFI_SIZEOF_JAVA_RAW. + (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw. + Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use + sizeof(ffi_java_raw) for alignment calculations. + (ffi_java_ptrarray_to_raw): Same. + (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER + if FFI_SIZEOF_JAVA_RAW == 4. + (ffi_java_raw_to_rvalue): Same. + (ffi_java_raw_call): Change type of raw to ffi_java_raw. + (ffi_java_translate_args): Same. + (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change + parameter types. + * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI. + +2007-12-06 David Daney + + * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on + pointer values. + +2007-12-01 Andreas Tobler + + PR libffi/31937 + * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT. + Add local FFI_TYPE_UINT128 to handle soft-float long-double-128. + * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and + set the NUM_FPR_ARG_REGISTERS according to. + Add support for potential soft-float support under hard-float + architecture. + (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of + FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according + to the FFI_LINUX_SOFT_FLOAT ABI. + (ffi_prep_cif_machdep): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * src/powerpc/ppc_closure.S: Make sure not to store float/double + on archs where __NO_FPRS__ is true. + Add FFI_TYPE_UINT128 support. + * src/powerpc/sysv.S: Add support for soft-float long-double-128. + Adjust copyright notice. + +2007-11-25 Andreas Tobler + + * src/closures.c: Move defintion of MAYBE_UNUSED from here to ... + * include/ffi_common.h: ... here. + Update copyright. + +2007-11-17 Andreas Tobler + + * src/powerpc/sysv.S: Load correct cr to compare if we have long double. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/ffi.c: Add a comment to show which part goes into cr6. + * testsuite/libffi.call/return_ldl.c: New test. + +2007-09-04 + + * src/arm/sysv.S (UNWIND): New. + (Whole file): Conditionally compile unwinder directives. + * src/arm/sysv.S: Add unwinder directives. + + * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. + Only treat r0 as a struct address if we're actually returning a + struct by address. + Only copy the bytes that are actually within a struct. + (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes + is returned in r0, not passed by address. + (ffi_call): Allocate a word-sized temporary for the case where + a composite is returned in r0. + (ffi_prep_incoming_args_SYSV): Align as necessary. + +2007-08-05 Steven Newbury + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of + directly using the sys_cacheflush syscall. + +2007-07-27 Andrew Haley + + * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. + +2007-09-03 Maciej W. Rozycki + + * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure: Likewise. + +2007-08-24 David Daney + + * testsuite/libffi.call/return_sl.c: New test. + +2007-08-10 David Daney + + * testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.special/unwindtest_ffi_call.cc, + testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*. + +2007-08-10 David Daney + + PR libffi/28313 + * configure.ac: Don't treat mips64 as a special case. + * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S. + * configure: Regenerate + * Makefile.in: Ditto. + * fficonfig.h.in: Ditto. + * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent. + (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros. + (FFI_DEFAULT_ABI): Set for n64 case. + (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases. + * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE. + (ffi_closure_N32): New function. + (.eh_frame): New section + * src/mips/o32.S: Clean up comments. + (ffi_closure_O32): Pass ffi_closure parameter in $12. + * src/mips/ffi.c: Use FFI_MIPS_N32 instead of + _MIPS_SIM == _ABIN32 throughout. + (FFI_MIPS_STOP_HERE): New, use in place of + ffi_stop_here. + (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite + to support n32/n64 ABIs. + (calc_n32_struct_flags): Rewrite. + (calc_n32_return_struct_flags): Remove unused variable. Reverse + position of flag bits. + (ffi_prep_cif_machdep): Rewrite n32 portion. + (ffi_call): Enable for n64. Add special handling for small structure + return values. + (ffi_prep_closure_loc): Add n32 and n64 support. + (ffi_closure_mips_inner_O32): Add cast to silence warning. + (copy_struct_N32, ffi_closure_mips_inner_N32): New functions. + +2007-08-08 David Daney + + * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition. + * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type + specifiers. + * testsuite/libffi.call/nested_struct1.c (main): Ditto. + * testsuite/libffi.call/cls_sint.c (main): Ditto. + * testsuite/libffi.call/nested_struct9.c (main): Ditto. + * testsuite/libffi.call/cls_20byte1.c (main): Ditto. + * testsuite/libffi.call/cls_9byte1.c (main): Ditto. + * testsuite/libffi.call/closure_fn1.c (main): Ditto. + * testsuite/libffi.call/closure_fn3.c (main): Ditto. + * testsuite/libffi.call/return_dbl2.c (main): Ditto. + * testsuite/libffi.call/cls_sshort.c (main): Ditto. + * testsuite/libffi.call/return_fl3.c (main): Ditto. + * testsuite/libffi.call/closure_fn5.c (main): Ditto. + * testsuite/libffi.call/nested_struct.c (main): Ditto. + * testsuite/libffi.call/nested_struct10.c (main): Ditto. + * testsuite/libffi.call/return_ll1.c (main): Ditto. + * testsuite/libffi.call/cls_8byte.c (main): Ditto. + * testsuite/libffi.call/cls_align_uint32.c (main): Ditto. + * testsuite/libffi.call/cls_align_sint16.c (main): Ditto. + * testsuite/libffi.call/cls_20byte.c (main): Ditto. + * testsuite/libffi.call/nested_struct2.c (main): Ditto. + * testsuite/libffi.call/cls_24byte.c (main): Ditto. + * testsuite/libffi.call/nested_struct6.c (main): Ditto. + * testsuite/libffi.call/cls_uint.c (main): Ditto. + * testsuite/libffi.call/cls_12byte.c (main): Ditto. + * testsuite/libffi.call/cls_16byte.c (main): Ditto. + * testsuite/libffi.call/closure_fn0.c (main): Ditto. + * testsuite/libffi.call/cls_9byte2.c (main): Ditto. + * testsuite/libffi.call/closure_fn2.c (main): Ditto. + * testsuite/libffi.call/return_dbl1.c (main): Ditto. + * testsuite/libffi.call/closure_fn4.c (main): Ditto. + * testsuite/libffi.call/closure_fn6.c (main): Ditto. + * testsuite/libffi.call/cls_align_sint32.c (main): Ditto. + +2007-08-07 Andrew Haley + + * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous + checkin. + +2007-08-06 Andrew Haley + + PR testsuite/32843 + * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, + FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, + FFI_TYPE_SINT32. + +2007-08-02 David Daney + + * testsuite/libffi.call/return_ul.c (main): Define return type as + ffi_arg. Use proper printf conversion specifier. + +2007-07-30 Andrew Haley + + PR testsuite/32843 + * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for + signed/unsigned int8/16. + * src/x86/sysv.S (ffi_call_SYSV): Rewrite to: + Use a jump table. + Remove code to pop args from the stack after call. + Special-case signed/unsigned int8/16. + * testsuite/libffi.call/return_sc.c (main): Revert. + +2007-07-26 Richard Guenther + + PR testsuite/32843 + * testsuite/libffi.call/return_sc.c (main): Verify call + result as signed char, not ffi_arg. + +2007-07-16 Rainer Orth + + * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64. + * configure: Regenerate. + +2007-07-11 David Daney + + * src/mips/ffi.c: Don't include sys/cachectl.h. + (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of + cacheflush(). + +2007-05-18 Aurelien Jarno + + * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted + from (ffi_prep_closure): ... this. + (FFI_INIT_TRAMPOLINE): Adjust. + +2005-12-31 Phil Blundell + + * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, + ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. + * src/arm/sysv.S(ffi_closure_SYSV): Likewise. + * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_CLOSURES): Enable closure support. + +2007-07-03 Andrew Haley + + * testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.special/unwindtest_ffi_call.cc, + testsuite/libffi.special/unwindtest.cc: Enable for ARM. + +2007-07-05 H.J. Lu + + * aclocal.m4: Regenerated. + +2007-06-02 Paolo Bonzini + + * configure: Regenerate. + +2007-05-23 Steve Ellcey + + * Makefile.in: Regenerate. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2007-05-10 Roman Zippel + + * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, + ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. + * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. + * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_CLOSURES): Enable closure support. + +2007-05-10 Roman Zippel + + * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, + CFI_OFFSET,CFI_DEF_CFA): New macros. + (ffi_call_SYSV): Add callframe annotation. + +2007-05-10 Roman Zippel + + * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix + numerous test suite failures. + * src/m68k/sysv.S (ffi_call_SYSV): Likewise. + +2007-04-11 Paolo Bonzini + + * Makefile.am (EXTRA_DIST): Bring up to date. + * Makefile.in: Regenerate. + * src/frv/eabi.S: Remove RCS keyword. + +2007-04-06 Richard Henderson + + * configure.ac: Tidy target case. + (HAVE_LONG_DOUBLE): Allow the target to override. + * configure: Regenerate. + * include/ffi.h.in: Don't define ffi_type_foo if + LIBFFI_HIDE_BASIC_TYPES is defined. + (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define + to ffi_type_double. + * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. + (FFI_TYPEDEF, ffi_type_void): Mark the data const. + (ffi_type_longdouble): Special case for Alpha. Don't define + if long double == double. + + * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. + (ffi_prep_cif_machdep): Handle it as the 128-bit type. + (ffi_call, ffi_closure_osf_inner): Likewise. + (ffi_closure_osf_inner): Likewise. Mark hidden. + (ffi_call_osf, ffi_closure_osf): Mark hidden. + * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. + * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. + (load_table): Handle 128-bit long double. + + * testsuite/libffi.call/float4.c: Add -mieee for alpha. + +2007-04-06 Tom Tromey + + PR libffi/31491: + * README: Fixed bug in example. + +2007-04-03 Jakub Jelinek + + * src/closures.c: Include sys/statfs.h. + (_GNU_SOURCE): Define on Linux. + (FFI_MMAP_EXEC_SELINUX): Define. + (selinux_enabled): New variable. + (selinux_enabled_check): New function. + (is_selinux_enabled): Define. + (dlmmap): Use it. + +2007-03-24 Uros Bizjak + + * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. + Use 'volatile float sum' to create sum of floats to avoid false + negative due to excess precision on ix86 targets. + (main): Ditto. + +2007-03-08 Alexandre Oliva + + * src/powerpc/ffi.c (flush_icache): Fix left-over from previous + patch. + (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. + +2007-03-07 Alexandre Oliva + + * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. + (ffi_prep_closure_loc): New. + (ffi_prep_raw_closure_loc): New. + (ffi_prep_java_raw_closure_loc): New. + * src/closures.c: New file. + * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): + Replace sflags with exec_offset. + [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, + sub_segment_exec_offset): New macros. + (get_segment_flags, set_segment_flags, check_segment_merge): New + macros. + (is_mmapped_segment, is_extern_segment): Use get_segment_flags. + (add_segment, sys_alloc, create_mspace, create_mspace_with_base, + destroy_mspace): Use new macros. + (sys_alloc): Silence warning. + * Makefile.am (libffi_la_SOURCES): Add src/closures.c. + * Makefile.in: Rebuilt. + * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in + terms of ffi_prep_closure_loc. + * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted + from... + (ffi_prep_raw_closure): ... this. Re-implement in terms of the + renamed version. + * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and + adjusted from... + (ffi_prep_java_raw_closure): ... this. Re-implement in terms of + the renamed version. + * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from + (ffi_prep_closure): ... this. + * src/pa/ffi.c: Likewise. + * src/cris/ffi.c: Likewise. Adjust. + * src/frv/ffi.c: Likewise. + * src/ia64/ffi.c: Likewise. + * src/mips/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/s390/ffi.c: Likewise. + * src/sh/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/sparc/ffi.c: Likewise. + * src/x86/ffi64.c: Likewise. + * src/x86/ffi.c: Likewise. + (FFI_INIT_TRAMPOLINE): Adjust. + (ffi_prep_raw_closure_loc): Renamed and adjusted from... + (ffi_prep_raw_closure): ... this. + * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from + (ffi_prep_closure): ... this. + (flush_icache): Adjust. + +2007-03-07 Alexandre Oliva + + * src/dlmalloc.c: New file, imported version 2.8.3 of Doug + Lea's malloc. + +2007-03-01 Brooks Moses + + * Makefile.am: Add dummy install-pdf target. + * Makefile.in: Regenerate + +2007-02-13 Andreas Krebbel + + * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, + ffi_closure_helper_SYSV): Add long double handling. + +2007-02-02 Jakub Jelinek + + * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 + immediately after bctrl instruction. + +2007-01-18 Alexandre Oliva + + * Makefile.am (all-recursive, install-recursive, + mostlyclean-recursive, clean-recursive, distclean-recursive, + maintainer-clean-recursive): Add missing targets. + * Makefile.in: Rebuilt. + +2006-12-14 Andreas Tobler + + * configure.ac: Add TARGET for x86_64-*-darwin*. + * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources + for X86_DARWIN. + * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. + * src/x86/darwin64.S: New file for x86_64-*-darwin* support. + * configure: Regenerate. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for + ffi_call only. + +2006-12-13 Andreas Tobler + + * aclocal.m4: Regenerate with aclocal -I .. as written in the + Makefile.am. + +2006-10-31 Geoffrey Keating + + * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. + (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for + Darwin. + * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. + * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. + +2006-10-10 Paolo Bonzini + Sandro Tolaini + + * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and + conditional. + * configure: Regenerated. + * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. + (EXTRA_DIST): Add src/x86/darwin.S. + * Makefile.in: Regenerated. + * include/Makefile.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + + * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like + X86_WIN32, and additionally align stack to 16 bytes. + * src/x86/darwin.S: New, based on sysv.S. + * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. + +2006-09-12 David Daney + + PR libffi/23935 + * include/Makefile.am: Install both ffi.h and ffitarget.h in + $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. + * aclocal.m4: Regenerated for automake 1.9.6. + * Makefile.in: Regenerated. + * include/Makefile.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + +2006-08-17 Andreas Tobler + + * include/ffi_common.h (struct): Revert accidental commit. + +2006-08-15 Andreas Tobler + + * include/ffi_common.h: Remove lint directives. + * include/ffi.h.in: Likewise. + +2006-07-25 Torsten Schoenfeld + + * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly + for 32-bit architectures. + * testsuite/libffi.call/return_ul.c: New test case. + +2006-07-19 David Daney + + * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, + xfail remains for mips64. + +2006-05-23 Carlos O'Donell + + * Makefile.am: Add install-html target. Add install-html to .PHONY + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2006-05-18 John David Anglin + + * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from + stack slot. + +2006-04-22 Andreas Tobler + + * README: Remove notice about 'Crazy Comments'. + * src/debug.c: Remove lint directives. Cleanup white spaces. + * src/java_raw_api.c: Likewise. + * src/prep_cif.c: Likewise. + * src/raw_api.c: Likewise. + * src/ffitest.c: Delete. No longer needed, all test cases migrated + to the testsuite. + * src/arm/ffi.c: Remove lint directives. + * src/m32r/ffi.c: Likewise. + * src/pa/ffi.c: Likewise. + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/sh/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/x86/ffi.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + +2006-04-13 Andreas Tobler + + * src/pa/hpux32.S: Correct unwind offset calculation for + ffi_closure_pa32. + * src/pa/linux.S: Likewise. + +2006-04-12 James E Wilson + + PR libgcj/26483 + * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. + (hfa_type_load): Call stf_spill. + (hfa_type_store): Call ldf_fill. + (ffi_call): Adjust calls to above routines. Add local temps for + macro result. + +2006-04-10 Matthias Klose + + * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib + directory names containing underscores. + +2006-04-07 James E Wilson + + * testsuite/libffi.call/float4.c: New testcase. + +2006-04-05 John David Anglin + Andreas Tobler + + * Makefile.am: Add PA_HPUX port. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure.ac: Add PA_HPUX rules. + * configure: Regenerate. + * src/pa/ffitarget.h: Rename linux target to PA_LINUX. + Add PA_HPUX and PA64_HPUX. + Rename FFI_LINUX ABI to FFI_PA32 ABI. + (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. + (FFI_TYPE_SMALL_STRUCT2): Define. + (FFI_TYPE_SMALL_STRUCT4): Likewise. + (FFI_TYPE_SMALL_STRUCT8): Likewise. + (FFI_TYPE_SMALL_STRUCT3): Redefine. + (FFI_TYPE_SMALL_STRUCT5): Likewise. + (FFI_TYPE_SMALL_STRUCT6): Likewise. + (FFI_TYPE_SMALL_STRUCT7): Likewise. + * src/pa/ffi.c (ROUND_DOWN): Delete. + (fldw, fstw, fldd, fstd): Use '__asm__'. + (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, + FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. + (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. + Simplify incrementing of stack slot variable. Change type of local + 'n' to unsigned int. + (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long + double on PA_HPUX. + (ffi_prep_cif_machdep): Likewise. + (ffi_call): Likewise. + (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change + return type to ffi_status. Simplify incrementing of stack slot + variable. Only copy floating point argument registers when PA_LINUX + is true. Reformat debug statement. + Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and + FFI_TYPE_SMALL_STRUCT8. + (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to + declaration. + (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. + Add nops to cache flush. Add trampoline for PA_HPUX. + * src/pa/hpux32.S: New file. + * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename + ffi_prep_args_LINUX to ffi_prep_args_pa32. + Localize labels. Add support for 2, 4 and 8-byte small structs. Handle + unaligned destinations in 3, 5, 6 and 7-byte small structs. Order + argument type checks so that common argument types appear first. + (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename + ffi_closure_inner_LINUX to ffi_closure_inner_pa32. + +2006-03-24 Alan Modra + + * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default + for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of + FFI_TYPE_LONGDOUBLE. + (ffi_prep_args64): Assert using IBM extended double. + (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. + Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. + (ffi_call): Handle FFI_LINUX. + (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs + gpr3 return pointer as for struct return. Handle FFI_LINUX + FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" + unnecessarily. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 + for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. + Don't use r6 as pointer to results, instead use sp offset. Don't + make a special call to load lr with case table address, instead + use offset from previous call. + * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. + * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double + return. + +2006-03-15 Kaz Kojima + + * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments + passed with FP registers correctly. + (ffi_closure_helper_SYSV): Likewise. + * src/sh64/sysv.S: Likewise. + +2006-03-01 Andreas Tobler + + * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, + args and userdata unused. + (closure_test_fn1): Mark cif and userdata unused. + (main): Remove unused res. + +2006-02-28 Andreas Tobler + + * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for + -O2, -O3, -Os and the warning flags -W -Wall. + * testsuite/libffi.special/special.exp: Likewise. + * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark + unused parameter unused for gcc or else do nothing. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif + and userdata unused. + * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. + * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. + * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. + * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. + * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. + * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. + * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. + * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. + * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. + * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. + * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. + * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. + * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. + * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. + * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. + * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. + * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. + * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. + * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. + * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. + * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. + * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. + * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. + * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast + void* to avoid compiler warning. + (main): Likewise. + (cls_struct_align_gn): Mark cif and userdata unused. + * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. + * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. + * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif + and data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif + and data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and + userdata unused. + (cls_ret_schar_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and + userdata unused. + (cls_ret_sint_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and + userdata unused. + (cls_ret_sshort_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and + userdata unused. + (cls_ret_uchar_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and + userdata unused. + (cls_ret_uint_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif + and userdata unused. + * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and + userdata unused. + (cls_ret_ushort_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/float.c (floating): Remove unused parameter e. + * testsuite/libffi.call/float1.c (main): Remove unused variable i. + Cleanup white spaces. + * testsuite/libffi.call/negint.c (checking): Remove unused variable i. + * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark + cif and userdata unused. + * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): + Likewise. + * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. + * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf + formatters to silence gcc. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct4.c: Mention related PR. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct6.c: Mention related PR. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. + * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. + * testsuite/libffi.call/problem1.c (stub): Likewise. + * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence + gcc. + * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned + in the last commit for this test case in the test case itself. + * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as + unused. + * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. + * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. + * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. + * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. + * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. + * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. + +2006-02-22 Kaz Kojima + + * src/sh/sysv.S: Fix register numbers in the FDE for + ffi_closure_SYSV. + +2006-02-20 Andreas Tobler + + * testsuite/libffi.call/return_fl2.c (return_fl): Remove static + declaration to avoid a false negative on ix86. See PR323. + +2006-02-18 Kaz Kojima + + * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable + and cast integer to void * if needed. Update the pointer to + the FP register saved area correctly. + +2006-02-17 Andreas Tobler + + * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 + is fixed. + * testsuite/libffi.call/nested_struct4.c: Likewise. + +2006-02-16 Andreas Tobler + + * testsuite/libffi.call/return_dbl.c: New test case. + * testsuite/libffi.call/return_dbl1.c: Likewise. + * testsuite/libffi.call/return_dbl2.c: Likewise. + * testsuite/libffi.call/return_fl.c: Likewise. + * testsuite/libffi.call/return_fl1.c: Likewise. + * testsuite/libffi.call/return_fl2.c: Likewise. + * testsuite/libffi.call/return_fl3.c: Likewise. + * testsuite/libffi.call/closure_fn6.c: Likewise. + + * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong + definition. + * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition + here to be used by other test cases too. + + * testsuite/libffi.call/nested_struct10.c: New test case. + * testsuite/libffi.call/nested_struct9.c: Likewise. + * testsuite/libffi.call/nested_struct8.c: Likewise. + * testsuite/libffi.call/nested_struct7.c: Likewise. + * testsuite/libffi.call/nested_struct6.c: Likewise. + * testsuite/libffi.call/nested_struct5.c: Likewise. + * testsuite/libffi.call/nested_struct4.c: Likewise. + +2006-01-21 Andreas Tobler + + * configure.ac: Enable libffi for sparc64-*-freebsd*. + * configure: Rebuilt. + +2006-01-18 Jakub Jelinek + + * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, + instead do the shifting inline. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 + shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 + and 8 byte structs, for the remaining struct sizes don't call + __lshrdi3, instead do the shifting inline. + +2005-12-07 Thiemo Seufer + + * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add + missing parentheses. + * src/mips/o32.S (ffi_call_O32): Code formatting. Define + and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. + (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, + A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, + V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, + FA_0_0_OFF2. + * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix + endianness bugs. + (ffi_prep_closure): Improve trampoline instruction scheduling. + (ffi_closure_mips_inner_O32): Fix endianness bugs. + +2005-12-03 Alan Modra + + * src/powerpc/ffi.c: Formatting. + (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. + (ffi_prep_args64): Likewise. + +2005-09-30 Geoffrey Keating + + * testsuite/lib/libffi-dg.exp (libffi_target_compile): For + darwin, use -shared-libgcc not -lgcc_s, and explain why. + +2005-09-26 Tom Tromey + + * testsuite/libffi.call/float1.c (value_type): New typedef. + (CANARY): New define. + (main): Check for result buffer overflow. + * src/powerpc/linux64.S: Handle linux64 long double returns. + * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant. + (ffi_prep_cif_machdep): Handle linux64 long double returns. + +2005-08-25 Alan Modra + + PR target/23404 + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack + homed fp args. + (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. + +2005-08-11 Jakub Jelinek + + * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. + (AH_BOTTOM): Add FFI_HIDDEN definition. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + * src/powerpc/ffi.c (hidden): Remove. + (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64, + ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64, + .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden. + * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove, + add FFI_HIDDEN to its prototype. + (ffi_closure_SYSV_inner): New. + * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. + * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. + +2005-08-10 Alfred M. Szmidt + + PR libffi/21819: + * configure: Rebuilt. + * configure.ac: Handle i*86-*-gnu*. + +2005-08-09 Jakub Jelinek + + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use + DW_CFA_offset_extended_sf rather than + DW_CFA_GNU_negative_offset_extended. + * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. + +2005-07-22 SUGIOKA Toshinobu + + * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly + on sh3. + (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. + * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is + partially on register. + (ffi_closure_helper_SYSV): Likewise. + (ffi_prep_cif_machdep): Don't set too many cif->flags. + +2005-07-20 Kaz Kojima + + * src/sh/ffi.c (ffi_call): Handle small structures correctly. + Remove empty line. + * src/sh64/ffi.c (simple_type): Remove. + (return_type): Handle small structures correctly. + (ffi_prep_args): Likewise. + (ffi_call): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. + Emit position independent code if PIC and remove wrong datalabel + prefixes from EH data. + +2005-07-19 Andreas Tobler + + * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure.ac: Add POWERPC_FREEBSD rules. + * configure: Regenerate. + * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. + (FFI_SYSV_TYPE_SMALL_STRUCT): Define. + * src/powerpc/ffi.c: Add flags to handle small structure returns + in ffi_call_SYSV. + (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. + Aka FFI_SYSV. + (ffi_closure_helper_SYSV): Likewise. + * src/powerpc/ppc_closure.S: Add return types for small structures. + * src/powerpc/sysv.S: Add bits to handle small structures for + final SYSV 4 ABI. + +2005-07-10 Andreas Tobler + + * testsuite/libffi.call/cls_5_1_byte.c: New test file. + * testsuite/libffi.call/cls_6_1_byte.c: Likewise. + * testsuite/libffi.call/cls_7_1_byte.c: Likewise. + +2005-07-05 Randolph Chung + + * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 + as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte + structures. Kill compilation warnings. + (ffi_closure_inner_LINUX): Print return values as hex in debug + message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. + Properly handle 5-7 byte structure returns. + * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) + (FFI_TYPE_SMALL_STRUCT2): Remove. + (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) + (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. + * src/pa/linux.S: Mark source file as using PA1.1 assembly. + (checksmst1, checksmst2): Remove. + (checksmst3): Optimize handling of 3-byte struct returns. + (checksmst567): Properly handle 5-7 byte struct returns. + +2005-06-15 Rainer Orth + + PR libgcj/21943 + * src/mips/n32.S: Enforce PIC code. + * src/mips/o32.S: Likewise. + +2005-06-15 Rainer Orth + + * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64. + * configure: Regenerate. + +2005-06-01 Alan Modra + + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET + to call ffi_closure_helper_SYSV. Append @local instead. + * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. + +2005-05-17 Kelley Cook + + * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. + Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. + * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config. + * aclocal.m4, configure, fficonfig.h.in, Makefile.in, + include/Makefile.in, testsuite/Makefile.in: Regenerate. + +2005-05-09 Mike Stump + + * configure: Regenerate. + +2005-05-08 Richard Henderson + + PR libffi/21285 + * src/alpha/osf.S: Update unwind into to match code. + +2005-05-04 Andreas Degert + Richard Henderson + + * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in + bit 11 of flags. + (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. + (ffi_prep_closure): Set carry bit if sse-used flag set. + * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. + Only load sse registers if ssecount non-zero. + (ffi_closure_unix64): Only save sse registers if carry set on entry. + +2005-04-29 Ralf Corsepius + + * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*, + powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*. + * configure: Regenerate. + +2005-04-20 Hans-Peter Nilsson + + * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use, + have Tcl8.3-compatible intermediate variable. + +2005-04-18 Simon Posnjak + Hans-Peter Nilsson + + * Makefile.am: Add CRIS support. + * configure.ac: Likewise. + * Makefile.in, configure, testsuite/Makefile.in, + include/Makefile.in: Regenerate. + * src/cris: New directory. + * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. + * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. + + * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with + \r?\n in output tests. + +2005-04-12 Mike Stump + + * configure: Regenerate. + +2005-03-30 Hans Boehm + + * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI. + +2005-03-30 Steve Ellcey + + * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute. + (ffi_sarg) Ditto. + * src/ia64/unix.S (ffi_closure_unix): Extend gp + to 64 bits in ILP32 mode. + Load 64 bits even for short data. + +2005-03-23 Mike Stump + + * src/powerpc/darwin.S: Update for -m64 multilib. + * src/powerpc/darwin_closure.S: Likewise. + +2005-03-21 Zack Weinberg + + * configure.ac: Do not invoke TL_AC_GCC_VERSION. + Do not set tool_include_dir. + * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in: + Regenerate. + * include/Makefile.am: Set gcc_version and toollibffidir. + * include/Makefile.in: Regenerate. + +2005-02-22 Andrew Haley + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to + odd-numbered register pairs for 64-bit integer types. + +2005-02-23 Andreas Tobler + + PR libffi/20104 + * testsuite/libffi.call/return_ll1.c: New test case. + +2005-02-11 Janis Johnson + + * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options. + * testsuite/libffi.call/float.c: Ditto. + * testsuite/libffi.call/float2.c: Ditto. + * testsuite/libffi.call/float3.c: Ditto. + +2005-02-08 Andreas Tobler + + * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. + +2005-01-12 Eric Botcazou + + * testsuite/libffi.special/special.exp (cxx_options): Add + -shared-libgcc. + +2004-12-31 Richard Henderson + + * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. + (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and + offset parameters with a type parameter; deduce size and structure + alignment. Update all users. + +2004-12-31 Richard Henderson + + * src/types.c (FFI_TYPE_POINTER): Define with sizeof. + (FFI_TYPE_LONGDOUBLE): Fix for ia64. + * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move + into ffi_prep_closure. + * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite + from scratch. + +2004-12-27 Richard Henderson + + * src/x86/unix64.S: Fix typo in unwind info. + +2004-12-25 Richard Henderson + + * src/x86/ffi64.c (struct register_args): Rename from stackLayout. + (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. + (merge_classes): Check for it. + (SSE_CLASS_P): New. + (classify_argument): Pass byte_offset by value; perform all updates + inside struct case. + (examine_argument): Add classes argument; handle + X86_64_COMPLEX_X87_CLASS. + (ffi_prep_args): Merge into ... + (ffi_call): ... here. Share stack frame with ffi_call_unix64. + (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. + (ffi_fill_return_value): Remove. + (ffi_prep_closure): Remove dead assert. + (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. + Rewrite to use struct register_args instead of va_list. Create + flags for handling structure returns. + * src/x86/unix64.S: Remove dead strings. + (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share + stack frame with ffi_call. Handle structure returns properly. + (float2sse, floatfloat2sse, double2sse): Remove. + (sse2float, sse2double, sse2floatfloat): Remove. + (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite + to handle structure returns properly. + +2004-12-08 David Edelsohn + + * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and + PICFLAG. + * Makefile.in: Regenerated. + +2004-12-02 Richard Sandiford + + * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. + * configure, aclocal.m4, Makefile.in: Regenerate. + * include/Makefile.in, testsuite/Makefile.in: Regenerate. + +2004-11-29 Kelley Cook + + * configure: Regenerate for libtool change. + +2004-11-25 Kelley Cook + + * configure: Regenerate for libtool reversion. + +2004-11-24 Kelley Cook + + * configure: Regenerate for libtool change. + +2004-11-23 John David Anglin + + * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp. + +2004-11-23 Richard Sandiford + + * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead + of jal. Use an absolute encoding for the frame information. + +2004-11-23 Kelley Cook + + * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS. + * acinclude.m4: Delete logic for sincludes. + * aclocal.m4, Makefile.in, configure: Regenerate. + * include/Makefile: Likewise. + * testsuite/Makefile: Likewise. + +2004-11-22 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers + on a 8-byte boundary. + * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. + +2004-10-27 Richard Earnshaw + + * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return + long long values. Round stack allocation to a multiple of 8 bytes + for ATPCS compatibility. + * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register + names. Handle returning long long types. Add Thumb and interworking + support. Improve soft-float code. + +2004-10-27 Richard Earnshaw + + * testsuite/lib/libffi-db.exp (load_gcc_lib): New function. + (libffi_exit): New function. + (libffi_init): Build the testglue wrapper if needed. + +2004-10-25 Eric Botcazou + + PR other/18138 + * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc. + +2004-10-25 Kazuhiro Inaoka + + * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0. + +2004-10-20 Kaz Kojima + + * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. + * testsuite/libffi.call/float3.c: New test case. + +2004-10-18 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for + the function returning a structure pointed with R2. + * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to + the structure return value if T bit set. Emit position + independent code and EH data if PIC. + +2004-10-13 Kazuhiro Inaoka + + * Makefile.am: Add m32r support. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * confiugre: Regenerate. + * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF + (uint64, sint64, double, longdouble) + * src/m32r: New directory. + * src/m32r/ffi.c: New file. + * src/m32r/sysv.S: Likewise. + * src/m32r/ffitarget.h: Likewise. + +2004-10-02 Kaz Kojima + + * testsuite/libffi.call/negint.c: New test case. + +2004-09-14 H.J. Lu + + PR libgcj/17465 + * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path. + Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH, + LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and + DYLD_LIBRARY_PATH. + +2004-09-05 Andreas Tobler + + * testsuite/libffi.call/many_win32.c: Remove whitespaces. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup + whitespaces. + * testsuite/libffi.call/return_sc.c: Likewise. + * testsuite/libffi.call/return_uc.c: Likewise. + +2004-09-05 Andreas Tobler + + * src/powerpc/darwin.S: Fix comments and identation. + * src/powerpc/darwin_closure.S: Likewise. + +2004-09-02 Andreas Tobler + + * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. + (ffi_prep_args): Handle longdouble arguments. + (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for + longdouble. + (ffi_closure_helper_DARWIN): Add closure handling for longdouble. + * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble + values. + * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. + * src/types.c: Defined longdouble size and alignment for darwin. + +2004-09-02 Andreas Tobler + + * src/powerpc/aix.S: Remove whitespaces. + * src/powerpc/aix_closure.S: Likewise. + * src/powerpc/asm.h: Likewise. + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffitarget.h: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + +2004-08-30 Anthony Green + + * Makefile.am: Add frv support. + * Makefile.in, testsuite/Makefile.in: Rebuilt. + * configure.ac: Read configure.host. + * configure.in: Read configure.host. + * configure.host: New file. frv-elf needs libgloss. + * include/ffi.h.in: Force ffi_closure to have a nice big (8) + alignment. This is needed to frv and shouldn't harm the others. + * include/ffi_common.h (ALIGN_DOWN): New macro. + * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. + +2004-08-24 David Daney + + * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_multi_schar.c: Likewise. + * testsuite/libffi.call/cls_multi_sshort.c: Likewise. + * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_uchar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushort.c: Likewise. + * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise and set return value + to zero. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + +2004-08-23 David Daney + + PR libgcj/13141 + * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. + * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. + (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point + parameters and return types. + (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. + (ffi_prep_closure): Ditto. + (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix + alignment calculations. + * src/mips/o32.S (ffi_closure_O32): Don't use floating point + instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. + +2004-08-14 Casey Marshall + + * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to + contain `FFI_TYPE_UINT64' as return type for any 64-bit + integer (O32 ABI only). + (ffi_prep_closure): new function. + (ffi_closure_mips_inner_O32): new function. + * src/mips/ffitarget.h: Define `FFI_CLOSURES' and + `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. + * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return + 64 bit integers correctly. + (ffi_closure_O32): new function. + Added DWARF-2 unwind info for both functions. + +2004-08-10 Andrew Haley + + * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. + +2004-08-01 Robert Millan + + * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu. + * configure: Regenerate. + +2004-07-30 Maciej W. Rozycki + + * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for + and mmap() explicitly instead of relying on preset autoconf cache + variables. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2004-07-11 Ulrich Weigand + + * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. + (ffi_check_float_struct): Remove unused prototype. + +2004-06-30 Geoffrey Keating + + * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment + character on Darwin, use '\n\t' instead. + +2004-06-26 Matthias Klose + + * libtool-version: Fix typo in revision/age. + +2004-06-17 Matthias Klose + + * libtool-version: New. + * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname. + * Makefile.in: Regenerate. + +2004-06-15 Paolo Bonzini + + * Makefile.am: Remove useless multilib rules. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate with automake 1.8.5. + * configure.ac: Remove useless multilib configury. + * configure: Regenerate. + +2004-06-15 Paolo Bonzini + + * .cvsignore: New file. + +2004-06-10 Jakub Jelinek + + * src/ia64/unix.S (ffi_call_unix): Insert group barrier break + fp_done. + (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever + changed from 8. + +2004-06-06 Sean McNeil + + * configure.ac: Add x86_64-*-freebsd* support. + * configure: Regenerate. + +2004-04-26 Joe Buck + + Bug 15093 + * configure.ac: Test for existence of mmap and sys/mman.h before + checking blacklist. Fix suggested by Jim Wilson. + * configure: Regenerate. + +2004-04-26 Matt Austern + + * src/powerpc/darwin.S: Go through a non-lazy pointer for initial + FDE location. + * src/powerpc/darwin_closure.S: Likewise. + +2004-04-24 Andreas Tobler + + * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization + error. Reported by Thomas Heller . + * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise. + * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise. + +2004-03-20 Matthias Klose + + * src/pa/linux.S: Fix typo. + +2004-03-19 Matthias Klose + + * Makefile.am: Update. + * Makefile.in: Regenerate. + * src/pa/ffi.h.in: Remove. + * src/pa/ffitarget.h: New file. + +2004-02-10 Randolph Chung + + * Makefile.am: Add PA support. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * configure.ac: Add PA target. + * configure: Regenerate. + * src/pa/ffi.c: New file. + * src/pa/ffi.h.in: Add PA support. + * src/pa/linux.S: New file. + * prep_cif.c: Add PA support. + +2004-03-16 Hosaka Yuji + + * src/types.c: Fix alignment size of X86_WIN32 case int64 and + double. + * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type + with ecif->cif->flags. + (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type + with cif->flags. + (ffi_prep_cif_machdep): Add X86_WIN32 struct case. + (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. + * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, + sc_retstruct2b): Add for 1 or 2-bytes struct case. + +2004-03-15 Kelley Cook + + * configure.in: Rename file to ... + * configure.ac: ... this. + * fficonfig.h.in: Regenerate. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2004-03-12 Matt Austern + + * src/powerpc/darwin.S: Fix EH information so it corresponds to + changes in EH format resulting from addition of linkonce support. + * src/powerpc/darwin_closure.S: Likewise. + +2004-03-11 Andreas Tobler + Paolo Bonzini + + * Makefile.am (AUTOMAKE_OPTIONS): Set them. + Remove VPATH. Remove rules for object files. Remove multilib support. + (AM_CCASFLAGS): Add. + * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER. + (AC_PREREQ): Bump version to 2.59. + (AC_INIT): Fill with version info and bug address. + (ORIGINAL_LD_FOR_MULTILIBS): Remove. + (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE. + De-precious CC so that the right flags are passed down to multilibs. + (AC_MSG_ERROR): Replace obsolete macro AC_ERROR. + (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES. + (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS. + * configure: Rebuilt. + * aclocal.m4: Likewise. + * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise. + * fficonfig.h.in: Likewise. + +2004-03-11 Andreas Schwab + + * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point + arguments from fp registers only for the first 8 parameter slots. + Don't convert a float parameter when passed in memory. + +2004-03-09 Hans-Peter Nilsson + + * configure: Regenerate for config/accross.m4 correction. + +2004-02-25 Matt Kraai + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change + ecif->cif->bytes to bytes. + (ffi_prep_cif_machdep): Add braces around nested if statement. + +2004-02-09 Alan Modra + + * src/types.c (pointer): POWERPC64 has 8 byte pointers. + + * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. + (ffi_closure_helper_LINUX64): Fix typo. + * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 + for powerpc64-*-*. + * testsuite/libffi.call/float.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + +2004-02-08 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep ): Correct + long double function return and long double arg handling. + (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. + Use "end_pfr" instead of "nf". Correct long double handling. + Localise "temp". + * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double + return value. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate + space for long double return value. Adjust stack frame and offsets. + Load f2 long double return. + +2004-02-07 Alan Modra + + * src/types.c: Use 16 byte long double for POWERPC64. + +2004-01-25 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array + when the structure return address is passed in %o0. + (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. + (ffi_v9_layout_struct): Align the field following a nested structure + on a word boundary. Use memmove instead of memcpy. + (ffi_call): Update call to ffi_V9_return_struct. + (ffi_prep_closure): Define 'ctx' only for V8. + (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 + and ffi_closure_sparc_inner_v9. + (ffi_closure_sparc_inner_v8): Return long doubles by reference. + Always skip the structure return address. For structures and long + doubles, copy the argument directly. + (ffi_closure_sparc_inner_v9): Skip the structure return address only + if required. Shift the maximum floating-point slot accordingly. For + big structures, copy the argument directly; otherwise, left-justify the + argument and call ffi_v9_layout_struct to lay out the structure on + the stack. + * src/sparc/v8.S: Undef STACKFRAME before defining it. + (ffi_closure_v8): Pass the structure return address. Update call to + ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. + Skip the 'unimp' insn when returning long doubles and structures. + * src/sparc/v9.S: Undef STACKFRAME before defining it. + (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit + FFI_TYPE_INT handling. Load structures both in integers and + floating-point registers on return. + * README: Update status of the SPARC port. + +2004-01-24 Andreas Tobler + + * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value + as of type ffi_arg. + * testsuite/libffi.call/struct3.c (main): Fix CHECK. + +2004-01-22 Ulrich Weigand + + * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result + value as of type ffi_arg, not unsigned int. + +2004-01-21 Michael Ritzert + + * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead + of the LHS. + +2004-01-12 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for + Solaris. + +2004-01-08 Rainer Orth + + * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED + to void *. + +2003-12-10 Richard Henderson + + * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to + size_t instead of int. + +2003-12-04 Hosaka Yuji + + * testsuite/libffi.call/many_win32.c: Include . + * testsuite/libffi.call/many_win32.c (main): Replace variable + int i with unsigned long ul. + + * testsuite/libffi.call/cls_align_uint64.c: New test case. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + +2003-12-02 Hosaka Yuji + + PR other/13221 + * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): + Align arguments to 32 bits. + +2003-12-01 Andreas Tobler + + PR other/13221 + * testsuite/libffi.call/cls_multi_sshort.c: New test case. + * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_uchar.c: Likewise. + * testsuite/libffi.call/cls_multi_schar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushort.c: Likewise. + + * testsuite/libffi.special/unwindtest.cc: Cosmetics. + +2003-11-26 Kaveh R. Ghazi + + * testsuite/libffi.call/ffitest.h: Include . + * testsuite/libffi.special/ffitestcxx.h: Likewise. + +2003-11-22 Andreas Tobler + + * Makefile.in: Rebuilt. + * configure: Likewise. + * testsuite/libffi.special/unwindtest.cc: Convert the mmap to + the right type. + +2003-11-21 Andreas Jaeger + Andreas Tobler + + * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST. + * configure.in: Call AC_FUNC_MMAP_BLACKLIST. + * Makefile.in: Rebuilt. + * aclocal.m4: Likewise. + * configure: Likewise. + * fficonfig.h.in: Likewise. + * testsuite/lib/libffi-dg.exp: Add include dir. + * testsuite/libffi.call/ffitest.h: Add MMAP definitions. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality + for ffi_closure if available. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + +2003-11-20 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional. + +2003-11-19 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin. + Add -lgcc_s to additional flags. + +2003-11-12 Andreas Tobler + + * configure.in, include/Makefile.am: PR libgcj/11147, install + the ffitarget.h header file in a gcc versioned and target + dependent place. + * configure: Regenerated. + * Makefile.in, include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + +2003-11-09 Andreas Tobler + + * testsuite/libffi.call/closure_fn0.c: Print result and check + with dg-output to make debugging easier. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + + * testsuite/libffi.special/unwindtest.cc: Make ffi_closure + static. + +2003-11-08 Andreas Tobler + + * testsuite/libffi.call/cls_9byte2.c: New test case. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + +2003-11-08 Andreas Tobler + + * testsuite/libffi.call/cls_double.c: Do a check on the result. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/return_sc.c: Cleanup whitespaces. + +2003-11-06 Andreas Tobler + + * src/prep_cif.c (ffi_prep_cif): Move the validity check after + the initialization. + +2003-10-23 Andreas Tobler + + * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace + FFI_ASSERT(FALSE) with FFI_ASSERT(0). + +2003-10-22 David Daney + + * src/mips/ffitarget.h: Replace undefined UINT32 and friends with + __attribute__((__mode__(__SI__))) and friends. + +2003-10-22 Andreas Schwab + + * src/ia64/ffi.c: Replace FALSE/TRUE with false/true. + +2003-10-21 Andreas Tobler + + * configure.in: AC_LINK_FILES(ffitarget.h). + * configure: Regenerate. + * Makefile.in: Likewise. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * fficonfig.h.in: Likewise. + +2003-10-21 Paolo Bonzini + Richard Henderson + + Avoid that ffi.h includes fficonfig.h. + + * Makefile.am (EXTRA_DIST): Include ffitarget.h files + (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. + (TARGET_SRC_MIPS_SGI): Removed. + (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. + (MIPS_SGI): Removed. + (CLEANFILES): Removed. + (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New + targets. + * acconfig.h: Removed. + * configure.in: Compute sizeofs only for double and long double. + Use them to define and subst HAVE_LONG_DOUBLE. Include comments + into AC_DEFINE instead of using acconfig.h. Create + include/ffitarget.h instead of include/fficonfig.h. Rename + MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree. + AC_DEFINE EH_FRAME_FLAGS. + * include/Makefile.am (DISTCLEANFILES): New automake macro. + (hack_DATA): Add ffitarget.h. + * include/ffi.h.in: Remove all system specific definitions. + Declare raw API even if it is not installed, why bother? + Use limits.h instead of SIZEOF_* to define ffi_type_*. Do + not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include + ffitarget.h instead of fficonfig.h. Remove ALIGN macro. + (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead. + * include/ffi_common.h (bool): Do not define. + (ffi_assert): Accept failed assertion. + (ffi_type_test): Return void and accept file/line. + (FFI_ASSERT): Pass stringized failed assertion. + (FFI_ASSERT_AT): New macro. + (FFI_ASSERT_VALID_TYPE): New macro. + (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32, + UINT64, SINT64): Define here with gcc's __attribute__ macro + instead of in ffi.h + (FLOAT32, ALIGN): Define here instead of in ffi.h + * include/ffi-mips.h: Removed. Its content moved to + src/mips/ffitarget.h after separating assembly and C sections. + * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c + src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c, + src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S, + src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c: + SIZEOF_ARG -> FFI_SIZEOF_ARG. + * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+). + * src/debug.c (ffi_assert): Accept stringized failed assertion. + (ffi_type_test): Rewritten. + * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call + FFI_ASSERT_VALID_TYPE. + * src/alpha/ffitarget.h, src/arm/ffitarget.h, + src/ia64/ffitarget.h, src/m68k/ffitarget.h, + src/mips/ffitarget.h, src/powerpc/ffitarget.h, + src/s390/ffitarget.h, src/sh/ffitarget.h, + src/sh64/ffitarget.h, src/sparc/ffitarget.h, + src/x86/ffitarget.h: New files. + * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S, + src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S, + src/powerpc/aix.S, src/powerpc/darwin.S, + src/powerpc/ffi_darwin.c, src/powerpc/linux64.S, + src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S, + src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S, + src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S, + src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S: + include fficonfig.h + +2003-10-20 Rainer Orth + + * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external + _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. + +2003-10-19 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again. + Used when FFI_DEBUG = 1. + +2003-10-14 Alan Modra + + * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size + and align. + +2003-10-06 Rainer Orth + + * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs, + FFI_MIPS_O32 for O32 ABI. + +2003-10-01 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for + SPARC64. Cleanup whitespaces. + +2003-09-19 Andreas Tobler + + * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm, + strongarm, xscale. Cleanup whitespaces. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces. + +2003-09-18 David Edelsohn + + * src/powerpc/aix.S: Cleanup whitespaces. + * src/powerpc/aix_closure.S: Likewise. + +2003-09-18 Andreas Tobler + + * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting. + * src/powerpc/darwin_closure.S: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + +2003-09-18 Andreas Tobler + David Edelsohn + + * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. + * src/powerpc/aix_closure.S: Remove the pointer to the outgoing + parameter stack. + * src/powerpc/darwin_closure.S: Likewise. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures + according to the Darwin/AIX ABI. + (ffi_prep_cif_machdep): Likewise. + (ffi_closure_helper_DARWIN): Likewise. + Remove the outgoing parameter stack logic. Simplify the evaluation + of the different CASE types. + (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch + statement in the trampoline code. + +2003-09-18 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_args): Take account into the alignement + for the register size. + (ffi_closure_helper_SYSV): Handle the structure return value + address correctly. + (ffi_closure_helper_SYSV): Return the appropriate type when + the registers are used for the structure return value. + * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for + the 64-bit return value. Update copyright years. + +2003-09-17 Rainer Orth + + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in + srcdir for ffi_mips.h. + +2003-09-12 Alan Modra + + * src/prep_cif.c (initialize_aggregate): Include tail padding in + structure size. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct + placement of float result. + * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct + cast of "resp" for big-endian 64 bit machines. + +2003-09-11 Alan Modra + + * src/types.c (double, longdouble): Merge identical SH and ARM + typedefs, and add POWERPC64. + * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for + struct split over gpr and rest. + (ffi_prep_cif_machdep): Correct intarg_count for structures. + * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. + +2003-09-09 Andreas Tobler + + * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct + passing correctly. + +2003-09-09 Alan Modra + + * configure: Regenerate. + +2003-09-04 Andreas Tobler + + * Makefile.am: Remove build rules for ffitest. + * Makefile.in: Rebuilt. + +2003-09-04 Andreas Tobler + + * src/java_raw_api.c: Include to fix compiler warning + about implicit declaration of abort(). + +2003-09-04 Andreas Tobler + + * Makefile.am: Add dejagnu test framework. Fixes PR other/11411. + * Makefile.in: Rebuilt. + * configure.in: Add dejagnu test framework. + * configure: Rebuilt. + + * testsuite/Makefile.am: New file. + * testsuite/Makefile.in: Built + * testsuite/lib/libffi-dg.exp: New file. + * testsuite/config/default.exp: Likewise. + * testsuite/libffi.call/call.exp: Likewise. + * testsuite/libffi.call/ffitest.h: Likewise. + * testsuite/libffi.call/closure_fn0.c: Likewise. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/float.c: Likewise. + * testsuite/libffi.call/float1.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + * testsuite/libffi.call/many.c: Likewise. + * testsuite/libffi.call/many_win32.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/pyobjc-tc.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/return_ll.c: Likewise. + * testsuite/libffi.call/return_sc.c: Likewise. + * testsuite/libffi.call/return_uc.c: Likewise. + * testsuite/libffi.call/strlen.c: Likewise. + * testsuite/libffi.call/strlen_win32.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + * testsuite/libffi.call/struct2.c: Likewise. + * testsuite/libffi.call/struct3.c: Likewise. + * testsuite/libffi.call/struct4.c: Likewise. + * testsuite/libffi.call/struct5.c: Likewise. + * testsuite/libffi.call/struct6.c: Likewise. + * testsuite/libffi.call/struct7.c: Likewise. + * testsuite/libffi.call/struct8.c: Likewise. + * testsuite/libffi.call/struct9.c: Likewise. + * testsuite/libffi.special/special.exp: New file. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + + +2003-08-13 Kaz Kojima + + * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update + copyright years. + +2003-08-02 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc + structure passing. + (ffi_closure_helper_LINUX64): Likewise. + * src/powerpc/linux64.S: Remove code writing to parm save area. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return + address in lr from ffi_closure_helper_LINUX64 call to calculate + table address. Optimize function tail. + +2003-07-28 Andreas Tobler + + * src/sparc/ffi.c: Handle all floating point registers. + * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410. + +2003-07-11 Gerald Pfeifer + + * README: Note that libffi is not part of GCC. Update the project + URL and status. + +2003-06-19 Franz Sirl + + * src/powerpc/ppc_closure.S: Include ffi.h. + +2003-06-13 Rainer Orth + + * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives. + Use C style comments. + +2003-06-13 Kaz Kojima + + * Makefile.am: Add SHmedia support. Fix a typo of SH support. + * Makefile.in: Regenerate. + * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target. + * configure: Regenerate. + * include/ffi.h.in: Add SHmedia support. + * src/sh64/ffi.c: New file. + * src/sh64/sysv.S: New file. + +2003-05-16 Jakub Jelinek + + * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section + should be read-only. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + * include/ffi.h.in (EH_FRAME_FLAGS): Define. + * src/alpha/osf.S: Use EH_FRAME_FLAGS. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. Include ffi.h. + * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding + if -fpic/-fPIC/-mrelocatable. + * src/powerpc/powerpc_closure.S: Likewise. + * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include + #write in .eh_frame flags. + * src/sparc/v9.S: Likewise. + * src/x86/unix64.S: Use EH_FRAME_FLAGS. + * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC. + * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h. + +2003-05-07 Jeff Sturm + + Fixes PR bootstrap/10656 + * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler + support for .register pseudo-op. + * src/sparc/v8.S: Use it. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + +2003-04-18 Jakub Jelinek + + * include/ffi.h.in (POWERPC64): Define if 64-bit. + (enum ffi_abi): Add FFI_LINUX64 on POWERPC. + Make it the default on POWERPC64. + (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64. + * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*. + * configure: Rebuilt. + * src/powerpc/ffi.c (hidden): Define. + (ffi_prep_args_SYSV): Renamed from + ffi_prep_args. Cast pointers to unsigned long to shut up warnings. + (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64, + ASM_NEEDS_REGISTERS64): New. + (ffi_prep_args64): New function. + (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI. + (ffi_call): Likewise. + (ffi_prep_closure): Likewise. + (flush_icache): Surround by #ifndef POWERPC64. + (ffi_dblfl): New union type. + (ffi_closure_helper_SYSV): Use it to avoid aliasing problems. + (ffi_closure_helper_LINUX64): New function. + * src/powerpc/ppc_closure.S: Surround whole file by #ifndef + __powerpc64__. + * src/powerpc/sysv.S: Likewise. + (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV. + * src/powerpc/linux64.S: New file. + * src/powerpc/linux64_closure.S: New file. + * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and + src/powerpc/linux64_closure.S. + (TARGET_SRC_POWERPC): Likewise. + + * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2, + closure_test_fn3): Fix result printing on big-endian 64-bit + machines. + (main): Print tst2_arg instead of uninitialized tst2_result. + + * src/ffitest.c (main): Hide what closure pointer really points to + from the compiler. + +2003-04-16 Richard Earnshaw + + * configure.in (arm-*-netbsdelf*): Add configuration. + (configure): Regenerated. + +2003-04-04 Loren J. Rittle + + * include/Makefile.in: Regenerate. + +2003-03-21 Zdenek Dvorak + + * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32 + bit mode. + * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): + Receive closure pointer through parameter, read args using + __builtin_dwarf_cfa. + (FFI_INIT_TRAMPOLINE): Send closure reference through eax. + +2003-03-12 Andreas Schwab + + * configure.in: Avoid trailing /. in toolexeclibdir. + * configure: Rebuilt. + +2003-03-03 Andreas Tobler + + * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries. + +2003-02-06 Andreas Tobler + + * libffi/src/powerpc/darwin_closure.S: + Fix alignement bug, allocate 8 bytes for the result. + * libffi/src/powerpc/aix_closure.S: + Likewise. + * libffi/src/powerpc/ffi_darwin.c: + Update stackframe description for aix/darwin_closure.S. + +2003-02-06 Jakub Jelinek + + * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility + attribute. + +2003-01-31 Christian Cornelssen , + Andreas Schwab + + * configure.in: Adjust command to source config-ml.in to account + for changes to the libffi_basedir definition. + (libffi_basedir): Remove ${srcdir} from value and include trailing + slash if nonempty. + + * configure: Regenerate. + +2003-01-29 Franz Sirl + + * src/powerpc/ppc_closure.S: Recode to fit shared libs. + +2003-01-28 Andrew Haley + + * include/ffi.h.in: Enable FFI_CLOSURES for x86_64. + * src/x86/ffi64.c (ffi_prep_closure): New. + (ffi_closure_UNIX64_inner): New. + * src/x86/unix64.S (ffi_closure_UNIX64): New. + +2003-01-27 Alexandre Oliva + + * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. + Remove USE_LIBDIR conditional. + * Makefile.am (toolexecdir, toolexeclibdir): Don't override. + * Makefile.in, configure: Rebuilt. + +2003-01027 David Edelsohn + + * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo. + * Makefile.in: Regenerate. + +2003-01-22 Andrew Haley + + * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to + unwind info. + +2003-01-21 Andreas Tobler + + * src/powerpc/darwin.S: Add unwind info. + * src/powerpc/darwin_closure.S: Likewise. + +2003-01-14 Andrew Haley + + * src/x86/ffi64.c (ffi_prep_args): Check for void retval. + (ffi_prep_cif_machdep): Likewise. + * src/x86/unix64.S: Add unwind info. + +2003-01-14 Andreas Jaeger + + * src/ffitest.c (main): Only use ffi_closures if those are + supported. + +2003-01-13 Andreas Tobler + + * libffi/src/ffitest.c + add closure testcases + +2003-01-13 Kevin B. Hendricks + + * libffi/src/powerpc/ffi.c + fix alignment bug for float (4 byte aligned iso 8 byte) + +2003-01-09 Geoffrey Keating + + * src/powerpc/ffi_darwin.c: Remove RCS version string. + * src/powerpc/darwin.S: Remove RCS version string. + +2003-01-03 Jeff Sturm + + * include/ffi.h.in: Add closure defines for SPARC, SPARC64. + * src/ffitest.c (main): Use static storage for closure. + * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New. + * src/sparc/v8.S (ffi_closure_v8): New. + * src/sparc/v9.S (ffi_closure_v9): New. + +2002-11-10 Ranjit Mathew + + * include/ffi.h.in: Added FFI_STDCALL ffi_type + enumeration for X86_WIN32. + * src/x86/win32.S: Added ffi_call_STDCALL function + definition. + * src/x86/ffi.c (ffi_call/ffi_raw_call): Added + switch cases for recognising FFI_STDCALL and + calling ffi_call_STDCALL if target is X86_WIN32. + * src/ffitest.c (my_stdcall_strlen/stdcall_many): + stdcall versions of the "my_strlen" and "many" + test functions (for X86_WIN32). + Added test cases to test stdcall invocation using + these functions. + +2002-12-02 Kaz Kojima + + * src/sh/sysv.S: Add DWARF2 unwind info. + +2002-11-27 Ulrich Weigand + + * src/s390/sysv.S (.eh_frame section): Make section read-only. + +2002-11-26 Jim Wilson + + * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. + +2002-11-23 H.J. Lu + + * acinclude.m4: Add dummy AM_PROG_LIBTOOL. + Include ../config/accross.m4. + * aclocal.m4; Rebuild. + * configure: Likewise. + +2002-11-15 Ulrich Weigand + + * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding. + +2002-11-11 DJ Delorie + + * configure.in: Look for common files in the right place. + +2002-10-08 Ulrich Weigand + + * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret + raw data as _Jv_word values, not ffi_raw. + (ffi_java_ptrarray_to_raw): Likewise. + (ffi_java_rvalue_to_raw): New function. + (ffi_java_raw_call): Call it. + (ffi_java_raw_to_rvalue): New function. + (ffi_java_translate_args): Call it. + * src/ffitest.c (closure_test_fn): Interpret return value + as ffi_arg, not int. + * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing + FFI_TYPE_POINTER case. + (ffi_closure_helper_SYSV): Likewise. Also, assume return + values extended to word size. + +2002-10-02 Andreas Jaeger + + * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output. + +2002-10-01 Bo Thorsen + + * include/ffi.h.in: Fix i386 win32 compilation. + +2002-09-30 Ulrich Weigand + + * configure.in: Add s390x-*-linux-* target. + * configure: Regenerate. + * include/ffi.h.in: Define S390X for s390x targets. + (FFI_CLOSURES): Define for s390/s390x. + (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_NATIVE_RAW_API): Likewise. + * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. + * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. + * src/s390/ffi.c: Major rework of existing code. Add support for + s390x targets. Add closure support. + * src/s390/sysv.S: Likewise. + +2002-09-29 Richard Earnshaw + + * src/arm/sysv.S: Fix typo. + +2002-09-28 Richard Earnshaw + + * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor + has defined __USER_LABEL_PREFIX__, then use it in CNAME. + (ffi_call_SYSV): Handle soft-float. + +2002-09-27 Bo Thorsen + + * include/ffi.h.in: Fix multilib x86-64 support. + +2002-09-22 Kaveh R. Ghazi + + * Makefile.am (all-multi): Fix multilib parallel build. + +2002-07-19 Kaz Kojima + + * configure.in (sh[34]*-*-linux*): Add brackets. + * configure: Regenerate. + +2002-07-18 Kaz Kojima + + * Makefile.am: Add SH support. + * Makefile.in: Regenerate. + * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. + * configure: Regenerate. + * include/ffi.h.in: Add SH support. + * src/sh/ffi.c: New file. + * src/sh/sysv.S: New file. + * src/types.c: Add SH support. + +2002-07-16 Bo Thorsen + + * src/x86/ffi64.c: New file that adds x86-64 support. + * src/x86/unix64.S: New file that handles argument setup for + x86-64. + * src/x86/sysv.S: Don't use this on x86-64. + * src/x86/ffi.c: Don't use this on x86-64. + Remove unused vars. + * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation + for x86-64. + * src/ffitest.c (struct6): New test that tests a special case in + the x86-64 ABI. + (struct7): Likewise. + (struct8): Likewise. + (struct9): Likewise. + (closure_test_fn): Silence warning about this when it's not used. + (main): Add the new tests. + (main): Fix a couple of wrong casts and silence some compiler warnings. + * include/ffi.h.in: Add x86-64 ABI definition. + * fficonfig.h.in: Regenerate. + * Makefile.am: Add x86-64 support. + * configure.in: Likewise. + * Makefile.in: Regenerate. + * configure: Likewise. + +2002-06-24 Bo Thorsen + + * src/types.c: Merge settings for similar architectures. + Add x86-64 sizes and alignments. + +2002-06-23 Bo Thorsen + + * src/arm/ffi.c (ffi_prep_args): Remove unused vars. + * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. + * src/mips/ffi.c (ffi_prep_args): Likewise. + * src/m68k/ffi.c (ffi_prep_args): Likewise. + +2002-07-18 H.J. Lu (hjl@gnu.org) + + * Makefile.am (TARGET_SRC_MIPS_LINUX): New. + (libffi_la_SOURCES): Support MIPS_LINUX. + (libffi_convenience_la_SOURCES): Likewise. + * Makefile.in: Regenerated. + + * configure.in (mips64*-*): Skip. + (mips*-*-linux*): New. + * configure: Regenerated. + + * src/mips/ffi.c: Include . + +2002-06-06 Ulrich Weigand + + * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info. + +2002-05-27 Roger Sayle + + * src/x86/ffi.c (ffi_prep_args): Remove reference to avn. + +2002-05-27 Bo Thorsen + + * src/x86/ffi.c (ffi_prep_args): Remove unused variable and + fix formatting. + +2002-05-13 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at + beginning of function (for older apple cc). + +2002-05-08 Alexandre Oliva + + * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at + script entry, and set LD to it when configuring multilibs. + * configure: Rebuilt. + +2002-05-05 Jason Thorpe + + * configure.in (sparc64-*-netbsd*): Add target. + (sparc-*-netbsdelf*): Likewise. + * configure: Regenerate. + +2002-04-28 David S. Miller + + * configure.in, configure: Fix SPARC test in previous change. + +2002-04-29 Gerhard Tonn + + * Makefile.am: Add Linux for S/390 support. + * Makefile.in: Regenerate. + * configure.in: Add Linux for S/390 support. + * configure: Regenerate. + * include/ffi.h.in: Add Linux for S/390 support. + * src/s390/ffi.c: New file from libffi CVS tree. + * src/s390/sysv.S: New file from libffi CVS tree. + +2002-04-28 Jakub Jelinek + + * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working + %r_disp32(). + * src/sparc/v8.S: Use it. + * src/sparc/v9.S: Likewise. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + +2002-04-08 Hans Boehm + + * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE + correctly. + * src/ia64/unix.S: Add unwind information. Fix comments. + Save sp in a way that's compatible with unwind info. + (ffi_call_unix): Correctly restore sp in all cases. + * src/ia64/ffi.c: Add, fix comments. + +2002-04-08 Jakub Jelinek + + * src/sparc/v8.S: Make .eh_frame dependent on target word size. + +2002-04-06 Jason Thorpe + + * configure.in (alpha*-*-netbsd*): Add target. + * configure: Regenerate. + +2002-04-04 Jeff Sturm + + * src/sparc/v8.S: Add unwind info. + * src/sparc/v9.S: Likewise. + +2002-03-30 Krister Walfridsson + + * configure.in: Enable i*86-*-netbsdelf*. + * configure: Rebuilt. + +2002-03-29 David Billinghurst + + PR other/2620 + * src/mips/n32.s: Delete + * src/mips/o32.s: Delete + +2002-03-21 Loren J. Rittle + + * configure.in: Enable alpha*-*-freebsd*. + * configure: Rebuilt. + +2002-03-17 Bryce McKinlay + + * Makefile.am: libfficonvenience -> libffi_convenience. + * Makefile.in: Rebuilt. + + * Makefile.am: Define ffitest_OBJECTS. + * Makefile.in: Rebuilt. + +2002-03-07 Andreas Tobler + David Edelsohn + + * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files. + (TARGET_SRC_POWERPC_AIX): Add aix_closure.S. + (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S. + * Makefile.in: Regenerate. + * include/ffi.h.in: Add AIX and Darwin closure definitions. + * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function. + (flush_icache, flush_range): New functions. + (ffi_closure_helper_DARWIN): New function. + * src/powerpc/aix_closure.S: New file. + * src/powerpc/darwin_closure.S: New file. + +2002-02-24 Jeff Sturm + + * include/ffi.h.in: Add typedef for ffi_arg. + * src/ffitest.c (main): Declare rint with ffi_arg. + +2002-02-21 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate + number of GPRs for floating-point arguments. + +2002-01-31 Anthony Green + + * configure: Rebuilt. + * configure.in: Replace CHECK_SIZEOF and endian tests with + cross-compiler friendly macros. + * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New + macros. + +2002-01-18 David Edelsohn + + * src/powerpc/darwin.S (_ffi_call_AIX): New. + * src/powerpc/aix.S (ffi_call_DARWIN): New. + +2002-01-17 David Edelsohn + + * Makefile.am (EXTRA_DIST): Add Darwin and AIX files. + (TARGET_SRC_POWERPC_AIX): New. + (POWERPC_AIX): New stanza. + * Makefile.in: Regenerate. + * configure.in: Add AIX case. + * configure: Regenerate. + * include/ffi.h.in (ffi_abi): Add FFI_AIX. + * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame + size. Fix "long double" support. + (ffi_call): Add FFI_AIX case. + * src/powerpc/aix.S: New. + +2001-10-09 John Hornkvist + + Implement Darwin PowerPC ABI. + * configure.in: Handle powerpc-*-darwin*. + * Makefile.am: Set source files for POWERPC_DARWIN. + * configure: Rebuilt. + * Makefile.in: Rebuilt. + * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for + POWERPC_DARWIN. + * src/powerpc/darwin.S: New file. + * src/powerpc/ffi_darwin.c: New file. + +2001-10-07 Joseph S. Myers + + * src/x86/ffi.c: Fix spelling error of "separate" as "seperate". + +2001-07-16 Rainer Orth + + * src/x86/sysv.S: Avoid gas-only .balign directive. + Use C style comments. + +2001-07-16 Rainer Orth + + * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. + Fixes PR bootstrap/3563. + +2001-06-26 Rainer Orth + + * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. + +2001-06-25 Rainer Orth + + * configure.in: Recognize sparc*-sun-* host. + * configure: Regenerate. + +2001-06-06 Andrew Haley + + * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF. + +2001-06-03 Andrew Haley + + * src/alpha/osf.S: Add unwind info. + * src/powerpc/sysv.S: Add unwind info. + * src/powerpc/ppc_closure.S: Likewise. + +2000-05-31 Jeff Sturm + + * configure.in: Fix AC_ARG_ENABLE usage. + * configure: Rebuilt. + +2001-05-06 Bryce McKinlay + + * configure.in: Remove warning about beta code. + * configure: Rebuilt. + +2001-04-25 Hans Boehm + + * src/ia64/unix.S: Restore stack pointer when returning from + ffi_closure_UNIX. + * src/ia64/ffi.c: Fix typo in comment. + +2001-04-18 Jim Wilson + + * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2 + to eliminate RAW DV. + +2001-04-12 Bryce McKinlay + + * Makefile.am: Make a libtool convenience library. + * Makefile.in: Rebuilt. + +2001-03-29 Bryce McKinlay + + * configure.in: Use different syntax for subdirectory creation. + * configure: Rebuilt. + +2001-03-27 Jon Beniston + + * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). + * configure: Rebuilt. + * Makefile.am: Added X86_WIN32 target support. + * Makefile.in: Rebuilt. + + * include/ffi.h.in: Added X86_WIN32 target support. + + * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. + * src/types.c: Added X86_WIN32 target support. + + * src/x86/win32.S: New file. Based on sysv.S, but with EH + stuff removed and made to work with CygWin's gas. + +2001-03-26 Bryce McKinlay + + * configure.in: Make target subdirectory in build dir. + * Makefile.am: Override suffix based rules to specify correct output + subdirectory. + * Makefile.in: Rebuilt. + * configure: Rebuilt. + +2001-03-23 Kevin B Hendricks + + * src/powerpc/ppc_closure.S: New file. + * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug + involving long long and register pairs. + (ffi_prep_closure): New function. + (flush_icache): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * include/ffi.h.in (FFI_CLOSURES): Define on PPC. + (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_NATIVE_RAW_API): Likewise. + * Makefile.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S. + (TARGET_SRC_POWERPC): Likewise. + +2001-03-19 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (ffitest_LDFLAGS): New macro. + +2001-03-02 Nick Clifton + + * include/ffi.h.in: Remove RCS ident string. + * include/ffi_mips.h: Remove RCS ident string. + * src/debug.c: Remove RCS ident string. + * src/ffitest.c: Remove RCS ident string. + * src/prep_cif.c: Remove RCS ident string. + * src/types.c: Remove RCS ident string. + * src/alpha/ffi.c: Remove RCS ident string. + * src/alpha/osf.S: Remove RCS ident string. + * src/arm/ffi.c: Remove RCS ident string. + * src/arm/sysv.S: Remove RCS ident string. + * src/mips/ffi.c: Remove RCS ident string. + * src/mips/n32.S: Remove RCS ident string. + * src/mips/o32.S: Remove RCS ident string. + * src/sparc/ffi.c: Remove RCS ident string. + * src/sparc/v8.S: Remove RCS ident string. + * src/sparc/v9.S: Remove RCS ident string. + * src/x86/ffi.c: Remove RCS ident string. + * src/x86/sysv.S: Remove RCS ident string. + +2001-02-08 Joseph S. Myers + + * include/ffi.h.in: Change sourceware.cygnus.com references to + gcc.gnu.org. + +2000-12-09 Richard Henderson + + * src/alpha/ffi.c (ffi_call): Simplify struct return test. + (ffi_closure_osf_inner): Index rather than increment avalue + and arg_types. Give ffi_closure_osf the raw return value type. + * src/alpha/osf.S (ffi_closure_osf): Handle return value type + promotion. + +2000-12-07 Richard Henderson + + * src/raw_api.c (ffi_translate_args): Fix typo. + (ffi_prep_closure): Likewise. + + * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and + FFI_TRAMPOLINE_SIZE. + * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal + cif->bytes for new ffi_call_osf implementation. + (ffi_prep_args): Absorb into ... + (ffi_call): ... here. Do all stack allocation here and + avoid a callback function. + (ffi_prep_closure, ffi_closure_osf_inner): New. + * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback. + (ffi_closure_osf): New. + +2000-09-10 Alexandre Oliva + + * config.guess, config.sub, install-sh: Removed. + * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise. + * Makefile.in: Rebuilt. + + * acinclude.m4: Include libtool macros from the top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-22 Alexandre Oliva + + * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set. + * configure: Rebuilt. + +2000-05-11 Scott Bambrough + + * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to + memory correctly. Use conditional instructions, not branches where + possible. + +2000-05-04 Tom Tromey + + * configure: Rebuilt. + * configure.in: Match `arm*-*-linux-*'. + From Chris Dornan . + +2000-04-28 Jakub Jelinek + + * Makefile.am (SUBDIRS): Define. + (AM_MAKEFLAGS): Likewise. + (Multilib support.): Add section. + * Makefile.in: Rebuilt. + * ltconfig (extra_compiler_flags, extra_compiler_flags_value): + New variables. Set for gcc using -print-multi-lib. Export them + to libtool. + (sparc64-*-linux-gnu*): Use libsuff 64 for search paths. + * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options + for -shared links. + (extra_compiler_flags_value, extra_compiler_flags): Check these + for extra compiler options which need to be passed down in + compiler_flags. + +2000-04-16 Anthony Green + + * configure: Rebuilt. + * configure.in: Change i*86-pc-linux* to i*86-*-linux*. + +2000-04-14 Jakub Jelinek + + * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds. + Set SPARC FFI_DEFAULT_ABI based on SPARC64 define. + * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args. + Replace all void * sizeofs with sizeof(int). + Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is + different than DOUBLE. + Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere). + (ffi_prep_args_v9): New function. + (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8. + (ffi_V9_return_struct): New function. + (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from + 32bit code (not yet cross-arch calls). + * src/sparc/v8.S: Add struct return delay nop. + Handle long long. + * src/sparc/v9.S: New file. + * src/prep_cif.c (ffi_prep_cif): Return structure pointer + is used on sparc64 only for structures larger than 32 bytes. + Pass by reference for structures is done for structure arguments + larger than 16 bytes. + * src/ffitest.c (main): Use 64bit rint on sparc64. + Run long long tests on sparc. + * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and + sparc64. + (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits + on sparc64. + * configure.in (sparc-*-linux*): New supported target. + (sparc64-*-linux*): Likewise. + * configure: Rebuilt. + * Makefile.am: Add v9.S to SPARC files. + * Makefile.in: Likewise. + (LINK): Surround $(CCLD) into double quotes, so that multilib + compiles work correctly. + +2000-04-04 Alexandre Petit-Bianco + + * configure: Rebuilt. + * configure.in: (i*86-*-solaris*): New libffi target. Patch + proposed by Bryce McKinlay. + +2000-03-20 Tom Tromey + + * Makefile.in: Hand edit for java_raw_api.lo. + +2000-03-08 Bryce McKinlay + + * config.guess, config.sub: Update from the gcc tree. + Fix for PR libgcj/168. + +2000-03-03 Tom Tromey + + * Makefile.in: Fixed ia64 by hand. + + * configure: Rebuilt. + * configure.in (--enable-multilib): New option. + (libffi_basedir): New subst. + (AC_OUTPUT): Added multilib code. + +2000-03-02 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as + directory name. + +2000-02-25 Hans Boehm + + * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New + files. + * src/raw_api.c (ffi_translate_args): Fixed typo in argument + list. + (ffi_prep_raw_closure): Use ffi_translate_args, not + ffi_closure_translate. + * src/java_raw_api.c: New file. + * src/ffitest.c (closure_test_fn): New function. + (main): Define `rint' as long long on IA64. Added new test when + FFI_CLOSURES is defined. + * include/ffi.h.in (ALIGN): Use size_t, not unsigned. + (ffi_abi): Recognize IA64. + (ffi_raw): Added `flt' field. + Added "Java raw API" code. + * configure.in: Recognize ia64. + * Makefile.am (TARGET_SRC_IA64): New macro. + (libffi_la_common_SOURCES): Added java_raw_api.c. + (libffi_la_SOURCES): Define in IA64 case. + +2000-01-04 Tom Tromey + + * Makefile.in: Rebuilt with newer automake. + +1999-12-31 Tom Tromey + + * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src. + +1999-09-01 Tom Tromey + + * include/ffi.h.in: Removed PACKAGE and VERSION defines and + undefs. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE. + Use AM_PROG_LIBTOOL (automake 1.4 compatibility). + * acconfig.h: Don't #undef PACKAGE or VERSION. + +1999-08-09 Anthony Green + + * include/ffi.h.in: Try to work around messy header problem + with PACKAGE and VERSION. + + * configure: Rebuilt. + * configure.in: Change version to 2.00-beta. + + * fficonfig.h.in: Rebuilt. + * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. + + * src/x86/ffi.c (ffi_raw_call): Rename. + +1999-08-02 Kresten Krab Thorup + + * src/x86/ffi.c (ffi_closure_SYSV): New function. + (ffi_prep_incoming_args_SYSV): Ditto. + (ffi_prep_closure): Ditto. + (ffi_closure_raw_SYSV): Ditto. + (ffi_prep_raw_closure): More ditto. + (ffi_call_raw): Final ditto. + + * include/ffi.h.in: Add definitions for closure and raw API. + + * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for + FFI_TYPE_UINT64. + + * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c + + * src/raw_api.c: New file. + + * include/ffi.h.in (ffi_raw): New type. + (UINT_ARG, SINT_ARG): New defines. + (ffi_closure, ffi_raw_closure): New types. + (ffi_prep_closure, ffi_prep_raw_closure): New declarations. + + * configure.in: Add check for endianness and sizeof void*. + + * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument, + instead of directly. + + * configure: Rebuilt. + +Thu Jul 8 14:28:42 1999 Anthony Green + + * configure.in: Add x86 and powerpc BeOS configurations. + From Makoto Kato . + +1999-05-09 Anthony Green + + * configure.in: Add warning about this being beta code. + Remove src/Makefile.am from the picture. + * configure: Rebuilt. + + * Makefile.am: Move logic from src/Makefile.am. Add changes + to support libffi as a target library. + * Makefile.in: Rebuilt. + + * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: + Upgraded to new autoconf, automake, libtool. + + * README: Tweaks. + + * LICENSE: Update copyright date. + + * src/Makefile.am, src/Makefile.in: Removed. + +1998-11-29 Anthony Green + + * include/ChangeLog: Removed. + * src/ChangeLog: Removed. + * src/mips/ChangeLog: Removed. + * src/sparc/ChangeLog: Remboved. + * src/x86/ChangeLog: Removed. + + * ChangeLog.v1: Created. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libgcj b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libgcj new file mode 100644 index 0000000000..ea5d02f19b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.libgcj @@ -0,0 +1,40 @@ +2004-01-14 Kelley Cook + + * configure.in: Add in AC_PREREQ(2.13) + +2003-02-20 Alexandre Oliva + + * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to + config.status. + * configure: Rebuilt. + +2002-01-27 Alexandre Oliva + + * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. + Remove USE_LIBDIR conditional. + * Makefile.am (toolexecdir, toolexeclibdir): Don't override. + * Makefile.in, configure: Rebuilt. + +Mon Aug 9 18:33:38 1999 Rainer Orth + + * include/Makefile.in: Rebuilt. + * Makefile.in: Rebuilt + * Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native + builds. + Use USE_LIBDIR. + + * configure: Rebuilt. + * configure.in (USE_LIBDIR): Define for native builds. + Use lowercase in configure --help explanations. + +1999-08-08 Anthony Green + + * include/ffi.h.in (FFI_FN): Remove `...'. + +1999-08-08 Anthony Green + + * Makefile.in: Rebuilt. + * Makefile.am (AM_CFLAGS): Compile with -fexceptions. + + * src/x86/sysv.S: Add exception handling metadata. + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.v1 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.v1 new file mode 100644 index 0000000000..af3a377568 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/ChangeLog.v1 @@ -0,0 +1,764 @@ +The libffi version 1 ChangeLog archive. + +Version 1 of libffi had per-directory ChangeLogs. Current and future +versions have a single ChangeLog file in the root directory. The +version 1 ChangeLogs have all been concatenated into this file for +future reference only. + +--- libffi ---------------------------------------------------------------- + +Mon Oct 5 02:17:50 1998 Anthony Green + + * configure.in: Boosted rev. + * configure, Makefile.in, aclocal.m4: Rebuilt. + * README: Boosted rev and updated release notes. + +Mon Oct 5 01:03:03 1998 Anthony Green + + * configure.in: Boosted rev. + * configure, Makefile.in, aclocal.m4: Rebuilt. + * README: Boosted rev and updated release notes. + +1998-07-25 Andreas Schwab + + * m68k/ffi.c (ffi_prep_cif_machdep): Use bitmask for cif->flags. + Correctly handle small structures. + (ffi_prep_args): Also handle small structures. + (ffi_call): Pass size of return type to ffi_call_SYSV. + * m68k/sysv.S: Adjust for above changes. Correctly align small + structures in the return value. + + * types.c (uint64, sint64) [M68K]: Change alignment to 4. + +Fri Apr 17 17:26:58 1998 Anthony Green + + * configure.in: Boosted rev. + * configure,Makefile.in,aclocal.m4: Rebuilt. + * README: Boosted rev and added release notes. + +Sun Feb 22 00:50:41 1998 Geoff Keating + + * configure.in: Add PowerPC config bits. + +1998-02-14 Andreas Schwab + + * configure.in: Add m68k config bits. Change AC_CANONICAL_SYSTEM + to AC_CANONICAL_HOST, this is not a compiler. Use $host instead + of $target. Remove AC_CHECK_SIZEOF(char), we already know the + result. Fix argument of AC_ARG_ENABLE. + * configure, fficonfig.h.in: Rebuilt. + +Tue Feb 10 20:53:40 1998 Richard Henderson + + * configure.in: Add Alpha config bits. + +Tue May 13 13:39:20 1997 Anthony Green + + * README: Updated dates and reworded Irix comments. + + * configure.in: Removed AC_PROG_RANLIB. + + * Makefile.in, aclocal.m4, config.guess, config.sub, configure, + ltmain.sh, */Makefile.in: libtoolized again and rebuilt with + automake and autoconf. + +Sat May 10 18:44:50 1997 Tom Tromey + + * configure, aclocal.m4: Rebuilt. + * configure.in: Don't compute EXTRADIST; now handled in + src/Makefile.in. Removed macros implied by AM_INIT_AUTOMAKE. + Don't run AM_MAINTAINER_MODE. + +Thu May 8 14:34:05 1997 Anthony Green + + * missing, ltmain.sh, ltconfig.sh: Created. These are new files + required by automake and libtool. + + * README: Boosted rev to 1.14. Added notes. + + * acconfig.h: Moved PACKAGE and VERSION for new automake. + + * configure.in: Changes for libtool. + + * Makefile.am (check): make test now make check. Uses libtool now. + + * Makefile.in, configure.in, aclocal.h, fficonfig.h.in: Rebuilt. + +Thu May 1 16:27:07 1997 Anthony Green + + * missing: Added file required by new automake. + +Tue Nov 26 14:10:42 1996 Anthony Green + + * acconfig.h: Added USING_PURIFY flag. This is defined when + --enable-purify-safety was used at configure time. + + * configure.in (allsources): Added --enable-purify-safety switch. + (VERSION): Boosted rev to 1.13. + * configure: Rebuilt. + +Fri Nov 22 06:46:12 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.12. + Removed special CFLAGS hack for gcc. + * configure: Rebuilt. + + * README: Boosted rev to 1.12. Added notes. + + * Many files: Cygnus Support changed to Cygnus Solutions. + +Wed Oct 30 11:15:25 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.11. + * configure: Rebuilt. + + * README: Boosted rev to 1.11. Added notes about GNU make. + +Tue Oct 29 12:25:12 1996 Anthony Green + + * configure.in: Fixed -Wall trick. + (VERSION): Boosted rev. + * configure: Rebuilt + + * acconfig.h: Needed for --enable-debug configure switch. + + * README: Boosted rev to 1.09. Added more notes on building + libffi, and LCLint. + + * configure.in: Added --enable-debug switch. Boosted rev to + 1.09. + * configure: Rebuilt + +Tue Oct 15 13:11:28 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.08 + * configure: Rebuilt. + + * README: Added n32 bug fix notes. + + * Makefile.am: Added "make lint" production. + * Makefile.in: Rebuilt. + +Mon Oct 14 10:54:46 1996 Anthony Green + + * README: Added web page reference. + + * configure.in, README: Boosted rev to 1.05 + * configure: Rebuilt. + + * README: Fixed n32 sample code. + +Fri Oct 11 17:09:28 1996 Anthony Green + + * README: Added sparc notes. + + * configure.in, README: Boosted rev to 1.04. + * configure: Rebuilt. + +Thu Oct 10 10:31:03 1996 Anthony Green + + * configure.in, README: Boosted rev to 1.03. + * configure: Rebuilt. + + * README: Added struct notes. + + * Makefile.am (EXTRA_DIST): Added LICENSE to distribution. + * Makefile.in: Rebuilt. + + * README: Removed Linux section. No special notes now + because aggregates arg/return types work. + +Wed Oct 9 16:16:42 1996 Anthony Green + + * README, configure.in (VERSION): Boosted rev to 1.02 + * configure: Rebuilt. + +Tue Oct 8 11:56:33 1996 Anthony Green + + * README (NOTE): Added n32 notes. + + * Makefile.am: Added test production. + * Makefile: Rebuilt + + * README: spell checked! + + * configure.in (VERSION): Boosted rev to 1.01 + * configure: Rebuilt. + +Mon Oct 7 15:50:22 1996 Anthony Green + + * configure.in: Added nasty bit to support SGI tools. + * configure: Rebuilt. + + * README: Added SGI notes. Added note about automake bug. + +Mon Oct 7 11:00:28 1996 Anthony Green + + * README: Rewrote intro, and fixed examples. + +Fri Oct 4 10:19:55 1996 Anthony Green + + * configure.in: -D$TARGET is no longer used as a compiler switch. + It is now inserted into ffi.h at configure time. + * configure: Rebuilt. + + * FFI_ABI and FFI_STATUS are now ffi_abi and ffi_status. + +Thu Oct 3 13:47:34 1996 Anthony Green + + * README, LICENSE: Created. Wrote some docs. + + * configure.in: Don't barf on i586-unknown-linuxaout. + Added EXTRADIST code for "make dist". + * configure: Rebuilt. + + * */Makefile.in: Rebuilt with patched automake. + +Tue Oct 1 17:12:25 1996 Anthony Green + + * Makefile.am, aclocal.m4, config.guess, config.sub, + configure.in, fficonfig.h.in, install-sh, mkinstalldirs, + stamp-h.in: Created + * Makefile.in, configure: Generated + +--- libffi/include -------------------------------------------------------- + +Tue Feb 24 13:09:36 1998 Anthony Green + + * ffi_mips.h: Updated FFI_TYPE_STRUCT_* values based on + ffi.h.in changes. This is a work-around for SGI's "simple" + assembler. + +Sun Feb 22 00:51:55 1998 Geoff Keating + + * ffi.h.in: PowerPC support. + +1998-02-14 Andreas Schwab + + * ffi.h.in: Add m68k support. + (FFI_TYPE_LONGDOUBLE): Make it a separate value. + +Tue Feb 10 20:55:16 1998 Richard Henderson + + * ffi.h.in (SIZEOF_ARG): Use a pointer type by default. + + * ffi.h.in: Alpha support. + +Fri Nov 22 06:48:45 1996 Anthony Green + + * ffi.h.in, ffi_common.h: Cygnus Support -> Cygnus Solutions. + +Wed Nov 20 22:31:01 1996 Anthony Green + + * ffi.h.in: Added ffi_type_void definition. + +Tue Oct 29 12:22:40 1996 Anthony Green + + * Makefile.am (hack_DATA): Always install ffi_mips.h. + + * ffi.h.in: Removed FFI_DEBUG. It's now in the correct + place (acconfig.h). + Added #include for size_t definition. + +Tue Oct 15 17:23:35 1996 Anthony Green + + * ffi.h.in, ffi_common.h, ffi_mips.h: More clean up. + Commented out #define of FFI_DEBUG. + +Tue Oct 15 13:01:06 1996 Anthony Green + + * ffi_common.h: Added bool definition. + + * ffi.h.in, ffi_common.h: Clean up based on LCLint output. + Added funny /*@...@*/ comments to annotate source. + +Mon Oct 14 12:29:23 1996 Anthony Green + + * ffi.h.in: Interface changes based on feedback from Jim + Blandy. + +Fri Oct 11 16:49:35 1996 Anthony Green + + * ffi.h.in: Small change for sparc support. + +Thu Oct 10 14:53:37 1996 Anthony Green + + * ffi_mips.h: Added FFI_TYPE_STRUCT_* definitions for + special structure return types. + +Wed Oct 9 13:55:57 1996 Anthony Green + + * ffi.h.in: Added SIZEOF_ARG definition for X86 + +Tue Oct 8 11:40:36 1996 Anthony Green + + * ffi.h.in (FFI_FN): Added macro for eliminating compiler warnings. + Use it to case your function pointers to the proper type. + + * ffi_mips.h (SIZEOF_ARG): Added magic to fix type promotion bug. + + * Makefile.am (EXTRA_DIST): Added ffi_mips.h to EXTRA_DIST. + * Makefile: Rebuilt. + + * ffi_mips.h: Created. Moved all common mips definitions here. + +Mon Oct 7 10:58:12 1996 Anthony Green + + * ffi.h.in: The SGI assember is very picky about parens. Redefined + some macros to avoid problems. + + * ffi.h.in: Added FFI_DEFAULT_ABI definitions. Also added + externs for pointer, and 64bit integral ffi_types. + +Fri Oct 4 09:51:37 1996 Anthony Green + + * ffi.h.in: Added FFI_ABI member to ffi_cif and changed + function prototypes accordingly. + Added #define @TARGET@. Now programs including ffi.h don't + have to specify this themselves. + +Thu Oct 3 15:36:44 1996 Anthony Green + + * ffi.h.in: Changed ffi_prep_cif's values from void* to void** + + * Makefile.am (EXTRA_DIST): Added EXTRA_DIST for "make dist" + to work. + * Makefile.in: Regenerated. + +Wed Oct 2 10:16:59 1996 Anthony Green + + * Makefile.am: Created + * Makefile.in: Generated + + * ffi_common.h: Added rcsid comment + +Tue Oct 1 17:13:51 1996 Anthony Green + + * ffi.h.in, ffi_common.h: Created + +--- libffi/src ------------------------------------------------------------ + +Mon Oct 5 02:17:50 1998 Anthony Green + + * arm/ffi.c, arm/sysv.S: Created. + + * Makefile.am: Added arm files. + * Makefile.in: Rebuilt. + +Mon Oct 5 01:41:38 1998 Anthony Green + + * Makefile.am (libffi_la_LDFLAGS): Incremented revision. + +Sun Oct 4 16:27:17 1998 Anthony Green + + * alpha/osf.S (ffi_call_osf): Patch for DU assembler. + + * ffitest.c (main): long long and long double return values work + for x86. + +Fri Apr 17 11:50:58 1998 Anthony Green + + * Makefile.in: Rebuilt. + + * ffitest.c (main): Floating point tests not executed for systems + with broken lond double (SunOS 4 w/ GCC). + + * types.c: Fixed x86 alignment info for long long types. + +Thu Apr 16 07:15:28 1998 Anthony Green + + * ffitest.c: Added more notes about GCC bugs under Irix 6. + +Wed Apr 15 08:42:22 1998 Anthony Green + + * ffitest.c (struct5): New test function. + (main): New test with struct5. + +Thu Mar 5 10:48:11 1998 Anthony Green + + * prep_cif.c (initialize_aggregate): Fix assertion for + nested structures. + +Tue Feb 24 16:33:41 1998 Anthony Green + + * prep_cif.c (ffi_prep_cif): Added long double support for sparc. + +Sun Feb 22 00:52:18 1998 Geoff Keating + + * powerpc/asm.h: New file. + * powerpc/ffi.c: New file. + * powerpc/sysv.S: New file. + * Makefile.am: PowerPC port. + * ffitest.c (main): Allow all tests to run even in presence of gcc + bug on PowerPC. + +1998-02-17 Anthony Green + + * mips/ffi.c: Fixed comment typo. + + * x86/ffi.c (ffi_prep_cif_machdep), x86/sysv.S (retfloat): + Fixed x86 long double return handling. + + * types.c: Fixed x86 long double alignment info. + +1998-02-14 Andreas Schwab + + * types.c: Add m68k support. + + * ffitest.c (floating): Add long double parameter. + (return_ll, ldblit): New functions to test long long and long + double return value. + (main): Fix type error in assignment of ts[1-4]_type.elements. + Add tests for long long and long double arguments and return + values. + + * prep_cif.c (ffi_prep_cif) [M68K]: Don't allocate argument for + struct value pointer. + + * m68k/ffi.c, m68k/sysv.S: New files. + * Makefile.am: Add bits for m68k port. Add kludge to work around + automake deficiency. + (test): Don't require "." in $PATH. + * Makefile.in: Rebuilt. + +Wed Feb 11 07:36:50 1998 Anthony Green + + * Makefile.in: Rebuilt. + +Tue Feb 10 20:56:00 1998 Richard Henderson + + * alpha/ffi.c, alpha/osf.S: New files. + * Makefile.am: Alpha port. + +Tue Nov 18 14:12:07 1997 Anthony Green + + * mips/ffi.c (ffi_prep_cif_machdep): Initialize rstruct_flag + for n32. + +Tue Jun 3 17:18:20 1997 Anthony Green + + * ffitest.c (main): Added hack to get structure tests working + correctly. + +Sat May 10 19:06:42 1997 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Explicitly list all distributable + files in subdirs. + (VERSION, CC): Removed. + +Thu May 8 17:19:01 1997 Anthony Green + + * Makefile.am: Many changes for new automake and libtool. + * Makefile.in: Rebuilt. + +Fri Nov 22 06:57:56 1996 Anthony Green + + * ffitest.c (main): Fixed test case for non mips machines. + +Wed Nov 20 22:31:59 1996 Anthony Green + + * types.c: Added ffi_type_void declaration. + +Tue Oct 29 13:07:19 1996 Anthony Green + + * ffitest.c (main): Fixed character constants. + (main): Emit warning for structure test 3 failure on Sun. + + * Makefile.am (VPATH): Fixed VPATH def'n so automake won't + strip it out. + Moved distdir hack from libffi to automake. + (ffitest): Added missing -c for $(COMPILE) (change in automake). + * Makefile.in: Rebuilt. + +Tue Oct 15 13:08:20 1996 Anthony Green + + * Makefile.am: Added "make lint" production. + * Makefile.in: Rebuilt. + + * prep_cif.c (STACK_ARG_SIZE): Improved STACK_ARG_SIZE macro. + Clean up based on LCLint output. Added funny /*@...@*/ comments to + annotate source. + + * ffitest.c, debug.c: Cleaned up code. + +Mon Oct 14 12:26:56 1996 Anthony Green + + * ffitest.c: Changes based on interface changes. + + * prep_cif.c (ffi_prep_cif): Cleaned up interface based on + feedback from Jim Blandy. + +Fri Oct 11 15:53:18 1996 Anthony Green + + * ffitest.c: Reordered tests while porting to sparc. + Made changes to handle lame structure passing for sparc. + Removed calls to fflush(). + + * prep_cif.c (ffi_prep_cif): Added special case for sparc + aggregate type arguments. + +Thu Oct 10 09:56:51 1996 Anthony Green + + * ffitest.c (main): Added structure passing/returning tests. + + * prep_cif.c (ffi_prep_cif): Perform proper initialization + of structure return types if needed. + (initialize_aggregate): Bug fix + +Wed Oct 9 16:04:20 1996 Anthony Green + + * types.c: Added special definitions for x86 (double doesn't + need double word alignment). + + * ffitest.c: Added many tests + +Tue Oct 8 09:19:22 1996 Anthony Green + + * prep_cif.c (ffi_prep_cif): Fixed assertion. + + * debug.c (ffi_assert): Must return a non void now. + + * Makefile.am: Added test production. + * Makefile: Rebuilt. + + * ffitest.c (main): Created. + + * types.c: Created. Stripped common code out of */ffi.c. + + * prep_cif.c: Added missing stdlib.h include. + + * debug.c (ffi_type_test): Used "a" to eliminate compiler + warnings in non-debug builds. Included ffi_common.h. + +Mon Oct 7 15:36:42 1996 Anthony Green + + * Makefile.am: Added a rule for .s -> .o + This is required by the SGI compiler. + * Makefile: Rebuilt. + +Fri Oct 4 09:51:08 1996 Anthony Green + + * prep_cif.c (initialize_aggregate): Moved abi specification + to ffi_prep_cif(). + +Thu Oct 3 15:37:37 1996 Anthony Green + + * prep_cif.c (ffi_prep_cif): Changed values from void* to void**. + (initialize_aggregate): Fixed aggregate type initialization. + + * Makefile.am (EXTRA_DIST): Added support code for "make dist". + * Makefile.in: Regenerated. + +Wed Oct 2 11:41:57 1996 Anthony Green + + * debug.c, prep_cif: Created. + + * Makefile.am: Added debug.o and prep_cif.o to OBJ. + * Makefile.in: Regenerated. + + * Makefile.am (INCLUDES): Added missing -I../include + * Makefile.in: Regenerated. + +Tue Oct 1 17:11:51 1996 Anthony Green + + * error.c, Makefile.am: Created. + * Makefile.in: Generated. + +--- libffi/src/x86 -------------------------------------------------------- + +Sun Oct 4 16:27:17 1998 Anthony Green + + * sysv.S (retlongdouble): Fixed long long return value support. + * ffi.c (ffi_prep_cif_machdep): Ditto. + +Wed May 13 04:30:33 1998 Anthony Green + + * ffi.c (ffi_prep_cif_machdep): Fixed long double return value + support. + +Wed Apr 15 08:43:20 1998 Anthony Green + + * ffi.c (ffi_prep_args): small struct support was missing. + +Thu May 8 16:53:58 1997 Anthony Green + + * objects.mak: Removed. + +Mon Dec 2 15:12:58 1996 Tom Tromey + + * sysv.S: Use .balign, for a.out Linux boxes. + +Tue Oct 15 13:06:50 1996 Anthony Green + + * ffi.c: Clean up based on LCLint output. + Added funny /*@...@*/ comments to annotate source. + +Fri Oct 11 16:43:38 1996 Anthony Green + + * ffi.c (ffi_call): Added assertion for bad ABIs. + +Wed Oct 9 13:57:27 1996 Anthony Green + + * sysv.S (retdouble): Fixed double return problems. + + * ffi.c (ffi_call): Corrected fn arg definition. + (ffi_prep_cif_machdep): Fixed double return problems + +Tue Oct 8 12:12:49 1996 Anthony Green + + * ffi.c: Moved ffi_type definitions to types.c. + (ffi_prep_args): Fixed type promotion bug. + +Mon Oct 7 15:53:06 1996 Anthony Green + + * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' + +Fri Oct 4 09:54:53 1996 Anthony Green + + * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped + remaining args. + +Wed Oct 2 10:07:05 1996 Anthony Green + + * ffi.c, sysv.S, objects.mak: Created. + (ffi_prep_cif): cif->rvalue no longer initialized to NULL. + (ffi_prep_cif_machdep): Moved machine independent cif processing + to src/prep_cif.c. Introduced ffi_prep_cif_machdep(). + +--- libffi/src/mips ------------------------------------------------------- + +Tue Feb 17 17:18:07 1998 Anthony Green + + * o32.S: Fixed typo in comment. + + * ffi.c (ffi_prep_cif_machdep): Fixed argument processing. + +Thu May 8 16:53:58 1997 Anthony Green + + * o32.s, n32.s: Wrappers for SGI tool support. + + * objects.mak: Removed. + +Tue Oct 29 14:37:45 1996 Anthony Green + + * ffi.c (ffi_prep_args): Changed int z to size_t z. + +Tue Oct 15 13:17:25 1996 Anthony Green + + * n32.S: Fixed bad stack munging. + + * ffi.c: Moved prototypes for ffi_call_?32() to here from + ffi_mips.h because extended_cif is not defined in ffi_mips.h. + +Mon Oct 14 12:42:02 1996 Anthony Green + + * ffi.c: Interface changes based on feedback from Jim Blandy. + +Thu Oct 10 11:22:16 1996 Anthony Green + + * n32.S, ffi.c: Lots of changes to support passing and + returning structures with the n32 calling convention. + + * n32.S: Fixed fn pointer bug. + + * ffi.c (ffi_prep_cif_machdep): Fix for o32 structure + return values. + (ffi_prep_args): Fixed n32 structure passing when structures + partially fit in registers. + +Wed Oct 9 13:49:25 1996 Anthony Green + + * objects.mak: Added n32.o. + + * n32.S: Created. + + * ffi.c (ffi_prep_args): Added magic to support proper + n32 processing. + +Tue Oct 8 10:37:35 1996 Anthony Green + + * ffi.c: Moved ffi_type definitions to types.c. + (ffi_prep_args): Fixed type promotion bug. + + * o32.S: This code is only built for o32 compiles. + A lot of the #define cruft has moved to ffi_mips.h. + + * ffi.c (ffi_prep_cif_machdep): Fixed arg flags. Second arg + is only processed if the first is either a float or double. + +Mon Oct 7 15:33:59 1996 Anthony Green + + * o32.S: Modified to compile under each of o32, n32 and n64. + + * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' + +Fri Oct 4 09:53:25 1996 Anthony Green + + * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped + remaining args. + +Wed Oct 2 17:41:22 1996 Anthony Green + + * o32.S: Removed crufty definitions. + +Wed Oct 2 12:53:42 1996 Anthony Green + + * ffi.c (ffi_prep_cif): cif->rvalue no longer initialized to NULL. + (ffi_prep_cif_machdep): Moved all machine independent cif processing + to src/prep_cif.c. Introduced ffi_prep_cif_machdep. Return types + of FFI_TYPE_STRUCT are no different than FFI_TYPE_INT. + +Tue Oct 1 17:11:02 1996 Anthony Green + + * ffi.c, o32.S, object.mak: Created + +--- libffi/src/sparc ------------------------------------------------------ + +Tue Feb 24 16:33:18 1998 Anthony Green + + * ffi.c (ffi_prep_args): Added long double support. + +Thu May 8 16:53:58 1997 Anthony Green + + * objects.mak: Removed. + +Thu May 1 16:07:56 1997 Anthony Green + + * v8.S: Fixed minor portability problem reported by + Russ McManus . + +Tue Nov 26 14:12:43 1996 Anthony Green + + * v8.S: Used STACKFRAME define elsewhere. + + * ffi.c (ffi_prep_args): Zero out space when USING_PURIFY + is set. + (ffi_prep_cif_machdep): Allocate the correct stack frame + space for functions with < 6 args. + +Tue Oct 29 15:08:55 1996 Anthony Green + + * ffi.c (ffi_prep_args): int z is now size_t z. + +Mon Oct 14 13:31:24 1996 Anthony Green + + * v8.S (ffi_call_V8): Gordon rewrites this again. It looks + great now. + + * ffi.c (ffi_call): The comment about hijacked registers + is no longer valid after gordoni hacked v8.S. + + * v8.S (ffi_call_V8): Rewrote with gordoni. Much simpler. + + * v8.S, ffi.c: ffi_call() had changed to accept more than + two args, so v8.S had to change (because it hijacks incoming + arg registers). + + * ffi.c: Interface changes based on feedback from Jim Blandy. + +Thu Oct 10 17:48:16 1996 Anthony Green + + * ffi.c, v8.S, objects.mak: Created. + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE new file mode 100644 index 0000000000..a66fab4f25 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE @@ -0,0 +1,21 @@ +libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. +See source files for details. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE-BUILDTOOLS b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE-BUILDTOOLS new file mode 100644 index 0000000000..869c703853 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/LICENSE-BUILDTOOLS @@ -0,0 +1,352 @@ +The libffi source distribution contains certain code that is not part +of libffi, and is only used as tooling to assist with the building and +testing of libffi. This includes the msvcc.sh script used to wrap the +Microsoft compiler with GNU compatible command-line options, and the +libffi test code distributed in the testsuite/libffi.bhaible +directory. This code is distributed with libffi for the purpose of +convenience only, and libffi is in no way derived from this code. + +msvcc.sh an testsuite/libffi.bhaible are both distributed under the +terms of the GNU GPL version 2, as below. + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/Makefile.am b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/Makefile.am new file mode 100644 index 0000000000..27a11b26e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/Makefile.am @@ -0,0 +1,166 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS = foreign subdir-objects + +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = include testsuite man +if BUILD_DOCS +## This hack is needed because it doesn't seem possible to make a +## conditional info_TEXINFOS in Automake. At least Automake 1.14 +## either gives errors -- if this attempted in the most +## straightforward way -- or simply unconditionally tries to build the +## info file. +SUBDIRS += doc +endif + +EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj \ + ChangeLog.libffi ChangeLog.libffi-3.1 \ + m4/libtool.m4 m4/lt~obsolete.m4 \ + m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ + m4/ltversion.m4 src/debug.c msvcc.sh \ + generate-darwin-source-and-headers.py \ + libffi.xcodeproj/project.pbxproj \ + libtool-ldflags libtool-version configure.host README.md \ + libffi.map.in + +# local.exp is generated by configure +DISTCLEANFILES = local.exp + +# Subdir rules rely on $(FLAGS_TO_PASS) +FLAGS_TO_PASS = $(AM_MAKEFLAGS) + +MAKEOVERRIDES= + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libffi.pc + +toolexeclib_LTLIBRARIES = libffi.la +noinst_LTLIBRARIES = libffi_convenience.la + +libffi_la_SOURCES = src/prep_cif.c src/types.c \ + src/raw_api.c src/java_raw_api.c src/closures.c + +if FFI_DEBUG +libffi_la_SOURCES += src/debug.c +endif + +noinst_HEADERS = \ + src/aarch64/ffitarget.h src/aarch64/internal.h \ + src/alpha/ffitarget.h src/alpha/internal.h \ + src/arc/ffitarget.h \ + src/arm/ffitarget.h src/arm/internal.h \ + src/avr32/ffitarget.h \ + src/bfin/ffitarget.h \ + src/cris/ffitarget.h \ + src/frv/ffitarget.h \ + src/ia64/ffitarget.h src/ia64/ia64_flags.h \ + src/m32r/ffitarget.h \ + src/m68k/ffitarget.h \ + src/m88k/ffitarget.h \ + src/metag/ffitarget.h \ + src/microblaze/ffitarget.h \ + src/mips/ffitarget.h \ + src/moxie/ffitarget.h \ + src/nios2/ffitarget.h \ + src/or1k/ffitarget.h \ + src/pa/ffitarget.h \ + src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \ + src/riscv/ffitarget.h \ + src/s390/ffitarget.h src/s390/internal.h \ + src/sh/ffitarget.h \ + src/sh64/ffitarget.h \ + src/sparc/ffitarget.h src/sparc/internal.h \ + src/tile/ffitarget.h \ + src/vax/ffitarget.h \ + src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h src/x86/asmnames.h \ + src/xtensa/ffitarget.h \ + src/dlmalloc.c + +EXTRA_libffi_la_SOURCES = \ + src/aarch64/ffi.c src/aarch64/sysv.S \ + src/alpha/ffi.c src/alpha/osf.S \ + src/arc/ffi.c src/arc/arcompact.S \ + src/arm/ffi.c src/arm/sysv.S \ + src/avr32/ffi.c src/avr32/sysv.S \ + src/bfin/ffi.c src/bfin/sysv.S \ + src/cris/ffi.c src/cris/sysv.S \ + src/frv/ffi.c src/frv/eabi.S \ + src/ia64/ffi.c src/ia64/unix.S \ + src/m32r/ffi.c src/m32r/sysv.S \ + src/m68k/ffi.c src/m68k/sysv.S \ + src/m88k/ffi.c src/m88k/obsd.S \ + src/metag/ffi.c src/metag/sysv.S \ + src/microblaze/ffi.c src/microblaze/sysv.S \ + src/mips/ffi.c src/mips/o32.S src/mips/n32.S \ + src/moxie/ffi.c src/moxie/eabi.S \ + src/nios2/ffi.c src/nios2/sysv.S \ + src/or1k/ffi.c src/or1k/sysv.S \ + src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ + src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c \ + src/powerpc/sysv.S src/powerpc/linux64.S \ + src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ + src/powerpc/aix.S src/powerpc/darwin.S src/powerpc/aix_closure.S \ + src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ + src/riscv/ffi.c src/riscv/sysv.S \ + src/s390/ffi.c src/s390/sysv.S \ + src/sh/ffi.c src/sh/sysv.S \ + src/sh64/ffi.c src/sh64/sysv.S \ + src/sparc/ffi.c src/sparc/ffi64.c src/sparc/v8.S src/sparc/v9.S \ + src/tile/ffi.c src/tile/tile.S \ + src/vax/ffi.c src/vax/elfbsd.S \ + src/x86/ffi.c src/x86/sysv.S \ + src/x86/ffiw64.c src/x86/win64.S \ + src/x86/ffi64.c src/x86/unix64.S \ + src/xtensa/ffi.c src/xtensa/sysv.S + +TARGET_OBJ = @TARGET_OBJ@ +libffi_la_LIBADD = $(TARGET_OBJ) + +libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) +EXTRA_libffi_convenience_la_SOURCES = $(EXTRA_libffi_la_SOURCES) +libffi_convenience_la_LIBADD = $(libffi_la_LIBADD) +libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES) +nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) + +AM_CFLAGS = +if FFI_DEBUG +# Build debug. Define FFI_DEBUG on the commandline so that, when building with +# MSVC, it can link against the debug CRT. +AM_CFLAGS += -DFFI_DEBUG +endif + +if LIBFFI_BUILD_VERSIONED_SHLIB +if LIBFFI_BUILD_VERSIONED_SHLIB_GNU +libffi_version_script = -Wl,--version-script,libffi.map +libffi_version_dep = libffi.map +endif +if LIBFFI_BUILD_VERSIONED_SHLIB_SUN +libffi_version_script = -Wl,-M,libffi.map-sun +libffi_version_dep = libffi.map-sun +libffi.map-sun : libffi.map $(top_srcdir)/../contrib/make_sunver.pl \ + $(libffi_la_OBJECTS) $(libffi_la_LIBADD) + perl $(top_srcdir)/../contrib/make_sunver.pl libffi.map \ + `echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \ + sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \ + > $@ || (rm -f $@ ; exit 1) +endif +else +libffi_version_script = +libffi_version_dep = +endif +libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version` + +libffi.map: $(top_srcdir)/libffi.map.in + $(COMPILE) -D$(TARGET) -E -x assembler-with-cpp -o $@ $< + +libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS) +libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) + +AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src +AM_CCASFLAGS = $(AM_CPPFLAGS) + +dist-hook: + if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/README.md b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/README.md new file mode 100644 index 0000000000..3caf2fa1a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/README.md @@ -0,0 +1,461 @@ +Status +====== + +[![Build Status](https://travis-ci.org/libffi/libffi.svg?branch=master)](https://travis-ci.org/libffi/libffi) +[![Build status](https://ci.appveyor.com/api/projects/status/8lko9vagbx4w2kxq?svg=true)](https://ci.appveyor.com/project/atgreen/libffi) + +libffi-3.3-rc0 was released on April 2, 2018. Check the libffi web +page for updates: . + + +What is libffi? +=============== + +Compilers for high level languages generate code that follow certain +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the "calling +convention". The "calling convention" is essentially a set of +assumptions made by the compiler about where function arguments will +be found on entry to a function. A "calling convention" also specifies +where the return value for a function is found. + +Some programs may not know at the time of compilation what arguments +are to be passed to a function. For instance, an interpreter may be +told at run-time about the number and types of arguments used to call +a given function. Libffi can be used in such programs to provide a +bridge from the interpreter program to compiled code. + +The libffi library provides a portable, high level programming +interface to various calling conventions. This allows a programmer to +call any function specified by a call interface description at run +time. + +FFI stands for Foreign Function Interface. A foreign function +interface is the popular name for the interface that allows code +written in one language to call code written in another language. The +libffi library really only provides the lowest, machine dependent +layer of a fully featured foreign function interface. A layer must +exist above libffi that handles type conversions for values passed +between the two languages. + + +Supported Platforms +=================== + +Libffi has been ported to many different platforms. + +At the time of release, the following basic configurations have been +tested: + +| Architecture | Operating System | Compiler | +| --------------- | ---------------- | ----------------------- | +| AArch64 (ARM64) | iOS | Clang | +| AArch64 | Linux | GCC | +| Alpha | Linux | GCC | +| Alpha | Tru64 | GCC | +| ARC | Linux | GCC | +| ARM | Linux | GCC | +| ARM | iOS | GCC | +| AVR32 | Linux | GCC | +| Blackfin | uClinux | GCC | +| HPPA | HPUX | GCC | +| IA-64 | Linux | GCC | +| M68K | FreeMiNT | GCC | +| M68K | Linux | GCC | +| M68K | RTEMS | GCC | +| M88K | OpenBSD/mvme88k | GCC | +| Meta | Linux | GCC | +| MicroBlaze | Linux | GCC | +| MIPS | IRIX | GCC | +| MIPS | Linux | GCC | +| MIPS | RTEMS | GCC | +| MIPS64 | Linux | GCC | +| Moxie | Bare metal | GCC | +| Nios II | Linux | GCC | +| OpenRISC | Linux | GCC | +| PowerPC 32-bit | AIX | IBM XL C | +| PowerPC 64-bit | AIX | IBM XL C | +| PowerPC | AMIGA | GCC | +| PowerPC | Linux | GCC | +| PowerPC | Mac OSX | GCC | +| PowerPC | FreeBSD | GCC | +| PowerPC 64-bit | FreeBSD | GCC | +| PowerPC 64-bit | Linux ELFv1 | GCC | +| PowerPC 64-bit | Linux ELFv2 | GCC | +| RISC-V 32-bit | Linux | GCC | +| RISC-V 64-bit | Linux | GCC | +| S390 | Linux | GCC | +| S390X | Linux | GCC | +| SPARC | Linux | GCC | +| SPARC | Solaris | GCC | +| SPARC | Solaris | Oracle Solaris Studio C | +| SPARC64 | Linux | GCC | +| SPARC64 | FreeBSD | GCC | +| SPARC64 | Solaris | Oracle Solaris Studio C | +| TILE-Gx/TILEPro | Linux | GCC | +| VAX | OpenBSD/vax | GCC | +| X86 | FreeBSD | GCC | +| X86 | GNU HURD | GCC | +| X86 | Interix | GCC | +| X86 | kFreeBSD | GCC | +| X86 | Linux | GCC | +| X86 | Mac OSX | GCC | +| X86 | OpenBSD | GCC | +| X86 | OS/2 | GCC | +| X86 | Solaris | GCC | +| X86 | Solaris | Oracle Solaris Studio C | +| X86 | Windows/Cygwin | GCC | +| X86 | Windows/MingW | GCC | +| X86-64 | FreeBSD | GCC | +| X86-64 | Linux | GCC | +| X86-64 | Linux/x32 | GCC | +| X86-64 | OpenBSD | GCC | +| X86-64 | Solaris | Oracle Solaris Studio C | +| X86-64 | Windows/Cygwin | GCC | +| X86-64 | Windows/MingW | GCC | +| X86-64 | Mac OSX | GCC | +| Xtensa | Linux | GCC | + +Please send additional platform test results to +libffi-discuss@sourceware.org. + +Installing libffi +================= + +First you must configure the distribution for your particular +system. Go to the directory you wish to build libffi in and run the +"configure" program found in the root directory of the libffi source +distribution. Note that building libffi requires a C99 compatible +compiler. + +If you're building libffi directly from git hosted sources, configure +won't exist yet; run ./autogen.sh first. This will require that you +install autoconf, automake and libtool. + +You may want to tell configure where to install the libffi library and +header files. To do that, use the ``--prefix`` configure switch. Libffi +will install under /usr/local by default. + +If you want to enable extra run-time debugging checks use the the +``--enable-debug`` configure switch. This is useful when your program dies +mysteriously while using libffi. + +Another useful configure switch is ``--enable-purify-safety``. Using this +will add some extra code which will suppress certain warnings when you +are using Purify with libffi. Only use this switch when using +Purify, as it will slow down the library. + +If you don't want to build documentation, use the ``--disable-docs`` +configure switch. + +It's also possible to build libffi on Windows platforms with +Microsoft's Visual C++ compiler. In this case, use the msvcc.sh +wrapper script during configuration like so: + + path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP" + +For 64-bit Windows builds, use ``CC="path/to/msvcc.sh -m64"`` and +``CXX="path/to/msvcc.sh -m64"``. You may also need to specify +``--build`` appropriately. + +It is also possible to build libffi on Windows platforms with the LLVM +project's clang-cl compiler, like below: + + path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" + +When building with MSVC under a MingW environment, you may need to +remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath' +command. ('cygpath' is not present in MingW, and is not required when +using MingW-style paths.) + +SPARC Solaris builds require the use of the GNU assembler and linker. +Point ``AS`` and ``LD`` environment variables at those tool prior to +configuration. + +For iOS builds, the ``libffi.xcodeproj`` Xcode project is available. + +Configure has many other options. Use ``configure --help`` to see them all. + +Once configure has finished, type "make". Note that you must be using +GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make . + +To ensure that libffi is working as advertised, type "make check". +This will require that you have DejaGNU installed. + +To install the library and header files, type ``make install``. + + +History +======= + +See the git log for details at http://github.com/libffi/libffi. + + 3.3 TBD + Add RISC-V support. + New API in support of GO closures. + Default to Microsoft's 64 bit long double ABI with Visual C++. + GNU compiler uses 80 bits (128 in memory) FFI_GNUW64 ABI. + Many new tests cases and bug fixes. + + 3.2.1 Nov-12-14 + Build fix for non-iOS AArch64 targets. + + 3.2 Nov-11-14 + Add C99 Complex Type support (currently only supported on + s390). + Add support for PASCAL and REGISTER calling conventions on x86 + Windows/Linux. + Add OpenRISC and Cygwin-64 support. + Bug fixes. + + 3.1 May-19-14 + Add AArch64 (ARM64) iOS support. + Add Nios II support. + Add m88k and DEC VAX support. + Add support for stdcall, thiscall, and fastcall on non-Windows + 32-bit x86 targets such as Linux. + Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi + fixes. + Make the testsuite more robust: eliminate several spurious + failures, and respect the $CC and $CXX environment variables. + Archive off the manually maintained ChangeLog in favor of git + log. + + 3.0.13 Mar-17-13 + Add Meta support. + Add missing Moxie bits. + Fix stack alignment bug on 32-bit x86. + Build fix for m68000 targets. + Build fix for soft-float Power targets. + Fix the install dir location for some platforms when building + with GCC (OS X, Solaris). + Fix Cygwin regression. + + 3.0.12 Feb-11-13 + Add Moxie support. + Add AArch64 support. + Add Blackfin support. + Add TILE-Gx/TILEPro support. + Add MicroBlaze support. + Add Xtensa support. + Add support for PaX enabled kernels with MPROTECT. + Add support for native vendor compilers on + Solaris and AIX. + Work around LLVM/GCC interoperability issue on x86_64. + + 3.0.11 Apr-11-12 + Lots of build fixes. + Add support for variadic functions (ffi_prep_cif_var). + Add Linux/x32 support. + Add thiscall, fastcall and MSVC cdecl support on Windows. + Add Amiga and newer MacOS support. + Add m68k FreeMiNT support. + Integration with iOS' xcode build tools. + Fix Octeon and MC68881 support. + Fix code pessimizations. + + 3.0.10 Aug-23-11 + Add support for Apple's iOS. + Add support for ARM VFP ABI. + Add RTEMS support for MIPS and M68K. + Fix instruction cache clearing problems on + ARM and SPARC. + Fix the N64 build on mips-sgi-irix6.5. + Enable builds with Microsoft's compiler. + Enable x86 builds with Oracle's Solaris compiler. + Fix support for calling code compiled with Oracle's Sparc + Solaris compiler. + Testsuite fixes for Tru64 Unix. + Additional platform support. + + 3.0.9 Dec-31-09 + Add AVR32 and win64 ports. Add ARM softfp support. + Many fixes for AIX, Solaris, HP-UX, *BSD. + Several PowerPC and x86-64 bug fixes. + Build DLL for windows. + + 3.0.8 Dec-19-08 + Add *BSD, BeOS, and PA-Linux support. + + 3.0.7 Nov-11-08 + Fix for ppc FreeBSD. + (thanks to Andreas Tobler) + + 3.0.6 Jul-17-08 + Fix for closures on sh. + Mark the sh/sh64 stack as non-executable. + (both thanks to Kaz Kojima) + + 3.0.5 Apr-3-08 + Fix libffi.pc file. + Fix #define ARM for IcedTea users. + Fix x86 closure bug. + + 3.0.4 Feb-24-08 + Fix x86 OpenBSD configury. + + 3.0.3 Feb-22-08 + Enable x86 OpenBSD thanks to Thomas Heller, and + x86-64 FreeBSD thanks to Björn König and Andreas Tobler. + Clean up test instruction in README. + + 3.0.2 Feb-21-08 + Improved x86 FreeBSD support. + Thanks to Björn König. + + 3.0.1 Feb-15-08 + Fix instruction cache flushing bug on MIPS. + Thanks to David Daney. + + 3.0.0 Feb-15-08 + Many changes, mostly thanks to the GCC project. + Cygnus Solutions is now Red Hat. + + [10 years go by...] + + 1.20 Oct-5-98 + Raffaele Sena produces ARM port. + + 1.19 Oct-5-98 + Fixed x86 long double and long long return support. + m68k bug fixes from Andreas Schwab. + Patch for DU assembler compatibility for the Alpha from Richard + Henderson. + + 1.18 Apr-17-98 + Bug fixes and MIPS configuration changes. + + 1.17 Feb-24-98 + Bug fixes and m68k port from Andreas Schwab. PowerPC port from + Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. + + 1.16 Feb-11-98 + Richard Henderson produces Alpha port. + + 1.15 Dec-4-97 + Fixed an n32 ABI bug. New libtool, auto* support. + + 1.14 May-13-97 + libtool is now used to generate shared and static libraries. + Fixed a minor portability problem reported by Russ McManus + . + + 1.13 Dec-2-96 + Added --enable-purify-safety to keep Purify from complaining + about certain low level code. + Sparc fix for calling functions with < 6 args. + Linux x86 a.out fix. + + 1.12 Nov-22-96 + Added missing ffi_type_void, needed for supporting void return + types. Fixed test case for non MIPS machines. Cygnus Support + is now Cygnus Solutions. + + 1.11 Oct-30-96 + Added notes about GNU make. + + 1.10 Oct-29-96 + Added configuration fix for non GNU compilers. + + 1.09 Oct-29-96 + Added --enable-debug configure switch. Clean-ups based on LCLint + feedback. ffi_mips.h is always installed. Many configuration + fixes. Fixed ffitest.c for sparc builds. + + 1.08 Oct-15-96 + Fixed n32 problem. Many clean-ups. + + 1.07 Oct-14-96 + Gordon Irlam rewrites v8.S again. Bug fixes. + + 1.06 Oct-14-96 + Gordon Irlam improved the sparc port. + + 1.05 Oct-14-96 + Interface changes based on feedback. + + 1.04 Oct-11-96 + Sparc port complete (modulo struct passing bug). + + 1.03 Oct-10-96 + Passing struct args, and returning struct values works for + all architectures/calling conventions. Expanded tests. + + 1.02 Oct-9-96 + Added SGI n32 support. Fixed bugs in both o32 and Linux support. + Added "make test". + + 1.01 Oct-8-96 + Fixed float passing bug in mips version. Restructured some + of the code. Builds cleanly with SGI tools. + + 1.00 Oct-7-96 + First release. No public announcement. + +Authors & Credits +================= + +libffi was originally written by Anthony Green . + +The developers of the GNU Compiler Collection project have made +innumerable valuable contributions. See the ChangeLog file for +details. + +Some of the ideas behind libffi were inspired by Gianni Mariani's free +gencall library for Silicon Graphics machines. + +The closure mechanism was designed and implemented by Kresten Krab +Thorup. + +Major processor architecture ports were contributed by the following +developers: + + aarch64 Marcus Shawcroft, James Greenhalgh + alpha Richard Henderson + arm Raffaele Sena + blackfin Alexandre Keunecke I. de Mendonca + cris Simon Posnjak, Hans-Peter Nilsson + frv Anthony Green + ia64 Hans Boehm + m32r Kazuhiro Inaoka + m68k Andreas Schwab + m88k Miod Vallat + microblaze Nathan Rossi + mips Anthony Green, Casey Marshall + mips64 David Daney + moxie Anthony Green + nios ii Sandra Loosemore + openrisc Sebastian Macke + pa Randolph Chung, Dave Anglin, Andreas Tobler + powerpc Geoffrey Keating, Andreas Tobler, + David Edelsohn, John Hornkvist + powerpc64 Jakub Jelinek + s390 Gerhard Tonn, Ulrich Weigand + sh Kaz Kojima + sh64 Kaz Kojima + sparc Anthony Green, Gordon Irlam + tile-gx/tilepro Walter Lee + vax Miod Vallat + x86 Anthony Green, Jon Beniston + x86-64 Bo Thorsen + xtensa Chris Zankel + +Jesper Skov and Andrew Haley both did more than their fair share of +stepping through the code and tracking down bugs. + +Thanks also to Tom Tromey for bug fixes, documentation and +configuration help. + +Thanks to Jim Blandy, who provided some useful feedback on the libffi +interface. + +Andreas Tobler has done a tremendous amount of work on the testsuite. + +Alex Oliva solved the executable page problem for SElinux. + +The list above is almost certainly incomplete and inaccurate. I'm +happy to make corrections or additions upon request. + +If you have a problem, or have found a bug, please send a note to the +author at green@moxielogic.com, or the project mailing list at +libffi-discuss@sourceware.org. diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/acinclude.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/acinclude.m4 new file mode 100644 index 0000000000..1a70efb010 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/acinclude.m4 @@ -0,0 +1,479 @@ +# mmap(2) blacklisting. Some platforms provide the mmap library routine +# but don't support all of the features we need from it. +AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], +[ +AC_CHECK_HEADER([sys/mman.h], + [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) +AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) +if test "$libffi_header_sys_mman_h" != yes \ + || test "$libffi_func_mmap" != yes; then + ac_cv_func_mmap_file=no + ac_cv_func_mmap_dev_zero=no + ac_cv_func_mmap_anon=no +else + AC_CACHE_CHECK([whether read-only mmap of a plain file works], + ac_cv_func_mmap_file, + [# Add a system to this blacklist if + # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a + # memory area containing the same data that you'd get if you applied + # read() to the same fd. The only system known to have a problem here + # is VMS, where text files have record structure. + case "$host_os" in + vms* | ultrix*) + ac_cv_func_mmap_file=no ;; + *) + ac_cv_func_mmap_file=yes;; + esac]) + AC_CACHE_CHECK([whether mmap from /dev/zero works], + ac_cv_func_mmap_dev_zero, + [# Add a system to this blacklist if it has mmap() but /dev/zero + # does not exist, or if mmapping /dev/zero does not give anonymous + # zeroed pages with both the following properties: + # 1. If you map N consecutive pages in with one call, and then + # unmap any subset of those pages, the pages that were not + # explicitly unmapped remain accessible. + # 2. If you map two adjacent blocks of memory and then unmap them + # both at once, they must both go away. + # Systems known to be in this category are Windows (all variants), + # VMS, and Darwin. + case "$host_os" in + vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) + ac_cv_func_mmap_dev_zero=no ;; + *) + ac_cv_func_mmap_dev_zero=yes;; + esac]) + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. + AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, + [AC_TRY_COMPILE( +[#include +#include +#include + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +], +[int n = MAP_ANONYMOUS;], + ac_cv_decl_map_anon=yes, + ac_cv_decl_map_anon=no)]) + + if test $ac_cv_decl_map_anon = no; then + ac_cv_func_mmap_anon=no + else + AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], + ac_cv_func_mmap_anon, + [# Add a system to this blacklist if it has mmap() and MAP_ANON or + # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + # doesn't give anonymous zeroed pages with the same properties listed + # above for use of /dev/zero. + # Systems known to be in this category are Windows, VMS, and SCO Unix. + case "$host_os" in + vms* | cygwin* | pe | mingw* | sco* | udk* ) + ac_cv_func_mmap_anon=no ;; + *) + ac_cv_func_mmap_anon=yes;; + esac]) + fi +fi + +if test $ac_cv_func_mmap_file = yes; then + AC_DEFINE(HAVE_MMAP_FILE, 1, + [Define if read-only mmap of a plain file works.]) +fi +if test $ac_cv_func_mmap_dev_zero = yes; then + AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, + [Define if mmap of /dev/zero works.]) +fi +if test $ac_cv_func_mmap_anon = yes; then + AC_DEFINE(HAVE_MMAP_ANON, 1, + [Define if mmap with MAP_ANON(YMOUS) works.]) +fi +]) + +dnl ---------------------------------------------------------------------- +dnl This whole bit snagged from libstdc++-v3, via libatomic. + +dnl +dnl LIBFFI_ENABLE +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) +dnl +dnl See docs/html/17_intro/configury.html#enable for documentation. +dnl +m4_define([LIBFFI_ENABLE],[dnl +m4_define([_g_switch],[--enable-$1])dnl +m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl + AC_ARG_ENABLE($1,_g_help, + m4_bmatch([$5], + [^permit ], + [[ + case "$enableval" in + m4_bpatsubst([$5],[permit ])) ;; + *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;; + dnl Idea for future: generate a URL pointing to + dnl "onlinedocs/configopts.html#whatever" + esac + ]], + [^$], + [[ + case "$enableval" in + yes|no) ;; + *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;; + esac + ]], + [[$5]]), + [enable_]m4_bpatsubst([$1],-,_)[=][$2]) +m4_undefine([_g_switch])dnl +m4_undefine([_g_help])dnl +]) + +dnl +dnl If GNU ld is in use, check to see if tricky linker opts can be used. If +dnl the native linker is in use, all variables will be defined to something +dnl safe (like an empty string). +dnl +dnl Defines: +dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible +dnl OPT_LDFLAGS='-Wl,-O1' if possible +dnl LD (as a side effect of testing) +dnl Sets: +dnl with_gnu_ld +dnl libat_ld_is_gold (possibly) +dnl libat_gnu_ld_version (possibly) +dnl +dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will +dnl set libat_gnu_ld_version to 12345. Zeros cause problems. +dnl +AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ + # If we're not using GNU ld, then there's no point in even trying these + # tests. Check for that first. We should have already tested for gld + # by now (in libtool), but require it now just to be safe... + test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' + test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' + AC_REQUIRE([AC_PROG_LD]) + AC_REQUIRE([AC_PROG_AWK]) + + # The name set by libtool depends on the version of libtool. Shame on us + # for depending on an impl detail, but c'est la vie. Older versions used + # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on + # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually + # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't + # set (hence we're using an older libtool), then set it. + if test x${with_gnu_ld+set} != xset; then + if test x${ac_cv_prog_gnu_ld+set} != xset; then + # We got through "ac_require(ac_prog_ld)" and still not set? Huh? + with_gnu_ld=no + else + with_gnu_ld=$ac_cv_prog_gnu_ld + fi + fi + + # Start by getting the version number. I think the libtool test already + # does some of this, but throws away the result. + libat_ld_is_gold=no + if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then + libat_ld_is_gold=yes + fi + changequote(,) + ldver=`$LD --version 2>/dev/null | + sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` + changequote([,]) + libat_gnu_ld_version=`echo $ldver | \ + $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` + + # Set --gc-sections. + if test "$with_gnu_ld" = "notbroken"; then + # GNU ld it is! Joy and bunny rabbits! + + # All these tests are for C++; save the language and the compiler flags. + # Need to do this so that g++ won't try to link in libstdc++ + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS='-x c++ -Wl,--gc-sections' + + # Check for -Wl,--gc-sections + # XXX This test is broken at the moment, as symbols required for linking + # are now in libsupc++ (not built yet). In addition, this test has + # cored on solaris in the past. In addition, --gc-sections doesn't + # really work at the moment (keeps on discarding used sections, first + # .eh_frame and now some of the glibc sections for iconv). + # Bzzzzt. Thanks for playing, maybe next time. + AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) + AC_TRY_RUN([ + int main(void) + { + try { throw 1; } + catch (...) { }; + return 0; + } + ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + else + # this is the suspicious part + CFLAGS='' + fi + if test "$ac_sectionLDflags" = "yes"; then + SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" + fi + AC_MSG_RESULT($ac_sectionLDflags) + fi + + # Set linker optimization flags. + if test x"$with_gnu_ld" = x"yes"; then + OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" + fi + + AC_SUBST(SECTION_LDFLAGS) + AC_SUBST(OPT_LDFLAGS) +]) + + +dnl +dnl If GNU ld is in use, check to see if tricky linker opts can be used. If +dnl the native linker is in use, all variables will be defined to something +dnl safe (like an empty string). +dnl +dnl Defines: +dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible +dnl OPT_LDFLAGS='-Wl,-O1' if possible +dnl LD (as a side effect of testing) +dnl Sets: +dnl with_gnu_ld +dnl libat_ld_is_gold (possibly) +dnl libat_gnu_ld_version (possibly) +dnl +dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will +dnl set libat_gnu_ld_version to 12345. Zeros cause problems. +dnl +AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ + # If we're not using GNU ld, then there's no point in even trying these + # tests. Check for that first. We should have already tested for gld + # by now (in libtool), but require it now just to be safe... + test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' + test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' + AC_REQUIRE([AC_PROG_LD]) + AC_REQUIRE([AC_PROG_AWK]) + + # The name set by libtool depends on the version of libtool. Shame on us + # for depending on an impl detail, but c'est la vie. Older versions used + # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on + # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually + # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't + # set (hence we're using an older libtool), then set it. + if test x${with_gnu_ld+set} != xset; then + if test x${ac_cv_prog_gnu_ld+set} != xset; then + # We got through "ac_require(ac_prog_ld)" and still not set? Huh? + with_gnu_ld=no + else + with_gnu_ld=$ac_cv_prog_gnu_ld + fi + fi + + # Start by getting the version number. I think the libtool test already + # does some of this, but throws away the result. + libat_ld_is_gold=no + if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then + libat_ld_is_gold=yes + fi + libat_ld_is_lld=no + if $LD --version 2>/dev/null | grep 'LLD '> /dev/null 2>&1; then + libat_ld_is_lld=yes + fi + changequote(,) + ldver=`$LD --version 2>/dev/null | + sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` + changequote([,]) + libat_gnu_ld_version=`echo $ldver | \ + $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` + + # Set --gc-sections. + if test "$with_gnu_ld" = "notbroken"; then + # GNU ld it is! Joy and bunny rabbits! + + # All these tests are for C++; save the language and the compiler flags. + # Need to do this so that g++ won't try to link in libstdc++ + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS='-x c++ -Wl,--gc-sections' + + # Check for -Wl,--gc-sections + # XXX This test is broken at the moment, as symbols required for linking + # are now in libsupc++ (not built yet). In addition, this test has + # cored on solaris in the past. In addition, --gc-sections doesn't + # really work at the moment (keeps on discarding used sections, first + # .eh_frame and now some of the glibc sections for iconv). + # Bzzzzt. Thanks for playing, maybe next time. + AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) + AC_TRY_RUN([ + int main(void) + { + try { throw 1; } + catch (...) { }; + return 0; + } + ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + else + # this is the suspicious part + CFLAGS='' + fi + if test "$ac_sectionLDflags" = "yes"; then + SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" + fi + AC_MSG_RESULT($ac_sectionLDflags) + fi + + # Set linker optimization flags. + if test x"$with_gnu_ld" = x"yes"; then + OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" + fi + + AC_SUBST(SECTION_LDFLAGS) + AC_SUBST(OPT_LDFLAGS) +]) + + +dnl +dnl Add version tags to symbols in shared library (or not), additionally +dnl marking other symbols as private/local (or not). +dnl +dnl --enable-symvers=style adds a version script to the linker call when +dnl creating the shared library. The choice of version script is +dnl controlled by 'style'. +dnl --disable-symvers does not. +dnl + Usage: LIBFFI_ENABLE_SYMVERS[(DEFAULT)] +dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to +dnl choose a default style based on linker characteristics. Passing +dnl 'no' disables versioning. +dnl +AC_DEFUN([LIBFFI_ENABLE_SYMVERS], [ + +LIBFFI_ENABLE(symvers,yes,[=STYLE], + [enables symbol versioning of the shared library], + [permit yes|no|gnu*|sun]) + +# If we never went through the LIBFFI_CHECK_LINKER_FEATURES macro, then we +# don't know enough about $LD to do tricks... +AC_REQUIRE([LIBFFI_CHECK_LINKER_FEATURES]) + +# Turn a 'yes' into a suitable default. +if test x$enable_symvers = xyes ; then + # FIXME The following test is too strict, in theory. + if test $enable_shared = no || test "x$LD" = x; then + enable_symvers=no + else + if test $with_gnu_ld = yes ; then + enable_symvers=gnu + else + case ${target_os} in + # Sun symbol versioning exists since Solaris 2.5. + solaris2.[[5-9]]* | solaris2.1[[0-9]]*) + enable_symvers=sun ;; + *) + enable_symvers=no ;; + esac + fi + fi +fi + +# Check if 'sun' was requested on non-Solaris 2 platforms. +if test x$enable_symvers = xsun ; then + case ${target_os} in + solaris2*) + # All fine. + ;; + *) + # Unlikely to work. + AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) + AC_MSG_WARN([=== you are not targetting Solaris 2.]) + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + ;; + esac +fi + +# Check to see if libgcc_s exists, indicating that shared libgcc is possible. +if test $enable_symvers != no; then + AC_MSG_CHECKING([for shared libgcc]) + ac_save_CFLAGS="$CFLAGS" + CFLAGS=' -lgcc_s' + AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes, libat_shared_libgcc=no) + CFLAGS="$ac_save_CFLAGS" + if test $libat_shared_libgcc = no; then + cat > conftest.c <&1 >/dev/null \ + | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` +changequote([,])dnl + rm -f conftest.c conftest.so + if test x${libat_libgcc_s_suffix+set} = xset; then + CFLAGS=" -lgcc_s$libat_libgcc_s_suffix" + AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes) + CFLAGS="$ac_save_CFLAGS" + fi + fi + AC_MSG_RESULT($libat_shared_libgcc) +fi + +# For GNU ld, we need at least this version. The format is described in +# LIBFFI_CHECK_LINKER_FEATURES above. +libat_min_gnu_ld_version=21400 +# XXXXXXXXXXX libat_gnu_ld_version=21390 + +# Check to see if unspecified "yes" value can win, given results above. +# Change "yes" into either "no" or a style name. +if test $enable_symvers != no && test $libat_shared_libgcc = yes; then + if test $with_gnu_ld = yes; then + if test $libat_gnu_ld_version -ge $libat_min_gnu_ld_version ; then + enable_symvers=gnu + elif test $libat_ld_is_gold = yes ; then + enable_symvers=gnu + elif test $libat_ld_is_lld = yes ; then + enable_symvers=gnu + else + # The right tools, the right setup, but too old. Fallbacks? + AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for) + AC_MSG_WARN(=== full symbol versioning support in this release of GCC.) + AC_MSG_WARN(=== You would need to upgrade your binutils to version) + AC_MSG_WARN(=== $libat_min_gnu_ld_version or later and rebuild GCC.) + if test $libat_gnu_ld_version -ge 21200 ; then + # Globbing fix is present, proper block support is not. + dnl AC_MSG_WARN([=== Dude, you are soooo close. Maybe we can fake it.]) + dnl enable_symvers=??? + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + else + # 2.11 or older. + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + fi + fi + elif test $enable_symvers = sun; then + : All interesting versions of Sun ld support sun style symbol versioning. + else + # just fail for now + AC_MSG_WARN([=== You have requested some kind of symbol versioning, but]) + AC_MSG_WARN([=== either you are not using a supported linker, or you are]) + AC_MSG_WARN([=== not building a shared libgcc_s (which is required).]) + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + fi +fi +if test $enable_symvers = gnu; then + AC_DEFINE(LIBFFI_GNU_SYMBOL_VERSIONING, 1, + [Define to 1 if GNU symbol versioning is used for libatomic.]) +fi + +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB, test $enable_symvers != no) +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_GNU, test $enable_symvers = gnu) +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_SUN, test $enable_symvers = sun) +AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers) +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/autogen.sh b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/autogen.sh new file mode 100755 index 0000000000..fb014a33ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec autoreconf -v -i diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.guess b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.guess new file mode 100644 index 0000000000..faa63aa942 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.guess @@ -0,0 +1,1466 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2017 Free Software Foundation, Inc. + +timestamp='2017-05-11' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2017 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.sub b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.sub new file mode 100644 index 0000000000..40ea5dfe11 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/config.sub @@ -0,0 +1,1836 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2017 Free Software Foundation, Inc. + +timestamp='2017-04-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2017 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + wasm32) + basic_machine=wasm32-unknown + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + pru-*) + os=-elf + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.ac b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.ac new file mode 100644 index 0000000000..aec2f555f0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.ac @@ -0,0 +1,390 @@ +dnl Process this with autoconf to create configure + +AC_PREREQ(2.68) + +AC_INIT([libffi], [3.3-rc0], [http://github.com/libffi/libffi/issues]) +AC_CONFIG_HEADERS([fficonfig.h]) + +AC_CANONICAL_SYSTEM +target_alias=${target_alias-$host_alias} + +case "${host}" in + frv*-elf) + LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ + ;; +esac + +AX_ENABLE_BUILDDIR + +AM_INIT_AUTOMAKE + +# The same as in boehm-gc and libstdc++. Have to borrow it from there. +# We must force CC to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS ourselves. +# Also save and restore CFLAGS, since AC_PROG_CC will come up with +# defaults of its own if none are provided. + +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +m4_define([_AC_ARG_VAR_PRECIOUS],[]) +save_CFLAGS=$CFLAGS +AC_PROG_CC +AC_PROG_CXX +CFLAGS=$save_CFLAGS +m4_undefine([_AC_ARG_VAR_PRECIOUS]) +m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) + +AC_SUBST(CFLAGS) + +AM_PROG_AS +AM_PROG_CC_C_O +AC_PROG_LIBTOOL +AC_CONFIG_MACRO_DIR([m4]) + +# Test for 64-bit build. +AC_CHECK_SIZEOF([size_t]) + +AX_COMPILER_VENDOR +AX_CC_MAXOPT +# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro +# compiler. +if test "$ax_cv_c_compiler_vendor" != "sun"; then + AX_CFLAGS_WARN_ALL +fi + +if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -fexceptions" +fi + +cat > local.exp < conftest.s + if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then + libffi_cv_as_x86_pcrel=yes + fi + ]) + if test "x$libffi_cv_as_x86_pcrel" = xyes; then + AC_DEFINE(HAVE_AS_X86_PCREL, 1, + [Define if your assembler supports PC relative relocs.]) + fi + ;; + + S390) + AC_CACHE_CHECK([compiler uses zarch features], + libffi_cv_as_s390_zarch, [ + libffi_cv_as_s390_zarch=no + echo 'void foo(void) { bar(); bar(); }' > conftest.c + if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then + if grep -q brasl conftest.s; then + libffi_cv_as_s390_zarch=yes + fi + fi + ]) + if test "x$libffi_cv_as_s390_zarch" = xyes; then + AC_DEFINE(HAVE_AS_S390_ZARCH, 1, + [Define if the compiler uses zarch features.]) + fi + ;; +esac + +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. +AC_ARG_ENABLE(pax_emutramp, + [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], + if test "$enable_pax_emutramp" = "yes"; then + AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, + [Define this if you want to enable pax emulated trampolines]) + fi) + +LT_SYS_SYMBOL_USCORE +if test "x$sys_symbol_underscore" = xyes; then + AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) +fi + +FFI_EXEC_TRAMPOLINE_TABLE=0 +case "$target" in + *arm*-apple-* | aarch64-apple-*) + FFI_EXEC_TRAMPOLINE_TABLE=1 + AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, + [Cannot use PROT_EXEC on this target, so, we revert to + alternative means]) + ;; + *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*) + AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, + [Cannot use malloc on this target, so, we revert to + alternative means]) + ;; +esac +AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) +AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) + +if test x$TARGET = xX86_64; then + AC_CACHE_CHECK([toolchain supports unwind section type], + libffi_cv_as_x86_64_unwind_section_type, [ + cat > conftest1.s << EOF +.text +.globl foo +foo: +jmp bar +.section .eh_frame,"a",@unwind +bar: +EOF + + cat > conftest2.c << EOF +extern void foo(); +int main(){foo();} +EOF + + libffi_cv_as_x86_64_unwind_section_type=no + # we ensure that we can compile _and_ link an assembly file containing an @unwind section + # since the compiler can support it and not the linker (ie old binutils) + if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ + $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then + libffi_cv_as_x86_64_unwind_section_type=yes + fi + ]) + if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then + AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, + [Define if your assembler supports unwind section type.]) + fi +fi + +if test "x$GCC" = "xyes"; then + AC_CACHE_CHECK([whether .eh_frame section should be read-only], + libffi_cv_ro_eh_frame, [ + libffi_cv_ro_eh_frame=no + echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c + if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then + objdump -h conftest.o > conftest.dump 2>&1 + libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1` + if test "x$libffi_eh_frame_line" != "x"; then + libffi_test_line=`expr $libffi_eh_frame_line + 1`p + sed -n $libffi_test_line conftest.dump > conftest.line + if grep READONLY conftest.line > /dev/null; then + libffi_cv_ro_eh_frame=yes + fi + fi + fi + rm -f conftest.* + ]) + if test "x$libffi_cv_ro_eh_frame" = xyes; then + AC_DEFINE(HAVE_RO_EH_FRAME, 1, + [Define if .eh_frame sections should be read-only.]) + AC_DEFINE(EH_FRAME_FLAGS, "a", + [Define to the flags needed for the .section .eh_frame directive. ]) + else + AC_DEFINE(EH_FRAME_FLAGS, "aw", + [Define to the flags needed for the .section .eh_frame directive. ]) + fi + + AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], + libffi_cv_hidden_visibility_attribute, [ + echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c + libffi_cv_hidden_visibility_attribute=no + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then + if grep '\.hidden.*foo' conftest.s >/dev/null; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then + AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, + [Define if __attribute__((visibility("hidden"))) is supported.]) + fi +fi + +AC_ARG_ENABLE(docs, + AC_HELP_STRING([--disable-docs], + [Disable building of docs (default: no)]), + [enable_docs=no], + [enable_docs=yes]) +AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes]) + +AH_BOTTOM([ +#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +#ifdef LIBFFI_ASM +#define FFI_HIDDEN(name) .hidden name +#else +#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) +#endif +#else +#ifdef LIBFFI_ASM +#define FFI_HIDDEN(name) +#else +#define FFI_HIDDEN +#endif +#endif +]) + +AC_SUBST(TARGET) +AC_SUBST(TARGETDIR) + +changequote(<,>) +TARGET_OBJ= +for i in $SOURCES; do + TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'` +done +changequote([,]) +AC_SUBST(TARGET_OBJ) + +AC_SUBST(SHELL) + +AC_ARG_ENABLE(debug, +[ --enable-debug debugging mode], + if test "$enable_debug" = "yes"; then + AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) + fi) +AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") + +AC_ARG_ENABLE(structs, +[ --disable-structs omit code for struct support], + if test "$enable_structs" = "no"; then + AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.]) + fi) +AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") + +AC_ARG_ENABLE(raw-api, +[ --disable-raw-api make the raw api unavailable], + if test "$enable_raw_api" = "no"; then + AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.]) + fi) + +AC_ARG_ENABLE(purify-safety, +[ --enable-purify-safety purify-safe mode], + if test "$enable_purify_safety" = "yes"; then + AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) + fi) + +AC_ARG_ENABLE(multi-os-directory, +[ --disable-multi-os-directory + disable use of gcc --print-multi-os-directory to change the library installation directory]) + +# These variables are only ever used when we cross-build to X86_WIN32. +# And we only support this with GCC, so... +if test "x$GCC" = "xyes"; then + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='${exec_prefix}'/'$(target_alias)' + toolexeclibdir='${toolexecdir}'/lib + else + toolexecdir='${libdir}'/gcc-lib/'$(target_alias)' + toolexeclibdir='${libdir}' + fi + if test x"$enable_multi_os_directory" != x"no"; then + multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + fi + AC_SUBST(toolexecdir) +else + toolexeclibdir='${libdir}' +fi +AC_SUBST(toolexeclibdir) + +# Check linker support. +LIBFFI_ENABLE_SYMVERS + +AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) +AC_CONFIG_COMMANDS(src, [ +test -d src || mkdir src +test -d src/$TARGETDIR || mkdir src/$TARGETDIR +], [TARGETDIR="$TARGETDIR"]) + +AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc) + +AC_OUTPUT + +# Copy this file instead of using AC_CONFIG_LINK in order to support +# compiling with MSVC, which won't understand cygwin style symlinks. +cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.host b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.host new file mode 100644 index 0000000000..7634c3a99a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/configure.host @@ -0,0 +1,289 @@ +# configure.host +# +# This shell script handles all host based configuration for libffi. +# + +# THIS TABLE IS SORTED. KEEP IT THAT WAY. +# Most of the time we can define all the variables all at once... +case "${host}" in + aarch64*-*-*) + TARGET=AARCH64; TARGETDIR=aarch64 + SOURCES="ffi.c sysv.S" + ;; + + alpha*-*-*) + TARGET=ALPHA; TARGETDIR=alpha; + # Support 128-bit long double, changeable via command-line switch. + HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' + SOURCES="ffi.c osf.S" + ;; + + arc*-*-*) + TARGET=ARC; TARGETDIR=arc + SOURCES="ffi.c arcompact.S" + ;; + + arm*-*-*) + TARGET=ARM; TARGETDIR=arm + SOURCES="ffi.c sysv.S" + ;; + + avr32*-*-*) + TARGET=AVR32; TARGETDIR=avr32 + SOURCES="ffi.c sysv.S" + ;; + + bfin*) + TARGET=BFIN; TARGETDIR=bfin + SOURCES="ffi.c sysv.S" + ;; + + cris-*-*) + TARGET=LIBFFI_CRIS; TARGETDIR=cris + SOURCES="ffi.c sysv.S" + ;; + + frv-*-*) + TARGET=FRV; TARGETDIR=frv + SOURCES="ffi.c eabi.S" + ;; + + hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*) + TARGET=PA_LINUX; TARGETDIR=pa + SOURCES="ffi.c linux.S" + ;; + hppa*64-*-hpux*) + TARGET=PA64_HPUX; TARGETDIR=pa + ;; + hppa*-*-hpux*) + TARGET=PA_HPUX; TARGETDIR=pa + SOURCES="ffi.c hpux32.S" + ;; + + i?86-*-freebsd* | i?86-*-openbsd*) + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; + + i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix* \ + | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* ) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + TARGET=X86_WIN32 + else + TARGET=X86_WIN64 + fi + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 + if test $ac_cv_sizeof_size_t = 4; then + # libffi does not support microsoft tools for 32-bit windows + # hosts. Try porting src/x86/sysv.S to intel assembly + # format. + UNSUPPORTED=1 + fi + fi + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native + # or cross-build and select where to install dlls appropriately. + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; + else + AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; + fi + ;; + + i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + TARGET=X86_DARWIN + else + TARGET=X86_64 + fi + ;; + + i?86-*-* | x86_64-*-* | amd64-*) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + case "$host" in + x86_64-*x32|x86_64-x32-*) + TARGET_X32=yes + TARGET=X86_64 + ;; + *) + echo 'int foo (void) { return __x86_64__; }' > conftest.c + if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then + TARGET_X32=yes + TARGET=X86_64 + else + TARGET=X86; + fi + rm -f conftest.* + ;; + esac + else + TARGET=X86_64; + fi + ;; + + ia64*-*-*) + TARGET=IA64; TARGETDIR=ia64 + SOURCES="ffi.c unix.S" + ;; + + m32r*-*-*) + TARGET=M32R; TARGETDIR=m32r + SOURCES="ffi.c sysv.S" + ;; + + m68k-*-*) + TARGET=M68K; TARGETDIR=m68k + SOURCES="ffi.c sysv.S" + ;; + + m88k-*-*) + TARGET=M88K; TARGETDIR=m88k + SOURCES="ffi.c obsd.S" + ;; + + microblaze*-*-*) + TARGET=MICROBLAZE; TARGETDIR=microblaze + SOURCES="ffi.c sysv.S" + ;; + + moxie-*-*) + TARGET=MOXIE; TARGETDIR=moxie + SOURCES="ffi.c eabi.S" + ;; + + metag-*-*) + TARGET=METAG; TARGETDIR=metag + SOURCES="ffi.c sysv.S" + ;; + + mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*) + TARGET=MIPS; TARGETDIR=mips + ;; + mips*-*linux* | mips*-*-openbsd*) + # Support 128-bit long double for NewABI. + HAVE_LONG_DOUBLE='defined(__mips64)' + TARGET=MIPS; TARGETDIR=mips + ;; + + nios2*-linux*) + TARGET=NIOS2; TARGETDIR=nios2 + SOURCES="ffi.c sysv.S" + ;; + + or1k*-linux*) + TARGET=OR1K; TARGETDIR=or1k + SOURCES="ffi.c sysv.S" + ;; + + powerpc*-*-linux* | powerpc-*-sysv*) + TARGET=POWERPC; TARGETDIR=powerpc + HAVE_LONG_DOUBLE_VARIANT=1 + ;; + powerpc-*-amigaos*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-beos*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-darwin* | powerpc64-*-darwin*) + TARGET=POWERPC_DARWIN; TARGETDIR=powerpc + ;; + powerpc-*-aix* | rs6000-*-aix*) + TARGET=POWERPC_AIX; TARGETDIR=powerpc + ;; + powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc + HAVE_LONG_DOUBLE_VARIANT=1 + ;; + powerpc64-*-freebsd*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc*-*-rtems*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + + riscv*-*) + TARGET=RISCV; TARGETDIR=riscv + SOURCES="ffi.c sysv.S" + ;; + + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + SOURCES="ffi.c sysv.S" + ;; + + sh-*-* | sh[34]*-*-*) + TARGET=SH; TARGETDIR=sh + SOURCES="ffi.c sysv.S" + ;; + sh64-*-* | sh5*-*-*) + TARGET=SH64; TARGETDIR=sh64 + SOURCES="ffi.c sysv.S" + ;; + + sparc*-*-*) + TARGET=SPARC; TARGETDIR=sparc + SOURCES="ffi.c ffi64.c v8.S v9.S" + ;; + + tile*-*) + TARGET=TILE; TARGETDIR=tile + SOURCES="ffi.c tile.S" + ;; + + vax-*-*) + TARGET=VAX; TARGETDIR=vax + SOURCES="ffi.c elfbsd.S" + ;; + + xtensa*-*) + TARGET=XTENSA; TARGETDIR=xtensa + SOURCES="ffi.c sysv.S" + ;; +esac + +# ... but some of the cases above share configury. +case "${TARGET}" in + MIPS) + SOURCES="ffi.c o32.S n32.S" + ;; + POWERPC) + SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S" + SOURCES="${SOURCES} linux64.S linux64_closure.S" + ;; + POWERPC_AIX) + SOURCES="ffi_darwin.c aix.S aix_closure.S" + ;; + POWERPC_DARWIN) + SOURCES="ffi_darwin.c darwin.S darwin_closure.S" + ;; + POWERPC_FREEBSD) + SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S" + ;; + X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32) + SOURCES="ffi.c sysv.S" + ;; + X86_64) + if test x"$TARGET_X32" = xyes; then + SOURCES="ffi64.c unix64.S" + else + SOURCES="ffi64.c unix64.S ffiw64.c win64.S" + fi + ;; + X86_WIN64) + if test "$MSVC" = 1; then + SOURCES="ffiw64.c win64_intel.S" + else + SOURCES="ffiw64.c win64.S" + fi + ;; +esac + +# If we failed to configure SOURCES, we can't do anything. +if test -z "${SOURCES}"; then + UNSUPPORTED=1 +fi diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/generate-darwin-source-and-headers.py b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/generate-darwin-source-and-headers.py new file mode 100755 index 0000000000..f7fc414b35 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/generate-darwin-source-and-headers.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python +import subprocess +import os +import errno +import collections +import glob +import argparse + +class Platform(object): + pass + +class simulator_platform(Platform): + directory = 'darwin_ios' + sdk = 'iphonesimulator' + arch = 'i386' + triple = 'i386-apple-darwin11' + version_min = '-miphoneos-version-min=7.0' + + prefix = "#ifdef __i386__\n\n" + suffix = "\n\n#endif" + src_dir = 'x86' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +class simulator64_platform(Platform): + directory = 'darwin_ios' + sdk = 'iphonesimulator' + arch = 'x86_64' + triple = 'x86_64-apple-darwin13' + version_min = '-miphoneos-version-min=7.0' + + prefix = "#ifdef __x86_64__\n\n" + suffix = "\n\n#endif" + src_dir = 'x86' + src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] + + +class device_platform(Platform): + directory = 'darwin_ios' + sdk = 'iphoneos' + arch = 'armv7' + triple = 'arm-apple-darwin11' + version_min = '-miphoneos-version-min=7.0' + + prefix = "#ifdef __arm__\n\n" + suffix = "\n\n#endif" + src_dir = 'arm' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +class device64_platform(Platform): + directory = 'darwin_ios' + sdk = 'iphoneos' + arch = 'arm64' + triple = 'aarch64-apple-darwin13' + version_min = '-miphoneos-version-min=7.0' + + prefix = "#ifdef __arm64__\n\n" + suffix = "\n\n#endif" + src_dir = 'aarch64' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +class desktop32_platform(Platform): + directory = 'darwin_osx' + sdk = 'macosx' + arch = 'i386' + triple = 'i386-apple-darwin10' + version_min = '-mmacosx-version-min=10.6' + src_dir = 'x86' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + prefix = "#ifdef __i386__\n\n" + suffix = "\n\n#endif" + + +class desktop64_platform(Platform): + directory = 'darwin_osx' + sdk = 'macosx' + arch = 'x86_64' + triple = 'x86_64-apple-darwin10' + version_min = '-mmacosx-version-min=10.6' + + prefix = "#ifdef __x86_64__\n\n" + suffix = "\n\n#endif" + src_dir = 'x86' + src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] + + +def mkdir_p(path): + try: + os.makedirs(path) + except OSError as exc: # Python >2.5 + if exc.errno != errno.EEXIST: + raise + + +def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): + mkdir_p(dst_dir) + out_filename = filename + + if file_suffix: + if filename in ['internal64.h', 'asmnames.h', 'internal.h']: + out_filename = filename + else: + split_name = os.path.splitext(filename) + out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) + + with open(os.path.join(src_dir, filename)) as in_file: + with open(os.path.join(dst_dir, out_filename), 'w') as out_file: + if prefix: + out_file.write(prefix) + + out_file.write(in_file.read()) + + if suffix: + out_file.write(suffix) + + +def list_files(src_dir, pattern=None, filelist=None): + if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern)) + for file in filelist: + yield os.path.basename(file) + + +def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None): + for filename in list_files(src_dir, pattern=pattern, filelist=filelist): + move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix) + + +def copy_src_platform_files(platform): + src_dir = os.path.join('src', platform.src_dir) + dst_dir = os.path.join(platform.directory, 'src', platform.src_dir) + copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix) + + +def build_target(platform, platform_headers): + def xcrun_cmd(cmd): + return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch) + + tag='%s-%s' % (platform.sdk, platform.arch) + build_dir = 'build_%s' % tag + mkdir_p(build_dir) + env = dict(CC=xcrun_cmd('clang'), + LD=xcrun_cmd('ld'), + CFLAGS='%s' % (platform.version_min)) + working_dir = os.getcwd() + try: + os.chdir(build_dir) + subprocess.check_call(['../configure', '-host', platform.triple], env=env) + finally: + os.chdir(working_dir) + + for src_dir in [build_dir, os.path.join(build_dir, 'include')]: + copy_files(src_dir, + os.path.join(platform.directory, 'include'), + pattern='*.h', + file_suffix=platform.arch, + prefix=platform.prefix, + suffix=platform.suffix) + + for filename in list_files(src_dir, pattern='*.h'): + platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix)) + + +def generate_source_and_headers(generate_osx=True, generate_ios=True): + copy_files('src', 'darwin_common/src', pattern='*.c') + copy_files('include', 'darwin_common/include', pattern='*.h') + + if generate_ios: + copy_src_platform_files(simulator_platform) + copy_src_platform_files(simulator64_platform) + copy_src_platform_files(device_platform) + copy_src_platform_files(device64_platform) + if generate_osx: + copy_src_platform_files(desktop32_platform) + copy_src_platform_files(desktop64_platform) + + platform_headers = collections.defaultdict(set) + + if generate_ios: + build_target(simulator_platform, platform_headers) + build_target(simulator64_platform, platform_headers) + build_target(device_platform, platform_headers) + build_target(device64_platform, platform_headers) + if generate_osx: + build_target(desktop32_platform, platform_headers) + build_target(desktop64_platform, platform_headers) + + mkdir_p('darwin_common/include') + for header_name, tag_tuples in platform_headers.iteritems(): + basename, suffix = os.path.splitext(header_name) + with open(os.path.join('darwin_common/include', header_name), 'w') as header: + for tag_tuple in tag_tuples: + header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2])) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--only-ios', action='store_true', default=False) + parser.add_argument('--only-osx', action='store_true', default=False) + args = parser.parse_args() + + generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/Makefile.am b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/Makefile.am new file mode 100644 index 0000000000..c59df9fb3c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/Makefile.am @@ -0,0 +1,9 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS=foreign + +DISTCLEANFILES=ffitarget.h +noinst_HEADERS=ffi_common.h ffi_cfi.h +EXTRA_DIST=ffi.h.in + +nodist_include_HEADERS = ffi.h ffitarget.h diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi.h.in b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi.h.in new file mode 100644 index 0000000000..39cde46aed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi.h.in @@ -0,0 +1,511 @@ +/* -----------------------------------------------------------------*-C-*- + libffi @VERSION@ - Copyright (c) 2011, 2014 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the ``Software''), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------- + Most of the API is documented in doc/libffi.texi. + + The raw API is designed to bypass some of the argument packing and + unpacking on architectures for which it can be avoided. Routines + are provided to emulate the raw API if the underlying platform + doesn't allow faster implementation. + + More details on the raw API can be found in: + + http://gcc.gnu.org/ml/java/1999-q3/msg00138.html + + and + + http://gcc.gnu.org/ml/java/1999-q3/msg00174.html + -------------------------------------------------------------------- */ + +#ifndef LIBFFI_H +#define LIBFFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Specify which architecture libffi is configured for. */ +#ifndef @TARGET@ +#define @TARGET@ +#endif + +/* ---- System configuration information --------------------------------- */ + +#include + +#ifndef LIBFFI_ASM + +#if defined(_MSC_VER) && !defined(__clang__) +#define __attribute__(X) +#endif + +#include +#include + +/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). + But we can find it either under the correct ANSI name, or under GNU + C's internal name. */ + +#define FFI_64_BIT_MAX 9223372036854775807 + +#ifdef LONG_LONG_MAX +# define FFI_LONG_LONG_MAX LONG_LONG_MAX +#else +# ifdef LLONG_MAX +# define FFI_LONG_LONG_MAX LLONG_MAX +# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif /* _AIX52 or newer */ +# else +# ifdef __GNUC__ +# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ +# endif +# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ +# ifndef __PPC64__ +# if defined (__IBMC__) || defined (__IBMCPP__) +# define FFI_LONG_LONG_MAX LONGLONG_MAX +# endif +# endif /* __PPC64__ */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif +# endif +#endif + +/* The closure code assumes that this works on pointers, i.e. a size_t + can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +/* Need minimal decorations for DLLs to work on Windows. GCC has + autoimport and autoexport. Always mark externally visible symbols + as dllimport for MSVC clients, even if it means an extra indirection + when using the static version of the library. + Besides, as a workaround, they can define FFI_BUILDING if they + *know* they are going to link with the static library. */ +#if defined _MSC_VER +# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ +# define FFI_API __declspec(dllexport) +# elif !defined FFI_BUILDING /* Importing libffi.DLL */ +# define FFI_API __declspec(dllimport) +# else /* Building/linking static library */ +# define FFI_API +# endif +#else +# define FFI_API +#endif + +/* The externally visible type declarations also need the MSVC DLL + decorations, or they will not be exported from the object file. */ +#if defined LIBFFI_HIDE_BASIC_TYPES +# define FFI_EXTERN FFI_API +#else +# define FFI_EXTERN extern FFI_API +#endif + +#ifndef LIBFFI_HIDE_BASIC_TYPES +#if SCHAR_MAX == 127 +# define ffi_type_uchar ffi_type_uint8 +# define ffi_type_schar ffi_type_sint8 +#else + #error "char size not supported" +#endif + +#if SHRT_MAX == 32767 +# define ffi_type_ushort ffi_type_uint16 +# define ffi_type_sshort ffi_type_sint16 +#elif SHRT_MAX == 2147483647 +# define ffi_type_ushort ffi_type_uint32 +# define ffi_type_sshort ffi_type_sint32 +#else + #error "short size not supported" +#endif + +#if INT_MAX == 32767 +# define ffi_type_uint ffi_type_uint16 +# define ffi_type_sint ffi_type_sint16 +#elif INT_MAX == 2147483647 +# define ffi_type_uint ffi_type_uint32 +# define ffi_type_sint ffi_type_sint32 +#elif INT_MAX == 9223372036854775807 +# define ffi_type_uint ffi_type_uint64 +# define ffi_type_sint ffi_type_sint64 +#else + #error "int size not supported" +#endif + +#if LONG_MAX == 2147483647 +# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX + #error "no 64-bit data type supported" +# endif +#elif LONG_MAX != FFI_64_BIT_MAX + #error "long size not supported" +#endif + +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == FFI_64_BIT_MAX +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif + +/* These are defined in types.c. */ +FFI_EXTERN ffi_type ffi_type_void; +FFI_EXTERN ffi_type ffi_type_uint8; +FFI_EXTERN ffi_type ffi_type_sint8; +FFI_EXTERN ffi_type ffi_type_uint16; +FFI_EXTERN ffi_type ffi_type_sint16; +FFI_EXTERN ffi_type ffi_type_uint32; +FFI_EXTERN ffi_type ffi_type_sint32; +FFI_EXTERN ffi_type ffi_type_uint64; +FFI_EXTERN ffi_type ffi_type_sint64; +FFI_EXTERN ffi_type ffi_type_float; +FFI_EXTERN ffi_type ffi_type_double; +FFI_EXTERN ffi_type ffi_type_pointer; + +#if @HAVE_LONG_DOUBLE@ +FFI_EXTERN ffi_type ffi_type_longdouble; +#else +#define ffi_type_longdouble ffi_type_double +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_EXTERN ffi_type ffi_type_complex_float; +FFI_EXTERN ffi_type ffi_type_complex_double; +#if @HAVE_LONG_DOUBLE@ +FFI_EXTERN ffi_type ffi_type_complex_longdouble; +#else +#define ffi_type_complex_longdouble ffi_type_complex_double +#endif +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ + +typedef enum { + FFI_OK = 0, + FFI_BAD_TYPEDEF, + FFI_BAD_ABI +} ffi_status; + +typedef struct { + ffi_abi abi; + unsigned nargs; + ffi_type **arg_types; + ffi_type *rtype; + unsigned bytes; + unsigned flags; +#ifdef FFI_EXTRA_CIF_FIELDS + FFI_EXTRA_CIF_FIELDS; +#endif +} ffi_cif; + +/* ---- Definitions for the raw API -------------------------------------- */ + +#ifndef FFI_SIZEOF_ARG +# if LONG_MAX == 2147483647 +# define FFI_SIZEOF_ARG 4 +# elif LONG_MAX == FFI_64_BIT_MAX +# define FFI_SIZEOF_ARG 8 +# endif +#endif + +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + +typedef union { + ffi_sarg sint; + ffi_arg uint; + float flt; + char data[FFI_SIZEOF_ARG]; + void* ptr; +} ffi_raw; + +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + +FFI_API +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); + +FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +FFI_API size_t ffi_raw_size (ffi_cif *cif); + +/* This is analogous to the raw API, except it uses Java parameter + packing, even on 64-bit machines. I.e. on 64-bit machines longs + and doubles are followed by an empty 64-bit word. */ + +FFI_API +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue); + +FFI_API +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); +FFI_API +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); +FFI_API +size_t ffi_java_raw_size (ffi_cif *cif); + +/* ---- Definitions for closures ----------------------------------------- */ + +#if FFI_CLOSURES + +#ifdef _MSC_VER +__declspec(align(8)) +#endif +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; +} ffi_closure +#ifdef __GNUC__ + __attribute__((aligned (8))) +#endif + ; + +#ifndef __GNUC__ +# ifdef __sgi +# pragma pack 0 +# endif +#endif + +FFI_API void *ffi_closure_alloc (size_t size, void **code); +FFI_API void ffi_closure_free (void *); + +FFI_API ffi_status +ffi_prep_closure (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) + __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) +#elif defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((deprecated)) +#endif + ; + +FFI_API ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void*codeloc); + +#ifdef __sgi +# pragma pack 8 +#endif +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the transaltion, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_raw*,void*); + void *user_data; + +} ffi_raw_closure; + +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + +FFI_API ffi_status +ffi_prep_raw_closure (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +FFI_API ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc); + +#endif /* FFI_CLOSURES */ + +#if FFI_GO_CLOSURES + +typedef struct { + void *tramp; + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); +} ffi_go_closure; + +FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*)); + +FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); + +#endif /* FFI_GO_CLOSURES */ + +/* ---- Public interface definition -------------------------------------- */ + +FFI_API +ffi_status ffi_prep_cif(ffi_cif *cif, + ffi_abi abi, + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + size_t *offsets); + +/* Useful for eliminating compiler warnings. */ +#define FFI_FN(f) ((void (*)(void))f) + +/* ---- Definitions shared with assembly code ---------------------------- */ + +#endif + +/* If these change, update src/mips/ffitarget.h. */ +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_INT 1 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#if @HAVE_LONG_DOUBLE@ +#define FFI_TYPE_LONGDOUBLE 4 +#else +#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +#endif +#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_UINT32 9 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_UINT64 11 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_STRUCT 13 +#define FFI_TYPE_POINTER 14 +#define FFI_TYPE_COMPLEX 15 + +/* This should always refer to the last type code (for sanity checks). */ +#define FFI_TYPE_LAST FFI_TYPE_COMPLEX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_cfi.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_cfi.h new file mode 100644 index 0000000000..244ce572be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_cfi.h @@ -0,0 +1,55 @@ +/* ----------------------------------------------------------------------- + ffi_cfi.h - Copyright (c) 2014 Red Hat, Inc. + + Conditionally assemble cfi directives. Only necessary for building libffi. + ----------------------------------------------------------------------- */ + +#ifndef FFI_CFI_H +#define FFI_CFI_H + +#ifdef HAVE_AS_CFI_PSEUDO_OP + +# define cfi_startproc .cfi_startproc +# define cfi_endproc .cfi_endproc +# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off +# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg +# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off +# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off +# define cfi_offset(reg, off) .cfi_offset reg, off +# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off +# define cfi_register(r1, r2) .cfi_register r1, r2 +# define cfi_return_column(reg) .cfi_return_column reg +# define cfi_restore(reg) .cfi_restore reg +# define cfi_same_value(reg) .cfi_same_value reg +# define cfi_undefined(reg) .cfi_undefined reg +# define cfi_remember_state .cfi_remember_state +# define cfi_restore_state .cfi_restore_state +# define cfi_window_save .cfi_window_save +# define cfi_personality(enc, exp) .cfi_personality enc, exp +# define cfi_lsda(enc, exp) .cfi_lsda enc, exp +# define cfi_escape(...) .cfi_escape __VA_ARGS__ + +#else + +# define cfi_startproc +# define cfi_endproc +# define cfi_def_cfa(reg, off) +# define cfi_def_cfa_register(reg) +# define cfi_def_cfa_offset(off) +# define cfi_adjust_cfa_offset(off) +# define cfi_offset(reg, off) +# define cfi_rel_offset(reg, off) +# define cfi_register(r1, r2) +# define cfi_return_column(reg) +# define cfi_restore(reg) +# define cfi_same_value(reg) +# define cfi_undefined(reg) +# define cfi_remember_state +# define cfi_restore_state +# define cfi_window_save +# define cfi_personality(enc, exp) +# define cfi_lsda(enc, exp) +# define cfi_escape(...) + +#endif /* HAVE_AS_CFI_PSEUDO_OP */ +#endif /* FFI_CFI_H */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_common.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_common.h new file mode 100644 index 0000000000..7fb0a64e92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/include/ffi_common.h @@ -0,0 +1,149 @@ +/* ----------------------------------------------------------------------- + ffi_common.h - Copyright (C) 2011, 2012, 2013 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc + Copyright (c) 1996 Red Hat, Inc. + + Common internal definitions and macros. Only necessary for building + libffi. + ----------------------------------------------------------------------- */ + +#ifndef FFI_COMMON_H +#define FFI_COMMON_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Do not move this. Some versions of AIX are very picky about where + this is positioned. */ +#ifdef __GNUC__ +# if HAVE_ALLOCA_H +# include +# else + /* mingw64 defines this already in malloc.h. */ +# ifndef alloca +# define alloca __builtin_alloca +# endif +# endif +# define MAYBE_UNUSED __attribute__((__unused__)) +#else +# define MAYBE_UNUSED +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX +# pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +# ifdef _MSC_VER +# define alloca _alloca +# else +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +/* Check for the existence of memcpy. */ +#if STDC_HEADERS +# include +#else +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(FFI_DEBUG) +#include +#endif + +#ifdef FFI_DEBUG +void ffi_assert(char *expr, char *file, int line); +void ffi_stop_here(void); +void ffi_type_test(ffi_type *a, char *file, int line); + +#define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__)) +#define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l))) +#define FFI_ASSERT_VALID_TYPE(x) ffi_type_test (x, __FILE__, __LINE__) +#else +#define FFI_ASSERT(x) +#define FFI_ASSERT_AT(x, f, l) +#define FFI_ASSERT_VALID_TYPE(x) +#endif + +/* v cast to size_t and aligned up to a multiple of a */ +#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) +/* v cast to size_t and aligned down to a multiple of a */ +#define ALIGN_DOWN(v, a) (((size_t) (v)) & -a) + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif); +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, unsigned int ntotalargs); + + +#if HAVE_LONG_DOUBLE_VARIANT +/* Used to adjust size/alignment of ffi types. */ +void ffi_prep_types (ffi_abi abi); +#endif + +/* Used internally, but overridden by some architectures */ +ffi_status ffi_prep_cif_core(ffi_cif *cif, + ffi_abi abi, + unsigned int isvariadic, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +/* Extended cif, used in callback from assembly routine */ +typedef struct +{ + ffi_cif *cif; + void *rvalue; + void **avalue; +} extended_cif; + +/* Terse sized type definitions. */ +#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C) +typedef unsigned char UINT8; +typedef signed char SINT8; +typedef unsigned short UINT16; +typedef signed short SINT16; +typedef unsigned int UINT32; +typedef signed int SINT32; +# ifdef _MSC_VER +typedef unsigned __int64 UINT64; +typedef signed __int64 SINT64; +# else +# include +typedef uint64_t UINT64; +typedef int64_t SINT64; +# endif +#else +typedef unsigned int UINT8 __attribute__((__mode__(__QI__))); +typedef signed int SINT8 __attribute__((__mode__(__QI__))); +typedef unsigned int UINT16 __attribute__((__mode__(__HI__))); +typedef signed int SINT16 __attribute__((__mode__(__HI__))); +typedef unsigned int UINT32 __attribute__((__mode__(__SI__))); +typedef signed int SINT32 __attribute__((__mode__(__SI__))); +typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); +typedef signed int SINT64 __attribute__((__mode__(__DI__))); +#endif + +typedef float FLOAT32; + +#ifndef __GNUC__ +#define __builtin_expect(x, expected_value) (x) +#endif +#define LIKELY(x) __builtin_expect(!!(x),1) +#define UNLIKELY(x) __builtin_expect((x)!=0,0) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.map.in b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.map.in new file mode 100644 index 0000000000..5553ab0243 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.map.in @@ -0,0 +1,80 @@ +#define LIBFFI_ASM +#define LIBFFI_H +#include +#include + +/* These version numbers correspond to the libtool-version abi numbers, + not to the libffi release numbers. */ + +LIBFFI_BASE_7.0 { + global: + /* Exported data variables. */ + ffi_type_void; + ffi_type_uint8; + ffi_type_sint8; + ffi_type_uint16; + ffi_type_sint16; + ffi_type_uint32; + ffi_type_sint32; + ffi_type_uint64; + ffi_type_sint64; + ffi_type_float; + ffi_type_double; + ffi_type_longdouble; + ffi_type_pointer; + + /* Exported functions. */ + ffi_call; + ffi_prep_cif; + ffi_prep_cif_var; + + ffi_raw_call; + ffi_ptrarray_to_raw; + ffi_raw_to_ptrarray; + ffi_raw_size; + + ffi_java_raw_call; + ffi_java_ptrarray_to_raw; + ffi_java_raw_to_ptrarray; + ffi_java_raw_size; + + local: + *; +}; + +LIBFFI_BASE_7.1 { + global: + ffi_get_struct_offsets; +} LIBFFI_BASE_7.0; + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +LIBFFI_COMPLEX_7.0 { + global: + /* Exported data variables. */ + ffi_type_complex_float; + ffi_type_complex_double; + ffi_type_complex_longdouble; +} LIBFFI_BASE_7.0; +#endif + +#if FFI_CLOSURES +LIBFFI_CLOSURE_7.0 { + global: + ffi_closure_alloc; + ffi_closure_free; + ffi_prep_closure; + ffi_prep_closure_loc; + ffi_prep_raw_closure; + ffi_prep_raw_closure_loc; + ffi_prep_java_raw_closure; + ffi_prep_java_raw_closure_loc; +} LIBFFI_BASE_7.0; +#endif + +#if FFI_GO_CLOSURES +LIBFFI_GO_CLOSURE_7.0 { + global: + ffi_call_go; + ffi_prep_go_closure; +} LIBFFI_CLOSURE_7.0; +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.pc.in b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.pc.in new file mode 100644 index 0000000000..6fad83b495 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +toolexeclibdir=@toolexeclibdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: Library supporting Foreign Function Interfaces +Version: @PACKAGE_VERSION@ +Libs: -L${toolexeclibdir} -lffi +Cflags: -I${includedir} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..9a107b49c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj @@ -0,0 +1,1043 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 43B5D3F81D35473200D1E1FD /* ffiw64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B5D3F71D35473200D1E1FD /* ffiw64_x86_64.c */; }; + 43B5D3FA1D3547CE00D1E1FD /* win64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 43B5D3F91D3547CE00D1E1FD /* win64_x86_64.S */; }; + 43E9A5C71D352C1500926A8F /* sysv_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = 43E9A5C51D352C1500926A8F /* sysv_i386.S */; }; + 43E9A5C81D352C1500926A8F /* unix64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 43E9A5C61D352C1500926A8F /* unix64_x86_64.S */; }; + DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; + DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; }; + DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; }; + DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; + DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; + DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; + DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; + DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; + DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; + DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; + DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; + DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; + DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; }; + DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; }; + DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; }; + DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; }; + DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; }; + DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; }; + DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; }; + DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; }; + DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; }; + DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; }; + DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; }; + DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; }; + DBFA7194187F1DA100A76262 /* unix64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* unix64_x86_64.S */; }; + DBFA7195187F1DA100A76262 /* sysv_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* sysv_i386.S */; }; + DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; }; + DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; }; + FDB52FB31F6144FA00AA92E6 /* unix64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 43E9A5C61D352C1500926A8F /* unix64_x86_64.S */; }; + FDB52FB41F6144FA00AA92E6 /* sysv_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = 43E9A5C51D352C1500926A8F /* sysv_i386.S */; }; + FDB52FB51F6144FA00AA92E6 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; }; + FDB52FB61F6144FA00AA92E6 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; }; + FDB52FB71F6144FA00AA92E6 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; + FDB52FB81F6144FA00AA92E6 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; }; + FDB52FB91F6144FA00AA92E6 /* ffiw64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B5D3F71D35473200D1E1FD /* ffiw64_x86_64.c */; }; + FDB52FBA1F6144FA00AA92E6 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; + FDB52FBB1F6144FA00AA92E6 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; }; + FDB52FBC1F6144FA00AA92E6 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; + FDB52FBD1F6144FA00AA92E6 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; }; + FDB52FBE1F6144FA00AA92E6 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; + FDB52FBF1F6144FA00AA92E6 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; }; + FDB52FC01F6144FA00AA92E6 /* win64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 43B5D3F91D3547CE00D1E1FD /* win64_x86_64.S */; }; + FDB52FD01F614A8B00AA92E6 /* ffi.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; + FDB52FD11F614AA700AA92E6 /* ffi_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA715E187F1D9B00A76262 /* ffi_arm64.h */; }; + FDB52FD21F614AAB00AA92E6 /* ffi_armv7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA715F187F1D9B00A76262 /* ffi_armv7.h */; }; + FDB52FD31F614AB000AA92E6 /* ffi_i386.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7160187F1D9B00A76262 /* ffi_i386.h */; }; + FDB52FD41F614AB500AA92E6 /* ffi_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */; }; + FDB52FD51F614AE200AA92E6 /* ffi.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; + FDB52FD61F614AEA00AA92E6 /* ffi_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA715E187F1D9B00A76262 /* ffi_arm64.h */; }; + FDB52FD71F614AED00AA92E6 /* ffi_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */; }; + FDB52FD81F614B8700AA92E6 /* ffitarget.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; + FDB52FD91F614B8E00AA92E6 /* ffitarget_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */; }; + FDB52FDA1F614B9300AA92E6 /* ffitarget_armv7.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */; }; + FDB52FDB1F614B9700AA92E6 /* ffitarget_i386.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */; }; + FDB52FDD1F614BA900AA92E6 /* ffitarget_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */; }; + FDB52FDE1F6155E300AA92E6 /* ffitarget.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; + FDB52FDF1F6155EA00AA92E6 /* ffitarget_arm64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */; }; + FDB52FE01F6155EF00AA92E6 /* ffitarget_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */; }; + FDB52FE21F6156FA00AA92E6 /* ffi.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; }; + FDB52FE31F61571A00AA92E6 /* ffi_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; }; + FDB52FE41F61571D00AA92E6 /* ffitarget.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; }; + FDB52FE61F61573100AA92E6 /* ffitarget_x86_64.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; }; + FDDB2F411F5D66E200EF414E /* ffiw64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB2F3F1F5D666900EF414E /* ffiw64_x86_64.c */; }; + FDDB2F461F5D691E00EF414E /* win64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = FDDB2F441F5D68C900EF414E /* win64_x86_64.S */; }; + FDDB2F4A1F5D846400EF414E /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; }; + FDDB2F4B1F5D846400EF414E /* sysv_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* sysv_i386.S */; }; + FDDB2F4C1F5D846400EF414E /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; }; + FDDB2F4D1F5D846400EF414E /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; }; + FDDB2F4E1F5D846400EF414E /* ffiw64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB2F3F1F5D666900EF414E /* ffiw64_x86_64.c */; }; + FDDB2F4F1F5D846400EF414E /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; }; + FDDB2F501F5D846400EF414E /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; }; + FDDB2F511F5D846400EF414E /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; }; + FDDB2F521F5D846400EF414E /* unix64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* unix64_x86_64.S */; }; + FDDB2F531F5D846400EF414E /* win64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = FDDB2F441F5D68C900EF414E /* win64_x86_64.S */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + DB13B1641849DF1E0010F42D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + FDB52FD01F614A8B00AA92E6 /* ffi.h in CopyFiles */, + FDB52FD11F614AA700AA92E6 /* ffi_arm64.h in CopyFiles */, + FDB52FD21F614AAB00AA92E6 /* ffi_armv7.h in CopyFiles */, + FDB52FD31F614AB000AA92E6 /* ffi_i386.h in CopyFiles */, + FDB52FD41F614AB500AA92E6 /* ffi_x86_64.h in CopyFiles */, + FDB52FD81F614B8700AA92E6 /* ffitarget.h in CopyFiles */, + FDB52FD91F614B8E00AA92E6 /* ffitarget_arm64.h in CopyFiles */, + FDB52FDA1F614B9300AA92E6 /* ffitarget_armv7.h in CopyFiles */, + FDB52FDB1F614B9700AA92E6 /* ffitarget_i386.h in CopyFiles */, + FDB52FDD1F614BA900AA92E6 /* ffitarget_x86_64.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FDB52FC11F6144FA00AA92E6 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + FDB52FD51F614AE200AA92E6 /* ffi.h in CopyFiles */, + FDB52FD61F614AEA00AA92E6 /* ffi_arm64.h in CopyFiles */, + FDB52FD71F614AED00AA92E6 /* ffi_x86_64.h in CopyFiles */, + FDB52FDE1F6155E300AA92E6 /* ffitarget.h in CopyFiles */, + FDB52FDF1F6155EA00AA92E6 /* ffitarget_arm64.h in CopyFiles */, + FDB52FE01F6155EF00AA92E6 /* ffitarget_x86_64.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FDB52FE11F6156E000AA92E6 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + FDB52FE21F6156FA00AA92E6 /* ffi.h in CopyFiles */, + FDB52FE31F61571A00AA92E6 /* ffi_x86_64.h in CopyFiles */, + FDB52FE41F61571D00AA92E6 /* ffitarget.h in CopyFiles */, + FDB52FE61F61573100AA92E6 /* ffitarget_x86_64.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 43B5D3F71D35473200D1E1FD /* ffiw64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffiw64_x86_64.c; sourceTree = ""; }; + 43B5D3F91D3547CE00D1E1FD /* win64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = win64_x86_64.S; sourceTree = ""; }; + 43E9A5C51D352C1500926A8F /* sysv_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_i386.S; sourceTree = ""; }; + 43E9A5C61D352C1500926A8F /* unix64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = unix64_x86_64.S; sourceTree = ""; }; + 43E9A5DA1D35373600926A8F /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + 43E9A5DB1D35374400926A8F /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + 43E9A5DC1D35375400926A8F /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + 43E9A5DD1D35375400926A8F /* internal64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal64.h; sourceTree = ""; }; + DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; }; + DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = ""; }; + DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = ""; }; + DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = ""; }; + DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = ""; }; + DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = ""; }; + DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = ""; }; + DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = ""; }; + DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = ""; }; + DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; + DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = ""; }; + DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = ""; }; + DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; + DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; + DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = ""; }; + DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = ""; }; + DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; + DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; + DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = ""; }; + DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = ""; }; + DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; + DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; + DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = ""; }; + DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = ""; }; + DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = ""; }; + DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = ""; }; + DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; + DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; + DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = ""; }; + DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = ""; }; + DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = ""; }; + DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = ""; }; + DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = ""; }; + DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = ""; }; + DBFA718A187F1DA100A76262 /* unix64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = unix64_x86_64.S; sourceTree = ""; }; + DBFA718B187F1DA100A76262 /* sysv_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_i386.S; sourceTree = ""; }; + DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = ""; }; + DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = ""; }; + FDB52FC51F6144FA00AA92E6 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FDDB2F3E1F5D61BC00EF414E /* asmnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asmnames.h; sourceTree = ""; }; + FDDB2F3F1F5D666900EF414E /* ffiw64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffiw64_x86_64.c; sourceTree = ""; }; + FDDB2F421F5D68C900EF414E /* internal64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal64.h; sourceTree = ""; }; + FDDB2F431F5D68C900EF414E /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + FDDB2F441F5D68C900EF414E /* win64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = win64_x86_64.S; sourceTree = ""; }; + FDDB2F621F5D846400EF414E /* libffi.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + DB13B15B1849DEB70010F42D = { + isa = PBXGroup; + children = ( + DBFA713C187F1D8600A76262 /* darwin_common */, + DBFA715C187F1D9B00A76262 /* darwin_ios */, + DBFA7180187F1DA100A76262 /* darwin_osx */, + DB13B1671849DF1E0010F42D /* Products */, + ); + sourceTree = ""; + }; + DB13B1671849DF1E0010F42D /* Products */ = { + isa = PBXGroup; + children = ( + DB13B1661849DF1E0010F42D /* libffi.a */, + DB13B1911849DF510010F42D /* ffi.dylib */, + FDDB2F621F5D846400EF414E /* libffi.a */, + FDB52FC51F6144FA00AA92E6 /* libffi.a */, + ); + name = Products; + sourceTree = ""; + }; + DBFA713C187F1D8600A76262 /* darwin_common */ = { + isa = PBXGroup; + children = ( + DBFA713D187F1D8600A76262 /* include */, + DBFA7142187F1D8600A76262 /* src */, + ); + path = darwin_common; + sourceTree = ""; + }; + DBFA713D187F1D8600A76262 /* include */ = { + isa = PBXGroup; + children = ( + DBFA713E187F1D8600A76262 /* ffi.h */, + DBFA713F187F1D8600A76262 /* ffi_common.h */, + DBFA7140187F1D8600A76262 /* fficonfig.h */, + DBFA7141187F1D8600A76262 /* ffitarget.h */, + ); + path = include; + sourceTree = ""; + }; + DBFA7142187F1D8600A76262 /* src */ = { + isa = PBXGroup; + children = ( + DBFA7143187F1D8600A76262 /* closures.c */, + DBFA7145187F1D8600A76262 /* dlmalloc.c */, + DBFA7147187F1D8600A76262 /* prep_cif.c */, + DBFA7148187F1D8600A76262 /* raw_api.c */, + DBFA7149187F1D8600A76262 /* types.c */, + ); + path = src; + sourceTree = ""; + }; + DBFA715C187F1D9B00A76262 /* darwin_ios */ = { + isa = PBXGroup; + children = ( + DBFA715D187F1D9B00A76262 /* include */, + DBFA716A187F1D9B00A76262 /* src */, + ); + path = darwin_ios; + sourceTree = ""; + }; + DBFA715D187F1D9B00A76262 /* include */ = { + isa = PBXGroup; + children = ( + DBFA715E187F1D9B00A76262 /* ffi_arm64.h */, + DBFA715F187F1D9B00A76262 /* ffi_armv7.h */, + DBFA7160187F1D9B00A76262 /* ffi_i386.h */, + DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */, + DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */, + DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */, + DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */, + DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */, + DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */, + DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */, + DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */, + DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */, + ); + path = include; + sourceTree = ""; + }; + DBFA716A187F1D9B00A76262 /* src */ = { + isa = PBXGroup; + children = ( + DBFA716B187F1D9B00A76262 /* aarch64 */, + DBFA716E187F1D9B00A76262 /* arm */, + DBFA7172187F1D9B00A76262 /* x86 */, + ); + path = src; + sourceTree = ""; + }; + DBFA716B187F1D9B00A76262 /* aarch64 */ = { + isa = PBXGroup; + children = ( + 43E9A5DA1D35373600926A8F /* internal.h */, + DBFA716C187F1D9B00A76262 /* ffi_arm64.c */, + DBFA716D187F1D9B00A76262 /* sysv_arm64.S */, + ); + path = aarch64; + sourceTree = ""; + }; + DBFA716E187F1D9B00A76262 /* arm */ = { + isa = PBXGroup; + children = ( + 43E9A5DB1D35374400926A8F /* internal.h */, + DBFA716F187F1D9B00A76262 /* ffi_armv7.c */, + DBFA7170187F1D9B00A76262 /* sysv_armv7.S */, + ); + path = arm; + sourceTree = ""; + }; + DBFA7172187F1D9B00A76262 /* x86 */ = { + isa = PBXGroup; + children = ( + 43E9A5DC1D35375400926A8F /* internal.h */, + 43E9A5DD1D35375400926A8F /* internal64.h */, + DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */, + 43B5D3F71D35473200D1E1FD /* ffiw64_x86_64.c */, + DBFA7176187F1D9B00A76262 /* ffi_i386.c */, + 43E9A5C51D352C1500926A8F /* sysv_i386.S */, + 43E9A5C61D352C1500926A8F /* unix64_x86_64.S */, + 43B5D3F91D3547CE00D1E1FD /* win64_x86_64.S */, + ); + path = x86; + sourceTree = ""; + }; + DBFA7180187F1DA100A76262 /* darwin_osx */ = { + isa = PBXGroup; + children = ( + DBFA7181187F1DA100A76262 /* include */, + DBFA7188187F1DA100A76262 /* src */, + ); + path = darwin_osx; + sourceTree = ""; + }; + DBFA7181187F1DA100A76262 /* include */ = { + isa = PBXGroup; + children = ( + DBFA7182187F1DA100A76262 /* ffi_i386.h */, + DBFA7183187F1DA100A76262 /* ffi_x86_64.h */, + DBFA7184187F1DA100A76262 /* fficonfig_i386.h */, + DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */, + DBFA7186187F1DA100A76262 /* ffitarget_i386.h */, + DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */, + ); + path = include; + sourceTree = ""; + }; + DBFA7188187F1DA100A76262 /* src */ = { + isa = PBXGroup; + children = ( + DBFA7189187F1DA100A76262 /* x86 */, + ); + path = src; + sourceTree = ""; + }; + DBFA7189187F1DA100A76262 /* x86 */ = { + isa = PBXGroup; + children = ( + FDDB2F431F5D68C900EF414E /* internal.h */, + FDDB2F421F5D68C900EF414E /* internal64.h */, + FDDB2F3E1F5D61BC00EF414E /* asmnames.h */, + DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */, + FDDB2F3F1F5D666900EF414E /* ffiw64_x86_64.c */, + DBFA718D187F1DA100A76262 /* ffi_i386.c */, + DBFA718B187F1DA100A76262 /* sysv_i386.S */, + DBFA718A187F1DA100A76262 /* unix64_x86_64.S */, + FDDB2F441F5D68C900EF414E /* win64_x86_64.S */, + ); + path = x86; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + DB13B18F1849DF510010F42D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */, + DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */, + DBFA714A187F1D8600A76262 /* ffi.h in Headers */, + DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */, + DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */, + DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */, + DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */, + DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */, + DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */, + DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + DB13B1651849DF1E0010F42D /* libffi-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */; + buildPhases = ( + 43B5D3FB1D35480D00D1E1FD /* Run Script */, + DB13B1621849DF1E0010F42D /* Sources */, + DB13B1641849DF1E0010F42D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "libffi-iOS"; + productName = ffi; + productReference = DB13B1661849DF1E0010F42D /* libffi.a */; + productType = "com.apple.product-type.library.static"; + }; + DB13B1901849DF510010F42D /* libffi-Mac */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */; + buildPhases = ( + DB13B3061849E0490010F42D /* ShellScript */, + DB13B18D1849DF510010F42D /* Sources */, + DB13B18F1849DF510010F42D /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "libffi-Mac"; + productName = ffi; + productReference = DB13B1911849DF510010F42D /* ffi.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + FDB52FB01F6144FA00AA92E6 /* libffi-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = FDB52FC21F6144FA00AA92E6 /* Build configuration list for PBXNativeTarget "libffi-tvOS" */; + buildPhases = ( + FDB52FB11F6144FA00AA92E6 /* Run Script */, + FDB52FB21F6144FA00AA92E6 /* Sources */, + FDB52FC11F6144FA00AA92E6 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "libffi-tvOS"; + productName = ffi; + productReference = FDB52FC51F6144FA00AA92E6 /* libffi.a */; + productType = "com.apple.product-type.library.static"; + }; + FDDB2F471F5D846400EF414E /* libffi-static-Mac */ = { + isa = PBXNativeTarget; + buildConfigurationList = FDDB2F5F1F5D846400EF414E /* Build configuration list for PBXNativeTarget "libffi-static-Mac" */; + buildPhases = ( + FDDB2F481F5D846400EF414E /* ShellScript */, + FDDB2F491F5D846400EF414E /* Sources */, + FDB52FE11F6156E000AA92E6 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "libffi-static-Mac"; + productName = ffi; + productReference = FDDB2F621F5D846400EF414E /* libffi.a */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DB13B15C1849DEB70010F42D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0830; + }; + buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = DB13B15B1849DEB70010F42D; + productRefGroup = DB13B1671849DF1E0010F42D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DB13B1651849DF1E0010F42D /* libffi-iOS */, + FDB52FB01F6144FA00AA92E6 /* libffi-tvOS */, + DB13B1901849DF510010F42D /* libffi-Mac */, + FDDB2F471F5D846400EF414E /* libffi-static-Mac */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 43B5D3FB1D35480D00D1E1FD /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ ! -f \"./compile\" ]\nthen\nautoreconf -i -f -v\nif [ -f \"../ltmain.sh\" ]\nthen\necho \"fixing ltmain.sh for some reason\"\nmv ../ltmain.sh ./\nautoreconf -i -f -v\nfi\n/usr/bin/python generate-darwin-source-and-headers.py --only-ios\nfi"; + }; + DB13B3061849E0490010F42D /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ ! -f \"./compile\" ]\nthen\nautoreconf -i -f -v\nif [ -f \"../ltmain.sh\" ]\nthen\necho \"fixing ltmain.sh for some reason\"\nmv ../ltmain.sh ./\nautoreconf -i -f -v\nfi\n/usr/bin/python generate-darwin-source-and-headers.py --only-osx\nfi"; + }; + FDB52FB11F6144FA00AA92E6 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ ! -f \"./compile\" ]\nthen\nautoreconf -i -f -v\nif [ -f \"../ltmain.sh\" ]\nthen\necho \"fixing ltmain.sh for some reason\"\nmv ../ltmain.sh ./\nautoreconf -i -f -v\nfi\n/usr/bin/python generate-darwin-source-and-headers.py --only-ios\nfi"; + }; + FDDB2F481F5D846400EF414E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ ! -f \"./compile\" ]\nthen\nautoreconf -i -f -v\nif [ -f \"../ltmain.sh\" ]\nthen\necho \"fixing ltmain.sh for some reason\"\nmv ../ltmain.sh ./\nautoreconf -i -f -v\nfi\n/usr/bin/python generate-darwin-source-and-headers.py --only-osx\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DB13B1621849DF1E0010F42D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 43E9A5C81D352C1500926A8F /* unix64_x86_64.S in Sources */, + 43E9A5C71D352C1500926A8F /* sysv_i386.S in Sources */, + DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */, + DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */, + DBFA714E187F1D8600A76262 /* closures.c in Sources */, + DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */, + 43B5D3F81D35473200D1E1FD /* ffiw64_x86_64.c in Sources */, + DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */, + DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */, + DBFA7158187F1D8600A76262 /* raw_api.c in Sources */, + DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */, + DBFA715A187F1D8600A76262 /* types.c in Sources */, + DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */, + 43B5D3FA1D3547CE00D1E1FD /* win64_x86_64.S in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB13B18D1849DF510010F42D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */, + DBFA7195187F1DA100A76262 /* sysv_i386.S in Sources */, + DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */, + DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */, + FDDB2F411F5D66E200EF414E /* ffiw64_x86_64.c in Sources */, + DBFA715B187F1D8600A76262 /* types.c in Sources */, + DBFA7159187F1D8600A76262 /* raw_api.c in Sources */, + DBFA714F187F1D8600A76262 /* closures.c in Sources */, + DBFA7194187F1DA100A76262 /* unix64_x86_64.S in Sources */, + FDDB2F461F5D691E00EF414E /* win64_x86_64.S in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FDB52FB21F6144FA00AA92E6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FDB52FB31F6144FA00AA92E6 /* unix64_x86_64.S in Sources */, + FDB52FB41F6144FA00AA92E6 /* sysv_i386.S in Sources */, + FDB52FB51F6144FA00AA92E6 /* ffi64_x86_64.c in Sources */, + FDB52FB61F6144FA00AA92E6 /* ffi_armv7.c in Sources */, + FDB52FB71F6144FA00AA92E6 /* closures.c in Sources */, + FDB52FB81F6144FA00AA92E6 /* sysv_armv7.S in Sources */, + FDB52FB91F6144FA00AA92E6 /* ffiw64_x86_64.c in Sources */, + FDB52FBA1F6144FA00AA92E6 /* prep_cif.c in Sources */, + FDB52FBB1F6144FA00AA92E6 /* ffi_i386.c in Sources */, + FDB52FBC1F6144FA00AA92E6 /* raw_api.c in Sources */, + FDB52FBD1F6144FA00AA92E6 /* sysv_arm64.S in Sources */, + FDB52FBE1F6144FA00AA92E6 /* types.c in Sources */, + FDB52FBF1F6144FA00AA92E6 /* ffi_arm64.c in Sources */, + FDB52FC01F6144FA00AA92E6 /* win64_x86_64.S in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FDDB2F491F5D846400EF414E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FDDB2F4A1F5D846400EF414E /* ffi64_x86_64.c in Sources */, + FDDB2F4B1F5D846400EF414E /* sysv_i386.S in Sources */, + FDDB2F4C1F5D846400EF414E /* prep_cif.c in Sources */, + FDDB2F4D1F5D846400EF414E /* ffi_i386.c in Sources */, + FDDB2F4E1F5D846400EF414E /* ffiw64_x86_64.c in Sources */, + FDDB2F4F1F5D846400EF414E /* types.c in Sources */, + FDDB2F501F5D846400EF414E /* raw_api.c in Sources */, + FDDB2F511F5D846400EF414E /* closures.c in Sources */, + FDDB2F521F5D846400EF414E /* unix64_x86_64.S in Sources */, + FDDB2F531F5D846400EF414E /* win64_x86_64.S in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DB13B1601849DEB70010F42D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_common/include, + ); + ONLY_ACTIVE_ARCH = YES; + }; + name = Debug; + }; + DB13B1611849DEB70010F42D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_common/include, + ); + }; + name = Release; + }; + DB13B1871849DF1E0010F42D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/ffi.dst; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_ios/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = ffi; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + VALID_ARCHS = "arm64 armv7 armv7s i386 x86_64"; + }; + name = Debug; + }; + DB13B1881849DF1E0010F42D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DSTROOT = /tmp/ffi.dst; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_ios/include, + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = ffi; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + VALID_ARCHS = "arm64 armv7 armv7s i386 x86_64"; + }; + name = Release; + }; + DB13B1B11849DF520010F42D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_osx/include, + ); + MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; + PRODUCT_NAME = ffi; + SDKROOT = macosx; + }; + name = Debug; + }; + DB13B1B21849DF520010F42D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_osx/include, + ); + MACOSX_DEPLOYMENT_TARGET = 10.6; + OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; + PRODUCT_NAME = ffi; + SDKROOT = macosx; + }; + name = Release; + }; + FDB52FC31F6144FA00AA92E6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_ios/include, + ); + PRODUCT_NAME = ffi; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + FDB52FC41F6144FA00AA92E6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_ios/include, + ); + PRODUCT_NAME = ffi; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + FDDB2F601F5D846400EF414E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + EXECUTABLE_EXTENSION = a; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_osx/include, + ); + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.6; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = ffi; + SDKROOT = macosx; + }; + name = Debug; + }; + FDDB2F611F5D846400EF414E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + EXECUTABLE_EXTENSION = a; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + darwin_osx/include, + ); + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.6; + PRODUCT_NAME = ffi; + SDKROOT = macosx; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB13B1601849DEB70010F42D /* Debug */, + DB13B1611849DEB70010F42D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB13B1871849DF1E0010F42D /* Debug */, + DB13B1881849DF1E0010F42D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB13B1B11849DF520010F42D /* Debug */, + DB13B1B21849DF520010F42D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FDB52FC21F6144FA00AA92E6 /* Build configuration list for PBXNativeTarget "libffi-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FDB52FC31F6144FA00AA92E6 /* Debug */, + FDB52FC41F6144FA00AA92E6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FDDB2F5F1F5D846400EF414E /* Build configuration list for PBXNativeTarget "libffi-static-Mac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FDDB2F601F5D846400EF414E /* Debug */, + FDDB2F611F5D846400EF414E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DB13B15C1849DEB70010F42D /* Project object */; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libtool-version b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libtool-version new file mode 100644 index 0000000000..e4f5aa20d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/libtool-version @@ -0,0 +1,29 @@ +# This file is used to maintain libtool version info for libffi. See +# the libtool manual to understand the meaning of the fields. This is +# a separate file so that version updates don't involve re-running +# automake. +# +# Here are a set of rules to help you update your library version +# information: +# +# 1. Start with version information of `0:0:0' for each libtool library. +# +# 2. Update the version information only immediately before a public +# release of your software. More frequent updates are unnecessary, +# and only guarantee that the current interface number gets larger +# faster. +# +# 3. If the library source code has changed at all since the last +# update, then increment revision (`c:r:a' becomes `c:r+1:a'). +# +# 4. If any interfaces have been added, removed, or changed since the +# last update, increment current, and set revision to 0. +# +# 5. If any interfaces have been added since the last public release, +# then increment age. +# +# 6. If any interfaces have been removed since the last public +# release, then set age to 0. +# +# CURRENT:REVISION:AGE +8:0:1 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/asmcfi.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/asmcfi.m4 new file mode 100644 index 0000000000..dbf73a0b3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/asmcfi.m4 @@ -0,0 +1,13 @@ +AC_DEFUN([GCC_AS_CFI_PSEUDO_OP], +[AC_CACHE_CHECK([assembler .cfi pseudo-op support], + gcc_cv_as_cfi_pseudo_op, [ + gcc_cv_as_cfi_pseudo_op=unknown + AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],, + [gcc_cv_as_cfi_pseudo_op=yes], + [gcc_cv_as_cfi_pseudo_op=no]) + ]) + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then + AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1, + [Define if your assembler supports .cfi_* directives.]) + fi +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_append_flag.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_append_flag.m4 new file mode 100644 index 0000000000..e8c5312af6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_append_flag.m4 @@ -0,0 +1,71 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 7 + +AC_DEFUN([AX_APPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + AS_VAR_APPEND(FLAGS,[" $1"]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 new file mode 100644 index 0000000000..9e7f1ee4a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 @@ -0,0 +1,194 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CC_MAXOPT +# +# DESCRIPTION +# +# Try to turn on "good" C optimization flags for various compilers and +# architectures, for some definition of "good". (In our case, good for +# FFTW and hopefully for other scientific codes. Modify as needed.) +# +# The user can override the flags by setting the CFLAGS environment +# variable. The user can also specify --enable-portable-binary in order to +# disable any optimization flags that might result in a binary that only +# runs on the host architecture. +# +# Note also that the flags assume that ANSI C aliasing rules are followed +# by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point +# computations can be re-ordered as needed. +# +# Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR, +# AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 17 + +AC_DEFUN([AX_CC_MAXOPT], +[ +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AX_COMPILER_VENDOR]) +AC_REQUIRE([AC_CANONICAL_HOST]) + +AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], + acx_maxopt_portable=$enableval, acx_maxopt_portable=no) + +# Try to determine "good" native compiler flags if none specified via CFLAGS +if test "$ac_test_CFLAGS" != "set"; then + CFLAGS="" + case $ax_cv_c_compiler_vendor in + dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" + if test "x$acx_maxopt_portable" = xno; then + CFLAGS="$CFLAGS -arch host" + fi;; + + sun) CFLAGS="-native -fast -xO5 -dalign" + if test "x$acx_maxopt_portable" = xyes; then + CFLAGS="$CFLAGS -xarch=generic" + fi;; + + hp) CFLAGS="+Oall +Optrs_ansi +DSnative" + if test "x$acx_maxopt_portable" = xyes; then + CFLAGS="$CFLAGS +DAportable" + fi;; + + ibm) if test "x$acx_maxopt_portable" = xno; then + xlc_opt="-qarch=auto -qtune=auto" + else + xlc_opt="-qtune=auto" + fi + AX_CHECK_COMPILE_FLAG($xlc_opt, + CFLAGS="-O3 -qansialias -w $xlc_opt", + [CFLAGS="-O3 -qansialias -w" + echo "******************************************************" + echo "* You seem to have the IBM C compiler. It is *" + echo "* recommended for best performance that you use: *" + echo "* *" + echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" + echo "* ^^^ ^^^ *" + echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" + echo "* CPU you have. (Set the CFLAGS environment var. *" + echo "* and re-run configure.) For more info, man cc. *" + echo "******************************************************"]) + ;; + + intel) CFLAGS="-O3 -ansi_alias" + if test "x$acx_maxopt_portable" = xno; then + icc_archflag=unknown + icc_flags="" + case $host_cpu in + i686*|x86_64*) + # icc accepts gcc assembly syntax, so these should work: + AX_GCC_X86_CPUID(0) + AX_GCC_X86_CPUID(1) + case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG + *:756e6547:6c65746e:49656e69) # Intel + case $ax_cv_gcc_x86_cpuid_1 in + *0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) icc_flags="-xK" ;; + *0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) icc_flags="-xSSE2 -xB -xK" ;; + *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) icc_flags="-xSSE3 -xP -xO -xB -xK" ;; + *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) icc_flags="-xSSSE3 -xT -xB -xK" ;; + *1?6[[7d]]?:*:*:*) icc_flags="-xSSE4.1 -xS -xT -xB -xK" ;; + *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) icc_flags="-xSSE4.2 -xS -xT -xB -xK" ;; + *2?6[[ad]]?:*:*:*) icc_flags="-xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *3?6[[ae]]?:*:*:*) icc_flags="-xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) icc_flags="-xCORE-AVX2 -xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) icc_flags="-xSSE3 -xP -xO -xN -xW -xK" ;; + *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) icc_flags="-xSSE2 -xN -xW -xK" ;; + esac ;; + esac ;; + esac + if test "x$icc_flags" != x; then + for flag in $icc_flags; do + AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break]) + done + fi + AC_MSG_CHECKING([for icc architecture flag]) + AC_MSG_RESULT($icc_archflag) + if test "x$icc_archflag" != xunknown; then + CFLAGS="$CFLAGS $icc_archflag" + fi + fi + ;; + + gnu) + # default optimization flags for gcc on all systems + CFLAGS="-O3 -fomit-frame-pointer" + + # -malign-double for x86 systems + # libffi local change -- don't align double, as it changes the ABI + # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") + + # -fstrict-aliasing for gcc-2.95+ + AX_CHECK_COMPILE_FLAG(-fstrict-aliasing, + CFLAGS="$CFLAGS -fstrict-aliasing") + + # note that we enable "unsafe" fp optimization with other compilers, too + AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math") + + AX_GCC_ARCHFLAG($acx_maxopt_portable) + ;; + + microsoft) + # default optimization flags for MSVC opt builds + CFLAGS="-O2" + ;; + esac + + if test -z "$CFLAGS"; then + echo "" + echo "********************************************************" + echo "* WARNING: Don't know the best CFLAGS for this system *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" + echo "********************************************************" + echo "" + CFLAGS="-O3" + fi + + AX_CHECK_COMPILE_FLAG($CFLAGS, [], [ + echo "" + echo "********************************************************" + echo "* WARNING: The guessed CFLAGS don't seem to work with *" + echo "* your compiler. *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "********************************************************" + echo "" + CFLAGS="" + ]) + +fi +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 new file mode 100644 index 0000000000..094577e458 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 @@ -0,0 +1,122 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# +# DESCRIPTION +# +# Try to find a compiler option that enables most reasonable warnings. +# +# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result +# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. +# +# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, +# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and +# Intel compilers. For a given compiler, the Fortran flags are much more +# experimental than their C equivalents. +# +# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS +# - $2 add-value-if-not-found : nothing +# - $3 action-if-found : add value to shellvariable +# - $4 action-if-not-found : nothing +# +# NOTE: These macros depend on AX_APPEND_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2010 Rhys Ulerich +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 16 + +AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl +AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], +VAR,[VAR="no, unknown" +ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-warn all % -warn all" dnl Intel + "-pedantic % -Wall" dnl GCC + "-xstrconst % -v" dnl Solaris C + "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix + "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX + "-ansi -ansiE % -fullwarn" dnl IRIX + "+ESlit % +w1" dnl HP-UX C + "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) + "-h conform % -h msglevel 2" dnl Cray C (Unicos) + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) +done +FLAGS="$ac_save_[]FLAGS" +]) +AS_VAR_POPDEF([FLAGS])dnl +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; + *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +])dnl AX_FLAGS_WARN_ALL +dnl implementation tactics: +dnl the for-argument contains a list of options. The first part of +dnl these does only exist to detect the compiler - usually it is +dnl a global option to enable -ansi or -extrawarnings. All other +dnl compilers will fail about it. That was needed since a lot of +dnl compilers will give false positives for some option-syntax +dnl like -Woption or -Xoption as they think of it is a pass-through +dnl to later compile stages or something. The "%" is used as a +dnl delimiter. A non-option comment can be given after "%%" marks +dnl which will be shown but not added to the respective C/CXXFLAGS. + +AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([C]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([C]) +]) + +AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([C++]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([C++]) +]) + +AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([Fortran]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([Fortran]) +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 new file mode 100644 index 0000000000..dcabb92a14 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 @@ -0,0 +1,74 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 5 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 new file mode 100644 index 0000000000..4ca8089555 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 @@ -0,0 +1,87 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPILER_VENDOR +# +# DESCRIPTION +# +# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun, +# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft, +# watcom, etc. The vendor is returned in the cache variable +# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 16 + +AC_DEFUN([AX_COMPILER_VENDOR], +[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, + dnl Please add if possible support to ax_compiler_version.m4 + [# note: don't check for gcc first since some other compilers define __GNUC__ + vendors="intel: __ICC,__ECC,__INTEL_COMPILER + ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ + pathscale: __PATHCC__,__PATHSCALE__ + clang: __clang__ + cray: _CRAYC + fujitsu: __FUJITSU + gnu: __GNUC__ + sun: __SUNPRO_C,__SUNPRO_CC + hp: __HP_cc,__HP_aCC + dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER + borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ + comeau: __COMO__ + kai: __KCC + lcc: __LCC__ + sgi: __sgi,sgi + microsoft: _MSC_VER + metrowerks: __MWERKS__ + watcom: __WATCOMC__ + portland: __PGI + tcc: __TINYC__ + unknown: UNKNOWN" + for ventest in $vendors; do + case $ventest in + *:) vendor=$ventest; continue ;; + *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; + esac + AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ + #if !($vencpp) + thisisanerror; + #endif + ])], [break]) + done + ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` + ]) +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_configure_args.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_configure_args.m4 new file mode 100644 index 0000000000..95f9f64114 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_configure_args.m4 @@ -0,0 +1,70 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_configure_args.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CONFIGURE_ARGS +# +# DESCRIPTION +# +# Helper macro for AX_ENABLE_BUILDDIR. +# +# The traditional way of starting a subdir-configure is running the script +# with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have +# to rely on eval'ing $ac_configure_args however some old autoconf +# versions do not provide that. To ensure maximum portability of autoconf +# extension macros this helper can be AC_REQUIRE'd so that +# $ac_configure_args will always be present. +# +# Sadly, the traditional "exec $SHELL" of the enable_builddir macros is +# spoiled now and must be replaced by "eval + exit $?". +# +# Example: +# +# AC_DEFUN([AX_ENABLE_SUBDIR],[dnl +# AC_REQUIRE([AX_CONFIGURE_ARGS])dnl +# eval $SHELL $ac_configure_args || exit $? +# ...]) +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 13 + +AC_DEFUN([AX_CONFIGURE_ARGS],[ + # [$]@ is unusable in 2.60+ but earlier autoconf had no ac_configure_args + if test "${ac_configure_args+set}" != "set" ; then + ac_configure_args= + for ac_arg in ${1+"[$]@"}; do + ac_configure_args="$ac_configure_args '$ac_arg'" + done + fi +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 new file mode 100644 index 0000000000..710384da54 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 @@ -0,0 +1,302 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])] +# +# DESCRIPTION +# +# If the current configure was run within the srcdir then we move all +# configure-files into a subdir and let the configure steps continue +# there. We provide an option --disable-builddir to suppress the move into +# a separate builddir. +# +# Defaults: +# +# $1 = $host (overridden with $HOST) +# $2 = Makefile.mk +# $3 = -all +# +# This macro must be called before AM_INIT_AUTOMAKE. It creates a default +# toplevel srcdir Makefile from the information found in the created +# toplevel builddir Makefile. It just copies the variables and +# rule-targets, each extended with a default rule-execution that recurses +# into the build directory of the current "HOST". You can override the +# auto-detection through `config.guess` and build-time of course, as in +# +# make HOST=i386-mingw-cross +# +# which can of course set at configure time as well using +# +# configure --host=i386-mingw-cross +# +# After the default has been created, additional rules can be appended +# that will not just recurse into the subdirectories and only ever exist +# in the srcdir toplevel makefile - these parts are read from the $2 = +# Makefile.mk file +# +# The automatic rules are usually scanning the toplevel Makefile for lines +# like '#### $host |$builddir' to recognize the place where to recurse +# into. Usually, the last one is the only one used. However, almost all +# targets have an additional "*-all" rule which makes the script to +# recurse into _all_ variants of the current HOST (!!) setting. The "-all" +# suffix can be overridden for the macro as well. +# +# a special rule is only given for things like "dist" that will copy the +# tarball from the builddir to the sourcedir (or $(PUB)) for reason of +# convenience. +# +# LICENSE +# +# Copyright (c) 2009 Guido U. Draheim +# Copyright (c) 2009 Alan Jenkins +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 30 + +AC_DEFUN([AX_ENABLE_BUILDDIR],[ +AC_REQUIRE([AC_CANONICAL_HOST])[]dnl +AC_REQUIRE([AC_CANONICAL_TARGET])[]dnl +AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl +AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl +SUB="." +AC_ARG_ENABLE([builddir], AS_HELP_STRING( + [--disable-builddir],[disable automatic build in subdir of sources]) + ,[SUB="$enableval"], [SUB="auto"]) +if test ".$ac_srcdir_defaulted" != ".no" ; then +if test ".$srcdir" = ".." ; then + if test -f config.status ; then + AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build) + else + test ".$SUB" = "." && SUB="." + test ".$SUB" = ".no" && SUB="." + test ".$TARGET" = "." && TARGET="$target" + test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])" + if test ".$SUB" != ".." ; then # we know where to go and + AS_MKDIR_P([$SUB]) + echo __.$SUB.__ > $SUB/conftest.tmp + cd $SUB + if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then + rm conftest.tmp + AC_MSG_RESULT([continue configure in default builddir "./$SUB"]) + else + AC_MSG_ERROR([could not change to default builddir "./$SUB"]) + fi + srcdir=`echo "$SUB" | + sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'` + # going to restart from subdirectory location + test -f $srcdir/config.log && mv $srcdir/config.log . + test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . + test -f $srcdir/conftest.log && mv $srcdir/conftest.log . + test -f $srcdir/$cache_file && mv $srcdir/$cache_file . + AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"}) + case "[$]0" in # restart + [[\\/]]* | ?:[[\\/]]*) # Absolute name + eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; + *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; + esac ; exit $? + fi + fi +fi fi +test ".$SUB" = ".auto" && SUB="." +dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec" +AC_PATH_PROG(SED,gsed sed, sed) +AUX="$am_aux_dir" +AS_VAR_POPDEF([SED])dnl +AS_VAR_POPDEF([AUX])dnl +AS_VAR_POPDEF([SUB])dnl +AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status .............. +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl +AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl +AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl +pushdef([END],[Makefile.mk])dnl +pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl + SRC="$ax_enable_builddir_srcdir" + if test ".$SUB" = ".." ; then + if test -f "$TOP/Makefile" ; then + AC_MSG_NOTICE([skipping TOP/Makefile - left untouched]) + else + AC_MSG_NOTICE([skipping TOP/Makefile - not created]) + fi + else + if test -f "$SRC/Makefile" ; then + a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile` + test "$a" != "$b" && rm "$SRC/Makefile" + fi + if test -f "$SRC/Makefile" ; then + echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk + echo " []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk + eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" + if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null + then rm $SRC/Makefile ; fi + cp $tmp/conftemp.mk $SRC/makefiles.mk~ ## DEBUGGING + fi + if test ! -f "$SRC/Makefile" ; then + AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile]) + x='`' ; cat >$tmp/conftemp.sed <<_EOF +/^\$/n +x +/^\$/bS +x +/\\\\\$/{H;d;} +{H;s/.*//;x;} +bM +:S +x +/\\\\\$/{h;d;} +{h;s/.*//;x;} +:M +s/\\(\\n\\) /\\1 /g +/^ /d +/^[[ ]]*[[\\#]]/d +/^VPATH *=/d +s/^srcdir *=.*/srcdir = ./ +s/^top_srcdir *=.*/top_srcdir = ./ +/[[:=]]/!d +/^\\./d +dnl Now handle rules (i.e. lines containing ":" but not " = "). +/ = /b +/ .= /b +/:/!b +s/:.*/:/ +s/ / /g +s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g +s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/ +s/ / /g +/^all all[]_ALL[[ :]]/i\\ +all-configured : all[]_ALL +dnl dist-all exists... and would make for dist-all-all +s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g +/[]_ALL[]_ALL/d +a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ + ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ + ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done +dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree) +/dist[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ + ; if test "\$\$found" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done +dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree) +/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ + ; if test "\$\$found" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done +dnl special rule add-on: "distclean" removes all local builddirs completely +/distclean[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ + ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ + ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ + ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile +_EOF + cp "$tmp/conftemp.sed" "$SRC/makefile.sed~" ## DEBUGGING + $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile + if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then + AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])]) + cat $SRC/END >>$SRC/Makefile + fi ; xxxx="####" + echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile + # sanity check + if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then + AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts]) + $SED -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $SRC/Makefile \ + >$SRC/Makefile~ + (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null + fi + else + xxxx="\\#\\#\\#\\#" + # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed + echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed + $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp + cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~" ## DEBUGGING + cp "$tmp/mkfile.tmp" "$SRC/makefiles.out~" ## DEBUGGING + if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then + AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure]) + rm "$tmp/mkfile.tmp" + else + AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure]) + mv "$tmp/mkfile.tmp" "$SRC/Makefile" + fi + fi + AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)]) + xxxx="####" + echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile + fi +popdef([END])dnl +AS_VAR_POPDEF([SED])dnl +AS_VAR_POPDEF([AUX])dnl +AS_VAR_POPDEF([SRC])dnl +AS_VAR_POPDEF([TOP])dnl +AS_VAR_POPDEF([SUB])dnl +],[dnl +ax_enable_builddir_srcdir="$srcdir" # $srcdir +ax_enable_builddir_host="$HOST" # $HOST / $host +ax_enable_builddir_version="$VERSION" # $VERSION +ax_enable_builddir_package="$PACKAGE" # $PACKAGE +ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX +ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED +ax_enable_builddir="$ax_enable_builddir" # $SUB +])dnl +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 new file mode 100644 index 0000000000..d4a37f8ab1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 @@ -0,0 +1,263 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE]) +# +# DESCRIPTION +# +# This macro tries to guess the "native" arch corresponding to the target +# architecture for use with gcc's -march=arch or -mtune=arch flags. If +# found, the cache variable $ax_cv_gcc_archflag is set to this flag and +# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to +# "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is +# to add $ax_cv_gcc_archflag to the end of $CFLAGS. +# +# PORTABLE? should be either [yes] (default) or [no]. In the former case, +# the flag is set to -mtune (or equivalent) so that the architecture is +# only used for tuning, but the instruction set used is still portable. In +# the latter case, the flag is set to -march (or equivalent) so that +# architecture-specific instructions are enabled. +# +# The user can specify --with-gcc-arch= in order to override the +# macro's choice of architecture, or --without-gcc-arch to disable this. +# +# When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is +# called unless the user specified --with-gcc-arch manually. +# +# Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID +# +# (The main emphasis here is on recent CPUs, on the principle that doing +# high-performance computing on old hardware is uncommon.) +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# Copyright (c) 2014 Tsukasa Oi +# Copyright (c) 2017 Alexey Kopytov +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 20 + +AC_DEFUN([AX_GCC_ARCHFLAG], +[AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_SED]) +AC_REQUIRE([AX_COMPILER_VENDOR]) + +AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], + ax_gcc_arch=$withval, ax_gcc_arch=yes) + +AC_MSG_CHECKING([for gcc architecture flag]) +AC_MSG_RESULT([]) +AC_CACHE_VAL(ax_cv_gcc_archflag, +[ +ax_cv_gcc_archflag="unknown" + +if test "$GCC" = yes; then + +if test "x$ax_gcc_arch" = xyes; then +ax_gcc_arch="" +if test "$cross_compiling" = no; then +case $host_cpu in + i[[3456]]86*|x86_64*|amd64*) # use cpuid codes + AX_GCC_X86_CPUID(0) + AX_GCC_X86_CPUID(1) + case $ax_cv_gcc_x86_cpuid_0 in + *:756e6547:6c65746e:49656e69) # Intel + case $ax_cv_gcc_x86_cpuid_1 in + *5[[4578]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; + *5[[123]]?:*:*:*) ax_gcc_arch=pentium ;; + *0?61?:*:*:*|?61?:*:*:*|61?:*:*:*) ax_gcc_arch=pentiumpro ;; + *0?6[[356]]?:*:*:*|?6[[356]]?:*:*:*|6[[356]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; + *0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; + *0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; + *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) ax_gcc_arch="yonah pentium-m pentium3 pentiumpro" ;; + *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; + *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; + *1?6[[aef]]?:*:*:*|*2?6e?:*:*:*) ax_gcc_arch="nehalem corei7 core2 pentium-m pentium3 pentiumpro" ;; + *2?6[[5cf]]?:*:*:*) ax_gcc_arch="westmere corei7 core2 pentium-m pentium3 pentiumpro" ;; + *2?6[[ad]]?:*:*:*) ax_gcc_arch="sandybridge corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6[[ae]]?:*:*:*) ax_gcc_arch="ivybridge core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) ax_gcc_arch="haswell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6d?:*:*:*) ax_gcc_arch="broadwell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *1?6c?:*:*:*|*2?6[[67]]?:*:*:*|*3?6[[56]]?:*:*:*) ax_gcc_arch="bonnell atom core2 pentium-m pentium3 pentiumpro" ;; + *3?67?:*:*:*|*[[45]]?6[[ad]]?:*:*:*) ax_gcc_arch="silvermont atom core2 pentium-m pentium3 pentiumpro" ;; + *000?f[[012]]?:*:*:*|?f[[012]]?:*:*:*|f[[012]]?:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; + *000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) ax_gcc_arch="nocona prescott pentium4 pentiumpro" ;; + # fallback + *5??:*:*:*) ax_gcc_arch=pentium ;; + *??6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; + *6??:*:*:*) ax_gcc_arch=pentiumpro ;; + *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; + esac ;; + *:68747541:444d4163:69746e65) # AMD + case $ax_cv_gcc_x86_cpuid_1 in + *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; + *5[[8]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; + *5[[9d]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; + *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; + *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; + *6[[678a]]?:*:*:*) ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; + *000?f[[4578bcef]]?:*:*:*|?f[[4578bcef]]?:*:*:*|f[[4578bcef]]?:*:*:*|*001?f[[4578bcf]]?:*:*:*|1?f[[4578bcf]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; + *002?f[[13457bcf]]?:*:*:*|2?f[[13457bcf]]?:*:*:*|*004?f[[138bcf]]?:*:*:*|4?f[[138bcf]]?:*:*:*|*005?f[[df]]?:*:*:*|5?f[[df]]?:*:*:*|*006?f[[8bcf]]?:*:*:*|6?f[[8bcf]]?:*:*:*|*007?f[[cf]]?:*:*:*|7?f[[cf]]?:*:*:*|*00c?f1?:*:*:*|c?f1?:*:*:*|*020?f3?:*:*:*|20?f3?:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; + *010?f[[245689a]]?:*:*:*|10?f[[245689a]]?:*:*:*|*030?f1?:*:*:*|30?f1?:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; + *050?f[[12]]?:*:*:*|50?f[[12]]?:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; + *060?f1?:*:*:*|60?f1?:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; + *060?f2?:*:*:*|60?f2?:*:*:*|*061?f[[03]]?:*:*:*|61?f[[03]]?:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; + *063?f0?:*:*:*|63?f0?:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; + *07[[03]]?f0?:*:*:*|7[[03]]?f0?:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; + # fallback + *0[[13]]??f??:*:*:*|[[13]]??f??:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; + *020?f??:*:*:*|20?f??:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; + *05??f??:*:*:*|5??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; + *060?f??:*:*:*|60?f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; + *061?f??:*:*:*|61?f??:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; + *06??f??:*:*:*|6??f??:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; + *070?f??:*:*:*|70?f??:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; + *???f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; + esac ;; + *:746e6543:736c7561:48727561) # IDT / VIA (Centaur) + case $ax_cv_gcc_x86_cpuid_1 in + *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; + *5[[89]]?:*:*:*) ax_gcc_arch=winchip2 ;; + *66?:*:*:*) ax_gcc_arch=winchip2 ;; + *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; + *6[[9adf]]?:*:*:*) ax_gcc_arch="c3-2 c3" ;; + esac ;; + esac + if test x"$ax_gcc_arch" = x; then # fallback + case $host_cpu in + i586*) ax_gcc_arch=pentium ;; + i686*) ax_gcc_arch=pentiumpro ;; + esac + fi + ;; + + sparc*) + AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) + cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` + cputype=`echo "$cputype" | tr -d ' -' | $SED 's/SPARCIIi/SPARCII/' |tr $as_cr_LETTERS $as_cr_letters` + case $cputype in + *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; + *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; + *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; + *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; + *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; + *cypress*) ax_gcc_arch=cypress ;; + esac ;; + + alphaev5) ax_gcc_arch=ev5 ;; + alphaev56) ax_gcc_arch=ev56 ;; + alphapca56) ax_gcc_arch="pca56 ev56" ;; + alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; + alphaev6) ax_gcc_arch=ev6 ;; + alphaev67) ax_gcc_arch=ev67 ;; + alphaev68) ax_gcc_arch="ev68 ev67" ;; + alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; + alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; + alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; + + powerpc*) + cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | $SED 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` + cputype=`echo $cputype | $SED -e 's/ppc//g;s/ *//g'` + case $cputype in + *750*) ax_gcc_arch="750 G3" ;; + *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; + *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; + *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; + *970*) ax_gcc_arch="970 G5 power4";; + *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; + *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; + 603ev|8240) ax_gcc_arch="$cputype 603e 603";; + *) ax_gcc_arch=$cputype ;; + esac + ax_gcc_arch="$ax_gcc_arch powerpc" + ;; + aarch64) + cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + case $cpuimpl in + 0x42) case $cpuarch in + 8) case $cpuvar in + 0x0) ax_gcc_arch="thunderx2t99 vulcan armv8.1-a armv8-a+lse armv8-a native" ;; + esac + ;; + esac + ;; + 0x43) case $cpuarch in + 8) case $cpuvar in + 0x0) ax_gcc_arch="thunderx armv8-a native" ;; + 0x1) ax_gcc_arch="thunderx+lse armv8.1-a armv8-a+lse armv8-a native" ;; + esac + ;; + esac + ;; + esac + ;; +esac +fi # not cross-compiling +fi # guess arch + +if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then +if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code + flag_prefixes="-mtune=" + if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then flag_prefixes="-march="; fi + # -mcpu=$arch and m$arch generate nonportable code on every arch except + # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. + case $host_cpu in i*86|x86_64*|amd64*) flag_prefixes="$flag_prefixes -mcpu= -m";; esac +else + flag_prefixes="-march= -mcpu= -m" +fi +for flag_prefix in $flag_prefixes; do + for arch in $ax_gcc_arch; do + flag="$flag_prefix$arch" + AX_CHECK_COMPILE_FLAG($flag, [if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then + if test "x[]m4_default([$1],yes)" = xyes; then + if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi + fi + fi; ax_cv_gcc_archflag=$flag; break]) + done + test "x$ax_cv_gcc_archflag" = xunknown || break +done +fi + +fi # $GCC=yes +]) +AC_MSG_CHECKING([for gcc architecture flag]) +AC_MSG_RESULT($ax_cv_gcc_archflag) +if test "x$ax_cv_gcc_archflag" = xunknown; then + m4_default([$3],:) +else + m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) +fi +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 new file mode 100644 index 0000000000..df954658ee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 @@ -0,0 +1,89 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_X86_CPUID(OP) +# AX_GCC_X86_CPUID_COUNT(OP, COUNT) +# +# DESCRIPTION +# +# On Pentium and later x86 processors, with gcc or a compiler that has a +# compatible syntax for inline assembly instructions, run a small program +# that executes the cpuid instruction with input OP. This can be used to +# detect the CPU type. AX_GCC_X86_CPUID_COUNT takes an additional COUNT +# parameter that gets passed into register ECX before calling cpuid. +# +# On output, the values of the eax, ebx, ecx, and edx registers are stored +# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable +# ax_cv_gcc_x86_cpuid_OP. +# +# If the cpuid instruction fails (because you are running a +# cross-compiler, or because you are not using gcc, or because you are on +# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP +# is set to the string "unknown". +# +# This macro mainly exists to be used in AX_GCC_ARCHFLAG. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# Copyright (c) 2015 Michael Petch +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AC_DEFUN([AX_GCC_X86_CPUID], +[AX_GCC_X86_CPUID_COUNT($1, 0) +]) + +AC_DEFUN([AX_GCC_X86_CPUID_COUNT], +[AC_REQUIRE([AC_PROG_CC]) +AC_LANG_PUSH([C]) +AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, + [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ + int op = $1, level = $2, eax, ebx, ecx, edx; + FILE *f; + __asm__ __volatile__ ("xchg %%ebx, %1\n" + "cpuid\n" + "xchg %%ebx, %1\n" + : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) + : "a" (op), "2" (level)); + + f = fopen("conftest_cpuid", "w"); if (!f) return 1; + fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); + fclose(f); + return 0; +])], + [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown])]) +AC_LANG_POP([C]) +]) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_require_defined.m4 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_require_defined.m4 new file mode 100644 index 0000000000..17c3eab7da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/m4/ax_require_defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/Makefile.am b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/Makefile.am new file mode 100644 index 0000000000..afcbfb69f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/Makefile.am @@ -0,0 +1,8 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS=foreign + +EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 + +man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi.3 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi.3 new file mode 100644 index 0000000000..1f1d3031c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi.3 @@ -0,0 +1,41 @@ +.Dd February 15, 2008 +.Dt FFI 3 +.Sh NAME +.Nm FFI +.Nd Foreign Function Interface +.Sh LIBRARY +libffi, -lffi +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Ft void +.Fo ffi_prep_cif_var +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nfixedargs" +.Fa "unsigned int ntotalargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Ft void +.Fo ffi_call +.Fa "ffi_cif *cif" +.Fa "void (*fn)(void)" +.Fa "void *rvalue" +.Fa "void **avalue" +.Fc +.Sh DESCRIPTION +The foreign function interface provides a mechanism by which a function can +generate a call to another function at runtime without requiring knowledge of +the called function's interface at compile time. +.Sh SEE ALSO +.Xr ffi_prep_cif 3 , +.Xr ffi_prep_cif_var 3 , +.Xr ffi_call 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_call.3 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_call.3 new file mode 100644 index 0000000000..5351513f90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_call.3 @@ -0,0 +1,103 @@ +.Dd February 15, 2008 +.Dt ffi_call 3 +.Sh NAME +.Nm ffi_call +.Nd Invoke a foreign function. +.Sh SYNOPSIS +.In ffi.h +.Ft void +.Fo ffi_call +.Fa "ffi_cif *cif" +.Fa "void (*fn)(void)" +.Fa "void *rvalue" +.Fa "void **avalue" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_call +function provides a simple mechanism for invoking a function without +requiring knowledge of the function's interface at compile time. +.Fa fn +is called with the values retrieved from the pointers in the +.Fa avalue +array. The return value from +.Fa fn +is placed in storage pointed to by +.Fa rvalue . +.Fa cif +contains information describing the data types, sizes and alignments of the +arguments to and return value from +.Fa fn , +and must be initialized with +.Nm ffi_prep_cif +before it is used with +.Nm ffi_call . +.Pp +.Fa rvalue +must point to storage that is sizeof(ffi_arg) or larger for non-floating point +types. For smaller-sized return value types, the +.Nm ffi_arg +or +.Nm ffi_sarg +integral type must be used to hold +the return value. +.Sh EXAMPLES +.Bd -literal +#include +#include + +unsigned char +foo(unsigned int, float); + +int +main(int argc, const char **argv) +{ + ffi_cif cif; + ffi_type *arg_types[2]; + void *arg_values[2]; + ffi_status status; + + // Because the return value from foo() is smaller than sizeof(long), it + // must be passed as ffi_arg or ffi_sarg. + ffi_arg result; + + // Specify the data type of each argument. Available types are defined + // in . + arg_types[0] = &ffi_type_uint; + arg_types[1] = &ffi_type_float; + + // Prepare the ffi_cif structure. + if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, + 2, &ffi_type_uint8, arg_types)) != FFI_OK) + { + // Handle the ffi_status error. + } + + // Specify the values of each argument. + unsigned int arg1 = 42; + float arg2 = 5.1; + + arg_values[0] = &arg1; + arg_values[1] = &arg2; + + // Invoke the function. + ffi_call(&cif, FFI_FN(foo), &result, arg_values); + + // The ffi_arg 'result' now contains the unsigned char returned from foo(), + // which can be accessed by a typecast. + printf("result is %hhu", (unsigned char)result); + + return 0; +} + +// The target function. +unsigned char +foo(unsigned int x, float y) +{ + unsigned char result = x - y; + return result; +} +.Ed +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_prep_cif 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif.3 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif.3 new file mode 100644 index 0000000000..ab2be8adc1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif.3 @@ -0,0 +1,68 @@ +.Dd February 15, 2008 +.Dt ffi_prep_cif 3 +.Sh NAME +.Nm ffi_prep_cif +.Nd Prepare a +.Nm ffi_cif +structure for use with +.Nm ffi_call +. +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_prep_cif +function prepares a +.Nm ffi_cif +structure for use with +.Nm ffi_call +. +.Fa abi +specifies a set of calling conventions to use. +.Fa atypes +is an array of +.Fa nargs +pointers to +.Nm ffi_type +structs that describe the data type, size and alignment of each argument. +.Fa rtype +points to an +.Nm ffi_type +that describes the data type, size and alignment of the +return value. Note that to call a variadic function +.Nm ffi_prep_cif_var +must be used instead. +.Sh RETURN VALUES +Upon successful completion, +.Nm ffi_prep_cif +returns +.Nm FFI_OK . +It will return +.Nm FFI_BAD_TYPEDEF +if +.Fa cif +is +.Nm NULL +or +.Fa atypes +or +.Fa rtype +is malformed. If +.Fa abi +does not refer to a valid ABI, +.Nm FFI_BAD_ABI +will be returned. Available ABIs are +defined in +.Nm . +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_call 3 , +.Xr ffi_prep_cif_var 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 new file mode 100644 index 0000000000..7e19d0b070 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 @@ -0,0 +1,73 @@ +.Dd January 25, 2011 +.Dt ffi_prep_cif_var 3 +.Sh NAME +.Nm ffi_prep_cif_var +.Nd Prepare a +.Nm ffi_cif +structure for use with +.Nm ffi_call +for variadic functions. +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif_var +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nfixedargs" +.Fa "unsigned int ntotalargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_prep_cif_var +function prepares a +.Nm ffi_cif +structure for use with +.Nm ffi_call +for variadic functions. +.Fa abi +specifies a set of calling conventions to use. +.Fa atypes +is an array of +.Fa ntotalargs +pointers to +.Nm ffi_type +structs that describe the data type, size and alignment of each argument. +.Fa rtype +points to an +.Nm ffi_type +that describes the data type, size and alignment of the +return value. +.Fa nfixedargs +must contain the number of fixed (non-variadic) arguments. +Note that to call a non-variadic function +.Nm ffi_prep_cif +must be used. +.Sh RETURN VALUES +Upon successful completion, +.Nm ffi_prep_cif_var +returns +.Nm FFI_OK . +It will return +.Nm FFI_BAD_TYPEDEF +if +.Fa cif +is +.Nm NULL +or +.Fa atypes +or +.Fa rtype +is malformed. If +.Fa abi +does not refer to a valid ABI, +.Nm FFI_BAD_ABI +will be returned. Available ABIs are +defined in +.Nm +. +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_call 3 , +.Xr ffi_prep_cif 3 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/msvcc.sh b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/msvcc.sh new file mode 100755 index 0000000000..9a252f8ffc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/msvcc.sh @@ -0,0 +1,328 @@ +#!/bin/sh + +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the MSVC wrappificator. +# +# The Initial Developer of the Original Code is +# Timothy Wall . +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Daniel Witte +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +# +# GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC +# format and translated into something sensible for cl or ml. +# + +args_orig=$@ +args="-nologo -W3" +linkargs= +static_crt= +debug_crt= +cl="cl" +ml="ml" +safeseh="-safeseh" +output= +libpaths= +libversion=7 +verbose= + +while [ $# -gt 0 ] +do + case $1 + in + --verbose) + $verbose=1 + shift 1 + ;; + --version) + args="-help" + shift 1 + ;; + -fexceptions) + # Don't enable exceptions for now. + #args="$args -EHac" + shift 1 + ;; + -m32) + shift 1 + ;; + -m64) + ml="ml64" # "$MSVC/x86_amd64/ml64" + safeseh= + shift 1 + ;; + -clang-cl) + cl="clang-cl" + shift 1 + ;; + -O0) + args="$args -Od" + shift 1 + ;; + -O*) + # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG + # case below) are not compatible with optimization flags and will + # cause the build to fail. Therefore, drop the optimization flag if + # -DFFI_DEBUG is also set. + case $args_orig in + *-DFFI_DEBUG*) + args="$args" + ;; + *) + # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive + # project doesn't support MSVC and therefore ends up trying to + # use -O3. Use the equivalent "max optimization" flag for MSVC + # instead of erroring out. + case $1 in + -O3) + args="$args -O2" + ;; + *) + args="$args $1" + ;; + esac + opt="true" + ;; + esac + shift 1 + ;; + -g) + # Enable debug symbol generation. + args="$args -Zi" + shift 1 + ;; + -DFFI_DEBUG) + # Enable runtime error checks. + args="$args -RTC1" + defines="$defines $1" + shift 1 + ;; + -DUSE_STATIC_RTL) + # Link against static CRT. + static_crt=1 + shift 1 + ;; + -DUSE_DEBUG_RTL) + # Link against debug CRT. + debug_crt=1 + shift 1 + ;; + -c) + args="$args -c" + args="$(echo $args | sed 's%/Fe%/Fo%g')" + single="-c" + shift 1 + ;; + -D*=*) + name="$(echo $1|sed 's/-D\([^=][^=]*\)=.*/\1/g')" + value="$(echo $1|sed 's/-D[^=][^=]*=//g')" + args="$args -D${name}='$value'" + defines="$defines -D${name}='$value'" + shift 1 + ;; + -D*) + args="$args $1" + defines="$defines $1" + shift 1 + ;; + -I) + p=$(cygpath -m $2) + args="$args -I$p" + includes="$includes -I$p" + shift 2 + ;; + -I*) + p=$(cygpath -m ${1#-I}) + args="$args -I$p" + includes="$includes -I$p" + shift 1 + ;; + -L) + p=$(cygpath -m $2) + linkargs="$linkargs -LIBPATH:$p" + shift 2 + ;; + -L*) + p=$(cygpath -m ${1#-L}) + linkargs="$linkargs -LIBPATH:$p" + shift 1 + ;; + -link) + # add next argument verbatim to linker args + linkargs="$linkargs $2" + shift 2 + ;; + -l*) + case $1 + in + -lffi) + linkargs="$linkargs lib${1#-l}-${libversion}.lib" + ;; + *) + # ignore other libraries like -lm, hope they are + # covered by MSVCRT + # linkargs="$linkargs ${1#-l}.lib" + ;; + esac + shift 1 + ;; + -W|-Wextra) + # TODO map extra warnings + shift 1 + ;; + -Wall) + # -Wall on MSVC is overzealous, and we already build with -W3. Nothing + # to do here. + shift 1 + ;; + -pedantic) + # libffi tests -pedantic with -Wall, so drop it also. + shift 1 + ;; + -warn) + # ignore -warn all from libtool as well. + if test "$2" = "all"; then + shift 2 + else + args="$args -warn" + shift 1 + fi + ;; + -Werror) + args="$args -WX" + shift 1 + ;; + -W*) + # TODO map specific warnings + shift 1 + ;; + -S) + args="$args -FAs" + shift 1 + ;; + -o) + outdir="$(dirname $2)" + base="$(basename $2|sed 's/\.[^.]*//g')" + if [ -n "$single" ]; then + output="-Fo$2" + else + output="-Fe$2" + fi + if [ -n "$assembly" ]; then + args="$args $output" + else + args="$args $output -Fd$outdir/$base -Fp$outdir/$base -Fa$outdir/$base" + fi + shift 2 + ;; + *.S) + src=$1 + assembly="true" + shift 1 + ;; + *.c) + args="$args $1" + shift 1 + ;; + *) + # Assume it's an MSVC argument, and pass it through. + args="$args $1" + shift 1 + ;; + esac +done + +if [ -n "$linkargs" ]; then + + # If -Zi is specified, certain optimizations are implicitly disabled + # by MSVC. Add back those optimizations if this is an optimized build. + # NOTE: These arguments must come after all others. + if [ -n "$opt" ]; then + linkargs="$linkargs -OPT:REF -OPT:ICF -INCREMENTAL:NO" + fi + + args="$args -link $linkargs" +fi + +if [ -n "$static_crt" ]; then + md=-MT +else + md=-MD +fi + +if [ -n "$debug_crt" ]; then + md="${md}d" +fi + +if [ -n "$assembly" ]; then + if [ -z "$outdir" ]; then + outdir="." + fi + ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')" + + if test -n "$verbose"; then + echo "$cl -nologo -EP $includes $defines $src > $ppsrc" + fi + + "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $? + output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')" + args="-nologo $safeseh $single $output $ppsrc" + + if test -n "$verbose"; then + echo "$ml $args" + fi + + eval "\"$ml\" $args" + result=$? + + # required to fix ml64 broken output? + #mv *.obj $outdir +else + args="$md $args" + + if test -n "$verbose"; then + echo "$cl $args" + fi + # Return an error code of 1 if an invalid command line parameter is passed + # instead of just ignoring it. Any output that is not a warning or an + # error is filtered so this command behaves more like gcc. cl.exe prints + # the name of the compiled file otherwise, which breaks the dejagnu checks + # for excess warnings and errors. + eval "(\"$cl\" $args 2>&1 1>&3 | \ + awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1 | \ + awk '/warning|error/'" + result=$? +fi + +exit $result + +# vim: noai:ts=4:sw=4 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffi.c new file mode 100644 index 0000000000..4400b61af4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffi.c @@ -0,0 +1,941 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include +#include +#include +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +union _d +{ + UINT64 d; + UINT32 s[2]; +}; + +struct _v +{ + union _d d[2] __attribute__((aligned(16))); +}; + +struct call_context +{ + struct _v v[N_V_ARG_REG]; + UINT64 x[N_X_ARG_REG]; +}; + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include +#endif + +#else + +#if defined (__clang__) && defined (__APPLE__) +extern void sys_icache_invalidate (void *start, size_t len); +#endif + +static inline void +ffi_clear_cache (void *start, void *end) +{ +#if defined (__clang__) && defined (__APPLE__) + sys_icache_invalidate (start, (char *)end - (char *)start); +#elif defined (__GNUC__) + __builtin___clear_cache (start, end); +#else +#error "Missing builtin to flush instruction cache" +#endif +} + +#endif + +/* A subroutine of is_vfp_type. Given a structure type, return the type code + of the first non-structure element. Recurse for structure elements. + Return -1 if the structure is in fact empty, i.e. no nested elements. */ + +static int +is_hfa0 (const ffi_type *ty) +{ + ffi_type **elements = ty->elements; + int i, ret = -1; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + ret = elements[i]->type; + if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX) + { + ret = is_hfa0 (elements[i]); + if (ret < 0) + continue; + } + break; + } + + return ret; +} + +/* A subroutine of is_vfp_type. Given a structure type, return true if all + of the non-structure elements are the same as CANDIDATE. */ + +static int +is_hfa1 (const ffi_type *ty, int candidate) +{ + ffi_type **elements = ty->elements; + int i; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + return 1; +} + +/* Determine if TY may be allocated to the FP registers. This is both an + fp scalar type as well as an homogenous floating point aggregate (HFA). + That is, a structure consisting of 1 to 4 members of all the same type, + where that type is an fp scalar. + + Returns non-zero iff TY is an HFA. The result is the AARCH64_RET_* + constant for the type. */ + +static int +is_vfp_type (const ffi_type *ty) +{ + ffi_type **elements; + int candidate, i; + size_t size, ele_count; + + /* Quickest tests first. */ + candidate = ty->type; + switch (candidate) + { + default: + return 0; + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + ele_count = 1; + goto done; + case FFI_TYPE_COMPLEX: + candidate = ty->elements[0]->type; + switch (candidate) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + ele_count = 2; + goto done; + } + return 0; + case FFI_TYPE_STRUCT: + break; + } + + /* No HFA types are smaller than 4 bytes, or larger than 64 bytes. */ + size = ty->size; + if (size < 4 || size > 64) + return 0; + + /* Find the type of the first non-structure member. */ + elements = ty->elements; + candidate = elements[0]->type; + if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX) + { + for (i = 0; ; ++i) + { + candidate = is_hfa0 (elements[i]); + if (candidate >= 0) + break; + } + } + + /* If the first member is not a floating point type, it's not an HFA. + Also quickly re-check the size of the structure. */ + switch (candidate) + { + case FFI_TYPE_FLOAT: + ele_count = size / sizeof(float); + if (size != ele_count * sizeof(float)) + return 0; + break; + case FFI_TYPE_DOUBLE: + ele_count = size / sizeof(double); + if (size != ele_count * sizeof(double)) + return 0; + break; + case FFI_TYPE_LONGDOUBLE: + ele_count = size / sizeof(long double); + if (size != ele_count * sizeof(long double)) + return 0; + break; + default: + return 0; + } + if (ele_count > 4) + return 0; + + /* Finally, make sure that all scalar elements are the same type. */ + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + /* All tests succeeded. Encode the result. */ + done: + return candidate * 4 + (4 - (int)ele_count); +} + +/* Representation of the procedure call argument marshalling + state. + + The terse state variable names match the names used in the AARCH64 + PCS. */ + +struct arg_state +{ + unsigned ngrn; /* Next general-purpose register number. */ + unsigned nsrn; /* Next vector register number. */ + size_t nsaa; /* Next stack offset. */ + +#if defined (__APPLE__) + unsigned allocating_variadic; +#endif +}; + +/* Initialize a procedure call argument marshalling state. */ +static void +arg_init (struct arg_state *state) +{ + state->ngrn = 0; + state->nsrn = 0; + state->nsaa = 0; +#if defined (__APPLE__) + state->allocating_variadic = 0; +#endif +} + +/* Allocate an aligned slot on the stack and return a pointer to it. */ +static void * +allocate_to_stack (struct arg_state *state, void *stack, + size_t alignment, size_t size) +{ + size_t nsaa = state->nsaa; + + /* Round up the NSAA to the larger of 8 or the natural + alignment of the argument's type. */ +#if defined (__APPLE__) + if (state->allocating_variadic && alignment < 8) + alignment = 8; +#else + if (alignment < 8) + alignment = 8; +#endif + + nsaa = FFI_ALIGN (nsaa, alignment); + state->nsaa = nsaa + size; + + return (char *)stack + nsaa; +} + +static ffi_arg +extend_integer_type (void *source, int type) +{ + switch (type) + { + case FFI_TYPE_UINT8: + return *(UINT8 *) source; + case FFI_TYPE_SINT8: + return *(SINT8 *) source; + case FFI_TYPE_UINT16: + return *(UINT16 *) source; + case FFI_TYPE_SINT16: + return *(SINT16 *) source; + case FFI_TYPE_UINT32: + return *(UINT32 *) source; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + return *(SINT32 *) source; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + return *(UINT64 *) source; + break; + case FFI_TYPE_POINTER: + return *(uintptr_t *) source; + default: + abort(); + } +} + +static void +extend_hfa_type (void *dest, void *src, int h) +{ + ssize_t f = h - AARCH64_RET_S4; + void *x0; + + asm volatile ( + "adr %0, 0f\n" +" add %0, %0, %1\n" +" br %0\n" +"0: ldp s16, s17, [%3]\n" /* S4 */ +" ldp s18, s19, [%3, #8]\n" +" b 4f\n" +" ldp s16, s17, [%3]\n" /* S3 */ +" ldr s18, [%3, #8]\n" +" b 3f\n" +" ldp s16, s17, [%3]\n" /* S2 */ +" b 2f\n" +" nop\n" +" ldr s16, [%3]\n" /* S1 */ +" b 1f\n" +" nop\n" +" ldp d16, d17, [%3]\n" /* D4 */ +" ldp d18, d19, [%3, #16]\n" +" b 4f\n" +" ldp d16, d17, [%3]\n" /* D3 */ +" ldr d18, [%3, #16]\n" +" b 3f\n" +" ldp d16, d17, [%3]\n" /* D2 */ +" b 2f\n" +" nop\n" +" ldr d16, [%3]\n" /* D1 */ +" b 1f\n" +" nop\n" +" ldp q16, q17, [%3]\n" /* Q4 */ +" ldp q18, q19, [%3, #16]\n" +" b 4f\n" +" ldp q16, q17, [%3]\n" /* Q3 */ +" ldr q18, [%3, #16]\n" +" b 3f\n" +" ldp q16, q17, [%3]\n" /* Q2 */ +" b 2f\n" +" nop\n" +" ldr q16, [%3]\n" /* Q1 */ +" b 1f\n" +"4: str q19, [%2, #48]\n" +"3: str q18, [%2, #32]\n" +"2: str q17, [%2, #16]\n" +"1: str q16, [%2]" + : "=&r"(x0) + : "r"(f * 12), "r"(dest), "r"(src) + : "memory", "v16", "v17", "v18", "v19"); +} + +static void * +compress_hfa_type (void *dest, void *reg, int h) +{ + switch (h) + { + case AARCH64_RET_S1: + if (dest == reg) + { +#ifdef __AARCH64EB__ + dest += 12; +#endif + } + else + *(float *)dest = *(float *)reg; + break; + case AARCH64_RET_S2: + asm ("ldp q16, q17, [%1]\n\t" + "st2 { v16.s, v17.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17"); + break; + case AARCH64_RET_S3: + asm ("ldp q16, q17, [%1]\n\t" + "ldr q18, [%1, #32]\n\t" + "st3 { v16.s, v17.s, v18.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18"); + break; + case AARCH64_RET_S4: + asm ("ldp q16, q17, [%1]\n\t" + "ldp q18, q19, [%1, #32]\n\t" + "st4 { v16.s, v17.s, v18.s, v19.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19"); + break; + + case AARCH64_RET_D1: + if (dest == reg) + { +#ifdef __AARCH64EB__ + dest += 8; +#endif + } + else + *(double *)dest = *(double *)reg; + break; + case AARCH64_RET_D2: + asm ("ldp q16, q17, [%1]\n\t" + "st2 { v16.d, v17.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17"); + break; + case AARCH64_RET_D3: + asm ("ldp q16, q17, [%1]\n\t" + "ldr q18, [%1, #32]\n\t" + "st3 { v16.d, v17.d, v18.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18"); + break; + case AARCH64_RET_D4: + asm ("ldp q16, q17, [%1]\n\t" + "ldp q18, q19, [%1, #32]\n\t" + "st4 { v16.d, v17.d, v18.d, v19.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19"); + break; + + default: + if (dest != reg) + return memcpy (dest, reg, 16 * (4 - (h & 3))); + break; + } + return dest; +} + +/* Either allocate an appropriate register for the argument type, or if + none are available, allocate a stack slot and return a pointer + to the allocated space. */ + +static void * +allocate_int_to_reg_or_stack (struct call_context *context, + struct arg_state *state, + void *stack, size_t size) +{ + if (state->ngrn < N_X_ARG_REG) + return &context->x[state->ngrn++]; + + state->ngrn = N_X_ARG_REG; + return allocate_to_stack (state, stack, size, size); +} + +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + size_t bytes = cif->bytes; + int flags, i, n; + + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = AARCH64_RET_VOID; + break; + case FFI_TYPE_UINT8: + flags = AARCH64_RET_UINT8; + break; + case FFI_TYPE_UINT16: + flags = AARCH64_RET_UINT16; + break; + case FFI_TYPE_UINT32: + flags = AARCH64_RET_UINT32; + break; + case FFI_TYPE_SINT8: + flags = AARCH64_RET_SINT8; + break; + case FFI_TYPE_SINT16: + flags = AARCH64_RET_SINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = AARCH64_RET_SINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = AARCH64_RET_INT64; + break; + case FFI_TYPE_POINTER: + flags = (sizeof(void *) == 4 ? AARCH64_RET_UINT32 : AARCH64_RET_INT64); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + flags = is_vfp_type (rtype); + if (flags == 0) + { + size_t s = rtype->size; + if (s > 16) + { + flags = AARCH64_RET_VOID | AARCH64_RET_IN_MEM; + bytes += 8; + } + else if (s == 16) + flags = AARCH64_RET_INT128; + else if (s == 8) + flags = AARCH64_RET_INT64; + else + flags = AARCH64_RET_INT128 | AARCH64_RET_NEED_COPY; + } + break; + + default: + abort(); + } + + for (i = 0, n = cif->nargs; i < n; i++) + if (is_vfp_type (cif->arg_types[i])) + { + flags |= AARCH64_FLAG_ARG_V; + break; + } + + /* Round the stack up to a multiple of the stack alignment requirement. */ + cif->bytes = (unsigned) FFI_ALIGN(bytes, 16); + cif->flags = flags; +#if defined (__APPLE__) + cif->aarch64_nfixedargs = 0; +#endif + + return FFI_OK; +} + +#if defined (__APPLE__) +/* Perform Apple-specific cif processing for variadic calls */ +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs) +{ + ffi_status status = ffi_prep_cif_machdep (cif); + cif->aarch64_nfixedargs = nfixedargs; + return status; +} +#endif /* __APPLE__ */ + +extern void ffi_call_SYSV (struct call_context *context, void *frame, + void (*fn)(void), void *rvalue, int flags, + void *closure) FFI_HIDDEN; + +/* Call a function with the provided arguments and capture the return + value. */ +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, + void **avalue, void *closure) +{ + struct call_context *context; + void *stack, *frame, *rvalue; + struct arg_state state; + size_t stack_bytes, rtype_size, rsize; + int i, nargs, flags; + ffi_type *rtype; + + flags = cif->flags; + rtype = cif->rtype; + rtype_size = rtype->size; + stack_bytes = cif->bytes; + + /* If the target function returns a structure via hidden pointer, + then we cannot allow a null rvalue. Otherwise, mash a null + rvalue to void return type. */ + rsize = 0; + if (flags & AARCH64_RET_IN_MEM) + { + if (orig_rvalue == NULL) + rsize = rtype_size; + } + else if (orig_rvalue == NULL) + flags &= AARCH64_FLAG_ARG_V; + else if (flags & AARCH64_RET_NEED_COPY) + rsize = 16; + + /* Allocate consectutive stack for everything we'll need. */ + context = alloca (sizeof(struct call_context) + stack_bytes + 32 + rsize); + stack = context + 1; + frame = stack + stack_bytes; + rvalue = (rsize ? frame + 32 : orig_rvalue); + + arg_init (&state); + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = cif->arg_types[i]; + size_t s = ty->size; + void *a = avalue[i]; + int h, t; + + t = ty->type; + switch (t) + { + case FFI_TYPE_VOID: + FFI_ASSERT (0); + break; + + /* If the argument is a basic type the argument is allocated to an + appropriate register, or if none are available, to the stack. */ + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + do_pointer: + { + ffi_arg ext = extend_integer_type (a, t); + if (state.ngrn < N_X_ARG_REG) + context->x[state.ngrn++] = ext; + else + { + void *d = allocate_to_stack (&state, stack, ty->alignment, s); + state.ngrn = N_X_ARG_REG; + /* Note that the default abi extends each argument + to a full 64-bit slot, while the iOS abi allocates + only enough space. */ +#ifdef __APPLE__ + memcpy(d, a, s); +#else + *(ffi_arg *)d = ext; +#endif + } + } + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + { + void *dest; + + h = is_vfp_type (ty); + if (h) + { + int elems = 4 - (h & 3); + if (state.nsrn + elems <= N_V_ARG_REG) + { + dest = &context->v[state.nsrn]; + state.nsrn += elems; + extend_hfa_type (dest, a, h); + break; + } + state.nsrn = N_V_ARG_REG; + dest = allocate_to_stack (&state, stack, ty->alignment, s); + } + else if (s > 16) + { + /* If the argument is a composite type that is larger than 16 + bytes, then the argument has been copied to memory, and + the argument is replaced by a pointer to the copy. */ + a = &avalue[i]; + t = FFI_TYPE_POINTER; + s = sizeof (void *); + goto do_pointer; + } + else + { + size_t n = (s + 7) / 8; + if (state.ngrn + n <= N_X_ARG_REG) + { + /* If the argument is a composite type and the size in + double-words is not more than the number of available + X registers, then the argument is copied into + consecutive X registers. */ + dest = &context->x[state.ngrn]; + state.ngrn += n; + } + else + { + /* Otherwise, there are insufficient X registers. Further + X register allocations are prevented, the NSAA is + adjusted and the argument is copied to memory at the + adjusted NSAA. */ + state.ngrn = N_X_ARG_REG; + dest = allocate_to_stack (&state, stack, ty->alignment, s); + } + } + memcpy (dest, a, s); + } + break; + + default: + abort(); + } + +#if defined (__APPLE__) + if (i + 1 == cif->aarch64_nfixedargs) + { + state.ngrn = N_X_ARG_REG; + state.nsrn = N_V_ARG_REG; + state.allocating_variadic = 1; + } +#endif + } + + ffi_call_SYSV (context, frame, fn, rvalue, flags, closure); + + if (flags & AARCH64_RET_NEED_COPY) + memcpy (orig_rvalue, rvalue, rtype_size); +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#ifdef FFI_GO_CLOSURES +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} +#endif /* FFI_GO_CLOSURES */ + +/* Build a trampoline. */ + +extern void ffi_closure_SYSV (void) FFI_HIDDEN; +extern void ffi_closure_SYSV_V (void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + void (*start)(void); + + if (cif->flags & AARCH64_FLAG_ARG_V) + start = ffi_closure_SYSV_V; + else + start = ffi_closure_SYSV; + +#if FFI_EXEC_TRAMPOLINE_TABLE +#ifdef __MACH__ + void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); + config[0] = closure; + config[1] = start; +#endif +#else + static const unsigned char trampoline[16] = { + 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */ + 0xf1, 0xff, 0xff, 0x10, /* adr x17, tramp+0 */ + 0x00, 0x02, 0x1f, 0xd6 /* br x16 */ + }; + char *tramp = closure->tramp; + + memcpy (tramp, trampoline, sizeof(trampoline)); + + *(UINT64 *)(tramp + 16) = (uintptr_t)start; + + ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE); +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +#ifdef FFI_GO_CLOSURES +extern void ffi_go_closure_SYSV (void) FFI_HIDDEN; +extern void ffi_go_closure_SYSV_V (void) FFI_HIDDEN; + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void (*start)(void); + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + if (cif->flags & AARCH64_FLAG_ARG_V) + start = ffi_go_closure_SYSV_V; + else + start = ffi_go_closure_SYSV; + + closure->tramp = start; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} +#endif /* FFI_GO_CLOSURES */ + +/* Primary handler to setup and invoke a function within a closure. + + A closure when invoked enters via the assembler wrapper + ffi_closure_SYSV(). The wrapper allocates a call context on the + stack, saves the interesting registers (from the perspective of + the calling convention) into the context then passes control to + ffi_closure_SYSV_inner() passing the saved context and a pointer to + the stack at the point ffi_closure_SYSV() was invoked. + + On the return path the assembler wrapper will reload call context + registers. + + ffi_closure_SYSV_inner() marshalls the call context into ffi value + descriptors, invokes the wrapped function, then marshalls the return + value back into the call context. */ + +int FFI_HIDDEN +ffi_closure_SYSV_inner (ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + struct call_context *context, + void *stack, void *rvalue, void *struct_rvalue) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + int i, h, nargs, flags; + struct arg_state state; + + arg_init (&state); + + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = cif->arg_types[i]; + int t = ty->type; + size_t n, s = ty->size; + + switch (t) + { + case FFI_TYPE_VOID: + FFI_ASSERT (0); + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + avalue[i] = allocate_int_to_reg_or_stack (context, &state, stack, s); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + h = is_vfp_type (ty); + if (h) + { + n = 4 - (h & 3); + if (state.nsrn + n <= N_V_ARG_REG) + { + void *reg = &context->v[state.nsrn]; + state.nsrn += n; + + /* Eeek! We need a pointer to the structure, however the + homogeneous float elements are being passed in individual + registers, therefore for float and double the structure + is not represented as a contiguous sequence of bytes in + our saved register context. We don't need the original + contents of the register storage, so we reformat the + structure into the same memory. */ + avalue[i] = compress_hfa_type (reg, reg, h); + } + else + { + state.nsrn = N_V_ARG_REG; + avalue[i] = allocate_to_stack (&state, stack, + ty->alignment, s); + } + } + else if (s > 16) + { + /* Replace Composite type of size greater than 16 with a + pointer. */ + avalue[i] = *(void **) + allocate_int_to_reg_or_stack (context, &state, stack, + sizeof (void *)); + } + else + { + n = (s + 7) / 8; + if (state.ngrn + n <= N_X_ARG_REG) + { + avalue[i] = &context->x[state.ngrn]; + state.ngrn += n; + } + else + { + state.ngrn = N_X_ARG_REG; + avalue[i] = allocate_to_stack (&state, stack, + ty->alignment, s); + } + } + break; + + default: + abort(); + } + +#if defined (__APPLE__) + if (i + 1 == cif->aarch64_nfixedargs) + { + state.ngrn = N_X_ARG_REG; + state.nsrn = N_V_ARG_REG; + state.allocating_variadic = 1; + } +#endif + } + + flags = cif->flags; + if (flags & AARCH64_RET_IN_MEM) + rvalue = struct_rvalue; + + fun (cif, rvalue, avalue, user_data); + + return flags; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffitarget.h new file mode 100644 index 0000000000..65086cd045 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/ffitarget.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +#ifdef __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef signed long long ffi_sarg; +#else +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; +#endif + +typedef enum ffi_abi + { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV + } ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16 +#else +#error "No trampoline table implementation" +#endif + +#else +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE +#endif + +/* ---- Internal ---- */ + +#if defined (__APPLE__) +#define FFI_TARGET_SPECIFIC_VARIADIC +#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs +#else +/* iOS reserves x18 for the system. Disable Go closures until + a new static chain is chosen. */ +#define FFI_GO_CLOSURES 1 +#endif + +#define FFI_TARGET_HAS_COMPLEX_TYPE + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/internal.h new file mode 100644 index 0000000000..9c3e07725a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/internal.h @@ -0,0 +1,67 @@ +/* +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#define AARCH64_RET_VOID 0 +#define AARCH64_RET_INT64 1 +#define AARCH64_RET_INT128 2 + +#define AARCH64_RET_UNUSED3 3 +#define AARCH64_RET_UNUSED4 4 +#define AARCH64_RET_UNUSED5 5 +#define AARCH64_RET_UNUSED6 6 +#define AARCH64_RET_UNUSED7 7 + +/* Note that FFI_TYPE_FLOAT == 2, _DOUBLE == 3, _LONGDOUBLE == 4, + so _S4 through _Q1 are layed out as (TYPE * 4) + (4 - COUNT). */ +#define AARCH64_RET_S4 8 +#define AARCH64_RET_S3 9 +#define AARCH64_RET_S2 10 +#define AARCH64_RET_S1 11 + +#define AARCH64_RET_D4 12 +#define AARCH64_RET_D3 13 +#define AARCH64_RET_D2 14 +#define AARCH64_RET_D1 15 + +#define AARCH64_RET_Q4 16 +#define AARCH64_RET_Q3 17 +#define AARCH64_RET_Q2 18 +#define AARCH64_RET_Q1 19 + +/* Note that each of the sub-64-bit integers gets two entries. */ +#define AARCH64_RET_UINT8 20 +#define AARCH64_RET_UINT16 22 +#define AARCH64_RET_UINT32 24 + +#define AARCH64_RET_SINT8 26 +#define AARCH64_RET_SINT16 28 +#define AARCH64_RET_SINT32 30 + +#define AARCH64_RET_MASK 31 + +#define AARCH64_RET_IN_MEM (1 << 5) +#define AARCH64_RET_NEED_COPY (1 << 6) + +#define AARCH64_FLAG_ARG_V_BIT 7 +#define AARCH64_FLAG_ARG_V (1 << AARCH64_FLAG_ARG_V_BIT) + +#define N_X_ARG_REG 8 +#define N_V_ARG_REG 8 +#define CALL_CONTEXT_SIZE (N_V_ARG_REG * 16 + N_X_ARG_REG * 8) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/sysv.S new file mode 100644 index 0000000000..d12bf27b7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/aarch64/sysv.S @@ -0,0 +1,438 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +/* Use the right prefix for global labels. */ +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else +#define CNAME(x) x +#endif +#endif + +#ifdef __AARCH64EB__ +# define BE(X) X +#else +# define BE(X) 0 +#endif + +#ifdef __ILP32__ +#define PTR_REG(n) w##n +#else +#define PTR_REG(n) x##n +#endif + +#ifdef __ILP32__ +#define PTR_SIZE 4 +#else +#define PTR_SIZE 8 +#endif + + .text + .align 4 + +/* ffi_call_SYSV + extern void ffi_call_SYSV (void *stack, void *frame, + void (*fn)(void), void *rvalue, + int flags, void *closure); + + Therefore on entry we have: + + x0 stack + x1 frame + x2 fn + x3 rvalue + x4 flags + x5 closure +*/ + + cfi_startproc +CNAME(ffi_call_SYSV): + /* Use a stack frame allocated by our caller. */ + cfi_def_cfa(x1, 32); + stp x29, x30, [x1] + mov x29, x1 + mov sp, x0 + cfi_def_cfa_register(x29) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + + mov x9, x2 /* save fn */ + mov x8, x3 /* install structure return */ +#ifdef FFI_GO_CLOSURES + mov x18, x5 /* install static chain */ +#endif + stp x3, x4, [x29, #16] /* save rvalue and flags */ + + /* Load the vector argument passing registers, if necessary. */ + tbz w4, #AARCH64_FLAG_ARG_V_BIT, 1f + ldp q0, q1, [sp, #0] + ldp q2, q3, [sp, #32] + ldp q4, q5, [sp, #64] + ldp q6, q7, [sp, #96] +1: + /* Load the core argument passing registers, including + the structure return pointer. */ + ldp x0, x1, [sp, #16*N_V_ARG_REG + 0] + ldp x2, x3, [sp, #16*N_V_ARG_REG + 16] + ldp x4, x5, [sp, #16*N_V_ARG_REG + 32] + ldp x6, x7, [sp, #16*N_V_ARG_REG + 48] + + /* Deallocate the context, leaving the stacked arguments. */ + add sp, sp, #CALL_CONTEXT_SIZE + + blr x9 /* call fn */ + + ldp x3, x4, [x29, #16] /* reload rvalue and flags */ + + /* Partially deconstruct the stack frame. */ + mov sp, x29 + cfi_def_cfa_register (sp) + ldp x29, x30, [x29] + + /* Save the return value as directed. */ + adr x5, 0f + and w4, w4, #AARCH64_RET_MASK + add x5, x5, x4, lsl #3 + br x5 + + /* Note that each table entry is 2 insns, and thus 8 bytes. + For integer data, note that we're storing into ffi_arg + and therefore we want to extend to 64 bits; these types + have two consecutive entries allocated for them. */ + .align 4 +0: ret /* VOID */ + nop +1: str x0, [x3] /* INT64 */ + ret +2: stp x0, x1, [x3] /* INT128 */ + ret +3: brk #1000 /* UNUSED */ + ret +4: brk #1000 /* UNUSED */ + ret +5: brk #1000 /* UNUSED */ + ret +6: brk #1000 /* UNUSED */ + ret +7: brk #1000 /* UNUSED */ + ret +8: st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */ + ret +9: st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */ + ret +10: stp s0, s1, [x3] /* S2 */ + ret +11: str s0, [x3] /* S1 */ + ret +12: st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */ + ret +13: st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */ + ret +14: stp d0, d1, [x3] /* D2 */ + ret +15: str d0, [x3] /* D1 */ + ret +16: str q3, [x3, #48] /* Q4 */ + nop +17: str q2, [x3, #32] /* Q3 */ + nop +18: stp q0, q1, [x3] /* Q2 */ + ret +19: str q0, [x3] /* Q1 */ + ret +20: uxtb w0, w0 /* UINT8 */ + str x0, [x3] +21: ret /* reserved */ + nop +22: uxth w0, w0 /* UINT16 */ + str x0, [x3] +23: ret /* reserved */ + nop +24: mov w0, w0 /* UINT32 */ + str x0, [x3] +25: ret /* reserved */ + nop +26: sxtb x0, w0 /* SINT8 */ + str x0, [x3] +27: ret /* reserved */ + nop +28: sxth x0, w0 /* SINT16 */ + str x0, [x3] +29: ret /* reserved */ + nop +30: sxtw x0, w0 /* SINT32 */ + str x0, [x3] +31: ret /* reserved */ + nop + + cfi_endproc + + .globl CNAME(ffi_call_SYSV) +#ifdef __ELF__ + .type CNAME(ffi_call_SYSV), #function + .hidden CNAME(ffi_call_SYSV) + .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV) +#endif + +/* ffi_closure_SYSV + + Closure invocation glue. This is the low level code invoked directly by + the closure trampoline to setup and call a closure. + + On entry x17 points to a struct ffi_closure, x16 has been clobbered + all other registers are preserved. + + We allocate a call context and save the argument passing registers, + then invoked the generic C ffi_closure_SYSV_inner() function to do all + the real work, on return we load the result passing registers back from + the call context. +*/ + +#define ffi_closure_SYSV_FS (8*2 + CALL_CONTEXT_SIZE + 64) + + .align 4 +CNAME(ffi_closure_SYSV_V): + cfi_startproc + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + b 0f + cfi_endproc + + .globl CNAME(ffi_closure_SYSV_V) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV_V), #function + .hidden CNAME(ffi_closure_SYSV_V) + .size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V) +#endif + + .align 4 + cfi_startproc +CNAME(ffi_closure_SYSV): + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) +0: + mov x29, sp + + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */ + ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */ +.Ldo_closure: + add x3, sp, #16 /* load context */ + add x4, sp, #ffi_closure_SYSV_FS /* load stack */ + add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */ + mov x6, x8 /* load struct_rval */ + bl CNAME(ffi_closure_SYSV_inner) + + /* Load the return value as directed. */ + adr x1, 0f + and w0, w0, #AARCH64_RET_MASK + add x1, x1, x0, lsl #3 + add x3, sp, #16+CALL_CONTEXT_SIZE + br x1 + + /* Note that each table entry is 2 insns, and thus 8 bytes. */ + .align 4 +0: b 99f /* VOID */ + nop +1: ldr x0, [x3] /* INT64 */ + b 99f +2: ldp x0, x1, [x3] /* INT128 */ + b 99f +3: brk #1000 /* UNUSED */ + nop +4: brk #1000 /* UNUSED */ + nop +5: brk #1000 /* UNUSED */ + nop +6: brk #1000 /* UNUSED */ + nop +7: brk #1000 /* UNUSED */ + nop +8: ldr s3, [x3, #12] /* S4 */ + nop +9: ldr s2, [x3, #8] /* S3 */ + nop +10: ldp s0, s1, [x3] /* S2 */ + b 99f +11: ldr s0, [x3] /* S1 */ + b 99f +12: ldr d3, [x3, #24] /* D4 */ + nop +13: ldr d2, [x3, #16] /* D3 */ + nop +14: ldp d0, d1, [x3] /* D2 */ + b 99f +15: ldr d0, [x3] /* D1 */ + b 99f +16: ldr q3, [x3, #48] /* Q4 */ + nop +17: ldr q2, [x3, #32] /* Q3 */ + nop +18: ldp q0, q1, [x3] /* Q2 */ + b 99f +19: ldr q0, [x3] /* Q1 */ + b 99f +20: ldrb w0, [x3, #BE(7)] /* UINT8 */ + b 99f +21: brk #1000 /* reserved */ + nop +22: ldrh w0, [x3, #BE(6)] /* UINT16 */ + b 99f +23: brk #1000 /* reserved */ + nop +24: ldr w0, [x3, #BE(4)] /* UINT32 */ + b 99f +25: brk #1000 /* reserved */ + nop +26: ldrsb x0, [x3, #BE(7)] /* SINT8 */ + b 99f +27: brk #1000 /* reserved */ + nop +28: ldrsh x0, [x3, #BE(6)] /* SINT16 */ + b 99f +29: brk #1000 /* reserved */ + nop +30: ldrsw x0, [x3, #BE(4)] /* SINT32 */ + nop +31: /* reserved */ +99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS + cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS) + cfi_restore (x29) + cfi_restore (x30) + ret + cfi_endproc + + .globl CNAME(ffi_closure_SYSV) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV), #function + .hidden CNAME(ffi_closure_SYSV) + .size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV) +#endif + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include + .align PAGE_MAX_SHIFT +CNAME(ffi_closure_trampoline_table_page): + .rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE + adr x16, -PAGE_MAX_SIZE + ldp x17, x16, [x16] + br x16 + nop /* each entry in the trampoline config page is 2*sizeof(void*) so the trampoline itself cannot be smaller that 16 bytes */ + .endr + + .globl CNAME(ffi_closure_trampoline_table_page) + #ifdef __ELF__ + .type CNAME(ffi_closure_trampoline_table_page), #function + .hidden CNAME(ffi_closure_trampoline_table_page) + .size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page) + #endif +#endif + +#endif /* FFI_EXEC_TRAMPOLINE_TABLE */ + +#ifdef FFI_GO_CLOSURES + .align 4 +CNAME(ffi_go_closure_SYSV_V): + cfi_startproc + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + b 0f + cfi_endproc + + .globl CNAME(ffi_go_closure_SYSV_V) +#ifdef __ELF__ + .type CNAME(ffi_go_closure_SYSV_V), #function + .hidden CNAME(ffi_go_closure_SYSV_V) + .size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V) +#endif + + .align 4 + cfi_startproc +CNAME(ffi_go_closure_SYSV): + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) +0: + mov x29, sp + + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x18, #PTR_SIZE]/* load cif, fn */ + mov x2, x18 /* load user_data */ + b .Ldo_closure + cfi_endproc + + .globl CNAME(ffi_go_closure_SYSV) +#ifdef __ELF__ + .type CNAME(ffi_go_closure_SYSV), #function + .hidden CNAME(ffi_go_closure_SYSV) + .size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV) +#endif +#endif /* FFI_GO_CLOSURES */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffi.c new file mode 100644 index 0000000000..7a95e9707c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffi.c @@ -0,0 +1,521 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Anthony Green + Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. + + Alpha Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if defined(__LONG_DOUBLE_128__) +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +extern void ffi_call_osf(void *stack, void *frame, unsigned flags, + void *raddr, void (*fn)(void), void *closure) + FFI_HIDDEN; +extern void ffi_closure_osf(void) FFI_HIDDEN; +extern void ffi_go_closure_osf(void) FFI_HIDDEN; + +/* Promote a float value to its in-register double representation. + Unlike actually casting to double, this does not trap on NaN. */ +static inline UINT64 lds(void *ptr) +{ + UINT64 ret; + asm("lds %0,%1" : "=f"(ret) : "m"(*(UINT32 *)ptr)); + return ret; +} + +/* And the reverse. */ +static inline void sts(void *ptr, UINT64 val) +{ + asm("sts %1,%0" : "=m"(*(UINT32 *)ptr) : "f"(val)); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t bytes = 0; + int flags, i, avn; + ffi_type *rtype, *itype; + + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + /* Compute the size of the argument area. */ + for (i = 0, avn = cif->nargs; i < avn; i++) + { + itype = cif->arg_types[i]; + switch (itype->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + /* All take one 8 byte slot. */ + bytes += 8; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + /* Passed by value in N slots. */ + bytes += FFI_ALIGN(itype->size, FFI_SIZEOF_ARG); + break; + + case FFI_TYPE_COMPLEX: + /* _Complex long double passed by reference; others in 2 slots. */ + if (itype->elements[0]->type == FFI_TYPE_LONGDOUBLE) + bytes += 8; + else + bytes += 16; + break; + + default: + abort(); + } + } + + /* Set the return type flag */ + rtype = cif->rtype; + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = ALPHA_FLAGS(ALPHA_ST_VOID, ALPHA_LD_VOID); + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT32); + break; + case FFI_TYPE_FLOAT: + flags = ALPHA_FLAGS(ALPHA_ST_FLOAT, ALPHA_LD_FLOAT); + break; + case FFI_TYPE_DOUBLE: + flags = ALPHA_FLAGS(ALPHA_ST_DOUBLE, ALPHA_LD_DOUBLE); + break; + case FFI_TYPE_UINT8: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_UINT8); + break; + case FFI_TYPE_SINT8: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_SINT8); + break; + case FFI_TYPE_UINT16: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_UINT16); + break; + case FFI_TYPE_SINT16: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_SINT16); + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT64); + break; + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + /* Passed in memory, with a hidden pointer. */ + flags = ALPHA_RET_IN_MEM; + break; + case FFI_TYPE_COMPLEX: + itype = rtype->elements[0]; + switch (itype->type) + { + case FFI_TYPE_FLOAT: + flags = ALPHA_FLAGS(ALPHA_ST_CPLXF, ALPHA_LD_CPLXF); + break; + case FFI_TYPE_DOUBLE: + flags = ALPHA_FLAGS(ALPHA_ST_CPLXD, ALPHA_LD_CPLXD); + break; + default: + if (rtype->size <= 8) + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT64); + else + flags = ALPHA_RET_IN_MEM; + break; + } + break; + default: + abort(); + } + cif->flags = flags; + + /* Include the hidden structure pointer in args requirement. */ + if (flags == ALPHA_RET_IN_MEM) + bytes += 8; + /* Minimum size is 6 slots, so that ffi_call_osf can pop them. */ + if (bytes < 6*8) + bytes = 6*8; + cif->bytes = bytes; + + return FFI_OK; +} + +static unsigned long +extend_basic_type(void *valp, int type, int argn) +{ + switch (type) + { + case FFI_TYPE_SINT8: + return *(SINT8 *)valp; + case FFI_TYPE_UINT8: + return *(UINT8 *)valp; + case FFI_TYPE_SINT16: + return *(SINT16 *)valp; + case FFI_TYPE_UINT16: + return *(UINT16 *)valp; + + case FFI_TYPE_FLOAT: + if (argn < 6) + return lds(valp); + /* FALLTHRU */ + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + /* Note that unsigned 32-bit quantities are sign extended. */ + return *(SINT32 *)valp; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_DOUBLE: + return *(UINT64 *)valp; + + default: + abort(); + } +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + unsigned long *argp; + long i, avn, argn, flags = cif->flags; + ffi_type **arg_types; + void *frame; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + if (rvalue == NULL && flags == ALPHA_RET_IN_MEM) + rvalue = alloca(cif->rtype->size); + + /* Allocate the space for the arguments, plus 4 words of temp + space for ffi_call_osf. */ + argp = frame = alloca(cif->bytes + 4*FFI_SIZEOF_ARG); + frame += cif->bytes; + + argn = 0; + if (flags == ALPHA_RET_IN_MEM) + argp[argn++] = (unsigned long)rvalue; + + avn = cif->nargs; + arg_types = cif->arg_types; + + for (i = 0, avn = cif->nargs; i < avn; i++) + { + ffi_type *ty = arg_types[i]; + void *valp = avalue[i]; + int type = ty->type; + size_t size; + + switch (type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + argp[argn] = extend_basic_type(valp, type, argn); + argn++; + break; + + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Note that 128-bit long double is passed by reference. */ + argp[argn++] = (unsigned long)valp; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + size = ty->size; + memcpy(argp + argn, valp, size); + argn += FFI_ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + break; + + case FFI_TYPE_COMPLEX: + type = ty->elements[0]->type; + if (type == FFI_TYPE_LONGDOUBLE) + goto by_reference; + + /* Most complex types passed as two separate arguments. */ + size = ty->elements[0]->size; + argp[argn] = extend_basic_type(valp, type, argn); + argp[argn + 1] = extend_basic_type(valp + size, type, argn + 1); + argn += 2; + break; + + default: + abort(); + } + } + + flags = (flags >> ALPHA_ST_SHIFT) & 0xff; + ffi_call_osf(argp, frame, flags, rvalue, fn, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + tramp[0] = 0x47fb0401; /* mov $27,$1 */ + tramp[1] = 0xa77b0010; /* ldq $27,16($27) */ + tramp[2] = 0x6bfb0000; /* jmp $31,($27),0 */ + tramp[3] = 0x47ff041f; /* nop */ + *(void **) &tramp[4] = ffi_closure_osf; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the Icache. + + Tru64 UNIX as doesn't understand the imb mnemonic, so use call_pal + instead, since both Compaq as and gas can handle it. + + 0x86 is PAL_imb in Tru64 UNIX . */ + asm volatile ("call_pal 0x86" : : : "memory"); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + closure->tramp = (void *)ffi_go_closure_osf; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +long FFI_HIDDEN +ffi_closure_osf_inner (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, unsigned long *argp) +{ + void **avalue; + ffi_type **arg_types; + long i, avn, argn, flags; + + avalue = alloca(cif->nargs * sizeof(void *)); + flags = cif->flags; + argn = 0; + + /* Copy the caller's structure return address to that the closure + returns the data directly to the caller. */ + if (flags == ALPHA_RET_IN_MEM) + { + rvalue = (void *) argp[0]; + argn = 1; + } + + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, avn = cif->nargs; i < avn; i++) + { + ffi_type *ty = arg_types[i]; + int type = ty->type; + void *valp = &argp[argn]; + size_t size; + + switch (type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + argn += 1; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + size = ty->size; + argn += FFI_ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + break; + + case FFI_TYPE_FLOAT: + /* Floats coming from registers need conversion from double + back to float format. */ + if (argn < 6) + { + valp = &argp[argn - 6]; + sts(valp, argp[argn - 6]); + } + argn += 1; + break; + + case FFI_TYPE_DOUBLE: + if (argn < 6) + valp = &argp[argn - 6]; + argn += 1; + break; + + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* 128-bit long double is passed by reference. */ + valp = (void *)argp[argn]; + argn += 1; + break; + + case FFI_TYPE_COMPLEX: + type = ty->elements[0]->type; + switch (type) + { + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + /* Passed as separate arguments, but they wind up sequential. */ + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + /* Passed as separate arguments. Disjoint, but there's room + enough in one slot to hold the pair. */ + size = ty->elements[0]->size; + memcpy(valp + size, valp + 8, size); + break; + + case FFI_TYPE_FLOAT: + /* Passed as separate arguments. Disjoint, and each piece + may need conversion back to float. */ + if (argn < 6) + { + valp = &argp[argn - 6]; + sts(valp, argp[argn - 6]); + } + if (argn + 1 < 6) + sts(valp + 4, argp[argn + 1 - 6]); + else + *(UINT32 *)(valp + 4) = argp[argn + 1]; + break; + + case FFI_TYPE_DOUBLE: + /* Passed as separate arguments. Only disjoint if one part + is in fp regs and the other is on the stack. */ + if (argn < 5) + valp = &argp[argn - 6]; + else if (argn == 5) + { + valp = alloca(16); + ((UINT64 *)valp)[0] = argp[5 - 6]; + ((UINT64 *)valp)[1] = argp[6]; + } + break; + + case FFI_TYPE_LONGDOUBLE: + goto by_reference; + + default: + abort(); + } + argn += 2; + break; + + default: + abort (); + } + + avalue[i] = valp; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_osf how to perform return type promotions. */ + return (flags >> ALPHA_LD_SHIFT) & 0xff; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffitarget.h new file mode 100644 index 0000000000..a02dbd04f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/ffitarget.h @@ -0,0 +1,57 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for Alpha. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_OSF, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_OSF +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#define FFI_TARGET_HAS_COMPLEX_TYPE + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/internal.h new file mode 100644 index 0000000000..44da1922bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/internal.h @@ -0,0 +1,23 @@ +#define ALPHA_ST_VOID 0 +#define ALPHA_ST_INT 1 +#define ALPHA_ST_FLOAT 2 +#define ALPHA_ST_DOUBLE 3 +#define ALPHA_ST_CPLXF 4 +#define ALPHA_ST_CPLXD 5 + +#define ALPHA_LD_VOID 0 +#define ALPHA_LD_INT64 1 +#define ALPHA_LD_INT32 2 +#define ALPHA_LD_UINT16 3 +#define ALPHA_LD_SINT16 4 +#define ALPHA_LD_UINT8 5 +#define ALPHA_LD_SINT8 6 +#define ALPHA_LD_FLOAT 7 +#define ALPHA_LD_DOUBLE 8 +#define ALPHA_LD_CPLXF 9 +#define ALPHA_LD_CPLXD 10 + +#define ALPHA_ST_SHIFT 0 +#define ALPHA_LD_SHIFT 8 +#define ALPHA_RET_IN_MEM 0x10000 +#define ALPHA_FLAGS(S, L) (((L) << ALPHA_LD_SHIFT) | (S)) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/osf.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/osf.S new file mode 100644 index 0000000000..b0318282a0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/alpha/osf.S @@ -0,0 +1,282 @@ +/* ----------------------------------------------------------------------- + osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011, 2014 Red Hat + + Alpha/OSF Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + + .arch ev6 + .text + +/* Aid in building a direct addressed jump table, 4 insns per entry. */ +.macro E index + .align 4 + .org 99b + \index * 16 +.endm + +/* ffi_call_osf (void *stack, void *frame, unsigned flags, + void *raddr, void (*fnaddr)(void), void *closure) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .align 4 + .globl ffi_call_osf + .ent ffi_call_osf + FFI_HIDDEN(ffi_call_osf) + +ffi_call_osf: + cfi_startproc + cfi_def_cfa($17, 32) + mov $16, $30 + stq $26, 0($17) + stq $15, 8($17) + mov $17, $15 + .prologue 0 + cfi_def_cfa_register($15) + cfi_rel_offset($26, 0) + cfi_rel_offset($15, 8) + + stq $18, 16($17) # save flags into frame + stq $19, 24($17) # save rvalue into frame + mov $20, $27 # fn into place for call + mov $21, $1 # closure into static chain + + # Load up all of the (potential) argument registers. + ldq $16, 0($30) + ldt $f16, 0($30) + ldt $f17, 8($30) + ldq $17, 8($30) + ldt $f18, 16($30) + ldq $18, 16($30) + ldt $f19, 24($30) + ldq $19, 24($30) + ldt $f20, 32($30) + ldq $20, 32($30) + ldt $f21, 40($30) + ldq $21, 40($30) + + # Deallocate the register argument area. + lda $30, 48($30) + + jsr $26, ($27), 0 +0: + ldah $29, 0($26) !gpdisp!1 + ldq $2, 24($15) # reload rvalue + lda $29, 0($29) !gpdisp!1 + ldq $3, 16($15) # reload flags + lda $1, 99f-0b($26) + ldq $26, 0($15) + ldq $15, 8($15) + cfi_restore($26) + cfi_restore($15) + cfi_def_cfa($sp, 0) + cmoveq $2, ALPHA_ST_VOID, $3 # mash null rvalue to void + addq $3, $3, $3 + s8addq $3, $1, $1 # 99f + stcode * 16 + jmp $31, ($1), $st_int + + .align 4 +99: +E ALPHA_ST_VOID + ret +E ALPHA_ST_INT +$st_int: + stq $0, 0($2) + ret +E ALPHA_ST_FLOAT + sts $f0, 0($2) + ret +E ALPHA_ST_DOUBLE + stt $f0, 0($2) + ret +E ALPHA_ST_CPLXF + sts $f0, 0($2) + sts $f1, 4($2) + ret +E ALPHA_ST_CPLXD + stt $f0, 0($2) + stt $f1, 8($2) + ret + + cfi_endproc + .end ffi_call_osf + +/* ffi_closure_osf(...) + + Receives the closure argument in $1. */ + +#define CLOSURE_FS (16*8) + + .align 4 + .globl ffi_go_closure_osf + .ent ffi_go_closure_osf + FFI_HIDDEN(ffi_go_closure_osf) + +ffi_go_closure_osf: + cfi_startproc + ldgp $29, 0($27) + subq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(CLOSURE_FS) + stq $26, 0($30) + .prologue 1 + cfi_rel_offset($26, 0) + + stq $16, 10*8($30) + stq $17, 11*8($30) + stq $18, 12*8($30) + + ldq $16, 8($1) # load cif + ldq $17, 16($1) # load fun + mov $1, $18 # closure is user_data + br $do_closure + + cfi_endproc + .end ffi_go_closure_osf + + .align 4 + .globl ffi_closure_osf + .ent ffi_closure_osf + FFI_HIDDEN(ffi_closure_osf) + +ffi_closure_osf: + cfi_startproc + ldgp $29, 0($27) + subq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(CLOSURE_FS) + stq $26, 0($30) + .prologue 1 + cfi_rel_offset($26, 0) + + # Store all of the potential argument registers in va_list format. + stq $16, 10*8($30) + stq $17, 11*8($30) + stq $18, 12*8($30) + + ldq $16, 24($1) # load cif + ldq $17, 32($1) # load fun + ldq $18, 40($1) # load user_data + +$do_closure: + stq $19, 13*8($30) + stq $20, 14*8($30) + stq $21, 15*8($30) + stt $f16, 4*8($30) + stt $f17, 5*8($30) + stt $f18, 6*8($30) + stt $f19, 7*8($30) + stt $f20, 8*8($30) + stt $f21, 9*8($30) + + # Call ffi_closure_osf_inner to do the bulk of the work. + lda $19, 2*8($30) + lda $20, 10*8($30) + jsr $26, ffi_closure_osf_inner +0: + ldah $29, 0($26) !gpdisp!2 + lda $2, 99f-0b($26) + s4addq $0, 0, $1 # ldcode * 4 + ldq $0, 16($30) # preload return value + s4addq $1, $2, $1 # 99f + ldcode * 16 + lda $29, 0($29) !gpdisp!2 + ldq $26, 0($30) + cfi_restore($26) + jmp $31, ($1), $load_32 + +.macro epilogue + addq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(-CLOSURE_FS) + ret + .align 4 + cfi_adjust_cfa_offset(CLOSURE_FS) +.endm + + .align 4 +99: +E ALPHA_LD_VOID + epilogue + +E ALPHA_LD_INT64 + epilogue + +E ALPHA_LD_INT32 +$load_32: + sextl $0, $0 + epilogue + +E ALPHA_LD_UINT16 + zapnot $0, 3, $0 + epilogue + +E ALPHA_LD_SINT16 +#ifdef __alpha_bwx__ + sextw $0, $0 +#else + sll $0, 48, $0 + sra $0, 48, $0 +#endif + epilogue + +E ALPHA_LD_UINT8 + and $0, 0xff, $0 + epilogue + +E ALPHA_LD_SINT8 +#ifdef __alpha_bwx__ + sextb $0, $0 +#else + sll $0, 56, $0 + sra $0, 56, $0 +#endif + epilogue + +E ALPHA_LD_FLOAT + lds $f0, 16($sp) + epilogue + +E ALPHA_LD_DOUBLE + ldt $f0, 16($sp) + epilogue + +E ALPHA_LD_CPLXF + lds $f0, 16($sp) + lds $f1, 20($sp) + epilogue + +E ALPHA_LD_CPLXD + ldt $f0, 16($sp) + ldt $f1, 24($sp) + epilogue + + cfi_endproc + .end ffi_closure_osf + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/arcompact.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/arcompact.S new file mode 100644 index 0000000000..03715fde49 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/arcompact.S @@ -0,0 +1,135 @@ +/* ----------------------------------------------------------------------- + arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com) + + ARCompact Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x): +#endif + +.text + + /* R0: ffi_prep_args */ + /* R1: &ecif */ + /* R2: cif->bytes */ + /* R3: fig->flags */ + /* R4: ecif.rvalue */ + /* R5: fn */ +ENTRY(ffi_call_ARCompact) + /* Save registers. */ + st.a fp, [sp, -4] /* fp + 20, fp */ + push_s blink /* fp + 16, blink */ + st.a r4, [sp, -4] /* fp + 12, ecif.rvalue */ + push_s r3 /* fp + 8, fig->flags */ + st.a r5, [sp, -4] /* fp + 4, fn */ + push_s r2 /* fp + 0, cif->bytes */ + mov fp, sp + + /* Make room for all of the new args. */ + sub sp, sp, r2 + + /* Place all of the ffi_prep_args in position. */ + /* ffi_prep_args(char *stack, extended_cif *ecif) */ + /* R1 already set. */ + + /* And call. */ + jl_s.d [r0] + mov_s r0, sp + + ld.ab r12, [fp, 4] /* cif->bytes */ + ld.ab r11, [fp, 4] /* fn */ + + /* Move first 8 parameters in registers... */ + ld_s r0, [sp] + ld_s r1, [sp, 4] + ld_s r2, [sp, 8] + ld_s r3, [sp, 12] + ld r4, [sp, 16] + ld r5, [sp, 20] + ld r6, [sp, 24] + ld r7, [sp, 28] + + /* ...and adjust the stack. */ + min r12, r12, 32 + + /* Call the function. */ + jl.d [r11] + add sp, sp, r12 + + mov sp, fp + pop_s r3 /* fig->flags, return type */ + pop_s r2 /* ecif.rvalue, pointer for return value */ + + /* If the return value pointer is NULL, assume no return value. */ + breq.d r2, 0, epilogue + pop_s blink + + /* Return INT. */ + brne r3, FFI_TYPE_INT, return_double + b.d epilogue + st_s r0, [r2] + +return_double: + brne r3, FFI_TYPE_DOUBLE, epilogue + st_s r0, [r2] + st_s r1, [r2,4] + +epilogue: + j_s.d [blink] + ld.ab fp, [sp, 4] + +ENTRY(ffi_closure_ARCompact) + st.a r0, [sp, -32] + st_s r1, [sp, 4] + st_s r2, [sp, 8] + st_s r3, [sp, 12] + st r4, [sp, 16] + st r5, [sp, 20] + st r6, [sp, 24] + st r7, [sp, 28] + + /* pointer to arguments */ + mov_s r2, sp + + /* return value goes here */ + sub sp, sp, 8 + mov_s r1, sp + + push_s blink + + bl.d ffi_closure_inner_ARCompact + mov_s r0, r8 /* codeloc, set by trampoline */ + + pop_s blink + + /* set return value to r1:r0 */ + pop_s r0 + pop_s r1 + j_s.d [blink] + add_s sp, sp, 32 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffi.c new file mode 100644 index 0000000000..4d10b21a5d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffi.c @@ -0,0 +1,266 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) + + ARC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#include + +/* for little endian ARC, the code is in fact stored as mixed endian for + performance reasons */ +#if __BIG_ENDIAN__ +#define CODE_ENDIAN(x) (x) +#else +#define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16)) +#endif + +/* ffi_prep_args is called by the assembly routine once stack + space has been allocated for the function's arguments. */ + +void +ffi_prep_args (char *stack, extended_cif * ecif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); i--, p_arg++) + { + size_t z; + int alignment; + + /* align alignment to 4 */ + alignment = (((*p_arg)->alignment - 1) | 3) + 1; + + /* Align if necessary. */ + if ((alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, alignment); + + z = (*p_arg)->size; + if (z < sizeof (int)) + { + z = sizeof (int); + + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv); + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, (*p_arg)->size); + break; + + default: + FFI_ASSERT (0); + } + } + else if (z == sizeof (int)) + { + *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); + } + else + { + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + memcpy (argp, *p_argv, z); + } + else + { + /* Double or long long 64bit. */ + memcpy (argp, *p_argv, z); + } + } + p_argv++; + argp += z; + } + + return; +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep (ffi_cif * cif) +{ + /* Set the return type flag. */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_STRUCT: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFI_TYPE_DOUBLE; + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +extern void ffi_call_ARCompact (void (*)(char *, extended_cif *), + extended_cif *, unsigned, unsigned, + unsigned *, void (*fn) (void)); + +void +ffi_call (ffi_cif * cif, void (*fn) (void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have + a return value address then we need to make one. */ + if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_ARCOMPACT: + ffi_call_ARCompact (ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +int +ffi_closure_inner_ARCompact (ffi_closure * closure, void *rvalue, + ffi_arg * args) +{ + void **arg_area, **p_argv; + ffi_cif *cif = closure->cif; + char *argp = (char *) args; + ffi_type **p_argt; + int i; + + arg_area = (void **) alloca (cif->nargs * sizeof (void *)); + + /* handle hidden argument */ + if (cif->flags == FFI_TYPE_STRUCT) + { + rvalue = *(void **) argp; + argp += 4; + } + + p_argv = arg_area; + + for (i = 0, p_argt = cif->arg_types; i < cif->nargs; + i++, p_argt++, p_argv++) + { + size_t z; + int alignment; + + /* align alignment to 4 */ + alignment = (((*p_argt)->alignment - 1) | 3) + 1; + + /* Align if necessary. */ + if ((alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, alignment); + + z = (*p_argt)->size; + *p_argv = (void *) argp; + argp += z; + } + + (closure->fun) (cif, rvalue, arg_area, closure->user_data); + + return cif->flags; +} + +extern void ffi_closure_ARCompact (void); + +ffi_status +ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); + + switch (cif->abi) + { + case FFI_ARCOMPACT: + FFI_ASSERT (tramp == codeloc); + tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ + tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ + tramp[2] = CODE_ENDIAN (ffi_closure_ARCompact); + break; + + default: + return FFI_BAD_ABI; + } + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE); + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffitarget.h new file mode 100644 index 0000000000..bf8311bc83 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arc/ffitarget.h @@ -0,0 +1,53 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) + Target configuration macros for ARC. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi +{ + FFI_FIRST_ABI = 0, + FFI_ARCOMPACT, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_ARCOMPACT +} ffi_abi; +#endif + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 12 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffi.c new file mode 100644 index 0000000000..d838271093 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffi.c @@ -0,0 +1,819 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Timothy Wall + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + Copyright (c) 2011 Anthony Green + Copyright (c) 2011 Free Software Foundation + Copyright (c) 1998, 2008, 2011 Red Hat, Inc. + + ARM Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "internal.h" + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include +#endif + +#else +extern unsigned int ffi_arm_trampoline[2] FFI_HIDDEN; +#endif + +/* Forward declares. */ +static int vfp_type_p (const ffi_type *); +static void layout_vfp_args (ffi_cif *); + +static void * +ffi_align (ffi_type *ty, void *p) +{ + /* Align if necessary */ + size_t alignment; +#ifdef _WIN32_WCE + alignment = 4; +#else + alignment = ty->alignment; + if (alignment < 4) + alignment = 4; +#endif + return (void *) FFI_ALIGN (p, alignment); +} + +static size_t +ffi_put_arg (ffi_type *ty, void *src, void *dst) +{ + size_t z = ty->size; + + switch (ty->type) + { + case FFI_TYPE_SINT8: + *(UINT32 *)dst = *(SINT8 *)src; + break; + case FFI_TYPE_UINT8: + *(UINT32 *)dst = *(UINT8 *)src; + break; + case FFI_TYPE_SINT16: + *(UINT32 *)dst = *(SINT16 *)src; + break; + case FFI_TYPE_UINT16: + *(UINT32 *)dst = *(UINT16 *)src; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + *(UINT32 *)dst = *(UINT32 *)src; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + *(UINT64 *)dst = *(UINT64 *)src; + break; + + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + memcpy (dst, src, z); + break; + + default: + abort(); + } + + return FFI_ALIGN (z, 4); +} + +/* ffi_prep_args is called once stack space has been allocated + for the function's arguments. + + The vfp_space parameter is the load area for VFP regs, the return + value is cif->vfp_used (word bitset of VFP regs used for passing + arguments). These are only used for the VFP hard-float ABI. +*/ +static void +ffi_prep_args_SYSV (ffi_cif *cif, int flags, void *rvalue, + void **avalue, char *argp) +{ + ffi_type **arg_types = cif->arg_types; + int i, n; + + if (flags == ARM_TYPE_STRUCT) + { + *(void **) argp = rvalue; + argp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + argp = ffi_align (ty, argp); + argp += ffi_put_arg (ty, avalue[i], argp); + } +} + +static void +ffi_prep_args_VFP (ffi_cif *cif, int flags, void *rvalue, + void **avalue, char *stack, char *vfp_space) +{ + ffi_type **arg_types = cif->arg_types; + int i, n, vi = 0; + char *argp, *regp, *eo_regp; + char stack_used = 0; + char done_with_regs = 0; + + /* The first 4 words on the stack are used for values + passed in core registers. */ + regp = stack; + eo_regp = argp = regp + 16; + + /* If the function returns an FFI_TYPE_STRUCT in memory, + that address is passed in r0 to the function. */ + if (flags == ARM_TYPE_STRUCT) + { + *(void **) regp = rvalue; + regp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + void *a = avalue[i]; + int is_vfp_type = vfp_type_p (ty); + + /* Allocated in VFP registers. */ + if (vi < cif->vfp_nargs && is_vfp_type) + { + char *vfp_slot = vfp_space + cif->vfp_args[vi++] * 4; + ffi_put_arg (ty, a, vfp_slot); + continue; + } + /* Try allocating in core registers. */ + else if (!done_with_regs && !is_vfp_type) + { + char *tregp = ffi_align (ty, regp); + size_t size = ty->size; + size = (size < 4) ? 4 : size; // pad + /* Check if there is space left in the aligned register + area to place the argument. */ + if (tregp + size <= eo_regp) + { + regp = tregp + ffi_put_arg (ty, a, tregp); + done_with_regs = (regp == argp); + // ensure we did not write into the stack area + FFI_ASSERT (regp <= argp); + continue; + } + /* In case there are no arguments in the stack area yet, + the argument is passed in the remaining core registers + and on the stack. */ + else if (!stack_used) + { + stack_used = 1; + done_with_regs = 1; + argp = tregp + ffi_put_arg (ty, a, tregp); + FFI_ASSERT (eo_regp < argp); + continue; + } + } + /* Base case, arguments are passed on the stack */ + stack_used = 1; + argp = ffi_align (ty, argp); + argp += ffi_put_arg (ty, a, argp); + } +} + +/* Perform machine dependent cif processing */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + int flags = 0, cabi = cif->abi; + size_t bytes = cif->bytes; + + /* Map out the register placements of VFP register args. The VFP + hard-float calling conventions are slightly more sophisticated + than the base calling conventions, so we do it here instead of + in ffi_prep_args(). */ + if (cabi == FFI_VFP) + layout_vfp_args (cif); + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + flags = ARM_TYPE_VOID; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + flags = ARM_TYPE_INT; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = ARM_TYPE_INT64; + break; + + case FFI_TYPE_FLOAT: + flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_S : ARM_TYPE_INT); + break; + case FFI_TYPE_DOUBLE: + flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_D : ARM_TYPE_INT64); + break; + + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + if (cabi == FFI_VFP) + { + int h = vfp_type_p (cif->rtype); + + flags = ARM_TYPE_VFP_N; + if (h == 0x100 + FFI_TYPE_FLOAT) + flags = ARM_TYPE_VFP_S; + if (h == 0x100 + FFI_TYPE_DOUBLE) + flags = ARM_TYPE_VFP_D; + if (h != 0) + break; + } + + /* A Composite Type not larger than 4 bytes is returned in r0. + A Composite Type larger than 4 bytes, or whose size cannot + be determined statically ... is stored in memory at an + address passed [in r0]. */ + if (cif->rtype->size <= 4) + flags = ARM_TYPE_INT; + else + { + flags = ARM_TYPE_STRUCT; + bytes += 4; + } + break; + + default: + abort(); + } + + /* Round the stack up to a multiple of 8 bytes. This isn't needed + everywhere, but it is on some platforms, and it doesn't harm anything + when it isn't needed. */ + bytes = FFI_ALIGN (bytes, 8); + + /* Minimum stack space is the 4 register arguments that we pop. */ + if (bytes < 4*4) + bytes = 4*4; + + cif->bytes = bytes; + cif->flags = flags; + + return FFI_OK; +} + +/* Perform machine dependent cif processing for variadic calls */ +ffi_status +ffi_prep_cif_machdep_var (ffi_cif * cif, + unsigned int nfixedargs, unsigned int ntotalargs) +{ + /* VFP variadic calls actually use the SYSV ABI */ + if (cif->abi == FFI_VFP) + cif->abi = FFI_SYSV; + + return ffi_prep_cif_machdep (cif); +} + +/* Prototypes for assembly functions, in sysv.S. */ + +struct call_frame +{ + void *fp; + void *lr; + void *rvalue; + int flags; + void *closure; +}; + +extern void ffi_call_SYSV (void *stack, struct call_frame *, + void (*fn) (void)) FFI_HIDDEN; +extern void ffi_call_VFP (void *vfp_space, struct call_frame *, + void (*fn) (void), unsigned vfp_used) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif * cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + int flags = cif->flags; + ffi_type *rtype = cif->rtype; + size_t bytes, rsize, vfp_size; + char *stack, *vfp_space, *new_rvalue; + struct call_frame *frame; + + rsize = 0; + if (rvalue == NULL) + { + /* If the return value is a struct and we don't have a return + value address then we need to make one. Otherwise the return + value is in registers and we can ignore them. */ + if (flags == ARM_TYPE_STRUCT) + rsize = rtype->size; + else + flags = ARM_TYPE_VOID; + } + else if (flags == ARM_TYPE_VFP_N) + { + /* Largest case is double x 4. */ + rsize = 32; + } + else if (flags == ARM_TYPE_INT && rtype->type == FFI_TYPE_STRUCT) + rsize = 4; + + /* Largest case. */ + vfp_size = (cif->abi == FFI_VFP && cif->vfp_used ? 8*8: 0); + + bytes = cif->bytes; + stack = alloca (vfp_size + bytes + sizeof(struct call_frame) + rsize); + + vfp_space = NULL; + if (vfp_size) + { + vfp_space = stack; + stack += vfp_size; + } + + frame = (struct call_frame *)(stack + bytes); + + new_rvalue = rvalue; + if (rsize) + new_rvalue = (void *)(frame + 1); + + frame->rvalue = new_rvalue; + frame->flags = flags; + frame->closure = closure; + + if (vfp_space) + { + ffi_prep_args_VFP (cif, flags, new_rvalue, avalue, stack, vfp_space); + ffi_call_VFP (vfp_space, frame, fn, cif->vfp_used); + } + else + { + ffi_prep_args_SYSV (cif, flags, new_rvalue, avalue, stack); + ffi_call_SYSV (stack, frame, fn); + } + + if (rvalue && rvalue != new_rvalue) + memcpy (rvalue, new_rvalue, rtype->size); +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +static void * +ffi_prep_incoming_args_SYSV (ffi_cif *cif, void *rvalue, + char *argp, void **avalue) +{ + ffi_type **arg_types = cif->arg_types; + int i, n; + + if (cif->flags == ARM_TYPE_STRUCT) + { + rvalue = *(void **) argp; + argp += 4; + } + else + { + if (cif->rtype->size && cif->rtype->size < 4) + *(uint32_t *) rvalue = 0; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + + argp = ffi_align (ty, argp); + avalue[i] = (void *) argp; + argp += z; + } + + return rvalue; +} + +static void * +ffi_prep_incoming_args_VFP (ffi_cif *cif, void *rvalue, char *stack, + char *vfp_space, void **avalue) +{ + ffi_type **arg_types = cif->arg_types; + int i, n, vi = 0; + char *argp, *regp, *eo_regp; + char done_with_regs = 0; + char stack_used = 0; + + regp = stack; + eo_regp = argp = regp + 16; + + if (cif->flags == ARM_TYPE_STRUCT) + { + rvalue = *(void **) regp; + regp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + int is_vfp_type = vfp_type_p (ty); + size_t z = ty->size; + + if (vi < cif->vfp_nargs && is_vfp_type) + { + avalue[i] = vfp_space + cif->vfp_args[vi++] * 4; + continue; + } + else if (!done_with_regs && !is_vfp_type) + { + char *tregp = ffi_align (ty, regp); + + z = (z < 4) ? 4 : z; // pad + + /* If the arguments either fits into the registers or uses registers + and stack, while we haven't read other things from the stack */ + if (tregp + z <= eo_regp || !stack_used) + { + /* Because we're little endian, this is what it turns into. */ + avalue[i] = (void *) tregp; + regp = tregp + z; + + /* If we read past the last core register, make sure we + have not read from the stack before and continue + reading after regp. */ + if (regp > eo_regp) + { + FFI_ASSERT (!stack_used); + argp = regp; + } + if (regp >= eo_regp) + { + done_with_regs = 1; + stack_used = 1; + } + continue; + } + } + + stack_used = 1; + argp = ffi_align (ty, argp); + avalue[i] = (void *) argp; + argp += z; + } + + return rvalue; +} + +struct closure_frame +{ + char vfp_space[8*8] __attribute__((aligned(8))); + char result[8*4]; + char argp[]; +}; + +int FFI_HIDDEN +ffi_closure_inner_SYSV (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + struct closure_frame *frame) +{ + void **avalue = (void **) alloca (cif->nargs * sizeof (void *)); + void *rvalue = ffi_prep_incoming_args_SYSV (cif, frame->result, + frame->argp, avalue); + fun (cif, rvalue, avalue, user_data); + return cif->flags; +} + +int FFI_HIDDEN +ffi_closure_inner_VFP (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + struct closure_frame *frame) +{ + void **avalue = (void **) alloca (cif->nargs * sizeof (void *)); + void *rvalue = ffi_prep_incoming_args_VFP (cif, frame->result, frame->argp, + frame->vfp_space, avalue); + fun (cif, rvalue, avalue, user_data); + return cif->flags; +} + +void ffi_closure_SYSV (void) FFI_HIDDEN; +void ffi_closure_VFP (void) FFI_HIDDEN; +void ffi_go_closure_SYSV (void) FFI_HIDDEN; +void ffi_go_closure_VFP (void) FFI_HIDDEN; + +/* the cif must already be prep'ed */ + +ffi_status +ffi_prep_closure_loc (ffi_closure * closure, + ffi_cif * cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + void (*closure_func) (void) = ffi_closure_SYSV; + + if (cif->abi == FFI_VFP) + { + /* We only need take the vfp path if there are vfp arguments. */ + if (cif->vfp_used) + closure_func = ffi_closure_VFP; + } + else if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + +#if FFI_EXEC_TRAMPOLINE_TABLE + void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); + config[0] = closure; + config[1] = closure_func; +#else + memcpy (closure->tramp, ffi_arm_trampoline, 8); +#if defined (__QNX__) + msync(closure->tramp, 8, 0x1000000); /* clear data map */ + msync(codeloc, 8, 0x1000000); /* clear insn map */ +#else + __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */ + __clear_cache(codeloc, codeloc + 8); /* clear insn map */ +#endif + *(void (**)(void))(closure->tramp + 8) = closure_func; +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ + void (*closure_func) (void) = ffi_go_closure_SYSV; + + if (cif->abi == FFI_VFP) + { + /* We only need take the vfp path if there are vfp arguments. */ + if (cif->vfp_used) + closure_func = ffi_go_closure_VFP; + } + else if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->tramp = closure_func; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +/* Below are routines for VFP hard-float support. */ + +/* A subroutine of vfp_type_p. Given a structure type, return the type code + of the first non-structure element. Recurse for structure elements. + Return -1 if the structure is in fact empty, i.e. no nested elements. */ + +static int +is_hfa0 (const ffi_type *ty) +{ + ffi_type **elements = ty->elements; + int i, ret = -1; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + ret = elements[i]->type; + if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX) + { + ret = is_hfa0 (elements[i]); + if (ret < 0) + continue; + } + break; + } + + return ret; +} + +/* A subroutine of vfp_type_p. Given a structure type, return true if all + of the non-structure elements are the same as CANDIDATE. */ + +static int +is_hfa1 (const ffi_type *ty, int candidate) +{ + ffi_type **elements = ty->elements; + int i; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + return 1; +} + +/* Determine if TY is an homogenous floating point aggregate (HFA). + That is, a structure consisting of 1 to 4 members of all the same type, + where that type is a floating point scalar. + + Returns non-zero iff TY is an HFA. The result is an encoded value where + bits 0-7 contain the type code, and bits 8-10 contain the element count. */ + +static int +vfp_type_p (const ffi_type *ty) +{ + ffi_type **elements; + int candidate, i; + size_t size, ele_count; + + /* Quickest tests first. */ + candidate = ty->type; + switch (ty->type) + { + default: + return 0; + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + ele_count = 1; + goto done; + case FFI_TYPE_COMPLEX: + candidate = ty->elements[0]->type; + if (candidate != FFI_TYPE_FLOAT && candidate != FFI_TYPE_DOUBLE) + return 0; + ele_count = 2; + goto done; + case FFI_TYPE_STRUCT: + break; + } + + /* No HFA types are smaller than 4 bytes, or larger than 32 bytes. */ + size = ty->size; + if (size < 4 || size > 32) + return 0; + + /* Find the type of the first non-structure member. */ + elements = ty->elements; + candidate = elements[0]->type; + if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX) + { + for (i = 0; ; ++i) + { + candidate = is_hfa0 (elements[i]); + if (candidate >= 0) + break; + } + } + + /* If the first member is not a floating point type, it's not an HFA. + Also quickly re-check the size of the structure. */ + switch (candidate) + { + case FFI_TYPE_FLOAT: + ele_count = size / sizeof(float); + if (size != ele_count * sizeof(float)) + return 0; + break; + case FFI_TYPE_DOUBLE: + ele_count = size / sizeof(double); + if (size != ele_count * sizeof(double)) + return 0; + break; + default: + return 0; + } + if (ele_count > 4) + return 0; + + /* Finally, make sure that all scalar elements are the same type. */ + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + /* All tests succeeded. Encode the result. */ + done: + return (ele_count << 8) | candidate; +} + +static int +place_vfp_arg (ffi_cif *cif, int h) +{ + unsigned short reg = cif->vfp_reg_free; + int align = 1, nregs = h >> 8; + + if ((h & 0xff) == FFI_TYPE_DOUBLE) + align = 2, nregs *= 2; + + /* Align register number. */ + if ((reg & 1) && align == 2) + reg++; + + while (reg + nregs <= 16) + { + int s, new_used = 0; + for (s = reg; s < reg + nregs; s++) + { + new_used |= (1 << s); + if (cif->vfp_used & (1 << s)) + { + reg += align; + goto next_reg; + } + } + /* Found regs to allocate. */ + cif->vfp_used |= new_used; + cif->vfp_args[cif->vfp_nargs++] = reg; + + /* Update vfp_reg_free. */ + if (cif->vfp_used & (1 << cif->vfp_reg_free)) + { + reg += nregs; + while (cif->vfp_used & (1 << reg)) + reg += 1; + cif->vfp_reg_free = reg; + } + return 0; + next_reg:; + } + // done, mark all regs as used + cif->vfp_reg_free = 16; + cif->vfp_used = 0xFFFF; + return 1; +} + +static void +layout_vfp_args (ffi_cif * cif) +{ + int i; + /* Init VFP fields */ + cif->vfp_used = 0; + cif->vfp_nargs = 0; + cif->vfp_reg_free = 0; + memset (cif->vfp_args, -1, 16); /* Init to -1. */ + + for (i = 0; i < cif->nargs; i++) + { + int h = vfp_type_p (cif->arg_types[i]); + if (h && place_vfp_arg (cif, h) == 1) + break; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffitarget.h new file mode 100644 index 0000000000..1cf1036407 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/ffitarget.h @@ -0,0 +1,82 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2010 CodeSourcery + Copyright (c) 1996-2003 Red Hat, Inc. + + Target configuration macros for ARM. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_VFP, + FFI_LAST_ABI, +#ifdef __ARM_PCS_VFP + FFI_DEFAULT_ABI = FFI_VFP, +#else + FFI_DEFAULT_ABI = FFI_SYSV, +#endif +} ffi_abi; +#endif + +#define FFI_EXTRA_CIF_FIELDS \ + int vfp_used; \ + unsigned short vfp_reg_free, vfp_nargs; \ + signed char vfp_args[16] \ + +#define FFI_TARGET_SPECIFIC_VARIADIC +#define FFI_TARGET_HAS_COMPLEX_TYPE + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#define FFI_TRAMPOLINE_SIZE 12 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8 +#else +#error "No trampoline table implementation" +#endif + +#else +#define FFI_TRAMPOLINE_SIZE 12 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/internal.h new file mode 100644 index 0000000000..6cf0b2ae5d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/internal.h @@ -0,0 +1,7 @@ +#define ARM_TYPE_VFP_S 0 +#define ARM_TYPE_VFP_D 1 +#define ARM_TYPE_VFP_N 2 +#define ARM_TYPE_INT64 3 +#define ARM_TYPE_INT 4 +#define ARM_TYPE_VOID 5 +#define ARM_TYPE_STRUCT 6 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/sysv.S new file mode 100644 index 0000000000..7bda640e4e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/arm/sysv.S @@ -0,0 +1,383 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc. + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + + ARM Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + +/* GCC 4.8 provides __ARM_ARCH; construct it otherwise. */ +#ifndef __ARM_ARCH +# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7EM__) +# define __ARM_ARCH 7 +# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ + || defined(__ARM_ARCH_6M__) +# define __ARM_ARCH 6 +# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \ + || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \ + || defined(__ARM_ARCH_5TEJ__) +# define __ARM_ARCH 5 +# else +# define __ARM_ARCH 4 +# endif +#endif + +/* Conditionally compile unwinder directives. */ +#ifdef __ARM_EABI__ +# define UNWIND(...) __VA_ARGS__ +#else +# define UNWIND(...) +#endif + +#if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__ARM_EABI__) + .cfi_sections .debug_frame +#endif + +#define CONCAT(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +#ifdef __USER_LABEL_PREFIX__ +# define CNAME(X) CONCAT (__USER_LABEL_PREFIX__, X) +#else +# define CNAME(X) X +#endif +#ifdef __ELF__ +# define SIZE(X) .size CNAME(X), . - CNAME(X) +# define TYPE(X, Y) .type CNAME(X), Y +#else +# define SIZE(X) +# define TYPE(X, Y) +#endif + +#define ARM_FUNC_START_LOCAL(name) \ + .align 3; \ + TYPE(CNAME(name), %function); \ + CNAME(name): + +#define ARM_FUNC_START(name) \ + .globl CNAME(name); \ + FFI_HIDDEN(CNAME(name)); \ + ARM_FUNC_START_LOCAL(name) + +#define ARM_FUNC_END(name) \ + SIZE(name) + +/* Aid in defining a jump table with 8 bytes between entries. */ +/* ??? The clang assembler doesn't handle .if with symbolic expressions. */ +#ifdef __clang__ +# define E(index) +#else +# define E(index) \ + .if . - 0b - 8*index; \ + .error "type table out of sync"; \ + .endif +#endif + + .text + .syntax unified + .arm + +#ifndef __clang__ + /* We require interworking on LDM, which implies ARMv5T, + which implies the existance of BLX. */ + .arch armv5t +#endif + + /* Note that we use STC and LDC to encode VFP instructions, + so that we do not need ".fpu vfp", nor get that added to + the object file attributes. These will not be executed + unless the FFI_VFP abi is used. */ + + @ r0: stack + @ r1: frame + @ r2: fn + @ r3: vfp_used + +ARM_FUNC_START(ffi_call_VFP) + UNWIND(.fnstart) + cfi_startproc + + cmp r3, #3 @ load only d0 if possible +#ifdef __clang__ + vldrle d0, [sp] + vldmgt sp, {d0-d7} +#else + ldcle p11, cr0, [r0] @ vldrle d0, [sp] + ldcgt p11, cr0, [r0], {16} @ vldmgt sp, {d0-d7} +#endif + add r0, r0, #64 @ discard the vfp register args + /* FALLTHRU */ +ARM_FUNC_END(ffi_call_VFP) + +ARM_FUNC_START(ffi_call_SYSV) + stm r1, {fp, lr} + mov fp, r1 + + @ This is a bit of a lie wrt the origin of the unwind info, but + @ now we've got the usual frame pointer and two saved registers. + UNWIND(.save {fp,lr}) + UNWIND(.setfp fp, sp) + cfi_def_cfa(fp, 8) + cfi_rel_offset(fp, 0) + cfi_rel_offset(lr, 4) + + mov sp, r0 @ install the stack pointer + mov lr, r2 @ move the fn pointer out of the way + ldr ip, [fp, #16] @ install the static chain + ldmia sp!, {r0-r3} @ move first 4 parameters in registers. + blx lr @ call fn + + @ Load r2 with the pointer to storage for the return value + @ Load r3 with the return type code + ldr r2, [fp, #8] + ldr r3, [fp, #12] + + @ Deallocate the stack with the arguments. + mov sp, fp + cfi_def_cfa_register(sp) + + @ Store values stored in registers. + .align 3 + add pc, pc, r3, lsl #3 + nop +0: +E(ARM_TYPE_VFP_S) +#ifdef __clang__ + vstr s0, [r2] +#else + stc p10, cr0, [r2] @ vstr s0, [r2] +#endif + pop {fp,pc} +E(ARM_TYPE_VFP_D) +#ifdef __clang__ + vstr d0, [r2] +#else + stc p11, cr0, [r2] @ vstr d0, [r2] +#endif + pop {fp,pc} +E(ARM_TYPE_VFP_N) +#ifdef __clang__ + vstm r2, {d0-d3} +#else + stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3} +#endif + pop {fp,pc} +E(ARM_TYPE_INT64) + str r1, [r2, #4] + nop +E(ARM_TYPE_INT) + str r0, [r2] + pop {fp,pc} +E(ARM_TYPE_VOID) + pop {fp,pc} + nop +E(ARM_TYPE_STRUCT) + pop {fp,pc} + + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_call_SYSV) + + +/* + int ffi_closure_inner_* (cif, fun, user_data, frame) +*/ + +ARM_FUNC_START(ffi_go_closure_SYSV) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + ldr r0, [ip, #4] @ load cif + ldr r1, [ip, #8] @ load fun + mov r2, ip @ load user_data + b 0f + cfi_endproc +ARM_FUNC_END(ffi_go_closure_SYSV) + +ARM_FUNC_START(ffi_closure_SYSV) + UNWIND(.fnstart) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + +#if FFI_EXEC_TRAMPOLINE_TABLE + ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure* +#endif + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data +0: + add ip, sp, #16 @ compute entry sp + sub sp, sp, #64+32 @ allocate frame + cfi_adjust_cfa_offset(64+32) + stmdb sp!, {ip,lr} + + /* Remember that EABI unwind info only applies at call sites. + We need do nothing except note the save of the stack pointer + and the link registers. */ + UNWIND(.save {sp,lr}) + cfi_adjust_cfa_offset(8) + cfi_rel_offset(lr, 4) + + add r3, sp, #8 @ load frame + bl CNAME(ffi_closure_inner_SYSV) + + @ Load values returned in registers. + add r2, sp, #8+64 @ load result + adr r3, CNAME(ffi_closure_ret) + add pc, r3, r0, lsl #3 + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_closure_SYSV) + +ARM_FUNC_START(ffi_go_closure_VFP) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + ldr r0, [ip, #4] @ load cif + ldr r1, [ip, #8] @ load fun + mov r2, ip @ load user_data + b 0f + cfi_endproc +ARM_FUNC_END(ffi_go_closure_VFP) + +ARM_FUNC_START(ffi_closure_VFP) + UNWIND(.fnstart) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + +#if FFI_EXEC_TRAMPOLINE_TABLE + ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure* +#endif + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data +0: + add ip, sp, #16 + sub sp, sp, #64+32 @ allocate frame + cfi_adjust_cfa_offset(64+32) +#ifdef __clang__ + vstm sp, {d0-d7} +#else + stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7} +#endif + stmdb sp!, {ip,lr} + + /* See above. */ + UNWIND(.save {sp,lr}) + cfi_adjust_cfa_offset(8) + cfi_rel_offset(lr, 4) + + add r3, sp, #8 @ load frame + bl CNAME(ffi_closure_inner_VFP) + + @ Load values returned in registers. + add r2, sp, #8+64 @ load result + adr r3, CNAME(ffi_closure_ret) + add pc, r3, r0, lsl #3 + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_closure_VFP) + +/* Load values returned in registers for both closure entry points. + Note that we use LDM with SP in the register set. This is deprecated + by ARM, but not yet unpredictable. */ + +ARM_FUNC_START_LOCAL(ffi_closure_ret) + cfi_startproc + cfi_rel_offset(sp, 0) + cfi_rel_offset(lr, 4) +0: +E(ARM_TYPE_VFP_S) +#ifdef __clang__ + vldr s0, [r2] +#else + ldc p10, cr0, [r2] @ vldr s0, [r2] +#endif + ldm sp, {sp,pc} +E(ARM_TYPE_VFP_D) +#ifdef __clang__ + vldr d0, [r2] +#else + ldc p11, cr0, [r2] @ vldr d0, [r2] +#endif + ldm sp, {sp,pc} +E(ARM_TYPE_VFP_N) +#ifdef __clang__ + vldm r2, {d0-d3} +#else + ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3} +#endif + ldm sp, {sp,pc} +E(ARM_TYPE_INT64) + ldr r1, [r2, #4] + nop +E(ARM_TYPE_INT) + ldr r0, [r2] + ldm sp, {sp,pc} +E(ARM_TYPE_VOID) + ldm sp, {sp,pc} + nop +E(ARM_TYPE_STRUCT) + ldm sp, {sp,pc} + cfi_endproc +ARM_FUNC_END(ffi_closure_ret) + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include + +.align PAGE_MAX_SHIFT +ARM_FUNC_START(ffi_closure_trampoline_table_page) +.rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE + adr ip, #-PAGE_MAX_SIZE @ the config page is PAGE_MAX_SIZE behind the trampoline page + sub ip, #8 @ account for pc bias + ldr pc, [ip, #4] @ jump to ffi_closure_SYSV or ffi_closure_VFP +.endr +ARM_FUNC_END(ffi_closure_trampoline_table_page) +#endif + +#else + +ARM_FUNC_START(ffi_arm_trampoline) +0: adr ip, 0b + ldr pc, 1f +1: .long 0 +ARM_FUNC_END(ffi_arm_trampoline) + +#endif /* FFI_EXEC_TRAMPOLINE_TABLE */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffi.c new file mode 100644 index 0000000000..3d43397b03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffi.c @@ -0,0 +1,423 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Anthony Green + Copyright (c) 2009 Bradley Smith + + AVR32 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include +#include + +/* #define DEBUG */ + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned int, unsigned int, unsigned int*, unsigned int, + void (*fn)(void)); +extern void ffi_closure_SYSV (ffi_closure *); + +unsigned int pass_struct_on_stack(ffi_type *type) +{ + if(type->type != FFI_TYPE_STRUCT) + return 0; + + if(type->alignment < type->size && + !(type->size == 4 || type->size == 8) && + !(type->size == 8 && type->alignment >= 4)) + return 1; + + if(type->size == 3 || type->size == 5 || type->size == 6 || + type->size == 7) + return 1; + + return 0; +} + +/* ffi_prep_args is called by the assembly routine once stack space + * has been allocated for the function's arguments + * + * This is annoyingly complex since we need to keep track of used + * registers. + */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + ffi_type **p_arg; + char *reg_base = stack; + char *stack_base = stack + 20; + unsigned int stack_offset = 0; + unsigned int reg_mask = 0; + + p_argv = ecif->avalue; + + /* If cif->flags is struct then we know it's not passed in registers */ + if(ecif->cif->flags == FFI_TYPE_STRUCT) + { + *(void**)reg_base = ecif->rvalue; + reg_mask |= 1; + } + + for(i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; + i++, p_arg++) + { + size_t z = (*p_arg)->size; + int alignment = (*p_arg)->alignment; + int type = (*p_arg)->type; + char *addr = 0; + + if(z % 4 != 0) + z += (4 - z % 4); + + if(reg_mask != 0x1f) + { + if(pass_struct_on_stack(*p_arg)) + { + addr = stack_base + stack_offset; + stack_offset += z; + } + else if(z == sizeof(int)) + { + char index = 0; + + while((reg_mask >> index) & 1) + index++; + + addr = reg_base + (index * 4); + reg_mask |= (1 << index); + } + else if(z == 2 * sizeof(int)) + { + if(!((reg_mask >> 1) & 1)) + { + addr = reg_base + 4; + reg_mask |= (3 << 1); + } + else if(!((reg_mask >> 3) & 1)) + { + addr = reg_base + 12; + reg_mask |= (3 << 3); + } + } + } + + if(!addr) + { + addr = stack_base + stack_offset; + stack_offset += z; + } + + if(type == FFI_TYPE_STRUCT && (*p_arg)->elements[1] == NULL) + type = (*p_arg)->elements[0]->type; + + switch(type) + { + case FFI_TYPE_UINT8: + *(unsigned int *)addr = (unsigned int)*(UINT8 *)(*p_argv); + break; + case FFI_TYPE_SINT8: + *(signed int *)addr = (signed int)*(SINT8 *)(*p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *)addr = (unsigned int)*(UINT16 *)(*p_argv); + break; + case FFI_TYPE_SINT16: + *(signed int *)addr = (signed int)*(SINT16 *)(*p_argv); + break; + default: + memcpy(addr, *p_argv, z); + } + + p_argv++; + } + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < 5; i++) + { + if((reg_mask & (1 << i)) == 0) + printf("r%d: (unused)\n", 12 - i); + else + printf("r%d: 0x%08x\n", 12 - i, ((unsigned int*)reg_base)[i]); + } + + for(i = 0; i < stack_offset / 4; i++) + { + printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack_base)[i]); + } +#endif +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Round the stack up to a multiple of 8 bytes. This isn't needed + * everywhere, but it is on some platforms, and it doesn't harm + * anything when it isn't needed. */ + cif->bytes = (cif->bytes + 7) & ~7; + + /* Flag to indicate that he return value is in fact a struct */ + cif->rstruct_flag = 0; + + /* Set the return type flag */ + switch(cif->rtype->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + cif->flags = (unsigned)FFI_TYPE_UINT8; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + cif->flags = (unsigned)FFI_TYPE_UINT16; + break; + case FFI_TYPE_FLOAT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + cif->flags = (unsigned)FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned)FFI_TYPE_UINT64; + break; + case FFI_TYPE_STRUCT: + cif->rstruct_flag = 1; + if(!pass_struct_on_stack(cif->rtype)) + { + if(cif->rtype->size <= 1) + cif->flags = (unsigned)FFI_TYPE_UINT8; + else if(cif->rtype->size <= 2) + cif->flags = (unsigned)FFI_TYPE_UINT16; + else if(cif->rtype->size <= 4) + cif->flags = (unsigned)FFI_TYPE_UINT32; + else if(cif->rtype->size <= 8) + cif->flags = (unsigned)FFI_TYPE_UINT64; + else + cif->flags = (unsigned)cif->rtype->type; + } + else + cif->flags = (unsigned)cif->rtype->type; + break; + default: + cif->flags = (unsigned)cif->rtype->type; + break; + } + + return FFI_OK; +} + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + unsigned int size = 0, i = 0; + ffi_type **p_arg; + + ecif.cif = cif; + ecif.avalue = avalue; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + size += (*p_arg)->size + (4 - (*p_arg)->size % 4); + + /* If the return value is a struct and we don't have a return value + * address then we need to make one */ + + /* If cif->flags is struct then it's not suitable for registers */ + if((rvalue == NULL) && (cif->flags == FFI_TYPE_STRUCT)) + ecif.rvalue = alloca(cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch(cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, size, cif->flags, + ecif.rvalue, cif->rstruct_flag, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif) +{ + register unsigned int i, reg_mask = 0; + register void **p_argv; + register ffi_type **p_arg; + register char *reg_base = stack; + register char *stack_base = stack + 20; + register unsigned int stack_offset = 0; + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < cif->nargs + 7; i++) + { + printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack)[i]); + } +#endif + + /* If cif->flags is struct then we know it's not passed in registers */ + if(cif->flags == FFI_TYPE_STRUCT) + { + *rvalue = *(void **)reg_base; + reg_mask |= 1; + } + + p_argv = avalue; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + { + size_t z = (*p_arg)->size; + int alignment = (*p_arg)->alignment; + + *p_argv = 0; + + if(z % 4 != 0) + z += (4 - z % 4); + + if(reg_mask != 0x1f) + { + if(pass_struct_on_stack(*p_arg)) + { + *p_argv = (void*)stack_base + stack_offset; + stack_offset += z; + } + else if(z <= sizeof(int)) + { + char index = 0; + + while((reg_mask >> index) & 1) + index++; + + *p_argv = (void*)reg_base + (index * 4); + reg_mask |= (1 << index); + } + else if(z == 2 * sizeof(int)) + { + if(!((reg_mask >> 1) & 1)) + { + *p_argv = (void*)reg_base + 4; + reg_mask |= (3 << 1); + } + else if(!((reg_mask >> 3) & 1)) + { + *p_argv = (void*)reg_base + 12; + reg_mask |= (3 << 3); + } + } + } + + if(!*p_argv) + { + *p_argv = (void*)stack_base + stack_offset; + stack_offset += z; + } + + if((*p_arg)->type != FFI_TYPE_STRUCT || + (*p_arg)->elements[1] == NULL) + { + if(alignment == 1) + **(unsigned int**)p_argv <<= 24; + else if(alignment == 2) + **(unsigned int**)p_argv <<= 16; + } + + p_argv++; + } + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < cif->nargs; i++) + { + printf("sp+%d: 0x%08x\n", i*4, *(((unsigned int**)avalue)[i])); + } +#endif +} + +/* This function is jumped to by the trampoline */ + +unsigned int ffi_closure_SYSV_inner(ffi_closure *closure, void **respp, + void *args) +{ + ffi_cif *cif; + void **arg_area; + unsigned int i, size = 0; + ffi_type **p_arg; + + cif = closure->cif; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + size += (*p_arg)->size + (4 - (*p_arg)->size % 4); + + arg_area = (void **)alloca(size); + + /* this call will initialize ARG_AREA, such that each element in that + * array points to the corresponding value on the stack; and if the + * function returns a structure, it will re-set RESP to point to the + * structure return address. */ + + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); + + (closure->fun)(cif, *respp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]); + unsigned int __fun = (unsigned int)(&ffi_closure_SYSV); + unsigned int __ctx = (unsigned int)(codeloc); + unsigned int __rstruct_flag = (unsigned int)(cif->rstruct_flag); + unsigned int __inner = (unsigned int)(&ffi_closure_SYSV_inner); + *(unsigned int*) &__tramp[0] = 0xebcd1f00; /* pushm r8-r12 */ + *(unsigned int*) &__tramp[4] = 0xfefc0010; /* ld.w r12, pc[16] */ + *(unsigned int*) &__tramp[8] = 0xfefb0010; /* ld.w r11, pc[16] */ + *(unsigned int*) &__tramp[12] = 0xfefa0010; /* ld.w r10, pc[16] */ + *(unsigned int*) &__tramp[16] = 0xfeff0010; /* ld.w pc, pc[16] */ + *(unsigned int*) &__tramp[20] = __ctx; + *(unsigned int*) &__tramp[24] = __rstruct_flag; + *(unsigned int*) &__tramp[28] = __inner; + *(unsigned int*) &__tramp[32] = __fun; + syscall(__NR_cacheflush, 0, (&__tramp[0]), 36); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffitarget.h new file mode 100644 index 0000000000..d0c7586f9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/ffitarget.h @@ -0,0 +1,55 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2009 Bradley Smith + Target configuration macros for AVR32. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_EXTRA_CIF_FIELDS unsigned int rstruct_flag + +/* Definitions for closures */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 36 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/sysv.S new file mode 100644 index 0000000000..a984b3c88a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/avr32/sysv.S @@ -0,0 +1,208 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2009 Bradley Smith + + AVR32 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + --------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + /* r12: ffi_prep_args + * r11: &ecif + * r10: size + * r9: cif->flags + * r8: ecif.rvalue + * sp+0: cif->rstruct_flag + * sp+4: fn */ + + .text + .align 1 + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +ffi_call_SYSV: + stm --sp, r0,r1,lr + stm --sp, r8-r12 + mov r0, sp + + /* Make room for all of the new args. */ + sub sp, r10 + /* Pad to make way for potential skipped registers */ + sub sp, 20 + + /* Call ffi_prep_args(stack, &ecif). */ + /* r11 already set */ + mov r1, r12 + mov r12, sp + icall r1 + + /* Save new argument size */ + mov r1, r12 + + /* Move first 5 parameters in registers. */ + ldm sp++, r8-r12 + + /* call (fn) (...). */ + ld.w r1, r0[36] + icall r1 + + /* Remove the space we pushed for the args. */ + mov sp, r0 + + /* Load r1 with the rstruct flag. */ + ld.w r1, sp[32] + + /* Load r9 with the return type code. */ + ld.w r9, sp[12] + + /* Load r8 with the return value pointer. */ + ld.w r8, sp[16] + + /* If the return value pointer is NULL, assume no return value. */ + cp.w r8, 0 + breq .Lend + + /* Check if return type is actually a struct */ + cp.w r1, 0 + breq 1f + + /* Return 8bit */ + cp.w r9, FFI_TYPE_UINT8 + breq .Lstore8 + + /* Return 16bit */ + cp.w r9, FFI_TYPE_UINT16 + breq .Lstore16 + +1: + /* Return 32bit */ + cp.w r9, FFI_TYPE_UINT32 + breq .Lstore32 + cp.w r9, FFI_TYPE_UINT16 + breq .Lstore32 + cp.w r9, FFI_TYPE_UINT8 + breq .Lstore32 + + /* Return 64bit */ + cp.w r9, FFI_TYPE_UINT64 + breq .Lstore64 + + /* Didn't match anything */ + bral .Lend + +.Lstore64: + st.w r8[0], r11 + st.w r8[4], r10 + bral .Lend + +.Lstore32: + st.w r8[0], r12 + bral .Lend + +.Lstore16: + st.h r8[0], r12 + bral .Lend + +.Lstore8: + st.b r8[0], r12 + bral .Lend + +.Lend: + sub sp, -20 + ldm sp++, r0,r1,pc + + .size ffi_call_SYSV, . - ffi_call_SYSV + + + /* r12: __ctx + * r11: __rstruct_flag + * r10: __inner */ + + .align 1 + .globl ffi_closure_SYSV + .type ffi_closure_SYSV, @function +ffi_closure_SYSV: + stm --sp, r0,lr + mov r0, r11 + mov r8, r10 + sub r10, sp, -8 + sub sp, 12 + st.w sp[8], sp + sub r11, sp, -8 + icall r8 + + /* Check if return type is actually a struct */ + cp.w r0, 0 + breq 1f + + /* Return 8bit */ + cp.w r12, FFI_TYPE_UINT8 + breq .Lget8 + + /* Return 16bit */ + cp.w r12, FFI_TYPE_UINT16 + breq .Lget16 + +1: + /* Return 32bit */ + cp.w r12, FFI_TYPE_UINT32 + breq .Lget32 + cp.w r12, FFI_TYPE_UINT16 + breq .Lget32 + cp.w r12, FFI_TYPE_UINT8 + breq .Lget32 + + /* Return 64bit */ + cp.w r12, FFI_TYPE_UINT64 + breq .Lget64 + + /* Didn't match anything */ + bral .Lclend + +.Lget64: + ld.w r11, sp[0] + ld.w r10, sp[4] + bral .Lclend + +.Lget32: + ld.w r12, sp[0] + bral .Lclend + +.Lget16: + ld.uh r12, sp[0] + bral .Lclend + +.Lget8: + ld.ub r12, sp[0] + bral .Lclend + +.Lclend: + sub sp, -12 + ldm sp++, r0,lr + sub sp, -20 + mov pc, lr + + .size ffi_closure_SYSV, . - ffi_closure_SYSV + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffi.c new file mode 100644 index 0000000000..22a2acdac1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffi.c @@ -0,0 +1,196 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Alexandre K. I. de Mendonca , + Paulo Pizarro + + Blackfin Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ +#include +#include + +#include +#include + +/* Maximum number of GPRs available for argument passing. */ +#define MAX_GPRARGS 3 + +/* + * Return types + */ +#define FFIBFIN_RET_VOID 0 +#define FFIBFIN_RET_BYTE 1 +#define FFIBFIN_RET_HALFWORD 2 +#define FFIBFIN_RET_INT64 3 +#define FFIBFIN_RET_INT32 4 + +/*====================================================================*/ +/* PROTOTYPE * + /*====================================================================*/ +void ffi_prep_args(unsigned char *, extended_cif *); + +/*====================================================================*/ +/* Externals */ +/* (Assembly) */ +/*====================================================================*/ + +extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void)); + +/*====================================================================*/ +/* Implementation */ +/* */ +/*====================================================================*/ + + +/* + * This function calculates the return type (size) based on type. + */ + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* --------------------------------------* + * Return handling * + * --------------------------------------*/ + switch (cif->rtype->type) { + case FFI_TYPE_VOID: + cif->flags = FFIBFIN_RET_VOID; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + cif->flags = FFIBFIN_RET_HALFWORD; + break; + case FFI_TYPE_UINT8: + cif->flags = FFIBFIN_RET_BYTE; + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + case FFI_TYPE_SINT8: + cif->flags = FFIBFIN_RET_INT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFIBFIN_RET_INT64; + break; + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4){ + cif->flags = FFIBFIN_RET_INT32; + }else if (cif->rtype->size == 8){ + cif->flags = FFIBFIN_RET_INT64; + }else{ + //it will return via a hidden pointer in P0 + cif->flags = FFIBFIN_RET_VOID; + } + break; + default: + FFI_ASSERT(0); + break; + } + return FFI_OK; +} + +/* + * This will prepare the arguments and will call the assembly routine + * cif = the call interface + * fn = the function to be called + * rvalue = the return value + * avalue = the arguments + */ +void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) +{ + int ret_type = cif->flags; + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + ecif.rvalue = rvalue; + + switch (cif->abi) { + case FFI_SYSV: + ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + + +/* +* This function prepares the parameters (copies them from the ecif to the stack) +* to call the function (ffi_prep_args is called by the assembly routine in file +* sysv.S, which also calls the actual function) +*/ +void ffi_prep_args(unsigned char *stack, extended_cif *ecif) +{ + register unsigned int i = 0; + void **p_argv; + unsigned char *argp; + ffi_type **p_arg; + argp = stack; + p_argv = ecif->avalue; + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) { + size_t z; + z = (*p_arg)->size; + if (z < sizeof(int)) { + z = sizeof(int); + switch ((*p_arg)->type) { + case FFI_TYPE_SINT8: { + signed char v = *(SINT8 *)(* p_argv); + signed int t = v; + *(signed int *) argp = t; + } + break; + case FFI_TYPE_UINT8: { + unsigned char v = *(UINT8 *)(* p_argv); + unsigned int t = v; + *(unsigned int *) argp = t; + } + break; + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv); + break; + case FFI_TYPE_STRUCT: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + default: + FFI_ASSERT(0); + break; + } + } else if (z == sizeof(int)) { + *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv); + } else { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + } +} + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffitarget.h new file mode 100644 index 0000000000..2175c01016 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/ffitarget.h @@ -0,0 +1,43 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012 Alexandre K. I. de Mendonca + + Blackfin Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/sysv.S new file mode 100644 index 0000000000..f4278be242 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/bfin/sysv.S @@ -0,0 +1,179 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2012 Alexandre K. I. de Mendonca , + Paulo Pizarro + + Blackfin Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +.text +.align 4 + + /* + There is a "feature" in the bfin toolchain that it puts a _ before function names + that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV + */ + .global _ffi_call_SYSV; + .type _ffi_call_SYSV, STT_FUNC; + .func ffi_call_SYSV + + /* + cif->bytes = R0 (fp+8) + &ecif = R1 (fp+12) + ffi_prep_args = R2 (fp+16) + ret_type = stack (fp+20) + ecif.rvalue = stack (fp+24) + fn = stack (fp+28) + got (fp+32) + + There is room for improvement here (we can use temporary registers + instead of saving the values in the memory) + REGS: + P5 => Stack pointer (function arguments) + R5 => cif->bytes + R4 => ret->type + + FP-20 = P3 + FP-16 = SP (parameters area) + FP-12 = SP (temp) + FP-08 = function return part 1 [R0] + FP-04 = function return part 2 [R1] + */ + +_ffi_call_SYSV: +.prologue: + LINK 20; + [FP-20] = P3; + [FP+8] = R0; + [FP+12] = R1; + [FP+16] = R2; + +.allocate_stack: + //alocate cif->bytes into the stack + R1 = [FP+8]; + R0 = SP; + R0 = R0 - R1; + R1 = 4; + R0 = R0 - R1; + [FP-12] = SP; + SP = R0; + [FP-16] = SP; + +.call_prep_args: + //get the addr of prep_args + P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4]; + P1 = [P0]; + P3 = [P0+4]; + R0 = [FP-16];//SP (parameter area) + R1 = [FP+12];//ecif + call (P1); + +.call_user_function: + //ajust SP so as to allow the user function access the parameters on the stack + SP = [FP-16]; //point to function parameters + R0 = [SP]; + R1 = [SP+4]; + R2 = [SP+8]; + //load user function address + P0 = FP; + P0 +=28; + P1 = [P0]; + P1 = [P1]; + P3 = [P0+4]; + /* + For functions returning aggregate values (struct) occupying more than 8 bytes, + the caller allocates the return value object on the stack and the address + of this object is passed to the callee as a hidden argument in register P0. + */ + P0 = [FP+24]; + + call (P1); + SP = [FP-12]; +.compute_return: + P2 = [FP-20]; + [FP-8] = R0; + [FP-4] = R1; + + R0 = [FP+20]; + R1 = R0 << 2; + + R0 = [P2+.rettable@GOT17M4]; + R0 = R1 + R0; + P2 = R0; + R1 = [P2]; + + P2 = [FP+-20]; + R0 = [P2+.rettable@GOT17M4]; + R0 = R1 + R0; + P2 = R0; + R0 = [FP-8]; + R1 = [FP-4]; + jump (P2); + +/* +#define FFIBFIN_RET_VOID 0 +#define FFIBFIN_RET_BYTE 1 +#define FFIBFIN_RET_HALFWORD 2 +#define FFIBFIN_RET_INT64 3 +#define FFIBFIN_RET_INT32 4 +*/ +.align 4 +.align 4 +.rettable: + .dd .epilogue - .rettable + .dd .rbyte - .rettable; + .dd .rhalfword - .rettable; + .dd .rint64 - .rettable; + .dd .rint32 - .rettable; + +.rbyte: + P0 = [FP+24]; + R0 = R0.B (Z); + [P0] = R0; + JUMP .epilogue +.rhalfword: + P0 = [FP+24]; + R0 = R0.L; + [P0] = R0; + JUMP .epilogue +.rint64: + P0 = [FP+24];// &rvalue + [P0] = R0; + [P0+4] = R1; + JUMP .epilogue +.rint32: + P0 = [FP+24]; + [P0] = R0; +.epilogue: + R0 = [FP+8]; + R1 = [FP+12]; + R2 = [FP+16]; + P3 = [FP-20]; + UNLINK; + RTS; + +.size _ffi_call_SYSV,.-_ffi_call_SYSV; +.endfunc diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/closures.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/closures.c new file mode 100644 index 0000000000..15e6e0f0f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/closures.c @@ -0,0 +1,966 @@ +/* ----------------------------------------------------------------------- + closures.c - Copyright (c) 2007, 2009, 2010 Red Hat, Inc. + Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + + Code to allocate and deallocate memory for closures. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#if defined __linux__ && !defined _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +#ifdef __NetBSD__ +#include +#endif + +#if __NetBSD_Version__ - 0 >= 799007200 +/* NetBSD with PROT_MPROTECT */ +#include + +#include +#include + +static const size_t overhead = + (sizeof(max_align_t) > sizeof(void *) + sizeof(size_t)) ? + sizeof(max_align_t) + : sizeof(void *) + sizeof(size_t); + +#define ADD_TO_POINTER(p, d) ((void *)((uintptr_t)(p) + (d))) + +void * +ffi_closure_alloc (size_t size, void **code) +{ + static size_t page_size; + size_t rounded_size; + void *codeseg, *dataseg; + int prot; + + /* Expect that PAX mprotect is active and a separate code mapping is necessary. */ + if (!code) + return NULL; + + /* Obtain system page size. */ + if (!page_size) + page_size = sysconf(_SC_PAGESIZE); + + /* Round allocation size up to the next page, keeping in mind the size field and pointer to code map. */ + rounded_size = (size + overhead + page_size - 1) & ~(page_size - 1); + + /* Primary mapping is RW, but request permission to switch to PROT_EXEC later. */ + prot = PROT_READ | PROT_WRITE | PROT_MPROTECT(PROT_EXEC); + dataseg = mmap(NULL, rounded_size, prot, MAP_ANON | MAP_PRIVATE, -1, 0); + if (dataseg == MAP_FAILED) + return NULL; + + /* Create secondary mapping and switch it to RX. */ + codeseg = mremap(dataseg, rounded_size, NULL, rounded_size, MAP_REMAPDUP); + if (codeseg == MAP_FAILED) { + munmap(dataseg, rounded_size); + return NULL; + } + if (mprotect(codeseg, rounded_size, PROT_READ | PROT_EXEC) == -1) { + munmap(codeseg, rounded_size); + munmap(dataseg, rounded_size); + return NULL; + } + + /* Remember allocation size and location of the secondary mapping for ffi_closure_free. */ + memcpy(dataseg, &rounded_size, sizeof(rounded_size)); + memcpy(ADD_TO_POINTER(dataseg, sizeof(size_t)), &codeseg, sizeof(void *)); + *code = ADD_TO_POINTER(codeseg, overhead); + return ADD_TO_POINTER(dataseg, overhead); +} + +void +ffi_closure_free (void *ptr) +{ + void *codeseg, *dataseg; + size_t rounded_size; + + dataseg = ADD_TO_POINTER(ptr, -overhead); + memcpy(&rounded_size, dataseg, sizeof(rounded_size)); + memcpy(&codeseg, ADD_TO_POINTER(dataseg, sizeof(size_t)), sizeof(void *)); + munmap(dataseg, rounded_size); + munmap(codeseg, rounded_size); +} +#else /* !NetBSD with PROT_MPROTECT */ + +#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE +# if __linux__ && !defined(__ANDROID__) +/* This macro indicates it may be forbidden to map anonymous memory + with both write and execute permission. Code compiled when this + option is defined will attempt to map such pages once, but if it + fails, it falls back to creating a temporary file in a writable and + executable filesystem and mapping pages from it into separate + locations in the virtual memory space, one location writable and + another executable. */ +# define FFI_MMAP_EXEC_WRIT 1 +# define HAVE_MNTENT 1 +# endif +# if defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__) +/* Windows systems may have Data Execution Protection (DEP) enabled, + which requires the use of VirtualMalloc/VirtualFree to alloc/free + executable memory. */ +# define FFI_MMAP_EXEC_WRIT 1 +# endif +#endif + +#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX +# if defined(__linux__) && !defined(__ANDROID__) +/* When defined to 1 check for SELinux and if SELinux is active, + don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that + might cause audit messages. */ +# define FFI_MMAP_EXEC_SELINUX 1 +# endif +#endif + +#if FFI_CLOSURES + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ + +#include +#include +#include +#include + +extern void *ffi_closure_trampoline_table_page; + +typedef struct ffi_trampoline_table ffi_trampoline_table; +typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry; + +struct ffi_trampoline_table +{ + /* contiguous writable and executable pages */ + vm_address_t config_page; + vm_address_t trampoline_page; + + /* free list tracking */ + uint16_t free_count; + ffi_trampoline_table_entry *free_list; + ffi_trampoline_table_entry *free_list_pool; + + ffi_trampoline_table *prev; + ffi_trampoline_table *next; +}; + +struct ffi_trampoline_table_entry +{ + void *(*trampoline) (); + ffi_trampoline_table_entry *next; +}; + +/* Total number of trampolines that fit in one trampoline table */ +#define FFI_TRAMPOLINE_COUNT (PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE) + +static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER; +static ffi_trampoline_table *ffi_trampoline_tables = NULL; + +static ffi_trampoline_table * +ffi_trampoline_table_alloc (void) +{ + ffi_trampoline_table *table; + vm_address_t config_page; + vm_address_t trampoline_page; + vm_address_t trampoline_page_template; + vm_prot_t cur_prot; + vm_prot_t max_prot; + kern_return_t kt; + uint16_t i; + + /* Allocate two pages -- a config page and a placeholder page */ + config_page = 0x0; + kt = vm_allocate (mach_task_self (), &config_page, PAGE_MAX_SIZE * 2, + VM_FLAGS_ANYWHERE); + if (kt != KERN_SUCCESS) + return NULL; + + /* Remap the trampoline table on top of the placeholder page */ + trampoline_page = config_page + PAGE_MAX_SIZE; + trampoline_page_template = (vm_address_t)&ffi_closure_trampoline_table_page; +#ifdef __arm__ + /* ffi_closure_trampoline_table_page can be thumb-biased on some ARM archs */ + trampoline_page_template &= ~1UL; +#endif + kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_MAX_SIZE, 0x0, + VM_FLAGS_OVERWRITE, mach_task_self (), trampoline_page_template, + FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE); + if (kt != KERN_SUCCESS) + { + vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2); + return NULL; + } + + /* We have valid trampoline and config pages */ + table = calloc (1, sizeof (ffi_trampoline_table)); + table->free_count = FFI_TRAMPOLINE_COUNT; + table->config_page = config_page; + table->trampoline_page = trampoline_page; + + /* Create and initialize the free list */ + table->free_list_pool = + calloc (FFI_TRAMPOLINE_COUNT, sizeof (ffi_trampoline_table_entry)); + + for (i = 0; i < table->free_count; i++) + { + ffi_trampoline_table_entry *entry = &table->free_list_pool[i]; + entry->trampoline = + (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE)); + + if (i < table->free_count - 1) + entry->next = &table->free_list_pool[i + 1]; + } + + table->free_list = table->free_list_pool; + + return table; +} + +static void +ffi_trampoline_table_free (ffi_trampoline_table *table) +{ + /* Remove from the list */ + if (table->prev != NULL) + table->prev->next = table->next; + + if (table->next != NULL) + table->next->prev = table->prev; + + /* Deallocate pages */ + vm_deallocate (mach_task_self (), table->config_page, PAGE_MAX_SIZE * 2); + + /* Deallocate free list */ + free (table->free_list_pool); + free (table); +} + +void * +ffi_closure_alloc (size_t size, void **code) +{ + /* Create the closure */ + ffi_closure *closure = malloc (size); + if (closure == NULL) + return NULL; + + pthread_mutex_lock (&ffi_trampoline_lock); + + /* Check for an active trampoline table with available entries. */ + ffi_trampoline_table *table = ffi_trampoline_tables; + if (table == NULL || table->free_list == NULL) + { + table = ffi_trampoline_table_alloc (); + if (table == NULL) + { + pthread_mutex_unlock (&ffi_trampoline_lock); + free (closure); + return NULL; + } + + /* Insert the new table at the top of the list */ + table->next = ffi_trampoline_tables; + if (table->next != NULL) + table->next->prev = table; + + ffi_trampoline_tables = table; + } + + /* Claim the free entry */ + ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list; + ffi_trampoline_tables->free_list = entry->next; + ffi_trampoline_tables->free_count--; + entry->next = NULL; + + pthread_mutex_unlock (&ffi_trampoline_lock); + + /* Initialize the return values */ + *code = entry->trampoline; + closure->trampoline_table = table; + closure->trampoline_table_entry = entry; + + return closure; +} + +void +ffi_closure_free (void *ptr) +{ + ffi_closure *closure = ptr; + + pthread_mutex_lock (&ffi_trampoline_lock); + + /* Fetch the table and entry references */ + ffi_trampoline_table *table = closure->trampoline_table; + ffi_trampoline_table_entry *entry = closure->trampoline_table_entry; + + /* Return the entry to the free list */ + entry->next = table->free_list; + table->free_list = entry; + table->free_count++; + + /* If all trampolines within this table are free, and at least one other table exists, deallocate + * the table */ + if (table->free_count == FFI_TRAMPOLINE_COUNT + && ffi_trampoline_tables != table) + { + ffi_trampoline_table_free (table); + } + else if (ffi_trampoline_tables != table) + { + /* Otherwise, bump this table to the top of the list */ + table->prev = NULL; + table->next = ffi_trampoline_tables; + if (ffi_trampoline_tables != NULL) + ffi_trampoline_tables->prev = table; + + ffi_trampoline_tables = table; + } + + pthread_mutex_unlock (&ffi_trampoline_lock); + + /* Free the closure */ + free (closure); +} + +#endif + +// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations. + +#elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */ + +#define USE_LOCKS 1 +#define USE_DL_PREFIX 1 +#ifdef __GNUC__ +#ifndef USE_BUILTIN_FFS +#define USE_BUILTIN_FFS 1 +#endif +#endif + +/* We need to use mmap, not sbrk. */ +#define HAVE_MORECORE 0 + +/* We could, in theory, support mremap, but it wouldn't buy us anything. */ +#define HAVE_MREMAP 0 + +/* We have no use for this, so save some code and data. */ +#define NO_MALLINFO 1 + +/* We need all allocations to be in regular segments, otherwise we + lose track of the corresponding code address. */ +#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T + +/* Don't allocate more than a page unless needed. */ +#define DEFAULT_GRANULARITY ((size_t)malloc_getpagesize) + +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include +#if !defined(X86_WIN32) && !defined(X86_WIN64) +#ifdef HAVE_MNTENT +#include +#endif /* HAVE_MNTENT */ +#include +#include + +/* We don't want sys/mman.h to be included after we redefine mmap and + dlmunmap. */ +#include +#define LACKS_SYS_MMAN_H 1 + +#if FFI_MMAP_EXEC_SELINUX +#include +#include + +static int selinux_enabled = -1; + +static int +selinux_enabled_check (void) +{ + struct statfs sfs; + FILE *f; + char *buf = NULL; + size_t len = 0; + + if (statfs ("/selinux", &sfs) >= 0 + && (unsigned int) sfs.f_type == 0xf97cff8cU) + return 1; + f = fopen ("/proc/mounts", "r"); + if (f == NULL) + return 0; + while (getline (&buf, &len, f) >= 0) + { + char *p = strchr (buf, ' '); + if (p == NULL) + break; + p = strchr (p + 1, ' '); + if (p == NULL) + break; + if (strncmp (p + 1, "selinuxfs ", 10) == 0) + { + free (buf); + fclose (f); + return 1; + } + } + free (buf); + fclose (f); + return 0; +} + +#define is_selinux_enabled() (selinux_enabled >= 0 ? selinux_enabled \ + : (selinux_enabled = selinux_enabled_check ())) + +#else + +#define is_selinux_enabled() 0 + +#endif /* !FFI_MMAP_EXEC_SELINUX */ + +/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ +#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX +#include + +static int emutramp_enabled = -1; + +static int +emutramp_enabled_check (void) +{ + char *buf = NULL; + size_t len = 0; + FILE *f; + int ret; + f = fopen ("/proc/self/status", "r"); + if (f == NULL) + return 0; + ret = 0; + + while (getline (&buf, &len, f) != -1) + if (!strncmp (buf, "PaX:", 4)) + { + char emutramp; + if (sscanf (buf, "%*s %*c%c", &emutramp) == 1) + ret = (emutramp == 'E'); + break; + } + free (buf); + fclose (f); + return ret; +} + +#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ + : (emutramp_enabled = emutramp_enabled_check ())) +#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ + +#elif defined (__CYGWIN__) || defined(__INTERIX) + +#include + +/* Cygwin is Linux-like, but not quite that Linux-like. */ +#define is_selinux_enabled() 0 + +#endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ + +#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX +#define is_emutramp_enabled() 0 +#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ + +/* Declare all functions defined in dlmalloc.c as static. */ +static void *dlmalloc(size_t); +static void dlfree(void*); +static void *dlcalloc(size_t, size_t) MAYBE_UNUSED; +static void *dlrealloc(void *, size_t) MAYBE_UNUSED; +static void *dlmemalign(size_t, size_t) MAYBE_UNUSED; +static void *dlvalloc(size_t) MAYBE_UNUSED; +static int dlmallopt(int, int) MAYBE_UNUSED; +static size_t dlmalloc_footprint(void) MAYBE_UNUSED; +static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED; +static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED; +static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED; +static void *dlpvalloc(size_t) MAYBE_UNUSED; +static int dlmalloc_trim(size_t) MAYBE_UNUSED; +static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED; +static void dlmalloc_stats(void) MAYBE_UNUSED; + +#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) +/* Use these for mmap and munmap within dlmalloc.c. */ +static void *dlmmap(void *, size_t, int, int, int, off_t); +static int dlmunmap(void *, size_t); +#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ + +#define mmap dlmmap +#define munmap dlmunmap + +#include "dlmalloc.c" + +#undef mmap +#undef munmap + +#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) + +/* A mutex used to synchronize access to *exec* variables in this file. */ +static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER; + +/* A file descriptor of a temporary file from which we'll map + executable pages. */ +static int execfd = -1; + +/* The amount of space already allocated from the temporary file. */ +static size_t execsize = 0; + +/* Open a temporary file name, and immediately unlink it. */ +static int +open_temp_exec_file_name (char *name, int flags) +{ + int fd; + +#ifdef HAVE_MKOSTEMP + fd = mkostemp (name, flags); +#else + fd = mkstemp (name); +#endif + + if (fd != -1) + unlink (name); + + return fd; +} + +/* Open a temporary file in the named directory. */ +static int +open_temp_exec_file_dir (const char *dir) +{ + static const char suffix[] = "/ffiXXXXXX"; + int lendir, flags; + char *tempname; +#ifdef O_TMPFILE + int fd; +#endif + +#ifdef O_CLOEXEC + flags = O_CLOEXEC; +#else + flags = 0; +#endif + +#ifdef O_TMPFILE + fd = open (dir, flags | O_RDWR | O_EXCL | O_TMPFILE, 0700); + /* If the running system does not support the O_TMPFILE flag then retry without it. */ + if (fd != -1 || (errno != EINVAL && errno != EISDIR && errno != EOPNOTSUPP)) { + return fd; + } else { + errno = 0; + } +#endif + + lendir = (int) strlen (dir); + tempname = __builtin_alloca (lendir + sizeof (suffix)); + + if (!tempname) + return -1; + + memcpy (tempname, dir, lendir); + memcpy (tempname + lendir, suffix, sizeof (suffix)); + + return open_temp_exec_file_name (tempname, flags); +} + +/* Open a temporary file in the directory in the named environment + variable. */ +static int +open_temp_exec_file_env (const char *envvar) +{ + const char *value = getenv (envvar); + + if (!value) + return -1; + + return open_temp_exec_file_dir (value); +} + +#ifdef HAVE_MNTENT +/* Open a temporary file in an executable and writable mount point + listed in the mounts file. Subsequent calls with the same mounts + keep searching for mount points in the same file. Providing NULL + as the mounts file closes the file. */ +static int +open_temp_exec_file_mnt (const char *mounts) +{ + static const char *last_mounts; + static FILE *last_mntent; + + if (mounts != last_mounts) + { + if (last_mntent) + endmntent (last_mntent); + + last_mounts = mounts; + + if (mounts) + last_mntent = setmntent (mounts, "r"); + else + last_mntent = NULL; + } + + if (!last_mntent) + return -1; + + for (;;) + { + int fd; + struct mntent mnt; + char buf[MAXPATHLEN * 3]; + + if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL) + return -1; + + if (hasmntopt (&mnt, "ro") + || hasmntopt (&mnt, "noexec") + || access (mnt.mnt_dir, W_OK)) + continue; + + fd = open_temp_exec_file_dir (mnt.mnt_dir); + + if (fd != -1) + return fd; + } +} +#endif /* HAVE_MNTENT */ + +/* Instructions to look for a location to hold a temporary file that + can be mapped in for execution. */ +static struct +{ + int (*func)(const char *); + const char *arg; + int repeat; +} open_temp_exec_file_opts[] = { + { open_temp_exec_file_env, "TMPDIR", 0 }, + { open_temp_exec_file_dir, "/tmp", 0 }, + { open_temp_exec_file_dir, "/var/tmp", 0 }, + { open_temp_exec_file_dir, "/dev/shm", 0 }, + { open_temp_exec_file_env, "HOME", 0 }, +#ifdef HAVE_MNTENT + { open_temp_exec_file_mnt, "/etc/mtab", 1 }, + { open_temp_exec_file_mnt, "/proc/mounts", 1 }, +#endif /* HAVE_MNTENT */ +}; + +/* Current index into open_temp_exec_file_opts. */ +static int open_temp_exec_file_opts_idx = 0; + +/* Reset a current multi-call func, then advances to the next entry. + If we're at the last, go back to the first and return nonzero, + otherwise return zero. */ +static int +open_temp_exec_file_opts_next (void) +{ + if (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) + open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (NULL); + + open_temp_exec_file_opts_idx++; + if (open_temp_exec_file_opts_idx + == (sizeof (open_temp_exec_file_opts) + / sizeof (*open_temp_exec_file_opts))) + { + open_temp_exec_file_opts_idx = 0; + return 1; + } + + return 0; +} + +/* Return a file descriptor of a temporary zero-sized file in a + writable and executable filesystem. */ +static int +open_temp_exec_file (void) +{ + int fd; + + do + { + fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func + (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].arg); + + if (!open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat + || fd == -1) + { + if (open_temp_exec_file_opts_next ()) + break; + } + } + while (fd == -1); + + return fd; +} + +/* We need to allocate space in a file that will be backing a writable + mapping. Several problems exist with the usual approaches: + - fallocate() is Linux-only + - posix_fallocate() is not available on all platforms + - ftruncate() does not allocate space on filesystems with sparse files + Failure to allocate the space will cause SIGBUS to be thrown when + the mapping is subsequently written to. */ +static int +allocate_space (int fd, off_t offset, off_t len) +{ + static size_t page_size; + + /* Obtain system page size. */ + if (!page_size) + page_size = sysconf(_SC_PAGESIZE); + + unsigned char buf[page_size]; + memset (buf, 0, page_size); + + while (len > 0) + { + off_t to_write = (len < page_size) ? len : page_size; + if (write (fd, buf, to_write) < to_write) + return -1; + len -= to_write; + } + + return 0; +} + +/* Map in a chunk of memory from the temporary exec file into separate + locations in the virtual memory address space, one writable and one + executable. Returns the address of the writable portion, after + storing an offset to the corresponding executable portion at the + last word of the requested chunk. */ +static void * +dlmmap_locked (void *start, size_t length, int prot, int flags, off_t offset) +{ + void *ptr; + + if (execfd == -1) + { + open_temp_exec_file_opts_idx = 0; + retry_open: + execfd = open_temp_exec_file (); + if (execfd == -1) + return MFAIL; + } + + offset = execsize; + + if (allocate_space (execfd, offset, length)) + return MFAIL; + + flags &= ~(MAP_PRIVATE | MAP_ANONYMOUS); + flags |= MAP_SHARED; + + ptr = mmap (NULL, length, (prot & ~PROT_WRITE) | PROT_EXEC, + flags, execfd, offset); + if (ptr == MFAIL) + { + if (!offset) + { + close (execfd); + goto retry_open; + } + ftruncate (execfd, offset); + return MFAIL; + } + else if (!offset + && open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) + open_temp_exec_file_opts_next (); + + start = mmap (start, length, prot, flags, execfd, offset); + + if (start == MFAIL) + { + munmap (ptr, length); + ftruncate (execfd, offset); + return start; + } + + mmap_exec_offset ((char *)start, length) = (char*)ptr - (char*)start; + + execsize += length; + + return start; +} + +/* Map in a writable and executable chunk of memory if possible. + Failing that, fall back to dlmmap_locked. */ +static void * +dlmmap (void *start, size_t length, int prot, + int flags, int fd, off_t offset) +{ + void *ptr; + + assert (start == NULL && length % malloc_getpagesize == 0 + && prot == (PROT_READ | PROT_WRITE) + && flags == (MAP_PRIVATE | MAP_ANONYMOUS) + && fd == -1 && offset == 0); + + if (execfd == -1 && is_emutramp_enabled ()) + { + ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); + return ptr; + } + + if (execfd == -1 && !is_selinux_enabled ()) + { + ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); + + if (ptr != MFAIL || (errno != EPERM && errno != EACCES)) + /* Cool, no need to mess with separate segments. */ + return ptr; + + /* If MREMAP_DUP is ever introduced and implemented, try mmap + with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with + MREMAP_DUP and prot at this point. */ + } + + if (execsize == 0 || execfd == -1) + { + pthread_mutex_lock (&open_temp_exec_file_mutex); + ptr = dlmmap_locked (start, length, prot, flags, offset); + pthread_mutex_unlock (&open_temp_exec_file_mutex); + + return ptr; + } + + return dlmmap_locked (start, length, prot, flags, offset); +} + +/* Release memory at the given address, as well as the corresponding + executable page if it's separate. */ +static int +dlmunmap (void *start, size_t length) +{ + /* We don't bother decreasing execsize or truncating the file, since + we can't quite tell whether we're unmapping the end of the file. + We don't expect frequent deallocation anyway. If we did, we + could locate pages in the file by writing to the pages being + deallocated and checking that the file contents change. + Yuck. */ + msegmentptr seg = segment_holding (gm, start); + void *code; + + if (seg && (code = add_segment_exec_offset (start, seg)) != start) + { + int ret = munmap (code, length); + if (ret) + return ret; + } + + return munmap (start, length); +} + +#if FFI_CLOSURE_FREE_CODE +/* Return segment holding given code address. */ +static msegmentptr +segment_holding_code (mstate m, char* addr) +{ + msegmentptr sp = &m->seg; + for (;;) { + if (addr >= add_segment_exec_offset (sp->base, sp) + && addr < add_segment_exec_offset (sp->base, sp) + sp->size) + return sp; + if ((sp = sp->next) == 0) + return 0; + } +} +#endif + +#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ + +/* Allocate a chunk of memory with the given size. Returns a pointer + to the writable address, and sets *CODE to the executable + corresponding virtual address. */ +void * +ffi_closure_alloc (size_t size, void **code) +{ + void *ptr; + + if (!code) + return NULL; + + ptr = dlmalloc (size); + + if (ptr) + { + msegmentptr seg = segment_holding (gm, ptr); + + *code = add_segment_exec_offset (ptr, seg); + } + + return ptr; +} + +/* Release a chunk of memory allocated with ffi_closure_alloc. If + FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the + writable or the executable address given. Otherwise, only the + writable address can be provided here. */ +void +ffi_closure_free (void *ptr) +{ +#if FFI_CLOSURE_FREE_CODE + msegmentptr seg = segment_holding_code (gm, ptr); + + if (seg) + ptr = sub_segment_exec_offset (ptr, seg); +#endif + + dlfree (ptr); +} + +# else /* ! FFI_MMAP_EXEC_WRIT */ + +/* On many systems, memory returned by malloc is writable and + executable, so just use it. */ + +#include + +void * +ffi_closure_alloc (size_t size, void **code) +{ + if (!code) + return NULL; + + return *code = malloc (size); +} + +void +ffi_closure_free (void *ptr) +{ + free (ptr); +} + +# endif /* ! FFI_MMAP_EXEC_WRIT */ +#endif /* FFI_CLOSURES */ + +#endif /* NetBSD with PROT_MPROTECT */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffi.c new file mode 100644 index 0000000000..9011fdec03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffi.c @@ -0,0 +1,386 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 1998 Cygnus Solutions + Copyright (c) 2004 Simon Posnjak + Copyright (c) 2005 Axis Communications AB + Copyright (C) 2007 Free Software Foundation, Inc. + + CRIS Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG) + +static ffi_status +initialize_aggregate_packed_struct (ffi_type * arg) +{ + ffi_type **ptr; + + FFI_ASSERT (arg != NULL); + + FFI_ASSERT (arg->elements != NULL); + FFI_ASSERT (arg->size == 0); + FFI_ASSERT (arg->alignment == 0); + + ptr = &(arg->elements[0]); + + while ((*ptr) != NULL) + { + if (((*ptr)->size == 0) + && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT (ffi_type_test ((*ptr))); + + arg->size += (*ptr)->size; + + arg->alignment = (arg->alignment > (*ptr)->alignment) ? + arg->alignment : (*ptr)->alignment; + + ptr++; + } + + if (arg->size == 0) + return FFI_BAD_TYPEDEF; + else + return FFI_OK; +} + +int +ffi_prep_args (char *stack, extended_cif * ecif) +{ + unsigned int i; + unsigned int struct_count = 0; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); i--, p_arg++) + { + size_t z; + + switch ((*p_arg)->type) + { + case FFI_TYPE_STRUCT: + { + z = (*p_arg)->size; + if (z <= 4) + { + memcpy (argp, *p_argv, z); + z = 4; + } + else if (z <= 8) + { + memcpy (argp, *p_argv, z); + z = 8; + } + else + { + unsigned int uiLocOnStack; + z = sizeof (void *); + uiLocOnStack = 4 * ecif->cif->nargs + struct_count; + struct_count = struct_count + (*p_arg)->size; + *(unsigned int *) argp = + (unsigned int) (UINT32 *) (stack + uiLocOnStack); + memcpy ((stack + uiLocOnStack), *p_argv, (*p_arg)->size); + } + break; + } + default: + z = (*p_arg)->size; + if (z < sizeof (int)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = + (unsigned int) *(UINT8 *) (*p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = + (unsigned int) *(UINT16 *) (*p_argv); + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else if (z == sizeof (int)) + *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); + else + memcpy (argp, *p_argv, z); + break; + } + p_argv++; + argp += z; + } + + return (struct_count); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_core (ffi_cif * cif, + ffi_abi abi, unsigned int isvariadic, + unsigned int nfixedargs, unsigned int ntotalargs, + ffi_type * rtype, ffi_type ** atypes) +{ + unsigned bytes = 0; + unsigned int i; + ffi_type **ptr; + + FFI_ASSERT (cif != NULL); + FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); + FFI_ASSERT(nfixedargs <= ntotalargs); + FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI); + + cif->abi = abi; + cif->arg_types = atypes; + cif->nargs = ntotalargs; + cif->rtype = rtype; + + cif->flags = 0; + + if ((cif->rtype->size == 0) + && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT_VALID_TYPE (cif->rtype); + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + if (((*ptr)->size == 0) + && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT_VALID_TYPE (*ptr); + + if (((*ptr)->alignment - 1) & bytes) + bytes = FFI_ALIGN (bytes, (*ptr)->alignment); + if ((*ptr)->type == FFI_TYPE_STRUCT) + { + if ((*ptr)->size > 8) + { + bytes += (*ptr)->size; + bytes += sizeof (void *); + } + else + { + if ((*ptr)->size > 4) + bytes += 8; + else + bytes += 4; + } + } + else + bytes += STACK_ARG_SIZE ((*ptr)->size); + } + + cif->bytes = bytes; + + return ffi_prep_cif_machdep (cif); +} + +ffi_status +ffi_prep_cif_machdep (ffi_cif * cif) +{ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned) cif->rtype->type; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV (int (*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, unsigned *, void (*fn) ()) + __attribute__ ((__visibility__ ("hidden"))); + +void +ffi_call (ffi_cif * cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV (ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT (0); + break; + } +} + +/* Because the following variables are not exported outside libffi, we + mark them hidden. */ + +/* Assembly code for the jump stub. */ +extern const char ffi_cris_trampoline_template[] + __attribute__ ((__visibility__ ("hidden"))); + +/* Offset into ffi_cris_trampoline_template of where to put the + ffi_prep_closure_inner function. */ +extern const int ffi_cris_trampoline_fn_offset + __attribute__ ((__visibility__ ("hidden"))); + +/* Offset into ffi_cris_trampoline_template of where to put the + closure data. */ +extern const int ffi_cris_trampoline_closure_offset + __attribute__ ((__visibility__ ("hidden"))); + +/* This function is sibling-called (jumped to) by the closure + trampoline. We get R10..R13 at PARAMS[0..3] and a copy of [SP] at + PARAMS[4] to simplify handling of a straddling parameter. A copy + of R9 is at PARAMS[5] and SP at PARAMS[6]. These parameters are + put at the appropriate place in CLOSURE which is then executed and + the return value is passed back to the caller. */ + +static unsigned long long +ffi_prep_closure_inner (void **params, ffi_closure* closure) +{ + char *register_args = (char *) params; + void *struct_ret = params[5]; + char *stack_args = params[6]; + char *ptr = register_args; + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + + /* Max room needed is number of arguments as 64-bit values. */ + void **avalue = alloca (closure->cif->nargs * sizeof(void *)); + int i; + int doing_regs; + long long llret = 0; + + /* Find the address of each argument. */ + for (i = 0, doing_regs = 1; i < cif->nargs; i++) + { + /* Types up to and including 8 bytes go by-value. */ + if (arg_types[i]->size <= 4) + { + avalue[i] = ptr; + ptr += 4; + } + else if (arg_types[i]->size <= 8) + { + avalue[i] = ptr; + ptr += 8; + } + else + { + FFI_ASSERT (arg_types[i]->type == FFI_TYPE_STRUCT); + + /* Passed by-reference, so copy the pointer. */ + avalue[i] = *(void **) ptr; + ptr += 4; + } + + /* If we've handled more arguments than fit in registers, start + looking at the those passed on the stack. Step over the + first one if we had a straddling parameter. */ + if (doing_regs && ptr >= register_args + 4*4) + { + ptr = stack_args + ((ptr > register_args + 4*4) ? 4 : 0); + doing_regs = 0; + } + } + + /* Invoke the closure. */ + (closure->fun) (cif, + + cif->rtype->type == FFI_TYPE_STRUCT + /* The caller allocated space for the return + structure, and passed a pointer to this space in + R9. */ + ? struct_ret + + /* We take advantage of being able to ignore that + the high part isn't set if the return value is + not in R10:R11, but in R10 only. */ + : (void *) &llret, + + avalue, closure->user_data); + + return llret; +} + +/* API function: Prepare the trampoline. */ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif *, void *, void **, void*), + void *user_data, + void *codeloc) +{ + void *innerfn = ffi_prep_closure_inner; + FFI_ASSERT (cif->abi == FFI_SYSV); + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + memcpy (closure->tramp, ffi_cris_trampoline_template, + FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE); + memcpy (closure->tramp + ffi_cris_trampoline_fn_offset, + &innerfn, sizeof (void *)); + memcpy (closure->tramp + ffi_cris_trampoline_closure_offset, + &codeloc, sizeof (void *)); + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffitarget.h new file mode 100644 index 0000000000..b837e976e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/ffitarget.h @@ -0,0 +1,56 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for CRIS. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE 36 +#define FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE (7*4) +#define FFI_TRAMPOLINE_SIZE \ + (FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE + FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE) +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/sysv.S new file mode 100644 index 0000000000..79abaee4d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/cris/sysv.S @@ -0,0 +1,215 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2004 Simon Posnjak + Copyright (c) 2005 Axis Communications AB + + CRIS Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#define CONCAT(x,y) x ## y +#define XCONCAT(x,y) CONCAT (x, y) +#define L(x) XCONCAT (__USER_LABEL_PREFIX__, x) + + .text + + ;; OK, when we get called we should have this (according to + ;; AXIS ETRAX 100LX Programmer's Manual chapter 6.3). + ;; + ;; R10: ffi_prep_args (func. pointer) + ;; R11: &ecif + ;; R12: cif->bytes + ;; R13: fig->flags + ;; sp+0: ecif.rvalue + ;; sp+4: fn (function pointer to the function that we need to call) + + .globl L(ffi_call_SYSV) + .type L(ffi_call_SYSV),@function + .hidden L(ffi_call_SYSV) + +L(ffi_call_SYSV): + ;; Save the regs to the stack. + push $srp + ;; Used for stack pointer saving. + push $r6 + ;; Used for function address pointer. + push $r7 + ;; Used for stack pointer saving. + push $r8 + ;; We save fig->flags to stack we will need them after we + ;; call The Function. + push $r13 + + ;; Saving current stack pointer. + move.d $sp,$r8 + move.d $sp,$r6 + + ;; Move address of ffi_prep_args to r13. + move.d $r10,$r13 + + ;; Make room on the stack for the args of fn. + sub.d $r12,$sp + + ;; Function void ffi_prep_args(char *stack, extended_cif *ecif) parameters are: + ;; r10 <-- stack pointer + ;; r11 <-- &ecif (already there) + move.d $sp,$r10 + + ;; Call the function. + jsr $r13 + + ;; Save the size of the structures which are passed on stack. + move.d $r10,$r7 + + ;; Move first four args in to r10..r13. + move.d [$sp+0],$r10 + move.d [$sp+4],$r11 + move.d [$sp+8],$r12 + move.d [$sp+12],$r13 + + ;; Adjust the stack and check if any parameters are given on stack. + addq 16,$sp + sub.d $r7,$r6 + cmp.d $sp,$r6 + + bpl go_on + nop + +go_on_no_params_on_stack: + move.d $r6,$sp + +go_on: + ;; Discover if we need to put rval address in to r9. + move.d [$r8+0],$r7 + cmpq FFI_TYPE_STRUCT,$r7 + bne call_now + nop + + ;; Move rval address to $r9. + move.d [$r8+20],$r9 + +call_now: + ;; Move address of The Function in to r7. + move.d [$r8+24],$r7 + + ;; Call The Function. + jsr $r7 + + ;; Reset stack. + move.d $r8,$sp + + ;; Load rval type (fig->flags) in to r13. + pop $r13 + + ;; Detect rval type. + cmpq FFI_TYPE_VOID,$r13 + beq epilogue + + cmpq FFI_TYPE_STRUCT,$r13 + beq epilogue + + cmpq FFI_TYPE_DOUBLE,$r13 + beq return_double_or_longlong + + cmpq FFI_TYPE_UINT64,$r13 + beq return_double_or_longlong + + cmpq FFI_TYPE_SINT64,$r13 + beq return_double_or_longlong + nop + + ;; Just return the 32 bit value. + ba return + nop + +return_double_or_longlong: + ;; Load half of the rval to r10 and the other half to r11. + move.d [$sp+16],$r13 + move.d $r10,[$r13] + addq 4,$r13 + move.d $r11,[$r13] + ba epilogue + nop + +return: + ;; Load the rval to r10. + move.d [$sp+16],$r13 + move.d $r10,[$r13] + +epilogue: + pop $r8 + pop $r7 + pop $r6 + Jump [$sp+] + + .size ffi_call_SYSV,.-ffi_call_SYSV + +/* Save R10..R13 into an array, somewhat like varargs. Copy the next + argument too, to simplify handling of any straddling parameter. + Save R9 and SP after those. Jump to function handling the rest. + Since this is a template, copied and the main function filled in by + the user. */ + + .globl L(ffi_cris_trampoline_template) + .type L(ffi_cris_trampoline_template),@function + .hidden L(ffi_cris_trampoline_template) + +L(ffi_cris_trampoline_template): +0: + /* The value we get for "PC" is right after the prefix instruction, + two bytes from the beginning, i.e. 0b+2. */ + move.d $r10,[$pc+2f-(0b+2)] + move.d $pc,$r10 +1: + addq 2f-1b+4,$r10 + move.d $r11,[$r10+] + move.d $r12,[$r10+] + move.d $r13,[$r10+] + move.d [$sp],$r11 + move.d $r11,[$r10+] + move.d $r9,[$r10+] + move.d $sp,[$r10+] + subq FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE,$r10 + move.d 0,$r11 +3: + jump 0 +2: + .size ffi_cris_trampoline_template,.-0b + +/* This macro create a constant usable as "extern const int \name" in + C from within libffi, when \name has no prefix decoration. */ + + .macro const name,value + .globl \name + .type \name,@object + .hidden \name +\name: + .dword \value + .size \name,4 + .endm + +/* Constants for offsets within the trampoline. We could do this with + just symbols, avoiding memory contents and memory accesses, but the + C usage code would look a bit stranger. */ + + const L(ffi_cris_trampoline_fn_offset),2b-4-0b + const L(ffi_cris_trampoline_closure_offset),3b-4-0b diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/debug.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/debug.c new file mode 100644 index 0000000000..f3172b1ef6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/debug.c @@ -0,0 +1,64 @@ +/* ----------------------------------------------------------------------- + debug.c - Copyright (c) 1996 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include + +/* General debugging routines */ + +void ffi_stop_here(void) +{ + /* This function is only useful for debugging purposes. + Place a breakpoint on ffi_stop_here to be notified of + significant events. */ +} + +/* This function should only be called via the FFI_ASSERT() macro */ + +void ffi_assert(char *expr, char *file, int line) +{ + fprintf(stderr, "ASSERTION FAILURE: %s at %s:%d\n", expr, file, line); + ffi_stop_here(); + abort(); +} + +/* Perform a sanity check on an ffi_type structure */ + +void ffi_type_test(ffi_type *a, char *file, int line) +{ + FFI_ASSERT_AT(a != NULL, file, line); + + FFI_ASSERT_AT(a->type <= FFI_TYPE_LAST, file, line); + FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->size > 0, file, line); + FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->alignment > 0, file, line); + FFI_ASSERT_AT((a->type != FFI_TYPE_STRUCT && a->type != FFI_TYPE_COMPLEX) + || a->elements != NULL, file, line); + FFI_ASSERT_AT(a->type != FFI_TYPE_COMPLEX + || (a->elements != NULL + && a->elements[0] != NULL && a->elements[1] == NULL), + file, line); + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/dlmalloc.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/dlmalloc.c new file mode 100644 index 0000000000..d63dd36dc9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/dlmalloc.c @@ -0,0 +1,5166 @@ +/* + This is a version (aka dlmalloc) of malloc/free/realloc written by + Doug Lea and released to the public domain, as explained at + http://creativecommons.org/licenses/publicdomain. Send questions, + comments, complaints, performance data, etc to dl@cs.oswego.edu + +* Version 2.8.3 Thu Sep 22 11:16:15 2005 Doug Lea (dl at gee) + + Note: There may be an updated version of this malloc obtainable at + ftp://gee.cs.oswego.edu/pub/misc/malloc.c + Check before installing! + +* Quickstart + + This library is all in one file to simplify the most common usage: + ftp it, compile it (-O3), and link it into another program. All of + the compile-time options default to reasonable values for use on + most platforms. You might later want to step through various + compile-time and dynamic tuning options. + + For convenience, an include file for code using this malloc is at: + ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.3.h + You don't really need this .h file unless you call functions not + defined in your system include files. The .h file contains only the + excerpts from this file needed for using this malloc on ANSI C/C++ + systems, so long as you haven't changed compile-time options about + naming and tuning parameters. If you do, then you can create your + own malloc.h that does include all settings by cutting at the point + indicated below. Note that you may already by default be using a C + library containing a malloc that is based on some version of this + malloc (for example in linux). You might still want to use the one + in this file to customize settings or to avoid overheads associated + with library versions. + +* Vital statistics: + + Supported pointer/size_t representation: 4 or 8 bytes + size_t MUST be an unsigned type of the same width as + pointers. (If you are using an ancient system that declares + size_t as a signed type, or need it to be a different width + than pointers, you can use a previous release of this malloc + (e.g. 2.7.2) supporting these.) + + Alignment: 8 bytes (default) + This suffices for nearly all current machines and C compilers. + However, you can define MALLOC_ALIGNMENT to be wider than this + if necessary (up to 128bytes), at the expense of using more space. + + Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) + 8 or 16 bytes (if 8byte sizes) + Each malloced chunk has a hidden word of overhead holding size + and status information, and additional cross-check word + if FOOTERS is defined. + + Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) + 8-byte ptrs: 32 bytes (including overhead) + + Even a request for zero bytes (i.e., malloc(0)) returns a + pointer to something of the minimum allocatable size. + The maximum overhead wastage (i.e., number of extra bytes + allocated than were requested in malloc) is less than or equal + to the minimum size, except for requests >= mmap_threshold that + are serviced via mmap(), where the worst case wastage is about + 32 bytes plus the remainder from a system page (the minimal + mmap unit); typically 4096 or 8192 bytes. + + Security: static-safe; optionally more or less + The "security" of malloc refers to the ability of malicious + code to accentuate the effects of errors (for example, freeing + space that is not currently malloc'ed or overwriting past the + ends of chunks) in code that calls malloc. This malloc + guarantees not to modify any memory locations below the base of + heap, i.e., static variables, even in the presence of usage + errors. The routines additionally detect most improper frees + and reallocs. All this holds as long as the static bookkeeping + for malloc itself is not corrupted by some other means. This + is only one aspect of security -- these checks do not, and + cannot, detect all possible programming errors. + + If FOOTERS is defined nonzero, then each allocated chunk + carries an additional check word to verify that it was malloced + from its space. These check words are the same within each + execution of a program using malloc, but differ across + executions, so externally crafted fake chunks cannot be + freed. This improves security by rejecting frees/reallocs that + could corrupt heap memory, in addition to the checks preventing + writes to statics that are always on. This may further improve + security at the expense of time and space overhead. (Note that + FOOTERS may also be worth using with MSPACES.) + + By default detected errors cause the program to abort (calling + "abort()"). You can override this to instead proceed past + errors by defining PROCEED_ON_ERROR. In this case, a bad free + has no effect, and a malloc that encounters a bad address + caused by user overwrites will ignore the bad address by + dropping pointers and indices to all known memory. This may + be appropriate for programs that should continue if at all + possible in the face of programming errors, although they may + run out of memory because dropped memory is never reclaimed. + + If you don't like either of these options, you can define + CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything + else. And if if you are sure that your program using malloc has + no errors or vulnerabilities, you can define INSECURE to 1, + which might (or might not) provide a small performance improvement. + + Thread-safety: NOT thread-safe unless USE_LOCKS defined + When USE_LOCKS is defined, each public call to malloc, free, + etc is surrounded with either a pthread mutex or a win32 + spinlock (depending on WIN32). This is not especially fast, and + can be a major bottleneck. It is designed only to provide + minimal protection in concurrent environments, and to provide a + basis for extensions. If you are using malloc in a concurrent + program, consider instead using ptmalloc, which is derived from + a version of this malloc. (See http://www.malloc.de). + + System requirements: Any combination of MORECORE and/or MMAP/MUNMAP + This malloc can use unix sbrk or any emulation (invoked using + the CALL_MORECORE macro) and/or mmap/munmap or any emulation + (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system + memory. On most unix systems, it tends to work best if both + MORECORE and MMAP are enabled. On Win32, it uses emulations + based on VirtualAlloc. It also uses common C library functions + like memset. + + Compliance: I believe it is compliant with the Single Unix Specification + (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably + others as well. + +* Overview of algorithms + + This is not the fastest, most space-conserving, most portable, or + most tunable malloc ever written. However it is among the fastest + while also being among the most space-conserving, portable and + tunable. Consistent balance across these factors results in a good + general-purpose allocator for malloc-intensive programs. + + In most ways, this malloc is a best-fit allocator. Generally, it + chooses the best-fitting existing chunk for a request, with ties + broken in approximately least-recently-used order. (This strategy + normally maintains low fragmentation.) However, for requests less + than 256bytes, it deviates from best-fit when there is not an + exactly fitting available chunk by preferring to use space adjacent + to that used for the previous small request, as well as by breaking + ties in approximately most-recently-used order. (These enhance + locality of series of small allocations.) And for very large requests + (>= 256Kb by default), it relies on system memory mapping + facilities, if supported. (This helps avoid carrying around and + possibly fragmenting memory used only for large chunks.) + + All operations (except malloc_stats and mallinfo) have execution + times that are bounded by a constant factor of the number of bits in + a size_t, not counting any clearing in calloc or copying in realloc, + or actions surrounding MORECORE and MMAP that have times + proportional to the number of non-contiguous regions returned by + system allocation routines, which is often just 1. + + The implementation is not very modular and seriously overuses + macros. Perhaps someday all C compilers will do as good a job + inlining modular code as can now be done by brute-force expansion, + but now, enough of them seem not to. + + Some compilers issue a lot of warnings about code that is + dead/unreachable only on some platforms, and also about intentional + uses of negation on unsigned types. All known cases of each can be + ignored. + + For a longer but out of date high-level description, see + http://gee.cs.oswego.edu/dl/html/malloc.html + +* MSPACES + If MSPACES is defined, then in addition to malloc, free, etc., + this file also defines mspace_malloc, mspace_free, etc. These + are versions of malloc routines that take an "mspace" argument + obtained using create_mspace, to control all internal bookkeeping. + If ONLY_MSPACES is defined, only these versions are compiled. + So if you would like to use this allocator for only some allocations, + and your system malloc for others, you can compile with + ONLY_MSPACES and then do something like... + static mspace mymspace = create_mspace(0,0); // for example + #define mymalloc(bytes) mspace_malloc(mymspace, bytes) + + (Note: If you only need one instance of an mspace, you can instead + use "USE_DL_PREFIX" to relabel the global malloc.) + + You can similarly create thread-local allocators by storing + mspaces as thread-locals. For example: + static __thread mspace tlms = 0; + void* tlmalloc(size_t bytes) { + if (tlms == 0) tlms = create_mspace(0, 0); + return mspace_malloc(tlms, bytes); + } + void tlfree(void* mem) { mspace_free(tlms, mem); } + + Unless FOOTERS is defined, each mspace is completely independent. + You cannot allocate from one and free to another (although + conformance is only weakly checked, so usage errors are not always + caught). If FOOTERS is defined, then each chunk carries around a tag + indicating its originating mspace, and frees are directed to their + originating spaces. + + ------------------------- Compile-time options --------------------------- + +Be careful in setting #define values for numerical constants of type +size_t. On some systems, literal values are not automatically extended +to size_t precision unless they are explicitly casted. + +WIN32 default: defined if _WIN32 defined + Defining WIN32 sets up defaults for MS environment and compilers. + Otherwise defaults are for unix. + +MALLOC_ALIGNMENT default: (size_t)8 + Controls the minimum alignment for malloc'ed chunks. It must be a + power of two and at least 8, even on machines for which smaller + alignments would suffice. It may be defined as larger than this + though. Note however that code and data structures are optimized for + the case of 8-byte alignment. + +MSPACES default: 0 (false) + If true, compile in support for independent allocation spaces. + This is only supported if HAVE_MMAP is true. + +ONLY_MSPACES default: 0 (false) + If true, only compile in mspace versions, not regular versions. + +USE_LOCKS default: 0 (false) + Causes each call to each public routine to be surrounded with + pthread or WIN32 mutex lock/unlock. (If set true, this can be + overridden on a per-mspace basis for mspace versions.) + +FOOTERS default: 0 + If true, provide extra checking and dispatching by placing + information in the footers of allocated chunks. This adds + space and time overhead. + +INSECURE default: 0 + If true, omit checks for usage errors and heap space overwrites. + +USE_DL_PREFIX default: NOT defined + Causes compiler to prefix all public routines with the string 'dl'. + This can be useful when you only want to use this malloc in one part + of a program, using your regular system malloc elsewhere. + +ABORT default: defined as abort() + Defines how to abort on failed checks. On most systems, a failed + check cannot die with an "assert" or even print an informative + message, because the underlying print routines in turn call malloc, + which will fail again. Generally, the best policy is to simply call + abort(). It's not very useful to do more than this because many + errors due to overwriting will show up as address faults (null, odd + addresses etc) rather than malloc-triggered checks, so will also + abort. Also, most compilers know that abort() does not return, so + can better optimize code conditionally calling it. + +PROCEED_ON_ERROR default: defined as 0 (false) + Controls whether detected bad addresses cause them to bypassed + rather than aborting. If set, detected bad arguments to free and + realloc are ignored. And all bookkeeping information is zeroed out + upon a detected overwrite of freed heap space, thus losing the + ability to ever return it from malloc again, but enabling the + application to proceed. If PROCEED_ON_ERROR is defined, the + static variable malloc_corruption_error_count is compiled in + and can be examined to see if errors have occurred. This option + generates slower code than the default abort policy. + +DEBUG default: NOT defined + The DEBUG setting is mainly intended for people trying to modify + this code or diagnose problems when porting to new platforms. + However, it may also be able to better isolate user errors than just + using runtime checks. The assertions in the check routines spell + out in more detail the assumptions and invariants underlying the + algorithms. The checking is fairly extensive, and will slow down + execution noticeably. Calling malloc_stats or mallinfo with DEBUG + set will attempt to check every non-mmapped allocated and free chunk + in the course of computing the summaries. + +ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) + Debugging assertion failures can be nearly impossible if your + version of the assert macro causes malloc to be called, which will + lead to a cascade of further failures, blowing the runtime stack. + ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), + which will usually make debugging easier. + +MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 + The action to take before "return 0" when malloc fails to be able to + return memory because there is none available. + +HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES + True if this system supports sbrk or an emulation of it. + +MORECORE default: sbrk + The name of the sbrk-style system routine to call to obtain more + memory. See below for guidance on writing custom MORECORE + functions. The type of the argument to sbrk/MORECORE varies across + systems. It cannot be size_t, because it supports negative + arguments, so it is normally the signed type of the same width as + size_t (sometimes declared as "intptr_t"). It doesn't much matter + though. Internally, we only call it with arguments less than half + the max value of a size_t, which should work across all reasonable + possibilities, although sometimes generating compiler warnings. See + near the end of this file for guidelines for creating a custom + version of MORECORE. + +MORECORE_CONTIGUOUS default: 1 (true) + If true, take advantage of fact that consecutive calls to MORECORE + with positive arguments always return contiguous increasing + addresses. This is true of unix sbrk. It does not hurt too much to + set it true anyway, since malloc copes with non-contiguities. + Setting it false when definitely non-contiguous saves time + and possibly wasted space it would take to discover this though. + +MORECORE_CANNOT_TRIM default: NOT defined + True if MORECORE cannot release space back to the system when given + negative arguments. This is generally necessary only if you are + using a hand-crafted MORECORE function that cannot handle negative + arguments. + +HAVE_MMAP default: 1 (true) + True if this system supports mmap or an emulation of it. If so, and + HAVE_MORECORE is not true, MMAP is used for all system + allocation. If set and HAVE_MORECORE is true as well, MMAP is + primarily used to directly allocate very large blocks. It is also + used as a backup strategy in cases where MORECORE fails to provide + space from system. Note: A single call to MUNMAP is assumed to be + able to unmap memory that may have be allocated using multiple calls + to MMAP, so long as they are adjacent. + +HAVE_MREMAP default: 1 on linux, else 0 + If true realloc() uses mremap() to re-allocate large blocks and + extend or shrink allocation spaces. + +MMAP_CLEARS default: 1 on unix + True if mmap clears memory so calloc doesn't need to. This is true + for standard unix mmap using /dev/zero. + +USE_BUILTIN_FFS default: 0 (i.e., not used) + Causes malloc to use the builtin ffs() function to compute indices. + Some compilers may recognize and intrinsify ffs to be faster than the + supplied C version. Also, the case of x86 using gcc is special-cased + to an asm instruction, so is already as fast as it can be, and so + this setting has no effect. (On most x86s, the asm version is only + slightly faster than the C version.) + +malloc_getpagesize default: derive from system includes, or 4096. + The system page size. To the extent possible, this malloc manages + memory from the system in page-size units. This may be (and + usually is) a function rather than a constant. This is ignored + if WIN32, where page size is determined using getSystemInfo during + initialization. + +USE_DEV_RANDOM default: 0 (i.e., not used) + Causes malloc to use /dev/random to initialize secure magic seed for + stamping footers. Otherwise, the current time is used. + +NO_MALLINFO default: 0 + If defined, don't compile "mallinfo". This can be a simple way + of dealing with mismatches between system declarations and + those in this file. + +MALLINFO_FIELD_TYPE default: size_t + The type of the fields in the mallinfo struct. This was originally + defined as "int" in SVID etc, but is more usefully defined as + size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set + +REALLOC_ZERO_BYTES_FREES default: not defined + This should be set if a call to realloc with zero bytes should + be the same as a call to free. Some people think it should. Otherwise, + since this malloc returns a unique pointer for malloc(0), so does + realloc(p, 0). + +LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H +LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H +LACKS_STDLIB_H default: NOT defined unless on WIN32 + Define these if your system does not have these header files. + You might need to manually insert some of the declarations they provide. + +DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, + system_info.dwAllocationGranularity in WIN32, + otherwise 64K. + Also settable using mallopt(M_GRANULARITY, x) + The unit for allocating and deallocating memory from the system. On + most systems with contiguous MORECORE, there is no reason to + make this more than a page. However, systems with MMAP tend to + either require or encourage larger granularities. You can increase + this value to prevent system allocation functions to be called so + often, especially if they are slow. The value must be at least one + page and must be a power of two. Setting to 0 causes initialization + to either page size or win32 region size. (Note: In previous + versions of malloc, the equivalent of this option was called + "TOP_PAD") + +DEFAULT_TRIM_THRESHOLD default: 2MB + Also settable using mallopt(M_TRIM_THRESHOLD, x) + The maximum amount of unused top-most memory to keep before + releasing via malloc_trim in free(). Automatic trimming is mainly + useful in long-lived programs using contiguous MORECORE. Because + trimming via sbrk can be slow on some systems, and can sometimes be + wasteful (in cases where programs immediately afterward allocate + more large chunks) the value should be high enough so that your + overall system performance would improve by releasing this much + memory. As a rough guide, you might set to a value close to the + average size of a process (program) running on your system. + Releasing this much memory would allow such a process to run in + memory. Generally, it is worth tuning trim thresholds when a + program undergoes phases where several large chunks are allocated + and released in ways that can reuse each other's storage, perhaps + mixed with phases where there are no such chunks at all. The trim + value must be greater than page size to have any useful effect. To + disable trimming completely, you can set to MAX_SIZE_T. Note that the trick + some people use of mallocing a huge space and then freeing it at + program startup, in an attempt to reserve system memory, doesn't + have the intended effect under automatic trimming, since that memory + will immediately be returned to the system. + +DEFAULT_MMAP_THRESHOLD default: 256K + Also settable using mallopt(M_MMAP_THRESHOLD, x) + The request size threshold for using MMAP to directly service a + request. Requests of at least this size that cannot be allocated + using already-existing space will be serviced via mmap. (If enough + normal freed space already exists it is used instead.) Using mmap + segregates relatively large chunks of memory so that they can be + individually obtained and released from the host system. A request + serviced through mmap is never reused by any other request (at least + not directly; the system may just so happen to remap successive + requests to the same locations). Segregating space in this way has + the benefits that: Mmapped space can always be individually released + back to the system, which helps keep the system level memory demands + of a long-lived program low. Also, mapped memory doesn't become + `locked' between other chunks, as can happen with normally allocated + chunks, which means that even trimming via malloc_trim would not + release them. However, it has the disadvantage that the space + cannot be reclaimed, consolidated, and then used to service later + requests, as happens with normal chunks. The advantages of mmap + nearly always outweigh disadvantages for "large" chunks, but the + value of "large" may vary across systems. The default is an + empirically derived value that works well in most systems. You can + disable mmap by setting to MAX_SIZE_T. + +*/ + +#if defined __linux__ && !defined _GNU_SOURCE +/* mremap() on Linux requires this via sys/mman.h */ +#define _GNU_SOURCE 1 +#endif + +#ifndef WIN32 +#ifdef _WIN32 +#define WIN32 1 +#endif /* _WIN32 */ +#endif /* WIN32 */ +#ifdef WIN32 +#define WIN32_LEAN_AND_MEAN +#include +#define HAVE_MMAP 1 +#define HAVE_MORECORE 0 +#define LACKS_UNISTD_H +#define LACKS_SYS_PARAM_H +#define LACKS_SYS_MMAN_H +#define LACKS_STRING_H +#define LACKS_STRINGS_H +#define LACKS_SYS_TYPES_H +#define LACKS_ERRNO_H +#define MALLOC_FAILURE_ACTION +#define MMAP_CLEARS 0 /* WINCE and some others apparently don't clear */ +#endif /* WIN32 */ + +#ifdef __OS2__ +#define INCL_DOS +#include +#define HAVE_MMAP 1 +#define HAVE_MORECORE 0 +#define LACKS_SYS_MMAN_H +#endif /* __OS2__ */ + +#if defined(DARWIN) || defined(_DARWIN) +/* Mac OSX docs advise not to use sbrk; it seems better to use mmap */ +#ifndef HAVE_MORECORE +#define HAVE_MORECORE 0 +#define HAVE_MMAP 1 +#endif /* HAVE_MORECORE */ +#endif /* DARWIN */ + +#ifndef LACKS_SYS_TYPES_H +#include /* For size_t */ +#endif /* LACKS_SYS_TYPES_H */ + +/* The maximum possible size_t value has all bits set */ +#define MAX_SIZE_T (~(size_t)0) + +#ifndef ONLY_MSPACES +#define ONLY_MSPACES 0 +#endif /* ONLY_MSPACES */ +#ifndef MSPACES +#if ONLY_MSPACES +#define MSPACES 1 +#else /* ONLY_MSPACES */ +#define MSPACES 0 +#endif /* ONLY_MSPACES */ +#endif /* MSPACES */ +#ifndef MALLOC_ALIGNMENT +#define MALLOC_ALIGNMENT ((size_t)8U) +#endif /* MALLOC_ALIGNMENT */ +#ifndef FOOTERS +#define FOOTERS 0 +#endif /* FOOTERS */ +#ifndef ABORT +#define ABORT abort() +#endif /* ABORT */ +#ifndef ABORT_ON_ASSERT_FAILURE +#define ABORT_ON_ASSERT_FAILURE 1 +#endif /* ABORT_ON_ASSERT_FAILURE */ +#ifndef PROCEED_ON_ERROR +#define PROCEED_ON_ERROR 0 +#endif /* PROCEED_ON_ERROR */ +#ifndef USE_LOCKS +#define USE_LOCKS 0 +#endif /* USE_LOCKS */ +#ifndef INSECURE +#define INSECURE 0 +#endif /* INSECURE */ +#ifndef HAVE_MMAP +#define HAVE_MMAP 1 +#endif /* HAVE_MMAP */ +#ifndef MMAP_CLEARS +#define MMAP_CLEARS 1 +#endif /* MMAP_CLEARS */ +#ifndef HAVE_MREMAP +#ifdef linux +#define HAVE_MREMAP 1 +#else /* linux */ +#define HAVE_MREMAP 0 +#endif /* linux */ +#endif /* HAVE_MREMAP */ +#ifndef MALLOC_FAILURE_ACTION +#define MALLOC_FAILURE_ACTION errno = ENOMEM; +#endif /* MALLOC_FAILURE_ACTION */ +#ifndef HAVE_MORECORE +#if ONLY_MSPACES +#define HAVE_MORECORE 0 +#else /* ONLY_MSPACES */ +#define HAVE_MORECORE 1 +#endif /* ONLY_MSPACES */ +#endif /* HAVE_MORECORE */ +#if !HAVE_MORECORE +#define MORECORE_CONTIGUOUS 0 +#else /* !HAVE_MORECORE */ +#ifndef MORECORE +#define MORECORE sbrk +#endif /* MORECORE */ +#ifndef MORECORE_CONTIGUOUS +#define MORECORE_CONTIGUOUS 1 +#endif /* MORECORE_CONTIGUOUS */ +#endif /* HAVE_MORECORE */ +#ifndef DEFAULT_GRANULARITY +#if MORECORE_CONTIGUOUS +#define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ +#else /* MORECORE_CONTIGUOUS */ +#define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) +#endif /* MORECORE_CONTIGUOUS */ +#endif /* DEFAULT_GRANULARITY */ +#ifndef DEFAULT_TRIM_THRESHOLD +#ifndef MORECORE_CANNOT_TRIM +#define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) +#else /* MORECORE_CANNOT_TRIM */ +#define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T +#endif /* MORECORE_CANNOT_TRIM */ +#endif /* DEFAULT_TRIM_THRESHOLD */ +#ifndef DEFAULT_MMAP_THRESHOLD +#if HAVE_MMAP +#define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) +#else /* HAVE_MMAP */ +#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T +#endif /* HAVE_MMAP */ +#endif /* DEFAULT_MMAP_THRESHOLD */ +#ifndef USE_BUILTIN_FFS +#define USE_BUILTIN_FFS 0 +#endif /* USE_BUILTIN_FFS */ +#ifndef USE_DEV_RANDOM +#define USE_DEV_RANDOM 0 +#endif /* USE_DEV_RANDOM */ +#ifndef NO_MALLINFO +#define NO_MALLINFO 0 +#endif /* NO_MALLINFO */ +#ifndef MALLINFO_FIELD_TYPE +#define MALLINFO_FIELD_TYPE size_t +#endif /* MALLINFO_FIELD_TYPE */ + +/* + mallopt tuning options. SVID/XPG defines four standard parameter + numbers for mallopt, normally defined in malloc.h. None of these + are used in this malloc, so setting them has no effect. But this + malloc does support the following options. +*/ + +#define M_TRIM_THRESHOLD (-1) +#define M_GRANULARITY (-2) +#define M_MMAP_THRESHOLD (-3) + +/* ------------------------ Mallinfo declarations ------------------------ */ + +#if !NO_MALLINFO +/* + This version of malloc supports the standard SVID/XPG mallinfo + routine that returns a struct containing usage properties and + statistics. It should work on any system that has a + /usr/include/malloc.h defining struct mallinfo. The main + declaration needed is the mallinfo struct that is returned (by-copy) + by mallinfo(). The malloinfo struct contains a bunch of fields that + are not even meaningful in this version of malloc. These fields are + are instead filled by mallinfo() with other numbers that might be of + interest. + + HAVE_USR_INCLUDE_MALLOC_H should be set if you have a + /usr/include/malloc.h file that includes a declaration of struct + mallinfo. If so, it is included; else a compliant version is + declared below. These must be precisely the same for mallinfo() to + work. The original SVID version of this struct, defined on most + systems with mallinfo, declares all fields as ints. But some others + define as unsigned long. If your system defines the fields using a + type of different width than listed here, you MUST #include your + system version and #define HAVE_USR_INCLUDE_MALLOC_H. +*/ + +/* #define HAVE_USR_INCLUDE_MALLOC_H */ + +#ifdef HAVE_USR_INCLUDE_MALLOC_H +#include "/usr/include/malloc.h" +#else /* HAVE_USR_INCLUDE_MALLOC_H */ + +/* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */ +#define _STRUCT_MALLINFO + +struct mallinfo { + MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ + MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ + MALLINFO_FIELD_TYPE smblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ + MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ + MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ + MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ + MALLINFO_FIELD_TYPE fordblks; /* total free space */ + MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ +}; + +#endif /* HAVE_USR_INCLUDE_MALLOC_H */ +#endif /* NO_MALLINFO */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if !ONLY_MSPACES + +/* ------------------- Declarations of public routines ------------------- */ + +#ifndef USE_DL_PREFIX +#define dlcalloc calloc +#define dlfree free +#define dlmalloc malloc +#define dlmemalign memalign +#define dlrealloc realloc +#define dlvalloc valloc +#define dlpvalloc pvalloc +#define dlmallinfo mallinfo +#define dlmallopt mallopt +#define dlmalloc_trim malloc_trim +#define dlmalloc_stats malloc_stats +#define dlmalloc_usable_size malloc_usable_size +#define dlmalloc_footprint malloc_footprint +#define dlmalloc_max_footprint malloc_max_footprint +#define dlindependent_calloc independent_calloc +#define dlindependent_comalloc independent_comalloc +#endif /* USE_DL_PREFIX */ + + +/* + malloc(size_t n) + Returns a pointer to a newly allocated chunk of at least n bytes, or + null if no space is available, in which case errno is set to ENOMEM + on ANSI C systems. + + If n is zero, malloc returns a minimum-sized chunk. (The minimum + size is 16 bytes on most 32bit systems, and 32 bytes on 64bit + systems.) Note that size_t is an unsigned type, so calls with + arguments that would be negative if signed are interpreted as + requests for huge amounts of space, which will often fail. The + maximum supported value of n differs across systems, but is in all + cases less than the maximum representable value of a size_t. +*/ +void* dlmalloc(size_t); + +/* + free(void* p) + Releases the chunk of memory pointed to by p, that had been previously + allocated using malloc or a related routine such as realloc. + It has no effect if p is null. If p was not malloced or already + freed, free(p) will by default cause the current program to abort. +*/ +void dlfree(void*); + +/* + calloc(size_t n_elements, size_t element_size); + Returns a pointer to n_elements * element_size bytes, with all locations + set to zero. +*/ +void* dlcalloc(size_t, size_t); + +/* + realloc(void* p, size_t n) + Returns a pointer to a chunk of size n that contains the same data + as does chunk p up to the minimum of (n, p's size) bytes, or null + if no space is available. + + The returned pointer may or may not be the same as p. The algorithm + prefers extending p in most cases when possible, otherwise it + employs the equivalent of a malloc-copy-free sequence. + + If p is null, realloc is equivalent to malloc. + + If space is not available, realloc returns null, errno is set (if on + ANSI) and p is NOT freed. + + if n is for fewer bytes than already held by p, the newly unused + space is lopped off and freed if possible. realloc with a size + argument of zero (re)allocates a minimum-sized chunk. + + The old unix realloc convention of allowing the last-free'd chunk + to be used as an argument to realloc is not supported. +*/ + +void* dlrealloc(void*, size_t); + +/* + memalign(size_t alignment, size_t n); + Returns a pointer to a newly allocated chunk of n bytes, aligned + in accord with the alignment argument. + + The alignment argument should be a power of two. If the argument is + not a power of two, the nearest greater power is used. + 8-byte alignment is guaranteed by normal malloc calls, so don't + bother calling memalign with an argument of 8 or less. + + Overreliance on memalign is a sure way to fragment space. +*/ +void* dlmemalign(size_t, size_t); + +/* + valloc(size_t n); + Equivalent to memalign(pagesize, n), where pagesize is the page + size of the system. If the pagesize is unknown, 4096 is used. +*/ +void* dlvalloc(size_t); + +/* + mallopt(int parameter_number, int parameter_value) + Sets tunable parameters The format is to provide a + (parameter-number, parameter-value) pair. mallopt then sets the + corresponding parameter to the argument value if it can (i.e., so + long as the value is meaningful), and returns 1 if successful else + 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, + normally defined in malloc.h. None of these are use in this malloc, + so setting them has no effect. But this malloc also supports other + options in mallopt. See below for details. Briefly, supported + parameters are as follows (listed defaults are for "typical" + configurations). + + Symbol param # default allowed param values + M_TRIM_THRESHOLD -1 2*1024*1024 any (MAX_SIZE_T disables) + M_GRANULARITY -2 page size any power of 2 >= page size + M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) +*/ +int dlmallopt(int, int); + +/* + malloc_footprint(); + Returns the number of bytes obtained from the system. The total + number of bytes allocated by malloc, realloc etc., is less than this + value. Unlike mallinfo, this function returns only a precomputed + result, so can be called frequently to monitor memory consumption. + Even if locks are otherwise defined, this function does not use them, + so results might not be up to date. +*/ +size_t dlmalloc_footprint(void); + +/* + malloc_max_footprint(); + Returns the maximum number of bytes obtained from the system. This + value will be greater than current footprint if deallocated space + has been reclaimed by the system. The peak number of bytes allocated + by malloc, realloc etc., is less than this value. Unlike mallinfo, + this function returns only a precomputed result, so can be called + frequently to monitor memory consumption. Even if locks are + otherwise defined, this function does not use them, so results might + not be up to date. +*/ +size_t dlmalloc_max_footprint(void); + +#if !NO_MALLINFO +/* + mallinfo() + Returns (by copy) a struct containing various summary statistics: + + arena: current total non-mmapped bytes allocated from system + ordblks: the number of free chunks + smblks: always zero. + hblks: current number of mmapped regions + hblkhd: total bytes held in mmapped regions + usmblks: the maximum total allocated space. This will be greater + than current total if trimming has occurred. + fsmblks: always zero + uordblks: current total allocated space (normal or mmapped) + fordblks: total free space + keepcost: the maximum number of bytes that could ideally be released + back to system via malloc_trim. ("ideally" means that + it ignores page restrictions etc.) + + Because these fields are ints, but internal bookkeeping may + be kept as longs, the reported values may wrap around zero and + thus be inaccurate. +*/ +struct mallinfo dlmallinfo(void); +#endif /* NO_MALLINFO */ + +/* + independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); + + independent_calloc is similar to calloc, but instead of returning a + single cleared space, it returns an array of pointers to n_elements + independent elements that can hold contents of size elem_size, each + of which starts out cleared, and can be independently freed, + realloc'ed etc. The elements are guaranteed to be adjacently + allocated (this is not guaranteed to occur with multiple callocs or + mallocs), which may also improve cache locality in some + applications. + + The "chunks" argument is optional (i.e., may be null, which is + probably the most typical usage). If it is null, the returned array + is itself dynamically allocated and should also be freed when it is + no longer needed. Otherwise, the chunks array must be of at least + n_elements in length. It is filled in with the pointers to the + chunks. + + In either case, independent_calloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and "chunks" + is null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be individually freed when it is no longer + needed. If you'd like to instead be able to free all at once, you + should instead use regular calloc and assign pointers into this + space to represent elements. (In this case though, you cannot + independently free elements.) + + independent_calloc simplifies and speeds up implementations of many + kinds of pools. It may also be useful when constructing large data + structures that initially have a fixed number of fixed-sized nodes, + but the number is not known at compile time, and some of the nodes + may later need to be freed. For example: + + struct Node { int item; struct Node* next; }; + + struct Node* build_list() { + struct Node** pool; + int n = read_number_of_nodes_needed(); + if (n <= 0) return 0; + pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); + if (pool == 0) die(); + // organize into a linked list... + struct Node* first = pool[0]; + for (i = 0; i < n-1; ++i) + pool[i]->next = pool[i+1]; + free(pool); // Can now free the array (or not, if it is needed later) + return first; + } +*/ +void** dlindependent_calloc(size_t, size_t, void**); + +/* + independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); + + independent_comalloc allocates, all at once, a set of n_elements + chunks with sizes indicated in the "sizes" array. It returns + an array of pointers to these elements, each of which can be + independently freed, realloc'ed etc. The elements are guaranteed to + be adjacently allocated (this is not guaranteed to occur with + multiple callocs or mallocs), which may also improve cache locality + in some applications. + + The "chunks" argument is optional (i.e., may be null). If it is null + the returned array is itself dynamically allocated and should also + be freed when it is no longer needed. Otherwise, the chunks array + must be of at least n_elements in length. It is filled in with the + pointers to the chunks. + + In either case, independent_comalloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and chunks is + null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be individually freed when it is no longer + needed. If you'd like to instead be able to free all at once, you + should instead use a single regular malloc, and assign pointers at + particular offsets in the aggregate space. (In this case though, you + cannot independently free elements.) + + independent_comallac differs from independent_calloc in that each + element may have a different size, and also that it does not + automatically clear elements. + + independent_comalloc can be used to speed up allocation in cases + where several structs or objects must always be allocated at the + same time. For example: + + struct Head { ... } + struct Foot { ... } + + void send_message(char* msg) { + int msglen = strlen(msg); + size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; + void* chunks[3]; + if (independent_comalloc(3, sizes, chunks) == 0) + die(); + struct Head* head = (struct Head*)(chunks[0]); + char* body = (char*)(chunks[1]); + struct Foot* foot = (struct Foot*)(chunks[2]); + // ... + } + + In general though, independent_comalloc is worth using only for + larger values of n_elements. For small values, you probably won't + detect enough difference from series of malloc calls to bother. + + Overuse of independent_comalloc can increase overall memory usage, + since it cannot reuse existing noncontiguous small chunks that + might be available for some of the elements. +*/ +void** dlindependent_comalloc(size_t, size_t*, void**); + + +/* + pvalloc(size_t n); + Equivalent to valloc(minimum-page-that-holds(n)), that is, + round up n to nearest pagesize. + */ +void* dlpvalloc(size_t); + +/* + malloc_trim(size_t pad); + + If possible, gives memory back to the system (via negative arguments + to sbrk) if there is unused memory at the `high' end of the malloc + pool or in unused MMAP segments. You can call this after freeing + large blocks of memory to potentially reduce the system-level memory + requirements of a program. However, it cannot guarantee to reduce + memory. Under some allocation patterns, some large free blocks of + memory will be locked between two used chunks, so they cannot be + given back to the system. + + The `pad' argument to malloc_trim represents the amount of free + trailing space to leave untrimmed. If this argument is zero, only + the minimum amount of memory to maintain internal data structures + will be left. Non-zero arguments can be supplied to maintain enough + trailing space to service future expected allocations without having + to re-obtain memory from the system. + + Malloc_trim returns 1 if it actually released any memory, else 0. +*/ +int dlmalloc_trim(size_t); + +/* + malloc_usable_size(void* p); + + Returns the number of bytes you can actually use in + an allocated chunk, which may be more than you requested (although + often not) due to alignment and minimum size constraints. + You can use this many bytes without worrying about + overwriting other allocated objects. This is not a particularly great + programming practice. malloc_usable_size can be more useful in + debugging and assertions, for example: + + p = malloc(n); + assert(malloc_usable_size(p) >= 256); +*/ +size_t dlmalloc_usable_size(void*); + +/* + malloc_stats(); + Prints on stderr the amount of space obtained from the system (both + via sbrk and mmap), the maximum amount (which may be more than + current if malloc_trim and/or munmap got called), and the current + number of bytes allocated via malloc (or realloc, etc) but not yet + freed. Note that this is the number of bytes allocated, not the + number requested. It will be larger than the number requested + because of alignment and bookkeeping overhead. Because it includes + alignment wastage as being in use, this figure may be greater than + zero even when no user-level chunks are allocated. + + The reported current and maximum system memory can be inaccurate if + a program makes other calls to system memory allocation functions + (normally sbrk) outside of malloc. + + malloc_stats prints only the most commonly interesting statistics. + More information can be obtained by calling mallinfo. +*/ +void dlmalloc_stats(void); + +#endif /* ONLY_MSPACES */ + +#if MSPACES + +/* + mspace is an opaque type representing an independent + region of space that supports mspace_malloc, etc. +*/ +typedef void* mspace; + +/* + create_mspace creates and returns a new independent space with the + given initial capacity, or, if 0, the default granularity size. It + returns null if there is no system memory available to create the + space. If argument locked is non-zero, the space uses a separate + lock to control access. The capacity of the space will grow + dynamically as needed to service mspace_malloc requests. You can + control the sizes of incremental increases of this space by + compiling with a different DEFAULT_GRANULARITY or dynamically + setting with mallopt(M_GRANULARITY, value). +*/ +mspace create_mspace(size_t capacity, int locked); + +/* + destroy_mspace destroys the given space, and attempts to return all + of its memory back to the system, returning the total number of + bytes freed. After destruction, the results of access to all memory + used by the space become undefined. +*/ +size_t destroy_mspace(mspace msp); + +/* + create_mspace_with_base uses the memory supplied as the initial base + of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this + space is used for bookkeeping, so the capacity must be at least this + large. (Otherwise 0 is returned.) When this initial space is + exhausted, additional memory will be obtained from the system. + Destroying this space will deallocate all additionally allocated + space (if possible) but not the initial base. +*/ +mspace create_mspace_with_base(void* base, size_t capacity, int locked); + +/* + mspace_malloc behaves as malloc, but operates within + the given space. +*/ +void* mspace_malloc(mspace msp, size_t bytes); + +/* + mspace_free behaves as free, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_free is not actually needed. + free may be called instead of mspace_free because freed chunks from + any space are handled by their originating spaces. +*/ +void mspace_free(mspace msp, void* mem); + +/* + mspace_realloc behaves as realloc, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_realloc is not actually + needed. realloc may be called instead of mspace_realloc because + realloced chunks from any space are handled by their originating + spaces. +*/ +void* mspace_realloc(mspace msp, void* mem, size_t newsize); + +/* + mspace_calloc behaves as calloc, but operates within + the given space. +*/ +void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); + +/* + mspace_memalign behaves as memalign, but operates within + the given space. +*/ +void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); + +/* + mspace_independent_calloc behaves as independent_calloc, but + operates within the given space. +*/ +void** mspace_independent_calloc(mspace msp, size_t n_elements, + size_t elem_size, void* chunks[]); + +/* + mspace_independent_comalloc behaves as independent_comalloc, but + operates within the given space. +*/ +void** mspace_independent_comalloc(mspace msp, size_t n_elements, + size_t sizes[], void* chunks[]); + +/* + mspace_footprint() returns the number of bytes obtained from the + system for this space. +*/ +size_t mspace_footprint(mspace msp); + +/* + mspace_max_footprint() returns the peak number of bytes obtained from the + system for this space. +*/ +size_t mspace_max_footprint(mspace msp); + + +#if !NO_MALLINFO +/* + mspace_mallinfo behaves as mallinfo, but reports properties of + the given space. +*/ +struct mallinfo mspace_mallinfo(mspace msp); +#endif /* NO_MALLINFO */ + +/* + mspace_malloc_stats behaves as malloc_stats, but reports + properties of the given space. +*/ +void mspace_malloc_stats(mspace msp); + +/* + mspace_trim behaves as malloc_trim, but + operates within the given space. +*/ +int mspace_trim(mspace msp, size_t pad); + +/* + An alias for mallopt. +*/ +int mspace_mallopt(int, int); + +#endif /* MSPACES */ + +#ifdef __cplusplus +}; /* end of extern "C" */ +#endif /* __cplusplus */ + +/* + ======================================================================== + To make a fully customizable malloc.h header file, cut everything + above this line, put into file malloc.h, edit to suit, and #include it + on the next line, as well as in programs that use this malloc. + ======================================================================== +*/ + +/* #include "malloc.h" */ + +/*------------------------------ internal #includes ---------------------- */ + +#ifdef _MSC_VER +#pragma warning( disable : 4146 ) /* no "unsigned" warnings */ +#endif /* _MSC_VER */ + +#include /* for printing in malloc_stats */ + +#ifndef LACKS_ERRNO_H +#include /* for MALLOC_FAILURE_ACTION */ +#endif /* LACKS_ERRNO_H */ +#if FOOTERS +#include /* for magic initialization */ +#endif /* FOOTERS */ +#ifndef LACKS_STDLIB_H +#include /* for abort() */ +#endif /* LACKS_STDLIB_H */ +#ifdef DEBUG +#if ABORT_ON_ASSERT_FAILURE +#define assert(x) if(!(x)) ABORT +#else /* ABORT_ON_ASSERT_FAILURE */ +#include +#endif /* ABORT_ON_ASSERT_FAILURE */ +#else /* DEBUG */ +#define assert(x) +#endif /* DEBUG */ +#ifndef LACKS_STRING_H +#include /* for memset etc */ +#endif /* LACKS_STRING_H */ +#if USE_BUILTIN_FFS +#ifndef LACKS_STRINGS_H +#include /* for ffs */ +#endif /* LACKS_STRINGS_H */ +#endif /* USE_BUILTIN_FFS */ +#if HAVE_MMAP +#ifndef LACKS_SYS_MMAN_H +#include /* for mmap */ +#endif /* LACKS_SYS_MMAN_H */ +#ifndef LACKS_FCNTL_H +#include +#endif /* LACKS_FCNTL_H */ +#endif /* HAVE_MMAP */ +#if HAVE_MORECORE +#ifndef LACKS_UNISTD_H +#include /* for sbrk */ +#else /* LACKS_UNISTD_H */ +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) +extern void* sbrk(ptrdiff_t); +#endif /* FreeBSD etc */ +#endif /* LACKS_UNISTD_H */ +#endif /* HAVE_MMAP */ + +#ifndef WIN32 +#ifndef malloc_getpagesize +# ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ +# ifndef _SC_PAGE_SIZE +# define _SC_PAGE_SIZE _SC_PAGESIZE +# endif +# endif +# ifdef _SC_PAGE_SIZE +# define malloc_getpagesize sysconf(_SC_PAGE_SIZE) +# else +# if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) + extern size_t getpagesize(); +# define malloc_getpagesize getpagesize() +# else +# ifdef WIN32 /* use supplied emulation of getpagesize */ +# define malloc_getpagesize getpagesize() +# else +# ifndef LACKS_SYS_PARAM_H +# include +# endif +# ifdef EXEC_PAGESIZE +# define malloc_getpagesize EXEC_PAGESIZE +# else +# ifdef NBPG +# ifndef CLSIZE +# define malloc_getpagesize NBPG +# else +# define malloc_getpagesize (NBPG * CLSIZE) +# endif +# else +# ifdef NBPC +# define malloc_getpagesize NBPC +# else +# ifdef PAGESIZE +# define malloc_getpagesize PAGESIZE +# else /* just guess */ +# define malloc_getpagesize ((size_t)4096U) +# endif +# endif +# endif +# endif +# endif +# endif +# endif +#endif +#endif + +/* ------------------- size_t and alignment properties -------------------- */ + +/* The byte and bit size of a size_t */ +#define SIZE_T_SIZE (sizeof(size_t)) +#define SIZE_T_BITSIZE (sizeof(size_t) << 3) + +/* Some constants coerced to size_t */ +/* Annoying but necessary to avoid errors on some platforms */ +#define SIZE_T_ZERO ((size_t)0) +#define SIZE_T_ONE ((size_t)1) +#define SIZE_T_TWO ((size_t)2) +#define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) +#define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) +#define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) +#define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) + +/* The bit mask value corresponding to MALLOC_ALIGNMENT */ +#define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) + +/* True if address a has acceptable alignment */ +#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) + +/* the number of bytes to offset an address to align it */ +#define align_offset(A)\ + ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ + ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) + +/* -------------------------- MMAP preliminaries ------------------------- */ + +/* + If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and + checks to fail so compiler optimizer can delete code rather than + using so many "#if"s. +*/ + + +/* MORECORE and MMAP must return MFAIL on failure */ +#define MFAIL ((void*)(MAX_SIZE_T)) +#define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ + +#if !HAVE_MMAP +#define IS_MMAPPED_BIT (SIZE_T_ZERO) +#define USE_MMAP_BIT (SIZE_T_ZERO) +#define CALL_MMAP(s) MFAIL +#define CALL_MUNMAP(a, s) (-1) +#define DIRECT_MMAP(s) MFAIL + +#else /* HAVE_MMAP */ +#define IS_MMAPPED_BIT (SIZE_T_ONE) +#define USE_MMAP_BIT (SIZE_T_ONE) + +#if !defined(WIN32) && !defined (__OS2__) +#define CALL_MUNMAP(a, s) munmap((a), (s)) +#define MMAP_PROT (PROT_READ|PROT_WRITE) +#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) +#define MAP_ANONYMOUS MAP_ANON +#endif /* MAP_ANON */ +#ifdef MAP_ANONYMOUS +#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) +#define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) +#else /* MAP_ANONYMOUS */ +/* + Nearly all versions of mmap support MAP_ANONYMOUS, so the following + is unlikely to be needed, but is supplied just in case. +*/ +#define MMAP_FLAGS (MAP_PRIVATE) +static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ +#define CALL_MMAP(s) ((dev_zero_fd < 0) ? \ + (dev_zero_fd = open("/dev/zero", O_RDWR), \ + mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ + mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) +#endif /* MAP_ANONYMOUS */ + +#define DIRECT_MMAP(s) CALL_MMAP(s) + +#elif defined(__OS2__) + +/* OS/2 MMAP via DosAllocMem */ +static void* os2mmap(size_t size) { + void* ptr; + if (DosAllocMem(&ptr, size, OBJ_ANY|PAG_COMMIT|PAG_READ|PAG_WRITE) && + DosAllocMem(&ptr, size, PAG_COMMIT|PAG_READ|PAG_WRITE)) + return MFAIL; + return ptr; +} + +#define os2direct_mmap(n) os2mmap(n) + +/* This function supports releasing coalesed segments */ +static int os2munmap(void* ptr, size_t size) { + while (size) { + ULONG ulSize = size; + ULONG ulFlags = 0; + if (DosQueryMem(ptr, &ulSize, &ulFlags) != 0) + return -1; + if ((ulFlags & PAG_BASE) == 0 ||(ulFlags & PAG_COMMIT) == 0 || + ulSize > size) + return -1; + if (DosFreeMem(ptr) != 0) + return -1; + ptr = ( void * ) ( ( char * ) ptr + ulSize ); + size -= ulSize; + } + return 0; +} + +#define CALL_MMAP(s) os2mmap(s) +#define CALL_MUNMAP(a, s) os2munmap((a), (s)) +#define DIRECT_MMAP(s) os2direct_mmap(s) + +#else /* WIN32 */ + +/* Win32 MMAP via VirtualAlloc */ +static void* win32mmap(size_t size) { + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE); + return (ptr != 0)? ptr: MFAIL; +} + +/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ +static void* win32direct_mmap(size_t size) { + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, + PAGE_EXECUTE_READWRITE); + return (ptr != 0)? ptr: MFAIL; +} + +/* This function supports releasing coalesed segments */ +static int win32munmap(void* ptr, size_t size) { + MEMORY_BASIC_INFORMATION minfo; + char* cptr = ptr; + while (size) { + if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) + return -1; + if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || + minfo.State != MEM_COMMIT || minfo.RegionSize > size) + return -1; + if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) + return -1; + cptr += minfo.RegionSize; + size -= minfo.RegionSize; + } + return 0; +} + +#define CALL_MMAP(s) win32mmap(s) +#define CALL_MUNMAP(a, s) win32munmap((a), (s)) +#define DIRECT_MMAP(s) win32direct_mmap(s) +#endif /* WIN32 */ +#endif /* HAVE_MMAP */ + +#if HAVE_MMAP && HAVE_MREMAP +#define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) +#else /* HAVE_MMAP && HAVE_MREMAP */ +#define CALL_MREMAP(addr, osz, nsz, mv) MFAIL +#endif /* HAVE_MMAP && HAVE_MREMAP */ + +#if HAVE_MORECORE +#define CALL_MORECORE(S) MORECORE(S) +#else /* HAVE_MORECORE */ +#define CALL_MORECORE(S) MFAIL +#endif /* HAVE_MORECORE */ + +/* mstate bit set if contiguous morecore disabled or failed */ +#define USE_NONCONTIGUOUS_BIT (4U) + +/* segment bit set in create_mspace_with_base */ +#define EXTERN_BIT (8U) + + +/* --------------------------- Lock preliminaries ------------------------ */ + +#if USE_LOCKS + +/* + When locks are defined, there are up to two global locks: + + * If HAVE_MORECORE, morecore_mutex protects sequences of calls to + MORECORE. In many cases sys_alloc requires two calls, that should + not be interleaved with calls by other threads. This does not + protect against direct calls to MORECORE by other threads not + using this lock, so there is still code to cope the best we can on + interference. + + * magic_init_mutex ensures that mparams.magic and other + unique mparams values are initialized only once. +*/ + +#if !defined(WIN32) && !defined(__OS2__) +/* By default use posix locks */ +#include +#define MLOCK_T pthread_mutex_t +#define INITIAL_LOCK(l) pthread_mutex_init(l, NULL) +#define ACQUIRE_LOCK(l) pthread_mutex_lock(l) +#define RELEASE_LOCK(l) pthread_mutex_unlock(l) + +#if HAVE_MORECORE +static MLOCK_T morecore_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif /* HAVE_MORECORE */ + +static MLOCK_T magic_init_mutex = PTHREAD_MUTEX_INITIALIZER; + +#elif defined(__OS2__) +#define MLOCK_T HMTX +#define INITIAL_LOCK(l) DosCreateMutexSem(0, l, 0, FALSE) +#define ACQUIRE_LOCK(l) DosRequestMutexSem(*l, SEM_INDEFINITE_WAIT) +#define RELEASE_LOCK(l) DosReleaseMutexSem(*l) +#if HAVE_MORECORE +static MLOCK_T morecore_mutex; +#endif /* HAVE_MORECORE */ +static MLOCK_T magic_init_mutex; + +#else /* WIN32 */ +/* + Because lock-protected regions have bounded times, and there + are no recursive lock calls, we can use simple spinlocks. +*/ + +#define MLOCK_T long +static int win32_acquire_lock (MLOCK_T *sl) { + for (;;) { +#ifdef InterlockedCompareExchangePointer + if (!InterlockedCompareExchange(sl, 1, 0)) + return 0; +#else /* Use older void* version */ + if (!InterlockedCompareExchange((void**)sl, (void*)1, (void*)0)) + return 0; +#endif /* InterlockedCompareExchangePointer */ + Sleep (0); + } +} + +static void win32_release_lock (MLOCK_T *sl) { + InterlockedExchange (sl, 0); +} + +#define INITIAL_LOCK(l) *(l)=0 +#define ACQUIRE_LOCK(l) win32_acquire_lock(l) +#define RELEASE_LOCK(l) win32_release_lock(l) +#if HAVE_MORECORE +static MLOCK_T morecore_mutex; +#endif /* HAVE_MORECORE */ +static MLOCK_T magic_init_mutex; +#endif /* WIN32 */ + +#define USE_LOCK_BIT (2U) +#else /* USE_LOCKS */ +#define USE_LOCK_BIT (0U) +#define INITIAL_LOCK(l) +#endif /* USE_LOCKS */ + +#if USE_LOCKS && HAVE_MORECORE +#define ACQUIRE_MORECORE_LOCK() ACQUIRE_LOCK(&morecore_mutex); +#define RELEASE_MORECORE_LOCK() RELEASE_LOCK(&morecore_mutex); +#else /* USE_LOCKS && HAVE_MORECORE */ +#define ACQUIRE_MORECORE_LOCK() +#define RELEASE_MORECORE_LOCK() +#endif /* USE_LOCKS && HAVE_MORECORE */ + +#if USE_LOCKS +#define ACQUIRE_MAGIC_INIT_LOCK() ACQUIRE_LOCK(&magic_init_mutex); +#define RELEASE_MAGIC_INIT_LOCK() RELEASE_LOCK(&magic_init_mutex); +#else /* USE_LOCKS */ +#define ACQUIRE_MAGIC_INIT_LOCK() +#define RELEASE_MAGIC_INIT_LOCK() +#endif /* USE_LOCKS */ + + +/* ----------------------- Chunk representations ------------------------ */ + +/* + (The following includes lightly edited explanations by Colin Plumb.) + + The malloc_chunk declaration below is misleading (but accurate and + necessary). It declares a "view" into memory allowing access to + necessary fields at known offsets from a given base. + + Chunks of memory are maintained using a `boundary tag' method as + originally described by Knuth. (See the paper by Paul Wilson + ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such + techniques.) Sizes of free chunks are stored both in the front of + each chunk and at the end. This makes consolidating fragmented + chunks into bigger chunks fast. The head fields also hold bits + representing whether chunks are free or in use. + + Here are some pictures to make it clearer. They are "exploded" to + show that the state of a chunk can be thought of as extending from + the high 31 bits of the head field of its header through the + prev_foot and PINUSE_BIT bit of the following chunk header. + + A chunk that's in use looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk (if P = 1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 1| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- -+ + | : + +- size - sizeof(size_t) available payload bytes -+ + : | + chunk-> +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| + | Size of next chunk (may or may not be in use) | +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + And if it's free, it looks like this: + + chunk-> +- -+ + | User payload (must be in use, or we would have merged!) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 0| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prev pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | : + +- size - sizeof(struct chunk) unused bytes -+ + : | + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| + | Size of next chunk (must be in use, or we would have merged)| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | : + +- User payload -+ + : | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0| + +-+ + Note that since we always merge adjacent free chunks, the chunks + adjacent to a free chunk must be in use. + + Given a pointer to a chunk (which can be derived trivially from the + payload pointer) we can, in O(1) time, find out whether the adjacent + chunks are free, and if so, unlink them from the lists that they + are on and merge them with the current chunk. + + Chunks always begin on even word boundaries, so the mem portion + (which is returned to the user) is also on an even word boundary, and + thus at least double-word aligned. + + The P (PINUSE_BIT) bit, stored in the unused low-order bit of the + chunk size (which is always a multiple of two words), is an in-use + bit for the *previous* chunk. If that bit is *clear*, then the + word before the current chunk size contains the previous chunk + size, and can be used to find the front of the previous chunk. + The very first chunk allocated always has this bit set, preventing + access to non-existent (or non-owned) memory. If pinuse is set for + any given chunk, then you CANNOT determine the size of the + previous chunk, and might even get a memory addressing fault when + trying to do so. + + The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of + the chunk size redundantly records whether the current chunk is + inuse. This redundancy enables usage checks within free and realloc, + and reduces indirection when freeing and consolidating chunks. + + Each freshly allocated chunk must have both cinuse and pinuse set. + That is, each allocated chunk borders either a previously allocated + and still in-use chunk, or the base of its memory arena. This is + ensured by making all allocations from the the `lowest' part of any + found chunk. Further, no free chunk physically borders another one, + so each free chunk is known to be preceded and followed by either + inuse chunks or the ends of memory. + + Note that the `foot' of the current chunk is actually represented + as the prev_foot of the NEXT chunk. This makes it easier to + deal with alignments etc but can be very confusing when trying + to extend or adapt this code. + + The exceptions to all this are + + 1. The special chunk `top' is the top-most available chunk (i.e., + the one bordering the end of available memory). It is treated + specially. Top is never included in any bin, is used only if + no other chunk is available, and is released back to the + system if it is very large (see M_TRIM_THRESHOLD). In effect, + the top chunk is treated as larger (and thus less well + fitting) than any other available chunk. The top chunk + doesn't update its trailing size field since there is no next + contiguous chunk that would have to index off it. However, + space is still allocated for it (TOP_FOOT_SIZE) to enable + separation or merging when space is extended. + + 3. Chunks allocated via mmap, which have the lowest-order bit + (IS_MMAPPED_BIT) set in their prev_foot fields, and do not set + PINUSE_BIT in their head fields. Because they are allocated + one-by-one, each must carry its own prev_foot field, which is + also used to hold the offset this chunk has within its mmapped + region, which is needed to preserve alignment. Each mmapped + chunk is trailed by the first two fields of a fake next-chunk + for sake of usage checks. + +*/ + +struct malloc_chunk { + size_t prev_foot; /* Size of previous chunk (if free). */ + size_t head; /* Size and inuse bits. */ + struct malloc_chunk* fd; /* double links -- used only if free. */ + struct malloc_chunk* bk; +}; + +typedef struct malloc_chunk mchunk; +typedef struct malloc_chunk* mchunkptr; +typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ +typedef size_t bindex_t; /* Described below */ +typedef unsigned int binmap_t; /* Described below */ +typedef unsigned int flag_t; /* The type of various bit flag sets */ + +/* ------------------- Chunks sizes and alignments ----------------------- */ + +#define MCHUNK_SIZE (sizeof(mchunk)) + +#if FOOTERS +#define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) +#else /* FOOTERS */ +#define CHUNK_OVERHEAD (SIZE_T_SIZE) +#endif /* FOOTERS */ + +/* MMapped chunks need a second word of overhead ... */ +#define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) +/* ... and additional padding for fake next-chunk at foot */ +#define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) + +/* The smallest size we can malloc is an aligned minimal chunk */ +#define MIN_CHUNK_SIZE\ + ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) + +/* conversion from malloc headers to user pointers, and back */ +#define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) +#define mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) +/* chunk associated with aligned address A */ +#define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) + +/* Bounds on request (not chunk) sizes. */ +#define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) +#define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) + +/* pad request bytes into a usable size */ +#define pad_request(req) \ + (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) + +/* pad request, checking for minimum (but not maximum) */ +#define request2size(req) \ + (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) + + +/* ------------------ Operations on head and foot fields ----------------- */ + +/* + The head field of a chunk is or'ed with PINUSE_BIT when previous + adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in + use. If the chunk was obtained with mmap, the prev_foot field has + IS_MMAPPED_BIT set, otherwise holding the offset of the base of the + mmapped region to the base of the chunk. +*/ + +#define PINUSE_BIT (SIZE_T_ONE) +#define CINUSE_BIT (SIZE_T_TWO) +#define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) + +/* Head value for fenceposts */ +#define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) + +/* extraction of fields from head words */ +#define cinuse(p) ((p)->head & CINUSE_BIT) +#define pinuse(p) ((p)->head & PINUSE_BIT) +#define chunksize(p) ((p)->head & ~(INUSE_BITS)) + +#define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) +#define clear_cinuse(p) ((p)->head &= ~CINUSE_BIT) + +/* Treat space at ptr +/- offset as a chunk */ +#define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) +#define chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) + +/* Ptr to next or previous physical malloc_chunk. */ +#define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~INUSE_BITS))) +#define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) + +/* extract next chunk's pinuse bit */ +#define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) + +/* Get/set size at footer */ +#define get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) +#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) + +/* Set size, pinuse bit, and foot */ +#define set_size_and_pinuse_of_free_chunk(p, s)\ + ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) + +/* Set size, pinuse bit, foot, and clear next pinuse */ +#define set_free_with_pinuse(p, s, n)\ + (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) + +#define is_mmapped(p)\ + (!((p)->head & PINUSE_BIT) && ((p)->prev_foot & IS_MMAPPED_BIT)) + +/* Get the internal overhead associated with chunk p */ +#define overhead_for(p)\ + (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) + +/* Return true if malloced space is not necessarily cleared */ +#if MMAP_CLEARS +#define calloc_must_clear(p) (!is_mmapped(p)) +#else /* MMAP_CLEARS */ +#define calloc_must_clear(p) (1) +#endif /* MMAP_CLEARS */ + +/* ---------------------- Overlaid data structures ----------------------- */ + +/* + When chunks are not in use, they are treated as nodes of either + lists or trees. + + "Small" chunks are stored in circular doubly-linked lists, and look + like this: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space (may be 0 bytes long) . + . . + . | +nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Larger chunks are kept in a form of bitwise digital trees (aka + tries) keyed on chunksizes. Because malloc_tree_chunks are only for + free chunks greater than 256 bytes, their size doesn't impose any + constraints on user chunk sizes. Each node looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to left child (child[0]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to right child (child[1]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to parent | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | bin index of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space . + . | +nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Each tree holding treenodes is a tree of unique chunk sizes. Chunks + of the same size are arranged in a circularly-linked list, with only + the oldest chunk (the next to be used, in our FIFO ordering) + actually in the tree. (Tree members are distinguished by a non-null + parent pointer.) If a chunk with the same size an an existing node + is inserted, it is linked off the existing node using pointers that + work in the same way as fd/bk pointers of small chunks. + + Each tree contains a power of 2 sized range of chunk sizes (the + smallest is 0x100 <= x < 0x180), which is is divided in half at each + tree level, with the chunks in the smaller half of the range (0x100 + <= x < 0x140 for the top nose) in the left subtree and the larger + half (0x140 <= x < 0x180) in the right subtree. This is, of course, + done by inspecting individual bits. + + Using these rules, each node's left subtree contains all smaller + sizes than its right subtree. However, the node at the root of each + subtree has no particular ordering relationship to either. (The + dividing line between the subtree sizes is based on trie relation.) + If we remove the last chunk of a given size from the interior of the + tree, we need to replace it with a leaf node. The tree ordering + rules permit a node to be replaced by any leaf below it. + + The smallest chunk in a tree (a common operation in a best-fit + allocator) can be found by walking a path to the leftmost leaf in + the tree. Unlike a usual binary tree, where we follow left child + pointers until we reach a null, here we follow the right child + pointer any time the left one is null, until we reach a leaf with + both child pointers null. The smallest chunk in the tree will be + somewhere along that path. + + The worst case number of steps to add, find, or remove a node is + bounded by the number of bits differentiating chunks within + bins. Under current bin calculations, this ranges from 6 up to 21 + (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case + is of course much better. +*/ + +struct malloc_tree_chunk { + /* The first four fields must be compatible with malloc_chunk */ + size_t prev_foot; + size_t head; + struct malloc_tree_chunk* fd; + struct malloc_tree_chunk* bk; + + struct malloc_tree_chunk* child[2]; + struct malloc_tree_chunk* parent; + bindex_t index; +}; + +typedef struct malloc_tree_chunk tchunk; +typedef struct malloc_tree_chunk* tchunkptr; +typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ + +/* A little helper macro for trees */ +#define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) + +/* ----------------------------- Segments -------------------------------- */ + +/* + Each malloc space may include non-contiguous segments, held in a + list headed by an embedded malloc_segment record representing the + top-most space. Segments also include flags holding properties of + the space. Large chunks that are directly allocated by mmap are not + included in this list. They are instead independently created and + destroyed without otherwise keeping track of them. + + Segment management mainly comes into play for spaces allocated by + MMAP. Any call to MMAP might or might not return memory that is + adjacent to an existing segment. MORECORE normally contiguously + extends the current space, so this space is almost always adjacent, + which is simpler and faster to deal with. (This is why MORECORE is + used preferentially to MMAP when both are available -- see + sys_alloc.) When allocating using MMAP, we don't use any of the + hinting mechanisms (inconsistently) supported in various + implementations of unix mmap, or distinguish reserving from + committing memory. Instead, we just ask for space, and exploit + contiguity when we get it. It is probably possible to do + better than this on some systems, but no general scheme seems + to be significantly better. + + Management entails a simpler variant of the consolidation scheme + used for chunks to reduce fragmentation -- new adjacent memory is + normally prepended or appended to an existing segment. However, + there are limitations compared to chunk consolidation that mostly + reflect the fact that segment processing is relatively infrequent + (occurring only when getting memory from system) and that we + don't expect to have huge numbers of segments: + + * Segments are not indexed, so traversal requires linear scans. (It + would be possible to index these, but is not worth the extra + overhead and complexity for most programs on most platforms.) + * New segments are only appended to old ones when holding top-most + memory; if they cannot be prepended to others, they are held in + different segments. + + Except for the top-most segment of an mstate, each segment record + is kept at the tail of its segment. Segments are added by pushing + segment records onto the list headed by &mstate.seg for the + containing mstate. + + Segment flags control allocation/merge/deallocation policies: + * If EXTERN_BIT set, then we did not allocate this segment, + and so should not try to deallocate or merge with others. + (This currently holds only for the initial segment passed + into create_mspace_with_base.) + * If IS_MMAPPED_BIT set, the segment may be merged with + other surrounding mmapped segments and trimmed/de-allocated + using munmap. + * If neither bit is set, then the segment was obtained using + MORECORE so can be merged with surrounding MORECORE'd segments + and deallocated/trimmed using MORECORE with negative arguments. +*/ + +struct malloc_segment { + char* base; /* base address */ + size_t size; /* allocated size */ + struct malloc_segment* next; /* ptr to next segment */ +#if FFI_MMAP_EXEC_WRIT + /* The mmap magic is supposed to store the address of the executable + segment at the very end of the requested block. */ + +# define mmap_exec_offset(b,s) (*(ptrdiff_t*)((b)+(s)-sizeof(ptrdiff_t))) + + /* We can only merge segments if their corresponding executable + segments are at identical offsets. */ +# define check_segment_merge(S,b,s) \ + (mmap_exec_offset((b),(s)) == (S)->exec_offset) + +# define add_segment_exec_offset(p,S) ((char*)(p) + (S)->exec_offset) +# define sub_segment_exec_offset(p,S) ((char*)(p) - (S)->exec_offset) + + /* The removal of sflags only works with HAVE_MORECORE == 0. */ + +# define get_segment_flags(S) (IS_MMAPPED_BIT) +# define set_segment_flags(S,v) \ + (((v) != IS_MMAPPED_BIT) ? (ABORT, (v)) : \ + (((S)->exec_offset = \ + mmap_exec_offset((S)->base, (S)->size)), \ + (mmap_exec_offset((S)->base + (S)->exec_offset, (S)->size) != \ + (S)->exec_offset) ? (ABORT, (v)) : \ + (mmap_exec_offset((S)->base, (S)->size) = 0), (v))) + + /* We use an offset here, instead of a pointer, because then, when + base changes, we don't have to modify this. On architectures + with segmented addresses, this might not work. */ + ptrdiff_t exec_offset; +#else + +# define get_segment_flags(S) ((S)->sflags) +# define set_segment_flags(S,v) ((S)->sflags = (v)) +# define check_segment_merge(S,b,s) (1) + + flag_t sflags; /* mmap and extern flag */ +#endif +}; + +#define is_mmapped_segment(S) (get_segment_flags(S) & IS_MMAPPED_BIT) +#define is_extern_segment(S) (get_segment_flags(S) & EXTERN_BIT) + +typedef struct malloc_segment msegment; +typedef struct malloc_segment* msegmentptr; + +/* ---------------------------- malloc_state ----------------------------- */ + +/* + A malloc_state holds all of the bookkeeping for a space. + The main fields are: + + Top + The topmost chunk of the currently active segment. Its size is + cached in topsize. The actual size of topmost space is + topsize+TOP_FOOT_SIZE, which includes space reserved for adding + fenceposts and segment records if necessary when getting more + space from the system. The size at which to autotrim top is + cached from mparams in trim_check, except that it is disabled if + an autotrim fails. + + Designated victim (dv) + This is the preferred chunk for servicing small requests that + don't have exact fits. It is normally the chunk split off most + recently to service another small request. Its size is cached in + dvsize. The link fields of this chunk are not maintained since it + is not kept in a bin. + + SmallBins + An array of bin headers for free chunks. These bins hold chunks + with sizes less than MIN_LARGE_SIZE bytes. Each bin contains + chunks of all the same size, spaced 8 bytes apart. To simplify + use in double-linked lists, each bin header acts as a malloc_chunk + pointing to the real first node, if it exists (else pointing to + itself). This avoids special-casing for headers. But to avoid + waste, we allocate only the fd/bk pointers of bins, and then use + repositioning tricks to treat these as the fields of a chunk. + + TreeBins + Treebins are pointers to the roots of trees holding a range of + sizes. There are 2 equally spaced treebins for each power of two + from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything + larger. + + Bin maps + There is one bit map for small bins ("smallmap") and one for + treebins ("treemap). Each bin sets its bit when non-empty, and + clears the bit when empty. Bit operations are then used to avoid + bin-by-bin searching -- nearly all "search" is done without ever + looking at bins that won't be selected. The bit maps + conservatively use 32 bits per map word, even if on 64bit system. + For a good description of some of the bit-based techniques used + here, see Henry S. Warren Jr's book "Hacker's Delight" (and + supplement at http://hackersdelight.org/). Many of these are + intended to reduce the branchiness of paths through malloc etc, as + well as to reduce the number of memory locations read or written. + + Segments + A list of segments headed by an embedded malloc_segment record + representing the initial space. + + Address check support + The least_addr field is the least address ever obtained from + MORECORE or MMAP. Attempted frees and reallocs of any address less + than this are trapped (unless INSECURE is defined). + + Magic tag + A cross-check field that should always hold same value as mparams.magic. + + Flags + Bits recording whether to use MMAP, locks, or contiguous MORECORE + + Statistics + Each space keeps track of current and maximum system memory + obtained via MORECORE or MMAP. + + Locking + If USE_LOCKS is defined, the "mutex" lock is acquired and released + around every public call using this mspace. +*/ + +/* Bin types, widths and sizes */ +#define NSMALLBINS (32U) +#define NTREEBINS (32U) +#define SMALLBIN_SHIFT (3U) +#define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) +#define TREEBIN_SHIFT (8U) +#define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) +#define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) +#define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) + +struct malloc_state { + binmap_t smallmap; + binmap_t treemap; + size_t dvsize; + size_t topsize; + char* least_addr; + mchunkptr dv; + mchunkptr top; + size_t trim_check; + size_t magic; + mchunkptr smallbins[(NSMALLBINS+1)*2]; + tbinptr treebins[NTREEBINS]; + size_t footprint; + size_t max_footprint; + flag_t mflags; +#if USE_LOCKS + MLOCK_T mutex; /* locate lock among fields that rarely change */ +#endif /* USE_LOCKS */ + msegment seg; +}; + +typedef struct malloc_state* mstate; + +/* ------------- Global malloc_state and malloc_params ------------------- */ + +/* + malloc_params holds global properties, including those that can be + dynamically set using mallopt. There is a single instance, mparams, + initialized in init_mparams. +*/ + +struct malloc_params { + size_t magic; + size_t page_size; + size_t granularity; + size_t mmap_threshold; + size_t trim_threshold; + flag_t default_mflags; +}; + +static struct malloc_params mparams; + +/* The global malloc_state used for all non-"mspace" calls */ +static struct malloc_state _gm_; +#define gm (&_gm_) +#define is_global(M) ((M) == &_gm_) +#define is_initialized(M) ((M)->top != 0) + +/* -------------------------- system alloc setup ------------------------- */ + +/* Operations on mflags */ + +#define use_lock(M) ((M)->mflags & USE_LOCK_BIT) +#define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) +#define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) + +#define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) +#define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) +#define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) + +#define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) +#define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) + +#define set_lock(M,L)\ + ((M)->mflags = (L)?\ + ((M)->mflags | USE_LOCK_BIT) :\ + ((M)->mflags & ~USE_LOCK_BIT)) + +/* page-align a size */ +#define page_align(S)\ + (((S) + (mparams.page_size)) & ~(mparams.page_size - SIZE_T_ONE)) + +/* granularity-align a size */ +#define granularity_align(S)\ + (((S) + (mparams.granularity)) & ~(mparams.granularity - SIZE_T_ONE)) + +#define is_page_aligned(S)\ + (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) +#define is_granularity_aligned(S)\ + (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) + +/* True if segment S holds address A */ +#define segment_holds(S, A)\ + ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) + +/* Return segment holding given address */ +static msegmentptr segment_holding(mstate m, char* addr) { + msegmentptr sp = &m->seg; + for (;;) { + if (addr >= sp->base && addr < sp->base + sp->size) + return sp; + if ((sp = sp->next) == 0) + return 0; + } +} + +/* Return true if segment contains a segment link */ +static int has_segment_link(mstate m, msegmentptr ss) { + msegmentptr sp = &m->seg; + for (;;) { + if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) + return 1; + if ((sp = sp->next) == 0) + return 0; + } +} + +#ifndef MORECORE_CANNOT_TRIM +#define should_trim(M,s) ((s) > (M)->trim_check) +#else /* MORECORE_CANNOT_TRIM */ +#define should_trim(M,s) (0) +#endif /* MORECORE_CANNOT_TRIM */ + +/* + TOP_FOOT_SIZE is padding at the end of a segment, including space + that may be needed to place segment records and fenceposts when new + noncontiguous segments are added. +*/ +#define TOP_FOOT_SIZE\ + (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) + + +/* ------------------------------- Hooks -------------------------------- */ + +/* + PREACTION should be defined to return 0 on success, and nonzero on + failure. If you are not using locking, you can redefine these to do + anything you like. +*/ + +#if USE_LOCKS + +/* Ensure locks are initialized */ +#define GLOBALLY_INITIALIZE() (mparams.page_size == 0 && init_mparams()) + +#define PREACTION(M) ((GLOBALLY_INITIALIZE() || use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) +#define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } +#else /* USE_LOCKS */ + +#ifndef PREACTION +#define PREACTION(M) (0) +#endif /* PREACTION */ + +#ifndef POSTACTION +#define POSTACTION(M) +#endif /* POSTACTION */ + +#endif /* USE_LOCKS */ + +/* + CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. + USAGE_ERROR_ACTION is triggered on detected bad frees and + reallocs. The argument p is an address that might have triggered the + fault. It is ignored by the two predefined actions, but might be + useful in custom actions that try to help diagnose errors. +*/ + +#if PROCEED_ON_ERROR + +/* A count of the number of corruption errors causing resets */ +int malloc_corruption_error_count; + +/* default corruption action */ +static void reset_on_error(mstate m); + +#define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) +#define USAGE_ERROR_ACTION(m, p) + +#else /* PROCEED_ON_ERROR */ + +#ifndef CORRUPTION_ERROR_ACTION +#define CORRUPTION_ERROR_ACTION(m) ABORT +#endif /* CORRUPTION_ERROR_ACTION */ + +#ifndef USAGE_ERROR_ACTION +#define USAGE_ERROR_ACTION(m,p) ABORT +#endif /* USAGE_ERROR_ACTION */ + +#endif /* PROCEED_ON_ERROR */ + +/* -------------------------- Debugging setup ---------------------------- */ + +#if ! DEBUG + +#define check_free_chunk(M,P) +#define check_inuse_chunk(M,P) +#define check_malloced_chunk(M,P,N) +#define check_mmapped_chunk(M,P) +#define check_malloc_state(M) +#define check_top_chunk(M,P) + +#else /* DEBUG */ +#define check_free_chunk(M,P) do_check_free_chunk(M,P) +#define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) +#define check_top_chunk(M,P) do_check_top_chunk(M,P) +#define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) +#define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) +#define check_malloc_state(M) do_check_malloc_state(M) + +static void do_check_any_chunk(mstate m, mchunkptr p); +static void do_check_top_chunk(mstate m, mchunkptr p); +static void do_check_mmapped_chunk(mstate m, mchunkptr p); +static void do_check_inuse_chunk(mstate m, mchunkptr p); +static void do_check_free_chunk(mstate m, mchunkptr p); +static void do_check_malloced_chunk(mstate m, void* mem, size_t s); +static void do_check_tree(mstate m, tchunkptr t); +static void do_check_treebin(mstate m, bindex_t i); +static void do_check_smallbin(mstate m, bindex_t i); +static void do_check_malloc_state(mstate m); +static int bin_find(mstate m, mchunkptr x); +static size_t traverse_and_check(mstate m); +#endif /* DEBUG */ + +/* ---------------------------- Indexing Bins ---------------------------- */ + +#define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) +#define small_index(s) ((s) >> SMALLBIN_SHIFT) +#define small_index2size(i) ((i) << SMALLBIN_SHIFT) +#define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) + +/* addressing by index. See above about smallbin repositioning */ +#define smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) +#define treebin_at(M,i) (&((M)->treebins[i])) + +/* assign tree index for size S to variable I */ +#if defined(__GNUC__) && defined(__i386__) +#define compute_tree_index(S, I)\ +{\ + size_t X = S >> TREEBIN_SHIFT;\ + if (X == 0)\ + I = 0;\ + else if (X > 0xFFFF)\ + I = NTREEBINS-1;\ + else {\ + unsigned int K;\ + __asm__("bsrl %1,%0\n\t" : "=r" (K) : "rm" (X));\ + I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ + }\ +} +#else /* GNUC */ +#define compute_tree_index(S, I)\ +{\ + size_t X = S >> TREEBIN_SHIFT;\ + if (X == 0)\ + I = 0;\ + else if (X > 0xFFFF)\ + I = NTREEBINS-1;\ + else {\ + unsigned int Y = (unsigned int)X;\ + unsigned int N = ((Y - 0x100) >> 16) & 8;\ + unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ + N += K;\ + N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ + K = 14 - N + ((Y <<= K) >> 15);\ + I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ + }\ +} +#endif /* GNUC */ + +/* Bit representing maximum resolved size in a treebin at i */ +#define bit_for_tree_index(i) \ + (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) + +/* Shift placing maximum resolved bit in a treebin at i as sign bit */ +#define leftshift_for_tree_index(i) \ + ((i == NTREEBINS-1)? 0 : \ + ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) + +/* The size of the smallest chunk held in bin with index i */ +#define minsize_for_tree_index(i) \ + ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ + (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) + + +/* ------------------------ Operations on bin maps ----------------------- */ + +/* bit corresponding to given index */ +#define idx2bit(i) ((binmap_t)(1) << (i)) + +/* Mark/Clear bits with given index */ +#define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) +#define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) +#define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) + +#define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) +#define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) +#define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) + +/* index corresponding to given bit */ + +#if defined(__GNUC__) && defined(__i386__) +#define compute_bit2idx(X, I)\ +{\ + unsigned int J;\ + __asm__("bsfl %1,%0\n\t" : "=r" (J) : "rm" (X));\ + I = (bindex_t)J;\ +} + +#else /* GNUC */ +#if USE_BUILTIN_FFS +#define compute_bit2idx(X, I) I = ffs(X)-1 + +#else /* USE_BUILTIN_FFS */ +#define compute_bit2idx(X, I)\ +{\ + unsigned int Y = X - 1;\ + unsigned int K = Y >> (16-4) & 16;\ + unsigned int N = K; Y >>= K;\ + N += K = Y >> (8-3) & 8; Y >>= K;\ + N += K = Y >> (4-2) & 4; Y >>= K;\ + N += K = Y >> (2-1) & 2; Y >>= K;\ + N += K = Y >> (1-0) & 1; Y >>= K;\ + I = (bindex_t)(N + Y);\ +} +#endif /* USE_BUILTIN_FFS */ +#endif /* GNUC */ + +/* isolate the least set bit of a bitmap */ +#define least_bit(x) ((x) & -(x)) + +/* mask with all bits to left of least bit of x on */ +#define left_bits(x) ((x<<1) | -(x<<1)) + +/* mask with all bits to left of or equal to least bit of x on */ +#define same_or_left_bits(x) ((x) | -(x)) + + +/* ----------------------- Runtime Check Support ------------------------- */ + +/* + For security, the main invariant is that malloc/free/etc never + writes to a static address other than malloc_state, unless static + malloc_state itself has been corrupted, which cannot occur via + malloc (because of these checks). In essence this means that we + believe all pointers, sizes, maps etc held in malloc_state, but + check all of those linked or offsetted from other embedded data + structures. These checks are interspersed with main code in a way + that tends to minimize their run-time cost. + + When FOOTERS is defined, in addition to range checking, we also + verify footer fields of inuse chunks, which can be used guarantee + that the mstate controlling malloc/free is intact. This is a + streamlined version of the approach described by William Robertson + et al in "Run-time Detection of Heap-based Overflows" LISA'03 + http://www.usenix.org/events/lisa03/tech/robertson.html The footer + of an inuse chunk holds the xor of its mstate and a random seed, + that is checked upon calls to free() and realloc(). This is + (probablistically) unguessable from outside the program, but can be + computed by any code successfully malloc'ing any chunk, so does not + itself provide protection against code that has already broken + security through some other means. Unlike Robertson et al, we + always dynamically check addresses of all offset chunks (previous, + next, etc). This turns out to be cheaper than relying on hashes. +*/ + +#if !INSECURE +/* Check if address a is at least as high as any from MORECORE or MMAP */ +#define ok_address(M, a) ((char*)(a) >= (M)->least_addr) +/* Check if address of next chunk n is higher than base chunk p */ +#define ok_next(p, n) ((char*)(p) < (char*)(n)) +/* Check if p has its cinuse bit on */ +#define ok_cinuse(p) cinuse(p) +/* Check if p has its pinuse bit on */ +#define ok_pinuse(p) pinuse(p) + +#else /* !INSECURE */ +#define ok_address(M, a) (1) +#define ok_next(b, n) (1) +#define ok_cinuse(p) (1) +#define ok_pinuse(p) (1) +#endif /* !INSECURE */ + +#if (FOOTERS && !INSECURE) +/* Check if (alleged) mstate m has expected magic field */ +#define ok_magic(M) ((M)->magic == mparams.magic) +#else /* (FOOTERS && !INSECURE) */ +#define ok_magic(M) (1) +#endif /* (FOOTERS && !INSECURE) */ + + +/* In gcc, use __builtin_expect to minimize impact of checks */ +#if !INSECURE +#if defined(__GNUC__) && __GNUC__ >= 3 +#define RTCHECK(e) __builtin_expect(e, 1) +#else /* GNUC */ +#define RTCHECK(e) (e) +#endif /* GNUC */ +#else /* !INSECURE */ +#define RTCHECK(e) (1) +#endif /* !INSECURE */ + +/* macros to set up inuse chunks with or without footers */ + +#if !FOOTERS + +#define mark_inuse_foot(M,p,s) + +/* Set cinuse bit and pinuse bit of next chunk */ +#define set_inuse(M,p,s)\ + ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ + ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) + +/* Set cinuse and pinuse of this chunk and pinuse of next chunk */ +#define set_inuse_and_pinuse(M,p,s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) + +/* Set size, cinuse and pinuse bit of this chunk */ +#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) + +#else /* FOOTERS */ + +/* Set foot of inuse chunk to be xor of mstate and seed */ +#define mark_inuse_foot(M,p,s)\ + (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) + +#define get_mstate_for(p)\ + ((mstate)(((mchunkptr)((char*)(p) +\ + (chunksize(p))))->prev_foot ^ mparams.magic)) + +#define set_inuse(M,p,s)\ + ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ + (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ + mark_inuse_foot(M,p,s)) + +#define set_inuse_and_pinuse(M,p,s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ + mark_inuse_foot(M,p,s)) + +#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + mark_inuse_foot(M, p, s)) + +#endif /* !FOOTERS */ + +/* ---------------------------- setting mparams -------------------------- */ + +/* Initialize mparams */ +static int init_mparams(void) { + if (mparams.page_size == 0) { + size_t s; + + mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; + mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; +#if MORECORE_CONTIGUOUS + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; +#else /* MORECORE_CONTIGUOUS */ + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; +#endif /* MORECORE_CONTIGUOUS */ + +#if (FOOTERS && !INSECURE) + { +#if USE_DEV_RANDOM + int fd; + unsigned char buf[sizeof(size_t)]; + /* Try to use /dev/urandom, else fall back on using time */ + if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && + read(fd, buf, sizeof(buf)) == sizeof(buf)) { + s = *((size_t *) buf); + close(fd); + } + else +#endif /* USE_DEV_RANDOM */ + s = (size_t)(time(0) ^ (size_t)0x55555555U); + + s |= (size_t)8U; /* ensure nonzero */ + s &= ~(size_t)7U; /* improve chances of fault for bad values */ + + } +#else /* (FOOTERS && !INSECURE) */ + s = (size_t)0x58585858U; +#endif /* (FOOTERS && !INSECURE) */ + ACQUIRE_MAGIC_INIT_LOCK(); + if (mparams.magic == 0) { + mparams.magic = s; + /* Set up lock for main malloc area */ + INITIAL_LOCK(&gm->mutex); + gm->mflags = mparams.default_mflags; + } + RELEASE_MAGIC_INIT_LOCK(); + +#if !defined(WIN32) && !defined(__OS2__) + mparams.page_size = malloc_getpagesize; + mparams.granularity = ((DEFAULT_GRANULARITY != 0)? + DEFAULT_GRANULARITY : mparams.page_size); +#elif defined (__OS2__) + /* if low-memory is used, os2munmap() would break + if it were anything other than 64k */ + mparams.page_size = 4096u; + mparams.granularity = 65536u; +#else /* WIN32 */ + { + SYSTEM_INFO system_info; + GetSystemInfo(&system_info); + mparams.page_size = system_info.dwPageSize; + mparams.granularity = system_info.dwAllocationGranularity; + } +#endif /* WIN32 */ + + /* Sanity-check configuration: + size_t must be unsigned and as wide as pointer type. + ints must be at least 4 bytes. + alignment must be at least 8. + Alignment, min chunk size, and page size must all be powers of 2. + */ + if ((sizeof(size_t) != sizeof(char*)) || + (MAX_SIZE_T < MIN_CHUNK_SIZE) || + (sizeof(int) < 4) || + (MALLOC_ALIGNMENT < (size_t)8U) || + ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || + ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || + ((mparams.granularity & (mparams.granularity-SIZE_T_ONE)) != 0) || + ((mparams.page_size & (mparams.page_size-SIZE_T_ONE)) != 0)) + ABORT; + } + return 0; +} + +/* support for mallopt */ +static int change_mparam(int param_number, int value) { + size_t val = (size_t)value; + init_mparams(); + switch(param_number) { + case M_TRIM_THRESHOLD: + mparams.trim_threshold = val; + return 1; + case M_GRANULARITY: + if (val >= mparams.page_size && ((val & (val-1)) == 0)) { + mparams.granularity = val; + return 1; + } + else + return 0; + case M_MMAP_THRESHOLD: + mparams.mmap_threshold = val; + return 1; + default: + return 0; + } +} + +#if DEBUG +/* ------------------------- Debugging Support --------------------------- */ + +/* Check properties of any chunk, whether free, inuse, mmapped etc */ +static void do_check_any_chunk(mstate m, mchunkptr p) { + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); +} + +/* Check properties of top chunk */ +static void do_check_top_chunk(mstate m, mchunkptr p) { + msegmentptr sp = segment_holding(m, (char*)p); + size_t sz = chunksize(p); + assert(sp != 0); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(sz == m->topsize); + assert(sz > 0); + assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); + assert(pinuse(p)); + assert(!next_pinuse(p)); +} + +/* Check properties of (inuse) mmapped chunks */ +static void do_check_mmapped_chunk(mstate m, mchunkptr p) { + size_t sz = chunksize(p); + size_t len = (sz + (p->prev_foot & ~IS_MMAPPED_BIT) + MMAP_FOOT_PAD); + assert(is_mmapped(p)); + assert(use_mmap(m)); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(!is_small(sz)); + assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); + assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); + assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); +} + +/* Check properties of inuse chunks */ +static void do_check_inuse_chunk(mstate m, mchunkptr p) { + do_check_any_chunk(m, p); + assert(cinuse(p)); + assert(next_pinuse(p)); + /* If not pinuse and not mmapped, previous chunk has OK offset */ + assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); + if (is_mmapped(p)) + do_check_mmapped_chunk(m, p); +} + +/* Check properties of free chunks */ +static void do_check_free_chunk(mstate m, mchunkptr p) { + size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); + mchunkptr next = chunk_plus_offset(p, sz); + do_check_any_chunk(m, p); + assert(!cinuse(p)); + assert(!next_pinuse(p)); + assert (!is_mmapped(p)); + if (p != m->dv && p != m->top) { + if (sz >= MIN_CHUNK_SIZE) { + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(is_aligned(chunk2mem(p))); + assert(next->prev_foot == sz); + assert(pinuse(p)); + assert (next == m->top || cinuse(next)); + assert(p->fd->bk == p); + assert(p->bk->fd == p); + } + else /* markers are always of size SIZE_T_SIZE */ + assert(sz == SIZE_T_SIZE); + } +} + +/* Check properties of malloced chunks at the point they are malloced */ +static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); + do_check_inuse_chunk(m, p); + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(sz >= MIN_CHUNK_SIZE); + assert(sz >= s); + /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ + assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); + } +} + +/* Check a tree and its subtrees. */ +static void do_check_tree(mstate m, tchunkptr t) { + tchunkptr head = 0; + tchunkptr u = t; + bindex_t tindex = t->index; + size_t tsize = chunksize(t); + bindex_t idx; + compute_tree_index(tsize, idx); + assert(tindex == idx); + assert(tsize >= MIN_LARGE_SIZE); + assert(tsize >= minsize_for_tree_index(idx)); + assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); + + do { /* traverse through chain of same-sized nodes */ + do_check_any_chunk(m, ((mchunkptr)u)); + assert(u->index == tindex); + assert(chunksize(u) == tsize); + assert(!cinuse(u)); + assert(!next_pinuse(u)); + assert(u->fd->bk == u); + assert(u->bk->fd == u); + if (u->parent == 0) { + assert(u->child[0] == 0); + assert(u->child[1] == 0); + } + else { + assert(head == 0); /* only one node on chain has parent */ + head = u; + assert(u->parent != u); + assert (u->parent->child[0] == u || + u->parent->child[1] == u || + *((tbinptr*)(u->parent)) == u); + if (u->child[0] != 0) { + assert(u->child[0]->parent == u); + assert(u->child[0] != u); + do_check_tree(m, u->child[0]); + } + if (u->child[1] != 0) { + assert(u->child[1]->parent == u); + assert(u->child[1] != u); + do_check_tree(m, u->child[1]); + } + if (u->child[0] != 0 && u->child[1] != 0) { + assert(chunksize(u->child[0]) < chunksize(u->child[1])); + } + } + u = u->fd; + } while (u != t); + assert(head != 0); +} + +/* Check all the chunks in a treebin. */ +static void do_check_treebin(mstate m, bindex_t i) { + tbinptr* tb = treebin_at(m, i); + tchunkptr t = *tb; + int empty = (m->treemap & (1U << i)) == 0; + if (t == 0) + assert(empty); + if (!empty) + do_check_tree(m, t); +} + +/* Check all the chunks in a smallbin. */ +static void do_check_smallbin(mstate m, bindex_t i) { + sbinptr b = smallbin_at(m, i); + mchunkptr p = b->bk; + unsigned int empty = (m->smallmap & (1U << i)) == 0; + if (p == b) + assert(empty); + if (!empty) { + for (; p != b; p = p->bk) { + size_t size = chunksize(p); + mchunkptr q; + /* each chunk claims to be free */ + do_check_free_chunk(m, p); + /* chunk belongs in bin */ + assert(small_index(size) == i); + assert(p->bk == b || chunksize(p->bk) == chunksize(p)); + /* chunk is followed by an inuse chunk */ + q = next_chunk(p); + if (q->head != FENCEPOST_HEAD) + do_check_inuse_chunk(m, q); + } + } +} + +/* Find x in a bin. Used in other check functions. */ +static int bin_find(mstate m, mchunkptr x) { + size_t size = chunksize(x); + if (is_small(size)) { + bindex_t sidx = small_index(size); + sbinptr b = smallbin_at(m, sidx); + if (smallmap_is_marked(m, sidx)) { + mchunkptr p = b; + do { + if (p == x) + return 1; + } while ((p = p->fd) != b); + } + } + else { + bindex_t tidx; + compute_tree_index(size, tidx); + if (treemap_is_marked(m, tidx)) { + tchunkptr t = *treebin_at(m, tidx); + size_t sizebits = size << leftshift_for_tree_index(tidx); + while (t != 0 && chunksize(t) != size) { + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + sizebits <<= 1; + } + if (t != 0) { + tchunkptr u = t; + do { + if (u == (tchunkptr)x) + return 1; + } while ((u = u->fd) != t); + } + } + } + return 0; +} + +/* Traverse each chunk and check it; return total */ +static size_t traverse_and_check(mstate m) { + size_t sum = 0; + if (is_initialized(m)) { + msegmentptr s = &m->seg; + sum += m->topsize + TOP_FOOT_SIZE; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + mchunkptr lastq = 0; + assert(pinuse(q)); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + sum += chunksize(q); + if (cinuse(q)) { + assert(!bin_find(m, q)); + do_check_inuse_chunk(m, q); + } + else { + assert(q == m->dv || bin_find(m, q)); + assert(lastq == 0 || cinuse(lastq)); /* Not 2 consecutive free */ + do_check_free_chunk(m, q); + } + lastq = q; + q = next_chunk(q); + } + s = s->next; + } + } + return sum; +} + +/* Check all properties of malloc_state. */ +static void do_check_malloc_state(mstate m) { + bindex_t i; + size_t total; + /* check bins */ + for (i = 0; i < NSMALLBINS; ++i) + do_check_smallbin(m, i); + for (i = 0; i < NTREEBINS; ++i) + do_check_treebin(m, i); + + if (m->dvsize != 0) { /* check dv chunk */ + do_check_any_chunk(m, m->dv); + assert(m->dvsize == chunksize(m->dv)); + assert(m->dvsize >= MIN_CHUNK_SIZE); + assert(bin_find(m, m->dv) == 0); + } + + if (m->top != 0) { /* check top chunk */ + do_check_top_chunk(m, m->top); + assert(m->topsize == chunksize(m->top)); + assert(m->topsize > 0); + assert(bin_find(m, m->top) == 0); + } + + total = traverse_and_check(m); + assert(total <= m->footprint); + assert(m->footprint <= m->max_footprint); +} +#endif /* DEBUG */ + +/* ----------------------------- statistics ------------------------------ */ + +#if !NO_MALLINFO +static struct mallinfo internal_mallinfo(mstate m) { + struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + if (!PREACTION(m)) { + check_malloc_state(m); + if (is_initialized(m)) { + size_t nfree = SIZE_T_ONE; /* top always free */ + size_t mfree = m->topsize + TOP_FOOT_SIZE; + size_t sum = mfree; + msegmentptr s = &m->seg; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + size_t sz = chunksize(q); + sum += sz; + if (!cinuse(q)) { + mfree += sz; + ++nfree; + } + q = next_chunk(q); + } + s = s->next; + } + + nm.arena = sum; + nm.ordblks = nfree; + nm.hblkhd = m->footprint - sum; + nm.usmblks = m->max_footprint; + nm.uordblks = m->footprint - mfree; + nm.fordblks = mfree; + nm.keepcost = m->topsize; + } + + POSTACTION(m); + } + return nm; +} +#endif /* !NO_MALLINFO */ + +static void internal_malloc_stats(mstate m) { + if (!PREACTION(m)) { + size_t maxfp = 0; + size_t fp = 0; + size_t used = 0; + check_malloc_state(m); + if (is_initialized(m)) { + msegmentptr s = &m->seg; + maxfp = m->max_footprint; + fp = m->footprint; + used = fp - (m->topsize + TOP_FOOT_SIZE); + + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + if (!cinuse(q)) + used -= chunksize(q); + q = next_chunk(q); + } + s = s->next; + } + } + + fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); + fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); + fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); + + POSTACTION(m); + } +} + +/* ----------------------- Operations on smallbins ----------------------- */ + +/* + Various forms of linking and unlinking are defined as macros. Even + the ones for trees, which are very long but have very short typical + paths. This is ugly but reduces reliance on inlining support of + compilers. +*/ + +/* Link a free chunk into a smallbin */ +#define insert_small_chunk(M, P, S) {\ + bindex_t I = small_index(S);\ + mchunkptr B = smallbin_at(M, I);\ + mchunkptr F = B;\ + assert(S >= MIN_CHUNK_SIZE);\ + if (!smallmap_is_marked(M, I))\ + mark_smallmap(M, I);\ + else if (RTCHECK(ok_address(M, B->fd)))\ + F = B->fd;\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + B->fd = P;\ + F->bk = P;\ + P->fd = F;\ + P->bk = B;\ +} + +/* Unlink a chunk from a smallbin */ +#define unlink_small_chunk(M, P, S) {\ + mchunkptr F = P->fd;\ + mchunkptr B = P->bk;\ + bindex_t I = small_index(S);\ + assert(P != B);\ + assert(P != F);\ + assert(chunksize(P) == small_index2size(I));\ + if (F == B)\ + clear_smallmap(M, I);\ + else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) &&\ + (B == smallbin_at(M,I) || ok_address(M, B)))) {\ + F->bk = B;\ + B->fd = F;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ +} + +/* Unlink the first chunk from a smallbin */ +#define unlink_first_small_chunk(M, B, P, I) {\ + mchunkptr F = P->fd;\ + assert(P != B);\ + assert(P != F);\ + assert(chunksize(P) == small_index2size(I));\ + if (B == F)\ + clear_smallmap(M, I);\ + else if (RTCHECK(ok_address(M, F))) {\ + B->fd = F;\ + F->bk = B;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ +} + +/* Replace dv node, binning the old one */ +/* Used only when dvsize known to be small */ +#define replace_dv(M, P, S) {\ + size_t DVS = M->dvsize;\ + if (DVS != 0) {\ + mchunkptr DV = M->dv;\ + assert(is_small(DVS));\ + insert_small_chunk(M, DV, DVS);\ + }\ + M->dvsize = S;\ + M->dv = P;\ +} + +/* ------------------------- Operations on trees ------------------------- */ + +/* Insert chunk into tree */ +#define insert_large_chunk(M, X, S) {\ + tbinptr* H;\ + bindex_t I;\ + compute_tree_index(S, I);\ + H = treebin_at(M, I);\ + X->index = I;\ + X->child[0] = X->child[1] = 0;\ + if (!treemap_is_marked(M, I)) {\ + mark_treemap(M, I);\ + *H = X;\ + X->parent = (tchunkptr)H;\ + X->fd = X->bk = X;\ + }\ + else {\ + tchunkptr T = *H;\ + size_t K = S << leftshift_for_tree_index(I);\ + for (;;) {\ + if (chunksize(T) != S) {\ + tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ + K <<= 1;\ + if (*C != 0)\ + T = *C;\ + else if (RTCHECK(ok_address(M, C))) {\ + *C = X;\ + X->parent = T;\ + X->fd = X->bk = X;\ + break;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + break;\ + }\ + }\ + else {\ + tchunkptr F = T->fd;\ + if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ + T->fd = F->bk = X;\ + X->fd = F;\ + X->bk = T;\ + X->parent = 0;\ + break;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + break;\ + }\ + }\ + }\ + }\ +} + +/* + Unlink steps: + + 1. If x is a chained node, unlink it from its same-sized fd/bk links + and choose its bk node as its replacement. + 2. If x was the last node of its size, but not a leaf node, it must + be replaced with a leaf node (not merely one with an open left or + right), to make sure that lefts and rights of descendants + correspond properly to bit masks. We use the rightmost descendant + of x. We could use any other leaf, but this is easy to locate and + tends to counteract removal of leftmosts elsewhere, and so keeps + paths shorter than minimally guaranteed. This doesn't loop much + because on average a node in a tree is near the bottom. + 3. If x is the base of a chain (i.e., has parent links) relink + x's parent and children to x's replacement (or null if none). +*/ + +#define unlink_large_chunk(M, X) {\ + tchunkptr XP = X->parent;\ + tchunkptr R;\ + if (X->bk != X) {\ + tchunkptr F = X->fd;\ + R = X->bk;\ + if (RTCHECK(ok_address(M, F))) {\ + F->bk = R;\ + R->fd = F;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + else {\ + tchunkptr* RP;\ + if (((R = *(RP = &(X->child[1]))) != 0) ||\ + ((R = *(RP = &(X->child[0]))) != 0)) {\ + tchunkptr* CP;\ + while ((*(CP = &(R->child[1])) != 0) ||\ + (*(CP = &(R->child[0])) != 0)) {\ + R = *(RP = CP);\ + }\ + if (RTCHECK(ok_address(M, RP)))\ + *RP = 0;\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + }\ + if (XP != 0) {\ + tbinptr* H = treebin_at(M, X->index);\ + if (X == *H) {\ + if ((*H = R) == 0) \ + clear_treemap(M, X->index);\ + }\ + else if (RTCHECK(ok_address(M, XP))) {\ + if (XP->child[0] == X) \ + XP->child[0] = R;\ + else \ + XP->child[1] = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + if (R != 0) {\ + if (RTCHECK(ok_address(M, R))) {\ + tchunkptr C0, C1;\ + R->parent = XP;\ + if ((C0 = X->child[0]) != 0) {\ + if (RTCHECK(ok_address(M, C0))) {\ + R->child[0] = C0;\ + C0->parent = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + if ((C1 = X->child[1]) != 0) {\ + if (RTCHECK(ok_address(M, C1))) {\ + R->child[1] = C1;\ + C1->parent = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ +} + +/* Relays to large vs small bin operations */ + +#define insert_chunk(M, P, S)\ + if (is_small(S)) insert_small_chunk(M, P, S)\ + else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } + +#define unlink_chunk(M, P, S)\ + if (is_small(S)) unlink_small_chunk(M, P, S)\ + else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } + + +/* Relays to internal calls to malloc/free from realloc, memalign etc */ + +#if ONLY_MSPACES +#define internal_malloc(m, b) mspace_malloc(m, b) +#define internal_free(m, mem) mspace_free(m,mem); +#else /* ONLY_MSPACES */ +#if MSPACES +#define internal_malloc(m, b)\ + (m == gm)? dlmalloc(b) : mspace_malloc(m, b) +#define internal_free(m, mem)\ + if (m == gm) dlfree(mem); else mspace_free(m,mem); +#else /* MSPACES */ +#define internal_malloc(m, b) dlmalloc(b) +#define internal_free(m, mem) dlfree(mem) +#endif /* MSPACES */ +#endif /* ONLY_MSPACES */ + +/* ----------------------- Direct-mmapping chunks ----------------------- */ + +/* + Directly mmapped chunks are set up with an offset to the start of + the mmapped region stored in the prev_foot field of the chunk. This + allows reconstruction of the required argument to MUNMAP when freed, + and also allows adjustment of the returned chunk to meet alignment + requirements (especially in memalign). There is also enough space + allocated to hold a fake next chunk of size SIZE_T_SIZE to maintain + the PINUSE bit so frees can be checked. +*/ + +/* Malloc using mmap */ +static void* mmap_alloc(mstate m, size_t nb) { + size_t mmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + if (mmsize > nb) { /* Check for wrap around 0 */ + char* mm = (char*)(DIRECT_MMAP(mmsize)); + if (mm != CMFAIL) { + size_t offset = align_offset(chunk2mem(mm)); + size_t psize = mmsize - offset - MMAP_FOOT_PAD; + mchunkptr p = (mchunkptr)(mm + offset); + p->prev_foot = offset | IS_MMAPPED_BIT; + (p)->head = (psize|CINUSE_BIT); + mark_inuse_foot(m, p, psize); + chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; + + if (mm < m->least_addr) + m->least_addr = mm; + if ((m->footprint += mmsize) > m->max_footprint) + m->max_footprint = m->footprint; + assert(is_aligned(chunk2mem(p))); + check_mmapped_chunk(m, p); + return chunk2mem(p); + } + } + return 0; +} + +/* Realloc using mmap */ +static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb) { + size_t oldsize = chunksize(oldp); + if (is_small(nb)) /* Can't shrink mmap regions below small size */ + return 0; + /* Keep old chunk if big enough but not too big */ + if (oldsize >= nb + SIZE_T_SIZE && + (oldsize - nb) <= (mparams.granularity << 1)) + return oldp; + else { + size_t offset = oldp->prev_foot & ~IS_MMAPPED_BIT; + size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; + size_t newmmsize = granularity_align(nb + SIX_SIZE_T_SIZES + + CHUNK_ALIGN_MASK); + char* cp = (char*)CALL_MREMAP((char*)oldp - offset, + oldmmsize, newmmsize, 1); + if (cp != CMFAIL) { + mchunkptr newp = (mchunkptr)(cp + offset); + size_t psize = newmmsize - offset - MMAP_FOOT_PAD; + newp->head = (psize|CINUSE_BIT); + mark_inuse_foot(m, newp, psize); + chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; + + if (cp < m->least_addr) + m->least_addr = cp; + if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) + m->max_footprint = m->footprint; + check_mmapped_chunk(m, newp); + return newp; + } + } + return 0; +} + +/* -------------------------- mspace management -------------------------- */ + +/* Initialize top chunk and its size */ +static void init_top(mstate m, mchunkptr p, size_t psize) { + /* Ensure alignment */ + size_t offset = align_offset(chunk2mem(p)); + p = (mchunkptr)((char*)p + offset); + psize -= offset; + + m->top = p; + m->topsize = psize; + p->head = psize | PINUSE_BIT; + /* set size of fake trailing chunk holding overhead space only once */ + chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; + m->trim_check = mparams.trim_threshold; /* reset on each update */ +} + +/* Initialize bins for a new mstate that is otherwise zeroed out */ +static void init_bins(mstate m) { + /* Establish circular links for smallbins */ + bindex_t i; + for (i = 0; i < NSMALLBINS; ++i) { + sbinptr bin = smallbin_at(m,i); + bin->fd = bin->bk = bin; + } +} + +#if PROCEED_ON_ERROR + +/* default corruption action */ +static void reset_on_error(mstate m) { + int i; + ++malloc_corruption_error_count; + /* Reinitialize fields to forget about all memory */ + m->smallbins = m->treebins = 0; + m->dvsize = m->topsize = 0; + m->seg.base = 0; + m->seg.size = 0; + m->seg.next = 0; + m->top = m->dv = 0; + for (i = 0; i < NTREEBINS; ++i) + *treebin_at(m, i) = 0; + init_bins(m); +} +#endif /* PROCEED_ON_ERROR */ + +/* Allocate chunk and prepend remainder with chunk in successor base. */ +static void* prepend_alloc(mstate m, char* newbase, char* oldbase, + size_t nb) { + mchunkptr p = align_as_chunk(newbase); + mchunkptr oldfirst = align_as_chunk(oldbase); + size_t psize = (char*)oldfirst - (char*)p; + mchunkptr q = chunk_plus_offset(p, nb); + size_t qsize = psize - nb; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + + assert((char*)oldfirst > (char*)q); + assert(pinuse(oldfirst)); + assert(qsize >= MIN_CHUNK_SIZE); + + /* consolidate remainder with first chunk of old base */ + if (oldfirst == m->top) { + size_t tsize = m->topsize += qsize; + m->top = q; + q->head = tsize | PINUSE_BIT; + check_top_chunk(m, q); + } + else if (oldfirst == m->dv) { + size_t dsize = m->dvsize += qsize; + m->dv = q; + set_size_and_pinuse_of_free_chunk(q, dsize); + } + else { + if (!cinuse(oldfirst)) { + size_t nsize = chunksize(oldfirst); + unlink_chunk(m, oldfirst, nsize); + oldfirst = chunk_plus_offset(oldfirst, nsize); + qsize += nsize; + } + set_free_with_pinuse(q, qsize, oldfirst); + insert_chunk(m, q, qsize); + check_free_chunk(m, q); + } + + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); +} + + +/* Add a segment to hold a new noncontiguous region */ +static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { + /* Determine locations and sizes of segment, fenceposts, old top */ + char* old_top = (char*)m->top; + msegmentptr oldsp = segment_holding(m, old_top); + char* old_end = oldsp->base + oldsp->size; + size_t ssize = pad_request(sizeof(struct malloc_segment)); + char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + size_t offset = align_offset(chunk2mem(rawsp)); + char* asp = rawsp + offset; + char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; + mchunkptr sp = (mchunkptr)csp; + msegmentptr ss = (msegmentptr)(chunk2mem(sp)); + mchunkptr tnext = chunk_plus_offset(sp, ssize); + mchunkptr p = tnext; + int nfences = 0; + + /* reset top to new space */ + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + + /* Set up segment record */ + assert(is_aligned(ss)); + set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); + *ss = m->seg; /* Push current record */ + m->seg.base = tbase; + m->seg.size = tsize; + (void)set_segment_flags(&m->seg, mmapped); + m->seg.next = ss; + + /* Insert trailing fenceposts */ + for (;;) { + mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); + p->head = FENCEPOST_HEAD; + ++nfences; + if ((char*)(&(nextp->head)) < old_end) + p = nextp; + else + break; + } + assert(nfences >= 2); + + /* Insert the rest of old top into a bin as an ordinary free chunk */ + if (csp != old_top) { + mchunkptr q = (mchunkptr)old_top; + size_t psize = csp - old_top; + mchunkptr tn = chunk_plus_offset(q, psize); + set_free_with_pinuse(q, psize, tn); + insert_chunk(m, q, psize); + } + + check_top_chunk(m, m->top); +} + +/* -------------------------- System allocation -------------------------- */ + +/* Get memory from system using MORECORE or MMAP */ +static void* sys_alloc(mstate m, size_t nb) { + char* tbase = CMFAIL; + size_t tsize = 0; + flag_t mmap_flag = 0; + + init_mparams(); + + /* Directly map large chunks */ + if (use_mmap(m) && nb >= mparams.mmap_threshold) { + void* mem = mmap_alloc(m, nb); + if (mem != 0) + return mem; + } + + /* + Try getting memory in any of three ways (in most-preferred to + least-preferred order): + 1. A call to MORECORE that can normally contiguously extend memory. + (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or + or main space is mmapped or a previous contiguous call failed) + 2. A call to MMAP new space (disabled if not HAVE_MMAP). + Note that under the default settings, if MORECORE is unable to + fulfill a request, and HAVE_MMAP is true, then mmap is + used as a noncontiguous system allocator. This is a useful backup + strategy for systems with holes in address spaces -- in this case + sbrk cannot contiguously expand the heap, but mmap may be able to + find space. + 3. A call to MORECORE that cannot usually contiguously extend memory. + (disabled if not HAVE_MORECORE) + */ + + if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { + char* br = CMFAIL; + msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); + size_t asize = 0; + ACQUIRE_MORECORE_LOCK(); + + if (ss == 0) { /* First time through or recovery */ + char* base = (char*)CALL_MORECORE(0); + if (base != CMFAIL) { + asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); + /* Adjust to end on a page boundary */ + if (!is_page_aligned(base)) + asize += (page_align((size_t)base) - (size_t)base); + /* Can't call MORECORE if size is negative when treated as signed */ + if (asize < HALF_MAX_SIZE_T && + (br = (char*)(CALL_MORECORE(asize))) == base) { + tbase = base; + tsize = asize; + } + } + } + else { + /* Subtract out existing available top space from MORECORE request. */ + asize = granularity_align(nb - m->topsize + TOP_FOOT_SIZE + SIZE_T_ONE); + /* Use mem here only if it did continuously extend old space */ + if (asize < HALF_MAX_SIZE_T && + (br = (char*)(CALL_MORECORE(asize))) == ss->base+ss->size) { + tbase = br; + tsize = asize; + } + } + + if (tbase == CMFAIL) { /* Cope with partial failure */ + if (br != CMFAIL) { /* Try to use/extend the space we did get */ + if (asize < HALF_MAX_SIZE_T && + asize < nb + TOP_FOOT_SIZE + SIZE_T_ONE) { + size_t esize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE - asize); + if (esize < HALF_MAX_SIZE_T) { + char* end = (char*)CALL_MORECORE(esize); + if (end != CMFAIL) + asize += esize; + else { /* Can't use; try to release */ + (void)CALL_MORECORE(-asize); + br = CMFAIL; + } + } + } + } + if (br != CMFAIL) { /* Use the space we did get */ + tbase = br; + tsize = asize; + } + else + disable_contiguous(m); /* Don't try contiguous path in the future */ + } + + RELEASE_MORECORE_LOCK(); + } + + if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ + size_t req = nb + TOP_FOOT_SIZE + SIZE_T_ONE; + size_t rsize = granularity_align(req); + if (rsize > nb) { /* Fail if wraps around zero */ + char* mp = (char*)(CALL_MMAP(rsize)); + if (mp != CMFAIL) { + tbase = mp; + tsize = rsize; + mmap_flag = IS_MMAPPED_BIT; + } + } + } + + if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ + size_t asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); + if (asize < HALF_MAX_SIZE_T) { + char* br = CMFAIL; + char* end = CMFAIL; + ACQUIRE_MORECORE_LOCK(); + br = (char*)(CALL_MORECORE(asize)); + end = (char*)(CALL_MORECORE(0)); + RELEASE_MORECORE_LOCK(); + if (br != CMFAIL && end != CMFAIL && br < end) { + size_t ssize = end - br; + if (ssize > nb + TOP_FOOT_SIZE) { + tbase = br; + tsize = ssize; + } + } + } + } + + if (tbase != CMFAIL) { + + if ((m->footprint += tsize) > m->max_footprint) + m->max_footprint = m->footprint; + + if (!is_initialized(m)) { /* first-time initialization */ + m->seg.base = m->least_addr = tbase; + m->seg.size = tsize; + (void)set_segment_flags(&m->seg, mmap_flag); + m->magic = mparams.magic; + init_bins(m); + if (is_global(m)) + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + else { + /* Offset top by embedded malloc_state */ + mchunkptr mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); + } + } + + else { + /* Try to merge with an existing segment */ + msegmentptr sp = &m->seg; + while (sp != 0 && tbase != sp->base + sp->size) + sp = sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + check_segment_merge(sp, tbase, tsize) && + (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag && + segment_holds(sp, m->top)) { /* append */ + sp->size += tsize; + init_top(m, m->top, m->topsize + tsize); + } + else { + if (tbase < m->least_addr) + m->least_addr = tbase; + sp = &m->seg; + while (sp != 0 && sp->base != tbase + tsize) + sp = sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + check_segment_merge(sp, tbase, tsize) && + (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag) { + char* oldbase = sp->base; + sp->base = tbase; + sp->size += tsize; + return prepend_alloc(m, tbase, oldbase, nb); + } + else + add_segment(m, tbase, tsize, mmap_flag); + } + } + + if (nb < m->topsize) { /* Allocate from new or extended top space */ + size_t rsize = m->topsize -= nb; + mchunkptr p = m->top; + mchunkptr r = m->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + check_top_chunk(m, m->top); + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); + } + } + + MALLOC_FAILURE_ACTION; + return 0; +} + +/* ----------------------- system deallocation -------------------------- */ + +/* Unmap and unlink any mmapped segments that don't contain used chunks */ +static size_t release_unused_segments(mstate m) { + size_t released = 0; + msegmentptr pred = &m->seg; + msegmentptr sp = pred->next; + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + msegmentptr next = sp->next; + if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { + mchunkptr p = align_as_chunk(base); + size_t psize = chunksize(p); + /* Can unmap if first chunk holds entire segment and not pinned */ + if (!cinuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { + tchunkptr tp = (tchunkptr)p; + assert(segment_holds(sp, (char*)sp)); + if (p == m->dv) { + m->dv = 0; + m->dvsize = 0; + } + else { + unlink_large_chunk(m, tp); + } + if (CALL_MUNMAP(base, size) == 0) { + released += size; + m->footprint -= size; + /* unlink obsoleted record */ + sp = pred; + sp->next = next; + } + else { /* back out if cannot unmap */ + insert_large_chunk(m, tp, psize); + } + } + } + pred = sp; + sp = next; + } + return released; +} + +static int sys_trim(mstate m, size_t pad) { + size_t released = 0; + if (pad < MAX_REQUEST && is_initialized(m)) { + pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ + + if (m->topsize > pad) { + /* Shrink top space in granularity-size units, keeping at least one */ + size_t unit = mparams.granularity; + size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - + SIZE_T_ONE) * unit; + msegmentptr sp = segment_holding(m, (char*)m->top); + + if (!is_extern_segment(sp)) { + if (is_mmapped_segment(sp)) { + if (HAVE_MMAP && + sp->size >= extra && + !has_segment_link(m, sp)) { /* can't shrink if pinned */ + size_t newsize = sp->size - extra; + /* Prefer mremap, fall back to munmap */ + if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || + (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { + released = extra; + } + } + } + else if (HAVE_MORECORE) { + if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ + extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; + ACQUIRE_MORECORE_LOCK(); + { + /* Make sure end of memory is where we last set it. */ + char* old_br = (char*)(CALL_MORECORE(0)); + if (old_br == sp->base + sp->size) { + char* rel_br = (char*)(CALL_MORECORE(-extra)); + char* new_br = (char*)(CALL_MORECORE(0)); + if (rel_br != CMFAIL && new_br < old_br) + released = old_br - new_br; + } + } + RELEASE_MORECORE_LOCK(); + } + } + + if (released != 0) { + sp->size -= released; + m->footprint -= released; + init_top(m, m->top, m->topsize - released); + check_top_chunk(m, m->top); + } + } + + /* Unmap any unused mmapped segments */ + if (HAVE_MMAP) + released += release_unused_segments(m); + + /* On failure, disable autotrim to avoid repeated failed future calls */ + if (released == 0) + m->trim_check = MAX_SIZE_T; + } + + return (released != 0)? 1 : 0; +} + +/* ---------------------------- malloc support --------------------------- */ + +/* allocate a large request from the best fitting chunk in a treebin */ +static void* tmalloc_large(mstate m, size_t nb) { + tchunkptr v = 0; + size_t rsize = -nb; /* Unsigned negation */ + tchunkptr t; + bindex_t idx; + compute_tree_index(nb, idx); + + if ((t = *treebin_at(m, idx)) != 0) { + /* Traverse tree for this bin looking for node with size == nb */ + size_t sizebits = nb << leftshift_for_tree_index(idx); + tchunkptr rst = 0; /* The deepest untaken right subtree */ + for (;;) { + tchunkptr rt; + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + v = t; + if ((rsize = trem) == 0) + break; + } + rt = t->child[1]; + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + if (rt != 0 && rt != t) + rst = rt; + if (t == 0) { + t = rst; /* set t to least subtree holding sizes > nb */ + break; + } + sizebits <<= 1; + } + } + + if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ + binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; + if (leftbits != 0) { + bindex_t i; + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + t = *treebin_at(m, i); + } + } + + while (t != 0) { /* find smallest of tree or subtree */ + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; + } + t = leftmost_child(t); + } + + /* If dv is a better fit, return 0 so malloc will use it */ + if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { + if (RTCHECK(ok_address(m, v))) { /* split */ + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + insert_chunk(m, r, rsize); + } + return chunk2mem(v); + } + } + CORRUPTION_ERROR_ACTION(m); + } + return 0; +} + +/* allocate a small request from the best fitting chunk in a treebin */ +static void* tmalloc_small(mstate m, size_t nb) { + tchunkptr t, v; + size_t rsize; + bindex_t i; + binmap_t leastbit = least_bit(m->treemap); + compute_bit2idx(leastbit, i); + + v = t = *treebin_at(m, i); + rsize = chunksize(t) - nb; + + while ((t = leftmost_child(t)) != 0) { + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; + } + } + + if (RTCHECK(ok_address(m, v))) { + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(m, r, rsize); + } + return chunk2mem(v); + } + } + + CORRUPTION_ERROR_ACTION(m); + return 0; +} + +/* --------------------------- realloc support --------------------------- */ + +static void* internal_realloc(mstate m, void* oldmem, size_t bytes) { + if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + return 0; + } + if (!PREACTION(m)) { + mchunkptr oldp = mem2chunk(oldmem); + size_t oldsize = chunksize(oldp); + mchunkptr next = chunk_plus_offset(oldp, oldsize); + mchunkptr newp = 0; + void* extra = 0; + + /* Try to either shrink or extend into top. Else malloc-copy-free */ + + if (RTCHECK(ok_address(m, oldp) && ok_cinuse(oldp) && + ok_next(oldp, next) && ok_pinuse(next))) { + size_t nb = request2size(bytes); + if (is_mmapped(oldp)) + newp = mmap_resize(m, oldp, nb); + else if (oldsize >= nb) { /* already big enough */ + size_t rsize = oldsize - nb; + newp = oldp; + if (rsize >= MIN_CHUNK_SIZE) { + mchunkptr remainder = chunk_plus_offset(newp, nb); + set_inuse(m, newp, nb); + set_inuse(m, remainder, rsize); + extra = chunk2mem(remainder); + } + } + else if (next == m->top && oldsize + m->topsize > nb) { + /* Expand into top */ + size_t newsize = oldsize + m->topsize; + size_t newtopsize = newsize - nb; + mchunkptr newtop = chunk_plus_offset(oldp, nb); + set_inuse(m, oldp, nb); + newtop->head = newtopsize |PINUSE_BIT; + m->top = newtop; + m->topsize = newtopsize; + newp = oldp; + } + } + else { + USAGE_ERROR_ACTION(m, oldmem); + POSTACTION(m); + return 0; + } + + POSTACTION(m); + + if (newp != 0) { + if (extra != 0) { + internal_free(m, extra); + } + check_inuse_chunk(m, newp); + return chunk2mem(newp); + } + else { + void* newmem = internal_malloc(m, bytes); + if (newmem != 0) { + size_t oc = oldsize - overhead_for(oldp); + memcpy(newmem, oldmem, (oc < bytes)? oc : bytes); + internal_free(m, oldmem); + } + return newmem; + } + } + return 0; +} + +/* --------------------------- memalign support -------------------------- */ + +static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { + if (alignment <= MALLOC_ALIGNMENT) /* Can just use malloc */ + return internal_malloc(m, bytes); + if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ + alignment = MIN_CHUNK_SIZE; + if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ + size_t a = MALLOC_ALIGNMENT << 1; + while (a < alignment) a <<= 1; + alignment = a; + } + + if (bytes >= MAX_REQUEST - alignment) { + if (m != 0) { /* Test isn't needed but avoids compiler warning */ + MALLOC_FAILURE_ACTION; + } + } + else { + size_t nb = request2size(bytes); + size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; + char* mem = (char*)internal_malloc(m, req); + if (mem != 0) { + void* leader = 0; + void* trailer = 0; + mchunkptr p = mem2chunk(mem); + + if (PREACTION(m)) return 0; + if ((((size_t)(mem)) % alignment) != 0) { /* misaligned */ + /* + Find an aligned spot inside chunk. Since we need to give + back leading space in a chunk of at least MIN_CHUNK_SIZE, if + the first calculation places us at a spot with less than + MIN_CHUNK_SIZE leader, we can move to the next aligned spot. + We've allocated enough total room so that this is always + possible. + */ + char* br = (char*)mem2chunk((size_t)(((size_t)(mem + + alignment - + SIZE_T_ONE)) & + -alignment)); + char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? + br : br+alignment; + mchunkptr newp = (mchunkptr)pos; + size_t leadsize = pos - (char*)(p); + size_t newsize = chunksize(p) - leadsize; + + if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ + newp->prev_foot = p->prev_foot + leadsize; + newp->head = (newsize|CINUSE_BIT); + } + else { /* Otherwise, give back leader, use the rest */ + set_inuse(m, newp, newsize); + set_inuse(m, p, leadsize); + leader = chunk2mem(p); + } + p = newp; + } + + /* Give back spare room at the end */ + if (!is_mmapped(p)) { + size_t size = chunksize(p); + if (size > nb + MIN_CHUNK_SIZE) { + size_t remainder_size = size - nb; + mchunkptr remainder = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + set_inuse(m, remainder, remainder_size); + trailer = chunk2mem(remainder); + } + } + + assert (chunksize(p) >= nb); + assert((((size_t)(chunk2mem(p))) % alignment) == 0); + check_inuse_chunk(m, p); + POSTACTION(m); + if (leader != 0) { + internal_free(m, leader); + } + if (trailer != 0) { + internal_free(m, trailer); + } + return chunk2mem(p); + } + } + return 0; +} + +/* ------------------------ comalloc/coalloc support --------------------- */ + +static void** ialloc(mstate m, + size_t n_elements, + size_t* sizes, + int opts, + void* chunks[]) { + /* + This provides common support for independent_X routines, handling + all of the combinations that can result. + + The opts arg has: + bit 0 set if all elements are same size (using sizes[0]) + bit 1 set if elements should be zeroed + */ + + size_t element_size; /* chunksize of each element, if all same */ + size_t contents_size; /* total size of elements */ + size_t array_size; /* request size of pointer array */ + void* mem; /* malloced aggregate space */ + mchunkptr p; /* corresponding chunk */ + size_t remainder_size; /* remaining bytes while splitting */ + void** marray; /* either "chunks" or malloced ptr array */ + mchunkptr array_chunk; /* chunk for malloced ptr array */ + flag_t was_enabled; /* to disable mmap */ + size_t size; + size_t i; + + /* compute array length, if needed */ + if (chunks != 0) { + if (n_elements == 0) + return chunks; /* nothing to do */ + marray = chunks; + array_size = 0; + } + else { + /* if empty req, must still return chunk representing empty array */ + if (n_elements == 0) + return (void**)internal_malloc(m, 0); + marray = 0; + array_size = request2size(n_elements * (sizeof(void*))); + } + + /* compute total element size */ + if (opts & 0x1) { /* all-same-size */ + element_size = request2size(*sizes); + contents_size = n_elements * element_size; + } + else { /* add up all the sizes */ + element_size = 0; + contents_size = 0; + for (i = 0; i != n_elements; ++i) + contents_size += request2size(sizes[i]); + } + + size = contents_size + array_size; + + /* + Allocate the aggregate chunk. First disable direct-mmapping so + malloc won't use it, since we would not be able to later + free/realloc space internal to a segregated mmap region. + */ + was_enabled = use_mmap(m); + disable_mmap(m); + mem = internal_malloc(m, size - CHUNK_OVERHEAD); + if (was_enabled) + enable_mmap(m); + if (mem == 0) + return 0; + + if (PREACTION(m)) return 0; + p = mem2chunk(mem); + remainder_size = chunksize(p); + + assert(!is_mmapped(p)); + + if (opts & 0x2) { /* optionally clear the elements */ + memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); + } + + /* If not provided, allocate the pointer array as final part of chunk */ + if (marray == 0) { + size_t array_chunk_size; + array_chunk = chunk_plus_offset(p, contents_size); + array_chunk_size = remainder_size - contents_size; + marray = (void**) (chunk2mem(array_chunk)); + set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); + remainder_size = contents_size; + } + + /* split out elements */ + for (i = 0; ; ++i) { + marray[i] = chunk2mem(p); + if (i != n_elements-1) { + if (element_size != 0) + size = element_size; + else + size = request2size(sizes[i]); + remainder_size -= size; + set_size_and_pinuse_of_inuse_chunk(m, p, size); + p = chunk_plus_offset(p, size); + } + else { /* the final element absorbs any overallocation slop */ + set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); + break; + } + } + +#if DEBUG + if (marray != chunks) { + /* final element must have exactly exhausted chunk */ + if (element_size != 0) { + assert(remainder_size == element_size); + } + else { + assert(remainder_size == request2size(sizes[i])); + } + check_inuse_chunk(m, mem2chunk(marray)); + } + for (i = 0; i != n_elements; ++i) + check_inuse_chunk(m, mem2chunk(marray[i])); + +#endif /* DEBUG */ + + POSTACTION(m); + return marray; +} + + +/* -------------------------- public routines ---------------------------- */ + +#if !ONLY_MSPACES + +void* dlmalloc(size_t bytes) { + /* + Basic algorithm: + If a small request (< 256 bytes minus per-chunk overhead): + 1. If one exists, use a remainderless chunk in associated smallbin. + (Remainderless means that there are too few excess bytes to + represent as a chunk.) + 2. If it is big enough, use the dv chunk, which is normally the + chunk adjacent to the one used for the most recent small request. + 3. If one exists, split the smallest available chunk in a bin, + saving remainder in dv. + 4. If it is big enough, use the top chunk. + 5. If available, get memory from system and use it + Otherwise, for a large request: + 1. Find the smallest available binned chunk that fits, and use it + if it is better fitting than dv chunk, splitting if necessary. + 2. If better fitting than any binned chunk, use the dv chunk. + 3. If it is big enough, use the top chunk. + 4. If request size >= mmap threshold, try to directly mmap this chunk. + 5. If available, get memory from system and use it + + The ugly goto's here ensure that postaction occurs along all paths. + */ + + if (!PREACTION(gm)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = gm->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(gm, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(gm, b, p, idx); + set_inuse_and_pinuse(gm, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb > gm->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(gm, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(gm, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(gm, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(gm, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + } + } + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + } + + if (nb <= gm->dvsize) { + size_t rsize = gm->dvsize - nb; + mchunkptr p = gm->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = gm->dv = chunk_plus_offset(p, nb); + gm->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + } + else { /* exhaust dv */ + size_t dvs = gm->dvsize; + gm->dvsize = 0; + gm->dv = 0; + set_inuse_and_pinuse(gm, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb < gm->topsize) { /* Split top */ + size_t rsize = gm->topsize -= nb; + mchunkptr p = gm->top; + mchunkptr r = gm->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + mem = chunk2mem(p); + check_top_chunk(gm, gm->top); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + mem = sys_alloc(gm, nb); + + postaction: + POSTACTION(gm); + return mem; + } + + return 0; +} + +void dlfree(void* mem) { + /* + Consolidate freed chunks with preceding or succeeding bordering + free chunks, if they exist, and then place in a bin. Intermixed + with special cases for top, dv, mmapped chunks, and usage errors. + */ + + if (mem != 0) { + mchunkptr p = mem2chunk(mem); +#if FOOTERS + mstate fm = get_mstate_for(p); + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; + } +#else /* FOOTERS */ +#define fm gm +#endif /* FOOTERS */ + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if ((prevsize & IS_MMAPPED_BIT) != 0) { + prevsize &= ~IS_MMAPPED_BIT; + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + insert_chunk(fm, p, psize); + check_free_chunk(fm, p); + goto postaction; + } + } + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); + } + } +#if !FOOTERS +#undef fm +#endif /* FOOTERS */ +} + +void* dlcalloc(size_t n_elements, size_t elem_size) { + void* mem; + size_t req = 0; + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = dlmalloc(req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; +} + +void* dlrealloc(void* oldmem, size_t bytes) { + if (oldmem == 0) + return dlmalloc(bytes); +#ifdef REALLOC_ZERO_BYTES_FREES + if (bytes == 0) { + dlfree(oldmem); + return 0; + } +#endif /* REALLOC_ZERO_BYTES_FREES */ + else { +#if ! FOOTERS + mstate m = gm; +#else /* FOOTERS */ + mstate m = get_mstate_for(mem2chunk(oldmem)); + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } +#endif /* FOOTERS */ + return internal_realloc(m, oldmem, bytes); + } +} + +void* dlmemalign(size_t alignment, size_t bytes) { + return internal_memalign(gm, alignment, bytes); +} + +void** dlindependent_calloc(size_t n_elements, size_t elem_size, + void* chunks[]) { + size_t sz = elem_size; /* serves as 1-element array */ + return ialloc(gm, n_elements, &sz, 3, chunks); +} + +void** dlindependent_comalloc(size_t n_elements, size_t sizes[], + void* chunks[]) { + return ialloc(gm, n_elements, sizes, 0, chunks); +} + +void* dlvalloc(size_t bytes) { + size_t pagesz; + init_mparams(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, bytes); +} + +void* dlpvalloc(size_t bytes) { + size_t pagesz; + init_mparams(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); +} + +int dlmalloc_trim(size_t pad) { + int result = 0; + if (!PREACTION(gm)) { + result = sys_trim(gm, pad); + POSTACTION(gm); + } + return result; +} + +size_t dlmalloc_footprint(void) { + return gm->footprint; +} + +size_t dlmalloc_max_footprint(void) { + return gm->max_footprint; +} + +#if !NO_MALLINFO +struct mallinfo dlmallinfo(void) { + return internal_mallinfo(gm); +} +#endif /* NO_MALLINFO */ + +void dlmalloc_stats() { + internal_malloc_stats(gm); +} + +size_t dlmalloc_usable_size(void* mem) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + if (cinuse(p)) + return chunksize(p) - overhead_for(p); + } + return 0; +} + +int dlmallopt(int param_number, int value) { + return change_mparam(param_number, value); +} + +#endif /* !ONLY_MSPACES */ + +/* ----------------------------- user mspaces ---------------------------- */ + +#if MSPACES + +static mstate init_user_mstate(char* tbase, size_t tsize) { + size_t msize = pad_request(sizeof(struct malloc_state)); + mchunkptr mn; + mchunkptr msp = align_as_chunk(tbase); + mstate m = (mstate)(chunk2mem(msp)); + memset(m, 0, msize); + INITIAL_LOCK(&m->mutex); + msp->head = (msize|PINUSE_BIT|CINUSE_BIT); + m->seg.base = m->least_addr = tbase; + m->seg.size = m->footprint = m->max_footprint = tsize; + m->magic = mparams.magic; + m->mflags = mparams.default_mflags; + disable_contiguous(m); + init_bins(m); + mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); + check_top_chunk(m, m->top); + return m; +} + +mspace create_mspace(size_t capacity, int locked) { + mstate m = 0; + size_t msize = pad_request(sizeof(struct malloc_state)); + init_mparams(); /* Ensure pagesize etc initialized */ + + if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + size_t rs = ((capacity == 0)? mparams.granularity : + (capacity + TOP_FOOT_SIZE + msize)); + size_t tsize = granularity_align(rs); + char* tbase = (char*)(CALL_MMAP(tsize)); + if (tbase != CMFAIL) { + m = init_user_mstate(tbase, tsize); + set_segment_flags(&m->seg, IS_MMAPPED_BIT); + set_lock(m, locked); + } + } + return (mspace)m; +} + +mspace create_mspace_with_base(void* base, size_t capacity, int locked) { + mstate m = 0; + size_t msize = pad_request(sizeof(struct malloc_state)); + init_mparams(); /* Ensure pagesize etc initialized */ + + if (capacity > msize + TOP_FOOT_SIZE && + capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + m = init_user_mstate((char*)base, capacity); + set_segment_flags(&m->seg, EXTERN_BIT); + set_lock(m, locked); + } + return (mspace)m; +} + +size_t destroy_mspace(mspace msp) { + size_t freed = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + msegmentptr sp = &ms->seg; + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + flag_t flag = get_segment_flags(sp); + sp = sp->next; + if ((flag & IS_MMAPPED_BIT) && !(flag & EXTERN_BIT) && + CALL_MUNMAP(base, size) == 0) + freed += size; + } + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return freed; +} + +/* + mspace versions of routines are near-clones of the global + versions. This is not so nice but better than the alternatives. +*/ + + +void* mspace_malloc(mspace msp, size_t bytes) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (!PREACTION(ms)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = ms->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(ms, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(ms, b, p, idx); + set_inuse_and_pinuse(ms, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb > ms->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(ms, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(ms, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(ms, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(ms, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + } + } + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + } + + if (nb <= ms->dvsize) { + size_t rsize = ms->dvsize - nb; + mchunkptr p = ms->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = ms->dv = chunk_plus_offset(p, nb); + ms->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + } + else { /* exhaust dv */ + size_t dvs = ms->dvsize; + ms->dvsize = 0; + ms->dv = 0; + set_inuse_and_pinuse(ms, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb < ms->topsize) { /* Split top */ + size_t rsize = ms->topsize -= nb; + mchunkptr p = ms->top; + mchunkptr r = ms->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + mem = chunk2mem(p); + check_top_chunk(ms, ms->top); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + mem = sys_alloc(ms, nb); + + postaction: + POSTACTION(ms); + return mem; + } + + return 0; +} + +void mspace_free(mspace msp, void* mem) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); +#if FOOTERS + mstate fm = get_mstate_for(p); +#else /* FOOTERS */ + mstate fm = (mstate)msp; +#endif /* FOOTERS */ + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; + } + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if ((prevsize & IS_MMAPPED_BIT) != 0) { + prevsize &= ~IS_MMAPPED_BIT; + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + insert_chunk(fm, p, psize); + check_free_chunk(fm, p); + goto postaction; + } + } + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); + } + } +} + +void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { + void* mem; + size_t req = 0; + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = internal_malloc(ms, req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; +} + +void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { + if (oldmem == 0) + return mspace_malloc(msp, bytes); +#ifdef REALLOC_ZERO_BYTES_FREES + if (bytes == 0) { + mspace_free(msp, oldmem); + return 0; + } +#endif /* REALLOC_ZERO_BYTES_FREES */ + else { +#if FOOTERS + mchunkptr p = mem2chunk(oldmem); + mstate ms = get_mstate_for(p); +#else /* FOOTERS */ + mstate ms = (mstate)msp; +#endif /* FOOTERS */ + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return internal_realloc(ms, oldmem, bytes); + } +} + +void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return internal_memalign(ms, alignment, bytes); +} + +void** mspace_independent_calloc(mspace msp, size_t n_elements, + size_t elem_size, void* chunks[]) { + size_t sz = elem_size; /* serves as 1-element array */ + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, &sz, 3, chunks); +} + +void** mspace_independent_comalloc(mspace msp, size_t n_elements, + size_t sizes[], void* chunks[]) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, sizes, 0, chunks); +} + +int mspace_trim(mspace msp, size_t pad) { + int result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + if (!PREACTION(ms)) { + result = sys_trim(ms, pad); + POSTACTION(ms); + } + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; +} + +void mspace_malloc_stats(mspace msp) { + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + internal_malloc_stats(ms); + } + else { + USAGE_ERROR_ACTION(ms,ms); + } +} + +size_t mspace_footprint(mspace msp) { + size_t result; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->footprint; + } + USAGE_ERROR_ACTION(ms,ms); + return result; +} + + +size_t mspace_max_footprint(mspace msp) { + size_t result; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->max_footprint; + } + USAGE_ERROR_ACTION(ms,ms); + return result; +} + + +#if !NO_MALLINFO +struct mallinfo mspace_mallinfo(mspace msp) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + } + return internal_mallinfo(ms); +} +#endif /* NO_MALLINFO */ + +int mspace_mallopt(int param_number, int value) { + return change_mparam(param_number, value); +} + +#endif /* MSPACES */ + +/* -------------------- Alternative MORECORE functions ------------------- */ + +/* + Guidelines for creating a custom version of MORECORE: + + * For best performance, MORECORE should allocate in multiples of pagesize. + * MORECORE may allocate more memory than requested. (Or even less, + but this will usually result in a malloc failure.) + * MORECORE must not allocate memory when given argument zero, but + instead return one past the end address of memory from previous + nonzero call. + * For best performance, consecutive calls to MORECORE with positive + arguments should return increasing addresses, indicating that + space has been contiguously extended. + * Even though consecutive calls to MORECORE need not return contiguous + addresses, it must be OK for malloc'ed chunks to span multiple + regions in those cases where they do happen to be contiguous. + * MORECORE need not handle negative arguments -- it may instead + just return MFAIL when given negative arguments. + Negative arguments are always multiples of pagesize. MORECORE + must not misinterpret negative args as large positive unsigned + args. You can suppress all such calls from even occurring by defining + MORECORE_CANNOT_TRIM, + + As an example alternative MORECORE, here is a custom allocator + kindly contributed for pre-OSX macOS. It uses virtually but not + necessarily physically contiguous non-paged memory (locked in, + present and won't get swapped out). You can use it by uncommenting + this section, adding some #includes, and setting up the appropriate + defines above: + + #define MORECORE osMoreCore + + There is also a shutdown routine that should somehow be called for + cleanup upon program exit. + + #define MAX_POOL_ENTRIES 100 + #define MINIMUM_MORECORE_SIZE (64 * 1024U) + static int next_os_pool; + void *our_os_pools[MAX_POOL_ENTRIES]; + + void *osMoreCore(int size) + { + void *ptr = 0; + static void *sbrk_top = 0; + + if (size > 0) + { + if (size < MINIMUM_MORECORE_SIZE) + size = MINIMUM_MORECORE_SIZE; + if (CurrentExecutionLevel() == kTaskLevel) + ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); + if (ptr == 0) + { + return (void *) MFAIL; + } + // save ptrs so they can be freed during cleanup + our_os_pools[next_os_pool] = ptr; + next_os_pool++; + ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); + sbrk_top = (char *) ptr + size; + return ptr; + } + else if (size < 0) + { + // we don't currently support shrink behavior + return (void *) MFAIL; + } + else + { + return sbrk_top; + } + } + + // cleanup any allocated memory pools + // called as last thing before shutting down driver + + void osCleanupMem(void) + { + void **ptr; + + for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) + if (*ptr) + { + PoolDeallocate(*ptr); + *ptr = 0; + } + } + +*/ + + +/* ----------------------------------------------------------------------- +History: + V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) + * Add max_footprint functions + * Ensure all appropriate literals are size_t + * Fix conditional compilation problem for some #define settings + * Avoid concatenating segments with the one provided + in create_mspace_with_base + * Rename some variables to avoid compiler shadowing warnings + * Use explicit lock initialization. + * Better handling of sbrk interference. + * Simplify and fix segment insertion, trimming and mspace_destroy + * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x + * Thanks especially to Dennis Flanagan for help on these. + + V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) + * Fix memalign brace error. + + V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) + * Fix improper #endif nesting in C++ + * Add explicit casts needed for C++ + + V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) + * Use trees for large bins + * Support mspaces + * Use segments to unify sbrk-based and mmap-based system allocation, + removing need for emulation on most platforms without sbrk. + * Default safety checks + * Optional footer checks. Thanks to William Robertson for the idea. + * Internal code refactoring + * Incorporate suggestions and platform-specific changes. + Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, + Aaron Bachmann, Emery Berger, and others. + * Speed up non-fastbin processing enough to remove fastbins. + * Remove useless cfree() to avoid conflicts with other apps. + * Remove internal memcpy, memset. Compilers handle builtins better. + * Remove some options that no one ever used and rename others. + + V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) + * Fix malloc_state bitmap array misdeclaration + + V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) + * Allow tuning of FIRST_SORTED_BIN_SIZE + * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. + * Better detection and support for non-contiguousness of MORECORE. + Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger + * Bypass most of malloc if no frees. Thanks To Emery Berger. + * Fix freeing of old top non-contiguous chunk im sysmalloc. + * Raised default trim and map thresholds to 256K. + * Fix mmap-related #defines. Thanks to Lubos Lunak. + * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. + * Branch-free bin calculation + * Default trim and mmap thresholds now 256K. + + V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) + * Introduce independent_comalloc and independent_calloc. + Thanks to Michael Pachos for motivation and help. + * Make optional .h file available + * Allow > 2GB requests on 32bit systems. + * new WIN32 sbrk, mmap, munmap, lock code from . + Thanks also to Andreas Mueller , + and Anonymous. + * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for + helping test this.) + * memalign: check alignment arg + * realloc: don't try to shift chunks backwards, since this + leads to more fragmentation in some programs and doesn't + seem to help in any others. + * Collect all cases in malloc requiring system memory into sysmalloc + * Use mmap as backup to sbrk + * Place all internal state in malloc_state + * Introduce fastbins (although similar to 2.5.1) + * Many minor tunings and cosmetic improvements + * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK + * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS + Thanks to Tony E. Bennett and others. + * Include errno.h to support default failure action. + + V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) + * return null for negative arguments + * Added Several WIN32 cleanups from Martin C. Fong + * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' + (e.g. WIN32 platforms) + * Cleanup header file inclusion for WIN32 platforms + * Cleanup code to avoid Microsoft Visual C++ compiler complaints + * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing + memory allocation routines + * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) + * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to + usage of 'assert' in non-WIN32 code + * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to + avoid infinite loop + * Always call 'fREe()' rather than 'free()' + + V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) + * Fixed ordering problem with boundary-stamping + + V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) + * Added pvalloc, as recommended by H.J. Liu + * Added 64bit pointer support mainly from Wolfram Gloger + * Added anonymously donated WIN32 sbrk emulation + * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen + * malloc_extend_top: fix mask error that caused wastage after + foreign sbrks + * Add linux mremap support code from HJ Liu + + V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) + * Integrated most documentation with the code. + * Add support for mmap, with help from + Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Use last_remainder in more cases. + * Pack bins using idea from colin@nyx10.cs.du.edu + * Use ordered bins instead of best-fit threshold + * Eliminate block-local decls to simplify tracing and debugging. + * Support another case of realloc via move into top + * Fix error occurring when initial sbrk_base not word-aligned. + * Rely on page size for units instead of SBRK_UNIT to + avoid surprises about sbrk alignment conventions. + * Add mallinfo, mallopt. Thanks to Raymond Nijssen + (raymond@es.ele.tue.nl) for the suggestion. + * Add `pad' argument to malloc_trim and top_pad mallopt parameter. + * More precautions for cases where other routines call sbrk, + courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Added macros etc., allowing use in linux libc from + H.J. Lu (hjl@gnu.ai.mit.edu) + * Inverted this history list + + V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) + * Re-tuned and fixed to behave more nicely with V2.6.0 changes. + * Removed all preallocation code since under current scheme + the work required to undo bad preallocations exceeds + the work saved in good cases for most test programs. + * No longer use return list or unconsolidated bins since + no scheme using them consistently outperforms those that don't + given above changes. + * Use best fit for very large chunks to prevent some worst-cases. + * Added some support for debugging + + V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) + * Removed footers when chunks are in use. Thanks to + Paul Wilson (wilson@cs.texas.edu) for the suggestion. + + V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) + * Added malloc_trim, with help from Wolfram Gloger + (wmglo@Dent.MED.Uni-Muenchen.DE). + + V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) + + V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) + * realloc: try to expand in both directions + * malloc: swap order of clean-bin strategy; + * realloc: only conditionally expand backwards + * Try not to scavenge used bins + * Use bin counts as a guide to preallocation + * Occasionally bin return list chunks in first scan + * Add a few optimizations from colin@nyx10.cs.du.edu + + V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) + * faster bin computation & slightly different binning + * merged all consolidations to one part of malloc proper + (eliminating old malloc_find_space & malloc_clean_bin) + * Scan 2 returns chunks (not just 1) + * Propagate failure in realloc if malloc returns 0 + * Add stuff to allow compilation on non-ANSI compilers + from kpv@research.att.com + + V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) + * removed potential for odd address access in prev_chunk + * removed dependency on getpagesize.h + * misc cosmetics and a bit more internal documentation + * anticosmetics: mangled names in macros to evade debugger strangeness + * tested on sparc, hp-700, dec-mips, rs6000 + with gcc & native cc (hp, dec only) allowing + Detlefs & Zorn comparison study (in SIGPLAN Notices.) + + Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) + * Based loosely on libg++-1.2X malloc. (It retains some of the overall + structure of old version, but most details differ.) + +*/ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/eabi.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/eabi.S new file mode 100644 index 0000000000..379ea4bb0a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/eabi.S @@ -0,0 +1,128 @@ +/* ----------------------------------------------------------------------- + eabi.S - Copyright (c) 2004 Anthony Green + + FR-V Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .globl ffi_prep_args_EABI + + .text + .p2align 4 + .globl ffi_call_EABI + .type ffi_call_EABI, @function + + # gr8 : ffi_prep_args + # gr9 : &ecif + # gr10: cif->bytes + # gr11: fig->flags + # gr12: ecif.rvalue + # gr13: fn + +ffi_call_EABI: + addi sp, #-80, sp + sti fp, @(sp, #24) + addi sp, #24, fp + movsg lr, gr5 + + /* Make room for the new arguments. */ + /* subi sp, fp, gr10 */ + + /* Store return address and incoming args on stack. */ + sti gr5, @(fp, #8) + sti gr8, @(fp, #-4) + sti gr9, @(fp, #-8) + sti gr10, @(fp, #-12) + sti gr11, @(fp, #-16) + sti gr12, @(fp, #-20) + sti gr13, @(fp, #-24) + + sub sp, gr10, sp + + /* Call ffi_prep_args. */ + ldi @(fp, #-4), gr4 + addi sp, #0, gr8 + ldi @(fp, #-8), gr9 +#ifdef __FRV_FDPIC__ + ldd @(gr4, gr0), gr14 + calll @(gr14, gr0) +#else + calll @(gr4, gr0) +#endif + + /* ffi_prep_args returns the new stack pointer. */ + mov gr8, gr4 + + ldi @(sp, #0), gr8 + ldi @(sp, #4), gr9 + ldi @(sp, #8), gr10 + ldi @(sp, #12), gr11 + ldi @(sp, #16), gr12 + ldi @(sp, #20), gr13 + + /* Always copy the return value pointer into the hidden + parameter register. This is only strictly necessary + when we're returning an aggregate type, but it doesn't + hurt to do this all the time, and it saves a branch. */ + ldi @(fp, #-20), gr3 + + /* Use the ffi_prep_args return value for the new sp. */ + mov gr4, sp + + /* Call the target function. */ + ldi @(fp, -24), gr4 +#ifdef __FRV_FDPIC__ + ldd @(gr4, gr0), gr14 + calll @(gr14, gr0) +#else + calll @(gr4, gr0) +#endif + + /* Store the result. */ + ldi @(fp, #-16), gr10 /* fig->flags */ + ldi @(fp, #-20), gr4 /* ecif.rvalue */ + + /* Is the return value stored in two registers? */ + cmpi gr10, #8, icc0 + bne icc0, 0, .L2 + /* Yes, save them. */ + sti gr8, @(gr4, #0) + sti gr9, @(gr4, #4) + bra .L3 +.L2: + /* Is the return value a structure? */ + cmpi gr10, #-1, icc0 + beq icc0, 0, .L3 + /* No, save a 4 byte return value. */ + sti gr8, @(gr4, #0) +.L3: + + /* Restore the stack, and return. */ + ldi @(fp, 8), gr5 + ld @(fp, gr0), fp + addi sp,#80,sp + jmpl @(gr5,gr0) + .size ffi_call_EABI, .-ffi_call_EABI + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffi.c new file mode 100644 index 0000000000..62ae65263d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffi.c @@ -0,0 +1,292 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2004 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2008 Red Hat, Inc. + + FR-V Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void *ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + register int count = 0; + + p_argv = ecif->avalue; + argp = stack; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + z = sizeof(void*); + *(void **) argp = *p_argv; + } + /* if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (count > 24) + { + // This is going on the stack. Turn it into a double. + *(double *) argp = (double) *(float*)(* p_argv); + z = sizeof(double); + } + else + *(void **) argp = *(void **)(* p_argv); + } */ + else if (z < sizeof(int)) + { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof(int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + count += z; + } + + return (stack + ((count > 24) ? 24 : ALIGN_DOWN(count, 8))); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = -1; + else + cif->flags = cif->rtype->size; + + cif->bytes = FFI_ALIGN (cif->bytes, 8); + + return FFI_OK; +} + +extern void ffi_call_EABI(void *(*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, + unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + + switch (cif->abi) + { + case FFI_EABI: + ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + unsigned arg4, unsigned arg5, unsigned arg6) +{ + /* This function is called by a trampoline. The trampoline stows a + pointer to the ffi_closure object in gr7. We must save this + pointer in a place that will persist while we do our work. */ + register ffi_closure *creg __asm__ ("gr7"); + ffi_closure *closure = creg; + + /* Arguments that don't fit in registers are found on the stack + at a fixed offset above the current frame pointer. */ + register char *frame_pointer __asm__ ("fp"); + char *stack_args = frame_pointer + 16; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { arg1, arg2, arg3, arg4, arg5, arg6 }; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int i; + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + avalue[i] = ptr; + break; + case FFI_TYPE_STRUCT: + avalue[i] = *(void**)ptr; + break; + default: + /* This is an 8-byte value. */ + avalue[i] = ptr; + ptr += 4; + break; + } + ptr += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + if (ptr == ((char *)register_args + (6*4))) + ptr = stack_args; + } + + /* Invoke the closure. */ + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + /* The caller allocates space for the return structure, and + passes a pointer to this space in gr3. Use this value directly + as the return value. */ + register void *return_struct_ptr __asm__("gr3"); + (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data); + } + else + { + /* Allocate space for the return value and call the function. */ + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + + /* Functions return 4-byte or smaller results in gr8. 8-byte + values also use gr9. We fill the both, even for small return + values, just to avoid a branch. */ + asm ("ldi @(%0, #0), gr8" : : "r" (&rvalue)); + asm ("ldi @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1])); + } +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long fn = (long) ffi_closure_eabi; + unsigned long cls = (long) codeloc; +#ifdef __FRV_FDPIC__ + register void *got __asm__("gr15"); +#endif + int i; + + fn = (unsigned long) ffi_closure_eabi; + +#ifdef __FRV_FDPIC__ + tramp[0] = &((unsigned int *)codeloc)[2]; + tramp[1] = got; + tramp[2] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ + tramp[3] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ + tramp[4] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ + tramp[5] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ + tramp[6] = 0x9cc86000; /* ldi @(gr6, #0), gr14 */ + tramp[7] = 0x8030e000; /* jmpl @(gr14, gr0) */ +#else + tramp[0] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ + tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ + tramp[2] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ + tramp[3] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ + tramp[4] = 0x80300006; /* jmpl @(gr0, gr6) */ +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Cache flushing. */ + for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++) + __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i), + "r" (codeloc)); + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffitarget.h new file mode 100644 index 0000000000..d42540e53d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/frv/ffitarget.h @@ -0,0 +1,62 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2004 Red Hat, Inc. + Target configuration macros for FR-V + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_EABI, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_EABI +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#ifdef __FRV_FDPIC__ +/* Trampolines are 8 4-byte instructions long. */ +#define FFI_TRAMPOLINE_SIZE (8*4) +#else +/* Trampolines are 5 4-byte instructions long. */ +#define FFI_TRAMPOLINE_SIZE (5*4) +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffi.c new file mode 100644 index 0000000000..b1d04c3e74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffi.c @@ -0,0 +1,604 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. + Copyright (c) 2000 Hewlett Packard Company + Copyright (c) 2011 Anthony Green + + IA64 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include + +#include "ia64_flags.h" + +/* A 64-bit pointer value. In LP64 mode, this is effectively a plain + pointer. In ILP32 mode, it's a pointer that's been extended to + 64 bits by "addp4". */ +typedef void *PTR64 __attribute__((mode(DI))); + +/* Memory image of fp register contents. This is the implementation + specific format used by ldf.fill/stf.spill. All we care about is + that it wants a 16 byte aligned slot. */ +typedef struct +{ + UINT64 x[2] __attribute__((aligned(16))); +} fpreg; + + +/* The stack layout given to ffi_call_unix and ffi_closure_unix_inner. */ + +struct ia64_args +{ + fpreg fp_regs[8]; /* Contents of 8 fp arg registers. */ + UINT64 gp_regs[8]; /* Contents of 8 gp arg registers. */ + UINT64 other_args[]; /* Arguments passed on stack, variable size. */ +}; + + +/* Adjust ADDR, a pointer to an 8 byte slot, to point to the low LEN bytes. */ + +static inline void * +endian_adjust (void *addr, size_t len) +{ +#ifdef __BIG_ENDIAN__ + return addr + (8 - len); +#else + return addr; +#endif +} + +/* Store VALUE to ADDR in the current cpu implementation's fp spill format. + This is a macro instead of a function, so that it works for all 3 floating + point types without type conversions. Type conversion to long double breaks + the denorm support. */ + +#define stf_spill(addr, value) \ + asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); + +/* Load a value from ADDR, which is in the current cpu implementation's + fp spill format. As above, this must also be a macro. */ + +#define ldf_fill(result, addr) \ + asm ("ldf.fill %0 = %1%P1" : "=f"(result) : "m"(*addr)); + +/* Return the size of the C type associated with with TYPE. Which will + be one of the FFI_IA64_TYPE_HFA_* values. */ + +static size_t +hfa_type_size (int type) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + return sizeof(float); + case FFI_IA64_TYPE_HFA_DOUBLE: + return sizeof(double); + case FFI_IA64_TYPE_HFA_LDOUBLE: + return sizeof(__float80); + default: + abort (); + } +} + +/* Load from ADDR a value indicated by TYPE. Which will be one of + the FFI_IA64_TYPE_HFA_* values. */ + +static void +hfa_type_load (fpreg *fpaddr, int type, void *addr) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + stf_spill (fpaddr, *(float *) addr); + return; + case FFI_IA64_TYPE_HFA_DOUBLE: + stf_spill (fpaddr, *(double *) addr); + return; + case FFI_IA64_TYPE_HFA_LDOUBLE: + stf_spill (fpaddr, *(__float80 *) addr); + return; + default: + abort (); + } +} + +/* Load VALUE into ADDR as indicated by TYPE. Which will be one of + the FFI_IA64_TYPE_HFA_* values. */ + +static void +hfa_type_store (int type, void *addr, fpreg *fpaddr) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + { + float result; + ldf_fill (result, fpaddr); + *(float *) addr = result; + break; + } + case FFI_IA64_TYPE_HFA_DOUBLE: + { + double result; + ldf_fill (result, fpaddr); + *(double *) addr = result; + break; + } + case FFI_IA64_TYPE_HFA_LDOUBLE: + { + __float80 result; + ldf_fill (result, fpaddr); + *(__float80 *) addr = result; + break; + } + default: + abort (); + } +} + +/* Is TYPE a struct containing floats, doubles, or extended doubles, + all of the same fp type? If so, return the element type. Return + FFI_TYPE_VOID if not. */ + +static int +hfa_element_type (ffi_type *type, int nested) +{ + int element = FFI_TYPE_VOID; + + switch (type->type) + { + case FFI_TYPE_FLOAT: + /* We want to return VOID for raw floating-point types, but the + synthetic HFA type if we're nested within an aggregate. */ + if (nested) + element = FFI_IA64_TYPE_HFA_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + /* Similarly. */ + if (nested) + element = FFI_IA64_TYPE_HFA_DOUBLE; + break; + + case FFI_TYPE_LONGDOUBLE: + /* Similarly, except that that HFA is true for double extended, + but not quad precision. Both have sizeof == 16, so tell the + difference based on the precision. */ + if (LDBL_MANT_DIG == 64 && nested) + element = FFI_IA64_TYPE_HFA_LDOUBLE; + break; + + case FFI_TYPE_STRUCT: + { + ffi_type **ptr = &type->elements[0]; + + for (ptr = &type->elements[0]; *ptr ; ptr++) + { + int sub_element = hfa_element_type (*ptr, 1); + if (sub_element == FFI_TYPE_VOID) + return FFI_TYPE_VOID; + + if (element == FFI_TYPE_VOID) + element = sub_element; + else if (element != sub_element) + return FFI_TYPE_VOID; + } + } + break; + + default: + return FFI_TYPE_VOID; + } + + return element; +} + + +/* Perform machine dependent cif processing. */ + +static ffi_status +ffi_prep_cif_machdep_core(ffi_cif *cif) +{ + int flags; + + /* Adjust cif->bytes to include space for the bits of the ia64_args frame + that precedes the integer register portion. The estimate that the + generic bits did for the argument space required is good enough for the + integer component. */ + cif->bytes += offsetof(struct ia64_args, gp_regs[0]); + if (cif->bytes < sizeof(struct ia64_args)) + cif->bytes = sizeof(struct ia64_args); + + /* Set the return type flag. */ + flags = cif->rtype->type; + switch (cif->rtype->type) + { + case FFI_TYPE_LONGDOUBLE: + /* Leave FFI_TYPE_LONGDOUBLE as meaning double extended precision, + and encode quad precision as a two-word integer structure. */ + if (LDBL_MANT_DIG != 64) + flags = FFI_IA64_TYPE_SMALL_STRUCT | (16 << 8); + break; + + case FFI_TYPE_STRUCT: + { + size_t size = cif->rtype->size; + int hfa_type = hfa_element_type (cif->rtype, 0); + + if (hfa_type != FFI_TYPE_VOID) + { + size_t nelts = size / hfa_type_size (hfa_type); + if (nelts <= 8) + flags = hfa_type | (size << 8); + } + else + { + if (size <= 32) + flags = FFI_IA64_TYPE_SMALL_STRUCT | (size << 8); + } + } + break; + + default: + break; + } + cif->flags = flags; + + return FFI_OK; +} + +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + cif->nfixedargs = cif->nargs; + return ffi_prep_cif_machdep_core(cif); +} + +ffi_status +ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs MAYBE_UNUSED) +{ + cif->nfixedargs = nfixedargs; + return ffi_prep_cif_machdep_core(cif); +} + +extern int ffi_call_unix (struct ia64_args *, PTR64, void (*)(void), UINT64); + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + struct ia64_args *stack; + long i, avn, gpcount, fpcount; + ffi_type **p_arg; + + FFI_ASSERT (cif->abi == FFI_UNIX); + + /* If we have no spot for a return value, make one. */ + if (rvalue == NULL && cif->rtype->type != FFI_TYPE_VOID) + rvalue = alloca (cif->rtype->size); + + /* Allocate the stack frame. */ + stack = alloca (cif->bytes); + + gpcount = fpcount = 0; + avn = cif->nargs; + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + stack->gp_regs[gpcount++] = *(SINT8 *)avalue[i]; + break; + case FFI_TYPE_UINT8: + stack->gp_regs[gpcount++] = *(UINT8 *)avalue[i]; + break; + case FFI_TYPE_SINT16: + stack->gp_regs[gpcount++] = *(SINT16 *)avalue[i]; + break; + case FFI_TYPE_UINT16: + stack->gp_regs[gpcount++] = *(UINT16 *)avalue[i]; + break; + case FFI_TYPE_SINT32: + stack->gp_regs[gpcount++] = *(SINT32 *)avalue[i]; + break; + case FFI_TYPE_UINT32: + stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i]; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i]; + break; + + case FFI_TYPE_POINTER: + stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i]; + break; + + case FFI_TYPE_FLOAT: + if (gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]); + { + UINT32 tmp; + memcpy (&tmp, avalue[i], sizeof (UINT32)); + stack->gp_regs[gpcount++] = tmp; + } + break; + + case FFI_TYPE_DOUBLE: + if (gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]); + memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64)); + break; + + case FFI_TYPE_LONGDOUBLE: + if (gpcount & 1) + gpcount++; + if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]); + memcpy (&stack->gp_regs[gpcount], avalue[i], 16); + gpcount += 2; + break; + + case FFI_TYPE_STRUCT: + { + size_t size = (*p_arg)->size; + size_t align = (*p_arg)->alignment; + int hfa_type = hfa_element_type (*p_arg, 0); + + FFI_ASSERT (align <= 16); + if (align == 16 && (gpcount & 1)) + gpcount++; + + if (hfa_type != FFI_TYPE_VOID) + { + size_t hfa_size = hfa_type_size (hfa_type); + size_t offset = 0; + size_t gp_offset = gpcount * 8; + + while (fpcount < 8 + && offset < size + && gp_offset < 8 * 8) + { + hfa_type_load (&stack->fp_regs[fpcount], hfa_type, + avalue[i] + offset); + offset += hfa_size; + gp_offset += hfa_size; + fpcount += 1; + } + } + + memcpy (&stack->gp_regs[gpcount], avalue[i], size); + gpcount += (size + 7) / 8; + } + break; + + default: + abort (); + } + } + + ffi_call_unix (stack, rvalue, fn, cif->flags); +} + +/* Closures represent a pair consisting of a function pointer, and + some user data. A closure is invoked by reinterpreting the closure + as a function pointer, and branching to it. Thus we can make an + interpreted function callable as a C function: We turn the + interpreter itself, together with a pointer specifying the + interpreted procedure, into a closure. + + For IA64, function pointer are already pairs consisting of a code + pointer, and a gp pointer. The latter is needed to access global + variables. Here we set up such a pair as the first two words of + the closure (in the "trampoline" area), but we replace the gp + pointer with a pointer to the closure itself. We also add the real + gp pointer to the closure. This allows the function entry code to + both retrieve the user data, and to restore the correct gp pointer. */ + +extern void ffi_closure_unix (); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + /* The layout of a function descriptor. A C function pointer really + points to one of these. */ + struct ia64_fd + { + UINT64 code_pointer; + UINT64 gp; + }; + + struct ffi_ia64_trampoline_struct + { + UINT64 code_pointer; /* Pointer to ffi_closure_unix. */ + UINT64 fake_gp; /* Pointer to closure, installed as gp. */ + UINT64 real_gp; /* Real gp value. */ + }; + + struct ffi_ia64_trampoline_struct *tramp; + struct ia64_fd *fd; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp; + fd = (struct ia64_fd *)(void *)ffi_closure_unix; + + tramp->code_pointer = fd->code_pointer; + tramp->real_gp = fd->gp; + tramp->fake_gp = (UINT64)(PTR64)codeloc; + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + + +UINT64 +ffi_closure_unix_inner (ffi_closure *closure, struct ia64_args *stack, + void *rvalue, void *r8) +{ + ffi_cif *cif; + void **avalue; + ffi_type **p_arg; + long i, avn, gpcount, fpcount, nfixedargs; + + cif = closure->cif; + avn = cif->nargs; + nfixedargs = cif->nfixedargs; + avalue = alloca (avn * sizeof (void *)); + + /* If the structure return value is passed in memory get that location + from r8 so as to pass the value directly back to the caller. */ + if (cif->flags == FFI_TYPE_STRUCT) + rvalue = r8; + + gpcount = fpcount = 0; + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + int named = i < nfixedargs; + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 1); + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 2); + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 4); + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + avalue[i] = &stack->gp_regs[gpcount++]; + break; + case FFI_TYPE_POINTER: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], sizeof(void*)); + break; + + case FFI_TYPE_FLOAT: + if (named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + float result; + avalue[i] = addr; + ldf_fill (result, addr); + *(float *)addr = result; + } + else + avalue[i] = endian_adjust(&stack->gp_regs[gpcount], 4); + gpcount++; + break; + + case FFI_TYPE_DOUBLE: + if (named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + double result; + avalue[i] = addr; + ldf_fill (result, addr); + *(double *)addr = result; + } + else + avalue[i] = &stack->gp_regs[gpcount]; + gpcount++; + break; + + case FFI_TYPE_LONGDOUBLE: + if (gpcount & 1) + gpcount++; + if (LDBL_MANT_DIG == 64 && named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + __float80 result; + avalue[i] = addr; + ldf_fill (result, addr); + *(__float80 *)addr = result; + } + else + avalue[i] = &stack->gp_regs[gpcount]; + gpcount += 2; + break; + + case FFI_TYPE_STRUCT: + { + size_t size = (*p_arg)->size; + size_t align = (*p_arg)->alignment; + int hfa_type = hfa_element_type (*p_arg, 0); + + FFI_ASSERT (align <= 16); + if (align == 16 && (gpcount & 1)) + gpcount++; + + if (hfa_type != FFI_TYPE_VOID) + { + size_t hfa_size = hfa_type_size (hfa_type); + size_t offset = 0; + size_t gp_offset = gpcount * 8; + void *addr = alloca (size); + + avalue[i] = addr; + + while (fpcount < 8 + && offset < size + && gp_offset < 8 * 8) + { + hfa_type_store (hfa_type, addr + offset, + &stack->fp_regs[fpcount]); + offset += hfa_size; + gp_offset += hfa_size; + fpcount += 1; + } + + if (offset < size) + memcpy (addr + offset, (char *)stack->gp_regs + gp_offset, + size - offset); + } + else + avalue[i] = &stack->gp_regs[gpcount]; + + gpcount += (size + 7) / 8; + } + break; + + default: + abort (); + } + } + + closure->fun (cif, rvalue, avalue, closure->user_data); + + return cif->flags; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffitarget.h new file mode 100644 index 0000000000..fd5b9a0ee1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ffitarget.h @@ -0,0 +1,56 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for IA-64. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long long ffi_arg; +typedef signed long long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_UNIX, /* Linux and all Unix variants use the same conventions */ + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 /* Really the following struct, which */ + /* can be interpreted as a C function */ + /* descriptor: */ +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ia64_flags.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ia64_flags.h new file mode 100644 index 0000000000..9d652cef14 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/ia64_flags.h @@ -0,0 +1,40 @@ +/* ----------------------------------------------------------------------- + ia64_flags.h - Copyright (c) 2000 Hewlett Packard Company + + IA64/unix Foreign Function Interface + + Original author: Hans Boehm, HP Labs + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +/* "Type" codes used between assembly and C. When used as a part of + a cfi->flags value, the low byte will be these extra type codes, + and bits 8-31 will be the actual size of the type. */ + +/* Small structures containing N words in integer registers. */ +#define FFI_IA64_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 1) + +/* Homogeneous Floating Point Aggregates (HFAs) which are returned + in FP registers. */ +#define FFI_IA64_TYPE_HFA_FLOAT (FFI_TYPE_LAST + 2) +#define FFI_IA64_TYPE_HFA_DOUBLE (FFI_TYPE_LAST + 3) +#define FFI_IA64_TYPE_HFA_LDOUBLE (FFI_TYPE_LAST + 4) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/unix.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/unix.S new file mode 100644 index 0000000000..e2547e02b3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/ia64/unix.S @@ -0,0 +1,567 @@ +/* ----------------------------------------------------------------------- + unix.S - Copyright (c) 1998, 2008 Red Hat, Inc. + Copyright (c) 2000 Hewlett Packard Company + + IA64/unix Foreign Function Interface + + Primary author: Hans Boehm, HP Labs + + Loosely modeled on Cygnus code for other platforms. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "ia64_flags.h" + + .pred.safe_across_calls p1-p5,p16-p63 +.text + +/* int ffi_call_unix (struct ia64_args *stack, PTR64 rvalue, + void (*fn)(void), int flags); + */ + + .align 16 + .global ffi_call_unix + .proc ffi_call_unix +ffi_call_unix: + .prologue + /* Bit o trickiness. We actually share a stack frame with ffi_call. + Rely on the fact that ffi_call uses a vframe and don't bother + tracking one here at all. */ + .fframe 0 + .save ar.pfs, r36 // loc0 + alloc loc0 = ar.pfs, 4, 3, 8, 0 + .save rp, loc1 + mov loc1 = b0 + .body + add r16 = 16, in0 + mov loc2 = gp + mov r8 = in1 + ;; + + /* Load up all of the argument registers. */ + ldf.fill f8 = [in0], 32 + ldf.fill f9 = [r16], 32 + ;; + ldf.fill f10 = [in0], 32 + ldf.fill f11 = [r16], 32 + ;; + ldf.fill f12 = [in0], 32 + ldf.fill f13 = [r16], 32 + ;; + ldf.fill f14 = [in0], 32 + ldf.fill f15 = [r16], 24 + ;; + ld8 out0 = [in0], 16 + ld8 out1 = [r16], 16 + ;; + ld8 out2 = [in0], 16 + ld8 out3 = [r16], 16 + ;; + ld8 out4 = [in0], 16 + ld8 out5 = [r16], 16 + ;; + ld8 out6 = [in0] + ld8 out7 = [r16] + ;; + + /* Deallocate the register save area from the stack frame. */ + mov sp = in0 + + /* Call the target function. */ + ld8 r16 = [in2], 8 + ;; + ld8 gp = [in2] + mov b6 = r16 + br.call.sptk.many b0 = b6 + ;; + + /* Dispatch to handle return value. */ + mov gp = loc2 + zxt1 r16 = in3 + ;; + mov ar.pfs = loc0 + addl r18 = @ltoffx(.Lst_table), gp + ;; + ld8.mov r18 = [r18], .Lst_table + mov b0 = loc1 + ;; + shladd r18 = r16, 3, r18 + ;; + ld8 r17 = [r18] + shr in3 = in3, 8 + ;; + add r17 = r17, r18 + ;; + mov b6 = r17 + br b6 + ;; + +.Lst_void: + br.ret.sptk.many b0 + ;; +.Lst_uint8: + zxt1 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint8: + sxt1 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_uint16: + zxt2 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint16: + sxt2 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_uint32: + zxt4 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint32: + sxt4 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_int64: + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_float: + stfs [in1] = f8 + br.ret.sptk.many b0 + ;; +.Lst_double: + stfd [in1] = f8 + br.ret.sptk.many b0 + ;; +.Lst_ldouble: + stfe [in1] = f8 + br.ret.sptk.many b0 + ;; + +.Lst_small_struct: + cmp.lt p6, p0 = 8, in3 + cmp.lt p7, p0 = 16, in3 + cmp.lt p8, p0 = 24, in3 + ;; + add r16 = 8, sp + add r17 = 16, sp + add r18 = 24, sp + ;; + st8 [sp] = r8 +(p6) st8 [r16] = r9 + mov out0 = in1 +(p7) st8 [r17] = r10 +(p8) st8 [r18] = r11 + mov out1 = sp + mov out2 = in3 + ;; + // ia64 software calling convention requires + // top 16 bytes of stack to be scratch space + // PLT resolver uses that scratch space at + // 'memcpy' symbol reolution time + add sp = -16, sp + br.call.sptk.many b0 = memcpy# + ;; + mov ar.pfs = loc0 + mov b0 = loc1 + mov gp = loc2 + br.ret.sptk.many b0 + +.Lst_hfa_float: + add r16 = 4, in1 + cmp.lt p6, p0 = 4, in3 + ;; + stfs [in1] = f8, 8 +(p6) stfs [r16] = f9, 8 + cmp.lt p7, p0 = 8, in3 + cmp.lt p8, p0 = 12, in3 + ;; +(p7) stfs [in1] = f10, 8 +(p8) stfs [r16] = f11, 8 + cmp.lt p9, p0 = 16, in3 + cmp.lt p10, p0 = 20, in3 + ;; +(p9) stfs [in1] = f12, 8 +(p10) stfs [r16] = f13, 8 + cmp.lt p6, p0 = 24, in3 + cmp.lt p7, p0 = 28, in3 + ;; +(p6) stfs [in1] = f14 +(p7) stfs [r16] = f15 + br.ret.sptk.many b0 + ;; + +.Lst_hfa_double: + add r16 = 8, in1 + cmp.lt p6, p0 = 8, in3 + ;; + stfd [in1] = f8, 16 +(p6) stfd [r16] = f9, 16 + cmp.lt p7, p0 = 16, in3 + cmp.lt p8, p0 = 24, in3 + ;; +(p7) stfd [in1] = f10, 16 +(p8) stfd [r16] = f11, 16 + cmp.lt p9, p0 = 32, in3 + cmp.lt p10, p0 = 40, in3 + ;; +(p9) stfd [in1] = f12, 16 +(p10) stfd [r16] = f13, 16 + cmp.lt p6, p0 = 48, in3 + cmp.lt p7, p0 = 56, in3 + ;; +(p6) stfd [in1] = f14 +(p7) stfd [r16] = f15 + br.ret.sptk.many b0 + ;; + +.Lst_hfa_ldouble: + add r16 = 16, in1 + cmp.lt p6, p0 = 16, in3 + ;; + stfe [in1] = f8, 32 +(p6) stfe [r16] = f9, 32 + cmp.lt p7, p0 = 32, in3 + cmp.lt p8, p0 = 48, in3 + ;; +(p7) stfe [in1] = f10, 32 +(p8) stfe [r16] = f11, 32 + cmp.lt p9, p0 = 64, in3 + cmp.lt p10, p0 = 80, in3 + ;; +(p9) stfe [in1] = f12, 32 +(p10) stfe [r16] = f13, 32 + cmp.lt p6, p0 = 96, in3 + cmp.lt p7, p0 = 112, in3 + ;; +(p6) stfe [in1] = f14 +(p7) stfe [r16] = f15 + br.ret.sptk.many b0 + ;; + + .endp ffi_call_unix + + .align 16 + .global ffi_closure_unix + .proc ffi_closure_unix + +#define FRAME_SIZE (8*16 + 8*8 + 8*16) + +ffi_closure_unix: + .prologue + .save ar.pfs, r40 // loc0 + alloc loc0 = ar.pfs, 8, 4, 4, 0 + .fframe FRAME_SIZE + add r12 = -FRAME_SIZE, r12 + .save rp, loc1 + mov loc1 = b0 + .save ar.unat, loc2 + mov loc2 = ar.unat + .body + + /* Retrieve closure pointer and real gp. */ +#ifdef _ILP32 + addp4 out0 = 0, gp + addp4 gp = 16, gp +#else + mov out0 = gp + add gp = 16, gp +#endif + ;; + ld8 gp = [gp] + + /* Spill all of the possible argument registers. */ + add r16 = 16 + 8*16, sp + add r17 = 16 + 8*16 + 16, sp + ;; + stf.spill [r16] = f8, 32 + stf.spill [r17] = f9, 32 + mov loc3 = gp + ;; + stf.spill [r16] = f10, 32 + stf.spill [r17] = f11, 32 + ;; + stf.spill [r16] = f12, 32 + stf.spill [r17] = f13, 32 + ;; + stf.spill [r16] = f14, 32 + stf.spill [r17] = f15, 24 + ;; + .mem.offset 0, 0 + st8.spill [r16] = in0, 16 + .mem.offset 8, 0 + st8.spill [r17] = in1, 16 + add out1 = 16 + 8*16, sp + ;; + .mem.offset 0, 0 + st8.spill [r16] = in2, 16 + .mem.offset 8, 0 + st8.spill [r17] = in3, 16 + add out2 = 16, sp + ;; + .mem.offset 0, 0 + st8.spill [r16] = in4, 16 + .mem.offset 8, 0 + st8.spill [r17] = in5, 16 + mov out3 = r8 + ;; + .mem.offset 0, 0 + st8.spill [r16] = in6 + .mem.offset 8, 0 + st8.spill [r17] = in7 + + /* Invoke ffi_closure_unix_inner for the hard work. */ + br.call.sptk.many b0 = ffi_closure_unix_inner + ;; + + /* Dispatch to handle return value. */ + mov gp = loc3 + zxt1 r16 = r8 + ;; + addl r18 = @ltoffx(.Lld_table), gp + mov ar.pfs = loc0 + ;; + ld8.mov r18 = [r18], .Lld_table + mov b0 = loc1 + ;; + shladd r18 = r16, 3, r18 + mov ar.unat = loc2 + ;; + ld8 r17 = [r18] + shr r8 = r8, 8 + ;; + add r17 = r17, r18 + add r16 = 16, sp + ;; + mov b6 = r17 + br b6 + ;; + .label_state 1 + +.Lld_void: + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_int: + .body + .copy_state 1 + ld8 r8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_float: + .body + .copy_state 1 + ldfs f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_double: + .body + .copy_state 1 + ldfd f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_ldouble: + .body + .copy_state 1 + ldfe f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_small_struct: + .body + .copy_state 1 + add r17 = 8, r16 + cmp.lt p6, p0 = 8, r8 + cmp.lt p7, p0 = 16, r8 + cmp.lt p8, p0 = 24, r8 + ;; + ld8 r8 = [r16], 16 +(p6) ld8 r9 = [r17], 16 + ;; +(p7) ld8 r10 = [r16] +(p8) ld8 r11 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_float: + .body + .copy_state 1 + add r17 = 4, r16 + cmp.lt p6, p0 = 4, r8 + ;; + ldfs f8 = [r16], 8 +(p6) ldfs f9 = [r17], 8 + cmp.lt p7, p0 = 8, r8 + cmp.lt p8, p0 = 12, r8 + ;; +(p7) ldfs f10 = [r16], 8 +(p8) ldfs f11 = [r17], 8 + cmp.lt p9, p0 = 16, r8 + cmp.lt p10, p0 = 20, r8 + ;; +(p9) ldfs f12 = [r16], 8 +(p10) ldfs f13 = [r17], 8 + cmp.lt p6, p0 = 24, r8 + cmp.lt p7, p0 = 28, r8 + ;; +(p6) ldfs f14 = [r16] +(p7) ldfs f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_double: + .body + .copy_state 1 + add r17 = 8, r16 + cmp.lt p6, p0 = 8, r8 + ;; + ldfd f8 = [r16], 16 +(p6) ldfd f9 = [r17], 16 + cmp.lt p7, p0 = 16, r8 + cmp.lt p8, p0 = 24, r8 + ;; +(p7) ldfd f10 = [r16], 16 +(p8) ldfd f11 = [r17], 16 + cmp.lt p9, p0 = 32, r8 + cmp.lt p10, p0 = 40, r8 + ;; +(p9) ldfd f12 = [r16], 16 +(p10) ldfd f13 = [r17], 16 + cmp.lt p6, p0 = 48, r8 + cmp.lt p7, p0 = 56, r8 + ;; +(p6) ldfd f14 = [r16] +(p7) ldfd f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_ldouble: + .body + .copy_state 1 + add r17 = 16, r16 + cmp.lt p6, p0 = 16, r8 + ;; + ldfe f8 = [r16], 32 +(p6) ldfe f9 = [r17], 32 + cmp.lt p7, p0 = 32, r8 + cmp.lt p8, p0 = 48, r8 + ;; +(p7) ldfe f10 = [r16], 32 +(p8) ldfe f11 = [r17], 32 + cmp.lt p9, p0 = 64, r8 + cmp.lt p10, p0 = 80, r8 + ;; +(p9) ldfe f12 = [r16], 32 +(p10) ldfe f13 = [r17], 32 + cmp.lt p6, p0 = 96, r8 + cmp.lt p7, p0 = 112, r8 + ;; +(p6) ldfe f14 = [r16] +(p7) ldfe f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + + .endp ffi_closure_unix + + .section .rodata + .align 8 +.Lst_table: + data8 @pcrel(.Lst_void) // FFI_TYPE_VOID + data8 @pcrel(.Lst_sint32) // FFI_TYPE_INT + data8 @pcrel(.Lst_float) // FFI_TYPE_FLOAT + data8 @pcrel(.Lst_double) // FFI_TYPE_DOUBLE + data8 @pcrel(.Lst_ldouble) // FFI_TYPE_LONGDOUBLE + data8 @pcrel(.Lst_uint8) // FFI_TYPE_UINT8 + data8 @pcrel(.Lst_sint8) // FFI_TYPE_SINT8 + data8 @pcrel(.Lst_uint16) // FFI_TYPE_UINT16 + data8 @pcrel(.Lst_sint16) // FFI_TYPE_SINT16 + data8 @pcrel(.Lst_uint32) // FFI_TYPE_UINT32 + data8 @pcrel(.Lst_sint32) // FFI_TYPE_SINT32 + data8 @pcrel(.Lst_int64) // FFI_TYPE_UINT64 + data8 @pcrel(.Lst_int64) // FFI_TYPE_SINT64 + data8 @pcrel(.Lst_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lst_int64) // FFI_TYPE_POINTER + data8 @pcrel(.Lst_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lst_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lst_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lst_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lst_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE + +.Lld_table: + data8 @pcrel(.Lld_void) // FFI_TYPE_VOID + data8 @pcrel(.Lld_int) // FFI_TYPE_INT + data8 @pcrel(.Lld_float) // FFI_TYPE_FLOAT + data8 @pcrel(.Lld_double) // FFI_TYPE_DOUBLE + data8 @pcrel(.Lld_ldouble) // FFI_TYPE_LONGDOUBLE + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT8 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT8 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT16 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT16 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT32 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT32 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT64 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT64 + data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lld_int) // FFI_TYPE_POINTER + data8 @pcrel(.Lld_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/java_raw_api.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/java_raw_api.c new file mode 100644 index 0000000000..114d3e47fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/java_raw_api.c @@ -0,0 +1,374 @@ +/* ----------------------------------------------------------------------- + java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc. + + Cloned from raw_api.c + + Raw_api.c author: Kresten Krab Thorup + Java_raw_api.c author: Hans-J. Boehm + + $Id $ + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +/* This defines a Java- and 64-bit specific variant of the raw API. */ +/* It assumes that "raw" argument blocks look like Java stacks on a */ +/* 64-bit machine. Arguments that can be stored in a single stack */ +/* stack slots (longs, doubles) occupy 128 bits, but only the first */ +/* 64 bits are actually used. */ + +#include +#include +#include + +#if !defined(NO_JAVA_RAW_API) + +size_t +ffi_java_raw_size (ffi_cif *cif) +{ + size_t result = 0; + int i; + + ffi_type **at = cif->arg_types; + + for (i = cif->nargs-1; i >= 0; i--, at++) + { + switch((*at) -> type) { + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + result += 2 * FFI_SIZEOF_JAVA_RAW; + break; + case FFI_TYPE_STRUCT: + /* No structure parameters in Java. */ + abort(); + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + default: + result += FFI_SIZEOF_JAVA_RAW; + } + } + + return result; +} + + +void +ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + +#if WORDS_BIGENDIAN + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + *args = (void*) ((char*)(raw++) + 3); + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + *args = (void*) ((char*)(raw++) + 2); + break; + +#if FFI_SIZEOF_JAVA_RAW == 8 + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + *args = (void *)raw; + raw += 2; + break; +#endif + + case FFI_TYPE_POINTER: + *args = (void*) &(raw++)->ptr; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + *args = raw; + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); + } + } + +#else /* WORDS_BIGENDIAN */ + +#if !PDP + + /* then assume little endian */ + for (i = 0; i < cif->nargs; i++, tp++, args++) + { +#if FFI_SIZEOF_JAVA_RAW == 8 + switch((*tp)->type) { + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + *args = (void*) raw; + raw += 2; + break; + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + default: + *args = (void*) raw++; + } +#else /* FFI_SIZEOF_JAVA_RAW != 8 */ + *args = (void*) raw; + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); +#endif /* FFI_SIZEOF_JAVA_RAW == 8 */ + } + +#else +#error "pdp endian not supported" +#endif /* ! PDP */ + +#endif /* WORDS_BIGENDIAN */ +} + +void +ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT8*) (*args); +#else + (raw++)->uint = *(UINT8*) (*args); +#endif + break; + + case FFI_TYPE_SINT8: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT8*) (*args); +#else + (raw++)->sint = *(SINT8*) (*args); +#endif + break; + + case FFI_TYPE_UINT16: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT16*) (*args); +#else + (raw++)->uint = *(UINT16*) (*args); +#endif + break; + + case FFI_TYPE_SINT16: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT16*) (*args); +#else + (raw++)->sint = *(SINT16*) (*args); +#endif + break; + + case FFI_TYPE_UINT32: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT32*) (*args); +#else + (raw++)->uint = *(UINT32*) (*args); +#endif + break; + + case FFI_TYPE_SINT32: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT32*) (*args); +#else + (raw++)->sint = *(SINT32*) (*args); +#endif + break; + + case FFI_TYPE_FLOAT: + (raw++)->flt = *(FLOAT32*) (*args); + break; + +#if FFI_SIZEOF_JAVA_RAW == 8 + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + raw->uint = *(UINT64*) (*args); + raw += 2; + break; +#endif + + case FFI_TYPE_POINTER: + (raw++)->ptr = **(void***) args; + break; + + default: +#if FFI_SIZEOF_JAVA_RAW == 8 + FFI_ASSERT(0); /* Should have covered all cases */ +#else + memcpy ((void*) raw->data, (void*)*args, (*tp)->size); + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); +#endif + } + } +} + +#if !FFI_NATIVE_RAW_API + +static void +ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue) +{ +#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 + switch (cif->rtype->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + *(UINT64 *)rvalue <<= 32; + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_INT: +#if FFI_SIZEOF_JAVA_RAW == 4 + case FFI_TYPE_POINTER: +#endif + *(SINT64 *)rvalue <<= 32; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + break; + } +#endif +} + +static void +ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue) +{ +#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 + switch (cif->rtype->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + *(UINT64 *)rvalue >>= 32; + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_INT: + *(SINT64 *)rvalue >>= 32; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + break; + } +#endif +} + +/* This is a generic definition of ffi_raw_call, to be used if the + * native system does not provide a machine-specific implementation. + * Having this, allows code to be written for the raw API, without + * the need for system-specific code to handle input in that format; + * these following couple of functions will handle the translation forth + * and back automatically. */ + +void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, + ffi_java_raw *raw) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + ffi_java_raw_to_ptrarray (cif, raw, avalue); + ffi_call (cif, fn, rvalue, avalue); + ffi_java_rvalue_to_raw (cif, rvalue); +} + +#if FFI_CLOSURES /* base system provides closures */ + +static void +ffi_java_translate_args (ffi_cif *cif, void *rvalue, + void **avalue, void *user_data) +{ + ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif)); + ffi_raw_closure *cl = (ffi_raw_closure*)user_data; + + ffi_java_ptrarray_to_raw (cif, avalue, raw); + (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data); + ffi_java_raw_to_rvalue (cif, rvalue); +} + +ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc) +{ + ffi_status status; + + status = ffi_prep_closure_loc ((ffi_closure*) cl, + cif, + &ffi_java_translate_args, + codeloc, + codeloc); + if (status == FFI_OK) + { + cl->fun = fun; + cl->user_data = user_data; + } + + return status; +} + +/* Again, here is the generic version of ffi_prep_raw_closure, which + * will install an intermediate "hub" for translation of arguments from + * the pointer-array format, to the raw format */ + +ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data) +{ + return ffi_prep_java_raw_closure_loc (cl, cif, fun, user_data, cl); +} + +#endif /* FFI_CLOSURES */ +#endif /* !FFI_NATIVE_RAW_API */ +#endif /* !NO_JAVA_RAW_API */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffi.c new file mode 100644 index 0000000000..ab8fc4e48a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffi.c @@ -0,0 +1,232 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2004 Renesas Technology + Copyright (c) 2008 Red Hat, Inc. + + M32R Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack + space has been allocated for the function's arguments. */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + unsigned int i; + int tmp; + unsigned int avn; + void **p_argv; + char *argp; + ffi_type **p_arg; + + tmp = 0; + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 8) + { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0) && (avn != 0); + i--, p_arg++) + { + size_t z; + + /* Align if necessary. */ + if (((*p_arg)->alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, (*p_arg)->alignment); + + if (avn != 0) + { + avn--; + z = (*p_arg)->size; + if (z < sizeof (int)) + { + z = sizeof (int); + + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + z = (*p_arg)->size; + if ((*p_arg)->alignment != 1) + memcpy (argp, *p_argv, z); + else + memcpy (argp + 4 - z, *p_argv, z); + z = sizeof (int); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof (int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + if (z > 8) + { + *(unsigned int *) argp = (unsigned int)(void *)(* p_argv); + z = sizeof(void *); + } + else + { + memcpy(argp, *p_argv, z); + z = 8; + } + } + else + { + /* Double or long long 64bit. */ + memcpy (argp, *p_argv, z); + } + } + p_argv++; + argp += z; + } + } + + return; +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Set the return type flag. */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4) + cif->flags = FFI_TYPE_INT; + + else if (cif->rtype->size <= 8) + cif->flags = FFI_TYPE_DOUBLE; + + else + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFI_TYPE_DOUBLE; + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have + a return value address then we need to make one. */ + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + int size = cif->rtype->size; + int align = cif->rtype->alignment; + + if (size < 4) + { + if (align == 1) + *(unsigned long *)(ecif.rvalue) <<= (4 - size) * 8; + } + else if (4 < size && size < 8) + { + if (align == 1) + { + memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); + } + else if (align == 2) + { + if (size & 1) + size += 1; + + if (size != 8) + memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); + } + } + } + break; + + default: + FFI_ASSERT(0); + break; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffitarget.h new file mode 100644 index 0000000000..6c34801982 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/ffitarget.h @@ -0,0 +1,53 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2004 Renesas Technology. + Target configuration macros for M32R. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi + { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV + } ffi_abi; +#endif + +#define FFI_CLOSURES 0 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/sysv.S new file mode 100644 index 0000000000..06b75c2263 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m32r/sysv.S @@ -0,0 +1,121 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2004 Renesas Technology + + M32R Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x)! .type CNAME(x),%function! CNAME(x): +#endif + +.text + + /* R0: ffi_prep_args */ + /* R1: &ecif */ + /* R2: cif->bytes */ + /* R3: fig->flags */ + /* sp+0: ecif.rvalue */ + /* sp+4: fn */ + + /* This assumes we are using gas. */ +ENTRY(ffi_call_SYSV) + /* Save registers. */ + push fp + push lr + push r3 + push r2 + push r1 + push r0 + mv fp, sp + + /* Make room for all of the new args. */ + sub sp, r2 + + /* Place all of the ffi_prep_args in position. */ + mv lr, r0 + mv r0, sp + /* R1 already set. */ + + /* And call. */ + jl lr + + /* Move first 4 parameters in registers... */ + ld r0, @(0,sp) + ld r1, @(4,sp) + ld r2, @(8,sp) + ld r3, @(12,sp) + + /* ...and adjust the stack. */ + ld lr, @(8,fp) + cmpi lr, #16 + bc adjust_stack + ldi lr, #16 +adjust_stack: + add sp, lr + + /* Call the function. */ + ld lr, @(28,fp) + jl lr + + /* Remove the space we pushed for the args. */ + mv sp, fp + + /* Load R2 with the pointer to storage for the return value. */ + ld r2, @(24,sp) + + /* Load R3 with the return type code. */ + ld r3, @(12,sp) + + /* If the return value pointer is NULL, assume no return value. */ + beqz r2, epilogue + + /* Return INT. */ + ldi r4, #FFI_TYPE_INT + bne r3, r4, return_double + st r0, @r2 + bra epilogue + +return_double: + /* Return DOUBLE or LONGDOUBLE. */ + ldi r4, #FFI_TYPE_DOUBLE + bne r3, r4, epilogue + st r0, @r2 + st r1, @(4,r2) + +epilogue: + pop r0 + pop r1 + pop r2 + pop r3 + pop lr + pop fp + jmp lr + +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffi.c new file mode 100644 index 0000000000..033018480c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffi.c @@ -0,0 +1,362 @@ +/* ----------------------------------------------------------------------- + ffi.c + + m68k Foreign Function Interface + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#ifdef __rtems__ +void rtems_cache_flush_multiple_data_lines( const void *, size_t ); +#else +#include +#ifdef __MINT__ +#include +#include +#else +#include +#endif +#endif + +void ffi_call_SYSV (extended_cif *, + unsigned, unsigned, + void *, void (*fn) ()); +void *ffi_prep_args (void *stack, extended_cif *ecif); +void ffi_closure_SYSV (ffi_closure *); +void ffi_closure_struct_SYSV (ffi_closure *); +unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, + void *resp, void *args); + +/* ffi_prep_args is called by the assembly routine once stack space has + been allocated for the function's arguments. */ + +void * +ffi_prep_args (void *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + void *struct_value_ptr; + + argp = stack; + + if ( +#ifdef __MINT__ + (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) || +#endif + (((ecif->cif->rtype->type == FFI_TYPE_STRUCT) + && !ecif->cif->flags))) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + i != 0; + i--, p_arg++) + { + size_t z = (*p_arg)->size; + int type = (*p_arg)->type; + + if (z < sizeof (int)) + { + switch (type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_STRUCT: +#ifdef __MINT__ + if (z == 1 || z == 2) + memcpy (argp + 2, *p_argv, z); + else + memcpy (argp, *p_argv, z); +#else + memcpy (argp + sizeof (int) - z, *p_argv, z); +#endif + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else + { + memcpy (argp, *p_argv, z); + + /* Align if necessary. */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } + + return struct_value_ptr; +} + +#define CIF_FLAGS_INT 1 +#define CIF_FLAGS_DINT 2 +#define CIF_FLAGS_FLOAT 4 +#define CIF_FLAGS_DOUBLE 8 +#define CIF_FLAGS_LDOUBLE 16 +#define CIF_FLAGS_POINTER 32 +#define CIF_FLAGS_STRUCT1 64 +#define CIF_FLAGS_STRUCT2 128 +#define CIF_FLAGS_SINT8 256 +#define CIF_FLAGS_SINT16 512 + +/* Perform machine dependent cif processing */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && + cif->rtype->elements[1]) + { + cif->flags = 0; + break; + } + + switch (cif->rtype->size) + { + case 1: +#ifdef __MINT__ + cif->flags = CIF_FLAGS_STRUCT2; +#else + cif->flags = CIF_FLAGS_STRUCT1; +#endif + break; + case 2: + cif->flags = CIF_FLAGS_STRUCT2; + break; +#ifdef __MINT__ + case 3: +#endif + case 4: + cif->flags = CIF_FLAGS_INT; + break; +#ifdef __MINT__ + case 7: +#endif + case 8: + cif->flags = CIF_FLAGS_DINT; + break; + default: + cif->flags = 0; + break; + } + break; + + case FFI_TYPE_FLOAT: + cif->flags = CIF_FLAGS_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + cif->flags = CIF_FLAGS_DOUBLE; + break; + +#if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE) + case FFI_TYPE_LONGDOUBLE: +#ifdef __MINT__ + cif->flags = 0; +#else + cif->flags = CIF_FLAGS_LDOUBLE; +#endif + break; +#endif + + case FFI_TYPE_POINTER: + cif->flags = CIF_FLAGS_POINTER; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = CIF_FLAGS_DINT; + break; + + case FFI_TYPE_SINT16: + cif->flags = CIF_FLAGS_SINT16; + break; + + case FFI_TYPE_SINT8: + cif->flags = CIF_FLAGS_SINT8; + break; + + default: + cif->flags = CIF_FLAGS_INT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && cif->rtype->size > 8) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV (&ecif, cif->bytes, cif->flags, + ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +static void +ffi_prep_incoming_args_SYSV (char *stack, void **avalue, ffi_cif *cif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; +#ifdef __MINT__ + if (cif->flags && + cif->rtype->type == FFI_TYPE_STRUCT && + (z == 1 || z == 2)) + { + *p_argv = (void *) (argp + 2); + + z = 4; + } + else + if (cif->flags && + cif->rtype->type == FFI_TYPE_STRUCT && + (z == 3 || z == 4)) + { + *p_argv = (void *) (argp); + + z = 4; + } + else +#endif + if (z <= 4) + { + *p_argv = (void *) (argp + 4 - z); + + z = 4; + } + else + { + *p_argv = (void *) argp; + + /* Align if necessary */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } +} + +unsigned int +ffi_closure_SYSV_inner (ffi_closure *closure, void *resp, void *args) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_incoming_args_SYSV(args, arg_area, cif); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + *(unsigned short *)closure->tramp = 0x207c; + *(void **)(closure->tramp + 2) = codeloc; + *(unsigned short *)(closure->tramp + 6) = 0x4ef9; + + if ( +#ifdef __MINT__ + (cif->rtype->type == FFI_TYPE_LONGDOUBLE) || +#endif + (((cif->rtype->type == FFI_TYPE_STRUCT) + && !cif->flags))) + *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV; + else + *(void **)(closure->tramp + 8) = ffi_closure_SYSV; + +#ifdef __rtems__ + rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE ); +#elif defined(__MINT__) + Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE); +#else + syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE, + FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE); +#endif + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffitarget.h new file mode 100644 index 0000000000..e81dde2b2e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/ffitarget.h @@ -0,0 +1,54 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for Motorola 68K. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/sysv.S new file mode 100644 index 0000000000..ea40f1100b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m68k/sysv.S @@ -0,0 +1,357 @@ +/* ----------------------------------------------------------------------- + + sysv.S - Copyright (c) 2012 Alan Hourihane + Copyright (c) 1998, 2012 Andreas Schwab + Copyright (c) 2008 Red Hat, Inc. + Copyright (c) 2012, 2016 Thorsten Glaser + + m68k Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +#ifdef HAVE_AS_CFI_PSEUDO_OP +#define CFI_STARTPROC() .cfi_startproc +#define CFI_OFFSET(reg,off) .cfi_offset reg,off +#define CFI_DEF_CFA(reg,off) .cfi_def_cfa reg,off +#define CFI_ENDPROC() .cfi_endproc +#else +#define CFI_STARTPROC() +#define CFI_OFFSET(reg,off) +#define CFI_DEF_CFA(reg,off) +#define CFI_ENDPROC() +#endif + +#ifdef __MINT__ +#define CALLFUNC(funcname) _ ## funcname +#else +#define CALLFUNC(funcname) funcname +#endif + + .text + + .globl CALLFUNC(ffi_call_SYSV) + .type CALLFUNC(ffi_call_SYSV),@function + .align 4 + +CALLFUNC(ffi_call_SYSV): + CFI_STARTPROC() + link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %d2,-(%sp) + CFI_OFFSET(2,-12) + + | Make room for all of the new args. + sub.l 12(%fp),%sp + + | Call ffi_prep_args + move.l 8(%fp),-(%sp) + pea 4(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_prep_args) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_prep_args@PLTPC) +#endif + addq.l #8,%sp + + | Pass pointer to struct value, if any +#ifdef __MINT__ + move.l %d0,%a1 +#else + move.l %a0,%a1 +#endif + + | Call the function + move.l 24(%fp),%a0 + jsr (%a0) + + | Remove the space we pushed for the args + add.l 12(%fp),%sp + + | Load the pointer to storage for the return value + move.l 20(%fp),%a1 + + | Load the return type code + move.l 16(%fp),%d2 + + | If the return value pointer is NULL, assume no return value. + | NOTE: On the mc68000, tst on an address register is not supported. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + cmp.w #0, %a1 +#else + tst.l %a1 +#endif + jbeq noretval + + btst #0,%d2 + jbeq retlongint + move.l %d0,(%a1) + jbra epilogue + +retlongint: + btst #1,%d2 + jbeq retfloat + move.l %d0,(%a1) + move.l %d1,4(%a1) + jbra epilogue + +retfloat: + btst #2,%d2 + jbeq retdouble +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.s %fp0,(%a1) +#else + move.l %d0,(%a1) +#endif + jbra epilogue + +retdouble: + btst #3,%d2 + jbeq retlongdouble +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.d %fp0,(%a1) +#else + move.l %d0,(%a1)+ + move.l %d1,(%a1) +#endif + jbra epilogue + +retlongdouble: + btst #4,%d2 + jbeq retpointer +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.x %fp0,(%a1) +#else + move.l %d0,(%a1)+ + move.l %d1,(%a1)+ + move.l %d2,(%a1) +#endif + jbra epilogue + +retpointer: + btst #5,%d2 + jbeq retstruct1 +#ifdef __MINT__ + move.l %d0,(%a1) +#else + move.l %a0,(%a1) +#endif + jbra epilogue + +retstruct1: + btst #6,%d2 + jbeq retstruct2 + move.b %d0,(%a1) + jbra epilogue + +retstruct2: + btst #7,%d2 + jbeq retsint8 + move.w %d0,(%a1) + jbra epilogue + +retsint8: + btst #8,%d2 + jbeq retsint16 + | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + ext.w %d0 + ext.l %d0 +#else + extb.l %d0 +#endif + move.l %d0,(%a1) + jbra epilogue + +retsint16: + btst #9,%d2 + jbeq noretval + ext.l %d0 + move.l %d0,(%a1) + +noretval: +epilogue: + move.l (%sp)+,%d2 + unlk %fp + rts + CFI_ENDPROC() + .size CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV) + + .globl CALLFUNC(ffi_closure_SYSV) + .type CALLFUNC(ffi_closure_SYSV), @function + .align 4 + +CALLFUNC(ffi_closure_SYSV): + CFI_STARTPROC() + link %fp,#-12 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + pea -12(%fp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) +#endif + + lsr.l #1,%d0 + jne 1f + jcc .Lcls_epilogue + | CIF_FLAGS_INT + move.l -12(%fp),%d0 +.Lcls_epilogue: + | no CIF_FLAGS_* + unlk %fp + rts +1: + lea -12(%fp),%a0 + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_float + | CIF_FLAGS_DINT + move.l (%a0)+,%d0 + move.l (%a0),%d1 + jra .Lcls_epilogue +.Lcls_ret_float: +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.s (%a0),%fp0 +#else + move.l (%a0),%d0 +#endif + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_ldouble + | CIF_FLAGS_DOUBLE +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.d (%a0),%fp0 +#else + move.l (%a0)+,%d0 + move.l (%a0),%d1 +#endif + jra .Lcls_epilogue +.Lcls_ret_ldouble: +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.x (%a0),%fp0 +#else + move.l (%a0)+,%d0 + move.l (%a0)+,%d1 + move.l (%a0),%d2 +#endif + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_struct1 + | CIF_FLAGS_POINTER + move.l (%a0),%a0 + move.l %a0,%d0 + jra .Lcls_epilogue +.Lcls_ret_struct1: + move.b (%a0),%d0 + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_sint8 + | CIF_FLAGS_STRUCT2 + move.w (%a0),%d0 + jra .Lcls_epilogue +.Lcls_ret_sint8: + move.l (%a0),%d0 + | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + ext.w %d0 + ext.l %d0 +#else + extb.l %d0 +#endif + jra .Lcls_epilogue +1: + | CIF_FLAGS_SINT16 + move.l (%a0),%d0 + ext.l %d0 + jra .Lcls_epilogue + CFI_ENDPROC() + + .size CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV) + + .globl CALLFUNC(ffi_closure_struct_SYSV) + .type CALLFUNC(ffi_closure_struct_SYSV), @function + .align 4 + +CALLFUNC(ffi_closure_struct_SYSV): + CFI_STARTPROC() + link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + move.l %a1,-(%sp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) +#endif + unlk %fp + rts + CFI_ENDPROC() + .size CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffi.c new file mode 100644 index 0000000000..57b344f4b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffi.c @@ -0,0 +1,400 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * m88k Foreign Function Interface + * + * This file attempts to provide all the FFI entry points which can reliably + * be implemented in C. + * + * Only OpenBSD/m88k is currently supported; other platforms (such as + * Motorola's SysV/m88k) could be supported with the following tweaks: + * + * - non-OpenBSD systems use an `outgoing parameter area' as part of the + * 88BCS calling convention, which is not supported under OpenBSD from + * release 3.6 onwards. Supporting it should be as easy as taking it + * into account when adjusting the stack, in the assembly code. + * + * - the logic deciding whether a function argument gets passed through + * registers, or on the stack, has changed several times in OpenBSD in + * edge cases (especially for structs larger than 32 bytes being passed + * by value). The code below attemps to match the logic used by the + * system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend + * fixes. + */ + +#include +#include + +#include +#include + +void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *, + void (*fn) ()); +void *ffi_prep_args (void *, extended_cif *); +void ffi_closure_OBSD (ffi_closure *); +void ffi_closure_struct_OBSD (ffi_closure *); +unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *, + char *); +void ffi_cacheflush_OBSD (unsigned int, unsigned int); + +#define CIF_FLAGS_INT (1 << 0) +#define CIF_FLAGS_DINT (1 << 1) + +/* + * Foreign Function Interface API + */ + +/* ffi_prep_args is called by the assembly routine once stack space has + been allocated for the function's arguments. */ + +void * +ffi_prep_args (void *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + char *argp, *stackp; + unsigned int *regp; + unsigned int regused; + ffi_type **p_arg; + void *struct_value_ptr; + + regp = (unsigned int *)stack; + stackp = (char *)(regp + 8); + regused = 0; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT + && !ecif->cif->flags) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + unsigned short t, a; + + z = (*p_arg)->size; + t = (*p_arg)->type; + a = (*p_arg)->alignment; + + /* + * Figure out whether the argument can be passed through registers + * or on the stack. + * The rule is that registers can only receive simple types not larger + * than 64 bits, or structs the exact size of a register and aligned to + * the size of a register. + */ + if (t == FFI_TYPE_STRUCT) + { + if (z == sizeof (int) && a == sizeof (int) && regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + else + { + if (z > sizeof (int) && regused < 8 - 1) + { + /* align to an even register pair */ + if (regused & 1) + { + regp++; + regused++; + } + } + if (regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + + /* Enforce proper stack alignment of 64-bit types */ + if (argp == stackp && a > sizeof (int)) + { + stackp = (char *) FFI_ALIGN(stackp, a); + argp = stackp; + } + + switch (t) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *(unsigned int *) argp = *(unsigned int *) *p_argv; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT (0); + } + + /* Align if necessary. */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + + /* Be careful, once all registers are filled, and about to continue + on stack, regp == stackp. Therefore the check for regused as well. */ + if (argp == (char *)regp && regused < 8) + { + regp += z / sizeof (int); + regused += z / sizeof (int); + } + else + stackp += z; + } + + return struct_value_ptr; +} + +/* Perform machine dependent cif processing */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->size == sizeof (int) && + cif->rtype->alignment == sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else + cif->flags = 0; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = CIF_FLAGS_DINT; + break; + + default: + cif->flags = CIF_FLAGS_INT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && (cif->rtype->size != sizeof (int) + || cif->rtype->alignment != sizeof (int))) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_OBSD: + ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/* + * Closure API + */ + +static void +ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp, + char *stackp) +{ + unsigned int i; + void **p_argv; + char *argp; + unsigned int regused; + ffi_type **p_arg; + + regused = 0; + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + unsigned short t, a; + + z = (*p_arg)->size; + t = (*p_arg)->type; + a = (*p_arg)->alignment; + + /* + * Figure out whether the argument has been passed through registers + * or on the stack. + * The rule is that registers can only receive simple types not larger + * than 64 bits, or structs the exact size of a register and aligned to + * the size of a register. + */ + if (t == FFI_TYPE_STRUCT) + { + if (z == sizeof (int) && a == sizeof (int) && regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + else + { + if (z > sizeof (int) && regused < 8 - 1) + { + /* align to an even register pair */ + if (regused & 1) + { + regp++; + regused++; + } + } + if (regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + + /* Enforce proper stack alignment of 64-bit types */ + if (argp == stackp && a > sizeof (int)) + { + stackp = (char *) FFI_ALIGN(stackp, a); + argp = stackp; + } + + if (z < sizeof (int) && t != FFI_TYPE_STRUCT) + *p_argv = (void *) (argp + sizeof (int) - z); + else + *p_argv = (void *) argp; + + /* Align if necessary */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + + /* Be careful, once all registers are exhausted, and about to fetch from + stack, regp == stackp. Therefore the check for regused as well. */ + if (argp == (char *)regp && regused < 8) + { + regp += z / sizeof (int); + regused += z / sizeof (int); + } + else + stackp += z; + } +} + +unsigned int +ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp, + char *stackp) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, void *codeloc) +{ + unsigned int *tramp = (unsigned int *) codeloc; + void *fn; + + FFI_ASSERT (cif->abi == FFI_OBSD); + + if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags) + fn = &ffi_closure_struct_OBSD; + else + fn = &ffi_closure_OBSD; + + /* or.u %r10, %r0, %hi16(fn) */ + tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16); + /* or.u %r13, %r0, %hi16(closure) */ + tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16); + /* or %r10, %r10, %lo16(fn) */ + tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff); + /* jmp.n %r10 */ + tramp[3] = 0xf400c40a; + /* or %r13, %r13, %lo16(closure) */ + tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff); + + ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffitarget.h new file mode 100644 index 0000000000..e52bf9fa30 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/ffitarget.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * m88k Foreign Function Interface + */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_OBSD, + FFI_DEFAULT_ABI = FFI_OBSD, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 0x14 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/obsd.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/obsd.S new file mode 100644 index 0000000000..1944a23de4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/m88k/obsd.S @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * m88k Foreign Function Interface + */ + +#define LIBFFI_ASM +#include +#include + + .text + +/* + * ffi_cacheflush_OBSD(unsigned int addr, %r2 + * unsigned int size); %r3 + */ + .align 4 + .globl ffi_cacheflush_OBSD + .type ffi_cacheflush_OBSD,@function +ffi_cacheflush_OBSD: + tb0 0, %r0, 451 + or %r0, %r0, %r0 + jmp %r1 + .size ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD + +/* + * ffi_call_OBSD(unsigned bytes, %r2 + * extended_cif *ecif, %r3 + * unsigned flags, %r4 + * void *rvalue, %r5 + * void (*fn)()); %r6 + */ + .align 4 + .globl ffi_call_OBSD + .type ffi_call_OBSD,@function +ffi_call_OBSD: + subu %r31, %r31, 32 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 32 + + | Save the few arguments we'll need after ffi_prep_args() + st.d %r4, %r31, 8 + st %r6, %r31, 16 + + | Allocate room for the image of r2-r9, and the stack space for + | the args (rounded to a 16-byte boundary) + addu %r2, %r2, (8 * 4) + 15 + clr %r2, %r2, 4<0> + subu %r31, %r31, %r2 + + | Fill register and stack image + or %r2, %r31, %r0 +#ifdef PIC + bsr ffi_prep_args#plt +#else + bsr ffi_prep_args +#endif + + | Save pointer to return struct address, if any + or %r12, %r2, %r0 + + | Get function pointer + subu %r4, %r30, 32 + ld %r1, %r4, 16 + + | Fetch the register arguments + ld.d %r2, %r31, (0 * 4) + ld.d %r4, %r31, (2 * 4) + ld.d %r6, %r31, (4 * 4) + ld.d %r8, %r31, (6 * 4) + addu %r31, %r31, (8 * 4) + + | Invoke the function + jsr %r1 + + | Restore stack now that we don't need the args anymore + subu %r31, %r30, 32 + + | Figure out what to return as the function's return value + ld %r5, %r31, 12 | rvalue + ld %r4, %r31, 8 | flags + + bcnd eq0, %r5, 9f + + bb0 0, %r4, 1f | CIF_FLAGS_INT + st %r2, %r5, 0 + br 9f + +1: + bb0 1, %r4, 1f | CIF_FLAGS_DINT + st.d %r2, %r5, 0 + br 9f + +1: +9: + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 32 + .size ffi_call_OBSD, . - ffi_call_OBSD + +/* + * ffi_closure_OBSD(ffi_closure *closure); %r13 + */ + .align 4 + .globl ffi_closure_OBSD + .type ffi_closure_OBSD, @function +ffi_closure_OBSD: + subu %r31, %r31, 16 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 16 + + | Make room on the stack for saved register arguments and return + | value + subu %r31, %r31, (8 * 4) + (2 * 4) + st.d %r2, %r31, (0 * 4) + st.d %r4, %r31, (2 * 4) + st.d %r6, %r31, (4 * 4) + st.d %r8, %r31, (6 * 4) + + | Invoke the closure function + or %r5, %r30, 0 | calling stack + addu %r4, %r31, 0 | saved registers + addu %r3, %r31, (8 * 4) | return value + or %r2, %r13, %r0 | closure +#ifdef PIC + bsr ffi_closure_OBSD_inner#plt +#else + bsr ffi_closure_OBSD_inner +#endif + + | Figure out what to return as the function's return value + bb0 0, %r2, 1f | CIF_FLAGS_INT + ld %r2, %r31, (8 * 4) + br 9f + +1: + bb0 1, %r2, 1f | CIF_FLAGS_DINT + ld.d %r2, %r31, (8 * 4) + br 9f + +1: +9: + subu %r31, %r30, 16 + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 16 + .size ffi_closure_OBSD,.-ffi_closure_OBSD + +/* + * ffi_closure_struct_OBSD(ffi_closure *closure); %r13 + */ + .align 4 + .globl ffi_closure_struct_OBSD + .type ffi_closure_struct_OBSD, @function +ffi_closure_struct_OBSD: + subu %r31, %r31, 16 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 16 + + | Make room on the stack for saved register arguments + subu %r31, %r31, (8 * 4) + st.d %r2, %r31, (0 * 4) + st.d %r4, %r31, (2 * 4) + st.d %r6, %r31, (4 * 4) + st.d %r8, %r31, (6 * 4) + + | Invoke the closure function + or %r5, %r30, 0 | calling stack + addu %r4, %r31, 0 | saved registers + or %r3, %r12, 0 | return value + or %r2, %r13, %r0 | closure +#ifdef PIC + bsr ffi_closure_OBSD_inner#plt +#else + bsr ffi_closure_OBSD_inner +#endif + + subu %r31, %r30, 16 + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 16 + .size ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffi.c new file mode 100644 index 0000000000..dfc1e399bd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffi.c @@ -0,0 +1,330 @@ +/* ---------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Imagination Technologies + + Meta Foreign Function Interface + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + `Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED `AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. +----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +/* + * ffi_prep_args is called by the assembly routine once stack space has been + * allocated for the function's arguments + */ + +unsigned int ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + /* Store return value */ + if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { + argp -= 4; + *(void **) argp = ecif->rvalue; + } + + p_argv = ecif->avalue; + + /* point to next location */ + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) + { + size_t z; + + /* Move argp to address of argument */ + z = (*p_arg)->size; + argp -= z; + + /* Align if necessary */ + argp = (char *) ALIGN_DOWN(ALIGN_DOWN(argp, (*p_arg)->alignment), 4); + + if (z < sizeof(int)) { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + case FFI_TYPE_STRUCT: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + default: + FFI_ASSERT(0); + } + } else if ( z == sizeof(int)) { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } else { + memcpy(argp, *p_argv, z); + } + } + + /* return the size of the arguments to be passed in registers, + padded to an 8 byte boundary to preserve stack alignment */ + return FFI_ALIGN(MIN(stack - argp, 6*4), 8); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + ffi_type **ptr; + unsigned i, bytes = 0; + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { + if ((*ptr)->size == 0) + return FFI_BAD_TYPEDEF; + + /* Perform a sanity check on the argument type, do this + check after the initialization. */ + FFI_ASSERT_VALID_TYPE(*ptr); + + /* Add any padding if necessary */ + if (((*ptr)->alignment - 1) & bytes) + bytes = FFI_ALIGN(bytes, (*ptr)->alignment); + + bytes += FFI_ALIGN((*ptr)->size, 4); + } + + /* Ensure arg space is aligned to an 8-byte boundary */ + bytes = FFI_ALIGN(bytes, 8); + + /* Make space for the return structure pointer */ + if (cif->rtype->type == FFI_TYPE_STRUCT) { + bytes += sizeof(void*); + + /* Ensure stack is aligned to an 8-byte boundary */ + bytes = FFI_ALIGN(bytes, 8); + } + + cif->bytes = bytes; + + /* Set the return type flag */ + switch (cif->rtype->type) { + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags = (unsigned) cif->rtype->type; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned) FFI_TYPE_SINT64; + break; + case FFI_TYPE_STRUCT: + /* Meta can store return values which are <= 64 bits */ + if (cif->rtype->size <= 4) + /* Returned to D0Re0 as 32-bit value */ + cif->flags = (unsigned)FFI_TYPE_INT; + else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8)) + /* Returned valued is stored to D1Re0|R0Re0 */ + cif->flags = (unsigned)FFI_TYPE_DOUBLE; + else + /* value stored in memory */ + cif->flags = (unsigned)FFI_TYPE_STRUCT; + break; + default: + cif->flags = (unsigned)FFI_TYPE_INT; + break; + } + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *); + +/* + * Exported in API. Entry point + * cif -> ffi_cif object + * fn -> function pointer + * rvalue -> pointer to return value + * avalue -> vector of void * pointers pointing to memory locations holding the + * arguments + */ +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT)); + ecif.cif = cif; + ecif.avalue = avalue; + + double temp; + + /* + * If the return value is a struct and we don't have a return value address + * then we need to make one + */ + + if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT)) + ecif.rvalue = alloca(cif->rtype->size); + else if (small_struct) + ecif.rvalue = &temp; + else + ecif.rvalue = rvalue; + + switch (cif->abi) { + case FFI_SYSV: + ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); + break; + default: + FFI_ASSERT(0); + break; + } + + if (small_struct) + memcpy (rvalue, &temp, cif->rtype->size); +} + +/* private members */ + +static void ffi_prep_incoming_args_SYSV (char *, void **, void **, + ffi_cif*, float *); + +void ffi_closure_SYSV (ffi_closure *); + +/* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */ +extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */ + +/* end of private members */ + +/* + * __tramp: trampoline memory location + * __fun: assembly routine + * __ctx: memory location for wrapper + * + * At this point, tramp[0] == __ctx ! + */ +void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) { + memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline)); + *(unsigned int*) &__tramp[40] = __ctx; + *(unsigned int*) &__tramp[44] = __fun; + /* This will flush the instruction cache */ + __builtin_meta2_cachewd(&__tramp[0], 1); + __builtin_meta2_cachewd(&__tramp[47], 1); +} + + + +/* the cif must already be prepared */ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + void (*closure_func)(ffi_closure*) = NULL; + + if (cif->abi == FFI_SYSV) + closure_func = &ffi_closure_SYSV; + else + return FFI_BAD_ABI; + + ffi_init_trampoline( + (unsigned char*)&closure->tramp[0], + (unsigned int)closure_func, + (unsigned int)codeloc); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + + +/* This function is jumped to by the trampoline */ +unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args) + ffi_closure *closure; + void **respp; + void *args; + void *vfp_args; +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void*)); + + /* + * This call will initialize ARG_AREA, such that each + * element in that array points to the corresponding + * value on the stack; and if the function returns + * a structure, it will re-set RESP to point to the + * structure return address. + */ + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); + + (closure->fun) ( cif, *respp, arg_area, closure->user_data); + + return cif->flags; +} + +static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif, + float *vfp_stack) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + /* stack points to original arguments */ + argp = stack; + + /* Store return value */ + if ( cif->flags == FFI_TYPE_STRUCT ) { + argp -= 4; + *rvalue = *(void **) argp; + } + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { + size_t z; + size_t alignment; + + alignment = (*p_arg)->alignment; + if (alignment < 4) + alignment = 4; + if ((alignment - 1) & (unsigned)argp) + argp = (char *) FFI_ALIGN(argp, alignment); + + z = (*p_arg)->size; + *p_argv = (void*) argp; + p_argv++; + argp -= z; + } + return; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffitarget.h new file mode 100644 index 0000000000..7b9dbebca8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/ffitarget.h @@ -0,0 +1,53 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd. + Target configuration macros for Meta + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_DEFAULT_ABI = FFI_SYSV, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1, +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 48 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/sysv.S new file mode 100644 index 0000000000..b4b2a3b26b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/metag/sysv.S @@ -0,0 +1,311 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2013 Imagination Technologies Ltd. + + Meta Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +/* Use the right prefix for global labels. */ +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else +#define CNAME(x) x +#endif +#define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x): +#endif + +#ifdef __ELF__ +#define LSYM(x) .x +#else +#define LSYM(x) x +#endif + +.macro call_reg x= + .text + .balign 4 + mov D1RtP, \x + swap D1RtP, PC +.endm + +! Save register arguments +.macro SAVE_ARGS + .text + .balign 4 + setl [A0StP++], D0Ar6, D1Ar5 + setl [A0StP++], D0Ar4, D1Ar3 + setl [A0StP++], D0Ar2, D1Ar1 +.endm + +! Save retrun, frame pointer and other regs +.macro SAVE_REGS regs= + .text + .balign 4 + setl [A0StP++], D0FrT, D1RtP + ! Needs to be a pair of regs + .ifnc "\regs","" + setl [A0StP++], \regs + .endif +.endm + +! Declare a global function +.macro METAG_FUNC_START name + .text + .balign 4 + ENTRY(\name) +.endm + +! Return registers from the stack. Reverse SAVE_REGS operation +.macro RET_REGS regs=, cond= + .ifnc "\regs", "" + getl \regs, [--A0StP] + .endif + getl D0FrT, D1RtP, [--A0StP] +.endm + +! Return arguments +.macro RET_ARGS + getl D0Ar2, D1Ar1, [--A0StP] + getl D0Ar4, D1Ar3, [--A0StP] + getl D0Ar6, D1Ar5, [--A0StP] +.endm + + + ! D1Ar1: fn + ! D0Ar2: &ecif + ! D1Ar3: cif->bytes + ! D0Ar4: fig->flags + ! D1Ar5: ecif.rvalue + + ! This assumes we are using GNU as +METAG_FUNC_START ffi_call_SYSV + ! Save argument registers + + SAVE_ARGS + + ! new frame + mov D0FrT, A0FrP + add A0FrP, A0StP, #0 + + ! Preserve the old frame pointer + SAVE_REGS "D1.5, D0.5" + + ! Make room for new args. cifs->bytes is the total space for input + ! and return arguments + + add A0StP, A0StP, D1Ar3 + + ! Preserve cifs->bytes & fn + mov D0.5, D1Ar3 + mov D1.5, D1Ar1 + + ! Place all of the ffi_prep_args in position + mov D1Ar1, A0StP + + ! Call ffi_prep_args(stack, &ecif) +#ifdef __PIC__ + callr D1RtP, CNAME(ffi_prep_args@PLT) +#else + callr D1RtP, CNAME(ffi_prep_args) +#endif + + ! Restore fn pointer + + ! The foreign stack should look like this + ! XXXXX XXXXXX <--- stack pointer + ! FnArgN rvalue + ! FnArgN+2 FnArgN+1 + ! FnArgN+4 FnArgN+3 + ! .... + ! + + ! A0StP now points to the first (or return) argument + 4 + + ! Preserve cif->bytes + getl D0Ar2, D1Ar1, [--A0StP] + getl D0Ar4, D1Ar3, [--A0StP] + getl D0Ar6, D1Ar5, [--A0StP] + + ! Place A0StP to the first argument again + add A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each + + ! A0FrP points to the initial stack without the reserved space for the + ! cifs->bytes, whilst A0StP points to the stack after the space allocation + + ! fn was the first argument of ffi_call_SYSV. + ! The stack at this point looks like this: + ! + ! A0StP(on entry to _SYSV) -> Arg6 Arg5 | low + ! Arg4 Arg3 | + ! Arg2 Arg1 | + ! A0FrP ----> D0FrtP D1RtP | + ! D1.5 D0.5 | + ! A0StP(bf prep_args) -> FnArgn FnArgn-1 | + ! FnArgn-2FnArgn-3 | + ! ................ | <= cifs->bytes + ! FnArg4 FnArg3 | + ! A0StP (prv_A0StP+cifs->bytes) FnArg2 FnArg1 | high + ! + ! fn was in Arg1 so it's located in in A0FrP+#-0xC + ! + + ! D0Re0 contains the size of arguments stored in registers + sub A0StP, A0StP, D0Re0 + + ! Arg1 is the function pointer for the foreign call. This has been + ! preserved in D1.5 + + ! Time to call (fn). Arguments should be like this: + ! Arg1-Arg6 are loaded to regs + ! The rest of the arguments are stored in stack pointed by A0StP + + call_reg D1.5 + + ! Reset stack. + + mov A0StP, A0FrP + + ! Load Arg1 with the pointer to storage for the return type + ! This was stored in Arg5 + + getd D1Ar1, [A0FrP+#-20] + + ! Load D0Ar2 with the return type code. This was stored in Arg4 (flags) + + getd D0Ar2, [A0FrP+#-16] + + ! We are ready to start processing the return value + ! D0Re0 (and D1Re0) hold the return value + + ! If the return value is NULL, assume no return value + cmp D1Ar1, #0 + beq LSYM(Lepilogue) + + ! return INT + cmp D0Ar2, #FFI_TYPE_INT + ! Sadly, there is no setd{cc} instruction so we need to workaround that + bne .INT64 + setd [D1Ar1], D0Re0 + b LSYM(Lepilogue) + + ! return INT64 +.INT64: + cmp D0Ar2, #FFI_TYPE_SINT64 + setleq [D1Ar1], D0Re0, D1Re0 + + ! return DOUBLE + cmp D0Ar2, #FFI_TYPE_DOUBLE + setl [D1AR1++], D0Re0, D1Re0 + +LSYM(Lepilogue): + ! At this point, the stack pointer points right after the argument + ! saved area. We need to restore 4 regs, therefore we need to move + ! 16 bytes ahead. + add A0StP, A0StP, #16 + RET_REGS "D1.5, D0.5" + RET_ARGS + getd D0Re0, [A0StP] + mov A0FrP, D0FrT + swap D1RtP, PC + +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + + +/* + (called by ffi_metag_trampoline) + void ffi_closure_SYSV (ffi_closure*) + + (called by ffi_closure_SYSV) + unsigned int FFI_HIDDEN + ffi_closure_SYSV_inner (closure,respp, args) + ffi_closure *closure; + void **respp; + void *args; +*/ + +METAG_FUNC_START ffi_closure_SYSV + ! We assume that D1Ar1 holds the address of the + ! ffi_closure struct. We will use that to fetch the + ! arguments. The stack pointer points to an empty space + ! and it is ready to store more data. + + ! D1Ar1 is ready + ! Allocate stack space for return value + add A0StP, A0StP, #8 + ! Store it to D0Ar2 + sub D0Ar2, A0StP, #8 + + sub D1Ar3, A0FrP, #4 + + ! D1Ar3 contains the address of the original D1Ar1 argument + ! We need to subtract #4 later on + + ! Preverve D0Ar2 + mov D0.5, D0Ar2 + +#ifdef __PIC__ + callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT) +#else + callr D1RtP, CNAME(ffi_closure_SYSV_inner) +#endif + + ! Check the return value and store it to D0.5 + cmp D0Re0, #FFI_TYPE_INT + beq .Lretint + cmp D0Re0, #FFI_TYPE_DOUBLE + beq .Lretdouble +.Lclosure_epilogue: + sub A0StP, A0StP, #8 + RET_REGS "D1.5, D0.5" + RET_ARGS + swap D1RtP, PC + +.Lretint: + setd [D0.5], D0Re0 + b .Lclosure_epilogue +.Lretdouble: + setl [D0.5++], D0Re0, D1Re0 + b .Lclosure_epilogue +.ffi_closure_SYSV_end: +.size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + + +ENTRY(ffi_metag_trampoline) + SAVE_ARGS + ! New frame + mov A0FrP, A0StP + SAVE_REGS "D1.5, D0.5" + mov D0.5, PC + ! Load D1Ar1 the value of ffi_metag_trampoline + getd D1Ar1, [D0.5 + #8] + ! Jump to ffi_closure_SYSV + getd PC, [D0.5 + #12] diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffi.c new file mode 100644 index 0000000000..df6e33c97d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffi.c @@ -0,0 +1,321 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc + + MicroBlaze Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*, + unsigned int, unsigned int, unsigned int*, void (*fn)(void), + unsigned int, unsigned int); + +extern void ffi_closure_SYSV(void); + +#define WORD_SIZE sizeof(unsigned int) +#define ARGS_REGISTER_SIZE (WORD_SIZE * 6) +#define WORD_FFI_ALIGN(x) FFI_ALIGN(x, WORD_SIZE) + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ +void ffi_prep_args(void* stack, extended_cif* ecif) +{ + unsigned int i; + ffi_type** p_arg; + void** p_argv; + void* stack_args_p = stack; + + if (ecif == NULL || ecif->cif == NULL) { + return; /* no description to prepare */ + } + + p_argv = ecif->avalue; + + if ((ecif->cif->rtype != NULL) && + (ecif->cif->rtype->type == FFI_TYPE_STRUCT)) + { + /* if return type is a struct which is referenced on the stack/reg5, + * by a pointer. Stored the return value pointer in r5. + */ + char* addr = stack_args_p; + memcpy(addr, &(ecif->rvalue), WORD_SIZE); + stack_args_p += WORD_SIZE; + } + + if (ecif->avalue == NULL) { + return; /* no arguments to prepare */ + } + + for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; + i++, p_arg++) + { + size_t size = (*p_arg)->size; + int type = (*p_arg)->type; + void* value = p_argv[i]; + char* addr = stack_args_p; + int aligned_size = WORD_FFI_ALIGN(size); + + /* force word alignment on the stack */ + stack_args_p += aligned_size; + + switch (type) + { + case FFI_TYPE_UINT8: + *(unsigned int *)addr = (unsigned int)*(UINT8*)(value); + break; + case FFI_TYPE_SINT8: + *(signed int *)addr = (signed int)*(SINT8*)(value); + break; + case FFI_TYPE_UINT16: + *(unsigned int *)addr = (unsigned int)*(UINT16*)(value); + break; + case FFI_TYPE_SINT16: + *(signed int *)addr = (signed int)*(SINT16*)(value); + break; + case FFI_TYPE_STRUCT: +#if __BIG_ENDIAN__ + /* + * MicroBlaze toolchain appears to emit: + * bsrli r5, r5, 8 (caller) + * ... + * + * ... + * bslli r5, r5, 8 (callee) + * + * For structs like "struct a { uint8_t a[3]; };", when passed + * by value. + * + * Structs like "struct b { uint16_t a; };" are also expected + * to be packed strangely in registers. + * + * This appears to be because the microblaze toolchain expects + * "struct b == uint16_t", which is only any issue for big + * endian. + * + * The following is a work around for big-endian only, for the + * above mentioned case, it will re-align the contents of a + * <= 3-byte struct value. + */ + if (size < WORD_SIZE) + { + memcpy (addr + (WORD_SIZE - size), value, size); + break; + } +#endif + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + default: + memcpy(addr, value, aligned_size); + } + } +} + +ffi_status ffi_prep_cif_machdep(ffi_cif* cif) +{ + /* check ABI */ + switch (cif->abi) + { + case FFI_SYSV: + break; + default: + return FFI_BAD_ABI; + } + return FFI_OK; +} + +void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue) +{ + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + ecif.rvalue = alloca(cif->rtype->size); + } else { + ecif.rvalue = rvalue; + } + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, + ecif.rvalue, fn, cif->rtype->type, cif->rtype->size); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_call_SYSV(void* register_args, void* stack_args, + ffi_closure* closure, void* rvalue, + unsigned int* rtype, unsigned int* rsize) +{ + /* prepare arguments for closure call */ + ffi_cif* cif = closure->cif; + ffi_type** arg_types = cif->arg_types; + + /* re-allocate data for the args. This needs to be done in order to keep + * multi-word objects (e.g. structs) in contiguous memory. Callers are not + * required to store the value of args in the lower 6 words in the stack + * (although they are allocated in the stack). + */ + char* stackclone = alloca(cif->bytes); + void** avalue = alloca(cif->nargs * sizeof(void*)); + void* struct_rvalue = NULL; + char* ptr = stackclone; + int i; + + /* copy registers into stack clone */ + int registers_used = cif->bytes; + if (registers_used > ARGS_REGISTER_SIZE) { + registers_used = ARGS_REGISTER_SIZE; + } + memcpy(stackclone, register_args, registers_used); + + /* copy stack allocated args into stack clone */ + if (cif->bytes > ARGS_REGISTER_SIZE) { + int stack_used = cif->bytes - ARGS_REGISTER_SIZE; + memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used); + } + + /* preserve struct type return pointer passing */ + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + struct_rvalue = *((void**)ptr); + ptr += WORD_SIZE; + } + + /* populate arg pointer list */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifdef __BIG_ENDIAN__ + avalue[i] = ptr + 3; +#else + avalue[i] = ptr; +#endif + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifdef __BIG_ENDIAN__ + avalue[i] = ptr + 2; +#else + avalue[i] = ptr; +#endif + break; + case FFI_TYPE_STRUCT: +#if __BIG_ENDIAN__ + /* + * Work around strange ABI behaviour. + * (see info in ffi_prep_args) + */ + if (arg_types[i]->size < WORD_SIZE) + { + memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size); + } +#endif + avalue[i] = (void*)ptr; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + avalue[i] = ptr; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + default: + /* default 4-byte argument */ + avalue[i] = ptr; + break; + } + ptr += WORD_FFI_ALIGN(arg_types[i]->size); + } + + /* set the return type info passed back to the wrapper */ + *rsize = cif->rtype->size; + *rtype = cif->rtype->type; + if (struct_rvalue != NULL) { + closure->fun(cif, struct_rvalue, avalue, closure->user_data); + /* copy struct return pointer value into function return value */ + *((void**)rvalue) = struct_rvalue; + } else { + closure->fun(cif, rvalue, avalue, closure->user_data); + } +} + +ffi_status ffi_prep_closure_loc( + ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void* user_data, void* codeloc) +{ + unsigned long* tramp = (unsigned long*)&(closure->tramp[0]); + unsigned long cls = (unsigned long)codeloc; + unsigned long fn = 0; + unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + switch (cif->abi) + { + case FFI_SYSV: + fn = (unsigned long)ffi_closure_SYSV; + + /* load r11 (temp) with fn */ + /* imm fn(upper) */ + tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff); + /* addik r11, r0, fn(lower) */ + tramp[1] = 0x31600000 | (fn & 0xffff); + + /* load r12 (temp) with cls */ + /* imm cls(upper) */ + tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff); + /* addik r12, r0, cls(lower) */ + tramp[3] = 0x31800000 | (cls & 0xffff); + + /* load r3 (temp) with ffi_closure_call_SYSV */ + /* imm fn_closure_call_sysv(upper) */ + tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff); + /* addik r3, r0, fn_closure_call_sysv(lower) */ + tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff); + /* branch/jump to address stored in r11 (fn) */ + tramp[6] = 0x98085800; /* bra r11 */ + + break; + default: + return FFI_BAD_ABI; + } + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffitarget.h new file mode 100644 index 0000000000..c6fa5a4115 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/ffitarget.h @@ -0,0 +1,53 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc + + Target configuration macros for MicroBlaze. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* Definitions for closures */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#define FFI_TRAMPOLINE_SIZE (4*8) + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/sysv.S new file mode 100644 index 0000000000..ea43e9d545 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/microblaze/sysv.S @@ -0,0 +1,302 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc + + MicroBlaze Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + /* + * arg[0] (r5) = ffi_prep_args, + * arg[1] (r6) = &ecif, + * arg[2] (r7) = cif->bytes, + * arg[3] (r8) = cif->flags, + * arg[4] (r9) = ecif.rvalue, + * arg[5] (r10) = fn + * arg[6] (sp[0]) = cif->rtype->type + * arg[7] (sp[4]) = cif->rtype->size + */ + .text + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +ffi_call_SYSV: + /* push callee saves */ + addik r1, r1, -20 + swi r19, r1, 0 /* Frame Pointer */ + swi r20, r1, 4 /* PIC register */ + swi r21, r1, 8 /* PIC register */ + swi r22, r1, 12 /* save for locals */ + swi r23, r1, 16 /* save for locals */ + + /* save the r5-r10 registers in the stack */ + addik r1, r1, -24 /* increment sp to store 6x 32-bit words */ + swi r5, r1, 0 + swi r6, r1, 4 + swi r7, r1, 8 + swi r8, r1, 12 + swi r9, r1, 16 + swi r10, r1, 20 + + /* save function pointer */ + addik r3, r5, 0 /* copy ffi_prep_args into r3 */ + addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */ + addik r23, r10, 0 /* save function address into r23 (callee-saved) */ + + /* prepare stack with allocation for n (bytes = r7) args */ + rsub r1, r7, r1 /* subtract bytes from sp */ + + /* prep args for ffi_prep_args call */ + addik r5, r1, 0 /* store stack pointer into arg[0] */ + /* r6 still holds ecif for arg[1] */ + + /* Call ffi_prep_args(stack, &ecif). */ + addik r1, r1, -4 + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r3 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 4 /* restore the link register from the frame */ + /* returns calling stack pointer location */ + + /* prepare args for fn call, prep_args populates them onto the stack */ + lwi r5, r1, 0 /* arg[0] */ + lwi r6, r1, 4 /* arg[1] */ + lwi r7, r1, 8 /* arg[2] */ + lwi r8, r1, 12 /* arg[3] */ + lwi r9, r1, 16 /* arg[4] */ + lwi r10, r1, 20 /* arg[5] */ + + /* call (fn) (...). */ + addik r1, r1, -4 + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r23 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 4 /* restore the link register from the frame */ + + /* Remove the space we pushed for the args. */ + addik r1, r22, 0 /* restore old SP */ + + /* restore this functions parameters */ + lwi r5, r1, 0 /* arg[0] */ + lwi r6, r1, 4 /* arg[1] */ + lwi r7, r1, 8 /* arg[2] */ + lwi r8, r1, 12 /* arg[3] */ + lwi r9, r1, 16 /* arg[4] */ + lwi r10, r1, 20 /* arg[5] */ + addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */ + + /* If the return value pointer is NULL, assume no return value. */ + beqi r9, ffi_call_SYSV_end + + lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */ + lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7]) */ + + /* Check if return type is actually a struct, do nothing */ + rsubi r11, r22, FFI_TYPE_STRUCT + beqi r11, ffi_call_SYSV_end + + /* Return 8bit */ + rsubi r11, r23, 1 + beqi r11, ffi_call_SYSV_store8 + + /* Return 16bit */ + rsubi r11, r23, 2 + beqi r11, ffi_call_SYSV_store16 + + /* Return 32bit */ + rsubi r11, r23, 4 + beqi r11, ffi_call_SYSV_store32 + + /* Return 64bit */ + rsubi r11, r23, 8 + beqi r11, ffi_call_SYSV_store64 + + /* Didn't match anything */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store64: + swi r3, r9, 0 /* store word r3 into return value */ + swi r4, r9, 4 /* store word r4 into return value */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store32: + swi r3, r9, 0 /* store word r3 into return value */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store16: +#ifdef __BIG_ENDIAN__ + shi r3, r9, 2 /* store half-word r3 into return value */ +#else + shi r3, r9, 0 /* store half-word r3 into return value */ +#endif + bri ffi_call_SYSV_end + +ffi_call_SYSV_store8: +#ifdef __BIG_ENDIAN__ + sbi r3, r9, 3 /* store byte r3 into return value */ +#else + sbi r3, r9, 0 /* store byte r3 into return value */ +#endif + bri ffi_call_SYSV_end + +ffi_call_SYSV_end: + /* callee restores */ + lwi r19, r1, 0 /* frame pointer */ + lwi r20, r1, 4 /* PIC register */ + lwi r21, r1, 8 /* PIC register */ + lwi r22, r1, 12 + lwi r23, r1, 16 + addik r1, r1, 20 + + /* return from sub-routine (with delay slot) */ + rtsd r15, 8 + nop + + .size ffi_call_SYSV, . - ffi_call_SYSV + +/* ------------------------------------------------------------------------- */ + + /* + * args passed into this function, are passed down to the callee. + * this function is the target of the closure trampoline, as such r12 is + * a pointer to the closure object. + */ + .text + .globl ffi_closure_SYSV + .type ffi_closure_SYSV, @function +ffi_closure_SYSV: + /* push callee saves */ + addik r11, r1, 28 /* save stack args start location (excluding regs/link) */ + addik r1, r1, -12 + swi r19, r1, 0 /* Frame Pointer */ + swi r20, r1, 4 /* PIC register */ + swi r21, r1, 8 /* PIC register */ + + /* store register args on stack */ + addik r1, r1, -24 + swi r5, r1, 0 + swi r6, r1, 4 + swi r7, r1, 8 + swi r8, r1, 12 + swi r9, r1, 16 + swi r10, r1, 20 + + /* setup args */ + addik r5, r1, 0 /* register_args */ + addik r6, r11, 0 /* stack_args */ + addik r7, r12, 0 /* closure object */ + addik r1, r1, -8 /* allocate return value */ + addik r8, r1, 0 /* void* rvalue */ + addik r1, r1, -8 /* allocate for return type/size values */ + addik r9, r1, 0 /* void* rtype */ + addik r10, r1, 4 /* void* rsize */ + + /* call the wrap_call function */ + addik r1, r1, -28 /* allocate args + link reg */ + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r3 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 28 /* restore the link register from the frame */ + +ffi_closure_SYSV_prepare_return: + lwi r9, r1, 0 /* rtype */ + lwi r10, r1, 4 /* rsize */ + addik r1, r1, 8 /* de-allocate return info values */ + + /* Check if return type is actually a struct, store 4 bytes */ + rsubi r11, r9, FFI_TYPE_STRUCT + beqi r11, ffi_closure_SYSV_store32 + + /* Return 8bit */ + rsubi r11, r10, 1 + beqi r11, ffi_closure_SYSV_store8 + + /* Return 16bit */ + rsubi r11, r10, 2 + beqi r11, ffi_closure_SYSV_store16 + + /* Return 32bit */ + rsubi r11, r10, 4 + beqi r11, ffi_closure_SYSV_store32 + + /* Return 64bit */ + rsubi r11, r10, 8 + beqi r11, ffi_closure_SYSV_store64 + + /* Didn't match anything */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store64: + lwi r3, r1, 0 /* store word r3 into return value */ + lwi r4, r1, 4 /* store word r4 into return value */ + /* 64 bits == 2 words, no sign extend occurs */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store32: + lwi r3, r1, 0 /* store word r3 into return value */ + /* 32 bits == 1 word, no sign extend occurs */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store16: +#ifdef __BIG_ENDIAN__ + lhui r3, r1, 2 /* store half-word r3 into return value */ +#else + lhui r3, r1, 0 /* store half-word r3 into return value */ +#endif + rsubi r11, r9, FFI_TYPE_SINT16 + bnei r11, ffi_closure_SYSV_end + sext16 r3, r3 /* fix sign extend of sint8 */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store8: +#ifdef __BIG_ENDIAN__ + lbui r3, r1, 3 /* store byte r3 into return value */ +#else + lbui r3, r1, 0 /* store byte r3 into return value */ +#endif + rsubi r11, r9, FFI_TYPE_SINT8 + bnei r11, ffi_closure_SYSV_end + sext8 r3, r3 /* fix sign extend of sint8 */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_end: + addik r1, r1, 8 /* de-allocate return value */ + + /* de-allocate stored args */ + addik r1, r1, 24 + + /* callee restores */ + lwi r19, r1, 0 /* frame pointer */ + lwi r20, r1, 4 /* PIC register */ + lwi r21, r1, 8 /* PIC register */ + addik r1, r1, 12 + + /* return from sub-routine (with delay slot) */ + rtsd r15, 8 + nop + + .size ffi_closure_SYSV, . - ffi_closure_SYSV diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffi.c new file mode 100644 index 0000000000..057b046694 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffi.c @@ -0,0 +1,1130 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Anthony Green + Copyright (c) 2008 David Daney + Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. + + MIPS Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#ifdef __GNUC__ +# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) +# define USE__BUILTIN___CLEAR_CACHE 1 +# endif +#endif + +#ifndef USE__BUILTIN___CLEAR_CACHE +# if defined(__OpenBSD__) +# include +# else +# include +# endif +#endif + +#ifdef FFI_DEBUG +# define FFI_MIPS_STOP_HERE() ffi_stop_here() +#else +# define FFI_MIPS_STOP_HERE() do {} while(0) +#endif + +#ifdef FFI_MIPS_N32 +#define FIX_ARGP \ +FFI_ASSERT(argp <= &stack[bytes]); \ +if (argp == &stack[bytes]) \ +{ \ + argp = stack; \ + FFI_MIPS_STOP_HERE(); \ +} +#else +#define FIX_ARGP +#endif + + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +static void ffi_prep_args(char *stack, + extended_cif *ecif, + int bytes, + int flags) +{ + int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + +#ifdef FFI_MIPS_N32 + /* If more than 8 double words are used, the remainder go + on the stack. We reorder stuff on the stack here to + support this easily. */ + if (bytes > 8 * sizeof(ffi_arg)) + argp = &stack[bytes - (8 * sizeof(ffi_arg))]; + else + argp = stack; +#else + argp = stack; +#endif + + memset(stack, 0, bytes); + +#ifdef FFI_MIPS_N32 + if ( ecif->cif->rstruct_flag != 0 ) +#else + if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) +#endif + { + *(ffi_arg *) argp = (ffi_arg) ecif->rvalue; + argp += sizeof(ffi_arg); + FIX_ARGP; + } + + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) + { + size_t z; + unsigned int a; + + /* Align if necessary. */ + a = (*p_arg)->alignment; + if (a < sizeof(ffi_arg)) + a = sizeof(ffi_arg); + + if ((a - 1) & (unsigned long) argp) + { + argp = (char *) FFI_ALIGN(argp, a); + FIX_ARGP; + } + + z = (*p_arg)->size; + if (z <= sizeof(ffi_arg)) + { + int type = (*p_arg)->type; + z = sizeof(ffi_arg); + + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (ecif->cif->abi == FFI_N64 + || ecif->cif->abi == FFI_N64_SOFT_FLOAT) + ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; + + if (i < 8 && (ecif->cif->abi == FFI_N32_SOFT_FLOAT + || ecif->cif->abi == FFI_N64_SOFT_FLOAT)) + { + switch (type) + { + case FFI_TYPE_FLOAT: + type = FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + type = FFI_TYPE_UINT64; + break; + default: + break; + } + } + switch (type) + { + case FFI_TYPE_SINT8: + *(ffi_arg *)argp = *(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(ffi_arg *)argp = *(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(ffi_arg *)argp = *(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(ffi_arg *)argp = *(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_SINT32: + *(ffi_arg *)argp = *(SINT32 *)(* p_argv); + break; + + case FFI_TYPE_UINT32: +#ifdef FFI_MIPS_N32 + /* The N32 ABI requires that 32-bit integers + be sign-extended to 64-bits, regardless of + whether they are signed or unsigned. */ + *(ffi_arg *)argp = *(SINT32 *)(* p_argv); +#else + *(ffi_arg *)argp = *(UINT32 *)(* p_argv); +#endif + break; + + /* This can only happen with 64bit slots. */ + case FFI_TYPE_FLOAT: + *(float *) argp = *(float *)(* p_argv); + break; + + /* Handle structures. */ + default: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + } + } + else + { +#ifdef FFI_MIPS_O32 + memcpy(argp, *p_argv, z); +#else + { + unsigned long end = (unsigned long) argp + z; + unsigned long cap = (unsigned long) stack + bytes; + + /* Check if the data will fit within the register space. + Handle it if it doesn't. */ + + if (end <= cap) + memcpy(argp, *p_argv, z); + else + { + unsigned long portion = cap - (unsigned long)argp; + + memcpy(argp, *p_argv, portion); + argp = stack; + z -= portion; + memcpy(argp, (void*)((unsigned long)(*p_argv) + portion), + z); + } + } +#endif + } + p_argv++; + argp += z; + FIX_ARGP; + } +} + +#ifdef FFI_MIPS_N32 + +/* The n32 spec says that if "a chunk consists solely of a double + float field (but not a double, which is part of a union), it + is passed in a floating point register. Any other chunk is + passed in an integer register". This code traverses structure + definitions and generates the appropriate flags. */ + +static unsigned +calc_n32_struct_flags(int soft_float, ffi_type *arg, + unsigned *loc, unsigned *arg_reg) +{ + unsigned flags = 0; + unsigned index = 0; + + ffi_type *e; + + if (soft_float) + return 0; + + while ((e = arg->elements[index])) + { + /* Align this object. */ + *loc = FFI_ALIGN(*loc, e->alignment); + if (e->type == FFI_TYPE_DOUBLE) + { + /* Already aligned to FFI_SIZEOF_ARG. */ + *arg_reg = *loc / FFI_SIZEOF_ARG; + if (*arg_reg > 7) + break; + flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); + *loc += e->size; + } + else + *loc += e->size; + index++; + } + /* Next Argument register at alignment of FFI_SIZEOF_ARG. */ + *arg_reg = FFI_ALIGN(*loc, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + + return flags; +} + +static unsigned +calc_n32_return_struct_flags(int soft_float, ffi_type *arg) +{ + unsigned flags = 0; + unsigned small = FFI_TYPE_SMALLSTRUCT; + ffi_type *e; + + /* Returning structures under n32 is a tricky thing. + A struct with only one or two floating point fields + is returned in $f0 (and $f2 if necessary). Any other + struct results at most 128 bits are returned in $2 + (the first 64 bits) and $3 (remainder, if necessary). + Larger structs are handled normally. */ + + if (arg->size > 16) + return 0; + + if (arg->size > 8) + small = FFI_TYPE_SMALLSTRUCT2; + + e = arg->elements[0]; + + if (e->type == FFI_TYPE_DOUBLE) + flags = FFI_TYPE_DOUBLE; + else if (e->type == FFI_TYPE_FLOAT) + flags = FFI_TYPE_FLOAT; + + if (flags && (e = arg->elements[1])) + { + if (e->type == FFI_TYPE_DOUBLE) + flags += FFI_TYPE_DOUBLE << FFI_FLAG_BITS; + else if (e->type == FFI_TYPE_FLOAT) + flags += FFI_TYPE_FLOAT << FFI_FLAG_BITS; + else + return small; + + if (flags && (arg->elements[2])) + { + /* There are three arguments and the first two are + floats! This must be passed the old way. */ + return small; + } + if (soft_float) + flags += FFI_TYPE_STRUCT_SOFT; + } + else + if (!flags) + return small; + + return flags; +} + +#endif + +/* Perform machine dependent cif processing */ +static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) +{ + cif->flags = 0; + cif->mips_nfixedargs = nfixedargs; + +#ifdef FFI_MIPS_O32 + /* Set the flags necessary for O32 processing. FFI_O32_SOFT_FLOAT + * does not have special handling for floating point args. + */ + + if (cif->rtype->type != FFI_TYPE_STRUCT && cif->abi == FFI_O32) + { + if (cif->nargs > 0 && cif->nargs == nfixedargs) + { + switch ((cif->arg_types)[0]->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += (cif->arg_types)[0]->type; + break; + + default: + break; + } + + if (cif->nargs > 1) + { + /* Only handle the second argument if the first + is a float or double. */ + if (cif->flags) + { + switch ((cif->arg_types)[1]->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += (cif->arg_types)[1]->type << FFI_FLAG_BITS; + break; + + default: + break; + } + } + } + } + } + + /* Set the return type flag */ + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); + break; + } + } + else + { + /* FFI_O32 */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); + break; + + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); + break; + } + } +#endif + +#ifdef FFI_MIPS_N32 + /* Set the flags necessary for N32 processing */ + { + int type; + unsigned arg_reg = 0; + unsigned loc = 0; + unsigned count = (cif->nargs < 8) ? cif->nargs : 8; + unsigned index = 0; + + unsigned struct_flags = 0; + int soft_float = (cif->abi == FFI_N32_SOFT_FLOAT + || cif->abi == FFI_N64_SOFT_FLOAT); + + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + struct_flags = calc_n32_return_struct_flags(soft_float, cif->rtype); + + if (struct_flags == 0) + { + /* This means that the structure is being passed as + a hidden argument */ + + arg_reg = 1; + count = (cif->nargs < 7) ? cif->nargs : 7; + + cif->rstruct_flag = !0; + } + else + cif->rstruct_flag = 0; + } + else + cif->rstruct_flag = 0; + + while (count-- > 0 && arg_reg < 8) + { + type = (cif->arg_types)[index]->type; + + // Pass variadic arguments in integer registers even if they're floats + if (soft_float || index >= nfixedargs) + { + switch (type) + { + case FFI_TYPE_FLOAT: + type = FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + type = FFI_TYPE_UINT64; + break; + default: + break; + } + } + switch (type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += + ((cif->arg_types)[index]->type << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + break; + case FFI_TYPE_LONGDOUBLE: + /* Align it. */ + arg_reg = FFI_ALIGN(arg_reg, 2); + /* Treat it as two adjacent doubles. */ + if (soft_float || index >= nfixedargs) + { + arg_reg += 2; + } + else + { + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + } + break; + + case FFI_TYPE_STRUCT: + loc = arg_reg * FFI_SIZEOF_ARG; + cif->flags += calc_n32_struct_flags(soft_float || index >= nfixedargs, + (cif->arg_types)[index], + &loc, &arg_reg); + break; + + default: + arg_reg++; + break; + } + + index++; + } + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + { + if (struct_flags == 0) + { + /* The structure is returned through a hidden + first argument. Do nothing, 'cause FFI_TYPE_VOID + is 0 */ + } + else + { + /* The structure is returned via some tricky + mechanism */ + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += struct_flags << (4 + (FFI_FLAG_BITS * 8)); + } + break; + } + + case FFI_TYPE_VOID: + /* Do nothing, 'cause FFI_TYPE_VOID is 0 */ + break; + + case FFI_TYPE_POINTER: + if (cif->abi == FFI_N32_SOFT_FLOAT || cif->abi == FFI_N32) + cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); + else + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); + break; + + case FFI_TYPE_FLOAT: + if (soft_float) + { + cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); + break; + } + /* else fall through */ + case FFI_TYPE_DOUBLE: + if (soft_float) + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); + else + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8); + break; + + case FFI_TYPE_LONGDOUBLE: + /* Long double is returned as if it were a struct containing + two doubles. */ + if (soft_float) + { + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += FFI_TYPE_SMALLSTRUCT2 << (4 + (FFI_FLAG_BITS * 8)); + } + else + { + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += (FFI_TYPE_DOUBLE + + (FFI_TYPE_DOUBLE << FFI_FLAG_BITS)) + << (4 + (FFI_FLAG_BITS * 8)); + } + break; + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); + break; + } + } +#endif + + return FFI_OK; +} + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + return ffi_prep_cif_machdep_int(cif, cif->nargs); +} + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned nfixedargs, + unsigned ntotalargs MAYBE_UNUSED) +{ + return ffi_prep_cif_machdep_int(cif, nfixedargs); +} + +/* Low level routine for calling O32 functions */ +extern int ffi_call_O32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, + unsigned, unsigned *, void (*)(void), void *closure); + +/* Low level routine for calling N32 functions */ +extern int ffi_call_N32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, + unsigned, void *, void (*)(void), void *closure); + +void ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + ecif.rvalue = alloca(cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { +#ifdef FFI_MIPS_O32 + case FFI_O32: + case FFI_O32_SOFT_FLOAT: + ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn, closure); + break; +#endif + +#ifdef FFI_MIPS_N32 + case FFI_N32: + case FFI_N32_SOFT_FLOAT: + case FFI_N64: + case FFI_N64_SOFT_FLOAT: + { + int copy_rvalue = 0; + int copy_offset = 0; + char *rvalue_copy = ecif.rvalue; + if (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size < 16) + { + /* For structures smaller than 16 bytes we clobber memory + in 8 byte increments. Make a copy so we don't clobber + the callers memory outside of the struct bounds. */ + rvalue_copy = alloca(16); + copy_rvalue = 1; + } + else if (cif->rtype->type == FFI_TYPE_FLOAT + && (cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT)) + { + rvalue_copy = alloca (8); + copy_rvalue = 1; +#if defined(__MIPSEB__) || defined(_MIPSEB) + copy_offset = 4; +#endif + } + ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, rvalue_copy, fn, closure); + if (copy_rvalue) + memcpy(ecif.rvalue, rvalue_copy + copy_offset, cif->rtype->size); + } + break; +#endif + + default: + FFI_ASSERT(0); + break; + } +} + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + + +#if FFI_CLOSURES +#if defined(FFI_MIPS_O32) +extern void ffi_closure_O32(void); +extern void ffi_go_closure_O32(void); +#else +extern void ffi_closure_N32(void); +extern void ffi_go_closure_N32(void); +#endif /* FFI_MIPS_O32 */ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + void * fn; + char *clear_location = (char *) codeloc; + +#if defined(FFI_MIPS_O32) + if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) + return FFI_BAD_ABI; + fn = ffi_closure_O32; +#else +#if _MIPS_SIM ==_ABIN32 + if (cif->abi != FFI_N32 + && cif->abi != FFI_N32_SOFT_FLOAT) + return FFI_BAD_ABI; +#else + if (cif->abi != FFI_N64 + && cif->abi != FFI_N64_SOFT_FLOAT) + return FFI_BAD_ABI; +#endif + fn = ffi_closure_N32; +#endif /* FFI_MIPS_O32 */ + +#if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned)fn >> 16); + /* ori $25,low(fn) */ + tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff); + /* lui $12,high(codeloc) */ + tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); + /* jr $25 */ +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[3] = 0x03200008; +#else + tramp[3] = 0x03200009; +#endif + /* ori $12,low(codeloc) */ + tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); +#else + /* N64 has a somewhat larger trampoline. */ + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned long)fn >> 48); + /* lui $12,high(codeloc) */ + tramp[1] = 0x3c0c0000 | ((unsigned long)codeloc >> 48); + /* ori $25,mid-high(fn) */ + tramp[2] = 0x37390000 | (((unsigned long)fn >> 32 ) & 0xffff); + /* ori $12,mid-high(codeloc) */ + tramp[3] = 0x358c0000 | (((unsigned long)codeloc >> 32) & 0xffff); + /* dsll $25,$25,16 */ + tramp[4] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[5] = 0x000c6438; + /* ori $25,mid-low(fn) */ + tramp[6] = 0x37390000 | (((unsigned long)fn >> 16 ) & 0xffff); + /* ori $12,mid-low(codeloc) */ + tramp[7] = 0x358c0000 | (((unsigned long)codeloc >> 16) & 0xffff); + /* dsll $25,$25,16 */ + tramp[8] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[9] = 0x000c6438; + /* ori $25,low(fn) */ + tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); + /* jr $25 */ +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[11] = 0x03200008; +#else + tramp[11] = 0x03200009; +#endif + /* ori $12,low(codeloc) */ + tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); + +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + +#ifdef USE__BUILTIN___CLEAR_CACHE + __builtin___clear_cache(clear_location, clear_location + FFI_TRAMPOLINE_SIZE); +#else + cacheflush (clear_location, FFI_TRAMPOLINE_SIZE, ICACHE); +#endif + return FFI_OK; +} + +/* + * Decodes the arguments to a function, which will be stored on the + * stack. AR is the pointer to the beginning of the integer arguments + * (and, depending upon the arguments, some floating-point arguments + * as well). FPR is a pointer to the area where floating point + * registers have been saved, if any. + * + * RVALUE is the location where the function return value will be + * stored. CLOSURE is the prepared closure to invoke. + * + * This function should only be called from assembly, which is in + * turn called from a trampoline. + * + * Returns the function return type. + * + * Based on the similar routine for sparc. + */ +int +ffi_closure_mips_inner_O32 (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, ffi_arg *ar, + double *fpr) +{ + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn, seen_int; + + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + + seen_int = (cif->abi == FFI_O32_SOFT_FLOAT) || (cif->mips_nfixedargs != cif->nargs); + argn = 0; + + if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_STRUCT) + { + rvalue = (void *)(uintptr_t)ar[0]; + argn = 1; + seen_int = 1; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + while (i < avn) + { + if (arg_types[i]->alignment == 8 && (argn & 0x1)) + argn++; + if (i < 2 && !seen_int && + (arg_types[i]->type == FFI_TYPE_FLOAT || + arg_types[i]->type == FFI_TYPE_DOUBLE || + arg_types[i]->type == FFI_TYPE_LONGDOUBLE)) + { +#if defined(__MIPSEB__) || defined(_MIPSEB) + if (arg_types[i]->type == FFI_TYPE_FLOAT) + avaluep[i] = ((char *) &fpr[i]) + sizeof (float); + else +#endif + avaluep[i] = (char *) &fpr[i]; + } + else + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + avaluep[i] = &avalue[i]; + *(SINT8 *) &avalue[i] = (SINT8) ar[argn]; + break; + + case FFI_TYPE_UINT8: + avaluep[i] = &avalue[i]; + *(UINT8 *) &avalue[i] = (UINT8) ar[argn]; + break; + + case FFI_TYPE_SINT16: + avaluep[i] = &avalue[i]; + *(SINT16 *) &avalue[i] = (SINT16) ar[argn]; + break; + + case FFI_TYPE_UINT16: + avaluep[i] = &avalue[i]; + *(UINT16 *) &avalue[i] = (UINT16) ar[argn]; + break; + + default: + avaluep[i] = (char *) &ar[argn]; + break; + } + seen_int = 1; + } + argn += FFI_ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + i++; + } + + /* Invoke the closure. */ + fun(cif, rvalue, avaluep, user_data); + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { + switch (cif->rtype->type) + { + case FFI_TYPE_FLOAT: + return FFI_TYPE_INT; + case FFI_TYPE_DOUBLE: + return FFI_TYPE_UINT64; + default: + return cif->rtype->type; + } + } + else + { + return cif->rtype->type; + } +} + +#if defined(FFI_MIPS_N32) + +static void +copy_struct_N32(char *target, unsigned offset, ffi_abi abi, ffi_type *type, + int argn, unsigned arg_offset, ffi_arg *ar, + ffi_arg *fpr, int soft_float) +{ + ffi_type **elt_typep = type->elements; + while(*elt_typep) + { + ffi_type *elt_type = *elt_typep; + unsigned o; + char *tp; + char *argp; + char *fpp; + + o = FFI_ALIGN(offset, elt_type->alignment); + arg_offset += o - offset; + offset = o; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + + argp = (char *)(ar + argn); + fpp = (char *)(argn >= 8 ? ar + argn : fpr + argn); + + tp = target + offset; + + if (elt_type->type == FFI_TYPE_DOUBLE && !soft_float) + *(double *)tp = *(double *)fpp; + else + memcpy(tp, argp + arg_offset, elt_type->size); + + offset += elt_type->size; + arg_offset += elt_type->size; + elt_typep++; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + } +} + +/* + * Decodes the arguments to a function, which will be stored on the + * stack. AR is the pointer to the beginning of the integer + * arguments. FPR is a pointer to the area where floating point + * registers have been saved. + * + * RVALUE is the location where the function return value will be + * stored. CLOSURE is the prepared closure to invoke. + * + * This function should only be called from assembly, which is in + * turn called from a trampoline. + * + * Returns the function return flags. + * + */ +int +ffi_closure_mips_inner_N32 (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, ffi_arg *ar, + ffi_arg *fpr) +{ + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn; + int soft_float; + ffi_arg *argp; + + soft_float = cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + + argn = 0; + + if (cif->rstruct_flag) + { +#if _MIPS_SIM==_ABIN32 + rvalue = (void *)(UINT32)ar[0]; +#else /* N64 */ + rvalue = (void *)ar[0]; +#endif + argn = 1; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + while (i < avn) + { + if (arg_types[i]->type == FFI_TYPE_FLOAT + || arg_types[i]->type == FFI_TYPE_DOUBLE + || arg_types[i]->type == FFI_TYPE_LONGDOUBLE) + { + argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; + if ((arg_types[i]->type == FFI_TYPE_LONGDOUBLE) && ((uintptr_t)argp & (arg_types[i]->alignment-1))) + { + argp=(ffi_arg*)FFI_ALIGN(argp,arg_types[i]->alignment); + argn++; + } +#if defined(__MIPSEB__) || defined(_MIPSEB) + if (arg_types[i]->type == FFI_TYPE_FLOAT && argn < 8) + avaluep[i] = ((char *) argp) + sizeof (float); + else +#endif + avaluep[i] = (char *) argp; + } + else + { + unsigned type = arg_types[i]->type; + + if (arg_types[i]->alignment > sizeof(ffi_arg)) + argn = FFI_ALIGN(argn, arg_types[i]->alignment / sizeof(ffi_arg)); + + argp = ar + argn; + + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (cif->abi == FFI_N64 || cif->abi == FFI_N64_SOFT_FLOAT) + ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; + + if (soft_float && type == FFI_TYPE_FLOAT) + type = FFI_TYPE_UINT32; + + switch (type) + { + case FFI_TYPE_SINT8: + avaluep[i] = &avalue[i]; + *(SINT8 *) &avalue[i] = (SINT8) *argp; + break; + + case FFI_TYPE_UINT8: + avaluep[i] = &avalue[i]; + *(UINT8 *) &avalue[i] = (UINT8) *argp; + break; + + case FFI_TYPE_SINT16: + avaluep[i] = &avalue[i]; + *(SINT16 *) &avalue[i] = (SINT16) *argp; + break; + + case FFI_TYPE_UINT16: + avaluep[i] = &avalue[i]; + *(UINT16 *) &avalue[i] = (UINT16) *argp; + break; + + case FFI_TYPE_SINT32: + avaluep[i] = &avalue[i]; + *(SINT32 *) &avalue[i] = (SINT32) *argp; + break; + + case FFI_TYPE_UINT32: + avaluep[i] = &avalue[i]; + *(UINT32 *) &avalue[i] = (UINT32) *argp; + break; + + case FFI_TYPE_STRUCT: + if (argn < 8) + { + /* Allocate space for the struct as at least part of + it was passed in registers. */ + avaluep[i] = alloca(arg_types[i]->size); + copy_struct_N32(avaluep[i], 0, cif->abi, arg_types[i], + argn, 0, ar, fpr, i >= cif->mips_nfixedargs || soft_float); + + break; + } + /* Else fall through. */ + default: + avaluep[i] = (char *) argp; + break; + } + } + argn += FFI_ALIGN(arg_types[i]->size, sizeof(ffi_arg)) / sizeof(ffi_arg); + i++; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avaluep, user_data); + + return cif->flags >> (FFI_FLAG_BITS * 8); +} + +#endif /* FFI_MIPS_N32 */ + +#if defined(FFI_MIPS_O32) +extern void ffi_closure_O32(void); +extern void ffi_go_closure_O32(void); +#else +extern void ffi_closure_N32(void); +extern void ffi_go_closure_N32(void); +#endif /* FFI_MIPS_O32 */ + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void * fn; + +#if defined(FFI_MIPS_O32) + if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) + return FFI_BAD_ABI; + fn = ffi_go_closure_O32; +#else +#if _MIPS_SIM ==_ABIN32 + if (cif->abi != FFI_N32 + && cif->abi != FFI_N32_SOFT_FLOAT) + return FFI_BAD_ABI; +#else + if (cif->abi != FFI_N64 + && cif->abi != FFI_N64_SOFT_FLOAT) + return FFI_BAD_ABI; +#endif + fn = ffi_go_closure_N32; +#endif /* FFI_MIPS_O32 */ + + closure->tramp = (void *)fn; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#endif /* FFI_CLOSURES */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffitarget.h new file mode 100644 index 0000000000..fffdb977b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/ffitarget.h @@ -0,0 +1,244 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for MIPS. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifdef __linux__ +# include +#elif defined(__rtems__) +/* + * Subprogram calling convention - copied from sgidefs.h + */ +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 +#elif !defined(__OpenBSD__) +# include +#endif + +# ifndef _ABIN32 +# define _ABIN32 _MIPS_SIM_NABI32 +# endif +# ifndef _ABI64 +# define _ABI64 _MIPS_SIM_ABI64 +# endif +# ifndef _ABIO32 +# define _ABIO32 _MIPS_SIM_ABI32 +# endif + +#if !defined(_MIPS_SIM) +# error -- something is very wrong -- +#else +# if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) +# define FFI_MIPS_N32 +# else +# if (_MIPS_SIM==_ABIO32 && defined(_ABIO32)) +# define FFI_MIPS_O32 +# else +# error -- this is an unsupported platform -- +# endif +# endif +#endif + +#ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +# define FFI_SIZEOF_ARG 4 +#else +/* N32 and N64 frames have 64bit integer args */ +# define FFI_SIZEOF_ARG 8 +# if _MIPS_SIM == _ABIN32 +# define FFI_SIZEOF_JAVA_RAW 4 +# endif +#endif + +#define FFI_FLAG_BITS 2 + +/* SGI's strange assembler requires that we multiply by 4 rather + than shift left by FFI_FLAG_BITS */ + +#define FFI_ARGS_D FFI_TYPE_DOUBLE +#define FFI_ARGS_F FFI_TYPE_FLOAT +#define FFI_ARGS_DD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_DOUBLE +#define FFI_ARGS_FF FFI_TYPE_FLOAT * 4 + FFI_TYPE_FLOAT +#define FFI_ARGS_FD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_FLOAT +#define FFI_ARGS_DF FFI_TYPE_FLOAT * 4 + FFI_TYPE_DOUBLE + +/* Needed for N32 structure returns */ +#define FFI_TYPE_SMALLSTRUCT FFI_TYPE_UINT8 +#define FFI_TYPE_SMALLSTRUCT2 FFI_TYPE_SINT8 + +#if 0 +/* The SGI assembler can't handle this.. */ +#define FFI_TYPE_STRUCT_DD (( FFI_ARGS_DD ) << 4) + FFI_TYPE_STRUCT +/* (and so on) */ +#else +/* ...so we calculate these by hand! */ +#define FFI_TYPE_STRUCT_D 61 +#define FFI_TYPE_STRUCT_F 45 +#define FFI_TYPE_STRUCT_DD 253 +#define FFI_TYPE_STRUCT_FF 173 +#define FFI_TYPE_STRUCT_FD 237 +#define FFI_TYPE_STRUCT_DF 189 +#define FFI_TYPE_STRUCT_SMALL 93 +#define FFI_TYPE_STRUCT_SMALL2 109 + +/* and for n32 soft float, add 16 * 2^4 */ +#define FFI_TYPE_STRUCT_D_SOFT 317 +#define FFI_TYPE_STRUCT_F_SOFT 301 +#define FFI_TYPE_STRUCT_DD_SOFT 509 +#define FFI_TYPE_STRUCT_FF_SOFT 429 +#define FFI_TYPE_STRUCT_FD_SOFT 493 +#define FFI_TYPE_STRUCT_DF_SOFT 445 +#define FFI_TYPE_STRUCT_SOFT 16 +#endif + +#ifdef LIBFFI_ASM +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 +#define a5 $9 +#define a6 $10 +#define a7 $11 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define t5 $13 +#define t6 $14 +#define t7 $15 +#define t8 $24 +#define t9 $25 +#define ra $31 + +#ifdef FFI_MIPS_O32 +# define REG_L lw +# define REG_S sw +# define SUBU subu +# define ADDU addu +# define SRL srl +# define LI li +#else /* !FFI_MIPS_O32 */ +# define REG_L ld +# define REG_S sd +# define SUBU dsubu +# define ADDU daddu +# define SRL dsrl +# define LI dli +# if (_MIPS_SIM==_ABI64) +# define LA dla +# define EH_FRAME_ALIGN 3 +# define FDE_ADDR_BYTES .8byte +# else +# define LA la +# define EH_FRAME_ALIGN 2 +# define FDE_ADDR_BYTES .4byte +# endif /* _MIPS_SIM==_ABI64 */ +#endif /* !FFI_MIPS_O32 */ +#else /* !LIBFFI_ASM */ +# ifdef __GNUC__ +# ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +typedef unsigned int ffi_arg __attribute__((__mode__(__SI__))); +typedef signed int ffi_sarg __attribute__((__mode__(__SI__))); +#else +/* N32 and N64 frames have 64bit integer args */ +typedef unsigned int ffi_arg __attribute__((__mode__(__DI__))); +typedef signed int ffi_sarg __attribute__((__mode__(__DI__))); +# endif +# else +# ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +typedef __uint32_t ffi_arg; +typedef __int32_t ffi_sarg; +# else +/* N32 and N64 frames have 64bit integer args */ +typedef __uint64_t ffi_arg; +typedef __int64_t ffi_sarg; +# endif +# endif /* __GNUC__ */ + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_O32, + FFI_N32, + FFI_N64, + FFI_O32_SOFT_FLOAT, + FFI_N32_SOFT_FLOAT, + FFI_N64_SOFT_FLOAT, + FFI_LAST_ABI, + +#ifdef FFI_MIPS_O32 +#ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_O32_SOFT_FLOAT +#else + FFI_DEFAULT_ABI = FFI_O32 +#endif +#else +# if _MIPS_SIM==_ABI64 +# ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_N64_SOFT_FLOAT +# else + FFI_DEFAULT_ABI = FFI_N64 +# endif +# else +# ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_N32_SOFT_FLOAT +# else + FFI_DEFAULT_ABI = FFI_N32 +# endif +# endif +#endif +} ffi_abi; + +#define FFI_EXTRA_CIF_FIELDS unsigned rstruct_flag; unsigned mips_nfixedargs +#define FFI_TARGET_SPECIFIC_VARIADIC +#endif /* !LIBFFI_ASM */ + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) +# define FFI_TRAMPOLINE_SIZE 20 +#else +# define FFI_TRAMPOLINE_SIZE 56 +#endif + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/n32.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/n32.S new file mode 100644 index 0000000000..1a940b6d2a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/mips/n32.S @@ -0,0 +1,663 @@ +/* ----------------------------------------------------------------------- + n32.S - Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc. + + MIPS Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Only build this code if we are compiling for n32 */ + +#if defined(FFI_MIPS_N32) + +#define callback a0 +#define bytes a2 +#define flags a3 +#define raddr a4 +#define fn a5 +#define closure a6 + +/* Note: to keep stack 16 byte aligned we need even number slots + used 9 slots here +*/ +#define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG ) + +#ifdef __GNUC__ + .abicalls +#endif +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + .set mips4 +#endif + .text + .align 2 + .globl ffi_call_N32 + .ent ffi_call_N32 +ffi_call_N32: +.LFB0: + .frame $fp, SIZEOF_FRAME, ra + .mask 0xc0000000,-FFI_SIZEOF_ARG + .fmask 0x00000000,0 + + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +.LCFI00: + REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer + REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address +.LCFI01: + move $fp, $sp +.LCFI02: + move t9, callback # callback function pointer + REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes + REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags + REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr + REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn + REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure + + # Allocate at least 4 words in the argstack + move v0, bytes + bge bytes, 4 * FFI_SIZEOF_ARG, bigger + LI v0, 4 * FFI_SIZEOF_ARG + b sixteen + + bigger: + ADDU t4, v0, 2 * FFI_SIZEOF_ARG -1 # make sure it is aligned + and v0, t4, -2 * FFI_SIZEOF_ARG # to a proper boundry. + +sixteen: + SUBU $sp, $sp, v0 # move the stack pointer to reflect the + # arg space + + move a0, $sp # 4 * FFI_SIZEOF_ARG + ADDU a3, $fp, 3 * FFI_SIZEOF_ARG + + # Call ffi_prep_args + jal t9 + + # Copy the stack pointer to t9 + move t9, $sp + + # Fix the stack if there are more than 8 64bit slots worth + # of arguments. + + # Load the number of bytes + REG_L t6, 2*FFI_SIZEOF_ARG($fp) + + # Is it bigger than 8 * FFI_SIZEOF_ARG? + daddiu t8, t6, -(8 * FFI_SIZEOF_ARG) + bltz t8, loadregs + + ADDU t9, t9, t8 + +loadregs: + + REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. + +#ifdef __mips_soft_float + REG_L a0, 0*FFI_SIZEOF_ARG(t9) + REG_L a1, 1*FFI_SIZEOF_ARG(t9) + REG_L a2, 2*FFI_SIZEOF_ARG(t9) + REG_L a3, 3*FFI_SIZEOF_ARG(t9) + REG_L a4, 4*FFI_SIZEOF_ARG(t9) + REG_L a5, 5*FFI_SIZEOF_ARG(t9) + REG_L a6, 6*FFI_SIZEOF_ARG(t9) + REG_L a7, 7*FFI_SIZEOF_ARG(t9) +#else + and t4, t6, ((1< +#include + +/* Only build this code if we are compiling for o32 */ + +#if defined(FFI_MIPS_O32) + +#define callback a0 +#define bytes a2 +#define flags a3 + +#define SIZEOF_FRAME (4 * FFI_SIZEOF_ARG + 2 * FFI_SIZEOF_ARG) +#define A3_OFF (SIZEOF_FRAME + 3 * FFI_SIZEOF_ARG) +#define FP_OFF (SIZEOF_FRAME - 2 * FFI_SIZEOF_ARG) +#define RA_OFF (SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG) + + .abicalls + .text + .align 2 + .globl ffi_call_O32 + .ent ffi_call_O32 +ffi_call_O32: +$LFB0: + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +$LCFI00: + REG_S $fp, FP_OFF($sp) # Save frame pointer +$LCFI01: + REG_S ra, RA_OFF($sp) # Save return address +$LCFI02: + move $fp, $sp + +$LCFI03: + move t9, callback # callback function pointer + REG_S flags, A3_OFF($fp) # flags + + # Allocate at least 4 words in the argstack + LI v0, 4 * FFI_SIZEOF_ARG + blt bytes, v0, sixteen + + ADDU v0, bytes, 7 # make sure it is aligned + and v0, -8 # to an 8 byte boundry + +sixteen: + SUBU $sp, v0 # move the stack pointer to reflect the + # arg space + + ADDU a0, $sp, 4 * FFI_SIZEOF_ARG + + jalr t9 + + REG_L t0, A3_OFF($fp) # load the flags word + SRL t2, t0, 4 # shift our arg info + and t0, ((1<<4)-1) # mask out the return type + + ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args + +#ifndef __mips_soft_float + bnez t0, pass_d # make it quick for int +#endif + REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the + REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs. + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +#ifndef __mips_soft_float +pass_d: + bne t0, FFI_ARGS_D, pass_f + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + REG_L a2, 2*FFI_SIZEOF_ARG($sp) # passing a double + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_f: + bne t0, FFI_ARGS_F, pass_d_d + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + REG_L a1, 1*FFI_SIZEOF_ARG($sp) # passing a float + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_d_d: + bne t0, FFI_ARGS_DD, pass_f_f + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing two doubles + b call_it + +pass_f_f: + bne t0, FFI_ARGS_FF, pass_d_f + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.s $f14, 1*FFI_SIZEOF_ARG($sp) # passing two floats + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_d_f: + bne t0, FFI_ARGS_DF, pass_f_d + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.s $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_f_d: + # assume that the only other combination must be float then double + # bne t0, FFI_ARGS_F_D, call_it + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float +#endif + +call_it: + # Load the static chain pointer + REG_L t7, SIZEOF_FRAME + 6*FFI_SIZEOF_ARG($fp) + + # Load the function pointer + REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp) + + # If the return value pointer is NULL, assume no return value. + REG_L t1, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + beqz t1, noretval + + bne t2, FFI_TYPE_INT, retlonglong + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + REG_S v0, 0(t0) + b epilogue + +retlonglong: + # Really any 64-bit int, signed or not. + bne t2, FFI_TYPE_UINT64, retfloat + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + REG_S v1, 4(t0) + REG_S v0, 0(t0) + b epilogue + +retfloat: + bne t2, FFI_TYPE_FLOAT, retdouble + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) +#ifndef __mips_soft_float + s.s $f0, 0(t0) +#else + REG_S v0, 0(t0) +#endif + b epilogue + +retdouble: + bne t2, FFI_TYPE_DOUBLE, noretval + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) +#ifndef __mips_soft_float + s.d $f0, 0(t0) +#else + REG_S v1, 4(t0) + REG_S v0, 0(t0) +#endif + b epilogue + +noretval: + jalr t9 + + # Epilogue +epilogue: + move $sp, $fp + REG_L $fp, FP_OFF($sp) # Restore frame pointer + REG_L ra, RA_OFF($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME # Fix stack pointer + j ra + +$LFE0: + .end ffi_call_O32 + + +/* ffi_closure_O32. Expects address of the passed-in ffi_closure + in t4 ($12). Stores any arguments passed in registers onto the + stack, then calls ffi_closure_mips_inner_O32, which + then decodes them. + + Stack layout: + + 3 - a3 save + 2 - a2 save + 1 - a1 save + 0 - a0 save, original sp + -1 - ra save + -2 - fp save + -3 - $16 (s0) save + -4 - cprestore + -5 - return value high (v1) + -6 - return value low (v0) + -7 - f14 (le high, be low) + -8 - f14 (le low, be high) + -9 - f12 (le high, be low) + -10 - f12 (le low, be high) + -11 - Called function a5 save + -12 - Called function a4 save + -13 - Called function a3 save + -14 - Called function a2 save + -15 - Called function a1 save + -16 - Called function a0 save, our sp and fp point here + */ + +#define SIZEOF_FRAME2 (16 * FFI_SIZEOF_ARG) +#define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG) +#define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG) +#define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG) +#define A0_OFF2 (SIZEOF_FRAME2 + 0 * FFI_SIZEOF_ARG) +#define RA_OFF2 (SIZEOF_FRAME2 - 1 * FFI_SIZEOF_ARG) +#define FP_OFF2 (SIZEOF_FRAME2 - 2 * FFI_SIZEOF_ARG) +#define S0_OFF2 (SIZEOF_FRAME2 - 3 * FFI_SIZEOF_ARG) +#define GP_OFF2 (SIZEOF_FRAME2 - 4 * FFI_SIZEOF_ARG) +#define V1_OFF2 (SIZEOF_FRAME2 - 5 * FFI_SIZEOF_ARG) +#define V0_OFF2 (SIZEOF_FRAME2 - 6 * FFI_SIZEOF_ARG) +#define FA_1_1_OFF2 (SIZEOF_FRAME2 - 7 * FFI_SIZEOF_ARG) +#define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG) +#define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG) +#define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG) +#define CALLED_A5_OFF2 (SIZEOF_FRAME2 - 11 * FFI_SIZEOF_ARG) +#define CALLED_A4_OFF2 (SIZEOF_FRAME2 - 12 * FFI_SIZEOF_ARG) + + .text + + .align 2 + .globl ffi_go_closure_O32 + .ent ffi_go_closure_O32 +ffi_go_closure_O32: +$LFB1: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder + .cpload t9 + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +$LCFI10: + + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +$LCFI11: + + move $fp, $sp +$LCFI12: + + REG_S a0, A0_OFF2($fp) + REG_S a1, A1_OFF2($fp) + REG_S a2, A2_OFF2($fp) + REG_S a3, A3_OFF2($fp) + + # Load ABI enum to s0 + REG_L $16, 4($15) # cif + REG_L $16, 0($16) # abi is first member. + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT + + # Store all possible float/double registers. + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) +1: + # prepare arguments for ffi_closure_mips_inner_O32 + REG_L a0, 4($15) # cif + REG_L a1, 8($15) # fun + move a2, $15 # user_data = go closure + addu a3, $fp, V0_OFF2 # rvalue + + addu t9, $fp, A0_OFF2 # ar + REG_S t9, CALLED_A4_OFF2($fp) + + addu t9, $fp, FA_0_0_OFF2 #fpr + REG_S t9, CALLED_A5_OFF2($fp) + + b $do_closure + +$LFE1: + .end ffi_go_closure_O32 + + .align 2 + .globl ffi_closure_O32 + .ent ffi_closure_O32 +ffi_closure_O32: +$LFB2: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder + .cpload t9 + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +$LCFI20: + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +$LCFI21: + move $fp, $sp + +$LCFI22: + # Store all possible argument registers. If there are more than + # four arguments, then they are stored above where we put a3. + REG_S a0, A0_OFF2($fp) + REG_S a1, A1_OFF2($fp) + REG_S a2, A2_OFF2($fp) + REG_S a3, A3_OFF2($fp) + + # Load ABI enum to s0 + REG_L $16, 20($12) # cif pointer follows tramp. + REG_L $16, 0($16) # abi is first member. + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT + +#ifndef __mips_soft_float + # Store all possible float/double registers. + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) +#endif +1: + # prepare arguments for ffi_closure_mips_inner_O32 + REG_L a0, 20($12) # cif pointer follows tramp. + REG_L a1, 24($12) # fun + REG_L a2, 28($12) # user_data + addu a3, $fp, V0_OFF2 # rvalue + + addu t9, $fp, A0_OFF2 # ar + REG_S t9, CALLED_A4_OFF2($fp) + + addu t9, $fp, FA_0_0_OFF2 #fpr + REG_S t9, CALLED_A5_OFF2($fp) + +$do_closure: + la t9, ffi_closure_mips_inner_O32 + # Call ffi_closure_mips_inner_O32 to do the work. + jalr t9 + + # Load the return value into the appropriate register. + move $8, $2 + li $9, FFI_TYPE_VOID + beq $8, $9, closure_done + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT + +#ifndef __mips_soft_float + li $9, FFI_TYPE_FLOAT + l.s $f0, V0_OFF2($fp) + beq $8, $9, closure_done + + li $9, FFI_TYPE_DOUBLE + l.d $f0, V0_OFF2($fp) + beq $8, $9, closure_done +#endif +1: + REG_L $3, V1_OFF2($fp) + REG_L $2, V0_OFF2($fp) + +closure_done: + # Epilogue + move $sp, $fp + REG_L $16, S0_OFF2($sp) # Restore s0 + REG_L $fp, FP_OFF2($sp) # Restore frame pointer + REG_L ra, RA_OFF2($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME2 + j ra +$LFE2: + .end ffi_closure_O32 + +/* DWARF-2 unwind info. */ + + .section .eh_frame,"a",@progbits +$Lframe0: + .4byte $LECIE0-$LSCIE0 # Length of Common Information Entry +$LSCIE0: + .4byte 0x0 # CIE Identifier Tag + .byte 0x1 # CIE Version + .ascii "zR\0" # CIE Augmentation + .uleb128 0x1 # CIE Code Alignment Factor + .sleb128 4 # CIE Data Alignment Factor + .byte 0x1f # CIE RA Column + .uleb128 0x1 # Augmentation size + .byte 0x00 # FDE Encoding (absptr) + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1d + .uleb128 0x0 + .align 2 +$LECIE0: + +$LSFDE0: + .4byte $LEFDE0-$LASFDE0 # FDE Length +$LASFDE0: + .4byte $LASFDE0-$Lframe0 # FDE CIE offset + .4byte $LFB0 # FDE initial location + .4byte $LFE0-$LFB0 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI00-$LFB0 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 0x18 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI01-$LCFI00 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI02-$LCFI01 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x18 + .align 2 +$LEFDE0: + +$LSFDE1: + .4byte $LEFDE1-$LASFDE1 # FDE Length +$LASFDE1: + .4byte $LASFDE1-$Lframe0 # FDE CIE offset + .4byte $LFB1 # FDE initial location + .4byte $LFE1-$LFB1 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI10-$LFB1 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI11-$LCFI10 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI12-$LCFI11 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 SIZEOF_FRAME2 + .align 2 +$LEFDE1: + +$LSFDE2: + .4byte $LEFDE2-$LASFDE2 # FDE Length +$LASFDE2: + .4byte $LASFDE2-$Lframe0 # FDE CIE offset + .4byte $LFB2 # FDE initial location + .4byte $LFE2-$LFB2 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI20-$LFB2 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI21-$LCFI20 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI22-$LCFI21 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 SIZEOF_FRAME2 + .align 2 +$LEFDE2: + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/eabi.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/eabi.S new file mode 100644 index 0000000000..10cfb0448e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/eabi.S @@ -0,0 +1,101 @@ +/* ----------------------------------------------------------------------- + eabi.S - Copyright (c) 2012, 2013 Anthony Green + + Moxie Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .globl ffi_prep_args_EABI + + .text + .p2align 4 + .globl ffi_call_EABI + .type ffi_call_EABI, @function + + # $r0 : ffi_prep_args + # $r1 : &ecif + # $r2 : cif->bytes + # $r3 : fig->flags + # $r4 : ecif.rvalue + # $r5 : fn + +ffi_call_EABI: + push $sp, $r6 + push $sp, $r7 + push $sp, $r8 + dec $sp, 24 + + /* Store incoming args on stack. */ + sto.l 0($sp), $r0 /* ffi_prep_args */ + sto.l 4($sp), $r1 /* ecif */ + sto.l 8($sp), $r2 /* bytes */ + sto.l 12($sp), $r3 /* flags */ + sto.l 16($sp), $r4 /* &rvalue */ + sto.l 20($sp), $r5 /* fn */ + + /* Call ffi_prep_args. */ + mov $r6, $r4 /* Save result buffer */ + mov $r7, $r5 /* Save the target fn */ + mov $r8, $r3 /* Save the flags */ + sub $sp, $r2 /* Allocate stack space */ + mov $r0, $sp /* We can stomp over $r0 */ + /* $r1 is already set up */ + jsra ffi_prep_args + + /* Load register arguments. */ + ldo.l $r0, 0($sp) + ldo.l $r1, 4($sp) + ldo.l $r2, 8($sp) + ldo.l $r3, 12($sp) + ldo.l $r4, 16($sp) + ldo.l $r5, 20($sp) + + /* Call the target function. */ + jsr $r7 + + ldi.l $r7, 0xffffffff + cmp $r8, $r7 + beq retstruct + + ldi.l $r7, 4 + cmp $r8, $r7 + bgt ret2reg + + st.l ($r6), $r0 + jmpa retdone + +ret2reg: + st.l ($r6), $r0 + sto.l 4($r6), $r1 + +retstruct: +retdone: + /* Return. */ + ldo.l $r6, -4($fp) + ldo.l $r7, -8($fp) + ldo.l $r8, -12($fp) + ret + .size ffi_call_EABI, .-ffi_call_EABI + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffi.c new file mode 100644 index 0000000000..21144e819d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffi.c @@ -0,0 +1,285 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2012, 2013, 2018 Anthony Green + + Moxie Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void *ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + register int count = 0; + + p_argv = ecif->avalue; + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + z = sizeof(void*); + *(void **) argp = *p_argv; + } + else if (z < sizeof(int)) + { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof(int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + count += z; + } + + return (stack + ((count > 24) ? 24 : ALIGN_DOWN(count, 8))); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = -1; + else + cif->flags = cif->rtype->size; + + cif->bytes = FFI_ALIGN (cif->bytes, 8); + + return FFI_OK; +} + +extern void ffi_call_EABI(void *(*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, + unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_EABI: + ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + unsigned arg4, unsigned arg5, unsigned arg6) +{ + /* This function is called by a trampoline. The trampoline stows a + pointer to the ffi_closure object in $r12. We must save this + pointer in a place that will persist while we do our work. */ + register ffi_closure *creg __asm__ ("$r12"); + ffi_closure *closure = creg; + + /* Arguments that don't fit in registers are found on the stack + at a fixed offset above the current frame pointer. */ + register char *frame_pointer __asm__ ("$fp"); + + /* Pointer to a struct return value. */ + void *struct_rvalue = (void *) arg1; + + /* 6 words reserved for register args + 3 words from jsr */ + char *stack_args = frame_pointer + 9*4; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { arg1, arg2, arg3, arg4, arg5, arg6 }; + char *register_args_ptr = (char *) register_args; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int i; + + /* preserve struct type return pointer passing */ + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + ptr += 4; + register_args_ptr = (char *)®ister_args[1]; + } + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + avalue[i] = ptr; + break; + case FFI_TYPE_STRUCT: + avalue[i] = *(void**)ptr; + break; + default: + /* This is an 8-byte value. */ + if (ptr == (char *) ®ister_args[5]) + { + /* The value is split across two locations */ + unsigned *ip = alloca(8); + avalue[i] = ip; + ip[0] = *(unsigned *) ptr; + ip[1] = *(unsigned *) stack_args; + } + else + { + avalue[i] = ptr; + } + ptr += 4; + break; + } + ptr += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + if (ptr == (char *) ®ister_args[6]) + ptr = stack_args; + else if (ptr == (char *) ®ister_args[7]) + ptr = stack_args + 4; + } + + /* Invoke the closure. */ + if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); + } + else + { + /* Allocate space for the return value and call the function. */ + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue)); + } +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned short *tramp = (unsigned short *) &closure->tramp[0]; + unsigned long fn = (long) ffi_closure_eabi; + unsigned long cls = (long) codeloc; + + if (cif->abi != FFI_EABI) + return FFI_BAD_ABI; + + fn = (unsigned long) ffi_closure_eabi; + + tramp[0] = 0x01e0; /* ldi.l $r12, .... */ + tramp[1] = cls >> 16; + tramp[2] = cls & 0xffff; + tramp[3] = 0x1a00; /* jmpa .... */ + tramp[4] = fn >> 16; + tramp[5] = fn & 0xffff; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffitarget.h new file mode 100644 index 0000000000..623e3ece57 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/moxie/ffitarget.h @@ -0,0 +1,52 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2013 Anthony Green + Target configuration macros for Moxie + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_EABI, + FFI_DEFAULT_ABI = FFI_EABI, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +/* Trampolines are 12-bytes long. See ffi_prep_closure_loc. */ +#define FFI_TRAMPOLINE_SIZE (12) + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffi.c new file mode 100644 index 0000000000..721080d45e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffi.c @@ -0,0 +1,304 @@ +/* libffi support for Altera Nios II. + + Copyright (c) 2013 Mentor Graphics. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + + +#include +#include + +#include + +/* The Nios II Processor Reference Handbook defines the procedure call + ABI as follows. + + Arguments are passed as if a structure containing the types of + the arguments were constructed. The first 16 bytes are passed in r4 + through r7, the remainder on the stack. The first 16 bytes of a function + taking variable arguments are passed in r4-r7 in the same way. + + Return values of types up to 8 bytes are returned in r2 and r3. For + return values greater than 8 bytes, the caller must allocate memory for + the result and pass the address as if it were argument 0. + + While this isn't specified explicitly in the ABI documentation, GCC + promotes integral arguments smaller than int size to 32 bits. + + Also of note, the ABI specifies that all structure objects are + aligned to 32 bits even if all their fields have a smaller natural + alignment. See FFI_AGGREGATE_ALIGNMENT. */ + + +/* Declare the assembly language hooks. */ + +extern UINT64 ffi_call_sysv (void (*) (char *, extended_cif *), + extended_cif *, + unsigned, + void (*fn) (void)); +extern void ffi_closure_sysv (void); + +/* Perform machine-dependent cif processing. */ + +ffi_status ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* We always want at least 16 bytes in the parameter block since it + simplifies the low-level call function. Also round the parameter + block size up to a multiple of 4 bytes to preserve + 32-bit alignment of the stack pointer. */ + if (cif->bytes < 16) + cif->bytes = 16; + else + cif->bytes = (cif->bytes + 3) & ~3; + + return FFI_OK; +} + + +/* ffi_prep_args is called by the assembly routine to transfer arguments + to the stack using the pointers in the ecif array. + Note that the stack buffer is big enough to fit all the arguments, + but the first 16 bytes will be copied to registers for the actual + call. */ + +void ffi_prep_args (char *stack, extended_cif *ecif) +{ + char *argp = stack; + unsigned int i; + + /* The implicit return value pointer is passed as if it were a hidden + first argument. */ + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT + && ecif->cif->rtype->size > 8) + { + (*(void **) argp) = ecif->rvalue; + argp += 4; + } + + for (i = 0; i < ecif->cif->nargs; i++) + { + void *avalue = ecif->avalue[i]; + ffi_type *atype = ecif->cif->arg_types[i]; + size_t size = atype->size; + size_t alignment = atype->alignment; + + /* Align argp as appropriate for the argument type. */ + if ((alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, alignment); + + /* Copy the argument, promoting integral types smaller than a + word to word size. */ + if (size < sizeof (int)) + { + size = sizeof (int); + switch (atype->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) avalue; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) avalue; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) avalue; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) avalue; + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, avalue, atype->size); + break; + + default: + FFI_ASSERT(0); + } + } + else if (size == sizeof (int)) + *(unsigned int *) argp = (unsigned int) *(UINT32 *) avalue; + else + memcpy (argp, avalue, size); + argp += size; + } +} + + +/* Call FN using the prepared CIF. RVALUE points to space allocated by + the caller for the return value, and AVALUE is an array of argument + pointers. */ + +void ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + + extended_cif ecif; + UINT64 result; + + /* If bigret is true, this is the case where a return value of larger + than 8 bytes is handled by being passed by reference as an implicit + argument. */ + int bigret = (cif->rtype->type == FFI_TYPE_STRUCT + && cif->rtype->size > 8); + + ecif.cif = cif; + ecif.avalue = avalue; + + /* Allocate space for return value if this is the pass-by-reference case + and the caller did not provide a buffer. */ + if (rvalue == NULL && bigret) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + result = ffi_call_sysv (ffi_prep_args, &ecif, cif->bytes, fn); + + /* Now result contains the 64 bit contents returned from fn in + r2 and r3. Copy the value of the appropriate size to the user-provided + rvalue buffer. */ + if (rvalue && !bigret) + switch (cif->rtype->size) + { + case 1: + *(UINT8 *)rvalue = (UINT8) result; + break; + case 2: + *(UINT16 *)rvalue = (UINT16) result; + break; + case 4: + *(UINT32 *)rvalue = (UINT32) result; + break; + case 8: + *(UINT64 *)rvalue = (UINT64) result; + break; + default: + memcpy (rvalue, (void *)&result, cif->rtype->size); + break; + } +} + +/* This function is invoked from the closure trampoline to invoke + CLOSURE with argument block ARGS. Parse ARGS according to + CLOSURE->cfi and invoke CLOSURE->fun. */ + +static UINT64 +ffi_closure_helper (unsigned char *args, + ffi_closure *closure) +{ + ffi_cif *cif = closure->cif; + unsigned char *argp = args; + void **parsed_args = alloca (cif->nargs * sizeof (void *)); + UINT64 result; + void *retptr; + unsigned int i; + + /* First figure out what to do about the return type. If this is the + big-structure-return case, the first arg is the hidden return buffer + allocated by the caller. */ + if (cif->rtype->type == FFI_TYPE_STRUCT + && cif->rtype->size > 8) + { + retptr = *((void **) argp); + argp += 4; + } + else + retptr = (void *) &result; + + /* Fill in the array of argument pointers. */ + for (i = 0; i < cif->nargs; i++) + { + size_t size = cif->arg_types[i]->size; + size_t alignment = cif->arg_types[i]->alignment; + + /* Align argp as appropriate for the argument type. */ + if ((alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, alignment); + + /* Arguments smaller than an int are promoted to int. */ + if (size < sizeof (int)) + size = sizeof (int); + + /* Store the pointer. */ + parsed_args[i] = argp; + argp += size; + } + + /* Call the user-supplied function. */ + (closure->fun) (cif, retptr, parsed_args, closure->user_data); + return result; +} + + +/* Initialize CLOSURE with a trampoline to call FUN with + CIF and USER_DATA. */ +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun) (ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + int i; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + /* The trampoline looks like: + movhi r8, %hi(ffi_closure_sysv) + ori r8, r8, %lo(ffi_closure_sysv) + movhi r9, %hi(ffi_closure_helper) + ori r0, r9, %lo(ffi_closure_helper) + movhi r10, %hi(closure) + ori r10, r10, %lo(closure) + jmp r8 + and then ffi_closure_sysv retrieves the closure pointer out of r10 + in addition to the arguments passed in the normal way for the call, + and invokes ffi_closure_helper. We encode the pointer to + ffi_closure_helper in the trampoline because making a PIC call + to it in ffi_closure_sysv would be messy (it would have to indirect + through the GOT). */ + +#define HI(x) ((((unsigned int) (x)) >> 16) & 0xffff) +#define LO(x) (((unsigned int) (x)) & 0xffff) + tramp[0] = (0 << 27) | (8 << 22) | (HI (ffi_closure_sysv) << 6) | 0x34; + tramp[1] = (8 << 27) | (8 << 22) | (LO (ffi_closure_sysv) << 6) | 0x14; + tramp[2] = (0 << 27) | (9 << 22) | (HI (ffi_closure_helper) << 6) | 0x34; + tramp[3] = (9 << 27) | (9 << 22) | (LO (ffi_closure_helper) << 6) | 0x14; + tramp[4] = (0 << 27) | (10 << 22) | (HI (closure) << 6) | 0x34; + tramp[5] = (10 << 27) | (10 << 22) | (LO (closure) << 6) | 0x14; + tramp[6] = (8 << 27) | (0x0d << 11) | 0x3a; +#undef HI +#undef LO + + /* Flush the caches. + See Example 9-4 in the Nios II Software Developer's Handbook. */ + for (i = 0; i < 7; i++) + asm volatile ("flushd 0(%0); flushi %0" :: "r"(tramp + i) : "memory"); + asm volatile ("flushp" ::: "memory"); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffitarget.h new file mode 100644 index 0000000000..134d118c12 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/ffitarget.h @@ -0,0 +1,52 @@ +/* libffi target includes for Altera Nios II. + + Copyright (c) 2013 Mentor Graphics. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* Structures have a 4-byte alignment even if all the fields have lesser + alignment requirements. */ +#define FFI_AGGREGATE_ALIGNMENT 4 + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 28 /* 7 instructions */ +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/sysv.S new file mode 100644 index 0000000000..75f442bbee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/nios2/sysv.S @@ -0,0 +1,136 @@ +/* Low-level libffi support for Altera Nios II. + + Copyright (c) 2013 Mentor Graphics. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +/* This function is declared on the C side as + + extern UINT64 ffi_call_sysv (void (*arghook) (char *, extended_cif *), + extended_cif *ecif, + unsigned nbytes, + void (*fn) (void)); + + On input, the arguments appear as + r4 = arghook + r5 = ecif + r6 = nbytes + r7 = fn +*/ + + .section .text + .align 2 + .global ffi_call_sysv + .type ffi_call_sysv, @function + +ffi_call_sysv: + .cfi_startproc + + /* Create the stack frame, saving r16 so we can use it locally. */ + addi sp, sp, -12 + .cfi_def_cfa_offset 12 + stw ra, 8(sp) + stw fp, 4(sp) + stw r16, 0(sp) + .cfi_offset 31, -4 + .cfi_offset 28, -8 + .cfi_offset 16, -12 + mov fp, sp + .cfi_def_cfa_register 28 + mov r16, r7 + + /* Adjust the stack pointer to create the argument buffer + nbytes long. */ + sub sp, sp, r6 + + /* Call the arghook function. */ + mov r2, r4 /* fn */ + mov r4, sp /* argbuffer */ + callr r2 /* r5 already contains ecif */ + + /* Pop off the first 16 bytes of the argument buffer on the stack, + transferring the contents to the argument registers. */ + ldw r4, 0(sp) + ldw r5, 4(sp) + ldw r6, 8(sp) + ldw r7, 12(sp) + addi sp, sp, 16 + + /* Call the user function, which leaves its result in r2 and r3. */ + callr r16 + + /* Pop off the stack frame. */ + mov sp, fp + ldw ra, 8(sp) + ldw fp, 4(sp) + ldw r16, 0(sp) + addi sp, sp, 12 + ret + .cfi_endproc + .size ffi_call_sysv, .-ffi_call_sysv + + +/* Closure trampolines jump here after putting the C helper address + in r9 and the closure pointer in r10. The user-supplied arguments + to the closure are in the normal places, in r4-r7 and on the + stack. Push the register arguments on the stack too and then call the + C helper function to deal with them. */ + + .section .text + .align 2 + .global ffi_closure_sysv + .type ffi_closure_sysv, @function + +ffi_closure_sysv: + .cfi_startproc + + /* Create the stack frame, pushing the register args on the stack + just below the stack args. This is the same trick illustrated + in Figure 7-3 in the Nios II Processor Reference Handbook, used + for variable arguments and structures passed by value. */ + addi sp, sp, -20 + .cfi_def_cfa_offset 20 + stw ra, 0(sp) + .cfi_offset 31, -20 + stw r4, 4(sp) + .cfi_offset 4, -16 + stw r5, 8(sp) + .cfi_offset 5, -12 + stw r6, 12(sp) + .cfi_offset 6, -8 + stw r7, 16(sp) + .cfi_offset 7, -4 + + /* Call the helper. + r4 = pointer to arguments on stack + r5 = closure pointer (loaded in r10 by the trampoline) + r9 = address of helper function (loaded by trampoline) */ + addi r4, sp, 4 + mov r5, r10 + callr r9 + + /* Pop the stack and return. */ + ldw ra, 0(sp) + addi sp, sp, 20 + .cfi_def_cfa_offset -20 + ret + .cfi_endproc + .size ffi_closure_sysv, .-ffi_closure_sysv + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffi.c new file mode 100644 index 0000000000..2bad938a29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffi.c @@ -0,0 +1,328 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2014 Sebastian Macke + + OpenRISC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include "ffi_common.h" + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void* ffi_prep_args(char *stack, extended_cif *ecif) +{ + char *stacktemp = stack; + int i, s; + ffi_type **arg; + int count = 0; + int nfixedargs; + + nfixedargs = ecif->cif->nfixedargs; + arg = ecif->cif->arg_types; + void **argv = ecif->avalue; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) + { + *(void **) stack = ecif->rvalue; + stack += 4; + count = 4; + } + for(i=0; icif->nargs; i++) + { + + /* variadic args are saved on stack */ + if ((nfixedargs == 0) && (count < 24)) + { + count = 24; + stack = stacktemp + 24; + } + nfixedargs--; + + s = 4; + switch((*arg)->type) + { + case FFI_TYPE_STRUCT: + *(void **)stack = *argv; + break; + + case FFI_TYPE_SINT8: + *(signed int *) stack = (signed int)*(SINT8 *)(* argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) stack = (unsigned int)*(UINT8 *)(* argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) stack = (signed int)*(SINT16 *)(* argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) stack = (unsigned int)*(UINT16 *)(* argv); + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + *(int *)stack = *(int*)(*argv); + break; + + default: /* 8 byte types */ + if (count == 20) /* never split arguments */ + { + stack += 4; + count += 4; + } + s = (*arg)->size; + memcpy(stack, *argv, s); + break; + } + + stack += s; + count += s; + argv++; + arg++; + } + return stacktemp + ((count>24)?24:0); +} + +extern void ffi_call_SYSV(unsigned, + extended_cif *, + void *(*)(int *, extended_cif *), + unsigned *, + void (*fn)(void), + unsigned); + + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + int i; + int size; + ffi_type **arg; + + /* Calculate size to allocate on stack */ + + for(i = 0, arg = cif->arg_types, size=0; i < cif->nargs; i++, arg++) + { + if ((*arg)->type == FFI_TYPE_STRUCT) + size += 4; + else + if ((*arg)->size <= 4) + size += 4; + else + size += 8; + } + + /* for variadic functions more space is needed on the stack */ + if (cif->nargs != cif->nfixedargs) + size += 24; + + if (cif->rtype->type == FFI_TYPE_STRUCT) + size += 4; + + + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags); + break; + default: + FFI_ASSERT(0); + break; + } +} + + +void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, unsigned long r8) +{ + register int *sp __asm__ ("r17"); + register int *r13 __asm__ ("r13"); + + ffi_closure* closure = (ffi_closure*) r13; + char *stack_args = sp; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { r3, r4, r5, r6, r7, r8 }; + + /* Pointer to a struct return value. */ + void *struct_rvalue = (void *) r3; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int count = 0; + int nfixedargs = cif->nfixedargs; + int i; + + /* preserve struct type return pointer passing */ + + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ptr += 4; + count = 4; + } + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + + /* variadic args are saved on stack */ + if ((nfixedargs == 0) && (count < 24)) + { + ptr = stack_args; + count = 24; + } + nfixedargs--; + + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + avalue[i] = ptr; + break; + + case FFI_TYPE_STRUCT: + avalue[i] = *(void**)ptr; + break; + + default: + /* 8-byte values */ + + /* arguments are never splitted */ + if (ptr == ®ister_args[5]) + ptr = stack_args; + avalue[i] = ptr; + ptr += 4; + count += 4; + break; + } + ptr += 4; + count += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + + if (count == 24) + ptr = stack_args; + } + + if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); + } else + { + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + if (cif->rtype) + asm ("l.ori r12, %0, 0x0\n l.lwz r11, 0(r12)\n l.lwz r12, 4(r12)" : : "r" (&rvalue)); + } +} + + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + unsigned short *tramp = (unsigned short *) closure->tramp; + unsigned long fn = (unsigned long) ffi_closure_SYSV; + unsigned long cls = (unsigned long) codeloc; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + /* write pointers to temporary registers */ + tramp[0] = (0x6 << 10) | (13 << 5); /* l.movhi r13, ... */ + tramp[1] = cls >> 16; + tramp[2] = (0x2a << 10) | (13 << 5) | 13; /* l.ori r13, r13, ... */ + tramp[3] = cls & 0xFFFF; + + tramp[4] = (0x6 << 10) | (15 << 5); /* l.movhi r15, ... */ + tramp[5] = fn >> 16; + tramp[6] = (0x2a << 10) | (15 << 5) | 15; /* l.ori r15, r15 ... */ + tramp[7] = fn & 0xFFFF; + + tramp[8] = (0x11 << 10); /* l.jr r15 */ + tramp[9] = 15 << 11; + + tramp[10] = (0x2a << 10) | (17 << 5) | 1; /* l.ori r17, r1, ... */ + tramp[11] = 0x0; + + return FFI_OK; +} + + +ffi_status ffi_prep_cif_machdep (ffi_cif *cif) +{ + cif->flags = 0; + + /* structures are returned as pointers */ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = FFI_TYPE_STRUCT; + else + if (cif->rtype->size > 4) + cif->flags = FFI_TYPE_UINT64; + + cif->nfixedargs = cif->nargs; + + return FFI_OK; +} + + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, unsigned int ntotalargs) +{ + ffi_status status; + + status = ffi_prep_cif_machdep (cif); + cif->nfixedargs = nfixedargs; + return status; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffitarget.h new file mode 100644 index 0000000000..e55da28618 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/ffitarget.h @@ -0,0 +1,58 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2014 Sebastian Macke + + OpenRISC Target configuration macros + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#define FFI_TRAMPOLINE_SIZE (24) + +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs; + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/sysv.S new file mode 100644 index 0000000000..df6570ba9d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/or1k/sysv.S @@ -0,0 +1,107 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2014 Sebastian Macke + + OpenRISC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +.text + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +/* + r3: size to allocate on stack + r4: extended cif structure + r5: function pointer ffi_prep_args + r6: ret address + r7: function to call + r8: flag for return type +*/ + +ffi_call_SYSV: + /* Store registers used on stack */ + l.sw -4(r1), r9 /* return address */ + l.sw -8(r1), r1 /* stack address */ + l.sw -12(r1), r14 /* callee saved registers */ + l.sw -16(r1), r16 + l.sw -20(r1), r18 + l.sw -24(r1), r20 + + l.ori r14, r1, 0x0 /* save stack pointer */ + l.addi r1, r1, -24 + + l.ori r16, r7, 0x0 /* save function address */ + l.ori r18, r6, 0x0 /* save ret address */ + l.ori r20, r8, 0x0 /* save flag */ + + l.sub r1, r1, r3 /* reserve space on stack */ + + /* Call ffi_prep_args */ + l.ori r3, r1, 0x0 /* first argument stack address, second already ecif */ + l.jalr r5 + l.nop + + /* Load register arguments and call*/ + + l.lwz r3, 0(r1) + l.lwz r4, 4(r1) + l.lwz r5, 8(r1) + l.lwz r6, 12(r1) + l.lwz r7, 16(r1) + l.lwz r8, 20(r1) + l.ori r1, r11, 0x0 /* new stack pointer */ + l.jalr r16 + l.nop + + /* handle return values */ + + l.sfeqi r20, FFI_TYPE_STRUCT + l.bf ret /* structs don't return an rvalue */ + l.nop + + /* copy ret address */ + + l.sfeqi r20, FFI_TYPE_UINT64 + l.bnf four_byte_ret /* 8 byte value is returned */ + l.nop + + l.sw 4(r18), r12 + +four_byte_ret: + l.sw 0(r18), r11 + +ret: + /* return */ + l.ori r1, r14, 0x0 /* reset stack pointer */ + l.lwz r9, -4(r1) + l.lwz r1, -8(r1) + l.lwz r14, -12(r1) + l.lwz r16, -16(r1) + l.lwz r18, -20(r1) + l.lwz r20, -24(r1) + l.jr r9 + l.nop + +.size ffi_call_SYSV, .-ffi_call_SYSV diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffi.c new file mode 100644 index 0000000000..4ce2bc6f0e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffi.c @@ -0,0 +1,719 @@ +/* ----------------------------------------------------------------------- + ffi.c - (c) 2011 Anthony Green + (c) 2008 Red Hat, Inc. + (c) 2006 Free Software Foundation, Inc. + (c) 2003-2004 Randolph Chung + + HPPA Foreign Function Interface + HP-UX PA ABI support + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) + +#define MIN_STACK_SIZE 64 +#define FIRST_ARG_SLOT 9 +#define DEBUG_LEVEL 0 + +#define fldw(addr, fpreg) \ + __asm__ volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) +#define fstw(fpreg, addr) \ + __asm__ volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) +#define fldd(addr, fpreg) \ + __asm__ volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) +#define fstd(fpreg, addr) \ + __asm__ volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) + +#define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) + +static inline int ffi_struct_type(ffi_type *t) +{ + size_t sz = t->size; + + /* Small structure results are passed in registers, + larger ones are passed by pointer. Note that + small structures of size 2, 4 and 8 differ from + the corresponding integer types in that they have + different alignment requirements. */ + + if (sz <= 1) + return FFI_TYPE_UINT8; + else if (sz == 2) + return FFI_TYPE_SMALL_STRUCT2; + else if (sz == 3) + return FFI_TYPE_SMALL_STRUCT3; + else if (sz == 4) + return FFI_TYPE_SMALL_STRUCT4; + else if (sz == 5) + return FFI_TYPE_SMALL_STRUCT5; + else if (sz == 6) + return FFI_TYPE_SMALL_STRUCT6; + else if (sz == 7) + return FFI_TYPE_SMALL_STRUCT7; + else if (sz <= 8) + return FFI_TYPE_SMALL_STRUCT8; + else + return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ +} + +/* PA has a downward growing stack, which looks like this: + + Offset + [ Variable args ] + SP = (4*(n+9)) arg word N + ... + SP-52 arg word 4 + [ Fixed args ] + SP-48 arg word 3 + SP-44 arg word 2 + SP-40 arg word 1 + SP-36 arg word 0 + [ Frame marker ] + ... + SP-20 RP + SP-4 previous SP + + The first four argument words on the stack are reserved for use by + the callee. Instead, the general and floating registers replace + the first four argument slots. Non FP arguments are passed solely + in the general registers. FP arguments are passed in both general + and floating registers when using libffi. + + Non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23. + Non-FP 64-bit args are passed in register pairs, starting + on an odd numbered register (i.e. r25+r26 and r23+r24). + FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L. + FP 64-bit arguments are passed in fr5 and fr7. + + The registers are allocated in the same manner as stack slots. + This allows the callee to save its arguments on the stack if + necessary: + + arg word 3 -> gr23 or fr7L + arg word 2 -> gr24 or fr6L or fr7R + arg word 1 -> gr25 or fr5L + arg word 0 -> gr26 or fr4L or fr5R + + Note that fr4R and fr6R are never used for arguments (i.e., + doubles are not passed in fr4 or fr6). + + The rest of the arguments are passed on the stack starting at SP-52, + but 64-bit arguments need to be aligned to an 8-byte boundary + + This means we can have holes either in the register allocation, + or in the stack. */ + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments + + The following code will put everything into the stack frame + (which was allocated by the asm routine), and on return + the asm routine will load the arguments that should be + passed by register into the appropriate registers + + NOTE: We load floating point args in this function... that means we + assume gcc will not mess with fp regs in here. */ + +void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes) +{ + register unsigned int i; + register ffi_type **p_arg; + register void **p_argv; + unsigned int slot = FIRST_ARG_SLOT; + char *dest_cpy; + size_t len; + + debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, + ecif, bytes); + + p_arg = ecif->cif->arg_types; + p_argv = ecif->avalue; + + for (i = 0; i < ecif->cif->nargs; i++) + { + int type = (*p_arg)->type; + + switch (type) + { + case FFI_TYPE_SINT8: + *(SINT32 *)(stack - slot) = *(SINT8 *)(*p_argv); + break; + + case FFI_TYPE_UINT8: + *(UINT32 *)(stack - slot) = *(UINT8 *)(*p_argv); + break; + + case FFI_TYPE_SINT16: + *(SINT32 *)(stack - slot) = *(SINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT16: + *(UINT32 *)(stack - slot) = *(UINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), + slot); + *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); + break; + + case FFI_TYPE_FLOAT: + /* First 4 args go in fr4L - fr7L. */ + debug(3, "Storing UINT32(float) in slot %u\n", slot); + *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 4 args go in fr4L - fr7L. */ + case 0: fldw(stack - slot, fr4); break; + case 1: fldw(stack - slot, fr5); break; + case 2: fldw(stack - slot, fr6); break; + case 3: fldw(stack - slot, fr7); break; + } + break; + + case FFI_TYPE_DOUBLE: + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + debug(3, "Storing UINT64(double) at slot %u\n", slot); + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 2 args go in fr5, fr7. */ + case 1: fldd(stack - slot, fr5); break; + case 3: fldd(stack - slot, fr7); break; + } + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are passed in the same manner as structures + larger than 8 bytes. */ + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + break; +#endif + + case FFI_TYPE_STRUCT: + + /* Structs smaller or equal than 4 bytes are passed in one + register. Structs smaller or equal 8 bytes are passed in two + registers. Larger structures are passed by pointer. */ + + len = (*p_arg)->size; + if (len <= 4) + { + dest_cpy = (char *)(stack - slot) + 4 - len; + memcpy(dest_cpy, (char *)*p_argv, len); + } + else if (len <= 8) + { + slot += (slot & 1) ? 1 : 2; + dest_cpy = (char *)(stack - slot) + 8 - len; + memcpy(dest_cpy, (char *)*p_argv, len); + } + else + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + break; + + default: + FFI_ASSERT(0); + } + + slot++; + p_arg++; + p_argv++; + } + + /* Make sure we didn't mess up and scribble on the stack. */ + { + unsigned int n; + + debug(5, "Stack setup:\n"); + for (n = 0; n < (bytes + 3) / 4; n++) + { + if ((n%4) == 0) { debug(5, "\n%08x: ", (unsigned int)(stack - n)); } + debug(5, "%08x ", *(stack - n)); + } + debug(5, "\n"); + } + + FFI_ASSERT(slot * 4 <= bytes); + + return; +} + +static void ffi_size_stack_pa32(ffi_cif *cif) +{ + ffi_type **ptr; + int i; + int z = 0; /* # stack slots */ + + for (ptr = cif->arg_types, i = 0; i < cif->nargs; ptr++, i++) + { + int type = (*ptr)->type; + + switch (type) + { + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + z += 2 + (z & 1); /* must start on even regs, so we may waste one */ + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: +#endif + case FFI_TYPE_STRUCT: + z += 1; /* pass by ptr, callee will copy */ + break; + + default: /* <= 32-bit values */ + z++; + } + } + + /* We can fit up to 6 args in the default 64-byte stack frame, + if we need more, we need more stack. */ + if (z <= 6) + cif->bytes = MIN_STACK_SIZE; /* min stack size */ + else + cif->bytes = 64 + ROUND_UP((z - 6) * sizeof(UINT32), MIN_STACK_SIZE); + + debug(3, "Calculated stack size is %u bytes\n", cif->bytes); +} + +/* Perform machine dependent cif processing. */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags = (unsigned) cif->rtype->type; + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a structure. */ + cif->flags = FFI_TYPE_STRUCT; + break; +#endif + + case FFI_TYPE_STRUCT: + /* For the return type we have to check the size of the structures. + If the size is smaller or equal 4 bytes, the result is given back + in one register. If the size is smaller or equal 8 bytes than we + return the result in two registers. But if the size is bigger than + 8 bytes, we work with pointers. */ + cif->flags = ffi_struct_type(cif->rtype); + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI_TYPE_UINT64; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + /* Lucky us, because of the unique PA ABI we get to do our + own stack sizing. */ + switch (cif->abi) + { + case FFI_PA32: + ffi_size_stack_pa32(cif); + break; + + default: + FFI_ASSERT(0); + break; + } + + return FFI_OK; +} + +extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), + extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if (rvalue == NULL +#ifdef PA_HPUX + && (cif->rtype->type == FFI_TYPE_STRUCT + || cif->rtype->type == FFI_TYPE_LONGDOUBLE)) +#else + && cif->rtype->type == FFI_TYPE_STRUCT) +#endif + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + + switch (cif->abi) + { + case FFI_PA32: + debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); + ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT(0); + break; + } +} + +#if FFI_CLOSURES +/* This is more-or-less an inverse of ffi_call -- we have arguments on + the stack, and we need to fill them into a cif structure and invoke + the user function. This really ought to be in asm to make sure + the compiler doesn't do things we don't expect. */ +ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) +{ + ffi_cif *cif; + void **avalue; + void *rvalue; + UINT32 ret[2]; /* function can return up to 64-bits in registers */ + ffi_type **p_arg; + char *tmp; + int i, avn; + unsigned int slot = FIRST_ARG_SLOT; + register UINT32 r28 asm("r28"); + + cif = closure->cif; + + /* If returning via structure, callee will write to our pointer. */ + if (cif->flags == FFI_TYPE_STRUCT) + rvalue = (void *)r28; + else + rvalue = &ret[0]; + + avalue = (void **)alloca(cif->nargs * FFI_SIZEOF_ARG); + avn = cif->nargs; + p_arg = cif->arg_types; + + for (i = 0; i < avn; i++) + { + int type = (*p_arg)->type; + + switch (type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + avalue[i] = (char *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + slot += (slot & 1) ? 1 : 2; + avalue[i] = (void *)(stack - slot); + break; + + case FFI_TYPE_FLOAT: +#ifdef PA_LINUX + /* The closure call is indirect. In Linux, floating point + arguments in indirect calls with a prototype are passed + in the floating point registers instead of the general + registers. So, we need to replace what was previously + stored in the current slot with the value in the + corresponding floating point register. */ + switch (slot - FIRST_ARG_SLOT) + { + case 0: fstw(fr4, (void *)(stack - slot)); break; + case 1: fstw(fr5, (void *)(stack - slot)); break; + case 2: fstw(fr6, (void *)(stack - slot)); break; + case 3: fstw(fr7, (void *)(stack - slot)); break; + } +#endif + avalue[i] = (void *)(stack - slot); + break; + + case FFI_TYPE_DOUBLE: + slot += (slot & 1) ? 1 : 2; +#ifdef PA_LINUX + /* See previous comment for FFI_TYPE_FLOAT. */ + switch (slot - FIRST_ARG_SLOT) + { + case 1: fstd(fr5, (void *)(stack - slot)); break; + case 3: fstd(fr7, (void *)(stack - slot)); break; + } +#endif + avalue[i] = (void *)(stack - slot); + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a big structure. */ + avalue[i] = (void *) *(stack - slot); + break; +#endif + + case FFI_TYPE_STRUCT: + /* Structs smaller or equal than 4 bytes are passed in one + register. Structs smaller or equal 8 bytes are passed in two + registers. Larger structures are passed by pointer. */ + if((*p_arg)->size <= 4) + { + avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - + (*p_arg)->size; + } + else if ((*p_arg)->size <= 8) + { + slot += (slot & 1) ? 1 : 2; + avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - + (*p_arg)->size; + } + else + avalue[i] = (void *) *(stack - slot); + break; + + default: + FFI_ASSERT(0); + } + + slot++; + p_arg++; + } + + /* Invoke the closure. */ + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", ret[0], + ret[1]); + + /* Store the result using the lower 2 bytes of the flags. */ + switch (cif->flags) + { + case FFI_TYPE_UINT8: + *(stack - FIRST_ARG_SLOT) = (UINT8)(ret[0] >> 24); + break; + case FFI_TYPE_SINT8: + *(stack - FIRST_ARG_SLOT) = (SINT8)(ret[0] >> 24); + break; + case FFI_TYPE_UINT16: + *(stack - FIRST_ARG_SLOT) = (UINT16)(ret[0] >> 16); + break; + case FFI_TYPE_SINT16: + *(stack - FIRST_ARG_SLOT) = (SINT16)(ret[0] >> 16); + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + *(stack - FIRST_ARG_SLOT) = ret[0]; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + *(stack - FIRST_ARG_SLOT) = ret[0]; + *(stack - FIRST_ARG_SLOT - 1) = ret[1]; + break; + + case FFI_TYPE_DOUBLE: + fldd(rvalue, fr4); + break; + + case FFI_TYPE_FLOAT: + fldw(rvalue, fr4); + break; + + case FFI_TYPE_STRUCT: + /* Don't need a return value, done by caller. */ + break; + + case FFI_TYPE_SMALL_STRUCT2: + case FFI_TYPE_SMALL_STRUCT3: + case FFI_TYPE_SMALL_STRUCT4: + tmp = (void*)(stack - FIRST_ARG_SLOT); + tmp += 4 - cif->rtype->size; + memcpy((void*)tmp, &ret[0], cif->rtype->size); + break; + + case FFI_TYPE_SMALL_STRUCT5: + case FFI_TYPE_SMALL_STRUCT6: + case FFI_TYPE_SMALL_STRUCT7: + case FFI_TYPE_SMALL_STRUCT8: + { + unsigned int ret2[2]; + int off; + + /* Right justify ret[0] and ret[1] */ + switch (cif->flags) + { + case FFI_TYPE_SMALL_STRUCT5: off = 3; break; + case FFI_TYPE_SMALL_STRUCT6: off = 2; break; + case FFI_TYPE_SMALL_STRUCT7: off = 1; break; + default: off = 0; break; + } + + memset (ret2, 0, sizeof (ret2)); + memcpy ((char *)ret2 + off, ret, 8 - off); + + *(stack - FIRST_ARG_SLOT) = ret2[0]; + *(stack - FIRST_ARG_SLOT - 1) = ret2[1]; + } + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_VOID: + break; + + default: + debug(0, "assert with cif->flags: %d\n",cif->flags); + FFI_ASSERT(0); + break; + } + return FFI_OK; +} + +/* Fill in a closure to refer to the specified fun and user_data. + cif specifies the argument and result types for fun. + The cif must already be prep'ed. */ + +extern void ffi_closure_pa32(void); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + UINT32 *tramp = (UINT32 *)(closure->tramp); +#ifdef PA_HPUX + UINT32 *tmp; +#endif + + if (cif->abi != FFI_PA32) + return FFI_BAD_ABI; + + /* Make a small trampoline that will branch to our + handler function. Use PC-relative addressing. */ + +#ifdef PA_LINUX + tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ + tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ + tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1 ; load plabel */ + tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ + tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ + tramp[5] = 0xeac0c000; /* bv%r0(%r22) ; branch to handler */ + tramp[6] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ + tramp[7] = ((UINT32)(ffi_closure_pa32) & ~2); + + /* Flush d/icache -- have to flush up 2 two lines because of + alignment. */ + __asm__ volatile( + "fdc 0(%0)\n\t" + "fdc %1(%0)\n\t" + "fic 0(%%sr4, %0)\n\t" + "fic %1(%%sr4, %0)\n\t" + "sync\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n" + : + : "r"((unsigned long)tramp & ~31), + "r"(32 /* stride */) + : "memory"); +#endif + +#ifdef PA_HPUX + tramp[0] = 0xeaa00000; /* b,l .+8,%r21 ; %r21 <- pc+8 */ + tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21 ; mask priv bits */ + tramp[2] = 0x4aa10038; /* ldw 28(%r21),%r1 ; load plabel */ + tramp[3] = 0x36b53ff1; /* ldo -8(%r21),%r21 ; get closure addr */ + tramp[4] = 0x0c201096; /* ldw 0(%r1),%r22 ; address of handler */ + tramp[5] = 0x02c010b4; /* ldsid (%r22),%r20 ; load space id */ + tramp[6] = 0x00141820; /* mtsp %r20,%sr0 ; into %sr0 */ + tramp[7] = 0xe2c00000; /* be 0(%sr0,%r22) ; branch to handler */ + tramp[8] = 0x0c281093; /* ldw 4(%r1),%r19 ; GP of handler */ + tramp[9] = ((UINT32)(ffi_closure_pa32) & ~2); + + /* Flush d/icache -- have to flush three lines because of alignment. */ + __asm__ volatile( + "copy %1,%0\n\t" + "fdc,m %2(%0)\n\t" + "fdc,m %2(%0)\n\t" + "fdc,m %2(%0)\n\t" + "ldsid (%1),%0\n\t" + "mtsp %0,%%sr0\n\t" + "copy %1,%0\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "fic,m %2(%%sr0,%0)\n\t" + "sync\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n\t" + "nop\n" + : "=&r" ((unsigned long)tmp) + : "r" ((unsigned long)tramp & ~31), + "r" (32/* stride */) + : "memory"); +#endif + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffitarget.h new file mode 100644 index 0000000000..fff4c6b382 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/ffitarget.h @@ -0,0 +1,85 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for hppa. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + +#ifdef PA_LINUX + FFI_PA32, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA32 +#endif + +#ifdef PA_HPUX + FFI_PA32, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA32 +#endif + +#ifdef PA64_HPUX +#error "PA64_HPUX FFI is not yet implemented" + FFI_PA64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA64 +#endif +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#ifdef PA_LINUX +#define FFI_TRAMPOLINE_SIZE 32 +#else +#define FFI_TRAMPOLINE_SIZE 40 +#endif + +#define FFI_TYPE_SMALL_STRUCT2 -1 +#define FFI_TYPE_SMALL_STRUCT3 -2 +#define FFI_TYPE_SMALL_STRUCT4 -3 +#define FFI_TYPE_SMALL_STRUCT5 -4 +#define FFI_TYPE_SMALL_STRUCT6 -5 +#define FFI_TYPE_SMALL_STRUCT7 -6 +#define FFI_TYPE_SMALL_STRUCT8 -7 +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/hpux32.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/hpux32.S new file mode 100644 index 0000000000..40528bad75 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/hpux32.S @@ -0,0 +1,368 @@ +/* ----------------------------------------------------------------------- + hpux32.S - Copyright (c) 2006 Free Software Foundation, Inc. + (c) 2008 Red Hat, Inc. + based on src/pa/linux.S + + HP-UX PA Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .LEVEL 1.1 + .SPACE $PRIVATE$ + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE + .SUBSPA $DATA$ + .align 4 + + /* void ffi_call_pa32(void (*)(char *, extended_cif *), + extended_cif *ecif, + unsigned bytes, + unsigned flags, + unsigned *rvalue, + void (*fn)(void)); + */ + + .export ffi_call_pa32,ENTRY,PRIV_LEV=3 + .import ffi_prep_args_pa32,CODE + + .SPACE $TEXT$ + .SUBSPA $CODE$ + .align 4 + +L$FB1 +ffi_call_pa32 + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 + .entry + stw %rp, -20(%sp) + copy %r3, %r1 +L$CFI11 + copy %sp, %r3 +L$CFI12 + + /* Setup the stack for calling prep_args... + We want the stack to look like this: + + [ Previous stack ] <- %r3 + + [ 64-bytes register save area ] <- %r4 + + [ Stack space for actual call, passed as ] <- %arg0 + [ arg0 to ffi_prep_args_pa32 ] + + [ Stack for calling prep_args ] <- %sp + */ + + stwm %r1, 64(%sp) + stw %r4, 12(%r3) +L$CFI13 + copy %sp, %r4 + + addl %arg2, %r4, %arg0 ; arg stack + stw %arg3, -48(%r3) ; save flags we need it later + + /* Call prep_args: + %arg0(stack) -- set up above + %arg1(ecif) -- same as incoming param + %arg2(bytes) -- same as incoming param */ + bl ffi_prep_args_pa32,%r2 + ldo 64(%arg0), %sp + ldo -64(%sp), %sp + + /* now %sp should point where %arg0 was pointing. */ + + /* Load the arguments that should be passed in registers + The fp args are loaded by the prep_args function. */ + ldw -36(%sp), %arg0 + ldw -40(%sp), %arg1 + ldw -44(%sp), %arg2 + ldw -48(%sp), %arg3 + + /* in case the function is going to return a structure + we need to give it a place to put the result. */ + ldw -52(%r3), %ret0 ; %ret0 <- rvalue + ldw -56(%r3), %r22 ; %r22 <- function to call + bl $$dyncall, %r31 ; Call the user function + copy %r31, %rp + + /* Prepare to store the result; we need to recover flags and rvalue. */ + ldw -48(%r3), %r21 ; r21 <- flags + ldw -52(%r3), %r20 ; r20 <- rvalue + + /* Store the result according to the return type. The most + likely types should come first. */ + +L$checkint + comib,<>,n FFI_TYPE_INT, %r21, L$checkint8 + b L$done + stw %ret0, 0(%r20) + +L$checkint8 + comib,<>,n FFI_TYPE_UINT8, %r21, L$checkint16 + b L$done + stb %ret0, 0(%r20) + +L$checkint16 + comib,<>,n FFI_TYPE_UINT16, %r21, L$checkdbl + b L$done + sth %ret0, 0(%r20) + +L$checkdbl + comib,<>,n FFI_TYPE_DOUBLE, %r21, L$checkfloat + b L$done + fstd %fr4,0(%r20) + +L$checkfloat + comib,<>,n FFI_TYPE_FLOAT, %r21, L$checkll + b L$done + fstw %fr4L,0(%r20) + +L$checkll + comib,<>,n FFI_TYPE_UINT64, %r21, L$checksmst2 + stw %ret0, 0(%r20) + b L$done + stw %ret1, 4(%r20) + +L$checksmst2 + comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, L$checksmst3 + /* 2-byte structs are returned in ret0 as ????xxyy. */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$checksmst3 + comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, L$checksmst4 + /* 3-byte structs are returned in ret0 as ??xxyyzz. */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$checksmst4 + comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, L$checksmst5 + /* 4-byte structs are returned in ret0 as wwxxyyzz. */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$checksmst5 + comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, L$checksmst6 + /* 5 byte values are returned right justified: + ret0 ret1 + 5: ??????aa bbccddee */ + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$checksmst6 + comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, L$checksmst7 + /* 6 byte values are returned right justified: + ret0 ret1 + 6: ????aabb ccddeeff */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$checksmst7 + comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, L$checksmst8 + /* 7 byte values are returned right justified: + ret0 ret1 + 7: ??aabbcc ddeeffgg */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$checksmst8 + comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, L$done + /* 8 byte values are returned right justified: + ret0 ret1 + 8: aabbccdd eeffgghh */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stb %ret1, 0(%r20) + +L$done + /* all done, return */ + copy %r4, %sp ; pop arg stack + ldw 12(%r3), %r4 + ldwm -64(%sp), %r3 ; .. and pop stack + ldw -20(%sp), %rp + bv %r0(%rp) + nop + .exit + .procend +L$FE1 + + /* void ffi_closure_pa32(void); + Called with closure argument in %r21 */ + + .SPACE $TEXT$ + .SUBSPA $CODE$ + .export ffi_closure_pa32,ENTRY,PRIV_LEV=3,RTNVAL=GR + .import ffi_closure_inner_pa32,CODE + .align 4 +L$FB2 +ffi_closure_pa32 + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .entry + + stw %rp, -20(%sp) + copy %r3, %r1 +L$CFI21 + copy %sp, %r3 +L$CFI22 + stwm %r1, 64(%sp) + + /* Put arguments onto the stack and call ffi_closure_inner. */ + stw %arg0, -36(%r3) + stw %arg1, -40(%r3) + stw %arg2, -44(%r3) + stw %arg3, -48(%r3) + + copy %r21, %arg0 + bl ffi_closure_inner_pa32, %r2 + copy %r3, %arg1 + ldwm -64(%sp), %r3 + ldw -20(%sp), %rp + ldw -36(%sp), %ret0 + bv %r0(%rp) + ldw -40(%sp), %ret1 + .exit + .procend +L$FE2: + + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 + .EXPORT _GLOBAL__F_ffi_call_pa32,DATA +_GLOBAL__F_ffi_call_pa32 +L$frame1: + .word L$ECIE1-L$SCIE1 ;# Length of Common Information Entry +L$SCIE1: + .word 0x0 ;# CIE Identifier Tag + .byte 0x1 ;# CIE Version + .ascii "\0" ;# CIE Augmentation + .uleb128 0x1 ;# CIE Code Alignment Factor + .sleb128 4 ;# CIE Data Alignment Factor + .byte 0x2 ;# CIE RA Column + .byte 0xc ;# DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x0 + .align 4 +L$ECIE1: +L$SFDE1: + .word L$EFDE1-L$ASFDE1 ;# FDE Length +L$ASFDE1: + .word L$ASFDE1-L$frame1 ;# FDE CIE offset + .word L$FB1 ;# FDE initial location + .word L$FE1-L$FB1 ;# FDE address range + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI11-L$FB1 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI12-L$CFI11 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI13-L$CFI12 + .byte 0x84 ;# DW_CFA_offset, column 0x4 + .uleb128 0x3 + + .align 4 +L$EFDE1: + +L$SFDE2: + .word L$EFDE2-L$ASFDE2 ;# FDE Length +L$ASFDE2: + .word L$ASFDE2-L$frame1 ;# FDE CIE offset + .word L$FB2 ;# FDE initial location + .word L$FE2-L$FB2 ;# FDE address range + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI21-L$FB2 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI22-L$CFI21 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .align 4 +L$EFDE2: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/linux.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/linux.S new file mode 100644 index 0000000000..f11ae76807 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/pa/linux.S @@ -0,0 +1,357 @@ +/* ----------------------------------------------------------------------- + linux.S - (c) 2003-2004 Randolph Chung + (c) 2008 Red Hat, Inc. + + HPPA Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .text + .level 1.1 + .align 4 + + /* void ffi_call_pa32(void (*)(char *, extended_cif *), + extended_cif *ecif, + unsigned bytes, + unsigned flags, + unsigned *rvalue, + void (*fn)(void)); + */ + + .export ffi_call_pa32,code + .import ffi_prep_args_pa32,code + + .type ffi_call_pa32, @function +.LFB1: +ffi_call_pa32: + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 + .entry + stw %rp, -20(%sp) + copy %r3, %r1 +.LCFI11: + + copy %sp, %r3 +.LCFI12: + + /* Setup the stack for calling prep_args... + We want the stack to look like this: + + [ Previous stack ] <- %r3 + + [ 64-bytes register save area ] <- %r4 + + [ Stack space for actual call, passed as ] <- %arg0 + [ arg0 to ffi_prep_args_pa32 ] + + [ Stack for calling prep_args ] <- %sp + */ + + stwm %r1, 64(%sp) + stw %r4, 12(%r3) +.LCFI13: + copy %sp, %r4 + + addl %arg2, %r4, %arg0 /* arg stack */ + stw %arg3, -48(%r3) /* save flags; we need it later */ + + /* Call prep_args: + %arg0(stack) -- set up above + %arg1(ecif) -- same as incoming param + %arg2(bytes) -- same as incoming param */ + bl ffi_prep_args_pa32,%r2 + ldo 64(%arg0), %sp + ldo -64(%sp), %sp + + /* now %sp should point where %arg0 was pointing. */ + + /* Load the arguments that should be passed in registers + The fp args were loaded by the prep_args function. */ + ldw -36(%sp), %arg0 + ldw -40(%sp), %arg1 + ldw -44(%sp), %arg2 + ldw -48(%sp), %arg3 + + /* in case the function is going to return a structure + we need to give it a place to put the result. */ + ldw -52(%r3), %ret0 /* %ret0 <- rvalue */ + ldw -56(%r3), %r22 /* %r22 <- function to call */ + bl $$dyncall, %r31 /* Call the user function */ + copy %r31, %rp + + /* Prepare to store the result; we need to recover flags and rvalue. */ + ldw -48(%r3), %r21 /* r21 <- flags */ + ldw -52(%r3), %r20 /* r20 <- rvalue */ + + /* Store the result according to the return type. */ + +.Lcheckint: + comib,<>,n FFI_TYPE_INT, %r21, .Lcheckint8 + b .Ldone + stw %ret0, 0(%r20) + +.Lcheckint8: + comib,<>,n FFI_TYPE_UINT8, %r21, .Lcheckint16 + b .Ldone + stb %ret0, 0(%r20) + +.Lcheckint16: + comib,<>,n FFI_TYPE_UINT16, %r21, .Lcheckdbl + b .Ldone + sth %ret0, 0(%r20) + +.Lcheckdbl: + comib,<>,n FFI_TYPE_DOUBLE, %r21, .Lcheckfloat + b .Ldone + fstd %fr4,0(%r20) + +.Lcheckfloat: + comib,<>,n FFI_TYPE_FLOAT, %r21, .Lcheckll + b .Ldone + fstw %fr4L,0(%r20) + +.Lcheckll: + comib,<>,n FFI_TYPE_UINT64, %r21, .Lchecksmst2 + stw %ret0, 0(%r20) + b .Ldone + stw %ret1, 4(%r20) + +.Lchecksmst2: + comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, .Lchecksmst3 + /* 2-byte structs are returned in ret0 as ????xxyy. */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst3: + comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, .Lchecksmst4 + /* 3-byte structs are returned in ret0 as ??xxyyzz. */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst4: + comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, .Lchecksmst5 + /* 4-byte structs are returned in ret0 as wwxxyyzz. */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lchecksmst5: + comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, .Lchecksmst6 + /* 5 byte values are returned right justified: + ret0 ret1 + 5: ??????aa bbccddee */ + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst6: + comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, .Lchecksmst7 + /* 6 byte values are returned right justified: + ret0 ret1 + 6: ????aabb ccddeeff */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst7: + comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, .Lchecksmst8 + /* 7 byte values are returned right justified: + ret0 ret1 + 7: ??aabbcc ddeeffgg */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lchecksmst8: + comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, .Ldone + /* 8 byte values are returned right justified: + ret0 ret1 + 8: aabbccdd eeffgghh */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stb %ret1, 0(%r20) + +.Ldone: + /* all done, return */ + copy %r4, %sp /* pop arg stack */ + ldw 12(%r3), %r4 + ldwm -64(%sp), %r3 /* .. and pop stack */ + ldw -20(%sp), %rp + bv %r0(%rp) + nop + .exit + .procend +.LFE1: + + /* void ffi_closure_pa32(void); + Called with closure argument in %r21 */ + .export ffi_closure_pa32,code + .import ffi_closure_inner_pa32,code + + .type ffi_closure_pa32, @function +.LFB2: +ffi_closure_pa32: + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .entry + + stw %rp, -20(%sp) +.LCFI20: + copy %r3, %r1 +.LCFI21: + copy %sp, %r3 +.LCFI22: + stwm %r1, 64(%sp) + + /* Put arguments onto the stack and call ffi_closure_inner. */ + stw %arg0, -36(%r3) + stw %arg1, -40(%r3) + stw %arg2, -44(%r3) + stw %arg3, -48(%r3) + + copy %r21, %arg0 + bl ffi_closure_inner_pa32, %r2 + copy %r3, %arg1 + + ldwm -64(%sp), %r3 + ldw -20(%sp), %rp + ldw -36(%sp), %ret0 + bv %r0(%r2) + ldw -40(%sp), %ret1 + + .exit + .procend +.LFE2: + + .section ".eh_frame",EH_FRAME_FLAGS,@progbits +.Lframe1: + .word .LECIE1-.LSCIE1 ;# Length of Common Information Entry +.LSCIE1: + .word 0x0 ;# CIE Identifier Tag + .byte 0x1 ;# CIE Version + .ascii "\0" ;# CIE Augmentation + .uleb128 0x1 ;# CIE Code Alignment Factor + .sleb128 4 ;# CIE Data Alignment Factor + .byte 0x2 ;# CIE RA Column + .byte 0xc ;# DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x0 + .align 4 +.LECIE1: +.LSFDE1: + .word .LEFDE1-.LASFDE1 ;# FDE Length +.LASFDE1: + .word .LASFDE1-.Lframe1 ;# FDE CIE offset + .word .LFB1 ;# FDE initial location + .word .LFE1-.LFB1 ;# FDE address range + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI11-.LFB1 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI12-.LCFI11 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI13-.LCFI12 + .byte 0x84 ;# DW_CFA_offset, column 0x4 + .uleb128 0x3 + + .align 4 +.LEFDE1: + +.LSFDE2: + .word .LEFDE2-.LASFDE2 ;# FDE Length +.LASFDE2: + .word .LASFDE2-.Lframe1 ;# FDE CIE offset + .word .LFB2 ;# FDE initial location + .word .LFE2-.LFB2 ;# FDE address range + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI21-.LFB2 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI22-.LCFI21 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .align 4 +.LEFDE2: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix.S new file mode 100644 index 0000000000..7ba541595f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix.S @@ -0,0 +1,566 @@ +/* ----------------------------------------------------------------------- + aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc. + based on darwin.S by John Hornkvist + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + + .set r0,0 + .set r1,1 + .set r2,2 + .set r3,3 + .set r4,4 + .set r5,5 + .set r6,6 + .set r7,7 + .set r8,8 + .set r9,9 + .set r10,10 + .set r11,11 + .set r12,12 + .set r13,13 + .set r14,14 + .set r15,15 + .set r16,16 + .set r17,17 + .set r18,18 + .set r19,19 + .set r20,20 + .set r21,21 + .set r22,22 + .set r23,23 + .set r24,24 + .set r25,25 + .set r26,26 + .set r27,27 + .set r28,28 + .set r29,29 + .set r30,30 + .set r31,31 + .set f0,0 + .set f1,1 + .set f2,2 + .set f3,3 + .set f4,4 + .set f5,5 + .set f6,6 + .set f7,7 + .set f8,8 + .set f9,9 + .set f10,10 + .set f11,11 + .set f12,12 + .set f13,13 + .set f14,14 + .set f15,15 + .set f16,16 + .set f17,17 + .set f18,18 + .set f19,19 + .set f20,20 + .set f21,21 + + .extern .ffi_prep_args + +#define LIBFFI_ASM +#include +#include +#define JUMPTARGET(name) name +#define L(x) x + .file "aix.S" + .toc + + /* void ffi_call_AIX(extended_cif *ecif, unsigned long bytes, + * unsigned int flags, unsigned int *rvalue, + * void (*fn)(), + * void (*prep_args)(extended_cif*, unsigned *const)); + * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args + */ + +.csect .text[PR] + .align 2 + .globl ffi_call_AIX + .globl .ffi_call_AIX +.csect ffi_call_AIX[DS] +ffi_call_AIX: +#ifdef __64BIT__ + .llong .ffi_call_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_AIX: + .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: + /* Save registers we use. */ + mflr r0 + + std r28,-32(r1) + std r29,-24(r1) + std r30,-16(r1) + std r31, -8(r1) + + std r0, 16(r1) +LCFI..0: + mr r28, r1 /* our AP. */ + stdux r1, r1, r4 +LCFI..1: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address. */ + std r2, 40(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + ld r0, 0(r29) + ld r2, 8(r29) + ld r11, 16(r29) + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + ld r3, 40+(1*8)(r1) + ld r4, 40+(2*8)(r1) + ld r5, 40+(3*8)(r1) + ld r6, 40+(4*8)(r1) + nop + ld r7, 40+(5*8)(r1) + ld r8, 40+(6*8)(r1) + ld r9, 40+(7*8)(r1) + ld r10,40+(8*8)(r1) + +L1: + /* Load all the FP registers. */ + bf 6,L2 /* 2f + 0x18 */ + lfd f1,-32-(13*8)(r28) + lfd f2,-32-(12*8)(r28) + lfd f3,-32-(11*8)(r28) + lfd f4,-32-(10*8)(r28) + nop + lfd f5,-32-(9*8)(r28) + lfd f6,-32-(8*8)(r28) + lfd f7,-32-(7*8)(r28) + lfd f8,-32-(6*8)(r28) + nop + lfd f9,-32-(5*8)(r28) + lfd f10,-32-(4*8)(r28) + lfd f11,-32-(3*8)(r28) + lfd f12,-32-(2*8)(r28) + nop + lfd f13,-32-(1*8)(r28) + +L2: + /* Make the call. */ + bctrl + ld r2, 40(r1) + + /* Now, deal with the return value. */ + mtcrf 0x01, r31 + + bt 30, L(done_return_value) + bt 29, L(fp_return_value) + std r3, 0(r30) + + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + mr r1, r28 + ld r0, 16(r28) + ld r28, -32(r1) + mtlr r0 + ld r29, -24(r1) + ld r30, -16(r1) + ld r31, -8(r1) + blr + +L(fp_return_value): + bf 28, L(float_return_value) + stfd f1, 0(r30) + bf 31, L(done_return_value) + stfd f2, 8(r30) + b L(done_return_value) +L(float_return_value): + stfs f1, 0(r30) + b L(done_return_value) +LFE..0: +#else /* ! __64BIT__ */ + + .long .ffi_call_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_AIX: + .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: + /* Save registers we use. */ + mflr r0 + + stw r28,-16(r1) + stw r29,-12(r1) + stw r30, -8(r1) + stw r31, -4(r1) + + stw r0, 8(r1) +LCFI..0: + mr r28, r1 /* out AP. */ + stwux r1, r1, r4 +LCFI..1: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + stw r2, 20(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + lwz r0, 0(r29) + lwz r2, 4(r29) + lwz r11, 8(r29) + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + lwz r3, 20+(1*4)(r1) + lwz r4, 20+(2*4)(r1) + lwz r5, 20+(3*4)(r1) + lwz r6, 20+(4*4)(r1) + nop + lwz r7, 20+(5*4)(r1) + lwz r8, 20+(6*4)(r1) + lwz r9, 20+(7*4)(r1) + lwz r10,20+(8*4)(r1) + +L1: + /* Load all the FP registers. */ + bf 6,L2 /* 2f + 0x18 */ + lfd f1,-16-(13*8)(r28) + lfd f2,-16-(12*8)(r28) + lfd f3,-16-(11*8)(r28) + lfd f4,-16-(10*8)(r28) + nop + lfd f5,-16-(9*8)(r28) + lfd f6,-16-(8*8)(r28) + lfd f7,-16-(7*8)(r28) + lfd f8,-16-(6*8)(r28) + nop + lfd f9,-16-(5*8)(r28) + lfd f10,-16-(4*8)(r28) + lfd f11,-16-(3*8)(r28) + lfd f12,-16-(2*8)(r28) + nop + lfd f13,-16-(1*8)(r28) + +L2: + /* Make the call. */ + bctrl + lwz r2, 20(r1) + + /* Now, deal with the return value. */ + mtcrf 0x01, r31 + + bt 30, L(done_return_value) + bt 29, L(fp_return_value) + stw r3, 0(r30) + bf 28, L(done_return_value) + stw r4, 4(r30) + + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + mr r1, r28 + lwz r0, 8(r28) + lwz r28,-16(r1) + mtlr r0 + lwz r29,-12(r1) + lwz r30, -8(r1) + lwz r31, -4(r1) + blr + +L(fp_return_value): + bf 28, L(float_return_value) + stfd f1, 0(r30) + b L(done_return_value) +L(float_return_value): + stfs f1, 0(r30) + b L(done_return_value) +LFE..0: +#endif + .ef __LINE__ + .long 0 + .byte 0,0,0,1,128,4,0,0 +/* END(ffi_call_AIX) */ + + /* void ffi_call_go_AIX(extended_cif *ecif, unsigned long bytes, + * unsigned int flags, unsigned int *rvalue, + * void (*fn)(), + * void (*prep_args)(extended_cif*, unsigned *const), + * void *closure); + * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args, r9=closure + */ + +.csect .text[PR] + .align 2 + .globl ffi_call_go_AIX + .globl .ffi_call_go_AIX +.csect ffi_call_go_AIX[DS] +ffi_call_go_AIX: +#ifdef __64BIT__ + .llong .ffi_call_go_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_go_AIX: + .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: + /* Save registers we use. */ + mflr r0 + + std r28,-32(r1) + std r29,-24(r1) + std r30,-16(r1) + std r31, -8(r1) + + std r9, 8(r1) /* closure, saved in cr field. */ + std r0, 16(r1) +LCFI..2: + mr r28, r1 /* our AP. */ + stdux r1, r1, r4 +LCFI..3: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + std r2, 40(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + ld r0, 0(r29) + ld r2, 8(r29) + ld r11, 8(r28) /* closure */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + ld r3, 40+(1*8)(r1) + ld r4, 40+(2*8)(r1) + ld r5, 40+(3*8)(r1) + ld r6, 40+(4*8)(r1) + nop + ld r7, 40+(5*8)(r1) + ld r8, 40+(6*8)(r1) + ld r9, 40+(7*8)(r1) + ld r10,40+(8*8)(r1) + + b L1 +LFE..1: +#else /* ! __64BIT__ */ + + .long .ffi_call_go_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_go_AIX: + .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 + /* Save registers we use. */ +LFB..1: + mflr r0 + + stw r28,-16(r1) + stw r29,-12(r1) + stw r30, -8(r1) + stw r31, -4(r1) + + stw r9, 4(r1) /* closure, saved in cr field. */ + stw r0, 8(r1) +LCFI..2: + mr r28, r1 /* out AP. */ + stwux r1, r1, r4 +LCFI..3: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + stw r2, 20(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + lwz r0, 0(r29) + lwz r2, 4(r29) + lwz r11, 4(r28) /* closure */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + lwz r3, 20+(1*4)(r1) + lwz r4, 20+(2*4)(r1) + lwz r5, 20+(3*4)(r1) + lwz r6, 20+(4*4)(r1) + nop + lwz r7, 20+(5*4)(r1) + lwz r8, 20+(6*4)(r1) + lwz r9, 20+(7*4)(r1) + lwz r10,20+(8*4)(r1) + + b L1 +LFE..1: +#endif + .ef __LINE__ + .long 0 + .byte 0,0,0,1,128,4,0,0 +/* END(ffi_call_go_AIX) */ + +.csect .text[PR] + .align 2 + .globl ffi_call_DARWIN + .globl .ffi_call_DARWIN +.csect ffi_call_DARWIN[DS] +ffi_call_DARWIN: +#ifdef __64BIT__ + .llong .ffi_call_DARWIN, TOC[tc0], 0 +#else + .long .ffi_call_DARWIN, TOC[tc0], 0 +#endif + .csect .text[PR] +.ffi_call_DARWIN: + blr + .long 0 + .byte 0,0,0,0,0,0,0,0 +/* END(ffi_call_DARWIN) */ + +/* EH frame stuff. */ + +#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */ +#ifdef __64BIT__ +#define PTRSIZE 8 +#define LOG2_PTRSIZE 3 +#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */ +#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */ +#else +#define PTRSIZE 4 +#define LOG2_PTRSIZE 2 +#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */ +#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */ +#endif + .csect _unwind.ro_[RO],4 + .align LOG2_PTRSIZE + .globl _GLOBAL__F_libffi_src_powerpc_aix +_GLOBAL__F_libffi_src_powerpc_aix: +Lframe..1: + .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */ +LSCIE..1: + .vbyte 4,0 /* CIE Identifier Tag */ + .byte 0x3 /* CIE Version */ + .byte "zR" /* CIE Augmentation */ + .byte 0 + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */ + .byte 0x41 /* CIE RA Column */ + .byte 0x1 /* uleb128 0x1; Augmentation size */ + .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */ + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0x1 /* uleb128 0x1; Register r1 */ + .byte 0 /* uleb128 0x0; Offset 0 */ + .align LOG2_PTRSIZE +LECIE..1: +LSFDE..1: + .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */ +LASFDE..1: + .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..0-LFB..0 + .byte 0x11 /* DW_CFA_def_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .byte 0x9f /* DW_CFA_offset Register r31 */ + .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */ + .byte 0x9e /* DW_CFA_offset Register r30 */ + .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */ + .byte 0x9d /* DW_CFA_offset Register r29 */ + .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */ + .byte 0x9c /* DW_CFA_offset Register r28 */ + .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..1-LCFI..0 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0x1c /* uleb128 28; Register r28 */ + .align LOG2_PTRSIZE +LEFDE..1: +LSFDE..2: + .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */ +LASFDE..2: + .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..2-LFB..1 + .byte 0x11 /* DW_CFA_def_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .byte 0x9f /* DW_CFA_offset Register r31 */ + .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */ + .byte 0x9e /* DW_CFA_offset Register r30 */ + .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */ + .byte 0x9d /* DW_CFA_offset Register r29 */ + .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */ + .byte 0x9c /* DW_CFA_offset Register r28 */ + .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..3-LCFI..2 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0x1c /* uleb128 28; Register r28 */ + .align LOG2_PTRSIZE +LEFDE..2: + .vbyte 4,0 /* End of FDEs */ + + .csect .text[PR] + .ref _GLOBAL__F_libffi_src_powerpc_aix /* Prevents garbage collection by AIX linker */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix_closure.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix_closure.S new file mode 100644 index 0000000000..132c785edd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/aix_closure.S @@ -0,0 +1,694 @@ +/* ----------------------------------------------------------------------- + aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc. + based on darwin_closure.S + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + + .set r0,0 + .set r1,1 + .set r2,2 + .set r3,3 + .set r4,4 + .set r5,5 + .set r6,6 + .set r7,7 + .set r8,8 + .set r9,9 + .set r10,10 + .set r11,11 + .set r12,12 + .set r13,13 + .set r14,14 + .set r15,15 + .set r16,16 + .set r17,17 + .set r18,18 + .set r19,19 + .set r20,20 + .set r21,21 + .set r22,22 + .set r23,23 + .set r24,24 + .set r25,25 + .set r26,26 + .set r27,27 + .set r28,28 + .set r29,29 + .set r30,30 + .set r31,31 + .set f0,0 + .set f1,1 + .set f2,2 + .set f3,3 + .set f4,4 + .set f5,5 + .set f6,6 + .set f7,7 + .set f8,8 + .set f9,9 + .set f10,10 + .set f11,11 + .set f12,12 + .set f13,13 + .set f14,14 + .set f15,15 + .set f16,16 + .set f17,17 + .set f18,18 + .set f19,19 + .set f20,20 + .set f21,21 + + .extern .ffi_closure_helper_DARWIN + .extern .ffi_go_closure_helper_DARWIN + +#define LIBFFI_ASM +#define JUMPTARGET(name) name +#define L(x) x + .file "aix_closure.S" + .toc +LC..60: + .tc L..60[TC],L..60 + .csect .text[PR] + .align 2 + +.csect .text[PR] + .align 2 + .globl ffi_closure_ASM + .globl .ffi_closure_ASM +.csect ffi_closure_ASM[DS] +ffi_closure_ASM: +#ifdef __64BIT__ + .llong .ffi_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_closure_ASM: + .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + std r3, 48+(0*8)(r1) + std r4, 48+(1*8)(r1) + std r5, 48+(2*8)(r1) + std r6, 48+(3*8)(r1) + mflr r0 + + std r7, 48+(4*8)(r1) + std r8, 48+(5*8)(r1) + std r9, 48+(6*8)(r1) + std r10, 48+(7*8)(r1) + std r0, 16(r1) /* save the return address */ +LCFI..0: + /* 48 Bytes (Linkage Area) */ + /* 64 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 8 Bytes (alignment) */ + /* 240 Bytes */ + + stdu r1, -240(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..1: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 128+(0*8)(r1) + stfd f2, 128+(1*8)(r1) + stfd f3, 128+(2*8)(r1) + stfd f4, 128+(3*8)(r1) + stfd f5, 128+(4*8)(r1) + stfd f6, 128+(5*8)(r1) + stfd f7, 128+(6*8)(r1) + stfd f8, 128+(7*8)(r1) + stfd f9, 128+(8*8)(r1) + stfd f10, 128+(9*8)(r1) + stfd f11, 128+(10*8)(r1) + stfd f12, 128+(11*8)(r1) + stfd f13, 128+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + /* get the context pointer from the trampoline */ + mr r3, r11 + + /* now load up the pointer to the result storage */ + addi r4, r1, 112 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 288 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 128 + + /* make the call */ + bl .ffi_closure_helper_DARWIN + nop + +.Ldoneclosure: + + /* now r3 contains the return type */ + /* so use it to look up in a table */ + /* so we know how to deal with each type */ + + /* look up the proper starting point in table */ + /* by using return type as offset */ + lhz r3, 10(r3) /* load type from return type */ + ld r4, LC..60(2) /* get address of jump table */ + sldi r3, r3, 4 /* now multiply return type by 16 */ + ld r0, 240+16(r1) /* load return address */ + add r3, r3, r4 /* add contents of table to table address */ + mtctr r3 + bctr /* jump to it */ + +/* Each fragment must be exactly 16 bytes long (4 instructions). + Align to 16 byte boundary for cache and dispatch efficiency. */ + .align 4 + +L..60: +/* case FFI_TYPE_VOID */ + mtlr r0 + addi r1, r1, 240 + blr + nop + +/* case FFI_TYPE_INT */ + lwa r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_FLOAT */ + lfs f1, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_DOUBLE */ + lfd f1, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_LONGDOUBLE */ + lfd f1, 112+0(r1) + mtlr r0 + lfd f2, 112+8(r1) + b L..finish + +/* case FFI_TYPE_UINT8 */ + lbz r3, 112+7(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT8 */ + lbz r3, 112+7(r1) + mtlr r0 + extsb r3, r3 + b L..finish + +/* case FFI_TYPE_UINT16 */ + lhz r3, 112+6(r1) + mtlr r0 +L..finish: + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT16 */ + lha r3, 112+6(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_UINT32 */ + lwz r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT32 */ + lwa r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_UINT64 */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT64 */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_STRUCT */ + mtlr r0 + addi r1, r1, 240 + blr + nop + +/* case FFI_TYPE_POINTER */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr +LFE..0: + +#else /* ! __64BIT__ */ + + .long .ffi_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_closure_ASM: + .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + stw r3, 24+(0*4)(r1) + stw r4, 24+(1*4)(r1) + stw r5, 24+(2*4)(r1) + stw r6, 24+(3*4)(r1) + mflr r0 + + stw r7, 24+(4*4)(r1) + stw r8, 24+(5*4)(r1) + stw r9, 24+(6*4)(r1) + stw r10, 24+(7*4)(r1) + stw r0, 8(r1) +LCFI..0: + /* 24 Bytes (Linkage Area) */ + /* 32 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 176 Bytes */ + + stwu r1, -176(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..1: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 72+(0*8)(r1) + stfd f2, 72+(1*8)(r1) + stfd f3, 72+(2*8)(r1) + stfd f4, 72+(3*8)(r1) + stfd f5, 72+(4*8)(r1) + stfd f6, 72+(5*8)(r1) + stfd f7, 72+(6*8)(r1) + stfd f8, 72+(7*8)(r1) + stfd f9, 72+(8*8)(r1) + stfd f10, 72+(9*8)(r1) + stfd f11, 72+(10*8)(r1) + stfd f12, 72+(11*8)(r1) + stfd f13, 72+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + /* get the context pointer from the trampoline */ + mr r3, r11 + + /* now load up the pointer to the result storage */ + addi r4, r1, 56 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 200 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 72 + + /* make the call */ + bl .ffi_closure_helper_DARWIN + nop + +.Ldoneclosure: + + /* now r3 contains the return type */ + /* so use it to look up in a table */ + /* so we know how to deal with each type */ + + /* look up the proper starting point in table */ + /* by using return type as offset */ + lhz r3, 6(r3) /* load type from return type */ + lwz r4, LC..60(2) /* get address of jump table */ + slwi r3, r3, 4 /* now multiply return type by 16 */ + lwz r0, 176+8(r1) /* load return address */ + add r3, r3, r4 /* add contents of table to table address */ + mtctr r3 + bctr /* jump to it */ + +/* Each fragment must be exactly 16 bytes long (4 instructions). + Align to 16 byte boundary for cache and dispatch efficiency. */ + .align 4 + +L..60: +/* case FFI_TYPE_VOID */ + mtlr r0 + addi r1, r1, 176 + blr + nop + +/* case FFI_TYPE_INT */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_FLOAT */ + lfs f1, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_DOUBLE */ + lfd f1, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_LONGDOUBLE */ + lfd f1, 56+0(r1) + mtlr r0 + lfd f2, 56+8(r1) + b L..finish + +/* case FFI_TYPE_UINT8 */ + lbz r3, 56+3(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT8 */ + lbz r3, 56+3(r1) + mtlr r0 + extsb r3, r3 + b L..finish + +/* case FFI_TYPE_UINT16 */ + lhz r3, 56+2(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT16 */ + lha r3, 56+2(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_UINT32 */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT32 */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_UINT64 */ + lwz r3, 56+0(r1) + mtlr r0 + lwz r4, 56+4(r1) + b L..finish + +/* case FFI_TYPE_SINT64 */ + lwz r3, 56+0(r1) + mtlr r0 + lwz r4, 56+4(r1) + b L..finish + +/* case FFI_TYPE_STRUCT */ + mtlr r0 + addi r1, r1, 176 + blr + nop + +/* case FFI_TYPE_POINTER */ + lwz r3, 56+0(r1) + mtlr r0 +L..finish: + addi r1, r1, 176 + blr +LFE..0: +#endif + .ef __LINE__ +/* END(ffi_closure_ASM) */ + + +.csect .text[PR] + .align 2 + .globl ffi_go_closure_ASM + .globl .ffi_go_closure_ASM +.csect ffi_go_closure_ASM[DS] +ffi_go_closure_ASM: +#ifdef __64BIT__ + .llong .ffi_go_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_go_closure_ASM: + .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + std r3, 48+(0*8)(r1) + std r4, 48+(1*8)(r1) + std r5, 48+(2*8)(r1) + std r6, 48+(3*8)(r1) + mflr r0 + + std r7, 48+(4*8)(r1) + std r8, 48+(5*8)(r1) + std r9, 48+(6*8)(r1) + std r10, 48+(7*8)(r1) + std r0, 16(r1) /* save the return address */ +LCFI..2: + /* 48 Bytes (Linkage Area) */ + /* 64 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 8 Bytes (alignment) */ + /* 240 Bytes */ + + stdu r1, -240(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..3: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 128+(0*8)(r1) + stfd f2, 128+(1*8)(r1) + stfd f3, 128+(2*8)(r1) + stfd f4, 128+(3*8)(r1) + stfd f5, 128+(4*8)(r1) + stfd f6, 128+(5*8)(r1) + stfd f7, 128+(6*8)(r1) + stfd f8, 128+(7*8)(r1) + stfd f9, 128+(8*8)(r1) + stfd f10, 128+(9*8)(r1) + stfd f11, 128+(10*8)(r1) + stfd f12, 128+(11*8)(r1) + stfd f13, 128+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + mr r3, r11 /* go closure */ + + /* now load up the pointer to the result storage */ + addi r4, r1, 112 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 288 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 128 + + /* make the call */ + bl .ffi_go_closure_helper_DARWIN + nop + + b .Ldoneclosure +LFE..1: + +#else /* ! __64BIT__ */ + + .long .ffi_go_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_go_closure_ASM: + .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + stw r3, 24+(0*4)(r1) + stw r4, 24+(1*4)(r1) + stw r5, 24+(2*4)(r1) + stw r6, 24+(3*4)(r1) + mflr r0 + + stw r7, 24+(4*4)(r1) + stw r8, 24+(5*4)(r1) + stw r9, 24+(6*4)(r1) + stw r10, 24+(7*4)(r1) + stw r0, 8(r1) +LCFI..2: + /* 24 Bytes (Linkage Area) */ + /* 32 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 176 Bytes */ + + stwu r1, -176(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..3: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 72+(0*8)(r1) + stfd f2, 72+(1*8)(r1) + stfd f3, 72+(2*8)(r1) + stfd f4, 72+(3*8)(r1) + stfd f5, 72+(4*8)(r1) + stfd f6, 72+(5*8)(r1) + stfd f7, 72+(6*8)(r1) + stfd f8, 72+(7*8)(r1) + stfd f9, 72+(8*8)(r1) + stfd f10, 72+(9*8)(r1) + stfd f11, 72+(10*8)(r1) + stfd f12, 72+(11*8)(r1) + stfd f13, 72+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + mr r3, 11 /* go closure */ + + /* now load up the pointer to the result storage */ + addi r4, r1, 56 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 200 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 72 + + /* make the call */ + bl .ffi_go_closure_helper_DARWIN + nop + + b .Ldoneclosure +LFE..1: +#endif + .ef __LINE__ +/* END(ffi_go_closure_ASM) */ + +/* EH frame stuff. */ + +#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */ +#ifdef __64BIT__ +#define PTRSIZE 8 +#define LOG2_PTRSIZE 3 +#define CFA_OFFSET 0xf0,0x01 /* LEB128 240 */ +#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */ +#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */ +#else +#define PTRSIZE 4 +#define LOG2_PTRSIZE 2 +#define CFA_OFFSET 0xb0,0x01 /* LEB128 176 */ +#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */ +#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */ +#endif + + .csect _unwind.ro_[RO],4 + .align LOG2_PTRSIZE + .globl _GLOBAL__F_libffi_src_powerpc_aix_closure +_GLOBAL__F_libffi_src_powerpc_aix_closure: +Lframe..1: + .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */ +LSCIE..1: + .vbyte 4,0 /* CIE Identifier Tag */ + .byte 0x3 /* CIE Version */ + .byte "zR" /* CIE Augmentation */ + .byte 0 + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */ + .byte LR_REGNO /* CIE RA Column */ + .byte 0x1 /* uleb128 0x1; Augmentation size */ + .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */ + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0x1 /* uleb128 0x1; Register r1 */ + .byte 0 /* uleb128 0x0; Offset 0 */ + .align LOG2_PTRSIZE +LECIE..1: +LSFDE..1: + .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */ +LASFDE..1: + .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..1-LCFI..0 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte CFA_OFFSET /* uleb128 176/240 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..0-LFB..0 + .byte 0x11 /* DW_CFA_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .align LOG2_PTRSIZE +LEFDE..1: +LSFDE..2: + .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */ +LASFDE..2: + .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..3-LCFI..2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte CFA_OFFSET /* uleb128 176/240 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..2-LFB..1 + .byte 0x11 /* DW_CFA_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .align LOG2_PTRSIZE +LEFDE..2: + .vbyte 4,0 /* End of FDEs */ + + .csect .text[PR] + .ref _GLOBAL__F_libffi_src_powerpc_aix_closure /* Prevents garbage collection by AIX linker */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/asm.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/asm.h new file mode 100644 index 0000000000..27b22f670a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/asm.h @@ -0,0 +1,125 @@ +/* ----------------------------------------------------------------------- + asm.h - Copyright (c) 1998 Geoffrey Keating + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define ASM_GLOBAL_DIRECTIVE .globl + + +#define C_SYMBOL_NAME(name) name +/* Macro for a label. */ +#ifdef __STDC__ +#define C_LABEL(name) name##: +#else +#define C_LABEL(name) name/**/: +#endif + +/* This seems to always be the case on PPC. */ +#define ALIGNARG(log2) log2 +/* For ELF we need the `.type' directive to make shared libs work right. */ +#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; +#define ASM_SIZE_DIRECTIVE(name) .size name,.-name + +/* If compiled for profiling, call `_mcount' at the start of each function. */ +#ifdef PROF +/* The mcount code relies on the return address being on the stack + to locate our caller and so it can restore it; so store one just + for its benefit. */ +#ifdef PIC +#define CALL_MCOUNT \ + .pushsection; \ + .section ".data"; \ + .align ALIGNARG(2); \ +0:.long 0; \ + .previous; \ + mflr %r0; \ + stw %r0,4(%r1); \ + bl _GLOBAL_OFFSET_TABLE_@local-4; \ + mflr %r11; \ + lwz %r0,0b@got(%r11); \ + bl JUMPTARGET(_mcount); +#else /* PIC */ +#define CALL_MCOUNT \ + .section ".data"; \ + .align ALIGNARG(2); \ +0:.long 0; \ + .previous; \ + mflr %r0; \ + lis %r11,0b@ha; \ + stw %r0,4(%r1); \ + addi %r0,%r11,0b@l; \ + bl JUMPTARGET(_mcount); +#endif /* PIC */ +#else /* PROF */ +#define CALL_MCOUNT /* Do nothing. */ +#endif /* PROF */ + +#define ENTRY(name) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(2); \ + C_LABEL(name) \ + CALL_MCOUNT + +#define EALIGN_W_0 /* No words to insert. */ +#define EALIGN_W_1 nop +#define EALIGN_W_2 nop;nop +#define EALIGN_W_3 nop;nop;nop +#define EALIGN_W_4 EALIGN_W_3;nop +#define EALIGN_W_5 EALIGN_W_4;nop +#define EALIGN_W_6 EALIGN_W_5;nop +#define EALIGN_W_7 EALIGN_W_6;nop + +/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes + past a 2^align boundary. */ +#ifdef PROF +#define EFFI_ALIGN(name, alignt, words) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(2); \ + C_LABEL(name) \ + CALL_MCOUNT \ + b 0f; \ + .align ALIGNARG(alignt); \ + EALIGN_W_##words; \ + 0: +#else /* PROF */ +#define EFFI_ALIGN(name, alignt, words) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(alignt); \ + EALIGN_W_##words; \ + C_LABEL(name) +#endif + +#define END(name) \ + ASM_SIZE_DIRECTIVE(name) + +#ifdef PIC +#define JUMPTARGET(name) name##@plt +#else +#define JUMPTARGET(name) name +#endif + +/* Local labels stripped out by the linker. */ +#define L(x) .L##x diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin.S new file mode 100644 index 0000000000..066eb82efe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin.S @@ -0,0 +1,378 @@ +/* ----------------------------------------------------------------------- + darwin.S - Copyright (c) 2000 John Hornkvist + Copyright (c) 2004, 2010 Free Software Foundation, Inc. + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#if defined(__ppc64__) +#define MODE_CHOICE(x, y) y +#else +#define MODE_CHOICE(x, y) x +#endif + +#define machine_choice MODE_CHOICE(ppc7400,ppc64) + +; Define some pseudo-opcodes for size-independent load & store of GPRs ... +#define lgu MODE_CHOICE(lwzu, ldu) +#define lg MODE_CHOICE(lwz,ld) +#define sg MODE_CHOICE(stw,std) +#define sgu MODE_CHOICE(stwu,stdu) +#define sgux MODE_CHOICE(stwux,stdux) + +; ... and the size of GPRs and their storage indicator. +#define GPR_BYTES MODE_CHOICE(4,8) +#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ +#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ + +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. +#define LINKAGE_SIZE MODE_CHOICE(24,48) +#define PARAM_AREA MODE_CHOICE(32,64) +#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ + +/* If there is any FP stuff we make space for all of the regs. */ +#define SAVED_FPR_COUNT 13 +#define FPR_SIZE 8 +#define RESULT_BYTES 16 + +/* This should be kept in step with the same value in ffi_darwin.c. */ +#define ASM_NEEDS_REGISTERS 4 +#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES) + +#include +#include + +#define JUMPTARGET(name) name +#define L(x) x + + .text + .align 2 + .globl _ffi_prep_args + + .align 2 + .globl _ffi_call_DARWIN + + /* We arrive here with: + r3 = ptr to extended cif. + r4 = -bytes. + r5 = cif flags. + r6 = ptr to return value. + r7 = fn pointer (user func). + r8 = fn pointer (ffi_prep_args). + r9 = ffi_type* for the ret val. */ + +_ffi_call_DARWIN: +Lstartcode: + mr r12,r8 /* We only need r12 until the call, + so it does not have to be saved. */ +LFB1: + /* Save the old stack pointer as AP. */ + mr r8,r1 +LCFI0: + + /* Save the retval type in parents frame. */ + sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8) + + /* Allocate the stack space we need. */ + sgux r1,r1,r4 + + /* Save registers we use. */ + mflr r9 + sg r9,SAVED_LR_OFFSET(r8) + + sg r28,-(4 * GPR_BYTES)(r8) + sg r29,-(3 * GPR_BYTES)(r8) + sg r30,-(2 * GPR_BYTES)(r8) + sg r31,-( GPR_BYTES)(r8) + +#if !defined(POWERPC_DARWIN) + /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ + sg r2,(5 * GPR_BYTES)(r1) +#endif + +LCFI1: + + /* Save arguments over call. */ + mr r31,r5 /* flags, */ + mr r30,r6 /* rvalue, */ + mr r29,r7 /* function address, */ + mr r28,r8 /* our AP. */ +LCFI2: + /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */ + mr r4,r1 + li r9,0 + + mtctr r12 /* r12 holds address of _ffi_prep_args. */ + bctrl + +#if !defined(POWERPC_DARWIN) + /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ + lg r2,(5 * GPR_BYTES)(r1) +#endif + /* Now do the call. + Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40,r31 + /* Get the address to call into CTR. */ + mtctr r29 + /* Load all those argument registers. + We have set up a nice stack frame, just load it into registers. */ + lg r3, (LINKAGE_SIZE )(r1) + lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1) + lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1) + lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1) + nop + lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1) + lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1) + lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1) + lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1) + +L1: + /* ... Load all the FP registers. */ + bf 6,L2 /* No floats to load. */ + lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) + lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) + lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) + lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) + nop + lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) + lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) + lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) + lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) + nop + lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) + lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) + lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) + lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) + nop + lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) + +L2: + mr r12,r29 /* Put the target address in r12 as specified. */ + mtctr r12 + nop + nop + + /* Make the call. */ + bctrl + + /* Now, deal with the return value. */ + + /* m64 structure returns can occupy the same set of registers as + would be used to pass such a structure as arg0 - so take care + not to step on any possibly hot regs. */ + + /* Get the flags.. */ + mtcrf 0x03,r31 ; we need c6 & cr7 now. + ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref. + bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING + bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT + + /* OK, so we have a struct. */ +#if defined(__ppc64__) + bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case + + /* OK, we have to map the return back to a mem struct. + We are about to trample the parents param area, so recover the + return type. r29 is free, since the call is done. */ + lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28) + + sg r3, (LINKAGE_SIZE )(r28) + sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28) + sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28) + sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28) + nop + sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28) + sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28) + sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28) + sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) + /* OK, so do the block move - we trust that memcpy will not trample + the fprs... */ + mr r3,r30 ; dest + addi r4,r28,LINKAGE_SIZE ; source + /* The size is a size_t, should be long. */ + lg r5,0(r29) + /* Figure out small structs */ + cmpi 0,r5,4 + bgt L3 ; 1, 2 and 4 bytes have special rules. + cmpi 0,r5,3 + beq L3 ; not 3 + addi r4,r4,8 + subf r4,r5,r4 +L3: + bl _memcpy + + /* ... do we need the FP registers? - recover the flags.. */ + mtcrf 0x03,r31 ; we need c6 & cr7 now. + bf 29,L(done_return_value) /* No floats in the struct. */ + stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) + stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) + stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) + stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) + nop + stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) + stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) + stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) + stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) + nop + stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) + stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) + stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) + stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) + nop + stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) + + mr r3,r29 ; ffi_type * + mr r4,r30 ; dest + addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs + xor r6,r6,r6 + sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) + addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter. + bl _darwin64_struct_floats_to_mem + + b L(done_return_value) +#else + stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes. +#endif + b L(done_return_value) + +L(fp_return_value): + /* Do we have long double to store? */ + bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS + stfd f1,0(r30) + stfd f2,FPR_SIZE(r30) + b L(done_return_value) + +L(fd_return_value): + /* Do we have double to store? */ + bf 28,L(float_return_value) + stfd f1,0(r30) + b L(done_return_value) + +L(float_return_value): + /* We only have a float to store. */ + stfs f1,0(r30) + b L(done_return_value) + +L(scalar_return_value): + bt 29,L(fp_return_value) ; FLAG_RETURNS_FP + ; ffi_arg is defined as unsigned long. + sg r3,0(r30) ; Save the reg. + bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS + +#if defined(__ppc64__) +L(maybe_return_128): + std r3,0(r30) + bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS + std r4,8(r30) +#else + stw r4,4(r30) +#endif + + /* Fall through. */ + /* We want this at the end to simplify eh epilog computation. */ + +L(done_return_value): + /* Restore the registers we used and return. */ + lg r29,SAVED_LR_OFFSET(r28) + ; epilog + lg r31,-(1 * GPR_BYTES)(r28) + mtlr r29 + lg r30,-(2 * GPR_BYTES)(r28) + lg r29,-(3 * GPR_BYTES)(r28) + lg r28,-(4 * GPR_BYTES)(r28) + lg r1,0(r1) + blr +LFE1: + .align 1 +/* END(_ffi_call_DARWIN) */ + +/* Provide a null definition of _ffi_call_AIX. */ + .text + .globl _ffi_call_AIX + .align 2 +_ffi_call_AIX: + blr +/* END(_ffi_call_AIX) */ + +/* EH stuff. */ + +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) + + .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$0,LECIE1-LSCIE1 + .long L$set$0 ; Length of Common Information Entry +LSCIE1: + .long 0x0 ; CIE Identifier Tag + .byte 0x1 ; CIE Version + .ascii "zR\0" ; CIE Augmentation + .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor + .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor + .byte 0x41 ; CIE RA Column + .byte 0x1 ; uleb128 0x1; Augmentation size + .byte 0x10 ; FDE Encoding (pcrel) + .byte 0xc ; DW_CFA_def_cfa + .byte 0x1 ; uleb128 0x1 + .byte 0x0 ; uleb128 0x0 + .align LOG2_GPR_BYTES +LECIE1: + + .globl _ffi_call_DARWIN.eh +_ffi_call_DARWIN.eh: +LSFDE1: + .set L$set$1,LEFDE1-LASFDE1 + .long L$set$1 ; FDE Length +LASFDE1: + .long LASFDE1-EH_frame1 ; FDE CIE offset + .g_long Lstartcode-. ; FDE initial location + .set L$set$3,LFE1-Lstartcode + .g_long L$set$3 ; FDE address range + .byte 0x0 ; uleb128 0x0; Augmentation size + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$4,LCFI0-Lstartcode + .long L$set$4 + .byte 0xd ; DW_CFA_def_cfa_register + .byte 0x08 ; uleb128 0x08 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$5,LCFI1-LCFI0 + .long L$set$5 + .byte 0x11 ; DW_CFA_offset_extended_sf + .byte 0x41 ; uleb128 0x41 + .byte 0x7e ; sleb128 -2 + .byte 0x9f ; DW_CFA_offset, column 0x1f + .byte 0x1 ; uleb128 0x1 + .byte 0x9e ; DW_CFA_offset, column 0x1e + .byte 0x2 ; uleb128 0x2 + .byte 0x9d ; DW_CFA_offset, column 0x1d + .byte 0x3 ; uleb128 0x3 + .byte 0x9c ; DW_CFA_offset, column 0x1c + .byte 0x4 ; uleb128 0x4 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$6,LCFI2-LCFI1 + .long L$set$6 + .byte 0xd ; DW_CFA_def_cfa_register + .byte 0x1c ; uleb128 0x1c + .align LOG2_GPR_BYTES +LEFDE1: + .align 1 + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin_closure.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin_closure.S new file mode 100644 index 0000000000..3121e6ac26 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/darwin_closure.S @@ -0,0 +1,571 @@ +/* ----------------------------------------------------------------------- + darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, + Free Software Foundation, Inc. + based on ppc_closure.S + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#define L(x) x + +#if defined(__ppc64__) +#define MODE_CHOICE(x, y) y +#else +#define MODE_CHOICE(x, y) x +#endif + +#define machine_choice MODE_CHOICE(ppc7400,ppc64) + +; Define some pseudo-opcodes for size-independent load & store of GPRs ... +#define lgu MODE_CHOICE(lwzu, ldu) +#define lg MODE_CHOICE(lwz,ld) +#define sg MODE_CHOICE(stw,std) +#define sgu MODE_CHOICE(stwu,stdu) + +; ... and the size of GPRs and their storage indicator. +#define GPR_BYTES MODE_CHOICE(4,8) +#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ +#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ + +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. +#define LINKAGE_SIZE MODE_CHOICE(24,48) +#define PARAM_AREA MODE_CHOICE(32,64) + +#define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */ +#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ + +/* WARNING: if ffi_type is changed... here be monsters. + Offsets of items within the result type. */ +#define FFI_TYPE_TYPE MODE_CHOICE(6,10) +#define FFI_TYPE_ELEM MODE_CHOICE(8,16) + +#define SAVED_FPR_COUNT 13 +#define FPR_SIZE 8 +/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */ +#define RESULT_BYTES MODE_CHOICE(16,176) + +; The whole stack frame **MUST** be 16byte-aligned. +#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL) +#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)) + +#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE) +#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA) + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 +; We no longer need the pic symbol stub for Darwin >= 9. +#define BLCLS_HELP _ffi_closure_helper_DARWIN +#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p +#define PASS_STR_FLOATS _darwin64_pass_struct_floats +#undef WANT_STUB +#else +#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub +#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub +#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub +#define WANT_STUB +#endif + +/* m32/m64 + + The stack layout looks like this: + + | Additional params... | | Higher address + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | + | Reserved 2*4/8 | | + |--------------------------------------------| | + | Space for callee`s LR 4/8 | | + |--------------------------------------------| | + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | + | Current backchain pointer 4/8 |-/ Parent`s frame. + |--------------------------------------------| <+ <<< on entry to + | Result Bytes 16/176 | | + |--------------------------------------------| | + ~ padding to 16-byte alignment ~ ~ + |--------------------------------------------| | + | NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 13*8 | | + |--------------------------------------------| | + | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved [compiler,binder] 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callees LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< call. + +*/ + + .file "darwin_closure.S" + + .machine machine_choice + + .text + .globl _ffi_closure_ASM + .align LOG2_GPR_BYTES +_ffi_closure_ASM: +LFB1: +Lstartcode: + mflr r0 /* extract return address */ + sg r0,SAVED_LR_OFFSET(r1) /* save the return address */ +LCFI0: + sgu r1,-SAVE_SIZE(r1) /* skip over caller save area + keep stack aligned to 16. */ +LCFI1: + /* We want to build up an area for the parameters passed + in registers. (both floating point and integer) */ + + /* Put gpr 3 to gpr 10 in the parents outgoing area... + ... the remainder of any params that overflowed the regs will + follow here. */ + sg r3, (PARENT_PARM_BASE )(r1) + sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1) + sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1) + sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1) + sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1) + sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1) + sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1) + sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1) + + /* We save fpr 1 to fpr 14 in our own save frame. */ + stfd f1, (FP_SAVE_BASE )(r1) + stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) + stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) + stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) + stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) + stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) + stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) + stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) + stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) + stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) + stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) + stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) + stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) + + /* Set up registers for the routine that actually does the work + get the context pointer from the trampoline. */ + mr r3,r11 + + /* Now load up the pointer to the result storage. */ + addi r4,r1,(SAVE_SIZE-RESULT_BYTES) + + /* Now load up the pointer to the saved gpr registers. */ + addi r5,r1,PARENT_PARM_BASE + + /* Now load up the pointer to the saved fpr registers. */ + addi r6,r1,FP_SAVE_BASE + + /* Make the call. */ + bl BLCLS_HELP + + /* r3 contains the rtype pointer... save it since we will need + it later. */ + sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type + lg r0,0(r3) ; size => r0 + lhz r3,FFI_TYPE_TYPE(r3) ; type => r3 + + /* The helper will have intercepted structure returns and inserted + the caller`s destination address for structs returned by ref. */ + + /* r3 contains the return type so use it to look up in a table + so we know how to deal with each type. */ + + addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */ + bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */ + mflr r4 /* Move to r4. */ + slwi r3,r3,4 /* Now multiply return type by 16. */ + add r3,r3,r4 /* Add contents of table to table address. */ + mtctr r3 + bctr /* Jump to it. */ +LFE1: +/* Each of the ret_typeX code fragments has to be exactly 16 bytes long + (4 instructions). For cache effectiveness we align to a 16 byte boundary + first. */ + + .align 4 + + nop + nop + nop +Lget_ret_type0_addr: + blrl + +/* case FFI_TYPE_VOID */ +Lret_type0: + b Lfinish + nop + nop + nop + +/* case FFI_TYPE_INT */ +Lret_type1: + lg r3,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_FLOAT */ +Lret_type2: + lfs f1,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_DOUBLE */ +Lret_type3: + lfd f1,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_LONGDOUBLE */ +Lret_type4: + lfd f1,0(r5) + lfd f2,8(r5) + b Lfinish + nop + +/* case FFI_TYPE_UINT8 */ +Lret_type5: +#if defined(__ppc64__) + lbz r3,7(r5) +#else + lbz r3,3(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT8 */ +Lret_type6: +#if defined(__ppc64__) + lbz r3,7(r5) +#else + lbz r3,3(r5) +#endif + extsb r3,r3 + b Lfinish + nop + +/* case FFI_TYPE_UINT16 */ +Lret_type7: +#if defined(__ppc64__) + lhz r3,6(r5) +#else + lhz r3,2(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT16 */ +Lret_type8: +#if defined(__ppc64__) + lha r3,6(r5) +#else + lha r3,2(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_UINT32 */ +Lret_type9: +#if defined(__ppc64__) + lwz r3,4(r5) +#else + lwz r3,0(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT32 */ +Lret_type10: +#if defined(__ppc64__) + lwz r3,4(r5) +#else + lwz r3,0(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_UINT64 */ +Lret_type11: +#if defined(__ppc64__) + lg r3,0(r5) + b Lfinish + nop +#else + lwz r3,0(r5) + lwz r4,4(r5) + b Lfinish +#endif + nop + +/* case FFI_TYPE_SINT64 */ +Lret_type12: +#if defined(__ppc64__) + lg r3,0(r5) + b Lfinish + nop +#else + lwz r3,0(r5) + lwz r4,4(r5) + b Lfinish +#endif + nop + +/* case FFI_TYPE_STRUCT */ +Lret_type13: +#if defined(__ppc64__) + lg r3,0(r5) ; we need at least this... + cmpi 0,r0,4 + bgt Lstructend ; not a special small case + b Lsmallstruct ; see if we need more. +#else + cmpwi 0,r0,4 + bgt Lfinish ; not by value + lg r3,0(r5) + b Lfinish +#endif +/* case FFI_TYPE_POINTER */ +Lret_type14: + lg r3,0(r5) + b Lfinish + nop + nop + +#if defined(__ppc64__) +Lsmallstruct: + beq Lfour ; continuation of Lret13. + cmpi 0,r0,3 + beq Lfinish ; don`t adjust this - can`t be any floats here... + srdi r3,r3,48 + cmpi 0,r0,2 + beq Lfinish ; .. or here .. + srdi r3,r3,8 + b Lfinish ; .. or here. + +Lfour: + lg r6,LINKAGE_SIZE(r1) ; get the result type + lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer + lg r6,0(r6) ; first element + lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type + cmpi 0,r0,2 ; FFI_TYPE_FLOAT + bne Lfourint + lfs f1,0(r5) ; just one float in the struct. + b Lfinish + +Lfourint: + srdi r3,r3,32 ; four bytes. + b Lfinish + +Lstructend: + lg r3,LINKAGE_SIZE(r1) ; get the result type + bl STRUCT_RETVALUE_P + cmpi 0,r3,0 + beq Lfinish ; nope. + /* Recover a pointer to the results. */ + addi r11,r1,(SAVE_SIZE-RESULT_BYTES) + lg r3,0(r11) ; we need at least this... + lg r4,8(r11) + cmpi 0,r0,16 + beq Lfinish ; special case 16 bytes we don't consider floats. + + /* OK, frustratingly, the process of saving the struct to mem might have + messed with the FPRs, so we have to re-load them :(. + We`ll use our FPRs space again - calling: + void darwin64_pass_struct_floats (ffi_type *s, char *src, + unsigned *nfpr, double **fprs) + We`ll temporarily pinch the first two slots of the param area for local + vars used by the routine. */ + xor r6,r6,r6 + addi r5,r1,PARENT_PARM_BASE ; some space + sg r6,0(r5) ; *nfpr zeroed. + addi r6,r5,8 ; **fprs + addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space + sg r3,0(r6) + mr r4,r11 ; the struct is here... + lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type. + bl PASS_STR_FLOATS ; get struct floats into FPR save space. + /* See if we used any floats */ + lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1) + cmpi 0,r0,0 + beq Lstructints ; nope. + /* OK load `em up... */ + lfd f1, (FP_SAVE_BASE )(r1) + lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) + lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) + lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) + lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) + lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) + lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) + lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) + lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) + lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) + lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) + lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) + lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) + + /* point back at our saved struct. */ +Lstructints: + addi r11,r1,(SAVE_SIZE-RESULT_BYTES) + lg r3,0(r11) ; we end up picking the + lg r4,8(r11) ; first two again. + lg r5,16(r11) + lg r6,24(r11) + lg r7,32(r11) + lg r8,40(r11) + lg r9,48(r11) + lg r10,56(r11) +#endif + +/* case done */ +Lfinish: + addi r1,r1,SAVE_SIZE /* Restore stack pointer. */ + lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */ + mtlr r0 /* Reset link register. */ + blr +Lendcode: + .align 1 + +/* END(ffi_closure_ASM) */ + +/* EH frame stuff. */ +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) +/* 176, 400 */ +#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90) +#define EH_FRAME_OFFSETB MODE_CHOICE(1,3) + + .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$0,LECIE1-LSCIE1 + .long L$set$0 ; Length of Common Information Entry +LSCIE1: + .long 0x0 ; CIE Identifier Tag + .byte 0x1 ; CIE Version + .ascii "zR\0" ; CIE Augmentation + .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor + .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor + .byte 0x41 ; CIE RA Column + .byte 0x1 ; uleb128 0x1; Augmentation size + .byte 0x10 ; FDE Encoding (pcrel) + .byte 0xc ; DW_CFA_def_cfa + .byte 0x1 ; uleb128 0x1 + .byte 0x0 ; uleb128 0x0 + .align LOG2_GPR_BYTES +LECIE1: + .globl _ffi_closure_ASM.eh +_ffi_closure_ASM.eh: +LSFDE1: + .set L$set$1,LEFDE1-LASFDE1 + .long L$set$1 ; FDE Length + +LASFDE1: + .long LASFDE1-EH_frame1 ; FDE CIE offset + .g_long Lstartcode-. ; FDE initial location + .set L$set$2,LFE1-Lstartcode + .g_long L$set$2 ; FDE address range + .byte 0x0 ; uleb128 0x0; Augmentation size + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$3,LCFI1-LCFI0 + .long L$set$3 + .byte 0xe ; DW_CFA_def_cfa_offset + .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$4,LCFI0-Lstartcode + .long L$set$4 + .byte 0x11 ; DW_CFA_offset_extended_sf + .byte 0x41 ; uleb128 0x41 + .byte 0x7e ; sleb128 -2 + .align LOG2_GPR_BYTES +LEFDE1: + .align 1 + +#ifdef WANT_STUB + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_ffi_closure_helper_DARWIN$stub: + .indirect_symbol _ffi_closure_helper_DARWIN + mflr r0 + bcl 20,31,"L1$spb" +"L1$spb": + mflr r11 + addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb") + mtlr r0 + lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_ffi_closure_helper_DARWIN$lazy_ptr: + .indirect_symbol _ffi_closure_helper_DARWIN + .g_long dyld_stub_binding_helper + +#if defined(__ppc64__) + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_darwin64_struct_ret_by_value_p$stub: + .indirect_symbol _darwin64_struct_ret_by_value_p + mflr r0 + bcl 20,31,"L2$spb" +"L2$spb": + mflr r11 + addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb") + mtlr r0 + lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_darwin64_struct_ret_by_value_p$lazy_ptr: + .indirect_symbol _darwin64_struct_ret_by_value_p + .g_long dyld_stub_binding_helper + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_darwin64_pass_struct_floats$stub: + .indirect_symbol _darwin64_pass_struct_floats + mflr r0 + bcl 20,31,"L3$spb" +"L3$spb": + mflr r11 + addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb") + mtlr r0 + lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_darwin64_pass_struct_floats$lazy_ptr: + .indirect_symbol _darwin64_pass_struct_floats + .g_long dyld_stub_binding_helper +# endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi.c new file mode 100644 index 0000000000..7eb543e4b3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi.c @@ -0,0 +1,173 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include "ffi.h" +#include "ffi_common.h" +#include "ffi_powerpc.h" + +#if HAVE_LONG_DOUBLE_VARIANT +/* Adjust ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types (ffi_abi abi) +{ +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# ifdef POWERPC64 + ffi_prep_types_linux64 (abi); +# else + ffi_prep_types_sysv (abi); +# endif +# endif +} +#endif + +/* Perform machine dependent cif processing */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep (ffi_cif *cif) +{ +#ifdef POWERPC64 + return ffi_prep_cif_linux64 (cif); +#else + return ffi_prep_cif_sysv (cif); +#endif +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var (ffi_cif *cif, + unsigned int nfixedargs MAYBE_UNUSED, + unsigned int ntotalargs MAYBE_UNUSED) +{ +#ifdef POWERPC64 + return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs); +#else + return ffi_prep_cif_sysv (cif); +#endif +} + +static void +ffi_call_int (ffi_cif *cif, + void (*fn) (void), + void *rvalue, + void **avalue, + void *closure) +{ + /* The final SYSV ABI says that structures smaller or equal 8 bytes + are returned in r3/r4. A draft ABI used by linux instead returns + them in memory. + + We bounce-buffer SYSV small struct return values so that sysv.S + can write r3 and r4 to memory without worrying about struct size. + + For ELFv2 ABI, use a bounce buffer for homogeneous structs too, + for similar reasons. */ + unsigned long smst_buffer[8]; + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + ecif.rvalue = rvalue; + if ((cif->flags & FLAG_RETURNS_SMST) != 0) + ecif.rvalue = smst_buffer; + /* Ensure that we have a valid struct return value. + FIXME: Isn't this just papering over a user problem? */ + else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT) + ecif.rvalue = alloca (cif->rtype->size); + +#ifdef POWERPC64 + ffi_call_LINUX64 (&ecif, fn, ecif.rvalue, cif->flags, closure, + -(long) cif->bytes); +#else + ffi_call_SYSV (&ecif, fn, ecif.rvalue, cif->flags, closure, -cif->bytes); +#endif + + /* Check for a bounce-buffered return value */ + if (rvalue && ecif.rvalue == smst_buffer) + { + unsigned int rsize = cif->rtype->size; +#ifndef __LITTLE_ENDIAN__ + /* The SYSV ABI returns a structure of up to 4 bytes in size + left-padded in r3. */ +# ifndef POWERPC64 + if (rsize <= 4) + memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize); + else +# endif + /* The SYSV ABI returns a structure of up to 8 bytes in size + left-padded in r3/r4, and the ELFv2 ABI similarly returns a + structure of up to 8 bytes in size left-padded in r3. */ + if (rsize <= 8) + memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize); + else +#endif + memcpy (rvalue, smst_buffer, rsize); + } +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ +#ifdef POWERPC64 + return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc); +#else + return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc); +#endif +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ +#ifdef POWERPC64 + closure->tramp = ffi_go_closure_linux64; +#else + closure->tramp = ffi_go_closure_sysv; +#endif + closure->cif = cif; + closure->fun = fun; + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c new file mode 100644 index 0000000000..61a18c4911 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c @@ -0,0 +1,1440 @@ +/* ----------------------------------------------------------------------- + ffi_darwin.c + + Copyright (C) 1998 Geoffrey Keating + Copyright (C) 2001 John Hornkvist + Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. + + FFI support for Darwin and AIX. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +extern void ffi_closure_ASM (void); +extern void ffi_go_closure_ASM (void); + +enum { + /* The assembly depends on these exact flags. + For Darwin64 (when FLAG_RETURNS_STRUCT is set): + FLAG_RETURNS_FP indicates that the structure embeds FP data. + FLAG_RETURNS_128BITS signals a special struct size that is not + expanded for float content. */ + FLAG_RETURNS_128BITS = 1 << (31-31), /* These go in cr7 */ + FLAG_RETURNS_NOTHING = 1 << (31-30), + FLAG_RETURNS_FP = 1 << (31-29), + FLAG_RETURNS_64BITS = 1 << (31-28), + + FLAG_RETURNS_STRUCT = 1 << (31-27), /* This goes in cr6 */ + + FLAG_ARG_NEEDS_COPY = 1 << (31- 7), + FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ + FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), + FLAG_RETVAL_REFERENCE = 1 << (31- 4) +}; + +/* About the DARWIN ABI. */ +enum { + NUM_GPR_ARG_REGISTERS = 8, + NUM_FPR_ARG_REGISTERS = 13, + LINKAGE_AREA_GPRS = 6 +}; + +enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */ + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments. + + m32/m64 + + The stack layout we want looks like this: + + | Return address from ffi_call_DARWIN | higher addresses + |--------------------------------------------| + | Previous backchain pointer 4/8 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | ASM_NEEDS_REGISTERS=r28-r31 4*(4/8) | | ffi_call_DARWIN + |--------------------------------------------| | + | When we have any FP activity... the | | + | FPRs occupy NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 from high to low addr. | | + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callee's LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< ffi_call_DARWIN + + */ + +#if defined(POWERPC_DARWIN64) +static void +darwin64_pass_struct_by_value + (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **); +#endif + +/* This depends on GPR_SIZE = sizeof (unsigned long) */ + +void +ffi_prep_args (extended_cif *ecif, unsigned long *const stack) +{ + const unsigned bytes = ecif->cif->bytes; + const unsigned flags = ecif->cif->flags; + const unsigned nargs = ecif->cif->nargs; +#if !defined(POWERPC_DARWIN64) + const ffi_abi abi = ecif->cif->abi; +#endif + + /* 'stacktop' points at the previous backchain pointer. */ + unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long)); + + /* 'fpr_base' points at the space for fpr1, and grows upwards as + we use FPR registers. */ + double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS; + int gp_count = 0, fparg_count = 0; + + /* 'next_arg' grows up as we put parameters in it. */ + unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions. */ + + int i; + double double_tmp; + void **p_argv = ecif->avalue; + unsigned long gprvalue; + ffi_type** ptr = ecif->cif->arg_types; +#if !defined(POWERPC_DARWIN64) + char *dest_cpy; +#endif + unsigned size_al = 0; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0); + FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0); + FFI_ASSERT((bytes & 0xF) == 0); + + /* Deal with return values that are actually pass-by-reference. + Rule: + Return values are referenced by r3, so r4 is the first parameter. */ + + if (flags & FLAG_RETVAL_REFERENCE) + *next_arg++ = (unsigned long) (char *) ecif->rvalue; + + /* Now for the arguments. */ + for (i = nargs; i > 0; i--, ptr++, p_argv++) + { + switch ((*ptr)->type) + { + /* If a floating-point parameter appears before all of the general- + purpose registers are filled, the corresponding GPRs that match + the size of the floating-point parameter are skipped. */ + case FFI_TYPE_FLOAT: + double_tmp = *(float *) *p_argv; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; +#if defined(POWERPC_DARWIN) + *(float *)next_arg = *(float *) *p_argv; +#else + *(double *)next_arg = double_tmp; +#endif + next_arg++; + gp_count++; + fparg_count++; + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_DOUBLE: + double_tmp = *(double *) *p_argv; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *)next_arg = double_tmp; +#ifdef POWERPC64 + next_arg++; + gp_count++; +#else + next_arg += 2; + gp_count += 2; +#endif + fparg_count++; + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + + case FFI_TYPE_LONGDOUBLE: +# if defined(POWERPC64) && !defined(POWERPC_DARWIN64) + /* ??? This will exceed the regs count when the value starts at fp13 + and it will not put the extra bit on the stack. */ + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *(long double *) fpr_base++ = *(long double *) *p_argv; + else + *(long double *) next_arg = *(long double *) *p_argv; + next_arg += 2; + fparg_count += 2; +# else + double_tmp = ((double *) *p_argv)[0]; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *) next_arg = double_tmp; +# if defined(POWERPC_DARWIN64) + next_arg++; + gp_count++; +# else + next_arg += 2; + gp_count += 2; +# endif + fparg_count++; + double_tmp = ((double *) *p_argv)[1]; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *) next_arg = double_tmp; +# if defined(POWERPC_DARWIN64) + next_arg++; + gp_count++; +# else + next_arg += 2; + gp_count += 2; +# endif + fparg_count++; +# endif + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; +#endif + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef POWERPC64 + gprvalue = *(long long *) *p_argv; + goto putgpr; +#else + *(long long *) next_arg = *(long long *) *p_argv; + next_arg += 2; + gp_count += 2; +#endif + break; + case FFI_TYPE_POINTER: + gprvalue = *(unsigned long *) *p_argv; + goto putgpr; + case FFI_TYPE_UINT8: + gprvalue = *(unsigned char *) *p_argv; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = *(signed char *) *p_argv; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = *(unsigned short *) *p_argv; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = *(signed short *) *p_argv; + goto putgpr; + + case FFI_TYPE_STRUCT: + size_al = (*ptr)->size; +#if defined(POWERPC_DARWIN64) + next_arg = (unsigned long *)FFI_ALIGN((char *)next_arg, (*ptr)->alignment); + darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, + (unsigned) size_al, + (unsigned int *) &fparg_count, + &fpr_base, &next_arg); +#else + dest_cpy = (char *) next_arg; + + /* If the first member of the struct is a double, then include enough + padding in the struct size to align it to double-word. */ + if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN((*ptr)->size, 8); + +# if defined(POWERPC64) + FFI_ASSERT (abi != FFI_DARWIN); + memcpy ((char *) dest_cpy, (char *) *p_argv, size_al); + next_arg += (size_al + 7) / 8; +# else + /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, + SI 4 bytes) are aligned as if they were those modes. + Structures with 3 byte in size are padded upwards. */ + if (size_al < 3 && abi == FFI_DARWIN) + dest_cpy += 4 - size_al; + + memcpy((char *) dest_cpy, (char *) *p_argv, size_al); + next_arg += (size_al + 3) / 4; +# endif +#endif + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + gprvalue = *(signed int *) *p_argv; + goto putgpr; + + case FFI_TYPE_UINT32: + gprvalue = *(unsigned int *) *p_argv; + putgpr: + *next_arg++ = gprvalue; + gp_count++; + break; + default: + break; + } + } + + /* Check that we didn't overrun the stack... */ + /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS); + FFI_ASSERT((unsigned *)fpr_base + <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); + FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); */ +} + +#if defined(POWERPC_DARWIN64) + +/* See if we can put some of the struct into fprs. + This should not be called for structures of size 16 bytes, since these are not + broken out this way. */ +static void +darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr) +{ + int i; + + FFI_ASSERT (s->type == FFI_TYPE_STRUCT) + + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p = s->elements[i]; + switch (p->type) + { + case FFI_TYPE_STRUCT: + darwin64_scan_struct_for_floats (p, nfpr); + break; + case FFI_TYPE_LONGDOUBLE: + (*nfpr) += 2; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_FLOAT: + (*nfpr) += 1; + break; + default: + break; + } + } +} + +static int +darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr) +{ + unsigned struct_offset=0, i; + + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + + item_base = src + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr)) + return 1; + break; + case FFI_TYPE_LONGDOUBLE: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + break; + case FFI_TYPE_FLOAT: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + break; + default: + /* If we try and place any item, that is non-float, once we've + exceeded the 8 GPR mark, then we can't fit the struct. */ + if ((unsigned long)item_base >= 8*8) + return 1; + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + return 0; +} + +/* Can this struct be returned by value? */ +int +darwin64_struct_ret_by_value_p (ffi_type *s) +{ + unsigned nfp = 0; + + FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT); + + /* The largest structure we can return is 8long + 13 doubles. */ + if (s->size > 168) + return 0; + + /* We can't pass more than 13 floats. */ + darwin64_scan_struct_for_floats (s, &nfp); + if (nfp > 13) + return 0; + + /* If there are not too many floats, and the struct is + small enough to accommodate in the GPRs, then it must be OK. */ + if (s->size <= 64) + return 1; + + /* Well, we have to look harder. */ + nfp = 0; + if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp)) + return 0; + + return 1; +} + +void +darwin64_pass_struct_floats (ffi_type *s, char *src, + unsigned *nfpr, double **fprs) +{ + int i; + double *fpr_base = *fprs; + unsigned struct_offset = 0; + + /* We don't assume anything about the alignment of the source. */ + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + item_base = src + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + darwin64_pass_struct_floats (p, item_base, nfpr, + &fpr_base); + break; + case FFI_TYPE_LONGDOUBLE: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = *(double *)item_base; + (*nfpr) += 1; + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = *(double *)item_base; + (*nfpr) += 1; + break; + case FFI_TYPE_FLOAT: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = (double) *(float *)item_base; + (*nfpr) += 1; + break; + default: + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + /* Update the scores. */ + *fprs = fpr_base; +} + +/* Darwin64 special rules. + Break out a struct into params and float registers. */ +static void +darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size, + unsigned *nfpr, double **fprs, unsigned long **arg) +{ + unsigned long *next_arg = *arg; + char *dest_cpy = (char *)next_arg; + + FFI_ASSERT (s->type == FFI_TYPE_STRUCT) + + if (!size) + return; + + /* First... special cases. */ + if (size < 3 + || (size == 4 + && s->elements[0] + && s->elements[0]->type != FFI_TYPE_FLOAT)) + { + /* Must be at least one GPR, padding is unspecified in value, + let's make it zero. */ + *next_arg = 0UL; + dest_cpy += 8 - size; + memcpy ((char *) dest_cpy, src, size); + next_arg++; + } + else if (size == 16) + { + memcpy ((char *) dest_cpy, src, size); + next_arg += 2; + } + else + { + /* now the general case, we consider embedded floats. */ + memcpy ((char *) dest_cpy, src, size); + darwin64_pass_struct_floats (s, src, nfpr, fprs); + next_arg += (size+7)/8; + } + + *arg = next_arg; +} + +double * +darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf) +{ + int i; + unsigned struct_offset = 0; + + /* We don't assume anything about the alignment of the source. */ + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + item_base = dest + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf); + break; + case FFI_TYPE_LONGDOUBLE: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(double *)item_base = *fprs++ ; + (*nf) += 1; + } + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(double *)item_base = *fprs++ ; + (*nf) += 1; + } + break; + case FFI_TYPE_FLOAT: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(float *)item_base = (float) *fprs++ ; + (*nf) += 1; + } + break; + default: + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + return fprs; +} + +#endif + +/* Adjust the size of S to be correct for Darwin. + On Darwin m32, the first field of a structure has natural alignment. + On Darwin m64, all fields have natural alignment. */ + +static void +darwin_adjust_aggregate_sizes (ffi_type *s) +{ + int i; + + if (s->type != FFI_TYPE_STRUCT) + return; + + s->size = 0; + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p; + int align; + + p = s->elements[i]; + if (p->type == FFI_TYPE_STRUCT) + darwin_adjust_aggregate_sizes (p); +#if defined(POWERPC_DARWIN64) + /* Natural alignment for all items. */ + align = p->alignment; +#else + /* Natural alignment for the first item... */ + if (i == 0) + align = p->alignment; + else if (p->alignment == 16 || p->alignment < 4) + /* .. subsequent items with vector or align < 4 have natural align. */ + align = p->alignment; + else + /* .. or align is 4. */ + align = 4; +#endif + /* Pad, if necessary, before adding the current item. */ + s->size = FFI_ALIGN(s->size, align) + p->size; + } + + s->size = FFI_ALIGN(s->size, s->alignment); + + /* This should not be necessary on m64, but harmless. */ + if (s->elements[0]->type == FFI_TYPE_UINT64 + || s->elements[0]->type == FFI_TYPE_SINT64 + || s->elements[0]->type == FFI_TYPE_DOUBLE + || s->elements[0]->alignment == 8) + s->alignment = s->alignment > 8 ? s->alignment : 8; + /* Do not add additional tail padding. */ +} + +/* Adjust the size of S to be correct for AIX. + Word-align double unless it is the first member of a structure. */ + +static void +aix_adjust_aggregate_sizes (ffi_type *s) +{ + int i; + + if (s->type != FFI_TYPE_STRUCT) + return; + + s->size = 0; + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p; + int align; + + p = s->elements[i]; + aix_adjust_aggregate_sizes (p); + align = p->alignment; + if (i != 0 && p->type == FFI_TYPE_DOUBLE) + align = 4; + s->size = FFI_ALIGN(s->size, align) + p->size; + } + + s->size = FFI_ALIGN(s->size, s->alignment); + + if (s->elements[0]->type == FFI_TYPE_UINT64 + || s->elements[0]->type == FFI_TYPE_SINT64 + || s->elements[0]->type == FFI_TYPE_DOUBLE + || s->elements[0]->alignment == 8) + s->alignment = s->alignment > 8 ? s->alignment : 8; + /* Do not add additional tail padding. */ +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* All this is for the DARWIN ABI. */ + unsigned i; + ffi_type **ptr; + unsigned bytes; + unsigned fparg_count = 0, intarg_count = 0; + unsigned flags = 0; + unsigned size_al = 0; + + /* All the machine-independent calculation of cif->bytes will be wrong. + All the calculation of structure sizes will also be wrong. + Redo the calculation for DARWIN. */ + + if (cif->abi == FFI_DARWIN) + { + darwin_adjust_aggregate_sizes (cif->rtype); + for (i = 0; i < cif->nargs; i++) + darwin_adjust_aggregate_sizes (cif->arg_types[i]); + } + + if (cif->abi == FFI_AIX) + { + aix_adjust_aggregate_sizes (cif->rtype); + for (i = 0; i < cif->nargs; i++) + aix_adjust_aggregate_sizes (cif->arg_types[i]); + } + + /* Space for the frame pointer, callee's LR, CR, etc, and for + the asm's temp regs. */ + + bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long); + + /* Return value handling. + The rules m32 are as follows: + - 32-bit (or less) integer values are returned in gpr3; + - structures of size <= 4 bytes also returned in gpr3; + - 64-bit integer values [??? and structures between 5 and 8 bytes] are + returned in gpr3 and gpr4; + - Single/double FP values are returned in fpr1; + - Long double FP (if not equivalent to double) values are returned in + fpr1 and fpr2; + m64: + - 64-bit or smaller integral values are returned in GPR3 + - Single/double FP values are returned in fpr1; + - Long double FP values are returned in fpr1 and fpr2; + m64 Structures: + - If the structure could be accommodated in registers were it to be the + first argument to a routine, then it is returned in those registers. + m32/m64 structures otherwise: + - Larger structures values are allocated space and a pointer is passed + as the first argument. */ + switch (cif->rtype->type) + { + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags |= FLAG_RETURNS_128BITS; + flags |= FLAG_RETURNS_FP; + break; +#endif + + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef POWERPC64 + case FFI_TYPE_POINTER: +#endif + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: +#if defined(POWERPC_DARWIN64) + { + /* Can we fit the struct into regs? */ + if (darwin64_struct_ret_by_value_p (cif->rtype)) + { + unsigned nfpr = 0; + flags |= FLAG_RETURNS_STRUCT; + if (cif->rtype->size != 16) + darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ; + else + flags |= FLAG_RETURNS_128BITS; + /* Will be 0 for 16byte struct. */ + if (nfpr) + flags |= FLAG_RETURNS_FP; + } + else /* By ref. */ + { + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; + } + } +#elif defined(DARWIN_PPC) + if (cif->rtype->size <= 4) + flags |= FLAG_RETURNS_STRUCT; + else /* else by reference. */ + { + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; + } +#else /* assume we pass by ref. */ + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; +#endif + break; + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the + first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest + goes on the stack. + ??? Structures are passed as a pointer to a copy of the structure. + Stuff on the stack needs to keep proper alignment. + For m64 the count is effectively of half-GPRs. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned align_words; + switch ((*ptr)->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + fparg_count++; +#if !defined(POWERPC_DARWIN64) + /* If this FP arg is going on the stack, it must be + 8-byte-aligned. */ + if (fparg_count > NUM_FPR_ARG_REGISTERS + && (intarg_count & 0x01) != 0) + intarg_count++; +#endif + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + fparg_count += 2; + /* If this FP arg is going on the stack, it must be + 16-byte-aligned. */ + if (fparg_count >= NUM_FPR_ARG_REGISTERS) +#if defined (POWERPC64) + intarg_count = FFI_ALIGN(intarg_count, 2); +#else + intarg_count = FFI_ALIGN(intarg_count, 4); +#endif + break; +#endif + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#if defined(POWERPC64) + intarg_count++; +#else + /* 'long long' arguments are passed as two words, but + either both words must fit in registers or both go + on the stack. If they go on the stack, they must + be 8-byte-aligned. */ + if (intarg_count == NUM_GPR_ARG_REGISTERS-1 + || (intarg_count >= NUM_GPR_ARG_REGISTERS + && (intarg_count & 0x01) != 0)) + intarg_count++; + intarg_count += 2; +#endif + break; + + case FFI_TYPE_STRUCT: + size_al = (*ptr)->size; +#if defined(POWERPC_DARWIN64) + align_words = (*ptr)->alignment >> 3; + if (align_words) + intarg_count = FFI_ALIGN(intarg_count, align_words); + /* Base size of the struct. */ + intarg_count += (size_al + 7) / 8; + /* If 16 bytes then don't worry about floats. */ + if (size_al != 16) + /* Scan through for floats to be placed in regs. */ + darwin64_scan_struct_for_floats (*ptr, &fparg_count) ; +#else + align_words = (*ptr)->alignment >> 2; + if (align_words) + intarg_count = FFI_ALIGN(intarg_count, align_words); + /* If the first member of the struct is a double, then align + the struct to double-word. + if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN((*ptr)->size, 8); */ +# ifdef POWERPC64 + intarg_count += (size_al + 7) / 8; +# else + intarg_count += (size_al + 3) / 4; +# endif +#endif + break; + + default: + /* Everything else is passed as a 4-byte word in a GPR, either + the object itself or a pointer to it. */ + intarg_count++; + break; + } + } + + if (fparg_count != 0) + flags |= FLAG_FP_ARGUMENTS; + +#if defined(POWERPC_DARWIN64) + /* Space to image the FPR registers, if needed - which includes when they might be + used in a struct return. */ + if (fparg_count != 0 + || ((flags & FLAG_RETURNS_STRUCT) + && (flags & FLAG_RETURNS_FP))) + bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); +#else + /* Space for the FPR registers, if needed. */ + if (fparg_count != 0) + bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); +#endif + + /* Stack space. */ +#ifdef POWERPC64 + if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS) + bytes += (intarg_count + fparg_count) * sizeof(long); +#else + if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS) + bytes += (intarg_count + 2 * fparg_count) * sizeof(long); +#endif + else + bytes += NUM_GPR_ARG_REGISTERS * sizeof(long); + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = FFI_ALIGN(bytes, 16) ; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void)); + +extern void ffi_call_go_AIX(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void), void *closure); + +extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void), ffi_type*); + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_AIX: + ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args)); + break; + case FFI_DARWIN: + ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args), cif->rtype); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_AIX: + ffi_call_go_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args), closure); + break; + default: + FFI_ASSERT(0); + break; + } +} + +static void flush_icache(char *); +static void flush_range(char *, int); + +/* The layout of a function descriptor. A C function pointer really + points to one of these. */ + +typedef struct aix_fd_struct { + void *code_pointer; + void *toc; +} aix_fd; + +/* here I'd like to add the stack frame layout we use in darwin_closure.S + and aix_closure.S + + m32/m64 + + The stack layout looks like this: + + | Additional params... | | Higher address + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | + | Reserved 2*4/8 | | + |--------------------------------------------| | + | Space for callee's LR 4/8 | | + |--------------------------------------------| | + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | + | Current backchain pointer 4/8 |-/ Parent's frame. + |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM + | Result Bytes 16 | | + |--------------------------------------------| | + ~ padding to 16-byte alignment ~ ~ + |--------------------------------------------| | + | NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 13*8 | | + |--------------------------------------------| | + | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved [compiler,binder] 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callee's LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< ffi_closure_ASM. + +*/ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + struct ffi_aix_trampoline_struct *tramp_aix; + aix_fd *fd; + + switch (cif->abi) + { + case FFI_DARWIN: + + FFI_ASSERT (cif->abi == FFI_DARWIN); + + tramp = (unsigned int *) &closure->tramp[0]; +#if defined(POWERPC_DARWIN64) + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f0015; /* bcl- 20,4*cr7+so, +0x18 (L1) */ + /* We put the addresses here. */ + tramp[6] = 0x7d6802a6; /*L1: mflr r11 */ + tramp[7] = 0xe98b0000; /* ld r12,0(r11) function address */ + tramp[8] = 0x7c0803a6; /* mtlr r0 */ + tramp[9] = 0x7d8903a6; /* mtctr r12 */ + tramp[10] = 0xe96b0008; /* lwz r11,8(r11) static chain */ + tramp[11] = 0x4e800420; /* bctr */ + + *((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function */ + *((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context */ +#else + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f000d; /* bcl- 20,4*cr7+so,0x10 */ + tramp[4] = 0x7d6802a6; /* mflr r11 */ + tramp[5] = 0x818b0000; /* lwz r12,0(r11) function address */ + tramp[6] = 0x7c0803a6; /* mtlr r0 */ + tramp[7] = 0x7d8903a6; /* mtctr r12 */ + tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ + tramp[9] = 0x4e800420; /* bctr */ + tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ + tramp[3] = (unsigned long) codeloc; /* context */ +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the icache. Only necessary on Darwin. */ + flush_range(codeloc, FFI_TRAMPOLINE_SIZE); + + break; + + case FFI_AIX: + + tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp); + fd = (aix_fd *)(void *)ffi_closure_ASM; + + FFI_ASSERT (cif->abi == FFI_AIX); + + tramp_aix->code_pointer = fd->code_pointer; + tramp_aix->toc = fd->toc; + tramp_aix->static_chain = codeloc; + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + break; + + default: + return FFI_BAD_ABI; + break; + } + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + switch (cif->abi) + { + case FFI_AIX: + + FFI_ASSERT (cif->abi == FFI_AIX); + + closure->tramp = (void *)ffi_go_closure_ASM; + closure->cif = cif; + closure->fun = fun; + return FFI_OK; + + // For now, ffi_prep_go_closure is only implemented for AIX, not for Darwin + default: + return FFI_BAD_ABI; + break; + } + return FFI_OK; +} + +static void +flush_icache(char *addr) +{ +#ifndef _AIX + __asm__ volatile ( + "dcbf 0,%0\n" + "\tsync\n" + "\ticbi 0,%0\n" + "\tsync\n" + "\tisync" + : : "r"(addr) : "memory"); +#endif +} + +static void +flush_range(char * addr1, int size) +{ +#define MIN_LINE_SIZE 32 + int i; + for (i = 0; i < size; i += MIN_LINE_SIZE) + flush_icache(addr1+i); + flush_icache(addr1+size-1); +} + +typedef union +{ + float f; + double d; +} ffi_dblfl; + +ffi_type * +ffi_closure_helper_DARWIN (ffi_closure *, void *, + unsigned long *, ffi_dblfl *); + +ffi_type * +ffi_go_closure_helper_DARWIN (ffi_go_closure*, void *, + unsigned long *, ffi_dblfl *); + +/* Basically the trampoline invokes ffi_closure_ASM, and on + entry, r11 holds the address of the closure. + After storing the registers that could possibly contain + parameters to be passed into the stack frame and setting + up space for a return value, ffi_closure_ASM invokes the + following helper function to do most of the work. */ + +static ffi_type * +ffi_closure_helper_common (ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + /* rvalue is the pointer to space for return value in closure assembly + pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM + pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM. */ + + typedef double ldbits[2]; + + union ldu + { + ldbits lb; + long double ld; + }; + + void ** avalue; + ffi_type ** arg_types; + long i, avn; + ffi_dblfl * end_pfr = pfr + NUM_FPR_ARG_REGISTERS; + unsigned size_al; +#if defined(POWERPC_DARWIN64) + unsigned fpsused = 0; +#endif + + avalue = alloca (cif->nargs * sizeof(void *)); + + if (cif->rtype->type == FFI_TYPE_STRUCT) + { +#if defined(POWERPC_DARWIN64) + if (!darwin64_struct_ret_by_value_p (cif->rtype)) + { + /* Won't fit into the regs - return by ref. */ + rvalue = (void *) *pgr; + pgr++; + } +#elif defined(DARWIN_PPC) + if (cif->rtype->size > 4) + { + rvalue = (void *) *pgr; + pgr++; + } +#else /* assume we return by ref. */ + rvalue = (void *) *pgr; + pgr++; +#endif + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 7; +#else + avalue[i] = (char *) pgr + 3; +#endif + pgr++; + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 6; +#else + avalue[i] = (char *) pgr + 2; +#endif + pgr++; + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 4; +#else + case FFI_TYPE_POINTER: + avalue[i] = pgr; +#endif + pgr++; + break; + + case FFI_TYPE_STRUCT: + size_al = arg_types[i]->size; +#if defined(POWERPC_DARWIN64) + pgr = (unsigned long *)FFI_ALIGN((char *)pgr, arg_types[i]->alignment); + if (size_al < 3 || size_al == 4) + { + avalue[i] = ((char *)pgr)+8-size_al; + if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT + && fpsused < NUM_FPR_ARG_REGISTERS) + { + *(float *)pgr = (float) *(double *)pfr; + pfr++; + fpsused++; + } + } + else + { + if (size_al != 16) + pfr = (ffi_dblfl *) + darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr, + (double *)pfr, &fpsused); + avalue[i] = pgr; + } + pgr += (size_al + 7) / 8; +#else + /* If the first member of the struct is a double, then align + the struct to double-word. */ + if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN(arg_types[i]->size, 8); +# if defined(POWERPC64) + FFI_ASSERT (cif->abi != FFI_DARWIN); + avalue[i] = pgr; + pgr += (size_al + 7) / 8; +# else + /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, + SI 4 bytes) are aligned as if they were those modes. */ + if (size_al < 3 && cif->abi == FFI_DARWIN) + avalue[i] = (char*) pgr + 4 - size_al; + else + avalue[i] = pgr; + pgr += (size_al + 3) / 4; +# endif +#endif + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: +#if defined(POWERPC64) + case FFI_TYPE_POINTER: + avalue[i] = pgr; + pgr++; + break; +#else + /* Long long ints are passed in two gpr's. */ + avalue[i] = pgr; + pgr += 2; + break; +#endif + + case FFI_TYPE_FLOAT: + /* A float value consumes a GPR. + There are 13 64bit floating point registers. */ + if (pfr < end_pfr) + { + double temp = pfr->d; + pfr->f = (float) temp; + avalue[i] = pfr; + pfr++; + } + else + { + avalue[i] = pgr; + } + pgr++; + break; + + case FFI_TYPE_DOUBLE: + /* A double value consumes two GPRs. + There are 13 64bit floating point registers. */ + if (pfr < end_pfr) + { + avalue[i] = pfr; + pfr++; + } + else + { + avalue[i] = pgr; + } +#ifdef POWERPC64 + pgr++; +#else + pgr += 2; +#endif + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + + case FFI_TYPE_LONGDOUBLE: +#ifdef POWERPC64 + if (pfr + 1 < end_pfr) + { + avalue[i] = pfr; + pfr += 2; + } + else + { + if (pfr < end_pfr) + { + *pgr = *(unsigned long *) pfr; + pfr++; + } + avalue[i] = pgr; + } + pgr += 2; +#else /* POWERPC64 */ + /* A long double value consumes four GPRs and two FPRs. + There are 13 64bit floating point registers. */ + if (pfr + 1 < end_pfr) + { + avalue[i] = pfr; + pfr += 2; + } + /* Here we have the situation where one part of the long double + is stored in fpr13 and the other part is already on the stack. + We use a union to pass the long double to avalue[i]. */ + else if (pfr + 1 == end_pfr) + { + union ldu temp_ld; + memcpy (&temp_ld.lb[0], pfr, sizeof(ldbits)); + memcpy (&temp_ld.lb[1], pgr + 2, sizeof(ldbits)); + avalue[i] = &temp_ld.ld; + pfr++; + } + else + { + avalue[i] = pgr; + } + pgr += 4; +#endif /* POWERPC64 */ + break; +#endif + default: + FFI_ASSERT(0); + } + i++; + } + + (fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_ASM to perform return type promotions. */ + return cif->rtype; +} + +ffi_type * +ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + return ffi_closure_helper_common (closure->cif, closure->fun, + closure->user_data, rvalue, pgr, pfr); +} + +ffi_type * +ffi_go_closure_helper_DARWIN (ffi_go_closure *closure, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + return ffi_closure_helper_common (closure->cif, closure->fun, + closure, rvalue, pgr, pfr); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c new file mode 100644 index 0000000000..93a31f952f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c @@ -0,0 +1,974 @@ +/* ----------------------------------------------------------------------- + ffi_linux64.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include "ffi.h" + +#ifdef POWERPC64 +#include "ffi_common.h" +#include "ffi_powerpc.h" + + +/* About the LINUX64 ABI. */ +enum { + NUM_GPR_ARG_REGISTERS64 = 8, + NUM_FPR_ARG_REGISTERS64 = 13 +}; +enum { ASM_NEEDS_REGISTERS64 = 4 }; + + +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +/* Adjust size of ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types_linux64 (ffi_abi abi) +{ + if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX) + { + ffi_type_longdouble.size = 8; + ffi_type_longdouble.alignment = 8; + } + else + { + ffi_type_longdouble.size = 16; + ffi_type_longdouble.alignment = 16; + } +} +#endif + + +static unsigned int +discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum) +{ + switch (t->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + *elnum = 1; + return (int) t->type; + + case FFI_TYPE_STRUCT:; + { + unsigned int base_elt = 0, total_elnum = 0; + ffi_type **el = t->elements; + while (*el) + { + unsigned int el_elt, el_elnum = 0; + el_elt = discover_homogeneous_aggregate (*el, &el_elnum); + if (el_elt == 0 + || (base_elt && base_elt != el_elt)) + return 0; + base_elt = el_elt; + total_elnum += el_elnum; +#if _CALL_ELF == 2 + if (total_elnum > 8) + return 0; +#else + if (total_elnum > 1) + return 0; +#endif + el++; + } + *elnum = total_elnum; + return base_elt; + } + + default: + return 0; + } +} + + +/* Perform machine dependent cif processing */ +static ffi_status +ffi_prep_cif_linux64_core (ffi_cif *cif) +{ + ffi_type **ptr; + unsigned bytes; + unsigned i, fparg_count = 0, intarg_count = 0; + unsigned flags = cif->flags; + unsigned int elt, elnum; + +#if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE + /* If compiled without long double support.. */ + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + return FFI_BAD_ABI; +#endif + + /* The machine-independent calculation of cif->bytes doesn't work + for us. Redo the calculation. */ +#if _CALL_ELF == 2 + /* Space for backchain, CR, LR, TOC and the asm's temp regs. */ + bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long); + + /* Space for the general registers. */ + bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long); +#else + /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp + regs. */ + bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long); + + /* Space for the mandatory parm save area and general registers. */ + bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); +#endif + + /* Return value handling. */ + switch (cif->rtype->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; + break; + + case FFI_TYPE_UINT128: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: +#if _CALL_ELF == 2 + elt = discover_homogeneous_aggregate (cif->rtype, &elnum); + if (elt) + { + if (elt == FFI_TYPE_DOUBLE) + flags |= FLAG_RETURNS_64BITS; + flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST; + break; + } + if (cif->rtype->size <= 16) + { + flags |= FLAG_RETURNS_SMST; + break; + } +#endif + intarg_count++; + flags |= FLAG_RETVAL_REFERENCE; + /* Fall through. */ + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned int align; + + switch ((*ptr)->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + fparg_count++; + intarg_count++; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + case FFI_TYPE_FLOAT: + fparg_count++; + intarg_count++; + if (fparg_count > NUM_FPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + + case FFI_TYPE_STRUCT: + if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = (*ptr)->alignment; + if (align > 16) + align = 16; + align = align / 8; + if (align > 1) + intarg_count = FFI_ALIGN (intarg_count, align); + } + intarg_count += ((*ptr)->size + 7) / 8; + elt = discover_homogeneous_aggregate (*ptr, &elnum); + if (elt) + { + fparg_count += elnum; + if (fparg_count > NUM_FPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + } + else + { + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + } + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* Everything else is passed as a 8-byte word in a GPR, either + the object itself or a pointer to it. */ + intarg_count++; + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + default: + FFI_ASSERT (0); + } + } + + if (fparg_count != 0) + flags |= FLAG_FP_ARGUMENTS; + if (intarg_count > 4) + flags |= FLAG_4_GPR_ARGUMENTS; + + /* Space for the FPR registers, if needed. */ + if (fparg_count != 0) + bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double); + + /* Stack space. */ +#if _CALL_ELF == 2 + if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0) + bytes += intarg_count * sizeof (long); +#else + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long); +#endif + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = (bytes + 15) & ~0xF; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_linux64 (ffi_cif *cif) +{ + if ((cif->abi & FFI_LINUX) != 0) + cif->nfixedargs = cif->nargs; +#if _CALL_ELF != 2 + else if (cif->abi == FFI_COMPAT_LINUX64) + { + /* This call is from old code. Don't touch cif->nfixedargs + since old code will be using a smaller cif. */ + cif->flags |= FLAG_COMPAT; + /* Translate to new abi value. */ + cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; + } +#endif + else + return FFI_BAD_ABI; + return ffi_prep_cif_linux64_core (cif); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_linux64_var (ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs MAYBE_UNUSED) +{ + if ((cif->abi & FFI_LINUX) != 0) + cif->nfixedargs = nfixedargs; +#if _CALL_ELF != 2 + else if (cif->abi == FFI_COMPAT_LINUX64) + { + /* This call is from old code. Don't touch cif->nfixedargs + since old code will be using a smaller cif. */ + cif->flags |= FLAG_COMPAT; + /* Translate to new abi value. */ + cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; + } +#endif + else + return FFI_BAD_ABI; +#if _CALL_ELF == 2 + cif->flags |= FLAG_ARG_NEEDS_PSAVE; +#endif + return ffi_prep_cif_linux64_core (cif); +} + + +/* ffi_prep_args64 is called by the assembly routine once stack space + has been allocated for the function's arguments. + + The stack layout we want looks like this: + + | Ret addr from ffi_call_LINUX64 8bytes | higher addresses + |--------------------------------------------| + | CR save area 8bytes | + |--------------------------------------------| + | Previous backchain pointer 8 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | Saved r28-r31 4*8 | | ffi_call_LINUX64 + |--------------------------------------------| | + | GPR registers r3-r10 8*8 | | + |--------------------------------------------| | + | FPR registers f1-f13 (optional) 13*8 | | + |--------------------------------------------| | + | Parameter save area | | + |--------------------------------------------| | + | TOC save area 8 | | + |--------------------------------------------| | stack | + | Linker doubleword 8 | | grows | + |--------------------------------------------| | down V + | Compiler doubleword 8 | | + |--------------------------------------------| | lower addresses + | Space for callee's LR 8 | | + |--------------------------------------------| | + | CR save area 8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 8 |-/ during + |--------------------------------------------| <<< ffi_call_LINUX64 + +*/ + +void FFI_HIDDEN +ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) +{ + const unsigned long bytes = ecif->cif->bytes; + const unsigned long flags = ecif->cif->flags; + + typedef union + { + char *c; + unsigned long *ul; + float *f; + double *d; + size_t p; + } valp; + + /* 'stacktop' points at the previous backchain pointer. */ + valp stacktop; + + /* 'next_arg' points at the space for gpr3, and grows upwards as + we use GPR registers, then continues at rest. */ + valp gpr_base; + valp gpr_end; + valp rest; + valp next_arg; + + /* 'fpr_base' points at the space for fpr3, and grows upwards as + we use FPR registers. */ + valp fpr_base; + unsigned int fparg_count; + + unsigned int i, words, nargs, nfixedargs; + ffi_type **ptr; + double double_tmp; + union + { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + signed int **si; + unsigned int **ui; + unsigned long **ul; + float **f; + double **d; + } p_argv; + unsigned long gprvalue; + unsigned long align; + + stacktop.c = (char *) stack + bytes; + gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64; + gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64; +#if _CALL_ELF == 2 + rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64; +#else + rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64; +#endif + fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64; + fparg_count = 0; + next_arg.ul = gpr_base.ul; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); + FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); + FFI_ASSERT ((bytes & 0xF) == 0); + + /* Deal with return values that are actually pass-by-reference. */ + if (flags & FLAG_RETVAL_REFERENCE) + *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue; + + /* Now for the arguments. */ + p_argv.v = ecif->avalue; + nargs = ecif->cif->nargs; +#if _CALL_ELF != 2 + nfixedargs = (unsigned) -1; + if ((flags & FLAG_COMPAT) == 0) +#endif + nfixedargs = ecif->cif->nfixedargs; + for (ptr = ecif->cif->arg_types, i = 0; + i < nargs; + i++, ptr++, p_argv.v++) + { + unsigned int elt, elnum; + + switch ((*ptr)->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + double_tmp = (*p_argv.d)[0]; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +# if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +# endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + double_tmp = (*p_argv.d)[1]; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +# if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +# endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (__LDBL_MANT_DIG__ == 106); + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + do_double: + double_tmp = **p_argv.d; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +#if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +#endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_FLOAT: + do_float: + double_tmp = **p_argv.f; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +#if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + { +# ifndef __LITTLE_ENDIAN__ + next_arg.f[1] = (float) double_tmp; +# else + next_arg.f[0] = (float) double_tmp; +# endif + } +#endif + } + else + { +# ifndef __LITTLE_ENDIAN__ + next_arg.f[1] = (float) double_tmp; +# else + next_arg.f[0] = (float) double_tmp; +# endif + } + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_STRUCT: + if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = (*ptr)->alignment; + if (align > 16) + align = 16; + if (align > 1) + next_arg.p = FFI_ALIGN (next_arg.p, align); + } + elt = discover_homogeneous_aggregate (*ptr, &elnum); + if (elt) + { +#if _CALL_ELF == 2 + union { + void *v; + float *f; + double *d; + } arg; + + arg.v = *p_argv.v; + if (elt == FFI_TYPE_FLOAT) + { + do + { + double_tmp = *arg.f++; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 + && i < nfixedargs) + *fpr_base.d++ = double_tmp; + else + *next_arg.f = (float) double_tmp; + if (++next_arg.f == gpr_end.f) + next_arg.f = rest.f; + fparg_count++; + } + while (--elnum != 0); + if ((next_arg.p & 3) != 0) + { + if (++next_arg.f == gpr_end.f) + next_arg.f = rest.f; + } + } + else + do + { + double_tmp = *arg.d++; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + *fpr_base.d++ = double_tmp; + else + *next_arg.d = double_tmp; + if (++next_arg.d == gpr_end.d) + next_arg.d = rest.d; + fparg_count++; + } + while (--elnum != 0); +#else + if (elt == FFI_TYPE_FLOAT) + goto do_float; + else + goto do_double; +#endif + } + else + { + words = ((*ptr)->size + 7) / 8; + if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul) + { + size_t first = gpr_end.c - next_arg.c; + memcpy (next_arg.c, *p_argv.c, first); + memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first); + next_arg.c = rest.c + words * 8 - first; + } + else + { + char *where = next_arg.c; + +#ifndef __LITTLE_ENDIAN__ + /* Structures with size less than eight bytes are passed + left-padded. */ + if ((*ptr)->size < 8) + where += 8 - (*ptr)->size; +#endif + memcpy (where, *p_argv.c, (*ptr)->size); + next_arg.ul += words; + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + } + } + break; + + case FFI_TYPE_UINT8: + gprvalue = **p_argv.uc; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = **p_argv.sc; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = **p_argv.us; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = **p_argv.ss; + goto putgpr; + case FFI_TYPE_UINT32: + gprvalue = **p_argv.ui; + goto putgpr; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + gprvalue = **p_argv.si; + goto putgpr; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + gprvalue = **p_argv.ul; + putgpr: + *next_arg.ul++ = gprvalue; + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + break; + } + } + + FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS + || (next_arg.ul >= gpr_base.ul + && next_arg.ul <= gpr_base.ul + 4)); +} + + +#if _CALL_ELF == 2 +#define MIN_CACHE_LINE_SIZE 8 + +static void +flush_icache (char *wraddr, char *xaddr, int size) +{ + int i; + for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" + : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" + : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) + : "memory"); +} +#endif + + +ffi_status FFI_HIDDEN +ffi_prep_closure_loc_linux64 (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ +#if _CALL_ELF == 2 + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + + if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + tramp[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */ + tramp[1] = 0xe98c0010; /* ld 12,1f-0b(12) */ + tramp[2] = 0x7d8903a6; /* mtctr 12 */ + tramp[3] = 0x4e800420; /* bctr */ + /* 1: .quad function_addr */ + /* 2: .quad context */ + *(void **) &tramp[4] = (void *) ffi_closure_LINUX64; + *(void **) &tramp[6] = codeloc; + flush_icache ((char *) tramp, (char *) codeloc, 4 * 4); +#else + void **tramp = (void **) &closure->tramp[0]; + + if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + /* Copy function address and TOC from ffi_closure_LINUX64 OPD. */ + memcpy (&tramp[0], (void **) ffi_closure_LINUX64, sizeof (void *)); + tramp[1] = codeloc; + memcpy (&tramp[2], (void **) ffi_closure_LINUX64 + 1, sizeof (void *)); +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + + +int FFI_HIDDEN +ffi_closure_helper_LINUX64 (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *rvalue, + unsigned long *pst, + ffi_dblfl *pfr) +{ + /* rvalue is the pointer to space for return value in closure assembly */ + /* pst is the pointer to parameter save area + (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */ + /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */ + + void **avalue; + ffi_type **arg_types; + unsigned long i, avn, nfixedargs; + ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64; + unsigned long align; + + avalue = alloca (cif->nargs * sizeof (void *)); + + /* Copy the caller's structure return value address so that the + closure returns the data directly to the caller. */ + if (cif->rtype->type == FFI_TYPE_STRUCT + && (cif->flags & FLAG_RETURNS_SMST) == 0) + { + rvalue = (void *) *pst; + pst++; + } + + i = 0; + avn = cif->nargs; +#if _CALL_ELF != 2 + nfixedargs = (unsigned) -1; + if ((cif->flags & FLAG_COMPAT) == 0) +#endif + nfixedargs = cif->nfixedargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) + { + unsigned int elt, elnum; + + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 7; + pst++; + break; +#endif + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 6; + pst++; + break; +#endif + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 4; + pst++; + break; +#endif + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + avalue[i] = pst; + pst++; + break; + + case FFI_TYPE_STRUCT: + if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = arg_types[i]->alignment; + if (align > 16) + align = 16; + if (align > 1) + pst = (unsigned long *) FFI_ALIGN ((size_t) pst, align); + } + elt = discover_homogeneous_aggregate (arg_types[i], &elnum); + if (elt) + { +#if _CALL_ELF == 2 + union { + void *v; + unsigned long *ul; + float *f; + double *d; + size_t p; + } to, from; + + /* Repackage the aggregate from its parts. The + aggregate size is not greater than the space taken by + the registers so store back to the register/parameter + save arrays. */ + if (pfr + elnum <= end_pfr) + to.v = pfr; + else + to.v = pst; + + avalue[i] = to.v; + from.ul = pst; + if (elt == FFI_TYPE_FLOAT) + { + do + { + if (pfr < end_pfr && i < nfixedargs) + { + *to.f = (float) pfr->d; + pfr++; + } + else + *to.f = *from.f; + to.f++; + from.f++; + } + while (--elnum != 0); + } + else + { + do + { + if (pfr < end_pfr && i < nfixedargs) + { + *to.d = pfr->d; + pfr++; + } + else + *to.d = *from.d; + to.d++; + from.d++; + } + while (--elnum != 0); + } +#else + if (elt == FFI_TYPE_FLOAT) + goto do_float; + else + goto do_double; +#endif + } + else + { +#ifndef __LITTLE_ENDIAN__ + /* Structures with size less than eight bytes are passed + left-padded. */ + if (arg_types[i]->size < 8) + avalue[i] = (char *) pst + 8 - arg_types[i]->size; + else +#endif + avalue[i] = pst; + } + pst += (arg_types[i]->size + 7) / 8; + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + if (pfr + 1 < end_pfr && i + 1 < nfixedargs) + { + avalue[i] = pfr; + pfr += 2; + } + else + { + if (pfr < end_pfr && i < nfixedargs) + { + /* Passed partly in f13 and partly on the stack. + Move it all to the stack. */ + *pst = *(unsigned long *) pfr; + pfr++; + } + avalue[i] = pst; + } + pst += 2; + break; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + do_double: + /* On the outgoing stack all values are aligned to 8 */ + /* there are 13 64bit floating point registers */ + + if (pfr < end_pfr && i < nfixedargs) + { + avalue[i] = pfr; + pfr++; + } + else + avalue[i] = pst; + pst++; + break; + + case FFI_TYPE_FLOAT: + do_float: + if (pfr < end_pfr && i < nfixedargs) + { + /* Float values are stored as doubles in the + ffi_closure_LINUX64 code. Fix them here. */ + pfr->f = (float) pfr->d; + avalue[i] = pfr; + pfr++; + } + else + { +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 4; +#else + avalue[i] = pst; +#endif + } + pst++; + break; + + default: + FFI_ASSERT (0); + } + + i++; + } + + (*fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_LINUX64 how to perform return type promotions. */ + if ((cif->flags & FLAG_RETURNS_SMST) != 0) + { + if ((cif->flags & FLAG_RETURNS_FP) == 0) + return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1; + else if ((cif->flags & FLAG_RETURNS_64BITS) != 0) + return FFI_V2_TYPE_DOUBLE_HOMOG; + else + return FFI_V2_TYPE_FLOAT_HOMOG; + } + return cif->rtype->type; +} +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h new file mode 100644 index 0000000000..3dcd6b5717 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h @@ -0,0 +1,94 @@ +/* ----------------------------------------------------------------------- + ffi_powerpc.h - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +enum { + /* The assembly depends on these exact flags. */ + /* These go in cr7 */ + FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */ + FLAG_RETURNS_NOTHING = 1 << (31-30), + FLAG_RETURNS_FP = 1 << (31-29), + FLAG_RETURNS_64BITS = 1 << (31-28), + + /* This goes in cr6 */ + FLAG_RETURNS_128BITS = 1 << (31-27), + + FLAG_COMPAT = 1 << (31- 8), /* Not used by assembly */ + + /* These go in cr1 */ + FLAG_ARG_NEEDS_COPY = 1 << (31- 7), /* Used by sysv code */ + FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */ + FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ + FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), + FLAG_RETVAL_REFERENCE = 1 << (31- 4) +}; + +typedef union +{ + float f; + double d; +} ffi_dblfl; + +void FFI_HIDDEN ffi_closure_SYSV (void); +void FFI_HIDDEN ffi_go_closure_sysv (void); +void FFI_HIDDEN ffi_call_SYSV(extended_cif *, void (*)(void), void *, + unsigned, void *, int); + +void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi); +ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *); +ffi_status FFI_HIDDEN ffi_prep_closure_loc_sysv (ffi_closure *, + ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *); +int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *, unsigned long *, + ffi_dblfl *, unsigned long *); + +void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, void (*) (void), void *, + unsigned long, void *, long); +void FFI_HIDDEN ffi_closure_LINUX64 (void); +void FFI_HIDDEN ffi_go_closure_linux64 (void); + +void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi); +ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *); +ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int, + unsigned int); +void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const); +ffi_status FFI_HIDDEN ffi_prep_closure_loc_linux64 (ffi_closure *, ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *); +int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *, + unsigned long *, ffi_dblfl *); diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c new file mode 100644 index 0000000000..4078e75116 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c @@ -0,0 +1,923 @@ +/* ----------------------------------------------------------------------- + ffi_sysv.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include "ffi.h" + +#ifndef POWERPC64 +#include "ffi_common.h" +#include "ffi_powerpc.h" + + +/* About the SYSV ABI. */ +#define ASM_NEEDS_REGISTERS 6 +#define NUM_GPR_ARG_REGISTERS 8 +#define NUM_FPR_ARG_REGISTERS 8 + + +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +/* Adjust size of ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types_sysv (ffi_abi abi) +{ + if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV) + { + ffi_type_longdouble.size = 8; + ffi_type_longdouble.alignment = 8; + } + else + { + ffi_type_longdouble.size = 16; + ffi_type_longdouble.alignment = 16; + } +} +#endif + +/* Transform long double, double and float to other types as per abi. */ +static int +translate_float (int abi, int type) +{ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (type == FFI_TYPE_LONGDOUBLE + && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0) + type = FFI_TYPE_DOUBLE; +#endif + if ((abi & FFI_SYSV_SOFT_FLOAT) != 0) + { + if (type == FFI_TYPE_FLOAT) + type = FFI_TYPE_UINT32; + else if (type == FFI_TYPE_DOUBLE) + type = FFI_TYPE_UINT64; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + else if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_UINT128; + } + else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0) + { + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + } + return type; +} + +/* Perform machine dependent cif processing */ +static ffi_status +ffi_prep_cif_sysv_core (ffi_cif *cif) +{ + ffi_type **ptr; + unsigned bytes; + unsigned i, fpr_count = 0, gpr_count = 0, stack_count = 0; + unsigned flags = cif->flags; + unsigned struct_copy_size = 0; + unsigned type = cif->rtype->type; + unsigned size = cif->rtype->size; + + /* The machine-independent calculation of cif->bytes doesn't work + for us. Redo the calculation. */ + + /* Space for the frame pointer, callee's LR, and the asm's temp regs. */ + bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int); + + /* Space for the GPR registers. */ + bytes += NUM_GPR_ARG_REGISTERS * sizeof (int); + + /* Return value handling. The rules for SYSV are as follows: + - 32-bit (or less) integer values are returned in gpr3; + - Structures of size <= 4 bytes also returned in gpr3; + - 64-bit integer values and structures between 5 and 8 bytes are returned + in gpr3 and gpr4; + - Larger structures are allocated space and a pointer is passed as + the first argument. + - Single/double FP values are returned in fpr1; + - long doubles (if not equivalent to double) are returned in + fpr1,fpr2 for Linux and as for large structs for SysV. */ + + type = translate_float (cif->abi, type); + + switch (type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_UINT128: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: + /* The final SYSV ABI says that structures smaller or equal 8 bytes + are returned in r3/r4. A draft ABI used by linux instead + returns them in memory. */ + if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) + { + flags |= FLAG_RETURNS_SMST; + break; + } + gpr_count++; + flags |= FLAG_RETVAL_REFERENCE; + /* Fall through. */ + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the + first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest + goes on the stack. Structures and long doubles (if not equivalent + to double) are passed as a pointer to a copy of the structure. + Stuff on the stack needs to keep proper alignment. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned short typenum = (*ptr)->type; + + typenum = translate_float (cif->abi, typenum); + + switch (typenum) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (fpr_count >= NUM_FPR_ARG_REGISTERS - 1) + { + fpr_count = NUM_FPR_ARG_REGISTERS; + /* 8-byte align long doubles. */ + stack_count += stack_count & 1; + stack_count += 4; + } + else + fpr_count += 2; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; +#endif + + case FFI_TYPE_DOUBLE: + if (fpr_count >= NUM_FPR_ARG_REGISTERS) + { + /* 8-byte align doubles. */ + stack_count += stack_count & 1; + stack_count += 2; + } + else + fpr_count += 1; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_FLOAT: + if (fpr_count >= NUM_FPR_ARG_REGISTERS) + /* Yes, we don't follow the ABI, but neither does gcc. */ + stack_count += 1; + else + fpr_count += 1; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_UINT128: + /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set + of four consecutive gprs. If we do not have enough, we + have to adjust the gpr_count value. */ + if (gpr_count >= NUM_GPR_ARG_REGISTERS - 3) + gpr_count = NUM_GPR_ARG_REGISTERS; + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + stack_count += 4; + else + gpr_count += 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + /* 'long long' arguments are passed as two words, but + either both words must fit in registers or both go + on the stack. If they go on the stack, they must + be 8-byte-aligned. + + Also, only certain register pairs can be used for + passing long long int -- specifically (r3,r4), (r5,r6), + (r7,r8), (r9,r10). */ + gpr_count += gpr_count & 1; + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + { + stack_count += stack_count & 1; + stack_count += 2; + } + else + gpr_count += 2; + break; + + case FFI_TYPE_STRUCT: + /* We must allocate space for a copy of these to enforce + pass-by-value. Pad the space up to a multiple of 16 + bytes (the maximum alignment required for anything under + the SYSV ABI). */ + struct_copy_size += ((*ptr)->size + 15) & ~0xF; + /* Fall through (allocate space for the pointer). */ + + case FFI_TYPE_POINTER: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* Everything else is passed as a 4-byte word in a GPR, either + the object itself or a pointer to it. */ + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + stack_count += 1; + else + gpr_count += 1; + break; + + default: + FFI_ASSERT (0); + } + } + + if (fpr_count != 0) + flags |= FLAG_FP_ARGUMENTS; + if (gpr_count > 4) + flags |= FLAG_4_GPR_ARGUMENTS; + if (struct_copy_size != 0) + flags |= FLAG_ARG_NEEDS_COPY; + + /* Space for the FPR registers, if needed. */ + if (fpr_count != 0) + bytes += NUM_FPR_ARG_REGISTERS * sizeof (double); + + /* Stack space. */ + bytes += stack_count * sizeof (int); + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = (bytes + 15) & ~0xF; + + /* Add in the space for the copied structures. */ + bytes += struct_copy_size; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_sysv (ffi_cif *cif) +{ + if ((cif->abi & FFI_SYSV) == 0) + { + /* This call is from old code. Translate to new ABI values. */ + cif->flags |= FLAG_COMPAT; + switch (cif->abi) + { + default: + return FFI_BAD_ABI; + + case FFI_COMPAT_SYSV: + cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128; + break; + + case FFI_COMPAT_GCC_SYSV: + cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128; + break; + + case FFI_COMPAT_LINUX: + cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE + | FFI_SYSV_LONG_DOUBLE_128); + break; + + case FFI_COMPAT_LINUX_SOFT_FLOAT: + cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE + | FFI_SYSV_LONG_DOUBLE_128); + break; + } + } + return ffi_prep_cif_sysv_core (cif); +} + +/* ffi_prep_args_SYSV is called by the assembly routine once stack space + has been allocated for the function's arguments. + + The stack layout we want looks like this: + + | Return address from ffi_call_SYSV 4bytes | higher addresses + |--------------------------------------------| + | Previous backchain pointer 4 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | Saved r28-r31 4*4 | | ffi_call_SYSV + |--------------------------------------------| | + | GPR registers r3-r10 8*4 | | ffi_call_SYSV + |--------------------------------------------| | + | FPR registers f1-f8 (optional) 8*8 | | + |--------------------------------------------| | stack | + | Space for copied structures | | grows | + |--------------------------------------------| | down V + | Parameters that didn't fit in registers | | + |--------------------------------------------| | lower addresses + | Space for callee's LR 4 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4 |-/ during + |--------------------------------------------| <<< ffi_call_SYSV + +*/ + +void FFI_HIDDEN +ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) +{ + const unsigned bytes = ecif->cif->bytes; + const unsigned flags = ecif->cif->flags; + + typedef union + { + char *c; + unsigned *u; + long long *ll; + float *f; + double *d; + } valp; + + /* 'stacktop' points at the previous backchain pointer. */ + valp stacktop; + + /* 'gpr_base' points at the space for gpr3, and grows upwards as + we use GPR registers. */ + valp gpr_base; + valp gpr_end; + +#ifndef __NO_FPRS__ + /* 'fpr_base' points at the space for fpr1, and grows upwards as + we use FPR registers. */ + valp fpr_base; + valp fpr_end; +#endif + + /* 'copy_space' grows down as we put structures in it. It should + stay 16-byte aligned. */ + valp copy_space; + + /* 'next_arg' grows up as we put parameters in it. */ + valp next_arg; + + int i; + ffi_type **ptr; +#ifndef __NO_FPRS__ + double double_tmp; +#endif + union + { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + unsigned int **ui; + long long **ll; + float **f; + double **d; + } p_argv; + size_t struct_copy_size; + unsigned gprvalue; + + stacktop.c = (char *) stack + bytes; + gpr_end.u = stacktop.u - ASM_NEEDS_REGISTERS; + gpr_base.u = gpr_end.u - NUM_GPR_ARG_REGISTERS; +#ifndef __NO_FPRS__ + fpr_end.d = gpr_base.d; + fpr_base.d = fpr_end.d - NUM_FPR_ARG_REGISTERS; + copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c); +#else + copy_space.c = gpr_base.c; +#endif + next_arg.u = stack + 2; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); + FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0); + FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); + FFI_ASSERT ((bytes & 0xF) == 0); + FFI_ASSERT (copy_space.c >= next_arg.c); + + /* Deal with return values that are actually pass-by-reference. */ + if (flags & FLAG_RETVAL_REFERENCE) + *gpr_base.u++ = (unsigned) (char *) ecif->rvalue; + + /* Now for the arguments. */ + p_argv.v = ecif->avalue; + for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; + i > 0; + i--, ptr++, p_argv.v++) + { + unsigned int typenum = (*ptr)->type; + + typenum = translate_float (ecif->cif->abi, typenum); + + /* Now test the translated value */ + switch (typenum) + { +#ifndef __NO_FPRS__ +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + double_tmp = (*p_argv.d)[0]; + + if (fpr_base.d >= fpr_end.d - 1) + { + fpr_base.d = fpr_end.d; + if (((next_arg.u - stack) & 1) != 0) + next_arg.u += 1; + *next_arg.d = double_tmp; + next_arg.u += 2; + double_tmp = (*p_argv.d)[1]; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + { + *fpr_base.d++ = double_tmp; + double_tmp = (*p_argv.d)[1]; + *fpr_base.d++ = double_tmp; + } + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; +# endif + case FFI_TYPE_DOUBLE: + double_tmp = **p_argv.d; + + if (fpr_base.d >= fpr_end.d) + { + if (((next_arg.u - stack) & 1) != 0) + next_arg.u += 1; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + *fpr_base.d++ = double_tmp; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_FLOAT: + double_tmp = **p_argv.f; + if (fpr_base.d >= fpr_end.d) + { + *next_arg.f = (float) double_tmp; + next_arg.u += 1; + } + else + *fpr_base.d++ = double_tmp; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; +#endif /* have FPRs */ + + case FFI_TYPE_UINT128: + /* The soft float ABI for long doubles works like this, a long double + is passed in four consecutive GPRs if available. A maximum of 2 + long doubles can be passed in gprs. If we do not have 4 GPRs + left, the long double is passed on the stack, 4-byte aligned. */ + if (gpr_base.u >= gpr_end.u - 3) + { + unsigned int ii; + gpr_base.u = gpr_end.u; + for (ii = 0; ii < 4; ii++) + { + unsigned int int_tmp = (*p_argv.ui)[ii]; + *next_arg.u++ = int_tmp; + } + } + else + { + unsigned int ii; + for (ii = 0; ii < 4; ii++) + { + unsigned int int_tmp = (*p_argv.ui)[ii]; + *gpr_base.u++ = int_tmp; + } + } + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (gpr_base.u >= gpr_end.u - 1) + { + gpr_base.u = gpr_end.u; + if (((next_arg.u - stack) & 1) != 0) + next_arg.u++; + *next_arg.ll = **p_argv.ll; + next_arg.u += 2; + } + else + { + /* The abi states only certain register pairs can be + used for passing long long int specifically (r3,r4), + (r5,r6), (r7,r8), (r9,r10). If next arg is long long + but not correct starting register of pair then skip + until the proper starting register. */ + if (((gpr_end.u - gpr_base.u) & 1) != 0) + gpr_base.u++; + *gpr_base.ll++ = **p_argv.ll; + } + break; + + case FFI_TYPE_STRUCT: + struct_copy_size = ((*ptr)->size + 15) & ~0xF; + copy_space.c -= struct_copy_size; + memcpy (copy_space.c, *p_argv.c, (*ptr)->size); + + gprvalue = (unsigned long) copy_space.c; + + FFI_ASSERT (copy_space.c > next_arg.c); + FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY); + goto putgpr; + + case FFI_TYPE_UINT8: + gprvalue = **p_argv.uc; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = **p_argv.sc; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = **p_argv.us; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = **p_argv.ss; + goto putgpr; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + + gprvalue = **p_argv.ui; + + putgpr: + if (gpr_base.u >= gpr_end.u) + *next_arg.u++ = gprvalue; + else + *gpr_base.u++ = gprvalue; + break; + } + } + + /* Check that we didn't overrun the stack... */ + FFI_ASSERT (copy_space.c >= next_arg.c); + FFI_ASSERT (gpr_base.u <= gpr_end.u); +#ifndef __NO_FPRS__ + FFI_ASSERT (fpr_base.u <= fpr_end.u); +#endif + FFI_ASSERT (((flags & FLAG_4_GPR_ARGUMENTS) != 0) + == (gpr_end.u - gpr_base.u < 4)); +} + +#define MIN_CACHE_LINE_SIZE 8 + +static void +flush_icache (char *wraddr, char *xaddr, int size) +{ + int i; + for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" + : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" + : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) + : "memory"); +} + +ffi_status FFI_HIDDEN +ffi_prep_closure_loc_sysv (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + + if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f0005; /* bcl 20,31,.+4 */ + tramp[2] = 0x7d6802a6; /* mflr r11 */ + tramp[3] = 0x7c0803a6; /* mtlr r0 */ + tramp[4] = 0x800b0018; /* lwz r0,24(r11) */ + tramp[5] = 0x816b001c; /* lwz r11,28(r11) */ + tramp[6] = 0x7c0903a6; /* mtctr r0 */ + tramp[7] = 0x4e800420; /* bctr */ + *(void **) &tramp[8] = (void *) ffi_closure_SYSV; /* function */ + *(void **) &tramp[9] = codeloc; /* context */ + + /* Flush the icache. */ + flush_icache ((char *)tramp, (char *)codeloc, 8 * 4); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + entry, r11 holds the address of the closure. + After storing the registers that could possibly contain + parameters to be passed into the stack frame and setting + up space for a return value, ffi_closure_SYSV invokes the + following helper function to do most of the work. */ + +int +ffi_closure_helper_SYSV (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *rvalue, + unsigned long *pgr, + ffi_dblfl *pfr, + unsigned long *pst) +{ + /* rvalue is the pointer to space for return value in closure assembly */ + /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */ + /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */ + /* pst is the pointer to outgoing parameter stack in original caller */ + + void ** avalue; + ffi_type ** arg_types; + long i, avn; +#ifndef __NO_FPRS__ + long nf = 0; /* number of floating registers already used */ +#endif + long ng = 0; /* number of general registers already used */ + + unsigned size = cif->rtype->size; + unsigned short rtypenum = cif->rtype->type; + + avalue = alloca (cif->nargs * sizeof (void *)); + + /* First translate for softfloat/nonlinux */ + rtypenum = translate_float (cif->abi, rtypenum); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. + For FFI_SYSV the result is passed in r3/r4 if the struct size is less + or equal 8 bytes. */ + if (rtypenum == FFI_TYPE_STRUCT + && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)) + { + rvalue = (void *) *pgr; + ng++; + pgr++; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) { + unsigned short typenum = arg_types[i]->type; + + /* We may need to handle some values depending on ABI. */ + typenum = translate_float (cif->abi, typenum); + + switch (typenum) + { +#ifndef __NO_FPRS__ + case FFI_TYPE_FLOAT: + /* Unfortunately float values are stored as doubles + in the ffi_closure_SYSV code (since we don't check + the type in that routine). */ + if (nf < NUM_FPR_ARG_REGISTERS) + { + /* FIXME? here we are really changing the values + stored in the original calling routines outgoing + parameter stack. This is probably a really + naughty thing to do but... */ + double temp = pfr->d; + pfr->f = (float) temp; + avalue[i] = pfr; + nf++; + pfr++; + } + else + { + avalue[i] = pst; + pst += 1; + } + break; + + case FFI_TYPE_DOUBLE: + if (nf < NUM_FPR_ARG_REGISTERS) + { + avalue[i] = pfr; + nf++; + pfr++; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 2; + } + break; + +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (nf < NUM_FPR_ARG_REGISTERS - 1) + { + avalue[i] = pfr; + pfr += 2; + nf += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 4; + nf = 8; + } + break; +# endif +#endif + + case FFI_TYPE_UINT128: + /* Test if for the whole long double, 4 gprs are available. + otherwise the stuff ends up on the stack. */ + if (ng < NUM_GPR_ARG_REGISTERS - 3) + { + avalue[i] = pgr; + pgr += 4; + ng += 4; + } + else + { + avalue[i] = pst; + pst += 4; + ng = 8+4; + } + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifndef __LITTLE_ENDIAN__ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (char *) pgr + 3; + ng++; + pgr++; + } + else + { + avalue[i] = (char *) pst + 3; + pst++; + } + break; +#endif + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifndef __LITTLE_ENDIAN__ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (char *) pgr + 2; + ng++; + pgr++; + } + else + { + avalue[i] = (char *) pst + 2; + pst++; + } + break; +#endif + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = pgr; + ng++; + pgr++; + } + else + { + avalue[i] = pst; + pst++; + } + break; + + case FFI_TYPE_STRUCT: + /* Structs are passed by reference. The address will appear in a + gpr if it is one of the first 8 arguments. */ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (void *) *pgr; + ng++; + pgr++; + } + else + { + avalue[i] = (void *) *pst; + pst++; + } + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + /* Passing long long ints are complex, they must + be passed in suitable register pairs such as + (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) + and if the entire pair aren't available then the outgoing + parameter stack is used for both but an alignment of 8 + must will be kept. So we must either look in pgr + or pst to find the correct address for this type + of parameter. */ + if (ng < NUM_GPR_ARG_REGISTERS - 1) + { + if (ng & 1) + { + /* skip r4, r6, r8 as starting points */ + ng++; + pgr++; + } + avalue[i] = pgr; + ng += 2; + pgr += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 2; + ng = NUM_GPR_ARG_REGISTERS; + } + break; + + default: + FFI_ASSERT (0); + } + + i++; + } + + (*fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. + Because the FFI_SYSV ABI returns the structures <= 8 bytes in + r3/r4 we have to tell ffi_closure_SYSV how to treat them. We + combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of + the struct less one. We never have a struct with size zero. + See the comment in ffitarget.h about ordering. */ + if (rtypenum == FFI_TYPE_STRUCT + && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) + return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size; + return rtypenum; +} +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffitarget.h new file mode 100644 index 0000000000..90aa36b0fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ffitarget.h @@ -0,0 +1,198 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc + Copyright (c) 1996-2003 Red Hat, Inc. + + Target configuration macros for PowerPC. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#ifndef POWERPC_DARWIN64 +#define POWERPC_DARWIN64 +#endif +#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + +#if defined (POWERPC_AIX) + FFI_AIX, + FFI_DARWIN, + FFI_DEFAULT_ABI = FFI_AIX, + FFI_LAST_ABI + +#elif defined (POWERPC_DARWIN) + FFI_AIX, + FFI_DARWIN, + FFI_DEFAULT_ABI = FFI_DARWIN, + FFI_LAST_ABI + +#else + /* The FFI_COMPAT values are used by old code. Since libffi may be + a shared library we have to support old values for backwards + compatibility. */ + FFI_COMPAT_SYSV, + FFI_COMPAT_GCC_SYSV, + FFI_COMPAT_LINUX64, + FFI_COMPAT_LINUX, + FFI_COMPAT_LINUX_SOFT_FLOAT, + +# if defined (POWERPC64) + /* This bit, always set in new code, must not be set in any of the + old FFI_COMPAT values that might be used for 64-bit linux. We + only need worry about FFI_COMPAT_LINUX64, but to be safe avoid + all old values. */ + FFI_LINUX = 8, + /* This and following bits can reuse FFI_COMPAT values. */ + FFI_LINUX_STRUCT_ALIGN = 1, + FFI_LINUX_LONG_DOUBLE_128 = 2, + FFI_DEFAULT_ABI = (FFI_LINUX +# ifdef __STRUCT_PARM_ALIGN__ + | FFI_LINUX_STRUCT_ALIGN +# endif +# ifdef __LONG_DOUBLE_128__ + | FFI_LINUX_LONG_DOUBLE_128 +# endif + ), + FFI_LAST_ABI = 12 + +# else + /* This bit, always set in new code, must not be set in any of the + old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */ + FFI_SYSV = 8, + /* This and following bits can reuse FFI_COMPAT values. */ + FFI_SYSV_SOFT_FLOAT = 1, + FFI_SYSV_STRUCT_RET = 2, + FFI_SYSV_IBM_LONG_DOUBLE = 4, + FFI_SYSV_LONG_DOUBLE_128 = 16, + + FFI_DEFAULT_ABI = (FFI_SYSV +# ifdef __NO_FPRS__ + | FFI_SYSV_SOFT_FLOAT +# endif +# if (defined (__SVR4_STRUCT_RETURN) \ + || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN)) + | FFI_SYSV_STRUCT_RET +# endif +# if __LDBL_MANT_DIG__ == 106 + | FFI_SYSV_IBM_LONG_DOUBLE +# endif +# ifdef __LONG_DOUBLE_128__ + | FFI_SYSV_LONG_DOUBLE_128 +# endif + ), + FFI_LAST_ABI = 32 +# endif +#endif + +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#if defined (POWERPC) || defined (POWERPC_FREEBSD) +# define FFI_GO_CLOSURES 1 +# define FFI_TARGET_SPECIFIC_VARIADIC 1 +# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs +#endif +#if defined (POWERPC_AIX) +# define FFI_GO_CLOSURES 1 +#endif + +/* ppc_closure.S and linux64_closure.S expect this. */ +#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER + +/* We define additional types below. If generic types are added that + must be supported by powerpc libffi then it is likely that + FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in + ppc_closure.S and linux64_closure.S be extended. */ + +#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \ + || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \ + && !defined FFI_TARGET_HAS_COMPLEX_TYPE)) +# error "You likely have a broken powerpc libffi" +#endif + +/* Needed for soft-float long-double-128 support. */ +#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1) + +/* Needed for FFI_SYSV small structure returns. */ +#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2) + +/* Used by ELFv2 for homogenous structure returns. */ +#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 1) +#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 2) +#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 3) + +#if _CALL_ELF == 2 +# define FFI_TRAMPOLINE_SIZE 32 +#else +# if defined(POWERPC64) || defined(POWERPC_AIX) +# if defined(POWERPC_DARWIN64) +# define FFI_TRAMPOLINE_SIZE 48 +# else +# define FFI_TRAMPOLINE_SIZE 24 +# endif +# else /* POWERPC || POWERPC_AIX */ +# define FFI_TRAMPOLINE_SIZE 40 +# endif +#endif + +#ifndef LIBFFI_ASM +#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX) +struct ffi_aix_trampoline_struct { + void * code_pointer; /* Pointer to ffi_closure_ASM */ + void * toc; /* TOC */ + void * static_chain; /* Pointer to closure */ +}; +#endif +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64.S new file mode 100644 index 0000000000..b2ae60ead6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64.S @@ -0,0 +1,228 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC64 Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +#ifdef POWERPC64 + .hidden ffi_call_LINUX64 + .globl ffi_call_LINUX64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_call_LINUX64: + addis %r2, %r12, .TOC.-ffi_call_LINUX64@ha + addi %r2, %r2, .TOC.-ffi_call_LINUX64@l + .localentry ffi_call_LINUX64, . - ffi_call_LINUX64 +# else + .section ".opd","aw" + .align 3 +ffi_call_LINUX64: +# ifdef _CALL_LINUX + .quad .L.ffi_call_LINUX64,.TOC.@tocbase,0 + .type ffi_call_LINUX64,@function + .text +.L.ffi_call_LINUX64: +# else + .hidden .ffi_call_LINUX64 + .globl .ffi_call_LINUX64 + .quad .ffi_call_LINUX64,.TOC.@tocbase,0 + .size ffi_call_LINUX64,24 + .type .ffi_call_LINUX64,@function + .text +.ffi_call_LINUX64: +# endif +# endif + mflr %r0 + std %r28, -32(%r1) + std %r29, -24(%r1) + std %r30, -16(%r1) + std %r31, -8(%r1) + std %r7, 8(%r1) /* closure, saved in cr field. */ + std %r0, 16(%r1) + + mr %r28, %r1 /* our AP. */ + .cfi_def_cfa_register 28 + .cfi_offset 65, 16 + .cfi_offset 31, -8 + .cfi_offset 30, -16 + .cfi_offset 29, -24 + .cfi_offset 28, -32 + + stdux %r1, %r1, %r8 + mr %r31, %r6 /* flags, */ + mr %r30, %r5 /* rvalue, */ + mr %r29, %r4 /* function address. */ +/* Save toc pointer, not for the ffi_prep_args64 call, but for the later + bctrl function call. */ +# if _CALL_ELF == 2 + std %r2, 24(%r1) +# else + std %r2, 40(%r1) +# endif + + /* Call ffi_prep_args64. */ + mr %r4, %r1 +# if defined _CALL_LINUX || _CALL_ELF == 2 + bl ffi_prep_args64 +# else + bl .ffi_prep_args64 +# endif + +# if _CALL_ELF == 2 + mr %r12, %r29 +# else + ld %r12, 0(%r29) + ld %r2, 8(%r29) +# endif + /* Now do the call. */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, %r31 + + /* Get the address to call into CTR. */ + mtctr %r12 + /* Load all those argument registers. */ + ld %r3, -32-(8*8)(%r28) + ld %r4, -32-(7*8)(%r28) + ld %r5, -32-(6*8)(%r28) + ld %r6, -32-(5*8)(%r28) + bf- 5, 1f + ld %r7, -32-(4*8)(%r28) + ld %r8, -32-(3*8)(%r28) + ld %r9, -32-(2*8)(%r28) + ld %r10, -32-(1*8)(%r28) +1: + + /* Load all the FP registers. */ + bf- 6, 2f + lfd %f1, -32-(21*8)(%r28) + lfd %f2, -32-(20*8)(%r28) + lfd %f3, -32-(19*8)(%r28) + lfd %f4, -32-(18*8)(%r28) + lfd %f5, -32-(17*8)(%r28) + lfd %f6, -32-(16*8)(%r28) + lfd %f7, -32-(15*8)(%r28) + lfd %f8, -32-(14*8)(%r28) + lfd %f9, -32-(13*8)(%r28) + lfd %f10, -32-(12*8)(%r28) + lfd %f11, -32-(11*8)(%r28) + lfd %f12, -32-(10*8)(%r28) + lfd %f13, -32-(9*8)(%r28) +2: + + /* Make the call. */ + ld %r11, 8(%r28) + bctrl + + /* This must follow the call immediately, the unwinder + uses this to find out if r2 has been saved or not. */ +# if _CALL_ELF == 2 + ld %r2, 24(%r1) +# else + ld %r2, 40(%r1) +# endif + + /* Now, deal with the return value. */ + mtcrf 0x01, %r31 + bt 31, .Lstruct_return_value + bt 30, .Ldone_return_value + bt 29, .Lfp_return_value + std %r3, 0(%r30) + /* Fall through... */ + +.Ldone_return_value: + /* Restore the registers we used and return. */ + mr %r1, %r28 + .cfi_def_cfa_register 1 + ld %r0, 16(%r28) + ld %r28, -32(%r28) + mtlr %r0 + ld %r29, -24(%r1) + ld %r30, -16(%r1) + ld %r31, -8(%r1) + blr + +.Lfp_return_value: + .cfi_def_cfa_register 28 + bf 28, .Lfloat_return_value + stfd %f1, 0(%r30) + mtcrf 0x02, %r31 /* cr6 */ + bf 27, .Ldone_return_value + stfd %f2, 8(%r30) + b .Ldone_return_value +.Lfloat_return_value: + stfs %f1, 0(%r30) + b .Ldone_return_value + +.Lstruct_return_value: + bf 29, .Lsmall_struct + bf 28, .Lfloat_homog_return_value + stfd %f1, 0(%r30) + stfd %f2, 8(%r30) + stfd %f3, 16(%r30) + stfd %f4, 24(%r30) + stfd %f5, 32(%r30) + stfd %f6, 40(%r30) + stfd %f7, 48(%r30) + stfd %f8, 56(%r30) + b .Ldone_return_value + +.Lfloat_homog_return_value: + stfs %f1, 0(%r30) + stfs %f2, 4(%r30) + stfs %f3, 8(%r30) + stfs %f4, 12(%r30) + stfs %f5, 16(%r30) + stfs %f6, 20(%r30) + stfs %f7, 24(%r30) + stfs %f8, 28(%r30) + b .Ldone_return_value + +.Lsmall_struct: + std %r3, 0(%r30) + std %r4, 8(%r30) + b .Ldone_return_value + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_call_LINUX64,.-ffi_call_LINUX64 +# else +# ifdef _CALL_LINUX + .size ffi_call_LINUX64,.-.L.ffi_call_LINUX64 +# else + .long 0 + .byte 0,12,0,1,128,4,0,0 + .size .ffi_call_LINUX64,.-.ffi_call_LINUX64 +# endif +# endif + +#endif + +#if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64_closure.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64_closure.S new file mode 100644 index 0000000000..6487d2a297 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/linux64_closure.S @@ -0,0 +1,488 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC64 Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ +#define LIBFFI_ASM +#include +#include + + .file "linux64_closure.S" + +#ifdef POWERPC64 + FFI_HIDDEN (ffi_closure_LINUX64) + .globl ffi_closure_LINUX64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_closure_LINUX64: + addis %r2, %r12, .TOC.-ffi_closure_LINUX64@ha + addi %r2, %r2, .TOC.-ffi_closure_LINUX64@l + .localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64 +# else + .section ".opd","aw" + .align 3 +ffi_closure_LINUX64: +# ifdef _CALL_LINUX + .quad .L.ffi_closure_LINUX64,.TOC.@tocbase,0 + .type ffi_closure_LINUX64,@function + .text +.L.ffi_closure_LINUX64: +# else + FFI_HIDDEN (.ffi_closure_LINUX64) + .globl .ffi_closure_LINUX64 + .quad .ffi_closure_LINUX64,.TOC.@tocbase,0 + .size ffi_closure_LINUX64,24 + .type .ffi_closure_LINUX64,@function + .text +.ffi_closure_LINUX64: +# endif +# endif + +# if _CALL_ELF == 2 +# 32 byte special reg save area + 64 byte parm save area +# + 64 byte retval area + 13*8 fpr save area + round to 16 +# define STACKFRAME 272 +# define PARMSAVE 32 +# define RETVAL PARMSAVE+64 +# else +# 48 bytes special reg save area + 64 bytes parm save area +# + 16 bytes retval area + 13*8 bytes fpr save area + round to 16 +# define STACKFRAME 240 +# define PARMSAVE 48 +# define RETVAL PARMSAVE+64 +# endif + +# if _CALL_ELF == 2 + ld %r12, FFI_TRAMPOLINE_SIZE(%r11) # closure->cif + mflr %r0 + lwz %r12, 28(%r12) # cif->flags + mtcrf 0x40, %r12 + addi %r12, %r1, PARMSAVE + bt 7, 0f + # Our caller has not allocated a parameter save area. + # We need to allocate one here and use it to pass gprs to + # ffi_closure_helper_LINUX64. + addi %r12, %r1, -STACKFRAME+PARMSAVE +0: + # Save general regs into parm save area + std %r3, 0(%r12) + std %r4, 8(%r12) + std %r5, 16(%r12) + std %r6, 24(%r12) + std %r7, 32(%r12) + std %r8, 40(%r12) + std %r9, 48(%r12) + std %r10, 56(%r12) + + # load up the pointer to the parm save area + mr %r7, %r12 +# else + # copy r2 to r11 and load TOC into r2 + mr %r11, %r2 + ld %r2, 16(%r2) + + mflr %r0 + # Save general regs into parm save area + # This is the parameter save area set up by our caller. + std %r3, PARMSAVE+0(%r1) + std %r4, PARMSAVE+8(%r1) + std %r5, PARMSAVE+16(%r1) + std %r6, PARMSAVE+24(%r1) + std %r7, PARMSAVE+32(%r1) + std %r8, PARMSAVE+40(%r1) + std %r9, PARMSAVE+48(%r1) + std %r10, PARMSAVE+56(%r1) + + # load up the pointer to the parm save area + addi %r7, %r1, PARMSAVE +# endif + std %r0, 16(%r1) + + # closure->cif + ld %r3, FFI_TRAMPOLINE_SIZE(%r11) + # closure->fun + ld %r4, FFI_TRAMPOLINE_SIZE+8(%r11) + # closure->user_data + ld %r5, FFI_TRAMPOLINE_SIZE+16(%r11) + +.Ldoclosure: + # next save fpr 1 to fpr 13 + stfd %f1, -104+(0*8)(%r1) + stfd %f2, -104+(1*8)(%r1) + stfd %f3, -104+(2*8)(%r1) + stfd %f4, -104+(3*8)(%r1) + stfd %f5, -104+(4*8)(%r1) + stfd %f6, -104+(5*8)(%r1) + stfd %f7, -104+(6*8)(%r1) + stfd %f8, -104+(7*8)(%r1) + stfd %f9, -104+(8*8)(%r1) + stfd %f10, -104+(9*8)(%r1) + stfd %f11, -104+(10*8)(%r1) + stfd %f12, -104+(11*8)(%r1) + stfd %f13, -104+(12*8)(%r1) + + # load up the pointer to the saved fpr registers */ + addi %r8, %r1, -104 + + # load up the pointer to the result storage + addi %r6, %r1, -STACKFRAME+RETVAL + + stdu %r1, -STACKFRAME(%r1) + .cfi_def_cfa_offset STACKFRAME + .cfi_offset 65, 16 + + # make the call +# if defined _CALL_LINUX || _CALL_ELF == 2 + bl ffi_closure_helper_LINUX64 +# else + bl .ffi_closure_helper_LINUX64 +# endif +.Lret: + + # now r3 contains the return type + # so use it to look up in a table + # so we know how to deal with each type + + # look up the proper starting point in table + # by using return type as offset + ld %r0, STACKFRAME+16(%r1) + cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT + bge .Lsmall + mflr %r4 # move address of .Lret to r4 + sldi %r3, %r3, 4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + add %r3, %r3, %r4 # add contents of table to table address + mtctr %r3 + bctr # jump to it + +# Each of the ret_typeX code fragments has to be exactly 16 bytes long +# (4 instructions). For cache effectiveness we align to a 16 byte boundary +# first. + .align 4 + +.Lret_type0: +# case FFI_TYPE_VOID + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME + nop +# case FFI_TYPE_INT +# ifdef __LITTLE_ENDIAN__ + lwa %r3, RETVAL+0(%r1) +# else + lwa %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_FLOAT + lfs %f1, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_DOUBLE + lfd %f1, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_LONGDOUBLE + lfd %f1, RETVAL+0(%r1) + mtlr %r0 + lfd %f2, RETVAL+8(%r1) + b .Lfinish +# case FFI_TYPE_UINT8 +# ifdef __LITTLE_ENDIAN__ + lbz %r3, RETVAL+0(%r1) +# else + lbz %r3, RETVAL+7(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT8 +# ifdef __LITTLE_ENDIAN__ + lbz %r3, RETVAL+0(%r1) +# else + lbz %r3, RETVAL+7(%r1) +# endif + extsb %r3,%r3 + mtlr %r0 + b .Lfinish +# case FFI_TYPE_UINT16 +# ifdef __LITTLE_ENDIAN__ + lhz %r3, RETVAL+0(%r1) +# else + lhz %r3, RETVAL+6(%r1) +# endif + mtlr %r0 +.Lfinish: + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT16 +# ifdef __LITTLE_ENDIAN__ + lha %r3, RETVAL+0(%r1) +# else + lha %r3, RETVAL+6(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_UINT32 +# ifdef __LITTLE_ENDIAN__ + lwz %r3, RETVAL+0(%r1) +# else + lwz %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT32 +# ifdef __LITTLE_ENDIAN__ + lwa %r3, RETVAL+0(%r1) +# else + lwa %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_UINT64 + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT64 + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_STRUCT + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME + nop +# case FFI_TYPE_POINTER + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_V2_TYPE_FLOAT_HOMOG + lfs %f1, RETVAL+0(%r1) + lfs %f2, RETVAL+4(%r1) + lfs %f3, RETVAL+8(%r1) + b .Lmorefloat +# case FFI_V2_TYPE_DOUBLE_HOMOG + lfd %f1, RETVAL+0(%r1) + lfd %f2, RETVAL+8(%r1) + lfd %f3, RETVAL+16(%r1) + lfd %f4, RETVAL+24(%r1) + mtlr %r0 + lfd %f5, RETVAL+32(%r1) + lfd %f6, RETVAL+40(%r1) + lfd %f7, RETVAL+48(%r1) + lfd %f8, RETVAL+56(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lmorefloat: + lfs %f4, RETVAL+12(%r1) + mtlr %r0 + lfs %f5, RETVAL+16(%r1) + lfs %f6, RETVAL+20(%r1) + lfs %f7, RETVAL+24(%r1) + lfs %f8, RETVAL+28(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lsmall: +# ifdef __LITTLE_ENDIAN__ + ld %r3,RETVAL+0(%r1) + mtlr %r0 + ld %r4,RETVAL+8(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr +# else + # A struct smaller than a dword is returned in the low bits of r3 + # ie. right justified. Larger structs are passed left justified + # in r3 and r4. The return value area on the stack will have + # the structs as they are usually stored in memory. + cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT + 7 # size 8 bytes? + neg %r5, %r3 + ld %r3,RETVAL+0(%r1) + blt .Lsmalldown + mtlr %r0 + ld %r4,RETVAL+8(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lsmalldown: + addi %r5, %r5, FFI_V2_TYPE_SMALL_STRUCT + 7 + mtlr %r0 + sldi %r5, %r5, 3 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + srd %r3, %r3, %r5 + blr +# endif + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_closure_LINUX64,.-ffi_closure_LINUX64 +# else +# ifdef _CALL_LINUX + .size ffi_closure_LINUX64,.-.L.ffi_closure_LINUX64 +# else + .long 0 + .byte 0,12,0,1,128,0,0,0 + .size .ffi_closure_LINUX64,.-.ffi_closure_LINUX64 +# endif +# endif + + + FFI_HIDDEN (ffi_go_closure_linux64) + .globl ffi_go_closure_linux64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_go_closure_linux64: + addis %r2, %r12, .TOC.-ffi_go_closure_linux64@ha + addi %r2, %r2, .TOC.-ffi_go_closure_linux64@l + .localentry ffi_go_closure_linux64, . - ffi_go_closure_linux64 +# else + .section ".opd","aw" + .align 3 +ffi_go_closure_linux64: +# ifdef _CALL_LINUX + .quad .L.ffi_go_closure_linux64,.TOC.@tocbase,0 + .type ffi_go_closure_linux64,@function + .text +.L.ffi_go_closure_linux64: +# else + FFI_HIDDEN (.ffi_go_closure_linux64) + .globl .ffi_go_closure_linux64 + .quad .ffi_go_closure_linux64,.TOC.@tocbase,0 + .size ffi_go_closure_linux64,24 + .type .ffi_go_closure_linux64,@function + .text +.ffi_go_closure_linux64: +# endif +# endif + +# if _CALL_ELF == 2 + ld %r12, 8(%r11) # closure->cif + mflr %r0 + lwz %r12, 28(%r12) # cif->flags + mtcrf 0x40, %r12 + addi %r12, %r1, PARMSAVE + bt 7, 0f + # Our caller has not allocated a parameter save area. + # We need to allocate one here and use it to pass gprs to + # ffi_closure_helper_LINUX64. + addi %r12, %r1, -STACKFRAME+PARMSAVE +0: + # Save general regs into parm save area + std %r3, 0(%r12) + std %r4, 8(%r12) + std %r5, 16(%r12) + std %r6, 24(%r12) + std %r7, 32(%r12) + std %r8, 40(%r12) + std %r9, 48(%r12) + std %r10, 56(%r12) + + # load up the pointer to the parm save area + mr %r7, %r12 +# else + mflr %r0 + # Save general regs into parm save area + # This is the parameter save area set up by our caller. + std %r3, PARMSAVE+0(%r1) + std %r4, PARMSAVE+8(%r1) + std %r5, PARMSAVE+16(%r1) + std %r6, PARMSAVE+24(%r1) + std %r7, PARMSAVE+32(%r1) + std %r8, PARMSAVE+40(%r1) + std %r9, PARMSAVE+48(%r1) + std %r10, PARMSAVE+56(%r1) + + # load up the pointer to the parm save area + addi %r7, %r1, PARMSAVE +# endif + std %r0, 16(%r1) + + # closure->cif + ld %r3, 8(%r11) + # closure->fun + ld %r4, 16(%r11) + # user_data + mr %r5, %r11 + b .Ldoclosure + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_go_closure_linux64,.-ffi_go_closure_linux64 +# else +# ifdef _CALL_LINUX + .size ffi_go_closure_linux64,.-.L.ffi_go_closure_linux64 +# else + .long 0 + .byte 0,12,0,1,128,0,0,0 + .size .ffi_go_closure_linux64,.-.ffi_go_closure_linux64 +# endif +# endif +#endif + +#if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ppc_closure.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ppc_closure.S new file mode 100644 index 0000000000..b6d209de86 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/ppc_closure.S @@ -0,0 +1,397 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ +#define LIBFFI_ASM +#include +#include +#include + + .file "ppc_closure.S" + +#ifndef POWERPC64 + +FFI_HIDDEN(ffi_closure_SYSV) +ENTRY(ffi_closure_SYSV) + .cfi_startproc + stwu %r1,-144(%r1) + .cfi_def_cfa_offset 144 + mflr %r0 + stw %r0,148(%r1) + .cfi_offset 65, 4 + +# we want to build up an areas for the parameters passed +# in registers (both floating point and integer) + + # so first save gpr 3 to gpr 10 (aligned to 4) + stw %r3, 16(%r1) + stw %r4, 20(%r1) + stw %r5, 24(%r1) + + # set up registers for the routine that does the work + + # closure->cif + lwz %r3,FFI_TRAMPOLINE_SIZE(%r11) + # closure->fun + lwz %r4,FFI_TRAMPOLINE_SIZE+4(%r11) + # closure->user_data + lwz %r5,FFI_TRAMPOLINE_SIZE+8(%r11) + +.Ldoclosure: + stw %r6, 28(%r1) + stw %r7, 32(%r1) + stw %r8, 36(%r1) + stw %r9, 40(%r1) + stw %r10,44(%r1) + +#ifndef __NO_FPRS__ + # next save fpr 1 to fpr 8 (aligned to 8) + stfd %f1, 48(%r1) + stfd %f2, 56(%r1) + stfd %f3, 64(%r1) + stfd %f4, 72(%r1) + stfd %f5, 80(%r1) + stfd %f6, 88(%r1) + stfd %f7, 96(%r1) + stfd %f8, 104(%r1) +#endif + + # pointer to the result storage + addi %r6,%r1,112 + + # pointer to the saved gpr registers + addi %r7,%r1,16 + + # pointer to the saved fpr registers + addi %r8,%r1,48 + + # pointer to the outgoing parameter save area in the previous frame + # i.e. the previous frame pointer + 8 + addi %r9,%r1,152 + + # make the call + bl ffi_closure_helper_SYSV@local +.Lret: + # now r3 contains the return type + # so use it to look up in a table + # so we know how to deal with each type + + # look up the proper starting point in table + # by using return type as offset + + mflr %r4 # move address of .Lret to r4 + slwi %r3,%r3,4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + lwz %r0,148(%r1) + add %r3,%r3,%r4 # add contents of table to table address + mtctr %r3 + bctr # jump to it + +# Each of the ret_typeX code fragments has to be exactly 16 bytes long +# (4 instructions). For cache effectiveness we align to a 16 byte boundary +# first. + .align 4 +# case FFI_TYPE_VOID +.Lret_type0: + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop + +# case FFI_TYPE_INT + lwz %r3,112+0(%r1) + mtlr %r0 +.Lfinish: + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_FLOAT +#ifndef __NO_FPRS__ + lfs %f1,112+0(%r1) +#else + nop +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_DOUBLE +#ifndef __NO_FPRS__ + lfd %f1,112+0(%r1) +#else + nop +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_LONGDOUBLE +#ifndef __NO_FPRS__ + lfd %f1,112+0(%r1) + lfd %f2,112+8(%r1) + mtlr %r0 + b .Lfinish +#else + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop +#endif + +# case FFI_TYPE_UINT8 +#ifdef __LITTLE_ENDIAN__ + lbz %r3,112+0(%r1) +#else + lbz %r3,112+3(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT8 +#ifdef __LITTLE_ENDIAN__ + lbz %r3,112+0(%r1) +#else + lbz %r3,112+3(%r1) +#endif + extsb %r3,%r3 + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_UINT16 +#ifdef __LITTLE_ENDIAN__ + lhz %r3,112+0(%r1) +#else + lhz %r3,112+2(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT16 +#ifdef __LITTLE_ENDIAN__ + lha %r3,112+0(%r1) +#else + lha %r3,112+2(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT32 + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT32 + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT64 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_SINT64 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_STRUCT + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop + +# case FFI_TYPE_POINTER + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT128 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + lwz %r5,112+8(%r1) + b .Luint128 + +# The return types below are only used when the ABI type is FFI_SYSV. +# case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct. + lbz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct. + lhz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct. + lwz %r3,112+0(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 +#else + srwi %r3,%r3,8 + mtlr %r0 + b .Lfinish +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct. + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,24 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,16 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,8 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +#ifndef __LITTLE_ENDIAN__ +.Lstruct567: + subfic %r6,%r5,32 + srw %r4,%r4,%r5 + slw %r6,%r3,%r6 + srw %r3,%r3,%r5 + or %r4,%r6,%r4 + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 +#endif + +.Luint128: + lwz %r6,112+12(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +END(ffi_closure_SYSV) + + +FFI_HIDDEN(ffi_go_closure_sysv) +ENTRY(ffi_go_closure_sysv) + .cfi_startproc + stwu %r1,-144(%r1) + .cfi_def_cfa_offset 144 + mflr %r0 + stw %r0,148(%r1) + .cfi_offset 65, 4 + + stw %r3, 16(%r1) + stw %r4, 20(%r1) + stw %r5, 24(%r1) + + # closure->cif + lwz %r3,4(%r11) + # closure->fun + lwz %r4,8(%r11) + # user_data + mr %r5,%r11 + b .Ldoclosure + .cfi_endproc +END(ffi_go_closure_sysv) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/sysv.S new file mode 100644 index 0000000000..1474ce702b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/powerpc/sysv.S @@ -0,0 +1,175 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 1998 Geoffrey Keating + Copyright (C) 2007 Free Software Foundation, Inc + + PowerPC Assembly glue. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include + +#ifndef POWERPC64 +FFI_HIDDEN(ffi_call_SYSV) +ENTRY(ffi_call_SYSV) + .cfi_startproc + /* Save the old stack pointer as AP. */ + mr %r10,%r1 + .cfi_def_cfa_register 10 + + /* Allocate the stack space we need. */ + stwux %r1,%r1,%r8 + /* Save registers we use. */ + mflr %r9 + stw %r28,-16(%r10) + stw %r29,-12(%r10) + stw %r30, -8(%r10) + stw %r31, -4(%r10) + stw %r9, 4(%r10) + .cfi_offset 65, 4 + .cfi_offset 31, -4 + .cfi_offset 30, -8 + .cfi_offset 29, -12 + .cfi_offset 28, -16 + + /* Save arguments over call... */ + stw %r7, -20(%r10) /* closure, */ + mr %r31,%r6 /* flags, */ + mr %r30,%r5 /* rvalue, */ + mr %r29,%r4 /* function address, */ + mr %r28,%r10 /* our AP. */ + .cfi_def_cfa_register 28 + + /* Call ffi_prep_args_SYSV. */ + mr %r4,%r1 + bl ffi_prep_args_SYSV@local + + /* Now do the call. */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40,%r31 + /* Get the address to call into CTR. */ + mtctr %r29 + /* Load all those argument registers. */ + lwz %r3,-24-(8*4)(%r28) + lwz %r4,-24-(7*4)(%r28) + lwz %r5,-24-(6*4)(%r28) + lwz %r6,-24-(5*4)(%r28) + bf- 5,1f + nop + lwz %r7,-24-(4*4)(%r28) + lwz %r8,-24-(3*4)(%r28) + lwz %r9,-24-(2*4)(%r28) + lwz %r10,-24-(1*4)(%r28) + nop +1: + +#ifndef __NO_FPRS__ + /* Load all the FP registers. */ + bf- 6,2f + lfd %f1,-24-(8*4)-(8*8)(%r28) + lfd %f2,-24-(8*4)-(7*8)(%r28) + lfd %f3,-24-(8*4)-(6*8)(%r28) + lfd %f4,-24-(8*4)-(5*8)(%r28) + nop + lfd %f5,-24-(8*4)-(4*8)(%r28) + lfd %f6,-24-(8*4)-(3*8)(%r28) + lfd %f7,-24-(8*4)-(2*8)(%r28) + lfd %f8,-24-(8*4)-(1*8)(%r28) +#endif +2: + + /* Make the call. */ + lwz %r11, -20(%r28) + bctrl + + /* Now, deal with the return value. */ + mtcrf 0x01,%r31 /* cr7 */ + bt- 31,L(small_struct_return_value) + bt- 30,L(done_return_value) +#ifndef __NO_FPRS__ + bt- 29,L(fp_return_value) +#endif + stw %r3,0(%r30) + bf+ 28,L(done_return_value) + stw %r4,4(%r30) + mtcrf 0x02,%r31 /* cr6 */ + bf 27,L(done_return_value) + stw %r5,8(%r30) + stw %r6,12(%r30) + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + lwz %r9, 4(%r28) + lwz %r31, -4(%r28) + mtlr %r9 + lwz %r30, -8(%r28) + lwz %r29,-12(%r28) + lwz %r28,-16(%r28) + .cfi_remember_state + /* At this point we don't have a cfa register. Say all our + saved regs have been restored. */ + .cfi_same_value 65 + .cfi_same_value 31 + .cfi_same_value 30 + .cfi_same_value 29 + .cfi_same_value 28 + /* Hopefully this works.. */ + .cfi_def_cfa_register 1 + .cfi_offset 1, 0 + lwz %r1,0(%r1) + .cfi_same_value 1 + blr + +#ifndef __NO_FPRS__ +L(fp_return_value): + .cfi_restore_state + bf 28,L(float_return_value) + stfd %f1,0(%r30) + mtcrf 0x02,%r31 /* cr6 */ + bf 27,L(done_return_value) + stfd %f2,8(%r30) + b L(done_return_value) +L(float_return_value): + stfs %f1,0(%r30) + b L(done_return_value) +#endif + +L(small_struct_return_value): + /* + * The C code always allocates a properly-aligned 8-byte bounce + * buffer to make this assembly code very simple. Just write out + * r3 and r4 to the buffer to allow the C code to handle the rest. + */ + stw %r3, 0(%r30) + stw %r4, 4(%r30) + b L(done_return_value) + .cfi_endproc + +END(ffi_call_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/prep_cif.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/prep_cif.c new file mode 100644 index 0000000000..fe054536a8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/prep_cif.c @@ -0,0 +1,261 @@ +/* ----------------------------------------------------------------------- + prep_cif.c - Copyright (c) 2011, 2012 Anthony Green + Copyright (c) 1996, 1998, 2007 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include + +/* Round up to FFI_SIZEOF_ARG. */ + +#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG) + +/* Perform machine independent initialization of aggregate type + specifications. */ + +static ffi_status initialize_aggregate(ffi_type *arg, size_t *offsets) +{ + ffi_type **ptr; + + if (UNLIKELY(arg == NULL || arg->elements == NULL)) + return FFI_BAD_TYPEDEF; + + arg->size = 0; + arg->alignment = 0; + + ptr = &(arg->elements[0]); + + if (UNLIKELY(ptr == 0)) + return FFI_BAD_TYPEDEF; + + while ((*ptr) != NULL) + { + if (UNLIKELY(((*ptr)->size == 0) + && (initialize_aggregate((*ptr), NULL) != FFI_OK))) + return FFI_BAD_TYPEDEF; + + /* Perform a sanity check on the argument type */ + FFI_ASSERT_VALID_TYPE(*ptr); + + arg->size = FFI_ALIGN(arg->size, (*ptr)->alignment); + if (offsets) + *offsets++ = arg->size; + arg->size += (*ptr)->size; + + arg->alignment = (arg->alignment > (*ptr)->alignment) ? + arg->alignment : (*ptr)->alignment; + + ptr++; + } + + /* Structure size includes tail padding. This is important for + structures that fit in one register on ABIs like the PowerPC64 + Linux ABI that right justify small structs in a register. + It's also needed for nested structure layout, for example + struct A { long a; char b; }; struct B { struct A x; char y; }; + should find y at an offset of 2*sizeof(long) and result in a + total size of 3*sizeof(long). */ + arg->size = FFI_ALIGN (arg->size, arg->alignment); + + /* On some targets, the ABI defines that structures have an additional + alignment beyond the "natural" one based on their elements. */ +#ifdef FFI_AGGREGATE_ALIGNMENT + if (FFI_AGGREGATE_ALIGNMENT > arg->alignment) + arg->alignment = FFI_AGGREGATE_ALIGNMENT; +#endif + + if (arg->size == 0) + return FFI_BAD_TYPEDEF; + else + return FFI_OK; +} + +#ifndef __CRIS__ +/* The CRIS ABI specifies structure elements to have byte + alignment only, so it completely overrides this functions, + which assumes "natural" alignment and padding. */ + +/* Perform machine independent ffi_cif preparation, then call + machine dependent routine. */ + +/* For non variadic functions isvariadic should be 0 and + nfixedargs==ntotalargs. + + For variadic calls, isvariadic should be 1 and nfixedargs + and ntotalargs set as appropriate. nfixedargs must always be >=1 */ + + +ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, + unsigned int isvariadic, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, ffi_type **atypes) +{ + unsigned bytes = 0; + unsigned int i; + ffi_type **ptr; + + FFI_ASSERT(cif != NULL); + FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); + FFI_ASSERT(nfixedargs <= ntotalargs); + + if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) + return FFI_BAD_ABI; + + cif->abi = abi; + cif->arg_types = atypes; + cif->nargs = ntotalargs; + cif->rtype = rtype; + + cif->flags = 0; + +#if HAVE_LONG_DOUBLE_VARIANT + ffi_prep_types (abi); +#endif + + /* Initialize the return type if necessary */ + if ((cif->rtype->size == 0) + && (initialize_aggregate(cif->rtype, NULL) != FFI_OK)) + return FFI_BAD_TYPEDEF; + +#ifndef FFI_TARGET_HAS_COMPLEX_TYPE + if (rtype->type == FFI_TYPE_COMPLEX) + abort(); +#endif + /* Perform a sanity check on the return type */ + FFI_ASSERT_VALID_TYPE(cif->rtype); + + /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */ +#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + /* Make space for the return structure pointer */ + if (cif->rtype->type == FFI_TYPE_STRUCT +#ifdef TILE + && (cif->rtype->size > 10 * FFI_SIZEOF_ARG) +#endif +#ifdef XTENSA + && (cif->rtype->size > 16) +#endif +#ifdef NIOS2 + && (cif->rtype->size > 8) +#endif + ) + bytes = STACK_ARG_SIZE(sizeof(void*)); +#endif + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + + /* Initialize any uninitialized aggregate type definitions */ + if (((*ptr)->size == 0) + && (initialize_aggregate((*ptr), NULL) != FFI_OK)) + return FFI_BAD_TYPEDEF; + +#ifndef FFI_TARGET_HAS_COMPLEX_TYPE + if ((*ptr)->type == FFI_TYPE_COMPLEX) + abort(); +#endif + /* Perform a sanity check on the argument type, do this + check after the initialization. */ + FFI_ASSERT_VALID_TYPE(*ptr); + +#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + { + /* Add any padding if necessary */ + if (((*ptr)->alignment - 1) & bytes) + bytes = (unsigned)FFI_ALIGN(bytes, (*ptr)->alignment); + +#ifdef TILE + if (bytes < 10 * FFI_SIZEOF_ARG && + bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG) + { + /* An argument is never split between the 10 parameter + registers and the stack. */ + bytes = 10 * FFI_SIZEOF_ARG; + } +#endif +#ifdef XTENSA + if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4) + bytes = 6*4; +#endif + + bytes += STACK_ARG_SIZE((*ptr)->size); + } +#endif + } + + cif->bytes = bytes; + + /* Perform machine dependent cif processing */ +#ifdef FFI_TARGET_SPECIFIC_VARIADIC + if (isvariadic) + return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs); +#endif + + return ffi_prep_cif_machdep(cif); +} +#endif /* not __CRIS__ */ + +ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, + ffi_type *rtype, ffi_type **atypes) +{ + return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes); +} + +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes) +{ + return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes); +} + +#if FFI_CLOSURES + +ffi_status +ffi_prep_closure (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +{ + return ffi_prep_closure_loc (closure, cif, fun, user_data, closure); +} + +#endif + +ffi_status +ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets) +{ + if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) + return FFI_BAD_ABI; + if (struct_type->type != FFI_TYPE_STRUCT) + return FFI_BAD_TYPEDEF; + +#if HAVE_LONG_DOUBLE_VARIANT + ffi_prep_types (abi); +#endif + + return initialize_aggregate(struct_type, offsets); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/raw_api.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/raw_api.c new file mode 100644 index 0000000000..be156116cb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/raw_api.c @@ -0,0 +1,267 @@ +/* ----------------------------------------------------------------------- + raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc. + + Author: Kresten Krab Thorup + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +/* This file defines generic functions for use with the raw api. */ + +#include +#include + +#if !FFI_NO_RAW_API + +size_t +ffi_raw_size (ffi_cif *cif) +{ + size_t result = 0; + int i; + + ffi_type **at = cif->arg_types; + + for (i = cif->nargs-1; i >= 0; i--, at++) + { +#if !FFI_NO_STRUCTS + if ((*at)->type == FFI_TYPE_STRUCT) + result += FFI_ALIGN (sizeof (void*), FFI_SIZEOF_ARG); + else +#endif + result += FFI_ALIGN ((*at)->size, FFI_SIZEOF_ARG); + } + + return result; +} + + +void +ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + +#if WORDS_BIGENDIAN + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 1); + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 2); + break; + +#if FFI_SIZEOF_ARG >= 4 + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 4); + break; +#endif + +#if !FFI_NO_STRUCTS + case FFI_TYPE_STRUCT: + *args = (raw++)->ptr; + break; +#endif + + case FFI_TYPE_COMPLEX: + *args = (raw++)->ptr; + break; + + case FFI_TYPE_POINTER: + *args = (void*) &(raw++)->ptr; + break; + + default: + *args = raw; + raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + } + } + +#else /* WORDS_BIGENDIAN */ + +#if !PDP + + /* then assume little endian */ + for (i = 0; i < cif->nargs; i++, tp++, args++) + { +#if !FFI_NO_STRUCTS + if ((*tp)->type == FFI_TYPE_STRUCT) + { + *args = (raw++)->ptr; + } + else +#endif + if ((*tp)->type == FFI_TYPE_COMPLEX) + { + *args = (raw++)->ptr; + } + else + { + *args = (void*) raw; + raw += FFI_ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*); + } + } + +#else +#error "pdp endian not supported" +#endif /* ! PDP */ + +#endif /* WORDS_BIGENDIAN */ +} + +void +ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + (raw++)->uint = *(UINT8*) (*args); + break; + + case FFI_TYPE_SINT8: + (raw++)->sint = *(SINT8*) (*args); + break; + + case FFI_TYPE_UINT16: + (raw++)->uint = *(UINT16*) (*args); + break; + + case FFI_TYPE_SINT16: + (raw++)->sint = *(SINT16*) (*args); + break; + +#if FFI_SIZEOF_ARG >= 4 + case FFI_TYPE_UINT32: + (raw++)->uint = *(UINT32*) (*args); + break; + + case FFI_TYPE_SINT32: + (raw++)->sint = *(SINT32*) (*args); + break; +#endif + +#if !FFI_NO_STRUCTS + case FFI_TYPE_STRUCT: + (raw++)->ptr = *args; + break; +#endif + + case FFI_TYPE_COMPLEX: + (raw++)->ptr = *args; + break; + + case FFI_TYPE_POINTER: + (raw++)->ptr = **(void***) args; + break; + + default: + memcpy ((void*) raw->data, (void*)*args, (*tp)->size); + raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + } + } +} + +#if !FFI_NATIVE_RAW_API + + +/* This is a generic definition of ffi_raw_call, to be used if the + * native system does not provide a machine-specific implementation. + * Having this, allows code to be written for the raw API, without + * the need for system-specific code to handle input in that format; + * these following couple of functions will handle the translation forth + * and back automatically. */ + +void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *raw) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + ffi_raw_to_ptrarray (cif, raw, avalue); + ffi_call (cif, fn, rvalue, avalue); +} + +#if FFI_CLOSURES /* base system provides closures */ + +static void +ffi_translate_args (ffi_cif *cif, void *rvalue, + void **avalue, void *user_data) +{ + ffi_raw *raw = (ffi_raw*)alloca (ffi_raw_size (cif)); + ffi_raw_closure *cl = (ffi_raw_closure*)user_data; + + ffi_ptrarray_to_raw (cif, avalue, raw); + (*cl->fun) (cif, rvalue, raw, cl->user_data); +} + +ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc) +{ + ffi_status status; + + status = ffi_prep_closure_loc ((ffi_closure*) cl, + cif, + &ffi_translate_args, + codeloc, + codeloc); + if (status == FFI_OK) + { + cl->fun = fun; + cl->user_data = user_data; + } + + return status; +} + +#endif /* FFI_CLOSURES */ +#endif /* !FFI_NATIVE_RAW_API */ + +#if FFI_CLOSURES + +/* Again, here is the generic version of ffi_prep_raw_closure, which + * will install an intermediate "hub" for translation of arguments from + * the pointer-array format, to the raw format */ + +ffi_status +ffi_prep_raw_closure (ffi_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data) +{ + return ffi_prep_raw_closure_loc (cl, cif, fun, user_data, cl); +} + +#endif /* FFI_CLOSURES */ + +#endif /* !FFI_NO_RAW_API */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffi.c new file mode 100644 index 0000000000..b744fdd9f3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffi.c @@ -0,0 +1,445 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2015 Michael Knyszek + 2015 Andrew Waterman + 2018 Stef O'Rear + Based on MIPS N32/64 port + + RISC-V Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#if __riscv_float_abi_double +#define ABI_FLEN 64 +#define ABI_FLOAT double +#elif __riscv_float_abi_single +#define ABI_FLEN 32 +#define ABI_FLOAT float +#endif + +#define NARGREG 8 +#define STKALIGN 16 +#define MAXCOPYARG (2 * sizeof(double)) + +typedef struct call_context +{ +#if ABI_FLEN + ABI_FLOAT fa[8]; +#endif + size_t a[8]; + /* used by the assembly code to in-place construct its own stack frame */ + char frame[16]; +} call_context; + +typedef struct call_builder +{ + call_context *aregs; + int used_integer; + int used_float; + size_t *used_stack; +} call_builder; + +/* integer (not pointer) less than ABI XLEN */ +/* FFI_TYPE_INT does not appear to be used */ +#if __SIZEOF_POINTER__ == 8 +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) +#else +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) +#endif + +#if ABI_FLEN +typedef struct { + char as_elements, type1, offset2, type2; +} float_struct_info; + +#if ABI_FLEN >= 64 +#define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) +#else +#define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) +#endif + +static ffi_type **flatten_struct(ffi_type *in, ffi_type **out, ffi_type **out_end) { + int i; + if (out == out_end) return out; + if (in->type != FFI_TYPE_STRUCT) { + *(out++) = in; + } else { + for (i = 0; in->elements[i]; i++) + out = flatten_struct(in->elements[i], out, out_end); + } + return out; +} + +/* Structs with at most two fields after flattening, one of which is of + floating point type, are passed in multiple registers if sufficient + registers are available. */ +static float_struct_info struct_passed_as_elements(call_builder *cb, ffi_type *top) { + float_struct_info ret = {0, 0, 0, 0}; + ffi_type *fields[3]; + int num_floats, num_ints; + int num_fields = flatten_struct(top, fields, fields + 3) - fields; + + if (num_fields == 1) { + if (IS_FLOAT(fields[0]->type)) { + ret.as_elements = 1; + ret.type1 = fields[0]->type; + } + } else if (num_fields == 2) { + num_floats = IS_FLOAT(fields[0]->type) + IS_FLOAT(fields[1]->type); + num_ints = IS_INT(fields[0]->type) + IS_INT(fields[1]->type); + if (num_floats == 0 || num_floats + num_ints != 2) + return ret; + if (cb->used_float + num_floats > NARGREG || cb->used_integer + (2 - num_floats) > NARGREG) + return ret; + if (!IS_FLOAT(fields[0]->type) && !IS_FLOAT(fields[1]->type)) + return ret; + + ret.type1 = fields[0]->type; + ret.type2 = fields[1]->type; + ret.offset2 = FFI_ALIGN(fields[0]->size, fields[1]->alignment); + ret.as_elements = 1; + } + + return ret; +} +#endif + +/* allocates a single register, float register, or XLEN-sized stack slot to a datum */ +static void marshal_atom(call_builder *cb, int type, void *data) { + size_t value = 0; + switch (type) { + case FFI_TYPE_UINT8: value = *(uint8_t *)data; break; + case FFI_TYPE_SINT8: value = *(int8_t *)data; break; + case FFI_TYPE_UINT16: value = *(uint16_t *)data; break; + case FFI_TYPE_SINT16: value = *(int16_t *)data; break; + /* 32-bit quantities are always sign-extended in the ABI */ + case FFI_TYPE_UINT32: value = *(int32_t *)data; break; + case FFI_TYPE_SINT32: value = *(int32_t *)data; break; +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: value = *(uint64_t *)data; break; + case FFI_TYPE_SINT64: value = *(int64_t *)data; break; +#endif + case FFI_TYPE_POINTER: value = *(size_t *)data; break; + + /* float values may be recoded in an implementation-defined way + by hardware conforming to 2.1 or earlier, so use asm to + reinterpret floats as doubles */ +#if ABI_FLEN >= 32 + case FFI_TYPE_FLOAT: + asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(float *)data)); + return; +#endif +#if ABI_FLEN >= 64 + case FFI_TYPE_DOUBLE: + asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(double *)data)); + return; +#endif + default: FFI_ASSERT(0); break; + } + + if (cb->used_integer == NARGREG) { + *cb->used_stack++ = value; + } else { + cb->aregs->a[cb->used_integer++] = value; + } +} + +static void unmarshal_atom(call_builder *cb, int type, void *data) { + size_t value; + switch (type) { +#if ABI_FLEN >= 32 + case FFI_TYPE_FLOAT: + asm("" : "=f"(*(float *)data) : "0"(cb->aregs->fa[cb->used_float++])); + return; +#endif +#if ABI_FLEN >= 64 + case FFI_TYPE_DOUBLE: + asm("" : "=f"(*(double *)data) : "0"(cb->aregs->fa[cb->used_float++])); + return; +#endif + } + + if (cb->used_integer == NARGREG) { + value = *cb->used_stack++; + } else { + value = cb->aregs->a[cb->used_integer++]; + } + + switch (type) { + case FFI_TYPE_UINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_SINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_UINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_SINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_UINT32: *(uint32_t *)data = value; break; + case FFI_TYPE_SINT32: *(uint32_t *)data = value; break; +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: *(uint64_t *)data = value; break; + case FFI_TYPE_SINT64: *(uint64_t *)data = value; break; +#endif + case FFI_TYPE_POINTER: *(size_t *)data = value; break; + default: FFI_ASSERT(0); break; + } +} + +/* adds an argument to a call, or a not by reference return value */ +static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) { + marshal_atom(cb, fsi.type1, data); + if (fsi.offset2) + marshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); + return; + } + } + + if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { + marshal_atom(cb, type->type, data); + return; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + marshal_atom(cb, FFI_TYPE_POINTER, &data); + } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + marshal_atom(cb, type->type, data); + } else { + /* overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on */ + + /* variadics are aligned even in registers */ + if (type->alignment > __SIZEOF_POINTER__) { + if (var) + cb->used_integer = FFI_ALIGN(cb->used_integer, 2); + cb->used_stack = (size_t *)FFI_ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); + } + + memcpy(realign, data, type->size); + if (type->size > 0) + marshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + marshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + } +} + +/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ +static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + void *pointer; + +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) { + unmarshal_atom(cb, fsi.type1, data); + if (fsi.offset2) + unmarshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); + return data; + } + } + + if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { + unmarshal_atom(cb, type->type, data); + return data; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); + return pointer; + } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + unmarshal_atom(cb, type->type, data); + return data; + } else { + /* overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on */ + + /* variadics are aligned even in registers */ + if (type->alignment > __SIZEOF_POINTER__) { + if (var) + cb->used_integer = FFI_ALIGN(cb->used_integer, 2); + cb->used_stack = (size_t *)FFI_ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); + } + + if (type->size > 0) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + memcpy(data, realign, type->size); + return data; + } +} + +static int passed_by_ref(call_builder *cb, ffi_type *type, int var) { +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) return 0; + } +#endif + + return type->size > 2 * __SIZEOF_POINTER__; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { + cif->riscv_nfixedargs = cif->nargs; + return FFI_OK; +} + +/* Perform machine dependent cif processing when we have a variadic function */ + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { + cif->riscv_nfixedargs = nfixedargs; + return FFI_OK; +} + +/* Low level routine for calling functions */ +extern void ffi_call_asm(void *stack, struct call_context *regs, void (*fn)(void)) FFI_HIDDEN; + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + /* this is a conservative estimate, assuming a complex return value and + that all remaining arguments are long long / __int128 */ + size_t arg_bytes = cif->nargs <= 3 ? 0 : + FFI_ALIGN(2 * sizeof(size_t) * (cif->nargs - 3), STKALIGN); + size_t rval_bytes = 0; + if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) + rval_bytes = FFI_ALIGN(cif->rtype->size, STKALIGN); + size_t alloc_size = arg_bytes + rval_bytes + sizeof(call_context); + + /* the assembly code will deallocate all stack data at lower addresses + than the argument region, so we need to allocate the frame and the + return value after the arguments in a single allocation */ + size_t alloc_base; + /* Argument region must be 16-byte aligned */ + if (_Alignof(max_align_t) >= STKALIGN) { + /* since sizeof long double is normally 16, the compiler will + guarantee alloca alignment to at least that much */ + alloc_base = (size_t)alloca(alloc_size); + } else { + alloc_base = FFI_ALIGN(alloca(alloc_size + STKALIGN - 1), STKALIGN); + } + + if (rval_bytes) + rvalue = (void*)(alloc_base + arg_bytes); + + call_builder cb; + cb.used_float = cb.used_integer = 0; + cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes); + cb.used_stack = (void*)alloc_base; + + int return_by_ref = passed_by_ref(&cb, cif->rtype, 0); + if (return_by_ref) + marshal(&cb, &ffi_type_pointer, 0, &rvalue); + + int i; + for (i = 0; i < cif->nargs; i++) + marshal(&cb, cif->arg_types[i], i >= cif->riscv_nfixedargs, avalue[i]); + + ffi_call_asm((void*)alloc_base, cb.aregs, fn); + + cb.used_float = cb.used_integer = 0; + if (!return_by_ref && rvalue) + unmarshal(&cb, cif->rtype, 0, rvalue); +} + +extern void ffi_closure_asm(void) FFI_HIDDEN; + +ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) +{ + uint32_t *tramp = (uint32_t *) &closure->tramp[0]; + uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; + + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + /* we will call ffi_closure_inner with codeloc, not closure, but as long + as the memory is readable it should work */ + + tramp[0] = 0x00000317; /* auipc t1, 0 (i.e. t0 <- codeloc) */ +#if __SIZEOF_POINTER__ == 8 + tramp[1] = 0x01033383; /* ld t2, 16(t1) */ +#else + tramp[1] = 0x01032383; /* lw t2, 16(t1) */ +#endif + tramp[2] = 0x00038067; /* jr t2 */ + tramp[3] = 0x00000013; /* nop */ + tramp[4] = fn; + tramp[5] = fn >> 32; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + __builtin___clear_cache(codeloc, codeloc + FFI_TRAMPOLINE_SIZE); + + return FFI_OK; +} + +/* Called by the assembly code with aregs pointing to saved argument registers + and stack pointing to the stacked arguments. Return values passed in + registers will be reloaded from aregs. */ +void FFI_HIDDEN ffi_closure_inner(size_t *stack, call_context *aregs, ffi_closure *closure) { + ffi_cif *cif = closure->cif; + void **avalue = alloca(cif->nargs * sizeof(void*)); + /* storage for arguments which will be copied by unmarshal(). We could + theoretically avoid the copies in many cases and use at most 128 bytes + of memory, but allocating disjoint storage for each argument is + simpler. */ + char *astorage = alloca(cif->nargs * MAXCOPYARG); + void *rvalue; + call_builder cb; + int return_by_ref; + int i; + + cb.aregs = aregs; + cb.used_integer = cb.used_float = 0; + cb.used_stack = stack; + + return_by_ref = passed_by_ref(&cb, cif->rtype, 0); + if (return_by_ref) + unmarshal(&cb, &ffi_type_pointer, 0, &rvalue); + else + rvalue = alloca(cif->rtype->size); + + for (i = 0; i < cif->nargs; i++) + avalue[i] = unmarshal(&cb, cif->arg_types[i], + i >= cif->riscv_nfixedargs, astorage + i*MAXCOPYARG); + + (closure->fun)(cif, rvalue, avalue, closure->user_data); + + if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) { + cb.used_integer = cb.used_float = 0; + marshal(&cb, cif->rtype, 0, rvalue); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffitarget.h new file mode 100644 index 0000000000..fcaa899153 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/ffitarget.h @@ -0,0 +1,68 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - 2014 Michael Knyszek + + Target configuration macros for RISC-V. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef __riscv +#error "libffi was configured for a RISC-V target but this does not appear to be a RISC-V compiler." +#endif + +#ifndef LIBFFI_ASM + +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +/* FFI_UNUSED_NN and riscv_unused are to maintain ABI compatibility with a + distributed Berkeley patch from 2014, and can be removed at SONAME bump */ +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_UNUSED_1, + FFI_UNUSED_2, + FFI_UNUSED_3, + FFI_LAST_ABI, + + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; + +#endif /* LIBFFI_ASM */ + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 +#define FFI_EXTRA_CIF_FIELDS unsigned riscv_nfixedargs; unsigned riscv_unused; +#define FFI_TARGET_SPECIFIC_VARIADIC + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/sysv.S new file mode 100644 index 0000000000..2d098651d0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/riscv/sysv.S @@ -0,0 +1,214 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2015 Michael Knyszek + 2015 Andrew Waterman + 2018 Stef O'Rear + + RISC-V Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Define aliases so that we can handle all ABIs uniformly */ + +#if __SIZEOF_POINTER__ == 8 +#define PTRS 8 +#define LARG ld +#define SARG sd +#else +#define PTRS 4 +#define LARG lw +#define SARG sw +#endif + +#if __riscv_float_abi_double +#define FLTS 8 +#define FLARG fld +#define FSARG fsd +#elif __riscv_float_abi_single +#define FLTS 4 +#define FLARG flw +#define FSARG fsw +#else +#define FLTS 0 +#endif + +#define fp s0 + + .text + .globl ffi_call_asm + .type ffi_call_asm, @function + .hidden ffi_call_asm +/* + struct call_context { + floatreg fa[8]; + intreg a[8]; + intreg pad[rv32 ? 2 : 0]; + intreg save_fp, save_ra; + } + void ffi_call_asm(size_t *stackargs, struct call_context *regargs, + void (*fn)(void)); +*/ + +#define FRAME_LEN (8 * FLTS + 8 * PTRS + 16) + +ffi_call_asm: + .cfi_startproc + + /* + We are NOT going to set up an ordinary stack frame. In order to pass + the stacked args to the called function, we adjust our stack pointer to + a0, which is in the _caller's_ alloca area. We establish our own stack + frame at the end of the call_context. + + Anything below the arguments will be freed at this point, although we + preserve the call_context so that it can be read back in the caller. + */ + + .cfi_def_cfa 11, FRAME_LEN # interim CFA based on a1 + SARG fp, FRAME_LEN - 2*PTRS(a1) + .cfi_offset 8, -2*PTRS + SARG ra, FRAME_LEN - 1*PTRS(a1) + .cfi_offset 1, -1*PTRS + + addi fp, a1, FRAME_LEN + mv sp, a0 + .cfi_def_cfa 8, 0 # our frame is fully set up + + # Load arguments + mv t1, a2 + +#if FLTS + FLARG fa0, -FRAME_LEN+0*FLTS(fp) + FLARG fa1, -FRAME_LEN+1*FLTS(fp) + FLARG fa2, -FRAME_LEN+2*FLTS(fp) + FLARG fa3, -FRAME_LEN+3*FLTS(fp) + FLARG fa4, -FRAME_LEN+4*FLTS(fp) + FLARG fa5, -FRAME_LEN+5*FLTS(fp) + FLARG fa6, -FRAME_LEN+6*FLTS(fp) + FLARG fa7, -FRAME_LEN+7*FLTS(fp) +#endif + + LARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) + LARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) + LARG a2, -FRAME_LEN+8*FLTS+2*PTRS(fp) + LARG a3, -FRAME_LEN+8*FLTS+3*PTRS(fp) + LARG a4, -FRAME_LEN+8*FLTS+4*PTRS(fp) + LARG a5, -FRAME_LEN+8*FLTS+5*PTRS(fp) + LARG a6, -FRAME_LEN+8*FLTS+6*PTRS(fp) + LARG a7, -FRAME_LEN+8*FLTS+7*PTRS(fp) + + /* Call */ + jalr t1 + + /* Save return values - only a0/a1 (fa0/fa1) are used */ +#if FLTS + FSARG fa0, -FRAME_LEN+0*FLTS(fp) + FSARG fa1, -FRAME_LEN+1*FLTS(fp) +#endif + + SARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) + SARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) + + /* Restore and return */ + addi sp, fp, -FRAME_LEN + .cfi_def_cfa 2, FRAME_LEN + LARG ra, -1*PTRS(fp) + .cfi_restore 1 + LARG fp, -2*PTRS(fp) + .cfi_restore 8 + ret + .cfi_endproc + .size ffi_call_asm, .-ffi_call_asm + + +/* + ffi_closure_asm. Expects address of the passed-in ffi_closure in t1. + void ffi_closure_inner(size_t *stackargs, struct call_context *regargs, + ffi_closure *closure); +*/ + + .globl ffi_closure_asm + .hidden ffi_closure_asm + .type ffi_closure_asm, @function +ffi_closure_asm: + .cfi_startproc + + addi sp, sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* make a frame */ + SARG fp, FRAME_LEN - 2*PTRS(sp) + .cfi_offset 8, -2*PTRS + SARG ra, FRAME_LEN - 1*PTRS(sp) + .cfi_offset 1, -1*PTRS + addi fp, sp, FRAME_LEN + + /* save arguments */ +#if FLTS + FSARG fa0, 0*FLTS(sp) + FSARG fa1, 1*FLTS(sp) + FSARG fa2, 2*FLTS(sp) + FSARG fa3, 3*FLTS(sp) + FSARG fa4, 4*FLTS(sp) + FSARG fa5, 5*FLTS(sp) + FSARG fa6, 6*FLTS(sp) + FSARG fa7, 7*FLTS(sp) +#endif + + SARG a0, 8*FLTS+0*PTRS(sp) + SARG a1, 8*FLTS+1*PTRS(sp) + SARG a2, 8*FLTS+2*PTRS(sp) + SARG a3, 8*FLTS+3*PTRS(sp) + SARG a4, 8*FLTS+4*PTRS(sp) + SARG a5, 8*FLTS+5*PTRS(sp) + SARG a6, 8*FLTS+6*PTRS(sp) + SARG a7, 8*FLTS+7*PTRS(sp) + + /* enter C */ + addi a0, sp, FRAME_LEN + mv a1, sp + mv a2, t1 + + call ffi_closure_inner + + /* return values */ +#if FLTS + FLARG fa0, 0*FLTS(sp) + FLARG fa1, 1*FLTS(sp) +#endif + + LARG a0, 8*FLTS+0*PTRS(sp) + LARG a1, 8*FLTS+1*PTRS(sp) + + /* restore and return */ + LARG ra, FRAME_LEN-1*PTRS(sp) + .cfi_restore 1 + LARG fp, FRAME_LEN-2*PTRS(sp) + .cfi_restore 8 + addi sp, sp, FRAME_LEN + .cfi_def_cfa_offset 0 + ret + .cfi_endproc + .size ffi_closure_asm, .-ffi_closure_asm diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffi.c new file mode 100644 index 0000000000..4035b6e366 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffi.c @@ -0,0 +1,756 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2000, 2007 Software AG + Copyright (c) 2008 Red Hat, Inc + + S390 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ +/*====================================================================*/ +/* Includes */ +/* -------- */ +/*====================================================================*/ + +#include +#include +#include +#include "internal.h" + +/*====================== End of Includes =============================*/ + +/*====================================================================*/ +/* Defines */ +/* ------- */ +/*====================================================================*/ + +/* Maximum number of GPRs available for argument passing. */ +#define MAX_GPRARGS 5 + +/* Maximum number of FPRs available for argument passing. */ +#ifdef __s390x__ +#define MAX_FPRARGS 4 +#else +#define MAX_FPRARGS 2 +#endif + +/* Round to multiple of 16. */ +#define ROUND_SIZE(size) (((size) + 15) & ~15) + +/*===================== End of Defines ===============================*/ + +/*====================================================================*/ +/* Externals */ +/* --------- */ +/*====================================================================*/ + +struct call_frame +{ + void *back_chain; + void *eos; + unsigned long gpr_args[5]; + unsigned long gpr_save[9]; + unsigned long long fpr_args[4]; +}; + +extern void FFI_HIDDEN ffi_call_SYSV(struct call_frame *, unsigned, void *, + void (*fn)(void), void *); + +extern void ffi_closure_SYSV(void); +extern void ffi_go_closure_SYSV(void); + +/*====================== End of Externals ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_check_struct_type. */ +/* */ +/* Function - Determine if a structure can be passed within a */ +/* general purpose or floating point register. */ +/* */ +/*====================================================================*/ + +static int +ffi_check_struct_type (ffi_type *arg) +{ + size_t size = arg->size; + + /* If the struct has just one element, look at that element + to find out whether to consider the struct as floating point. */ + while (arg->type == FFI_TYPE_STRUCT + && arg->elements[0] && !arg->elements[1]) + arg = arg->elements[0]; + + /* Structs of size 1, 2, 4, and 8 are passed in registers, + just like the corresponding int/float types. */ + switch (size) + { + case 1: + return FFI_TYPE_UINT8; + + case 2: + return FFI_TYPE_UINT16; + + case 4: + if (arg->type == FFI_TYPE_FLOAT) + return FFI_TYPE_FLOAT; + else + return FFI_TYPE_UINT32; + + case 8: + if (arg->type == FFI_TYPE_DOUBLE) + return FFI_TYPE_DOUBLE; + else + return FFI_TYPE_UINT64; + + default: + break; + } + + /* Other structs are passed via a pointer to the data. */ + return FFI_TYPE_POINTER; +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_prep_cif_machdep. */ +/* */ +/* Function - Perform machine dependent CIF processing. */ +/* */ +/*====================================================================*/ + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t struct_size = 0; + int n_gpr = 0; + int n_fpr = 0; + int n_ov = 0; + + ffi_type **ptr; + int i; + + /* Determine return value handling. */ + + switch (cif->rtype->type) + { + /* Void is easy. */ + case FFI_TYPE_VOID: + cif->flags = FFI390_RET_VOID; + break; + + /* Structures and complex are returned via a hidden pointer. */ + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + cif->flags = FFI390_RET_STRUCT; + n_gpr++; /* We need one GPR to pass the pointer. */ + break; + + /* Floating point values are returned in fpr 0. */ + case FFI_TYPE_FLOAT: + cif->flags = FFI390_RET_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + cif->flags = FFI390_RET_DOUBLE; + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + cif->flags = FFI390_RET_STRUCT; + n_gpr++; + break; +#endif + /* Integer values are returned in gpr 2 (and gpr 3 + for 64-bit values on 31-bit machines). */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI390_RET_INT64; + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* These are to be extended to word size. */ +#ifdef __s390x__ + cif->flags = FFI390_RET_INT64; +#else + cif->flags = FFI390_RET_INT32; +#endif + break; + + default: + FFI_ASSERT (0); + break; + } + + /* Now for the arguments. */ + + for (ptr = cif->arg_types, i = cif->nargs; + i > 0; + i--, ptr++) + { + int type = (*ptr)->type; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + + /* Check how a structure type is passed. */ + if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) + { + if (type == FFI_TYPE_COMPLEX) + type = FFI_TYPE_POINTER; + else + type = ffi_check_struct_type (*ptr); + + /* If we pass the struct via pointer, we must reserve space + to copy its data for proper call-by-value semantics. */ + if (type == FFI_TYPE_POINTER) + struct_size += ROUND_SIZE ((*ptr)->size); + } + + /* Now handle all primitive int/float data types. */ + switch (type) + { + /* The first MAX_FPRARGS floating point arguments + go in FPRs, the rest overflow to the stack. */ + + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + n_fpr++; + else + n_ov += sizeof (double) / sizeof (long); + break; + + case FFI_TYPE_FLOAT: + if (n_fpr < MAX_FPRARGS) + n_fpr++; + else + n_ov++; + break; + + /* On 31-bit machines, 64-bit integers are passed in GPR pairs, + if one is still available, or else on the stack. If only one + register is free, skip the register (it won't be used for any + subsequent argument either). */ + +#ifndef __s390x__ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + n_gpr += 2; + else + n_ov += 2; + break; +#endif + + /* Everything else is passed in GPRs (until MAX_GPRARGS + have been used) or overflows to the stack. */ + + default: + if (n_gpr < MAX_GPRARGS) + n_gpr++; + else + n_ov++; + break; + } + } + + /* Total stack space as required for overflow arguments + and temporary structure copies. */ + + cif->bytes = ROUND_SIZE (n_ov * sizeof (long)) + struct_size; + + return FFI_OK; +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_call. */ +/* */ +/* Function - Call the FFI routine. */ +/* */ +/*====================================================================*/ + +static void +ffi_call_int(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue, + void *closure) +{ + int ret_type = cif->flags; + size_t rsize = 0, bytes = cif->bytes; + unsigned char *stack, *p_struct; + struct call_frame *frame; + unsigned long *p_ov, *p_gpr; + unsigned long long *p_fpr; + int n_fpr, n_gpr, n_ov, i, n; + ffi_type **arg_types; + + FFI_ASSERT (cif->abi == FFI_SYSV); + + /* If we don't have a return value, we need to fake one. */ + if (rvalue == NULL) + { + if (ret_type & FFI390_RET_IN_MEM) + rsize = cif->rtype->size; + else + ret_type = FFI390_RET_VOID; + } + + /* The stack space will be filled with those areas: + + dummy structure return (highest addresses) + FPR argument register save area + GPR argument register save area + stack frame for ffi_call_SYSV + temporary struct copies + overflow argument area (lowest addresses) + + We set up the following pointers: + + p_fpr: bottom of the FPR area (growing upwards) + p_gpr: bottom of the GPR area (growing upwards) + p_ov: bottom of the overflow area (growing upwards) + p_struct: top of the struct copy area (growing downwards) + + All areas are kept aligned to twice the word size. + + Note that we're going to create the stack frame for both + ffi_call_SYSV _and_ the target function right here. This + works because we don't make any function calls with more + than 5 arguments (indeed only memcpy and ffi_call_SYSV), + and thus we don't have any stacked outgoing parameters. */ + + stack = alloca (bytes + sizeof(struct call_frame) + rsize); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + /* Link the new frame back to the one from this function. */ + frame->back_chain = __builtin_frame_address (0); + + /* Fill in all of the argument stuff. */ + p_ov = (unsigned long *)stack; + p_struct = (unsigned char *)frame; + p_gpr = frame->gpr_args; + p_fpr = frame->fpr_args; + n_fpr = n_gpr = n_ov = 0; + + /* If we returning a structure then we set the first parameter register + to the address of where we are returning this structure. */ + if (cif->flags & FFI390_RET_IN_MEM) + p_gpr[n_gpr++] = (uintptr_t) rvalue; + + /* Now for the arguments. */ + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = arg_types[i]; + void *arg = avalue[i]; + int type = ty->type; + ffi_arg val; + + restart: + switch (type) + { + case FFI_TYPE_SINT8: + val = *(SINT8 *)arg; + goto do_int; + case FFI_TYPE_UINT8: + val = *(UINT8 *)arg; + goto do_int; + case FFI_TYPE_SINT16: + val = *(SINT16 *)arg; + goto do_int; + case FFI_TYPE_UINT16: + val = *(UINT16 *)arg; + goto do_int; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + val = *(SINT32 *)arg; + goto do_int; + case FFI_TYPE_UINT32: + val = *(UINT32 *)arg; + goto do_int; + case FFI_TYPE_POINTER: + val = *(uintptr_t *)arg; + do_int: + *(n_gpr < MAX_GPRARGS ? p_gpr + n_gpr++ : p_ov + n_ov++) = val; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + val = *(UINT64 *)arg; + goto do_int; +#else + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + p_gpr[n_gpr++] = ((UINT32 *) arg)[0], + p_gpr[n_gpr++] = ((UINT32 *) arg)[1]; + else + p_ov[n_ov++] = ((UINT32 *) arg)[0], + p_ov[n_ov++] = ((UINT32 *) arg)[1]; +#endif + break; + + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + p_fpr[n_fpr++] = *(UINT64 *) arg; + else + { +#ifdef __s390x__ + p_ov[n_ov++] = *(UINT64 *) arg; +#else + p_ov[n_ov++] = ((UINT32 *) arg)[0], + p_ov[n_ov++] = ((UINT32 *) arg)[1]; +#endif + } + break; + + case FFI_TYPE_FLOAT: + val = *(UINT32 *)arg; + if (n_fpr < MAX_FPRARGS) + p_fpr[n_fpr++] = (UINT64)val << 32; + else + p_ov[n_ov++] = val; + break; + + case FFI_TYPE_STRUCT: + /* Check how a structure type is passed. */ + type = ffi_check_struct_type (ty); + /* Some structures are passed via a type they contain. */ + if (type != FFI_TYPE_POINTER) + goto restart; + /* ... otherwise, passed by reference. fallthru. */ + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + /* 16-byte long double is passed via reference. */ +#endif + case FFI_TYPE_COMPLEX: + /* Complex types are passed via reference. */ + p_struct -= ROUND_SIZE (ty->size); + memcpy (p_struct, arg, ty->size); + val = (uintptr_t)p_struct; + goto do_int; + + default: + FFI_ASSERT (0); + break; + } + } + + ffi_call_SYSV (frame, ret_type & FFI360_RET_MASK, rvalue, fn, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_closure_helper_SYSV. */ +/* */ +/* Function - Call a FFI closure target function. */ +/* */ +/*====================================================================*/ + +void FFI_HIDDEN +ffi_closure_helper_SYSV (ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + unsigned long *p_gpr, + unsigned long long *p_fpr, + unsigned long *p_ov) +{ + unsigned long long ret_buffer; + + void *rvalue = &ret_buffer; + void **avalue; + void **p_arg; + + int n_gpr = 0; + int n_fpr = 0; + int n_ov = 0; + + ffi_type **ptr; + int i; + + /* Allocate buffer for argument list pointers. */ + p_arg = avalue = alloca (cif->nargs * sizeof (void *)); + + /* If we returning a structure, pass the structure address + directly to the target function. Otherwise, have the target + function store the return value to the GPR save area. */ + if (cif->flags & FFI390_RET_IN_MEM) + rvalue = (void *) p_gpr[n_gpr++]; + + /* Now for the arguments. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, p_arg++, ptr++) + { + int deref_struct_pointer = 0; + int type = (*ptr)->type; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + + /* Check how a structure type is passed. */ + if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) + { + if (type == FFI_TYPE_COMPLEX) + type = FFI_TYPE_POINTER; + else + type = ffi_check_struct_type (*ptr); + + /* If we pass the struct via pointer, remember to + retrieve the pointer later. */ + if (type == FFI_TYPE_POINTER) + deref_struct_pointer = 1; + } + + /* Pointers are passed like UINTs of the same size. */ + if (type == FFI_TYPE_POINTER) + { +#ifdef __s390x__ + type = FFI_TYPE_UINT64; +#else + type = FFI_TYPE_UINT32; +#endif + } + + /* Now handle all primitive int/float data types. */ + switch (type) + { + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + *p_arg = &p_fpr[n_fpr++]; + else + *p_arg = &p_ov[n_ov], + n_ov += sizeof (double) / sizeof (long); + break; + + case FFI_TYPE_FLOAT: + if (n_fpr < MAX_FPRARGS) + *p_arg = &p_fpr[n_fpr++]; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + if (n_gpr < MAX_GPRARGS) + *p_arg = &p_gpr[n_gpr++]; + else + *p_arg = &p_ov[n_ov++]; +#else + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + *p_arg = &p_gpr[n_gpr], n_gpr += 2; + else + *p_arg = &p_ov[n_ov], n_ov += 2; +#endif + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 4; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 2; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 2; + break; + + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 1; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 1; + break; + + default: + FFI_ASSERT (0); + break; + } + + /* If this is a struct passed via pointer, we need to + actually retrieve that pointer. */ + if (deref_struct_pointer) + *p_arg = *(void **)*p_arg; + } + + + /* Call the target function. */ + (fun) (cif, rvalue, avalue, user_data); + + /* Convert the return value. */ + switch (cif->rtype->type) + { + /* Void is easy, and so is struct. */ + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: +#endif + break; + + /* Floating point values are returned in fpr 0. */ + case FFI_TYPE_FLOAT: + p_fpr[0] = (long long) *(unsigned int *) rvalue << 32; + break; + + case FFI_TYPE_DOUBLE: + p_fpr[0] = *(unsigned long long *) rvalue; + break; + + /* Integer values are returned in gpr 2 (and gpr 3 + for 64-bit values on 31-bit machines). */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + p_gpr[0] = *(unsigned long *) rvalue; +#else + p_gpr[0] = ((unsigned long *) rvalue)[0], + p_gpr[1] = ((unsigned long *) rvalue)[1]; +#endif + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT8: + p_gpr[0] = *(unsigned long *) rvalue; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT8: + p_gpr[0] = *(signed long *) rvalue; + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_prep_closure_loc. */ +/* */ +/* Function - Prepare a FFI closure. */ +/* */ +/*====================================================================*/ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ + static unsigned short const template[] = { + 0x0d10, /* basr %r1,0 */ +#ifndef __s390x__ + 0x9801, 0x1006, /* lm %r0,%r1,6(%r1) */ +#else + 0xeb01, 0x100e, 0x0004, /* lmg %r0,%r1,14(%r1) */ +#endif + 0x07f1 /* br %r1 */ + }; + + unsigned long *tramp = (unsigned long *)&closure->tramp; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + memcpy (tramp, template, sizeof(template)); + tramp[2] = (unsigned long)codeloc; + tramp[3] = (unsigned long)&ffi_closure_SYSV; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +/*======================== End of Routine ============================*/ + +/* Build a Go language closure. */ + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_SYSV; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffitarget.h new file mode 100644 index 0000000000..d8a4ee4bf1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/ffitarget.h @@ -0,0 +1,70 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for S390. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#if defined (__s390x__) +#ifndef S390X +#define S390X +#endif +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#define FFI_TARGET_HAS_COMPLEX_TYPE + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#ifdef S390X +#define FFI_TRAMPOLINE_SIZE 32 +#else +#define FFI_TRAMPOLINE_SIZE 16 +#endif +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/internal.h new file mode 100644 index 0000000000..b8755786f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/internal.h @@ -0,0 +1,11 @@ +/* If these values change, sysv.S must be adapted! */ +#define FFI390_RET_DOUBLE 0 +#define FFI390_RET_FLOAT 1 +#define FFI390_RET_INT64 2 +#define FFI390_RET_INT32 3 +#define FFI390_RET_VOID 4 + +#define FFI360_RET_MASK 7 +#define FFI390_RET_IN_MEM 8 + +#define FFI390_RET_STRUCT (FFI390_RET_VOID | FFI390_RET_IN_MEM) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/sysv.S new file mode 100644 index 0000000000..c4b5006aed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/s390/sysv.S @@ -0,0 +1,325 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2000 Software AG + Copyright (c) 2008 Red Hat, Inc. + + S390 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .text + +#ifndef __s390x__ + + # r2: frame + # r3: ret_type + # r4: ret_addr + # r5: fun + # r6: closure + + # This assumes we are using gas. + .balign 8 + .globl ffi_call_SYSV + FFI_HIDDEN(ffi_call_SYSV) + .type ffi_call_SYSV,%function +ffi_call_SYSV: + .cfi_startproc + st %r6,44(%r2) # Save registers + stm %r12,%r14,48(%r2) + lr %r13,%r2 # Install frame pointer + .cfi_rel_offset r6, 44 + .cfi_rel_offset r12, 48 + .cfi_rel_offset r13, 52 + .cfi_rel_offset r14, 56 + .cfi_def_cfa_register r13 + st %r2,0(%r15) # Set up back chain + sla %r3,3 # ret_type *= 8 + lr %r12,%r4 # Save ret_addr + lr %r1,%r5 # Save fun + lr %r0,%r6 # Install static chain + + # Set return address, so that there is only one indirect jump. +#ifdef HAVE_AS_S390_ZARCH + larl %r14,.Ltable + ar %r14,%r3 +#else + basr %r14,0 +0: la %r14,.Ltable-0b(%r14,%r3) +#endif + + lm %r2,%r6,8(%r13) # Load arguments + ld %f0,64(%r13) + ld %f2,72(%r13) + br %r1 # ... and call function + + .balign 8 +.Ltable: +# FFI390_RET_DOUBLE + std %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_FLOAT + ste %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_INT64 + st %r3,4(%r12) + nop + # fallthru + + .balign 8 +# FFI390_RET_INT32 + st %r2,0(%r12) + nop + # fallthru + + .balign 8 +# FFI390_RET_VOID +.Ldone: + l %r14,56(%r13) + l %r12,48(%r13) + l %r6,44(%r13) + l %r13,52(%r13) + .cfi_restore 14 + .cfi_restore 13 + .cfi_restore 12 + .cfi_restore 6 + .cfi_def_cfa r15, 96 + br %r14 + .cfi_endproc + .size ffi_call_SYSV,.-ffi_call_SYSV + + + .balign 8 + .globl ffi_go_closure_SYSV + FFI_HIDDEN(ffi_go_closure_SYSV) + .type ffi_go_closure_SYSV,%function +ffi_go_closure_SYSV: + .cfi_startproc + stm %r2,%r6,8(%r15) # Save arguments + lr %r4,%r0 # Load closure -> user_data + l %r2,4(%r4) # ->cif + l %r3,8(%r4) # ->fun + j .Ldoclosure + .cfi_endproc + + .balign 8 + .globl ffi_closure_SYSV + FFI_HIDDEN(ffi_closure_SYSV) + .type ffi_closure_SYSV,%function +ffi_closure_SYSV: + .cfi_startproc + stm %r2,%r6,8(%r15) # Save arguments + lr %r4,%r0 # Closure + l %r2,16(%r4) # ->cif + l %r3,20(%r4) # ->fun + l %r4,24(%r4) # ->user_data +.Ldoclosure: + stm %r12,%r15,48(%r15) # Save registers + lr %r12,%r15 + .cfi_def_cfa_register r12 + .cfi_rel_offset r6, 24 + .cfi_rel_offset r12, 48 + .cfi_rel_offset r13, 52 + .cfi_rel_offset r14, 56 + .cfi_rel_offset r15, 60 +#ifndef HAVE_AS_S390_ZARCH + basr %r13,0 # Set up base register +.Lcbase: + l %r1,.Lchelper-.Lcbase(%r13) # Get helper function +#endif + ahi %r15,-96-8 # Set up stack frame + st %r12,0(%r15) # Set up back chain + + std %f0,64(%r12) # Save fp arguments + std %f2,72(%r12) + + la %r5,96(%r12) # Overflow + st %r5,96(%r15) + la %r6,64(%r12) # FPRs + la %r5,8(%r12) # GPRs +#ifdef HAVE_AS_S390_ZARCH + brasl %r14,ffi_closure_helper_SYSV +#else + bas %r14,0(%r1,%r13) # Call helper +#endif + + lr %r15,%r12 + .cfi_def_cfa_register r15 + lm %r12,%r14,48(%r12) # Restore saved registers + l %r6,24(%r15) + ld %f0,64(%r15) # Load return registers + lm %r2,%r3,8(%r15) + br %r14 + .cfi_endproc + +#ifndef HAVE_AS_S390_ZARCH + .align 4 +.Lchelper: + .long ffi_closure_helper_SYSV-.Lcbase +#endif + + .size ffi_closure_SYSV,.-ffi_closure_SYSV + +#else + + # r2: frame + # r3: ret_type + # r4: ret_addr + # r5: fun + # r6: closure + + # This assumes we are using gas. + .balign 8 + .globl ffi_call_SYSV + FFI_HIDDEN(ffi_call_SYSV) + .type ffi_call_SYSV,%function +ffi_call_SYSV: + .cfi_startproc + stg %r6,88(%r2) # Save registers + stmg %r12,%r14,96(%r2) + lgr %r13,%r2 # Install frame pointer + .cfi_rel_offset r6, 88 + .cfi_rel_offset r12, 96 + .cfi_rel_offset r13, 104 + .cfi_rel_offset r14, 112 + .cfi_def_cfa_register r13 + stg %r2,0(%r15) # Set up back chain + larl %r14,.Ltable # Set up return address + slag %r3,%r3,3 # ret_type *= 8 + lgr %r12,%r4 # Save ret_addr + lgr %r1,%r5 # Save fun + lgr %r0,%r6 # Install static chain + agr %r14,%r3 + lmg %r2,%r6,16(%r13) # Load arguments + ld %f0,128(%r13) + ld %f2,136(%r13) + ld %f4,144(%r13) + ld %f6,152(%r13) + br %r1 # ... and call function + + .balign 8 +.Ltable: +# FFI390_RET_DOUBLE + std %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_DOUBLE + ste %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_INT64 + stg %r2,0(%r12) + + .balign 8 +# FFI390_RET_INT32 + # Never used, as we always store type ffi_arg. + # But the stg above is 6 bytes and we cannot + # jump around this case, so fall through. + nop + nop + + .balign 8 +# FFI390_RET_VOID +.Ldone: + lg %r14,112(%r13) + lg %r12,96(%r13) + lg %r6,88(%r13) + lg %r13,104(%r13) + .cfi_restore r14 + .cfi_restore r13 + .cfi_restore r12 + .cfi_restore r6 + .cfi_def_cfa r15, 160 + br %r14 + .cfi_endproc + .size ffi_call_SYSV,.-ffi_call_SYSV + + + .balign 8 + .globl ffi_go_closure_SYSV + FFI_HIDDEN(ffi_go_closure_SYSV) + .type ffi_go_closure_SYSV,%function +ffi_go_closure_SYSV: + .cfi_startproc + stmg %r2,%r6,16(%r15) # Save arguments + lgr %r4,%r0 # Load closure -> user_data + lg %r2,8(%r4) # ->cif + lg %r3,16(%r4) # ->fun + j .Ldoclosure + .cfi_endproc + .size ffi_go_closure_SYSV,.-ffi_go_closure_SYSV + + + .balign 8 + .globl ffi_closure_SYSV + FFI_HIDDEN(ffi_closure_SYSV) + .type ffi_closure_SYSV,%function +ffi_closure_SYSV: + .cfi_startproc + stmg %r2,%r6,16(%r15) # Save arguments + lgr %r4,%r0 # Load closure + lg %r2,32(%r4) # ->cif + lg %r3,40(%r4) # ->fun + lg %r4,48(%r4) # ->user_data +.Ldoclosure: + stmg %r13,%r15,104(%r15) # Save registers + lgr %r13,%r15 + .cfi_def_cfa_register r13 + .cfi_rel_offset r6, 48 + .cfi_rel_offset r13, 104 + .cfi_rel_offset r14, 112 + .cfi_rel_offset r15, 120 + aghi %r15,-160-16 # Set up stack frame + stg %r13,0(%r15) # Set up back chain + + std %f0,128(%r13) # Save fp arguments + std %f2,136(%r13) + std %f4,144(%r13) + std %f6,152(%r13) + la %r5,160(%r13) # Overflow + stg %r5,160(%r15) + la %r6,128(%r13) # FPRs + la %r5,16(%r13) # GPRs + brasl %r14,ffi_closure_helper_SYSV # Call helper + + lgr %r15,%r13 + .cfi_def_cfa_register r15 + lmg %r13,%r14,104(%r13) # Restore saved registers + lg %r6,48(%r15) + ld %f0,128(%r15) # Load return registers + lg %r2,16(%r15) + br %r14 + .cfi_endproc + .size ffi_closure_SYSV,.-ffi_closure_SYSV +#endif /* !s390x */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffi.c new file mode 100644 index 0000000000..9ec86bfb20 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffi.c @@ -0,0 +1,717 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima + Copyright (c) 2008 Red Hat, Inc. + + SuperH Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define NGREGARG 4 +#if defined(__SH4__) +#define NFREGARG 8 +#endif + +#if defined(__HITACHI__) +#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 +#else +#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 +#endif + +/* If the structure has essentially an unique element, return its type. */ +static int +simple_type (ffi_type *arg) +{ + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + else if (arg->elements[1]) + return FFI_TYPE_STRUCT; + + return simple_type (arg->elements[0]); +} + +static int +return_type (ffi_type *arg) +{ + unsigned short type; + + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + + type = simple_type (arg->elements[0]); + if (! arg->elements[1]) + { + switch (type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + return FFI_TYPE_INT; + + default: + return type; + } + } + + /* gcc uses r0/r1 pair for some kind of structures. */ + if (arg->size <= 2 * sizeof (int)) + { + int i = 0; + ffi_type *e; + + while ((e = arg->elements[i++])) + { + type = simple_type (e); + switch (type) + { + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + return FFI_TYPE_UINT64; + + default: + break; + } + } + } + + return FFI_TYPE_STRUCT; +} + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register int tmp; + register unsigned int avn; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + int greg, ireg; +#if defined(__SH4__) + int freg = 0; +#endif + + tmp = 0; + argp = stack; + + if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += 4; + ireg = STRUCT_VALUE_ADDRESS_WITH_ARG ? 1 : 0; + } + else + ireg = 0; + + /* Set arguments for registers. */ + greg = ireg; + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ >= NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + argp += z; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ >= NFREGARG) + continue; + } + else +#endif + { + if (greg++ >= NGREGARG) + continue; + } + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + argp += z; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + continue; + freg = (freg + 1) & ~1; + freg += 2; + memcpy (argp, *p_argv, z); + argp += z; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); +#if defined(__SH4__) + if (greg + n - 1 >= NGREGARG) + continue; +#else + if (greg >= NGREGARG) + continue; +#endif + greg += n; + memcpy (argp, *p_argv, z); + argp += n * sizeof (int); + } + } + + /* Set arguments on stack. */ + greg = ireg; +#if defined(__SH4__) + freg = 0; +#endif + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ < NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + argp += z; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ < NFREGARG) + continue; + } + else +#endif + { + if (greg++ < NGREGARG) + continue; + } + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + argp += z; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 < NFREGARG) + { + freg = (freg + 1) & ~1; + freg += 2; + continue; + } + memcpy (argp, *p_argv, z); + argp += z; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 < NGREGARG) + { + greg += n; + continue; + } +#if (! defined(__SH4__)) + else if (greg < NGREGARG) + { + greg = NGREGARG; + continue; + } +#endif + memcpy (argp, *p_argv, z); + argp += n * sizeof (int); + } + } + + return; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + int i, j; + int size, type; + int n, m; + int greg; +#if defined(__SH4__) + int freg = 0; +#endif + + cif->flags = 0; + + greg = ((return_type (cif->rtype) == FFI_TYPE_STRUCT) && + STRUCT_VALUE_ADDRESS_WITH_ARG) ? 1 : 0; + +#if defined(__SH4__) + for (i = j = 0; i < cif->nargs && j < 12; i++) + { + type = (cif->arg_types)[i]->type; + switch (type) + { + case FFI_TYPE_FLOAT: + if (freg >= NFREGARG) + continue; + freg++; + cif->flags += ((cif->arg_types)[i]->type) << (2 * j); + j++; + break; + + case FFI_TYPE_DOUBLE: + if ((freg + 1) >= NFREGARG) + continue; + freg = (freg + 1) & ~1; + freg += 2; + cif->flags += ((cif->arg_types)[i]->type) << (2 * j); + j++; + break; + + default: + size = (cif->arg_types)[i]->size; + n = (size + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 >= NGREGARG) + continue; + greg += n; + for (m = 0; m < n; m++) + cif->flags += FFI_TYPE_INT << (2 * j++); + break; + } + } +#else + for (i = j = 0; i < cif->nargs && j < 4; i++) + { + size = (cif->arg_types)[i]->size; + n = (size + sizeof (int) - 1) / sizeof (int); + if (greg >= NGREGARG) + continue; + else if (greg + n - 1 >= NGREGARG) + n = NGREGARG - greg; + greg += n; + for (m = 0; m < n; m++) + cif->flags += FFI_TYPE_INT << (2 * j++); + } +#endif + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + cif->flags += (unsigned) (return_type (cif->rtype)) << 24; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags += (unsigned) cif->rtype->type << 24; + break; + + default: + cif->flags += FFI_TYPE_INT << 24; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + UINT64 trvalue; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if (cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + ecif.rvalue = &trvalue; + else if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, + fn); + break; + default: + FFI_ASSERT(0); + break; + } + + if (rvalue + && cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + memcpy (rvalue, &trvalue, cif->rtype->size); +} + +extern void ffi_closure_SYSV (void); +#if defined(__SH4__) +extern void __ic_invalidate (void *line); +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + unsigned int insn; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + /* Set T bit if the function returns a struct pointed with R2. */ + insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT + ? 0x0018 /* sett */ + : 0x0008 /* clrt */); + +#ifdef __LITTLE_ENDIAN__ + tramp[0] = 0xd301d102; + tramp[1] = 0x0000412b | (insn << 16); +#else + tramp[0] = 0xd102d301; + tramp[1] = 0x412b0000 | insn; +#endif + *(void **) &tramp[2] = (void *)codeloc; /* ctx */ + *(void **) &tramp[3] = (void *)ffi_closure_SYSV; /* funaddr */ + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + +#if defined(__SH4__) + /* Flush the icache. */ + __ic_invalidate(codeloc); +#endif + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + * entry, r3 holds the address of the closure. + * After storing the registers that could possibly contain + * parameters to be passed into the stack frame and setting + * up space for a return value, ffi_closure_SYSV invokes the + * following helper function to do most of the work. + */ + +#ifdef __LITTLE_ENDIAN__ +#define OFS_INT8 0 +#define OFS_INT16 0 +#else +#define OFS_INT8 3 +#define OFS_INT16 2 +#endif + +int +ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, + unsigned long *pgr, unsigned long *pfr, + unsigned long *pst) +{ + void **avalue; + ffi_type **p_arg; + int i, avn; + int ireg, greg = 0; +#if defined(__SH4__) + int freg = 0; +#endif + ffi_cif *cif; + + cif = closure->cif; + avalue = alloca(cif->nargs * sizeof(void *)); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. */ + if (cif->rtype->type == FFI_TYPE_STRUCT && STRUCT_VALUE_ADDRESS_WITH_ARG) + { + rvalue = (void *) *pgr++; + ireg = 1; + } + else + ireg = 0; + + cif = closure->cif; + greg = ireg; + avn = cif->nargs; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ >= NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = (((char *)pgr) + OFS_INT8); + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = (((char *)pgr) + OFS_INT16); + break; + + case FFI_TYPE_STRUCT: + avalue[i] = pgr; + break; + + default: + FFI_ASSERT(0); + } + pgr++; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ >= NFREGARG) + continue; + avalue[i] = pfr; + pfr++; + } + else +#endif + { + if (greg++ >= NGREGARG) + continue; + avalue[i] = pgr; + pgr++; + } + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + continue; + if (freg & 1) + pfr++; + freg = (freg + 1) & ~1; + freg += 2; + avalue[i] = pfr; + pfr += 2; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); +#if defined(__SH4__) + if (greg + n - 1 >= NGREGARG) + continue; +#else + if (greg >= NGREGARG) + continue; +#endif + greg += n; + avalue[i] = pgr; + pgr += n; + } + } + + greg = ireg; +#if defined(__SH4__) + freg = 0; +#endif + + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ < NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = (((char *)pst) + OFS_INT8); + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = (((char *)pst) + OFS_INT16); + break; + + case FFI_TYPE_STRUCT: + avalue[i] = pst; + break; + + default: + FFI_ASSERT(0); + } + pst++; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ < NFREGARG) + continue; + } + else +#endif + { + if (greg++ < NGREGARG) + continue; + } + avalue[i] = pst; + pst++; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 < NFREGARG) + { + freg = (freg + 1) & ~1; + freg += 2; + continue; + } + avalue[i] = pst; + pst += 2; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 < NGREGARG) + { + greg += n; + continue; + } +#if (! defined(__SH4__)) + else if (greg < NGREGARG) + { + greg += n; + pst += greg - NGREGARG; + continue; + } +#endif + avalue[i] = pst; + pst += n; + } + } + + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. */ + return return_type (cif->rtype); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffitarget.h new file mode 100644 index 0000000000..a36bf42070 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/ffitarget.h @@ -0,0 +1,54 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SuperH. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/sysv.S new file mode 100644 index 0000000000..5be7516d65 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh/sysv.S @@ -0,0 +1,850 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima + + SuperH Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): +#endif + +#if defined(__HITACHI__) +#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 +#else +#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 +#endif + +.text + + # r4: ffi_prep_args + # r5: &ecif + # r6: bytes + # r7: flags + # sp+0: rvalue + # sp+4: fn + + # This assumes we are using gas. +ENTRY(ffi_call_SYSV) + # Save registers +.LFB1: + mov.l r8,@-r15 +.LCFI0: + mov.l r9,@-r15 +.LCFI1: + mov.l r10,@-r15 +.LCFI2: + mov.l r12,@-r15 +.LCFI3: + mov.l r14,@-r15 +.LCFI4: + sts.l pr,@-r15 +.LCFI5: + mov r15,r14 +.LCFI6: +#if defined(__SH4__) + mov r6,r8 + mov r7,r9 + + sub r6,r15 + add #-16,r15 + mov #~7,r0 + and r0,r15 + + mov r4,r0 + jsr @r0 + mov r15,r4 + + mov r9,r1 + shlr8 r9 + shlr8 r9 + shlr8 r9 + + mov #FFI_TYPE_STRUCT,r2 + cmp/eq r2,r9 + bf 1f +#if STRUCT_VALUE_ADDRESS_WITH_ARG + mov.l @r15+,r4 + bra 2f + mov #5,r2 +#else + mov.l @r15+,r10 +#endif +1: + mov #4,r2 +2: + mov #4,r3 + +L_pass: + cmp/pl r8 + bf L_call_it + + mov r1,r0 + and #3,r0 + +L_pass_d: + cmp/eq #FFI_TYPE_DOUBLE,r0 + bf L_pass_f + + mov r3,r0 + and #1,r0 + tst r0,r0 + bt 1f + add #1,r3 +1: + mov #12,r0 + cmp/hs r0,r3 + bt/s 3f + shlr2 r1 + bsr L_pop_d + nop +3: + add #2,r3 + bra L_pass + add #-8,r8 + +L_pop_d: + mov r3,r0 + add r0,r0 + add r3,r0 + add #-12,r0 + braf r0 + nop +#ifdef __LITTLE_ENDIAN__ + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr4 + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr6 + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr8 + fmov.s @r15+,fr11 + rts + fmov.s @r15+,fr10 +#else + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr5 + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr7 + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr9 + fmov.s @r15+,fr10 + rts + fmov.s @r15+,fr11 +#endif + +L_pass_f: + cmp/eq #FFI_TYPE_FLOAT,r0 + bf L_pass_i + + mov #12,r0 + cmp/hs r0,r3 + bt/s 2f + shlr2 r1 + bsr L_pop_f + nop +2: + add #1,r3 + bra L_pass + add #-4,r8 + +L_pop_f: + mov r3,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop +#ifdef __LITTLE_ENDIAN__ + rts + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr11 + rts + fmov.s @r15+,fr10 +#else + rts + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr10 + rts + fmov.s @r15+,fr11 +#endif + +L_pass_i: + cmp/eq #FFI_TYPE_INT,r0 + bf L_call_it + + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r1 + bsr L_pop_i + nop +2: + add #1,r2 + bra L_pass + add #-4,r8 + +L_pop_i: + mov r2,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop + rts + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + +L_call_it: + # call function +#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) + mov r10, r2 +#endif + mov.l @(28,r14),r1 + jsr @r1 + nop + +L_ret_d: + mov #FFI_TYPE_DOUBLE,r2 + cmp/eq r2,r9 + bf L_ret_ll + + mov.l @(24,r14),r1 +#ifdef __LITTLE_ENDIAN__ + fmov.s fr1,@r1 + add #4,r1 + bra L_epilogue + fmov.s fr0,@r1 +#else + fmov.s fr0,@r1 + add #4,r1 + bra L_epilogue + fmov.s fr1,@r1 +#endif + +L_ret_ll: + mov #FFI_TYPE_SINT64,r2 + cmp/eq r2,r9 + bt/s 1f + mov #FFI_TYPE_UINT64,r2 + cmp/eq r2,r9 + bf L_ret_f + +1: + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_f: + mov #FFI_TYPE_FLOAT,r2 + cmp/eq r2,r9 + bf L_ret_i + + mov.l @(24,r14),r1 + bra L_epilogue + fmov.s fr0,@r1 + +L_ret_i: + mov #FFI_TYPE_INT,r2 + cmp/eq r2,r9 + bf L_epilogue + + mov.l @(24,r14),r1 + bra L_epilogue + mov.l r0,@r1 + +L_epilogue: + # Remove the space we pushed for the args + mov r14,r15 + + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r12 + mov.l @r15+,r10 + mov.l @r15+,r9 + rts + mov.l @r15+,r8 +#else + mov r6,r8 + mov r7,r9 + + sub r6,r15 + add #-16,r15 + mov #~7,r0 + and r0,r15 + + mov r4,r0 + jsr @r0 + mov r15,r4 + + mov r9,r3 + shlr8 r9 + shlr8 r9 + shlr8 r9 + + mov #FFI_TYPE_STRUCT,r2 + cmp/eq r2,r9 + bf 1f +#if STRUCT_VALUE_ADDRESS_WITH_ARG + mov.l @r15+,r4 + bra 2f + mov #5,r2 +#else + mov.l @r15+,r10 +#endif +1: + mov #4,r2 +2: + +L_pass: + cmp/pl r8 + bf L_call_it + + mov r3,r0 + and #3,r0 + +L_pass_d: + cmp/eq #FFI_TYPE_DOUBLE,r0 + bf L_pass_i + + mov r15,r0 + and #7,r0 + tst r0,r0 + bt 1f + add #4,r15 +1: + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r3 + bsr L_pop_d + nop +2: + add #2,r2 + bra L_pass + add #-8,r8 + +L_pop_d: + mov r2,r0 + add r0,r0 + add r2,r0 + add #-12,r0 + add r0,r0 + braf r0 + nop + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + rts + mov.l @r15+,r7 + +L_pass_i: + cmp/eq #FFI_TYPE_INT,r0 + bf L_call_it + + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r3 + bsr L_pop_i + nop +2: + add #1,r2 + bra L_pass + add #-4,r8 + +L_pop_i: + mov r2,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop + rts + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + +L_call_it: + # call function +#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) + mov r10, r2 +#endif + mov.l @(28,r14),r1 + jsr @r1 + nop + +L_ret_d: + mov #FFI_TYPE_DOUBLE,r2 + cmp/eq r2,r9 + bf L_ret_ll + + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_ll: + mov #FFI_TYPE_SINT64,r2 + cmp/eq r2,r9 + bt/s 1f + mov #FFI_TYPE_UINT64,r2 + cmp/eq r2,r9 + bf L_ret_i + +1: + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_i: + mov #FFI_TYPE_FLOAT,r2 + cmp/eq r2,r9 + bt 1f + mov #FFI_TYPE_INT,r2 + cmp/eq r2,r9 + bf L_epilogue +1: + mov.l @(24,r14),r1 + bra L_epilogue + mov.l r0,@r1 + +L_epilogue: + # Remove the space we pushed for the args + mov r14,r15 + + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r12 + mov.l @r15+,r10 + mov.l @r15+,r9 + rts + mov.l @r15+,r8 +#endif +.LFE1: +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + +.globl ffi_closure_helper_SYSV + +ENTRY(ffi_closure_SYSV) +.LFB2: + mov.l r7,@-r15 +.LCFI7: + mov.l r6,@-r15 +.LCFI8: + mov.l r5,@-r15 +.LCFI9: + mov.l r4,@-r15 +.LCFIA: + mov.l r14,@-r15 +.LCFIB: + sts.l pr,@-r15 + + /* Stack layout: + xx bytes (on stack parameters) + 16 bytes (register parameters) + 4 bytes (saved frame pointer) + 4 bytes (saved return address) + 32 bytes (floating register parameters, SH-4 only) + 8 bytes (result) + 4 bytes (pad) + 4 bytes (5th arg) + <- new stack pointer + */ +.LCFIC: +#if defined(__SH4__) + add #-48,r15 +#else + add #-16,r15 +#endif +.LCFID: + mov r15,r14 +.LCFIE: + +#if defined(__SH4__) + mov r14,r1 + add #48,r1 +#ifdef __LITTLE_ENDIAN__ + fmov.s fr10,@-r1 + fmov.s fr11,@-r1 + fmov.s fr8,@-r1 + fmov.s fr9,@-r1 + fmov.s fr6,@-r1 + fmov.s fr7,@-r1 + fmov.s fr4,@-r1 + fmov.s fr5,@-r1 +#else + fmov.s fr11,@-r1 + fmov.s fr10,@-r1 + fmov.s fr9,@-r1 + fmov.s fr8,@-r1 + fmov.s fr7,@-r1 + fmov.s fr6,@-r1 + fmov.s fr5,@-r1 + fmov.s fr4,@-r1 +#endif + mov r1,r7 + mov r14,r6 + add #56,r6 +#else + mov r14,r6 + add #24,r6 +#endif + + bt/s 10f + mov r2, r5 + mov r14,r1 + add #8,r1 + mov r1,r5 +10: + + mov r14,r1 +#if defined(__SH4__) + add #72,r1 +#else + add #40,r1 +#endif + mov.l r1,@r14 + +#ifdef PIC + mov.l L_got,r1 + mova L_got,r0 + add r0,r1 + mov.l L_helper,r0 + add r1,r0 +#else + mov.l L_helper,r0 +#endif + jsr @r0 + mov r3,r4 + + shll r0 + mov r0,r1 + mova L_table,r0 + add r1,r0 + mov.w @r0,r0 + mov r14,r2 + braf r0 + add #8,r2 +0: + .align 2 +#ifdef PIC +L_got: + .long _GLOBAL_OFFSET_TABLE_ +L_helper: + .long ffi_closure_helper_SYSV@GOTOFF +#else +L_helper: + .long ffi_closure_helper_SYSV +#endif +L_table: + .short L_case_v - 0b /* FFI_TYPE_VOID */ + .short L_case_i - 0b /* FFI_TYPE_INT */ +#if defined(__SH4__) + .short L_case_f - 0b /* FFI_TYPE_FLOAT */ + .short L_case_d - 0b /* FFI_TYPE_DOUBLE */ + .short L_case_d - 0b /* FFI_TYPE_LONGDOUBLE */ +#else + .short L_case_i - 0b /* FFI_TYPE_FLOAT */ + .short L_case_ll - 0b /* FFI_TYPE_DOUBLE */ + .short L_case_ll - 0b /* FFI_TYPE_LONGDOUBLE */ +#endif + .short L_case_uq - 0b /* FFI_TYPE_UINT8 */ + .short L_case_q - 0b /* FFI_TYPE_SINT8 */ + .short L_case_uh - 0b /* FFI_TYPE_UINT16 */ + .short L_case_h - 0b /* FFI_TYPE_SINT16 */ + .short L_case_i - 0b /* FFI_TYPE_UINT32 */ + .short L_case_i - 0b /* FFI_TYPE_SINT32 */ + .short L_case_ll - 0b /* FFI_TYPE_UINT64 */ + .short L_case_ll - 0b /* FFI_TYPE_SINT64 */ + .short L_case_v - 0b /* FFI_TYPE_STRUCT */ + .short L_case_i - 0b /* FFI_TYPE_POINTER */ + +#if defined(__SH4__) +L_case_d: +#ifdef __LITTLE_ENDIAN__ + fmov.s @r2+,fr1 + bra L_case_v + fmov.s @r2,fr0 +#else + fmov.s @r2+,fr0 + bra L_case_v + fmov.s @r2,fr1 +#endif + +L_case_f: + bra L_case_v + fmov.s @r2,fr0 +#endif + +L_case_ll: + mov.l @r2+,r0 + bra L_case_v + mov.l @r2,r1 + +L_case_i: + bra L_case_v + mov.l @r2,r0 + +L_case_q: +#ifdef __LITTLE_ENDIAN__ +#else + add #3,r2 +#endif + bra L_case_v + mov.b @r2,r0 + +L_case_uq: +#ifdef __LITTLE_ENDIAN__ +#else + add #3,r2 +#endif + mov.b @r2,r0 + bra L_case_v + extu.b r0,r0 + +L_case_h: +#ifdef __LITTLE_ENDIAN__ +#else + add #2,r2 +#endif + bra L_case_v + mov.w @r2,r0 + +L_case_uh: +#ifdef __LITTLE_ENDIAN__ +#else + add #2,r2 +#endif + mov.w @r2,r0 + extu.w r0,r0 + /* fall through */ + +L_case_v: +#if defined(__SH4__) + add #48,r15 +#else + add #16,r15 +#endif + lds.l @r15+,pr + mov.l @r15+,r14 + rts + add #16,r15 +.LFE2: +.ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif + + .section ".eh_frame","aw",@progbits +__FRAME_BEGIN__: + .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ +.LSCIE1: + .4byte 0x0 /* CIE Identifier Tag */ + .byte 0x1 /* CIE Version */ +#ifdef PIC + .ascii "zR\0" /* CIE Augmentation */ +#else + .byte 0x0 /* CIE Augmentation */ +#endif + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte 0x7c /* sleb128 -4; CIE Data Alignment Factor */ + .byte 0x11 /* CIE RA Column */ +#ifdef PIC + .uleb128 0x1 /* Augmentation size */ + .byte 0x10 /* FDE Encoding (pcrel) */ +#endif + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0xf /* uleb128 0xf */ + .byte 0x0 /* uleb128 0x0 */ + .align 2 +.LECIE1: +.LSFDE1: + .4byte .LEFDE1-.LASFDE1 /* FDE Length */ +.LASFDE1: + .4byte .LASFDE1-__FRAME_BEGIN__ /* FDE CIE offset */ +#ifdef PIC + .4byte .LFB1-. /* FDE initial location */ +#else + .4byte .LFB1 /* FDE initial location */ +#endif + .4byte .LFE1-.LFB1 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI0-.LFB1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI1-.LCFI0 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x8 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI2-.LCFI1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0xc /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI3-.LCFI2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x10 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI4-.LCFI3 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x14 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI5-.LCFI4 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x18 /* uleb128 0x4 */ + .byte 0x91 /* DW_CFA_offset, column 0x11 */ + .byte 0x6 /* uleb128 0x6 */ + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .byte 0x5 /* uleb128 0x5 */ + .byte 0x8c /* DW_CFA_offset, column 0xc */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x8a /* DW_CFA_offset, column 0xa */ + .byte 0x3 /* uleb128 0x3 */ + .byte 0x89 /* DW_CFA_offset, column 0x9 */ + .byte 0x2 /* uleb128 0x2 */ + .byte 0x88 /* DW_CFA_offset, column 0x8 */ + .byte 0x1 /* uleb128 0x1 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI6-.LCFI5 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0xe /* uleb128 0xe */ + .align 2 +.LEFDE1: + +.LSFDE3: + .4byte .LEFDE3-.LASFDE3 /* FDE Length */ +.LASFDE3: + .4byte .LASFDE3-__FRAME_BEGIN__ /* FDE CIE offset */ +#ifdef PIC + .4byte .LFB2-. /* FDE initial location */ +#else + .4byte .LFB2 /* FDE initial location */ +#endif + .4byte .LFE2-.LFB2 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI7-.LFB2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI8-.LCFI7 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x8 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI9-.LCFI8 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0xc /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIA-.LCFI9 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x10 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIB-.LCFIA + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x14 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIC-.LCFIB + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x18 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFID-.LCFIC + .byte 0xe /* DW_CFA_def_cfa_offset */ +#if defined(__SH4__) + .byte 24+48 /* uleb128 24+48 */ +#else + .byte 24+16 /* uleb128 24+16 */ +#endif + .byte 0x91 /* DW_CFA_offset, column 0x11 */ + .byte 0x6 /* uleb128 0x6 */ + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .byte 0x5 /* uleb128 0x5 */ + .byte 0x84 /* DW_CFA_offset, column 0x4 */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x85 /* DW_CFA_offset, column 0x5 */ + .byte 0x3 /* uleb128 0x3 */ + .byte 0x86 /* DW_CFA_offset, column 0x6 */ + .byte 0x2 /* uleb128 0x2 */ + .byte 0x87 /* DW_CFA_offset, column 0x7 */ + .byte 0x1 /* uleb128 0x1 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIE-.LCFID + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0xe /* uleb128 0xe */ + .align 2 +.LEFDE3: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffi.c new file mode 100644 index 0000000000..123b87ace9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffi.c @@ -0,0 +1,469 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima + Copyright (c) 2008 Anthony Green + + SuperH SHmedia Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define NGREGARG 8 +#define NFREGARG 12 + +static int +return_type (ffi_type *arg) +{ + + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + + /* gcc uses r2 if the result can be packed in on register. */ + if (arg->size <= sizeof (UINT8)) + return FFI_TYPE_UINT8; + else if (arg->size <= sizeof (UINT16)) + return FFI_TYPE_UINT16; + else if (arg->size <= sizeof (UINT32)) + return FFI_TYPE_UINT32; + else if (arg->size <= sizeof (UINT64)) + return FFI_TYPE_UINT64; + + return FFI_TYPE_STRUCT; +} + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register unsigned int avn; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += sizeof (UINT64); + } + + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + int align; + + z = (*p_arg)->size; + align = (*p_arg)->alignment; + if (z < sizeof (UINT32)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(SINT64 *) argp = (SINT64) *(SINT8 *)(*p_argv); + break; + + case FFI_TYPE_UINT8: + *(UINT64 *) argp = (UINT64) *(UINT8 *)(*p_argv); + break; + + case FFI_TYPE_SINT16: + *(SINT64 *) argp = (SINT64) *(SINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT16: + *(UINT64 *) argp = (UINT64) *(UINT16 *)(*p_argv); + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT(0); + } + argp += sizeof (UINT64); + } + else if (z == sizeof (UINT32) && align == sizeof (UINT32)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + *(SINT64 *) argp = (SINT64) *(SINT32 *) (*p_argv); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT32: + case FFI_TYPE_STRUCT: + *(UINT64 *) argp = (UINT64) *(UINT32 *) (*p_argv); + break; + + default: + FFI_ASSERT(0); + break; + } + argp += sizeof (UINT64); + } + else if (z == sizeof (UINT64) + && align == sizeof (UINT64) + && ((int) *p_argv & (sizeof (UINT64) - 1)) == 0) + { + *(UINT64 *) argp = *(UINT64 *) (*p_argv); + argp += sizeof (UINT64); + } + else + { + int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); + + memcpy (argp, *p_argv, z); + argp += n * sizeof (UINT64); + } + } + + return; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + int i, j; + int size, type; + int n, m; + int greg; + int freg; + int fpair = -1; + + greg = (return_type (cif->rtype) == FFI_TYPE_STRUCT ? 1 : 0); + freg = 0; + cif->flags2 = 0; + + for (i = j = 0; i < cif->nargs; i++) + { + type = (cif->arg_types)[i]->type; + switch (type) + { + case FFI_TYPE_FLOAT: + greg++; + cif->bytes += sizeof (UINT64) - sizeof (float); + if (freg >= NFREGARG - 1) + continue; + if (fpair < 0) + { + fpair = freg; + freg += 2; + } + else + fpair = -1; + cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); + break; + + case FFI_TYPE_DOUBLE: + if (greg++ >= NGREGARG && (freg + 1) >= NFREGARG) + continue; + if ((freg + 1) < NFREGARG) + { + freg += 2; + cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); + } + else + cif->flags2 += FFI_TYPE_INT << (2 * j++); + break; + + default: + size = (cif->arg_types)[i]->size; + if (size < sizeof (UINT64)) + cif->bytes += sizeof (UINT64) - size; + n = (size + sizeof (UINT64) - 1) / sizeof (UINT64); + if (greg >= NGREGARG) + continue; + else if (greg + n - 1 >= NGREGARG) + greg = NGREGARG; + else + greg += n; + for (m = 0; m < n; m++) + cif->flags2 += FFI_TYPE_INT << (2 * j++); + break; + } + } + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + cif->flags = return_type (cif->rtype); + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = cif->rtype->type; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +/*@-declundef@*/ +/*@-exportheader@*/ +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), + /*@out@*/ extended_cif *, + unsigned, unsigned, long long, + /*@out@*/ unsigned *, + void (*fn)(void)); +/*@=declundef@*/ +/*@=exportheader@*/ + +void ffi_call(/*@dependent@*/ ffi_cif *cif, + void (*fn)(void), + /*@out@*/ void *rvalue, + /*@dependent@*/ void **avalue) +{ + extended_cif ecif; + UINT64 trvalue; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if (cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + ecif.rvalue = &trvalue; + else if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, cif->flags2, + ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } + + if (rvalue + && cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + memcpy (rvalue, &trvalue, cif->rtype->size); +} + +extern void ffi_closure_SYSV (void); +extern void __ic_invalidate (void *line); + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + /* Since ffi_closure is an aligned object, the ffi trampoline is + called as an SHcompact code. Sigh. + SHcompact part: + mova @(1,pc),r0; add #1,r0; jmp @r0; nop; + SHmedia part: + movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0 + movi cxt >> 16,r1; shori cxt,r1; blink tr0,r63 */ +#ifdef __LITTLE_ENDIAN__ + tramp[0] = 0x7001c701; + tramp[1] = 0x0009402b; +#else + tramp[0] = 0xc7017001; + tramp[1] = 0x402b0009; +#endif + tramp[2] = 0xcc000010 | (((UINT32) ffi_closure_SYSV) >> 16) << 10; + tramp[3] = 0xc8000010 | (((UINT32) ffi_closure_SYSV) & 0xffff) << 10; + tramp[4] = 0x6bf10600; + tramp[5] = 0xcc000010 | (((UINT32) codeloc) >> 16) << 10; + tramp[6] = 0xc8000010 | (((UINT32) codeloc) & 0xffff) << 10; + tramp[7] = 0x4401fff0; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the icache. */ + asm volatile ("ocbwb %0,0; synco; icbi %1,0; synci" : : "r" (tramp), + "r"(codeloc)); + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + * entry, r3 holds the address of the closure. + * After storing the registers that could possibly contain + * parameters to be passed into the stack frame and setting + * up space for a return value, ffi_closure_SYSV invokes the + * following helper function to do most of the work. + */ + +int +ffi_closure_helper_SYSV (ffi_closure *closure, UINT64 *rvalue, + UINT64 *pgr, UINT64 *pfr, UINT64 *pst) +{ + void **avalue; + ffi_type **p_arg; + int i, avn; + int greg, freg; + ffi_cif *cif; + int fpair = -1; + + cif = closure->cif; + avalue = alloca (cif->nargs * sizeof (void *)); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. */ + if (return_type (cif->rtype) == FFI_TYPE_STRUCT) + { + rvalue = (UINT64 *) *pgr; + greg = 1; + } + else + greg = 0; + + freg = 0; + cif = closure->cif; + avn = cif->nargs; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + void *p; + + z = (*p_arg)->size; + if (z < sizeof (UINT32)) + { + p = pgr + greg++; + + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_STRUCT: +#ifdef __LITTLE_ENDIAN__ + avalue[i] = p; +#else + avalue[i] = ((char *) p) + sizeof (UINT32) - z; +#endif + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof (UINT32)) + { + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg < NFREGARG - 1) + { + if (fpair >= 0) + { + avalue[i] = (UINT32 *) pfr + fpair; + fpair = -1; + } + else + { +#ifdef __LITTLE_ENDIAN__ + fpair = freg; + avalue[i] = (UINT32 *) pfr + (1 ^ freg); +#else + fpair = 1 ^ freg; + avalue[i] = (UINT32 *) pfr + freg; +#endif + freg += 2; + } + } + else +#ifdef __LITTLE_ENDIAN__ + avalue[i] = pgr + greg; +#else + avalue[i] = (UINT32 *) (pgr + greg) + 1; +#endif + } + else +#ifdef __LITTLE_ENDIAN__ + avalue[i] = pgr + greg; +#else + avalue[i] = (UINT32 *) (pgr + greg) + 1; +#endif + greg++; + } + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + avalue[i] = pgr + greg; + else + { + avalue[i] = pfr + (freg >> 1); + freg += 2; + } + greg++; + } + else + { + int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); + + avalue[i] = pgr + greg; + greg += n; + } + } + + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. */ + return return_type (cif->rtype); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffitarget.h new file mode 100644 index 0000000000..08a6fe96cc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/ffitarget.h @@ -0,0 +1,58 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SuperH - SHmedia. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; + +#define FFI_EXTRA_CIF_FIELDS long long flags2 +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 32 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/sysv.S new file mode 100644 index 0000000000..c4587d5f3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sh64/sysv.S @@ -0,0 +1,539 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2003, 2004, 2006, 2008 Kaz Kojima + + SuperH SHmedia Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): +#endif + +#ifdef __LITTLE_ENDIAN__ +#define OFS_FLT 0 +#else +#define OFS_FLT 4 +#endif + + .section .text..SHmedia32,"ax" + + # r2: ffi_prep_args + # r3: &ecif + # r4: bytes + # r5: flags + # r6: flags2 + # r7: rvalue + # r8: fn + + # This assumes we are using gas. + .align 5 +ENTRY(ffi_call_SYSV) + # Save registers +.LFB1: + addi.l r15, -48, r15 +.LCFI0: + st.q r15, 40, r32 + st.q r15, 32, r31 + st.q r15, 24, r30 + st.q r15, 16, r29 + st.q r15, 8, r28 + st.l r15, 4, r18 + st.l r15, 0, r14 +.LCFI1: + add.l r15, r63, r14 +.LCFI2: +# add r4, r63, r28 + add r5, r63, r29 + add r6, r63, r30 + add r7, r63, r31 + add r8, r63, r32 + + addi r4, (64 + 7), r4 + andi r4, ~7, r4 + sub.l r15, r4, r15 + + ptabs/l r2, tr0 + add r15, r63, r2 + blink tr0, r18 + + addi r15, 64, r22 + movi 0, r0 + movi 0, r1 + movi -1, r23 + + pt/l 1f, tr1 + bnei/l r29, FFI_TYPE_STRUCT, tr1 + ld.l r15, 0, r19 + addi r15, 8, r15 + addi r0, 1, r0 +1: + +.L_pass: + andi r30, 3, r20 + shlri r30, 2, r30 + + pt/l .L_call_it, tr0 + pt/l .L_pass_i, tr1 + pt/l .L_pass_f, tr2 + + beqi/l r20, FFI_TYPE_VOID, tr0 + beqi/l r20, FFI_TYPE_INT, tr1 + beqi/l r20, FFI_TYPE_FLOAT, tr2 + +.L_pass_d: + addi r0, 1, r0 + pt/l 3f, tr0 + movi 12, r20 + bge/l r1, r20, tr0 + + pt/l .L_pop_d, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + addi r1, 2, r1 + blink tr0, r63 + +.L_pop_d: + pt/l .L_pop_d_tbl, tr1 + gettr tr1, r20 + shlli r1, 2, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_d_tbl: + fld.d r15, 0, dr0 + blink tr0, r63 + fld.d r15, 0, dr2 + blink tr0, r63 + fld.d r15, 0, dr4 + blink tr0, r63 + fld.d r15, 0, dr6 + blink tr0, r63 + fld.d r15, 0, dr8 + blink tr0, r63 + fld.d r15, 0, dr10 + blink tr0, r63 + +.L_pass_f: + addi r0, 1, r0 + pt/l 3f, tr0 + movi 12, r20 + bge/l r1, r20, tr0 + + pt/l .L_pop_f, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + blink tr0, r63 + +.L_pop_f: + pt/l .L_pop_f_tbl, tr1 + pt/l 5f, tr2 + gettr tr1, r20 + bge/l r23, r63, tr2 + add r1, r63, r23 + shlli r1, 3, r21 + addi r1, 2, r1 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 +5: + addi r23, 1, r21 + movi -1, r23 + shlli r21, 3, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_f_tbl: + fld.s r15, OFS_FLT, fr0 + blink tr0, r63 + fld.s r15, OFS_FLT, fr1 + blink tr0, r63 + fld.s r15, OFS_FLT, fr2 + blink tr0, r63 + fld.s r15, OFS_FLT, fr3 + blink tr0, r63 + fld.s r15, OFS_FLT, fr4 + blink tr0, r63 + fld.s r15, OFS_FLT, fr5 + blink tr0, r63 + fld.s r15, OFS_FLT, fr6 + blink tr0, r63 + fld.s r15, OFS_FLT, fr7 + blink tr0, r63 + fld.s r15, OFS_FLT, fr8 + blink tr0, r63 + fld.s r15, OFS_FLT, fr9 + blink tr0, r63 + fld.s r15, OFS_FLT, fr10 + blink tr0, r63 + fld.s r15, OFS_FLT, fr11 + blink tr0, r63 + +.L_pass_i: + pt/l 3f, tr0 + movi 8, r20 + bge/l r0, r20, tr0 + + pt/l .L_pop_i, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + addi r0, 1, r0 + blink tr0, r63 + +.L_pop_i: + pt/l .L_pop_i_tbl, tr1 + gettr tr1, r20 + shlli r0, 3, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_i_tbl: + ld.q r15, 0, r2 + blink tr0, r63 + ld.q r15, 0, r3 + blink tr0, r63 + ld.q r15, 0, r4 + blink tr0, r63 + ld.q r15, 0, r5 + blink tr0, r63 + ld.q r15, 0, r6 + blink tr0, r63 + ld.q r15, 0, r7 + blink tr0, r63 + ld.q r15, 0, r8 + blink tr0, r63 + ld.q r15, 0, r9 + blink tr0, r63 + +.L_call_it: + # call function + pt/l 1f, tr1 + bnei/l r29, FFI_TYPE_STRUCT, tr1 + add r19, r63, r2 +1: + add r22, r63, r15 + ptabs/l r32, tr0 + blink tr0, r18 + + pt/l .L_ret_i, tr0 + pt/l .L_ret_ll, tr1 + pt/l .L_ret_d, tr2 + pt/l .L_ret_f, tr3 + pt/l .L_epilogue, tr4 + + beqi/l r29, FFI_TYPE_INT, tr0 + beqi/l r29, FFI_TYPE_UINT32, tr0 + beqi/l r29, FFI_TYPE_SINT64, tr1 + beqi/l r29, FFI_TYPE_UINT64, tr1 + beqi/l r29, FFI_TYPE_DOUBLE, tr2 + beqi/l r29, FFI_TYPE_FLOAT, tr3 + + pt/l .L_ret_q, tr0 + pt/l .L_ret_h, tr1 + + beqi/l r29, FFI_TYPE_UINT8, tr0 + beqi/l r29, FFI_TYPE_UINT16, tr1 + blink tr4, r63 + +.L_ret_d: + fst.d r31, 0, dr0 + blink tr4, r63 + +.L_ret_ll: + st.q r31, 0, r2 + blink tr4, r63 + +.L_ret_f: + fst.s r31, OFS_FLT, fr0 + blink tr4, r63 + +.L_ret_q: + st.b r31, 0, r2 + blink tr4, r63 + +.L_ret_h: + st.w r31, 0, r2 + blink tr4, r63 + +.L_ret_i: + st.l r31, 0, r2 + # Fall + +.L_epilogue: + # Remove the space we pushed for the args + add r14, r63, r15 + + ld.l r15, 0, r14 + ld.l r15, 4, r18 + ld.q r15, 8, r28 + ld.q r15, 16, r29 + ld.q r15, 24, r30 + ld.q r15, 32, r31 + ld.q r15, 40, r32 + addi.l r15, 48, r15 + ptabs r18, tr0 + blink tr0, r63 + +.LFE1: +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + + .align 5 +ENTRY(ffi_closure_SYSV) +.LFB2: + addi.l r15, -136, r15 +.LCFI3: + st.l r15, 12, r18 + st.l r15, 8, r14 + st.l r15, 4, r12 +.LCFI4: + add r15, r63, r14 +.LCFI5: + /* Stack layout: + ... + 64 bytes (register parameters) + 48 bytes (floating register parameters) + 8 bytes (result) + 4 bytes (r18) + 4 bytes (r14) + 4 bytes (r12) + 4 bytes (for align) + <- new stack pointer + */ + fst.d r14, 24, dr0 + fst.d r14, 32, dr2 + fst.d r14, 40, dr4 + fst.d r14, 48, dr6 + fst.d r14, 56, dr8 + fst.d r14, 64, dr10 + st.q r14, 72, r2 + st.q r14, 80, r3 + st.q r14, 88, r4 + st.q r14, 96, r5 + st.q r14, 104, r6 + st.q r14, 112, r7 + st.q r14, 120, r8 + st.q r14, 128, r9 + + add r1, r63, r2 + addi r14, 16, r3 + addi r14, 72, r4 + addi r14, 24, r5 + addi r14, 136, r6 +#ifdef PIC + movi (((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) >> 16) & 65535), r12 + shori ((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) & 65535), r12 +.LPCS0: ptrel/u r12, tr0 + movi ((ffi_closure_helper_SYSV@GOTPLT) & 65535), r1 + gettr tr0, r12 + ldx.l r1, r12, r1 + ptabs r1, tr0 +#else + pt/l ffi_closure_helper_SYSV, tr0 +#endif + blink tr0, r18 + + shlli r2, 1, r1 + movi (((datalabel .L_table) >> 16) & 65535), r2 + shori ((datalabel .L_table) & 65535), r2 + ldx.w r2, r1, r1 + add r1, r2, r1 + pt/l .L_case_v, tr1 + ptabs r1, tr0 + blink tr0, r63 + + .align 2 +.L_table: + .word .L_case_v - datalabel .L_table /* FFI_TYPE_VOID */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_INT */ + .word .L_case_f - datalabel .L_table /* FFI_TYPE_FLOAT */ + .word .L_case_d - datalabel .L_table /* FFI_TYPE_DOUBLE */ + .word .L_case_d - datalabel .L_table /* FFI_TYPE_LONGDOUBLE */ + .word .L_case_uq - datalabel .L_table /* FFI_TYPE_UINT8 */ + .word .L_case_q - datalabel .L_table /* FFI_TYPE_SINT8 */ + .word .L_case_uh - datalabel .L_table /* FFI_TYPE_UINT16 */ + .word .L_case_h - datalabel .L_table /* FFI_TYPE_SINT16 */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_UINT32 */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_SINT32 */ + .word .L_case_ll - datalabel .L_table /* FFI_TYPE_UINT64 */ + .word .L_case_ll - datalabel .L_table /* FFI_TYPE_SINT64 */ + .word .L_case_v - datalabel .L_table /* FFI_TYPE_STRUCT */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_POINTER */ + + .align 2 +.L_case_d: + fld.d r14, 16, dr0 + blink tr1, r63 +.L_case_f: + fld.s r14, 16, fr0 + blink tr1, r63 +.L_case_ll: + ld.q r14, 16, r2 + blink tr1, r63 +.L_case_i: + ld.l r14, 16, r2 + blink tr1, r63 +.L_case_q: + ld.b r14, 16, r2 + blink tr1, r63 +.L_case_uq: + ld.ub r14, 16, r2 + blink tr1, r63 +.L_case_h: + ld.w r14, 16, r2 + blink tr1, r63 +.L_case_uh: + ld.uw r14, 16, r2 + blink tr1, r63 +.L_case_v: + add.l r14, r63, r15 + ld.l r15, 4, r12 + ld.l r15, 8, r14 + ld.l r15, 12, r18 + addi.l r15, 136, r15 + ptabs r18, tr0 + blink tr0, r63 + +.LFE2: +.ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif + + .section ".eh_frame","aw",@progbits +__FRAME_BEGIN__: + .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ +.LSCIE1: + .4byte 0x0 /* CIE Identifier Tag */ + .byte 0x1 /* CIE Version */ +#ifdef PIC + .ascii "zR\0" /* CIE Augmentation */ +#else + .byte 0x0 /* CIE Augmentation */ +#endif + .uleb128 0x1 /* CIE Code Alignment Factor */ + .sleb128 -4 /* CIE Data Alignment Factor */ + .byte 0x12 /* CIE RA Column */ +#ifdef PIC + .uleb128 0x1 /* Augmentation size */ + .byte 0x10 /* FDE Encoding (pcrel) */ +#endif + .byte 0xc /* DW_CFA_def_cfa */ + .uleb128 0xf + .uleb128 0x0 + .align 2 +.LECIE1: +.LSFDE1: + .4byte datalabel .LEFDE1-datalabel .LASFDE1 /* FDE Length */ +.LASFDE1: + .4byte datalabel .LASFDE1-datalabel __FRAME_BEGIN__ +#ifdef PIC + .4byte .LFB1-. /* FDE initial location */ +#else + .4byte .LFB1 /* FDE initial location */ +#endif + .4byte datalabel .LFE1-datalabel .LFB1 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI0-datalabel .LFB1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .uleb128 0x30 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI1-datalabel .LCFI0 + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .uleb128 0xc + .byte 0x92 /* DW_CFA_offset, column 0x12 */ + .uleb128 0xb + .byte 0x9c /* DW_CFA_offset, column 0x1c */ + .uleb128 0xa + .byte 0x9d /* DW_CFA_offset, column 0x1d */ + .uleb128 0x8 + .byte 0x9e /* DW_CFA_offset, column 0x1e */ + .uleb128 0x6 + .byte 0x9f /* DW_CFA_offset, column 0x1f */ + .uleb128 0x4 + .byte 0xa0 /* DW_CFA_offset, column 0x20 */ + .uleb128 0x2 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI2-datalabel .LCFI1 + .byte 0xd /* DW_CFA_def_cfa_register */ + .uleb128 0xe + .align 2 +.LEFDE1: + +.LSFDE3: + .4byte datalabel .LEFDE3-datalabel .LASFDE3 /* FDE Length */ +.LASFDE3: + .4byte datalabel .LASFDE3-datalabel __FRAME_BEGIN__ +#ifdef PIC + .4byte .LFB2-. /* FDE initial location */ +#else + .4byte .LFB2 /* FDE initial location */ +#endif + .4byte datalabel .LFE2-datalabel .LFB2 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI3-datalabel .LFB2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .uleb128 0x88 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI4-datalabel .LCFI3 + .byte 0x8c /* DW_CFA_offset, column 0xc */ + .uleb128 0x21 + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .uleb128 0x20 + .byte 0x92 /* DW_CFA_offset, column 0x12 */ + .uleb128 0x1f + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI5-datalabel .LCFI4 + .byte 0xd /* DW_CFA_def_cfa_register */ + .uleb128 0xe + .align 2 +.LEFDE3: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi.c new file mode 100644 index 0000000000..9e406d0af6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi.c @@ -0,0 +1,468 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011, 2013 Anthony Green + Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +#ifndef SPARC64 + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +/* Perform machine dependent cif processing */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + int rtt = rtype->type; + size_t bytes; + int i, n, flags; + + /* Set the return type flag */ + switch (rtt) + { + case FFI_TYPE_VOID: + flags = SPARC_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_1; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + flags = (rtype->size & 0xfff) << SPARC_SIZEMASK_SHIFT; + flags |= SPARC_RET_STRUCT; + break; + case FFI_TYPE_SINT8: + flags = SPARC_RET_SINT8; + break; + case FFI_TYPE_UINT8: + flags = SPARC_RET_UINT8; + break; + case FFI_TYPE_SINT16: + flags = SPARC_RET_SINT16; + break; + case FFI_TYPE_UINT16: + flags = SPARC_RET_UINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + flags = SPARC_RET_UINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = SPARC_RET_INT64; + break; + case FFI_TYPE_COMPLEX: + rtt = rtype->elements[0]->type; + switch (rtt) + { + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_4; + break; + case FFI_TYPE_LONGDOUBLE: + flags = SPARC_RET_F_8; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = SPARC_RET_INT128; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + flags = SPARC_RET_INT64; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + flags = SP_V8_RET_CPLX16; + break; + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + flags = SP_V8_RET_CPLX8; + break; + default: + abort(); + } + break; + default: + abort(); + } + cif->flags = flags; + + bytes = 0; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = cif->arg_types[i]; + size_t z = ty->size; + int tt = ty->type; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Passed by reference. */ + z = 4; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + /* FALLTHRU */ + + default: + z = FFI_ALIGN(z, 4); + } + bytes += z; + } + + /* Sparc call frames require that space is allocated for 6 args, + even if they aren't used. Make that space if necessary. */ + if (bytes < 6 * 4) + bytes = 6 * 4; + + /* The ABI always requires space for the struct return pointer. */ + bytes += 4; + + /* The stack must be 2 word aligned, so round bytes up appropriately. */ + bytes = FFI_ALIGN(bytes, 2 * 4); + + /* Include the call frame to prep_args. */ + bytes += 4*16 + 4*8; + cif->bytes = bytes; + + return FFI_OK; +} + +extern void ffi_call_v8(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, size_t bytes, void *closure) FFI_HIDDEN; + +int FFI_HIDDEN +ffi_prep_args_v8(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue) +{ + ffi_type **p_arg; + int flags = cif->flags; + int i, nargs; + + if (rvalue == NULL) + { + if ((flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + { + /* Since we pass the pointer to the callee, we need a value. + We allowed for this space in ffi_call, before ffi_call_v8 + alloca'd the space. */ + rvalue = (char *)argp + cif->bytes; + } + else + { + /* Otherwise, we can ignore the return value. */ + flags = SPARC_RET_VOID; + } + } + + /* This could only really be done when we are returning a structure. + However, the space is reserved so we can do it unconditionally. */ + *argp++ = (unsigned long)rvalue; + +#ifdef USING_PURIFY + /* Purify will probably complain in our assembly routine, + unless we zero out this memory. */ + memset(argp, 0, 6*4); +#endif + + p_arg = cif->arg_types; + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = p_arg[i]; + void *a = avalue[i]; + int tt = ty->type; + size_t z; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + *argp++ = (unsigned long)a; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + memcpy(argp, a, 8); + argp += 2; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *argp++ = *(unsigned *)a; + break; + + case FFI_TYPE_UINT8: + *argp++ = *(UINT8 *)a; + break; + case FFI_TYPE_SINT8: + *argp++ = *(SINT8 *)a; + break; + case FFI_TYPE_UINT16: + *argp++ = *(UINT16 *)a; + break; + case FFI_TYPE_SINT16: + *argp++ = *(SINT16 *)a; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + z = ty->size; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + if (z < 4) + { + memcpy((char *)argp + 4 - z, a, z); + argp++; + } + else + { + memcpy(argp, a, z); + argp += z / 4; + } + break; + + default: + abort(); + } + } + + return flags; +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t bytes = cif->bytes; + + FFI_ASSERT (cif->abi == FFI_V8); + + /* If we've not got a return value, we need to create one if we've + got to pass the return value to the callee. Otherwise ignore it. */ + if (rvalue == NULL + && (cif->flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + bytes += FFI_ALIGN (cif->rtype->size, 8); + + ffi_call_v8(cif, fn, rvalue, avalue, -bytes, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +#ifdef __GNUC__ +static inline void +ffi_flush_icache (void *p) +{ + /* SPARC v8 requires 5 instructions for flush to be visible */ + asm volatile ("iflush %0; iflush %0+8; nop; nop; nop; nop; nop" + : : "r" (p) : "memory"); +} +#else +extern void ffi_flush_icache (void *) FFI_HIDDEN; +#endif + +extern void ffi_closure_v8(void) FFI_HIDDEN; +extern void ffi_go_closure_v8(void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long ctx = (unsigned long) closure; + unsigned long fn = (unsigned long) ffi_closure_v8; + + if (cif->abi != FFI_V8) + return FFI_BAD_ABI; + + tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ + tramp[1] = 0x05000000 | ctx >> 10; /* sethi %hi(ctx), %g2 */ + tramp[2] = 0x81c06000 | (fn & 0x3ff); /* jmp %g1+%lo(fn) */ + tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or %g2, %lo(ctx) */ + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + ffi_flush_icache (closure); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_V8) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_v8; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_sparc_inner_v8(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *argp) +{ + ffi_type **arg_types; + void **avalue; + int i, nargs, flags; + + arg_types = cif->arg_types; + nargs = cif->nargs; + flags = cif->flags; + avalue = alloca(nargs * sizeof(void *)); + + /* Copy the caller's structure return address so that the closure + returns the data directly to the caller. Also install it so we + can return the address in %o0. */ + if ((flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + { + void *new_rvalue = (void *)*argp; + *(void **)rvalue = new_rvalue; + rvalue = new_rvalue; + } + + /* Always skip the structure return address. */ + argp++; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0; i < nargs; i++) + { + ffi_type *ty = arg_types[i]; + int tt = ty->type; + void *a = argp; + size_t z; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Straight copy of invisible reference. */ + a = (void *)*argp; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + if ((unsigned long)a & 7) + { + /* Align on a 8-byte boundary. */ + UINT64 *tmp = alloca(8); + *tmp = ((UINT64)argp[0] << 32) | argp[1]; + a = tmp; + } + argp++; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + a += 2; + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + a += 3; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + z = ty->size; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + if (z < 4) + a += 4 - z; + else if (z > 4) + argp++; + break; + + default: + abort(); + } + argp++; + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_sparc how to perform return type promotions. */ + return flags; +} +#endif /* !SPARC64 */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi64.c new file mode 100644 index 0000000000..9e04061a42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffi64.c @@ -0,0 +1,608 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011, 2013 Anthony Green + Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +#ifdef SPARC64 + +/* Flatten the contents of a structure to the parts that are passed in + floating point registers. The return is a bit mask wherein bit N + set means bytes [4*n, 4*n+3] are passed in %fN. + + We encode both the (running) size (maximum 32) and mask (maxumum 255) + into one integer. The size is placed in the low byte, so that align + and addition work correctly. The mask is placed in the second byte. */ + +static int +ffi_struct_float_mask (ffi_type *outer_type, int size_mask) +{ + ffi_type **elts; + ffi_type *t; + + if (outer_type->type == FFI_TYPE_COMPLEX) + { + int m = 0, tt = outer_type->elements[0]->type; + size_t z = outer_type->size; + + if (tt == FFI_TYPE_FLOAT + || tt == FFI_TYPE_DOUBLE + || tt == FFI_TYPE_LONGDOUBLE) + m = (1 << (z / 4)) - 1; + return (m << 8) | z; + } + FFI_ASSERT (outer_type->type == FFI_TYPE_STRUCT); + + for (elts = outer_type->elements; (t = *elts) != NULL; elts++) + { + size_t z = t->size; + int o, m, tt; + + size_mask = FFI_ALIGN(size_mask, t->alignment); + switch (t->type) + { + case FFI_TYPE_STRUCT: + size_mask = ffi_struct_float_mask (t, size_mask); + continue; + case FFI_TYPE_COMPLEX: + tt = t->elements[0]->type; + if (tt != FFI_TYPE_FLOAT + && tt != FFI_TYPE_DOUBLE + && tt != FFI_TYPE_LONGDOUBLE) + break; + /* FALLTHRU */ + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + m = (1 << (z / 4)) - 1; /* compute mask for type */ + o = (size_mask >> 2) & 0x3f; /* extract word offset */ + size_mask |= m << (o + 8); /* insert mask into place */ + break; + } + size_mask += z; + } + + size_mask = FFI_ALIGN(size_mask, outer_type->alignment); + FFI_ASSERT ((size_mask & 0xff) == outer_type->size); + + return size_mask; +} + +/* Merge floating point data into integer data. If the structure is + entirely floating point, simply return a pointer to the fp data. */ + +static void * +ffi_struct_float_merge (int size_mask, void *vi, void *vf) +{ + int size = size_mask & 0xff; + int mask = size_mask >> 8; + int n = size >> 2; + + if (mask == 0) + return vi; + else if (mask == (1 << n) - 1) + return vf; + else + { + unsigned int *wi = vi, *wf = vf; + int i; + + for (i = 0; i < n; ++i) + if ((mask >> i) & 1) + wi[i] = wf[i]; + + return vi; + } +} + +/* Similar, but place the data into VD in the end. */ + +void FFI_HIDDEN +ffi_struct_float_copy (int size_mask, void *vd, void *vi, void *vf) +{ + int size = size_mask & 0xff; + int mask = size_mask >> 8; + int n = size >> 2; + + if (mask == 0) + ; + else if (mask == (1 << n) - 1) + vi = vf; + else + { + unsigned int *wd = vd, *wi = vi, *wf = vf; + int i; + + for (i = 0; i < n; ++i) + wd[i] = ((mask >> i) & 1 ? wf : wi)[i]; + return; + } + memcpy (vd, vi, size); +} + +/* Perform machine dependent cif processing */ + +static ffi_status +ffi_prep_cif_machdep_core(ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + int rtt = rtype->type; + size_t bytes = 0; + int i, n, flags; + + /* Set the return type flag */ + switch (rtt) + { + case FFI_TYPE_VOID: + flags = SPARC_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_1; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_LONGDOUBLE: + flags = SPARC_RET_F_4; + break; + + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + if (rtype->size > 32) + { + flags = SPARC_RET_VOID | SPARC_FLAG_RET_IN_MEM; + bytes = 8; + } + else + { + int size_mask = ffi_struct_float_mask (rtype, 0); + int word_size = (size_mask >> 2) & 0x3f; + int all_mask = (1 << word_size) - 1; + int fp_mask = size_mask >> 8; + + flags = (size_mask << SPARC_SIZEMASK_SHIFT) | SPARC_RET_STRUCT; + + /* For special cases of all-int or all-fp, we can return + the value directly without popping through a struct copy. */ + if (fp_mask == 0) + { + if (rtype->alignment >= 8) + { + if (rtype->size == 8) + flags = SPARC_RET_INT64; + else if (rtype->size == 16) + flags = SPARC_RET_INT128; + } + } + else if (fp_mask == all_mask) + switch (word_size) + { + case 1: flags = SPARC_RET_F_1; break; + case 2: flags = SPARC_RET_F_2; break; + case 3: flags = SP_V9_RET_F_3; break; + case 4: flags = SPARC_RET_F_4; break; + /* 5 word structures skipped; handled via RET_STRUCT. */ + case 6: flags = SPARC_RET_F_6; break; + /* 7 word structures skipped; handled via RET_STRUCT. */ + case 8: flags = SPARC_RET_F_8; break; + } + } + break; + + case FFI_TYPE_SINT8: + flags = SPARC_RET_SINT8; + break; + case FFI_TYPE_UINT8: + flags = SPARC_RET_UINT8; + break; + case FFI_TYPE_SINT16: + flags = SPARC_RET_SINT16; + break; + case FFI_TYPE_UINT16: + flags = SPARC_RET_UINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = SP_V9_RET_SINT32; + break; + case FFI_TYPE_UINT32: + flags = SPARC_RET_UINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + flags = SPARC_RET_INT64; + break; + + default: + abort(); + } + + bytes = 0; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = cif->arg_types[i]; + size_t z = ty->size; + size_t a = ty->alignment; + + switch (ty->type) + { + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + /* Large structs passed by reference. */ + if (z > 16) + { + a = z = 8; + break; + } + /* Small structs may be passed in integer or fp regs or both. */ + if (bytes >= 16*8) + break; + if ((ffi_struct_float_mask (ty, 0) & 0xff00) == 0) + break; + /* FALLTHRU */ + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + flags |= SPARC_FLAG_FP_ARGS; + break; + } + bytes = FFI_ALIGN(bytes, a); + bytes += FFI_ALIGN(z, 8); + } + + /* Sparc call frames require that space is allocated for 6 args, + even if they aren't used. Make that space if necessary. */ + if (bytes < 6 * 8) + bytes = 6 * 8; + + /* The stack must be 2 word aligned, so round bytes up appropriately. */ + bytes = FFI_ALIGN(bytes, 16); + + /* Include the call frame to prep_args. */ + bytes += 8*16 + 8*8; + + cif->bytes = bytes; + cif->flags = flags; + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + cif->nfixedargs = cif->nargs; + return ffi_prep_cif_machdep_core(cif); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned nfixedargs, unsigned ntotalargs) +{ + cif->nfixedargs = nfixedargs; + return ffi_prep_cif_machdep_core(cif); +} + +extern void ffi_call_v9(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, size_t bytes, void *closure) FFI_HIDDEN; + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +int FFI_HIDDEN +ffi_prep_args_v9(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue) +{ + ffi_type **p_arg; + int flags = cif->flags; + int i, nargs; + + if (rvalue == NULL) + { + if (flags & SPARC_FLAG_RET_IN_MEM) + { + /* Since we pass the pointer to the callee, we need a value. + We allowed for this space in ffi_call, before ffi_call_v8 + alloca'd the space. */ + rvalue = (char *)argp + cif->bytes; + } + else + { + /* Otherwise, we can ignore the return value. */ + flags = SPARC_RET_VOID; + } + } + +#ifdef USING_PURIFY + /* Purify will probably complain in our assembly routine, + unless we zero out this memory. */ + memset(argp, 0, 6*8); +#endif + + if (flags & SPARC_FLAG_RET_IN_MEM) + *argp++ = (unsigned long)rvalue; + + p_arg = cif->arg_types; + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = p_arg[i]; + void *a = avalue[i]; + size_t z; + + switch (ty->type) + { + case FFI_TYPE_SINT8: + *argp++ = *(SINT8 *)a; + break; + case FFI_TYPE_UINT8: + *argp++ = *(UINT8 *)a; + break; + case FFI_TYPE_SINT16: + *argp++ = *(SINT16 *)a; + break; + case FFI_TYPE_UINT16: + *argp++ = *(UINT16 *)a; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + *argp++ = *(SINT32 *)a; + break; + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + *argp++ = *(UINT32 *)a; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_DOUBLE: + *argp++ = *(UINT64 *)a; + break; + + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + z = ty->size; + if (z > 16) + { + /* For structures larger than 16 bytes we pass reference. */ + *argp++ = (unsigned long)a; + break; + } + if (((unsigned long)argp & 15) && ty->alignment > 8) + argp++; + memcpy(argp, a, z); + argp += FFI_ALIGN(z, 8) / 8; + break; + + default: + abort(); + } + } + + return flags; +} + +static void +ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t bytes = cif->bytes; + + FFI_ASSERT (cif->abi == FFI_V9); + + if (rvalue == NULL && (cif->flags & SPARC_FLAG_RET_IN_MEM)) + bytes += FFI_ALIGN (cif->rtype->size, 16); + + ffi_call_v9(cif, fn, rvalue, avalue, -bytes, closure); +} + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +#ifdef __GNUC__ +static inline void +ffi_flush_icache (void *p) +{ + asm volatile ("flush %0; flush %0+8" : : "r" (p) : "memory"); +} +#else +extern void ffi_flush_icache (void *) FFI_HIDDEN; +#endif + +extern void ffi_closure_v9(void) FFI_HIDDEN; +extern void ffi_go_closure_v9(void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long fn; + + if (cif->abi != FFI_V9) + return FFI_BAD_ABI; + + /* Trampoline address is equal to the closure address. We take advantage + of that to reduce the trampoline size by 8 bytes. */ + fn = (unsigned long) ffi_closure_v9; + tramp[0] = 0x83414000; /* rd %pc, %g1 */ + tramp[1] = 0xca586010; /* ldx [%g1+16], %g5 */ + tramp[2] = 0x81c14000; /* jmp %g5 */ + tramp[3] = 0x01000000; /* nop */ + *((unsigned long *) &tramp[4]) = fn; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + ffi_flush_icache (closure); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_V9) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_v9; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_sparc_inner_v9(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *gpr, unsigned long *fpr) +{ + ffi_type **arg_types; + void **avalue; + int i, argn, argx, nargs, flags, nfixedargs; + + arg_types = cif->arg_types; + nargs = cif->nargs; + flags = cif->flags; + nfixedargs = cif->nfixedargs; + + avalue = alloca(nargs * sizeof(void *)); + + /* Copy the caller's structure return address so that the closure + returns the data directly to the caller. */ + if (flags & SPARC_FLAG_RET_IN_MEM) + { + rvalue = (void *) gpr[0]; + /* Skip the structure return address. */ + argn = 1; + } + else + argn = 0; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0; i < nargs; i++, argn = argx) + { + int named = i < nfixedargs; + ffi_type *ty = arg_types[i]; + void *a = &gpr[argn]; + size_t z; + + argx = argn + 1; + switch (ty->type) + { + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + z = ty->size; + if (z > 16) + a = *(void **)a; + else + { + argx = argn + FFI_ALIGN (z, 8) / 8; + if (named && argn < 16) + { + int size_mask = ffi_struct_float_mask (ty, 0); + int argn_mask = (0xffff00 >> argn) & 0xff00; + + /* Eliminate fp registers off the end. */ + size_mask = (size_mask & 0xff) | (size_mask & argn_mask); + a = ffi_struct_float_merge (size_mask, gpr+argn, fpr+argn); + } + } + break; + + case FFI_TYPE_LONGDOUBLE: + argn = FFI_ALIGN (argn, 2); + a = (named && argn < 16 ? fpr : gpr) + argn; + argx = argn + 2; + break; + case FFI_TYPE_DOUBLE: + if (named && argn < 16) + a = fpr + argn; + break; + case FFI_TYPE_FLOAT: + if (named && argn < 16) + a = fpr + argn; + a += 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + a += 4; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + a += 6; + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + a += 7; + break; + + default: + abort(); + } + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_sparc how to perform return type promotions. */ + return flags; +} +#endif /* SPARC64 */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffitarget.h new file mode 100644 index 0000000000..2f4cd9a7a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/ffitarget.h @@ -0,0 +1,81 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SPARC. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#if defined(__arch64__) || defined(__sparcv9) +#ifndef SPARC64 +#define SPARC64 +#endif +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, +#ifdef SPARC64 + FFI_V9, + FFI_DEFAULT_ABI = FFI_V9, +#else + FFI_V8, + FFI_DEFAULT_ABI = FFI_V8, +#endif + FFI_LAST_ABI +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION 1 +#define FFI_TARGET_HAS_COMPLEX_TYPE 1 + +#ifdef SPARC64 +# define FFI_TARGET_SPECIFIC_VARIADIC 1 +# define FFI_EXTRA_CIF_FIELDS unsigned int nfixedargs +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#ifdef SPARC64 +#define FFI_TRAMPOLINE_SIZE 24 +#else +#define FFI_TRAMPOLINE_SIZE 16 +#endif + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/internal.h new file mode 100644 index 0000000000..0a66472bad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/internal.h @@ -0,0 +1,26 @@ +#define SPARC_RET_VOID 0 +#define SPARC_RET_STRUCT 1 +#define SPARC_RET_UINT8 2 +#define SPARC_RET_SINT8 3 +#define SPARC_RET_UINT16 4 +#define SPARC_RET_SINT16 5 +#define SPARC_RET_UINT32 6 +#define SP_V9_RET_SINT32 7 /* v9 only */ +#define SP_V8_RET_CPLX16 7 /* v8 only */ +#define SPARC_RET_INT64 8 +#define SPARC_RET_INT128 9 + +/* Note that F_7 is missing, and is handled by SPARC_RET_STRUCT. */ +#define SPARC_RET_F_8 10 +#define SPARC_RET_F_6 11 +#define SPARC_RET_F_4 12 +#define SPARC_RET_F_2 13 +#define SP_V9_RET_F_3 14 /* v9 only */ +#define SP_V8_RET_CPLX8 14 /* v8 only */ +#define SPARC_RET_F_1 15 + +#define SPARC_FLAG_RET_MASK 15 +#define SPARC_FLAG_RET_IN_MEM 32 +#define SPARC_FLAG_FP_ARGS 64 + +#define SPARC_SIZEMASK_SHIFT 8 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v8.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v8.S new file mode 100644 index 0000000000..a2e4908fd4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v8.S @@ -0,0 +1,443 @@ +/* ----------------------------------------------------------------------- + v8.S - Copyright (c) 2013 The Written Word, Inc. + Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#ifndef SPARC64 + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) + +#ifdef __USER_LABEL_PREFIX__ +# define C(Y) C1(__USER_LABEL_PREFIX__, Y) +#else +# define C(Y) Y +#endif +#define L(Y) C1(.L, Y) + + .text + +#ifndef __GNUC__ + .align 8 + .globl C(ffi_flush_icache) + .type C(ffi_flush_icache),#function + FFI_HIDDEN(C(ffi_flush_icache)) + +C(ffi_flush_icache): +1: iflush %o0 + iflush %o+8 + nop + nop + nop + nop + nop + retl + nop + .size C(ffi_flush_icache), . - C(ffi_flush_icache) +#endif + +#if defined(__sun__) && defined(__svr4__) +# define E(INDEX) .align 16 +#else +# define E(INDEX) .align 16; .org 2b + INDEX * 16 +#endif + + .align 8 + .globl C(ffi_call_v8) + .type C(ffi_call_v8),#function + FFI_HIDDEN(C(ffi_call_v8)) + +C(ffi_call_v8): +.LUW0: + ! Allocate a stack frame sized by ffi_call. + save %sp, %o4, %sp +.LUW1: + mov %i0, %o0 ! copy cif + add %sp, 64+32, %o1 ! load args area + mov %i2, %o2 ! copy rvalue + call C(ffi_prep_args_v8) + mov %i3, %o3 ! copy avalue + + add %sp, 32, %sp ! deallocate prep frame + and %o0, SPARC_FLAG_RET_MASK, %l0 ! save return type + srl %o0, SPARC_SIZEMASK_SHIFT, %l1 ! save return size + ld [%sp+64+4], %o0 ! load all argument registers + ld [%sp+64+8], %o1 + ld [%sp+64+12], %o2 + ld [%sp+64+16], %o3 + cmp %l0, SPARC_RET_STRUCT ! struct return needs an unimp 4 + ld [%sp+64+20], %o4 + be 8f + ld [%sp+64+24], %o5 + + ! Call foreign function + call %i1 + mov %i5, %g2 ! load static chain + +0: call 1f ! load pc in %o7 + sll %l0, 4, %l0 +1: add %o7, %l0, %o7 ! o7 = 0b + ret_type*16 + jmp %o7+(2f-0b) + nop + + ! Note that each entry is 4 insns, enforced by the E macro. + .align 16 +2: +E(SPARC_RET_VOID) + ret + restore +E(SPARC_RET_STRUCT) + unimp +E(SPARC_RET_UINT8) + and %o0, 0xff, %o0 + st %o0, [%i2] + ret + restore +E(SPARC_RET_SINT8) + sll %o0, 24, %o0 + b 7f + sra %o0, 24, %o0 +E(SPARC_RET_UINT16) + sll %o0, 16, %o0 + b 7f + srl %o0, 16, %o0 +E(SPARC_RET_SINT16) + sll %o0, 16, %o0 + b 7f + sra %o0, 16, %o0 +E(SPARC_RET_UINT32) +7: st %o0, [%i2] + ret + restore +E(SP_V8_RET_CPLX16) + sth %o0, [%i2+2] + b 9f + srl %o0, 16, %o0 +E(SPARC_RET_INT64) + st %o0, [%i2] + st %o1, [%i2+4] + ret + restore +E(SPARC_RET_INT128) + std %o0, [%i2] + std %o2, [%i2+8] + ret + restore +E(SPARC_RET_F_8) + st %f7, [%i2+7*4] + nop + st %f6, [%i2+6*4] + nop +E(SPARC_RET_F_6) + st %f5, [%i2+5*4] + nop + st %f4, [%i2+4*4] + nop +E(SPARC_RET_F_4) + st %f3, [%i2+3*4] + nop + st %f2, [%i2+2*4] + nop +E(SPARC_RET_F_2) + st %f1, [%i2+4] + st %f0, [%i2] + ret + restore +E(SP_V8_RET_CPLX8) + stb %o0, [%i2+1] + b 0f + srl %o0, 8, %o0 +E(SPARC_RET_F_1) + st %f0, [%i2] + ret + restore + + .align 8 +9: sth %o0, [%i2] + ret + restore + .align 8 +0: stb %o0, [%i2] + ret + restore + + ! Struct returning functions expect and skip the unimp here. + ! To make it worse, conforming callees examine the unimp and + ! make sure the low 12 bits of the unimp match the size of + ! the struct being returned. + .align 8 +8: call 1f ! load pc in %o7 + sll %l1, 2, %l0 ! size * 4 +1: sll %l1, 4, %l1 ! size * 16 + add %l0, %l1, %l0 ! size * 20 + add %o7, %l0, %o7 ! o7 = 8b + size*20 + jmp %o7+(2f-8b) + mov %i5, %g2 ! load static chain +2: + +/* The Sun assembler doesn't understand .rept 0x1000. */ +#define rept1 \ + call %i1; \ + nop; \ + unimp (. - 2b) / 20; \ + ret; \ + restore + +#define rept16 \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1 + +#define rept256 \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16 + + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + +.LUW2: + .size C(ffi_call_v8),. - C(ffi_call_v8) + + +/* 16*4 register window + 1*4 struct return + 6*4 args backing store + + 8*4 return storage + 1*4 alignment. */ +#define STACKFRAME (16*4 + 4 + 6*4 + 8*4 + 4) + +/* ffi_closure_v8(...) + + Receives the closure argument in %g2. */ + +#ifdef HAVE_AS_REGISTER_PSEUDO_OP + .register %g2, #scratch +#endif + + .align 8 + .globl C(ffi_go_closure_v8) + .type C(ffi_go_closure_v8),#function + FFI_HIDDEN(C(ffi_go_closure_v8)) + +C(ffi_go_closure_v8): +.LUW3: + save %sp, -STACKFRAME, %sp +.LUW4: + ld [%g2+4], %o0 ! load cif + ld [%g2+8], %o1 ! load fun + b 0f + mov %g2, %o2 ! load user_data +.LUW5: + .size C(ffi_go_closure_v8), . - C(ffi_go_closure_v8) + + .align 8 + .globl C(ffi_closure_v8) + .type C(ffi_closure_v8),#function + FFI_HIDDEN(C(ffi_closure_v8)) + +C(ffi_closure_v8): +.LUW6: + save %sp, -STACKFRAME, %sp +.LUW7: + ld [%g2+FFI_TRAMPOLINE_SIZE], %o0 ! load cif + ld [%g2+FFI_TRAMPOLINE_SIZE+4], %o1 ! load fun + ld [%g2+FFI_TRAMPOLINE_SIZE+8], %o2 ! load user_data +0: + ! Store all of the potential argument registers in va_list format. + st %i0, [%fp+68+0] + st %i1, [%fp+68+4] + st %i2, [%fp+68+8] + st %i3, [%fp+68+12] + st %i4, [%fp+68+16] + st %i5, [%fp+68+20] + + ! Call ffi_closure_sparc_inner to do the bulk of the work. + add %fp, -8*4, %o3 + call ffi_closure_sparc_inner_v8 + add %fp, 64, %o4 + +0: call 1f + and %o0, SPARC_FLAG_RET_MASK, %o0 +1: sll %o0, 4, %o0 ! o0 = o0 * 16 + add %o7, %o0, %o7 ! o7 = 0b + o0*16 + jmp %o7+(2f-0b) + add %fp, -8*4, %i2 + + ! Note that each entry is 4 insns, enforced by the E macro. + .align 16 +2: +E(SPARC_RET_VOID) + ret + restore +E(SPARC_RET_STRUCT) + ld [%i2], %i0 + jmp %i7+12 + restore +E(SPARC_RET_UINT8) + ldub [%i2+3], %i0 + ret + restore +E(SPARC_RET_SINT8) + ldsb [%i2+3], %i0 + ret + restore +E(SPARC_RET_UINT16) + lduh [%i2+2], %i0 + ret + restore +E(SPARC_RET_SINT16) + ldsh [%i2+2], %i0 + ret + restore +E(SPARC_RET_UINT32) + ld [%i2], %i0 + ret + restore +E(SP_V8_RET_CPLX16) + ld [%i2], %i0 + ret + restore +E(SPARC_RET_INT64) + ldd [%i2], %i0 + ret + restore +E(SPARC_RET_INT128) + ldd [%i2], %i0 + ldd [%i2+8], %i2 + ret + restore +E(SPARC_RET_F_8) + ld [%i2+7*4], %f7 + nop + ld [%i2+6*4], %f6 + nop +E(SPARC_RET_F_6) + ld [%i2+5*4], %f5 + nop + ld [%i2+4*4], %f4 + nop +E(SPARC_RET_F_4) + ld [%i2+3*4], %f3 + nop + ld [%i2+2*4], %f2 + nop +E(SPARC_RET_F_2) + ldd [%i2], %f0 + ret + restore +E(SP_V8_RET_CPLX8) + lduh [%i2], %i0 + ret + restore +E(SPARC_RET_F_1) + ld [%i2], %f0 + ret + restore + +.LUW8: + .size C(ffi_closure_v8), . - C(ffi_closure_v8) + +#ifdef HAVE_RO_EH_FRAME + .section ".eh_frame",#alloc +#else + .section ".eh_frame",#alloc,#write +#endif + +#ifdef HAVE_AS_SPARC_UA_PCREL +# define FDE_ADDR(X) %r_disp32(X) +#else +# define FDE_ADDR(X) X +#endif + + .align 4 +.LCIE: + .long .LECIE - .LSCIE ! CIE Length +.LSCIE: + .long 0 ! CIE Identifier Tag + .byte 1 ! CIE Version + .ascii "zR\0" ! CIE Augmentation + .byte 4 ! CIE Code Alignment Factor + .byte 0x7c ! CIE Data Alignment Factor + .byte 15 ! CIE RA Column + .byte 1 ! Augmentation size +#ifdef HAVE_AS_SPARC_UA_PCREL + .byte 0x1b ! FDE Encoding (pcrel sdata4) +#else + .byte 0x50 ! FDE Encoding (aligned absolute) +#endif + .byte 0xc, 14, 0 ! DW_CFA_def_cfa, %o6, offset 0 + .align 4 +.LECIE: + + .long .LEFDE1 - .LSFDE1 ! FDE Length +.LSFDE1: + .long .LSFDE1 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW0) ! Initial location + .long .LUW2 - .LUW0 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE1: + + .long .LEFDE2 - .LSFDE2 ! FDE Length +.LSFDE2: + .long .LSFDE2 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW3) ! Initial location + .long .LUW5 - .LUW3 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE2: + + .long .LEFDE3 - .LSFDE3 ! FDE Length +.LSFDE3: + .long .LSFDE3 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW6) ! Initial location + .long .LUW8 - .LUW6 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE3: + +#endif /* !SPARC64 */ +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v9.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v9.S new file mode 100644 index 0000000000..55f8f4324c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/sparc/v9.S @@ -0,0 +1,440 @@ +/* ----------------------------------------------------------------------- + v9.S - Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc. + + SPARC 64-bit Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#ifdef SPARC64 + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) + +#ifdef __USER_LABEL_PREFIX__ +# define C(Y) C1(__USER_LABEL_PREFIX__, Y) +#else +# define C(Y) Y +#endif +#define L(Y) C1(.L, Y) + +#if defined(__sun__) && defined(__svr4__) +# define E(INDEX) .align 16 +#else +# define E(INDEX) .align 16; .org 2b + INDEX * 16 +#endif + +#define STACK_BIAS 2047 + + .text + .align 8 + .globl C(ffi_call_v9) + .type C(ffi_call_v9),#function + FFI_HIDDEN(C(ffi_call_v9)) + +C(ffi_call_v9): +.LUW0: + save %sp, %o4, %sp +.LUW1: + mov %i0, %o0 ! copy cif + add %sp, STACK_BIAS+128+48, %o1 ! load args area + mov %i2, %o2 ! copy rvalue + call C(ffi_prep_args_v9) + mov %i3, %o3 ! copy avalue + + andcc %o0, SPARC_FLAG_FP_ARGS, %g0 ! need fp regs? + add %sp, 48, %sp ! deallocate prep frame + be,pt %xcc, 1f + mov %o0, %l0 ! save flags + + ldd [%sp+STACK_BIAS+128], %f0 ! load all fp arg regs + ldd [%sp+STACK_BIAS+128+8], %f2 + ldd [%sp+STACK_BIAS+128+16], %f4 + ldd [%sp+STACK_BIAS+128+24], %f6 + ldd [%sp+STACK_BIAS+128+32], %f8 + ldd [%sp+STACK_BIAS+128+40], %f10 + ldd [%sp+STACK_BIAS+128+48], %f12 + ldd [%sp+STACK_BIAS+128+56], %f14 + ldd [%sp+STACK_BIAS+128+64], %f16 + ldd [%sp+STACK_BIAS+128+72], %f18 + ldd [%sp+STACK_BIAS+128+80], %f20 + ldd [%sp+STACK_BIAS+128+88], %f22 + ldd [%sp+STACK_BIAS+128+96], %f24 + ldd [%sp+STACK_BIAS+128+104], %f26 + ldd [%sp+STACK_BIAS+128+112], %f28 + ldd [%sp+STACK_BIAS+128+120], %f30 + +1: ldx [%sp+STACK_BIAS+128], %o0 ! load all int arg regs + ldx [%sp+STACK_BIAS+128+8], %o1 + ldx [%sp+STACK_BIAS+128+16], %o2 + ldx [%sp+STACK_BIAS+128+24], %o3 + ldx [%sp+STACK_BIAS+128+32], %o4 + ldx [%sp+STACK_BIAS+128+40], %o5 + call %i1 + mov %i5, %g5 ! load static chain + +0: call 1f ! load pc in %o7 + and %l0, SPARC_FLAG_RET_MASK, %l1 +1: sll %l1, 4, %l1 + add %o7, %l1, %o7 ! o7 = 0b + ret_type*16 + jmp %o7+(2f-0b) + nop + + .align 16 +2: +E(SPARC_RET_VOID) + return %i7+8 + nop +E(SPARC_RET_STRUCT) + add %sp, STACK_BIAS-64+128+48, %l2 + sub %sp, 64, %sp + b 8f + stx %o0, [%l2] +E(SPARC_RET_UINT8) + and %o0, 0xff, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_SINT8) + sll %o0, 24, %o0 + sra %o0, 24, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_UINT16) + sll %o0, 16, %o0 + srl %o0, 16, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_SINT16) + sll %o0, 16, %o0 + sra %o0, 16, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_UINT32) + srl %o0, 0, %i0 + return %i7+8 + stx %o0, [%o2] +E(SP_V9_RET_SINT32) + sra %o0, 0, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_INT64) + stx %o0, [%i2] + return %i7+8 + nop +E(SPARC_RET_INT128) + stx %o0, [%i2] + stx %o1, [%i2+8] + return %i7+8 + nop +E(SPARC_RET_F_8) + st %f7, [%i2+7*4] + nop + st %f6, [%i2+6*4] + nop +E(SPARC_RET_F_6) + st %f5, [%i2+5*4] + nop + st %f4, [%i2+4*4] + nop +E(SPARC_RET_F_4) + std %f2, [%i2+2*4] + return %i7+8 + std %f0, [%o2] +E(SPARC_RET_F_2) + return %i7+8 + std %f0, [%o2] +E(SP_V9_RET_F_3) + st %f2, [%i2+2*4] + nop + st %f1, [%i2+1*4] + nop +E(SPARC_RET_F_1) + return %i7+8 + st %f0, [%o2] + + ! Finish the SPARC_RET_STRUCT sequence. + .align 8 +8: stx %o1, [%l2+8] + stx %o2, [%l2+16] + stx %o3, [%l2+24] + std %f0, [%l2+32] + std %f2, [%l2+40] + std %f4, [%l2+48] + std %f6, [%l2+56] + + ! Copy the structure into place. + srl %l0, SPARC_SIZEMASK_SHIFT, %o0 ! load size_mask + mov %i2, %o1 ! load dst + mov %l2, %o2 ! load src_gp + call C(ffi_struct_float_copy) + add %l2, 32, %o3 ! load src_fp + + return %i7+8 + nop + +.LUW2: + .size C(ffi_call_v9), . - C(ffi_call_v9) + + +#undef STACKFRAME +#define STACKFRAME 336 /* 16*8 register window + + 6*8 args backing store + + 20*8 locals */ +#define FP %fp+STACK_BIAS + +/* ffi_closure_v9(...) + + Receives the closure argument in %g1. */ + + .align 8 + .globl C(ffi_go_closure_v9) + .type C(ffi_go_closure_v9),#function + FFI_HIDDEN(C(ffi_go_closure_v9)) + +C(ffi_go_closure_v9): +.LUW3: + save %sp, -STACKFRAME, %sp +.LUW4: + ldx [%g5+8], %o0 + ldx [%g5+16], %o1 + b 0f + mov %g5, %o2 + +.LUW5: + .size C(ffi_go_closure_v9), . - C(ffi_go_closure_v9) + + .align 8 + .globl C(ffi_closure_v9) + .type C(ffi_closure_v9),#function + FFI_HIDDEN(C(ffi_closure_v9)) + +C(ffi_closure_v9): +.LUW6: + save %sp, -STACKFRAME, %sp +.LUW7: + ldx [%g1+FFI_TRAMPOLINE_SIZE], %o0 + ldx [%g1+FFI_TRAMPOLINE_SIZE+8], %o1 + ldx [%g1+FFI_TRAMPOLINE_SIZE+16], %o2 +0: + ! Store all of the potential argument registers in va_list format. + stx %i0, [FP+128+0] + stx %i1, [FP+128+8] + stx %i2, [FP+128+16] + stx %i3, [FP+128+24] + stx %i4, [FP+128+32] + stx %i5, [FP+128+40] + + ! Store possible floating point argument registers too. + std %f0, [FP-128] + std %f2, [FP-120] + std %f4, [FP-112] + std %f6, [FP-104] + std %f8, [FP-96] + std %f10, [FP-88] + std %f12, [FP-80] + std %f14, [FP-72] + std %f16, [FP-64] + std %f18, [FP-56] + std %f20, [FP-48] + std %f22, [FP-40] + std %f24, [FP-32] + std %f26, [FP-24] + std %f28, [FP-16] + std %f30, [FP-8] + + ! Call ffi_closure_sparc_inner to do the bulk of the work. + add %fp, STACK_BIAS-160, %o3 + add %fp, STACK_BIAS+128, %o4 + call C(ffi_closure_sparc_inner_v9) + add %fp, STACK_BIAS-128, %o5 + +0: call 1f ! load pc in %o7 + and %o0, SPARC_FLAG_RET_MASK, %o0 +1: sll %o0, 4, %o0 ! o2 = i2 * 16 + add %o7, %o0, %o7 ! o7 = 0b + i2*16 + jmp %o7+(2f-0b) + nop + + ! Note that we cannot load the data in the delay slot of + ! the return insn because the data is in the stack frame + ! that is deallocated by the return. + .align 16 +2: +E(SPARC_RET_VOID) + return %i7+8 + nop +E(SPARC_RET_STRUCT) + ldx [FP-160], %i0 + ldd [FP-160], %f0 + b 8f + ldx [FP-152], %i1 +E(SPARC_RET_UINT8) + ldub [FP-160+7], %i0 + return %i7+8 + nop +E(SPARC_RET_SINT8) + ldsb [FP-160+7], %i0 + return %i7+8 + nop +E(SPARC_RET_UINT16) + lduh [FP-160+6], %i0 + return %i7+8 + nop +E(SPARC_RET_SINT16) + ldsh [FP-160+6], %i0 + return %i7+8 + nop +E(SPARC_RET_UINT32) + lduw [FP-160+4], %i0 + return %i7+8 + nop +E(SP_V9_RET_SINT32) + ldsw [FP-160+4], %i0 + return %i7+8 + nop +E(SPARC_RET_INT64) + ldx [FP-160], %i0 + return %i7+8 + nop +E(SPARC_RET_INT128) + ldx [FP-160], %i0 + ldx [FP-160+8], %i1 + return %i7+8 + nop +E(SPARC_RET_F_8) + ld [FP-160+7*4], %f7 + nop + ld [FP-160+6*4], %f6 + nop +E(SPARC_RET_F_6) + ld [FP-160+5*4], %f5 + nop + ld [FP-160+4*4], %f4 + nop +E(SPARC_RET_F_4) + ldd [FP-160], %f0 + ldd [FP-160+8], %f2 + return %i7+8 + nop +E(SPARC_RET_F_2) + ldd [FP-160], %f0 + return %i7+8 + nop +E(SP_V9_RET_F_3) + ld [FP-160+2*4], %f2 + nop + ld [FP-160+1*4], %f1 + nop +E(SPARC_RET_F_1) + ld [FP-160], %f0 + return %i7+8 + nop + + ! Finish the SPARC_RET_STRUCT sequence. + .align 8 +8: ldd [FP-152], %f2 + ldx [FP-144], %i2 + ldd [FP-144], %f4 + ldx [FP-136], %i3 + ldd [FP-136], %f6 + return %i7+8 + nop + +.LUW8: + .size C(ffi_closure_v9), . - C(ffi_closure_v9) + +#ifdef HAVE_RO_EH_FRAME + .section ".eh_frame",#alloc +#else + .section ".eh_frame",#alloc,#write +#endif + +#ifdef HAVE_AS_SPARC_UA_PCREL +# define FDE_RANGE(B, E) .long %r_disp32(B), E - B +#else +# define FDE_RANGE(B, E) .align 8; .xword B, E - B +#endif + + .align 8 +.LCIE: + .long .LECIE - .LSCIE ! CIE Length +.LSCIE: + .long 0 ! CIE Identifier Tag + .byte 1 ! CIE Version + .ascii "zR\0" ! CIE Augmentation + .byte 4 ! CIE Code Alignment Factor + .byte 0x78 ! CIE Data Alignment Factor + .byte 15 ! CIE RA Column + .byte 1 ! Augmentation size +#ifdef HAVE_AS_SPARC_UA_PCREL + .byte 0x1b ! FDE Encoding (pcrel sdata4) +#else + .byte 0x50 ! FDE Encoding (aligned absolute) +#endif + .byte 0xc, 14, 0xff, 0xf ! DW_CFA_def_cfa, %o6, offset 0x7ff + .align 8 +.LECIE: + + .long .LEFDE1 - .LSFDE1 ! FDE Length +.LSFDE1: + .long .LSFDE1 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW0, .LUW2) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE1: + + .long .LEFDE2 - .LSFDE2 ! FDE Length +.LSFDE2: + .long .LSFDE2 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW3, .LUW5) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE2: + + .long .LEFDE3 - .LSFDE3 ! FDE Length +.LSFDE3: + .long .LSFDE3 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW6, .LUW8) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE3: + +#endif /* SPARC64 */ +#ifdef __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffi.c new file mode 100644 index 0000000000..3a94469c7f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffi.c @@ -0,0 +1,355 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Tilera Corp. + + TILE Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +/* The first 10 registers are used to pass arguments and return values. */ +#define NUM_ARG_REGS 10 + +/* Performs a raw function call with the given NUM_ARG_REGS register arguments + and the specified additional stack arguments (if any). */ +extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS], + const ffi_sarg *stack_args, + size_t stack_args_bytes, + void (*fnaddr)(void)) + FFI_HIDDEN; + +/* This handles the raw call from the closure stub, cleaning up the + parameters and delegating to ffi_closure_tile_inner. */ +extern void ffi_closure_tile(void) FFI_HIDDEN; + + +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* We always allocate room for all registers. Even if we don't + use them as parameters, they get returned in the same array + as struct return values so we need to make room. */ + if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG) + cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG; + + if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG) + cif->flags = FFI_TYPE_STRUCT; + else + cif->flags = FFI_TYPE_INT; + + /* Nothing to do. */ + return FFI_OK; +} + + +static long +assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type, + int write_to_reg) +{ + switch (type->type) + { + case FFI_TYPE_SINT8: + *out = *(SINT8 *)in; + return 1; + + case FFI_TYPE_UINT8: + *out = *(UINT8 *)in; + return 1; + + case FFI_TYPE_SINT16: + *out = *(SINT16 *)in; + return 1; + + case FFI_TYPE_UINT16: + *out = *(UINT16 *)in; + return 1; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#ifndef __LP64__ + case FFI_TYPE_POINTER: +#endif + /* Note that even unsigned 32-bit quantities are sign extended + on tilegx when stored in a register. */ + *out = *(SINT32 *)in; + return 1; + + case FFI_TYPE_FLOAT: +#ifdef __tilegx__ + if (write_to_reg) + { + /* Properly sign extend the value. */ + union { float f; SINT32 s32; } val; + val.f = *(float *)in; + *out = val.s32; + } + else +#endif + { + *(float *)out = *(float *)in; + } + return 1; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: +#ifdef __LP64__ + case FFI_TYPE_POINTER: +#endif + *(UINT64 *)out = *(UINT64 *)in; + return sizeof(UINT64) / FFI_SIZEOF_ARG; + + case FFI_TYPE_STRUCT: + memcpy(out, in, type->size); + return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + + case FFI_TYPE_VOID: + /* Must be a return type. Nothing to do. */ + return 0; + + default: + FFI_ASSERT(0); + return -1; + } +} + + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_sarg * const arg_mem = alloca(cif->bytes); + ffi_sarg * const reg_args = arg_mem; + ffi_sarg * const stack_args = ®_args[NUM_ARG_REGS]; + ffi_sarg *argp = arg_mem; + ffi_type ** const arg_types = cif->arg_types; + const long num_args = cif->nargs; + long i; + + if (cif->flags == FFI_TYPE_STRUCT) + { + /* Pass a hidden pointer to the return value. We make sure there + is scratch space for the callee to store the return value even if + our caller doesn't care about it. */ + *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size)); + + /* No more work needed to return anything. */ + rvalue = NULL; + } + + for (i = 0; i < num_args; i++) + { + ffi_type *type = arg_types[i]; + void * const arg_in = avalue[i]; + ptrdiff_t arg_word = argp - arg_mem; + +#ifndef __tilegx__ + /* Doubleword-aligned values are always in an even-number register + pair, or doubleword-aligned stack slot if out of registers. */ + long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); + argp += align; + arg_word += align; +#endif + + if (type->type == FFI_TYPE_STRUCT) + { + const size_t arg_size_in_words = + (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + + if (arg_word < NUM_ARG_REGS && + arg_word + arg_size_in_words > NUM_ARG_REGS) + { + /* Args are not allowed to span registers and the stack. */ + argp = stack_args; + } + + memcpy(argp, arg_in, type->size); + argp += arg_size_in_words; + } + else + { + argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1); + } + } + + /* Actually do the call. */ + ffi_call_tile(reg_args, stack_args, + cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn); + + if (rvalue != NULL) + assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0); +} + + +/* Template code for closure. */ +extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN; + + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ +#ifdef __tilegx__ + /* TILE-Gx */ + SINT64 c; + SINT64 h; + int s; + UINT64 *out; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + out = (UINT64 *)closure->tramp; + + c = (intptr_t)closure; + h = (intptr_t)ffi_closure_tile; + s = 0; + + /* Find the smallest shift count that doesn't lose information + (i.e. no need to explicitly insert high bits of the address that + are just the sign extension of the low bits). */ + while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s)) + s += 16; + +#define OPS(a, b, shift) \ + (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift))) + + /* Emit the moveli. */ + *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s); + for (s -= 16; s >= 0; s -= 16) + *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s); + +#undef OPS + + *out++ = ffi_template_tramp_tile[2]; + +#else + /* TILEPro */ + UINT64 *out; + intptr_t delta; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + out = (UINT64 *)closure->tramp; + delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc; + + *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3); +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + invalidate_icache(closure->tramp, (char *)out - closure->tramp, + getpagesize()); + + return FFI_OK; +} + + +/* This is called by the assembly wrapper for closures. This does + all of the work. On entry reg_args[0] holds the values the registers + had when the closure was invoked. On return reg_args[1] holds the register + values to be returned to the caller (many of which may be garbage). */ +void FFI_HIDDEN +ffi_closure_tile_inner(ffi_closure *closure, + ffi_sarg reg_args[2][NUM_ARG_REGS], + ffi_sarg *stack_args) +{ + ffi_cif * const cif = closure->cif; + void ** const avalue = alloca(cif->nargs * sizeof(void *)); + void *rvalue; + ffi_type ** const arg_types = cif->arg_types; + ffi_sarg * const reg_args_in = reg_args[0]; + ffi_sarg * const reg_args_out = reg_args[1]; + ffi_sarg * argp; + long i, arg_word, nargs = cif->nargs; + /* Use a union to guarantee proper alignment for double. */ + union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret; + + /* Start out reading register arguments. */ + argp = reg_args_in; + + /* Copy the caller's structure return address to that the closure + returns the data directly to the caller. */ + if (cif->flags == FFI_TYPE_STRUCT) + { + /* Return by reference via hidden pointer. */ + rvalue = (void *)(intptr_t)*argp++; + arg_word = 1; + } + else + { + /* Return the value in registers. */ + rvalue = &closure_ret; + arg_word = 0; + } + + /* Grab the addresses of the arguments. */ + for (i = 0; i < nargs; i++) + { + ffi_type * const type = arg_types[i]; + const size_t arg_size_in_words = + (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + +#ifndef __tilegx__ + /* Doubleword-aligned values are always in an even-number register + pair, or doubleword-aligned stack slot if out of registers. */ + long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); + argp += align; + arg_word += align; +#endif + + if (arg_word == NUM_ARG_REGS || + (arg_word < NUM_ARG_REGS && + arg_word + arg_size_in_words > NUM_ARG_REGS)) + { + /* Switch to reading arguments from the stack. */ + argp = stack_args; + arg_word = NUM_ARG_REGS; + } + + avalue[i] = argp; + argp += arg_size_in_words; + arg_word += arg_size_in_words; + } + + /* Invoke the closure. */ + closure->fun(cif, rvalue, avalue, closure->user_data); + + if (cif->flags != FFI_TYPE_STRUCT) + { + /* Canonicalize for register representation. */ + assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffitarget.h new file mode 100644 index 0000000000..679fb5d904 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/ffitarget.h @@ -0,0 +1,65 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Tilera Corp. + Target configuration macros for TILE. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM + +#include + +typedef uint_reg_t ffi_arg; +typedef int_reg_t ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_UNIX, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ +#define FFI_CLOSURES 1 + +#ifdef __tilegx__ +/* We always pass 8-byte values, even in -m32 mode. */ +# define FFI_SIZEOF_ARG 8 +# ifdef __LP64__ +# define FFI_TRAMPOLINE_SIZE (8 * 5) /* 5 bundles */ +# else +# define FFI_TRAMPOLINE_SIZE (8 * 3) /* 3 bundles */ +# endif +#else +# define FFI_SIZEOF_ARG 4 +# define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */ +#endif +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/tile.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/tile.S new file mode 100644 index 0000000000..d1f82cb3db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/tile/tile.S @@ -0,0 +1,360 @@ +/* ----------------------------------------------------------------------- + tile.S - Copyright (c) 2011 Tilera Corp. + + Tilera TILEPro and TILE-Gx Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Number of bytes in a register. */ +#define REG_SIZE FFI_SIZEOF_ARG + +/* Number of bytes in stack linkage area for backtracing. + + A note about the ABI: on entry to a procedure, sp points to a stack + slot where it must spill the return address if it's not a leaf. + REG_SIZE bytes beyond that is a slot owned by the caller which + contains the sp value that the caller had when it was originally + entered (i.e. the caller's frame pointer). */ +#define LINKAGE_SIZE (2 * REG_SIZE) + +/* The first 10 registers are used to pass arguments and return values. */ +#define NUM_ARG_REGS 10 + +#ifdef __tilegx__ +#define SW st +#define LW ld +#define BGZT bgtzt +#else +#define SW sw +#define LW lw +#define BGZT bgzt +#endif + + +/* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS], + const int_reg_t *stack_args, + unsigned long stack_args_bytes, + void (*fnaddr)(void)); + + On entry, REG_ARGS contain the outgoing register values, + and STACK_ARGS contains STACK_ARG_BYTES of additional values + to be passed on the stack. If STACK_ARG_BYTES is zero, then + STACK_ARGS is ignored. + + When the invoked function returns, the values of r0-r9 are + blindly stored back into REG_ARGS for the caller to examine. */ + + .section .text.ffi_call_tile, "ax", @progbits + .align 8 + .globl ffi_call_tile + FFI_HIDDEN(ffi_call_tile) +ffi_call_tile: + +/* Incoming arguments. */ +#define REG_ARGS r0 +#define INCOMING_STACK_ARGS r1 +#define STACK_ARG_BYTES r2 +#define ORIG_FNADDR r3 + +/* Temporary values. */ +#define FRAME_SIZE r10 +#define TMP r11 +#define TMP2 r12 +#define OUTGOING_STACK_ARGS r13 +#define REG_ADDR_PTR r14 +#define RETURN_REG_ADDR r15 +#define FNADDR r16 + + .cfi_startproc + { + /* Save return address. */ + SW sp, lr + .cfi_offset lr, 0 + /* Prepare to spill incoming r52. */ + addi TMP, sp, -REG_SIZE + /* Increase frame size to have room to spill r52 and REG_ARGS. + The +7 is to round up mod 8. */ + addi FRAME_SIZE, STACK_ARG_BYTES, \ + REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7 + } + { + /* Round stack frame size to a multiple of 8 to satisfy ABI. */ + andi FRAME_SIZE, FRAME_SIZE, -8 + /* Compute where to spill REG_ARGS value. */ + addi TMP2, sp, -(REG_SIZE * 2) + } + { + /* Spill incoming r52. */ + SW TMP, r52 + .cfi_offset r52, -REG_SIZE + /* Set up our frame pointer. */ + move r52, sp + .cfi_def_cfa_register r52 + /* Push stack frame. */ + sub sp, sp, FRAME_SIZE + } + { + /* Prepare to set up stack linkage. */ + addi TMP, sp, REG_SIZE + /* Prepare to memcpy stack args. */ + addi OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE + /* Save REG_ARGS which we will need after we call the subroutine. */ + SW TMP2, REG_ARGS + } + { + /* Set up linkage info to hold incoming stack pointer. */ + SW TMP, r52 + } + { + /* Skip stack args memcpy if we don't have any stack args (common). */ + blezt STACK_ARG_BYTES, .Ldone_stack_args_memcpy + } + +.Lmemcpy_stack_args: + { + /* Load incoming argument from stack_args. */ + LW TMP, INCOMING_STACK_ARGS + addi INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE + } + { + /* Store stack argument into outgoing stack argument area. */ + SW OUTGOING_STACK_ARGS, TMP + addi OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE + addi STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE + } + { + BGZT STACK_ARG_BYTES, .Lmemcpy_stack_args + } +.Ldone_stack_args_memcpy: + + { + /* Copy aside ORIG_FNADDR so we can overwrite its register. */ + move FNADDR, ORIG_FNADDR + /* Prepare to load argument registers. */ + addi REG_ADDR_PTR, r0, REG_SIZE + /* Load outgoing r0. */ + LW r0, r0 + } + + /* Load up argument registers from the REG_ARGS array. */ +#define LOAD_REG(REG, PTR) \ + { \ + LW REG, PTR ; \ + addi PTR, PTR, REG_SIZE \ + } + + LOAD_REG(r1, REG_ADDR_PTR) + LOAD_REG(r2, REG_ADDR_PTR) + LOAD_REG(r3, REG_ADDR_PTR) + LOAD_REG(r4, REG_ADDR_PTR) + LOAD_REG(r5, REG_ADDR_PTR) + LOAD_REG(r6, REG_ADDR_PTR) + LOAD_REG(r7, REG_ADDR_PTR) + LOAD_REG(r8, REG_ADDR_PTR) + LOAD_REG(r9, REG_ADDR_PTR) + + { + /* Call the subroutine. */ + jalr FNADDR + } + + { + /* Restore original lr. */ + LW lr, r52 + /* Prepare to recover ARGS, which we spilled earlier. */ + addi TMP, r52, -(2 * REG_SIZE) + } + { + /* Restore ARGS, so we can fill it in with the return regs r0-r9. */ + LW RETURN_REG_ADDR, TMP + /* Prepare to restore original r52. */ + addi TMP, r52, -REG_SIZE + } + + { + /* Pop stack frame. */ + move sp, r52 + /* Restore original r52. */ + LW r52, TMP + } + +#define STORE_REG(REG, PTR) \ + { \ + SW PTR, REG ; \ + addi PTR, PTR, REG_SIZE \ + } + + /* Return all register values by reference. */ + STORE_REG(r0, RETURN_REG_ADDR) + STORE_REG(r1, RETURN_REG_ADDR) + STORE_REG(r2, RETURN_REG_ADDR) + STORE_REG(r3, RETURN_REG_ADDR) + STORE_REG(r4, RETURN_REG_ADDR) + STORE_REG(r5, RETURN_REG_ADDR) + STORE_REG(r6, RETURN_REG_ADDR) + STORE_REG(r7, RETURN_REG_ADDR) + STORE_REG(r8, RETURN_REG_ADDR) + STORE_REG(r9, RETURN_REG_ADDR) + + { + jrp lr + } + + .cfi_endproc + .size ffi_call_tile, .-ffi_call_tile + +/* ffi_closure_tile(...) + + On entry, lr points to the closure plus 8 bytes, and r10 + contains the actual return address. + + This function simply dumps all register parameters into a stack array + and passes the closure, the registers array, and the stack arguments + to C code that does all of the actual closure processing. */ + + .section .text.ffi_closure_tile, "ax", @progbits + .align 8 + .globl ffi_closure_tile + FFI_HIDDEN(ffi_closure_tile) + + .cfi_startproc +/* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */ +#define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8) +ffi_closure_tile: + { +#ifdef __tilegx__ + st sp, lr + .cfi_offset lr, 0 +#else + /* Save return address (in r10 due to closure stub wrapper). */ + SW sp, r10 + .cfi_return_column r10 + .cfi_offset r10, 0 +#endif + /* Compute address for stack frame linkage. */ + addli r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) + } + { + /* Save incoming stack pointer in linkage area. */ + SW r10, sp + .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) + /* Push a new stack frame. */ + addli sp, sp, -CLOSURE_FRAME_SIZE + .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE + } + + { + /* Create pointer to where to start spilling registers. */ + addi r10, sp, LINKAGE_SIZE + } + + /* Spill all the incoming registers. */ + STORE_REG(r0, r10) + STORE_REG(r1, r10) + STORE_REG(r2, r10) + STORE_REG(r3, r10) + STORE_REG(r4, r10) + STORE_REG(r5, r10) + STORE_REG(r6, r10) + STORE_REG(r7, r10) + STORE_REG(r8, r10) + { + /* Save r9. */ + SW r10, r9 +#ifdef __tilegx__ + /* Pointer to closure is passed in r11. */ + move r0, r11 +#else + /* Compute pointer to the closure object. Because the closure + starts with a "jal ffi_closure_tile", we can just take the + value of lr (a phony return address pointing into the closure) + and subtract 8. */ + addi r0, lr, -8 +#endif + /* Compute a pointer to the register arguments we just spilled. */ + addi r1, sp, LINKAGE_SIZE + } + { + /* Compute a pointer to the extra stack arguments (if any). */ + addli r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE + /* Call C code to deal with all of the grotty details. */ + jal ffi_closure_tile_inner + } + { + addli r10, sp, CLOSURE_FRAME_SIZE + } + { + /* Restore the return address. */ + LW lr, r10 + /* Compute pointer to registers array. */ + addli r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE) + } + /* Return all the register values, which C code may have set. */ + LOAD_REG(r0, r10) + LOAD_REG(r1, r10) + LOAD_REG(r2, r10) + LOAD_REG(r3, r10) + LOAD_REG(r4, r10) + LOAD_REG(r5, r10) + LOAD_REG(r6, r10) + LOAD_REG(r7, r10) + LOAD_REG(r8, r10) + LOAD_REG(r9, r10) + { + /* Pop the frame. */ + addli sp, sp, CLOSURE_FRAME_SIZE + jrp lr + } + + .cfi_endproc + .size ffi_closure_tile, . - ffi_closure_tile + + +/* What follows are code template instructions that get copied to the + closure trampoline by ffi_prep_closure_loc. The zeroed operands + get replaced by their proper values at runtime. */ + + .section .text.ffi_template_tramp_tile, "ax", @progbits + .align 8 + .globl ffi_template_tramp_tile + FFI_HIDDEN(ffi_template_tramp_tile) +ffi_template_tramp_tile: +#ifdef __tilegx__ + { + moveli r11, 0 /* backpatched to address of containing closure. */ + moveli r10, 0 /* backpatched to ffi_closure_tile. */ + } + /* Note: the following bundle gets generated multiple times + depending on the pointer value (esp. useful for -m32 mode). */ + { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 } + { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 } +#else + /* 'jal .' yields a PC-relative offset of zero so we can OR in the + right offset at runtime. */ + { move r10, lr ; jal . /* ffi_closure_tile */ } +#endif + + .size ffi_template_tramp_tile, . - ffi_template_tramp_tile diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/types.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/types.c new file mode 100644 index 0000000000..9ec27f6cf3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/types.c @@ -0,0 +1,108 @@ +/* ----------------------------------------------------------------------- + types.c - Copyright (c) 1996, 1998 Red Hat, Inc. + + Predefined ffi_types needed by libffi. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +/* Hide the basic type definitions from the header file, so that we + can redefine them here as "const". */ +#define LIBFFI_HIDE_BASIC_TYPES + +#include +#include + +/* Type definitions */ + +#define FFI_TYPEDEF(name, type, id, maybe_const)\ +struct struct_align_##name { \ + char c; \ + type x; \ +}; \ +FFI_EXTERN \ +maybe_const ffi_type ffi_type_##name = { \ + sizeof(type), \ + offsetof(struct struct_align_##name, x), \ + id, NULL \ +} + +#define FFI_COMPLEX_TYPEDEF(name, type, maybe_const) \ +static ffi_type *ffi_elements_complex_##name [2] = { \ + (ffi_type *)(&ffi_type_##name), NULL \ +}; \ +struct struct_align_complex_##name { \ + char c; \ + _Complex type x; \ +}; \ +FFI_EXTERN \ +maybe_const ffi_type ffi_type_complex_##name = { \ + sizeof(_Complex type), \ + offsetof(struct struct_align_complex_##name, x), \ + FFI_TYPE_COMPLEX, \ + (ffi_type **)ffi_elements_complex_##name \ +} + +/* Size and alignment are fake here. They must not be 0. */ +FFI_EXTERN const ffi_type ffi_type_void = { + 1, 1, FFI_TYPE_VOID, NULL +}; + +FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8, const); +FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8, const); +FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16, const); +FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16, const); +FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32, const); +FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32, const); +FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64, const); +FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64, const); + +FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER, const); + +FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT, const); +FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const); + +#if !defined HAVE_LONG_DOUBLE_VARIANT || defined __alpha__ +#define FFI_LDBL_CONST const +#else +#define FFI_LDBL_CONST +#endif + +#ifdef __alpha__ +/* Even if we're not configured to default to 128-bit long double, + maintain binary compatibility, as -mlong-double-128 can be used + at any time. */ +/* Validate the hard-coded number below. */ +# if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL }; +#elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST); +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_COMPLEX_TYPEDEF(float, float, const); +FFI_COMPLEX_TYPEDEF(double, double, const); +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST); +#endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/elfbsd.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/elfbsd.S new file mode 100644 index 0000000000..01ca313402 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/elfbsd.S @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * vax Foreign Function Interface + */ + +#define LIBFFI_ASM +#include +#include + + .text + +/* + * void * %r0 + * ffi_call_elfbsd(extended_cif *ecif, 4(%ap) + * unsigned bytes, 8(%ap) + * unsigned flags, 12(%ap) + * void *rvalue, 16(%ap) + * void (*fn)()); 20(%ap) + */ + .globl ffi_call_elfbsd + .type ffi_call_elfbsd,@function + .align 2 +ffi_call_elfbsd: + .word 0x00c # save R2 and R3 + + # Allocate stack space for the args + subl2 8(%ap), %sp + + # Call ffi_prep_args + pushl %sp + pushl 4(%ap) + calls $2, ffi_prep_args + + # Get function pointer + movl 20(%ap), %r1 + + # Build a CALLS frame + ashl $-2, 8(%ap), %r0 + pushl %r0 # argument stack usage + movl %sp, %r0 # future %ap + # saved registers + bbc $11, 0(%r1), 1f + pushl %r11 +1: bbc $10, 0(%r1), 1f + pushl %r10 +1: bbc $9, 0(%r1), 1f + pushl %r9 +1: bbc $8, 0(%r1), 1f + pushl %r8 +1: bbc $7, 0(%r1), 1f + pushl %r7 +1: bbc $6, 0(%r1), 1f + pushl %r6 +1: bbc $5, 0(%r1), 1f + pushl %r5 +1: bbc $4, 0(%r1), 1f + pushl %r4 +1: bbc $3, 0(%r1), 1f + pushl %r3 +1: bbc $2, 0(%r1), 1f + pushl %r2 +1: + pushal 9f + pushl %fp + pushl %ap + movl 16(%ap), %r3 # struct return address, if needed + movl %r0, %ap + movzwl 4(%fp), %r0 # previous PSW, without the saved registers mask + bisl2 $0x20000000, %r0 # calls frame + movzwl 0(%r1), %r2 + bicw2 $0xf003, %r2 # only keep R11-R2 + ashl $16, %r2, %r2 + bisl2 %r2, %r0 # saved register mask of the called function + pushl %r0 + pushl $0 + movl %sp, %fp + + # Invoke the function + pushal 2(%r1) # skip procedure entry mask + movl %r3, %r1 + bicpsw $0x000f + rsb + +9: + # Copy return value if necessary + tstl 16(%ap) + jeql 9f + movl 16(%ap), %r2 + + bbc $0, 12(%ap), 1f # CIF_FLAGS_CHAR + movb %r0, 0(%r2) + brb 9f +1: + bbc $1, 12(%ap), 1f # CIF_FLAGS_SHORT + movw %r0, 0(%r2) + brb 9f +1: + bbc $2, 12(%ap), 1f # CIF_FLAGS_INT + movl %r0, 0(%r2) + brb 9f +1: + bbc $3, 12(%ap), 1f # CIF_FLAGS_DINT + movq %r0, 0(%r2) + brb 9f +1: + movl %r1, %r0 # might have been a struct + #brb 9f + +9: + ret + +/* + * ffi_closure_elfbsd(void); + * invoked with %r0: ffi_closure *closure + */ + .globl ffi_closure_elfbsd + .type ffi_closure_elfbsd, @function + .align 2 +ffi_closure_elfbsd: + .word 0 + + # Allocate room on stack for return value + subl2 $8, %sp + + # Invoke the closure function + pushal 4(%ap) # calling stack + pushal 4(%sp) # return value + pushl %r0 # closure + calls $3, ffi_closure_elfbsd_inner + + # Copy return value if necessary + bitb $1, %r0 # CIF_FLAGS_CHAR + beql 1f + movb 0(%sp), %r0 + brb 9f +1: + bitb $2, %r0 # CIF_FLAGS_SHORT + beql 1f + movw 0(%sp), %r0 + brb 9f +1: + bitb $4, %r0 # CIF_FLAGS_INT + beql 1f + movl 0(%sp), %r0 + brb 9f +1: + bitb $8, %r0 # CIF_FLAGS_DINT + beql 1f + movq 0(%sp), %r0 + #brb 9f +1: + +9: + ret + +/* + * ffi_closure_struct_elfbsd(void); + * invoked with %r0: ffi_closure *closure + * %r1: struct return address + */ + .globl ffi_closure_struct_elfbsd + .type ffi_closure_struct_elfbsd, @function + .align 2 +ffi_closure_struct_elfbsd: + .word 0 + + # Invoke the closure function + pushal 4(%ap) # calling stack + pushl %r1 # return value + pushl %r0 # closure + calls $3, ffi_closure_elfbsd_inner + + ret diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffi.c new file mode 100644 index 0000000000..e52caec86d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffi.c @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * vax Foreign Function Interface + * + * This file attempts to provide all the FFI entry points which can reliably + * be implemented in C. + */ + +#include +#include + +#include +#include + +#define CIF_FLAGS_CHAR 1 /* for struct only */ +#define CIF_FLAGS_SHORT 2 /* for struct only */ +#define CIF_FLAGS_INT 4 +#define CIF_FLAGS_DINT 8 + +/* + * Foreign Function Interface API + */ + +void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *, + void (*) ()); +void *ffi_prep_args (extended_cif *ecif, void *stack); + +void * +ffi_prep_args (extended_cif *ecif, void *stack) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + void *struct_value_ptr; + + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT + && !ecif->cif->flags) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + i != 0; + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof (int)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else + { + memcpy (argp, *p_argv, z); + + /* Align if necessary. */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } + + return struct_value_ptr; +} + +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && + cif->rtype->elements[1]) + { + cif->flags = 0; + break; + } + + if (cif->rtype->size == sizeof (char)) + cif->flags = CIF_FLAGS_CHAR; + else if (cif->rtype->size == sizeof (short)) + cif->flags = CIF_FLAGS_SHORT; + else if (cif->rtype->size == sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else if (cif->rtype->size == 2 * sizeof (int)) + cif->flags = CIF_FLAGS_DINT; + else + cif->flags = 0; + break; + + default: + if (cif->rtype->size <= sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else + cif->flags = CIF_FLAGS_DINT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && cif->flags == 0) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_ELFBSD: + ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/* + * Closure API + */ + +void ffi_closure_elfbsd (void); +void ffi_closure_struct_elfbsd (void); +unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *); + +static void +ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp) +{ + unsigned int i; + void **p_argv; + ffi_type **p_arg; + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + *p_argv = stackp; + + /* Align if necessary */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + stackp += z; + } +} + +unsigned int +ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void **) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_closure_elfbsd (cif, arg_area, stack); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + char *tramp = (char *) codeloc; + void *fn; + + FFI_ASSERT (cif->abi == FFI_ELFBSD); + + /* entry mask */ + *(unsigned short *)(tramp + 0) = 0x0000; + /* movl #closure, r0 */ + tramp[2] = 0xd0; + tramp[3] = 0x8f; + *(unsigned int *)(tramp + 4) = (unsigned int) closure; + tramp[8] = 0x50; + + if (cif->rtype->type == FFI_TYPE_STRUCT + && !cif->flags) + fn = &ffi_closure_struct_elfbsd; + else + fn = &ffi_closure_elfbsd; + + /* jmpl #fn */ + tramp[9] = 0x17; + tramp[10] = 0xef; + *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 - + (unsigned int)tramp - 9 - 6; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffitarget.h new file mode 100644 index 0000000000..2fc94881ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/vax/ffitarget.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * vax Foreign Function Interface + */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_ELFBSD, + FFI_DEFAULT_ABI = FFI_ELFBSD, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 15 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/asmnames.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/asmnames.h new file mode 100644 index 0000000000..7551021e17 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/asmnames.h @@ -0,0 +1,30 @@ +#ifndef ASMNAMES_H +#define ASMNAMES_H + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) +#ifdef __USER_LABEL_PREFIX__ +# define C(X) C1(__USER_LABEL_PREFIX__, X) +#else +# define C(X) X +#endif + +#ifdef __APPLE__ +# define L(X) C1(L, X) +#else +# define L(X) C1(.L, X) +#endif + +#if defined(__ELF__) && defined(__PIC__) +# define PLT(X) X@PLT +#else +# define PLT(X) X +#endif + +#ifdef __ELF__ +# define ENDF(X) .type X,@function; .size X, . - X +#else +# define ENDF(X) +#endif + +#endif /* ASMNAMES_H */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi.c new file mode 100644 index 0000000000..021f6832a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi.c @@ -0,0 +1,753 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2017 Anthony Green + Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. + Copyright (c) 2002 Ranjit Mathew + Copyright (c) 2002 Bo Thorsen + Copyright (c) 2002 Roger Sayle + Copyright (C) 2008, 2010 Free Software Foundation, Inc. + + x86 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef __x86_64__ +#include +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 80-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +#if defined(__GNUC__) && !defined(__declspec) +# define __declspec(x) __attribute__((x)) +#endif + +/* Perform machine dependent cif processing. */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t bytes = 0; + int i, n, flags, cabi = cif->abi; + + switch (cabi) + { + case FFI_SYSV: + case FFI_STDCALL: + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_MS_CDECL: + case FFI_PASCAL: + case FFI_REGISTER: + break; + default: + return FFI_BAD_ABI; + } + + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + flags = X86_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = X86_RET_FLOAT; + break; + case FFI_TYPE_DOUBLE: + flags = X86_RET_DOUBLE; + break; + case FFI_TYPE_LONGDOUBLE: + flags = X86_RET_LDOUBLE; + break; + case FFI_TYPE_UINT8: + flags = X86_RET_UINT8; + break; + case FFI_TYPE_UINT16: + flags = X86_RET_UINT16; + break; + case FFI_TYPE_SINT8: + flags = X86_RET_SINT8; + break; + case FFI_TYPE_SINT16: + flags = X86_RET_SINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + flags = X86_RET_INT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = X86_RET_INT64; + break; + case FFI_TYPE_STRUCT: +#ifndef X86 + /* ??? This should be a different ABI rather than an ifdef. */ + if (cif->rtype->size == 1) + flags = X86_RET_STRUCT_1B; + else if (cif->rtype->size == 2) + flags = X86_RET_STRUCT_2B; + else if (cif->rtype->size == 4) + flags = X86_RET_INT32; + else if (cif->rtype->size == 8) + flags = X86_RET_INT64; + else +#endif + { + do_struct: + switch (cabi) + { + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_STDCALL: + case FFI_MS_CDECL: + flags = X86_RET_STRUCTARG; + break; + default: + flags = X86_RET_STRUCTPOP; + break; + } + /* Allocate space for return value pointer. */ + bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG); + } + break; + case FFI_TYPE_COMPLEX: + switch (cif->rtype->elements[0]->type) + { + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + goto do_struct; + case FFI_TYPE_FLOAT: + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + flags = X86_RET_INT64; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + flags = X86_RET_INT32; + break; + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + flags = X86_RET_STRUCT_2B; + break; + default: + return FFI_BAD_TYPEDEF; + } + break; + default: + return FFI_BAD_TYPEDEF; + } + cif->flags = flags; + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *t = cif->arg_types[i]; + + bytes = FFI_ALIGN (bytes, t->alignment); + bytes += FFI_ALIGN (t->size, FFI_SIZEOF_ARG); + } + cif->bytes = FFI_ALIGN (bytes, 16); + + return FFI_OK; +} + +static ffi_arg +extend_basic_type(void *arg, int type) +{ + switch (type) + { + case FFI_TYPE_SINT8: + return *(SINT8 *)arg; + case FFI_TYPE_UINT8: + return *(UINT8 *)arg; + case FFI_TYPE_SINT16: + return *(SINT16 *)arg; + case FFI_TYPE_UINT16: + return *(UINT16 *)arg; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + return *(UINT32 *)arg; + + default: + abort(); + } +} + +struct call_frame +{ + void *ebp; /* 0 */ + void *retaddr; /* 4 */ + void (*fn)(void); /* 8 */ + int flags; /* 12 */ + void *rvalue; /* 16 */ + unsigned regs[3]; /* 20-28 */ +}; + +struct abi_params +{ + int dir; /* parameter growth direction */ + int static_chain; /* the static chain register used by gcc */ + int nregs; /* number of register parameters */ + int regs[3]; +}; + +static const struct abi_params abi_params[FFI_LAST_ABI] = { + [FFI_SYSV] = { 1, R_ECX, 0 }, + [FFI_THISCALL] = { 1, R_EAX, 1, { R_ECX } }, + [FFI_FASTCALL] = { 1, R_EAX, 2, { R_ECX, R_EDX } }, + [FFI_STDCALL] = { 1, R_ECX, 0 }, + [FFI_PASCAL] = { -1, R_ECX, 0 }, + /* ??? No defined static chain; gcc does not support REGISTER. */ + [FFI_REGISTER] = { -1, R_ECX, 3, { R_EAX, R_EDX, R_ECX } }, + [FFI_MS_CDECL] = { 1, R_ECX, 0 } +}; + +#ifdef HAVE_FASTCALL + #ifdef _MSC_VER + #define FFI_DECLARE_FASTCALL __fastcall + #else + #define FFI_DECLARE_FASTCALL __declspec(fastcall) + #endif +#else + #define FFI_DECLARE_FASTCALL +#endif + +extern void FFI_DECLARE_FASTCALL ffi_call_i386(struct call_frame *, char *) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t rsize, bytes; + struct call_frame *frame; + char *stack, *argp; + ffi_type **arg_types; + int flags, cabi, i, n, dir, narg_reg; + const struct abi_params *pabi; + + flags = cif->flags; + cabi = cif->abi; + pabi = &abi_params[cabi]; + dir = pabi->dir; + + rsize = 0; + if (rvalue == NULL) + { + switch (flags) + { + case X86_RET_FLOAT: + case X86_RET_DOUBLE: + case X86_RET_LDOUBLE: + case X86_RET_STRUCTPOP: + case X86_RET_STRUCTARG: + /* The float cases need to pop the 387 stack. + The struct cases need to pass a valid pointer to the callee. */ + rsize = cif->rtype->size; + break; + default: + /* We can pretend that the callee returns nothing. */ + flags = X86_RET_VOID; + break; + } + } + + bytes = cif->bytes; + stack = alloca(bytes + sizeof(*frame) + rsize); + argp = (dir < 0 ? stack + bytes : stack); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = fn; + frame->flags = flags; + frame->rvalue = rvalue; + frame->regs[pabi->static_chain] = (unsigned)closure; + + narg_reg = 0; + switch (flags) + { + case X86_RET_STRUCTARG: + /* The pointer is passed as the first argument. */ + if (pabi->nregs > 0) + { + frame->regs[pabi->regs[0]] = (unsigned)rvalue; + narg_reg = 1; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + *(void **)argp = rvalue; + argp += sizeof(void *); + break; + } + + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + void *valp = avalue[i]; + size_t z = ty->size; + int t = ty->type; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT) + { + ffi_arg val = extend_basic_type (valp, t); + + if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs) + frame->regs[pabi->regs[narg_reg++]] = val; + else if (dir < 0) + { + argp -= 4; + *(ffi_arg *)argp = val; + } + else + { + *(ffi_arg *)argp = val; + argp += 4; + } + } + else + { + size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG); + size_t align = FFI_SIZEOF_ARG; + + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer paramters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + + /* Alignment rules for arguments are quite complex. Vectors and + structures with 16 byte alignment get it. Note that long double + on Darwin does have 16 byte alignment, and does not get this + alignment if passed directly; a structure with a long double + inside, however, would get 16 byte alignment. Since libffi does + not support vectors, we need non concern ourselves with other + cases. */ + if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) + align = 16; + + if (dir < 0) + { + /* ??? These reverse argument ABIs are probably too old + to have cared about alignment. Someone should check. */ + argp -= za; + memcpy (argp, valp, z); + } + else + { + argp = (char *)FFI_ALIGN (argp, align); + memcpy (argp, valp, z); + argp += za; + } + } + } + FFI_ASSERT (dir > 0 || argp == stack); + + ffi_call_i386 (frame, stack); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +/** private members **/ + +void FFI_HIDDEN ffi_closure_i386(void); +void FFI_HIDDEN ffi_closure_STDCALL(void); +void FFI_HIDDEN ffi_closure_REGISTER(void); + +struct closure_frame +{ + unsigned rettemp[4]; /* 0 */ + unsigned regs[3]; /* 16-24 */ + ffi_cif *cif; /* 28 */ + void (*fun)(ffi_cif*,void*,void**,void*); /* 32 */ + void *user_data; /* 36 */ +}; + +int FFI_HIDDEN FFI_DECLARE_FASTCALL +ffi_closure_inner (struct closure_frame *frame, char *stack) +{ + ffi_cif *cif = frame->cif; + int cabi, i, n, flags, dir, narg_reg; + const struct abi_params *pabi; + ffi_type **arg_types; + char *argp; + void *rvalue; + void **avalue; + + cabi = cif->abi; + flags = cif->flags; + narg_reg = 0; + rvalue = frame->rettemp; + pabi = &abi_params[cabi]; + dir = pabi->dir; + argp = (dir < 0 ? stack + cif->bytes : stack); + + switch (flags) + { + case X86_RET_STRUCTARG: + if (pabi->nregs > 0) + { + rvalue = (void *)frame->regs[pabi->regs[0]]; + narg_reg = 1; + frame->rettemp[0] = (unsigned)rvalue; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + rvalue = *(void **)argp; + argp += sizeof(void *); + frame->rettemp[0] = (unsigned)rvalue; + break; + } + + n = cif->nargs; + avalue = alloca(sizeof(void *) * n); + + arg_types = cif->arg_types; + for (i = 0; i < n; ++i) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + int t = ty->type; + void *valp; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT) + { + if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs) + valp = &frame->regs[pabi->regs[narg_reg++]]; + else if (dir < 0) + { + argp -= 4; + valp = argp; + } + else + { + valp = argp; + argp += 4; + } + } + else + { + size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG); + size_t align = FFI_SIZEOF_ARG; + + /* See the comment in ffi_call_int. */ + if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) + align = 16; + + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer paramters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + + if (dir < 0) + { + /* ??? These reverse argument ABIs are probably too old + to have cared about alignment. Someone should check. */ + argp -= za; + valp = argp; + } + else + { + argp = (char *)FFI_ALIGN (argp, align); + valp = argp; + argp += za; + } + } + + avalue[i] = valp; + } + + frame->fun (cif, rvalue, avalue, frame->user_data); + + if (cabi == FFI_STDCALL) + return flags + (cif->bytes << X86_RET_POP_SHIFT); + else + return flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + char *tramp = closure->tramp; + void (*dest)(void); + int op = 0xb8; /* movl imm, %eax */ + + switch (cif->abi) + { + case FFI_SYSV: + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_MS_CDECL: + dest = ffi_closure_i386; + break; + case FFI_STDCALL: + case FFI_PASCAL: + dest = ffi_closure_STDCALL; + break; + case FFI_REGISTER: + dest = ffi_closure_REGISTER; + op = 0x68; /* pushl imm */ + default: + return FFI_BAD_ABI; + } + + /* movl or pushl immediate. */ + tramp[0] = op; + *(void **)(tramp + 1) = codeloc; + + /* jmp dest */ + tramp[5] = 0xe9; + *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +void FFI_HIDDEN ffi_go_closure_EAX(void); +void FFI_HIDDEN ffi_go_closure_ECX(void); +void FFI_HIDDEN ffi_go_closure_STDCALL(void); + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void (*dest)(void); + + switch (cif->abi) + { + case FFI_SYSV: + case FFI_MS_CDECL: + dest = ffi_go_closure_ECX; + break; + case FFI_THISCALL: + case FFI_FASTCALL: + dest = ffi_go_closure_EAX; + break; + case FFI_STDCALL: + case FFI_PASCAL: + dest = ffi_go_closure_STDCALL; + break; + case FFI_REGISTER: + default: + return FFI_BAD_ABI; + } + + closure->tramp = dest; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +/* ------- Native raw API support -------------------------------- */ + +#if !FFI_NO_RAW_API + +void FFI_HIDDEN ffi_closure_raw_SYSV(void); +void FFI_HIDDEN ffi_closure_raw_THISCALL(void); + +ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc) +{ + char *tramp = closure->tramp; + void (*dest)(void); + int i; + + /* We currently don't support certain kinds of arguments for raw + closures. This should be implemented by a separate assembly + language routine, since it would require argument processing, + something we don't do now for performance. */ + for (i = cif->nargs-1; i >= 0; i--) + switch (cif->arg_types[i]->type) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + return FFI_BAD_TYPEDEF; + } + + switch (cif->abi) + { + case FFI_THISCALL: + dest = ffi_closure_raw_THISCALL; + break; + case FFI_SYSV: + dest = ffi_closure_raw_SYSV; + break; + default: + return FFI_BAD_ABI; + } + + /* movl imm, %eax. */ + tramp[0] = 0xb8; + *(void **)(tramp + 1) = codeloc; + + /* jmp dest */ + tramp[5] = 0xe9; + *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +void +ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue) +{ + size_t rsize, bytes; + struct call_frame *frame; + char *stack, *argp; + ffi_type **arg_types; + int flags, cabi, i, n, narg_reg; + const struct abi_params *pabi; + + flags = cif->flags; + cabi = cif->abi; + pabi = &abi_params[cabi]; + + rsize = 0; + if (rvalue == NULL) + { + switch (flags) + { + case X86_RET_FLOAT: + case X86_RET_DOUBLE: + case X86_RET_LDOUBLE: + case X86_RET_STRUCTPOP: + case X86_RET_STRUCTARG: + /* The float cases need to pop the 387 stack. + The struct cases need to pass a valid pointer to the callee. */ + rsize = cif->rtype->size; + break; + default: + /* We can pretend that the callee returns nothing. */ + flags = X86_RET_VOID; + break; + } + } + + bytes = cif->bytes; + argp = stack = + (void *)((uintptr_t)alloca(bytes + sizeof(*frame) + rsize + 15) & ~16); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = fn; + frame->flags = flags; + frame->rvalue = rvalue; + + narg_reg = 0; + switch (flags) + { + case X86_RET_STRUCTARG: + /* The pointer is passed as the first argument. */ + if (pabi->nregs > 0) + { + frame->regs[pabi->regs[0]] = (unsigned)rvalue; + narg_reg = 1; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + *(void **)argp = rvalue; + argp += sizeof(void *); + bytes -= sizeof(void *); + break; + } + + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; narg_reg < pabi->nregs && i < n; i++) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + int t = ty->type; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT && t != FFI_TYPE_FLOAT) + { + ffi_arg val = extend_basic_type (avalue, t); + frame->regs[pabi->regs[narg_reg++]] = val; + z = FFI_SIZEOF_ARG; + } + else + { + memcpy (argp, avalue, z); + z = FFI_ALIGN (z, FFI_SIZEOF_ARG); + argp += z; + } + avalue += z; + bytes -= z; + } + if (i < n) + memcpy (argp, avalue, bytes); + + ffi_call_i386 (frame, stack); +} +#endif /* !FFI_NO_RAW_API */ +#endif /* !__x86_64__ */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi64.c new file mode 100644 index 0000000000..41d6acdee3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffi64.c @@ -0,0 +1,884 @@ +/* ----------------------------------------------------------------------- + ffi64.c - Copyright (c) 2011, 2018 Anthony Green + Copyright (c) 2013 The Written Word, Inc. + Copyright (c) 2008, 2010 Red Hat, Inc. + Copyright (c) 2002, 2007 Bo Thorsen + + x86-64 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include +#include "internal64.h" + +#ifdef __x86_64__ + +#define MAX_GPR_REGS 6 +#define MAX_SSE_REGS 8 + +#if defined(__INTEL_COMPILER) +#include "xmmintrin.h" +#define UINT128 __m128 +#else +#if defined(__SUNPRO_C) +#include +#define UINT128 __m128i +#else +#define UINT128 __int128_t +#endif +#endif + +union big_int_union +{ + UINT32 i32; + UINT64 i64; + UINT128 i128; +}; + +struct register_args +{ + /* Registers for argument passing. */ + UINT64 gpr[MAX_GPR_REGS]; + union big_int_union sse[MAX_SSE_REGS]; + UINT64 rax; /* ssecount */ + UINT64 r10; /* static chain */ +}; + +extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, + void *raddr, void (*fnaddr)(void)) FFI_HIDDEN; + +/* All reference to register classes here is identical to the code in + gcc/config/i386/i386.c. Do *not* change one without the other. */ + +/* Register class used for passing given 64bit part of the argument. + These represent classes as documented by the PS ABI, with the + exception of SSESF, SSEDF classes, that are basically SSE class, + just gcc will use SF or DFmode move instead of DImode to avoid + reformatting penalties. + + Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves + whenever possible (upper half does contain padding). */ +enum x86_64_reg_class + { + X86_64_NO_CLASS, + X86_64_INTEGER_CLASS, + X86_64_INTEGERSI_CLASS, + X86_64_SSE_CLASS, + X86_64_SSESF_CLASS, + X86_64_SSEDF_CLASS, + X86_64_SSEUP_CLASS, + X86_64_X87_CLASS, + X86_64_X87UP_CLASS, + X86_64_COMPLEX_X87_CLASS, + X86_64_MEMORY_CLASS + }; + +#define MAX_CLASSES 4 + +#define SSE_CLASS_P(X) ((X) >= X86_64_SSE_CLASS && X <= X86_64_SSEUP_CLASS) + +/* x86-64 register passing implementation. See x86-64 ABI for details. Goal + of this code is to classify each 8bytes of incoming argument by the register + class and assign registers accordingly. */ + +/* Return the union class of CLASS1 and CLASS2. + See the x86-64 PS ABI for details. */ + +static enum x86_64_reg_class +merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) +{ + /* Rule #1: If both classes are equal, this is the resulting class. */ + if (class1 == class2) + return class1; + + /* Rule #2: If one of the classes is NO_CLASS, the resulting class is + the other class. */ + if (class1 == X86_64_NO_CLASS) + return class2; + if (class2 == X86_64_NO_CLASS) + return class1; + + /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ + if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) + return X86_64_MEMORY_CLASS; + + /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ + if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) + || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) + return X86_64_INTEGERSI_CLASS; + if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS + || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) + return X86_64_INTEGER_CLASS; + + /* Rule #5: If one of the classes is X87, X87UP, or COMPLEX_X87 class, + MEMORY is used. */ + if (class1 == X86_64_X87_CLASS + || class1 == X86_64_X87UP_CLASS + || class1 == X86_64_COMPLEX_X87_CLASS + || class2 == X86_64_X87_CLASS + || class2 == X86_64_X87UP_CLASS + || class2 == X86_64_COMPLEX_X87_CLASS) + return X86_64_MEMORY_CLASS; + + /* Rule #6: Otherwise class SSE is used. */ + return X86_64_SSE_CLASS; +} + +/* Classify the argument of type TYPE and mode MODE. + CLASSES will be filled by the register class used to pass each word + of the operand. The number of words is returned. In case the parameter + should be passed in memory, 0 is returned. As a special case for zero + sized containers, classes[0] will be NO_CLASS and 1 is returned. + + See the x86-64 PS ABI for details. +*/ +static size_t +classify_argument (ffi_type *type, enum x86_64_reg_class classes[], + size_t byte_offset) +{ + switch (type->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + do_integer: + { + size_t size = byte_offset + type->size; + + if (size <= 4) + { + classes[0] = X86_64_INTEGERSI_CLASS; + return 1; + } + else if (size <= 8) + { + classes[0] = X86_64_INTEGER_CLASS; + return 1; + } + else if (size <= 12) + { + classes[0] = X86_64_INTEGER_CLASS; + classes[1] = X86_64_INTEGERSI_CLASS; + return 2; + } + else if (size <= 16) + { + classes[0] = classes[1] = X86_64_INTEGER_CLASS; + return 2; + } + else + FFI_ASSERT (0); + } + case FFI_TYPE_FLOAT: + if (!(byte_offset % 8)) + classes[0] = X86_64_SSESF_CLASS; + else + classes[0] = X86_64_SSE_CLASS; + return 1; + case FFI_TYPE_DOUBLE: + classes[0] = X86_64_SSEDF_CLASS; + return 1; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + classes[0] = X86_64_X87_CLASS; + classes[1] = X86_64_X87UP_CLASS; + return 2; +#endif + case FFI_TYPE_STRUCT: + { + const size_t UNITS_PER_WORD = 8; + size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; + ffi_type **ptr; + unsigned int i; + enum x86_64_reg_class subclasses[MAX_CLASSES]; + + /* If the struct is larger than 32 bytes, pass it on the stack. */ + if (type->size > 32) + return 0; + + for (i = 0; i < words; i++) + classes[i] = X86_64_NO_CLASS; + + /* Zero sized arrays or structures are NO_CLASS. We return 0 to + signalize memory class, so handle it as special case. */ + if (!words) + { + case FFI_TYPE_VOID: + classes[0] = X86_64_NO_CLASS; + return 1; + } + + /* Merge the fields of structure. */ + for (ptr = type->elements; *ptr != NULL; ptr++) + { + size_t num; + + byte_offset = FFI_ALIGN (byte_offset, (*ptr)->alignment); + + num = classify_argument (*ptr, subclasses, byte_offset % 8); + if (num == 0) + return 0; + for (i = 0; i < num; i++) + { + size_t pos = byte_offset / 8; + classes[i + pos] = + merge_classes (subclasses[i], classes[i + pos]); + } + + byte_offset += (*ptr)->size; + } + + if (words > 2) + { + /* When size > 16 bytes, if the first one isn't + X86_64_SSE_CLASS or any other ones aren't + X86_64_SSEUP_CLASS, everything should be passed in + memory. */ + if (classes[0] != X86_64_SSE_CLASS) + return 0; + + for (i = 1; i < words; i++) + if (classes[i] != X86_64_SSEUP_CLASS) + return 0; + } + + /* Final merger cleanup. */ + for (i = 0; i < words; i++) + { + /* If one class is MEMORY, everything should be passed in + memory. */ + if (classes[i] == X86_64_MEMORY_CLASS) + return 0; + + /* The X86_64_SSEUP_CLASS should be always preceded by + X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */ + if (classes[i] == X86_64_SSEUP_CLASS + && classes[i - 1] != X86_64_SSE_CLASS + && classes[i - 1] != X86_64_SSEUP_CLASS) + { + /* The first one should never be X86_64_SSEUP_CLASS. */ + FFI_ASSERT (i != 0); + classes[i] = X86_64_SSE_CLASS; + } + + /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS, + everything should be passed in memory. */ + if (classes[i] == X86_64_X87UP_CLASS + && (classes[i - 1] != X86_64_X87_CLASS)) + { + /* The first one should never be X86_64_X87UP_CLASS. */ + FFI_ASSERT (i != 0); + return 0; + } + } + return words; + } + case FFI_TYPE_COMPLEX: + { + ffi_type *inner = type->elements[0]; + switch (inner->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + goto do_integer; + + case FFI_TYPE_FLOAT: + classes[0] = X86_64_SSE_CLASS; + if (byte_offset % 8) + { + classes[1] = X86_64_SSESF_CLASS; + return 2; + } + return 1; + case FFI_TYPE_DOUBLE: + classes[0] = classes[1] = X86_64_SSEDF_CLASS; + return 2; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + classes[0] = X86_64_COMPLEX_X87_CLASS; + return 1; +#endif + } + } + } + abort(); +} + +/* Examine the argument and return set number of register required in each + class. Return zero iff parameter should be passed in memory, otherwise + the number of registers. */ + +static size_t +examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES], + _Bool in_return, int *pngpr, int *pnsse) +{ + size_t n; + unsigned int i; + int ngpr, nsse; + + n = classify_argument (type, classes, 0); + if (n == 0) + return 0; + + ngpr = nsse = 0; + for (i = 0; i < n; ++i) + switch (classes[i]) + { + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + ngpr++; + break; + case X86_64_SSE_CLASS: + case X86_64_SSESF_CLASS: + case X86_64_SSEDF_CLASS: + nsse++; + break; + case X86_64_NO_CLASS: + case X86_64_SSEUP_CLASS: + break; + case X86_64_X87_CLASS: + case X86_64_X87UP_CLASS: + case X86_64_COMPLEX_X87_CLASS: + return in_return != 0; + default: + abort (); + } + + *pngpr = ngpr; + *pnsse = nsse; + + return n; +} + +/* Perform machine dependent cif processing. */ + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_cif_machdep_efi64(ffi_cif *cif); +#endif + +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + int gprcount, ssecount, i, avn, ngpr, nsse; + unsigned flags; + enum x86_64_reg_class classes[MAX_CLASSES]; + size_t bytes, n, rtype_size; + ffi_type *rtype; + +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_cif_machdep_efi64(cif); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + gprcount = ssecount = 0; + + rtype = cif->rtype; + rtype_size = rtype->size; + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = UNIX64_RET_VOID; + break; + case FFI_TYPE_UINT8: + flags = UNIX64_RET_UINT8; + break; + case FFI_TYPE_SINT8: + flags = UNIX64_RET_SINT8; + break; + case FFI_TYPE_UINT16: + flags = UNIX64_RET_UINT16; + break; + case FFI_TYPE_SINT16: + flags = UNIX64_RET_SINT16; + break; + case FFI_TYPE_UINT32: + flags = UNIX64_RET_UINT32; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = UNIX64_RET_SINT32; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags = UNIX64_RET_INT64; + break; + case FFI_TYPE_POINTER: + flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64); + break; + case FFI_TYPE_FLOAT: + flags = UNIX64_RET_XMM32; + break; + case FFI_TYPE_DOUBLE: + flags = UNIX64_RET_XMM64; + break; + case FFI_TYPE_LONGDOUBLE: + flags = UNIX64_RET_X87; + break; + case FFI_TYPE_STRUCT: + n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); + if (n == 0) + { + /* The return value is passed in memory. A pointer to that + memory is the first argument. Allocate a register for it. */ + gprcount++; + /* We don't have to do anything in asm for the return. */ + flags = UNIX64_RET_VOID | UNIX64_FLAG_RET_IN_MEM; + } + else + { + _Bool sse0 = SSE_CLASS_P (classes[0]); + + if (rtype_size == 4 && sse0) + flags = UNIX64_RET_XMM32; + else if (rtype_size == 8) + flags = sse0 ? UNIX64_RET_XMM64 : UNIX64_RET_INT64; + else + { + _Bool sse1 = n == 2 && SSE_CLASS_P (classes[1]); + if (sse0 && sse1) + flags = UNIX64_RET_ST_XMM0_XMM1; + else if (sse0) + flags = UNIX64_RET_ST_XMM0_RAX; + else if (sse1) + flags = UNIX64_RET_ST_RAX_XMM0; + else + flags = UNIX64_RET_ST_RAX_RDX; + flags |= rtype_size << UNIX64_SIZE_SHIFT; + } + } + break; + case FFI_TYPE_COMPLEX: + switch (rtype->elements[0]->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags = UNIX64_RET_ST_RAX_RDX | ((unsigned) rtype_size << UNIX64_SIZE_SHIFT); + break; + case FFI_TYPE_FLOAT: + flags = UNIX64_RET_XMM64; + break; + case FFI_TYPE_DOUBLE: + flags = UNIX64_RET_ST_XMM0_XMM1 | (16 << UNIX64_SIZE_SHIFT); + break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags = UNIX64_RET_X87_2; + break; +#endif + default: + return FFI_BAD_TYPEDEF; + } + break; + default: + return FFI_BAD_TYPEDEF; + } + + /* Go over all arguments and determine the way they should be passed. + If it's in a register and there is space for it, let that be so. If + not, add it's size to the stack byte count. */ + for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++) + { + if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = cif->arg_types[i]->alignment; + + if (align < 8) + align = 8; + + bytes = FFI_ALIGN (bytes, align); + bytes += cif->arg_types[i]->size; + } + else + { + gprcount += ngpr; + ssecount += nsse; + } + } + if (ssecount) + flags |= UNIX64_FLAG_XMM_ARGS; + + cif->flags = flags; + cif->bytes = (unsigned) FFI_ALIGN (bytes, 8); + + return FFI_OK; +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + enum x86_64_reg_class classes[MAX_CLASSES]; + char *stack, *argp; + ffi_type **arg_types; + int gprcount, ssecount, ngpr, nsse, i, avn, flags; + struct register_args *reg_args; + + /* Can't call 32-bit mode from 64-bit mode. */ + FFI_ASSERT (cif->abi == FFI_UNIX64); + + /* If the return value is a struct and we don't have a return value + address then we need to make one. Otherwise we can ignore it. */ + flags = cif->flags; + if (rvalue == NULL) + { + if (flags & UNIX64_FLAG_RET_IN_MEM) + rvalue = alloca (cif->rtype->size); + else + flags = UNIX64_RET_VOID; + } + + /* Allocate the space for the arguments, plus 4 words of temp space. */ + stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8); + reg_args = (struct register_args *) stack; + argp = stack + sizeof (struct register_args); + + reg_args->r10 = (uintptr_t) closure; + + gprcount = ssecount = 0; + + /* If the return value is passed in memory, add the pointer as the + first integer argument. */ + if (flags & UNIX64_FLAG_RET_IN_MEM) + reg_args->gpr[gprcount++] = (unsigned long) rvalue; + + avn = cif->nargs; + arg_types = cif->arg_types; + + for (i = 0; i < avn; ++i) + { + size_t n, size = arg_types[i]->size; + + n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); + if (n == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = arg_types[i]->alignment; + + /* Stack arguments are *always* at least 8 byte aligned. */ + if (align < 8) + align = 8; + + /* Pass this argument in memory. */ + argp = (void *) FFI_ALIGN (argp, align); + memcpy (argp, avalue[i], size); + argp += size; + } + else + { + /* The argument is passed entirely in registers. */ + char *a = (char *) avalue[i]; + unsigned int j; + + for (j = 0; j < n; j++, a += 8, size -= 8) + { + switch (classes[j]) + { + case X86_64_NO_CLASS: + case X86_64_SSEUP_CLASS: + break; + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + /* Sign-extend integer arguments passed in general + purpose registers, to cope with the fact that + LLVM incorrectly assumes that this will be done + (the x86-64 PS ABI does not specify this). */ + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a); + break; + case FFI_TYPE_SINT16: + reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a); + break; + case FFI_TYPE_SINT32: + reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a); + break; + default: + reg_args->gpr[gprcount] = 0; + memcpy (®_args->gpr[gprcount], a, size); + } + gprcount++; + break; + case X86_64_SSE_CLASS: + case X86_64_SSEDF_CLASS: + memcpy (®_args->sse[ssecount++].i64, a, sizeof(UINT64)); + break; + case X86_64_SSESF_CLASS: + memcpy (®_args->sse[ssecount++].i32, a, sizeof(UINT32)); + break; + default: + abort(); + } + } + } + } + reg_args->rax = ssecount; + + ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args), + flags, rvalue, fn); +} + +#ifndef __ILP32__ +extern void +ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); +#endif + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + { + ffi_call_efi64(cif, fn, rvalue, avalue); + return; + } +#endif + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#ifndef __ILP32__ +extern void +ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); +#endif + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + { + ffi_call_go_efi64(cif, fn, rvalue, avalue, closure); + return; + } +#endif + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + + +extern void ffi_closure_unix64(void) FFI_HIDDEN; +extern void ffi_closure_unix64_sse(void) FFI_HIDDEN; + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_closure_loc_efi64(ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc); +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + static const unsigned char trampoline[16] = { + /* leaq -0x7(%rip),%r10 # 0x0 */ + 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff, + /* jmpq *0x3(%rip) # 0x10 */ + 0xff, 0x25, 0x03, 0x00, 0x00, 0x00, + /* nopl (%rax) */ + 0x0f, 0x1f, 0x00 + }; + void (*dest)(void); + char *tramp = closure->tramp; + +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_closure_loc_efi64(closure, cif, fun, user_data, codeloc); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + if (cif->flags & UNIX64_FLAG_XMM_ARGS) + dest = ffi_closure_unix64_sse; + else + dest = ffi_closure_unix64; + + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + 16) = (uintptr_t)dest; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_unix64_inner(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, + struct register_args *reg_args, + char *argp) +{ + void **avalue; + ffi_type **arg_types; + long i, avn; + int gprcount, ssecount, ngpr, nsse; + int flags; + + avn = cif->nargs; + flags = cif->flags; + avalue = alloca(avn * sizeof(void *)); + gprcount = ssecount = 0; + + if (flags & UNIX64_FLAG_RET_IN_MEM) + { + /* On return, %rax will contain the address that was passed + by the caller in %rdi. */ + void *r = (void *)(uintptr_t)reg_args->gpr[gprcount++]; + *(void **)rvalue = r; + rvalue = r; + flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64); + } + + arg_types = cif->arg_types; + for (i = 0; i < avn; ++i) + { + enum x86_64_reg_class classes[MAX_CLASSES]; + size_t n; + + n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); + if (n == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = arg_types[i]->alignment; + + /* Stack arguments are *always* at least 8 byte aligned. */ + if (align < 8) + align = 8; + + /* Pass this argument in memory. */ + argp = (void *) FFI_ALIGN (argp, align); + avalue[i] = argp; + argp += arg_types[i]->size; + } + /* If the argument is in a single register, or two consecutive + integer registers, then we can use that address directly. */ + else if (n == 1 + || (n == 2 && !(SSE_CLASS_P (classes[0]) + || SSE_CLASS_P (classes[1])))) + { + /* The argument is in a single register. */ + if (SSE_CLASS_P (classes[0])) + { + avalue[i] = ®_args->sse[ssecount]; + ssecount += n; + } + else + { + avalue[i] = ®_args->gpr[gprcount]; + gprcount += n; + } + } + /* Otherwise, allocate space to make them consecutive. */ + else + { + char *a = alloca (16); + unsigned int j; + + avalue[i] = a; + for (j = 0; j < n; j++, a += 8) + { + if (SSE_CLASS_P (classes[j])) + memcpy (a, ®_args->sse[ssecount++], 8); + else + memcpy (a, ®_args->gpr[gprcount++], 8); + } + } + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell assembly how to perform return type promotions. */ + return flags; +} + +extern void ffi_go_closure_unix64(void) FFI_HIDDEN; +extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN; + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_go_closure_efi64(ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)); +#endif + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_go_closure_efi64(closure, cif, fun); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + closure->tramp = (cif->flags & UNIX64_FLAG_XMM_ARGS + ? ffi_go_closure_unix64_sse + : ffi_go_closure_unix64); + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#endif /* __x86_64__ */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffitarget.h new file mode 100644 index 0000000000..85ccedfedc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffitarget.h @@ -0,0 +1,147 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green + Copyright (c) 1996-2003, 2010 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. + + Target configuration macros for x86 and x86-64. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +/* For code common to all platforms on x86 and x86_64. */ +#define X86_ANY + +#if defined (X86_64) && defined (__i386__) +#undef X86_64 +#define X86 +#endif + +#ifdef X86_WIN64 +#define FFI_SIZEOF_ARG 8 +#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#ifndef _MSC_VER +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +#ifdef X86_WIN64 +#ifdef _MSC_VER +typedef unsigned __int64 ffi_arg; +typedef __int64 ffi_sarg; +#else +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#endif +#else +#if defined __x86_64__ && defined __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#else +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; +#endif +#endif + +typedef enum ffi_abi { +#if defined(X86_WIN64) + FFI_FIRST_ABI = 0, + FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ + FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ + FFI_LAST_ABI, +#ifdef __GNUC__ + FFI_DEFAULT_ABI = FFI_GNUW64 +#else + FFI_DEFAULT_ABI = FFI_WIN64 +#endif + +#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) + FFI_FIRST_ABI = 1, + FFI_UNIX64, + FFI_WIN64, + FFI_EFI64 = FFI_WIN64, + FFI_GNUW64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX64 + +#elif defined(X86_WIN32) + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_STDCALL = 2, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_MS_CDECL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_MS_CDECL +#else + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_STDCALL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_MS_CDECL = 8, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +#endif +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 + +#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) +#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) +#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) +#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) + +#if defined (X86_64) || defined(X86_WIN64) \ + || (defined (__x86_64__) && defined (X86_DARWIN)) +# define FFI_TRAMPOLINE_SIZE 24 +# define FFI_NATIVE_RAW_API 0 +#else +# define FFI_TRAMPOLINE_SIZE 12 +# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ +#endif + +#endif + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffiw64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffiw64.c new file mode 100644 index 0000000000..f787525228 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/ffiw64.c @@ -0,0 +1,308 @@ +/* ----------------------------------------------------------------------- + ffiw64.c - Copyright (c) 2018 Anthony Green + Copyright (c) 2014 Red Hat, Inc. + + x86 win64 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include + +#ifdef X86_WIN64 +#define EFI64(name) name +#else +#define EFI64(name) name##_efi64 +#endif + +struct win64_call_frame +{ + UINT64 rbp; /* 0 */ + UINT64 retaddr; /* 8 */ + UINT64 fn; /* 16 */ + UINT64 flags; /* 24 */ + UINT64 rvalue; /* 32 */ +}; + +extern void ffi_call_win64 (void *stack, struct win64_call_frame *, + void *closure) FFI_HIDDEN; + +ffi_status +EFI64(ffi_prep_cif_machdep)(ffi_cif *cif) +{ + int flags, n; + + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + + flags = cif->rtype->type; + switch (flags) + { + default: + break; + case FFI_TYPE_LONGDOUBLE: + /* GCC returns long double values by reference, like a struct */ + if (cif->abi == FFI_GNUW64) + flags = FFI_TYPE_STRUCT; + break; + case FFI_TYPE_COMPLEX: + flags = FFI_TYPE_STRUCT; + /* FALLTHRU */ + case FFI_TYPE_STRUCT: + switch (cif->rtype->size) + { + case 8: + flags = FFI_TYPE_UINT64; + break; + case 4: + flags = FFI_TYPE_SMALL_STRUCT_4B; + break; + case 2: + flags = FFI_TYPE_SMALL_STRUCT_2B; + break; + case 1: + flags = FFI_TYPE_SMALL_STRUCT_1B; + break; + } + break; + } + cif->flags = flags; + + /* Each argument either fits in a register, an 8 byte slot, or is + passed by reference with the pointer in the 8 byte slot. */ + n = cif->nargs; + n += (flags == FFI_TYPE_STRUCT); + if (n < 4) + n = 4; + cif->bytes = n * 8; + + return FFI_OK; +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + int i, j, n, flags; + UINT64 *stack; + size_t rsize; + struct win64_call_frame *frame; + + FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64); + + flags = cif->flags; + rsize = 0; + + /* If we have no return value for a structure, we need to create one. + Otherwise we can ignore the return type entirely. */ + if (rvalue == NULL) + { + if (flags == FFI_TYPE_STRUCT) + rsize = cif->rtype->size; + else + flags = FFI_TYPE_VOID; + } + + stack = alloca(cif->bytes + sizeof(struct win64_call_frame) + rsize); + frame = (struct win64_call_frame *)((char *)stack + cif->bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = (uintptr_t)fn; + frame->flags = flags; + frame->rvalue = (uintptr_t)rvalue; + + j = 0; + if (flags == FFI_TYPE_STRUCT) + { + stack[0] = (uintptr_t)rvalue; + j = 1; + } + + for (i = 0, n = cif->nargs; i < n; ++i, ++j) + { + switch (cif->arg_types[i]->size) + { + case 8: + stack[j] = *(UINT64 *)avalue[i]; + break; + case 4: + stack[j] = *(UINT32 *)avalue[i]; + break; + case 2: + stack[j] = *(UINT16 *)avalue[i]; + break; + case 1: + stack[j] = *(UINT8 *)avalue[i]; + break; + default: + stack[j] = (uintptr_t)avalue[i]; + break; + } + } + + ffi_call_win64 (stack, frame, closure); +} + +void +EFI64(ffi_call)(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +EFI64(ffi_call_go)(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + + +extern void ffi_closure_win64(void) FFI_HIDDEN; +extern void ffi_go_closure_win64(void) FFI_HIDDEN; + +ffi_status +EFI64(ffi_prep_closure_loc)(ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + static const unsigned char trampoline[16] = { + /* leaq -0x7(%rip),%r10 # 0x0 */ + 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff, + /* jmpq *0x3(%rip) # 0x10 */ + 0xff, 0x25, 0x03, 0x00, 0x00, 0x00, + /* nopl (%rax) */ + 0x0f, 0x1f, 0x00 + }; + char *tramp = closure->tramp; + + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + 16) = (uintptr_t)ffi_closure_win64; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +ffi_status +EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + + closure->tramp = ffi_go_closure_win64; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +struct win64_closure_frame +{ + UINT64 rvalue[2]; + UINT64 fargs[4]; + UINT64 retaddr; + UINT64 args[]; +}; + +/* Force the inner function to use the MS ABI. When compiling on win64 + this is a nop. When compiling on unix, this simplifies the assembly, + and places the burden of saving the extra call-saved registers on + the compiler. */ +int FFI_HIDDEN __attribute__((ms_abi)) +ffi_closure_win64_inner(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + struct win64_closure_frame *frame) +{ + void **avalue; + void *rvalue; + int i, n, nreg, flags; + + avalue = alloca(cif->nargs * sizeof(void *)); + rvalue = frame->rvalue; + nreg = 0; + + /* When returning a structure, the address is in the first argument. + We must also be prepared to return the same address in eax, so + install that address in the frame and pretend we return a pointer. */ + flags = cif->flags; + if (flags == FFI_TYPE_STRUCT) + { + rvalue = (void *)(uintptr_t)frame->args[0]; + frame->rvalue[0] = frame->args[0]; + nreg = 1; + } + + for (i = 0, n = cif->nargs; i < n; ++i, ++nreg) + { + size_t size = cif->arg_types[i]->size; + size_t type = cif->arg_types[i]->type; + void *a; + + if (type == FFI_TYPE_DOUBLE || type == FFI_TYPE_FLOAT) + { + if (nreg < 4) + a = &frame->fargs[nreg]; + else + a = &frame->args[nreg]; + } + else if (size == 1 || size == 2 || size == 4 || size == 8) + a = &frame->args[nreg]; + else + a = (void *)(uintptr_t)frame->args[nreg]; + + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + return flags; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal.h new file mode 100644 index 0000000000..09771ba8cf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal.h @@ -0,0 +1,29 @@ +#define X86_RET_FLOAT 0 +#define X86_RET_DOUBLE 1 +#define X86_RET_LDOUBLE 2 +#define X86_RET_SINT8 3 +#define X86_RET_SINT16 4 +#define X86_RET_UINT8 5 +#define X86_RET_UINT16 6 +#define X86_RET_INT64 7 +#define X86_RET_INT32 8 +#define X86_RET_VOID 9 +#define X86_RET_STRUCTPOP 10 +#define X86_RET_STRUCTARG 11 +#define X86_RET_STRUCT_1B 12 +#define X86_RET_STRUCT_2B 13 +#define X86_RET_UNUSED14 14 +#define X86_RET_UNUSED15 15 + +#define X86_RET_TYPE_MASK 15 +#define X86_RET_POP_SHIFT 4 + +#define R_EAX 0 +#define R_EDX 1 +#define R_ECX 2 + +#ifdef __PCC__ +# define HAVE_FASTCALL 0 +#else +# define HAVE_FASTCALL 1 +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal64.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal64.h new file mode 100644 index 0000000000..512e95523e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/internal64.h @@ -0,0 +1,22 @@ +#define UNIX64_RET_VOID 0 +#define UNIX64_RET_UINT8 1 +#define UNIX64_RET_UINT16 2 +#define UNIX64_RET_UINT32 3 +#define UNIX64_RET_SINT8 4 +#define UNIX64_RET_SINT16 5 +#define UNIX64_RET_SINT32 6 +#define UNIX64_RET_INT64 7 +#define UNIX64_RET_XMM32 8 +#define UNIX64_RET_XMM64 9 +#define UNIX64_RET_X87 10 +#define UNIX64_RET_X87_2 11 +#define UNIX64_RET_ST_XMM0_RAX 12 +#define UNIX64_RET_ST_RAX_XMM0 13 +#define UNIX64_RET_ST_XMM0_XMM1 14 +#define UNIX64_RET_ST_RAX_RDX 15 + +#define UNIX64_RET_LAST 15 + +#define UNIX64_FLAG_RET_IN_MEM (1 << 10) +#define UNIX64_FLAG_XMM_ARGS (1 << 11) +#define UNIX64_SIZE_SHIFT 12 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/sysv.S new file mode 100644 index 0000000000..27379a48a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/sysv.S @@ -0,0 +1,1043 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2017 Anthony Green + - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. + + X86 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef __x86_64__ +#ifndef _MSC_VER + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) +#ifdef __USER_LABEL_PREFIX__ +# define C(X) C1(__USER_LABEL_PREFIX__, X) +#else +# define C(X) X +#endif + +#ifdef X86_DARWIN +# define L(X) C1(L, X) +#else +# define L(X) C1(.L, X) +#endif + +#ifdef __ELF__ +# define ENDF(X) .type X,@function; .size X, . - X +#else +# define ENDF(X) +#endif + +/* Handle win32 fastcall name mangling. */ +#ifdef X86_WIN32 +# define ffi_call_i386 @ffi_call_i386@8 +# define ffi_closure_inner @ffi_closure_inner@8 +#else +# define ffi_call_i386 C(ffi_call_i386) +# define ffi_closure_inner C(ffi_closure_inner) +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + X * 8 +#endif + + .text + .balign 16 + .globl ffi_call_i386 + FFI_HIDDEN(ffi_call_i386) + +/* This is declared as + + void ffi_call_i386(struct call_frame *frame, char *argp) + __attribute__((fastcall)); + + Thus the arguments are present in + + ecx: frame + edx: argp +*/ + +ffi_call_i386: +L(UW0): + # cfi_startproc +#if !HAVE_FASTCALL + movl 4(%esp), %ecx + movl 8(%esp), %edx +#endif + movl (%esp), %eax /* move the return address */ + movl %ebp, (%ecx) /* store %ebp into local frame */ + movl %eax, 4(%ecx) /* store retaddr into local frame */ + + /* New stack frame based off ebp. This is a itty bit of unwind + trickery in that the CFA *has* changed. There is no easy way + to describe it correctly on entry to the function. Fortunately, + it doesn't matter too much since at all points we can correctly + unwind back to ffi_call. Note that the location to which we + moved the return address is (the new) CFA-4, so from the + perspective of the unwind info, it hasn't moved. */ + movl %ecx, %ebp +L(UW1): + # cfi_def_cfa(%ebp, 8) + # cfi_rel_offset(%ebp, 0) + + movl %edx, %esp /* set outgoing argument stack */ + movl 20+R_EAX*4(%ebp), %eax /* set register arguments */ + movl 20+R_EDX*4(%ebp), %edx + movl 20+R_ECX*4(%ebp), %ecx + + call *8(%ebp) + + movl 12(%ebp), %ecx /* load return type code */ + movl %ebx, 8(%ebp) /* preserve %ebx */ +L(UW2): + # cfi_rel_offset(%ebx, 8) + + andl $X86_RET_TYPE_MASK, %ecx +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc1): + leal L(store_table)-L(pc1)(%ebx, %ecx, 8), %ebx +#else + leal L(store_table)(,%ecx, 8), %ebx +#endif + movl 16(%ebp), %ecx /* load result address */ + jmp *%ebx + + .balign 8 +L(store_table): +E(L(store_table), X86_RET_FLOAT) + fstps (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_DOUBLE) + fstpl (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_LDOUBLE) + fstpt (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_SINT8) + movsbl %al, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_SINT16) + movswl %ax, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_UINT8) + movzbl %al, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_UINT16) + movzwl %ax, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_INT64) + movl %edx, 4(%ecx) + /* fallthru */ +E(L(store_table), X86_RET_INT32) + movl %eax, (%ecx) + /* fallthru */ +E(L(store_table), X86_RET_VOID) +L(e1): + movl 8(%ebp), %ebx + movl %ebp, %esp + popl %ebp +L(UW3): + # cfi_remember_state + # cfi_def_cfa(%esp, 4) + # cfi_restore(%ebx) + # cfi_restore(%ebp) + ret +L(UW4): + # cfi_restore_state + +E(L(store_table), X86_RET_STRUCTPOP) + jmp L(e1) +E(L(store_table), X86_RET_STRUCTARG) + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_1B) + movb %al, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_2B) + movw %ax, (%ecx) + jmp L(e1) + + /* Fill out the table so that bad values are predictable. */ +E(L(store_table), X86_RET_UNUSED14) + ud2 +E(L(store_table), X86_RET_UNUSED15) + ud2 + +L(UW5): + # cfi_endproc +ENDF(ffi_call_i386) + +/* The inner helper is declared as + + void ffi_closure_inner(struct closure_frame *frame, char *argp) + __attribute_((fastcall)) + + Thus the arguments are placed in + + ecx: frame + edx: argp +*/ + +/* Macros to help setting up the closure_data structure. */ + +#if HAVE_FASTCALL +# define closure_FS (40 + 4) +# define closure_CF 0 +#else +# define closure_FS (8 + 40 + 12) +# define closure_CF 8 +#endif + +#define FFI_CLOSURE_SAVE_REGS \ + movl %eax, closure_CF+16+R_EAX*4(%esp); \ + movl %edx, closure_CF+16+R_EDX*4(%esp); \ + movl %ecx, closure_CF+16+R_ECX*4(%esp) + +#define FFI_CLOSURE_COPY_TRAMP_DATA \ + movl FFI_TRAMPOLINE_SIZE(%eax), %edx; /* copy cif */ \ + movl FFI_TRAMPOLINE_SIZE+4(%eax), %ecx; /* copy fun */ \ + movl FFI_TRAMPOLINE_SIZE+8(%eax), %eax; /* copy user_data */ \ + movl %edx, closure_CF+28(%esp); \ + movl %ecx, closure_CF+32(%esp); \ + movl %eax, closure_CF+36(%esp) + +#if HAVE_FASTCALL +# define FFI_CLOSURE_PREP_CALL \ + movl %esp, %ecx; /* load closure_data */ \ + leal closure_FS+4(%esp), %edx; /* load incoming stack */ +#else +# define FFI_CLOSURE_PREP_CALL \ + leal closure_CF(%esp), %ecx; /* load closure_data */ \ + leal closure_FS+4(%esp), %edx; /* load incoming stack */ \ + movl %ecx, (%esp); \ + movl %edx, 4(%esp) +#endif + +#define FFI_CLOSURE_CALL_INNER(UWN) \ + call ffi_closure_inner + +#define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \ + andl $X86_RET_TYPE_MASK, %eax; \ + leal L(C1(load_table,N))(, %eax, 8), %edx; \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + jmp *%edx + +#ifdef __PIC__ +# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +# undef FFI_CLOSURE_MASK_AND_JUMP +# define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \ + andl $X86_RET_TYPE_MASK, %eax; \ + call C(__x86.get_pc_thunk.dx); \ +L(C1(pc,N)): \ + leal L(C1(load_table,N))-L(C1(pc,N))(%edx, %eax, 8), %edx; \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + jmp *%edx +# else +# define FFI_CLOSURE_CALL_INNER_SAVE_EBX +# undef FFI_CLOSURE_CALL_INNER +# define FFI_CLOSURE_CALL_INNER(UWN) \ + movl %ebx, 40(%esp); /* save ebx */ \ +L(C1(UW,UWN)): \ + /* cfi_rel_offset(%ebx, 40); */ \ + call C(__x86.get_pc_thunk.bx); /* load got register */ \ + addl $C(_GLOBAL_OFFSET_TABLE_), %ebx; \ + call ffi_closure_inner@PLT +# undef FFI_CLOSURE_MASK_AND_JUMP +# define FFI_CLOSURE_MASK_AND_JUMP(N, UWN) \ + andl $X86_RET_TYPE_MASK, %eax; \ + leal L(C1(load_table,N))@GOTOFF(%ebx, %eax, 8), %edx; \ + movl 40(%esp), %ebx; /* restore ebx */ \ +L(C1(UW,UWN)): \ + /* cfi_restore(%ebx); */ \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + jmp *%edx +# endif /* DARWIN || HIDDEN */ +#endif /* __PIC__ */ + + .balign 16 + .globl C(ffi_go_closure_EAX) + FFI_HIDDEN(C(ffi_go_closure_EAX)) +C(ffi_go_closure_EAX): +L(UW6): + # cfi_startproc + subl $closure_FS, %esp +L(UW7): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%eax), %edx /* copy cif */ + movl 8(%eax), %ecx /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %ecx, closure_CF+32(%esp) + movl %eax, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_i386) +L(UW8): + # cfi_endproc +ENDF(C(ffi_go_closure_EAX)) + + .balign 16 + .globl C(ffi_go_closure_ECX) + FFI_HIDDEN(C(ffi_go_closure_ECX)) +C(ffi_go_closure_ECX): +L(UW9): + # cfi_startproc + subl $closure_FS, %esp +L(UW10): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%ecx), %edx /* copy cif */ + movl 8(%ecx), %eax /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %eax, closure_CF+32(%esp) + movl %ecx, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_i386) +L(UW11): + # cfi_endproc +ENDF(C(ffi_go_closure_ECX)) + +/* The closure entry points are reached from the ffi_closure trampoline. + On entry, %eax contains the address of the ffi_closure. */ + + .balign 16 + .globl C(ffi_closure_i386) + FFI_HIDDEN(C(ffi_closure_i386)) + +C(ffi_closure_i386): +L(UW12): + # cfi_startproc + subl $closure_FS, %esp +L(UW13): + # cfi_def_cfa_offset(closure_FS + 4) + + FFI_CLOSURE_SAVE_REGS + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closures. */ +L(do_closure_i386): + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(14) + FFI_CLOSURE_MASK_AND_JUMP(2, 15) + + .balign 8 +L(load_table2): +E(L(load_table2), X86_RET_FLOAT) + flds closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_DOUBLE) + fldl closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_LDOUBLE) + fldt closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e2) +E(L(load_table2), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e2) +E(L(load_table2), X86_RET_INT64) + movl closure_CF+4(%esp), %edx + jmp L(e2) +E(L(load_table2), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table2), X86_RET_VOID) +L(e2): + addl $closure_FS, %esp +L(UW16): + # cfi_adjust_cfa_offset(-closure_FS) + ret +L(UW17): + # cfi_adjust_cfa_offset(closure_FS) +E(L(load_table2), X86_RET_STRUCTPOP) + addl $closure_FS, %esp +L(UW18): + # cfi_adjust_cfa_offset(-closure_FS) + ret $4 +L(UW19): + # cfi_adjust_cfa_offset(closure_FS) +E(L(load_table2), X86_RET_STRUCTARG) + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e2) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table2), X86_RET_UNUSED14) + ud2 +E(L(load_table2), X86_RET_UNUSED15) + ud2 + +L(UW20): + # cfi_endproc +ENDF(C(ffi_closure_i386)) + + .balign 16 + .globl C(ffi_go_closure_STDCALL) + FFI_HIDDEN(C(ffi_go_closure_STDCALL)) +C(ffi_go_closure_STDCALL): +L(UW21): + # cfi_startproc + subl $closure_FS, %esp +L(UW22): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%ecx), %edx /* copy cif */ + movl 8(%ecx), %eax /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %eax, closure_CF+32(%esp) + movl %ecx, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_STDCALL) +L(UW23): + # cfi_endproc +ENDF(C(ffi_go_closure_STDCALL)) + +/* For REGISTER, we have no available parameter registers, and so we + enter here having pushed the closure onto the stack. */ + + .balign 16 + .globl C(ffi_closure_REGISTER) + FFI_HIDDEN(C(ffi_closure_REGISTER)) +C(ffi_closure_REGISTER): +L(UW24): + # cfi_startproc + # cfi_def_cfa(%esp, 8) + # cfi_offset(%eip, -8) + subl $closure_FS-4, %esp +L(UW25): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl closure_FS-4(%esp), %ecx /* load retaddr */ + movl closure_FS(%esp), %eax /* load closure */ + movl %ecx, closure_FS(%esp) /* move retaddr */ + jmp L(do_closure_REGISTER) +L(UW26): + # cfi_endproc +ENDF(C(ffi_closure_REGISTER)) + +/* For STDCALL (and others), we need to pop N bytes of arguments off + the stack following the closure. The amount needing to be popped + is returned to us from ffi_closure_inner. */ + + .balign 16 + .globl C(ffi_closure_STDCALL) + FFI_HIDDEN(C(ffi_closure_STDCALL)) +C(ffi_closure_STDCALL): +L(UW27): + # cfi_startproc + subl $closure_FS, %esp +L(UW28): + # cfi_def_cfa_offset(closure_FS + 4) + + FFI_CLOSURE_SAVE_REGS + + /* Entry point from ffi_closure_REGISTER. */ +L(do_closure_REGISTER): + + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closure. */ +L(do_closure_STDCALL): + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(29) + + movl %eax, %ecx + shrl $X86_RET_POP_SHIFT, %ecx /* isolate pop count */ + leal closure_FS(%esp, %ecx), %ecx /* compute popped esp */ + movl closure_FS(%esp), %edx /* move return address */ + movl %edx, (%ecx) + + /* From this point on, the value of %esp upon return is %ecx+4, + and we've copied the return address to %ecx to make return easy. + There's no point in representing this in the unwind info, as + there is always a window between the mov and the ret which + will be wrong from one point of view or another. */ + + FFI_CLOSURE_MASK_AND_JUMP(3, 30) + + .balign 8 +L(load_table3): +E(L(load_table3), X86_RET_FLOAT) + flds closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_DOUBLE) + fldl closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_LDOUBLE) + fldt closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_SINT8) + movsbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_SINT16) + movswl %ax, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_UINT8) + movzbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_UINT16) + movzwl %ax, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_INT64) + movl closure_CF+4(%esp), %edx + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_INT32) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_VOID) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCTPOP) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCTARG) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCT_1B) + movzbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCT_2B) + movzwl %ax, %eax + movl %ecx, %esp + ret + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table3), X86_RET_UNUSED14) + ud2 +E(L(load_table3), X86_RET_UNUSED15) + ud2 + +L(UW31): + # cfi_endproc +ENDF(C(ffi_closure_STDCALL)) + +#if !FFI_NO_RAW_API + +#define raw_closure_S_FS (16+16+12) + + .balign 16 + .globl C(ffi_closure_raw_SYSV) + FFI_HIDDEN(C(ffi_closure_raw_SYSV)) +C(ffi_closure_raw_SYSV): +L(UW32): + # cfi_startproc + subl $raw_closure_S_FS, %esp +L(UW33): + # cfi_def_cfa_offset(raw_closure_S_FS + 4) + movl %ebx, raw_closure_S_FS-4(%esp) +L(UW34): + # cfi_rel_offset(%ebx, raw_closure_S_FS-4) + + movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */ + movl %edx, 12(%esp) + leal raw_closure_S_FS+4(%esp), %edx /* load raw_args */ + movl %edx, 8(%esp) + leal 16(%esp), %edx /* load &res */ + movl %edx, 4(%esp) + movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */ + movl %ebx, (%esp) + call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */ + + movl 20(%ebx), %eax /* load cif->flags */ + andl $X86_RET_TYPE_MASK, %eax +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc4): + leal L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx +#else + leal L(load_table4)(,%eax, 8), %ecx +#endif + movl raw_closure_S_FS-4(%esp), %ebx +L(UW35): + # cfi_restore(%ebx) + movl 16(%esp), %eax /* Optimistic load */ + jmp *%ecx + + .balign 8 +L(load_table4): +E(L(load_table4), X86_RET_FLOAT) + flds 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_DOUBLE) + fldl 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_LDOUBLE) + fldt 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e4) +E(L(load_table4), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e4) +E(L(load_table4), X86_RET_INT64) + movl 16+4(%esp), %edx + jmp L(e4) +E(L(load_table4), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table4), X86_RET_VOID) +L(e4): + addl $raw_closure_S_FS, %esp +L(UW36): + # cfi_adjust_cfa_offset(-raw_closure_S_FS) + ret +L(UW37): + # cfi_adjust_cfa_offset(raw_closure_S_FS) +E(L(load_table4), X86_RET_STRUCTPOP) + addl $raw_closure_S_FS, %esp +L(UW38): + # cfi_adjust_cfa_offset(-raw_closure_S_FS) + ret $4 +L(UW39): + # cfi_adjust_cfa_offset(raw_closure_S_FS) +E(L(load_table4), X86_RET_STRUCTARG) + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e4) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table4), X86_RET_UNUSED14) + ud2 +E(L(load_table4), X86_RET_UNUSED15) + ud2 + +L(UW40): + # cfi_endproc +ENDF(C(ffi_closure_raw_SYSV)) + +#define raw_closure_T_FS (16+16+8) + + .balign 16 + .globl C(ffi_closure_raw_THISCALL) + FFI_HIDDEN(C(ffi_closure_raw_THISCALL)) +C(ffi_closure_raw_THISCALL): +L(UW41): + # cfi_startproc + /* Rearrange the stack such that %ecx is the first argument. + This means moving the return address. */ + popl %edx +L(UW42): + # cfi_def_cfa_offset(0) + # cfi_register(%eip, %edx) + pushl %ecx +L(UW43): + # cfi_adjust_cfa_offset(4) + pushl %edx +L(UW44): + # cfi_adjust_cfa_offset(4) + # cfi_rel_offset(%eip, 0) + subl $raw_closure_T_FS, %esp +L(UW45): + # cfi_adjust_cfa_offset(raw_closure_T_FS) + movl %ebx, raw_closure_T_FS-4(%esp) +L(UW46): + # cfi_rel_offset(%ebx, raw_closure_T_FS-4) + + movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */ + movl %edx, 12(%esp) + leal raw_closure_T_FS+4(%esp), %edx /* load raw_args */ + movl %edx, 8(%esp) + leal 16(%esp), %edx /* load &res */ + movl %edx, 4(%esp) + movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */ + movl %ebx, (%esp) + call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */ + + movl 20(%ebx), %eax /* load cif->flags */ + andl $X86_RET_TYPE_MASK, %eax +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc5): + leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx +#else + leal L(load_table5)(,%eax, 8), %ecx +#endif + movl raw_closure_T_FS-4(%esp), %ebx +L(UW47): + # cfi_restore(%ebx) + movl 16(%esp), %eax /* Optimistic load */ + jmp *%ecx + + .balign 8 +L(load_table5): +E(L(load_table5), X86_RET_FLOAT) + flds 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_DOUBLE) + fldl 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_LDOUBLE) + fldt 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e5) +E(L(load_table5), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e5) +E(L(load_table5), X86_RET_INT64) + movl 16+4(%esp), %edx + jmp L(e5) +E(L(load_table5), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table5), X86_RET_VOID) +L(e5): + addl $raw_closure_T_FS, %esp +L(UW48): + # cfi_adjust_cfa_offset(-raw_closure_T_FS) + /* Remove the extra %ecx argument we pushed. */ + ret $4 +L(UW49): + # cfi_adjust_cfa_offset(raw_closure_T_FS) +E(L(load_table5), X86_RET_STRUCTPOP) + addl $raw_closure_T_FS, %esp +L(UW50): + # cfi_adjust_cfa_offset(-raw_closure_T_FS) + ret $8 +L(UW51): + # cfi_adjust_cfa_offset(raw_closure_T_FS) +E(L(load_table5), X86_RET_STRUCTARG) + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e5) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table5), X86_RET_UNUSED14) + ud2 +E(L(load_table5), X86_RET_UNUSED15) + ud2 + +L(UW52): + # cfi_endproc +ENDF(C(ffi_closure_raw_THISCALL)) + +#endif /* !FFI_NO_RAW_API */ + +#ifdef X86_DARWIN +# define COMDAT(X) \ + .section __TEXT,__textcoal_nt,coalesced,pure_instructions; \ + .weak_definition X; \ + .private_extern X +#elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__)) +# define COMDAT(X) \ + .section .text.X,"axG",@progbits,X,comdat; \ + .globl X; \ + FFI_HIDDEN(X) +#else +# define COMDAT(X) +#endif + +#if defined(__PIC__) + COMDAT(C(__x86.get_pc_thunk.bx)) +C(__x86.get_pc_thunk.bx): + movl (%esp), %ebx + ret +ENDF(C(__x86.get_pc_thunk.bx)) +# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE + COMDAT(C(__x86.get_pc_thunk.dx)) +C(__x86.get_pc_thunk.dx): + movl (%esp), %edx + ret +ENDF(C(__x86.get_pc_thunk.dx)) +#endif /* DARWIN || HIDDEN */ +#endif /* __PIC__ */ + +/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ + +#ifdef __APPLE__ +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EHFrame0: +#elif defined(X86_WIN32) +.section .eh_frame,"r" +#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE) +.section .eh_frame,EH_FRAME_FLAGS,@unwind +#else +.section .eh_frame,EH_FRAME_FLAGS,@progbits +#endif + +#ifdef HAVE_AS_X86_PCREL +# define PCREL(X) X - . +#else +# define PCREL(X) X@rel +#endif + +/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */ +#define ADV(N, P) .byte 2, L(N)-L(P) + + .balign 4 +L(CIE): + .set L(set0),L(ECIE)-L(SCIE) + .long L(set0) /* CIE Length */ +L(SCIE): + .long 0 /* CIE Identifier Tag */ + .byte 1 /* CIE Version */ + .ascii "zR\0" /* CIE Augmentation */ + .byte 1 /* CIE Code Alignment Factor */ + .byte 0x7c /* CIE Data Alignment Factor */ + .byte 0x8 /* CIE RA Column */ + .byte 1 /* Augmentation size */ + .byte 0x1b /* FDE Encoding (pcrel sdata4) */ + .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp offset 4 */ + .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */ + .balign 4 +L(ECIE): + + .set L(set1),L(EFDE1)-L(SFDE1) + .long L(set1) /* FDE Length */ +L(SFDE1): + .long L(SFDE1)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW0)) /* Initial location */ + .long L(UW5)-L(UW0) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW1, UW0) + .byte 0xc, 5, 8 /* DW_CFA_def_cfa, %ebp 8 */ + .byte 0x80+5, 2 /* DW_CFA_offset, %ebp 2*-4 */ + ADV(UW2, UW1) + .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */ + ADV(UW3, UW2) + .byte 0xa /* DW_CFA_remember_state */ + .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp 4 */ + .byte 0xc0+3 /* DW_CFA_restore, %ebx */ + .byte 0xc0+5 /* DW_CFA_restore, %ebp */ + ADV(UW4, UW3) + .byte 0xb /* DW_CFA_restore_state */ + .balign 4 +L(EFDE1): + + .set L(set2),L(EFDE2)-L(SFDE2) + .long L(set2) /* FDE Length */ +L(SFDE2): + .long L(SFDE2)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW6)) /* Initial location */ + .long L(UW8)-L(UW6) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW7, UW6) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE2): + + .set L(set3),L(EFDE3)-L(SFDE3) + .long L(set3) /* FDE Length */ +L(SFDE3): + .long L(SFDE3)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW9)) /* Initial location */ + .long L(UW11)-L(UW9) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW10, UW9) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE3): + + .set L(set4),L(EFDE4)-L(SFDE4) + .long L(set4) /* FDE Length */ +L(SFDE4): + .long L(SFDE4)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW12)) /* Initial location */ + .long L(UW20)-L(UW12) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW13, UW12) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW14, UW13) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW15, UW14) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW16, UW15) +#else + ADV(UW16, UW13) +#endif + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW17, UW16) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW18, UW17) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW19, UW18) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE4): + + .set L(set5),L(EFDE5)-L(SFDE5) + .long L(set5) /* FDE Length */ +L(SFDE5): + .long L(SFDE5)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW21)) /* Initial location */ + .long L(UW23)-L(UW21) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW22, UW21) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE5): + + .set L(set6),L(EFDE6)-L(SFDE6) + .long L(set6) /* FDE Length */ +L(SFDE6): + .long L(SFDE6)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW24)) /* Initial location */ + .long L(UW26)-L(UW24) /* Address range */ + .byte 0 /* Augmentation size */ + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */ + ADV(UW25, UW24) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE6): + + .set L(set7),L(EFDE7)-L(SFDE7) + .long L(set7) /* FDE Length */ +L(SFDE7): + .long L(SFDE7)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW27)) /* Initial location */ + .long L(UW31)-L(UW27) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW28, UW27) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW29, UW28) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW30, UW29) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ +#endif + .balign 4 +L(EFDE7): + +#if !FFI_NO_RAW_API + .set L(set8),L(EFDE8)-L(SFDE8) + .long L(set8) /* FDE Length */ +L(SFDE8): + .long L(SFDE8)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW32)) /* Initial location */ + .long L(UW40)-L(UW32) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW33, UW32) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW34, UW33) + .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */ + ADV(UW35, UW34) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW36, UW35) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW37, UW36) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW38, UW37) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW39, UW38) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE8): + + .set L(set9),L(EFDE9)-L(SFDE9) + .long L(set9) /* FDE Length */ +L(SFDE9): + .long L(SFDE9)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW41)) /* Initial location */ + .long L(UW52)-L(UW41) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW42, UW41) + .byte 0xe, 0 /* DW_CFA_def_cfa_offset */ + .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */ + ADV(UW43, UW42) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW44, UW43) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */ + ADV(UW45, UW44) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW46, UW45) + .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */ + ADV(UW47, UW46) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW48, UW47) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW49, UW48) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW50, UW49) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW51, UW50) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE9): +#endif /* !FFI_NO_RAW_API */ + +#endif /* ifndef _MSC_VER */ +#endif /* ifndef __x86_64__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/unix64.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/unix64.S new file mode 100644 index 0000000000..db792c0dd7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/unix64.S @@ -0,0 +1,525 @@ +/* ----------------------------------------------------------------------- + unix64.S - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 2008 Red Hat, Inc + - Copyright (c) 2002 Bo Thorsen + + x86-64 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifdef __x86_64__ +#define LIBFFI_ASM +#include +#include +#include "internal64.h" +#include "asmnames.h" + + .text + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + X * 8 +#endif + +/* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, + void *raddr, void (*fnaddr)(void)); + + Bit o trickiness here -- ARGS+BYTES is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .balign 8 + .globl C(ffi_call_unix64) + FFI_HIDDEN(C(ffi_call_unix64)) + +C(ffi_call_unix64): +L(UW0): + movq (%rsp), %r10 /* Load return address. */ + leaq (%rdi, %rsi), %rax /* Find local stack base. */ + movq %rdx, (%rax) /* Save flags. */ + movq %rcx, 8(%rax) /* Save raddr. */ + movq %rbp, 16(%rax) /* Save old frame pointer. */ + movq %r10, 24(%rax) /* Relocate return address. */ + movq %rax, %rbp /* Finalize local stack frame. */ + + /* New stack frame based off rbp. This is a itty bit of unwind + trickery in that the CFA *has* changed. There is no easy way + to describe it correctly on entry to the function. Fortunately, + it doesn't matter too much since at all points we can correctly + unwind back to ffi_call. Note that the location to which we + moved the return address is (the new) CFA-8, so from the + perspective of the unwind info, it hasn't moved. */ +L(UW1): + /* cfi_def_cfa(%rbp, 32) */ + /* cfi_rel_offset(%rbp, 16) */ + + movq %rdi, %r10 /* Save a copy of the register area. */ + movq %r8, %r11 /* Save a copy of the target fn. */ + movl %r9d, %eax /* Set number of SSE registers. */ + + /* Load up all argument registers. */ + movq (%r10), %rdi + movq 0x08(%r10), %rsi + movq 0x10(%r10), %rdx + movq 0x18(%r10), %rcx + movq 0x20(%r10), %r8 + movq 0x28(%r10), %r9 + movl 0xb0(%r10), %eax + testl %eax, %eax + jnz L(load_sse) +L(ret_from_load_sse): + + /* Deallocate the reg arg area, except for r10, then load via pop. */ + leaq 0xb8(%r10), %rsp + popq %r10 + + /* Call the user function. */ + call *%r11 + + /* Deallocate stack arg area; local stack frame in redzone. */ + leaq 24(%rbp), %rsp + + movq 0(%rbp), %rcx /* Reload flags. */ + movq 8(%rbp), %rdi /* Reload raddr. */ + movq 16(%rbp), %rbp /* Reload old frame pointer. */ +L(UW2): + /* cfi_remember_state */ + /* cfi_def_cfa(%rsp, 8) */ + /* cfi_restore(%rbp) */ + + /* The first byte of the flags contains the FFI_TYPE. */ + cmpb $UNIX64_RET_LAST, %cl + movzbl %cl, %r10d + leaq L(store_table)(%rip), %r11 + ja L(sa) + leaq (%r11, %r10, 8), %r10 + + /* Prep for the structure cases: scratch area in redzone. */ + leaq -20(%rsp), %rsi + jmp *%r10 + + .balign 8 +L(store_table): +E(L(store_table), UNIX64_RET_VOID) + ret +E(L(store_table), UNIX64_RET_UINT8) + movzbl %al, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_UINT16) + movzwl %ax, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_UINT32) + movl %eax, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT8) + movsbq %al, %rax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT16) + movswq %ax, %rax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT32) + cltq + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_INT64) + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_XMM32) + movd %xmm0, (%rdi) + ret +E(L(store_table), UNIX64_RET_XMM64) + movq %xmm0, (%rdi) + ret +E(L(store_table), UNIX64_RET_X87) + fstpt (%rdi) + ret +E(L(store_table), UNIX64_RET_X87_2) + fstpt (%rdi) + fstpt 16(%rdi) + ret +E(L(store_table), UNIX64_RET_ST_XMM0_RAX) + movq %rax, 8(%rsi) + jmp L(s3) +E(L(store_table), UNIX64_RET_ST_RAX_XMM0) + movq %xmm0, 8(%rsi) + jmp L(s2) +E(L(store_table), UNIX64_RET_ST_XMM0_XMM1) + movq %xmm1, 8(%rsi) + jmp L(s3) +E(L(store_table), UNIX64_RET_ST_RAX_RDX) + movq %rdx, 8(%rsi) +L(s2): + movq %rax, (%rsi) + shrl $UNIX64_SIZE_SHIFT, %ecx + rep movsb + ret + .balign 8 +L(s3): + movq %xmm0, (%rsi) + shrl $UNIX64_SIZE_SHIFT, %ecx + rep movsb + ret + +L(sa): call PLT(C(abort)) + + /* Many times we can avoid loading any SSE registers at all. + It's not worth an indirect jump to load the exact set of + SSE registers needed; zero or all is a good compromise. */ + .balign 2 +L(UW3): + /* cfi_restore_state */ +L(load_sse): + movdqa 0x30(%r10), %xmm0 + movdqa 0x40(%r10), %xmm1 + movdqa 0x50(%r10), %xmm2 + movdqa 0x60(%r10), %xmm3 + movdqa 0x70(%r10), %xmm4 + movdqa 0x80(%r10), %xmm5 + movdqa 0x90(%r10), %xmm6 + movdqa 0xa0(%r10), %xmm7 + jmp L(ret_from_load_sse) + +L(UW4): +ENDF(C(ffi_call_unix64)) + +/* 6 general registers, 8 vector registers, + 32 bytes of rvalue, 8 bytes of alignment. */ +#define ffi_closure_OFS_G 0 +#define ffi_closure_OFS_V (6*8) +#define ffi_closure_OFS_RVALUE (ffi_closure_OFS_V + 8*16) +#define ffi_closure_FS (ffi_closure_OFS_RVALUE + 32 + 8) + +/* The location of rvalue within the red zone after deallocating the frame. */ +#define ffi_closure_RED_RVALUE (ffi_closure_OFS_RVALUE - ffi_closure_FS) + + .balign 2 + .globl C(ffi_closure_unix64_sse) + FFI_HIDDEN(C(ffi_closure_unix64_sse)) + +C(ffi_closure_unix64_sse): +L(UW5): + subq $ffi_closure_FS, %rsp +L(UW6): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ + + movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp) + movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp) + movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp) + movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp) + movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp) + movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp) + movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp) + movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp) + jmp L(sse_entry1) + +L(UW7): +ENDF(C(ffi_closure_unix64_sse)) + + .balign 2 + .globl C(ffi_closure_unix64) + FFI_HIDDEN(C(ffi_closure_unix64)) + +C(ffi_closure_unix64): +L(UW8): + subq $ffi_closure_FS, %rsp +L(UW9): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ +L(sse_entry1): + movq %rdi, ffi_closure_OFS_G+0x00(%rsp) + movq %rsi, ffi_closure_OFS_G+0x08(%rsp) + movq %rdx, ffi_closure_OFS_G+0x10(%rsp) + movq %rcx, ffi_closure_OFS_G+0x18(%rsp) + movq %r8, ffi_closure_OFS_G+0x20(%rsp) + movq %r9, ffi_closure_OFS_G+0x28(%rsp) + +#ifdef __ILP32__ + movl FFI_TRAMPOLINE_SIZE(%r10), %edi /* Load cif */ + movl FFI_TRAMPOLINE_SIZE+4(%r10), %esi /* Load fun */ + movl FFI_TRAMPOLINE_SIZE+8(%r10), %edx /* Load user_data */ +#else + movq FFI_TRAMPOLINE_SIZE(%r10), %rdi /* Load cif */ + movq FFI_TRAMPOLINE_SIZE+8(%r10), %rsi /* Load fun */ + movq FFI_TRAMPOLINE_SIZE+16(%r10), %rdx /* Load user_data */ +#endif +L(do_closure): + leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */ + movq %rsp, %r8 /* Load reg_args */ + leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */ + call PLT(C(ffi_closure_unix64_inner)) + + /* Deallocate stack frame early; return value is now in redzone. */ + addq $ffi_closure_FS, %rsp +L(UW10): + /* cfi_adjust_cfa_offset(-ffi_closure_FS) */ + + /* The first byte of the return value contains the FFI_TYPE. */ + cmpb $UNIX64_RET_LAST, %al + movzbl %al, %r10d + leaq L(load_table)(%rip), %r11 + ja L(la) + leaq (%r11, %r10, 8), %r10 + leaq ffi_closure_RED_RVALUE(%rsp), %rsi + jmp *%r10 + + .balign 8 +L(load_table): +E(L(load_table), UNIX64_RET_VOID) + ret +E(L(load_table), UNIX64_RET_UINT8) + movzbl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_UINT16) + movzwl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_UINT32) + movl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT8) + movsbl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT16) + movswl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT32) + movl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_INT64) + movq (%rsi), %rax + ret +E(L(load_table), UNIX64_RET_XMM32) + movd (%rsi), %xmm0 + ret +E(L(load_table), UNIX64_RET_XMM64) + movq (%rsi), %xmm0 + ret +E(L(load_table), UNIX64_RET_X87) + fldt (%rsi) + ret +E(L(load_table), UNIX64_RET_X87_2) + fldt 16(%rsi) + fldt (%rsi) + ret +E(L(load_table), UNIX64_RET_ST_XMM0_RAX) + movq 8(%rsi), %rax + jmp L(l3) +E(L(load_table), UNIX64_RET_ST_RAX_XMM0) + movq 8(%rsi), %xmm0 + jmp L(l2) +E(L(load_table), UNIX64_RET_ST_XMM0_XMM1) + movq 8(%rsi), %xmm1 + jmp L(l3) +E(L(load_table), UNIX64_RET_ST_RAX_RDX) + movq 8(%rsi), %rdx +L(l2): + movq (%rsi), %rax + ret + .balign 8 +L(l3): + movq (%rsi), %xmm0 + ret + +L(la): call PLT(C(abort)) + +L(UW11): +ENDF(C(ffi_closure_unix64)) + + .balign 2 + .globl C(ffi_go_closure_unix64_sse) + FFI_HIDDEN(C(ffi_go_closure_unix64_sse)) + +C(ffi_go_closure_unix64_sse): +L(UW12): + subq $ffi_closure_FS, %rsp +L(UW13): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ + + movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp) + movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp) + movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp) + movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp) + movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp) + movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp) + movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp) + movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp) + jmp L(sse_entry2) + +L(UW14): +ENDF(C(ffi_go_closure_unix64_sse)) + + .balign 2 + .globl C(ffi_go_closure_unix64) + FFI_HIDDEN(C(ffi_go_closure_unix64)) + +C(ffi_go_closure_unix64): +L(UW15): + subq $ffi_closure_FS, %rsp +L(UW16): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ +L(sse_entry2): + movq %rdi, ffi_closure_OFS_G+0x00(%rsp) + movq %rsi, ffi_closure_OFS_G+0x08(%rsp) + movq %rdx, ffi_closure_OFS_G+0x10(%rsp) + movq %rcx, ffi_closure_OFS_G+0x18(%rsp) + movq %r8, ffi_closure_OFS_G+0x20(%rsp) + movq %r9, ffi_closure_OFS_G+0x28(%rsp) + +#ifdef __ILP32__ + movl 4(%r10), %edi /* Load cif */ + movl 8(%r10), %esi /* Load fun */ + movl %r10d, %edx /* Load closure (user_data) */ +#else + movq 8(%r10), %rdi /* Load cif */ + movq 16(%r10), %rsi /* Load fun */ + movq %r10, %rdx /* Load closure (user_data) */ +#endif + jmp L(do_closure) + +L(UW17): +ENDF(C(ffi_go_closure_unix64)) + +/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ + +#ifdef __APPLE__ +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EHFrame0: +#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE) +.section .eh_frame,"a",@unwind +#else +.section .eh_frame,"a",@progbits +#endif + +#ifdef HAVE_AS_X86_PCREL +# define PCREL(X) X - . +#else +# define PCREL(X) X@rel +#endif + +/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */ +#define ADV(N, P) .byte 2, L(N)-L(P) + + .balign 8 +L(CIE): + .set L(set0),L(ECIE)-L(SCIE) + .long L(set0) /* CIE Length */ +L(SCIE): + .long 0 /* CIE Identifier Tag */ + .byte 1 /* CIE Version */ + .ascii "zR\0" /* CIE Augmentation */ + .byte 1 /* CIE Code Alignment Factor */ + .byte 0x78 /* CIE Data Alignment Factor */ + .byte 0x10 /* CIE RA Column */ + .byte 1 /* Augmentation size */ + .byte 0x1b /* FDE Encoding (pcrel sdata4) */ + .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp offset 8 */ + .byte 0x80+16, 1 /* DW_CFA_offset, %rip offset 1*-8 */ + .balign 8 +L(ECIE): + + .set L(set1),L(EFDE1)-L(SFDE1) + .long L(set1) /* FDE Length */ +L(SFDE1): + .long L(SFDE1)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW0)) /* Initial location */ + .long L(UW4)-L(UW0) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW1, UW0) + .byte 0xc, 6, 32 /* DW_CFA_def_cfa, %rbp 32 */ + .byte 0x80+6, 2 /* DW_CFA_offset, %rbp 2*-8 */ + ADV(UW2, UW1) + .byte 0xa /* DW_CFA_remember_state */ + .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp 8 */ + .byte 0xc0+6 /* DW_CFA_restore, %rbp */ + ADV(UW3, UW2) + .byte 0xb /* DW_CFA_restore_state */ + .balign 8 +L(EFDE1): + + .set L(set2),L(EFDE2)-L(SFDE2) + .long L(set2) /* FDE Length */ +L(SFDE2): + .long L(SFDE2)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW5)) /* Initial location */ + .long L(UW7)-L(UW5) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW6, UW5) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE2): + + .set L(set3),L(EFDE3)-L(SFDE3) + .long L(set3) /* FDE Length */ +L(SFDE3): + .long L(SFDE3)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW8)) /* Initial location */ + .long L(UW11)-L(UW8) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW9, UW8) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + ADV(UW10, UW9) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset 8 */ +L(EFDE3): + + .set L(set4),L(EFDE4)-L(SFDE4) + .long L(set4) /* FDE Length */ +L(SFDE4): + .long L(SFDE4)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW12)) /* Initial location */ + .long L(UW14)-L(UW12) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW13, UW12) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE4): + + .set L(set5),L(EFDE5)-L(SFDE5) + .long L(set5) /* FDE Length */ +L(SFDE5): + .long L(SFDE5)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW15)) /* Initial location */ + .long L(UW17)-L(UW15) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW16, UW15) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE5): +#ifdef __APPLE__ + .subsections_via_symbols +#endif + +#endif /* __x86_64__ */ +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64.S new file mode 100644 index 0000000000..10991b4fa5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64.S @@ -0,0 +1,232 @@ +#define LIBFFI_ASM +#include +#include +#include +#include "asmnames.h" + +#if defined(HAVE_AS_CFI_PSEUDO_OP) + .cfi_sections .debug_frame +#endif + +#ifdef X86_WIN64 +#define SEH(...) __VA_ARGS__ +#define arg0 %rcx +#define arg1 %rdx +#define arg2 %r8 +#define arg3 %r9 +#else +#define SEH(...) +#define arg0 %rdi +#define arg1 %rsi +#define arg2 %rdx +#define arg3 %rcx +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + X * 8 +#endif + + .text + +/* ffi_call_win64 (void *stack, struct win64_call_frame *frame, void *r10) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .align 8 + .globl C(ffi_call_win64) + + SEH(.seh_proc ffi_call_win64) +C(ffi_call_win64): + cfi_startproc + /* Set up the local stack frame and install it in rbp/rsp. */ + movq (%rsp), %rax + movq %rbp, (arg1) + movq %rax, 8(arg1) + movq arg1, %rbp + cfi_def_cfa(%rbp, 16) + cfi_rel_offset(%rbp, 0) + SEH(.seh_pushreg %rbp) + SEH(.seh_setframe %rbp, 0) + SEH(.seh_endprologue) + movq arg0, %rsp + + movq arg2, %r10 + + /* Load all slots into both general and xmm registers. */ + movq (%rsp), %rcx + movsd (%rsp), %xmm0 + movq 8(%rsp), %rdx + movsd 8(%rsp), %xmm1 + movq 16(%rsp), %r8 + movsd 16(%rsp), %xmm2 + movq 24(%rsp), %r9 + movsd 24(%rsp), %xmm3 + + call *16(%rbp) + + movl 24(%rbp), %ecx + movq 32(%rbp), %r8 + leaq 0f(%rip), %r10 + cmpl $FFI_TYPE_SMALL_STRUCT_4B, %ecx + leaq (%r10, %rcx, 8), %r10 + ja 99f + jmp *%r10 + +/* Below, we're space constrained most of the time. Thus we eschew the + modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */ +.macro epilogue + leaveq + cfi_remember_state + cfi_def_cfa(%rsp, 8) + cfi_restore(%rbp) + ret + cfi_restore_state +.endm + + .align 8 +0: +E(0b, FFI_TYPE_VOID) + epilogue +E(0b, FFI_TYPE_INT) + movslq %eax, %rax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_FLOAT) + movss %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_DOUBLE) + movsd %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_LONGDOUBLE) + call PLT(C(abort)) +E(0b, FFI_TYPE_UINT8) + movzbl %al, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT8) + movsbq %al, %rax + jmp 98f +E(0b, FFI_TYPE_UINT16) + movzwl %ax, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT16) + movswq %ax, %rax + jmp 98f +E(0b, FFI_TYPE_UINT32) + movl %eax, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT32) + movslq %eax, %rax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_UINT64) +98: movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT64) + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_STRUCT) + epilogue +E(0b, FFI_TYPE_POINTER) + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_COMPLEX) + call PLT(C(abort)) +E(0b, FFI_TYPE_SMALL_STRUCT_1B) + movb %al, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_2B) + movw %ax, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_4B) + movl %eax, (%r8) + epilogue + + .align 8 +99: call PLT(C(abort)) + + epilogue + + cfi_endproc + SEH(.seh_endproc) + + +/* 32 bytes of outgoing register stack space, 8 bytes of alignment, + 16 bytes of result, 32 bytes of xmm registers. */ +#define ffi_clo_FS (32+8+16+32) +#define ffi_clo_OFF_R (32+8) +#define ffi_clo_OFF_X (32+8+16) + + .align 8 + .globl C(ffi_go_closure_win64) + + SEH(.seh_proc ffi_go_closure_win64) +C(ffi_go_closure_win64): + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + movq %rcx, 8(%rsp) + movq %rdx, 16(%rsp) + movq %r8, 24(%rsp) + movq %r9, 32(%rsp) + + movq 8(%r10), %rcx /* load cif */ + movq 16(%r10), %rdx /* load fun */ + movq %r10, %r8 /* closure is user_data */ + jmp 0f + cfi_endproc + SEH(.seh_endproc) + + .align 8 + .globl C(ffi_closure_win64) + + SEH(.seh_proc ffi_closure_win64) +C(ffi_closure_win64): + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + movq %rcx, 8(%rsp) + movq %rdx, 16(%rsp) + movq %r8, 24(%rsp) + movq %r9, 32(%rsp) + + movq FFI_TRAMPOLINE_SIZE(%r10), %rcx /* load cif */ + movq FFI_TRAMPOLINE_SIZE+8(%r10), %rdx /* load fun */ + movq FFI_TRAMPOLINE_SIZE+16(%r10), %r8 /* load user_data */ +0: + subq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(ffi_clo_FS) + SEH(.seh_stackalloc ffi_clo_FS) + SEH(.seh_endprologue) + + /* Save all sse arguments into the stack frame. */ + movsd %xmm0, ffi_clo_OFF_X(%rsp) + movsd %xmm1, ffi_clo_OFF_X+8(%rsp) + movsd %xmm2, ffi_clo_OFF_X+16(%rsp) + movsd %xmm3, ffi_clo_OFF_X+24(%rsp) + + leaq ffi_clo_OFF_R(%rsp), %r9 + call PLT(C(ffi_closure_win64_inner)) + + /* Load the result into both possible result registers. */ + movq ffi_clo_OFF_R(%rsp), %rax + movsd ffi_clo_OFF_R(%rsp), %xmm0 + + addq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(-ffi_clo_FS) + ret + + cfi_endproc + SEH(.seh_endproc) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64_intel.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64_intel.S new file mode 100644 index 0000000000..7df78b30e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/x86/win64_intel.S @@ -0,0 +1,237 @@ +#define LIBFFI_ASM +#include +#include +#include +#include "asmnames.h" + +#if defined(HAVE_AS_CFI_PSEUDO_OP) + .cfi_sections .debug_frame +#endif + +#ifdef X86_WIN64 +#define SEH(...) __VA_ARGS__ +#define arg0 rcx +#define arg1 rdx +#define arg2 r8 +#define arg3 r9 +#else +#define SEH(...) +#define arg0 rdi +#define arg1 rsi +#define arg2 rdx +#define arg3 rcx +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) ALIGN 8 +#else +# define E(BASE, X) ALIGN 8; ORG BASE + X * 8 +#endif + + .CODE + extern PLT(C(abort)):near + extern C(ffi_closure_win64_inner):near + +/* ffi_call_win64 (void *stack, struct win64_call_frame *frame, void *r10) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + ALIGN 8 + PUBLIC C(ffi_call_win64) + + ; SEH(.safesh ffi_call_win64) +C(ffi_call_win64) proc SEH(frame) + cfi_startproc + /* Set up the local stack frame and install it in rbp/rsp. */ + mov RAX, [RSP] ; movq (%rsp), %rax + mov [arg1], RBP ; movq %rbp, (arg1) + mov [arg1 + 8], RAX; movq %rax, 8(arg1) + mov RBP, arg1; movq arg1, %rbp + cfi_def_cfa(rbp, 16) + cfi_rel_offset(rbp, 0) + SEH(.pushreg rbp) + SEH(.setframe rbp, 0) + SEH(.endprolog) + mov RSP, arg0 ; movq arg0, %rsp + + mov R10, arg2 ; movq arg2, %r10 + + /* Load all slots into both general and xmm registers. */ + mov RCX, [RSP] ; movq (%rsp), %rcx + movsd XMM0, qword ptr [RSP] ; movsd (%rsp), %xmm0 + mov RDX, [RSP + 8] ;movq 8(%rsp), %rdx + movsd XMM1, qword ptr [RSP + 8]; movsd 8(%rsp), %xmm1 + mov R8, [RSP + 16] ; movq 16(%rsp), %r8 + movsd XMM2, qword ptr [RSP + 16] ; movsd 16(%rsp), %xmm2 + mov R9, [RSP + 24] ; movq 24(%rsp), %r9 + movsd XMM3, qword ptr [RSP + 24] ;movsd 24(%rsp), %xmm3 + + CALL qword ptr [RBP + 16] ; call *16(%rbp) + + mov ECX, [RBP + 24] ; movl 24(%rbp), %ecx + mov R8, [RBP + 32] ; movq 32(%rbp), %r8 + LEA R10, ffi_call_win64_tab ; leaq 0f(%rip), %r10 + CMP ECX, FFI_TYPE_SMALL_STRUCT_4B ; cmpl $FFI_TYPE_SMALL_STRUCT_4B, %ecx + LEA R10, [R10 + RCX*8] ; leaq (%r10, %rcx, 8), %r10 + JA L99 ; ja 99f + JMP R10 ; jmp *%r10 + +/* Below, we're space constrained most of the time. Thus we eschew the + modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */ +epilogue macro + LEAVE + cfi_remember_state + cfi_def_cfa(rsp, 8) + cfi_restore(rbp) + RET + cfi_restore_state +endm + + ALIGN 8 +ffi_call_win64_tab LABEL NEAR +E(0b, FFI_TYPE_VOID) + epilogue +E(0b, FFI_TYPE_INT) + movsxd rax, eax ; movslq %eax, %rax + mov qword ptr [r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_FLOAT) + movss dword ptr [r8], xmm0 ; movss %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_DOUBLE) + movsd qword ptr[r8], xmm0; movsd %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_LONGDOUBLE) + call PLT(C(abort)) +E(0b, FFI_TYPE_UINT8) + movzx eax, al ;movzbl %al, %eax + mov qword ptr[r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT8) + movsx rax, al ; movsbq %al, %rax + jmp L98 +E(0b, FFI_TYPE_UINT16) + movzx eax, ax ; movzwl %ax, %eax + mov qword ptr[r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT16) + movsx rax, ax; movswq %ax, %rax + jmp L98 +E(0b, FFI_TYPE_UINT32) + mov eax, eax; movl %eax, %eax + mov qword ptr[r8], rax ; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT32) + movsxd rax, eax; movslq %eax, %rax + mov qword ptr [r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_UINT64) +L98 LABEL near + mov qword ptr [r8], rax ; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT64) + mov qword ptr [r8], rax;movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_STRUCT) + epilogue +E(0b, FFI_TYPE_POINTER) + mov qword ptr [r8], rax ;movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_COMPLEX) + call PLT(C(abort)) +E(0b, FFI_TYPE_SMALL_STRUCT_1B) + mov byte ptr [r8], al ; movb %al, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_2B) + mov word ptr [r8], ax ; movw %ax, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_4B) + mov dword ptr [r8], eax ; movl %eax, (%r8) + epilogue + + align 8 +L99 LABEL near + call PLT(C(abort)) + + epilogue + + cfi_endproc + C(ffi_call_win64) endp + + +/* 32 bytes of outgoing register stack space, 8 bytes of alignment, + 16 bytes of result, 32 bytes of xmm registers. */ +#define ffi_clo_FS (32+8+16+32) +#define ffi_clo_OFF_R (32+8) +#define ffi_clo_OFF_X (32+8+16) + + align 8 + PUBLIC C(ffi_go_closure_win64) + +C(ffi_go_closure_win64) proc + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + mov qword ptr [rsp + 8], rcx; movq %rcx, 8(%rsp) + mov qword ptr [rsp + 16], rdx; movq %rdx, 16(%rsp) + mov qword ptr [rsp + 24], r8; movq %r8, 24(%rsp) + mov qword ptr [rsp + 32], r9 ;movq %r9, 32(%rsp) + + mov rcx, qword ptr [r10 + 8]; movq 8(%r10), %rcx /* load cif */ + mov rdx, qword ptr [r10 + 16]; movq 16(%r10), %rdx /* load fun */ + mov r8, r10 ; movq %r10, %r8 /* closure is user_data */ + jmp ffi_closure_win64_2 + cfi_endproc + C(ffi_go_closure_win64) endp + + align 8 + +PUBLIC C(ffi_closure_win64) +C(ffi_closure_win64) PROC FRAME + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + mov qword ptr [rsp + 8], rcx; movq %rcx, 8(%rsp) + mov qword ptr [rsp + 16], rdx; movq %rdx, 16(%rsp) + mov qword ptr [rsp + 24], r8; movq %r8, 24(%rsp) + mov qword ptr [rsp + 32], r9; movq %r9, 32(%rsp) + + mov rcx, qword ptr [FFI_TRAMPOLINE_SIZE + r10] ;movq FFI_TRAMPOLINE_SIZE(%r10), %rcx /* load cif */ + mov rdx, qword ptr [FFI_TRAMPOLINE_SIZE + 8 + r10] ; movq FFI_TRAMPOLINE_SIZE+8(%r10), %rdx /* load fun */ + mov r8, qword ptr [FFI_TRAMPOLINE_SIZE+16+r10] ;movq FFI_TRAMPOLINE_SIZE+16(%r10), %r8 /* load user_data */ +ffi_closure_win64_2 LABEL near + sub rsp, ffi_clo_FS ;subq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(ffi_clo_FS) + SEH(.allocstack ffi_clo_FS) + SEH(.endprolog) + + /* Save all sse arguments into the stack frame. */ + movsd qword ptr [ffi_clo_OFF_X + rsp], xmm0 ; movsd %xmm0, ffi_clo_OFF_X(%rsp) + movsd qword ptr [ffi_clo_OFF_X+8+rsp], xmm1 ; movsd %xmm1, ffi_clo_OFF_X+8(%rsp) + movsd qword ptr [ffi_clo_OFF_X+16+rsp], xmm2 ; movsd %xmm2, ffi_clo_OFF_X+16(%rsp) + movsd qword ptr [ffi_clo_OFF_X+24+rsp], xmm3 ; movsd %xmm3, ffi_clo_OFF_X+24(%rsp) + + lea r9, [ffi_clo_OFF_R + rsp] ; leaq ffi_clo_OFF_R(%rsp), %r9 + call C(ffi_closure_win64_inner) + + /* Load the result into both possible result registers. */ + + mov rax, qword ptr [ffi_clo_OFF_R + rsp] ;movq ffi_clo_OFF_R(%rsp), %rax + movsd xmm0, qword ptr [rsp + ffi_clo_OFF_R] ;movsd ffi_clo_OFF_R(%rsp), %xmm0 + + add rsp, ffi_clo_FS ;addq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(-ffi_clo_FS) + ret + + cfi_endproc + C(ffi_closure_win64) endp + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +_text ends +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffi.c new file mode 100644 index 0000000000..9a0575ff90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffi.c @@ -0,0 +1,298 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Tensilica, Inc. + + XTENSA Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#include +#include + +/* + |----------------------------------------| + | | + on entry to ffi_call ----> |----------------------------------------| + | caller stack frame for registers a0-a3 | + |----------------------------------------| + | | + | additional arguments | + entry of the function ---> |----------------------------------------| + | copy of function arguments a2-a7 | + | - - - - - - - - - - - - - | + | | + + The area below the entry line becomes the new stack frame for the function. + +*/ + + +#define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST + + +extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags, + void(*fn)(void), unsigned nbytes, extended_cif*); +extern void ffi_closure_SYSV(void) FFI_HIDDEN; + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + switch(cif->rtype->type) { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + cif->flags = cif->rtype->type; + break; + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + cif->flags = FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI_TYPE_UINT64; // cif->rtype->type; + break; + case FFI_TYPE_STRUCT: + cif->flags = FFI_TYPE_STRUCT; //_REGS; + /* Up to 16 bytes are returned in registers */ + if (cif->rtype->size > 4 * 4) { + /* returned structure is referenced by a register; use 8 bytes + (including 4 bytes for potential additional alignment) */ + cif->flags = FFI_TYPE_STRUCT; + cif->bytes += 8; + } + break; + + default: + cif->flags = FFI_TYPE_UINT32; + break; + } + + /* Round the stack up to a full 4 register frame, just in case + (we use this size in movsp). This way, it's also a multiple of + 8 bytes for 64-bit arguments. */ + cif->bytes = FFI_ALIGN(cif->bytes, 16); + + return FFI_OK; +} + +void ffi_prep_args(extended_cif *ecif, unsigned char* stack) +{ + unsigned int i; + unsigned long *addr; + ffi_type **ptr; + + union { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + unsigned int **i; + long long **ll; + float **f; + double **d; + } p_argv; + + /* Verify that everything is aligned up properly */ + FFI_ASSERT (((unsigned long) stack & 0x7) == 0); + + p_argv.v = ecif->avalue; + addr = (unsigned long*)stack; + + /* structures with a size greater than 16 bytes are passed in memory */ + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16) + { + *addr++ = (unsigned long)ecif->rvalue; + } + + for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types; + i > 0; + i--, ptr++, p_argv.v++) + { + switch ((*ptr)->type) + { + case FFI_TYPE_SINT8: + *addr++ = **p_argv.sc; + break; + case FFI_TYPE_UINT8: + *addr++ = **p_argv.uc; + break; + case FFI_TYPE_SINT16: + *addr++ = **p_argv.ss; + break; + case FFI_TYPE_UINT16: + *addr++ = **p_argv.us; + break; + case FFI_TYPE_FLOAT: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *addr++ = **p_argv.i; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (((unsigned long)addr & 4) != 0) + addr++; + *(unsigned long long*)addr = **p_argv.ll; + addr += sizeof(unsigned long long) / sizeof (addr); + break; + + case FFI_TYPE_STRUCT: + { + unsigned long offs; + unsigned long size; + + if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4) + addr++; + + offs = (unsigned long) addr - (unsigned long) stack; + size = (*ptr)->size; + + /* Entire structure must fit the argument registers or referenced */ + if (offs < FFI_REGISTER_NARGS * 4 + && offs + size > FFI_REGISTER_NARGS * 4) + addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4); + + memcpy((char*) addr, *p_argv.c, size); + addr += (size + 3) / 4; + break; + } + + default: + FFI_ASSERT(0); + } + } +} + + +void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + unsigned long rsize = cif->rtype->size; + int flags = cif->flags; + void *alloc = NULL; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* Note that for structures that are returned in registers (size <= 16 bytes) + we allocate a temporary buffer and use memcpy to copy it to the final + destination. The reason is that the target address might be misaligned or + the length not a multiple of 4 bytes. Handling all those cases would be + very complex. */ + + if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL)) + { + alloc = alloca(FFI_ALIGN(rsize, 4)); + ecif.rvalue = alloc; + } + else + { + ecif.rvalue = rvalue; + } + + if (cif->abi != FFI_SYSV) + FFI_ASSERT(0); + + ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif); + + if (alloc != NULL && rvalue != NULL) + memcpy(rvalue, alloc, rsize); +} + +extern void ffi_trampoline(); +extern void ffi_cacheflush(void* start, void* end); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */ + memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE); + *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV; + + // Do we have this function? + // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE) + ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + return FFI_OK; +} + + +long FFI_HIDDEN +ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue) +{ + ffi_cif *cif; + ffi_type **arg_types; + void **avalue; + int i, areg; + + cif = closure->cif; + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + areg = 0; + + int rtype = cif->rtype->type; + if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4) + { + rvalue = *values; + areg++; + } + + cif = closure->cif; + arg_types = cif->arg_types; + avalue = alloca(cif->nargs * sizeof(void *)); + + for (i = 0; i < cif->nargs; i++) + { + if (arg_types[i]->alignment == 8 && (areg & 1) != 0) + areg++; + + // skip the entry 16,a1 framework, add 16 bytes (4 registers) + if (areg == FFI_REGISTER_NARGS) + areg += 4; + + if (arg_types[i]->type == FFI_TYPE_STRUCT) + { + int numregs = ((arg_types[i]->size + 3) & ~3) / 4; + if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS) + areg = FFI_REGISTER_NARGS + 4; + } + + avalue[i] = &values[areg]; + areg += (arg_types[i]->size + 3) / 4; + } + + (closure->fun)(cif, rvalue, avalue, closure->user_data); + + return rtype; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffitarget.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffitarget.h new file mode 100644 index 0000000000..0ba728bc94 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/ffitarget.h @@ -0,0 +1,53 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2013 Tensilica, Inc. + Target configuration macros for XTENSA. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_REGISTER_NARGS 6 + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#define FFI_TRAMPOLINE_SIZE 24 + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/sysv.S b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/sysv.S new file mode 100644 index 0000000000..e9421796fd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/src/xtensa/sysv.S @@ -0,0 +1,258 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2013 Tensilica, Inc. + + XTENSA Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +#define ENTRY(name) .text; .globl name; .type name,@function; .align 4; name: +#define END(name) .size name , . - name + +/* Assert that the table below is in sync with ffi.h. */ + +#if FFI_TYPE_UINT8 != 5 \ + || FFI_TYPE_SINT8 != 6 \ + || FFI_TYPE_UINT16 != 7 \ + || FFI_TYPE_SINT16 != 8 \ + || FFI_TYPE_UINT32 != 9 \ + || FFI_TYPE_SINT32 != 10 \ + || FFI_TYPE_UINT64 != 11 +#error "xtensa/sysv.S out of sync with ffi.h" +#endif + + +/* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif) + void *rvalue; a2 + unsigned long rbytes; a3 + unsigned flags; a4 + void (*fnaddr)(); a5 + unsigned long bytes; a6 + extended_cif* ecif) a7 +*/ + +ENTRY(ffi_call_SYSV) + + entry a1, 32 # 32 byte frame for using call8 below + + mov a10, a7 # a10(->arg0): ecif + sub a11, a1, a6 # a11(->arg1): stack pointer + mov a7, a1 # fp + movsp a1, a11 # set new sp = old_sp - bytes + + movi a8, ffi_prep_args + callx8 a8 # ffi_prep_args(ecif, stack) + + # prepare to move stack pointer back up to 6 arguments + # note that 'bytes' is already aligned + + movi a10, 6*4 + sub a11, a6, a10 + movgez a6, a10, a11 + add a6, a1, a6 + + + # we can pass up to 6 arguments in registers + # for simplicity, just load 6 arguments + # (the stack size is at least 32 bytes, so no risk to cross boundaries) + + l32i a10, a1, 0 + l32i a11, a1, 4 + l32i a12, a1, 8 + l32i a13, a1, 12 + l32i a14, a1, 16 + l32i a15, a1, 20 + + # move stack pointer + + movsp a1, a6 + + callx8 a5 # (*fn)(args...) + + # Handle return value(s) + + beqz a2, .Lexit + + movi a5, FFI_TYPE_STRUCT + bne a4, a5, .Lstore + movi a5, 16 + blt a5, a3, .Lexit + + s32i a10, a2, 0 + blti a3, 5, .Lexit + addi a3, a3, -1 + s32i a11, a2, 4 + blti a3, 8, .Lexit + s32i a12, a2, 8 + blti a3, 12, .Lexit + s32i a13, a2, 12 + +.Lexit: retw + +.Lstore: + addi a4, a4, -FFI_TYPE_UINT8 + bgei a4, 7, .Lexit # should never happen + movi a6, store_calls + add a4, a4, a4 + addx4 a6, a4, a6 # store_table + idx * 8 + jx a6 + + .align 8 +store_calls: + # UINT8 + s8i a10, a2, 0 + retw + + # SINT8 + .align 8 + s8i a10, a2, 0 + retw + + # UINT16 + .align 8 + s16i a10, a2, 0 + retw + + # SINT16 + .align 8 + s16i a10, a2, 0 + retw + + # UINT32 + .align 8 + s32i a10, a2, 0 + retw + + # SINT32 + .align 8 + s32i a10, a2, 0 + retw + + # UINT64 + .align 8 + s32i a10, a2, 0 + s32i a11, a2, 4 + retw + +END(ffi_call_SYSV) + + +/* + * void ffi_cacheflush (unsigned long start, unsigned long end) + */ + +#define EXTRA_ARGS_SIZE 24 + +ENTRY(ffi_cacheflush) + + entry a1, 16 + +1: +#if XCHAL_DCACHE_SIZE + dhwbi a2, 0 +#endif +#if XCHAL_ICACHE_SIZE + ihi a2, 0 +#endif + addi a2, a2, 4 + blt a2, a3, 1b + + retw + +END(ffi_cacheflush) + +/* ffi_trampoline is copied to the stack */ + +ENTRY(ffi_trampoline) + + entry a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4) # [ 0] + j 2f # [ 3] + .align 4 # [ 6] +1: .long 0 # [ 8] +2: l32r a15, 1b # [12] + _mov a14, a0 # [15] + callx0 a15 # [18] + # [21] +END(ffi_trampoline) + +/* + * ffi_closure() + * + * a0: closure + 21 + * a14: return address (a0) + */ + +ENTRY(ffi_closure_SYSV) + + /* intentionally omitting entry here */ + + # restore return address (a0) and move pointer to closure to a10 + addi a10, a0, -21 + mov a0, a14 + + # allow up to 4 arguments as return values + addi a11, a1, 4 * 4 + + # save up to 6 arguments to stack (allocated by entry below) + s32i a2, a11, 0 + s32i a3, a11, 4 + s32i a4, a11, 8 + s32i a5, a11, 12 + s32i a6, a11, 16 + s32i a7, a11, 20 + + movi a8, ffi_closure_SYSV_inner + mov a12, a1 + callx8 a8 # .._inner(*closure, **avalue, *rvalue) + + # load up to four return arguments + l32i a2, a1, 0 + l32i a3, a1, 4 + l32i a4, a1, 8 + l32i a5, a1, 12 + + # (sign-)extend return value + movi a11, FFI_TYPE_UINT8 + bne a10, a11, 1f + extui a2, a2, 0, 8 + retw + +1: movi a11, FFI_TYPE_SINT8 + bne a10, a11, 1f + sext a2, a2, 7 + retw + +1: movi a11, FFI_TYPE_UINT16 + bne a10, a11, 1f + extui a2, a2, 0, 16 + retw + +1: movi a11, FFI_TYPE_SINT16 + bne a10, a11, 1f + sext a2, a2, 15 + +1: retw + +END(ffi_closure_SYSV) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/stamp-h.in b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/stamp-h.in new file mode 100644 index 0000000000..9788f70238 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/Makefile.am b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/Makefile.am new file mode 100644 index 0000000000..40c789fa08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/Makefile.am @@ -0,0 +1,117 @@ +## Process this file with automake to produce Makefile.in. + +AUTOMAKE_OPTIONS = foreign dejagnu + +EXTRA_DEJAGNU_SITE_CONFIG=../local.exp + +CLEANFILES = *.exe core* *.log *.sum + +EXTRA_DIST = lib/target-libpath.exp lib/libffi.exp lib/wrapper.exp \ +libffi.call/strlen4.c libffi.call/cls_multi_sshort.c \ +libffi.call/cls_align_longdouble_split2.c libffi.call/cls_1_1byte.c \ +libffi.call/struct10.c libffi.call/cls_uint_va.c \ +libffi.call/many_mixed.c libffi.call/float.c libffi.call/struct5.c \ +libffi.call/return_fl3.c libffi.call/cls_3_1byte.c \ +libffi.call/return_fl1.c libffi.call/cls_many_mixed_args.c \ +libffi.call/cls_20byte1.c libffi.call/cls_pointer_stack.c \ +libffi.call/cls_align_float.c libffi.call/call.exp \ +libffi.call/pyobjc-tc.c libffi.call/float_va.c \ +libffi.call/cls_5_1_byte.c libffi.call/cls_9byte1.c \ +libffi.call/cls_align_uint32.c libffi.call/stret_medium.c \ +libffi.call/cls_3byte1.c libffi.call/cls_align_uint64.c \ +libffi.call/cls_longdouble_va.c libffi.call/cls_align_pointer.c \ +libffi.call/cls_19byte.c libffi.call/cls_ushort.c \ +libffi.call/cls_align_sint32.c libffi.call/struct8.c \ +libffi.call/pr1172638.c libffi.call/cls_ulonglong.c \ +libffi.call/cls_struct_va1.c libffi.call/cls_9byte2.c \ +libffi.call/closure_fn5.c libffi.call/cls_5byte.c \ +libffi.call/cls_3float.c libffi.call/return_sc.c \ +libffi.call/cls_schar.c libffi.call/closure_fn4.c \ +libffi.call/cls_uchar_va.c libffi.call/closure_fn0.c \ +libffi.call/huge_struct.c libffi.call/va_struct1.c \ +libffi.call/cls_ushort_va.c libffi.call/struct9.c libffi.call/va_1.c \ +libffi.call/cls_64byte.c libffi.call/va_struct2.c \ +libffi.call/cls_longdouble.c libffi.call/return_fl2.c \ +libffi.call/cls_ulong_va.c libffi.call/cls_6_1_byte.c \ +libffi.call/cls_align_uint16.c libffi.call/closure_fn2.c \ +libffi.call/align_mixed.c libffi.call/unwindtest_ffi_call.cc \ +libffi.call/cls_multi_ushortchar.c libffi.call/cls_8byte.c \ +libffi.call/ffitest.h libffi.call/nested_struct8.c \ +libffi.call/cls_pointer.c libffi.call/nested_struct2.c \ +libffi.call/nested_struct.c libffi.call/struct4.c \ +libffi.call/cls_multi_schar.c libffi.call/cls_align_longdouble_split.c \ +libffi.call/cls_uchar.c libffi.call/return_ldl.c \ +libffi.call/nested_struct9.c libffi.call/cls_float.c \ +libffi.call/stret_medium2.c libffi.call/closure_loc_fn0.c \ +libffi.call/float3.c libffi.call/cls_6byte.c libffi.call/return_sl.c \ +libffi.call/closure_simple.c libffi.call/return_dbl1.c \ +libffi.call/cls_align_double.c libffi.call/cls_multi_uchar.c \ +libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c \ +libffi.call/closure_fn3.c libffi.call/return_ll1.c \ +libffi.call/return_dbl2.c libffi.call/cls_align_sint64.c \ +libffi.call/nested_struct1.c libffi.call/negint.c \ +libffi.call/nested_struct3.c libffi.call/unwindtest.cc \ +libffi.call/struct2.c libffi.call/struct3.c libffi.call/return_fl.c \ +libffi.call/nested_struct5.c libffi.call/cls_multi_ushort.c \ +libffi.call/nested_struct11.c libffi.call/cls_multi_sshortchar.c \ +libffi.call/cls_align_longdouble.c libffi.call/cls_dbls_struct.c \ +libffi.call/cls_many_mixed_float_double.c libffi.call/stret_large.c \ +libffi.call/stret_large2.c libffi.call/cls_align_sint16.c \ +libffi.call/cls_2byte.c libffi.call/offsets.c libffi.call/struct7.c \ +libffi.call/nested_struct4.c libffi.call/problem1.c \ +libffi.call/va_struct3.c libffi.call/testclosure.c \ +libffi.call/float1.c libffi.call/nested_struct6.c \ +libffi.call/cls_4byte.c libffi.call/cls_24byte.c \ +libffi.call/uninitialized.c libffi.call/many2.c \ +libffi.call/nested_struct10.c libffi.call/struct6.c \ +libffi.call/strlen2.c libffi.call/float2.c libffi.call/cls_uint.c \ +libffi.call/cls_12byte.c libffi.call/return_ul.c \ +libffi.call/cls_sint.c libffi.call/cls_7_1_byte.c \ +libffi.call/struct1.c libffi.call/cls_sshort.c \ +libffi.call/cls_16byte.c libffi.call/strlen3.c \ +libffi.call/nested_struct7.c libffi.call/cls_double_va.c \ +libffi.call/return_dbl.c libffi.call/cls_3byte2.c libffi.call/float4.c \ +libffi.call/cls_double.c libffi.call/many.c libffi.call/cls_7byte.c \ +libffi.call/strlen.c libffi.call/closure_fn6.c libffi.call/return_uc.c \ +libffi.call/closure_fn1.c libffi.call/cls_20byte.c \ +libffi.call/cls_18byte.c libffi.call/err_bad_abi.c \ +libffi.call/many_double.c libffi.call/return_ll.c \ +libffi.call/promotion.c libffi.complex/complex_defs_longdouble.inc \ +libffi.complex/cls_align_complex_float.c \ +libffi.complex/cls_complex_va_float.c \ +libffi.complex/cls_complex_struct_float.c \ +libffi.complex/return_complex2_longdouble.c \ +libffi.complex/cls_complex_float.c \ +libffi.complex/return_complex_longdouble.c \ +libffi.complex/return_complex2_float.c libffi.complex/cls_complex.inc \ +libffi.complex/cls_complex_va_longdouble.c \ +libffi.complex/return_complex_double.c \ +libffi.complex/return_complex.inc libffi.complex/many_complex.inc \ +libffi.complex/complex_float.c libffi.complex/cls_align_complex.inc \ +libffi.complex/return_complex2_double.c \ +libffi.complex/many_complex_float.c libffi.complex/ffitest.h \ +libffi.complex/return_complex1_double.c \ +libffi.complex/cls_complex_struct_longdouble.c \ +libffi.complex/complex_defs_double.inc \ +libffi.complex/cls_complex_va_double.c \ +libffi.complex/many_complex_double.c \ +libffi.complex/return_complex2.inc \ +libffi.complex/return_complex1_float.c \ +libffi.complex/complex_longdouble.c \ +libffi.complex/complex_defs_float.inc \ +libffi.complex/cls_complex_double.c \ +libffi.complex/cls_align_complex_double.c \ +libffi.complex/cls_align_complex_longdouble.c \ +libffi.complex/complex_double.c libffi.complex/cls_complex_va.inc \ +libffi.complex/many_complex_longdouble.c libffi.complex/complex.inc \ +libffi.complex/return_complex1_longdouble.c \ +libffi.complex/complex_int.c libffi.complex/cls_complex_longdouble.c \ +libffi.complex/cls_complex_struct_double.c \ +libffi.complex/return_complex1.inc libffi.complex/complex.exp \ +libffi.complex/cls_complex_struct.inc \ +libffi.complex/return_complex_float.c libffi.go/closure1.c \ +libffi.go/aa-direct.c libffi.go/ffitest.h libffi.go/go.exp \ +libffi.go/static-chain.h libffi.bhaible/bhaible.exp \ +libffi.bhaible/test-call.c libffi.bhaible/alignof.h \ +libffi.bhaible/testcases.c libffi.bhaible/test-callback.c \ +libffi.bhaible/Makefile libffi.bhaible/README config/default.exp diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/config/default.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/config/default.exp new file mode 100644 index 0000000000..90967cccc1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/config/default.exp @@ -0,0 +1 @@ +load_lib "standard.exp" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/libffi.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/libffi.exp new file mode 100644 index 0000000000..28f793a3f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/libffi.exp @@ -0,0 +1,636 @@ +# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011, 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +proc load_gcc_lib { filename } { + global srcdir + load_file $srcdir/lib/$filename +} + +load_lib dg.exp +load_lib libgloss.exp +load_gcc_lib target-libpath.exp +load_gcc_lib wrapper.exp + +proc check_effective_target_gccbug { } { + global has_gccbug + return $has_gccbug +} + +# Return 1 if the target matches the effective target 'arg', 0 otherwise. +# This can be used with any check_* proc that takes no argument and +# returns only 1 or 0. It could be used with check_* procs that take +# arguments with keywords that pass particular arguments. + +proc is-effective-target { arg } { + global et_index + set selected 0 + if { ![info exists et_index] } { + # Initialize the effective target index that is used in some + # check_effective_target_* procs. + set et_index 0 + } + if { [info procs check_effective_target_${arg}] != [list] } { + set selected [check_effective_target_${arg}] + } else { + error "unknown effective target keyword `$arg'" + } + verbose "is-effective-target: $arg $selected" 2 + return $selected +} + +proc is-effective-target-keyword { arg } { + if { [info procs check_effective_target_${arg}] != [list] } { + return 1 + } else { + return 0 + } +} + +# Intercept the call to the DejaGnu version of dg-process-target to +# support use of an effective-target keyword in place of a list of +# target triplets to xfail or skip a test. +# +# The argument to dg-process-target is the keyword "target" or "xfail" +# followed by a selector: +# target-triplet-1 ... +# effective-target-keyword +# selector-expression +# +# For a target list the result is "S" if the target is selected, "N" otherwise. +# For an xfail list the result is "F" if the target is affected, "P" otherwise. + +# In contexts that allow either "target" or "xfail" the argument can be +# target selector1 xfail selector2 +# which returns "N" if selector1 is not selected, otherwise the result of +# "xfail selector2". +# +# A selector expression appears within curly braces and uses a single logical +# operator: !, &&, or ||. An operand is another selector expression, an +# effective-target keyword, or a list of target triplets within quotes or +# curly braces. + +if { [info procs saved-dg-process-target] == [list] } { + rename dg-process-target saved-dg-process-target + + # Evaluate an operand within a selector expression. + proc selector_opd { op } { + set selector "target" + lappend selector $op + set answer [ expr { [dg-process-target $selector] == "S" } ] + verbose "selector_opd: `$op' $answer" 2 + return $answer + } + + # Evaluate a target triplet list within a selector expression. + # Unlike other operands, this needs to be expanded from a list to + # the same string as "target". + proc selector_list { op } { + set selector "target [join $op]" + set answer [ expr { [dg-process-target $selector] == "S" } ] + verbose "selector_list: `$op' $answer" 2 + return $answer + } + + # Evaluate a selector expression. + proc selector_expression { exp } { + if { [llength $exp] == 2 } { + if [string match "!" [lindex $exp 0]] { + set op1 [lindex $exp 1] + set answer [expr { ! [selector_opd $op1] }] + } else { + # Assume it's a list of target triplets. + set answer [selector_list $exp] + } + } elseif { [llength $exp] == 3 } { + set op1 [lindex $exp 0] + set opr [lindex $exp 1] + set op2 [lindex $exp 2] + if [string match "&&" $opr] { + set answer [expr { [selector_opd $op1] && [selector_opd $op2] }] + } elseif [string match "||" $opr] { + set answer [expr { [selector_opd $op1] || [selector_opd $op2] }] + } else { + # Assume it's a list of target triplets. + set answer [selector_list $exp] + } + } else { + # Assume it's a list of target triplets. + set answer [selector_list $exp] + } + + verbose "selector_expression: `$exp' $answer" 2 + return $answer + } + + # Evaluate "target selector" or "xfail selector". + + proc dg-process-target-1 { args } { + verbose "dg-process-target-1: `$args'" 2 + + # Extract the 'what' keyword from the argument list. + set selector [string trim [lindex $args 0]] + if [regexp "^xfail " $selector] { + set what "xfail" + } elseif [regexp "^target " $selector] { + set what "target" + } else { + error "syntax error in target selector \"$selector\"" + } + + # Extract the rest of the list, which might be a keyword. + regsub "^${what}" $selector "" rest + set rest [string trim $rest] + + if [is-effective-target-keyword $rest] { + # The selector is an effective target keyword. + if [is-effective-target $rest] { + return [expr { $what == "xfail" ? "F" : "S" }] + } else { + return [expr { $what == "xfail" ? "P" : "N" }] + } + } + + if [string match "{*}" $rest] { + if [selector_expression [lindex $rest 0]] { + return [expr { $what == "xfail" ? "F" : "S" }] + } else { + return [expr { $what == "xfail" ? "P" : "N" }] + } + } + + # The selector is not an effective-target keyword, so process + # the list of target triplets. + return [saved-dg-process-target $selector] + } + + # Intercept calls to the DejaGnu function. In addition to + # processing "target selector" or "xfail selector", handle + # "target selector1 xfail selector2". + + proc dg-process-target { args } { + verbose "replacement dg-process-target: `$args'" 2 + + set selector [string trim [lindex $args 0]] + + # If the argument list contains both 'target' and 'xfail', + # process 'target' and, if that succeeds, process 'xfail'. + if [regexp "^target .* xfail .*" $selector] { + set xfail_index [string first "xfail" $selector] + set xfail_selector [string range $selector $xfail_index end] + set target_selector [string range $selector 0 [expr $xfail_index-1]] + set target_selector [string trim $target_selector] + if { [dg-process-target-1 $target_selector] == "N" } { + return "N" + } + return [dg-process-target-1 $xfail_selector] + + } + return [dg-process-target-1 $selector] + } +} + +# Define libffi callbacks for dg.exp. + +proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } { + + # To get all \n in dg-output test strings to match printf output + # in a system that outputs it as \015\012 (i.e. not just \012), we + # need to change all \n into \r?\n. As there is no dejagnu flag + # or hook to do that, we simply change the text being tested. + # Unfortunately, we have to know that the variable is called + # dg-output-text and lives in the caller of libffi-dg-test, which + # is two calls up. Overriding proc dg-output would be longer and + # would necessarily have the same assumption. + upvar 2 dg-output-text output_match + + if { [llength $output_match] > 1 } { + regsub -all "\n" [lindex $output_match 1] "\r?\n" x + set output_match [lreplace $output_match 1 1 $x] + } + + # Set up the compiler flags, based on what we're going to do. + + set options [list] + switch $do_what { + "compile" { + set compile_type "assembly" + set output_file "[file rootname [file tail $prog]].s" + } + "link" { + set compile_type "executable" + set output_file "[file rootname [file tail $prog]].exe" + # The following line is needed for targets like the i960 where + # the default output file is b.out. Sigh. + } + "run" { + set compile_type "executable" + # FIXME: "./" is to cope with "." not being in $PATH. + # Should this be handled elsewhere? + # YES. + set output_file "./[file rootname [file tail $prog]].exe" + # This is the only place where we care if an executable was + # created or not. If it was, dg.exp will try to run it. + remote_file build delete $output_file; + } + default { + perror "$do_what: not a valid dg-do keyword" + return "" + } + } + + if { $extra_tool_flags != "" } { + lappend options "additional_flags=$extra_tool_flags" + } + + set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options]; + + + return [list $comp_output $output_file] +} + + +proc libffi-dg-test { prog do_what extra_tool_flags } { + return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags] +} + +proc libffi-init { args } { + global gluefile wrap_flags; + global srcdir + global blddirffi + global objdir + global TOOL_OPTIONS + global tool + global libffi_include + global libffi_link_flags + global tool_root_dir + global ld_library_path + global compiler_vendor + + if ![info exists blddirffi] { + set blddirffi [pwd]/.. + } + + verbose "libffi $blddirffi" + + # Which compiler are we building with? + set tmp [grep "$blddirffi/config.log" "^ax_cv_c_compiler_vendor.*$"] + regexp -- {^[^=]*=(.*)$} $tmp nil compiler_vendor + + if { [string match $compiler_vendor "gnu"] } { + set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + } + verbose "gccdir $gccdir" + + set ld_library_path "." + append ld_library_path ":${gccdir}" + + set compiler "${gccdir}/xgcc" + if { [is_remote host] == 0 && [which $compiler] != 0 } { + foreach i "[exec $compiler --print-multi-lib]" { + set mldir "" + regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir + set mldir [string trimright $mldir "\;@"] + if { "$mldir" == "." } { + continue + } + if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { + append ld_library_path ":${gccdir}/${mldir}" + } + } + } + } + + # add the library path for libffi. + append ld_library_path ":${blddirffi}/.libs" + + verbose "ld_library_path: $ld_library_path" + + # Point to the Libffi headers in libffi. + set libffi_include "${blddirffi}/include" + verbose "libffi_include $libffi_include" + + set libffi_dir "${blddirffi}/.libs" + verbose "libffi_dir $libffi_dir" + if { $libffi_dir != "" } { + set libffi_dir [file dirname ${libffi_dir}] + set libffi_link_flags "-L${libffi_dir}/.libs" + } + + set_ld_library_path_env_vars + libffi_maybe_build_wrapper "${objdir}/testglue.o" +} + +proc libffi_exit { } { + global gluefile; + + if [info exists gluefile] { + file_on_build delete $gluefile; + unset gluefile; + } +} + +proc libffi_target_compile { source dest type options } { + global gluefile wrap_flags; + global srcdir + global blddirffi + global TOOL_OPTIONS + global libffi_link_flags + global libffi_include + global target_triplet + global compiler_vendor + + if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } { + lappend options "libs=${gluefile}" + lappend options "ldflags=$wrap_flags" + } + + # TOOL_OPTIONS must come first, so that it doesn't override testcase + # specific options. + if [info exists TOOL_OPTIONS] { + lappend options "additional_flags=$TOOL_OPTIONS" + } + + # search for ffi_mips.h in srcdir, too + lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include -I${libffi_include}/.." + lappend options "additional_flags=${libffi_link_flags}" + + # Darwin needs a stack execution allowed flag. + + if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] + || [istarget "*-*-darwin2*"] } { + lappend options "additional_flags=-Wl,-allow_stack_execute" + } + + # If you're building the compiler with --prefix set to a place + # where it's not yet installed, then the linker won't be able to + # find the libgcc used by libffi.dylib. We could pass the + # -dylib_file option, but that's complicated, and it's much easier + # to just make the linker find libgcc using -L options. + if { [string match "*-*-darwin*" $target_triplet] } { + lappend options "libs= -shared-libgcc" + } + + if { [string match "*-*-openbsd*" $target_triplet] } { + lappend options "libs= -lpthread" + } + + lappend options "libs= -lffi" + + if { [string match "aarch64*-*-linux*" $target_triplet] } { + lappend options "libs= -lpthread" + } + + # this may be required for g++, but just confused clang. + if { [string match "*.cc" $source] } { + lappend options "c++" + } + + if { [string match "arc*-*-linux*" $target_triplet] } { + lappend options "libs= -lpthread" + } + + verbose "options: $options" + return [target_compile $source $dest $type $options] +} + +# TEST should be a preprocessor condition. Returns true if it holds. +proc libffi_feature_test { test } { + set src "ffitest[pid].c" + + set f [open $src "w"] + puts $f "#include " + puts $f $test + puts $f "/* OK */" + puts $f "#else" + puts $f "# error Failed $test" + puts $f "#endif" + close $f + + set lines [libffi_target_compile $src /dev/null assembly ""] + file delete $src + + return [string match "" $lines] +} + +# Utility routines. + +# +# search_for -- looks for a string match in a file +# +proc search_for { file pattern } { + set fd [open $file r] + while { [gets $fd cur_line]>=0 } { + if [string match "*$pattern*" $cur_line] then { + close $fd + return 1 + } + } + close $fd + return 0 +} + +# Modified dg-runtest that can cycle through a list of optimization options +# as c-torture does. +proc libffi-dg-runtest { testcases default-extra-flags } { + global runtests + + foreach test $testcases { + # If we're only testing specific files and this isn't one of + # them, skip it. + if ![runtest_file_p $runtests $test] { + continue + } + + # Look for a loop within the source code - if we don't find one, + # don't pass -funroll[-all]-loops. + global torture_with_loops torture_without_loops + if [expr [search_for $test "for*("]+[search_for $test "while*("]] { + set option_list $torture_with_loops + } else { + set option_list $torture_without_loops + } + + set nshort [file tail [file dirname $test]]/[file tail $test] + + foreach flags $option_list { + verbose "Testing $nshort, $flags" 1 + dg-test $test $flags ${default-extra-flags} + } + } +} + +proc run-many-tests { testcases extra_flags } { + global compiler_vendor + global has_gccbug + switch $compiler_vendor { + "clang" { + set common "-W -Wall" + set optimizations { "-O0" "-O2" "-Os" } + } + "gnu" { + set common "-W -Wall -Wno-psabi" + set optimizations { "-O0" "-O2" "-Os" "-O2 -fomit-frame-pointer" } + } + default { + # Assume we are using the vendor compiler. + set common "" + set optimizations { "" } + } + } + + set targetabis { "" } + if [string match $compiler_vendor "gnu"] { + if [libffi_feature_test "#ifdef __i386__"] { + set targetabis { + "" + "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__" + "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__" + "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__" + } + } elseif { [istarget "x86_64-*-*"] \ + && [libffi_feature_test "#if !defined __ILP32__ \ + && !defined __i386__"] } { + set targetabis { + "" + "-DABI_NUM=FFI_GNUW64 -DABI_ATTR=__MSABI__" + } + } + } + + set common [ concat $common $extra_flags ] + foreach test $testcases { + set testname [file tail $test] + if [search_for $test "ABI_NUM"] { + set abis $targetabis + } else { + set abis { "" } + } + foreach opt $optimizations { + foreach abi $abis { + set options [concat $common $opt $abi] + set has_gccbug false; + if { [string match $compiler_vendor "gnu"] \ + && [string match "*MSABI*" $abi] \ + && ( ( [string match "*DGTEST=57 *" $common] \ + && [string match "*call.c*" $testname] ) \ + || ( [string match "*DGTEST=54 *" $common] \ + && [string match "*callback*" $testname] ) \ + || [string match "*DGTEST=55 *" $common] \ + || [string match "*DGTEST=56 *" $common] ) } then { + set has_gccbug true; + } + verbose "Testing $testname, $options" 1 + dg-test $test $options "" + } + } + } +} + +# Like check_conditional_xfail, but callable from a dg test. + +proc dg-xfail-if { args } { + set args [lreplace $args 0 0] + set selector "target [join [lindex $args 1]]" + if { [dg-process-target $selector] == "S" } { + global compiler_conditional_xfail_data + set compiler_conditional_xfail_data $args + } +} + +proc check-flags { args } { + + # The args are within another list; pull them out. + set args [lindex $args 0] + + # The next two arguments are optional. If they were not specified, + # use the defaults. + if { [llength $args] == 2 } { + lappend $args [list "*"] + } + if { [llength $args] == 3 } { + lappend $args [list ""] + } + + # If the option strings are the defaults, or the same as the + # defaults, there is no need to call check_conditional_xfail to + # compare them to the actual options. + if { [string compare [lindex $args 2] "*"] == 0 + && [string compare [lindex $args 3] "" ] == 0 } { + set result 1 + } else { + # The target list might be an effective-target keyword, so replace + # the original list with "*-*-*", since we already know it matches. + set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]] + } + + return $result +} + +proc dg-skip-if { args } { + # Verify the number of arguments. The last two are optional. + set args [lreplace $args 0 0] + if { [llength $args] < 2 || [llength $args] > 4 } { + error "dg-skip-if 2: need 2, 3, or 4 arguments" + } + + # Don't bother if we're already skipping the test. + upvar dg-do-what dg-do-what + if { [lindex ${dg-do-what} 1] == "N" } { + return + } + + set selector [list target [lindex $args 1]] + if { [dg-process-target $selector] == "S" } { + if [check-flags $args] { + upvar dg-do-what dg-do-what + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] + } + } +} + +# We need to make sure that additional_files and additional_sources +# are both cleared out after every test. It is not enough to clear +# them out *before* the next test run because gcc-target-compile gets +# run directly from some .exp files (outside of any test). (Those +# uses should eventually be eliminated.) + +# Because the DG framework doesn't provide a hook that is run at the +# end of a test, we must replace dg-test with a wrapper. + +if { [info procs saved-dg-test] == [list] } { + rename dg-test saved-dg-test + + proc dg-test { args } { + global additional_files + global additional_sources + global errorInfo + + if { [ catch { eval saved-dg-test $args } errmsg ] } { + set saved_info $errorInfo + set additional_files "" + set additional_sources "" + error $errmsg $saved_info + } + set additional_files "" + set additional_sources "" + } +} + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp new file mode 100644 index 0000000000..6b7beba935 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp @@ -0,0 +1,283 @@ +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# This file was contributed by John David Anglin (dave.anglin@nrc-cnrc.gc.ca) + +set orig_environment_saved 0 +set orig_ld_library_path_saved 0 +set orig_ld_run_path_saved 0 +set orig_shlib_path_saved 0 +set orig_ld_libraryn32_path_saved 0 +set orig_ld_library64_path_saved 0 +set orig_ld_library_path_32_saved 0 +set orig_ld_library_path_64_saved 0 +set orig_dyld_library_path_saved 0 +set orig_path_saved 0 + +####################################### +# proc set_ld_library_path_env_vars { } +####################################### + +proc set_ld_library_path_env_vars { } { + global ld_library_path + global orig_environment_saved + global orig_ld_library_path_saved + global orig_ld_run_path_saved + global orig_shlib_path_saved + global orig_ld_libraryn32_path_saved + global orig_ld_library64_path_saved + global orig_ld_library_path_32_saved + global orig_ld_library_path_64_saved + global orig_dyld_library_path_saved + global orig_path_saved + global orig_ld_library_path + global orig_ld_run_path + global orig_shlib_path + global orig_ld_libraryn32_path + global orig_ld_library64_path + global orig_ld_library_path_32 + global orig_ld_library_path_64 + global orig_dyld_library_path + global orig_path + global GCC_EXEC_PREFIX + + # Set the relocated compiler prefix, but only if the user hasn't specified one. + if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } { + setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX" + } + + # Setting the ld library path causes trouble when testing cross-compilers. + if { [is_remote target] } { + return + } + + if { $orig_environment_saved == 0 } { + global env + + set orig_environment_saved 1 + + # Save the original environment. + if [info exists env(LD_LIBRARY_PATH)] { + set orig_ld_library_path "$env(LD_LIBRARY_PATH)" + set orig_ld_library_path_saved 1 + } + if [info exists env(LD_RUN_PATH)] { + set orig_ld_run_path "$env(LD_RUN_PATH)" + set orig_ld_run_path_saved 1 + } + if [info exists env(SHLIB_PATH)] { + set orig_shlib_path "$env(SHLIB_PATH)" + set orig_shlib_path_saved 1 + } + if [info exists env(LD_LIBRARYN32_PATH)] { + set orig_ld_libraryn32_path "$env(LD_LIBRARYN32_PATH)" + set orig_ld_libraryn32_path_saved 1 + } + if [info exists env(LD_LIBRARY64_PATH)] { + set orig_ld_library64_path "$env(LD_LIBRARY64_PATH)" + set orig_ld_library64_path_saved 1 + } + if [info exists env(LD_LIBRARY_PATH_32)] { + set orig_ld_library_path_32 "$env(LD_LIBRARY_PATH_32)" + set orig_ld_library_path_32_saved 1 + } + if [info exists env(LD_LIBRARY_PATH_64)] { + set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)" + set orig_ld_library_path_64_saved 1 + } + if [info exists env(DYLD_LIBRARY_PATH)] { + set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)" + set orig_dyld_library_path_saved 1 + } + if [info exists env(PATH)] { + set orig_path "$env(PATH)" + set orig_path_saved 1 + } + } + + # We need to set ld library path in the environment. Currently, + # unix.exp doesn't set the environment correctly for all systems. + # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a + # program. We also need the environment set for compilations, etc. + # + # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but + # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH + # (for the 64-bit ABI). The same applies to Darwin (DYLD_LIBRARY_PATH), + # Solaris 32 bit (LD_LIBRARY_PATH_32), Solaris 64 bit (LD_LIBRARY_PATH_64), + # and HP-UX (SHLIB_PATH). In some cases, the variables are independent + # of LD_LIBRARY_PATH, and in other cases LD_LIBRARY_PATH is used if the + # variable is not defined. + # + # Doing this is somewhat of a hack as ld_library_path gets repeated in + # SHLIB_PATH and LD_LIBRARY_PATH when unix_load sets these variables. + if { $orig_ld_library_path_saved } { + setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path" + } else { + setenv LD_LIBRARY_PATH "$ld_library_path" + } + if { $orig_ld_run_path_saved } { + setenv LD_RUN_PATH "$ld_library_path:$orig_ld_run_path" + } else { + setenv LD_RUN_PATH "$ld_library_path" + } + # The default shared library dynamic path search for 64-bit + # HP-UX executables searches LD_LIBRARY_PATH before SHLIB_PATH. + # LD_LIBRARY_PATH isn't used for 32-bit executables. Thus, we + # set LD_LIBRARY_PATH and SHLIB_PATH as if they were independent. + if { $orig_shlib_path_saved } { + setenv SHLIB_PATH "$ld_library_path:$orig_shlib_path" + } else { + setenv SHLIB_PATH "$ld_library_path" + } + if { $orig_ld_libraryn32_path_saved } { + setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_libraryn32_path" + } elseif { $orig_ld_library_path_saved } { + setenv LD_LIBRARYN32_PATH "$ld_library_path:$orig_ld_library_path" + } else { + setenv LD_LIBRARYN32_PATH "$ld_library_path" + } + if { $orig_ld_library64_path_saved } { + setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library64_path" + } elseif { $orig_ld_library_path_saved } { + setenv LD_LIBRARY64_PATH "$ld_library_path:$orig_ld_library_path" + } else { + setenv LD_LIBRARY64_PATH "$ld_library_path" + } + if { $orig_ld_library_path_32_saved } { + setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path_32" + } elseif { $orig_ld_library_path_saved } { + setenv LD_LIBRARY_PATH_32 "$ld_library_path:$orig_ld_library_path" + } else { + setenv LD_LIBRARY_PATH_32 "$ld_library_path" + } + if { $orig_ld_library_path_64_saved } { + setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path_64" + } elseif { $orig_ld_library_path_saved } { + setenv LD_LIBRARY_PATH_64 "$ld_library_path:$orig_ld_library_path" + } else { + setenv LD_LIBRARY_PATH_64 "$ld_library_path" + } + if { $orig_dyld_library_path_saved } { + setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path" + } else { + setenv DYLD_LIBRARY_PATH "$ld_library_path" + } + if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } { + if { $orig_path_saved } { + setenv PATH "$ld_library_path:$orig_path" + } else { + setenv PATH "$ld_library_path" + } + } + + verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path" +} + +####################################### +# proc restore_ld_library_path_env_vars { } +####################################### + +proc restore_ld_library_path_env_vars { } { + global orig_environment_saved + global orig_ld_library_path_saved + global orig_ld_run_path_saved + global orig_shlib_path_saved + global orig_ld_libraryn32_path_saved + global orig_ld_library64_path_saved + global orig_ld_library_path_32_saved + global orig_ld_library_path_64_saved + global orig_dyld_library_path_saved + global orig_path_saved + global orig_ld_library_path + global orig_ld_run_path + global orig_shlib_path + global orig_ld_libraryn32_path + global orig_ld_library64_path + global orig_ld_library_path_32 + global orig_ld_library_path_64 + global orig_dyld_library_path + global orig_path + + if { $orig_environment_saved == 0 } { + return + } + + if { $orig_ld_library_path_saved } { + setenv LD_LIBRARY_PATH "$orig_ld_library_path" + } elseif [info exists env(LD_LIBRARY_PATH)] { + unsetenv LD_LIBRARY_PATH + } + if { $orig_ld_run_path_saved } { + setenv LD_RUN_PATH "$orig_ld_run_path" + } elseif [info exists env(LD_RUN_PATH)] { + unsetenv LD_RUN_PATH + } + if { $orig_shlib_path_saved } { + setenv SHLIB_PATH "$orig_shlib_path" + } elseif [info exists env(SHLIB_PATH)] { + unsetenv SHLIB_PATH + } + if { $orig_ld_libraryn32_path_saved } { + setenv LD_LIBRARYN32_PATH "$orig_ld_libraryn32_path" + } elseif [info exists env(LD_LIBRARYN32_PATH)] { + unsetenv LD_LIBRARYN32_PATH + } + if { $orig_ld_library64_path_saved } { + setenv LD_LIBRARY64_PATH "$orig_ld_library64_path" + } elseif [info exists env(LD_LIBRARY64_PATH)] { + unsetenv LD_LIBRARY64_PATH + } + if { $orig_ld_library_path_32_saved } { + setenv LD_LIBRARY_PATH_32 "$orig_ld_library_path_32" + } elseif [info exists env(LD_LIBRARY_PATH_32)] { + unsetenv LD_LIBRARY_PATH_32 + } + if { $orig_ld_library_path_64_saved } { + setenv LD_LIBRARY_PATH_64 "$orig_ld_library_path_64" + } elseif [info exists env(LD_LIBRARY_PATH_64)] { + unsetenv LD_LIBRARY_PATH_64 + } + if { $orig_dyld_library_path_saved } { + setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path" + } elseif [info exists env(DYLD_LIBRARY_PATH)] { + unsetenv DYLD_LIBRARY_PATH + } + if { $orig_path_saved } { + setenv PATH "$orig_path" + } elseif [info exists env(PATH)] { + unsetenv PATH + } +} + +####################################### +# proc get_shlib_extension { } +####################################### + +proc get_shlib_extension { } { + global shlib_ext + + if { [ istarget *-*-darwin* ] } { + set shlib_ext "dylib" + } elseif { [ istarget *-*-cygwin* ] || [ istarget *-*-mingw* ] } { + set shlib_ext "dll" + } elseif { [ istarget hppa*-*-hpux* ] } { + set shlib_ext "sl" + } else { + set shlib_ext "so" + } + return $shlib_ext +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/wrapper.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/wrapper.exp new file mode 100644 index 0000000000..4e5ae435a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/lib/wrapper.exp @@ -0,0 +1,45 @@ +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# This file contains GCC-specifics for status wrappers for test programs. + +# ${tool}_maybe_build_wrapper -- Build wrapper object if the target +# needs it. FILENAME is the path to the wrapper file. If there are +# additional arguments, they are command-line options to provide to +# the compiler when compiling FILENAME. + +proc ${tool}_maybe_build_wrapper { filename args } { + global gluefile wrap_flags + + if { [target_info needs_status_wrapper] != "" \ + && [target_info needs_status_wrapper] != "0" \ + && ![info exists gluefile] } { + set saved_wrap_compile_flags [target_info wrap_compile_flags] + set flags [join $args " "] + # The wrapper code may contain code that gcc objects on. This + # became true for dejagnu-1.4.4. The set of warnings and code + # that gcc objects on may change, so just make sure -w is always + # passed to turn off all warnings. + set_currtarget_info wrap_compile_flags \ + "$saved_wrap_compile_flags -w $flags" + set result [build_wrapper $filename] + set_currtarget_info wrap_compile_flags "$saved_wrap_compile_flags" + if { $result != "" } { + set gluefile [lindex $result 0] + set wrap_flags [lindex $result 1] + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile new file mode 100644 index 0000000000..3322de94f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile @@ -0,0 +1,28 @@ +CC = gcc +CFLAGS = -O2 -Wall +prefix = +includedir = $(prefix)/include +libdir = $(prefix)/lib +CPPFLAGS = -I$(includedir) +LDFLAGS = -L$(libdir) -Wl,-rpath,$(libdir) + +all: check-call check-callback + +test-call: test-call.c testcases.c + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o test-call test-call.c -lffi + +test-callback: test-callback.c testcases.c + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o test-callback test-callback.c -lffi + +check-call: test-call + ./test-call > test-call.out + LC_ALL=C uniq -u < test-call.out > failed-call + test '!' -s failed-call + +check-callback: test-callback + ./test-callback > test-callback.out + LC_ALL=C uniq -u < test-callback.out > failed-callback + test '!' -s failed-callback + +clean: + rm -f test-call test-callback test-call.out test-callback.out failed-call failed-callback diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/README b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/README new file mode 100644 index 0000000000..be8540b64f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/README @@ -0,0 +1,78 @@ +This package contains a test suite for libffi. + +This test suite can be compiled with a C compiler. No need for 'expect' +or some other package that is often not installed. + +The test suite consists of 81 C functions, each with a different signature. +* test-call verifies that calling each function directly produces the same + results as calling the function indirectly through 'ffi_call'. +* test-callback verifies that calling each function directly produces the same + results as calling a function that is a callback (object build by + 'ffi_prep_closure_loc') and simulates the original function. + +Each direct or indirect invocation should produce one line of output to +stdout. A correct output consists of paired lines, such as + +void f(void): +void f(void): +int f(void):->99 +int f(void):->99 +int f(int):(1)->2 +int f(int):(1)->2 +int f(2*int):(1,2)->3 +int f(2*int):(1,2)->3 +... + +The Makefile then creates two files: +* failed-call, which consists of the non-paired lines of output of + 'test-call', +* failed-callback, which consists of the non-paired lines of output of + 'test-callback'. + +The test suite passes if both failed-call and failed-callback come out +as empty. + + +How to use the test suite +------------------------- + +1. Modify the Makefile's variables + prefix = the directory in which libffi was installed + CC = the C compiler, often with options such as "-m32" or "-m64" + that enforce a certain ABI, + CFLAGS = optimization options (need to change them only for non-GCC + compilers) +2. Run "make". If it fails already in "test-call", run also + "make check-callback". +3. If this failed, inspect the output files. + + +How to interpret the results +---------------------------- + +The failed-call and failed-callback files consist of paired lines: +The first line is the result of the direct invocation. +The second line is the result of invocation through libffi. + +For example, this output + +uchar f(uchar,ushort,uint,ulong):(97,2,3,4)->255 +uchar f(uchar,ushort,uint,ulong):(97,2,3,4)->0 + +indicates that the arguments were passed correctly, but the return +value came out wrong. + +And this output + +float f(17*float,3*int,L):(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,6,7,8,561,1105,1729,2465,2821,6601)->15319.1 +float f(17*float,3*int,L):(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,-140443648,10,268042216,-72537980,-140443648,-140443648,-140443648,-140443648,-140443648)->-6.47158e+08 + +indicates that integer arguments that come after 17 floating-point arguments +were not passed correctly. + + +Credits +------- + +The test suite is based on the one of GNU libffcall-2.0. +Authors: Bill Triggs, Bruno Haible diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h new file mode 100644 index 0000000000..00604a513a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h @@ -0,0 +1,50 @@ +/* Determine alignment of types. + Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#ifndef _ALIGNOF_H +#define _ALIGNOF_H + +#include + +/* alignof_slot (TYPE) + Determine the alignment of a structure slot (field) of a given type, + at compile time. Note that the result depends on the ABI. + This is the same as alignof (TYPE) and _Alignof (TYPE), defined in + if __alignof_is_defined is 1. + Note: The result cannot be used as a value for an 'enum' constant, + due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */ +#if defined __cplusplus + template struct alignof_helper { char __slot1; type __slot2; }; +# define alignof_slot(type) offsetof (alignof_helper, __slot2) +#else +# define alignof_slot(type) offsetof (struct { char __slot1; type __slot2; }, __slot2) +#endif + +/* alignof_type (TYPE) + Determine the good alignment of an object of the given type at compile time. + Note that this is not necessarily the same as alignof_slot(type). + For example, with GNU C on x86 platforms: alignof_type(double) = 8, but + - when -malign-double is not specified: alignof_slot(double) = 4, + - when -malign-double is specified: alignof_slot(double) = 8. + Note: The result cannot be used as a value for an 'enum' constant, + due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */ +#if defined __GNUC__ || defined __IBM__ALIGNOF__ +# define alignof_type __alignof__ +#else +# define alignof_type alignof_slot +#endif + +#endif /* _ALIGNOF_H */ diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp new file mode 100644 index 0000000000..4e5051b099 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp @@ -0,0 +1,58 @@ +# Copyright (C) 2003, 2006, 2009, 2010, 2014, 2018 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +dg-init +libffi-init + +global srcdir subdir +global compiler_vendor +global has_gccbug + +# The conversion of this testsuite into a dejagnu compatible testsuite +# was done in a pretty lazy fashion, and requires the use of compiler +# flags to disable warnings for now. +if { [string match $compiler_vendor "gnu"] } { + set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized"; +} +if { [string match $compiler_vendor "microsoft"] } { + # -wd4996 suggest use of vsprintf_s instead of vsprintf + # -wd4116 unnamed type definition + # -wd4101 unreferenced local variable + # -wd4244 warning about implicit double to float conversion + set warning_options "-wd4996 -wd4116 -wd4101 -wd4244"; +} +if { ![string match $compiler_vendor "microsoft"] && ![string match $compiler_vendor "gnu"] } { + set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-uninitialized"; +} + + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/test-call.c]] + +for {set i 1} {$i < 82} {incr i} { + run-many-tests $tlist [format "-DDGTEST=%d %s" $i $warning_options] +} + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/test-callback.c]] + +for {set i 1} {$i < 81} {incr i} { + run-many-tests $tlist [format "-DDGTEST=%d %s" $i $warning_options] +} + +dg-finish + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c new file mode 100644 index 0000000000..caa77deb27 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c @@ -0,0 +1,1745 @@ +/** + Copyright 1993 Bill Triggs + Copyright 1995-2017 Bruno Haible + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +**/ + +/* { dg-do run { xfail gccbug } }*/ + +#include +#include +#include +#include +#include "alignof.h" +#include + +/* libffi testsuite local changes -------------------------------- */ +#ifdef DGTEST +/* Redefine exit(1) as a test failure */ +#define exit(V) (void)((V) ? (abort(), 1) : exit(0)) +int count = 0; +char rbuf1[2048]; +char rbuf2[2048]; +int _fprintf(FILE *stream, const char *format, ...) +{ + va_list args; + va_start(args, format); + + switch (count++) + { + case 0: + case 1: + vsprintf(&rbuf1[strlen(rbuf1)], format, args); + break; + case 2: + printf("%s", rbuf1); + vsprintf(rbuf2, format, args); + break; + case 3: + vsprintf(&rbuf2[strlen(rbuf2)], format, args); + printf("%s", rbuf2); + if (strcmp (rbuf1, rbuf2)) abort(); + break; + } + + va_end(args); + + return 0; +} +#define fprintf _fprintf +#endif +/* --------------------------------------------------------------- */ + +#include "testcases.c" + +#ifndef ABI_NUM +#define ABI_NUM FFI_DEFAULT_ABI +#endif + +/* Definitions that ought to be part of libffi. */ +static ffi_type ffi_type_char; +#define ffi_type_slonglong ffi_type_sint64 +#define ffi_type_ulonglong ffi_type_uint64 + +/* libffi does not support arrays inside structs. */ +#define SKIP_EXTRA_STRUCTS + +#define FFI_PREP_CIF(cif,argtypes,rettype) \ + if (ffi_prep_cif(&(cif),ABI_NUM,sizeof(argtypes)/sizeof(argtypes[0]),&rettype,argtypes) != FFI_OK) abort() +#define FFI_PREP_CIF_NOARGS(cif,rettype) \ + if (ffi_prep_cif(&(cif),ABI_NUM,0,&rettype,NULL) != FFI_OK) abort() +#define FFI_CALL(cif,fn,args,retaddr) \ + ffi_call(&(cif),(void(*)(void))(fn),retaddr,args) + +long clear_traces_i (long a, long b, long c, long d, long e, long f, long g, long h, + long i, long j, long k, long l, long m, long n, long o, long p) +{ return 0; } +float clear_traces_f (float a, float b, float c, float d, float e, float f, float g, + float h, float i, float j, float k, float l, float m, float n, + float o, float p) +{ return 0.0; } +double clear_traces_d (double a, double b, double c, double d, double e, double f, double g, + double h, double i, double j, double k, double l, double m, double n, + double o, double p) +{ return 0.0; } +J clear_traces_J (void) +{ J j; j.l1 = j.l2 = 0; return j; } +void clear_traces (void) +{ clear_traces_i(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + clear_traces_f(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0); + clear_traces_d(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0); + clear_traces_J(); +} + +void + void_tests (void) +{ +#if (!defined(DGTEST)) || DGTEST == 1 + v_v(); + clear_traces(); + { + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_void); + { + FFI_CALL(cif,v_v,NULL,NULL); + } + } +#endif + return; +} +void + int_tests (void) +{ + int ir; + ffi_arg retvalue; +#if (!defined(DGTEST)) || DGTEST == 2 + ir = i_v(); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_sint); + { + FFI_CALL(cif,i_v,NULL,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 3 + ir = i_i(i1); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + { + /*const*/ void* args[] = { &i1 }; + FFI_CALL(cif,i_i,args,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 4 + ir = i_i2(i1,i2); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + { + /*const*/ void* args[] = { &i1, &i2 }; + FFI_CALL(cif,i_i2,args,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 5 + ir = i_i4(i1,i2,i3,i4); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + { + /*const*/ void* args[] = { &i1, &i2, &i3, &i4 }; + FFI_CALL(cif,i_i4,args,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 6 + ir = i_i8(i1,i2,i3,i4,i5,i6,i7,i8); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + { + /*const*/ void* args[] = { &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8 }; + FFI_CALL(cif,i_i8,args,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 7 + ir = i_i16(i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + { + /*const*/ void* args[] = { &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9, &i10, &i11, &i12, &i13, &i14, &i15, &i16 }; + FFI_CALL(cif,i_i16,args,&retvalue); + ir = retvalue; + } + } + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + + return; +} +void + float_tests (void) +{ + float fr; + +#if (!defined(DGTEST)) || DGTEST == 8 + fr = f_f(f1); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1 }; + FFI_CALL(cif,f_f,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 9 + fr = f_f2(f1,f2); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2 }; + FFI_CALL(cif,f_f2,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 10 + fr = f_f4(f1,f2,f3,f4); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4 }; + FFI_CALL(cif,f_f4,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 11 + fr = f_f8(f1,f2,f3,f4,f5,f6,f7,f8); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8 }; + FFI_CALL(cif,f_f8,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 12 + fr = f_f16(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16 }; + FFI_CALL(cif,f_f16,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 13 + fr = f_f24(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16, &f17, &f18, &f19, &f20, &f21, &f22, &f23, &f24 }; + FFI_CALL(cif,f_f24,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif +} +void + double_tests (void) +{ + double dr; + +#if (!defined(DGTEST)) || DGTEST == 14 + + dr = d_d(d1); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1 }; + FFI_CALL(cif,d_d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 15 + dr = d_d2(d1,d2); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2 }; + FFI_CALL(cif,d_d2,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 16 + dr = d_d4(d1,d2,d3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4 }; + FFI_CALL(cif,d_d4,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 17 + dr = d_d8(d1,d2,d3,d4,d5,d6,d7,d8); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8 }; + FFI_CALL(cif,d_d8,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 18 + dr = d_d16(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &d14, &d15, &d16 }; + FFI_CALL(cif,d_d16,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + return; +} +void + pointer_tests (void) +{ + void* vpr; + +#if (!defined(DGTEST)) || DGTEST == 19 + vpr = vp_vpdpcpsp(&uc1,&d2,str3,&I4); + fprintf(out,"->0x%p\n",vpr); + fflush(out); + vpr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_pointer); + { + void* puc1 = &uc1; + void* pd2 = &d2; + void* pstr3 = str3; + void* pI4 = &I4; + /*const*/ void* args[] = { &puc1, &pd2, &pstr3, &pI4 }; + FFI_CALL(cif,vp_vpdpcpsp,args,&vpr); + } + } + fprintf(out,"->0x%p\n",vpr); + fflush(out); +#endif + return; +} +void + mixed_number_tests (void) +{ + uchar ucr; + ushort usr; + float fr; + double dr; + long long llr; + + /* Unsigned types. + */ +#if (!defined(DGTEST)) || DGTEST == 20 + ucr = uc_ucsil(uc1, us2, ui3, ul4); + fprintf(out,"->%u\n",ucr); + fflush(out); + ucr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_uchar, &ffi_type_ushort, &ffi_type_uint, &ffi_type_ulong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_uchar); + { + ffi_arg r; + /*const*/ void* args[] = { &uc1, &us2, &ui3, &ul4 }; + FFI_CALL(cif,uc_ucsil,args,&r); + ucr = (uchar) r; + } + } + fprintf(out,"->%u\n",ucr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 21 + /* Mixed int & float types. + */ + dr = d_iidd(i1,i2,d3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &i1, &i2, &d3, &d4 }; + FFI_CALL(cif,d_iidd,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 22 + dr = d_iiidi(i1,i2,i3,d4,i5); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &i1, &i2, &i3, &d4, &i5 }; + FFI_CALL(cif,d_iiidi,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 23 + dr = d_idid(i1,d2,i3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_double, &ffi_type_sint, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &i1, &d2, &i3, &d4 }; + FFI_CALL(cif,d_idid,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 24 + dr = d_fdi(f1,d2,i3); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &f1, &d2, &i3 }; + FFI_CALL(cif,d_fdi,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 25 + usr = us_cdcd(c1,d2,c3,d4); + fprintf(out,"->%u\n",usr); + fflush(out); + usr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_char, &ffi_type_double, &ffi_type_char, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_ushort); + { + ffi_arg rint; + /*const*/ void* args[] = { &c1, &d2, &c3, &d4 }; + FFI_CALL(cif,us_cdcd,args,&rint); + usr = (ushort) rint; + } + } + fprintf(out,"->%u\n",usr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 26 + /* Long long types. + */ + llr = ll_iiilli(i1,i2,i3,ll1,i13); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_slonglong, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &i1, &i2, &i3, &ll1, &i13 }; + FFI_CALL(cif,ll_iiilli,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 27 + llr = ll_flli(f13,ll1,i13); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_slonglong, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &f13, &ll1, &i13 }; + FFI_CALL(cif,ll_flli,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 28 + fr = f_fi(f1,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &i9 }; + FFI_CALL(cif,f_fi,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 29 + fr = f_f2i(f1,f2,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &i9 }; + FFI_CALL(cif,f_f2i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 30 + fr = f_f3i(f1,f2,f3,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &i9 }; + FFI_CALL(cif,f_f3i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 31 + fr = f_f4i(f1,f2,f3,f4,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &i9 }; + FFI_CALL(cif,f_f4i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 32 + fr = f_f7i(f1,f2,f3,f4,f5,f6,f7,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &i9 }; + FFI_CALL(cif,f_f7i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 33 + fr = f_f8i(f1,f2,f3,f4,f5,f6,f7,f8,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &i9 }; + FFI_CALL(cif,f_f8i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 34 + fr = f_f12i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &i9 }; + FFI_CALL(cif,f_f12i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 35 + fr = f_f13i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &i9 }; + FFI_CALL(cif,f_f13i,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 36 + dr = d_di(d1,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &i9 }; + FFI_CALL(cif,d_di,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 37 + dr = d_d2i(d1,d2,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &i9 }; + FFI_CALL(cif,d_d2i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 38 + dr = d_d3i(d1,d2,d3,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &i9 }; + FFI_CALL(cif,d_d3i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 39 + dr = d_d4i(d1,d2,d3,d4,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &i9 }; + FFI_CALL(cif,d_d4i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 40 + dr = d_d7i(d1,d2,d3,d4,d5,d6,d7,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &i9 }; + FFI_CALL(cif,d_d7i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 41 + dr = d_d8i(d1,d2,d3,d4,d5,d6,d7,d8,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &i9 }; + FFI_CALL(cif,d_d8i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 42 + dr = d_d12i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &i9 }; + FFI_CALL(cif,d_d12i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 43 + dr = d_d13i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &i9 }; + FFI_CALL(cif,d_d13i,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + return; +} +void + small_structure_return_tests (void) +{ +#if (!defined(DGTEST)) || DGTEST == 44 + { + Size1 r = S1_v(); + fprintf(out,"->{%c}\n",r.x1); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size1_elements[] = { &ffi_type_char, NULL }; + ffi_type ffi_type_Size1; + ffi_type_Size1.type = FFI_TYPE_STRUCT; + ffi_type_Size1.size = sizeof(Size1); + ffi_type_Size1.alignment = alignof_slot(Size1); + ffi_type_Size1.elements = ffi_type_Size1_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size1); + { + FFI_CALL(cif,S1_v,NULL,&r); + } + } + fprintf(out,"->{%c}\n",r.x1); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 45 + { + Size2 r = S2_v(); + fprintf(out,"->{%c%c}\n",r.x1,r.x2); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size2_elements[] = { &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size2; + ffi_type_Size2.type = FFI_TYPE_STRUCT; + ffi_type_Size2.size = sizeof(Size2); + ffi_type_Size2.alignment = alignof_slot(Size2); + ffi_type_Size2.elements = ffi_type_Size2_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size2); + { + FFI_CALL(cif,S2_v,NULL,&r); + } + } + fprintf(out,"->{%c%c}\n",r.x1,r.x2); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 46 + { + Size3 r = S3_v(); + fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size3_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size3; + ffi_type_Size3.type = FFI_TYPE_STRUCT; + ffi_type_Size3.size = sizeof(Size3); + ffi_type_Size3.alignment = alignof_slot(Size3); + ffi_type_Size3.elements = ffi_type_Size3_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size3); + { + FFI_CALL(cif,S3_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 47 + { + Size4 r = S4_v(); + fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size4_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size4; + ffi_type_Size4.type = FFI_TYPE_STRUCT; + ffi_type_Size4.size = sizeof(Size4); + ffi_type_Size4.alignment = alignof_slot(Size4); + ffi_type_Size4.elements = ffi_type_Size4_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size4); + { + FFI_CALL(cif,S4_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 48 + { + Size7 r = S7_v(); + fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size7_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size7; + ffi_type_Size7.type = FFI_TYPE_STRUCT; + ffi_type_Size7.size = sizeof(Size7); + ffi_type_Size7.alignment = alignof_slot(Size7); + ffi_type_Size7.elements = ffi_type_Size7_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size7); + { + FFI_CALL(cif,S7_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 49 + { + Size8 r = S8_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size8_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size8; + ffi_type_Size8.type = FFI_TYPE_STRUCT; + ffi_type_Size8.size = sizeof(Size8); + ffi_type_Size8.alignment = alignof_slot(Size8); + ffi_type_Size8.elements = ffi_type_Size8_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size8); + { + FFI_CALL(cif,S8_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 50 + { + Size12 r = S12_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size12_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size12; + ffi_type_Size12.type = FFI_TYPE_STRUCT; + ffi_type_Size12.size = sizeof(Size12); + ffi_type_Size12.alignment = alignof_slot(Size12); + ffi_type_Size12.elements = ffi_type_Size12_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size12); + { + FFI_CALL(cif,S12_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 51 + { + Size15 r = S15_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size15_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size15; + ffi_type_Size15.type = FFI_TYPE_STRUCT; + ffi_type_Size15.size = sizeof(Size15); + ffi_type_Size15.alignment = alignof_slot(Size15); + ffi_type_Size15.elements = ffi_type_Size15_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size15); + { + FFI_CALL(cif,S15_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15); + fflush(out); + } +#endif +#if (!defined(DGTEST)) || DGTEST == 52 + { + Size16 r = S16_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + { + ffi_type* ffi_type_Size16_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size16; + ffi_type_Size16.type = FFI_TYPE_STRUCT; + ffi_type_Size16.size = sizeof(Size16); + ffi_type_Size16.alignment = alignof_slot(Size16); + ffi_type_Size16.elements = ffi_type_Size16_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size16); + { + FFI_CALL(cif,S16_v,NULL,&r); + } + } + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16); + fflush(out); + } +#endif +} +void + structure_tests (void) +{ + Int Ir; + Char Cr; + Float Fr; + Double Dr; + J Jr; +#ifndef SKIP_EXTRA_STRUCTS + T Tr; + X Xr; +#endif + +#if (!defined(DGTEST)) || DGTEST == 53 + Ir = I_III(I1,I2,I3); + fprintf(out,"->{%d}\n",Ir.x); + fflush(out); + Ir.x = 0; clear_traces(); + { + ffi_type* ffi_type_Int_elements[] = { &ffi_type_sint, NULL }; + ffi_type ffi_type_Int; + ffi_type_Int.type = FFI_TYPE_STRUCT; + ffi_type_Int.size = sizeof(Int); + ffi_type_Int.alignment = alignof_slot(Int); + ffi_type_Int.elements = ffi_type_Int_elements; + ffi_type* argtypes[] = { &ffi_type_Int, &ffi_type_Int, &ffi_type_Int }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Int); + { + /*const*/ void* args[] = { &I1, &I2, &I3 }; + FFI_CALL(cif,I_III,args,&Ir); + } + } + fprintf(out,"->{%d}\n",Ir.x); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 54 + Cr = C_CdC(C1,d2,C3); + fprintf(out,"->{'%c'}\n",Cr.x); + fflush(out); + Cr.x = '\0'; clear_traces(); + { + ffi_type* ffi_type_Char_elements[] = { &ffi_type_char, NULL }; + ffi_type ffi_type_Char; + ffi_type_Char.type = FFI_TYPE_STRUCT; + ffi_type_Char.size = sizeof(Char); + ffi_type_Char.alignment = alignof_slot(Char); + ffi_type_Char.elements = ffi_type_Char_elements; + ffi_type* argtypes[] = { &ffi_type_Char, &ffi_type_double, &ffi_type_Char }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Char); + { + /*const*/ void* args[] = { &C1, &d2, &C3 }; + FFI_CALL(cif,C_CdC,args,&Cr); + } + } + fprintf(out,"->{'%c'}\n",Cr.x); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 55 + Fr = F_Ffd(F1,f2,d3); + fprintf(out,"->{%g}\n",Fr.x); + fflush(out); + Fr.x = 0.0; clear_traces(); + { + ffi_type* ffi_type_Float_elements[] = { &ffi_type_float, NULL }; + ffi_type ffi_type_Float; + ffi_type_Float.type = FFI_TYPE_STRUCT; + ffi_type_Float.size = sizeof(Float); + ffi_type_Float.alignment = alignof_slot(Float); + ffi_type_Float.elements = ffi_type_Float_elements; + ffi_type* argtypes[] = { &ffi_type_Float, &ffi_type_float, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Float); + { + /*const*/ void* args[] = { &F1, &f2, &d3 }; + FFI_CALL(cif,F_Ffd,args,&Fr); + } + } + fprintf(out,"->{%g}\n",Fr.x); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 56 + Dr = D_fDd(f1,D2,d3); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); + Dr.x = 0.0; clear_traces(); + { + ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL }; + ffi_type ffi_type_Double; + ffi_type_Double.type = FFI_TYPE_STRUCT; + ffi_type_Double.size = sizeof(Double); + ffi_type_Double.alignment = alignof_slot(Double); + ffi_type_Double.elements = ffi_type_Double_elements; + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_Double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Double); + { + /*const*/ void* args[] = { &f1, &D2, &d3 }; + FFI_CALL(cif,D_fDd,args,&Dr); + } + } + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 57 + Dr = D_Dfd(D1,f2,d3); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); + Dr.x = 0.0; clear_traces(); + { + ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL }; + ffi_type ffi_type_Double; + ffi_type_Double.type = FFI_TYPE_STRUCT; + ffi_type_Double.size = sizeof(Double); + ffi_type_Double.alignment = alignof_slot(Double); + ffi_type_Double.elements = ffi_type_Double_elements; + ffi_type* argtypes[] = { &ffi_type_Double, &ffi_type_float, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Double); + { + /*const*/ void* args[] = { &D1, &f2, &d3 }; + FFI_CALL(cif,D_Dfd,args,&Dr); + } + } + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 58 + Jr = J_JiJ(J1,i2,J2); + fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2); + fflush(out); + Jr.l1 = Jr.l2 = 0; clear_traces(); + { + ffi_type* ffi_type_J_elements[] = { &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_J; + ffi_type_J.type = FFI_TYPE_STRUCT; + ffi_type_J.size = sizeof(J); + ffi_type_J.alignment = alignof_slot(J); + ffi_type_J.elements = ffi_type_J_elements; + ffi_type* argtypes[] = { &ffi_type_J, &ffi_type_sint, &ffi_type_J }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_J); + { + /*const*/ void* args[] = { &J1, &i2, &J2 }; + FFI_CALL(cif,J_JiJ,args,&Jr); + } + } + fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2); + fflush(out); +#endif +#ifndef SKIP_EXTRA_STRUCTS +#if (!defined(DGTEST)) || DGTEST == 59 + Tr = T_TcT(T1,' ',T2); + fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]); + fflush(out); + Tr.c[0] = Tr.c[1] = Tr.c[2] = 0; clear_traces(); + { + ffi_type* ffi_type_T_elements[] = { ??, NULL }; + ffi_type ffi_type_T; + ffi_type_T.type = FFI_TYPE_STRUCT; + ffi_type_T.size = sizeof(T); + ffi_type_T.alignment = alignof_slot(T); + ffi_type_T.elements = ffi_type_T_elements; + ffi_type* argtypes[] = { &ffi_type_T, &ffi_type_char, &ffi_type_T }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_T); + { + char space = ' '; + /*const*/ void* args[] = { &T1, &space, &T2 }; + FFI_CALL(cif,T_TcT,args,&Tr); + } + } + fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 60 + Xr = X_BcdB(B1,c2,d3,B2); + fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1); + fflush(out); + Xr.c[0]=Xr.c1='\0'; clear_traces(); + { + ffi_type* ffi_type_X_elements[] = { ??, NULL }; + ffi_type ffi_type_X; + ffi_type_X.type = FFI_TYPE_STRUCT; + ffi_type_X.size = sizeof(X); + ffi_type_X.alignment = alignof_slot(X); + ffi_type_X.elements = ffi_type_X_elements; + ffi_type* argtypes[] = { &ffi_type_X, &ffi_type_char, &ffi_type_double, &ffi_type_X }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_X); + { + /*const*/ void* args[] = { &B1, &c2, &d3, &B2 }; + FFI_CALL(cif,X_BcdB,args,&Xr); + } + } + fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1); + fflush(out); +#endif +#endif + + return; +} + +void + gpargs_boundary_tests (void) +{ + ffi_type* ffi_type_K_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_K; + ffi_type* ffi_type_L_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_L; + long lr; + long long llr; + float fr; + double dr; + + ffi_type_K.type = FFI_TYPE_STRUCT; + ffi_type_K.size = sizeof(K); + ffi_type_K.alignment = alignof_slot(K); + ffi_type_K.elements = ffi_type_K_elements; + + ffi_type_L.type = FFI_TYPE_STRUCT; + ffi_type_L.size = sizeof(L); + ffi_type_L.alignment = alignof_slot(L); + ffi_type_L.elements = ffi_type_L_elements; + +#if (!defined(DGTEST)) || DGTEST == 61 + lr = l_l0K(K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &K1, &l9 }; + FFI_CALL(cif,l_l0K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 62 + lr = l_l1K(l1,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &K1, &l9 }; + FFI_CALL(cif,l_l1K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 63 + lr = l_l2K(l1,l2,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &l2, &K1, &l9 }; + FFI_CALL(cif,l_l2K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 64 + lr = l_l3K(l1,l2,l3,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &K1, &l9 }; + FFI_CALL(cif,l_l3K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 65 + lr = l_l4K(l1,l2,l3,l4,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &K1, &l9 }; + FFI_CALL(cif,l_l4K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 66 + lr = l_l5K(l1,l2,l3,l4,l5,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &K1, &l9 }; + FFI_CALL(cif,l_l5K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 67 + lr = l_l6K(l1,l2,l3,l4,l5,l6,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &K1, &l9 }; + FFI_CALL(cif,l_l6K,args,&lr); + } + } + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 68 + fr = f_f17l3L(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + { + /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16, &f17, &l6, &l7, &l8, &L1 }; + FFI_CALL(cif,f_f17l3L,args,&fr); + } + } + fprintf(out,"->%g\n",fr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 69 + dr = d_d17l3L(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &d14, &d15, &d16, &d17, &l6, &l7, &l8, &L1 }; + FFI_CALL(cif,d_d17l3L,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 70 + llr = ll_l2ll(l1,l2,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &ll1, &l9 }; + FFI_CALL(cif,ll_l2ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 71 + llr = ll_l3ll(l1,l2,l3,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &ll1, &l9 }; + FFI_CALL(cif,ll_l3ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 72 + llr = ll_l4ll(l1,l2,l3,l4,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &ll1, &l9 }; + FFI_CALL(cif,ll_l4ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 73 + llr = ll_l5ll(l1,l2,l3,l4,l5,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &ll1, &l9 }; + FFI_CALL(cif,ll_l5ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 74 + llr = ll_l6ll(l1,l2,l3,l4,l5,l6,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &ll1, &l9 }; + FFI_CALL(cif,ll_l6ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 75 + llr = ll_l7ll(l1,l2,l3,l4,l5,l6,l7,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &l7, &ll1, &l9 }; + FFI_CALL(cif,ll_l7ll,args,&llr); + } + } + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 76 + dr = d_l2d(l1,l2,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &d2, &l9 }; + FFI_CALL(cif,d_l2d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 77 + dr = d_l3d(l1,l2,l3,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &d2, &l9 }; + FFI_CALL(cif,d_l3d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 78 + dr = d_l4d(l1,l2,l3,l4,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &d2, &l9 }; + FFI_CALL(cif,d_l4d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 79 + dr = d_l5d(l1,l2,l3,l4,l5,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &d2, &l9 }; + FFI_CALL(cif,d_l5d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 80 + dr = d_l6d(l1,l2,l3,l4,l5,l6,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &d2, &l9 }; + FFI_CALL(cif,d_l6d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif +#if (!defined(DGTEST)) || DGTEST == 81 + dr = d_l7d(l1,l2,l3,l4,l5,l6,l7,d2,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + { + /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &l7, &d2, &l9 }; + FFI_CALL(cif,d_l7d,args,&dr); + } + } + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + return; +} + +int + main (void) +{ + ffi_type_char = (char)(-1) < 0 ? ffi_type_schar : ffi_type_uchar; + out = stdout; + + void_tests(); + int_tests(); + float_tests(); + double_tests(); + pointer_tests(); + mixed_number_tests(); + small_structure_return_tests(); + structure_tests(); + gpargs_boundary_tests(); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c new file mode 100644 index 0000000000..67a8145e1f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c @@ -0,0 +1,2885 @@ +/* + * Copyright 1993 Bill Triggs + * Copyright 1995-2017 Bruno Haible + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* { dg-do run { xfail gccbug } }*/ + +#include +#include +#include +#include +#include "alignof.h" +#include + +/* libffi testsuite local changes -------------------------------- */ +#ifdef DGTEST +/* Redefine exit(1) as a test failure */ +#define exit(V) (void)((V) ? (abort(), 1) : exit(0)) +int count = 0; +char rbuf1[2048]; +char rbuf2[2048]; +int _fprintf(FILE *stream, const char *format, ...) +{ + va_list args; + va_start(args, format); + + switch (count++) + { + case 0: + case 1: + vsprintf(&rbuf1[strlen(rbuf1)], format, args); + break; + case 2: + printf("%s", rbuf1); + vsprintf(rbuf2, format, args); + break; + case 3: + vsprintf(&rbuf2[strlen(rbuf2)], format, args); + printf("%s", rbuf2); + if (strcmp (rbuf1, rbuf2)) abort(); + break; + } + + va_end(args); + + return 0; +} +#define fprintf _fprintf +#endif +/* --------------------------------------------------------------- */ + +#include "testcases.c" + +#ifndef ABI_NUM +#define ABI_NUM FFI_DEFAULT_ABI +#endif + +/* Definitions that ought to be part of libffi. */ +static ffi_type ffi_type_char; +#define ffi_type_slonglong ffi_type_sint64 +#define ffi_type_ulonglong ffi_type_uint64 + +/* libffi does not support arrays inside structs. */ +#define SKIP_EXTRA_STRUCTS + +#define FFI_PREP_CIF(cif,argtypes,rettype) \ + if (ffi_prep_cif(&(cif),ABI_NUM,sizeof(argtypes)/sizeof(argtypes[0]),&rettype,argtypes) != FFI_OK) abort() +#define FFI_PREP_CIF_NOARGS(cif,rettype) \ + if (ffi_prep_cif(&(cif),ABI_NUM,0,&rettype,NULL) != FFI_OK) abort() + +#if defined(__sparc__) && defined(__sun) && defined(__SUNPRO_C) /* SUNWspro cc */ +/* SunPRO cc miscompiles the simulator function for X_BcdB: d.i[1] is + * temporarily stored in %l2 and put onto the stack from %l2, but in between + * the copy of X has used %l2 as a counter without saving and restoring its + * value. + */ +#define SKIP_X +#endif +#if defined(__mipsn32__) && !defined(__GNUC__) +/* The X test crashes for an unknown reason. */ +#define SKIP_X +#endif + + +/* These functions simulate the behaviour of the functions defined in testcases.c. */ + +/* void tests */ +void v_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&v_v) { fprintf(out,"wrong data for v_v\n"); exit(1); } + fprintf(out,"void f(void):\n"); + fflush(out); +} + +/* int tests */ +void i_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_v) { fprintf(out,"wrong data for i_v\n"); exit(1); } + {int r=99; + fprintf(out,"int f(void):"); + fflush(out); + *(ffi_arg*)retp = r; +}} +void i_i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_i) { fprintf(out,"wrong data for i_i\n"); exit(1); } + int a = *(int*)(*args++); + int r=a+1; + fprintf(out,"int f(int):(%d)",a); + fflush(out); + *(ffi_arg*)retp = r; +} +void i_i2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_i2) { fprintf(out,"wrong data for i_i2\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int r=a+b; + fprintf(out,"int f(2*int):(%d,%d)",a,b); + fflush(out); + *(ffi_arg*)retp = r; +}} +void i_i4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_i4) { fprintf(out,"wrong data for i_i4\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int c = *(int*)(*args++); + int d = *(int*)(*args++); + int r=a+b+c+d; + fprintf(out,"int f(4*int):(%d,%d,%d,%d)",a,b,c,d); + fflush(out); + *(ffi_arg*)retp = r; +}} +void i_i8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_i8) { fprintf(out,"wrong data for i_i8\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int c = *(int*)(*args++); + int d = *(int*)(*args++); + int e = *(int*)(*args++); + int f = *(int*)(*args++); + int g = *(int*)(*args++); + int h = *(int*)(*args++); + int r=a+b+c+d+e+f+g+h; + fprintf(out,"int f(8*int):(%d,%d,%d,%d,%d,%d,%d,%d)",a,b,c,d,e,f,g,h); + fflush(out); + *(ffi_arg*)retp = r; +}} +void i_i16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&i_i16) { fprintf(out,"wrong data for i_i16\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int c = *(int*)(*args++); + int d = *(int*)(*args++); + int e = *(int*)(*args++); + int f = *(int*)(*args++); + int g = *(int*)(*args++); + int h = *(int*)(*args++); + int i = *(int*)(*args++); + int j = *(int*)(*args++); + int k = *(int*)(*args++); + int l = *(int*)(*args++); + int m = *(int*)(*args++); + int n = *(int*)(*args++); + int o = *(int*)(*args++); + int p = *(int*)(*args++); + int r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"int f(16*int):(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)", + a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + *(ffi_arg*)retp = r; +}} + +/* float tests */ +void f_f_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f) { fprintf(out,"wrong data for f_f\n"); exit(1); } + {float a = *(float*)(*args++); + float r=a+1.0; + fprintf(out,"float f(float):(%g)",a); + fflush(out); + *(float*)retp = r; +}} +void f_f2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f2) { fprintf(out,"wrong data for f_f2\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float r=a+b; + fprintf(out,"float f(2*float):(%g,%g)",a,b); + fflush(out); + *(float*)retp = r; +}} +void f_f4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f4) { fprintf(out,"wrong data for f_f4\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float r=a+b+c+d; + fprintf(out,"float f(4*float):(%g,%g,%g,%g)",a,b,c,d); + fflush(out); + *(float*)retp = r; +}} +void f_f8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f8) { fprintf(out,"wrong data for f_f8\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float r=a+b+c+d+e+f+g+h; + fprintf(out,"float f(8*float):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h); + fflush(out); + *(float*)retp = r; +}} +void f_f16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f16) { fprintf(out,"wrong data for f_f16\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float i = *(float*)(*args++); + float j = *(float*)(*args++); + float k = *(float*)(*args++); + float l = *(float*)(*args++); + float m = *(float*)(*args++); + float n = *(float*)(*args++); + float o = *(float*)(*args++); + float p = *(float*)(*args++); + float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"float f(16*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + *(float*)retp = r; +}} +void f_f24_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f24) { fprintf(out,"wrong data for f_f24\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float i = *(float*)(*args++); + float j = *(float*)(*args++); + float k = *(float*)(*args++); + float l = *(float*)(*args++); + float m = *(float*)(*args++); + float n = *(float*)(*args++); + float o = *(float*)(*args++); + float p = *(float*)(*args++); + float q = *(float*)(*args++); + float s = *(float*)(*args++); + float t = *(float*)(*args++); + float u = *(float*)(*args++); + float v = *(float*)(*args++); + float w = *(float*)(*args++); + float x = *(float*)(*args++); + float y = *(float*)(*args++); + float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+v+w+x+y; + fprintf(out,"float f(24*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,v,w,x,y); + fflush(out); + *(float*)retp = r; +}} + +/* double tests */ +void d_d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d) { fprintf(out,"wrong data for d_d\n"); exit(1); } + {double a = *(double*)(*args++); + double r=a+1.0; + fprintf(out,"double f(double):(%g)",a); + fflush(out); + *(double*)retp = r; +}} +void d_d2_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d2) { fprintf(out,"wrong data for d_d2\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double r=a+b; + fprintf(out,"double f(2*double):(%g,%g)",a,b); + fflush(out); + *(double*)retp = r; +}} +void d_d4_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d4) { fprintf(out,"wrong data for d_d4\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double r=a+b+c+d; + fprintf(out,"double f(4*double):(%g,%g,%g,%g)",a,b,c,d); + fflush(out); + *(double*)retp = r; +}} +void d_d8_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d8) { fprintf(out,"wrong data for d_d8\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + double r=a+b+c+d+e+f+g+h; + fprintf(out,"double f(8*double):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h); + fflush(out); + *(double*)retp = r; +}} +void d_d16_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d16) { fprintf(out,"wrong data for d_d16\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + double i = *(double*)(*args++); + double j = *(double*)(*args++); + double k = *(double*)(*args++); + double l = *(double*)(*args++); + double m = *(double*)(*args++); + double n = *(double*)(*args++); + double o = *(double*)(*args++); + double p = *(double*)(*args++); + double r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"double f(16*double):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + *(double*)retp = r; +}} + +/* pointer tests */ +void vp_vpdpcpsp_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&vp_vpdpcpsp) { fprintf(out,"wrong data for vp_vpdpcpsp\n"); exit(1); } + {void* a = *(void* *)(*args++); + double* b = *(double* *)(*args++); + char* c = *(char* *)(*args++); + Int* d = *(Int* *)(*args++); + void* ret = (char*)b + 1; + fprintf(out,"void* f(void*,double*,char*,Int*):(0x%p,0x%p,0x%p,0x%p)",a,b,c,d); + fflush(out); + *(void* *)retp = ret; +}} + +/* mixed number tests */ +void uc_ucsil_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&uc_ucsil) { fprintf(out,"wrong data for uc_ucsil\n"); exit(1); } + {uchar a = *(unsigned char *)(*args++); + ushort b = *(unsigned short *)(*args++); + uint c = *(unsigned int *)(*args++); + ulong d = *(unsigned long *)(*args++); + uchar r = (uchar)-1; + fprintf(out,"uchar f(uchar,ushort,uint,ulong):(%u,%u,%u,%lu)",a,b,c,d); + fflush(out); + *(ffi_arg *)retp = r; +}} +void d_iidd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_iidd) { fprintf(out,"wrong data for d_iidd\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double r=a+b+c+d; + fprintf(out,"double f(int,int,double,double):(%d,%d,%g,%g)",a,b,c,d); + fflush(out); + *(double*)retp = r; +}} +void d_iiidi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_iiidi) { fprintf(out,"wrong data for d_iiidi\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int c = *(int*)(*args++); + double d = *(double*)(*args++); + int e = *(int*)(*args++); + double r=a+b+c+d+e; + fprintf(out,"double f(int,int,int,double,int):(%d,%d,%d,%g,%d)",a,b,c,d,e); + fflush(out); + *(double*)retp = r; +}} +void d_idid_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_idid) { fprintf(out,"wrong data for d_idid\n"); exit(1); } + {int a = *(int*)(*args++); + double b = *(double*)(*args++); + int c = *(int*)(*args++); + double d = *(double*)(*args++); + double r=a+b+c+d; + fprintf(out,"double f(int,double,int,double):(%d,%g,%d,%g)",a,b,c,d); + fflush(out); + *(double*)retp = r; +}} +void d_fdi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_fdi) { fprintf(out,"wrong data for d_fdi\n"); exit(1); } + {float a = *(float*)(*args++); + double b = *(double*)(*args++); + int c = *(int*)(*args++); + double r=a+b+c; + fprintf(out,"double f(float,double,int):(%g,%g,%d)",a,b,c); + fflush(out); + *(double*)retp = r; +}} +void us_cdcd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&us_cdcd) { fprintf(out,"wrong data for us_cdcd\n"); exit(1); } + {char a = *(char*)(*args++); + double b = *(double*)(*args++); + char c = *(char*)(*args++); + double d = *(double*)(*args++); + ushort r = (ushort)(a + b + c + d); + fprintf(out,"ushort f(char,double,char,double):('%c',%g,'%c',%g)",a,b,c,d); + fflush(out); + *(ffi_arg *)retp = r; +}} +void ll_iiilli_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_iiilli) { fprintf(out,"wrong data for ll_iiilli\n"); exit(1); } + {int a = *(int*)(*args++); + int b = *(int*)(*args++); + int c = *(int*)(*args++); + long long d = *(long long *)(*args++); + int e = *(int*)(*args++); + long long r = (long long)(int)a + (long long)(int)b + (long long)(int)c + d + (long long)e; + fprintf(out,"long long f(int,int,int,long long,int):(%d,%d,%d,0x%lx%08lx,%d)",a,b,c,(long)(d>>32),(long)(d&0xffffffff),e); + fflush(out); + *(long long *)retp = r; +}} +void ll_flli_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_flli) { fprintf(out,"wrong data for ll_flli\n"); exit(1); } + {float a = *(float*)(*args++); + long long b = *(long long *)(*args++); + int c = *(int*)(*args++); + long long r = (long long)(int)a + b + (long long)c; + fprintf(out,"long long f(float,long long,int):(%g,0x%lx%08lx,0x%lx)",a,(long)(b>>32),(long)(b&0xffffffff),(long)c); + fflush(out); + *(long long *)retp = r; +}} +void f_fi_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_fi) { fprintf(out,"wrong data for f_fi\n"); exit(1); } + {float a = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+z; + fprintf(out,"float f(float,int):(%g,%d)",a,z); + fflush(out); + *(float*)retp = r; +}} +void f_f2i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f2i) { fprintf(out,"wrong data for f_f2i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+z; + fprintf(out,"float f(2*float,int):(%g,%g,%d)",a,b,z); + fflush(out); + *(float*)retp = r; +}} +void f_f3i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f3i) { fprintf(out,"wrong data for f_f3i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+z; + fprintf(out,"float f(3*float,int):(%g,%g,%g,%d)",a,b,c,z); + fflush(out); + *(float*)retp = r; +}} +void f_f4i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f4i) { fprintf(out,"wrong data for f_f4i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+d+z; + fprintf(out,"float f(4*float,int):(%g,%g,%g,%g,%d)",a,b,c,d,z); + fflush(out); + *(float*)retp = r; +}} +void f_f7i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f7i) { fprintf(out,"wrong data for f_f7i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+d+e+f+g+z; + fprintf(out,"float f(7*float,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z); + fflush(out); + *(float*)retp = r; +}} +void f_f8i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f8i) { fprintf(out,"wrong data for f_f8i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+d+e+f+g+h+z; + fprintf(out,"float f(8*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z); + fflush(out); + *(float*)retp = r; +}} +void f_f12i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f12i) { fprintf(out,"wrong data for f_f12i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float i = *(float*)(*args++); + float j = *(float*)(*args++); + float k = *(float*)(*args++); + float l = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+d+e+f+g+h+i+j+k+l+z; + fprintf(out,"float f(12*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z); + fflush(out); + *(float*)retp = r; +}} +void f_f13i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f13i) { fprintf(out,"wrong data for f_f13i\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float i = *(float*)(*args++); + float j = *(float*)(*args++); + float k = *(float*)(*args++); + float l = *(float*)(*args++); + float m = *(float*)(*args++); + int z = *(int*)(*args++); + float r=a+b+c+d+e+f+g+h+i+j+k+l+m+z; + fprintf(out,"float f(13*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z); + fflush(out); + *(float*)retp = r; +}} +void d_di_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_di) { fprintf(out,"wrong data for d_di\n"); exit(1); } + {double a = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+z; + fprintf(out,"double f(double,int):(%g,%d)",a,z); + fflush(out); + *(double*)retp = r; +}} +void d_d2i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d2i) { fprintf(out,"wrong data for d_d2i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+z; + fprintf(out,"double f(2*double,int):(%g,%g,%d)",a,b,z); + fflush(out); + *(double*)retp = r; +}} +void d_d3i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d3i) { fprintf(out,"wrong data for d_d3i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+z; + fprintf(out,"double f(3*double,int):(%g,%g,%g,%d)",a,b,c,z); + fflush(out); + *(double*)retp = r; +}} +void d_d4i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d4i) { fprintf(out,"wrong data for d_d4i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+d+z; + fprintf(out,"double f(4*double,int):(%g,%g,%g,%g,%d)",a,b,c,d,z); + fflush(out); + *(double*)retp = r; +}} +void d_d7i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d7i) { fprintf(out,"wrong data for d_d7i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+d+e+f+g+z; + fprintf(out,"double f(7*double,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z); + fflush(out); + *(double*)retp = r; +}} +void d_d8i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d8i) { fprintf(out,"wrong data for d_d8i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+d+e+f+g+h+z; + fprintf(out,"double f(8*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z); + fflush(out); + *(double*)retp = r; +}} +void d_d12i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d12i) { fprintf(out,"wrong data for d_d12i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + double i = *(double*)(*args++); + double j = *(double*)(*args++); + double k = *(double*)(*args++); + double l = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+d+e+f+g+h+i+j+k+l+z; + fprintf(out,"double f(12*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z); + fflush(out); + *(double*)retp = r; +}} +void d_d13i_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d13i) { fprintf(out,"wrong data for d_d13i\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + double i = *(double*)(*args++); + double j = *(double*)(*args++); + double k = *(double*)(*args++); + double l = *(double*)(*args++); + double m = *(double*)(*args++); + int z = *(int*)(*args++); + double r=a+b+c+d+e+f+g+h+i+j+k+l+m+z; + fprintf(out,"double f(13*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z); + fflush(out); + *(double*)retp = r; +}} + +/* small structure return tests */ +void S1_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S1_v) { fprintf(out,"wrong data for S1_v\n"); exit(1); } + {Size1 r = Size1_1; + fprintf(out,"Size1 f(void):"); + fflush(out); + *(Size1*)retp = r; +}} +void S2_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S2_v) { fprintf(out,"wrong data for S2_v\n"); exit(1); } + {Size2 r = Size2_1; + fprintf(out,"Size2 f(void):"); + fflush(out); + *(Size2*)retp = r; +}} +void S3_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S3_v) { fprintf(out,"wrong data for S3_v\n"); exit(1); } + {Size3 r = Size3_1; + fprintf(out,"Size3 f(void):"); + fflush(out); + *(Size3*)retp = r; +}} +void S4_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S4_v) { fprintf(out,"wrong data for S4_v\n"); exit(1); } + {Size4 r = Size4_1; + fprintf(out,"Size4 f(void):"); + fflush(out); + *(Size4*)retp = r; +}} +void S7_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S7_v) { fprintf(out,"wrong data for S7_v\n"); exit(1); } + {Size7 r = Size7_1; + fprintf(out,"Size7 f(void):"); + fflush(out); + *(Size7*)retp = r; +}} +void S8_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S8_v) { fprintf(out,"wrong data for S8_v\n"); exit(1); } + {Size8 r = Size8_1; + fprintf(out,"Size8 f(void):"); + fflush(out); + *(Size8*)retp = r; +}} +void S12_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S12_v) { fprintf(out,"wrong data for S12_v\n"); exit(1); } + {Size12 r = Size12_1; + fprintf(out,"Size12 f(void):"); + fflush(out); + *(Size12*)retp = r; +}} +void S15_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S15_v) { fprintf(out,"wrong data for S15_v\n"); exit(1); } + {Size15 r = Size15_1; + fprintf(out,"Size15 f(void):"); + fflush(out); + *(Size15*)retp = r; +}} +void S16_v_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&S16_v) { fprintf(out,"wrong data for S16_v\n"); exit(1); } + {Size16 r = Size16_1; + fprintf(out,"Size16 f(void):"); + fflush(out); + *(Size16*)retp = r; +}} + +/* structure tests */ +void I_III_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&I_III) { fprintf(out,"wrong data for I_III\n"); exit(1); } + {Int a = *(Int*)(*args++); + Int b = *(Int*)(*args++); + Int c = *(Int*)(*args++); + Int r; + r.x = a.x + b.x + c.x; + fprintf(out,"Int f(Int,Int,Int):({%d},{%d},{%d})",a.x,b.x,c.x); + fflush(out); + *(Int*)retp = r; +}} +void C_CdC_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&C_CdC) { fprintf(out,"wrong data for C_CdC\n"); exit(1); } + {Char a = *(Char*)(*args++); + double b = *(double*)(*args++); + Char c = *(Char*)(*args++); + Char r; + r.x = (a.x + c.x)/2; + fprintf(out,"Char f(Char,double,Char):({'%c'},%g,{'%c'})",a.x,b,c.x); + fflush(out); + *(Char*)retp = r; +}} +void F_Ffd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&F_Ffd) { fprintf(out,"wrong data for F_Ffd\n"); exit(1); } + {Float a = *(Float*)(*args++); + float b = *(float*)(*args++); + double c = *(double*)(*args++); + Float r; + r.x = a.x + b + c; + fprintf(out,"Float f(Float,float,double):({%g},%g,%g)",a.x,b,c); + fflush(out); + *(Float*)retp = r; +}} +void D_fDd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&D_fDd) { fprintf(out,"wrong data for D_fDd\n"); exit(1); } + {float a = *(float*)(*args++); + Double b = *(Double*)(*args++); + double c = *(double*)(*args++); + Double r; + r.x = a + b.x + c; + fprintf(out,"Double f(float,Double,double):(%g,{%g},%g)",a,b.x,c); + fflush(out); + *(Double*)retp = r; +}} +void D_Dfd_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&D_Dfd) { fprintf(out,"wrong data for D_Dfd\n"); exit(1); } + {Double a = *(Double*)(*args++); + float b = *(float*)(*args++); + double c = *(double*)(*args++); + Double r; + r.x = a.x + b + c; + fprintf(out,"Double f(Double,float,double):({%g},%g,%g)",a.x,b,c); + fflush(out); + *(Double*)retp = r; +}} +void J_JiJ_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&J_JiJ) { fprintf(out,"wrong data for J_JiJ\n"); exit(1); } + {J a = *(J*)(*args++); + int b= *(int*)(*args++); + J c = *(J*)(*args++); + J r; + r.l1 = a.l1+c.l1; r.l2 = a.l2+b+c.l2; + fprintf(out,"J f(J,int,J):({%ld,%ld},%d,{%ld,%ld})",a.l1,a.l2,b,c.l1,c.l2); + fflush(out); + *(J*)retp = r; +}} +#ifndef SKIP_EXTRA_STRUCTS +void T_TcT_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&T_TcT) { fprintf(out,"wrong data for T_TcT\n"); exit(1); } + {T a = *(T*)(*args++); + char b = *(char*)(*args++); + T c = *(T*)(*args++); + T r; + r.c[0]='b'; r.c[1]=c.c[1]; r.c[2]=c.c[2]; + fprintf(out,"T f(T,char,T):({\"%c%c%c\"},'%c',{\"%c%c%c\"})",a.c[0],a.c[1],a.c[2],b,c.c[0],c.c[1],c.c[2]); + fflush(out); + *(T*)retp = r; +}} +void X_BcdB_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&X_BcdB) { fprintf(out,"wrong data for X_BcdB\n"); exit(1); } + {B a = *(B*)(*args++); + char b = *(char*)(*args++); + double c = *(double*)(*args++); + B d = *(B*)(*args++); + static X xr={"return val",'R'}; + X r; + r = xr; + r.c1 = b; + fprintf(out,"X f(B,char,double,B):({%g,{%d,%d,%d}},'%c',%g,{%g,{%d,%d,%d}})", + a.d,a.i[0],a.i[1],a.i[2],b,c,d.d,d.i[0],d.i[1],d.i[2]); + fflush(out); + *(X*)retp = r; +}} +#endif + +/* gpargs boundary tests */ +void l_l0K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l0K) { fprintf(out,"wrong data for l_l0K\n"); exit(1); } + {K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(K,long):(%ld,%ld,%ld,%ld,%ld)",b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l1K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l1K) { fprintf(out,"wrong data for l_l1K\n"); exit(1); } + {long a1 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld)",a1,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l2K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l2K) { fprintf(out,"wrong data for l_l2K\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + a2 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(2*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l3K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l3K) { fprintf(out,"wrong data for l_l3K\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + a2 + a3 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(3*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l4K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l4K) { fprintf(out,"wrong data for l_l4K\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + a2 + a3 + a4 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(4*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l5K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l5K) { fprintf(out,"wrong data for l_l5K\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + a2 + a3 + a4 + a5 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(5*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void l_l6K_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&l_l6K) { fprintf(out,"wrong data for l_l6K\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long a6 = *(long*)(*args++); + K b = *(K*)(*args++); + long c = *(long*)(*args++); + long r = a1 + a2 + a3 + a4 + a5 + a6 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(6*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,a6,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + *(ffi_arg*)retp = r; +}} +void f_f17l3L_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&f_f17l3L) { fprintf(out,"wrong data for f_f17l3L\n"); exit(1); } + {float a = *(float*)(*args++); + float b = *(float*)(*args++); + float c = *(float*)(*args++); + float d = *(float*)(*args++); + float e = *(float*)(*args++); + float f = *(float*)(*args++); + float g = *(float*)(*args++); + float h = *(float*)(*args++); + float i = *(float*)(*args++); + float j = *(float*)(*args++); + float k = *(float*)(*args++); + float l = *(float*)(*args++); + float m = *(float*)(*args++); + float n = *(float*)(*args++); + float o = *(float*)(*args++); + float p = *(float*)(*args++); + float q = *(float*)(*args++); + long s = *(long*)(*args++); + long t = *(long*)(*args++); + long u = *(long*)(*args++); + L z = *(L*)(*args++); + float r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6; + fprintf(out,"float f(17*float,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6); + fflush(out); + *(float*)retp = r; +}} +void d_d17l3L_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_d17l3L) { fprintf(out,"wrong data for d_d17l3L\n"); exit(1); } + {double a = *(double*)(*args++); + double b = *(double*)(*args++); + double c = *(double*)(*args++); + double d = *(double*)(*args++); + double e = *(double*)(*args++); + double f = *(double*)(*args++); + double g = *(double*)(*args++); + double h = *(double*)(*args++); + double i = *(double*)(*args++); + double j = *(double*)(*args++); + double k = *(double*)(*args++); + double l = *(double*)(*args++); + double m = *(double*)(*args++); + double n = *(double*)(*args++); + double o = *(double*)(*args++); + double p = *(double*)(*args++); + double q = *(double*)(*args++); + long s = *(long*)(*args++); + long t = *(long*)(*args++); + long u = *(long*)(*args++); + L z = *(L*)(*args++); + double r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6; + fprintf(out,"double f(17*double,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6); + fflush(out); + *(double*)retp = r; +}} +void ll_l2ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l2ll) { fprintf(out,"wrong data for ll_l2ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2) + b + c; + fprintf(out,"long long f(2*long,long long,long):(%ld,%ld,0x%lx%08lx,%ld)",a1,a2,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void ll_l3ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l3ll) { fprintf(out,"wrong data for ll_l3ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2 + a3) + b + c; + fprintf(out,"long long f(3*long,long long,long):(%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void ll_l4ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l4ll) { fprintf(out,"wrong data for ll_l4ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2 + a3 + a4) + b + c; + fprintf(out,"long long f(4*long,long long,long):(%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void ll_l5ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l5ll) { fprintf(out,"wrong data for ll_l5ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2 + a3 + a4 + a5) + b + c; + fprintf(out,"long long f(5*long,long long,long):(%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void ll_l6ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l6ll) { fprintf(out,"wrong data for ll_l6ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long a6 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6) + b + c; + fprintf(out,"long long f(6*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void ll_l7ll_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&ll_l7ll) { fprintf(out,"wrong data for ll_l7ll\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long a6 = *(long*)(*args++); + long a7 = *(long*)(*args++); + long long b = *(long long *)(*args++); + long c = *(long*)(*args++); + long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c; + fprintf(out,"long long f(7*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,a7,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + *(long long *)retp = r; +}} +void d_l2d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l2d) { fprintf(out,"wrong data for d_l2d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2) + b + c; + fprintf(out,"double f(2*long,double,long):(%ld,%ld,%g,%ld)",a1,a2,b,c); + fflush(out); + *(double*)retp = r; +}} +void d_l3d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l3d) { fprintf(out,"wrong data for d_l3d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2 + a3) + b + c; + fprintf(out,"double f(3*long,double,long):(%ld,%ld,%ld,%g,%ld)",a1,a2,a3,b,c); + fflush(out); + *(double*)retp = r; +}} +void d_l4d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l4d) { fprintf(out,"wrong data for d_l4d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2 + a3 + a4) + b + c; + fprintf(out,"double f(4*long,double,long):(%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,b,c); + fflush(out); + *(double*)retp = r; +}} +void d_l5d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l5d) { fprintf(out,"wrong data for d_l5d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2 + a3 + a4 + a5) + b + c; + fprintf(out,"double f(5*long,double,long):(%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,b,c); + fflush(out); + *(double*)retp = r; +}} +void d_l6d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l6d) { fprintf(out,"wrong data for d_l6d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long a6 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2 + a3 + a4 + a5 + a6) + b + c; + fprintf(out,"double f(6*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,b,c); + fflush(out); + *(double*)retp = r; +}} +void d_l7d_simulator (ffi_cif* cif, void* retp, /*const*/ void* /*const*/ *args, void* data) +{ + if (data != (void*)&d_l7d) { fprintf(out,"wrong data for d_l7d\n"); exit(1); } + {long a1 = *(long*)(*args++); + long a2 = *(long*)(*args++); + long a3 = *(long*)(*args++); + long a4 = *(long*)(*args++); + long a5 = *(long*)(*args++); + long a6 = *(long*)(*args++); + long a7 = *(long*)(*args++); + double b = *(double*)(*args++); + long c = *(long*)(*args++); + double r = (double) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c; + fprintf(out,"double f(7*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,a7,b,c); + fflush(out); + *(double*)retp = r; +}} + + +/* + * The way we run these tests - first call the function directly, then + * through vacall() - there is the danger that arguments or results seem + * to be passed correctly, but what we are seeing are in fact the vestiges + * (traces) or the previous call. This may seriously fake the test. + * Avoid this by clearing the registers between the first and the second call. + */ +long clear_traces_i (long a, long b, long c, long d, long e, long f, long g, long h, + long i, long j, long k, long l, long m, long n, long o, long p) +{ return 0; } +float clear_traces_f (float a, float b, float c, float d, float e, float f, float g, + float h, float i, float j, float k, float l, float m, float n, + float o, float p) +{ return 0.0; } +double clear_traces_d (double a, double b, double c, double d, double e, double f, double g, + double h, double i, double j, double k, double l, double m, double n, + double o, double p) +{ return 0.0; } +J clear_traces_J (void) +{ J j; j.l1 = j.l2 = 0; return j; } +void clear_traces (void) +{ clear_traces_i(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + clear_traces_f(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0); + clear_traces_d(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0); + clear_traces_J(); +} + +int main (void) +{ + void* callback_code; + void* callback_writable; +#define ALLOC_CALLBACK() \ + callback_writable = ffi_closure_alloc(sizeof(ffi_closure),&callback_code); \ + if (!callback_writable) abort() +#define PREP_CALLBACK(cif,simulator,data) \ + if (ffi_prep_closure_loc(callback_writable,&(cif),simulator,data,callback_code) != FFI_OK) abort() +#define FREE_CALLBACK() \ + ffi_closure_free(callback_writable) + + ffi_type_char = (char)(-1) < 0 ? ffi_type_schar : ffi_type_uchar; + out = stdout; + +#if (!defined(DGTEST)) || DGTEST == 1 + /* void tests */ + v_v(); + clear_traces(); + ALLOC_CALLBACK(); + { + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_void); + PREP_CALLBACK(cif,v_v_simulator,(void*)&v_v); + ((void (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); +#endif + + /* int tests */ + { int ir; + +#if (!defined(DGTEST)) || DGTEST == 2 + ir = i_v(); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_sint); + PREP_CALLBACK(cif,i_v_simulator,(void*)&i_v); + ir = ((int (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 3 + ir = i_i(i1); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + PREP_CALLBACK(cif,i_i_simulator,(void*)&i_i); + ir = ((int (ABI_ATTR *) (int)) callback_code) (i1); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 4 + ir = i_i2(i1,i2); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + PREP_CALLBACK(cif,i_i2_simulator,(void*)&i_i2); + ir = ((int (ABI_ATTR *) (int,int)) callback_code) (i1,i2); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 5 + ir = i_i4(i1,i2,i3,i4); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + PREP_CALLBACK(cif,i_i4_simulator,(void*)&i_i4); + ir = ((int (ABI_ATTR *) (int,int,int,int)) callback_code) (i1,i2,i3,i4); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 6 + ir = i_i8(i1,i2,i3,i4,i5,i6,i7,i8); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + PREP_CALLBACK(cif,i_i8_simulator,(void*)&i_i8); + ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 7 + ir = i_i16(i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16); + fprintf(out,"->%d\n",ir); + fflush(out); + ir = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_sint); + PREP_CALLBACK(cif,i_i16_simulator,(void*)&i_i16); + ir = ((int (ABI_ATTR *) (int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int)) callback_code) (i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16); + } + FREE_CALLBACK(); + fprintf(out,"->%d\n",ir); + fflush(out); +#endif + } + + /* float tests */ + { float fr; + +#if (!defined(DGTEST)) || DGTEST == 8 + fr = f_f(f1); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f_simulator,(void*)&f_f); + fr = ((float (ABI_ATTR *) (float)) callback_code) (f1); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 9 + fr = f_f2(f1,f2); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f2_simulator,(void*)&f_f2); + fr = ((float (ABI_ATTR *) (float,float)) callback_code) (f1,f2); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 10 + fr = f_f4(f1,f2,f3,f4); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f4_simulator,(void*)&f_f4); + fr = ((float (ABI_ATTR *) (float,float,float,float)) callback_code) (f1,f2,f3,f4); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 11 + fr = f_f8(f1,f2,f3,f4,f5,f6,f7,f8); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f8_simulator,(void*)&f_f8); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 12 + fr = f_f16(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f16_simulator,(void*)&f_f16); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 13 + fr = f_f24(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f24_simulator,(void*)&f_f24); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + + } + + /* double tests */ + { double dr; + +#if (!defined(DGTEST)) || DGTEST == 14 + dr = d_d(d1); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d_simulator,(void*)&d_d); + dr = ((double (ABI_ATTR *) (double)) callback_code) (d1); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 15 + dr = d_d2(d1,d2); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d2_simulator,(void*)&d_d2); + dr = ((double (ABI_ATTR *) (double,double)) callback_code) (d1,d2); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 16 + dr = d_d4(d1,d2,d3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d4_simulator,(void*)&d_d4); + dr = ((double (ABI_ATTR *) (double,double,double,double)) callback_code) (d1,d2,d3,d4); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 17 + dr = d_d8(d1,d2,d3,d4,d5,d6,d7,d8); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d8_simulator,(void*)&d_d8); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 18 + dr = d_d16(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d16_simulator,(void*)&d_d16); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + } + + /* pointer tests */ + { void* vpr; + +#if (!defined(DGTEST)) || DGTEST == 19 + vpr = vp_vpdpcpsp(&uc1,&d2,str3,&I4); + fprintf(out,"->0x%p\n",vpr); + fflush(out); + vpr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_pointer); + PREP_CALLBACK(cif,vp_vpdpcpsp_simulator,(void*)&vp_vpdpcpsp); + vpr = ((void* (ABI_ATTR *) (void*,double*,char*,Int*)) callback_code) (&uc1,&d2,str3,&I4); + } + FREE_CALLBACK(); + fprintf(out,"->0x%p\n",vpr); + fflush(out); +#endif + } + + /* mixed number tests */ + { uchar ucr; + ushort usr; + float fr; + double dr; + long long llr; + +#if (!defined(DGTEST)) || DGTEST == 20 + ucr = uc_ucsil(uc1,us2,ui3,ul4); + fprintf(out,"->%u\n",ucr); + fflush(out); + ucr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_uchar, &ffi_type_ushort, &ffi_type_uint, &ffi_type_ulong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_uchar); + PREP_CALLBACK(cif,uc_ucsil_simulator,(void*)&uc_ucsil); + ucr = ((uchar (ABI_ATTR *) (uchar,ushort,uint,ulong)) callback_code) (uc1,us2,ui3,ul4); + } + FREE_CALLBACK(); + fprintf(out,"->%u\n",ucr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 21 + dr = d_iidd(i1,i2,d3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_iidd_simulator,(void*)&d_iidd); + dr = ((double (ABI_ATTR *) (int,int,double,double)) callback_code) (i1,i2,d3,d4); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 22 + dr = d_iiidi(i1,i2,i3,d4,i5); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_iiidi_simulator,(void*)&d_iiidi); + dr = ((double (ABI_ATTR *) (int,int,int,double,int)) callback_code) (i1,i2,i3,d4,i5); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 23 + dr = d_idid(i1,d2,i3,d4); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_double, &ffi_type_sint, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_idid_simulator,(void*)&d_idid); + dr = ((double (ABI_ATTR *) (int,double,int,double)) callback_code) (i1,d2,i3,d4); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 24 + dr = d_fdi(f1,d2,i3); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_fdi_simulator,(void*)&d_fdi); + dr = ((double (ABI_ATTR *) (float,double,int)) callback_code) (f1,d2,i3); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 25 + usr = us_cdcd(c1,d2,c3,d4); + fprintf(out,"->%u\n",usr); + fflush(out); + usr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_char, &ffi_type_double, &ffi_type_char, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_ushort); + PREP_CALLBACK(cif,us_cdcd_simulator,(void*)&us_cdcd); + usr = ((ushort (ABI_ATTR *) (char,double,char,double)) callback_code) (c1,d2,c3,d4); + } + FREE_CALLBACK(); + fprintf(out,"->%u\n",usr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 26 + llr = ll_iiilli(i1,i2,i3,ll1,i13); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_slonglong, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_iiilli_simulator,(void*)&ll_iiilli); + llr = ((long long (ABI_ATTR *) (int,int,int,long long,int)) callback_code) (i1,i2,i3,ll1,i13); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 27 + llr = ll_flli(f13,ll1,i13); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_slonglong, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_flli_simulator,(void*)&ll_flli); + llr = ((long long (ABI_ATTR *) (float,long long,int)) callback_code) (f13,ll1,i13); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 28 + fr = f_fi(f1,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_fi_simulator,(void*)&f_fi); + fr = ((float (ABI_ATTR *) (float,int)) callback_code) (f1,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 29 + fr = f_f2i(f1,f2,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f2i_simulator,(void*)&f_f2i); + fr = ((float (ABI_ATTR *) (float,float,int)) callback_code) (f1,f2,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 30 + fr = f_f3i(f1,f2,f3,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f3i_simulator,(void*)&f_f3i); + fr = ((float (ABI_ATTR *) (float,float,float,int)) callback_code) (f1,f2,f3,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 31 + fr = f_f4i(f1,f2,f3,f4,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f4i_simulator,(void*)&f_f4i); + fr = ((float (ABI_ATTR *) (float,float,float,float,int)) callback_code) (f1,f2,f3,f4,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 32 + fr = f_f7i(f1,f2,f3,f4,f5,f6,f7,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f7i_simulator,(void*)&f_f7i); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 33 + fr = f_f8i(f1,f2,f3,f4,f5,f6,f7,f8,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f8i_simulator,(void*)&f_f8i); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 34 + fr = f_f13i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f13i_simulator,(void*)&f_f13i); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,int)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 35 + dr = d_di(d1,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_di_simulator,(void*)&d_di); + dr = ((double (ABI_ATTR *) (double,int)) callback_code) (d1,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 36 + dr = d_d2i(d1,d2,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d2i_simulator,(void*)&d_d2i); + dr = ((double (ABI_ATTR *) (double,double,int)) callback_code) (d1,d2,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 37 + dr = d_d3i(d1,d2,d3,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d3i_simulator,(void*)&d_d3i); + dr = ((double (ABI_ATTR *) (double,double,double,int)) callback_code) (d1,d2,d3,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 38 + dr = d_d4i(d1,d2,d3,d4,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d4i_simulator,(void*)&d_d4i); + dr = ((double (ABI_ATTR *) (double,double,double,double,int)) callback_code) (d1,d2,d3,d4,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 39 + dr = d_d7i(d1,d2,d3,d4,d5,d6,d7,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d7i_simulator,(void*)&d_d7i); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 40 + dr = d_d8i(d1,d2,d3,d4,d5,d6,d7,d8,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d8i_simulator,(void*)&d_d8i); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 41 + dr = d_d12i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d12i_simulator,(void*)&d_d12i); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 42 + dr = d_d13i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d13i_simulator,(void*)&d_d13i); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,int)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + } + + /* small structure return tests */ +#if (!defined(DGTEST)) || DGTEST == 43 + { + Size1 r = S1_v(); + fprintf(out,"->{%c}\n",r.x1); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size1_elements[] = { &ffi_type_char, NULL }; + ffi_type ffi_type_Size1; + ffi_type_Size1.type = FFI_TYPE_STRUCT; + ffi_type_Size1.size = sizeof(Size1); + ffi_type_Size1.alignment = alignof_slot(Size1); + ffi_type_Size1.elements = ffi_type_Size1_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size1); + PREP_CALLBACK(cif,S1_v_simulator,(void*)&S1_v); + r = ((Size1 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c}\n",r.x1); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 44 + { + Size2 r = S2_v(); + fprintf(out,"->{%c%c}\n",r.x1,r.x2); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size2_elements[] = { &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size2; + ffi_type_Size2.type = FFI_TYPE_STRUCT; + ffi_type_Size2.size = sizeof(Size2); + ffi_type_Size2.alignment = alignof_slot(Size2); + ffi_type_Size2.elements = ffi_type_Size2_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size2); + PREP_CALLBACK(cif,S2_v_simulator,(void*)&S2_v); + r = ((Size2 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c}\n",r.x1,r.x2); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 45 + { + Size3 r = S3_v(); + fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size3_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size3; + ffi_type_Size3.type = FFI_TYPE_STRUCT; + ffi_type_Size3.size = sizeof(Size3); + ffi_type_Size3.alignment = alignof_slot(Size3); + ffi_type_Size3.elements = ffi_type_Size3_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size3); + PREP_CALLBACK(cif,S3_v_simulator,(void*)&S3_v); + r = ((Size3 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 46 + { + Size4 r = S4_v(); + fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size4_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size4; + ffi_type_Size4.type = FFI_TYPE_STRUCT; + ffi_type_Size4.size = sizeof(Size4); + ffi_type_Size4.alignment = alignof_slot(Size4); + ffi_type_Size4.elements = ffi_type_Size4_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size4); + PREP_CALLBACK(cif,S4_v_simulator,(void*)&S4_v); + r = ((Size4 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 47 + { + Size7 r = S7_v(); + fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size7_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size7; + ffi_type_Size7.type = FFI_TYPE_STRUCT; + ffi_type_Size7.size = sizeof(Size7); + ffi_type_Size7.alignment = alignof_slot(Size7); + ffi_type_Size7.elements = ffi_type_Size7_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size7); + PREP_CALLBACK(cif,S7_v_simulator,(void*)&S7_v); + r = ((Size7 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 48 + { + Size8 r = S8_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size8_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size8; + ffi_type_Size8.type = FFI_TYPE_STRUCT; + ffi_type_Size8.size = sizeof(Size8); + ffi_type_Size8.alignment = alignof_slot(Size8); + ffi_type_Size8.elements = ffi_type_Size8_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size8); + PREP_CALLBACK(cif,S8_v_simulator,(void*)&S8_v); + r = ((Size8 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 49 + { + Size12 r = S12_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size12_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size12; + ffi_type_Size12.type = FFI_TYPE_STRUCT; + ffi_type_Size12.size = sizeof(Size12); + ffi_type_Size12.alignment = alignof_slot(Size12); + ffi_type_Size12.elements = ffi_type_Size12_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size12); + PREP_CALLBACK(cif,S12_v_simulator,(void*)&S12_v); + r = ((Size12 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 50 + { + Size15 r = S15_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size15_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size15; + ffi_type_Size15.type = FFI_TYPE_STRUCT; + ffi_type_Size15.size = sizeof(Size15); + ffi_type_Size15.alignment = alignof_slot(Size15); + ffi_type_Size15.elements = ffi_type_Size15_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size15); + PREP_CALLBACK(cif,S15_v_simulator,(void*)&S15_v); + r = ((Size15 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15); + fflush(out); + } +#endif + +#if (!defined(DGTEST)) || DGTEST == 51 + { + Size16 r = S16_v(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16); + fflush(out); + memset(&r,0,sizeof(r)); clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Size16_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL }; + ffi_type ffi_type_Size16; + ffi_type_Size16.type = FFI_TYPE_STRUCT; + ffi_type_Size16.size = sizeof(Size16); + ffi_type_Size16.alignment = alignof_slot(Size16); + ffi_type_Size16.elements = ffi_type_Size16_elements; + ffi_cif cif; + FFI_PREP_CIF_NOARGS(cif,ffi_type_Size16); + PREP_CALLBACK(cif,S16_v_simulator,(void*)&S16_v); + r = ((Size16 (ABI_ATTR *) (void)) callback_code) (); + } + FREE_CALLBACK(); + fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16); + fflush(out); + } +#endif + + + /* structure tests */ + { Int Ir; + Char Cr; + Float Fr; + Double Dr; + J Jr; +#ifndef SKIP_EXTRA_STRUCTS + T Tr; + X Xr; +#endif + +#if (!defined(DGTEST)) || DGTEST == 52 + Ir = I_III(I1,I2,I3); + fprintf(out,"->{%d}\n",Ir.x); + fflush(out); + Ir.x = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Int_elements[] = { &ffi_type_sint, NULL }; + ffi_type ffi_type_Int; + ffi_type_Int.type = FFI_TYPE_STRUCT; + ffi_type_Int.size = sizeof(Int); + ffi_type_Int.alignment = alignof_slot(Int); + ffi_type_Int.elements = ffi_type_Int_elements; + ffi_type* argtypes[] = { &ffi_type_Int, &ffi_type_Int, &ffi_type_Int }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Int); + PREP_CALLBACK(cif,I_III_simulator,(void*)&I_III); + Ir = ((Int (ABI_ATTR *) (Int,Int,Int)) callback_code) (I1,I2,I3); + } + FREE_CALLBACK(); + fprintf(out,"->{%d}\n",Ir.x); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 53 + Cr = C_CdC(C1,d2,C3); + fprintf(out,"->{'%c'}\n",Cr.x); + fflush(out); + Cr.x = '\0'; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Char_elements[] = { &ffi_type_char, NULL }; + ffi_type ffi_type_Char; + ffi_type_Char.type = FFI_TYPE_STRUCT; + ffi_type_Char.size = sizeof(Char); + ffi_type_Char.alignment = alignof_slot(Char); + ffi_type_Char.elements = ffi_type_Char_elements; + ffi_type* argtypes[] = { &ffi_type_Char, &ffi_type_double, &ffi_type_Char }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Char); + PREP_CALLBACK(cif,C_CdC_simulator,(void*)&C_CdC); + Cr = ((Char (ABI_ATTR *) (Char,double,Char)) callback_code) (C1,d2,C3); + } + FREE_CALLBACK(); + fprintf(out,"->{'%c'}\n",Cr.x); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 54 + Fr = F_Ffd(F1,f2,d3); + fprintf(out,"->{%g}\n",Fr.x); + fflush(out); + Fr.x = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Float_elements[] = { &ffi_type_float, NULL }; + ffi_type ffi_type_Float; + ffi_type_Float.type = FFI_TYPE_STRUCT; + ffi_type_Float.size = sizeof(Float); + ffi_type_Float.alignment = alignof_slot(Float); + ffi_type_Float.elements = ffi_type_Float_elements; + ffi_type* argtypes[] = { &ffi_type_Float, &ffi_type_float, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Float); + PREP_CALLBACK(cif,F_Ffd_simulator,(void*)&F_Ffd); + Fr = ((Float (ABI_ATTR *) (Float,float,double)) callback_code) (F1,f2,d3); + } + FREE_CALLBACK(); + fprintf(out,"->{%g}\n",Fr.x); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 55 + Dr = D_fDd(f1,D2,d3); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); + Dr.x = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL }; + ffi_type ffi_type_Double; + ffi_type_Double.type = FFI_TYPE_STRUCT; + ffi_type_Double.size = sizeof(Double); + ffi_type_Double.alignment = alignof_slot(Double); + ffi_type_Double.elements = ffi_type_Double_elements; + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_Double, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Double); + PREP_CALLBACK(cif,D_fDd_simulator,(void*)&D_fDd); + Dr = ((Double (ABI_ATTR *) (float,Double,double)) callback_code) (f1,D2,d3); + } + FREE_CALLBACK(); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 56 + Dr = D_Dfd(D1,f2,d3); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); + Dr.x = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL }; + ffi_type ffi_type_Double; + ffi_type_Double.type = FFI_TYPE_STRUCT; + ffi_type_Double.size = sizeof(Double); + ffi_type_Double.alignment = alignof_slot(Double); + ffi_type_Double.elements = ffi_type_Double_elements; + ffi_type* argtypes[] = { &ffi_type_Double, &ffi_type_float, &ffi_type_double }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_Double); + PREP_CALLBACK(cif,D_Dfd_simulator,(void*)&D_Dfd); + Dr = ((Double (ABI_ATTR *) (Double,float,double)) callback_code) (D1,f2,d3); + } + FREE_CALLBACK(); + fprintf(out,"->{%g}\n",Dr.x); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 57 + Jr = J_JiJ(J1,i2,J2); + fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2); + fflush(out); + Jr.l1 = Jr.l2 = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_J_elements[] = { &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_J; + ffi_type_J.type = FFI_TYPE_STRUCT; + ffi_type_J.size = sizeof(J); + ffi_type_J.alignment = alignof_slot(J); + ffi_type_J.elements = ffi_type_J_elements; + ffi_type* argtypes[] = { &ffi_type_J, &ffi_type_sint, &ffi_type_J }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_J); + PREP_CALLBACK(cif,J_JiJ_simulator,(void*)&J_JiJ); + Jr = ((J (ABI_ATTR *) (J,int,J)) callback_code) (J1,i2,J2); + } + FREE_CALLBACK(); + fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2); + fflush(out); +#endif + +#ifndef SKIP_EXTRA_STRUCTS +#if (!defined(DGTEST)) || DGTEST == 58 + Tr = T_TcT(T1,' ',T2); + fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]); + fflush(out); + Tr.c[0] = Tr.c[1] = Tr.c[2] = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_T_elements[] = { ??, NULL }; + ffi_type ffi_type_T; + ffi_type_T.type = FFI_TYPE_STRUCT; + ffi_type_T.size = sizeof(T); + ffi_type_T.alignment = alignof_slot(T); + ffi_type_T.elements = ffi_type_T_elements; + ffi_type* argtypes[] = { &ffi_type_T, &ffi_type_char, &ffi_type_T }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_T); + PREP_CALLBACK(cif,T_TcT_simulator,(void*)&T_TcT); + Tr = ((T (ABI_ATTR *) (T,char,T)) callback_code) (T1,' ',T2); + } + FREE_CALLBACK(); + fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]); + fflush(out); +#endif + +#ifndef SKIP_X +#if (!defined(DGTEST)) || DGTEST == 59 + Xr = X_BcdB(B1,c2,d3,B2); + fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1); + fflush(out); + Xr.c[0]=Xr.c1='\0'; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* ffi_type_X_elements[] = { ??, NULL }; + ffi_type ffi_type_X; + ffi_type_X.type = FFI_TYPE_STRUCT; + ffi_type_X.size = sizeof(X); + ffi_type_X.alignment = alignof_slot(X); + ffi_type_X.elements = ffi_type_X_elements; + ffi_type* argtypes[] = { &ffi_type_X, &ffi_type_char, &ffi_type_double, &ffi_type_X }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_X); + PREP_CALLBACK(cif,X_BcdB_simulator,(void*)&X_BcdB); + Xr = ((X (ABI_ATTR *) (B,char,double,B)) callback_code) (B1,c2,d3,B2); + } + FREE_CALLBACK(); + fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1); + fflush(out); +#endif +#endif +#endif + } + + + /* gpargs boundary tests */ + { + ffi_type* ffi_type_K_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_K; + ffi_type* ffi_type_L_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL }; + ffi_type ffi_type_L; + long lr; + long long llr; + float fr; + double dr; + + ffi_type_K.type = FFI_TYPE_STRUCT; + ffi_type_K.size = sizeof(K); + ffi_type_K.alignment = alignof_slot(K); + ffi_type_K.elements = ffi_type_K_elements; + + ffi_type_L.type = FFI_TYPE_STRUCT; + ffi_type_L.size = sizeof(L); + ffi_type_L.alignment = alignof_slot(L); + ffi_type_L.elements = ffi_type_L_elements; + +#if (!defined(DGTEST)) || DGTEST == 60 + lr = l_l0K(K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l0K_simulator,(void*)l_l0K); + lr = ((long (ABI_ATTR *) (K,long)) callback_code) (K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 61 + lr = l_l1K(l1,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l1K_simulator,(void*)l_l1K); + lr = ((long (ABI_ATTR *) (long,K,long)) callback_code) (l1,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 62 + lr = l_l2K(l1,l2,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l2K_simulator,(void*)l_l2K); + lr = ((long (ABI_ATTR *) (long,long,K,long)) callback_code) (l1,l2,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 63 + lr = l_l3K(l1,l2,l3,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l3K_simulator,(void*)l_l3K); + lr = ((long (ABI_ATTR *) (long,long,long,K,long)) callback_code) (l1,l2,l3,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 64 + lr = l_l4K(l1,l2,l3,l4,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l4K_simulator,(void*)l_l4K); + lr = ((long (ABI_ATTR *) (long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 65 + lr = l_l5K(l1,l2,l3,l4,l5,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l5K_simulator,(void*)l_l5K); + lr = ((long (ABI_ATTR *) (long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 66 + lr = l_l6K(l1,l2,l3,l4,l5,l6,K1,l9); + fprintf(out,"->%ld\n",lr); + fflush(out); + lr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slong); + PREP_CALLBACK(cif,l_l6K_simulator,(void*)l_l6K); + lr = ((long (ABI_ATTR *) (long,long,long,long,long,long,K,long)) callback_code) (l1,l2,l3,l4,l5,l6,K1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%ld\n",lr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 67 + fr = f_f17l3L(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1); + fprintf(out,"->%g\n",fr); + fflush(out); + fr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_float); + PREP_CALLBACK(cif,f_f17l3L_simulator,(void*)&f_f17l3L); + fr = ((float (ABI_ATTR *) (float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,long,long,long,L)) callback_code) (f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",fr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 68 + dr = d_d17l3L(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_d17l3L_simulator,(void*)&d_d17l3L); + dr = ((double (ABI_ATTR *) (double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,long,long,long,L)) callback_code) (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 69 + llr = ll_l2ll(l1,l2,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l2ll_simulator,(void*)ll_l2ll); + llr = ((long long (ABI_ATTR *) (long,long,long long,long)) callback_code) (l1,l2,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 70 + llr = ll_l3ll(l1,l2,l3,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l3ll_simulator,(void*)ll_l3ll); + llr = ((long long (ABI_ATTR *) (long,long,long,long long,long)) callback_code) (l1,l2,l3,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 71 + llr = ll_l4ll(l1,l2,l3,l4,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l4ll_simulator,(void*)ll_l4ll); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 72 + llr = ll_l5ll(l1,l2,l3,l4,l5,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l5ll_simulator,(void*)ll_l5ll); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 73 + llr = ll_l6ll(l1,l2,l3,l4,l5,l6,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l6ll_simulator,(void*)ll_l6ll); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 74 + llr = ll_l7ll(l1,l2,l3,l4,l5,l6,l7,ll1,l9); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); + llr = 0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong); + PREP_CALLBACK(cif,ll_l7ll_simulator,(void*)ll_l7ll); + llr = ((long long (ABI_ATTR *) (long,long,long,long,long,long,long,long long,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff)); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 75 + dr = d_l2d(l1,l2,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l2d_simulator,(void*)d_l2d); + dr = ((double (ABI_ATTR *) (long,long,double,long)) callback_code) (l1,l2,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 76 + dr = d_l3d(l1,l2,l3,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l3d_simulator,(void*)d_l3d); + dr = ((double (ABI_ATTR *) (long,long,long,double,long)) callback_code) (l1,l2,l3,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 77 + dr = d_l4d(l1,l2,l3,l4,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l4d_simulator,(void*)d_l4d); + dr = ((double (ABI_ATTR *) (long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 78 + dr = d_l5d(l1,l2,l3,l4,l5,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l5d_simulator,(void*)d_l5d); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 79 + dr = d_l6d(l1,l2,l3,l4,l5,l6,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l6d_simulator,(void*)d_l6d); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + +#if (!defined(DGTEST)) || DGTEST == 80 + dr = d_l7d(l1,l2,l3,l4,l5,l6,l7,ll1,l9); + fprintf(out,"->%g\n",dr); + fflush(out); + dr = 0.0; clear_traces(); + ALLOC_CALLBACK(); + { + ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong }; + ffi_cif cif; + FFI_PREP_CIF(cif,argtypes,ffi_type_double); + PREP_CALLBACK(cif,d_l7d_simulator,(void*)d_l7d); + dr = ((double (ABI_ATTR *) (long,long,long,long,long,long,long,double,long)) callback_code) (l1,l2,l3,l4,l5,l6,l7,ll1,l9); + } + FREE_CALLBACK(); + fprintf(out,"->%g\n",dr); + fflush(out); +#endif + + } + + exit(0); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c new file mode 100644 index 0000000000..d25ebf48c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c @@ -0,0 +1,743 @@ +/* + * Copyright 1993 Bill Triggs + * Copyright 1995-2017 Bruno Haible + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This file defines test functions of selected signatures, that exercise + dark corners of the various ABIs. */ + +#include + +FILE* out; + +#define uchar unsigned char +#define ushort unsigned short +#define uint unsigned int +#define ulong unsigned long + +typedef struct { char x; } Char; +typedef struct { short x; } Short; +typedef struct { int x; } Int; +typedef struct { long x; } Long; +typedef struct { float x; } Float; +typedef struct { double x; } Double; +typedef struct { char c; float f; } A; +typedef struct { double d; int i[3]; } B; +typedef struct { long l1; long l2; } J; +typedef struct { long l1; long l2; long l3; long l4; } K; +typedef struct { long l1; long l2; long l3; long l4; long l5; long l6; } L; +typedef struct { char x1; } Size1; +typedef struct { char x1; char x2; } Size2; +typedef struct { char x1; char x2; char x3; } Size3; +typedef struct { char x1; char x2; char x3; char x4; } Size4; +typedef struct { + char x1; char x2; char x3; char x4; char x5; char x6; char x7; +} Size7; +typedef struct { + char x1; char x2; char x3; char x4; char x5; char x6; char x7; char x8; +} Size8; +typedef struct { + char x1; char x2; char x3; char x4; char x5; char x6; char x7; char x8; + char x9; char x10; char x11; char x12; +} Size12; +typedef struct { + char x1; char x2; char x3; char x4; char x5; char x6; char x7; char x8; + char x9; char x10; char x11; char x12; char x13; char x14; char x15; +} Size15; +typedef struct { + char x1; char x2; char x3; char x4; char x5; char x6; char x7; char x8; + char x9; char x10; char x11; char x12; char x13; char x14; char x15; char x16; +} Size16; +typedef struct { char c[3]; } T; +typedef struct { char c[33],c1; } X; + +char c1='a', c2=127, c3=(char)128, c4=(char)255, c5=-1; +short s1=32767, s2=(short)32768, s3=3, s4=4, s5=5, s6=6, s7=7, s8=8, s9=9; +int i1=1, i2=2, i3=3, i4=4, i5=5, i6=6, i7=7, i8=8, i9=9, + i10=11, i11=12, i12=13, i13=14, i14=15, i15=16, i16=17; +long l1=1, l2=2, l3=3, l4=4, l5=5, l6=6, l7=7, l8=8, l9=9; +long long ll1 = 3875056143130689530LL; +float f1=0.1f, f2=0.2f, f3=0.3f, f4=0.4f, f5=0.5f, f6=0.6f, f7=0.7f, f8=0.8f, f9=0.9f, + f10=1.1f, f11=1.2f, f12=1.3f, f13=1.4f, f14=1.5f, f15=1.6f, f16=1.7f, f17=1.8f, + f18=1.9f, f19=2.1f, f20=2.2f, f21=2.3f, f22=2.4f, f23=2.5f, f24=2.6f; +double d1=0.1, d2=0.2, d3=0.3, d4=0.4, d5=0.5, d6=0.6, d7=0.7, d8=0.8, d9=0.9, + d10=1.1, d11=1.2, d12=1.3, d13=1.4, d14=1.5, d15=1.6, d16=1.7, d17=1.8; + +uchar uc1='a', uc2=127, uc3=128, uc4=255, uc5=(uchar)-1; +ushort us1=1, us2=2, us3=3, us4=4, us5=5, us6=6, us7=7, us8=8, us9=9; +uint ui1=1, ui2=2, ui3=3, ui4=4, ui5=5, ui6=6, ui7=7, ui8=8, ui9=9; +ulong ul1=1, ul2=2, ul3=3, ul4=4, ul5=5, ul6=6, ul7=7, ul8=8, ul9=9; + +char *str1="hello",str2[]="goodbye",*str3="still here?"; +Char C1={'A'}, C2={'B'}, C3={'C'}, C4={'\377'}, C5={(char)(-1)}; +Short S1={1}, S2={2}, S3={3}, S4={4}, S5={5}, S6={6}, S7={7}, S8={8}, S9={9}; +Int I1={1}, I2={2}, I3={3}, I4={4}, I5={5}, I6={6}, I7={7}, I8={8}, I9={9}; +Float F1={0.1f}, F2={0.2f}, F3={0.3f}, F4={0.4f}, F5={0.5f}, F6={0.6f}, F7={0.7f}, F8={0.8f}, F9={0.9f}; +Double D1={0.1}, D2={0.2}, D3={0.3}, D4={0.4}, D5={0.5}, D6={0.6}, D7={0.7}, D8={0.8}, D9={0.9}; + +A A1={'a',0.1f},A2={'b',0.2f},A3={'\377',0.3f}; +B B1={0.1,{1,2,3}},B2={0.2,{5,4,3}}; +J J1={47,11},J2={73,55}; +K K1={19,69,12,28}; +L L1={561,1105,1729,2465,2821,6601}; /* A002997 */ +Size1 Size1_1={'a'}; +Size2 Size2_1={'a','b'}; +Size3 Size3_1={'a','b','c'}; +Size4 Size4_1={'a','b','c','d'}; +Size7 Size7_1={'a','b','c','d','e','f','g'}; +Size8 Size8_1={'a','b','c','d','e','f','g','h'}; +Size12 Size12_1={'a','b','c','d','e','f','g','h','i','j','k','l'}; +Size15 Size15_1={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'}; +Size16 Size16_1={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'}; +T T1={{'t','h','e'}},T2={{'f','o','x'}}; +X X1={"abcdefghijklmnopqrstuvwxyzABCDEF",'G'}, X2={"123",'9'}, X3={"return-return-return",'R'}; + +#if defined(__GNUC__) +#define __STDCALL__ __attribute__((stdcall)) +#define __THISCALL__ __attribute__((thiscall)) +#define __FASTCALL__ __attribute__((fastcall)) +#define __MSABI__ __attribute__((ms_abi)) +#else +#define __STDCALL__ __stdcall +#define __THISCALL__ __thiscall +#define __FASTCALL__ __fastcall +#endif + +#ifndef ABI_ATTR +#define ABI_ATTR +#endif + +/* void tests */ +void ABI_ATTR v_v (void) +{ + fprintf(out,"void f(void):\n"); + fflush(out); +} + +/* int tests */ +int ABI_ATTR i_v (void) +{ + int r=99; + fprintf(out,"int f(void):"); + fflush(out); + return r; +} +int ABI_ATTR i_i (int a) +{ + int r=a+1; + fprintf(out,"int f(int):(%d)",a); + fflush(out); + return r; +} +int ABI_ATTR i_i2 (int a, int b) +{ + int r=a+b; + fprintf(out,"int f(2*int):(%d,%d)",a,b); + fflush(out); + return r; +} +int ABI_ATTR i_i4 (int a, int b, int c, int d) +{ + int r=a+b+c+d; + fprintf(out,"int f(4*int):(%d,%d,%d,%d)",a,b,c,d); + fflush(out); + return r; +} +int ABI_ATTR i_i8 (int a, int b, int c, int d, int e, int f, int g, int h) +{ + int r=a+b+c+d+e+f+g+h; + fprintf(out,"int f(8*int):(%d,%d,%d,%d,%d,%d,%d,%d)",a,b,c,d,e,f,g,h); + fflush(out); + return r; +} +int ABI_ATTR i_i16 (int a, int b, int c, int d, int e, int f, int g, int h, + int i, int j, int k, int l, int m, int n, int o, int p) +{ + int r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"int f(16*int):(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)", + a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + return r; +} + +/* float tests */ +float ABI_ATTR f_f (float a) +{ + float r=a+1.0f; + fprintf(out,"float f(float):(%g)",a); + fflush(out); + return r; +} +float ABI_ATTR f_f2 (float a, float b) +{ + float r=a+b; + fprintf(out,"float f(2*float):(%g,%g)",a,b); + fflush(out); + return r; +} +float ABI_ATTR f_f4 (float a, float b, float c, float d) +{ + float r=a+b+c+d; + fprintf(out,"float f(4*float):(%g,%g,%g,%g)",a,b,c,d); + fflush(out); + return r; +} +float ABI_ATTR f_f8 (float a, float b, float c, float d, float e, float f, + float g, float h) +{ + float r=a+b+c+d+e+f+g+h; + fprintf(out,"float f(8*float):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h); + fflush(out); + return r; +} +float ABI_ATTR f_f16 (float a, float b, float c, float d, float e, float f, float g, float h, + float i, float j, float k, float l, float m, float n, float o, float p) +{ + float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"float f(16*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + return r; +} +float ABI_ATTR f_f24 (float a, float b, float c, float d, float e, float f, float g, float h, + float i, float j, float k, float l, float m, float n, float o, float p, + float q, float s, float t, float u, float v, float w, float x, float y) +{ + float r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+v+w+x+y; + fprintf(out,"float f(24*float):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,v,w,x,y); + fflush(out); + return r; +} + +/* double tests */ +double ABI_ATTR d_d (double a) +{ + double r=a+1.0; + fprintf(out,"double f(double):(%g)",a); + fflush(out); + return r; +} +double ABI_ATTR d_d2 (double a, double b) +{ + double r=a+b; + fprintf(out,"double f(2*double):(%g,%g)",a,b); + fflush(out); + return r; +} +double ABI_ATTR d_d4 (double a, double b, double c, double d) +{ + double r=a+b+c+d; + fprintf(out,"double f(4*double):(%g,%g,%g,%g)",a,b,c,d); + fflush(out); + return r; +} +double ABI_ATTR d_d8 (double a, double b, double c, double d, double e, double f, + double g, double h) +{ + double r=a+b+c+d+e+f+g+h; + fprintf(out,"double f(8*double):(%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h); + fflush(out); + return r; +} +double ABI_ATTR d_d16 (double a, double b, double c, double d, double e, double f, + double g, double h, double i, double j, double k, double l, + double m, double n, double o, double p) +{ + double r=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p; + fprintf(out,"double f(16*double):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + fflush(out); + return r; +} + +/* pointer tests */ +void* ABI_ATTR vp_vpdpcpsp (void* a, double* b, char* c, Int* d) +{ + void* ret = (char*)b + 1; + fprintf(out,"void* f(void*,double*,char*,Int*):(0x%p,0x%p,0x%p,0x%p)",a,b,c,d); + fflush(out); + return ret; +} + +/* mixed number tests */ +uchar ABI_ATTR uc_ucsil (uchar a, ushort b, uint c, ulong d) +{ + uchar r = (uchar)-1; + fprintf(out,"uchar f(uchar,ushort,uint,ulong):(%u,%u,%u,%lu)",a,b,c,d); + fflush(out); + return r; +} +double ABI_ATTR d_iidd (int a, int b, double c, double d) +{ + double r = a+b+c+d; + fprintf(out,"double f(int,int,double,double):(%d,%d,%g,%g)",a,b,c,d); + fflush(out); + return r; +} +double ABI_ATTR d_iiidi (int a, int b, int c, double d, int e) +{ + double r = a+b+c+d+e; + fprintf(out,"double f(int,int,int,double,int):(%d,%d,%d,%g,%d)",a,b,c,d,e); + fflush(out); + return r; +} +double ABI_ATTR d_idid (int a, double b, int c, double d) +{ + double r = a+b+c+d; + fprintf(out,"double f(int,double,int,double):(%d,%g,%d,%g)",a,b,c,d); + fflush(out); + return r; +} +double ABI_ATTR d_fdi (float a, double b, int c) +{ + double r = a+b+c; + fprintf(out,"double f(float,double,int):(%g,%g,%d)",a,b,c); + fflush(out); + return r; +} +ushort ABI_ATTR us_cdcd (char a, double b, char c, double d) +{ + ushort r = (ushort)(a + b + c + d); + fprintf(out,"ushort f(char,double,char,double):('%c',%g,'%c',%g)",a,b,c,d); + fflush(out); + return r; +} + +long long ABI_ATTR ll_iiilli (int a, int b, int c, long long d, int e) +{ + long long r = (long long)(int)a+(long long)(int)b+(long long)(int)c+d+(long long)(int)e; + fprintf(out,"long long f(int,int,int,long long,int):(%d,%d,%d,0x%lx%08lx,%d)",a,b,c,(long)(d>>32),(long)(d&0xffffffff),e); + fflush(out); + return r; +} +long long ABI_ATTR ll_flli (float a, long long b, int c) +{ + long long r = (long long)(int)a + b + (long long)c; + fprintf(out,"long long f(float,long long,int):(%g,0x%lx%08lx,0x%lx)",a,(long)(b>>32),(long)(b&0xffffffff),(long)c); + fflush(out); + return r; +} + +float ABI_ATTR f_fi (float a, int z) +{ + float r = a+z; + fprintf(out,"float f(float,int):(%g,%d)",a,z); + fflush(out); + return r; +} +float ABI_ATTR f_f2i (float a, float b, int z) +{ + float r = a+b+z; + fprintf(out,"float f(2*float,int):(%g,%g,%d)",a,b,z); + fflush(out); + return r; +} +float ABI_ATTR f_f3i (float a, float b, float c, int z) +{ + float r = a+b+c+z; + fprintf(out,"float f(3*float,int):(%g,%g,%g,%d)",a,b,c,z); + fflush(out); + return r; +} +float ABI_ATTR f_f4i (float a, float b, float c, float d, int z) +{ + float r = a+b+c+d+z; + fprintf(out,"float f(4*float,int):(%g,%g,%g,%g,%d)",a,b,c,d,z); + fflush(out); + return r; +} +float ABI_ATTR f_f7i (float a, float b, float c, float d, float e, float f, float g, + int z) +{ + float r = a+b+c+d+e+f+g+z; + fprintf(out,"float f(7*float,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z); + fflush(out); + return r; +} +float ABI_ATTR f_f8i (float a, float b, float c, float d, float e, float f, float g, + float h, int z) +{ + float r = a+b+c+d+e+f+g+h+z; + fprintf(out,"float f(8*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z); + fflush(out); + return r; +} +float ABI_ATTR f_f12i (float a, float b, float c, float d, float e, float f, float g, + float h, float i, float j, float k, float l, int z) +{ + float r = a+b+c+d+e+f+g+h+i+j+k+l+z; + fprintf(out,"float f(12*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z); + fflush(out); + return r; +} +float ABI_ATTR f_f13i (float a, float b, float c, float d, float e, float f, float g, + float h, float i, float j, float k, float l, float m, int z) +{ + float r = a+b+c+d+e+f+g+h+i+j+k+l+m+z; + fprintf(out,"float f(13*float,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z); + fflush(out); + return r; +} + +double ABI_ATTR d_di (double a, int z) +{ + double r = a+z; + fprintf(out,"double f(double,int):(%g,%d)",a,z); + fflush(out); + return r; +} +double ABI_ATTR d_d2i (double a, double b, int z) +{ + double r = a+b+z; + fprintf(out,"double f(2*double,int):(%g,%g,%d)",a,b,z); + fflush(out); + return r; +} +double ABI_ATTR d_d3i (double a, double b, double c, int z) +{ + double r = a+b+c+z; + fprintf(out,"double f(3*double,int):(%g,%g,%g,%d)",a,b,c,z); + fflush(out); + return r; +} +double ABI_ATTR d_d4i (double a, double b, double c, double d, int z) +{ + double r = a+b+c+d+z; + fprintf(out,"double f(4*double,int):(%g,%g,%g,%g,%d)",a,b,c,d,z); + fflush(out); + return r; +} +double ABI_ATTR d_d7i (double a, double b, double c, double d, double e, double f, + double g, int z) +{ + double r = a+b+c+d+e+f+g+z; + fprintf(out,"double f(7*double,int):(%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,z); + fflush(out); + return r; +} +double ABI_ATTR d_d8i (double a, double b, double c, double d, double e, double f, + double g, double h, int z) +{ + double r = a+b+c+d+e+f+g+h+z; + fprintf(out,"double f(8*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,z); + fflush(out); + return r; +} +double ABI_ATTR d_d12i (double a, double b, double c, double d, double e, double f, + double g, double h, double i, double j, double k, double l, + int z) +{ + double r = a+b+c+d+e+f+g+h+i+j+k+l+z; + fprintf(out,"double f(12*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,z); + fflush(out); + return r; +} +double ABI_ATTR d_d13i (double a, double b, double c, double d, double e, double f, + double g, double h, double i, double j, double k, double l, + double m, int z) +{ + double r = a+b+c+d+e+f+g+h+i+j+k+l+m+z; + fprintf(out,"double f(13*double,int):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%d)",a,b,c,d,e,f,g,h,i,j,k,l,m,z); + fflush(out); + return r; +} + +/* small structure return tests */ +Size1 ABI_ATTR S1_v (void) +{ + fprintf(out,"Size1 f(void):"); + fflush(out); + return Size1_1; +} +Size2 ABI_ATTR S2_v (void) +{ + fprintf(out,"Size2 f(void):"); + fflush(out); + return Size2_1; +} +Size3 ABI_ATTR S3_v (void) +{ + fprintf(out,"Size3 f(void):"); + fflush(out); + return Size3_1; +} +Size4 ABI_ATTR S4_v (void) +{ + fprintf(out,"Size4 f(void):"); + fflush(out); + return Size4_1; +} +Size7 ABI_ATTR S7_v (void) +{ + fprintf(out,"Size7 f(void):"); + fflush(out); + return Size7_1; +} +Size8 ABI_ATTR S8_v (void) +{ + fprintf(out,"Size8 f(void):"); + fflush(out); + return Size8_1; +} +Size12 ABI_ATTR S12_v (void) +{ + fprintf(out,"Size12 f(void):"); + fflush(out); + return Size12_1; +} +Size15 ABI_ATTR S15_v (void) +{ + fprintf(out,"Size15 f(void):"); + fflush(out); + return Size15_1; +} +Size16 ABI_ATTR S16_v (void) +{ + fprintf(out,"Size16 f(void):"); + fflush(out); + return Size16_1; +} + +/* structure tests */ +Int ABI_ATTR I_III (Int a, Int b, Int c) +{ + Int r; + r.x = a.x + b.x + c.x; + fprintf(out,"Int f(Int,Int,Int):({%d},{%d},{%d})",a.x,b.x,c.x); + fflush(out); + return r; +} +Char ABI_ATTR C_CdC (Char a, double b, Char c) +{ + Char r; + r.x = (a.x + c.x)/2; + fprintf(out,"Char f(Char,double,Char):({'%c'},%g,{'%c'})",a.x,b,c.x); + fflush(out); + return r; +} +Float ABI_ATTR F_Ffd (Float a, float b, double c) +{ + Float r; + r.x = (float) (a.x + b + c); + fprintf(out,"Float f(Float,float,double):({%g},%g,%g)",a.x,b,c); + fflush(out); + return r; +} +Double ABI_ATTR D_fDd (float a, Double b, double c) +{ + Double r; + r.x = a + b.x + c; + fprintf(out,"Double f(float,Double,double):(%g,{%g},%g)",a,b.x,c); + fflush(out); + return r; +} +Double ABI_ATTR D_Dfd (Double a, float b, double c) +{ + Double r; + r.x = a.x + b + c; + fprintf(out,"Double f(Double,float,double):({%g},%g,%g)",a.x,b,c); + fflush(out); + return r; +} +J ABI_ATTR J_JiJ (J a, int b, J c) +{ + J r; + r.l1 = a.l1+c.l1; r.l2 = a.l2+b+c.l2; + fprintf(out,"J f(J,int,J):({%ld,%ld},%d,{%ld,%ld})",a.l1,a.l2,b,c.l1,c.l2); + fflush(out); + return r; +} +T ABI_ATTR T_TcT (T a, char b, T c) +{ + T r; + r.c[0]='b'; r.c[1]=c.c[1]; r.c[2]=c.c[2]; + fprintf(out,"T f(T,char,T):({\"%c%c%c\"},'%c',{\"%c%c%c\"})",a.c[0],a.c[1],a.c[2],b,c.c[0],c.c[1],c.c[2]); + fflush(out); + return r; +} +X ABI_ATTR X_BcdB (B a, char b, double c, B d) +{ + static X xr={"return val",'R'}; + X r; + r = xr; + r.c1 = b; + fprintf(out,"X f(B,char,double,B):({%g,{%d,%d,%d}},'%c',%g,{%g,{%d,%d,%d}})", + a.d,a.i[0],a.i[1],a.i[2],b,c,d.d,d.i[0],d.i[1],d.i[2]); + fflush(out); + return r; +} + +/* Test for cases where some argument (especially structure, 'long long', or + 'double') may be passed partially in general-purpose argument registers + and partially on the stack. Different ABIs pass between 4 and 8 arguments + (or none) in general-purpose argument registers. */ + +long ABI_ATTR l_l0K (K b, long c) +{ + long r = b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(K,long):(%ld,%ld,%ld,%ld,%ld)",b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l1K (long a1, K b, long c) +{ + long r = a1 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld)",a1,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l2K (long a1, long a2, K b, long c) +{ + long r = a1 + a2 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(2*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l3K (long a1, long a2, long a3, K b, long c) +{ + long r = a1 + a2 + a3 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(3*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l4K (long a1, long a2, long a3, long a4, K b, long c) +{ + long r = a1 + a2 + a3 + a4 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(4*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l5K (long a1, long a2, long a3, long a4, long a5, K b, long c) +{ + long r = a1 + a2 + a3 + a4 + a5 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(5*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +long ABI_ATTR l_l6K (long a1, long a2, long a3, long a4, long a5, long a6, K b, long c) +{ + long r = a1 + a2 + a3 + a4 + a5 + a6 + b.l1 + b.l2 + b.l3 + b.l4 + c; + fprintf(out,"long f(6*long,K,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a1,a2,a3,a4,a5,a6,b.l1,b.l2,b.l3,b.l4,c); + fflush(out); + return r; +} +/* These tests is crafted on the knowledge that for all known ABIs: + * 17 > number of floating-point argument registers, + * 3 < number of general-purpose argument registers < 3 + 6. */ +float ABI_ATTR f_f17l3L (float a, float b, float c, float d, float e, float f, float g, + float h, float i, float j, float k, float l, float m, float n, + float o, float p, float q, + long s, long t, long u, L z) +{ + float r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6; + fprintf(out,"float f(17*float,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6); + fflush(out); + return r; +} +double ABI_ATTR d_d17l3L (double a, double b, double c, double d, double e, double f, + double g, double h, double i, double j, double k, double l, + double m, double n, double o, double p, double q, + long s, long t, long u, L z) +{ + double r = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+s+t+u+z.l1+z.l2+z.l3+z.l4+z.l5+z.l6; + fprintf(out,"double f(17*double,3*int,L):(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s,t,u,z.l1,z.l2,z.l3,z.l4,z.l5,z.l6); + fflush(out); + return r; +} + +long long ABI_ATTR ll_l2ll (long a1, long a2, long long b, long c) +{ + long long r = (long long) (a1 + a2) + b + c; + fprintf(out,"long long f(2*long,long long,long):(%ld,%ld,0x%lx%08lx,%ld)",a1,a2,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} +long long ABI_ATTR ll_l3ll (long a1, long a2, long a3, long long b, long c) +{ + long long r = (long long) (a1 + a2 + a3) + b + c; + fprintf(out,"long long f(3*long,long long,long):(%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} +long long ABI_ATTR ll_l4ll (long a1, long a2, long a3, long a4, long long b, long c) +{ + long long r = (long long) (a1 + a2 + a3 + a4) + b + c; + fprintf(out,"long long f(4*long,long long,long):(%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} +long long ABI_ATTR ll_l5ll (long a1, long a2, long a3, long a4, long a5, long long b, long c) +{ + long long r = (long long) (a1 + a2 + a3 + a4 + a5) + b + c; + fprintf(out,"long long f(5*long,long long,long):(%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} +long long ABI_ATTR ll_l6ll (long a1, long a2, long a3, long a4, long a5, long a6, long long b, long c) +{ + long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6) + b + c; + fprintf(out,"long long f(6*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} +long long ABI_ATTR ll_l7ll (long a1, long a2, long a3, long a4, long a5, long a6, long a7, long long b, long c) +{ + long long r = (long long) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c; + fprintf(out,"long long f(7*long,long long,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,0x%lx%08lx,%ld)",a1,a2,a3,a4,a5,a6,a7,(long)(b>>32),(long)(b&0xffffffff),c); + fflush(out); + return r; +} + +double ABI_ATTR d_l2d (long a1, long a2, double b, long c) +{ + double r = (double) (a1 + a2) + b + c; + fprintf(out,"double f(2*long,double,long):(%ld,%ld,%g,%ld)",a1,a2,b,c); + fflush(out); + return r; +} +double ABI_ATTR d_l3d (long a1, long a2, long a3, double b, long c) +{ + double r = (double) (a1 + a2 + a3) + b + c; + fprintf(out,"double f(3*long,double,long):(%ld,%ld,%ld,%g,%ld)",a1,a2,a3,b,c); + fflush(out); + return r; +} +double ABI_ATTR d_l4d (long a1, long a2, long a3, long a4, double b, long c) +{ + double r = (double) (a1 + a2 + a3 + a4) + b + c; + fprintf(out,"double f(4*long,double,long):(%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,b,c); + fflush(out); + return r; +} +double ABI_ATTR d_l5d (long a1, long a2, long a3, long a4, long a5, double b, long c) +{ + double r = (double) (a1 + a2 + a3 + a4 + a5) + b + c; + fprintf(out,"double f(5*long,double,long):(%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,b,c); + fflush(out); + return r; +} +double ABI_ATTR d_l6d (long a1, long a2, long a3, long a4, long a5, long a6, double b, long c) +{ + double r = (double) (a1 + a2 + a3 + a4 + a5 + a6) + b + c; + fprintf(out,"double f(6*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,b,c); + fflush(out); + return r; +} +double ABI_ATTR d_l7d (long a1, long a2, long a3, long a4, long a5, long a6, long a7, double b, long c) +{ + double r = (double) (a1 + a2 + a3 + a4 + a5 + a6 + a7) + b + c; + fprintf(out,"double f(7*long,double,long):(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%g,%ld)",a1,a2,a3,a4,a5,a6,a7,b,c); + fflush(out); + return r; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c new file mode 100644 index 0000000000..5d4959ce97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c @@ -0,0 +1,46 @@ +/* Area: ffi_call + Purpose: Check for proper argument alignment. + Limitations: none. + PR: none. + Originator: (from many_win32.c) */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static float ABI_ATTR align_arguments(int i1, + double f2, + int i3, + double f4) +{ + return i1+f2+i3+f4; +} + +int main(void) +{ + ffi_cif cif; + ffi_type *args[4] = { + &ffi_type_sint, + &ffi_type_double, + &ffi_type_sint, + &ffi_type_double + }; + double fa[2] = {1,2}; + int ia[2] = {1,2}; + void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]}; + float f, ff; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 4, + &ffi_type_float, args) == FFI_OK); + + ff = align_arguments(ia[0], fa[0], ia[1], fa[1]); + + ffi_call(&cif, FFI_FN(align_arguments), &f, values); + + if (f == ff) + printf("align arguments tests ok!\n"); + else + CHECK(0); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c new file mode 100644 index 0000000000..5e5cb860cc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c @@ -0,0 +1,46 @@ +/* Area: ffi_call + Purpose: Check for proper argument alignment. + Limitations: none. + PR: none. + Originator: (from many_win32.c) */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static float ABI_ATTR align_arguments(int i1, + double f2, + int i3, + double f4) +{ + return i1+f2+i3+f4; +} + +int main(void) +{ + ffi_cif cif; + ffi_type *args[4] = { + &ffi_type_sint, + &ffi_type_double, + &ffi_type_sint, + &ffi_type_double + }; + double fa[2] = {1,2}; + int ia[2] = {1,2}; + void *values[4] = {&ia[0], &fa[0], &ia[1], &fa[1]}; + float f, ff; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 4, + &ffi_type_float, args) == FFI_OK); + + ff = align_arguments(ia[0], fa[0], ia[1], fa[1]);; + + ffi_call(&cif, FFI_FN(align_arguments), &f, values); + + if (f == ff) + printf("align arguments tests ok!\n"); + else + CHECK(0); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/call.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/call.exp new file mode 100644 index 0000000000..ab47415269 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/call.exp @@ -0,0 +1,43 @@ +# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +dg-init +libffi-init + +global srcdir subdir + +if { [string match $compiler_vendor "microsoft"] } { + # -wd4005 macro redefinition + # -wd4244 implicit conversion to type of smaller size + # -wd4305 truncation to smaller type + # -wd4477 printf %lu of uintptr_t + # -wd4312 implicit conversion to type of greater size + # -wd4311 pointer truncation to unsigned long + # -EHsc C++ Exception Handling (no SEH exceptions) + set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc"; +} else { + set additional_options ""; +} + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] + +run-many-tests $tlist $additional_options + +dg-finish + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c new file mode 100644 index 0000000000..a579ff6c97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c @@ -0,0 +1,89 @@ +/* Area: closure_call + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20030828 */ + + + + +/* { dg-do run } */ +#include "ffitest.h" + +static void +closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(unsigned long long *)args[0] + (int)(*(int *)args[1]) + + (int)(*(unsigned long long *)args[2]) + (int)*(int *)args[3] + + (int)(*(signed short *)args[4]) + + (int)(*(unsigned long long *)args[5]) + + (int)*(int *)args[6] + (int)(*(int *)args[7]) + + (int)(*(double *)args[8]) + (int)*(int *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(int *)args[13]) + + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(unsigned long long *)args[0], (int)(*(int *)args[1]), + (int)(*(unsigned long long *)args[2]), + (int)*(int *)args[3], (int)(*(signed short *)args[4]), + (int)(*(unsigned long long *)args[5]), + (int)*(int *)args[6], (int)(*(int *)args[7]), + (int)(*(double *)args[8]), (int)*(int *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]),*(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); + +} + +typedef int (*closure_test_type0)(unsigned long long, int, unsigned long long, + int, signed short, unsigned long long, int, + int, double, int, int, float, int, int, + int, int); + +int main (void) +{ + ffi_cif cif; + void * code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_uint64; + cl_arg_types[1] = &ffi_type_sint; + cl_arg_types[2] = &ffi_type_uint64; + cl_arg_types[3] = &ffi_type_sint; + cl_arg_types[4] = &ffi_type_sshort; + cl_arg_types[5] = &ffi_type_uint64; + cl_arg_types[6] = &ffi_type_sint; + cl_arg_types[7] = &ffi_type_sint; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_sint; + cl_arg_types[10] = &ffi_type_sint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_sint; + cl_arg_types[14] = &ffi_type_sint; + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type0)code)) + (1LL, 2, 3LL, 4, 127, 429LL, 7, 8, 9.5, 10, 11, 12, 13, + 19, 21, 1); + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c new file mode 100644 index 0000000000..91231738c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c @@ -0,0 +1,81 @@ +/* Area: closure_call. + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + + +static void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(float *)args[0] +(int)(*(float *)args[1]) + + (int)(*(float *)args[2]) + (int)*(float *)args[3] + + (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + + (int)*(float *)args[6] + (int)(*(int *)args[7]) + + (int)(*(double*)args[8]) + (int)*(int *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(int *)args[13]) + + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(float *)args[0], (int)(*(float *)args[1]), + (int)(*(float *)args[2]), (int)*(float *)args[3], + (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), + (int)*(float *)args[6], (int)(*(int *)args[7]), + (int)(*(double *)args[8]), (int)*(int *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]), *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); +} + +typedef int (*closure_test_type1)(float, float, float, float, signed short, + float, float, int, double, int, int, float, + int, int, int, int); +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_float; + cl_arg_types[1] = &ffi_type_float; + cl_arg_types[2] = &ffi_type_float; + cl_arg_types[3] = &ffi_type_float; + cl_arg_types[4] = &ffi_type_sshort; + cl_arg_types[5] = &ffi_type_float; + cl_arg_types[6] = &ffi_type_float; + cl_arg_types[7] = &ffi_type_sint; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_sint; + cl_arg_types[10] = &ffi_type_sint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_sint; + cl_arg_types[14] = &ffi_type_sint; + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type1)code)) + (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, + 19, 21, 1); + /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c new file mode 100644 index 0000000000..08ff9d9227 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c @@ -0,0 +1,81 @@ +/* Area: closure_call + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(double *)args[0] +(int)(*(double *)args[1]) + + (int)(*(double *)args[2]) + (int)*(double *)args[3] + + (int)(*(signed short *)args[4]) + (int)(*(double *)args[5]) + + (int)*(double *)args[6] + (int)(*(int *)args[7]) + + (int)(*(double *)args[8]) + (int)*(int *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(float *)args[13]) + + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(double *)args[0], (int)(*(double *)args[1]), + (int)(*(double *)args[2]), (int)*(double *)args[3], + (int)(*(signed short *)args[4]), (int)(*(double *)args[5]), + (int)*(double *)args[6], (int)(*(int *)args[7]), + (int)(*(double*)args[8]), (int)*(int *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(float *)args[13]), + (int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, + (int)*(ffi_arg *)resp); +} + +typedef int (*closure_test_type2)(double, double, double, double, signed short, + double, double, int, double, int, int, float, + int, float, int, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_double; + cl_arg_types[1] = &ffi_type_double; + cl_arg_types[2] = &ffi_type_double; + cl_arg_types[3] = &ffi_type_double; + cl_arg_types[4] = &ffi_type_sshort; + cl_arg_types[5] = &ffi_type_double; + cl_arg_types[6] = &ffi_type_double; + cl_arg_types[7] = &ffi_type_sint; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_sint; + cl_arg_types[10] = &ffi_type_sint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_float; + cl_arg_types[14] = &ffi_type_sint; + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn2, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type2)code)) + (1, 2, 3, 4, 127, 5, 6, 8, 9, 10, 11, 12.0, 13, + 19.0, 21, 1); + /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c new file mode 100644 index 0000000000..9b54d805c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c @@ -0,0 +1,82 @@ +/* Area: closure_call + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) + { + *(ffi_arg*)resp = + (int)*(float *)args[0] +(int)(*(float *)args[1]) + + (int)(*(float *)args[2]) + (int)*(float *)args[3] + + (int)(*(float *)args[4]) + (int)(*(float *)args[5]) + + (int)*(float *)args[6] + (int)(*(float *)args[7]) + + (int)(*(double *)args[8]) + (int)*(int *)args[9] + + (int)(*(float *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(float *)args[13]) + + (int)(*(float *)args[14]) + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(float *)args[0], (int)(*(float *)args[1]), + (int)(*(float *)args[2]), (int)*(float *)args[3], + (int)(*(float *)args[4]), (int)(*(float *)args[5]), + (int)*(float *)args[6], (int)(*(float *)args[7]), + (int)(*(double *)args[8]), (int)*(int *)args[9], + (int)(*(float *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(float *)args[13]), + (int)(*(float *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, + (int)*(ffi_arg *)resp); + + } + +typedef int (*closure_test_type3)(float, float, float, float, float, float, + float, float, double, int, float, float, int, + float, float, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_float; + cl_arg_types[1] = &ffi_type_float; + cl_arg_types[2] = &ffi_type_float; + cl_arg_types[3] = &ffi_type_float; + cl_arg_types[4] = &ffi_type_float; + cl_arg_types[5] = &ffi_type_float; + cl_arg_types[6] = &ffi_type_float; + cl_arg_types[7] = &ffi_type_float; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_sint; + cl_arg_types[10] = &ffi_type_float; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_float; + cl_arg_types[14] = &ffi_type_float; + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn3, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type3)code)) + (1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11.11, 12.0, 13, + 19.19, 21.21, 1); + /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 19 21 1 3: 135" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 135" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c new file mode 100644 index 0000000000..d4a1530b06 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c @@ -0,0 +1,89 @@ +/* Area: closure_call + Purpose: Check multiple long long values passing. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20031026 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static void +closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(unsigned long long *)args[0] + (int)*(unsigned long long *)args[1] + + (int)*(unsigned long long *)args[2] + (int)*(unsigned long long *)args[3] + + (int)*(unsigned long long *)args[4] + (int)*(unsigned long long *)args[5] + + (int)*(unsigned long long *)args[6] + (int)*(unsigned long long *)args[7] + + (int)*(unsigned long long *)args[8] + (int)*(unsigned long long *)args[9] + + (int)*(unsigned long long *)args[10] + + (int)*(unsigned long long *)args[11] + + (int)*(unsigned long long *)args[12] + + (int)*(unsigned long long *)args[13] + + (int)*(unsigned long long *)args[14] + + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(unsigned long long *)args[0], + (int)*(unsigned long long *)args[1], + (int)*(unsigned long long *)args[2], + (int)*(unsigned long long *)args[3], + (int)*(unsigned long long *)args[4], + (int)*(unsigned long long *)args[5], + (int)*(unsigned long long *)args[6], + (int)*(unsigned long long *)args[7], + (int)*(unsigned long long *)args[8], + (int)*(unsigned long long *)args[9], + (int)*(unsigned long long *)args[10], + (int)*(unsigned long long *)args[11], + (int)*(unsigned long long *)args[12], + (int)*(unsigned long long *)args[13], + (int)*(unsigned long long *)args[14], + *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); + +} + +typedef int (*closure_test_type0)(unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int i, res; + + for (i = 0; i < 15; i++) { + cl_arg_types[i] = &ffi_type_uint64; + } + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type0)code)) + (1LL, 2LL, 3LL, 4LL, 127LL, 429LL, 7LL, 8LL, 9LL, 10LL, 11LL, 12LL, + 13LL, 19LL, 21LL, 1); + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c new file mode 100644 index 0000000000..99074426c6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c @@ -0,0 +1,92 @@ +/* Area: closure_call + Purpose: Check multiple long long values passing. + Exceed the limit of gpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20031026 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void +closure_test_fn5(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(unsigned long long *)args[0] + (int)*(unsigned long long *)args[1] + + (int)*(unsigned long long *)args[2] + (int)*(unsigned long long *)args[3] + + (int)*(unsigned long long *)args[4] + (int)*(unsigned long long *)args[5] + + (int)*(unsigned long long *)args[6] + (int)*(unsigned long long *)args[7] + + (int)*(unsigned long long *)args[8] + (int)*(unsigned long long *)args[9] + + (int)*(int *)args[10] + + (int)*(unsigned long long *)args[11] + + (int)*(unsigned long long *)args[12] + + (int)*(unsigned long long *)args[13] + + (int)*(unsigned long long *)args[14] + + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(unsigned long long *)args[0], + (int)*(unsigned long long *)args[1], + (int)*(unsigned long long *)args[2], + (int)*(unsigned long long *)args[3], + (int)*(unsigned long long *)args[4], + (int)*(unsigned long long *)args[5], + (int)*(unsigned long long *)args[6], + (int)*(unsigned long long *)args[7], + (int)*(unsigned long long *)args[8], + (int)*(unsigned long long *)args[9], + (int)*(int *)args[10], + (int)*(unsigned long long *)args[11], + (int)*(unsigned long long *)args[12], + (int)*(unsigned long long *)args[13], + (int)*(unsigned long long *)args[14], + *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); + +} + +typedef int (*closure_test_type0)(unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, unsigned long long, + int, unsigned long long, + unsigned long long, unsigned long long, + unsigned long long, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int i, res; + + for (i = 0; i < 10; i++) { + cl_arg_types[i] = &ffi_type_uint64; + } + cl_arg_types[10] = &ffi_type_sint; + for (i = 11; i < 15; i++) { + cl_arg_types[i] = &ffi_type_uint64; + } + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn5, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type0)code)) + (1LL, 2LL, 3LL, 4LL, 127LL, 429LL, 7LL, 8LL, 9LL, 10LL, 11, 12LL, + 13LL, 19LL, 21LL, 1); + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c new file mode 100644 index 0000000000..73c54fd6b1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c @@ -0,0 +1,90 @@ +/* Area: closure_call + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC. + Limitations: none. + PR: PR23404 + Originator: 20050830 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void +closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(unsigned long long *)args[0] + + (int)(*(unsigned long long *)args[1]) + + (int)(*(unsigned long long *)args[2]) + + (int)*(unsigned long long *)args[3] + + (int)(*(int *)args[4]) + (int)(*(double *)args[5]) + + (int)*(double *)args[6] + (int)(*(float *)args[7]) + + (int)(*(double *)args[8]) + (int)*(double *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(int *)args[13]) + + (int)(*(double *)args[14]) + (int)*(double *)args[15] + + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(unsigned long long *)args[0], + (int)(*(unsigned long long *)args[1]), + (int)(*(unsigned long long *)args[2]), + (int)*(unsigned long long *)args[3], + (int)(*(int *)args[4]), (int)(*(double *)args[5]), + (int)*(double *)args[6], (int)(*(float *)args[7]), + (int)(*(double *)args[8]), (int)*(double *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(double *)args[14]), (int)(*(double *)args[15]), + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); + +} + +typedef int (*closure_test_type0)(unsigned long long, + unsigned long long, + unsigned long long, + unsigned long long, + int, double, double, float, double, double, + int, float, int, int, double, double); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_uint64; + cl_arg_types[1] = &ffi_type_uint64; + cl_arg_types[2] = &ffi_type_uint64; + cl_arg_types[3] = &ffi_type_uint64; + cl_arg_types[4] = &ffi_type_sint; + cl_arg_types[5] = &ffi_type_double; + cl_arg_types[6] = &ffi_type_double; + cl_arg_types[7] = &ffi_type_float; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_double; + cl_arg_types[10] = &ffi_type_sint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_sint; + cl_arg_types[14] = &ffi_type_double; + cl_arg_types[15] = &ffi_type_double; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn0, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*((closure_test_type0)code)) + (1, 2, 3, 4, 127, 429., 7., 8., 9.5, 10., 11, 12., 13, + 19, 21., 1.); + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c new file mode 100644 index 0000000000..b3afa0bbdf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c @@ -0,0 +1,95 @@ +/* Area: closure_call + Purpose: Check multiple values passing from different type. + Also, exceed the limit of gpr and fpr registers on PowerPC + Darwin. + Limitations: none. + PR: none. + Originator: 20030828 */ + + + + +/* { dg-do run } */ +#include "ffitest.h" + +static void +closure_loc_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata) +{ + *(ffi_arg*)resp = + (int)*(unsigned long long *)args[0] + (int)(*(int *)args[1]) + + (int)(*(unsigned long long *)args[2]) + (int)*(int *)args[3] + + (int)(*(signed short *)args[4]) + + (int)(*(unsigned long long *)args[5]) + + (int)*(int *)args[6] + (int)(*(int *)args[7]) + + (int)(*(double *)args[8]) + (int)*(int *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(int *)args[13]) + + (int)(*(int *)args[14]) + *(int *)args[15] + (intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(unsigned long long *)args[0], (int)(*(int *)args[1]), + (int)(*(unsigned long long *)args[2]), + (int)*(int *)args[3], (int)(*(signed short *)args[4]), + (int)(*(unsigned long long *)args[5]), + (int)*(int *)args[6], (int)(*(int *)args[7]), + (int)(*(double *)args[8]), (int)*(int *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]),*(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); + +} + +typedef int (*closure_loc_test_type0)(unsigned long long, int, unsigned long long, + int, signed short, unsigned long long, int, + int, double, int, int, float, int, int, + int, int); + +int main (void) +{ + ffi_cif cif; + ffi_closure *pcl; + ffi_type * cl_arg_types[17]; + int res; + void *codeloc; + + cl_arg_types[0] = &ffi_type_uint64; + cl_arg_types[1] = &ffi_type_sint; + cl_arg_types[2] = &ffi_type_uint64; + cl_arg_types[3] = &ffi_type_sint; + cl_arg_types[4] = &ffi_type_sshort; + cl_arg_types[5] = &ffi_type_uint64; + cl_arg_types[6] = &ffi_type_sint; + cl_arg_types[7] = &ffi_type_sint; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_sint; + cl_arg_types[10] = &ffi_type_sint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_sint; + cl_arg_types[13] = &ffi_type_sint; + cl_arg_types[14] = &ffi_type_sint; + cl_arg_types[15] = &ffi_type_sint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + pcl = ffi_closure_alloc(sizeof(ffi_closure), &codeloc); + CHECK(pcl != NULL); + CHECK(codeloc != NULL); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_loc_test_fn0, + (void *) 3 /* userdata */, codeloc) == FFI_OK); + + CHECK(memcmp(pcl, codeloc, sizeof(*pcl)) == 0); + + res = (*((closure_loc_test_type0)codeloc)) + (1LL, 2, 3LL, 4, 127, 429LL, 7, 8, 9.5, 10, 11, 12, 13, + 19, 21, 1); + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c new file mode 100644 index 0000000000..5a4e728d4a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c @@ -0,0 +1,55 @@ +/* Area: closure_call + Purpose: Check simple closure handling with all ABIs + Limitations: none. + PR: none. + Originator: */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void +closure_test(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) +{ + *(ffi_arg*)resp = + (int)*(int *)args[0] + (int)(*(int *)args[1]) + + (int)(*(int *)args[2]) + (int)(*(int *)args[3]) + + (int)(intptr_t)userdata; + + printf("%d %d %d %d: %d\n", + (int)*(int *)args[0], (int)(*(int *)args[1]), + (int)(*(int *)args[2]), (int)(*(int *)args[3]), + (int)*(ffi_arg *)resp); + +} + +typedef int (ABI_ATTR *closure_test_type0)(int, int, int, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + int res; + + cl_arg_types[0] = &ffi_type_uint; + cl_arg_types[1] = &ffi_type_uint; + cl_arg_types[2] = &ffi_type_uint; + cl_arg_types[3] = &ffi_type_uint; + cl_arg_types[4] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 4, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test, + (void *) 3 /* userdata */, code) == FFI_OK); + + res = (*(closure_test_type0)code)(0, 1, 2, 3); + /* { dg-output "0 1 2 3: 9" } */ + + printf("res: %d\n",res); + /* { dg-output "\nres: 9" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c new file mode 100644 index 0000000000..ea0825d175 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c @@ -0,0 +1,94 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_12byte { + int a; + int b; + int c; +} cls_struct_12byte; + +cls_struct_12byte cls_struct_12byte_fn(struct cls_struct_12byte b1, + struct cls_struct_12byte b2) +{ + struct cls_struct_12byte result; + + result.a = b1.a + b2.a; + result.b = b1.b + b2.b; + result.c = b1.c + b2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, + result.a, result.b, result.c); + + return result; +} + +static void cls_struct_12byte_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args , void* userdata __UNUSED__) +{ + struct cls_struct_12byte b1, b2; + + b1 = *(struct cls_struct_12byte*)(args[0]); + b2 = *(struct cls_struct_12byte*)(args[1]); + + *(cls_struct_12byte*)resp = cls_struct_12byte_fn(b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_12byte h_dbl = { 7, 4, 9 }; + struct cls_struct_12byte j_dbl = { 1, 5, 3 }; + struct cls_struct_12byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_sint; + cls_struct_fields[1] = &ffi_type_sint; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &h_dbl; + args_dbl[1] = &j_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_12byte_fn), &res_dbl, args_dbl); + /* { dg-output "7 4 9 1 5 3: 8 9 12" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 9 12" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_12byte_gn, NULL, code) == FFI_OK); + + res_dbl.a = 0; + res_dbl.b = 0; + res_dbl.c = 0; + + res_dbl = ((cls_struct_12byte(*)(cls_struct_12byte, cls_struct_12byte))(code))(h_dbl, j_dbl); + /* { dg-output "\n7 4 9 1 5 3: 8 9 12" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 9 12" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c new file mode 100644 index 0000000000..89a08a2d97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c @@ -0,0 +1,95 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_16byte { + int a; + double b; + int c; +} cls_struct_16byte; + +cls_struct_16byte cls_struct_16byte_fn(struct cls_struct_16byte b1, + struct cls_struct_16byte b2) +{ + struct cls_struct_16byte result; + + result.a = b1.a + b2.a; + result.b = b1.b + b2.b; + result.c = b1.c + b2.c; + + printf("%d %g %d %d %g %d: %d %g %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, + result.a, result.b, result.c); + + return result; +} + +static void cls_struct_16byte_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + struct cls_struct_16byte b1, b2; + + b1 = *(struct cls_struct_16byte*)(args[0]); + b2 = *(struct cls_struct_16byte*)(args[1]); + + *(cls_struct_16byte*)resp = cls_struct_16byte_fn(b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_16byte h_dbl = { 7, 8.0, 9 }; + struct cls_struct_16byte j_dbl = { 1, 9.0, 3 }; + struct cls_struct_16byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_sint; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &h_dbl; + args_dbl[1] = &j_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_16byte_fn), &res_dbl, args_dbl); + /* { dg-output "7 8 9 1 9 3: 8 17 12" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 17 12" } */ + + res_dbl.a = 0; + res_dbl.b = 0.0; + res_dbl.c = 0; + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_16byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_16byte(*)(cls_struct_16byte, cls_struct_16byte))(code))(h_dbl, j_dbl); + /* { dg-output "\n7 8 9 1 9 3: 8 17 12" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 17 12" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c new file mode 100644 index 0000000000..9f75da80aa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c @@ -0,0 +1,96 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Double alignment check on darwin. + Limitations: none. + PR: none. + Originator: 20030915 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_18byte { + double a; + unsigned char b; + unsigned char c; + double d; +} cls_struct_18byte; + +cls_struct_18byte cls_struct_18byte_fn(struct cls_struct_18byte a1, + struct cls_struct_18byte a2) +{ + struct cls_struct_18byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + + + printf("%g %d %d %g %g %d %d %g: %g %d %d %g\n", a1.a, a1.b, a1.c, a1.d, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + return result; +} + +static void +cls_struct_18byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_18byte a1, a2; + + a1 = *(struct cls_struct_18byte*)(args[0]); + a2 = *(struct cls_struct_18byte*)(args[1]); + + *(cls_struct_18byte*)resp = cls_struct_18byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[5]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 }; + struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 }; + struct cls_struct_18byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_18byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 127 126 3 4 125 124 5: 5 252 250 8" } */ + printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 5 252 250 8" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_18byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_18byte(*)(cls_struct_18byte, cls_struct_18byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 127 126 3 4 125 124 5: 5 252 250 8" } */ + printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 5 252 250 8" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c new file mode 100644 index 0000000000..278794b5b8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c @@ -0,0 +1,102 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Double alignment check on darwin. + Limitations: none. + PR: none. + Originator: 20030915 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_19byte { + double a; + unsigned char b; + unsigned char c; + double d; + unsigned char e; +} cls_struct_19byte; + +cls_struct_19byte cls_struct_19byte_fn(struct cls_struct_19byte a1, + struct cls_struct_19byte a2) +{ + struct cls_struct_19byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + result.e = a1.e + a2.e; + + + printf("%g %d %d %g %d %g %d %d %g %d: %g %d %d %g %d\n", + a1.a, a1.b, a1.c, a1.d, a1.e, + a2.a, a2.b, a2.c, a2.d, a2.e, + result.a, result.b, result.c, result.d, result.e); + return result; +} + +static void +cls_struct_19byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_19byte a1, a2; + + a1 = *(struct cls_struct_19byte*)(args[0]); + a2 = *(struct cls_struct_19byte*)(args[1]); + + *(cls_struct_19byte*)resp = cls_struct_19byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[6]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 }; + struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 }; + struct cls_struct_19byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_uchar; + cls_struct_fields[5] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_19byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 127 126 3 120 4 125 124 5 119: 5 252 250 8 239" } */ + printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 5 252 250 8 239" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_19byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_19byte(*)(cls_struct_19byte, cls_struct_19byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 127 126 3 120 4 125 124 5 119: 5 252 250 8 239" } */ + printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 5 252 250 8 239" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c new file mode 100644 index 0000000000..82492c020e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c @@ -0,0 +1,89 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. + Limitations: none. + PR: none. + Originator: 20030902 */ + + + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_1_1byte { + unsigned char a; +} cls_struct_1_1byte; + +cls_struct_1_1byte cls_struct_1_1byte_fn(struct cls_struct_1_1byte a1, + struct cls_struct_1_1byte a2) +{ + struct cls_struct_1_1byte result; + + result.a = a1.a + a2.a; + + printf("%d %d: %d\n", a1.a, a2.a, result.a); + + return result; +} + +static void +cls_struct_1_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_1_1byte a1, a2; + + a1 = *(struct cls_struct_1_1byte*)(args[0]); + a2 = *(struct cls_struct_1_1byte*)(args[1]); + + *(cls_struct_1_1byte*)resp = cls_struct_1_1byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[2]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_1_1byte g_dbl = { 12 }; + struct cls_struct_1_1byte f_dbl = { 178 }; + struct cls_struct_1_1byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_1_1byte_fn), &res_dbl, args_dbl); + /* { dg-output "12 178: 190" } */ + printf("res: %d\n", res_dbl.a); + /* { dg-output "\nres: 190" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_1_1byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_1_1byte(*)(cls_struct_1_1byte, cls_struct_1_1byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 178: 190" } */ + printf("res: %d\n", res_dbl.a); + /* { dg-output "\nres: 190" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c new file mode 100644 index 0000000000..3f8bb28ad2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_20byte { + double a; + double b; + int c; +} cls_struct_20byte; + +cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, + struct cls_struct_20byte a2) +{ + struct cls_struct_20byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%g %g %d %g %g %d: %g %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, + result.a, result.b, result.c); + return result; +} + +static void +cls_struct_20byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_20byte a1, a2; + + a1 = *(struct cls_struct_20byte*)(args[0]); + a2 = *(struct cls_struct_20byte*)(args[1]); + + *(cls_struct_20byte*)resp = cls_struct_20byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 }; + struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 }; + struct cls_struct_20byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_20byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ + printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_20byte(*)(cls_struct_20byte, cls_struct_20byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 3 4 5 7: 5 7 10" } */ + printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c new file mode 100644 index 0000000000..65627273c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c @@ -0,0 +1,93 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + + + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_20byte { + int a; + double b; + double c; +} cls_struct_20byte; + +cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, + struct cls_struct_20byte a2) +{ + struct cls_struct_20byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %g %g %d %g %g: %d %g %g\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, + result.a, result.b, result.c); + return result; +} + +static void +cls_struct_20byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_20byte a1, a2; + + a1 = *(struct cls_struct_20byte*)(args[0]); + a2 = *(struct cls_struct_20byte*)(args[1]); + + *(cls_struct_20byte*)resp = cls_struct_20byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 }; + struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 }; + struct cls_struct_20byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_sint; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_20byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ + printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_20byte(*)(cls_struct_20byte, cls_struct_20byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 3 4 5 7: 5 7 10" } */ + printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c new file mode 100644 index 0000000000..1d82f6e4a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c @@ -0,0 +1,113 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_24byte { + double a; + double b; + int c; + float d; +} cls_struct_24byte; + +cls_struct_24byte cls_struct_24byte_fn(struct cls_struct_24byte b0, + struct cls_struct_24byte b1, + struct cls_struct_24byte b2, + struct cls_struct_24byte b3) +{ + struct cls_struct_24byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + + printf("%g %g %d %g %g %g %d %g %g %g %d %g %g %g %d %g: %g %g %d %g\n", + b0.a, b0.b, b0.c, b0.d, + b1.a, b1.b, b1.c, b1.d, + b2.a, b2.b, b2.c, b2.d, + b3.a, b3.b, b3.c, b2.d, + result.a, result.b, result.c, result.d); + + return result; +} + +static void +cls_struct_24byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_24byte b0, b1, b2, b3; + + b0 = *(struct cls_struct_24byte*)(args[0]); + b1 = *(struct cls_struct_24byte*)(args[1]); + b2 = *(struct cls_struct_24byte*)(args[2]); + b3 = *(struct cls_struct_24byte*)(args[3]); + + *(cls_struct_24byte*)resp = cls_struct_24byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_24byte e_dbl = { 9.0, 2.0, 6, 5.0 }; + struct cls_struct_24byte f_dbl = { 1.0, 2.0, 3, 7.0 }; + struct cls_struct_24byte g_dbl = { 4.0, 5.0, 7, 9.0 }; + struct cls_struct_24byte h_dbl = { 8.0, 6.0, 1, 4.0 }; + struct cls_struct_24byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = &ffi_type_float; + cls_struct_fields[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_24byte_fn), &res_dbl, args_dbl); + /* { dg-output "9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 9: 22 15 17 25" } */ + printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 22 15 17 25" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_24byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_24byte(*)(cls_struct_24byte, + cls_struct_24byte, + cls_struct_24byte, + cls_struct_24byte)) + (code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 9: 22 15 17 25" } */ + printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 22 15 17 25" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c new file mode 100644 index 0000000000..81bb0a64a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_2byte { + unsigned char a; + unsigned char b; +} cls_struct_2byte; + +cls_struct_2byte cls_struct_2byte_fn(struct cls_struct_2byte a1, + struct cls_struct_2byte a2) +{ + struct cls_struct_2byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + + return result; +} + +static void +cls_struct_2byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_2byte a1, a2; + + a1 = *(struct cls_struct_2byte*)(args[0]); + a2 = *(struct cls_struct_2byte*)(args[1]); + + *(cls_struct_2byte*)resp = cls_struct_2byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_2byte g_dbl = { 12, 127 }; + struct cls_struct_2byte f_dbl = { 1, 13 }; + struct cls_struct_2byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_2byte_fn), &res_dbl, args_dbl); + /* { dg-output "12 127 1 13: 13 140" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_2byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_2byte(*)(cls_struct_2byte, cls_struct_2byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 127 1 13: 13 140" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c new file mode 100644 index 0000000000..b7827466f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c @@ -0,0 +1,95 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. + Limitations: none. + PR: none. + Originator: 20030902 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_3_1byte { + unsigned char a; + unsigned char b; + unsigned char c; +} cls_struct_3_1byte; + +cls_struct_3_1byte cls_struct_3_1byte_fn(struct cls_struct_3_1byte a1, + struct cls_struct_3_1byte a2) +{ + struct cls_struct_3_1byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, + a2.a, a2.b, a2.c, + result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_3_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_3_1byte a1, a2; + + a1 = *(struct cls_struct_3_1byte*)(args[0]); + a2 = *(struct cls_struct_3_1byte*)(args[1]); + + *(cls_struct_3_1byte*)resp = cls_struct_3_1byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_3_1byte g_dbl = { 12, 13, 14 }; + struct cls_struct_3_1byte f_dbl = { 178, 179, 180 }; + struct cls_struct_3_1byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_3_1byte_fn), &res_dbl, args_dbl); + /* { dg-output "12 13 14 178 179 180: 190 192 194" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 190 192 194" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3_1byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_3_1byte(*)(cls_struct_3_1byte, cls_struct_3_1byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 13 14 178 179 180: 190 192 194" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 190 192 194" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c new file mode 100644 index 0000000000..a02c463af9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_3byte { + unsigned short a; + unsigned char b; +} cls_struct_3byte; + +cls_struct_3byte cls_struct_3byte_fn(struct cls_struct_3byte a1, + struct cls_struct_3byte a2) +{ + struct cls_struct_3byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + + return result; +} + +static void +cls_struct_3byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_3byte a1, a2; + + a1 = *(struct cls_struct_3byte*)(args[0]); + a2 = *(struct cls_struct_3byte*)(args[1]); + + *(cls_struct_3byte*)resp = cls_struct_3byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_3byte g_dbl = { 12, 119 }; + struct cls_struct_3byte f_dbl = { 1, 15 }; + struct cls_struct_3byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_ushort; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_3byte_fn), &res_dbl, args_dbl); + /* { dg-output "12 119 1 15: 13 134" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 134" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_3byte(*)(cls_struct_3byte, cls_struct_3byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 119 1 15: 13 134" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 134" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c new file mode 100644 index 0000000000..c7251cead6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_3byte_1 { + unsigned char a; + unsigned short b; +} cls_struct_3byte_1; + +cls_struct_3byte_1 cls_struct_3byte_fn1(struct cls_struct_3byte_1 a1, + struct cls_struct_3byte_1 a2) +{ + struct cls_struct_3byte_1 result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + + return result; +} + +static void +cls_struct_3byte_gn1(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_3byte_1 a1, a2; + + a1 = *(struct cls_struct_3byte_1*)(args[0]); + a2 = *(struct cls_struct_3byte_1*)(args[1]); + + *(cls_struct_3byte_1*)resp = cls_struct_3byte_fn1(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_3byte_1 g_dbl = { 15, 125 }; + struct cls_struct_3byte_1 f_dbl = { 9, 19 }; + struct cls_struct_3byte_1 res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_3byte_fn1), &res_dbl, args_dbl); + /* { dg-output "15 125 9 19: 24 144" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 24 144" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn1, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_3byte_1(*)(cls_struct_3byte_1, cls_struct_3byte_1))(code))(g_dbl, f_dbl); + /* { dg-output "\n15 125 9 19: 24 144" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 24 144" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c new file mode 100644 index 0000000000..48888f8405 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c @@ -0,0 +1,95 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations:>none. + PR: none. + Originator: 20171026 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef struct cls_struct_3float { + float f; + float g; + float h; +} cls_struct_3float; + +cls_struct_3float cls_struct_3float_fn(struct cls_struct_3float a1, + struct cls_struct_3float a2) +{ + struct cls_struct_3float result; + + result.f = a1.f + a2.f; + result.g = a1.g + a2.g; + result.h = a1.h + a2.h; + + printf("%g %g %g %g %g %g: %g %g %g\n", a1.f, a1.g, a1.h, + a2.f, a2.g, a2.h, result.f, result.g, result.h); + + return result; +} + +static void +cls_struct_3float_gn(ffi_cif *cif __UNUSED__, void* resp, void **args, + void* userdata __UNUSED__) +{ + struct cls_struct_3float a1, a2; + + a1 = *(struct cls_struct_3float*)(args[0]); + a2 = *(struct cls_struct_3float*)(args[1]); + + *(cls_struct_3float*)resp = cls_struct_3float_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void *args_dbl[3]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_3float g_dbl = { 1.0f, 2.0f, 3.0f }; + struct cls_struct_3float f_dbl = { 1.0f, 2.0f, 3.0f }; + struct cls_struct_3float res_dbl; + + cls_struct_fields[0] = &ffi_type_float; + cls_struct_fields[1] = &ffi_type_float; + cls_struct_fields[2] = &ffi_type_float; + cls_struct_fields[3] = NULL; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_3float_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 2 4 6" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3float_gn, NULL, code) == + FFI_OK); + + res_dbl = ((cls_struct_3float(*)(cls_struct_3float, + cls_struct_3float))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 2 4 6" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c new file mode 100644 index 0000000000..2d6d8b622c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c @@ -0,0 +1,98 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Especially with small structures which may fit in one + register. Depending on the ABI. + Limitations: none. + PR: none. + Originator: 20030902 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_4_1byte { + unsigned char a; + unsigned char b; + unsigned char c; + unsigned char d; +} cls_struct_4_1byte; + +cls_struct_4_1byte cls_struct_4_1byte_fn(struct cls_struct_4_1byte a1, + struct cls_struct_4_1byte a2) +{ + struct cls_struct_4_1byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + + printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + + return result; +} + +static void +cls_struct_4_1byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_4_1byte a1, a2; + + a1 = *(struct cls_struct_4_1byte*)(args[0]); + a2 = *(struct cls_struct_4_1byte*)(args[1]); + + *(cls_struct_4_1byte*)resp = cls_struct_4_1byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 }; + struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 }; + struct cls_struct_4_1byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_uchar; + cls_struct_fields[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_4_1byte_fn), &res_dbl, args_dbl); + /* { dg-output "12 13 14 15 178 179 180 181: 190 192 194 196" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 190 192 194 196" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4_1byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_4_1byte(*)(cls_struct_4_1byte, cls_struct_4_1byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 13 14 15 178 179 180 181: 190 192 194 196" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 190 192 194 196" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c new file mode 100644 index 0000000000..4ac378776b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef struct cls_struct_4byte { + unsigned short a; + unsigned short b; +} cls_struct_4byte; + +cls_struct_4byte cls_struct_4byte_fn(struct cls_struct_4byte a1, + struct cls_struct_4byte a2) +{ + struct cls_struct_4byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + + return result; +} + +static void +cls_struct_4byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_4byte a1, a2; + + a1 = *(struct cls_struct_4byte*)(args[0]); + a2 = *(struct cls_struct_4byte*)(args[1]); + + *(cls_struct_4byte*)resp = cls_struct_4byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_4byte g_dbl = { 127, 120 }; + struct cls_struct_4byte f_dbl = { 12, 128 }; + struct cls_struct_4byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_ushort; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_4byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 12 128: 139 248" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 139 248" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_4byte(*)(cls_struct_4byte, cls_struct_4byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 12 128: 139 248" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 139 248" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c new file mode 100644 index 0000000000..ad9d51c248 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c @@ -0,0 +1,109 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20050708 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_5byte { + unsigned char a; + unsigned char b; + unsigned char c; + unsigned char d; + unsigned char e; +} cls_struct_5byte; + +cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, + struct cls_struct_5byte a2) +{ + struct cls_struct_5byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + result.e = a1.e + a2.e; + + printf("%d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d\n", + a1.a, a1.b, a1.c, a1.d, a1.e, + a2.a, a2.b, a2.c, a2.d, a2.e, + result.a, result.b, result.c, result.d, result.e); + + return result; +} + +static void +cls_struct_5byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_5byte a1, a2; + + a1 = *(struct cls_struct_5byte*)(args[0]); + a2 = *(struct cls_struct_5byte*)(args[1]); + + *(cls_struct_5byte*)resp = cls_struct_5byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[6]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 }; + struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 }; + struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 }; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_uchar; + cls_struct_fields[4] = &ffi_type_uchar; + cls_struct_fields[5] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_5byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 3 4 12 128 9 3 4: 139 248 10 6 8" } */ + printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 139 248 10 6 8" } */ + + res_dbl.a = 0; + res_dbl.b = 0; + res_dbl.c = 0; + res_dbl.d = 0; + res_dbl.e = 0; + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_5byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_5byte(*)(cls_struct_5byte, cls_struct_5byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 3 4 12 128 9 3 4: 139 248 10 6 8" } */ + printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 139 248 10 6 8" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c new file mode 100644 index 0000000000..4e0c0003c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c @@ -0,0 +1,98 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_5byte { + unsigned short a; + unsigned short b; + unsigned char c; +} cls_struct_5byte; + +cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, + struct cls_struct_5byte a2) +{ + struct cls_struct_5byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, + a2.a, a2.b, a2.c, + result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_5byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_5byte a1, a2; + + a1 = *(struct cls_struct_5byte*)(args[0]); + a2 = *(struct cls_struct_5byte*)(args[1]); + + *(cls_struct_5byte*)resp = cls_struct_5byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_5byte g_dbl = { 127, 120, 1 }; + struct cls_struct_5byte f_dbl = { 12, 128, 9 }; + struct cls_struct_5byte res_dbl = { 0, 0, 0 }; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_ushort; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_5byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 12 128 9: 139 248 10" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 139 248 10" } */ + + res_dbl.a = 0; + res_dbl.b = 0; + res_dbl.c = 0; + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_5byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_5byte(*)(cls_struct_5byte, cls_struct_5byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 12 128 9: 139 248 10" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 139 248 10" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c new file mode 100644 index 0000000000..a55edc2c7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c @@ -0,0 +1,124 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check bigger struct which overlaps + the gp and fp register count on Darwin/AIX/ppc64. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_64byte { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; +} cls_struct_64byte; + +cls_struct_64byte cls_struct_64byte_fn(struct cls_struct_64byte b0, + struct cls_struct_64byte b1, + struct cls_struct_64byte b2, + struct cls_struct_64byte b3) +{ + struct cls_struct_64byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + result.e = b0.e + b1.e + b2.e + b3.e; + result.f = b0.f + b1.f + b2.f + b3.f; + result.g = b0.g + b1.g + b2.g + b3.g; + result.h = b0.h + b1.h + b2.h + b3.h; + + printf("%g %g %g %g %g %g %g %g\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h); + + return result; +} + +static void +cls_struct_64byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_64byte b0, b1, b2, b3; + + b0 = *(struct cls_struct_64byte*)(args[0]); + b1 = *(struct cls_struct_64byte*)(args[1]); + b2 = *(struct cls_struct_64byte*)(args[2]); + b3 = *(struct cls_struct_64byte*)(args[3]); + + *(cls_struct_64byte*)resp = cls_struct_64byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[9]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 }; + struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 }; + struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 }; + struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 }; + struct cls_struct_64byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_double; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_double; + cls_struct_fields[7] = &ffi_type_double; + cls_struct_fields[8] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_64byte_fn), &res_dbl, args_dbl); + /* { dg-output "22 15 17 25 6 13 19 18" } */ + printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_64byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_64byte(*)(cls_struct_64byte, + cls_struct_64byte, + cls_struct_64byte, + cls_struct_64byte)) + (code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n22 15 17 25 6 13 19 18" } */ + printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c new file mode 100644 index 0000000000..b4dcdba472 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c @@ -0,0 +1,113 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20050708 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_6byte { + unsigned char a; + unsigned char b; + unsigned char c; + unsigned char d; + unsigned char e; + unsigned char f; +} cls_struct_6byte; + +cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, + struct cls_struct_6byte a2) +{ + struct cls_struct_6byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + result.e = a1.e + a2.e; + result.f = a1.f + a2.f; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d %d\n", + a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, + result.a, result.b, result.c, result.d, result.e, result.f); + + return result; +} + +static void +cls_struct_6byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_6byte a1, a2; + + a1 = *(struct cls_struct_6byte*)(args[0]); + a2 = *(struct cls_struct_6byte*)(args[1]); + + *(cls_struct_6byte*)resp = cls_struct_6byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[7]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 }; + struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 }; + struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 }; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_uchar; + cls_struct_fields[4] = &ffi_type_uchar; + cls_struct_fields[5] = &ffi_type_uchar; + cls_struct_fields[6] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_6byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 3 4 5 12 128 9 3 4 5: 139 248 10 6 8 10" } */ + printf("res: %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f); + /* { dg-output "\nres: 139 248 10 6 8 10" } */ + + res_dbl.a = 0; + res_dbl.b = 0; + res_dbl.c = 0; + res_dbl.d = 0; + res_dbl.e = 0; + res_dbl.f = 0; + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_6byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_6byte(*)(cls_struct_6byte, cls_struct_6byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 3 4 5 12 128 9 3 4 5: 139 248 10 6 8 10" } */ + printf("res: %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f); + /* { dg-output "\nres: 139 248 10 6 8 10" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c new file mode 100644 index 0000000000..740678017b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c @@ -0,0 +1,99 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_6byte { + unsigned short a; + unsigned short b; + unsigned char c; + unsigned char d; +} cls_struct_6byte; + +cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, + struct cls_struct_6byte a2) +{ + struct cls_struct_6byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + + printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + + return result; +} + +static void +cls_struct_6byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_6byte a1, a2; + + a1 = *(struct cls_struct_6byte*)(args[0]); + a2 = *(struct cls_struct_6byte*)(args[1]); + + *(cls_struct_6byte*)resp = cls_struct_6byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 }; + struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 }; + struct cls_struct_6byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_ushort; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_uchar; + cls_struct_fields[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_6byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 128 12 128 9 127: 139 248 10 255" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 255" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_6byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_6byte(*)(cls_struct_6byte, cls_struct_6byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 128 12 128 9 127: 139 248 10 255" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 255" } */ + + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c new file mode 100644 index 0000000000..14a7e96f9d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c @@ -0,0 +1,117 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20050708 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_7byte { + unsigned char a; + unsigned char b; + unsigned char c; + unsigned char d; + unsigned char e; + unsigned char f; + unsigned char g; +} cls_struct_7byte; + +cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, + struct cls_struct_7byte a2) +{ + struct cls_struct_7byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + result.e = a1.e + a2.e; + result.f = a1.f + a2.f; + result.g = a1.g + a2.g; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d %d %d %d %d %d %d\n", + a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + result.a, result.b, result.c, result.d, result.e, result.f, result.g); + + return result; +} + +static void +cls_struct_7byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_7byte a1, a2; + + a1 = *(struct cls_struct_7byte*)(args[0]); + a2 = *(struct cls_struct_7byte*)(args[1]); + + *(cls_struct_7byte*)resp = cls_struct_7byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[8]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 }; + struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 }; + struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 }; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_uchar; + cls_struct_fields[4] = &ffi_type_uchar; + cls_struct_fields[5] = &ffi_type_uchar; + cls_struct_fields[6] = &ffi_type_uchar; + cls_struct_fields[7] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_7byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 3 4 5 6 12 128 9 3 4 5 6: 139 248 10 6 8 10 12" } */ + printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ + + res_dbl.a = 0; + res_dbl.b = 0; + res_dbl.c = 0; + res_dbl.d = 0; + res_dbl.e = 0; + res_dbl.f = 0; + res_dbl.g = 0; + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_7byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_7byte(*)(cls_struct_7byte, cls_struct_7byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 3 4 5 6 12 128 9 3 4 5 6: 139 248 10 6 8 10 12" } */ + printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c new file mode 100644 index 0000000000..1645cc635f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c @@ -0,0 +1,97 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_7byte { + unsigned short a; + unsigned short b; + unsigned char c; + unsigned short d; +} cls_struct_7byte; + +cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, + struct cls_struct_7byte a2) +{ + struct cls_struct_7byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + result.d = a1.d + a2.d; + + printf("%d %d %d %d %d %d %d %d: %d %d %d %d\n", a1.a, a1.b, a1.c, a1.d, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + + return result; +} + +static void +cls_struct_7byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_7byte a1, a2; + + a1 = *(struct cls_struct_7byte*)(args[0]); + a2 = *(struct cls_struct_7byte*)(args[1]); + + *(cls_struct_7byte*)resp = cls_struct_7byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 }; + struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 }; + struct cls_struct_7byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_ushort; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = &ffi_type_ushort; + cls_struct_fields[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_7byte_fn), &res_dbl, args_dbl); + /* { dg-output "127 120 1 254 12 128 9 255: 139 248 10 509" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 509" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_7byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_7byte(*)(cls_struct_7byte, cls_struct_7byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n127 120 1 254 12 128 9 255: 139 248 10 509" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 509" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c new file mode 100644 index 0000000000..f6c1ea570a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c @@ -0,0 +1,88 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Check overlapping. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_8byte { + int a; + float b; +} cls_struct_8byte; + +cls_struct_8byte cls_struct_8byte_fn(struct cls_struct_8byte a1, + struct cls_struct_8byte a2) +{ + struct cls_struct_8byte result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + + printf("%d %g %d %g: %d %g\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + + return result; +} + +static void +cls_struct_8byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_8byte a1, a2; + + a1 = *(struct cls_struct_8byte*)(args[0]); + a2 = *(struct cls_struct_8byte*)(args[1]); + + *(cls_struct_8byte*)resp = cls_struct_8byte_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_8byte g_dbl = { 1, 2.0 }; + struct cls_struct_8byte f_dbl = { 4, 5.0 }; + struct cls_struct_8byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_sint; + cls_struct_fields[1] = &ffi_type_float; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_8byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 4 5: 5 7" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 5 7" } */ + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_8byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_8byte(*)(cls_struct_8byte, cls_struct_8byte))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 4 5: 5 7" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 5 7" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c new file mode 100644 index 0000000000..0b8572223c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Darwin/AIX do double-word + alignment of the struct if the first element is a double. + Check that it does not here. + Limitations: none. + PR: none. + Originator: 20030914 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_9byte { + int a; + double b; +} cls_struct_9byte; + +cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, + struct cls_struct_9byte b2) +{ + struct cls_struct_9byte result; + + result.a = b1.a + b2.a; + result.b = b1.b + b2.b; + + printf("%d %g %d %g: %d %g\n", b1.a, b1.b, b2.a, b2.b, + result.a, result.b); + + return result; +} + +static void cls_struct_9byte_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + struct cls_struct_9byte b1, b2; + + b1 = *(struct cls_struct_9byte*)(args[0]); + b2 = *(struct cls_struct_9byte*)(args[1]); + + *(cls_struct_9byte*)resp = cls_struct_9byte_fn(b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_9byte h_dbl = { 7, 8.0}; + struct cls_struct_9byte j_dbl = { 1, 9.0}; + struct cls_struct_9byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_sint; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &h_dbl; + args_dbl[1] = &j_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_9byte_fn), &res_dbl, args_dbl); + /* { dg-output "7 8 1 9: 8 17" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_9byte(*)(cls_struct_9byte, cls_struct_9byte))(code))(h_dbl, j_dbl); + /* { dg-output "\n7 8 1 9: 8 17" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c new file mode 100644 index 0000000000..edf991de73 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Depending on the ABI. Darwin/AIX do double-word + alignment of the struct if the first element is a double. + Check that it does here. + Limitations: none. + PR: none. + Originator: 20030914 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_9byte { + double a; + int b; +} cls_struct_9byte; + +cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, + struct cls_struct_9byte b2) +{ + struct cls_struct_9byte result; + + result.a = b1.a + b2.a; + result.b = b1.b + b2.b; + + printf("%g %d %g %d: %g %d\n", b1.a, b1.b, b2.a, b2.b, + result.a, result.b); + + return result; +} + +static void cls_struct_9byte_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + struct cls_struct_9byte b1, b2; + + b1 = *(struct cls_struct_9byte*)(args[0]); + b2 = *(struct cls_struct_9byte*)(args[1]); + + *(cls_struct_9byte*)resp = cls_struct_9byte_fn(b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_9byte h_dbl = { 7.0, 8}; + struct cls_struct_9byte j_dbl = { 1.0, 9}; + struct cls_struct_9byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_sint; + cls_struct_fields[2] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &h_dbl; + args_dbl[1] = &j_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_9byte_fn), &res_dbl, args_dbl); + /* { dg-output "7 8 1 9: 8 17" } */ + printf("res: %g %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ + + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_9byte(*)(cls_struct_9byte, cls_struct_9byte))(code))(h_dbl, j_dbl); + /* { dg-output "\n7 8 1 9: 8 17" } */ + printf("res: %g %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c new file mode 100644 index 0000000000..aad5f3ced6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c @@ -0,0 +1,93 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of double. + Limitations: none. + PR: none. + Originator: 20031203 */ + + + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + double b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c new file mode 100644 index 0000000000..37e085529e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of float. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + float b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_float; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c new file mode 100644 index 0000000000..b3322d8615 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c @@ -0,0 +1,92 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of long double. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + long double b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_longdouble; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c new file mode 100644 index 0000000000..cc1c43b8ca --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c @@ -0,0 +1,132 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of long double. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ + +#include "ffitest.h" + +typedef struct cls_struct_align { + long double a; + long double b; + long double c; + long double d; + long double e; + long double f; + long double g; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn( + cls_struct_align a1, + cls_struct_align a2) +{ + struct cls_struct_align r; + + r.a = a1.a + a2.a; + r.b = a1.b + a2.b; + r.c = a1.c + a2.c; + r.d = a1.d + a2.d; + r.e = a1.e + a2.e; + r.f = a1.f + a2.f; + r.g = a1.g + a2.g; + + printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg: " + "%Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", + a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + r.a, r.b, r.c, r.d, r.e, r.f, r.g); + + return r; +} + +cls_struct_align cls_struct_align_fn2( + cls_struct_align a1) +{ + struct cls_struct_align r; + + r.a = a1.a + 1; + r.b = a1.b + 1; + r.c = a1.c + 1; + r.d = a1.d + 1; + r.e = a1.e + 1; + r.f = a1.f + 1; + r.g = a1.g + 1; + + printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg: " + "%Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", + a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, + r.a, r.b, r.c, r.d, r.e, r.f, r.g); + + return r; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[8]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; + struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_longdouble; + cls_struct_fields[1] = &ffi_type_longdouble; + cls_struct_fields[2] = &ffi_type_longdouble; + cls_struct_fields[3] = &ffi_type_longdouble; + cls_struct_fields[4] = &ffi_type_longdouble; + cls_struct_fields[5] = &ffi_type_longdouble; + cls_struct_fields[6] = &ffi_type_longdouble; + cls_struct_fields[7] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ + printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ + printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c new file mode 100644 index 0000000000..5d3bec0719 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c @@ -0,0 +1,115 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of long double. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/18/2007 +*/ + +/* { dg-do run { xfail strongarm*-*-* } } */ +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ + +#include "ffitest.h" + +typedef struct cls_struct_align { + long double a; + long double b; + long double c; + long double d; + long double e; + double f; + long double g; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn( + cls_struct_align a1, + cls_struct_align a2) +{ + struct cls_struct_align r; + + r.a = a1.a + a2.a; + r.b = a1.b + a2.b; + r.c = a1.c + a2.c; + r.d = a1.d + a2.d; + r.e = a1.e + a2.e; + r.f = a1.f + a2.f; + r.g = a1.g + a2.g; + + printf("%Lg %Lg %Lg %Lg %Lg %g %Lg %Lg %Lg %Lg %Lg %Lg %g %Lg: " + "%Lg %Lg %Lg %Lg %Lg %g %Lg\n", + a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + r.a, r.b, r.c, r.d, r.e, r.f, r.g); + + return r; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[8]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[3]; + + struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 }; + struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_longdouble; + cls_struct_fields[1] = &ffi_type_longdouble; + cls_struct_fields[2] = &ffi_type_longdouble; + cls_struct_fields[3] = &ffi_type_longdouble; + cls_struct_fields[4] = &ffi_type_longdouble; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_longdouble; + cls_struct_fields[7] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ + printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 12 13 14: 9 11 13 15 17 19 21" } */ + printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ + + exit(0); +} + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c new file mode 100644 index 0000000000..8fbf36a5c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c @@ -0,0 +1,95 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of pointer. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + void *b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = (void *)((uintptr_t)a1.b + (uintptr_t)a2.b); + result.c = a1.c + a2.c; + + printf("%d %" PRIuPTR " %d %d %" PRIuPTR " %d: %d %" PRIuPTR " %d\n", + a1.a, (uintptr_t)a1.b, a1.c, + a2.a, (uintptr_t)a2.b, a2.c, + result.a, (uintptr_t)result.b, + result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, (void *)4951, 127 }; + struct cls_struct_align f_dbl = { 1, (void *)9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_pointer; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c new file mode 100644 index 0000000000..039b874732 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of sint16. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + signed short b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_sshort; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c new file mode 100644 index 0000000000..c96c6d136d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of sint32. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + signed int b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_sint; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c new file mode 100644 index 0000000000..9aa7bdddff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c @@ -0,0 +1,92 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of sint64. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + signed long long b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_sint64; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c new file mode 100644 index 0000000000..97620b79d1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of uint16. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + unsigned short b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_ushort; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c new file mode 100644 index 0000000000..5766fadf0d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of uint32. + Limitations: none. + PR: none. + Originator: 20031203 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + unsigned int b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uint; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c new file mode 100644 index 0000000000..a52cb8939c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c @@ -0,0 +1,93 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of uint64. + Limitations: none. + PR: none. + Originator: 20031203 */ + + +/* { dg-do run } */ +/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ +#include "ffitest.h" + +typedef struct cls_struct_align { + unsigned char a; + unsigned long long b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_align g_dbl = { 12, 4951, 127 }; + struct cls_struct_align f_dbl = { 1, 9320, 13 }; + struct cls_struct_align res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uint64; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &g_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_dbl, args_dbl); + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c new file mode 100644 index 0000000000..e451dea51b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c @@ -0,0 +1,66 @@ +/* Area: ffi_call, closure_call + Purpose: Check double arguments in structs. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/23/2007 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef struct Dbls { + double x; + double y; +} Dbls; + +void +closure_test_fn(Dbls p) +{ + printf("%.1f %.1f\n", p.x, p.y); +} + +void +closure_test_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, + void** args, void* userdata __UNUSED__) +{ + closure_test_fn(*(Dbls*)args[0]); +} + +int main(int argc __UNUSED__, char** argv __UNUSED__) +{ + ffi_cif cif; + + void *code; + ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type* cl_arg_types[1]; + + ffi_type ts1_type; + ffi_type* ts1_type_elements[4]; + + Dbls arg = { 1.0, 2.0 }; + + ts1_type.size = 0; + ts1_type.alignment = 0; + ts1_type.type = FFI_TYPE_STRUCT; + ts1_type.elements = ts1_type_elements; + + ts1_type_elements[0] = &ffi_type_double; + ts1_type_elements[1] = &ffi_type_double; + ts1_type_elements[2] = NULL; + + cl_arg_types[0] = &ts1_type; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_void, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK); + + ((void*(*)(Dbls))(code))(arg); + /* { dg-output "1.0 2.0" } */ + + closure_test_fn(arg); + /* { dg-output "\n1.0 2.0" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c new file mode 100644 index 0000000000..84ad4cb7d9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c @@ -0,0 +1,43 @@ +/* Area: closure_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(double *)resp = *(double *)args[0]; + + printf("%f: %f\n",*(double *)args[0], + *(double *)resp); + } +typedef double (*cls_ret_double)(double); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + double res; + + cl_arg_types[0] = &ffi_type_double; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_double, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_double_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_double)code))(21474.789); + /* { dg-output "21474.789000: 21474.789000" } */ + printf("res: %.6f\n", res); + /* { dg-output "\nres: 21474.789000" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c new file mode 100644 index 0000000000..e077f92b86 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c @@ -0,0 +1,61 @@ +/* Area: ffi_call, closure_call + Purpose: Test doubles passed in variable argument lists. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +/* { dg-output "" { xfail avr32*-*-* } } */ +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ + +#include "ffitest.h" + +static void +cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + char* format = *(char**)args[0]; + double doubleValue = *(double*)args[1]; + + *(ffi_arg*)resp = printf(format, doubleValue); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[3]; + ffi_type* arg_types[3]; + + char* format = "%.1f\n"; + double doubleArg = 7; + ffi_arg res = 0; + + arg_types[0] = &ffi_type_pointer; + arg_types[1] = &ffi_type_double; + arg_types[2] = NULL; + + /* This printf call is variadic */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, + arg_types) == FFI_OK); + + args[0] = &format; + args[1] = &doubleArg; + args[2] = NULL; + + ffi_call(&cif, FFI_FN(printf), &res, args); + /* { dg-output "7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, + code) == FFI_OK); + + res = ((int(*)(char*, ...))(code))(format, doubleArg); + /* { dg-output "\n7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c new file mode 100644 index 0000000000..0090fed906 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c @@ -0,0 +1,42 @@ +/* Area: closure_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(float *)resp = *(float *)args[0]; + + printf("%g: %g\n",*(float *)args[0], + *(float *)resp); + } + +typedef float (*cls_ret_float)(float); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + float res; + + cl_arg_types[0] = &ffi_type_float; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_float, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_float_fn, NULL, code) == FFI_OK); + res = ((((cls_ret_float)code)(-2122.12))); + /* { dg-output "\\-2122.12: \\-2122.12" } */ + printf("res: %.6f\n", res); + /* { dg-output "\nres: \-2122.120117" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c new file mode 100644 index 0000000000..d24e72e4ae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c @@ -0,0 +1,105 @@ +/* Area: ffi_call, closure_call + Purpose: Check long double arguments. + Limitations: none. + PR: none. + Originator: Blake Chaffin */ + +/* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have + remove the xfail for arm*-*-* below, until we know more. */ +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ + +#include "ffitest.h" + +long double cls_ldouble_fn( + long double a1, + long double a2, + long double a3, + long double a4, + long double a5, + long double a6, + long double a7, + long double a8) +{ + long double r = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8; + + printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg: %Lg\n", + a1, a2, a3, a4, a5, a6, a7, a8, r); + + return r; +} + +static void +cls_ldouble_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + long double a1 = *(long double*)args[0]; + long double a2 = *(long double*)args[1]; + long double a3 = *(long double*)args[2]; + long double a4 = *(long double*)args[3]; + long double a5 = *(long double*)args[4]; + long double a6 = *(long double*)args[5]; + long double a7 = *(long double*)args[6]; + long double a8 = *(long double*)args[7]; + + *(long double*)resp = cls_ldouble_fn( + a1, a2, a3, a4, a5, a6, a7, a8); +} + +int main(void) +{ + ffi_cif cif; + void* code; + ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[9]; + ffi_type* arg_types[9]; + long double res = 0; + + long double arg1 = 1; + long double arg2 = 2; + long double arg3 = 3; + long double arg4 = 4; + long double arg5 = 5; + long double arg6 = 6; + long double arg7 = 7; + long double arg8 = 8; + + arg_types[0] = &ffi_type_longdouble; + arg_types[1] = &ffi_type_longdouble; + arg_types[2] = &ffi_type_longdouble; + arg_types[3] = &ffi_type_longdouble; + arg_types[4] = &ffi_type_longdouble; + arg_types[5] = &ffi_type_longdouble; + arg_types[6] = &ffi_type_longdouble; + arg_types[7] = &ffi_type_longdouble; + arg_types[8] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 8, &ffi_type_longdouble, + arg_types) == FFI_OK); + + args[0] = &arg1; + args[1] = &arg2; + args[2] = &arg3; + args[3] = &arg4; + args[4] = &arg5; + args[5] = &arg6; + args[6] = &arg7; + args[7] = &arg8; + args[8] = NULL; + + ffi_call(&cif, FFI_FN(cls_ldouble_fn), &res, args); + /* { dg-output "1 2 3 4 5 6 7 8: 36" } */ + printf("res: %Lg\n", res); + /* { dg-output "\nres: 36" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ldouble_gn, NULL, code) == FFI_OK); + + res = ((long double(*)(long double, long double, long double, long double, + long double, long double, long double, long double))(code))(arg1, arg2, + arg3, arg4, arg5, arg6, arg7, arg8); + /* { dg-output "\n1 2 3 4 5 6 7 8: 36" } */ + printf("res: %Lg\n", res); + /* { dg-output "\nres: 36" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c new file mode 100644 index 0000000000..39b438b289 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c @@ -0,0 +1,61 @@ +/* Area: ffi_call, closure_call + Purpose: Test long doubles passed in variable argument lists. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +/* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ + +#include "ffitest.h" + +static void +cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + char* format = *(char**)args[0]; + long double ldValue = *(long double*)args[1]; + + *(ffi_arg*)resp = printf(format, ldValue); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[3]; + ffi_type* arg_types[3]; + + char* format = "%.1Lf\n"; + long double ldArg = 7; + ffi_arg res = 0; + + arg_types[0] = &ffi_type_pointer; + arg_types[1] = &ffi_type_longdouble; + arg_types[2] = NULL; + + /* This printf call is variadic */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint, + arg_types) == FFI_OK); + + args[0] = &format; + args[1] = &ldArg; + args[2] = NULL; + + ffi_call(&cif, FFI_FN(printf), &res, args); + /* { dg-output "7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, + code) == FFI_OK); + + res = ((int(*)(char*, ...))(code))(format, ldArg); + /* { dg-output "\n7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c new file mode 100644 index 0000000000..7fd6c8207a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c @@ -0,0 +1,70 @@ +/* Area: closure_call + Purpose: Check closures called with many args of mixed types + Limitations: none. + PR: none. + Originator: */ + +/* { dg-do run } */ +#include "ffitest.h" +#include +#include + +#define NARGS 16 + +static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + int i; + double r = 0; + double t; + for(i = 0; i < NARGS; i++) + { + if(i == 4 || i == 9 || i == 11 || i == 13 || i == 15) + { + t = *(long int *)args[i]; + CHECK(t == i+1); + } + else + { + t = *(double *)args[i]; + CHECK(fabs(t - ((i+1) * 0.1)) < FLT_EPSILON); + } + r += t; + } + *(double *)resp = r; +} +typedef double (*cls_ret_double)(double, double, double, double, long int, +double, double, double, double, long int, double, long int, double, long int, +double, long int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[NARGS]; + double res; + int i; + double expected = 64.9; + + for(i = 0; i < NARGS; i++) + { + if(i == 4 || i == 9 || i == 11 || i == 13 || i == 15) + cl_arg_types[i] = &ffi_type_slong; + else + cl_arg_types[i] = &ffi_type_double; + } + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, NARGS, + &ffi_type_double, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_double_fn, NULL, code) == FFI_OK); + + res = (((cls_ret_double)code))(0.1, 0.2, 0.3, 0.4, 5, 0.6, 0.7, 0.8, 0.9, 10, + 1.1, 12, 1.3, 14, 1.5, 16); + if (fabs(res - expected) < FLT_EPSILON) + exit(0); + else + abort(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c new file mode 100644 index 0000000000..62b0697ac0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c @@ -0,0 +1,55 @@ +/* Area: closure_call + Purpose: Check register allocation for closure calls with many float and double arguments + Limitations: none. + PR: none. + Originator: */ + +/* { dg-do run } */ +#include "ffitest.h" +#include +#include + +#define NARGS 16 + +static void cls_mixed_float_double_fn(ffi_cif* cif , void* ret, void** args, + void* userdata __UNUSED__) +{ + double r = 0; + unsigned int i; + double t; + for(i=0; i < cif->nargs; i++) + { + if(cif->arg_types[i] == &ffi_type_double) { + t = *(((double**)(args))[i]); + } else { + t = *(((float**)(args))[i]); + } + r += t; + } + *((double*)ret) = r; +} +typedef double (*cls_mixed)(double, float, double, double, double, double, double, float, float, double, float, float); + +int main (void) +{ + ffi_cif cif; + ffi_closure *closure; + void* code; + ffi_type *argtypes[12] = {&ffi_type_double, &ffi_type_float, &ffi_type_double, + &ffi_type_double, &ffi_type_double, &ffi_type_double, + &ffi_type_double, &ffi_type_float, &ffi_type_float, + &ffi_type_double, &ffi_type_float, &ffi_type_float}; + + + closure = ffi_closure_alloc(sizeof(ffi_closure), (void**)&code); + if(closure ==NULL) + abort(); + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 12, &ffi_type_double, argtypes) == FFI_OK); + CHECK(ffi_prep_closure_loc(closure, &cif, cls_mixed_float_double_fn, NULL, code) == FFI_OK); + double ret = ((cls_mixed)code)(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2); + ffi_closure_free(closure); + if(fabs(ret - 7.8) < FLT_EPSILON) + exit(0); + else + abort(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c new file mode 100644 index 0000000000..71df7b6516 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c @@ -0,0 +1,74 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple signed char values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +signed char test_func_fn(signed char a1, signed char a2) +{ + signed char result; + + result = a1 + a2; + + printf("%d %d: %d\n", a1, a2, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + signed char a1, a2; + + a1 = *(signed char *)avals[0]; + a2 = *(signed char *)avals[1]; + + *(ffi_arg *)rval = test_func_fn(a1, a2); + +} + +typedef signed char (*test_type)(signed char, signed char); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[3]; + ffi_type * cl_arg_types[3]; + ffi_arg res_call; + signed char a, b, res_closure; + + a = 2; + b = 125; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = NULL; + + cl_arg_types[0] = &ffi_type_schar; + cl_arg_types[1] = &ffi_type_schar; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_schar, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "2 125: 127" } */ + printf("res: %d\n", (signed char)res_call); + /* { dg-output "\nres: 127" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(2, 125); + /* { dg-output "\n2 125: 127" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 127" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c new file mode 100644 index 0000000000..4c39153266 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c @@ -0,0 +1,74 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple signed short values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +signed short test_func_fn(signed short a1, signed short a2) +{ + signed short result; + + result = a1 + a2; + + printf("%d %d: %d\n", a1, a2, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + signed short a1, a2; + + a1 = *(signed short *)avals[0]; + a2 = *(signed short *)avals[1]; + + *(ffi_arg *)rval = test_func_fn(a1, a2); + +} + +typedef signed short (*test_type)(signed short, signed short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[3]; + ffi_type * cl_arg_types[3]; + ffi_arg res_call; + unsigned short a, b, res_closure; + + a = 2; + b = 32765; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = NULL; + + cl_arg_types[0] = &ffi_type_sshort; + cl_arg_types[1] = &ffi_type_sshort; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_sshort, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "2 32765: 32767" } */ + printf("res: %d\n", (unsigned short)res_call); + /* { dg-output "\nres: 32767" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(2, 32765); + /* { dg-output "\n2 32765: 32767" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32767" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c new file mode 100644 index 0000000000..1c3aeb5a66 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c @@ -0,0 +1,86 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple signed short/char values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +signed short test_func_fn(signed char a1, signed short a2, + signed char a3, signed short a4) +{ + signed short result; + + result = a1 + a2 + a3 + a4; + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + signed char a1, a3; + signed short a2, a4; + + a1 = *(signed char *)avals[0]; + a2 = *(signed short *)avals[1]; + a3 = *(signed char *)avals[2]; + a4 = *(signed short *)avals[3]; + + *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); + +} + +typedef signed short (*test_type)(signed char, signed short, + signed char, signed short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[5]; + ffi_type * cl_arg_types[5]; + ffi_arg res_call; + signed char a, c; + signed short b, d, res_closure; + + a = 1; + b = 32765; + c = 127; + d = -128; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = &c; + args_dbl[3] = &d; + args_dbl[4] = NULL; + + cl_arg_types[0] = &ffi_type_schar; + cl_arg_types[1] = &ffi_type_sshort; + cl_arg_types[2] = &ffi_type_schar; + cl_arg_types[3] = &ffi_type_sshort; + cl_arg_types[4] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_sshort, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "1 32765 127 -128: 32765" } */ + printf("res: %d\n", (signed short)res_call); + /* { dg-output "\nres: 32765" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(1, 32765, 127, -128); + /* { dg-output "\n1 32765 127 -128: 32765" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32765" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c new file mode 100644 index 0000000000..009c02c72b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c @@ -0,0 +1,91 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple unsigned char values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +unsigned char test_func_fn(unsigned char a1, unsigned char a2, + unsigned char a3, unsigned char a4) +{ + unsigned char result; + + result = a1 + a2 + a3 + a4; + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + unsigned char a1, a2, a3, a4; + + a1 = *(unsigned char *)avals[0]; + a2 = *(unsigned char *)avals[1]; + a3 = *(unsigned char *)avals[2]; + a4 = *(unsigned char *)avals[3]; + + *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); + +} + +typedef unsigned char (*test_type)(unsigned char, unsigned char, + unsigned char, unsigned char); + +void test_func(ffi_cif *cif __UNUSED__, void *rval __UNUSED__, void **avals, + void *data __UNUSED__) +{ + printf("%d %d %d %d\n", *(unsigned char *)avals[0], + *(unsigned char *)avals[1], *(unsigned char *)avals[2], + *(unsigned char *)avals[3]); +} +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[5]; + ffi_type * cl_arg_types[5]; + ffi_arg res_call; + unsigned char a, b, c, d, res_closure; + + a = 1; + b = 2; + c = 127; + d = 125; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = &c; + args_dbl[3] = &d; + args_dbl[4] = NULL; + + cl_arg_types[0] = &ffi_type_uchar; + cl_arg_types[1] = &ffi_type_uchar; + cl_arg_types[2] = &ffi_type_uchar; + cl_arg_types[3] = &ffi_type_uchar; + cl_arg_types[4] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_uchar, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "1 2 127 125: 255" } */ + printf("res: %d\n", (unsigned char)res_call); + /* { dg-output "\nres: 255" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(1, 2, 127, 125); + /* { dg-output "\n1 2 127 125: 255" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 255" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c new file mode 100644 index 0000000000..dd10ca7346 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c @@ -0,0 +1,74 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple unsigned short values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +unsigned short test_func_fn(unsigned short a1, unsigned short a2) +{ + unsigned short result; + + result = a1 + a2; + + printf("%d %d: %d\n", a1, a2, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + unsigned short a1, a2; + + a1 = *(unsigned short *)avals[0]; + a2 = *(unsigned short *)avals[1]; + + *(ffi_arg *)rval = test_func_fn(a1, a2); + +} + +typedef unsigned short (*test_type)(unsigned short, unsigned short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[3]; + ffi_type * cl_arg_types[3]; + ffi_arg res_call; + unsigned short a, b, res_closure; + + a = 2; + b = 32765; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = NULL; + + cl_arg_types[0] = &ffi_type_ushort; + cl_arg_types[1] = &ffi_type_ushort; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_ushort, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "2 32765: 32767" } */ + printf("res: %d\n", (unsigned short)res_call); + /* { dg-output "\nres: 32767" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(2, 32765); + /* { dg-output "\n2 32765: 32767" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32767" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c new file mode 100644 index 0000000000..2588e97f98 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c @@ -0,0 +1,86 @@ +/* Area: ffi_call, closure_call + Purpose: Check passing of multiple unsigned short/char values. + Limitations: none. + PR: PR13221. + Originator: 20031129 */ + +/* { dg-do run } */ +#include "ffitest.h" + +unsigned short test_func_fn(unsigned char a1, unsigned short a2, + unsigned char a3, unsigned short a4) +{ + unsigned short result; + + result = a1 + a2 + a3 + a4; + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + + return result; + +} + +static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + void *data __UNUSED__) +{ + unsigned char a1, a3; + unsigned short a2, a4; + + a1 = *(unsigned char *)avals[0]; + a2 = *(unsigned short *)avals[1]; + a3 = *(unsigned char *)avals[2]; + a4 = *(unsigned short *)avals[3]; + + *(ffi_arg *)rval = test_func_fn(a1, a2, a3, a4); + +} + +typedef unsigned short (*test_type)(unsigned char, unsigned short, + unsigned char, unsigned short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void * args_dbl[5]; + ffi_type * cl_arg_types[5]; + ffi_arg res_call; + unsigned char a, c; + unsigned short b, d, res_closure; + + a = 1; + b = 2; + c = 127; + d = 128; + + args_dbl[0] = &a; + args_dbl[1] = &b; + args_dbl[2] = &c; + args_dbl[3] = &d; + args_dbl[4] = NULL; + + cl_arg_types[0] = &ffi_type_uchar; + cl_arg_types[1] = &ffi_type_ushort; + cl_arg_types[2] = &ffi_type_uchar; + cl_arg_types[3] = &ffi_type_ushort; + cl_arg_types[4] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_ushort, cl_arg_types) == FFI_OK); + + ffi_call(&cif, FFI_FN(test_func_fn), &res_call, args_dbl); + /* { dg-output "1 2 127 128: 258" } */ + printf("res: %d\n", (unsigned short)res_call); + /* { dg-output "\nres: 258" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + + res_closure = (*((test_type)code))(1, 2, 127, 128); + /* { dg-output "\n1 2 127 128: 258" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 258" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c new file mode 100644 index 0000000000..d82a87a71b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c @@ -0,0 +1,74 @@ +/* Area: ffi_call, closure_call + Purpose: Check pointer arguments. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +#include "ffitest.h" + +void* cls_pointer_fn(void* a1, void* a2) +{ + void* result = (void*)((intptr_t)a1 + (intptr_t)a2); + + printf("0x%08x 0x%08x: 0x%08x\n", + (unsigned int)(uintptr_t) a1, + (unsigned int)(uintptr_t) a2, + (unsigned int)(uintptr_t) result); + + return result; +} + +static void +cls_pointer_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + void* a1 = *(void**)(args[0]); + void* a2 = *(void**)(args[1]); + + *(void**)resp = cls_pointer_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[3]; + /* ffi_type cls_pointer_type; */ + ffi_type* arg_types[3]; + +/* cls_pointer_type.size = sizeof(void*); + cls_pointer_type.alignment = 0; + cls_pointer_type.type = FFI_TYPE_POINTER; + cls_pointer_type.elements = NULL;*/ + + void* arg1 = (void*)0x12345678; + void* arg2 = (void*)0x89abcdef; + ffi_arg res = 0; + + arg_types[0] = &ffi_type_pointer; + arg_types[1] = &ffi_type_pointer; + arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_pointer, + arg_types) == FFI_OK); + + args[0] = &arg1; + args[1] = &arg2; + args[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_pointer_fn), &res, args); + /* { dg-output "0x12345678 0x89abcdef: 0x9be02467" } */ + printf("res: 0x%08x\n", (unsigned int) res); + /* { dg-output "\nres: 0x9be02467" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); + + res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); + /* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */ + printf("res: 0x%08x\n", (unsigned int) res); + /* { dg-output "\nres: 0x9be02467" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c new file mode 100644 index 0000000000..1f1d9157b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c @@ -0,0 +1,142 @@ +/* Area: ffi_call, closure_call + Purpose: Check pointer arguments across multiple hideous stack frames. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/7/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +#include "ffitest.h" + +static long dummyVar; + +long dummy_func( + long double a1, char b1, + long double a2, char b2, + long double a3, char b3, + long double a4, char b4) +{ + return a1 + b1 + a2 + b2 + a3 + b3 + a4 + b4; +} + +void* cls_pointer_fn2(void* a1, void* a2) +{ + long double trample1 = (intptr_t)a1 + (intptr_t)a2; + char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; + long double trample3 = (intptr_t)trample1 + (intptr_t)a1; + char trample4 = trample2 + ((char*)&a1)[1]; + long double trample5 = (intptr_t)trample3 + (intptr_t)a2; + char trample6 = trample4 + ((char*)&a2)[1]; + long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; + char trample8 = trample6 + trample2; + void* result; + + dummyVar = dummy_func(trample1, trample2, trample3, trample4, + trample5, trample6, trample7, trample8); + + result = (void*)((intptr_t)a1 + (intptr_t)a2); + + printf("0x%08x 0x%08x: 0x%08x\n", + (unsigned int)(uintptr_t) a1, + (unsigned int)(uintptr_t) a2, + (unsigned int)(uintptr_t) result); + + return result; +} + +void* cls_pointer_fn1(void* a1, void* a2) +{ + long double trample1 = (intptr_t)a1 + (intptr_t)a2; + char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; + long double trample3 = (intptr_t)trample1 + (intptr_t)a1; + char trample4 = trample2 + ((char*)&a1)[1]; + long double trample5 = (intptr_t)trample3 + (intptr_t)a2; + char trample6 = trample4 + ((char*)&a2)[1]; + long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; + char trample8 = trample6 + trample2; + void* result; + + dummyVar = dummy_func(trample1, trample2, trample3, trample4, + trample5, trample6, trample7, trample8); + + result = (void*)((intptr_t)a1 + (intptr_t)a2); + + printf("0x%08x 0x%08x: 0x%08x\n", + (unsigned int)(intptr_t) a1, + (unsigned int)(intptr_t) a2, + (unsigned int)(intptr_t) result); + + result = cls_pointer_fn2(result, a1); + + return result; +} + +static void +cls_pointer_gn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + void* a1 = *(void**)(args[0]); + void* a2 = *(void**)(args[1]); + + long double trample1 = (intptr_t)a1 + (intptr_t)a2; + char trample2 = ((char*)&a1)[0] + ((char*)&a2)[0]; + long double trample3 = (intptr_t)trample1 + (intptr_t)a1; + char trample4 = trample2 + ((char*)&a1)[1]; + long double trample5 = (intptr_t)trample3 + (intptr_t)a2; + char trample6 = trample4 + ((char*)&a2)[1]; + long double trample7 = (intptr_t)trample5 + (intptr_t)trample1; + char trample8 = trample6 + trample2; + + dummyVar = dummy_func(trample1, trample2, trample3, trample4, + trample5, trample6, trample7, trample8); + + *(void**)resp = cls_pointer_fn1(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure* pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[3]; + /* ffi_type cls_pointer_type; */ + ffi_type* arg_types[3]; + +/* cls_pointer_type.size = sizeof(void*); + cls_pointer_type.alignment = 0; + cls_pointer_type.type = FFI_TYPE_POINTER; + cls_pointer_type.elements = NULL;*/ + + void* arg1 = (void*)0x01234567; + void* arg2 = (void*)0x89abcdef; + ffi_arg res = 0; + + arg_types[0] = &ffi_type_pointer; + arg_types[1] = &ffi_type_pointer; + arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_pointer, + arg_types) == FFI_OK); + + args[0] = &arg1; + args[1] = &arg2; + args[2] = NULL; + + printf("\n"); + ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args); + + printf("res: 0x%08x\n", (unsigned int) res); + /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ + /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ + /* { dg-output "\nres: 0x8bf258bd" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); + + res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2); + + printf("res: 0x%08x\n", (unsigned int) res); + /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ + /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ + /* { dg-output "\nres: 0x8bf258bd" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c new file mode 100644 index 0000000000..82986b172c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c @@ -0,0 +1,44 @@ +/* Area: closure_call + Purpose: Check return value schar. + Limitations: none. + PR: none. + Originator: 20031108 */ + + + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg*)resp = *(signed char *)args[0]; + printf("%d: %d\n",*(signed char *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef signed char (*cls_ret_schar)(signed char); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + signed char res; + + cl_arg_types[0] = &ffi_type_schar; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_schar, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_schar_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_schar)code))(127); + /* { dg-output "127: 127" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 127" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c new file mode 100644 index 0000000000..c7e13b73a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c @@ -0,0 +1,42 @@ +/* Area: closure_call + Purpose: Check return value sint32. + Limitations: none. + PR: none. + Originator: 20031108 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg*)resp = *(signed int *)args[0]; + printf("%d: %d\n",*(signed int *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef signed int (*cls_ret_sint)(signed int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + signed int res; + + cl_arg_types[0] = &ffi_type_sint; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_sint_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_sint)code))(65534); + /* { dg-output "65534: 65534" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 65534" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c new file mode 100644 index 0000000000..846d57ed1b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c @@ -0,0 +1,42 @@ +/* Area: closure_call + Purpose: Check return value sshort. + Limitations: none. + PR: none. + Originator: 20031108 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg*)resp = *(signed short *)args[0]; + printf("%d: %d\n",*(signed short *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef signed short (*cls_ret_sshort)(signed short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + signed short res; + + cl_arg_types[0] = &ffi_type_sshort; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sshort, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_sshort_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_sshort)code))(255); + /* { dg-output "255: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c new file mode 100644 index 0000000000..6d1fdaeb60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c @@ -0,0 +1,114 @@ +/* Area: ffi_call, closure_call + Purpose: Test doubles passed in variable argument lists. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run } */ +/* { dg-output "" { xfail avr32*-*-* } } */ +#include "ffitest.h" + +struct small_tag +{ + unsigned char a; + unsigned char b; +}; + +struct large_tag +{ + unsigned a; + unsigned b; + unsigned c; + unsigned d; + unsigned e; +}; + +static void +test_fn (ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + int n = *(int*)args[0]; + struct small_tag s1 = * (struct small_tag *) args[1]; + struct large_tag l1 = * (struct large_tag *) args[2]; + struct small_tag s2 = * (struct small_tag *) args[3]; + + printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b, + l1.a, l1.b, l1.c, l1.d, l1.e, + s2.a, s2.b); + * (ffi_arg*) resp = 42; +} + +int +main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc (sizeof (ffi_closure), &code); + ffi_type* arg_types[5]; + + ffi_arg res = 0; + + ffi_type s_type; + ffi_type *s_type_elements[3]; + + ffi_type l_type; + ffi_type *l_type_elements[6]; + + struct small_tag s1; + struct small_tag s2; + struct large_tag l1; + + int si; + + s_type.size = 0; + s_type.alignment = 0; + s_type.type = FFI_TYPE_STRUCT; + s_type.elements = s_type_elements; + + s_type_elements[0] = &ffi_type_uchar; + s_type_elements[1] = &ffi_type_uchar; + s_type_elements[2] = NULL; + + l_type.size = 0; + l_type.alignment = 0; + l_type.type = FFI_TYPE_STRUCT; + l_type.elements = l_type_elements; + + l_type_elements[0] = &ffi_type_uint; + l_type_elements[1] = &ffi_type_uint; + l_type_elements[2] = &ffi_type_uint; + l_type_elements[3] = &ffi_type_uint; + l_type_elements[4] = &ffi_type_uint; + l_type_elements[5] = NULL; + + arg_types[0] = &ffi_type_sint; + arg_types[1] = &s_type; + arg_types[2] = &l_type; + arg_types[3] = &s_type; + arg_types[4] = NULL; + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, + arg_types) == FFI_OK); + + si = 4; + s1.a = 5; + s1.b = 6; + + s2.a = 20; + s2.b = 21; + + l1.a = 10; + l1.b = 11; + l1.c = 12; + l1.d = 13; + l1.e = 14; + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK); + + res = ((int (*)(int, ...))(code))(si, s1, l1, s2); + /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c new file mode 100644 index 0000000000..c1317e795f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c @@ -0,0 +1,42 @@ +/* Area: closure_call + Purpose: Check return value uchar. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg*)resp = *(unsigned char *)args[0]; + printf("%d: %d\n",*(unsigned char *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef unsigned char (*cls_ret_uchar)(unsigned char); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + unsigned char res; + + cl_arg_types[0] = &ffi_type_uchar; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_uchar, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_uchar_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_uchar)code))(127); + /* { dg-output "127: 127" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 127" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c new file mode 100644 index 0000000000..6491c5b3df --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c @@ -0,0 +1,44 @@ +/* Area: closure_call + Purpose: Test anonymous unsigned char argument. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef unsigned char T; + +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(ffi_arg *)resp = *(T *)args[0]; + + printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); + } + +typedef T (*cls_ret_T)(T, ...); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[3]; + T res; + + cl_arg_types[0] = &ffi_type_uchar; + cl_arg_types[1] = &ffi_type_uchar; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, + &ffi_type_uchar, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); + res = ((((cls_ret_T)code)(67, 4))); + /* { dg-output "67: 67 4" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 67" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c new file mode 100644 index 0000000000..885cff5c31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c @@ -0,0 +1,43 @@ +/* Area: closure_call + Purpose: Check return value uint. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg *)resp = *(unsigned int *)args[0]; + + printf("%d: %d\n",*(unsigned int *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef unsigned int (*cls_ret_uint)(unsigned int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + unsigned int res; + + cl_arg_types[0] = &ffi_type_uint; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_uint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_uint_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_uint)code))(2147483647); + /* { dg-output "2147483647: 2147483647" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 2147483647" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c new file mode 100644 index 0000000000..b04cfd19c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c @@ -0,0 +1,45 @@ +/* Area: closure_call + Purpose: Test anonymous unsigned int argument. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef unsigned int T; + +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(ffi_arg *)resp = *(T *)args[0]; + + printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]); + } + +typedef T (*cls_ret_T)(T, ...); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[3]; + T res; + + cl_arg_types[0] = &ffi_type_uint; + cl_arg_types[1] = &ffi_type_uint; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, + &ffi_type_uint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); + res = ((((cls_ret_T)code)(67, 4))); + /* { dg-output "67: 67 4" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 67" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c new file mode 100644 index 0000000000..0315082e09 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c @@ -0,0 +1,45 @@ +/* Area: closure_call + Purpose: Test anonymous unsigned long argument. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ + +#include "ffitest.h" + +typedef unsigned long T; + +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(T *)resp = *(T *)args[0]; + + printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]); + } + +typedef T (*cls_ret_T)(T, ...); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[3]; + T res; + + cl_arg_types[0] = &ffi_type_ulong; + cl_arg_types[1] = &ffi_type_ulong; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, + &ffi_type_ulong, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); + res = ((((cls_ret_T)code)(67, 4))); + /* { dg-output "67: 67 4" } */ + printf("res: %ld\n", res); + /* { dg-output "\nres: 67" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c new file mode 100644 index 0000000000..62f2cae63a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c @@ -0,0 +1,47 @@ +/* Area: closure_call + Purpose: Check return value long long. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ +#include "ffitest.h" + +static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0]; + + printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0], + *(unsigned long long *)(resp)); +} +typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + unsigned long long res; + + cl_arg_types[0] = &ffi_type_uint64; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_uint64, cl_arg_types) == FFI_OK); + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code) == FFI_OK); + res = (*((cls_ret_ulonglong)code))(214LL); + /* { dg-output "214: 1152921504606846761" } */ + printf("res: %" PRIdLL "\n", res); + /* { dg-output "\nres: 1152921504606846761" } */ + + res = (*((cls_ret_ulonglong)code))(9223372035854775808LL); + /* { dg-output "\n9223372035854775808: 8070450533247928831" } */ + printf("res: %" PRIdLL "\n", res); + /* { dg-output "\nres: 8070450533247928831" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c new file mode 100644 index 0000000000..a00100e07f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c @@ -0,0 +1,43 @@ +/* Area: closure_call + Purpose: Check return value ushort. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + *(ffi_arg*)resp = *(unsigned short *)args[0]; + + printf("%d: %d\n",*(unsigned short *)args[0], + (int)*(ffi_arg *)(resp)); +} +typedef unsigned short (*cls_ret_ushort)(unsigned short); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + unsigned short res; + + cl_arg_types[0] = &ffi_type_ushort; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_ushort, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ushort_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_ushort)code))(65535); + /* { dg-output "65535: 65535" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 65535" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c new file mode 100644 index 0000000000..37aa1064ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c @@ -0,0 +1,44 @@ +/* Area: closure_call + Purpose: Test anonymous unsigned short argument. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef unsigned short T; + +static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + *(ffi_arg *)resp = *(T *)args[0]; + + printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]); + } + +typedef T (*cls_ret_T)(T, ...); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[3]; + T res; + + cl_arg_types[0] = &ffi_type_ushort; + cl_arg_types[1] = &ffi_type_ushort; + cl_arg_types[2] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, + &ffi_type_ushort, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code) == FFI_OK); + res = ((((cls_ret_T)code)(67, 4))); + /* { dg-output "67: 67 4" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 67" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c new file mode 100644 index 0000000000..f5a73179ec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c @@ -0,0 +1,36 @@ +/* Area: ffi_prep_cif, ffi_prep_closure + Purpose: Test error return for bad ABIs. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static void +dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, + void** args __UNUSED__, void* userdata __UNUSED__) +{} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type* arg_types[1]; + + arg_types[0] = NULL; + + CHECK(ffi_prep_cif(&cif, 255, 0, &ffi_type_void, + arg_types) == FFI_BAD_ABI); + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, + arg_types) == FFI_OK); + + cif.abi= 255; + + CHECK(ffi_prep_closure_loc(pcl, &cif, dummy_fn, NULL, code) == FFI_BAD_ABI); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c new file mode 100644 index 0000000000..bf60161861 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c @@ -0,0 +1,26 @@ +/* Area: ffi_prep_cif + Purpose: Test error return for bad typedefs. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/6/2007 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +int main (void) +{ + ffi_cif cif; + ffi_type* arg_types[1]; + + ffi_type badType = ffi_type_void; + + arg_types[0] = NULL; + + badType.size = 0; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType, + arg_types) == FFI_BAD_TYPEDEF); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h new file mode 100644 index 0000000000..cfce1ad589 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h @@ -0,0 +1,138 @@ +#include +#include +#include +#include +#include +#include "fficonfig.h" + +#if defined HAVE_STDINT_H +#include +#endif + +#if defined HAVE_INTTYPES_H +#include +#endif + +#define MAX_ARGS 256 + +#define CHECK(x) (void)(!(x) ? (abort(), 1) : 0) + +/* Define macros so that compilers other than gcc can run the tests. */ +#undef __UNUSED__ +#if defined(__GNUC__) +#define __UNUSED__ __attribute__((__unused__)) +#define __STDCALL__ __attribute__((stdcall)) +#define __THISCALL__ __attribute__((thiscall)) +#define __FASTCALL__ __attribute__((fastcall)) +#define __MSABI__ __attribute__((ms_abi)) +#else +#define __UNUSED__ +#define __STDCALL__ __stdcall +#define __THISCALL__ __thiscall +#define __FASTCALL__ __fastcall +#endif + +#ifndef ABI_NUM +#define ABI_NUM FFI_DEFAULT_ABI +#define ABI_ATTR +#endif + +/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a + file open. */ +#ifdef HAVE_MMAP_ANON +# undef HAVE_MMAP_DEV_ZERO + +# include +# ifndef MAP_FAILED +# define MAP_FAILED -1 +# endif +# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) +# define MAP_ANONYMOUS MAP_ANON +# endif +# define USING_MMAP + +#endif + +#ifdef HAVE_MMAP_DEV_ZERO + +# include +# ifndef MAP_FAILED +# define MAP_FAILED -1 +# endif +# define USING_MMAP + +#endif + +/* MinGW kludge. */ +#if defined(_WIN64) | defined(_WIN32) +#define PRIdLL "I64d" +#define PRIuLL "I64u" +#else +#define PRIdLL "lld" +#define PRIuLL "llu" +#endif + +/* Tru64 UNIX kludge. */ +#if defined(__alpha__) && defined(__osf__) +/* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */ +#undef PRIdLL +#define PRIdLL "ld" +#undef PRIuLL +#define PRIuLL "lu" +#define PRId8 "hd" +#define PRIu8 "hu" +#define PRId64 "ld" +#define PRIu64 "lu" +#define PRIuPTR "lu" +#endif + +/* PA HP-UX kludge. */ +#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) +#define PRIuPTR "lu" +#endif + +/* IRIX kludge. */ +#if defined(__sgi) +/* IRIX 6.5 provides all definitions, but only for C99 + compilations. */ +#define PRId8 "hhd" +#define PRIu8 "hhu" +#if (_MIPS_SZLONG == 32) +#define PRId64 "lld" +#define PRIu64 "llu" +#endif +/* This doesn't match , which always has "lld" here, but the + arguments are uint64_t, int64_t, which are unsigned long, long for + 64-bit in . */ +#if (_MIPS_SZLONG == 64) +#define PRId64 "ld" +#define PRIu64 "lu" +#endif +/* This doesn't match , which has "u" here, but the arguments + are uintptr_t, which is always unsigned long. */ +#define PRIuPTR "lu" +#endif + +/* Solaris < 10 kludge. */ +#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) +#if defined(__arch64__) || defined (__x86_64__) +#define PRIuPTR "lu" +#else +#define PRIuPTR "u" +#endif +#endif + +/* MSVC kludge. */ +#if defined _MSC_VER +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) +#define PRIuPTR "lu" +#define PRIu8 "u" +#define PRId8 "d" +#define PRIu64 "I64u" +#define PRId64 "I64d" +#endif +#endif + +#ifndef PRIuPTR +#define PRIuPTR "u" +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float.c new file mode 100644 index 0000000000..fbc272d84f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float.c @@ -0,0 +1,59 @@ +/* Area: ffi_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static int floating(int a, float b, double c, long double d) +{ + int i; + + i = (int) ((float)a/b + ((float)c/(float)d)); + + return i; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + + float f; + signed int si1; + double d; + long double ld; + + args[0] = &ffi_type_sint; + values[0] = &si1; + args[1] = &ffi_type_float; + values[1] = &f; + args[2] = &ffi_type_double; + values[2] = &d; + args[3] = &ffi_type_longdouble; + values[3] = &ld; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_sint, args) == FFI_OK); + + si1 = 6; + f = 3.14159; + d = (double)1.0/(double)3.0; + ld = 2.71828182846L; + + floating (si1, f, d, ld); + + ffi_call(&cif, FFI_FN(floating), &rint, values); + + printf ("%d vs %d\n", (int)rint, floating (si1, f, d, ld)); + + CHECK((int)rint == floating(si1, f, d, ld)); + + exit (0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float1.c new file mode 100644 index 0000000000..c48493c6b2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float1.c @@ -0,0 +1,60 @@ +/* Area: ffi_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +#include "float.h" + +#include + +typedef union +{ + double d; + unsigned char c[sizeof (double)]; +} value_type; + +#define CANARY 0xba + +static double dblit(float f) +{ + return f/3.0; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float f; + value_type result[2]; + unsigned int i; + + args[0] = &ffi_type_float; + values[0] = &f; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_double, args) == FFI_OK); + + f = 3.14159; + + /* Put a canary in the return array. This is a regression test for + a buffer overrun. */ + memset(result[1].c, CANARY, sizeof (double)); + + ffi_call(&cif, FFI_FN(dblit), &result[0].d, values); + + /* These are not always the same!! Check for a reasonable delta */ + + CHECK(fabs(result[0].d - dblit(f)) < DBL_EPSILON); + + /* Check the canary. */ + for (i = 0; i < sizeof (double); ++i) + CHECK(result[1].c[i] == CANARY); + + exit(0); + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float2.c new file mode 100644 index 0000000000..d583e22ab8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float2.c @@ -0,0 +1,60 @@ +/* Area: ffi_call + Purpose: Check return value long double. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ +/* { dg-do run } */ + +#include "ffitest.h" +#include "float.h" + +#include + +static long double ldblit(float f) +{ + return (long double) (((long double) f)/ (long double) 3.0); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float f; + long double ld; + long double original; + + args[0] = &ffi_type_float; + values[0] = &f; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_longdouble, args) == FFI_OK); + + f = 3.14159; + +#if 1 + /* This is ifdef'd out for now. long double support under SunOS/gcc + is pretty much non-existent. You'll get the odd bus error in library + routines like printf(). */ + printf ("%Lf\n", ldblit(f)); +#endif + ld = 666; + ffi_call(&cif, FFI_FN(ldblit), &ld, values); + +#if 1 + /* This is ifdef'd out for now. long double support under SunOS/gcc + is pretty much non-existent. You'll get the odd bus error in library + routines like printf(). */ + printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON); +#endif + + /* These are not always the same!! Check for a reasonable delta */ + original = ldblit(f); + if (((ld > original) ? (ld - original) : (original - ld)) < LDBL_EPSILON) + puts("long double return value tests ok!"); + else + CHECK(0); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float3.c new file mode 100644 index 0000000000..bab3206a17 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float3.c @@ -0,0 +1,74 @@ +/* Area: ffi_call + Purpose: Check float arguments with different orders. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" +#include "float.h" + +#include + +static double floating_1(float a, double b, long double c) +{ + return (double) a + b + (double) c; +} + +static double floating_2(long double a, double b, float c) +{ + return (double) a + b + (double) c; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + double rd; + + float f; + double d; + long double ld; + + args[0] = &ffi_type_float; + values[0] = &f; + args[1] = &ffi_type_double; + values[1] = &d; + args[2] = &ffi_type_longdouble; + values[2] = &ld; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_double, args) == FFI_OK); + + f = 3.14159; + d = (double)1.0/(double)3.0; + ld = 2.71828182846L; + + floating_1 (f, d, ld); + + ffi_call(&cif, FFI_FN(floating_1), &rd, values); + + CHECK(fabs(rd - floating_1(f, d, ld)) < DBL_EPSILON); + + args[0] = &ffi_type_longdouble; + values[0] = &ld; + args[1] = &ffi_type_double; + values[1] = &d; + args[2] = &ffi_type_float; + values[2] = &f; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_double, args) == FFI_OK); + + floating_2 (ld, d, f); + + ffi_call(&cif, FFI_FN(floating_2), &rd, values); + + CHECK(fabs(rd - floating_2(ld, d, f)) < DBL_EPSILON); + + exit (0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float4.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float4.c new file mode 100644 index 0000000000..0dd6d85e7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float4.c @@ -0,0 +1,62 @@ +/* Area: ffi_call + Purpose: Check denorm double value. + Limitations: none. + PR: PR26483. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +/* { dg-options "-mieee" { target alpha*-*-* } } */ + +#include "ffitest.h" +#include "float.h" + +typedef union +{ + double d; + unsigned char c[sizeof (double)]; +} value_type; + +#define CANARY 0xba + +static double dblit(double d) +{ + return d; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + double d; + value_type result[2]; + unsigned int i; + + args[0] = &ffi_type_double; + values[0] = &d; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_double, args) == FFI_OK); + + d = DBL_MIN / 2; + + /* Put a canary in the return array. This is a regression test for + a buffer overrun. */ + memset(result[1].c, CANARY, sizeof (double)); + + ffi_call(&cif, FFI_FN(dblit), &result[0].d, values); + + /* The standard delta check doesn't work for denorms. Since we didn't do + any arithmetic, we should get the original result back, and hence an + exact check should be OK here. */ + + CHECK(result[0].d == dblit(d)); + + /* Check the canary. */ + for (i = 0; i < sizeof (double); ++i) + CHECK(result[1].c[i] == CANARY); + + exit(0); + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c new file mode 100644 index 0000000000..5acff91f66 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c @@ -0,0 +1,107 @@ +/* Area: fp and variadics + Purpose: check fp inputs and returns work on variadics, even the fixed params + Limitations: None + PR: none + Originator: 2011-01-25 + + Intended to stress the difference in ABI on ARM vfp +*/ + +/* { dg-do run } */ + +#include + +#include "ffitest.h" + +/* prints out all the parameters, and returns the sum of them all. + * 'x' is the number of variadic parameters all of which are double in this test + */ +double float_va_fn(unsigned int x, double y,...) +{ + double total=0.0; + va_list ap; + unsigned int i; + + total+=(double)x; + total+=y; + + printf("%u: %.1f :", x, y); + + va_start(ap, y); + for(i=0;i +#include +#include + +static float ABI_ATTR many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13) +{ +#if 0 + printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n", + (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, + (double) f6, (double) f7, (double) f8, (double) f9, (double) f10, + (double) f11, (double) f12, (double) f13); +#endif + + return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[13]; + void *values[13]; + float fa[13]; + float f, ff; + int i; + + for (i = 0; i < 13; i++) + { + args[i] = &ffi_type_float; + values[i] = &fa[i]; + fa[i] = (float) i; + } + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 13, + &ffi_type_float, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(many), &f, values); + + ff = many(fa[0], fa[1], + fa[2], fa[3], + fa[4], fa[5], + fa[6], fa[7], + fa[8], fa[9], + fa[10],fa[11],fa[12]); + + if (fabs(f - ff) < FLT_EPSILON) + exit(0); + else + abort(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many2.c new file mode 100644 index 0000000000..1c85746e4c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many2.c @@ -0,0 +1,57 @@ +/* Area: ffi_call + Purpose: Check uint8_t arguments. + Limitations: none. + PR: PR45677. + Originator: Dan Witte 20100916 */ + +/* { dg-do run } */ + +#include "ffitest.h" + +#define NARGS 7 + +typedef unsigned char u8; + +#ifdef __GNUC__ +__attribute__((noinline)) +#endif +uint8_t +foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d, + uint8_t e, uint8_t f, uint8_t g) +{ + return a + b + c + d + e + f + g; +} + +uint8_t ABI_ATTR +bar (uint8_t a, uint8_t b, uint8_t c, uint8_t d, + uint8_t e, uint8_t f, uint8_t g) +{ + return foo (a, b, c, d, e, f, g); +} + +int +main (void) +{ + ffi_type *ffitypes[NARGS]; + int i; + ffi_cif cif; + ffi_arg result = 0; + uint8_t args[NARGS]; + void *argptrs[NARGS]; + + for (i = 0; i < NARGS; ++i) + ffitypes[i] = &ffi_type_uint8; + + CHECK (ffi_prep_cif (&cif, ABI_NUM, NARGS, + &ffi_type_uint8, ffitypes) == FFI_OK); + + for (i = 0; i < NARGS; ++i) + { + args[i] = i; + argptrs[i] = &args[i]; + } + ffi_call (&cif, FFI_FN (bar), &result, argptrs); + + CHECK (result == 21); + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c new file mode 100644 index 0000000000..4ef8c8ab28 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c @@ -0,0 +1,70 @@ +/* Area: ffi_call + Purpose: Check return value double, with many arguments + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +#include +#include +#include + +static double many(double f1, + double f2, + double f3, + double f4, + double f5, + double f6, + double f7, + double f8, + double f9, + double f10, + double f11, + double f12, + double f13) +{ +#if 0 + printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n", + (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, + (double) f6, (double) f7, (double) f8, (double) f9, (double) f10, + (double) f11, (double) f12, (double) f13); +#endif + + return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[13]; + void *values[13]; + double fa[13]; + double f, ff; + int i; + + for (i = 0; i < 13; i++) + { + args[i] = &ffi_type_double; + values[i] = &fa[i]; + fa[i] = (double) i; + } + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, + &ffi_type_double, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(many), &f, values); + + ff = many(fa[0], fa[1], + fa[2], fa[3], + fa[4], fa[5], + fa[6], fa[7], + fa[8], fa[9], + fa[10],fa[11],fa[12]); + if (fabs(f - ff) < FLT_EPSILON) + exit(0); + else + abort(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c new file mode 100644 index 0000000000..85ec36ecbe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c @@ -0,0 +1,78 @@ +/* Area: ffi_call + Purpose: Check return value double, with many arguments + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +#include +#include +#include + +static double many(double f1, + double f2, + long int i1, + double f3, + double f4, + long int i2, + double f5, + double f6, + long int i3, + double f7, + double f8, + long int i4, + double f9, + double f10, + long int i5, + double f11, + double f12, + long int i6, + double f13) +{ + return ((double) (i1 + i2 + i3 + i4 + i5 + i6) + (f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[19]; + void *values[19]; + double fa[19]; + long int la[19]; + double f, ff; + int i; + + for (i = 0; i < 19; i++) + { + if( (i - 2) % 3 == 0) { + args[i] = &ffi_type_slong; + la[i] = (long int) i; + values[i] = &la[i]; + } + else { + args[i] = &ffi_type_double; + fa[i] = (double) i; + values[i] = &fa[i]; + } + } + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 19, + &ffi_type_double, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(many), &f, values); + + ff = many(fa[0], fa[1], la[2], + fa[3], fa[4], la[5], + fa[6], fa[7], la[8], + fa[9], fa[10], la[11], + fa[12], fa[13], la[14], + fa[15], fa[16], la[17], + fa[18]); + if (fabs(f - ff) < FLT_EPSILON) + exit(0); + else + abort(); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/negint.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/negint.c new file mode 100644 index 0000000000..6e2f26fc10 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/negint.c @@ -0,0 +1,52 @@ +/* Area: ffi_call + Purpose: Check that negative integers are passed correctly. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static int checking(int a, short b, signed char c) +{ + + return (a < 0 && b < 0 && c < 0); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + + signed int si; + signed short ss; + signed char sc; + + args[0] = &ffi_type_sint; + values[0] = &si; + args[1] = &ffi_type_sshort; + values[1] = &ss; + args[2] = &ffi_type_schar; + values[2] = ≻ + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_sint, args) == FFI_OK); + + si = -6; + ss = -12; + sc = -1; + + checking (si, ss, sc); + + ffi_call(&cif, FFI_FN(checking), &rint, values); + + printf ("%d vs %d\n", (int)rint, checking (si, ss, sc)); + + CHECK(rint != 0); + + exit (0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c new file mode 100644 index 0000000000..c15e3a0338 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c @@ -0,0 +1,152 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_16byte1 { + double a; + float b; + int c; +} cls_struct_16byte1; + +typedef struct cls_struct_16byte2 { + int ii; + double dd; + float ff; +} cls_struct_16byte2; + +typedef struct cls_struct_combined { + cls_struct_16byte1 d; + cls_struct_16byte2 e; +} cls_struct_combined; + +cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, + struct cls_struct_16byte2 b1, + struct cls_struct_combined b2) +{ + struct cls_struct_combined result; + + result.d.a = b0.a + b1.dd + b2.d.a; + result.d.b = b0.b + b1.ff + b2.d.b; + result.d.c = b0.c + b1.ii + b2.d.c; + result.e.ii = b0.c + b1.ii + b2.e.ii; + result.e.dd = b0.a + b1.dd + b2.e.dd; + result.e.ff = b0.b + b1.ff + b2.e.ff; + + printf("%g %g %d %d %g %g %g %g %d %d %g %g: %g %g %d %d %g %g\n", + b0.a, b0.b, b0.c, + b1.ii, b1.dd, b1.ff, + b2.d.a, b2.d.b, b2.d.c, + b2.e.ii, b2.e.dd, b2.e.ff, + result.d.a, result.d.b, result.d.c, + result.e.ii, result.e.dd, result.e.ff); + + return result; +} + +static void +cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_16byte1 b0; + struct cls_struct_16byte2 b1; + struct cls_struct_combined b2; + + b0 = *(struct cls_struct_16byte1*)(args[0]); + b1 = *(struct cls_struct_16byte2*)(args[1]); + b2 = *(struct cls_struct_combined*)(args[2]); + + + *(cls_struct_combined*)resp = cls_struct_combined_fn(b0, b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type* cls_struct_fields1[5]; + ffi_type* cls_struct_fields2[5]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; + struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; + struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, + {3, 1.0, 8.0}}; + struct cls_struct_combined res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_float; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = NULL; + + cls_struct_fields1[0] = &ffi_type_sint; + cls_struct_fields1[1] = &ffi_type_double; + cls_struct_fields1[2] = &ffi_type_float; + cls_struct_fields1[3] = NULL; + + cls_struct_fields2[0] = &cls_struct_type; + cls_struct_fields2[1] = &cls_struct_type1; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type2, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_combined_fn), &res_dbl, args_dbl); + /* { dg-output "9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ + CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); + CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); + CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); + CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_combined(*)(cls_struct_16byte1, + cls_struct_16byte2, + cls_struct_combined)) + (code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ + CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); + CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); + CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); + CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c new file mode 100644 index 0000000000..477a6b9bde --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c @@ -0,0 +1,161 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_16byte1 { + double a; + float b; + int c; +} cls_struct_16byte1; + +typedef struct cls_struct_16byte2 { + int ii; + double dd; + float ff; +} cls_struct_16byte2; + +typedef struct cls_struct_combined { + cls_struct_16byte1 d; + cls_struct_16byte2 e; +} cls_struct_combined; + +cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, + struct cls_struct_16byte2 b1, + struct cls_struct_combined b2, + struct cls_struct_16byte1 b3) +{ + struct cls_struct_combined result; + + result.d.a = b0.a + b1.dd + b2.d.a; + result.d.b = b0.b + b1.ff + b2.d.b; + result.d.c = b0.c + b1.ii + b2.d.c; + result.e.ii = b0.c + b1.ii + b2.e.ii; + result.e.dd = b0.a + b1.dd + b2.e.dd; + result.e.ff = b0.b + b1.ff + b2.e.ff; + + printf("%g %g %d %d %g %g %g %g %d %d %g %g %g %g %d: %g %g %d %d %g %g\n", + b0.a, b0.b, b0.c, + b1.ii, b1.dd, b1.ff, + b2.d.a, b2.d.b, b2.d.c, + b2.e.ii, b2.e.dd, b2.e.ff, + b3.a, b3.b, b3.c, + result.d.a, result.d.b, result.d.c, + result.e.ii, result.e.dd, result.e.ff); + + return result; +} + +static void +cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct cls_struct_16byte1 b0; + struct cls_struct_16byte2 b1; + struct cls_struct_combined b2; + struct cls_struct_16byte1 b3; + + b0 = *(struct cls_struct_16byte1*)(args[0]); + b1 = *(struct cls_struct_16byte2*)(args[1]); + b2 = *(struct cls_struct_combined*)(args[2]); + b3 = *(struct cls_struct_16byte1*)(args[3]); + + + *(cls_struct_combined*)resp = cls_struct_combined_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[5]; + ffi_type* cls_struct_fields1[5]; + ffi_type* cls_struct_fields2[5]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6}; + struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0}; + struct cls_struct_combined g_dbl = {{4.0, 5.0, 6}, + {3, 1.0, 8.0}}; + struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4}; + struct cls_struct_combined res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_float; + cls_struct_fields[2] = &ffi_type_sint; + cls_struct_fields[3] = NULL; + + cls_struct_fields1[0] = &ffi_type_sint; + cls_struct_fields1[1] = &ffi_type_double; + cls_struct_fields1[2] = &ffi_type_float; + cls_struct_fields1[3] = NULL; + + cls_struct_fields2[0] = &cls_struct_type; + cls_struct_fields2[1] = &cls_struct_type1; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type2, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_combined_fn), &res_dbl, args_dbl); + /* { dg-output "9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */ + CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); + CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); + CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); + CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_combined(*)(cls_struct_16byte1, + cls_struct_16byte2, + cls_struct_combined, + cls_struct_16byte1)) + (code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */ + CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); + CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); + CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); + CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + /* CHECK( 1 == 0); */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c new file mode 100644 index 0000000000..3cf2b44abe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c @@ -0,0 +1,134 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned long long a; + unsigned char b; +} A; + +typedef struct B { + unsigned char y; + struct A x; + unsigned int z; +} B; + +typedef struct C { + unsigned long long d; + unsigned char e; +} C; + +static B B_fn(struct A b2, struct B b3, struct C b4) +{ + struct B result; + + result.x.a = b2.a + b3.x.a + b3.z + b4.d; + result.x.b = b2.b + b3.x.b + b3.y + b4.e; + result.y = b2.b + b3.x.b + b4.e; + result.z = 0; + + printf("%d %d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, b3.z, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + struct C b2; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + b2 = *(struct C*)(args[2]); + + *(B*)resp = B_fn(b0, b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[4]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[4]; + ffi_type* cls_struct_fields2[3]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[4]; + + struct A e_dbl = { 1LL, 7}; + struct B f_dbl = { 99, {12LL , 127}, 255}; + struct C g_dbl = { 2LL, 9}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_uint64; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &ffi_type_uchar; + cls_struct_fields1[1] = &cls_struct_type; + cls_struct_fields1[2] = &ffi_type_uint; + cls_struct_fields1[3] = NULL; + + cls_struct_fields2[0] = &ffi_type_uint64; + cls_struct_fields2[1] = &ffi_type_uchar; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99 255 2 9: 270 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + f_dbl.z + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n1 7 12 127 99 255 2 9: 270 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + f_dbl.z + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c new file mode 100644 index 0000000000..351049382c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c @@ -0,0 +1,121 @@ +/* Area: ffi_call, closure_call + Purpose: Check parameter passing with nested structs + of a single type. This tests the special cases + for homogeneous floating-point aggregates in the + AArch64 PCS. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + float a_x; + float a_y; +} A; + +typedef struct B { + float b_x; + float b_y; +} B; + +typedef struct C { + A a; + B b; +} C; + +static C C_fn (int x, int y, int z, C source, int i, int j, int k) +{ + C result; + result.a.a_x = source.a.a_x; + result.a.a_y = source.a.a_y; + result.b.b_x = source.b.b_x; + result.b.b_y = source.b.b_y; + + printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k); + + printf ("%.1f, %.1f, %.1f, %.1f, " + "%.1f, %.1f, %.1f, %.1f\n", + source.a.a_x, source.a.a_y, + source.b.b_x, source.b.b_y, + result.a.a_x, result.a.a_y, + result.b.b_x, result.b.b_y); + + return result; +} + +int main (void) +{ + ffi_cif cif; + + ffi_type* struct_fields_source_a[3]; + ffi_type* struct_fields_source_b[3]; + ffi_type* struct_fields_source_c[3]; + ffi_type* arg_types[8]; + + ffi_type struct_type_a, struct_type_b, struct_type_c; + + struct A source_fld_a = {1.0, 2.0}; + struct B source_fld_b = {4.0, 8.0}; + int k = 1; + + struct C result; + struct C source = {source_fld_a, source_fld_b}; + + struct_type_a.size = 0; + struct_type_a.alignment = 0; + struct_type_a.type = FFI_TYPE_STRUCT; + struct_type_a.elements = struct_fields_source_a; + + struct_type_b.size = 0; + struct_type_b.alignment = 0; + struct_type_b.type = FFI_TYPE_STRUCT; + struct_type_b.elements = struct_fields_source_b; + + struct_type_c.size = 0; + struct_type_c.alignment = 0; + struct_type_c.type = FFI_TYPE_STRUCT; + struct_type_c.elements = struct_fields_source_c; + + struct_fields_source_a[0] = &ffi_type_float; + struct_fields_source_a[1] = &ffi_type_float; + struct_fields_source_a[2] = NULL; + + struct_fields_source_b[0] = &ffi_type_float; + struct_fields_source_b[1] = &ffi_type_float; + struct_fields_source_b[2] = NULL; + + struct_fields_source_c[0] = &struct_type_a; + struct_fields_source_c[1] = &struct_type_b; + struct_fields_source_c[2] = NULL; + + arg_types[0] = &ffi_type_sint32; + arg_types[1] = &ffi_type_sint32; + arg_types[2] = &ffi_type_sint32; + arg_types[3] = &struct_type_c; + arg_types[4] = &ffi_type_sint32; + arg_types[5] = &ffi_type_sint32; + arg_types[6] = &ffi_type_sint32; + arg_types[7] = NULL; + + void *args[7]; + args[0] = &k; + args[1] = &k; + args[2] = &k; + args[3] = &source; + args[4] = &k; + args[5] = &k; + args[6] = &k; + CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, 7, &struct_type_c, + arg_types) == FFI_OK); + + ffi_call (&cif, FFI_FN (C_fn), &result, args); + /* { dg-output "1, 1, 1, 1, 1, 1\n" } */ + /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */ + CHECK (result.a.a_x == source.a.a_x); + CHECK (result.a.a_y == source.a.a_y); + CHECK (result.b.b_x == source.b.b_x); + CHECK (result.b.b_y == source.b.b_y); + exit (0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c new file mode 100644 index 0000000000..69268cdb8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c @@ -0,0 +1,110 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20030911 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned long a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +B B_fn(struct A b0, struct B b1) +{ + struct B result; + + result.x.a = b0.a + b1.x.a; + result.x.b = b0.b + b1.x.b + b1.y; + result.y = b0.b + b1.x.b; + + printf("%lu %d %lu %d %d: %lu %d %d\n", b0.a, b0.b, b1.x.a, b1.x.b, b1.y, + result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + + *(B*)resp = B_fn(b0, b1); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type cls_struct_type, cls_struct_type1; + ffi_type* dbl_arg_types[3]; + + struct A e_dbl = { 1, 7}; + struct B f_dbl = {{12 , 127}, 99}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_fields[0] = &ffi_type_ulong; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c new file mode 100644 index 0000000000..ab18cad733 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c @@ -0,0 +1,111 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20030911 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned long long a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +B B_fn(struct A b0, struct B b1) +{ + struct B result; + + result.x.a = b0.a + b1.x.a; + result.x.b = b0.b + b1.x.b + b1.y; + result.y = b0.b + b1.x.b; + + printf("%d %d %d %d %d: %d %d %d\n", (int)b0.a, b0.b, + (int)b1.x.a, b1.x.b, b1.y, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + + *(B*)resp = B_fn(b0, b1); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type cls_struct_type, cls_struct_type1; + ffi_type* dbl_arg_types[3]; + + struct A e_dbl = { 1LL, 7}; + struct B f_dbl = {{12LL , 127}, 99}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_fields[0] = &ffi_type_uint64; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c new file mode 100644 index 0000000000..2ffb4d65a0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c @@ -0,0 +1,111 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: PR 25630. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + double a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +static B B_fn(struct A b2, struct B b3) +{ + struct B result; + + result.x.a = b2.a + b3.x.a; + result.x.b = b2.b + b3.x.b + b3.y; + result.y = b2.b + b3.x.b; + + printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + + *(B*)resp = B_fn(b0, b1); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type cls_struct_type, cls_struct_type1; + ffi_type* dbl_arg_types[3]; + + struct A e_dbl = { 1.0, 7}; + struct B f_dbl = {{12.0 , 127}, 99}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c new file mode 100644 index 0000000000..6c79845d98 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c @@ -0,0 +1,112 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + long double a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +static B B_fn(struct A b2, struct B b3) +{ + struct B result; + + result.x.a = b2.a + b3.x.a; + result.x.b = b2.b + b3.x.b + b3.y; + result.y = b2.b + b3.x.b; + + printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + + *(B*)resp = B_fn(b0, b1); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type cls_struct_type, cls_struct_type1; + ffi_type* dbl_arg_types[3]; + + struct A e_dbl = { 1.0, 7}; + struct B f_dbl = {{12.0 , 127}, 99}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_fields[0] = &ffi_type_longdouble; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c new file mode 100644 index 0000000000..59d35796f8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c @@ -0,0 +1,131 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: PR 25630. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + double a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +typedef struct C { + long d; + unsigned char e; +} C; + +static B B_fn(struct A b2, struct B b3, struct C b4) +{ + struct B result; + + result.x.a = b2.a + b3.x.a + b4.d; + result.x.b = b2.b + b3.x.b + b3.y + b4.e; + result.y = b2.b + b3.x.b + b4.e; + + printf("%d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + struct C b2; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + b2 = *(struct C*)(args[2]); + + *(B*)resp = B_fn(b0, b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[4]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type* cls_struct_fields2[3]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[4]; + + struct A e_dbl = { 1.0, 7}; + struct B f_dbl = {{12.0 , 127}, 99}; + struct C g_dbl = { 2, 9}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + cls_struct_fields2[0] = &ffi_type_slong; + cls_struct_fields2[1] = &ffi_type_uchar; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c new file mode 100644 index 0000000000..27595e6f5c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c @@ -0,0 +1,111 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned long long a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +static B B_fn(struct A b2, struct B b3) +{ + struct B result; + + result.x.a = b2.a + b3.x.a; + result.x.b = b2.b + b3.x.b + b3.y; + result.y = b2.b + b3.x.b; + + printf("%d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + + *(B*)resp = B_fn(b0, b1); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[3]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type cls_struct_type, cls_struct_type1; + ffi_type* dbl_arg_types[3]; + + struct A e_dbl = { 1LL, 7}; + struct B f_dbl = {{12.0 , 127}, 99}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_fields[0] = &ffi_type_uint64; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n1 7 12 127 99: 13 233 134" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c new file mode 100644 index 0000000000..0e6c68281e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c @@ -0,0 +1,131 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned long long a; + unsigned char b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +typedef struct C { + unsigned long long d; + unsigned char e; +} C; + +static B B_fn(struct A b2, struct B b3, struct C b4) +{ + struct B result; + + result.x.a = b2.a + b3.x.a + b4.d; + result.x.b = b2.b + b3.x.b + b3.y + b4.e; + result.y = b2.b + b3.x.b + b4.e; + + printf("%d %d %d %d %d %d %d: %d %d %d\n", (int)b2.a, b2.b, + (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + struct C b2; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + b2 = *(struct C*)(args[2]); + + *(B*)resp = B_fn(b0, b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[4]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type* cls_struct_fields2[3]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[4]; + + struct A e_dbl = { 1LL, 7}; + struct B f_dbl = {{12LL , 127}, 99}; + struct C g_dbl = { 2LL, 9}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_uint64; + cls_struct_fields[1] = &ffi_type_uchar; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + cls_struct_fields2[0] = &ffi_type_uint64; + cls_struct_fields2[1] = &ffi_type_uchar; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c new file mode 100644 index 0000000000..5f7ac67752 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c @@ -0,0 +1,131 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Contains structs as parameter of the struct itself. + Sample taken from Alan Modras patch to src/prep_cif.c. + Limitations: none. + PR: none. + Originator: 20051010 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct A { + unsigned char a; + unsigned long long b; +} A; + +typedef struct B { + struct A x; + unsigned char y; +} B; + +typedef struct C { + unsigned long d; + unsigned char e; +} C; + +static B B_fn(struct A b2, struct B b3, struct C b4) +{ + struct B result; + + result.x.a = b2.a + b3.x.a + b4.d; + result.x.b = b2.b + b3.x.b + b3.y + b4.e; + result.y = b2.b + b3.x.b + b4.e; + + printf("%d %d %d %d %d %d %d: %d %d %d\n", b2.a, (int)b2.b, + b3.x.a, (int)b3.x.b, b3.y, (int)b4.d, b4.e, + result.x.a, (int)result.x.b, result.y); + + return result; +} + +static void +B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct A b0; + struct B b1; + struct C b2; + + b0 = *(struct A*)(args[0]); + b1 = *(struct B*)(args[1]); + b2 = *(struct C*)(args[2]); + + *(B*)resp = B_fn(b0, b1, b2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[4]; + ffi_type* cls_struct_fields[3]; + ffi_type* cls_struct_fields1[3]; + ffi_type* cls_struct_fields2[3]; + ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2; + ffi_type* dbl_arg_types[4]; + + struct A e_dbl = { 1, 7LL}; + struct B f_dbl = {{12.0 , 127}, 99}; + struct C g_dbl = { 2, 9}; + + struct B res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_type1.size = 0; + cls_struct_type1.alignment = 0; + cls_struct_type1.type = FFI_TYPE_STRUCT; + cls_struct_type1.elements = cls_struct_fields1; + + cls_struct_type2.size = 0; + cls_struct_type2.alignment = 0; + cls_struct_type2.type = FFI_TYPE_STRUCT; + cls_struct_type2.elements = cls_struct_fields2; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &ffi_type_uint64; + cls_struct_fields[2] = NULL; + + cls_struct_fields1[0] = &cls_struct_type; + cls_struct_fields1[1] = &ffi_type_uchar; + cls_struct_fields1[2] = NULL; + + cls_struct_fields2[0] = &ffi_type_ulong; + cls_struct_fields2[1] = &ffi_type_uchar; + cls_struct_fields2[2] = NULL; + + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type1; + dbl_arg_types[2] = &cls_struct_type2; + dbl_arg_types[3] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &cls_struct_type1, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = NULL; + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(A, B, C))(code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n1 7 12 127 99 2 9: 15 242 143" } */ + CHECK( res_dbl.x.a == (e_dbl.a + f_dbl.x.a + g_dbl.d)); + CHECK( res_dbl.x.b == (e_dbl.b + f_dbl.x.b + f_dbl.y + g_dbl.e)); + CHECK( res_dbl.y == (e_dbl.b + f_dbl.x.b + g_dbl.e)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c new file mode 100644 index 0000000000..23d88b35d5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c @@ -0,0 +1,46 @@ +/* Area: Struct layout + Purpose: Test ffi_get_struct_offsets + Limitations: none. + PR: none. + Originator: Tom Tromey. */ + +/* { dg-do run } */ +#include "ffitest.h" +#include + +struct test_1 +{ + char c; + float f; + char c2; + int i; +}; + +int +main (void) +{ + ffi_type test_1_type; + ffi_type *test_1_elements[5]; + size_t test_1_offsets[4]; + + test_1_elements[0] = &ffi_type_schar; + test_1_elements[1] = &ffi_type_float; + test_1_elements[2] = &ffi_type_schar; + test_1_elements[3] = &ffi_type_sint; + test_1_elements[4] = NULL; + + test_1_type.size = 0; + test_1_type.alignment = 0; + test_1_type.type = FFI_TYPE_STRUCT; + test_1_type.elements = test_1_elements; + + CHECK (ffi_get_struct_offsets (FFI_DEFAULT_ABI, &test_1_type, test_1_offsets) + == FFI_OK); + CHECK (test_1_type.size == sizeof (struct test_1)); + CHECK (offsetof (struct test_1, c) == test_1_offsets[0]); + CHECK (offsetof (struct test_1, f) == test_1_offsets[1]); + CHECK (offsetof (struct test_1, c2) == test_1_offsets[2]); + CHECK (offsetof (struct test_1, i) == test_1_offsets[3]); + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c new file mode 100644 index 0000000000..7da1621cd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c @@ -0,0 +1,127 @@ +/* Area: ffi_call + Purpose: Reproduce bug found in python ctypes + Limitations: none. + PR: Fedora 1174037 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct { + long x; + long y; +} POINT; + +typedef struct { + long left; + long top; + long right; + long bottom; +} RECT; + +static RECT ABI_ATTR pr_test(int i __UNUSED__, RECT ar __UNUSED__, + RECT* br __UNUSED__, POINT cp __UNUSED__, + RECT dr __UNUSED__, RECT *er __UNUSED__, + POINT fp, RECT gr __UNUSED__) +{ + RECT result; + + result.left = fp.x; + result.right = fp.y; + result.top = fp.x; + result.bottom = fp.y; + + return result; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type point_type, rect_type; + ffi_type *point_type_elements[3]; + ffi_type *rect_type_elements[5]; + + int i; + POINT cp, fp; + RECT ar, br, dr, er, gr; + RECT *p1, *p2; + + /* This is a hack to get a properly aligned result buffer */ + RECT *rect_result = + (RECT *) malloc (sizeof(RECT)); + + point_type.size = 0; + point_type.alignment = 0; + point_type.type = FFI_TYPE_STRUCT; + point_type.elements = point_type_elements; + point_type_elements[0] = &ffi_type_slong; + point_type_elements[1] = &ffi_type_slong; + point_type_elements[2] = NULL; + + rect_type.size = 0; + rect_type.alignment = 0; + rect_type.type = FFI_TYPE_STRUCT; + rect_type.elements = rect_type_elements; + rect_type_elements[0] = &ffi_type_slong; + rect_type_elements[1] = &ffi_type_slong; + rect_type_elements[2] = &ffi_type_slong; + rect_type_elements[3] = &ffi_type_slong; + rect_type_elements[4] = NULL; + + args[0] = &ffi_type_sint; + args[1] = &rect_type; + args[2] = &ffi_type_pointer; + args[3] = &point_type; + args[4] = &rect_type; + args[5] = &ffi_type_pointer; + args[6] = &point_type; + args[7] = &rect_type; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 8, &rect_type, args) == FFI_OK); + + i = 1; + ar.left = 2; + ar.right = 3; + ar.top = 4; + ar.bottom = 5; + br.left = 6; + br.right = 7; + br.top = 8; + br.bottom = 9; + cp.x = 10; + cp.y = 11; + dr.left = 12; + dr.right = 13; + dr.top = 14; + dr.bottom = 15; + er.left = 16; + er.right = 17; + er.top = 18; + er.bottom = 19; + fp.x = 20; + fp.y = 21; + gr.left = 22; + gr.right = 23; + gr.top = 24; + gr.bottom = 25; + + values[0] = &i; + values[1] = &ar; + p1 = &br; + values[2] = &p1; + values[3] = &cp; + values[4] = &dr; + p2 = &er; + values[5] = &p2; + values[6] = &fp; + values[7] = &gr; + + ffi_call (&cif, FFI_FN(pr_test), rect_result, values); + + CHECK(rect_result->top == 20); + + free (rect_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c new file mode 100644 index 0000000000..6a91555a1f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c @@ -0,0 +1,90 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure passing with different structure size. + Limitations: none. + PR: none. + Originator: 20030828 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct my_ffi_struct { + double a; + double b; + double c; +} my_ffi_struct; + +my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2) +{ + struct my_ffi_struct result; + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + + printf("%g %g %g %g %g %g: %g %g %g\n", a1.a, a1.b, a1.c, + a2.a, a2.b, a2.c, result.a, result.b, result.c); + + return result; +} + +void stub(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + struct my_ffi_struct a1; + struct my_ffi_struct a2; + + a1 = *(struct my_ffi_struct*)(args[0]); + a2 = *(struct my_ffi_struct*)(args[1]); + + *(my_ffi_struct *)resp = callee(a1, a2); +} + + +int main(void) +{ + ffi_type* my_ffi_struct_fields[4]; + ffi_type my_ffi_struct_type; + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[4]; + ffi_type* arg_types[3]; + + struct my_ffi_struct g = { 1.0, 2.0, 3.0 }; + struct my_ffi_struct f = { 1.0, 2.0, 3.0 }; + struct my_ffi_struct res; + + my_ffi_struct_type.size = 0; + my_ffi_struct_type.alignment = 0; + my_ffi_struct_type.type = FFI_TYPE_STRUCT; + my_ffi_struct_type.elements = my_ffi_struct_fields; + + my_ffi_struct_fields[0] = &ffi_type_double; + my_ffi_struct_fields[1] = &ffi_type_double; + my_ffi_struct_fields[2] = &ffi_type_double; + my_ffi_struct_fields[3] = NULL; + + arg_types[0] = &my_ffi_struct_type; + arg_types[1] = &my_ffi_struct_type; + arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &my_ffi_struct_type, + arg_types) == FFI_OK); + + args[0] = &g; + args[1] = &f; + args[2] = NULL; + ffi_call(&cif, FFI_FN(callee), &res, args); + /* { dg-output "1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res.a, res.b, res.c); + /* { dg-output "\nres: 2 4 6" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, stub, NULL, code) == FFI_OK); + + res = ((my_ffi_struct(*)(struct my_ffi_struct, struct my_ffi_struct))(code))(g, f); + /* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res.a, res.b, res.c); + /* { dg-output "\nres: 2 4 6" } */ + + exit(0);; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c new file mode 100644 index 0000000000..44561615dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c @@ -0,0 +1,59 @@ +/* Area: ffi_call + Purpose: Promotion test. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +static int promotion(signed char sc, signed short ss, + unsigned char uc, unsigned short us) +{ + int r = (int) sc + (int) ss + (int) uc + (int) us; + + return r; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + signed char sc; + unsigned char uc; + signed short ss; + unsigned short us; + unsigned long ul; + + args[0] = &ffi_type_schar; + args[1] = &ffi_type_sshort; + args[2] = &ffi_type_uchar; + args[3] = &ffi_type_ushort; + values[0] = ≻ + values[1] = &ss; + values[2] = &uc; + values[3] = &us; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_sint, args) == FFI_OK); + + us = 0; + ul = 0; + + for (sc = (signed char) -127; + sc <= (signed char) 120; sc += 1) + for (ss = -30000; ss <= 30000; ss += 10000) + for (uc = (unsigned char) 0; + uc <= (unsigned char) 200; uc += 20) + for (us = 0; us <= 60000; us += 10000) + { + ul++; + ffi_call(&cif, FFI_FN(promotion), &rint, values); + CHECK((int)rint == (signed char) sc + (signed short) ss + + (unsigned char) uc + (unsigned short) us); + } + printf("%lu promotion tests run\n", ul); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c new file mode 100644 index 0000000000..e29bd6c283 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c @@ -0,0 +1,114 @@ +/* Area: ffi_call + Purpose: Check different structures. + Limitations: none. + PR: none. + Originator: Ronald Oussoren 20030824 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct Point { + float x; + float y; +} Point; + +typedef struct Size { + float h; + float w; +} Size; + +typedef struct Rect { + Point o; + Size s; +} Rect; + +int doit(int o, char* s, Point p, Rect r, int last) +{ + printf("CALLED WITH %d %s {%f %f} {{%f %f} {%f %f}} %d\n", + o, s, p.x, p.y, r.o.x, r.o.y, r.s.h, r.s.w, last); + return 42; +} + + +int main(void) +{ + ffi_type point_type; + ffi_type size_type; + ffi_type rect_type; + ffi_cif cif; + ffi_type* arglist[6]; + void* values[6]; + int r; + + /* + * First set up FFI types for the 3 struct types + */ + + point_type.size = 0; /*sizeof(Point);*/ + point_type.alignment = 0; /*__alignof__(Point);*/ + point_type.type = FFI_TYPE_STRUCT; + point_type.elements = malloc(3 * sizeof(ffi_type*)); + point_type.elements[0] = &ffi_type_float; + point_type.elements[1] = &ffi_type_float; + point_type.elements[2] = NULL; + + size_type.size = 0;/* sizeof(Size);*/ + size_type.alignment = 0;/* __alignof__(Size);*/ + size_type.type = FFI_TYPE_STRUCT; + size_type.elements = malloc(3 * sizeof(ffi_type*)); + size_type.elements[0] = &ffi_type_float; + size_type.elements[1] = &ffi_type_float; + size_type.elements[2] = NULL; + + rect_type.size = 0;/*sizeof(Rect);*/ + rect_type.alignment =0;/* __alignof__(Rect);*/ + rect_type.type = FFI_TYPE_STRUCT; + rect_type.elements = malloc(3 * sizeof(ffi_type*)); + rect_type.elements[0] = &point_type; + rect_type.elements[1] = &size_type; + rect_type.elements[2] = NULL; + + /* + * Create a CIF + */ + arglist[0] = &ffi_type_sint; + arglist[1] = &ffi_type_pointer; + arglist[2] = &point_type; + arglist[3] = &rect_type; + arglist[4] = &ffi_type_sint; + arglist[5] = NULL; + + r = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, + 5, &ffi_type_sint, arglist); + if (r != FFI_OK) { + abort(); + } + + + /* And call the function through the CIF */ + + { + Point p = { 1.0, 2.0 }; + Rect r = { { 9.0, 10.0}, { -1.0, -2.0 } }; + int o = 0; + int l = 42; + char* m = "myMethod"; + ffi_arg result; + + values[0] = &o; + values[1] = &m; + values[2] = &p; + values[3] = &r; + values[4] = &l; + values[5] = NULL; + + printf("CALLING WITH %d %s {%f %f} {{%f %f} {%f %f}} %d\n", + o, m, p.x, p.y, r.o.x, r.o.y, r.s.h, r.s.w, l); + + ffi_call(&cif, FFI_FN(doit), &result, values); + + printf ("The result is %d\n", (int)result); + + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c new file mode 100644 index 0000000000..fd07e50179 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c @@ -0,0 +1,36 @@ +/* Area: ffi_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static double return_dbl(double dbl) +{ + printf ("%f\n", dbl); + return 2 * dbl; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + double dbl, rdbl; + + args[0] = &ffi_type_double; + values[0] = &dbl; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_double, args) == FFI_OK); + + for (dbl = -127.3; dbl < 127; dbl++) + { + ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); + printf ("%f vs %f\n", rdbl, return_dbl(dbl)); + CHECK(rdbl == 2 * dbl); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c new file mode 100644 index 0000000000..0ea5d50551 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c @@ -0,0 +1,43 @@ +/* Area: ffi_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static double return_dbl(double dbl1, float fl2, unsigned int in3, double dbl4) +{ + return dbl1 + fl2 + in3 + dbl4; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + double dbl1, dbl4, rdbl; + float fl2; + unsigned int in3; + args[0] = &ffi_type_double; + args[1] = &ffi_type_float; + args[2] = &ffi_type_uint; + args[3] = &ffi_type_double; + values[0] = &dbl1; + values[1] = &fl2; + values[2] = &in3; + values[3] = &dbl4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_double, args) == FFI_OK); + dbl1 = 127.0; + fl2 = 128.0; + in3 = 255; + dbl4 = 512.7; + + ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); + printf ("%f vs %f\n", rdbl, return_dbl(dbl1, fl2, in3, dbl4)); + CHECK(rdbl == dbl1 + fl2 + in3 + dbl4); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c new file mode 100644 index 0000000000..b3818f866b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c @@ -0,0 +1,42 @@ +/* Area: ffi_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static double return_dbl(double dbl1, double dbl2, unsigned int in3, double dbl4) +{ + return dbl1 + dbl2 + in3 + dbl4; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + double dbl1, dbl2, dbl4, rdbl; + unsigned int in3; + args[0] = &ffi_type_double; + args[1] = &ffi_type_double; + args[2] = &ffi_type_uint; + args[3] = &ffi_type_double; + values[0] = &dbl1; + values[1] = &dbl2; + values[2] = &in3; + values[3] = &dbl4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_double, args) == FFI_OK); + dbl1 = 127.0; + dbl2 = 128.0; + in3 = 255; + dbl4 = 512.7; + + ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); + printf ("%f vs %f\n", rdbl, return_dbl(dbl1, dbl2, in3, dbl4)); + CHECK(rdbl == dbl1 + dbl2 + in3 + dbl4); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c new file mode 100644 index 0000000000..fb8a09e32a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c @@ -0,0 +1,35 @@ +/* Area: ffi_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static float return_fl(float fl) +{ + return 2 * fl; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float fl, rfl; + + args[0] = &ffi_type_float; + values[0] = &fl; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_float, args) == FFI_OK); + + for (fl = -127.0; fl < 127; fl++) + { + ffi_call(&cif, FFI_FN(return_fl), &rfl, values); + printf ("%f vs %f\n", rfl, return_fl(fl)); + CHECK(rfl == 2 * fl); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c new file mode 100644 index 0000000000..c3d92c283d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c @@ -0,0 +1,36 @@ +/* Area: ffi_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static float return_fl(float fl1, float fl2) +{ + return fl1 + fl2; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float fl1, fl2, rfl; + + args[0] = &ffi_type_float; + args[1] = &ffi_type_float; + values[0] = &fl1; + values[1] = &fl2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_float, args) == FFI_OK); + fl1 = 127.0; + fl2 = 128.0; + + ffi_call(&cif, FFI_FN(return_fl), &rfl, values); + printf ("%f vs %f\n", rfl, return_fl(fl1, fl2)); + CHECK(rfl == fl1 + fl2); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c new file mode 100644 index 0000000000..ddb976cc2b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c @@ -0,0 +1,49 @@ +/* Area: ffi_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +/* Use volatile float to avoid false negative on ix86. See PR target/323. */ +static float return_fl(float fl1, float fl2, float fl3, float fl4) +{ + volatile float sum; + + sum = fl1 + fl2 + fl3 + fl4; + return sum; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float fl1, fl2, fl3, fl4, rfl; + volatile float sum; + + args[0] = &ffi_type_float; + args[1] = &ffi_type_float; + args[2] = &ffi_type_float; + args[3] = &ffi_type_float; + values[0] = &fl1; + values[1] = &fl2; + values[2] = &fl3; + values[3] = &fl4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_float, args) == FFI_OK); + fl1 = 127.0; + fl2 = 128.0; + fl3 = 255.1; + fl4 = 512.7; + + ffi_call(&cif, FFI_FN(return_fl), &rfl, values); + printf ("%f vs %f\n", rfl, return_fl(fl1, fl2, fl3, fl4)); + + sum = fl1 + fl2 + fl3 + fl4; + CHECK(rfl == sum); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c new file mode 100644 index 0000000000..c37877b18e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c @@ -0,0 +1,42 @@ +/* Area: ffi_call + Purpose: Check return value float. + Limitations: none. + PR: none. + Originator: 20050212 */ + +/* { dg-do run } */ +#include "ffitest.h" + +static float return_fl(float fl1, float fl2, unsigned int in3, float fl4) +{ + return fl1 + fl2 + in3 + fl4; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float fl1, fl2, fl4, rfl; + unsigned int in3; + args[0] = &ffi_type_float; + args[1] = &ffi_type_float; + args[2] = &ffi_type_uint; + args[3] = &ffi_type_float; + values[0] = &fl1; + values[1] = &fl2; + values[2] = &in3; + values[3] = &fl4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &ffi_type_float, args) == FFI_OK); + fl1 = 127.0; + fl2 = 128.0; + in3 = 255; + fl4 = 512.7; + + ffi_call(&cif, FFI_FN(return_fl), &rfl, values); + printf ("%f vs %f\n", rfl, return_fl(fl1, fl2, in3, fl4)); + CHECK(rfl == fl1 + fl2 + in3 + fl4); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c new file mode 100644 index 0000000000..52a92fe071 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c @@ -0,0 +1,34 @@ +/* Area: ffi_call + Purpose: Check return value long double. + Limitations: none. + PR: none. + Originator: 20071113 */ +/* { dg-do run } */ + +#include "ffitest.h" + +static long double return_ldl(long double ldl) +{ + return 2*ldl; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + long double ldl, rldl; + + args[0] = &ffi_type_longdouble; + values[0] = &ldl; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_longdouble, args) == FFI_OK); + + for (ldl = -127.0; ldl < 127.0; ldl++) + { + ffi_call(&cif, FFI_FN(return_ldl), &rldl, values); + CHECK(rldl == 2 * ldl); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c new file mode 100644 index 0000000000..ea4a1e4478 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c @@ -0,0 +1,41 @@ +/* Area: ffi_call + Purpose: Check return value long long. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +static long long return_ll(long long ll) +{ + return ll; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + long long rlonglong; + long long ll; + + args[0] = &ffi_type_sint64; + values[0] = ≪ + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint64, args) == FFI_OK); + + for (ll = 0LL; ll < 100LL; ll++) + { + ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); + CHECK(rlonglong == ll); + } + + for (ll = 55555555555000LL; ll < 55555555555100LL; ll++) + { + ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); + CHECK(rlonglong == ll); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c new file mode 100644 index 0000000000..593e8a307c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c @@ -0,0 +1,43 @@ +/* Area: ffi_call + Purpose: Check if long long are passed in the corresponding regs on ppc. + Limitations: none. + PR: 20104. + Originator: 20050222 */ + +/* { dg-do run } */ +/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ +#include "ffitest.h" +static long long return_ll(int ll0, long long ll1, int ll2) +{ + return ll0 + ll1 + ll2; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + long long rlonglong; + long long ll1; + unsigned ll0, ll2; + + args[0] = &ffi_type_sint; + args[1] = &ffi_type_sint64; + args[2] = &ffi_type_sint; + values[0] = &ll0; + values[1] = &ll1; + values[2] = &ll2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_sint64, args) == FFI_OK); + + ll0 = 11111111; + ll1 = 11111111111000LL; + ll2 = 11111111; + + ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); + printf("res: %" PRIdLL ", %" PRIdLL "\n", rlonglong, ll0 + ll1 + ll2); + /* { dg-output "res: 11111133333222, 11111133333222" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c new file mode 100644 index 0000000000..a36cf3eb88 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c @@ -0,0 +1,36 @@ +/* Area: ffi_call + Purpose: Check return value signed char. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +static signed char return_sc(signed char sc) +{ + return sc; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + signed char sc; + + args[0] = &ffi_type_schar; + values[0] = ≻ + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_schar, args) == FFI_OK); + + for (sc = (signed char) -127; + sc < (signed char) 127; sc++) + { + ffi_call(&cif, FFI_FN(return_sc), &rint, values); + CHECK((signed char)rint == sc); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c new file mode 100644 index 0000000000..f0fd345f7a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c @@ -0,0 +1,38 @@ +/* Area: ffi_call + Purpose: Check if long as return type is handled correctly. + Limitations: none. + PR: none. + */ + +/* { dg-do run } */ +#include "ffitest.h" +static long return_sl(long l1, long l2) +{ + return l1 - l2; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg res; + unsigned long l1, l2; + + args[0] = &ffi_type_slong; + args[1] = &ffi_type_slong; + values[0] = &l1; + values[1] = &l2; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_slong, args) == FFI_OK); + + l1 = 1073741823L; + l2 = 1073741824L; + + ffi_call(&cif, FFI_FN(return_sl), &res, values); + printf("res: %ld, %ld\n", (long)res, l1 - l2); + /* { dg-output "res: -1, -1" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c new file mode 100644 index 0000000000..6fe554619d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c @@ -0,0 +1,38 @@ +/* Area: ffi_call + Purpose: Check return value unsigned char. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +static unsigned char return_uc(unsigned char uc) +{ + return uc; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + + unsigned char uc; + + args[0] = &ffi_type_uchar; + values[0] = &uc; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_uchar, args) == FFI_OK); + + for (uc = (unsigned char) '\x00'; + uc < (unsigned char) '\xff'; uc++) + { + ffi_call(&cif, FFI_FN(return_uc), &rint, values); + CHECK((unsigned char)rint == uc); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c new file mode 100644 index 0000000000..12b266f037 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c @@ -0,0 +1,38 @@ +/* Area: ffi_call + Purpose: Check if unsigned long as return type is handled correctly. + Limitations: none. + PR: none. + Originator: 20060724 */ + +/* { dg-do run } */ +#include "ffitest.h" +static unsigned long return_ul(unsigned long ul1, unsigned long ul2) +{ + return ul1 + ul2; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg res; + unsigned long ul1, ul2; + + args[0] = &ffi_type_ulong; + args[1] = &ffi_type_ulong; + values[0] = &ul1; + values[1] = &ul2; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, + &ffi_type_ulong, args) == FFI_OK); + + ul1 = 1073741823L; + ul2 = 1073741824L; + + ffi_call(&cif, FFI_FN(return_ul), &res, values); + printf("res: %lu, %lu\n", (unsigned long)res, ul1 + ul2); + /* { dg-output "res: 2147483647, 2147483647" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c new file mode 100644 index 0000000000..71c2469e1c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c @@ -0,0 +1,145 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure returning with different structure size. + Depending on the ABI. Check bigger struct which overlaps + the gp and fp register count on Darwin/AIX/ppc64. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/21/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +#include "ffitest.h" + +/* 13 FPRs: 104 bytes */ +/* 14 FPRs: 112 bytes */ + +typedef struct struct_108byte { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + int n; +} struct_108byte; + +struct_108byte cls_struct_108byte_fn( + struct_108byte b0, + struct_108byte b1, + struct_108byte b2, + struct_108byte b3) +{ + struct_108byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + result.e = b0.e + b1.e + b2.e + b3.e; + result.f = b0.f + b1.f + b2.f + b3.f; + result.g = b0.g + b1.g + b2.g + b3.g; + result.h = b0.h + b1.h + b2.h + b3.h; + result.i = b0.i + b1.i + b2.i + b3.i; + result.j = b0.j + b1.j + b2.j + b3.j; + result.k = b0.k + b1.k + b2.k + b3.k; + result.l = b0.l + b1.l + b2.l + b3.l; + result.m = b0.m + b1.m + b2.m + b3.m; + result.n = b0.n + b1.n + b2.n + b3.n; + + printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h, result.i, + result.j, result.k, result.l, result.m, result.n); + + return result; +} + +static void +cls_struct_108byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) +{ + struct_108byte b0, b1, b2, b3; + + b0 = *(struct_108byte*)(args[0]); + b1 = *(struct_108byte*)(args[1]); + b2 = *(struct_108byte*)(args[2]); + b3 = *(struct_108byte*)(args[3]); + + *(struct_108byte*)resp = cls_struct_108byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[15]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct_108byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 7 }; + struct_108byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 4 }; + struct_108byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 3 }; + struct_108byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 2 }; + struct_108byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_double; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_double; + cls_struct_fields[7] = &ffi_type_double; + cls_struct_fields[8] = &ffi_type_double; + cls_struct_fields[9] = &ffi_type_double; + cls_struct_fields[10] = &ffi_type_double; + cls_struct_fields[11] = &ffi_type_double; + cls_struct_fields[12] = &ffi_type_double; + cls_struct_fields[13] = &ffi_type_sint32; + cls_struct_fields[14] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_108byte_fn), &res_dbl, args_dbl); + /* { dg-output "22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, + res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_108byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((struct_108byte(*)(struct_108byte, struct_108byte, + struct_108byte, struct_108byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, + res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 16" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c new file mode 100644 index 0000000000..d9c750ee1c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c @@ -0,0 +1,148 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure returning with different structure size. + Depending on the ABI. Check bigger struct which overlaps + the gp and fp register count on Darwin/AIX/ppc64. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/21/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +#include "ffitest.h" + +/* 13 FPRs: 104 bytes */ +/* 14 FPRs: 112 bytes */ + +typedef struct struct_116byte { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; + double j; + double k; + double l; + double m; + double n; + int o; +} struct_116byte; + +struct_116byte cls_struct_116byte_fn( + struct_116byte b0, + struct_116byte b1, + struct_116byte b2, + struct_116byte b3) +{ + struct_116byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + result.e = b0.e + b1.e + b2.e + b3.e; + result.f = b0.f + b1.f + b2.f + b3.f; + result.g = b0.g + b1.g + b2.g + b3.g; + result.h = b0.h + b1.h + b2.h + b3.h; + result.i = b0.i + b1.i + b2.i + b3.i; + result.j = b0.j + b1.j + b2.j + b3.j; + result.k = b0.k + b1.k + b2.k + b3.k; + result.l = b0.l + b1.l + b2.l + b3.l; + result.m = b0.m + b1.m + b2.m + b3.m; + result.n = b0.n + b1.n + b2.n + b3.n; + result.o = b0.o + b1.o + b2.o + b3.o; + + printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h, result.i, + result.j, result.k, result.l, result.m, result.n, result.o); + + return result; +} + +static void +cls_struct_116byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) +{ + struct_116byte b0, b1, b2, b3; + + b0 = *(struct_116byte*)(args[0]); + b1 = *(struct_116byte*)(args[1]); + b2 = *(struct_116byte*)(args[2]); + b3 = *(struct_116byte*)(args[3]); + + *(struct_116byte*)resp = cls_struct_116byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[16]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct_116byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 7 }; + struct_116byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 6.0, 4 }; + struct_116byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 7.0, 3 }; + struct_116byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 8.0, 2 }; + struct_116byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_double; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_double; + cls_struct_fields[7] = &ffi_type_double; + cls_struct_fields[8] = &ffi_type_double; + cls_struct_fields[9] = &ffi_type_double; + cls_struct_fields[10] = &ffi_type_double; + cls_struct_fields[11] = &ffi_type_double; + cls_struct_fields[12] = &ffi_type_double; + cls_struct_fields[13] = &ffi_type_double; + cls_struct_fields[14] = &ffi_type_sint32; + cls_struct_fields[15] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_116byte_fn), &res_dbl, args_dbl); + /* { dg-output "22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, + res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n, res_dbl.o); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_116byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((struct_116byte(*)(struct_116byte, struct_116byte, + struct_116byte, struct_116byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g %g %g %g %g %g %d\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i, + res_dbl.j, res_dbl.k, res_dbl.l, res_dbl.m, res_dbl.n, res_dbl.o); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 22 15 17 25 6 26 16" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c new file mode 100644 index 0000000000..973ee02ede --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c @@ -0,0 +1,124 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure returning with different structure size. + Depending on the ABI. Check bigger struct which overlaps + the gp and fp register count on Darwin/AIX/ppc64. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/21/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +#include "ffitest.h" + +typedef struct struct_72byte { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + double i; +} struct_72byte; + +struct_72byte cls_struct_72byte_fn( + struct_72byte b0, + struct_72byte b1, + struct_72byte b2, + struct_72byte b3) +{ + struct_72byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + result.e = b0.e + b1.e + b2.e + b3.e; + result.f = b0.f + b1.f + b2.f + b3.f; + result.g = b0.g + b1.g + b2.g + b3.g; + result.h = b0.h + b1.h + b2.h + b3.h; + result.i = b0.i + b1.i + b2.i + b3.i; + + printf("%g %g %g %g %g %g %g %g %g\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h, result.i); + + return result; +} + +static void +cls_struct_72byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) +{ + struct_72byte b0, b1, b2, b3; + + b0 = *(struct_72byte*)(args[0]); + b1 = *(struct_72byte*)(args[1]); + b2 = *(struct_72byte*)(args[2]); + b3 = *(struct_72byte*)(args[3]); + + *(struct_72byte*)resp = cls_struct_72byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[10]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7.0 }; + struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0 }; + struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3.0 }; + struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2.0 }; + struct_72byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_double; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_double; + cls_struct_fields[7] = &ffi_type_double; + cls_struct_fields[8] = &ffi_type_double; + cls_struct_fields[9] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_72byte_fn), &res_dbl, args_dbl); + /* { dg-output "22 15 17 25 6 13 19 18 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_72byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((struct_72byte(*)(struct_72byte, struct_72byte, + struct_72byte, struct_72byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n22 15 17 25 6 13 19 18 16" } */ + printf("res: %g %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c new file mode 100644 index 0000000000..84323d16a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c @@ -0,0 +1,125 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure returning with different structure size. + Depending on the ABI. Check bigger struct which overlaps + the gp and fp register count on Darwin/AIX/ppc64. + Limitations: none. + PR: none. + Originator: Blake Chaffin 6/21/2007 */ + +/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +/* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */ +#include "ffitest.h" + +typedef struct struct_72byte { + double a; + double b; + double c; + double d; + double e; + double f; + double g; + double h; + long long i; +} struct_72byte; + +struct_72byte cls_struct_72byte_fn( + struct_72byte b0, + struct_72byte b1, + struct_72byte b2, + struct_72byte b3) +{ + struct_72byte result; + + result.a = b0.a + b1.a + b2.a + b3.a; + result.b = b0.b + b1.b + b2.b + b3.b; + result.c = b0.c + b1.c + b2.c + b3.c; + result.d = b0.d + b1.d + b2.d + b3.d; + result.e = b0.e + b1.e + b2.e + b3.e; + result.f = b0.f + b1.f + b2.f + b3.f; + result.g = b0.g + b1.g + b2.g + b3.g; + result.h = b0.h + b1.h + b2.h + b3.h; + result.i = b0.i + b1.i + b2.i + b3.i; + + printf("%g %g %g %g %g %g %g %g %" PRIdLL "\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h, result.i); + + return result; +} + +static void +cls_struct_72byte_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata __UNUSED__) +{ + struct_72byte b0, b1, b2, b3; + + b0 = *(struct_72byte*)(args[0]); + b1 = *(struct_72byte*)(args[1]); + b2 = *(struct_72byte*)(args[2]); + b3 = *(struct_72byte*)(args[3]); + + *(struct_72byte*)resp = cls_struct_72byte_fn(b0, b1, b2, b3); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_dbl[5]; + ffi_type* cls_struct_fields[10]; + ffi_type cls_struct_type; + ffi_type* dbl_arg_types[5]; + + struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 }; + struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 }; + struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 }; + struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 }; + struct_72byte res_dbl; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_double; + cls_struct_fields[1] = &ffi_type_double; + cls_struct_fields[2] = &ffi_type_double; + cls_struct_fields[3] = &ffi_type_double; + cls_struct_fields[4] = &ffi_type_double; + cls_struct_fields[5] = &ffi_type_double; + cls_struct_fields[6] = &ffi_type_double; + cls_struct_fields[7] = &ffi_type_double; + cls_struct_fields[8] = &ffi_type_sint64; + cls_struct_fields[9] = NULL; + + dbl_arg_types[0] = &cls_struct_type; + dbl_arg_types[1] = &cls_struct_type; + dbl_arg_types[2] = &cls_struct_type; + dbl_arg_types[3] = &cls_struct_type; + dbl_arg_types[4] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, &cls_struct_type, + dbl_arg_types) == FFI_OK); + + args_dbl[0] = &e_dbl; + args_dbl[1] = &f_dbl; + args_dbl[2] = &g_dbl; + args_dbl[3] = &h_dbl; + args_dbl[4] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_72byte_fn), &res_dbl, args_dbl); + /* { dg-output "22 15 17 25 6 13 19 18 16" } */ + printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_72byte_gn, NULL, code) == FFI_OK); + + res_dbl = ((struct_72byte(*)(struct_72byte, struct_72byte, + struct_72byte, struct_72byte))(code))(e_dbl, f_dbl, g_dbl, h_dbl); + /* { dg-output "\n22 15 17 25 6 13 19 18 16" } */ + printf("res: %g %g %g %g %g %g %g %g %" PRIdLL "\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h, res_dbl.i); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18 16" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c new file mode 100644 index 0000000000..35b70ea4e2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c @@ -0,0 +1,44 @@ +/* Area: ffi_call + Purpose: Check strlen function call. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +static size_t ABI_ATTR my_strlen(char *s) +{ + return (strlen(s)); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + char *s; + + args[0] = &ffi_type_pointer; + values[0] = (void*) &s; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, + &ffi_type_sint, args) == FFI_OK); + + s = "a"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 1); + + s = "1234567"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 7); + + s = "1234567890123456789012345"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 25); + + exit (0); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c new file mode 100644 index 0000000000..96282bc0a1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c @@ -0,0 +1,49 @@ +/* Area: ffi_call + Purpose: Check strlen function call with additional arguments. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static size_t ABI_ATTR my_f(char *s, float a) +{ + return (size_t) ((int) strlen(s) + (int) a); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + char *s; + float v2; + args[0] = &ffi_type_pointer; + args[1] = &ffi_type_float; + values[0] = (void*) &s; + values[1] = (void*) &v2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, + &ffi_type_sint, args) == FFI_OK); + + s = "a"; + v2 = 0.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 1); + + s = "1234567"; + v2 = -1.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 6); + + s = "1234567890123456789012345"; + v2 = 1.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 26); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c new file mode 100644 index 0000000000..beba86e9ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c @@ -0,0 +1,49 @@ +/* Area: ffi_call + Purpose: Check strlen function call with additional arguments. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static size_t ABI_ATTR my_f(float a, char *s) +{ + return (size_t) ((int) strlen(s) + (int) a); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + char *s; + float v2; + args[1] = &ffi_type_pointer; + args[0] = &ffi_type_float; + values[1] = (void*) &s; + values[0] = (void*) &v2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, + &ffi_type_sint, args) == FFI_OK); + + s = "a"; + v2 = 0.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 1); + + s = "1234567"; + v2 = -1.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 6); + + s = "1234567890123456789012345"; + v2 = 1.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 26); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c new file mode 100644 index 0000000000..d5d42b4f6d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c @@ -0,0 +1,55 @@ +/* Area: ffi_call + Purpose: Check strlen function call with additional arguments. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ + +#include "ffitest.h" + +static size_t ABI_ATTR my_f(float a, char *s, int i) +{ + return (size_t) ((int) strlen(s) + (int) a + i); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + char *s; + int v1; + float v2; + args[2] = &ffi_type_sint; + args[1] = &ffi_type_pointer; + args[0] = &ffi_type_float; + values[2] = (void*) &v1; + values[1] = (void*) &s; + values[0] = (void*) &v2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 3, + &ffi_type_sint, args) == FFI_OK); + + s = "a"; + v1 = 1; + v2 = 0.0; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 2); + + s = "1234567"; + v2 = -1.0; + v1 = -2; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 4); + + s = "1234567890123456789012345"; + v2 = 1.0; + v1 = 2; + ffi_call(&cif, FFI_FN(my_f), &rint, values); + CHECK(rint == 28); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c new file mode 100644 index 0000000000..c13e23f872 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c @@ -0,0 +1,67 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + unsigned char uc; + double d; + unsigned int ui; +} test_structure_1; + +static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) +{ + ts.uc++; + ts.d--; + ts.ui++; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts1_type; + ffi_type *ts1_type_elements[4]; + + test_structure_1 ts1_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_1 *ts1_result = + (test_structure_1 *) malloc (sizeof(test_structure_1)); + + ts1_type.size = 0; + ts1_type.alignment = 0; + ts1_type.type = FFI_TYPE_STRUCT; + ts1_type.elements = ts1_type_elements; + ts1_type_elements[0] = &ffi_type_uchar; + ts1_type_elements[1] = &ffi_type_double; + ts1_type_elements[2] = &ffi_type_uint; + ts1_type_elements[3] = NULL; + + args[0] = &ts1_type; + values[0] = &ts1_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, + &ts1_type, args) == FFI_OK); + + ts1_arg.uc = '\x01'; + ts1_arg.d = 3.14159; + ts1_arg.ui = 555; + + ffi_call(&cif, FFI_FN(struct1), ts1_result, values); + + CHECK(ts1_result->ui == 556); + CHECK(ts1_result->d == 3.14159 - 1); + + free (ts1_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c new file mode 100644 index 0000000000..17b1377424 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c @@ -0,0 +1,57 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: Sergei Trofimovich + + The test originally discovered in ruby's bindings + for ffi in https://bugs.gentoo.org/634190 */ + +/* { dg-do run } */ +#include "ffitest.h" + +struct s { + int s32; + float f32; + signed char s8; +}; + +struct s make_s(void) { + struct s r; + r.s32 = 0x1234; + r.f32 = 7.0; + r.s8 = 0x78; + return r; +} + +int main() { + ffi_cif cif; + struct s r; + ffi_type rtype; + ffi_type* s_fields[] = { + &ffi_type_sint, + &ffi_type_float, + &ffi_type_schar, + NULL, + }; + + rtype.size = 0; + rtype.alignment = 0, + rtype.type = FFI_TYPE_STRUCT, + rtype.elements = s_fields, + + r.s32 = 0xbad; + r.f32 = 999.999; + r.s8 = 0x51; + + // Here we emulate the following call: + //r = make_s(); + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &rtype, NULL) == FFI_OK); + ffi_call(&cif, FFI_FN(make_s), &r, NULL); + + CHECK(r.s32 == 0x1234); + CHECK(r.f32 == 7.0); + CHECK(r.s8 == 0x78); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c new file mode 100644 index 0000000000..5077a5ee45 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c @@ -0,0 +1,67 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + double d1; + double d2; +} test_structure_2; + +static test_structure_2 ABI_ATTR struct2(test_structure_2 ts) +{ + ts.d1--; + ts.d2--; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + test_structure_2 ts2_arg; + ffi_type ts2_type; + ffi_type *ts2_type_elements[3]; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_2 *ts2_result = + (test_structure_2 *) malloc (sizeof(test_structure_2)); + + ts2_type.size = 0; + ts2_type.alignment = 0; + ts2_type.type = FFI_TYPE_STRUCT; + ts2_type.elements = ts2_type_elements; + ts2_type_elements[0] = &ffi_type_double; + ts2_type_elements[1] = &ffi_type_double; + ts2_type_elements[2] = NULL; + + args[0] = &ts2_type; + values[0] = &ts2_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK); + + ts2_arg.d1 = 5.55; + ts2_arg.d2 = 6.66; + + printf ("%g\n", ts2_arg.d1); + printf ("%g\n", ts2_arg.d2); + + ffi_call(&cif, FFI_FN(struct2), ts2_result, values); + + printf ("%g\n", ts2_result->d1); + printf ("%g\n", ts2_result->d2); + + CHECK(ts2_result->d1 == 5.55 - 1); + CHECK(ts2_result->d2 == 6.66 - 1); + + free (ts2_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c new file mode 100644 index 0000000000..7eba0ead6d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c @@ -0,0 +1,60 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + int si; +} test_structure_3; + +static test_structure_3 ABI_ATTR struct3(test_structure_3 ts) +{ + ts.si = -(ts.si*2); + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + int compare_value; + ffi_type ts3_type; + ffi_type *ts3_type_elements[2]; + + test_structure_3 ts3_arg; + test_structure_3 *ts3_result = + (test_structure_3 *) malloc (sizeof(test_structure_3)); + + ts3_type.size = 0; + ts3_type.alignment = 0; + ts3_type.type = FFI_TYPE_STRUCT; + ts3_type.elements = ts3_type_elements; + ts3_type_elements[0] = &ffi_type_sint; + ts3_type_elements[1] = NULL; + + args[0] = &ts3_type; + values[0] = &ts3_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, + &ts3_type, args) == FFI_OK); + + ts3_arg.si = -123; + compare_value = ts3_arg.si; + + ffi_call(&cif, FFI_FN(struct3), ts3_result, values); + + printf ("%d %d\n", ts3_result->si, -(compare_value*2)); + + CHECK(ts3_result->si == -(compare_value*2)); + + free (ts3_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c new file mode 100644 index 0000000000..66a9551dd6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c @@ -0,0 +1,64 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + unsigned ui1; + unsigned ui2; + unsigned ui3; +} test_structure_4; + +static test_structure_4 ABI_ATTR struct4(test_structure_4 ts) +{ + ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts4_type; + ffi_type *ts4_type_elements[4]; + + test_structure_4 ts4_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_4 *ts4_result = + (test_structure_4 *) malloc (sizeof(test_structure_4)); + + ts4_type.size = 0; + ts4_type.alignment = 0; + ts4_type.type = FFI_TYPE_STRUCT; + ts4_type.elements = ts4_type_elements; + ts4_type_elements[0] = &ffi_type_uint; + ts4_type_elements[1] = &ffi_type_uint; + ts4_type_elements[2] = &ffi_type_uint; + ts4_type_elements[3] = NULL; + + args[0] = &ts4_type; + values[0] = &ts4_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK); + + ts4_arg.ui1 = 2; + ts4_arg.ui2 = 3; + ts4_arg.ui3 = 4; + + ffi_call (&cif, FFI_FN(struct4), ts4_result, values); + + CHECK(ts4_result->ui3 == 2U * 3U * 4U); + + + free (ts4_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c new file mode 100644 index 0000000000..23e2a3f745 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c @@ -0,0 +1,66 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +typedef struct +{ + char c1; + char c2; +} test_structure_5; + +static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2) +{ + ts1.c1 += ts2.c1; + ts1.c2 -= ts2.c2; + + return ts1; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts5_type; + ffi_type *ts5_type_elements[3]; + + test_structure_5 ts5_arg1, ts5_arg2; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_5 *ts5_result = + (test_structure_5 *) malloc (sizeof(test_structure_5)); + + ts5_type.size = 0; + ts5_type.alignment = 0; + ts5_type.type = FFI_TYPE_STRUCT; + ts5_type.elements = ts5_type_elements; + ts5_type_elements[0] = &ffi_type_schar; + ts5_type_elements[1] = &ffi_type_schar; + ts5_type_elements[2] = NULL; + + args[0] = &ts5_type; + args[1] = &ts5_type; + values[0] = &ts5_arg1; + values[1] = &ts5_arg2; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK); + + ts5_arg1.c1 = 2; + ts5_arg1.c2 = 6; + ts5_arg2.c1 = 5; + ts5_arg2.c2 = 3; + + ffi_call (&cif, FFI_FN(struct5), ts5_result, values); + + CHECK(ts5_result->c1 == 7); + CHECK(ts5_result->c2 == 3); + + + free (ts5_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c new file mode 100644 index 0000000000..173c66eb4d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c @@ -0,0 +1,64 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +typedef struct +{ + float f; + double d; +} test_structure_6; + +static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts) +{ + ts.f += 1; + ts.d += 1; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts6_type; + ffi_type *ts6_type_elements[3]; + + test_structure_6 ts6_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_6 *ts6_result = + (test_structure_6 *) malloc (sizeof(test_structure_6)); + + ts6_type.size = 0; + ts6_type.alignment = 0; + ts6_type.type = FFI_TYPE_STRUCT; + ts6_type.elements = ts6_type_elements; + ts6_type_elements[0] = &ffi_type_float; + ts6_type_elements[1] = &ffi_type_double; + ts6_type_elements[2] = NULL; + + args[0] = &ts6_type; + values[0] = &ts6_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK); + + ts6_arg.f = 5.55f; + ts6_arg.d = 6.66; + + printf ("%g\n", ts6_arg.f); + printf ("%g\n", ts6_arg.d); + + ffi_call(&cif, FFI_FN(struct6), ts6_result, values); + + CHECK(ts6_result->f == 5.55f + 1); + CHECK(ts6_result->d == 6.66 + 1); + + free (ts6_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c new file mode 100644 index 0000000000..badc7e0556 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c @@ -0,0 +1,74 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +typedef struct +{ + float f1; + float f2; + double d; +} test_structure_7; + +static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts) +{ + ts.f1 += 1; + ts.f2 += 1; + ts.d += 1; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts7_type; + ffi_type *ts7_type_elements[4]; + + test_structure_7 ts7_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_7 *ts7_result = + (test_structure_7 *) malloc (sizeof(test_structure_7)); + + ts7_type.size = 0; + ts7_type.alignment = 0; + ts7_type.type = FFI_TYPE_STRUCT; + ts7_type.elements = ts7_type_elements; + ts7_type_elements[0] = &ffi_type_float; + ts7_type_elements[1] = &ffi_type_float; + ts7_type_elements[2] = &ffi_type_double; + ts7_type_elements[3] = NULL; + + args[0] = &ts7_type; + values[0] = &ts7_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK); + + ts7_arg.f1 = 5.55f; + ts7_arg.f2 = 55.5f; + ts7_arg.d = 6.66; + + printf ("%g\n", ts7_arg.f1); + printf ("%g\n", ts7_arg.f2); + printf ("%g\n", ts7_arg.d); + + ffi_call(&cif, FFI_FN(struct7), ts7_result, values); + + printf ("%g\n", ts7_result->f1); + printf ("%g\n", ts7_result->f2); + printf ("%g\n", ts7_result->d); + + CHECK(ts7_result->f1 == 5.55f + 1); + CHECK(ts7_result->f2 == 55.5f + 1); + CHECK(ts7_result->d == 6.66 + 1); + + free (ts7_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c new file mode 100644 index 0000000000..ef204ecbbc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c @@ -0,0 +1,81 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +typedef struct +{ + float f1; + float f2; + float f3; + float f4; +} test_structure_8; + +static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts) +{ + ts.f1 += 1; + ts.f2 += 1; + ts.f3 += 1; + ts.f4 += 1; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts8_type; + ffi_type *ts8_type_elements[5]; + + test_structure_8 ts8_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_8 *ts8_result = + (test_structure_8 *) malloc (sizeof(test_structure_8)); + + ts8_type.size = 0; + ts8_type.alignment = 0; + ts8_type.type = FFI_TYPE_STRUCT; + ts8_type.elements = ts8_type_elements; + ts8_type_elements[0] = &ffi_type_float; + ts8_type_elements[1] = &ffi_type_float; + ts8_type_elements[2] = &ffi_type_float; + ts8_type_elements[3] = &ffi_type_float; + ts8_type_elements[4] = NULL; + + args[0] = &ts8_type; + values[0] = &ts8_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK); + + ts8_arg.f1 = 5.55f; + ts8_arg.f2 = 55.5f; + ts8_arg.f3 = -5.55f; + ts8_arg.f4 = -55.5f; + + printf ("%g\n", ts8_arg.f1); + printf ("%g\n", ts8_arg.f2); + printf ("%g\n", ts8_arg.f3); + printf ("%g\n", ts8_arg.f4); + + ffi_call(&cif, FFI_FN(struct8), ts8_result, values); + + printf ("%g\n", ts8_result->f1); + printf ("%g\n", ts8_result->f2); + printf ("%g\n", ts8_result->f3); + printf ("%g\n", ts8_result->f4); + + CHECK(ts8_result->f1 == 5.55f + 1); + CHECK(ts8_result->f2 == 55.5f + 1); + CHECK(ts8_result->f3 == -5.55f + 1); + CHECK(ts8_result->f4 == -55.5f + 1); + + free (ts8_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c new file mode 100644 index 0000000000..4a13b818c4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c @@ -0,0 +1,68 @@ +/* Area: ffi_call + Purpose: Check structures. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + float f; + int i; +} test_structure_9; + +static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts) +{ + ts.f += 1; + ts.i += 1; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts9_type; + ffi_type *ts9_type_elements[3]; + + test_structure_9 ts9_arg; + + /* This is a hack to get a properly aligned result buffer */ + test_structure_9 *ts9_result = + (test_structure_9 *) malloc (sizeof(test_structure_9)); + + ts9_type.size = 0; + ts9_type.alignment = 0; + ts9_type.type = FFI_TYPE_STRUCT; + ts9_type.elements = ts9_type_elements; + ts9_type_elements[0] = &ffi_type_float; + ts9_type_elements[1] = &ffi_type_sint; + ts9_type_elements[2] = NULL; + + args[0] = &ts9_type; + values[0] = &ts9_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK); + + ts9_arg.f = 5.55f; + ts9_arg.i = 5; + + printf ("%g\n", ts9_arg.f); + printf ("%d\n", ts9_arg.i); + + ffi_call(&cif, FFI_FN(struct9), ts9_result, values); + + printf ("%g\n", ts9_result->f); + printf ("%d\n", ts9_result->i); + + CHECK(ts9_result->f == 5.55f + 1); + CHECK(ts9_result->i == 5 + 1); + + free (ts9_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c new file mode 100644 index 0000000000..ca31056d8c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c @@ -0,0 +1,70 @@ +/* Area: closure_call + Purpose: Check return value float. + Limitations: none. + PR: 41908. + Originator: 20091102 */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct cls_struct_combined { + float a; + float b; + float c; + float d; +} cls_struct_combined; + +void cls_struct_combined_fn(struct cls_struct_combined arg) +{ + printf("%g %g %g %g\n", + arg.a, arg.b, + arg.c, arg.d); + fflush(stdout); +} + +static void +cls_struct_combined_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, + void** args, void* userdata __UNUSED__) +{ + struct cls_struct_combined a0; + + a0 = *(struct cls_struct_combined*)(args[0]); + + cls_struct_combined_fn(a0); +} + + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type* cls_struct_fields0[5]; + ffi_type cls_struct_type0; + ffi_type* dbl_arg_types[5]; + + struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0}; + + cls_struct_type0.size = 0; + cls_struct_type0.alignment = 0; + cls_struct_type0.type = FFI_TYPE_STRUCT; + cls_struct_type0.elements = cls_struct_fields0; + + cls_struct_fields0[0] = &ffi_type_float; + cls_struct_fields0[1] = &ffi_type_float; + cls_struct_fields0[2] = &ffi_type_float; + cls_struct_fields0[3] = &ffi_type_float; + cls_struct_fields0[4] = NULL; + + dbl_arg_types[0] = &cls_struct_type0; + dbl_arg_types[1] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_void, + dbl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); + + ((void(*)(cls_struct_combined)) (code))(g_dbl); + /* { dg-output "4 5 1 8" } */ + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c new file mode 100644 index 0000000000..f00d830234 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct +{ + unsigned char uc; + double d; + unsigned int ui; +} test_structure_1; + +static test_structure_1 struct1(test_structure_1 ts) +{ + ts.uc++; + ts.d--; + ts.ui++; + + return ts; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_type ts1_type; + ffi_type *ts1_type_elements[4]; + + memset(&cif, 1, sizeof(cif)); + ts1_type.size = 0; + ts1_type.alignment = 0; + ts1_type.type = FFI_TYPE_STRUCT; + ts1_type.elements = ts1_type_elements; + ts1_type_elements[0] = &ffi_type_uchar; + ts1_type_elements[1] = &ffi_type_double; + ts1_type_elements[2] = &ffi_type_uint; + ts1_type_elements[3] = NULL; + + test_structure_1 ts1_arg; + /* This is a hack to get a properly aligned result buffer */ + test_structure_1 *ts1_result = + (test_structure_1 *) malloc (sizeof(test_structure_1)); + + args[0] = &ts1_type; + values[0] = &ts1_arg; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ts1_type, args) == FFI_OK); + + ts1_arg.uc = '\x01'; + ts1_arg.d = 3.14159; + ts1_arg.ui = 555; + + ffi_call(&cif, FFI_FN(struct1), ts1_result, values); + + CHECK(ts1_result->ui == 556); + CHECK(ts1_result->d == 3.14159 - 1); + + free (ts1_result); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc new file mode 100644 index 0000000000..e1145657d1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc @@ -0,0 +1,117 @@ +/* Area: ffi_closure, unwind info + Purpose: Check if the unwind information is passed correctly. + Limitations: none. + PR: none. + Originator: Jeff Sturm */ + +/* { dg-do run { xfail x86_64-apple-darwin* moxie*-*-* } } */ + +#include "ffitest.h" + +void ABI_ATTR +closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, + void** args __UNUSED__, void* userdata __UNUSED__) +{ + throw 9; +} + +typedef void (*closure_test_type)(); + +void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) + { + *(ffi_arg*)resp = + (int)*(float *)args[0] +(int)(*(float *)args[1]) + + (int)(*(float *)args[2]) + (int)*(float *)args[3] + + (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) + + (int)*(float *)args[6] + (int)(*(int *)args[7]) + + (int)(*(double*)args[8]) + (int)*(int *)args[9] + + (int)(*(int *)args[10]) + (int)(*(float *)args[11]) + + (int)*(int *)args[12] + (int)(*(int *)args[13]) + + (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata; + + printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n", + (int)*(float *)args[0], (int)(*(float *)args[1]), + (int)(*(float *)args[2]), (int)*(float *)args[3], + (int)(*(signed short *)args[4]), (int)(*(float *)args[5]), + (int)*(float *)args[6], (int)(*(int *)args[7]), + (int)(*(double *)args[8]), (int)*(int *)args[9], + (int)(*(int *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]), *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg*)resp); + + throw (int)*(ffi_arg*)resp; +} + +typedef int (*closure_test_type1)(float, float, float, float, signed short, + float, float, int, double, int, int, float, + int, int, int, int); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[17]; + + { + cl_arg_types[1] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, + &ffi_type_void, cl_arg_types) == FFI_OK); + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK); + + try + { + (*((closure_test_type)(code)))(); + } catch (int exception_code) + { + CHECK(exception_code == 9); + } + + printf("part one OK\n"); + /* { dg-output "part one OK" } */ + } + + { + + cl_arg_types[0] = &ffi_type_float; + cl_arg_types[1] = &ffi_type_float; + cl_arg_types[2] = &ffi_type_float; + cl_arg_types[3] = &ffi_type_float; + cl_arg_types[4] = &ffi_type_sshort; + cl_arg_types[5] = &ffi_type_float; + cl_arg_types[6] = &ffi_type_float; + cl_arg_types[7] = &ffi_type_uint; + cl_arg_types[8] = &ffi_type_double; + cl_arg_types[9] = &ffi_type_uint; + cl_arg_types[10] = &ffi_type_uint; + cl_arg_types[11] = &ffi_type_float; + cl_arg_types[12] = &ffi_type_uint; + cl_arg_types[13] = &ffi_type_uint; + cl_arg_types[14] = &ffi_type_uint; + cl_arg_types[15] = &ffi_type_uint; + cl_arg_types[16] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, + &ffi_type_sint, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1, + (void *) 3 /* userdata */, code) == FFI_OK); + try + { + (*((closure_test_type1)code)) + (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13, + 19, 21, 1); + /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ + } catch (int exception_code) + { + CHECK(exception_code == 255); + } + printf("part two OK\n"); + /* { dg-output "\npart two OK" } */ + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc new file mode 100644 index 0000000000..153d240940 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc @@ -0,0 +1,54 @@ +/* Area: ffi_call, unwind info + Purpose: Check if the unwind information is passed correctly. + Limitations: none. + PR: none. + Originator: Andreas Tobler 20061213 */ + +/* { dg-do run { xfail moxie*-*-* } } */ + +#include "ffitest.h" + +static int checking(int a __UNUSED__, short b __UNUSED__, + signed char c __UNUSED__) +{ + throw 9; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + + signed int si; + signed short ss; + signed char sc; + + args[0] = &ffi_type_sint; + values[0] = &si; + args[1] = &ffi_type_sshort; + values[1] = &ss; + args[2] = &ffi_type_schar; + values[2] = ≻ + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_sint, args) == FFI_OK); + + si = -6; + ss = -12; + sc = -1; + { + try + { + ffi_call(&cif, FFI_FN(checking), &rint, values); + } catch (int exception_code) + { + CHECK(exception_code == 9); + } + printf("part one OK\n"); + /* { dg-output "part one OK" } */ + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c new file mode 100644 index 0000000000..7f96809ea9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c @@ -0,0 +1,196 @@ +/* Area: ffi_call + Purpose: Test passing struct in variable argument lists. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +/* { dg-output "" { xfail avr32*-*-* } } */ + +#include "ffitest.h" +#include + +struct small_tag +{ + unsigned char a; + unsigned char b; +}; + +struct large_tag +{ + unsigned a; + unsigned b; + unsigned c; + unsigned d; + unsigned e; +}; + +static int +test_fn (int n, ...) +{ + va_list ap; + struct small_tag s1; + struct small_tag s2; + struct large_tag l; + unsigned char uc; + signed char sc; + unsigned short us; + signed short ss; + unsigned int ui; + signed int si; + unsigned long ul; + signed long sl; + float f; + double d; + + va_start (ap, n); + s1 = va_arg (ap, struct small_tag); + l = va_arg (ap, struct large_tag); + s2 = va_arg (ap, struct small_tag); + + uc = va_arg (ap, unsigned); + sc = va_arg (ap, signed); + + us = va_arg (ap, unsigned); + ss = va_arg (ap, signed); + + ui = va_arg (ap, unsigned int); + si = va_arg (ap, signed int); + + ul = va_arg (ap, unsigned long); + sl = va_arg (ap, signed long); + + f = va_arg (ap, double); /* C standard promotes float->double + when anonymous */ + d = va_arg (ap, double); + + printf ("%u %u %u %u %u %u %u %u %u uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n", + s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b, + uc, sc, + us, ss, + ui, si, + ul, sl, + f, d); + va_end (ap); + return n + 1; +} + +int +main (void) +{ + ffi_cif cif; + void* args[15]; + ffi_type* arg_types[15]; + + ffi_type s_type; + ffi_type *s_type_elements[3]; + + ffi_type l_type; + ffi_type *l_type_elements[6]; + + struct small_tag s1; + struct small_tag s2; + struct large_tag l1; + + int n; + ffi_arg res; + + unsigned char uc; + signed char sc; + unsigned short us; + signed short ss; + unsigned int ui; + signed int si; + unsigned long ul; + signed long sl; + double d1; + double f1; + + s_type.size = 0; + s_type.alignment = 0; + s_type.type = FFI_TYPE_STRUCT; + s_type.elements = s_type_elements; + + s_type_elements[0] = &ffi_type_uchar; + s_type_elements[1] = &ffi_type_uchar; + s_type_elements[2] = NULL; + + l_type.size = 0; + l_type.alignment = 0; + l_type.type = FFI_TYPE_STRUCT; + l_type.elements = l_type_elements; + + l_type_elements[0] = &ffi_type_uint; + l_type_elements[1] = &ffi_type_uint; + l_type_elements[2] = &ffi_type_uint; + l_type_elements[3] = &ffi_type_uint; + l_type_elements[4] = &ffi_type_uint; + l_type_elements[5] = NULL; + + arg_types[0] = &ffi_type_sint; + arg_types[1] = &s_type; + arg_types[2] = &l_type; + arg_types[3] = &s_type; + arg_types[4] = &ffi_type_uchar; + arg_types[5] = &ffi_type_schar; + arg_types[6] = &ffi_type_ushort; + arg_types[7] = &ffi_type_sshort; + arg_types[8] = &ffi_type_uint; + arg_types[9] = &ffi_type_sint; + arg_types[10] = &ffi_type_ulong; + arg_types[11] = &ffi_type_slong; + arg_types[12] = &ffi_type_double; + arg_types[13] = &ffi_type_double; + arg_types[14] = NULL; + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 14, &ffi_type_sint, arg_types) == FFI_OK); + + s1.a = 5; + s1.b = 6; + + l1.a = 10; + l1.b = 11; + l1.c = 12; + l1.d = 13; + l1.e = 14; + + s2.a = 7; + s2.b = 8; + + n = 41; + + uc = 9; + sc = 10; + us = 11; + ss = 12; + ui = 13; + si = 14; + ul = 15; + sl = 16; + f1 = 2.12; + d1 = 3.13; + + args[0] = &n; + args[1] = &s1; + args[2] = &l1; + args[3] = &s2; + args[4] = &uc; + args[5] = ≻ + args[6] = &us; + args[7] = &ss; + args[8] = &ui; + args[9] = &si; + args[10] = &ul; + args[11] = &sl; + args[12] = &f1; + args[13] = &d1; + args[14] = NULL; + + ffi_call(&cif, FFI_FN(test_fn), &res, args); + /* { dg-output "5 6 10 11 12 13 14 7 8 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c new file mode 100644 index 0000000000..e6452061c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c @@ -0,0 +1,121 @@ +/* Area: ffi_call + Purpose: Test passing struct in variable argument lists. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +/* { dg-output "" { xfail avr32*-*-* } } */ + +#include "ffitest.h" +#include + +struct small_tag +{ + unsigned char a; + unsigned char b; +}; + +struct large_tag +{ + unsigned a; + unsigned b; + unsigned c; + unsigned d; + unsigned e; +}; + +static int +test_fn (int n, ...) +{ + va_list ap; + struct small_tag s1; + struct small_tag s2; + struct large_tag l; + + va_start (ap, n); + s1 = va_arg (ap, struct small_tag); + l = va_arg (ap, struct large_tag); + s2 = va_arg (ap, struct small_tag); + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); + va_end (ap); + return n + 1; +} + +int +main (void) +{ + ffi_cif cif; + void* args[5]; + ffi_type* arg_types[5]; + + ffi_type s_type; + ffi_type *s_type_elements[3]; + + ffi_type l_type; + ffi_type *l_type_elements[6]; + + struct small_tag s1; + struct small_tag s2; + struct large_tag l1; + + int n; + ffi_arg res; + + s_type.size = 0; + s_type.alignment = 0; + s_type.type = FFI_TYPE_STRUCT; + s_type.elements = s_type_elements; + + s_type_elements[0] = &ffi_type_uchar; + s_type_elements[1] = &ffi_type_uchar; + s_type_elements[2] = NULL; + + l_type.size = 0; + l_type.alignment = 0; + l_type.type = FFI_TYPE_STRUCT; + l_type.elements = l_type_elements; + + l_type_elements[0] = &ffi_type_uint; + l_type_elements[1] = &ffi_type_uint; + l_type_elements[2] = &ffi_type_uint; + l_type_elements[3] = &ffi_type_uint; + l_type_elements[4] = &ffi_type_uint; + l_type_elements[5] = NULL; + + arg_types[0] = &ffi_type_sint; + arg_types[1] = &s_type; + arg_types[2] = &l_type; + arg_types[3] = &s_type; + arg_types[4] = NULL; + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK); + + s1.a = 5; + s1.b = 6; + + l1.a = 10; + l1.b = 11; + l1.c = 12; + l1.d = 13; + l1.e = 14; + + s2.a = 7; + s2.b = 8; + + n = 41; + + args[0] = &n; + args[1] = &s1; + args[2] = &l1; + args[3] = &s2; + args[4] = NULL; + + ffi_call(&cif, FFI_FN(test_fn), &res, args); + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c new file mode 100644 index 0000000000..56f5b9c75f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c @@ -0,0 +1,123 @@ +/* Area: ffi_call + Purpose: Test passing struct in variable argument lists. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +/* { dg-output "" { xfail avr32*-*-* } } */ + +#include "ffitest.h" +#include + +struct small_tag +{ + unsigned char a; + unsigned char b; +}; + +struct large_tag +{ + unsigned a; + unsigned b; + unsigned c; + unsigned d; + unsigned e; +}; + +static struct small_tag +test_fn (int n, ...) +{ + va_list ap; + struct small_tag s1; + struct small_tag s2; + struct large_tag l; + + va_start (ap, n); + s1 = va_arg (ap, struct small_tag); + l = va_arg (ap, struct large_tag); + s2 = va_arg (ap, struct small_tag); + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); + va_end (ap); + s1.a += s2.a; + s1.b += s2.b; + return s1; +} + +int +main (void) +{ + ffi_cif cif; + void* args[5]; + ffi_type* arg_types[5]; + + ffi_type s_type; + ffi_type *s_type_elements[3]; + + ffi_type l_type; + ffi_type *l_type_elements[6]; + + struct small_tag s1; + struct small_tag s2; + struct large_tag l1; + + int n; + struct small_tag res; + + s_type.size = 0; + s_type.alignment = 0; + s_type.type = FFI_TYPE_STRUCT; + s_type.elements = s_type_elements; + + s_type_elements[0] = &ffi_type_uchar; + s_type_elements[1] = &ffi_type_uchar; + s_type_elements[2] = NULL; + + l_type.size = 0; + l_type.alignment = 0; + l_type.type = FFI_TYPE_STRUCT; + l_type.elements = l_type_elements; + + l_type_elements[0] = &ffi_type_uint; + l_type_elements[1] = &ffi_type_uint; + l_type_elements[2] = &ffi_type_uint; + l_type_elements[3] = &ffi_type_uint; + l_type_elements[4] = &ffi_type_uint; + l_type_elements[5] = NULL; + + arg_types[0] = &ffi_type_sint; + arg_types[1] = &s_type; + arg_types[2] = &l_type; + arg_types[3] = &s_type; + arg_types[4] = NULL; + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &s_type, arg_types) == FFI_OK); + + s1.a = 5; + s1.b = 6; + + l1.a = 10; + l1.b = 11; + l1.c = 12; + l1.d = 13; + l1.e = 14; + + s2.a = 7; + s2.b = 8; + + n = 41; + + args[0] = &n; + args[1] = &s1; + args[2] = &l1; + args[3] = &s2; + args[4] = NULL; + + ffi_call(&cif, FFI_FN(test_fn), &res, args); + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d %d\n", res.a, res.b); + /* { dg-output "\nres: 12 14" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c new file mode 100644 index 0000000000..9a27e7fd4a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c @@ -0,0 +1,125 @@ +/* Area: ffi_call + Purpose: Test passing struct in variable argument lists. + Limitations: none. + PR: none. + Originator: ARM Ltd. */ + +/* { dg-do run } */ +/* { dg-output "" { xfail avr32*-*-* } } */ + +#include "ffitest.h" +#include + +struct small_tag +{ + unsigned char a; + unsigned char b; +}; + +struct large_tag +{ + unsigned a; + unsigned b; + unsigned c; + unsigned d; + unsigned e; +}; + +static struct large_tag +test_fn (int n, ...) +{ + va_list ap; + struct small_tag s1; + struct small_tag s2; + struct large_tag l; + + va_start (ap, n); + s1 = va_arg (ap, struct small_tag); + l = va_arg (ap, struct large_tag); + s2 = va_arg (ap, struct small_tag); + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); + va_end (ap); + l.a += s1.a; + l.b += s1.b; + l.c += s2.a; + l.d += s2.b; + return l; +} + +int +main (void) +{ + ffi_cif cif; + void* args[5]; + ffi_type* arg_types[5]; + + ffi_type s_type; + ffi_type *s_type_elements[3]; + + ffi_type l_type; + ffi_type *l_type_elements[6]; + + struct small_tag s1; + struct small_tag s2; + struct large_tag l1; + + int n; + struct large_tag res; + + s_type.size = 0; + s_type.alignment = 0; + s_type.type = FFI_TYPE_STRUCT; + s_type.elements = s_type_elements; + + s_type_elements[0] = &ffi_type_uchar; + s_type_elements[1] = &ffi_type_uchar; + s_type_elements[2] = NULL; + + l_type.size = 0; + l_type.alignment = 0; + l_type.type = FFI_TYPE_STRUCT; + l_type.elements = l_type_elements; + + l_type_elements[0] = &ffi_type_uint; + l_type_elements[1] = &ffi_type_uint; + l_type_elements[2] = &ffi_type_uint; + l_type_elements[3] = &ffi_type_uint; + l_type_elements[4] = &ffi_type_uint; + l_type_elements[5] = NULL; + + arg_types[0] = &ffi_type_sint; + arg_types[1] = &s_type; + arg_types[2] = &l_type; + arg_types[3] = &s_type; + arg_types[4] = NULL; + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &l_type, arg_types) == FFI_OK); + + s1.a = 5; + s1.b = 6; + + l1.a = 10; + l1.b = 11; + l1.c = 12; + l1.d = 13; + l1.e = 14; + + s2.a = 7; + s2.b = 8; + + n = 41; + + args[0] = &n; + args[1] = &s1; + args[2] = &l1; + args[3] = &s2; + args[4] = NULL; + + ffi_call(&cif, FFI_FN(test_fn), &res, args); + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e); + /* { dg-output "\nres: 15 17 19 21 14" } */ + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc new file mode 100644 index 0000000000..4a812edf05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc @@ -0,0 +1,91 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +typedef struct cls_struct_align { + unsigned char a; + _Complex T_C_TYPE b; + unsigned char c; +} cls_struct_align; + +cls_struct_align cls_struct_align_fn( + struct cls_struct_align a1, struct cls_struct_align a2) +{ + struct cls_struct_align result; + + result.a = a1.a + a2.a; + result.b = a1.b + a2.b; + result.c = a1.c + a2.c; + + printf("%d %f,%fi %d %d %f,%fi %d: %d %f,%fi %d\n", + a1.a, T_CONV creal (a1.b), T_CONV cimag (a1.b), a1.c, + a2.a, T_CONV creal (a2.b), T_CONV cimag (a2.b), a2.c, + result.a, T_CONV creal (result.b), T_CONV cimag (result.b), result.c); + + return result; +} + +static void +cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) +{ + + struct cls_struct_align a1, a2; + + a1 = *(struct cls_struct_align*)(args[0]); + a2 = *(struct cls_struct_align*)(args[1]); + + *(cls_struct_align*)resp = cls_struct_align_fn(a1, a2); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args_c[5]; + ffi_type* cls_struct_fields[4]; + ffi_type cls_struct_type; + ffi_type* c_arg_types[5]; + + struct cls_struct_align g_c = { 12, 4951 + 7 * I, 127 }; + struct cls_struct_align f_c = { 1, 9320 + 1 * I, 13 }; + struct cls_struct_align res_c; + + cls_struct_type.size = 0; + cls_struct_type.alignment = 0; + cls_struct_type.type = FFI_TYPE_STRUCT; + cls_struct_type.elements = cls_struct_fields; + + cls_struct_fields[0] = &ffi_type_uchar; + cls_struct_fields[1] = &T_FFI_TYPE; + cls_struct_fields[2] = &ffi_type_uchar; + cls_struct_fields[3] = NULL; + + c_arg_types[0] = &cls_struct_type; + c_arg_types[1] = &cls_struct_type; + c_arg_types[2] = NULL; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type, + c_arg_types) == FFI_OK); + + args_c[0] = &g_c; + args_c[1] = &f_c; + args_c[2] = NULL; + + ffi_call(&cif, FFI_FN(cls_struct_align_fn), &res_c, args_c); + /* { dg-output "12 4951,7i 127 1 9320,1i 13: 13 14271,8i 140" } */ + printf("res: %d %f,%fi %d\n", + res_c.a, T_CONV creal (res_c.b), T_CONV cimag (res_c.b), res_c.c); + /* { dg-output "\nres: 13 14271,8i 140" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_c = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_c, f_c); + /* { dg-output "\n12 4951,7i 127 1 9320,1i 13: 13 14271,8i 140" } */ + printf("res: %d %f,%fi %d\n", + res_c.a, T_CONV creal (res_c.b), T_CONV cimag (res_c.b), res_c.c); + /* { dg-output "\nres: 13 14271,8i 140" } */ + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c new file mode 100644 index 0000000000..0dff23ae47 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "cls_align_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c new file mode 100644 index 0000000000..0affbd07e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "cls_align_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c new file mode 100644 index 0000000000..7889ba859b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check structure alignment of complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "cls_align_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc new file mode 100644 index 0000000000..f9374044e8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc @@ -0,0 +1,42 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +static void cls_ret_complex_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + _Complex T_C_TYPE *pa; + _Complex T_C_TYPE *pr; + pa = (_Complex T_C_TYPE *)args[0]; + pr = (_Complex T_C_TYPE *)resp; + *pr = *pa; + + printf("%.6f,%.6fi: %.6f,%.6fi\n", + T_CONV creal (*pa), T_CONV cimag (*pa), + T_CONV creal (*pr), T_CONV cimag (*pr)); + } +typedef _Complex T_C_TYPE (*cls_ret_complex)(_Complex T_C_TYPE); + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type * cl_arg_types[2]; + _Complex T_C_TYPE res; + + cl_arg_types[0] = &T_FFI_TYPE; + cl_arg_types[1] = NULL; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &T_FFI_TYPE, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_complex_fn, NULL, code) == FFI_OK); + + res = (*((cls_ret_complex)code))(0.125 + 128.0 * I); + printf("res: %.6f,%.6fi\n", T_CONV creal (res), T_CONV cimag (res)); + CHECK (res == (0.125 + 128.0 * I)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c new file mode 100644 index 0000000000..05e35340e0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c @@ -0,0 +1,10 @@ +/* Area: closure_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "cls_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c new file mode 100644 index 0000000000..5df7849d4c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c @@ -0,0 +1,10 @@ +/* Area: closure_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "cls_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c new file mode 100644 index 0000000000..2b1c320a20 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c @@ -0,0 +1,10 @@ +/* Area: closure_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "cls_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc new file mode 100644 index 0000000000..df8708d1c4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc @@ -0,0 +1,71 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +typedef struct Cs { + _Complex T_C_TYPE x; + _Complex T_C_TYPE y; +} Cs; + +Cs gc; + +void +closure_test_fn(Cs p) +{ + printf("%.1f,%.1fi %.1f,%.1fi\n", + T_CONV creal (p.x), T_CONV cimag (p.x), + T_CONV creal (p.y), T_CONV cimag (p.y)); + gc = p; +} + +void +closure_test_gn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, + void** args, void* userdata __UNUSED__) +{ + closure_test_fn(*(Cs*)args[0]); +} + +int main(int argc __UNUSED__, char** argv __UNUSED__) +{ + ffi_cif cif; + + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + ffi_type *cl_arg_types[1]; + + ffi_type ts1_type; + ffi_type* ts1_type_elements[4]; + + Cs arg = { 1.0 + 11.0 * I, 2.0 + 22.0 * I}; + + ts1_type.size = 0; + ts1_type.alignment = 0; + ts1_type.type = FFI_TYPE_STRUCT; + ts1_type.elements = ts1_type_elements; + + ts1_type_elements[0] = &T_FFI_TYPE; + ts1_type_elements[1] = &T_FFI_TYPE; + ts1_type_elements[2] = NULL; + + cl_arg_types[0] = &ts1_type; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_void, cl_arg_types) == FFI_OK); + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK); + + gc.x = 0.0 + 0.0 * I; + gc.y = 0.0 + 0.0 * I; + ((void*(*)(Cs))(code))(arg); + /* { dg-output "1.0,11.0i 2.0,22.0i\n" } */ + CHECK (gc.x == arg.x && gc.y == arg.y); + + gc.x = 0.0 + 0.0 * I; + gc.y = 0.0 + 0.0 * I; + closure_test_fn(arg); + /* { dg-output "1.0,11.0i 2.0,22.0i\n" } */ + CHECK (gc.x == arg.x && gc.y == arg.y); + + return 0; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c new file mode 100644 index 0000000000..ec71346a3f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check complex arguments in structs. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "cls_complex_struct.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c new file mode 100644 index 0000000000..96fdf75043 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check complex arguments in structs. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "cls_complex_struct.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c new file mode 100644 index 0000000000..005b467398 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Check complex arguments in structs. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "cls_complex_struct.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc new file mode 100644 index 0000000000..8a3e15f0f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc @@ -0,0 +1,80 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include +#include +#include +#include + +static _Complex T_C_TYPE gComplexValue1 = 1 + 2 * I; +static _Complex T_C_TYPE gComplexValue2 = 3 + 4 * I; + +static int cls_variadic(const char *format, ...) +{ + va_list ap; + _Complex T_C_TYPE p1, p2; + + va_start (ap, format); + p1 = va_arg (ap, _Complex T_C_TYPE); + p2 = va_arg (ap, _Complex T_C_TYPE); + va_end (ap); + + return printf(format, T_CONV creal (p1), T_CONV cimag (p1), + T_CONV creal (p2), T_CONV cimag (p2)); +} + +static void +cls_complex_va_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) +{ + char* format = *(char**)args[0]; + gComplexValue1 = *(_Complex T_C_TYPE*)args[1]; + gComplexValue2 = *(_Complex T_C_TYPE*)args[2]; + + *(ffi_arg*)resp = + printf(format, + T_CONV creal (gComplexValue1), T_CONV cimag (gComplexValue1), + T_CONV creal (gComplexValue2), T_CONV cimag (gComplexValue2)); +} + +int main (void) +{ + ffi_cif cif; + void *code; + ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code); + void* args[4]; + ffi_type* arg_types[4]; + char *format = "%.1f,%.1fi %.1f,%.1fi\n"; + + _Complex T_C_TYPE complexArg1 = 1.0 + 22.0 *I; + _Complex T_C_TYPE complexArg2 = 333.0 + 4444.0 *I; + ffi_arg res = 0; + + arg_types[0] = &ffi_type_pointer; + arg_types[1] = &T_FFI_TYPE; + arg_types[2] = &T_FFI_TYPE; + arg_types[3] = NULL; + + /* This printf call is variadic */ + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 3, &ffi_type_sint, + arg_types) == FFI_OK); + + args[0] = &format; + args[1] = &complexArg1; + args[2] = &complexArg2; + args[3] = NULL; + + ffi_call(&cif, FFI_FN(cls_variadic), &res, args); + printf("res: %d\n", (int) res); + CHECK (res == 24); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_complex_va_fn, NULL, code) + == FFI_OK); + + res = ((int(*)(char *, ...))(code))(format, complexArg1, complexArg2); + CHECK (gComplexValue1 == complexArg1); + CHECK (gComplexValue2 == complexArg2); + printf("res: %d\n", (int) res); + CHECK (res == 24); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c new file mode 100644 index 0000000000..879ccf3b81 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Test complex' passed in variable argument lists. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "cls_complex_va.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c new file mode 100644 index 0000000000..2b17826045 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c @@ -0,0 +1,16 @@ +/* Area: ffi_call, closure_call + Purpose: Test complex' passed in variable argument lists. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +/* Alpha splits _Complex into two arguments. It's illegal to pass + float through varargs, so _Complex float goes badly. In sort of + gets passed as _Complex double, but the compiler doesn't agree + with itself on this issue. */ +/* { dg-do run { xfail alpha*-*-* } } */ + +#include "complex_defs_float.inc" +#include "cls_complex_va.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c new file mode 100644 index 0000000000..6eca9656ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call, closure_call + Purpose: Test complex' passed in variable argument lists. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "cls_complex_va.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp new file mode 100644 index 0000000000..4631db285a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp @@ -0,0 +1,36 @@ +# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +dg-init +libffi-init + +global srcdir subdir + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] + +if { [libffi_feature_test "#ifdef FFI_TARGET_HAS_COMPLEX_TYPE"] } { + run-many-tests $tlist "" +} else { + foreach test $tlist { + unsupported "$test" + } +} + +dg-finish + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc new file mode 100644 index 0000000000..515ae3e60d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc @@ -0,0 +1,51 @@ +/* -*-c-*-*/ +#include "ffitest.h" +#include + +static _Complex T_C_TYPE f_complex(_Complex T_C_TYPE c, int x, int *py) +{ + c = -(2 * creal (c)) + (cimag (c) + 1)* I; + *py += x; + + return c; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + + _Complex T_C_TYPE tc_arg; + _Complex T_C_TYPE tc_result; + int tc_int_arg_x; + int tc_y; + int *tc_ptr_arg_y = &tc_y; + + args[0] = &T_FFI_TYPE; + args[1] = &ffi_type_sint; + args[2] = &ffi_type_pointer; + values[0] = &tc_arg; + values[1] = &tc_int_arg_x; + values[2] = &tc_ptr_arg_y; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &T_FFI_TYPE, args) == FFI_OK); + + tc_arg = 1 + 7 * I; + tc_int_arg_x = 1234; + tc_y = 9876; + ffi_call(&cif, FFI_FN(f_complex), &tc_result, values); + + printf ("%f,%fi %f,%fi, x %d 1234, y %d 11110\n", + T_CONV creal (tc_result), T_CONV cimag (tc_result), + T_CONV creal (2.0), T_CONV creal (8.0), tc_int_arg_x, tc_y); + + CHECK (creal (tc_result) == -2); + CHECK (cimag (tc_result) == 8); + CHECK (tc_int_arg_x == 1234); + CHECK (*tc_ptr_arg_y == 11110); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc new file mode 100644 index 0000000000..3583e166d6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc @@ -0,0 +1,7 @@ +/* -*-c-*- */ +/* Complex base type. */ +#define T_FFI_TYPE ffi_type_complex_double +/* C type corresponding to the base type. */ +#define T_C_TYPE double +/* C cast for a value of type T_C_TYPE that is passed to printf. */ +#define T_CONV diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc new file mode 100644 index 0000000000..bbd9375cbf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc @@ -0,0 +1,7 @@ +/* -*-c-*- */ +/* Complex base type. */ +#define T_FFI_TYPE ffi_type_complex_float +/* C type corresponding to the base type. */ +#define T_C_TYPE float +/* C cast for a value of type T_C_TYPE that is passed to printf. */ +#define T_CONV (double) diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc new file mode 100644 index 0000000000..14b9f243f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc @@ -0,0 +1,7 @@ +/* -*-c-*- */ +/* Complex base type. */ +#define T_FFI_TYPE ffi_type_complex_longdouble +/* C type corresponding to the base type. */ +#define T_C_TYPE long double +/* C cast for a value of type T_C_TYPE that is passed to printf. */ +#define T_CONV diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c new file mode 100644 index 0000000000..8a3297b2a2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check complex types. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c new file mode 100644 index 0000000000..5044ebbcaa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check complex types. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c new file mode 100644 index 0000000000..bac319081e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c @@ -0,0 +1,86 @@ +/* Area: ffi_call + Purpose: Check non-standard complex types. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "ffitest.h" +#include "ffi.h" +#include + +_Complex int f_complex(_Complex int c, int x, int *py) +{ + __real__ c = -2 * __real__ c; + __imag__ c = __imag__ c + 1; + *py += x; + return c; +} + +/* + * This macro can be used to define new complex type descriptors + * in a platform independent way. + * + * name: Name of the new descriptor is ffi_type_complex_. + * type: The C base type of the complex type. + */ +#define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ + static ffi_type *ffi_elements_complex_##name [2] = { \ + (ffi_type *)(&ffitype), NULL \ + }; \ + struct struct_align_complex_##name { \ + char c; \ + _Complex type x; \ + }; \ + ffi_type ffi_type_complex_##name = { \ + sizeof(_Complex type), \ + offsetof(struct struct_align_complex_##name, x), \ + FFI_TYPE_COMPLEX, \ + (ffi_type **)ffi_elements_complex_##name \ + } + +/* Define new complex type descriptors using the macro: */ +/* ffi_type_complex_sint */ +FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); +/* ffi_type_complex_uchar */ +FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + + _Complex int tc_arg; + _Complex int tc_result; + int tc_int_arg_x; + int tc_y; + int *tc_ptr_arg_y = &tc_y; + + args[0] = &ffi_type_complex_sint; + args[1] = &ffi_type_sint; + args[2] = &ffi_type_pointer; + values[0] = &tc_arg; + values[1] = &tc_int_arg_x; + values[2] = &tc_ptr_arg_y; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &ffi_type_complex_sint, args) + == FFI_OK); + + tc_arg = 1 + 7 * I; + tc_int_arg_x = 1234; + tc_y = 9876; + ffi_call(&cif, FFI_FN(f_complex), &tc_result, values); + + printf ("%d,%di %d,%di, x %d 1234, y %d 11110\n", + (int)tc_result, (int)(tc_result * -I), 2, 8, tc_int_arg_x, tc_y); + /* dg-output "-2,8i 2,8i, x 1234 1234, y 11110 11110" */ + CHECK (creal (tc_result) == -2); + CHECK (cimag (tc_result) == 8); + CHECK (tc_int_arg_x == 1234); + CHECK (*tc_ptr_arg_y == 11110); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c new file mode 100644 index 0000000000..7e78366093 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check complex types. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h new file mode 100644 index 0000000000..d27d362d6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h @@ -0,0 +1 @@ +#include "../libffi.call/ffitest.h" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc new file mode 100644 index 0000000000..e37a774397 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc @@ -0,0 +1,78 @@ +/* -*-c-*- */ +#include "ffitest.h" + +#include +#include + +static _Complex T_C_TYPE many(_Complex T_C_TYPE c1, + _Complex T_C_TYPE c2, + _Complex T_C_TYPE c3, + _Complex T_C_TYPE c4, + _Complex T_C_TYPE c5, + _Complex T_C_TYPE c6, + _Complex T_C_TYPE c7, + _Complex T_C_TYPE c8, + _Complex T_C_TYPE c9, + _Complex T_C_TYPE c10, + _Complex T_C_TYPE c11, + _Complex T_C_TYPE c12, + _Complex T_C_TYPE c13) +{ + printf("0 :%f,%fi\n" + "1 :%f,%fi\n" + "2 :%f,%fi\n" + "3 :%f,%fi\n" + "4 :%f,%fi\n" + "5 :%f,%fi\n" + "6 :%f,%fi\n" + "7 :%f,%fi\n" + "8 :%f,%fi\n" + "9 :%f,%fi\n" + "10:%f,%fi\n" + "11:%f,%fi\n" + "12:%f,%fi\n", + T_CONV creal (c1), T_CONV cimag (c1), + T_CONV creal (c2), T_CONV cimag (c2), + T_CONV creal (c3), T_CONV cimag (c3), + T_CONV creal (c4), T_CONV cimag (c4), + T_CONV creal (c5), T_CONV cimag (c5), + T_CONV creal (c6), T_CONV cimag (c6), + T_CONV creal (c7), T_CONV cimag (c7), + T_CONV creal (c8), T_CONV cimag (c8), + T_CONV creal (c9), T_CONV cimag (c9), + T_CONV creal (c10), T_CONV cimag (c10), + T_CONV creal (c11), T_CONV cimag (c11), + T_CONV creal (c12), T_CONV cimag (c12), + T_CONV creal (c13), T_CONV cimag (c13)); + + return (c1+c2-c3-c4+c5+c6+c7-c8-c9-c10-c11+c12+c13); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[13]; + void *values[13]; + _Complex T_C_TYPE ca[13]; + _Complex T_C_TYPE c, cc; + int i; + + for (i = 0; i < 13; i++) + { + args[i] = &T_FFI_TYPE; + values[i] = &ca[i]; + ca[i] = i + (-20 - i) * I; + } + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, &T_FFI_TYPE, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(many), &c, values); + + cc = many(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7], ca[8], + ca[9], ca[10], ca[11], ca[12]); + CHECK(creal (cc) == creal (c)); + CHECK(cimag (cc) == cimag (c)); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c new file mode 100644 index 0000000000..3fd53c3354 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex, with many arguments + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "many_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c new file mode 100644 index 0000000000..c43d21cd9e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex, with many arguments + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "many_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c new file mode 100644 index 0000000000..dbab723969 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex, with many arguments + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "many_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc new file mode 100644 index 0000000000..8bf0c1fbab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc @@ -0,0 +1,37 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c) +{ + printf ("%f,%fi\n", T_CONV creal (c), T_CONV cimag (c)); + return 2 * c; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + _Complex T_C_TYPE c, rc, rc2; + T_C_TYPE cr, ci; + + args[0] = &T_FFI_TYPE; + values[0] = &c; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &T_FFI_TYPE, args) == FFI_OK); + + for (cr = -127.0; cr < 127; cr++) + { + ci = 1000.0 - cr; + c = cr + ci * I; + ffi_call(&cif, FFI_FN(return_c), &rc, values); + rc2 = return_c(c); + printf ("%f,%fi vs %f,%fi\n", + T_CONV creal (rc), T_CONV cimag (rc), + T_CONV creal (rc2), T_CONV cimag (rc2)); + CHECK(rc == 2 * c); + } + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc new file mode 100644 index 0000000000..7cecc0fefa --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc @@ -0,0 +1,41 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c1, float fl2, unsigned int in3, _Complex T_C_TYPE c4) +{ + return c1 + fl2 + in3 + c4; +} +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + _Complex T_C_TYPE c1, c4, rc, rc2; + float fl2; + unsigned int in3; + args[0] = &T_FFI_TYPE; + args[1] = &ffi_type_float; + args[2] = &ffi_type_uint; + args[3] = &T_FFI_TYPE; + values[0] = &c1; + values[1] = &fl2; + values[2] = &in3; + values[3] = &c4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &T_FFI_TYPE, args) == FFI_OK); + c1 = 127.0 + 255.0 * I; + fl2 = 128.0; + in3 = 255; + c4 = 512.7 + 1024.1 * I; + + ffi_call(&cif, FFI_FN(return_c), &rc, values); + rc2 = return_c(c1, fl2, in3, c4); + printf ("%f,%fi vs %f,%fi\n", + T_CONV creal (rc), T_CONV cimag (rc), + T_CONV creal (rc2), T_CONV cimag (rc2)); + CHECK(rc == rc2); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c new file mode 100644 index 0000000000..727410d563 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "return_complex1.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c new file mode 100644 index 0000000000..a2aeada847 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "return_complex1.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c new file mode 100644 index 0000000000..103504bf64 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "return_complex1.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc new file mode 100644 index 0000000000..265170bf71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc @@ -0,0 +1,44 @@ +/* -*-c-*- */ +#include "ffitest.h" +#include + +_Complex T_C_TYPE +return_c(_Complex T_C_TYPE c1, _Complex T_C_TYPE c2, + unsigned int in3, _Complex T_C_TYPE c4) +{ + volatile _Complex T_C_TYPE r = c1 + c2 + in3 + c4; + return r; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + _Complex T_C_TYPE c1, c2, c4, rc, rc2; + unsigned int in3; + args[0] = &T_FFI_TYPE; + args[1] = &T_FFI_TYPE; + args[2] = &ffi_type_uint; + args[3] = &T_FFI_TYPE; + values[0] = &c1; + values[1] = &c2; + values[2] = &in3; + values[3] = &c4; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4, + &T_FFI_TYPE, args) == FFI_OK); + c1 = 127.0 + 255.0 * I; + c2 = 128.0 + 256.0; + in3 = 255; + c4 = 512.7 + 1024.1 * I; + + ffi_call(&cif, FFI_FN(return_c), &rc, values); + rc2 = return_c(c1, c2, in3, c4); + printf ("%f,%fi vs %f,%fi\n", + T_CONV creal (rc), T_CONV cimag (rc), + T_CONV creal (rc2), T_CONV cimag (rc2)); + CHECK(rc == rc2); + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c new file mode 100644 index 0000000000..ab9efacb4a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "return_complex2.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c new file mode 100644 index 0000000000..d7f22c2a0c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "return_complex2.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c new file mode 100644 index 0000000000..3edea629df --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "return_complex2.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c new file mode 100644 index 0000000000..e2497cc84a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_double.inc" +#include "return_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c new file mode 100644 index 0000000000..a35528ff93 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_float.inc" +#include "return_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c new file mode 100644 index 0000000000..142d7becba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c @@ -0,0 +1,10 @@ +/* Area: ffi_call + Purpose: Check return value complex. + Limitations: none. + PR: none. + Originator: . */ + +/* { dg-do run } */ + +#include "complex_defs_longdouble.inc" +#include "return_complex.inc" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c new file mode 100644 index 0000000000..b00c404ab3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ + +#include "static-chain.h" + +#if defined(__GNUC__) && !defined(__clang__) && defined(STATIC_CHAIN_REG) + +#include "ffitest.h" + +/* Blatent assumption here that the prologue doesn't clobber the + static chain for trivial functions. If this is not true, don't + define STATIC_CHAIN_REG, and we'll test what we can via other tests. */ +void *doit(void) +{ + register void *chain __asm__(STATIC_CHAIN_REG); + return chain; +} + +int main() +{ + ffi_cif cif; + void *result; + + CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK); + + ffi_call_go(&cif, FFI_FN(doit), &result, NULL, &result); + + CHECK(result == &result); + + return 0; +} + +#else /* UNSUPPORTED */ +int main() { return 0; } +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c new file mode 100644 index 0000000000..7b34afc88c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c @@ -0,0 +1,28 @@ +/* { dg-do run } */ + +#include "ffitest.h" + +void doit(ffi_cif *cif, void *rvalue, void **avalue, void *closure) +{ + (void)cif; + (void)avalue; + *(void **)rvalue = closure; +} + +typedef void * (*FN)(void); + +int main() +{ + ffi_cif cif; + ffi_go_closure cl; + void *result; + + CHECK(ffi_prep_cif(&cif, ABI_NUM, 0, &ffi_type_pointer, NULL) == FFI_OK); + CHECK(ffi_prep_go_closure(&cl, &cif, doit) == FFI_OK); + + ffi_call_go(&cif, FFI_FN(*(FN *)&cl), &result, NULL, &cl); + + CHECK(result == &cl); + + exit(0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h new file mode 100644 index 0000000000..d27d362d6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h @@ -0,0 +1 @@ +#include "../libffi.call/ffitest.h" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/go.exp b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/go.exp new file mode 100644 index 0000000000..100c5e75b4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/go.exp @@ -0,0 +1,36 @@ +# Copyright (C) 2003, 2006, 2009, 2010, 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING3. If not see +# . + +dg-init +libffi-init + +global srcdir subdir + +set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] + +if { [libffi_feature_test "#ifdef FFI_GO_CLOSURES"] } { + run-many-tests $tlist "" +} else { + foreach test $tlist { + unsupported "$test" + } +} + +dg-finish + +# Local Variables: +# tcl-indent-level:4 +# End: diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h new file mode 100644 index 0000000000..3675b40a54 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h @@ -0,0 +1,19 @@ +#ifdef __aarch64__ +# define STATIC_CHAIN_REG "x18" +#elif defined(__alpha__) +# define STATIC_CHAIN_REG "$1" +#elif defined(__arm__) +# define STATIC_CHAIN_REG "ip" +#elif defined(__sparc__) +# if defined(__arch64__) || defined(__sparcv9) +# define STATIC_CHAIN_REG "g5" +# else +# define STATIC_CHAIN_REG "g2" +# endif +#elif defined(__x86_64__) +# define STATIC_CHAIN_REG "r10" +#elif defined(__i386__) +# ifndef ABI_NUM +# define STATIC_CHAIN_REG "ecx" /* FFI_DEFAULT_ABI only */ +# endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi.h new file mode 100644 index 0000000000..b6fe4774f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2008, 2009, Wayne Meissner + * + * Copyright (c) 2008-2013, Ruby FFI project contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Ruby FFI project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RBFFI_RBFFI_H +#define RBFFI_RBFFI_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAX_PARAMETERS (32) + +extern VALUE rbffi_FFIModule; + +extern void rbffi_Type_Init(VALUE ffiModule); +extern void rbffi_Buffer_Init(VALUE ffiModule); +extern void rbffi_Invoker_Init(VALUE ffiModule); +extern void rbffi_Variadic_Init(VALUE ffiModule); +extern void rbffi_DataConverter_Init(VALUE ffiModule); +extern VALUE rbffi_AbstractMemoryClass, rbffi_InvokerClass; +extern int rbffi_type_size(VALUE type); +extern void rbffi_Thread_Init(VALUE moduleFFI); + +#ifdef __cplusplus +} +#endif + +#endif /* RBFFI_RBFFI_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi_endian.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi_endian.h new file mode 100644 index 0000000000..ebb8420a6b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/rbffi_endian.h @@ -0,0 +1,59 @@ +#ifndef JFFI_ENDIAN_H +#define JFFI_ENDIAN_H + +#ifndef _MSC_VER +#include +#endif + +#include + +#if defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__) || defined(__GLIBC__) || defined(__HAIKU__) +# include +# if !defined(LITTLE_ENDIAN) && defined(__LITTLE_ENDIAN) +# define LITTLE_ENDIAN __LITTLE_ENDIAN +# endif +# if !defined(BIG_ENDIAN) && defined(__BIG_ENDIAN) +# define BIG_ENDIAN __BIG_ENDIAN +# endif +# if !defined(BYTE_ORDER) && defined(__BYTE_ORDER) +# define BYTE_ORDER __BYTE_ORDER +# endif +#endif + +#ifdef __sun +# include +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# if defined(_BIG_ENDIAN) +# define BYTE_ORDER BIG_ENDIAN +# elif defined(_LITTLE_ENDIAN) +# define BYTE_ORDER LITTLE_ENDIAN +# else +# error "Cannot determine endian-ness" +# endif +#endif + +#if defined(_AIX) && !defined(BYTE_ORDER) +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# if defined(__BIG_ENDIAN__) +# define BYTE_ORDER BIG_ENDIAN +# elif defined(__LITTLE_ENDIAN__) +# define BYTE_ORDER LITTLE_ENDIAN +# else +# error "Cannot determine endian-ness" +# endif +#endif + +#if defined(_WIN32) +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# define BYTE_ORDER LITTLE_ENDIAN +#endif + +#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || !defined(BIG_ENDIAN) +# error "Cannot determine the endian-ness of this platform" +#endif + +#endif /* JFFI_ENDIAN_H */ + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdbool.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdbool.h new file mode 100644 index 0000000000..9130a8b67f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdbool.h @@ -0,0 +1,8 @@ +#ifndef FFI_STDBOOL_H +#define FFI_STDBOOL_H + +typedef int bool; +#define true 1 +#define false 0 + +#endif /* FFI_STDBOOL_H */ \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdint.h b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdint.h new file mode 100644 index 0000000000..6ce74572fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ext/ffi_c/win32/stdint.h @@ -0,0 +1,201 @@ +/* stdint.h standard header */ +#if !defined(_MSC_VER) && !defined(INT8_MIN) +#pragma once +#ifndef _STDINT +#define _STDINT +#ifndef RC_INVOKED +#include + +/* NB: assumes + byte has 8 bits + long is 32 bits + pointer can convert to and from long long + long long is longest type + */ + +_C_STD_BEGIN + /* TYPE DEFINITIONS */ +typedef signed char int8_t; +typedef short int16_t; +typedef int int32_t; + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; + +typedef signed char int_least8_t; +typedef short int_least16_t; +typedef int int_least32_t; + +typedef unsigned char uint_least8_t; +typedef unsigned short uint_least16_t; +typedef unsigned int uint_least32_t; + +typedef char int_fast8_t; +typedef int int_fast16_t; +typedef int int_fast32_t; + +typedef unsigned char uint_fast8_t; +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; + +#ifndef _INTPTR_T_DEFINED + #define _INTPTR_T_DEFINED + #ifdef _WIN64 +typedef __int64 intptr_t; + #else /* _WIN64 */ +typedef _W64 int intptr_t; + #endif /* _WIN64 */ +#endif /* _INTPTR_T_DEFINED */ + +#ifndef _UINTPTR_T_DEFINED + #define _UINTPTR_T_DEFINED + #ifdef _WIN64 +typedef unsigned __int64 uintptr_t; + #else /* _WIN64 */ +typedef _W64 unsigned int uintptr_t; + #endif /* _WIN64 */ +#endif /* _UINTPTR_T_DEFINED */ + +typedef _Longlong int64_t; +typedef _ULonglong uint64_t; + +typedef _Longlong int_least64_t; +typedef _ULonglong uint_least64_t; + +typedef _Longlong int_fast64_t; +typedef _ULonglong uint_fast64_t; + +typedef _Longlong intmax_t; +typedef _ULonglong uintmax_t; + + /* LIMIT MACROS */ +#define INT8_MIN (-0x7f - _C2) +#define INT16_MIN (-0x7fff - _C2) +#define INT32_MIN (-0x7fffffff - _C2) + +#define INT8_MAX 0x7f +#define INT16_MAX 0x7fff +#define INT32_MAX 0x7fffffff +#define UINT8_MAX 0xff +#define UINT16_MAX 0xffff +#define UINT32_MAX 0xffffffff + +#define INT_LEAST8_MIN (-0x7f - _C2) +#define INT_LEAST16_MIN (-0x7fff - _C2) +#define INT_LEAST32_MIN (-0x7fffffff - _C2) + +#define INT_LEAST8_MAX 0x7f +#define INT_LEAST16_MAX 0x7fff +#define INT_LEAST32_MAX 0x7fffffff +#define UINT_LEAST8_MAX 0xff +#define UINT_LEAST16_MAX 0xffff +#define UINT_LEAST32_MAX 0xffffffff + +#define INT_FAST8_MIN (-0x7f - _C2) +#define INT_FAST16_MIN (-0x7fff - _C2) +#define INT_FAST32_MIN (-0x7fffffff - _C2) + +#define INT_FAST8_MAX 0x7f +#define INT_FAST16_MAX 0x7fff +#define INT_FAST32_MAX 0x7fffffff +#define UINT_FAST8_MAX 0xff +#define UINT_FAST16_MAX 0xffff +#define UINT_FAST32_MAX 0xffffffff + + #if _INTPTR == 0 || _INTPTR == 1 +#define INTPTR_MAX 0x7fffffff +#define INTPTR_MIN (-INTPTR_MAX - _C2) +#define UINTPTR_MAX 0xffffffff + + #else /* _INTPTR == 2 */ +#define INTPTR_MIN (-_LLONG_MAX - _C2) +#define INTPTR_MAX _LLONG_MAX +#define UINTPTR_MAX _ULLONG_MAX +#endif /* _INTPTR */ + +#define INT8_C(x) (x) +#define INT16_C(x) (x) +#define INT32_C(x) ((x) + (INT32_MAX - INT32_MAX)) + +#define UINT8_C(x) (x) +#define UINT16_C(x) (x) +#define UINT32_C(x) ((x) + (UINT32_MAX - UINT32_MAX)) + +#ifdef _WIN64 + #define PTRDIFF_MIN INT64_MIN + #define PTRDIFF_MAX INT64_MAX +#else /* _WIN64 */ + #define PTRDIFF_MIN INT32_MIN + #define PTRDIFF_MAX INT32_MAX +#endif /* _WIN64 */ + +#define SIG_ATOMIC_MIN INT32_MIN +#define SIG_ATOMIC_MAX INT32_MAX + +#ifndef SIZE_MAX + #ifdef _WIN64 + #define SIZE_MAX UINT64_MAX + #else /* _WIN64 */ + #define SIZE_MAX UINT32_MAX + #endif /* _WIN64 */ +#endif /* SIZE_MAX */ + +#define WCHAR_MIN 0x0000 +#define WCHAR_MAX 0xffff + +#define WINT_MIN 0x0000 +#define WINT_MAX 0xffff + + #define INT64_MIN (-0x7fffffffffffffff - _C2) + #define INT64_MAX 0x7fffffffffffffff + #define UINT64_MAX 0xffffffffffffffffU + + #define INT_LEAST64_MIN (-0x7fffffffffffffff - _C2) + #define INT_LEAST64_MAX 0x7fffffffffffffff + #define UINT_LEAST64_MAX 0xffffffffffffffffU + + #define INT_FAST64_MIN (-0x7fffffffffffffff - _C2) + #define INT_FAST64_MAX 0x7fffffffffffffff + #define UINT_FAST64_MAX 0xffffffffffffffffU + + #define INTMAX_MIN (-0x7fffffffffffffff - _C2) + #define INTMAX_MAX 0x7fffffffffffffff + #define UINTMAX_MAX 0xffffffffffffffffU + +#define INT64_C(x) ((x) + (INT64_MAX - INT64_MAX)) +#define UINT64_C(x) ((x) + (UINT64_MAX - UINT64_MAX)) +#define INTMAX_C(x) INT64_C(x) +#define UINTMAX_C(x) UINT64_C(x) +_C_STD_END +#endif /* RC_INVOKED */ +#endif /* _STDINT */ + + #if defined(_STD_USING) +using _CSTD int8_t; using _CSTD int16_t; +using _CSTD int32_t; using _CSTD int64_t; + +using _CSTD uint8_t; using _CSTD uint16_t; +using _CSTD uint32_t; using _CSTD uint64_t; + +using _CSTD int_least8_t; using _CSTD int_least16_t; +using _CSTD int_least32_t; using _CSTD int_least64_t; +using _CSTD uint_least8_t; using _CSTD uint_least16_t; +using _CSTD uint_least32_t; using _CSTD uint_least64_t; + +using _CSTD intmax_t; using _CSTD uintmax_t; + +using _CSTD uintptr_t; +using _CSTD intptr_t; + +using _CSTD int_fast8_t; using _CSTD int_fast16_t; +using _CSTD int_fast32_t; using _CSTD int_fast64_t; +using _CSTD uint_fast8_t; using _CSTD uint_fast16_t; +using _CSTD uint_fast32_t; using _CSTD uint_fast64_t; + #endif /* defined(_STD_USING) */ + +/* + * Copyright (c) 1992-2009 by P.J. Plauger. ALL RIGHTS RESERVED. + * Consult your license regarding permissions and restrictions. +V5.20:0009 */ +#endif /* !defined(_MSC_VER) && !defined(INT8_MIN) */ \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ffi.gemspec b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ffi.gemspec new file mode 100644 index 0000000000..cefb29708c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/ffi.gemspec @@ -0,0 +1,36 @@ +require File.expand_path("../lib/#{File.basename(__FILE__, '.gemspec')}/version", __FILE__) + +Gem::Specification.new do |s| + s.name = 'ffi' + s.version = FFI::VERSION + s.author = 'Wayne Meissner' + s.email = 'wmeissner@gmail.com' + s.homepage = 'http://wiki.github.com/ffi/ffi' + s.summary = 'Ruby FFI' + s.description = 'Ruby FFI library' + s.files = `git ls-files -z`.split("\x0").reject do |f| + f =~ /^(bench|gen|libtest|nbproject|spec)/ + end + + # Add libffi git files + lfs = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0") + # Add autoconf generated files of libffi + lfs += %w[ configure config.guess config.sub install-sh ltmain.sh missing fficonfig.h.in ] + # Add automake generated files of libffi + lfs += `git --git-dir ext/ffi_c/libffi/.git ls-files -z *.am */*.am`.gsub(".am\0", ".in\0").split("\x0") + s.files += lfs.map do |f| + File.join("ext/ffi_c/libffi", f) + end + + s.extensions << 'ext/ffi_c/extconf.rb' + s.has_rdoc = false + s.rdoc_options = %w[--exclude=ext/ffi_c/.*\.o$ --exclude=ffi_c\.(bundle|so)$] + s.license = 'BSD-3-Clause' + s.require_paths << 'ext/ffi_c' + s.required_ruby_version = '>= 1.9' + s.add_development_dependency 'rake', '~> 10.1' + s.add_development_dependency 'rake-compiler', '~> 1.0' + s.add_development_dependency 'rake-compiler-dock', '~> 0.6.2' + s.add_development_dependency 'rspec', '~> 2.14.1' + s.add_development_dependency 'rubygems-tasks', "~> 0.2.4" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi.rb new file mode 100644 index 0000000000..361e53d703 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi.rb @@ -0,0 +1,20 @@ +if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx' + Object.send(:remove_const, :FFI) if defined?(::FFI) + begin + require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c' + rescue Exception + require 'ffi_c' + end + + require 'ffi/ffi' + +elsif defined?(RUBY_ENGINE) + # Remove the ffi gem dir from the load path, then reload the internal ffi implementation + $LOAD_PATH.delete(File.dirname(__FILE__)) + $LOAD_PATH.delete(File.join(File.dirname(__FILE__), 'ffi')) + unless $LOADED_FEATURES.nil? + $LOADED_FEATURES.delete(__FILE__) + $LOADED_FEATURES.delete('ffi.rb') + end + require 'ffi.rb' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/autopointer.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/autopointer.rb new file mode 100644 index 0000000000..889a3e395c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/autopointer.rb @@ -0,0 +1,203 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# Copyright (C) 2008 Mike Dalessio +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +module FFI + class AutoPointer < Pointer + extend DataConverter + + # @overload initialize(pointer, method) + # @param pointer [Pointer] + # @param method [Method] + # @return [self] + # The passed Method will be invoked at GC time. + # @overload initialize(pointer, proc) + # @param pointer [Pointer] + # @return [self] + # The passed Proc will be invoked at GC time (SEE WARNING BELOW!) + # @note WARNING: passing a proc _may_ cause your pointer to never be + # GC'd, unless you're careful to avoid trapping a reference to the + # pointer in the proc. See the test specs for examples. + # @overload initialize(pointer) { |p| ... } + # @param pointer [Pointer] + # @yieldparam [Pointer] p +pointer+ passed to the block + # @return [self] + # The passed block will be invoked at GC time. + # @note + # WARNING: passing a block will cause your pointer to never be GC'd. + # This is bad. + # @overload initialize(pointer) + # @param pointer [Pointer] + # @return [self] + # The pointer's release() class method will be invoked at GC time. + # + # @note The safest, and therefore preferred, calling + # idiom is to pass a Method as the second parameter. Example usage: + # + # class PointerHelper + # def self.release(pointer) + # ... + # end + # end + # + # p = AutoPointer.new(other_pointer, PointerHelper.method(:release)) + # + # The above code will cause PointerHelper#release to be invoked at GC time. + # + # @note + # The last calling idiom (only one parameter) is generally only + # going to be useful if you subclass {AutoPointer}, and override + # #release, which by default does nothing. + def initialize(ptr, proc=nil, &block) + super(ptr.type_size, ptr) + raise TypeError, "Invalid pointer" if ptr.nil? || !ptr.kind_of?(Pointer) \ + || ptr.kind_of?(MemoryPointer) || ptr.kind_of?(AutoPointer) + + @releaser = if proc + if not proc.respond_to?(:call) + raise RuntimeError.new("proc must be callable") + end + CallableReleaser.new(ptr, proc) + + else + if not self.class.respond_to?(:release) + raise RuntimeError.new("no release method defined") + end + DefaultReleaser.new(ptr, self.class) + end + + ObjectSpace.define_finalizer(self, @releaser) + self + end + + # @return [nil] + # Free the pointer. + def free + @releaser.free + end + + # @param [Boolean] autorelease + # @return [Boolean] +autorelease+ + # Set +autorelease+ property. See {Pointer Autorelease section at Pointer}. + def autorelease=(autorelease) + @releaser.autorelease=(autorelease) + end + + # @return [Boolean] +autorelease+ + # Get +autorelease+ property. See {Pointer Autorelease section at Pointer}. + def autorelease? + @releaser.autorelease + end + + # @abstract Base class for {AutoPointer}'s releasers. + # + # All subclasses of Releaser should define a +#release(ptr)+ method. + # A releaser is an object in charge of release an {AutoPointer}. + class Releaser + attr_accessor :autorelease + + # @param [Pointer] ptr + # @param [#call] proc + # @return [nil] + # A new instance of Releaser. + def initialize(ptr, proc) + @ptr = ptr + @proc = proc + @autorelease = true + end + + # @return [nil] + # Free pointer. + def free + if @ptr + release(@ptr) + @autorelease = false + @ptr = nil + @proc = nil + end + end + + # @param args + # Release pointer if +autorelease+ is set. + def call(*args) + release(@ptr) if @autorelease && @ptr + end + end + + # DefaultReleaser is a {Releaser} used when an {AutoPointer} is defined + # without Proc or Method. In this case, the pointer to release must be of + # a class derived from AutoPointer with a {release} class method. + class DefaultReleaser < Releaser + # @param [Pointer] ptr + # @return [nil] + # Release +ptr+ using the {release} class method of its class. + def release(ptr) + @proc.release(ptr) + end + end + + # CallableReleaser is a {Releaser} used when an {AutoPointer} is defined with a + # Proc or a Method. + class CallableReleaser < Releaser + # Release +ptr+ by using Proc or Method defined at +ptr+ + # {AutoPointer#initialize initialization}. + # + # @param [Pointer] ptr + # @return [nil] + def release(ptr) + @proc.call(ptr) + end + end + + # Return native type of AutoPointer. + # + # Override {DataConverter#native_type}. + # @return [Type::POINTER] + # @raise {RuntimeError} if class does not implement a +#release+ method + def self.native_type + if not self.respond_to?(:release) + raise RuntimeError.new("no release method defined for #{self.inspect}") + end + Type::POINTER + end + + # Create a new AutoPointer. + # + # Override {DataConverter#from_native}. + # @overload self.from_native(ptr, ctx) + # @param [Pointer] ptr + # @param ctx not used. Please set +nil+. + # @return [AutoPointer] + def self.from_native(val, ctx) + self.new(val) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/buffer.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/buffer.rb new file mode 100644 index 0000000000..449e45b0de --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/buffer.rb @@ -0,0 +1,4 @@ +# +# All the code from this file is now implemented in C. This file remains +# to satisfy any leftover require 'ffi/buffer' in user code +# diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/callback.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/callback.rb new file mode 100644 index 0000000000..32d52f7214 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/callback.rb @@ -0,0 +1,4 @@ +# +# All the code from this file is now implemented in C. This file remains +# to satisfy any leftover require 'ffi/callback' in user code +# diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/enum.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/enum.rb new file mode 100644 index 0000000000..8fcb498595 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/enum.rb @@ -0,0 +1,296 @@ +# +# Copyright (C) 2009, 2010 Wayne Meissner +# Copyright (C) 2009 Luc Heinrich +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +module FFI + + # An instance of this class permits to manage {Enum}s. In fact, Enums is a collection of {Enum}s. + class Enums + + # @return [nil] + def initialize + @all_enums = Array.new + @tagged_enums = Hash.new + @symbol_map = Hash.new + end + + # @param [Enum] enum + # Add an {Enum} to the collection. + def <<(enum) + @all_enums << enum + @tagged_enums[enum.tag] = enum unless enum.tag.nil? + @symbol_map.merge!(enum.symbol_map) + end + + # @param query enum tag or part of an enum name + # @return [Enum] + # Find a {Enum} in collection. + def find(query) + if @tagged_enums.has_key?(query) + @tagged_enums[query] + else + @all_enums.detect { |enum| enum.symbols.include?(query) } + end + end + + # @param symbol a symbol to find in merge symbol maps of all enums. + # @return a symbol + def __map_symbol(symbol) + @symbol_map[symbol] + end + + end + + # Represents a C enum. + # + # For a C enum: + # enum fruits { + # apple, + # banana, + # orange, + # pineapple + # }; + # are defined this vocabulary: + # * a _symbol_ is a word from the enumeration (ie. _apple_, by example); + # * a _value_ is the value of a symbol in the enumeration (by example, apple has value _0_ and banana _1_). + class Enum + include DataConverter + + attr_reader :tag + attr_reader :native_type + + # @overload initialize(info, tag=nil) + # @param [nil, Enumerable] info + # @param [nil, Symbol] tag enum tag + # @overload initialize(native_type, info, tag=nil) + # @param [FFI::Type] native_type Native type for new Enum + # @param [nil, Enumerable] info symbols and values for new Enum + # @param [nil, Symbol] tag name of new Enum + def initialize(*args) + @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT + info, @tag = *args + @kv_map = Hash.new + unless info.nil? + last_cst = nil + value = 0 + info.each do |i| + case i + when Symbol + raise ArgumentError, "duplicate enum key" if @kv_map.has_key?(i) + @kv_map[i] = value + last_cst = i + value += 1 + when Integer + @kv_map[last_cst] = i + value = i+1 + end + end + end + @vk_map = @kv_map.invert + end + + # @return [Array] enum symbol names + def symbols + @kv_map.keys + end + + # Get a symbol or a value from the enum. + # @overload [](query) + # Get enum value from symbol. + # @param [Symbol] query + # @return [Integer] + # @overload [](query) + # Get enum symbol from value. + # @param [Integer] query + # @return [Symbol] + def [](query) + case query + when Symbol + @kv_map[query] + when Integer + @vk_map[query] + end + end + alias find [] + + # Get the symbol map. + # @return [Hash] + def symbol_map + @kv_map + end + + alias to_h symbol_map + alias to_hash symbol_map + + # @param [Symbol, Integer, #to_int] val + # @param ctx unused + # @return [Integer] value of a enum symbol + def to_native(val, ctx) + @kv_map[val] || if val.is_a?(Integer) + val + elsif val.respond_to?(:to_int) + val.to_int + else + raise ArgumentError, "invalid enum value, #{val.inspect}" + end + end + + # @param val + # @return symbol name if it exists for +val+. + def from_native(val, ctx) + @vk_map[val] || val + end + end + + # Represents a C enum whose values are power of 2 + # + # @example + # enum { + # red = (1<<0), + # green = (1<<1), + # blue = (1<<2) + # } + # + # Contrary to classical enums, bitmask values are usually combined + # when used. + class Bitmask < Enum + + # @overload initialize(info, tag=nil) + # @param [nil, Enumerable] info symbols and bit rank for new Bitmask + # @param [nil, Symbol] tag name of new Bitmask + # @overload initialize(native_type, info, tag=nil) + # @param [FFI::Type] native_type Native type for new Bitmask + # @param [nil, Enumerable] info symbols and bit rank for new Bitmask + # @param [nil, Symbol] tag name of new Bitmask + def initialize(*args) + @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT + info, @tag = *args + @kv_map = Hash.new + unless info.nil? + last_cst = nil + value = 0 + info.each do |i| + case i + when Symbol + raise ArgumentError, "duplicate bitmask key" if @kv_map.has_key?(i) + @kv_map[i] = 1 << value + last_cst = i + value += 1 + when Integer + raise ArgumentError, "bitmask index should be positive" if i<0 + @kv_map[last_cst] = 1 << i + value = i+1 + end + end + end + @vk_map = @kv_map.invert + end + + # Get a symbol list or a value from the bitmask + # @overload [](*query) + # Get bitmask value from symbol list + # @param [Symbol] query + # @return [Integer] + # @overload [](query) + # Get bitmaks value from symbol array + # @param [Array] query + # @return [Integer] + # @overload [](*query) + # Get a list of bitmask symbols corresponding to + # the or reduction of a list of integer + # @param [Integer] query + # @return [Array] + # @overload [](query) + # Get a list of bitmask symbols corresponding to + # the or reduction of a list of integer + # @param [Array] query + # @return [Array] + def [](*query) + flat_query = query.flatten + raise ArgumentError, "query should be homogeneous, #{query.inspect}" unless flat_query.all? { |o| o.is_a?(Symbol) } || flat_query.all? { |o| o.is_a?(Integer) || o.respond_to?(:to_int) } + case flat_query[0] + when Symbol + flat_query.inject(0) do |val, o| + v = @kv_map[o] + if v then val |= v else val end + end + when Integer, ->(o) { o.respond_to?(:to_int) } + val = flat_query.inject(0) { |mask, o| mask |= o.to_int } + @kv_map.select { |_, v| v & val != 0 }.keys + end + end + + # Get the native value of a bitmask + # @overload to_native(query, ctx) + # @param [Symbol, Integer, #to_int] query + # @param ctx unused + # @return [Integer] value of a bitmask + # @overload to_native(query, ctx) + # @param [Array] query + # @param ctx unused + # @return [Integer] value of a bitmask + def to_native(query, ctx) + return 0 if query.nil? + flat_query = [query].flatten + flat_query.inject(0) do |val, o| + case o + when Symbol + v = @kv_map[o] + raise ArgumentError, "invalid bitmask value, #{o.inspect}" unless v + val |= v + when Integer + val |= o + when ->(obj) { obj.respond_to?(:to_int) } + val |= o.to_int + else + raise ArgumentError, "invalid bitmask value, #{o.inspect}" + end + end + end + + # @param [Integer] val + # @param ctx unused + # @return [Array] list of symbol names corresponding to val, plus an optional remainder if some bits don't match any constant + def from_native(val, ctx) + list = @kv_map.select { |_, v| v & val != 0 }.keys + # If there are unmatch flags, + # return them in an integer, + # else information can be lost. + # Similar to Enum behavior. + remainder = val ^ list.inject(0) do |tmp, o| + v = @kv_map[o] + if v then tmp |= v else tmp end + end + list.push remainder unless remainder == 0 + return list + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/errno.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/errno.rb new file mode 100644 index 0000000000..de82d891fb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/errno.rb @@ -0,0 +1,43 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# + +module FFI + # @return (see FFI::LastError.error) + # @see FFI::LastError.error + def self.errno + FFI::LastError.error + end + # @param error (see FFI::LastError.error=) + # @return (see FFI::LastError.error=) + # @see FFI::LastError.error= + def self.errno=(error) + FFI::LastError.error = error + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/ffi.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/ffi.rb new file mode 100644 index 0000000000..11d451f0a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/ffi.rb @@ -0,0 +1,44 @@ +# +# Copyright (C) 2008-2010 JRuby project +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +require 'ffi/platform' +require 'ffi/types' +require 'ffi/library' +require 'ffi/errno' +require 'ffi/pointer' +require 'ffi/memorypointer' +require 'ffi/struct' +require 'ffi/union' +require 'ffi/managedstruct' +require 'ffi/callback' +require 'ffi/io' +require 'ffi/autopointer' +require 'ffi/variadic' +require 'ffi/enum' diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/io.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/io.rb new file mode 100644 index 0000000000..7fa1cf7fd5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/io.rb @@ -0,0 +1,62 @@ +# +# Copyright (C) 2008, 2009 Wayne Meissner +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# + +module FFI + + # This module implements a couple of class methods to play with IO. + module IO + # @param [Integer] fd file decriptor + # @param [String] mode mode string + # @return [::IO] + # Synonym for IO::for_fd. + def self.for_fd(fd, mode = "r") + ::IO.for_fd(fd, mode) + end + + # @param [#read] io io to read from + # @param [AbstractMemory] buf destination for data read from +io+ + # @param [nil, Numeric] len maximul number of bytes to read from +io+. If +nil+, + # read until end of file. + # @return [Numeric] length really read, in bytes + # + # A version of IO#read that reads data from an IO and put then into a native buffer. + # + # This will be optimized at some future time to eliminate the double copy. + # + def self.native_read(io, buf, len) + tmp = io.read(len) + return -1 unless tmp + buf.put_bytes(0, tmp) + tmp.length + end + + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/library.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/library.rb new file mode 100644 index 0000000000..93352dfaae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/library.rb @@ -0,0 +1,588 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# + +module FFI + CURRENT_PROCESS = USE_THIS_PROCESS_AS_LIBRARY = Object.new + + # @param [#to_s] lib library name + # @return [String] library name formatted for current platform + # Transform a generic library name to a platform library name + # @example + # # Linux + # FFI.map_library_name 'c' # -> "libc.so.6" + # FFI.map_library_name 'jpeg' # -> "libjpeg.so" + # # Windows + # FFI.map_library_name 'c' # -> "msvcrt.dll" + # FFI.map_library_name 'jpeg' # -> "jpeg.dll" + def self.map_library_name(lib) + # Mangle the library name to reflect the native library naming conventions + lib = Library::LIBC if lib == 'c' + + if lib && File.basename(lib) == lib + lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/ + r = Platform::IS_GNU ? "\\.so($|\\.[1234567890]+)" : "\\.#{Platform::LIBSUFFIX}$" + lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/ + end + + lib + end + + # Exception raised when a function is not found in libraries + class NotFoundError < LoadError + def initialize(function, *libraries) + super("Function '#{function}' not found in [#{libraries[0].nil? ? 'current process' : libraries.join(", ")}]") + end + end + + # This module is the base to use native functions. + # + # A basic usage may be: + # require 'ffi' + # + # module Hello + # extend FFI::Library + # ffi_lib FFI::Library::LIBC + # attach_function 'puts', [ :string ], :int + # end + # + # Hello.puts("Hello, World") + # + # + module Library + CURRENT_PROCESS = FFI::CURRENT_PROCESS + LIBC = FFI::Platform::LIBC + + # @param mod extended object + # @return [nil] + # @raise {RuntimeError} if +mod+ is not a Module + # Test if extended object is a Module. If not, raise RuntimeError. + def self.extended(mod) + raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(Module) + end + + + # @param [Array] names names of libraries to load + # @return [Array] + # @raise {LoadError} if a library cannot be opened + # Load native libraries. + def ffi_lib(*names) + raise LoadError.new("library names list must not be empty") if names.empty? + + lib_flags = defined?(@ffi_lib_flags) ? @ffi_lib_flags : FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_LOCAL + ffi_libs = names.map do |name| + + if name == FFI::CURRENT_PROCESS + FFI::DynamicLibrary.open(nil, FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_LOCAL) + + else + libnames = (name.is_a?(::Array) ? name : [ name ]).map(&:to_s).map { |n| [ n, FFI.map_library_name(n) ].uniq }.flatten.compact + lib = nil + errors = {} + + libnames.each do |libname| + begin + orig = libname + lib = FFI::DynamicLibrary.open(libname, lib_flags) + break if lib + + rescue Exception => ex + ldscript = false + if ex.message =~ /(([^ \t()])+\.so([^ \t:()])*):([ \t])*(invalid ELF header|file too short|invalid file format)/ + if File.read($1) =~ /(?:GROUP|INPUT) *\( *([^ \)]+)/ + libname = $1 + ldscript = true + end + end + + if ldscript + retry + else + # TODO better library lookup logic + unless libname.start_with?("/") || FFI::Platform.windows? + path = ['/usr/lib/','/usr/local/lib/','/opt/local/lib/'].find do |pth| + File.exist?(pth + libname) + end + if path + libname = path + libname + retry + end + end + + libr = (orig == libname ? orig : "#{orig} #{libname}") + errors[libr] = ex + end + end + end + + if lib.nil? + raise LoadError.new(errors.values.join(".\n")) + end + + # return the found lib + lib + end + end + + @ffi_libs = ffi_libs + end + + # Set the calling convention for {#attach_function} and {#callback} + # + # @see http://en.wikipedia.org/wiki/Stdcall#stdcall + # @note +:stdcall+ is typically used for attaching Windows API functions + # + # @param [Symbol] convention one of +:default+, +:stdcall+ + # @return [Symbol] the new calling convention + def ffi_convention(convention = nil) + @ffi_convention ||= :default + @ffi_convention = convention if convention + @ffi_convention + end + + # @see #ffi_lib + # @return [Array] array of currently loaded FFI libraries + # @raise [LoadError] if no libraries have been loaded (using {#ffi_lib}) + # Get FFI libraries loaded using {#ffi_lib}. + def ffi_libraries + raise LoadError.new("no library specified") if !defined?(@ffi_libs) || @ffi_libs.empty? + @ffi_libs + end + + # Flags used in {#ffi_lib}. + # + # This map allows you to supply symbols to {#ffi_lib_flags} instead of + # the actual constants. + FlagsMap = { + :global => DynamicLibrary::RTLD_GLOBAL, + :local => DynamicLibrary::RTLD_LOCAL, + :lazy => DynamicLibrary::RTLD_LAZY, + :now => DynamicLibrary::RTLD_NOW + } + + # Sets library flags for {#ffi_lib}. + # + # @example + # ffi_lib_flags(:lazy, :local) # => 5 + # + # @param [Symbol, …] flags (see {FlagsMap}) + # @return [Fixnum] the new value + def ffi_lib_flags(*flags) + @ffi_lib_flags = flags.inject(0) { |result, f| result | FlagsMap[f] } + end + + + ## + # @overload attach_function(func, args, returns, options = {}) + # @example attach function without an explicit name + # module Foo + # extend FFI::Library + # ffi_lib FFI::Library::LIBC + # attach_function :malloc, [:size_t], :pointer + # end + # # now callable via Foo.malloc + # @overload attach_function(name, func, args, returns, options = {}) + # @example attach function with an explicit name + # module Bar + # extend FFI::Library + # ffi_lib FFI::Library::LIBC + # attach_function :c_malloc, :malloc, [:size_t], :pointer + # end + # # now callable via Bar.c_malloc + # + # Attach C function +func+ to this module. + # + # + # @param [#to_s] name name of ruby method to attach as + # @param [#to_s] func name of C function to attach + # @param [Array] args an array of types + # @param [Symbol] returns type of return value + # @option options [Boolean] :blocking (@blocking) set to true if the C function is a blocking call + # @option options [Symbol] :convention (:default) calling convention (see {#ffi_convention}) + # @option options [FFI::Enums] :enums + # @option options [Hash] :type_map + # + # @return [FFI::VariadicInvoker] + # + # @raise [FFI::NotFoundError] if +func+ cannot be found in the attached libraries (see {#ffi_lib}) + def attach_function(name, func, args, returns = nil, options = nil) + mname, a2, a3, a4, a5 = name, func, args, returns, options + cname, arg_types, ret_type, opts = (a4 && (a2.is_a?(String) || a2.is_a?(Symbol))) ? [ a2, a3, a4, a5 ] : [ mname.to_s, a2, a3, a4 ] + + # Convert :foo to the native type + arg_types = arg_types.map { |e| find_type(e) } + options = { + :convention => ffi_convention, + :type_map => defined?(@ffi_typedefs) ? @ffi_typedefs : nil, + :blocking => defined?(@blocking) && @blocking, + :enums => defined?(@ffi_enums) ? @ffi_enums : nil, + } + + @blocking = false + options.merge!(opts) if opts && opts.is_a?(Hash) + + # Try to locate the function in any of the libraries + invokers = [] + ffi_libraries.each do |lib| + if invokers.empty? + begin + function = nil + function_names(cname, arg_types).find do |fname| + function = lib.find_function(fname) + end + raise LoadError unless function + + invokers << if arg_types.length > 0 && arg_types[arg_types.length - 1] == FFI::NativeType::VARARGS + VariadicInvoker.new(function, arg_types, find_type(ret_type), options) + + else + Function.new(find_type(ret_type), arg_types, function, options) + end + + rescue LoadError + end + end + end + invoker = invokers.compact.shift + raise FFI::NotFoundError.new(cname.to_s, ffi_libraries.map { |lib| lib.name }) unless invoker + + invoker.attach(self, mname.to_s) + invoker + end + + # @param [#to_s] name function name + # @param [Array] arg_types function's argument types + # @return [Array] + # This function returns a list of possible names to lookup. + # @note Function names on windows may be decorated if they are using stdcall. See + # * http://en.wikipedia.org/wiki/Name_mangling#C_name_decoration_in_Microsoft_Windows + # * http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=VS.100%29.aspx + # * http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions#STDCALL + # Note that decorated names can be overridden via def files. Also note that the + # windows api, although using, doesn't have decorated names. + def function_names(name, arg_types) + result = [name.to_s] + if ffi_convention == :stdcall + # Get the size of each parameter + size = arg_types.inject(0) do |mem, arg| + size = arg.size + # The size must be a multiple of 4 + size += (4 - size) % 4 + mem + size + end + + result << "_#{name.to_s}@#{size}" # win32 + result << "#{name.to_s}@#{size}" # win64 + end + result + end + + # @overload attach_variable(mname, cname, type) + # @param [#to_s] mname name of ruby method to attach as + # @param [#to_s] cname name of C variable to attach + # @param [DataConverter, Struct, Symbol, Type] type C variable's type + # @example + # module Bar + # extend FFI::Library + # ffi_lib 'my_lib' + # attach_variable :c_myvar, :myvar, :long + # end + # # now callable via Bar.c_myvar + # @overload attach_variable(cname, type) + # @param [#to_s] mname name of ruby method to attach as + # @param [DataConverter, Struct, Symbol, Type] type C variable's type + # @example + # module Bar + # extend FFI::Library + # ffi_lib 'my_lib' + # attach_variable :myvar, :long + # end + # # now callable via Bar.myvar + # @return [DynamicLibrary::Symbol] + # @raise {FFI::NotFoundError} if +cname+ cannot be found in libraries + # + # Attach C variable +cname+ to this module. + def attach_variable(mname, a1, a2 = nil) + cname, type = a2 ? [ a1, a2 ] : [ mname.to_s, a1 ] + address = nil + ffi_libraries.each do |lib| + begin + address = lib.find_variable(cname.to_s) + break unless address.nil? + rescue LoadError + end + end + + raise FFI::NotFoundError.new(cname, ffi_libraries) if address.nil? || address.null? + if type.is_a?(Class) && type < FFI::Struct + # If it is a global struct, just attach directly to the pointer + s = s = type.new(address) # Assigning twice to suppress unused variable warning + self.module_eval <<-code, __FILE__, __LINE__ + @@ffi_gvar_#{mname} = s + def self.#{mname} + @@ffi_gvar_#{mname} + end + code + + else + sc = Class.new(FFI::Struct) + sc.layout :gvar, find_type(type) + s = sc.new(address) + # + # Attach to this module as mname/mname= + # + self.module_eval <<-code, __FILE__, __LINE__ + @@ffi_gvar_#{mname} = s + def self.#{mname} + @@ffi_gvar_#{mname}[:gvar] + end + def self.#{mname}=(value) + @@ffi_gvar_#{mname}[:gvar] = value + end + code + + end + + address + end + + + # @overload callback(name, params, ret) + # @param name callback name to add to type map + # @param [Array] params array of parameters' types + # @param [DataConverter, Struct, Symbol, Type] ret callback return type + # @overload callback(params, ret) + # @param [Array] params array of parameters' types + # @param [DataConverter, Struct, Symbol, Type] ret callback return type + # @return [FFI::CallbackInfo] + def callback(*args) + raise ArgumentError, "wrong number of arguments" if args.length < 2 || args.length > 3 + name, params, ret = if args.length == 3 + args + else + [ nil, args[0], args[1] ] + end + + native_params = params.map { |e| find_type(e) } + raise ArgumentError, "callbacks cannot have variadic parameters" if native_params.include?(FFI::Type::VARARGS) + options = Hash.new + options[:convention] = ffi_convention + options[:enums] = @ffi_enums if defined?(@ffi_enums) + cb = FFI::CallbackInfo.new(find_type(ret), native_params, options) + + # Add to the symbol -> type map (unless there was no name) + unless name.nil? + typedef cb, name + end + + cb + end + + # Register or get an already registered type definition. + # + # To register a new type definition, +old+ should be a {FFI::Type}. +add+ + # is in this case the type definition. + # + # If +old+ is a {DataConverter}, a {Type::Mapped} is returned. + # + # If +old+ is +:enum+ + # * and +add+ is an +Array+, a call to {#enum} is made with +add+ as single parameter; + # * in others cases, +info+ is used to create a named enum. + # + # If +old+ is a key for type map, #typedef get +old+ type definition. + # + # @param [DataConverter, Symbol, Type] old + # @param [Symbol] add + # @param [Symbol] info + # @return [FFI::Enum, FFI::Type] + def typedef(old, add, info=nil) + @ffi_typedefs = Hash.new unless defined?(@ffi_typedefs) + + @ffi_typedefs[add] = if old.kind_of?(FFI::Type) + old + + elsif @ffi_typedefs.has_key?(old) + @ffi_typedefs[old] + + elsif old.is_a?(DataConverter) + FFI::Type::Mapped.new(old) + + elsif old == :enum + if add.kind_of?(Array) + self.enum(add) + else + self.enum(info, add) + end + + else + FFI.find_type(old) + end + end + + private + # Generic enum builder + # @param [Class] klass can be one of FFI::Enum or FFI::Bitmask + # @param args (see #enum or #bitmask) + def generic_enum(klass, *args) + native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil + name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array) + [ args[0], args[1] ] + elsif args[0].kind_of?(Array) + [ nil, args[0] ] + else + [ nil, args ] + end + @ffi_enums = FFI::Enums.new unless defined?(@ffi_enums) + @ffi_enums << (e = native_type ? klass.new(native_type, values, name) : klass.new(values, name)) + + # If called with a name, add a typedef alias + typedef(e, name) if name + e + end + + public + # @overload enum(name, values) + # Create a named enum. + # @example + # enum :foo, [:zero, :one, :two] # named enum + # @param [Symbol] name name for new enum + # @param [Array] values values for enum + # @overload enum(*args) + # Create an unnamed enum. + # @example + # enum :zero, :one, :two # unnamed enum + # @param args values for enum + # @overload enum(values) + # Create an unnamed enum. + # @example + # enum [:zero, :one, :two] # unnamed enum, equivalent to above example + # @param [Array] values values for enum + # @overload enum(native_type, name, values) + # Create a named enum and specify the native type. + # @example + # enum FFI::Type::UINT64, :foo, [:zero, :one, :two] # named enum + # @param [FFI::Type] native_type native type for new enum + # @param [Symbol] name name for new enum + # @param [Array] values values for enum + # @overload enum(native_type, *args) + # Create an unnamed enum and specify the native type. + # @example + # enum FFI::Type::UINT64, :zero, :one, :two # unnamed enum + # @param [FFI::Type] native_type native type for new enum + # @param args values for enum + # @overload enum(native_type, values) + # Create an unnamed enum and specify the native type. + # @example + # enum Type::UINT64, [:zero, :one, :two] # unnamed enum, equivalent to above example + # @param [FFI::Type] native_type native type for new enum + # @param [Array] values values for enum + # @return [FFI::Enum] + # Create a new {FFI::Enum}. + def enum(*args) + generic_enum(FFI::Enum, *args) + end + + # @overload bitmask(name, values) + # Create a named bitmask + # @example + # bitmask :foo, [:red, :green, :blue] # bits 0,1,2 are used + # bitmask :foo, [:red, :green, 5, :blue] # bits 0,5,6 are used + # @param [Symbol] name for new bitmask + # @param [Array] values for new bitmask + # @overload bitmask(*args) + # Create an unamed bitmask + # @example + # bm = bitmask :red, :green, :blue # bits 0,1,2 are used + # bm = bitmask :red, :green, 5, blue # bits 0,5,6 are used + # @param [Symbol, Integer] args values for new bitmask + # @overload bitmask(values) + # Create an unamed bitmask + # @example + # bm = bitmask [:red, :green, :blue] # bits 0,1,2 are used + # bm = bitmask [:red, :green, 5, blue] # bits 0,5,6 are used + # @param [Array] values for new bitmask + # @overload bitmask(native_type, name, values) + # Create a named enum and specify the native type. + # @example + # bitmask FFI::Type::UINT64, :foo, [:red, :green, :blue] + # @param [FFI::Type] native_type native type for new bitmask + # @param [Symbol] name for new bitmask + # @param [Array] values for new bitmask + # @overload bitmask(native_type, *args) + # @example + # bitmask FFI::Type::UINT64, :red, :green, :blue + # @param [FFI::Type] native_type native type for new bitmask + # @param [Symbol, Integer] args values for new bitmask + # @overload bitmask(native_type, values) + # Create a named enum and specify the native type. + # @example + # bitmask FFI::Type::UINT64, [:red, :green, :blue] + # @param [FFI::Type] native_type native type for new bitmask + # @param [Array] values for new bitmask + # @return [FFI::Bitmask] + # Create a new FFI::Bitmask + def bitmask(*args) + generic_enum(FFI::Bitmask, *args) + end + + # @param name + # @return [FFI::Enum] + # Find an enum by name. + def enum_type(name) + @ffi_enums.find(name) if defined?(@ffi_enums) + end + + # @param symbol + # @return [FFI::Enum] + # Find an enum by a symbol it contains. + def enum_value(symbol) + @ffi_enums.__map_symbol(symbol) + end + + # @param [DataConverter, Type, Struct, Symbol] t type to find + # @return [Type] + # Find a type definition. + def find_type(t) + if t.kind_of?(Type) + t + + elsif defined?(@ffi_typedefs) && @ffi_typedefs.has_key?(t) + @ffi_typedefs[t] + + elsif t.is_a?(Class) && t < Struct + Type::POINTER + + elsif t.is_a?(DataConverter) + # Add a typedef so next time the converter is used, it hits the cache + typedef Type::Mapped.new(t), t + + end || FFI.find_type(t) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/managedstruct.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/managedstruct.rb new file mode 100644 index 0000000000..0536280a9d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/managedstruct.rb @@ -0,0 +1,84 @@ +# Copyright (C) 2008 Mike Dalessio +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +module FFI + # + # FFI::ManagedStruct allows custom garbage-collection of your FFI::Structs. + # + # The typical use case would be when interacting with a library + # that has a nontrivial memory management design, such as a linked + # list or a binary tree. + # + # When the {Struct} instance is garbage collected, FFI::ManagedStruct will + # invoke the class's release() method during object finalization. + # + # @example Example usage: + # module MyLibrary + # ffi_lib "libmylibrary" + # attach_function :new_dlist, [], :pointer + # attach_function :destroy_dlist, [:pointer], :void + # end + # + # class DoublyLinkedList < FFI::ManagedStruct + # @@@ + # struct do |s| + # s.name 'struct dlist' + # s.include 'dlist.h' + # s.field :head, :pointer + # s.field :tail, :pointer + # end + # @@@ + # + # def self.release ptr + # MyLibrary.destroy_dlist(ptr) + # end + # end + # + # begin + # ptr = DoublyLinkedList.new(MyLibrary.new_dlist) + # # do something with the list + # end + # # struct is out of scope, and will be GC'd using DoublyLinkedList#release + # + # + class ManagedStruct < FFI::Struct + + # @overload initialize(pointer) + # @param [Pointer] pointer + # Create a new ManagedStruct which will invoke the class method #release on + # @overload initialize + # A new instance of FFI::ManagedStruct. + def initialize(pointer=nil) + raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to? :release + raise ArgumentError, "Must supply a pointer to memory for the Struct" unless pointer + super AutoPointer.new(pointer, self.class.method(:release)) + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/memorypointer.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/memorypointer.rb new file mode 100644 index 0000000000..9f07bc6959 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/memorypointer.rb @@ -0,0 +1 @@ +# This class is now implemented in C diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform.rb new file mode 100644 index 0000000000..0ec3e14720 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform.rb @@ -0,0 +1,170 @@ +# +# Copyright (C) 2008, 2009 Wayne Meissner +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# + +require 'rbconfig' +module FFI + class PlatformError < LoadError; end + + # This module defines different constants and class methods to play with + # various platforms. + module Platform + OS = case RbConfig::CONFIG['host_os'].downcase + when /linux/ + "linux" + when /darwin/ + "darwin" + when /freebsd/ + "freebsd" + when /netbsd/ + "netbsd" + when /openbsd/ + "openbsd" + when /sunos|solaris/ + "solaris" + when /mingw|mswin/ + "windows" + else + RbConfig::CONFIG['host_os'].downcase + end + + OSVERSION = RbConfig::CONFIG['host_os'].gsub(/[^\d]/, '').to_i + + ARCH = case CPU.downcase + when /amd64|x86_64/ + "x86_64" + when /i?86|x86|i86pc/ + "i386" + when /ppc64|powerpc64/ + "powerpc64" + when /ppc|powerpc/ + "powerpc" + when /sparcv9|sparc64/ + "sparcv9" + else + case RbConfig::CONFIG['host_cpu'] + when /^arm/ + "arm" + else + RbConfig::CONFIG['host_cpu'] + end + end + + private + # @param [String) os + # @return [Boolean] + # Test if current OS is +os+. + def self.is_os(os) + OS == os + end + + IS_GNU = defined?(GNU_LIBC) + IS_LINUX = is_os("linux") + IS_MAC = is_os("darwin") + IS_FREEBSD = is_os("freebsd") + IS_NETBSD = is_os("netbsd") + IS_OPENBSD = is_os("openbsd") + IS_SOLARIS = is_os("solaris") + IS_WINDOWS = is_os("windows") + IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD + + # Add the version for known ABI breaks + name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes + + NAME = "#{ARCH}-#{OS}#{name_version}" + CONF_DIR = File.join(File.dirname(__FILE__), 'platform', NAME) + + public + + LIBPREFIX = case OS + when /windows|msys/ + '' + when /cygwin/ + 'cyg' + else + 'lib' + end + + LIBSUFFIX = case OS + when /darwin/ + 'dylib' + when /linux|bsd|solaris/ + 'so' + when /windows|cygwin|msys/ + 'dll' + else + # Punt and just assume a sane unix (i.e. anything but AIX) + 'so' + end + + LIBC = if IS_WINDOWS + RbConfig::CONFIG['RUBY_SO_NAME'].split('-')[-2] + '.dll' + elsif IS_GNU + GNU_LIBC + elsif OS == 'cygwin' + "cygwin1.dll" + elsif OS == 'msys' + # Not sure how msys 1.0 behaves, tested on MSYS2. + "msys-2.0.dll" + else + "#{LIBPREFIX}c.#{LIBSUFFIX}" + end + + # Test if current OS is a *BSD (include MAC) + # @return [Boolean] + def self.bsd? + IS_BSD + end + + # Test if current OS is Windows + # @return [Boolean] + def self.windows? + IS_WINDOWS + end + + # Test if current OS is Mac OS + # @return [Boolean] + def self.mac? + IS_MAC + end + + # Test if current OS is Solaris (Sun OS) + # @return [Boolean] + def self.solaris? + IS_SOLARIS + end + + # Test if current OS is a unix OS + # @return [Boolean] + def self.unix? + !IS_WINDOWS + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd/types.conf new file mode 100644 index 0000000000..0874ee5597 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = long_long +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = long_long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd12/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd12/types.conf new file mode 100644 index 0000000000..47fc293c3d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-freebsd12/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = long_long +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = ulong_long +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = long_long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-linux/types.conf new file mode 100644 index 0000000000..072c419333 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/aarch64-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = int +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd/types.conf new file mode 100644 index 0000000000..3e7b20dd55 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd/types.conf @@ -0,0 +1,152 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__clock_t = ulong +rbx.platform.typedef.__cpumask_t = uint +rbx.platform.typedef.__critical_t = int +rbx.platform.typedef.__intfptr_t = int +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__ptrdiff_t = int +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__size_t = uint +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__uintfptr_t = uint +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__uintptr_t = uint +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__u_register_t = uint +rbx.platform.typedef.__vm_offset_t = uint +rbx.platform.typedef.__vm_ooffset_t = long_long +rbx.platform.typedef.__vm_paddr_t = uint +rbx.platform.typedef.__vm_pindex_t = ulong_long +rbx.platform.typedef.__vm_size_t = uint +rbx.platform.typedef.__blksize_t = uint +rbx.platform.typedef.__blkcnt_t = long_long +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__fflags_t = uint +rbx.platform.typedef.__fsblkcnt_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong_long +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = long_long +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__lwpid_t = int +rbx.platform.typedef.__mode_t = ushort +rbx.platform.typedef.__accmode_t = int +rbx.platform.typedef.__nl_item = int +rbx.platform.typedef.__nlink_t = ushort +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = long_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__cpuwhich_t = int +rbx.platform.typedef.__cpulevel_t = int +rbx.platform.typedef.__cpusetid_t = int +rbx.platform.typedef.__ct_rune_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__dev_t = uint +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.pthread_key_t = int +rbx.platform.typedef.*) = pointer +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.c_caddr_t = pointer +rbx.platform.typedef.blksize_t = uint +rbx.platform.typedef.cpuwhich_t = int +rbx.platform.typedef.cpulevel_t = int +rbx.platform.typedef.cpusetid_t = int +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.cpumask_t = uint +rbx.platform.typedef.critical_t = int +rbx.platform.typedef.daddr_t = long_long +rbx.platform.typedef.dev_t = uint +rbx.platform.typedef.fflags_t = uint +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.id_t = long_long +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.lwpid_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.accmode_t = int +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.register_t = int +rbx.platform.typedef.rlim_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.u_register_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.vm_offset_t = uint +rbx.platform.typedef.vm_ooffset_t = long_long +rbx.platform.typedef.vm_paddr_t = uint +rbx.platform.typedef.vm_pindex_t = ulong_long +rbx.platform.typedef.vm_size_t = uint +rbx.platform.typedef.__fd_mask = ulong +rbx.platform.typedef.fd_mask = ulong +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd12/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd12/types.conf new file mode 100644 index 0000000000..9607e643c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-freebsd12/types.conf @@ -0,0 +1,152 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__clock_t = ulong +rbx.platform.typedef.__cpumask_t = uint +rbx.platform.typedef.__critical_t = int +rbx.platform.typedef.__intfptr_t = int +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__ptrdiff_t = int +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__size_t = uint +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__uintfptr_t = uint +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__uintptr_t = uint +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__u_register_t = uint +rbx.platform.typedef.__vm_offset_t = uint +rbx.platform.typedef.__vm_ooffset_t = long_long +rbx.platform.typedef.__vm_paddr_t = uint +rbx.platform.typedef.__vm_pindex_t = ulong_long +rbx.platform.typedef.__vm_size_t = uint +rbx.platform.typedef.__blksize_t = uint +rbx.platform.typedef.__blkcnt_t = long_long +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__fflags_t = uint +rbx.platform.typedef.__fsblkcnt_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong_long +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = long_long +rbx.platform.typedef.__ino_t = ulong_long +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__lwpid_t = int +rbx.platform.typedef.__mode_t = ushort +rbx.platform.typedef.__accmode_t = int +rbx.platform.typedef.__nl_item = int +rbx.platform.typedef.__nlink_t = ulong_long +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = long_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__cpuwhich_t = int +rbx.platform.typedef.__cpulevel_t = int +rbx.platform.typedef.__cpusetid_t = int +rbx.platform.typedef.__ct_rune_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.pthread_key_t = int +rbx.platform.typedef.*) = pointer +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.c_caddr_t = pointer +rbx.platform.typedef.blksize_t = uint +rbx.platform.typedef.cpuwhich_t = int +rbx.platform.typedef.cpulevel_t = int +rbx.platform.typedef.cpusetid_t = int +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.cpumask_t = uint +rbx.platform.typedef.critical_t = int +rbx.platform.typedef.daddr_t = long_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.fflags_t = uint +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.id_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.key_t = long +rbx.platform.typedef.lwpid_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.accmode_t = int +rbx.platform.typedef.nlink_t = ulong_long +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.register_t = int +rbx.platform.typedef.rlim_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.u_register_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.vm_offset_t = uint +rbx.platform.typedef.vm_ooffset_t = long_long +rbx.platform.typedef.vm_paddr_t = uint +rbx.platform.typedef.vm_pindex_t = ulong_long +rbx.platform.typedef.vm_size_t = uint +rbx.platform.typedef.__fd_mask = ulong +rbx.platform.typedef.fd_mask = ulong +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-linux/types.conf new file mode 100644 index 0000000000..e9a923b5f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/arm-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-cygwin/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-cygwin/types.conf new file mode 100644 index 0000000000..cd3cc381c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-cygwin/types.conf @@ -0,0 +1,3 @@ +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ptrdiff_t = int +rbx.platform.typedef.ssize_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-darwin/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-darwin/types.conf new file mode 100644 index 0000000000..6b9313e5e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-darwin/types.conf @@ -0,0 +1,100 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__darwin_intptr_t = long +rbx.platform.typedef.__darwin_natural_t = uint +rbx.platform.typedef.__darwin_ct_rune_t = int +rbx.platform.typedef.__darwin_ptrdiff_t = int +rbx.platform.typedef.__darwin_size_t = ulong +rbx.platform.typedef.__darwin_wchar_t = int +rbx.platform.typedef.__darwin_rune_t = int +rbx.platform.typedef.__darwin_wint_t = int +rbx.platform.typedef.__darwin_clock_t = ulong +rbx.platform.typedef.__darwin_socklen_t = uint +rbx.platform.typedef.__darwin_ssize_t = long +rbx.platform.typedef.__darwin_time_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = int +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.user_addr_t = ulong_long +rbx.platform.typedef.user_size_t = ulong_long +rbx.platform.typedef.user_ssize_t = long_long +rbx.platform.typedef.user_long_t = long_long +rbx.platform.typedef.user_ulong_t = ulong_long +rbx.platform.typedef.user_time_t = long_long +rbx.platform.typedef.syscall_arg_t = ulong_long +rbx.platform.typedef.__darwin_blkcnt_t = long_long +rbx.platform.typedef.__darwin_blksize_t = int +rbx.platform.typedef.__darwin_dev_t = int +rbx.platform.typedef.__darwin_fsblkcnt_t = uint +rbx.platform.typedef.__darwin_fsfilcnt_t = uint +rbx.platform.typedef.__darwin_gid_t = uint +rbx.platform.typedef.__darwin_id_t = uint +rbx.platform.typedef.__darwin_ino64_t = ulong_long +rbx.platform.typedef.__darwin_ino_t = ulong_long +rbx.platform.typedef.__darwin_mach_port_name_t = uint +rbx.platform.typedef.__darwin_mach_port_t = uint +rbx.platform.typedef.__darwin_mode_t = ushort +rbx.platform.typedef.__darwin_off_t = long_long +rbx.platform.typedef.__darwin_pid_t = int +rbx.platform.typedef.__darwin_pthread_key_t = ulong +rbx.platform.typedef.__darwin_sigset_t = uint +rbx.platform.typedef.__darwin_suseconds_t = int +rbx.platform.typedef.__darwin_uid_t = uint +rbx.platform.typedef.__darwin_useconds_t = uint +rbx.platform.typedef.__darwin_uuid_t[16] = uchar +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.fd_mask = int +rbx.platform.typedef.pthread_key_t = ulong +rbx.platform.typedef.fsblkcnt_t = uint +rbx.platform.typedef.fsfilcnt_t = uint +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.rlim_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd/types.conf new file mode 100644 index 0000000000..2b07db4cc8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd/types.conf @@ -0,0 +1,152 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__clock_t = ulong +rbx.platform.typedef.__cpumask_t = uint +rbx.platform.typedef.__critical_t = int +rbx.platform.typedef.__intfptr_t = int +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__ptrdiff_t = int +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__size_t = uint +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__uintfptr_t = uint +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__uintptr_t = uint +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__u_register_t = uint +rbx.platform.typedef.__vm_offset_t = uint +rbx.platform.typedef.__vm_ooffset_t = long_long +rbx.platform.typedef.__vm_paddr_t = uint +rbx.platform.typedef.__vm_pindex_t = ulong_long +rbx.platform.typedef.__vm_size_t = uint +rbx.platform.typedef.__blksize_t = uint +rbx.platform.typedef.__blkcnt_t = long_long +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__fflags_t = uint +rbx.platform.typedef.__fsblkcnt_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong_long +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = long_long +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__lwpid_t = int +rbx.platform.typedef.__mode_t = ushort +rbx.platform.typedef.__accmode_t = int +rbx.platform.typedef.__nl_item = int +rbx.platform.typedef.__nlink_t = ushort +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = long_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__cpuwhich_t = int +rbx.platform.typedef.__cpulevel_t = int +rbx.platform.typedef.__cpusetid_t = int +rbx.platform.typedef.__ct_rune_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__dev_t = uint +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.pthread_key_t = int +rbx.platform.typedef.*) = pointer +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.c_caddr_t = pointer +rbx.platform.typedef.blksize_t = uint +rbx.platform.typedef.cpuwhich_t = int +rbx.platform.typedef.cpulevel_t = int +rbx.platform.typedef.cpusetid_t = int +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.cpumask_t = uint +rbx.platform.typedef.critical_t = int +rbx.platform.typedef.daddr_t = long_long +rbx.platform.typedef.dev_t = uint +rbx.platform.typedef.fflags_t = uint +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.id_t = long_long +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.lwpid_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.accmode_t = int +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.register_t = int +rbx.platform.typedef.rlim_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.u_register_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.vm_offset_t = uint +rbx.platform.typedef.vm_ooffset_t = long_long +rbx.platform.typedef.vm_paddr_t = uint +rbx.platform.typedef.vm_pindex_t = ulong_long +rbx.platform.typedef.vm_size_t = uint +rbx.platform.typedef.__fd_mask = ulong +rbx.platform.typedef.fd_mask = ulong +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd12/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd12/types.conf new file mode 100644 index 0000000000..9607e643c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-freebsd12/types.conf @@ -0,0 +1,152 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__clock_t = ulong +rbx.platform.typedef.__cpumask_t = uint +rbx.platform.typedef.__critical_t = int +rbx.platform.typedef.__intfptr_t = int +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__ptrdiff_t = int +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__size_t = uint +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__uintfptr_t = uint +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__uintptr_t = uint +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__u_register_t = uint +rbx.platform.typedef.__vm_offset_t = uint +rbx.platform.typedef.__vm_ooffset_t = long_long +rbx.platform.typedef.__vm_paddr_t = uint +rbx.platform.typedef.__vm_pindex_t = ulong_long +rbx.platform.typedef.__vm_size_t = uint +rbx.platform.typedef.__blksize_t = uint +rbx.platform.typedef.__blkcnt_t = long_long +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__fflags_t = uint +rbx.platform.typedef.__fsblkcnt_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong_long +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = long_long +rbx.platform.typedef.__ino_t = ulong_long +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__lwpid_t = int +rbx.platform.typedef.__mode_t = ushort +rbx.platform.typedef.__accmode_t = int +rbx.platform.typedef.__nl_item = int +rbx.platform.typedef.__nlink_t = ulong_long +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = long_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__cpuwhich_t = int +rbx.platform.typedef.__cpulevel_t = int +rbx.platform.typedef.__cpusetid_t = int +rbx.platform.typedef.__ct_rune_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.pthread_key_t = int +rbx.platform.typedef.*) = pointer +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.c_caddr_t = pointer +rbx.platform.typedef.blksize_t = uint +rbx.platform.typedef.cpuwhich_t = int +rbx.platform.typedef.cpulevel_t = int +rbx.platform.typedef.cpusetid_t = int +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.cpumask_t = uint +rbx.platform.typedef.critical_t = int +rbx.platform.typedef.daddr_t = long_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.fflags_t = uint +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.id_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.key_t = long +rbx.platform.typedef.lwpid_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.accmode_t = int +rbx.platform.typedef.nlink_t = ulong_long +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.register_t = int +rbx.platform.typedef.rlim_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.u_register_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.vm_offset_t = uint +rbx.platform.typedef.vm_ooffset_t = long_long +rbx.platform.typedef.vm_paddr_t = uint +rbx.platform.typedef.vm_pindex_t = ulong_long +rbx.platform.typedef.vm_size_t = uint +rbx.platform.typedef.__fd_mask = ulong +rbx.platform.typedef.fd_mask = ulong +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-gnu/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-gnu/types.conf new file mode 100644 index 0000000000..f9169c29a7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-gnu/types.conf @@ -0,0 +1,107 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = uint +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__fsid_t = ulong_long +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.fsid_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.__sigset_t = ulong +rbx.platform.typedef.sigset_t = ulong +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.__pthread_t = int +rbx.platform.typedef.pthread_t = int +rbx.platform.typedef.__pthread_key = int +rbx.platform.typedef.pthread_key_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-linux/types.conf new file mode 100644 index 0000000000..c46a1342eb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-linux/types.conf @@ -0,0 +1,103 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-netbsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-netbsd/types.conf new file mode 100644 index 0000000000..33bd12b904 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-netbsd/types.conf @@ -0,0 +1,126 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = int +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-openbsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-openbsd/types.conf new file mode 100644 index 0000000000..c4df68adbe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-openbsd/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = int +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-solaris/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-solaris/types.conf new file mode 100644 index 0000000000..a5851000ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-solaris/types.conf @@ -0,0 +1,122 @@ +rbx.platform.typedef.lock_t = uchar +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = int +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = uint +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.longlong_t = long_long +rbx.platform.typedef.u_longlong_t = ulong_long +rbx.platform.typedef.t_scalar_t = long +rbx.platform.typedef.t_uscalar_t = ulong +rbx.platform.typedef.uchar_t = uchar +rbx.platform.typedef.ushort_t = ushort +rbx.platform.typedef.uint_t = uint +rbx.platform.typedef.ulong_t = ulong +rbx.platform.typedef.*caddr_t = char +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.cnt_t = short +rbx.platform.typedef.ptrdiff_t = int +rbx.platform.typedef.pfn_t = ulong +rbx.platform.typedef.pgcnt_t = ulong +rbx.platform.typedef.spgcnt_t = long +rbx.platform.typedef.use_t = uchar +rbx.platform.typedef.sysid_t = short +rbx.platform.typedef.index_t = short +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.off64_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.blkcnt64_t = long_long +rbx.platform.typedef.fsblkcnt64_t = ulong_long +rbx.platform.typedef.fsfilcnt64_t = ulong_long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.pad64_t = long_long +rbx.platform.typedef.upad64_t = ulong_long +rbx.platform.typedef.offset_t = long_long +rbx.platform.typedef.u_offset_t = ulong_long +rbx.platform.typedef.len_t = ulong_long +rbx.platform.typedef.diskaddr_t = ulong_long +rbx.platform.typedef.k_fltset_t = uint +rbx.platform.typedef.id_t = long +rbx.platform.typedef.lgrp_id_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.major_t = ulong +rbx.platform.typedef.minor_t = ulong +rbx.platform.typedef.pri_t = short +rbx.platform.typedef.cpu_flag_t = ushort +rbx.platform.typedef.o_mode_t = ushort +rbx.platform.typedef.o_dev_t = short +rbx.platform.typedef.o_uid_t = ushort +rbx.platform.typedef.o_gid_t = ushort +rbx.platform.typedef.o_nlink_t = short +rbx.platform.typedef.o_pid_t = short +rbx.platform.typedef.o_ino_t = ushort +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.datalink_id_t = uint +rbx.platform.typedef.taskid_t = long +rbx.platform.typedef.projid_t = long +rbx.platform.typedef.poolid_t = long +rbx.platform.typedef.zoneid_t = long +rbx.platform.typedef.ctid_t = long +rbx.platform.typedef.pthread_t = uint +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.pid_t = long +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.hrtime_t = long_long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.fds_mask = long +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.nfds_t = ulong +rbx.platform.typedef.disp_lock_t = uchar +rbx.platform.typedef.model_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.ipaddr_t = uint +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.rlim64_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-windows/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-windows/types.conf new file mode 100644 index 0000000000..38168bee4d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/i386-windows/types.conf @@ -0,0 +1,105 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef._off_t = long +rbx.platform.typedef._off64_t = long_long +rbx.platform.typedef._ssize_t = int +rbx.platform.typedef.wint_t = uint +rbx.platform.typedef.ptrdiff_t = int +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.time_t = long +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.clockid_t = ulong +rbx.platform.typedef.timer_t = ulong +rbx.platform.typedef.useconds_t = ulong +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = long +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = ulong +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = long +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = ulong +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = long +rbx.platform.typedef.int_fast32_t = long +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = ulong +rbx.platform.typedef.uint_fast32_t = ulong +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.__dev16_t = short +rbx.platform.typedef.__dev32_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.__blkcnt32_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.__uid16_t = ushort +rbx.platform.typedef.__uid32_t = ulong +rbx.platform.typedef.uid_t = ulong +rbx.platform.typedef.__gid16_t = ushort +rbx.platform.typedef.__gid32_t = ulong +rbx.platform.typedef.gid_t = ulong +rbx.platform.typedef.__ino32_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.id_t = ulong +rbx.platform.typedef.key_t = long_long +rbx.platform.typedef.vm_offset_t = ulong +rbx.platform.typedef.vm_size_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = int +rbx.platform.typedef.*addr_t = char +rbx.platform.typedef.socklen_t = int +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.__ULong = ulong +rbx.platform.typedef._fpos_t = long +rbx.platform.typedef._fpos64_t = long_long +rbx.platform.typedef.sigset_t = ulong +rbx.platform.typedef.sig_atomic_t = int +rbx.platform.typedef.rlim_t = ulong diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/ia64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/ia64-linux/types.conf new file mode 100644 index 0000000000..70e44e8c6c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/ia64-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips-linux/types.conf new file mode 100644 index 0000000000..ad4ced04a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64-linux/types.conf new file mode 100644 index 0000000000..3feb704f72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64el-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64el-linux/types.conf new file mode 100644 index 0000000000..3feb704f72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mips64el-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsel-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsel-linux/types.conf new file mode 100644 index 0000000000..ad4ced04a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsel-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6-linux/types.conf new file mode 100644 index 0000000000..ad4ced04a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6el-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6el-linux/types.conf new file mode 100644 index 0000000000..ad4ced04a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa32r6el-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6-linux/types.conf new file mode 100644 index 0000000000..3feb704f72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6el-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6el-linux/types.conf new file mode 100644 index 0000000000..3feb704f72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/mipsisa64r6el-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-aix/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-aix/types.conf new file mode 100644 index 0000000000..30ee66b252 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-aix/types.conf @@ -0,0 +1,180 @@ +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = short +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = ushort +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.wchar_t = ushort +rbx.platform.typedef.intfast_t = int +rbx.platform.typedef.uintfast_t = uint +rbx.platform.typedef.__long32_t = long +rbx.platform.typedef.__ulong32_t = ulong +rbx.platform.typedef.__long64_t = int +rbx.platform.typedef.__ulong64_t = uint +rbx.platform.typedef.int32long64_t = int +rbx.platform.typedef.uint32long64_t = uint +rbx.platform.typedef.long32int64_t = long +rbx.platform.typedef.ulong32int64_t = ulong +rbx.platform.typedef.int8 = char +rbx.platform.typedef.int16 = short +rbx.platform.typedef.int32 = int +rbx.platform.typedef.int64 = long_long +rbx.platform.typedef.u_int8 = uchar +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16 = ushort +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32 = uint +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64 = ulong_long +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.ptrdiff_t = long +rbx.platform.typedef.wctype_t = uint +rbx.platform.typedef.fpos_t = long +rbx.platform.typedef.fpos64_t = long_long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.uchar_t = uchar +rbx.platform.typedef.ushort_t = ushort +rbx.platform.typedef.uint_t = uint +rbx.platform.typedef.ulong_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.level_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.ino32_t = uint +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.cnt_t = short +rbx.platform.typedef.dev_t = uint +rbx.platform.typedef.dev32_t = uint +rbx.platform.typedef.dev64_t = ulong_long +rbx.platform.typedef.chan_t = int +rbx.platform.typedef.time32_t = int +rbx.platform.typedef.pid32_t = int +rbx.platform.typedef.tid32_t = int +rbx.platform.typedef.pid64_t = ulong_long +rbx.platform.typedef.tid64_t = ulong_long +rbx.platform.typedef.time64_t = long_long +rbx.platform.typedef.__ptr32 = pointer +rbx.platform.typedef.__cptr32 = string +rbx.platform.typedef.soff_t = int +rbx.platform.typedef.off_t = long +rbx.platform.typedef.off64_t = long_long +rbx.platform.typedef.paddr_t = long +rbx.platform.typedef.key_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.timer32_t = int +rbx.platform.typedef.timer64_t = long_long +rbx.platform.typedef.nlink_t = short +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mid_t = pointer +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.tid_t = int +rbx.platform.typedef.slab_t[12] = char +rbx.platform.typedef.mtyp_t = long +rbx.platform.typedef.boolean_t = int +rbx.platform.typedef.crid_t = int +rbx.platform.typedef.blkcnt_t = int +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.blkcnt32_t = int +rbx.platform.typedef.blksize32_t = int +rbx.platform.typedef.blkcnt64_t = ulong_long +rbx.platform.typedef.blksize64_t = ulong_long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.wint_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.clockid_t = long_long +rbx.platform.typedef.signal_t = int +rbx.platform.typedef.pthread_t = uint +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.vmid_t = long +rbx.platform.typedef.vmhandle_t = ulong +rbx.platform.typedef.vmid32_t = int +rbx.platform.typedef.vmhandle32_t = uint +rbx.platform.typedef.kvmid_t = long +rbx.platform.typedef.kvmhandle_t = ulong +rbx.platform.typedef.vmid64_t = long_long +rbx.platform.typedef.rpn64_t = long_long +rbx.platform.typedef.cnt64_t = long_long +rbx.platform.typedef.psize_t = long_long +rbx.platform.typedef.vmidx_t = int +rbx.platform.typedef.vmfkey_t = uint +rbx.platform.typedef.vmprkey_t = uint +rbx.platform.typedef.vmkey_t = int +rbx.platform.typedef.vmhwkey_t = int +rbx.platform.typedef.vpn_t = int +rbx.platform.typedef.rpn_t = int +rbx.platform.typedef.ptex_t = ulong +rbx.platform.typedef.swhatx_t = ulong +rbx.platform.typedef.esid_t = uint +rbx.platform.typedef.aptx_t = ushort +rbx.platform.typedef.pdtx_t = int +rbx.platform.typedef.psx_t = short +rbx.platform.typedef.pshift_t = ushort +rbx.platform.typedef.sshift_t = ushort +rbx.platform.typedef.unidx_t = int +rbx.platform.typedef.snidx_t = int +rbx.platform.typedef.vmnodeidx_t = int +rbx.platform.typedef.kvpn_t = int +rbx.platform.typedef.krpn_t = int +rbx.platform.typedef.vmsize_t = int +rbx.platform.typedef.vmm_lock_t = int +rbx.platform.typedef.ureg_t = ulong +rbx.platform.typedef.vmlpghandle_t = ulong +rbx.platform.typedef.ext_t = int +rbx.platform.typedef.va_list = string +rbx.platform.typedef.__ptr64 = ulong_long +rbx.platform.typedef.__cptr64 = ulong_long +rbx.platform.typedef.UniChar = ushort +rbx.platform.typedef.UTF32Char = uint +rbx.platform.typedef.uchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.offset_t = long_long +rbx.platform.typedef.ssize64_t = long_long +rbx.platform.typedef.longlong_t = long_long +rbx.platform.typedef.u_longlong_t = ulong_long +rbx.platform.typedef.class_id_t = uint +rbx.platform.typedef.liobn_t = uint +rbx.platform.typedef.unit_addr_t = ulong_long +rbx.platform.typedef.size64_t = ulong_long +rbx.platform.typedef.socklen_t = ulong +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.rlim64_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-darwin/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-darwin/types.conf new file mode 100644 index 0000000000..6b9313e5e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-darwin/types.conf @@ -0,0 +1,100 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__darwin_intptr_t = long +rbx.platform.typedef.__darwin_natural_t = uint +rbx.platform.typedef.__darwin_ct_rune_t = int +rbx.platform.typedef.__darwin_ptrdiff_t = int +rbx.platform.typedef.__darwin_size_t = ulong +rbx.platform.typedef.__darwin_wchar_t = int +rbx.platform.typedef.__darwin_rune_t = int +rbx.platform.typedef.__darwin_wint_t = int +rbx.platform.typedef.__darwin_clock_t = ulong +rbx.platform.typedef.__darwin_socklen_t = uint +rbx.platform.typedef.__darwin_ssize_t = long +rbx.platform.typedef.__darwin_time_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = int +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.user_addr_t = ulong_long +rbx.platform.typedef.user_size_t = ulong_long +rbx.platform.typedef.user_ssize_t = long_long +rbx.platform.typedef.user_long_t = long_long +rbx.platform.typedef.user_ulong_t = ulong_long +rbx.platform.typedef.user_time_t = long_long +rbx.platform.typedef.syscall_arg_t = ulong_long +rbx.platform.typedef.__darwin_blkcnt_t = long_long +rbx.platform.typedef.__darwin_blksize_t = int +rbx.platform.typedef.__darwin_dev_t = int +rbx.platform.typedef.__darwin_fsblkcnt_t = uint +rbx.platform.typedef.__darwin_fsfilcnt_t = uint +rbx.platform.typedef.__darwin_gid_t = uint +rbx.platform.typedef.__darwin_id_t = uint +rbx.platform.typedef.__darwin_ino64_t = ulong_long +rbx.platform.typedef.__darwin_ino_t = ulong_long +rbx.platform.typedef.__darwin_mach_port_name_t = uint +rbx.platform.typedef.__darwin_mach_port_t = uint +rbx.platform.typedef.__darwin_mode_t = ushort +rbx.platform.typedef.__darwin_off_t = long_long +rbx.platform.typedef.__darwin_pid_t = int +rbx.platform.typedef.__darwin_pthread_key_t = ulong +rbx.platform.typedef.__darwin_sigset_t = uint +rbx.platform.typedef.__darwin_suseconds_t = int +rbx.platform.typedef.__darwin_uid_t = uint +rbx.platform.typedef.__darwin_useconds_t = uint +rbx.platform.typedef.__darwin_uuid_t[16] = uchar +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.fd_mask = int +rbx.platform.typedef.pthread_key_t = ulong +rbx.platform.typedef.fsblkcnt_t = uint +rbx.platform.typedef.fsfilcnt_t = uint +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.rlim_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-linux/types.conf new file mode 100644 index 0000000000..76014cd254 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc-linux/types.conf @@ -0,0 +1,100 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc64-linux/types.conf new file mode 100644 index 0000000000..3feb704f72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/powerpc64-linux/types.conf @@ -0,0 +1,104 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__fsword_t = long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__syscall_slong_t = long +rbx.platform.typedef.__syscall_ulong_t = ulong +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390-linux/types.conf new file mode 100644 index 0000000000..1cc79ee804 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390x-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390x-linux/types.conf new file mode 100644 index 0000000000..f4c8cec617 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/s390x-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-linux/types.conf new file mode 100644 index 0000000000..1882298eaf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__quad_t = long_long +rbx.platform.typedef.__u_quad_t = ulong_long +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong_long +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong_long +rbx.platform.typedef.__ssize_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.*__qaddr_t = long_long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-solaris/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-solaris/types.conf new file mode 100644 index 0000000000..c03c1446ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc-solaris/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.lock_t = uchar +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = int +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = uint +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.longlong_t = long_long +rbx.platform.typedef.u_longlong_t = ulong_long +rbx.platform.typedef.t_scalar_t = long +rbx.platform.typedef.t_uscalar_t = ulong +rbx.platform.typedef.uchar_t = uchar +rbx.platform.typedef.ushort_t = ushort +rbx.platform.typedef.uint_t = uint +rbx.platform.typedef.ulong_t = ulong +rbx.platform.typedef.*caddr_t = char +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.cnt_t = short +rbx.platform.typedef.ptrdiff_t = int +rbx.platform.typedef.pfn_t = ulong +rbx.platform.typedef.pgcnt_t = ulong +rbx.platform.typedef.spgcnt_t = long +rbx.platform.typedef.use_t = uchar +rbx.platform.typedef.sysid_t = short +rbx.platform.typedef.index_t = short +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.off64_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.blkcnt64_t = long_long +rbx.platform.typedef.fsblkcnt64_t = ulong_long +rbx.platform.typedef.fsfilcnt64_t = ulong_long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.pad64_t = long_long +rbx.platform.typedef.upad64_t = ulong_long +rbx.platform.typedef.offset_t = long_long +rbx.platform.typedef.u_offset_t = ulong_long +rbx.platform.typedef.len_t = ulong_long +rbx.platform.typedef.diskaddr_t = ulong_long +rbx.platform.typedef.k_fltset_t = uint +rbx.platform.typedef.id_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.major_t = ulong +rbx.platform.typedef.minor_t = ulong +rbx.platform.typedef.pri_t = short +rbx.platform.typedef.cpu_flag_t = ushort +rbx.platform.typedef.o_mode_t = ushort +rbx.platform.typedef.o_dev_t = short +rbx.platform.typedef.o_uid_t = ushort +rbx.platform.typedef.o_gid_t = ushort +rbx.platform.typedef.o_nlink_t = short +rbx.platform.typedef.o_pid_t = short +rbx.platform.typedef.o_ino_t = ushort +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ulong +rbx.platform.typedef.uid_t = long +rbx.platform.typedef.gid_t = long +rbx.platform.typedef.taskid_t = long +rbx.platform.typedef.projid_t = long +rbx.platform.typedef.poolid_t = long +rbx.platform.typedef.zoneid_t = long +rbx.platform.typedef.ctid_t = long +rbx.platform.typedef.pthread_t = uint +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.pid_t = long +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.hrtime_t = long_long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.fds_mask = long +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.Psocklen_t = pointer +rbx.platform.typedef.disp_lock_t = uchar +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.rlim64_t = ulong_long +rbx.platform.typedef.kid_t = int +rbx.platform.typedef.int) = pointer +rbx.platform.typedef.size_t) = pointer +rbx.platform.typedef.int) = pointer +rbx.platform.typedef.avl_index_t = uint +rbx.platform.typedef.() = pointer +rbx.platform.typedef.nfds_t = ulong +rbx.platform.typedef.model_t = uint +rbx.platform.typedef.ts_t = long_long +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.ipaddr_t = uint diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc64-linux/types.conf new file mode 100644 index 0000000000..d86ba2f182 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparc64-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.__blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparcv9-solaris/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparcv9-solaris/types.conf new file mode 100644 index 0000000000..c03c1446ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/sparcv9-solaris/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.lock_t = uchar +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.intptr_t = int +rbx.platform.typedef.uintptr_t = uint +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = int +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = uint +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.longlong_t = long_long +rbx.platform.typedef.u_longlong_t = ulong_long +rbx.platform.typedef.t_scalar_t = long +rbx.platform.typedef.t_uscalar_t = ulong +rbx.platform.typedef.uchar_t = uchar +rbx.platform.typedef.ushort_t = ushort +rbx.platform.typedef.uint_t = uint +rbx.platform.typedef.ulong_t = ulong +rbx.platform.typedef.*caddr_t = char +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.cnt_t = short +rbx.platform.typedef.ptrdiff_t = int +rbx.platform.typedef.pfn_t = ulong +rbx.platform.typedef.pgcnt_t = ulong +rbx.platform.typedef.spgcnt_t = long +rbx.platform.typedef.use_t = uchar +rbx.platform.typedef.sysid_t = short +rbx.platform.typedef.index_t = short +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.off64_t = long_long +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.blkcnt64_t = long_long +rbx.platform.typedef.fsblkcnt64_t = ulong_long +rbx.platform.typedef.fsfilcnt64_t = ulong_long +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.pad64_t = long_long +rbx.platform.typedef.upad64_t = ulong_long +rbx.platform.typedef.offset_t = long_long +rbx.platform.typedef.u_offset_t = ulong_long +rbx.platform.typedef.len_t = ulong_long +rbx.platform.typedef.diskaddr_t = ulong_long +rbx.platform.typedef.k_fltset_t = uint +rbx.platform.typedef.id_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.major_t = ulong +rbx.platform.typedef.minor_t = ulong +rbx.platform.typedef.pri_t = short +rbx.platform.typedef.cpu_flag_t = ushort +rbx.platform.typedef.o_mode_t = ushort +rbx.platform.typedef.o_dev_t = short +rbx.platform.typedef.o_uid_t = ushort +rbx.platform.typedef.o_gid_t = ushort +rbx.platform.typedef.o_nlink_t = short +rbx.platform.typedef.o_pid_t = short +rbx.platform.typedef.o_ino_t = ushort +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ulong +rbx.platform.typedef.uid_t = long +rbx.platform.typedef.gid_t = long +rbx.platform.typedef.taskid_t = long +rbx.platform.typedef.projid_t = long +rbx.platform.typedef.poolid_t = long +rbx.platform.typedef.zoneid_t = long +rbx.platform.typedef.ctid_t = long +rbx.platform.typedef.pthread_t = uint +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.pid_t = long +rbx.platform.typedef.size_t = uint +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.hrtime_t = long_long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.fds_mask = long +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.Psocklen_t = pointer +rbx.platform.typedef.disp_lock_t = uchar +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.rlim64_t = ulong_long +rbx.platform.typedef.kid_t = int +rbx.platform.typedef.int) = pointer +rbx.platform.typedef.size_t) = pointer +rbx.platform.typedef.int) = pointer +rbx.platform.typedef.avl_index_t = uint +rbx.platform.typedef.() = pointer +rbx.platform.typedef.nfds_t = ulong +rbx.platform.typedef.model_t = uint +rbx.platform.typedef.ts_t = long_long +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.ipaddr_t = uint diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-cygwin/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-cygwin/types.conf new file mode 100644 index 0000000000..5dadc7f037 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-cygwin/types.conf @@ -0,0 +1,3 @@ +rbx.platform.typedef.size_t = uint64 +rbx.platform.typedef.ptrdiff_t = int64 +rbx.platform.typedef.ssize_t = int64 diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-darwin/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-darwin/types.conf new file mode 100644 index 0000000000..51637eed0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-darwin/types.conf @@ -0,0 +1,126 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__darwin_intptr_t = long +rbx.platform.typedef.__darwin_natural_t = uint +rbx.platform.typedef.__darwin_ct_rune_t = int +rbx.platform.typedef.__darwin_ptrdiff_t = long +rbx.platform.typedef.__darwin_size_t = ulong +rbx.platform.typedef.__darwin_wchar_t = int +rbx.platform.typedef.__darwin_rune_t = int +rbx.platform.typedef.__darwin_wint_t = int +rbx.platform.typedef.__darwin_clock_t = ulong +rbx.platform.typedef.__darwin_socklen_t = uint +rbx.platform.typedef.__darwin_ssize_t = long +rbx.platform.typedef.__darwin_time_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.user_addr_t = ulong_long +rbx.platform.typedef.user_size_t = ulong_long +rbx.platform.typedef.user_ssize_t = long_long +rbx.platform.typedef.user_long_t = long_long +rbx.platform.typedef.user_ulong_t = ulong_long +rbx.platform.typedef.user_time_t = long_long +rbx.platform.typedef.user_off_t = long_long +rbx.platform.typedef.syscall_arg_t = ulong_long +rbx.platform.typedef.__darwin_blkcnt_t = long_long +rbx.platform.typedef.__darwin_blksize_t = int +rbx.platform.typedef.__darwin_dev_t = int +rbx.platform.typedef.__darwin_fsblkcnt_t = uint +rbx.platform.typedef.__darwin_fsfilcnt_t = uint +rbx.platform.typedef.__darwin_gid_t = uint +rbx.platform.typedef.__darwin_id_t = uint +rbx.platform.typedef.__darwin_ino64_t = ulong_long +rbx.platform.typedef.__darwin_ino_t = ulong_long +rbx.platform.typedef.__darwin_mach_port_name_t = uint +rbx.platform.typedef.__darwin_mach_port_t = uint +rbx.platform.typedef.__darwin_mode_t = ushort +rbx.platform.typedef.__darwin_off_t = long_long +rbx.platform.typedef.__darwin_pid_t = int +rbx.platform.typedef.__darwin_sigset_t = uint +rbx.platform.typedef.__darwin_suseconds_t = int +rbx.platform.typedef.__darwin_uid_t = uint +rbx.platform.typedef.__darwin_useconds_t = uint +rbx.platform.typedef.__darwin_uuid_t[16] = uchar +rbx.platform.typedef.__darwin_uuid_string_t[37] = char +rbx.platform.typedef.__darwin_pthread_key_t = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.ino64_t = ulong_long +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = ushort +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.rsize_t = ulong +rbx.platform.typedef.errno_t = int +rbx.platform.typedef.fd_mask = int +rbx.platform.typedef.pthread_key_t = ulong +rbx.platform.typedef.fsblkcnt_t = uint +rbx.platform.typedef.fsfilcnt_t = uint +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = short +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = ushort +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.intmax_t = long +rbx.platform.typedef.uintmax_t = ulong +rbx.platform.typedef.rlim_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd/types.conf new file mode 100644 index 0000000000..6d9ffe5a3d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = long_long +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = long_long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd12/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd12/types.conf new file mode 100644 index 0000000000..47fc293c3d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-freebsd12/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = long_long +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = ulong_long +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = ulong_long +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = long_long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = ulong_long +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong_long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-linux/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-linux/types.conf new file mode 100644 index 0000000000..f319c0bbeb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-linux/types.conf @@ -0,0 +1,102 @@ +rbx.platform.typedef.__u_char = uchar +rbx.platform.typedef.__u_short = ushort +rbx.platform.typedef.__u_int = uint +rbx.platform.typedef.__u_long = ulong +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long +rbx.platform.typedef.__uint64_t = ulong +rbx.platform.typedef.__quad_t = long +rbx.platform.typedef.__u_quad_t = ulong +rbx.platform.typedef.__dev_t = ulong +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__ino_t = ulong +rbx.platform.typedef.__ino64_t = ulong +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = ulong +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__off64_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__clock_t = long +rbx.platform.typedef.__rlim_t = ulong +rbx.platform.typedef.__rlim64_t = ulong +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__time_t = long +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__daddr_t = int +rbx.platform.typedef.__swblk_t = long +rbx.platform.typedef.__key_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__timer_t = pointer +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.__blkcnt_t = long +rbx.platform.typedef.__blkcnt64_t = long +rbx.platform.typedef.__fsblkcnt_t = ulong +rbx.platform.typedef.__fsblkcnt64_t = ulong +rbx.platform.typedef.__fsfilcnt_t = ulong +rbx.platform.typedef.__fsfilcnt64_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__loff_t = long +rbx.platform.typedef.*__qaddr_t = long +rbx.platform.typedef.*__caddr_t = char +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.quad_t = long +rbx.platform.typedef.u_quad_t = ulong +rbx.platform.typedef.loff_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = ulong +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.off_t = long +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.key_t = int +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = pointer +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = long +rbx.platform.typedef.__sig_atomic_t = int +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.__fd_mask = long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.pthread_t = ulong +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.pthread_once_t = int +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.__rlimit_resource_t = int +rbx.platform.typedef.__rusage_who_t = int +rbx.platform.typedef.__priority_which_t = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-netbsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-netbsd/types.conf new file mode 100644 index 0000000000..c4df68adbe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-netbsd/types.conf @@ -0,0 +1,128 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = int +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__clock_t = int +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__time_t = int +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = uint +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.__suseconds_t = int +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = int +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr_t = int +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr64_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = uint +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = int +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.sa_family_t = uchar +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.clock_t = int +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = int diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-openbsd/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-openbsd/types.conf new file mode 100644 index 0000000000..f8419bd3e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-openbsd/types.conf @@ -0,0 +1,134 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef.__int_least8_t = char +rbx.platform.typedef.__uint_least8_t = uchar +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int_least64_t = long_long +rbx.platform.typedef.__uint_least64_t = ulong_long +rbx.platform.typedef.__int_fast8_t = int +rbx.platform.typedef.__uint_fast8_t = uint +rbx.platform.typedef.__int_fast16_t = int +rbx.platform.typedef.__uint_fast16_t = uint +rbx.platform.typedef.__int_fast32_t = int +rbx.platform.typedef.__uint_fast32_t = uint +rbx.platform.typedef.__int_fast64_t = long_long +rbx.platform.typedef.__uint_fast64_t = ulong_long +rbx.platform.typedef.__intptr_t = long +rbx.platform.typedef.__uintptr_t = ulong +rbx.platform.typedef.__intmax_t = long_long +rbx.platform.typedef.__uintmax_t = ulong_long +rbx.platform.typedef.__register_t = long +rbx.platform.typedef.__vaddr_t = ulong +rbx.platform.typedef.__paddr_t = ulong +rbx.platform.typedef.__vsize_t = ulong +rbx.platform.typedef.__psize_t = ulong +rbx.platform.typedef.__ptrdiff_t = long +rbx.platform.typedef.__size_t = ulong +rbx.platform.typedef.__ssize_t = long +rbx.platform.typedef.__wchar_t = int +rbx.platform.typedef.__wint_t = int +rbx.platform.typedef.__rune_t = int +rbx.platform.typedef.__wctrans_t = pointer +rbx.platform.typedef.__wctype_t = pointer +rbx.platform.typedef.__blkcnt_t = long_long +rbx.platform.typedef.__blksize_t = int +rbx.platform.typedef.__clock_t = long_long +rbx.platform.typedef.__clockid_t = int +rbx.platform.typedef.__cpuid_t = ulong +rbx.platform.typedef.__dev_t = int +rbx.platform.typedef.__fixpt_t = uint +rbx.platform.typedef.__fsblkcnt_t = ulong_long +rbx.platform.typedef.__fsfilcnt_t = ulong_long +rbx.platform.typedef.__gid_t = uint +rbx.platform.typedef.__id_t = uint +rbx.platform.typedef.__in_addr_t = uint +rbx.platform.typedef.__in_port_t = ushort +rbx.platform.typedef.__ino_t = ulong_long +rbx.platform.typedef.__key_t = long +rbx.platform.typedef.__mode_t = uint +rbx.platform.typedef.__nlink_t = uint +rbx.platform.typedef.__off_t = long_long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__rlim_t = ulong_long +rbx.platform.typedef.__sa_family_t = uchar +rbx.platform.typedef.__segsz_t = int +rbx.platform.typedef.__socklen_t = uint +rbx.platform.typedef.__suseconds_t = long +rbx.platform.typedef.__swblk_t = int +rbx.platform.typedef.__time_t = long_long +rbx.platform.typedef.__timer_t = int +rbx.platform.typedef.__uid_t = uint +rbx.platform.typedef.__useconds_t = uint +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.cpuid_t = ulong +rbx.platform.typedef.register_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.quad_t = long_long +rbx.platform.typedef.u_quad_t = ulong_long +rbx.platform.typedef.qaddr_t = pointer +rbx.platform.typedef.vaddr_t = ulong +rbx.platform.typedef.paddr_t = ulong +rbx.platform.typedef.vsize_t = ulong +rbx.platform.typedef.psize_t = ulong +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.daddr32_t = int +rbx.platform.typedef.daddr_t = long_long +rbx.platform.typedef.dev_t = int +rbx.platform.typedef.fixpt_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.id_t = uint +rbx.platform.typedef.ino_t = ulong_long +rbx.platform.typedef.key_t = long +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.rlim_t = ulong_long +rbx.platform.typedef.segsz_t = int +rbx.platform.typedef.swblk_t = int +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.fsblkcnt_t = ulong_long +rbx.platform.typedef.fsfilcnt_t = ulong_long +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.clock_t = long_long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long_long +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.__fd_mask = uint +rbx.platform.typedef.sigset_t = uint +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.sa_family_t = uchar diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-solaris/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-solaris/types.conf new file mode 100644 index 0000000000..f461b7ec90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-solaris/types.conf @@ -0,0 +1,122 @@ +rbx.platform.typedef.lock_t = uchar +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong +rbx.platform.typedef.intmax_t = long +rbx.platform.typedef.uintmax_t = ulong +rbx.platform.typedef.intptr_t = long +rbx.platform.typedef.uintptr_t = ulong +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = int +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = uint +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong +rbx.platform.typedef.longlong_t = long_long +rbx.platform.typedef.u_longlong_t = ulong_long +rbx.platform.typedef.t_scalar_t = int +rbx.platform.typedef.t_uscalar_t = uint +rbx.platform.typedef.uchar_t = uchar +rbx.platform.typedef.ushort_t = ushort +rbx.platform.typedef.uint_t = uint +rbx.platform.typedef.ulong_t = ulong +rbx.platform.typedef.*caddr_t = char +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.cnt_t = short +rbx.platform.typedef.ptrdiff_t = long +rbx.platform.typedef.pfn_t = ulong +rbx.platform.typedef.pgcnt_t = ulong +rbx.platform.typedef.spgcnt_t = long +rbx.platform.typedef.use_t = uchar +rbx.platform.typedef.sysid_t = short +rbx.platform.typedef.index_t = short +rbx.platform.typedef.off_t = long +rbx.platform.typedef.off64_t = long +rbx.platform.typedef.ino_t = ulong +rbx.platform.typedef.blkcnt_t = long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.ino64_t = ulong +rbx.platform.typedef.blkcnt64_t = long +rbx.platform.typedef.fsblkcnt64_t = ulong +rbx.platform.typedef.fsfilcnt64_t = ulong +rbx.platform.typedef.blksize_t = int +rbx.platform.typedef.pad64_t = long +rbx.platform.typedef.upad64_t = ulong +rbx.platform.typedef.offset_t = long_long +rbx.platform.typedef.u_offset_t = ulong_long +rbx.platform.typedef.len_t = ulong_long +rbx.platform.typedef.diskaddr_t = ulong_long +rbx.platform.typedef.k_fltset_t = uint +rbx.platform.typedef.id_t = int +rbx.platform.typedef.lgrp_id_t = int +rbx.platform.typedef.useconds_t = uint +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.major_t = uint +rbx.platform.typedef.minor_t = uint +rbx.platform.typedef.pri_t = short +rbx.platform.typedef.cpu_flag_t = ushort +rbx.platform.typedef.o_mode_t = ushort +rbx.platform.typedef.o_dev_t = short +rbx.platform.typedef.o_uid_t = ushort +rbx.platform.typedef.o_gid_t = ushort +rbx.platform.typedef.o_nlink_t = short +rbx.platform.typedef.o_pid_t = short +rbx.platform.typedef.o_ino_t = ushort +rbx.platform.typedef.key_t = int +rbx.platform.typedef.mode_t = uint +rbx.platform.typedef.uid_t = uint +rbx.platform.typedef.gid_t = uint +rbx.platform.typedef.datalink_id_t = uint +rbx.platform.typedef.taskid_t = int +rbx.platform.typedef.projid_t = int +rbx.platform.typedef.poolid_t = int +rbx.platform.typedef.zoneid_t = int +rbx.platform.typedef.ctid_t = int +rbx.platform.typedef.pthread_t = uint +rbx.platform.typedef.pthread_key_t = uint +rbx.platform.typedef.dev_t = ulong +rbx.platform.typedef.nlink_t = uint +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.size_t = ulong +rbx.platform.typedef.ssize_t = long +rbx.platform.typedef.time_t = long +rbx.platform.typedef.clock_t = long +rbx.platform.typedef.clockid_t = int +rbx.platform.typedef.timer_t = int +rbx.platform.typedef.unchar = uchar +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.hrtime_t = long_long +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.fds_mask = long +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.socklen_t = uint +rbx.platform.typedef.nfds_t = ulong +rbx.platform.typedef.disp_lock_t = uchar +rbx.platform.typedef.model_t = uint +rbx.platform.typedef.in_port_t = ushort +rbx.platform.typedef.in_addr_t = uint +rbx.platform.typedef.ipaddr_t = uint +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef.rlim64_t = ulong_long diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-windows/types.conf b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-windows/types.conf new file mode 100644 index 0000000000..24e391d26b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/platform/x86_64-windows/types.conf @@ -0,0 +1,120 @@ +rbx.platform.typedef.__int8_t = char +rbx.platform.typedef.__uint8_t = uchar +rbx.platform.typedef.__int16_t = short +rbx.platform.typedef.__uint16_t = ushort +rbx.platform.typedef.__int_least16_t = short +rbx.platform.typedef.__uint_least16_t = ushort +rbx.platform.typedef.__int32_t = int +rbx.platform.typedef.__uint32_t = uint +rbx.platform.typedef.__int_least32_t = int +rbx.platform.typedef.__uint_least32_t = uint +rbx.platform.typedef.__int64_t = long_long +rbx.platform.typedef.__uint64_t = ulong_long +rbx.platform.typedef._off_t = long +rbx.platform.typedef.__dev_t = short +rbx.platform.typedef.__uid_t = ushort +rbx.platform.typedef.__gid_t = ushort +rbx.platform.typedef._off64_t = long_long +rbx.platform.typedef.fpos_t = long_long +rbx.platform.typedef._fpos_t = long_long +rbx.platform.typedef._fpos64_t = long_long +rbx.platform.typedef._ssize_t = long_long +rbx.platform.typedef.wchar_t = ushort +rbx.platform.typedef.wint_t = uint +rbx.platform.typedef.wctype_t = ushort +rbx.platform.typedef.ptrdiff_t = long_long +rbx.platform.typedef.size_t = ulong_long +rbx.platform.typedef.__off_t = long +rbx.platform.typedef.__pid_t = int +rbx.platform.typedef.__loff_t = long_long +rbx.platform.typedef.u_char = uchar +rbx.platform.typedef.u_short = ushort +rbx.platform.typedef.u_int = uint +rbx.platform.typedef.u_long = ulong +rbx.platform.typedef.ushort = ushort +rbx.platform.typedef.uint = uint +rbx.platform.typedef.ulong = ulong +rbx.platform.typedef.clock_t = ulong +rbx.platform.typedef.time_t = long_long +rbx.platform.typedef.daddr_t = long +rbx.platform.typedef.caddr_t = string +rbx.platform.typedef.pid_t = int +rbx.platform.typedef.ssize_t = int +rbx.platform.typedef.nlink_t = ushort +rbx.platform.typedef.fd_mask = long +rbx.platform.typedef.clockid_t = ulong +rbx.platform.typedef.timer_t = ulong +rbx.platform.typedef.useconds_t = ulong +rbx.platform.typedef.suseconds_t = long +rbx.platform.typedef.int8_t = char +rbx.platform.typedef.int16_t = short +rbx.platform.typedef.int32_t = int +rbx.platform.typedef.int64_t = long_long +rbx.platform.typedef.uint8_t = uchar +rbx.platform.typedef.uint16_t = ushort +rbx.platform.typedef.uint32_t = uint +rbx.platform.typedef.uint64_t = ulong_long +rbx.platform.typedef.int_least8_t = char +rbx.platform.typedef.int_least16_t = short +rbx.platform.typedef.int_least32_t = int +rbx.platform.typedef.int_least64_t = long_long +rbx.platform.typedef.uint_least8_t = uchar +rbx.platform.typedef.uint_least16_t = ushort +rbx.platform.typedef.uint_least32_t = uint +rbx.platform.typedef.uint_least64_t = ulong_long +rbx.platform.typedef.int_fast8_t = char +rbx.platform.typedef.int_fast16_t = int +rbx.platform.typedef.int_fast32_t = int +rbx.platform.typedef.int_fast64_t = long_long +rbx.platform.typedef.uint_fast8_t = uchar +rbx.platform.typedef.uint_fast16_t = uint +rbx.platform.typedef.uint_fast32_t = uint +rbx.platform.typedef.uint_fast64_t = ulong_long +rbx.platform.typedef.intptr_t = long_long +rbx.platform.typedef.uintptr_t = ulong_long +rbx.platform.typedef.intmax_t = long_long +rbx.platform.typedef.uintmax_t = ulong_long +rbx.platform.typedef.off_t = long_long +rbx.platform.typedef.loff_t = long_long +rbx.platform.typedef.__dev16_t = short +rbx.platform.typedef.__dev32_t = ulong +rbx.platform.typedef._dev_t = uint +rbx.platform.typedef.dev_t = uint +rbx.platform.typedef.blksize_t = long +rbx.platform.typedef.__blkcnt32_t = long +rbx.platform.typedef.__blkcnt64_t = long_long +rbx.platform.typedef.blkcnt_t = long_long +rbx.platform.typedef.fsblkcnt_t = ulong +rbx.platform.typedef.fsfilcnt_t = ulong +rbx.platform.typedef.__uid16_t = ushort +rbx.platform.typedef.__uid32_t = ulong +rbx.platform.typedef.uid_t = ulong +rbx.platform.typedef.__gid16_t = ushort +rbx.platform.typedef.__gid32_t = ulong +rbx.platform.typedef.gid_t = ulong +rbx.platform.typedef.__ino32_t = ulong +rbx.platform.typedef.__ino64_t = ulong_long +rbx.platform.typedef.ino_t = ushort +rbx.platform.typedef._ino_t = ushort +rbx.platform.typedef.id_t = ulong +rbx.platform.typedef.key_t = long_long +rbx.platform.typedef.vm_offset_t = ulong +rbx.platform.typedef.vm_size_t = ulong +rbx.platform.typedef.u_int8_t = uchar +rbx.platform.typedef.u_int16_t = ushort +rbx.platform.typedef.u_int32_t = uint +rbx.platform.typedef.u_int64_t = ulong_long +rbx.platform.typedef.register_t = int +rbx.platform.typedef.*addr_t = char +rbx.platform.typedef.socklen_t = int +rbx.platform.typedef.sa_family_t = ushort +rbx.platform.typedef.__ULong = ulong +rbx.platform.typedef.sigset_t = ulong +rbx.platform.typedef.sig_atomic_t = int +rbx.platform.typedef.rlim_t = ulong +rbx.platform.typedef._sigset_t = ulong_long +rbx.platform.typedef.__time32_t = long +rbx.platform.typedef.__time64_t = long_long +rbx.platform.typedef.errno_t = int +rbx.platform.typedef._mode_t = ushort +rbx.platform.typedef.mode_t = ushort diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/pointer.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/pointer.rb new file mode 100644 index 0000000000..aece92a148 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/pointer.rb @@ -0,0 +1,160 @@ +# +# Copyright (C) 2008, 2009 Wayne Meissner +# Copyright (c) 2007, 2008 Evan Phoenix +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +require 'ffi/platform' +module FFI + class Pointer + + # Pointer size + SIZE = Platform::ADDRESS_SIZE / 8 + + # Return the size of a pointer on the current platform, in bytes + # @return [Numeric] + def self.size + SIZE + end + + # @param [nil,Numeric] len length of string to return + # @return [String] + # Read pointer's contents as a string, or the first +len+ bytes of the + # equivalent string if +len+ is not +nil+. + def read_string(len=nil) + if len + return '' if len == 0 + get_bytes(0, len) + else + get_string(0) + end + end + + # @param [Numeric] len length of string to return + # @return [String] + # Read the first +len+ bytes of pointer's contents as a string. + # + # Same as: + # ptr.read_string(len) # with len not nil + def read_string_length(len) + get_bytes(0, len) + end + + # @return [String] + # Read pointer's contents as a string. + # + # Same as: + # ptr.read_string # with no len + def read_string_to_null + get_string(0) + end + + # @param [String] str string to write + # @param [Numeric] len length of string to return + # @return [self] + # Write +len+ first bytes of +str+ in pointer's contents. + # + # Same as: + # ptr.write_string(str, len) # with len not nil + def write_string_length(str, len) + put_bytes(0, str, 0, len) + end + + # @param [String] str string to write + # @param [Numeric] len length of string to return + # @return [self] + # Write +str+ in pointer's contents, or first +len+ bytes if + # +len+ is not +nil+. + def write_string(str, len=nil) + len = str.bytesize unless len + # Write the string data without NUL termination + put_bytes(0, str, 0, len) + end + + # @param [Type] type type of data to read from pointer's contents + # @param [Symbol] reader method to send to +self+ to read +type+ + # @param [Numeric] length + # @return [Array] + # Read an array of +type+ of length +length+. + # @example + # ptr.read_array_of_type(TYPE_UINT8, :read_uint8, 4) # -> [1, 2, 3, 4] + def read_array_of_type(type, reader, length) + ary = [] + size = FFI.type_size(type) + tmp = self + length.times { |j| + ary << tmp.send(reader) + tmp += size unless j == length-1 # avoid OOB + } + ary + end + + # @param [Type] type type of data to write to pointer's contents + # @param [Symbol] writer method to send to +self+ to write +type+ + # @param [Array] ary + # @return [self] + # Write +ary+ in pointer's contents as +type+. + # @example + # ptr.write_array_of_type(TYPE_UINT8, :put_uint8, [1, 2, 3 ,4]) + def write_array_of_type(type, writer, ary) + size = FFI.type_size(type) + ary.each_with_index { |val, i| + break unless i < self.size + self.send(writer, i * size, val) + } + self + end + + # @return [self] + def to_ptr + self + end + + # @param [Symbol,Type] type of data to read + # @return [Object] + # Read pointer's contents as +type+ + # + # Same as: + # ptr.get(type, 0) + def read(type) + get(type, 0) + end + + # @param [Symbol,Type] type of data to read + # @param [Object] value to write + # @return [nil] + # Write +value+ of type +type+ to pointer's content + # + # Same as: + # ptr.put(type, 0) + def write(type, value) + put(type, 0, value) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct.rb new file mode 100644 index 0000000000..bd11a01363 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct.rb @@ -0,0 +1,371 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# Copyright (C) 2008, 2009 Andrea Fazzi +# Copyright (C) 2008, 2009 Luc Heinrich +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +require 'ffi/platform' +require 'ffi/struct_layout_builder' + +module FFI + + class StructLayout + + # @return [Array + # Get an array of tuples (field name, offset of the field). + def offsets + members.map { |m| [ m, self[m].offset ] } + end + + # @return [Numeric] + # Get the offset of a field. + def offset_of(field_name) + self[field_name].offset + end + + # An enum {Field} in a {StructLayout}. + class Enum < Field + + # @param [AbstractMemory] ptr pointer on a {Struct} + # @return [Object] + # Get an object of type {#type} from memory pointed by +ptr+. + def get(ptr) + type.find(ptr.get_int(offset)) + end + + # @param [AbstractMemory] ptr pointer on a {Struct} + # @param value + # @return [nil] + # Set +value+ into memory pointed by +ptr+. + def put(ptr, value) + ptr.put_int(offset, type.find(value)) + end + + end + + class InnerStruct < Field + def get(ptr) + type.struct_class.new(ptr.slice(self.offset, self.size)) + end + + def put(ptr, value) + raise TypeError, "wrong value type (expected #{type.struct_class})" unless value.is_a?(type.struct_class) + ptr.slice(self.offset, self.size).__copy_from__(value.pointer, self.size) + end + end + + class Mapped < Field + def initialize(name, offset, type, orig_field) + super(name, offset, type) + @orig_field = orig_field + end + + def get(ptr) + type.from_native(@orig_field.get(ptr), nil) + end + + def put(ptr, value) + @orig_field.put(ptr, type.to_native(value, nil)) + end + end + end + + + class Struct + + # Get struct size + # @return [Numeric] + def size + self.class.size + end + + # @return [Fixnum] Struct alignment + def alignment + self.class.alignment + end + alias_method :align, :alignment + + # (see FFI::StructLayout#offset_of) + def offset_of(name) + self.class.offset_of(name) + end + + # (see FFI::StructLayout#members) + def members + self.class.members + end + + # @return [Array] + # Get array of values from Struct fields. + def values + members.map { |m| self[m] } + end + + # (see FFI::StructLayout#offsets) + def offsets + self.class.offsets + end + + # Clear the struct content. + # @return [self] + def clear + pointer.clear + self + end + + # Get {Pointer} to struct content. + # @return [AbstractMemory] + def to_ptr + pointer + end + + # Get struct size + # @return [Numeric] + def self.size + defined?(@layout) ? @layout.size : defined?(@size) ? @size : 0 + end + + # set struct size + # @param [Numeric] size + # @return [size] + def self.size=(size) + raise ArgumentError, "Size already set" if defined?(@size) || defined?(@layout) + @size = size + end + + # @return (see Struct#alignment) + def self.alignment + @layout.alignment + end + + # (see FFI::Type#members) + def self.members + @layout.members + end + + # (see FFI::StructLayout#offsets) + def self.offsets + @layout.offsets + end + + # (see FFI::StructLayout#offset_of) + def self.offset_of(name) + @layout.offset_of(name) + end + + def self.in + ptr(:in) + end + + def self.out + ptr(:out) + end + + def self.ptr(flags = :inout) + @ref_data_type ||= Type::Mapped.new(StructByReference.new(self)) + end + + def self.val + @val_data_type ||= StructByValue.new(self) + end + + def self.by_value + self.val + end + + def self.by_ref(flags = :inout) + self.ptr(flags) + end + + class ManagedStructConverter < StructByReference + + # @param [Struct] struct_class + def initialize(struct_class) + super(struct_class) + + raise NoMethodError, "release() not implemented for class #{struct_class}" unless struct_class.respond_to? :release + @method = struct_class.method(:release) + end + + # @param [Pointer] ptr + # @param [nil] ctx + # @return [Struct] + def from_native(ptr, ctx) + struct_class.new(AutoPointer.new(ptr, @method)) + end + end + + def self.auto_ptr + @managed_type ||= Type::Mapped.new(ManagedStructConverter.new(self)) + end + + + class << self + public + + # @return [StructLayout] + # @overload layout + # @return [StructLayout] + # Get struct layout. + # @overload layout(*spec) + # @param [Array,Array(Hash)] spec + # @return [StructLayout] + # Create struct layout from +spec+. + # @example Creating a layout from an array +spec+ + # class MyStruct < Struct + # layout :field1, :int, + # :field2, :pointer, + # :field3, :string + # end + # @example Creating a layout from an array +spec+ with offset + # class MyStructWithOffset < Struct + # layout :field1, :int, + # :field2, :pointer, 6, # set offset to 6 for this field + # :field3, :string + # end + # @example Creating a layout from a hash +spec+ (Ruby 1.9 only) + # class MyStructFromHash < Struct + # layout :field1 => :int, + # :field2 => :pointer, + # :field3 => :string + # end + # @example Creating a layout with pointers to functions + # class MyFunctionTable < Struct + # layout :function1, callback([:int, :int], :int), + # :function2, callback([:pointer], :void), + # :field3, :string + # end + # @note Creating a layout from a hash +spec+ is supported only for Ruby 1.9. + def layout(*spec) + #raise RuntimeError, "struct layout already defined for #{self.inspect}" if defined?(@layout) + return @layout if spec.size == 0 + + builder = StructLayoutBuilder.new + builder.union = self < Union + builder.packed = @packed if defined?(@packed) + builder.alignment = @min_alignment if defined?(@min_alignment) + + if spec[0].kind_of?(Hash) + hash_layout(builder, spec) + else + array_layout(builder, spec) + end + builder.size = @size if defined?(@size) && @size > builder.size + cspec = builder.build + @layout = cspec unless self == Struct + @size = cspec.size + return cspec + end + + + protected + + def callback(params, ret) + mod = enclosing_module + FFI::CallbackInfo.new(find_type(ret, mod), params.map { |e| find_type(e, mod) }) + end + + def packed(packed = 1) + @packed = packed + end + alias :pack :packed + + def aligned(alignment = 1) + @min_alignment = alignment + end + alias :align :aligned + + def enclosing_module + begin + mod = self.name.split("::")[0..-2].inject(Object) { |obj, c| obj.const_get(c) } + (mod < FFI::Library || mod < FFI::Struct || mod.respond_to?(:find_type)) ? mod : nil + rescue Exception + nil + end + end + + + def find_field_type(type, mod = enclosing_module) + if type.kind_of?(Class) && type < Struct + FFI::Type::Struct.new(type) + + elsif type.kind_of?(Class) && type < FFI::StructLayout::Field + type + + elsif type.kind_of?(::Array) + FFI::Type::Array.new(find_field_type(type[0]), type[1]) + + else + find_type(type, mod) + end + end + + def find_type(type, mod = enclosing_module) + if mod + mod.find_type(type) + end || FFI.find_type(type) + end + + private + + # @param [StructLayoutBuilder] builder + # @param [Hash] spec + # @return [builder] + # Add hash +spec+ to +builder+. + def hash_layout(builder, spec) + spec[0].each do |name, type| + builder.add name, find_field_type(type), nil + end + end + + # @param [StructLayoutBuilder] builder + # @param [Array] spec + # @return [builder] + # Add array +spec+ to +builder+. + def array_layout(builder, spec) + i = 0 + while i < spec.size + name, type = spec[i, 2] + i += 2 + + # If the next param is a Integer, it specifies the offset + if spec[i].kind_of?(Integer) + offset = spec[i] + i += 1 + else + offset = nil + end + + builder.add name, find_field_type(type), offset + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct_layout_builder.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct_layout_builder.rb new file mode 100644 index 0000000000..4d6a464103 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/struct_layout_builder.rb @@ -0,0 +1,227 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +module FFI + + # Build a {StructLayout struct layout}. + class StructLayoutBuilder + attr_reader :size + attr_reader :alignment + + def initialize + @size = 0 + @alignment = 1 + @min_alignment = 1 + @packed = false + @union = false + @fields = Array.new + end + + # Set size attribute with +size+ only if +size+ is greater than attribute value. + # @param [Numeric] size + def size=(size) + @size = size if size > @size + end + + # Set alignment attribute with +align+ only if it is greater than attribute value. + # @param [Numeric] align + def alignment=(align) + @alignment = align if align > @alignment + @min_alignment = align + end + + # Set union attribute. + # Set to +true+ to build a {Union} instead of a {Struct}. + # @param [Boolean] is_union + # @return [is_union] + def union=(is_union) + @union = is_union + end + + # Building a {Union} or a {Struct} ? + # + # @return [Boolean] + # + def union? + @union + end + + # Set packed attribute + # @overload packed=(packed) Set alignment and packed attributes to + # +packed+. + # + # @param [Fixnum] packed + # + # @return [packed] + # @overload packed=(packed) Set packed attribute. + # @param packed + # + # @return [0,1] + # + def packed=(packed) + if packed.is_a?(0.class) + @alignment = packed + @packed = packed + else + @packed = packed ? 1 : 0 + end + end + + + # List of number types + NUMBER_TYPES = [ + Type::INT8, + Type::UINT8, + Type::INT16, + Type::UINT16, + Type::INT32, + Type::UINT32, + Type::LONG, + Type::ULONG, + Type::INT64, + Type::UINT64, + Type::FLOAT32, + Type::FLOAT64, + Type::LONGDOUBLE, + Type::BOOL, + ] + + # @param [String, Symbol] name name of the field + # @param [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type type of the field + # @param [Numeric, nil] offset + # @return [self] + # Add a field to the builder. + # @note Setting +offset+ to +nil+ or +-1+ is equivalent to +0+. + def add(name, type, offset = nil) + + if offset.nil? || offset == -1 + offset = @union ? 0 : align(@size, @packed ? [ @packed, type.alignment ].min : [ @min_alignment, type.alignment ].max) + end + + # + # If a FFI::Type type was passed in as the field arg, try and convert to a StructLayout::Field instance + # + field = type.is_a?(StructLayout::Field) ? type : field_for_type(name, offset, type) + @fields << field + @alignment = [ @alignment, field.alignment ].max unless @packed + @size = [ @size, field.size + (@union ? 0 : field.offset) ].max + + return self + end + + # @param (see #add) + # @return (see #add) + # Same as {#add}. + # @see #add + def add_field(name, type, offset = nil) + add(name, type, offset) + end + + # @param (see #add) + # @return (see #add) + # Add a struct as a field to the builder. + def add_struct(name, type, offset = nil) + add(name, Type::Struct.new(type), offset) + end + + # @param name (see #add) + # @param type (see #add) + # @param [Numeric] count array length + # @param offset (see #add) + # @return (see #add) + # Add an array as a field to the builder. + def add_array(name, type, count, offset = nil) + add(name, Type::Array.new(type, count), offset) + end + + # @return [StructLayout] + # Build and return the struct layout. + def build + # Add tail padding if the struct is not packed + size = @packed ? @size : align(@size, @alignment) + + layout = StructLayout.new(@fields, size, @alignment) + layout.__union! if @union + layout + end + + private + + # @param [Numeric] offset + # @param [Numeric] align + # @return [Numeric] + def align(offset, align) + align + ((offset - 1) & ~(align - 1)); + end + + # @param (see #add) + # @return [StructLayout::Field] + def field_for_type(name, offset, type) + field_class = case + when type.is_a?(Type::Function) + StructLayout::Function + + when type.is_a?(Type::Struct) + StructLayout::InnerStruct + + when type.is_a?(Type::Array) + StructLayout::Array + + when type.is_a?(FFI::Enum) + StructLayout::Enum + + when NUMBER_TYPES.include?(type) + StructLayout::Number + + when type == Type::POINTER + StructLayout::Pointer + + when type == Type::STRING + StructLayout::String + + when type.is_a?(Class) && type < StructLayout::Field + type + + when type.is_a?(DataConverter) + return StructLayout::Mapped.new(name, offset, Type::Mapped.new(type), field_for_type(name, offset, type.native_type)) + + when type.is_a?(Type::Mapped) + return StructLayout::Mapped.new(name, offset, type, field_for_type(name, offset, type.native_type)) + + else + raise TypeError, "invalid struct field type #{type.inspect}" + end + + field_class.new(name, offset, type) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/const_generator.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/const_generator.rb new file mode 100644 index 0000000000..dfc622e697 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/const_generator.rb @@ -0,0 +1,229 @@ +require 'tempfile' +require 'open3' + +module FFI + + # ConstGenerator turns C constants into ruby values. + # + # @example a simple example for stdio + # cg = FFI::ConstGenerator.new('stdio') do |gen| + # gen.const(:SEEK_SET) + # gen.const('SEEK_CUR') + # gen.const('seek_end') # this constant does not exist + # end # #calculate called automatically at the end of the block + # + # cg['SEEK_SET'] # => 0 + # cg['SEEK_CUR'] # => 1 + # cg['seek_end'] # => nil + # cg.to_ruby # => "SEEK_SET = 0\nSEEK_CUR = 1\n# seek_end not available" + class ConstGenerator + @options = {} + attr_reader :constants + + # Creates a new constant generator that uses +prefix+ as a name, and an + # options hash. + # + # The only option is +:required+, which if set to +true+ raises an error if a + # constant you have requested was not found. + # + # @param [#to_s] prefix + # @param [Hash] options + # @return + # @option options [Boolean] :required + # @overload initialize(prefix, options) + # @overload initialize(prefix, options) { |gen| ... } + # @yieldparam [ConstGenerator] gen new generator is passed to the block + # When passed a block, {#calculate} is automatically called at the end of + # the block, otherwise you must call it yourself. + def initialize(prefix = nil, options = {}) + @includes = ['stdio.h', 'stddef.h'] + @constants = {} + @prefix = prefix + + @required = options[:required] + @options = options + + if block_given? then + yield self + calculate self.class.options.merge(options) + end + end + # Set class options + # These options are merged with {#initialize} options when it is called with a block. + # @param [Hash] options + # @return [Hash] class options + def self.options=(options) + @options = options + end + # Get class options. + # @return [Hash] class options + def self.options + @options + end + # @param [String] name + # @return constant value (converted if a +converter+ was defined). + # Access a constant by name. + def [](name) + @constants[name].converted_value + end + + # Request the value for C constant +name+. + # + # @param [#to_s] name C constant name + # @param [String] format a printf format string to print the value out + # @param [String] cast a C cast for the value + # @param ruby_name alternate ruby name for {#to_ruby} + # + # @overload const(name, format=nil, cast='', ruby_name=nil, converter=nil) + # +converter+ is a Method or a Proc. + # @param [#call] converter convert the value from a string to the appropriate + # type for {#to_ruby}. + # @overload const(name, format=nil, cast='', ruby_name=nil) { |value| ... } + # Use a converter block. This block convert the value from a string to the + # appropriate type for {#to_ruby}. + # @yieldparam value constant value + def const(name, format = nil, cast = '', ruby_name = nil, converter = nil, + &converter_proc) + format ||= '%d' + cast ||= '' + + if converter_proc and converter then + raise ArgumentError, "Supply only converter or converter block" + end + + converter = converter_proc if converter.nil? + + const = Constant.new name, format, cast, ruby_name, converter + @constants[name.to_s] = const + return const + end + + # Calculate constants values. + # @param [Hash] options + # @option options [String] :cppflags flags for C compiler + # @return [nil] + # @raise if a constant is missing and +:required+ was set to +true+ (see {#initialize}) + def calculate(options = {}) + binary = File.join Dir.tmpdir, "rb_const_gen_bin_#{Process.pid}" + + Tempfile.open("#{@prefix}.const_generator") do |f| + @includes.each do |inc| + f.puts "#include <#{inc}>" + end + f.puts "\nint main(int argc, char **argv)\n{" + + @constants.each_value do |const| + f.puts <<-EOF + #ifdef #{const.name} + printf("#{const.name} #{const.format}\\n", #{const.cast}#{const.name}); + #endif + EOF + end + + f.puts "\n\treturn 0;\n}" + f.flush + + output = `gcc #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1` + + unless $?.success? then + output = output.split("\n").map { |l| "\t#{l}" }.join "\n" + raise "Compilation error generating constants #{@prefix}:\n#{output}" + end + end + + output = `#{binary}` + File.unlink(binary + (FFI::Platform.windows? ? ".exe" : "")) + output.each_line do |line| + line =~ /^(\S+)\s(.*)$/ + const = @constants[$1] + const.value = $2 + end + + missing_constants = @constants.select do |name, constant| + constant.value.nil? + end.map { |name,| name } + + if @required and not missing_constants.empty? then + raise "Missing required constants for #{@prefix}: #{missing_constants.join ', '}" + end + end + + # Dump constants to +io+. + # @param [#puts] io + # @return [nil] + def dump_constants(io) + @constants.each do |name, constant| + name = [@prefix, name].join '.' if @prefix + io.puts "#{name} = #{constant.converted_value}" + end + end + + # Outputs values for discovered constants. If the constant's value was + # not discovered it is not omitted. + # @return [String] + def to_ruby + @constants.sort_by { |name,| name }.map do |name, constant| + if constant.value.nil? then + "# #{name} not available" + else + constant.to_ruby + end + end.join "\n" + end + + # Add additional C include file(s) to calculate constants from. + # @note +stdio.h+ and +stddef.h+ automatically included + # @param [List, Array] i include file(s) + # @return [Array] array of include files + def include(*i) + @includes |= i.flatten + end + + end + + # This class hold constants for {ConstGenerator} + class ConstGenerator::Constant + + attr_reader :name, :format, :cast + attr_accessor :value + + # @param [#to_s] name + # @param [String] format a printf format string to print the value out + # @param [String] cast a C cast for the value + # @param ruby_name alternate ruby name for {#to_ruby} + # @param [#call] converter convert the value from a string to the appropriate + # type for {#to_ruby}. + def initialize(name, format, cast, ruby_name = nil, converter=nil) + @name = name + @format = format + @cast = cast + @ruby_name = ruby_name + @converter = converter + @value = nil + end + + # Return constant value (converted if a +converter+ was defined). + # @return constant value. + def converted_value + if @converter + @converter.call(@value) + else + @value + end + end + + # get constant ruby name + # @return [String] + def ruby_name + @ruby_name || @name + end + + # Get an evaluable string from constant. + # @return [String] + def to_ruby + "#{ruby_name} = #{converted_value}" + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator.rb new file mode 100644 index 0000000000..29b59e1144 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator.rb @@ -0,0 +1,60 @@ +module FFI + + # @private + class Generator + + def initialize(ffi_name, rb_name, options = {}) + @ffi_name = ffi_name + @rb_name = rb_name + @options = options + @name = File.basename rb_name, '.rb' + + file = File.read @ffi_name + + new_file = file.gsub(/^( *)@@@(.*?)@@@/m) do + @constants = [] + @structs = [] + + indent = $1 + original_lines = $2.count "\n" + + instance_eval $2, @ffi_name, $`.count("\n") + + new_lines = [] + @constants.each { |c| new_lines << c.to_ruby } + @structs.each { |s| new_lines << s.generate_layout } + + new_lines = new_lines.join("\n").split "\n" # expand multiline blocks + new_lines = new_lines.map { |line| indent + line } + + padding = original_lines - new_lines.length + new_lines += [nil] * padding if padding >= 0 + + new_lines.join "\n" + end + + open @rb_name, 'w' do |f| + f.puts "# This file is generated by rake. Do not edit." + f.puts + f.puts new_file + end + end + + def constants(options = {}, &block) + @constants << FFI::ConstGenerator.new(@name, @options.merge(options), &block) + end + + def struct(options = {}, &block) + @structs << FFI::StructGenerator.new(@name, @options.merge(options), &block) + end + + ## + # Utility converter for constants + + def to_s + proc { |obj| obj.to_s.inspect } + end + + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator_task.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator_task.rb new file mode 100644 index 0000000000..9e39519321 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/generator_task.rb @@ -0,0 +1,36 @@ +begin + require 'ffi/struct_generator' + require 'ffi/const_generator' + require 'ffi/generator' +rescue LoadError + # from Rakefile + require 'lib/ffi/struct_generator' + require 'lib/ffi/const_generator' + require 'lib/ffi/generator' +end + +require 'rake' +require 'rake/tasklib' +require 'tempfile' + +## +# Rake task that calculates C structs for FFI::Struct. + +# @private +class FFI::Generator::Task < Rake::TaskLib + + def initialize(rb_names) + task :clean do rm_f rb_names end + + rb_names.each do |rb_name| + ffi_name = "#{rb_name}.ffi" + + file rb_name => ffi_name do |t| + puts "Generating #{rb_name}..." if Rake.application.options.trace + + FFI::Generator.new ffi_name, rb_name + end + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/struct_generator.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/struct_generator.rb new file mode 100644 index 0000000000..e892e6535c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/struct_generator.rb @@ -0,0 +1,194 @@ +require 'tempfile' + +module FFI + + ## + # Generates an FFI Struct layout. + # + # Given the @@@ portion in: + # + # module Zlib::ZStream < FFI::Struct + # @@@ + # name "struct z_stream_s" + # include "zlib.h" + # + # field :next_in, :pointer + # field :avail_in, :uint + # field :total_in, :ulong + # + # # ... + # @@@ + # end + # + # StructGenerator will create the layout: + # + # layout :next_in, :pointer, 0, + # :avail_in, :uint, 4, + # :total_in, :ulong, 8, + # # ... + # + # StructGenerator does its best to pad the layout it produces to preserve + # line numbers. Place the struct definition as close to the top of the file + # for best results. + + class StructGenerator + @options = {} + attr_accessor :size + attr_reader :fields + + def initialize(name, options = {}) + @name = name + @struct_name = nil + @includes = [] + @fields = [] + @found = false + @size = nil + + if block_given? then + yield self + calculate self.class.options.merge(options) + end + end + def self.options=(options) + @options = options + end + def self.options + @options + end + def calculate(options = {}) + binary = File.join Dir.tmpdir, "rb_struct_gen_bin_#{Process.pid}" + + raise "struct name not set" if @struct_name.nil? + + Tempfile.open("#{@name}.struct_generator") do |f| + f.puts "#include " + + @includes.each do |inc| + f.puts "#include <#{inc}>" + end + + f.puts "#include \n\n" + f.puts "int main(int argc, char **argv)\n{" + f.puts " #{@struct_name} s;" + f.puts %[ printf("sizeof(#{@struct_name}) %u\\n", (unsigned int) sizeof(#{@struct_name}));] + + @fields.each do |field| + f.puts <<-EOF + printf("#{field.name} %u %u\\n", (unsigned int) offsetof(#{@struct_name}, #{field.name}), + (unsigned int) sizeof(s.#{field.name})); + EOF + end + + f.puts "\n return 0;\n}" + f.flush + + output = `gcc #{options[:cppflags]} #{options[:cflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1` + + unless $?.success? then + @found = false + output = output.split("\n").map { |l| "\t#{l}" }.join "\n" + raise "Compilation error generating struct #{@name} (#{@struct_name}):\n#{output}" + end + end + + output = `#{binary}`.split "\n" + File.unlink(binary + (FFI::Platform.windows? ? ".exe" : "")) + sizeof = output.shift + unless @size + m = /\s*sizeof\([^)]+\) (\d+)/.match sizeof + @size = m[1] + end + + line_no = 0 + output.each do |line| + md = line.match(/.+ (\d+) (\d+)/) + @fields[line_no].offset = md[1].to_i + @fields[line_no].size = md[2].to_i + + line_no += 1 + end + + @found = true + end + + def field(name, type=nil) + field = Field.new(name, type) + @fields << field + return field + end + + def found? + @found + end + + def dump_config(io) + io.puts "rbx.platform.#{@name}.sizeof = #{@size}" + + @fields.each { |field| io.puts field.to_config(@name) } + end + + def generate_layout + buf = "" + + @fields.each_with_index do |field, i| + if buf.empty? + buf << "layout :#{field.name}, :#{field.type}, #{field.offset}" + else + buf << " :#{field.name}, :#{field.type}, #{field.offset}" + end + + if i < @fields.length - 1 + buf << ",\n" + end + end + + buf + end + + def get_field(name) + @fields.find { |f| name == f.name } + end + + def include(i) + @includes << i + end + + def name(n) + @struct_name = n + end + + end + + ## + # A field in a Struct. + + class StructGenerator::Field + + attr_reader :name + attr_reader :type + attr_reader :offset + attr_accessor :size + + def initialize(name, type) + @name = name + @type = type + @offset = nil + @size = nil + end + + def offset=(o) + @offset = o + end + + def to_config(name) + buf = [] + buf << "rbx.platform.#{name}.#{@name}.offset = #{@offset}" + buf << "rbx.platform.#{name}.#{@name}.size = #{@size}" + buf << "rbx.platform.#{name}.#{@name}.type = #{@type}" if @type + buf + end + + end + +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/types_generator.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/types_generator.rb new file mode 100644 index 0000000000..ff24ec5167 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/tools/types_generator.rb @@ -0,0 +1,134 @@ +require 'tempfile' + +module FFI + + # @private + class TypesGenerator + + ## + # Maps different C types to the C type representations we use + + TYPE_MAP = { + "char" => :char, + "signed char" => :char, + "__signed char" => :char, + "unsigned char" => :uchar, + + "short" => :short, + "signed short" => :short, + "signed short int" => :short, + "unsigned short" => :ushort, + "unsigned short int" => :ushort, + + "int" => :int, + "signed int" => :int, + "unsigned int" => :uint, + + "long" => :long, + "long int" => :long, + "signed long" => :long, + "signed long int" => :long, + "unsigned long" => :ulong, + "unsigned long int" => :ulong, + "long unsigned int" => :ulong, + + "long long" => :long_long, + "long long int" => :long_long, + "signed long long" => :long_long, + "signed long long int" => :long_long, + "unsigned long long" => :ulong_long, + "unsigned long long int" => :ulong_long, + + "char *" => :string, + "void *" => :pointer, + } + + def self.generate(options = {}) + typedefs = nil + Tempfile.open 'ffi_types_generator' do |io| + io.puts <<-C +#include +#if !(defined(WIN32)) +#include +#include +#endif + C + + io.close + cc = ENV['CC'] || 'gcc' + cmd = "#{cc} -E -x c #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c" + if options[:input] + typedefs = File.read(options[:input]) + elsif options[:remote] + typedefs = `ssh #{options[:remote]} #{cmd} - < #{io.path}` + else + typedefs = `#{cmd} #{io.path}` + end + end + + code = "" + + typedefs.each_line do |type| + # We only care about single line typedef + next unless type =~ /typedef/ + # Ignore unions or structs + next if type =~ /union|struct/ + + # strip off the starting typedef and ending ; + type.gsub!(/^(.*typedef\s*)/, "") + type.gsub!(/\s*;\s*$/, "") + + parts = type.split(/\s+/) + def_type = parts.join(" ") + + # GCC does mapping with __attribute__ stuf, also see + # http://hal.cs.berkeley.edu/cil/cil016.html section 16.2.7. Problem + # with this is that the __attribute__ stuff can either occur before or + # after the new type that is defined... + if type =~ /__attribute__/ + if parts.last =~ /__QI__|__HI__|__SI__|__DI__|__word__/ + + # In this case, the new type is BEFORE __attribute__ we need to + # find the final_type as the type before the part that starts with + # __attribute__ + final_type = "" + parts.each do |p| + break if p =~ /__attribute__/ + final_type = p + end + else + final_type = parts.pop + end + + def_type = case type + when /__QI__/ then "char" + when /__HI__/ then "short" + when /__SI__/ then "int" + when /__DI__/ then "long long" + when /__word__/ then "long" + else "int" + end + + def_type = "unsigned #{def_type}" if type =~ /unsigned/ + else + final_type = parts.pop + def_type = parts.join(" ") + end + + if type = TYPE_MAP[def_type] + code << "rbx.platform.typedef.#{final_type} = #{type}\n" + TYPE_MAP[final_type] = TYPE_MAP[def_type] + else + # Fallback to an ordinary pointer if we don't know the type + if def_type =~ /\*/ + code << "rbx.platform.typedef.#{final_type} = pointer\n" + TYPE_MAP[final_type] = :pointer + end + end + end + + code + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/types.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/types.rb new file mode 100644 index 0000000000..ddad36e175 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/types.rb @@ -0,0 +1,194 @@ +# +# Copyright (C) 2008-2010 Wayne Meissner +# Copyright (c) 2007, 2008 Evan Phoenix +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# see {file:README} +module FFI + + # @param [Type, DataConverter, Symbol] old type definition used by {FFI.find_type} + # @param [Symbol] add new type definition's name to add + # @return [Type] + # Add a definition type to type definitions. + def self.typedef(old, add) + TypeDefs[add] = self.find_type(old) + end + + # (see FFI.typedef) + def self.add_typedef(old, add) + typedef old, add + end + + + # @param [Type, DataConverter, Symbol] name + # @param [Hash] type_map if nil, {FFI::TypeDefs} is used + # @return [Type] + # Find a type in +type_map+ ({FFI::TypeDefs}, by default) from + # a type objet, a type name (symbol). If +name+ is a {DataConverter}, + # a new {Type::Mapped} is created. + def self.find_type(name, type_map = nil) + if name.is_a?(Type) + name + + elsif type_map && type_map.has_key?(name) + type_map[name] + + elsif TypeDefs.has_key?(name) + TypeDefs[name] + + elsif name.is_a?(DataConverter) + (type_map || TypeDefs)[name] = Type::Mapped.new(name) + else + raise TypeError, "unable to resolve type '#{name}'" + end + end + + # List of type definitions + TypeDefs.merge!({ + # The C void type; only useful for function return types + :void => Type::VOID, + + # C boolean type + :bool => Type::BOOL, + + # C nul-terminated string + :string => Type::STRING, + + # C signed char + :char => Type::CHAR, + # C unsigned char + :uchar => Type::UCHAR, + + # C signed short + :short => Type::SHORT, + # C unsigned short + :ushort => Type::USHORT, + + # C signed int + :int => Type::INT, + # C unsigned int + :uint => Type::UINT, + + # C signed long + :long => Type::LONG, + + # C unsigned long + :ulong => Type::ULONG, + + # C signed long long integer + :long_long => Type::LONG_LONG, + + # C unsigned long long integer + :ulong_long => Type::ULONG_LONG, + + # C single precision float + :float => Type::FLOAT, + + # C double precision float + :double => Type::DOUBLE, + + # C long double + :long_double => Type::LONGDOUBLE, + + # Native memory address + :pointer => Type::POINTER, + + # 8 bit signed integer + :int8 => Type::INT8, + # 8 bit unsigned integer + :uint8 => Type::UINT8, + + # 16 bit signed integer + :int16 => Type::INT16, + # 16 bit unsigned integer + :uint16 => Type::UINT16, + + # 32 bit signed integer + :int32 => Type::INT32, + # 32 bit unsigned integer + :uint32 => Type::UINT32, + + # 64 bit signed integer + :int64 => Type::INT64, + # 64 bit unsigned integer + :uint64 => Type::UINT64, + + :buffer_in => Type::BUFFER_IN, + :buffer_out => Type::BUFFER_OUT, + :buffer_inout => Type::BUFFER_INOUT, + + # Used in function prototypes to indicate the arguments are variadic + :varargs => Type::VARARGS, + }) + + # This will convert a pointer to a Ruby string (just like `:string`), but + # also allow to work with the pointer itself. This is useful when you want + # a Ruby string already containing a copy of the data, but also the pointer + # to the data for you to do something with it, like freeing it, in case the + # library handed the memory to off to the caller (Ruby-FFI). + # + # It's {typedef}'d as +:strptr+. + class StrPtrConverter + extend DataConverter + native_type Type::POINTER + + # @param [Pointer] val + # @param ctx not used + # @return [Array(String, Pointer)] + # Returns a [ String, Pointer ] tuple so the C memory for the string can be freed + def self.from_native(val, ctx) + [ val.null? ? nil : val.get_string(0), val ] + end + end + + typedef(StrPtrConverter, :strptr) + + # @param type +type+ is an instance of class accepted by {FFI.find_type} + # @return [Numeric] + # Get +type+ size, in bytes. + def self.type_size(type) + find_type(type).size + end + + # Load all the platform dependent types + begin + File.open(File.join(Platform::CONF_DIR, 'types.conf'), "r") do |f| + prefix = "rbx.platform.typedef." + f.each_line { |line| + if line.index(prefix) == 0 + new_type, orig_type = line.chomp.slice(prefix.length..-1).split(/\s*=\s*/) + typedef(orig_type.to_sym, new_type.to_sym) + end + } + end + typedef :pointer, :caddr_t + rescue Errno::ENOENT + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/union.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/union.rb new file mode 100644 index 0000000000..38414ab952 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/union.rb @@ -0,0 +1,43 @@ +# +# Copyright (C) 2009 Andrea Fazzi +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +require 'ffi/struct' + +module FFI + + class Union < FFI::Struct + def self.builder + b = StructLayoutBuilder.new + b.union = true + b + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/variadic.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/variadic.rb new file mode 100644 index 0000000000..24140556c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/variadic.rb @@ -0,0 +1,78 @@ +# +# Copyright (C) 2008, 2009 Wayne Meissner +# Copyright (C) 2009 Luc Heinrich +# +# This file is part of ruby-ffi. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the Ruby FFI project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +module FFI + class VariadicInvoker + def init(arg_types, type_map) + @fixed = Array.new + @type_map = type_map + arg_types.each_with_index do |type, i| + @fixed << type unless type == Type::VARARGS + end + end + + + def call(*args, &block) + param_types = Array.new(@fixed) + param_values = Array.new + @fixed.each_with_index do |t, i| + param_values << args[i] + end + i = @fixed.length + while i < args.length + param_types << FFI.find_type(args[i], @type_map) + param_values << args[i + 1] + i += 2 + end + invoke(param_types, param_values, &block) + end + + # + # Attach the invoker to module +mod+ as +mname+ + # + def attach(mod, mname) + invoker = self + params = "*args" + call = "call" + mod.module_eval <<-code + @@#{mname} = invoker + def self.#{mname}(#{params}) + @@#{mname}.#{call}(#{params}) + end + def #{mname}(#{params}) + @@#{mname}.#{call}(#{params}) + end + code + invoker + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/version.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/version.rb new file mode 100644 index 0000000000..81d7146efc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/lib/ffi/version.rb @@ -0,0 +1,3 @@ +module FFI + VERSION = '1.10.0' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getlogin.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getlogin.rb new file mode 100644 index 0000000000..de47cacb01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getlogin.rb @@ -0,0 +1,8 @@ +require 'rubygems' +require 'ffi' +module Foo + extend FFI::Library + ffi_lib FFI::Library::LIBC + attach_function :getlogin, [ ], :string +end +puts "getlogin=#{Foo.getlogin}" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getpid.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getpid.rb new file mode 100644 index 0000000000..e44534c4ad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/getpid.rb @@ -0,0 +1,8 @@ +require 'rubygems' +require 'ffi' +module Foo + extend FFI::Library + ffi_lib FFI::Library::LIBC + attach_function :getpid, [ ], :int +end +puts "My pid=#{Foo.getpid}" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/gettimeofday.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/gettimeofday.rb new file mode 100644 index 0000000000..34b2668ba4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/gettimeofday.rb @@ -0,0 +1,18 @@ +require 'rubygems' +require 'ffi' +class Timeval < FFI::Struct + rb_maj, rb_min, rb_micro = RUBY_VERSION.split('.') + if rb_maj.to_i >= 1 && rb_min.to_i >= 9 || RUBY_PLATFORM =~ /java/ + layout :tv_sec => :ulong, :tv_usec => :ulong + else + layout :tv_sec, :ulong, 0, :tv_usec, :ulong, 4 + end +end +module LibC + extend FFI::Library + ffi_lib FFI::Library::LIBC + attach_function :gettimeofday, [ :pointer, :pointer ], :int +end +t = Timeval.new +LibC.gettimeofday(t.pointer, nil) +puts "t.tv_sec=#{t[:tv_sec]} t.tv_usec=#{t[:tv_usec]}" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/hello.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/hello.rb new file mode 100644 index 0000000000..11d5285522 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/hello.rb @@ -0,0 +1,7 @@ +require File.expand_path(File.join(File.dirname(__FILE__), "sample_helper")) +module Foo + extend FFI::Library + ffi_lib FFI::Library::LIBC + attach_function("cputs", "puts", [ :string ], :int) +end +Foo.cputs("Hello, World via libc puts using FFI on MRI ruby") diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/inotify.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/inotify.rb new file mode 100644 index 0000000000..e615f7b444 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/inotify.rb @@ -0,0 +1,60 @@ +require 'rubygems' +require 'ffi' +module Inotify + extend FFI::Library + ffi_lib FFI::Library::LIBC + class Event < FFI::Struct + layout \ + :wd, :int, + :mask, :uint, + :cookie, :uint, + :len, :uint + end + attach_function :init, :inotify_init, [ ], :int + attach_function :add_watch, :inotify_add_watch, [ :int, :string, :uint ], :int + attach_function :rm_watch, :inotify_rm_watch, [ :int, :uint ], :int + attach_function :read, [ :int, :buffer_out, :uint ], :int + IN_ACCESS=0x00000001 + IN_MODIFY=0x00000002 + IN_ATTRIB=0x00000004 + IN_CLOSE_WRITE=0x00000008 + IN_CLOSE_NOWRITE=0x00000010 + IN_CLOSE=(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + IN_OPEN=0x00000020 + IN_MOVED_FROM=0x00000040 + IN_MOVED_TO=0x00000080 + IN_MOVE= (IN_MOVED_FROM | IN_MOVED_TO) + IN_CREATE=0x00000100 + IN_DELETE=0x00000200 + IN_DELETE_SELF=0x00000400 + IN_MOVE_SELF=0x00000800 + # Events sent by the kernel. + IN_UNMOUNT=0x00002000 + IN_Q_OVERFLOW=0x00004000 + IN_IGNORED=0x00008000 + IN_ONLYDIR=0x01000000 + IN_DONT_FOLLOW=0x02000000 + IN_MASK_ADD=0x20000000 + IN_ISDIR=0x40000000 + IN_ONESHOT=0x80000000 + IN_ALL_EVENTS=(IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \ + | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \ + | IN_MOVED_TO | IN_CREATE | IN_DELETE \ + | IN_DELETE_SELF | IN_MOVE_SELF) + +end +if $0 == __FILE__ + fd = Inotify.init + puts "fd=#{fd}" + wd = Inotify.add_watch(fd, "/tmp/", Inotify::IN_ALL_EVENTS) + fp = FFI::IO.for_fd(fd) + puts "wfp=#{fp}" + while true + buf = FFI::Buffer.alloc_out(Inotify::Event.size + 4096, 1, false) + ev = Inotify::Event.new buf + ready = IO.select([ fp ], nil, nil, nil) + n = Inotify.read(fd, buf, buf.total) + puts "Read #{n} bytes from inotify fd" + puts "event.wd=#{ev[:wd]} mask=#{ev[:mask]} len=#{ev[:len]} name=#{ev[:len] > 0 ? buf.get_string(16) : 'unknown'}" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/pty.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/pty.rb new file mode 100644 index 0000000000..45c5a19039 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/pty.rb @@ -0,0 +1,76 @@ +require 'ffi' + + +module PTY + private + module LibC + extend FFI::Library + ffi_lib FFI::Library::LIBC + attach_function :forkpty, [ :buffer_out, :buffer_out, :buffer_in, :buffer_in ], :int + attach_function :openpty, [ :buffer_out, :buffer_out, :buffer_out, :buffer_in, :buffer_in ], :int + attach_function :login_tty, [ :int ], :int + attach_function :close, [ :int ], :int + attach_function :strerror, [ :int ], :string + attach_function :fork, [], :int + attach_function :execv, [ :string, :buffer_in ], :int + attach_function :execvp, [ :string, :buffer_in ], :int + attach_function :dup2, [ :int, :int ], :int + attach_function :dup, [ :int ], :int + end + Buffer = FFI::Buffer + def self.build_args(args) + cmd = args.shift + cmd_args = args.map do |arg| + MemoryPointer.from_string(arg) + end + exec_args = MemoryPointer.new(:pointer, 1 + cmd_args.length + 1) + exec_cmd = MemoryPointer.from_string(cmd) + exec_args[0].put_pointer(0, exec_cmd) + cmd_args.each_with_index do |arg, i| + exec_args[i + 1].put_pointer(0, arg) + end + [ cmd, exec_args ] + end + public + def self.getpty(*args) + mfdp = Buffer.new :int + name = Buffer.new 1024 + # + # All the execv setup is done in the parent, since doing anything other than + # execv in the child after fork is really flakey + # + exec_cmd, exec_args = build_args(args) + pid = LibC.forkpty(mfdp, name, nil, nil) + raise "forkpty failed: #{LibC.strerror(FFI.errno)}" if pid < 0 + if pid == 0 + LibC.execvp(exec_cmd, exec_args) + exit 1 + end + masterfd = mfdp.get_int(0) + rfp = FFI::IO.for_fd(masterfd, "r") + wfp = FFI::IO.for_fd(LibC.dup(masterfd), "w") + if block_given? + yield rfp, wfp, pid + rfp.close unless rfp.closed? + wfp.close unless wfp.closed? + else + [ rfp, wfp, pid ] + end + end + def self.spawn(*args, &block) + self.getpty("/bin/sh", "-c", args[0], &block) + end +end +module LibC + extend FFI::Library + attach_function :close, [ :int ], :int + attach_function :write, [ :int, :buffer_in, :ulong ], :long + attach_function :read, [ :int, :buffer_out, :ulong ], :long +end +PTY.getpty("/bin/ls", "-alR", "/") { |rfd, wfd, pid| +#PTY.spawn("ls -laR /") { |rfd, wfd, pid| + puts "child pid=#{pid}" + while !rfd.eof? && (buf = rfd.gets) + puts "child: '#{buf.strip}'" + end +} diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/qsort.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/qsort.rb new file mode 100644 index 0000000000..5d4ab6ca13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/qsort.rb @@ -0,0 +1,21 @@ +require 'rubygems' +require 'ffi' + +module LibC + extend FFI::Library + ffi_lib FFI::Library::LIBC + callback :qsort_cmp, [ :pointer, :pointer ], :int + attach_function :qsort, [ :pointer, :ulong, :ulong, :qsort_cmp ], :int +end + +p = FFI::MemoryPointer.new(:int, 2) +p.put_array_of_int32(0, [ 2, 1 ]) +puts "ptr=#{p.inspect}" +puts "Before qsort #{p.get_array_of_int32(0, 2).join(', ')}" +LibC.qsort(p, 2, 4) do |p1, p2| + i1 = p1.get_int32(0) + i2 = p2.get_int32(0) + puts "In block: comparing #{i1} and #{i2}" + i1 < i2 ? -1 : i1 > i2 ? 1 : 0 +end +puts "After qsort #{p.get_array_of_int32(0, 2).join(', ')}" diff --git a/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/sample_helper.rb b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/sample_helper.rb new file mode 100644 index 0000000000..2bac44f99b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ffi-1.10.0/samples/sample_helper.rb @@ -0,0 +1,6 @@ +require 'rubygems' +require 'spec' + +$:.unshift File.join(File.dirname(__FILE__), "..", "lib"), File.join(File.dirname(__FILE__), "..", "build", RUBY_VERSION) unless RUBY_PLATFORM =~ /java/ +require "ffi" + diff --git a/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Gemfile new file mode 100644 index 0000000000..ea587c7708 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Gemfile @@ -0,0 +1,24 @@ +# ---------------------------------------------------------------------------- +# Frozen-string-literal: true +# Copyright: 2015-2016 Jordon Bedwell - MIT License +# Encoding: utf-8 +# ---------------------------------------------------------------------------- + +source "https://rubygems.org" +gem "rake", :require => false +gemspec + +group :test do + gem "rspec-helpers", :require => false + gem "codeclimate-test-reporter", :require => false + gem "luna-rspec-formatters", :require => false + gem "rspec", :require => false +end + +group :development do + gem "luna-rubocop-formatters", :require => false + gem "rubocop", :github => "bbatsov/rubocop", :require => false + gem "pry", { + :require => false + } +end diff --git a/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/LICENSE b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/LICENSE new file mode 100644 index 0000000000..e603a7825b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2016 Jordon Bedwell + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Rakefile new file mode 100644 index 0000000000..1c929e5c6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/Rakefile @@ -0,0 +1,13 @@ +# ---------------------------------------------------------------------------- +# Frozen-string-literal: true +# Copyright: 2015-2016 Jordon Bedwell - MIT License +# Encoding: utf-8 +# ---------------------------------------------------------------------------- + +$LOAD_PATH.unshift(File.expand_path("../lib", __FILE__)) +require "luna/rubocop/rake/task" +require "rspec/core/rake_task" + +task :default => [:spec] +RSpec::Core::RakeTask.new :spec +task :test => :spec diff --git a/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended.rb b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended.rb new file mode 100644 index 0000000000..fc694cf10b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended.rb @@ -0,0 +1,202 @@ +# ---------------------------------------------------------------------------- +# Frozen-string-literal: true +# Copyright: 2015-2016 Jordon Bedwell - MIT License +# Encoding: utf-8 +# ---------------------------------------------------------------------------- + +require "forwardable/extended/version" +require "forwardable" + +module Forwardable + module Extended + + # ------------------------------------------------------------------------ + # Make our methods private on the class, there is no reason for public. + # ------------------------------------------------------------------------ + + def self.extended(klass) + instance_methods.each do |method| + klass.private_class_method( + method + ) + end + end + + # ------------------------------------------------------------------------ + # Delegate using a Rails-like interface. + # ------------------------------------------------------------------------ + + def rb_delegate(method, to: nil, alias_of: method, **kwd) + raise ArgumentError, "to must be provided" unless to + def_delegator( + to, alias_of, method, **kwd + ) + end + + # ------------------------------------------------------------------------ + # Delegate a method to a hash and key. + # ------------------------------------------------------------------------ + + def def_hash_delegator(hash, method, key: method, **kwd) + prefix, suffix, wrap = prepare_delegate(**kwd) + + if suffix + method = method.to_s.gsub( + /\?$/, "" + ) + end + + class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 9 + def #{method}#{suffix}(*args) + #{wrap}( + #{prefix}#{hash}[#{key.inspect}] + ) + + rescue Exception + if !Forwardable.debug && $@ && $@.respond_to?(:delete_if) + $@.delete_if do |source| + source =~ %r"#{Regexp.escape(__FILE__)}"o + end + end + + raise + end + STR + end + + # ------------------------------------------------------------------------ + # Delegate a method to an instance variable. + # ------------------------------------------------------------------------ + + def def_ivar_delegator(ivar, alias_ = ivar, **kwd) + prefix, suffix, wrap = prepare_delegate(**kwd) + + if suffix + alias_ = alias_.to_s.gsub( + /\?$/, "" + ) + end + + class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 9 + def #{alias_.to_s.gsub(/\A@/, "")}#{suffix} + #{wrap}( + #{prefix}#{ivar} + ) + + rescue Exception + if !Forwardable.debug && $@ && $@.respond_to?(:delete_if) + $@.delete_if do |source| + source =~ %r"#{Regexp.escape(__FILE__)}"o + end + end + + raise + end + STR + end + + # ------------------------------------------------------------------------ + # Like def_delegator but allows you to send args and do other stuff. + # ------------------------------------------------------------------------ + + def def_modern_delegator(accessor, method, alias_ = method, args: \ + { :before => [], :after => [] }, **kwd) + + prefix, suffix, wrap = prepare_delegate(**kwd) + args = { :before => args } unless args.is_a?(Hash) + b = [args[:before]].flatten.compact.map(&:to_s).join(", ") + a = [args[ :after]].flatten.compact.map(&:to_s).join(", ") + b = b + ", " unless args[:before].nil? || args[:before].empty? + a = ", " + a unless args[ :after].nil? || args[ :after].empty? + alias_ = alias_.to_s.gsub(/\?$/, "") if suffix + + class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 10 + def #{alias_}#{suffix}(*args, &block) + #{wrap}(#{prefix}#{accessor}.send( + #{method.inspect}, #{b}*args#{a}, &block + )) + + rescue Exception + if !Forwardable.debug && $@ && $@.respond_to?(:delete_if) + $@.delete_if do |source| + source =~ %r"#{Regexp.escape(__FILE__)}"o + end + end + + raise + end + STR + end + + # ------------------------------------------------------------------------ + # Wraps around traditional delegation and modern delegation. + # ------------------------------------------------------------------------ + + def def_delegator(accessor, method, alias_ = method, **kwd) + kwd, alias_ = alias_, method if alias_.is_a?(Hash) && !kwd.any? + + if alias_.is_a?(Hash) || !kwd.any? + Forwardable.instance_method(:def_delegator).bind(self) \ + .call(accessor, method, alias_) + + elsif !kwd[:type] + def_modern_delegator( + accessor, method, alias_, **kwd + ) + + else + raise ArgumentError, "Alias not supported." if alias_ != method + send("def_#{kwd[:type]}_delegator", accessor, method, **kwd.tap do |obj| + obj.delete(:type) + end) + end + end + + # ------------------------------------------------------------------------ + # Create multiple delegates at once. + # ------------------------------------------------------------------------ + + def def_delegators(accessor, *methods) + kwd = methods.shift if methods.first.is_a?(Hash) + kwd = methods.pop if methods. last.is_a?(Hash) + kwd = {} unless kwd + + methods.each do |method| + def_delegator accessor, method, **kwd + end + end + + # ------------------------------------------------------------------------ + # Prepares a delegate and it's few arguments. + # ------------------------------------------------------------------------ + + private + def prepare_delegate(wrap: nil, bool: false) + prefix = (bool == :reverse ? "!!!" : "!!") if bool + wrap = "self.class.new" if wrap.is_a?(TrueClass) + suffix = "?" if bool + + return [ + prefix, suffix, wrap + ] + end + + # ------------------------------------------------------------------------ + + private + def delegate_debug(str) + if Forwardable.debug && !Forwardable.debug.is_a?(TrueClass) + then Forwardable.debug.debug( + str + ) + + elsif Forwardable.debug + $stdout.puts( + "\n# ------\n\n", str + ) + end + + str + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended/version.rb b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended/version.rb new file mode 100644 index 0000000000..0639375693 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/forwardable-extended-2.6.0/lib/forwardable/extended/version.rb @@ -0,0 +1,9 @@ +# Frozen-string-literal: true +# Copyright: 2015-2016 Jordon Bedwell - MIT License +# Encoding: utf-8 + +module Forwardable + module Extended + VERSION = "2.6.0" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitignore new file mode 100644 index 0000000000..d20f94b114 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitignore @@ -0,0 +1,11 @@ +tmp +*.bundle +*.gem +*.o +*.so +*.bundle +*.jar +*.swp +Makefile +tags +*.rbc diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitmodules b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitmodules new file mode 100644 index 0000000000..6c289a3e86 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.gitmodules @@ -0,0 +1,6 @@ +[submodule "http-parser"] + path = ext/ruby_http_parser/vendor/http-parser + url = git://github.com/joyent/http-parser.git +[submodule "http-parser-java"] + path = ext/ruby_http_parser/vendor/http-parser-java + url = git://github.com/tmm1/http-parser.java diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile new file mode 100644 index 0000000000..851fabc21d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gemspec diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock new file mode 100644 index 0000000000..c880187f9b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock @@ -0,0 +1,39 @@ +PATH + remote: . + specs: + http_parser.rb (0.6.0.beta.2) + +GEM + remote: https://rubygems.org/ + specs: + benchmark_suite (0.8.0) + diff-lcs (1.1.2) + ffi (1.0.11) + ffi (1.0.11-java) + json (1.8.0) + json (1.8.0-java) + rake (0.9.2) + rake-compiler (0.7.9) + rake + rspec (2.4.0) + rspec-core (~> 2.4.0) + rspec-expectations (~> 2.4.0) + rspec-mocks (~> 2.4.0) + rspec-core (2.4.0) + rspec-expectations (2.4.0) + diff-lcs (~> 1.1.2) + rspec-mocks (2.4.0) + yajl-ruby (1.1.0) + +PLATFORMS + java + ruby + +DEPENDENCIES + benchmark_suite + ffi + http_parser.rb! + json (>= 1.4.6) + rake-compiler (>= 0.7.9) + rspec (>= 2.0.1) + yajl-ruby (>= 0.8.1) diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/LICENSE-MIT b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/LICENSE-MIT new file mode 100644 index 0000000000..35f0bf0de3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/LICENSE-MIT @@ -0,0 +1,20 @@ +Copyright 2009,2010 Marc-André Cournoyer +Copyright 2010,2011 Aman Gupta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/README.md b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/README.md new file mode 100644 index 0000000000..35dad451b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/README.md @@ -0,0 +1,90 @@ +# http_parser.rb + +A simple callback-based HTTP request/response parser for writing http +servers, clients and proxies. + +This gem is built on top of [joyent/http-parser](http://github.com/joyent/http-parser) and its java port [http-parser/http-parser.java](http://github.com/http-parser/http-parser.java). + +## Supported Platforms + +This gem aims to work on all major Ruby platforms, including: + +- MRI 1.8 and 1.9 +- Rubinius +- JRuby +- win32 + +## Usage + +```ruby +require "http/parser" + +parser = Http::Parser.new + +parser.on_headers_complete = proc do + p parser.http_version + + p parser.http_method # for requests + p parser.request_url + + p parser.status_code # for responses + + p parser.headers +end + +parser.on_body = proc do |chunk| + # One chunk of the body + p chunk +end + +parser.on_message_complete = proc do |env| + # Headers and body is all parsed + puts "Done!" +end +``` + +# Feed raw data from the socket to the parser +`parser << raw_data` + +## Advanced Usage + +### Accept callbacks on an object + +```ruby +module MyHttpConnection + def connection_completed + @parser = Http::Parser.new(self) + end + + def receive_data(data) + @parser << data + end + + def on_message_begin + @headers = nil + @body = '' + end + + def on_headers_complete(headers) + @headers = headers + end + + def on_body(chunk) + @body << chunk + end + + def on_message_complete + p [@headers, @body] + end +end +``` + +### Stop parsing after headers + +```ruby +parser = Http::Parser.new +parser.on_headers_complete = proc{ :stop } + +offset = parser << request_data +body = request_data[offset..-1] +``` diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Rakefile b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Rakefile new file mode 100644 index 0000000000..150f652686 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/Rakefile @@ -0,0 +1,6 @@ +# load tasks +Dir['tasks/*.rake'].sort.each { |f| load f } + +# default task +task :compile => :submodules +task :default => [:compile, :spec] diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/standalone.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/standalone.rb new file mode 100755 index 0000000000..6b4dcb6f0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/standalone.rb @@ -0,0 +1,23 @@ +#!/usr/bin/env ruby +$:.unshift File.dirname(__FILE__) + "/../lib" +require "rubygems" +require "http/parser" +require "benchmark/ips" + +request = <<-REQUEST +GET / HTTP/1.1 +Host: www.example.com +Connection: keep-alive +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 S +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Encoding: gzip,deflate,sdch +Accept-Language: en-US,en;q=0.8 +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 + +REQUEST +request.gsub!(/\n/m, "\r\n") + +Benchmark.ips do |ips| + ips.report("instance") { Http::Parser.new } + ips.report("parsing") { Http::Parser.new << request } +end diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/thin.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/thin.rb new file mode 100644 index 0000000000..fe0dd6d6fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/bench/thin.rb @@ -0,0 +1,58 @@ +$:.unshift File.dirname(__FILE__) + "/../lib" +require "rubygems" +require "thin_parser" +require "http_parser" +require "benchmark" +require "stringio" + +data = "POST /postit HTTP/1.1\r\n" + + "Host: localhost:3000\r\n" + + "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\r\n" + + "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n" + + "Accept-Language: en-us,en;q=0.5\r\n" + + "Accept-Encoding: gzip,deflate\r\n" + + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" + + "Keep-Alive: 300\r\n" + + "Connection: keep-alive\r\n" + + "Content-Type: text/html\r\n" + + "Content-Length: 37\r\n" + + "\r\n" + + "name=marc&email=macournoyer@gmail.com" + +def thin(data) + env = {"rack.input" => StringIO.new} + Thin::HttpParser.new.execute(env, data, 0) + env +end + +def http_parser(data) + body = StringIO.new + env = nil + + parser = HTTP::RequestParser.new + parser.on_headers_complete = proc { |e| env = e } + parser.on_body = proc { |c| body << c } + parser << data + + env["rack-input"] = body + env +end + +# p thin(data) +# p http_parser(data) + +TESTS = 30_000 +Benchmark.bmbm do |results| + results.report("thin:") { TESTS.times { thin data } } + results.report("http-parser:") { TESTS.times { http_parser data } } +end + +# On my MBP core duo 2.2Ghz +# Rehearsal ------------------------------------------------ +# thin: 1.470000 0.000000 1.470000 ( 1.474737) +# http-parser: 1.270000 0.020000 1.290000 ( 1.292758) +# --------------------------------------- total: 2.760000sec +# +# user system total real +# thin: 1.150000 0.030000 1.180000 ( 1.173767) +# http-parser: 1.250000 0.010000 1.260000 ( 1.263796) diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.gitignore b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.gitignore new file mode 100644 index 0000000000..cb899d1276 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.gitignore @@ -0,0 +1 @@ +ryah_http_parser.* diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.sitearchdir.time b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/.sitearchdir.time new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/RubyHttpParserService.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/RubyHttpParserService.java new file mode 100644 index 0000000000..2ea3e8e0f4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/RubyHttpParserService.java @@ -0,0 +1,18 @@ +import java.io.IOException; + +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyModule; +import org.jruby.runtime.load.BasicLibraryService; + +import org.ruby_http_parser.*; + +public class RubyHttpParserService implements BasicLibraryService { + public boolean basicLoad(final Ruby runtime) throws IOException { + RubyModule mHTTP = runtime.defineModule("HTTP"); + RubyClass cParser = mHTTP.defineClassUnder("Parser", runtime.getObject(), RubyHttpParser.ALLOCATOR); + cParser.defineAnnotatedMethods(RubyHttpParser.class); + cParser.defineClassUnder("Error", runtime.getClass("IOError"),runtime.getClass("IOError").getAllocator()); + return true; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ext_help.h b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ext_help.h new file mode 100644 index 0000000000..a919dffe7c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ext_help.h @@ -0,0 +1,18 @@ +#ifndef ext_help_h +#define ext_help_h + +#define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, "NULL found for " # T " when shouldn't be."); +#define DATA_GET(from,type,name) Data_Get_Struct(from,type,name); RAISE_NOT_NULL(name); +#define REQUIRE_TYPE(V, T) if(TYPE(V) != T) rb_raise(rb_eTypeError, "Wrong argument type for " # V " required " # T); + +/* for compatibility with Ruby 1.8.5, which doesn't declare RSTRING_PTR */ +#ifndef RSTRING_PTR +#define RSTRING_PTR(s) (RSTRING(s)->ptr) +#endif + +/* for compatibility with Ruby 1.8.5, which doesn't declare RSTRING_LEN */ +#ifndef RSTRING_LEN +#define RSTRING_LEN(s) (RSTRING(s)->len) +#endif + +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/extconf.rb b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/extconf.rb new file mode 100644 index 0000000000..d2f6e519b5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/extconf.rb @@ -0,0 +1,24 @@ +require 'mkmf' + +# check out code if it hasn't been already +if Dir[File.expand_path('../vendor/http-parser/*', __FILE__)].empty? + Dir.chdir(File.expand_path('../../../', __FILE__)) do + xsystem 'git submodule init' + xsystem 'git submodule update' + end +end + +# mongrel and http-parser both define http_parser_(init|execute), so we +# rename functions in http-parser before using them. +vendor_dir = File.expand_path('../vendor/http-parser/', __FILE__) +src_dir = File.expand_path('../', __FILE__) +%w[ http_parser.c http_parser.h ].each do |file| + File.open(File.join(src_dir, "ryah_#{file}"), 'w'){ |f| + f.write File.read(File.join(vendor_dir, file)).gsub('http_parser', 'ryah_http_parser') + } +end + +$CFLAGS << " -I#{src_dir}" + +dir_config("ruby_http_parser") +create_makefile("ruby_http_parser") diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java new file mode 100644 index 0000000000..ac586a91ab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java @@ -0,0 +1,495 @@ +package org.ruby_http_parser; + +import http_parser.HTTPException; +import http_parser.HTTPMethod; +import http_parser.HTTPParser; +import http_parser.lolevel.HTTPCallback; +import http_parser.lolevel.HTTPDataCallback; +import http_parser.lolevel.ParserSettings; + +import java.nio.ByteBuffer; + +import org.jcodings.Encoding; +import org.jcodings.specific.UTF8Encoding; +import org.jruby.Ruby; +import org.jruby.RubyArray; +import org.jruby.RubyClass; +import org.jruby.RubyHash; +import org.jruby.RubyNumeric; +import org.jruby.RubyObject; +import org.jruby.RubyString; +import org.jruby.RubySymbol; +import org.jruby.anno.JRubyMethod; +import org.jruby.exceptions.RaiseException; +import org.jruby.runtime.ObjectAllocator; +import org.jruby.runtime.ThreadContext; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.util.ByteList; + +public class RubyHttpParser extends RubyObject { + + @JRubyMethod(name = "strict?", module = true) + public static IRubyObject strict(IRubyObject recv) { + return recv.getRuntime().newBoolean(true); + } + + public static ObjectAllocator ALLOCATOR = new ObjectAllocator() { + public IRubyObject allocate(Ruby runtime, RubyClass klass) { + return new RubyHttpParser(runtime, klass); + } + }; + + byte[] fetchBytes(ByteBuffer b, int pos, int len) { + byte[] by = new byte[len]; + int saved = b.position(); + b.position(pos); + b.get(by); + b.position(saved); + return by; + } + + public class StopException extends RuntimeException { + } + + private Ruby runtime; + private HTTPParser parser; + private ParserSettings settings; + + private RubyClass eParserError; + + private RubyHash headers; + + private IRubyObject on_message_begin; + private IRubyObject on_headers_complete; + private IRubyObject on_body; + private IRubyObject on_message_complete; + + private IRubyObject requestUrl; + private IRubyObject requestPath; + private IRubyObject queryString; + private IRubyObject fragment; + + private IRubyObject header_value_type; + private IRubyObject upgradeData; + + private IRubyObject callback_object; + + private boolean completed; + + private byte[] _current_header; + private byte[] _last_header; + + private static final Encoding UTF8 = UTF8Encoding.INSTANCE; + + public RubyHttpParser(final Ruby runtime, RubyClass clazz) { + super(runtime, clazz); + + this.runtime = runtime; + this.eParserError = (RubyClass) runtime.getModule("HTTP").getClass("Parser").getConstant("Error"); + + this.on_message_begin = null; + this.on_headers_complete = null; + this.on_body = null; + this.on_message_complete = null; + + this.callback_object = null; + + this.completed = false; + + this.header_value_type = runtime.getModule("HTTP").getClass("Parser") + .getInstanceVariable("@default_header_value_type"); + + initSettings(); + init(); + } + + private void initSettings() { + this.settings = new ParserSettings(); + + this.settings.on_url = new HTTPDataCallback() { + public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) { + byte[] data = fetchBytes(buf, pos, len); + if (runtime.is1_9() || runtime.is2_0()) { + ((RubyString) requestUrl).cat(data, 0, data.length, UTF8); + } else { + ((RubyString) requestUrl).cat(data); + } + return 0; + } + }; + + this.settings.on_header_field = new HTTPDataCallback() { + public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) { + byte[] data = fetchBytes(buf, pos, len); + + if (_current_header == null) + _current_header = data; + else { + byte[] tmp = new byte[_current_header.length + data.length]; + System.arraycopy(_current_header, 0, tmp, 0, _current_header.length); + System.arraycopy(data, 0, tmp, _current_header.length, data.length); + _current_header = tmp; + } + + return 0; + } + }; + final RubySymbol arraysSym = runtime.newSymbol("arrays"); + final RubySymbol mixedSym = runtime.newSymbol("mixed"); + final RubySymbol stopSym = runtime.newSymbol("stop"); + final RubySymbol resetSym = runtime.newSymbol("reset"); + this.settings.on_header_value = new HTTPDataCallback() { + public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) { + byte[] data = fetchBytes(buf, pos, len); + ThreadContext context = headers.getRuntime().getCurrentContext(); + IRubyObject key, val; + int new_field = 0; + + if (_current_header != null) { + new_field = 1; + _last_header = _current_header; + _current_header = null; + } + + key = RubyString.newString(runtime, new ByteList(_last_header, UTF8, false)); + val = headers.op_aref(context, key); + + if (new_field == 1) { + if (val.isNil()) { + if (header_value_type == arraysSym) { + headers.op_aset(context, key, + RubyArray.newArrayLight(runtime, RubyString.newStringLight(runtime, 10, UTF8))); + } else { + headers.op_aset(context, key, RubyString.newStringLight(runtime, 10, UTF8)); + } + } else { + if (header_value_type == mixedSym) { + if (val instanceof RubyString) { + headers.op_aset(context, key, + RubyArray.newArrayLight(runtime, val, RubyString.newStringLight(runtime, 10, UTF8))); + } else { + ((RubyArray) val).add(RubyString.newStringLight(runtime, 10, UTF8)); + } + } else if (header_value_type == arraysSym) { + ((RubyArray) val).add(RubyString.newStringLight(runtime, 10, UTF8)); + } else { + if (runtime.is1_9() || runtime.is2_0()) { + ((RubyString) val).cat(',', UTF8).cat(' ', UTF8); + } else { + ((RubyString) val).cat(',').cat(' '); + } + } + } + val = headers.op_aref(context, key); + } + + if (val instanceof RubyArray) { + val = ((RubyArray) val).entry(-1); + } + + if (runtime.is1_9() || runtime.is2_0()) { + ((RubyString) val).cat(data, 0, data.length, UTF8); + } else { + ((RubyString) val).cat(data); + } + + return 0; + } + }; + + this.settings.on_message_begin = new HTTPCallback() { + public int cb(http_parser.lolevel.HTTPParser p) { + headers = new RubyHash(runtime); + + if (runtime.is1_9() || runtime.is2_0()) { + requestUrl = RubyString.newEmptyString(runtime, UTF8); + requestPath = RubyString.newEmptyString(runtime, UTF8); + queryString = RubyString.newEmptyString(runtime, UTF8); + fragment = RubyString.newEmptyString(runtime, UTF8); + upgradeData = RubyString.newEmptyString(runtime, UTF8); + } else { + requestUrl = RubyString.newEmptyString(runtime); + requestPath = RubyString.newEmptyString(runtime); + queryString = RubyString.newEmptyString(runtime); + fragment = RubyString.newEmptyString(runtime); + upgradeData = RubyString.newEmptyString(runtime); + } + + IRubyObject ret = runtime.getNil(); + + if (callback_object != null) { + if (((RubyObject) callback_object).respondsTo("on_message_begin")) { + ThreadContext context = callback_object.getRuntime().getCurrentContext(); + ret = callback_object.callMethod(context, "on_message_begin"); + } + } else if (on_message_begin != null) { + ThreadContext context = on_message_begin.getRuntime().getCurrentContext(); + ret = on_message_begin.callMethod(context, "call"); + } + + if (ret == stopSym) { + throw new StopException(); + } else { + return 0; + } + } + }; + this.settings.on_message_complete = new HTTPCallback() { + public int cb(http_parser.lolevel.HTTPParser p) { + IRubyObject ret = runtime.getNil(); + + completed = true; + + if (callback_object != null) { + if (((RubyObject) callback_object).respondsTo("on_message_complete")) { + ThreadContext context = callback_object.getRuntime().getCurrentContext(); + ret = callback_object.callMethod(context, "on_message_complete"); + } + } else if (on_message_complete != null) { + ThreadContext context = on_message_complete.getRuntime().getCurrentContext(); + ret = on_message_complete.callMethod(context, "call"); + } + + if (ret == stopSym) { + throw new StopException(); + } else { + return 0; + } + } + }; + this.settings.on_headers_complete = new HTTPCallback() { + public int cb(http_parser.lolevel.HTTPParser p) { + IRubyObject ret = runtime.getNil(); + + if (callback_object != null) { + if (((RubyObject) callback_object).respondsTo("on_headers_complete")) { + ThreadContext context = callback_object.getRuntime().getCurrentContext(); + ret = callback_object.callMethod(context, "on_headers_complete", headers); + } + } else if (on_headers_complete != null) { + ThreadContext context = on_headers_complete.getRuntime().getCurrentContext(); + ret = on_headers_complete.callMethod(context, "call", headers); + } + + if (ret == stopSym) { + throw new StopException(); + } else if (ret == resetSym) { + return 1; + } else { + return 0; + } + } + }; + this.settings.on_body = new HTTPDataCallback() { + public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) { + IRubyObject ret = runtime.getNil(); + byte[] data = fetchBytes(buf, pos, len); + + if (callback_object != null) { + if (((RubyObject) callback_object).respondsTo("on_body")) { + ThreadContext context = callback_object.getRuntime().getCurrentContext(); + ret = callback_object.callMethod(context, "on_body", + RubyString.newString(runtime, new ByteList(data, UTF8, false))); + } + } else if (on_body != null) { + ThreadContext context = on_body.getRuntime().getCurrentContext(); + ret = on_body.callMethod(context, "call", RubyString.newString(runtime, new ByteList(data, UTF8, false))); + } + + if (ret == stopSym) { + throw new StopException(); + } else { + return 0; + } + } + }; + } + + private void init() { + this.parser = new HTTPParser(); + this.parser.HTTP_PARSER_STRICT = true; + this.headers = null; + + this.requestUrl = runtime.getNil(); + this.requestPath = runtime.getNil(); + this.queryString = runtime.getNil(); + this.fragment = runtime.getNil(); + + this.upgradeData = runtime.getNil(); + } + + @JRubyMethod(name = "initialize") + public IRubyObject initialize() { + return this; + } + + @JRubyMethod(name = "initialize") + public IRubyObject initialize(IRubyObject arg) { + callback_object = arg; + return initialize(); + } + + @JRubyMethod(name = "initialize") + public IRubyObject initialize(IRubyObject arg, IRubyObject arg2) { + header_value_type = arg2; + return initialize(arg); + } + + @JRubyMethod(name = "on_message_begin=") + public IRubyObject set_on_message_begin(IRubyObject cb) { + on_message_begin = cb; + return cb; + } + + @JRubyMethod(name = "on_headers_complete=") + public IRubyObject set_on_headers_complete(IRubyObject cb) { + on_headers_complete = cb; + return cb; + } + + @JRubyMethod(name = "on_body=") + public IRubyObject set_on_body(IRubyObject cb) { + on_body = cb; + return cb; + } + + @JRubyMethod(name = "on_message_complete=") + public IRubyObject set_on_message_complete(IRubyObject cb) { + on_message_complete = cb; + return cb; + } + + @JRubyMethod(name = "<<") + public IRubyObject execute(IRubyObject data) { + RubyString str = (RubyString) data; + ByteList byteList = str.getByteList(); + ByteBuffer buf = ByteBuffer.wrap(byteList.getUnsafeBytes(), byteList.getBegin(), byteList.getRealSize()); + boolean stopped = false; + + try { + this.parser.execute(this.settings, buf); + } catch (HTTPException e) { + throw new RaiseException(runtime, eParserError, e.getMessage(), true); + } catch (StopException e) { + stopped = true; + } + + if (parser.getUpgrade()) { + byte[] upData = fetchBytes(buf, buf.position(), buf.limit() - buf.position()); + if (runtime.is1_9() || runtime.is2_0()) { + ((RubyString) upgradeData).cat(upData, 0, upData.length, UTF8); + } else { + ((RubyString) upgradeData).cat(upData); + } + } else if (buf.hasRemaining() && !completed) { + if (!stopped) + throw new RaiseException(runtime, eParserError, "Could not parse data entirely", true); + } + + return RubyNumeric.int2fix(runtime, buf.position()); + } + + @JRubyMethod(name = "keep_alive?") + public IRubyObject shouldKeepAlive() { + return runtime.newBoolean(parser.shouldKeepAlive()); + } + + @JRubyMethod(name = "upgrade?") + public IRubyObject shouldUpgrade() { + return runtime.newBoolean(parser.getUpgrade()); + } + + @JRubyMethod(name = "http_major") + public IRubyObject httpMajor() { + if (parser.getMajor() == 0 && parser.getMinor() == 0) + return runtime.getNil(); + else + return RubyNumeric.int2fix(runtime, parser.getMajor()); + } + + @JRubyMethod(name = "http_minor") + public IRubyObject httpMinor() { + if (parser.getMajor() == 0 && parser.getMinor() == 0) + return runtime.getNil(); + else + return RubyNumeric.int2fix(runtime, parser.getMinor()); + } + + @JRubyMethod(name = "http_version") + public IRubyObject httpVersion() { + if (parser.getMajor() == 0 && parser.getMinor() == 0) + return runtime.getNil(); + else + return runtime.newArray(httpMajor(), httpMinor()); + } + + @JRubyMethod(name = "http_method") + public IRubyObject httpMethod() { + HTTPMethod method = parser.getHTTPMethod(); + if (method != null) + return runtime.newString(new String(method.bytes)); + else + return runtime.getNil(); + } + + @JRubyMethod(name = "status_code") + public IRubyObject statusCode() { + int code = parser.getStatusCode(); + if (code != 0) + return RubyNumeric.int2fix(runtime, code); + else + return runtime.getNil(); + } + + @JRubyMethod(name = "headers") + public IRubyObject getHeaders() { + return headers == null ? runtime.getNil() : headers; + } + + @JRubyMethod(name = "request_url") + public IRubyObject getRequestUrl() { + return requestUrl == null ? runtime.getNil() : requestUrl; + } + + @JRubyMethod(name = "request_path") + public IRubyObject getRequestPath() { + return requestPath == null ? runtime.getNil() : requestPath; + } + + @JRubyMethod(name = "query_string") + public IRubyObject getQueryString() { + return queryString == null ? runtime.getNil() : queryString; + } + + @JRubyMethod(name = "fragment") + public IRubyObject getFragment() { + return fragment == null ? runtime.getNil() : fragment; + } + + @JRubyMethod(name = "header_value_type") + public IRubyObject getHeaderValueType() { + return header_value_type == null ? runtime.getNil() : header_value_type; + } + + @JRubyMethod(name = "header_value_type=") + public IRubyObject set_header_value_type(IRubyObject val) { + String valString = val.toString(); + if (valString != "mixed" && valString != "arrays" && valString != "strings") { + throw runtime.newArgumentError("Invalid header value type"); + } + header_value_type = val; + return val; + } + + @JRubyMethod(name = "upgrade_data") + public IRubyObject upgradeData() { + return upgradeData == null ? runtime.getNil() : upgradeData; + } + + @JRubyMethod(name = "reset!") + public IRubyObject reset() { + init(); + return runtime.getTrue(); + } + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ruby_http_parser.c b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ruby_http_parser.c new file mode 100644 index 0000000000..56506527df --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/ruby_http_parser.c @@ -0,0 +1,515 @@ +#include "ruby.h" +#include "ext_help.h" +#include "ryah_http_parser.h" + +#define GET_WRAPPER(N, from) ParserWrapper *N = (ParserWrapper *)(from)->data; +#define HASH_CAT(h, k, ptr, len) \ + do { \ + VALUE __v = rb_hash_aref(h, k); \ + if (__v != Qnil) { \ + rb_str_cat(__v, ptr, len); \ + } else { \ + rb_hash_aset(h, k, rb_str_new(ptr, len)); \ + } \ + } while(0) + +typedef struct ParserWrapper { + ryah_http_parser parser; + + VALUE request_url; + + VALUE headers; + + VALUE upgrade_data; + + VALUE on_message_begin; + VALUE on_headers_complete; + VALUE on_body; + VALUE on_message_complete; + + VALUE callback_object; + VALUE stopped; + VALUE completed; + + VALUE header_value_type; + + VALUE last_field_name; + VALUE curr_field_name; + + enum ryah_http_parser_type type; +} ParserWrapper; + +void ParserWrapper_init(ParserWrapper *wrapper) { + ryah_http_parser_init(&wrapper->parser, wrapper->type); + wrapper->parser.status_code = 0; + wrapper->parser.http_major = 0; + wrapper->parser.http_minor = 0; + + wrapper->request_url = Qnil; + + wrapper->upgrade_data = Qnil; + + wrapper->headers = Qnil; + wrapper->completed = Qfalse; + + wrapper->last_field_name = Qnil; + wrapper->curr_field_name = Qnil; +} + +void ParserWrapper_mark(void *data) { + if(data) { + ParserWrapper *wrapper = (ParserWrapper *) data; + rb_gc_mark_maybe(wrapper->request_url); + rb_gc_mark_maybe(wrapper->upgrade_data); + rb_gc_mark_maybe(wrapper->headers); + rb_gc_mark_maybe(wrapper->on_message_begin); + rb_gc_mark_maybe(wrapper->on_headers_complete); + rb_gc_mark_maybe(wrapper->on_body); + rb_gc_mark_maybe(wrapper->on_message_complete); + rb_gc_mark_maybe(wrapper->callback_object); + rb_gc_mark_maybe(wrapper->last_field_name); + rb_gc_mark_maybe(wrapper->curr_field_name); + } +} + +void ParserWrapper_free(void *data) { + if(data) { + free(data); + } +} + +static VALUE cParser; +static VALUE cRequestParser; +static VALUE cResponseParser; + +static VALUE eParserError; + +static ID Icall; +static ID Ion_message_begin; +static ID Ion_headers_complete; +static ID Ion_body; +static ID Ion_message_complete; + +static VALUE Sstop; +static VALUE Sreset; +static VALUE Sarrays; +static VALUE Sstrings; +static VALUE Smixed; + +/** Callbacks **/ + +int on_message_begin(ryah_http_parser *parser) { + GET_WRAPPER(wrapper, parser); + + wrapper->request_url = rb_str_new2(""); + wrapper->headers = rb_hash_new(); + wrapper->upgrade_data = rb_str_new2(""); + + VALUE ret = Qnil; + + if (wrapper->callback_object != Qnil && rb_respond_to(wrapper->callback_object, Ion_message_begin)) { + ret = rb_funcall(wrapper->callback_object, Ion_message_begin, 0); + } else if (wrapper->on_message_begin != Qnil) { + ret = rb_funcall(wrapper->on_message_begin, Icall, 0); + } + + if (ret == Sstop) { + wrapper->stopped = Qtrue; + return -1; + } else { + return 0; + } +} + +int on_url(ryah_http_parser *parser, const char *at, size_t length) { + GET_WRAPPER(wrapper, parser); + rb_str_cat(wrapper->request_url, at, length); + return 0; +} + +int on_header_field(ryah_http_parser *parser, const char *at, size_t length) { + GET_WRAPPER(wrapper, parser); + + if (wrapper->curr_field_name == Qnil) { + wrapper->last_field_name = Qnil; + wrapper->curr_field_name = rb_str_new(at, length); + } else { + rb_str_cat(wrapper->curr_field_name, at, length); + } + + return 0; +} + +int on_header_value(ryah_http_parser *parser, const char *at, size_t length) { + GET_WRAPPER(wrapper, parser); + + int new_field = 0; + VALUE current_value; + + if (wrapper->last_field_name == Qnil) { + new_field = 1; + wrapper->last_field_name = wrapper->curr_field_name; + wrapper->curr_field_name = Qnil; + } + + current_value = rb_hash_aref(wrapper->headers, wrapper->last_field_name); + + if (new_field == 1) { + if (current_value == Qnil) { + if (wrapper->header_value_type == Sarrays) { + rb_hash_aset(wrapper->headers, wrapper->last_field_name, rb_ary_new3(1, rb_str_new2(""))); + } else { + rb_hash_aset(wrapper->headers, wrapper->last_field_name, rb_str_new2("")); + } + } else { + if (wrapper->header_value_type == Smixed) { + if (TYPE(current_value) == T_STRING) { + rb_hash_aset(wrapper->headers, wrapper->last_field_name, rb_ary_new3(2, current_value, rb_str_new2(""))); + } else { + rb_ary_push(current_value, rb_str_new2("")); + } + } else if (wrapper->header_value_type == Sarrays) { + rb_ary_push(current_value, rb_str_new2("")); + } else { + rb_str_cat(current_value, ", ", 2); + } + } + current_value = rb_hash_aref(wrapper->headers, wrapper->last_field_name); + } + + if (TYPE(current_value) == T_ARRAY) { + current_value = rb_ary_entry(current_value, -1); + } + + rb_str_cat(current_value, at, length); + + return 0; +} + +int on_headers_complete(ryah_http_parser *parser) { + GET_WRAPPER(wrapper, parser); + + VALUE ret = Qnil; + + if (wrapper->callback_object != Qnil && rb_respond_to(wrapper->callback_object, Ion_headers_complete)) { + ret = rb_funcall(wrapper->callback_object, Ion_headers_complete, 1, wrapper->headers); + } else if (wrapper->on_headers_complete != Qnil) { + ret = rb_funcall(wrapper->on_headers_complete, Icall, 1, wrapper->headers); + } + + if (ret == Sstop) { + wrapper->stopped = Qtrue; + return -1; + } else if (ret == Sreset){ + return 1; + } else { + return 0; + } +} + +int on_body(ryah_http_parser *parser, const char *at, size_t length) { + GET_WRAPPER(wrapper, parser); + + VALUE ret = Qnil; + + if (wrapper->callback_object != Qnil && rb_respond_to(wrapper->callback_object, Ion_body)) { + ret = rb_funcall(wrapper->callback_object, Ion_body, 1, rb_str_new(at, length)); + } else if (wrapper->on_body != Qnil) { + ret = rb_funcall(wrapper->on_body, Icall, 1, rb_str_new(at, length)); + } + + if (ret == Sstop) { + wrapper->stopped = Qtrue; + return -1; + } else { + return 0; + } +} + +int on_message_complete(ryah_http_parser *parser) { + GET_WRAPPER(wrapper, parser); + + VALUE ret = Qnil; + wrapper->completed = Qtrue; + + if (wrapper->callback_object != Qnil && rb_respond_to(wrapper->callback_object, Ion_message_complete)) { + ret = rb_funcall(wrapper->callback_object, Ion_message_complete, 0); + } else if (wrapper->on_message_complete != Qnil) { + ret = rb_funcall(wrapper->on_message_complete, Icall, 0); + } + + if (ret == Sstop) { + wrapper->stopped = Qtrue; + return -1; + } else { + return 0; + } +} + +static ryah_http_parser_settings settings = { + .on_message_begin = on_message_begin, + .on_url = on_url, + .on_header_field = on_header_field, + .on_header_value = on_header_value, + .on_headers_complete = on_headers_complete, + .on_body = on_body, + .on_message_complete = on_message_complete +}; + +VALUE Parser_alloc_by_type(VALUE klass, enum ryah_http_parser_type type) { + ParserWrapper *wrapper = ALLOC_N(ParserWrapper, 1); + wrapper->type = type; + wrapper->parser.data = wrapper; + + wrapper->on_message_begin = Qnil; + wrapper->on_headers_complete = Qnil; + wrapper->on_body = Qnil; + wrapper->on_message_complete = Qnil; + + wrapper->callback_object = Qnil; + + ParserWrapper_init(wrapper); + + return Data_Wrap_Struct(klass, ParserWrapper_mark, ParserWrapper_free, wrapper); +} + +VALUE Parser_alloc(VALUE klass) { + return Parser_alloc_by_type(klass, HTTP_BOTH); +} + +VALUE RequestParser_alloc(VALUE klass) { + return Parser_alloc_by_type(klass, HTTP_REQUEST); +} + +VALUE ResponseParser_alloc(VALUE klass) { + return Parser_alloc_by_type(klass, HTTP_RESPONSE); +} + +VALUE Parser_strict_p(VALUE klass) { + return HTTP_PARSER_STRICT == 1 ? Qtrue : Qfalse; +} + +VALUE Parser_initialize(int argc, VALUE *argv, VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->header_value_type = rb_iv_get(CLASS_OF(self), "@default_header_value_type"); + + if (argc == 1) { + wrapper->callback_object = argv[0]; + } + + if (argc == 2) { + wrapper->callback_object = argv[0]; + wrapper->header_value_type = argv[1]; + } + + return self; +} + +VALUE Parser_execute(VALUE self, VALUE data) { + ParserWrapper *wrapper = NULL; + + Check_Type(data, T_STRING); + char *ptr = RSTRING_PTR(data); + long len = RSTRING_LEN(data); + + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->stopped = Qfalse; + size_t nparsed = ryah_http_parser_execute(&wrapper->parser, &settings, ptr, len); + + if (wrapper->parser.upgrade) { + if (RTEST(wrapper->stopped)) + nparsed += 1; + + rb_str_cat(wrapper->upgrade_data, ptr + nparsed, len - nparsed); + + } else if (nparsed != (size_t)len) { + if (!RTEST(wrapper->stopped) && !RTEST(wrapper->completed)) + rb_raise(eParserError, "Could not parse data entirely (%zu != %zu)", nparsed, len); + else + nparsed += 1; // error states fail on the current character + } + + return INT2FIX(nparsed); +} + +VALUE Parser_set_on_message_begin(VALUE self, VALUE callback) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->on_message_begin = callback; + return callback; +} + +VALUE Parser_set_on_headers_complete(VALUE self, VALUE callback) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->on_headers_complete = callback; + return callback; +} + +VALUE Parser_set_on_body(VALUE self, VALUE callback) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->on_body = callback; + return callback; +} + +VALUE Parser_set_on_message_complete(VALUE self, VALUE callback) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + wrapper->on_message_complete = callback; + return callback; +} + +VALUE Parser_keep_alive_p(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + return http_should_keep_alive(&wrapper->parser) == 1 ? Qtrue : Qfalse; +} + +VALUE Parser_upgrade_p(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + return wrapper->parser.upgrade ? Qtrue : Qfalse; +} + +VALUE Parser_http_version(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + if (wrapper->parser.http_major == 0 && wrapper->parser.http_minor == 0) + return Qnil; + else + return rb_ary_new3(2, INT2FIX(wrapper->parser.http_major), INT2FIX(wrapper->parser.http_minor)); +} + +VALUE Parser_http_major(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + if (wrapper->parser.http_major == 0 && wrapper->parser.http_minor == 0) + return Qnil; + else + return INT2FIX(wrapper->parser.http_major); +} + +VALUE Parser_http_minor(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + if (wrapper->parser.http_major == 0 && wrapper->parser.http_minor == 0) + return Qnil; + else + return INT2FIX(wrapper->parser.http_minor); +} + +VALUE Parser_http_method(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + if (wrapper->parser.type == HTTP_REQUEST) + return rb_str_new2(http_method_str(wrapper->parser.method)); + else + return Qnil; +} + +VALUE Parser_status_code(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + if (wrapper->parser.status_code) + return INT2FIX(wrapper->parser.status_code); + else + return Qnil; +} + +#define DEFINE_GETTER(name) \ + VALUE Parser_##name(VALUE self) { \ + ParserWrapper *wrapper = NULL; \ + DATA_GET(self, ParserWrapper, wrapper); \ + return wrapper->name; \ + } + +DEFINE_GETTER(request_url); +DEFINE_GETTER(headers); +DEFINE_GETTER(upgrade_data); +DEFINE_GETTER(header_value_type); + +VALUE Parser_set_header_value_type(VALUE self, VALUE val) { + if (val != Sarrays && val != Sstrings && val != Smixed) { + rb_raise(rb_eArgError, "Invalid header value type"); + } + + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + wrapper->header_value_type = val; + return wrapper->header_value_type; +} + +VALUE Parser_reset(VALUE self) { + ParserWrapper *wrapper = NULL; + DATA_GET(self, ParserWrapper, wrapper); + + ParserWrapper_init(wrapper); + + return Qtrue; +} + +void Init_ruby_http_parser() { + VALUE mHTTP = rb_define_module("HTTP"); + cParser = rb_define_class_under(mHTTP, "Parser", rb_cObject); + cRequestParser = rb_define_class_under(mHTTP, "RequestParser", cParser); + cResponseParser = rb_define_class_under(mHTTP, "ResponseParser", cParser); + + eParserError = rb_define_class_under(cParser, "Error", rb_eIOError); + Icall = rb_intern("call"); + Ion_message_begin = rb_intern("on_message_begin"); + Ion_headers_complete = rb_intern("on_headers_complete"); + Ion_body = rb_intern("on_body"); + Ion_message_complete = rb_intern("on_message_complete"); + Sstop = ID2SYM(rb_intern("stop")); + Sreset = ID2SYM(rb_intern("reset")); + + Sarrays = ID2SYM(rb_intern("arrays")); + Sstrings = ID2SYM(rb_intern("strings")); + Smixed = ID2SYM(rb_intern("mixed")); + + rb_define_alloc_func(cParser, Parser_alloc); + rb_define_alloc_func(cRequestParser, RequestParser_alloc); + rb_define_alloc_func(cResponseParser, ResponseParser_alloc); + + rb_define_singleton_method(cParser, "strict?", Parser_strict_p, 0); + rb_define_method(cParser, "initialize", Parser_initialize, -1); + + rb_define_method(cParser, "on_message_begin=", Parser_set_on_message_begin, 1); + rb_define_method(cParser, "on_headers_complete=", Parser_set_on_headers_complete, 1); + rb_define_method(cParser, "on_body=", Parser_set_on_body, 1); + rb_define_method(cParser, "on_message_complete=", Parser_set_on_message_complete, 1); + rb_define_method(cParser, "<<", Parser_execute, 1); + + rb_define_method(cParser, "keep_alive?", Parser_keep_alive_p, 0); + rb_define_method(cParser, "upgrade?", Parser_upgrade_p, 0); + + rb_define_method(cParser, "http_version", Parser_http_version, 0); + rb_define_method(cParser, "http_major", Parser_http_major, 0); + rb_define_method(cParser, "http_minor", Parser_http_minor, 0); + + rb_define_method(cParser, "http_method", Parser_http_method, 0); + rb_define_method(cParser, "status_code", Parser_status_code, 0); + + rb_define_method(cParser, "request_url", Parser_request_url, 0); + rb_define_method(cParser, "headers", Parser_headers, 0); + rb_define_method(cParser, "upgrade_data", Parser_upgrade_data, 0); + rb_define_method(cParser, "header_value_type", Parser_header_value_type, 0); + rb_define_method(cParser, "header_value_type=", Parser_set_header_value_type, 1); + + rb_define_method(cParser, "reset!", Parser_reset, 0); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/.gitkeep b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS new file mode 100644 index 0000000000..abe99dee44 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS @@ -0,0 +1,32 @@ +# Authors ordered by first contribution. +Ryan Dahl +Jeremy Hinegardner +Sergey Shepelev +Joe Damato +tomika +Phoenix Sol +Cliff Frey +Ewen Cheslack-Postava +Santiago Gala +Tim Becker +Jeff Terrace +Ben Noordhuis +Nathan Rajlich +Mark Nottingham +Aman Gupta +Tim Becker +Sean Cunningham +Peter Griess +Salman Haq +Cliff Frey +Jon Kolb +Fouad Mardini +Paul Querna +Felix Geisendörfer +koichik +Andre Caron +Ivo Raisr +James McLaughlin +David Gwynne +LE ROUX Thomas +Randy Rizun diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT new file mode 100644 index 0000000000..a0ae8dc9a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT @@ -0,0 +1,48 @@ +Copyright 2010 Tim Becker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +--- END OF LICENSE + +This code mainly based on code with the following license: + + +http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright +Igor Sysoev. + +Additional changes are licensed under the same terms as NGINX and +copyright Joyent, Inc. and other Node contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/README.md b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/README.md new file mode 100644 index 0000000000..0a6a432393 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/README.md @@ -0,0 +1,183 @@ +HTTP Parser +=========== + +This is a parser for HTTP written in Java, based quite heavily on +the Ryan Dahl's C Version: `http-parser` available here: + + http://github.com/ry/http-parser + +It parses both requests and responses. The parser is designed to be used +in performance HTTP applications. + +Features: + + * No dependencies (probably won't be able to keep it up) + * Handles persistent streams (keep-alive). + * Decodes chunked encoding. + * Upgrade support + +The parser extracts the following information from HTTP messages: + + * Header fields and values + * Content-Length + * Request method + * Response status code + * Transfer-Encoding + * HTTP version + * Request URL + * Message body + +Building +-------- + +use `ant compile|test|jar` + +Usage +----- + + TODO: in the present form, usage of the Java version of the parser + shouldn't be too difficult to figure out for someone familiar with the + C version. + + More documentation will follow shortly, in case you're looking for an + easy to use http library, this lib is probably not what you are + looking for anyway ... + + All text after this paragraph (and most of the text above it) are from + the original C version of the README and are currently only here for + reference. In case you encounter any difficulties, find bugs, need + help or have suggestions, feel free to contact me at + (tim.becker@kuriositaet.de). + + +One `http_parser` object is used per TCP connection. Initialize the struct +using `http_parser_init()` and set the callbacks. That might look something +like this for a request parser: + + http_parser_settings settings; + settings.on_path = my_path_callback; + settings.on_header_field = my_header_field_callback; + /* ... */ + + http_parser *parser = malloc(sizeof(http_parser)); + http_parser_init(parser, HTTP_REQUEST); + parser->data = my_socket; + +When data is received on the socket execute the parser and check for errors. + + size_t len = 80*1024, nparsed; + char buf[len]; + ssize_t recved; + + recved = recv(fd, buf, len, 0); + + if (recved < 0) { + /* Handle error. */ + } + + /* Start up / continue the parser. + * Note we pass recved==0 to signal that EOF has been recieved. + */ + nparsed = http_parser_execute(parser, &settings, buf, recved); + + if (parser->upgrade) { + /* handle new protocol */ + } else if (nparsed != recved) { + /* Handle error. Usually just close the connection. */ + } + +HTTP needs to know where the end of the stream is. For example, sometimes +servers send responses without Content-Length and expect the client to +consume input (for the body) until EOF. To tell http_parser about EOF, give +`0` as the forth parameter to `http_parser_execute()`. Callbacks and errors +can still be encountered during an EOF, so one must still be prepared +to receive them. + +Scalar valued message information such as `status_code`, `method`, and the +HTTP version are stored in the parser structure. This data is only +temporally stored in `http_parser` and gets reset on each new message. If +this information is needed later, copy it out of the structure during the +`headers_complete` callback. + +The parser decodes the transfer-encoding for both requests and responses +transparently. That is, a chunked encoding is decoded before being sent to +the on_body callback. + + +The Special Problem of Upgrade +------------------------------ + +HTTP supports upgrading the connection to a different protocol. An +increasingly common example of this is the Web Socket protocol which sends +a request like + + GET /demo HTTP/1.1 + Upgrade: WebSocket + Connection: Upgrade + Host: example.com + Origin: http://example.com + WebSocket-Protocol: sample + +followed by non-HTTP data. + +(See http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75 for more +information the Web Socket protocol.) + +To support this, the parser will treat this as a normal HTTP message without a +body. Issuing both on_headers_complete and on_message_complete callbacks. However +http_parser_execute() will stop parsing at the end of the headers and return. + +The user is expected to check if `parser->upgrade` has been set to 1 after +`http_parser_execute()` returns. Non-HTTP data begins at the buffer supplied +offset by the return value of `http_parser_execute()`. + + +Callbacks +--------- + +During the `http_parser_execute()` call, the callbacks set in +`http_parser_settings` will be executed. The parser maintains state and +never looks behind, so buffering the data is not necessary. If you need to +save certain data for later usage, you can do that from the callbacks. + +There are two types of callbacks: + +* notification `typedef int (*http_cb) (http_parser*);` + Callbacks: on_message_begin, on_headers_complete, on_message_complete. +* data `typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);` + Callbacks: (requests only) on_uri, + (common) on_header_field, on_header_value, on_body; + +Callbacks must return 0 on success. Returning a non-zero value indicates +error to the parser, making it exit immediately. + +In case you parse HTTP message in chunks (i.e. `read()` request line +from socket, parse, read half headers, parse, etc) your data callbacks +may be called more than once. Http-parser guarantees that data pointer is only +valid for the lifetime of callback. You can also `read()` into a heap allocated +buffer to avoid copying memory around if this fits your application. + +Reading headers may be a tricky task if you read/parse headers partially. +Basically, you need to remember whether last header callback was field or value +and apply following logic: + + (on_header_field and on_header_value shortened to on_h_*) + ------------------------ ------------ -------------------------------------------- + | State (prev. callback) | Callback | Description/action | + ------------------------ ------------ -------------------------------------------- + | nothing (first call) | on_h_field | Allocate new buffer and copy callback data | + | | | into it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_field | New header started. | + | | | Copy current name,value buffers to headers | + | | | list and allocate new buffer for new name | + ------------------------ ------------ -------------------------------------------- + | field | on_h_field | Previous name continues. Reallocate name | + | | | buffer and append callback data to it | + ------------------------ ------------ -------------------------------------------- + | field | on_h_value | Value for current header started. Allocate | + | | | new buffer and copy callback data to it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_value | Value continues. Reallocate value buffer | + | | | and append callback data to it | + ------------------------ ------------ -------------------------------------------- diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/TODO b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/TODO new file mode 100644 index 0000000000..eb46a08446 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/TODO @@ -0,0 +1,28 @@ +decide how to handle errs per default: + - ry: "set state to dead", return `read` + - current: call on_error w/ details, if no on_error handler set, + throw Exception, else call on_error and behave like orig... + +some tests from test.c left to port + (scan ...) +documentation + +hi level callback interface +eventloop +state() as a function (?) + - perhaps, the idea being to be able to log/debug better... +more tests + - in particular, port available c tests +impl bits of servlet api. + +DONE + +Sun Jul 18 12:19:18 CEST 2010 + +error handling + - consider callback based error handling and the current highlevel + "nice" logging moved to high level http impl. + - use Exceptions "ProtocolException"? + +better testing + - no junit to avoid dependencies diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml new file mode 100755 index 0000000000..d2c6af45a2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c new file mode 100644 index 0000000000..e961ae8a43 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c @@ -0,0 +1,2175 @@ +/* Based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev + * + * Additional changes are licensed under the same terms as NGINX and + * copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "http_parser.h" +#include +#include +#include +#include +#include +#include + +#ifndef ULLONG_MAX +# define ULLONG_MAX ((uint64_t) -1) /* 2^64-1 */ +#endif + +#ifndef MIN +# define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +#endif + +#ifndef BIT_AT +# define BIT_AT(a, i) \ + (!!((unsigned int) (a)[(unsigned int) (i) >> 3] & \ + (1 << ((unsigned int) (i) & 7)))) +#endif + +#ifndef ELEM_AT +# define ELEM_AT(a, i, v) ((unsigned int) (i) < ARRAY_SIZE(a) ? (a)[(i)] : (v)) +#endif + +#define SET_ERRNO(e) \ +do { \ + parser->http_errno = (e); \ +} while(0) + + +/* Run the notify callback FOR, returning ER if it fails */ +#define CALLBACK_NOTIFY_(FOR, ER) \ +do { \ + assert(HTTP_PARSER_ERRNO(parser) == HPE_OK); \ + \ + if (settings->on_##FOR) { \ + if (0 != settings->on_##FOR(parser)) { \ + SET_ERRNO(HPE_CB_##FOR); \ + } \ + \ + /* We either errored above or got paused; get out */ \ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { \ + return (ER); \ + } \ + } \ +} while (0) + +/* Run the notify callback FOR and consume the current byte */ +#define CALLBACK_NOTIFY(FOR) CALLBACK_NOTIFY_(FOR, p - data + 1) + +/* Run the notify callback FOR and don't consume the current byte */ +#define CALLBACK_NOTIFY_NOADVANCE(FOR) CALLBACK_NOTIFY_(FOR, p - data) + +/* Run data callback FOR with LEN bytes, returning ER if it fails */ +#define CALLBACK_DATA_(FOR, LEN, ER) \ +do { \ + assert(HTTP_PARSER_ERRNO(parser) == HPE_OK); \ + \ + if (FOR##_mark) { \ + if (settings->on_##FOR) { \ + if (0 != settings->on_##FOR(parser, FOR##_mark, (LEN))) { \ + SET_ERRNO(HPE_CB_##FOR); \ + } \ + \ + /* We either errored above or got paused; get out */ \ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { \ + return (ER); \ + } \ + } \ + FOR##_mark = NULL; \ + } \ +} while (0) + +/* Run the data callback FOR and consume the current byte */ +#define CALLBACK_DATA(FOR) \ + CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1) + +/* Run the data callback FOR and don't consume the current byte */ +#define CALLBACK_DATA_NOADVANCE(FOR) \ + CALLBACK_DATA_(FOR, p - FOR##_mark, p - data) + +/* Set the mark FOR; non-destructive if mark is already set */ +#define MARK(FOR) \ +do { \ + if (!FOR##_mark) { \ + FOR##_mark = p; \ + } \ +} while (0) + + +#define PROXY_CONNECTION "proxy-connection" +#define CONNECTION "connection" +#define CONTENT_LENGTH "content-length" +#define TRANSFER_ENCODING "transfer-encoding" +#define UPGRADE "upgrade" +#define CHUNKED "chunked" +#define KEEP_ALIVE "keep-alive" +#define CLOSE "close" + + +static const char *method_strings[] = + { +#define XX(num, name, string) #string, + HTTP_METHOD_MAP(XX) +#undef XX + }; + + +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +static const char tokens[256] = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0, '!', 0, '#', '$', '%', '&', '\'', +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 0, 0, '*', '+', 0, '-', '.', 0, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + '0', '1', '2', '3', '4', '5', '6', '7', +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + '8', '9', 0, 0, 0, 0, 0, 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 0, 'a', 'b', 'c', 'd', 'e', 'f', 'g', +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 'x', 'y', 'z', 0, 0, 0, '^', '_', +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 'x', 'y', 'z', 0, '|', 0, '~', 0 }; + + +static const int8_t unhex[256] = + {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + }; + + +#if HTTP_PARSER_STRICT +# define T(v) 0 +#else +# define T(v) v +#endif + + +static const uint8_t normal_url_char[32] = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0 | T(2) | 0 | 0 | T(16) | 0 | 0 | 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0 | 2 | 4 | 0 | 16 | 32 | 64 | 128, +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 0, }; + +#undef T + +enum state + { s_dead = 1 /* important that this is > 0 */ + + , s_start_req_or_res + , s_res_or_resp_H + , s_start_res + , s_res_H + , s_res_HT + , s_res_HTT + , s_res_HTTP + , s_res_first_http_major + , s_res_http_major + , s_res_first_http_minor + , s_res_http_minor + , s_res_first_status_code + , s_res_status_code + , s_res_status + , s_res_line_almost_done + + , s_start_req + + , s_req_method + , s_req_spaces_before_url + , s_req_schema + , s_req_schema_slash + , s_req_schema_slash_slash + , s_req_server_start + , s_req_server + , s_req_server_with_at + , s_req_path + , s_req_query_string_start + , s_req_query_string + , s_req_fragment_start + , s_req_fragment + , s_req_http_start + , s_req_http_H + , s_req_http_HT + , s_req_http_HTT + , s_req_http_HTTP + , s_req_first_http_major + , s_req_http_major + , s_req_first_http_minor + , s_req_http_minor + , s_req_line_almost_done + + , s_header_field_start + , s_header_field + , s_header_value_start + , s_header_value + , s_header_value_lws + + , s_header_almost_done + + , s_chunk_size_start + , s_chunk_size + , s_chunk_parameters + , s_chunk_size_almost_done + + , s_headers_almost_done + , s_headers_done + + /* Important: 's_headers_done' must be the last 'header' state. All + * states beyond this must be 'body' states. It is used for overflow + * checking. See the PARSING_HEADER() macro. + */ + + , s_chunk_data + , s_chunk_data_almost_done + , s_chunk_data_done + + , s_body_identity + , s_body_identity_eof + + , s_message_done + }; + + +#define PARSING_HEADER(state) (state <= s_headers_done) + + +enum header_states + { h_general = 0 + , h_C + , h_CO + , h_CON + + , h_matching_connection + , h_matching_proxy_connection + , h_matching_content_length + , h_matching_transfer_encoding + , h_matching_upgrade + + , h_connection + , h_content_length + , h_transfer_encoding + , h_upgrade + + , h_matching_transfer_encoding_chunked + , h_matching_connection_keep_alive + , h_matching_connection_close + + , h_transfer_encoding_chunked + , h_connection_keep_alive + , h_connection_close + }; + +enum http_host_state + { + s_http_host_dead = 1 + , s_http_userinfo_start + , s_http_userinfo + , s_http_host_start + , s_http_host_v6_start + , s_http_host + , s_http_host_v6 + , s_http_host_v6_end + , s_http_host_port_start + , s_http_host_port +}; + +/* Macros for character classes; depends on strict-mode */ +#define CR '\r' +#define LF '\n' +#define LOWER(c) (unsigned char)(c | 0x20) +#define IS_ALPHA(c) (LOWER(c) >= 'a' && LOWER(c) <= 'z') +#define IS_NUM(c) ((c) >= '0' && (c) <= '9') +#define IS_ALPHANUM(c) (IS_ALPHA(c) || IS_NUM(c)) +#define IS_HEX(c) (IS_NUM(c) || (LOWER(c) >= 'a' && LOWER(c) <= 'f')) +#define IS_MARK(c) ((c) == '-' || (c) == '_' || (c) == '.' || \ + (c) == '!' || (c) == '~' || (c) == '*' || (c) == '\'' || (c) == '(' || \ + (c) == ')') +#define IS_USERINFO_CHAR(c) (IS_ALPHANUM(c) || IS_MARK(c) || (c) == '%' || \ + (c) == ';' || (c) == ':' || (c) == '&' || (c) == '=' || (c) == '+' || \ + (c) == '$' || (c) == ',') + +#if HTTP_PARSER_STRICT +#define TOKEN(c) (tokens[(unsigned char)c]) +#define IS_URL_CHAR(c) (BIT_AT(normal_url_char, (unsigned char)c)) +#define IS_HOST_CHAR(c) (IS_ALPHANUM(c) || (c) == '.' || (c) == '-') +#else +#define TOKEN(c) ((c == ' ') ? ' ' : tokens[(unsigned char)c]) +#define IS_URL_CHAR(c) \ + (BIT_AT(normal_url_char, (unsigned char)c) || ((c) & 0x80)) +#define IS_HOST_CHAR(c) \ + (IS_ALPHANUM(c) || (c) == '.' || (c) == '-' || (c) == '_') +#endif + + +#define start_state (parser->type == HTTP_REQUEST ? s_start_req : s_start_res) + + +#if HTTP_PARSER_STRICT +# define STRICT_CHECK(cond) \ +do { \ + if (cond) { \ + SET_ERRNO(HPE_STRICT); \ + goto error; \ + } \ +} while (0) +# define NEW_MESSAGE() (http_should_keep_alive(parser) ? start_state : s_dead) +#else +# define STRICT_CHECK(cond) +# define NEW_MESSAGE() start_state +#endif + + +/* Map errno values to strings for human-readable output */ +#define HTTP_STRERROR_GEN(n, s) { "HPE_" #n, s }, +static struct { + const char *name; + const char *description; +} http_strerror_tab[] = { + HTTP_ERRNO_MAP(HTTP_STRERROR_GEN) +}; +#undef HTTP_STRERROR_GEN + +int http_message_needs_eof(const http_parser *parser); + +/* Our URL parser. + * + * This is designed to be shared by http_parser_execute() for URL validation, + * hence it has a state transition + byte-for-byte interface. In addition, it + * is meant to be embedded in http_parser_parse_url(), which does the dirty + * work of turning state transitions URL components for its API. + * + * This function should only be invoked with non-space characters. It is + * assumed that the caller cares about (and can detect) the transition between + * URL and non-URL states by looking for these. + */ +static enum state +parse_url_char(enum state s, const char ch) +{ + if (ch == ' ' || ch == '\r' || ch == '\n') { + return s_dead; + } + +#if HTTP_PARSER_STRICT + if (ch == '\t' || ch == '\f') { + return s_dead; + } +#endif + + switch (s) { + case s_req_spaces_before_url: + /* Proxied requests are followed by scheme of an absolute URI (alpha). + * All methods except CONNECT are followed by '/' or '*'. + */ + + if (ch == '/' || ch == '*') { + return s_req_path; + } + + if (IS_ALPHA(ch)) { + return s_req_schema; + } + + break; + + case s_req_schema: + if (IS_ALPHA(ch)) { + return s; + } + + if (ch == ':') { + return s_req_schema_slash; + } + + break; + + case s_req_schema_slash: + if (ch == '/') { + return s_req_schema_slash_slash; + } + + break; + + case s_req_schema_slash_slash: + if (ch == '/') { + return s_req_server_start; + } + + break; + + case s_req_server_with_at: + if (ch == '@') { + return s_dead; + } + + /* FALLTHROUGH */ + case s_req_server_start: + case s_req_server: + if (ch == '/') { + return s_req_path; + } + + if (ch == '?') { + return s_req_query_string_start; + } + + if (ch == '@') { + return s_req_server_with_at; + } + + if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { + return s_req_server; + } + + break; + + case s_req_path: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + return s_req_query_string_start; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_query_string_start: + case s_req_query_string: + if (IS_URL_CHAR(ch)) { + return s_req_query_string; + } + + switch (ch) { + case '?': + /* allow extra '?' in query string */ + return s_req_query_string; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_fragment_start: + if (IS_URL_CHAR(ch)) { + return s_req_fragment; + } + + switch (ch) { + case '?': + return s_req_fragment; + + case '#': + return s; + } + + break; + + case s_req_fragment: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + case '#': + return s; + } + + break; + + default: + break; + } + + /* We should never fall out of the switch above unless there's an error */ + return s_dead; +} + +size_t http_parser_execute (http_parser *parser, + const http_parser_settings *settings, + const char *data, + size_t len) +{ + char c, ch; + int8_t unhex_val; + const char *p = data; + const char *header_field_mark = 0; + const char *header_value_mark = 0; + const char *url_mark = 0; + const char *body_mark = 0; + + /* We're in an error state. Don't bother doing anything. */ + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { + return 0; + } + + if (len == 0) { + switch (parser->state) { + case s_body_identity_eof: + /* Use of CALLBACK_NOTIFY() here would erroneously return 1 byte read if + * we got paused. + */ + CALLBACK_NOTIFY_NOADVANCE(message_complete); + return 0; + + case s_dead: + case s_start_req_or_res: + case s_start_res: + case s_start_req: + return 0; + + default: + SET_ERRNO(HPE_INVALID_EOF_STATE); + return 1; + } + } + + + if (parser->state == s_header_field) + header_field_mark = data; + if (parser->state == s_header_value) + header_value_mark = data; + switch (parser->state) { + case s_req_path: + case s_req_schema: + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_server_start: + case s_req_server: + case s_req_server_with_at: + case s_req_query_string_start: + case s_req_query_string: + case s_req_fragment_start: + case s_req_fragment: + url_mark = data; + break; + } + + for (p=data; p != data + len; p++) { + ch = *p; + + if (PARSING_HEADER(parser->state)) { + ++parser->nread; + /* Buffer overflow attack */ + if (parser->nread > HTTP_MAX_HEADER_SIZE) { + SET_ERRNO(HPE_HEADER_OVERFLOW); + goto error; + } + } + + reexecute_byte: + switch (parser->state) { + + case s_dead: + /* this state is used after a 'Connection: close' message + * the parser will error out if it reads another message + */ + if (ch == CR || ch == LF) + break; + + SET_ERRNO(HPE_CLOSED_CONNECTION); + goto error; + + case s_start_req_or_res: + { + if (ch == CR || ch == LF) + break; + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + if (ch == 'H') { + parser->state = s_res_or_resp_H; + + CALLBACK_NOTIFY(message_begin); + } else { + parser->type = HTTP_REQUEST; + parser->state = s_start_req; + goto reexecute_byte; + } + + break; + } + + case s_res_or_resp_H: + if (ch == 'T') { + parser->type = HTTP_RESPONSE; + parser->state = s_res_HT; + } else { + if (ch != 'E') { + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + + parser->type = HTTP_REQUEST; + parser->method = HTTP_HEAD; + parser->index = 2; + parser->state = s_req_method; + } + break; + + case s_start_res: + { + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + switch (ch) { + case 'H': + parser->state = s_res_H; + break; + + case CR: + case LF: + break; + + default: + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + + CALLBACK_NOTIFY(message_begin); + break; + } + + case s_res_H: + STRICT_CHECK(ch != 'T'); + parser->state = s_res_HT; + break; + + case s_res_HT: + STRICT_CHECK(ch != 'T'); + parser->state = s_res_HTT; + break; + + case s_res_HTT: + STRICT_CHECK(ch != 'P'); + parser->state = s_res_HTTP; + break; + + case s_res_HTTP: + STRICT_CHECK(ch != '/'); + parser->state = s_res_first_http_major; + break; + + case s_res_first_http_major: + if (ch < '0' || ch > '9') { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major = ch - '0'; + parser->state = s_res_http_major; + break; + + /* major HTTP version or dot */ + case s_res_http_major: + { + if (ch == '.') { + parser->state = s_res_first_http_minor; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major *= 10; + parser->http_major += ch - '0'; + + if (parser->http_major > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* first digit of minor HTTP version */ + case s_res_first_http_minor: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor = ch - '0'; + parser->state = s_res_http_minor; + break; + + /* minor HTTP version or end of request line */ + case s_res_http_minor: + { + if (ch == ' ') { + parser->state = s_res_first_status_code; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor *= 10; + parser->http_minor += ch - '0'; + + if (parser->http_minor > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + case s_res_first_status_code: + { + if (!IS_NUM(ch)) { + if (ch == ' ') { + break; + } + + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + parser->status_code = ch - '0'; + parser->state = s_res_status_code; + break; + } + + case s_res_status_code: + { + if (!IS_NUM(ch)) { + switch (ch) { + case ' ': + parser->state = s_res_status; + break; + case CR: + parser->state = s_res_line_almost_done; + break; + case LF: + parser->state = s_header_field_start; + break; + default: + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + break; + } + + parser->status_code *= 10; + parser->status_code += ch - '0'; + + if (parser->status_code > 999) { + SET_ERRNO(HPE_INVALID_STATUS); + goto error; + } + + break; + } + + case s_res_status: + /* the human readable status. e.g. "NOT FOUND" + * we are not humans so just ignore this */ + if (ch == CR) { + parser->state = s_res_line_almost_done; + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + break; + } + break; + + case s_res_line_almost_done: + STRICT_CHECK(ch != LF); + parser->state = s_header_field_start; + CALLBACK_NOTIFY(status_complete); + break; + + case s_start_req: + { + if (ch == CR || ch == LF) + break; + parser->flags = 0; + parser->content_length = ULLONG_MAX; + + if (!IS_ALPHA(ch)) { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + parser->method = (enum http_method) 0; + parser->index = 1; + switch (ch) { + case 'C': parser->method = HTTP_CONNECT; /* or COPY, CHECKOUT */ break; + case 'D': parser->method = HTTP_DELETE; break; + case 'G': parser->method = HTTP_GET; break; + case 'H': parser->method = HTTP_HEAD; break; + case 'L': parser->method = HTTP_LOCK; break; + case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH */ break; + case 'N': parser->method = HTTP_NOTIFY; break; + case 'O': parser->method = HTTP_OPTIONS; break; + case 'P': parser->method = HTTP_POST; + /* or PROPFIND|PROPPATCH|PUT|PATCH|PURGE */ + break; + case 'R': parser->method = HTTP_REPORT; break; + case 'S': parser->method = HTTP_SUBSCRIBE; /* or SEARCH */ break; + case 'T': parser->method = HTTP_TRACE; break; + case 'U': parser->method = HTTP_UNLOCK; /* or UNSUBSCRIBE */ break; + default: + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + parser->state = s_req_method; + + CALLBACK_NOTIFY(message_begin); + + break; + } + + case s_req_method: + { + const char *matcher; + if (ch == '\0') { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + matcher = method_strings[parser->method]; + if (ch == ' ' && matcher[parser->index] == '\0') { + parser->state = s_req_spaces_before_url; + } else if (ch == matcher[parser->index]) { + ; /* nada */ + } else if (parser->method == HTTP_CONNECT) { + if (parser->index == 1 && ch == 'H') { + parser->method = HTTP_CHECKOUT; + } else if (parser->index == 2 && ch == 'P') { + parser->method = HTTP_COPY; + } else { + goto error; + } + } else if (parser->method == HTTP_MKCOL) { + if (parser->index == 1 && ch == 'O') { + parser->method = HTTP_MOVE; + } else if (parser->index == 1 && ch == 'E') { + parser->method = HTTP_MERGE; + } else if (parser->index == 1 && ch == '-') { + parser->method = HTTP_MSEARCH; + } else if (parser->index == 2 && ch == 'A') { + parser->method = HTTP_MKACTIVITY; + } else { + goto error; + } + } else if (parser->method == HTTP_SUBSCRIBE) { + if (parser->index == 1 && ch == 'E') { + parser->method = HTTP_SEARCH; + } else { + goto error; + } + } else if (parser->index == 1 && parser->method == HTTP_POST) { + if (ch == 'R') { + parser->method = HTTP_PROPFIND; /* or HTTP_PROPPATCH */ + } else if (ch == 'U') { + parser->method = HTTP_PUT; /* or HTTP_PURGE */ + } else if (ch == 'A') { + parser->method = HTTP_PATCH; + } else { + goto error; + } + } else if (parser->index == 2) { + if (parser->method == HTTP_PUT) { + if (ch == 'R') parser->method = HTTP_PURGE; + } else if (parser->method == HTTP_UNLOCK) { + if (ch == 'S') parser->method = HTTP_UNSUBSCRIBE; + } + } else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { + parser->method = HTTP_PROPPATCH; + } else { + SET_ERRNO(HPE_INVALID_METHOD); + goto error; + } + + ++parser->index; + break; + } + + case s_req_spaces_before_url: + { + if (ch == ' ') break; + + MARK(url); + if (parser->method == HTTP_CONNECT) { + parser->state = s_req_server_start; + } + + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + + break; + } + + case s_req_schema: + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_server_start: + { + switch (ch) { + /* No whitespace allowed here */ + case ' ': + case CR: + case LF: + SET_ERRNO(HPE_INVALID_URL); + goto error; + default: + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + } + + break; + } + + case s_req_server: + case s_req_server_with_at: + case s_req_path: + case s_req_query_string_start: + case s_req_query_string: + case s_req_fragment_start: + case s_req_fragment: + { + switch (ch) { + case ' ': + parser->state = s_req_http_start; + CALLBACK_DATA(url); + break; + case CR: + case LF: + parser->http_major = 0; + parser->http_minor = 9; + parser->state = (ch == CR) ? + s_req_line_almost_done : + s_header_field_start; + CALLBACK_DATA(url); + break; + default: + parser->state = parse_url_char((enum state)parser->state, ch); + if (parser->state == s_dead) { + SET_ERRNO(HPE_INVALID_URL); + goto error; + } + } + break; + } + + case s_req_http_start: + switch (ch) { + case 'H': + parser->state = s_req_http_H; + break; + case ' ': + break; + default: + SET_ERRNO(HPE_INVALID_CONSTANT); + goto error; + } + break; + + case s_req_http_H: + STRICT_CHECK(ch != 'T'); + parser->state = s_req_http_HT; + break; + + case s_req_http_HT: + STRICT_CHECK(ch != 'T'); + parser->state = s_req_http_HTT; + break; + + case s_req_http_HTT: + STRICT_CHECK(ch != 'P'); + parser->state = s_req_http_HTTP; + break; + + case s_req_http_HTTP: + STRICT_CHECK(ch != '/'); + parser->state = s_req_first_http_major; + break; + + /* first digit of major HTTP version */ + case s_req_first_http_major: + if (ch < '1' || ch > '9') { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major = ch - '0'; + parser->state = s_req_http_major; + break; + + /* major HTTP version or dot */ + case s_req_http_major: + { + if (ch == '.') { + parser->state = s_req_first_http_minor; + break; + } + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_major *= 10; + parser->http_major += ch - '0'; + + if (parser->http_major > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* first digit of minor HTTP version */ + case s_req_first_http_minor: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor = ch - '0'; + parser->state = s_req_http_minor; + break; + + /* minor HTTP version or end of request line */ + case s_req_http_minor: + { + if (ch == CR) { + parser->state = s_req_line_almost_done; + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + break; + } + + /* XXX allow spaces after digit? */ + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + parser->http_minor *= 10; + parser->http_minor += ch - '0'; + + if (parser->http_minor > 999) { + SET_ERRNO(HPE_INVALID_VERSION); + goto error; + } + + break; + } + + /* end of request line */ + case s_req_line_almost_done: + { + if (ch != LF) { + SET_ERRNO(HPE_LF_EXPECTED); + goto error; + } + + parser->state = s_header_field_start; + break; + } + + case s_header_field_start: + { + if (ch == CR) { + parser->state = s_headers_almost_done; + break; + } + + if (ch == LF) { + /* they might be just sending \n instead of \r\n so this would be + * the second \n to denote the end of headers*/ + parser->state = s_headers_almost_done; + goto reexecute_byte; + } + + c = TOKEN(ch); + + if (!c) { + SET_ERRNO(HPE_INVALID_HEADER_TOKEN); + goto error; + } + + MARK(header_field); + + parser->index = 0; + parser->state = s_header_field; + + switch (c) { + case 'c': + parser->header_state = h_C; + break; + + case 'p': + parser->header_state = h_matching_proxy_connection; + break; + + case 't': + parser->header_state = h_matching_transfer_encoding; + break; + + case 'u': + parser->header_state = h_matching_upgrade; + break; + + default: + parser->header_state = h_general; + break; + } + break; + } + + case s_header_field: + { + c = TOKEN(ch); + + if (c) { + switch (parser->header_state) { + case h_general: + break; + + case h_C: + parser->index++; + parser->header_state = (c == 'o' ? h_CO : h_general); + break; + + case h_CO: + parser->index++; + parser->header_state = (c == 'n' ? h_CON : h_general); + break; + + case h_CON: + parser->index++; + switch (c) { + case 'n': + parser->header_state = h_matching_connection; + break; + case 't': + parser->header_state = h_matching_content_length; + break; + default: + parser->header_state = h_general; + break; + } + break; + + /* connection */ + + case h_matching_connection: + parser->index++; + if (parser->index > sizeof(CONNECTION)-1 + || c != CONNECTION[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CONNECTION)-2) { + parser->header_state = h_connection; + } + break; + + /* proxy-connection */ + + case h_matching_proxy_connection: + parser->index++; + if (parser->index > sizeof(PROXY_CONNECTION)-1 + || c != PROXY_CONNECTION[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(PROXY_CONNECTION)-2) { + parser->header_state = h_connection; + } + break; + + /* content-length */ + + case h_matching_content_length: + parser->index++; + if (parser->index > sizeof(CONTENT_LENGTH)-1 + || c != CONTENT_LENGTH[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CONTENT_LENGTH)-2) { + parser->header_state = h_content_length; + } + break; + + /* transfer-encoding */ + + case h_matching_transfer_encoding: + parser->index++; + if (parser->index > sizeof(TRANSFER_ENCODING)-1 + || c != TRANSFER_ENCODING[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(TRANSFER_ENCODING)-2) { + parser->header_state = h_transfer_encoding; + } + break; + + /* upgrade */ + + case h_matching_upgrade: + parser->index++; + if (parser->index > sizeof(UPGRADE)-1 + || c != UPGRADE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(UPGRADE)-2) { + parser->header_state = h_upgrade; + } + break; + + case h_connection: + case h_content_length: + case h_transfer_encoding: + case h_upgrade: + if (ch != ' ') parser->header_state = h_general; + break; + + default: + assert(0 && "Unknown header_state"); + break; + } + break; + } + + if (ch == ':') { + parser->state = s_header_value_start; + CALLBACK_DATA(header_field); + break; + } + + if (ch == CR) { + parser->state = s_header_almost_done; + CALLBACK_DATA(header_field); + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + CALLBACK_DATA(header_field); + break; + } + + SET_ERRNO(HPE_INVALID_HEADER_TOKEN); + goto error; + } + + case s_header_value_start: + { + if (ch == ' ' || ch == '\t') break; + + MARK(header_value); + + parser->state = s_header_value; + parser->index = 0; + + if (ch == CR) { + parser->header_state = h_general; + parser->state = s_header_almost_done; + CALLBACK_DATA(header_value); + break; + } + + if (ch == LF) { + parser->state = s_header_field_start; + CALLBACK_DATA(header_value); + break; + } + + c = LOWER(ch); + + switch (parser->header_state) { + case h_upgrade: + parser->flags |= F_UPGRADE; + parser->header_state = h_general; + break; + + case h_transfer_encoding: + /* looking for 'Transfer-Encoding: chunked' */ + if ('c' == c) { + parser->header_state = h_matching_transfer_encoding_chunked; + } else { + parser->header_state = h_general; + } + break; + + case h_content_length: + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = ch - '0'; + break; + + case h_connection: + /* looking for 'Connection: keep-alive' */ + if (c == 'k') { + parser->header_state = h_matching_connection_keep_alive; + /* looking for 'Connection: close' */ + } else if (c == 'c') { + parser->header_state = h_matching_connection_close; + } else { + parser->header_state = h_general; + } + break; + + default: + parser->header_state = h_general; + break; + } + break; + } + + case s_header_value: + { + + if (ch == CR) { + parser->state = s_header_almost_done; + CALLBACK_DATA(header_value); + break; + } + + if (ch == LF) { + parser->state = s_header_almost_done; + CALLBACK_DATA_NOADVANCE(header_value); + goto reexecute_byte; + } + + c = LOWER(ch); + + switch (parser->header_state) { + case h_general: + break; + + case h_connection: + case h_transfer_encoding: + assert(0 && "Shouldn't get here."); + break; + + case h_content_length: + { + uint64_t t; + + if (ch == ' ') break; + + if (!IS_NUM(ch)) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + t = parser->content_length; + t *= 10; + t += ch - '0'; + + /* Overflow? */ + if (t < parser->content_length || t == ULLONG_MAX) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = t; + break; + } + + /* Transfer-Encoding: chunked */ + case h_matching_transfer_encoding_chunked: + parser->index++; + if (parser->index > sizeof(CHUNKED)-1 + || c != CHUNKED[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CHUNKED)-2) { + parser->header_state = h_transfer_encoding_chunked; + } + break; + + /* looking for 'Connection: keep-alive' */ + case h_matching_connection_keep_alive: + parser->index++; + if (parser->index > sizeof(KEEP_ALIVE)-1 + || c != KEEP_ALIVE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(KEEP_ALIVE)-2) { + parser->header_state = h_connection_keep_alive; + } + break; + + /* looking for 'Connection: close' */ + case h_matching_connection_close: + parser->index++; + if (parser->index > sizeof(CLOSE)-1 || c != CLOSE[parser->index]) { + parser->header_state = h_general; + } else if (parser->index == sizeof(CLOSE)-2) { + parser->header_state = h_connection_close; + } + break; + + case h_transfer_encoding_chunked: + case h_connection_keep_alive: + case h_connection_close: + if (ch != ' ') parser->header_state = h_general; + break; + + default: + parser->state = s_header_value; + parser->header_state = h_general; + break; + } + break; + } + + case s_header_almost_done: + { + STRICT_CHECK(ch != LF); + + parser->state = s_header_value_lws; + + switch (parser->header_state) { + case h_connection_keep_alive: + parser->flags |= F_CONNECTION_KEEP_ALIVE; + break; + case h_connection_close: + parser->flags |= F_CONNECTION_CLOSE; + break; + case h_transfer_encoding_chunked: + parser->flags |= F_CHUNKED; + break; + default: + break; + } + + break; + } + + case s_header_value_lws: + { + if (ch == ' ' || ch == '\t') + parser->state = s_header_value_start; + else + { + parser->state = s_header_field_start; + goto reexecute_byte; + } + break; + } + + case s_headers_almost_done: + { + STRICT_CHECK(ch != LF); + + if (parser->flags & F_TRAILING) { + /* End of a chunked request */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + break; + } + + parser->state = s_headers_done; + + /* Set this here so that on_headers_complete() callbacks can see it */ + parser->upgrade = + (parser->flags & F_UPGRADE || parser->method == HTTP_CONNECT); + + /* Here we call the headers_complete callback. This is somewhat + * different than other callbacks because if the user returns 1, we + * will interpret that as saying that this message has no body. This + * is needed for the annoying case of recieving a response to a HEAD + * request. + * + * We'd like to use CALLBACK_NOTIFY_NOADVANCE() here but we cannot, so + * we have to simulate it by handling a change in errno below. + */ + if (settings->on_headers_complete) { + switch (settings->on_headers_complete(parser)) { + case 0: + break; + + case 1: + parser->flags |= F_SKIPBODY; + break; + + default: + SET_ERRNO(HPE_CB_headers_complete); + return p - data; /* Error */ + } + } + + if (HTTP_PARSER_ERRNO(parser) != HPE_OK) { + return p - data; + } + + goto reexecute_byte; + } + + case s_headers_done: + { + STRICT_CHECK(ch != LF); + + parser->nread = 0; + + /* Exit, the rest of the connect is in a different protocol. */ + if (parser->upgrade) { + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + return (p - data) + 1; + } + + if (parser->flags & F_SKIPBODY) { + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else if (parser->flags & F_CHUNKED) { + /* chunked encoding - ignore Content-Length header */ + parser->state = s_chunk_size_start; + } else { + if (parser->content_length == 0) { + /* Content-Length header given but zero: Content-Length: 0\r\n */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else if (parser->content_length != ULLONG_MAX) { + /* Content-Length header given and non-zero */ + parser->state = s_body_identity; + } else { + if (parser->type == HTTP_REQUEST || + !http_message_needs_eof(parser)) { + /* Assume content-length 0 - read the next */ + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + } else { + /* Read body until EOF */ + parser->state = s_body_identity_eof; + } + } + } + + break; + } + + case s_body_identity: + { + uint64_t to_read = MIN(parser->content_length, + (uint64_t) ((data + len) - p)); + + assert(parser->content_length != 0 + && parser->content_length != ULLONG_MAX); + + /* The difference between advancing content_length and p is because + * the latter will automaticaly advance on the next loop iteration. + * Further, if content_length ends up at 0, we want to see the last + * byte again for our message complete callback. + */ + MARK(body); + parser->content_length -= to_read; + p += to_read - 1; + + if (parser->content_length == 0) { + parser->state = s_message_done; + + /* Mimic CALLBACK_DATA_NOADVANCE() but with one extra byte. + * + * The alternative to doing this is to wait for the next byte to + * trigger the data callback, just as in every other case. The + * problem with this is that this makes it difficult for the test + * harness to distinguish between complete-on-EOF and + * complete-on-length. It's not clear that this distinction is + * important for applications, but let's keep it for now. + */ + CALLBACK_DATA_(body, p - body_mark + 1, p - data); + goto reexecute_byte; + } + + break; + } + + /* read until EOF */ + case s_body_identity_eof: + MARK(body); + p = data + len - 1; + + break; + + case s_message_done: + parser->state = NEW_MESSAGE(); + CALLBACK_NOTIFY(message_complete); + break; + + case s_chunk_size_start: + { + assert(parser->nread == 1); + assert(parser->flags & F_CHUNKED); + + unhex_val = unhex[(unsigned char)ch]; + if (unhex_val == -1) { + SET_ERRNO(HPE_INVALID_CHUNK_SIZE); + goto error; + } + + parser->content_length = unhex_val; + parser->state = s_chunk_size; + break; + } + + case s_chunk_size: + { + uint64_t t; + + assert(parser->flags & F_CHUNKED); + + if (ch == CR) { + parser->state = s_chunk_size_almost_done; + break; + } + + unhex_val = unhex[(unsigned char)ch]; + + if (unhex_val == -1) { + if (ch == ';' || ch == ' ') { + parser->state = s_chunk_parameters; + break; + } + + SET_ERRNO(HPE_INVALID_CHUNK_SIZE); + goto error; + } + + t = parser->content_length; + t *= 16; + t += unhex_val; + + /* Overflow? */ + if (t < parser->content_length || t == ULLONG_MAX) { + SET_ERRNO(HPE_INVALID_CONTENT_LENGTH); + goto error; + } + + parser->content_length = t; + break; + } + + case s_chunk_parameters: + { + assert(parser->flags & F_CHUNKED); + /* just ignore this shit. TODO check for overflow */ + if (ch == CR) { + parser->state = s_chunk_size_almost_done; + break; + } + break; + } + + case s_chunk_size_almost_done: + { + assert(parser->flags & F_CHUNKED); + STRICT_CHECK(ch != LF); + + parser->nread = 0; + + if (parser->content_length == 0) { + parser->flags |= F_TRAILING; + parser->state = s_header_field_start; + } else { + parser->state = s_chunk_data; + } + break; + } + + case s_chunk_data: + { + uint64_t to_read = MIN(parser->content_length, + (uint64_t) ((data + len) - p)); + + assert(parser->flags & F_CHUNKED); + assert(parser->content_length != 0 + && parser->content_length != ULLONG_MAX); + + /* See the explanation in s_body_identity for why the content + * length and data pointers are managed this way. + */ + MARK(body); + parser->content_length -= to_read; + p += to_read - 1; + + if (parser->content_length == 0) { + parser->state = s_chunk_data_almost_done; + } + + break; + } + + case s_chunk_data_almost_done: + assert(parser->flags & F_CHUNKED); + assert(parser->content_length == 0); + STRICT_CHECK(ch != CR); + parser->state = s_chunk_data_done; + CALLBACK_DATA(body); + break; + + case s_chunk_data_done: + assert(parser->flags & F_CHUNKED); + STRICT_CHECK(ch != LF); + parser->nread = 0; + parser->state = s_chunk_size_start; + break; + + default: + assert(0 && "unhandled state"); + SET_ERRNO(HPE_INVALID_INTERNAL_STATE); + goto error; + } + } + + /* Run callbacks for any marks that we have leftover after we ran our of + * bytes. There should be at most one of these set, so it's OK to invoke + * them in series (unset marks will not result in callbacks). + * + * We use the NOADVANCE() variety of callbacks here because 'p' has already + * overflowed 'data' and this allows us to correct for the off-by-one that + * we'd otherwise have (since CALLBACK_DATA() is meant to be run with a 'p' + * value that's in-bounds). + */ + + assert(((header_field_mark ? 1 : 0) + + (header_value_mark ? 1 : 0) + + (url_mark ? 1 : 0) + + (body_mark ? 1 : 0)) <= 1); + + CALLBACK_DATA_NOADVANCE(header_field); + CALLBACK_DATA_NOADVANCE(header_value); + CALLBACK_DATA_NOADVANCE(url); + CALLBACK_DATA_NOADVANCE(body); + + return len; + +error: + if (HTTP_PARSER_ERRNO(parser) == HPE_OK) { + SET_ERRNO(HPE_UNKNOWN); + } + + return (p - data); +} + + +/* Does the parser need to see an EOF to find the end of the message? */ +int +http_message_needs_eof (const http_parser *parser) +{ + if (parser->type == HTTP_REQUEST) { + return 0; + } + + /* See RFC 2616 section 4.4 */ + if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */ + parser->status_code == 204 || /* No Content */ + parser->status_code == 304 || /* Not Modified */ + parser->flags & F_SKIPBODY) { /* response to a HEAD request */ + return 0; + } + + if ((parser->flags & F_CHUNKED) || parser->content_length != ULLONG_MAX) { + return 0; + } + + return 1; +} + + +int +http_should_keep_alive (const http_parser *parser) +{ + if (parser->http_major > 0 && parser->http_minor > 0) { + /* HTTP/1.1 */ + if (parser->flags & F_CONNECTION_CLOSE) { + return 0; + } + } else { + /* HTTP/1.0 or earlier */ + if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) { + return 0; + } + } + + return !http_message_needs_eof(parser); +} + + +const char * +http_method_str (enum http_method m) +{ + return ELEM_AT(method_strings, m, ""); +} + + +void +http_parser_init (http_parser *parser, enum http_parser_type t) +{ + void *data = parser->data; /* preserve application data */ + memset(parser, 0, sizeof(*parser)); + parser->data = data; + parser->type = t; + parser->state = (t == HTTP_REQUEST ? s_start_req : (t == HTTP_RESPONSE ? s_start_res : s_start_req_or_res)); + parser->http_errno = HPE_OK; +} + +const char * +http_errno_name(enum http_errno err) { + assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); + return http_strerror_tab[err].name; +} + +const char * +http_errno_description(enum http_errno err) { + assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0]))); + return http_strerror_tab[err].description; +} + +static enum http_host_state +http_parse_host_char(enum http_host_state s, const char ch) { + switch(s) { + case s_http_userinfo: + case s_http_userinfo_start: + if (ch == '@') { + return s_http_host_start; + } + + if (IS_USERINFO_CHAR(ch)) { + return s_http_userinfo; + } + break; + + case s_http_host_start: + if (ch == '[') { + return s_http_host_v6_start; + } + + if (IS_HOST_CHAR(ch)) { + return s_http_host; + } + + break; + + case s_http_host: + if (IS_HOST_CHAR(ch)) { + return s_http_host; + } + + /* FALLTHROUGH */ + case s_http_host_v6_end: + if (ch == ':') { + return s_http_host_port_start; + } + + break; + + case s_http_host_v6: + if (ch == ']') { + return s_http_host_v6_end; + } + + /* FALLTHROUGH */ + case s_http_host_v6_start: + if (IS_HEX(ch) || ch == ':' || ch == '.') { + return s_http_host_v6; + } + + break; + + case s_http_host_port: + case s_http_host_port_start: + if (IS_NUM(ch)) { + return s_http_host_port; + } + + break; + + default: + break; + } + return s_http_host_dead; +} + +static int +http_parse_host(const char * buf, struct http_parser_url *u, int found_at) { + enum http_host_state s; + + const char *p; + size_t buflen = u->field_data[UF_HOST].off + u->field_data[UF_HOST].len; + + u->field_data[UF_HOST].len = 0; + + s = found_at ? s_http_userinfo_start : s_http_host_start; + + for (p = buf + u->field_data[UF_HOST].off; p < buf + buflen; p++) { + enum http_host_state new_s = http_parse_host_char(s, *p); + + if (new_s == s_http_host_dead) { + return 1; + } + + switch(new_s) { + case s_http_host: + if (s != s_http_host) { + u->field_data[UF_HOST].off = p - buf; + } + u->field_data[UF_HOST].len++; + break; + + case s_http_host_v6: + if (s != s_http_host_v6) { + u->field_data[UF_HOST].off = p - buf; + } + u->field_data[UF_HOST].len++; + break; + + case s_http_host_port: + if (s != s_http_host_port) { + u->field_data[UF_PORT].off = p - buf; + u->field_data[UF_PORT].len = 0; + u->field_set |= (1 << UF_PORT); + } + u->field_data[UF_PORT].len++; + break; + + case s_http_userinfo: + if (s != s_http_userinfo) { + u->field_data[UF_USERINFO].off = p - buf ; + u->field_data[UF_USERINFO].len = 0; + u->field_set |= (1 << UF_USERINFO); + } + u->field_data[UF_USERINFO].len++; + break; + + default: + break; + } + s = new_s; + } + + /* Make sure we don't end somewhere unexpected */ + switch (s) { + case s_http_host_start: + case s_http_host_v6_start: + case s_http_host_v6: + case s_http_host_port_start: + case s_http_userinfo: + case s_http_userinfo_start: + return 1; + default: + break; + } + + return 0; +} + +int +http_parser_parse_url(const char *buf, size_t buflen, int is_connect, + struct http_parser_url *u) +{ + enum state s; + const char *p; + enum http_parser_url_fields uf, old_uf; + int found_at = 0; + + u->port = u->field_set = 0; + s = is_connect ? s_req_server_start : s_req_spaces_before_url; + uf = old_uf = UF_MAX; + + for (p = buf; p < buf + buflen; p++) { + s = parse_url_char(s, *p); + + /* Figure out the next field that we're operating on */ + switch (s) { + case s_dead: + return 1; + + /* Skip delimeters */ + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_server_start: + case s_req_query_string_start: + case s_req_fragment_start: + continue; + + case s_req_schema: + uf = UF_SCHEMA; + break; + + case s_req_server_with_at: + found_at = 1; + + /* FALLTROUGH */ + case s_req_server: + uf = UF_HOST; + break; + + case s_req_path: + uf = UF_PATH; + break; + + case s_req_query_string: + uf = UF_QUERY; + break; + + case s_req_fragment: + uf = UF_FRAGMENT; + break; + + default: + assert(!"Unexpected state"); + return 1; + } + + /* Nothing's changed; soldier on */ + if (uf == old_uf) { + u->field_data[uf].len++; + continue; + } + + u->field_data[uf].off = p - buf; + u->field_data[uf].len = 1; + + u->field_set |= (1 << uf); + old_uf = uf; + } + + /* host must be present if there is a schema */ + /* parsing http:///toto will fail */ + if ((u->field_set & ((1 << UF_SCHEMA) | (1 << UF_HOST))) != 0) { + if (http_parse_host(buf, u, found_at) != 0) { + return 1; + } + } + + /* CONNECT requests can only contain "hostname:port" */ + if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) { + return 1; + } + + if (u->field_set & (1 << UF_PORT)) { + /* Don't bother with endp; we've already validated the string */ + unsigned long v = strtoul(buf + u->field_data[UF_PORT].off, NULL, 10); + + /* Ports have a max value of 2^16 */ + if (v > 0xffff) { + return 1; + } + + u->port = (uint16_t) v; + } + + return 0; +} + +void +http_parser_pause(http_parser *parser, int paused) { + /* Users should only be pausing/unpausing a parser that is not in an error + * state. In non-debug builds, there's not much that we can do about this + * other than ignore it. + */ + if (HTTP_PARSER_ERRNO(parser) == HPE_OK || + HTTP_PARSER_ERRNO(parser) == HPE_PAUSED) { + SET_ERRNO((paused) ? HPE_PAUSED : HPE_OK); + } else { + assert(0 && "Attempting to pause parser in error state"); + } +} + +int +http_body_is_final(const struct http_parser *parser) { + return parser->state == s_message_done; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp new file mode 100644 index 0000000000..c6eada707f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp @@ -0,0 +1,79 @@ +# This file is used with the GYP meta build system. +# http://code.google.com/p/gyp/ +# To build try this: +# svn co http://gyp.googlecode.com/svn/trunk gyp +# ./gyp/gyp -f make --depth=`pwd` http_parser.gyp +# ./out/Debug/test +{ + 'target_defaults': { + 'default_configuration': 'Debug', + 'configurations': { + # TODO: hoist these out and put them somewhere common, because + # RuntimeLibrary MUST MATCH across the entire project + 'Debug': { + 'defines': [ 'DEBUG', '_DEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 1, # static debug + }, + }, + }, + 'Release': { + 'defines': [ 'NDEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 0, # static release + }, + }, + } + }, + 'msvs_settings': { + 'VCCLCompilerTool': { + }, + 'VCLibrarianTool': { + }, + 'VCLinkerTool': { + 'GenerateDebugInformation': 'true', + }, + }, + 'conditions': [ + ['OS == "win"', { + 'defines': [ + 'WIN32' + ], + }] + ], + }, + + 'targets': [ + { + 'target_name': 'http_parser', + 'type': 'static_library', + 'include_dirs': [ '.' ], + 'direct_dependent_settings': { + 'include_dirs': [ '.' ], + }, + 'defines': [ 'HTTP_PARSER_STRICT=0' ], + 'sources': [ './http_parser.c', ], + 'conditions': [ + ['OS=="win"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + # Compile as C++. http_parser.c is actually C99, but C++ is + # close enough in this case. + 'CompileAs': 2, + }, + }, + }] + ], + }, + + { + 'target_name': 'test', + 'type': 'executable', + 'dependencies': [ 'http_parser' ], + 'sources': [ 'test.c' ] + } + ] +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h new file mode 100644 index 0000000000..2fff4bdd7d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h @@ -0,0 +1,304 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef http_parser_h +#define http_parser_h +#ifdef __cplusplus +extern "C" { +#endif + +#define HTTP_PARSER_VERSION_MAJOR 2 +#define HTTP_PARSER_VERSION_MINOR 0 + +#include +#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600) +#include +#include +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +#include +#endif + +/* Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run + * faster + */ +#ifndef HTTP_PARSER_STRICT +# define HTTP_PARSER_STRICT 1 +#endif + +/* Maximium header size allowed */ +#define HTTP_MAX_HEADER_SIZE (80*1024) + + +typedef struct http_parser http_parser; +typedef struct http_parser_settings http_parser_settings; + + +/* Callbacks should return non-zero to indicate an error. The parser will + * then halt execution. + * + * The one exception is on_headers_complete. In a HTTP_RESPONSE parser + * returning '1' from on_headers_complete will tell the parser that it + * should not expect a body. This is used when receiving a response to a + * HEAD request which may contain 'Content-Length' or 'Transfer-Encoding: + * chunked' headers that indicate the presence of a body. + * + * http_data_cb does not return data chunks. It will be call arbitrarally + * many times for each string. E.G. you might get 10 callbacks for "on_url" + * each providing just a few characters more data. + */ +typedef int (*http_data_cb) (http_parser*, const char *at, size_t length); +typedef int (*http_cb) (http_parser*); + + +/* Request Methods */ +#define HTTP_METHOD_MAP(XX) \ + XX(0, DELETE, DELETE) \ + XX(1, GET, GET) \ + XX(2, HEAD, HEAD) \ + XX(3, POST, POST) \ + XX(4, PUT, PUT) \ + /* pathological */ \ + XX(5, CONNECT, CONNECT) \ + XX(6, OPTIONS, OPTIONS) \ + XX(7, TRACE, TRACE) \ + /* webdav */ \ + XX(8, COPY, COPY) \ + XX(9, LOCK, LOCK) \ + XX(10, MKCOL, MKCOL) \ + XX(11, MOVE, MOVE) \ + XX(12, PROPFIND, PROPFIND) \ + XX(13, PROPPATCH, PROPPATCH) \ + XX(14, SEARCH, SEARCH) \ + XX(15, UNLOCK, UNLOCK) \ + /* subversion */ \ + XX(16, REPORT, REPORT) \ + XX(17, MKACTIVITY, MKACTIVITY) \ + XX(18, CHECKOUT, CHECKOUT) \ + XX(19, MERGE, MERGE) \ + /* upnp */ \ + XX(20, MSEARCH, M-SEARCH) \ + XX(21, NOTIFY, NOTIFY) \ + XX(22, SUBSCRIBE, SUBSCRIBE) \ + XX(23, UNSUBSCRIBE, UNSUBSCRIBE) \ + /* RFC-5789 */ \ + XX(24, PATCH, PATCH) \ + XX(25, PURGE, PURGE) \ + +enum http_method + { +#define XX(num, name, string) HTTP_##name = num, + HTTP_METHOD_MAP(XX) +#undef XX + }; + + +enum http_parser_type { HTTP_REQUEST, HTTP_RESPONSE, HTTP_BOTH }; + + +/* Flag values for http_parser.flags field */ +enum flags + { F_CHUNKED = 1 << 0 + , F_CONNECTION_KEEP_ALIVE = 1 << 1 + , F_CONNECTION_CLOSE = 1 << 2 + , F_TRAILING = 1 << 3 + , F_UPGRADE = 1 << 4 + , F_SKIPBODY = 1 << 5 + }; + + +/* Map for errno-related constants + * + * The provided argument should be a macro that takes 2 arguments. + */ +#define HTTP_ERRNO_MAP(XX) \ + /* No error */ \ + XX(OK, "success") \ + \ + /* Callback-related errors */ \ + XX(CB_message_begin, "the on_message_begin callback failed") \ + XX(CB_status_complete, "the on_status_complete callback failed") \ + XX(CB_url, "the on_url callback failed") \ + XX(CB_header_field, "the on_header_field callback failed") \ + XX(CB_header_value, "the on_header_value callback failed") \ + XX(CB_headers_complete, "the on_headers_complete callback failed") \ + XX(CB_body, "the on_body callback failed") \ + XX(CB_message_complete, "the on_message_complete callback failed") \ + \ + /* Parsing-related errors */ \ + XX(INVALID_EOF_STATE, "stream ended at an unexpected time") \ + XX(HEADER_OVERFLOW, \ + "too many header bytes seen; overflow detected") \ + XX(CLOSED_CONNECTION, \ + "data received after completed connection: close message") \ + XX(INVALID_VERSION, "invalid HTTP version") \ + XX(INVALID_STATUS, "invalid HTTP status code") \ + XX(INVALID_METHOD, "invalid HTTP method") \ + XX(INVALID_URL, "invalid URL") \ + XX(INVALID_HOST, "invalid host") \ + XX(INVALID_PORT, "invalid port") \ + XX(INVALID_PATH, "invalid path") \ + XX(INVALID_QUERY_STRING, "invalid query string") \ + XX(INVALID_FRAGMENT, "invalid fragment") \ + XX(LF_EXPECTED, "LF character expected") \ + XX(INVALID_HEADER_TOKEN, "invalid character in header") \ + XX(INVALID_CONTENT_LENGTH, \ + "invalid character in content-length header") \ + XX(INVALID_CHUNK_SIZE, \ + "invalid character in chunk size header") \ + XX(INVALID_CONSTANT, "invalid constant string") \ + XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\ + XX(STRICT, "strict mode assertion failed") \ + XX(PAUSED, "parser is paused") \ + XX(UNKNOWN, "an unknown error occurred") + + +/* Define HPE_* values for each errno value above */ +#define HTTP_ERRNO_GEN(n, s) HPE_##n, +enum http_errno { + HTTP_ERRNO_MAP(HTTP_ERRNO_GEN) +}; +#undef HTTP_ERRNO_GEN + + +/* Get an http_errno value from an http_parser */ +#define HTTP_PARSER_ERRNO(p) ((enum http_errno) (p)->http_errno) + + +struct http_parser { + /** PRIVATE **/ + unsigned char type : 2; /* enum http_parser_type */ + unsigned char flags : 6; /* F_* values from 'flags' enum; semi-public */ + unsigned char state; /* enum state from http_parser.c */ + unsigned char header_state; /* enum header_state from http_parser.c */ + unsigned char index; /* index into current matcher */ + + uint32_t nread; /* # bytes read in various scenarios */ + uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */ + + /** READ-ONLY **/ + unsigned short http_major; + unsigned short http_minor; + unsigned short status_code; /* responses only */ + unsigned char method; /* requests only */ + unsigned char http_errno : 7; + + /* 1 = Upgrade header was present and the parser has exited because of that. + * 0 = No upgrade header present. + * Should be checked when http_parser_execute() returns in addition to + * error checking. + */ + unsigned char upgrade : 1; + + /** PUBLIC **/ + void *data; /* A pointer to get hook to the "connection" or "socket" object */ +}; + + +struct http_parser_settings { + http_cb on_message_begin; + http_data_cb on_url; + http_cb on_status_complete; + http_data_cb on_header_field; + http_data_cb on_header_value; + http_cb on_headers_complete; + http_data_cb on_body; + http_cb on_message_complete; +}; + + +enum http_parser_url_fields + { UF_SCHEMA = 0 + , UF_HOST = 1 + , UF_PORT = 2 + , UF_PATH = 3 + , UF_QUERY = 4 + , UF_FRAGMENT = 5 + , UF_USERINFO = 6 + , UF_MAX = 7 + }; + + +/* Result structure for http_parser_parse_url(). + * + * Callers should index into field_data[] with UF_* values iff field_set + * has the relevant (1 << UF_*) bit set. As a courtesy to clients (and + * because we probably have padding left over), we convert any port to + * a uint16_t. + */ +struct http_parser_url { + uint16_t field_set; /* Bitmask of (1 << UF_*) values */ + uint16_t port; /* Converted UF_PORT string */ + + struct { + uint16_t off; /* Offset into buffer in which field starts */ + uint16_t len; /* Length of run in buffer */ + } field_data[UF_MAX]; +}; + + +void http_parser_init(http_parser *parser, enum http_parser_type type); + + +size_t http_parser_execute(http_parser *parser, + const http_parser_settings *settings, + const char *data, + size_t len); + + +/* If http_should_keep_alive() in the on_headers_complete or + * on_message_complete callback returns 0, then this should be + * the last message on the connection. + * If you are the server, respond with the "Connection: close" header. + * If you are the client, close the connection. + */ +int http_should_keep_alive(const http_parser *parser); + +/* Returns a string version of the HTTP method. */ +const char *http_method_str(enum http_method m); + +/* Return a string name of the given error */ +const char *http_errno_name(enum http_errno err); + +/* Return a string description of the given error */ +const char *http_errno_description(enum http_errno err); + +/* Parse a URL; return nonzero on failure */ +int http_parser_parse_url(const char *buf, size_t buflen, + int is_connect, + struct http_parser_url *u); + +/* Pause or un-pause the parser; a nonzero value pauses */ +void http_parser_pause(http_parser *parser, int paused); + +/* Checks if this is the final chunk of the body. */ +int http_body_is_final(const http_parser *parser); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml new file mode 100644 index 0000000000..741121a85e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java new file mode 100644 index 0000000000..774179fb82 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java @@ -0,0 +1,41 @@ +package http_parser; + +public class FieldData { + public int off; + public int len; + + public FieldData(){} + + public FieldData(int off, int len){ + this.off = off; + this.len = len; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + FieldData fieldData = (FieldData) o; + + if (len != fieldData.len) return false; + if (off != fieldData.off) return false; + + return true; + } + + @Override + public int hashCode() { + int result = off; + result = 31 * result + len; + return result; + } + + @Override + public String toString() { + return "FieldData{" + + "off=" + off + + ", len=" + len + + '}'; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java new file mode 100644 index 0000000000..5380b0fa8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java @@ -0,0 +1,8 @@ +package http_parser; + +public abstract class HTTPCallback implements http_parser.lolevel.HTTPCallback{ + public int cb (http_parser.lolevel.HTTPParser parser) { + return this.cb((HTTPParser)parser); + } + public abstract int cb (HTTPParser parser); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java new file mode 100644 index 0000000000..bfe576f152 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java @@ -0,0 +1,34 @@ +package http_parser; + +import java.nio.ByteBuffer; + +public abstract class HTTPDataCallback implements http_parser.lolevel.HTTPDataCallback{ + /* + Very raw and extremly foolhardy! DANGER! + The whole Buffer concept is difficult enough to grasp as it is, + we pass in a buffer with an arbitrary position. + + The interesting data is located at position pos and is len + bytes long. + + The contract of this callback is that the buffer is + returned in the state that it was passed in, so implementing + this require good citizenship, you'll need to remember the current + position, change the position to get at the data you're interested + in and then set the position back to how you found it... + + Therefore: there is an abstract implementation that implements + cb as described above, and provides a new callback + with signature @see cb(byte[], int, int) + */ + public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) { + byte [] by = new byte[len]; + int saved = buf.position(); + buf.position(pos); + buf.get(by); + buf.position(saved); + return cb((HTTPParser)p, by, 0, len); + } + + public abstract int cb(HTTPParser p, byte[] by, int pos, int len); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java new file mode 100644 index 0000000000..a74206e5bc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java @@ -0,0 +1,12 @@ +package http_parser; + + +import java.nio.ByteBuffer; + +public abstract class HTTPErrorCallback implements http_parser.lolevel.HTTPErrorCallback{ + public void cb (http_parser.lolevel.HTTPParser parser, String mes, ByteBuffer buf, int initial_position) { + this.cb((HTTPParser)parser, Util.error(mes, buf, initial_position)); + } + + public abstract void cb(HTTPParser parser, String error); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java new file mode 100644 index 0000000000..9ccaf14fad --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java @@ -0,0 +1,9 @@ +package http_parser; + +@SuppressWarnings("serial") +public class HTTPException extends RuntimeException { + +public HTTPException(String mes) { + super(mes); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java new file mode 100644 index 0000000000..7c080c1f9c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java @@ -0,0 +1,107 @@ +package http_parser; + +import java.nio.charset.Charset; + +public enum HTTPMethod { + HTTP_DELETE("DELETE")// = 0 + , HTTP_GET("GET") + , HTTP_HEAD("HEAD") + , HTTP_POST("POST") + , HTTP_PUT("PUT") + , HTTP_PATCH("PATCH") + /* pathological */ + , HTTP_CONNECT("CONNECT") + , HTTP_OPTIONS("OPTIONS") + , HTTP_TRACE("TRACE") + /* webdav */ + , HTTP_COPY("COPY") + , HTTP_LOCK("LOCK") + , HTTP_MKCOL("MKCOL") + , HTTP_MOVE("MOVE") + , HTTP_PROPFIND("PROPFIND") + , HTTP_PROPPATCH("PROPPATCH") + , HTTP_UNLOCK("UNLOCK") + , HTTP_REPORT("REPORT") + , HTTP_MKACTIVITY("MKACTIVITY") + , HTTP_CHECKOUT("CHECKOUT") + , HTTP_MERGE("MERGE") + , HTTP_MSEARCH("M-SEARCH") + , HTTP_NOTIFY("NOTIFY") + , HTTP_SUBSCRIBE("SUBSCRIBE") + , HTTP_UNSUBSCRIBE("UNSUBSCRIBE") + , HTTP_PURGE("PURGE") + ; + + private static Charset ASCII; + static { + ASCII = Charset.forName("US-ASCII");; + } + public byte[] bytes; + + HTTPMethod(String name) { + // good grief, Charlie Brown, the following is necessary because + // java is retarded: + // illegal reference to static field from initializer + // this.bytes = name.getBytes(ASCII); + // yet it's not illegal to reference static fields from + // methods called from initializer. + init(name); + } + public static HTTPMethod parse(String s) { + if ("HTTP_DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;} + else if ("DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;} + else if ("HTTP_GET".equalsIgnoreCase(s)) {return HTTP_GET;} + else if ("GET".equalsIgnoreCase(s)) {return HTTP_GET;} + else if ("HTTP_HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;} + else if ("HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;} + else if ("HTTP_POST".equalsIgnoreCase(s)) {return HTTP_POST;} + else if ("POST".equalsIgnoreCase(s)) {return HTTP_POST;} + else if ("HTTP_PUT".equalsIgnoreCase(s)) {return HTTP_PUT;} + else if ("PUT".equalsIgnoreCase(s)) {return HTTP_PUT;} + else if ("HTTP_PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;} + else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;} + else if ("HTTP_CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;} + else if ("CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;} + else if ("HTTP_OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;} + else if ("OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;} + else if ("HTTP_TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;} + else if ("TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;} + else if ("HTTP_COPY".equalsIgnoreCase(s)) {return HTTP_COPY;} + else if ("COPY".equalsIgnoreCase(s)) {return HTTP_COPY;} + else if ("HTTP_LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;} + else if ("LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;} + else if ("HTTP_MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;} + else if ("MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;} + else if ("HTTP_MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;} + else if ("MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;} + else if ("HTTP_PROPFIND".equalsIgnoreCase(s)){return HTTP_PROPFIND;} + else if ("PROPFIND".equalsIgnoreCase(s)) {return HTTP_PROPFIND;} + else if ("HTTP_PROPPATCH".equalsIgnoreCase(s)){return HTTP_PROPPATCH;} + else if ("PROPPATCH".equalsIgnoreCase(s)) {return HTTP_PROPPATCH;} + else if ("HTTP_UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;} + else if ("UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;} + else if ("HTTP_REPORT".equalsIgnoreCase(s)) {return HTTP_REPORT;} + else if ("REPORT".equalsIgnoreCase(s)){return HTTP_REPORT;} + else if ("HTTP_MKACTIVITY".equalsIgnoreCase(s)) {return HTTP_MKACTIVITY;} + else if ("MKACTIVITY".equalsIgnoreCase(s)){return HTTP_MKACTIVITY;} + else if ("HTTP_CHECKOUT".equalsIgnoreCase(s)) {return HTTP_CHECKOUT;} + else if ("CHECKOUT".equalsIgnoreCase(s)){return HTTP_CHECKOUT;} + else if ("HTTP_MERGE".equalsIgnoreCase(s)) {return HTTP_MERGE;} + else if ("MERGE".equalsIgnoreCase(s)){return HTTP_MERGE;} + else if ("HTTP_MSEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;} + else if ("M-SEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;} + else if ("HTTP_NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;} + else if ("NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;} + else if ("HTTP_SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;} + else if ("SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;} + else if ("HTTP_UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;} + else if ("UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;} + else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;} + else if ("PURGE".equalsIgnoreCase(s)) {return HTTP_PURGE;} + else {return null;} + } + void init (String name) { + ASCII = null == ASCII ? Charset.forName("US-ASCII") : ASCII; + this.bytes = name.getBytes(ASCII); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java new file mode 100644 index 0000000000..7ab4fb4d24 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java @@ -0,0 +1,36 @@ +package http_parser; + +import java.nio.ByteBuffer; + +public class HTTPParser extends http_parser.lolevel.HTTPParser { + + public HTTPParser() { super(); } + public HTTPParser(ParserType type) { super(type); } + + public int getMajor() { + return super.http_major; + } + + public int getMinor() { + return super.http_minor; + } + + public int getStatusCode() { + return super.status_code; + } + + public HTTPMethod getHTTPMethod() { + return super.method; + } + + public boolean getUpgrade() { + return super.upgrade; + } + + public boolean shouldKeepAlive() { + return super.http_should_keep_alive(); + } + public void execute(ParserSettings settings, ByteBuffer data) { + this.execute(settings.getLoLevelSettings(), data); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java new file mode 100644 index 0000000000..d37163400d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java @@ -0,0 +1,76 @@ +package http_parser; + +import http_parser.lolevel.*; +import http_parser.lolevel.HTTPParser; + +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.Arrays; + +/** + */ +public class HTTPParserUrl { + + public int field_set; + public int port; + + public FieldData[] field_data = new FieldData[]{ + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0), + new FieldData(0,0) + }; //UF_MAX + + public HTTPParserUrl(){} + + public HTTPParserUrl(int field_set, int port, FieldData[] field_data){ + this.field_set = field_set; + this.port = port; + this.field_data = field_data; + } + + public String getFieldValue(HTTPParser.UrlFields field, ByteBuffer data) throws UnsupportedEncodingException { + FieldData fd = this.field_data[field.getIndex()]; + if(fd.off == 0 & fd.len == 0) return ""; + byte[] dst = new byte[fd.len]; + int current_pos = data.position(); + data.position(fd.off); + data.get(dst,0,fd.len); + data.position(current_pos); + String v = new String(dst, "UTF8"); + return v; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + HTTPParserUrl that = (HTTPParserUrl) o; + + if (field_set != that.field_set) return false; + if (port != that.port) return false; + if (!Arrays.equals(field_data, that.field_data)) return false; + + return true; + } + + @Override + public int hashCode() { + int result = field_set; + result = 31 * result + port; + result = 31 * result + Arrays.hashCode(field_data); + return result; + } + + @Override + public String toString() { + return "HTTPParserUrl{" + + "field_set=" + field_set + + ", port=" + port + + ", field_data=" + (field_data == null ? null : Arrays.asList(field_data)) + + '}'; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java new file mode 100644 index 0000000000..9a5e6e93a3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java @@ -0,0 +1,256 @@ +package http_parser; + + + +import primitive.collection.ByteList; + +public class ParserSettings extends http_parser.lolevel.ParserSettings { + + public HTTPCallback on_message_begin; + public HTTPDataCallback on_path; + public HTTPDataCallback on_query_string; + public HTTPDataCallback on_url; + public HTTPDataCallback on_fragment; + public HTTPCallback on_status_complete; + public HTTPDataCallback on_header_field; + public HTTPDataCallback on_header_value; + + public HTTPCallback on_headers_complete; + public HTTPDataCallback on_body; + public HTTPCallback on_message_complete; + + public HTTPErrorCallback on_error; + + private HTTPCallback _on_message_begin; + private HTTPDataCallback _on_path; + private HTTPDataCallback _on_query_string; + private HTTPDataCallback _on_url; + private HTTPDataCallback _on_fragment; + private HTTPCallback _on_status_complete; + private HTTPDataCallback _on_header_field; + private HTTPDataCallback _on_header_value; + private HTTPCallback _on_headers_complete; + private HTTPDataCallback _on_body; + private HTTPCallback _on_message_complete; + private HTTPErrorCallback _on_error; + + private http_parser.lolevel.ParserSettings settings; + + protected ByteList field = new ByteList(); + protected ByteList value = new ByteList(); + protected ByteList body = new ByteList(); + + public ParserSettings() { + this.settings = new http_parser.lolevel.ParserSettings(); + createMirrorCallbacks(); + attachCallbacks(); + } + + protected http_parser.lolevel.ParserSettings getLoLevelSettings() { + return this.settings; + } + + private void createMirrorCallbacks() { + this._on_message_begin = new HTTPCallback() { + public int cb(HTTPParser p) { + if (null != ParserSettings.this.on_message_begin) { + return ParserSettings.this.on_message_begin.cb(p); + } + return 0; + } + }; + this._on_path = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + if (null != ParserSettings.this.on_path) { + return ParserSettings.this.on_path.cb(p, by, pos, len); + } + return 0; + } + }; + this._on_query_string = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + if (null != ParserSettings.this.on_query_string) { + return ParserSettings.this.on_query_string.cb(p, by, pos, len); + } + return 0; + } + }; + this._on_url = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + if (null != ParserSettings.this.on_url) { + return ParserSettings.this.on_url.cb(p, by, pos, len); + } + return 0; + } + }; + this._on_fragment = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + if (null != ParserSettings.this.on_fragment) { + return ParserSettings.this.on_fragment.cb(p, by, pos, len); + } + return 0; + } + }; + this._on_status_complete = new HTTPCallback() { + @Override + public int cb(HTTPParser p) { + if (null != ParserSettings.this.on_status_complete) { + return ParserSettings.this.on_status_complete.cb(p); + } + return 0; + } + }; + this._on_error = new HTTPErrorCallback() { + @Override + public void cb(HTTPParser parser, String error) { + if (null != ParserSettings.this.on_error) { + ParserSettings.this.on_error.cb(parser, error); + } else { + throw new HTTPException(error); + } + + } + }; + + + +// (on_header_field and on_header_value shortened to on_h_*) +// ------------------------ ------------ -------------------------------------------- +// | State (prev. callback) | Callback | Description/action | +// ------------------------ ------------ -------------------------------------------- +// | nothing (first call) | on_h_field | Allocate new buffer and copy callback data | +// | | | into it | +// ------------------------ ------------ -------------------------------------------- +// | value | on_h_field | New header started. | +// | | | Copy current name,value buffers to headers | +// | | | list and allocate new buffer for new name | +// ------------------------ ------------ -------------------------------------------- +// | field | on_h_field | Previous name continues. Reallocate name | +// | | | buffer and append callback data to it | +// ------------------------ ------------ -------------------------------------------- +// | field | on_h_value | Value for current header started. Allocate | +// | | | new buffer and copy callback data to it | +// ------------------------ ------------ -------------------------------------------- +// | value | on_h_value | Value continues. Reallocate value buffer | +// | | | and append callback data to it | +// ------------------------ ------------ -------------------------------------------- + this._on_header_field = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + // previous value complete, call on_value with full value, reset value. + if (0 != ParserSettings.this.value.size()) { + // check we're even interested... + if (null != ParserSettings.this.on_header_value) { + byte [] valueArr = ParserSettings.this.value.toArray(); + int ret = ParserSettings.this.on_header_value.cb(p, valueArr, 0, valueArr.length); + if (0 != ret) { + return ret; + } + ParserSettings.this.value.clear(); + } + } + + if (null == ParserSettings.this.on_header_field) { + return 0; + } + + ParserSettings.this.field.addAll(by); + return 0; + } + }; + this._on_header_value = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + + // previous field complete, call on_field with full field value, reset field. + if (0 != ParserSettings.this.field.size()) { + // check we're even interested... + if (null != ParserSettings.this.on_header_field) { + byte [] fieldArr = ParserSettings.this.field.toArray(); + int ret = ParserSettings.this.on_header_field.cb(p, fieldArr, 0, fieldArr.length); + if (0 != ret) { + return ret; + } + ParserSettings.this.field.clear(); + } + } + + if (null == ParserSettings.this.on_header_value) { + return 0; + } + ParserSettings.this.value.addAll(by); + return 0; + } + }; + this._on_headers_complete = new HTTPCallback() { + @Override + public int cb(HTTPParser parser) { + // is there an uncompleted value ... ? + if (0 != ParserSettings.this.value.size()) { + // check we're even interested... + if (null != ParserSettings.this.on_header_value) { + byte [] valueArr = ParserSettings.this.value.toArray(); + int ret = ParserSettings.this.on_header_value.cb(parser, valueArr, 0, valueArr.length); + if (0 != ret) { + return ret; + } + ParserSettings.this.value.clear(); + } + } + if (null != ParserSettings.this.on_headers_complete) { + return ParserSettings.this.on_headers_complete.cb(parser); + } + return 0; + } + + }; + this._on_body = new HTTPDataCallback() { + @Override + public int cb(HTTPParser p, byte[] by, int pos, int len) { + if (null != ParserSettings.this.on_body) { + ParserSettings.this.body.addAll(by, pos, len); + } + return 0; + } + }; + + this._on_message_complete = new HTTPCallback() { + @Override + public int cb(HTTPParser parser) { + if (null != ParserSettings.this.on_body) { + byte [] body = ParserSettings.this.body.toArray(); + int ret = ParserSettings.this.on_body.cb(parser, body, 0, body.length); + if (0!=ret) { + return ret; + } + ParserSettings.this.body.clear(); + } + if (null != ParserSettings.this.on_message_complete) { + return ParserSettings.this.on_message_complete.cb(parser); + } + return 0; + } + }; + + } + + private void attachCallbacks() { + // these are certainly set, because we mirror them ... + this.settings.on_message_begin = this._on_message_begin; + this.settings.on_path = this._on_path; + this.settings.on_query_string = this._on_query_string; + this.settings.on_url = this._on_url; + this.settings.on_fragment = this._on_fragment; + this.settings.on_status_complete = this._on_status_complete; + this.settings.on_header_field = this._on_header_field; + this.settings.on_header_value = this._on_header_value; + this.settings.on_headers_complete = this._on_headers_complete; + this.settings.on_body = this._on_body; + this.settings.on_message_complete = this._on_message_complete; + this.settings.on_error = this._on_error; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java new file mode 100644 index 0000000000..a51f5b4cdb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java @@ -0,0 +1,13 @@ +package http_parser; + +public enum ParserType { +HTTP_REQUEST, HTTP_RESPONSE, HTTP_BOTH; + + public static ParserType parse(String s) { + if ("HTTP_REQUEST".equalsIgnoreCase(s)) { return HTTP_REQUEST; } + else if ("HTTP_RESPONSE".equalsIgnoreCase(s)) { return HTTP_RESPONSE; } + else if ("HTTP_BOTH".equalsIgnoreCase(s)) { return HTTP_BOTH; } + else { return null; } + } +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java new file mode 100644 index 0000000000..575003ad34 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java @@ -0,0 +1,111 @@ +package http_parser; + +import java.nio.ByteBuffer; + +public class Util { +// public static String toString(http_parser.lolevel.HTTPParser p) { +// StringBuilder builder = new StringBuilder(); +// +// // the stuff up to the break is ephermeral and only meaningful +// // while the parser is parsing. In general, this method is +// // probably only useful during debugging. +// +// builder.append("state :"); builder.append(p.state); builder.append("\n"); +// builder.append("header_state :"); builder.append(p.header_state); builder.append("\n"); +// builder.append("strict :"); builder.append(p.strict); builder.append("\n"); +// builder.append("index :"); builder.append(p.index); builder.append("\n"); +// builder.append("flags :"); builder.append(p.flags); builder.append("\n"); +// builder.append("nread :"); builder.append(p.nread); builder.append("\n"); +// builder.append("content_length :"); builder.append(p.content_length); builder.append("\n"); +// +// +// builder.append("type :"); builder.append(p.type); builder.append("\n"); +// builder.append("http_major :"); builder.append(p.http_major); builder.append("\n"); +// builder.append("http_minor :"); builder.append(p.http_minor); builder.append("\n"); +// builder.append("status_code :"); builder.append(p.status_code); builder.append("\n"); +// builder.append("method :"); builder.append(p.method); builder.append("\n"); +// builder.append("upgrade :"); builder.append(p.upgrade); builder.append("\n"); +// +// return builder.toString(); +// +// } + + public static String error (String mes, ByteBuffer b, int beginning) { + // the error message should look like this: + // + // Bla expected something, but it's not there (mes) + // GEt / HTTP 1_1 + // ............^. + // + // |----------------- 72 -------------------------| + + // This is ridiculously complicated and probably riddled with + // off-by-one errors, should be moved into high level interface. + // TODO. + + // also: need to keep track of the initial buffer position in + // execute so that we don't screw up any `mark()` that may have + // been set outside of our control to be nice. + + final int mes_width = 72; + int p = b.position(); // error position + int end = b.limit(); // this is the end + int m = end - beginning; // max mes length + + StringBuilder builder = new StringBuilder(); + int p_adj = p; + + byte [] orig = new byte[0]; + if (m <= mes_width) { + orig = new byte[m]; + b.position(beginning); + b.get(orig, 0, m); + p_adj = p-beginning; + + + } else { + // we'll need to trim bit off the beginning and/or end + orig = new byte[mes_width]; + // three possibilities: + // a.) plenty of stuff around p + // b.) plenty of stuff in front of p + // c.) plenty of stuff behind p + // CAN'T be not enough stuff aorund p in total, because + // m>meswidth (see if to this else) + + int before = p-beginning; + int after = end - p; + if ( (before > mes_width/2) && (after > mes_width/2)) { + // plenty of stuff in front of and behind error + p_adj = mes_width/2; + b.position(p - mes_width/2); + b.get(orig, 0, mes_width); + } else if (before <= mes_width/2) { + // take all of the begining. + b.position(beginning); + // and as much of the rest as possible + + b.get(orig, 0, mes_width); + + } else { + // plenty of stuff before + before = end-mes_width; + b.position(before); + p_adj = p - before; + b.get(orig, 0, mes_width); + } + } + + builder.append(new String(orig)); + builder.append("\n"); + for (int i = 0; i!= p_adj; ++i) { + builder.append("."); + } + builder.append("^"); + + + b.position(p); // restore position + return builder.toString(); + + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java new file mode 100644 index 0000000000..95c29b3e70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java @@ -0,0 +1,5 @@ +package http_parser.lolevel; + +public interface HTTPCallback { + public int cb (HTTPParser parser); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java new file mode 100644 index 0000000000..6cad156d15 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java @@ -0,0 +1,25 @@ +package http_parser.lolevel; + +import java.nio.ByteBuffer; + +public interface HTTPDataCallback { + /* + very raw and extremly foolhardy! DANGER! + The whole Buffer concept is difficult enough to grasp as it is, + we pass in a buffer with an arbitrary position. + + The interesting data is located at position pos and is len + bytes long. + + The contract of this callback is that the buffer is + returned in the state that it was passed in, so implementing + this require good citizenship, you'll need to remember the current + position, change the position to get at the data you're interested + in and then set the position back to how you found it... + + //TODO: there should be an abstract implementation that implements + cb as described above, marks it final an provides a new callback + with signature cb(byte[], int, int) + */ + public int cb(HTTPParser p, ByteBuffer buf, int pos, int len); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java new file mode 100644 index 0000000000..d38d9d4a02 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java @@ -0,0 +1,7 @@ +package http_parser.lolevel; + +import java.nio.ByteBuffer; + +public interface HTTPErrorCallback { + public void cb (HTTPParser parser, String mes, ByteBuffer buf, int initial_position); +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java new file mode 100644 index 0000000000..42022ecb85 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java @@ -0,0 +1,2161 @@ +package http_parser.lolevel; + +import java.nio.ByteBuffer; +import http_parser.HTTPException; +import http_parser.HTTPMethod; +import http_parser.HTTPParserUrl; +import http_parser.ParserType; +import static http_parser.lolevel.HTTPParser.C.*; +import static http_parser.lolevel.HTTPParser.State.*; + +public class HTTPParser { + /* lots of unsigned chars here, not sure what + to about them, `bytes` in java suck... */ + + ParserType type; + State state; + HState header_state; + boolean strict; + + int index; + int flags; // TODO + + int nread; + long content_length; + + int p_start; // updated each call to execute to indicate where the buffer was before we began calling it. + + /** READ-ONLY **/ + public int http_major; + public int http_minor; + public int status_code; /* responses only */ + public HTTPMethod method; /* requests only */ + + /* true = Upgrade header was present and the parser has exited because of that. + * false = No upgrade header present. + * Should be checked when http_parser_execute() returns in addition to + * error checking. + */ + public boolean upgrade; + + /** PUBLIC **/ + // TODO : this is used in c to maintain application state. + // is this even necessary? we have state in java ? + // consider + // Object data; /* A pointer to get hook to the "connection" or "socket" object */ + + + /* + * technically we could combine all of these (except for url_mark) into one + * variable, saving stack space, but it seems more clear to have them + * separated. + */ + int header_field_mark = -1; + int header_value_mark = -1; + int url_mark = -1; + int body_mark = -1; + + /** + * Construct a Parser for ParserType.HTTP_BOTH, meaning it + * determines whether it's parsing a request or a response. + */ + public HTTPParser() { + this(ParserType.HTTP_BOTH); + } + + /** + * Construct a Parser and initialise it to parse either + * requests or responses. + */ + public HTTPParser(ParserType type) { + this.type = type; + switch(type) { + case HTTP_REQUEST: + this.state = State.start_req; + break; + case HTTP_RESPONSE: + this.state = State.start_res; + break; + case HTTP_BOTH: + this.state = State.start_req_or_res; + break; + default: + throw new HTTPException("can't happen, invalid ParserType enum"); + } + } + + /* + * Utility to facilitate System.out.println style debugging (the way god intended) + */ + static void p(Object o) {System.out.println(o);} + + /** Comment from C version follows + * + * Our URL parser. + * + * This is designed to be shared by http_parser_execute() for URL validation, + * hence it has a state transition + byte-for-byte interface. In addition, it + * is meant to be embedded in http_parser_parse_url(), which does the dirty + * work of turning state transitions URL components for its API. + * + * This function should only be invoked with non-space characters. It is + * assumed that the caller cares about (and can detect) the transition between + * URL and non-URL states by looking for these. + */ + public State parse_url_char(byte ch) { + + int chi = ch & 0xff; // utility, ch without signedness for table lookups. + + if(SPACE == ch){ + throw new HTTPException("space as url char"); + } + + switch(state) { + case req_spaces_before_url: + /* Proxied requests are followed by scheme of an absolute URI (alpha). + * All methods except CONNECT are followed by '/' or '*'. + */ + if(SLASH == ch || STAR == ch){ + return req_path; + } + if(isAtoZ(ch)){ + return req_schema; + } + break; + case req_schema: + if(isAtoZ(ch)){ + return req_schema; + } + if(COLON == ch){ + return req_schema_slash; + } + break; + case req_schema_slash: + if(SLASH == ch){ + return req_schema_slash_slash; + } + break; + case req_schema_slash_slash: + if(SLASH == ch){ + return req_host_start; + } + break; + case req_host_start: + if (ch == (byte)'[') { + return req_host_v6_start; + } + if (isHostChar(ch)) { + return req_host; + } + break; + + case req_host: + if (isHostChar(ch)) { + return req_host; + } + + /* FALLTHROUGH */ + case req_host_v6_end: + switch (ch) { + case ':': + return req_port_start; + case '/': + return req_path; + case '?': + return req_query_string_start; + } + break; + + case req_host_v6: + if (ch == ']') { + return req_host_v6_end; + } + + /* FALLTHROUGH */ + case req_host_v6_start: + if (isHex(ch) || ch == ':') { + return req_host_v6; + } + break; + + case req_port: + switch (ch) { + case '/': + return req_path; + case '?': + return req_query_string_start; + } + + /* FALLTHROUGH */ + case req_port_start: + if (isDigit(ch)) { + return req_port; + } + break; + + case req_path: + if (isNormalUrlChar(chi)) { + return req_path; + } + switch (ch) { + case '?': + return req_query_string_start; + case '#': + return req_fragment_start; + } + + break; + + case req_query_string_start: + case req_query_string: + if (isNormalUrlChar(chi)) { + return req_query_string; + } + + switch (ch) { + case '?': + /* allow extra '?' in query string */ + return req_query_string; + + case '#': + return req_fragment_start; + } + + break; + + case req_fragment_start: + if (isNormalUrlChar(chi)) { + return req_fragment; + } + switch (ch) { + case '?': + return req_fragment; + + case '#': + return req_fragment_start; + } + break; + + case req_fragment: + if (isNormalUrlChar(ch)) { + return req_fragment; + } + + switch (ch) { + case '?': + case '#': + return req_fragment; + } + + break; + default: + break; + } + + /* We should never fall out of the switch above unless there's an error */ + return dead; + } + + /** Execute the parser with the currently available data contained in + * the buffer. The buffers position() and limit() need to be set + * correctly (obviously) and a will be updated approriately when the + * method returns to reflect the consumed data. + */ + public int execute(ParserSettings settings, ByteBuffer data) { + + int p = data.position(); + this.p_start = p; // this is used for pretty printing errors. + // and returning the amount of processed bytes. + + + // In case the headers don't provide information about the content + // length, `execute` needs to be called with an empty buffer to + // indicate that all the data has been send be the client/server, + // else there is no way of knowing the message is complete. + int len = (data.limit() - data.position()); + if (0 == len) { +// if (State.body_identity_eof == state) { +// settings.call_on_message_complete(this); +// } + switch (state) { + case body_identity_eof: + settings.call_on_message_complete(this); + return data.position() - this.p_start; + + case dead: + case start_req_or_res: + case start_res: + case start_req: + return data.position() - this.p_start; + + default: + // should we really consider this an error!? + throw new HTTPException("empty bytes! "+state); // error + } + } + + + // in case the _previous_ call to the parser only has data to get to + // the middle of certain fields, we need to update marks to point at + // the beginning of the current buffer. + switch (state) { + case header_field: + header_field_mark = p; + break; + case header_value: + header_value_mark = p; + break; + case req_path: + case req_schema: + case req_schema_slash: + case req_schema_slash_slash: + case req_host_start: + case req_host_v6_start: + case req_host_v6: + case req_host_v6_end: + case req_host: + case req_port_start: + case req_port: + case req_query_string_start: + case req_query_string: + case req_fragment_start: + case req_fragment: + url_mark = p; + break; + } + boolean reexecute = false; + int pe = 0; + byte ch = 0; + int chi = 0; + byte c = -1; + int to_read = 0; + + // this is where the work gets done, traverse the available data... + while (data.position() != data.limit() || reexecute) { +// p(state + ": r: " + reexecute + " :: " +p ); + + if(!reexecute){ + p = data.position(); + pe = data.limit(); + ch = data.get(); // the current character to process. + chi = ch & 0xff; // utility, ch without signedness for table lookups. + c = -1; // utility variably used for up- and downcasing etc. + to_read = 0; // used to keep track of how much of body, etc. is left to read + + if (parsing_header(state)) { + ++nread; + if (nread > HTTP_MAX_HEADER_SIZE) { + return error(settings, "possible buffer overflow", data); + } + } + } + reexecute = false; +// p(state + " ::: " + ch + " : " + (((CR == ch) || (LF == ch)) ? ch : ("'" + (char)ch + "'")) +": "+p ); + + switch (state) { + /* + * this state is used after a 'Connection: close' message + * the parser will error out if it reads another message + */ + case dead: + if (CR == ch || LF == ch){ + break; + } + return error(settings, "Connection already closed", data); + + + + case start_req_or_res: + if (CR == ch || LF == ch){ + break; + } + flags = 0; + content_length = -1; + + if (H == ch) { + state = State.res_or_resp_H; + } else { + type = ParserType.HTTP_REQUEST; + method = start_req_method_assign(ch); + if (null == method) { + return error(settings, "invalid method", data); + } + index = 1; + state = State.req_method; + } + settings.call_on_message_begin(this); + break; + + + + case res_or_resp_H: + if (T == ch) { + type = ParserType.HTTP_RESPONSE; + state = State.res_HT; + } else { + if (E != ch) { + return error(settings, "not E", data); + } + type = ParserType.HTTP_REQUEST; + method = HTTPMethod.HTTP_HEAD; + index = 2; + state = State.req_method; + } + break; + + + + case start_res: + flags = 0; + content_length = -1; + + switch(ch) { + case H: + state = State.res_H; + break; + case CR: + case LF: + break; + default: + return error(settings, "Not H or CR/LF", data); + } + + settings.call_on_message_begin(this); + break; + + + + case res_H: + if (strict && T != ch) { + return error(settings, "Not T", data); + } + state = State.res_HT; + break; + case res_HT: + if (strict && T != ch) { +return error(settings, "Not T2", data); + } + state = State.res_HTT; + break; + case res_HTT: + if (strict && P != ch) { +return error(settings, "Not P", data); + } + state = State.res_HTTP; + break; + case res_HTTP: + if (strict && SLASH != ch) { +return error(settings, "Not '/'", data); + } + state = State.res_first_http_major; + break; + + + + case res_first_http_major: + if (!isDigit(ch)) { +return error(settings, "Not a digit", data); + } + http_major = (int) ch - 0x30; + state = State.res_http_major; + break; + + /* major HTTP version or dot */ + case res_http_major: + if (DOT == ch) { + state = State.res_first_http_minor; + break; + } + if (!isDigit(ch)) { +return error(settings, "Not a digit", data); + } + http_major *= 10; + http_major += (ch - 0x30); + + if (http_major > 999) { +return error(settings, "invalid http major version: ", data); + } + break; + + /* first digit of minor HTTP version */ + case res_first_http_minor: + if (!isDigit(ch)) { +return error(settings, "Not a digit", data); + } + http_minor = (int)ch - 0x30; + state = State.res_http_minor; + break; + + /* minor HTTP version or end of request line */ + case res_http_minor: + if (SPACE == ch) { + state = State.res_first_status_code; + break; + } + if (!isDigit(ch)) { +return error(settings, "Not a digit", data); + } + http_minor *= 10; + http_minor += (ch - 0x30); + if (http_minor > 999) { +return error(settings, "invalid http minor version: ", data); + } + break; + + + + case res_first_status_code: + if (!isDigit(ch)) { + if (SPACE == ch) { + break; + } +return error(settings, "Not a digit (status code)", data); + } + status_code = (int)ch - 0x30; + state = State.res_status_code; + break; + + case res_status_code: + if (!isDigit(ch)) { + switch(ch) { + case SPACE: + state = State.res_status; + break; + case CR: + state = State.res_line_almost_done; + break; + case LF: + state = State.header_field_start; + break; + default: +return error(settings, "not a valid status code", data); + } + break; + } + status_code *= 10; + status_code += (int)ch - 0x30; + if (status_code > 999) { +return error(settings, "ridiculous status code:", data); + } + + if (status_code > 99) { + settings.call_on_status_complete(this); + } + break; + + case res_status: + /* the human readable status. e.g. "NOT FOUND" + * we are not humans so just ignore this + * we are not men, we are devo. */ + + if (CR == ch) { + state = State.res_line_almost_done; + break; + } + if (LF == ch) { + state = State.header_field_start; + break; + } + break; + + case res_line_almost_done: + if (strict && LF != ch) { +return error(settings, "not LF", data); + } + state = State.header_field_start; + break; + + + + case start_req: + if (CR==ch || LF == ch) { + break; + } + flags = 0; + content_length = -1; + + if(!isAtoZ(ch)){ + return error(settings, "invalid method", data); + } + + method = start_req_method_assign(ch); + if (null == method) { + return error(settings, "invalid method", data); + } + index = 1; + state = State.req_method; + + settings.call_on_message_begin(this); + break; + + + + case req_method: + if (0 == ch) { + return error(settings, "NULL in method", data); + } + + byte [] arr = method.bytes; + + if (SPACE == ch && index == arr.length) { + state = State.req_spaces_before_url; + } else if (arr[index] == ch) { + // wuhu! + } else if (HTTPMethod.HTTP_CONNECT == method) { + if (1 == index && H == ch) { + method = HTTPMethod.HTTP_CHECKOUT; + } else if (2 == index && P == ch) { + method = HTTPMethod.HTTP_COPY; + } + } else if (HTTPMethod.HTTP_MKCOL == method) { + if (1 == index && O == ch) { + method = HTTPMethod.HTTP_MOVE; + } else if (1 == index && E == ch) { + method = HTTPMethod.HTTP_MERGE; + } else if (1 == index && DASH == ch) { /* M-SEARCH */ + method = HTTPMethod.HTTP_MSEARCH; + } else if (2 == index && A == ch) { + method = HTTPMethod.HTTP_MKACTIVITY; + } + } else if (1 == index && HTTPMethod.HTTP_POST == method) { + if(R == ch) { + method = HTTPMethod.HTTP_PROPFIND; /* or HTTP_PROPPATCH */ + }else if(U == ch){ + method = HTTPMethod.HTTP_PUT; /* or HTTP_PURGE */ + }else if(A == ch){ + method = HTTPMethod.HTTP_PATCH; + } + } else if (2 == index) { + if(HTTPMethod.HTTP_PUT == method) { + if(R == ch){ + method = HTTPMethod.HTTP_PURGE; + } + }else if(HTTPMethod.HTTP_UNLOCK == method){ + if(S == ch){ + method = HTTPMethod.HTTP_UNSUBSCRIBE; + } + } + }else if(4 == index && HTTPMethod.HTTP_PROPFIND == method && P == ch){ + method = HTTPMethod.HTTP_PROPPATCH; + } else { + return error(settings, "Invalid HTTP method", data); + } + + ++index; + break; + + + + /******************* URL *******************/ + case req_spaces_before_url: + if (SPACE == ch) { + break; + } + url_mark = p; + if(HTTPMethod.HTTP_CONNECT == method){ + state = req_host_start; + } + + state = parse_url_char(ch); + if(state == dead){ + return error(settings, "Invalid something", data); + } + break; + + + case req_schema: + case req_schema_slash: + case req_schema_slash_slash: + case req_host_start: + case req_host_v6_start: + case req_host_v6: + case req_port_start: + switch (ch) { + /* No whitespace allowed here */ + case SPACE: + case CR: + case LF: + return error(settings, "unexpected char in path", data); + default: + state = parse_url_char(ch); + if(dead == state){ + return error(settings, "unexpected char in path", data); + } + } + break; + + case req_host: + case req_host_v6_end: + case req_port: + case req_path: + case req_query_string_start: + case req_query_string: + case req_fragment_start: + case req_fragment: + switch (ch) { + case SPACE: + settings.call_on_url(this, data, url_mark, p-url_mark); + settings.call_on_path(this, data, url_mark, p - url_mark); + url_mark = -1; + state = State.req_http_start; + break; + case CR: + case LF: + http_major = 0; + http_minor = 9; + state = (CR == ch) ? req_line_almost_done : header_field_start; + settings.call_on_url(this, data, url_mark, p-url_mark); //TODO check params!!! + settings.call_on_path(this, data, url_mark, p-url_mark); + url_mark = -1; + break; + default: + state = parse_url_char(ch); + if(dead == state){ + return error(settings, "unexpected char in path", data); + } + } + break; + /******************* URL *******************/ + + + + /******************* HTTP 1.1 *******************/ + case req_http_start: + switch (ch) { + case H: + state = State.req_http_H; + break; + case SPACE: + break; + default: + return error(settings, "error in req_http_H", data); + } + break; + + case req_http_H: + if (strict && T != ch) { + return error(settings, "unexpected char", data); + } + state = State.req_http_HT; + break; + + case req_http_HT: + if (strict && T != ch) { + return error(settings, "unexpected char", data); + } + state = State.req_http_HTT; + break; + + case req_http_HTT: + if (strict && P != ch) { + return error(settings, "unexpected char", data); + } + state = State.req_http_HTTP; + break; + + case req_http_HTTP: + if (strict && SLASH != ch) { + return error(settings, "unexpected char", data); + } + state = req_first_http_major; + break; + + /* first digit of major HTTP version */ + case req_first_http_major: + if (!isDigit(ch)) { +return error(settings, "non digit in http major", data); + } + http_major = (int)ch - 0x30; + state = State.req_http_major; + break; + + /* major HTTP version or dot */ + case req_http_major: + if (DOT == ch) { + state = State.req_first_http_minor; + break; + } + + if (!isDigit(ch)) { +return error(settings, "non digit in http major", data); + } + + http_major *= 10; + http_major += (int)ch - 0x30; + + if (http_major > 999) { +return error(settings, "ridiculous http major", data); + }; + break; + + /* first digit of minor HTTP version */ + case req_first_http_minor: + if (!isDigit(ch)) { +return error(settings, "non digit in http minor", data); + } + http_minor = (int)ch - 0x30; + state = State.req_http_minor; + break; + + case req_http_minor: + if (ch == CR) { + state = State.req_line_almost_done; + break; + } + + if (ch == LF) { + state = State.header_field_start; + break; + } + + /* XXX allow spaces after digit? */ + + if (!isDigit(ch)) { +return error(settings, "non digit in http minor", data); + } + + http_minor *= 10; + http_minor += (int)ch - 0x30; + + + if (http_minor > 999) { +return error(settings, "ridiculous http minor", data); + }; + + break; + + /* end of request line */ + case req_line_almost_done: + { + if (ch != LF) { +return error(settings, "missing LF after request line", data); + } + state = header_field_start; + break; + } + + /******************* HTTP 1.1 *******************/ + + + + /******************* Header *******************/ + case header_field_start: + { + if (ch == CR) { + state = headers_almost_done; + break; + } + + if (ch == LF) { + /* they might be just sending \n instead of \r\n so this would be + * the second \n to denote the end of headers*/ + state = State.headers_almost_done; + reexecute = true; + break; + } + + c = token(ch); + + if (0 == c) { + return error(settings, "invalid char in header:", data); + } + + header_field_mark = p; + + index = 0; + state = State.header_field; + + switch (c) { + case C: + header_state = HState.C; + break; + + case P: + header_state = HState.matching_proxy_connection; + break; + + case T: + header_state = HState.matching_transfer_encoding; + break; + + case U: + header_state = HState.matching_upgrade; + break; + + default: + header_state = HState.general; + break; + } + break; + } + + + + case header_field: + { + c = token(ch); + if (0 != c) { + switch (header_state) { + case general: + break; + + case C: + index++; + header_state = (O == c ? HState.CO : HState.general); + break; + + case CO: + index++; + header_state = (N == c ? HState.CON : HState.general); + break; + + case CON: + index++; + switch (c) { + case N: + header_state = HState.matching_connection; + break; + case T: + header_state = HState.matching_content_length; + break; + default: + header_state = HState.general; + break; + } + break; + + /* connection */ + + case matching_connection: + index++; + if (index > CONNECTION.length || c != CONNECTION[index]) { + header_state = HState.general; + } else if (index == CONNECTION.length-1) { + header_state = HState.connection; + } + break; + + /* proxy-connection */ + + case matching_proxy_connection: + index++; + if (index > PROXY_CONNECTION.length || c != PROXY_CONNECTION[index]) { + header_state = HState.general; + } else if (index == PROXY_CONNECTION.length-1) { + header_state = HState.connection; + } + break; + + /* content-length */ + + case matching_content_length: + index++; + if (index > CONTENT_LENGTH.length || c != CONTENT_LENGTH[index]) { + header_state = HState.general; + } else if (index == CONTENT_LENGTH.length-1) { + header_state = HState.content_length; + } + break; + + /* transfer-encoding */ + + case matching_transfer_encoding: + index++; + if (index > TRANSFER_ENCODING.length || c != TRANSFER_ENCODING[index]) { + header_state = HState.general; + } else if (index == TRANSFER_ENCODING.length-1) { + header_state = HState.transfer_encoding; + } + break; + + /* upgrade */ + + case matching_upgrade: + index++; + if (index > UPGRADE.length || c != UPGRADE[index]) { + header_state = HState.general; + } else if (index == UPGRADE.length-1) { + header_state = HState.upgrade; + } + break; + + case connection: + case content_length: + case transfer_encoding: + case upgrade: + if (SPACE != ch) header_state = HState.general; + break; + + default: +return error(settings, "Unknown Header State", data); + } // switch: header_state + break; + } // 0 != c + + if (COLON == ch) { + settings.call_on_header_field(this, data, header_field_mark, p-header_field_mark); + header_field_mark = -1; + + state = State.header_value_start; + break; + } + + if (CR == ch) { + state = State.header_almost_done; + settings.call_on_header_field(this, data, header_field_mark, p-header_field_mark); + + header_field_mark = -1; + break; + } + + if (ch == LF) { + settings.call_on_header_field(this, data, header_field_mark, p-header_field_mark); + header_field_mark = -1; + + state = State.header_field_start; + break; + } + +return error(settings, "invalid header field", data); + } + + + + case header_value_start: + { + if ((SPACE == ch) || (TAB == ch)) break; + + header_value_mark = p; + + state = State.header_value; + index = 0; + + + if (CR == ch) { + settings.call_on_header_value(this, data, header_value_mark, p-header_value_mark); + header_value_mark = -1; + + header_state = HState.general; + state = State.header_almost_done; + break; + } + + if (LF == ch) { + settings.call_on_header_value(this, data, header_value_mark, p-header_value_mark); + header_value_mark = -1; + + state = State.header_field_start; + break; + } + + + c = upper(ch); + + switch (header_state) { + case upgrade: + flags |= F_UPGRADE; + header_state = HState.general; + break; + + case transfer_encoding: + /* looking for 'Transfer-Encoding: chunked' */ + if (C == c) { + header_state = HState.matching_transfer_encoding_chunked; + } else { + header_state = HState.general; + } + break; + + case content_length: + if (!isDigit(ch)) { +return error(settings, "Content-Length not numeric", data); + } + content_length = (int)ch - 0x30; + break; + + case connection: + /* looking for 'Connection: keep-alive' */ + if (K == c) { + header_state = HState.matching_connection_keep_alive; + /* looking for 'Connection: close' */ + } else if (C == c) { + header_state = HState.matching_connection_close; + } else { + header_state = HState.general; + } + break; + + default: + header_state = HState.general; + break; + } + break; + } // header value start + + + + case header_value: + { + + if (CR == ch) { + settings.call_on_header_value(this, data, header_value_mark, p-header_value_mark); + header_value_mark = -1; + + state = State.header_almost_done; + break; + } + + if (LF == ch) { + settings.call_on_header_value(this, data, header_value_mark, p-header_value_mark); + header_value_mark = -1; + state = header_almost_done; + reexecute = true; + break; + } + + c = upper(ch); + switch (header_state) { + case general: + break; + + case connection: + case transfer_encoding: +return error(settings, "Shouldn't be here", data); + + case content_length: + if (SPACE == ch) { + break; + } + if (!isDigit(ch)) { +return error(settings, "Content-Length not numeric", data); + } + + long t = content_length; + t *= 10; + t += (long)ch - 0x30; + + /* Overflow? */ + // t will wrap and become negative ... + if (t < content_length) { + return error(settings, "Invalid content length", data); + } + content_length = t; + break; + + /* Transfer-Encoding: chunked */ + case matching_transfer_encoding_chunked: + index++; + if (index > CHUNKED.length || c != CHUNKED[index]) { + header_state = HState.general; + } else if (index == CHUNKED.length-1) { + header_state = HState.transfer_encoding_chunked; + } + break; + + /* looking for 'Connection: keep-alive' */ + case matching_connection_keep_alive: + index++; + if (index > KEEP_ALIVE.length || c != KEEP_ALIVE[index]) { + header_state = HState.general; + } else if (index == KEEP_ALIVE.length-1) { + header_state = HState.connection_keep_alive; + } + break; + + /* looking for 'Connection: close' */ + case matching_connection_close: + index++; + if (index > CLOSE.length || c != CLOSE[index]) { + header_state = HState.general; + } else if (index == CLOSE.length-1) { + header_state = HState.connection_close; + } + break; + + case transfer_encoding_chunked: + case connection_keep_alive: + case connection_close: + if (SPACE != ch) header_state = HState.general; + break; + + default: + state = State.header_value; + header_state = HState.general; + break; + } + break; + } // header_value + + + + case header_almost_done: + if (!header_almost_done(ch)) { + return error(settings, "incorrect header ending, expecting LF", data); + } + break; + + case header_value_lws: + if (SPACE == ch || TAB == ch ){ + state = header_value_start; + } else { + state = header_field_start; + reexecute = true; + } + break; + + case headers_almost_done: + if (LF != ch) { + return error(settings, "header not properly completed", data); + } + if (0 != (flags & F_TRAILING)) { + /* End of a chunked request */ + state = new_message(); + settings.call_on_headers_complete(this); + settings.call_on_message_complete(this); + break; + } + + state = headers_done; + + if (0 != (flags & F_UPGRADE) || HTTPMethod.HTTP_CONNECT == method) { + upgrade = true; + } + + /* Here we call the headers_complete callback. This is somewhat + * different than other callbacks because if the user returns 1, we + * will interpret that as saying that this message has no body. This + * is needed for the annoying case of recieving a response to a HEAD + * request. + */ + + /* (responses to HEAD request contain a CONTENT-LENGTH header + * but no content) + * + * Consider what to do here: I don't like the idea of the callback + * interface having a different contract in the case of HEAD + * responses. The alternatives would be either to: + * + * a.) require the header_complete callback to implement a different + * interface or + * + * b.) provide an overridden execute(bla, bla, boolean + * parsingHeader) implementation ... + */ + + /*TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO */ + if (null != settings.on_headers_complete) { + settings.call_on_headers_complete(this); + //return; + } + + // if (null != settings.on_headers_complete) { + // switch (settings.on_headers_complete.cb(parser)) { + // case 0: + // break; + // + // case 1: + // flags |= F_SKIPBODY; + // break; + // + // default: + // return p - data; /* Error */ // TODO // RuntimeException ? + // } + // } + reexecute = true; + break; + + case headers_done: + if (strict && (LF != ch)) { + return error(settings, "STRICT CHECK", data); //TODO correct error msg + } + + nread = 0; + + // Exit, the rest of the connect is in a different protocol. + if (upgrade) { + state = new_message(); + settings.call_on_message_complete(this); + return data.position()-this.p_start; + } + + if (0 != (flags & F_SKIPBODY)) { + state = new_message(); + settings.call_on_message_complete(this); + } else if (0 != (flags & F_CHUNKED)) { + /* chunked encoding - ignore Content-Length header */ + state = State.chunk_size_start; + } else { + if (content_length == 0) { + /* Content-Length header given but zero: Content-Length: 0\r\n */ + state = new_message(); + settings.call_on_message_complete(this); + } else if (content_length != -1) { + /* Content-Length header given and non-zero */ + state = State.body_identity; + } else { + if (type == ParserType.HTTP_REQUEST || !http_message_needs_eof()) { + /* Assume content-length 0 - read the next */ + state = new_message(); + settings.call_on_message_complete(this); + } else { + /* Read body until EOF */ + state = State.body_identity_eof; + } + } + } + + break; + /******************* Header *******************/ + + + + + /******************* Body *******************/ + case body_identity: + to_read = min(pe - p, content_length); //TODO change to use buffer? + body_mark = p; + + if (to_read > 0) { + settings.call_on_body(this, data, p, to_read); + data.position(p+to_read); + content_length -= to_read; + + if (content_length == 0) { + state = message_done; + reexecute = true; + } + } + break; + + + + case body_identity_eof: + to_read = pe - p; // TODO change to use buffer ? + if (to_read > 0) { + settings.call_on_body(this, data, p, to_read); + data.position(p+to_read); + } + break; + + case message_done: + state = new_message(); + settings.call_on_message_complete(this); + break; + /******************* Body *******************/ + + + + /******************* Chunk *******************/ + case chunk_size_start: + if (1 != this.nread) { +return error(settings, "nread != 1 (chunking)", data); + + } + if (0 == (flags & F_CHUNKED)) { +return error(settings, "not chunked", data); + } + + c = UNHEX[chi]; + if (c == -1) { +return error(settings, "invalid hex char in chunk content length", data); + } + content_length = c; + state = State.chunk_size; + break; + + + + case chunk_size: + if (0 == (flags & F_CHUNKED)) { + return error(settings, "not chunked", data); + } + + if (CR == ch) { + state = State.chunk_size_almost_done; + break; + } + + c = UNHEX[chi]; + + if (c == -1) { + if (SEMI == ch || SPACE == ch) { + state = State.chunk_parameters; + break; + } + return error(settings, "invalid hex char in chunk content length", data); + } + long t = content_length; + + t *= 16; + t += c; + if(t < content_length){ + return error(settings, "invalid content length", data); + } + content_length = t; + break; + + + + case chunk_parameters: + if (0 == (flags & F_CHUNKED)) { +return error(settings, "not chunked", data); + } + /* just ignore this shit. TODO check for overflow */ + if (CR == ch) { + state = State.chunk_size_almost_done; + break; + } + break; + + + + case chunk_size_almost_done: + if (0 == (flags & F_CHUNKED)) { +return error(settings, "not chunked", data); + } + if (strict && LF != ch) { +return error(settings, "expected LF at end of chunk size", data); + } + + this.nread = 0; + + if (0 == content_length) { + flags |= F_TRAILING; + state = State.header_field_start; + } else { + state = State.chunk_data; + } + break; + + + + case chunk_data: + //TODO Apply changes from C version for s_chunk_data + if (0 == (flags & F_CHUNKED)) { + return error(settings, "not chunked", data); + } + + to_read = min(pe-p, content_length); + if (to_read > 0) { + settings.call_on_body(this, data, p, to_read); + data.position(p+to_read); + } + + if (to_read == content_length) { + state = State.chunk_data_almost_done; + } + + content_length -= to_read; + break; + + + + case chunk_data_almost_done: + if (0 == (flags & F_CHUNKED)) { +return error(settings, "not chunked", data); + } + if (strict && CR != ch) { +return error(settings, "chunk data terminated incorrectly, expected CR", data); + } + state = State.chunk_data_done; + //TODO CALLBACK_DATA(body) + // settings.call_on_body(this, data,p,?); + break; + + + + case chunk_data_done: + if (0 == (flags & F_CHUNKED)) { +return error(settings, "not chunked", data); + } + if (strict && LF != ch) { +return error(settings, "chunk data terminated incorrectly, expected LF", data); + } + state = State.chunk_size_start; + break; + /******************* Chunk *******************/ + + + + default: +return error(settings, "unhandled state", data); + + } // switch + } // while + + p = data.position(); + + + /* Reaching this point assumes that we only received part of a + * message, inform the callbacks about the progress made so far*/ + + settings.call_on_header_field(this, data, header_field_mark, p-header_field_mark); + settings.call_on_header_value(this, data, header_value_mark, p-header_value_mark); + settings.call_on_url (this, data, url_mark, p-url_mark); + settings.call_on_path (this, data, url_mark, p-url_mark); + + return data.position()-this.p_start; + } // execute + + int error (ParserSettings settings, String mes, ByteBuffer data) { + settings.call_on_error(this, mes, data, this.p_start); + this.state = State.dead; + return data.position()-this.p_start; + } + + public boolean http_message_needs_eof() { + if(type == ParserType.HTTP_REQUEST){ + return false; + } + /* See RFC 2616 section 4.4 */ + if ((status_code / 100 == 1) || /* 1xx e.g. Continue */ + (status_code == 204) || /* No Content */ + (status_code == 304) || /* Not Modified */ + (flags & F_SKIPBODY) != 0) { /* response to a HEAD request */ + return false; + } + if ((flags & F_CHUNKED) != 0 || content_length != -1) { + return false; + } + + return true; + } + + /* If http_should_keep_alive() in the on_headers_complete or + * on_message_complete callback returns true, then this will be should be + * the last message on the connection. + * If you are the server, respond with the "Connection: close" header. + * If you are the client, close the connection. + */ + public boolean http_should_keep_alive() { + if (http_major > 0 && http_minor > 0) { + /* HTTP/1.1 */ + if ( 0 != (flags & F_CONNECTION_CLOSE) ) { + return false; + } + } else { + /* HTTP/1.0 or earlier */ + if ( 0 == (flags & F_CONNECTION_KEEP_ALIVE) ) { + return false; + } + } + return !http_message_needs_eof(); + } + + public int parse_url(ByteBuffer data, boolean is_connect, HTTPParserUrl u) { + + UrlFields uf = UrlFields.UF_MAX; + UrlFields old_uf = UrlFields.UF_MAX; + u.port = 0; + u.field_set = 0; + state = (is_connect ? State.req_host_start : State.req_spaces_before_url); + int p_init = data.position(); + int p = 0; + byte ch = 0; + while (data.position() != data.limit()) { + p = data.position(); + ch = data.get(); + state = parse_url_char(ch); + switch(state) { + case dead: + return 1; + + /* Skip delimeters */ + case req_schema_slash: + case req_schema_slash_slash: + case req_host_start: + case req_host_v6_start: + case req_host_v6_end: + case req_port_start: + case req_query_string_start: + case req_fragment_start: + continue; + + case req_schema: + uf = UrlFields.UF_SCHEMA; + break; + + case req_host: + case req_host_v6: + uf = UrlFields.UF_HOST; + break; + + case req_port: + uf = UrlFields.UF_PORT; + break; + + case req_path: + uf = UrlFields.UF_PATH; + break; + + case req_query_string: + uf = UrlFields.UF_QUERY; + break; + + case req_fragment: + uf = UrlFields.UF_FRAGMENT; + break; + + default: + return 1; + } + /* Nothing's changed; soldier on */ + if (uf == old_uf) { + u.field_data[uf.getIndex()].len++; + continue; + } + + u.field_data[uf.getIndex()].off = p - p_init; + u.field_data[uf.getIndex()].len = 1; + + u.field_set |= (1 << uf.getIndex()); + old_uf = uf; + + } + + /* CONNECT requests can only contain "hostname:port" */ + if (is_connect && u.field_set != ((1 << UrlFields.UF_HOST.getIndex())|(1 << UrlFields.UF_PORT.getIndex()))) { + return 1; + } + + /* Make sure we don't end somewhere unexpected */ + switch (state) { + case req_host_v6_start: + case req_host_v6: + case req_host_v6_end: + case req_host: + case req_port_start: + return 1; + default: + break; + } + + if (0 != (u.field_set & (1 << UrlFields.UF_PORT.getIndex()))) { + /* Don't bother with endp; we've already validated the string */ + int v = strtoi(data, p_init + u.field_data[UrlFields.UF_PORT.getIndex()].off); + + /* Ports have a max value of 2^16 */ + if (v > 0xffff) { + return 1; + } + + u.port = v; + } + + return 0; + } + + //hacky reimplementation of srttoul, tailored for our simple needs + //we only need to parse port val, so no negative values etc + int strtoi(ByteBuffer data, int start_pos) { + data.position(start_pos); + byte ch; + String str = ""; + while(data.position() < data.limit()) { + ch = data.get(); + if(Character.isWhitespace((char)ch)){ + continue; + } + if(isDigit(ch)){ + str = str + (char)ch; //TODO replace with something less hacky + }else{ + break; + } + } + return Integer.parseInt(str); + } + + boolean isDigit(byte b) { + if (b >= 0x30 && b <=0x39) { + return true; + } + return false; + } + + boolean isHex(byte b) { + return isDigit(b) || (lower(b) >= 0x61 /*a*/ && lower(b) <= 0x66 /*f*/); + } + + boolean isAtoZ(byte b) { + byte c = lower(b); + return (c>= 0x61 /*a*/ && c <= 0x7a /*z*/); + } + + + byte lower (byte b) { + return (byte)(b|0x20); + } + + byte upper(byte b) { + char c = (char)(b); + return (byte)Character.toUpperCase(c); + } + + byte token(byte b) { + if(!strict){ + return (b == (byte)' ') ? (byte)' ' : (byte)tokens[b] ; + }else{ + return (byte)tokens[b]; + } + } + + boolean isHostChar(byte ch){ + if(!strict){ + return (isAtoZ(ch)) || isDigit(ch) || DOT == ch || DASH == ch || UNDER == ch ; + }else{ + return (isAtoZ(ch)) || isDigit(ch) || DOT == ch || DASH == ch; + } + } + + boolean isNormalUrlChar(int chi) { + if(!strict){ + return (chi > 0x80) || normal_url_char[chi]; + }else{ + return normal_url_char[chi]; + } + } + + HTTPMethod start_req_method_assign(byte c){ + switch (c) { + case C: return HTTPMethod.HTTP_CONNECT; /* or COPY, CHECKOUT */ + case D: return HTTPMethod.HTTP_DELETE; + case G: return HTTPMethod.HTTP_GET; + case H: return HTTPMethod.HTTP_HEAD; + case L: return HTTPMethod.HTTP_LOCK; + case M: return HTTPMethod.HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH */ + case N: return HTTPMethod.HTTP_NOTIFY; + case O: return HTTPMethod.HTTP_OPTIONS; + case P: return HTTPMethod.HTTP_POST; /* or PROPFIND|PROPPATCH|PUT|PATCH|PURGE */ + case R: return HTTPMethod.HTTP_REPORT; + case S: return HTTPMethod.HTTP_SUBSCRIBE; + case T: return HTTPMethod.HTTP_TRACE; + case U: return HTTPMethod.HTTP_UNLOCK; /* or UNSUBSCRIBE */ + } + return null; // ugh. + } + + boolean header_almost_done(byte ch) { + if (strict && LF != ch) { + return false; + } + + state = State.header_value_lws; + // TODO java enums support some sort of bitflag mechanism !? + switch (header_state) { + case connection_keep_alive: + flags |= F_CONNECTION_KEEP_ALIVE; + break; + case connection_close: + flags |= F_CONNECTION_CLOSE; + break; + case transfer_encoding_chunked: + flags |= F_CHUNKED; + break; + default: + break; + } + return true; + } + +// boolean headers_almost_done (byte ch, ParserSettings settings) { +// } // headers_almost_done + + + final int min (int a, int b) { + return a < b ? a : b; + } + + final int min (int a, long b) { + return a < b ? a : (int)b; + } + + /* probably not the best place to hide this ... */ + public boolean HTTP_PARSER_STRICT; + State new_message() { + if (HTTP_PARSER_STRICT){ + return http_should_keep_alive() ? start_state() : State.dead; + } else { + return start_state(); + } + + } + + State start_state() { + return type == ParserType.HTTP_REQUEST ? State.start_req : State.start_res; + } + + + boolean parsing_header(State state) { + + switch (state) { + case chunk_data : + case chunk_data_almost_done : + case chunk_data_done : + case body_identity : + case body_identity_eof : + case message_done : + return false; + + } + return true; + } + + /* "Dial C for Constants" */ + static class C { + static final int HTTP_MAX_HEADER_SIZE = 80 * 1024; + + static final int F_CHUNKED = 1 << 0; + static final int F_CONNECTION_KEEP_ALIVE = 1 << 1; + static final int F_CONNECTION_CLOSE = 1 << 2; + static final int F_TRAILING = 1 << 3; + static final int F_UPGRADE = 1 << 4; + static final int F_SKIPBODY = 1 << 5; + + static final byte [] UPCASE = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x2d,0x00,0x2f, + 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, + 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x00,0x00,0x00,0x00,0x5f, + 0x00,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, + 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57, 0x58,0x59,0x5a,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + }; + static final byte [] CONNECTION = { + 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + }; + static final byte [] PROXY_CONNECTION = { + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x2d, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + }; + static final byte [] CONTENT_LENGTH = { + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x2d, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, + }; + static final byte [] TRANSFER_ENCODING = { + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x2d, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, + }; + static final byte [] UPGRADE = { + 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, + }; + static final byte [] CHUNKED = { + 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x45, 0x44, + }; + static final byte [] KEEP_ALIVE = { + 0x4b, 0x45, 0x45, 0x50, 0x2d, 0x41, 0x4c, 0x49, 0x56, 0x45, + }; + static final byte [] CLOSE = { + 0x43, 0x4c, 0x4f, 0x53, 0x45, + }; + + /* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ + + static final char [] tokens = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0, 0, 0, 0, 0, 0, 0, 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0, '!', 0, '#', '$', '%', '&', '\'', +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 0, 0, '*', '+', 0, '-', '.', 0 , +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + '0', '1', '2', '3', '4', '5', '6', '7', +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + '8', '9', 0, 0, 0, 0, 0, 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 0, 'A', 'B', 'C', 'D', 'E', 'F', 'G', +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 'X', 'Y', 'Z', 0, 0, 0, 0, '_', +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + 0, 'A', 'B', 'C', 'D', 'E', 'F', 'G', +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 'X', 'Y', 'Z', 0, '|', 0, '~', 0, +/* hi bit set, not ascii */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, }; + + static final byte [] UNHEX = + { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 + }; + + static final boolean [] normal_url_char = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + false, false, false, false, false, false, false, false, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + false, false, false, false, false, false, false, false, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + false, false, false, false, false, false, false, false, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + false, false, false, false, false, false, false, false, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + false, true, true, false, true, true, true, true, +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + true, true, true, true, true, true, true, true, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + true, true, true, true, true, true, true, true, +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + true, true, true, true, true, true, true, false, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + true, true, true, true, true, true, true, true, +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + true, true, true, true, true, true, true, true, +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + true, true, true, true, true, true, true, true, +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + true, true, true, true, true, true, true, true, +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + true, true, true, true, true, true, true, true, +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + true, true, true, true, true, true, true, true, +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + true, true, true, true, true, true, true, true, +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + true, true, true, true, true, true, true, false, + +/* hi bit set, not ascii */ +/* Remainder of non-ASCII range are accepted as-is to support implicitly UTF-8 + * encoded paths. This is out of spec, but clients generate this and most other + * HTTP servers support it. We should, too. */ + + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + + }; + + public static final byte A = 0x41; + public static final byte B = 0x42; + public static final byte C = 0x43; + public static final byte D = 0x44; + public static final byte E = 0x45; + public static final byte F = 0x46; + public static final byte G = 0x47; + public static final byte H = 0x48; + public static final byte I = 0x49; + public static final byte J = 0x4a; + public static final byte K = 0x4b; + public static final byte L = 0x4c; + public static final byte M = 0x4d; + public static final byte N = 0x4e; + public static final byte O = 0x4f; + public static final byte P = 0x50; + public static final byte Q = 0x51; + public static final byte R = 0x52; + public static final byte S = 0x53; + public static final byte T = 0x54; + public static final byte U = 0x55; + public static final byte V = 0x56; + public static final byte W = 0x57; + public static final byte X = 0x58; + public static final byte Y = 0x59; + public static final byte Z = 0x5a; + public static final byte UNDER = 0x5f; + public static final byte CR = 0x0d; + public static final byte LF = 0x0a; + public static final byte DOT = 0x2e; + public static final byte SPACE = 0x20; + public static final byte TAB = 0x09; + public static final byte SEMI = 0x3b; + public static final byte COLON = 0x3a; + public static final byte HASH = 0x23; + public static final byte QMARK = 0x3f; + public static final byte SLASH = 0x2f; + public static final byte DASH = 0x2d; + public static final byte STAR = 0x2a; + public static final byte NULL = 0x00; + } + + enum State { + + dead + + , start_req_or_res + , res_or_resp_H + , start_res + , res_H + , res_HT + , res_HTT + , res_HTTP + , res_first_http_major + , res_http_major + , res_first_http_minor + , res_http_minor + , res_first_status_code + , res_status_code + , res_status + , res_line_almost_done + + , start_req + + , req_method + , req_spaces_before_url + , req_schema + , req_schema_slash + , req_schema_slash_slash + , req_host_start + , req_host_v6_start + , req_host_v6 + , req_host_v6_end + , req_host + , req_port_start + , req_port + , req_path + , req_query_string_start + , req_query_string + , req_fragment_start + , req_fragment + , req_http_start + , req_http_H + , req_http_HT + , req_http_HTT + , req_http_HTTP + , req_first_http_major + , req_http_major + , req_first_http_minor + , req_http_minor + , req_line_almost_done + + , header_field_start + , header_field + , header_value_start + , header_value + , header_value_lws + + , header_almost_done + + , chunk_size_start + , chunk_size + , chunk_parameters + , chunk_size_almost_done + + , headers_almost_done + , headers_done +// This space intentionally not left blank, comment from c, for orientation... +// the c version uses <= s_header_almost_done in java, we list the states explicitly +// in `parsing_header()` +/* Important: 's_headers_done' must be the last 'header' state. All + * states beyond this must be 'body' states. It is used for overflow + * checking. See the PARSING_HEADER() macro. + */ + , chunk_data + , chunk_data_almost_done + , chunk_data_done + + , body_identity + , body_identity_eof + , message_done + + } + enum HState { + general + , C + , CO + , CON + + , matching_connection + , matching_proxy_connection + , matching_content_length + , matching_transfer_encoding + , matching_upgrade + + , connection + , content_length + , transfer_encoding + , upgrade + + , matching_transfer_encoding_chunked + , matching_connection_keep_alive + , matching_connection_close + + , transfer_encoding_chunked + , connection_keep_alive + , connection_close + } + public enum UrlFields { + UF_SCHEMA(0) + , UF_HOST(1) + , UF_PORT(2) + , UF_PATH(3) + , UF_QUERY(4) + , UF_FRAGMENT(5) + , UF_MAX(6); + + + private final int index; + + private UrlFields(int index) { + this.index = index; + } + public int getIndex() { + return index; + } + + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java new file mode 100644 index 0000000000..1ebdd4f804 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java @@ -0,0 +1,83 @@ +package http_parser.lolevel; +import java.nio.ByteBuffer; +import http_parser.HTTPException; +public class ParserSettings { + + public HTTPCallback on_message_begin; + public HTTPDataCallback on_path; + public HTTPDataCallback on_query_string; + public HTTPDataCallback on_url; + public HTTPDataCallback on_fragment; + public HTTPCallback on_status_complete; + public HTTPDataCallback on_header_field; + public HTTPDataCallback on_header_value; + public HTTPCallback on_headers_complete; + public HTTPDataCallback on_body; + public HTTPCallback on_message_complete; + public HTTPErrorCallback on_error; + + void call_on_message_begin (HTTPParser p) { + call_on(on_message_begin, p); + } + + void call_on_message_complete (HTTPParser p) { + call_on(on_message_complete, p); + } + + // this one is a little bit different: + // the current `position` of the buffer is the location of the + // error, `ini_pos` indicates where the position of + // the buffer when it was passed to the `execute` method of the parser, i.e. + // using this information and `limit` we'll know all the valid data + // in the buffer around the error we can use to print pretty error + // messages. + void call_on_error (HTTPParser p, String mes, ByteBuffer buf, int ini_pos) { + if (null != on_error) { + on_error.cb(p, mes, buf, ini_pos); + return; + } + // if on_error gets called it MUST throw an exception, else the parser + // will attempt to continue parsing, which it can't because it's + // in an invalid state. + throw new HTTPException(mes); + } + + void call_on_header_field (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_header_field, p, buf, pos, len); + } + void call_on_query_string (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_query_string, p, buf, pos, len); + } + void call_on_fragment (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_fragment, p, buf, pos, len); + } + void call_on_status_complete(HTTPParser p) { + call_on(on_status_complete, p); + } + void call_on_path (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_path, p, buf, pos, len); + } + void call_on_header_value (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_header_value, p, buf, pos, len); + } + void call_on_url (HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_url, p, buf, pos, len); + } + void call_on_body(HTTPParser p, ByteBuffer buf, int pos, int len) { + call_on(on_body, p, buf, pos, len); + } + void call_on_headers_complete(HTTPParser p) { + call_on(on_headers_complete, p); + } + void call_on (HTTPCallback cb, HTTPParser p) { + // cf. CALLBACK2 macro + if (null != cb) { + cb.cb(p); + } + } + void call_on (HTTPDataCallback cb, HTTPParser p, ByteBuffer buf, int pos, int len) { + if (null != cb && -1 != pos) { + cb.cb(p,buf,pos,len); + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java new file mode 100644 index 0000000000..62f0a0ee3b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java @@ -0,0 +1,374 @@ +package http_parser.lolevel; + +import java.nio.*; +import java.io.*; +import java.util.*; + +import http_parser.HTTPMethod; +import http_parser.HTTPParserUrl; +import http_parser.ParserType; +import http_parser.lolevel.TestLoaderNG.Header; +import http_parser.lolevel.TestLoaderNG.LastHeader; + +import primitive.collection.ByteList; + +import static http_parser.lolevel.Util.str; + +public class Message { + String name; + byte [] raw; + ParserType type; + HTTPMethod method; + int status_code; + String request_path; // byte [] ? + String request_url; + String fragment ; + String query_string; + byte [] body; + int body_size; + int num_headers; + LastHeader last_header_element; + Map header; + List

                + + + +

                Got message:

                + + + \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsx b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsx new file mode 100644 index 0000000000..1bf7872db4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/jsx @@ -0,0 +1,17 @@ +var HelloWorld = React.createClass({ + render: function() { + return ( +

                + Hello, ! + It is {this.props.date.toTimeString()} +

                + ); + } +}); + +setInterval(function() { + ReactDOM.render( + , + document.getElementById('example') + ); +}, 500); diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/julia b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/julia new file mode 100644 index 0000000000..fe0e9e8ecc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/julia @@ -0,0 +1,11 @@ +function mandel(z) + c = z + maxiter = 80 + for n = 1:maxiter + if abs(z) > 2 + return n-1 + end + z = z^2 + c + end + return maxiter +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/kotlin b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/kotlin new file mode 100644 index 0000000000..a27b0db023 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/kotlin @@ -0,0 +1,3 @@ +fun main(args: Array) { + println("Hello, world!") +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lasso b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lasso new file mode 100644 index 0000000000..625112fe57 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lasso @@ -0,0 +1,12 @@ +/**! + Inserts all of the elements from #rhs into the array. +*/ +define array->+(rhs::trait_forEach) => { + local(a = .asCopy); + #rhs->forEach => { + #a->insert(#1) + } + return (#a) +} + +define array->onCompare(n::null) => 1 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/liquid b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/liquid new file mode 100644 index 0000000000..ec57021b3c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/liquid @@ -0,0 +1,11 @@ +
                  + {% for product in products %} +
                • +

                  {{ product.title }}

                  + Only {{ product.price | format_as_money }} + +

                  {{ product.description | prettyprint | truncate: 200 }}

                  + +
                • + {% endfor %} +
                diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_coffeescript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_coffeescript new file mode 100644 index 0000000000..0e5f25f775 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_coffeescript @@ -0,0 +1,3 @@ +Import the helpers we plan to use. + + {extend, last} = require './helpers' diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_haskell b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_haskell new file mode 100644 index 0000000000..10e7535659 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/literate_haskell @@ -0,0 +1,7 @@ +In Bird-style you have to leave a blank before the code. + +> fact :: Integer -> Integer +> fact 0 = 1 +> fact n = n * fact (n-1) + +And you have to leave a blank line after the code as well. diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/llvm b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/llvm new file mode 100644 index 0000000000..c4596a8002 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/llvm @@ -0,0 +1,20 @@ +; copied from http://llvm.org/docs/LangRef.html#module-structure +; Declare the string constant as a global constant. +@.str = private unnamed_addr constant [13 x i8] c"hello world\0A\00" + +; External declaration of the puts function +declare i32 @puts(i8* nocapture) nounwind + +; Definition of main function +define i32 @main() { ; i32()* + ; Convert [13 x i8]* to i8 *... + %cast210 = getelementptr [13 x i8]* @.str, i64 0, i64 0 + + ; Call puts function to write out the string to stdout. + call i32 @puts(i8* %cast210) + ret i32 0 +} + +; Named metadata +!1 = metadata !{i32 42} +!foo = !{!1, null} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lua b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lua new file mode 100644 index 0000000000..2abebae99d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/lua @@ -0,0 +1,12 @@ +-- defines a factorial function +function fact (n) + if n == 0 then + return 1 + else + return n * fact(n-1) + end +end + +print("enter a number:") +a = io.read("*number") -- read a number +print(fact(a)) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/m68k b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/m68k new file mode 100644 index 0000000000..bf41adb9de --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/m68k @@ -0,0 +1,16 @@ +initialize: ; go into super user mode + clr.l -(a7) + move.w #32,-(a7) + trap #1 + addq.l #6,a7 + move.l d0,oldstack + rts + +restore: ; go back into user mode + move.l oldstack,-(a7) + move.w #32,-(a7) + trap #1 + addq.l #6,a7 + rts + +oldstack dc.l 0 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/make b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/make new file mode 100644 index 0000000000..cdac71548d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/make @@ -0,0 +1,6 @@ +.PHONY: all +all: $(OBJ) + +$(OBJ): $(SOURCE) + @echo "compiling..." + $(GCC) $(CFLAGS) $< > $@ diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/markdown b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/markdown new file mode 100644 index 0000000000..5e36314238 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/markdown @@ -0,0 +1,4 @@ +Markdown has cool [reference links][ref 1] +and [regular links too](http://example.com) + +[ref 1]: http://example.com diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mathematica b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mathematica new file mode 100644 index 0000000000..b650247f42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mathematica @@ -0,0 +1,8 @@ +(* Fibonacci numbers with memoization *) + +fib::usage = "f[n] calculates the n'th Fibonacci number."; +fib[0] = fib[1] = 1; +fib[n_Integer?Positive]:= fib[n] = fib[n-1] + fib[n-2]; + +In[4]:= fib[42] +Out[4]= 433494437 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/matlab b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/matlab new file mode 100644 index 0000000000..3777fb5385 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/matlab @@ -0,0 +1,6 @@ +A = cat( 3, [1 2 3; 9 8 7; 4 6 5], [0 3 2; 8 8 4; 5 3 5], ... + [6 4 7; 6 8 5; 5 4 3]); +% The EIG function is applied to each of the horizontal 'slices' of A. +for i = 1:3 + eig(squeeze(A(i,:,:))) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/moonscript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/moonscript new file mode 100644 index 0000000000..4c8511ddcf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/moonscript @@ -0,0 +1,16 @@ +util = require "my.module" + +a_table = { + foo: 'bar' + interpolated: "foo-#{other.stuff 2 + 3}" + "string": 2 + do: 'keyword' +} + +class MyClass extends SomeClass + new: (@init, arg2 = 'default') => + @derived = @init + 2 + super! + + other: => + @foo + 2 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mosel b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mosel new file mode 100644 index 0000000000..e1b81d6b9f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mosel @@ -0,0 +1,10 @@ +(!****************************************************** + Mosel Example Problems +*******************************************************!) + +! Objective function: total daily cost + Cost:= sum(p in TYPES, t in TIME) (CSTART(p)*start(p,t) + + LEN(t)*(CMIN(p)*work(p,t) + CADD(p)*padd(p,t))) + +! Limit on power production above minimum level + forall(p in TYPES, t in TIME) padd(p,t) <= (PMAX(p)-PMIN(p))*work(p,t) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mxml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mxml new file mode 100644 index 0000000000..a5deedbfa4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/mxml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nasm b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nasm new file mode 100644 index 0000000000..2bf20e60da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nasm @@ -0,0 +1,26 @@ +%macro IRQ 2 + global irq%1 + irq%1: + cli + push byte 0 ; push a dummy error code + push byte %2 ; push the IRQ number + jmp irq_common_stub +%endmacro + +extern irq_handler + +irq_common_stub: + pusha ; Pushes edi,esi,ebp,esp,ebx,edx,ecx,eax + mov ax, ds ; Lower 16-bits of eax = ds. + push eax ; save the data segment descriptor + mov ax, 0x10 ; load the kernel data segment descriptor + mov edx, eax + call irq_handler + +%assign i 0 +%rep 8 +ISR_NOERRCODE i +%assign i i+1 +%endrep + +ISR_NOERRCODE 9 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nginx b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nginx new file mode 100644 index 0000000000..0288770784 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nginx @@ -0,0 +1,5 @@ +server { + listen 80; + server_name example.com *.example.com; + rewrite ^ http://www.domain.com$request_uri? permanent; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nim b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nim new file mode 100644 index 0000000000..74498cdc41 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nim @@ -0,0 +1,27 @@ +import math,strutils + +proc fixedWidth(input: string, minFieldSize: int):string {.inline.} = + # Note that field size is a minimum- will expand field if input + # string is larger + if input.startsWith("-"): + return(input & repeatchar(count=(abs(minFieldSize-len(input))),c=' ')) + else: + return(" " & input & repeatchar(count=(abs(minFieldSize-len(input))-1),c=' ')) + +template mathOnInterval(lowbound,highbound:float,counts: int,p:proc) = + block: + var step: float = (highbound - lowbound)/(max(counts,1)) + var current: float = lowbound + while current < highbound: + echo($fixedWidth($current,25) & ": " & $fixedWidth($p(current),25)) + current += step + +echo "Sine of theta from 0 to 2*PI by PI/12" +mathOnInterval(0.0,2.0*PI,12,sin) +echo("\n") +echo "Cosine of theta from 0 to 2*PI by PI/12" +mathOnInterval(0.0,2.0*PI,12,cos) + +# The first example above is much the same as: +# for i in 1..100: +# echo($sin( (float(i)/100.0) * 2.0*PI )) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nix b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nix new file mode 100644 index 0000000000..abb561d6f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/nix @@ -0,0 +1,19 @@ +# See https://nixos.org/nix/manual/#sec-expression-syntax +{ stdenv, fetchurl, perl }: # 1 + +stdenv.mkDerivation { # 2 + name = "hello-2.1.1"; # 3 + builder = ./builder.sh; # 4 + meta = rec { + name = "rouge"; + version = "${name}-2.1.1"; + number = 55 + 12; + isSmaller = number < 42; + bool = true; + }; + src = fetchurl { # 5 + url = ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz; # path + md5 = "70c9ccf9fac07f762c24f2df2290784d"; + }; + inherit perl; # 6 +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/objective_c b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/objective_c new file mode 100644 index 0000000000..c0856262c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/objective_c @@ -0,0 +1,18 @@ +@interface Person : NSObject { + @public + NSString *name; + @private + int age; +} + +@property(copy) NSString *name; +@property(readonly) int age; + +-(id)initWithAge:(int)age; +@end + +NSArray *arrayLiteral = @[@"abc", @1]; +NSDictionary *dictLiteral = @{ + @"hello": @"world", + @"goodbye": @"cruel world" +}; diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ocaml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ocaml new file mode 100644 index 0000000000..e09cf09bd8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ocaml @@ -0,0 +1,12 @@ +(* Binary tree with leaves car­rying an integer. *) +type tree = Leaf of int | Node of tree * tree + +let rec exists_leaf test tree = + match tree with + | Leaf v -> test v + | Node (left, right) -> + exists_leaf test left + || exists_leaf test right + +let has_even_leaf tree = + exists_leaf (fun n -> n mod 2 = 0) tree diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pascal b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pascal new file mode 100644 index 0000000000..16be537345 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pascal @@ -0,0 +1,14 @@ +program FizzBuzz(output); +var + i: Integer; +begin + for i := 1 to 100 do + if i mod 15 = 0 then + WriteLn('FizzBuzz') + else if i mod 3 = 0 then + WriteLn('Fizz') + else if i mod 5 = 0 then + WriteLn('Buzz') + else + WriteLn(i) +end. diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/perl b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/perl new file mode 100644 index 0000000000..a9664453b6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/perl @@ -0,0 +1,5 @@ +#!/usr/bin/env perl +use warnings; +print "a: "; +my $a = "foo"; +print $a; diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/php b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/php new file mode 100644 index 0000000000..7ca7fe69cd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/php @@ -0,0 +1,3 @@ + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plaintext b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plaintext new file mode 100644 index 0000000000..60180f7baf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plaintext @@ -0,0 +1 @@ +plain text :) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plist b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plist new file mode 100644 index 0000000000..abfccc19fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/plist @@ -0,0 +1,142 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXGroup section */ + 1D67B9537FE4C81097096F85 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 74946460D3EE9E1FA4792785 = { + isa = PBXGroup; + children = ( + E3060171E73473A889949AB5 /* Products */, + 1D67B9537FE4C81097096F85 /* Frameworks */, + ); + sourceTree = ""; + }; + E3060171E73473A889949AB5 /* Products */ = { + isa = PBXGroup; + children = ( + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXProject section */ + B3A67937542EC2041CBF1CA2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 74946460D3EE9E1FA4792785; + productRefGroup = E3060171E73473A889949AB5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + ); + }; +/* End PBXProject section */ + +/* Begin XCBuildConfiguration section */ + 09AC0D63F19B6944E1045E60 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4D494CA5F82DCCAB3194BA09 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4D494CA5F82DCCAB3194BA09 /* Debug */, + 09AC0D63F19B6944E1045E60 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3A67937542EC2041CBF1CA2 /* Project object */; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pony b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pony new file mode 100644 index 0000000000..9b584fd385 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/pony @@ -0,0 +1,17 @@ +use "ponytest" + +actor Main is TestList + new create(env: Env) => PonyTest(env, this) + new make() => None + + fun tag tests(test: PonyTest) => + test(_TestAddition) + +class iso _TestAddition is UnitTest + """ + Adding 2 numbers + """ + fun name(): String => "u32/add" + + fun apply(h: TestHelper): TestResult => + h.expect_eq[U32](2 + 2, 4) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/powershell b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/powershell new file mode 100644 index 0000000000..a03a692d0f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/powershell @@ -0,0 +1,49 @@ +Function Get-IPv4Scopes +<# + .SYNOPSIS + Read IPv4Scopes from an array of servers + .PARAMETER Servers + Specifies an array of servers + .EXAMPLE + Get-IPv4Scopes + + Will prompt for all inputs +#> +{ + [CmdletBinding()] + Param( + # 1 + [parameter( + Mandatory=$true, + Position=0, + ValueFromPipelineByPropertyName=$true, + HelpMessage="Server List" + )] + [string[]]$Servers, + #2 + [parameter(Mandatory=$false,ValueFromPipeline=$false)] + [bool]$Unique=$false + ) #EndParam + + Begin {} + + Process { + $arrayJobs=@() + foreach ($server in $Servers) { + $arrayJobs+=Invoke-Command -ComputerName $server -scriptblock {Get-DhcpServerv4Scope} -AsJob + } + $complete=$false + while (-not $complete) { + $arrayJobsInProgress= $arrayJobs | Where-Object { $_.State -match 'running' } + if (-not $arrayJobsInProgress) { $complete=$true } + } + $Scopes=$arrayJobs|Receive-Job + $UniqueScopes=$Scopes|Sort-Object -Property ScopeId -Unique + } + + End { + if ($Unique) { return $UniqueScopes } + else { return $Scopes } + } + +} #end function diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/praat b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/praat new file mode 100644 index 0000000000..f1af35bf31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/praat @@ -0,0 +1,26 @@ +form Copy selected files... + word Prefix + word Suffix _copy + boolean Keep_original 1 +endform + +total_objects = numberOfSelected() +for i to total_objects + my_object[i] = selected(i) +endfor +for i to total_objects + selectObject: my_object[i] + @copy() + new[i] = selected() +endfor +if total_objects + selectObject: new[1] + for i from 2 to total_objects + plusObject: new[i] + endfor +endif + +procedure copy () + .name$ = extractWord$(selected$(), " ") + Copy: prefix$ + .name$ + suffix$ +endproc diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prolog b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prolog new file mode 100644 index 0000000000..8430e6b36a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prolog @@ -0,0 +1,9 @@ +diff(plus(A,B), X, plus(DA, DB)) + <= diff(A, X, DA) and diff(B, X, DB). + +diff(times(A,B), X, plus(times(A, DB), times(DA, B))) + <= diff(A, X, DA) and diff(B, X, DB). + +equal(X, X). +diff(X, X, 1). +diff(Y, X, 0) <= not equal(Y, X). diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prometheus b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prometheus new file mode 100644 index 0000000000..3cdab0856b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/prometheus @@ -0,0 +1,9 @@ +"this is a string" +'these are unescaped: \n \\ \t' +`these are not unescaped: \n ' " \t` + +http_requests_total{environment=~"staging|testing|development", method!="GET"} + +http_requests_total offset 5m + +sum(http_requests_total{method="GET"}[10m] offset 5m) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/properties b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/properties new file mode 100644 index 0000000000..b5b717df7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/properties @@ -0,0 +1,7 @@ +# You are reading the ".properties" entry. +! The exclamation mark can also mark text as comments. +website = http\://en.wikipedia.org/ +language = English +country : Poland +continent=Europe +key.with.dots=This is the value that could be looked up with the key "key.with.dots". diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/protobuf b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/protobuf new file mode 100644 index 0000000000..fdab9e9780 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/protobuf @@ -0,0 +1,5 @@ +message Person { + required string name = 1; + required int32 id = 2; + optional string email = 3; +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/puppet b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/puppet new file mode 100644 index 0000000000..621d9c9c6a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/puppet @@ -0,0 +1,6 @@ +service { 'ntp': + name => $service_name, + ensure => running, + enable => true, + subscribe => File['ntp.conf'], +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/python b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/python new file mode 100644 index 0000000000..77a5cb3111 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/python @@ -0,0 +1,6 @@ +def fib(n): # write Fibonacci series up to n + """Print a Fibonacci series up to n.""" + a, b = 0, 1 + while a < n: + print a, + a, b = b, a+b diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/q b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/q new file mode 100644 index 0000000000..e47fb71c6c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/q @@ -0,0 +1,2 @@ +/ comment +x: til 10 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/qml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/qml new file mode 100644 index 0000000000..9aacda6cf0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/qml @@ -0,0 +1,9 @@ +import QtQuick 2.0 +Item { + width: 200 + height: 100 + MouseArea { + anchors.fill: parent + onClicked: Qt.quit() + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/r b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/r new file mode 100644 index 0000000000..b6804b0735 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/r @@ -0,0 +1,8 @@ +dbenford <- function(x){ + log10(1 + 1/x) +} + +pbenford <- function(q){ + cumprobs <- cumsum(dbenford(1:9)) + return(cumprobs[q]) +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/racket b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/racket new file mode 100644 index 0000000000..bd99818643 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/racket @@ -0,0 +1,24 @@ +#lang racket + +;; draw a graph of cos and deriv^3(cos) +(require plot) +(define ((deriv f) x) + (/ (- (f x) (f (- x 0.001))) 0.001)) +(define (thrice f) (lambda (x) (f (f (f x))))) +(plot (list (function ((thrice deriv) sin) -5 5) + (function cos -5 5 #:color 'blue))) + +;; Print the Greek alphabet +(for ([i (in-range 25)]) + (displayln + (integer->char + (+ i (char->integer #\u3B1))))) + +;; An echo server +(define listener (tcp-listen 12345)) +(let echo-server () + (define-values (in out) (tcp-accept listener)) + (thread (λ () + (copy-port in out) + (close-output-port out))) + (echo-server)) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ruby b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ruby new file mode 100644 index 0000000000..be609a17c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/ruby @@ -0,0 +1,9 @@ +class Greeter + def initialize(name="World") + @name = name + end + + def say_hi + puts "Hi #{@name}!" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/rust b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/rust new file mode 100644 index 0000000000..b73b162b66 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/rust @@ -0,0 +1,12 @@ +use core::*; + +fn main() { + for ["Alice", "Bob", "Carol"].each |&name| { + do task::spawn { + let v = rand::Rng().shuffle([1, 2, 3]); + for v.each |&num| { + io::print(fmt!("%s says: '%d'\n", name, num)) + } + } + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sass b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sass new file mode 100644 index 0000000000..1e768de3d3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sass @@ -0,0 +1,3 @@ +@for $i from 1 through 3 + .item-#{$i} + width: 2em * $i diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scala b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scala new file mode 100644 index 0000000000..75f19ee7a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scala @@ -0,0 +1,3 @@ +class Greeter(name: String = "World") { + def sayHi() { println("Hi " + name + "!") } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scheme b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scheme new file mode 100644 index 0000000000..c9c4dbd40c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scheme @@ -0,0 +1,4 @@ +(define Y + (lambda (m) + ((lambda (f) (m (lambda (a) ((f f) a)))) + (lambda (f) (m (lambda (a) ((f f) a))))))) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scss b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scss new file mode 100644 index 0000000000..3f259a7677 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/scss @@ -0,0 +1,5 @@ +@for $i from 1 through 3 { + .item-#{$i} { + width: 2em * $i; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sed b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sed new file mode 100644 index 0000000000..4683cd32fc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sed @@ -0,0 +1,4 @@ +/begin/,/end/ { + /begin/n # skip over the line that has "begin" on it + s/old/new/ +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/shell b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/shell new file mode 100644 index 0000000000..f01fe48ec2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/shell @@ -0,0 +1,2 @@ +# If not running interactively, don't do anything +[[ -z "$PS1" ]] && return diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sieve b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sieve new file mode 100644 index 0000000000..5f6889d473 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sieve @@ -0,0 +1,10 @@ +require "fileinto"; +require "imap4flags"; + +if header :is "X-Spam" "Yes" { + fileinto "Junk"; + setflag "\\seen"; + stop; +} + +/* Other messages get filed into Inbox or to user's scripts */ diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/slim b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/slim new file mode 100644 index 0000000000..215a4e2875 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/slim @@ -0,0 +1,17 @@ +doctype html +html + body + h1 Markup examples + #content + p + | Slim can have #{ruby_code} interpolated! + /[if IE] + javascript: + alert('Slim supports embedded javascript!') + + - unless items.empty? + table + - for item in items do + tr + td.name = item.name + td.price = item.price diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smalltalk b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smalltalk new file mode 100644 index 0000000000..af97161ee4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smalltalk @@ -0,0 +1,6 @@ +quadMultiply: i1 and: i2 + "This method multiplies the given numbers by each other + and the result by 4." + | mul | + mul := i1 * i2. + ^mul * 4 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smarty b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smarty new file mode 100644 index 0000000000..bb7f664dc2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/smarty @@ -0,0 +1,12 @@ +{foo bar='single quotes' baz="double quotes" test3=$test3} + +
                  + {foreach from=$myvariable item=data} +
                • {$data.field}
                • + {foreachelse} +
                • No Data
                • + {/foreach} +
                + +
                {$foo.bar.baz}
                + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sml new file mode 100644 index 0000000000..02a57d3430 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sml @@ -0,0 +1,4 @@ +datatype shape + = Circle of loc * real (* center and radius *) + | Square of loc * real (* upper-left corner and side length; axis-aligned *) + | Triangle of loc * loc * loc (* corners *) diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sqf b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sqf new file mode 100644 index 0000000000..9f54383c70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sqf @@ -0,0 +1,14 @@ +// Creates a dot marker at the given position +#include "script_component.hpp" +params ["_pos", "_txt"]; + +if (isNil QGVAR(markerID)) then { + GVAR(markerID) = 0; +}; + +_markerstr = createMarker [QGVAR(marker) + str GVAR(markerID), _pos]; +_markerstr setMarkerShape "ICON"; +_markerstr setMarkerType "hd_dot"; +_markerstr setMarkerText _txt; + +GVAR(markerID) = GVAR(markerID) + 1; diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sql b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sql new file mode 100644 index 0000000000..45a7a17fc2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/sql @@ -0,0 +1 @@ +SELECT * FROM `users` WHERE `user`.`id` = 1 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/swift b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/swift new file mode 100644 index 0000000000..0c54ed2db0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/swift @@ -0,0 +1,5 @@ +// Say hello to poeple +func sayHello(personName: String) -> String { + let greeting = "Hello, " + personName + "!" + return greeting +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tap b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tap new file mode 100644 index 0000000000..1d9bf5a68d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tap @@ -0,0 +1,5 @@ +ok 1 - Input file opened +not ok 2 - First line of the input valid +ok 3 - Read the rest of the file +not ok 4 - Summarized correctly # TODO Not written yet +1..4 diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tcl b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tcl new file mode 100644 index 0000000000..9bbe87c733 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tcl @@ -0,0 +1 @@ +proc cross_sum {s} {expr [join [split $s ""] +]} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/terraform b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/terraform new file mode 100644 index 0000000000..7baae924f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/terraform @@ -0,0 +1,31 @@ +# From: https://github.com/terraform-providers/terraform-provider-aws/blob/master/examples/count/main.tf + +# Specify the provider and access details +provider "aws" { + region = "${var.aws_region}" +} + +resource "aws_elb" "web" { + name = "terraform-example-elb" + + # The same availability zone as our instances + availability_zones = ["${aws_instance.web.*.availability_zone}"] + + listener { + instance_port = 80 + instance_protocol = "http" + lb_port = 80 + lb_protocol = "http" + } + + # The instances are registered automatically + instances = ["${aws_instance.web.*.id}"] +} + +resource "aws_instance" "web" { + instance_type = "m1.small" + ami = "${lookup(var.aws_amis, var.aws_region)}" + + # This will create 4 instances + count = 4 +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tex b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tex new file mode 100644 index 0000000000..430510fdb5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tex @@ -0,0 +1 @@ +To write \LaTeX\ you would type \verb:\LaTeX:. diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/toml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/toml new file mode 100644 index 0000000000..40c11c152a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/toml @@ -0,0 +1,9 @@ +# This is a TOML document. Boom. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +organization = "GitHub" +bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." +dob = 1979-05-27T07:32:00Z # First class dates? Why not? diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tsx b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tsx new file mode 100644 index 0000000000..422d2a7325 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tsx @@ -0,0 +1,17 @@ +class HelloWorld extends React.Component<{date: Date}, void> { + render() { + return ( +

                + Hello, ! + It is {this.props.date.toTimeString()} +

                + ); + } +} + +setInterval(function() { + ReactDOM.render( + , + document.getElementById('example') + ); +}, 500); diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tulip b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tulip new file mode 100644 index 0000000000..8c18ccf48f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/tulip @@ -0,0 +1,13 @@ +@module ref + +ref value = Ref (spawn [ ! => loop value ]) + +loop value = receive [ + .set new-value => loop new-value + p, id, .get => { send p (id, value); loop value } +] + +@object Ref pid [ + set val = .set val > send pid + get! = .get > send-wait pid +] diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/turtle b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/turtle new file mode 100644 index 0000000000..8c86d0c87f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/turtle @@ -0,0 +1,26 @@ +@prefix xsd: +@prefix dcat: . +@prefix dcterms: . +@prefix foaf: . +@base . + +PREFIX test: +PrEfIx insensitive: + +GRAPH { + a dcat:Dataset ; + +#-----Mandatory-----# + + dcterms:title 'Test title'@cs, "Test title"@en ; + dcterms:description """Multiline + string"""@cs, '''Another + multiline string '''@en ; + +#-----Recommended-----# + dcat:contactPoint [ a foaf:Person ] ; + test:list ( 1 1.1 +1 -1 1.2E+4 "Test" "\"Quote\"" ) ; + test:datatype "2016-07-20"^^xsd:date ; + test:text """next multiline"""; + . +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/twig b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/twig new file mode 100644 index 0000000000..2e5e577334 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/twig @@ -0,0 +1,9 @@ +{% include 'header.html' %} + +{% for user in users %} + * {{ user.name }} +{% else %} + No users have been found. +{% endfor %} + +{% include 'footer.html' %} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/typescript b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/typescript new file mode 100644 index 0000000000..134a70e877 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/typescript @@ -0,0 +1 @@ +$(document).ready(function() { alert('ready!'); }); diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vala b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vala new file mode 100644 index 0000000000..2989be0592 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vala @@ -0,0 +1,8 @@ +class Demo.HelloWorld : GLib.Object +{ + public static int main (String[] args) + { + stdout.printf("Hello World\n"); + return 0; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vb new file mode 100644 index 0000000000..f7e323daaf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vb @@ -0,0 +1,4 @@ +Private Sub Form_Load() + ' Execute a simple message box that says "Hello, World!" + MsgBox "Hello, World!" +End Sub diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/verilog b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/verilog new file mode 100644 index 0000000000..7f752c6043 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/verilog @@ -0,0 +1,27 @@ +/** + * Verilog Lexer + */ +module Foo( + input logic Clk_CI, + input logic Rst_RBI, + input logic A, + input logic B, + output logic C +); + logic C_DN, C_DP; + + assign C = C_DP; + + always_comb begin : proc_next_state + C_DN = A + B; + end + + // Clocked process + always_ff @(posedge Clk_CI, negedge Rst_RBI) begin + if(~Rst_RBI) begin + C_DP <= 1'b0; + end else begin + C_DP <= C_DN; + end + end +endmodule diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vhdl b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vhdl new file mode 100644 index 0000000000..9355b50cae --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vhdl @@ -0,0 +1,23 @@ +entity toggle_demo is + port ( + clk_in : in std_logic; -- System Clock + data_q : out std_logic -- Toggling Port + ); +end entity toggle_demo; + +architecture RTL of toggle_demo is + signal data : std_logic := '0'; +begin + + data_q <= data; + + data_proc : process (clk_in) + begin + + if (rising_edge(clk_in)) then + data <= not data; + end if; + + end process; + +end architecture RTL; diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/viml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/viml new file mode 100644 index 0000000000..93a364b982 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/viml @@ -0,0 +1,14 @@ +function! s:Make(dir, make, format, name) abort + let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd' + let cwd = getcwd() + let [mp, efm, cc] = [&l:mp, &l:efm, get(b:, 'current_compiler', '')] + try + execute cd fnameescape(dir) + let [&l:mp, &l:efm, b:current_compiler] = [a:make, a:format, a:compiler] + execute (exists(':Make') == 2 ? 'Make' : 'make') + finally + let [&l:mp, &l:efm, b:current_compiler] = [mp, efm, cc] + if empty(cc) | unlet! b:current_compiler | endif + execute cd fnameescape(cwd) + endtry +endfunction diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vue b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vue new file mode 100644 index 0000000000..8b54b28dde --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/vue @@ -0,0 +1,11 @@ + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/wollok b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/wollok new file mode 100644 index 0000000000..ae467f43b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/wollok @@ -0,0 +1,11 @@ +object pepita { + var energy = 100 + + method energy() = energy + + method fly(kilometers) { + energy -= kilometers + 10 + } + + method sayHi() = "Coo!" +} diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/xml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/xml new file mode 100644 index 0000000000..149844b171 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/xml @@ -0,0 +1,2 @@ + + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/yaml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/yaml new file mode 100644 index 0000000000..2f622dea3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/demos/yaml @@ -0,0 +1,4 @@ +--- +one: Mark McGwire +two: Sammy Sosa +three: Ken Griffey diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatter.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatter.rb new file mode 100644 index 0000000000..6eeb177fd7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatter.rb @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + # A Formatter takes a token stream and formats it for human viewing. + class Formatter + # @private + REGISTRY = {} + + # Specify or get the unique tag for this formatter. This is used + # for specifying a formatter in `rougify`. + def self.tag(tag=nil) + return @tag unless tag + REGISTRY[tag] = self + + @tag = tag + end + + # Find a formatter class given a unique tag. + def self.find(tag) + REGISTRY[tag] + end + + # Format a token stream. Delegates to {#format}. + def self.format(tokens, *a, &b) + new(*a).format(tokens, &b) + end + + def initialize(opts={}) + # pass + end + + # Format a token stream. + def format(tokens, &b) + return stream(tokens, &b) if block_given? + + out = String.new('') + stream(tokens) { |piece| out << piece } + + out + end + + # @deprecated Use {#format} instead. + def render(tokens) + warn 'Formatter#render is deprecated, use #format instead.' + format(tokens) + end + + # @abstract + # yield strings that, when concatenated, form the formatted output + def stream(tokens, &b) + raise 'abstract' + end + + protected + def token_lines(tokens, &b) + return enum_for(:token_lines, tokens) unless block_given? + + out = [] + tokens.each do |tok, val| + val.scan /\n|[^\n]+/ do |s| + if s == "\n" + yield out + out = [] + else + out << [tok, s] + end + end + end + + # for inputs not ending in a newline + yield out if out.any? + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html.rb new file mode 100644 index 0000000000..de98dce804 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html.rb @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + # Transforms a token stream into HTML output. + class HTML < Formatter + tag 'html' + + # @yield the html output. + def stream(tokens, &b) + tokens.each { |tok, val| yield span(tok, val) } + end + + def span(tok, val) + safe_span(tok, val.gsub(/[&<>]/, TABLE_FOR_ESCAPE_HTML)) + end + + def safe_span(tok, safe_val) + if tok == Token::Tokens::Text + safe_val + else + shortname = tok.shortname \ + or raise "unknown token: #{tok.inspect} for #{safe_val.inspect}" + + "#{safe_val}" + end + end + + + TABLE_FOR_ESCAPE_HTML = { + '&' => '&', + '<' => '<', + '>' => '>', + } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_inline.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_inline.rb new file mode 100644 index 0000000000..e7f34399b2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_inline.rb @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + class HTMLInline < HTML + tag 'html_inline' + + def initialize(theme) + if theme.is_a?(Class) && theme < Rouge::Theme + @theme = theme.new + elsif theme.is_a?(Rouge::Theme) + @theme = theme + elsif theme.is_a?(String) + @theme = Rouge::Theme.find(theme).new + else + raise ArgumentError, "invalid theme: #{theme.inspect}" + end + end + + def safe_span(tok, safe_val) + return safe_val if tok == Token::Tokens::Text + + rules = @theme.style_for(tok).rendered_rules + + "#{safe_val}" + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_legacy.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_legacy.rb new file mode 100644 index 0000000000..8327564531 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_legacy.rb @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# stdlib +require 'cgi' + +module Rouge + module Formatters + # Transforms a token stream into HTML output. + class HTMLLegacy < Formatter + tag 'html_legacy' + + # @option opts [String] :css_class ('highlight') + # @option opts [true/false] :line_numbers (false) + # @option opts [Rouge::CSSTheme] :inline_theme (nil) + # @option opts [true/false] :wrap (true) + # + # Initialize with options. + # + # If `:inline_theme` is given, then instead of rendering the + # tokens as tags with CSS classes, the styles according to + # the given theme will be inlined in "style" attributes. This is + # useful for formats in which stylesheets are not available. + # + # Content will be wrapped in a tag (`div` if tableized, `pre` if + # not) with the given `:css_class` unless `:wrap` is set to `false`. + def initialize(opts={}) + @formatter = opts[:inline_theme] ? HTMLInline.new(opts[:inline_theme]) + : HTML.new + + + @formatter = HTMLTable.new(@formatter, opts) if opts[:line_numbers] + + if opts.fetch(:wrap, true) + @formatter = HTMLPygments.new(@formatter, opts.fetch(:css_class, 'codehilite')) + end + end + + # @yield the html output. + def stream(tokens, &b) + @formatter.stream(tokens, &b) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_linewise.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_linewise.rb new file mode 100644 index 0000000000..9510aa600a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_linewise.rb @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + class HTMLLinewise < Formatter + def initialize(formatter, opts={}) + @formatter = formatter + @class_format = opts.fetch(:class, 'line-%i') + end + + def stream(tokens, &b) + token_lines(tokens) do |line| + yield "
                " + line.each do |tok, val| + yield @formatter.span(tok, val) + end + yield '
                ' + end + end + + def next_line_class + @lineno ||= 0 + sprintf(@class_format, @lineno += 1).inspect + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_pygments.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_pygments.rb new file mode 100644 index 0000000000..8ed8f54839 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_pygments.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Rouge + module Formatters + class HTMLPygments < Formatter + def initialize(inner, css_class='codehilite') + @inner = inner + @css_class = css_class + end + + def stream(tokens, &b) + yield %(
                )
                +        @inner.stream(tokens, &b)
                +        yield "
                " + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_table.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_table.rb new file mode 100644 index 0000000000..01d94e4bdb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/html_table.rb @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + class HTMLTable < Formatter + tag 'html_table' + + def initialize(inner, opts={}) + @inner = inner + @start_line = opts.fetch(:start_line, 1) + @line_format = opts.fetch(:line_format, '%i') + @table_class = opts.fetch(:table_class, 'rouge-table') + @gutter_class = opts.fetch(:gutter_class, 'rouge-gutter') + @code_class = opts.fetch(:code_class, 'rouge-code') + end + + def style(scope) + yield "#{scope} .rouge-table { border-spacing: 0 }" + yield "#{scope} .rouge-gutter { text-align: right }" + end + + def stream(tokens, &b) + num_lines = 0 + last_val = '' + formatted = String.new('') + + tokens.each do |tok, val| + last_val = val + num_lines += val.scan(/\n/).size + formatted << @inner.span(tok, val) + end + + # add an extra line for non-newline-terminated strings + if last_val[-1] != "\n" + num_lines += 1 + @inner.span(Token::Tokens::Text::Whitespace, "\n") { |str| formatted << str } + end + + # generate a string of newline-separated line numbers for the gutter> + formatted_line_numbers = (@start_line..num_lines+@start_line-1).map do |i| + sprintf("#{@line_format}", i) << "\n" + end.join('') + + numbers = %(
                #{formatted_line_numbers}
                ) + + yield %() + + # the "gl" class applies the style for Generic.Lineno + yield %(' + + yield %(' + + yield "
                ) + yield numbers + yield '
                )
                +        yield formatted
                +        yield '
                " + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/null.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/null.rb new file mode 100644 index 0000000000..078c461ca9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/null.rb @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + # A formatter which renders nothing. + class Null < Formatter + tag 'null' + + def initialize(*) + end + + def stream(tokens, &b) + tokens.each do |tok, val| + yield "#{tok.qualname} #{val.inspect}\n" + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/terminal256.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/terminal256.rb new file mode 100644 index 0000000000..b9af6a8297 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/formatters/terminal256.rb @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Formatters + # A formatter for 256-color terminals + class Terminal256 < Formatter + tag 'terminal256' + + # @private + attr_reader :theme + + # @param [Hash,Rouge::Theme] theme + # the theme to render with. + def initialize(theme = Themes::ThankfulEyes.new) + if theme.is_a?(Rouge::Theme) + @theme = theme + elsif theme.is_a?(Hash) + @theme = theme[:theme] || Themes::ThankfulEyes.new + else + raise ArgumentError, "invalid theme: #{theme.inspect}" + end + end + + def stream(tokens, &b) + tokens.each do |tok, val| + escape = escape_sequence(tok) + yield escape.style_string + yield val.gsub("\n", "#{escape.reset_string}\n#{escape.style_string}") + yield escape.reset_string + end + end + + class EscapeSequence + attr_reader :style + def initialize(style) + @style = style + end + + def self.xterm_colors + @xterm_colors ||= [].tap do |out| + # colors 0..15: 16 basic colors + out << [0x00, 0x00, 0x00] # 0 + out << [0xcd, 0x00, 0x00] # 1 + out << [0x00, 0xcd, 0x00] # 2 + out << [0xcd, 0xcd, 0x00] # 3 + out << [0x00, 0x00, 0xee] # 4 + out << [0xcd, 0x00, 0xcd] # 5 + out << [0x00, 0xcd, 0xcd] # 6 + out << [0xe5, 0xe5, 0xe5] # 7 + out << [0x7f, 0x7f, 0x7f] # 8 + out << [0xff, 0x00, 0x00] # 9 + out << [0x00, 0xff, 0x00] # 10 + out << [0xff, 0xff, 0x00] # 11 + out << [0x5c, 0x5c, 0xff] # 12 + out << [0xff, 0x00, 0xff] # 13 + out << [0x00, 0xff, 0xff] # 14 + out << [0xff, 0xff, 0xff] # 15 + + # colors 16..232: the 6x6x6 color cube + valuerange = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff] + + 217.times do |i| + r = valuerange[(i / 36) % 6] + g = valuerange[(i / 6) % 6] + b = valuerange[i % 6] + out << [r, g, b] + end + + # colors 233..253: grayscale + 1.upto 22 do |i| + v = 8 + i * 10 + out << [v, v, v] + end + end + end + + def fg + return @fg if instance_variable_defined? :@fg + @fg = style.fg && self.class.color_index(style.fg) + end + + def bg + return @bg if instance_variable_defined? :@bg + @bg = style.bg && self.class.color_index(style.bg) + end + + def style_string + @style_string ||= begin + attrs = [] + + attrs << ['38', '5', fg.to_s] if fg + attrs << ['48', '5', bg.to_s] if bg + attrs << '01' if style[:bold] + attrs << '04' if style[:italic] # underline, but hey, whatevs + escape(attrs) + end + end + + def reset_string + @reset_string ||= begin + attrs = [] + attrs << '39' if fg # fg reset + attrs << '49' if bg # bg reset + attrs << '00' if style[:bold] || style[:italic] + + escape(attrs) + end + end + + private + def escape(attrs) + return '' if attrs.empty? + "\e[#{attrs.join(';')}m" + end + + def self.color_index(color) + @color_index_cache ||= {} + @color_index_cache[color] ||= closest_color(*get_rgb(color)) + end + + def self.get_rgb(color) + color = $1 if color =~ /#([0-9a-f]+)/i + hexes = case color.size + when 3 + color.chars.map { |c| "#{c}#{c}" } + when 6 + color.scan(/../) + else + raise "invalid color: #{color}" + end + + hexes.map { |h| h.to_i(16) } + end + + # max distance between two colors, #000000 to #ffffff + MAX_DISTANCE = 257 * 257 * 3 + + def self.closest_color(r, g, b) + @@colors_cache ||= {} + key = (r << 16) + (g << 8) + b + @@colors_cache.fetch(key) do + distance = MAX_DISTANCE + + match = 0 + + xterm_colors.each_with_index do |(cr, cg, cb), i| + d = (r - cr)**2 + (g - cg)**2 + (b - cb)**2 + next if d >= distance + + match = i + distance = d + end + + match + end + end + end + + # private + def escape_sequence(token) + @escape_sequences ||= {} + @escape_sequences[token.qualname] ||= + EscapeSequence.new(get_style(token)) + end + + def get_style(token) + return text_style if token.ancestors.include? Token::Tokens::Text + + theme.get_own_style(token) || text_style + end + + def text_style + style = theme.get_style(Token['Text']) + # don't highlight text backgrounds + style.delete :bg + style + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guesser.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guesser.rb new file mode 100644 index 0000000000..7cfc3e676c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guesser.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +module Rouge + class Guesser + class Ambiguous < StandardError + attr_reader :alternatives + def initialize(alternatives); @alternatives = alternatives; end + + def message + "Ambiguous guess: can't decide between #{alternatives.map(&:tag).inspect}" + end + end + + def self.guess(guessers, lexers) + original_size = lexers.size + + guessers.each do |g| + new_lexers = case g + when Guesser then g.filter(lexers) + when proc { |x| x.respond_to? :call } then g.call(lexers) + else raise "bad guesser: #{g}" + end + + lexers = new_lexers && new_lexers.any? ? new_lexers : lexers + end + + # if we haven't filtered the input at *all*, + # then we have no idea what language it is, + # so we bail and return []. + lexers.size < original_size ? lexers : [] + end + + def collect_best(lexers, opts={}, &scorer) + best = [] + best_score = opts[:threshold] + + lexers.each do |lexer| + score = scorer.call(lexer) + + next if score.nil? + + if best_score.nil? || score > best_score + best_score = score + best = [lexer] + elsif score == best_score + best << lexer + end + end + + best + end + + def filter(lexers) + raise 'abstract' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/disambiguation.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/disambiguation.rb new file mode 100644 index 0000000000..f78654fb34 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/disambiguation.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + class Disambiguation < Guesser + include Util + include Lexers + + def initialize(filename, source) + @filename = File.basename(filename) + @source = source + end + + def filter(lexers) + return lexers if lexers.size == 1 + return lexers if lexers.size == Lexer.all.size + + @analyzer = TextAnalyzer.new(get_source(@source)) + + self.class.disambiguators.each do |disambiguator| + next unless disambiguator.match?(@filename) + + filtered = disambiguator.decide!(self) + return filtered if filtered + end + + return lexers + end + + def contains?(text) + return @analyzer.include?(text) + end + + def matches?(re) + return !!(@analyzer =~ re) + end + + @disambiguators = [] + def self.disambiguate(*patterns, &decider) + @disambiguators << Disambiguator.new(patterns, &decider) + end + + def self.disambiguators + @disambiguators + end + + class Disambiguator + include Util + + def initialize(patterns, &decider) + @patterns = patterns + @decider = decider + end + + def decide!(guesser) + out = guesser.instance_eval(&@decider) + case out + when Array then out + when nil then nil + else [out] + end + end + + def match?(filename) + @patterns.any? { |p| test_glob(p, filename) } + end + end + + disambiguate '*.pl' do + next Perl if contains?('my $') + next Prolog if contains?(':-') + next Prolog if matches?(/\A\w+(\(\w+\,\s*\w+\))*\./) + end + + disambiguate '*.h' do + next ObjectiveC if matches?(/@(end|implementation|protocol|property)\b/) + next ObjectiveC if contains?('@"') + + C + end + + disambiguate '*.m' do + next ObjectiveC if matches?(/@(end|implementation|protocol|property)\b/) + next ObjectiveC if contains?('@"') + + next Mathematica if contains?('(*') + next Mathematica if contains?(':=') + + next Matlab if matches?(/^\s*?%/) + end + + disambiguate '*.php' do + # PHP always takes precedence over Hack + PHP + end + + disambiguate '*.hh' do + next Cpp if matches?(/^\s*#include/) + next Hack if matches?(/^<\?hh/) + next Hack if matches?(/(\(|, ?)\$\$/) + + Cpp + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/filename.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/filename.rb new file mode 100644 index 0000000000..2f01b4c9d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/filename.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + class Filename < Guesser + attr_reader :fname + def initialize(filename) + @filename = filename + end + + # returns a list of lexers that match the given filename with + # equal specificity (i.e. number of wildcards in the pattern). + # This helps disambiguate between, e.g. the Nginx lexer, which + # matches `nginx.conf`, and the Conf lexer, which matches `*.conf`. + # In this case, nginx will win because the pattern has no wildcards, + # while `*.conf` has one. + def filter(lexers) + mapping = {} + lexers.each do |lexer| + mapping[lexer.name] = lexer.filenames || [] + end + + GlobMapping.new(mapping, @filename).filter(lexers) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/glob_mapping.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/glob_mapping.rb new file mode 100644 index 0000000000..f635328f64 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/glob_mapping.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + # This class allows for custom behavior + # with glob -> lexer name mappings + class GlobMapping < Guesser + include Util + + def self.by_pairs(mapping, filename) + glob_map = {} + mapping.each do |(glob, lexer_name)| + lexer = Lexer.find(lexer_name) + + # ignore unknown lexers + next unless lexer + + glob_map[lexer.name] ||= [] + glob_map[lexer.name] << glob + end + + new(glob_map, filename) + end + + attr_reader :glob_map, :filename + def initialize(glob_map, filename) + @glob_map = glob_map + @filename = filename + end + + def filter(lexers) + basename = File.basename(filename) + + collect_best(lexers) do |lexer| + score = (@glob_map[lexer.name] || []).map do |pattern| + if test_glob(pattern, basename) + # specificity is better the fewer wildcards there are + -pattern.scan(/[*?\[]/).size + end + end.compact.min + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/mimetype.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/mimetype.rb new file mode 100644 index 0000000000..92a1d43e15 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/mimetype.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + class Mimetype < Guesser + attr_reader :mimetype + def initialize(mimetype) + @mimetype = mimetype + end + + def filter(lexers) + lexers.select { |lexer| lexer.mimetypes.include? @mimetype } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/modeline.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/modeline.rb new file mode 100644 index 0000000000..60f0c556e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/modeline.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + class Modeline < Guesser + include Util + + # [jneen] regexen stolen from linguist + EMACS_MODELINE = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i + + # First form vim modeline + # [text]{white}{vi:|vim:|ex:}[white]{options} + # ex: 'vim: syntax=ruby' + VIM_MODELINE_1 = /(?:vim|vi|ex):\s*(?:ft|filetype|syntax)=(\w+)\s?/i + + # Second form vim modeline (compatible with some versions of Vi) + # [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text] + # ex: 'vim set syntax=ruby:' + VIM_MODELINE_2 = /(?:vim|vi|Vim|ex):\s*se(?:t)?.*\s(?:ft|filetype|syntax)=(\w+)\s?.*:/i + + MODELINES = [EMACS_MODELINE, VIM_MODELINE_1, VIM_MODELINE_2] + + def initialize(source, opts={}) + @source = source + @lines = opts[:lines] || 5 + end + + def filter(lexers) + # don't bother reading the stream if we've already decided + return lexers if lexers.size == 1 + + source_text = get_source(@source) + + lines = source_text.split(/\n/) + + search_space = (lines.first(@lines) + lines.last(@lines)).join("\n") + + matches = MODELINES.map { |re| re.match(search_space) }.compact + return lexers unless matches.any? + + match_set = Set.new(matches.map { |m| m[1] }) + lexers.select { |l| match_set.include?(l.tag) || l.aliases.any? { |a| match_set.include?(a) } } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/source.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/source.rb new file mode 100644 index 0000000000..b3e90cbb76 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/source.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + class Source < Guesser + include Util + + attr_reader :source + def initialize(source) + @source = source + end + + def filter(lexers) + # don't bother reading the input if + # we've already filtered to 1 + return lexers if lexers.size == 1 + + source_text = get_source(@source) + + Lexer.assert_utf8!(source_text) + + source_text = TextAnalyzer.new(source_text) + + collect_best(lexers) do |lexer| + next unless lexer.methods(false).include? :detect? + lexer.detect?(source_text) ? 1 : nil + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/util.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/util.rb new file mode 100644 index 0000000000..89c50bec98 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/guessers/util.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Rouge + module Guessers + module Util + module SourceNormalizer + UTF8_BOM = "\xEF\xBB\xBF" + UTF8_BOM_RE = /\A#{UTF8_BOM}/ + + # @param [String,nil] source + # @return [String,nil] + def self.normalize(source) + source.sub(UTF8_BOM_RE, '').gsub(/\r\n/, "\n") + end + end + + def test_glob(pattern, path) + File.fnmatch?(pattern, path, File::FNM_DOTMATCH | File::FNM_CASEFOLD) + end + + # @param [String,IO] source + # @return [String] + def get_source(source) + if source.respond_to?(:to_str) + SourceNormalizer.normalize(source.to_str) + elsif source.respond_to?(:read) + SourceNormalizer.normalize(source.read) + else + raise ArgumentError, "Invalid source: #{source.inspect}" + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexer.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexer.rb new file mode 100644 index 0000000000..7fd93db25b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexer.rb @@ -0,0 +1,462 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# stdlib +require 'strscan' +require 'cgi' +require 'set' + +module Rouge + # @abstract + # A lexer transforms text into a stream of `[token, chunk]` pairs. + class Lexer + include Token::Tokens + + @option_docs = {} + + class << self + # Lexes `stream` with the given options. The lex is delegated to a + # new instance. + # + # @see #lex + def lex(stream, opts={}, &b) + new(opts).lex(stream, &b) + end + + # Given a name in string, return the correct lexer class. + # @param [String] name + # @return [Class,nil] + def find(name) + registry[name.to_s] + end + + # Find a lexer, with fancy shiny features. + # + # * The string you pass can include CGI-style options + # + # Lexer.find_fancy('erb?parent=tex') + # + # * You can pass the special name 'guess' so we guess for you, + # and you can pass a second argument of the code to guess by + # + # Lexer.find_fancy('guess', "#!/bin/bash\necho Hello, world") + # + # This is used in the Redcarpet plugin as well as Rouge's own + # markdown lexer for highlighting internal code blocks. + # + def find_fancy(str, code=nil, additional_options={}) + + if str && !str.include?('?') && str != 'guess' + lexer_class = find(str) + return lexer_class && lexer_class.new(additional_options) + end + + name, opts = str ? str.split('?', 2) : [nil, ''] + + # parse the options hash from a cgi-style string + opts = CGI.parse(opts || '').map do |k, vals| + val = case vals.size + when 0 then true + when 1 then vals[0] + else vals + end + + [ k.to_s, val ] + end + + opts = additional_options.merge(Hash[opts]) + + lexer_class = case name + when 'guess', nil + self.guess(:source => code, :mimetype => opts['mimetype']) + when String + self.find(name) + end + + lexer_class && lexer_class.new(opts) + end + + # Specify or get this lexer's title. Meant to be human-readable. + def title(t=nil) + if t.nil? + t = tag.capitalize + end + @title ||= t + end + + # Specify or get this lexer's description. + def desc(arg=:absent) + if arg == :absent + @desc + else + @desc = arg + end + end + + def option_docs + @option_docs ||= InheritableHash.new(superclass.option_docs) + end + + def option(name, desc) + option_docs[name.to_s] = desc + end + + # Specify or get the path name containing a small demo for + # this lexer (can be overriden by {demo}). + def demo_file(arg=:absent) + return @demo_file = Pathname.new(arg) unless arg == :absent + + @demo_file = Pathname.new(__FILE__).dirname.join('demos', tag) + end + + # Specify or get a small demo string for this lexer + def demo(arg=:absent) + return @demo = arg unless arg == :absent + + @demo = File.read(demo_file, mode: 'rt:bom|utf-8') + end + + # @return a list of all lexers. + def all + registry.values.uniq + end + + # Guess which lexer to use based on a hash of info. + # + # This accepts the same arguments as Lexer.guess, but will never throw + # an error. It will return a (possibly empty) list of potential lexers + # to use. + def guesses(info={}) + mimetype, filename, source = info.values_at(:mimetype, :filename, :source) + custom_globs = info[:custom_globs] + + guessers = (info[:guessers] || []).dup + + guessers << Guessers::Mimetype.new(mimetype) if mimetype + guessers << Guessers::GlobMapping.by_pairs(custom_globs, filename) if custom_globs && filename + guessers << Guessers::Filename.new(filename) if filename + guessers << Guessers::Modeline.new(source) if source + guessers << Guessers::Source.new(source) if source + guessers << Guessers::Disambiguation.new(filename, source) if source && filename + + Guesser.guess(guessers, Lexer.all) + end + + # Guess which lexer to use based on a hash of info. + # + # @option info :mimetype + # A mimetype to guess by + # @option info :filename + # A filename to guess by + # @option info :source + # The source itself, which, if guessing by mimetype or filename + # fails, will be searched for shebangs, tags, and + # other hints. + # @param [Proc] fallback called if multiple lexers are detected. + # If omitted, Guesser::Ambiguous is raised. + # + # @see Lexer.detect? + # @see Lexer.guesses + # @return [Class] + def guess(info={}, &fallback) + lexers = guesses(info) + + return Lexers::PlainText if lexers.empty? + return lexers[0] if lexers.size == 1 + + if fallback + fallback.call(lexers) + else + raise Guesser::Ambiguous.new(lexers) + end + end + + def guess_by_mimetype(mt) + guess :mimetype => mt + end + + def guess_by_filename(fname) + guess :filename => fname + end + + def guess_by_source(source) + guess :source => source + end + + def enable_debug! + @debug_enabled = true + end + + def disable_debug! + @debug_enabled = false + end + + def debug_enabled? + !!@debug_enabled + end + + protected + # @private + def register(name, lexer) + registry[name.to_s] = lexer + end + + public + # Used to specify or get the canonical name of this lexer class. + # + # @example + # class MyLexer < Lexer + # tag 'foo' + # end + # + # MyLexer.tag # => 'foo' + # + # Lexer.find('foo') # => MyLexer + def tag(t=nil) + return @tag if t.nil? + + @tag = t.to_s + Lexer.register(@tag, self) + end + + # Used to specify alternate names this lexer class may be found by. + # + # @example + # class Erb < Lexer + # tag 'erb' + # aliases 'eruby', 'rhtml' + # end + # + # Lexer.find('eruby') # => Erb + def aliases(*args) + args.map!(&:to_s) + args.each { |arg| Lexer.register(arg, self) } + (@aliases ||= []).concat(args) + end + + # Specify a list of filename globs associated with this lexer. + # + # @example + # class Ruby < Lexer + # filenames '*.rb', '*.ruby', 'Gemfile', 'Rakefile' + # end + def filenames(*fnames) + (@filenames ||= []).concat(fnames) + end + + # Specify a list of mimetypes associated with this lexer. + # + # @example + # class Html < Lexer + # mimetypes 'text/html', 'application/xhtml+xml' + # end + def mimetypes(*mts) + (@mimetypes ||= []).concat(mts) + end + + # @private + def assert_utf8!(str) + return if %w(US-ASCII UTF-8 ASCII-8BIT).include? str.encoding.name + raise EncodingError.new( + "Bad encoding: #{str.encoding.names.join(',')}. " + + "Please convert your string to UTF-8." + ) + end + + private + def registry + @registry ||= {} + end + end + + # -*- instance methods -*- # + + attr_reader :options + # Create a new lexer with the given options. Individual lexers may + # specify extra options. The only current globally accepted option + # is `:debug`. + # + # @option opts :debug + # Prints debug information to stdout. The particular info depends + # on the lexer in question. In regex lexers, this will log the + # state stack at the beginning of each step, along with each regex + # tried and each stream consumed. Try it, it's pretty useful. + def initialize(opts={}) + @options = {} + opts.each { |k, v| @options[k.to_s] = v } + + @debug = Lexer.debug_enabled? && bool_option(:debug) + end + + def as_bool(val) + case val + when nil, false, 0, '0', 'off' + false + when Array + val.empty? ? true : as_bool(val.last) + else + true + end + end + + def as_string(val) + return as_string(val.last) if val.is_a?(Array) + + val ? val.to_s : nil + end + + def as_list(val) + case val + when Array + val.flat_map { |v| as_list(v) } + when String + val.split(',') + else + [] + end + end + + def as_lexer(val) + return as_lexer(val.last) if val.is_a?(Array) + return val.new(@options) if val.is_a?(Class) && val < Lexer + + case val + when Lexer + val + when String + lexer_class = Lexer.find(val) + lexer_class && lexer_class.new(@options) + end + end + + def as_token(val) + return as_token(val.last) if val.is_a?(Array) + case val + when Token + val + else + Token[val] + end + end + + def bool_option(name, &default) + if @options.key?(name.to_s) + as_bool(@options[name.to_s]) + else + default ? default.call : false + end + end + + def string_option(name, &default) + as_string(@options.delete(name.to_s, &default)) + end + + def lexer_option(name, &default) + as_lexer(@options.delete(name.to_s, &default)) + end + + def list_option(name, &default) + as_list(@options.delete(name.to_s, &default)) + end + + def token_option(name, &default) + as_token(@options.delete(name.to_s, &default)) + end + + def hash_option(name, defaults, &val_cast) + name = name.to_s + out = defaults.dup + + base = @options.delete(name.to_s) + base = {} unless base.is_a?(Hash) + base.each { |k, v| out[k.to_s] = val_cast ? val_cast.call(v) : v } + + @options.keys.each do |key| + next unless key =~ /(\w+)\[(\w+)\]/ and $1 == name + value = @options.delete(key) + + out[$2] = val_cast ? val_cast.call(value) : value + end + + out + end + + # @abstract + # + # Called after each lex is finished. The default implementation + # is a noop. + def reset! + end + + # Given a string, yield [token, chunk] pairs. If no block is given, + # an enumerator is returned. + # + # @option opts :continue + # Continue the lex from the previous state (i.e. don't call #reset!) + def lex(string, opts={}, &b) + return enum_for(:lex, string, opts) unless block_given? + + Lexer.assert_utf8!(string) + + reset! unless opts[:continue] + + # consolidate consecutive tokens of the same type + last_token = nil + last_val = nil + stream_tokens(string) do |tok, val| + next if val.empty? + + if tok == last_token + last_val << val + next + end + + b.call(last_token, last_val) if last_token + last_token = tok + last_val = val + end + + b.call(last_token, last_val) if last_token + end + + # delegated to {Lexer.tag} + def tag + self.class.tag + end + + # @abstract + # + # Yield `[token, chunk]` pairs, given a prepared input stream. This + # must be implemented. + # + # @param [StringScanner] stream + # the stream + def stream_tokens(stream, &b) + raise 'abstract' + end + + # @abstract + # + # Return true if there is an in-text indication (such as a shebang + # or DOCTYPE declaration) that this lexer should be used. + # + # @param [TextAnalyzer] text + # the text to be analyzed, with a couple of handy methods on it, + # like {TextAnalyzer#shebang?} and {TextAnalyzer#doctype?} + def self.detect?(text) + false + end + end + + module Lexers + @_loaded_lexers = {} + + def self.load_lexer(relpath) + return if @_loaded_lexers.key?(relpath) + @_loaded_lexers[relpath] = true + + root = Pathname.new(__FILE__).dirname.join('lexers') + load root.join(relpath) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/abap.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/abap.rb new file mode 100644 index 0000000000..01137721ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/abap.rb @@ -0,0 +1,240 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# ABAP elements taken from http://help.sap.com/abapdocu_750/en/index.htm?file=abapdo.htm + +module Rouge + module Lexers + class ABAP < RegexLexer + title "ABAP" + desc "SAP - Advanced Business Application Programming" + tag 'abap' + filenames '*.abap' + mimetypes 'text/x-abap' + + def self.keywords + @keywords = Set.new %w( + *-INPUT ?TO ABAP-SOURCE ABBREVIATED ABS ABSTRACT ACCEPT ACCEPTING + ACCORDING ACCP ACTIVATION ACTUAL ADD ADD-CORRESPONDING ADJACENT + AFTER ALIAS ALIASES ALIGN ALL ALLOCATE ALPHA ANALYSIS ANALYZER AND + ANY APPEND APPENDAGE APPENDING APPLICATION ARCHIVE AREA ARITHMETIC + AS ASCENDING ASPECT ASSERT ASSIGN ASSIGNED ASSIGNING ASSOCIATION + ASYNCHRONOUS AT ATTRIBUTES AUTHORITY AUTHORITY-CHECK AVG BACK + BACKGROUND BACKUP BACKWARD BADI BASE BEFORE BEGIN BETWEEN BIG BINARY + BINTOHEX BIT BIT-AND BIT-NOT BIT-OR BIT-XOR BLACK BLANK BLANKS BLOB + BLOCK BLOCKS BLUE BOUND BOUNDARIES BOUNDS BOXED BREAK-POINT BT + BUFFER BY BYPASSING BYTE BYTE-CA BYTE-CN BYTE-CO BYTE-CS BYTE-NA + BYTE-NS BYTE-ORDER CA CALL CALLING CASE CAST CASTING CATCH CEIL + CENTER CENTERED CHAIN CHAIN-INPUT CHAIN-REQUEST CHANGE CHANGING + CHANNELS CHAR CHAR-TO-HEX CHARACTER CHECK CHECKBOX CIRCULAR CLASS + CLASS-CODING CLASS-DATA CLASS-EVENTS CLASS-METHODS CLASS-POOL + CLEANUP CLEAR CLIENT CLNT CLOB CLOCK CLOSE CN CO COALESCE CODE + CODING COLLECT COLOR COLUMN COLUMNS COL_BACKGROUND COL_GROUP + COL_HEADING COL_KEY COL_NEGATIVE COL_NORMAL COL_POSITIVE COL_TOTAL + COMMENT COMMENTS COMMIT COMMON COMMUNICATION COMPARING COMPONENT + COMPONENTS COMPRESSION COMPUTE CONCAT CONCATENATE CONCAT_WITH_SPACE + COND CONDENSE CONDITION CONNECT CONNECTION CONSTANTS CONTEXT + CONTEXTS CONTINUE CONTROL CONTROLS CONV CONVERSION CONVERT COPIES + COPY CORRESPONDING COUNT COUNTRY COVER CP CPI CREATE CREATING + CRITICAL CS CUKY CURR CURRENCY CURRENCY_CONVERSION CURRENT CURSOR + CURSOR-SELECTION CUSTOMER CUSTOMER-FUNCTION CX_DYNAMIC_CHECK + CX_NO_CHECK CX_ROOT CX_SQL_EXCEPTION CX_STATIC_CHECK DANGEROUS DATA + DATABASE DATAINFO DATASET DATE DATS DATS_ADD_DAYS DATS_ADD_MONTHS + DATS_DAYS_BETWEEN DATS_IS_VALID DAYLIGHT DD/MM/YY DD/MM/YYYY DDMMYY + DEALLOCATE DEC DECIMALS DECIMAL_SHIFT DECLARATIONS DEEP DEFAULT + DEFERRED DEFINE DEFINING DEFINITION DELETE DELETING DEMAND + DEPARTMENT DESCENDING DESCRIBE DESTINATION DETAIL DF16_DEC DF16_RAW + DF16_SCL DF34_DEC DF34_RAW DF34_SCL DIALOG DIRECTORY DISCONNECT + DISPLAY DISPLAY-MODE DISTANCE DISTINCT DIV DIVIDE + DIVIDE-CORRESPONDING DIVISION DO DUMMY DUPLICATE DUPLICATES DURATION + DURING DYNAMIC DYNPRO E EDIT EDITOR-CALL ELSE ELSEIF EMPTY ENABLED + ENABLING ENCODING END END-ENHANCEMENT-SECTION END-LINES + END-OF-DEFINITION END-OF-FILE END-OF-PAGE END-OF-SELECTION + END-TEST-INJECTION END-TEST-SEAM ENDAT ENDCASE ENDCATCH ENDCHAIN + ENDCLASS ENDDO ENDENHANCEMENT ENDEXEC ENDFORM ENDFUNCTION ENDIAN + ENDIF ENDING ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON + ENDPROVIDE ENDSELECT ENDTRY ENDWHILE ENDWITH ENGINEERING ENHANCEMENT + ENHANCEMENT-POINT ENHANCEMENT-SECTION ENHANCEMENTS ENTRIES ENTRY + ENVIRONMENT EQ EQUIV ERRORMESSAGE ERRORS ESCAPE ESCAPING EVENT + EVENTS EXACT EXCEPT EXCEPTION EXCEPTION-TABLE EXCEPTIONS EXCLUDE + EXCLUDING EXEC EXECUTE EXISTS EXIT EXIT-COMMAND EXPAND EXPANDING + EXPIRATION EXPLICIT EXPONENT EXPORT EXPORTING EXTEND EXTENDED + EXTENSION EXTRACT FAIL FETCH FIELD FIELD-GROUPS FIELD-SYMBOL + FIELD-SYMBOLS FIELDS FILE FILTER FILTER-TABLE FILTERS FINAL FIND + FIRST FIRST-LINE FIXED-POINT FKEQ FKGE FLOOR FLTP FLUSH FONT FOR + FORM FORMAT FORWARD FOUND FRAME FRAMES FREE FRIENDS FROM FUNCTION + FUNCTION-POOL FUNCTIONALITY FURTHER GAPS GE GENERATE GET + GET_PRINT_PARAMETERS GIVING GKEQ GKGE GLOBAL GRANT GREEN GROUP + GROUPS GT HANDLE HANDLER HARMLESS HASHED HAVING HDB HEAD-LINES + HEADER HEADERS HEADING HELP-ID HELP-REQUEST HEXTOBIN HIDE HIGH HINT + HOLD HOTSPOT I ICON ID IDENTIFICATION IDENTIFIER IDS IF + IF_ABAP_CLOSE_RESOURCE IF_ABAP_CODEPAGE IF_ABAP_DB_BLOB_HANDLE + IF_ABAP_DB_CLOB_HANDLE IF_ABAP_DB_LOB_HANDLE IF_ABAP_DB_READER + IF_ABAP_DB_WRITER IF_ABAP_READER IF_ABAP_WRITER IF_MESSAGE + IF_OS_CA_INSTANCE IF_OS_CA_PERSISTENCY IF_OS_FACTORY IF_OS_QUERY + IF_OS_QUERY_MANAGER IF_OS_QUERY_OPTIONS IF_OS_STATE + IF_OS_TRANSACTION IF_OS_TRANSACTION_MANAGER IF_SERIALIZABLE_OBJECT + IF_SHM_BUILD_INSTANCE IF_SYSTEM_UUID IF_T100_DYN_MSG IF_T100_MESSAGE + IGNORE IGNORING IMMEDIATELY IMPLEMENTATION IMPLEMENTATIONS + IMPLEMENTED IMPLICIT IMPORT IMPORTING IN INACTIVE INCL INCLUDE + INCLUDES INCLUDING INCREMENT INDEX INDEX-LINE INFOTYPES INHERITING + INIT INITIAL INITIALIZATION INNER INOUT INPUT INSERT INSTANCE + INSTANCES INSTR INT1 INT2 INT4 INT8 INTENSIFIED INTERFACE + INTERFACE-POOL INTERFACES INTERNAL INTERVALS INTO INVERSE + INVERTED-DATE IS ISO ITNO JOB JOIN KEEP KEEPING KERNEL KEY KEYS + KEYWORDS KIND LANG LANGUAGE LAST LATE LAYOUT LCHR LDB_PROCESS LE + LEADING LEAVE LEFT LEFT-JUSTIFIED LEFTPLUS LEFTSPACE LEGACY LENGTH + LET LEVEL LEVELS LIKE LINE LINE-COUNT LINE-SELECTION LINE-SIZE + LINEFEED LINES LIST LIST-PROCESSING LISTBOX LITTLE LLANG LOAD + LOAD-OF-PROGRAM LOB LOCAL LOCALE LOCATOR LOG-POINT LOGFILE LOGICAL + LONG LOOP LOW LOWER LPAD LPI LRAW LT LTRIM M MAIL MAIN MAJOR-ID + MAPPING MARGIN MARK MASK MATCH MATCHCODE MAX MAXIMUM MEDIUM MEMBERS + MEMORY MESH MESSAGE MESSAGE-ID MESSAGES MESSAGING METHOD METHODS MIN + MINIMUM MINOR-ID MM/DD/YY MM/DD/YYYY MMDDYY MOD MODE MODIF MODIFIER + MODIFY MODULE MOVE MOVE-CORRESPONDING MULTIPLY + MULTIPLY-CORRESPONDING NA NAME NAMETAB NATIVE NB NE NESTED NESTING + NEW NEW-LINE NEW-PAGE NEW-SECTION NEXT NO NO-DISPLAY NO-EXTENSION + NO-GAP NO-GAPS NO-GROUPING NO-HEADING NO-SCROLLING NO-SIGN NO-TITLE + NO-TOPOFPAGE NO-ZERO NODE NODES NON-UNICODE NON-UNIQUE NOT NP NS + NULL NUMBER NUMC O OBJECT OBJECTS OBLIGATORY OCCURRENCE OCCURRENCES + OCCURS OF OFF OFFSET ON ONLY OPEN OPTION OPTIONAL OPTIONS OR ORDER + OTHER OTHERS OUT OUTER OUTPUT OUTPUT-LENGTH OVERFLOW OVERLAY PACK + PACKAGE PAD PADDING PAGE PAGES PARAMETER PARAMETER-TABLE PARAMETERS + PART PARTIALLY PATTERN PERCENTAGE PERFORM PERFORMING PERSON PF + PF-STATUS PINK PLACES POOL POSITION POS_HIGH POS_LOW PRAGMAS PREC + PRECOMPILED PREFERRED PRESERVING PRIMARY PRINT PRINT-CONTROL + PRIORITY PRIVATE PROCEDURE PROCESS PROGRAM PROPERTY PROTECTED + PROVIDE PUBLIC PUSH PUSHBUTTON PUT QUAN QUEUE-ONLY QUICKINFO + RADIOBUTTON RAISE RAISING RANGE RANGES RAW RAWSTRING READ READ-ONLY + READER RECEIVE RECEIVED RECEIVER RECEIVING RED REDEFINITION REDUCE + REDUCED REF REFERENCE REFRESH REGEX REJECT REMOTE RENAMING REPLACE + REPLACEMENT REPLACING REPORT REQUEST REQUESTED RESERVE RESET + RESOLUTION RESPECTING RESPONSIBLE RESULT RESULTS RESUMABLE RESUME + RETRY RETURN RETURNCODE RETURNING RETURNS RIGHT RIGHT-JUSTIFIED + RIGHTPLUS RIGHTSPACE RISK RMC_COMMUNICATION_FAILURE + RMC_INVALID_STATUS RMC_SYSTEM_FAILURE ROLE ROLLBACK ROUND ROWS RPAD + RTRIM RUN SAP SAP-SPOOL SAVING SCALE_PRESERVING + SCALE_PRESERVING_SCIENTIFIC SCAN SCIENTIFIC + SCIENTIFIC_WITH_LEADING_ZERO SCREEN SCROLL SCROLL-BOUNDARY SCROLLING + SEARCH SECONDARY SECONDS SECTION SELECT SELECT-OPTIONS SELECTION + SELECTION-SCREEN SELECTION-SET SELECTION-SETS SELECTION-TABLE + SELECTIONS SEND SEPARATE SEPARATED SET SHARED SHIFT SHORT + SHORTDUMP-ID SIGN SIGN_AS_POSTFIX SIMPLE SINGLE SIZE SKIP SKIPPING + SMART SOME SORT SORTABLE SORTED SOURCE SPACE SPECIFIED SPLIT SPOOL + SPOTS SQL SQLSCRIPT SSTRING STABLE STAMP STANDARD START-OF-SELECTION + STARTING STATE STATEMENT STATEMENTS STATIC STATICS STATUSINFO + STEP-LOOP STOP STRING STRUCTURE STRUCTURES STYLE SUBKEY SUBMATCHES + SUBMIT SUBROUTINE SUBSCREEN SUBSTRING SUBTRACT + SUBTRACT-CORRESPONDING SUFFIX SUM SUMMARY SUMMING SUPPLIED SUPPLY + SUPPRESS SWITCH SWITCHSTATES SYMBOL SYNCPOINTS SYNTAX SYNTAX-CHECK + SYNTAX-TRACE SYST SYSTEM-CALL SYSTEM-EXCEPTIONS SYSTEM-EXIT TAB + TABBED TABLE TABLES TABLEVIEW TABSTRIP TARGET TASK TASKS TEST + TEST-INJECTION TEST-SEAM TESTING TEXT TEXTPOOL THEN THROW TIME TIMES + TIMESTAMP TIMEZONE TIMS TIMS_IS_VALID TITLE TITLE-LINES TITLEBAR TO + TOKENIZATION TOKENS TOP-LINES TOP-OF-PAGE TRACE-FILE TRACE-TABLE + TRAILING TRANSACTION TRANSFER TRANSFORMATION TRANSLATE TRANSPORTING + TRMAC TRUNCATE TRUNCATION TRY TSTMP_ADD_SECONDS + TSTMP_CURRENT_UTCTIMESTAMP TSTMP_IS_VALID TSTMP_SECONDS_BETWEEN TYPE + TYPE-POOL TYPE-POOLS TYPES ULINE UNASSIGN UNDER UNICODE UNION UNIQUE + UNIT UNIT_CONVERSION UNIX UNPACK UNTIL UNWIND UP UPDATE UPPER USER + USER-COMMAND USING UTF-8 VALID VALUE VALUE-REQUEST VALUES VARC VARY + VARYING VERIFICATION-MESSAGE VERSION VIA VIEW VISIBLE WAIT WARNING + WHEN WHENEVER WHERE WHILE WIDTH WINDOW WINDOWS WITH WITH-HEADING + WITH-TITLE WITHOUT WORD WORK WRITE WRITER XML XSD YELLOW YES YYMMDD + Z ZERO ZONE + ) + end + + def self.builtins + @keywords = Set.new %w( + acos apply asin assign atan attribute bit-set boolc boolx call + call-method cast ceil cfunc charlen char_off class_constructor clear + cluster cmax cmin cnt communication_failure concat_lines_of cond + cond-var condense constructor contains contains_any_not_of + contains_any_of copy cos cosh count count_any_not_of count_any_of + create cursor data dbmaxlen dbtab deserialize destructor distance + empty error_message escape exp extensible find find_any_not_of + find_any_of find_end floor frac from_mixed group hashed header idx + include index insert ipow itab key lax lines line_exists line_index + log log10 loop loop_key match matches me mesh_path namespace nmax + nmin node numeric numofchar object parameter primary_key read ref + repeat replace rescale resource_failure reverse root round segment + sender serialize shift_left shift_right sign simple sin sinh skip + sorted space sqrt standard strlen substring substring_after + substring_before substring_from substring_to sum switch switch-var + system_failure table table_line tan tanh template text to_lower + to_mixed to_upper transform translate trunc type value variable write + xsdbool xsequence xstrlen + ) + end + + def self.types + @types = Set.new %w( + b c d decfloat16 decfloat34 f i int8 n p s t x + clike csequence decfloat string xstring + ) + end + + def self.new_keywords + @types = Set.new %w( + DATA FIELD-SYMBOL + ) + end + + state :root do + rule /\s+/m, Text + + rule /".*/, Comment::Single + rule %r(^\*.*), Comment::Multiline + rule /\d+/, Num::Integer + rule /('|`)/, Str::Single, :single_string + rule /[\[\]\(\)\{\}\[\]\.,:\|]/, Punctuation + + # builtins / new ABAP 7.40 keywords (@DATA(), ...) + rule /(->|=>)?([A-Za-z][A-Za-z0-9_\-]*)(\()/ do |m| + if m[1] != '' + token Operator, m[1] + end + + if (self.class.new_keywords.include? m[2].upcase) && m[1].nil? + token Keyword, m[2] + elsif (self.class.builtins.include? m[2].downcase) && m[1].nil? + token Name::Builtin, m[2] + else + token Name, m[2] + end + token Punctuation, m[3] + end + + # keywords, types and normal text + rule /\w[\w\d]*/ do |m| + if self.class.keywords.include? m[0].upcase + token Keyword + elsif self.class.types.include? m[0].downcase + token Keyword::Type + else + token Name + end + end + + # operators + rule %r((->|->>|=>)), Operator + rule %r([-\*\+%/~=&\?<>!#\@\^]+), Operator + + end + + state :operators do + rule %r((->|->>|=>)), Operator + rule %r([-\*\+%/~=&\?<>!#\@\^]+), Operator + end + + state :single_string do + rule /\\./, Str::Escape + rule /(''|``)/, Str::Escape + rule /['`]/, Str::Single, :pop! + rule /[^\\'`]+/, Str::Single + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/actionscript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/actionscript.rb new file mode 100644 index 0000000000..4db4b72312 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/actionscript.rb @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Actionscript < RegexLexer + title "ActionScript" + desc "ActionScript" + + tag 'actionscript' + aliases 'as', 'as3' + filenames '*.as' + mimetypes 'application/x-actionscript' + + state :comments_and_whitespace do + rule /\s+/, Text + rule %r(//.*?$), Comment::Single + rule %r(/\*.*?\*/)m, Comment::Multiline + end + + state :expr_start do + mixin :comments_and_whitespace + + rule %r(/) do + token Str::Regex + goto :regex + end + + rule /[{]/, Punctuation, :object + + rule //, Text, :pop! + end + + state :regex do + rule %r(/) do + token Str::Regex + goto :regex_end + end + + rule %r([^/]\n), Error, :pop! + + rule /\n/, Error, :pop! + rule /\[\^/, Str::Escape, :regex_group + rule /\[/, Str::Escape, :regex_group + rule /\\./, Str::Escape + rule %r{[(][?][:=>>? | === + | !== )x, + Operator, :expr_start + rule %r([:-<>+*%&|\^/!=]=?), Operator, :expr_start + rule /[(\[,]/, Punctuation, :expr_start + rule /;/, Punctuation, :statement + rule /[)\].]/, Punctuation + + rule /[?]/ do + token Punctuation + push :ternary + push :expr_start + end + + rule /[{}]/, Punctuation, :statement + + rule id do |m| + if self.class.keywords.include? m[0] + token Keyword + push :expr_start + elsif self.class.declarations.include? m[0] + token Keyword::Declaration + push :expr_start + elsif self.class.reserved.include? m[0] + token Keyword::Reserved + elsif self.class.constants.include? m[0] + token Keyword::Constant + elsif self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Other + end + end + + rule /\-?[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float + rule /0x[0-9a-fA-F]+/, Num::Hex + rule /\-?[0-9]+/, Num::Integer + rule /"(\\\\|\\"|[^"])*"/, Str::Double + rule /'(\\\\|\\'|[^'])*'/, Str::Single + end + + # braced parts that aren't object literals + state :statement do + rule /(#{id})(\s*)(:)/ do + groups Name::Label, Text, Punctuation + end + + rule /[{}]/, Punctuation + + mixin :expr_start + end + + # object literals + state :object do + mixin :comments_and_whitespace + rule /[}]/ do + token Punctuation + goto :statement + end + + rule /(#{id})(\s*)(:)/ do + groups Name::Attribute, Text, Punctuation + push :expr_start + end + + rule /:/, Punctuation + mixin :root + end + + # ternary expressions, where : is not a label! + state :ternary do + rule /:/ do + token Punctuation + goto :expr_start + end + + mixin :root + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache.rb new file mode 100644 index 0000000000..e07390e347 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require 'yaml' + +module Rouge + module Lexers + class Apache < RegexLexer + title "Apache" + desc 'configuration files for Apache web server' + tag 'apache' + mimetypes 'text/x-httpd-conf', 'text/x-apache-conf' + filenames '.htaccess', 'httpd.conf' + + class << self + attr_reader :keywords + end + # Load Apache keywords from separate YML file + @keywords = ::YAML.load_file(Pathname.new(__FILE__).dirname.join('apache/keywords.yml')).tap do |h| + h.each do |k,v| + h[k] = Set.new v + end + end + + def name_for_token(token, kwtype, tktype) + if self.class.keywords[kwtype].include? token + tktype + else + Text + end + end + + state :whitespace do + rule /\#.*/, Comment + rule /\s+/m, Text + end + + state :root do + mixin :whitespace + + rule /(<\/?)(\w+)/ do |m| + groups Punctuation, name_for_token(m[2].downcase, :sections, Name::Label) + push :section + end + + rule /\w+/ do |m| + token name_for_token(m[0].downcase, :directives, Name::Class) + push :directive + end + end + + state :section do + # Match section arguments + rule /([^>]+)?(>(?:\r\n?|\n)?)/ do |m| + groups Literal::String::Regex, Punctuation + pop! + end + + mixin :whitespace + end + + state :directive do + # Match value literals and other directive arguments + rule /\r\n?|\n/, Text, :pop! + + mixin :whitespace + + rule /\S+/ do |m| + token name_for_token(m[0], :values, Literal::String::Symbol) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache/keywords.yml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache/keywords.yml new file mode 100644 index 0000000000..6b415d8025 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apache/keywords.yml @@ -0,0 +1,764 @@ +:sections: + - "directory" + - "directorymatch" + - "files" + - "filesmatch" + - "ifdefine" + - "ifmodule" + - "limit" + - "limitexcept" + - "location" + - "locationmatch" + - "proxy" + - "proxymatch" + - "virtualhost" + +:directives: + - "acceptfilter" + - "acceptmutex" + - "acceptpathinfo" + - "accessconfig" + - "accessfilename" + - "action" + - "addalt" + - "addaltbyencoding" + - "addaltbytype" + - "addcharset" + - "adddefaultcharset" + - "adddescription" + - "addencoding" + - "addhandler" + - "addicon" + - "addiconbyencoding" + - "addiconbytype" + - "addinputfilter" + - "addlanguage" + - "addmodule" + - "addmoduleinfo" + - "addoutputfilter" + - "addoutputfilterbytype" + - "addtype" + - "agentlog" + - "alias" + - "aliasmatch" + - "allow" + - "allowconnect" + - "allowencodedslashes" + - "allowmethods" + - "allowoverride" + - "allowoverridelist" + - "anonymous" + - "anonymous_authoritative" + - "anonymous_logemail" + - "anonymous_mustgiveemail" + - "anonymous_nouserid" + - "anonymous_verifyemail" + - "assignuserid" + - "authauthoritative" + - "authdbauthoritative" + - "authdbgroupfile" + - "authdbmauthoritative" + - "asyncrequestworkerfactor" + - "authbasicauthoritative" + - "authbasicfake" + - "authbasicprovider" + - "authbasicusedigestalgorithm" + - "authdbduserpwquery" + - "authdbduserrealmquery" + - "authdbmgroupfile" + - "authdbmtype" + - "authdbmuserfile" + - "authdbuserfile" + - "authdigestalgorithm" + - "authdigestdomain" + - "authdigestfile" + - "authdigestgroupfile" + - "authdigestnccheck" + - "authdigestnonceformat" + - "authdigestnoncelifetime" + - "authdigestprovider" + - "authdigestqop" + - "authdigestshmemsize" + - "authformauthoritative" + - "authformbody" + - "authformdisablenostore" + - "authformfakebasicauth" + - "authformlocation" + - "authformloginrequiredlocation" + - "authformloginsuccesslocation" + - "authformlogoutlocation" + - "authformmethod" + - "authformmimetype" + - "authformpassword" + - "authformprovider" + - "authformsitepassphrase" + - "authformsize" + - "authformusername" + - "authgroupfile" + - "authldapauthoritative" + - "authldapauthorizeprefix" + - "authldapbindauthoritative" + - "authldapbinddn" + - "authldapbindpassword" + - "authldapcharsetconfig" + - "authldapcompareasuser" + - "authldapcomparednonserver" + - "authldapdereferencealiases" + - "authldapenabled" + - "authldapfrontpagehack" + - "authldapgroupattribute" + - "authldapgroupattributeisdn" + - "authldapinitialbindasuser" + - "authldapinitialbindpattern" + - "authldapmaxsubgroupdepth" + - "authldapremoteuserattribute" + - "authldapremoteuserisdn" + - "authldapsearchasuser" + - "authldapsubgroupattribute" + - "authldapsubgroupclass" + - "authldapurl" + - "authmerging" + - "authname" + - "authncachecontext" + - "authncacheenable" + - "authncacheprovidefor" + - "authncachesocache" + - "authncachetimeout" + - "authnzfcgicheckauthnprovider" + - "authnzfcgidefineprovider" + - "authtype" + - "authuserfile" + - "authzdbdlogintoreferer" + - "authzdbdquery" + - "authzdbdredirectquery" + - "authzdbmtype" + - "authzsendforbiddenonfailure" + - "balancergrowth" + - "balancerinherit" + - "balancermember" + - "balancerpersist" + - "bindaddress" + - "browsermatch" + - "browsermatchnocase" + - "bs2000account" + - "bufferedlogs" + - "buffersize" + - "cachedefaultexpire" + - "cachedetailheader" + - "cachedirlength" + - "cachedirlevels" + - "cachedisable" + - "cacheenable" + - "cacheexpirycheck" + - "cachefile" + - "cacheforcecompletion" + - "cachegcclean" + - "cachegcdaily" + - "cachegcinterval" + - "cachegcmemusage" + - "cachegcunused" + - "cacheheader" + - "cacheignorecachecontrol" + - "cacheignoreheaders" + - "cacheignorenolastmod" + - "cacheignorequerystring" + - "cacheignoreurlsessionidentifiers" + - "cachekeybaseurl" + - "cachelastmodifiedfactor" + - "cachelock" + - "cachelockmaxage" + - "cachelockpath" + - "cachemaxexpire" + - "cachemaxfilesize" + - "cacheminexpire" + - "cacheminfilesize" + - "cachenegotiateddocs" + - "cachequickhandler" + - "cachereadsize" + - "cachereadtime" + - "cacheroot" + - "cachesize" + - "cachetimemargin" + - "cachesocache" + - "cachesocachemaxsize" + - "cachesocachemaxtime" + - "cachesocachemintime" + - "cachesocachereadsize" + - "cachesocachereadtime" + - "cachestaleonerror" + - "cachestoreexpired" + - "cachestorenostore" + - "cachestoreprivate" + - "cgidscripttimeout" + - "cgimapextension" + - "cgipassauth" + - "charsetdefault" + - "charsetoptions" + - "charsetsourceenc" + - "checkcaseonly" + - "checkspelling" + - "childperuserid" + - "clearmodulelist" + - "chrootdir" + - "contentdigest" + - "cookiedomain" + - "cookieexpires" + - "cookielog" + - "cookiename" + - "cookiestyle" + - "cookietracking" + - "coredumpdirectory" + - "customlog" + - "dav" + - "davdepthinfinity" + - "davgenericlockdb" + - "davlockdb" + - "davmintimeout" + - "dbdexptime" + - "dbdinitsql" + - "dbdkeep" + - "dbdmax" + - "dbdmin" + - "dbdparams" + - "dbdpersist" + - "dbdpreparesql" + - "dbdriver" + - "defaulticon" + - "defaultlanguage" + - "defaultmode" + - "defaultruntimedir" + - "defaulttype" + - "define" + - "deflatebuffersize" + - "deflatecompressionlevel" + - "deflatefilternote" + - "deflateinflatelimitrequestbody" + - "deflateinflateratioburst" + - "deflateinflateratiolimit" + - "deflatememlevel" + - "deflatewindowsize" + - "deny" + - "directorycheckhandler" + - "directoryindex" + - "directoryindexredirect" + - "directoryslash" + - "doctitle" + - "doctrailer" + - "documentroot" + - "dtraceprivileges" + - "dumpioinput" + - "dumpiooutput" + - "enableexceptionhook" + - "enablemmap" + - "enablesendfile" + - "error" + - "errordocument" + - "errorlog" + - "errorlogformat" + - "example" + - "expiresactive" + - "expiresbytype" + - "expiresdefault" + - "extendedstatus" + - "extfilterdefine" + - "extfilteroptions" + - "fallbackresource" + - "fancyindexing" + - "fileetag" + - "filterchain" + - "filterdeclare" + - "filterprotocol" + - "filterprovider" + - "filtertrace" + - "forcelanguagepriority" + - "forcetype" + - "forensiclog" + - "globallog" + - "gprofdir" + - "gracefulshutdowntimeout" + - "group" + - "h2direct" + - "h2keepalivetimeout" + - "h2maxsessionstreams" + - "h2maxworkeridleseconds" + - "h2maxworkers" + - "h2minworkers" + - "h2moderntlsonly" + - "h2push" + - "h2pushdiarysize" + - "h2pushpriority" + - "h2serializeheaders" + - "h2sessionextrafiles" + - "h2streammaxmemsize" + - "h2streamtimeout" + - "h2timeout" + - "h2tlscooldownsecs" + - "h2tlswarmupsize" + - "h2upgrade" + - "h2windowsize" + - "header" + - "headername" + - "headprefix" + - "headsuffix" + - "hidesys" + - "hideurl" + - "heartbeataddress" + - "heartbeatlisten" + - "heartbeatmaxservers" + - "heartbeatstorage" + - "heartbeatstorage" + - "hostnamelookups" + - "htmldir" + - "httplogfile" + - "identitycheck" + - "identitychecktimeout" + - "imapbase" + - "imapdefault" + - "imapmenu" + - "include" + - "includeoptional" + - "indexheadinsert" + - "indexignore" + - "indexignorereset" + - "indexoptions" + - "indexorderdefault" + - "indexstylesheet" + - "inputsed" + - "isapiappendlogtoerrors" + - "isapiappendlogtoquery" + - "isapicachefile" + - "isapifakeasync" + - "isapilognotsupported" + - "isapireadaheadbuffer" + - "keepalive" + - "keepalivetimeout" + - "keptbodysize" + - "languagepriority" + - "lasturls" + - "ldapcacheentries" + - "ldapcachettl" + - "ldapconnectionpoolttl" + - "ldapconnectiontimeout" + - "ldaplibrarydebug" + - "ldapopcacheentries" + - "ldapopcachettl" + - "ldapreferralhoplimit" + - "ldapreferrals" + - "ldapretries" + - "ldapretrydelay" + - "ldapsharedcachefile" + - "ldapsharedcachesize" + - "ldaptimeout" + - "ldaptrustedca" + - "ldaptrustedcatype" + - "ldaptrustedclientcert" + - "ldaptrustedglobalcert" + - "ldaptrustedmode" + - "ldapverifyservercert" + - "limitinternalrecursion" + - "limitrequestbody" + - "limitrequestfields" + - "limitrequestfieldsize" + - "limitrequestline" + - "limitxmlrequestbody" + - "listen" + - "listenbacklog" + - "listencoresbucketsratio" + - "loadfile" + - "loadmodule" + - "lockfile" + - "logformat" + - "logiotrackttfb" + - "loglevel" + - "logmessage" + - "luaauthzprovider" + - "luacodecache" + - "luahookaccesschecker" + - "luahookauthchecker" + - "luahookcheckuserid" + - "luahookfixups" + - "luahookinsertfilter" + - "luahooklog" + - "luahookmaptostorage" + - "luahooktranslatename" + - "luahooktypechecker" + - "luainherit" + - "luainputfilter" + - "luamaphandler" + - "luaoutputfilter" + - "luapackagecpath" + - "luapackagepath" + - "luaquickhandler" + - "luaroot" + - "luascope" + - "maxclients" + - "maxconnectionsperchild" + - "maxkeepaliverequests" + - "maxmemfree" + - "maxrequestsperchild" + - "maxrequestsperthread" + - "maxrangeoverlaps" + - "maxrangereversals" + - "maxranges" + - "maxrequestworkers" + - "maxspareservers" + - "maxsparethreads" + - "maxthreads" + - "maxthreadsperchild" + - "mcachemaxobjectcount" + - "mcachemaxobjectsize" + - "mcachemaxstreamingbuffer" + - "mcacheminobjectsize" + - "mcacheremovalalgorithm" + - "mcachesize" + - "memcacheconnttl" + - "mergetrailers" + - "metadir" + - "metafiles" + - "metasuffix" + - "mimemagicfile" + - "minspareservers" + - "minsparethreads" + - "mmapfile" + - "modemstandard" + - "modmimeusepathinfo" + - "multiviewsmatch" + - "mutex" + - "namevirtualhost" + - "nocache" + - "noproxy" + - "numservers" + - "nwssltrustedcerts" + - "nwsslupgradeable" + - "options" + - "order" + - "outputsed" + - "passenv" + - "pidfile" + - "port" + - "privatedir" + - "privilegesmode" + - "protocol" + - "protocolecho" + - "protocols" + - "protocolshonororder" + - "proxyaddheaders" + - "proxybadheader" + - "proxyblock" + - "proxydomain" + - "proxyerroroverride" + - "proxyexpressdbmfile" + - "proxyexpressdbmtype" + - "proxyexpressenable" + - "proxyftpdircharset" + - "proxyftpescapewildcards" + - "proxyftplistonwildcard" + - "proxyhtmlbufsize" + - "proxyhtmlcharsetout" + - "proxyhtmldoctype" + - "proxyhtmlenable" + - "proxyhtmlevents" + - "proxyhtmlextended" + - "proxyhtmlfixups" + - "proxyhtmlinterp" + - "proxyhtmllinks" + - "proxyhtmlmeta" + - "proxyhtmlstripcomments" + - "proxyhtmlurlmap" + - "proxyiobuffersize" + - "proxymaxforwards" + - "proxypass" + - "proxypassinherit" + - "proxypassinterpolateenv" + - "proxypassmatch" + - "proxypassreverse" + - "proxypassreversecookiedomain" + - "proxypassreversecookiepath" + - "proxypreservehost" + - "proxyreceivebuffersize" + - "proxyremote" + - "proxyremotematch" + - "proxyrequests" + - "proxyscgiinternalredirect" + - "proxyscgisendfile" + - "proxyset" + - "proxysourceaddress" + - "proxystatus" + - "proxytimeout" + - "proxyvia" + - "qualifyredirecturl" + - "readmename" + - "receivebuffersize" + - "redirect" + - "redirectmatch" + - "redirectpermanent" + - "redirecttemp" + - "refererignore" + - "refererlog" + - "reflectorheader" + - "remoteipheader" + - "remoteipinternalproxy" + - "remoteipinternalproxylist" + - "remoteipproxiesheader" + - "remoteiptrustedproxy" + - "remoteiptrustedproxylist" + - "removecharset" + - "removeencoding" + - "removehandler" + - "removeinputfilter" + - "removelanguage" + - "removeoutputfilter" + - "removetype" + - "requestheader" + - "requestreadtimeout" + - "require" + - "resourceconfig" + - "rewritebase" + - "rewritecond" + - "rewriteengine" + - "rewritelock" + - "rewritelog" + - "rewriteloglevel" + - "rewritemap" + - "rewriteoptions" + - "rewriterule" + - "rlimitcpu" + - "rlimitmem" + - "rlimitnproc" + - "satisfy" + - "scoreboardfile" + - "script" + - "scriptalias" + - "scriptaliasmatch" + - "scriptinterpretersource" + - "scriptlog" + - "scriptlogbuffer" + - "scriptloglength" + - "scriptsock" + - "securelisten" + - "seerequesttail" + - "sendbuffersize" + - "serveradmin" + - "serveralias" + - "serverlimit" + - "servername" + - "serverpath" + - "serverroot" + - "serversignature" + - "servertokens" + - "servertype" + - "session" + - "sessioncookiename" + - "sessioncookiename2" + - "sessioncookieremove" + - "sessioncryptocipher" + - "sessioncryptodriver" + - "sessioncryptopassphrase" + - "sessioncryptopassphrasefile" + - "sessiondbdcookiename" + - "sessiondbdcookiename2" + - "sessiondbdcookieremove" + - "sessiondbddeletelabel" + - "sessiondbdinsertlabel" + - "sessiondbdperuser" + - "sessiondbdselectlabel" + - "sessiondbdupdatelabel" + - "sessionenv" + - "sessionexclude" + - "sessionheader" + - "sessioninclude" + - "sessionmaxage" + - "setenv" + - "setenvif" + - "setenvifexpr" + - "setenvifnocase" + - "sethandler" + - "setinputfilter" + - "setoutputfilter" + - "ssiendtag" + - "ssierrormsg" + - "ssietag" + - "ssilastmodified" + - "ssilegacyexprparser" + - "ssistarttag" + - "ssitimeformat" + - "ssiundefinedecho" + - "sslcacertificatefile" + - "sslcacertificatepath" + - "sslcadnrequestfile" + - "sslcadnrequestpath" + - "sslcarevocationcheck" + - "sslcarevocationfile" + - "sslcarevocationpath" + - "sslcertificatechainfile" + - "sslcertificatefile" + - "sslcertificatekeyfile" + - "sslciphersuite" + - "sslcompression" + - "sslcryptodevice" + - "sslengine" + - "sslfips" + - "sslhonorcipherorder" + - "sslinsecurerenegotiation" + - "sslmutex" + - "sslocspdefaultresponder" + - "sslocspenable" + - "sslocspoverrideresponder" + - "sslocspproxyurl" + - "sslocsprespondertimeout" + - "sslocspresponsemaxage" + - "sslocspresponsetimeskew" + - "sslocspuserequestnonce" + - "sslopensslconfcmd" + - "ssloptions" + - "sslpassphrasedialog" + - "sslprotocol" + - "sslproxycacertificatefile" + - "sslproxycacertificatepath" + - "sslproxycarevocationcheck" + - "sslproxycarevocationfile" + - "sslproxycarevocationpath" + - "sslproxycheckpeercn" + - "sslproxycheckpeerexpire" + - "sslproxycheckpeername" + - "sslproxyciphersuite" + - "sslproxyengine" + - "sslproxymachinecertificatechainfile" + - "sslproxymachinecertificatefile" + - "sslproxymachinecertificatepath" + - "sslproxyprotocol" + - "sslproxyverify" + - "sslproxyverifydepth" + - "sslrandomseed" + - "sslrenegbuffersize" + - "sslrequire" + - "sslrequiressl" + - "sslsessioncache" + - "sslsessioncachetimeout" + - "sslsessionticketkeyfile" + - "sslsessiontickets" + - "sslsrpunknownuserseed" + - "sslsrpverifierfile" + - "sslstaplingcache" + - "sslstaplingerrorcachetimeout" + - "sslstaplingfaketrylater" + - "sslstaplingforceurl" + - "sslstaplingrespondertimeout" + - "sslstaplingresponsemaxage" + - "sslstaplingresponsetimeskew" + - "sslstaplingreturnrespondererrors" + - "sslstaplingstandardcachetimeout" + - "sslstrictsnivhostcheck" + - "sslusername" + - "sslusestapling" + - "sslverifyclient" + - "sslverifydepth" + - "startservers" + - "startthreads" + - "substitute" + - "substituteinheritbefore" + - "substitutemaxlinelength" + - "suexec" + - "suexecusergroup" + - "threadlimit" + - "threadsperchild" + - "threadstacksize" + - "timeout" + - "topsites" + - "topurls" + - "traceenable" + - "transferlog" + - "typesconfig" + - "undefine" + - "undefmacro" + - "unsetenv" + - "use" + - "usecanonicalname" + - "usecanonicalphysicalport" + - "user" + - "userdir" + - "vhostcgimode" + - "vhostcgiprivs" + - "vhostgroup" + - "vhostprivs" + - "vhostsecure" + - "vhostuser" + - "virtualdocumentroot" + - "virtualdocumentrootip" + - "virtualscriptalias" + - "virtualscriptaliasip" + - "win32disableacceptex" + - "watchdoginterval" + - "xbithack" + - "xml2encalias" + - "xml2encdefault" + - "xml2startparse" + +:values: + - "add" + - "All" + - "allow" + - "any" + - "append" + - "AuthConfig" + - "Basic" + - "CONNECT" + - "DELETE" + - "deny" + - "Digest" + - "double" + - "downgrade-1.0" + - "email" + - "env" + - "error" + - "ExecCGI" + - "FancyIndexing" + - "FileInfo" + - "FollowSymLinks" + - "force-response-1.0" + - "formatted" + - "from" + - "full" + - "Full" + - "GET" + - "gone" + - "group" + - "IconsAreLinks" + - "Includes" + - "IncludesNOEXEC" + - "Indexes" + - "inetd" + - "inherit" + - "Limit" + - "map" + - "Minimal" + - "MultiViews" + - "mutual-failure" + - "nocontent" + - "nokeepalive" + - "none" + - "None" + - "off" + - "on" + - "Options" + - "OPTIONS" + - "OS" + - "permanent" + - "POST" + - "PUT" + - "referer" + - "ScanHTMLTitles" + - "seeother" + - "semi-formatted" + - "set" + - "standalone" + - "SuppressDescription" + - "SuppressLastModified" + - "SuppressSize" + - "SymLinksIfOwnerMatch" + - "temporary" + - "unformatted" + - "unset" + - "URL" + - "user" + - "valid-user" diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apiblueprint.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apiblueprint.rb new file mode 100644 index 0000000000..7695c39081 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apiblueprint.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'markdown.rb' + + class APIBlueprint < Markdown + title 'API Blueprint' + desc 'Markdown based API description language.' + + tag 'apiblueprint' + aliases 'apiblueprint', 'apib' + filenames '*.apib' + mimetypes 'text/vnd.apiblueprint' + + prepend :root do + # Metadata + rule(/(\S+)(:\s*)(.*)$/) do + groups Name::Variable, Punctuation, Literal::String + end + + # Resource Group + rule(/^(#+)(\s*Group\s+)(.*)$/) do + groups Punctuation, Keyword, Generic::Heading + end + + # Resource \ Action + rule(/^(#+)(.*)(\[.*\])$/) do + groups Punctuation, Generic::Heading, Literal::String + end + + # Relation + rule(/^([\+\-\*])(\s*Relation:)(\s*.*)$/) do + groups Punctuation, Keyword, Literal::String + end + + # MSON + rule(/^(\s+[\+\-\*]\s*)(Attributes|Parameters)(.*)$/) do + groups Punctuation, Keyword, Literal::String + end + + # Request/Response + rule(/^([\+\-\*]\s*)(Request|Response)(\s+\d\d\d)?(.*)$/) do + groups Punctuation, Keyword, Literal::Number, Literal::String + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apple_script.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apple_script.rb new file mode 100644 index 0000000000..cc01bf2f7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/apple_script.rb @@ -0,0 +1,369 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class AppleScript < RegexLexer + title "AppleScript" + desc "The AppleScript scripting language by Apple Inc. (http://developer.apple.com/applescript/)" + + tag 'applescript' + aliases 'applescript' + + filenames '*.applescript', '*.scpt' + + mimetypes 'application/x-applescript' + + def self.literals + @literals ||= ['AppleScript', 'current application', 'false', 'linefeed', + 'missing value', 'pi','quote', 'result', 'return', 'space', + 'tab', 'text item delimiters', 'true', 'version'] + end + + def self.classes + @classes ||= ['alias ', 'application ', 'boolean ', 'class ', 'constant ', + 'date ', 'file ', 'integer ', 'list ', 'number ', 'POSIX file ', + 'real ', 'record ', 'reference ', 'RGB color ', 'script ', + 'text ', 'unit types', '(?:Unicode )?text', 'string'] + end + + def self.builtins + @builtins ||= ['attachment', 'attribute run', 'character', 'day', 'month', + 'paragraph', 'word', 'year'] + end + + def self.handler_params + @handler_params ||= ['about', 'above', 'against', 'apart from', 'around', + 'aside from', 'at', 'below', 'beneath', 'beside', + 'between', 'for', 'given', 'instead of', 'on', 'onto', + 'out of', 'over', 'since'] + end + + def self.commands + @commands ||= ['ASCII (character|number)', 'activate', 'beep', 'choose URL', + 'choose application', 'choose color', 'choose file( name)?', + 'choose folder', 'choose from list', + 'choose remote application', 'clipboard info', + 'close( access)?', 'copy', 'count', 'current date', 'delay', + 'delete', 'display (alert|dialog)', 'do shell script', + 'duplicate', 'exists', 'get eof', 'get volume settings', + 'info for', 'launch', 'list (disks|folder)', 'load script', + 'log', 'make', 'mount volume', 'new', 'offset', + 'open( (for access|location))?', 'path to', 'print', 'quit', + 'random number', 'read', 'round', 'run( script)?', + 'say', 'scripting components', + 'set (eof|the clipboard to|volume)', 'store script', + 'summarize', 'system attribute', 'system info', + 'the clipboard', 'time to GMT', 'write', 'quoted form'] + end + + def self.references + @references ||= ['(in )?back of', '(in )?front of', '[0-9]+(st|nd|rd|th)', + 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', + 'seventh', 'eighth', 'ninth', 'tenth', 'after', 'back', + 'before', 'behind', 'every', 'front', 'index', 'last', + 'middle', 'some', 'that', 'through', 'thru', 'where', 'whose'] + end + + def self.operators + @operators ||= ["and", "or", "is equal", "equals", "(is )?equal to", "is not", + "isn't", "isn't equal( to)?", "is not equal( to)?", + "doesn't equal", "does not equal", "(is )?greater than", + "comes after", "is not less than or equal( to)?", + "isn't less than or equal( to)?", "(is )?less than", + "comes before", "is not greater than or equal( to)?", + "isn't greater than or equal( to)?", + "(is )?greater than or equal( to)?", "is not less than", + "isn't less than", "does not come before", + "doesn't come before", "(is )?less than or equal( to)?", + "is not greater than", "isn't greater than", + "does not come after", "doesn't come after", "starts? with", + "begins? with", "ends? with", "contains?", "does not contain", + "doesn't contain", "is in", "is contained by", "is not in", + "is not contained by", "isn't contained by", "div", "mod", + "not", "(a )?(ref( to)?|reference to)", "is", "does"] + end + + def self.controls + @controls ||= ['considering', 'else', 'error', 'exit', 'from', 'if', + 'ignoring', 'in', 'repeat', 'tell', 'then', 'times', 'to', + 'try', 'until', 'using terms from', 'while', 'whith', + 'with timeout( of)?', 'with transaction', 'by', 'continue', + 'end', 'its?', 'me', 'my', 'return', 'of' , 'as'] + end + + def self.declarations + @declarations ||= ['global', 'local', 'prop(erty)?', 'set', 'get'] + end + + def self.reserved + @reserved ||= ['but', 'put', 'returning', 'the'] + end + + def self.studio_classes + @studio_classes ||= ['action cell', 'alert reply', 'application', 'box', + 'browser( cell)?', 'bundle', 'button( cell)?', 'cell', + 'clip view', 'color well', 'color-panel', + 'combo box( item)?', 'control', + 'data( (cell|column|item|row|source))?', 'default entry', + 'dialog reply', 'document', 'drag info', 'drawer', + 'event', 'font(-panel)?', 'formatter', + 'image( (cell|view))?', 'matrix', 'menu( item)?', 'item', + 'movie( view)?', 'open-panel', 'outline view', 'panel', + 'pasteboard', 'plugin', 'popup button', + 'progress indicator', 'responder', 'save-panel', + 'scroll view', 'secure text field( cell)?', 'slider', + 'sound', 'split view', 'stepper', 'tab view( item)?', + 'table( (column|header cell|header view|view))', + 'text( (field( cell)?|view))?', 'toolbar( item)?', + 'user-defaults', 'view', 'window'] + end + + def self.studio_events + @studio_events ||= ['accept outline drop', 'accept table drop', 'action', + 'activated', 'alert ended', 'awake from nib', 'became key', + 'became main', 'begin editing', 'bounds changed', + 'cell value', 'cell value changed', 'change cell value', + 'change item value', 'changed', 'child of item', + 'choose menu item', 'clicked', 'clicked toolbar item', + 'closed', 'column clicked', 'column moved', + 'column resized', 'conclude drop', 'data representation', + 'deminiaturized', 'dialog ended', 'document nib name', + 'double clicked', 'drag( (entered|exited|updated))?', + 'drop', 'end editing', 'exposed', 'idle', 'item expandable', + 'item value', 'item value changed', 'items changed', + 'keyboard down', 'keyboard up', 'launched', + 'load data representation', 'miniaturized', 'mouse down', + 'mouse dragged', 'mouse entered', 'mouse exited', + 'mouse moved', 'mouse up', 'moved', + 'number of browser rows', 'number of items', + 'number of rows', 'open untitled', 'opened', 'panel ended', + 'parameters updated', 'plugin loaded', 'prepare drop', + 'prepare outline drag', 'prepare outline drop', + 'prepare table drag', 'prepare table drop', + 'read from file', 'resigned active', 'resigned key', + 'resigned main', 'resized( sub views)?', + 'right mouse down', 'right mouse dragged', + 'right mouse up', 'rows changed', 'scroll wheel', + 'selected tab view item', 'selection changed', + 'selection changing', 'should begin editing', + 'should close', 'should collapse item', + 'should end editing', 'should expand item', + 'should open( untitled)?', + 'should quit( after last window closed)?', + 'should select column', 'should select item', + 'should select row', 'should select tab view item', + 'should selection change', 'should zoom', 'shown', + 'update menu item', 'update parameters', + 'update toolbar item', 'was hidden', 'was miniaturized', + 'will become active', 'will close', 'will dismiss', + 'will display browser cell', 'will display cell', + 'will display item cell', 'will display outline cell', + 'will finish launching', 'will hide', 'will miniaturize', + 'will move', 'will open', 'will pop up', 'will quit', + 'will resign active', 'will resize( sub views)?', + 'will select tab view item', 'will show', 'will zoom', + 'write to file', 'zoomed'] + end + + def self.studio_commands + @studio_commands ||= ['animate', 'append', 'call method', 'center', + 'close drawer', 'close panel', 'display', + 'display alert', 'display dialog', 'display panel', 'go', + 'hide', 'highlight', 'increment', 'item for', + 'load image', 'load movie', 'load nib', 'load panel', + 'load sound', 'localized string', 'lock focus', 'log', + 'open drawer', 'path for', 'pause', 'perform action', + 'play', 'register', 'resume', 'scroll', 'select( all)?', + 'show', 'size to fit', 'start', 'step back', + 'step forward', 'stop', 'synchronize', 'unlock focus', + 'update'] + end + + def self.studio_properties + @studio_properties ||= ['accepts arrow key', 'action method', 'active', + 'alignment', 'allowed identifiers', + 'allows branch selection', 'allows column reordering', + 'allows column resizing', 'allows column selection', + 'allows customization', 'allows editing text attributes', + 'allows empty selection', 'allows mixed state', + 'allows multiple selection', 'allows reordering', + 'allows undo', 'alpha( value)?', 'alternate image', + 'alternate increment value', 'alternate title', + 'animation delay', 'associated file name', + 'associated object', 'auto completes', 'auto display', + 'auto enables items', 'auto repeat', 'auto resizes( outline column)?', + 'auto save expanded items', 'auto save name', + 'auto save table columns', 'auto saves configuration', + 'auto scroll', 'auto sizes all columns to fit', + 'auto sizes cells', 'background color', 'bezel state', + 'bezel style', 'bezeled', 'border rect', 'border type', + 'bordered', 'bounds( rotation)?', 'box type', + 'button returned', 'button type', + 'can choose directories', 'can choose files', 'can draw', 'can hide', + 'cell( (background color|size|type))?', 'characters', + 'class', 'click count', 'clicked( data)? column', + 'clicked data item', 'clicked( data)? row', + 'closeable', 'collating', 'color( (mode|panel))', + 'command key down', 'configuration', + 'content(s| (size|view( margins)?))?', 'context', + 'continuous', 'control key down', 'control size', + 'control tint', 'control view', + 'controller visible', 'coordinate system', + 'copies( on scroll)?', 'corner view', 'current cell', + 'current column', 'current( field)? editor', + 'current( menu)? item', 'current row', + 'current tab view item', 'data source', + 'default identifiers', 'delta (x|y|z)', + 'destination window', 'directory', 'display mode', + 'displayed cell', 'document( (edited|rect|view))?', + 'double value', 'dragged column', 'dragged distance', + 'dragged items', 'draws( cell)? background', + 'draws grid', 'dynamically scrolls', 'echos bullets', + 'edge', 'editable', 'edited( data)? column', + 'edited data item', 'edited( data)? row', 'enabled', + 'enclosing scroll view', 'ending page', + 'error handling', 'event number', 'event type', + 'excluded from windows menu', 'executable path', + 'expanded', 'fax number', 'field editor', 'file kind', + 'file name', 'file type', 'first responder', + 'first visible column', 'flipped', 'floating', + 'font( panel)?', 'formatter', 'frameworks path', + 'frontmost', 'gave up', 'grid color', 'has data items', + 'has horizontal ruler', 'has horizontal scroller', + 'has parent data item', 'has resize indicator', + 'has shadow', 'has sub menu', 'has vertical ruler', + 'has vertical scroller', 'header cell', 'header view', + 'hidden', 'hides when deactivated', 'highlights by', + 'horizontal line scroll', 'horizontal page scroll', + 'horizontal ruler view', 'horizontally resizable', + 'icon image', 'id', 'identifier', + 'ignores multiple clicks', + 'image( (alignment|dims when disabled|frame style|scaling))?', + 'imports graphics', 'increment value', + 'indentation per level', 'indeterminate', 'index', + 'integer value', 'intercell spacing', 'item height', + 'key( (code|equivalent( modifier)?|window))?', + 'knob thickness', 'label', 'last( visible)? column', + 'leading offset', 'leaf', 'level', 'line scroll', + 'loaded', 'localized sort', 'location', 'loop mode', + 'main( (bunde|menu|window))?', 'marker follows cell', + 'matrix mode', 'maximum( content)? size', + 'maximum visible columns', + 'menu( form representation)?', 'miniaturizable', + 'miniaturized', 'minimized image', 'minimized title', + 'minimum column width', 'minimum( content)? size', + 'modal', 'modified', 'mouse down state', + 'movie( (controller|file|rect))?', 'muted', 'name', + 'needs display', 'next state', 'next text', + 'number of tick marks', 'only tick mark values', + 'opaque', 'open panel', 'option key down', + 'outline table column', 'page scroll', 'pages across', + 'pages down', 'palette label', 'pane splitter', + 'parent data item', 'parent window', 'pasteboard', + 'path( (names|separator))?', 'playing', + 'plays every frame', 'plays selection only', 'position', + 'preferred edge', 'preferred type', 'pressure', + 'previous text', 'prompt', 'properties', + 'prototype cell', 'pulls down', 'rate', + 'released when closed', 'repeated', + 'requested print time', 'required file type', + 'resizable', 'resized column', 'resource path', + 'returns records', 'reuses columns', 'rich text', + 'roll over', 'row height', 'rulers visible', + 'save panel', 'scripts path', 'scrollable', + 'selectable( identifiers)?', 'selected cell', + 'selected( data)? columns?', 'selected data items?', + 'selected( data)? rows?', 'selected item identifier', + 'selection by rect', 'send action on arrow key', + 'sends action when done editing', 'separates columns', + 'separator item', 'sequence number', 'services menu', + 'shared frameworks path', 'shared support path', + 'sheet', 'shift key down', 'shows alpha', + 'shows state by', 'size( mode)?', + 'smart insert delete enabled', 'sort case sensitivity', + 'sort column', 'sort order', 'sort type', + 'sorted( data rows)?', 'sound', 'source( mask)?', + 'spell checking enabled', 'starting page', 'state', + 'string value', 'sub menu', 'super menu', 'super view', + 'tab key traverses cells', 'tab state', 'tab type', + 'tab view', 'table view', 'tag', 'target( printer)?', + 'text color', 'text container insert', + 'text container origin', 'text returned', + 'tick mark position', 'time stamp', + 'title(d| (cell|font|height|position|rect))?', + 'tool tip', 'toolbar', 'trailing offset', 'transparent', + 'treat packages as directories', 'truncated labels', + 'types', 'unmodified characters', 'update views', + 'use sort indicator', 'user defaults', + 'uses data source', 'uses ruler', 'uses threaded animation', + 'uses title from previous column', 'value wraps', 'version', + 'vertical( (line scroll|page scroll|ruler view))?', 'vertically resizable', 'view', + 'visible( document rect)?', 'volume', 'width', 'window', + 'windows menu', 'wraps', 'zoomable', 'zoomed'] + end + + operators = %r(\b(#{self.operators.to_a.join('|')})\b) + classes = %r(\b(as )(#{self.classes.to_a.join('|')})\b) + literals = %r(\b(#{self.literals.to_a.join('|')})\b) + commands = %r(\b(#{self.commands.to_a.join('|')})\b) + controls = %r(\b(#{self.controls.to_a.join('|')})\b) + declarations = %r(\b(#{self.declarations.to_a.join('|')})\b) + reserved = %r(\b(#{self.reserved.to_a.join('|')})\b) + builtins = %r(\b(#{self.builtins.to_a.join('|')})s?\b) + handler_params = %r(\b(#{self.handler_params.to_a.join('|')})\b) + references = %r(\b(#{self.references.to_a.join('|')})\b) + studio_properties = %r(\b(#{self.studio_properties.to_a.join('|')})\b) + studio_classes = %r(\b(#{self.studio_classes.to_a.join('|')})s?\b) + studio_commands = %r(\b(#{self.studio_commands.to_a.join('|')})\b) + identifiers = %r(\b([a-zA-Z]\w*)\b) + + state :root do + rule /\s+/, Text::Whitespace + rule /¬\n/, Literal::String::Escape + rule /'s\s+/, Text + rule /(--|#).*?$/, Comment::Single + rule /\(\*/, Comment::Multiline + rule /[\(\){}!,.:]/, Punctuation + rule /(«)([^»]+)(»)/ do |match| + token Text, match[1] + token Name::Builtin, match[2] + token Text, match[3] + end + rule /\b((?:considering|ignoring)\s*)(application responses|case|diacriticals|hyphens|numeric strings|punctuation|white space)/ do |match| + token Keyword, match[1] + token Name::Builtin, match[2] + end + rule /(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|\/|÷|\^)/, Operator + rule operators, Operator::Word + rule /^(\s*(?:on|end)\s+)'r'(%s)/ do |match| + token Keyword, match[1] + token Name::Function, match[2] + end + rule /^(\s*)(in|on|script|to)(\s+)/ do |match| + token Text, match[1] + token Keyword, match[2] + token Text, match[3] + end + rule classes do |match| + token Keyword, match[1] + token Name::Class, match[2] + end + rule commands, Name::Builtin + rule controls, Keyword + rule declarations, Keyword + rule reserved, Name::Builtin + rule builtins, Name::Builtin + rule handler_params, Name::Builtin + rule studio_properties, Name::Attribute + rule studio_classes, Name::Builtin + rule studio_commands, Name::Builtin + rule references, Name::Builtin + rule /"(\\\\|\\"|[^"])*"/, Literal::String::Double + rule identifiers, Name::Variable + rule /[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?/, Literal::Number::Float + rule /[-+]?\d+/, Literal::Number::Integer + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/awk.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/awk.rb new file mode 100644 index 0000000000..257e72b3bd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/awk.rb @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Awk < RegexLexer + title "Awk" + desc "pattern-directed scanning and processing language" + + tag 'awk' + filenames '*.awk' + mimetypes 'application/x-awk' + + def self.detect?(text) + return true if text.shebang?('awk') + end + + id = /[$a-zA-Z_][a-zA-Z0-9_]*/ + + def self.keywords + @keywords ||= Set.new %w( + if else while for do break continue return next nextfile delete + exit print printf getline + ) + end + + def self.declarations + @declarations ||= Set.new %w(function) + end + + def self.reserved + @reserved ||= Set.new %w(BEGIN END) + end + + def self.constants + @constants ||= Set.new %w( + CONVFMT FS NF NR FNR FILENAME RS OFS ORS OFMT SUBSEP ARGC ARGV + ENVIRON + ) + end + + def self.builtins + @builtins ||= %w( + exp log sqrt sin cos atan2 length rand srand int substr index match + split sub gsub sprintf system tolower toupper + ) + end + + state :comments_and_whitespace do + rule /\s+/, Text + rule %r(#.*?$), Comment::Single + end + + state :expr_start do + mixin :comments_and_whitespace + rule %r(/) do + token Str::Regex + goto :regex + end + rule //, Text, :pop! + end + + state :regex do + rule %r(/) do + token Str::Regex + goto :regex_end + end + + rule %r([^/]\n), Error, :pop! + + rule /\n/, Error, :pop! + rule /\[\^/, Str::Escape, :regex_group + rule /\[/, Str::Escape, :regex_group + rule /\\./, Str::Escape + rule %r{[(][?][:=+*/%\^!=]=?|in\b|\+\+|--|\|), Operator, :expr_start + rule %r(&&|\|\||~!?), Operator, :expr_start + rule /[(\[,]/, Punctuation, :expr_start + rule /;/, Punctuation, :statement + rule /[)\].]/, Punctuation + + rule /[?]/ do + token Punctuation + push :ternary + push :expr_start + end + + rule /[{}]/, Punctuation, :statement + + rule id do |m| + if self.class.keywords.include? m[0] + token Keyword + push :expr_start + elsif self.class.declarations.include? m[0] + token Keyword::Declaration + push :expr_start + elsif self.class.reserved.include? m[0] + token Keyword::Reserved + elsif self.class.constants.include? m[0] + token Keyword::Constant + elsif self.class.builtins.include? m[0] + token Name::Builtin + elsif m[0] =~ /^\$/ + token Name::Variable + else + token Name::Other + end + end + + rule /[0-9]+\.[0-9]+/, Num::Float + rule /[0-9]+/, Num::Integer + rule /"(\\[\\"]|[^"])*"/, Str::Double + rule /:/, Punctuation + end + + state :statement do + rule /[{}]/, Punctuation + mixin :expr_start + end + + state :ternary do + rule /:/ do + token Punctuation + goto :expr_start + end + + mixin :root + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/biml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/biml.rb new file mode 100644 index 0000000000..bc8e82858a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/biml.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'xml.rb' + + class BIML < XML + title "BIML" + desc "BIML, Business Intelligence Markup Language" + tag 'biml' + filenames '*.biml' + + def self.detect?(text) + return true if text =~ /<\s*Biml\b/ + end + + prepend :root do + rule %r(<#\@\s*)m, Name::Tag, :directive_tag + + rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp + end + + prepend :attr do + #TODO: how to deal with embedded <# tags inside a attribute string + #rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp + end + + state :directive_as_csharp do + rule /\s*#>\s*/m, Name::Tag, :pop! + rule %r(.*?(?=\s*#>\s*))m do + delegate CSharp + end + end + + state :directive_tag do + rule /\s+/m, Text + rule /[\w.:-]+\s*=/m, Name::Attribute, :attr + rule /[\w]+\s*/m, Name::Attribute + rule %r(/?\s*#>), Name::Tag, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/bsl.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/bsl.rb new file mode 100644 index 0000000000..92fe471410 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/bsl.rb @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Bsl < RegexLexer + title "1C (BSL)" + desc "The 1C:Enterprise programming language" + tag 'bsl' + filenames '*.bsl', '*.os' + + KEYWORDS = /(?<=[^\wа-яё]|^)(?: + КонецПроцедуры | EndProcedure | КонецФункции | EndFunction + | Прервать | Break | Продолжить | Continue + | Возврат | Return | Если | If + | Иначе | Else | ИначеЕсли | ElsIf + | Тогда | Then | КонецЕсли | EndIf + | Попытка | Try | Исключение | Except + | КонецПопытки | EndTry | Raise | ВызватьИсключение + | Пока | While | Для | For + | Каждого | Each | Из | In + | По | To | Цикл | Do + | КонецЦикла | EndDo | НЕ | NOT + | И | AND | ИЛИ | OR + | Новый | New | Процедура | Procedure + | Функция | Function | Перем | Var + | Экспорт | Export | Знач | Val + )(?=[^\wа-яё]|$)/ix + + BUILTINS = /(?<=[^\wа-яё]|^)(?: + СтрДлина|StrLen|СокрЛ|TrimL|СокрП|TrimR|СокрЛП|TrimAll|Лев|Left|Прав|Right|Сред|Mid|СтрНайти|StrFind|ВРег|Upper|НРег|Lower|ТРег|Title|Символ|Char|КодСимвола|CharCode|ПустаяСтрока|IsBlankString|СтрЗаменить|StrReplace|СтрЧислоСтрок|StrLineCount|СтрПолучитьСтроку|StrGetLine|СтрЧислоВхождений|StrOccurrenceCount|СтрСравнить|StrCompare|СтрНачинаетсяС|StrStartWith|СтрЗаканчиваетсяНа|StrEndsWith|СтрРазделить|StrSplit|СтрСоединить|StrConcat + | Цел|Int|Окр|Round|ACos|ACos|ASin|ASin|ATan|ATan|Cos|Cos|Exp|Exp|Log|Log|Log10|Log10|Pow|Pow|Sin|Sin|Sqrt|Sqrt|Tan|Tan + | Год|Year|Месяц|Month|День|Day|Час|Hour|Минута|Minute|Секунда|Second|НачалоГода|BegOfYear|НачалоДня|BegOfDay|НачалоКвартала|BegOfQuarter|НачалоМесяца|BegOfMonth|НачалоМинуты|BegOfMinute|НачалоНедели|BegOfWeek|НачалоЧаса|BegOfHour|КонецГода|EndOfYear|КонецДня|EndOfDay|КонецКвартала|EndOfQuarter|КонецМесяца|EndOfMonth|КонецМинуты|EndOfMinute|КонецНедели|EndOfWeek|КонецЧаса|EndOfHour|НеделяГода|WeekOfYear|ДеньГода|DayOfYear|ДеньНедели|WeekDay|ТекущаяДата|CurrentDate|ДобавитьМесяц|AddMonth + | Тип|Type|ТипЗнч|TypeOf + | Булево|Boolean|Число|Number|Строка|String|Дата|Date + | ПоказатьВопрос|ShowQueryBox|Вопрос|DoQueryBox|ПоказатьПредупреждение|ShowMessageBox|Предупреждение|DoMessageBox|Сообщить|Message|ОчиститьСообщения|ClearMessages|ОповеститьОбИзменении|NotifyChanged|Состояние|Status|Сигнал|Beep|ПоказатьЗначение|ShowValue|ОткрытьЗначение|OpenValue|Оповестить|Notify|ОбработкаПрерыванияПользователя|UserInterruptProcessing|ОткрытьСодержаниеСправки|OpenHelpContent|ОткрытьИндексСправки|OpenHelpIndex|ОткрытьСправку|OpenHelp|ПоказатьИнформациюОбОшибке|ShowErrorInfo|КраткоеПредставлениеОшибки|BriefErrorDescription|ПодробноеПредставлениеОшибки|DetailErrorDescription|ПолучитьФорму|GetForm|ЗакрытьСправку|CloseHelp|ПоказатьОповещениеПользователя|ShowUserNotification|ОткрытьФорму|OpenForm|ОткрытьФормуМодально|OpenFormModal|АктивноеОкно|ActiveWindow|ВыполнитьОбработкуОповещения|ExecuteNotifyProcessing + | ПоказатьВводЗначения|ShowInputValue|ВвестиЗначение|InputValue|ПоказатьВводЧисла|ShowInputNumber|ВвестиЧисло|InputNumber|ПоказатьВводСтроки|ShowInputString|ВвестиСтроку|InputString|ПоказатьВводДаты|ShowInputDate|ВвестиДату|InputDate + | Формат|Format|ЧислоПрописью|NumberInWords|НСтр|NStr|ПредставлениеПериода|PeriodPresentation|СтрШаблон|StrTemplate + | ПолучитьОбщийМакет|GetCommonTemplate|ПолучитьОбщуюФорму|GetCommonForm|ПредопределенноеЗначение|PredefinedValue|ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName + | ПолучитьЗаголовокСистемы|GetCaption|ПолучитьСкоростьКлиентскогоСоединения|GetClientConnectionSpeed|ПодключитьОбработчикОжидания|AttachIdleHandler|УстановитьЗаголовокСистемы|SetCaption|ОтключитьОбработчикОжидания|DetachIdleHandler|ИмяКомпьютера|ComputerName|ЗавершитьРаботуСистемы|Exit|ИмяПользователя|UserName|ПрекратитьРаботуСистемы|Terminate|ПолноеИмяПользователя|UserFullName|ЗаблокироватьРаботуПользователя|LockApplication|КаталогПрограммы|BinDir|КаталогВременныхФайлов|TempFilesDir|ПравоДоступа|AccessRight|РольДоступна|IsInRole|ТекущийЯзык|CurrentLanguage|ТекущийКодЛокализации|CurrentLocaleCode|СтрокаСоединенияИнформационнойБазы|InfoBaseConnectionString|ПодключитьОбработчикОповещения|AttachNotificationHandler|ОтключитьОбработчикОповещения|DetachNotificationHandler|ПолучитьСообщенияПользователю|GetUserMessages|ПараметрыДоступа|AccessParameters|ПредставлениеПриложения|ApplicationPresentation|ТекущийЯзыкСистемы|CurrentSystemLanguage|ЗапуститьСистему|RunSystem|ТекущийРежимЗапуска|CurrentRunMode|УстановитьЧасовойПоясСеанса|SetSessionTimeZone|ЧасовойПоясСеанса|SessionTimeZone|ТекущаяДатаСеанса|CurrentSessionDate|УстановитьКраткийЗаголовокПриложения|SetShortApplicationCaption|ПолучитьКраткийЗаголовокПриложения|GetShortApplicationCaption|ПредставлениеПрава|RightPresentation|ВыполнитьПроверкуПравДоступа|VerifyAccessRights|РабочийКаталогДанныхПользователя|UserDataWorkDir|КаталогДокументов|DocumentsDir|ПолучитьИнформациюЭкрановКлиента|GetClientDisplaysInformation|ТекущийВариантОсновногоШрифтаКлиентскогоПриложения|ClientApplicationBaseFontCurrentVariant|ТекущийВариантИнтерфейсаКлиентскогоПриложения|ClientApplicationInterfaceCurrentVariant|УстановитьЗаголовокКлиентскогоПриложения|SetClientApplicationCaption|ПолучитьЗаголовокКлиентскогоПриложения|GetClientApplicationCaption|НачатьПолучениеКаталогаВременныхФайлов|BeginGettingTempFilesDir|НачатьПолучениеКаталогаДокументов|BeginGettingDocumentsDir|НачатьПолучениеРабочегоКаталогаДанныхПользователя|BeginGettingUserDataWorkDir|ПодключитьОбработчикЗапросаНастроекКлиентаЛицензирования|AttachLicensingClientParametersRequestHandler|ОтключитьОбработчикЗапросаНастроекКлиентаЛицензирования|DetachLicensingClientParametersRequestHandler + | ЗначениеВСтрокуВнутр|ValueToStringInternal|ЗначениеИзСтрокиВнутр|ValueFromStringInternal|ЗначениеВФайл|ValueToFile|ЗначениеИзФайла|ValueFromFile + | КомандаСистемы|System|ЗапуститьПриложение|RunApp|ПолучитьCOMОбъект|GetCOMObject|ПользователиОС|OSUsers|НачатьЗапускПриложения|BeginRunningApplication + | ПодключитьВнешнююКомпоненту|AttachAddIn|НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|УстановитьВнешнююКомпоненту|InstallAddIn|НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn + | КопироватьФайл|FileCopy|ПереместитьФайл|MoveFile|УдалитьФайлы|DeleteFiles|НайтиФайлы|FindFiles|СоздатьКаталог|CreateDirectory|ПолучитьИмяВременногоФайла|GetTempFileName|РазделитьФайл|SplitFile|ОбъединитьФайлы|MergeFiles|ПолучитьФайл|GetFile|НачатьПомещениеФайла|BeginPutFile|ПоместитьФайл|PutFile|ЭтоАдресВременногоХранилища|IsTempStorageURL|УдалитьИзВременногоХранилища|DeleteFromTempStorage|ПолучитьИзВременногоХранилища|GetFromTempStorage|ПоместитьВоВременноеХранилище|PutToTempStorage|ПодключитьРасширениеРаботыСФайлами|AttachFileSystemExtension|НачатьУстановкуРасширенияРаботыСФайлами|BeginInstallFileSystemExtension|УстановитьРасширениеРаботыСФайлами|InstallFileSystemExtension|ПолучитьФайлы|GetFiles|ПоместитьФайлы|PutFiles|ЗапроситьРазрешениеПользователя|RequestUserPermission|ПолучитьМаскуВсеФайлы|GetAllFilesMask|ПолучитьМаскуВсеФайлыКлиента|GetClientAllFilesMask|ПолучитьМаскуВсеФайлыСервера|GetServerAllFilesMask|ПолучитьРазделительПути|GetPathSeparator|ПолучитьРазделительПутиКлиента|GetClientPathSeparator|ПолучитьРазделительПутиСервера|GetServerPathSeparator|НачатьПодключениеРасширенияРаботыСФайлами|BeginAttachingFileSystemExtension|НачатьЗапросРазрешенияПользователя|BeginRequestingUserPermission|НачатьПоискФайлов|BeginFindingFiles|НачатьСозданиеКаталога|BeginCreatingDirectory|НачатьКопированиеФайла|BeginCopyingFile|НачатьПеремещениеФайла|BeginMovingFile|НачатьУдалениеФайлов|BeginDeletingFiles|НачатьПолучениеФайлов|BeginGettingFiles|НачатьПомещениеФайлов|BeginPuttingFiles + | НачатьТранзакцию|BeginTransaction|ЗафиксироватьТранзакцию|CommitTransaction|ОтменитьТранзакцию|RollbackTransaction|УстановитьМонопольныйРежим|SetExclusiveMode|МонопольныйРежим|ExclusiveMode|ПолучитьОперативнуюОтметкуВремени|GetRealTimeTimestamp|ПолучитьСоединенияИнформационнойБазы|GetInfoBaseConnections|НомерСоединенияИнформационнойБазы|InfoBaseConnectionNumber|КонфигурацияИзменена|ConfigurationChanged|КонфигурацияБазыДанныхИзмененаДинамически|DataBaseConfigurationChangedDynamically|УстановитьВремяОжиданияБлокировкиДанных|SetLockWaitTime|ОбновитьНумерациюОбъектов|RefreshObjectsNumbering|ПолучитьВремяОжиданияБлокировкиДанных|GetLockWaitTime|КодЛокализацииИнформационнойБазы|InfoBaseLocaleCode|УстановитьМинимальнуюДлинуПаролейПользователей|SetUserPasswordMinLength|ПолучитьМинимальнуюДлинуПаролейПользователей|GetUserPasswordMinLength|ИнициализироватьПредопределенныеДанные|InitializePredefinedData|УдалитьДанныеИнформационнойБазы|EraseInfoBaseData|УстановитьПроверкуСложностиПаролейПользователей|SetUserPasswordStrengthCheck|ПолучитьПроверкуСложностиПаролейПользователей|GetUserPasswordStrengthCheck|ПолучитьСтруктуруХраненияБазыДанных|GetDBStorageStructureInfo|УстановитьПривилегированныйРежим|SetPrivilegedMode|ПривилегированныйРежим|PrivilegedMode|ТранзакцияАктивна|TransactionActive|НеобходимостьЗавершенияСоединения|ConnectionStopRequest|НомерСеансаИнформационнойБазы|InfoBaseSessionNumber|ПолучитьСеансыИнформационнойБазы|GetInfoBaseSessions|ЗаблокироватьДанныеДляРедактирования|LockDataForEdit|УстановитьСоединениеСВнешнимИсточникомДанных|ConnectExternalDataSource|РазблокироватьДанныеДляРедактирования|UnlockDataForEdit|РазорватьСоединениеСВнешнимИсточникомДанных|DisconnectExternalDataSource|ПолучитьБлокировкуСеансов|GetSessionsLock|УстановитьБлокировкуСеансов|SetSessionsLock|ОбновитьПовторноИспользуемыеЗначения|RefreshReusableValues|УстановитьБезопасныйРежим|SetSafeMode|БезопасныйРежим|SafeMode|ПолучитьДанныеВыбора|GetChoiceData|УстановитьЧасовойПоясИнформационнойБазы|SetInfoBaseTimeZone|ПолучитьЧасовойПоясИнформационнойБазы|GetInfoBaseTimeZone|ПолучитьОбновлениеКонфигурацииБазыДанных|GetDataBaseConfigurationUpdate|УстановитьБезопасныйРежимРазделенияДанных|SetDataSeparationSafeMode|БезопасныйРежимРазделенияДанных|DataSeparationSafeMode|УстановитьВремяЗасыпанияПассивногоСеанса|SetPassiveSessionHibernateTime|ПолучитьВремяЗасыпанияПассивногоСеанса|GetPassiveSessionHibernateTime|УстановитьВремяЗавершенияСпящегоСеанса|SetHibernateSessionTerminateTime|ПолучитьВремяЗавершенияСпящегоСеанса|GetHibernateSessionTerminateTime|ПолучитьТекущийСеансИнформационнойБазы|GetCurrentInfoBaseSession|ПолучитьИдентификаторКонфигурации|GetConfigurationID|УстановитьНастройкиКлиентаЛицензирования|SetLicensingClientParameters|ПолучитьИмяКлиентаЛицензирования|GetLicensingClientName|ПолучитьДополнительныйПараметрКлиентаЛицензирования|GetLicensingClientAdditionalParameter + | НайтиПомеченныеНаУдаление|FindMarkedForDeletion|НайтиПоСсылкам|FindByRef|УдалитьОбъекты|DeleteObjects|УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData + | XMLСтрока|XMLString|XMLЗначение|XMLValue|XMLТип|XMLType|XMLТипЗнч|XMLTypeOf|ИзXMLТипа|FromXMLType|ВозможностьЧтенияXML|CanReadXML|ПолучитьXMLТип|GetXMLType|ПрочитатьXML|ReadXML|ЗаписатьXML|WriteXML|НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|ИмпортМоделиXDTO|ImportXDTOModel|СоздатьФабрикуXDTO|CreateXDTOFactory + | ЗаписатьJSON|WriteJSON|ПрочитатьJSON|ReadJSON|ПрочитатьДатуJSON|ReadJSONDate|ЗаписатьДатуJSON|WriteJSONDate + | ЗаписьЖурналаРегистрации|WriteLogEvent|ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|ВыгрузитьЖурналРегистрации|UnloadEventLog|ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|СкопироватьЖурналРегистрации|CopyEventLog|ОчиститьЖурналРегистрации|ClearEventLog + | ЗначениеВДанныеФормы|ValueToFormData|ДанныеФормыВЗначение|FormDataToValue|КопироватьДанныеФормы|CopyFormData|УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity + | ПолучитьФункциональнуюОпцию|GetFunctionalOption|ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|ОбновитьИнтерфейс|RefreshInterface + | УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension + | УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent + | Мин|Min|Макс|Max|ОписаниеОшибки|ErrorDescription|Вычислить|Eval|ИнформацияОбОшибке|ErrorInfo|Base64Значение|Base64Value|Base64Строка|Base64String|ЗаполнитьЗначенияСвойств|FillPropertyValues|ЗначениеЗаполнено|ValueIsFilled|ПолучитьПредставленияНавигационныхСсылок|GetURLsPresentations|НайтиОкноПоНавигационнойСсылке|FindWindowByURL|ПолучитьОкна|GetWindows|ПерейтиПоНавигационнойСсылке|GotoURL|ПолучитьНавигационнуюСсылку|GetURL|ПолучитьДопустимыеКодыЛокализации|GetAvailableLocaleCodes|ПолучитьНавигационнуюСсылкуИнформационнойБазы|GetInfoBaseURL|ПредставлениеКодаЛокализации|LocaleCodePresentation|ПолучитьДопустимыеЧасовыеПояса|GetAvailableTimeZones|ПредставлениеЧасовогоПояса|TimeZonePresentation|ТекущаяУниверсальнаяДата|CurrentUniversalDate|ТекущаяУниверсальнаяДатаВМиллисекундах|CurrentUniversalDateInMilliseconds|МестноеВремя|ToLocalTime|УниверсальноеВремя|ToUniversalTime|ЧасовойПояс|TimeZone|СмещениеЛетнегоВремени|DaylightTimeOffset|СмещениеСтандартногоВремени|StandardTimeOffset|КодироватьСтроку|EncodeString|РаскодироватьСтроку|DecodeString|Найти|Find + | ПередНачаломРаботыСистемы|BeforeStart|ПриНачалеРаботыСистемы|OnStart|ПередЗавершениемРаботыСистемы|BeforeExit|ПриЗавершенииРаботыСистемы|OnExit|ОбработкаВнешнегоСобытия|ExternEventProcessing|УстановкаПараметровСеанса|SessionParametersSetting|ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings + | WSСсылки|WSReferences|БиблиотекаКартинок|PictureLib|БиблиотекаМакетовОформленияКомпоновкиДанных|DataCompositionAppearanceTemplateLib|БиблиотекаСтилей|StyleLib|БизнесПроцессы|BusinessProcesses|ВнешниеИсточникиДанных|ExternalDataSources|ВнешниеОбработки|ExternalDataProcessors|ВнешниеОтчеты|ExternalReports|Документы|Documents|ДоставляемыеУведомления|DeliverableNotifications|ЖурналыДокументов|DocumentJournals|Задачи|Tasks|ИспользованиеРабочейДаты|WorkingDateUse|ИсторияРаботыПользователя|UserWorkHistory|Константы|Constants|КритерииОтбора|FilterCriteria|Метаданные|Metadata|Обработки|DataProcessors|ОтправкаДоставляемыхУведомлений|DeliverableNotificationSend|Отчеты|Reports|ПараметрыСеанса|SessionParameters|Перечисления|Enums|ПланыВидовРасчета|ChartsOfCalculationTypes|ПланыВидовХарактеристик|ChartsOfCharacteristicTypes|ПланыОбмена|ExchangePlans|ПланыСчетов|ChartsOfAccounts|ПолнотекстовыйПоиск|FullTextSearch|ПользователиИнформационнойБазы|InfoBaseUsers|Последовательности|Sequences|РасширенияКонфигурации|ConfigurationExtensions|РегистрыБухгалтерии|AccountingRegisters|РегистрыНакопления|AccumulationRegisters|РегистрыРасчета|CalculationRegisters|РегистрыСведений|InformationRegisters|РегламентныеЗадания|ScheduledJobs|СериализаторXDTO|XDTOSerializer|Справочники|Catalogs|СредстваГеопозиционирования|LocationTools|СредстваКриптографии|CryptoToolsManager|СредстваМультимедиа|MultimediaTools|СредстваПочты|MailTools|СредстваТелефонии|TelephonyTools|ФабрикаXDTO|XDTOFactory|ФоновыеЗадания|BackgroundJobs|ХранилищаНастроек + | ГлавныйИнтерфейс|MainInterface|ГлавныйСтиль|MainStyle|ПараметрЗапуска|LaunchParameter|РабочаяДата|WorkingDate|SettingsStorages|ХранилищеВариантовОтчетов|ReportsVariantsStorage|ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|ХранилищеОбщихНастроек|CommonSettingsStorage|ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|ХранилищеСистемныхНастроек|SystemSettingsStorage + | Если|If|ИначеЕсли|ElsIf|Иначе|Else|КонецЕсли|EndIf|Тогда|Then + | Неопределено|Undefined|Истина|True|Ложь|False|NULL + )\s*(?=\()/ix + + state :root do + rule /\n/, Text + rule /[^\S\n]+/, Text + rule /\/\/.*$/, Comment::Single + rule /[\[\]:(),;]/, Punctuation + rule /(?<=[^\wа-яё]|^)\&.*$/, Keyword::Declaration + rule /[-+\/=<>*%=<>.?&]/, Operator + rule /(?<=[^\wа-яё]|^)\#.*$/, Keyword::Declaration + rule KEYWORDS, Keyword + rule BUILTINS, Name::Builtin + rule /[\wа-яё_][\wа-яё0-9_]*/i, Name::Variable + + #literals + rule /\b((\h{8}-(\h{4}-){3}\h{12})|\d+\.?\d*)\b/, Literal::Number + rule /\'.*\'/, Literal::Date + rule /".*?("|$)/, Literal::String::Single + rule /(?<=[^\wа-яё]|^)\|((?!\"\").)*?(\"|$)/, Literal::String + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/c.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/c.rb new file mode 100644 index 0000000000..89ac83125b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/c.rb @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class C < RegexLexer + tag 'c' + filenames '*.c', '*.h', '*.idc' + mimetypes 'text/x-chdr', 'text/x-csrc' + + title "C" + desc "The C programming language" + + # optional comment or whitespace + ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+) + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + def self.keywords + @keywords ||= Set.new %w( + auto break case const continue default do else enum extern + for goto if register restricted return sizeof static struct + switch typedef union volatile virtual while + + _Alignas _Alignof _Atomic _Generic _Imaginary + _Noreturn _Static_assert _Thread_local + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + int long float short double char unsigned signed void + + jmp_buf FILE DIR div_t ldiv_t mbstate_t sig_atomic_t fpos_t + clock_t time_t va_list size_t ssize_t off_t wchar_t ptrdiff_t + wctrans_t wint_t wctype_t + + _Bool _Complex int8_t int16_t int32_t int64_t + uint8_t uint16_t uint32_t uint64_t int_least8_t + int_least16_t int_least32_t int_least64_t + uint_least8_t uint_least16_t uint_least32_t + uint_least64_t int_fast8_t int_fast16_t int_fast32_t + int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t + uint_fast64_t intptr_t uintptr_t intmax_t + uintmax_t + + char16_t char32_t + ) + end + + def self.reserved + @reserved ||= Set.new %w( + __asm __int8 __based __except __int16 __stdcall __cdecl + __fastcall __int32 __declspec __finally __int61 __try __leave + inline _inline __inline naked _naked __naked restrict _restrict + __restrict thread _thread __thread typename _typename __typename + ) + end + + def self.builtins + @builtins ||= [] + end + + start { push :bol } + + state :expr_bol do + mixin :inline_whitespace + + rule /#if\s0/, Comment, :if_0 + rule /#/, Comment::Preproc, :macro + + rule(//) { pop! } + end + + # :expr_bol is the same as :bol but without labels, since + # labels can only appear at the beginning of a statement. + state :bol do + rule /#{id}:(?!:)/, Name::Label + mixin :expr_bol + end + + state :inline_whitespace do + rule /[ \t\r]+/, Text + rule /\\\n/, Text # line continuation + rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline + end + + state :whitespace do + rule /\n+/m, Text, :bol + rule %r(//(\\.|.)*?$), Comment::Single, :bol + mixin :inline_whitespace + end + + state :expr_whitespace do + rule /\n+/m, Text, :expr_bol + mixin :whitespace + end + + state :statements do + mixin :whitespace + rule /(u8|u|U|L)?"/, Str, :string + rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char + rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float + rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float + rule /0x[0-9a-f]+[lu]*/i, Num::Hex + rule /0[0-7]+[lu]*/i, Num::Oct + rule /\d+[lu]*/i, Num::Integer + rule %r(\*/), Error + rule %r([~!%^&*+=\|?:<>/-]), Operator + rule /[()\[\],.]/, Punctuation + rule /\bcase\b/, Keyword, :case + rule /(?:true|false|NULL)\b/, Name::Builtin + rule id do |m| + name = m[0] + + if self.class.keywords.include? name + token Keyword + elsif self.class.keywords_type.include? name + token Keyword::Type + elsif self.class.reserved.include? name + token Keyword::Reserved + elsif self.class.builtins.include? name + token Name::Builtin + else + token Name + end + end + end + + state :case do + rule /:/, Punctuation, :pop! + mixin :statements + end + + state :root do + mixin :expr_whitespace + + # functions + rule %r( + ([\w*\s]+?[\s*]) # return arguments + (#{id}) # function name + (\s*\([^;]*?\)) # signature + (#{ws})({) # open brace + )mx do |m| + # TODO: do this better. + recurse m[1] + token Name::Function, m[2] + recurse m[3] + recurse m[4] + token Punctuation, m[5] + push :function + end + + # function declarations + rule %r( + ([\w*\s]+?[\s*]) # return arguments + (#{id}) # function name + (\s*\([^;]*?\)) # signature + (#{ws})(;) # semicolon + )mx do |m| + # TODO: do this better. + recurse m[1] + token Name::Function, m[2] + recurse m[3] + recurse m[4] + token Punctuation, m[5] + push :statement + end + + rule(//) { push :statement } + end + + state :statement do + rule /;/, Punctuation, :pop! + mixin :expr_whitespace + mixin :statements + rule /[{}]/, Punctuation + end + + state :function do + mixin :whitespace + mixin :statements + rule /;/, Punctuation + rule /{/, Punctuation, :function + rule /}/, Punctuation, :pop! + end + + state :string do + rule /"/, Str, :pop! + rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape + rule /[^\\"\n]+/, Str + rule /\\\n/, Str + rule /\\/, Str # stray backslash + end + + state :macro do + # NB: pop! goes back to :bol + rule /\n/, Comment::Preproc, :pop! + rule %r([^/\n\\]+), Comment::Preproc + rule /\\./m, Comment::Preproc + mixin :inline_whitespace + rule %r(/), Comment::Preproc + end + + state :if_0 do + # NB: no \b here, to cover #ifdef and #ifndef + rule /^\s*#if/, Comment, :if_0 + rule /^\s*#\s*el(?:se|if)/, Comment, :pop! + rule /^\s*#\s*endif\b.*?(?|+=:;,./?-`]), Operator + rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float + rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?), + Literal::Number::Float + rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float + rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?), + Literal::Number::Float + rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex + rule %r(#[0-9a-fA-F]+), Literal::Number::Hex + rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin + rule %r(\$[01]+), Literal::Number::Bin + rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer + rule %r([0-9]+[kMGTP]?), Literal::Number::Integer + rule %r(\n), Text + + end + + state :class do + mixin :whitespace + rule %r([A-Za-z_]\w*), Name::Class, :pop! + end + + state :import do + rule %r([a-z][\w.]*), Name::Namespace, :pop! + rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop! + end + + state :comment do + rule %r([^*/]), Comment.Multiline + rule %r(/\*), Comment::Multiline, :push! + rule %r(\*/), Comment::Multiline, :pop! + rule %r([*/]), Comment::Multiline + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cfscript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cfscript.rb new file mode 100644 index 0000000000..149ad60185 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cfscript.rb @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + + class Cfscript < RegexLexer + title "CFScript" + desc 'CFScript, the CFML scripting language' + tag 'cfscript' + aliases 'cfc' + filenames '*.cfc' + + def self.keywords + @keywords ||= %w( + if else var xml default break switch do try catch throw in continue for return while required + ) + end + + def self.declarations + @declarations ||= %w( + component property function remote public package private + ) + end + + def self.types + @types ||= %w( + any array binary boolean component date guid numeric query string struct uuid void xml + ) + end + + constants = %w(application session client cookie super this variables arguments cgi) + + + operators = %w(\+\+ -- && \|\| <= >= < > == != mod eq lt gt lte gte not is and or xor eqv imp equal contains \? ) + dotted_id = /[$a-zA-Z_][a-zA-Z0-9_.]*/ + + state :root do + mixin :comments_and_whitespace + rule /(?:#{operators.join('|')}|does not contain|greater than(?: or equal to)?|less than(?: or equal to)?)\b/i, Operator, :expr_start + rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start + + rule /[(\[,]/, Punctuation, :expr_start + rule /;/, Punctuation, :statement + rule /[)\].]/, Punctuation + + rule /[?]/ do + token Punctuation + push :ternary + push :expr_start + end + + rule /[{}]/, Punctuation, :statement + + rule /(?:#{constants.join('|')})\b/, Name::Constant + rule /(?:true|false|null)\b/, Keyword::Constant + rule /import\b/, Keyword::Namespace, :import + rule /(#{dotted_id})(\s*)(:)(\s*)/ do + groups Name, Text, Punctuation, Text + push :expr_start + end + + rule /([A-Za-z_$][\w.]*)(\s*)(\()/ do |m| + if self.class.keywords.include? m[1] + token Keyword, m[1] + token Text, m[2] + token Punctuation, m[3] + else + token Name::Function, m[1] + token Text, m[2] + token Punctuation, m[3] + end + end + + rule dotted_id do |m| + if self.class.declarations.include? m[0] + token Keyword::Declaration + push :expr_start + elsif self.class.keywords.include? m[0] + token Keyword + push :expr_start + elsif self.class.types.include? m[0] + token Keyword::Type + push :expr_start + else + token Name::Other + end + end + + rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float + rule /0x[0-9a-fA-F]+/, Num::Hex + rule /[0-9]+/, Num::Integer + rule /"(\\\\|\\"|[^"])*"/, Str::Double + rule /'(\\\\|\\'|[^'])*'/, Str::Single + + end + + # same as java, broken out + state :comments_and_whitespace do + rule /\s+/, Text + rule %r(//.*?$), Comment::Single + rule %r(/\*.*?\*/)m, Comment::Multiline + end + + state :expr_start do + mixin :comments_and_whitespace + + rule /[{]/, Punctuation, :object + + rule //, Text, :pop! + end + + state :statement do + + rule /[{}]/, Punctuation + + mixin :expr_start + end + + # object literals + state :object do + mixin :comments_and_whitespace + rule /[}]/ do + token Punctuation + push :expr_start + end + + rule /(#{dotted_id})(\s*)(:)/ do + groups Name::Other, Text, Punctuation + push :expr_start + end + + rule /:/, Punctuation + mixin :root + end + + # ternary expressions, where : is not a label! + state :ternary do + rule /:/ do + token Punctuation + goto :expr_start + end + + mixin :root + end + + state :import do + rule /\s+/m, Text + rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop! + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/clojure.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/clojure.rb new file mode 100644 index 0000000000..68f2048936 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/clojure.rb @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Clojure < RegexLexer + title "Clojure" + desc "The Clojure programming language (clojure.org)" + + tag 'clojure' + aliases 'clj', 'cljs' + + filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn' + + mimetypes 'text/x-clojure', 'application/x-clojure' + + def self.keywords + @keywords ||= Set.new %w( + fn def defn defmacro defmethod defmulti defn- defstruct if + cond let for + ) + end + + def self.builtins + @builtins ||= Set.new %w( + . .. * + - -> / < <= = == > >= accessor agent agent-errors + aget alength all-ns alter and append-child apply array-map + aset aset-boolean aset-byte aset-char aset-double aset-float + aset-int aset-long aset-short assert assoc await await-for bean + binding bit-and bit-not bit-or bit-shift-left bit-shift-right + bit-xor boolean branch? butlast byte cast char children + class clear-agent-errors comment commute comp comparator + complement concat conj cons constantly construct-proxy + contains? count create-ns create-struct cycle dec deref + difference disj dissoc distinct doall doc dorun doseq dosync + dotimes doto double down drop drop-while edit end? ensure eval + every? false? ffirst file-seq filter find find-doc find-ns + find-var first float flush fnseq frest gensym get-proxy-class + get hash-map hash-set identical? identity if-let import in-ns + inc index insert-child insert-left insert-right inspect-table + inspect-tree instance? int interleave intersection into + into-array iterate join key keys keyword keyword? last lazy-cat + lazy-cons left lefts line-seq list* list load load-file locking + long loop macroexpand macroexpand-1 make-array make-node map + map-invert map? mapcat max max-key memfn merge merge-with meta + min min-key name namespace neg? new newline next nil? node not + not-any? not-every? not= ns-imports ns-interns ns-map ns-name + ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse + partial path peek pop pos? pr pr-str print print-str println + println-str prn prn-str project proxy proxy-mappings quot + rand rand-int range re-find re-groups re-matcher re-matches + re-pattern re-seq read read-line reduce ref ref-set refer rem + remove remove-method remove-ns rename rename-keys repeat replace + replicate resolve rest resultset-seq reverse rfirst right + rights root rrest rseq second select select-keys send send-off + seq seq-zip seq? set short slurp some sort sort-by sorted-map + sorted-map-by sorted-set special-symbol? split-at split-with + str string? struct struct-map subs subvec symbol symbol? + sync take take-nth take-while test time to-array to-array-2d + tree-seq true? union up update-proxy val vals var-get var-set + var? vector vector-zip vector? when when-first when-let + when-not with-local-vars with-meta with-open with-out-str + xml-seq xml-zip zero? zipmap zipper' + ) + end + + identifier = %r([\w!$%*+,<=>?/.-]+) + keyword = %r([\w!\#$%*+,<=>?/.-]+) + + def name_token(name) + return Keyword if self.class.keywords.include?(name) + return Name::Builtin if self.class.builtins.include?(name) + nil + end + + state :root do + rule /;.*?$/, Comment::Single + rule /\s+/m, Text::Whitespace + + rule /-?\d+\.\d+/, Num::Float + rule /-?\d+/, Num::Integer + rule /0x-?[0-9a-fA-F]+/, Num::Hex + + rule /"(\\.|[^"])*"/, Str + rule /'#{keyword}/, Str::Symbol + rule /::?#{keyword}/, Name::Constant + rule /\\(.|[a-z]+)/i, Str::Char + + + rule /~@|[`\'#^~&@]/, Operator + + rule /(\()(\s*)(#{identifier})/m do |m| + token Punctuation, m[1] + token Text::Whitespace, m[2] + token(name_token(m[3]) || Name::Function, m[3]) + end + + rule identifier do |m| + token name_token(m[0]) || Name + end + + # vectors + rule /[\[\]]/, Punctuation + + # maps + rule /[{}]/, Punctuation + + # parentheses + rule /[()]/, Punctuation + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cmake.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cmake.rb new file mode 100644 index 0000000000..a11c68dfbd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/cmake.rb @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class CMake < RegexLexer + title 'CMake' + desc 'The cross-platform, open-source build system' + tag 'cmake' + filenames 'CMakeLists.txt', '*.cmake' + mimetypes 'text/x-cmake' + + SPACE = '[ \t]' + BRACKET_OPEN = '\[=*\[' + + STATES_MAP = { + :root => Text, + :bracket_string => Str::Double, + :quoted_argument => Str::Double, + :bracket_comment => Comment::Multiline, + :variable_reference => Name::Variable, + } + + BUILTIN_COMMANDS = Set.new %w[ + add_compile_options + add_custom_command + add_custom_target + add_definitions + add_dependencies + add_executable + add_library + add_subdirectory + add_test + aux_source_directory + break + build_command + build_name + cmake_host_system_information + cmake_minimum_required + cmake_policy + configure_file + create_test_sourcelist + define_property + else + elseif + enable_language + enable_testing + endforeach + endfunction + endif + endmacro + endwhile + exec_program + execute_process + export + export_library_dependencies + file + find_file + find_library + find_package + find_path + find_program + fltk_wrap_ui + foreach + function + get_cmake_property + get_directory_property + get_filename_component + get_property + get_source_file_property + get_target_property + get_test_property + if + include + include_directories + include_external_msproject + include_regular_expression + install + install_files + install_programs + install_targets + link_directories + link_libraries + list + load_cache + load_command + macro + make_directory + mark_as_advanced + math + message + option + output_required_files + project + qt_wrap_cpp + qt_wrap_ui + remove + remove_definitions + return + separate_arguments + set + set_directory_properties + set_property + set_source_files_properties + set_target_properties + set_tests_properties + site_name + source_group + string + subdir_depends + subdirs + target_compile_definitions + target_compile_options + target_include_directories + target_link_libraries + try_compile + try_run + unset + use_mangled_mesa + utility_source + variable_requires + variable_watch + while + write_file + ] + + state :default do + rule /\r\n?|\n/ do + token STATES_MAP[state.name.to_sym] + end + rule /./ do + token STATES_MAP[state.name.to_sym] + end + end + + state :variable_interpolation do + rule /\$\{/ do + token Str::Interpol + push :variable_reference + end + end + + state :bracket_close do + rule /\]=*\]/ do |m| + token STATES_MAP[state.name.to_sym] + goto :root if m[0].length == @bracket_len + end + end + + state :root do + mixin :variable_interpolation + + rule /#{SPACE}/, Text + rule /[()]/, Punctuation + + rule /##{BRACKET_OPEN}/ do |m| + token Comment::Multiline + @bracket_len = m[0].length - 1 # decount '#' + goto :bracket_comment + end + rule /#{BRACKET_OPEN}/ do |m| + token Str::Double + @bracket_len = m[0].length + goto :bracket_string + end + + rule /"/, Str::Double, :quoted_argument + + rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m| + groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation + end + + rule /#.*/, Comment::Single + + mixin :default + end + + state :bracket_string do + mixin :bracket_close + mixin :variable_interpolation + mixin :default + end + + state :bracket_comment do + mixin :bracket_close + mixin :default + end + + state :variable_reference do + mixin :variable_interpolation + + rule /}/, Str::Interpol, :pop! + + mixin :default + end + + state :quoted_argument do + mixin :variable_interpolation + + rule /"/, Str::Double, :root + rule /\\[()#" \\$@^trn;]/, Str::Escape + + mixin :default + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/coffeescript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/coffeescript.rb new file mode 100644 index 0000000000..4eafc78c17 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/coffeescript.rb @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Coffeescript < RegexLexer + tag 'coffeescript' + aliases 'coffee', 'coffee-script' + filenames '*.coffee', 'Cakefile' + mimetypes 'text/coffeescript' + + title "CoffeeScript" + desc 'The Coffeescript programming language (coffeescript.org)' + + def self.detect?(text) + return true if text.shebang? 'coffee' + end + + def self.keywords + @keywords ||= Set.new %w( + for in of while break return continue switch when then if else + throw try catch finally new delete typeof instanceof super + extends this class by + ) + end + + def self.constants + @constants ||= Set.new %w( + true false yes no on off null NaN Infinity undefined + ) + end + + def self.builtins + @builtins ||= Set.new %w( + Array Boolean Date Error Function Math netscape Number Object + Packages RegExp String sun decodeURI decodeURIComponent + encodeURI encodeURIComponent eval isFinite isNaN parseFloat + parseInt document window + ) + end + + id = /[$a-zA-Z_][a-zA-Z0-9_]*/ + + state :comments_and_whitespace do + rule /\s+/m, Text + rule /###\s*\n.*?###/m, Comment::Multiline + rule /#.*$/, Comment::Single + end + + state :multiline_regex do + # this order is important, so that #{ isn't interpreted + # as a comment + mixin :has_interpolation + mixin :comments_and_whitespace + + rule %r(///([gim]+\b|\B)), Str::Regex, :pop! + rule %r(/), Str::Regex + rule %r([^/#]+), Str::Regex + end + + state :slash_starts_regex do + mixin :comments_and_whitespace + rule %r(///) do + token Str::Regex + goto :multiline_regex + end + + rule %r( + /(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/ # a regex + ([gim]+\b|\B) + )x, Str::Regex, :pop! + + rule(//) { pop! } + end + + state :root do + rule(%r(^(?=\s|/| + rule /--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single + end + + # nested commenting + state :comment do + rule /-}/, Comment::Multiline, :pop! + rule /{-/, Comment::Multiline, :comment + rule /[^-{}]+/, Comment::Multiline + rule /[-{}]/, Comment::Multiline + end + + state :comment_preproc do + rule /-}/, Comment::Preproc, :pop! + rule /{-/, Comment::Preproc, :comment + rule /[^-{}]+/, Comment::Preproc + rule /[-{}]/, Comment::Preproc + end + + state :root do + mixin :basic + + rule /\bimport\b/, Keyword::Reserved, :import + rule /\bmodule\b/, Keyword::Reserved, :module + rule /\b(?:#{reserved.join('|')})\b/, Keyword::Reserved + # not sure why, but ^ doesn't work here + # rule /^[_a-z][\w']*/, Name::Function + rule /[_a-z][\w']*/, Name + rule /[A-Z][\w']*/, Keyword::Type + + # lambda operator + rule %r(\\(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Name::Function + # special operators + rule %r((<-|::|->|=>|=)(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Operator + # constructor/type operators + rule %r(:[:!#\$\%&*+.\\/<=>?@^\|~-]*), Operator + # other operators + rule %r([:!#\$\%&*+.\\/<=>?@^\|~-]+), Operator + + rule /\d+e[+-]?\d+/i, Num::Float + rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float + rule /0o[0-7]+/i, Num::Oct + rule /0x[\da-f]+/i, Num::Hex + rule /\d+/, Num::Integer + + rule /'/, Str::Char, :character + rule /"/, Str, :string + + rule /\[\s*\]/, Keyword::Type + rule /\(\s*\)/, Name::Builtin + + # Quasiquotations + rule /(\[)([_a-z][\w']*)(\|)/ do |m| + token Operator, m[1] + token Name, m[2] + token Operator, m[3] + push :quasiquotation + end + + rule /[\[\](),;`{}]/, Punctuation + end + + state :import do + rule /\s+/, Text + rule /"/, Str, :string + rule /\bqualified\b/, Keyword + # import X as Y + rule /([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do + groups( + Name::Namespace, # X + Text, Keyword, # as + Text, Name # Y + ) + pop! + end + + # import X hiding (functions) + rule /([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do + groups( + Name::Namespace, # X + Text, Keyword, # hiding + Text, Punctuation # ( + ) + goto :funclist + end + + # import X (functions) + rule /([A-Z][\w.]*)(\s+)(\()/ do + groups( + Name::Namespace, # X + Text, + Punctuation # ( + ) + goto :funclist + end + + rule /[\w.]+/, Name::Namespace, :pop! + end + + state :module do + rule /\s+/, Text + # module Foo (functions) + rule /([A-Z][\w.]*)(\s+)(\()/ do + groups Name::Namespace, Text, Punctuation + push :funclist + end + + rule /\bwhere\b/, Keyword::Reserved, :pop! + + rule /[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop! + end + + state :funclist do + mixin :basic + rule /[A-Z]\w*/, Keyword::Type + rule /(_[\w\']+|[a-z][\w\']*)/, Name::Function + rule /,/, Punctuation + rule /[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator + rule /\(/, Punctuation, :funclist + rule /\)/, Punctuation, :pop! + end + + state :character do + rule /\\/ do + token Str::Escape + goto :character_end + push :escape + end + + rule /./ do + token Str::Char + goto :character_end + end + end + + state :character_end do + rule /'/, Str::Char, :pop! + rule /./, Error, :pop! + end + + state :quasiquotation do + rule /\|\]/, Operator, :pop! + rule /[^\|]+/m, Text + rule /\|/, Text + end + + state :string do + rule /"/, Str, :pop! + rule /\\/, Str::Escape, :escape + rule /[^\\"]+/, Str + end + + state :escape do + rule /[abfnrtv"'&\\]/, Str::Escape, :pop! + rule /\^[\]\[A-Z@\^_]/, Str::Escape, :pop! + rule /#{ascii.join('|')}/, Str::Escape, :pop! + rule /o[0-7]+/i, Str::Escape, :pop! + rule /x[\da-f]+/i, Str::Escape, :pop! + rule /\d+/, Str::Escape, :pop! + rule /\s+\\/, Str::Escape, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hcl.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hcl.rb new file mode 100644 index 0000000000..37429b1ac0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/hcl.rb @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Hcl < RegexLexer + tag 'hcl' + + title 'Hashicorp Configuration Language' + desc 'Hashicorp Configuration Language, used by Terraform and other Hashicorp tools' + + state :multiline_comment do + rule %r([*]/), Comment::Multiline, :pop! + rule %r([^*/]+), Comment::Multiline + rule %r([*/]), Comment::Multiline + end + + state :comments_and_whitespace do + rule /\s+/, Text + rule %r(//.*?$), Comment::Single + rule %r(#.*?$), Comment::Single + rule %r(/[*]), Comment::Multiline, :multiline_comment + end + + state :primitives do + rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?([kKmMgG]b?)?/, Num::Float + rule /[0-9]+([kKmMgG]b?)?/, Num::Integer + + rule /"/, Str::Double, :dq + rule /'/, Str::Single, :sq + rule /(<<-?)(\s*)(\'?)(\\?)(\w+)(\3)/ do |m| + groups Operator, Text, Str::Heredoc, Str::Heredoc, Name::Constant, Str::Heredoc + @heredocstr = Regexp.escape(m[5]) + push :heredoc + end + end + + def self.keywords + @keywords ||= Set.new %w() + end + + def self.declarations + @declarations ||= Set.new %w() + end + + def self.reserved + @reserved ||= Set.new %w() + end + + def self.constants + @constants ||= Set.new %w(true false null) + end + + def self.builtins + @builtins ||= %w() + end + + id = /[$a-z_][a-z0-9_]*/io + + state :root do + mixin :comments_and_whitespace + mixin :primitives + + rule /\{/ do + token Punctuation + push :hash + end + rule /\[/ do + token Punctuation + push :array + end + + rule id do |m| + if self.class.keywords.include? m[0] + token Keyword + push :composite + elsif self.class.declarations.include? m[0] + token Keyword::Declaration + push :composite + elsif self.class.reserved.include? m[0] + token Keyword::Reserved + elsif self.class.constants.include? m[0] + token Keyword::Constant + elsif self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Other + push :composite + end + end + end + + state :composite do + mixin :comments_and_whitespace + + rule /[{]/ do + token Punctuation + pop! + push :hash + end + + rule /[\[]/ do + token Punctuation + pop! + push :array + end + + mixin :root + + rule //, Text, :pop! + end + + state :hash do + mixin :comments_and_whitespace + + rule /\=/, Punctuation + rule /\}/, Punctuation, :pop! + + mixin :root + end + + state :array do + mixin :comments_and_whitespace + + rule /,/, Punctuation + rule /\]/, Punctuation, :pop! + + mixin :root + end + + state :dq do + rule /[^\\"]+/, Str::Double + rule /\\"/, Str::Escape + rule /"/, Str::Double, :pop! + end + + state :sq do + rule /[^\\']+/, Str::Single + rule /\\'/, Str::Escape + rule /'/, Str::Single, :pop! + end + + state :heredoc do + rule /\n/, Str::Heredoc, :heredoc_nl + rule /[^$\n]+/, Str::Heredoc + rule /[$]/, Str::Heredoc + end + + state :heredoc_nl do + rule /\s*(\w+)\s*\n/ do |m| + if m[1] == @heredocstr + token Name::Constant + pop! 2 + else + token Str::Heredoc + end + end + + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/html.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/html.rb new file mode 100644 index 0000000000..551558a74e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/html.rb @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class HTML < RegexLexer + title "HTML" + desc "HTML, the markup language of the web" + tag 'html' + filenames '*.htm', '*.html', '*.xhtml' + mimetypes 'text/html', 'application/xhtml+xml' + + def self.detect?(text) + return true if text.doctype?(/\bhtml\b/i) + return true if text =~ /<\s*html\b/ + end + + start do + @javascript = Javascript.new(options) + @css = CSS.new(options) + end + + state :root do + rule /[^<&]+/m, Text + rule /&\S*?;/, Name::Entity + rule //im, Comment::Preproc + rule //m, Comment::Preproc + rule //, Comment, :pop! + rule /-/, Comment + end + + state :tag do + rule /\s+/m, Text + rule /[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr + rule /[a-zA-Z0-9_:-]+/, Name::Attribute + rule %r(/?\s*>)m, Name::Tag, :pop! + end + + state :attr do + # TODO: are backslash escapes valid here? + rule /"/ do + token Str + goto :dq + end + + rule /'/ do + token Str + goto :sq + end + + rule /[^\s>]+/, Str, :pop! + end + + state :dq do + rule /"/, Str, :pop! + rule /[^"]+/, Str + end + + state :sq do + rule /'/, Str, :pop! + rule /[^']+/, Str + end + + state :script_content do + rule %r([^<]+) do + delegate @javascript + end + + rule %r(<\s*/\s*script\s*>)m, Name::Tag, :pop! + + rule %r(<) do + delegate @javascript + end + end + + state :style_content do + rule /[^<]+/ do + delegate @lang + end + + rule %r(<\s*/\s*style\s*>)m, Name::Tag, :pop! + + rule / ->> . / // + //= /= < << <<= <= = > >= >> + >>= @ @= ^ ^= accumulate apply as-> assoc butlast + calling-module-name car cdr chain coll? combinations comp complement compress cond + cons cons? constantly count cut cycle dec defclass defmacro defmacro! + defmacro/g! defmain defn defreader dict-comp disassemble dispatch-reader-macro distinct do doto + drop drop-last drop-while empty? eval eval-and-compile eval-when-compile even? every? filter + first flatten float? fn for* fraction genexpr gensym get group-by + identity if* if-not if-python2 inc input instance? integer integer-char? integer? + interleave interpose islice iterable? iterate iterator? juxt keyword keyword? last + let lif lif-not list* list-comp macro-error macroexpand macroexpand-1 map merge-with + multicombinations name neg? none? not-in not? nth numeric? odd? partition + permutations pos? product quasiquote quote range read read-str reduce remove + repeat repeatedly require rest second set-comp setv some string string? + symbol? take take-nth take-while tee unless unquote unquote-splicing when with* + with-decorator with-gensyms xor yield-from zero? zip zip-longest | |= ~ + ) + end + + identifier = %r([\w!$%*+,<=>?/.-]+) + keyword = %r([\w!\#$%*+,<=>?/.-]+) + + def name_token(name) + return Keyword if self.class.keywords.include?(name) + return Name::Builtin if self.class.builtins.include?(name) + nil + end + + state :root do + rule /;.*?$/, Comment::Single + rule /\s+/m, Text::Whitespace + + rule /-?\d+\.\d+/, Num::Float + rule /-?\d+/, Num::Integer + rule /0x-?[0-9a-fA-F]+/, Num::Hex + + rule /"(\\.|[^"])*"/, Str + rule /'#{keyword}/, Str::Symbol + rule /::?#{keyword}/, Name::Constant + rule /\\(.|[a-z]+)/i, Str::Char + + + rule /~@|[`\'#^~&@]/, Operator + + rule /(\()(\s*)(#{identifier})/m do |m| + token Punctuation, m[1] + token Text::Whitespace, m[2] + token(name_token(m[3]) || Name::Function, m[3]) + end + + rule identifier do |m| + token name_token(m[0]) || Name + end + + # vectors + rule /[\[\]]/, Punctuation + + # maps + rule /[{}]/, Punctuation + + # parentheses + rule /[()]/, Punctuation + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/idlang.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/idlang.rb new file mode 100644 index 0000000000..47a61b9f55 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/idlang.rb @@ -0,0 +1,312 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# vim: set ts=2 sw=2 et: + +module Rouge + module Lexers + class IDLang < RegexLexer + title "IDL" + desc "Interactive Data Language" + + tag 'idlang' + filenames '*.idl' + + name = /[_A-Z]\w*/i + kind_param = /(\d+|#{name})/ + exponent = /[dDeE][+-]\d+/ + + def self.exec_unit + @exec_unit ||= Set.new %w( + PRO FUNCTION + ) + end + + def self.keywords + @keywords ||= Set.new %w( + STRUCT INHERITS + RETURN CONTINUE BEGIN END BREAK GOTO + ) + end + + def self.standalone_statements + # Must not have a comma afterwards + @standalone_statements ||= Set.new %w( + COMMON FORWARD_FUNCTION + ) + end + + def self.decorators + # Must not have a comma afterwards + @decorators ||= Set.new %w( + COMPILE_OPT + ) + end + + def self.operators + @operators ||= Set.new %w( + AND= EQ= GE= GT= LE= LT= MOD= NE= OR= XOR= NOT= + ) + end + + def self.conditionals + @conditionals ||= Set.new %w( + OF DO ENDIF ENDELSE ENDFOR ENDFOREACH ENDWHILE ENDREP ENDCASE ENDSWITCH + IF THEN ELSE FOR FOREACH WHILE REPEAT UNTIL CASE SWITCH + AND EQ GE GT LE LT MOD NE OR XOR NOT + ) + end + + def self.routines + @routines ||= Set.new %w( + A_CORRELATE ABS ACOS ADAPT_HIST_EQUAL ALOG ALOG10 + AMOEBA ANNOTATE ARG_PRESENT ARRAY_EQUAL + ARRAY_INDICES ARROW ASCII_TEMPLATE ASIN ASSOC ATAN + AXIS BAR_PLOT BESELI BESELJ BESELK BESELY BETA + BILINEAR BIN_DATE BINARY_TEMPLATE BINDGEN BINOMIAL + BLAS_AXPY BLK_CON BOX_CURSOR BREAK BREAKPOINT + BROYDEN BYTARR BYTE BYTEORDER BYTSCL C_CORRELATE + CALDAT CALENDAR CALL_EXTERNAL CALL_FUNCTION + CALL_METHOD CALL_PROCEDURE CATCH CD CEIL CHEBYSHEV + CHECK_MATH CHISQR_CVF CHISQR_PDF CHOLDC CHOLSOL + CINDGEN CIR_3PNT CLOSE CLUST_WTS CLUSTER + COLOR_CONVERT COLOR_QUAN COLORMAP_APPLICABLE COMFIT + COMPLEX COMPLEXARR COMPLEXROUND + COMPUTE_MESH_NORMALS COND CONGRID CONJ + CONSTRAINED_MIN CONTOUR CONVERT_COORD CONVOL + COORD2TO3 CORRELATE COS COSH CRAMER CREATE_STRUCT + CREATE_VIEW CROSSP CRVLENGTH CT_LUMINANCE CTI_TEST + CURSOR CURVEFIT CV_COORD CVTTOBM CW_ANIMATE + CW_ANIMATE_GETP CW_ANIMATE_LOAD CW_ANIMATE_RUN + CW_ARCBALL CW_BGROUP CW_CLR_INDEX CW_COLORSEL + CW_DEFROI CW_FIELD CW_FILESEL CW_FORM CW_FSLIDER + CW_LIGHT_EDITOR CW_LIGHT_EDITOR_GET + CW_LIGHT_EDITOR_SET CW_ORIENT CW_PALETTE_EDITOR + CW_PALETTE_EDITOR_GET CW_PALETTE_EDITOR_SET + CW_PDMENU CW_RGBSLIDER CW_TMPL CW_ZOOM DBLARR + DCINDGEN DCOMPLEX DCOMPLEXARR DEFINE_KEY DEFROI + DEFSYSV DELETE_SYMBOL DELLOG DELVAR DERIV DERIVSIG + DETERM DEVICE DFPMIN DIALOG_MESSAGE + DIALOG_PICKFILE DIALOG_PRINTERSETUP + DIALOG_PRINTJOB DIALOG_READ_IMAGE + DIALOG_WRITE_IMAGE DICTIONARY DIGITAL_FILTER DILATE DINDGEN + DISSOLVE DIST DLM_LOAD DLM_REGISTER + DO_APPLE_SCRIPT DOC_LIBRARY DOUBLE DRAW_ROI EFONT + EIGENQL EIGENVEC ELMHES EMPTY ENABLE_SYSRTN EOF + ERASE ERODE ERRORF ERRPLOT EXECUTE EXIT EXP EXPAND + EXPAND_PATH EXPINT EXTRAC EXTRACT_SLICE F_CVF + F_PDF FACTORIAL FFT FILE_CHMOD FILE_DELETE + FILE_EXPAND_PATH FILE_MKDIR FILE_TEST FILE_WHICH + FILE_SEARCH PATH_SEP FILE_DIRNAME FILE_BASENAME + FILE_INFO FILE_MOVE FILE_COPY FILE_LINK FILE_POLL_INPUT + FILEPATH FINDFILE FINDGEN FINITE FIX FLICK FLOAT + FLOOR FLOW3 FLTARR FLUSH FORMAT_AXIS_VALUES + FORWARD_FUNCTION FREE_LUN FSTAT FULSTR FUNCT + FV_TEST FX_ROOT FZ_ROOTS GAMMA GAMMA_CT + GAUSS_CVF GAUSS_PDF GAUSS2DFIT GAUSSFIT GAUSSINT + GET_DRIVE_LIST GET_KBRD GET_LUN GET_SCREEN_SIZE + GET_SYMBOL GETENV GOTO GREG2JUL GRID_TPS GRID3 GS_ITER + H_EQ_CT H_EQ_INT HANNING HASH HEAP_GC HELP HILBERT + HIST_2D HIST_EQUAL HISTOGRAM HLS HOUGH HQR HSV + IBETA IDENTITY IDL_CONTAINER IDLANROI + IDLANROIGROUP IDLFFDICOM IDLFFDXF IDLFFLANGUAGECAT + IDLFFSHAPE IDLGRAXIS IDLGRBUFFER IDLGRCLIPBOARD + IDLGRCOLORBAR IDLGRCONTOUR IDLGRFONT IDLGRIMAGE + IDLGRLEGEND IDLGRLIGHT IDLGRMODEL IDLGRMPEG + IDLGRPALETTE IDLGRPATTERN IDLGRPLOT IDLGRPOLYGON + IDLGRPOLYLINE IDLGRPRINTER IDLGRROI IDLGRROIGROUP + IDLGRSCENE IDLGRSURFACE IDLGRSYMBOL + IDLGRTESSELLATOR IDLGRTEXT IDLGRVIEW + IDLGRVIEWGROUP IDLGRVOLUME IDLGRVRML IDLGRWINDOW + IGAMMA IMAGE_CONT IMAGE_STATISTICS IMAGINARY + INDGEN INT_2D INT_3D INT_TABULATED INTARR INTERPOL + INTERPOLATE INVERT IOCTL ISA ISHFT ISOCONTOUR + ISOSURFACE JOURNAL JUL2GREG JULDAY KEYWORD_SET KRIG2D + KURTOSIS KW_TEST L64INDGEN LABEL_DATE LABEL_REGION + LADFIT LAGUERRE LEEFILT LEGENDRE LINBCG LINDGEN + LINFIT LINKIMAGE LIST LIVE_CONTOUR LIVE_CONTROL + LIVE_DESTROY LIVE_EXPORT LIVE_IMAGE LIVE_INFO + LIVE_LINE LIVE_LOAD LIVE_OPLOT LIVE_PLOT + LIVE_PRINT LIVE_RECT LIVE_STYLE LIVE_SURFACE + LIVE_TEXT LJLCT LL_ARC_DISTANCE LMFIT LMGR LNGAMMA + LNP_TEST LOADCT LOCALE_GET LON64ARR LONARR LONG + LONG64 LSODE LU_COMPLEX LUDC LUMPROVE LUSOL + M_CORRELATE MACHAR MAKE_ARRAY MAKE_DLL MAP_2POINTS + MAP_CONTINENTS MAP_GRID MAP_IMAGE MAP_PATCH + MAP_PROJ_INFO MAP_SET MAX MATRIX_MULTIPLY MD_TEST MEAN + MEANABSDEV MEDIAN MEMORY MESH_CLIP MESH_DECIMATE + MESH_ISSOLID MESH_MERGE MESH_NUMTRIANGLES MESH_OBJ + MESH_SMOOTH MESH_SURFACEAREA MESH_VALIDATE + MESH_VOLUME MESSAGE MIN MIN_CURVE_SURF MK_HTML_HELP + MODIFYCT MOMENT MORPH_CLOSE MORPH_DISTANCE + MORPH_GRADIENT MORPH_HITORMISS MORPH_OPEN + MORPH_THIN MORPH_TOPHAT MPEG_CLOSE MPEG_OPEN + MPEG_PUT MPEG_SAVE MSG_CAT_CLOSE MSG_CAT_COMPILE + MSG_CAT_OPEN MULTI N_ELEMENTS N_PARAMS N_TAGS + NEWTON NORM OBJ_CLASS OBJ_DESTROY OBJ_ISA OBJ_NEW + OBJ_VALID OBJARR ON_ERROR ON_IOERROR ONLINE_HELP + OPEN OPENR OPENW OPENU OPLOT OPLOTERR ORDEREDHASH P_CORRELATE + PARTICLE_TRACE PCOMP PLOT PLOT_3DBOX PLOT_FIELD + PLOTERR PLOTS PNT_LINE POINT_LUN POLAR_CONTOUR + POLAR_SURFACE POLY POLY_2D POLY_AREA POLY_FIT + POLYFILL POLYFILLV POLYSHADE POLYWARP POPD POWELL + PRIMES PRINT PRINTF PRINTD PRODUCT PROFILE PROFILER + PROFILES PROJECT_VOL PS_SHOW_FONTS PSAFM PSEUDO + PTR_FREE PTR_NEW PTR_VALID PTRARR PUSHD QROMB + QROMO QSIMP QUERY_CSV R_CORRELATE R_TEST RADON RANDOMN + RANDOMU RANKS RDPIX READ READF READ_ASCII + READ_BINARY READ_BMP READ_CSV READ_DICOM READ_IMAGE + READ_INTERFILE READ_JPEG READ_PICT READ_PNG + READ_PPM READ_SPR READ_SRF READ_SYLK READ_TIFF + READ_WAV READ_WAVE READ_X11_BITMAP READ_XWD READS + READU REBIN RECALL_COMMANDS RECON3 REDUCE_COLORS + REFORM REGRESS REPLICATE REPLICATE_INPLACE + RESOLVE_ALL RESOLVE_ROUTINE RESTORE RETALL + REVERSE REWIND RK4 ROBERTS ROT ROTATE ROUND + ROUTINE_INFO RS_TEST S_TEST SAVE SAVGOL SCALE3 + SCALE3D SCOPE_LEVEL SCOPE_TRACEBACK SCOPE_VARFETCH + SCOPE_VARNAME SEARCH2D SEARCH3D SET_PLOT SET_SHADING + SET_SYMBOL SETENV SETLOG SETUP_KEYS SFIT + SHADE_SURF SHADE_SURF_IRR SHADE_VOLUME SHIFT SHOW3 + SHOWFONT SIGNUM SIN SINDGEN SINH SIZE SKEWNESS SKIPF + SLICER3 SLIDE_IMAGE SMOOTH SOBEL SOCKET SORT SPAWN + SPH_4PNT SPH_SCAT SPHER_HARM SPL_INIT SPL_INTERP + SPLINE SPLINE_P SPRSAB SPRSAX SPRSIN SPRSTP SQRT + STANDARDIZE STDDEV STOP STRARR STRCMP STRCOMPRESS + STREAMLINE STREGEX STRETCH STRING STRJOIN STRLEN + STRLOWCASE STRMATCH STRMESSAGE STRMID STRPOS + STRPUT STRSPLIT STRTRIM STRUCT_ASSIGN STRUCT_HIDE + STRUPCASE SURFACE SURFR SVDC SVDFIT SVSOL + SWAP_ENDIAN SWITCH SYSTIME T_CVF T_PDF T3D + TAG_NAMES TAN TANH TAPRD TAPWRT TEK_COLOR + TEMPORARY TETRA_CLIP TETRA_SURFACE TETRA_VOLUME + THIN THREED TIME_TEST2 TIMEGEN TM_TEST TOTAL TRACE + TRANSPOSE TRI_SURF TRIANGULATE TRIGRID TRIQL + TRIRED TRISOL TRNLOG TS_COEF TS_DIFF TS_FCAST + TS_SMOOTH TV TVCRS TVLCT TVRD TVSCL TYPENAME UINDGEN UINT + UINTARR UL64INDGEN ULINDGEN ULON64ARR ULONARR + ULONG ULONG64 UNIQ USERSYM VALUE_LOCATE VARIANCE + VAX_FLOAT VECTOR_FIELD VEL VELOVECT VERT_T3D VOIGT + VORONOI VOXEL_PROJ WAIT WARP_TRI WATERSHED WDELETE + WEOF WF_DRAW WHERE WIDGET_BASE WIDGET_BUTTON + WIDGET_CONTROL WIDGET_DRAW WIDGET_DROPLIST + WIDGET_EVENT WIDGET_INFO WIDGET_LABEL WIDGET_LIST + WIDGET_SLIDER WIDGET_TABLE WIDGET_TEXT WINDOW + WRITE_BMP WRITE_CSV WRITE_IMAGE WRITE_JPEG WRITE_NRIF + WRITE_PICT WRITE_PNG WRITE_PPM WRITE_SPR WRITE_SRF + WRITE_SYLK WRITE_TIFF WRITE_WAV WRITE_WAVE WRITEU + WSET WSHOW WTN WV_APPLET WV_CW_WAVELET WV_CWT + WV_DENOISE WV_DWT WV_FN_COIFLET WV_FN_DAUBECHIES + WV_FN_GAUSSIAN WV_FN_HAAR WV_FN_MORLET WV_FN_PAUL + WV_FN_SYMLET WV_IMPORT_DATA WV_IMPORT_WAVELET + WV_PLOT3D_WPS WV_PLOT_MULTIRES WV_PWT + WV_TOOL_DENOISE XBM_EDIT XDISPLAYFILE XDXF XFONT + XINTERANIMATE XLOADCT XMANAGER XMNG_TMPL XMTOOL + XOBJVIEW XPALETTE XPCOLOR XPLOT3D XREGISTERED XROI + XSQ_TEST XSURFACE XVAREDIT XVOLUME XVOLUME_ROTATE + XVOLUME_WRITE_IMAGE XYOUTS ZOOM ZOOM_24 + ) + end + + state :root do + rule /[\s\n]+/, Text::Whitespace + # Normal comments + rule /;.*$/, Comment::Single + rule /\,\s*\,/, Error + rule /\!#{name}/, Name::Variable::Global + + rule /[(),:\&\$]/, Punctuation + + ## Format statements are quite a strange beast. + ## Better process them in their own state. + #rule /\b(FORMAT)(\s*)(\()/mi do |m| + # token Keyword, m[1] + # token Text::Whitespace, m[2] + # token Punctuation, m[3] + # push :format_spec + #end + + rule %r( + [+-]? # sign + ( + (\d+[.]\d*|[.]\d+)(#{exponent})? + | \d+#{exponent} # exponent is mandatory + ) + (_#{kind_param})? # kind parameter + )xi, Num::Float + + rule /\d+(B|S|U|US|LL|L|ULL|UL)?/i, Num::Integer + rule /"[0-7]+(B|O|U|ULL|UL|LL|L)?/i, Num::Oct + rule /'[0-9A-F]+'X(B|S|US|ULL|UL|U|LL|L)?/i, Num::Hex + rule /(#{kind_param}_)?'/, Str::Single, :string_single + rule /(#{kind_param}_)?"/, Str::Double, :string_double + + rule %r{\#\#|\#|\&\&|\|\||/=|<=|>=|->|\@|\?|[-+*/<=~^{}]}, Operator + # Structures and the like + rule /(#{name})(\.)([^\s,]*)/i do |m| + groups Name, Operator, Name + #delegate IDLang, m[3] + end + + rule /(function|pro)((?:\s|\$\s)+)/i do + groups Keyword, Text::Whitespace + push :funcname + end + + rule /#{name}/m do |m| + match = m[0].upcase + if self.class.keywords.include? match + token Keyword + elsif self.class.conditionals.include? match + token Keyword + elsif self.class.decorators.include? match + token Name::Decorator + elsif self.class.standalone_statements.include? match + token Keyword::Reserved + elsif self.class.operators.include? match + token Operator::Word + elsif self.class.routines.include? match + token Name::Builtin + else + token Name + end + end + + end + + state :funcname do + rule /#{name}/, Name::Function + + rule /\s+/, Text::Whitespace + rule /(:+|\$)/, Operator + rule /;.*/, Comment::Single + + # Be done with this state if we hit EOL or comma + rule /$/, Text::Whitespace, :pop! + rule /,/, Operator, :pop! + end + + state :string_single do + rule /[^']+/, Str::Single + rule /''/, Str::Escape + rule /'/, Str::Single, :pop! + end + + state :string_double do + rule /[^"]+/, Str::Double + rule /"/, Str::Double, :pop! + end + + state :format_spec do + rule /'/, Str::Single, :string_single + rule /"/, Str::Double, :string_double + rule /\(/, Punctuation, :format_spec + rule /\)/, Punctuation, :pop! + rule /,/, Punctuation + rule /[\s\n]+/, Text::Whitespace + # Edit descriptors could be seen as a kind of "format literal". + rule /[^\s'"(),]+/, Literal + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/igorpro.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/igorpro.rb new file mode 100644 index 0000000000..e3934d0bf5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/igorpro.rb @@ -0,0 +1,664 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class IgorPro < RegexLexer + tag 'igorpro' + filenames '*.ipf' + mimetypes 'text/x-igorpro' + + title "IgorPro" + desc "WaveMetrics Igor Pro" + + def self.keywords + @keywords ||= Set.new %w( + structure endstructure + threadsafe static + macro proc window menu function end + if else elseif endif switch strswitch endswitch + break return continue + for endfor do while + case default + try catch endtry + abortonrte + ) + end + + def self.preprocessor + @preprocessor ||= Set.new %w( + pragma include + define ifdef ifndef undef + if elif else endif + ) + end + + def self.igorDeclarations + @igorDeclarations ||= Set.new %w( + variable string wave strconstant constant + nvar svar dfref funcref struct + char uchar int16 uint16 int32 uint32 int64 uint64 float double + ) + end + + def self.igorConstants + @igorConstants ||= Set.new %w( + nan inf + ) + end + + def self.igorFunction + @igorFunction ||= Set.new %w( + AddListItem AiryA AiryAD AiryB AiryBD AnnotationInfo + AnnotationList AxisInfo AxisList AxisValFromPixel + AxonTelegraphAGetDataNum AxonTelegraphAGetDataString + AxonTelegraphAGetDataStruct AxonTelegraphGetDataNum + AxonTelegraphGetDataString AxonTelegraphGetDataStruct + AxonTelegraphGetTimeoutMs AxonTelegraphSetTimeoutMs + Base64Decode Base64Encode Besseli Besselj Besselk + Bessely BinarySearch BinarySearchInterp CTabList + CaptureHistory CaptureHistoryStart CheckName + ChildWindowList CleanupName ContourInfo ContourNameList + ContourNameToWaveRef ContourZ ControlNameList + ConvertTextEncoding CountObjects CountObjectsDFR + CreationDate CsrInfo CsrWave CsrWaveRef CsrXWave + CsrXWaveRef DataFolderDir DataFolderExists + DataFolderRefStatus DataFolderRefsEqual DateToJulian + Dawson DimDelta DimOffset DimSize Faddeeva FetchURL + FindDimLabel FindListItem FontList FontSizeHeight + FontSizeStringWidth FresnelCos FresnelSin FuncRefInfo + FunctionInfo FunctionList FunctionPath + GISGetAllFileFormats GISSRefsAreEqual Gauss Gauss1D + Gauss2D GetBrowserLine GetBrowserSelection + GetDataFolder GetDataFolderDFR GetDefaultFont + GetDefaultFontSize GetDefaultFontStyle GetDimLabel + GetEnvironmentVariable GetErrMessage GetFormula + GetIndependentModuleName GetIndexedObjName + GetIndexedObjNameDFR GetKeyState GetRTErrMessage + GetRTError GetRTLocInfo GetRTLocation GetRTStackInfo + GetScrapText GetUserData GetWavesDataFolder + GetWavesDataFolderDFR GizmoInfo GizmoScale GrepList + GrepString GuideInfo GuideNameList HDF5AttributeInfo + HDF5DatasetInfo HDF5LibraryInfo HDF5TypeInfo Hash + HyperG0F1 HyperG1F1 HyperG2F1 HyperGNoise HyperGPFQ + IgorInfo IgorVersion ImageInfo ImageNameList + ImageNameToWaveRef IndependentModuleList IndexToScale + IndexedDir IndexedFile Inf Integrate1D Interp2D + Interp3D ItemsInList JacobiCn JacobiSn JulianToDate + Laguerre LaguerreA LaguerreGauss LambertW LayoutInfo + LegendreA ListMatch ListToTextWave ListToWaveRefWave + LowerStr MCC_AutoBridgeBal MCC_AutoFastComp + MCC_AutoPipetteOffset MCC_AutoSlowComp + MCC_AutoWholeCellComp MCC_GetBridgeBalEnable + MCC_GetBridgeBalResist MCC_GetFastCompCap + MCC_GetFastCompTau MCC_GetHolding MCC_GetHoldingEnable + MCC_GetMode MCC_GetNeutralizationCap + MCC_GetNeutralizationEnable MCC_GetOscKillerEnable + MCC_GetPipetteOffset MCC_GetPrimarySignalGain + MCC_GetPrimarySignalHPF MCC_GetPrimarySignalLPF + MCC_GetRsCompBandwidth MCC_GetRsCompCorrection + MCC_GetRsCompEnable MCC_GetRsCompPrediction + MCC_GetSecondarySignalGain MCC_GetSecondarySignalLPF + MCC_GetSlowCompCap MCC_GetSlowCompTau + MCC_GetSlowCompTauX20Enable MCC_GetSlowCurrentInjEnable + MCC_GetSlowCurrentInjLevel + MCC_GetSlowCurrentInjSetlTime MCC_GetWholeCellCompCap + MCC_GetWholeCellCompEnable MCC_GetWholeCellCompResist + MCC_SelectMultiClamp700B MCC_SetBridgeBalEnable + MCC_SetBridgeBalResist MCC_SetFastCompCap + MCC_SetFastCompTau MCC_SetHolding MCC_SetHoldingEnable + MCC_SetMode MCC_SetNeutralizationCap + MCC_SetNeutralizationEnable MCC_SetOscKillerEnable + MCC_SetPipetteOffset MCC_SetPrimarySignalGain + MCC_SetPrimarySignalHPF MCC_SetPrimarySignalLPF + MCC_SetRsCompBandwidth MCC_SetRsCompCorrection + MCC_SetRsCompEnable MCC_SetRsCompPrediction + MCC_SetSecondarySignalGain MCC_SetSecondarySignalLPF + MCC_SetSlowCompCap MCC_SetSlowCompTau + MCC_SetSlowCompTauX20Enable MCC_SetSlowCurrentInjEnable + MCC_SetSlowCurrentInjLevel + MCC_SetSlowCurrentInjSetlTime MCC_SetTimeoutMs + MCC_SetWholeCellCompCap MCC_SetWholeCellCompEnable + MCC_SetWholeCellCompResist MPFXEMGPeak + MPFXExpConvExpPeak MPFXGaussPeak MPFXLorenzianPeak + MPFXVoigtPeak MacroList MandelbrotPoint MarcumQ + MatrixCondition MatrixDet MatrixDot MatrixRank + MatrixTrace ModDate NVAR_Exists NaN NameOfWave + NewFreeDataFolder NewFreeWave NormalizeUnicode + NumVarOrDefault NumberByKey OperationList PICTInfo + PICTList PadString PanelResolution ParamIsDefault + ParseFilePath PathList Pi PixelFromAxisVal PolygonArea + PossiblyQuoteName ProcedureText RemoveByKey + RemoveEnding RemoveFromList RemoveListItem + ReplaceNumberByKey ReplaceString ReplaceStringByKey + SQL2DBinaryWaveToTextWave SQLAllocHandle SQLAllocStmt + SQLBinaryWavesToTextWave SQLBindCol SQLBindParameter + SQLBrowseConnect SQLBulkOperations SQLCancel + SQLCloseCursor SQLColAttributeNum SQLColAttributeStr + SQLColumnPrivileges SQLColumns SQLConnect + SQLDataSources SQLDescribeCol SQLDescribeParam + SQLDisconnect SQLDriverConnect SQLDrivers SQLEndTran + SQLError SQLExecDirect SQLExecute SQLFetch + SQLFetchScroll SQLForeignKeys SQLFreeConnect SQLFreeEnv + SQLFreeHandle SQLFreeStmt SQLGetConnectAttrNum + SQLGetConnectAttrStr SQLGetCursorName SQLGetDataNum + SQLGetDataStr SQLGetDescFieldNum SQLGetDescFieldStr + SQLGetDescRec SQLGetDiagFieldNum SQLGetDiagFieldStr + SQLGetDiagRec SQLGetEnvAttrNum SQLGetEnvAttrStr + SQLGetFunctions SQLGetInfoNum SQLGetInfoStr + SQLGetStmtAttrNum SQLGetStmtAttrStr SQLGetTypeInfo + SQLMoreResults SQLNativeSql SQLNumParams + SQLNumResultCols SQLNumResultRowsIfKnown + SQLNumRowsFetched SQLParamData SQLPrepare + SQLPrimaryKeys SQLProcedureColumns SQLProcedures + SQLPutData SQLReinitialize SQLRowCount + SQLSetConnectAttrNum SQLSetConnectAttrStr + SQLSetCursorName SQLSetDescFieldNum SQLSetDescFieldStr + SQLSetDescRec SQLSetEnvAttrNum SQLSetEnvAttrStr + SQLSetPos SQLSetStmtAttrNum SQLSetStmtAttrStr + SQLSpecialColumns SQLStatistics SQLTablePrivileges + SQLTables SQLTextWaveTo2DBinaryWave + SQLTextWaveToBinaryWaves SQLUpdateBoundValues + SQLXOPCheckState SVAR_Exists ScreenResolution Secs2Date + Secs2Time SelectNumber SelectString + SetEnvironmentVariable SortList SpecialCharacterInfo + SpecialCharacterList SpecialDirPath SphericalBessJ + SphericalBessJD SphericalBessY SphericalBessYD + SphericalHarmonics StartMSTimer StatsBetaCDF + StatsBetaPDF StatsBinomialCDF StatsBinomialPDF + StatsCMSSDCDF StatsCauchyCDF StatsCauchyPDF StatsChiCDF + StatsChiPDF StatsCorrelation StatsDExpCDF StatsDExpPDF + StatsEValueCDF StatsEValuePDF StatsErlangCDF + StatsErlangPDF StatsErrorPDF StatsExpCDF StatsExpPDF + StatsFCDF StatsFPDF StatsFriedmanCDF StatsGEVCDF + StatsGEVPDF StatsGammaCDF StatsGammaPDF + StatsGeometricCDF StatsGeometricPDF StatsHyperGCDF + StatsHyperGPDF StatsInvBetaCDF StatsInvBinomialCDF + StatsInvCMSSDCDF StatsInvCauchyCDF StatsInvChiCDF + StatsInvDExpCDF StatsInvEValueCDF StatsInvExpCDF + StatsInvFCDF StatsInvFriedmanCDF StatsInvGammaCDF + StatsInvGeometricCDF StatsInvKuiperCDF + StatsInvLogNormalCDF StatsInvLogisticCDF + StatsInvMaxwellCDF StatsInvMooreCDF + StatsInvNBinomialCDF StatsInvNCChiCDF StatsInvNCFCDF + StatsInvNormalCDF StatsInvParetoCDF StatsInvPoissonCDF + StatsInvPowerCDF StatsInvQCDF StatsInvQpCDF + StatsInvRayleighCDF StatsInvRectangularCDF + StatsInvSpearmanCDF StatsInvStudentCDF + StatsInvTopDownCDF StatsInvTriangularCDF + StatsInvUsquaredCDF StatsInvVonMisesCDF + StatsInvWeibullCDF StatsKuiperCDF StatsLogNormalCDF + StatsLogNormalPDF StatsLogisticCDF StatsLogisticPDF + StatsMaxwellCDF StatsMaxwellPDF StatsMedian + StatsMooreCDF StatsNBinomialCDF StatsNBinomialPDF + StatsNCChiCDF StatsNCChiPDF StatsNCFCDF StatsNCFPDF + StatsNCTCDF StatsNCTPDF StatsNormalCDF StatsNormalPDF + StatsParetoCDF StatsParetoPDF StatsPermute + StatsPoissonCDF StatsPoissonPDF StatsPowerCDF + StatsPowerNoise StatsPowerPDF StatsQCDF StatsQpCDF + StatsRayleighCDF StatsRayleighPDF StatsRectangularCDF + StatsRectangularPDF StatsRunsCDF StatsSpearmanRhoCDF + StatsStudentCDF StatsStudentPDF StatsTopDownCDF + StatsTriangularCDF StatsTriangularPDF StatsTrimmedMean + StatsUSquaredCDF StatsVonMisesCDF StatsVonMisesNoise + StatsVonMisesPDF StatsWaldCDF StatsWaldPDF + StatsWeibullCDF StatsWeibullPDF StopMSTimer + StrVarOrDefault StringByKey StringFromList StringList + StudentA StudentT TDMAddChannel TDMAddGroup + TDMAppendDataValues TDMAppendDataValuesTime + TDMChannelPropertyExists TDMCloseChannel TDMCloseFile + TDMCloseGroup TDMCreateChannelProperty TDMCreateFile + TDMCreateFileProperty TDMCreateGroupProperty + TDMFilePropertyExists TDMGetChannelPropertyNames + TDMGetChannelPropertyNum TDMGetChannelPropertyStr + TDMGetChannelPropertyTime TDMGetChannelPropertyType + TDMGetChannelStringPropertyLen TDMGetChannels + TDMGetDataType TDMGetDataValues TDMGetDataValuesTime + TDMGetFilePropertyNames TDMGetFilePropertyNum + TDMGetFilePropertyStr TDMGetFilePropertyTime + TDMGetFilePropertyType TDMGetFileStringPropertyLen + TDMGetGroupPropertyNames TDMGetGroupPropertyNum + TDMGetGroupPropertyStr TDMGetGroupPropertyTime + TDMGetGroupPropertyType TDMGetGroupStringPropertyLen + TDMGetGroups TDMGetLibraryErrorDescription + TDMGetNumChannelProperties TDMGetNumChannels + TDMGetNumDataValues TDMGetNumFileProperties + TDMGetNumGroupProperties TDMGetNumGroups + TDMGroupPropertyExists TDMOpenFile TDMOpenFileEx + TDMRemoveChannel TDMRemoveGroup TDMReplaceDataValues + TDMReplaceDataValuesTime TDMSaveFile + TDMSetChannelPropertyNum TDMSetChannelPropertyStr + TDMSetChannelPropertyTime TDMSetDataValues + TDMSetDataValuesTime TDMSetFilePropertyNum + TDMSetFilePropertyStr TDMSetFilePropertyTime + TDMSetGroupPropertyNum TDMSetGroupPropertyStr + TDMSetGroupPropertyTime TableInfo TagVal TagWaveRef + TextEncodingCode TextEncodingName TextFile + ThreadGroupCreate ThreadGroupGetDF ThreadGroupGetDFR + ThreadGroupRelease ThreadGroupWait ThreadProcessorCount + ThreadReturnValue TraceFromPixel TraceInfo + TraceNameList TraceNameToWaveRef TrimString URLDecode + URLEncode UnPadString UniqueName + UnsetEnvironmentVariable UpperStr VariableList Variance + VoigtFunc VoigtPeak WaveCRC WaveDims WaveExists + WaveHash WaveInfo WaveList WaveMax WaveMin WaveName + WaveRefIndexed WaveRefIndexedDFR WaveRefWaveToList + WaveRefsEqual WaveTextEncoding WaveType WaveUnits + WhichListItem WinList WinName WinRecreation WinType + XWaveName XWaveRefFromTrace ZernikeR abs acos acosh + alog area areaXY asin asinh atan atan2 atanh beta betai + binomial binomialNoise binomialln cabs ceil cequal + char2num chebyshev chebyshevU cmplx cmpstr conj cos + cosIntegral cosh cot coth cpowi csc csch date date2secs + datetime defined deltax digamma dilogarithm ei enoise + equalWaves erf erfc erfcw exists exp expInt + expIntegralE1 expNoise fDAQmx_AI_GetReader + fDAQmx_AO_UpdateOutputs fDAQmx_CTR_Finished + fDAQmx_CTR_IsFinished fDAQmx_CTR_IsPulseFinished + fDAQmx_CTR_ReadCounter fDAQmx_CTR_ReadWithOptions + fDAQmx_CTR_SetPulseFrequency fDAQmx_CTR_Start + fDAQmx_ConnectTerminals fDAQmx_DIO_Finished + fDAQmx_DIO_PortWidth fDAQmx_DIO_Read fDAQmx_DIO_Write + fDAQmx_DeviceNames fDAQmx_DisconnectTerminals + fDAQmx_ErrorString fDAQmx_ExternalCalDate + fDAQmx_NumAnalogInputs fDAQmx_NumAnalogOutputs + fDAQmx_NumCounters fDAQmx_NumDIOPorts fDAQmx_ReadChan + fDAQmx_ReadNamedChan fDAQmx_ResetDevice + fDAQmx_ScanGetAvailable fDAQmx_ScanGetNextIndex + fDAQmx_ScanStart fDAQmx_ScanStop fDAQmx_ScanWait + fDAQmx_ScanWaitWithTimeout fDAQmx_SelfCalDate + fDAQmx_SelfCalibration fDAQmx_WF_IsFinished + fDAQmx_WF_WaitUntilFinished fDAQmx_WaveformStart + fDAQmx_WaveformStop fDAQmx_WriteChan factorial fakedata + faverage faverageXY floor gamma gammaEuler gammaInc + gammaNoise gammln gammp gammq gcd gnoise hcsr hermite + hermiteGauss imag interp inverseERF inverseERFC leftx + limit ln log logNormalNoise lorentzianNoise magsqr max + mean median min mod norm note num2char num2istr num2str + numpnts numtype p2rect pcsr pnt2x poissonNoise poly + poly2D qcsr r2polar real rightx round sawtooth + scaleToIndex sec sech sign sin sinIntegral sinc sinh + sqrt str2num stringCRC stringmatch strlen strsearch sum + tan tango_close_device tango_command_inout + tango_compute_image_proj tango_get_dev_attr_list + tango_get_dev_black_box tango_get_dev_cmd_list + tango_get_dev_status tango_get_dev_timeout + tango_get_error_stack tango_open_device + tango_ping_device tango_read_attribute + tango_read_attributes tango_reload_dev_interface + tango_resume_attr_monitor tango_set_attr_monitor_period + tango_set_dev_timeout tango_start_attr_monitor + tango_stop_attr_monitor tango_suspend_attr_monitor + tango_write_attribute tango_write_attributes tanh ticks + time trunc vcsr viAssertIntrSignal viAssertTrigger + viAssertUtilSignal viClear viClose viDisableEvent + viDiscardEvents viEnableEvent viFindNext viFindRsrc + viGetAttribute viGetAttributeString viGpibCommand + viGpibControlATN viGpibControlREN viGpibPassControl + viGpibSendIFC viIn16 viIn32 viIn8 viLock viMapAddress + viMapTrigger viMemAlloc viMemFree viMoveIn16 viMoveIn32 + viMoveIn8 viMoveOut16 viMoveOut32 viMoveOut8 viOpen + viOpenDefaultRM viOut16 viOut32 viOut8 viPeek16 + viPeek32 viPeek8 viPoke16 viPoke32 viPoke8 viRead + viReadSTB viSetAttribute viSetAttributeString + viStatusDesc viTerminate viUnlock viUnmapAddress + viUnmapTrigger viUsbControlIn viUsbControlOut + viVxiCommandQuery viWaitOnEvent viWrite wnoise x2pnt + xcsr zcsr zeromq_client_connect zeromq_client_connect + zeromq_client_recv zeromq_client_recv + zeromq_client_send zeromq_client_send + zeromq_handler_start zeromq_handler_start + zeromq_handler_stop zeromq_handler_stop + zeromq_server_bind zeromq_server_bind + zeromq_server_recv zeromq_server_recv + zeromq_server_send zeromq_server_send zeromq_set + zeromq_set zeromq_stop zeromq_stop + zeromq_test_callfunction zeromq_test_callfunction + zeromq_test_serializeWave zeromq_test_serializeWave + zeta + ) + end + + def self.igorOperation + @igorOperation ||= Set.new %w( + APMath Abort AddFIFOData AddFIFOVectData AddMovieAudio + AddMovieFrame AddWavesToBoxPlot AddWavesToViolinPlot + AdoptFiles Append AppendBoxPlot AppendImage + AppendLayoutObject AppendMatrixContour AppendText + AppendToGizmo AppendToGraph AppendToLayout + AppendToTable AppendViolinPlot AppendXYZContour + AutoPositionWindow AxonTelegraphFindServers + BackgroundInfo Beep BoundingBall BoxSmooth BrowseURL + BuildMenu Button CWT Chart CheckBox CheckDisplayed + ChooseColor Close CloseHelp CloseMovie CloseProc + ColorScale ColorTab2Wave Concatenate ControlBar + ControlInfo ControlUpdate + ConvertGlobalStringTextEncoding ConvexHull Convolve + CopyDimLabels CopyFile CopyFolder CopyScales Correlate + CreateAliasShortcut CreateBrowser Cross CtrlBackground + CtrlFIFO CtrlNamedBackground Cursor CurveFit + CustomControl DAQmx_AI_SetupReader DAQmx_AO_SetOutputs + DAQmx_CTR_CountEdges DAQmx_CTR_OutputPulse + DAQmx_CTR_Period DAQmx_CTR_PulseWidth DAQmx_DIO_Config + DAQmx_DIO_WriteNewData DAQmx_Scan DAQmx_WaveformGen + DPSS DSPDetrend DSPPeriodogram DWT Debugger + DebuggerOptions DefaultFont DefaultGuiControls + DefaultGuiFont DefaultTextEncoding DefineGuide + DelayUpdate DeleteAnnotations DeleteFile DeleteFolder + DeletePoints Differentiate Display DisplayHelpTopic + DisplayProcedure DoAlert DoIgorMenu DoUpdate DoWindow + DoXOPIdle DrawAction DrawArc DrawBezier DrawLine + DrawOval DrawPICT DrawPoly DrawRRect DrawRect DrawText + DrawUserShape Duplicate DuplicateDataFolder EdgeStats + Edit ErrorBars EstimatePeakSizes Execute + ExecuteScriptText ExperimentInfo ExperimentModified + ExportGizmo Extract FBinRead FBinWrite FFT FGetPos + FIFO2Wave FIFOStatus FMaxFlat FPClustering FReadLine + FSetPos FStatus FTPCreateDirectory FTPDelete + FTPDownload FTPUpload FastGaussTransform FastOp + FilterFIR FilterIIR FindAPeak FindContour + FindDuplicates FindLevel FindLevels FindPeak + FindPointsInPoly FindRoots FindSequence FindValue + FuncFit FuncFitMD GBLoadWave GISCreateVectorLayer + GISGetRasterInfo GISGetRegisteredFileInfo + GISGetVectorLayerInfo GISLoadRasterData + GISLoadVectorData GISRasterizeVectorData + GISRegisterFile GISTransformCoords GISUnRegisterFile + GISWriteFieldData GISWriteGeometryData GISWriteRaster + GPIB2 GPIBRead2 GPIBReadBinary2 GPIBReadBinaryWave2 + GPIBReadWave2 GPIBWrite2 GPIBWriteBinary2 + GPIBWriteBinaryWave2 GPIBWriteWave2 GetAxis GetCamera + GetFileFolderInfo GetGizmo GetLastUserMenuInfo + GetMarquee GetMouse GetSelection GetWindow GraphNormal + GraphWaveDraw GraphWaveEdit Grep GroupBox + HDF5CloseFile HDF5CloseGroup HDF5ConvertColors + HDF5CreateFile HDF5CreateGroup HDF5CreateLink HDF5Dump + HDF5DumpErrors HDF5DumpState HDF5FlushFile + HDF5ListAttributes HDF5ListGroup HDF5LoadData + HDF5LoadGroup HDF5LoadImage HDF5OpenFile HDF5OpenGroup + HDF5SaveData HDF5SaveGroup HDF5SaveImage + HDF5TestOperation HDF5UnlinkObject HDFInfo + HDFReadImage HDFReadSDS HDFReadVset Hanning + HideIgorMenus HideInfo HideProcedures HideTools + HilbertTransform Histogram ICA IFFT ITCCloseAll2 + ITCCloseDevice2 ITCConfigAllChannels2 + ITCConfigChannel2 ITCConfigChannelReset2 + ITCConfigChannelUpload2 ITCFIFOAvailable2 + ITCFIFOAvailableAll2 ITCGetAllChannelsConfig2 + ITCGetChannelConfig2 ITCGetCurrentDevice2 + ITCGetDeviceInfo2 ITCGetDevices2 ITCGetErrorString2 + ITCGetSerialNumber2 ITCGetState2 ITCGetVersions2 + ITCInitialize2 ITCOpenDevice2 ITCReadADC2 + ITCReadDigital2 ITCReadTimer2 ITCSelectDevice2 + ITCSetDAC2 ITCSetGlobals2 ITCSetModes2 ITCSetState2 + ITCStartAcq2 ITCStopAcq2 ITCUpdateFIFOPosition2 + ITCUpdateFIFOPositionAll2 ITCWriteDigital2 + ImageAnalyzeParticles ImageBlend ImageBoundaryToMask + ImageComposite ImageEdgeDetection ImageFileInfo + ImageFilter ImageFocus ImageFromXYZ ImageGLCM + ImageGenerateROIMask ImageHistModification + ImageHistogram ImageInterpolate ImageLineProfile + ImageLoad ImageMorphology ImageRegistration + ImageRemoveBackground ImageRestore ImageRotate + ImageSave ImageSeedFill ImageSkeleton3d ImageSnake + ImageStats ImageThreshold ImageTransform + ImageUnwrapPhase ImageWindow IndexSort InsertPoints + Integrate Integrate2D IntegrateODE Interp3DPath + Interpolate2 Interpolate3D JCAMPLoadWave + JointHistogram KMeans KillBackground KillControl + KillDataFolder KillFIFO KillFreeAxis KillPICTs + KillPath KillStrings KillVariables KillWaves + KillWindow Label Layout LayoutPageAction + LayoutSlideShow Legend LinearFeedbackShiftRegister + ListBox LoadData LoadPICT LoadPackagePreferences + LoadWave Loess LombPeriodogram MCC_FindServers + MFR_CheckForNewBricklets MFR_CloseResultFile + MFR_CreateOverviewTable MFR_GetBrickletCount + MFR_GetBrickletData MFR_GetBrickletDeployData + MFR_GetBrickletMetaData MFR_GetBrickletRawData + MFR_GetReportTemplate MFR_GetResultFileMetaData + MFR_GetResultFileName MFR_GetVernissageVersion + MFR_GetVersion MFR_GetXOPErrorMessage + MFR_OpenResultFile + MLLoadWave Make MakeIndex MarkPerfTestTime + MatrixConvolve MatrixCorr MatrixEigenV MatrixFilter + MatrixGLM MatrixGaussJ MatrixInverse MatrixLLS + MatrixLUBkSub MatrixLUD MatrixLUDTD MatrixLinearSolve + MatrixLinearSolveTD MatrixMultiply MatrixOP + MatrixSVBkSub MatrixSVD MatrixSchur MatrixSolve + MatrixTranspose MeasureStyledText Modify ModifyBoxPlot + ModifyBrowser ModifyCamera ModifyContour ModifyControl + ModifyControlList ModifyFreeAxis ModifyGizmo + ModifyGraph ModifyImage ModifyLayout ModifyPanel + ModifyTable ModifyViolinPlot ModifyWaterfall + MoveDataFolder MoveFile MoveFolder MoveString + MoveSubwindow MoveVariable MoveWave MoveWindow + MultiTaperPSD MultiThreadingControl NC_CloseFile + NC_DumpErrors NC_Inquire NC_ListAttributes + NC_ListObjects NC_LoadData NC_OpenFile NI4882 + NILoadWave NeuralNetworkRun NeuralNetworkTrain + NewCamera NewDataFolder NewFIFO NewFIFOChan + NewFreeAxis NewGizmo NewImage NewLayout NewMovie + NewNotebook NewPanel NewPath NewWaterfall Note + Notebook NotebookAction Open OpenHelp OpenNotebook + Optimize PCA ParseOperationTemplate PathInfo + PauseForUser PauseUpdate PlayMovie PlayMovieAction + PlaySound PopupContextualMenu PopupMenu Preferences + PrimeFactors Print PrintGraphs PrintLayout + PrintNotebook PrintSettings PrintTable Project + PulseStats PutScrapText Quit RatioFromNumber + Redimension Remez Remove RemoveContour RemoveFromGizmo + RemoveFromGraph RemoveFromLayout RemoveFromTable + RemoveImage RemoveLayoutObjects RemovePath Rename + RenameDataFolder RenamePICT RenamePath RenameWindow + ReorderImages ReorderTraces ReplaceText ReplaceWave + Resample ResumeUpdate Reverse Rotate SQLHighLevelOp + STFT Save SaveData SaveExperiment SaveGizmoCopy + SaveGraphCopy SaveNotebook SavePICT + SavePackagePreferences SaveTableCopy + SetActiveSubwindow SetAxis SetBackground + SetDashPattern SetDataFolder SetDimLabel SetDrawEnv + SetDrawLayer SetFileFolderInfo SetFormula + SetIdlePeriod SetIgorHook SetIgorMenuMode + SetIgorOption SetMarquee SetProcessSleep SetRandomSeed + SetScale SetVariable SetWaveLock SetWaveTextEncoding + SetWindow ShowIgorMenus ShowInfo ShowTools Silent + Sleep Slider Smooth SmoothCustom Sort SortColumns + SoundInRecord SoundInSet SoundInStartChart + SoundInStatus SoundInStopChart SoundLoadWave + SoundSaveWave SphericalInterpolate + SphericalTriangulate SplitString SplitWave Stack + StackWindows StatsANOVA1Test StatsANOVA2NRTest + StatsANOVA2RMTest StatsANOVA2Test + StatsAngularDistanceTest StatsChiTest + StatsCircularCorrelationTest StatsCircularMeans + StatsCircularMoments StatsCircularTwoSampleTest + StatsCochranTest StatsContingencyTable StatsDIPTest + StatsDunnettTest StatsFTest StatsFriedmanTest + StatsHodgesAjneTest StatsJBTest StatsKDE StatsKSTest + StatsKWTest StatsKendallTauTest + StatsLinearCorrelationTest StatsLinearRegression + StatsMultiCorrelationTest StatsNPMCTest + StatsNPNominalSRTest StatsQuantiles + StatsRankCorrelationTest StatsResample StatsSRTest + StatsSample StatsScheffeTest StatsShapiroWilkTest + StatsSignTest StatsTTest StatsTukeyTest + StatsVariancesTest StatsWRCorrelationTest + StatsWatsonUSquaredTest StatsWatsonWilliamsTest + StatsWheelerWatsonTest StatsWilcoxonRankTest String + StructFill StructGet StructPut SumDimension SumSeries + TDMLoadData TDMSaveData TabControl Tag TextBox + ThreadGroupPutDF ThreadStart TickWavesFromAxis Tile + TileWindows TitleBox ToCommandLine ToolsGrid + Triangulate3d URLRequest Unwrap VDT2 VDTClosePort2 + VDTGetPortList2 VDTGetStatus2 VDTOpenPort2 + VDTOperationsPort2 VDTRead2 VDTReadBinary2 + VDTReadBinaryWave2 VDTReadHex2 VDTReadHexWave2 + VDTReadWave2 VDTTerminalPort2 VDTWrite2 + VDTWriteBinary2 VDTWriteBinaryWave2 VDTWriteHex2 + VDTWriteHexWave2 VDTWriteWave2 VISAControl VISARead + VISAReadBinary VISAReadBinaryWave VISAReadWave + VISAWrite VISAWriteBinary VISAWriteBinaryWave + VISAWriteWave ValDisplay Variable WaveMeanStdv + WaveStats WaveTransform WignerTransform WindowFunction + XLLoadWave cd dir fprintf printf pwd sprintf sscanf + wfprintf + ) + end + + def self.object_name + /\b[a-z][a-z0-9_\.]*?\b/i + end + + object = self.object_name + noLineBreak = /(?:[ \t]|(?:\\\s*[\r\n]))+/ + operator = %r([\#$~!%^&*+=\|?:<>/-]) + punctuation = /[{}()\[\],.;]/ + number_float= /0x[a-f0-9]+/i + number_hex = /\d+\.\d+(e[\+\-]?\d+)?/ + number_int = /[\d]+(?:_\d+)*/ + + state :root do + rule %r(//), Comment, :comments + + rule /#{object}/ do |m| + if m[0].downcase =~ /function/ + token Keyword::Declaration + push :parse_function + elsif self.class.igorDeclarations.include? m[0].downcase + token Keyword::Declaration + push :parse_variables + elsif self.class.keywords.include? m[0].downcase + token Keyword + elsif self.class.igorConstants.include? m[0].downcase + token Keyword::Constant + elsif self.class.igorFunction.include? m[0].downcase + token Name::Builtin + elsif self.class.igorOperation.include? m[0].downcase + token Keyword::Reserved + push :operationFlags + elsif m[0].downcase =~ /\b(v|s|w)_[a-z]+[a-z0-9]*/ + token Name::Constant + else + token Name + end + end + + mixin :preprocessor + mixin :waveFlag + + mixin :characters + mixin :numbers + mixin :whitespace + end + + state :preprocessor do + rule %r((\#)(#{object})) do |m| + if self.class.preprocessor.include? m[2].downcase + token Comment::Preproc + else + token Punctuation, m[1] #i.e. ModuleFunctions + token Name, m[2] + end + + + end + end + + state :assignment do + mixin :whitespace + rule /\"/, Literal::String::Double, :string1 #punctuation for string + mixin :string2 + rule /#{number_float}/, Literal::Number::Float, :pop! + rule /#{number_int}/, Literal::Number::Integer, :pop! + rule /[\(\[\{][^\)\]\}]+[\)\]\}]/, Generic, :pop! + rule /[^\s\/\(]+/, Generic, :pop! + rule(//) { pop! } + end + + state :parse_variables do + mixin :whitespace + rule /[=]/, Punctuation, :assignment + rule object, Name::Variable + rule /[\[\]]/, Punctuation # optional variables in functions + rule /[,]/, Punctuation, :parse_variables + rule /\)/, Punctuation, :pop! # end of function + rule %r([/][a-z]+)i, Keyword::Pseudo, :parse_variables + rule(//) { pop! } + end + + state :parse_function do + rule %r([/][a-z]+)i, Keyword::Pseudo # only one flag + mixin :whitespace + rule object, Name::Function + rule /[\(]/, Punctuation, :parse_variables + rule(//) { pop! } + end + + state :operationFlags do + rule /#{noLineBreak}/, Text + rule /[=]/, Punctuation, :assignment + rule %r([/][a-z]+)i, Keyword::Pseudo, :operationFlags + rule /(as)(\s*)(#{object})/i do + groups Keyword::Type, Text, Name::Label + end + rule(//) { pop! } + end + + # inline variable assignments (i.e. for Make) with strict syntax + state :waveFlag do + rule %r( + (/(?:wave|X|Y)) + (\s*)(=)(\s*) + (#{object}) + )ix do |m| + token Keyword::Pseudo, m[1] + token Text, m[2] + token Punctuation, m[3] + token Text, m[4] + token Name::Variable, m[5] + end + end + + state :characters do + rule /\s/, Text + rule /#{operator}/, Operator + rule /#{punctuation}/, Punctuation + rule /\"/, Literal::String::Double, :string1 #punctuation for string + mixin :string2 + end + + state :numbers do + rule /#{number_float}/, Literal::Number::Float + rule /#{number_hex}/, Literal::Number::Hex + rule /#{number_int}/, Literal::Number::Integer + end + + state :whitespace do + rule /#{noLineBreak}/, Text + end + + state :string1 do + rule /%\w\b/, Literal::String::Other + rule /\\\\/, Literal::String::Escape + rule /\\\"/, Literal::String::Escape + rule /\\/, Literal::String::Escape + rule /[^"]/, Literal::String + rule /\"/, Literal::String::Double, :pop! #punctuation for string + end + + state :string2 do + rule /\'[^']*\'/, Literal::String::Single + end + + state :comments do + rule %r{([/]\s*)([@]\w+\b)}i do + # doxygen comments + groups Comment, Comment::Special + end + rule /[^\r\n]/, Comment + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ini.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ini.rb new file mode 100644 index 0000000000..a05fa42761 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ini.rb @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class INI < RegexLexer + title "INI" + desc 'the INI configuration format' + tag 'ini' + + # TODO add more here + filenames '*.ini', '*.INI', '*.gitconfig' + mimetypes 'text/x-ini' + + identifier = /[\w\-.]+/ + + state :basic do + rule /[;#].*?\n/, Comment + rule /\s+/, Text + rule /\\\n/, Str::Escape + end + + state :root do + mixin :basic + + rule /(#{identifier})(\s*)(=)/ do + groups Name::Property, Text, Punctuation + push :value + end + + rule /\[.*?\]/, Name::Namespace + end + + state :value do + rule /\n/, Text, :pop! + mixin :basic + rule /"/, Str, :dq + rule /'.*?'/, Str + mixin :esc_str + rule /[^\\\n]+/, Str + end + + state :dq do + rule /"/, Str, :pop! + mixin :esc_str + rule /[^\\"]+/m, Str + end + + state :esc_str do + rule /\\./m, Str::Escape + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/io.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/io.rb new file mode 100644 index 0000000000..92dd1265c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/io.rb @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class IO < RegexLexer + tag 'io' + title "Io" + desc 'The IO programming language (http://iolanguage.com)' + mimetypes 'text/x-iosrc' + filenames '*.io' + + def self.detect?(text) + return true if text.shebang? 'io' + end + + def self.constants + @constants ||= Set.new %w(nil false true) + end + + def self.builtins + @builtins ||= Set.new %w( + args call clone do doFile doString else elseif for if list + method return super then + ) + end + + state :root do + rule /\s+/m, Text + rule %r(//.*?\n), Comment::Single + rule %r(#.*?\n), Comment::Single + rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline + rule %r(/[+]), Comment::Multiline, :nested_comment + + rule /"(\\\\|\\"|[^"])*"/, Str + + rule %r(:?:=), Keyword + rule /[()]/, Punctuation + + rule %r([-=;,*+>"*]/ + end + + def allow_comments? + true + end + end + + load_lexer 'ruby.rb' + class IRBOutputLexer < Ruby + tag 'irb_output' + + start do + push :stdout + end + + state :has_irb_output do + rule %r(=>), Punctuation, :pop! + rule /.+?(\n|$)/, Generic::Output + end + + state :irb_error do + rule /.+?(\n|$)/, Generic::Error + mixin :has_irb_output + end + + state :stdout do + rule /\w+?(Error|Exception):.+?(\n|$)/, Generic::Error, :irb_error + mixin :has_irb_output + end + + prepend :root do + rule /#/, Keyword::Type, :pop! + mixin :root + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/java.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/java.rb new file mode 100644 index 0000000000..efc3ea3f01 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/java.rb @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Java < RegexLexer + title "Java" + desc "The Java programming language (java.com)" + + tag 'java' + filenames '*.java' + mimetypes 'text/x-java' + + keywords = %w( + assert break case catch continue default do else finally for + if goto instanceof new return switch this throw try while + ) + + declarations = %w( + abstract const enum extends final implements native private protected + public static strictfp super synchronized throws transient volatile + ) + + types = %w(boolean byte char double float int long short var void) + + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + state :root do + rule /[^\S\n]+/, Text + rule %r(//.*?$), Comment::Single + rule %r(/\*.*?\*/)m, Comment::Multiline + # keywords: go before method names to avoid lexing "throw new XYZ" + # as a method signature + rule /(?:#{keywords.join('|')})\b/, Keyword + + rule %r( + (\s*(?:[a-zA-Z_][a-zA-Z0-9_.\[\]<>]*\s+)+?) # return arguments + ([a-zA-Z_][a-zA-Z0-9_]*) # method name + (\s*)(\() # signature start + )mx do |m| + # TODO: do this better, this shouldn't need a delegation + delegate Java, m[1] + token Name::Function, m[2] + token Text, m[3] + token Operator, m[4] + end + + rule /@#{id}/, Name::Decorator + rule /(?:#{declarations.join('|')})\b/, Keyword::Declaration + rule /(?:#{types.join('|')})\b/, Keyword::Type + rule /package\b/, Keyword::Namespace + rule /(?:true|false|null)\b/, Keyword::Constant + rule /(?:class|interface)\b/, Keyword::Declaration, :class + rule /import\b/, Keyword::Namespace, :import + rule /"(\\\\|\\"|[^"])*"/, Str + rule /'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char + rule /(\.)(#{id})/ do + groups Operator, Name::Attribute + end + + rule /#{id}:/, Name::Label + rule /\$?#{id}/, Name + rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator + + digit = /[0-9]_+[0-9]|[0-9]/ + bin_digit = /[01]_+[01]|[01]/ + oct_digit = /[0-7]_+[0-7]|[0-7]/ + hex_digit = /[0-9a-f]_+[0-9a-f]|[0-9a-f]/i + rule /#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float + rule /0b#{bin_digit}+/i, Num::Bin + rule /0x#{hex_digit}+/i, Num::Hex + rule /0#{oct_digit}+/, Num::Oct + rule /#{digit}+L?/, Num::Integer + rule /\n/, Text + end + + state :class do + rule /\s+/m, Text + rule id, Name::Class, :pop! + end + + state :import do + rule /\s+/m, Text + rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/javascript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/javascript.rb new file mode 100644 index 0000000000..4915664a71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/javascript.rb @@ -0,0 +1,283 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + # IMPORTANT NOTICE: + # + # Please do not copy this lexer and open a pull request + # for a new language. It will not get merged, you will + # be unhappy, and kittens will cry. + # + class Javascript < RegexLexer + title "JavaScript" + desc "JavaScript, the browser scripting language" + + tag 'javascript' + aliases 'js' + filenames '*.js', '*.mjs' + mimetypes 'application/javascript', 'application/x-javascript', + 'text/javascript', 'text/x-javascript' + + def self.detect?(text) + return 1 if text.shebang?('node') + return 1 if text.shebang?('jsc') + # TODO: rhino, spidermonkey, etc + end + + state :multiline_comment do + rule %r([*]/), Comment::Multiline, :pop! + rule %r([^*/]+), Comment::Multiline + rule %r([*/]), Comment::Multiline + end + + state :comments_and_whitespace do + rule /\s+/, Text + rule /|<(script|style).*?\2>|<(?!\?(lasso(script)?|=)))+/im) { delegate parent } + end + + state :nosquarebrackets do + rule /\[noprocess\]/, Comment::Preproc, :noprocess + rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets + rule(/([^\[<]||<(script|style).*?\2>|<(?!\?(lasso(script)?|=))|\[(?!noprocess))+/im) { delegate parent } + end + + state :noprocess do + rule %r(\[/noprocess\]), Comment::Preproc, :pop! + rule(%r(([^\[]|\[(?!/noprocess))+)i) { delegate parent } + end + + state :squarebrackets do + rule /\]/, Comment::Preproc, :pop! + mixin :lasso + end + + state :anglebrackets do + rule /\?>/, Comment::Preproc, :pop! + mixin :lasso + end + + state :lassofile do + rule /\]|\?>/, Comment::Preproc, :pop! + mixin :lasso + end + + state :whitespacecomments do + rule /\s+/, Text + rule %r(//.*?\n), Comment::Single + rule %r(/\*\*!.*?\*/)m, Comment::Doc + rule %r(/\*.*?\*/)m, Comment::Multiline + end + + state :lasso do + mixin :whitespacecomments + + # literals + rule /\d*\.\d+(e[+-]?\d+)?/i, Num::Float + rule /0x[\da-f]+/i, Num::Hex + rule /\d+/, Num::Integer + rule /(infinity|NaN)\b/i, Num + rule /'[^'\\]*(\\.[^'\\]*)*'/m, Str::Single + rule /"[^"\\]*(\\.[^"\\]*)*"/m, Str::Double + rule /`[^`]*`/m, Str::Backtick + + # names + rule /\$#{id}/, Name::Variable + rule /#(#{id}|\d+\b)/, Name::Variable::Instance + rule /(\.\s*)('#{id}')/ do + groups Name::Builtin::Pseudo, Name::Variable::Class + end + rule /(self)(\s*->\s*)('#{id}')/i do + groups Name::Builtin::Pseudo, Operator, Name::Variable::Class + end + rule /(\.\.?\s*)(#{id}(=(?!=))?)/ do + groups Name::Builtin::Pseudo, Name::Other + end + rule /(->\\?\s*|&\s*)(#{id}(=(?!=))?)/ do + groups Operator, Name::Other + end + rule /(?)(self|inherited|currentcapture|givenblock)\b/i, Name::Builtin::Pseudo + rule /-(?!infinity)#{id}/i, Name::Attribute + rule /::\s*#{id}/, Name::Label + rule /error_((code|msg)_\w+|adderror|columnrestriction|databaseconnectionunavailable|databasetimeout|deleteerror|fieldrestriction|filenotfound|invaliddatabase|invalidpassword|invalidusername|modulenotfound|noerror|nopermission|outofmemory|reqcolumnmissing|reqfieldmissing|requiredcolumnmissing|requiredfieldmissing|updateerror)/i, Name::Exception + + # definitions + rule /(define)(\s+)(#{id})(\s*=>\s*)(type|trait|thread)\b/i do + groups Keyword::Declaration, Text, Name::Class, Operator, Keyword + end + rule %r((define)(\s+)(#{id})(\s*->\s*)(#{id}=?|[-+*/%]))i do + groups Keyword::Declaration, Text, Name::Class, Operator, Name::Function + push :signature + end + rule /(define)(\s+)(#{id})/i do + groups Keyword::Declaration, Text, Name::Function + push :signature + end + rule %r((public|protected|private|provide)(\s+)((#{id}=?|[-+*/%])(?=\s*\()))i do + groups Keyword, Text, Name::Function + push :signature + end + rule /(public|protected|private|provide)(\s+)(#{id})/i do + groups Keyword, Text, Name::Function + end + + # keywords + rule /(true|false|none|minimal|full|all|void)\b/i, Keyword::Constant + rule /(local|var|variable|global|data(?=\s))\b/i, Keyword::Declaration + rule /(array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray)\b/i, Keyword::Type + rule /(#{id})(\s+)(in)\b/i do + groups Name, Text, Keyword + end + rule /(let|into)(\s+)(#{id})/i do + groups Keyword, Text, Name + end + + # other + rule /,/, Punctuation, :commamember + rule /(and|or|not)\b/i, Operator::Word + rule /(#{id})(\s*::\s*#{id})?(\s*=(?!=|>))/ do + groups Name, Name::Label, Operator + end + + rule %r((/?)([\w.]+)) do |m| + name = m[2].downcase + + if m[1] != '' + token Punctuation, m[1] + end + + if name == 'namespace_using' + token Keyword::Namespace, m[2] + elsif self.class.keywords[:keywords].include? name + token Keyword, m[2] + elsif self.class.keywords[:types_traits].include? name + token Name::Builtin, m[2] + else + token Name::Other, m[2] + end + end + + rule /(=)(n?bw|n?ew|n?cn|lte?|gte?|n?eq|n?rx|ft)\b/i do + groups Operator, Operator::Word + end + rule %r(:=|[-+*/%=<>&|!?\\]+), Operator + rule /[{}():;,@^]/, Punctuation + end + + state :signature do + rule /\=>/, Operator, :pop! + rule /\)/, Punctuation, :pop! + rule /[(,]/, Punctuation, :parameter + mixin :lasso + end + + state :parameter do + rule /\)/, Punctuation, :pop! + rule /-?#{id}/, Name::Attribute, :pop! + rule /\.\.\./, Name::Builtin::Pseudo + mixin :lasso + end + + state :commamember do + rule %r((#{id}=?|[-+*/%])(?=\s*(\(([^()]*\([^()]*\))*[^\)]*\)\s*)?(::[\w.\s]+)?=>)), Name::Function, :signature + mixin :whitespacecomments + rule //, Text, :pop! + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lasso/keywords.yml b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lasso/keywords.yml new file mode 100644 index 0000000000..c5c8c92995 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lasso/keywords.yml @@ -0,0 +1,446 @@ +:keywords: + - "cache" + - "database_names" + - "database_schemanames" + - "database_tablenames" + - "define_tag" + - "define_type" + - "email_batch" + - "encode_set" + - "html_comment" + - "handle" + - "handle_error" + - "header" + - "if" + - "inline" + - "iterate" + - "ljax_target" + - "link" + - "link_currentaction" + - "link_currentgroup" + - "link_currentrecord" + - "link_detail" + - "link_firstgroup" + - "link_firstrecord" + - "link_lastgroup" + - "link_lastrecord" + - "link_nextgroup" + - "link_nextrecord" + - "link_prevgroup" + - "link_prevrecord" + - "log" + - "loop" + - "namespace_using" + - "output_none" + - "portal" + - "private" + - "protect" + - "records" + - "referer" + - "referrer" + - "repeating" + - "resultset" + - "rows" + - "search_args" + - "search_arguments" + - "select" + - "sort_args" + - "sort_arguments" + - "thread_atomic" + - "value_list" + - "while" + - "abort" + - "case" + - "else" + - "fail_if" + - "fail_ifnot" + - "fail" + - "if_empty" + - "if_false" + - "if_null" + - "if_true" + - "loop_abort" + - "loop_continue" + - "loop_count" + - "params" + - "params_up" + - "return" + - "return_value" + - "run_children" + - "soap_definetag" + - "soap_lastrequest" + - "soap_lastresponse" + - "tag_name" + - "ascending" + - "average" + - "by" + - "define" + - "descending" + - "do" + - "equals" + - "frozen" + - "group" + - "handle_failure" + - "import" + - "in" + - "into" + - "join" + - "let" + - "match" + - "max" + - "min" + - "on" + - "order" + - "parent" + - "protected" + - "provide" + - "public" + - "require" + - "returnhome" + - "skip" + - "split_thread" + - "sum" + - "take" + - "thread" + - "to" + - "trait" + - "type" + - "where" + - "with" + - "yield" + - "yieldhome" + +:types_traits: + - "atbegin" + - "bson_iter" + - "bson" + - "bytes_document_body" + - "cache_server_element" + - "cache_server" + - "capture" + - "client_address" + - "client_ip" + - "component_container" + - "component_render_state" + - "component" + - "curl" + - "curltoken" + - "currency" + - "custom" + - "data_document" + - "database_registry" + - "dateandtime" + - "dbgp_packet" + - "dbgp_server" + - "debugging_stack" + - "delve" + - "dir" + - "dirdesc" + - "dns_response" + - "document_base" + - "document_body" + - "document_header" + - "dsinfo" + - "eacher" + - "email_compose" + - "email_parse" + - "email_pop" + - "email_queue_impl_base" + - "email_queue_impl" + - "email_smtp" + - "email_stage_impl_base" + - "email_stage_impl" + - "fastcgi_each_fcgi_param" + - "fastcgi_server" + - "fcgi_record" + - "fcgi_request" + - "file" + - "filedesc" + - "filemaker_datasource" + - "generateforeachkeyed" + - "generateforeachunkeyed" + - "generateseries" + - "hash_map" + - "html_atomic_element" + - "html_attr" + - "html_base" + - "html_binary" + - "html_br" + - "html_cdata" + - "html_container_element" + - "html_div" + - "html_document_body" + - "html_document_head" + - "html_eol" + - "html_fieldset" + - "html_form" + - "html_h1" + - "html_h2" + - "html_h3" + - "html_h4" + - "html_h5" + - "html_h6" + - "html_hr" + - "html_img" + - "html_input" + - "html_json" + - "html_label" + - "html_legend" + - "html_link" + - "html_meta" + - "html_object" + - "html_option" + - "html_raw" + - "html_script" + - "html_select" + - "html_span" + - "html_style" + - "html_table" + - "html_td" + - "html_text" + - "html_th" + - "html_tr" + - "http_document_header" + - "http_document" + - "http_error" + - "http_header_field" + - "http_server_connection_handler_globals" + - "http_server_connection_handler" + - "http_server_request_logger_thread" + - "http_server_web_connection" + - "http_server" + - "image" + - "include_cache" + - "inline_type" + - "java_jnienv" + - "jbyte" + - "jbytearray" + - "jchar" + - "jchararray" + - "jfieldid" + - "jfloat" + - "jint" + - "jmethodid" + - "jobject" + - "jshort" + - "json_decode" + - "json_encode" + - "json_literal" + - "json_object" + - "lassoapp_compiledsrc_appsource" + - "lassoapp_compiledsrc_fileresource" + - "lassoapp_content_rep_halt" + - "lassoapp_dirsrc_appsource" + - "lassoapp_dirsrc_fileresource" + - "lassoapp_installer" + - "lassoapp_livesrc_appsource" + - "lassoapp_livesrc_fileresource" + - "lassoapp_long_expiring_bytes" + - "lassoapp_manualsrc_appsource" + - "lassoapp_zip_file_server" + - "lassoapp_zipsrc_appsource" + - "lassoapp_zipsrc_fileresource" + - "ldap" + - "library_thread_loader" + - "list_node" + - "log_impl_base" + - "log_impl" + - "magick_image" + - "map_node" + - "memberstream" + - "memory_session_driver_impl_entry" + - "memory_session_driver_impl" + - "memory_session_driver" + - "mime_reader" + - "mongo_client" + - "mongo_collection" + - "mongo_cursor" + - "mustache_ctx" + - "mysql_session_driver_impl" + - "mysql_session_driver" + - "net_named_pipe" + - "net_tcp_ssl" + - "net_tcp" + - "net_udp_packet" + - "net_udp" + - "odbc_session_driver_impl" + - "odbc_session_driver" + - "opaque" + - "os_process" + - "pair_compare" + - "pairup" + - "pdf_barcode" + - "pdf_chunk" + - "pdf_color" + - "pdf_doc" + - "pdf_font" + - "pdf_hyphenator" + - "pdf_image" + - "pdf_list" + - "pdf_paragraph" + - "pdf_phrase" + - "pdf_read" + - "pdf_table" + - "pdf_text" + - "pdf_typebase" + - "percent" + - "portal_impl" + - "queriable_groupby" + - "queriable_grouping" + - "queriable_groupjoin" + - "queriable_join" + - "queriable_orderby" + - "queriable_orderbydescending" + - "queriable_select" + - "queriable_selectmany" + - "queriable_skip" + - "queriable_take" + - "queriable_thenby" + - "queriable_thenbydescending" + - "queriable_where" + - "raw_document_body" + - "regexp" + - "repeat" + - "scientific" + - "security_registry" + - "serialization_element" + - "serialization_object_identity_compare" + - "serialization_reader" + - "serialization_writer_ref" + - "serialization_writer_standin" + - "serialization_writer" + - "session_delete_expired_thread" + - "signature" + - "sourcefile" + - "sqlite_column" + - "sqlite_currentrow" + - "sqlite_db" + - "sqlite_results" + - "sqlite_session_driver_impl_entry" + - "sqlite_session_driver_impl" + - "sqlite_session_driver" + - "sqlite_table" + - "sqlite3_stmt" + - "sqlite3" + - "sys_process" + - "text_document" + - "tie" + - "timeonly" + - "tree_base" + - "tree_node" + - "tree_nullnode" + - "ucal" + - "usgcpu" + - "usgvm" + - "web_error_atend" + - "web_node_base" + - "web_node_content_representation_css_specialized" + - "web_node_content_representation_html_specialized" + - "web_node_content_representation_js_specialized" + - "web_node_content_representation_xhr_container" + - "web_node_echo" + - "web_node_root" + - "web_request_impl" + - "web_request" + - "web_response_impl" + - "web_response" + - "web_router" + - "websocket_handler" + - "worker_pool" + - "xml_attr" + - "xml_cdatasection" + - "xml_characterdata" + - "xml_comment" + - "xml_document" + - "xml_documentfragment" + - "xml_documenttype" + - "xml_domimplementation" + - "xml_element" + - "xml_entity" + - "xml_entityreference" + - "xml_namednodemap_attr" + - "xml_namednodemap_ht" + - "xml_namednodemap" + - "xml_node" + - "xml_nodelist" + - "xml_notation" + - "xml_processinginstruction" + - "xml_text" + - "xmlstream" + - "zip_file_impl" + - "zip_file" + - "zip_impl" + - "zip" + - "any" + - "formattingbase" + - "html_attributed" + - "html_element_coreattrs" + - "html_element_eventsattrs" + - "html_element_i18nattrs" + - "lassoapp_capabilities" + - "lassoapp_resource" + - "lassoapp_source" + - "queriable_asstring" + - "session_driver" + - "trait_array" + - "trait_asstring" + - "trait_backcontractible" + - "trait_backended" + - "trait_backexpandable" + - "trait_close" + - "trait_contractible" + - "trait_decompose_assignment" + - "trait_doubleended" + - "trait_each_sub" + - "trait_encodeurl" + - "trait_endedfullymutable" + - "trait_expandable" + - "trait_file" + - "trait_finite" + - "trait_finiteforeach" + - "trait_foreach" + - "trait_foreachtextelement" + - "trait_frontcontractible" + - "trait_frontended" + - "trait_frontexpandable" + - "trait_fullymutable" + - "trait_generator" + - "trait_generatorcentric" + - "trait_hashable" + - "trait_json_serialize" + - "trait_keyed" + - "trait_keyedfinite" + - "trait_keyedforeach" + - "trait_keyedmutable" + - "trait_list" + - "trait_map" + - "trait_net" + - "trait_pathcomponents" + - "trait_positionallykeyed" + - "trait_positionallysearchable" + - "trait_queriable" + - "trait_queriablelambda" + - "trait_readbytes" + - "trait_readstring" + - "trait_scalar" + - "trait_searchable" + - "trait_serializable" + - "trait_setencoding" + - "trait_setoperations" + - "trait_stack" + - "trait_treenode" + - "trait_writebytes" + - "trait_writestring" + - "trait_xml_elementcompat" + - "trait_xml_nodecompat" + - "web_connection" + - "web_node_container" + - "web_node_content_css_specialized" + - "web_node_content_document" + - "web_node_content_html_specialized" + - "web_node_content_js_specialized" + - "web_node_content_json_specialized" + - "web_node_content_representation" + - "web_node_content" + - "web_node_postable" + - "web_node" diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/liquid.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/liquid.rb new file mode 100644 index 0000000000..60a6130e05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/liquid.rb @@ -0,0 +1,288 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Liquid < RegexLexer + title "Liquid" + desc 'Liquid is a templating engine for Ruby (liquidmarkup.org)' + tag 'liquid' + filenames '*.liquid' + + state :root do + rule /[^\{]+/, Text + + rule /(\{%)(\s*)/ do + groups Punctuation, Text::Whitespace + push :tag_or_block + end + + rule /(\{\{)(\s*)/ do + groups Punctuation, Text::Whitespace + push :output + end + + rule /\{/, Text + end + + state :tag_or_block do + # builtin logic blocks + rule /(if|unless|elsif|case)(?=\s+)/, Keyword::Reserved, :condition + + rule /(when)(\s+)/ do + groups Keyword::Reserved, Text::Whitespace + push :when + end + + rule /(else)(\s*)(%\})/ do + groups Keyword::Reserved, Text::Whitespace, Punctuation + pop! + end + + # other builtin blocks + rule /(capture)(\s+)([^\s%]+)(\s*)(%\})/ do + groups Name::Tag, Text::Whitespace, Name::Attribute, Text::Whitespace, Punctuation + pop! + end + + rule /(comment)(\s*)(%\})/ do + groups Name::Tag, Text::Whitespace, Punctuation + push :comment + end + + rule /(raw)(\s*)(%\})/ do + groups Name::Tag, Text::Whitespace, Punctuation + push :raw + end + + rule /assign/, Name::Tag, :assign + rule /include/, Name::Tag, :include + + # end of block + rule /(end(case|unless|if))(\s*)(%\})/ do + groups Keyword::Reserved, nil, Text::Whitespace, Punctuation + pop! + end + + rule /(end([^\s%]+))(\s*)(%\})/ do + groups Name::Tag, nil, Text::Whitespace, Punctuation + pop! + end + + # builtin tags + rule /(cycle)(\s+)(([^\s:]*)(:))?(\s*)/ do |m| + token Name::Tag, m[1] + token Text::Whitespace, m[2] + + if m[4] =~ /'[^']*'/ + token Str::Single, m[4] + elsif m[4] =~ /"[^"]*"/ + token Str::Double, m[4] + else + token Name::Attribute, m[4] + end + + token Punctuation, m[5] + token Text::Whitespace, m[6] + + push :variable_tag_markup + end + + # other tags or blocks + rule /([^\s%]+)(\s*)/ do + groups Name::Tag, Text::Whitespace + push :tag_markup + end + end + + state :output do + mixin :whitespace + mixin :generic + + rule /\}\}/, Punctuation, :pop! + rule /\|/, Punctuation, :filters + end + + state :filters do + mixin :whitespace + + rule(/\}\}/) { token Punctuation; reset_stack } + + rule /([^\s\|:]+)(:?)(\s*)/ do + groups Name::Function, Punctuation, Text::Whitespace + push :filter_markup + end + end + + state :filter_markup do + rule /\|/, Punctuation, :pop! + + mixin :end_of_tag + mixin :end_of_block + mixin :default_param_markup + end + + state :condition do + mixin :end_of_block + mixin :whitespace + + rule /([=!><]=?)/, Operator + + rule /\b((!)|(not\b))/ do + groups nil, Operator, Operator::Word + end + + rule /(contains)/, Operator::Word + + mixin :generic + mixin :whitespace + end + + state :when do + mixin :end_of_block + mixin :whitespace + mixin :generic + end + + state :operator do + rule /(\s*)((=|!|>|<)=?)(\s*)/ do + groups Text::Whitespace, Operator, nil, Text::Whitespace + pop! + end + + rule /(\s*)(\bcontains\b)(\s*)/ do + groups Text::Whitespace, Operator::Word, Text::Whitespace + pop! + end + end + + state :end_of_tag do + rule(/\}\}/) { token Punctuation; reset_stack } + end + + state :end_of_block do + rule(/%\}/) { token Punctuation; reset_stack } + end + + # states for unknown markup + state :param_markup do + mixin :whitespace + mixin :string + + rule /([^\s=:]+)(\s*)(=|:)/ do + groups Name::Attribute, Text::Whitespace, Operator + end + + rule /(\{\{)(\s*)([^\s\}])(\s*)(\}\})/ do + groups Punctuation, Text::Whitespace, nil, Text::Whitespace, Punctuation + end + + mixin :number + mixin :keyword + + rule /,/, Punctuation + end + + state :default_param_markup do + mixin :param_markup + rule /./, Text + end + + state :variable_param_markup do + mixin :param_markup + mixin :variable + rule /./, Text + end + + state :tag_markup do + mixin :end_of_block + mixin :default_param_markup + end + + state :variable_tag_markup do + mixin :end_of_block + mixin :variable_param_markup + end + + # states for different values types + state :keyword do + rule /\b(false|true)\b/, Keyword::Constant + end + + state :variable do + rule /\.(?=\w)/, Punctuation + rule /[a-zA-Z_]\w*\??/, Name::Variable + end + + state :string do + rule /'[^']*'/, Str::Single + rule /"[^"]*"/, Str::Double + end + + state :number do + rule /\d+\.\d+/, Num::Float + rule /\d+/, Num::Integer + end + + state :array_index do + rule /\[/, Punctuation + rule /\]/, Punctuation + end + + state :generic do + mixin :array_index + mixin :keyword + mixin :string + mixin :variable + mixin :number + end + + state :whitespace do + rule /[ \t]+/, Text::Whitespace + end + + state :comment do + rule /(\{%)(\s*)(endcomment)(\s*)(%\})/ do + groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation + reset_stack + end + + rule /./, Comment + end + + state :raw do + rule /[^\{]+/, Text + + rule /(\{%)(\s*)(endraw)(\s*)(%\})/ do + groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation + reset_stack + end + + rule /\{/, Text + end + + state :assign do + mixin :whitespace + mixin :end_of_block + + rule /(\s*)(=)(\s*)/ do + groups Text::Whitespace, Operator, Text::Whitespace + end + + rule /\|/, Punctuation, :filters + + mixin :generic + end + + state :include do + mixin :whitespace + + rule /([^\.]+)(\.)(html|liquid)/ do + groups Name::Attribute, Punctuation, Name::Attribute + end + + mixin :variable_tag_markup + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_coffeescript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_coffeescript.rb new file mode 100644 index 0000000000..d2a54c0b8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_coffeescript.rb @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class LiterateCoffeescript < RegexLexer + tag 'literate_coffeescript' + title "Literate CoffeeScript" + desc 'Literate coffeescript' + aliases 'litcoffee' + filenames '*.litcoffee' + + def markdown + @markdown ||= Markdown.new(options) + end + + def coffee + @coffee ||= Coffeescript.new(options) + end + + start { markdown.reset!; coffee.reset! } + + state :root do + rule /^( .*?\n)+/m do + delegate coffee + end + + rule /^([ ]{0,3}(\S.*?|)\n)*/m do + delegate markdown + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_haskell.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_haskell.rb new file mode 100644 index 0000000000..f4804d0653 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/literate_haskell.rb @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class LiterateHaskell < RegexLexer + title "Literate Haskell" + desc 'Literate haskell' + tag 'literate_haskell' + aliases 'lithaskell', 'lhaskell', 'lhs' + filenames '*.lhs' + mimetypes 'text/x-literate-haskell' + + def haskell + @haskell ||= Haskell.new(options) + end + + start { haskell.reset! } + + # TODO: support TeX versions as well. + state :root do + rule /\s*?\n(?=>)/, Text, :code + rule /.*?\n/, Text + rule /.+\z/, Text + end + + state :code do + rule /(>)( .*?(\n|\z))/ do |m| + token Name::Label, m[1] + delegate haskell, m[2] + end + + rule /\s*\n(?=\s*[^>])/, Text, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/llvm.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/llvm.rb new file mode 100644 index 0000000000..277e3212b5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/llvm.rb @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class LLVM < RegexLexer + title "LLVM" + desc 'The LLVM Compiler Infrastructure (http://llvm.org/)' + tag 'llvm' + + filenames '*.ll' + mimetypes 'text/x-llvm' + + string = /"[^"]*?"/ + identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/ + + state :basic do + rule /;.*?$/, Comment::Single + rule /\s+/, Text + + rule /#{identifier}\s*:/, Name::Label + + rule /@(#{identifier}|\d+)/, Name::Variable::Global + rule /(%|!)#{identifier}/, Name::Variable + rule /(%|!)\d+/, Name::Variable + + rule /c?#{string}/, Str + + rule /0[xX][a-fA-F0-9]+/, Num + rule /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num + + rule /[=<>{}\[\]()*.,!]|x/, Punctuation + end + + builtin_types = %w( + void float double half x86_fp80 x86mmx fp128 ppc_fp128 label metadata + ) + + state :types do + rule /i[1-9]\d*/, Keyword::Type + rule /#{builtin_types.join('|')}/, Keyword::Type + end + + builtin_keywords = %w( + begin end true false declare define global constant personality private + landingpad linker_private internal available_externally linkonce_odr + linkonce weak weak_odr appending dllimport dllexport common default + hidden protected extern_weak external thread_local zeroinitializer + undef null to tail target triple datalayout volatile nuw nsw nnan ninf + nsz arcp fast exact inbounds align addrspace section alias module asm + sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc + arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc + c signext zeroext inreg sret nounwind noreturn noalias nocapture byval + nest readnone readonly inlinehint noinline alwaysinline optsize ssp + sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle + sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq + une uwtable x + ) + + builtin_instructions = %w( + add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr + and or xor icmp fcmp phi call catch trunc zext sext fptrunc fpext + uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast select va_arg ret + br switch invoke unwind unreachable malloc alloca free load store + getelementptr extractelement insertelement shufflevector getresult + extractvalue insertvalue cleanup resume + ) + + state :keywords do + rule /#{builtin_instructions.join('|')}/, Keyword + rule /#{builtin_keywords.join('|')}/, Keyword + end + + state :root do + mixin :basic + mixin :keywords + mixin :types + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua.rb new file mode 100644 index 0000000000..6b0cc8be24 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua.rb @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Lua < RegexLexer + title "Lua" + desc "Lua (http://www.lua.org)" + tag 'lua' + filenames '*.lua', '*.wlua' + + mimetypes 'text/x-lua', 'application/x-lua' + + option :function_highlighting, 'Whether to highlight builtin functions (default: true)' + option :disabled_modules, 'builtin modules to disable' + + def initialize(opts={}) + @function_highlighting = opts.delete(:function_highlighting) { true } + @disabled_modules = opts.delete(:disabled_modules) { [] } + super(opts) + end + + def self.detect?(text) + return true if text.shebang? 'lua' + end + + def self.builtins + load Pathname.new(__FILE__).dirname.join('lua/builtins.rb') + self.builtins + end + + def builtins + return [] unless @function_highlighting + + @builtins ||= Set.new.tap do |builtins| + self.class.builtins.each do |mod, fns| + next if @disabled_modules.include? mod + builtins.merge(fns) + end + end + end + + state :root do + # lua allows a file to start with a shebang + rule %r(#!(.*?)$), Comment::Preproc + rule //, Text, :base + end + + state :base do + rule %r(--\[(=*)\[.*?\]\1\])m, Comment::Multiline + rule %r(--.*$), Comment::Single + + rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float + rule %r((?i)\d+e[+-]?\d+), Num::Float + rule %r((?i)0x[0-9a-f]*), Num::Hex + rule %r(\d+), Num::Integer + + rule %r(\n), Text + rule %r([^\S\n]), Text + # multiline strings + rule %r(\[(=*)\[.*?\]\1\])m, Str + + rule %r((==|~=|<=|>=|\.\.\.|\.\.|[=+\-*/%^<>#])), Operator + rule %r([\[\]\{\}\(\)\.,:;]), Punctuation + rule %r((and|or|not)\b), Operator::Word + + rule %r((break|do|else|elseif|end|for|if|in|repeat|return|then|until|while)\b), Keyword + rule %r((local)\b), Keyword::Declaration + rule %r((true|false|nil)\b), Keyword::Constant + + rule %r((function)\b), Keyword, :function_name + + rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m| + name = m[0] + if self.builtins.include?(name) + token Name::Builtin + elsif name =~ /\./ + a, b = name.split('.', 2) + token Name, a + token Punctuation, '.' + token Name, b + else + token Name + end + end + + rule %r('), Str::Single, :escape_sqs + rule %r("), Str::Double, :escape_dqs + end + + state :function_name do + rule /\s+/, Text + rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do + groups Name::Class, Punctuation, Name::Function + pop! + end + # inline function + rule %r(\(), Punctuation, :pop! + end + + state :escape_sqs do + mixin :string_escape + mixin :sqs + end + + state :escape_dqs do + mixin :string_escape + mixin :dqs + end + + state :string_escape do + rule %r(\\([abfnrtv\\"']|\d{1,3})), Str::Escape + end + + state :sqs do + rule %r('), Str::Single, :pop! + rule %r([^']+), Str::Single + end + + state :dqs do + rule %r("), Str::Double, :pop! + rule %r([^"]+), Str::Double + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua/builtins.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua/builtins.rb new file mode 100644 index 0000000000..2704ba11da --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/lua/builtins.rb @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# automatically generated by `rake builtins:lua` +module Rouge + module Lexers + class Lua + def self.builtins + @builtins ||= {}.tap do |b| + b["basic"] = Set.new %w(_G _VERSION assert collectgarbage dofile error getmetatable ipairs load loadfile next pairs pcall print rawequal rawget rawlen rawset select setmetatable tonumber tostring type xpcall file:close file:flush file:lines file:read file:seek file:setvbuf file:write LUA_CPATH LUA_CPATH_5_2 LUA_INIT LUA_INIT_5_2 LUA_PATH LUA_PATH_5_2 luaopen_base luaopen_bit32 luaopen_coroutine luaopen_debug luaopen_io luaopen_math luaopen_os luaopen_package luaopen_string luaopen_table LUA_ERRERR LUA_ERRFILE LUA_ERRGCMM LUA_ERRMEM LUA_ERRRUN LUA_ERRSYNTAX LUA_HOOKCALL LUA_HOOKCOUNT LUA_HOOKLINE LUA_HOOKRET LUA_HOOKTAILCALL LUA_MASKCALL LUA_MASKCOUNT LUA_MASKLINE LUA_MASKRET LUA_MINSTACK LUA_MULTRET LUA_NOREF LUA_OK LUA_OPADD LUA_OPDIV LUA_OPEQ LUA_OPLE LUA_OPLT LUA_OPMOD LUA_OPMUL LUA_OPPOW LUA_OPSUB LUA_OPUNM LUA_REFNIL LUA_REGISTRYINDEX LUA_RIDX_GLOBALS LUA_RIDX_MAINTHREAD LUA_TBOOLEAN LUA_TFUNCTION LUA_TLIGHTUSERDATA LUA_TNIL LUA_TNONE LUA_TNUMBER LUA_TSTRING LUA_TTABLE LUA_TTHREAD LUA_TUSERDATA LUA_USE_APICHECK LUA_YIELD LUAL_BUFFERSIZE) + b["modules"] = Set.new %w(require package.config package.cpath package.loaded package.loadlib package.path package.preload package.searchers package.searchpath) + b["bit32"] = Set.new %w(bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift) + b["coroutine"] = Set.new %w(coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield) + b["debug"] = Set.new %w(debug.debug debug.getuservalue debug.gethook debug.getinfo debug.getlocal debug.getmetatable debug.getregistry debug.getupvalue debug.setuservalue debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.traceback debug.upvalueid debug.upvaluejoin) + b["io"] = Set.new %w(io.close io.flush io.input io.lines io.open io.output io.popen io.read io.stderr io.stdin io.stdout io.tmpfile io.type io.write) + b["math"] = Set.new %w(math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge math.ldexp math.log math.max math.min math.modf math.pi math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh) + b["os"] = Set.new %w(os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname) + b["string"] = Set.new %w(string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.rep string.reverse string.sub string.upper) + b["table"] = Set.new %w(table.concat table.insert table.pack table.remove table.sort table.unpack) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/m68k.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/m68k.rb new file mode 100644 index 0000000000..67cfa7b455 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/m68k.rb @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class M68k < RegexLexer + tag 'm68k' + + title "M68k" + desc "Motorola 68k Assembler" + + ws = %r((?:\s|;.*?\n/)+) + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + def self.keywords + @keywords ||= Set.new %w( + abcd add adda addi addq addx and andi asl asr + + bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo + bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst + + callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2 + + dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo + dbra dbf dbt divs divsl divu divul + + eor eori exg ext extb + + illegal jmp jsr lea link lsl lsr + + move movea move16 movem movep moveq muls mulu + + nbcd neg negx nop not or ori + + pack pea rol ror roxl roxr rtd rtm rtr rts + + sbcd + + seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo + sub suba subi subq subx swap + + tas trap trapcc TODO trapv tst + + unlk unpk eori + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + dc ds dcb + ) + end + + def self.reserved + @reserved ||= Set.new %w( + include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section + rept endr + ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc + even cnop fail machine + output radix __G2 __LK + list nolist plen llen ttl subttl spc page listchar format + equ equenv equr set reg + rsreset rsset offset + cargs + fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt + macro endm mexit narg + ) + end + + def self.builtins + @builtins ||=Set.new %w( + d0 d1 d2 d3 d4 d5 d6 d7 + a0 a1 a2 a3 a4 a5 a6 a7 a7' + pc usp ssp ccr + ) + end + + start { push :expr_bol } + + state :expr_bol do + mixin :inline_whitespace + rule(//) { pop! } + end + + state :inline_whitespace do + rule /[\s\t\r]+/, Text + end + + state :whitespace do + rule /\n+/m, Text, :expr_bol + rule %r(^\*(\\.|.)*?\n), Comment::Single, :expr_bol + rule %r(;(\\.|.)*?\n), Comment::Single, :expr_bol + mixin :inline_whitespace + end + + state :root do + rule(//) { push :statements } + end + + state :statements do + mixin :whitespace + rule /"/, Str, :string + rule /#/, Name::Decorator + rule /^\.?[a-zA-Z0-9_]+:?/, Name::Label + rule /\.[bswl]\s/i, Name::Decorator + rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char + rule /\$[0-9a-f]+/i, Num::Hex + rule /@[0-8]+/i, Num::Oct + rule /%[01]+/i, Num::Bin + rule /\d+/i, Num::Integer + rule %r([*~&+=\|?:<>/-]), Operator + rule /\\./, Comment::Preproc + rule /[(),.]/, Punctuation + rule /\[[a-zA-Z0-9]*\]/, Punctuation + + rule id do |m| + name = m[0] + + if self.class.keywords.include? name.downcase + token Keyword + elsif self.class.keywords_type.include? name.downcase + token Keyword::Type + elsif self.class.reserved.include? name.downcase + token Keyword::Reserved + elsif self.class.builtins.include? name.downcase + token Name::Builtin + elsif name =~ /[a-zA-Z0-9]+/ + token Name::Variable + else + token Name + end + end + end + + state :string do + rule /"/, Str, :pop! + rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape + rule /[^\\"\n]+/, Str + rule /\\\n/, Str + rule /\\/, Str # stray backslash + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/make.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/make.rb new file mode 100644 index 0000000000..4b85264b96 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/make.rb @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Make < RegexLexer + title "Make" + desc "Makefile syntax" + tag 'make' + aliases 'makefile', 'mf', 'gnumake', 'bsdmake' + filenames '*.make', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile' + mimetypes 'text/x-makefile' + + bsd_special = %w( + include undef error warning if else elif endif for endfor + ) + + gnu_special = %w( + ifeq ifneq ifdef ifndef else endif include -include define endef : + ) + + line = /(?:\\.|\\\n|[^\\\n])*/m + + def initialize(opts={}) + super + @shell = Shell.new(opts) + end + + start { @shell.reset! } + + state :root do + rule /\s+/, Text + + rule /#.*?\n/, Comment + + rule /(export)(\s+)(?=[a-zA-Z0-9_\${}\t -]+\n)/ do + groups Keyword, Text + push :export + end + + rule /export\s+/, Keyword + + # assignment + rule /([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)/m do |m| + token Name::Variable, m[1] + token Text, m[2] + token Operator, m[3] + push :shell_line + end + + rule /"(\\\\|\\.|[^"\\])*"/, Str::Double + rule /'(\\\\|\\.|[^'\\])*'/, Str::Single + rule /([^\n:]+)(:+)([ \t]*)/ do + groups Name::Label, Operator, Text + push :block_header + end + end + + state :export do + rule /[\w\${}-]/, Name::Variable + rule /\n/, Text, :pop! + rule /\s+/, Text + end + + state :block_header do + rule /[^,\\\n#]+/, Name::Function + rule /,/, Punctuation + rule /#.*?/, Comment + rule /\\\n/, Text + rule /\\./, Text + rule /\n/ do + token Text + goto :block_body + end + end + + state :block_body do + rule /(\t[\t ]*)([@-]?)/ do |m| + groups Text, Punctuation + push :shell_line + end + + rule(//) { @shell.reset!; pop! } + end + + state :shell do + # macro interpolation + rule /\$\(\s*[a-z_]\w*\s*\)/i, Name::Variable + # $(shell ...) + rule /(\$\()(\s*)(shell)(\s+)/m do + groups Name::Function, Text, Name::Builtin, Text + push :shell_expr + end + + rule(/\\./m) { delegate @shell } + stop = /\$\(|\(|\)|\\|$/ + rule(/.+?(?=#{stop})/m) { delegate @shell } + rule(stop) { delegate @shell } + end + + state :shell_expr do + rule(/\(/) { delegate @shell; push } + rule /\)/, Name::Variable, :pop! + mixin :shell + end + + state :shell_line do + rule /\n/, Text, :pop! + mixin :shell + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/markdown.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/markdown.rb new file mode 100644 index 0000000000..bbd4acd48a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/markdown.rb @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Markdown < RegexLexer + title "Markdown" + desc "Markdown, a light-weight markup language for authors" + + tag 'markdown' + aliases 'md', 'mkd' + filenames '*.markdown', '*.md', '*.mkd' + mimetypes 'text/x-markdown' + + def html + @html ||= HTML.new(options) + end + + start { html.reset! } + + edot = /\\.|[^\\\n]/ + + state :root do + # YAML frontmatter + rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML } + + rule /\\./, Str::Escape + + rule /^[\S ]+\n(?:---*)\n/, Generic::Heading + rule /^[\S ]+\n(?:===*)\n/, Generic::Subheading + + rule /^#(?=[^#]).*?$/, Generic::Heading + rule /^##*.*?$/, Generic::Subheading + + rule /(\n[ \t]*)(```|~~~)(.*?)(\n.*?\n)(\2)/m do |m| + sublexer = Lexer.find_fancy(m[3].strip, m[4], @options) + sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick)) + sublexer.reset! + + token Text, m[1] + token Punctuation, m[2] + token Name::Label, m[3] + delegate sublexer, m[4] + token Punctuation, m[5] + end + + rule /\n\n(( |\t).*?\n|\n)+/, Str::Backtick + + rule /(`+)(?:#{edot}|\n)+?\1/, Str::Backtick + + # various uses of * are in order of precedence + + # line breaks + rule /^(\s*[*]){3,}\s*$/, Punctuation + rule /^(\s*[-]){3,}\s*$/, Punctuation + + # bulleted lists + rule /^\s*[*+-](?=\s)/, Punctuation + + # numbered lists + rule /^\s*\d+\./, Punctuation + + # blockquotes + rule /^\s*>.*?$/, Generic::Traceback + + # link references + # [foo]: bar "baz" + rule %r(^ + (\s*) # leading whitespace + (\[) (#{edot}+?) (\]) # the reference + (\s*) (:) # colon + )x do + groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation + + push :title + push :url + end + + # links and images + rule /(!?\[)(#{edot}*?)(\])/ do + groups Punctuation, Name::Variable, Punctuation + push :link + end + + rule /[*][*]#{edot}*?[*][*]/, Generic::Strong + rule /__#{edot}*?__/, Generic::Strong + + rule /[*]#{edot}*?[*]/, Generic::Emph + rule /_#{edot}*?_/, Generic::Emph + + # Automatic links + rule /<.*?@.+[.].+>/, Name::Variable + rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable + + + rule /[^\\`\[*\n&<]+/, Text + + # inline html + rule(/&\S*;/) { delegate html } + rule(/<#{edot}*?>/) { delegate html } + rule /[&<]/, Text + + rule /\n/, Text + end + + state :link do + rule /(\[)(#{edot}*?)(\])/ do + groups Punctuation, Str::Symbol, Punctuation + pop! + end + + rule /[(]/ do + token Punctuation + push :inline_title + push :inline_url + end + + rule /[ \t]+/, Text + + rule(//) { pop! } + end + + state :url do + rule /[ \t]+/, Text + + # the url + rule /(<)(#{edot}*?)(>)/ do + groups Name::Tag, Str::Other, Name::Tag + pop! + end + + rule /\S+/, Str::Other, :pop! + end + + state :title do + rule /"#{edot}*?"/, Name::Namespace + rule /'#{edot}*?'/, Name::Namespace + rule /[(]#{edot}*?[)]/, Name::Namespace + rule /\s*(?=["'()])/, Text + rule(//) { pop! } + end + + state :inline_title do + rule /[)]/, Punctuation, :pop! + mixin :title + end + + state :inline_url do + rule /[^<\s)]+/, Str::Other, :pop! + rule /\s+/m, Text + mixin :url + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica.rb new file mode 100644 index 0000000000..b4ca81791e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica.rb @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Mathematica < RegexLexer + title "Mathematica" + desc "Wolfram Mathematica, the world's definitive system for modern technical computing." + tag 'mathematica' + aliases 'wl' + filenames '*.m', '*.wl' + mimetypes 'application/vnd.wolfram.mathematica.package', 'application/vnd.wolfram.wl' + + # Mathematica has various input forms for numbers. We need to handle numbers in bases, precision, accuracy, + # and *^ scientific notation. All this works for integers and real numbers. Some examples + # 1 1234567 1.1 .3 0.2 1*^10 2*^+10 3*^-10 + # 1`1 1``1 1.2` 1.2``1.234*^-10 1.2``1.234*^+10 1.2``1.234*^10 + # 2^^01001 10^^1.2``20.1234*^-10 + base = /(?:\d+)/ + number = /(?:\.\d+|\d+\.\d*|\d+)/ + number_base = /(?:\.\w+|\w+\.\w*|\w+)/ + precision = /`(`?#{number})?/ + + operators = /[+\-*\/|,;.:@~=><&`'^?!_%]/ + braces = /[\[\](){}]/ + + string = /"(\\\\|\\"|[^"])*"/ + + # symbols and namespaced symbols. Note the special form \[Gamma] for named characters. These are also symbols. + # Module With Block Integrate Table Plot + # x32 $x x$ $Context` Context123`$x `Private`Context + # \[Gamma] \[Alpha]x32 Context`\[Xi] + identifier = /[a-zA-Z$][$a-zA-Z0-9]*/ + named_character = /\\\[#{identifier}\]/ + symbol = /(#{identifier}|#{named_character})+/ + context_symbol = /`?#{symbol}(`#{symbol})*`?/ + + # Slots for pure functions. + # Examples: # ## #1 ##3 #Test #"Test" #[Test] #["Test"] + association_slot = /#(#{identifier}|\"#{identifier}\")/ + slot = /#{association_slot}|#[0-9]*/ + + # Handling of message like symbol::usage or symbol::"argx" + message = /::(#{identifier}|#{string})/ + + # Highlighting of the special in and out markers that are prepended when you copy a cell + in_out = /(In|Out)\[[0-9]+\]:?=/ + + # Although Module, With and Block are normal built-in symbols, we give them a special treatment as they are + # the most important expressions for defining local variables + def self.keywords + @keywords = Set.new %w( + Module With Block + ) + end + + # The list of built-in symbols comes from a wolfram server and is created automatically by rake + def self.builtins + load Pathname.new(__FILE__).dirname.join('mathematica/builtins.rb') + self.builtins + end + + state :root do + rule /\s+/, Text::Whitespace + rule /\(\*/, Comment, :comment + rule /#{base}\^\^#{number_base}#{precision}?(\*\^[+-]?\d+)?/, Num # a number with a base + rule /(?:#{number}#{precision}?(?:\*\^[+-]?\d+)?)/, Num # all other numbers + rule message, Name::Tag + rule in_out, Generic::Prompt + rule /#{context_symbol}/m do |m| + match = m[0] + if self.class.keywords.include? match + token Name::Builtin::Pseudo + elsif self.class.builtins.include? match + token Name::Builtin + else + token Name::Variable + end + end + rule slot, Name::Function + rule operators, Operator + rule braces, Punctuation + rule string, Str + end + + # Allow for nested comments and special treatment of ::Section:: or :Author: markup + state :comment do + rule /\(\*/, Comment, :comment + rule /\*\)/, Comment, :pop! + rule /::#{identifier}::/, Comment::Preproc + rule /[ ]:(#{identifier}|[^\S])+:[ ]/, Comment::Preproc + rule /./, Comment + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica/builtins.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica/builtins.rb new file mode 100644 index 0000000000..376b0d961a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mathematica/builtins.rb @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# automatically generated by `rake builtins:mathematica` +module Rouge + module Lexers + class Mathematica + def self.builtins + @builtins ||= Set.new %w(AASTriangle AnchoredSearch Assert AbelianGroup And AssociateTo Abort AndersonDarlingTest Association AbortKernels AngerJ AssociationFormat AbortProtect AngleBracket AssociationMap Above AnglePath AssociationQ Abs AnglePath3D AssociationThread AbsArg AngleVector AssumeDeterministic AbsoluteCorrelation AngularGauge Assuming AbsoluteCorrelationFunction Animate Assumptions AbsoluteCurrentValue AnimationDirection AsymptoticOutputTracker AbsoluteDashing AnimationRate Asynchronous AbsoluteFileName AnimationRepetitions AsynchronousTaskObject AbsoluteOptions AnimationRunning AsynchronousTasks AbsolutePointSize AnimationRunTime AtomQ AbsoluteThickness AnimationTimeIndex Attributes AbsoluteTime Animator Audio AbsoluteTiming Annotation AudioAmplify AccountingForm Annuity AudioBlockMap Accumulate AnnuityDue AudioCapture Accuracy Annulus AudioChannelAssignment AccuracyGoal Anonymous AudioChannelCombine ActionMenu Antialiasing AudioChannelMix Activate AntihermitianMatrixQ AudioChannels ActiveClassification Antisymmetric AudioChannelSeparate ActiveClassificationObject AntisymmetricMatrixQ AudioData ActivePrediction AnyOrder AudioDelay ActivePredictionObject AnySubset AudioDelete ActiveStyle AnyTrue AudioFade AcyclicGraphQ Apart AudioFrequencyShift AddTo ApartSquareFree AudioGenerator AddUsers APIFunction AudioInputDevice AdjacencyGraph Appearance AudioInsert AdjacencyList AppearanceElements AudioIntervals AdjacencyMatrix AppearanceRules AudioJoin AdjustmentBox AppellF1 AudioLabel AdjustmentBoxOptions Append AudioLength AdjustTimeSeriesForecast AppendTo AudioLocalMeasurements AdministrativeDivisionData Apply AudioLoudness AffineHalfSpace ArcCos AudioMeasurements AffineSpace ArcCosh AudioNormalize AffineStateSpaceModel ArcCot AudioOutputDevice AffineTransform ArcCoth AudioOverlay After ArcCsc AudioPad AggregationLayer ArcCsch AudioPan AircraftData ArcCurvature AudioPartition AirportData ARCHProcess AudioPause AirPressureData ArcLength AudioPitchShift AirTemperatureData ArcSec AudioPlay AiryAi ArcSech AudioPlot AiryAiPrime ArcSin AudioQ AiryAiZero ArcSinDistribution AudioReplace AiryBi ArcSinh AudioResample AiryBiPrime ArcTan AudioReverb AiryBiZero ArcTanh AudioSampleRate AlgebraicIntegerQ Area AudioSpectralMap AlgebraicNumber Arg AudioSpectralTransformation AlgebraicNumberDenominator ArgMax AudioSplit AlgebraicNumberNorm ArgMin AudioStop AlgebraicNumberPolynomial ARIMAProcess AudioStream AlgebraicNumberTrace ArithmeticGeometricMean AudioStreams Algebraics ARMAProcess AudioTimeStretch AlgebraicUnitQ ARProcess AudioTrim Alignment Array AudioType AlignmentPoint ArrayComponents AugmentedSymmetricPolynomial All ArrayDepth Authentication AllowedCloudExtraParameters ArrayFilter AutoAction AllowedCloudParameterExtensions ArrayFlatten Autocomplete AllowedDimensions ArrayMesh AutocompletionFunction AllowGroupClose ArrayPad AutoCopy AllowInlineCells ArrayPlot AutocorrelationTest AllowLooseGrammar ArrayQ AutoDelete AllowReverseGroupClose ArrayResample AutoIndent AllTrue ArrayReshape AutoItalicWords Alphabet ArrayRules Automatic AlphabeticOrder Arrays AutoMultiplicationSymbol AlphabeticSort Arrow AutoRefreshed AlphaChannel Arrowheads AutoRemove AlternateImage ASATriangle AutorunSequencing AlternatingFactorial Ask AutoScroll AlternatingGroup AskAppend AutoSpacing AlternativeHypothesis AskConfirm AutoSubmitting Alternatives AskDisplay Axes AltitudeMethod AskedQ AxesEdge AmbiguityFunction AskedValue AxesLabel AmbiguityList AskFunction AxesOrigin AnatomyData AskState AxesStyle AnatomyForm AskTemplateDisplay Axis AnatomyPlot3D AspectRatio BabyMonsterGroupB BetaPrimeDistribution BooleanMinimize Back BetaRegularized BooleanMinterms Background Between BooleanQ Backslash BetweennessCentrality BooleanRegion Backward BezierCurve Booleans Ball BezierFunction BooleanStrings Band BilateralFilter BooleanTable BandpassFilter Binarize BooleanVariables BandstopFilter BinaryDeserialize BorderDimensions BarabasiAlbertGraphDistribution BinaryDistance BorelTannerDistribution BarChart BinaryFormat Bottom BarChart3D BinaryImageQ BottomHatTransform BarcodeImage BinaryRead BoundaryDiscretizeGraphics BarcodeRecognize BinaryReadList BoundaryDiscretizeRegion BaringhausHenzeTest BinarySerialize BoundaryMesh BarLegend BinaryWrite BoundaryMeshRegion BarlowProschanImportance BinCounts BoundaryMeshRegionQ BarnesG BinLists BoundaryStyle BarOrigin Binomial BoundedRegionQ BarSpacing BinomialDistribution BoundingRegion BartlettHannWindow BinomialProcess BoxData BartlettWindow BinormalDistribution Boxed BaseForm BiorthogonalSplineWavelet BoxMatrix Baseline BipartiteGraphQ BoxObject BaselinePosition BiquadraticFilterModel BoxRatios BaseStyle BirnbaumImportance BoxStyle BasicRecurrentLayer BirnbaumSaundersDistribution BoxWhiskerChart BatchNormalizationLayer BitAnd BracketingBar BatchSize BitClear BrayCurtisDistance BatesDistribution BitGet BreadthFirstScan BattleLemarieWavelet BitLength Break BayesianMaximization BitNot BridgeData BayesianMaximizationObject BitOr BrightnessEqualize BayesianMinimization BitSet BroadcastStationData BayesianMinimizationObject BitShiftLeft Brown Because BitShiftRight BrownForsytheTest BeckmannDistribution BitXor BrownianBridgeProcess Beep BiweightLocation BSplineBasis Before BiweightMidvariance BSplineCurve Begin Black BSplineFunction BeginDialogPacket BlackmanHarrisWindow BSplineSurface BeginPackage BlackmanNuttallWindow BubbleChart BellB BlackmanWindow BubbleChart3D BellY Blank BubbleScale Below BlankNullSequence BubbleSizes BenfordDistribution BlankSequence BuildingData BeniniDistribution Blend BulletGauge BenktanderGibratDistribution Block BusinessDayQ BenktanderWeibullDistribution BlockMap ButterflyGraph BernoulliB BlockRandom ButterworthFilterModel BernoulliDistribution BlomqvistBeta Button BernoulliGraphDistribution BlomqvistBetaTest ButtonBar BernoulliProcess Blue ButtonBox BernsteinBasis Blur ButtonBoxOptions BesselFilterModel BodePlot ButtonData BesselI BohmanWindow ButtonFunction BesselJ Bold ButtonMinHeight BesselJZero Bookmarks ButtonNotebook BesselK Boole ButtonSource BesselY BooleanConsecutiveFunction Byte BesselYZero BooleanConvert ByteArray Beta BooleanCountingFunction ByteArrayQ BetaBinomialDistribution BooleanFunction ByteArrayToString BetaDistribution BooleanGraph ByteCount BetaNegativeBinomialDistribution BooleanMaxterms ByteOrdering C ClassifierInformation ContainsAll CachePersistence ClassifierMeasurements ContainsAny CalendarConvert ClassifierMeasurementsObject ContainsExactly CalendarData Classify ContainsNone CalendarType ClassPriors ContainsOnly Callout Clear ContentFieldOptions CalloutMarker ClearAll ContentLocationFunction CalloutStyle ClearAttributes ContentObject CallPacket ClearCookies ContentPadding CanberraDistance ClearPermissions ContentSelectable Cancel ClearSystemCache ContentSize CancelButton ClebschGordan Context CandlestickChart ClickPane Contexts CanonicalGraph Clip ContextToFileName CanonicalName ClippingStyle Continue CanonicalWarpingCorrespondence ClipPlanes ContinuedFraction CanonicalWarpingDistance ClipPlanesStyle ContinuedFractionK CantorMesh ClipRange ContinuousAction CantorStaircase Clock ContinuousMarkovProcess Cap ClockGauge ContinuousTask CapForm Close ContinuousTimeModelQ CapitalDifferentialD CloseKernels ContinuousWaveletData Capitalize ClosenessCentrality ContinuousWaveletTransform CapsuleShape Closing ContourDetect CaptureRunning CloudAccountData ContourLabels CarlemanLinearize CloudBase ContourPlot CarmichaelLambda CloudConnect ContourPlot3D CaseOrdering CloudDeploy Contours Cases CloudDirectory ContourShading CaseSensitive CloudDisconnect ContourStyle Cashflow CloudEvaluate ContraharmonicMean Casoratian CloudExport ContrastiveLossLayer Catalan CloudExpression Control CatalanNumber CloudExpressions ControlActive Catch CloudFunction ControllabilityGramian Catenate CloudGet ControllabilityMatrix CatenateLayer CloudImport ControllableDecomposition CauchyDistribution CloudLoggingData ControllableModelQ CauchyWindow CloudObject ControllerInformation CayleyGraph CloudObjects ControllerLinking CDF CloudPublish ControllerManipulate CDFDeploy CloudPut ControllerMethod CDFInformation CloudSave ControllerPath CDFWavelet CloudShare ControllerState Ceiling CloudSubmit ControlPlacement CelestialSystem CloudSymbol ControlsRendering Cell ClusterClassify ControlType CellAutoOverwrite ClusterDissimilarityFunction Convergents CellBaseline ClusteringComponents ConversionRules CellBracketOptions ClusteringTree ConvexHullMesh CellChangeTimes CMYKColor ConvolutionLayer CellContext CodeAssistOptions Convolve CellDingbat Coefficient ConwayGroupCo1 CellDynamicExpression CoefficientArrays ConwayGroupCo2 CellEditDuplicate CoefficientList ConwayGroupCo3 CellEpilog CoefficientRules CookieFunction CellEvaluationDuplicate CoifletWavelet CoordinateBoundingBox CellEvaluationFunction Collect CoordinateBoundingBoxArray CellEventActions Colon CoordinateBounds CellFrame ColorBalance CoordinateBoundsArray CellFrameColor ColorCombine CoordinateChartData CellFrameLabelMargins ColorConvert CoordinatesToolOptions CellFrameLabels ColorCoverage CoordinateTransform CellFrameMargins ColorData CoordinateTransformData CellGroup ColorDataFunction CoprimeQ CellGroupData ColorDistance Coproduct CellGrouping ColorFunction CopulaDistribution CellID ColorFunctionScaling Copyable CellLabel Colorize CopyDatabin CellLabelAutoDelete ColorNegate CopyDirectory CellMargins ColorProfileData CopyFile CellObject ColorQ CopyToClipboard CellOpen ColorQuantize CornerFilter CellPrint ColorReplace CornerNeighbors CellProlog ColorRules Correlation Cells ColorSeparate CorrelationDistance CellStyle ColorSetter CorrelationFunction CellTags ColorSlider CorrelationTest CellularAutomaton ColorSpace Cos CensoredDistribution ColorToneMapping Cosh Censoring Column CoshIntegral Center ColumnAlignments CosineDistance CenterArray ColumnLines CosineWindow CenterDot ColumnsEqual CosIntegral CentralFeature ColumnSpacings Cot CentralMoment ColumnWidths Coth CentralMomentGeneratingFunction CombinerFunction Count Cepstrogram CometData CountDistinct CepstrogramArray Commonest CountDistinctBy CepstrumArray CommonestFilter CountRoots CForm CommonName CountryData ChampernowneNumber CommonUnits Counts ChannelBase CommunityBoundaryStyle CountsBy ChannelBrokerAction CommunityGraphPlot Covariance ChannelDatabin CommunityLabels CovarianceEstimatorFunction ChannelListen CommunityRegionStyle CovarianceFunction ChannelListener CompanyData CoxianDistribution ChannelListeners CompatibleUnitQ CoxIngersollRossProcess ChannelObject CompilationOptions CoxModel ChannelPreSendFunction CompilationTarget CoxModelFit ChannelReceiverFunction Compile CramerVonMisesTest ChannelSend Compiled CreateArchive ChannelSubscribers CompiledFunction CreateCellID ChanVeseBinarize Complement CreateChannel Character CompleteGraph CreateCloudExpression CharacterCounts CompleteGraphQ CreateDatabin CharacterEncoding CompleteKaryTree CreateDialog CharacteristicFunction Complex CreateDirectory CharacteristicPolynomial Complexes CreateDocument CharacterName ComplexExpand CreateFile CharacterRange ComplexInfinity CreateIntermediateDirectories Characters ComplexityFunction CreateManagedLibraryExpression ChartBaseStyle ComponentMeasurements CreateNotebook ChartElementFunction ComposeList CreatePalette ChartElements ComposeSeries CreatePermissionsGroup ChartLabels CompositeQ CreateSearchIndex ChartLayout Composition CreateUUID ChartLegends CompoundElement CreateWindow ChartStyle CompoundExpression CriterionFunction Chebyshev1FilterModel CompoundPoissonDistribution CriticalityFailureImportance Chebyshev2FilterModel CompoundPoissonProcess CriticalitySuccessImportance ChebyshevT CompoundRenewalProcess CriticalSection ChebyshevU Compress Cross Check Condition CrossEntropyLossLayer CheckAbort ConditionalExpression CrossingDetect Checkbox Conditioned CrossMatrix CheckboxBar Cone Csc ChemicalData ConfidenceLevel Csch ChessboardDistance ConfidenceRange CubeRoot ChiDistribution ConfidenceTransform Cubics ChineseRemainder ConformAudio Cuboid ChiSquareDistribution ConformImages Cumulant ChoiceButtons Congruent CumulantGeneratingFunction ChoiceDialog ConicHullRegion Cup CholeskyDecomposition Conjugate CupCap Chop ConjugateTranspose Curl ChromaticityPlot Conjunction CurrencyConvert ChromaticityPlot3D ConnectedComponents CurrentDate ChromaticPolynomial ConnectedGraphComponents CurrentImage Circle ConnectedGraphQ CurrentNotebookImage CircleDot ConnectedMeshComponents CurrentScreenImage CircleMinus ConnectLibraryCallbackFunction CurrentValue CirclePlus ConnesWindow CurvatureFlowFilter CirclePoints ConoverTest CurveClosed CircleTimes Constant Cyan CirculantGraph ConstantArray CycleGraph CircularOrthogonalMatrixDistribution ConstantArrayLayer CycleIndexPolynomial CircularQuaternionMatrixDistribution ConstantImage Cycles CircularRealMatrixDistribution ConstantPlusLayer CyclicGroup CircularSymplecticMatrixDistribution ConstantRegionQ Cyclotomic CircularUnitaryMatrixDistribution Constants Cylinder Circumsphere ConstantTimesLayer CylindricalDecomposition CityData ConstellationData ClassifierFunction Containing D DeletePermissionsKey DiscreteMaxLimit DagumDistribution DeleteSearchIndex DiscreteMinLimit DamData DeleteSmallComponents DiscretePlot DamerauLevenshteinDistance DeleteStopwords DiscretePlot3D Darker DelimitedSequence DiscreteRatio Dashed Delimiter DiscreteRiccatiSolve Dashing DelimiterFlashTime DiscreteShift Databin Delimiters DiscreteTimeModelQ DatabinAdd DeliveryFunction DiscreteUniformDistribution DatabinRemove Dendrogram DiscreteVariables Databins Denominator DiscreteWaveletData DatabinUpload DensityHistogram DiscreteWaveletPacketTransform DataDistribution DensityPlot DiscreteWaveletTransform DataRange DensityPlot3D DiscretizeGraphics DataReversed DependentVariables DiscretizeRegion Dataset Deploy Discriminant DateBounds Deployed DisjointQ Dated Depth Disjunction DateDifference DepthFirstScan Disk DatedUnit Derivative DiskMatrix DateFormat DerivativeFilter DiskSegment DateFunction DescriptorStateSpace Dispatch DateHistogram DesignMatrix DispersionEstimatorFunction DateList Det DisplayAllSteps DateListLogPlot DeviceClose DisplayEndPacket DateListPlot DeviceConfigure DisplayForm DateListStepPlot DeviceExecute DisplayFunction DateObject DeviceExecuteAsynchronous DisplayPacket DateObjectQ DeviceObject DistanceFunction DateOverlapsQ DeviceOpen DistanceMatrix DatePattern DeviceRead DistanceTransform DatePlus DeviceReadBuffer Distribute DateRange DeviceReadLatest Distributed DateReduction DeviceReadList DistributedContexts DateString DeviceReadTimeSeries DistributeDefinitions DateTicksFormat Devices DistributionChart DateValue DeviceStreams DistributionFitTest DateWithinQ DeviceWrite DistributionParameterAssumptions DaubechiesWavelet DeviceWriteBuffer DistributionParameterQ DavisDistribution DGaussianWavelet Dithering DawsonF Diagonal Div DayCount DiagonalizableMatrixQ Divide DayCountConvention DiagonalMatrix DivideBy DayHemisphere Dialog Dividers DaylightQ DialogInput Divisible DayMatchQ DialogNotebook Divisors DayName DialogProlog DivisorSigma DayNightTerminator DialogReturn DivisorSum DayPlus DialogSymbols DMSList DayRange Diamond DMSString DayRound DiamondMatrix Do DeBruijnGraph DiceDissimilarity DockedCells Decapitalize DictionaryLookup DocumentGenerator DecimalForm DictionaryWordQ DocumentGeneratorInformation DeclarePackage DifferenceDelta DocumentGenerators Decompose DifferenceQuotient DocumentNotebook DeconvolutionLayer DifferenceRoot DocumentWeightingRules Decrement DifferenceRootReduce DominantColors Decrypt Differences Dot DecryptFile DifferentialD DotDashed DedekindEta DifferentialRoot DotEqual DeepSpaceProbeData DifferentialRootReduce DotLayer Default DifferentiatorFilter Dotted DefaultAxesStyle DigitBlock DoubleBracketingBar DefaultBaseStyle DigitCharacter DoubleDownArrow DefaultBoxStyle DigitCount DoubleLeftArrow DefaultButton DigitQ DoubleLeftRightArrow DefaultDuplicateCellStyle DihedralGroup DoubleLeftTee DefaultDuration Dilation DoubleLongLeftArrow DefaultElement DimensionalCombinations DoubleLongLeftRightArrow DefaultFaceGridsStyle DimensionalMeshComponents DoubleLongRightArrow DefaultFieldHintStyle DimensionReduce DoubleRightArrow DefaultFrameStyle DimensionReducerFunction DoubleRightTee DefaultFrameTicksStyle DimensionReduction DoubleUpArrow DefaultGridLinesStyle Dimensions DoubleUpDownArrow DefaultLabelStyle DiracComb DoubleVerticalBar DefaultMenuStyle DiracDelta DownArrow DefaultNaturalLanguage DirectedEdge DownArrowBar DefaultNewCellStyle DirectedEdges DownArrowUpArrow DefaultOptions DirectedGraph DownLeftRightVector DefaultPrintPrecision DirectedGraphQ DownLeftTeeVector DefaultTicksStyle DirectedInfinity DownLeftVector DefaultTooltipStyle Direction DownLeftVectorBar Defer Directive DownRightTeeVector DefineInputStreamMethod Directory DownRightVector DefineOutputStreamMethod DirectoryName DownRightVectorBar Definition DirectoryQ Downsample Degree DirectoryStack DownTee DegreeCentrality DirichletBeta DownTeeArrow DegreeGraphDistribution DirichletCharacter DownValues DEigensystem DirichletCondition Drop DEigenvalues DirichletConvolve DropoutLayer Deinitialization DirichletDistribution DSolve Del DirichletEta DSolveValue DelaunayMesh DirichletL Dt Delayed DirichletLambda DualSystemsModel Deletable DirichletTransform DumpSave Delete DirichletWindow DuplicateFreeQ DeleteBorderComponents DisableFormatting Duration DeleteCases DiscreteChirpZTransform Dynamic DeleteChannel DiscreteConvolve DynamicEvaluationTimeout DeleteCloudExpression DiscreteDelta DynamicGeoGraphics DeleteContents DiscreteHadamardTransform DynamicImage DeleteDirectory DiscreteIndicator DynamicModule DeleteDuplicates DiscreteLimit DynamicModuleValues DeleteDuplicatesBy DiscreteLQEstimatorGains DynamicSetting DeleteFile DiscreteLQRegulatorGains DynamicWrapper DeleteMissing DiscreteLyapunovSolve DeleteObject DiscreteMarkovProcess E Encrypt EvaluationElements EarthImpactData EncryptedObject EvaluationEnvironment EarthquakeData EncryptFile EvaluationMonitor EccentricityCentrality End EvaluationNotebook Echo EndDialogPacket EvaluationObject EchoFunction EndOfBuffer Evaluator EclipseType EndOfFile EvenQ EdgeAdd EndOfLine EventData EdgeBetweennessCentrality EndOfString EventHandler EdgeCapacity EndPackage EventLabels EdgeConnectivity EngineeringForm EventSeries EdgeContract EnterExpressionPacket ExactBlackmanWindow EdgeCost EnterTextPacket ExactNumberQ EdgeCount Entity ExampleData EdgeCoverQ EntityClass Except EdgeCycleMatrix EntityClassList ExcludedForms EdgeDelete EntityCopies ExcludedLines EdgeDetect EntityGroup ExcludedPhysicalQuantities EdgeForm EntityInstance ExcludePods EdgeIndex EntityList Exclusions EdgeLabeling EntityProperties ExclusionsStyle EdgeLabels EntityProperty Exists EdgeLabelStyle EntityPropertyClass Exit EdgeList EntityStore ExoplanetData EdgeQ EntityTypeName Exp EdgeRenderingFunction EntityValue Expand EdgeRules Entropy ExpandAll EdgeShapeFunction EntropyFilter ExpandDenominator EdgeStyle Environment ExpandFileName EdgeWeight Epilog ExpandNumerator Editable EpilogFunction Expectation EditDistance Equal ExpGammaDistribution EffectiveInterest EqualTilde ExpIntegralE Eigensystem EqualTo ExpIntegralEi Eigenvalues Equilibrium ExpirationDate EigenvectorCentrality EquirippleFilterKernel Exponent Eigenvectors Equivalent ExponentFunction Element Erf ExponentialDistribution ElementData Erfc ExponentialFamily ElementwiseLayer Erfi ExponentialGeneratingFunction ElidedForms ErlangB ExponentialMovingAverage Eliminate ErlangC ExponentialPowerDistribution Ellipsoid ErlangDistribution ExponentStep EllipticE Erosion Export EllipticExp ErrorBox ExportByteArray EllipticExpPrime EscapeRadius ExportForm EllipticF EstimatedBackground ExportString EllipticFilterModel EstimatedDistribution Expression EllipticK EstimatedProcess ExpressionCell EllipticLog EstimatorGains ExpToTrig EllipticNomeQ EstimatorRegulator ExtendedGCD EllipticPi EuclideanDistance Extension EllipticTheta EulerAngles ExtentElementFunction EllipticThetaPrime EulerE ExtentMarkers EmbedCode EulerGamma ExtentSize EmbeddedHTML EulerianGraphQ ExternalBundle EmbeddedService EulerMatrix ExternalEvaluate EmbeddingLayer EulerPhi ExternalOptions EmitSound Evaluatable ExternalSessionObject EmpiricalDistribution Evaluate ExternalSessions EmptyGraphQ EvaluatePacket ExternalTypeSignature EmptyRegion EvaluationBox Extract Enabled EvaluationCell ExtractArchive Encode EvaluationData ExtremeValueDistribution FaceForm FindFaces FormatType FaceGrids FindFile FormBox FaceGridsStyle FindFit FormBoxOptions Factor FindFormula FormControl Factorial FindFundamentalCycles FormFunction Factorial2 FindGeneratingFunction FormLayoutFunction FactorialMoment FindGeoLocation FormObject FactorialMomentGeneratingFunction FindGeometricTransform FormPage FactorialPower FindGraphCommunities FormulaData FactorInteger FindGraphIsomorphism FormulaLookup FactorList FindGraphPartition FortranForm FactorSquareFree FindHamiltonianCycle Forward FactorSquareFreeList FindHamiltonianPath ForwardBackward FactorTerms FindHiddenMarkovStates Fourier FactorTermsList FindIndependentEdgeSet FourierCoefficient Failure FindIndependentVertexSet FourierCosCoefficient FailureAction FindInstance FourierCosSeries FailureDistribution FindIntegerNullVector FourierCosTransform FailureQ FindKClan FourierDCT False FindKClique FourierDCTFilter FareySequence FindKClub FourierDCTMatrix FARIMAProcess FindKPlex FourierDST FeatureDistance FindLibrary FourierDSTMatrix FeatureExtract FindLinearRecurrence FourierMatrix FeatureExtraction FindList FourierParameters FeatureExtractor FindMaximum FourierSequenceTransform FeatureExtractorFunction FindMaximumFlow FourierSeries FeatureNames FindMaxValue FourierSinCoefficient FeatureNearest FindMeshDefects FourierSinSeries FeatureSpacePlot FindMinimum FourierSinTransform FeatureTypes FindMinimumCostFlow FourierTransform FeedbackLinearize FindMinimumCut FourierTrigSeries FeedbackSector FindMinValue FractionalBrownianMotionProcess FeedbackSectorStyle FindPath FractionalGaussianNoiseProcess FeedbackType FindPeaks FractionalPart FetalGrowthData FindPermutation FractionBox Fibonacci FindPostmanTour FractionBoxOptions Fibonorial FindProcessParameters Frame FieldCompletionFunction FindRepeat FrameBox FieldHint FindRoot FrameBoxOptions FieldHintStyle FindSequenceFunction Framed FieldMasked FindSettings FrameLabel FieldSize FindShortestPath FrameMargins File FindShortestTour FrameRate FileBaseName FindSpanningTree FrameStyle FileByteCount FindThreshold FrameTicks FileDate FindTransientRepeat FrameTicksStyle FileExistsQ FindVertexCover FRatioDistribution FileExtension FindVertexCut FrechetDistribution FileFormat FindVertexIndependentPaths FreeQ FileHash FinishDynamic FrenetSerretSystem FileNameDepth FiniteAbelianGroupCount FrequencySamplingFilterKernel FileNameDrop FiniteGroupCount FresnelC FileNameForms FiniteGroupData FresnelF FileNameJoin First FresnelG FileNames FirstCase FresnelS FileNameSetter FirstPassageTimeDistribution Friday FileNameSplit FirstPosition FrobeniusNumber FileNameTake FischerGroupFi22 FrobeniusSolve FilePrint FischerGroupFi23 FromAbsoluteTime FileSize FischerGroupFi24Prime FromCharacterCode FileSystemMap FisherHypergeometricDistribution FromCoefficientRules FileSystemScan FisherRatioTest FromContinuedFraction FileTemplate FisherZDistribution FromDigits FileTemplateApply Fit FromDMS FileType FittedModel FromEntity FilledCurve FixedOrder FromJulianDate Filling FixedPoint FromLetterNumber FillingStyle FixedPointList FromPolarCoordinates FillingTransform Flat FromRomanNumeral FilterRules Flatten FromSphericalCoordinates FinancialBond FlattenAt FromUnixTime FinancialData FlattenLayer Front FinancialDerivative FlatTopWindow FrontEndDynamicExpression FinancialIndicator FlipView FrontEndEventActions Find Floor FrontEndExecute FindArgMax FlowPolynomial FrontEndToken FindArgMin Fold FrontEndTokenExecute FindChannels FoldList Full FindClique FoldPair FullDefinition FindClusters FoldPairList FullForm FindCookies FollowRedirects FullGraphics FindCurvePath FontColor FullInformationOutputRegulator FindCycle FontFamily FullRegion FindDevices FontSize FullSimplify FindDistribution FontSlant Function FindDistributionParameters FontSubstitutions FunctionDomain FindDivisions FontTracking FunctionExpand FindEdgeCover FontVariations FunctionInterpolation FindEdgeCut FontWeight FunctionPeriod FindEdgeIndependentPaths For FunctionRange FindEulerianCycle ForAll FunctionSpace FindExternalEvaluators Format FussellVeselyImportance GaborFilter GeoGraphics GraphDifference GaborMatrix GeogravityModelData GraphDisjointUnion GaborWavelet GeoGridLines GraphDistance GainMargins GeoGridLinesStyle GraphDistanceMatrix GainPhaseMargins GeoGridPosition GraphEmbedding GalaxyData GeoGroup GraphHighlight GalleryView GeoHemisphere GraphHighlightStyle Gamma GeoHemisphereBoundary GraphHub GammaDistribution GeoHistogram Graphics GammaRegularized GeoIdentify Graphics3D GapPenalty GeoImage GraphicsColumn GARCHProcess GeoLabels GraphicsComplex GatedRecurrentLayer GeoLength GraphicsGrid Gather GeoListPlot GraphicsGroup GatherBy GeoLocation GraphicsRow GaugeFaceElementFunction GeologicalPeriodData GraphIntersection GaugeFaceStyle GeomagneticModelData GraphLayout GaugeFrameElementFunction GeoMarker GraphLinkEfficiency GaugeFrameSize GeometricBrownianMotionProcess GraphPeriphery GaugeFrameStyle GeometricDistribution GraphPlot GaugeLabels GeometricMean GraphPlot3D GaugeMarkers GeometricMeanFilter GraphPower GaugeStyle GeometricTransformation GraphPropertyDistribution GaussianFilter GeoModel GraphQ GaussianIntegers GeoNearest GraphRadius GaussianMatrix GeoPath GraphReciprocity GaussianOrthogonalMatrixDistribution GeoPosition GraphStyle GaussianSymplecticMatrixDistribution GeoPositionENU GraphUnion GaussianUnitaryMatrixDistribution GeoPositionXYZ Gray GaussianWindow GeoProjection GrayLevel GCD GeoProjectionData Greater GegenbauerC GeoRange GreaterEqual General GeoRangePadding GreaterEqualLess GeneralizedLinearModelFit GeoRegionValuePlot GreaterEqualThan GenerateAsymmetricKeyPair GeoScaleBar GreaterFullEqual GenerateConditions GeoServer GreaterGreater GeneratedCell GeoStyling GreaterLess GeneratedDocumentBinding GeoStylingImageFunction GreaterSlantEqual GenerateDocument GeoVariant GreaterThan GeneratedParameters GeoVisibleRegion GreaterTilde GenerateHTTPResponse GeoVisibleRegionBoundary Green GenerateSymmetricKey GeoWithinQ GreenFunction GeneratingFunction GeoZoomLevel Grid GeneratorDescription GestureHandler GridBox GeneratorHistoryLength Get GridDefaultElement GeneratorOutputType GetEnvironment GridGraph GenericCylindricalDecomposition Glaisher GridLines GenomeData GlobalClusteringCoefficient GridLinesStyle GenomeLookup Glow GroebnerBasis GeoAntipode GoldenAngle GroupActionBase GeoArea GoldenRatio GroupBy GeoBackground GompertzMakehamDistribution GroupCentralizer GeoBoundingBox GoodmanKruskalGamma GroupElementFromWord GeoBounds GoodmanKruskalGammaTest GroupElementPosition GeoBoundsRegion Goto GroupElementQ GeoBubbleChart Grad GroupElements GeoCenter Gradient GroupElementToWord GeoCircle GradientFilter GroupGenerators GeodesicClosing GradientOrientationFilter Groupings GeodesicDilation GrammarApply GroupMultiplicationTable GeodesicErosion GrammarRules GroupOrbits GeodesicOpening GrammarToken GroupOrder GeoDestination Graph GroupPageBreakWithin GeodesyData Graph3D GroupSetwiseStabilizer GeoDirection GraphAssortativity GroupStabilizer GeoDisk GraphAutomorphismGroup GroupStabilizerChain GeoDisplacement GraphCenter GrowCutComponents GeoDistance GraphComplement Gudermannian GeoDistanceList GraphData GuidedFilter GeoElevationData GraphDensity GumbelDistribution GeoEntities GraphDiameter HaarWavelet HessenbergDecomposition HornerForm HadamardMatrix HexadecimalCharacter HostLookup HalfLine Hexahedron HotellingTSquareDistribution HalfNormalDistribution HiddenMarkovProcess HoytDistribution HalfPlane Highlighted HTTPErrorResponse HalfSpace HighlightGraph HTTPRedirect HamiltonianGraphQ HighlightImage HTTPRequest HammingDistance HighlightMesh HTTPRequestData HammingWindow HighpassFilter HTTPResponse HandlerFunctions HigmanSimsGroupHS Hue HandlerFunctionsKeys HilbertCurve HumanGrowthData HankelH1 HilbertFilter HumpDownHump HankelH2 HilbertMatrix HumpEqual HankelMatrix Histogram HurwitzLerchPhi HankelTransform Histogram3D HurwitzZeta HannPoissonWindow HistogramDistribution HyperbolicDistribution HannWindow HistogramList HypercubeGraph HaradaNortonGroupHN HistogramTransform HyperexponentialDistribution HararyGraph HistogramTransformInterpolation Hyperfactorial HarmonicMean HistoricalPeriodData Hypergeometric0F1 HarmonicMeanFilter HitMissTransform Hypergeometric0F1Regularized HarmonicNumber HITSCentrality Hypergeometric1F1 Hash HjorthDistribution Hypergeometric1F1Regularized Haversine HodgeDual Hypergeometric2F1 HazardFunction HoeffdingD Hypergeometric2F1Regularized Head HoeffdingDTest HypergeometricDistribution HeaderLines Hold HypergeometricPFQ Heads HoldAll HypergeometricPFQRegularized HeavisideLambda HoldAllComplete HypergeometricU HeavisidePi HoldComplete Hyperlink HeavisideTheta HoldFirst Hyperplane HeldGroupHe HoldForm Hyphenation Here HoldPattern HypoexponentialDistribution HermiteDecomposition HoldRest HypothesisTestData HermiteH HolidayCalendar HermitianMatrixQ HorizontalGauge I ImageTransformation Integers IconData ImageTrim IntegerString IconRules ImageType Integrate Identity ImageValue Interactive IdentityMatrix ImageValuePositions InteractiveTradingChart If ImagingDevice Interleaving IgnoreCase ImplicitRegion InternallyBalancedDecomposition IgnoreDiacritics Implies InterpolatingFunction IgnorePunctuation Import InterpolatingPolynomial IgnoringInactive ImportByteArray Interpolation Im ImportOptions InterpolationOrder Image ImportString InterpolationPoints Image3D ImprovementImportance Interpretation Image3DProjection In InterpretationBox Image3DSlices Inactivate InterpretationBoxOptions ImageAccumulate Inactive Interpreter ImageAdd IncidenceGraph InterquartileRange ImageAdjust IncidenceList Interrupt ImageAlign IncidenceMatrix IntersectingQ ImageApply IncludeConstantBasis Intersection ImageApplyIndexed IncludeGeneratorTasks Interval ImageAspectRatio IncludeInflections IntervalIntersection ImageAssemble IncludeMetaInformation IntervalMemberQ ImageAugmentationLayer IncludePods IntervalSlider ImageCapture IncludeQuantities IntervalUnion ImageChannels IncludeWindowTimes Inverse ImageClip Increment InverseBetaRegularized ImageCollage IndefiniteMatrixQ InverseCDF ImageColorSpace IndependenceTest InverseChiSquareDistribution ImageCompose IndependentEdgeSetQ InverseContinuousWaveletTransform ImageConvolve IndependentUnit InverseDistanceTransform ImageCooccurrence IndependentVertexSetQ InverseEllipticNomeQ ImageCorners Indeterminate InverseErf ImageCorrelate IndeterminateThreshold InverseErfc ImageCorrespondingPoints Indexed InverseFourier ImageCrop IndexGraph InverseFourierCosTransform ImageData InexactNumberQ InverseFourierSequenceTransform ImageDeconvolve InfiniteLine InverseFourierSinTransform ImageDemosaic InfinitePlane InverseFourierTransform ImageDifference Infinity InverseFunction ImageDimensions Infix InverseFunctions ImageDisplacements InflationAdjust InverseGammaDistribution ImageDistance InflationMethod InverseGammaRegularized ImageEffect Information InverseGaussianDistribution ImageExposureCombine Inherited InverseGudermannian ImageFeatureTrack InheritScope InverseHankelTransform ImageFileApply InhomogeneousPoissonProcess InverseHaversine ImageFileFilter InitialEvaluationHistory InverseJacobiCD ImageFileScan Initialization InverseJacobiCN ImageFilter InitializationCell InverseJacobiCS ImageFocusCombine InitializationObjects InverseJacobiDC ImageForestingComponents InitializationValue InverseJacobiDN ImageFormattingWidth Initialize InverseJacobiDS ImageForwardTransformation Inner InverseJacobiNC ImageGraphics Inpaint InverseJacobiND ImageHistogram Input InverseJacobiNS ImageIdentify InputAliases InverseJacobiSC ImageInstanceQ InputAssumptions InverseJacobiSD ImageKeypoints InputAutoReplacements InverseJacobiSN ImageLevels InputField InverseLaplaceTransform ImageLines InputForm InverseMellinTransform ImageMargins InputNamePacket InversePermutation ImageMarker InputNotebook InverseRadon ImageMeasurements InputPacket InverseRadonTransform ImageMesh InputStream InverseSeries ImageMultiply InputString InverseSurvivalFunction ImagePad InputStringPacket InverseTransformedRegion ImagePadding Insert InverseWaveletTransform ImagePartition InsertionFunction InverseWeierstrassP ImagePeriodogram InsertLinebreaks InverseWishartMatrixDistribution ImagePerspectiveTransformation InsertResults InverseZTransform ImagePreviewFunction Inset Invisible ImageQ Insphere IPAddress ImageReflect Install IrreduciblePolynomialQ ImageResize InstallService IslandData ImageResolution InstanceNormalizationLayer IsolatingInterval ImageRestyle InString IsomorphicGraphQ ImageRotate Integer IsotopeData ImageSaliencyFilter IntegerDigits Italic ImageScaled IntegerExponent Item ImageScan IntegerLength ItemAspectRatio ImageSize IntegerName ItemSize ImageSizeAction IntegerPart ItemStyle ImageSizeMultipliers IntegerPartitions ItoProcess ImageSubtract IntegerQ ImageTake IntegerReverse JaccardDissimilarity JacobiSC JoinAcross JacobiAmplitude JacobiSD Joined JacobiCD JacobiSN JoinedCurve JacobiCN JacobiSymbol JoinForm JacobiCS JacobiZeta JordanDecomposition JacobiDC JankoGroupJ1 JordanModelDecomposition JacobiDN JankoGroupJ2 JulianDate JacobiDS JankoGroupJ3 JuliaSetBoettcher JacobiNC JankoGroupJ4 JuliaSetIterationCount JacobiND JarqueBeraALMTest JuliaSetPlot JacobiNS JohnsonDistribution JuliaSetPoints JacobiP Join KagiChart Key KirchhoffGraph KaiserBesselWindow KeyCollisionFunction KirchhoffMatrix KaiserWindow KeyComplement KleinInvariantJ KalmanEstimator KeyDrop KnapsackSolve KalmanFilter KeyDropFrom KnightTourGraph KarhunenLoeveDecomposition KeyExistsQ KnotData KaryTree KeyFreeQ KnownUnitQ KatzCentrality KeyIntersection KochCurve KCoreComponents KeyMap KolmogorovSmirnovTest KDistribution KeyMemberQ KroneckerDelta KEdgeConnectedComponents KeypointStrength KroneckerModelDecomposition KEdgeConnectedGraphQ Keys KroneckerProduct KelvinBei KeySelect KroneckerSymbol KelvinBer KeySort KuiperTest KelvinKei KeySortBy KumaraswamyDistribution KelvinKer KeyTake Kurtosis KendallTau KeyUnion KuwaharaFilter KendallTauTest KeyValueMap KVertexConnectedComponents KernelMixtureDistribution KeyValuePattern KVertexConnectedGraphQ KernelObject Khinchin Kernels KillProcess LABColor LeveneTest ListPickerBoxOptions Label LeviCivitaTensor ListPlay Labeled LevyDistribution ListPlot LabelingFunction LibraryDataType ListPlot3D LabelStyle LibraryFunction ListPointPlot3D LaguerreL LibraryFunctionError ListPolarPlot LakeData LibraryFunctionInformation ListQ LambdaComponents LibraryFunctionLoad ListSliceContourPlot3D LaminaData LibraryFunctionUnload ListSliceDensityPlot3D LanczosWindow LibraryLoad ListSliceVectorPlot3D LandauDistribution LibraryUnload ListStepPlot Language LiftingFilterData ListStreamDensityPlot LanguageCategory LiftingWaveletTransform ListStreamPlot LanguageData LightBlue ListSurfacePlot3D LanguageIdentify LightBrown ListVectorDensityPlot LaplaceDistribution LightCyan ListVectorPlot LaplaceTransform Lighter ListVectorPlot3D Laplacian LightGray ListZTransform LaplacianFilter LightGreen LocalAdaptiveBinarize LaplacianGaussianFilter Lighting LocalCache Large LightingAngle LocalClusteringCoefficient Larger LightMagenta LocalizeVariables Last LightOrange LocalObject Latitude LightPink LocalObjects LatitudeLongitude LightPurple LocalResponseNormalizationLayer LatticeData LightRed LocalSubmit LatticeReduce LightYellow LocalSymbol LaunchKernels Likelihood LocalTime LayeredGraphPlot Limit LocalTimeZone LayerSizeFunction LimitsPositioning LocationEquivalenceTest LCHColor LindleyDistribution LocationTest LCM Line Locator LeaderSize LinearFractionalTransform LocatorAutoCreate LeafCount LinearGradientImage LocatorPane LeapYearQ LinearizingTransformationData LocatorRegion LearningRateMultipliers LinearLayer Locked LeastSquares LinearModelFit Log LeastSquaresFilterKernel LinearOffsetFunction Log10 Left LinearProgramming Log2 LeftArrow LinearRecurrence LogBarnesG LeftArrowBar LinearSolve LogGamma LeftArrowRightArrow LinearSolveFunction LogGammaDistribution LeftDownTeeVector LineBreakChart LogicalExpand LeftDownVector LineGraph LogIntegral LeftDownVectorBar LineIndent LogisticDistribution LeftRightArrow LineIndentMaxFraction LogisticSigmoid LeftRightVector LineIntegralConvolutionPlot LogitModelFit LeftTee LineIntegralConvolutionScale LogLikelihood LeftTeeArrow LineLegend LogLinearPlot LeftTeeVector LineSpacing LogLogisticDistribution LeftTriangle LinkActivate LogLogPlot LeftTriangleBar LinkClose LogMultinormalDistribution LeftTriangleEqual LinkConnect LogNormalDistribution LeftUpDownVector LinkCreate LogPlot LeftUpTeeVector LinkFunction LogRankTest LeftUpVector LinkInterrupt LogSeriesDistribution LeftUpVectorBar LinkLaunch Longest LeftVector LinkObject LongestCommonSequence LeftVectorBar LinkPatterns LongestCommonSequencePositions LegendAppearance LinkProtocol LongestCommonSubsequence Legended LinkRankCentrality LongestCommonSubsequencePositions LegendFunction LinkRead LongestOrderedSequence LegendLabel LinkReadyQ Longitude LegendLayout Links LongLeftArrow LegendMargins LinkWrite LongLeftRightArrow LegendMarkers LiouvilleLambda LongRightArrow LegendMarkerSize List LongShortTermMemoryLayer LegendreP Listable Lookup LegendreQ ListAnimate LoopFreeGraphQ Length ListContourPlot LowerCaseQ LengthWhile ListContourPlot3D LowerLeftArrow LerchPhi ListConvolve LowerRightArrow Less ListCorrelate LowerTriangularize LessEqual ListCurvePathPlot LowpassFilter LessEqualGreater ListDeconvolve LQEstimatorGains LessEqualThan ListDensityPlot LQGRegulator LessFullEqual ListDensityPlot3D LQOutputRegulatorGains LessGreater ListFormat LQRegulatorGains LessLess ListFourierSequenceTransform LucasL LessSlantEqual ListInterpolation LuccioSamiComponents LessThan ListLineIntegralConvolutionPlot LUDecomposition LessTilde ListLinePlot LunarEclipse LetterCharacter ListLogLinearPlot LUVColor LetterCounts ListLogLogPlot LyapunovSolve LetterNumber ListLogPlot LyonsGroupLy LetterQ ListPicker Level ListPickerBox MachineNumberQ MaxLimit MinColorDistance MachinePrecision MaxMemoryUsed MinDetect Magenta MaxMixtureKernels MineralData Magnification MaxPlotPoints MinFilter Magnify MaxRecursion MinimalBy MailAddressValidation MaxStableDistribution MinimalPolynomial MailReceiverFunction MaxStepFraction MinimalStateSpaceModel MailResponseFunction MaxSteps Minimize MailSettings MaxStepSize MinimumTimeIncrement Majority MaxTrainingRounds MinIntervalSize MakeBoxes MaxValue MinkowskiQuestionMark MakeExpression MaxwellDistribution MinLimit ManagedLibraryExpressionID MaxWordGap MinMax ManagedLibraryExpressionQ McLaughlinGroupMcL MinorPlanetData MandelbrotSetBoettcher Mean Minors MandelbrotSetDistance MeanAbsoluteLossLayer MinStableDistribution MandelbrotSetIterationCount MeanClusteringCoefficient Minus MandelbrotSetMemberQ MeanDegreeConnectivity MinusPlus MandelbrotSetPlot MeanDeviation MinValue MangoldtLambda MeanFilter Missing ManhattanDistance MeanGraphDistance MissingBehavior Manipulate MeanNeighborDegree MissingDataMethod Manipulator MeanShift MissingDataRules MannedSpaceMissionData MeanShiftFilter MissingQ MannWhitneyTest MeanSquaredLossLayer MissingString MantissaExponent Median MissingStyle Manual MedianDeviation MittagLefflerE Map MedianFilter MixedGraphQ MapAll MedicalTestData MixedMagnitude MapAt Medium MixedRadix MapIndexed MeijerG MixedRadixQuantity MAProcess MeijerGReduce MixedUnit MapThread MeixnerDistribution MixtureDistribution MarchenkoPasturDistribution MellinConvolve Mod MarcumQ MellinTransform Modal MardiaCombinedTest MemberQ ModularInverse MardiaKurtosisTest MemoryAvailable ModularLambda MardiaSkewnessTest MemoryConstrained Module MarginalDistribution MemoryConstraint Modulus MarkovProcessProperties MemoryInUse MoebiusMu Masking MengerMesh Moment MatchingDissimilarity MenuCommandKey MomentConvert MatchLocalNames MenuPacket MomentEvaluate MatchQ MenuSortingValue MomentGeneratingFunction MathematicalFunctionData MenuStyle MomentOfInertia MathieuC MenuView Monday MathieuCharacteristicA Merge Monitor MathieuCharacteristicB MergingFunction MonomialList MathieuCharacteristicExponent MersennePrimeExponent MonsterGroupM MathieuCPrime MersennePrimeExponentQ MoonPhase MathieuGroupM11 Mesh MoonPosition MathieuGroupM12 MeshCellCentroid MorletWavelet MathieuGroupM22 MeshCellCount MorphologicalBinarize MathieuGroupM23 MeshCellHighlight MorphologicalBranchPoints MathieuGroupM24 MeshCellIndex MorphologicalComponents MathieuS MeshCellLabel MorphologicalEulerNumber MathieuSPrime MeshCellMarker MorphologicalGraph MathMLForm MeshCellMeasure MorphologicalPerimeter Matrices MeshCellQuality MorphologicalTransform MatrixExp MeshCells MortalityData MatrixForm MeshCellShapeFunction Most MatrixFunction MeshCellStyle MountainData MatrixLog MeshCoordinates MouseAnnotation MatrixNormalDistribution MeshFunctions MouseAppearance MatrixPlot MeshPrimitives Mouseover MatrixPower MeshQualityGoal MousePosition MatrixPropertyDistribution MeshRefinementFunction MovieData MatrixQ MeshRegion MovingAverage MatrixRank MeshRegionQ MovingMap MatrixTDistribution MeshShading MovingMedian Max MeshStyle MoyalDistribution MaxCellMeasure Message Multicolumn MaxDetect MessageDialog MultiedgeStyle MaxDuration MessageList MultigraphQ MaxExtraBandwidths MessageName Multinomial MaxExtraConditions MessagePacket MultinomialDistribution MaxFeatureDisplacement Messages MultinormalDistribution MaxFeatures MetaInformation MultiplicativeOrder MaxFilter MeteorShowerData Multiselection MaximalBy Method MultivariateHypergeometricDistribution Maximize MexicanHatWavelet MultivariatePoissonDistribution MaxItems MeyerWavelet MultivariateTDistribution MaxIterations Min N NonCommutativeMultiply NotNestedGreaterGreater NakagamiDistribution NonConstants NotNestedLessLess NameQ None NotPrecedes Names NoneTrue NotPrecedesEqual Nand NonlinearModelFit NotPrecedesSlantEqual NArgMax NonlinearStateSpaceModel NotPrecedesTilde NArgMin NonlocalMeansFilter NotReverseElement NCache NonNegative NotRightTriangle NDEigensystem NonPositive NotRightTriangleBar NDEigenvalues Nor NotRightTriangleEqual NDSolve NorlundB NotSquareSubset NDSolveValue Norm NotSquareSubsetEqual Nearest Normal NotSquareSuperset NearestFunction NormalDistribution NotSquareSupersetEqual NearestNeighborGraph Normalize NotSubset NebulaData Normalized NotSubsetEqual NeedlemanWunschSimilarity NormalizedSquaredEuclideanDistance NotSucceeds Needs NormalMatrixQ NotSucceedsEqual Negative NormalsFunction NotSucceedsSlantEqual NegativeBinomialDistribution NormFunction NotSucceedsTilde NegativeDefiniteMatrixQ Not NotSuperset NegativeMultinomialDistribution NotCongruent NotSupersetEqual NegativeSemidefiniteMatrixQ NotCupCap NotTilde NeighborhoodData NotDoubleVerticalBar NotTildeEqual NeighborhoodGraph Notebook NotTildeFullEqual Nest NotebookApply NotTildeTilde NestedGreaterGreater NotebookAutoSave NotVerticalBar NestedLessLess NotebookClose Now NestGraph NotebookDelete NoWhitespace NestList NotebookDirectory NProbability NestWhile NotebookDynamicExpression NProduct NestWhileList NotebookEvaluate NRoots NetChain NotebookEventActions NSolve NetDecoder NotebookFileName NSum NetEncoder NotebookFind NuclearExplosionData NetEvaluationMode NotebookGet NuclearReactorData NetExtract NotebookImport Null NetFoldOperator NotebookInformation NullRecords NetGraph NotebookLocate NullSpace NetInitialize NotebookObject NullWords NetMapOperator NotebookOpen Number NetModel NotebookPrint NumberCompose NetNestOperator NotebookPut NumberDecompose NetPairEmbeddingOperator NotebookRead NumberExpand NetPort Notebooks NumberFieldClassNumber NetPortGradient NotebookSave NumberFieldDiscriminant NetReplacePart NotebookSelection NumberFieldFundamentalUnits NetTrain NotebookTemplate NumberFieldIntegralBasis NeumannValue NotebookWrite NumberFieldNormRepresentatives NevilleThetaC NotElement NumberFieldRegulator NevilleThetaD NotEqualTilde NumberFieldRootsOfUnity NevilleThetaN NotExists NumberFieldSignature NevilleThetaS NotGreater NumberForm NExpectation NotGreaterEqual NumberFormat NextCell NotGreaterFullEqual NumberLinePlot NextDate NotGreaterGreater NumberMarks NextPrime NotGreaterLess NumberMultiplier NHoldAll NotGreaterSlantEqual NumberPadding NHoldFirst NotGreaterTilde NumberPoint NHoldRest Nothing NumberQ NicholsGridLines NotHumpDownHump NumberSeparator NicholsPlot NotHumpEqual NumberSigns NightHemisphere NotificationFunction NumberString NIntegrate NotLeftTriangle Numerator NMaximize NotLeftTriangleBar NumericalOrder NMaxValue NotLeftTriangleEqual NumericalSort NMinimize NotLess NumericFunction NMinValue NotLessEqual NumericQ NominalVariables NotLessFullEqual NuttallWindow NoncentralBetaDistribution NotLessGreater NyquistGridLines NoncentralChiSquareDistribution NotLessLess NyquistPlot NoncentralFRatioDistribution NotLessSlantEqual NoncentralStudentTDistribution NotLessTilde O Operate OutputControllableModelQ ObservabilityGramian OperatingSystem OutputForm ObservabilityMatrix OptimumFlowData OutputNamePacket ObservableDecomposition Optional OutputResponse ObservableModelQ OptionalElement OutputSizeLimit OceanData Options OutputStream OddQ OptionsPattern OverBar Off OptionValue OverDot Offset Or Overflow On Orange OverHat ONanGroupON Order Overlaps Once OrderDistribution Overlay OneIdentity OrderedQ Overscript Opacity Ordering OverscriptBox OpacityFunction Orderless OverscriptBoxOptions OpacityFunctionScaling OrderlessPatternSequence OverTilde OpenAppend OrnsteinUhlenbeckProcess OverVector Opener Orthogonalize OverwriteTarget OpenerView OrthogonalMatrixQ OwenT Opening Out OwnValues OpenRead Outer OpenWrite OutputControllabilityMatrix PackingMethod PermutationCyclesQ PopupView PaddedForm PermutationGroup PopupWindow Padding PermutationLength Position PaddingLayer PermutationList PositionIndex PaddingSize PermutationListQ Positive PadeApproximant PermutationMax PositiveDefiniteMatrixQ PadLeft PermutationMin PositiveSemidefiniteMatrixQ PadRight PermutationOrder PossibleZeroQ PageBreakAbove PermutationPower Postfix PageBreakBelow PermutationProduct Power PageBreakWithin PermutationReplace PowerDistribution PageFooters Permutations PowerExpand PageHeaders PermutationSupport PowerMod PageRankCentrality Permute PowerModList PageTheme PeronaMalikFilter PowerRange PageWidth PersistenceLocation PowerSpectralDensity Pagination PersistenceTime PowersRepresentations PairedBarChart PersistentObject PowerSymmetricPolynomial PairedHistogram PersistentObjects PrecedenceForm PairedSmoothHistogram PersistentValue Precedes PairedTTest PersonData PrecedesEqual PairedZTest PERTDistribution PrecedesSlantEqual PaletteNotebook PetersenGraph PrecedesTilde PalindromeQ PhaseMargins Precision Pane PhaseRange PrecisionGoal Panel PhysicalSystemData PreDecrement Paneled Pi Predict PaneSelector Pick PredictorFunction ParabolicCylinderD PIDData PredictorInformation ParagraphIndent PIDDerivativeFilter PredictorMeasurements ParagraphSpacing PIDFeedforward PredictorMeasurementsObject ParallelArray PIDTune PreemptProtect ParallelCombine Piecewise Prefix ParallelDo PiecewiseExpand PreIncrement Parallelepiped PieChart Prepend ParallelEvaluate PieChart3D PrependTo Parallelization PillaiTrace PreprocessingRules Parallelize PillaiTraceTest PreserveColor ParallelMap PingTime PreserveImageOptions ParallelNeeds Pink PreviousCell Parallelogram PixelConstrained PreviousDate ParallelProduct PixelValue PriceGraphDistribution ParallelSubmit PixelValuePositions Prime ParallelSum Placed PrimeNu ParallelTable Placeholder PrimeOmega ParallelTry PlaceholderReplace PrimePi ParameterEstimator Plain PrimePowerQ ParameterMixtureDistribution PlanarGraph PrimeQ ParametricFunction PlanarGraphQ Primes ParametricNDSolve PlanckRadiationLaw PrimeZetaP ParametricNDSolveValue PlaneCurveData PrimitivePolynomialQ ParametricPlot PlanetaryMoonData PrimitiveRoot ParametricPlot3D PlanetData PrimitiveRootList ParametricRegion PlantData PrincipalComponents ParentBox Play PrincipalValue ParentCell PlayRange Print ParentDirectory Plot PrintableASCIIQ ParentNotebook Plot3D PrintingStyleEnvironment ParetoDistribution PlotLabel Printout3D ParkData PlotLabels Printout3DPreviewer Part PlotLayout PrintTemporary PartBehavior PlotLegends Prism PartialCorrelationFunction PlotMarkers PrivateCellOptions ParticleAcceleratorData PlotPoints PrivateFontOptions ParticleData PlotRange PrivateKey Partition PlotRangeClipping PrivateNotebookOptions PartitionGranularity PlotRangePadding Probability PartitionsP PlotRegion ProbabilityDistribution PartitionsQ PlotStyle ProbabilityPlot PartLayer PlotTheme ProbabilityScalePlot PartOfSpeech Pluralize ProbitModelFit PartProtection Plus ProcessConnection ParzenWindow PlusMinus ProcessDirectory PascalDistribution Pochhammer ProcessEnvironment PassEventsDown PodStates Processes PassEventsUp PodWidth ProcessEstimator Paste Point ProcessInformation PasteButton PointFigureChart ProcessObject Path PointLegend ProcessParameterAssumptions PathGraph PointSize ProcessParameterQ PathGraphQ PoissonConsulDistribution ProcessStatus Pattern PoissonDistribution Product PatternSequence PoissonProcess ProductDistribution PatternTest PoissonWindow ProductLog PauliMatrix PolarAxes ProgressIndicator PaulWavelet PolarAxesOrigin Projection Pause PolarGridLines Prolog PDF PolarPlot Properties PeakDetect PolarTicks Property PeanoCurve PoleZeroMarkers PropertyList PearsonChiSquareTest PolyaAeppliDistribution PropertyValue PearsonCorrelationTest PolyGamma Proportion PearsonDistribution Polygon Proportional PerfectNumber PolygonalNumber Protect PerfectNumberQ PolyhedronData Protected PerformanceGoal PolyLog ProteinData Perimeter PolynomialExtendedGCD Pruning PeriodicBoundaryCondition PolynomialGCD PseudoInverse Periodogram PolynomialLCM PsychrometricPropertyData PeriodogramArray PolynomialMod PublicKey Permanent PolynomialQ PublisherID Permissions PolynomialQuotient PulsarData PermissionsGroup PolynomialQuotientRemainder PunctuationCharacter PermissionsGroups PolynomialReduce Purple PermissionsKey PolynomialRemainder Put PermissionsKeys PoolingLayer PutAppend PermutationCycles PopupMenu Pyramid QBinomial QuantityArray QuartileDeviation QFactorial QuantityDistribution Quartiles QGamma QuantityForm QuartileSkewness QHypergeometricPFQ QuantityMagnitude Query QnDispersion QuantityQ QueueingNetworkProcess QPochhammer QuantityUnit QueueingProcess QPolyGamma QuantityVariable QueueProperties QRDecomposition QuantityVariableCanonicalUnit Quiet QuadraticIrrationalQ QuantityVariableDimensions Quit Quantile QuantityVariableIdentifier Quotient QuantilePlot QuantityVariablePhysicalQuantity QuotientRemainder Quantity Quartics RadialGradientImage RegionDistanceFunction ReturnTextPacket RadialityCentrality RegionEmbeddingDimension Reverse RadicalBox RegionEqual ReverseBiorthogonalSplineWavelet RadicalBoxOptions RegionFunction ReverseElement RadioButton RegionImage ReverseEquilibrium RadioButtonBar RegionIntersection ReverseGraph Radon RegionMeasure ReverseSort RadonTransform RegionMember ReverseUpEquilibrium RamanujanTau RegionMemberFunction RevolutionAxis RamanujanTauL RegionMoment RevolutionPlot3D RamanujanTauTheta RegionNearest RGBColor RamanujanTauZ RegionNearestFunction RiccatiSolve Ramp RegionPlot RiceDistribution RandomChoice RegionPlot3D RidgeFilter RandomColor RegionProduct RiemannR RandomComplex RegionQ RiemannSiegelTheta RandomEntity RegionResize RiemannSiegelZ RandomFunction RegionSize RiemannXi RandomGraph RegionSymmetricDifference Riffle RandomImage RegionUnion Right RandomInteger RegionWithin RightArrow RandomPermutation RegisterExternalEvaluator RightArrowBar RandomPoint RegularExpression RightArrowLeftArrow RandomPrime Regularization RightComposition RandomReal RegularlySampledQ RightCosetRepresentative RandomSample RegularPolygon RightDownTeeVector RandomSeeding ReIm RightDownVector RandomVariate RelationGraph RightDownVectorBar RandomWalkProcess ReleaseHold RightTee RandomWord ReliabilityDistribution RightTeeArrow Range ReliefImage RightTeeVector RangeFilter ReliefPlot RightTriangle RankedMax Remove RightTriangleBar RankedMin RemoveAlphaChannel RightTriangleEqual Raster RemoveAudioStream RightUpDownVector Raster3D RemoveBackground RightUpTeeVector Rasterize RemoveChannelListener RightUpVector RasterSize RemoveDiacritics RightUpVectorBar Rational RemoveInputStreamMethod RightVector Rationalize RemoveOutputStreamMethod RightVectorBar Rationals RemoveProperty RiskAchievementImportance Ratios RemoveUsers RiskReductionImportance RawBoxes RenameDirectory RogersTanimotoDissimilarity RawData RenameFile RollPitchYawAngles RayleighDistribution RenderingOptions RollPitchYawMatrix Re RenewalProcess RomanNumeral Read RenkoChart Root ReadLine RepairMesh RootApproximant ReadList Repeated RootIntervals ReadProtected RepeatedNull RootLocusPlot ReadString RepeatedTiming RootMeanSquare Real RepeatingElement RootOfUnityQ RealAbs Replace RootReduce RealBlockDiagonalForm ReplaceAll Roots RealDigits ReplaceImageValue RootSum RealExponent ReplaceList Rotate Reals ReplacePart RotateLabel RealSign ReplacePixelValue RotateLeft Reap ReplaceRepeated RotateRight RecognitionPrior ReplicateLayer RotationAction RecognitionThreshold RequiredPhysicalQuantities RotationMatrix Record Resampling RotationTransform RecordLists ResamplingAlgorithmData Round RecordSeparators ResamplingMethod RoundingRadius Rectangle Rescale Row RectangleChart RescalingTransform RowAlignments RectangleChart3D ResetDirectory RowBox RectangularRepeatingElement ReshapeLayer RowLines RecurrenceFilter Residue RowMinHeight RecurrenceTable ResizeLayer RowReduce Red Resolve RowsEqual Reduce ResourceData RowSpacings ReferenceLineStyle ResourceObject RSolve Refine ResourceRegister RSolveValue ReflectionMatrix ResourceRemove RudinShapiro ReflectionTransform ResourceSearch RudvalisGroupRu Refresh ResourceSubmit Rule RefreshRate ResourceUpdate RuleDelayed Region ResponseForm RulePlot RegionBinarize Rest Run RegionBoundary RestartInterval RunProcess RegionBounds Restricted RunThrough RegionCentroid Resultant RuntimeAttributes RegionDifference Return RuntimeOptions RegionDimension ReturnExpressionPacket RussellRaoDissimilarity RegionDisjoint ReturnPacket RegionDistance ReturnReceiptFunction SameQ Simplify StationaryDistribution SameTest Sin StationaryWaveletPacketTransform SampleDepth Sinc StationaryWaveletTransform SampledSoundFunction SinghMaddalaDistribution StatusArea SampledSoundList SingleLetterItalics StatusCentrality SampleRate SingularValueDecomposition StepMonitor SamplingPeriod SingularValueList StieltjesGamma SARIMAProcess SingularValuePlot StirlingS1 SARMAProcess Sinh StirlingS2 SASTriangle SinhIntegral StoppingPowerData SatelliteData SinIntegral StrataVariables SatisfiabilityCount SixJSymbol StratonovichProcess SatisfiabilityInstances Skeleton StreamColorFunction SatisfiableQ SkeletonTransform StreamColorFunctionScaling Saturday SkellamDistribution StreamDensityPlot Save Skewness StreamPlot SaveDefinitions SkewNormalDistribution StreamPoints SavitzkyGolayMatrix SkinStyle StreamPosition SawtoothWave Skip Streams Scale SliceContourPlot3D StreamScale Scaled SliceDensityPlot3D StreamStyle ScaleDivisions SliceDistribution String ScaleOrigin SliceVectorPlot3D StringCases ScalePadding Slider StringContainsQ ScaleRanges Slider2D StringCount ScaleRangeStyle SlideView StringDelete ScalingFunctions Slot StringDrop ScalingMatrix SlotSequence StringEndsQ ScalingTransform Small StringExpression Scan SmallCircle StringExtract ScheduledTask Smaller StringForm SchurDecomposition SmithDecomposition StringFormat ScientificForm SmithDelayCompensator StringFreeQ ScientificNotationThreshold SmithWatermanSimilarity StringInsert ScorerGi SmoothDensityHistogram StringJoin ScorerGiPrime SmoothHistogram StringLength ScorerHi SmoothHistogram3D StringMatchQ ScorerHiPrime SmoothKernelDistribution StringPadLeft ScreenStyleEnvironment SnDispersion StringPadRight ScriptBaselineShifts Snippet StringPart ScriptMinSize SocialMediaData StringPartition ScriptSizeMultipliers SocketConnect StringPosition Scrollbars SocketListen StringQ ScrollingOptions SocketListener StringRepeat ScrollPosition SocketObject StringReplace SearchAdjustment SocketOpen StringReplaceList SearchIndexObject SocketReadMessage StringReplacePart SearchIndices SocketReadyQ StringReverse SearchQueryString Sockets StringRiffle SearchResultObject SocketWaitAll StringRotateLeft Sec SocketWaitNext StringRotateRight Sech SoftmaxLayer StringSkeleton SechDistribution SokalSneathDissimilarity StringSplit SectorChart SolarEclipse StringStartsQ SectorChart3D SolarSystemFeatureData StringTake SectorOrigin SolidData StringTemplate SectorSpacing SolidRegionQ StringToByteArray SecuredAuthenticationKey Solve StringToStream SeedRandom SolveAlways StringTrim Select Sort StripBoxes Selectable SortBy StripOnInput SelectComponents Sound StripWrapperBoxes SelectedCells SoundNote StructuralImportance SelectedNotebook SoundVolume StructuredArray SelectFirst SourceLink StructuredSelection SelectionCreateCell Sow StruveH SelectionEvaluate SpaceCurveData StruveL SelectionEvaluateCreateCell Spacer Stub SelectionMove Spacings StudentTDistribution SelfLoopStyle Span Style SemanticImport SpanFromAbove StyleBox SemanticImportString SpanFromBoth StyleData SemanticInterpretation SpanFromLeft StyleDefinitions SemialgebraicComponentInstances SparseArray Subdivide SendMail SpatialGraphDistribution Subfactorial SendMessage SpatialMedian Subgraph Sequence SpatialTransformationLayer SubMinus SequenceAlignment Speak SubPlus SequenceAttentionLayer SpearmanRankTest SubresultantPolynomialRemainders SequenceCases SpearmanRho SubresultantPolynomials SequenceCount SpeciesData Subresultants SequenceFold SpecificityGoal Subscript SequenceFoldList SpectralLineData SubscriptBox SequenceHold Spectrogram SubscriptBoxOptions SequenceLastLayer SpectrogramArray Subsequences SequenceMostLayer Specularity Subset SequencePosition SpeechSynthesize SubsetEqual SequencePredict SpellingCorrection SubsetQ SequencePredictorFunction SpellingCorrectionList Subsets SequenceRestLayer SpellingOptions SubStar SequenceReverseLayer Sphere SubstitutionSystem Series SpherePoints Subsuperscript SeriesCoefficient SphericalBesselJ SubsuperscriptBox SeriesData SphericalBesselY SubsuperscriptBoxOptions ServiceConnect SphericalHankelH1 Subtract ServiceDisconnect SphericalHankelH2 SubtractFrom ServiceExecute SphericalHarmonicY Succeeds ServiceObject SphericalPlot3D SucceedsEqual SessionSubmit SphericalRegion SucceedsSlantEqual SessionTime SphericalShell SucceedsTilde Set SpheroidalEigenvalue SuchThat SetAccuracy SpheroidalJoiningFactor Sum SetAlphaChannel SpheroidalPS SumConvergence SetAttributes SpheroidalPSPrime SummationLayer SetCloudDirectory SpheroidalQS Sunday SetCookies SpheroidalQSPrime SunPosition SetDelayed SpheroidalRadialFactor Sunrise SetDirectory SpheroidalS1 Sunset SetEnvironment SpheroidalS1Prime SuperDagger SetFileDate SpheroidalS2 SuperMinus SetOptions SpheroidalS2Prime SupernovaData SetPermissions SplicedDistribution SuperPlus SetPrecision SplineClosed Superscript SetProperty SplineDegree SuperscriptBox SetSelectedNotebook SplineKnots SuperscriptBoxOptions SetSharedFunction SplineWeights Superset SetSharedVariable Split SupersetEqual SetStreamPosition SplitBy SuperStar SetSystemOptions SpokenString Surd Setter Sqrt SurfaceData SetterBar SqrtBox SurvivalDistribution Setting SqrtBoxOptions SurvivalFunction SetUsers Square SurvivalModel Shallow SquaredEuclideanDistance SurvivalModelFit ShannonWavelet SquareFreeQ SuzukiDistribution ShapiroWilkTest SquareIntersection SuzukiGroupSuz Share SquareMatrixQ SwatchLegend Sharpen SquareRepeatingElement Switch ShearingMatrix SquaresR Symbol ShearingTransform SquareSubset SymbolName ShellRegion SquareSubsetEqual SymletWavelet ShenCastanMatrix SquareSuperset Symmetric ShiftedGompertzDistribution SquareSupersetEqual SymmetricGroup ShiftRegisterSequence SquareUnion SymmetricKey Short SquareWave SymmetricMatrixQ ShortDownArrow SSSTriangle SymmetricPolynomial Shortest StabilityMargins SymmetricReduction ShortestPathFunction StabilityMarginsStyle Symmetrize ShortLeftArrow StableDistribution SymmetrizedArray ShortRightArrow Stack SymmetrizedArrayRules ShortUpArrow StackBegin SymmetrizedDependentComponents Show StackComplete SymmetrizedIndependentComponents ShowAutoSpellCheck StackedDateListPlot SymmetrizedReplacePart ShowAutoStyles StackedListPlot SynchronousInitialization ShowCellBracket StackInhibit SynchronousUpdating ShowCellLabel StadiumShape SyntaxForm ShowCellTags StandardAtmosphereData SyntaxInformation ShowCursorTracker StandardDeviation SyntaxLength ShowGroupOpener StandardDeviationFilter SyntaxPacket ShowPageBreaks StandardForm SyntaxQ ShowSelection Standardize SystemDialogInput ShowSpecialCharacters Standardized SystemInformation ShowStringCharacters StandardOceanData SystemOpen ShrinkingDelay StandbyDistribution SystemOptions SiderealTime Star SystemsModelDelay SiegelTheta StarClusterData SystemsModelDelayApproximate SiegelTukeyTest StarData SystemsModelDelete SierpinskiCurve StarGraph SystemsModelDimensions SierpinskiMesh StartExternalSession SystemsModelExtract Sign StartingStepSize SystemsModelFeedbackConnect Signature StartOfLine SystemsModelLabels SignedRankTest StartOfString SystemsModelLinearity SignedRegionDistance StartProcess SystemsModelMerge SignificanceLevel StateFeedbackGains SystemsModelOrder SignPadding StateOutputEstimator SystemsModelParallelConnect SignTest StateResponse SystemsModelSeriesConnect SimilarityRules StateSpaceModel SystemsModelStateFeedbackConnect SimpleGraph StateSpaceRealization SystemsModelVectorRelativeOrders SimpleGraphQ StateSpaceTransform Simplex StateTransformationLinearize Table ThermometerGauge ToUpperCase TableAlignments Thick Tr TableDepth Thickness Trace TableDirections Thin TraceAbove TableForm Thinning TraceBackward TableHeadings ThompsonGroupTh TraceDepth TableSpacing Thread TraceDialog TabView ThreadingLayer TraceForward TagBox ThreeJSymbol TraceOff TagBoxOptions Threshold TraceOn TaggingRules Through TraceOriginal TagSet Throw TracePrint TagSetDelayed ThueMorse TraceScan TagUnset Thumbnail TrackedSymbols Take Thursday TrackingFunction TakeDrop Ticks TracyWidomDistribution TakeLargest TicksStyle TradingChart TakeLargestBy TideData TraditionalForm TakeList Tilde TrainingProgressCheckpointing TakeSmallest TildeEqual TrainingProgressFunction TakeSmallestBy TildeFullEqual TrainingProgressReporting TakeWhile TildeTilde TransferFunctionCancel Tally TimeConstrained TransferFunctionExpand Tan TimeConstraint TransferFunctionFactor Tanh TimeDirection TransferFunctionModel TargetDevice TimeFormat TransferFunctionPoles TargetFunctions TimeGoal TransferFunctionTransform TargetUnits TimelinePlot TransferFunctionZeros TaskAbort TimeObject TransformationClass TaskExecute TimeObjectQ TransformationFunction TaskObject Times TransformationFunctions TaskRemove TimesBy TransformationMatrix TaskResume TimeSeries TransformedDistribution Tasks TimeSeriesAggregate TransformedField TaskSuspend TimeSeriesForecast TransformedProcess TaskWait TimeSeriesInsert TransformedRegion TautologyQ TimeSeriesInvertibility TransitionDirection TelegraphProcess TimeSeriesMap TransitionDuration TemplateApply TimeSeriesMapThread TransitionEffect TemplateBox TimeSeriesModel TransitiveClosureGraph TemplateBoxOptions TimeSeriesModelFit TransitiveReductionGraph TemplateExpression TimeSeriesResample Translate TemplateIf TimeSeriesRescale TranslationOptions TemplateObject TimeSeriesShift TranslationTransform TemplateSequence TimeSeriesThread Transliterate TemplateSlot TimeSeriesWindow Transparent TemplateWith TimeUsed Transpose TemporalData TimeValue TransposeLayer TemporalRegularity TimeZone TravelDirections Temporary TimeZoneConvert TravelDirectionsData TensorContract TimeZoneOffset TravelDistance TensorDimensions Timing TravelDistanceList TensorExpand Tiny TravelMethod TensorProduct TitsGroupT TravelTime TensorRank ToBoxes TreeForm TensorReduce ToCharacterCode TreeGraph TensorSymmetry ToContinuousTimeModel TreeGraphQ TensorTranspose Today TreePlot TensorWedge ToDiscreteTimeModel TrendStyle TestID ToEntity Triangle TestReport ToeplitzMatrix TriangleWave TestReportObject ToExpression TriangularDistribution TestResultObject Together TriangulateMesh Tetrahedron Toggler Trig TeXForm TogglerBar TrigExpand Text ToInvertibleTimeSeries TrigFactor TextAlignment TokenWords TrigFactorList TextCases Tolerance Trigger TextCell ToLowerCase TrigReduce TextClipboardType Tomorrow TrigToExp TextData ToNumberField TrimmedMean TextElement Tooltip TrimmedVariance TextGrid TooltipDelay TropicalStormData TextJustification TooltipStyle True TextPacket Top TrueQ TextPosition TopHatTransform TruncatedDistribution TextRecognize ToPolarCoordinates TsallisQExponentialDistribution TextSearch TopologicalSort TsallisQGaussianDistribution TextSearchReport ToRadicals TTest TextSentences ToRules Tube TextString ToSphericalCoordinates Tuesday TextStructure ToString TukeyLambdaDistribution TextTranslation Total TukeyWindow Texture TotalLayer TunnelData TextureCoordinateFunction TotalVariationFilter Tuples TextureCoordinateScaling TotalWidth TuranGraph TextWords TouchPosition TuringMachine Therefore TouchscreenAutoZoom TuttePolynomial ThermodynamicData TouchscreenControlPlacement TwoWayRule UnateQ UnitBox UpperCaseQ Uncompress UnitConvert UpperLeftArrow Undefined UnitDimensions UpperRightArrow UnderBar Unitize UpperTriangularize Underflow UnitRootTest Upsample Underlined UnitSimplify UpSet Underoverscript UnitStep UpSetDelayed UnderoverscriptBox UnitSystem UpTee UnderoverscriptBoxOptions UnitTriangle UpTeeArrow Underscript UnitVector UpTo UnderscriptBox UnitVectorLayer UpValues UnderscriptBoxOptions UnityDimensions URL UnderseaFeatureData UniverseModelData URLBuild UndirectedEdge UniversityData URLDecode UndirectedGraph UnixTime URLDispatcher UndirectedGraphQ Unprotect URLDownload UndoOptions UnregisterExternalEvaluator URLDownloadSubmit UndoTrackedVariables UnsameQ URLEncode Unequal UnsavedVariables URLExecute UnequalTo Unset URLExpand Unevaluated UnsetShared URLParse UniformDistribution UpArrow URLQueryDecode UniformGraphDistribution UpArrowBar URLQueryEncode UniformSumDistribution UpArrowDownArrow URLRead Uninstall Update URLResponseTime Union UpdateInterval URLShorten UnionPlus UpdateSearchIndex URLSubmit Unique UpDownArrow UsingFrontEnd UnitaryMatrixQ UpEquilibrium UtilityFunction ValidationLength VerifyTestAssumptions VertexQ ValidationSet VertexAdd VertexRenderingFunction ValueDimensions VertexCapacity VertexReplace ValuePreprocessingFunction VertexColors VertexShape ValueQ VertexComponent VertexShapeFunction Values VertexConnectivity VertexSize Variables VertexContract VertexStyle Variance VertexCoordinateRules VertexTextureCoordinates VarianceEquivalenceTest VertexCoordinates VertexWeight VarianceEstimatorFunction VertexCorrelationSimilarity VerticalBar VarianceGammaDistribution VertexCosineSimilarity VerticalGauge VarianceTest VertexCount VerticalSeparator VectorAngle VertexCoverQ VerticalSlider VectorColorFunction VertexDataCoordinates VerticalTilde VectorColorFunctionScaling VertexDegree ViewAngle VectorDensityPlot VertexDelete ViewCenter VectorPlot VertexDiceSimilarity ViewMatrix VectorPlot3D VertexEccentricity ViewPoint VectorPoints VertexInComponent ViewProjection VectorQ VertexInDegree ViewRange Vectors VertexIndex ViewVector VectorScale VertexJaccardSimilarity ViewVertical VectorStyle VertexLabeling Visible Vee VertexLabels Voice Verbatim VertexLabelStyle VoigtDistribution VerificationTest VertexList VolcanoData VerifyConvergence VertexNormals Volume VerifySecurityCertificates VertexOutComponent VonMisesDistribution VerifySolutions VertexOutDegree VoronoiMesh WaitAll WeierstrassHalfPeriodW1 WindowMargins WaitNext WeierstrassHalfPeriodW2 WindowMovable WakebyDistribution WeierstrassHalfPeriodW3 WindowOpacity WalleniusHypergeometricDistribution WeierstrassInvariantG2 WindowSize WaringYuleDistribution WeierstrassInvariantG3 WindowStatusArea WarpingCorrespondence WeierstrassInvariants WindowTitle WarpingDistance WeierstrassP WindowToolbars WatershedComponents WeierstrassPPrime WindSpeedData WatsonUSquareTest WeierstrassSigma WindVectorData WattsStrogatzGraphDistribution WeierstrassZeta WinsorizedMean WaveletBestBasis WeightedAdjacencyGraph WinsorizedVariance WaveletFilterCoefficients WeightedAdjacencyMatrix WishartMatrixDistribution WaveletImagePlot WeightedData With WaveletListPlot WeightedGraphQ WolframAlpha WaveletMapIndexed Weights WolframLanguageData WaveletMatrixPlot WelchWindow Word WaveletPhi WheelGraph WordBoundary WaveletPsi WhenEvent WordCharacter WaveletScale Which WordCloud WaveletScalogram While WordCount WaveletThreshold White WordCounts WeaklyConnectedComponents WhiteNoiseProcess WordData WeaklyConnectedGraphComponents WhitePoint WordDefinition WeaklyConnectedGraphQ Whitespace WordFrequency WeakStationarity WhitespaceCharacter WordFrequencyData WeatherData WhittakerM WordList WeatherForecastData WhittakerW WordOrientation WeberE WienerFilter WordSearch WebImageSearch WienerProcess WordSelectionFunction WebSearch WignerD WordSeparators Wedge WignerSemicircleDistribution WordSpacings Wednesday WikipediaData WordStem WeibullDistribution WikipediaSearch WordTranslation WeierstrassE1 WilksW WorkingPrecision WeierstrassE2 WilksWTest WrapAround WeierstrassE3 WindDirectionData Write WeierstrassEta1 WindowClickSelect WriteLine WeierstrassEta2 WindowElements WriteString WeierstrassEta3 WindowFloating Wronskian WeierstrassHalfPeriods WindowFrame XMLElement XMLTemplate Xor XMLObject Xnor XYZColor Yellow Yesterday YuleDissimilarity ZernikeR ZetaZero ZoomFactor ZeroSymmetric ZIPCodeData ZTest ZeroTest ZipfDistribution ZTransform Zeta ZoomCenter) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab.rb new file mode 100644 index 0000000000..ecd378d79e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab.rb @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Matlab < RegexLexer + title "MATLAB" + desc "Matlab" + tag 'matlab' + aliases 'm' + filenames '*.m' + mimetypes 'text/x-matlab', 'application/x-matlab' + + def self.keywords + @keywords = Set.new %w( + break case catch classdef continue else elseif end for function + global if otherwise parfor persistent return spmd switch try while + ) + end + + def self.builtins + load Pathname.new(__FILE__).dirname.join('matlab/builtins.rb') + self.builtins + end + + state :root do + rule /\s+/m, Text # Whitespace + rule %r([{]%.*?%[}])m, Comment::Multiline + rule /%.*$/, Comment::Single + rule /([.][.][.])(.*?)$/ do + groups(Keyword, Comment) + end + + rule /^(!)(.*?)(?=%|$)/ do |m| + token Keyword, m[1] + delegate Shell, m[2] + end + + + rule /[a-zA-Z][_a-zA-Z0-9]*/m do |m| + match = m[0] + if self.class.keywords.include? match + token Keyword + elsif self.class.builtins.include? match + token Name::Builtin + else + token Name + end + end + + rule %r{[(){};:,\/\\\]\[]}, Punctuation + + rule /~=|==|<<|>>|[-~+\/*%=<>&^|.@]/, Operator + + + rule /(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float + rule /\d+e[+-]?[0-9]+/i, Num::Float + rule /\d+L/, Num::Integer::Long + rule /\d+/, Num::Integer + + rule /'(?=(.*'))/, Str::Single, :string + rule /'/, Operator + end + + state :string do + rule /[^']+/, Str::Single + rule /''/, Str::Escape + rule /'/, Str::Single, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab/builtins.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab/builtins.rb new file mode 100644 index 0000000000..da47116738 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/matlab/builtins.rb @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# automatically generated by `rake builtins:matlab` +module Rouge + module Lexers + class Matlab + def self.builtins + @builtins ||= Set.new %w(ans clc diary format home iskeyword more zeros ones rand true false eye diag blkdiag cat horzcat vertcat repelem repmat linspace logspace freqspace meshgrid ndgrid length size ndims numel isscalar isvector ismatrix isrow iscolumn isempty sort sortrows issorted issortedrows flip fliplr flipud rot90 transpose ctranspose permute ipermute circshift shiftdim reshape squeeze colon end ind2sub sub2ind plus uplus minus uminus times rdivide ldivide power mtimes mrdivide mldivide mpower cumprod cumsum diff movsum prod sum ceil fix floor idivide mod rem round bsxfun eq ge gt le lt ne isequal isequaln logicaloperatorsshortcircuit and not or xor all any false find islogical logical true intersect ismember ismembertol issorted setdiff setxor union unique uniquetol join innerjoin outerjoin bitand bitcmp bitget bitor bitset bitshift bitxor swapbytes double single int8 int16 int32 int64 uint8 uint16 uint32 uint64 cast typecast isinteger isfloat isnumeric isreal isfinite isinf isnan eps flintmax inf intmax intmin nan realmax realmin string strings join char cellstr blanks newline compose sprintf strcat ischar iscellstr isstring strlength isstrprop isletter isspace contains count endswith startswith strfind sscanf replace replacebetween strrep join split splitlines strjoin strsplit strtok erase erasebetween extractafter extractbefore extractbetween insertafter insertbefore pad strip lower upper reverse deblank strtrim strjust strcmp strcmpi strncmp strncmpi regexp regexpi regexprep regexptranslate datetime timezones years days hours minutes seconds milliseconds duration calyears calquarters calmonths calweeks caldays calendarduration exceltime juliandate posixtime yyyymmdd year quarter month week day hour minute second ymd hms split time timeofday isdst isweekend tzoffset between caldiff dateshift isbetween isdatetime isduration iscalendarduration isnat nat datenum datevec datestr char cellstr string now clock date calendar eomday weekday addtodate etime categorical iscategorical discretize categories iscategory isordinal isprotected addcats mergecats removecats renamecats reordercats setcats summary countcats isundefined table array2table cell2table struct2table table2array table2cell table2struct readtable writetable detectimportoptions istable head tail height width summary intersect ismember setdiff setxor unique union join innerjoin outerjoin sortrows stack unstack vartype ismissing standardizemissing rmmissing fillmissing varfun rowfun findgroups splitapply timetable retime synchronize lag table2timetable array2timetable timetable2table istimetable isregular timerange withtol vartype rmmissing issorted sortrows unique struct fieldnames getfield isfield isstruct orderfields rmfield setfield arrayfun structfun table2struct struct2table cell2struct struct2cell cell cell2mat cell2struct cell2table celldisp cellfun cellplot cellstr iscell iscellstr mat2cell num2cell strjoin strsplit struct2cell table2cell feval func2str str2func localfunctions functions addevent delevent gettsafteratevent gettsafterevent gettsatevent gettsbeforeatevent gettsbeforeevent gettsbetweenevents gettscollection isemptytscollection lengthtscollection settscollection sizetscollection tscollection addsampletocollection addts delsamplefromcollection getabstimetscollection getsampleusingtimetscollection gettimeseriesnames horzcattscollection removets resampletscollection setabstimetscollection settimeseriesnames vertcattscollection isa iscalendarduration iscategorical iscell iscellstr ischar isdatetime isduration isfield isfloat isgraphics isinteger isjava islogical isnumeric isobject isreal isenum isstruct istable is class validateattributes whos char cellstr int2str mat2str num2str str2double str2num native2unicode unicode2native base2dec bin2dec dec2base dec2bin dec2hex hex2dec hex2num num2hex table2array table2cell table2struct array2table cell2table struct2table cell2mat cell2struct mat2cell num2cell struct2cell plus uplus minus uminus times rdivide ldivide power mtimes mrdivide mldivide mpower cumprod cumsum diff movsum prod sum ceil fix floor idivide mod rem round bsxfun sin sind asin asind sinh asinh cos cosd acos acosd cosh acosh tan tand atan atand atan2 atan2d tanh atanh csc cscd acsc acscd csch acsch sec secd asec asecd sech asech cot cotd acot acotd coth acoth hypot deg2rad rad2deg exp expm1 log log10 log1p log2 nextpow2 nthroot pow2 reallog realpow realsqrt sqrt abs angle complex conj cplxpair i imag isreal j real sign unwrap factor factorial gcd isprime lcm nchoosek perms primes rat rats poly polyeig polyfit residue roots polyval polyvalm conv deconv polyint polyder airy besselh besseli besselj besselk bessely beta betainc betaincinv betaln ellipj ellipke erf erfc erfcinv erfcx erfinv expint gamma gammainc gammaincinv gammaln legendre psi cart2pol cart2sph pol2cart sph2cart eps flintmax i j inf pi nan isfinite isinf isnan compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson mldivide mrdivide linsolve inv pinv lscov lsqnonneg sylvester eig eigs balance svd svds gsvd ordeig ordqz ordschur polyeig qz hess schur rsf2csf cdf2rdf lu ldl chol cholupdate qr qrdelete qrinsert qrupdate planerot transpose ctranspose mtimes mpower sqrtm expm logm funm kron cross dot bandwidth tril triu isbanded isdiag ishermitian issymmetric istril istriu norm normest cond condest rcond condeig det null orth rank rref trace subspace rand randn randi randperm rng interp1 interp2 interp3 interpn pchip spline ppval mkpp unmkpp padecoef interpft ndgrid meshgrid griddata griddatan fminbnd fminsearch lsqnonneg fzero optimget optimset ode45 ode23 ode113 ode15s ode23s ode23t ode23tb ode15i decic odeget odeset deval odextend bvp4c bvp5c bvpinit bvpxtend bvpget bvpset deval dde23 ddesd ddensd ddeget ddeset deval pdepe pdeval integral integral2 integral3 quadgk quad2d cumtrapz trapz polyint del2 diff gradient polyder fft fft2 fftn fftshift fftw ifft ifft2 ifftn ifftshift nextpow2 interpft conv conv2 convn deconv filter filter2 ss2tf padecoef spalloc spdiags speye sprand sprandn sprandsym sparse spconvert issparse nnz nonzeros nzmax spfun spones spparms spy find full amd colamd colperm dmperm randperm symamd symrcm pcg minres symmlq gmres bicg bicgstab bicgstabl cgs qmr tfqmr lsqr ichol ilu eigs svds normest condest sprank etree symbfact spaugment dmperm etreeplot treelayout treeplot gplot unmesh graph digraph tetramesh trimesh triplot trisurf delaunay delaunayn tetramesh trimesh triplot trisurf dsearchn tsearchn delaunay delaunayn boundary alphashape convhull convhulln patch voronoi voronoin polyarea inpolygon rectint plot plot3 loglog semilogx semilogy errorbar fplot fplot3 fimplicit linespec colorspec bar bar3 barh bar3h histogram histcounts histogram2 histcounts2 rose pareto area pie pie3 stem stairs stem3 scatter scatter3 spy plotmatrix heatmap polarplot polarscatter polarhistogram compass ezpolar rlim thetalim rticks thetaticks rticklabels thetaticklabels rtickformat thetatickformat rtickangle polaraxes contour contourf contourc contour3 contourslice clabel fcontour feather quiver compass quiver3 streamslice streamline surf surfc surface surfl surfnorm mesh meshc meshz hidden fsurf fmesh fimplicit3 waterfall ribbon contour3 peaks cylinder ellipsoid sphere pcolor surf2patch contourslice flow isocaps isocolors isonormals isosurface reducepatch reducevolume shrinkfaces slice smooth3 subvolume volumebounds coneplot curl divergence interpstreamspeed stream2 stream3 streamline streamparticles streamribbon streamslice streamtube fill fill3 patch surf2patch movie getframe frame2im im2frame animatedline comet comet3 drawnow refreshdata title xlabel ylabel zlabel clabel legend colorbar text texlabel gtext line rectangle annotation xlim ylim zlim axis box daspect pbaspect grid xticks yticks zticks xticklabels yticklabels zticklabels xtickformat ytickformat ztickformat xtickangle ytickangle ztickangle datetick ruler2num num2ruler hold subplot yyaxis cla axes figure colormap colorbar rgbplot colormapeditor brighten contrast caxis spinmap hsv2rgb rgb2hsv parula jet hsv hot cool spring summer autumn winter gray bone copper pink lines colorcube prism flag view makehgtform viewmtx cameratoolbar campan camzoom camdolly camlookat camorbit campos camproj camroll camtarget camup camva camlight light lightangle lighting shading diffuse material specular alim alpha alphamap imshow image imagesc imread imwrite imfinfo imformats frame2im im2frame im2java im2double ind2rgb rgb2gray rgb2ind imapprox dither cmpermute cmunique print saveas getframe savefig openfig orient hgexport printopt get set reset inspect gca gcf gcbf gcbo gco groot ancestor allchild findall findobj findfigs gobjects isgraphics ishandle copyobj delete gobjects isgraphics isempty isequal isa clf cla close uicontextmenu uimenu dragrect rbbox refresh shg hggroup hgtransform makehgtform eye hold ishold newplot clf cla drawnow opengl readtable detectimportoptions writetable textscan dlmread dlmwrite csvread csvwrite type readtable detectimportoptions writetable xlsfinfo xlsread xlswrite importdata im2java imfinfo imread imwrite nccreate ncdisp ncinfo ncread ncreadatt ncwrite ncwriteatt ncwriteschema h5create h5disp h5info h5read h5readatt h5write h5writeatt hdfinfo hdfread hdftool imread imwrite hdfan hdfhx hdfh hdfhd hdfhe hdfml hdfpt hdfv hdfvf hdfvh hdfvs hdfdf24 hdfdfr8 fitsdisp fitsinfo fitsread fitswrite multibandread multibandwrite cdfinfo cdfread cdfepoch todatenum audioinfo audioread audiowrite videoreader videowriter mmfileinfo lin2mu mu2lin audiodevinfo audioplayer audiorecorder sound soundsc beep xmlread xmlwrite xslt load save matfile disp who whos clear clearvars openvar fclose feof ferror fgetl fgets fileread fopen fprintf fread frewind fscanf fseek ftell fwrite tcpclient web webread webwrite websave weboptions sendmail jsondecode jsonencode readasync serial serialbreak seriallist stopasync instrcallback instrfind instrfindall record tabulartextdatastore imagedatastore spreadsheetdatastore filedatastore datastore tall datastore mapreducer gather head tail topkrows istall classunderlying isaunderlying write mapreduce datastore add addmulti hasnext getnext mapreducer gcmr matfile memmapfile ismissing rmmissing fillmissing missing standardizemissing isoutlier filloutliers smoothdata movmean movmedian detrend filter filter2 discretize histcounts histcounts2 findgroups splitapply rowfun varfun accumarray min max bounds mean median mode std var corrcoef cov cummax cummin movmad movmax movmean movmedian movmin movprod movstd movsum movvar pan zoom rotate rotate3d brush datacursormode ginput linkdata linkaxes linkprop refreshdata figurepalette plotbrowser plotedit plottools propertyeditor propedit showplottool if for parfor switch try while break continue end pause return edit input publish grabcode snapnow function nargin nargout varargin varargout narginchk nargoutchk validateattributes validatestring inputname isvarname namelengthmax persistent assignin global mlock munlock mislocked try error warning lastwarn assert oncleanup addpath rmpath path savepath userpath genpath pathsep pathtool restoredefaultpath rehash dir ls pwd fileattrib exist isdir type visdiff what which cd copyfile delete recycle mkdir movefile rmdir open winopen zip unzip gzip gunzip tar untar fileparts fullfile filemarker filesep tempdir tempname matlabroot toolboxdir dbclear dbcont dbdown dbquit dbstack dbstatus dbstep dbstop dbtype dbup checkcode keyboard mlintrpt edit echo eval evalc evalin feval run builtin mfilename pcode uiaxes uibutton uibuttongroup uicheckbox uidropdown uieditfield uilabel uilistbox uiradiobutton uislider uispinner uitable uitextarea uitogglebutton scroll uifigure uipanel uitabgroup uitab uigauge uiknob uilamp uiswitch uialert questdlg inputdlg listdlg uisetcolor uigetfile uiputfile uigetdir uiopen uisave appdesigner figure axes uicontrol uitable uipanel uibuttongroup uitab uitabgroup uimenu uicontextmenu uitoolbar uipushtool uitoggletool actxcontrol align movegui getpixelposition setpixelposition listfonts textwrap uistack inspect errordlg warndlg msgbox helpdlg waitbar questdlg inputdlg listdlg uisetcolor uisetfont export2wsdlg uigetfile uiputfile uigetdir uiopen uisave printdlg printpreview exportsetupdlg dialog uigetpref guide uiwait uiresume waitfor waitforbuttonpress closereq getappdata setappdata isappdata rmappdata guidata guihandles uisetpref class isobject enumeration events methods properties classdef classdef import properties isprop mustbefinite mustbegreaterthan mustbegreaterthanorequal mustbeinteger mustbelessthan mustbelessthanorequal mustbemember mustbenegative mustbenonempty mustbenonnan mustbenonnegative mustbenonpositive mustbenonsparse mustbenonzero mustbenumeric mustbenumericorlogical mustbepositive mustbereal methods ismethod isequal eq events superclasses enumeration isenum numargumentsfromsubscript subsref subsasgn subsindex substruct builtin empty disp display details saveobj loadobj edit metaclass properties methods events superclasses step clone getnuminputs getnumoutputs islocked resetsystemobject releasesystemobject mexext inmem loadlibrary unloadlibrary libisloaded calllib libfunctions libfunctionsview libstruct libpointer import isjava javaaddpath javaarray javachk javaclasspath javamethod javamethodedt javaobject javaobjectedt javarmpath usejava net enablenetfromnetworkdrive cell begininvoke endinvoke combine remove removeall bitand bitor bitxor bitnot actxserver actxcontrol actxcontrollist actxcontrolselect actxgetrunningserver iscom addproperty deleteproperty inspect fieldnames methods methodsview invoke isevent eventlisteners registerevent unregisterallevents unregisterevent isinterface interfaces release move pyversion pyargs pyargs pyargs builddocsearchdb try assert runtests testsuite functiontests runtests testsuite runtests testsuite runperf testsuite timeit tic toc cputime profile bench memory inmem pack memoize clearallmemoizedcaches clipboard computer system dos unix getenv setenv perl winqueryreg commandhistory commandwindow filebrowser workspace getpref setpref addpref rmpref ispref mex execute getchararray putchararray getfullmatrix putfullmatrix getvariable getworkspacedata putworkspacedata maximizecommandwindow minimizecommandwindow regmatlabserver enableservice mex dbmex mexext inmem ver computer mexext dbmex inmem mex mexext matlabwindows matlabmac matlablinux exit quit matlabrc startup finish prefdir preferences version ver verlessthan license ispc ismac isunix isstudent javachk usejava doc help docsearch lookfor demo echodemo) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/moonscript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/moonscript.rb new file mode 100644 index 0000000000..229ba147dc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/moonscript.rb @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'lua.rb' + + class Moonscript < RegexLexer + title "MoonScript" + desc "Moonscript (http://www.moonscript.org)" + tag 'moonscript' + aliases 'moon' + filenames '*.moon' + mimetypes 'text/x-moonscript', 'application/x-moonscript' + + option :function_highlighting, 'Whether to highlight builtin functions (default: true)' + option :disabled_modules, 'builtin modules to disable' + + def initialize(*) + super + + @function_highlighting = bool_option(:function_highlighting) { true } + @disabled_modules = list_option(:disabled_modules) + end + + def self.detect?(text) + return true if text.shebang? 'moon' + end + + def builtins + return [] unless @function_highlighting + + @builtins ||= Set.new.tap do |builtins| + Rouge::Lexers::Lua.builtins.each do |mod, fns| + next if @disabled_modules.include? mod + builtins.merge(fns) + end + end + end + + state :root do + rule %r(#!(.*?)$), Comment::Preproc # shebang + rule //, Text, :main + end + + state :base do + ident = '(?:[\w_][\w\d_]*)' + + rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float + rule %r((?i)\d+e[+-]?\d+), Num::Float + rule %r((?i)0x[0-9a-f]*), Num::Hex + rule %r(\d+), Num::Integer + rule %r(@#{ident}*), Name::Variable::Instance + rule %r([A-Z][\w\d_]*), Name::Class + rule %r("?[^"]+":), Literal::String::Symbol + rule %r(#{ident}:), Literal::String::Symbol + rule %r(:#{ident}), Literal::String::Symbol + + rule %r(\s+), Text::Whitespace + rule %r((==|~=|!=|<=|>=|\.\.\.|\.\.|->|=>|[=+\-*/%^<>#!\\])), Operator + rule %r([\[\]\{\}\(\)\.,:;]), Punctuation + rule %r((and|or|not)\b), Operator::Word + + keywords = %w{ + break class continue do else elseif end extends for if import in + repeat return switch super then unless until using when with while + } + rule %r((#{keywords.join('|')})\b), Keyword + rule %r((local|export)\b), Keyword::Declaration + rule %r((true|false|nil)\b), Keyword::Constant + + rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m| + name = m[0] + if self.builtins.include?(name) + token Name::Builtin + elsif name =~ /\./ + a, b = name.split('.', 2) + token Name, a + token Punctuation, '.' + token Name, b + else + token Name + end + end + end + + state :main do + rule %r(--.*$), Comment::Single + rule %r(\[(=*)\[.*?\]\1\])m, Str::Heredoc + + mixin :base + + rule %r('), Str::Single, :sqs + rule %r("), Str::Double, :dqs + end + + state :sqs do + rule %r('), Str::Single, :pop! + rule %r([^']+), Str::Single + end + + state :interpolation do + rule %r(\}), Str::Interpol, :pop! + mixin :base + end + + state :dqs do + rule %r(#\{), Str::Interpol, :interpolation + rule %r("), Str::Double, :pop! + rule %r(#[^{]), Str::Double + rule %r([^"#]+), Str::Double + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mosel.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mosel.rb new file mode 100644 index 0000000000..a87a2b1bbc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mosel.rb @@ -0,0 +1,232 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Mosel < RegexLexer + tag 'mosel' + filenames '*.mos' + title "Mosel" + desc "An optimization language used by Fico's Xpress." + # http://www.fico.com/en/products/fico-xpress-optimization-suite + filenames '*.mos' + + mimetypes 'text/x-mosel' + + def self.detect?(text) + return true if text =~ /^\s*(model|package)\s+/ + end + + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + ############################################################################################################################ + # General language lements + ############################################################################################################################ + + core_keywords = %w( + and array as + boolean break + case count counter + declarations div do dynamic + elif else end evaluation exit + false forall forward from function + if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2 + linctr list + max min mod model mpvar + next not of options or + package parameters procedure + public prod range real record repeat requirements + set string sum + then to true + union until uses + version + while with + ) + + core_functions = %w( + abs arctan assert + bitflip bitneg bitset bitshift bittest bitval + ceil cos create currentdate currenttime cuthead cuttail + delcell exists exit exp exportprob + fclose fflush finalize findfirst findlast floor fopen fselect fskipline + getact getcoeff getcoeffs getdual getfid getfirst gethead getfname getlast getobjval getparam getrcost getreadcnt getreverse getsize getslack getsol gettail gettype getvars + iseof ishidden isodd ln log + makesos1 makesos2 maxlist minlist + publish + random read readln reset reverse round + setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr + timestamp + unpublish + write writeln + ) + + ############################################################################################################################ + # mmxprs module elements + ############################################################################################################################ + + mmxprs_functions = %w( + addmipsol + basisstability + calcsolinfo clearmipdir clearmodcut command copysoltoinit + defdelayedrows defsecurevecs + estimatemarginals + fixglobal + getbstat getdualray getiis getiissense getiistype getinfcause getinfeas getlb getloadedlinctrs getloadedmpvars getname getprimalray getprobstat getrange getsensrng getsize getsol getub getvars + implies indicator isiisvalid isintegral loadbasis + loadmipsol loadprob + maximize minimize + postsolve + readbasis readdirs readsol refinemipsol rejectintsol repairinfeas resetbasis resetiis resetsol + savebasis savemipsol savesol savestate selectsol setbstat setcallback setcbcutoff setgndata setlb setmipdir setmodcut setsol setub setucbdata stopoptimize + unloadprob + writebasis writedirs writeprob writesol + xor + ) + + mmxpres_constants = %w(XPRS_OPT XPRS_UNF XPRS_INF XPRS_UNB XPRS_OTH) + + mmxprs_parameters = %w(XPRS_colorder XPRS_enumduplpol XPRS_enummaxsol XPRS_enumsols XPRS_fullversion XPRS_loadnames XPRS_problem XPRS_probname XPRS_verbose) + + + ############################################################################################################################ + # mmsystem module elements + ############################################################################################################################ + + mmsystem_functions = %w( + addmonths + copytext cuttext + deltext + endswith expandpath + fcopy fdelete findfiles findtext fmove + getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep + getendparse setendparse + getenv getfsize getfstat getftime gethour getminute getmonth getmsec getpathsep + getqtype setqtype + getsecond + getsepchar setsepchar + getsize + getstart setstart + getsucc setsucc + getsysinfo getsysstat gettime + gettmpdir + gettrim settrim + getweekday getyear + inserttext isvalid + makedir makepath newtar + newzip nextfield + openpipe + parseextn parseint parsereal parsetext pastetext pathmatch pathsplit + qsort quote + readtextline regmatch regreplace removedir removefiles + setchar setdate setday setenv sethour + setminute setmonth setmsec setsecond settime setyear sleep startswith system + tarlist textfmt tolower toupper trim + untar unzip + ziplist + ) + + mmsystem_parameters = %w(datefmt datetimefmt monthnames sys_endparse sys_fillchar sys_pid sys_qtype sys_regcache sys_sepchar) + + ############################################################################################################################ + # mmjobs module elements + ############################################################################################################################ + + mmjobs_instance_mgmt_functions = %w( + clearaliases connect + disconnect + findxsrvs + getaliases getbanner gethostalias + sethostalias + ) + + mmjobs_model_mgmt_functions = %w( + compile + detach + getannidents getannotations getexitcode getgid getid getnode getrmtid getstatus getuid + load + reset resetmodpar run + setcontrol setdefstream setmodpar setworkdir stop + unload + ) + + mmjobs_synchornization_functions = %w( + dropnextevent + getclass getfromgid getfromid getfromuid getnextevent getvalue + isqueueempty + nullevent + peeknextevent + send setgid setuid + wait waitfor + ) + + mmjobs_functions = mmjobs_instance_mgmt_functions + mmjobs_model_mgmt_functions + mmjobs_synchornization_functions + + mmjobs_parameters = %w(conntmpl defaultnode fsrvdelay fsrvnbiter fsrvport jobid keepalive nodenumber parentnumber) + + + state :whitespace do + # Spaces + rule /\s+/m, Text + # ! Comments + rule %r((!).*$\n?), Comment::Single + # (! Comments !) + rule %r(\(!.*?!\))m, Comment::Multiline + + end + + + # From Mosel documentation: + # Constant strings of characters must be quoted with single (') or double quote (") and may extend over several lines. Strings enclosed in double quotes may contain C-like escape sequences introduced by the 'backslash' + # character (\a \b \f \n \r \t \v \xxx with xxx being the character code as an octal number). + # Each sequence is replaced by the corresponding control character (e.g. \n is the `new line' command) or, if no control character exists, by the second character of the sequence itself (e.g. \\ is replaced by '\'). + # The escape sequences are not interpreted if they are contained in strings that are enclosed in single quotes. + + state :single_quotes do + rule /'/, Str::Single, :pop! + rule /[^']+/, Str::Single + end + + state :double_quotes do + rule /"/, Str::Double, :pop! + rule /(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape + rule /[^"]/, Str::Double + end + + state :base do + + rule %r{"}, Str::Double, :double_quotes + rule %r{'}, Str::Single, :single_quotes + + rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num + rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation +# rule %r{'([^']|'')*'}, Str +# rule /"(\\\\|\\"|[^"])*"/, Str + + + + rule /(true|false)\b/i, Name::Builtin + rule /\b(#{core_keywords.join('|')})\b/i, Keyword + rule /\b(#{core_functions.join('|')})\b/, Name::Builtin + + + + rule /\b(#{mmxprs_functions.join('|')})\b/, Name::Function + rule /\b(#{mmxpres_constants.join('|')})\b/, Name::Constant + rule /\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property + + rule /\b(#{mmsystem_functions.join('|')})\b/i, Name::Function + rule /\b(#{mmsystem_parameters.join('|')})\b/, Name::Property + + rule /\b(#{mmjobs_functions.join('|')})\b/i, Name::Function + rule /\b(#{mmjobs_parameters.join('|')})\b/, Name::Property + + rule id, Name + end + + state :root do + mixin :whitespace + mixin :base + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb new file mode 100644 index 0000000000..6342281e1e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class MXML < RegexLexer + title "MXML" + desc "MXML" + tag 'mxml' + filenames '*.mxml' + mimetypes 'application/xv+xml' + + state :root do + rule /[^<&]+/, Text + rule /&\S*?;/, Name::Entity + + rule //, Comment::Preproc + rule /]*>/, Comment::Preproc + + rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags + rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags + end + + state :comment do + rule /[^-]+/m, Comment + rule /-->/, Comment, :pop! + rule /-/, Comment + end + + state :tag do + rule /\s+/m, Text + rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute + rule %r(/?\s*>), Name::Tag, :root + end + + state :attribute do + rule /\s+/m, Text + rule /(")({|@{)/m do + groups Str, Punctuation + push :actionscript_attribute + end + rule /".*?"|'.*?'|[^\s>]+/, Str, :tag + end + + state :actionscript_content do + rule /\]\]\>/m, Comment::Preproc, :pop! + rule /.*?(?=\]\]\>)/m do + delegate Actionscript + end + end + + state :actionscript_attribute do + rule /(})(")/m do + groups Punctuation, Str + push :tag + end + rule /.*?(?=}")/m do + delegate Actionscript + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nasm.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nasm.rb new file mode 100644 index 0000000000..5a5bb99a2f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nasm.rb @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Nasm < RegexLexer + tag 'nasm' + filenames '*.asm' + #mimetypes 'text/x-chdr', 'text/x-csrc' + + title "Nasm" + desc "Netwide Assembler" + + ws = %r((?:\s|;.*?\n/)+) + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + #todo: pull more instructions from: http://www.nasm.us/doc/nasmdocb.html + #so far, we have sections 1.1 and 1.2 + + def self.keywords + @keywords ||= Set.new %w( + aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts + call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg + cmpxchg16b cmpxchg486 cmpxchg8b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div + dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove + fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp + fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr + fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e + fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw + fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos + fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip + fucomp fucompp fwait fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc + incbin insb insd insw int int01 int03 int1 int3 into invd invlpg invlpga invpcid iret + iretd iretq iretw jcxz jecxz jmp jmpe jrcxz lahf lar lds lea leave les lfence lfs + lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne + loopnz loopz lsl lss ltr mfence monitor monitorx mov movd movq movsb movsd movsq movsw + movsx movsxd movzx mul mwait mwaitx neg nop not or out outsb outsd outsw packssdw + packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn + pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc + pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt + pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw + pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch + prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw + psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd + push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdm rdmsr rdpmc rdshr + rdtsc rdtscp ret retf retn rol ror rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd + scasq scasw sfence sgdt shl shld shr shrd sidt skinit sldt smi smint smintold smsw + stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter + sysexit sysret test ud0 ud1 ud2 ud2a ud2b umov verr verw wbinvd wrmsr wrshr xadd xbts + xchg xlat xlatb xor + + cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp cmovpe cmovpo cmovs cmovz + + ja jae jb jbe jc jcxz jecxz je jg jge jl jle jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz + + seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz + + AAA AAD AAM AAS ADC ADD AND ARPL BB0_RESET BB1_RESET BOUND BSF BSR BSWAP BT BTC BTR BTS + CALL CBW CDQ CDQE CLC CLD CLI CLTS CMC CMP CMPSB CMPSD CMPSQ CMPSW CMPXCHG + CMPXCHG16B CMPXCHG486 CMPXCHG8B CPUID CPU_READ CPU_WRITE CQO CWD CWDE DAA DAS DEC DIV + DMINT EMMS ENTER EQU F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE + FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOMI FCOMIP FCOMP FCOMPP FCOS FDECSTP + FDISI FDIV FDIVP FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR + FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E + FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW + FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS + FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP + FUCOMP FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 HLT IBTS ICEBP IDIV IMUL IN INC + INCBIN INSB INSD INSW INT INT01 INT03 INT1 INT3 INTO INVD INVLPG INVLPGA INVPCID IRET + IRETD IRETQ IRETW JCXZ JECXZ JMP JMPE JRCXZ LAHF LAR LDS LEA LEAVE LES LFENCE LFS + LGDT LGS LIDT LLDT LMSW LOADALL LOADALL286 LODSB LODSD LODSQ LODSW LOOP LOOPE LOOPNE + LOOPNZ LOOPZ LSL LSS LTR MFENCE MONITOR MONITORX MOV MOVD MOVQ MOVSB MOVSD MOVSQ MOVSW + MOVSX MOVSXD MOVZX MUL MWAIT MWAITX NEG NOP NOT OR OUT OUTSB OUTSD OUTSW PACKSSDW + PACKSSWB PACKUSWB PADDB PADDD PADDSB PADDSIW PADDSW PADDUSB PADDUSW PADDW PAND PANDN + PAUSE PAVEB PAVGUSB PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW PDISTIB PF2ID PFACC + PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT + PFSUB PFSUBR PI2FD PMACHRIW PMADDWD PMAGW PMULHRIW PMULHRWA PMULHRWC PMULHW PMULLW + PMVGEZB PMVLZB PMVNZB PMVZB POP POPA POPAD POPAW POPF POPFD POPFQ POPFW POR PREFETCH + PREFETCHW PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD PSUBSB PSUBSIW + PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD + PUSH PUSHA PUSHAD PUSHAW PUSHF PUSHFD PUSHFQ PUSHFW PXOR RCL RCR RDM RDMSR RDPMC RDSHR + RDTSC RDTSCP RET RETF RETN ROL ROR RSDC RSLDT RSM RSTS SAHF SAL SALC SAR SBB SCASB SCASD + SCASQ SCASW SFENCE SGDT SHL SHLD SHR SHRD SIDT SKINIT SLDT SMI SMINT SMINTOLD SMSW + STC STD STI STOSB STOSD STOSQ STOSW STR SUB SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER + SYSEXIT SYSRET TEST UD0 UD1 UD2 UD2A UD2B UMOV VERR VERW WBINVD WRMSR WRSHR XADD XBTS + XCHG XLAT XLATB XOR + + CMOVA CMOVAE CMOVB CMOVBE CMOVC CMOVE CMOVG CMOVGE CMOVL CMOVLE CMOVNA CMOVNAE CMOVNB CMOVNBE CMOVNC CMOVNE CMOVNG CMOVNGE CMOVNL CMOVNLE CMOVNO CMOVNP CMOVNS CMOVNZ CMOVO CMOVP CMOVPE CMOVPO CMOVS CMOVZ + + JA JAE JB JBE JC JCXZ JECXZ JE JG JGE JL JLE JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ + + SETA SETAE SETB SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + DB DW DD DQ DT DO DY DZ RESB RESW RESD RESQ REST RESO RESY RESZ + db dq dd dq dt do dy dz resb resw resd resq rest reso resy resz + ) + end + + def self.reserved + @reserved ||= Set.new %w( + global extern macro endmacro assign rep endrep section + GLOBAL EXTERN MACRO ENDMACRO ASSIGN REP ENDREP SECTION + ) + end + + def self.builtins + @builtins ||= [] + end + + start { push :expr_bol } + + state :expr_bol do + mixin :inline_whitespace + rule(//) { pop! } + end + + state :inline_whitespace do + rule /[ \t\r]+/, Text + end + + state :whitespace do + rule /\n+/m, Text, :expr_bol + rule %r(//(\\.|.)*?\n), Comment::Single, :expr_bol + mixin :inline_whitespace + end + + state :expr_whitespace do + rule /\n+/m, Text, :expr_bol + mixin :whitespace + end + + state :root do + mixin :expr_whitespace + rule(//) { push :statement } + rule /^%[a-zA-Z0-9]+/, Comment::Preproc, :statement + + rule( + %r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]), + Operator + ) + rule /;.*/, Comment, :statement + rule /^[a-zA-Z]+[a-zA-Z0-9]*:/, Name::Function + rule /;.*/, Comment + end + + state :statement do + mixin :expr_whitespace + mixin :statements + rule /;.*/, Comment + rule /^%[a-zA-Z0-9]+/, Comment::Preproc + rule /[a-zA-Z]+%[0-9]+:/, Name::Function + end + + state :statements do + mixin :whitespace + rule /L?"/, Str, :string + rule /[a-zA-Z]+%[0-9]+:/, Name::Function #labels/subroutines/functions + rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char + rule /0x[0-9a-f]+[lu]*/i, Num::Hex + rule /\d+[lu]*/i, Num::Integer + rule %r(\*/), Error + rule %r([~&*+=\|?:<>/-]), Operator + rule /[(),.]/, Punctuation + rule /\[[a-zA-Z0-9]*\]/, Punctuation + rule /%[0-9]+/, Keyword::Reserved + rule /[a-zA-Z]+%[0-9]+/, Name::Function #labels/subroutines/functions + + #rule /(?|<|\+|-|\/|@|\$|~|&|%|\!|\?|\||\\|\[|\]/, Operator) + rule(/\.\.|\.|,|\[\.|\.\]|{\.|\.}|\(\.|\.\)|{|}|\(|\)|:|\^|`|;/, + Punctuation) + + # Strings + rule(/(?:[\w]+)"/,Str, :rdqs) + rule(/"""/, Str, :tdqs) + rule(/"/, Str, :dqs) + + # Char + rule(/'/, Str::Char, :chars) + + # Keywords + rule(%r[(#{Nim.underscorize(OPWORDS)})\b], Operator::Word) + rule(/(p_?r_?o_?c_?\s)(?![\(\[\]])/, Keyword, :funcname) + rule(%r[(#{Nim.underscorize(KEYWORDS)})\b], Keyword) + rule(%r[(#{Nim.underscorize(NAMESPACE)})\b], Keyword::Namespace) + rule(/(v_?a_?r)\b/, Keyword::Declaration) + rule(%r[(#{Nim.underscorize(TYPES)})\b], Keyword::Type) + rule(%r[(#{Nim.underscorize(PSEUDOKEYWORDS)})\b], Keyword::Pseudo) + # Identifiers + rule(/\b((?![_\d])\w)(((?!_)\w)|(_(?!_)\w))*/, Name) + + # Numbers + # Note: Have to do this with a block to push multiple states first, + # since we can't pass array of states like w/ Pygments. + rule(/[0-9][0-9_]*(?=([eE.]|'?[fF](32|64)))/) do |number| + push :floatsuffix + push :floatnumber + token Num::Float + end + rule(/0[xX][a-fA-F0-9][a-fA-F0-9_]*/, Num::Hex, :intsuffix) + rule(/0[bB][01][01_]*/, Num, :intsuffix) + rule(/0o[0-7][0-7_]*/, Num::Oct, :intsuffix) + rule(/[0-9][0-9_]*/, Num::Integer, :intsuffix) + + # Whitespace + rule(/\s+/, Text) + rule(/.+$/, Error) + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nix.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nix.rb new file mode 100644 index 0000000000..d357068877 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/nix.rb @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Nix < RegexLexer + title 'Nix' + desc 'The Nix expression language (https://nixos.org/nix/manual/#ch-expression-language)' + tag 'nix' + aliases 'nixos' + filenames '*.nix' + + state :whitespaces do + rule /^\s*\n\s*$/m, Text + rule /\s+/, Text + end + + state :comment do + rule /#.*$/, Comment + rule /\/\*/, Comment, :multiline_comment + end + + state :multiline_comment do + rule /\*\//, Comment, :pop! + rule /./, Comment + end + + state :number do + rule /[0-9]/, Num::Integer + end + + state :null do + rule /(null)/, Keyword::Constant + end + + state :boolean do + rule /(true|false)/, Keyword::Constant + end + + state :binding do + rule /[a-zA-Z_][a-zA-Z0-9-]*/, Name::Variable + end + + state :path do + word = "[a-zA-Z0-9\._-]+" + section = "(\/#{word})" + prefix = "[a-z\+]+:\/\/" + root = /#{section}+/.source + tilde = /~#{section}+/.source + basic = /#{word}(\/#{word})+/.source + url = /#{prefix}(\/?#{basic})/.source + rule /(#{root}|#{tilde}|#{basic}|#{url})/, Str::Other + end + + state :string do + rule /"/, Str::Double, :double_quoted_string + rule /''/, Str::Double, :indented_string + end + + state :string_content do + rule /\\./, Str::Escape + rule /\$\$/, Str::Escape + rule /\${/, Str::Interpol, :string_interpolated_arg + end + + state :indented_string_content do + rule /'''/, Str::Escape + rule /''\$/, Str::Escape + rule /\$\$/, Str::Escape + rule /''\\./, Str::Escape + rule /\${/, Str::Interpol, :string_interpolated_arg + end + + state :string_interpolated_arg do + mixin :expression + rule /}/, Str::Interpol, :pop! + end + + state :indented_string do + mixin :indented_string_content + rule /''/, Str::Double, :pop! + rule /./, Str::Double + end + + state :double_quoted_string do + mixin :string_content + rule /"/, Str::Double, :pop! + rule /./, Str::Double + end + + state :operator do + rule /(\.|\?|\+\+|\+|!=|!|\/\/|\=\=|&&|\|\||->|\/|\*|-|<|>|<=|=>)/, Operator + end + + state :assignment do + rule /(=)/, Operator + rule /(@)/, Operator + end + + state :accessor do + rule /(\$)/, Punctuation + end + + state :delimiter do + rule /(;|,|:)/, Punctuation + end + + state :atom_content do + mixin :expression + rule /\)/, Punctuation, :pop! + end + + state :atom do + rule /\(/, Punctuation, :atom_content + end + + state :list do + rule /\[/, Punctuation, :list_content + end + + state :list_content do + rule /\]/, Punctuation, :pop! + mixin :expression + end + + state :set do + rule /{/, Punctuation, :set_content + end + + state :set_content do + rule /}/, Punctuation, :pop! + mixin :expression + end + + state :expression do + mixin :ignore + mixin :comment + mixin :boolean + mixin :null + mixin :number + mixin :path + mixin :string + mixin :keywords + mixin :operator + mixin :accessor + mixin :assignment + mixin :delimiter + mixin :binding + mixin :atom + mixin :set + mixin :list + end + + state :keywords do + mixin :keywords_namespace + mixin :keywords_declaration + mixin :keywords_conditional + mixin :keywords_reserved + mixin :keywords_builtin + end + + state :keywords_namespace do + keywords = %w(with in inherit) + rule /(?:#{keywords.join('|')})\b/, Keyword::Namespace + end + + state :keywords_declaration do + keywords = %w(let) + rule /(?:#{keywords.join('|')})\b/, Keyword::Declaration + end + + state :keywords_conditional do + keywords = %w(if then else) + rule /(?:#{keywords.join('|')})\b/, Keyword + end + + state :keywords_reserved do + keywords = %w(rec assert map) + rule /(?:#{keywords.join('|')})\b/, Keyword::Reserved + end + + state :keywords_builtin do + keywords = %w( + abort + baseNameOf + builtins + derivation + fetchTarball + import + isNull + removeAttrs + throw + toString + ) + rule /(?:#{keywords.join('|')})\b/, Keyword::Reserved + end + + state :ignore do + mixin :whitespaces + end + + state :root do + mixin :ignore + mixin :expression + end + + start do + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/objective_c.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/objective_c.rb new file mode 100644 index 0000000000..63f23351d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/objective_c.rb @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'c.rb' + + class ObjectiveC < C + tag 'objective_c' + title "Objective-C" + desc 'an extension of C commonly used to write Apple software' + aliases 'objc', 'obj-c', 'obj_c', 'objectivec' + filenames '*.m', '*.h' + + mimetypes 'text/x-objective_c', 'application/x-objective_c' + + def self.at_keywords + @at_keywords ||= %w( + selector private protected public encode synchronized try + throw catch finally end property synthesize dynamic optional + interface implementation import + ) + end + + def self.at_builtins + @at_builtins ||= %w(true false YES NO) + end + + def self.builtins + @builtins ||= %w(YES NO nil) + end + + id = /[a-z$_][a-z0-9$_]*/i + + prepend :statements do + rule /@"/, Str, :string + rule /@'(\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|\\.|[^\\'\n]')/, + Str::Char + rule /@(\d+[.]\d*|[.]\d+|\d+)e[+-]?\d+l?/i, + Num::Float + rule /@(\d+[.]\d*|[.]\d+|\d+f)f?/i, Num::Float + rule /@0x\h+[lL]?/, Num::Hex + rule /@0[0-7]+l?/i, Num::Oct + rule /@\d+l?/, Num::Integer + rule /\bin\b/, Keyword + + rule /@(?:interface|implementation)\b/ do + token Keyword + goto :classname + end + + rule /@(?:class|protocol)\b/ do + token Keyword + goto :forward_classname + end + + rule /@([[:alnum:]]+)/ do |m| + if self.class.at_keywords.include? m[1] + token Keyword + elsif self.class.at_builtins.include? m[1] + token Name::Builtin + else + token Error + end + end + + rule /[?]/, Punctuation, :ternary + rule /\[/, Punctuation, :message + rule /@\[/, Punctuation, :array_literal + rule /@\{/, Punctuation, :dictionary_literal + end + + state :ternary do + rule /:/, Punctuation, :pop! + mixin :statements + end + + state :message_shared do + rule /\]/, Punctuation, :pop! + rule /\{/, Punctuation, :pop! + rule /;/, Error + + mixin :statement + end + + state :message do + rule /(#{id})(\s*)(:)/ do + groups(Name::Function, Text, Punctuation) + goto :message_with_args + end + + rule /(#{id})(\s*)(\])/ do + groups(Name::Function, Text, Punctuation) + pop! + end + + mixin :message_shared + end + + state :message_with_args do + rule /\{/, Punctuation, :function + rule /(#{id})(\s*)(:)/ do + groups(Name::Function, Text, Punctuation) + pop! + end + + mixin :message_shared + end + + state :array_literal do + rule /]/, Punctuation, :pop! + rule /,/, Punctuation + mixin :statements + end + + state :dictionary_literal do + rule /}/, Punctuation, :pop! + rule /,/, Punctuation + mixin :statements + end + + state :classname do + mixin :whitespace + + rule /(#{id})(\s*)(:)(\s*)(#{id})/ do + groups(Name::Class, Text, + Punctuation, Text, + Name::Class) + pop! + end + + rule /(#{id})(\s*)([(])(\s*)(#{id})(\s*)([)])/ do + groups(Name::Class, Text, + Punctuation, Text, + Name::Label, Text, + Punctuation) + pop! + end + + rule id, Name::Class, :pop! + end + + state :forward_classname do + mixin :whitespace + + rule /(#{id})(\s*)(,)(\s*)/ do + groups(Name::Class, Text, Punctuation, Text) + push + end + + rule /(#{id})(\s*)(;?)/ do + groups(Name::Class, Text, Punctuation) + pop! + end + end + + prepend :root do + rule %r( + ([-+])(\s*) + ([(].*?[)])?(\s*) + (?=#{id}:?) + )ix do |m| + token Keyword, m[1]; token Text, m[2] + recurse m[3]; token Text, m[4] + push :method_definition + end + end + + state :method_definition do + rule /,/, Punctuation + rule /[.][.][.]/, Punctuation + rule /([(].*?[)])(#{id})/ do |m| + recurse m[1]; token Name::Variable, m[2] + end + + rule /(#{id})(\s*)(:)/m do + groups(Name::Function, Text, Punctuation) + end + + rule /;/, Punctuation, :pop! + + rule /{/ do + token Punctuation + goto :function + end + + mixin :inline_whitespace + rule %r(//.*?\n), Comment::Single + rule /\s+/m, Text + + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ocaml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ocaml.rb new file mode 100644 index 0000000000..0284dae228 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ocaml.rb @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class OCaml < RegexLexer + title "OCaml" + desc 'Objective Caml (ocaml.org)' + tag 'ocaml' + filenames '*.ml', '*.mli', '*.mll', '*.mly' + mimetypes 'text/x-ocaml' + + def self.keywords + @keywords ||= Set.new %w( + as assert begin class constraint do done downto else end + exception external false for fun function functor if in include + inherit initializer lazy let match method module mutable new + nonrec object of open private raise rec sig struct then to true + try type val virtual when while with + ) + end + + def self.word_operators + @word_operators ||= Set.new %w(and asr land lor lsl lxor mod or) + end + + def self.primitives + @primitives ||= Set.new %w(unit int float bool string char list array) + end + + operator = %r([;,_!$%&*+./:<=>?@^|~#-]+) + id = /[a-z_][\w']*/i + upper_id = /[A-Z][\w']*/ + + state :root do + rule /\s+/m, Text + rule /false|true|[(][)]|\[\]/, Name::Builtin::Pseudo + rule /#{upper_id}(?=\s*[.])/, Name::Namespace, :dotted + rule /`#{id}/, Name::Tag + rule upper_id, Name::Class + rule /[(][*](?![)])/, Comment, :comment + rule id do |m| + match = m[0] + if self.class.keywords.include? match + token Keyword + elsif self.class.word_operators.include? match + token Operator::Word + elsif self.class.primitives.include? match + token Keyword::Type + else + token Name + end + end + + rule /[(){}\[\];]+/, Punctuation + rule operator, Operator + + rule /-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float + rule /0x\h[\h_]*/i, Num::Hex + rule /0o[0-7][0-7_]*/i, Num::Oct + rule /0b[01][01_]*/i, Num::Bin + rule /\d[\d_]*/, Num::Integer + + rule /'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char + rule /'[.]'/, Str::Char + rule /'/, Keyword + rule /"/, Str::Double, :string + rule /[~?]#{id}/, Name::Variable + end + + state :comment do + rule /[^(*)]+/, Comment + rule(/[(][*]/) { token Comment; push } + rule /[*][)]/, Comment, :pop! + rule /[(*)]/, Comment + end + + state :string do + rule /[^\\"]+/, Str::Double + mixin :escape_sequence + rule /\\\n/, Str::Double + rule /"/, Str::Double, :pop! + end + + state :escape_sequence do + rule /\\[\\"'ntbr]/, Str::Escape + rule /\\\d{3}/, Str::Escape + rule /\\x\h{2}/, Str::Escape + end + + state :dotted do + rule /\s+/m, Text + rule /[.]/, Punctuation + rule /#{upper_id}(?=\s*[.])/, Name::Namespace + rule upper_id, Name::Class, :pop! + rule id, Name, :pop! + rule /[({\[]/, Punctuation, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pascal.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pascal.rb new file mode 100644 index 0000000000..e6f4067be4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pascal.rb @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Pascal < RegexLexer + tag 'pascal' + title "Pascal" + desc 'a procedural programming language commonly used as a teaching language.' + filenames '*.pas' + + mimetypes 'text/x-pascal' + + id = /@?[_a-z]\w*/i + + keywords = %w( + absolute abstract all and and_then array as asm assembler attribute + begin bindable case class const constructor delay destructor div do + downto else end except exit export exports external far file finalization + finally for forward function goto if implementation import in inc index + inherited initialization inline interface interrupt is label library + message mod module near nil not object of on only operator or or_else + otherwise out overload override packed pascal pow private procedure program + property protected public published qualified raise read record register + repeat resident resourcestring restricted safecall segment set shl shr + stdcall stored string then threadvar to try type unit until uses value var + view virtual while with write writeln xor + ) + + keywords_type = %w( + ansichar ansistring bool boolean byte bytebool cardinal char comp currency + double dword extended int64 integer iunknown longbool longint longword pansichar + pansistring pbool pboolean pbyte pbytearray pcardinal pchar pcomp pcurrency + pdate pdatetime pdouble pdword pextended phandle pint64 pinteger plongint plongword + pointer ppointer pshortint pshortstring psingle psmallint pstring pvariant pwidechar + pwidestring pword pwordarray pwordbool real real48 shortint shortstring single + smallint string tclass tdate tdatetime textfile thandle tobject ttime variant + widechar widestring word wordbool + ) + + state :whitespace do + # Spaces + rule /\s+/m, Text + # // Comments + rule %r((//).*$\n?), Comment::Single + # -- Comments + rule %r((--).*$\n?), Comment::Single + # (* Comments *) + rule %r(\(\*.*?\*\))m, Comment::Multiline + # { Comments } + rule %r(\{.*?\})m, Comment::Multiline + end + + state :root do + mixin :whitespace + + rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num + rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation + rule %r{'([^']|'')*'}, Str + rule /(true|false|nil)\b/i, Name::Builtin + rule /\b(#{keywords.join('|')})\b/i, Keyword + rule /\b(#{keywords_type.join('|')})\b/i, Keyword::Type + rule id, Name + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/perl.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/perl.rb new file mode 100644 index 0000000000..2e0794e86f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/perl.rb @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Perl < RegexLexer + title "Perl" + desc "The Perl scripting language (perl.org)" + + tag 'perl' + aliases 'pl' + + filenames '*.pl', '*.pm', '*.t' + mimetypes 'text/x-perl', 'application/x-perl' + + def self.detect?(text) + return true if text.shebang? 'perl' + end + + keywords = %w( + case continue do else elsif for foreach if last my next our + redo reset then unless until while use print new BEGIN CHECK + INIT END return + ) + + builtins = %w( + abs accept alarm atan2 bind binmode bless caller chdir chmod + chomp chop chown chr chroot close closedir connect continue cos + crypt dbmclose dbmopen defined delete die dump each endgrent + endhostent endnetent endprotoent endpwent endservent eof eval + exec exists exit exp fcntl fileno flock fork format formline getc + getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent + getlogin getnetbyaddr getnetbyname getnetent getpeername + getpgrp getppid getpriority getprotobyname getprotobynumber + getprotoent getpwent getpwnam getpwuid getservbyname getservbyport + getservent getsockname getsockopt glob gmtime goto grep hex + import index int ioctl join keys kill last lc lcfirst length + link listen local localtime log lstat map mkdir msgctl msgget + msgrcv msgsnd my next no oct open opendir ord our pack package + pipe pop pos printf prototype push quotemeta rand read readdir + readline readlink readpipe recv redo ref rename require reverse + rewinddir rindex rmdir scalar seek seekdir select semctl semget + semop send setgrent sethostent setnetent setpgrp setpriority + setprotoent setpwent setservent setsockopt shift shmctl shmget + shmread shmwrite shutdown sin sleep socket socketpair sort splice + split sprintf sqrt srand stat study substr symlink syscall sysopen + sysread sysseek system syswrite tell telldir tie tied time times + tr truncate uc ucfirst umask undef unlink unpack unshift untie + utime values vec wait waitpid wantarray warn write + ) + + re_tok = Str::Regex + + state :balanced_regex do + rule %r(/(\\[\\/]|[^/])*/[egimosx]*)m, re_tok, :pop! + rule %r(!(\\[\\!]|[^!])*![egimosx]*)m, re_tok, :pop! + rule %r(\\(\\\\|[^\\])*\\[egimosx]*)m, re_tok, :pop! + rule %r({(\\[\\}]|[^}])*}[egimosx]*), re_tok, :pop! + rule %r(<(\\[\\>]|[^>])*>[egimosx]*), re_tok, :pop! + rule %r(\[(\\[\\\]]|[^\]])*\][egimosx]*), re_tok, :pop! + rule %r[\((\\[\\\)]|[^\)])*\)[egimosx]*], re_tok, :pop! + rule %r(@(\\[\\@]|[^@])*@[egimosx]*), re_tok, :pop! + rule %r(%(\\[\\%]|[^%])*%[egimosx]*), re_tok, :pop! + rule %r(\$(\\[\\\$]|[^\$])*\$[egimosx]*), re_tok, :pop! + end + + state :root do + rule /#.*?$/, Comment::Single + rule /^=[a-zA-Z0-9]+\s+.*?\n=cut/m, Comment::Multiline + rule /(?:#{keywords.join('|')})\b/, Keyword + + rule /(format)(\s+)([a-zA-Z0-9_]+)(\s*)(=)(\s*\n)/ do + groups Keyword, Text, Name, Text, Punctuation, Text + + push :format + end + + rule /(?:eq|lt|gt|le|ge|ne|not|and|or|cmp)\b/, Operator::Word + + # common delimiters + rule %r(s/(\\\\|\\/|[^/])*/(\\\\|\\/|[^/])*/[msixpodualngc]*), re_tok + rule %r(s!(\\\\|\\!|[^!])*!(\\\\|\\!|[^!])*![msixpodualngc]*), re_tok + rule %r(s\\(\\\\|[^\\])*\\(\\\\|[^\\])*\\[msixpodualngc]*), re_tok + rule %r(s@(\\\\|\\@|[^@])*@(\\\\|\\@|[^@])*@[msixpodualngc]*), re_tok + rule %r(s%(\\\\|\\%|[^%])*%(\\\\|\\%|[^%])*%[msixpodualngc]*), re_tok + + # balanced delimiters + rule %r(s{(\\\\|\\}|[^}])*}\s*), re_tok, :balanced_regex + rule %r(s<(\\\\|\\>|[^>])*>\s*), re_tok, :balanced_regex + rule %r(s\[(\\\\|\\\]|[^\]])*\]\s*), re_tok, :balanced_regex + rule %r[s\((\\\\|\\\)|[^\)])*\)\s*], re_tok, :balanced_regex + + rule %r(m?/(\\\\|\\/|[^/\n])*/[msixpodualngc]*), re_tok + rule %r(m(?=[/!\\{<\[\(@%\$])), re_tok, :balanced_regex + + # Perl allows any non-whitespace character to delimit + # a regex when `m` is used. + rule %r(m(\S).*\1[msixpodualngc]*), re_tok + rule %r(((?<==~)|(?<=\())\s*/(\\\\|\\/|[^/])*/[msixpodualngc]*), + re_tok, :balanced_regex + + rule /\s+/, Text + rule /(?:#{builtins.join('|')})\b/, Name::Builtin + rule /((__(DATA|DIE|WARN)__)|(STD(IN|OUT|ERR)))\b/, + Name::Builtin::Pseudo + + rule /<<([\'"]?)([a-zA-Z_][a-zA-Z0-9_]*)\1;?\n.*?\n\2\n/m, Str + + rule /__END__\b/, Comment::Preproc, :end_part + rule /\$\^[ADEFHILMOPSTWX]/, Name::Variable::Global + rule /\$[\\"'\[\]&`+*.,;=%~?@$!<>(^\|\/-](?!\w)/, Name::Variable::Global + rule /[-+\/*%=<>&^\|!\\~]=?/, Operator + rule /[$@%#]+/, Name::Variable, :varname + + rule /0_?[0-7]+(_[0-7]+)*/, Num::Oct + rule /0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*/, Num::Hex + rule /0b[01]+(_[01]+)*/, Num::Bin + rule /(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?/i, + Num::Float + rule /\d+(_\d*)*e[+-]?\d+(_\d*)*/i, Num::Float + rule /\d+(_\d+)*/, Num::Integer + + rule /'(\\\\|\\'|[^'])*'/, Str + rule /"(\\\\|\\"|[^"])*"/, Str + rule /`(\\\\|\\`|[^`])*`/, Str::Backtick + rule /<([^\s>]+)>/, re_tok + rule /(q|qq|qw|qr|qx)\{/, Str::Other, :cb_string + rule /(q|qq|qw|qr|qx)\(/, Str::Other, :rb_string + rule /(q|qq|qw|qr|qx)\[/, Str::Other, :sb_string + rule /(q|qq|qw|qr|qx)>|>=|<=|<=>|={3}|!=|=~|!~|&&?|\|\||\.{1,3}/, + Operator + rule /[()\[\]:;,<>\/?{}]/, Punctuation + rule(/(?=\w)/) { push :name } + end + + state :format do + rule /\.\n/, Str::Interpol, :pop! + rule /.*?\n/, Str::Interpol + end + + state :name_common do + rule /\w+::/, Name::Namespace + rule /[\w:]+/, Name::Variable, :pop! + end + + state :varname do + rule /\s+/, Text + rule /\{/, Punctuation, :pop! # hash syntax + rule /\)|,/, Punctuation, :pop! # arg specifier + mixin :name_common + end + + state :name do + mixin :name_common + rule /[A-Z_]+(?=[^a-zA-Z0-9_])/, Name::Constant, :pop! + rule(/(?=\W)/) { pop! } + end + + state :modulename do + rule /[a-z_]\w*/i, Name::Namespace, :pop! + end + + state :funcname do + rule /[a-zA-Z_]\w*[!?]?/, Name::Function + rule /\s+/, Text + + # argument declaration + rule /(\([$@%]*\))(\s*)/ do + groups Punctuation, Text + end + + rule /.*?{/, Punctuation, :pop! + rule /;/, Punctuation, :pop! + end + + [[:cb, '\{', '\}'], + [:rb, '\(', '\)'], + [:sb, '\[', '\]'], + [:lt, '<', '>']].each do |name, open, close| + tok = Str::Other + state :"#{name}_string" do + rule /\\[#{open}#{close}\\]/, tok + rule /\\/, tok + rule(/#{open}/) { token tok; push } + rule /#{close}/, tok, :pop! + rule /[^#{open}#{close}\\]+/, tok + end + end + + state :end_part do + # eat the rest of the stream + rule /.+/m, Comment::Preproc, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php.rb new file mode 100644 index 0000000000..10061fa642 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php.rb @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class PHP < TemplateLexer + title "PHP" + desc "The PHP scripting language (php.net)" + tag 'php' + aliases 'php', 'php3', 'php4', 'php5' + filenames '*.php', '*.php[345t]','*.phtml', + # Support Drupal file extensions, see: + # https://github.com/gitlabhq/gitlabhq/issues/8900 + '*.module', '*.inc', '*.profile', '*.install', '*.test' + mimetypes 'text/x-php' + + option :start_inline, 'Whether to start with inline php or require . (default: best guess)' + option :funcnamehighlighting, 'Whether to highlight builtin functions (default: true)' + option :disabledmodules, 'Disable certain modules from being highlighted as builtins (default: empty)' + + def initialize(*) + super + + # if truthy, the lexer starts highlighting with php code + # (no /, Comment::Preproc, :pop! + # heredocs + rule /<<<('?)(#{id})\1\n.*?\n\2;?\n/im, Str::Heredoc + rule /\s+/, Text + rule /#.*?$/, Comment::Single + rule %r(//.*?$), Comment::Single + # empty comment, otherwise seen as the start of a docstring + rule %r(/\*\*/), Comment::Multiline + rule %r(/\*\*.*?\*/)m, Str::Doc + rule %r(/\*.*?\*/)m, Comment::Multiline + rule /(->|::)(\s*)(#{id})/ do + groups Operator, Text, Name::Attribute + end + + rule /[~!%^&*+=\|:.<>\/?@-]+/, Operator + rule /[\[\]{}();,]/, Punctuation + rule /class\b/, Keyword, :classname + # anonymous functions + rule /(function)(\s*)(?=\()/ do + groups Keyword, Text + end + + # named functions + rule /(function)(\s+)(&?)(\s*)/ do + groups Keyword, Text, Operator, Text + push :funcname + end + + rule /(const)(\s+)(#{id})/i do + groups Keyword, Text, Name::Constant + end + + rule /(true|false|null)\b/, Keyword::Constant + rule /\$\{\$+#{id}\}/i, Name::Variable + rule /\$+#{id}/i, Name::Variable + + # may be intercepted for builtin highlighting + rule /\\?#{nsid}/i do |m| + name = m[0] + + if self.class.keywords.include? name + token Keyword + elsif self.builtins.include? name + token Name::Builtin + else + token Name::Other + end + end + + rule /(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?/i, Num::Float + rule /\d+e[+-]?\d+/i, Num::Float + rule /0[0-7]+/, Num::Oct + rule /0x[a-f0-9]+/i, Num::Hex + rule /\d+/, Num::Integer + rule /'([^'\\]*(?:\\.[^'\\]*)*)'/, Str::Single + rule /`([^`\\]*(?:\\.[^`\\]*)*)`/, Str::Backtick + rule /"/, Str::Double, :string + end + + state :classname do + rule /\s+/, Text + rule /#{nsid}/, Name::Class, :pop! + end + + state :funcname do + rule /#{id}/, Name::Function, :pop! + end + + state :string do + rule /"/, Str::Double, :pop! + rule /[^\\{$"]+/, Str::Double + rule /\\([nrt\"$\\]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})/, + Str::Escape + rule /\$#{id}(\[\S+\]|->#{id})?/, Name::Variable + + rule /\{\$\{/, Str::Interpol, :interp_double + rule /\{(?=\$)/, Str::Interpol, :interp_single + rule /(\{)(\S+)(\})/ do + groups Str::Interpol, Name::Variable, Str::Interpol + end + + rule /[${\\]+/, Str::Double + end + + state :interp_double do + rule /\}\}/, Str::Interpol, :pop! + mixin :php + end + + state :interp_single do + rule /\}/, Str::Interpol, :pop! + mixin :php + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php/builtins.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php/builtins.rb new file mode 100644 index 0000000000..d9db725156 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/php/builtins.rb @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# automatically generated by `rake builtins:php` +module Rouge + module Lexers + class PHP + def self.builtins + @builtins ||= {}.tap do |b| + b["Apache"] = Set.new %w(apache_child_terminate apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_reset_timeout apache_response_headers apache_setenv getallheaders virtual apache_child_terminate) + b["APC"] = Set.new %w(apc_add apc_add apc_bin_dump apc_bin_dumpfile apc_bin_load apc_bin_loadfile apc_cache_info apc_cas apc_clear_cache apc_compile_file apc_dec apc_define_constants apc_delete_file apc_delete apc_exists apc_fetch apc_inc apc_load_constants apc_sma_info apc_store apc_add) + b["APCu"] = Set.new %w(apcu_add apcu_add apcu_cache_info apcu_cas apcu_clear_cache apcu_dec apcu_delete apcu_entry apcu_exists apcu_fetch apcu_inc apcu_sma_info apcu_store apcu_add) + b["APD"] = Set.new %w(apd_breakpoint apd_breakpoint apd_callstack apd_clunk apd_continue apd_croak apd_dump_function_table apd_dump_persistent_resources apd_dump_regular_resources apd_echo apd_get_active_symbols apd_set_pprof_trace apd_set_session_trace_socket apd_set_session_trace apd_set_session override_function rename_function apd_breakpoint) + b["Array"] = Set.new %w(array_change_key_case array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk array arsort asort compact count current each end extract in_array key_exists key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort array_change_key_case) + b["BBCode"] = Set.new %w(bbcode_add_element bbcode_add_element bbcode_add_smiley bbcode_create bbcode_destroy bbcode_parse bbcode_set_arg_parser bbcode_set_flags bbcode_add_element) + b["BC Math"] = Set.new %w(bcadd bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bcadd) + b["bcompiler"] = Set.new %w(bcompiler_load_exe bcompiler_load_exe bcompiler_load bcompiler_parse_class bcompiler_read bcompiler_write_class bcompiler_write_constant bcompiler_write_exe_footer bcompiler_write_file bcompiler_write_footer bcompiler_write_function bcompiler_write_functions_from_file bcompiler_write_header bcompiler_write_included_filename bcompiler_load_exe) + b["Blenc"] = Set.new %w(blenc_encrypt blenc_encrypt blenc_encrypt) + b["Bzip2"] = Set.new %w(bzclose bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite bzclose) + b["Cairo"] = Set.new %w(cairo_create cairo_create cairo_font_face_get_type cairo_font_face_status cairo_font_options_create cairo_font_options_equal cairo_font_options_get_antialias cairo_font_options_get_hint_metrics cairo_font_options_get_hint_style cairo_font_options_get_subpixel_order cairo_font_options_hash cairo_font_options_merge cairo_font_options_set_antialias cairo_font_options_set_hint_metrics cairo_font_options_set_hint_style cairo_font_options_set_subpixel_order cairo_font_options_status cairo_format_stride_for_width cairo_image_surface_create_for_data cairo_image_surface_create_from_png cairo_image_surface_create cairo_image_surface_get_data cairo_image_surface_get_format cairo_image_surface_get_height cairo_image_surface_get_stride cairo_image_surface_get_width cairo_matrix_create_scale cairo_matrix_create_translate cairo_matrix_invert cairo_matrix_multiply cairo_matrix_rotate cairo_matrix_transform_distance cairo_matrix_transform_point cairo_matrix_translate cairo_pattern_add_color_stop_rgb cairo_pattern_add_color_stop_rgba cairo_pattern_create_for_surface cairo_pattern_create_linear cairo_pattern_create_radial cairo_pattern_create_rgb cairo_pattern_create_rgba cairo_pattern_get_color_stop_count cairo_pattern_get_color_stop_rgba cairo_pattern_get_extend cairo_pattern_get_filter cairo_pattern_get_linear_points cairo_pattern_get_matrix cairo_pattern_get_radial_circles cairo_pattern_get_rgba cairo_pattern_get_surface cairo_pattern_get_type cairo_pattern_set_extend cairo_pattern_set_filter cairo_pattern_set_matrix cairo_pattern_status cairo_pdf_surface_create cairo_pdf_surface_set_size cairo_ps_get_levels cairo_ps_level_to_string cairo_ps_surface_create cairo_ps_surface_dsc_begin_page_setup cairo_ps_surface_dsc_begin_setup cairo_ps_surface_dsc_comment cairo_ps_surface_get_eps cairo_ps_surface_restrict_to_level cairo_ps_surface_set_eps cairo_ps_surface_set_size cairo_scaled_font_create cairo_scaled_font_extents cairo_scaled_font_get_ctm cairo_scaled_font_get_font_face cairo_scaled_font_get_font_matrix cairo_scaled_font_get_font_options cairo_scaled_font_get_scale_matrix cairo_scaled_font_get_type cairo_scaled_font_glyph_extents cairo_scaled_font_status cairo_scaled_font_text_extents cairo_surface_copy_page cairo_surface_create_similar cairo_surface_finish cairo_surface_flush cairo_surface_get_content cairo_surface_get_device_offset cairo_surface_get_font_options cairo_surface_get_type cairo_surface_mark_dirty_rectangle cairo_surface_mark_dirty cairo_surface_set_device_offset cairo_surface_set_fallback_resolution cairo_surface_show_page cairo_surface_status cairo_surface_write_to_png cairo_svg_surface_create cairo_svg_surface_restrict_to_version cairo_svg_version_to_string cairo_create) + b["Calendar"] = Set.new %w(cal_days_in_month cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd cal_days_in_month) + b["chdb"] = Set.new %w(chdb_create chdb_create chdb_create) + b["Classkit"] = Set.new %w(classkit_import classkit_import classkit_method_add classkit_method_copy classkit_method_redefine classkit_method_remove classkit_method_rename classkit_import) + b["Classes/Object"] = Set.new %w(__autoload __autoload call_user_method_array call_user_method class_alias class_exists get_called_class get_class_methods get_class_vars get_class get_declared_classes get_declared_interfaces get_declared_traits get_object_vars get_parent_class interface_exists is_a is_subclass_of method_exists property_exists trait_exists __autoload) + b["COM"] = Set.new %w(com_create_guid com_create_guid com_event_sink com_get_active_object com_load_typelib com_message_pump com_print_typeinfo variant_abs variant_add variant_and variant_cast variant_cat variant_cmp variant_date_from_timestamp variant_date_to_timestamp variant_div variant_eqv variant_fix variant_get_type variant_idiv variant_imp variant_int variant_mod variant_mul variant_neg variant_not variant_or variant_pow variant_round variant_set_type variant_set variant_sub variant_xor com_create_guid) + b["Crack"] = Set.new %w(crack_check crack_check crack_closedict crack_getlastmessage crack_opendict crack_check) + b["CSPRNG"] = Set.new %w(random_bytes random_bytes random_int random_bytes) + b["Ctype"] = Set.new %w(ctype_alnum ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit ctype_alnum) + b["CUBRID"] = Set.new %w(cubrid_bind cubrid_bind cubrid_close_prepare cubrid_close_request cubrid_col_get cubrid_col_size cubrid_column_names cubrid_column_types cubrid_commit cubrid_connect_with_url cubrid_connect cubrid_current_oid cubrid_disconnect cubrid_drop cubrid_error_code_facility cubrid_error_code cubrid_error_msg cubrid_execute cubrid_fetch cubrid_free_result cubrid_get_autocommit cubrid_get_charset cubrid_get_class_name cubrid_get_client_info cubrid_get_db_parameter cubrid_get_query_timeout cubrid_get_server_info cubrid_get cubrid_insert_id cubrid_is_instance cubrid_lob_close cubrid_lob_export cubrid_lob_get cubrid_lob_send cubrid_lob_size cubrid_lob2_bind cubrid_lob2_close cubrid_lob2_export cubrid_lob2_import cubrid_lob2_new cubrid_lob2_read cubrid_lob2_seek64 cubrid_lob2_seek cubrid_lob2_size64 cubrid_lob2_size cubrid_lob2_tell64 cubrid_lob2_tell cubrid_lob2_write cubrid_lock_read cubrid_lock_write cubrid_move_cursor cubrid_next_result cubrid_num_cols cubrid_num_rows cubrid_pconnect_with_url cubrid_pconnect cubrid_prepare cubrid_put cubrid_rollback cubrid_schema cubrid_seq_drop cubrid_seq_insert cubrid_seq_put cubrid_set_add cubrid_set_autocommit cubrid_set_db_parameter cubrid_set_drop cubrid_set_query_timeout cubrid_version cubrid_bind) + b["cURL"] = Set.new %w(curl_close curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version curl_close) + b["Cyrus"] = Set.new %w(cyrus_authenticate cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind cyrus_authenticate) + b["Date/Time"] = Set.new %w(checkdate checkdate date_add date_create_from_format date_create_immutable_from_format date_create_immutable date_create date_date_set date_default_timezone_get date_default_timezone_set date_diff date_format date_get_last_errors date_interval_create_from_date_string date_interval_format date_isodate_set date_modify date_offset_get date_parse_from_format date_parse date_sub date_sun_info date_sunrise date_sunset date_time_set date_timestamp_get date_timestamp_set date_timezone_get date_timezone_set date getdate gettimeofday gmdate gmmktime gmstrftime idate localtime microtime mktime strftime strptime strtotime time timezone_abbreviations_list timezone_identifiers_list timezone_location_get timezone_name_from_abbr timezone_name_get timezone_offset_get timezone_open timezone_transitions_get timezone_version_get checkdate) + b["DBA"] = Set.new %w(dba_close dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync dba_close) + b["dBase"] = Set.new %w(dbase_add_record dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record dbase_add_record) + b["DB++"] = Set.new %w(dbplus_add dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel dbplus_add) + b["dbx"] = Set.new %w(dbx_close dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort dbx_close) + b["Direct IO"] = Set.new %w(dio_close dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write dio_close) + b["Directory"] = Set.new %w(chdir chdir chroot closedir dir getcwd opendir readdir rewinddir scandir chdir) + b["DOM"] = Set.new %w(dom_import_simplexml dom_import_simplexml dom_import_simplexml) + b["Eio"] = Set.new %w(eio_busy eio_busy eio_cancel eio_chmod eio_chown eio_close eio_custom eio_dup2 eio_event_loop eio_fallocate eio_fchmod eio_fchown eio_fdatasync eio_fstat eio_fstatvfs eio_fsync eio_ftruncate eio_futime eio_get_event_stream eio_get_last_error eio_grp_add eio_grp_cancel eio_grp_limit eio_grp eio_init eio_link eio_lstat eio_mkdir eio_mknod eio_nop eio_npending eio_nready eio_nreqs eio_nthreads eio_open eio_poll eio_read eio_readahead eio_readdir eio_readlink eio_realpath eio_rename eio_rmdir eio_seek eio_sendfile eio_set_max_idle eio_set_max_parallel eio_set_max_poll_reqs eio_set_max_poll_time eio_set_min_parallel eio_stat eio_statvfs eio_symlink eio_sync_file_range eio_sync eio_syncfs eio_truncate eio_unlink eio_utime eio_write eio_busy) + b["Enchant"] = Set.new %w(enchant_broker_describe enchant_broker_describe enchant_broker_dict_exists enchant_broker_free_dict enchant_broker_free enchant_broker_get_dict_path enchant_broker_get_error enchant_broker_init enchant_broker_list_dicts enchant_broker_request_dict enchant_broker_request_pwl_dict enchant_broker_set_dict_path enchant_broker_set_ordering enchant_dict_add_to_personal enchant_dict_add_to_session enchant_dict_check enchant_dict_describe enchant_dict_get_error enchant_dict_is_in_session enchant_dict_quick_check enchant_dict_store_replacement enchant_dict_suggest enchant_broker_describe) + b["Error Handling"] = Set.new %w(debug_backtrace debug_backtrace debug_print_backtrace error_clear_last error_get_last error_log error_reporting restore_error_handler restore_exception_handler set_error_handler set_exception_handler trigger_error user_error debug_backtrace) + b["Program execution"] = Set.new %w(escapeshellarg escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system escapeshellarg) + b["Exif"] = Set.new %w(exif_imagetype exif_imagetype exif_read_data exif_tagname exif_thumbnail read_exif_data exif_imagetype) + b["Expect"] = Set.new %w(expect_expectl expect_expectl expect_popen expect_expectl) + b["FAM"] = Set.new %w(fam_cancel_monitor fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor fam_cancel_monitor) + b["Fann"] = Set.new %w(fann_cascadetrain_on_data fann_cascadetrain_on_data fann_cascadetrain_on_file fann_clear_scaling_params fann_copy fann_create_from_file fann_create_shortcut_array fann_create_shortcut fann_create_sparse_array fann_create_sparse fann_create_standard_array fann_create_standard fann_create_train_from_callback fann_create_train fann_descale_input fann_descale_output fann_descale_train fann_destroy_train fann_destroy fann_duplicate_train_data fann_get_activation_function fann_get_activation_steepness fann_get_bias_array fann_get_bit_fail_limit fann_get_bit_fail fann_get_cascade_activation_functions_count fann_get_cascade_activation_functions fann_get_cascade_activation_steepnesses_count fann_get_cascade_activation_steepnesses fann_get_cascade_candidate_change_fraction fann_get_cascade_candidate_limit fann_get_cascade_candidate_stagnation_epochs fann_get_cascade_max_cand_epochs fann_get_cascade_max_out_epochs fann_get_cascade_min_cand_epochs fann_get_cascade_min_out_epochs fann_get_cascade_num_candidate_groups fann_get_cascade_num_candidates fann_get_cascade_output_change_fraction fann_get_cascade_output_stagnation_epochs fann_get_cascade_weight_multiplier fann_get_connection_array fann_get_connection_rate fann_get_errno fann_get_errstr fann_get_layer_array fann_get_learning_momentum fann_get_learning_rate fann_get_MSE fann_get_network_type fann_get_num_input fann_get_num_layers fann_get_num_output fann_get_quickprop_decay fann_get_quickprop_mu fann_get_rprop_decrease_factor fann_get_rprop_delta_max fann_get_rprop_delta_min fann_get_rprop_delta_zero fann_get_rprop_increase_factor fann_get_sarprop_step_error_shift fann_get_sarprop_step_error_threshold_factor fann_get_sarprop_temperature fann_get_sarprop_weight_decay_shift fann_get_total_connections fann_get_total_neurons fann_get_train_error_function fann_get_train_stop_function fann_get_training_algorithm fann_init_weights fann_length_train_data fann_merge_train_data fann_num_input_train_data fann_num_output_train_data fann_print_error fann_randomize_weights fann_read_train_from_file fann_reset_errno fann_reset_errstr fann_reset_MSE fann_run fann_save_train fann_save fann_scale_input_train_data fann_scale_input fann_scale_output_train_data fann_scale_output fann_scale_train_data fann_scale_train fann_set_activation_function_hidden fann_set_activation_function_layer fann_set_activation_function_output fann_set_activation_function fann_set_activation_steepness_hidden fann_set_activation_steepness_layer fann_set_activation_steepness_output fann_set_activation_steepness fann_set_bit_fail_limit fann_set_callback fann_set_cascade_activation_functions fann_set_cascade_activation_steepnesses fann_set_cascade_candidate_change_fraction fann_set_cascade_candidate_limit fann_set_cascade_candidate_stagnation_epochs fann_set_cascade_max_cand_epochs fann_set_cascade_max_out_epochs fann_set_cascade_min_cand_epochs fann_set_cascade_min_out_epochs fann_set_cascade_num_candidate_groups fann_set_cascade_output_change_fraction fann_set_cascade_output_stagnation_epochs fann_set_cascade_weight_multiplier fann_set_error_log fann_set_input_scaling_params fann_set_learning_momentum fann_set_learning_rate fann_set_output_scaling_params fann_set_quickprop_decay fann_set_quickprop_mu fann_set_rprop_decrease_factor fann_set_rprop_delta_max fann_set_rprop_delta_min fann_set_rprop_delta_zero fann_set_rprop_increase_factor fann_set_sarprop_step_error_shift fann_set_sarprop_step_error_threshold_factor fann_set_sarprop_temperature fann_set_sarprop_weight_decay_shift fann_set_scaling_params fann_set_train_error_function fann_set_train_stop_function fann_set_training_algorithm fann_set_weight_array fann_set_weight fann_shuffle_train_data fann_subset_train_data fann_test_data fann_test fann_train_epoch fann_train_on_data fann_train_on_file fann_train fann_cascadetrain_on_data) + b["FrontBase"] = Set.new %w(fbsql_affected_rows fbsql_affected_rows fbsql_autocommit fbsql_blob_size fbsql_change_user fbsql_clob_size fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_rows_fetched fbsql_select_db fbsql_set_characterset fbsql_set_lob_mode fbsql_set_password fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_table_name fbsql_tablename fbsql_username fbsql_warnings fbsql_affected_rows) + b["FDF"] = Set.new %w(fdf_add_doc_javascript fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_on_import_javascript fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version fdf_add_doc_javascript) + b["Fileinfo"] = Set.new %w(finfo_buffer finfo_buffer finfo_close finfo_file finfo_open finfo_set_flags mime_content_type finfo_buffer) + b["filePro"] = Set.new %w(filepro_fieldcount filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro filepro_fieldcount) + b["Filesystem"] = Set.new %w(basename basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file parse_ini_string pathinfo pclose popen readfile readlink realpath_cache_get realpath_cache_size realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink basename) + b["Filter"] = Set.new %w(filter_has_var filter_has_var filter_id filter_input_array filter_input filter_list filter_var_array filter_var filter_has_var) + b["FPM"] = Set.new %w(fastcgi_finish_request fastcgi_finish_request fastcgi_finish_request) + b["FriBiDi"] = Set.new %w(fribidi_log2vis fribidi_log2vis fribidi_log2vis) + b["FTP"] = Set.new %w(ftp_alloc ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype ftp_alloc) + b["Function handling"] = Set.new %w(call_user_func_array call_user_func_array call_user_func create_function forward_static_call_array forward_static_call func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function call_user_func_array) + b["GeoIP"] = Set.new %w(geoip_asnum_by_name geoip_asnum_by_name geoip_continent_code_by_name geoip_country_code_by_name geoip_country_code3_by_name geoip_country_name_by_name geoip_database_info geoip_db_avail geoip_db_filename geoip_db_get_all_info geoip_domain_by_name geoip_id_by_name geoip_isp_by_name geoip_netspeedcell_by_name geoip_org_by_name geoip_record_by_name geoip_region_by_name geoip_region_name_by_code geoip_setup_custom_directory geoip_time_zone_by_country_and_region geoip_asnum_by_name) + b["Gettext"] = Set.new %w(bind_textdomain_codeset bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain bind_textdomain_codeset) + b["GMP"] = Set.new %w(gmp_abs gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_export gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_import gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_nextprime gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random_bits gmp_random_range gmp_random_seed gmp_random gmp_root gmp_rootrem gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_strval gmp_sub gmp_testbit gmp_xor gmp_abs) + b["GnuPG"] = Set.new %w(gnupg_adddecryptkey gnupg_adddecryptkey gnupg_addencryptkey gnupg_addsignkey gnupg_cleardecryptkeys gnupg_clearencryptkeys gnupg_clearsignkeys gnupg_decrypt gnupg_decryptverify gnupg_encrypt gnupg_encryptsign gnupg_export gnupg_geterror gnupg_getprotocol gnupg_import gnupg_init gnupg_keyinfo gnupg_setarmor gnupg_seterrormode gnupg_setsignmode gnupg_sign gnupg_verify gnupg_adddecryptkey) + b["Gupnp"] = Set.new %w(gupnp_context_get_host_ip gupnp_context_get_host_ip gupnp_context_get_port gupnp_context_get_subscription_timeout gupnp_context_host_path gupnp_context_new gupnp_context_set_subscription_timeout gupnp_context_timeout_add gupnp_context_unhost_path gupnp_control_point_browse_start gupnp_control_point_browse_stop gupnp_control_point_callback_set gupnp_control_point_new gupnp_device_action_callback_set gupnp_device_info_get_service gupnp_device_info_get gupnp_root_device_get_available gupnp_root_device_get_relative_location gupnp_root_device_new gupnp_root_device_set_available gupnp_root_device_start gupnp_root_device_stop gupnp_service_action_get gupnp_service_action_return_error gupnp_service_action_return gupnp_service_action_set gupnp_service_freeze_notify gupnp_service_info_get_introspection gupnp_service_info_get gupnp_service_introspection_get_state_variable gupnp_service_notify gupnp_service_proxy_action_get gupnp_service_proxy_action_set gupnp_service_proxy_add_notify gupnp_service_proxy_callback_set gupnp_service_proxy_get_subscribed gupnp_service_proxy_remove_notify gupnp_service_proxy_set_subscribed gupnp_service_thaw_notify gupnp_context_get_host_ip) + b["Hash"] = Set.new %w(hash_algos hash_algos hash_copy hash_equals hash_file hash_final hash_hkdf hash_hmac_file hash_hmac hash_init hash_pbkdf2 hash_update_file hash_update_stream hash_update hash hash_algos) + b["Hyperwave API"] = Set.new %w(hwapi_attribute_new hwapi_content_new hwapi_hgcsp hwapi_object_new) + b["Firebird/InterBase"] = Set.new %w(ibase_add_user ibase_add_user ibase_affected_rows ibase_backup ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_db_info ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_maintain_db ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_restore ibase_rollback_ret ibase_rollback ibase_server_info ibase_service_attach ibase_service_detach ibase_set_event_handler ibase_trans ibase_wait_event ibase_add_user) + b["IBM DB2"] = Set.new %w(db2_autocommit db2_autocommit db2_bind_param db2_client_info db2_close db2_column_privileges db2_columns db2_commit db2_conn_error db2_conn_errormsg db2_connect db2_cursor_type db2_escape_string db2_exec db2_execute db2_fetch_array db2_fetch_assoc db2_fetch_both db2_fetch_object db2_fetch_row db2_field_display_size db2_field_name db2_field_num db2_field_precision db2_field_scale db2_field_type db2_field_width db2_foreign_keys db2_free_result db2_free_stmt db2_get_option db2_last_insert_id db2_lob_read db2_next_result db2_num_fields db2_num_rows db2_pclose db2_pconnect db2_prepare db2_primary_keys db2_procedure_columns db2_procedures db2_result db2_rollback db2_server_info db2_set_option db2_special_columns db2_statistics db2_stmt_error db2_stmt_errormsg db2_table_privileges db2_tables db2_autocommit) + b["iconv"] = Set.new %w(iconv_get_encoding iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler iconv_get_encoding) + b["ID3"] = Set.new %w(id3_get_frame_long_name id3_get_frame_long_name id3_get_frame_short_name id3_get_genre_id id3_get_genre_list id3_get_genre_name id3_get_tag id3_get_version id3_remove_tag id3_set_tag id3_get_frame_long_name) + b["Informix"] = Set.new %w(ifx_affected_rows ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob ifx_affected_rows) + b["IIS"] = Set.new %w(iis_add_server iis_add_server iis_get_dir_security iis_get_script_map iis_get_server_by_comment iis_get_server_by_path iis_get_server_rights iis_get_service_state iis_remove_server iis_set_app_settings iis_set_dir_security iis_set_script_map iis_set_server_rights iis_start_server iis_start_service iis_stop_server iis_stop_service iis_add_server) + b["GD and Image"] = Set.new %w(gd_info gd_info getimagesize getimagesizefromstring image_type_to_extension image_type_to_mime_type image2wbmp imageaffine imageaffinematrixconcat imageaffinematrixget imagealphablending imageantialias imagearc imagebmp imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imageconvolution imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefrombmp imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromwebp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagecrop imagecropauto imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefilter imageflip imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegetclip imagegif imagegrabscreen imagegrabwindow imageinterlace imageistruecolor imagejpeg imagelayereffect imageline imageloadfont imageopenpolygon imagepalettecopy imagepalettetotruecolor imagepng imagepolygon imagepsbbox imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imageresolution imagerotate imagesavealpha imagescale imagesetbrush imagesetclip imagesetinterpolation imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp imagewebp imagexbm iptcembed iptcparse jpeg2wbmp png2wbmp gd_info) + b["IMAP"] = Set.new %w(imap_8bit imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_create imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchmime imap_fetchstructure imap_fetchtext imap_gc imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_rename imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_savebody imap_scan imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 imap_8bit) + b["inclued"] = Set.new %w(inclued_get_data inclued_get_data inclued_get_data) + b["PHP Options/Info"] = Set.new %w(assert_options assert_options assert cli_get_process_title cli_set_process_title dl extension_loaded gc_collect_cycles gc_disable gc_enable gc_enabled gc_mem_caches get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files get_resources getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set magic_quotes_runtime main memory_get_peak_usage memory_get_usage php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit sys_get_temp_dir version_compare zend_logo_guid zend_thread_id zend_version assert_options) + b["Ingres"] = Set.new %w(ingres_autocommit_state ingres_autocommit_state ingres_autocommit ingres_charset ingres_close ingres_commit ingres_connect ingres_cursor ingres_errno ingres_error ingres_errsqlstate ingres_escape_string ingres_execute ingres_fetch_array ingres_fetch_assoc ingres_fetch_object ingres_fetch_proc_return ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_free_result ingres_next_error ingres_num_fields ingres_num_rows ingres_pconnect ingres_prepare ingres_query ingres_result_seek ingres_rollback ingres_set_environment ingres_unbuffered_query ingres_autocommit_state) + b["Inotify"] = Set.new %w(inotify_add_watch inotify_add_watch inotify_init inotify_queue_len inotify_read inotify_rm_watch inotify_add_watch) + b["Grapheme"] = Set.new %w(grapheme_extract grapheme_extract grapheme_stripos grapheme_stristr grapheme_strlen grapheme_strpos grapheme_strripos grapheme_strrpos grapheme_strstr grapheme_substr grapheme_extract) + b["intl"] = Set.new %w(intl_error_name intl_error_name intl_get_error_code intl_get_error_message intl_is_failure intl_error_name) + b["IDN"] = Set.new %w(grapheme_substr idn_to_ascii idn_to_ascii idn_to_utf8 grapheme_substr idn_to_ascii) + b["JSON"] = Set.new %w(json_decode json_decode json_encode json_last_error_msg json_last_error json_decode) + b["Judy"] = Set.new %w(judy_type judy_type judy_version judy_type) + b["KADM5"] = Set.new %w(kadm5_chpass_principal kadm5_chpass_principal kadm5_create_principal kadm5_delete_principal kadm5_destroy kadm5_flush kadm5_get_policies kadm5_get_principal kadm5_get_principals kadm5_init_with_password kadm5_modify_principal kadm5_chpass_principal) + b["LDAP"] = Set.new %w(ldap_8859_to_t61 ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_control_paged_result_response ldap_control_paged_result ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_escape ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify_batch ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_sasl_bind ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind ldap_8859_to_t61) + b["Libevent"] = Set.new %w(event_add event_add event_base_free event_base_loop event_base_loopbreak event_base_loopexit event_base_new event_base_priority_init event_base_reinit event_base_set event_buffer_base_set event_buffer_disable event_buffer_enable event_buffer_fd_set event_buffer_free event_buffer_new event_buffer_priority_set event_buffer_read event_buffer_set_callback event_buffer_timeout_set event_buffer_watermark_set event_buffer_write event_del event_free event_new event_priority_set event_set event_timer_add event_timer_del event_timer_new event_timer_set event_add) + b["libxml"] = Set.new %w(libxml_clear_errors libxml_clear_errors libxml_disable_entity_loader libxml_get_errors libxml_get_last_error libxml_set_external_entity_loader libxml_set_streams_context libxml_use_internal_errors libxml_clear_errors) + b["LZF"] = Set.new %w(lzf_compress lzf_compress lzf_decompress lzf_optimized_for lzf_compress) + b["Mail"] = Set.new %w(ezmlm_hash ezmlm_hash mail ezmlm_hash) + b["Mailparse"] = Set.new %w(mailparse_determine_best_xfer_encoding mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_extract_whole_part_file mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all mailparse_determine_best_xfer_encoding) + b["Math"] = Set.new %w(abs abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot intdiv is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh abs) + b["MaxDB"] = Set.new %w(maxdb_affected_rows maxdb_affected_rows maxdb_autocommit maxdb_bind_param maxdb_bind_result maxdb_change_user maxdb_character_set_name maxdb_client_encoding maxdb_close_long_data maxdb_close maxdb_commit maxdb_connect_errno maxdb_connect_error maxdb_connect maxdb_data_seek maxdb_debug maxdb_disable_reads_from_master maxdb_disable_rpl_parse maxdb_dump_debug_info maxdb_embedded_connect maxdb_enable_reads_from_master maxdb_enable_rpl_parse maxdb_errno maxdb_error maxdb_escape_string maxdb_execute maxdb_fetch_array maxdb_fetch_assoc maxdb_fetch_field_direct maxdb_fetch_field maxdb_fetch_fields maxdb_fetch_lengths maxdb_fetch_object maxdb_fetch_row maxdb_fetch maxdb_field_count maxdb_field_seek maxdb_field_tell maxdb_free_result maxdb_get_client_info maxdb_get_client_version maxdb_get_host_info maxdb_get_metadata maxdb_get_proto_info maxdb_get_server_info maxdb_get_server_version maxdb_info maxdb_init maxdb_insert_id maxdb_kill maxdb_master_query maxdb_more_results maxdb_multi_query maxdb_next_result maxdb_num_fields maxdb_num_rows maxdb_options maxdb_param_count maxdb_ping maxdb_prepare maxdb_query maxdb_real_connect maxdb_real_escape_string maxdb_real_query maxdb_report maxdb_rollback maxdb_rpl_parse_enabled maxdb_rpl_probe maxdb_rpl_query_type maxdb_select_db maxdb_send_long_data maxdb_send_query maxdb_server_end maxdb_server_init maxdb_set_opt maxdb_sqlstate maxdb_ssl_set maxdb_stat maxdb_stmt_affected_rows maxdb_stmt_bind_param maxdb_stmt_bind_result maxdb_stmt_close_long_data maxdb_stmt_close maxdb_stmt_data_seek maxdb_stmt_errno maxdb_stmt_error maxdb_stmt_execute maxdb_stmt_fetch maxdb_stmt_free_result maxdb_stmt_init maxdb_stmt_num_rows maxdb_stmt_param_count maxdb_stmt_prepare maxdb_stmt_reset maxdb_stmt_result_metadata maxdb_stmt_send_long_data maxdb_stmt_sqlstate maxdb_stmt_store_result maxdb_store_result maxdb_thread_id maxdb_thread_safe maxdb_use_result maxdb_warning_count maxdb_affected_rows) + b["Multibyte String"] = Set.new %w(mb_check_encoding mb_check_encoding mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_encoding_aliases mb_ereg_match mb_ereg_replace_callback mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_list_encodings mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_stripos mb_stristr mb_strlen mb_strpos mb_strrchr mb_strrichr mb_strripos mb_strrpos mb_strstr mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr mb_check_encoding) + b["Mcrypt"] = Set.new %w(mcrypt_cbc mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic mcrypt_cbc) + b["MCVE"] = Set.new %w(m_checkstatus m_checkstatus m_completeauthorizations m_connect m_connectionerror m_deletetrans m_destroyconn m_destroyengine m_getcell m_getcellbynum m_getcommadelimited m_getheader m_initconn m_initengine m_iscommadelimited m_maxconntimeout m_monitor m_numcolumns m_numrows m_parsecommadelimited m_responsekeys m_responseparam m_returnstatus m_setblocking m_setdropfile m_setip m_setssl_cafile m_setssl_files m_setssl m_settimeout m_sslcert_gen_hash m_transactionssent m_transinqueue m_transkeyval m_transnew m_transsend m_uwait m_validateidentifier m_verifyconnection m_verifysslcert m_checkstatus) + b["Memcache"] = Set.new %w(memcache_debug memcache_debug memcache_debug) + b["Mhash"] = Set.new %w(mhash_count mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash mhash_count) + b["Ming"] = Set.new %w(ming_keypress ming_keypress ming_setcubicthreshold ming_setscale ming_setswfcompression ming_useconstants ming_useswfversion ming_keypress) + b["Misc."] = Set.new %w(connection_aborted connection_aborted connection_status constant define defined die eval exit get_browser __halt_compiler highlight_file highlight_string ignore_user_abort pack php_check_syntax php_strip_whitespace show_source sleep sys_getloadavg time_nanosleep time_sleep_until uniqid unpack usleep connection_aborted) + b["mnoGoSearch"] = Set.new %w(udm_add_search_limit udm_add_search_limit udm_alloc_agent_array udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_clear_search_limits udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_hash32 udm_load_ispell_data udm_set_agent_param udm_add_search_limit) + b["Mongo"] = Set.new %w(bson_decode bson_decode bson_encode bson_decode) + b["mqseries"] = Set.new %w(mqseries_back mqseries_back mqseries_begin mqseries_close mqseries_cmit mqseries_conn mqseries_connx mqseries_disc mqseries_get mqseries_inq mqseries_open mqseries_put1 mqseries_put mqseries_set mqseries_strerror mqseries_back) + b["Msession"] = Set.new %w(msession_connect msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get_data msession_get msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set_data msession_set msession_timeout msession_uniq msession_unlock msession_connect) + b["mSQL"] = Set.new %w(msql_affected_rows msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_db_query msql_dbname msql_drop_db msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_flags msql_field_len msql_field_name msql_field_seek msql_field_table msql_field_type msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_list_dbs msql_list_fields msql_list_tables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_tablename msql msql_affected_rows) + b["Mssql"] = Set.new %w(mssql_bind mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db mssql_bind) + b["MySQL"] = Set.new %w(mysql_affected_rows mysql_affected_rows mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_set_charset mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query mysql_affected_rows) + b["Aliases and deprecated Mysqli"] = Set.new %w(mysqli_bind_param mysqli_bind_param mysqli_bind_result mysqli_client_encoding mysqli_connect mysqli::disable_reads_from_master mysqli_disable_rpl_parse mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_escape_string mysqli_execute mysqli_fetch mysqli_get_cache_stats mysqli_get_links_stats mysqli_get_metadata mysqli_master_query mysqli_param_count mysqli_report mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_send_long_data mysqli::set_opt mysqli_slave_query mysqli_bind_param) + b["Mysqlnd_memcache"] = Set.new %w(mysqlnd_memcache_get_config mysqlnd_memcache_get_config mysqlnd_memcache_set mysqlnd_memcache_get_config) + b["Mysqlnd_ms"] = Set.new %w(mysqlnd_ms_dump_servers mysqlnd_ms_dump_servers mysqlnd_ms_fabric_select_global mysqlnd_ms_fabric_select_shard mysqlnd_ms_get_last_gtid mysqlnd_ms_get_last_used_connection mysqlnd_ms_get_stats mysqlnd_ms_match_wild mysqlnd_ms_query_is_select mysqlnd_ms_set_qos mysqlnd_ms_set_user_pick_server mysqlnd_ms_xa_begin mysqlnd_ms_xa_commit mysqlnd_ms_xa_gc mysqlnd_ms_xa_rollback mysqlnd_ms_dump_servers) + b["mysqlnd_qc"] = Set.new %w(mysqlnd_qc_clear_cache mysqlnd_qc_clear_cache mysqlnd_qc_get_available_handlers mysqlnd_qc_get_cache_info mysqlnd_qc_get_core_stats mysqlnd_qc_get_normalized_query_trace_log mysqlnd_qc_get_query_trace_log mysqlnd_qc_set_cache_condition mysqlnd_qc_set_is_select mysqlnd_qc_set_storage_handler mysqlnd_qc_set_user_handlers mysqlnd_qc_clear_cache) + b["Mysqlnd_uh"] = Set.new %w(mysqlnd_uh_convert_to_mysqlnd mysqlnd_uh_convert_to_mysqlnd mysqlnd_uh_set_connection_proxy mysqlnd_uh_set_statement_proxy mysqlnd_uh_convert_to_mysqlnd) + b["Ncurses"] = Set.new %w(ncurses_addch ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline ncurses_addch) + b["Gopher"] = Set.new %w(gopher_parsedir gopher_parsedir gopher_parsedir) + b["Network"] = Set.new %w(checkdnsrr checkdnsrr closelog define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel gethostname getmxrr getprotobyname getprotobynumber getservbyname getservbyport header_register_callback header_remove header headers_list headers_sent http_response_code inet_ntop inet_pton ip2long long2ip openlog pfsockopen setcookie setrawcookie socket_get_status socket_set_blocking socket_set_timeout syslog checkdnsrr) + b["Newt"] = Set.new %w(newt_bell newt_bell newt_button_bar newt_button newt_centered_window newt_checkbox_get_value newt_checkbox_set_flags newt_checkbox_set_value newt_checkbox_tree_add_item newt_checkbox_tree_find_item newt_checkbox_tree_get_current newt_checkbox_tree_get_entry_value newt_checkbox_tree_get_multi_selection newt_checkbox_tree_get_selection newt_checkbox_tree_multi newt_checkbox_tree_set_current newt_checkbox_tree_set_entry_value newt_checkbox_tree_set_entry newt_checkbox_tree_set_width newt_checkbox_tree newt_checkbox newt_clear_key_buffer newt_cls newt_compact_button newt_component_add_callback newt_component_takes_focus newt_create_grid newt_cursor_off newt_cursor_on newt_delay newt_draw_form newt_draw_root_text newt_entry_get_value newt_entry_set_filter newt_entry_set_flags newt_entry_set newt_entry newt_finished newt_form_add_component newt_form_add_components newt_form_add_hot_key newt_form_destroy newt_form_get_current newt_form_run newt_form_set_background newt_form_set_height newt_form_set_size newt_form_set_timer newt_form_set_width newt_form_watch_fd newt_form newt_get_screen_size newt_grid_add_components_to_form newt_grid_basic_window newt_grid_free newt_grid_get_size newt_grid_h_close_stacked newt_grid_h_stacked newt_grid_place newt_grid_set_field newt_grid_simple_window newt_grid_v_close_stacked newt_grid_v_stacked newt_grid_wrapped_window_at newt_grid_wrapped_window newt_init newt_label_set_text newt_label newt_listbox_append_entry newt_listbox_clear_selection newt_listbox_clear newt_listbox_delete_entry newt_listbox_get_current newt_listbox_get_selection newt_listbox_insert_entry newt_listbox_item_count newt_listbox_select_item newt_listbox_set_current_by_key newt_listbox_set_current newt_listbox_set_data newt_listbox_set_entry newt_listbox_set_width newt_listbox newt_listitem_get_data newt_listitem_set newt_listitem newt_open_window newt_pop_help_line newt_pop_window newt_push_help_line newt_radio_get_current newt_radiobutton newt_redraw_help_line newt_reflow_text newt_refresh newt_resize_screen newt_resume newt_run_form newt_scale_set newt_scale newt_scrollbar_set newt_set_help_callback newt_set_suspend_callback newt_suspend newt_textbox_get_num_lines newt_textbox_reflowed newt_textbox_set_height newt_textbox_set_text newt_textbox newt_vertical_scrollbar newt_wait_for_key newt_win_choice newt_win_entries newt_win_menu newt_win_message newt_win_messagev newt_win_ternary newt_bell) + b["YP/NIS"] = Set.new %w(yp_all yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order yp_all) + b["NSAPI"] = Set.new %w(nsapi_request_headers nsapi_request_headers nsapi_response_headers nsapi_virtual nsapi_request_headers) + b["OAuth"] = Set.new %w(oauth_get_sbs oauth_get_sbs oauth_urlencode oauth_get_sbs) + b["OCI8"] = Set.new %w(oci_bind_array_by_name oci_bind_array_by_name oci_bind_by_name oci_cancel oci_client_version oci_close oci_commit oci_connect oci_define_by_name oci_error oci_execute oci_fetch_all oci_fetch_array oci_fetch_assoc oci_fetch_object oci_fetch_row oci_fetch oci_field_is_null oci_field_name oci_field_precision oci_field_scale oci_field_size oci_field_type_raw oci_field_type oci_free_descriptor oci_free_statement oci_get_implicit_resultset oci_internal_debug oci_lob_copy oci_lob_is_equal oci_new_collection oci_new_connect oci_new_cursor oci_new_descriptor oci_num_fields oci_num_rows oci_parse oci_password_change oci_pconnect oci_result oci_rollback oci_server_version oci_set_action oci_set_client_identifier oci_set_client_info oci_set_edition oci_set_module_name oci_set_prefetch oci_statement_type oci_bind_array_by_name) + b["OPcache"] = Set.new %w(opcache_compile_file opcache_compile_file opcache_get_configuration opcache_get_status opcache_invalidate opcache_is_script_cached opcache_reset opcache_compile_file) + b["OpenAL"] = Set.new %w(openal_buffer_create openal_buffer_create openal_buffer_data openal_buffer_destroy openal_buffer_get openal_buffer_loadwav openal_context_create openal_context_current openal_context_destroy openal_context_process openal_context_suspend openal_device_close openal_device_open openal_listener_get openal_listener_set openal_source_create openal_source_destroy openal_source_get openal_source_pause openal_source_play openal_source_rewind openal_source_set openal_source_stop openal_stream openal_buffer_create) + b["OpenSSL"] = Set.new %w(openssl_cipher_iv_length openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read openssl_cipher_iv_length) + b["Output Control"] = Set.new %w(flush flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars flush) + b["Paradox"] = Set.new %w(px_close px_close px_create_fp px_date2string px_delete_record px_delete px_get_field px_get_info px_get_parameter px_get_record px_get_schema px_get_value px_insert_record px_new px_numfields px_numrecords px_open_fp px_put_record px_retrieve_record px_set_blob_file px_set_parameter px_set_tablename px_set_targetencoding px_set_value px_timestamp2string px_update_record px_close) + b["Parsekit"] = Set.new %w(parsekit_compile_file parsekit_compile_file parsekit_compile_string parsekit_func_arginfo parsekit_compile_file) + b["Password Hashing"] = Set.new %w(password_get_info password_get_info password_hash password_needs_rehash password_verify password_get_info) + b["PCNTL"] = Set.new %w(pcntl_alarm pcntl_alarm pcntl_errno pcntl_exec pcntl_fork pcntl_get_last_error pcntl_getpriority pcntl_setpriority pcntl_signal_dispatch pcntl_signal_get_handler pcntl_signal pcntl_sigprocmask pcntl_sigtimedwait pcntl_sigwaitinfo pcntl_strerror pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig pcntl_alarm) + b["PCRE"] = Set.new %w(preg_filter preg_filter preg_grep preg_last_error preg_match_all preg_match preg_quote preg_replace_callback_array preg_replace_callback preg_replace preg_split preg_filter) + b["PDF"] = Set.new %w(PDF_activate_item PDF_activate_item PDF_add_annotation PDF_add_bookmark PDF_add_launchlink PDF_add_locallink PDF_add_nameddest PDF_add_note PDF_add_outline PDF_add_pdflink PDF_add_table_cell PDF_add_textflow PDF_add_thumbnail PDF_add_weblink PDF_arc PDF_arcn PDF_attach_file PDF_begin_document PDF_begin_font PDF_begin_glyph PDF_begin_item PDF_begin_layer PDF_begin_page_ext PDF_begin_page PDF_begin_pattern PDF_begin_template_ext PDF_begin_template PDF_circle PDF_clip PDF_close_image PDF_close_pdi_page PDF_close_pdi PDF_close PDF_closepath_fill_stroke PDF_closepath_stroke PDF_closepath PDF_concat PDF_continue_text PDF_create_3dview PDF_create_action PDF_create_annotation PDF_create_bookmark PDF_create_field PDF_create_fieldgroup PDF_create_gstate PDF_create_pvf PDF_create_textflow PDF_curveto PDF_define_layer PDF_delete_pvf PDF_delete_table PDF_delete_textflow PDF_delete PDF_encoding_set_char PDF_end_document PDF_end_font PDF_end_glyph PDF_end_item PDF_end_layer PDF_end_page_ext PDF_end_page PDF_end_pattern PDF_end_template PDF_endpath PDF_fill_imageblock PDF_fill_pdfblock PDF_fill_stroke PDF_fill_textblock PDF_fill PDF_findfont PDF_fit_image PDF_fit_pdi_page PDF_fit_table PDF_fit_textflow PDF_fit_textline PDF_get_apiname PDF_get_buffer PDF_get_errmsg PDF_get_errnum PDF_get_font PDF_get_fontname PDF_get_fontsize PDF_get_image_height PDF_get_image_width PDF_get_majorversion PDF_get_minorversion PDF_get_parameter PDF_get_pdi_parameter PDF_get_pdi_value PDF_get_value PDF_info_font PDF_info_matchbox PDF_info_table PDF_info_textflow PDF_info_textline PDF_initgraphics PDF_lineto PDF_load_3ddata PDF_load_font PDF_load_iccprofile PDF_load_image PDF_makespotcolor PDF_moveto PDF_new PDF_open_ccitt PDF_open_file PDF_open_gif PDF_open_image_file PDF_open_image PDF_open_jpeg PDF_open_memory_image PDF_open_pdi_document PDF_open_pdi_page PDF_open_pdi PDF_open_tiff PDF_pcos_get_number PDF_pcos_get_stream PDF_pcos_get_string PDF_place_image PDF_place_pdi_page PDF_process_pdi PDF_rect PDF_restore PDF_resume_page PDF_rotate PDF_save PDF_scale PDF_set_border_color PDF_set_border_dash PDF_set_border_style PDF_set_char_spacing PDF_set_duration PDF_set_gstate PDF_set_horiz_scaling PDF_set_info_author PDF_set_info_creator PDF_set_info_keywords PDF_set_info_subject PDF_set_info_title PDF_set_info PDF_set_layer_dependency PDF_set_leading PDF_set_parameter PDF_set_text_matrix PDF_set_text_pos PDF_set_text_rendering PDF_set_text_rise PDF_set_value PDF_set_word_spacing PDF_setcolor PDF_setdash PDF_setdashpattern PDF_setflat PDF_setfont PDF_setgray_fill PDF_setgray_stroke PDF_setgray PDF_setlinecap PDF_setlinejoin PDF_setlinewidth PDF_setmatrix PDF_setmiterlimit PDF_setpolydash PDF_setrgbcolor_fill PDF_setrgbcolor_stroke PDF_setrgbcolor PDF_shading_pattern PDF_shading PDF_shfill PDF_show_boxed PDF_show_xy PDF_show PDF_skew PDF_stringwidth PDF_stroke PDF_suspend_page PDF_translate PDF_utf16_to_utf8 PDF_utf32_to_utf16 PDF_utf8_to_utf16 PDF_activate_item) + b["PostgreSQL"] = Set.new %w(pg_affected_rows pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect_poll pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_consume_input pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_identifier pg_escape_literal pg_escape_string pg_execute pg_fetch_all_columns pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_table pg_field_type_oid pg_field_type pg_flush pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_truncate pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_parameter_status pg_pconnect pg_ping pg_port pg_prepare pg_put_line pg_query_params pg_query pg_result_error_field pg_result_error pg_result_seek pg_result_status pg_select pg_send_execute pg_send_prepare pg_send_query_params pg_send_query pg_set_client_encoding pg_set_error_verbosity pg_socket pg_trace pg_transaction_status pg_tty pg_unescape_bytea pg_untrace pg_update pg_version pg_affected_rows) + b["POSIX"] = Set.new %w(posix_access posix_access posix_ctermid posix_errno posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setrlimit posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname posix_access) + b["Proctitle"] = Set.new %w(setproctitle setproctitle setthreadtitle setproctitle) + b["PS"] = Set.new %w(ps_add_bookmark ps_add_bookmark ps_add_launchlink ps_add_locallink ps_add_note ps_add_pdflink ps_add_weblink ps_arc ps_arcn ps_begin_page ps_begin_pattern ps_begin_template ps_circle ps_clip ps_close_image ps_close ps_closepath_stroke ps_closepath ps_continue_text ps_curveto ps_delete ps_end_page ps_end_pattern ps_end_template ps_fill_stroke ps_fill ps_findfont ps_get_buffer ps_get_parameter ps_get_value ps_hyphenate ps_include_file ps_lineto ps_makespotcolor ps_moveto ps_new ps_open_file ps_open_image_file ps_open_image ps_open_memory_image ps_place_image ps_rect ps_restore ps_rotate ps_save ps_scale ps_set_border_color ps_set_border_dash ps_set_border_style ps_set_info ps_set_parameter ps_set_text_pos ps_set_value ps_setcolor ps_setdash ps_setflat ps_setfont ps_setgray ps_setlinecap ps_setlinejoin ps_setlinewidth ps_setmiterlimit ps_setoverprintmode ps_setpolydash ps_shading_pattern ps_shading ps_shfill ps_show_boxed ps_show_xy2 ps_show_xy ps_show2 ps_show ps_string_geometry ps_stringwidth ps_stroke ps_symbol_name ps_symbol_width ps_symbol ps_translate ps_add_bookmark) + b["Pspell"] = Set.new %w(pspell_add_to_personal pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_data_dir pspell_config_dict_dir pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest pspell_add_to_personal) + b["Radius"] = Set.new %w(radius_acct_open radius_acct_open radius_add_server radius_auth_open radius_close radius_config radius_create_request radius_cvt_addr radius_cvt_int radius_cvt_string radius_demangle_mppe_key radius_demangle radius_get_attr radius_get_tagged_attr_data radius_get_tagged_attr_tag radius_get_vendor_attr radius_put_addr radius_put_attr radius_put_int radius_put_string radius_put_vendor_addr radius_put_vendor_attr radius_put_vendor_int radius_put_vendor_string radius_request_authenticator radius_salt_encrypt_attr radius_send_request radius_server_secret radius_strerror radius_acct_open) + b["Rar"] = Set.new %w(rar_wrapper_cache_stats rar_wrapper_cache_stats rar_wrapper_cache_stats) + b["Readline"] = Set.new %w(readline_add_history readline_add_history readline_callback_handler_install readline_callback_handler_remove readline_callback_read_char readline_clear_history readline_completion_function readline_info readline_list_history readline_on_new_line readline_read_history readline_redisplay readline_write_history readline readline_add_history) + b["Recode"] = Set.new %w(recode_file recode_file recode_string recode recode_file) + b["POSIX Regex"] = Set.new %w(ereg_replace ereg_replace ereg eregi_replace eregi split spliti sql_regcase ereg_replace) + b["RPM Reader"] = Set.new %w(rpm_close rpm_close rpm_get_tag rpm_is_valid rpm_open rpm_version rpm_close) + b["RRD"] = Set.new %w(rrd_create rrd_create rrd_error rrd_fetch rrd_first rrd_graph rrd_info rrd_last rrd_lastupdate rrd_restore rrd_tune rrd_update rrd_version rrd_xport rrdc_disconnect rrd_create) + b["runkit"] = Set.new %w(runkit_class_adopt runkit_class_emancipate runkit_constant_add runkit_constant_redefine runkit_constant_remove runkit_function_add runkit_function_copy runkit_function_redefine runkit_function_remove runkit_function_rename runkit_import runkit_lint_file runkit_lint runkit_method_add runkit_method_copy runkit_method_redefine runkit_method_remove runkit_method_rename runkit_return_value_used runkit_sandbox_output_handler runkit_superglobals) + b["SAM"] = Set.new %w() + b["SCA"] = Set.new %w() + b["SDO DAS XML"] = Set.new %w() + b["SDO"] = Set.new %w() + b["SDO-DAS-Relational"] = Set.new %w() + b["Semaphore"] = Set.new %w(ftok ftok msg_get_queue msg_queue_exists msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_has_var shm_put_var shm_remove_var shm_remove ftok) + b["Session PgSQL"] = Set.new %w(session_pgsql_add_error session_pgsql_add_error session_pgsql_get_error session_pgsql_get_field session_pgsql_reset session_pgsql_set_field session_pgsql_status session_pgsql_add_error) + b["Session"] = Set.new %w(session_abort session_abort session_cache_expire session_cache_limiter session_commit session_create_id session_decode session_destroy session_encode session_gc session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register_shutdown session_register session_reset session_save_path session_set_cookie_params session_set_save_handler session_start session_status session_unregister session_unset session_write_close session_abort) + b["Shared Memory"] = Set.new %w(shmop_close shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write shmop_close) + b["SimpleXML"] = Set.new %w(simplexml_import_dom simplexml_import_dom simplexml_load_file simplexml_load_string simplexml_import_dom) + b["SNMP"] = Set.new %w(snmp_get_quick_print snmp_get_quick_print snmp_get_valueretrieval snmp_read_mib snmp_set_enum_print snmp_set_oid_numeric_print snmp_set_oid_output_format snmp_set_quick_print snmp_set_valueretrieval snmp2_get snmp2_getnext snmp2_real_walk snmp2_set snmp2_walk snmp3_get snmp3_getnext snmp3_real_walk snmp3_set snmp3_walk snmpget snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid snmp_get_quick_print) + b["SOAP"] = Set.new %w(is_soap_fault is_soap_fault use_soap_error_handler is_soap_fault) + b["Socket"] = Set.new %w(socket_accept socket_accept socket_bind socket_clear_error socket_close socket_cmsg_space socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getopt socket_getpeername socket_getsockname socket_import_stream socket_last_error socket_listen socket_read socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_setopt socket_shutdown socket_strerror socket_write socket_accept) + b["Solr"] = Set.new %w(solr_get_version solr_get_version solr_get_version) + b["SPL"] = Set.new %w(class_implements class_implements class_parents class_uses iterator_apply iterator_count iterator_to_array spl_autoload_call spl_autoload_extensions spl_autoload_functions spl_autoload_register spl_autoload_unregister spl_autoload spl_classes spl_object_hash class_implements) + b["SQLite"] = Set.new %w(sqlite_array_query sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_exec sqlite_factory sqlite_fetch_all sqlite_fetch_array sqlite_fetch_column_types sqlite_fetch_object sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_has_prev sqlite_key sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_prev sqlite_query sqlite_rewind sqlite_seek sqlite_single_query sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query sqlite_valid sqlite_array_query) + b["SQLSRV"] = Set.new %w(sqlsrv_begin_transaction sqlsrv_begin_transaction sqlsrv_cancel sqlsrv_client_info sqlsrv_close sqlsrv_commit sqlsrv_configure sqlsrv_connect sqlsrv_errors sqlsrv_execute sqlsrv_fetch_array sqlsrv_fetch_object sqlsrv_fetch sqlsrv_field_metadata sqlsrv_free_stmt sqlsrv_get_config sqlsrv_get_field sqlsrv_has_rows sqlsrv_next_result sqlsrv_num_fields sqlsrv_num_rows sqlsrv_prepare sqlsrv_query sqlsrv_rollback sqlsrv_rows_affected sqlsrv_send_stream_data sqlsrv_server_info sqlsrv_begin_transaction) + b["ssdeep"] = Set.new %w(ssdeep_fuzzy_compare ssdeep_fuzzy_compare ssdeep_fuzzy_hash_filename ssdeep_fuzzy_hash ssdeep_fuzzy_compare) + b["SSH2"] = Set.new %w(ssh2_auth_agent ssh2_auth_agent ssh2_auth_hostbased_file ssh2_auth_none ssh2_auth_password ssh2_auth_pubkey_file ssh2_connect ssh2_exec ssh2_fetch_stream ssh2_fingerprint ssh2_methods_negotiated ssh2_publickey_add ssh2_publickey_init ssh2_publickey_list ssh2_publickey_remove ssh2_scp_recv ssh2_scp_send ssh2_sftp_chmod ssh2_sftp_lstat ssh2_sftp_mkdir ssh2_sftp_readlink ssh2_sftp_realpath ssh2_sftp_rename ssh2_sftp_rmdir ssh2_sftp_stat ssh2_sftp_symlink ssh2_sftp_unlink ssh2_sftp ssh2_shell ssh2_tunnel ssh2_auth_agent) + b["Statistic"] = Set.new %w(stats_absolute_deviation stats_absolute_deviation stats_cdf_beta stats_cdf_binomial stats_cdf_cauchy stats_cdf_chisquare stats_cdf_exponential stats_cdf_f stats_cdf_gamma stats_cdf_laplace stats_cdf_logistic stats_cdf_negative_binomial stats_cdf_noncentral_chisquare stats_cdf_noncentral_f stats_cdf_poisson stats_cdf_t stats_cdf_uniform stats_cdf_weibull stats_covariance stats_den_uniform stats_dens_beta stats_dens_cauchy stats_dens_chisquare stats_dens_exponential stats_dens_f stats_dens_gamma stats_dens_laplace stats_dens_logistic stats_dens_negative_binomial stats_dens_normal stats_dens_pmf_binomial stats_dens_pmf_hypergeometric stats_dens_pmf_poisson stats_dens_t stats_dens_weibull stats_harmonic_mean stats_kurtosis stats_rand_gen_beta stats_rand_gen_chisquare stats_rand_gen_exponential stats_rand_gen_f stats_rand_gen_funiform stats_rand_gen_gamma stats_rand_gen_ibinomial_negative stats_rand_gen_ibinomial stats_rand_gen_int stats_rand_gen_ipoisson stats_rand_gen_iuniform stats_rand_gen_noncenral_chisquare stats_rand_gen_noncentral_f stats_rand_gen_noncentral_t stats_rand_gen_normal stats_rand_gen_t stats_rand_get_seeds stats_rand_phrase_to_seeds stats_rand_ranf stats_rand_setall stats_skew stats_standard_deviation stats_stat_binomial_coef stats_stat_correlation stats_stat_gennch stats_stat_independent_t stats_stat_innerproduct stats_stat_noncentral_t stats_stat_paired_t stats_stat_percentile stats_stat_powersum stats_variance stats_absolute_deviation) + b["Stomp"] = Set.new %w(stomp_connect_error stomp_connect_error stomp_version stomp_connect_error) + b["Stream"] = Set.new %w(set_socket_blocking set_socket_blocking stream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_create stream_context_get_default stream_context_get_options stream_context_get_params stream_context_set_default stream_context_set_option stream_context_set_params stream_copy_to_stream stream_encoding stream_filter_append stream_filter_prepend stream_filter_register stream_filter_remove stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_is_local stream_notification_callback stream_register_wrapper stream_resolve_include_path stream_select stream_set_blocking stream_set_chunk_size stream_set_read_buffer stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_enable_crypto stream_socket_get_name stream_socket_pair stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_socket_shutdown stream_supports_lock stream_wrapper_register stream_wrapper_restore stream_wrapper_unregister set_socket_blocking) + b["String"] = Set.new %w(addcslashes addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string convert_uudecode convert_uuencode count_chars crc32 crypt echo explode fprintf get_html_translation_table hebrev hebrevc hex2bin html_entity_decode htmlentities htmlspecialchars_decode htmlspecialchars implode join lcfirst levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quoted_printable_encode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vfprintf vprintf vsprintf wordwrap addcslashes) + b["SVN"] = Set.new %w(svn_add svn_add svn_auth_get_parameter svn_auth_set_parameter svn_blame svn_cat svn_checkout svn_cleanup svn_client_version svn_commit svn_delete svn_diff svn_export svn_fs_abort_txn svn_fs_apply_text svn_fs_begin_txn2 svn_fs_change_node_prop svn_fs_check_path svn_fs_contents_changed svn_fs_copy svn_fs_delete svn_fs_dir_entries svn_fs_file_contents svn_fs_file_length svn_fs_is_dir svn_fs_is_file svn_fs_make_dir svn_fs_make_file svn_fs_node_created_rev svn_fs_node_prop svn_fs_props_changed svn_fs_revision_prop svn_fs_revision_root svn_fs_txn_root svn_fs_youngest_rev svn_import svn_log svn_ls svn_mkdir svn_repos_create svn_repos_fs_begin_txn_for_commit svn_repos_fs_commit_txn svn_repos_fs svn_repos_hotcopy svn_repos_open svn_repos_recover svn_revert svn_status svn_update svn_add) + b["Swish"] = Set.new %w() + b["Sybase"] = Set.new %w(sybase_affected_rows sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query sybase_affected_rows) + b["Taint"] = Set.new %w(is_tainted is_tainted taint untaint is_tainted) + b["TCP"] = Set.new %w(tcpwrap_check tcpwrap_check tcpwrap_check) + b["Tidy"] = Set.new %w(ob_tidyhandler ob_tidyhandler tidy_access_count tidy_config_count tidy_error_count tidy_get_output tidy_load_config tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count ob_tidyhandler) + b["Tokenizer"] = Set.new %w(token_get_all token_get_all token_name token_get_all) + b["Trader"] = Set.new %w(trader_acos trader_acos trader_ad trader_add trader_adosc trader_adx trader_adxr trader_apo trader_aroon trader_aroonosc trader_asin trader_atan trader_atr trader_avgprice trader_bbands trader_beta trader_bop trader_cci trader_cdl2crows trader_cdl3blackcrows trader_cdl3inside trader_cdl3linestrike trader_cdl3outside trader_cdl3starsinsouth trader_cdl3whitesoldiers trader_cdlabandonedbaby trader_cdladvanceblock trader_cdlbelthold trader_cdlbreakaway trader_cdlclosingmarubozu trader_cdlconcealbabyswall trader_cdlcounterattack trader_cdldarkcloudcover trader_cdldoji trader_cdldojistar trader_cdldragonflydoji trader_cdlengulfing trader_cdleveningdojistar trader_cdleveningstar trader_cdlgapsidesidewhite trader_cdlgravestonedoji trader_cdlhammer trader_cdlhangingman trader_cdlharami trader_cdlharamicross trader_cdlhighwave trader_cdlhikkake trader_cdlhikkakemod trader_cdlhomingpigeon trader_cdlidentical3crows trader_cdlinneck trader_cdlinvertedhammer trader_cdlkicking trader_cdlkickingbylength trader_cdlladderbottom trader_cdllongleggeddoji trader_cdllongline trader_cdlmarubozu trader_cdlmatchinglow trader_cdlmathold trader_cdlmorningdojistar trader_cdlmorningstar trader_cdlonneck trader_cdlpiercing trader_cdlrickshawman trader_cdlrisefall3methods trader_cdlseparatinglines trader_cdlshootingstar trader_cdlshortline trader_cdlspinningtop trader_cdlstalledpattern trader_cdlsticksandwich trader_cdltakuri trader_cdltasukigap trader_cdlthrusting trader_cdltristar trader_cdlunique3river trader_cdlupsidegap2crows trader_cdlxsidegap3methods trader_ceil trader_cmo trader_correl trader_cos trader_cosh trader_dema trader_div trader_dx trader_ema trader_errno trader_exp trader_floor trader_get_compat trader_get_unstable_period trader_ht_dcperiod trader_ht_dcphase trader_ht_phasor trader_ht_sine trader_ht_trendline trader_ht_trendmode trader_kama trader_linearreg_angle trader_linearreg_intercept trader_linearreg_slope trader_linearreg trader_ln trader_log10 trader_ma trader_macd trader_macdext trader_macdfix trader_mama trader_mavp trader_max trader_maxindex trader_medprice trader_mfi trader_midpoint trader_midprice trader_min trader_minindex trader_minmax trader_minmaxindex trader_minus_di trader_minus_dm trader_mom trader_mult trader_natr trader_obv trader_plus_di trader_plus_dm trader_ppo trader_roc trader_rocp trader_rocr100 trader_rocr trader_rsi trader_sar trader_sarext trader_set_compat trader_set_unstable_period trader_sin trader_sinh trader_sma trader_sqrt trader_stddev trader_stoch trader_stochf trader_stochrsi trader_sub trader_sum trader_t3 trader_tan trader_tanh trader_tema trader_trange trader_trima trader_trix trader_tsf trader_typprice trader_ultosc trader_var trader_wclprice trader_willr trader_wma trader_acos) + b["UI"] = Set.new %w(UI\Draw\Text\Font\fontFamilies UI\Draw\Text\Font\fontFamilies UI\quit UI\run UI\Draw\Text\Font\fontFamilies) + b["ODBC"] = Set.new %w(odbc_autocommit odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables odbc_autocommit) + b["Uopz"] = Set.new %w(uopz_backup uopz_backup uopz_compose uopz_copy uopz_delete uopz_extend uopz_flags uopz_function uopz_implement uopz_overload uopz_redefine uopz_rename uopz_restore uopz_undefine uopz_backup) + b["URL"] = Set.new %w(base64_decode base64_decode base64_encode get_headers get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode base64_decode) + b["Variable handling"] = Set.new %w(boolval boolval debug_zval_dump doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_iterable is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export boolval) + b["vpopmail"] = Set.new %w(vpopmail_add_alias_domain_ex vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota vpopmail_add_alias_domain_ex) + b["WDDX"] = Set.new %w(wddx_add_vars wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars wddx_add_vars) + b["win32ps"] = Set.new %w(win32_ps_list_procs win32_ps_list_procs win32_ps_stat_mem win32_ps_stat_proc win32_ps_list_procs) + b["win32service"] = Set.new %w(win32_continue_service win32_continue_service win32_create_service win32_delete_service win32_get_last_control_message win32_pause_service win32_query_service_status win32_set_service_status win32_start_service_ctrl_dispatcher win32_start_service win32_stop_service win32_continue_service) + b["WinCache"] = Set.new %w(wincache_fcache_fileinfo wincache_fcache_fileinfo wincache_fcache_meminfo wincache_lock wincache_ocache_fileinfo wincache_ocache_meminfo wincache_refresh_if_changed wincache_rplist_fileinfo wincache_rplist_meminfo wincache_scache_info wincache_scache_meminfo wincache_ucache_add wincache_ucache_cas wincache_ucache_clear wincache_ucache_dec wincache_ucache_delete wincache_ucache_exists wincache_ucache_get wincache_ucache_inc wincache_ucache_info wincache_ucache_meminfo wincache_ucache_set wincache_unlock wincache_fcache_fileinfo) + b["xattr"] = Set.new %w(xattr_get xattr_get xattr_list xattr_remove xattr_set xattr_supported xattr_get) + b["xdiff"] = Set.new %w(xdiff_file_bdiff_size xdiff_file_bdiff_size xdiff_file_bdiff xdiff_file_bpatch xdiff_file_diff_binary xdiff_file_diff xdiff_file_merge3 xdiff_file_patch_binary xdiff_file_patch xdiff_file_rabdiff xdiff_string_bdiff_size xdiff_string_bdiff xdiff_string_bpatch xdiff_string_diff_binary xdiff_string_diff xdiff_string_merge3 xdiff_string_patch_binary xdiff_string_patch xdiff_string_rabdiff xdiff_file_bdiff_size) + b["Xhprof"] = Set.new %w(xhprof_disable xhprof_disable xhprof_enable xhprof_sample_disable xhprof_sample_enable xhprof_disable) + b["XML Parser"] = Set.new %w(utf8_decode utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler utf8_decode) + b["XML-RPC"] = Set.new %w(xmlrpc_decode_request xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_is_fault xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type xmlrpc_decode_request) + b["XMLWriter"] = Set.new %w(XMLWriter::endAttribute XMLWriter::endAttribute XMLWriter::endCData XMLWriter::endComment XMLWriter::endDocument XMLWriter::endDTDAttlist XMLWriter::endDTDElement XMLWriter::endDTDEntity XMLWriter::endDTD XMLWriter::endElement XMLWriter::endPI XMLWriter::flush XMLWriter::fullEndElement XMLWriter::openMemory XMLWriter::openURI XMLWriter::outputMemory XMLWriter::setIndentString XMLWriter::setIndent XMLWriter::startAttributeNS XMLWriter::startAttribute XMLWriter::startCData XMLWriter::startComment XMLWriter::startDocument XMLWriter::startDTDAttlist XMLWriter::startDTDElement XMLWriter::startDTDEntity XMLWriter::startDTD XMLWriter::startElementNS XMLWriter::startElement XMLWriter::startPI XMLWriter::text XMLWriter::writeAttributeNS XMLWriter::writeAttribute XMLWriter::writeCData XMLWriter::writeComment XMLWriter::writeDTDAttlist XMLWriter::writeDTDElement XMLWriter::writeDTDEntity XMLWriter::writeDTD XMLWriter::writeElementNS XMLWriter::writeElement XMLWriter::writePI XMLWriter::writeRaw XMLWriter::endAttribute) + b["Yaml"] = Set.new %w(yaml_emit_file yaml_emit_file yaml_emit yaml_parse_file yaml_parse_url yaml_parse yaml_emit_file) + b["YAZ"] = Set.new %w(yaz_addinfo yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_es yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait yaz_addinfo) + b["Zip"] = Set.new %w(zip_close zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read zip_close) + b["Zlib"] = Set.new %w(deflate_add deflate_add deflate_init gzclose gzcompress gzdecode gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite inflate_add inflate_init readgzfile zlib_decode zlib_encode zlib_get_coding_type deflate_add) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plain_text.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plain_text.rb new file mode 100644 index 0000000000..617076bc35 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plain_text.rb @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class PlainText < Lexer + title "Plain Text" + desc "A boring lexer that doesn't highlight anything" + + tag 'plaintext' + aliases 'text' + filenames '*.txt' + mimetypes 'text/plain' + + attr_reader :token + def initialize(*) + super + + @token = token_option(:token) || Text + end + + def stream_tokens(string, &b) + yield self.token, string + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plist.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plist.rb new file mode 100644 index 0000000000..a4c7557950 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/plist.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + class Plist < RegexLexer + desc 'plist' + tag 'plist' + aliases 'plist' + filenames *%w(*.plist *.pbxproj) + + mimetypes 'text/x-plist', 'application/x-plist' + + state :whitespace do + rule /\s+/, Text::Whitespace + end + + state :root do + rule %r{//.*$}, Comment + rule %r{/\*.+?\*/}m, Comment + mixin :whitespace + rule /{/, Punctuation, :dictionary + rule /\(/, Punctuation, :array + rule /"([^"\\]|\\.)*"/, Literal::String::Double + rule /'([^'\\]|\\.)*'/, Literal::String::Single + rule //, Punctuation, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pony.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pony.rb new file mode 100644 index 0000000000..3abd061df0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/pony.rb @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Pony < RegexLexer + tag 'pony' + filenames '*.pony' + + keywords = Set.new %w( + actor addressof and as + be break + class compiler_intrinsic consume continue + do + else elseif embed end error + for fun + if ifdef in interface is isnt + lambda let + match + new not + object + primitive + recover repeat return + struct + then this trait try type + until use + var + where while with + ) + + capabilities = Set.new %w( + box iso ref tag trn val + ) + + types = Set.new %w( + Number Signed Unsigned Float + I8 I16 I32 I64 I128 U8 U32 U64 U128 F32 F64 + EventID Align IntFormat NumberPrefix FloatFormat + Type + ) + + state :whitespace do + rule /[\s\t\r\n]+/m, Text + end + + state :root do + mixin :whitespace + rule /"""/, Str::Doc, :docstring + rule %r{//(.*?)\n}, Comment::Single + rule %r{/(\\\n)?[*](.|\n)*?[*](\\\n)?/}, Comment::Multiline + rule /"/, Str, :string + rule %r([~!%^&*+=\|?:<>/-]), Operator + rule /(true|false|NULL)\b/, Name::Constant + rule %r{(?:[A-Z_][a-zA-Z0-9_]*)}, Name::Class + rule /[()\[\],.';]/, Punctuation + + # Numbers + rule /0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)[pP][+\-]?[0-9_]+[fFL]?[i]?/, Num::Float + rule /[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)[fFL]?[i]?/, Num::Float + rule /\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[fFL]?[i]?/, Num::Float + rule /0[xX][0-9a-fA-F_]+/, Num::Hex + rule /(0|[1-9][0-9_]*)([LUu]|Lu|LU|uL|UL)?/, Num::Integer + + rule /[a-z_][a-z0-9_]*/io do |m| + match = m[0] + + if capabilities.include?(match) + token Keyword::Declaration + elsif keywords.include?(match) + token Keyword::Reserved + elsif types.include?(match) + token Keyword::Type + else + token Name + end + end + end + + state :string do + rule /"/, Str, :pop! + rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape + rule /[^\\"\n]+/, Str + rule /\\\n/, Str + rule /\\/, Str # stray backslash + end + + state :docstring do + rule /"""/, Str::Doc, :pop! + rule /\n/, Str::Doc + rule /./, Str::Doc + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/powershell.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/powershell.rb new file mode 100644 index 0000000000..6bee704d45 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/powershell.rb @@ -0,0 +1,679 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'shell.rb' + + class Powershell < Shell + title 'powershell' + desc 'powershell' + tag 'powershell' + aliases 'posh' + filenames '*.ps1', '*.psm1', '*.psd1', '*.psrc', '*.pssc' + mimetypes 'text/x-powershell' + + ATTRIBUTES = %w( + CmdletBinding ConfirmImpact DefaultParameterSetName HelpURI SupportsPaging + SupportsShouldProcess PositionalBinding + ).join('|') + + KEYWORDS = %w( + Begin Exit Process Break Filter Return Catch Finally Sequence Class For + Switch Continue ForEach Throw Data From Trap Define Function Try Do If + Until DynamicParam In Using Else InlineScript Var ElseIf Parallel While + End Param Workflow + ).join('|') + + KEYWORDS_TYPE = %w( + bool byte char decimal double float int long object sbyte + short string uint ulong ushort + ).join('|') + + OPERATORS = %w( + -split -isplit -csplit -join -is -isnot -as -eq -ieq -ceq -ne -ine + -cne -gt -igt -cgt -ge -ige -cge -lt -ilt -clt -le -ile -cle -like + -ilike -clike -notlike -inotlike -cnotlike -match -imatch -cmatch + -notmatch -inotmatch -cnotmatch -contains -icontains -ccontains + -notcontains -inotcontains -cnotcontains -replace -ireplace + -creplace -band -bor -bxor -and -or -xor \. & = \+= -= \*= \/= %= + ).join('|') + + BUILTINS = %w( + Add-ProvisionedAppxPackage Add-WindowsFeature Apply-WindowsUnattend + Begin-WebCommitDelay Disable-PhysicalDiskIndication + Disable-StorageDiagnosticLog Enable-PhysicalDiskIndication + Enable-StorageDiagnosticLog End-WebCommitDelay Expand-IscsiVirtualDisk + Flush-Volume Get-DiskSNV Get-PhysicalDiskSNV Get-ProvisionedAppxPackage + Get-StorageEnclosureSNV Initialize-Volume Move-SmbClient + Remove-ProvisionedAppxPackage Remove-WindowsFeature Write-FileSystemCache + Add-BCDataCacheExtension Add-DnsClientNrptRule Add-DtcClusterTMMapping + Add-EtwTraceProvider Add-InitiatorIdToMaskingSet Add-MpPreference + Add-NetEventNetworkAdapter Add-NetEventPacketCaptureProvider + Add-NetEventProvider Add-NetEventVFPProvider Add-NetEventVmNetworkAdapter + Add-NetEventVmSwitch Add-NetEventVmSwitchProvider + Add-NetEventWFPCaptureProvider Add-NetIPHttpsCertBinding Add-NetLbfoTeamMember + Add-NetLbfoTeamNic Add-NetNatExternalAddress Add-NetNatStaticMapping + Add-NetSwitchTeamMember Add-OdbcDsn Add-PartitionAccessPath Add-PhysicalDisk + Add-Printer Add-PrinterDriver Add-PrinterPort Add-RDServer Add-RDSessionHost + Add-RDVirtualDesktopToCollection Add-TargetPortToMaskingSet + Add-VirtualDiskToMaskingSet Add-VpnConnection Add-VpnConnectionRoute + Add-VpnConnectionTriggerApplication Add-VpnConnectionTriggerDnsConfiguration + Add-VpnConnectionTriggerTrustedNetwork Block-FileShareAccess + Block-SmbShareAccess Clear-AssignedAccess Clear-BCCache Clear-Disk + Clear-DnsClientCache Clear-FileStorageTier Clear-PcsvDeviceLog + Clear-StorageDiagnosticInfo Close-SmbOpenFile Close-SmbSession Compress-Archive + Configuration Connect-IscsiTarget Connect-VirtualDisk ConvertFrom-SddlString + Copy-NetFirewallRule Copy-NetIPsecMainModeCryptoSet Copy-NetIPsecMainModeRule + Copy-NetIPsecPhase1AuthSet Copy-NetIPsecPhase2AuthSet + Copy-NetIPsecQuickModeCryptoSet Copy-NetIPsecRule Debug-FileShare + Debug-MMAppPrelaunch Debug-StorageSubSystem Debug-Volume Disable-BC + Disable-BCDowngrading Disable-BCServeOnBattery + Disable-DAManualEntryPointSelection Disable-DscDebug Disable-MMAgent + Disable-NetAdapter Disable-NetAdapterBinding Disable-NetAdapterChecksumOffload + Disable-NetAdapterEncapsulatedPacketTaskOffload Disable-NetAdapterIPsecOffload + Disable-NetAdapterLso Disable-NetAdapterPacketDirect + Disable-NetAdapterPowerManagement Disable-NetAdapterQos Disable-NetAdapterRdma + Disable-NetAdapterRsc Disable-NetAdapterRss Disable-NetAdapterSriov + Disable-NetAdapterVmq Disable-NetDnsTransitionConfiguration + Disable-NetFirewallRule Disable-NetIPHttpsProfile Disable-NetIPsecMainModeRule + Disable-NetIPsecRule Disable-NetNatTransitionConfiguration + Disable-NetworkSwitchEthernetPort Disable-NetworkSwitchFeature + Disable-NetworkSwitchVlan Disable-OdbcPerfCounter + Disable-PhysicalDiskIdentification Disable-PnpDevice Disable-PSTrace + Disable-PSWSManCombinedTrace Disable-RDVirtualDesktopADMachineAccountReuse + Disable-ScheduledTask Disable-ServerManagerStandardUserRemoting + Disable-SmbDelegation Disable-StorageEnclosureIdentification + Disable-StorageHighAvailability Disable-StorageMaintenanceMode Disable-Ual + Disable-WdacBidTrace Disable-WSManTrace Disconnect-IscsiTarget + Disconnect-NfsSession Disconnect-RDUser Disconnect-VirtualDisk + Dismount-DiskImage Enable-BCDistributed Enable-BCDowngrading + Enable-BCHostedClient Enable-BCHostedServer Enable-BCLocal + Enable-BCServeOnBattery Enable-DAManualEntryPointSelection Enable-DscDebug + Enable-MMAgent Enable-NetAdapter Enable-NetAdapterBinding + Enable-NetAdapterChecksumOffload Enable-NetAdapterEncapsulatedPacketTaskOffload + Enable-NetAdapterIPsecOffload Enable-NetAdapterLso + Enable-NetAdapterPacketDirect Enable-NetAdapterPowerManagement + Enable-NetAdapterQos Enable-NetAdapterRdma Enable-NetAdapterRsc + Enable-NetAdapterRss Enable-NetAdapterSriov Enable-NetAdapterVmq + Enable-NetDnsTransitionConfiguration Enable-NetFirewallRule + Enable-NetIPHttpsProfile Enable-NetIPsecMainModeRule Enable-NetIPsecRule + Enable-NetNatTransitionConfiguration Enable-NetworkSwitchEthernetPort + Enable-NetworkSwitchFeature Enable-NetworkSwitchVlan Enable-OdbcPerfCounter + Enable-PhysicalDiskIdentification Enable-PnpDevice Enable-PSTrace + Enable-PSWSManCombinedTrace Enable-RDVirtualDesktopADMachineAccountReuse + Enable-ScheduledTask Enable-ServerManagerStandardUserRemoting + Enable-SmbDelegation Enable-StorageEnclosureIdentification + Enable-StorageHighAvailability Enable-StorageMaintenanceMode Enable-Ual + Enable-WdacBidTrace Enable-WSManTrace Expand-Archive Export-BCCachePackage + Export-BCSecretKey Export-IscsiTargetServerConfiguration + Export-ODataEndpointProxy Export-RDPersonalSessionDesktopAssignment + Export-RDPersonalVirtualDesktopAssignment Export-ScheduledTask + Find-NetIPsecRule Find-NetRoute Format-Hex Format-Volume Get-AppBackgroundTask + Get-AppvVirtualProcess Get-AppxLastError Get-AppxLog Get-AssignedAccess + Get-AutologgerConfig Get-BCClientConfiguration Get-BCContentServerConfiguration + Get-BCDataCache Get-BCDataCacheExtension Get-BCHashCache + Get-BCHostedCacheServerConfiguration Get-BCNetworkConfiguration Get-BCStatus + Get-ClusteredScheduledTask Get-DAClientExperienceConfiguration + Get-DAConnectionStatus Get-DAEntryPointTableItem Get-DedupProperties Get-Disk + Get-DiskImage Get-DiskStorageNodeView Get-DisplayResolution Get-DnsClient + Get-DnsClientCache Get-DnsClientGlobalSetting Get-DnsClientNrptGlobal + Get-DnsClientNrptPolicy Get-DnsClientNrptRule Get-DnsClientServerAddress + Get-DscConfiguration Get-DscConfigurationStatus + Get-DscLocalConfigurationManager Get-DscResource Get-Dtc + Get-DtcAdvancedHostSetting Get-DtcAdvancedSetting Get-DtcClusterDefault + Get-DtcClusterTMMapping Get-DtcDefault Get-DtcLog Get-DtcNetworkSetting + Get-DtcTransaction Get-DtcTransactionsStatistics + Get-DtcTransactionsTraceSession Get-DtcTransactionsTraceSetting + Get-EtwTraceProvider Get-EtwTraceSession Get-FileHash Get-FileIntegrity + Get-FileShare Get-FileShareAccessControlEntry Get-FileStorageTier + Get-InitiatorId Get-InitiatorPort Get-IscsiConnection Get-IscsiSession + Get-IscsiTarget Get-IscsiTargetPortal Get-IseSnippet Get-LogProperties + Get-MaskingSet Get-MMAgent Get-MpComputerStatus Get-MpPreference Get-MpThreat + Get-MpThreatCatalog Get-MpThreatDetection Get-NCSIPolicyConfiguration + Get-Net6to4Configuration Get-NetAdapter Get-NetAdapterAdvancedProperty + Get-NetAdapterBinding Get-NetAdapterChecksumOffload + Get-NetAdapterEncapsulatedPacketTaskOffload Get-NetAdapterHardwareInfo + Get-NetAdapterIPsecOffload Get-NetAdapterLso Get-NetAdapterPacketDirect + Get-NetAdapterPowerManagement Get-NetAdapterQos Get-NetAdapterRdma + Get-NetAdapterRsc Get-NetAdapterRss Get-NetAdapterSriov Get-NetAdapterSriovVf + Get-NetAdapterStatistics Get-NetAdapterVmq Get-NetAdapterVMQQueue + Get-NetAdapterVPort Get-NetCompartment Get-NetConnectionProfile + Get-NetDnsTransitionConfiguration Get-NetDnsTransitionMonitoring + Get-NetEventNetworkAdapter Get-NetEventPacketCaptureProvider + Get-NetEventProvider Get-NetEventSession Get-NetEventVFPProvider + Get-NetEventVmNetworkAdapter Get-NetEventVmSwitch Get-NetEventVmSwitchProvider + Get-NetEventWFPCaptureProvider Get-NetFirewallAddressFilter + Get-NetFirewallApplicationFilter Get-NetFirewallInterfaceFilter + Get-NetFirewallInterfaceTypeFilter Get-NetFirewallPortFilter + Get-NetFirewallProfile Get-NetFirewallRule Get-NetFirewallSecurityFilter + Get-NetFirewallServiceFilter Get-NetFirewallSetting Get-NetIPAddress + Get-NetIPConfiguration Get-NetIPHttpsConfiguration Get-NetIPHttpsState + Get-NetIPInterface Get-NetIPsecDospSetting Get-NetIPsecMainModeCryptoSet + Get-NetIPsecMainModeRule Get-NetIPsecMainModeSA Get-NetIPsecPhase1AuthSet + Get-NetIPsecPhase2AuthSet Get-NetIPsecQuickModeCryptoSet + Get-NetIPsecQuickModeSA Get-NetIPsecRule Get-NetIPv4Protocol + Get-NetIPv6Protocol Get-NetIsatapConfiguration Get-NetLbfoTeam + Get-NetLbfoTeamMember Get-NetLbfoTeamNic Get-NetNat Get-NetNatExternalAddress + Get-NetNatGlobal Get-NetNatSession Get-NetNatStaticMapping + Get-NetNatTransitionConfiguration Get-NetNatTransitionMonitoring + Get-NetNeighbor Get-NetOffloadGlobalSetting Get-NetPrefixPolicy + Get-NetQosPolicy Get-NetRoute Get-NetSwitchTeam Get-NetSwitchTeamMember + Get-NetTCPConnection Get-NetTCPSetting Get-NetTeredoConfiguration + Get-NetTeredoState Get-NetTransportFilter Get-NetUDPEndpoint Get-NetUDPSetting + Get-NetworkSwitchEthernetPort Get-NetworkSwitchFeature + Get-NetworkSwitchGlobalData Get-NetworkSwitchVlan Get-NfsClientConfiguration + Get-NfsClientgroup Get-NfsClientLock Get-NfsMappingStore Get-NfsMountedClient + Get-NfsNetgroupStore Get-NfsOpenFile Get-NfsServerConfiguration Get-NfsSession + Get-NfsShare Get-NfsSharePermission Get-NfsStatistics Get-OdbcDriver + Get-OdbcDsn Get-OdbcPerfCounter Get-OffloadDataTransferSetting Get-Partition + Get-PartitionSupportedSize Get-PcsvDevice Get-PcsvDeviceLog Get-PhysicalDisk + Get-PhysicalDiskStorageNodeView Get-PhysicalExtent + Get-PhysicalExtentAssociation Get-PlatformIdentifier Get-PnpDevice + Get-PnpDeviceProperty Get-PrintConfiguration Get-Printer Get-PrinterDriver + Get-PrinterPort Get-PrinterProperty Get-PrintJob Get-RDAvailableApp + Get-RDCertificate Get-RDConnectionBrokerHighAvailability + Get-RDDeploymentGatewayConfiguration Get-RDFileTypeAssociation + Get-RDLicenseConfiguration Get-RDPersonalSessionDesktopAssignment + Get-RDPersonalVirtualDesktopAssignment + Get-RDPersonalVirtualDesktopPatchSchedule Get-RDRemoteApp Get-RDRemoteDesktop + Get-RDServer Get-RDSessionCollection Get-RDSessionCollectionConfiguration + Get-RDSessionHost Get-RDUserSession Get-RDVirtualDesktop + Get-RDVirtualDesktopCollection Get-RDVirtualDesktopCollectionConfiguration + Get-RDVirtualDesktopCollectionJobStatus Get-RDVirtualDesktopConcurrency + Get-RDVirtualDesktopIdleCount Get-RDVirtualDesktopTemplateExportPath + Get-RDWorkspace Get-ResiliencySetting Get-ScheduledTask Get-ScheduledTaskInfo + Get-SilComputer Get-SilComputerIdentity Get-SilData Get-SilLogging + Get-SilSoftware Get-SilUalAccess Get-SilWindowsUpdate Get-SmbBandWidthLimit + Get-SmbClientConfiguration Get-SmbClientNetworkInterface Get-SmbConnection + Get-SmbDelegation Get-SmbMapping Get-SmbMultichannelConnection + Get-SmbMultichannelConstraint Get-SmbOpenFile Get-SmbServerConfiguration + Get-SmbServerNetworkInterface Get-SmbSession Get-SmbShare Get-SmbShareAccess + Get-SmbWitnessClient Get-SMCounterSample Get-SMPerformanceCollector + Get-SMServerBpaResult Get-SMServerClusterName Get-SMServerEvent + Get-SMServerFeature Get-SMServerInventory Get-SMServerService Get-StartApps + Get-StorageAdvancedProperty Get-StorageDiagnosticInfo Get-StorageEnclosure + Get-StorageEnclosureStorageNodeView Get-StorageEnclosureVendorData + Get-StorageFaultDomain Get-StorageFileServer Get-StorageFirmwareInformation + Get-StorageHealthAction Get-StorageHealthReport Get-StorageHealthSetting + Get-StorageJob Get-StorageNode Get-StoragePool Get-StorageProvider + Get-StorageReliabilityCounter Get-StorageSetting Get-StorageSubSystem + Get-StorageTier Get-StorageTierSupportedSize Get-SupportedClusterSizes + Get-SupportedFileSystems Get-TargetPort Get-TargetPortal Get-Ual + Get-UalDailyAccess Get-UalDailyDeviceAccess Get-UalDailyUserAccess + Get-UalDeviceAccess Get-UalDns Get-UalHyperV Get-UalOverview + Get-UalServerDevice Get-UalServerUser Get-UalSystemId Get-UalUserAccess + Get-VirtualDisk Get-VirtualDiskSupportedSize Get-Volume + Get-VolumeCorruptionCount Get-VolumeScrubPolicy Get-VpnConnection + Get-VpnConnectionTrigger Get-WdacBidTrace Get-WindowsFeature + Get-WindowsUpdateLog Grant-FileShareAccess Grant-NfsSharePermission + Grant-RDOUAccess Grant-SmbShareAccess Hide-VirtualDisk Import-BCCachePackage + Import-BCSecretKey Import-IscsiTargetServerConfiguration Import-IseSnippet + Import-PowerShellDataFile Import-RDPersonalSessionDesktopAssignment + Import-RDPersonalVirtualDesktopAssignment Initialize-Disk Install-Dtc + Install-WindowsFeature Invoke-AsWorkflow Invoke-RDUserLogoff Mount-DiskImage + Move-RDVirtualDesktop Move-SmbWitnessClient New-AutologgerConfig + New-DAEntryPointTableItem New-DscChecksum New-EapConfiguration + New-EtwTraceSession New-FileShare New-Guid New-IscsiTargetPortal New-IseSnippet + New-MaskingSet New-NetAdapterAdvancedProperty New-NetEventSession + New-NetFirewallRule New-NetIPAddress New-NetIPHttpsConfiguration + New-NetIPsecDospSetting New-NetIPsecMainModeCryptoSet New-NetIPsecMainModeRule + New-NetIPsecPhase1AuthSet New-NetIPsecPhase2AuthSet + New-NetIPsecQuickModeCryptoSet New-NetIPsecRule New-NetLbfoTeam New-NetNat + New-NetNatTransitionConfiguration New-NetNeighbor New-NetQosPolicy New-NetRoute + New-NetSwitchTeam New-NetTransportFilter New-NetworkSwitchVlan + New-NfsClientgroup New-NfsShare New-Partition New-PSWorkflowSession + New-RDCertificate New-RDPersonalVirtualDesktopPatchSchedule New-RDRemoteApp + New-RDSessionCollection New-RDSessionDeployment New-RDVirtualDesktopCollection + New-RDVirtualDesktopDeployment New-ScheduledTask New-ScheduledTaskAction + New-ScheduledTaskPrincipal New-ScheduledTaskSettingsSet + New-ScheduledTaskTrigger New-SmbMapping New-SmbMultichannelConstraint + New-SmbShare New-StorageFileServer New-StoragePool + New-StorageSubsystemVirtualDisk New-StorageTier New-TemporaryFile + New-VirtualDisk New-VirtualDiskClone New-VirtualDiskSnapshot New-Volume + New-VpnServerAddress Open-NetGPO Optimize-StoragePool Optimize-Volume + Publish-BCFileContent Publish-BCWebContent Publish-SilData Read-PrinterNfcTag + Register-ClusteredScheduledTask Register-DnsClient Register-IscsiSession + Register-ScheduledTask Register-StorageSubsystem Remove-AutologgerConfig + Remove-BCDataCacheExtension Remove-DAEntryPointTableItem + Remove-DnsClientNrptRule Remove-DscConfigurationDocument + Remove-DtcClusterTMMapping Remove-EtwTraceProvider Remove-EtwTraceSession + Remove-FileShare Remove-InitiatorId Remove-InitiatorIdFromMaskingSet + Remove-IscsiTargetPortal Remove-MaskingSet Remove-MpPreference Remove-MpThreat + Remove-NetAdapterAdvancedProperty Remove-NetEventNetworkAdapter + Remove-NetEventPacketCaptureProvider Remove-NetEventProvider + Remove-NetEventSession Remove-NetEventVFPProvider + Remove-NetEventVmNetworkAdapter Remove-NetEventVmSwitch + Remove-NetEventVmSwitchProvider Remove-NetEventWFPCaptureProvider + Remove-NetFirewallRule Remove-NetIPAddress Remove-NetIPHttpsCertBinding + Remove-NetIPHttpsConfiguration Remove-NetIPsecDospSetting + Remove-NetIPsecMainModeCryptoSet Remove-NetIPsecMainModeRule + Remove-NetIPsecMainModeSA Remove-NetIPsecPhase1AuthSet + Remove-NetIPsecPhase2AuthSet Remove-NetIPsecQuickModeCryptoSet + Remove-NetIPsecQuickModeSA Remove-NetIPsecRule Remove-NetLbfoTeam + Remove-NetLbfoTeamMember Remove-NetLbfoTeamNic Remove-NetNat + Remove-NetNatExternalAddress Remove-NetNatStaticMapping + Remove-NetNatTransitionConfiguration Remove-NetNeighbor Remove-NetQosPolicy + Remove-NetRoute Remove-NetSwitchTeam Remove-NetSwitchTeamMember + Remove-NetTransportFilter Remove-NetworkSwitchEthernetPortIPAddress + Remove-NetworkSwitchVlan Remove-NfsClientgroup Remove-NfsShare Remove-OdbcDsn + Remove-Partition Remove-PartitionAccessPath Remove-PhysicalDisk Remove-Printer + Remove-PrinterDriver Remove-PrinterPort Remove-PrintJob + Remove-RDDatabaseConnectionString Remove-RDPersonalSessionDesktopAssignment + Remove-RDPersonalVirtualDesktopAssignment + Remove-RDPersonalVirtualDesktopPatchSchedule Remove-RDRemoteApp Remove-RDServer + Remove-RDSessionCollection Remove-RDSessionHost + Remove-RDVirtualDesktopCollection Remove-RDVirtualDesktopFromCollection + Remove-SmbBandwidthLimit Remove-SmbMapping Remove-SmbMultichannelConstraint + Remove-SmbShare Remove-SMServerPerformanceLog Remove-StorageFileServer + Remove-StorageHealthSetting Remove-StoragePool Remove-StorageTier + Remove-TargetPortFromMaskingSet Remove-VirtualDisk + Remove-VirtualDiskFromMaskingSet Remove-VpnConnection Remove-VpnConnectionRoute + Remove-VpnConnectionTriggerApplication + Remove-VpnConnectionTriggerDnsConfiguration + Remove-VpnConnectionTriggerTrustedNetwork Rename-DAEntryPointTableItem + Rename-MaskingSet Rename-NetAdapter Rename-NetFirewallRule + Rename-NetIPHttpsConfiguration Rename-NetIPsecMainModeCryptoSet + Rename-NetIPsecMainModeRule Rename-NetIPsecPhase1AuthSet + Rename-NetIPsecPhase2AuthSet Rename-NetIPsecQuickModeCryptoSet + Rename-NetIPsecRule Rename-NetLbfoTeam Rename-NetSwitchTeam + Rename-NfsClientgroup Rename-Printer Repair-FileIntegrity Repair-VirtualDisk + Repair-Volume Reset-BC Reset-DAClientExperienceConfiguration + Reset-DAEntryPointTableItem Reset-DtcLog Reset-NCSIPolicyConfiguration + Reset-Net6to4Configuration Reset-NetAdapterAdvancedProperty + Reset-NetDnsTransitionConfiguration Reset-NetIPHttpsConfiguration + Reset-NetIsatapConfiguration Reset-NetTeredoConfiguration Reset-NfsStatistics + Reset-PhysicalDisk Reset-StorageReliabilityCounter Resize-Partition + Resize-StorageTier Resize-VirtualDisk Resolve-NfsMappedIdentity + Restart-NetAdapter Restart-PcsvDevice Restart-PrintJob Restore-DscConfiguration + Restore-NetworkSwitchConfiguration Resume-PrintJob Revoke-FileShareAccess + Revoke-NfsClientLock Revoke-NfsMountedClient Revoke-NfsOpenFile + Revoke-NfsSharePermission Revoke-SmbShareAccess Save-NetGPO + Save-NetworkSwitchConfiguration Send-EtwTraceSession Send-RDUserMessage + Set-AssignedAccess Set-AutologgerConfig Set-BCAuthentication Set-BCCache + Set-BCDataCacheEntryMaxAge Set-BCMinSMBLatency Set-BCSecretKey + Set-ClusteredScheduledTask Set-DAClientExperienceConfiguration + Set-DAEntryPointTableItem Set-Disk Set-DisplayResolution Set-DnsClient + Set-DnsClientGlobalSetting Set-DnsClientNrptGlobal Set-DnsClientNrptRule + Set-DnsClientServerAddress Set-DtcAdvancedHostSetting Set-DtcAdvancedSetting + Set-DtcClusterDefault Set-DtcClusterTMMapping Set-DtcDefault Set-DtcLog + Set-DtcNetworkSetting Set-DtcTransaction Set-DtcTransactionsTraceSession + Set-DtcTransactionsTraceSetting Set-EtwTraceProvider Set-EtwTraceSession + Set-FileIntegrity Set-FileShare Set-FileStorageTier Set-InitiatorPort + Set-IscsiChapSecret Set-LogProperties Set-MMAgent Set-MpPreference + Set-NCSIPolicyConfiguration Set-Net6to4Configuration Set-NetAdapter + Set-NetAdapterAdvancedProperty Set-NetAdapterBinding + Set-NetAdapterChecksumOffload Set-NetAdapterEncapsulatedPacketTaskOffload + Set-NetAdapterIPsecOffload Set-NetAdapterLso Set-NetAdapterPacketDirect + Set-NetAdapterPowerManagement Set-NetAdapterQos Set-NetAdapterRdma + Set-NetAdapterRsc Set-NetAdapterRss Set-NetAdapterSriov Set-NetAdapterVmq + Set-NetConnectionProfile Set-NetDnsTransitionConfiguration + Set-NetEventPacketCaptureProvider Set-NetEventProvider Set-NetEventSession + Set-NetEventVFPProvider Set-NetEventVmSwitchProvider + Set-NetEventWFPCaptureProvider Set-NetFirewallAddressFilter + Set-NetFirewallApplicationFilter Set-NetFirewallInterfaceFilter + Set-NetFirewallInterfaceTypeFilter Set-NetFirewallPortFilter + Set-NetFirewallProfile Set-NetFirewallRule Set-NetFirewallSecurityFilter + Set-NetFirewallServiceFilter Set-NetFirewallSetting Set-NetIPAddress + Set-NetIPHttpsConfiguration Set-NetIPInterface Set-NetIPsecDospSetting + Set-NetIPsecMainModeCryptoSet Set-NetIPsecMainModeRule + Set-NetIPsecPhase1AuthSet Set-NetIPsecPhase2AuthSet + Set-NetIPsecQuickModeCryptoSet Set-NetIPsecRule Set-NetIPv4Protocol + Set-NetIPv6Protocol Set-NetIsatapConfiguration Set-NetLbfoTeam + Set-NetLbfoTeamMember Set-NetLbfoTeamNic Set-NetNat Set-NetNatGlobal + Set-NetNatTransitionConfiguration Set-NetNeighbor Set-NetOffloadGlobalSetting + Set-NetQosPolicy Set-NetRoute Set-NetTCPSetting Set-NetTeredoConfiguration + Set-NetUDPSetting Set-NetworkSwitchEthernetPortIPAddress + Set-NetworkSwitchPortMode Set-NetworkSwitchPortProperty + Set-NetworkSwitchVlanProperty Set-NfsClientConfiguration Set-NfsClientgroup + Set-NfsMappingStore Set-NfsNetgroupStore Set-NfsServerConfiguration + Set-NfsShare Set-OdbcDriver Set-OdbcDsn Set-Partition + Set-PcsvDeviceBootConfiguration Set-PcsvDeviceNetworkConfiguration + Set-PcsvDeviceUserPassword Set-PhysicalDisk Set-PrintConfiguration Set-Printer + Set-PrinterProperty Set-RDActiveManagementServer Set-RDCertificate + Set-RDClientAccessName Set-RDConnectionBrokerHighAvailability + Set-RDDatabaseConnectionString Set-RDDeploymentGatewayConfiguration + Set-RDFileTypeAssociation Set-RDLicenseConfiguration + Set-RDPersonalSessionDesktopAssignment Set-RDPersonalVirtualDesktopAssignment + Set-RDPersonalVirtualDesktopPatchSchedule Set-RDRemoteApp Set-RDRemoteDesktop + Set-RDSessionCollectionConfiguration Set-RDSessionHost + Set-RDVirtualDesktopCollectionConfiguration Set-RDVirtualDesktopConcurrency + Set-RDVirtualDesktopIdleCount Set-RDVirtualDesktopTemplateExportPath + Set-RDWorkspace Set-ResiliencySetting Set-ScheduledTask Set-SilLogging + Set-SmbBandwidthLimit Set-SmbClientConfiguration Set-SmbPathAcl + Set-SmbServerConfiguration Set-SmbShare Set-StorageFileServer + Set-StorageHealthSetting Set-StoragePool Set-StorageProvider Set-StorageSetting + Set-StorageSubSystem Set-StorageTier Set-VirtualDisk Set-Volume + Set-VolumeScrubPolicy Set-VpnConnection Set-VpnConnectionIPsecConfiguration + Set-VpnConnectionProxy Set-VpnConnectionTriggerDnsConfiguration + Set-VpnConnectionTriggerTrustedNetwork Show-NetFirewallRule Show-NetIPsecRule + Show-VirtualDisk Start-AppBackgroundTask Start-AppvVirtualProcess + Start-AutologgerConfig Start-Dtc Start-DtcTransactionsTraceSession Start-MpScan + Start-MpWDOScan Start-NetEventSession Start-PcsvDevice Start-ScheduledTask + Start-SilLogging Start-SMPerformanceCollector Start-StorageDiagnosticLog + Start-Trace Stop-DscConfiguration Stop-Dtc Stop-DtcTransactionsTraceSession + Stop-NetEventSession Stop-PcsvDevice Stop-RDVirtualDesktopCollectionJob + Stop-ScheduledTask Stop-SilLogging Stop-SMPerformanceCollector + Stop-StorageDiagnosticLog Stop-StorageJob Stop-Trace Suspend-PrintJob + Sync-NetIPsecRule Test-Dtc Test-NetConnection Test-NfsMappingStore + Test-RDOUAccess Test-RDVirtualDesktopADMachineAccountReuse + Unblock-FileShareAccess Unblock-SmbShareAccess Uninstall-Dtc + Uninstall-WindowsFeature Unregister-AppBackgroundTask + Unregister-ClusteredScheduledTask Unregister-IscsiSession + Unregister-ScheduledTask Unregister-StorageSubsystem Update-Disk + Update-DscConfiguration Update-HostStorageCache Update-IscsiTarget + Update-IscsiTargetPortal Update-MpSignature Update-NetIPsecRule + Update-RDVirtualDesktopCollection Update-SmbMultichannelConnection + Update-StorageFirmware Update-StoragePool Update-StorageProviderCache + Write-DtcTransactionsTraceSession Write-PrinterNfcTag Write-VolumeCache + Add-ADCentralAccessPolicyMember Add-ADComputerServiceAccount + Add-ADDomainControllerPasswordReplicationPolicy + Add-ADFineGrainedPasswordPolicySubject Add-ADGroupMember + Add-ADPrincipalGroupMembership Add-ADResourcePropertyListMember + Add-AppvClientConnectionGroup Add-AppvClientPackage Add-AppvPublishingServer + Add-AppxPackage Add-AppxProvisionedPackage Add-AppxVolume Add-BitsFile + Add-CertificateEnrollmentPolicyServer Add-ClusteriSCSITargetServerRole + Add-Computer Add-Content Add-IscsiVirtualDiskTargetMapping Add-JobTrigger + Add-KdsRootKey Add-LocalGroupMember Add-Member Add-SignerRule Add-Type + Add-WebConfiguration Add-WebConfigurationLock Add-WebConfigurationProperty + Add-WindowsCapability Add-WindowsDriver Add-WindowsImage Add-WindowsPackage + Backup-AuditPolicy Backup-SecurityPolicy Backup-WebConfiguration + Checkpoint-Computer Checkpoint-IscsiVirtualDisk Clear-ADAccountExpiration + Clear-ADClaimTransformLink Clear-Content Clear-EventLog + Clear-IISCentralCertProvider Clear-IISConfigCollection Clear-Item + Clear-ItemProperty Clear-KdsCache Clear-RecycleBin Clear-Tpm + Clear-UevAppxPackage Clear-UevConfiguration Clear-Variable + Clear-WebCentralCertProvider Clear-WebConfiguration + Clear-WebRequestTracingSetting Clear-WebRequestTracingSettings + Clear-WindowsCorruptMountPoint Compare-Object Complete-BitsTransfer + Complete-DtcDiagnosticTransaction Complete-Transaction Confirm-SecureBootUEFI + Connect-WSMan ConvertFrom-CIPolicy ConvertFrom-Csv ConvertFrom-Json + ConvertFrom-SecureString ConvertFrom-String ConvertFrom-StringData + Convert-IscsiVirtualDisk Convert-Path Convert-String ConvertTo-Csv + ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-TpmOwnerAuth + ConvertTo-WebApplication ConvertTo-Xml Copy-Item Copy-ItemProperty + Debug-Process Debug-Runspace Disable-ADAccount Disable-ADOptionalFeature + Disable-AppBackgroundTaskDiagnosticLog Disable-Appv + Disable-AppvClientConnectionGroup Disable-ComputerRestore + Disable-IISCentralCertProvider Disable-IISSharedConfig Disable-JobTrigger + Disable-LocalUser Disable-PSBreakpoint Disable-RunspaceDebug + Disable-ScheduledJob Disable-TlsCipherSuite Disable-TlsEccCurve + Disable-TlsSessionTicketKey Disable-TpmAutoProvisioning Disable-Uev + Disable-UevAppxPackage Disable-UevTemplate Disable-WebCentralCertProvider + Disable-WebGlobalModule Disable-WebRequestTracing Disable-WindowsErrorReporting + Disable-WindowsOptionalFeature Disable-WSManCredSSP Disconnect-WSMan + Dismount-AppxVolume Dismount-IscsiVirtualDiskSnapshot Dismount-WindowsImage + Edit-CIPolicyRule Enable-ADAccount Enable-ADOptionalFeature + Enable-AppBackgroundTaskDiagnosticLog Enable-Appv + Enable-AppvClientConnectionGroup Enable-ComputerRestore + Enable-IISCentralCertProvider Enable-IISSharedConfig Enable-JobTrigger + Enable-LocalUser Enable-PSBreakpoint Enable-RunspaceDebug Enable-ScheduledJob + Enable-TlsCipherSuite Enable-TlsEccCurve Enable-TlsSessionTicketKey + Enable-TpmAutoProvisioning Enable-Uev Enable-UevAppxPackage Enable-UevTemplate + Enable-WebCentralCertProvider Enable-WebGlobalModule Enable-WebRequestTracing + Enable-WindowsErrorReporting Enable-WindowsOptionalFeature Enable-WSManCredSSP + Expand-WindowsCustomDataImage Expand-WindowsImage Export-Alias + Export-BinaryMiLog Export-Certificate Export-Clixml Export-Counter Export-Csv + Export-FormatData Export-IISConfiguration Export-IscsiVirtualDiskSnapshot + Export-PfxCertificate Export-PSSession Export-StartLayout + Export-TlsSessionTicketKey Export-UevConfiguration Export-UevPackage + Export-WindowsDriver Export-WindowsImage Format-Custom Format-List + Format-SecureBootUEFI Format-Table Format-Wide Get-Acl + Get-ADAccountAuthorizationGroup Get-ADAccountResultantPasswordReplicationPolicy + Get-ADAuthenticationPolicy Get-ADAuthenticationPolicySilo + Get-ADCentralAccessPolicy Get-ADCentralAccessRule Get-ADClaimTransformPolicy + Get-ADClaimType Get-ADComputer Get-ADComputerServiceAccount + Get-ADDCCloningExcludedApplicationList Get-ADDefaultDomainPasswordPolicy + Get-ADDomain Get-ADDomainController + Get-ADDomainControllerPasswordReplicationPolicy + Get-ADDomainControllerPasswordReplicationPolicyUsage + Get-ADFineGrainedPasswordPolicy Get-ADFineGrainedPasswordPolicySubject + Get-ADForest Get-ADGroup Get-ADGroupMember Get-ADObject Get-ADOptionalFeature + Get-ADOrganizationalUnit Get-ADPrincipalGroupMembership + Get-ADReplicationAttributeMetadata Get-ADReplicationConnection + Get-ADReplicationFailure Get-ADReplicationPartnerMetadata + Get-ADReplicationQueueOperation Get-ADReplicationSite Get-ADReplicationSiteLink + Get-ADReplicationSiteLinkBridge Get-ADReplicationSubnet + Get-ADReplicationUpToDatenessVectorTable Get-ADResourceProperty + Get-ADResourcePropertyList Get-ADResourcePropertyValueType Get-ADRootDSE + Get-ADServiceAccount Get-ADTrust Get-ADUser Get-ADUserResultantPasswordPolicy + Get-Alias Get-AppLockerFileInformation Get-AppLockerPolicy + Get-AppvClientApplication Get-AppvClientConfiguration + Get-AppvClientConnectionGroup Get-AppvClientMode Get-AppvClientPackage + Get-AppvPublishingServer Get-AppvStatus Get-AppxDefaultVolume Get-AppxPackage + Get-AppxPackageManifest Get-AppxProvisionedPackage Get-AppxVolume + Get-AuthenticodeSignature Get-BitsTransfer Get-BpaModel Get-BpaResult + Get-Certificate Get-CertificateAutoEnrollmentPolicy + Get-CertificateEnrollmentPolicyServer Get-CertificateNotificationTask + Get-ChildItem Get-CimAssociatedInstance Get-CimClass Get-CimInstance + Get-CimSession Get-CIPolicy Get-CIPolicyIdInfo Get-CIPolicyInfo Get-Clipboard + Get-CmsMessage Get-ComputerInfo Get-ComputerRestorePoint Get-Content + Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-DAPolicyChange + Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy + Get-FormatData Get-Host Get-HotFix Get-IISAppPool Get-IISCentralCertProvider + Get-IISConfigAttributeValue Get-IISConfigCollection + Get-IISConfigCollectionElement Get-IISConfigElement Get-IISConfigSection + Get-IISServerManager Get-IISSharedConfig Get-IISSite Get-IscsiServerTarget + Get-IscsiTargetServerSetting Get-IscsiVirtualDisk Get-IscsiVirtualDiskSnapshot + Get-Item Get-ItemProperty Get-ItemPropertyValue Get-JobTrigger + Get-KdsConfiguration Get-KdsRootKey Get-LocalGroup Get-LocalGroupMember + Get-LocalUser Get-Location Get-Member Get-NfsMappedIdentity Get-NfsNetgroup + Get-PfxCertificate Get-PfxData Get-Process Get-PSBreakpoint Get-PSCallStack + Get-PSDrive Get-PSProvider Get-Random Get-Runspace Get-RunspaceDebug + Get-ScheduledJob Get-ScheduledJobOption Get-SecureBootPolicy Get-SecureBootUEFI + Get-Service Get-SystemDriver Get-TimeZone Get-TlsCipherSuite Get-TlsEccCurve + Get-Tpm Get-TpmEndorsementKeyInfo Get-TpmSupportedFeature Get-TraceSource + Get-Transaction Get-TroubleshootingPack Get-TypeData Get-UevAppxPackage + Get-UevConfiguration Get-UevStatus Get-UevTemplate Get-UevTemplateProgram + Get-UICulture Get-Unique Get-Variable Get-WebAppDomain Get-WebApplication + Get-WebAppPoolState Get-WebBinding Get-WebCentralCertProvider Get-WebConfigFile + Get-WebConfiguration Get-WebConfigurationBackup Get-WebConfigurationLocation + Get-WebConfigurationLock Get-WebConfigurationProperty Get-WebFilePath + Get-WebGlobalModule Get-WebHandler Get-WebItemState Get-WebManagedModule + Get-WebRequest Get-Website Get-WebsiteState Get-WebURL Get-WebVirtualDirectory + Get-WheaMemoryPolicy Get-WIMBootEntry + Get-WinAcceptLanguageFromLanguageListOptOut + Get-WinCultureFromLanguageListOptOut Get-WinDefaultInputMethodOverride + Get-WindowsCapability Get-WindowsDeveloperLicense Get-WindowsDriver + Get-WindowsEdition Get-WindowsErrorReporting Get-WindowsImage + Get-WindowsImageContent Get-WindowsOptionalFeature Get-WindowsPackage + Get-WindowsSearchSetting Get-WinEvent Get-WinHomeLocation + Get-WinLanguageBarOption Get-WinSystemLocale Get-WinUILanguageOverride + Get-WinUserLanguageList Get-WmiObject Get-WSManCredSSP Get-WSManInstance + Grant-ADAuthenticationPolicySiloAccess Group-Object Import-Alias + Import-BinaryMiLog Import-Certificate Import-Clixml Import-Counter Import-Csv + Import-IscsiVirtualDisk Import-LocalizedData Import-PfxCertificate + Import-PSSession Import-StartLayout Import-TpmOwnerAuth Import-UevConfiguration + Initialize-Tpm Install-ADServiceAccount Install-NfsMappingStore Invoke-BpaModel + Invoke-CimMethod Invoke-CommandInDesktopPackage Invoke-DscResource + Invoke-Expression Invoke-Item Invoke-RestMethod Invoke-TroubleshootingPack + Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction + Join-DtcDiagnosticResourceManager Join-Path Limit-EventLog Measure-Command + Measure-Object Merge-CIPolicy Mount-AppvClientConnectionGroup + Mount-AppvClientPackage Mount-AppxVolume Mount-IscsiVirtualDiskSnapshot + Mount-WindowsImage Move-ADDirectoryServer + Move-ADDirectoryServerOperationMasterRole Move-ADObject Move-AppxPackage + Move-Item Move-ItemProperty New-ADAuthenticationPolicy + New-ADAuthenticationPolicySilo New-ADCentralAccessPolicy + New-ADCentralAccessRule New-ADClaimTransformPolicy New-ADClaimType + New-ADComputer New-ADDCCloneConfigFile New-ADFineGrainedPasswordPolicy + New-ADGroup New-ADObject New-ADOrganizationalUnit New-ADReplicationSite + New-ADReplicationSiteLink New-ADReplicationSiteLinkBridge + New-ADReplicationSubnet New-ADResourceProperty New-ADResourcePropertyList + New-ADServiceAccount New-ADUser New-Alias New-AppLockerPolicy + New-CertificateNotificationTask New-CimInstance New-CimSession + New-CimSessionOption New-CIPolicy New-CIPolicyRule New-DtcDiagnosticTransaction + New-Event New-EventLog New-FileCatalog New-IISConfigCollectionElement + New-IISSite New-IscsiServerTarget New-IscsiVirtualDisk New-Item + New-ItemProperty New-JobTrigger New-LocalGroup New-LocalUser + New-NetIPsecAuthProposal New-NetIPsecMainModeCryptoProposal + New-NetIPsecQuickModeCryptoProposal New-NfsMappedIdentity New-NfsNetgroup + New-Object New-PSDrive New-PSWorkflowExecutionOption New-ScheduledJobOption + New-SelfSignedCertificate New-Service New-TimeSpan New-TlsSessionTicketKey + New-Variable New-WebApplication New-WebAppPool New-WebBinding New-WebFtpSite + New-WebGlobalModule New-WebHandler New-WebManagedModule New-WebServiceProxy + New-Website New-WebVirtualDirectory New-WindowsCustomImage New-WindowsImage + New-WinEvent New-WinUserLanguageList New-WSManInstance New-WSManSessionOption + Optimize-WindowsImage Out-File Out-GridView Out-Printer Out-String Pop-Location + Protect-CmsMessage Publish-AppvClientPackage Publish-DscConfiguration + Push-Location Read-Host Receive-DtcDiagnosticTransaction + Register-CimIndicationEvent Register-EngineEvent Register-ObjectEvent + Register-ScheduledJob Register-UevTemplate Register-WmiEvent + Remove-ADAuthenticationPolicy Remove-ADAuthenticationPolicySilo + Remove-ADCentralAccessPolicy Remove-ADCentralAccessPolicyMember + Remove-ADCentralAccessRule Remove-ADClaimTransformPolicy Remove-ADClaimType + Remove-ADComputer Remove-ADComputerServiceAccount + Remove-ADDomainControllerPasswordReplicationPolicy + Remove-ADFineGrainedPasswordPolicy Remove-ADFineGrainedPasswordPolicySubject + Remove-ADGroup Remove-ADGroupMember Remove-ADObject Remove-ADOrganizationalUnit + Remove-ADPrincipalGroupMembership Remove-ADReplicationSite + Remove-ADReplicationSiteLink Remove-ADReplicationSiteLinkBridge + Remove-ADReplicationSubnet Remove-ADResourceProperty + Remove-ADResourcePropertyList Remove-ADResourcePropertyListMember + Remove-ADServiceAccount Remove-ADUser Remove-AppvClientConnectionGroup + Remove-AppvClientPackage Remove-AppvPublishingServer Remove-AppxPackage + Remove-AppxProvisionedPackage Remove-AppxVolume Remove-BitsTransfer + Remove-CertificateEnrollmentPolicyServer Remove-CertificateNotificationTask + Remove-CimInstance Remove-CimSession Remove-CIPolicyRule Remove-Computer + Remove-Event Remove-EventLog Remove-IISConfigAttribute + Remove-IISConfigCollectionElement Remove-IISConfigElement Remove-IISSite + Remove-IscsiServerTarget Remove-IscsiVirtualDisk + Remove-IscsiVirtualDiskSnapshot Remove-IscsiVirtualDiskTargetMapping + Remove-Item Remove-ItemProperty Remove-JobTrigger Remove-LocalGroup + Remove-LocalGroupMember Remove-LocalUser Remove-NfsMappedIdentity + Remove-NfsNetgroup Remove-PSBreakpoint Remove-PSDrive Remove-TypeData + Remove-Variable Remove-WebApplication Remove-WebAppPool Remove-WebBinding + Remove-WebConfigurationBackup Remove-WebConfigurationLocation + Remove-WebConfigurationLock Remove-WebConfigurationProperty + Remove-WebGlobalModule Remove-WebHandler Remove-WebManagedModule Remove-Website + Remove-WebVirtualDirectory Remove-WindowsCapability Remove-WindowsDriver + Remove-WindowsImage Remove-WindowsPackage Remove-WmiObject Remove-WSManInstance + Rename-ADObject Rename-Computer Rename-Item Rename-ItemProperty + Rename-LocalGroup Rename-LocalUser Rename-WebConfigurationLocation + Repair-AppvClientConnectionGroup Repair-AppvClientPackage + Repair-UevTemplateIndex Repair-WindowsImage Reset-ADServiceAccountPassword + Reset-ComputerMachinePassword Reset-IISServerManager Resize-IscsiVirtualDisk + Resolve-DnsName Resolve-Path Restart-Computer Restart-Service + Restart-WebAppPool Restart-WebItem Restore-ADObject Restore-AuditPolicy + Restore-Computer Restore-IscsiVirtualDisk Restore-SecurityPolicy + Restore-UevBackup Restore-UevUserSetting Restore-WebConfiguration + Resume-BitsTransfer Resume-Service Revoke-ADAuthenticationPolicySiloAccess + Save-WindowsImage Search-ADAccount Select-Object Select-String + Select-WebConfiguration Select-Xml Send-AppvClientReport + Send-DtcDiagnosticTransaction Send-MailMessage Set-Acl + Set-ADAccountAuthenticationPolicySilo Set-ADAccountControl + Set-ADAccountExpiration Set-ADAccountPassword Set-ADAuthenticationPolicy + Set-ADAuthenticationPolicySilo Set-ADCentralAccessPolicy + Set-ADCentralAccessRule Set-ADClaimTransformLink Set-ADClaimTransformPolicy + Set-ADClaimType Set-ADComputer Set-ADDefaultDomainPasswordPolicy Set-ADDomain + Set-ADDomainMode Set-ADFineGrainedPasswordPolicy Set-ADForest Set-ADForestMode + Set-ADGroup Set-ADObject Set-ADOrganizationalUnit Set-ADReplicationConnection + Set-ADReplicationSite Set-ADReplicationSiteLink Set-ADReplicationSiteLinkBridge + Set-ADReplicationSubnet Set-ADResourceProperty Set-ADResourcePropertyList + Set-ADServiceAccount Set-ADUser Set-Alias Set-AppBackgroundTaskResourcePolicy + Set-AppLockerPolicy Set-AppvClientConfiguration Set-AppvClientMode + Set-AppvClientPackage Set-AppvPublishingServer Set-AppxDefaultVolume + Set-AppXProvisionedDataFile Set-AuthenticodeSignature Set-BitsTransfer + Set-BpaResult Set-CertificateAutoEnrollmentPolicy Set-CimInstance + Set-CIPolicyIdInfo Set-CIPolicySetting Set-CIPolicyVersion Set-Clipboard + Set-Content Set-Culture Set-Date Set-DscLocalConfigurationManager + Set-ExecutionPolicy Set-HVCIOptions Set-IISCentralCertProvider + Set-IISCentralCertProviderCredential Set-IISConfigAttributeValue + Set-IscsiServerTarget Set-IscsiTargetServerSetting Set-IscsiVirtualDisk + Set-IscsiVirtualDiskSnapshot Set-Item Set-ItemProperty Set-JobTrigger + Set-KdsConfiguration Set-LocalGroup Set-LocalUser Set-Location + Set-NfsMappedIdentity Set-NfsNetgroup Set-PSBreakpoint Set-RuleOption + Set-ScheduledJob Set-ScheduledJobOption Set-SecureBootUEFI Set-Service + Set-TimeZone Set-TpmOwnerAuth Set-TraceSource Set-UevConfiguration + Set-UevTemplateProfile Set-Variable Set-WebBinding Set-WebCentralCertProvider + Set-WebCentralCertProviderCredential Set-WebConfiguration + Set-WebConfigurationProperty Set-WebGlobalModule Set-WebHandler + Set-WebManagedModule Set-WheaMemoryPolicy + Set-WinAcceptLanguageFromLanguageListOptOut + Set-WinCultureFromLanguageListOptOut Set-WinDefaultInputMethodOverride + Set-WindowsEdition Set-WindowsProductKey Set-WindowsSearchSetting + Set-WinHomeLocation Set-WinLanguageBarOption Set-WinSystemLocale + Set-WinUILanguageOverride Set-WinUserLanguageList Set-WmiInstance + Set-WSManInstance Set-WSManQuickConfig Show-ADAuthenticationPolicyExpression + Show-Command Show-ControlPanelItem Show-EventLog + Show-WindowsDeveloperLicenseRegistration Sort-Object Split-Path + Split-WindowsImage Start-BitsTransfer Start-DscConfiguration + Start-DtcDiagnosticResourceManager Start-IISCommitDelay Start-IISSite + Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript + Start-WebAppPool Start-WebCommitDelay Start-WebItem Start-Website + Stop-AppvClientConnectionGroup Stop-AppvClientPackage Stop-Computer + Stop-DtcDiagnosticResourceManager Stop-IISCommitDelay Stop-IISSite + Stop-IscsiVirtualDiskOperation Stop-Process Stop-Service Stop-Transcript + Stop-WebAppPool Stop-WebCommitDelay Stop-WebItem Stop-Website + Suspend-BitsTransfer Suspend-Service Switch-Certificate Sync-ADObject + Sync-AppvPublishingServer Tee-Object Test-ADServiceAccount Test-AppLockerPolicy + Test-Certificate Test-ComputerSecureChannel Test-Connection + Test-DscConfiguration Test-FileCatalog Test-KdsRootKey Test-NfsMappedIdentity + Test-Path Test-UevTemplate Test-WSMan Trace-Command Unblock-File Unblock-Tpm + Undo-DtcDiagnosticTransaction Undo-Transaction Uninstall-ADServiceAccount + Unlock-ADAccount Unprotect-CmsMessage Unpublish-AppvClientPackage + Unregister-Event Unregister-ScheduledJob Unregister-UevTemplate + Unregister-WindowsDeveloperLicense Update-FormatData Update-List + Update-TypeData Update-UevTemplate Update-WIMBootEntry Use-Transaction + Use-WindowsUnattend Wait-Debugger Wait-Event Wait-Process Write-Debug + Write-Error Write-EventLog Write-Host Write-Information Write-Output + Write-Progress Write-Verbose Write-Warning \% \? ac asnp cat cd chdir clc clear + clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir + dnsn ebp echo epal epcsv epsn erase etsn exsn fc fl foreach ft fw gal gbp gc + gci gcm gcs gdr ghy gi gjb gl gm gmo gp gps gpv group gsn gsnp gsv gu gv gwmi h + history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md + measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd + pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv + rvpa rwmi sajb sal saps sasv sbp sc select set shcm si sl sleep sls sort sp + spjb spps spsv start sujb sv swmi tee trcm type wget where wjb write + ).join('|') + + # Override from Shell + state :interp do + rule /`$/, Str::Escape # line continuation + rule /`./, Str::Escape + rule /\$\(\(/, Keyword, :math + rule /\$\(/, Keyword, :paren + rule /\${#?/, Keyword, :curly + rule /\$#?(\w+|.)/, Name::Variable + end + + # Override from Shell + state :double_quotes do + # NB: "abc$" is literally the string abc$. + # Here we prevent :interp from interpreting $" as a variable. + rule /(?:\$#?)?"/, Str::Double, :pop! + mixin :interp + rule /[^"`$]+/, Str::Double + end + + # Override from Shell + state :data do + rule /\s+/, Text + rule /\$?"/, Str::Double, :double_quotes + rule /\$'/, Str::Single, :ansi_string + + rule /'/, Str::Single, :single_quotes + + rule /\*/, Keyword + + rule /;/, Text + rule /[^=\*\s{}()$"'`<]+/, Text + rule /\d+(?= |\Z)/, Num + rule /)m, Comment::Multiline + rule /#.*$/, Comment::Single + rule /\b(#{OPERATORS})\s*\b/i, Operator + rule /\b(#{ATTRIBUTES})\s*\b/i, Name::Attribute + rule /\b(#{KEYWORDS})\s*\b/i, Keyword + rule /\b(#{KEYWORDS_TYPE})\s*\b/i, Keyword::Type + rule /\bcase\b/, Keyword, :case + rule /\b(#{BUILTINS})\s*\b(?!\.)/i, Name::Builtin + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/praat.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/praat.rb new file mode 100644 index 0000000000..dc62c6e81c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/praat.rb @@ -0,0 +1,351 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Praat < RegexLexer + title "Praat" + desc "The Praat scripting language (praat.org)" + + tag 'praat' + + filenames '*.praat', '*.proc', '*.psc' + + def self.detect?(text) + return true if text.shebang? 'praat' + end + + keywords = %w( + if then else elsif elif endif fi for from to endfor endproc while + endwhile repeat until select plus minus demo assert stopwatch + nocheck nowarn noprogress editor endeditor clearinfo + ) + + functions_string = %w( + backslashTrigraphsToUnicode chooseDirectory chooseReadFile + chooseWriteFile date demoKey do environment extractLine extractWord + fixed info left mid percent readFile replace replace_regex right + selected string unicodeToBackslashTrigraphs + ) + + functions_numeric = %w( + abs appendFile appendFileLine appendInfo appendInfoLine arccos arccosh + arcsin arcsinh arctan arctan2 arctanh barkToHertz beginPause + beginSendPraat besselI besselK beta beta2 binomialP binomialQ boolean + ceiling chiSquareP chiSquareQ choice comment cos cosh createDirectory + deleteFile demoClicked demoClickedIn demoCommandKeyPressed + demoExtraControlKeyPressed demoInput demoKeyPressed + demoOptionKeyPressed demoShiftKeyPressed demoShow demoWaitForInput + demoWindowTitle demoX demoY differenceLimensToPhon do editor endPause + endSendPraat endsWith erb erbToHertz erf erfc exitScript exp + extractNumber fileReadable fisherP fisherQ floor gaussP gaussQ hash + hertzToBark hertzToErb hertzToMel hertzToSemitones imax imin + incompleteBeta incompleteGammaP index index_regex integer invBinomialP + invBinomialQ invChiSquareQ invFisherQ invGaussQ invSigmoid invStudentQ + length ln lnBeta lnGamma log10 log2 max melToHertz min minusObject + natural number numberOfColumns numberOfRows numberOfSelected + objectsAreIdentical option optionMenu pauseScript + phonToDifferenceLimens plusObject positive randomBinomial randomGauss + randomInteger randomPoisson randomUniform real readFile removeObject + rindex rindex_regex round runScript runSystem runSystem_nocheck + selectObject selected semitonesToHertz sentence sentencetext sigmoid + sin sinc sincpi sinh soundPressureToPhon sqrt startsWith studentP + studentQ tan tanh text variableExists word writeFile writeFileLine + writeInfo writeInfoLine + ) + + functions_array = %w( + linear randomGauss randomInteger randomUniform zero + ) + + objects = %w( + Activation AffineTransform AmplitudeTier Art Artword Autosegment + BarkFilter BarkSpectrogram CCA Categories Cepstrogram Cepstrum + Cepstrumc ChebyshevSeries ClassificationTable Cochleagram Collection + ComplexSpectrogram Configuration Confusion ContingencyTable Corpus + Correlation Covariance CrossCorrelationTable CrossCorrelationTableList + CrossCorrelationTables DTW DataModeler Diagonalizer Discriminant + Dissimilarity Distance Distributions DurationTier EEG ERP ERPTier + EditCostsTable EditDistanceTable Eigen Excitation Excitations + ExperimentMFC FFNet FeatureWeights FileInMemory FilesInMemory Formant + FormantFilter FormantGrid FormantModeler FormantPoint FormantTier + GaussianMixture HMM HMM_Observation HMM_ObservationSequence HMM_State + HMM_StateSequence HMMObservation HMMObservationSequence HMMState + HMMStateSequence Harmonicity ISpline Index Intensity IntensityTier + IntervalTier KNN KlattGrid KlattTable LFCC LPC Label LegendreSeries + LinearRegression LogisticRegression LongSound Ltas MFCC MSpline ManPages + Manipulation Matrix MelFilter MelSpectrogram MixingMatrix Movie Network + OTGrammar OTHistory OTMulti PCA PairDistribution ParamCurve Pattern + Permutation Photo Pitch PitchModeler PitchTier PointProcess Polygon + Polynomial PowerCepstrogram PowerCepstrum Procrustes RealPoint RealTier + ResultsMFC Roots SPINET SSCP SVD Salience ScalarProduct Similarity + SimpleString SortedSetOfString Sound Speaker Spectrogram Spectrum + SpectrumTier SpeechSynthesizer SpellingChecker Strings StringsIndex + Table TableOfReal TextGrid TextInterval TextPoint TextTier Tier + Transition VocalTract VocalTractTier Weight WordList + ) + + variables_numeric = %w( + all average e left macintosh mono pi praatVersion right stereo + undefined unix windows + ) + + variables_string = %w( + praatVersion tab shellDirectory homeDirectory + preferencesDirectory newline temporaryDirectory + defaultDirectory + ) + + object_attributes = %w( + ncol nrow xmin ymin xmax ymax nx ny dx dy + ) + + state :root do + rule /(\s+)(#.*?$)/ do + groups Text, Comment::Single + end + + rule /^#.*?$/, Comment::Single + rule /;[^\n]*/, Comment::Single + rule /\s+/, Text + + rule /(\bprocedure)(\s+)/ do + groups Keyword, Text + push :procedure_definition + end + + rule /(\bcall)(\s+)/ do + groups Keyword, Text + push :procedure_call + end + + rule /@/, Name::Function, :procedure_call + + mixin :function_call + + rule /\b(?:select all)\b/, Keyword + rule /\b(?:#{keywords.join('|')})\b/, Keyword + + rule /(\bform\b)(\s+)([^\n]+)/ do + groups Keyword, Text, Literal::String + push :old_form + end + + rule /(print(?:line|tab)?|echo|exit|asserterror|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)/ do + groups Keyword, Text + push :string_unquoted + end + + rule /(goto|label)(\s+)(\w+)/ do + groups Keyword, Text, Name::Label + end + + mixin :variable_name + mixin :number + + rule /"/, Literal::String, :string + + rule /\b(?:#{objects.join('|')})(?=\s+\S+\n)/, Name::Class, :string_unquoted + + rule /\b(?=[A-Z])/, Text, :command + rule /(\.{3}|[)(,\$])/, Punctuation + end + + state :command do + rule /( ?([^\s:\.'])+ ?)/, Keyword + mixin :string_interpolated + + rule /\.{3}/ do + token Keyword + pop! + push :old_arguments + end + + rule /:/ do + token Keyword + pop! + push :comma_list + end + + rule /[\s]/, Text, :pop! + end + + state :procedure_call do + mixin :string_interpolated + + rule /(:|\s*\()/, Punctuation, :pop! + + rule /'/, Name::Function + rule /[^:\('\s]+/, Name::Function + + rule /(?=\s+)/ do + token Text + pop! + push :old_arguments + end + end + + state :procedure_definition do + rule /(:|\s*\()/, Punctuation, :pop! + + rule /[^:\(\s]+/, Name::Function + + rule /(\s+)/, Text, :pop! + end + + state :function_call do + rule /\b(#{functions_string.join('|')})\$(?=\s*[:(])/, Name::Function, :function + rule /\b(#{functions_array.join('|')})#(?=\s*[:(])/, Name::Function, :function + rule /\b(#{functions_numeric.join('|')})(?=\s*[:(])/, Name::Function, :function + end + + state :function do + rule /\s+/, Text + + rule /(?::|\s*\()/ do + token Text + pop! + push :comma_list + end + end + + state :comma_list do + rule /(\s*\n\s*)(\.{3})/ do + groups Text, Punctuation + end + + rule /\s*[\])\n]/, Text, :pop! + + rule /\s+/, Text + rule /"/, Literal::String, :string + rule /\b(if|then|else|fi|endif)\b/, Keyword + + mixin :function_call + mixin :variable_name + mixin :operator + mixin :number + + rule /[()]/, Text + rule /,/, Punctuation + end + + state :old_arguments do + rule /\n/, Text, :pop! + + mixin :variable_name + mixin :operator + mixin :number + + rule /"/, Literal::String, :string + rule /[^\n]/, Text + end + + state :number do + rule /\n/, Text, :pop! + rule /\b\d+(\.\d*)?([eE][-+]?\d+)?%?/, Literal::Number + end + + state :variable_name do + mixin :operator + mixin :number + + rule /\b(?:#{variables_string.join('|')})\$/, Name::Builtin + rule /\b(?:#{variables_numeric.join('|')})(?!\$)\b/, Name::Builtin + + rule /\b(Object|#{objects.join('|')})_/ do + token Name::Builtin + push :object_reference + end + + rule /\.?[a-z][a-zA-Z0-9_.]*(\$|#)?/, Text + rule /[\[\]]/, Text, :comma_list + mixin :string_interpolated + end + + state :object_reference do + mixin :string_interpolated + rule /([a-z][a-zA-Z0-9_]*|\d+)/, Name::Builtin + + rule /\.(#{object_attributes.join('|')})\b/, Name::Builtin, :pop! + + rule /\$/, Name::Builtin + rule /\[/, Text, :pop! + end + + state :operator do + # This rule incorrectly matches === or +++++, which are not operators + rule /([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)/, Operator + rule /(?/, Punctuation + + rule /"[^"]*"/, Str::Double + + rule /\d+\.\d+/, Num::Float + rule /\d+/, Num + end + + state :atoms do + rule /[[:lower:]]([_[:word:][:digit:]])*/, Str::Symbol + rule /'[^']*'/, Str::Symbol + end + + state :operators do + rule /(<|>|=<|>=|==|=:=|=|\/|\/\/|\*|\+|-)(?=\s|[a-zA-Z0-9\[])/, + Operator + rule /is/, Operator + rule /(mod|div|not)/, Operator + rule /[#&*+-.\/:<=>?@^~]+/, Operator + end + + state :variables do + rule /[A-Z]+\w*/, Name::Variable + rule /_[[:word:]]*/, Name::Variable + end + + state :root do + mixin :basic + mixin :atoms + mixin :variables + mixin :operators + end + + state :nested_comment do + rule /\/\*/, Comment::Multiline, :push + rule /\s*\*[^*\/]+/, Comment::Multiline + rule /\*\//, Comment::Multiline, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/prometheus.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/prometheus.rb new file mode 100644 index 0000000000..0bb1c33ca9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/prometheus.rb @@ -0,0 +1,123 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + class Prometheus < RegexLexer + desc 'prometheus' + tag 'prometheus' + aliases 'prometheus' + filenames '*.prometheus' + + mimetypes 'text/x-prometheus', 'application/x-prometheus' + + def self.functions + @functions ||= Set.new %w( + abs absent ceil changes clamp_max clamp_min count_scalar day_of_month + day_of_week days_in_month delta deriv drop_common_labels exp floor + histogram_quantile holt_winters hour idelta increase irate label_replace + ln log2 log10 month predict_linear rate resets round scalar sort + sort_desc sqrt time vector year avg_over_time min_over_time + max_over_time sum_over_time count_over_time quantile_over_time + stddev_over_time stdvar_over_time + ) + end + + state :root do + mixin :strings + mixin :whitespace + + rule /-?\d+\.\d+/, Num::Float + rule /-?\d+[smhdwy]?/, Num::Integer + + mixin :operators + + rule /(ignoring|on)(\()/ do + groups Keyword::Pseudo, Punctuation + push :label_list + end + rule /(group_left|group_right)(\()/ do + groups Keyword::Type, Punctuation + end + rule /(bool|offset)\b/, Keyword + rule /(without|by)\b/, Keyword, :label_list + rule /[\w:]+/ do |m| + if self.class.functions.include?(m[0]) + token Name::Builtin + else + token Name + end + end + + mixin :metrics + end + + state :metrics do + rule /[a-zA-Z0-9_-]+/, Name + + rule /[\(\)\]:.,]/, Punctuation + rule /\{/, Punctuation, :filters + rule /\[/, Punctuation + end + + state :strings do + rule /"/, Str::Double, :double_string_escaped + rule /'/, Str::Single, :single_string_escaped + rule /`.*`/, Str::Backtick + end + + [ + [:double, Str::Double, '"'], + [:single, Str::Single, "'"] + ].each do |name, tok, fin| + state :"#{name}_string_escaped" do + rule /\\[\\abfnrtv#{fin}]/, Str::Escape + rule /[^\\#{fin}]+/m, tok + rule /#{fin}/, tok, :pop! + end + end + + state :filters do + mixin :inline_whitespace + rule /,/, Punctuation + mixin :labels + mixin :filter_matching_operators + mixin :strings + rule /}/, Punctuation, :pop! + end + + state :label_list do + rule /\(/, Punctuation + rule /[a-zA-Z0-9_:-]+/, Name::Attribute + rule /,/, Punctuation + mixin :whitespace + rule /\)/, Punctuation, :pop! + end + + state :labels do + rule /[a-zA-Z0-9_:-]+/, Name::Attribute + end + + state :operators do + rule %r([+\-\*/%\^]), Operator # Arithmetic + rule %r(=|==|!=|<|>|<=|>=), Operator # Comparison + rule /and|or|unless/, Operator # Logical/Set + rule /(sum|min|max|avg|stddev|stdvar|count|count_values|bottomk|topk)\b/, Name::Function + end + + state :filter_matching_operators do + rule /!(=|~)|=~?/, Operator + end + + state :inline_whitespace do + rule /[ \t\r]+/, Text + end + + state :whitespace do + mixin :inline_whitespace + rule /\n\s*/m, Text + rule /#.*?$/, Comment + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/properties.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/properties.rb new file mode 100644 index 0000000000..8f876bfc86 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/properties.rb @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Properties < RegexLexer + title ".properties" + desc '.properties config files for Java' + tag 'properties' + + filenames '*.properties' + mimetypes 'text/x-java-properties' + + identifier = /[\w.-]+/ + + state :basic do + rule /[!#].*?\n/, Comment + rule /\s+/, Text + rule /\\\n/, Str::Escape + end + + state :root do + mixin :basic + + rule /(#{identifier})(\s*)([=:])/ do + groups Name::Property, Text, Punctuation + push :value + end + end + + state :value do + rule /\n/, Text, :pop! + mixin :basic + rule /"/, Str, :dq + rule /'.*?'/, Str + mixin :esc_str + rule /[^\\\n]+/, Str + end + + state :dq do + rule /"/, Str, :pop! + mixin :esc_str + rule /[^\\"]+/m, Str + end + + state :esc_str do + rule /\\u[0-9]{4}/, Str::Escape + rule /\\./m, Str::Escape + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/protobuf.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/protobuf.rb new file mode 100644 index 0000000000..9d8d753d6f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/protobuf.rb @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Protobuf < RegexLexer + title 'Protobuf' + desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data' + tag 'protobuf' + aliases 'proto' + filenames '*.proto' + mimetypes 'text/x-proto' + + kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/ + datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/ + + state :root do + rule /[\s]+/, Text + rule /[,;{}\[\]()]/, Punctuation + rule /\/(\\\n)?\/(\n|(.|\n)*?[^\\]\n)/, Comment::Single + rule /\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline + rule kw, Keyword + rule datatype, Keyword::Type + rule /true|false/, Keyword::Constant + rule /(package)(\s+)/ do + groups Keyword::Namespace, Text + push :package + end + + rule /(message|extend)(\s+)/ do + groups Keyword::Declaration, Text + push :message + end + + rule /(enum|group|service)(\s+)/ do + groups Keyword::Declaration, Text + push :type + end + + rule /".*?"/, Str + rule /'.*?'/, Str + rule /(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float + rule /(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float + rule /(\-?(inf|nan))\b/, Num::Float + rule /0x[0-9a-fA-F]+[LlUu]*/, Num::Hex + rule /0[0-7]+[LlUu]*/, Num::Oct + rule /\d+[LlUu]*/, Num::Integer + rule /[+-=]/, Operator + rule /([a-zA-Z_][\w.]*)([ \t]*)(=)/ do + groups Name::Attribute, Text, Operator + end + rule /[a-zA-Z_][\w.]*/, Name + end + + state :package do + rule /[a-zA-Z_]\w*/, Name::Namespace, :pop! + rule(//) { pop! } + end + + state :message do + rule /[a-zA-Z_]\w*/, Name::Class, :pop! + rule(//) { pop! } + end + + state :type do + rule /[a-zA-Z_]\w*/, Name, :pop! + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/puppet.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/puppet.rb new file mode 100644 index 0000000000..773d40b628 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/puppet.rb @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Puppet < RegexLexer + title "Puppet" + desc 'The Puppet configuration management language (puppetlabs.org)' + tag 'puppet' + aliases 'pp' + filenames '*.pp' + + def self.detect?(text) + return true if text.shebang? 'puppet-apply' + return true if text.shebang? 'puppet' + end + + def self.keywords + @keywords ||= Set.new %w( + and case class default define else elsif if in import inherits + node unless + ) + end + + def self.constants + @constants ||= Set.new %w( + false true undef + ) + end + + def self.metaparameters + @metaparameters ||= Set.new %w( + before require notify subscribe + ) + end + + id = /[a-z]\w*/ + cap_id = /[A-Z]\w*/ + qualname = /(::)?(#{id}::)*\w+/ + + state :whitespace do + rule /\s+/m, Text + rule /#.*?\n/, Comment + end + + state :root do + mixin :whitespace + + rule /[$]#{qualname}/, Name::Variable + rule /(#{id})(?=\s*[=+]>)/m do |m| + if self.class.metaparameters.include? m[0] + token Keyword::Pseudo + else + token Name::Property + end + end + + rule /(#{qualname})(?=\s*[(])/m, Name::Function + rule cap_id, Name::Class + + rule /[+=|~-]>|<[|~-]/, Punctuation + rule /[:}();\[\]]/, Punctuation + + # HACK for case statements and selectors + rule /{/, Punctuation, :regex_allowed + rule /,/, Punctuation, :regex_allowed + + rule /(in|and|or)\b/, Operator::Word + rule /[=!<>]=/, Operator + rule /[=!]~/, Operator, :regex_allowed + rule %r([=<>!+*/-]), Operator + + rule /(class|include)(\s*)(#{qualname})/ do + groups Keyword, Text, Name::Class + end + + rule /node\b/, Keyword, :regex_allowed + + rule /'(\\[\\']|[^'])*'/m, Str::Single + rule /"/, Str::Double, :dquotes + + rule /\d+([.]\d+)?(e[+-]\d+)?/, Num + + # a valid regex. TODO: regexes are only allowed + # in certain places in puppet. + rule qualname do |m| + if self.class.keywords.include? m[0] + token Keyword + elsif self.class.constants.include? m[0] + token Keyword::Constant + else + token Name + end + end + end + + state :regex_allowed do + mixin :whitespace + rule %r(/), Str::Regex, :regex + + rule(//) { pop! } + end + + state :regex do + rule %r(/), Str::Regex, :pop! + rule /\\./, Str::Escape + rule /[(){}]/, Str::Interpol + rule /\[/, Str::Interpol, :regex_class + rule /./, Str::Regex + end + + state :regex_class do + rule /\]/, Str::Interpol, :pop! + rule /(?>|\/\/|\*\*)=?/, Operator + rule /[-~+\/*%=<>&^|@]=?|!=/, Operator + rule /\.(?![0-9])/, Operator # so it doesn't match float literals + + rule /(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do + groups Keyword::Namespace, + Text, + Name::Namespace, + Text, + Keyword::Namespace + end + + rule /(import)(\s+)(#{dotted_identifier})/ do + groups Keyword::Namespace, Text, Name::Namespace + end + + rule /(def)((?:\s|\\\s)+)/ do + groups Keyword, Text + push :funcname + end + + rule /(class)((?:\s|\\\s)+)/ do + groups Keyword, Text + push :classname + end + + # TODO: not in python 3 + rule /`.*?`/, Str::Backtick + rule /(?:r|ur|ru)"""/i, Str, :raw_tdqs + rule /(?:r|ur|ru)'''/i, Str, :raw_tsqs + rule /(?:r|ur|ru)"/i, Str, :raw_dqs + rule /(?:r|ur|ru)'/i, Str, :raw_sqs + rule /u?"""/i, Str, :tdqs + rule /u?'''/i, Str, :tsqs + rule /u?"/i, Str, :dqs + rule /u?'/i, Str, :sqs + + rule /@#{dotted_identifier}/i, Name::Decorator + + # using negative lookbehind so we don't match property names + rule /(?=|<>|::)|[?:$%&|@._#*^\-+~,!><=]:?/, Operator) + + rule /[{}\[\]();]/, Punctuation + + # commands + rule(/\\.*\n/, Text) + + end + + state :string do + rule(/"/, Str, :pop!) + rule /\\([\\nr]|[01][0-7]{2})/, Str::Escape + rule /[^\\"\n]+/, Str + rule /\\/, Str # stray backslash + end + + state :bottom do + rule /.*\z/m, Comment::Multiline + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/qml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/qml.rb new file mode 100644 index 0000000000..c545de36b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/qml.rb @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'javascript.rb' + + class Qml < Javascript + title "QML" + desc 'QML, a UI markup language' + tag 'qml' + aliases 'qml' + filenames '*.qml' + + mimetypes 'application/x-qml', 'text/x-qml' + + id_with_dots = /[$a-zA-Z_][a-zA-Z0-9_.]*/ + + prepend :root do + rule /(#{id_with_dots})(\s*)({)/ do + groups Keyword::Type, Text, Punctuation + push :type_block + end + rule /(#{id_with_dots})(\s+)(on)(\s+)(#{id_with_dots})(\s*)({)/ do + groups Keyword::Type, Text, Keyword, Text, Name::Label, Text, Punctuation + push :type_block + end + + rule /[{]/, Punctuation, :push + end + + state :type_block do + rule /(id)(\s*)(:)(\s*)(#{id_with_dots})/ do + groups Name::Label, Text, Punctuation, Text, Keyword::Declaration + end + + rule /(#{id_with_dots})(\s*)(:)/ do + groups Name::Label, Text, Punctuation + push :expr_start + end + + rule /(signal)(\s+)(#{id_with_dots})/ do + groups Keyword::Declaration, Text, Name::Label + push :signal + end + + rule /(property)(\s+)(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(:?)/ do + groups Keyword::Declaration, Text, Keyword::Type, Text, Name::Label, Text, Punctuation + push :expr_start + end + + rule /[}]/, Punctuation, :pop! + mixin :root + end + + state :signal do + mixin :comments_and_whitespace + rule /\(/ do + token Punctuation + goto :signal_args + end + rule //, Text, :pop! + end + + state :signal_args do + mixin :comments_and_whitespace + rule /(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(,?)/ do + groups Keyword::Type, Text, Name, Text, Punctuation + end + rule /\)/ , Punctuation, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/r.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/r.rb new file mode 100644 index 0000000000..423d7d9319 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/r.rb @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class R < RegexLexer + title "R" + desc 'The R statistics language (r-project.org)' + tag 'r' + aliases 'r', 'R', 's', 'S' + filenames '*.R', '*.r', '.Rhistory', '.Rprofile' + mimetypes 'text/x-r-source', 'text/x-r', 'text/x-R' + + mimetypes 'text/x-r', 'application/x-r' + + KEYWORDS = %w(if else for while repeat in next break function) + + KEYWORD_CONSTANTS = %w( + NULL Inf TRUE FALSE NaN NA + NA_integer_ NA_real_ NA_complex_ NA_character_ + ) + + BUILTIN_CONSTANTS = %w(LETTERS letters month.abb month.name pi T F) + + # These are all the functions in `base` that are implemented as a + # `.Primitive`, minus those functions that are also keywords. + PRIMITIVE_FUNCTIONS = %w( + abs acos acosh all any anyNA Arg as.call as.character + as.complex as.double as.environment as.integer as.logical + as.null.default as.numeric as.raw asin asinh atan atanh attr + attributes baseenv browser c call ceiling class Conj cos cosh + cospi cummax cummin cumprod cumsum digamma dim dimnames + emptyenv exp expression floor forceAndCall gamma gc.time + globalenv Im interactive invisible is.array is.atomic is.call + is.character is.complex is.double is.environment is.expression + is.finite is.function is.infinite is.integer is.language + is.list is.logical is.matrix is.na is.name is.nan is.null + is.numeric is.object is.pairlist is.raw is.recursive is.single + is.symbol lazyLoadDBfetch length lgamma list log max min + missing Mod names nargs nzchar oldClass on.exit pos.to.env + proc.time prod quote range Re rep retracemem return round + seq_along seq_len seq.int sign signif sin sinh sinpi sqrt + standardGeneric substitute sum switch tan tanh tanpi tracemem + trigamma trunc unclass untracemem UseMethod xtfrm + ) + + def self.detect?(text) + return true if text.shebang? 'Rscript' + end + + state :root do + rule /#'.*?$/, Comment::Doc + rule /#.*?$/, Comment::Single + rule /\s+/m, Text::Whitespace + + rule /`[^`]+?`/, Name + rule /'(\\.|.)*?'/m, Str::Single + rule /"(\\.|.)*?"/m, Str::Double + + rule /%[^%]*?%/, Operator + + rule /0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/, Num::Hex + rule /[+-]?(\d+([.]\d+)?|[.]\d+)([eE][+-]?\d+)?[Li]?/, + Num + + # Only recognize built-in functions when they are actually used as a + # function call, i.e. followed by an opening parenthesis. + # `Name::Builtin` would be more logical, but is usually not + # highlighted specifically; thus use `Name::Function`. + rule /\b(??*+^/!=~$@:%&|]), Operator + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/racket.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/racket.rb new file mode 100644 index 0000000000..b4bd8f8761 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/racket.rb @@ -0,0 +1,545 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Racket < RegexLexer + title "Racket" + desc "Racket is a Lisp descended from Scheme (racket-lang.org)" + + tag 'racket' + filenames '*.rkt', '*.rktd', '*.rktl' + mimetypes 'text/x-racket', 'application/x-racket' + + def self.detect?(text) + text =~ /\A#lang\s*(.*?)$/ + lang_attr = $1 + return false unless lang_attr + return true if lang_attr =~ /racket|scribble/ + end + + def self.keywords + @keywords ||= Set.new %w( + ... and begin begin-for-syntax begin0 case case-lambda cond + datum->syntax-object define define-for-syntax define-logger + define-struct define-syntax define-syntax-rule + define-syntaxes define-values define-values-for-syntax delay + do expand-path fluid-let force hash-table-copy + hash-table-count hash-table-for-each hash-table-get + hash-table-iterate-first hash-table-iterate-key + hash-table-iterate-next hash-table-iterate-value + hash-table-map hash-table-put! hash-table-remove! + hash-table? if lambda let let* let*-values let-struct + let-syntax let-syntaxes let-values let/cc let/ec letrec + letrec-syntax letrec-syntaxes letrec-syntaxes+values + letrec-values list-immutable make-hash-table + make-immutable-hash-table make-namespace module module* + module-identifier=? module-label-identifier=? + module-template-identifier=? module-transformer-identifier=? + namespace-transformer-require or parameterize parameterize* + parameterize-break promise? prop:method-arity-error provide + provide-for-label provide-for-syntax quasiquote quasisyntax + quasisyntax/loc quote quote-syntax quote-syntax/prune + require require-for-label require-for-syntax + require-for-template set! set!-values syntax syntax-case + syntax-case* syntax-id-rules syntax-object->datum + syntax-rules syntax/loc tcp-abandon-port tcp-accept + tcp-accept-evt tcp-accept-ready? tcp-accept/enable-break + tcp-addresses tcp-close tcp-connect tcp-connect/enable-break + tcp-listen tcp-listener? tcp-port? time transcript-off + transcript-on udp-addresses udp-bind! udp-bound? udp-close + udp-connect! udp-connected? udp-multicast-interface + udp-multicast-join-group! udp-multicast-leave-group! + udp-multicast-loopback? udp-multicast-set-interface! + udp-multicast-set-loopback! udp-multicast-set-ttl! + udp-multicast-ttl udp-open-socket udp-receive! udp-receive!* + udp-receive!-evt udp-receive!/enable-break + udp-receive-ready-evt udp-send udp-send* udp-send-evt + udp-send-ready-evt udp-send-to udp-send-to* udp-send-to-evt + udp-send-to/enable-break udp-send/enable-break udp? unless + unquote unquote-splicing unsyntax unsyntax-splicing when + with-continuation-mark with-handlers with-handlers* + with-syntax λ) + end + + def self.builtins + @builtins ||= Set.new %w( + * + - / < <= = > >= + abort-current-continuation abs absolute-path? acos add1 + alarm-evt always-evt andmap angle append apply + arithmetic-shift arity-at-least arity-at-least-value + arity-at-least? asin assoc assq assv atan banner bitwise-and + bitwise-bit-field bitwise-bit-set? bitwise-ior bitwise-not + bitwise-xor boolean? bound-identifier=? box box-cas! + box-immutable box? break-enabled break-thread build-path + build-path/convention-type byte-pregexp byte-pregexp? + byte-ready? byte-regexp byte-regexp? byte? bytes + bytes->immutable-bytes bytes->list bytes->path + bytes->path-element bytes->string/latin-1 + bytes->string/locale bytes->string/utf-8 bytes-append + bytes-close-converter bytes-convert bytes-convert-end + bytes-converter? bytes-copy bytes-copy! + bytes-environment-variable-name? bytes-fill! bytes-length + bytes-open-converter bytes-ref bytes-set! bytes-utf-8-index + bytes-utf-8-length bytes-utf-8-ref bytes? + bytes? caaaar caaadr caaar caadar caaddr caadr caar cadaar + cadadr cadar caddar cadddr caddr cadr call-in-nested-thread + call-with-break-parameterization + call-with-composable-continuation + call-with-continuation-barrier call-with-continuation-prompt + call-with-current-continuation + call-with-default-reading-parameterization + call-with-escape-continuation call-with-exception-handler + call-with-immediate-continuation-mark call-with-input-file + call-with-output-file call-with-parameterization + call-with-semaphore call-with-semaphore/enable-break + call-with-values call/cc call/ec car cdaaar cdaadr cdaar + cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr + cdddr cddr cdr ceiling channel-get channel-put + channel-put-evt channel-put-evt? channel-try-get channel? + chaperone-box chaperone-continuation-mark-key chaperone-evt + chaperone-hash chaperone-of? chaperone-procedure + chaperone-prompt-tag chaperone-struct chaperone-struct-type + chaperone-vector chaperone? char->integer char-alphabetic? + char-blank? char-ci<=? char-ci=? + char-ci>? char-downcase char-foldcase char-general-category + char-graphic? char-iso-control? char-lower-case? + char-numeric? char-punctuation? char-ready? char-symbolic? + char-title-case? char-titlecase char-upcase char-upper-case? + char-utf-8-length char-whitespace? char<=? char=? char>? char? check-duplicate-identifier + checked-procedure-check-and-extract choice-evt cleanse-path + close-input-port close-output-port collect-garbage + collection-file-path collection-path compile + compile-allow-set!-undefined + compile-context-preservation-enabled + compile-enforce-module-constants compile-syntax + compiled-expression? compiled-module-expression? + complete-path? complex? cons continuation-mark-key? + continuation-mark-set->context continuation-mark-set->list + continuation-mark-set->list* continuation-mark-set-first + continuation-mark-set? continuation-marks + continuation-prompt-available? continuation-prompt-tag? + continuation? copy-file cos current-break-parameterization + current-code-inspector current-command-line-arguments + current-compile current-compiled-file-roots + current-continuation-marks current-custodian + current-directory current-directory-for-user current-drive + current-environment-variables current-error-port + current-eval current-evt-pseudo-random-generator + current-gc-milliseconds current-get-interaction-input-port + current-inexact-milliseconds current-input-port + current-inspector current-library-collection-paths + current-load current-load-extension + current-load-relative-directory current-load/use-compiled + current-locale current-memory-use current-milliseconds + current-module-declare-name current-module-declare-source + current-module-name-resolver current-module-path-for-load + current-namespace current-output-port + current-parameterization + current-preserved-thread-cell-values current-print + current-process-milliseconds current-prompt-read + current-pseudo-random-generator current-read-interaction + current-reader-guard current-readtable current-seconds + current-security-guard current-subprocess-custodian-mode + current-thread current-thread-group + current-thread-initial-stack-size + current-write-relative-directory custodian-box-value + custodian-box? custodian-limit-memory custodian-managed-list + custodian-memory-accounting-available? + custodian-require-memory custodian-shutdown-all custodian? + custom-print-quotable-accessor custom-print-quotable? + custom-write-accessor custom-write? date date* + date*-nanosecond date*-time-zone-name date*? date-day + date-dst? date-hour date-minute date-month date-second + date-time-zone-offset date-week-day date-year date-year-day + date? datum-intern-literal default-continuation-prompt-tag + delete-directory delete-file denominator directory-exists? + directory-list display displayln dump-memory-stats + dynamic-require dynamic-require-for-syntax dynamic-wind + environment-variables-copy environment-variables-names + environment-variables-ref environment-variables-set! + environment-variables? eof eof-object? ephemeron-value + ephemeron? eprintf eq-hash-code eq? equal-hash-code + equal-secondary-hash-code equal? equal?/recur eqv-hash-code + eqv? error error-display-handler error-escape-handler + error-print-context-length error-print-source-location + error-print-width error-value->string-handler eval + eval-jit-enabled eval-syntax even? evt? exact->inexact + exact-integer? exact-nonnegative-integer? + exact-positive-integer? exact? executable-yield-handler exit + exit-handler exn exn-continuation-marks exn-message + exn:break exn:break-continuation exn:break:hang-up + exn:break:hang-up? exn:break:terminate exn:break:terminate? + exn:break? exn:fail exn:fail:contract + exn:fail:contract:arity exn:fail:contract:arity? + exn:fail:contract:continuation + exn:fail:contract:continuation? + exn:fail:contract:divide-by-zero + exn:fail:contract:divide-by-zero? + exn:fail:contract:non-fixnum-result + exn:fail:contract:non-fixnum-result? + exn:fail:contract:variable exn:fail:contract:variable-id + exn:fail:contract:variable? exn:fail:contract? + exn:fail:filesystem exn:fail:filesystem:errno + exn:fail:filesystem:errno-errno exn:fail:filesystem:errno? + exn:fail:filesystem:exists exn:fail:filesystem:exists? + exn:fail:filesystem:missing-module + exn:fail:filesystem:missing-module-path + exn:fail:filesystem:missing-module? + exn:fail:filesystem:version exn:fail:filesystem:version? + exn:fail:filesystem? exn:fail:network exn:fail:network:errno + exn:fail:network:errno-errno exn:fail:network:errno? + exn:fail:network? exn:fail:out-of-memory + exn:fail:out-of-memory? exn:fail:read exn:fail:read-srclocs + exn:fail:read:eof exn:fail:read:eof? exn:fail:read:non-char + exn:fail:read:non-char? exn:fail:read? exn:fail:syntax + exn:fail:syntax-exprs exn:fail:syntax:missing-module + exn:fail:syntax:missing-module-path + exn:fail:syntax:missing-module? exn:fail:syntax:unbound + exn:fail:syntax:unbound? exn:fail:syntax? + exn:fail:unsupported exn:fail:unsupported? exn:fail:user + exn:fail:user? exn:fail? exn:missing-module-accessor + exn:missing-module? exn:srclocs-accessor exn:srclocs? exn? + exp expand expand-once expand-syntax expand-syntax-once + expand-syntax-to-top-form expand-to-top-form + expand-user-path explode-path expt file-exists? + file-or-directory-identity file-or-directory-modify-seconds + file-or-directory-permissions file-position file-position* + file-size file-stream-buffer-mode file-stream-port? + file-truncate filesystem-change-evt + filesystem-change-evt-cancel filesystem-change-evt? + filesystem-root-list find-executable-path + find-library-collection-paths find-system-path fixnum? + floating-point-bytes->real flonum? floor flush-output + for-each format fprintf free-identifier=? gcd + generate-temporaries gensym get-output-bytes + get-output-string getenv global-port-print-handler guard-evt + handle-evt handle-evt? hash hash-equal? hash-eqv? + hash-has-key? hash-placeholder? hash-ref! hasheq hasheqv + identifier-binding identifier-binding-symbol + identifier-label-binding identifier-prune-lexical-context + identifier-prune-to-source-module + identifier-remove-from-definition-context + identifier-template-binding identifier-transformer-binding + identifier? imag-part immutable? impersonate-box + impersonate-continuation-mark-key impersonate-hash + impersonate-procedure impersonate-prompt-tag + impersonate-struct impersonate-vector impersonator-ephemeron + impersonator-of? impersonator-prop:application-mark + impersonator-property-accessor-procedure? + impersonator-property? impersonator? inexact->exact + inexact-real? inexact? input-port? inspector? integer->char + integer->integer-bytes integer-bytes->integer integer-length + integer-sqrt integer-sqrt/remainder integer? + internal-definition-context-seal + internal-definition-context? keyword->string keywordbytes list->string + list->vector list-ref list-tail list? load load-extension + load-on-demand-enabled load-relative load-relative-extension + load/cd load/use-compiled local-expand + local-expand/capture-lifts local-transformer-expand + local-transformer-expand/capture-lifts + locale-string-encoding log log-max-level magnitude + make-arity-at-least make-bytes make-channel + make-continuation-mark-key make-continuation-prompt-tag + make-custodian make-custodian-box make-date make-date* + make-derived-parameter make-directory + make-environment-variables make-ephemeron make-exn + make-exn:break make-exn:break:hang-up + make-exn:break:terminate make-exn:fail + make-exn:fail:contract make-exn:fail:contract:arity + make-exn:fail:contract:continuation + make-exn:fail:contract:divide-by-zero + make-exn:fail:contract:non-fixnum-result + make-exn:fail:contract:variable make-exn:fail:filesystem + make-exn:fail:filesystem:errno + make-exn:fail:filesystem:exists + make-exn:fail:filesystem:missing-module + make-exn:fail:filesystem:version make-exn:fail:network + make-exn:fail:network:errno make-exn:fail:out-of-memory + make-exn:fail:read make-exn:fail:read:eof + make-exn:fail:read:non-char make-exn:fail:syntax + make-exn:fail:syntax:missing-module + make-exn:fail:syntax:unbound make-exn:fail:unsupported + make-exn:fail:user make-file-or-directory-link + make-hash-placeholder make-hasheq-placeholder make-hasheqv + make-hasheqv-placeholder make-immutable-hasheqv + make-impersonator-property make-input-port make-inspector + make-known-char-range-list make-output-port make-parameter + make-phantom-bytes make-pipe make-placeholder make-polar + make-prefab-struct make-pseudo-random-generator + make-reader-graph make-readtable make-rectangular + make-rename-transformer make-resolved-module-path + make-security-guard make-semaphore make-set!-transformer + make-shared-bytes make-sibling-inspector + make-special-comment make-srcloc make-string + make-struct-field-accessor make-struct-field-mutator + make-struct-type make-struct-type-property + make-syntax-delta-introducer make-syntax-introducer + make-thread-cell make-thread-group make-vector make-weak-box + make-weak-hasheqv make-will-executor map max mcar mcdr mcons + member memq memv min module->exports module->imports + module->language-info module->namespace + module-compiled-cross-phase-persistent? + module-compiled-exports module-compiled-imports + module-compiled-language-info module-compiled-name + module-compiled-submodules module-declared? + module-path-index-join module-path-index-resolve + module-path-index-split module-path-index-submodule + module-path-index? module-path? module-predefined? + module-provide-protected? modulo mpair? nack-guard-evt + namespace-attach-module namespace-attach-module-declaration + namespace-base-phase namespace-mapped-symbols + namespace-module-identifier namespace-module-registry + namespace-require namespace-require/constant + namespace-require/copy namespace-require/expansion-time + namespace-set-variable-value! namespace-symbol->identifier + namespace-syntax-introduce namespace-undefine-variable! + namespace-unprotect-module namespace-variable-value + namespace? negative? never-evt newline normal-case-path not + null null? number->string number? numerator object-name odd? + open-input-bytes open-input-file open-input-output-file + open-input-string open-output-bytes open-output-file + open-output-string ormap output-port? pair? + parameter-procedure=? parameter? parameterization? + path->bytes path->complete-path path->directory-path + path->string path-add-suffix path-convention-type + path-element->bytes path-element->string + path-for-some-system? path-list-string->path-list + path-replace-suffix path-string? path? peek-byte + peek-byte-or-special peek-bytes peek-bytes! + peek-bytes-avail! peek-bytes-avail!* + peek-bytes-avail!/enable-break peek-char + peek-char-or-special peek-string peek-string! phantom-bytes? + pipe-content-length placeholder-get placeholder-set! + placeholder? poll-guard-evt port-closed-evt port-closed? + port-commit-peeked port-count-lines! + port-count-lines-enabled port-counts-lines? + port-display-handler port-file-identity port-file-unlock + port-next-location port-print-handler port-progress-evt + port-provides-progress-evts? port-read-handler + port-try-file-lock? port-write-handler port-writes-atomic? + port-writes-special? port? positive? prefab-key->struct-type + prefab-key? prefab-struct-key pregexp pregexp? + primitive-closure? primitive-result-arity primitive? print + print-as-expression print-boolean-long-form print-box + print-graph print-hash-table print-mpair-curly-braces + print-pair-curly-braces print-reader-abbreviations + print-struct print-syntax-width print-unreadable + print-vector-length printf procedure->method procedure-arity + procedure-arity-includes? procedure-arity? + procedure-closure-contents-eq? procedure-extract-target + procedure-reduce-arity procedure-rename + procedure-struct-type? procedure? progress-evt? + prop:arity-string prop:checked-procedure + prop:custom-print-quotable prop:custom-write prop:equal+hash + prop:evt prop:exn:missing-module prop:exn:srclocs + prop:impersonator-of prop:input-port + prop:liberal-define-context prop:output-port prop:procedure + prop:rename-transformer prop:set!-transformer + pseudo-random-generator->vector + pseudo-random-generator-vector? pseudo-random-generator? + putenv quotient quotient/remainder raise + raise-argument-error raise-arguments-error raise-arity-error + raise-mismatch-error raise-range-error raise-result-error + raise-syntax-error raise-type-error raise-user-error random + random-seed rational? rationalize read read-accept-bar-quote + read-accept-box read-accept-compiled read-accept-dot + read-accept-graph read-accept-infix-dot read-accept-lang + read-accept-quasiquote read-accept-reader read-byte + read-byte-or-special read-bytes read-bytes! + read-bytes-avail! read-bytes-avail!* + read-bytes-avail!/enable-break read-bytes-line + read-case-sensitive read-char read-char-or-special + read-curly-brace-as-paren read-decimal-as-inexact + read-eval-print-loop read-language read-line + read-on-demand-source read-square-bracket-as-paren + read-string read-string! read-syntax read-syntax/recursive + read/recursive readtable-mapping readtable? + real->double-flonum real->floating-point-bytes + real->single-flonum real-part real? regexp regexp-match + regexp-match-peek regexp-match-peek-immediate + regexp-match-peek-positions + regexp-match-peek-positions-immediate + regexp-match-peek-positions-immediate/end + regexp-match-peek-positions/end regexp-match-positions + regexp-match-positions/end regexp-match/end regexp-match? + regexp-max-lookbehind regexp-replace regexp-replace* regexp? + relative-path? remainder rename-file-or-directory + rename-transformer-target rename-transformer? reroot-path + resolve-path resolved-module-path-name resolved-module-path? + reverse round seconds->date security-guard? + semaphore-peek-evt semaphore-peek-evt? semaphore-post + semaphore-try-wait? semaphore-wait + semaphore-wait/enable-break semaphore? + set!-transformer-procedure set!-transformer? set-box! + set-mcar! set-mcdr! set-phantom-bytes! + set-port-next-location! shared-bytes shell-execute + simplify-path sin single-flonum? sleep special-comment-value + special-comment? split-path sqrt srcloc srcloc->string + srcloc-column srcloc-line srcloc-position srcloc-source + srcloc-span srcloc? string string->bytes/latin-1 + string->bytes/locale string->bytes/utf-8 + string->immutable-string string->keyword string->list + string->number string->path string->path-element + string->symbol string->uninterned-symbol + string->unreadable-symbol string-append string-ci<=? + string-ci=? string-ci>? string-copy + string-copy! string-downcase + string-environment-variable-name? string-fill! + string-foldcase string-length string-locale-ci? string-locale-downcase + string-locale-upcase string-locale? string-normalize-nfc string-normalize-nfd + string-normalize-nfkc string-normalize-nfkd string-ref + string-set! string-titlecase string-upcase + string-utf-8-length string<=? string=? + string>? string? struct->vector struct-accessor-procedure? + struct-constructor-procedure? struct-info + struct-mutator-procedure? struct-predicate-procedure? + struct-type-info struct-type-make-constructor + struct-type-make-predicate + struct-type-property-accessor-procedure? + struct-type-property? struct-type? struct:arity-at-least + struct:date struct:date* struct:exn struct:exn:break + struct:exn:break:hang-up struct:exn:break:terminate + struct:exn:fail struct:exn:fail:contract + struct:exn:fail:contract:arity + struct:exn:fail:contract:continuation + struct:exn:fail:contract:divide-by-zero + struct:exn:fail:contract:non-fixnum-result + struct:exn:fail:contract:variable struct:exn:fail:filesystem + struct:exn:fail:filesystem:errno + struct:exn:fail:filesystem:exists + struct:exn:fail:filesystem:missing-module + struct:exn:fail:filesystem:version struct:exn:fail:network + struct:exn:fail:network:errno struct:exn:fail:out-of-memory + struct:exn:fail:read struct:exn:fail:read:eof + struct:exn:fail:read:non-char struct:exn:fail:syntax + struct:exn:fail:syntax:missing-module + struct:exn:fail:syntax:unbound struct:exn:fail:unsupported + struct:exn:fail:user struct:srcloc struct? sub1 subbytes + subprocess subprocess-group-enabled subprocess-kill + subprocess-pid subprocess-status subprocess-wait subprocess? + substring symbol->string symbol-interned? symbol-unreadable? + symbol? sync sync/enable-break sync/timeout + sync/timeout/enable-break syntax->list syntax-arm + syntax-column syntax-disarm syntax-e syntax-line + syntax-local-bind-syntaxes syntax-local-certifier + syntax-local-context syntax-local-expand-expression + syntax-local-get-shadower syntax-local-introduce + syntax-local-lift-context syntax-local-lift-expression + syntax-local-lift-module-end-declaration + syntax-local-lift-provide syntax-local-lift-require + syntax-local-lift-values-expression + syntax-local-make-definition-context + syntax-local-make-delta-introducer + syntax-local-module-defined-identifiers + syntax-local-module-exports + syntax-local-module-required-identifiers syntax-local-name + syntax-local-phase-level syntax-local-submodules + syntax-local-transforming-module-provides? + syntax-local-value syntax-local-value/immediate + syntax-original? syntax-position syntax-property + syntax-property-symbol-keys syntax-protect syntax-rearm + syntax-recertify syntax-shift-phase-level syntax-source + syntax-source-module syntax-span syntax-taint + syntax-tainted? syntax-track-origin + syntax-transforming-module-expression? syntax-transforming? + syntax? system-big-endian? system-idle-evt + system-language+country system-library-subpath + system-path-convention-type system-type tan terminal-port? + thread thread-cell-ref thread-cell-set! thread-cell-values? + thread-cell? thread-dead-evt thread-dead? thread-group? + thread-resume thread-resume-evt thread-rewind-receive + thread-running? thread-suspend thread-suspend-evt + thread-wait thread/suspend-to-kill thread? time-apply + truncate unbox uncaught-exception-handler + use-collection-link-paths use-compiled-file-paths + use-user-specific-search-paths values + variable-reference->empty-namespace + variable-reference->module-base-phase + variable-reference->module-declaration-inspector + variable-reference->module-path-index + variable-reference->module-source + variable-reference->namespace variable-reference->phase + variable-reference->resolved-module-path + variable-reference-constant? variable-reference? vector + vector->immutable-vector vector->list + vector->pseudo-random-generator + vector->pseudo-random-generator! vector->values vector-fill! + vector-immutable vector-length vector-ref vector-set! + vector-set-performance-stats! vector? version void void? + weak-box-value weak-box? will-execute will-executor? + will-register will-try-execute with-input-from-file + with-output-to-file wrap-evt write write-byte write-bytes + write-bytes-avail write-bytes-avail* write-bytes-avail-evt + write-bytes-avail/enable-break write-char write-special + write-special-avail* write-special-evt write-string zero? + ) + end + + # Since Racket allows identifiers to consist of nearly anything, + # it's simpler to describe what an ID is _not_. + id = /[^\s\(\)\[\]\{\}'`,.]+/i + + state :root do + # comments + rule /;.*$/, Comment::Single + rule /\s+/m, Text + + rule /[+-]inf[.][f0]/, Num::Float + rule /[+-]nan[.]0/, Num::Float + rule /[-]min[.]0/, Num::Float + rule /[+]max[.]0/, Num::Float + + rule /-?\d+\.\d+/, Num::Float + rule /-?\d+/, Num::Integer + + rule /#:#{id}+/, Name::Tag # keyword + + rule /#b[01]+/, Num::Bin + rule /#o[0-7]+/, Num::Oct + rule /#d[0-9]+/, Num::Integer + rule /#x[0-9a-f]+/i, Num::Hex + rule /#[ei][\d.]+/, Num::Other + + rule /"(\\\\|\\"|[^"])*"/, Str + rule /['`]#{id}/i, Str::Symbol + rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i, + Str::Char + rule /#t|#f/, Name::Constant + rule /(?:'|#|`|,@|,|\.)/, Operator + + rule /(['#])(\s*)(\()/m do + groups Str::Symbol, Text, Punctuation + end + + # () [] {} are all permitted as like pairs + rule /\(|\[|\{/, Punctuation, :command + rule /\)|\]|\}/, Punctuation + + rule id, Name::Variable + end + + state :command do + rule id, Name::Function do |m| + if self.class.keywords.include? m[0] + token Keyword + elsif self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Function + end + + pop! + end + + rule(//) { pop! } + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ruby.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ruby.rb new file mode 100644 index 0000000000..214cba26c0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/ruby.rb @@ -0,0 +1,439 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Ruby < RegexLexer + title "Ruby" + desc "The Ruby programming language (ruby-lang.org)" + tag 'ruby' + aliases 'rb' + filenames '*.rb', '*.ruby', '*.rbw', '*.rake', '*.gemspec', '*.podspec', + 'Rakefile', 'Guardfile', 'Gemfile', 'Capfile', 'Podfile', + 'Vagrantfile', '*.ru', '*.prawn', 'Berksfile', '*.arb', + 'Dangerfile' + + mimetypes 'text/x-ruby', 'application/x-ruby' + + def self.detect?(text) + return true if text.shebang? 'ruby' + end + + state :symbols do + # symbols + rule %r( + : # initial : + @{0,2} # optional ivar, for :@foo and :@@foo + [a-z_]\w*[!?]? # the symbol + )xi, Str::Symbol + + # special symbols + rule %r(:(?:\*\*|[-+]@|[/\%&\|^`~]|\[\]=?|<<|>>|<=?>|<=?|===?)), + Str::Symbol + + rule /:'(\\\\|\\'|[^'])*'/, Str::Symbol + rule /:"/, Str::Symbol, :simple_sym + end + + state :sigil_strings do + # %-sigiled strings + # %(abc), %[abc], %, %.abc., %r.abc., etc + delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' } + rule /%([rqswQWxiI])?([^\w\s])/ do |m| + open = Regexp.escape(m[2]) + close = Regexp.escape(delimiter_map[m[2]] || m[2]) + interp = /[rQWxI]/ === m[1] + toktype = Str::Other + + puts " open: #{open.inspect}" if @debug + puts " close: #{close.inspect}" if @debug + + # regexes + if m[1] == 'r' + toktype = Str::Regex + push :regex_flags + end + + token toktype + + push do + rule /\\[##{open}#{close}\\]/, Str::Escape + # nesting rules only with asymmetric delimiters + if open != close + rule /#{open}/ do + token toktype + push + end + end + rule /#{close}/, toktype, :pop! + + if interp + mixin :string_intp_escaped + rule /#/, toktype + else + rule /[\\#]/, toktype + end + + rule /[^##{open}#{close}\\]+/m, toktype + end + end + end + + state :strings do + mixin :symbols + rule /\b[a-z_]\w*?[?!]?:\s+/, Str::Symbol, :expr_start + rule /'(\\\\|\\'|[^'])*'/, Str::Single + rule /"/, Str::Double, :simple_string + rule /(?_*\$?:"]), Name::Variable::Global + rule /\$-[0adFiIlpvw]/, Name::Variable::Global + rule /::/, Operator + + mixin :strings + + rule /(?:#{keywords.join('|')})\b/, Keyword, :expr_start + rule /(?:#{keywords_pseudo.join('|')})\b/, Keyword::Pseudo, :expr_start + + rule %r( + (module) + (\s+) + ([a-zA-Z_][a-zA-Z0-9_]*(::[a-zA-Z_][a-zA-Z0-9_]*)*) + )x do + groups Keyword, Text, Name::Namespace + end + + rule /(def\b)(\s*)/ do + groups Keyword, Text + push :funcname + end + + rule /(class\b)(\s*)/ do + groups Keyword, Text + push :classname + end + + rule /(?:#{builtins_q.join('|')})[?]/, Name::Builtin, :expr_start + rule /(?:#{builtins_b.join('|')})!/, Name::Builtin, :expr_start + rule /(?=])/ do + groups Punctuation, Text, Name::Function + push :method_call + end + + rule /[a-zA-Z_]\w*[?!]/, Name, :expr_start + rule /[a-zA-Z_]\w*/, Name, :method_call + rule /\*\*|<>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\./, + Operator, :expr_start + rule /[-+\/*%=<>&!^|~]=?/, Operator, :expr_start + rule(/[?]/) { token Punctuation; push :ternary; push :expr_start } + rule %r<[\[({,:\\;/]>, Punctuation, :expr_start + rule %r<[\])}]>, Punctuation + end + + state :has_heredocs do + rule /(?>? | <=>? | >= | ===? + ) + )x do |m| + puts "matches: #{[m[0], m[1], m[2], m[3]].inspect}" if @debug + groups Name::Class, Operator, Name::Function + pop! + end + + rule(//) { pop! } + end + + state :classname do + rule /\s+/, Text + rule /\(/ do + token Punctuation + push :defexpr + push :expr_start + end + + # class << expr + rule /<=0?n[x]:"" + rule %r( + [?](\\[MC]-)* # modifiers + (\\([\\abefnrstv\#"']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S) + (?!\w) + )x, Str::Char, :pop! + + # special case for using a single space. Ruby demands that + # these be in a single line, otherwise it would make no sense. + rule /(\s*)(%[rqswQWxiI]? \S* )/ do + groups Text, Str::Other + pop! + end + + mixin :sigil_strings + + rule(//) { pop! } + end + + state :slash_regex do + mixin :string_intp + rule %r(\\\\), Str::Regex + rule %r(\\/), Str::Regex + rule %r([\\#]), Str::Regex + rule %r([^\\/#]+)m, Str::Regex + rule %r(/) do + token Str::Regex + goto :regex_flags + end + end + + state :end_part do + # eat up the rest of the stream as Comment::Preproc + rule /.+/m, Comment::Preproc, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/rust.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/rust.rb new file mode 100644 index 0000000000..e6bddf3e54 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/rust.rb @@ -0,0 +1,198 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Rust < RegexLexer + title "Rust" + desc 'The Rust programming language (rust-lang.org)' + tag 'rust' + aliases 'rs', + # So that directives from https://github.com/budziq/rust-skeptic + # do not prevent highlighting. + 'rust,no_run', 'rs,no_run', + 'rust,ignore', 'rs,ignore', + 'rust,should_panic', 'rs,should_panic' + filenames '*.rs' + mimetypes 'text/x-rust' + + def self.detect?(text) + return true if text.shebang? 'rustc' + end + + def self.keywords + @keywords ||= %w( + as assert break const copy do drop else enum extern fail false + fn for if impl let log loop match mod move mut priv pub pure + ref return self static struct true trait type unsafe use where + while box + ) + end + + def self.builtins + @builtins ||= Set.new %w( + Add BitAnd BitOr BitXor bool c_char c_double c_float char + c_int clock_t c_long c_longlong Cons Const Copy c_schar c_short + c_uchar c_uint c_ulong c_ulonglong c_ushort c_void dev_t DIR + dirent Div Either Eq Err f32 f64 Failure FILE float fpos_t + i16 i32 i64 i8 isize Index ino_t int intptr_t Left mode_t Modulo Mul + Neg Nil None Num off_t Ok Option Ord Owned pid_t Ptr ptrdiff_t + Right Send Shl Shr size_t Some ssize_t str Sub Success time_t + u16 u32 u64 u8 usize uint uintptr_t + Box Vec String Gc Rc Arc + ) + end + + def macro_closed? + @macro_delims.values.all?(&:zero?) + end + + start { + @macro_delims = { ']' => 0, ')' => 0, '}' => 0 } + } + + delim_map = { '[' => ']', '(' => ')', '{' => '}' } + + id = /[a-z_]\w*/i + hex = /[0-9a-f]/i + escapes = %r( + \\ ([nrt'\\] | x#{hex}{2} | u#{hex}{4} | U#{hex}{8}) + )x + size = /8|16|32|64/ + + state :start_line do + mixin :whitespace + rule /\s+/, Text + rule /#\[/ do + token Name::Decorator; push :attribute + end + rule(//) { pop! } + rule /#\s[^\n]*/, Comment::Preproc + end + + state :attribute do + mixin :whitespace + mixin :has_literals + rule /[(,)=]/, Name::Decorator + rule /\]/, Name::Decorator, :pop! + rule id, Name::Decorator + end + + state :whitespace do + rule /\s+/, Text + rule %r(//[^\n]*), Comment + rule %r(/[*].*?[*]/)m, Comment::Multiline + end + + state :root do + rule /\n/, Text, :start_line + mixin :whitespace + rule /\b(?:#{Rust.keywords.join('|')})\b/, Keyword + mixin :has_literals + + rule %r([=-]>), Keyword + rule %r(<->), Keyword + rule /[()\[\]{}|,:;]/, Punctuation + rule /[*!@~&+%^<>=-\?]|\.{2,3}/, Operator + + rule /([.]\s*)?#{id}(?=\s*[(])/m, Name::Function + rule /[.]\s*#{id}/, Name::Property + rule /(#{id})(::)/m do + groups Name::Namespace, Punctuation + end + + # macros + rule /\bmacro_rules!/, Name::Decorator, :macro_rules + rule /#{id}!/, Name::Decorator, :macro + + rule /'#{id}/, Name::Variable + rule /#{id}/ do |m| + name = m[0] + if self.class.builtins.include? name + token Name::Builtin + else + token Name + end + end + end + + state :macro do + mixin :has_literals + + rule /[\[{(]/ do |m| + @macro_delims[delim_map[m[0]]] += 1 + puts " macro_delims: #{@macro_delims.inspect}" if @debug + token Punctuation + end + + rule /[\]})]/ do |m| + @macro_delims[m[0]] -= 1 + puts " macro_delims: #{@macro_delims.inspect}" if @debug + pop! if macro_closed? + token Punctuation + end + + # same as the rule in root, but don't push another macro state + rule /#{id}!/, Name::Decorator + mixin :root + + # No syntax errors in macros + rule /./, Text + end + + state :macro_rules do + rule /[$]#{id}(:#{id})?/, Name::Variable + rule /[$]/, Name::Variable + + mixin :macro + end + + state :has_literals do + # constants + rule /\b(?:true|false|nil)\b/, Keyword::Constant + # characters + rule %r( + ' (?: #{escapes} | [^\\] ) ' + )x, Str::Char + + rule /"/, Str, :string + + # numbers + dot = /[.][0-9_]+/ + exp = /e[-+]?[0-9_]+/ + flt = /f32|f64/ + + rule %r( + [0-9]+ + (#{dot} #{exp}? #{flt}? + |#{dot}? #{exp} #{flt}? + |#{dot}? #{exp}? #{flt} + ) + )x, Num::Float + + rule %r( + ( 0b[10_]+ + | 0x[0-9a-fA-F-]+ + | [0-9]+ + ) (u#{size}?|i#{size})? + )x, Num::Integer + + end + + state :string do + rule /"/, Str, :pop! + rule escapes, Str::Escape + rule /%%/, Str::Interpol + rule %r( + % + ( [0-9]+ [$] )? # Parameter + [0#+-]* # Flag + ( [0-9]+ [$]? )? # Width + ( [.] [0-9]+ )? # Precision + [bcdfiostuxX?] # Type + )x, Str::Interpol + rule /[^%"\\]+/m, Str + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass.rb new file mode 100644 index 0000000000..44fbe82de3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass.rb @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'sass/common.rb' + + class Sass < SassCommon + include Indentation + + title "Sass" + desc 'The Sass stylesheet language language (sass-lang.com)' + + tag 'sass' + filenames '*.sass' + mimetypes 'text/x-sass' + + id = /[\w-]+/ + + state :root do + rule /[ \t]*\n/, Text + rule(/[ \t]*/) { |m| token Text; indentation(m[0]) } + end + + state :content do + # block comments + rule %r(//.*?$) do + token Comment::Single + pop!; starts_block :single_comment + end + + rule %r(/[*].*?\n) do + token Comment::Multiline + pop!; starts_block :multi_comment + end + + rule /@import\b/, Keyword, :import + + mixin :content_common + + rule %r(=#{id}), Name::Function, :value + rule %r([+]#{id}), Name::Decorator, :value + + rule /:/, Name::Attribute, :old_style_attr + + rule(/(?=[^\[\n]+?:([^a-z]|$))/) { push :attribute } + + rule(//) { push :selector } + end + + state :single_comment do + rule /.*?$/, Comment::Single, :pop! + end + + state :multi_comment do + rule /.*?\n/, Comment::Multiline, :pop! + end + + state :import do + rule /[ \t]+/, Text + rule /\S+/, Str + rule /\n/, Text, :pop! + end + + state :old_style_attr do + mixin :attr_common + rule(//) { pop!; push :value } + end + + state :end_section do + rule(/\n/) { token Text; reset_stack } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass/common.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass/common.rb new file mode 100644 index 0000000000..27850dbefe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sass/common.rb @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + # shared states with SCSS + class SassCommon < RegexLexer + id = /[\w-]+/ + + state :content_common do + rule /@for\b/, Keyword, :for + rule /@(debug|warn|if|each|while|else|return|media)/, Keyword, :value + + rule /(@mixin)(\s+)(#{id})/ do + groups Keyword, Text, Name::Function + push :value + end + + rule /(@function)(\s+)(#{id})/ do + groups Keyword, Text, Name::Function + push :value + end + + rule /@extend\b/, Keyword, :selector + + rule /(@include)(\s+)(#{id})/ do + groups Keyword, Text, Name::Decorator + push :value + end + + rule /@#{id}/, Keyword, :selector + + # $variable: assignment + rule /([$]#{id})([ \t]*)(:)/ do + groups Name::Variable, Text, Punctuation + push :value + end + end + + state :value do + mixin :end_section + rule /[ \t]+/, Text + rule /[$]#{id}/, Name::Variable + rule /url[(]/, Str::Other, :string_url + rule /#{id}(?=\s*[(])/, Name::Function + rule /%#{id}/, Name::Decorator + + # named literals + rule /(true|false)\b/, Name::Builtin::Pseudo + rule /(and|or|not)\b/, Operator::Word + + # colors and numbers + rule /#[a-z0-9]{1,6}/i, Num::Hex + rule /-?\d+(%|[a-z]+)?/, Num + rule /-?\d*\.\d+(%|[a-z]+)?/, Num::Integer + + mixin :has_strings + mixin :has_interp + + rule /[~^*!&%<>\|+=@:,.\/?-]+/, Operator + rule /[\[\]()]+/, Punctuation + rule %r(/[*]), Comment::Multiline, :inline_comment + rule %r(//[^\n]*), Comment::Single + + # identifiers + rule(id) do |m| + if CSS.builtins.include? m[0] + token Name::Builtin + elsif CSS.constants.include? m[0] + token Name::Constant + else + token Name + end + end + end + + state :has_interp do + rule /[#][{]/, Str::Interpol, :interpolation + end + + state :has_strings do + rule /"/, Str::Double, :dq + rule /'/, Str::Single, :sq + end + + state :interpolation do + rule /}/, Str::Interpol, :pop! + mixin :value + end + + state :selector do + mixin :end_section + + mixin :has_strings + mixin :has_interp + rule /[ \t]+/, Text + rule /:/, Name::Decorator, :pseudo_class + rule /[.]/, Name::Class, :class + rule /#/, Name::Namespace, :id + rule /%/, Name::Variable, :placeholder + rule id, Name::Tag + rule /&/, Keyword + rule /[~^*!&\[\]()<>\|+=@:;,.\/?-]/, Operator + end + + state :dq do + rule /"/, Str::Double, :pop! + mixin :has_interp + rule /(\\.|#(?![{])|[^\n"#])+/, Str::Double + end + + state :sq do + rule /'/, Str::Single, :pop! + mixin :has_interp + rule /(\\.|#(?![{])|[^\n'#])+/, Str::Single + end + + state :string_url do + rule /[)]/, Str::Other, :pop! + rule /(\\.|#(?![{])|[^\n)#])+/, Str::Other + mixin :has_interp + end + + state :selector_piece do + mixin :has_interp + rule(//) { pop! } + end + + state :pseudo_class do + rule id, Name::Decorator + mixin :selector_piece + end + + state :class do + rule id, Name::Class + mixin :selector_piece + end + + state :id do + rule id, Name::Namespace + mixin :selector_piece + end + + state :placeholder do + rule id, Name::Variable + mixin :selector_piece + end + + state :for do + rule /(from|to|through)/, Operator::Word + mixin :value + end + + state :attr_common do + mixin :has_interp + rule id do |m| + if CSS.attributes.include? m[0] + token Name::Label + else + token Name::Attribute + end + end + end + + state :attribute do + mixin :attr_common + + rule /([ \t]*)(:)/ do + groups Text, Punctuation + push :value + end + end + + state :inline_comment do + rule /(\\#|#(?=[^\n{])|\*(?=[^\n\/])|[^\n#*])+/, Comment::Multiline + mixin :has_interp + rule %r([*]/), Comment::Multiline, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scala.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scala.rb new file mode 100644 index 0000000000..0b0e9a410c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scala.rb @@ -0,0 +1,143 @@ +# -*- coding: utf-8 # +# frozen_string_literal: true + +module Rouge + module Lexers + class Scala < RegexLexer + title "Scala" + desc "The Scala programming language (scala-lang.org)" + tag 'scala' + aliases 'scala' + filenames '*.scala', '*.sbt' + + mimetypes 'text/x-scala', 'application/x-scala' + + # As documented in the ENBF section of the scala specification + # http://www.scala-lang.org/docu/files/ScalaReference.pdf + whitespace = /\p{Space}/ + letter = /[\p{L}$_]/ + upper = /[\p{Lu}$_]/ + digits = /[0-9]/ + parens = /[(){}\[\]]/ + delims = %r([‘’".;,]) + + # negative lookahead to filter out other classes + op = %r( + (?!#{whitespace}|#{letter}|#{digits}|#{parens}|#{delims}) + [\u0020-\u007F\p{Sm}\p{So}] + )x + + idrest = %r(#{letter}(?:#{letter}|#{digits})*(?:(?<=_)#{op}+)?)x + + keywords = %w( + abstract case catch def do else extends final finally for forSome + if implicit lazy match new override private protected requires return + sealed super this throw try val var while with yield + ) + + state :root do + rule /(class|trait|object)(\s+)/ do + groups Keyword, Text + push :class + end + rule /'#{idrest}[^']/, Str::Symbol + rule /[^\S\n]+/, Text + + rule %r(//.*?\n), Comment::Single + rule %r(/\*), Comment::Multiline, :comment + + rule /@#{idrest}/, Name::Decorator + rule %r( + (#{keywords.join("|")})\b| + (<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\b|(?=\s)|$) + )x, Keyword + rule /:(?!#{op})/, Keyword, :type + rule /#{upper}#{idrest}\b/, Name::Class + rule /(true|false|null)\b/, Keyword::Constant + rule /(import|package)(\s+)/ do + groups Keyword, Text + push :import + end + + rule /(type)(\s+)/ do + groups Keyword, Text + push :type + end + + rule /""".*?"""(?!")/m, Str + rule /"(\\\\|\\"|[^"])*"/, Str + rule /'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'/, Str::Char + + rule idrest, Name + rule /`[^`]+`/, Name + + rule /\[/, Operator, :typeparam + rule /[\(\)\{\};,.#]/, Operator + rule /#{op}+/, Operator + + rule /([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?/, Num::Float + rule /([0-9][0-9]*[fFdD])/, Num::Float + rule /0x[0-9a-fA-F]+/, Num::Hex + rule /[0-9]+L?/, Num::Integer + rule /\n/, Text + end + + state :class do + rule /(#{idrest}|#{op}+|`[^`]+`)(\s*)(\[)/ do + groups Name::Class, Text, Operator + push :typeparam + end + + rule /\s+/, Text + rule /{/, Operator, :pop! + rule /\(/, Operator, :pop! + rule %r(//.*?\n), Comment::Single, :pop! + rule %r(#{idrest}|#{op}+|`[^`]+`), Name::Class, :pop! + end + + state :type do + rule /\s+/, Text + rule /<[%:]|>:|[#_\u21D2]|forSome|type/, Keyword + rule /([,\);}]|=>|=)(\s*)/ do + groups Operator, Text + pop! + end + rule /[\(\{]/, Operator, :type + + typechunk = /(?:#{idrest}|#{op}+\`[^`]+`)/ + rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)(\[)/ do + groups Keyword::Type, Text, Operator + pop! + push :typeparam + end + + rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)$/ do + groups Keyword::Type, Text + pop! + end + + rule %r(//.*?\n), Comment::Single, :pop! + rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type + end + + state :typeparam do + rule /[\s,]+/, Text + rule /<[%:]|=>|>:|[#_\u21D2]|forSome|type/, Keyword + rule /([\]\)\}])/, Operator, :pop! + rule /[\(\[\{]/, Operator, :typeparam + rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type + end + + state :comment do + rule %r([^/\*]+), Comment::Multiline + rule %r(/\*), Comment::Multiline, :comment + rule %r(\*/), Comment::Multiline, :pop! + rule %r([*/]), Comment::Multiline + end + + state :import do + rule %r((#{idrest}|\.)+), Name::Namespace, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scheme.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scheme.rb new file mode 100644 index 0000000000..5a856102f6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scheme.rb @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Scheme < RegexLexer + title "Scheme" + desc "The Scheme variant of Lisp" + + tag 'scheme' + filenames '*.scm', '*.ss' + mimetypes 'text/x-scheme', 'application/x-scheme' + + def self.keywords + @keywords ||= Set.new %w( + lambda define if else cond and or case let let* letrec begin + do delay set! => quote quasiquote unquote unquote-splicing + define-syntax let-syntax letrec-syntax syntax-rules + ) + end + + def self.builtins + @builtins ||= Set.new %w( + * + - / < <= = > >= abs acos angle append apply asin + assoc assq assv atan boolean? caaaar caaadr caaar caadar + caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr + cadr call-with-current-continuation call-with-input-file + call-with-output-file call-with-values call/cc car cdaaar cdaadr + cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr + cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=? + char-ci=? char-ci>? char-downcase + char-lower-case? char-numeric? char-ready? char-upcase + char-upper-case? char-whitespace? char<=? char=? + char>? char? close-input-port close-output-port complex? cons + cos current-input-port current-output-port denominator + display dynamic-wind eof-object? eq? equal? eqv? eval + even? exact->inexact exact? exp expt floor for-each force gcd + imag-part inexact->exact inexact? input-port? integer->char + integer? interaction-environment lcm length list list->string + list->vector list-ref list-tail list? load log magnitude + make-polar make-rectangular make-string make-vector map + max member memq memv min modulo negative? newline not + null-environment null? number->string number? numerator odd? + open-input-file open-output-file output-port? pair? peek-char + port? positive? procedure? quotient rational? rationalize + read read-char real-part real? remainder reverse round + scheme-report-environment set-car! set-cdr! sin sqrt string + string->list string->number string->symbol string-append + string-ci<=? string-ci=? string-ci>? + string-copy string-fill! string-length string-ref + string-set! string<=? string=? + string>? string? substring symbol->string symbol? + tan transcript-off transcript-on truncate values vector + vector->list vector-fill! vector-length vector-ref + vector-set! vector? with-input-from-file with-output-to-file + write write-char zero? + ) + end + + id = /[a-z0-9!$\%&*+,\/:<=>?@^_~|-]+/i + + state :root do + # comments + rule /;.*$/, Comment::Single + rule /\s+/m, Text + rule /-?\d+\.\d+/, Num::Float + rule /-?\d+/, Num::Integer + + # Racket infinitites + rule /[+-]inf[.][f0]/, Num + + rule /#b[01]+/, Num::Bin + rule /#o[0-7]+/, Num::Oct + rule /#d[0-9]+/, Num::Integer + rule /#x[0-9a-f]+/i, Num::Hex + rule /#[ei][\d.]+/, Num::Other + + rule /"(\\\\|\\"|[^"])*"/, Str + rule /'#{id}/i, Str::Symbol + rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i, + Str::Char + rule /#t|#f/, Name::Constant + rule /(?:'|#|`|,@|,|\.)/, Operator + + rule /(['#])(\s*)(\()/m do + groups Str::Symbol, Text, Punctuation + end + + rule /\(|\[/, Punctuation, :command + rule /\)|\]/, Punctuation + + rule id, Name::Variable + end + + state :command do + rule id, Name::Function do |m| + if self.class.keywords.include? m[0] + token Keyword + elsif self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Function + end + + pop! + end + + rule(//) { pop! } + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scss.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scss.rb new file mode 100644 index 0000000000..4510a5f410 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/scss.rb @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'sass/common.rb' + + class Scss < SassCommon + title "SCSS" + desc "SCSS stylesheets (sass-lang.com)" + tag 'scss' + filenames '*.scss' + mimetypes 'text/x-scss' + + state :root do + rule /\s+/, Text + rule %r(//.*?$), Comment::Single + rule %r(/[*].*?[*]/)m, Comment::Multiline + rule /@import\b/, Keyword, :value + + mixin :content_common + + rule(/(?=[^;{}][;}])/) { push :attribute } + rule(/(?=[^;{}:\[]+:[^a-z])/) { push :attribute } + + rule(//) { push :selector } + end + + state :end_section do + rule /\n/, Text + rule(/[;{}]/) { token Punctuation; reset_stack } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sed.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sed.rb new file mode 100644 index 0000000000..55eb1b9265 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sed.rb @@ -0,0 +1,173 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Sed < RegexLexer + title "sed" + desc 'sed, the ultimate stream editor' + + tag 'sed' + filenames '*.sed' + mimetypes 'text/x-sed' + + def self.detect?(text) + return true if text.shebang? 'sed' + end + + class Regex < RegexLexer + state :root do + rule /\\./, Str::Escape + rule /\[/, Punctuation, :brackets + rule /[$^.*]/, Operator + rule /[()]/, Punctuation + rule /./, Str::Regex + end + + state :brackets do + rule /\^/ do + token Punctuation + goto :brackets_int + end + + rule(//) { goto :brackets_int } + end + + state :brackets_int do + # ranges + rule /.-./, Name::Variable + rule /\]/, Punctuation, :pop! + rule /./, Str::Regex + end + end + + class Replacement < RegexLexer + state :root do + rule /\\./m, Str::Escape + rule /&/, Operator + rule /[^\\&]+/m, Text + end + end + + def regex + @regex ||= Regex.new(options) + end + + def replacement + @replacement ||= Replacement.new(options) + end + + start { regex.reset!; replacement.reset! } + + state :whitespace do + rule /\s+/m, Text + rule(/#.*?\n/) { token Comment; reset_stack } + rule(/\n/) { token Text; reset_stack } + rule(/;/) { token Punctuation; reset_stack } + end + + state :root do + mixin :addr_range + end + + edot = /\\.|./m + + state :command do + mixin :whitespace + + # subst and transliteration + rule /(s)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m| + token Keyword, m[1] + token Punctuation, m[2] + delegate regex, m[3] + token Punctuation, m[4] + delegate replacement, m[5] + token Punctuation, m[6] + + + goto :flags + end + + rule /(y)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m| + token Keyword, m[1] + token Punctuation, m[2] + delegate replacement, m[3] + token Punctuation, m[4] + delegate replacement, m[5] + token Punctuation, m[6] + + pop! + end + + # commands that take a text segment as an argument + rule /([aic])(\s*)/ do + groups Keyword, Text; goto :text + end + + rule /[pd]/, Keyword + + # commands that take a number argument + rule /([qQl])(\s+)(\d+)/i do + groups Keyword, Text, Num + pop! + end + + # no-argument commands + rule /[={}dDgGhHlnpPqx]/, Keyword, :pop! + + # commands that take a filename argument + rule /([rRwW])(\s+)(\S+)/ do + groups Keyword, Text, Name + pop! + end + + # commands that take a label argument + rule /([:btT])(\s+)(\S+)/ do + groups Keyword, Text, Name::Label + pop! + end + end + + state :addr_range do + mixin :whitespace + + ### address ranges ### + addr_tok = Keyword::Namespace + rule /\d+/, addr_tok + rule /[$,~+!]/, addr_tok + + rule %r((/)((?:\\.|.)*?)(/)) do |m| + token addr_tok, m[1]; delegate regex, m[2]; token addr_tok, m[3] + end + + # alternate regex rage delimiters + rule %r((\\)(.)(\\.|.)*?(\2)) do |m| + token addr_tok, m[1] + m[2] + delegate regex, m[3] + token addr_tok, m[4] + end + + rule(//) { push :command } + end + + state :text do + rule /[^\\\n]+/, Str + rule /\\\n/, Str::Escape + rule /\\/, Str + rule /\n/, Text, :pop! + end + + state :flags do + rule /[gp]+/, Keyword, :pop! + + # writing to a file with the subst command. + # who'da thunk...? + rule /([wW])(\s+)(\S+)/ do + token Keyword; token Text; token Name + end + + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/shell.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/shell.rb new file mode 100644 index 0000000000..4b7d7d72a7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/shell.rb @@ -0,0 +1,190 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Shell < RegexLexer + title "shell" + desc "Various shell languages, including sh and bash" + + tag 'shell' + aliases 'bash', 'zsh', 'ksh', 'sh' + filenames '*.sh', '*.bash', '*.zsh', '*.ksh', + '.bashrc', '.zshrc', '.kshrc', '.profile', 'PKGBUILD' + + mimetypes 'application/x-sh', 'application/x-shellscript' + + def self.detect?(text) + return true if text.shebang?(/(ba|z|k)?sh/) + end + + KEYWORDS = %w( + if fi else while do done for then return function + select continue until esac elif in + ).join('|') + + BUILTINS = %w( + alias bg bind break builtin caller cd command compgen + complete declare dirs disown enable eval exec exit + export false fc fg getopts hash help history jobs let + local logout mapfile popd pushd pwd read readonly set + shift shopt source suspend test time times trap true type + typeset ulimit umask unalias unset wait + + cat tac nl od base32 base64 fmt pr fold head tail split csplit + wc sum cksum b2sum md5sum sha1sum sha224sum sha256sum sha384sum + sha512sum sort shuf uniq comm ptx tsort cut paste join tr expand + unexpand ls dir vdir dircolors cp dd install mv rm shred link ln + mkdir mkfifo mknod readlink rmdir unlink chown chgrp chmod touch + df du stat sync truncate echo printf yes expr tee basename dirname + pathchk mktemp realpath pwd stty printenv tty id logname whoami + groups users who date arch nproc uname hostname hostid uptime chcon + runcon chroot env nice nohup stdbuf timeout kill sleep factor numfmt + seq tar grep sudo awk sed gzip gunzip + ).join('|') + + state :basic do + rule /#.*$/, Comment + + rule /\b(#{KEYWORDS})\s*\b/, Keyword + rule /\bcase\b/, Keyword, :case + + rule /\b(#{BUILTINS})\s*\b(?!(\.|-))/, Name::Builtin + rule /[.](?=\s)/, Name::Builtin + + rule /(\b\w+)(=)/ do |m| + groups Name::Variable, Operator + end + + rule /[\[\]{}()!=>]/, Operator + rule /&&|\|\|/, Operator + + # here-string + rule /<< ruby, + 'erb' => ERB.new(options), + 'javascript' => Javascript.new(options), + 'css' => CSS.new(options), + 'coffee' => Coffeescript.new(options), + 'markdown' => Markdown.new(options), + 'scss' => Scss.new(options), + 'sass' => Sass.new(options) + } + end + + start { ruby.reset!; html.reset! } + + state :root do + rule /\s*\n/, Text + rule(/\s*/) { |m| token Text; indentation(m[0]) } + end + + state :content do + mixin :css + + rule /\/#{dot}*/, Comment, :indented_block + + rule /(doctype)(\s+)(.*)/ do + groups Name::Namespace, Text::Whitespace, Text + pop! + end + + # filters, shamelessly ripped from HAML + rule /(\w*):\s*\n/ do |m| + token Name::Decorator + pop! + starts_block :filter_block + + filter_name = m[1].strip + + @filter_lexer = self.filters[filter_name] + @filter_lexer.reset! unless @filter_lexer.nil? + + puts " slim: filter #{filter_name.inspect} #{@filter_lexer.inspect}" if @debug + end + + # Text + rule %r([\|'](?=\s)) do + token Punctuation + pop! + starts_block :plain_block + goto :plain_block + end + + rule /-|==|=/, Punctuation, :ruby_line + + # Dynamic tags + rule /(\*)(#{ruby_chars}+\(.*?\))/ do |m| + token Punctuation, m[1] + delegate ruby, m[2] + push :tag + end + + rule /(\*)(#{ruby_chars}+)/ do |m| + token Punctuation, m[1] + delegate ruby, m[2] + push :tag + end + + #rule /<\w+(?=.*>)/, Keyword::Constant, :tag # Maybe do this, look ahead and stuff + rule %r(()) do |m| # Dirty html + delegate html, m[1] + pop! + end + + # Ordinary slim tags + rule /\w+/, Name::Tag, :tag + + end + + state :tag do + mixin :css + mixin :indented_block + mixin :interpolation + + # Whitespace control + rule /[<>]/, Punctuation + + # Trim whitespace + rule /\s+?/, Text::Whitespace + + # Splats, these two might be mergable? + rule /(\*)(#{ruby_chars}+)/ do |m| + token Punctuation, m[1] + delegate ruby, m[2] + end + + rule /(\*)(\{#{dot}+?\})/ do |m| + token Punctuation, m[1] + delegate ruby, m[2] + end + + # Attributes + rule /([\w\-]+)(\s*)(\=)/ do |m| + token Name::Attribute, m[1] + token Text::Whitespace, m[2] + token Punctuation, m[3] + push :html_attr + end + + # Ruby value + rule /(\=)(#{dot}+)/ do |m| + token Punctuation, m[1] + #token Keyword::Constant, m[2] + delegate ruby, m[2] + end + + # HTML Entities + rule(/&\S*?;/, Name::Entity) + + rule /#{dot}+?/, Text + + rule /\s*\n/, Text::Whitespace, :pop! + end + + state :css do + rule(/\.[\w-]*/) { token Name::Class; goto :tag } + rule(/#[a-zA-Z][\w:-]*/) { token Name::Function; goto :tag } + end + + state :html_attr do + # Strings, double/single quoted + rule(/\s*(['"])#{dot}*?\1/, Literal::String, :pop!) + + # Ruby stuff + rule(/(#{ruby_chars}+\(.*?\))/) { |m| delegate ruby, m[1]; pop! } + rule(/(#{ruby_chars}+)/) { |m| delegate ruby, m[1]; pop! } + + rule /\s+/, Text::Whitespace + end + + state :ruby_line do + # Need at top + mixin :indented_block + + rule(/,\s*\n/) { delegate ruby } + rule /[ ]\|[ \t]*\n/, Str::Escape + rule(/.*?(?=(,$| \|)?[ \t]*$)/) { delegate ruby } + end + + state :filter_block do + rule /([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do + if @filter_lexer + delegate @filter_lexer + else + token Name::Decorator + end + end + + mixin :interpolation + mixin :indented_block + end + + state :plain_block do + mixin :interpolation + + rule %r(()) do |m| # Dirty html + delegate html, m[1] + end + + # HTML Entities + rule(/&\S*?;/, Name::Entity) + + #rule /([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do + rule /#{dot}+?/, Text + + mixin :indented_block + end + + state :interpolation do + rule /#[{]/, Str::Interpol, :ruby_interp + end + + state :ruby_interp do + rule /[}]/, Str::Interpol, :pop! + mixin :ruby_interp_inner + end + + state :ruby_interp_inner do + rule(/[{]/) { delegate ruby; push :ruby_interp_inner } + rule(/[}]/) { delegate ruby; pop! } + rule(/[^{}]+/) { delegate ruby } + end + + state :indented_block do + rule(/(?=|&!?,@%]) + + state :root do + rule /(<)(\w+:)(.*?)(>)/ do + groups Punctuation, Keyword, Text, Punctuation + end + + # mixin :squeak_fileout + mixin :whitespaces + mixin :method_definition + rule /([|])([\w\s]*)([|])/ do + groups Punctuation, Name::Variable, Punctuation + end + mixin :objects + rule /\^|:=|_/, Operator + + rule /[)}\]]/, Punctuation, :after_object + rule /[({\[!]/, Punctuation + end + + state :method_definition do + rule /([a-z]\w*:)(\s*)(\w+)/i do + groups Name::Function, Text, Name::Variable + end + + rule /^(\s*)(\b[a-z]\w*\b)(\s*)$/i do + groups Text, Name::Function, Text + end + + rule %r(^(\s*)(#{ops}+)(\s*)(\w+)(\s*)$) do + groups Text, Name::Function, Text, Name::Variable, Text + end + end + + state :block_variables do + mixin :whitespaces + rule /(:)(\s*)(\w+)/ do + groups Operator, Text, Name::Variable + end + + rule /[|]/, Punctuation, :pop! + + rule(//) { pop! } + end + + state :literals do + rule /'(''|.)*?'/m, Str, :after_object + rule /[$]./, Str::Char, :after_object + rule /#[(]/, Str::Symbol, :parenth + rule /(\d+r)?-?\d+(\.\d+)?(e-?\d+)?/, + Num, :after_object + rule /#("[^"]*"|#{ops}+|[\w:]+)/, + Str::Symbol, :after_object + end + + state :parenth do + rule /[)]/ do + token Str::Symbol + goto :after_object + end + + mixin :inner_parenth + end + + state :inner_parenth do + rule /#[(]/, Str::Symbol, :inner_parenth + rule /[)]/, Str::Symbol, :pop! + mixin :whitespaces + mixin :literals + rule /(#{ops}|[\w:])+/, Str::Symbol + end + + state :whitespaces do + rule /! !$/, Keyword # squeak chunk delimiter + rule /\s+/m, Text + rule /".*?"/m, Comment + end + + state :objects do + rule /\[/, Punctuation, :block_variables + rule /(self|super|true|false|nil|thisContext)\b/, + Name::Builtin::Pseudo, :after_object + rule /[A-Z]\w*(?!:)\b/, Name::Class, :after_object + rule /[a-z]\w*(?!:)\b/, Name::Variable, :after_object + mixin :literals + end + + state :after_object do + mixin :whitespaces + rule /(ifTrue|ifFalse|whileTrue|whileFalse|timesRepeat):/, + Name::Builtin, :pop! + rule /new(?!:)\b/, Name::Builtin + rule /:=|_/, Operator, :pop! + rule /[a-z]+\w*:/i, Name::Function, :pop! + rule /[a-z]+\w*/i, Name::Function + rule /#{ops}+/, Name::Function, :pop! + rule /[.]/, Punctuation, :pop! + rule /;/, Punctuation + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/smarty.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/smarty.rb new file mode 100644 index 0000000000..e21b6e5011 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/smarty.rb @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Smarty < TemplateLexer + title "Smarty" + desc 'Smarty Template Engine' + tag 'smarty' + aliases 'smarty' + filenames '*.tpl', '*.smarty' + mimetypes 'application/x-smarty', 'text/x-smarty' + + def self.builtins + @builtins ||= %w( + append assign block call capture config_load debug extends + for foreach foreachelse break continue function if elseif + else include include_php insert ldelim rdelim literal nocache + php section sectionelse setfilter strip while + counter cycle eval fetch html_checkboxes html_image html_options + html_radios html_select_date html_select_time html_table + mailto math textformat + capitalize cat count_characters count_paragraphs + count_sentences count_words date_format default escape + from_charset indent lower nl2br regex_replace replace spacify + string_format strip strip_tags to_charset truncate unescape + upper wordwrap + ) + end + + + state :root do + rule(/\{\s+/) { delegate parent } + + # block comments + rule /\{\*.*?\*\}/m, Comment + + rule /\{\/?(?![\s*])/ do + token Keyword + push :smarty + end + + + rule(/.*?(?={[\/a-zA-Z0-9$#*"'])|.*/m) { delegate parent } + rule(/.+/m) { delegate parent } + end + + state :comment do + rule(/{\*/) { token Comment; push } + rule(/\*}/) { token Comment; pop! } + rule(/[^{}]+/m) { token Comment } + end + + state :smarty do + # allow nested tags + rule /\{\/?(?![\s*])/ do + token Keyword + push :smarty + end + + rule /}/, Keyword, :pop! + rule /\s+/m, Text + rule %r([~!%^&*()+=|\[\]:;,.<>/@?-]), Operator + rule /#[a-zA-Z_]\w*#/, Name::Variable + rule /\$[a-zA-Z_]\w*(\.\w+)*/, Name::Variable + rule /(true|false|null)\b/, Keyword::Constant + rule /[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?/, Num + rule /"(\\.|.)*?"/, Str::Double + rule /'(\\.|.)*?'/, Str::Single + rule /([a-zA-Z_]\w*)/ do |m| + if self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Attribute + end + end + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sml.rb new file mode 100644 index 0000000000..2755dc9501 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sml.rb @@ -0,0 +1,345 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class SML < RegexLexer + title "SML" + desc 'Standard ML' + tag 'sml' + aliases 'ml' + filenames '*.sml', '*.sig', '*.fun' + + mimetypes 'text/x-standardml', 'application/x-standardml' + + def self.keywords + @keywords ||= Set.new %w( + abstype and andalso as case datatype do else end exception + fn fun handle if in infix infixr let local nonfix of op open + orelse raise rec then type val with withtype while + eqtype functor include sharing sig signature struct structure + where + ) + end + + def self.symbolic_reserved + @symbolic_reserved ||= Set.new %w(: | = => -> # :>) + end + + id = /[\w']+/i + symbol = %r([!%&$#/:<=>?@\\~`^|*+-]+) + + state :whitespace do + rule /\s+/m, Text + rule /[(][*]/, Comment, :comment + end + + state :delimiters do + rule /[(\[{]/, Punctuation, :main + rule /[)\]}]/, Punctuation, :pop! + + rule /\b(let|if|local)\b(?!')/ do + token Keyword::Reserved + push; push + end + + rule /\b(struct|sig|while)\b(?!')/ do + token Keyword::Reserved + push + end + + rule /\b(do|else|end|in|then)\b(?!')/, Keyword::Reserved, :pop! + end + + def token_for_id_with_dot(id) + if self.class.keywords.include? id + Error + else + Name::Namespace + end + end + + def token_for_final_id(id) + if self.class.keywords.include? id or self.class.symbolic_reserved.include? id + Error + else + Name + end + end + + def token_for_id(id) + if self.class.keywords.include? id + Keyword::Reserved + elsif self.class.symbolic_reserved.include? id + Punctuation + else + Name + end + end + + state :core do + rule /[()\[\]{},;_]|[.][.][.]/, Punctuation + rule /#"/, Str::Char, :char + rule /"/, Str::Double, :string + rule /~?0x[0-9a-fA-F]+/, Num::Hex + rule /0wx[0-9a-fA-F]+/, Num::Hex + rule /0w\d+/, Num::Integer + rule /~?\d+([.]\d+)?[eE]~?\d+/, Num::Float + rule /~?\d+[.]\d+/, Num::Float + rule /~?\d+/, Num::Integer + + rule /#\s*[1-9][0-9]*/, Name::Label + rule /#\s*#{id}/, Name::Label + rule /#\s+#{symbol}/, Name::Label + + rule /\b(datatype|abstype)\b(?!')/, Keyword::Reserved, :dname + rule(/(?=\bexception\b(?!'))/) { push :ename } + rule /\b(functor|include|open|signature|structure)\b(?!')/, + Keyword::Reserved, :sname + rule /\b(type|eqtype)\b(?!')/, Keyword::Reserved, :tname + + rule /'#{id}/, Name::Decorator + rule /(#{id})([.])/ do |m| + groups(token_for_id_with_dot(m[1]), Punctuation) + push :dotted + end + + rule id do |m| + token token_for_id(m[0]) + end + + rule symbol do |m| + token token_for_id(m[0]) + end + end + + state :dotted do + rule /(#{id})([.])/ do |m| + groups(token_for_id_with_dot(m[1]), Punctuation) + end + + rule id do |m| + token token_for_id(m[0]) + pop! + end + + rule symbol do |m| + token token_for_id(m[0]) + pop! + end + end + + state :root do + rule /#!.*?\n/, Comment::Preproc + rule(//) { push :main } + end + + state :main do + mixin :whitespace + + rule /\b(val|and)\b(?!')/, Keyword::Reserved, :vname + rule /\b(fun)\b(?!')/ do + token Keyword::Reserved + goto :main_fun + push :fname + end + + mixin :delimiters + mixin :core + end + + state :main_fun do + mixin :whitespace + rule /\b(fun|and)\b(?!')/, Keyword::Reserved, :fname + rule /\bval\b(?!')/ do + token Keyword::Reserved + goto :main + push :vname + end + + rule /[|]/, Punctuation, :fname + rule /\b(case|handle)\b(?!')/ do + token Keyword::Reserved + goto :main + end + + mixin :delimiters + mixin :core + end + + state :has_escapes do + rule /\\[\\"abtnvfr]/, Str::Escape + rule /\\\^[\x40-\x5e]/, Str::Escape + rule /\\[0-9]{3}/, Str::Escape + rule /\\u\h{4}/, Str::Escape + rule /\\\s+\\/, Str::Interpol + end + + state :string do + rule /[^"\\]+/, Str::Double + rule /"/, Str::Double, :pop! + mixin :has_escapes + end + + state :char do + rule /[^"\\]+/, Str::Char + rule /"/, Str::Char, :pop! + mixin :has_escapes + end + + state :breakout do + rule /(?=\b(#{SML.keywords.to_a.join('|')})\b(?!'))/ do + pop! + end + end + + state :sname do + mixin :whitespace + mixin :breakout + rule id, Name::Namespace + rule(//) { pop! } + end + + state :has_annotations do + rule /'[\w']*/, Name::Decorator + rule /[(]/, Punctuation, :tyvarseq + end + + state :fname do + mixin :whitespace + mixin :has_annotations + + rule id, Name::Function, :pop! + rule symbol, Name::Function, :pop! + end + + state :vname do + mixin :whitespace + mixin :has_annotations + + rule /(#{id})(\s*)(=(?!#{symbol}))/m do + groups Name::Variable, Text, Punctuation + pop! + end + + rule /(#{symbol})(\s*)(=(?!#{symbol}))/m do + groups Name::Variable, Text, Punctuation + end + + rule id, Name::Variable, :pop! + rule symbol, Name::Variable, :pop! + + rule(//) { pop! } + end + + state :tname do + mixin :whitespace + mixin :breakout + mixin :has_annotations + + rule /'[\w']*/, Name::Decorator + rule /[(]/, Punctuation, :tyvarseq + + rule %r(=(?!#{symbol})) do + token Punctuation + goto :typbind + end + + rule id, Keyword::Type + rule symbol, Keyword::Type + end + + state :typbind do + mixin :whitespace + + rule /\b(and)\b(?!')/ do + token Keyword::Reserved + goto :tname + end + + mixin :breakout + mixin :core + end + + state :dname do + mixin :whitespace + mixin :breakout + mixin :has_annotations + + rule /(=)(\s*)(datatype)\b/ do + groups Punctuation, Text, Keyword::Reserved + pop! + end + + rule %r(=(?!#{symbol})) do + token Punctuation + goto :datbind + push :datcon + end + + rule id, Keyword::Type + rule symbol, Keyword::Type + end + + state :datbind do + mixin :whitespace + rule /\b(and)\b(?!')/ do + token Keyword::Reserved; goto :dname + end + rule /\b(withtype)\b(?!')/ do + token Keyword::Reserved; goto :tname + end + rule /\bof\b(?!')/, Keyword::Reserved + rule /([|])(\s*)(#{id})/ do + groups(Punctuation, Text, Name::Class) + end + + rule /([|])(\s+)(#{symbol})/ do + groups(Punctuation, Text, Name::Class) + end + + mixin :breakout + mixin :core + end + + state :ename do + mixin :whitespace + rule /(exception|and)(\s+)(#{id})/ do + groups Keyword::Reserved, Text, Name::Class + end + + rule /(exception|and)(\s*)(#{symbol})/ do + groups Keyword::Reserved, Text, Name::Class + end + + rule /\b(of)\b(?!')/, Keyword::Reserved + mixin :breakout + mixin :core + end + + state :datcon do + mixin :whitespace + rule id, Name::Class, :pop! + rule symbol, Name::Class, :pop! + end + + state :tyvarseq do + mixin :whitespace + rule /'[\w']*/, Name::Decorator + rule id, Name + rule /,/, Punctuation + rule /[)]/, Punctuation, :pop! + rule symbol, Name + end + + state :comment do + rule /[^(*)]+/, Comment::Multiline + rule /[(][*]/ do + token Comment::Multiline; push + end + rule /[*][)]/, Comment::Multiline, :pop! + rule /[(*)]/, Comment::Multiline + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf.rb new file mode 100644 index 0000000000..af58ba6032 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf.rb @@ -0,0 +1,109 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class SQF < RegexLexer + tag "sqf" + filenames "*.sqf" + + title "SQF" + desc "Status Quo Function, a Real Virtuality engine scripting language" + + def self.wordoperators + @wordoperators ||= Set.new %w( + and or not + ) + end + + def self.initializers + @initializers ||= Set.new %w( + private param params + ) + end + + def self.controlflow + @controlflow ||= Set.new %w( + if then else exitwith switch do case default while for from to step + foreach + ) + end + + def self.constants + @constants ||= Set.new %w( + true false player confignull controlnull displaynull grpnull + locationnull netobjnull objnull scriptnull tasknull teammembernull + ) + end + + def self.namespaces + @namespaces ||= Set.new %w( + currentnamespace missionnamespace parsingnamespace profilenamespace + uinamespace + ) + end + + def self.diag_commands + @diag_commands ||= Set.new %w( + diag_activemissionfsms diag_activesqfscripts diag_activesqsscripts + diag_activescripts diag_captureframe diag_captureframetofile + diag_captureslowframe diag_codeperformance diag_drawmode diag_enable + diag_enabled diag_fps diag_fpsmin diag_frameno diag_lightnewload + diag_list diag_log diag_logslowframe diag_mergeconfigfile + diag_recordturretlimits diag_setlightnew diag_ticktime diag_toggle + ) + end + + def self.commands + load Pathname.new(__FILE__).dirname.join("sqf/commands.rb") + @commands = self.commands + end + + state :root do + # Whitespace + rule %r"\s+", Text + + # Preprocessor instructions + rule %r"/\*.*?\*/"m, Comment::Multiline + rule %r"//.*\n", Comment::Single + rule %r"#(define|undef|if(n)?def|else|endif|include)", Comment::Preproc + rule %r"\\\r?\n", Comment::Preproc + rule %r"__(EVAL|EXEC|LINE__|FILE__)", Name::Builtin + + # Literals + rule %r"\".*?\"", Literal::String + rule %r"'.*?'", Literal::String + rule %r"(\$|0x)[0-9a-fA-F]+", Literal::Number::Hex + rule %r"[0-9]+(\.)?(e[0-9]+)?", Literal::Number::Float + + # Symbols + rule %r"[\!\%\&\*\+\-\/\<\=\>\^\|\#]", Operator + rule %r"[\(\)\{\}\[\]\,\:\;]", Punctuation + + # Identifiers (variables and functions) + rule %r"[a-zA-Z0-9_]+" do |m| + name = m[0].downcase + if self.class.wordoperators.include? name + token Operator::Word + elsif self.class.initializers.include? name + token Keyword::Declaration + elsif self.class.controlflow.include? name + token Keyword::Reserved + elsif self.class.constants.include? name + token Keyword::Constant + elsif self.class.namespaces.include? name + token Keyword::Namespace + elsif self.class.diag_commands.include? name + token Name::Function + elsif self.class.commands.include? name + token Name::Function + elsif %r"_.+" =~ name + token Name::Variable + else + token Name::Variable::Global + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf/commands.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf/commands.rb new file mode 100644 index 0000000000..23564faec2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sqf/commands.rb @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# automatically generated by `rake builtins:sqf` +module Rouge + module Lexers + class SQF < RegexLexer + def self.commands + @commands = Set.new %w( + abs acos actionids actionkeys actionkeysimages actionkeysnames actionkeysnamesarray actionname activateaddons activatekey add3denconnection add3deneventhandler addcamshake addforcegeneratorrtd additempool addmagazinepool addmissioneventhandler addmusiceventhandler addswitchableunit addtoremainscollector addweaponpool admin agent agltoasl aimpos airdensityrtd airplanethrottle airportside aisfinishheal alive allcontrols allmissionobjects allsimpleobjects allturrets allturrets allvariables allvariables allvariables allvariables allvariables allvariables allvariables animationnames animationstate asin asltoagl asltoatl assert assignedcargo assignedcommander assigneddriver assignedgunner assigneditems assignedtarget assignedteam assignedvehicle assignedvehiclerole atan atg atltoasl attachedobject attachedobjects attachedto attackenabled backpack backpackcargo backpackcontainer backpackitems backpackmagazines behaviour binocular boundingbox boundingboxreal boundingcenter breakout breakto buldozer_enableroaddiag buldozer_loadnewroads buttonaction buttonaction buttonsetaction call camcommitted camdestroy cameraeffectenablehud camerainterest campreloaded camtarget camusenvg cancelsimpletaskdestination canfire canmove canstand cantriggerdynamicsimulation canunloadincombat captive captivenum case cbchecked ceil channelenabled checkaifeature classname clear3deninventory clearallitemsfrombackpack clearbackpackcargo clearbackpackcargoglobal cleargroupicons clearitemcargo clearitemcargoglobal clearmagazinecargo clearmagazinecargoglobal clearoverlay clearweaponcargo clearweaponcargoglobal closedialog closeoverlay collapseobjecttree collect3denhistory collectivertd combatmode commander commandgetout commandstop comment commitoverlay compile compilefinal completedfsm composetext confighierarchy configname configproperties configsourceaddonlist configsourcemod configsourcemodlist copytoclipboard cos count count count create3dencomposition create3denentity createagent createcenter createdialog creatediarylink creategeardialog creategroup createguardedpoint createlocation createmarker createmarkerlocal createmine createsimpleobject createsoundsource createteam createtrigger createvehicle createvehiclecrew crew ctaddheader ctaddrow ctclear ctcursel ctheadercount ctrlactivate ctrlangle ctrlautoscrolldelay ctrlautoscrollrewind ctrlautoscrollspeed ctrlchecked ctrlclassname ctrlcommitted ctrldelete ctrlenable ctrlenabled ctrlenabled ctrlfade ctrlhtmlloaded ctrlidc ctrlidd ctrlmapanimclear ctrlmapanimcommit ctrlmapanimdone ctrlmapmouseover ctrlmapscale ctrlmodel ctrlmodeldirandup ctrlmodelscale ctrlparent ctrlparentcontrolsgroup ctrlposition ctrlscale ctrlsetfocus ctrlsettext ctrlshow ctrlshown ctrltext ctrltext ctrltextheight ctrltextsecondary ctrltextwidth ctrltype ctrlvisible ctrowcount curatoraddons curatorcameraarea curatorcameraareaceiling curatoreditableobjects curatoreditingarea curatoreditingareatype curatorpoints curatorregisteredobjects curatorwaypointcost currentcommand currentmagazine currentmagazinedetail currentmuzzle currenttask currenttasks currentthrowable currentvisionmode currentwaypoint currentweapon currentweaponmode currentzeroing cutobj cutrsc cuttext damage datetonumber deactivatekey debriefingtext debuglog default deg delete3denentities deletecenter deletecollection deletegroup deleteidentity deletelocation deletemarker deletemarkerlocal deletesite deletestatus deleteteam deletevehicle deletewaypoint detach detectedmines diag_captureframe diag_captureframetofile diag_captureslowframe diag_codeperformance diag_dynamicsimulationend diag_lightnewload diag_log diag_logslowframe diag_setlightnew didjipowner difficultyenabled difficultyoption direction direction disablemapindicators disableremotesensors disableuserinput displayparent dissolveteam do3denaction dogetout dostop drawicon3d drawline3d driver drop dynamicsimulationdistance dynamicsimulationdistancecoef dynamicsimulationenabled dynamicsimulationenabled echo edit3denmissionattributes effectivecommander enableaudiofeature enablecamshake enablecaustics enabledebriefingstats enablediaglegend enabledynamicsimulationsystem enableengineartillery enableenvironment enableradio enablesatnormalondetail enablesaving enablesentences enablestressdamage enableteamswitch enabletraffic enableweapondisassembly endmission enginesisonrtd enginespowerrtd enginesrpmrtd enginestorquertd entities entities estimatedtimeleft everybackpack everycontainer execfsm execvm exp expecteddestination exportjipmessages eyedirection eyepos face faction failmission fillweaponsfrompool finddisplay finite firstbackpack flag flaganimationphase flagowner flagside flagtexture fleeing floor for for forceatpositionrtd forcegeneratorrtd forcemap forcerespawn format formation formation formationdirection formationleader formationmembers formationposition formationtask formattext formleader fromeditor fuel fullcrew fullcrew gearidcammocount gearslotammocount gearslotdata get3denactionstate get3denconnections get3denentity get3denentityid get3dengrid get3denlayerentities get3denselected getaimingcoef getallenvsoundcontrollers getallhitpointsdamage getallownedmines getallsoundcontrollers getammocargo getanimaimprecision getanimspeedcoef getarray getartilleryammo getassignedcuratorlogic getassignedcuratorunit getbackpackcargo getbleedingremaining getburningvalue getcameraviewdirection getcenterofmass getconnecteduav getcontainermaxload getcustomaimcoef getdammage getdescription getdir getdirvisual getdlcassetsusagebyname getdlcs getdlcusagetime geteditorcamera geteditormode getenginetargetrpmrtd getfatigue getfieldmanualstartpage getforcedflagtexture getfuelcargo getgroupiconparams getgroupicons getitemcargo getmagazinecargo getmarkercolor getmarkerpos getmarkersize getmarkertype getmass getmissionconfig getmissionconfigvalue getmissionlayerentities getmodelinfo getnumber getobjectdlc getobjectmaterials getobjecttextures getobjecttype getoxygenremaining getpersonuseddlcs getpilotcameradirection getpilotcameraposition getpilotcamerarotation getpilotcameratarget getplatenumber getplayerchannel getplayerscores getplayeruid getpos getpos getposasl getposaslvisual getposaslw getposatl getposatlvisual getposvisual getposworld getpylonmagazines getrepaircargo getrotorbrakertd getshotparents getslingload getstamina getstatvalue getsuppression getterrainheightasl gettext gettrimoffsetrtd getunitloadout getunitloadout getunitloadout getusermfdtext getusermfdvalue getvehiclecargo getweaponcargo getweaponsway getwingsorientationrtd getwingspositionrtd getwppos goggles goto group groupfromnetid groupid groupowner groupselectedunits gunner handgunitems handgunmagazine handgunweapon handshit haspilotcamera hcallgroups hcleader hcremoveallgroups hcselected hcshowbar headgear hidebody hideobject hideobjectglobal hint hintc hintcadet hintsilent hmd hostmission if image importallgroups importance incapacitatedstate inflamed infopanel infopanels ingameuiseteventhandler inheritsfrom inputaction isabletobreathe isagent isaimprecisionenabled isarray isautohoveron isautonomous isautostartupenabledrtd isautotrimonrtd isbleeding isburning isclass iscollisionlighton iscopilotenabled isdamageallowed isdlcavailable isengineon isforcedwalk isformationleader isgroupdeletedwhenempty ishidden isinremainscollector iskeyactive islaseron islighton islocalized ismanualfire ismarkedforcollection isnil isnull isnull isnull isnull isnull isnull isnull isnull isnull isnumber isobjecthidden isobjectrtd isonroad isplayer isrealtime isshowing3dicons issimpleobject issprintallowed isstaminaenabled istext istouchingground isturnedout isuavconnected isvehiclecargo isvehicleradaron iswalking isweapondeployed isweaponrested itemcargo items itemswithmagazines keyimage keyname landresult lasertarget lbadd lbclear lbclear lbcolor lbcolorright lbcursel lbcursel lbdata lbdelete lbpicture lbpictureright lbselection lbsetcolor lbsetcolorright lbsetcursel lbsetdata lbsetpicture lbsetpicturecolor lbsetpicturecolordisabled lbsetpicturecolorselected lbsetpictureright lbsetselectcolor lbsetselectcolorright lbsettext lbsettooltip lbsetvalue lbsize lbsize lbsort lbsort lbsort lbsortbyvalue lbsortbyvalue lbtext lbtextright lbvalue leader leader leader leaderboarddeinit leaderboardgetrows leaderboardinit leaderboardrequestrowsfriends leaderboardrequestrowsglobal leaderboardrequestrowsglobalarounduser leaderboardsrequestuploadscore leaderboardsrequestuploadscorekeepbest leaderboardstate lifestate lightdetachobject lightison linearconversion lineintersects lineintersectsobjs lineintersectssurfaces lineintersectswith list listremotetargets listvehiclesensors ln lnbaddarray lnbaddcolumn lnbaddrow lnbclear lnbclear lnbcolor lnbcolorright lnbcurselrow lnbcurselrow lnbdata lnbdeletecolumn lnbdeleterow lnbgetcolumnsposition lnbgetcolumnsposition lnbpicture lnbpictureright lnbsetcolor lnbsetcolorright lnbsetcolumnspos lnbsetcurselrow lnbsetdata lnbsetpicture lnbsetpicturecolor lnbsetpicturecolorright lnbsetpicturecolorselected lnbsetpicturecolorselectedright lnbsetpictureright lnbsettext lnbsettextright lnbsetvalue lnbsize lnbsize lnbsort lnbsortbyvalue lnbtext lnbtextright lnbvalue load loadabs loadbackpack loadfile loaduniform loadvest local local localize locationposition locked lockeddriver lockidentity log lognetwork lognetworkterminate magazinecargo magazines magazinesallturrets magazinesammo magazinesammocargo magazinesammofull magazinesdetail magazinesdetailbackpack magazinesdetailuniform magazinesdetailvest mapanimadd mapcenteroncamera mapgridposition markeralpha markerbrush markercolor markerdir markerpos markershape markersize markertext markertype members menuaction menuadd menuchecked menuclear menuclear menucollapse menudata menudelete menuenable menuenabled menuexpand menuhover menuhover menupicture menusetaction menusetcheck menusetdata menusetpicture menusetvalue menushortcut menushortcuttext menusize menusort menutext menuurl menuvalue mineactive modparams moonphase morale move3dencamera moveout movetime movetocompleted movetofailed name name namesound nearestbuilding nearestbuilding nearestlocation nearestlocations nearestlocationwithdubbing nearestobject nearestobjects nearestterrainobjects needreload netid netid nextmenuitemindex not numberofenginesrtd numbertodate objectcurators objectfromnetid objectparent onbriefinggroup onbriefingnotes onbriefingplan onbriefingteamswitch oncommandmodechanged oneachframe ongroupiconclick ongroupiconoverenter ongroupiconoverleave onhcgroupselectionchanged onmapsingleclick onplayerconnected onplayerdisconnected onpreloadfinished onpreloadstarted onteamswitch opendlcpage openmap openmap opensteamapp openyoutubevideo owner param params parsenumber parsenumber parsesimplearray parsetext pickweaponpool pitch playableslotsnumber playersnumber playmission playmusic playmusic playscriptedmission playsound playsound playsound3d position position positioncameratoworld ppeffectcommitted ppeffectcommitted ppeffectcreate ppeffectdestroy ppeffectdestroy ppeffectenabled precision preloadcamera preloadsound preloadtitleobj preloadtitlersc preprocessfile preprocessfilelinenumbers primaryweapon primaryweaponitems primaryweaponmagazine priority private processdiarylink progressloadingscreen progressposition publicvariable publicvariableserver putweaponpool queryitemspool querymagazinepool queryweaponpool rad radiochannelcreate random random rank rankid rating rectangular registeredtasks reload reloadenabled remoteexec remoteexeccall remove3denconnection remove3deneventhandler remove3denlayer removeall3deneventhandlers removeallactions removeallassigneditems removeallcontainers removeallcuratoraddons removeallcuratorcameraareas removeallcuratoreditingareas removeallhandgunitems removeallitems removeallitemswithmagazines removeallmissioneventhandlers removeallmusiceventhandlers removeallownedmines removeallprimaryweaponitems removeallweapons removebackpack removebackpackglobal removefromremainscollector removegoggles removeheadgear removemissioneventhandler removemusiceventhandler removeswitchableunit removeuniform removevest requiredversion resetsubgroupdirection resources restarteditorcamera reverse roadat roadsconnectedto roledescription ropeattachedobjects ropeattachedto ropeattachenabled ropecreate ropecut ropedestroy ropeendposition ropelength ropes ropeunwind ropeunwound rotorsforcesrtd rotorsrpmrtd round save3deninventory saveoverlay savevar scopename score scoreside screenshot screentoworld scriptdone scriptname scudstate secondaryweapon secondaryweaponitems secondaryweaponmagazine selectbestplaces selectededitorobjects selectionnames selectmax selectmin selectplayer selectrandom selectrandomweighted sendaumessage sendudpmessage servercommand servercommandavailable servercommandexecutable set3denattributes set3dengrid set3deniconsvisible set3denlinesvisible set3denmissionattributes set3denmodelsvisible set3denselected setacctime setaperture setaperturenew setarmorypoints setcamshakedefparams setcamshakeparams setcompassoscillation setcurrentchannel setcustommissiondata setdate setdefaultcamera setdetailmapblendpars setgroupiconsselectable setgroupiconsvisible sethorizonparallaxcoef sethudmovementlevels setinfopanel setlocalwindparams setmouseposition setmusiceventhandler setobjectviewdistance setobjectviewdistance setplayable setplayerrespawntime setshadowdistance setsimulweatherlayers setstaminascheme setstatvalue setsystemofunits setterraingrid settimemultiplier settrafficdensity settrafficdistance settrafficgap settrafficspeed setviewdistance setwind setwinddir showchat showcinemaborder showcommandingmenu showcompass showcuratorcompass showgps showhud showhud showmap showpad showradio showscoretable showsubtitles showuavfeed showwarrant showwatch showwaypoints side side side simpletasks simulationenabled simulclouddensity simulcloudocclusion simulinclouds sin size sizeof skill skiptime sleep sliderposition sliderposition sliderrange sliderrange slidersetposition slidersetrange slidersetspeed sliderspeed sliderspeed soldiermagazines someammo speaker speed speedmode sqrt squadparams stance startloadingscreen stopenginertd stopped str supportinfo surfaceiswater surfacenormal surfacetype switch switchcamera synchronizedobjects synchronizedtriggers synchronizedwaypoints synchronizedwaypoints systemchat tan taskalwaysvisible taskchildren taskcompleted taskcustomdata taskdescription taskdestination taskhint taskmarkeroffset taskparent taskresult taskstate tasktype teammember teamname teamtype terminate terrainintersect terrainintersectasl terrainintersectatasl text text textlog textlogformat tg throw titlecut titlefadeout titleobj titlersc titletext toarray tofixed tolower tostring toupper triggeractivated triggeractivation triggerarea triggerattachedvehicle triggerstatements triggertext triggertimeout triggertimeoutcurrent triggertype try tvadd tvclear tvclear tvcollapse tvcollapseall tvcollapseall tvcount tvcursel tvcursel tvdata tvdelete tvexpand tvexpandall tvexpandall tvpicture tvpictureright tvsetcursel tvsetdata tvsetpicture tvsetpicturecolor tvsetpictureright tvsetpicturerightcolor tvsettext tvsettooltip tvsetvalue tvsort tvsortbyvalue tvtext tvtooltip tvvalue type type typename typeof uavcontrol uisleep unassigncurator unassignteam unassignvehicle underwater uniform uniformcontainer uniformitems uniformmagazines unitaddons unitaimposition unitaimpositionvisual unitbackpack unitisuav unitpos unitready unitrecoilcoefficient units units unlockachievement updateobjecttree useaiopermapobstructiontest useaisteeringcomponent vectordir vectordirvisual vectormagnitude vectormagnitudesqr vectornormalized vectorup vectorupvisual vehicle vehiclecargoenabled vehiclereceiveremotetargets vehiclereportownposition vehiclereportremotetargets vehiclevarname velocity velocitymodelspace verifysignature vest vestcontainer vestitems vestmagazines visibleposition visiblepositionasl waituntil waypointattachedobject waypointattachedvehicle waypointbehaviour waypointcombatmode waypointcompletionradius waypointdescription waypointforcebehaviour waypointformation waypointhouseposition waypointloiterradius waypointloitertype waypointname waypointposition waypoints waypointscript waypointsenableduav waypointshow waypointspeed waypointstatements waypointtimeout waypointtimeoutcurrent waypointtype waypointvisible weaponcargo weaponinertia weaponlowered weapons weaponsitems weaponsitemscargo weaponstate weaponstate weightrtd wfsidetext wfsidetext wfsidetext while wingsforcesrtd with worldtoscreen action actionparams add3denlayer addaction addbackpack addbackpackcargo addbackpackcargoglobal addbackpackglobal addcuratoraddons addcuratorcameraarea addcuratoreditableobjects addcuratoreditingarea addcuratorpoints addeditorobject addeventhandler addforce addgoggles addgroupicon addhandgunitem addheadgear additem additemcargo additemcargoglobal additemtobackpack additemtouniform additemtovest addlivestats addmagazine addmagazine addmagazineammocargo addmagazinecargo addmagazinecargoglobal addmagazineglobal addmagazines addmagazineturret addmenu addmenuitem addmpeventhandler addownedmine addplayerscores addprimaryweaponitem addpublicvariableeventhandler addpublicvariableeventhandler addrating addresources addscore addscoreside addsecondaryweaponitem addteammember addtorque adduniform addvehicle addvest addwaypoint addweapon addweaponcargo addweaponcargoglobal addweaponglobal addweaponitem addweaponturret aimedattarget allow3dmode allowcrewinimmobile allowcuratorlogicignoreareas allowdamage allowdammage allowfileoperations allowfleeing allowgetin allowsprint ammo ammoonpylon and and animate animatebay animatedoor animatepylon animatesource animationphase animationsourcephase append apply arrayintersect assignascargo assignascargoindex assignascommander assignasdriver assignasgunner assignasturret assigncurator assignitem assignteam assigntoairport atan2 attachobject attachto backpackspacefor breakout buildingexit buildingpos buttonsetaction call callextension callextension camcommand camcommit camcommitprepared camconstuctionsetparams camcreate cameraeffect campreload campreparebank campreparedir campreparedive campreparefocus campreparefov campreparefovrange campreparepos campreparerelpos campreparetarget campreparetarget camsetbank camsetdir camsetdive camsetfocus camsetfov camsetfovrange camsetpos camsetrelpos camsettarget camsettarget canadd canadditemtobackpack canadditemtouniform canadditemtovest canslingload canvehiclecargo catch cbsetchecked checkvisibility clear3denattribute closedisplay commandartilleryfire commandchat commandfire commandfollow commandfsm commandmove commandradio commandsuppressivefire commandtarget commandwatch commandwatch configclasses confirmsensortarget connectterminaltouav controlsgroupctrl copywaypoints count countenemy countfriendly countside counttype countunknown create3denentity creatediaryrecord creatediarysubject createdisplay createmenu createmissiondisplay createmissiondisplay creatempcampaigndisplay createsimpletask createsite createtask createunit createunit createvehicle createvehiclelocal ctdata ctfindheaderrows ctfindrowheader ctheadercontrols ctremoveheaders ctremoverows ctrladdeventhandler ctrlchecked ctrlcommit ctrlcreate ctrlenable ctrlmapanimadd ctrlmapcursor ctrlmapscreentoworld ctrlmapworldtoscreen ctrlremovealleventhandlers ctrlremoveeventhandler ctrlsetactivecolor ctrlsetangle ctrlsetautoscrolldelay ctrlsetautoscrollrewind ctrlsetautoscrollspeed ctrlsetbackgroundcolor ctrlsetchecked ctrlsetchecked ctrlsetdisabledcolor ctrlseteventhandler ctrlsetfade ctrlsetfont ctrlsetfonth1 ctrlsetfonth1b ctrlsetfonth2 ctrlsetfonth2b ctrlsetfonth3 ctrlsetfonth3b ctrlsetfonth4 ctrlsetfonth4b ctrlsetfonth5 ctrlsetfonth5b ctrlsetfonth6 ctrlsetfonth6b ctrlsetfontheight ctrlsetfontheighth1 ctrlsetfontheighth2 ctrlsetfontheighth3 ctrlsetfontheighth4 ctrlsetfontheighth5 ctrlsetfontheighth6 ctrlsetfontheightsecondary ctrlsetfontp ctrlsetfontp ctrlsetfontpb ctrlsetfontsecondary ctrlsetforegroundcolor ctrlsetmodel ctrlsetmodeldirandup ctrlsetmodelscale ctrlsetpixelprecision ctrlsetpixelprecision ctrlsetposition ctrlsetscale ctrlsetstructuredtext ctrlsettext ctrlsettextcolor ctrlsettextcolorsecondary ctrlsettextsecondary ctrlsettooltip ctrlsettooltipcolorbox ctrlsettooltipcolorshade ctrlsettooltipcolortext ctrlshow ctrowcontrols ctsetcursel ctsetdata ctsetheadertemplate ctsetrowtemplate ctsetvalue ctvalue curatorcoef currentmagazinedetailturret currentmagazineturret currentweaponturret customchat customradio cutfadeout cutfadeout cutobj cutobj cutrsc cutrsc cuttext cuttext debugfsm deleteat deleteeditorobject deletegroupwhenempty deleterange deleteresources deletevehiclecrew diarysubjectexists directsay disableai disablecollisionwith disableconversation disablenvgequipment disabletiequipment disableuavconnectability displayaddeventhandler displayctrl displayremovealleventhandlers displayremoveeventhandler displayseteventhandler distance distance distance distance distance2d distancesqr distancesqr distancesqr distancesqr do do do do doartilleryfire dofire dofollow dofsm domove doorphase dosuppressivefire dotarget dowatch dowatch drawarrow drawellipse drawicon drawline drawlink drawlocation drawpolygon drawrectangle drawtriangle editobject editorseteventhandler else emptypositions enableai enableaifeature enableaimprecision enableattack enableautostartuprtd enableautotrimrtd enablechannel enablechannel enablecollisionwith enablecopilot enabledynamicsimulation enabledynamicsimulation enablefatigue enablegunlights enableinfopanelcomponent enableirlasers enablemimics enablepersonturret enablereload enableropeattach enablesimulation enablesimulationglobal enablestamina enableuavconnectability enableuavwaypoints enablevehiclecargo enablevehiclesensor enableweapondisassembly engineon evalobjectargument exec execeditorscript execfsm execvm exitwith fademusic faderadio fadesound fadespeech find find findcover findeditorobject findeditorobject findemptyposition findemptypositionready findif findnearestenemy fire fire fireattarget flyinheight flyinheightasl forceadduniform forceflagtexture forcefollowroad forcespeed forcewalk forceweaponfire foreach foreachmember foreachmemberagent foreachmemberteam forgettarget from get3denattribute get3denattribute get3denattribute get3denattribute get3denattribute get3denmissionattribute getartilleryeta getcargoindex getcompatiblepylonmagazines getcompatiblepylonmagazines getdir geteditorobjectscope getenvsoundcontroller getfriend getfsmvariable getgroupicon gethidefrom gethit gethitindex gethitpointdamage getobjectargument getobjectchildren getobjectproxy getpos getreldir getrelpos getsoundcontroller getsoundcontrollerresult getspeed getunittrait getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable getvariable glanceat globalchat globalradio groupchat groupradio groupselectunit hasweapon hcgroupparams hcremovegroup hcselectgroup hcsetgroup hideobject hideobjectglobal hideselection hintc hintc hintc htmlload in in in inarea inarea inarea inarea inarea inareaarray inareaarray inareaarray inareaarray inflame infopanelcomponentenabled infopanelcomponents inpolygon inrangeofartillery inserteditorobject intersect isequalto isequaltype isequaltypeall isequaltypeany isequaltypearray isequaltypeparams isflashlighton isflatempty isirlaseron iskindof iskindof iskindof issensortargetconfirmed isuavconnectable isuniformallowed isvehiclesensorenabled join joinas joinassilent joinsilent joinstring kbadddatabase kbadddatabasetargets kbaddtopic kbhastopic kbreact kbremovetopic kbtell kbwassaid knowsabout knowsabout land landat lbadd lbcolor lbcolorright lbdata lbdelete lbisselected lbpicture lbpictureright lbsetcolor lbsetcolorright lbsetcursel lbsetdata lbsetpicture lbsetpicturecolor lbsetpicturecolordisabled lbsetpicturecolorselected lbsetpictureright lbsetpicturerightcolor lbsetpicturerightcolordisabled lbsetpicturerightcolorselected lbsetselectcolor lbsetselectcolorright lbsetselected lbsettext lbsettextright lbsettooltip lbsetvalue lbtext lbtextright lbvalue leavevehicle leavevehicle lightattachobject limitspeed linkitem listobjects lnbaddcolumn lnbaddrow lnbcolor lnbcolorright lnbdata lnbdeletecolumn lnbdeleterow lnbpicture lnbpictureright lnbsetcolor lnbsetcolorright lnbsetcolumnspos lnbsetcurselrow lnbsetdata lnbsetpicture lnbsetpicturecolor lnbsetpicturecolorright lnbsetpicturecolorselected lnbsetpicturecolorselectedright lnbsetpictureright lnbsettext lnbsettextright lnbsetvalue lnbsort lnbsortbyvalue lnbtext lnbtextright lnbvalue loadidentity loadmagazine loadoverlay loadstatus lock lock lockcamerato lockcargo lockcargo lockdriver lockedcargo lockedturret lockturret lockwp lookat lookatpos magazinesturret magazineturretammo mapcenteroncamera max menuaction menuadd menuchecked menucollapse menudata menudelete menuenable menuenabled menuexpand menupicture menusetaction menusetcheck menusetdata menusetpicture menusetvalue menushortcut menushortcuttext menusize menusort menutext menuurl menuvalue min minedetectedby mod modeltoworld modeltoworldvisual modeltoworldvisualworld modeltoworldworld move moveinany moveincargo moveincargo moveincommander moveindriver moveingunner moveinturret moveobjecttoend moveto nearentities nearestobject nearestobject nearobjects nearobjectsready nearroads nearsupplies neartargets newoverlay nmenuitems objstatus ondoubleclick onmapsingleclick onshownewobject or or ordergetin param params playaction playactionnow playgesture playmove playmovenow posscreentoworld posworldtoscreen ppeffectadjust ppeffectadjust ppeffectcommit ppeffectcommit ppeffectcommit ppeffectenable ppeffectenable ppeffectenable ppeffectforceinnvg preloadobject progresssetposition publicvariableclient pushback pushbackunique radiochanneladd radiochannelremove radiochannelsetcallsign radiochannelsetlabel random registertask remotecontrol remoteexec remoteexeccall removeaction removealleventhandlers removeallmpeventhandlers removecuratoraddons removecuratorcameraarea removecuratoreditableobjects removecuratoreditingarea removedrawicon removedrawlinks removeeventhandler removegroupicon removehandgunitem removeitem removeitemfrombackpack removeitemfromuniform removeitemfromvest removeitems removemagazine removemagazineglobal removemagazines removemagazinesturret removemagazineturret removemenuitem removemenuitem removempeventhandler removeownedmine removeprimaryweaponitem removesecondaryweaponitem removesimpletask removeteammember removeweapon removeweaponattachmentcargo removeweaponcargo removeweaponglobal removeweaponturret reportremotetarget resize respawnvehicle reveal reveal revealmine ropeattachto ropedetach saveidentity savestatus say say say2d say2d say3d say3d select select select select select select selectdiarysubject selecteditorobject selectionposition selectleader selectrandomweighted selectweapon selectweaponturret sendsimplecommand sendtask sendtaskresult servercommand set set3denattribute set3denlayer set3denlogictype set3denmissionattribute set3denobjecttype setactualcollectivertd setairplanethrottle setairportside setammo setammocargo setammoonpylon setanimspeedcoef setattributes setautonomous setbehaviour setbleedingremaining setbrakesrtd setcamerainterest setcamuseti setcaptive setcenterofmass setcollisionlight setcombatmode setcombatmode setconvoyseparation setcuratorcameraareaceiling setcuratorcoef setcuratoreditingareatype setcuratorwaypointcost setcurrenttask setcurrentwaypoint setcustomaimcoef setcustomweightrtd setdamage setdammage setdebriefingtext setdestination setdir setdirection setdrawicon setdriveonpath setdropinterval setdynamicsimulationdistance setdynamicsimulationdistancecoef seteditormode seteditorobjectscope seteffectcondition setenginerpmrtd setface setfaceanimation setfatigue setfeaturetype setflaganimationphase setflagowner setflagside setflagtexture setfog setforcegeneratorrtd setformation setformation setformationtask setformdir setfriend setfromeditor setfsmvariable setfuel setfuelcargo setgroupicon setgroupiconparams setgroupid setgroupidglobal setgroupowner setgusts sethidebehind sethit sethitindex sethitpointdamage setidentity setimportance setleader setlightambient setlightattenuation setlightbrightness setlightcolor setlightdaylight setlightflaremaxdistance setlightflaresize setlightintensity setlightnings setlightuseflare setmagazineturretammo setmarkeralpha setmarkeralphalocal setmarkerbrush setmarkerbrushlocal setmarkercolor setmarkercolorlocal setmarkerdir setmarkerdirlocal setmarkerpos setmarkerposlocal setmarkershape setmarkershapelocal setmarkersize setmarkersizelocal setmarkertext setmarkertextlocal setmarkertype setmarkertypelocal setmass setmimic setmusiceffect setname setname setname setnamesound setobjectarguments setobjectmaterial setobjectmaterialglobal setobjectproxy setobjecttexture setobjecttextureglobal setovercast setowner setoxygenremaining setparticlecircle setparticleclass setparticlefire setparticleparams setparticlerandom setpilotcameradirection setpilotcamerarotation setpilotcameratarget setpilotlight setpipeffect setpitch setplatenumber setpos setposasl setposasl2 setposaslw setposatl setposition setposworld setpylonloadout setpylonspriority setradiomsg setrain setrainbow setrandomlip setrank setrectangular setrepaircargo setrotorbrakertd setshotparents setside setsimpletaskalwaysvisible setsimpletaskcustomdata setsimpletaskdescription setsimpletaskdestination setsimpletasktarget setsimpletasktype setsize setskill setskill setslingload setsoundeffect setspeaker setspeech setspeedmode setstamina setsuppression settargetage settaskmarkeroffset settaskresult settaskstate settext settitleeffect settriggeractivation settriggerarea settriggerstatements settriggertext settriggertimeout settriggertype settype setunconscious setunitability setunitloadout setunitloadout setunitloadout setunitpos setunitposweak setunitrank setunitrecoilcoefficient setunittrait setunloadincombat setuseractiontext setusermfdtext setusermfdvalue setvariable setvariable setvariable setvariable setvariable setvariable setvariable setvariable setvectordir setvectordirandup setvectorup setvehicleammo setvehicleammodef setvehiclearmor setvehiclecargo setvehicleid setvehiclelock setvehicleposition setvehicleradar setvehiclereceiveremotetargets setvehiclereportownposition setvehiclereportremotetargets setvehicletipars setvehiclevarname setvelocity setvelocitymodelspace setvelocitytransformation setvisibleiftreecollapsed setwantedrpmrtd setwaves setwaypointbehaviour setwaypointcombatmode setwaypointcompletionradius setwaypointdescription setwaypointforcebehaviour setwaypointformation setwaypointhouseposition setwaypointloiterradius setwaypointloitertype setwaypointname setwaypointposition setwaypointscript setwaypointspeed setwaypointstatements setwaypointtimeout setwaypointtype setwaypointvisible setweaponreloadingtime setwinddir setwindforce setwindstr setwingforcescalertd setwppos show3dicons showlegend showneweditorobject showwaypoint sidechat sideradio skill skillfinal slidersetposition slidersetrange slidersetspeed sort spawn splitstring step stop suppressfor swimindepth switchaction switchcamera switchgesture switchlight switchmove synchronizeobjectsadd synchronizeobjectsremove synchronizetrigger synchronizewaypoint synchronizewaypoint targetknowledge targets targetsaggregate targetsquery then then throw to tofixed triggerattachobject triggerattachvehicle triggerdynamicsimulation try turretlocal turretowner turretunit tvadd tvcollapse tvcount tvdata tvdelete tvexpand tvpicture tvpictureright tvsetcolor tvsetcursel tvsetdata tvsetpicture tvsetpicturecolor tvsetpicturecolordisabled tvsetpicturecolorselected tvsetpictureright tvsetpicturerightcolor tvsetpicturerightcolordisabled tvsetpicturerightcolorselected tvsetselectcolor tvsettext tvsettooltip tvsetvalue tvsort tvsortbyvalue tvtext tvtooltip tvvalue unassignitem unitsbelowheight unitsbelowheight unlinkitem unregistertask updatedrawicon updatemenuitem useaudiotimeformoves vectoradd vectorcos vectorcrossproduct vectordiff vectordistance vectordistancesqr vectordotproduct vectorfromto vectormodeltoworld vectormodeltoworldvisual vectormultiply vectorworldtomodel vectorworldtomodelvisual vehiclechat vehicleradio waypointattachobject waypointattachvehicle weaponaccessories weaponaccessoriescargo weapondirection weaponsturret worldtomodel worldtomodelvisual acctime activatedaddons agents airdensitycurvertd all3denentities allairports allcurators allcutlayers alldead alldeadmen alldisplays allgroups allmapmarkers allmines allplayers allsites allunits allunitsuav armorypoints benchmark blufor briefingname buldozer_isenabledroaddiag buldozer_reloadopermap cadetmode cameraon cameraview campaignconfigfile cansuspend cheatsenabled civilian clearforcesrtd clearitempool clearmagazinepool clearradio clearweaponpool clientowner commandingmenu configfile confignull controlnull copyfromclipboard curatorcamera curatormouseover curatorselected current3denoperation currentchannel currentnamespace cursorobject cursortarget date daytime diag_activemissionfsms diag_activescripts diag_activesqfscripts diag_activesqsscripts diag_fps diag_fpsmin diag_frameno diag_ticktime dialog didjip difficulty difficultyenabledrtd disabledebriefingstats disableserialization displaynull distributionregion dynamicsimulationsystemenabled east enableenddialog endl endloadingscreen environmentenabled estimatedendservertime exit false finishmissioninit fog fogforecast fogparams forcedmap forceend forceweatherchange freelook get3dencamera get3deniconsvisible get3denlinesvisible get3denmouseover getartillerycomputersettings getclientstate getclientstatenumber getcursorobjectparams getdlcassetsusage getelevationoffset getmissiondlcs getmissionlayers getmouseposition getmusicplayedtime getobjectviewdistance getremotesensorsdisabled getresolution getshadowdistance getterraingrid gettotaldlcusagetime groupiconselectable groupiconsvisible grpnull gusts halt hasinterface hcshownbar hudmovementlevels humidity independent initambientlife is3den is3denmultiplayer isautotest isdedicated isfilepatchingenabled isinstructorfigureenabled ismultiplayer ismultiplayersolo ispipenabled isremoteexecuted isremoteexecutedjip isserver issteammission isstreamfriendlyuienabled isstressdamageenabled istuthintsenabled isuicontext language librarycredits librarydisclaimers lightnings linebreak loadgame locationnull logentities mapanimclear mapanimcommit mapanimdone markasfinishedonsteam missionconfigfile missiondifficulty missionname missionnamespace missionstart missionversion moonintensity musicvolume netobjnull nextweatherchange nil objnull opencuratorinterface opfor overcast overcastforecast parsingnamespace particlesquality pi pixelgrid pixelgridbase pixelgridnouiscale pixelh pixelw playableunits player playerrespawntime playerside productversion profilename profilenamespace profilenamesteam radiovolume rain rainbow remoteexecutedowner resetcamshake resistance reversedmousey runinitscript safezoneh safezonew safezonewabs safezonex safezonexabs safezoney savegame savejoysticks saveprofilenamespace savingenabled scriptnull selectnoplayer servername servertime shownartillerycomputer shownchat showncompass showncuratorcompass showngps shownhud shownmap shownpad shownradio shownscoretable shownuavfeed shownwarrant shownwatch sideambientlife sideempty sideenemy sidefriendly sidelogic sideunknown simulweathersync slingloadassistantshown soundvolume sunormoon switchableunits systemofunits tasknull teammembernull teams teamswitch teamswitchenabled time timemultiplier true uinamespace userinputdisabled vehicles viewdistance visiblecompass visiblegps visiblemap visiblescoretable visiblewatch waves west wind winddir windrtd windstr worldname worldsize + ) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sql.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sql.rb new file mode 100644 index 0000000000..60c15f4b97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/sql.rb @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class SQL < RegexLexer + title "SQL" + desc "Structured Query Language, for relational databases" + tag 'sql' + filenames '*.sql' + mimetypes 'text/x-sql' + + def self.keywords + @keywords ||= Set.new %w( + ABORT ABS ABSOLUTE ACCESS ADA ADD ADMIN AFTER AGGREGATE ALIAS + ALL ALLOCATE ALTER ANALYSE ANALYZE AND ANY ARE AS ASC ASENSITIVE + ASSERTION ASSIGNMENT ASYMMETRIC AT ATOMIC AUTHORIZATION + AVG BACKWARD BEFORE BEGIN BETWEEN BITVAR BIT_LENGTH BOTH + BREADTH BY C CACHE CALL CALLED CARDINALITY CASCADE CASCADED + CASE CAST CATALOG CATALOG_NAME CHAIN CHARACTERISTICS + CHARACTER_LENGTH CHARACTER_SET_CATALOG CHARACTER_SET_NAME + CHARACTER_SET_SCHEMA CHAR_LENGTH CHECK CHECKED CHECKPOINT + CLASS CLASS_ORIGIN CLOB CLOSE CLUSTER COALSECE COBOL COLLATE + COLLATION COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA + COLUMN COLUMN_NAME COMMAND_FUNCTION COMMAND_FUNCTION_CODE + COMMENT COMMIT COMMITTED COMPLETION CONDITION_NUMBER + CONNECT CONNECTION CONNECTION_NAME CONSTRAINT CONSTRAINTS + CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA + CONSTRUCTOR CONTAINS CONTINUE CONVERSION CONVERT COPY + CORRESPONTING COUNT CREATE CREATEDB CREATEUSER CROSS CUBE + CURRENT CURRENT_DATE CURRENT_PATH CURRENT_ROLE CURRENT_TIME + CURRENT_TIMESTAMP CURRENT_USER CURSOR CURSOR_NAME CYCLE DATA + DATABASE DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION + DAY DEALLOCATE DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED + DEFINED DEFINER DELETE DELIMITER DELIMITERS DEREF DESC DESCRIBE + DESCRIPTOR DESTROY DESTRUCTOR DETERMINISTIC DIAGNOSTICS + DICTIONARY DISCONNECT DISPATCH DISTINCT DO DOMAIN DROP + DYNAMIC DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE EACH ELSE + ENCODING ENCRYPTED END END-EXEC EQUALS ESCAPE EVERY EXCEPT + ESCEPTION EXCLUDING EXCLUSIVE EXEC EXECUTE EXISTING EXISTS + EXPLAIN EXTERNAL EXTRACT FALSE FETCH FINAL FIRST FOR FORCE + FOREIGN FORTRAN FORWARD FOUND FREE FREEZE FROM FULL FUNCTION + G GENERAL GENERATED GET GLOBAL GO GOTO GRANT GRANTED GROUP + GROUPING HANDLER HAVING HIERARCHY HOLD HOST IDENTITY IGNORE + ILIKE IMMEDIATE IMMUTABLE IMPLEMENTATION IMPLICIT IN INCLUDING + INCREMENT INDEX INDITCATOR INFIX INHERITS INITIALIZE INITIALLY + INNER INOUT INPUT INSENSITIVE INSERT INSTANTIABLE INSTEAD + INTERSECT INTO INVOKER IS ISNULL ISOLATION ITERATE JOIN KEY + KEY_MEMBER KEY_TYPE LANCOMPILER LANGUAGE LARGE LAST LATERAL + LEADING LEFT LENGTH LESS LEVEL LIKE LIMIT LISTEN LOAD LOCAL + LOCALTIME LOCALTIMESTAMP LOCATION LOCATOR LOCK LOWER MAP MATCH + MAX MAXVALUE MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MESSAGE_TEXT + METHOD MIN MINUTE MINVALUE MOD MODE MODIFIES MODIFY MONTH + MORE MOVE MUMPS NAMES NATIONAL NATURAL NCHAR NCLOB NEW NEXT + NO NOCREATEDB NOCREATEUSER NONE NOT NOTHING NOTIFY NOTNULL + NULL NULLABLE NULLIF OBJECT OCTET_LENGTH OF OFF OFFSET OIDS + OLD ON ONLY OPEN OPERATION OPERATOR OPTION OPTIONS OR ORDER + ORDINALITY OUT OUTER OUTPUT OVERLAPS OVERLAY OVERRIDING + OWNER PAD PARAMETER PARAMETERS PARAMETER_MODE PARAMATER_NAME + PARAMATER_ORDINAL_POSITION PARAMETER_SPECIFIC_CATALOG + PARAMETER_SPECIFIC_NAME PARAMATER_SPECIFIC_SCHEMA PARTIAL PASCAL + PENDANT PLACING PLI POSITION POSTFIX PRECISION PREFIX PREORDER + PREPARE PRESERVE PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE + PUBLIC READ READS RECHECK RECURSIVE REF REFERENCES REFERENCING + REINDEX RELATIVE RENAME REPEATABLE REPLACE RESET RESTART + RESTRICT RESULT RETURN RETURNED_LENGTH RETURNED_OCTET_LENGTH + RETURNED_SQLSTATE RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP + ROUTINE ROUTINE_CATALOG ROUTINE_NAME ROUTINE_SCHEMA ROW ROWS + ROW_COUNT RULE SAVE_POINT SCALE SCHEMA SCHEMA_NAME SCOPE SCROLL + SEARCH SECOND SECURITY SELECT SELF SENSITIVE SERIALIZABLE + SERVER_NAME SESSION SESSION_USER SET SETOF SETS SHARE SHOW + SIMILAR SIMPLE SIZE SOME SOURCE SPACE SPECIFIC SPECIFICTYPE + SPECIFIC_NAME SQL SQLCODE SQLERROR SQLEXCEPTION SQLSTATE + SQLWARNINIG STABLE START STATE STATEMENT STATIC STATISTICS + STDIN STDOUT STORAGE STRICT STRUCTURE STYPE SUBCLASS_ORIGIN + SUBLIST SUBSTRING SUM SYMMETRIC SYSID SYSTEM SYSTEM_USER + TABLE TABLE_NAME TEMP TEMPLATE TEMPORARY TERMINATE THAN THEN + TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TO TOAST TRAILING + TRANSATION TRANSACTIONS_COMMITTED TRANSACTIONS_ROLLED_BACK + TRANSATION_ACTIVE TRANSFORM TRANSFORMS TRANSLATE TRANSLATION + TREAT TRIGGER TRIGGER_CATALOG TRIGGER_NAME TRIGGER_SCHEMA TRIM + TRUE TRUNCATE TRUSTED TYPE UNCOMMITTED UNDER UNENCRYPTED UNION + UNIQUE UNKNOWN UNLISTEN UNNAMED UNNEST UNTIL UPDATE UPPER + USAGE USER USER_DEFINED_TYPE_CATALOG USER_DEFINED_TYPE_NAME + USER_DEFINED_TYPE_SCHEMA USING VACUUM VALID VALIDATOR VALUES + VARIABLE VERBOSE VERSION VIEW VOLATILE WHEN WHENEVER WHERE + WITH WITHOUT WORK WRITE YEAR ZONE + ) + end + + state :root do + rule /\s+/m, Text + rule /--.*/, Comment::Single + rule %r(/\*), Comment::Multiline, :multiline_comments + rule /\d+/, Num::Integer + rule /'/, Str::Single, :single_string + rule /"/, Name::Variable, :double_string + rule /`/, Name::Variable, :backtick + + rule /\w[\w\d]*/ do |m| + if self.class.keywords.include? m[0].upcase + token Keyword + else + token Name + end + end + + rule %r([+*/<>=~!@#%^&|?^-]), Operator + rule /[;:()\[\],.]/, Punctuation + end + + state :multiline_comments do + rule %r(/[*]), Comment::Multiline, :multiline_comments + rule %r([*]/), Comment::Multiline, :pop! + rule %r([^/*]+), Comment::Multiline + rule %r([/*]), Comment::Multiline + end + + state :backtick do + rule /\\./, Str::Escape + rule /``/, Str::Escape + rule /`/, Name::Variable, :pop! + rule /[^\\`]+/, Name::Variable + end + + state :single_string do + rule /\\./, Str::Escape + rule /''/, Str::Escape + rule /'/, Str::Single, :pop! + rule /[^\\']+/, Str::Single + end + + state :double_string do + rule /\\./, Str::Escape + rule /""/, Str::Escape + rule /"/, Name::Variable, :pop! + rule /[^\\"]+/, Name::Variable + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/swift.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/swift.rb new file mode 100644 index 0000000000..99893958d3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/swift.rb @@ -0,0 +1,182 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Swift < RegexLexer + tag 'swift' + filenames '*.swift' + + title "Swift" + desc 'Multi paradigm, compiled programming language developed by Apple for iOS and OS X development. (developer.apple.com/swift)' + + id_head = /_|(?!\p{Mc})\p{Alpha}|[^\u0000-\uFFFF]/ + id_rest = /[\p{Alnum}_]|[^\u0000-\uFFFF]/ + id = /#{id_head}#{id_rest}*/ + + keywords = Set.new %w( + break case continue default do else fallthrough if in for return switch where while try catch throw guard defer repeat + + as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__ + + associativity didSet get infix inout mutating none nonmutating operator override postfix precedence prefix set unowned weak willSet throws rethrows precedencegroup + ) + + declarations = Set.new %w( + class deinit enum convenience extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate + ) + + constants = Set.new %w( + true false nil + ) + + start { push :bol } + + # beginning of line + state :bol do + rule /#.*/, Comment::Preproc + + mixin :inline_whitespace + + rule(//) { pop! } + end + + state :inline_whitespace do + rule /\s+/m, Text + mixin :has_comments + end + + state :whitespace do + rule /\n+/m, Text, :bol + rule %r(\/\/.*?$), Comment::Single, :bol + mixin :inline_whitespace + end + + state :has_comments do + rule %r(/[*]), Comment::Multiline, :nested_comment + end + + state :nested_comment do + mixin :has_comments + rule %r([*]/), Comment::Multiline, :pop! + rule %r([^*/]+)m, Comment::Multiline + rule /./, Comment::Multiline + end + + state :root do + mixin :whitespace + rule /\$(([1-9]\d*)?\d)/, Name::Variable + + rule %r{[()\[\]{}:;,?\\]}, Punctuation + rule %r([-/=+*%<>!&|^.~]+), Operator + rule /@?"/, Str, :dq + rule /'(\\.|.)'/, Str::Char + rule /(\d+\*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float + rule /\d+e[+-]?[0-9]+/i, Num::Float + rule /0_?[0-7]+(?:_[0-7]+)*/, Num::Oct + rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex + rule /0b[01]+(?:_[01]+)*/, Num::Bin + rule %r{[\d]+(?:_\d+)*}, Num::Integer + + rule /@#{id}(\([^)]+\))?/, Keyword::Declaration + + rule /(private|internal)(\([ ]*)(\w+)([ ]*\))/ do |m| + if m[3] == 'set' + token Keyword::Declaration + else + groups Keyword::Declaration, Keyword::Declaration, Error, Keyword::Declaration + end + end + + rule /(unowned\([ ]*)(\w+)([ ]*\))/ do |m| + if m[2] == 'safe' || m[2] == 'unsafe' + token Keyword::Declaration + else + groups Keyword::Declaration, Error, Keyword::Declaration + end + end + + rule /#available\([^)]+\)/, Keyword::Declaration + + rule /(#(?:selector|keyPath)\()([^)]+?(?:[(].*?[)])?)(\))/ do + groups Keyword::Declaration, Name::Function, Keyword::Declaration + end + + rule /#(line|file|column|function|dsohandle)/, Keyword::Declaration + + rule /(let|var)\b(\s*)(#{id})/ do + groups Keyword, Text, Name::Variable + end + + rule /(let|var)\b(\s*)([(])/ do + groups Keyword, Text, Punctuation + push :tuple + end + + rule /(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[(])/ do |m| + if m[0] =~ /^[[:upper:]]/ + token Keyword::Type + else + token Name::Function + end + end + + rule /as[?!]?(?=\s)/, Keyword + rule /try[!]?(?=\s)/, Keyword + + rule /(#?(?!default)(?![[:upper:]])#{id})(\s*)(:)/ do + groups Name::Variable, Text, Punctuation + end + + rule id do |m| + if keywords.include? m[0] + token Keyword + elsif declarations.include? m[0] + token Keyword::Declaration + elsif constants.include? m[0] + token Keyword::Constant + elsif m[0] =~ /^[[:upper:]]/ + token Keyword::Type + else + token Name + end + end + + rule /(`)(#{id})(`)/ do + groups Punctuation, Name::Variable, Punctuation + end + end + + state :tuple do + rule /(#{id})/, Name::Variable + rule /(`)(#{id})(`)/ do + groups Punctuation, Name::Variable, Punctuation + end + rule /,/, Punctuation + rule /[(]/, Punctuation, :push + rule /[)]/, Punctuation, :pop! + mixin :inline_whitespace + end + + state :dq do + rule /\\[\\0tnr'"]/, Str::Escape + rule /\\[(]/, Str::Escape, :interp + rule /\\u\{\h{1,8}\}/, Str::Escape + rule /[^\\"]+/, Str + rule /"/, Str, :pop! + end + + state :interp do + rule /[(]/, Punctuation, :interp_inner + rule /[)]/, Str::Escape, :pop! + mixin :root + end + + state :interp_inner do + rule /[(]/, Punctuation, :push + rule /[)]/, Punctuation, :pop! + mixin :root + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tap.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tap.rb new file mode 100644 index 0000000000..824c4fe73c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tap.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + class Tap < RegexLexer + title 'TAP' + desc 'Test Anything Protocol' + tag 'tap' + aliases 'tap' + filenames '*.tap' + + mimetypes 'text/x-tap', 'application/x-tap' + + state :root do + # A TAP version may be specified. + rule /^TAP version \d+\n/, Name::Namespace + + # Specify a plan with a plan line. + rule /^1\.\.\d+/, Keyword::Declaration, :plan + + # A test failure + rule /^(not ok)([^\S\n]*)(\d*)/ do + groups Generic::Error, Text, Literal::Number::Integer + push :test + end + + # A test success + rule /^(ok)([^\S\n]*)(\d*)/ do + groups Keyword::Reserved, Text, Literal::Number::Integer + push :test + end + + # Diagnostics start with a hash. + rule /^#.*\n/, Comment + + # TAP's version of an abort statement. + rule /^Bail out!.*\n/, Generic::Error + + # # TAP ignores any unrecognized lines. + rule /^.*\n/, Text + end + + state :plan do + # Consume whitespace (but not newline). + rule /[^\S\n]+/, Text + + # A plan may have a directive with it. + rule /#/, Comment, :directive + + # Or it could just end. + rule /\n/, Comment, :pop! + + # Anything else is wrong. + rule /.*\n/, Generic::Error, :pop! + end + + state :test do + # Consume whitespace (but not newline). + rule /[^\S\n]+/, Text + + # A test may have a directive with it. + rule /#/, Comment, :directive + + rule /\S+/, Text + + rule /\n/, Text, :pop! + end + + state :directive do + # Consume whitespace (but not newline). + rule /[^\S\n]+/, Comment + + # Extract todo items. + rule /(?i)\bTODO\b/, Comment::Preproc + + # Extract skip items. + rule /(?i)\bSKIP\S*/, Comment::Preproc + + rule /\S+/, Comment + + rule /\n/ do + token Comment + pop! 2 + end + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tcl.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tcl.rb new file mode 100644 index 0000000000..60f84f853d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tcl.rb @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class TCL < RegexLexer + title "Tcl" + desc "The Tool Command Language (tcl.tk)" + tag 'tcl' + filenames '*.tcl' + mimetypes 'text/x-tcl', 'text/x-script.tcl', 'application/x-tcl' + + def self.detect?(text) + return true if text.shebang? 'tclsh' + return true if text.shebang? 'wish' + return true if text.shebang? 'jimsh' + end + + KEYWORDS = %w( + after apply array break catch continue elseif else error + eval expr for foreach global if namespace proc rename return + set switch then trace unset update uplevel upvar variable + vwait while + ) + + BUILTINS = %w( + append bgerror binary cd chan clock close concat dde dict + encoding eof exec exit fblocked fconfigure fcopy file + fileevent flush format gets glob history http incr info interp + join lappend lassign lindex linsert list llength load loadTk + lrange lrepeat lreplace lreverse lsearch lset lsort mathfunc + mathop memory msgcat open package pid pkg::create pkg_mkIndex + platform platform::shell puts pwd re_syntax read refchan + regexp registry regsub scan seek socket source split string + subst tell time tm unknown unload + ) + + OPEN = %w| \( \[ \{ " | + CLOSE = %w| \) \] \} | + ALL = OPEN + CLOSE + END_LINE = CLOSE + %w(; \n) + END_WORD = END_LINE + %w(\s) + + CHARS = lambda { |list| Regexp.new %/[#{list.join}]/ } + NOT_CHARS = lambda { |list| Regexp.new %/[^#{list.join}]/ } + + state :word do + rule /\{\*\}/, Keyword + + mixin :brace_abort + mixin :interp + rule /\{/, Punctuation, :brace + rule /\(/, Punctuation, :paren + rule /"/, Str::Double, :string + rule /#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text + end + + def self.gen_command_state(name='') + state(:"command#{name}") do + mixin :word + + rule /##{NOT_CHARS[END_LINE]}+/, Comment::Single + + rule /(?=#{CHARS[END_WORD]})/ do + push :"params#{name}" + end + + rule /#{NOT_CHARS[END_WORD]}+/ do |m| + if KEYWORDS.include? m[0] + token Keyword + elsif BUILTINS.include? m[0] + token Name::Builtin + else + token Text + end + end + + mixin :whitespace + end + end + + def self.gen_delimiter_states(name, close, opts={}) + gen_command_state("_in_#{name}") + + state :"params_in_#{name}" do + rule close do + token Punctuation + pop! 2 + end + + # mismatched delimiters. Braced strings with mismatched + # closing delimiters should be okay, since this is standard + # practice, like {]]]]} + if opts[:strict] + rule CHARS[CLOSE - [close]], Error + else + rule CHARS[CLOSE - [close]], Text + end + + mixin :params + end + + state name do + rule close, Punctuation, :pop! + mixin :"command_in_#{name}" + end + end + + + # tcl is freaking impossible. If we're in braces and we encounter + # a close brace, we have to drop everything and close the brace. + # This is so silly things like {abc"def} and {abc]def} don't b0rk + # everything after them. + + # TODO: TCL seems to have this aborting behavior quite a lot. + # such things as [ abc" ] are a runtime error, but will still + # parse. Currently something like this will muck up the lex. + state :brace_abort do + rule /}/ do + if in_state? :brace + pop! until state? :brace + pop! + token Punctuation + else + token Error + end + end + end + + state :params do + rule /;/, Punctuation, :pop! + rule /\n/, Text, :pop! + rule /else|elseif|then/, Keyword + mixin :word + mixin :whitespace + rule /#{NOT_CHARS[END_WORD]}+/, Text + end + + gen_delimiter_states :brace, /\}/, :strict => false + gen_delimiter_states :paren, /\)/, :strict => true + gen_delimiter_states :bracket, /\]/, :strict => true + gen_command_state + + state :root do + mixin :command + end + + state :whitespace do + # not a multiline regex because we want to capture \n sometimes + rule /\s+/, Text + end + + state :interp do + rule /\[/, Punctuation, :bracket + rule /\$[a-z0-9.:-]+/, Name::Variable + rule /\$\{.*?\}/m, Name::Variable + rule /\$/, Text + + # escape sequences + rule /\\[0-7]{3}/, Str::Escape + rule /\\x[0-9a-f]{2}/i, Str::Escape + rule /\\u[0-9a-f]{4}/i, Str::Escape + rule /\\./m, Str::Escape + end + + state :string do + rule /"/, Str::Double, :pop! + mixin :interp + rule /[^\\\[\$"{}]+/m, Str::Double + + # strings have to keep count of their internal braces, to support + # for example { "{ }" }. + rule /{/ do + @brace_count ||= 0 + @brace_count += 1 + + token Str::Double + end + + rule /}/ do + if in_state? :brace and @brace_count.to_i == 0 + pop! until state? :brace + pop! + token Punctuation + else + @brace_count -= 1 + token Str::Double + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/terraform.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/terraform.rb new file mode 100644 index 0000000000..a6aa437a97 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/terraform.rb @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'hcl.rb' + + class Terraform < Hcl + title "Terraform" + desc "Terraform HCL Interpolations" + + tag 'terraform' + aliases 'tf' + filenames '*.tf' + + def self.keywords + @keywords ||= Set.new %w( + terraform module provider variable resource data provisioner output + ) + end + + def self.declarations + @declarations ||= Set.new %w( + var local + ) + end + + def self.reserved + @reserved ||= Set.new %w() + end + + def self.constants + @constants ||= Set.new %w(true false null) + end + + def self.builtins + @builtins ||= %w() + end + + state :strings do + rule /\\./, Str::Escape + rule /\$\{/ do + token Keyword + push :interpolation + end + end + + state :dq do + rule /[^\\"\$]+/, Str::Double + mixin :strings + rule /"/, Str::Double, :pop! + end + + state :sq do + rule /[^\\'\$]+/, Str::Single + mixin :strings + rule /'/, Str::Single, :pop! + end + + state :heredoc do + rule /\n/, Str::Heredoc, :heredoc_nl + rule /[^$\n\$]+/, Str::Heredoc + rule /[$]/, Str::Heredoc + mixin :strings + end + + state :interpolation do + rule /\}/ do + token Keyword + pop! + end + + mixin :expression + end + + id = /[$a-z_\-][a-z0-9_\-]*/io + + state :expression do + mixin :primitives + rule /\s+/, Text + + rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | == | != )x, Operator + rule %r([-<>+*%&|\^/!=?:]=?), Operator + rule /[(\[,]/, Punctuation + rule /[)\].]/, Punctuation + + rule id do |m| + if self.class.keywords.include? m[0] + token Keyword + elsif self.class.declarations.include? m[0] + token Keyword::Declaration + elsif self.class.reserved.include? m[0] + token Keyword::Reserved + elsif self.class.constants.include? m[0] + token Keyword::Constant + elsif self.class.builtins.include? m[0] + token Name::Builtin + else + token Name::Other + end + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tex.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tex.rb new file mode 100644 index 0000000000..fa8f0a5a73 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/tex.rb @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class TeX < RegexLexer + title "TeX" + desc "The TeX typesetting system" + tag 'tex' + aliases 'TeX', 'LaTeX', 'latex' + + filenames '*.tex', '*.aux', '*.toc', '*.sty', '*.cls' + mimetypes 'text/x-tex', 'text/x-latex' + + def self.detect?(text) + return true if text =~ /\A\s*\\(documentclass|input|documentstyle|relax|ProvidesPackage|ProvidesClass)/ + end + + command = /\\([a-z]+|\s+|.)/i + + state :general do + rule /%.*$/, Comment + rule /[{}&_^]/, Punctuation + end + + state :root do + rule /\\\[/, Punctuation, :displaymath + rule /\\\(/, Punctuation, :inlinemath + rule /\$\$/, Punctuation, :displaymath + rule /\$/, Punctuation, :inlinemath + rule /\\(begin|end)\{.*?\}/, Name::Tag + + rule /(\\verb)\b(\S)(.*?)(\2)/ do |m| + groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo + end + + rule command, Keyword, :command + mixin :general + rule /[^\\$%&_^{}]+/, Text + end + + state :math do + rule command, Name::Variable + mixin :general + rule /[0-9]+/, Num + rule /[-=!+*\/()\[\]]/, Operator + rule /[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin + end + + state :inlinemath do + rule /\\\)/, Punctuation, :pop! + rule /\$/, Punctuation, :pop! + mixin :math + end + + state :displaymath do + rule /\\\]/, Punctuation, :pop! + rule /\$\$/, Punctuation, :pop! + rule /\$/, Name::Builtin + mixin :math + end + + state :command do + rule /\[.*?\]/, Name::Attribute + rule /\*/, Keyword + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/toml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/toml.rb new file mode 100644 index 0000000000..40ecd7a6a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/toml.rb @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class TOML < RegexLexer + title "TOML" + desc 'the TOML configuration format (https://github.com/mojombo/toml)' + tag 'toml' + + filenames '*.toml' + mimetypes 'text/x-toml' + + identifier = /[\w.\S]+/ + + state :basic do + rule /\s+/, Text + rule /#.*?$/, Comment + rule /(true|false)/, Keyword::Constant + rule /(?,!\[\]:{}()=;\/-]/, Punctuation + + rule /[0-9]+([.][0-9]+)?/, Num + + rule /#{id}/, Name + + rule //, Comment::Preproc, :pop! + rule /[*:]/, Punctuation + rule /#{upper_id}/, Keyword::Type + rule /#{id}/, Name::Variable + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/turtle.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/turtle.rb new file mode 100644 index 0000000000..505086f4a6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/turtle.rb @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Turtle < RegexLexer + title "Turtle/TriG" + desc "Terse RDF Triple Language, TriG" + tag 'turtle' + filenames *%w(*.ttl *.trig) + mimetypes *%w( + text/turtle + application/trig + ) + + state :root do + rule /@base\b/, Keyword::Declaration + rule /@prefix\b/, Keyword::Declaration + rule /true\b/, Keyword::Constant + rule /false\b/, Keyword::Constant + + rule /""".*?"""/m, Literal::String + rule /"([^"\\]|\\.)*"/, Literal::String + rule /'''.*?'''/m, Literal::String + rule /'([^'\\]|\\.)*'/, Literal::String + + rule /#.*$/, Comment::Single + + rule /@[^\s,.; ]+/, Name::Attribute + + rule /[+-]?[0-9]+\.[0-9]*E[+-]?[0-9]+/, Literal::Number::Float + rule /[+-]?\.[0-9]+E[+-]?[0-9]+/, Literal::Number::Float + rule /[+-]?[0-9]+E[+-]?[0-9]+/, Literal::Number::Float + + rule /[+-]?[0-9]*\.[0-9]+?/, Literal::Number::Float + + rule /[+-]?[0-9]+/, Literal::Number::Integer + + rule /\./, Punctuation + rule /,/, Punctuation + rule /;/, Punctuation + rule /\(/, Punctuation + rule /\)/, Punctuation + rule /\{/, Punctuation + rule /\}/, Punctuation + rule /\[/, Punctuation + rule /\]/, Punctuation + rule /\^\^/, Punctuation + + rule /<[^>]*>/, Name::Label + + rule /base\b/i, Keyword::Declaration + rule /prefix\b/i, Keyword::Declaration + rule /GRAPH\b/, Keyword + rule /a\b/, Keyword + + rule /\s+/, Text::Whitespace + + rule /[^:;<>#\@"\(\).\[\]\{\} ]+:/, Name::Namespace + rule /[^:;<>#\@"\(\).\[\]\{\} ]+/, Name + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/twig.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/twig.rb new file mode 100644 index 0000000000..ad2d61a061 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/twig.rb @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'jinja.rb' + + class Twig < Jinja + title "Twig" + desc "Twig template engine (twig.sensiolabs.org)" + + tag "twig" + + filenames '*.twig' + + mimetypes 'application/x-twig', 'text/html+twig' + + def self.keywords + @@keywords ||= %w(as do extends flush from import include use else starts + ends with without autoescape endautoescape block endblock + embed endembed filter endfilter for endfor if endif + macro endmacro sandbox endsandbox set endset + spaceless endspaceless verbatim endverbatim) + end + + def self.tests + @@tests ||= %w(constant defined divisibleby empty even iterable null odd + sameas) + end + + def self.pseudo_keywords + @@pseudo_keywords ||= %w(true false none) + end + + def self.word_operators + @@word_operators ||= %w(b-and b-or b-xor is in and or not) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript.rb new file mode 100644 index 0000000000..353ca7ffd5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript.rb @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'javascript.rb' + load_lexer 'typescript/common.rb' + + class Typescript < Javascript + include TypescriptCommon + + title "TypeScript" + desc "TypeScript, a superset of JavaScript" + + tag 'typescript' + aliases 'ts' + + filenames '*.ts', '*.d.ts' + + mimetypes 'text/typescript' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript/common.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript/common.rb new file mode 100644 index 0000000000..7d161ff05f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/typescript/common.rb @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + module TypescriptCommon + def self.keywords + @keywords ||= super + Set.new(%w( + is namespace static private protected public + implements readonly + )) + end + + def self.declarations + @declarations ||= super + Set.new(%w( + type abstract + )) + end + + def self.reserved + @reserved ||= super + Set.new(%w( + string any void number namespace module + declare default interface keyof + )) + end + + def self.builtins + @builtins ||= super + %w( + Pick Partial Readonly Record + ) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vala.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vala.rb new file mode 100644 index 0000000000..29101e4c13 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vala.rb @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Vala < RegexLexer + tag 'vala' + filenames '*.vala' + mimetypes 'text/x-vala' + + title "Vala" + desc 'A programming language similar to csharp.' + + id = /@?[_a-z]\w*/i + + keywords = %w( + abstract as async base break case catch const construct continue + default delegate delete do dynamic else ensures enum errordomain + extern false finally for foreach get global if in inline interface + internal is lock new null out override owned private protected + public ref requires return set signal sizeof static switch this + throw throws true try typeof unowned var value virtual void weak + while yield + ) + + keywords_type = %w( + bool char double float int int8 int16 int32 int64 long short size_t + ssize_t string unichar uint uint8 uint16 uint32 uint64 ulong ushort + ) + + state :whitespace do + rule /\s+/m, Text + rule %r(//.*?$), Comment::Single + rule %r(/[*].*?[*]/)m, Comment::Multiline + end + + state :root do + mixin :whitespace + + rule /^\s*\[.*?\]/, Name::Attribute + + rule /(<\[)\s*(#{id}:)?/, Keyword + rule /\]>/, Keyword + + rule /[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation + rule /@"(\\.|.)*?"/, Str + rule /"(\\.|.)*?["\n]/, Str + rule /'(\\.|.)'/, Str::Char + rule /0x[0-9a-f]+[lu]?/i, Num + rule %r( + [0-9] + ([.][0-9]*)? # decimal + (e[+-][0-9]+)? # exponent + [fldu]? # type + )ix, Num + rule /\b(#{keywords.join('|')})\b/, Keyword + rule /\b(#{keywords_type.join('|')})\b/, Keyword::Type + rule /class|struct/, Keyword, :class + rule /namespace|using/, Keyword, :namespace + rule /#{id}(?=\s*[(])/, Name::Function + rule id, Name + + rule /#.*/, Comment::Preproc + end + + state :class do + mixin :whitespace + rule id, Name::Class, :pop! + end + + state :namespace do + mixin :whitespace + rule /(?=[(])/, Text, :pop! + rule /(#{id}|[.])+/, Name::Namespace, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vb.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vb.rb new file mode 100644 index 0000000000..406465ad8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vb.rb @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class VisualBasic < RegexLexer + title "Visual Basic" + desc "Visual Basic" + tag 'vb' + aliases 'visualbasic' + filenames '*.vbs', '*.vb' + mimetypes 'text/x-visualbasic', 'application/x-visualbasic' + + def self.keywords + @keywords ||= Set.new %w( + AddHandler Alias ByRef ByVal CBool CByte CChar CDate CDbl CDec + CInt CLng CObj CSByte CShort CSng CStr CType CUInt CULng CUShort + Call Case Catch Class Const Continue Declare Default Delegate + Dim DirectCast Do Each Else ElseIf End EndIf Enum Erase Error + Event Exit False Finally For Friend Function Get Global GoSub + GoTo Handles If Implements Imports Inherits Interface Let + Lib Loop Me Module MustInherit MustOverride MyBase MyClass + Namespace Narrowing New Next Not NotInheritable NotOverridable + Nothing Of On Operator Option Optional Overloads Overridable + Overrides ParamArray Partial Private Property Protected Public + RaiseEvent ReDim ReadOnly RemoveHandler Resume Return Select Set + Shadows Shared Single Static Step Stop Structure Sub SyncLock + Then Throw To True Try TryCast Using Wend When While Widening + With WithEvents WriteOnly + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + Boolean Byte Char Date Decimal Double Integer Long Object + SByte Short Single String Variant UInteger ULong UShort + ) + end + + def self.operator_words + @operator_words ||= Set.new %w( + AddressOf And AndAlso As GetType In Is IsNot Like Mod Or OrElse + TypeOf Xor + ) + end + + def self.builtins + @builtins ||= Set.new %w( + Console ConsoleColor + ) + end + + id = /[a-z_]\w*/i + upper_id = /[A-Z]\w*/ + + state :whitespace do + rule /\s+/, Text + rule /\n/, Text, :bol + rule /rem\b.*?$/i, Comment::Single + rule %r(%\{.*?%\})m, Comment::Multiline + rule /'.*$/, Comment::Single + end + + state :bol do + rule /\s+/, Text + rule /<.*?>/, Name::Attribute + rule(//) { :pop! } + end + + state :root do + mixin :whitespace + rule %r( + [#]If\b .*? \bThen + | [#]ElseIf\b .*? \bThen + | [#]End \s+ If + | [#]Const + | [#]ExternalSource .*? \n + | [#]End \s+ ExternalSource + | [#]Region .*? \n + | [#]End \s+ Region + | [#]ExternalChecksum + )x, Comment::Preproc + rule /[.]/, Punctuation, :dotted + rule /[(){}!#,:]/, Punctuation + rule /Option\s+(Strict|Explicit|Compare)\s+(On|Off|Binary|Text)/, + Keyword::Declaration + rule /End\b/, Keyword, :end + rule /(Dim|Const)\b/, Keyword, :dim + rule /(Function|Sub|Property)\b/, Keyword, :funcname + rule /(Class|Structure|Enum)\b/, Keyword, :classname + rule /(Module|Namespace|Imports)\b/, Keyword, :namespace + + rule upper_id do |m| + match = m[0] + if self.class.keywords.include? match + token Keyword + elsif self.class.keywords_type.include? match + token Keyword::Type + elsif self.class.operator_words.include? match + token Operator::Word + elsif self.class.builtins.include? match + token Name::Builtin + else + token Name + end + end + + rule( + %r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]), + Operator + ) + + rule /"/, Str, :string + rule /#{id}[%&@!#\$]?/, Name + rule /#.*?#/, Literal::Date + + rule /(\d+\.\d*|\d*\.\d+)(f[+-]?\d+)?/i, Num::Float + rule /\d+([SILDFR]|US|UI|UL)?/, Num::Integer + rule /&H[0-9a-f]+([SILDFR]|US|UI|UL)?/, Num::Integer + rule /&O[0-7]+([SILDFR]|US|UI|UL)?/, Num::Integer + + rule /_\n/, Keyword + end + + state :dotted do + mixin :whitespace + rule id, Name, :pop! + end + + state :string do + rule /""/, Str::Escape + rule /"C?/, Str, :pop! + rule /[^"]+/, Str + end + + state :dim do + mixin :whitespace + rule id, Name::Variable, :pop! + rule(//) { pop! } + end + + state :funcname do + mixin :whitespace + rule id, Name::Function, :pop! + end + + state :classname do + mixin :whitespace + rule id, Name::Class, :pop! + end + + state :namespace do + mixin :whitespace + rule /#{id}([.]#{id})*/, Name::Namespace, :pop! + end + + state :end do + mixin :whitespace + rule /(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b/, + Keyword, :pop! + rule(//) { pop! } + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/verilog.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/verilog.rb new file mode 100644 index 0000000000..812b8fae9a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/verilog.rb @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Verilog < RegexLexer + title "Verilog and System Verilog" + desc "The System Verilog hardware description language" + tag 'verilog' + filenames '*.v', '*.sv', '*.svh' + mimetypes 'text/x-verilog', 'text/x-systemverilog' + + # optional comment or whitespace + ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+) + id = /[a-zA-Z_][a-zA-Z0-9_]*/ + + def self.keywords + @keywords ||= Set.new %w( + alias always always_comb always_ff always_latch assert assert_strobe + assign assume automatic attribute before begin bind bins binsof break + case casex casez clocking config constraint context continue cover + covergroup coverpoint cross deassign defparam default design dist do + else end endattribute endcase endclass endclocking endconfig + endfunction endgenerate endgroup endinterface endmodule endpackage + endprimitive endprogram endproperty endspecify endsequence endtable + endtask expect export extends extern final first_match for force + foreach fork forkjoin forever function generate genvar if iff ifnone + ignore_bins illegal_bins import incdir include initial inside instance + interface intersect join join_any join_none liblist library local + localparam matches module modport new noshowcancelled null package + parameter primitive priority program property protected + pulsestyle_onevent pulsestyle_ondetect pure rand randc randcase + randsequence release return sequence showcancelled solve specify super + table task this throughout timeprecision timeunit type typedef unique + use wait wait_order while wildcard with within + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + and bit buf bufif0 bufif1 byte cell chandle class cmos const disable + edge enum event highz0 highz1 initial inout input int integer join + logic longint macromodule medium nand negedge nmos nor not + notif0 notif1 or output packed parameter pmos posedge pull0 pull1 + pulldown pullup rcmos real realtime ref reg repeat rnmos rpmos rtran + rtranif0 rtranif1 scalared shortint shortreal signed specparam + static string strength strong0 strong1 struct supply0 supply1 tagged + time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg union + unsigned uwire var vectored virtual void wait wand weak[01] wire wor + xnor xor + ) + end + + def self.keywords_system_task + @keyword_system_task ||= Set.new %w( + acos acosh asin asinh assertfailoff assertfailon assertkill + assertnonvacuouson assertoff asserton assertpassoff assertpasson + assertvacuousoff atan atan2 atanh bits bitstoreal bitstoshortreal + cast ceil changed changed_gclk changing_gclk clog2 cos cosh countones + coverage_control coverage_get coverage_get_max coverage_merge + coverage_save dimensions display displayb displayh displayo + dist_chi_square dist_erlang dist_exponential dist_normal dist_poisson + dist_t dist_uniform dumpall dumpfile dumpflush dumplimit dumpoff + dumpon dumpports dumpportsall dumpportsflush dumpportslimit + dumpportsoff dumpportson dumpvars error exit exp falling_gclk fclose + fdisplay fdisplayb fdisplayh fdisplayo fell fell_gclk feof ferror + fflush fgetc fgets finish floor fmonitor fmonitorb fmonitorh fmonitoro + fopen fread fscanf fseek fstrobe fstrobeb fstrobeh fstrobeo ftell + future_gclk fwrite fwriteb fwriteh fwriteo get_coverage high hypot + increment info isunbounded isunknown itor left ln load_coverage_db + log10 low monitor monitorb monitorh monitoro monitoroff monitoron + onehot onehot0 past past_gclk pow printtimescale q_add q_exam q_full + q_initialize q_remove random readmemb readmemh realtime realtobits + rewind right rising_gclk rose rose_gclk rtoi sampled + set_coverage_db_name sformat sformatf shortrealtobits signed sin sinh + size sqrt sscanf stable stable_gclk steady_gclk stime stop strobe + strobeb strobeh strobeo swrite swriteb swriteh swriteo system tan tanh + time timeformat typename ungetc unpacked_dimensions unsigned warning + write writeb writeh writememb writememh writeo + ) + end + + state :expr_bol do + mixin :inline_whitespace + rule /`define/, Comment::Preproc, :macro + + rule(//) { pop! } + end + + # :expr_bol is the same as :bol but without labels, since + # labels can only appear at the beginning of a statement. + state :bol do + rule /#{id}:(?!:)/, Name::Label + mixin :expr_bol + end + + state :inline_whitespace do + rule /[ \t\r]+/, Text + rule /\\\n/, Text # line continuation + rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline + end + + state :whitespace do + rule /\n+/m, Text, :bol + rule %r(//(\\.|.)*?\n), Comment::Single, :bol + mixin :inline_whitespace + end + + state :expr_whitespace do + rule /\n+/m, Text, :expr_bol + mixin :whitespace + end + + state :string do + rule /"/, Str, :pop! + rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape + rule /[^\\"\n]+/, Str + rule /\\\n/, Str + rule /\\/, Str # stray backslash + end + + state :statement do + mixin :whitespace + rule /L?"/, Str, :string + rule /([0-9_]+\.[0-9_]*|[0-9_]*\.[0-9_]+)(e[+-]?[0-9_]+)?/i, Num::Float + rule /[0-9_]+e[+-]?[0-9_]+/i, Num::Float + rule /[0-9]*'h[0-9a-fA-F_?]+/, Num::Hex + rule /[0-9]*'b?[01xz_?]+/, Num::Bin + rule /[0-9]*'d[0-9_?]+/, Num::Integer + rule /[0-9_]+[lu]*/i, Num::Integer + rule %r([~!%^&*+-=\|?:<>/@{}]), Operator + rule /[()\[\],.$\#]/, Punctuation + rule /`(\w+)/, Comment::Preproc + + rule id do |m| + name = m[0] + + if self.class.keywords.include? name + token Keyword + elsif self.class.keywords_type.include? name + token Keyword::Type + elsif self.class.keywords_system_task.include? name + token Name::Builtin + else + token Name + end + end + end + + state :root do + mixin :expr_whitespace + rule(//) { push :statement } + end + + state :macro do + rule /\n/, Comment::Preproc, :pop! + mixin :inline_whitespace + rule /;/, Punctuation + rule /\=/, Operator + rule /(\w+)/, Text + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vhdl.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vhdl.rb new file mode 100644 index 0000000000..9312595e5a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vhdl.rb @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class VHDL < RegexLexer + title "VHDL 2008" + desc "Very High Speed Integrated Circuit Hardware Description Language" + tag 'vhdl' + + filenames '*.vhd', '*.vhdl', '*.vho' + + mimetypes 'text/x-vhdl' + def self.keywords + @keywords ||= Set.new %w( + access after alias all architecture array assert assume assume_guarantee attribute + begin block body buffer bus case component configuration constant context cover + default disconnect downto else elsif end entity exit fairness file for force function + generate generic group guarded if impure in inertial inout is label library linkage + literal loop map new next null of on open others out package parameter port postponed + procedure process property protected pure range record register reject release report + return select sequence severity shared signal strong subtype then to transport type + unaffected units until use variable vmode vprop vunit wait when while with + ) + end + + def self.keywords_type + @keywords_type ||= Set.new %w( + bit bit_vector boolean boolean_vector character integer integer_vector natural positive + real real_vector severity_level signed std_logic std_logic_vector std_ulogic + std_ulogic_vector string unsigned time time_vector + ) + end + + def self.operator_words + @operator_words ||= Set.new %w( + abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor + ) + end + + id = /[a-zA-Z][a-zA-Z0-9_]*/ + + state :whitespace do + rule /\s+/, Text + rule /\n/, Text + # Find Comments (VHDL doesn't support multiline comments) + rule /--.*$/, Comment::Single + end + + state :statements do + + # Find Numbers + rule /-?\d+/i, Num::Integer + rule /-?\d+[.]\d+/i, Num::Float + + # Find Strings + rule /[box]?"[^"]*"/i, Str::Single + rule /'[^']?'/i, Str::Char + + # Find Attributes + rule /'#{id}/i, Name::Attribute + + # Punctuations + rule /[(),:;]/, Punctuation + + # Boolean and NULL + rule /(?:true|false|null)\b/i, Name::Builtin + + rule id do |m| + match = m[0].downcase #convert to lower case + if self.class.keywords.include? match + token Keyword + elsif self.class.keywords_type.include? match + token Keyword::Type + elsif self.class.operator_words.include? match + token Operator::Word + else + token Name + end + end + + rule( + %r(=>|[*][*]|:=|\/=|>=|<=|<>|\?\?|\?=|\?\/=|\?>|\?<|\?>=|\?<=|<<|>>|[#&'*+-.\/:<=>\?@^]), + Operator + ) + + end + + state :root do + + mixin :whitespace + mixin :statements + + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml.rb new file mode 100644 index 0000000000..363ff9782a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml.rb @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class VimL < RegexLexer + title "VimL" + desc "VimL, the scripting language for the Vim editor (vim.org)" + tag 'viml' + aliases 'vim', 'vimscript', 'ex' + filenames '*.vim', '*.vba', '.vimrc', '.exrc', '.gvimrc', + '_vimrc', '_exrc', '_gvimrc' # _ names for windows + + mimetypes 'text/x-vim' + + def self.keywords + load Pathname.new(__FILE__).dirname.join('viml/keywords.rb') + self.keywords + end + + state :root do + rule /^(\s*)(".*?)$/ do + groups Text, Comment + end + + rule /^\s*\\/, Str::Escape + + rule /[ \t]+/, Text + + # TODO: regexes can have other delimiters + rule %r(/(\\\\|\\/|[^\n/])*/), Str::Regex + rule %r("(\\\\|\\"|[^\n"])*"), Str::Double + rule %r('(\\\\|\\'|[^\n'])*'), Str::Single + + # if it's not a string, it's a comment. + rule /(?<=\s)"[^-:.%#=*].*?$/, Comment + + rule /-?\d+/, Num + rule /#[0-9a-f]{6}/i, Num::Hex + rule /^:/, Punctuation + rule /[():<>+=!\[\]{}\|,~.-]/, Punctuation + rule /\b(let|if|else|endif|elseif|fun|function|endfunction)\b/, + Keyword + + rule /\b(NONE|bold|italic|underline|dark|light)\b/, Name::Builtin + + rule /[absg]:\w+\b/, Name::Variable + rule /\b\w+\b/ do |m| + name = m[0] + keywords = self.class.keywords + + if mapping_contains?(keywords[:command], name) + token Keyword + elsif mapping_contains?(keywords[:option], name) + token Name::Builtin + elsif mapping_contains?(keywords[:auto], name) + token Name::Builtin + else + token Text + end + end + + # no errors in VimL! + rule /./m, Text + end + + def mapping_contains?(mapping, word) + shortest, longest = find_likely_mapping(mapping, word) + + shortest and word.start_with?(shortest) and + longest and longest.start_with?(word) + end + + # binary search through the mappings to find the one that's likely + # to actually work. + def find_likely_mapping(mapping, word) + min = 0 + max = mapping.size + + until max == min + mid = (max + min) / 2 + + cmp, _ = mapping[mid] + + case word <=> cmp + when 1 + # too low + min = mid + 1 + when -1 + # too high + max = mid + when 0 + # just right, abort! + return mapping[mid] + end + end + + mapping[max - 1] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml/keywords.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml/keywords.rb new file mode 100644 index 0000000000..f5a862b090 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/viml/keywords.rb @@ -0,0 +1,14 @@ +# encoding: utf-8 +# frozen_string_literal: true + +# DO NOT EDIT: automatically generated by `rake builtins:vim`. +# see tasks/vim.rake for more info. +module Rouge + module Lexers + class VimL + def self.keywords + @keywords ||= {:command=>[["a", "a"], ["abc", "abclear"], ["abo", "aboveleft"], ["al", "all"], ["ar", "args"], ["arga", "argadd"], ["argd", "argdelete"], ["argdo", "argdo"], ["arge", "argedit"], ["argg", "argglobal"], ["argl", "arglocal"], ["argu", "argument"], ["as", "ascii"], ["au", "au"], ["b", "buffer"], ["bN", "bNext"], ["ba", "ball"], ["bad", "badd"], ["bd", "bdelete"], ["bel", "belowright"], ["bf", "bfirst"], ["bl", "blast"], ["bm", "bmodified"], ["bn", "bnext"], ["bo", "botright"], ["bp", "bprevious"], ["br", "brewind"], ["brea", "break"], ["breaka", "breakadd"], ["breakd", "breakdel"], ["breakl", "breaklist"], ["bro", "browse"], ["bufdo", "bufdo"], ["buffers", "buffers"], ["bun", "bunload"], ["bw", "bwipeout"], ["c", "change"], ["cN", "cNext"], ["cNf", "cNfile"], ["cabc", "cabclear"], ["cad", "caddbuffer"], ["cadde", "caddexpr"], ["caddf", "caddfile"], ["cal", "call"], ["cat", "catch"], ["cb", "cbuffer"], ["cbo", "cbottom"], ["cc", "cc"], ["ccl", "cclose"], ["cd", "cd"], ["cdo", "cdo"], ["ce", "center"], ["cex", "cexpr"], ["cf", "cfile"], ["cfdo", "cfdo"], ["cfir", "cfirst"], ["cg", "cgetfile"], ["cgetb", "cgetbuffer"], ["cgete", "cgetexpr"], ["changes", "changes"], ["chd", "chdir"], ["che", "checkpath"], ["checkt", "checktime"], ["chi", "chistory"], ["cl", "clist"], ["cla", "clast"], ["cle", "clearjumps"], ["clo", "close"], ["cmapc", "cmapclear"], ["cn", "cnext"], ["cnew", "cnewer"], ["cnf", "cnfile"], ["co", "copy"], ["col", "colder"], ["colo", "colorscheme"], ["com", "com"], ["comc", "comclear"], ["comp", "compiler"], ["con", "continue"], ["conf", "confirm"], ["cope", "copen"], ["cp", "cprevious"], ["cpf", "cpfile"], ["cq", "cquit"], ["cr", "crewind"], ["cs", "cs"], ["cscope", "cscope"], ["cstag", "cstag"], ["cuna", "cunabbrev"], ["cw", "cwindow"], ["d", "delete"], ["debug", "debug"], ["debugg", "debuggreedy"], ["delc", "delcommand"], ["delel", "delel"], ["delep", "delep"], ["deletel", "deletel"], ["deletep", "deletep"], ["deletl", "deletl"], ["deletp", "deletp"], ["delf", "delfunction"], ["dell", "dell"], ["delm", "delmarks"], ["delp", "delp"], ["dep", "dep"], ["di", "display"], ["dif", "diffupdate"], ["diffg", "diffget"], ["diffo", "diffoff"], ["diffp", "diffpatch"], ["diffpu", "diffput"], ["diffs", "diffsplit"], ["difft", "diffthis"], ["dig", "digraphs"], ["dir", "dir"], ["dj", "djump"], ["dl", "dl"], ["dli", "dlist"], ["do", "do"], ["doau", "doau"], ["dp", "dp"], ["dr", "drop"], ["ds", "dsearch"], ["dsp", "dsplit"], ["e", "edit"], ["ea", "ea"], ["earlier", "earlier"], ["echoe", "echoerr"], ["echom", "echomsg"], ["echon", "echon"], ["el", "else"], ["elsei", "elseif"], ["em", "emenu"], ["en", "endif"], ["endf", "endfunction"], ["endfo", "endfor"], ["endt", "endtry"], ["endw", "endwhile"], ["ene", "enew"], ["ex", "ex"], ["exi", "exit"], ["exu", "exusage"], ["f", "file"], ["files", "files"], ["filet", "filet"], ["filetype", "filetype"], ["filt", "filter"], ["fin", "find"], ["fina", "finally"], ["fini", "finish"], ["fir", "first"], ["fix", "fixdel"], ["fo", "fold"], ["foldc", "foldclose"], ["foldd", "folddoopen"], ["folddoc", "folddoclosed"], ["foldo", "foldopen"], ["for", "for"], ["fu", "function"], ["g", "g"], ["go", "goto"], ["gr", "grep"], ["grepa", "grepadd"], ["gui", "gui"], ["gvim", "gvim"], ["h", "help"], ["ha", "hardcopy"], ["helpc", "helpclose"], ["helpf", "helpfind"], ["helpg", "helpgrep"], ["helpt", "helptags"], ["hi", "hi"], ["hid", "hide"], ["his", "history"], ["i", "i"], ["iabc", "iabclear"], ["if", "if"], ["ij", "ijump"], ["il", "ilist"], ["imapc", "imapclear"], ["in", "in"], ["intro", "intro"], ["is", "isearch"], ["isp", "isplit"], ["iuna", "iunabbrev"], ["j", "join"], ["ju", "jumps"], ["k", "k"], ["kee", "keepmarks"], ["keepa", "keepa"], ["keepalt", "keepalt"], ["keepj", "keepjumps"], ["keepp", "keeppatterns"], ["l", "list"], ["lN", "lNext"], ["lNf", "lNfile"], ["la", "last"], ["lad", "laddexpr"], ["laddb", "laddbuffer"], ["laddf", "laddfile"], ["lan", "language"], ["lat", "lat"], ["later", "later"], ["lb", "lbuffer"], ["lbo", "lbottom"], ["lc", "lcd"], ["lch", "lchdir"], ["lcl", "lclose"], ["lcs", "lcs"], ["lcscope", "lcscope"], ["ld", "ldo"], ["le", "left"], ["lefta", "leftabove"], ["lex", "lexpr"], ["lf", "lfile"], ["lfdo", "lfdo"], ["lfir", "lfirst"], ["lg", "lgetfile"], ["lgetb", "lgetbuffer"], ["lgete", "lgetexpr"], ["lgr", "lgrep"], ["lgrepa", "lgrepadd"], ["lh", "lhelpgrep"], ["lhi", "lhistory"], ["ll", "ll"], ["lla", "llast"], ["lli", "llist"], ["lmak", "lmake"], ["lmapc", "lmapclear"], ["lne", "lnext"], ["lnew", "lnewer"], ["lnf", "lnfile"], ["lo", "loadview"], ["loadk", "loadk"], ["loadkeymap", "loadkeymap"], ["loc", "lockmarks"], ["lockv", "lockvar"], ["lol", "lolder"], ["lop", "lopen"], ["lp", "lprevious"], ["lpf", "lpfile"], ["lr", "lrewind"], ["ls", "ls"], ["lt", "ltag"], ["lua", "lua"], ["luado", "luado"], ["luafile", "luafile"], ["lv", "lvimgrep"], ["lvimgrepa", "lvimgrepadd"], ["lw", "lwindow"], ["m", "move"], ["ma", "mark"], ["mak", "make"], ["marks", "marks"], ["mat", "match"], ["menut", "menutranslate"], ["mes", "mes"], ["messages", "messages"], ["mk", "mkexrc"], ["mks", "mksession"], ["mksp", "mkspell"], ["mkv", "mkvimrc"], ["mkvie", "mkview"], ["mod", "mode"], ["mz", "mzscheme"], ["mzf", "mzfile"], ["n", "next"], ["nb", "nbkey"], ["nbc", "nbclose"], ["nbs", "nbstart"], ["new", "new"], ["nmapc", "nmapclear"], ["noa", "noa"], ["noautocmd", "noautocmd"], ["noh", "nohlsearch"], ["nor", "nor"], ["nore", "nore"], ["nos", "noswapfile"], ["nu", "number"], ["o", "open"], ["ol", "oldfiles"], ["omapc", "omapclear"], ["on", "only"], ["opt", "options"], ["ownsyntax", "ownsyntax"], ["p", "print"], ["pa", "packadd"], ["packl", "packloadall"], ["pc", "pclose"], ["pe", "perl"], ["ped", "pedit"], ["perld", "perldo"], ["po", "pop"], ["popu", "popup"], ["pp", "ppop"], ["pre", "preserve"], ["prev", "previous"], ["pro", "pro"], ["prof", "profile"], ["profd", "profdel"], ["promptf", "promptfind"], ["promptr", "promptrepl"], ["ps", "psearch"], ["ptN", "ptNext"], ["pta", "ptag"], ["ptf", "ptfirst"], ["ptj", "ptjump"], ["ptl", "ptlast"], ["ptn", "ptnext"], ["ptp", "ptprevious"], ["ptr", "ptrewind"], ["pts", "ptselect"], ["pu", "put"], ["pw", "pwd"], ["py", "python"], ["py3", "py3"], ["py3", "py3"], ["py3do", "py3do"], ["pydo", "pydo"], ["pyf", "pyfile"], ["python3", "python3"], ["q", "quit"], ["qa", "qall"], ["quita", "quitall"], ["r", "read"], ["rec", "recover"], ["red", "redo"], ["redi", "redir"], ["redr", "redraw"], ["redraws", "redrawstatus"], ["reg", "registers"], ["res", "resize"], ["ret", "retab"], ["retu", "return"], ["rew", "rewind"], ["ri", "right"], ["rightb", "rightbelow"], ["ru", "runtime"], ["rub", "ruby"], ["rubyd", "rubydo"], ["rubyf", "rubyfile"], ["rundo", "rundo"], ["rv", "rviminfo"], ["sI", "sI"], ["sIc", "sIc"], ["sIe", "sIe"], ["sIg", "sIg"], ["sIl", "sIl"], ["sIn", "sIn"], ["sIp", "sIp"], ["sIr", "sIr"], ["sN", "sNext"], ["sa", "sargument"], ["sal", "sall"], ["san", "sandbox"], ["sav", "saveas"], ["sb", "sbuffer"], ["sbN", "sbNext"], ["sba", "sball"], ["sbf", "sbfirst"], ["sbl", "sblast"], ["sbm", "sbmodified"], ["sbn", "sbnext"], ["sbp", "sbprevious"], ["sbr", "sbrewind"], ["sc", "sc"], ["scI", "scI"], ["sce", "sce"], ["scg", "scg"], ["sci", "sci"], ["scl", "scl"], ["scp", "scp"], ["scr", "scriptnames"], ["scripte", "scriptencoding"], ["scs", "scs"], ["scscope", "scscope"], ["se", "set"], ["setf", "setfiletype"], ["setg", "setglobal"], ["setl", "setlocal"], ["sf", "sfind"], ["sfir", "sfirst"], ["sg", "sg"], ["sgI", "sgI"], ["sgc", "sgc"], ["sge", "sge"], ["sgi", "sgi"], ["sgl", "sgl"], ["sgn", "sgn"], ["sgp", "sgp"], ["sgr", "sgr"], ["sh", "shell"], ["si", "si"], ["sic", "sic"], ["sie", "sie"], ["sig", "sig"], ["sign", "sign"], ["sil", "silent"], ["sim", "simalt"], ["sin", "sin"], ["sip", "sip"], ["sir", "sir"], ["sl", "sleep"], ["sla", "slast"], ["sm", "smagic"], ["sm", "smap"], ["sme", "sme"], ["smenu", "smenu"], ["smile", "smile"], ["sn", "snext"], ["sno", "snomagic"], ["snoreme", "snoreme"], ["snoremenu", "snoremenu"], ["so", "source"], ["sor", "sort"], ["sp", "split"], ["spe", "spellgood"], ["spelld", "spelldump"], ["spelli", "spellinfo"], ["spellr", "spellrepall"], ["spellu", "spellundo"], ["spellw", "spellwrong"], ["spr", "sprevious"], ["sr", "sr"], ["srI", "srI"], ["src", "src"], ["sre", "srewind"], ["srg", "srg"], ["sri", "sri"], ["srl", "srl"], ["srn", "srn"], ["srp", "srp"], ["st", "stop"], ["sta", "stag"], ["star", "startinsert"], ["startg", "startgreplace"], ["startr", "startreplace"], ["stj", "stjump"], ["stopi", "stopinsert"], ["sts", "stselect"], ["sun", "sunhide"], ["sunme", "sunme"], ["sunmenu", "sunmenu"], ["sus", "suspend"], ["sv", "sview"], ["sw", "swapname"], ["sy", "sy"], ["syn", "syn"], ["sync", "sync"], ["syncbind", "syncbind"], ["syntime", "syntime"], ["t", "t"], ["tN", "tNext"], ["ta", "tag"], ["tab", "tab"], ["tabN", "tabNext"], ["tabc", "tabclose"], ["tabd", "tabdo"], ["tabe", "tabedit"], ["tabf", "tabfind"], ["tabfir", "tabfirst"], ["tabl", "tablast"], ["tabm", "tabmove"], ["tabn", "tabnext"], ["tabnew", "tabnew"], ["tabo", "tabonly"], ["tabp", "tabprevious"], ["tabr", "tabrewind"], ["tabs", "tabs"], ["tags", "tags"], ["tc", "tcl"], ["tcld", "tcldo"], ["tclf", "tclfile"], ["te", "tearoff"], ["tf", "tfirst"], ["th", "throw"], ["tj", "tjump"], ["tl", "tlast"], ["tm", "tmenu"], ["tn", "tnext"], ["to", "topleft"], ["tp", "tprevious"], ["tr", "trewind"], ["try", "try"], ["ts", "tselect"], ["tu", "tunmenu"], ["u", "undo"], ["una", "unabbreviate"], ["undoj", "undojoin"], ["undol", "undolist"], ["unh", "unhide"], ["unlo", "unlockvar"], ["uns", "unsilent"], ["up", "update"], ["v", "v"], ["ve", "version"], ["verb", "verbose"], ["vert", "vertical"], ["vi", "visual"], ["vie", "view"], ["vim", "vimgrep"], ["vimgrepa", "vimgrepadd"], ["viu", "viusage"], ["vmapc", "vmapclear"], ["vne", "vnew"], ["vs", "vsplit"], ["w", "write"], ["wN", "wNext"], ["wa", "wall"], ["wh", "while"], ["win", "winsize"], ["winc", "wincmd"], ["windo", "windo"], ["winp", "winpos"], ["wn", "wnext"], ["wp", "wprevious"], ["wq", "wq"], ["wqa", "wqall"], ["ws", "wsverb"], ["wundo", "wundo"], ["wv", "wviminfo"], ["x", "xit"], ["xa", "xall"], ["xmapc", "xmapclear"], ["xme", "xme"], ["xmenu", "xmenu"], ["xnoreme", "xnoreme"], ["xnoremenu", "xnoremenu"], ["xprop", "xprop"], ["xunme", "xunme"], ["xunmenu", "xunmenu"], ["xwininfo", "xwininfo"], ["y", "yank"]], :option=>[], :auto=>[["BufAdd", "BufAdd"], ["BufCreate", "BufCreate"], ["BufDelete", "BufDelete"], ["BufEnter", "BufEnter"], ["BufFilePost", "BufFilePost"], ["BufFilePre", "BufFilePre"], ["BufHidden", "BufHidden"], ["BufLeave", "BufLeave"], ["BufNew", "BufNew"], ["BufNewFile", "BufNewFile"], ["BufRead", "BufRead"], ["BufReadCmd", "BufReadCmd"], ["BufReadPost", "BufReadPost"], ["BufReadPre", "BufReadPre"], ["BufUnload", "BufUnload"], ["BufWinEnter", "BufWinEnter"], ["BufWinLeave", "BufWinLeave"], ["BufWipeout", "BufWipeout"], ["BufWrite", "BufWrite"], ["BufWriteCmd", "BufWriteCmd"], ["BufWritePost", "BufWritePost"], ["BufWritePre", "BufWritePre"], ["CmdUndefined", "CmdUndefined"], ["CmdwinEnter", "CmdwinEnter"], ["CmdwinLeave", "CmdwinLeave"], ["ColorScheme", "ColorScheme"], ["CompleteDone", "CompleteDone"], ["CursorHold", "CursorHold"], ["CursorHoldI", "CursorHoldI"], ["CursorMoved", "CursorMoved"], ["CursorMovedI", "CursorMovedI"], ["EncodingChanged", "EncodingChanged"], ["FileAppendCmd", "FileAppendCmd"], ["FileAppendPost", "FileAppendPost"], ["FileAppendPre", "FileAppendPre"], ["FileChangedRO", "FileChangedRO"], ["FileChangedShell", "FileChangedShell"], ["FileChangedShellPost", "FileChangedShellPost"], ["FileEncoding", "FileEncoding"], ["FileReadCmd", "FileReadCmd"], ["FileReadPost", "FileReadPost"], ["FileReadPre", "FileReadPre"], ["FileType", "FileType"], ["FileWriteCmd", "FileWriteCmd"], ["FileWritePost", "FileWritePost"], ["FileWritePre", "FileWritePre"], ["FilterReadPost", "FilterReadPost"], ["FilterReadPre", "FilterReadPre"], ["FilterWritePost", "FilterWritePost"], ["FilterWritePre", "FilterWritePre"], ["FocusGained", "FocusGained"], ["FocusLost", "FocusLost"], ["FuncUndefined", "FuncUndefined"], ["GUIEnter", "GUIEnter"], ["GUIFailed", "GUIFailed"], ["InsertChange", "InsertChange"], ["InsertCharPre", "InsertCharPre"], ["InsertEnter", "InsertEnter"], ["InsertLeave", "InsertLeave"], ["MenuPopup", "MenuPopup"], ["OptionSet", "OptionSet"], ["QuickFixCmdPost", "QuickFixCmdPost"], ["QuickFixCmdPre", "QuickFixCmdPre"], ["QuitPre", "QuitPre"], ["RemoteReply", "RemoteReply"], ["SessionLoadPost", "SessionLoadPost"], ["ShellCmdPost", "ShellCmdPost"], ["ShellFilterPost", "ShellFilterPost"], ["SourceCmd", "SourceCmd"], ["SourcePre", "SourcePre"], ["SpellFileMissing", "SpellFileMissing"], ["StdinReadPost", "StdinReadPost"], ["StdinReadPre", "StdinReadPre"], ["SwapExists", "SwapExists"], ["Syntax", "Syntax"], ["TabClosed", "TabClosed"], ["TabEnter", "TabEnter"], ["TabLeave", "TabLeave"], ["TabNew", "TabNew"], ["TermChanged", "TermChanged"], ["TermResponse", "TermResponse"], ["TextChanged", "TextChanged"], ["TextChangedI", "TextChangedI"], ["User", "User"], ["VimEnter", "VimEnter"], ["VimLeave", "VimLeave"], ["VimLeavePre", "VimLeavePre"], ["VimResized", "VimResized"], ["WinEnter", "WinEnter"], ["WinLeave", "WinLeave"], ["WinNew", "WinNew"]]} + end + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vue.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vue.rb new file mode 100644 index 0000000000..59bd664cd8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/vue.rb @@ -0,0 +1,124 @@ +# frozen_string_literal: true + +module Rouge + module Lexers + load_lexer 'html.rb' + + class Vue < HTML + desc 'Vue.js single-file components' + tag 'vue' + aliases 'vuejs' + filenames '*.vue' + + mimetypes 'text/x-vue', 'application/x-vue' + + def initialize(*) + super + @js = Javascript.new(options) + end + + def lookup_lang(lang) + lang.downcase! + lang = lang.gsub(/["']*/, '') + case lang + when 'html' then HTML + when 'css' then CSS + when 'javascript' then Javascript + when 'sass' then Sass + when 'scss' then Scss + when 'coffee' then Coffeescript + # TODO: add more when the lexers are done + else + PlainText + end + end + + start { @js.reset! } + + prepend :root do + rule /(<)(\s*)(template)/ do + groups Name::Tag, Text, Keyword + @lang = HTML + push :template + push :lang_tag + end + + rule /(<)(\s*)(style)/ do + groups Name::Tag, Text, Keyword + @lang = CSS + push :style + push :lang_tag + end + + rule /(<)(\s*)(script)/ do + groups Name::Tag, Text, Keyword + @lang = Javascript + push :script + push :lang_tag + end + end + + state :style do + rule /(<\s*\/\s*)(style)(\s*>)/ do + groups Name::Tag, Keyword, Name::Tag + pop! + end + + mixin :style_content + mixin :embed + end + + state :script do + rule /(<\s*\/\s*)(script)(\s*>)/ do + groups Name::Tag, Keyword, Name::Tag + pop! + end + + mixin :script_content + mixin :embed + end + + state :lang_tag do + rule /(lang\s*=)(\s*)("(?:\\.|[^\\])*?"|'(\\.|[^\\])*?'|[^\s>]+)/ do |m| + groups Name::Attribute, Text, Str + @lang = lookup_lang(m[3]) + end + + mixin :tag + end + + state :template do + rule %r((<\s*/\s*)(template)(\s*>)) do + groups Name::Tag, Keyword, Name::Tag + pop! + end + + rule /{{/ do + token Str::Interpol + push :template_interpol + @js.reset! + end + + mixin :embed + end + + state :template_interpol do + rule /}}/, Str::Interpol, :pop! + rule /}/, Error + mixin :template_interpol_inner + end + + state :template_interpol_inner do + rule(/{/) { delegate @js; push } + rule(/}/) { delegate @js; pop! } + rule(/[^{}]+/) { delegate @js } + end + + state :embed do + rule(/[^{<]+/) { delegate @lang } + rule(/[<{][^<{]*/) { delegate @lang } + end + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/wollok.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/wollok.rb new file mode 100644 index 0000000000..c46960c9be --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/wollok.rb @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class Wollok < RegexLexer + title 'Wollok' + desc 'Wollok lang' + tag 'wollok' + filenames *%w(*.wlk *.wtest *.wpgm) + + keywords = %w(new super return if else var const override constructor) + + entity_name = /[a-zA-Z][a-zA-Z0-9]*/ + variable_naming = /_?#{entity_name}/ + + entities = [] + + state :whitespaces_and_comments do + rule /\s+/m, Text::Whitespace + rule /$+/m, Text::Whitespace + rule %r(//.*$), Comment::Single + rule %r(/\*(.|\s)*?\*/)m, Comment::Multiline + end + + state :root do + mixin :whitespaces_and_comments + rule /(import)(.+$)/ do + groups Keyword::Reserved, Text + end + rule /(class|object|mixin)/, Keyword::Reserved, :foo + rule /test|program/, Keyword::Reserved #, :chunk_naming + rule /(package)(\s+)(#{entity_name})/ do + groups Keyword::Reserved, Text::Whitespace, Name::Class + end + rule /{|}/, Text + mixin :keywords + mixin :symbols + mixin :objects + end + + state :foo do + mixin :whitespaces_and_comments + rule /inherits|mixed|with|and/, Keyword::Reserved + rule /#{entity_name}(?=\s*{)/ do |m| + token Name::Class + entities << m[0] + pop! + end + rule /#{entity_name}/ do |m| + token Name::Class + entities << m[0] + end + end + + state :keywords do + def any(expressions) + /#{expressions.map { |keyword| "#{keyword}\\b" }.join('|')}/ + end + + rule /self\b/, Name::Builtin::Pseudo + rule any(keywords), Keyword::Reserved + rule /(method)(\s+)(#{variable_naming})/ do + groups Keyword::Reserved, Text::Whitespace, Text + end + end + + state :objects do + rule variable_naming do |m| + variable = m[0] + if entities.include?(variable) || ('A'..'Z').cover?(variable[0]) + token Name::Class + else + token Keyword::Variable + end + end + rule /\.#{entity_name}/, Text + mixin :literals + end + + state :literals do + mixin :whitespaces_and_comments + rule /[0-9]+\.?[0-9]*/, Literal::Number + rule /"[^"]*"/m, Literal::String + rule /\[|\#{/, Punctuation, :lists + end + + state :lists do + rule /,/, Punctuation + rule /]|}/, Punctuation, :pop! + mixin :objects + end + + state :symbols do + rule /\+\+|--|\+=|-=|\*\*|!/, Operator + rule /\+|-|\*|\/|%/, Operator + rule /<=|=>|===|==|<|>/, Operator + rule /and\b|or\b|not\b/, Operator + rule /\(|\)|=/, Text + rule /,/, Punctuation + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/xml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/xml.rb new file mode 100644 index 0000000000..0b95b3709c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/xml.rb @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class XML < RegexLexer + title "XML" + desc %q(XML) + tag 'xml' + filenames *%w(*.xml *.xsl *.rss *.xslt *.xsd *.wsdl *.svg) + mimetypes *%w( + text/xml + application/xml + image/svg+xml + application/rss+xml + application/atom+xml + ) + + def self.detect?(text) + return false if text.doctype?(/html/) + return true if text =~ /\A<\?xml\b/ + return true if text.doctype? + end + + state :root do + rule /[^<&]+/, Text + rule /&\S*?;/, Name::Entity + rule //, Comment::Preproc + rule //, Comment, :pop! + rule /-/, Comment + end + + state :tag do + rule /\s+/m, Text + rule /[\w.:-]+\s*=/m, Name::Attribute, :attr + rule %r(/?\s*>), Name::Tag, :pop! + end + + state :attr do + rule /\s+/m, Text + rule /".*?"|'.*?'|[^\s>]+/m, Str, :pop! + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/yaml.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/yaml.rb new file mode 100644 index 0000000000..4afb31c55a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/lexers/yaml.rb @@ -0,0 +1,374 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Lexers + class YAML < RegexLexer + title "YAML" + desc "Yaml Ain't Markup Language (yaml.org)" + mimetypes 'text/x-yaml' + tag 'yaml' + aliases 'yml' + filenames '*.yaml', '*.yml' + + def self.detect?(text) + # look for the %YAML directive + return true if text =~ /\A\s*%YAML/m + end + + SPECIAL_VALUES = Regexp.union(%w(true false null)) + + # NB: Tabs are forbidden in YAML, which is why you see things + # like /[ ]+/. + + # reset the indentation levels + def reset_indent + puts " yaml: reset_indent" if @debug + @indent_stack = [0] + @next_indent = 0 + @block_scalar_indent = nil + end + + def indent + raise 'empty indent stack!' if @indent_stack.empty? + @indent_stack.last + end + + def dedent?(level) + level < self.indent + end + + def indent?(level) + level > self.indent + end + + # Save a possible indentation level + def save_indent(match) + @next_indent = match.size + puts " yaml: indent: #{self.indent}/#@next_indent" if @debug + puts " yaml: popping indent stack - before: #@indent_stack" if @debug + if dedent?(@next_indent) + @indent_stack.pop while dedent?(@next_indent) + puts " yaml: popping indent stack - after: #@indent_stack" if @debug + puts " yaml: indent: #{self.indent}/#@next_indent" if @debug + + # dedenting to a state not previously indented to is an error + [match[0...self.indent], match[self.indent..-1]] + else + [match, ''] + end + end + + def continue_indent(match) + puts " yaml: continue_indent" if @debug + @next_indent += match.size + end + + def set_indent(match, opts={}) + if indent < @next_indent + puts " yaml: indenting #{indent}/#{@next_indent}" if @debug + @indent_stack << @next_indent + end + + @next_indent += match.size unless opts[:implicit] + end + + plain_scalar_start = /[^ \t\n\r\f\v?:,\[\]{}#&*!\|>'"%@`]/ + + start { reset_indent } + + state :basic do + rule /#.*$/, Comment::Single + end + + state :root do + mixin :basic + + rule /\n+/, Text + + # trailing or pre-comment whitespace + rule /[ ]+(?=#|$)/, Text + + rule /^%YAML\b/ do + token Name::Tag + reset_indent + push :yaml_directive + end + + rule /^%TAG\b/ do + token Name::Tag + reset_indent + push :tag_directive + end + + # doc-start and doc-end indicators + rule /^(?:---|\.\.\.)(?= |$)/ do + token Name::Namespace + reset_indent + push :block_line + end + + # indentation spaces + rule /[ ]*(?!\s|$)/ do |m| + text, err = save_indent(m[0]) + token Text, text + token Error, err + push :block_line; push :indentation + end + end + + state :indentation do + rule(/\s*?\n/) { token Text; pop! 2 } + # whitespace preceding block collection indicators + rule /[ ]+(?=[-:?](?:[ ]|$))/ do |m| + token Text + continue_indent(m[0]) + end + + # block collection indicators + rule(/[?:-](?=[ ]|$)/) do |m| + set_indent m[0] + token Punctuation::Indicator + end + + # the beginning of a block line + rule(/[ ]*/) { |m| token Text; continue_indent(m[0]); pop! } + end + + # indented line in the block context + state :block_line do + # line end + rule /[ ]*(?=#|$)/, Text, :pop! + rule /[ ]+/, Text + # tags, anchors, and aliases + mixin :descriptors + # block collections and scalars + mixin :block_nodes + # flow collections and quoed scalars + mixin :flow_nodes + + # a plain scalar + rule /(?=#{plain_scalar_start}|[?:-][^ \t\n\r\f\v])/ do + token Name::Variable + push :plain_scalar_in_block_context + end + end + + state :descriptors do + # a full-form tag + rule /!<[0-9A-Za-z;\/?:@&=+$,_.!~*'()\[\]%-]+>/, Keyword::Type + + # a tag in the form '!', '!suffix' or '!handle!suffix' + rule %r( + (?:![\w-]+)? # handle + !(?:[\w;/?:@&=+$,.!~*\'()\[\]%-]*) # suffix + )x, Keyword::Type + + # an anchor + rule /&[\w-]+/, Name::Label + + # an alias + rule /\*[\w-]+/, Name::Variable + end + + state :block_nodes do + # implicit key + rule /((?:\w[\w -]*)?)(:)(?=\s|$)/ do |m| + groups Name::Attribute, Punctuation::Indicator + set_indent m[0], :implicit => true + end + + # literal and folded scalars + rule /[\|>]/ do + token Punctuation::Indicator + push :block_scalar_content + push :block_scalar_header + end + end + + state :flow_nodes do + rule /\[/, Punctuation::Indicator, :flow_sequence + rule /\{/, Punctuation::Indicator, :flow_mapping + rule /'/, Str::Single, :single_quoted_scalar + rule /"/, Str::Double, :double_quoted_scalar + end + + state :flow_collection do + rule /\s+/m, Text + mixin :basic + rule /[?:,]/, Punctuation::Indicator + mixin :descriptors + mixin :flow_nodes + + rule /(?=#{plain_scalar_start})/ do + push :plain_scalar_in_flow_context + end + end + + state :flow_sequence do + rule /\]/, Punctuation::Indicator, :pop! + mixin :flow_collection + end + + state :flow_mapping do + rule /\}/, Punctuation::Indicator, :pop! + mixin :flow_collection + end + + state :block_scalar_content do + rule /\n+/, Text + + # empty lines never dedent, but they might be part of the scalar. + rule /^[ ]+$/ do |m| + text = m[0] + indent_size = text.size + + indent_mark = @block_scalar_indent || indent_size + + token Text, text[0...indent_mark] + token Name::Constant, text[indent_mark..-1] + end + + # TODO: ^ doesn't actually seem to affect the match at all. + # Find a way to work around this limitation. + rule /^[ ]*/ do |m| + token Text + + indent_size = m[0].size + + dedent_level = @block_scalar_indent || self.indent + @block_scalar_indent ||= indent_size + + if indent_size < dedent_level + save_indent m[0] + pop! + push :indentation + end + end + + rule /[^\n\r\f\v]+/, Name::Constant + end + + state :block_scalar_header do + # optional indentation indicator and chomping flag, in either order + rule %r( + ( + ([1-9])[+-]? | [+-]?([1-9])? + )(?=[ ]|$) + )x do |m| + @block_scalar_indent = nil + goto :ignored_line + next if m[0].empty? + + increment = m[1] || m[2] + if increment + @block_scalar_indent = indent + increment.to_i + end + + token Punctuation::Indicator + end + end + + state :ignored_line do + mixin :basic + rule /[ ]+/, Text + rule /\n/, Text, :pop! + end + + state :quoted_scalar_whitespaces do + # leading and trailing whitespace is ignored + rule /^[ ]+/, Text + rule /[ ]+$/, Text + + rule /\n+/m, Text + + rule /[ ]+/, Name::Variable + end + + state :single_quoted_scalar do + mixin :quoted_scalar_whitespaces + rule /\\'/, Str::Escape + rule /'/, Str, :pop! + rule /[^\s']+/, Str + end + + state :double_quoted_scalar do + rule /"/, Str, :pop! + mixin :quoted_scalar_whitespaces + # escapes + rule /\\[0abt\tn\nvfre "\\N_LP]/, Str::Escape + rule /\\(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/, + Str::Escape + rule /[^ \t\n\r\f\v"\\]+/, Str + end + + state :plain_scalar_in_block_context_new_line do + rule /^[ ]+\n/, Text + rule /\n+/m, Text + rule /^(?=---|\.\.\.)/ do + pop! 3 + end + + # dedent detection + rule /^[ ]*/ do |m| + token Text + pop! + + indent_size = m[0].size + + # dedent = end of scalar + if indent_size <= self.indent + pop! + save_indent(m[0]) + push :indentation + end + end + end + + state :plain_scalar_in_block_context do + # the : indicator ends a scalar + rule /[ ]*(?=:[ \n]|:$)/, Text, :pop! + rule /[ ]*:/, Str + rule /[ ]+(?=#)/, Text, :pop! + rule /[ ]+$/, Text + # check for new documents or dedents at the new line + rule /\n+/ do + token Text + push :plain_scalar_in_block_context_new_line + end + + rule /[ ]+/, Str + rule SPECIAL_VALUES, Name::Constant + # regular non-whitespace characters + rule /[^\s:]+/, Str + end + + state :plain_scalar_in_flow_context do + rule /[ ]*(?=[,:?\[\]{}])/, Text, :pop! + rule /[ ]+(?=#)/, Text, :pop! + rule /^[ ]+/, Text + rule /[ ]+$/, Text + rule /\n+/, Text + rule /[ ]+/, Name::Variable + rule /[^\s,:?\[\]{}]+/, Name::Variable + end + + state :yaml_directive do + rule /([ ]+)(\d+\.\d+)/ do + groups Text, Num + goto :ignored_line + end + end + + state :tag_directive do + rule %r( + ([ ]+)(!|![\w-]*!) # prefix + ([ ]+)(!|!?[\w;/?:@&=+$,.!~*'()\[\]%-]+) # tag handle + )x do + groups Text, Keyword::Type, Text, Keyword::Type + goto :ignored_line + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/plugins/redcarpet.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/plugins/redcarpet.rb new file mode 100644 index 0000000000..e70bd34a52 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/plugins/redcarpet.rb @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# this file is not require'd from the root. To use this plugin, run: +# +# require 'rouge/plugins/redcarpet' + +module Rouge + module Plugins + module Redcarpet + def block_code(code, language) + lexer = Lexer.find_fancy(language, code) || Lexers::PlainText + + # XXX HACK: Redcarpet strips hard tabs out of code blocks, + # so we assume you're not using leading spaces that aren't tabs, + # and just replace them here. + if lexer.tag == 'make' + code.gsub! /^ /, "\t" + end + + formatter = rouge_formatter(lexer) + formatter.format(lexer.lex(code)) + end + + # override this method for custom formatting behavior + def rouge_formatter(lexer) + Formatters::HTMLLegacy.new(:css_class => "highlight #{lexer.tag}") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/regex_lexer.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/regex_lexer.rb new file mode 100644 index 0000000000..f1a0d0d3e5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/regex_lexer.rb @@ -0,0 +1,442 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + # @abstract + # A stateful lexer that uses sets of regular expressions to + # tokenize a string. Most lexers are instances of RegexLexer. + class RegexLexer < Lexer + # A rule is a tuple of a regular expression to test, and a callback + # to perform if the test succeeds. + # + # @see StateDSL#rule + class Rule + attr_reader :callback + attr_reader :re + attr_reader :beginning_of_line + def initialize(re, callback) + @re = re + @callback = callback + @beginning_of_line = re.source[0] == ?^ + end + + def inspect + "#" + end + end + + # a State is a named set of rules that can be tested for or + # mixed in. + # + # @see RegexLexer.state + class State + attr_reader :name, :rules + def initialize(name, rules) + @name = name + @rules = rules + end + + def inspect + "#<#{self.class.name} #{@name.inspect}>" + end + end + + class StateDSL + attr_reader :rules + def initialize(name, &defn) + @name = name + @defn = defn + @rules = [] + @loaded = false + end + + def to_state(lexer_class) + load! + rules = @rules.map do |rule| + rule.is_a?(String) ? lexer_class.get_state(rule) : rule + end + State.new(@name, rules) + end + + def prepended(&defn) + parent_defn = @defn + StateDSL.new(@name) do + instance_eval(&defn) + instance_eval(&parent_defn) + end + end + + def appended(&defn) + parent_defn = @defn + StateDSL.new(@name) do + instance_eval(&parent_defn) + instance_eval(&defn) + end + end + + protected + # Define a new rule for this state. + # + # @overload rule(re, token, next_state=nil) + # @overload rule(re, &callback) + # + # @param [Regexp] re + # a regular expression for this rule to test. + # @param [String] tok + # the token type to yield if `re` matches. + # @param [#to_s] next_state + # (optional) a state to push onto the stack if `re` matches. + # If `next_state` is `:pop!`, the state stack will be popped + # instead. + # @param [Proc] callback + # a block that will be evaluated in the context of the lexer + # if `re` matches. This block has access to a number of lexer + # methods, including {RegexLexer#push}, {RegexLexer#pop!}, + # {RegexLexer#token}, and {RegexLexer#delegate}. The first + # argument can be used to access the match groups. + def rule(re, tok=nil, next_state=nil, &callback) + if tok.nil? && callback.nil? + raise "please pass `rule` a token to yield or a callback" + end + + callback ||= case next_state + when :pop! + proc do |stream| + puts " yielding #{tok.qualname}, #{stream[0].inspect}" if @debug + @output_stream.call(tok, stream[0]) + puts " popping stack: 1" if @debug + @stack.pop or raise 'empty stack!' + end + when :push + proc do |stream| + puts " yielding #{tok.qualname}, #{stream[0].inspect}" if @debug + @output_stream.call(tok, stream[0]) + puts " pushing :#{@stack.last.name}" if @debug + @stack.push(@stack.last) + end + when Symbol + proc do |stream| + puts " yielding #{tok.qualname}, #{stream[0].inspect}" if @debug + @output_stream.call(tok, stream[0]) + state = @states[next_state] || self.class.get_state(next_state) + puts " pushing :#{state.name}" if @debug + @stack.push(state) + end + when nil + proc do |stream| + puts " yielding #{tok.qualname}, #{stream[0].inspect}" if @debug + @output_stream.call(tok, stream[0]) + end + else + raise "invalid next state: #{next_state.inspect}" + end + + rules << Rule.new(re, callback) + end + + # Mix in the rules from another state into this state. The rules + # from the mixed-in state will be tried in order before moving on + # to the rest of the rules in this state. + def mixin(state) + rules << state.to_s + end + + private + def load! + return if @loaded + @loaded = true + instance_eval(&@defn) + end + end + + # The states hash for this lexer. + # @see state + def self.states + @states ||= {} + end + + def self.state_definitions + @state_definitions ||= InheritableHash.new(superclass.state_definitions) + end + @state_definitions = {} + + def self.replace_state(name, new_defn) + states[name] = nil + state_definitions[name] = new_defn + end + + # The routines to run at the beginning of a fresh lex. + # @see start + def self.start_procs + @start_procs ||= InheritableList.new(superclass.start_procs) + end + @start_procs = [] + + # Specify an action to be run every fresh lex. + # + # @example + # start { puts "I'm lexing a new string!" } + def self.start(&b) + start_procs << b + end + + # Define a new state for this lexer with the given name. + # The block will be evaluated in the context of a {StateDSL}. + def self.state(name, &b) + name = name.to_s + state_definitions[name] = StateDSL.new(name, &b) + end + + def self.prepend(name, &b) + name = name.to_s + dsl = state_definitions[name] or raise "no such state #{name.inspect}" + replace_state(name, dsl.prepended(&b)) + end + + def self.append(name, &b) + name = name.to_s + dsl = state_definitions[name] or raise "no such state #{name.inspect}" + replace_state(name, dsl.appended(&b)) + end + + # @private + def self.get_state(name) + return name if name.is_a? State + + states[name.to_sym] ||= begin + defn = state_definitions[name.to_s] or raise "unknown state: #{name.inspect}" + defn.to_state(self) + end + end + + # @private + def get_state(state_name) + self.class.get_state(state_name) + end + + # The state stack. This is initially the single state `[:root]`. + # It is an error for this stack to be empty. + # @see #state + def stack + @stack ||= [get_state(:root)] + end + + # The current state - i.e. one on top of the state stack. + # + # NB: if the state stack is empty, this will throw an error rather + # than returning nil. + def state + stack.last or raise 'empty stack!' + end + + # reset this lexer to its initial state. This runs all of the + # start_procs. + def reset! + @stack = nil + @current_stream = nil + + puts "start blocks" if @debug && self.class.start_procs.any? + self.class.start_procs.each do |pr| + instance_eval(&pr) + end + end + + # This implements the lexer protocol, by yielding [token, value] pairs. + # + # The process for lexing works as follows, until the stream is empty: + # + # 1. We look at the state on top of the stack (which by default is + # `[:root]`). + # 2. Each rule in that state is tried until one is successful. If one + # is found, that rule's callback is evaluated - which may yield + # tokens and manipulate the state stack. Otherwise, one character + # is consumed with an `'Error'` token, and we continue at (1.) + # + # @see #step #step (where (2.) is implemented) + def stream_tokens(str, &b) + stream = StringScanner.new(str) + + @current_stream = stream + @output_stream = b + @states = self.class.states + @null_steps = 0 + + until stream.eos? + if @debug + puts "lexer: #{self.class.tag}" + puts "stack: #{stack.map(&:name).map(&:to_sym).inspect}" + puts "stream: #{stream.peek(20).inspect}" + end + + success = step(state, stream) + + if !success + puts " no match, yielding Error" if @debug + b.call(Token::Tokens::Error, stream.getch) + end + end + end + + # The number of successive scans permitted without consuming + # the input stream. If this is exceeded, the match fails. + MAX_NULL_SCANS = 5 + + # Runs one step of the lex. Rules in the current state are tried + # until one matches, at which point its callback is called. + # + # @return true if a rule was tried successfully + # @return false otherwise. + def step(state, stream) + state.rules.each do |rule| + if rule.is_a?(State) + puts " entering mixin #{rule.name}" if @debug + return true if step(rule, stream) + puts " exiting mixin #{rule.name}" if @debug + else + puts " trying #{rule.inspect}" if @debug + + # XXX HACK XXX + # StringScanner's implementation of ^ is b0rken. + # see http://bugs.ruby-lang.org/issues/7092 + # TODO: this doesn't cover cases like /(a|^b)/, but it's + # the most common, for now... + next if rule.beginning_of_line && !stream.beginning_of_line? + + if (size = stream.skip(rule.re)) + puts " got #{stream[0].inspect}" if @debug + + instance_exec(stream, &rule.callback) + + if size.zero? + @null_steps += 1 + if @null_steps > MAX_NULL_SCANS + puts " too many scans without consuming the string!" if @debug + return false + end + else + @null_steps = 0 + end + + return true + end + end + end + + false + end + + # Yield a token. + # + # @param tok + # the token type + # @param val + # (optional) the string value to yield. If absent, this defaults + # to the entire last match. + def token(tok, val=@current_stream[0]) + yield_token(tok, val) + end + + # @deprecated + # + # Yield a token with the next matched group. Subsequent calls + # to this method will yield subsequent groups. + def group(tok) + raise "RegexLexer#group is deprecated: use #groups instead" + end + + # Yield tokens corresponding to the matched groups of the current + # match. + def groups(*tokens) + tokens.each_with_index do |tok, i| + yield_token(tok, @current_stream[i+1]) + end + end + + # Delegate the lex to another lexer. The #lex method will be called + # with `:continue` set to true, so that #reset! will not be called. + # In this way, a single lexer can be repeatedly delegated to while + # maintaining its own internal state stack. + # + # @param [#lex] lexer + # The lexer or lexer class to delegate to + # @param [String] text + # The text to delegate. This defaults to the last matched string. + def delegate(lexer, text=nil) + puts " delegating to #{lexer.inspect}" if @debug + text ||= @current_stream[0] + + lexer.lex(text, :continue => true) do |tok, val| + puts " delegated token: #{tok.inspect}, #{val.inspect}" if @debug + yield_token(tok, val) + end + end + + def recurse(text=nil) + delegate(self.class, text) + end + + # Push a state onto the stack. If no state name is given and you've + # passed a block, a state will be dynamically created using the + # {StateDSL}. + def push(state_name=nil, &b) + push_state = if state_name + get_state(state_name) + elsif block_given? + StateDSL.new(b.inspect, &b).to_state(self.class) + else + # use the top of the stack by default + self.state + end + + puts " pushing :#{push_state.name}" if @debug + stack.push(push_state) + end + + # Pop the state stack. If a number is passed in, it will be popped + # that number of times. + def pop!(times=1) + raise 'empty stack!' if stack.empty? + + puts " popping stack: #{times}" if @debug + + stack.pop(times) + + nil + end + + # replace the head of the stack with the given state + def goto(state_name) + raise 'empty stack!' if stack.empty? + + puts " going to state :#{state_name} " if @debug + stack[-1] = get_state(state_name) + end + + # reset the stack back to `[:root]`. + def reset_stack + puts ' resetting stack' if @debug + stack.clear + stack.push get_state(:root) + end + + # Check if `state_name` is in the state stack. + def in_state?(state_name) + state_name = state_name.to_s + stack.any? do |state| + state.name == state_name.to_s + end + end + + # Check if `state_name` is the state on top of the state stack. + def state?(state_name) + state_name.to_s == state.name + end + + private + def yield_token(tok, val) + return if val.nil? || val.empty? + puts " yielding #{tok.qualname}, #{val.inspect}" if @debug + @output_stream.yield(tok, val) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/template_lexer.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/template_lexer.rb new file mode 100644 index 0000000000..384b37b359 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/template_lexer.rb @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + # @abstract + # A TemplateLexer is one that accepts a :parent option, to specify + # which language is being templated. The lexer class can specify its + # own default for the parent lexer, which is otherwise defaulted to + # HTML. + class TemplateLexer < RegexLexer + # the parent lexer - the one being templated. + def parent + return @parent if instance_variable_defined? :@parent + @parent = lexer_option(:parent) || Lexers::HTML.new(@options) + end + + option :parent, "the parent language (default: html)" + + start { parent.reset! } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/text_analyzer.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/text_analyzer.rb new file mode 100644 index 0000000000..0540ca4252 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/text_analyzer.rb @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + class TextAnalyzer < String + # Find a shebang. Returns nil if no shebang is present. + def shebang + return @shebang if instance_variable_defined? :@shebang + + self =~ /\A\s*#!(.*)$/ + @shebang = $1 + end + + # Check if the given shebang is present. + # + # This normalizes things so that `text.shebang?('bash')` will detect + # `#!/bash`, '#!/bin/bash', '#!/usr/bin/env bash', and '#!/bin/bash -x' + def shebang?(match) + return false unless shebang + match = /\b#{match}(\s|$)/ + match === shebang + end + + # Return the contents of the doctype tag if present, nil otherwise. + def doctype + return @doctype if instance_variable_defined? :@doctype + + self =~ %r(\A\s* + (?:<\?.*?\?>\s*)? # possible tag + + )xm + @doctype = $1 + end + + # Check if the doctype matches a given regexp or string + def doctype?(type=//) + type === doctype + end + + # Return true if the result of lexing with the given lexer contains no + # error tokens. + def lexes_cleanly?(lexer) + lexer.lex(self) do |(tok, _)| + return false if tok.name == 'Error' + end + + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/theme.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/theme.rb new file mode 100644 index 0000000000..731da002b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/theme.rb @@ -0,0 +1,214 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + class Theme + include Token::Tokens + + class Style < Hash + def initialize(theme, hsh={}) + super() + @theme = theme + merge!(hsh) + end + + [:fg, :bg].each do |mode| + define_method mode do + return self[mode] unless @theme + @theme.palette(self[mode]) if self[mode] + end + end + + def render(selector, &b) + return enum_for(:render, selector).to_a.join("\n") unless b + + return if empty? + + yield "#{selector} {" + rendered_rules.each do |rule| + yield " #{rule};" + end + yield "}" + end + + def rendered_rules(&b) + return enum_for(:rendered_rules) unless b + yield "color: #{fg}" if fg + yield "background-color: #{bg}" if bg + yield "font-weight: bold" if self[:bold] + yield "font-style: italic" if self[:italic] + yield "text-decoration: underline" if self[:underline] + + (self[:rules] || []).each(&b) + end + end + + def styles + @styles ||= self.class.styles.dup + end + + @palette = {} + def self.palette(arg={}) + @palette ||= InheritableHash.new(superclass.palette) + + if arg.is_a? Hash + @palette.merge! arg + @palette + else + case arg + when /#[0-9a-f]+/i + arg + else + @palette[arg] or raise "not in palette: #{arg.inspect}" + end + end + end + + def palette(*a) self.class.palette(*a) end + + @styles = {} + def self.styles + @styles ||= InheritableHash.new(superclass.styles) + end + + def self.render(opts={}, &b) + new(opts).render(&b) + end + + def get_own_style(token) + self.class.get_own_style(token) + end + + def get_style(token) + self.class.get_style(token) + end + + class << self + def style(*tokens) + style = tokens.last.is_a?(Hash) ? tokens.pop : {} + + tokens.each do |tok| + styles[tok] = style + end + end + + def get_own_style(token) + token.token_chain.reverse_each do |anc| + return Style.new(self, styles[anc]) if styles[anc] + end + + nil + end + + def get_style(token) + get_own_style(token) || base_style + end + + def base_style + get_own_style(Token::Tokens::Text) + end + + def name(n=nil) + return @name if n.nil? + + @name = n.to_s + register(@name) + end + + def register(name) + Theme.registry[name.to_s] = self + end + + def find(n) + registry[n.to_s] + end + + def registry + @registry ||= {} + end + end + end + + module HasModes + def mode(arg=:absent) + return @mode if arg == :absent + + @modes ||= {} + @modes[arg] ||= get_mode(arg) + end + + def get_mode(mode) + return self if self.mode == mode + + new_name = "#{self.name}.#{mode}" + Class.new(self) { name(new_name); set_mode!(mode) } + end + + def set_mode!(mode) + @mode = mode + send("make_#{mode}!") + end + + def mode!(arg) + alt_name = "#{self.name}.#{arg}" + register(alt_name) + set_mode!(arg) + end + end + + class CSSTheme < Theme + def initialize(opts={}) + @scope = opts[:scope] || '.highlight' + end + + def render(&b) + return enum_for(:render).to_a.join("\n") unless b + + # shared styles for tableized line numbers + yield "#{@scope} table td { padding: 5px; }" + yield "#{@scope} table pre { margin: 0; }" + + styles.each do |tok, style| + Style.new(self, style).render(css_selector(tok), &b) + end + end + + def render_base(selector, &b) + self.class.base_style.render(selector, &b) + end + + def style_for(tok) + self.class.get_style(tok) + end + + private + def css_selector(token) + inflate_token(token).map do |tok| + raise "unknown token: #{tok.inspect}" if tok.shortname.nil? + + single_css_selector(tok) + end.join(', ') + end + + def single_css_selector(token) + return @scope if token == Text + + "#{@scope} .#{token.shortname}" + end + + # yield all of the tokens that should be styled the same + # as the given token. Essentially this recursively all of + # the subtokens, except those which are more specifically + # styled. + def inflate_token(tok, &b) + return enum_for(:inflate_token, tok) unless block_given? + + yield tok + tok.sub_tokens.each do |(_, st)| + next if styles[st] + + inflate_token(st, &b) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/base16.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/base16.rb new file mode 100644 index 0000000000..bf62fa7211 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/base16.rb @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + # default base16 theme + # by Chris Kempson (http://chriskempson.com) + class Base16 < CSSTheme + name 'base16' + + palette base00: "#151515" + palette base01: "#202020" + palette base02: "#303030" + palette base03: "#505050" + palette base04: "#b0b0b0" + palette base05: "#d0d0d0" + palette base06: "#e0e0e0" + palette base07: "#f5f5f5" + palette base08: "#ac4142" + palette base09: "#d28445" + palette base0A: "#f4bf75" + palette base0B: "#90a959" + palette base0C: "#75b5aa" + palette base0D: "#6a9fb5" + palette base0E: "#aa759f" + palette base0F: "#8f5536" + + extend HasModes + + def self.light! + mode :dark # indicate that there is a dark variant + mode! :light + end + + def self.dark! + mode :light # indicate that there is a light variant + mode! :dark + end + + def self.make_dark! + style Text, :fg => :base05, :bg => :base00 + end + + def self.make_light! + style Text, :fg => :base02 + end + + light! + + style Error, :fg => :base00, :bg => :base08 + style Comment, :fg => :base03 + + style Comment::Preproc, + Name::Tag, :fg => :base0A + + style Operator, + Punctuation, :fg => :base05 + + style Generic::Inserted, :fg => :base0B + style Generic::Deleted, :fg => :base08 + style Generic::Heading, :fg => :base0D, :bg => :base00, :bold => true + + style Keyword, :fg => :base0E + style Keyword::Constant, + Keyword::Type, :fg => :base09 + + style Keyword::Declaration, :fg => :base09 + + style Literal::String, :fg => :base0B + style Literal::String::Regex, :fg => :base0C + + style Literal::String::Interpol, + Literal::String::Escape, :fg => :base0F + + style Name::Namespace, + Name::Class, + Name::Constant, :fg => :base0A + + style Name::Attribute, :fg => :base0D + + style Literal::Number, + Literal::String::Symbol, :fg => :base0B + + class Solarized < Base16 + name 'base16.solarized' + light! + # author "Ethan Schoonover (http://ethanschoonover.com/solarized)" + + palette base00: "#002b36" + palette base01: "#073642" + palette base02: "#586e75" + palette base03: "#657b83" + palette base04: "#839496" + palette base05: "#93a1a1" + palette base06: "#eee8d5" + palette base07: "#fdf6e3" + palette base08: "#dc322f" + palette base09: "#cb4b16" + palette base0A: "#b58900" + palette base0B: "#859900" + palette base0C: "#2aa198" + palette base0D: "#268bd2" + palette base0E: "#6c71c4" + palette base0F: "#d33682" + end + + class Monokai < Base16 + name 'base16.monokai' + dark! + + # author "Wimer Hazenberg (http://www.monokai.nl)" + palette base00: "#272822" + palette base01: "#383830" + palette base02: "#49483e" + palette base03: "#75715e" + palette base04: "#a59f85" + palette base05: "#f8f8f2" + palette base06: "#f5f4f1" + palette base07: "#f9f8f5" + palette base08: "#f92672" + palette base09: "#fd971f" + palette base0A: "#f4bf75" + palette base0B: "#a6e22e" + palette base0C: "#a1efe4" + palette base0D: "#66d9ef" + palette base0E: "#ae81ff" + palette base0F: "#cc6633" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/colorful.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/colorful.rb new file mode 100644 index 0000000000..b2de856acf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/colorful.rb @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + # stolen from pygments + class Colorful < CSSTheme + name 'colorful' + + style Text, :fg => "#bbbbbb", :bg => '#000' + + style Comment, :fg => "#888" + style Comment::Preproc, :fg => "#579" + style Comment::Special, :fg => "#cc0000", :bold => true + + style Keyword, :fg => "#080", :bold => true + style Keyword::Pseudo, :fg => "#038" + style Keyword::Type, :fg => "#339" + + style Operator, :fg => "#333" + style Operator::Word, :fg => "#000", :bold => true + + style Name::Builtin, :fg => "#007020" + style Name::Function, :fg => "#06B", :bold => true + style Name::Class, :fg => "#B06", :bold => true + style Name::Namespace, :fg => "#0e84b5", :bold => true + style Name::Exception, :fg => "#F00", :bold => true + style Name::Variable, :fg => "#963" + style Name::Variable::Instance, :fg => "#33B" + style Name::Variable::Class, :fg => "#369" + style Name::Variable::Global, :fg => "#d70", :bold => true + style Name::Constant, :fg => "#036", :bold => true + style Name::Label, :fg => "#970", :bold => true + style Name::Entity, :fg => "#800", :bold => true + style Name::Attribute, :fg => "#00C" + style Name::Tag, :fg => "#070" + style Name::Decorator, :fg => "#555", :bold => true + + style Literal::String, :bg => "#fff0f0" + style Literal::String::Char, :fg => "#04D" + style Literal::String::Doc, :fg => "#D42" + style Literal::String::Interpol, :bg => "#eee" + style Literal::String::Escape, :fg => "#666", :bold => true + style Literal::String::Regex, :fg => "#000", :bg => "#fff0ff" + style Literal::String::Symbol, :fg => "#A60" + style Literal::String::Other, :fg => "#D20" + + style Literal::Number, :fg => "#60E", :bold => true + style Literal::Number::Integer, :fg => "#00D", :bold => true + style Literal::Number::Float, :fg => "#60E", :bold => true + style Literal::Number::Hex, :fg => "#058", :bold => true + style Literal::Number::Oct, :fg => "#40E", :bold => true + + style Generic::Heading, :fg => "#000080", :bold => true + style Generic::Subheading, :fg => "#800080", :bold => true + style Generic::Deleted, :fg => "#A00000" + style Generic::Inserted, :fg => "#00A000" + style Generic::Error, :fg => "#FF0000" + style Generic::Emph, :italic => true + style Generic::Strong, :bold => true + style Generic::Prompt, :fg => "#c65d09", :bold => true + style Generic::Output, :fg => "#888" + style Generic::Traceback, :fg => "#04D" + + style Error, :fg => "#F00", :bg => "#FAA" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/github.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/github.rb new file mode 100644 index 0000000000..de1c31e10f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/github.rb @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class Github < CSSTheme + name 'github' + + style Comment::Multiline, :fg => '#999988', :italic => true + style Comment::Preproc, :fg => '#999999', :bold => true + style Comment::Single, :fg => '#999988', :italic => true + style Comment::Special, :fg => '#999999', :italic => true, :bold => true + style Comment, :fg => '#999988', :italic => true + style Error, :fg => '#a61717', :bg => '#e3d2d2' + style Generic::Deleted, :fg => '#000000', :bg => '#ffdddd' + style Generic::Emph, :fg => '#000000', :italic => true + style Generic::Error, :fg => '#aa0000' + style Generic::Heading, :fg => '#999999' + style Generic::Inserted, :fg => '#000000', :bg => '#ddffdd' + style Generic::Output, :fg => '#888888' + style Generic::Prompt, :fg => '#555555' + style Generic::Strong, :bold => true + style Generic::Subheading, :fg => '#aaaaaa' + style Generic::Traceback, :fg => '#aa0000' + style Keyword::Constant, :fg => '#000000', :bold => true + style Keyword::Declaration, :fg => '#000000', :bold => true + style Keyword::Namespace, :fg => '#000000', :bold => true + style Keyword::Pseudo, :fg => '#000000', :bold => true + style Keyword::Reserved, :fg => '#000000', :bold => true + style Keyword::Type, :fg => '#445588', :bold => true + style Keyword, :fg => '#000000', :bold => true + style Literal::Number::Float, :fg => '#009999' + style Literal::Number::Hex, :fg => '#009999' + style Literal::Number::Integer::Long, :fg => '#009999' + style Literal::Number::Integer, :fg => '#009999' + style Literal::Number::Oct, :fg => '#009999' + style Literal::Number, :fg => '#009999' + style Literal::String::Backtick, :fg => '#d14' + style Literal::String::Char, :fg => '#d14' + style Literal::String::Doc, :fg => '#d14' + style Literal::String::Double, :fg => '#d14' + style Literal::String::Escape, :fg => '#d14' + style Literal::String::Heredoc, :fg => '#d14' + style Literal::String::Interpol, :fg => '#d14' + style Literal::String::Other, :fg => '#d14' + style Literal::String::Regex, :fg => '#009926' + style Literal::String::Single, :fg => '#d14' + style Literal::String::Symbol, :fg => '#990073' + style Literal::String, :fg => '#d14' + style Name::Attribute, :fg => '#008080' + style Name::Builtin::Pseudo, :fg => '#999999' + style Name::Builtin, :fg => '#0086B3' + style Name::Class, :fg => '#445588', :bold => true + style Name::Constant, :fg => '#008080' + style Name::Decorator, :fg => '#3c5d5d', :bold => true + style Name::Entity, :fg => '#800080' + style Name::Exception, :fg => '#990000', :bold => true + style Name::Function, :fg => '#990000', :bold => true + style Name::Label, :fg => '#990000', :bold => true + style Name::Namespace, :fg => '#555555' + style Name::Tag, :fg => '#000080' + style Name::Variable::Class, :fg => '#008080' + style Name::Variable::Global, :fg => '#008080' + style Name::Variable::Instance, :fg => '#008080' + style Name::Variable, :fg => '#008080' + style Operator::Word, :fg => '#000000', :bold => true + style Operator, :fg => '#000000', :bold => true + style Text::Whitespace, :fg => '#bbbbbb' + style Text, :bg => '#f8f8f8' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/gruvbox.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/gruvbox.rb new file mode 100644 index 0000000000..25cd123a0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/gruvbox.rb @@ -0,0 +1,168 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +# TODO how are we going to handle soft/hard contrast? + +module Rouge + module Themes + # Based on https://github.com/morhetz/gruvbox, with help from + # https://github.com/daveyarwood/gruvbox-pygments + class Gruvbox < CSSTheme + name 'gruvbox' + + # global Gruvbox colours {{{ + C_dark0_hard = '#1d2021' + C_dark0 ='#282828' + C_dark0_soft = '#32302f' + C_dark1 = '#3c3836' + C_dark2 = '#504945' + C_dark3 = '#665c54' + C_dark4 = '#7c6f64' + C_dark4_256 = '#7c6f64' + + C_gray_245 = '#928374' + C_gray_244 = '#928374' + + C_light0_hard = '#f9f5d7' + C_light0 = '#fbf1c7' + C_light0_soft = '#f2e5bc' + C_light1 = '#ebdbb2' + C_light2 = '#d5c4a1' + C_light3 = '#bdae93' + C_light4 = '#a89984' + C_light4_256 = '#a89984' + + C_bright_red = '#fb4934' + C_bright_green = '#b8bb26' + C_bright_yellow = '#fabd2f' + C_bright_blue = '#83a598' + C_bright_purple = '#d3869b' + C_bright_aqua = '#8ec07c' + C_bright_orange = '#fe8019' + + C_neutral_red = '#cc241d' + C_neutral_green = '#98971a' + C_neutral_yellow = '#d79921' + C_neutral_blue = '#458588' + C_neutral_purple = '#b16286' + C_neutral_aqua = '#689d6a' + C_neutral_orange = '#d65d0e' + + C_faded_red = '#9d0006' + C_faded_green = '#79740e' + C_faded_yellow = '#b57614' + C_faded_blue = '#076678' + C_faded_purple = '#8f3f71' + C_faded_aqua = '#427b58' + C_faded_orange = '#af3a03' + # }}} + + extend HasModes + + def self.light! + mode :dark # indicate that there is a dark variant + mode! :light + end + + def self.dark! + mode :light # indicate that there is a light variant + mode! :dark + end + + def self.make_dark! + palette bg0: C_dark0 + palette bg1: C_dark1 + palette bg2: C_dark2 + palette bg3: C_dark3 + palette bg4: C_dark4 + + palette gray: C_gray_245 + + palette fg0: C_light0 + palette fg1: C_light1 + palette fg2: C_light2 + palette fg3: C_light3 + palette fg4: C_light4 + + palette fg4_256: C_light4_256 + + palette red: C_bright_red + palette green: C_bright_green + palette yellow: C_bright_yellow + palette blue: C_bright_blue + palette purple: C_bright_purple + palette aqua: C_bright_aqua + palette orange: C_bright_orange + + end + + def self.make_light! + palette bg0: C_light0 + palette bg1: C_light1 + palette bg2: C_light2 + palette bg3: C_light3 + palette bg4: C_light4 + + palette gray: C_gray_244 + + palette fg0: C_dark0 + palette fg1: C_dark1 + palette fg2: C_dark2 + palette fg3: C_dark3 + palette fg4: C_dark4 + + palette fg4_256: C_dark4_256 + + palette red: C_faded_red + palette green: C_faded_green + palette yellow: C_faded_yellow + palette blue: C_faded_blue + palette purple: C_faded_purple + palette aqua: C_faded_aqua + palette orange: C_faded_orange + end + + dark! + mode :light + + style Text, :fg => :fg0, :bg => :bg0 + style Error, :fg => :red, :bg => :bg0, :bold => true + style Comment, :fg => :gray, :italic => true + + style Comment::Preproc, :fg => :aqua + + style Name::Tag, :fg => :red + + style Operator, + Punctuation, :fg => :fg0 + + style Generic::Inserted, :fg => :green, :bg => :bg0 + style Generic::Deleted, :fg => :red, :bg => :bg0 + style Generic::Heading, :fg => :green, :bold => true + + style Keyword, :fg => :red + style Keyword::Constant, :fg => :purple + style Keyword::Type, :fg => :yellow + + style Keyword::Declaration, :fg => :orange + + style Literal::String, + Literal::String::Interpol, + Literal::String::Regex, :fg => :green, :italic => true + + style Literal::String::Escape, :fg => :orange + + style Name::Namespace, + Name::Class, :fg => :aqua + + style Name::Constant, :fg => :purple + + style Name::Attribute, :fg => :green + + style Literal::Number, :fg => :purple + + style Literal::String::Symbol, :fg => :blue + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/igor_pro.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/igor_pro.rb new file mode 100644 index 0000000000..adc53a2506 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/igor_pro.rb @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class IgorPro < CSSTheme + name 'igorpro' + + style Text, :fg => '#444444' + style Comment::Preproc, :fg => '#CC00A3' + style Comment::Special, :fg => '#CC00A3' + style Comment, :fg => '#FF0000' + style Keyword::Constant, :fg => '#C34E00' + style Keyword::Declaration, :fg => '#0000FF' + style Keyword::Reserved, :fg => '#007575' + style Keyword, :fg => '#0000FF' + style Literal::String, :fg => '#009C00' + style Name::Builtin, :fg => '#C34E00' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/molokai.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/molokai.rb new file mode 100644 index 0000000000..119422f29c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/molokai.rb @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class Molokai < CSSTheme + name 'molokai' + + palette :black => '#1b1d1e' + palette :white => '#f8f8f2' + palette :blue => '#66d9ef' + palette :green => '#a6e22e' + palette :grey => '#403d3d' + palette :red => '#f92672' + palette :light_grey => '#465457' + palette :dark_blue => '#5e5d83' + palette :violet => '#af87ff' + palette :yellow => '#d7d787' + + style Comment, + Comment::Multiline, + Comment::Single, :fg => :dark_blue, :italic => true + style Comment::Preproc, :fg => :light_grey, :bold => true + style Comment::Special, :fg => :light_grey, :italic => true, :bold => true + style Error, :fg => :white, :bg => :grey + style Generic::Inserted, :fg => :green + style Generic::Deleted, :fg => :red + style Generic::Emph, :fg => :black, :italic => true + style Generic::Error, + Generic::Traceback, :fg => :red + style Generic::Heading, :fg => :grey + style Generic::Output, :fg => :grey + style Generic::Prompt, :fg => :blue + style Generic::Strong, :bold => true + style Generic::Subheading, :fg => :light_grey + style Keyword, + Keyword::Constant, + Keyword::Declaration, + Keyword::Pseudo, + Keyword::Reserved, + Keyword::Type, :fg => :blue, :bold => true + style Keyword::Namespace, + Operator::Word, + Operator, :fg => :red, :bold => true + style Literal::Number::Float, + Literal::Number::Hex, + Literal::Number::Integer::Long, + Literal::Number::Integer, + Literal::Number::Oct, + Literal::Number, + Literal::String::Escape, :fg => :violet + style Literal::String::Backtick, + Literal::String::Char, + Literal::String::Doc, + Literal::String::Double, + Literal::String::Heredoc, + Literal::String::Interpol, + Literal::String::Other, + Literal::String::Regex, + Literal::String::Single, + Literal::String::Symbol, + Literal::String, :fg => :yellow + style Name::Attribute, :fg => :green + style Name::Class, + Name::Decorator, + Name::Exception, + Name::Function, :fg => :green, :bold => true + style Name::Constant, :fg => :blue + style Name::Builtin::Pseudo, + Name::Builtin, + Name::Entity, + Name::Namespace, + Name::Variable::Class, + Name::Variable::Global, + Name::Variable::Instance, + Name::Variable, + Text::Whitespace, :fg => :white + style Name::Label, :fg => :white, :bold => true + style Name::Tag, :fg => :red + style Text, :fg => :white, :bg => :black + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai.rb new file mode 100644 index 0000000000..e230d609b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai.rb @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class Monokai < CSSTheme + name 'monokai' + + palette :black => '#000000' + palette :bright_green => '#a6e22e' + palette :bright_pink => '#f92672' + palette :carmine => '#960050' + palette :dark => '#49483e' + palette :dark_grey => '#888888' + palette :dark_red => '#aa0000' + palette :dimgrey => '#75715e' + palette :dimgreen => '#324932' + palette :dimred => '#493131' + palette :emperor => '#555555' + palette :grey => '#999999' + palette :light_grey => '#aaaaaa' + palette :light_violet => '#ae81ff' + palette :soft_cyan => '#66d9ef' + palette :soft_yellow => '#e6db74' + palette :very_dark => '#1e0010' + palette :whitish => '#f8f8f2' + palette :orange => '#f6aa11' + palette :white => '#ffffff' + + style Comment, + Comment::Multiline, + Comment::Single, :fg => :dimgrey, :italic => true + style Comment::Preproc, :fg => :dimgrey, :bold => true + style Comment::Special, :fg => :dimgrey, :italic => true, :bold => true + style Error, :fg => :carmine, :bg => :very_dark + style Generic::Inserted, :fg => :white, :bg => :dimgreen + style Generic::Deleted, :fg => :white, :bg => :dimred + style Generic::Emph, :fg => :black, :italic => true + style Generic::Error, + Generic::Traceback, :fg => :dark_red + style Generic::Heading, :fg => :grey + style Generic::Output, :fg => :dark_grey + style Generic::Prompt, :fg => :emperor + style Generic::Strong, :bold => true + style Generic::Subheading, :fg => :light_grey + style Keyword, + Keyword::Constant, + Keyword::Declaration, + Keyword::Pseudo, + Keyword::Reserved, + Keyword::Type, :fg => :soft_cyan, :bold => true + style Keyword::Namespace, + Operator::Word, + Operator, :fg => :bright_pink, :bold => true + style Literal::Number::Float, + Literal::Number::Hex, + Literal::Number::Integer::Long, + Literal::Number::Integer, + Literal::Number::Oct, + Literal::Number, + Literal::String::Escape, :fg => :light_violet + style Literal::String::Backtick, + Literal::String::Char, + Literal::String::Doc, + Literal::String::Double, + Literal::String::Heredoc, + Literal::String::Interpol, + Literal::String::Other, + Literal::String::Regex, + Literal::String::Single, + Literal::String::Symbol, + Literal::String, :fg => :soft_yellow + style Name::Attribute, :fg => :bright_green + style Name::Class, + Name::Decorator, + Name::Exception, + Name::Function, :fg => :bright_green, :bold => true + style Name::Constant, :fg => :soft_cyan + style Name::Builtin::Pseudo, + Name::Builtin, + Name::Entity, + Name::Namespace, + Name::Variable::Class, + Name::Variable::Global, + Name::Variable::Instance, + Name::Variable, + Text::Whitespace, :fg => :whitish + style Name::Label, :fg => :whitish, :bold => true + style Name::Tag, :fg => :bright_pink + style Text, :fg => :whitish, :bg => :dark + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai_sublime.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai_sublime.rb new file mode 100644 index 0000000000..bbecbf3f2d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/monokai_sublime.rb @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class MonokaiSublime < CSSTheme + name 'monokai.sublime' + + palette :black => '#000000' + palette :bright_green => '#a6e22e' + palette :bright_pink => '#f92672' + palette :carmine => '#960050' + palette :dark => '#49483e' + palette :dark_grey => '#888888' + palette :dark_red => '#aa0000' + palette :dimgrey => '#75715e' + palette :emperor => '#555555' + palette :grey => '#999999' + palette :light_grey => '#aaaaaa' + palette :light_violet => '#ae81ff' + palette :soft_cyan => '#66d9ef' + palette :soft_yellow => '#e6db74' + palette :very_dark => '#1e0010' + palette :whitish => '#f8f8f2' + palette :orange => '#f6aa11' + palette :white => '#ffffff' + + style Generic::Heading, :fg => :grey + style Literal::String::Regex, :fg => :orange + style Generic::Output, :fg => :dark_grey + style Generic::Prompt, :fg => :emperor + style Generic::Strong, :bold => false + style Generic::Subheading, :fg => :light_grey + style Name::Builtin, :fg => :orange + style Comment::Multiline, + Comment::Preproc, + Comment::Single, + Comment::Special, + Comment, :fg => :dimgrey + style Error, + Generic::Error, + Generic::Traceback, :fg => :carmine + style Generic::Deleted, + Generic::Inserted, + Generic::Emph, :fg => :dark + style Keyword::Constant, + Keyword::Declaration, + Keyword::Reserved, + Name::Constant, + Keyword::Type, :fg => :soft_cyan + style Literal::Number::Float, + Literal::Number::Hex, + Literal::Number::Integer::Long, + Literal::Number::Integer, + Literal::Number::Oct, + Literal::Number, + Literal::String::Char, + Literal::String::Escape, + Literal::String::Symbol, :fg => :light_violet + style Literal::String::Doc, + Literal::String::Double, + Literal::String::Backtick, + Literal::String::Heredoc, + Literal::String::Interpol, + Literal::String::Other, + Literal::String::Single, + Literal::String, :fg => :soft_yellow + style Name::Attribute, + Name::Class, + Name::Decorator, + Name::Exception, + Name::Function, :fg => :bright_green + style Name::Variable::Class, + Name::Namespace, + Name::Label, + Name::Entity, + Name::Builtin::Pseudo, + Name::Variable::Global, + Name::Variable::Instance, + Name::Variable, + Text::Whitespace, + Text, + Name, :fg => :white + style Operator::Word, + Name::Tag, + Keyword, + Keyword::Namespace, + Keyword::Pseudo, + Operator, :fg => :bright_pink + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/pastie.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/pastie.rb new file mode 100644 index 0000000000..c297d163e1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/pastie.rb @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + # A port of the pastie style from Pygments. + # See https://bitbucket.org/birkenfeld/pygments-main/src/default/pygments/styles/pastie.py + class Pastie < CSSTheme + name 'pastie' + + style Comment, :fg => '#888888' + style Comment::Preproc, :fg => '#cc0000', :bold => true + style Comment::Special, :fg => '#cc0000', :bg => '#fff0f0', :bold => true + + style Error, :fg => '#a61717', :bg => '#e3d2d2' + style Generic::Error, :fg => '#aa0000' + + style Generic::Heading, :fg => '#333333' + style Generic::Subheading, :fg => '#666666' + + style Generic::Deleted, :fg => '#000000', :bg => '#ffdddd' + style Generic::Inserted, :fg => '#000000', :bg => '#ddffdd' + + style Generic::Emph, :italic => true + style Generic::Strong, :bold => true + + style Generic::Lineno, :fg => '#888888' + style Generic::Output, :fg => '#888888' + style Generic::Prompt, :fg => '#555555' + style Generic::Traceback, :fg => '#aa0000' + + style Keyword, :fg => '#008800', :bold => true + style Keyword::Pseudo, :fg => '#008800' + style Keyword::Type, :fg => '#888888', :bold => true + + style Num, :fg => '#0000dd', :bold => true + + style Str, :fg => '#dd2200', :bg => '#fff0f0' + style Str::Escape, :fg => '#0044dd', :bg => '#fff0f0' + style Str::Interpol, :fg => '#3333bb', :bg => '#fff0f0' + style Str::Other, :fg => '#22bb22', :bg => '#f0fff0' + #style Str::Regex, :fg => '#008800', :bg => '#fff0ff' + # The background color on regex really doesn't look good, so let's drop it + style Str::Regex, :fg => '#008800' + style Str::Symbol, :fg => '#aa6600', :bg => '#fff0f0' + + style Name::Attribute, :fg => '#336699' + style Name::Builtin, :fg => '#003388' + style Name::Class, :fg => '#bb0066', :bold => true + style Name::Constant, :fg => '#003366', :bold => true + style Name::Decorator, :fg => '#555555' + style Name::Exception, :fg => '#bb0066', :bold => true + style Name::Function, :fg => '#0066bb', :bold => true + #style Name::Label, :fg => '#336699', :italic => true + # Name::Label is used for built-in CSS properties in Rouge, so let's drop italics + style Name::Label, :fg => '#336699' + style Name::Namespace, :fg => '#bb0066', :bold => true + style Name::Property, :fg => '#336699', :bold => true + style Name::Tag, :fg => '#bb0066', :bold => true + style Name::Variable, :fg => '#336699' + style Name::Variable::Global, :fg => '#dd7700' + style Name::Variable::Instance, :fg => '#3333bb' + + style Operator::Word, :fg => '#008800' + + style Text, {} + style Text::Whitespace, :fg => '#bbbbbb' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/thankful_eyes.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/thankful_eyes.rb new file mode 100644 index 0000000000..f0b5aa77fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/thankful_eyes.rb @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class ThankfulEyes < CSSTheme + name 'thankful_eyes' + + # pallette, from GTKSourceView's ThankfulEyes + palette :cool_as_ice => '#6c8b9f' + palette :slate_blue => '#4e5d62' + palette :eggshell_cloud => '#dee5e7' + palette :krasna => '#122b3b' + palette :aluminum1 => '#fefeec' + palette :scarletred2 => '#cc0000' + palette :butter3 => '#c4a000' + palette :go_get_it => '#b2fd6d' + palette :chilly => '#a8e1fe' + palette :unicorn => '#faf6e4' + palette :sandy => '#f6dd62' + palette :pink_merengue => '#f696db' + palette :dune => '#fff0a6' + palette :backlit => '#4df4ff' + palette :schrill => '#ffb000' + + style Text, :fg => :unicorn, :bg => :krasna + style Generic::Lineno, :fg => :eggshell_cloud, :bg => :slate_blue + + style Generic::Prompt, :fg => :chilly, :bold => true + + style Comment, :fg => :cool_as_ice, :italic => true + style Comment::Preproc, :fg => :go_get_it, :bold => true, :italic => true + style Error, :fg => :aluminum1, :bg => :scarletred2 + style Generic::Error, :fg => :scarletred2, :italic => true, :bold => true + style Keyword, :fg => :sandy, :bold => true + style Operator, :fg => :backlit, :bold => true + style Punctuation, :fg => :backlit + style Generic::Deleted, :fg => :scarletred2 + style Generic::Inserted, :fg => :go_get_it + style Generic::Emph, :italic => true + style Generic::Strong, :bold => true + style Generic::Traceback, :fg => :eggshell_cloud, :bg => :slate_blue + style Keyword::Constant, :fg => :pink_merengue, :bold => true + style Keyword::Namespace, + Keyword::Pseudo, + Keyword::Reserved, + Generic::Heading, + Generic::Subheading, :fg => :schrill, :bold => true + style Keyword::Type, + Name::Constant, + Name::Class, + Name::Decorator, + Name::Namespace, + Name::Builtin::Pseudo, + Name::Exception, :fg => :go_get_it, :bold => true + style Name::Label, + Name::Tag, :fg => :schrill, :bold => true + style Literal::Number, + Literal::Date, + Literal::String::Symbol, :fg => :pink_merengue, :bold => true + style Literal::String, :fg => :dune, :bold => true + style Literal::String::Escape, + Literal::String::Char, + Literal::String::Interpol, :fg => :backlit, :bold => true + style Name::Builtin, :bold => true + style Name::Entity, :fg => '#999999', :bold => true + style Text::Whitespace, + Generic::Output, :fg => '#BBBBBB' + style Name::Function, + Name::Property, + Name::Attribute, :fg => :chilly + style Name::Variable, :fg => :chilly, :bold => true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/tulip.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/tulip.rb new file mode 100644 index 0000000000..90e0c7fb93 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/themes/tulip.rb @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + module Themes + class Tulip < CSSTheme + name 'tulip' + + palette :purple => '#766DAF' + palette :lpurple => '#9f93e6' + palette :orange => '#FAAF4C' + palette :green => '#3FB34F' + palette :lgreen => '#41ff5b' + palette :yellow => '#FFF02A' + palette :black => '#000000' + palette :gray => '#6D6E70' + palette :red => '#CC0000' + palette :dark_purple => '#231529' + palette :lunicorn => '#faf8ed' + palette :white => '#FFFFFF' + palette :earth => '#181a27' + palette :dune => '#fff0a6' + + style Text, :fg => :white, :bg => :dark_purple + + style Comment, :fg => :gray, :italic => true + style Comment::Preproc, :fg => :lgreen, :bold => true, :italic => true + style Error, + Generic::Error, :fg => :white, :bg => :red + style Keyword, :fg => :yellow, :bold => true + style Operator, + Punctuation, :fg => :lgreen + style Generic::Deleted, :fg => :red + style Generic::Inserted, :fg => :green + style Generic::Emph, :italic => true + style Generic::Strong, :bold => true + style Generic::Traceback, + Generic::Lineno, :fg => :white, :bg => :purple + style Keyword::Constant, :fg => :lpurple, :bold => true + style Keyword::Namespace, + Keyword::Pseudo, + Keyword::Reserved, + Generic::Heading, + Generic::Subheading, :fg => :white, :bold => true + style Keyword::Type, + Name::Constant, + Name::Class, + Name::Decorator, + Name::Namespace, + Name::Builtin::Pseudo, + Name::Exception, :fg => :orange, :bold => true + style Name::Label, + Name::Tag, :fg => :lpurple, :bold => true + style Literal::Number, + Literal::Date, + Literal::String::Symbol, :fg => :lpurple, :bold => true + style Literal::String, :fg => :dune, :bold => true + style Literal::String::Escape, + Literal::String::Char, + Literal::String::Interpol, :fg => :orange, :bold => true + style Name::Builtin, :bold => true + style Name::Entity, :fg => '#999999', :bold => true + style Text::Whitespace, :fg => '#BBBBBB' + style Name::Function, + Name::Property, + Name::Attribute, :fg => :lgreen + style Name::Variable, :fg => :lgreen, :bold => true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/token.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/token.rb new file mode 100644 index 0000000000..110b054703 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/token.rb @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + class Token + class << self + attr_reader :name + attr_reader :parent + attr_reader :shortname + + def cache + @cache ||= {} + end + + def sub_tokens + @sub_tokens ||= {} + end + + def [](qualname) + return qualname unless qualname.is_a? ::String + + Token.cache[qualname] + end + + def inspect + "" + end + + def matches?(other) + other.token_chain.include? self + end + + def token_chain + @token_chain ||= ancestors.take_while { |x| x != Token }.reverse + end + + def qualname + @qualname ||= token_chain.map(&:name).join('.') + end + + def register! + Token.cache[self.qualname] = self + parent.sub_tokens[self.name] = self + end + + def make_token(name, shortname, &b) + parent = self + Class.new(parent) do + @parent = parent + @name = name + @shortname = shortname + register! + class_eval(&b) if b + end + end + + def token(name, shortname, &b) + tok = make_token(name, shortname, &b) + const_set(name, tok) + end + + def each_token(&b) + Token.cache.each do |(_, t)| + b.call(t) + end + end + end + + module Tokens + def self.token(name, shortname, &b) + tok = Token.make_token(name, shortname, &b) + const_set(name, tok) + end + + # XXX IMPORTANT XXX + # For compatibility, this list must be kept in sync with + # pygments.token.STANDARD_TYPES + # please see https://github.com/jneen/rouge/wiki/List-of-tokens + token :Text, '' do + token :Whitespace, 'w' + end + + token :Error, 'err' + token :Other, 'x' + + token :Keyword, 'k' do + token :Constant, 'kc' + token :Declaration, 'kd' + token :Namespace, 'kn' + token :Pseudo, 'kp' + token :Reserved, 'kr' + token :Type, 'kt' + token :Variable, 'kv' + end + + token :Name, 'n' do + token :Attribute, 'na' + token :Builtin, 'nb' do + token :Pseudo, 'bp' + end + token :Class, 'nc' + token :Constant, 'no' + token :Decorator, 'nd' + token :Entity, 'ni' + token :Exception, 'ne' + token :Function, 'nf' + token :Property, 'py' + token :Label, 'nl' + token :Namespace, 'nn' + token :Other, 'nx' + token :Tag, 'nt' + token :Variable, 'nv' do + token :Class, 'vc' + token :Global, 'vg' + token :Instance, 'vi' + end + end + + token :Literal, 'l' do + token :Date, 'ld' + + token :String, 's' do + token :Backtick, 'sb' + token :Char, 'sc' + token :Doc, 'sd' + token :Double, 's2' + token :Escape, 'se' + token :Heredoc, 'sh' + token :Interpol, 'si' + token :Other, 'sx' + token :Regex, 'sr' + token :Single, 's1' + token :Symbol, 'ss' + end + + token :Number, 'm' do + token :Float, 'mf' + token :Hex, 'mh' + token :Integer, 'mi' do + token :Long, 'il' + end + token :Oct, 'mo' + token :Bin, 'mb' + token :Other, 'mx' + end + end + + token :Operator, 'o' do + token :Word, 'ow' + end + + token :Punctuation, 'p' do + token :Indicator, 'pi' + end + + token :Comment, 'c' do + token :Doc, 'cd' + token :Multiline, 'cm' + token :Preproc, 'cp' + token :Single, 'c1' + token :Special, 'cs' + end + + token :Generic, 'g' do + token :Deleted, 'gd' + token :Emph, 'ge' + token :Error, 'gr' + token :Heading, 'gh' + token :Inserted, 'gi' + token :Output, 'go' + token :Prompt, 'gp' + token :Strong, 'gs' + token :Subheading, 'gu' + token :Traceback, 'gt' + token :Lineno, 'gl' + end + + # convenience + Num = Literal::Number + Str = Literal::String + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/util.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/util.rb new file mode 100644 index 0000000000..124cda8e96 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/util.rb @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + class InheritableHash < Hash + def initialize(parent=nil) + @parent = parent + end + + def [](k) + value = super + return value if own_keys.include?(k) + + value || parent[k] + end + + def parent + @parent ||= {} + end + + def include?(k) + super or parent.include?(k) + end + + def each(&b) + keys.each do |k| + b.call(k, self[k]) + end + end + + alias own_keys keys + def keys + keys = own_keys.concat(parent.keys) + keys.uniq! + keys + end + end + + class InheritableList + include Enumerable + + def initialize(parent=nil) + @parent = parent + end + + def parent + @parent ||= [] + end + + def each(&b) + return enum_for(:each) unless block_given? + + parent.each(&b) + own_entries.each(&b) + end + + def own_entries + @own_entries ||= [] + end + + def push(o) + own_entries << o + end + alias << push + end + + # shared methods for some indentation-sensitive lexers + module Indentation + def reset! + super + @block_state = @block_indentation = nil + end + + # push a state for the next indented block + def starts_block(block_state) + @block_state = block_state + @block_indentation = @last_indentation || '' + puts " starts_block #{block_state.inspect}" if @debug + puts " block_indentation: #{@block_indentation.inspect}" if @debug + end + + # handle a single indented line + def indentation(indent_str) + puts " indentation #{indent_str.inspect}" if @debug + puts " block_indentation: #{@block_indentation.inspect}" if @debug + @last_indentation = indent_str + + # if it's an indent and we know where to go next, + # push that state. otherwise, push content and + # clear the block state. + if (@block_state && + indent_str.start_with?(@block_indentation) && + indent_str != @block_indentation + ) + push @block_state + else + @block_state = @block_indentation = nil + push :content + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/version.rb b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/version.rb new file mode 100644 index 0000000000..8b5337ce42 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/lib/rouge/version.rb @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- # +# frozen_string_literal: true + +module Rouge + def self.version + "3.3.0" + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/rouge.gemspec b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/rouge.gemspec new file mode 100644 index 0000000000..64f5288b5f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/rouge-3.3.0/rouge.gemspec @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require './lib/rouge/version' + +Gem::Specification.new do |s| + s.name = "rouge" + s.version = Rouge.version + s.authors = ["Jeanine Adkisson"] + s.email = ["jneen@jneen.net"] + s.summary = "A pure-ruby colorizer based on pygments" + s.description = <<-desc.strip.gsub(/\s+/, ' ') + Rouge aims to a be a simple, easy-to-extend drop-in replacement + for pygments. + desc + s.homepage = "http://rouge.jneen.net/" + s.rubyforge_project = "rouge" + s.files = Dir['Gemfile', 'LICENSE', 'rouge.gemspec', 'lib/**/*.rb', 'lib/**/*.yml', 'bin/rougify', 'lib/rouge/demos/*'] + s.executables = %w(rougify) + s.licenses = ['MIT', 'BSD-2-Clause'] + s.required_ruby_version = '>= 2.0' + s.metadata = { + 'source_code_uri' => 'https://github.com/jneen/rouge', + 'changelog_uri' => 'https://github.com/jneen/rouge/blob/master/CHANGELOG.md' + } +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.gitignore b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.gitignore new file mode 100644 index 0000000000..e47bde0c88 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.gitignore @@ -0,0 +1,10 @@ +/.bundle/ +/.yardoc +/Gemfile.lock +/_yardoc/ +/coverage/ +/doc/ +/pkg/ +/spec/reports/ +/tmp/ +spec/examples.txt diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rspec b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rspec new file mode 100644 index 0000000000..34c5164d9b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rspec @@ -0,0 +1,3 @@ +--format documentation +--color +--require spec_helper diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rubocop.yml b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rubocop.yml new file mode 100644 index 0000000000..7c9ecf66d4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.rubocop.yml @@ -0,0 +1,3 @@ +Style/Documentation: + Description: Document classes and non-namespace modules. + Enabled: false diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.travis.yml new file mode 100644 index 0000000000..67acebd8f0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/.travis.yml @@ -0,0 +1,11 @@ +sudo: false +language: ruby +bundler_args: --without development +env: JRUBY_OPTS='--server -Xcompile.invokedynamic=false' +rvm: + - 2.2.5 + - 2.3.1 + - jruby-9.1.2.0 + +before_install: gem install bundler -v 1.12.5 +cache: bundler diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/LICENSE.txt new file mode 100644 index 0000000000..c2c0cc1982 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Cezary Baginski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/README.md b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/README.md new file mode 100644 index 0000000000..ebfe525fee --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/README.md @@ -0,0 +1,197 @@ +# RubyDep + +[![Gem Version](https://img.shields.io/gem/v/ruby_dep.svg?style=flat)](https://rubygems.org/gems/ruby_dep) [![Build Status](https://travis-ci.org/e2/ruby_dep.svg)](https://travis-ci.org/e2/ruby_dep) + +Avoid incompatible, slower, buggier and insecure Ruby versions. + +## IMPORTANT!! : HOW TO CORRECTLY SOLVE ISSUES + +If you're here because you're having issues, try the following: + +## 1. Upgrade Ruby. + +Ideally to the latest stable possible. It may be a little (or very!) inconvenient, but it helps everyone in the long run. + +Show the awesome Ruby Core Team your support for their work by letting them focus on newer and better Rubies. + +## 2. Upgrade Ruby anyway. + +If you can't upgrade Ruby because of the environment, work out how to do so anyway. + +E.g. if you can't install Ruby 2.2.5 on OSX due to RVM issues (even though Ruby 2.2.5 has been released over 5 months ago), then obviously the RVM project may need help or support of some kind. Help the RVM maintainers out - they're awesome! Or, fork the project and heroically take things into your own hands. + +If Apple (or Amazon or whatever hosting service or company) doesn't provide the latest recommended, supported version of Ruby, use Homebrew (or build from sources) or complain to those companies to provide support. It's unfair for them to prevent users from getting better/faster Rubies. + +## 3. Upgrade Bundler (but even the most recent Bundler may not be enough!) + +Upgrade to a Bundler version that can automatically downgrade the gems for you. If that doesn't help, try this workaround: https://github.com/guard/listen/wiki/Ruby-version-requirements + +Work on this "downgrading" feature in Bundler is ongoing, so the best version of Bundler for the job may still be an unreleased version (beta, release candidate, etc.). + +Help the Bundler team out if you can - they're awesome! + +## 4. If all else fails, learn SemVer and USE IT! + +Often, there are older versions of gems that support the Ruby version you need. See http://semver.org/ on how to set version constraints. Then, check out the release notes of the gems you need to know what you're getting (or missing out on). + +E.g. You can downgrade to RubyDep 1.3.1 (`gem 'ruby_dep', '~> 1.3.1'`) which allows using Ruby 2.2.4 +E.g. Or, You can use Listen 3.0.x (`gem 'listen', '~> 3.0.8'`) to avoid dealing with RubyDep and Listen. + +If those gem versions are lacking for any reason (e.g. bugs in Listen 3.0.x fixed in 3.1.x), then e.g. open a request for backporting changes to the 3.0.x branch. + +The idea: if you don't need the latest Ruby ... then you probably don't need the latest of every gem either. + +## 5. If all that isn't possible or it doesn't work ... + +Let me know about it (open an issue), because I'm likely confused about how all the above steps failed. + +Or it's a bug I don't know about. Please report it - just in case... + + +## Description + +RubyDep does 2 things right now: + +1. Helps end users avoid incompatible, buggy and insecure Ruby versions. +2. Helps gem owners manage their gem's `required_ruby_version` gemspec field based on `.travis.yml`. + +## Quick info + +- if you want to know how to disable the warnings, see here: https://github.com/e2/ruby_dep/wiki/Disabling-warnings +- for a list of Ruby versions that can be used to install ruby_dep, see here: https://travis-ci.org/e2/ruby_dep +- if your version of Ruby is not supported, open a new issue and explain your situation/problem +- when in doubt, open a new issue or [read the FAQ on the Wiki](https://github.com/e2/ruby_dep/wiki/FAQ). +- gems using RubyDep are designed to not be installable on a given Ruby version, unless it's specifically declared supported by those gems - but it's ok to ask for supporting your Ruby if you're stuck on an older version (for whatever reason) +- discussions about Ruby versions can get complex and frustrating - please be patient and constructive, and open-minded about solutions - especially if you're having problems + + +## Supported Ruby versions: + +NOTE: RubyDep uses it's own approach on itself. This means it can only be installed on Ruby versions tested here: [check out the Travis build status](https://travis-ci.org/e2/ruby_dep). If you need support for an different/older version of Ruby, open an issue with "backport" in the title and provide a compelling case for supporting the version of Ruby you need. + +## Problem 1: "Which version of Ruby does your project support?" + +Your gem shouldn't (and likely doesn't) support all possible Ruby versions. + +So you have to tell users which versions your gem supports. + +But, there are at least 3 places where you list the Rubies you support: + +1. Your gemspec +2. Your README +3. Your .travis.yml file + +That breaks the principle of single responsibility. + +Is it possible to just list the supported Rubies in just one place? + +Yes. That's what RubyDep helps with. + +## Solution to problem 1 + +Since Travis doesn't allow generated `.travis.yml` files, option 3 is the only choice. + +With RubyDep, your gemspec's `required_ruby_version` can be automatically set based on which Rubies you test your gem on. + +What about the README? Well, just insert a link to your Travis build status page! + +Example: do you want to know which Ruby versions RubyDep can be installed on? Just look here: https://travis-ci.org/e2/ruby_dep + +If you're running Travis builds on a Ruby you support (and it's not in the "allow failures" section), it means you support that version of Ruby, right? + +RubyDep intelligently creates a version constraint to encompass Rubies listed in your `.travis.yml`. + +## Usage (to solve Problem 1) + +### E.g. in your gemspec file: + +```ruby + begin + require "ruby_dep/travis" + s.required_ruby_version = RubyDep::Travis.new.version_constraint + rescue LoadError + abort "Install 'ruby_dep' gem before building this gem" + end + + s.add_development_dependency 'ruby_dep', '~> 1.1' +``` + +### In your `README.md`: + +Replace your mentions of "supported Ruby versions" and just insert a link to your Travis build status page. + +If users see their Ruby version "green" on Travis, they'll see those are the versions you support and test, right? + +(Or, you can link to your project's rubygems.org page where the required Ruby version is listed). + +### In your `.travis.yml`: + +To add a "supported Ruby", simply add it to the Travis build. + +To test a Ruby version, but not treat it as "supported", simply add that version to the `allowed_failures` section. + + +## Problem 2: Users don't know they're using an obsolete/buggy/insecure version of Ruby + +Users don't track news updates on https://ruby-lang.org, so they may not know their ruby has known bugs or even serious security vulnerabilities. + +And sometimes, that outdated/insecure Ruby is bundled by their operation system to begin with! + +## The solution to problem 2 + +RubyDep has a small "database" of Ruby versions with information about which are buggy and insecure. + +If you like, your gem can use RubyDep to show those warnings - to encourage users to upgrade and protect them from nasty bugs or bad security holes. + +This way, when most of the Ruby community has switched to newer versions, everyone can be more productive by having faster, more stable and more feature-rich tools. And less time will be wasted supporting obsolete versions that users simply don't know are worth upgrading. + +This also helps users understand that they should nudge their hosting providers, managers and package maintainers to provided up-to-date versions of Ruby to that everyone can benefit. + +### Usage (to solve Problem 2) + +In your gemspec: + +```ruby +s.add_runtime_dependency 'ruby_dep', '~> 1.1' +``` + +Somewhere in your library: + +```ruby +require 'ruby_dep/warnings' +RubyDep::Warning.show_warnings +ENV['RUBY_DEP_GEM_SILENCE_WARNINGS'] = '1' # to ignore repeating the warning if other gems use `ruby_dep` too +``` + +That way, as soon as there's a severe vulnerability discovered in Ruby (and RubyDep is updated), users will be notified quickly. + + +## Tips + +1. To disable warnings, just set the following environment variable: `RUBY_DEP_GEM_SILENCE_WARNINGS=1` +2. If you want to support a newer version of Ruby, just add it to your `.travis.yml` (e.g. ruby-2.3.1) +3. To support an earlier version of Ruby, add it to your `.travis.yml` and release a new gem version. +4. If you want to support a range of Rubies, include the whole range without gaps in minor version numbers (e.g. 2.0, 2.1, 2.2, 2.3) and ruby_dep will use the whole range. (If there's a gap, older versions will be considered "unsupported"). +5. If you want to drop support for a Ruby, remove it from the `.travis.yml` and just bump your gem's minor number (Yes! Bumping just the minor if fine according to SemVer). +5. If you just want to test a Ruby version (but not actually support it), put it into the `allow failures` part of your Travis build matrix. (ruby_dep ignores versions there). + +When in doubt, open an issue and just ask. + +## Roadmap + +Pull Requests are welcome. + +Plans include: reading supported Ruby from `.rubocop.yml` (`TargetRubyVersion` field). + + +## Development + +Use `rake` to run tests. + +## Contributing + +Bug reports and pull requests are welcome on GitHub at https://github.com/e2/ruby_dep. + +## License + +The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep.rb new file mode 100644 index 0000000000..0e20498317 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep.rb @@ -0,0 +1,2 @@ +require 'ruby_dep/version' +require 'ruby_dep/travis' diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/logger.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/logger.rb new file mode 100644 index 0000000000..4bfa14f1c3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/logger.rb @@ -0,0 +1,48 @@ +require 'logger' + +module RubyDep + def self.logger + @logger ||= stderr_logger + end + + def self.logger=(new_logger) + @logger = new_logger.nil? ? NullLogger.new : new_logger + end + + def self.stderr_logger + ::Logger.new(STDERR).tap do |logger| + logger.formatter = proc { |_,_,_,msg| "#{msg}\n" } + end + end + + # Shamelessly stolen from https://github.com/karafka/null-logger + class NullLogger + LOG_LEVELS = %w(unknown fatal error warn info debug).freeze + + def respond_to_missing?(method_name, include_private = false) + LOG_LEVELS.include?(method_name.to_s) || super + end + + def method_missing(method_name, *args, &block) + LOG_LEVELS.include?(method_name.to_s) ? nil : super + end + end + + # TODO: not used, but kept for the sake of SemVer + # TODO: remove in next major version + class Logger + def initialize(device, prefix) + @device = device + @prefix = prefix + ::RubyDep.logger.warn("The RubyDep::Logger class is deprecated") + end + + def warning(msg) + @device.puts @prefix + msg + end + + def notice(msg) + @device.puts @prefix + msg + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/quiet.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/quiet.rb new file mode 100644 index 0000000000..8445a832c2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/quiet.rb @@ -0,0 +1,3 @@ +require 'ruby_dep/warning' + +RubyDep::Warning.new.silence! diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/ruby_version.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/ruby_version.rb new file mode 100644 index 0000000000..da9acbcb9e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/ruby_version.rb @@ -0,0 +1,58 @@ + +module RubyDep + class RubyVersion + attr_reader :status # NOTE: monkey-patched by acceptance tests + attr_reader :version + attr_reader :engine + + def initialize(ruby_version, engine) + @engine = engine + @version = Gem::Version.new(ruby_version) + @status = detect_status + end + + def recognized? + info.any? + end + + def recommended(status) + current = Gem::Version.new(@version) + info.select do |key, value| + value == status && Gem::Version.new(key) > current + end.keys.reverse + end + + private + + VERSION_INFO = { + 'ruby' => { + '2.3.1' => :unknown, + '2.3.0' => :buggy, + '2.2.5' => :unknown, + '2.2.4' => :buggy, + '2.2.0' => :insecure, + '2.1.9' => :buggy, + '2.0.0' => :insecure + }, + + 'jruby' => { + '2.3.0' => :unknown, # jruby-9.1.2.0, jruby-9.1.0.0 + '2.2.3' => :buggy, # jruby-9.0.5.0 + '2.2.0' => :insecure + } + }.freeze + + def info + @info ||= VERSION_INFO[@engine] || {} + end + + def detect_status + return :untracked unless recognized? + + info.each do |ruby, status| + return status if @version >= Gem::Version.new(ruby) + end + :insecure + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis.rb new file mode 100644 index 0000000000..5176a5ae83 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis.rb @@ -0,0 +1,58 @@ +require 'yaml' + +require 'ruby_dep/travis/ruby_version' + +module RubyDep + class Travis + def version_constraint(filename = '.travis.yml') + yaml = YAML.load(IO.read(filename)) + versions = supported_versions(yaml) + + selected = versions_for_latest_major(versions) + lowest = lowest_supported(selected) + + ["~> #{lowest[0..1].join('.')}", ">= #{lowest.join('.')}"] + rescue RubyVersion::Error => ex + abort("RubyDep Error: #{ex.message}") + end + + private + + def versions_for_latest_major(versions) + by_major = versions.map do |x| + RubyVersion.new(x).segments[0..2] + end.group_by(&:first) + + last_supported_major = by_major.keys.sort.last + by_major[last_supported_major] + end + + def lowest_supported(versions) + selected = versions.sort.reverse! + grouped_by_minor = selected.group_by { |x| x[1] } + + lowest_minor = lowest_minor_without_skipping(grouped_by_minor) + grouped_by_minor[lowest_minor].sort.first + end + + def failable(yaml) + matrix = yaml.fetch('matrix', {}) + allowed = matrix.fetch('allow_failures', []) + allowed.map(&:values).flatten + end + + def supported_versions(yaml) + yaml['rvm'] - failable(yaml) + end + + def lowest_minor_without_skipping(grouped_by_minor) + minors = grouped_by_minor.keys.flatten + lowest = minors.shift + current = lowest + while (lower = minors.shift) + (current -= 1) == lower ? lowest = lower : break + end + lowest + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis/ruby_version.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis/ruby_version.rb new file mode 100644 index 0000000000..275aec4e74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/travis/ruby_version.rb @@ -0,0 +1,59 @@ +module RubyDep + class Travis + class RubyVersion + REGEXP = /^ + (?: + (?ruby|jruby) + -)? + (?\d+\.\d+\.\d+(?:\.\d+)?) + (?:-p\d+)? + (?:-clang)? + $/x + + class Error < RuntimeError + class Unrecognized < Error + def initialize(invalid_version_string) + @invalid_version_string = invalid_version_string + end + + def message + "Unrecognized Ruby version: #{@invalid_version_string.inspect}" + end + + class JRubyVersion < Unrecognized + def message + "Unrecognized JRuby version: #{@invalid_version_string.inspect}" + end + end + end + end + + def initialize(travis_version_string) + ruby_version_string = version_for(travis_version_string) + @version = Gem::Version.new(ruby_version_string) + end + + def segments + @version.segments + end + + private + + def version_for(travis_version_string) + match = REGEXP.match(travis_version_string) + raise Error::Unrecognized, travis_version_string unless match + return match[:version] unless match[:engine] + return jruby_version(match[:version]) if match[:engine] == 'jruby' + match[:version] # if match[:engine] == 'ruby' + end + + def jruby_version(version) + return '2.3.0' if version == '9.1.2.0' + return '2.3.0' if version == '9.1.0.0' + return '2.2.3' if version == '9.0.5.0' + return '2.2.2' if version == '9.0.4.0' + raise Error::Unrecognized::JRubyVersion, version + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/version.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/version.rb new file mode 100644 index 0000000000..e1fc03d651 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/version.rb @@ -0,0 +1,3 @@ +module RubyDep + VERSION = '1.5.0'.freeze +end diff --git a/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/warning.rb b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/warning.rb new file mode 100644 index 0000000000..37883b2833 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/ruby_dep-1.5.0/lib/ruby_dep/warning.rb @@ -0,0 +1,98 @@ +require 'ruby_dep/logger' +require 'ruby_dep/ruby_version' + +module RubyDep + PROJECT_URL = 'http://github.com/e2/ruby_dep'.freeze + + class Warning + DISABLING_ENVIRONMENT_VAR = 'RUBY_DEP_GEM_SILENCE_WARNINGS'.freeze + PREFIX = 'RubyDep: WARNING: '.freeze + + WARNING = { + insecure: 'Your Ruby has security vulnerabilities!'.freeze, + buggy: 'Your Ruby is outdated/buggy.'.freeze, + untracked: 'Your Ruby may not be supported.'.freeze + }.freeze + + NOTICE_RECOMMENDATION = 'Your Ruby is: %s (%s).'\ + ' Recommendation: upgrade to %s.'.freeze + + NOTICE_BUGGY_ALTERNATIVE = '(Or, at least to %s)'.freeze + + NOTICE_HOW_TO_DISABLE = '(To disable warnings, see:'\ + "#{PROJECT_URL}/wiki/Disabling-warnings )".freeze + + NOTICE_OPEN_ISSUE = 'If you need this version supported,'\ + " please open an issue at #{PROJECT_URL}".freeze + + def initialize + @version = RubyVersion.new(RUBY_VERSION, RUBY_ENGINE) + end + + def show_warnings + return if silenced? + return warn_ruby(WARNING[status]) if WARNING.key?(status) + return if status == :unknown + raise "Unknown problem type: #{problem.inspect}" + end + + def silence! + ENV[DISABLING_ENVIRONMENT_VAR] = '1' + end + + private + + def silenced? + value = ENV[DISABLING_ENVIRONMENT_VAR] + (value || '0') !~ /^0|false|no|n$/ + end + + def status + @version.status + end + + def warn_ruby(msg) + RubyDep.logger.tap do |logger| + logger.warn(PREFIX + msg) + logger.info(PREFIX + recommendation) + logger.info(PREFIX + NOTICE_HOW_TO_DISABLE) + end + end + + def recommendation + return unrecognized_msg unless @version.recognized? + return recommendation_msg unless status == :insecure + [recommendation_msg, safer_alternatives_msg].join(' ') + end + + def unrecognized_msg + format( + "Your Ruby is: %s '%s' (unrecognized). %s", + @version.version, + @version.engine, + NOTICE_OPEN_ISSUE + ) + end + + def recommended_versions + @version.recommended(:unknown) + end + + def buggy_alternatives + @version.recommended(:buggy) + end + + def recommendation_msg + format( + NOTICE_RECOMMENDATION, + @version.version, + status, + recommended_versions.join(' or ') + ) + end + + def safer_alternatives_msg + format(NOTICE_BUGGY_ALTERNATIVE, buggy_alternatives.join(' or ')) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.gitignore b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.gitignore new file mode 100644 index 0000000000..5fb70cb097 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.gitignore @@ -0,0 +1,3 @@ +*.gem +Gemfile.lock +spec/store.yaml diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.travis.yml b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.travis.yml new file mode 100644 index 0000000000..231fdbaf05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/.travis.yml @@ -0,0 +1,48 @@ +language: + ruby + +before_install: + gem install bundler + +script: + bundle exec rake spec + +rvm: + - ruby-head + - 2.0.0 + - 1.9.3 + - 1.9.2 + - 1.8.7 + - rbx-19mode + - rbx-18mode + - jruby-head + - jruby-19mode + - jruby-18mode + - ree + +env: + - YAMLER=syck + - YAMLER=psych + +matrix: + allow_failures: + - rvm: ruby-head + - rvm: rbx-19mode + - rvm: rbx-18mode + - rvm: jruby-head + - rvm: ree + + exclude: + - rvm: 1.8.7 + env: YAMLER=psych + - rvm: jruby-head + env: YAMLER=syck + - rvm: jruby-19mode + env: YAMLER=syck + - rvm: jruby-18mode + env: YAMLER=syck + +branches: + only: + - master + diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/CHANGES.md b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/CHANGES.md new file mode 100644 index 0000000000..2120a0b7a5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/CHANGES.md @@ -0,0 +1,154 @@ +1.0.5 +----- + +- fixed [#80](https://github.com/dtao/safe_yaml/issues/80): uninitialized constant DateTime + +1.0.2 +----- + +- added warning when using Psych + an older version of libyaml + +1.0.1 +----- + +- fixed handling for strings that look like (invalid) dates + +1.0.0 +----- + +- updated date parsing to use local timezone +- **now requiring "safe_yaml/load" provides `SafeYAML.load` without clobbering `YAML`** +- fixed handling of empty files +- fixed some (edge case) integer parsing bugs +- fixed some JRuby-specific issues + +0.9.7 +----- + +- made handling of document frontmatter more robust +- added more descriptive message to the warning for omitting the :safe option + +0.9.6 +----- + +- fixed handling of files with trailing content (after closing `---`) + +0.9.5 +----- + +- fixed permissions AGAIN + +0.9.4 +----- + +- corrected handling of symbols + +0.9.3 +----- + +- fixed permissions :( + +0.9.2 +----- + +- fixed error w/ parsing "!" when whitelisting tags +- fixed parsing of the number 0 (d'oh!) + +0.9.1 +----- + +- added Yecht support (JRuby) +- more bug fixes + +0.9.0 +----- + +- added `whitelist!` method for easily whitelisting tags +- added support for call-specific options +- removed deprecated methods + +0.8.6 +----- + +- fixed bug in float matcher + +0.8.5 +----- + +- performance improvements +- made less verbose by default +- bug fixes + +0.8.4 +----- + +- enhancements to parsing of integers, floats, and dates +- updated built-in whitelist +- more bug fixes + +0.8.3 +----- + +- fixed exception on parsing empty document +- fixed handling of octal & hexadecimal numbers + +0.8.2 +----- + +- bug fixes + +0.8.1 +----- + +- added `:raise_on_unknown_tag` option +- renamed `reset_defaults!` to `restore_defaults!` + +0.8 +--- + +- added tag whitelisting +- more API changes + +0.7 +--- + +- separated YAML engine support from Ruby version +- added support for binary scalars +- numerous bug fixes and enhancements + +0.6 +--- + +- several API changes +- added `SafeYAML::OPTIONS` for specifying default behavior + +0.5 +--- + +Added support for dates + +0.4 +--- + +- efficiency improvements +- made `YAML.load` use `YAML.safe_load` by default +- made symbol deserialization optional + +0.3 +--- + +Added Syck support + +0.2 +--- + +Added support for: + +- anchors & aliases +- booleans +- nils + +0.1 +--- + +Initial release \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Gemfile b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Gemfile new file mode 100644 index 0000000000..24d7e3e5cc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Gemfile @@ -0,0 +1,11 @@ +source "https://rubygems.org" + +gemspec + +group :development do + gem "hashie" + gem "heredoc_unindent" + gem "rake" + gem "rspec" + gem "travis-lint" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/LICENSE.txt new file mode 100644 index 0000000000..4b276dd15f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Dan Tao + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/README.md b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/README.md new file mode 100644 index 0000000000..a7b7bdcfea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/README.md @@ -0,0 +1,191 @@ +SafeYAML +======== + +[![Build Status](https://travis-ci.org/dtao/safe_yaml.png)](http://travis-ci.org/dtao/safe_yaml) +[![Gem Version](https://badge.fury.io/rb/safe_yaml.png)](http://badge.fury.io/rb/safe_yaml) + +The **SafeYAML** gem provides an alternative implementation of `YAML.load` suitable for accepting user input in Ruby applications. Unlike Ruby's built-in implementation of `YAML.load`, SafeYAML's version will not expose apps to arbitrary code execution exploits (such as [the ones discovered](http://www.reddit.com/r/netsec/comments/167c11/serious_vulnerability_in_ruby_on_rails_allowing/) [in Rails in early 2013](http://www.h-online.com/open/news/item/Rails-developers-close-another-extremely-critical-flaw-1793511.html)). + +**If you encounter any issues with SafeYAML, check out the 'Common Issues' section below.** If you don't see anything that addresses the problem you're experiencing, by all means, [create an issue](https://github.com/dtao/safe_yaml/issues/new)! + +Installation +------------ + +Add this line to your application's Gemfile: + +```ruby +gem "safe_yaml" +``` + +Configuration +------------- + +If *all you do* is add SafeYAML to your project, then `YAML.load` will operate in "safe" mode, which means it won't deserialize arbitrary objects. However, it will issue a warning the first time you call it because you haven't explicitly specified whether you want safe or unsafe behavior by default. To specify this behavior (e.g., in a Rails initializer): + +```ruby +SafeYAML::OPTIONS[:default_mode] = :safe # or :unsafe +``` + +Another important option you might want to specify on startup is whether or not to allow *symbols* to be deserialized. The default setting is `false`, since symbols are not garbage collected in Ruby and so deserializing them from YAML may render your application vulnerable to a DOS (denial of service) attack. To allow symbol deserialization by default: + +```ruby +SafeYAML::OPTIONS[:deserialize_symbols] = true +``` + +For more information on these and other options, see the "Usage" section down below. + +What is this gem for, exactly? +------------------------------ + +Suppose your application were to use a popular open source library which contained code like this: + +```ruby +class ClassBuilder + def []=(key, value) + @class ||= Class.new + + @class.class_eval <<-EOS + def #{key} + #{value} + end + EOS + end + + def create + @class.new + end +end +``` + +Now, if you were to use `YAML.load` on user input anywhere in your application without the SafeYAML gem installed, an attacker who suspected you were using this library could send a request with a carefully-crafted YAML string to execute arbitrary code (yes, including `system("unix command")`) on your servers. + +This simple example demonstrates the vulnerability: + +```ruby +yaml = <<-EOYAML +--- !ruby/hash:ClassBuilder +"foo; end; puts %(I'm in yr system!); def bar": "baz" +EOYAML +``` + + > YAML.load(yaml) + I'm in yr system! + => #> + +With SafeYAML, the same attacker would be thwarted: + + > require "safe_yaml" + => true + > YAML.load(yaml, :safe => true) + => {"foo; end; puts %(I'm in yr system!); def bar"=>"baz"} + +Usage +----- + +When you require the safe_yaml gem in your project, `YAML.load` is patched to accept one additional (optional) `options` parameter. This changes the method signature as follows: + +- for Syck and Psych prior to Ruby 1.9.3: `YAML.load(yaml, options={})` +- for Psych in 1.9.3 and later: `YAML.load(yaml, filename=nil, options={})` + +The most important option is the `:safe` option (default: `true`), which controls whether or not to deserialize arbitrary objects when parsing a YAML document. The other options, along with explanations, are as follows. + +- `:deserialize_symbols` (default: `false`): Controls whether or not YAML will deserialize symbols. It is probably best to only enable this option where necessary, e.g. to make trusted libraries work. Symbols receive special treatment in Ruby and are not garbage collected, which means deserializing them indiscriminately may render your site vulnerable to a DOS attack. + +- `:whitelisted_tags`: Accepts an array of YAML tags that designate trusted types, e.g., ones that can be deserialized without worrying about any resulting security vulnerabilities. When any of the given tags are encountered in a YAML document, the associated data will be parsed by the underlying YAML engine (Syck or Psych) for the version of Ruby you are using. See the "Whitelisting Trusted Types" section below for more information. + +- `:custom_initializers`: Similar to the `:whitelisted_tags` option, but allows you to provide your own initializers for specified tags rather than using Syck or Psyck. Accepts a hash with string tags for keys and lambdas for values. + +- `:raise_on_unknown_tag` (default: `false`): Represents the highest possible level of paranoia. If the YAML engine encounters any tag other than ones that are automatically trusted by SafeYAML or that you've explicitly whitelisted, it will raise an exception. This may be a good choice if you expect to always be dealing with perfectly safe YAML and want your application to fail loudly upon encountering questionable data. + +All of the above options can be set at the global level via `SafeYAML::OPTIONS`. You can also set each one individually per call to `YAML.load`; an option explicitly passed to `load` will take precedence over an option specified globally. + +What if I don't *want* to patch `YAML`? +--------------------------------------- + +[Excellent question](https://github.com/dtao/safe_yaml/issues/47)! You can also get the methods `SafeYAML.load` and `SafeYAML.load_file` without touching the `YAML` module at all like this: + +```ruby +require "safe_yaml/load" # instead of require "safe_yaml" +``` + +This way, you can use `SafeYAML.load` to parse YAML that *you* don't trust, without affecting the rest of an application (if you're developing a library, for example). + +Supported Types +--------------- + +The way that SafeYAML works is by restricting the kinds of objects that can be deserialized via `YAML.load`. More specifically, only the following types of objects can be deserialized by default: + +- Hashes +- Arrays +- Strings +- Numbers +- Dates +- Times +- Booleans +- Nils + +Again, deserialization of symbols can be enabled globally by setting `SafeYAML::OPTIONS[:deserialize_symbols] = true`, or in a specific call to `YAML.load([some yaml], :deserialize_symbols => true)`. + +Whitelisting Trusted Types +-------------------------- + +SafeYAML supports whitelisting certain YAML tags for trusted types. This is handy when your application uses YAML to serialize and deserialize certain types not listed above, which you know to be free of any deserialization-related vulnerabilities. + +The easiest way to whitelist types is by calling `SafeYAML.whitelist!`, which can accept a variable number of safe types, e.g.: + +```ruby +SafeYAML.whitelist!(Foo, Bar) +``` + +You can also whitelist YAML *tags* via the `:whitelisted_tags` option: + +```ruby +# Using Syck +SafeYAML::OPTIONS[:whitelisted_tags] = ["tag:ruby.yaml.org,2002:object:OpenStruct"] + +# Using Psych +SafeYAML::OPTIONS[:whitelisted_tags] = ["!ruby/object:OpenStruct"] +``` + +And in case you were wondering: no, this feature will *not* allow would-be attackers to embed untrusted types within trusted types: + +```ruby +yaml = <<-EOYAML +--- !ruby/object:OpenStruct +table: + :backdoor: !ruby/hash:ClassBuilder + "foo; end; puts %(I'm in yr system!); def bar": "baz" +EOYAML +``` + + > YAML.safe_load(yaml) + => #"baz"}> + +Known Issues +------------ + +If you add SafeYAML to your project and start seeing any errors about missing keys, or you notice mysterious strings that look like `":foo"` (i.e., start with a colon), it's likely you're seeing errors from symbols being saved in YAML format. If you are able to modify the offending code, you might want to consider changing your YAML content to use plain vanilla strings instead of symbols. If not, you may need to set the `:deserialize_symbols` option to `true`, either in calls to `YAML.load` or---as a last resort---globally, with `SafeYAML::OPTIONS[:deserialize_symbols]`. + +Also be aware that some Ruby libraries, particularly those requiring inter-process communication, leverage YAML's object deserialization functionality and therefore may break or otherwise be impacted by SafeYAML. The following list includes known instances of SafeYAML's interaction with other Ruby gems: + +- [**ActiveRecord**](https://github.com/rails/rails/tree/master/activerecord): uses YAML to control serialization of model objects using the `serialize` class method. If you find that accessing serialized properties on your ActiveRecord models is causing errors, chances are you may need to: + 1. set the `:deserialize_symbols` option to `true`, + 2. whitelist some of the types in your serialized data via `SafeYAML.whitelist!` or the `:whitelisted_tags` option, or + 3. both +- [**delayed_job**](https://github.com/collectiveidea/delayed_job): Uses YAML to serialize the objects on which delayed methods are invoked (with `delay`). The safest solution in this case is to use `SafeYAML.whitelist!` to whitelist the types you need to serialize. +- [**Guard**](https://github.com/guard/guard): Uses YAML as a serialization format for notifications. The data serialized uses symbolic keys, so setting `SafeYAML::OPTIONS[:deserialize_symbols] = true` is necessary to allow Guard to work. +- [**sidekiq**](https://github.com/mperham/sidekiq): Uses a YAML configiuration file with symbolic keys, so setting `SafeYAML::OPTIONS[:deserialize_symbols] = true` should allow it to work. + +The above list will grow over time, as more issues are discovered. + +Versioning +---------- + +SafeYAML will follow [semantic versioning](http://semver.org/) so any updates to the first major version will maintain backwards compatability. So expect primarily bug fixes and feature enhancements (if anything!) from here on out... unless it makes sense to break the interface at some point and introduce a version 2.0, which I honestly think is unlikely. + +Requirements +------------ + +SafeYAML requires Ruby 1.8.7 or newer and works with both [Syck](http://www.ruby-doc.org/stdlib-1.8.7/libdoc/yaml/rdoc/YAML.html) and [Psych](http://github.com/tenderlove/psych). + +If you are using a version of Ruby where Psych is the default YAML engine (e.g., 1.9.3) but you want to use Syck, be sure to set `YAML::ENGINE.yamler = "syck"` **before** requiring the safe_yaml gem. diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Rakefile b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Rakefile new file mode 100644 index 0000000000..2d9dbc30e7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/Rakefile @@ -0,0 +1,26 @@ +require "rspec/core/rake_task" + +desc "Run specs" +task :spec => ['spec:app', 'spec:lib'] + +namespace :spec do + desc "Run only specs tagged 'solo'" + RSpec::Core::RakeTask.new(:solo) do |t| + t.verbose = false + t.rspec_opts = %w(--color --tag solo) + end + + desc "Run only specs tagged NOT tagged 'libraries' (for applications)" + RSpec::Core::RakeTask.new(:app) do |t| + t.verbose = false + ENV["MONKEYPATCH_YAML"] = "true" + t.rspec_opts = %w(--color --tag ~libraries) + end + + desc "Run only specs tagged 'libraries'" + RSpec::Core::RakeTask.new(:lib) do |t| + t.verbose = false + ENV["MONKEYPATCH_YAML"] = "false" + t.rspec_opts = %w(--color --tag libraries) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bin/safe_yaml b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bin/safe_yaml new file mode 100755 index 0000000000..1751a72c80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bin/safe_yaml @@ -0,0 +1,75 @@ +#!/usr/bin/env ruby + +$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') + +require 'optparse' +require 'safe_yaml/load' + +options = {} +option_parser = OptionParser.new do |opts| + opts.banner = "Usage: safe_yaml [options]" + + opts.on("-f", "--file=", "Parse the given YAML file, dump the result to STDOUT") do |file| + options[:file] = file + end + + opts.on("--libyaml-check", "Check for libyaml vulnerability CVE-2014-2525 on your system") do + options[:libyaml_check] = true + end +end + +option_parser.parse! + +def report_libyaml_ok + puts "\e[32mGood news! You definitely have either a patched or up-to-date libyaml version :)\e[39m" +end + +def check_for_overflow_bug + YAML.load("--- !#{'%20' * 100}") + report_libyaml_ok +end + +def perform_libyaml_check(force=false) + unless SafeYAML::LibyamlChecker.libyaml_version_ok? + warn <<-EOM.gsub(/^ +/, ' ') + + \e[33mSafeYAML Warning\e[39m + \e[33m----------------\e[39m + + \e[31mYou may have an outdated version of libyaml (#{SafeYAML::LibyamlChecker::LIBYAML_VERSION}) installed on your system.\e[39m + + Prior to 0.1.6, libyaml is vulnerable to a heap overflow exploit from malicious YAML payloads. + + For more info, see: + https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/ + EOM + end + + puts <<-EOM.gsub(/^ +/, ' ') + + Hit Enter to check if your version of libyaml is vulnerable. This will run a test \e[31mwhich may crash\e[39m + \e[31mthe current process\e[39m. If it does, your system is vulnerable and you should do something about it. + + Type "nm" and hit Enter if you don't want to run the check. + + See the project wiki for more info: + + https://github.com/dtao/safe_yaml/wiki/The-libyaml-vulnerability + EOM + + if STDIN.readline.chomp("\n") != 'nm' + check_for_overflow_bug + end +end + +if options[:libyaml_check] + perform_libyaml_check(options[:force_libyaml_check]) + +elsif options[:file] + yaml = File.read(options[:file]) + result = SafeYAML.load(yaml) + puts result.inspect + +else + puts option_parser.help +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh new file mode 100755 index 0000000000..902d127c56 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" + +declare -a versions=("1.8.7" "1.9.2" "1.9.3" "2.0.0" "2.1.0" "2.1.1" "2.1.2" "ruby-head" "jruby") + +for i in "${versions[@]}" +do + rvm use $i + bundle install +done diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb new file mode 100644 index 0000000000..db1957d336 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb @@ -0,0 +1,94 @@ +require "safe_yaml/load" + +module YAML + def self.load_with_options(yaml, *original_arguments) + filename, options = filename_and_options_from_arguments(original_arguments) + safe_mode = safe_mode_from_options("load", options) + arguments = [yaml] + + if safe_mode == :safe + arguments << filename if SafeYAML::YAML_ENGINE == "psych" + arguments << options_for_safe_load(options) + safe_load(*arguments) + else + arguments << filename if SafeYAML::MULTI_ARGUMENT_YAML_LOAD + unsafe_load(*arguments) + end + end + + def self.load_file_with_options(file, options={}) + safe_mode = safe_mode_from_options("load_file", options) + if safe_mode == :safe + safe_load_file(file, options_for_safe_load(options)) + else + unsafe_load_file(file) + end + end + + def self.safe_load(*args) + SafeYAML.load(*args) + end + + def self.safe_load_file(*args) + SafeYAML.load_file(*args) + end + + if SafeYAML::MULTI_ARGUMENT_YAML_LOAD + def self.unsafe_load_file(filename) + # https://github.com/tenderlove/psych/blob/v1.3.2/lib/psych.rb#L296-298 + File.open(filename, 'r:bom|utf-8') { |f| self.unsafe_load(f, filename) } + end + + else + def self.unsafe_load_file(filename) + # https://github.com/tenderlove/psych/blob/v1.2.2/lib/psych.rb#L231-233 + self.unsafe_load File.open(filename) + end + end + + class << self + alias_method :unsafe_load, :load + alias_method :load, :load_with_options + alias_method :load_file, :load_file_with_options + + private + def filename_and_options_from_arguments(arguments) + if arguments.count == 1 + if arguments.first.is_a?(String) + return arguments.first, {} + else + return nil, arguments.first || {} + end + + else + return arguments.first, arguments.last || {} + end + end + + def safe_mode_from_options(method, options={}) + if options[:safe].nil? + safe_mode = SafeYAML::OPTIONS[:default_mode] || :safe + + if SafeYAML::OPTIONS[:default_mode].nil? && !SafeYAML::OPTIONS[:suppress_warnings] + + Kernel.warn <<-EOWARNING.gsub(/^\s+/, '') + Called '#{method}' without the :safe option -- defaulting to #{safe_mode} mode. + You can avoid this warning in the future by setting the SafeYAML::OPTIONS[:default_mode] option (to :safe or :unsafe). + EOWARNING + + SafeYAML::OPTIONS[:suppress_warnings] = true + end + + return safe_mode + end + + options[:safe] ? :safe : :unsafe + end + + def options_for_safe_load(base_options) + options = base_options.dup + options.delete(:safe) + options + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb new file mode 100644 index 0000000000..6a5e037fbb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb @@ -0,0 +1,34 @@ +module SafeYAML + class Deep + def self.freeze(object) + object.each do |*entry| + value = entry.last + case value + when String, Regexp + value.freeze + when Enumerable + Deep.freeze(value) + end + end + + return object.freeze + end + + def self.copy(object) + duplicate = object.dup rescue object + + case object + when Array + (0...duplicate.count).each do |i| + duplicate[i] = Deep.copy(duplicate[i]) + end + when Hash + duplicate.keys.each do |key| + duplicate[key] = Deep.copy(duplicate[key]) + end + end + + duplicate + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb new file mode 100644 index 0000000000..1ae242363c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb @@ -0,0 +1,36 @@ +require "set" + +module SafeYAML + class LibyamlChecker + LIBYAML_VERSION = Psych::LIBYAML_VERSION rescue nil + + # Do proper version comparison (e.g. so 0.1.10 is >= 0.1.6) + SAFE_LIBYAML_VERSION = Gem::Version.new("0.1.6") + + KNOWN_PATCHED_LIBYAML_VERSIONS = Set.new([ + # http://people.canonical.com/~ubuntu-security/cve/2014/CVE-2014-2525.html + "0.1.4-2ubuntu0.12.04.3", + "0.1.4-2ubuntu0.12.10.3", + "0.1.4-2ubuntu0.13.10.3", + "0.1.4-3ubuntu3", + + # https://security-tracker.debian.org/tracker/CVE-2014-2525 + "0.1.3-1+deb6u4", + "0.1.4-2+deb7u4", + "0.1.4-3.2" + ]).freeze + + def self.libyaml_version_ok? + return true if YAML_ENGINE != "psych" || defined?(JRUBY_VERSION) + return true if Gem::Version.new(LIBYAML_VERSION || "0") >= SAFE_LIBYAML_VERSION + return libyaml_patched? + end + + def self.libyaml_patched? + return false if (`which dpkg` rescue '').empty? + libyaml_version = `dpkg -s libyaml-0-2`.match(/^Version: (.*)$/) + return false if libyaml_version.nil? + KNOWN_PATCHED_LIBYAML_VERSIONS.include?(libyaml_version[1]) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb new file mode 100644 index 0000000000..5ea0f60a8c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb @@ -0,0 +1,181 @@ +require "set" +require "yaml" + +# This needs to be defined up front in case any internal classes need to base +# their behavior off of this. +module SafeYAML + YAML_ENGINE = defined?(YAML::ENGINE) ? YAML::ENGINE.yamler : (defined?(Psych) && YAML == Psych ? "psych" : "syck") +end + +require "safe_yaml/libyaml_checker" +require "safe_yaml/deep" +require "safe_yaml/parse/hexadecimal" +require "safe_yaml/parse/sexagesimal" +require "safe_yaml/parse/date" +require "safe_yaml/transform/transformation_map" +require "safe_yaml/transform/to_boolean" +require "safe_yaml/transform/to_date" +require "safe_yaml/transform/to_float" +require "safe_yaml/transform/to_integer" +require "safe_yaml/transform/to_nil" +require "safe_yaml/transform/to_symbol" +require "safe_yaml/transform" +require "safe_yaml/resolver" +require "safe_yaml/syck_hack" if SafeYAML::YAML_ENGINE == "syck" && defined?(JRUBY_VERSION) + +module SafeYAML + MULTI_ARGUMENT_YAML_LOAD = YAML.method(:load).arity != 1 + + DEFAULT_OPTIONS = Deep.freeze({ + :default_mode => nil, + :suppress_warnings => false, + :deserialize_symbols => false, + :whitelisted_tags => [], + :custom_initializers => {}, + :raise_on_unknown_tag => false + }) + + OPTIONS = Deep.copy(DEFAULT_OPTIONS) + + PREDEFINED_TAGS = {} + + if YAML_ENGINE == "syck" + YAML.tagged_classes.each do |tag, klass| + PREDEFINED_TAGS[klass] = tag + end + + else + # Special tags appear to be hard-coded in Psych: + # https://github.com/tenderlove/psych/blob/v1.3.4/lib/psych/visitors/to_ruby.rb + # Fortunately, there aren't many that SafeYAML doesn't already support. + PREDEFINED_TAGS.merge!({ + Exception => "!ruby/exception", + Range => "!ruby/range", + Regexp => "!ruby/regexp", + }) + end + + Deep.freeze(PREDEFINED_TAGS) + + module_function + + def restore_defaults! + OPTIONS.clear.merge!(Deep.copy(DEFAULT_OPTIONS)) + end + + def tag_safety_check!(tag, options) + return if tag.nil? || tag == "!" + if options[:raise_on_unknown_tag] && !options[:whitelisted_tags].include?(tag) && !tag_is_explicitly_trusted?(tag) + raise "Unknown YAML tag '#{tag}'" + end + end + + def whitelist!(*classes) + classes.each do |klass| + whitelist_class!(klass) + end + end + + def whitelist_class!(klass) + raise "#{klass} not a Class" unless klass.is_a?(::Class) + + klass_name = klass.name + raise "#{klass} cannot be anonymous" if klass_name.nil? || klass_name.empty? + + # Whitelist any built-in YAML tags supplied by Syck or Psych. + predefined_tag = PREDEFINED_TAGS[klass] + if predefined_tag + OPTIONS[:whitelisted_tags] << predefined_tag + return + end + + # Exception is exceptional (har har). + tag_class = klass < Exception ? "exception" : "object" + + tag_prefix = case YAML_ENGINE + when "psych" then "!ruby/#{tag_class}" + when "syck" then "tag:ruby.yaml.org,2002:#{tag_class}" + else raise "unknown YAML_ENGINE #{YAML_ENGINE}" + end + OPTIONS[:whitelisted_tags] << "#{tag_prefix}:#{klass_name}" + end + + if YAML_ENGINE == "psych" + def tag_is_explicitly_trusted?(tag) + false + end + + else + TRUSTED_TAGS = Set.new([ + "tag:yaml.org,2002:binary", + "tag:yaml.org,2002:bool#no", + "tag:yaml.org,2002:bool#yes", + "tag:yaml.org,2002:float", + "tag:yaml.org,2002:float#fix", + "tag:yaml.org,2002:int", + "tag:yaml.org,2002:map", + "tag:yaml.org,2002:null", + "tag:yaml.org,2002:seq", + "tag:yaml.org,2002:str", + "tag:yaml.org,2002:timestamp", + "tag:yaml.org,2002:timestamp#ymd" + ]).freeze + + def tag_is_explicitly_trusted?(tag) + TRUSTED_TAGS.include?(tag) + end + end + + if SafeYAML::YAML_ENGINE == "psych" + require "safe_yaml/psych_handler" + require "safe_yaml/psych_resolver" + require "safe_yaml/safe_to_ruby_visitor" + + def self.load(yaml, filename=nil, options={}) + # If the user hasn't whitelisted any tags, we can go with this implementation which is + # significantly faster. + if (options && options[:whitelisted_tags] || SafeYAML::OPTIONS[:whitelisted_tags]).empty? + safe_handler = SafeYAML::PsychHandler.new(options) do |result| + return result + end + arguments_for_parse = [yaml] + arguments_for_parse << filename if SafeYAML::MULTI_ARGUMENT_YAML_LOAD + Psych::Parser.new(safe_handler).parse(*arguments_for_parse) + return safe_handler.result + + else + safe_resolver = SafeYAML::PsychResolver.new(options) + tree = SafeYAML::MULTI_ARGUMENT_YAML_LOAD ? + Psych.parse(yaml, filename) : + Psych.parse(yaml) + return safe_resolver.resolve_node(tree) + end + end + + def self.load_file(filename, options={}) + if SafeYAML::MULTI_ARGUMENT_YAML_LOAD + File.open(filename, 'r:bom|utf-8') { |f| self.load(f, filename, options) } + + else + # Ruby pukes on 1.9.2 if we try to open an empty file w/ 'r:bom|utf-8'; + # so we'll not specify those flags here. This mirrors the behavior for + # unsafe_load_file so it's probably preferable anyway. + self.load File.open(filename), nil, options + end + end + + else + require "safe_yaml/syck_resolver" + require "safe_yaml/syck_node_monkeypatch" + + def self.load(yaml, options={}) + resolver = SafeYAML::SyckResolver.new(SafeYAML::OPTIONS.merge(options || {})) + tree = YAML.parse(yaml) + return resolver.resolve_node(tree) + end + + def self.load_file(filename, options={}) + File.open(filename) { |f| self.load(f, options) } + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb new file mode 100644 index 0000000000..3a30a8b031 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb @@ -0,0 +1,37 @@ +require 'time' + +module SafeYAML + class Parse + class Date + # This one's easy enough :) + DATE_MATCHER = /\A(\d{4})-(\d{2})-(\d{2})\Z/.freeze + + # This unbelievable little gem is taken basically straight from the YAML spec, but made + # slightly more readable (to my poor eyes at least) to me: + # http://yaml.org/type/timestamp.html + TIME_MATCHER = /\A\d{4}-\d{1,2}-\d{1,2}(?:[Tt]|\s+)\d{1,2}:\d{2}:\d{2}(?:\.\d*)?\s*(?:Z|[-+]\d{1,2}(?::?\d{2})?)?\Z/.freeze + + SECONDS_PER_DAY = 60 * 60 * 24 + MICROSECONDS_PER_SECOND = 1000000 + + # So this is weird. In Ruby 1.8.7, the DateTime#sec_fraction method returned fractional + # seconds in units of DAYS for some reason. In 1.9.2, they changed the units -- much more + # reasonably -- to seconds. + SEC_FRACTION_MULTIPLIER = RUBY_VERSION == "1.8.7" ? (SECONDS_PER_DAY * MICROSECONDS_PER_SECOND) : MICROSECONDS_PER_SECOND + + # The DateTime class has a #to_time method in Ruby 1.9+; + # Before that we'll just need to convert DateTime to Time ourselves. + TO_TIME_AVAILABLE = DateTime.instance_methods.include?(:to_time) + + def self.value(value) + d = DateTime.parse(value) + + return d.to_time if TO_TIME_AVAILABLE + + usec = d.sec_fraction * SEC_FRACTION_MULTIPLIER + time = Time.utc(d.year, d.month, d.day, d.hour, d.min, d.sec, usec) - (d.offset * SECONDS_PER_DAY) + time.getlocal + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb new file mode 100644 index 0000000000..8da3624952 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb @@ -0,0 +1,12 @@ +module SafeYAML + class Parse + class Hexadecimal + MATCHER = /\A[-+]?0x[0-9a-fA-F_]+\Z/.freeze + + def self.value(value) + # This is safe to do since we already validated the value. + return Integer(value.gsub(/_/, "")) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb new file mode 100644 index 0000000000..3fff5bb16f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb @@ -0,0 +1,26 @@ +module SafeYAML + class Parse + class Sexagesimal + INTEGER_MATCHER = /\A[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+\Z/.freeze + FLOAT_MATCHER = /\A[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]*\Z/.freeze + + def self.value(value) + before_decimal, after_decimal = value.split(".") + + whole_part = 0 + multiplier = 1 + + before_decimal = before_decimal.split(":") + until before_decimal.empty? + whole_part += (Float(before_decimal.pop) * multiplier) + multiplier *= 60 + end + + result = whole_part + result += Float("." + after_decimal) unless after_decimal.nil? + result *= -1 if value[0] == "-" + result + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb new file mode 100644 index 0000000000..cf016a3237 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb @@ -0,0 +1,99 @@ +require "psych" +require "base64" + +module SafeYAML + class PsychHandler < Psych::Handler + def initialize(options, &block) + @options = SafeYAML::OPTIONS.merge(options || {}) + @block = block + @initializers = @options[:custom_initializers] || {} + @anchors = {} + @stack = [] + @current_key = nil + @result = nil + @begun = false + end + + def result + @begun ? @result : false + end + + def add_to_current_structure(value, anchor=nil, quoted=nil, tag=nil) + value = Transform.to_proper_type(value, quoted, tag, @options) + + @anchors[anchor] = value if anchor + + if !@begun + @begun = true + @result = value + @current_structure = @result + return + end + + if @current_structure.respond_to?(:<<) + @current_structure << value + + elsif @current_structure.respond_to?(:[]=) + if @current_key.nil? + @current_key = value + + else + if @current_key == "<<" + @current_structure.merge!(value) + else + @current_structure[@current_key] = value + end + + @current_key = nil + end + + else + raise "Don't know how to add to a #{@current_structure.class}!" + end + end + + def end_current_structure + @stack.pop + @current_structure = @stack.last + end + + def streaming? + true + end + + # event handlers + def alias(anchor) + add_to_current_structure(@anchors[anchor]) + end + + def scalar(value, anchor, tag, plain, quoted, style) + add_to_current_structure(value, anchor, quoted, tag) + end + + def end_document(implicit) + @block.call(@result) + end + + def start_mapping(anchor, tag, implicit, style) + map = @initializers.include?(tag) ? @initializers[tag].call : {} + self.add_to_current_structure(map, anchor) + @current_structure = map + @stack.push(map) + end + + def end_mapping + self.end_current_structure() + end + + def start_sequence(anchor, tag, implicit, style) + seq = @initializers.include?(tag) ? @initializers[tag].call : [] + self.add_to_current_structure(seq, anchor) + @current_structure = seq + @stack.push(seq) + end + + def end_sequence + self.end_current_structure() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb new file mode 100644 index 0000000000..851989bef9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb @@ -0,0 +1,52 @@ +module SafeYAML + class PsychResolver < Resolver + NODE_TYPES = { + Psych::Nodes::Document => :root, + Psych::Nodes::Mapping => :map, + Psych::Nodes::Sequence => :seq, + Psych::Nodes::Scalar => :scalar, + Psych::Nodes::Alias => :alias + }.freeze + + def initialize(options={}) + super + @aliased_nodes = {} + end + + def resolve_root(root) + resolve_seq(root).first + end + + def resolve_alias(node) + resolve_node(@aliased_nodes[node.anchor]) + end + + def native_resolve(node) + @visitor ||= SafeYAML::SafeToRubyVisitor.new(self) + @visitor.accept(node) + end + + def get_node_type(node) + NODE_TYPES[node.class] + end + + def get_node_tag(node) + node.tag + end + + def get_node_value(node) + @aliased_nodes[node.anchor] = node if node.respond_to?(:anchor) && node.anchor + + case get_node_type(node) + when :root, :map, :seq + node.children + when :scalar + node.value + end + end + + def value_is_quoted?(node) + node.quoted + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb new file mode 100644 index 0000000000..e4de157978 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb @@ -0,0 +1,94 @@ +module SafeYAML + class Resolver + def initialize(options) + @options = SafeYAML::OPTIONS.merge(options || {}) + @whitelist = @options[:whitelisted_tags] || [] + @initializers = @options[:custom_initializers] || {} + @raise_on_unknown_tag = @options[:raise_on_unknown_tag] + end + + def resolve_node(node) + return node if !node + return self.native_resolve(node) if tag_is_whitelisted?(self.get_node_tag(node)) + + case self.get_node_type(node) + when :root + resolve_root(node) + when :map + resolve_map(node) + when :seq + resolve_seq(node) + when :scalar + resolve_scalar(node) + when :alias + resolve_alias(node) + else + raise "Don't know how to resolve this node: #{node.inspect}" + end + end + + def resolve_map(node) + tag = get_and_check_node_tag(node) + hash = @initializers.include?(tag) ? @initializers[tag].call : {} + map = normalize_map(self.get_node_value(node)) + + # Take the "<<" key nodes first, as these are meant to approximate a form of inheritance. + inheritors = map.select { |key_node, value_node| resolve_node(key_node) == "<<" } + inheritors.each do |key_node, value_node| + merge_into_hash(hash, resolve_node(value_node)) + end + + # All that's left should be normal (non-"<<") nodes. + (map - inheritors).each do |key_node, value_node| + hash[resolve_node(key_node)] = resolve_node(value_node) + end + + return hash + end + + def resolve_seq(node) + seq = self.get_node_value(node) + + tag = get_and_check_node_tag(node) + arr = @initializers.include?(tag) ? @initializers[tag].call : [] + + seq.inject(arr) { |array, n| array << resolve_node(n) } + end + + def resolve_scalar(node) + Transform.to_proper_type(self.get_node_value(node), self.value_is_quoted?(node), get_and_check_node_tag(node), @options) + end + + def get_and_check_node_tag(node) + tag = self.get_node_tag(node) + SafeYAML.tag_safety_check!(tag, @options) + tag + end + + def tag_is_whitelisted?(tag) + @whitelist.include?(tag) + end + + def options + @options + end + + private + def normalize_map(map) + # Syck creates Hashes from maps. + if map.is_a?(Hash) + map.inject([]) { |arr, key_and_value| arr << key_and_value } + + # Psych is really weird; it flattens out a Hash completely into: [key, value, key, value, ...] + else + map.each_slice(2).to_a + end + end + + def merge_into_hash(hash, array) + array.each do |key, value| + hash[key] = value + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb new file mode 100644 index 0000000000..b980445a9c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb @@ -0,0 +1,29 @@ +module SafeYAML + class SafeToRubyVisitor < Psych::Visitors::ToRuby + INITIALIZE_ARITY = superclass.instance_method(:initialize).arity + + def initialize(resolver) + case INITIALIZE_ARITY + when 2 + # https://github.com/tenderlove/psych/blob/v2.0.0/lib/psych/visitors/to_ruby.rb#L14-L28 + loader = Psych::ClassLoader.new + scanner = Psych::ScalarScanner.new(loader) + super(scanner, loader) + + else + super() + end + + @resolver = resolver + end + + def accept(node) + if node.tag + SafeYAML.tag_safety_check!(node.tag, @resolver.options) + return super + end + + @resolver.resolve_node(node) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb new file mode 100644 index 0000000000..e02a0fc262 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb @@ -0,0 +1,39 @@ +require 'safe_yaml/load' +require 'yaml/store' + +module SafeYAML + + class Store < YAML::Store + + # Override YAML::Store#initialize to accept additional option + # +safe_yaml_opts+. + def initialize(file_name, yaml_opts = {}, safe_yaml_opts = {}) + @safe_yaml_opts = safe_yaml_opts + super(file_name, yaml_opts) + end + + # Override YAML::Store#load to use SafeYAML.load instead of + # YAML.load (via #safe_yaml_load). + #-- + # PStore#load is private, while YAML::Store#load is public. + #++ + def load(content) + table = safe_yaml_load(content) + table == false ? {} : table + end + + private + + if SafeYAML::YAML_ENGINE == 'psych' + def safe_yaml_load(content) + SafeYAML.load(content, nil, @safe_yaml_opts) + end + else + def safe_yaml_load(content) + SafeYAML.load(content, @safe_yaml_opts) + end + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb new file mode 100644 index 0000000000..08a5e478ea --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb @@ -0,0 +1,36 @@ +# Hack to JRuby 1.8's YAML Parser Yecht +# +# This file is always loaded AFTER either syck or psych are already +# loaded. It then looks at what constants are available and creates +# a consistent view on all rubys. +# +# Taken from rubygems and modified. +# See https://github.com/rubygems/rubygems/blob/master/lib/rubygems/syck_hack.rb + +module YAML + # In newer 1.9.2, there is a Syck toplevel constant instead of it + # being underneith YAML. If so, reference it back under YAML as + # well. + if defined? ::Syck + # for tests that change YAML::ENGINE + # 1.8 does not support the second argument to const_defined? + remove_const :Syck rescue nil + + Syck = ::Syck + + # JRuby's "Syck" is called "Yecht" + elsif defined? YAML::Yecht + Syck = YAML::Yecht + end +end + +# Sometime in the 1.9 dev cycle, the Syck constant was moved from under YAML +# to be a toplevel constant. So gemspecs created under these versions of Syck +# will have references to Syck::DefaultKey. +# +# So we need to be sure that we reference Syck at the toplevel too so that +# we can always load these kind of gemspecs. +# +if !defined?(Syck) + Syck = YAML::Syck +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb new file mode 100644 index 0000000000..c026376cd5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb @@ -0,0 +1,43 @@ +# This is, admittedly, pretty insane. Fundamentally the challenge here is this: if we want to allow +# whitelisting of tags (while still leveraging Syck's internal functionality), then we have to +# change how Syck::Node#transform works. But since we (SafeYAML) do not control instantiation of +# Syck::Node objects, we cannot, for example, subclass Syck::Node and override #tranform the "easy" +# way. So the only choice is to monkeypatch, like this. And the only way to make this work +# recursively with potentially call-specific options (that my feeble brain can think of) is to set +# pseudo-global options on the first call and unset them once the recursive stack has fully unwound. + +monkeypatch = <<-EORUBY + class Node + @@safe_transform_depth = 0 + @@safe_transform_whitelist = nil + + def safe_transform(options={}) + begin + @@safe_transform_depth += 1 + @@safe_transform_whitelist ||= options[:whitelisted_tags] + + if self.type_id + SafeYAML.tag_safety_check!(self.type_id, options) + return unsafe_transform if @@safe_transform_whitelist.include?(self.type_id) + end + + SafeYAML::SyckResolver.new.resolve_node(self) + + ensure + @@safe_transform_depth -= 1 + if @@safe_transform_depth == 0 + @@safe_transform_whitelist = nil + end + end + end + + alias_method :unsafe_transform, :transform + alias_method :transform, :safe_transform + end +EORUBY + +if defined?(YAML::Syck::Node) + YAML::Syck.module_eval monkeypatch +else + Syck.module_eval monkeypatch +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb new file mode 100644 index 0000000000..10d55ab37e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb @@ -0,0 +1,38 @@ +module SafeYAML + class SyckResolver < Resolver + QUOTE_STYLES = [ + :quote1, + :quote2 + ].freeze + + NODE_TYPES = { + Hash => :map, + Array => :seq, + String => :scalar + }.freeze + + def initialize(options={}) + super + end + + def native_resolve(node) + node.transform(self.options) + end + + def get_node_type(node) + NODE_TYPES[node.value.class] + end + + def get_node_tag(node) + node.type_id + end + + def get_node_value(node) + node.value + end + + def value_is_quoted?(node) + QUOTE_STYLES.include?(node.instance_variable_get(:@style)) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb new file mode 100644 index 0000000000..d61d1a9952 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb @@ -0,0 +1,41 @@ +require 'base64' + +module SafeYAML + class Transform + TRANSFORMERS = [ + Transform::ToSymbol.new, + Transform::ToInteger.new, + Transform::ToFloat.new, + Transform::ToNil.new, + Transform::ToBoolean.new, + Transform::ToDate.new + ] + + def self.to_guessed_type(value, quoted=false, options=nil) + return value if quoted + + if value.is_a?(String) + TRANSFORMERS.each do |transformer| + success, transformed_value = transformer.method(:transform?).arity == 1 ? + transformer.transform?(value) : + transformer.transform?(value, options) + + return transformed_value if success + end + end + + value + end + + def self.to_proper_type(value, quoted=false, tag=nil, options=nil) + case tag + when "tag:yaml.org,2002:binary", "x-private:binary", "!binary" + decoded = Base64.decode64(value) + decoded = decoded.force_encoding(value.encoding) if decoded.respond_to?(:force_encoding) + decoded + else + self.to_guessed_type(value, quoted, options) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb new file mode 100644 index 0000000000..99dc85efe5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb @@ -0,0 +1,21 @@ +module SafeYAML + class Transform + class ToBoolean + include TransformationMap + + set_predefined_values({ + "yes" => true, + "on" => true, + "true" => true, + "no" => false, + "off" => false, + "false" => false + }) + + def transform?(value) + return false if value.length > 5 + return PREDEFINED_VALUES.include?(value), PREDEFINED_VALUES[value] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb new file mode 100644 index 0000000000..4bfe5520b9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb @@ -0,0 +1,13 @@ +module SafeYAML + class Transform + class ToDate + def transform?(value) + return true, Date.parse(value) if Parse::Date::DATE_MATCHER.match(value) + return true, Parse::Date.value(value) if Parse::Date::TIME_MATCHER.match(value) + false + rescue ArgumentError + return true, value + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb new file mode 100644 index 0000000000..4ee3f5fbf7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb @@ -0,0 +1,33 @@ +module SafeYAML + class Transform + class ToFloat + Infinity = 1.0 / 0.0 + NaN = 0.0 / 0.0 + + PREDEFINED_VALUES = { + ".inf" => Infinity, + ".Inf" => Infinity, + ".INF" => Infinity, + "-.inf" => -Infinity, + "-.Inf" => -Infinity, + "-.INF" => -Infinity, + ".nan" => NaN, + ".NaN" => NaN, + ".NAN" => NaN, + }.freeze + + MATCHER = /\A[-+]?(?:\d[\d_]*)?\.[\d_]+(?:[eE][-+][\d]+)?\Z/.freeze + + def transform?(value) + return true, Float(value) if MATCHER.match(value) + try_edge_cases?(value) + end + + def try_edge_cases?(value) + return true, PREDEFINED_VALUES[value] if PREDEFINED_VALUES.include?(value) + return true, Parse::Sexagesimal.value(value) if Parse::Sexagesimal::FLOAT_MATCHER.match(value) + return false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb new file mode 100644 index 0000000000..9a5f5634d2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb @@ -0,0 +1,26 @@ +module SafeYAML + class Transform + class ToInteger + MATCHERS = Deep.freeze([ + /\A[-+]?(0|([1-9][0-9_,]*))\Z/, # decimal + /\A0[0-7]+\Z/, # octal + /\A0x[0-9a-f]+\Z/i, # hexadecimal + /\A0b[01_]+\Z/ # binary + ]) + + def transform?(value) + MATCHERS.each_with_index do |matcher, idx| + value = value.gsub(/[_,]/, "") if idx == 0 + return true, Integer(value) if matcher.match(value) + end + try_edge_cases?(value) + end + + def try_edge_cases?(value) + return true, Parse::Hexadecimal.value(value) if Parse::Hexadecimal::MATCHER.match(value) + return true, Parse::Sexagesimal.value(value) if Parse::Sexagesimal::INTEGER_MATCHER.match(value) + return false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb new file mode 100644 index 0000000000..1f617562b0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb @@ -0,0 +1,18 @@ +module SafeYAML + class Transform + class ToNil + include TransformationMap + + set_predefined_values({ + "" => nil, + "~" => nil, + "null" => nil + }) + + def transform?(value) + return false if value.length > 4 + return PREDEFINED_VALUES.include?(value), PREDEFINED_VALUES[value] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb new file mode 100644 index 0000000000..36a72bbe48 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb @@ -0,0 +1,17 @@ +module SafeYAML + class Transform + class ToSymbol + def transform?(value, options=SafeYAML::OPTIONS) + if options[:deserialize_symbols] && value =~ /\A:./ + if value =~ /\A:(["'])(.*)\1\Z/ + return true, $2.sub(/^:/, "").to_sym + else + return true, value.sub(/^:/, "").to_sym + end + end + + return false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb new file mode 100644 index 0000000000..d4e45ec52c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb @@ -0,0 +1,47 @@ +module SafeYAML + class Transform + module TransformationMap + def self.included(base) + base.extend(ClassMethods) + end + + class CaseAgnosticMap < Hash + def initialize(*args) + super + end + + def include?(key) + super(key.downcase) + end + + def [](key) + super(key.downcase) + end + + # OK, I actually don't think it's all that important that this map be + # frozen. + def freeze + self + end + end + + module ClassMethods + def set_predefined_values(predefined_values) + if SafeYAML::YAML_ENGINE == "syck" + expanded_map = predefined_values.inject({}) do |hash, (key, value)| + hash[key] = value + hash[key.capitalize] = value + hash[key.upcase] = value + hash + end + else + expanded_map = CaseAgnosticMap.new + expanded_map.merge!(predefined_values) + end + + self.const_set(:PREDEFINED_VALUES, expanded_map.freeze) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb new file mode 100644 index 0000000000..89ff3b09ed --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb @@ -0,0 +1,3 @@ +module SafeYAML + VERSION = "1.0.5" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh new file mode 100755 index 0000000000..54a1f4b444 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" + +rvm use 1.8.7 +bundle exec rake spec + +rvm use 1.9.2 +YAMLER=syck bundle exec rake spec + +YAMLER=psych bundle exec rake spec + +rvm use 1.9.3 +YAMLER=syck bundle exec rake spec + +YAMLER=psych bundle exec rake spec + +rvm use 2.0.0 +bundle exec rake spec + +rvm use 2.1.0 +bundle exec rake spec + +rvm use 2.1.1 +bundle exec rake spec + +rvm use 2.1.2 +bundle exec rake spec + +rvm use ruby-head +bundle exec rake spec + +rvm use jruby +JRUBY_OPTS=--1.8 bundle exec rake spec + +JRUBY_OPTS=--1.9 bundle exec rake spec + +JRUBY_OPTS=--2.0 bundle exec rake spec diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec new file mode 100644 index 0000000000..4f4432a829 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec @@ -0,0 +1,19 @@ +# -*- encoding: utf-8 -*- +require File.join(File.dirname(__FILE__), "lib", "safe_yaml", "version") + +Gem::Specification.new do |gem| + gem.name = "safe_yaml" + gem.version = SafeYAML::VERSION + gem.authors = "Dan Tao" + gem.email = "daniel.tao@gmail.com" + gem.description = %q{Parse YAML safely} + gem.summary = %q{SameYAML provides an alternative implementation of YAML.load suitable for accepting user input in Ruby applications.} + gem.homepage = "https://github.com/dtao/safe_yaml" + gem.license = "MIT" + gem.files = `git ls-files`.split($\) + gem.test_files = gem.files.grep(%r{^spec/}) + gem.require_paths = ["lib"] + gem.executables = ["safe_yaml"] + + gem.required_ruby_version = ">= 1.8.7" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.2.yaml b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.2.yaml new file mode 100644 index 0000000000..bdd70cc679 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.2.yaml @@ -0,0 +1,2 @@ +--- !ruby/object:ExploitableBackDoor +foo: bar diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.3.yaml b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.3.yaml new file mode 100644 index 0000000000..c24e04b8dd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/exploit.1.9.3.yaml @@ -0,0 +1,2 @@ +--- !ruby/hash:ExploitableBackDoor +foo: bar diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue48.txt b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue48.txt new file mode 100644 index 0000000000..97d1f68414 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue48.txt @@ -0,0 +1,20 @@ +--- +title: Blah +key: value +--- + +I'm going to inject a bunch of YAML-looking stuff below and it should all just get ignored. + +foo: bar + +- foo +- bar + +:foo +42 +~ + +--- +text: | + Look, I'm another YAML document! +--- diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue49.yml b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/issue49.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/libyaml_checker_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/libyaml_checker_spec.rb new file mode 100644 index 0000000000..b5b290b267 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/libyaml_checker_spec.rb @@ -0,0 +1,69 @@ +require "spec_helper" + +describe SafeYAML::LibyamlChecker do + describe "check_libyaml_version" do + REAL_YAML_ENGINE = SafeYAML::YAML_ENGINE + REAL_LIBYAML_VERSION = SafeYAML::LibyamlChecker::LIBYAML_VERSION + + let(:libyaml_patched) { false } + + before :each do + allow(SafeYAML::LibyamlChecker).to receive(:libyaml_patched?).and_return(libyaml_patched) + end + + after :each do + silence_warnings do + SafeYAML::YAML_ENGINE = REAL_YAML_ENGINE + SafeYAML::LibyamlChecker::LIBYAML_VERSION = REAL_LIBYAML_VERSION + end + end + + def test_libyaml_version_ok(expected_result, yaml_engine, libyaml_version=nil) + silence_warnings do + SafeYAML.const_set("YAML_ENGINE", yaml_engine) + SafeYAML::LibyamlChecker.const_set("LIBYAML_VERSION", libyaml_version) + expect(SafeYAML::LibyamlChecker.libyaml_version_ok?).to eq(expected_result) + end + end + + unless defined?(JRUBY_VERSION) + it "issues no warnings when 'Syck' is the YAML engine" do + test_libyaml_version_ok(true, "syck") + end + + it "issues a warning if Psych::LIBYAML_VERSION is not defined" do + test_libyaml_version_ok(false, "psych") + end + + it "issues a warning if Psych::LIBYAML_VERSION is < 0.1.6" do + test_libyaml_version_ok(false, "psych", "0.1.5") + end + + it "issues no warning if Psych::LIBYAML_VERSION is == 0.1.6" do + test_libyaml_version_ok(true, "psych", "0.1.6") + end + + it "issues no warning if Psych::LIBYAML_VERSION is > 0.1.6" do + test_libyaml_version_ok(true, "psych", "1.0.0") + end + + it "does a proper version comparison (not just a string comparison)" do + test_libyaml_version_ok(true, "psych", "0.1.10") + end + + context "when the system has a known patched libyaml version" do + let(:libyaml_patched) { true } + + it "issues no warning, even when Psych::LIBYAML_VERSION < 0.1.6" do + test_libyaml_version_ok(true, "psych", "0.1.4") + end + end + end + + if defined?(JRUBY_VERSION) + it "issues no warning, as JRuby doesn't use libyaml" do + test_libyaml_version_ok(true, "psych", "0.1.4") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/psych_resolver_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/psych_resolver_spec.rb new file mode 100644 index 0000000000..a9e76b5c03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/psych_resolver_spec.rb @@ -0,0 +1,10 @@ +require "spec_helper" + +if SafeYAML::YAML_ENGINE == "psych" + require "safe_yaml/psych_resolver" + + describe SafeYAML::PsychResolver do + include ResolverSpecs + let(:resolver) { SafeYAML::PsychResolver.new } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/resolver_specs.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/resolver_specs.rb new file mode 100644 index 0000000000..1b981e54c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/resolver_specs.rb @@ -0,0 +1,278 @@ +module ResolverSpecs + def self.included(base) + base.module_eval do + let(:resolver) { nil } + let(:result) { @result } + + before :each do + # See the comment in the first before :each block in safe_yaml_spec.rb. + require "safe_yaml" + end + + def parse(yaml) + tree = YAML.parse(yaml.unindent) + @result = resolver.resolve_node(tree) + end + + # Isn't this how I should've been doing it all along? + def parse_and_test(yaml) + safe_result = parse(yaml) + + exception_thrown = nil + + unsafe_result = begin + YAML.unsafe_load(yaml) + rescue Exception => e + exception_thrown = e + end + + if exception_thrown + # If the underlying YAML parser (e.g. Psych) threw an exception, I'm + # honestly not sure what the right thing to do is. For now I'll just + # print a warning. Should SafeYAML fail when Psych fails? + Kernel.warn "\n" + Kernel.warn "Discrepancy between SafeYAML and #{SafeYAML::YAML_ENGINE} on input:\n" + Kernel.warn "#{yaml.unindent}\n" + Kernel.warn "SafeYAML result:" + Kernel.warn "#{safe_result.inspect}\n" + Kernel.warn "#{SafeYAML::YAML_ENGINE} result:" + Kernel.warn "#{exception_thrown.inspect}\n" + + else + expect(safe_result).to eq(unsafe_result) + end + end + + context "by default" do + it "translates maps to hashes" do + parse <<-YAML + potayto: potahto + tomayto: tomahto + YAML + + expect(result).to eq({ + "potayto" => "potahto", + "tomayto" => "tomahto" + }) + end + + it "translates sequences to arrays" do + parse <<-YAML + - foo + - bar + - baz + YAML + + expect(result).to eq(["foo", "bar", "baz"]) + end + + it "translates most values to strings" do + parse "string: value" + expect(result).to eq({ "string" => "value" }) + end + + it "does not deserialize symbols" do + parse ":symbol: value" + expect(result).to eq({ ":symbol" => "value" }) + end + + it "translates valid integral numbers to integers" do + parse "integer: 1" + expect(result).to eq({ "integer" => 1 }) + end + + it "translates valid decimal numbers to floats" do + parse "float: 3.14" + expect(result).to eq({ "float" => 3.14 }) + end + + it "translates valid dates" do + parse "date: 2013-01-24" + expect(result).to eq({ "date" => Date.parse("2013-01-24") }) + end + + it "translates valid true/false values to booleans" do + parse <<-YAML + - yes + - true + - no + - false + YAML + + expect(result).to eq([true, true, false, false]) + end + + it "translates valid nulls to nil" do + parse <<-YAML + - + - ~ + - null + YAML + + expect(result).to eq([nil] * 3) + end + + it "matches the behavior of the underlying YAML engine w/ respect to capitalization of boolean values" do + parse_and_test <<-YAML + - true + - True + - TRUE + - tRue + - TRue + - False + - FALSE + - fAlse + - FALse + YAML + + # using Syck: [true, true, true, "tRue", "TRue", false, false, "fAlse", "FALse"] + # using Psych: all booleans + end + + it "matches the behavior of the underlying YAML engine w/ respect to capitalization of nil values" do + parse_and_test <<-YAML + - Null + - NULL + - nUll + - NUll + YAML + + # using Syck: [nil, nil, "nUll", "NUll"] + # using Psych: all nils + end + + it "translates quoted empty strings to strings (not nil)" do + parse "foo: ''" + expect(result).to eq({ "foo" => "" }) + end + + it "correctly reverse-translates strings encoded via #to_yaml" do + parse "5.10".to_yaml + expect(result).to eq("5.10") + end + + it "does not specially parse any double-quoted strings" do + parse <<-YAML + - "1" + - "3.14" + - "true" + - "false" + - "2013-02-03" + - "2013-02-03 16:27:00 -0600" + YAML + + expect(result).to eq(["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"]) + end + + it "does not specially parse any single-quoted strings" do + parse <<-YAML + - '1' + - '3.14' + - 'true' + - 'false' + - '2013-02-03' + - '2013-02-03 16:27:00 -0600' + YAML + + expect(result).to eq(["1", "3.14", "true", "false", "2013-02-03", "2013-02-03 16:27:00 -0600"]) + end + + it "deals just fine with nested maps" do + parse <<-YAML + foo: + bar: + marco: polo + YAML + + expect(result).to eq({ "foo" => { "bar" => { "marco" => "polo" } } }) + end + + it "deals just fine with nested sequences" do + parse <<-YAML + - foo + - + - bar1 + - bar2 + - + - baz1 + - baz2 + YAML + + expect(result).to eq(["foo", ["bar1", "bar2", ["baz1", "baz2"]]]) + end + + it "applies the same transformations to keys as to values" do + parse <<-YAML + foo: string + :bar: symbol + 1: integer + 3.14: float + 2013-01-24: date + YAML + + expect(result).to eq({ + "foo" => "string", + ":bar" => "symbol", + 1 => "integer", + 3.14 => "float", + Date.parse("2013-01-24") => "date", + }) + end + + it "applies the same transformations to elements in sequences as to all values" do + parse <<-YAML + - foo + - :bar + - 1 + - 3.14 + - 2013-01-24 + YAML + + expect(result).to eq(["foo", ":bar", 1, 3.14, Date.parse("2013-01-24")]) + end + end + + context "for Ruby version #{RUBY_VERSION}" do + it "translates valid time values" do + parse "time: 2013-01-29 05:58:00 -0800" + expect(result).to eq({ "time" => Time.utc(2013, 1, 29, 13, 58, 0) }) + end + + it "applies the same transformation to elements in sequences" do + parse "- 2013-01-29 05:58:00 -0800" + expect(result).to eq([Time.utc(2013, 1, 29, 13, 58, 0)]) + end + + it "applies the same transformation to keys" do + parse "2013-01-29 05:58:00 -0800: time" + expect(result).to eq({ Time.utc(2013, 1, 29, 13, 58, 0) => "time" }) + end + end + + context "with symbol deserialization enabled" do + before :each do + SafeYAML::OPTIONS[:deserialize_symbols] = true + end + + after :each do + SafeYAML.restore_defaults! + end + + it "translates values starting with ':' to symbols" do + parse "symbol: :value" + expect(result).to eq({ "symbol" => :value }) + end + + it "applies the same transformation to keys" do + parse ":bar: symbol" + expect(result).to eq({ :bar => "symbol" }) + end + + it "applies the same transformation to elements in sequences" do + parse "- :bar" + expect(result).to eq([:bar]) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/safe_yaml_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/safe_yaml_spec.rb new file mode 100644 index 0000000000..aa701a4534 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/safe_yaml_spec.rb @@ -0,0 +1,731 @@ +require "spec_helper" + +describe YAML do + def safe_load_round_trip(object, options={}) + yaml = object.to_yaml + if SafeYAML::YAML_ENGINE == "psych" + YAML.safe_load(yaml, nil, options) + else + YAML.safe_load(yaml, options) + end + end + + before :each do + # Need to require this here (as opposed to somewhere up higher in the file) + # to ensure that safe_yaml isn't loaded and therefore YAML isn't monkey- + # patched, for tests that require only safe_yaml/load. + require "safe_yaml" + require "exploitable_back_door" + + SafeYAML.restore_defaults! + end + + after :each do + SafeYAML.restore_defaults! + end + + describe "unsafe_load" do + if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.3" + it "allows exploits through objects defined in YAML w/ !ruby/hash via custom :[]= methods" do + backdoor = YAML.unsafe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n") + expect(backdoor).to be_exploited_through_setter + end + + it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do + backdoor = YAML.unsafe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n") + expect(backdoor).to be_exploited_through_init_with + end + end + + it "allows exploits through objects w/ sensitive instance variables defined in YAML w/ !ruby/object" do + backdoor = YAML.unsafe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n") + expect(backdoor).to be_exploited_through_ivars + end + + context "with special whitelisted tags defined" do + before :each do + SafeYAML::whitelist!(OpenStruct) + end + + it "effectively ignores the whitelist (since everything is whitelisted)" do + result = YAML.unsafe_load <<-YAML.unindent + --- !ruby/object:OpenStruct + table: + :backdoor: !ruby/object:ExploitableBackDoor + foo: bar + YAML + + expect(result).to be_a(OpenStruct) + expect(result.backdoor).to be_exploited_through_ivars + end + end + end + + describe "safe_load" do + it "does NOT allow exploits through objects defined in YAML w/ !ruby/hash" do + object = YAML.safe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n") + expect(object).not_to be_a(ExploitableBackDoor) + end + + it "does NOT allow exploits through objects defined in YAML w/ !ruby/object" do + object = YAML.safe_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n") + expect(object).not_to be_a(ExploitableBackDoor) + end + + context "for YAML engine #{SafeYAML::YAML_ENGINE}" do + if SafeYAML::YAML_ENGINE == "psych" + let(:options) { nil } + let(:arguments) { ["foo: bar", nil, options] } + + context "when no tags are whitelisted" do + it "constructs a SafeYAML::PsychHandler to resolve nodes as they're parsed, for optimal performance" do + expect(Psych::Parser).to receive(:new).with an_instance_of(SafeYAML::PsychHandler) + # This won't work now; we just want to ensure Psych::Parser#parse was in fact called. + YAML.safe_load(*arguments) rescue nil + end + end + + context "when whitelisted tags are specified" do + let(:options) { + { :whitelisted_tags => ["foo"] } + } + + it "instead uses Psych to construct a full tree before examining the nodes" do + expect(Psych).to receive(:parse) + # This won't work now; we just want to ensure Psych::Parser#parse was in fact called. + YAML.safe_load(*arguments) rescue nil + end + end + end + + if SafeYAML::YAML_ENGINE == "syck" + it "uses Syck internally to parse YAML" do + expect(YAML).to receive(:parse).with("foo: bar") + # This won't work now; we just want to ensure YAML::parse was in fact called. + YAML.safe_load("foo: bar") rescue nil + end + end + end + + it "loads a plain ol' YAML document just fine" do + result = YAML.safe_load <<-YAML.unindent + foo: + number: 1 + boolean: true + nil: ~ + string: Hello, there! + symbol: :blah + sequence: + - hi + - bye + YAML + + expect(result).to eq({ + "foo" => { + "number" => 1, + "boolean" => true, + "nil" => nil, + "string" => "Hello, there!", + "symbol" => ":blah", + "sequence" => ["hi", "bye"] + } + }) + end + + it "works for YAML documents with anchors and aliases" do + result = YAML.safe_load <<-YAML + - &id001 {} + - *id001 + - *id001 + YAML + + expect(result).to eq([{}, {}, {}]) + end + + it "works for YAML documents with binary tagged keys" do + result = YAML.safe_load <<-YAML + ? !!binary > + Zm9v + : "bar" + ? !!binary > + YmFy + : "baz" + YAML + + expect(result).to eq({"foo" => "bar", "bar" => "baz"}) + end + + it "works for YAML documents with binary tagged values" do + result = YAML.safe_load <<-YAML + "foo": !!binary > + YmFy + "bar": !!binary > + YmF6 + YAML + + expect(result).to eq({"foo" => "bar", "bar" => "baz"}) + end + + it "works for YAML documents with binary tagged array values" do + result = YAML.safe_load <<-YAML + - !binary |- + Zm9v + - !binary |- + YmFy + YAML + + expect(result).to eq(["foo", "bar"]) + end + + it "works for YAML documents with sections" do + result = YAML.safe_load <<-YAML + mysql: &mysql + adapter: mysql + pool: 30 + login: &login + username: user + password: password123 + development: &development + <<: *mysql + <<: *login + host: localhost + YAML + + expect(result).to eq({ + "mysql" => { + "adapter" => "mysql", + "pool" => 30 + }, + "login" => { + "username" => "user", + "password" => "password123" + }, + "development" => { + "adapter" => "mysql", + "pool" => 30, + "username" => "user", + "password" => "password123", + "host" => "localhost" + } + }) + end + + it "correctly prefers explicitly defined values over default values from included sections" do + # Repeating this test 100 times to increase the likelihood of running into an issue caused by + # non-deterministic hash key enumeration. + 100.times do + result = YAML.safe_load <<-YAML + defaults: &defaults + foo: foo + bar: bar + baz: baz + custom: + <<: *defaults + bar: custom_bar + baz: custom_baz + YAML + + expect(result["custom"]).to eq({ + "foo" => "foo", + "bar" => "custom_bar", + "baz" => "custom_baz" + }) + end + end + + it "works with multi-level inheritance" do + result = YAML.safe_load <<-YAML + defaults: &defaults + foo: foo + bar: bar + baz: baz + custom: &custom + <<: *defaults + bar: custom_bar + baz: custom_baz + grandcustom: &grandcustom + <<: *custom + YAML + + expect(result).to eq({ + "defaults" => { "foo" => "foo", "bar" => "bar", "baz" => "baz" }, + "custom" => { "foo" => "foo", "bar" => "custom_bar", "baz" => "custom_baz" }, + "grandcustom" => { "foo" => "foo", "bar" => "custom_bar", "baz" => "custom_baz" } + }) + end + + it "returns false when parsing an empty document" do + expect([ + YAML.safe_load(""), + YAML.safe_load(" "), + YAML.safe_load("\n") + ]).to eq([false, false, false]) + end + + it "returns nil when parsing a single value representing nil" do + expect([ + YAML.safe_load("~"), + YAML.safe_load("null") + ]).to eq([nil, nil]) + end + + context "with custom initializers defined" do + before :each do + if SafeYAML::YAML_ENGINE == "psych" + SafeYAML::OPTIONS[:custom_initializers] = { + "!set" => lambda { Set.new }, + "!hashiemash" => lambda { Hashie::Mash.new } + } + else + SafeYAML::OPTIONS[:custom_initializers] = { + "tag:yaml.org,2002:set" => lambda { Set.new }, + "tag:yaml.org,2002:hashiemash" => lambda { Hashie::Mash.new } + } + end + end + + it "will use a custom initializer to instantiate an array-like class upon deserialization" do + result = YAML.safe_load <<-YAML.unindent + --- !set + - 1 + - 2 + - 3 + YAML + + expect(result).to be_a(Set) + expect(result.to_a).to match_array([1, 2, 3]) + end + + it "will use a custom initializer to instantiate a hash-like class upon deserialization" do + result = YAML.safe_load <<-YAML.unindent + --- !hashiemash + foo: bar + YAML + + expect(result).to be_a(Hashie::Mash) + expect(result.to_hash).to eq({ "foo" => "bar" }) + end + end + + context "with special whitelisted tags defined" do + before :each do + SafeYAML::whitelist!(OpenStruct) + + # Necessary for deserializing OpenStructs properly. + SafeYAML::OPTIONS[:deserialize_symbols] = true + end + + it "will allow objects to be deserialized for whitelisted tags" do + result = YAML.safe_load("--- !ruby/object:OpenStruct\ntable:\n foo: bar\n") + expect(result).to be_a(OpenStruct) + expect(result.instance_variable_get(:@table)).to eq({ "foo" => "bar" }) + end + + it "will not deserialize objects without whitelisted tags" do + result = YAML.safe_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n") + expect(result).not_to be_a(ExploitableBackDoor) + expect(result).to eq({ "foo" => "bar" }) + end + + it "will not allow non-whitelisted objects to be embedded within objects with whitelisted tags" do + result = YAML.safe_load <<-YAML.unindent + --- !ruby/object:OpenStruct + table: + :backdoor: !ruby/object:ExploitableBackDoor + foo: bar + YAML + + expect(result).to be_a(OpenStruct) + expect(result.backdoor).not_to be_a(ExploitableBackDoor) + expect(result.backdoor).to eq({ "foo" => "bar" }) + end + + context "with the :raise_on_unknown_tag option enabled" do + before :each do + SafeYAML::OPTIONS[:raise_on_unknown_tag] = true + end + + after :each do + SafeYAML.restore_defaults! + end + + it "raises an exception if a non-nil, non-whitelisted tag is encountered" do + expect { + YAML.safe_load <<-YAML.unindent + --- !ruby/object:Unknown + foo: bar + YAML + }.to raise_error + end + + it "checks all tags, even those within objects with trusted tags" do + expect { + YAML.safe_load <<-YAML.unindent + --- !ruby/object:OpenStruct + table: + :backdoor: !ruby/object:Unknown + foo: bar + YAML + }.to raise_error + end + + it "does not raise an exception as long as all tags are whitelisted" do + result = YAML.safe_load <<-YAML.unindent + --- !ruby/object:OpenStruct + table: + :backdoor: + string: foo + integer: 1 + float: 3.14 + symbol: :bar + date: 2013-02-20 + array: [] + hash: {} + YAML + + expect(result).to be_a(OpenStruct) + expect(result.backdoor).to eq({ + "string" => "foo", + "integer" => 1, + "float" => 3.14, + "symbol" => :bar, + "date" => Date.parse("2013-02-20"), + "array" => [], + "hash" => {} + }) + end + + it "does not raise an exception on the non-specific '!' tag" do + result = nil + expect { result = YAML.safe_load "--- ! 'foo'" }.to_not raise_error + expect(result).to eq("foo") + end + + context "with whitelisted custom class" do + class SomeClass + attr_accessor :foo + end + let(:instance) { SomeClass.new } + + before do + SafeYAML::whitelist!(SomeClass) + instance.foo = 'with trailing whitespace: ' + end + + it "does not raise an exception on the non-specific '!' tag" do + result = nil + expect { result = YAML.safe_load(instance.to_yaml) }.to_not raise_error + expect(result.foo).to eq('with trailing whitespace: ') + end + end + end + end + + context "when options are passed direclty to #load which differ from the defaults" do + let(:default_options) { {} } + + before :each do + SafeYAML::OPTIONS.merge!(default_options) + end + + context "(for example, when symbol deserialization is enabled by default)" do + let(:default_options) { { :deserialize_symbols => true } } + + it "goes with the default option when it is not overridden" do + silence_warnings do + expect(YAML.load(":foo: bar")).to eq({ :foo => "bar" }) + end + end + + it "allows the default option to be overridden on a per-call basis" do + silence_warnings do + expect(YAML.load(":foo: bar", :deserialize_symbols => false)).to eq({ ":foo" => "bar" }) + expect(YAML.load(":foo: bar", :deserialize_symbols => true)).to eq({ :foo => "bar" }) + end + end + end + + context "(or, for example, when certain tags are whitelisted)" do + let(:default_options) { + { + :deserialize_symbols => true, + :whitelisted_tags => SafeYAML::YAML_ENGINE == "psych" ? + ["!ruby/object:OpenStruct"] : + ["tag:ruby.yaml.org,2002:object:OpenStruct"] + } + } + + it "goes with the default option when it is not overridden" do + result = safe_load_round_trip(OpenStruct.new(:foo => "bar")) + expect(result).to be_a(OpenStruct) + expect(result.foo).to eq("bar") + end + + it "allows the default option to be overridden on a per-call basis" do + result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :whitelisted_tags => []) + expect(result).to eq({ "table" => { :foo => "bar" } }) + + result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :deserialize_symbols => false, :whitelisted_tags => []) + expect(result).to eq({ "table" => { ":foo" => "bar" } }) + end + end + end + end + + describe "unsafe_load_file" do + if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.3" + it "allows exploits through objects defined in YAML w/ !ruby/hash via custom :[]= methods" do + backdoor = YAML.unsafe_load_file "spec/exploit.1.9.3.yaml" + expect(backdoor).to be_exploited_through_setter + end + end + + if SafeYAML::YAML_ENGINE == "psych" && RUBY_VERSION >= "1.9.2" + it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do + backdoor = YAML.unsafe_load_file "spec/exploit.1.9.2.yaml" + expect(backdoor).to be_exploited_through_init_with + end + end + + it "allows exploits through objects w/ sensitive instance variables defined in YAML w/ !ruby/object" do + backdoor = YAML.unsafe_load_file "spec/exploit.1.9.2.yaml" + expect(backdoor).to be_exploited_through_ivars + end + end + + describe "safe_load_file" do + it "does NOT allow exploits through objects defined in YAML w/ !ruby/hash" do + object = YAML.safe_load_file "spec/exploit.1.9.3.yaml" + expect(object).not_to be_a(ExploitableBackDoor) + end + + it "does NOT allow exploits through objects defined in YAML w/ !ruby/object" do + object = YAML.safe_load_file "spec/exploit.1.9.2.yaml" + expect(object).not_to be_a(ExploitableBackDoor) + end + + it "returns false when parsing an empty file" do + expect(YAML.safe_load_file("spec/issue49.yml")).to eq(false) + end + end + + describe "load" do + let(:options) { {} } + + let (:arguments) { + if SafeYAML::MULTI_ARGUMENT_YAML_LOAD + ["foo: bar", nil, options] + else + ["foo: bar", options] + end + } + + context "as long as a :default_mode has been specified" do + it "doesn't issue a warning for safe mode, since an explicit mode has been set" do + SafeYAML::OPTIONS[:default_mode] = :safe + expect(Kernel).not_to receive(:warn) + YAML.load(*arguments) + end + + it "doesn't issue a warning for unsafe mode, since an explicit mode has been set" do + SafeYAML::OPTIONS[:default_mode] = :unsafe + expect(Kernel).not_to receive(:warn) + YAML.load(*arguments) + end + end + + context "when the :safe options is specified" do + let(:safe_mode) { true } + let(:options) { { :safe => safe_mode } } + + it "doesn't issue a warning" do + expect(Kernel).not_to receive(:warn) + YAML.load(*arguments) + end + + it "calls #safe_load if the :safe option is set to true" do + expect(YAML).to receive(:safe_load) + YAML.load(*arguments) + end + + context "when the :safe option is set to false" do + let(:safe_mode) { false } + + it "calls #unsafe_load if the :safe option is set to false" do + expect(YAML).to receive(:unsafe_load) + YAML.load(*arguments) + end + end + end + + it "issues a warning when the :safe option is omitted" do + silence_warnings do + expect(Kernel).to receive(:warn) + YAML.load(*arguments) + end + end + + it "only issues a warning once (to avoid spamming an app's output)" do + silence_warnings do + expect(Kernel).to receive(:warn).once + 2.times { YAML.load(*arguments) } + end + end + + it "defaults to safe mode if the :safe option is omitted" do + silence_warnings do + expect(YAML).to receive(:safe_load) + YAML.load(*arguments) + end + end + + context "with the default mode set to :unsafe" do + before :each do + SafeYAML::OPTIONS[:default_mode] = :unsafe + end + + it "defaults to unsafe mode if the :safe option is omitted" do + silence_warnings do + expect(YAML).to receive(:unsafe_load) + YAML.load(*arguments) + end + end + + it "calls #safe_load if the :safe option is set to true" do + expect(YAML).to receive(:safe_load) + YAML.load(*(arguments + [{ :safe => true }])) + end + end + end + + describe "load_file" do + let(:filename) { "spec/exploit.1.9.2.yaml" } # doesn't really matter + + it "issues a warning if the :safe option is omitted" do + silence_warnings do + expect(Kernel).to receive(:warn) + YAML.load_file(filename) + end + end + + it "doesn't issue a warning as long as the :safe option is specified" do + expect(Kernel).not_to receive(:warn) + YAML.load_file(filename, :safe => true) + end + + it "defaults to safe mode if the :safe option is omitted" do + silence_warnings do + expect(YAML).to receive(:safe_load_file) + YAML.load_file(filename) + end + end + + it "calls #safe_load_file if the :safe option is set to true" do + expect(YAML).to receive(:safe_load_file) + YAML.load_file(filename, :safe => true) + end + + it "calls #unsafe_load_file if the :safe option is set to false" do + expect(YAML).to receive(:unsafe_load_file) + YAML.load_file(filename, :safe => false) + end + + context "with arbitrary object deserialization enabled by default" do + before :each do + SafeYAML::OPTIONS[:default_mode] = :unsafe + end + + it "defaults to unsafe mode if the :safe option is omitted" do + silence_warnings do + expect(YAML).to receive(:unsafe_load_file) + YAML.load_file(filename) + end + end + + it "calls #safe_load if the :safe option is set to true" do + expect(YAML).to receive(:safe_load_file) + YAML.load_file(filename, :safe => true) + end + end + + it "handles files starting with --- (see issue #48)" do + expect(YAML.load_file("spec/issue48.txt", :safe => true)).to eq({ + "title" => "Blah", + "key" => "value" + }) + end + + it "handles content starting with --- (see issue #48)" do + yaml = File.read("spec/issue48.txt") + expect(YAML.load(yaml, :safe => true)).to eq({ + "title" => "Blah", + "key" => "value" + }) + end + end + + describe "whitelist!" do + context "not a class" do + it "should raise" do + expect { SafeYAML::whitelist! :foo }.to raise_error(/not a Class/) + expect(SafeYAML::OPTIONS[:whitelisted_tags]).to be_empty + end + end + + context "anonymous class" do + it "should raise" do + expect { SafeYAML::whitelist! Class.new }.to raise_error(/cannot be anonymous/) + expect(SafeYAML::OPTIONS[:whitelisted_tags]).to be_empty + end + end + + context "with a Class as its argument" do + it "should configure correctly" do + expect { SafeYAML::whitelist! OpenStruct }.to_not raise_error + expect(SafeYAML::OPTIONS[:whitelisted_tags].grep(/OpenStruct\Z/)).not_to be_empty + end + + it "successfully deserializes the specified class" do + SafeYAML.whitelist!(OpenStruct) + + # necessary for properly assigning OpenStruct attributes + SafeYAML::OPTIONS[:deserialize_symbols] = true + + result = safe_load_round_trip(OpenStruct.new(:foo => "bar")) + expect(result).to be_a(OpenStruct) + expect(result.foo).to eq("bar") + end + + it "works for ranges" do + SafeYAML.whitelist!(Range) + expect(safe_load_round_trip(1..10)).to eq(1..10) + end + + it "works for regular expressions" do + SafeYAML.whitelist!(Regexp) + expect(safe_load_round_trip(/foo/)).to eq(/foo/) + end + + it "works for multiple classes" do + SafeYAML.whitelist!(Range, Regexp) + expect(safe_load_round_trip([(1..10), /bar/])).to eq([(1..10), /bar/]) + end + + it "works for arbitrary Exception subclasses" do + class CustomException < Exception + attr_reader :custom_message + + def initialize(custom_message) + @custom_message = custom_message + end + end + + SafeYAML.whitelist!(CustomException) + + ex = safe_load_round_trip(CustomException.new("blah")) + expect(ex).to be_a(CustomException) + expect(ex.custom_message).to eq("blah") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/spec_helper.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/spec_helper.rb new file mode 100644 index 0000000000..967b2d303b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/spec_helper.rb @@ -0,0 +1,42 @@ +HERE = File.dirname(__FILE__) unless defined?(HERE) +ROOT = File.join(HERE, "..") unless defined?(ROOT) + +$LOAD_PATH << File.join(ROOT, "lib") +$LOAD_PATH << File.join(HERE, "support") + +require "yaml" +if ENV["YAMLER"] && defined?(YAML::ENGINE) + YAML::ENGINE.yamler = ENV["YAMLER"] +end + +ruby_version = defined?(JRUBY_VERSION) ? "JRuby #{JRUBY_VERSION} in #{RUBY_VERSION} mode" : "Ruby #{RUBY_VERSION}" +yaml_engine = defined?(YAML::ENGINE) ? YAML::ENGINE.yamler : "syck" +libyaml_version = yaml_engine == "psych" && Psych.const_defined?("LIBYAML_VERSION", false) ? Psych::LIBYAML_VERSION : "N/A" + +env_info = [ + ruby_version, + "YAML: #{yaml_engine} (#{YAML::VERSION}) (libyaml: #{libyaml_version})", + "Monkeypatch: #{ENV['MONKEYPATCH_YAML']}" +] + +puts env_info.join(", ") + +# Caching references to these methods before loading safe_yaml in order to test +# that they aren't touched unless you actually require safe_yaml (see yaml_spec.rb). +ORIGINAL_YAML_LOAD = YAML.method(:load) +ORIGINAL_YAML_LOAD_FILE = YAML.method(:load_file) + +require "safe_yaml/load" +require "ostruct" +require "hashie" +require "heredoc_unindent" + +# Stolen from Rails: +# https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/core_ext/kernel/reporting.rb#L10-25 +def silence_warnings + $VERBOSE = nil; yield +ensure + $VERBOSE = true +end + +require File.join(HERE, "resolver_specs") diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/store_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/store_spec.rb new file mode 100644 index 0000000000..aafcfd4321 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/store_spec.rb @@ -0,0 +1,57 @@ +require 'spec_helper' + +require 'safe_yaml/store' + +describe SafeYAML::Store do + + let(:file) { 'spec/store.yaml' } + let(:content) { "--- \nfoo: 42\n:bar: \"party\"\n" } + + before do + # Rewrite file on every test, as its contents are potentially modified by + # SafeYAML::Store#transaction + File.open(file, 'w') { |f| f.write(content) } + end + + def expect_safe_load(options = {}) + load_args = [content, options] + load_args.insert(1, nil) if SafeYAML::YAML_ENGINE == 'psych' + + expect(SafeYAML).to receive(:load).with(*load_args).and_call_original + expect(YAML).not_to receive(:load) + end + + let(:init_args) { [file] } + subject { described_class.new(*init_args) } + + it 'should be a YAML::Store' do + expect(subject).to be_a(YAML::Store) + end + + it 'should be a SafeYAML::Store' do + expect(subject).to be_a(SafeYAML::Store) + end + + it 'should use SafeYAML.load instead of YAML.load' do + expect_safe_load + expect(subject.transaction { subject['foo'] }).to eq(42) + end + + it 'preserves default SafeYAML behavior' do + expect(subject.transaction { subject[:bar] }).to eq(nil) + expect(subject.transaction { subject[':bar'] }).to eq('party') + end + + + describe 'with options' do + + let(:init_args) { super().insert(2, :deserialize_symbols => true) } + + it 'should accept options for SafeYAML.load' do + expect_safe_load(:deserialize_symbols => true) + expect(subject.transaction { subject[:bar] }).to eq('party') + end + + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/support/exploitable_back_door.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/support/exploitable_back_door.rb new file mode 100644 index 0000000000..48754b4639 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/support/exploitable_back_door.rb @@ -0,0 +1,29 @@ +class ExploitableBackDoor + def exploited? + @exploited_through_setter || @exploited_through_init_with || @exploited_through_ivars + end + + def exploited_through_setter? + @exploited_through_setter + end + + def exploited_through_init_with? + @exploited_through_init_with + end + + def exploited_through_ivars? + self.instance_variables.any? + end + + def init_with(command) + # Note: this is how bad this COULD be. + # system("#{command}") + @exploited_through_init_with = true + end + + def []=(command, arguments) + # Note: this is how bad this COULD be. + # system("#{command} #{arguments}") + @exploited_through_setter = true + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/syck_resolver_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/syck_resolver_spec.rb new file mode 100644 index 0000000000..bec729bfbe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/syck_resolver_spec.rb @@ -0,0 +1,10 @@ +require "spec_helper" + +if SafeYAML::YAML_ENGINE == "syck" + require "safe_yaml/syck_resolver" + + describe SafeYAML::SyckResolver do + include ResolverSpecs + let(:resolver) { SafeYAML::SyckResolver.new } + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/base64_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/base64_spec.rb new file mode 100644 index 0000000000..f4d83d033d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/base64_spec.rb @@ -0,0 +1,11 @@ +require "spec_helper" + +describe SafeYAML::Transform do + it "should return the same encoding when decoding Base64" do + value = "c3VyZS4=" + decoded = SafeYAML::Transform.to_proper_type(value, false, "!binary") + + expect(decoded).to eq("sure.") + expect(decoded.encoding).to eq(value.encoding) if decoded.respond_to?(:encoding) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_date_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_date_spec.rb new file mode 100644 index 0000000000..31bdb411af --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_date_spec.rb @@ -0,0 +1,60 @@ +require "spec_helper" + +describe SafeYAML::Transform::ToDate do + it "returns true when the value matches a valid Date" do + expect(subject.transform?("2013-01-01")).to eq([true, Date.parse("2013-01-01")]) + end + + it "returns false when the value does not match a valid Date" do + expect(subject.transform?("foobar")).to be_falsey + end + + it "returns false when the value does not end with a Date" do + expect(subject.transform?("2013-01-01\nNOT A DATE")).to be_falsey + end + + it "returns false when the value does not begin with a Date" do + expect(subject.transform?("NOT A DATE\n2013-01-01")).to be_falsey + end + + it "correctly parses the remaining formats of the YAML spec" do + equivalent_values = [ + "2001-12-15T02:59:43.1Z", # canonical + "2001-12-14t21:59:43.10-05:00", # iso8601 + "2001-12-14 21:59:43.10 -5", # space separated + "2001-12-15 2:59:43.10" # no time zone (Z) + ] + + equivalent_values.each do |value| + success, result = subject.transform?(value) + expect(success).to be_truthy + expect(result).to eq(Time.utc(2001, 12, 15, 2, 59, 43, 100000)) + end + end + + it "converts times to the local timezone" do + success, result = subject.transform?("2012-12-01 10:33:45 +11:00") + expect(success).to be_truthy + expect(result).to eq(Time.utc(2012, 11, 30, 23, 33, 45)) + expect(result.gmt_offset).to eq(Time.local(2012, 11, 30).gmt_offset) + end + + it "returns strings for invalid dates" do + expect(subject.transform?("0000-00-00")).to eq([true, "0000-00-00"]) + expect(subject.transform?("2013-13-01")).to eq([true, "2013-13-01"]) + expect(subject.transform?("2014-01-32")).to eq([true, "2014-01-32"]) + end + + it "returns strings for invalid date/times" do + expect(subject.transform?("0000-00-00 00:00:00 -0000")).to eq([true, "0000-00-00 00:00:00 -0000"]) + expect(subject.transform?("2013-13-01 21:59:43 -05:00")).to eq([true, "2013-13-01 21:59:43 -05:00"]) + expect(subject.transform?("2013-01-32 21:59:43 -05:00")).to eq([true, "2013-01-32 21:59:43 -05:00"]) + expect(subject.transform?("2013-01-30 25:59:43 -05:00")).to eq([true, "2013-01-30 25:59:43 -05:00"]) + expect(subject.transform?("2013-01-30 21:69:43 -05:00")).to eq([true, "2013-01-30 21:69:43 -05:00"]) + + # Interesting. It seems that in some older Ruby versions, the below actually parses successfully + # w/ DateTime.parse; but it fails w/ YAML.load. Whom to follow??? + + # subject.transform?("2013-01-30 21:59:63 -05:00").should == [true, "2013-01-30 21:59:63 -05:00"] + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb new file mode 100644 index 0000000000..d4d813fb70 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_float_spec.rb @@ -0,0 +1,42 @@ +require "spec_helper" + +describe SafeYAML::Transform::ToFloat do + it "returns true when the value matches a valid Float" do + expect(subject.transform?("20.00")).to eq([true, 20.0]) + end + + it "returns false when the value does not match a valid Float" do + expect(subject.transform?("foobar")).to be_falsey + end + + it "returns false when the value spans multiple lines" do + expect(subject.transform?("20.00\nNOT A FLOAT")).to be_falsey + end + + it "correctly parses all formats in the YAML spec" do + # canonical + expect(subject.transform?("6.8523015e+5")).to eq([true, 685230.15]) + + # exponentioal + expect(subject.transform?("685.230_15e+03")).to eq([true, 685230.15]) + + # fixed + expect(subject.transform?("685_230.15")).to eq([true, 685230.15]) + + # sexagesimal + expect(subject.transform?("190:20:30.15")).to eq([true, 685230.15]) + + # infinity + expect(subject.transform?("-.inf")).to eq([true, (-1.0 / 0.0)]) + + # not a number + # NOTE: can't use == here since NaN != NaN + success, result = subject.transform?(".NaN") + expect(success).to be_truthy; expect(result).to be_nan + end + + # issue 29 + it "returns false for the string '.'" do + expect(subject.transform?(".")).to be_falsey + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_integer_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_integer_spec.rb new file mode 100644 index 0000000000..6c6723bb45 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_integer_spec.rb @@ -0,0 +1,64 @@ +require "spec_helper" + +describe SafeYAML::Transform::ToInteger do + it "returns true when the value matches a valid Integer" do + expect(subject.transform?("10")).to eq([true, 10]) + end + + it "returns false when the value does not match a valid Integer" do + expect(subject.transform?("foobar")).to be_falsey + end + + it "returns false when the value spans multiple lines" do + expect(subject.transform?("10\nNOT AN INTEGER")).to be_falsey + end + + it "allows commas in the number" do + expect(subject.transform?("1,000")).to eq([true, 1000]) + end + + it "correctly parses numbers in octal format" do + expect(subject.transform?("010")).to eq([true, 8]) + end + + it "correctly parses numbers in hexadecimal format" do + expect(subject.transform?("0x1FF")).to eq([true, 511]) + end + + it "defaults to a string for a number that resembles octal format but is not" do + expect(subject.transform?("09")).to be_falsey + end + + it "correctly parses 0 in decimal" do + expect(subject.transform?("0")).to eq([true, 0]) + end + + it "defaults to a string for a number that resembles hexadecimal format but is not" do + expect(subject.transform?("0x1G")).to be_falsey + end + + it "correctly parses all formats in the YAML spec" do + # canonical + expect(subject.transform?("685230")).to eq([true, 685230]) + + # decimal + expect(subject.transform?("+685_230")).to eq([true, 685230]) + + # octal + expect(subject.transform?("02472256")).to eq([true, 685230]) + + # hexadecimal: + expect(subject.transform?("0x_0A_74_AE")).to eq([true, 685230]) + + # binary + expect(subject.transform?("0b1010_0111_0100_1010_1110")).to eq([true, 685230]) + + # sexagesimal + expect(subject.transform?("190:20:30")).to eq([true, 685230]) + end + + # see https://github.com/dtao/safe_yaml/pull/51 + it "strips out underscores before parsing decimal values" do + expect(subject.transform?("_850_")).to eq([true, 850]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_symbol_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_symbol_spec.rb new file mode 100644 index 0000000000..59cd24267a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/transform/to_symbol_spec.rb @@ -0,0 +1,51 @@ +require "spec_helper" + +describe SafeYAML::Transform::ToSymbol do + def with_symbol_deserialization_value(value) + symbol_deserialization_flag = SafeYAML::OPTIONS[:deserialize_symbols] + SafeYAML::OPTIONS[:deserialize_symbols] = value + + yield + + ensure + SafeYAML::OPTIONS[:deserialize_symbols] = symbol_deserialization_flag + end + + def with_symbol_deserialization(&block) + with_symbol_deserialization_value(true, &block) + end + + def without_symbol_deserialization(&block) + with_symbol_deserialization_value(false, &block) + end + + it "returns true when the value matches a valid Symbol" do + with_symbol_deserialization { expect(subject.transform?(":foo")[0]).to be_truthy } + end + + it "returns true when the value matches a valid String+Symbol" do + with_symbol_deserialization { expect(subject.transform?(':"foo"')[0]).to be_truthy } + end + + it "returns true when the value matches a valid String+Symbol with 's" do + with_symbol_deserialization { expect(subject.transform?(":'foo'")[0]).to be_truthy } + end + + it "returns true when the value has special characters and is wrapped in a String" do + with_symbol_deserialization { expect(subject.transform?(':"foo.bar"')[0]).to be_truthy } + end + + it "returns false when symbol deserialization is disabled" do + without_symbol_deserialization { expect(subject.transform?(":foo")).to be_falsey } + end + + it "returns false when the value does not match a valid Symbol" do + with_symbol_deserialization { expect(subject.transform?("foo")).to be_falsey } + end + + it "returns false when the symbol does not begin the line" do + with_symbol_deserialization do + expect(subject.transform?("NOT A SYMBOL\n:foo")).to be_falsey + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/yaml_spec.rb b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/yaml_spec.rb new file mode 100644 index 0000000000..2c2bd181e3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/spec/yaml_spec.rb @@ -0,0 +1,15 @@ +# See https://github.com/dtao/safe_yaml/issues/47 + +require "spec_helper" + +describe YAML do + context "when you've only required safe_yaml/load", :libraries => true do + it "YAML.load doesn't get monkey patched" do + expect(YAML.method(:load)).to eq(ORIGINAL_YAML_LOAD) + end + + it "YAML.load_file doesn't get monkey patched" do + expect(YAML.method(:load_file)).to eq(ORIGINAL_YAML_LOAD_FILE) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/.yardopts b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/.yardopts new file mode 100644 index 0000000000..a380440c62 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/.yardopts @@ -0,0 +1,13 @@ +--readme README.md +--markup markdown +--markup-provider redcarpet +--default-return "" +--title "Sass Documentation" +--query 'object.type != :classvariable' +--query 'object.type != :constant || @api && @api.text == "public"' +--hide-void-return +--protected +--no-private +--no-highlight +--tag comment +--hide-tag comment diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CODE_OF_CONDUCT.md b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..dfc4c84a74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CODE_OF_CONDUCT.md @@ -0,0 +1,10 @@ +Sass is more than a technology; Sass is driven by the community of individuals +that power its development and use every day. As a community, we want to embrace +the very differences that have made our collaboration so powerful, and work +together to provide the best environment for learning, growing, and sharing of +ideas. It is imperative that we keep Sass a fun, welcoming, challenging, and +fair place to play. + +[The full community guidelines can be found on the Sass website.][link] + +[link]: http://sass-lang.com/community-guidelines diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CONTRIBUTING.md b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CONTRIBUTING.md new file mode 100644 index 0000000000..e997b0baf9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/CONTRIBUTING.md @@ -0,0 +1,148 @@ +Contributions are welcomed. Please see the following site for guidelines: + +[http://sass-lang.com/community#Contribute](http://sass-lang.com/community#Contribute) + +* [Branches](#main-development-branches) + * [Feature Branches](#feature-branches) + * [Experimental Branches](#experimental-branches) + * [Old Stable Branches](#old-stable-branches) +* [Versioning](#versioning) + * [Making Breaking Changes](#making-breaking-changes) + * [Exceptional Breakages](#exceptional-breakages) + +## Branches + +The Sass repository has three primary development branches, each of which tracks +a different line of releases (see [versioning](#versioning) below). Each branch +is regularly merged into the one below: `stable` into `next`, `next` into +`master`. + +* The `stable` branch is the default—it's what GitHub shows if you go to + [sass/ruby-sass](https://github.com/sass/ruby-sass), and it's the default place for pull + requests to go. This branch is where we work on the next patch release. Bug + fixes and documentation improvements belong here, but not new features. + +* The `next` branch is where we work on the next minor release. It's where most + new features go, as long as they're not breaking changes. Very occasionally + breaking changes will go here as well—see + [exceptional breakages](#exceptional-breakages) below for details. + +* The `master` branch is where we work on the next major release. It's where + breaking changes go. We also occasionally decide that a non-breaking feature + is big enough to warrant saving until the next major release, in which case it + will also be developed here. + +Ideally, pull requests would be made against the appropriate +branch, but don't worry about it too much; if you make a request against the +wrong branch, the maintainer will take responsibility for rebasing it before +merging. + +### Testing + +Tests for changes to the Sass language go in +[sass-spec](https://github.com/sass/sass-spec) so that other +implementations (E.g. libSass) can be tested against the same test +suite. The sass-spec repo follows a "trunk development" model in that +the tests there test against different version of the Sass language (as +opposed to having branches that track different Sass versions). When +contributing changes to Sass, update the Gemfile to use sass-spec from a +branch or fork that has the new tests. When the feature lands in Sass, +the committer will also merge the corresponding sass-spec changes. + +The [documentation of +sass-spec](https://github.com/sass/sass-spec/blob/master/README.md) +explains how to run sass-spec and contribute changes. In development, +Change the Gemfile(s) to use the `:path` option against the sass-spec gem +to link your local checkout of sass and sass-spec together in one or +both directions. + +Changes to Sass internals or Ruby Sass specific features (E.g. +the `sass-convert` tool) should always have tests in the Sass `test` +directory following the conventions you see there. + +### Feature Branches + +Sometimes it won't be possible to merge a new feature into `next` or `master` +immediately. It may require longer-term work before it's complete, or we may not +want to release it as part of any alpha releases of the branch in question. +Branches like this are labeled `feature.#{name}` and stay on GitHub until +they're ready to be merged. + +### Experimental Branches + +Not all features pan out, and not all code is a good fit for merging into the +main codebase. Usually when this happens the code is just discarded, but every +so often it's interesting or promising enough that it's worth keeping around. +This is what experimental branches (labeled `experimental.#{name}`) are for. +While they're not currently in use, they contain code that might be useful in +the future. + +### Old Stable Branches + +Usually Sass doesn't have the development time to do long-term maintenance of +old release. But occasionally, very rarely, it becomes necessary. In cases like +that, a branch named `stable_#{version}` will be created, starting from the last +tag in that version series. + +## Versioning + +Starting with version 3.5.0, Sass uses [semantic versioning](http://semver.org/) +to indicate the evolution of its language semantics as much as possible. This +means that patch releases (such as 3.5.3) contain only bug fixes, minor releases +(such as 3.6.0) contain backwards-compatible features, and only major releases +(such as 4.0.0) are allowed to have backwards-incompatible behavior. There are +[exceptions](#exceptional-breakages), but we try to follow this rule as closely +as possible. + +Note, however, that the semantic versioning applies only to the language's +semantics, not to the Ruby APIs. Although we try hard to keep widely-used APIs +like [`Sass::Engine`][Sass::Engine] stable, we don't have a strong distinction +between public and private APIs and we need to be able to freely refactor our +code. + +[Sass::Engine]: http://sass-lang.com/documentation/Sass/Engine.html + +### Making Breaking Changes + +Sometimes the old way of doing something just isn't going to work anymore, and +the new way just can't be made backwards-compatible. In that case, a breaking +change is necessary. These changes are rarely pleasant, but they contribute to +making the language better in the long term. + +Our breaking change process tries to make such changes as clear to users and as +easy to adapt to as possible. We want to ensure that there's a clear path +forward for users using functionality that will no longer exist, and that they +are able to understand what's changing and what they need to do. We've developed +the following process for this: + +1. Deprecate the old behavior [in `stable`](#branches). At minimum, deprecating + some behavior involves printing a warning when that behavior is used + explaining that it's going to go away in the future. Ideally, this message + will also include code that will do the same thing in a non-deprecated way. + If there's a thorough prose explanation of the change available online, the + message should link to that as well. + +2. If possible, make `sass-convert` (also in `stable`) convert the deprecated + behavior into a non-deprecated form. This allows users to run `sass-convert + -R -i` to automatically update their stylesheets. + +3. Implement the new behavior in `master`. The sooner this happens, the better: + it may be unclear exactly what needs to be deprecated until the new + implementation exists. + +4. Release an alpha version of `master` that includes the new behavior. This + allows users who are dissatisfied with the workaround to use the new + behavior early. Normally a maintainer will take care of this. + +### Exceptional Breakages + +Because Sass's syntax and semantics are closely tied to those of CSS, there are +occasionally times when CSS syntax is introduced that overlaps with +previously-valid Sass. In this case in particular, we may introduce a breaking +change in a minor version to get back to CSS compatibility as soon as possible. + +Exceptional breakages still require the full deprecation process; the only +change is that the new behavior is implemented in `next` rather than `master`. +Because there are no minor releases between the deprecation and the removal of +the old behavior, the deprecation warning should be introduced soon as it +becomes clear that an exceptional breakage is necessary. diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/MIT-LICENSE b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/MIT-LICENSE new file mode 100644 index 0000000000..5c184eba81 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2006-2016 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/README.md b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/README.md new file mode 100644 index 0000000000..9fe312459e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/README.md @@ -0,0 +1,237 @@ +## Ruby Sass is Deprecated! + +Ruby Sass is in a sunset period where only critical bugs and CSS compatibility +issues will be fixed. It will be completely unmaintained as of 26 March 2019. +See [the Sass website][] for details, and consider switching to the [`sassc` +gem][] + +[the Sass website]: https://sass-lang.com/ruby-sass +[`sassc` gem]: https://rubygems.org/gems/sassc + +# Sass [![Travis Build Status](https://travis-ci.org/sass/ruby-sass.svg?branch=next)](https://travis-ci.org/sass/ruby-sass) [![Gem Version](https://badge.fury.io/rb/sass.svg)](http://badge.fury.io/rb/sass) [![Inline docs](http://inch-ci.org/github/sass/sass.svg)](http://inch-ci.org/github/sass/sass) + +**Sass makes CSS fun again**. Sass is an extension of CSS, +adding nested rules, variables, mixins, selector inheritance, and more. +It's translated to well-formatted, standard CSS +using the command line tool or a web-framework plugin. + +Sass has two syntaxes. The new main syntax (as of Sass 3) +is known as "SCSS" (for "Sassy CSS"), +and is a superset of CSS's syntax. +This means that every valid CSS stylesheet is valid SCSS as well. +SCSS files use the extension `.scss`. + +The second, older syntax is known as the indented syntax (or just "Sass"). +Inspired by Haml's terseness, it's intended for people +who prefer conciseness over similarity to CSS. +Instead of brackets and semicolons, +it uses the indentation of lines to specify blocks. +Although no longer the primary syntax, +the indented syntax will continue to be supported. +Files in the indented syntax use the extension `.sass`. + +## Using + +Sass can be used from the command line +or as part of a web framework. +The first step is to install the gem: + + gem install sass + +After you convert some CSS to Sass, you can run + + sass style.scss + +to compile it back to CSS. +For more information on these commands, check out + + sass --help + +To install Sass in Rails 2, +just add `config.gem "sass"` to `config/environment.rb`. +In Rails 3, add `gem "sass"` to your Gemfile instead. +`.sass` or `.scss` files should be placed in `public/stylesheets/sass`, +where they'll be automatically compiled +to corresponding CSS files in `public/stylesheets` when needed +(the Sass template directory is customizable... +see [the Sass reference](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#template_location-option) for details). + +Sass can also be used with any Rack-enabled web framework. +To do so, just add + +```ruby +require 'sass/plugin/rack' +use Sass::Plugin::Rack +``` + +to `config.ru`. +Then any Sass files in `public/stylesheets/sass` +will be compiled into CSS files in `public/stylesheets` on every request. + +To use Sass programmatically, +check out the [YARD documentation](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#using_sass). + +## Formatting + +Sass is an extension of CSS +that adds power and elegance to the basic language. +It allows you to use [variables][vars], [nested rules][nested], +[mixins][mixins], [inline imports][imports], +and more, all with a fully CSS-compatible syntax. +Sass helps keep large stylesheets well-organized, +and get small stylesheets up and running quickly, +particularly with the help of +[the Compass style library](http://compass-style.org). + +[vars]: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variables_ +[nested]: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#nested_rules +[mixins]: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixins +[imports]: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#import + +Sass has two syntaxes. +The one presented here, known as "SCSS" (for "Sassy CSS"), +is fully CSS-compatible. +The other (older) syntax, known as the indented syntax or just "Sass", +is whitespace-sensitive and indentation-based. +For more information, see the [reference documentation][syntax]. + +[syntax]: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#syntax + +To run the following examples and see the CSS they produce, +put them in a file called `test.scss` and run `sass test.scss`. + +### Nesting + +Sass avoids repetition by nesting selectors within one another. +The same thing works for properties. + +```scss +table.hl { + margin: 2em 0; + td.ln { text-align: right; } +} + +li { + font: { + family: serif; + weight: bold; + size: 1.2em; + } +} +``` + +### Variables + +Use the same color all over the place? +Need to do some math with height and width and text size? +Sass supports variables, math operations, and many useful functions. + +```scss +$blue: #3bbfce; +$margin: 16px; + +.content_navigation { + border-color: $blue; + color: darken($blue, 10%); +} + +.border { + padding: $margin / 2; + margin: $margin / 2; + border-color: $blue; +} +``` + +### Mixins + +Even more powerful than variables, +mixins allow you to re-use whole chunks of CSS, +properties or selectors. +You can even give them arguments. + +```scss +@mixin table-scaffolding { + th { + text-align: center; + font-weight: bold; + } + td, th { padding: 2px; } +} + +@mixin left($dist) { + float: left; + margin-left: $dist; +} + +#data { + @include left(10px); + @include table-scaffolding; +} +``` + +A comprehensive list of features is available +in the [Sass reference](http://sass-lang.com/documentation/file.SASS_REFERENCE.html). + +## Executables + +The Sass gem includes several executables that are useful +for dealing with Sass from the command line. + +### `sass` + +The `sass` executable transforms a source Sass file into CSS. +See `sass --help` for further information and options. + +### `sass-convert` + +The `sass-convert` executable converts between CSS, Sass, and SCSS. +When converting from CSS to Sass or SCSS, +nesting is applied where appropriate. +See `sass-convert --help` for further information and options. + +### Running locally + +To run the Sass executables from a source checkout instead of from rubygems: + +``` +$ cd sass +$ bundle +$ bundle exec sass ... +$ bundle exec scss ... +$ bundle exec sass-convert ... +``` + +## Authors + +Sass was envisioned by [Hampton Catlin](http://www.hamptoncatlin.com) +(@hcatlin). However, Hampton doesn't even know his way around the code anymore +and now occasionally consults on the language issues. Hampton lives in San +Francisco, California and works as VP of Technology +at [Moovweb](http://www.moovweb.com/). + +[Natalie Weizenbaum](https://twitter.com/nex3) is the primary developer and +architect of Sass. Her hard work has kept the project alive by endlessly +answering forum posts, fixing bugs, refactoring, finding speed improvements, +writing documentation, implementing new features, and designing the language. +Natalie lives in Seattle, Washington and works on [Dart](http://dartlang.org) +application libraries at Google. + +[Chris Eppstein](http://twitter.com/chriseppstein) is a core contributor to +Sass and the creator of [Compass](http://compass-style.org/), the first Sass-based framework, and +[Eyeglass](http://github.com/sass-eyeglass/eyeglass), a node-sass plugin ecosystem for NPM. Chris focuses +on making Sass more powerful, easy to use, and on ways to speed its adoption +through the web development community. Chris lives in San Jose, California with +his wife and two children. He is an Engineer for +[LinkedIn.com](http://linkedin.com), where his primary responsibility is to +maintain Sass and many other Sass-related open source projects. + +If you use this software, we'd be truly honored if you'd make a +tax-deductible donation to a non-profit organization and then +[let us know on twitter](http://twitter.com/SassCSS), so that we can +thank you. Here's a few that we endorse: + +* [Trans Justice Funding Project](http://www.transjusticefundingproject.org/) +* [United Mitochondrial Disease Foundation](http://umdf.org/compass) +* [Girl Develop It](https://www.girldevelopit.com/donate) + +Sass is licensed under the MIT License. diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/REVISION b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/REVISION new file mode 100644 index 0000000000..54798d678b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/REVISION @@ -0,0 +1 @@ +(release) diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION new file mode 100644 index 0000000000..c1e43e6d45 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION @@ -0,0 +1 @@ +3.7.3 diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_DATE b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_DATE new file mode 100644 index 0000000000..4589d9189d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_DATE @@ -0,0 +1 @@ +04 January 2019 19:29:42 UTC diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_NAME b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_NAME new file mode 100644 index 0000000000..ee5e396d75 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/VERSION_NAME @@ -0,0 +1 @@ +Bleeding Edge diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass new file mode 100755 index 0000000000..62d6d0c9f5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby +# The command line Sass parser. + +THIS_FILE = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__ +begin + require File.dirname(THIS_FILE) + '/../lib/sass' +rescue LoadError + require 'sass' +end +require 'sass/exec' + +opts = Sass::Exec::SassScss.new(ARGV, :sass) +opts.parse! diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass-convert b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass-convert new file mode 100755 index 0000000000..b27625311b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/sass-convert @@ -0,0 +1,12 @@ +#!/usr/bin/env ruby + +THIS_FILE = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__ +begin + require File.dirname(THIS_FILE) + '/../lib/sass' +rescue LoadError + require 'sass' +end +require 'sass/exec' + +opts = Sass::Exec::SassConvert.new(ARGV) +opts.parse! diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/scss b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/scss new file mode 100755 index 0000000000..ce3c4ad090 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/bin/scss @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby +# The command line Sass parser. + +THIS_FILE = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__ +begin + require File.dirname(THIS_FILE) + '/../lib/sass' +rescue LoadError + require 'sass' +end +require 'sass/exec' + +opts = Sass::Exec::SassScss.new(ARGV, :scss) +opts.parse! diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/sass-spec-ref.sh b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/sass-spec-ref.sh new file mode 100755 index 0000000000..5e0f885d71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/sass-spec-ref.sh @@ -0,0 +1,40 @@ +#!/bin/bash -e +# Copyright 2016 Google Inc. Use of this source code is governed by an MIT-style +# license that can be found in the LICENSE file or at +# https://opensource.org/licenses/MIT. + +# Echoes the sass-spec Git ref that should be checked out for the current Travis +# run. If we're running specs for a pull request which refers to a sass-spec +# pull request, we'll run against the latter rather than sass-spec master. + +default=master + +if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + >&2 echo "TRAVIS_PULL_REQUEST: $TRAVIS_PULL_REQUEST." + >&2 echo "Ref: $default." + echo "$default" + exit 0 +fi + +>&2 echo "Fetching pull request $TRAVIS_PULL_REQUEST..." + +url=https://api.github.com/repos/sass/ruby-sass/pulls/$TRAVIS_PULL_REQUEST +if [ -z "$GITHUB_AUTH" ]; then + >&2 echo "Fetching pull request info without authentication" + JSON=$(curl -L -sS $url) +else + >&2 echo "Fetching pull request info as sassbot" + JSON=$(curl -u "sassbot:$GITHUB_AUTH" -L -sS $url) +fi +>&2 echo "$JSON" + +RE_SPEC_PR="sass\/sass-spec(#|\/pull\/)([0-9]+)" + +if [[ $JSON =~ $RE_SPEC_PR ]]; then + ref="pull/${BASH_REMATCH[2]}/head" + >&2 echo "Ref: $ref." + echo "$ref" +else + >&2 echo "Ref: $default." + echo "$default" +fi diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/update_watch.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/update_watch.rb new file mode 100644 index 0000000000..dc90685bec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/extra/update_watch.rb @@ -0,0 +1,13 @@ +require 'rubygems' +require 'sinatra' +require 'json' +set :port, 3124 +set :environment, :production +enable :lock +Dir.chdir(File.dirname(__FILE__) + "/..") + +post "/" do + puts "Received payload!" + puts "Rev: #{`git name-rev HEAD`.strip}" + system %{rake handle_update --trace REF=#{JSON.parse(params["payload"])["ref"].inspect}} +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/init.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/init.rb new file mode 100644 index 0000000000..5a3bceb4a4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/init.rb @@ -0,0 +1,18 @@ +begin + require File.join(File.dirname(__FILE__), 'lib', 'sass') # From here +rescue LoadError + begin + require 'sass' # From gem + rescue LoadError => e + # gems:install may be run to install Haml with the skeleton plugin + # but not the gem itself installed. + # Don't die if this is the case. + raise e unless defined?(Rake) && + (Rake.application.top_level_tasks.include?('gems') || + Rake.application.top_level_tasks.include?('gems:install')) + end +end + +# Load Sass. +# Sass may be undefined if we're running gems:install. +require 'sass/plugin' if defined?(Sass) diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass.rb new file mode 100644 index 0000000000..a569bc3b0c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass.rb @@ -0,0 +1,102 @@ +dir = File.dirname(__FILE__) +$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir) + +require 'sass/version' + +# The module that contains everything Sass-related: +# +# * {Sass::Engine} is the class used to render Sass/SCSS within Ruby code. +# * {Sass::Plugin} is interfaces with web frameworks (Rails and Merb in particular). +# * {Sass::SyntaxError} is raised when Sass encounters an error. +# * {Sass::CSS} handles conversion of CSS to Sass. +# +# Also see the {file:SASS_REFERENCE.md full Sass reference}. +module Sass + class << self + # @private + attr_accessor :tests_running + end + + # The global load paths for Sass files. This is meant for plugins and + # libraries to register the paths to their Sass stylesheets to that they may + # be `@imported`. This load path is used by every instance of {Sass::Engine}. + # They are lower-precedence than any load paths passed in via the + # {file:SASS_REFERENCE.md#load_paths-option `:load_paths` option}. + # + # If the `SASS_PATH` environment variable is set, + # the initial value of `load_paths` will be initialized based on that. + # The variable should be a colon-separated list of path names + # (semicolon-separated on Windows). + # + # Note that files on the global load path are never compiled to CSS + # themselves, even if they aren't partials. They exist only to be imported. + # + # @example + # Sass.load_paths << File.dirname(__FILE__ + '/sass') + # @return [Array] + def self.load_paths + @load_paths ||= if ENV['SASS_PATH'] + ENV['SASS_PATH'].split(Sass::Util.windows? ? ';' : ':') + else + [] + end + end + + # Compile a Sass or SCSS string to CSS. + # Defaults to SCSS. + # + # @param contents [String] The contents of the Sass file. + # @param options [{Symbol => Object}] An options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + # @raise [Sass::SyntaxError] if there's an error in the document + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + def self.compile(contents, options = {}) + options[:syntax] ||= :scss + Engine.new(contents, options).to_css + end + + # Compile a file on disk to CSS. + # + # @raise [Sass::SyntaxError] if there's an error in the document + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + # + # @overload compile_file(filename, options = {}) + # Return the compiled CSS rather than writing it to a file. + # + # @param filename [String] The path to the Sass, SCSS, or CSS file on disk. + # @param options [{Symbol => Object}] An options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + # @return [String] The compiled CSS. + # + # @overload compile_file(filename, css_filename, options = {}) + # Write the compiled CSS to a file. + # + # @param filename [String] The path to the Sass, SCSS, or CSS file on disk. + # @param options [{Symbol => Object}] An options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + # @param css_filename [String] The location to which to write the compiled CSS. + def self.compile_file(filename, *args) + options = args.last.is_a?(Hash) ? args.pop : {} + css_filename = args.shift + result = Sass::Engine.for_file(filename, options).render + if css_filename + options[:css_filename] ||= css_filename + open(css_filename, "w") {|css_file| css_file.write(result)} + nil + else + result + end + end +end + +require 'sass/logger' +require 'sass/util' + +require 'sass/engine' +require 'sass/plugin' if defined?(Merb::Plugins) +require 'sass/railtie' +require 'sass/features' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores.rb new file mode 100644 index 0000000000..62259b3281 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores.rb @@ -0,0 +1,15 @@ +require 'stringio' + +module Sass + # Sass cache stores are in charge of storing cached information, + # especially parse trees for Sass documents. + # + # User-created importers must inherit from {CacheStores::Base}. + module CacheStores + end +end + +require 'sass/cache_stores/base' +require 'sass/cache_stores/filesystem' +require 'sass/cache_stores/memory' +require 'sass/cache_stores/chain' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/base.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/base.rb new file mode 100644 index 0000000000..e239666d1d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/base.rb @@ -0,0 +1,88 @@ +module Sass + module CacheStores + # An abstract base class for backends for the Sass cache. + # Any key-value store can act as such a backend; + # it just needs to implement the + # \{#_store} and \{#_retrieve} methods. + # + # To use a cache store with Sass, + # use the {file:SASS_REFERENCE.md#cache_store-option `:cache_store` option}. + # + # @abstract + class Base + # Store cached contents for later retrieval + # Must be implemented by all CacheStore subclasses + # + # Note: cache contents contain binary data. + # + # @param key [String] The key to store the contents under + # @param version [String] The current sass version. + # Cached contents must not be retrieved across different versions of sass. + # @param sha [String] The sha of the sass source. + # Cached contents must not be retrieved if the sha has changed. + # @param contents [String] The contents to store. + def _store(key, version, sha, contents) + raise "#{self.class} must implement #_store." + end + + # Retrieved cached contents. + # Must be implemented by all subclasses. + # + # Note: if the key exists but the sha or version have changed, + # then the key may be deleted by the cache store, if it wants to do so. + # + # @param key [String] The key to retrieve + # @param version [String] The current sass version. + # Cached contents must not be retrieved across different versions of sass. + # @param sha [String] The sha of the sass source. + # Cached contents must not be retrieved if the sha has changed. + # @return [String] The contents that were previously stored. + # @return [NilClass] when the cache key is not found or the version or sha have changed. + def _retrieve(key, version, sha) + raise "#{self.class} must implement #_retrieve." + end + + # Store a {Sass::Tree::RootNode}. + # + # @param key [String] The key to store it under. + # @param sha [String] The checksum for the contents that are being stored. + # @param root [Object] The root node to cache. + def store(key, sha, root) + _store(key, Sass::VERSION, sha, Marshal.dump(root)) + rescue TypeError, LoadError => e + Sass::Util.sass_warn "Warning. Error encountered while saving cache #{path_to(key)}: #{e}" + nil + end + + # Retrieve a {Sass::Tree::RootNode}. + # + # @param key [String] The key the root element was stored under. + # @param sha [String] The checksum of the root element's content. + # @return [Object] The cached object. + def retrieve(key, sha) + contents = _retrieve(key, Sass::VERSION, sha) + Marshal.load(contents) if contents + rescue EOFError, TypeError, ArgumentError, LoadError => e + Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}" + nil + end + + # Return the key for the sass file. + # + # The `(sass_dirname, sass_basename)` pair + # should uniquely identify the Sass document, + # but otherwise there are no restrictions on their content. + # + # @param sass_dirname [String] + # The fully-expanded location of the Sass file. + # This corresponds to the directory name on a filesystem. + # @param sass_basename [String] The name of the Sass file that is being referenced. + # This corresponds to the basename on a filesystem. + def key(sass_dirname, sass_basename) + dir = Digest::SHA1.hexdigest(sass_dirname) + filename = "#{sass_basename}c" + "#{dir}/#{filename}" + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/chain.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/chain.rb new file mode 100644 index 0000000000..914c1117c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/chain.rb @@ -0,0 +1,34 @@ +module Sass + module CacheStores + # A meta-cache that chains multiple caches together. + # Specifically: + # + # * All `#store`s are passed to all caches. + # * `#retrieve`s are passed to each cache until one has a hit. + # * When one cache has a hit, the value is `#store`d in all earlier caches. + class Chain < Base + # Create a new cache chaining the given caches. + # + # @param caches [Array] The caches to chain. + def initialize(*caches) + @caches = caches + end + + # @see Base#store + def store(key, sha, obj) + @caches.each {|c| c.store(key, sha, obj)} + end + + # @see Base#retrieve + def retrieve(key, sha) + @caches.each_with_index do |c, i| + obj = c.retrieve(key, sha) + next unless obj + @caches[0...i].each {|prev| prev.store(key, sha, obj)} + return obj + end + nil + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/filesystem.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/filesystem.rb new file mode 100644 index 0000000000..140f5f1c3e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/filesystem.rb @@ -0,0 +1,60 @@ +require 'fileutils' + +module Sass + module CacheStores + # A backend for the Sass cache using the filesystem. + class Filesystem < Base + # The directory where the cached files will be stored. + # + # @return [String] + attr_accessor :cache_location + + # @param cache_location [String] see \{#cache\_location} + def initialize(cache_location) + @cache_location = cache_location + end + + # @see Base#\_retrieve + def _retrieve(key, version, sha) + return unless File.readable?(path_to(key)) + begin + File.open(path_to(key), "rb") do |f| + if f.readline("\n").strip == version && f.readline("\n").strip == sha + return f.read + end + end + File.unlink path_to(key) + rescue Errno::ENOENT + # Already deleted. Race condition? + end + nil + rescue EOFError, TypeError, ArgumentError => e + Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}" + end + + # @see Base#\_store + def _store(key, version, sha, contents) + compiled_filename = path_to(key) + FileUtils.mkdir_p(File.dirname(compiled_filename)) + Sass::Util.atomic_create_and_write_file(compiled_filename) do |f| + f.puts(version) + f.puts(sha) + f.write(contents) + end + rescue Errno::EACCES + # pass + end + + private + + # Returns the path to a file for the given key. + # + # @param key [String] + # @return [String] The path to the cache file. + def path_to(key) + key = key.gsub(/[<>:\\|?*%]/) {|c| "%%%03d" % c.ord} + File.join(cache_location, key) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/memory.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/memory.rb new file mode 100644 index 0000000000..ccf64beaab --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/memory.rb @@ -0,0 +1,46 @@ +module Sass + module CacheStores + # A backend for the Sass cache using in-process memory. + class Memory < Base + # Since the {Memory} store is stored in the Sass tree's options hash, + # when the options get serialized as part of serializing the tree, + # you get crazy exponential growth in the size of the cached objects + # unless you don't dump the cache. + # + # @private + def _dump(depth) + "" + end + + # If we deserialize this class, just make a new empty one. + # + # @private + def self._load(repr) + Memory.new + end + + # Create a new, empty cache store. + def initialize + @contents = {} + end + + # @see Base#retrieve + def retrieve(key, sha) + return unless @contents.has_key?(key) + return unless @contents[key][:sha] == sha + obj = @contents[key][:obj] + obj.respond_to?(:deep_copy) ? obj.deep_copy : obj.dup + end + + # @see Base#store + def store(key, sha, obj) + @contents[key] = {:sha => sha, :obj => obj} + end + + # Destructively clear the cache. + def reset! + @contents = {} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/null.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/null.rb new file mode 100644 index 0000000000..f14f4c7ed5 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/cache_stores/null.rb @@ -0,0 +1,25 @@ +module Sass + module CacheStores + # Doesn't store anything, but records what things it should have stored. + # This doesn't currently have any use except for testing and debugging. + # + # @private + class Null < Base + def initialize + @keys = {} + end + + def _retrieve(key, version, sha) + nil + end + + def _store(key, version, sha, contents) + @keys[key] = true + end + + def was_set?(key) + @keys[key] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/callbacks.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/callbacks.rb new file mode 100644 index 0000000000..a33a509034 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/callbacks.rb @@ -0,0 +1,67 @@ +module Sass + # A lightweight infrastructure for defining and running callbacks. + # Callbacks are defined using \{#define\_callback\} at the class level, + # and called using `run_#{name}` at the instance level. + # + # Clients can add callbacks by calling the generated `on_#{name}` method, + # and passing in a block that's run when the callback is activated. + # + # @example Define a callback + # class Munger + # extend Sass::Callbacks + # define_callback :string_munged + # + # def munge(str) + # res = str.gsub(/[a-z]/, '\1\1') + # run_string_munged str, res + # res + # end + # end + # + # @example Use a callback + # m = Munger.new + # m.on_string_munged {|str, res| puts "#{str} was munged into #{res}!"} + # m.munge "bar" #=> bar was munged into bbaarr! + module Callbacks + # Automatically includes {InstanceMethods} + # when something extends this module. + # + # @param base [Module] + def self.extended(base) + base.send(:include, InstanceMethods) + end + + protected + + module InstanceMethods + # Removes all callbacks registered against this object. + def clear_callbacks! + @_sass_callbacks = {} + end + end + + # Define a callback with the given name. + # This will define an `on_#{name}` method + # that registers a block, + # and a `run_#{name}` method that runs that block + # (optionall with some arguments). + # + # @param name [Symbol] The name of the callback + # @return [void] + def define_callback(name) + class_eval < "p\n color: blue" + # Sass::CSS.new("p { color: blue }").render(:scss) #=> "p {\n color: blue; }" + class CSS + # @param template [String] The CSS stylesheet. + # This stylesheet can be encoded using any encoding + # that can be converted to Unicode. + # If the stylesheet contains an `@charset` declaration, + # that overrides the Ruby encoding + # (see {file:SASS_REFERENCE.md#Encodings the encoding documentation}) + # @option options :old [Boolean] (false) + # Whether or not to output old property syntax + # (`:color blue` as opposed to `color: blue`). + # This is only meaningful when generating Sass code, + # rather than SCSS. + # @option options :indent [String] (" ") + # The string to use for indenting each line. Defaults to two spaces. + def initialize(template, options = {}) + if template.is_a? IO + template = template.read + end + + @options = options.merge(:_convert => true) + # Backwards compatibility + @options[:old] = true if @options[:alternate] == false + @template = template + @checked_encoding = false + end + + # Converts the CSS template into Sass or SCSS code. + # + # @param fmt [Symbol] `:sass` or `:scss`, designating the format to return. + # @return [String] The resulting Sass or SCSS code + # @raise [Sass::SyntaxError] if there's an error parsing the CSS template + def render(fmt = :sass) + check_encoding! + build_tree.send("to_#{fmt}", @options).strip + "\n" + rescue Sass::SyntaxError => err + err.modify_backtrace(:filename => @options[:filename] || '(css)') + raise err + end + + # Returns the original encoding of the document. + # + # @return [Encoding, nil] + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + def source_encoding + check_encoding! + @original_encoding + end + + private + + def check_encoding! + return if @checked_encoding + @checked_encoding = true + @template, @original_encoding = Sass::Util.check_sass_encoding(@template) + end + + # Parses the CSS template and applies various transformations + # + # @return [Tree::Node] The root node of the parsed tree + def build_tree + root = Sass::SCSS::CssParser.new(@template, @options[:filename], nil).parse + parse_selectors(root) + expand_commas(root) + nest_seqs(root) + parent_ref_rules(root) + flatten_rules(root) + bubble_subject(root) + fold_commas(root) + dump_selectors(root) + root + end + + # Parse all the selectors in the document and assign them to + # {Sass::Tree::RuleNode#parsed_rules}. + # + # @param root [Tree::Node] The parent node + def parse_selectors(root) + root.children.each do |child| + next parse_selectors(child) if child.is_a?(Tree::DirectiveNode) + next unless child.is_a?(Tree::RuleNode) + parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, nil, child.line) + child.parsed_rules = parser.parse_selector + end + end + + # Transform + # + # foo, bar, baz + # color: blue + # + # into + # + # foo + # color: blue + # bar + # color: blue + # baz + # color: blue + # + # @param root [Tree::Node] The parent node + def expand_commas(root) + root.children.map! do |child| + # child.parsed_rules.members.size > 1 iff the rule contains a comma + unless child.is_a?(Tree::RuleNode) && child.parsed_rules.members.size > 1 + expand_commas(child) if child.is_a?(Tree::DirectiveNode) + next child + end + child.parsed_rules.members.map do |seq| + node = Tree::RuleNode.new([]) + node.parsed_rules = make_cseq(seq) + node.children = child.children + node + end + end + root.children.flatten! + end + + # Make rules use nesting so that + # + # foo + # color: green + # foo bar + # color: red + # foo baz + # color: blue + # + # becomes + # + # foo + # color: green + # bar + # color: red + # baz + # color: blue + # + # @param root [Tree::Node] The parent node + def nest_seqs(root) + current_rule = nil + root.children.map! do |child| + unless child.is_a?(Tree::RuleNode) + nest_seqs(child) if child.is_a?(Tree::DirectiveNode) + next child + end + + seq = first_seq(child) + seq.members.reject! {|sseq| sseq == "\n"} + first, rest = seq.members.first, seq.members[1..-1] + + if current_rule.nil? || first_sseq(current_rule) != first + current_rule = Tree::RuleNode.new([]) + current_rule.parsed_rules = make_seq(first) + end + + if rest.empty? + current_rule.children += child.children + else + child.parsed_rules = make_seq(*rest) + current_rule << child + end + + current_rule + end + root.children.compact! + root.children.uniq! + + root.children.each {|v| nest_seqs(v)} + end + + # Make rules use parent refs so that + # + # foo + # color: green + # foo.bar + # color: blue + # + # becomes + # + # foo + # color: green + # &.bar + # color: blue + # + # @param root [Tree::Node] The parent node + def parent_ref_rules(root) + current_rule = nil + root.children.map! do |child| + unless child.is_a?(Tree::RuleNode) + parent_ref_rules(child) if child.is_a?(Tree::DirectiveNode) + next child + end + + sseq = first_sseq(child) + next child unless sseq.is_a?(Sass::Selector::SimpleSequence) + + firsts, rest = [sseq.members.first], sseq.members[1..-1] + firsts.push rest.shift if firsts.first.is_a?(Sass::Selector::Parent) + + last_simple_subject = rest.empty? && sseq.subject? + if current_rule.nil? || first_sseq(current_rule).members != firsts || + !!first_sseq(current_rule).subject? != !!last_simple_subject + current_rule = Tree::RuleNode.new([]) + current_rule.parsed_rules = make_sseq(last_simple_subject, *firsts) + end + + if rest.empty? + current_rule.children += child.children + else + rest.unshift Sass::Selector::Parent.new + child.parsed_rules = make_sseq(sseq.subject?, *rest) + current_rule << child + end + + current_rule + end + root.children.compact! + root.children.uniq! + + root.children.each {|v| parent_ref_rules(v)} + end + + # Flatten rules so that + # + # foo + # bar + # color: red + # + # becomes + # + # foo bar + # color: red + # + # and + # + # foo + # &.bar + # color: blue + # + # becomes + # + # foo.bar + # color: blue + # + # @param root [Tree::Node] The parent node + def flatten_rules(root) + root.children.each do |child| + case child + when Tree::RuleNode + flatten_rule(child) + when Tree::DirectiveNode + flatten_rules(child) + end + end + end + + # Flattens a single rule. + # + # @param rule [Tree::RuleNode] The candidate for flattening + # @see #flatten_rules + def flatten_rule(rule) + while rule.children.size == 1 && rule.children.first.is_a?(Tree::RuleNode) + child = rule.children.first + + if first_simple_sel(child).is_a?(Sass::Selector::Parent) + rule.parsed_rules = child.parsed_rules.resolve_parent_refs(rule.parsed_rules) + else + rule.parsed_rules = make_seq(*(first_seq(rule).members + first_seq(child).members)) + end + + rule.children = child.children + end + + flatten_rules(rule) + end + + def bubble_subject(root) + root.children.each do |child| + bubble_subject(child) if child.is_a?(Tree::RuleNode) || child.is_a?(Tree::DirectiveNode) + next unless child.is_a?(Tree::RuleNode) && !child.children.empty? + next unless child.children.all? do |c| + next unless c.is_a?(Tree::RuleNode) + first_simple_sel(c).is_a?(Sass::Selector::Parent) && first_sseq(c).subject? + end + first_sseq(child).subject = true + child.children.each {|c| first_sseq(c).subject = false} + end + end + + # Transform + # + # foo + # bar + # color: blue + # baz + # color: blue + # + # into + # + # foo + # bar, baz + # color: blue + # + # @param root [Tree::Node] The parent node + def fold_commas(root) + prev_rule = nil + root.children.map! do |child| + unless child.is_a?(Tree::RuleNode) + fold_commas(child) if child.is_a?(Tree::DirectiveNode) + next child + end + + if prev_rule && prev_rule.children.map {|c| c.to_sass} == child.children.map {|c| c.to_sass} + prev_rule.parsed_rules.members << first_seq(child) + next nil + end + + fold_commas(child) + prev_rule = child + child + end + root.children.compact! + end + + # Dump all the parsed {Sass::Tree::RuleNode} selectors to strings. + # + # @param root [Tree::Node] The parent node + def dump_selectors(root) + root.children.each do |child| + next dump_selectors(child) if child.is_a?(Tree::DirectiveNode) + next unless child.is_a?(Tree::RuleNode) + child.rule = [child.parsed_rules.to_s] + dump_selectors(child) + end + end + + # Create a {Sass::Selector::CommaSequence}. + # + # @param seqs [Array] + # @return [Sass::Selector::CommaSequence] + def make_cseq(*seqs) + Sass::Selector::CommaSequence.new(seqs) + end + + # Create a {Sass::Selector::CommaSequence} containing only a single + # {Sass::Selector::Sequence}. + # + # @param sseqs [Array] + # @return [Sass::Selector::CommaSequence] + def make_seq(*sseqs) + make_cseq(Sass::Selector::Sequence.new(sseqs)) + end + + # Create a {Sass::Selector::CommaSequence} containing only a single + # {Sass::Selector::Sequence} which in turn contains only a single + # {Sass::Selector::SimpleSequence}. + # + # @param subject [Boolean] Whether this is a subject selector + # @param sseqs [Array] + # @return [Sass::Selector::CommaSequence] + def make_sseq(subject, *sseqs) + make_seq(Sass::Selector::SimpleSequence.new(sseqs, subject)) + end + + # Return the first {Sass::Selector::Sequence} in a {Sass::Tree::RuleNode}. + # + # @param rule [Sass::Tree::RuleNode] + # @return [Sass::Selector::Sequence] + def first_seq(rule) + rule.parsed_rules.members.first + end + + # Return the first {Sass::Selector::SimpleSequence} in a + # {Sass::Tree::RuleNode}. + # + # @param rule [Sass::Tree::RuleNode] + # @return [Sass::Selector::SimpleSequence, String] + def first_sseq(rule) + first_seq(rule).members.first + end + + # Return the first {Sass::Selector::Simple} in a {Sass::Tree::RuleNode}, + # unless the rule begins with a combinator. + # + # @param rule [Sass::Tree::RuleNode] + # @return [Sass::Selector::Simple?] + def first_simple_sel(rule) + sseq = first_sseq(rule) + return unless sseq.is_a?(Sass::Selector::SimpleSequence) + sseq.members.first + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/deprecation.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/deprecation.rb new file mode 100644 index 0000000000..16ccacab8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/deprecation.rb @@ -0,0 +1,55 @@ +module Sass + # A deprecation warning that should only be printed once for a given line in a + # given file. + # + # A global Deprecation instance should be created for each type of deprecation + # warning, and `warn` should be called each time a warning is needed. + class Deprecation + @@allow_double_warnings = false + + # Runs a block in which double deprecation warnings for the same location + # are allowed. + def self.allow_double_warnings + old_allow_double_warnings = @@allow_double_warnings + @@allow_double_warnings = true + yield + ensure + @@allow_double_warnings = old_allow_double_warnings + end + + def initialize + # A set of filename, line pairs for which warnings have been emitted. + @seen = Set.new + end + + # Prints `message` as a deprecation warning associated with `filename`, + # `line`, and optionally `column`. + # + # This ensures that only one message will be printed for each line of a + # given file. + # + # @overload warn(filename, line, message) + # @param filename [String, nil] + # @param line [Number] + # @param message [String] + # @overload warn(filename, line, column, message) + # @param filename [String, nil] + # @param line [Number] + # @param column [Number] + # @param message [String] + def warn(filename, line, column_or_message, message = nil) + return if !@@allow_double_warnings && @seen.add?([filename, line]).nil? + if message + column = column_or_message + else + message = column_or_message + end + + location = "line #{line}" + location << ", column #{column}" if column + location << " of #{filename}" if filename + + Sass::Util.sass_warn("DEPRECATION WARNING on #{location}:\n#{message}") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/engine.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/engine.rb new file mode 100644 index 0000000000..b777e8add7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/engine.rb @@ -0,0 +1,1236 @@ +require 'set' +require 'digest/sha1' +require 'sass/cache_stores' +require 'sass/deprecation' +require 'sass/source/position' +require 'sass/source/range' +require 'sass/source/map' +require 'sass/tree/node' +require 'sass/tree/root_node' +require 'sass/tree/rule_node' +require 'sass/tree/comment_node' +require 'sass/tree/prop_node' +require 'sass/tree/directive_node' +require 'sass/tree/media_node' +require 'sass/tree/supports_node' +require 'sass/tree/css_import_node' +require 'sass/tree/variable_node' +require 'sass/tree/mixin_def_node' +require 'sass/tree/mixin_node' +require 'sass/tree/trace_node' +require 'sass/tree/content_node' +require 'sass/tree/function_node' +require 'sass/tree/return_node' +require 'sass/tree/extend_node' +require 'sass/tree/if_node' +require 'sass/tree/while_node' +require 'sass/tree/for_node' +require 'sass/tree/each_node' +require 'sass/tree/debug_node' +require 'sass/tree/warn_node' +require 'sass/tree/import_node' +require 'sass/tree/charset_node' +require 'sass/tree/at_root_node' +require 'sass/tree/keyframe_rule_node' +require 'sass/tree/error_node' +require 'sass/tree/visitors/base' +require 'sass/tree/visitors/perform' +require 'sass/tree/visitors/cssize' +require 'sass/tree/visitors/extend' +require 'sass/tree/visitors/convert' +require 'sass/tree/visitors/to_css' +require 'sass/tree/visitors/deep_copy' +require 'sass/tree/visitors/set_options' +require 'sass/tree/visitors/check_nesting' +require 'sass/selector' +require 'sass/environment' +require 'sass/script' +require 'sass/scss' +require 'sass/stack' +require 'sass/error' +require 'sass/importers' +require 'sass/shared' +require 'sass/media' +require 'sass/supports' + +module Sass + # A Sass mixin or function. + # + # `name`: `String` + # : The name of the mixin/function. + # + # `args`: `Array<(Script::Tree::Node, Script::Tree::Node)>` + # : The arguments for the mixin/function. + # Each element is a tuple containing the variable node of the argument + # and the parse tree for the default value of the argument. + # + # `splat`: `Script::Tree::Node?` + # : The variable node of the splat argument for this callable, or null. + # + # `environment`: {Sass::Environment} + # : The environment in which the mixin/function was defined. + # This is captured so that the mixin/function can have access + # to local variables defined in its scope. + # + # `tree`: `Array` + # : The parse tree for the mixin/function. + # + # `has_content`: `Boolean` + # : Whether the callable accepts a content block. + # + # `type`: `String` + # : The user-friendly name of the type of the callable. + # + # `origin`: `Symbol` + # : From whence comes the callable: `:stylesheet`, `:builtin`, `:css` + # A callable with an origin of `:stylesheet` was defined in the stylesheet itself. + # A callable with an origin of `:builtin` was defined in ruby. + # A callable (function) with an origin of `:css` returns a function call with arguments to CSS. + Callable = Struct.new(:name, :args, :splat, :environment, :tree, :has_content, :type, :origin) + + # This class handles the parsing and compilation of the Sass template. + # Example usage: + # + # template = File.read('stylesheets/sassy.sass') + # sass_engine = Sass::Engine.new(template) + # output = sass_engine.render + # puts output + class Engine + @@old_property_deprecation = Deprecation.new + + # A line of Sass code. + # + # `text`: `String` + # : The text in the line, without any whitespace at the beginning or end. + # + # `tabs`: `Integer` + # : The level of indentation of the line. + # + # `index`: `Integer` + # : The line number in the original document. + # + # `offset`: `Integer` + # : The number of bytes in on the line that the text begins. + # This ends up being the number of bytes of leading whitespace. + # + # `filename`: `String` + # : The name of the file in which this line appeared. + # + # `children`: `Array` + # : The lines nested below this one. + # + # `comment_tab_str`: `String?` + # : The prefix indentation for this comment, if it is a comment. + class Line < Struct.new(:text, :tabs, :index, :offset, :filename, :children, :comment_tab_str) + def comment? + text[0] == COMMENT_CHAR && (text[1] == SASS_COMMENT_CHAR || text[1] == CSS_COMMENT_CHAR) + end + end + + # The character that begins a CSS property. + PROPERTY_CHAR = ?: + + # The character that designates the beginning of a comment, + # either Sass or CSS. + COMMENT_CHAR = ?/ + + # The character that follows the general COMMENT_CHAR and designates a Sass comment, + # which is not output as a CSS comment. + SASS_COMMENT_CHAR = ?/ + + # The character that indicates that a comment allows interpolation + # and should be preserved even in `:compressed` mode. + SASS_LOUD_COMMENT_CHAR = ?! + + # The character that follows the general COMMENT_CHAR and designates a CSS comment, + # which is embedded in the CSS document. + CSS_COMMENT_CHAR = ?* + + # The character used to denote a compiler directive. + DIRECTIVE_CHAR = ?@ + + # Designates a non-parsed rule. + ESCAPE_CHAR = ?\\ + + # Designates block as mixin definition rather than CSS rules to output + MIXIN_DEFINITION_CHAR = ?= + + # Includes named mixin declared using MIXIN_DEFINITION_CHAR + MIXIN_INCLUDE_CHAR = ?+ + + # The regex that matches and extracts data from + # properties of the form `:name prop`. + PROPERTY_OLD = /^:([^\s=:"]+)\s*(?:\s+|$)(.*)/ + + # The default options for Sass::Engine. + # @api public + DEFAULT_OPTIONS = { + :style => :nested, + :load_paths => [], + :cache => true, + :cache_location => './.sass-cache', + :syntax => :sass, + :filesystem_importer => Sass::Importers::Filesystem + }.freeze + + # Converts a Sass options hash into a standard form, filling in + # default values and resolving aliases. + # + # @param options [{Symbol => Object}] The options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + # @return [{Symbol => Object}] The normalized options hash. + # @private + def self.normalize_options(options) + options = DEFAULT_OPTIONS.merge(options.reject {|_k, v| v.nil?}) + + # If the `:filename` option is passed in without an importer, + # assume it's using the default filesystem importer. + options[:importer] ||= options[:filesystem_importer].new(".") if options[:filename] + + # Tracks the original filename of the top-level Sass file + options[:original_filename] ||= options[:filename] + + options[:cache_store] ||= Sass::CacheStores::Chain.new( + Sass::CacheStores::Memory.new, Sass::CacheStores::Filesystem.new(options[:cache_location])) + # Support both, because the docs said one and the other actually worked + # for quite a long time. + options[:line_comments] ||= options[:line_numbers] + + options[:load_paths] = (options[:load_paths] + Sass.load_paths).map do |p| + next p unless p.is_a?(String) || (defined?(Pathname) && p.is_a?(Pathname)) + options[:filesystem_importer].new(p.to_s) + end + + # Remove any deprecated importers if the location is imported explicitly + options[:load_paths].reject! do |importer| + importer.is_a?(Sass::Importers::DeprecatedPath) && + options[:load_paths].find do |other_importer| + other_importer.is_a?(Sass::Importers::Filesystem) && + other_importer != importer && + other_importer.root == importer.root + end + end + + # Backwards compatibility + options[:property_syntax] ||= options[:attribute_syntax] + case options[:property_syntax] + when :alternate; options[:property_syntax] = :new + when :normal; options[:property_syntax] = :old + end + options[:sourcemap] = :auto if options[:sourcemap] == true + options[:sourcemap] = :none if options[:sourcemap] == false + + options + end + + # Returns the {Sass::Engine} for the given file. + # This is preferable to Sass::Engine.new when reading from a file + # because it properly sets up the Engine's metadata, + # enables parse-tree caching, + # and infers the syntax from the filename. + # + # @param filename [String] The path to the Sass or SCSS file + # @param options [{Symbol => Object}] The options hash; + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # @return [Sass::Engine] The Engine for the given Sass or SCSS file. + # @raise [Sass::SyntaxError] if there's an error in the document. + def self.for_file(filename, options) + had_syntax = options[:syntax] + + if had_syntax + # Use what was explicitly specified + elsif filename =~ /\.scss$/ + options.merge!(:syntax => :scss) + elsif filename =~ /\.sass$/ + options.merge!(:syntax => :sass) + end + + Sass::Engine.new(File.read(filename), options.merge(:filename => filename)) + end + + # The options for the Sass engine. + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # + # @return [{Symbol => Object}] + attr_reader :options + + # Creates a new Engine. Note that Engine should only be used directly + # when compiling in-memory Sass code. + # If you're compiling a single Sass file from the filesystem, + # use \{Sass::Engine.for\_file}. + # If you're compiling multiple files from the filesystem, + # use {Sass::Plugin}. + # + # @param template [String] The Sass template. + # This template can be encoded using any encoding + # that can be converted to Unicode. + # If the template contains an `@charset` declaration, + # that overrides the Ruby encoding + # (see {file:SASS_REFERENCE.md#Encodings the encoding documentation}) + # @param options [{Symbol => Object}] An options hash. + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # @see {Sass::Engine.for_file} + # @see {Sass::Plugin} + def initialize(template, options = {}) + @options = self.class.normalize_options(options) + @template = template + @checked_encoding = false + @filename = nil + @line = nil + end + + # Render the template to CSS. + # + # @return [String] The CSS + # @raise [Sass::SyntaxError] if there's an error in the document + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + def render + return _to_tree.render unless @options[:quiet] + Sass::Util.silence_sass_warnings {_to_tree.render} + end + + # Render the template to CSS and return the source map. + # + # @param sourcemap_uri [String] The sourcemap URI to use in the + # `@sourceMappingURL` comment. If this is relative, it should be relative + # to the location of the CSS file. + # @return [(String, Sass::Source::Map)] The rendered CSS and the associated + # source map + # @raise [Sass::SyntaxError] if there's an error in the document, or if the + # public URL for this document couldn't be determined. + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + def render_with_sourcemap(sourcemap_uri) + return _render_with_sourcemap(sourcemap_uri) unless @options[:quiet] + Sass::Util.silence_sass_warnings {_render_with_sourcemap(sourcemap_uri)} + end + + alias_method :to_css, :render + + # Parses the document into its parse tree. Memoized. + # + # @return [Sass::Tree::Node] The root of the parse tree. + # @raise [Sass::SyntaxError] if there's an error in the document + def to_tree + @tree ||= if @options[:quiet] + Sass::Util.silence_sass_warnings {_to_tree} + else + _to_tree + end + end + + # Returns the original encoding of the document. + # + # @return [Encoding, nil] + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + def source_encoding + check_encoding! + @source_encoding + end + + # Gets a set of all the documents + # that are (transitive) dependencies of this document, + # not including the document itself. + # + # @return [[Sass::Engine]] The dependency documents. + def dependencies + _dependencies(Set.new, engines = Set.new) + Sass::Util.array_minus(engines, [self]) + end + + # Helper for \{#dependencies}. + # + # @private + def _dependencies(seen, engines) + key = [@options[:filename], @options[:importer]] + return if seen.include?(key) + seen << key + engines << self + to_tree.grep(Tree::ImportNode) do |n| + next if n.css_import? + n.imported_file._dependencies(seen, engines) + end + end + + private + + def _render_with_sourcemap(sourcemap_uri) + filename = @options[:filename] + importer = @options[:importer] + sourcemap_dir = @options[:sourcemap_filename] && + File.dirname(File.expand_path(@options[:sourcemap_filename])) + if filename.nil? + raise Sass::SyntaxError.new(< e + e.modify_backtrace(:filename => @options[:filename], :line => @line) + e.sass_template = @template + raise e + end + + def sassc_key + @options[:cache_store].key(*@options[:importer].key(@options[:filename], @options)) + end + + def check_encoding! + return if @checked_encoding + @checked_encoding = true + @template, @source_encoding = Sass::Util.check_sass_encoding(@template) + end + + def tabulate(string) + tab_str = nil + comment_tab_str = nil + first = true + lines = [] + string.scan(/^[^\n]*?$/).each_with_index do |line, index| + index += (@options[:line] || 1) + if line.strip.empty? + lines.last.text << "\n" if lines.last && lines.last.comment? + next + end + + line_tab_str = line[/^\s*/] + unless line_tab_str.empty? + if tab_str.nil? + comment_tab_str ||= line_tab_str + next if try_comment(line, lines.last, "", comment_tab_str, index) + comment_tab_str = nil + end + + tab_str ||= line_tab_str + + raise SyntaxError.new("Indenting at the beginning of the document is illegal.", + :line => index) if first + + raise SyntaxError.new("Indentation can't use both tabs and spaces.", + :line => index) if tab_str.include?(?\s) && tab_str.include?(?\t) + end + first &&= !tab_str.nil? + if tab_str.nil? + lines << Line.new(line.strip, 0, index, 0, @options[:filename], []) + next + end + + comment_tab_str ||= line_tab_str + if try_comment(line, lines.last, tab_str * lines.last.tabs, comment_tab_str, index) + next + else + comment_tab_str = nil + end + + line_tabs = line_tab_str.scan(tab_str).size + if tab_str * line_tabs != line_tab_str + message = < index) + end + + lines << Line.new(line.strip, line_tabs, index, line_tab_str.size, @options[:filename], []) + end + lines + end + + def try_comment(line, last, tab_str, comment_tab_str, index) + return unless last && last.comment? + # Nested comment stuff must be at least one whitespace char deeper + # than the normal indentation + return unless line =~ /^#{tab_str}\s/ + unless line =~ /^(?:#{comment_tab_str})(.*)$/ + raise SyntaxError.new(< index) +Inconsistent indentation: +previous line was indented by #{Sass::Shared.human_indentation comment_tab_str}, +but this line was indented by #{Sass::Shared.human_indentation line[/^\s*/]}. +MSG + end + + last.comment_tab_str ||= comment_tab_str + last.text << "\n" << line + true + end + + def tree(arr, i = 0) + return [], i if arr[i].nil? + + base = arr[i].tabs + nodes = [] + while (line = arr[i]) && line.tabs >= base + if line.tabs > base + nodes.last.children, i = tree(arr, i) + else + nodes << line + i += 1 + end + end + return nodes, i + end + + def build_tree(parent, line, root = false) + @line = line.index + @offset = line.offset + node_or_nodes = parse_line(parent, line, root) + + Array(node_or_nodes).each do |node| + # Node is a symbol if it's non-outputting, like a variable assignment + next unless node.is_a? Tree::Node + + node.line = line.index + node.filename = line.filename + + append_children(node, line.children, false) + end + + node_or_nodes + end + + def append_children(parent, children, root) + continued_rule = nil + continued_comment = nil + children.each do |line| + child = build_tree(parent, line, root) + + if child.is_a?(Tree::RuleNode) + if child.continued? && child.children.empty? + if continued_rule + continued_rule.add_rules child + else + continued_rule = child + end + next + elsif continued_rule + continued_rule.add_rules child + continued_rule.children = child.children + continued_rule, child = nil, continued_rule + end + elsif continued_rule + continued_rule = nil + end + + if child.is_a?(Tree::CommentNode) && child.type == :silent + if continued_comment && + child.line == continued_comment.line + + continued_comment.lines + 1 + continued_comment.value.last.sub!(%r{ \*/\Z}, '') + child.value.first.gsub!(%r{\A/\*}, ' *') + continued_comment.value += ["\n"] + child.value + next + end + + continued_comment = child + end + + check_for_no_children(child) + validate_and_append_child(parent, child, line, root) + end + + parent + end + + def validate_and_append_child(parent, child, line, root) + case child + when Array + child.each {|c| validate_and_append_child(parent, c, line, root)} + when Tree::Node + parent << child + end + end + + def check_for_no_children(node) + return unless node.is_a?(Tree::RuleNode) && node.children.empty? + Sass::Util.sass_warn(< @line) if name.nil? || value.nil? + + @@old_property_deprecation.warn(@options[:filename], @line, < @line + 1) + end + + parser = Sass::SCSS::Parser.new(value, + @options[:filename], @options[:importer], + @line, to_parser_offset(@offset)) + parsed_value = parser.parse_declaration_value + end_offset = start_offset + value.length + elsif value.strip.empty? + parsed_value = [Sass::Script::Tree::Literal.new(Sass::Script::Value::String.new(""))] + end_offset = start_offset + else + expr = parse_script(value, :offset => to_parser_offset(start_offset)) + end_offset = expr.source_range.end_pos.offset - 1 + parsed_value = [expr] + end + node = Tree::PropNode.new(parse_interp(name), parsed_value, prop) + node.value_source_range = Sass::Source::Range.new( + Sass::Source::Position.new(line.index, to_parser_offset(start_offset)), + Sass::Source::Position.new(line.index, to_parser_offset(end_offset)), + @options[:filename], @options[:importer]) + if !node.custom_property? && value.strip.empty? && line.children.empty? + raise SyntaxError.new( + "Invalid property: \"#{node.declaration}\" (no value)." + + node.pseudo_class_selector_message) + end + + node + end + + def parse_variable(line) + name, value, flags = line.text.scan(Script::MATCH)[0] + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath variable declarations.", + :line => @line + 1) unless line.children.empty? + raise SyntaxError.new("Invalid variable: \"#{line.text}\".", + :line => @line) unless name && value + flags = flags ? flags.split(/\s+/) : [] + if (invalid_flag = flags.find {|f| f != '!default' && f != '!global'}) + raise SyntaxError.new("Invalid flag \"#{invalid_flag}\".", :line => @line) + end + + # This workaround is needed for the case when the variable value is part of the identifier, + # otherwise we end up with the offset equal to the value index inside the name: + # $red_color: red; + var_lhs_length = 1 + name.length # 1 stands for '$' + index = line.text.index(value, line.offset + var_lhs_length) || 0 + expr = parse_script(value, :offset => to_parser_offset(line.offset + index)) + + Tree::VariableNode.new(name, expr, flags.include?('!default'), flags.include?('!global')) + end + + def parse_comment(line) + if line.text[1] == CSS_COMMENT_CHAR || line.text[1] == SASS_COMMENT_CHAR + silent = line.text[1] == SASS_COMMENT_CHAR + loud = !silent && line.text[2] == SASS_LOUD_COMMENT_CHAR + if silent + value = [line.text] + else + value = self.class.parse_interp( + line.text, line.index, to_parser_offset(line.offset), :filename => @filename) + end + value = Sass::Util.with_extracted_values(value) do |str| + str = str.gsub(/^#{line.comment_tab_str}/m, '')[2..-1] # get rid of // or /* + format_comment_text(str, silent) + end + type = if silent + :silent + elsif loud + :loud + else + :normal + end + comment = Tree::CommentNode.new(value, type) + comment.line = line.index + text = line.text.rstrip + if text.include?("\n") + end_offset = text.length - text.rindex("\n") + else + end_offset = to_parser_offset(line.offset + text.length) + end + comment.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(line.offset)), + Sass::Source::Position.new(@line + text.count("\n"), end_offset), + @options[:filename]) + comment + else + Tree::RuleNode.new(parse_interp(line.text), full_line_range(line)) + end + end + + DIRECTIVES = Set[:mixin, :include, :function, :return, :debug, :warn, :for, + :each, :while, :if, :else, :extend, :import, :media, :charset, :content, + :at_root, :error] + + def parse_directive(parent, line, root) + directive, whitespace, value = line.text[1..-1].split(/(\s+)/, 2) + raise SyntaxError.new("Invalid directive: '@'.") unless directive + offset = directive.size + whitespace.size + 1 if whitespace + + directive_name = directive.tr('-', '_').to_sym + if DIRECTIVES.include?(directive_name) + return send("parse_#{directive_name}_directive", parent, line, root, value, offset) + end + + unprefixed_directive = directive.gsub(/^-[a-z0-9]+-/i, '') + if unprefixed_directive == 'supports' + parser = Sass::SCSS::Parser.new(value, @options[:filename], @line) + return Tree::SupportsNode.new(directive, parser.parse_supports_condition) + end + + Tree::DirectiveNode.new( + value.nil? ? ["@#{directive}"] : ["@#{directive} "] + parse_interp(value, offset)) + end + + def parse_while_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid while directive '@while': expected expression.") unless value + Tree::WhileNode.new(parse_script(value, :offset => offset)) + end + + def parse_if_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid if directive '@if': expected expression.") unless value + Tree::IfNode.new(parse_script(value, :offset => offset)) + end + + def parse_debug_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid debug directive '@debug': expected expression.") unless value + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath debug directives.", + :line => @line + 1) unless line.children.empty? + offset = line.offset + line.text.index(value).to_i + Tree::DebugNode.new(parse_script(value, :offset => offset)) + end + + def parse_error_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid error directive '@error': expected expression.") unless value + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath error directives.", + :line => @line + 1) unless line.children.empty? + offset = line.offset + line.text.index(value).to_i + Tree::ErrorNode.new(parse_script(value, :offset => offset)) + end + + def parse_extend_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid extend directive '@extend': expected expression.") unless value + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath extend directives.", + :line => @line + 1) unless line.children.empty? + optional = !!value.gsub!(/\s+#{Sass::SCSS::RX::OPTIONAL}$/, '') + offset = line.offset + line.text.index(value).to_i + interp_parsed = parse_interp(value, offset) + selector_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(offset)), + Sass::Source::Position.new(@line, to_parser_offset(line.offset) + line.text.length), + @options[:filename], @options[:importer] + ) + Tree::ExtendNode.new(interp_parsed, optional, selector_range) + end + + def parse_warn_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid warn directive '@warn': expected expression.") unless value + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath warn directives.", + :line => @line + 1) unless line.children.empty? + offset = line.offset + line.text.index(value).to_i + Tree::WarnNode.new(parse_script(value, :offset => offset)) + end + + def parse_return_directive(parent, line, root, value, offset) + raise SyntaxError.new("Invalid @return: expected expression.") unless value + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath return directives.", + :line => @line + 1) unless line.children.empty? + offset = line.offset + line.text.index(value).to_i + Tree::ReturnNode.new(parse_script(value, :offset => offset)) + end + + def parse_charset_directive(parent, line, root, value, offset) + name = value && value[/\A(["'])(.*)\1\Z/, 2] # " + raise SyntaxError.new("Invalid charset directive '@charset': expected string.") unless name + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath charset directives.", + :line => @line + 1) unless line.children.empty? + Tree::CharsetNode.new(name) + end + + def parse_media_directive(parent, line, root, value, offset) + parser = Sass::SCSS::Parser.new(value, + @options[:filename], @options[:importer], + @line, to_parser_offset(@offset)) + offset = line.offset + line.text.index('media').to_i - 1 + parsed_media_query_list = parser.parse_media_query_list.to_a + node = Tree::MediaNode.new(parsed_media_query_list) + node.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(offset)), + Sass::Source::Position.new(@line, to_parser_offset(line.offset) + line.text.length), + @options[:filename], @options[:importer]) + node + end + + def parse_at_root_directive(parent, line, root, value, offset) + return Sass::Tree::AtRootNode.new unless value + + if value.start_with?('(') + parser = Sass::SCSS::Parser.new(value, + @options[:filename], @options[:importer], + @line, to_parser_offset(@offset)) + offset = line.offset + line.text.index('at-root').to_i - 1 + return Tree::AtRootNode.new(parser.parse_at_root_query) + end + + at_root_node = Tree::AtRootNode.new + parsed = parse_interp(value, offset) + rule_node = Tree::RuleNode.new(parsed, full_line_range(line)) + + # The caller expects to automatically add children to the returned node + # and we want it to add children to the rule node instead, so we + # manually handle the wiring here and return nil so the caller doesn't + # duplicate our efforts. + append_children(rule_node, line.children, false) + at_root_node << rule_node + parent << at_root_node + nil + end + + def parse_for_directive(parent, line, root, value, offset) + var, from_expr, to_name, to_expr = + value.scan(/^([^\s]+)\s+from\s+(.+)\s+(to|through)\s+(.+)$/).first + + if var.nil? # scan failed, try to figure out why for error message + if value !~ /^[^\s]+/ + expected = "variable name" + elsif value !~ /^[^\s]+\s+from\s+.+/ + expected = "'from '" + else + expected = "'to ' or 'through '" + end + raise SyntaxError.new("Invalid for directive '@for #{value}': expected #{expected}.") + end + raise SyntaxError.new("Invalid variable \"#{var}\".") unless var =~ Script::VALIDATE + + var = var[1..-1] + parsed_from = parse_script(from_expr, :offset => line.offset + line.text.index(from_expr)) + parsed_to = parse_script(to_expr, :offset => line.offset + line.text.index(to_expr)) + Tree::ForNode.new(var, parsed_from, parsed_to, to_name == 'to') + end + + def parse_each_directive(parent, line, root, value, offset) + vars, list_expr = value.scan(/^([^\s]+(?:\s*,\s*[^\s]+)*)\s+in\s+(.+)$/).first + + if vars.nil? # scan failed, try to figure out why for error message + if value !~ /^[^\s]+/ + expected = "variable name" + elsif value !~ /^[^\s]+(?:\s*,\s*[^\s]+)*[^\s]+\s+from\s+.+/ + expected = "'in '" + end + raise SyntaxError.new("Invalid each directive '@each #{value}': expected #{expected}.") + end + + vars = vars.split(',').map do |var| + var.strip! + raise SyntaxError.new("Invalid variable \"#{var}\".") unless var =~ Script::VALIDATE + var[1..-1] + end + + parsed_list = parse_script(list_expr, :offset => line.offset + line.text.index(list_expr)) + Tree::EachNode.new(vars, parsed_list) + end + + def parse_else_directive(parent, line, root, value, offset) + previous = parent.children.last + raise SyntaxError.new("@else must come after @if.") unless previous.is_a?(Tree::IfNode) + + if value + if value !~ /^if\s+(.+)/ + raise SyntaxError.new("Invalid else directive '@else #{value}': expected 'if '.") + end + expr = parse_script($1, :offset => line.offset + line.text.index($1)) + end + + node = Tree::IfNode.new(expr) + append_children(node, line.children, false) + previous.add_else node + nil + end + + def parse_import_directive(parent, line, root, value, offset) + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath import directives.", + :line => @line + 1) unless line.children.empty? + + scanner = Sass::Util::MultibyteStringScanner.new(value) + values = [] + + loop do + unless (node = parse_import_arg(scanner, offset + scanner.pos)) + raise SyntaxError.new( + "Invalid @import: expected file to import, was #{scanner.rest.inspect}", + :line => @line) + end + values << node + break unless scanner.scan(/,\s*/) + end + + if scanner.scan(/;/) + raise SyntaxError.new("Invalid @import: expected end of line, was \";\".", + :line => @line) + end + + values + end + + def parse_import_arg(scanner, offset) + return if scanner.eos? + + if scanner.match?(/url\(/i) + script_parser = Sass::Script::Parser.new(scanner, @line, to_parser_offset(offset), @options) + str = script_parser.parse_string + + if scanner.eos? + end_pos = str.source_range.end_pos + node = Tree::CssImportNode.new(str) + else + supports_parser = Sass::SCSS::Parser.new(scanner, + @options[:filename], @options[:importer], + @line, str.source_range.end_pos.offset) + supports_condition = supports_parser.parse_supports_clause + + if scanner.eos? + node = Tree::CssImportNode.new(str, [], supports_condition) + else + media_parser = Sass::SCSS::Parser.new(scanner, + @options[:filename], @options[:importer], + @line, str.source_range.end_pos.offset) + media = media_parser.parse_media_query_list + end_pos = Sass::Source::Position.new(@line, media_parser.offset + 1) + node = Tree::CssImportNode.new(str, media.to_a, supports_condition) + end + end + + node.source_range = Sass::Source::Range.new( + str.source_range.start_pos, end_pos, + @options[:filename], @options[:importer]) + return node + end + + unless (quoted_val = scanner.scan(Sass::SCSS::RX::STRING)) + scanned = scanner.scan(/[^,;]+/) + node = Tree::ImportNode.new(scanned) + start_parser_offset = to_parser_offset(offset) + node.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, start_parser_offset), + Sass::Source::Position.new(@line, start_parser_offset + scanned.length), + @options[:filename], @options[:importer]) + return node + end + + start_offset = offset + offset += scanner.matched.length + val = Sass::Script::Value::String.value(scanner[1] || scanner[2]) + scanned = scanner.scan(/\s*/) + if !scanner.match?(/[,;]|$/) + offset += scanned.length if scanned + media_parser = Sass::SCSS::Parser.new(scanner, + @options[:filename], @options[:importer], @line, offset) + media = media_parser.parse_media_query_list + node = Tree::CssImportNode.new(quoted_val, media.to_a) + node.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(start_offset)), + Sass::Source::Position.new(@line, media_parser.offset), + @options[:filename], @options[:importer]) + elsif val =~ %r{^(https?:)?//} + node = Tree::CssImportNode.new(quoted_val) + node.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(start_offset)), + Sass::Source::Position.new(@line, to_parser_offset(offset)), + @options[:filename], @options[:importer]) + else + node = Tree::ImportNode.new(val) + node.source_range = Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(start_offset)), + Sass::Source::Position.new(@line, to_parser_offset(offset)), + @options[:filename], @options[:importer]) + end + node + end + + def parse_mixin_directive(parent, line, root, value, offset) + parse_mixin_definition(line) + end + + MIXIN_DEF_RE = /^(?:=|@mixin)\s*(#{Sass::SCSS::RX::IDENT})(.*)$/ + def parse_mixin_definition(line) + name, arg_string = line.text.scan(MIXIN_DEF_RE).first + raise SyntaxError.new("Invalid mixin \"#{line.text[1..-1]}\".") if name.nil? + + offset = line.offset + line.text.size - arg_string.size + args, splat = Script::Parser.new(arg_string.strip, @line, to_parser_offset(offset), @options). + parse_mixin_definition_arglist + Tree::MixinDefNode.new(name, args, splat) + end + + CONTENT_RE = /^@content\s*(.+)?$/ + def parse_content_directive(parent, line, root, value, offset) + trailing = line.text.scan(CONTENT_RE).first.first + unless trailing.nil? + raise SyntaxError.new( + "Invalid content directive. Trailing characters found: \"#{trailing}\".") + end + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath @content directives.", + :line => line.index + 1) unless line.children.empty? + Tree::ContentNode.new + end + + def parse_include_directive(parent, line, root, value, offset) + parse_mixin_include(line, root) + end + + MIXIN_INCLUDE_RE = /^(?:\+|@include)\s*(#{Sass::SCSS::RX::IDENT})(.*)$/ + def parse_mixin_include(line, root) + name, arg_string = line.text.scan(MIXIN_INCLUDE_RE).first + raise SyntaxError.new("Invalid mixin include \"#{line.text}\".") if name.nil? + + offset = line.offset + line.text.size - arg_string.size + args, keywords, splat, kwarg_splat = + Script::Parser.new(arg_string.strip, @line, to_parser_offset(offset), @options). + parse_mixin_include_arglist + Tree::MixinNode.new(name, args, keywords, splat, kwarg_splat) + end + + FUNCTION_RE = /^@function\s*(#{Sass::SCSS::RX::IDENT})(.*)$/ + def parse_function_directive(parent, line, root, value, offset) + name, arg_string = line.text.scan(FUNCTION_RE).first + raise SyntaxError.new("Invalid function definition \"#{line.text}\".") if name.nil? + + offset = line.offset + line.text.size - arg_string.size + args, splat = Script::Parser.new(arg_string.strip, @line, to_parser_offset(offset), @options). + parse_function_definition_arglist + Tree::FunctionNode.new(name, args, splat) + end + + def parse_script(script, options = {}) + line = options[:line] || @line + offset = options[:offset] || @offset + 1 + Script.parse(script, line, offset, @options) + end + + def format_comment_text(text, silent) + content = text.split("\n") + + if content.first && content.first.strip.empty? + removed_first = true + content.shift + end + + return "/* */" if content.empty? + content.last.gsub!(%r{ ?\*/ *$}, '') + first = content.shift unless removed_first + content.map! {|l| l.gsub!(/^\*( ?)/, '\1') || (l.empty? ? "" : " ") + l} + content.unshift first unless removed_first + if silent + "/*" + content.join("\n *") + " */" + else + # The #gsub fixes the case of a trailing */ + "/*" + content.join("\n *").gsub(/ \*\Z/, '') + " */" + end + end + + def parse_interp(text, offset = 0) + self.class.parse_interp(text, @line, offset, :filename => @filename) + end + + # Parser tracks 1-based line and offset, so our offset should be converted. + def to_parser_offset(offset) + offset + 1 + end + + def full_line_range(line) + Sass::Source::Range.new( + Sass::Source::Position.new(@line, to_parser_offset(line.offset)), + Sass::Source::Position.new(@line, to_parser_offset(line.offset) + line.text.length), + @options[:filename], @options[:importer]) + end + + # It's important that this have strings (at least) + # at the beginning, the end, and between each Script::Tree::Node. + # + # @private + def self.parse_interp(text, line, offset, options) + res = [] + rest = Sass::Shared.handle_interpolation text do |scan| + escapes = scan[2].size + res << scan.matched[0...-2 - escapes] + if escapes.odd? + res << "\\" * (escapes - 1) << '#{' + else + res << "\\" * [0, escapes - 1].max + if scan[1].include?("\n") + line += scan[1].count("\n") + offset = scan.matched_size - scan[1].rindex("\n") + else + offset += scan.matched_size + end + node = Script::Parser.new(scan, line, offset, options).parse_interpolated + offset = node.source_range.end_pos.offset + res << node + end + end + res << rest + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/environment.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/environment.rb new file mode 100644 index 0000000000..04502a8880 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/environment.rb @@ -0,0 +1,236 @@ +require 'set' + +module Sass + # The abstract base class for lexical environments for SassScript. + class BaseEnvironment + class << self + # Note: when updating this, + # update sass/yard/inherited_hash.rb as well. + def inherited_hash_accessor(name) + inherited_hash_reader(name) + inherited_hash_writer(name) + end + + def inherited_hash_reader(name) + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name}(name) + _#{name}(name.tr('_', '-')) + end + + def _#{name}(name) + (@#{name}s && @#{name}s[name]) || @parent && @parent._#{name}(name) + end + protected :_#{name} + + def is_#{name}_global?(name) + return !@parent if @#{name}s && @#{name}s.has_key?(name) + @parent && @parent.is_#{name}_global?(name) + end + RUBY + end + + def inherited_hash_writer(name) + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def set_#{name}(name, value) + name = name.tr('_', '-') + @#{name}s[name] = value unless try_set_#{name}(name, value) + end + + def try_set_#{name}(name, value) + @#{name}s ||= {} + if @#{name}s.include?(name) + @#{name}s[name] = value + true + elsif @parent && !@parent.global? + @parent.try_set_#{name}(name, value) + else + false + end + end + protected :try_set_#{name} + + def set_local_#{name}(name, value) + @#{name}s ||= {} + @#{name}s[name.tr('_', '-')] = value + end + + def set_global_#{name}(name, value) + global_env.set_#{name}(name, value) + end + RUBY + end + end + + # The options passed to the Sass Engine. + attr_reader :options + + attr_writer :caller + attr_writer :content + attr_writer :selector + + # variable + # Script::Value + inherited_hash_reader :var + + # mixin + # Sass::Callable + inherited_hash_reader :mixin + + # function + # Sass::Callable + inherited_hash_reader :function + + # @param options [{Symbol => Object}] The options hash. See + # {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # @param parent [Environment] See \{#parent} + def initialize(parent = nil, options = nil) + @parent = parent + @options = options || (parent && parent.options) || {} + @stack = @parent.nil? ? Sass::Stack.new : nil + @caller = nil + @content = nil + @filename = nil + @functions = nil + @mixins = nil + @selector = nil + @vars = nil + end + + # Returns whether this is the global environment. + # + # @return [Boolean] + def global? + @parent.nil? + end + + # The environment of the caller of this environment's mixin or function. + # @return {Environment?} + def caller + @caller || (@parent && @parent.caller) + end + + # The content passed to this environment. This is naturally only set + # for mixin body environments with content passed in. + # + # @return {[Array, Environment]?} The content nodes and + # the lexical environment of the content block. + def content + @content || (@parent && @parent.content) + end + + # The selector for the current CSS rule, or nil if there is no + # current CSS rule. + # + # @return [Selector::CommaSequence?] The current selector, with any + # nesting fully resolved. + def selector + @selector || (@caller && @caller.selector) || (@parent && @parent.selector) + end + + # The top-level Environment object. + # + # @return [Environment] + def global_env + @global_env ||= global? ? self : @parent.global_env + end + + # The import/mixin stack. + # + # @return [Sass::Stack] + def stack + @stack || global_env.stack + end + end + + # The lexical environment for SassScript. + # This keeps track of variable, mixin, and function definitions. + # + # A new environment is created for each level of Sass nesting. + # This allows variables to be lexically scoped. + # The new environment refers to the environment in the upper scope, + # so it has access to variables defined in enclosing scopes, + # but new variables are defined locally. + # + # Environment also keeps track of the {Engine} options + # so that they can be made available to {Sass::Script::Functions}. + class Environment < BaseEnvironment + # The enclosing environment, + # or nil if this is the global environment. + # + # @return [Environment] + attr_reader :parent + + # variable + # Script::Value + inherited_hash_writer :var + + # mixin + # Sass::Callable + inherited_hash_writer :mixin + + # function + # Sass::Callable + inherited_hash_writer :function + end + + # A read-only wrapper for a lexical environment for SassScript. + class ReadOnlyEnvironment < BaseEnvironment + def initialize(parent = nil, options = nil) + super + @content_cached = nil + end + # The read-only environment of the caller of this environment's mixin or function. + # + # @see BaseEnvironment#caller + # @return {ReadOnlyEnvironment} + def caller + return @caller if @caller + env = super + @caller ||= env.is_a?(ReadOnlyEnvironment) ? env : ReadOnlyEnvironment.new(env, env.options) + end + + # The content passed to this environment. If the content's environment isn't already + # read-only, it's made read-only. + # + # @see BaseEnvironment#content + # + # @return {[Array, ReadOnlyEnvironment]?} The content nodes and + # the lexical environment of the content block. + # Returns `nil` when there is no content in this environment. + def content + # Return the cached content from a previous invocation if any + return @content if @content_cached + # get the content with a read-write environment from the superclass + read_write_content = super + if read_write_content + tree, env = read_write_content + # make the content's environment read-only + if env && !env.is_a?(ReadOnlyEnvironment) + env = ReadOnlyEnvironment.new(env, env.options) + end + @content_cached = true + @content = [tree, env] + else + @content_cached = true + @content = nil + end + end + end + + # An environment that can write to in-scope global variables, but doesn't + # create new variables in the global scope. Useful for top-level control + # directives. + class SemiGlobalEnvironment < Environment + def try_set_var(name, value) + @vars ||= {} + if @vars.include?(name) + @vars[name] = value + true + elsif @parent + @parent.try_set_var(name, value) + else + false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/error.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/error.rb new file mode 100644 index 0000000000..7ee7460356 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/error.rb @@ -0,0 +1,198 @@ +module Sass + # An exception class that keeps track of + # the line of the Sass template it was raised on + # and the Sass file that was being parsed (if applicable). + # + # All Sass errors are raised as {Sass::SyntaxError}s. + # + # When dealing with SyntaxErrors, + # it's important to provide filename and line number information. + # This will be used in various error reports to users, including backtraces; + # see \{#sass\_backtrace} for details. + # + # Some of this information is usually provided as part of the constructor. + # New backtrace entries can be added with \{#add\_backtrace}, + # which is called when an exception is raised between files (e.g. with `@import`). + # + # Often, a chunk of code will all have similar backtrace information - + # the same filename or even line. + # It may also be useful to have a default line number set. + # In those situations, the default values can be used + # by omitting the information on the original exception, + # and then calling \{#modify\_backtrace} in a wrapper `rescue`. + # When doing this, be sure that all exceptions ultimately end up + # with the information filled in. + class SyntaxError < StandardError + # The backtrace of the error within Sass files. + # This is an array of hashes containing information for a single entry. + # The hashes have the following keys: + # + # `:filename` + # : The name of the file in which the exception was raised, + # or `nil` if no filename is available. + # + # `:mixin` + # : The name of the mixin in which the exception was raised, + # or `nil` if it wasn't raised in a mixin. + # + # `:line` + # : The line of the file on which the error occurred. Never nil. + # + # This information is also included in standard backtrace format + # in the output of \{#backtrace}. + # + # @return [Aray<{Symbol => Object>}] + attr_accessor :sass_backtrace + + # The text of the template where this error was raised. + # + # @return [String] + attr_accessor :sass_template + + # @param msg [String] The error message + # @param attrs [{Symbol => Object}] The information in the backtrace entry. + # See \{#sass\_backtrace} + def initialize(msg, attrs = {}) + @message = msg + @sass_backtrace = [] + add_backtrace(attrs) + end + + # The name of the file in which the exception was raised. + # This could be `nil` if no filename is available. + # + # @return [String, nil] + def sass_filename + sass_backtrace.first[:filename] + end + + # The name of the mixin in which the error occurred. + # This could be `nil` if the error occurred outside a mixin. + # + # @return [String] + def sass_mixin + sass_backtrace.first[:mixin] + end + + # The line of the Sass template on which the error occurred. + # + # @return [Integer] + def sass_line + sass_backtrace.first[:line] + end + + # Adds an entry to the exception's Sass backtrace. + # + # @param attrs [{Symbol => Object}] The information in the backtrace entry. + # See \{#sass\_backtrace} + def add_backtrace(attrs) + sass_backtrace << attrs.reject {|_k, v| v.nil?} + end + + # Modify the top Sass backtrace entries + # (that is, the most deeply nested ones) + # to have the given attributes. + # + # Specifically, this goes through the backtrace entries + # from most deeply nested to least, + # setting the given attributes for each entry. + # If an entry already has one of the given attributes set, + # the pre-existing attribute takes precedence + # and is not used for less deeply-nested entries + # (even if they don't have that attribute set). + # + # @param attrs [{Symbol => Object}] The information to add to the backtrace entry. + # See \{#sass\_backtrace} + def modify_backtrace(attrs) + attrs = attrs.reject {|_k, v| v.nil?} + # Move backwards through the backtrace + (0...sass_backtrace.size).to_a.reverse_each do |i| + entry = sass_backtrace[i] + sass_backtrace[i] = attrs.merge(entry) + attrs.reject! {|k, _v| entry.include?(k)} + break if attrs.empty? + end + end + + # @return [String] The error message + def to_s + @message + end + + # Returns the standard exception backtrace, + # including the Sass backtrace. + # + # @return [Array] + def backtrace + return nil if super.nil? + return super if sass_backtrace.all? {|h| h.empty?} + sass_backtrace.map do |h| + "#{h[:filename] || '(sass)'}:#{h[:line]}" + + (h[:mixin] ? ":in `#{h[:mixin]}'" : "") + end + super + end + + # Returns a string representation of the Sass backtrace. + # + # @param default_filename [String] The filename to use for unknown files + # @see #sass_backtrace + # @return [String] + def sass_backtrace_str(default_filename = "an unknown file") + lines = message.split("\n") + msg = lines[0] + lines[1..-1]. + map {|l| "\n" + (" " * "Error: ".size) + l}.join + "Error: #{msg}" + + sass_backtrace.each_with_index.map do |entry, i| + "\n #{i == 0 ? 'on' : 'from'} line #{entry[:line]}" + + " of #{entry[:filename] || default_filename}" + + (entry[:mixin] ? ", in `#{entry[:mixin]}'" : "") + end.join + end + + class << self + # Returns an error report for an exception in CSS format. + # + # @param e [Exception] + # @param line_offset [Integer] The number of the first line of the Sass template. + # @return [String] The error report + # @raise [Exception] `e`, if the + # {file:SASS_REFERENCE.md#full_exception-option `:full_exception`} option + # is set to false. + def exception_to_css(e, line_offset = 1) + header = header_string(e, line_offset) + + <] The command-line arguments + def initialize(args) + @args = args + @options = {} + end + + # Parses the command-line arguments and runs the executable. + # Calls `Kernel#exit` at the end, so it never returns. + # + # @see #parse + def parse! + begin + parse + rescue Exception => e + # Exit code 65 indicates invalid data per + # http://www.freebsd.org/cgi/man.cgi?query=sysexits. Setting it via + # at_exit is a bit of a hack, but it allows us to rethrow when --trace + # is active and get both the built-in exception formatting and the + # correct exit code. + at_exit {exit Sass::Util.windows? ? 13 : 65} if e.is_a?(Sass::SyntaxError) + + raise e if @options[:trace] || e.is_a?(SystemExit) + + if e.is_a?(Sass::SyntaxError) + $stderr.puts e.sass_backtrace_str("standard input") + else + $stderr.print "#{e.class}: " unless e.class == RuntimeError + $stderr.puts e.message.to_s + end + $stderr.puts " Use --trace for backtrace." + + exit 1 + end + exit 0 + end + + # Parses the command-line arguments and runs the executable. + # This does not handle exceptions or exit the program. + # + # @see #parse! + def parse + @opts = OptionParser.new(&method(:set_opts)) + @opts.parse!(@args) + + process_result + + @options + end + + # @return [String] A description of the executable + def to_s + @opts.to_s + end + + protected + + # Finds the line of the source template + # on which an exception was raised. + # + # @param exception [Exception] The exception + # @return [String] The line number + def get_line(exception) + # SyntaxErrors have weird line reporting + # when there's trailing whitespace + if exception.is_a?(::SyntaxError) + return (exception.message.scan(/:(\d+)/).first || ["??"]).first + end + (exception.backtrace[0].scan(/:(\d+)/).first || ["??"]).first + end + + # Tells optparse how to parse the arguments + # available for all executables. + # + # This is meant to be overridden by subclasses + # so they can add their own options. + # + # @param opts [OptionParser] + def set_opts(opts) + Sass::Util.abstract(this) + end + + # Set an option for specifying `Encoding.default_external`. + # + # @param opts [OptionParser] + def encoding_option(opts) + encoding_desc = 'Specify the default encoding for input files.' + opts.on('-E', '--default-encoding ENCODING', encoding_desc) do |encoding| + Encoding.default_external = encoding + end + end + + # Processes the options set by the command-line arguments. In particular, + # sets `@options[:input]` and `@options[:output]` to appropriate IO streams. + # + # This is meant to be overridden by subclasses + # so they can run their respective programs. + def process_result + input, output = @options[:input], @options[:output] + args = @args.dup + input ||= + begin + filename = args.shift + @options[:filename] = filename + open_file(filename) || $stdin + end + @options[:output_filename] = args.shift + output ||= @options[:output_filename] || $stdout + @options[:input], @options[:output] = input, output + end + + COLORS = {:red => 31, :green => 32, :yellow => 33} + + # Prints a status message about performing the given action, + # colored using the given color (via terminal escapes) if possible. + # + # @param name [#to_s] A short name for the action being performed. + # Shouldn't be longer than 11 characters. + # @param color [Symbol] The name of the color to use for this action. + # Can be `:red`, `:green`, or `:yellow`. + def puts_action(name, color, arg) + return if @options[:for_engine][:quiet] + printf color(color, "%11s %s\n"), name, arg + STDOUT.flush + end + + # Same as `Kernel.puts`, but doesn't print anything if the `--quiet` option is set. + # + # @param args [Array] Passed on to `Kernel.puts` + def puts(*args) + return if @options[:for_engine][:quiet] + Kernel.puts(*args) + end + + # Wraps the given string in terminal escapes + # causing it to have the given color. + # If terminal escapes aren't supported on this platform, + # just returns the string instead. + # + # @param color [Symbol] The name of the color to use. + # Can be `:red`, `:green`, or `:yellow`. + # @param str [String] The string to wrap in the given color. + # @return [String] The wrapped string. + def color(color, str) + raise "[BUG] Unrecognized color #{color}" unless COLORS[color] + + # Almost any real Unix terminal will support color, + # so we just filter for Windows terms (which don't set TERM) + # and not-real terminals, which aren't ttys. + return str if ENV["TERM"].nil? || ENV["TERM"].empty? || !STDOUT.tty? + "\e[#{COLORS[color]}m#{str}\e[0m" + end + + def write_output(text, destination) + if destination.is_a?(String) + open_file(destination, 'w') {|file| file.write(text)} + else + destination.write(text) + end + end + + private + + def open_file(filename, flag = 'r') + return if filename.nil? + flag = 'wb' if @options[:unix_newlines] && flag == 'w' + file = File.open(filename, flag) + return file unless block_given? + yield file + file.close + end + + def handle_load_error(err) + dep = err.message[/^no such file to load -- (.*)/, 1] + raise err if @options[:trace] || dep.nil? || dep.empty? + $stderr.puts <] The command-line arguments + def initialize(args) + super + require 'sass' + @options[:for_tree] = {} + @options[:for_engine] = {:cache => false, :read_cache => true} + end + + # Tells optparse how to parse the arguments. + # + # @param opts [OptionParser] + def set_opts(opts) + opts.banner = < e + raise e if @options[:trace] + file = " of #{e.sass_filename}" if e.sass_filename + raise "Error on line #{e.sass_line}#{file}: #{e.message}\n Use --trace for backtrace" + rescue LoadError => err + handle_load_error(err) + end + + def path_for(file) + return file.path if file.is_a?(File) + return file if file.is_a?(String) + end + + def read(file) + if file.respond_to?(:read) + file.read + else + open(file, 'rb') {|f| f.read} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb new file mode 100644 index 0000000000..baea0a9429 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/exec/sass_scss.rb @@ -0,0 +1,436 @@ +module Sass::Exec + # The `sass` and `scss` executables. + class SassScss < Base + attr_reader :default_syntax + + # @param args [Array] The command-line arguments + def initialize(args, default_syntax) + super(args) + @options[:sourcemap] = :auto + @options[:for_engine] = { + :load_paths => default_sass_path + } + @default_syntax = default_syntax + end + + protected + + # Tells optparse how to parse the arguments. + # + # @param opts [OptionParser] + def set_opts(opts) + opts.banner = <>> Sass is watching for changes. Press Ctrl-C to stop." + + Sass::Plugin.on_template_modified do |template| + puts ">>> Change detected to: #{template}" + STDOUT.flush + end + Sass::Plugin.on_template_created do |template| + puts ">>> New template detected: #{template}" + STDOUT.flush + end + Sass::Plugin.on_template_deleted do |template| + puts ">>> Deleted template detected: #{template}" + STDOUT.flush + end + + Sass::Plugin.watch(files) + end + + def run + input = @options[:input] + output = @options[:output] + + if input == $stdin + # See issue 1745 + (@options[:for_engine][:load_paths] ||= []) << ::Sass::Importers::DeprecatedPath.new(".") + end + + @options[:for_engine][:syntax] ||= :scss if input.is_a?(File) && input.path =~ /\.scss$/ + @options[:for_engine][:syntax] ||= @default_syntax + engine = + if input.is_a?(File) && !@options[:check_syntax] + Sass::Engine.for_file(input.path, @options[:for_engine]) + else + # We don't need to do any special handling of @options[:check_syntax] here, + # because the Sass syntax checking happens alongside evaluation + # and evaluation doesn't actually evaluate any code anyway. + Sass::Engine.new(input.read, @options[:for_engine]) + end + + input.close if input.is_a?(File) + + if @options[:sourcemap] != :none && @options[:sourcemap_filename] + relative_sourcemap_path = Sass::Util.relative_path_from( + @options[:sourcemap_filename], Sass::Util.pathname(@options[:output_filename]).dirname) + rendered, mapping = engine.render_with_sourcemap(relative_sourcemap_path.to_s) + write_output(rendered, output) + write_output( + mapping.to_json( + :type => @options[:sourcemap], + :css_path => @options[:output_filename], + :sourcemap_path => @options[:sourcemap_filename]) + "\n", + @options[:sourcemap_filename]) + else + write_output(engine.render, output) + end + rescue Sass::SyntaxError => e + write_output(Sass::SyntaxError.exception_to_css(e), output) if output.is_a?(String) + raise e + ensure + output.close if output.is_a? File + end + + def colon_path?(path) + !split_colon_path(path)[1].nil? + end + + def split_colon_path(path) + one, two = path.split(':', 2) + if one && two && Sass::Util.windows? && + one =~ /\A[A-Za-z]\Z/ && two =~ %r{\A[/\\]} + # If we're on Windows and we were passed a drive letter path, + # don't split on that colon. + one2, two = two.split(':', 2) + one = one + ':' + one2 + end + return one, two + end + + # Whether path is likely to be meant as the destination + # in a source:dest pair. + def probably_dest_dir?(path) + return false unless path + return false if colon_path?(path) + Sass::Util.glob(File.join(path, "*.s[ca]ss")).empty? + end + + def default_sass_path + return unless ENV['SASS_PATH'] + # The select here prevents errors when the environment's + # load paths specified do not exist. + ENV['SASS_PATH'].split(File::PATH_SEPARATOR).select {|d| File.directory?(d)} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/features.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/features.rb new file mode 100644 index 0000000000..78d32992f2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/features.rb @@ -0,0 +1,48 @@ +require 'set' +module Sass + # Provides `Sass.has_feature?` which allows for simple feature detection + # by providing a feature name. + module Features + # This is the set of features that can be detected. + # + # When this is updated, the documentation of `feature-exists()` should be + # updated as well. + KNOWN_FEATURES = Set[*%w( + global-variable-shadowing + extend-selector-pseudoclass + units-level-3 + at-error + custom-property + )] + + # Check if a feature exists by name. This is used to implement + # the Sass function `feature-exists($feature)` + # + # @param feature_name [String] The case sensitive name of the feature to + # check if it exists in this version of Sass. + # @return [Boolean] whether the feature of that name exists. + def has_feature?(feature_name) + KNOWN_FEATURES.include?(feature_name) + end + + # Add a feature to Sass. Plugins can use this to easily expose their + # availability to end users. Plugins must prefix their feature + # names with a dash to distinguish them from official features. + # + # @example + # Sass.add_feature("-import-globbing") + # Sass.add_feature("-math-cos") + # + # + # @param feature_name [String] The case sensitive name of the feature to + # to add to Sass. Must begin with a dash. + def add_feature(feature_name) + unless feature_name[0] == ?- + raise ArgumentError.new("Plugin feature names must begin with a dash") + end + KNOWN_FEATURES << feature_name + end + end + + extend Features +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers.rb new file mode 100644 index 0000000000..6178b20158 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers.rb @@ -0,0 +1,23 @@ +module Sass + # Sass importers are in charge of taking paths passed to `@import` + # and finding the appropriate Sass code for those paths. + # By default, this code is always loaded from the filesystem, + # but importers could be added to load from a database or over HTTP. + # + # Each importer is in charge of a single load path + # (or whatever the corresponding notion is for the backend). + # Importers can be placed in the {file:SASS_REFERENCE.md#load_paths-option `:load_paths` array} + # alongside normal filesystem paths. + # + # When resolving an `@import`, Sass will go through the load paths + # looking for an importer that successfully imports the path. + # Once one is found, the imported file is used. + # + # User-created importers must inherit from {Importers::Base}. + module Importers + end +end + +require 'sass/importers/base' +require 'sass/importers/filesystem' +require 'sass/importers/deprecated_path' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/base.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/base.rb new file mode 100644 index 0000000000..a634d34bb8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/base.rb @@ -0,0 +1,182 @@ +module Sass + module Importers + # The abstract base class for Sass importers. + # All importers should inherit from this. + # + # At the most basic level, an importer is given a string + # and must return a {Sass::Engine} containing some Sass code. + # This string can be interpreted however the importer wants; + # however, subclasses are encouraged to use the URI format + # for pathnames. + # + # Importers that have some notion of "relative imports" + # should take a single load path in their constructor, + # and interpret paths as relative to that. + # They should also implement the \{#find\_relative} method. + # + # Importers should be serializable via `Marshal.dump`. + # + # @abstract + class Base + # Find a Sass file relative to another file. + # Importers without a notion of "relative paths" + # should just return nil here. + # + # If the importer does have a notion of "relative paths", + # it should ignore its load path during this method. + # + # See \{#find} for important information on how this method should behave. + # + # The `:filename` option passed to the returned {Sass::Engine} + # should be of a format that could be passed to \{#find}. + # + # @param uri [String] The URI to import. This is not necessarily relative, + # but this method should only return true if it is. + # @param base [String] The base filename. If `uri` is relative, + # it should be interpreted as relative to `base`. + # `base` is guaranteed to be in a format importable by this importer. + # @param options [{Symbol => Object}] Options for the Sass file + # containing the `@import` that's currently being resolved. + # @return [Sass::Engine, nil] An Engine containing the imported file, + # or nil if it couldn't be found or was in the wrong format. + def find_relative(uri, base, options) + Sass::Util.abstract(self) + end + + # Find a Sass file, if it exists. + # + # This is the primary entry point of the Importer. + # It corresponds directly to an `@import` statement in Sass. + # It should do three basic things: + # + # * Determine if the URI is in this importer's format. + # If not, return nil. + # * Determine if the file indicated by the URI actually exists and is readable. + # If not, return nil. + # * Read the file and place the contents in a {Sass::Engine}. + # Return that engine. + # + # If this importer's format allows for file extensions, + # it should treat them the same way as the default {Filesystem} importer. + # If the URI explicitly has a `.sass` or `.scss` filename, + # the importer should look for that exact file + # and import it as the syntax indicated. + # If it doesn't exist, the importer should return nil. + # + # If the URI doesn't have either of these extensions, + # the importer should look for files with the extensions. + # If no such files exist, it should return nil. + # + # The {Sass::Engine} to be returned should be passed `options`, + # with a few modifications. `:syntax` should be set appropriately, + # `:filename` should be set to `uri`, + # and `:importer` should be set to this importer. + # + # @param uri [String] The URI to import. + # @param options [{Symbol => Object}] Options for the Sass file + # containing the `@import` that's currently being resolved. + # This is safe for subclasses to modify destructively. + # Callers should only pass in a value they don't mind being destructively modified. + # @return [Sass::Engine, nil] An Engine containing the imported file, + # or nil if it couldn't be found or was in the wrong format. + def find(uri, options) + Sass::Util.abstract(self) + end + + # Returns the time the given Sass file was last modified. + # + # If the given file has been deleted or the time can't be accessed + # for some other reason, this should return nil. + # + # @param uri [String] The URI of the file to check. + # Comes from a `:filename` option set on an engine returned by this importer. + # @param options [{Symbol => Object}] Options for the Sass file + # containing the `@import` currently being checked. + # @return [Time, nil] + def mtime(uri, options) + Sass::Util.abstract(self) + end + + # Get the cache key pair for the given Sass URI. + # The URI need not be checked for validity. + # + # The only strict requirement is that the returned pair of strings + # uniquely identify the file at the given URI. + # However, the first component generally corresponds roughly to the directory, + # and the second to the basename, of the URI. + # + # Note that keys must be unique *across importers*. + # Thus it's probably a good idea to include the importer name + # at the beginning of the first component. + # + # @param uri [String] A URI known to be valid for this importer. + # @param options [{Symbol => Object}] Options for the Sass file + # containing the `@import` currently being checked. + # @return [(String, String)] The key pair which uniquely identifies + # the file at the given URI. + def key(uri, options) + Sass::Util.abstract(self) + end + + # Get the publicly-visible URL for an imported file. This URL is used by + # source maps to link to the source stylesheet. This may return `nil` to + # indicate that no public URL is available; however, this will cause + # sourcemap generation to fail if any CSS is generated from files imported + # from this importer. + # + # If an absolute "file:" URI can be produced for an imported file, that + # should be preferred to returning `nil`. However, a URL relative to + # `sourcemap_directory` should be preferred over an absolute "file:" URI. + # + # @param uri [String] A URI known to be valid for this importer. + # @param sourcemap_directory [String, NilClass] The absolute path to a + # directory on disk where the sourcemap will be saved. If uri refers to + # a file on disk that's accessible relative to sourcemap_directory, this + # may return a relative URL. This may be `nil` if the sourcemap's + # eventual location is unknown. + # @return [String?] The publicly-visible URL for this file, or `nil` + # indicating that no publicly-visible URL exists. This should be + # appropriately URL-escaped. + def public_url(uri, sourcemap_directory) + return if @public_url_warning_issued + @public_url_warning_issued = true + Sass::Util.sass_warn <] List of absolute paths of directories to watch + def directories_to_watch + [] + end + + # If this importer is based on files on the local filesystem This method + # should return true if the file, when changed, should trigger a + # recompile. + # + # It is acceptable for non-sass files to be watched and trigger a recompile. + # + # @param filename [String] The absolute filename for a file that has changed. + # @return [Boolean] When the file changed should cause a recompile. + def watched_file?(filename) + false + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/deprecated_path.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/deprecated_path.rb new file mode 100644 index 0000000000..d817c9de87 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/importers/deprecated_path.rb @@ -0,0 +1,51 @@ +module Sass + module Importers + # This importer emits a deprecation warning the first time it is used to + # import a file. It is used to deprecate the current working + # directory from the list of automatic sass load paths. + class DeprecatedPath < Filesystem + # @param root [String] The absolute, expanded path to the folder that is deprecated. + def initialize(root) + @specified_root = root + @warning_given = false + super + end + + # @see Sass::Importers::Base#find + def find(*args) + found = super + if found && !@warning_given + @warning_given = true + Sass::Util.sass_warn deprecation_warning + end + found + end + + # @see Base#directories_to_watch + def directories_to_watch + # The current working directory was not watched in Sass 3.2, + # so we continue not to watch it while it's deprecated. + [] + end + + # @see Sass::Importers::Base#to_s + def to_s + "#{@root} (DEPRECATED)" + end + + protected + + # @return [String] The deprecation warning that will be printed the first + # time an import occurs. + def deprecation_warning + path = @specified_root == "." ? "the current working directory" : @specified_root + < Symbol}] + def extensions + {'sass' => :sass, 'scss' => :scss} + end + + # Given an `@import`ed path, returns an array of possible + # on-disk filenames and their corresponding syntaxes for that path. + # + # @param name [String] The filename. + # @return [Array(String, Symbol)] An array of pairs. + # The first element of each pair is a filename to look for; + # the second element is the syntax that file would be in (`:sass` or `:scss`). + def possible_files(name) + name = escape_glob_characters(name) + dirname, basename, extname = split(name) + sorted_exts = extensions.sort + syntax = extensions[extname] + + if syntax + ret = [["#{dirname}/{_,}#{basename}.#{extensions.invert[syntax]}", syntax]] + else + ret = sorted_exts.map {|ext, syn| ["#{dirname}/{_,}#{basename}.#{ext}", syn]} + end + + # JRuby chokes when trying to import files from JARs when the path starts with './'. + ret.map {|f, s| [f.sub(%r{^\./}, ''), s]} + end + + def escape_glob_characters(name) + name.gsub(/[\*\[\]\{\}\?]/) do |char| + "\\#{char}" + end + end + + REDUNDANT_DIRECTORY = /#{Regexp.escape(File::SEPARATOR)}\.#{Regexp.escape(File::SEPARATOR)}/ + # Given a base directory and an `@import`ed name, + # finds an existent file that matches the name. + # + # @param dir [String] The directory relative to which to search. + # @param name [String] The filename to search for. + # @return [(String, Symbol)] A filename-syntax pair. + def find_real_file(dir, name, options) + # On windows 'dir' or 'name' can be in native File::ALT_SEPARATOR form. + dir = dir.gsub(File::ALT_SEPARATOR, File::SEPARATOR) unless File::ALT_SEPARATOR.nil? + name = name.gsub(File::ALT_SEPARATOR, File::SEPARATOR) unless File::ALT_SEPARATOR.nil? + + found = possible_files(remove_root(name)).map do |f, s| + path = if dir == "." || Sass::Util.pathname(f).absolute? + f + else + "#{escape_glob_characters(dir)}/#{f}" + end + Dir[path].map do |full_path| + full_path.gsub!(REDUNDANT_DIRECTORY, File::SEPARATOR) + [Sass::Util.cleanpath(full_path).to_s, s] + end + end.flatten(1) + if found.empty? && split(name)[2].nil? && File.directory?("#{dir}/#{name}") + return find_real_file("#{dir}/#{name}", "index", options) + end + + if found.size > 1 && !@same_name_warnings.include?(found.first.first) + found.each {|(f, _)| @same_name_warnings << f} + relative_to = Sass::Util.pathname(dir) + if options[:_from_import_node] + # If _line exists, we're here due to an actual import in an + # import_node and we want to print a warning for a user writing an + # ambiguous import. + candidates = found.map do |(f, _)| + " " + Sass::Util.pathname(f).relative_path_from(relative_to).to_s + end.join("\n") + raise Sass::SyntaxError.new(<= log_levels[min_level] + end + + def log_level(name, options = {}) + if options[:prepend] + level = log_levels.values.min + level = level.nil? ? 0 : level - 1 + else + level = log_levels.values.max + level = level.nil? ? 0 : level + 1 + end + log_levels.update(name => level) + define_logger(name) + end + + def define_logger(name, options = {}) + class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{name}(message) + #{options.fetch(:to, :log)}(#{name.inspect}, message) + end + RUBY + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/media.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/media.rb new file mode 100644 index 0000000000..dc4542d4b8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/media.rb @@ -0,0 +1,210 @@ +# A namespace for the `@media` query parse tree. +module Sass::Media + # A comma-separated list of queries. + # + # media_query [ ',' S* media_query ]* + class QueryList + # The queries contained in this list. + # + # @return [Array] + attr_accessor :queries + + # @param queries [Array] See \{#queries} + def initialize(queries) + @queries = queries + end + + # Merges this query list with another. The returned query list + # queries for the intersection between the two inputs. + # + # Both query lists should be resolved. + # + # @param other [QueryList] + # @return [QueryList?] The merged list, or nil if there is no intersection. + def merge(other) + new_queries = queries.map {|q1| other.queries.map {|q2| q1.merge(q2)}}.flatten.compact + return if new_queries.empty? + QueryList.new(new_queries) + end + + # Returns the CSS for the media query list. + # + # @return [String] + def to_css + queries.map {|q| q.to_css}.join(', ') + end + + # Returns the Sass/SCSS code for the media query list. + # + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}). + # @return [String] + def to_src(options) + queries.map {|q| q.to_src(options)}.join(', ') + end + + # Returns a representation of the query as an array of strings and + # potentially {Sass::Script::Tree::Node}s (if there's interpolation in it). + # When the interpolation is resolved and the strings are joined together, + # this will be the string representation of this query. + # + # @return [Array] + def to_a + Sass::Util.intersperse(queries.map {|q| q.to_a}, ', ').flatten + end + + # Returns a deep copy of this query list and all its children. + # + # @return [QueryList] + def deep_copy + QueryList.new(queries.map {|q| q.deep_copy}) + end + end + + # A single media query. + # + # [ [ONLY | NOT]? S* media_type S* | expression ] [ AND S* expression ]* + class Query + # The modifier for the query. + # + # When parsed as Sass code, this contains strings and SassScript nodes. When + # parsed as CSS, it contains a single string (accessible via + # \{#resolved_modifier}). + # + # @return [Array] + attr_accessor :modifier + + # The type of the query (e.g. `"screen"` or `"print"`). + # + # When parsed as Sass code, this contains strings and SassScript nodes. When + # parsed as CSS, it contains a single string (accessible via + # \{#resolved_type}). + # + # @return [Array] + attr_accessor :type + + # The trailing expressions in the query. + # + # When parsed as Sass code, each expression contains strings and SassScript + # nodes. When parsed as CSS, each one contains a single string. + # + # @return [Array>] + attr_accessor :expressions + + # @param modifier [Array] See \{#modifier} + # @param type [Array] See \{#type} + # @param expressions [Array>] See \{#expressions} + def initialize(modifier, type, expressions) + @modifier = modifier + @type = type + @expressions = expressions + end + + # See \{#modifier}. + # @return [String] + def resolved_modifier + # modifier should contain only a single string + modifier.first || '' + end + + # See \{#type}. + # @return [String] + def resolved_type + # type should contain only a single string + type.first || '' + end + + # Merges this query with another. The returned query queries for + # the intersection between the two inputs. + # + # Both queries should be resolved. + # + # @param other [Query] + # @return [Query?] The merged query, or nil if there is no intersection. + def merge(other) + m1, t1 = resolved_modifier.downcase, resolved_type.downcase + m2, t2 = other.resolved_modifier.downcase, other.resolved_type.downcase + t1 = t2 if t1.empty? + t2 = t1 if t2.empty? + if (m1 == 'not') ^ (m2 == 'not') + return if t1 == t2 + type = m1 == 'not' ? t2 : t1 + mod = m1 == 'not' ? m2 : m1 + elsif m1 == 'not' && m2 == 'not' + # CSS has no way of representing "neither screen nor print" + return unless t1 == t2 + type = t1 + mod = 'not' + elsif t1 != t2 + return + else # t1 == t2, neither m1 nor m2 are "not" + type = t1 + mod = m1.empty? ? m2 : m1 + end + Query.new([mod], [type], other.expressions + expressions) + end + + # Returns the CSS for the media query. + # + # @return [String] + def to_css + css = '' + css << resolved_modifier + css << ' ' unless resolved_modifier.empty? + css << resolved_type + css << ' and ' unless resolved_type.empty? || expressions.empty? + css << expressions.map do |e| + # It's possible for there to be script nodes in Expressions even when + # we're converting to CSS in the case where we parsed the document as + # CSS originally (as in css_test.rb). + e.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.to_sass : c.to_s}.join + end.join(' and ') + css + end + + # Returns the Sass/SCSS code for the media query. + # + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}). + # @return [String] + def to_src(options) + src = '' + src << Sass::Media._interp_to_src(modifier, options) + src << ' ' unless modifier.empty? + src << Sass::Media._interp_to_src(type, options) + src << ' and ' unless type.empty? || expressions.empty? + src << expressions.map do |e| + Sass::Media._interp_to_src(e, options) + end.join(' and ') + src + end + + # @see \{MediaQuery#to\_a} + def to_a + res = [] + res += modifier + res << ' ' unless modifier.empty? + res += type + res << ' and ' unless type.empty? || expressions.empty? + res += Sass::Util.intersperse(expressions, ' and ').flatten + res + end + + # Returns a deep copy of this query and all its children. + # + # @return [Query] + def deep_copy + Query.new( + modifier.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c}, + type.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c}, + expressions.map {|e| e.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c}}) + end + end + + # Converts an interpolation array to source. + # + # @param interp [Array] The interpolation array to convert. + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}). + # @return [String] + def self._interp_to_src(interp, options) + interp.map {|r| r.is_a?(String) ? r : r.to_sass(options)}.join + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin.rb new file mode 100644 index 0000000000..b558a97711 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin.rb @@ -0,0 +1,134 @@ +require 'fileutils' + +require 'sass' +require 'sass/plugin/compiler' + +module Sass + # This module provides a single interface to the compilation of Sass/SCSS files + # for an application. It provides global options and checks whether CSS files + # need to be updated. + # + # This module is used as the primary interface with Sass + # when it's used as a plugin for various frameworks. + # All Rack-enabled frameworks are supported out of the box. + # The plugin is + # {file:SASS_REFERENCE.md#Rack_Rails_Merb_Plugin automatically activated for Rails and Merb}. + # Other frameworks must enable it explicitly; see {Sass::Plugin::Rack}. + # + # This module has a large set of callbacks available + # to allow users to run code (such as logging) when certain things happen. + # All callback methods are of the form `on_#{name}`, + # and they all take a block that's called when the given action occurs. + # + # Note that this class proxies almost all methods to its {Sass::Plugin::Compiler} instance. + # See \{#compiler}. + # + # @example Using a callback + # Sass::Plugin.on_updating_stylesheet do |template, css| + # puts "Compiling #{template} to #{css}" + # end + # Sass::Plugin.update_stylesheets + # #=> Compiling app/sass/screen.scss to public/stylesheets/screen.css + # #=> Compiling app/sass/print.scss to public/stylesheets/print.css + # #=> Compiling app/sass/ie.scss to public/stylesheets/ie.css + # @see Sass::Plugin::Compiler + module Plugin + extend self + + @checked_for_updates = false + + # Whether or not Sass has **ever** checked if the stylesheets need to be updated + # (in this Ruby instance). + # + # @return [Boolean] + attr_accessor :checked_for_updates + + # Same as \{#update\_stylesheets}, but respects \{#checked\_for\_updates} + # and the {file:SASS_REFERENCE.md#always_update-option `:always_update`} + # and {file:SASS_REFERENCE.md#always_check-option `:always_check`} options. + # + # @see #update_stylesheets + def check_for_updates + return unless !Sass::Plugin.checked_for_updates || + Sass::Plugin.options[:always_update] || Sass::Plugin.options[:always_check] + update_stylesheets + end + + # Returns the singleton compiler instance. + # This compiler has been pre-configured according + # to the plugin configuration. + # + # @return [Sass::Plugin::Compiler] + def compiler + @compiler ||= Compiler.new + end + + # Updates out-of-date stylesheets. + # + # Checks each Sass/SCSS file in + # {file:SASS_REFERENCE.md#template_location-option `:template_location`} + # to see if it's been modified more recently than the corresponding CSS file + # in {file:SASS_REFERENCE.md#css_location-option `:css_location`}. + # If it has, it updates the CSS file. + # + # @param individual_files [Array<(String, String)>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + def update_stylesheets(individual_files = []) + return if options[:never_update] + compiler.update_stylesheets(individual_files) + end + + # Updates all stylesheets, even those that aren't out-of-date. + # Ignores the cache. + # + # @param individual_files [Array<(String, String)>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + # @see #update_stylesheets + def force_update_stylesheets(individual_files = []) + Compiler.new( + options.dup.merge( + :never_update => false, + :always_update => true, + :cache => false)).update_stylesheets(individual_files) + end + + # All other method invocations are proxied to the \{#compiler}. + # + # @see #compiler + # @see Sass::Plugin::Compiler + def method_missing(method, *args, &block) + if compiler.respond_to?(method) + compiler.send(method, *args, &block) + else + super + end + end + + # For parity with method_missing + def respond_to?(method) + super || compiler.respond_to?(method) + end + + # There's a small speedup by not using method missing for frequently delegated methods. + def options + compiler.options + end + end +end + +if defined?(ActionController) + # On Rails 3+ the rails plugin is loaded at the right time in railtie.rb + require 'sass/plugin/rails' unless Sass::Util.ap_geq_3? +elsif defined?(Merb::Plugins) + require 'sass/plugin/merb' +else + require 'sass/plugin/generic' +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/compiler.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/compiler.rb new file mode 100644 index 0000000000..f3ae6e3d80 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/compiler.rb @@ -0,0 +1,552 @@ +require 'fileutils' + +require 'sass' +# XXX CE: is this still necessary now that we have the compiler class? +require 'sass/callbacks' +require 'sass/plugin/configuration' +require 'sass/plugin/staleness_checker' + +module Sass::Plugin + # The Compiler class handles compilation of multiple files and/or directories, + # including checking which CSS files are out-of-date and need to be updated + # and calling Sass to perform the compilation on those files. + # + # {Sass::Plugin} uses this class to update stylesheets for a single application. + # Unlike {Sass::Plugin}, though, the Compiler class has no global state, + # and so multiple instances may be created and used independently. + # + # If you need to compile a Sass string into CSS, + # please see the {Sass::Engine} class. + # + # Unlike {Sass::Plugin}, this class doesn't keep track of + # whether or how many times a stylesheet should be updated. + # Therefore, the following `Sass::Plugin` options are ignored by the Compiler: + # + # * `:never_update` + # * `:always_check` + class Compiler + include Configuration + extend Sass::Callbacks + + # Creates a new compiler. + # + # @param opts [{Symbol => Object}] + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + def initialize(opts = {}) + @watched_files = Set.new + options.merge!(opts) + end + + # Register a callback to be run before stylesheets are mass-updated. + # This is run whenever \{#update\_stylesheets} is called, + # unless the \{file:SASS_REFERENCE.md#never_update-option `:never_update` option} + # is enabled. + # + # @yield [files] + # @yieldparam files [<(String, String, String)>] + # Individual files to be updated. Files in directories specified are included in this list. + # The first element of each pair is the source file, + # the second is the target CSS file, + # the third is the target sourcemap file. + define_callback :updating_stylesheets + + # Register a callback to be run after stylesheets are mass-updated. + # This is run whenever \{#update\_stylesheets} is called, + # unless the \{file:SASS_REFERENCE.md#never_update-option `:never_update` option} + # is enabled. + # + # @yield [updated_files] + # @yieldparam updated_files [<(String, String)>] + # Individual files that were updated. + # The first element of each pair is the source file, the second is the target CSS file. + define_callback :updated_stylesheets + + # Register a callback to be run after a single stylesheet is updated. + # The callback is only run if the stylesheet is really updated; + # if the CSS file is fresh, this won't be run. + # + # Even if the \{file:SASS_REFERENCE.md#full_exception-option `:full_exception` option} + # is enabled, this callback won't be run + # when an exception CSS file is being written. + # To run an action for those files, use \{#on\_compilation\_error}. + # + # @yield [template, css, sourcemap] + # @yieldparam template [String] + # The location of the Sass/SCSS file being updated. + # @yieldparam css [String] + # The location of the CSS file being generated. + # @yieldparam sourcemap [String] + # The location of the sourcemap being generated, if any. + define_callback :updated_stylesheet + + # Register a callback to be run when compilation starts. + # + # In combination with on_updated_stylesheet, this could be used + # to collect compilation statistics like timing or to take a + # diff of the changes to the output file. + # + # @yield [template, css, sourcemap] + # @yieldparam template [String] + # The location of the Sass/SCSS file being updated. + # @yieldparam css [String] + # The location of the CSS file being generated. + # @yieldparam sourcemap [String] + # The location of the sourcemap being generated, if any. + define_callback :compilation_starting + + # Register a callback to be run when Sass decides not to update a stylesheet. + # In particular, the callback is run when Sass finds that + # the template file and none of its dependencies + # have been modified since the last compilation. + # + # Note that this is **not** run when the + # \{file:SASS_REFERENCE.md#never-update_option `:never_update` option} is set, + # nor when Sass decides not to compile a partial. + # + # @yield [template, css] + # @yieldparam template [String] + # The location of the Sass/SCSS file not being updated. + # @yieldparam css [String] + # The location of the CSS file not being generated. + define_callback :not_updating_stylesheet + + # Register a callback to be run when there's an error + # compiling a Sass file. + # This could include not only errors in the Sass document, + # but also errors accessing the file at all. + # + # @yield [error, template, css] + # @yieldparam error [Exception] The exception that was raised. + # @yieldparam template [String] + # The location of the Sass/SCSS file being updated. + # @yieldparam css [String] + # The location of the CSS file being generated. + define_callback :compilation_error + + # Register a callback to be run when Sass creates a directory + # into which to put CSS files. + # + # Note that even if multiple levels of directories need to be created, + # the callback may only be run once. + # For example, if "foo/" exists and "foo/bar/baz/" needs to be created, + # this may only be run for "foo/bar/baz/". + # This is not a guarantee, however; + # it may also be run for "foo/bar/". + # + # @yield [dirname] + # @yieldparam dirname [String] + # The location of the directory that was created. + define_callback :creating_directory + + # Register a callback to be run when Sass detects + # that a template has been modified. + # This is only run when using \{#watch}. + # + # @yield [template] + # @yieldparam template [String] + # The location of the template that was modified. + define_callback :template_modified + + # Register a callback to be run when Sass detects + # that a new template has been created. + # This is only run when using \{#watch}. + # + # @yield [template] + # @yieldparam template [String] + # The location of the template that was created. + define_callback :template_created + + # Register a callback to be run when Sass detects + # that a template has been deleted. + # This is only run when using \{#watch}. + # + # @yield [template] + # @yieldparam template [String] + # The location of the template that was deleted. + define_callback :template_deleted + + # Register a callback to be run when Sass deletes a CSS file. + # This happens when the corresponding Sass/SCSS file has been deleted + # and when the compiler cleans the output files. + # + # @yield [filename] + # @yieldparam filename [String] + # The location of the CSS file that was deleted. + define_callback :deleting_css + + # Register a callback to be run when Sass deletes a sourcemap file. + # This happens when the corresponding Sass/SCSS file has been deleted + # and when the compiler cleans the output files. + # + # @yield [filename] + # @yieldparam filename [String] + # The location of the sourcemap file that was deleted. + define_callback :deleting_sourcemap + + # Updates out-of-date stylesheets. + # + # Checks each Sass/SCSS file in + # {file:SASS_REFERENCE.md#template_location-option `:template_location`} + # to see if it's been modified more recently than the corresponding CSS file + # in {file:SASS_REFERENCE.md#css_location-option `:css_location`}. + # If it has, it updates the CSS file. + # + # @param individual_files [Array<(String, String[, String])>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + # The third string, if provided, is the location of the Sourcemap file. + def update_stylesheets(individual_files = []) + Sass::Plugin.checked_for_updates = true + staleness_checker = StalenessChecker.new(engine_options) + + files = file_list(individual_files) + run_updating_stylesheets(files) + + updated_stylesheets = [] + files.each do |file, css, sourcemap| + # TODO: Does staleness_checker need to check the sourcemap file as well? + if options[:always_update] || staleness_checker.stylesheet_needs_update?(css, file) + # XXX For consistency, this should return the sourcemap too, but it would + # XXX be an API change. + updated_stylesheets << [file, css] + update_stylesheet(file, css, sourcemap) + else + run_not_updating_stylesheet(file, css, sourcemap) + end + end + run_updated_stylesheets(updated_stylesheets) + end + + # Construct a list of files that might need to be compiled + # from the provided individual_files and the template_locations. + # + # Note: this method does not cache the results as they can change + # across invocations when sass files are added or removed. + # + # @param individual_files [Array<(String, String[, String])>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + # The third string, if provided, is the location of the Sourcemap file. + # @return [Array<(String, String, String)>] + # A list of [sass_file, css_file, sourcemap_file] tuples similar + # to what was passed in, but expanded to include the current state + # of the directories being updated. + def file_list(individual_files = []) + files = individual_files.map do |tuple| + if engine_options[:sourcemap] == :none + tuple[0..1] + elsif tuple.size < 3 + [tuple[0], tuple[1], Sass::Util.sourcemap_name(tuple[1])] + else + tuple.dup + end + end + + template_location_array.each do |template_location, css_location| + Sass::Util.glob(File.join(template_location, "**", "[^_]*.s[ca]ss")).sort.each do |file| + # Get the relative path to the file + name = Sass::Util.relative_path_from(file, template_location).to_s + css = css_filename(name, css_location) + sourcemap = Sass::Util.sourcemap_name(css) unless engine_options[:sourcemap] == :none + files << [file, css, sourcemap] + end + end + files + end + + # Watches the template directory (or directories) + # and updates the CSS files whenever the related Sass/SCSS files change. + # `watch` never returns. + # + # Whenever a change is detected to a Sass/SCSS file in + # {file:SASS_REFERENCE.md#template_location-option `:template_location`}, + # the corresponding CSS file in {file:SASS_REFERENCE.md#css_location-option `:css_location`} + # will be recompiled. + # The CSS files of any Sass/SCSS files that import the changed file will also be recompiled. + # + # Before the watching starts in earnest, `watch` calls \{#update\_stylesheets}. + # + # Note that `watch` uses the [Listen](http://github.com/guard/listen) library + # to monitor the filesystem for changes. + # Listen isn't loaded until `watch` is run. + # The version of Listen distributed with Sass is loaded by default, + # but if another version has already been loaded that will be used instead. + # + # @param individual_files [Array<(String, String[, String])>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + # The third string, if provided, is the location of the Sourcemap file. + # @param options [Hash] The options that control how watching works. + # @option options [Boolean] :skip_initial_update + # Don't do an initial update when starting the watcher when true + def watch(individual_files = [], options = {}) + @inferred_directories = [] + options, individual_files = individual_files, [] if individual_files.is_a?(Hash) + update_stylesheets(individual_files) unless options[:skip_initial_update] + + directories = watched_paths + individual_files.each do |(source, _, _)| + source = File.expand_path(source) + @watched_files << Sass::Util.realpath(source).to_s + @inferred_directories << File.dirname(source) + end + + directories += @inferred_directories + directories = remove_redundant_directories(directories) + + # TODO: Keep better track of what depends on what + # so we don't have to run a global update every time anything changes. + # XXX The :additional_watch_paths option exists for Compass to use until + # a deprecated feature is removed. It may be removed without warning. + directories += Array(options[:additional_watch_paths]) + + options = { + :relative_paths => false, + # The native windows listener is much slower than the polling option, according to + # https://github.com/nex3/sass/commit/a3031856b22bc834a5417dedecb038b7be9b9e3e + :force_polling => @options[:poll] || Sass::Util.windows? + } + + listener = create_listener(*directories, options) do |modified, added, removed| + on_file_changed(individual_files, modified, added, removed) + yield(modified, added, removed) if block_given? + end + + begin + listener.start + sleep + rescue Interrupt + # Squelch Interrupt for clean exit from Listen::Listener + end + end + + # Non-destructively modifies \{#options} so that default values are properly set, + # and returns the result. + # + # @param additional_options [{Symbol => Object}] An options hash with which to merge \{#options} + # @return [{Symbol => Object}] The modified options hash + def engine_options(additional_options = {}) + opts = options.merge(additional_options) + opts[:load_paths] = load_paths(opts) + options[:sourcemap] = :auto if options[:sourcemap] == true + options[:sourcemap] = :none if options[:sourcemap] == false + opts + end + + # Compass expects this to exist + def stylesheet_needs_update?(css_file, template_file) + StalenessChecker.stylesheet_needs_update?(css_file, template_file) + end + + # Remove all output files that would be created by calling update_stylesheets, if they exist. + # + # This method runs the deleting_css and deleting_sourcemap callbacks for + # the files that are deleted. + # + # @param individual_files [Array<(String, String[, String])>] + # A list of files to check for updates + # **in addition to those specified by the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option}.** + # The first string in each pair is the location of the Sass/SCSS file, + # the second is the location of the CSS file that it should be compiled to. + # The third string, if provided, is the location of the Sourcemap file. + def clean(individual_files = []) + file_list(individual_files).each do |(_, css_file, sourcemap_file)| + if File.exist?(css_file) + run_deleting_css css_file + File.delete(css_file) + end + if sourcemap_file && File.exist?(sourcemap_file) + run_deleting_sourcemap sourcemap_file + File.delete(sourcemap_file) + end + end + nil + end + + private + + # This is mocked out in compiler_test.rb. + def create_listener(*args, &block) + require 'sass-listen' + SassListen.to(*args, &block) + end + + def remove_redundant_directories(directories) + dedupped = [] + directories.each do |new_directory| + # no need to add a directory that is already watched. + next if dedupped.any? do |existing_directory| + child_of_directory?(existing_directory, new_directory) + end + # get rid of any sub directories of this new directory + dedupped.reject! do |existing_directory| + child_of_directory?(new_directory, existing_directory) + end + dedupped << new_directory + end + dedupped + end + + def on_file_changed(individual_files, modified, added, removed) + recompile_required = false + + modified.uniq.each do |f| + next unless watched_file?(f) + recompile_required = true + run_template_modified(relative_to_pwd(f)) + end + + added.uniq.each do |f| + next unless watched_file?(f) + recompile_required = true + run_template_created(relative_to_pwd(f)) + end + + removed.uniq.each do |f| + next unless watched_file?(f) + run_template_deleted(relative_to_pwd(f)) + if (files = individual_files.find {|(source, _, _)| File.expand_path(source) == f}) + recompile_required = true + # This was a file we were watching explicitly and compiling to a particular location. + # Delete the corresponding file. + try_delete_css files[1] + else + next unless watched_file?(f) + recompile_required = true + # Look for the sass directory that contained the sass file + # And try to remove the css file that corresponds to it + template_location_array.each do |(sass_dir, css_dir)| + sass_dir = File.expand_path(sass_dir) + next unless child_of_directory?(sass_dir, f) + remainder = f[(sass_dir.size + 1)..-1] + try_delete_css(css_filename(remainder, css_dir)) + break + end + end + end + + return unless recompile_required + + # In case a file we're watching is removed and then recreated we + # prune out the non-existant files here. + watched_files_remaining = individual_files.select {|(source, _, _)| File.exist?(source)} + update_stylesheets(watched_files_remaining) + end + + def update_stylesheet(filename, css, sourcemap) + dir = File.dirname(css) + unless File.exist?(dir) + run_creating_directory dir + FileUtils.mkdir_p dir + end + + begin + File.read(filename) unless File.readable?(filename) # triggers an error for handling + engine_opts = engine_options(:css_filename => css, + :filename => filename, + :sourcemap_filename => sourcemap) + mapping = nil + run_compilation_starting(filename, css, sourcemap) + engine = Sass::Engine.for_file(filename, engine_opts) + if sourcemap + rendered, mapping = engine.render_with_sourcemap(File.basename(sourcemap)) + else + rendered = engine.render + end + rescue StandardError => e + compilation_error_occurred = true + run_compilation_error e, filename, css, sourcemap + raise e unless options[:full_exception] + rendered = Sass::SyntaxError.exception_to_css(e, options[:line] || 1) + end + + write_file(css, rendered) + if mapping + write_file( + sourcemap, + mapping.to_json( + :css_path => css, :sourcemap_path => sourcemap, :type => options[:sourcemap])) + end + run_updated_stylesheet(filename, css, sourcemap) unless compilation_error_occurred + end + + def write_file(fileName, content) + flag = 'w' + flag = 'wb' if Sass::Util.windows? && options[:unix_newlines] + File.open(fileName, flag) do |file| + file.set_encoding(content.encoding) + file.print(content) + end + end + + def try_delete_css(css) + if File.exist?(css) + run_deleting_css css + File.delete css + end + map = Sass::Util.sourcemap_name(css) + + return unless File.exist?(map) + + run_deleting_sourcemap map + File.delete map + end + + def watched_file?(file) + @watched_files.include?(file) || + normalized_load_paths.any? {|lp| lp.watched_file?(file)} || + @inferred_directories.any? {|d| sass_file_in_directory?(d, file)} + end + + def sass_file_in_directory?(directory, filename) + filename =~ /\.s[ac]ss$/ && filename.start_with?(directory + File::SEPARATOR) + end + + def watched_paths + @watched_paths ||= normalized_load_paths.map {|lp| lp.directories_to_watch}.compact.flatten + end + + def normalized_load_paths + @normalized_load_paths ||= + Sass::Engine.normalize_options(:load_paths => load_paths)[:load_paths] + end + + def load_paths(opts = options) + (opts[:load_paths] || []) + template_locations + end + + def template_locations + template_location_array.to_a.map {|l| l.first} + end + + def css_locations + template_location_array.to_a.map {|l| l.last} + end + + def css_filename(name, path) + "#{path}#{File::SEPARATOR unless path.end_with?(File::SEPARATOR)}#{name}". + gsub(/\.s[ac]ss$/, '.css') + end + + def relative_to_pwd(f) + Sass::Util.relative_path_from(f, Dir.pwd).to_s + rescue ArgumentError # when a relative path cannot be computed + f + end + + def child_of_directory?(parent, child) + parent_dir = parent.end_with?(File::SEPARATOR) ? parent : (parent + File::SEPARATOR) + child.start_with?(parent_dir) || parent == child + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/configuration.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/configuration.rb new file mode 100644 index 0000000000..93a8aa807d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/configuration.rb @@ -0,0 +1,134 @@ +module Sass + module Plugin + # We keep configuration in its own self-contained file so that we can load + # it independently in Rails 3, where the full plugin stuff is lazy-loaded. + # + # Note that this is not guaranteed to be thread-safe. For guaranteed thread + # safety, use a separate {Sass::Plugin} for each thread. + module Configuration + # Returns the default options for a {Sass::Plugin::Compiler}. + # + # @return [{Symbol => Object}] + def default_options + @default_options ||= { + :css_location => './public/stylesheets', + :always_update => false, + :always_check => true, + :full_exception => true, + :cache_location => ".sass-cache" + }.freeze + end + + # Resets the options and + # {Sass::Callbacks::InstanceMethods#clear_callbacks! clears all callbacks}. + def reset! + @options = nil + clear_callbacks! + end + + # An options hash. See {file:SASS_REFERENCE.md#Options the Sass options + # documentation}. + # + # @return [{Symbol => Object}] + def options + @options ||= default_options.dup + end + + # Adds a new template-location/css-location mapping. + # This means that Sass/SCSS files in `template_location` + # will be compiled to CSS files in `css_location`. + # + # This is preferred over manually manipulating the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option} + # since the option can be in multiple formats. + # + # Note that this method will change `options[:template_location]` + # to be in the Array format. + # This means that even if `options[:template_location]` + # had previously been a Hash or a String, + # it will now be an Array. + # + # @param template_location [String] The location where Sass/SCSS files will be. + # @param css_location [String] The location where compiled CSS files will go. + def add_template_location(template_location, css_location = options[:css_location]) + normalize_template_location! + template_location_array << [template_location, css_location] + end + + # Removes a template-location/css-location mapping. + # This means that Sass/SCSS files in `template_location` + # will no longer be compiled to CSS files in `css_location`. + # + # This is preferred over manually manipulating the + # {file:SASS_REFERENCE.md#template_location-option `:template_location` option} + # since the option can be in multiple formats. + # + # Note that this method will change `options[:template_location]` + # to be in the Array format. + # This means that even if `options[:template_location]` + # had previously been a Hash or a String, + # it will now be an Array. + # + # @param template_location [String] + # The location where Sass/SCSS files were, + # which is now going to be ignored. + # @param css_location [String] + # The location where compiled CSS files went, but will no longer go. + # @return [Boolean] + # Non-`nil` if the given mapping already existed and was removed, + # or `nil` if nothing was changed. + def remove_template_location(template_location, css_location = options[:css_location]) + normalize_template_location! + template_location_array.delete([template_location, css_location]) + end + + # Returns the template locations configured for Sass + # as an array of `[template_location, css_location]` pairs. + # See the {file:SASS_REFERENCE.md#template_location-option `:template_location` option} + # for details. + # + # Modifications to the returned array may not be persistent. Use {#add_template_location} + # and {#remove_template_location} instead. + # + # @return [Array<(String, String)>] + # An array of `[template_location, css_location]` pairs. + def template_location_array + convert_template_location(options[:template_location], options[:css_location]) + end + + private + + # Returns the given template location, as an array. If it's already an array, + # it is returned unmodified. Otherwise, a new array is created and returned. + # + # @param template_location [String, Array<(String, String)>] + # A single template location, or a pre-normalized array of template + # locations and CSS locations. + # @param css_location [String?] + # The location for compiled CSS files. + # @return [Array<(String, String)>] + # An array of `[template_location, css_location]` pairs. + def convert_template_location(template_location, css_location) + return template_location if template_location.is_a?(Array) + + case template_location + when nil + if css_location + [[File.join(css_location, 'sass'), css_location]] + else + [] + end + when String + [[template_location, css_location]] + else + template_location.to_a + end + end + + def normalize_template_location! + options[:template_location] = convert_template_location( + options[:template_location], options[:css_location]) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/generic.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/generic.rb new file mode 100644 index 0000000000..3e82d2d0e4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/generic.rb @@ -0,0 +1,15 @@ +# The reason some options are declared here rather than in sass/plugin/configuration.rb +# is that otherwise they'd clobber the Rails-specific options. +# Since Rails' options are lazy-loaded in Rails 3, +# they're reverse-merged with the default options +# so that user configuration is preserved. +# This means that defaults that differ from Rails' +# must be declared here. + +unless defined?(Sass::GENERIC_LOADED) + Sass::GENERIC_LOADED = true + + Sass::Plugin.options.merge!(:css_location => './public/stylesheets', + :always_update => false, + :always_check => true) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/merb.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/merb.rb new file mode 100644 index 0000000000..c8f66b1e0b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/merb.rb @@ -0,0 +1,48 @@ +unless defined?(Sass::MERB_LOADED) + Sass::MERB_LOADED = true + + module Sass::Plugin::Configuration + # Different default options in a m environment. + def default_options + @default_options ||= begin + version = Merb::VERSION.split('.').map {|n| n.to_i} + if version[0] <= 0 && version[1] < 5 + root = MERB_ROOT + env = MERB_ENV + else + root = Merb.root.to_s + env = Merb.environment + end + + { + :always_update => false, + :template_location => root + '/public/stylesheets/sass', + :css_location => root + '/public/stylesheets', + :cache_location => root + '/tmp/sass-cache', + :always_check => env != "production", + :quiet => env != "production", + :full_exception => env != "production" + }.freeze + end + end + end + + config = Merb::Plugins.config[:sass] || Merb::Plugins.config["sass"] || {} + + if defined? config.symbolize_keys! + config.symbolize_keys! + end + + Sass::Plugin.options.merge!(config) + + require 'sass/plugin/rack' + class Sass::Plugin::MerbBootLoader < Merb::BootLoader + after Merb::BootLoader::RackUpApplication + + def self.run + # Apparently there's no better way than this to add Sass + # to Merb's Rack stack. + Merb::Config[:app] = Sass::Plugin::Rack.new(Merb::Config[:app]) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rack.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rack.rb new file mode 100644 index 0000000000..a147aea94f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rack.rb @@ -0,0 +1,60 @@ +module Sass + module Plugin + # Rack middleware for compiling Sass code. + # + # ## Activate + # + # require 'sass/plugin/rack' + # use Sass::Plugin::Rack + # + # ## Customize + # + # Sass::Plugin.options.merge!( + # :cache_location => './tmp/sass-cache', + # :never_update => environment != :production, + # :full_exception => environment != :production) + # + # {file:SASS_REFERENCE.md#Options See the Reference for more options}. + # + # ## Use + # + # Put your Sass files in `public/stylesheets/sass`. + # Your CSS will be generated in `public/stylesheets`, + # and regenerated every request if necessary. + # The locations and frequency {file:SASS_REFERENCE.md#Options can be customized}. + # That's all there is to it! + class Rack + # The delay, in seconds, between update checks. + # Useful when many resources are requested for a single page. + # `nil` means no delay at all. + # + # @return [Float] + attr_accessor :dwell + + # Initialize the middleware. + # + # @param app [#call] The Rack application + # @param dwell [Float] See \{#dwell} + def initialize(app, dwell = 1.0) + @app = app + @dwell = dwell + @check_after = Time.now.to_f + end + + # Process a request, checking the Sass stylesheets for changes + # and updating them if necessary. + # + # @param env The Rack request environment + # @return [(#to_i, {String => String}, Object)] The Rack response + def call(env) + if @dwell.nil? || Time.now.to_f > @check_after + Sass::Plugin.check_for_updates + @check_after = Time.now.to_f + @dwell if @dwell + end + @app.call(env) + end + end + end +end + +require 'sass/plugin' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rails.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rails.rb new file mode 100644 index 0000000000..9e1677f7bc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/rails.rb @@ -0,0 +1,47 @@ +unless defined?(Sass::RAILS_LOADED) + Sass::RAILS_LOADED = true + + module Sass::Plugin::Configuration + # Different default options in a rails environment. + def default_options + return @default_options if @default_options + opts = { + :quiet => Sass::Util.rails_env != "production", + :full_exception => Sass::Util.rails_env != "production", + :cache_location => Sass::Util.rails_root + '/tmp/sass-cache' + } + + opts.merge!( + :always_update => false, + :template_location => Sass::Util.rails_root + '/public/stylesheets/sass', + :css_location => Sass::Util.rails_root + '/public/stylesheets', + :always_check => Sass::Util.rails_env == "development") + + @default_options = opts.freeze + end + end + + Sass::Plugin.options.reverse_merge!(Sass::Plugin.default_options) + + # Rails 3.1 loads and handles Sass all on its own + if defined?(ActionController::Metal) + # 3.1 > Rails >= 3.0 + require 'sass/plugin/rack' + Rails.configuration.middleware.use(Sass::Plugin::Rack) + elsif defined?(ActionController::Dispatcher) && + defined?(ActionController::Dispatcher.middleware) + # Rails >= 2.3 + require 'sass/plugin/rack' + ActionController::Dispatcher.middleware.use(Sass::Plugin::Rack) + else + module ActionController + class Base + alias_method :sass_old_process, :process + def process(*args) + Sass::Plugin.check_for_updates + sass_old_process(*args) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/staleness_checker.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/staleness_checker.rb new file mode 100644 index 0000000000..cecc0014cc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/plugin/staleness_checker.rb @@ -0,0 +1,199 @@ +require 'thread' + +module Sass + module Plugin + # The class handles `.s[ca]ss` file staleness checks via their mtime timestamps. + # + # To speed things up two level of caches are employed: + # + # * A class-level dependency cache which stores @import paths for each file. + # This is a long-lived cache that is reused by every StalenessChecker instance. + # * Three short-lived instance-level caches, one for file mtimes, + # one for whether a file is stale during this particular run. + # and one for the parse tree for a file. + # These are only used by a single StalenessChecker instance. + # + # Usage: + # + # * For a one-off staleness check of a single `.s[ca]ss` file, + # the class-level {stylesheet_needs_update?} method + # should be used. + # * For a series of staleness checks (e.g. checking all files for staleness) + # a StalenessChecker instance should be created, + # and the instance-level \{#stylesheet\_needs\_update?} method should be used. + # the caches should make the whole process significantly faster. + # *WARNING*: It is important not to retain the instance for too long, + # as its instance-level caches are never explicitly expired. + class StalenessChecker + @dependencies_cache = {} + @dependency_cache_mutex = Mutex.new + + class << self + # TODO: attach this to a compiler instance. + # @private + attr_accessor :dependencies_cache + attr_reader :dependency_cache_mutex + end + + # Creates a new StalenessChecker + # for checking the staleness of several stylesheets at once. + # + # @param options [{Symbol => Object}] + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + def initialize(options) + # URIs that are being actively checked for staleness. Protects against + # import loops. + @actively_checking = Set.new + + # Entries in the following instance-level caches are never explicitly expired. + # Instead they are supposed to automatically go out of scope when a series of staleness + # checks (this instance of StalenessChecker was created for) is finished. + @mtimes, @dependencies_stale, @parse_trees = {}, {}, {} + @options = Sass::Engine.normalize_options(options) + end + + # Returns whether or not a given CSS file is out of date + # and needs to be regenerated. + # + # @param css_file [String] The location of the CSS file to check. + # @param template_file [String] The location of the Sass or SCSS template + # that is compiled to `css_file`. + # @return [Boolean] Whether the stylesheet needs to be updated. + def stylesheet_needs_update?(css_file, template_file, importer = nil) + template_file = File.expand_path(template_file) + begin + css_mtime = File.mtime(css_file) + rescue Errno::ENOENT + return true + end + stylesheet_modified_since?(template_file, css_mtime, importer) + end + + # Returns whether a Sass or SCSS stylesheet has been modified since a given time. + # + # @param template_file [String] The location of the Sass or SCSS template. + # @param mtime [Time] The modification time to check against. + # @param importer [Sass::Importers::Base] The importer used to locate the stylesheet. + # Defaults to the filesystem importer. + # @return [Boolean] Whether the stylesheet has been modified. + def stylesheet_modified_since?(template_file, mtime, importer = nil) + importer ||= @options[:filesystem_importer].new(".") + dependency_updated?(mtime).call(template_file, importer) + end + + # Returns whether or not a given CSS file is out of date + # and needs to be regenerated. + # + # The distinction between this method and the instance-level \{#stylesheet\_needs\_update?} + # is that the instance method preserves mtime and stale-dependency caches, + # so it's better to use when checking multiple stylesheets at once. + # + # @param css_file [String] The location of the CSS file to check. + # @param template_file [String] The location of the Sass or SCSS template + # that is compiled to `css_file`. + # @return [Boolean] Whether the stylesheet needs to be updated. + def self.stylesheet_needs_update?(css_file, template_file, importer = nil) + new(Plugin.engine_options).stylesheet_needs_update?(css_file, template_file, importer) + end + + # Returns whether a Sass or SCSS stylesheet has been modified since a given time. + # + # The distinction between this method and the instance-level \{#stylesheet\_modified\_since?} + # is that the instance method preserves mtime and stale-dependency caches, + # so it's better to use when checking multiple stylesheets at once. + # + # @param template_file [String] The location of the Sass or SCSS template. + # @param mtime [Time] The modification time to check against. + # @param importer [Sass::Importers::Base] The importer used to locate the stylesheet. + # Defaults to the filesystem importer. + # @return [Boolean] Whether the stylesheet has been modified. + def self.stylesheet_modified_since?(template_file, mtime, importer = nil) + new(Plugin.engine_options).stylesheet_modified_since?(template_file, mtime, importer) + end + + private + + def dependencies_stale?(uri, importer, css_mtime) + timestamps = @dependencies_stale[[uri, importer]] ||= {} + timestamps.each_pair do |checked_css_mtime, is_stale| + if checked_css_mtime <= css_mtime && !is_stale + return false + elsif checked_css_mtime > css_mtime && is_stale + return true + end + end + timestamps[css_mtime] = dependencies(uri, importer).any?(&dependency_updated?(css_mtime)) + rescue Sass::SyntaxError + # If there's an error finding dependencies, default to recompiling. + true + end + + def mtime(uri, importer) + @mtimes[[uri, importer]] ||= + begin + mtime = importer.mtime(uri, @options) + if mtime.nil? + with_dependency_cache {|cache| cache.delete([uri, importer])} + nil + else + mtime + end + end + end + + def dependencies(uri, importer) + stored_mtime, dependencies = + with_dependency_cache {|cache| Sass::Util.destructure(cache[[uri, importer]])} + + if !stored_mtime || stored_mtime < mtime(uri, importer) + dependencies = compute_dependencies(uri, importer) + with_dependency_cache do |cache| + cache[[uri, importer]] = [mtime(uri, importer), dependencies] + end + end + + dependencies + end + + def dependency_updated?(css_mtime) + proc do |uri, importer| + next true if @actively_checking.include?(uri) + begin + @actively_checking << uri + sass_mtime = mtime(uri, importer) + !sass_mtime || + sass_mtime > css_mtime || + dependencies_stale?(uri, importer, css_mtime) + ensure + @actively_checking.delete uri + end + end + end + + def compute_dependencies(uri, importer) + tree(uri, importer).grep(Tree::ImportNode) do |n| + next if n.css_import? + file = n.imported_file + key = [file.options[:filename], file.options[:importer]] + @parse_trees[key] = file.to_tree + key + end.compact + end + + def tree(uri, importer) + @parse_trees[[uri, importer]] ||= importer.find(uri, @options).to_tree + end + + # Get access to the global dependency cache in a threadsafe manner. + # Inside the block, no other thread can access the dependency cache. + # + # @yieldparam cache [Hash] The hash that is the global dependency cache + # @return The value returned by the block to which this method yields + def with_dependency_cache + StalenessChecker.dependency_cache_mutex.synchronize do + yield StalenessChecker.dependencies_cache + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/railtie.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/railtie.rb new file mode 100644 index 0000000000..ad1f03d034 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/railtie.rb @@ -0,0 +1,10 @@ +# Rails 3.0.0.beta.2+, < 3.1 +if defined?(ActiveSupport) && ActiveSupport.public_methods.include?(:on_load) && + !Sass::Util.ap_geq?('3.1.0.beta') + require 'sass/plugin/configuration' + ActiveSupport.on_load(:before_configuration) do + require 'sass' + require 'sass/plugin' + require 'sass/plugin/rails' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/repl.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/repl.rb new file mode 100644 index 0000000000..e9b9e6ccc7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/repl.rb @@ -0,0 +1,57 @@ +require 'readline' + +module Sass + # Runs a SassScript read-eval-print loop. + # It presents a prompt on the terminal, + # reads in SassScript expressions, + # evaluates them, + # and prints the result. + class Repl + # @param options [{Symbol => Object}] An options hash. + def initialize(options = {}) + @options = options + end + + # Starts the read-eval-print loop. + def run + environment = Environment.new + @line = 0 + loop do + @line += 1 + unless (text = Readline.readline('>> ')) + puts + return + end + + Readline::HISTORY << text + parse_input(environment, text) + end + end + + private + + def parse_input(environment, text) + case text + when Script::MATCH + name = $1 + guarded = !!$3 + val = Script::Parser.parse($2, @line, text.size - ($3 || '').size - $2.size) + + unless guarded && environment.var(name) + environment.set_var(name, val.perform(environment)) + end + + p environment.var(name) + else + p Script::Parser.parse(text, @line, 0).perform(environment) + end + rescue Sass::SyntaxError => e + puts "SyntaxError: #{e.message}" + if @options[:trace] + e.backtrace.each do |line| + puts "\tfrom #{line}" + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/root.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/root.rb new file mode 100644 index 0000000000..31e19c5065 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/root.rb @@ -0,0 +1,7 @@ +module Sass + # The root directory of the Sass source tree. + # This may be overridden by the package manager + # if the lib directory is separated from the main source tree. + # @api public + ROOT_DIR = File.expand_path(File.join(__FILE__, "../../..")) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script.rb new file mode 100644 index 0000000000..c852f06d7f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script.rb @@ -0,0 +1,66 @@ +require 'sass/scss/rx' + +module Sass + # SassScript is code that's embedded in Sass documents + # to allow for property values to be computed from variables. + # + # This module contains code that handles the parsing and evaluation of SassScript. + module Script + # The regular expression used to parse variables. + MATCH = /^\$(#{Sass::SCSS::RX::IDENT})\s*:\s*(.+?) + (!#{Sass::SCSS::RX::IDENT}(?:\s+!#{Sass::SCSS::RX::IDENT})*)?$/x + + # The regular expression used to validate variables without matching. + VALIDATE = /^\$#{Sass::SCSS::RX::IDENT}$/ + + # Parses a string of SassScript + # + # @param value [String] The SassScript + # @param line [Integer] The number of the line on which the SassScript appeared. + # Used for error reporting + # @param offset [Integer] The number of characters in on `line` that the SassScript started. + # Used for error reporting + # @param options [{Symbol => Object}] An options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + # @return [Script::Tree::Node] The root node of the parse tree + def self.parse(value, line, offset, options = {}) + Parser.parse(value, line, offset, options) + rescue Sass::SyntaxError => e + e.message << ": #{value.inspect}." if e.message == "SassScript error" + e.modify_backtrace(:line => line, :filename => options[:filename]) + raise e + end + + require 'sass/script/functions' + require 'sass/script/parser' + require 'sass/script/tree' + require 'sass/script/value' + + # @private + CONST_RENAMES = { + :Literal => Sass::Script::Value::Base, + :ArgList => Sass::Script::Value::ArgList, + :Bool => Sass::Script::Value::Bool, + :Color => Sass::Script::Value::Color, + :List => Sass::Script::Value::List, + :Null => Sass::Script::Value::Null, + :Number => Sass::Script::Value::Number, + :String => Sass::Script::Value::String, + :Node => Sass::Script::Tree::Node, + :Funcall => Sass::Script::Tree::Funcall, + :Interpolation => Sass::Script::Tree::Interpolation, + :Operation => Sass::Script::Tree::Operation, + :StringInterpolation => Sass::Script::Tree::StringInterpolation, + :UnaryOperation => Sass::Script::Tree::UnaryOperation, + :Variable => Sass::Script::Tree::Variable, + } + + # @private + def self.const_missing(name) + klass = CONST_RENAMES[name] + super unless klass + CONST_RENAMES.each {|n, k| const_set(n, k)} + klass + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_lexer.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_lexer.rb new file mode 100644 index 0000000000..6362a9dac4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_lexer.rb @@ -0,0 +1,33 @@ +module Sass + module Script + # This is a subclass of {Lexer} for use in parsing plain CSS properties. + # + # @see Sass::SCSS::CssParser + class CssLexer < Lexer + private + + def token + important || super + end + + def string(re, *args) + if re == :uri + uri = scan(URI) + return unless uri + return [:string, Script::Value::String.new(uri)] + end + + return unless scan(STRING) + string_value = Sass::Script::Value::String.value(@scanner[1] || @scanner[2]) + value = Script::Value::String.new(string_value, :string) + [:string, value] + end + + def important + s = scan(IMPORTANT) + return unless s + [:raw, s] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_parser.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_parser.rb new file mode 100644 index 0000000000..32f05afa7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/css_parser.rb @@ -0,0 +1,36 @@ +require 'sass/script' +require 'sass/script/css_lexer' + +module Sass + module Script + # This is a subclass of {Parser} for use in parsing plain CSS properties. + # + # @see Sass::SCSS::CssParser + class CssParser < Parser + private + + # @private + def lexer_class; CssLexer; end + + # We need a production that only does /, + # since * and % aren't allowed in plain CSS + production :div, :unary_plus, :div + + def string + tok = try_tok(:string) + return number unless tok + return if @lexer.peek && @lexer.peek.type == :begin_interpolation + literal_node(tok.value, tok.source_range) + end + + # Short-circuit all the SassScript-only productions + def interpolation(first: nil, inner: :space) + first || send(inner) + end + + alias_method :or_expr, :div + alias_method :unary_div, :ident + alias_method :paren, :string + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/functions.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/functions.rb new file mode 100644 index 0000000000..5bd9593d8a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/functions.rb @@ -0,0 +1,2920 @@ +require 'sass/script/value/helpers' + +module Sass::Script + # YARD can't handle some multiline tags, and we need really long tags for function declarations. + # Methods in this module are accessible from the SassScript context. + # For example, you can write + # + # $color: hsl(120deg, 100%, 50%) + # + # and it will call {Functions#hsl}. + # + # The following functions are provided: + # + # *Note: These functions are described in more detail below.* + # + # ## RGB Functions + # + # \{#rgb rgb($red, $green, $blue)} + # : Creates a {Sass::Script::Value::Color Color} from red, green, and blue + # values. + # + # \{#rgba rgba($red, $green, $blue, $alpha)} + # : Creates a {Sass::Script::Value::Color Color} from red, green, blue, and + # alpha values. + # + # \{#red red($color)} + # : Gets the red component of a color. + # + # \{#green green($color)} + # : Gets the green component of a color. + # + # \{#blue blue($color)} + # : Gets the blue component of a color. + # + # \{#mix mix($color1, $color2, \[$weight\])} + # : Mixes two colors together. + # + # ## HSL Functions + # + # \{#hsl hsl($hue, $saturation, $lightness)} + # : Creates a {Sass::Script::Value::Color Color} from hue, saturation, and + # lightness values. + # + # \{#hsla hsla($hue, $saturation, $lightness, $alpha)} + # : Creates a {Sass::Script::Value::Color Color} from hue, saturation, + # lightness, and alpha values. + # + # \{#hue hue($color)} + # : Gets the hue component of a color. + # + # \{#saturation saturation($color)} + # : Gets the saturation component of a color. + # + # \{#lightness lightness($color)} + # : Gets the lightness component of a color. + # + # \{#adjust_hue adjust-hue($color, $degrees)} + # : Changes the hue of a color. + # + # \{#lighten lighten($color, $amount)} + # : Makes a color lighter. + # + # \{#darken darken($color, $amount)} + # : Makes a color darker. + # + # \{#saturate saturate($color, $amount)} + # : Makes a color more saturated. + # + # \{#desaturate desaturate($color, $amount)} + # : Makes a color less saturated. + # + # \{#grayscale grayscale($color)} + # : Converts a color to grayscale. + # + # \{#complement complement($color)} + # : Returns the complement of a color. + # + # \{#invert invert($color, \[$weight\])} + # : Returns the inverse of a color. + # + # ## Opacity Functions + # + # \{#alpha alpha($color)} / \{#opacity opacity($color)} + # : Gets the alpha component (opacity) of a color. + # + # \{#rgba rgba($color, $alpha)} + # : Changes the alpha component for a color. + # + # \{#opacify opacify($color, $amount)} / \{#fade_in fade-in($color, $amount)} + # : Makes a color more opaque. + # + # \{#transparentize transparentize($color, $amount)} / \{#fade_out fade-out($color, $amount)} + # : Makes a color more transparent. + # + # ## Other Color Functions + # + # \{#adjust_color adjust-color($color, \[$red\], \[$green\], \[$blue\], \[$hue\], \[$saturation\], \[$lightness\], \[$alpha\])} + # : Increases or decreases one or more components of a color. + # + # \{#scale_color scale-color($color, \[$red\], \[$green\], \[$blue\], \[$saturation\], \[$lightness\], \[$alpha\])} + # : Fluidly scales one or more properties of a color. + # + # \{#change_color change-color($color, \[$red\], \[$green\], \[$blue\], \[$hue\], \[$saturation\], \[$lightness\], \[$alpha\])} + # : Changes one or more properties of a color. + # + # \{#ie_hex_str ie-hex-str($color)} + # : Converts a color into the format understood by IE filters. + # + # ## String Functions + # + # \{#unquote unquote($string)} + # : Removes quotes from a string. + # + # \{#quote quote($string)} + # : Adds quotes to a string. + # + # \{#str_length str-length($string)} + # : Returns the number of characters in a string. + # + # \{#str_insert str-insert($string, $insert, $index)} + # : Inserts `$insert` into `$string` at `$index`. + # + # \{#str_index str-index($string, $substring)} + # : Returns the index of the first occurrence of `$substring` in `$string`. + # + # \{#str_slice str-slice($string, $start-at, [$end-at])} + # : Extracts a substring from `$string`. + # + # \{#to_upper_case to-upper-case($string)} + # : Converts a string to upper case. + # + # \{#to_lower_case to-lower-case($string)} + # : Converts a string to lower case. + # + # ## Number Functions + # + # \{#percentage percentage($number)} + # : Converts a unitless number to a percentage. + # + # \{#round round($number)} + # : Rounds a number to the nearest whole number. + # + # \{#ceil ceil($number)} + # : Rounds a number up to the next whole number. + # + # \{#floor floor($number)} + # : Rounds a number down to the previous whole number. + # + # \{#abs abs($number)} + # : Returns the absolute value of a number. + # + # \{#min min($numbers...)\} + # : Finds the minimum of several numbers. + # + # \{#max max($numbers...)\} + # : Finds the maximum of several numbers. + # + # \{#random random([$limit])\} + # : Returns a random number. + # + # ## List Functions {#list-functions} + # + # Lists in Sass are immutable; all list functions return a new list rather + # than updating the existing list in-place. + # + # All list functions work for maps as well, treating them as lists of pairs. + # + # \{#length length($list)} + # : Returns the length of a list. + # + # \{#nth nth($list, $n)} + # : Returns a specific item in a list. + # + # \{#set-nth set-nth($list, $n, $value)} + # : Replaces the nth item in a list. + # + # \{#join join($list1, $list2, \[$separator, $bracketed\])} + # : Joins together two lists into one. + # + # \{#append append($list1, $val, \[$separator\])} + # : Appends a single value onto the end of a list. + # + # \{#zip zip($lists...)} + # : Combines several lists into a single multidimensional list. + # + # \{#index index($list, $value)} + # : Returns the position of a value within a list. + # + # \{#list_separator list-separator($list)} + # : Returns the separator of a list. + # + # \{#is_bracketed is-bracketed($list)} + # : Returns whether a list has square brackets. + # + # ## Map Functions {#map-functions} + # + # Maps in Sass are immutable; all map functions return a new map rather than + # updating the existing map in-place. + # + # \{#map_get map-get($map, $key)} + # : Returns the value in a map associated with a given key. + # + # \{#map_merge map-merge($map1, $map2)} + # : Merges two maps together into a new map. + # + # \{#map_remove map-remove($map, $keys...)} + # : Returns a new map with keys removed. + # + # \{#map_keys map-keys($map)} + # : Returns a list of all keys in a map. + # + # \{#map_values map-values($map)} + # : Returns a list of all values in a map. + # + # \{#map_has_key map-has-key($map, $key)} + # : Returns whether a map has a value associated with a given key. + # + # \{#keywords keywords($args)} + # : Returns the keywords passed to a function that takes variable arguments. + # + # ## Selector Functions + # + # Selector functions are very liberal in the formats they support + # for selector arguments. They can take a plain string, a list of + # lists as returned by `&` or anything in between: + # + # * A plain string, such as `".foo .bar, .baz .bang"`. + # * A space-separated list of strings such as `(".foo" ".bar")`. + # * A comma-separated list of strings such as `(".foo .bar", ".baz .bang")`. + # * A comma-separated list of space-separated lists of strings such + # as `((".foo" ".bar"), (".baz" ".bang"))`. + # + # In general, selector functions allow placeholder selectors + # (`%foo`) but disallow parent-reference selectors (`&`). + # + # \{#selector_nest selector-nest($selectors...)} + # : Nests selector beneath one another like they would be nested in the + # stylesheet. + # + # \{#selector_append selector-append($selectors...)} + # : Appends selectors to one another without spaces in between. + # + # \{#selector_extend selector-extend($selector, $extendee, $extender)} + # : Extends `$extendee` with `$extender` within `$selector`. + # + # \{#selector_replace selector-replace($selector, $original, $replacement)} + # : Replaces `$original` with `$replacement` within `$selector`. + # + # \{#selector_unify selector-unify($selector1, $selector2)} + # : Unifies two selectors to produce a selector that matches + # elements matched by both. + # + # \{#is_superselector is-superselector($super, $sub)} + # : Returns whether `$super` matches all the elements `$sub` does, and + # possibly more. + # + # \{#simple_selectors simple-selectors($selector)} + # : Returns the simple selectors that comprise a compound selector. + # + # \{#selector_parse selector-parse($selector)} + # : Parses a selector into the format returned by `&`. + # + # ## Introspection Functions + # + # \{#feature_exists feature-exists($feature)} + # : Returns whether a feature exists in the current Sass runtime. + # + # \{#variable_exists variable-exists($name)} + # : Returns whether a variable with the given name exists in the current scope. + # + # \{#global_variable_exists global-variable-exists($name)} + # : Returns whether a variable with the given name exists in the global scope. + # + # \{#function_exists function-exists($name)} + # : Returns whether a function with the given name exists. + # + # \{#mixin_exists mixin-exists($name)} + # : Returns whether a mixin with the given name exists. + # + # \{#content_exists content-exists()} + # : Returns whether the current mixin was passed a content block. + # + # \{#inspect inspect($value)} + # : Returns the string representation of a value as it would be represented in Sass. + # + # \{#type_of type-of($value)} + # : Returns the type of a value. + # + # \{#unit unit($number)} + # : Returns the unit(s) associated with a number. + # + # \{#unitless unitless($number)} + # : Returns whether a number has units. + # + # \{#comparable comparable($number1, $number2)} + # : Returns whether two numbers can be added, subtracted, or compared. + # + # \{#call call($function, $args...)} + # : Dynamically calls a Sass function reference returned by `get-function`. + # + # \{#get_function get-function($name, $css: false)} + # : Looks up a function with the given name in the current lexical scope + # and returns a reference to it. + # + # ## Miscellaneous Functions + # + # \{#if if($condition, $if-true, $if-false)} + # : Returns one of two values, depending on whether or not `$condition` is + # true. + # + # \{#unique_id unique-id()} + # : Returns a unique CSS identifier. + # + # ## Adding Custom Functions + # + # New Sass functions can be added by adding Ruby methods to this module. + # For example: + # + # module Sass::Script::Functions + # def reverse(string) + # assert_type string, :String + # Sass::Script::Value::String.new(string.value.reverse) + # end + # declare :reverse, [:string] + # end + # + # Calling {declare} tells Sass the argument names for your function. + # If omitted, the function will still work, but will not be able to accept keyword arguments. + # {declare} can also allow your function to take arbitrary keyword arguments. + # + # There are a few things to keep in mind when modifying this module. + # First of all, the arguments passed are {Value} objects. + # Value objects are also expected to be returned. + # This means that Ruby values must be unwrapped and wrapped. + # + # Most Value objects support the {Value::Base#value value} accessor for getting + # their Ruby values. Color objects, though, must be accessed using + # {Sass::Script::Value::Color#rgb rgb}, {Sass::Script::Value::Color#red red}, + # {Sass::Script::Value::Color#blue green}, or {Sass::Script::Value::Color#blue + # blue}. + # + # Second, making Ruby functions accessible from Sass introduces the temptation + # to do things like database access within stylesheets. + # This is generally a bad idea; + # since Sass files are by default only compiled once, + # dynamic code is not a great fit. + # + # If you really, really need to compile Sass on each request, + # first make sure you have adequate caching set up. + # Then you can use {Sass::Engine} to render the code, + # using the {file:SASS_REFERENCE.md#custom-option `options` parameter} + # to pass in data that {EvaluationContext#options can be accessed} + # from your Sass functions. + # + # Within one of the functions in this module, + # methods of {EvaluationContext} can be used. + # + # ### Caveats + # + # When creating new {Value} objects within functions, be aware that it's not + # safe to call {Value::Base#to_s #to_s} (or other methods that use the string + # representation) on those objects without first setting {Tree::Node#options= + # the #options attribute}. + # + module Functions + @signatures = {} + + # A class representing a Sass function signature. + # + # @attr args [Array] The names of the arguments to the function. + # @attr delayed_args [Array] The names of the arguments whose evaluation should be + # delayed. + # @attr var_args [Boolean] Whether the function takes a variable number of arguments. + # @attr var_kwargs [Boolean] Whether the function takes an arbitrary set of keyword arguments. + Signature = Struct.new(:args, :delayed_args, :var_args, :var_kwargs, :deprecated) + + # Declare a Sass signature for a Ruby-defined function. + # This includes the names of the arguments, + # whether the function takes a variable number of arguments, + # and whether the function takes an arbitrary set of keyword arguments. + # + # It's not necessary to declare a signature for a function. + # However, without a signature it won't support keyword arguments. + # + # A single function can have multiple signatures declared + # as long as each one takes a different number of arguments. + # It's also possible to declare multiple signatures + # that all take the same number of arguments, + # but none of them but the first will be used + # unless the user uses keyword arguments. + # + # @example + # declare :rgba, [:hex, :alpha] + # declare :rgba, [:red, :green, :blue, :alpha] + # declare :accepts_anything, [], :var_args => true, :var_kwargs => true + # declare :some_func, [:foo, :bar, :baz], :var_kwargs => true + # + # @param method_name [Symbol] The name of the method + # whose signature is being declared. + # @param args [Array] The names of the arguments for the function signature. + # @option options :var_args [Boolean] (false) + # Whether the function accepts a variable number of (unnamed) arguments + # in addition to the named arguments. + # @option options :var_kwargs [Boolean] (false) + # Whether the function accepts other keyword arguments + # in addition to those in `:args`. + # If this is true, the Ruby function will be passed a hash from strings + # to {Value}s as the last argument. + # In addition, if this is true and `:var_args` is not, + # Sass will ensure that the last argument passed is a hash. + def self.declare(method_name, args, options = {}) + delayed_args = [] + args = args.map do |a| + a = a.to_s + if a[0] == ?& + a = a[1..-1] + delayed_args << a + end + a + end + # We don't expose this functionality except to certain builtin methods. + if delayed_args.any? && method_name != :if + raise ArgumentError.new("Delayed arguments are not allowed for method #{method_name}") + end + @signatures[method_name] ||= [] + @signatures[method_name] << Signature.new( + args, + delayed_args, + options[:var_args], + options[:var_kwargs], + options[:deprecated] && options[:deprecated].map {|a| a.to_s}) + end + + # Determine the correct signature for the number of arguments + # passed in for a given function. + # If no signatures match, the first signature is returned for error messaging. + # + # @param method_name [Symbol] The name of the Ruby function to be called. + # @param arg_arity [Integer] The number of unnamed arguments the function was passed. + # @param kwarg_arity [Integer] The number of keyword arguments the function was passed. + # + # @return [{Symbol => Object}, nil] + # The signature options for the matching signature, + # or nil if no signatures are declared for this function. See {declare}. + def self.signature(method_name, arg_arity, kwarg_arity) + return unless @signatures[method_name] + @signatures[method_name].each do |signature| + sig_arity = signature.args.size + return signature if sig_arity == arg_arity + kwarg_arity + next unless sig_arity < arg_arity + kwarg_arity + + # We have enough args. + # Now we need to figure out which args are varargs + # and if the signature allows them. + t_arg_arity, t_kwarg_arity = arg_arity, kwarg_arity + if sig_arity > t_arg_arity + # we transfer some kwargs arity to args arity + # if it does not have enough args -- assuming the names will work out. + t_kwarg_arity -= (sig_arity - t_arg_arity) + t_arg_arity = sig_arity + end + + if (t_arg_arity == sig_arity || t_arg_arity > sig_arity && signature.var_args) && + (t_kwarg_arity == 0 || t_kwarg_arity > 0 && signature.var_kwargs) + return signature + end + end + @signatures[method_name].first + end + + # Sets the random seed used by Sass's internal random number generator. + # + # This can be used to ensure consistent random number sequences which + # allows for consistent results when testing, etc. + # + # @param seed [Integer] + # @return [Integer] The same seed. + def self.random_seed=(seed) + @random_number_generator = Random.new(seed) + end + + # Get Sass's internal random number generator. + # + # @return [Random] + def self.random_number_generator + @random_number_generator ||= Random.new + end + + # The context in which methods in {Script::Functions} are evaluated. + # That means that all instance methods of {EvaluationContext} + # are available to use in functions. + class EvaluationContext + include Functions + include Value::Helpers + + # The human-readable names for [Sass::Script::Value::Base]. The default is + # just the downcased name of the type. + TYPE_NAMES = {:ArgList => 'variable argument list'} + + # The environment for this function. This environment's + # {Environment#parent} is the global environment, and its + # {Environment#caller} is a read-only view of the local environment of the + # caller of this function. + # + # @return [Environment] + attr_reader :environment + + # The options hash for the {Sass::Engine} that is processing the function call + # + # @return [{Symbol => Object}] + attr_reader :options + + # @param environment [Environment] See \{#environment} + def initialize(environment) + @environment = environment + @options = environment.options + end + + # Asserts that the type of a given SassScript value + # is the expected type (designated by a symbol). + # + # Valid types are `:Bool`, `:Color`, `:Number`, and `:String`. + # Note that `:String` will match both double-quoted strings + # and unquoted identifiers. + # + # @example + # assert_type value, :String + # assert_type value, :Number + # @param value [Sass::Script::Value::Base] A SassScript value + # @param type [Symbol, Array] The name(s) of the type the value is expected to be + # @param name [String, Symbol, nil] The name of the argument. + # @raise [ArgumentError] if value is not of the correct type. + def assert_type(value, type, name = nil) + valid_types = Array(type) + found_type = valid_types.find do |t| + value.is_a?(Sass::Script::Value.const_get(t)) || + t == :Map && value.is_a?(Sass::Script::Value::List) && value.value.empty? + end + + if found_type + value.check_deprecated_interp if found_type == :String + return + end + + err = if valid_types.size == 1 + "#{value.inspect} is not a #{TYPE_NAMES[type] || type.to_s.downcase}" + else + type_names = valid_types.map {|t| TYPE_NAMES[t] || t.to_s.downcase} + "#{value.inspect} is not any of #{type_names.join(', ')}" + end + err = "$#{name.to_s.tr('_', '-')}: " + err if name + raise ArgumentError.new(err) + end + + # Asserts that the unit of the number is as expected. + # + # @example + # assert_unit number, "px" + # assert_unit number, nil + # @param number [Sass::Script::Value::Number] The number to be validated. + # @param unit [::String] + # The unit that the number must have. + # If nil, the number must be unitless. + # @param name [::String] The name of the parameter being validated. + # @raise [ArgumentError] if number is not of the correct unit or is not a number. + def assert_unit(number, unit, name = nil) + assert_type number, :Number, name + return if number.is_unit?(unit) + expectation = unit ? "have a unit of #{unit}" : "be unitless" + if name + raise ArgumentError.new("Expected $#{name} to #{expectation} but got #{number}") + else + raise ArgumentError.new("Expected #{number} to #{expectation}") + end + end + + # Asserts that the value is an integer. + # + # @example + # assert_integer 2px + # assert_integer 2.5px + # => SyntaxError: "Expected 2.5px to be an integer" + # assert_integer 2.5px, "width" + # => SyntaxError: "Expected width to be an integer but got 2.5px" + # @param number [Sass::Script::Value::Base] The value to be validated. + # @param name [::String] The name of the parameter being validated. + # @raise [ArgumentError] if number is not an integer or is not a number. + def assert_integer(number, name = nil) + assert_type number, :Number, name + return if number.int? + if name + raise ArgumentError.new("Expected $#{name} to be an integer but got #{number}") + else + raise ArgumentError.new("Expected #{number} to be an integer") + end + end + + # Performs a node that has been delayed for execution. + # + # @private + # @param node [Sass::Script::Tree::Node, + # Sass::Script::Value::Base] When this is a tree node, it's + # performed in the caller's environment. When it's a value + # (which can happen when the value had to be performed already + # -- like for a splat), it's returned as-is. + # @param env [Sass::Environment] The environment within which to perform the node. + # Defaults to the (read-only) environment of the caller. + def perform(node, env = environment.caller) + if node.is_a?(Sass::Script::Value::Base) + node + else + node.perform(env) + end + end + end + + class << self + # Returns whether user function with a given name exists. + # + # @param function_name [String] + # @return [Boolean] + alias_method :callable?, :public_method_defined? + + private + + def include(*args) + r = super + # We have to re-include ourselves into EvaluationContext to work around + # an icky Ruby restriction. + EvaluationContext.send :include, self + r + end + end + + # Creates a {Sass::Script::Value::Color Color} object from red, green, and + # blue values. + # + # @see #rgba + # @overload rgb($red, $green, $blue) + # @param $red [Sass::Script::Value::Number] The amount of red in the color. + # Must be between 0 and 255 inclusive, or between `0%` and `100%` + # inclusive + # @param $green [Sass::Script::Value::Number] The amount of green in the + # color. Must be between 0 and 255 inclusive, or between `0%` and `100%` + # inclusive + # @param $blue [Sass::Script::Value::Number] The amount of blue in the + # color. Must be between 0 and 255 inclusive, or between `0%` and `100%` + # inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if any parameter is the wrong type or out of bounds + def rgb(red, green = nil, blue = nil) + if green.nil? + return unquoted_string("rgb(#{red})") if var?(red) + raise ArgumentError.new("wrong number of arguments (1 for 3)") + elsif blue.nil? + return unquoted_string("rgb(#{red}, #{green})") if var?(red) || var?(green) + raise ArgumentError.new("wrong number of arguments (2 for 3)") + end + + if special_number?(red) || special_number?(green) || special_number?(blue) + return unquoted_string("rgb(#{red}, #{green}, #{blue})") + end + assert_type red, :Number, :red + assert_type green, :Number, :green + assert_type blue, :Number, :blue + + color_attrs = [ + percentage_or_unitless(red, 255, "red"), + percentage_or_unitless(green, 255, "green"), + percentage_or_unitless(blue, 255, "blue") + ] + + # Don't store the string representation for function-created colors, both + # because it's not very useful and because some functions aren't supported + # on older browsers. + Sass::Script::Value::Color.new(color_attrs) + end + declare :rgb, [:red, :green, :blue] + declare :rgb, [:red, :green] + declare :rgb, [:red] + + # Creates a {Sass::Script::Value::Color Color} from red, green, blue, and + # alpha values. + # @see #rgb + # + # @overload rgba($red, $green, $blue, $alpha) + # @param $red [Sass::Script::Value::Number] The amount of red in the + # color. Must be between 0 and 255 inclusive or 0% and 100% inclusive + # @param $green [Sass::Script::Value::Number] The amount of green in the + # color. Must be between 0 and 255 inclusive or 0% and 100% inclusive + # @param $blue [Sass::Script::Value::Number] The amount of blue in the + # color. Must be between 0 and 255 inclusive or 0% and 100% inclusive + # @param $alpha [Sass::Script::Value::Number] The opacity of the color. + # Must be between 0 and 1 inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if any parameter is the wrong type or out of + # bounds + # + # @overload rgba($color, $alpha) + # Sets the opacity of an existing color. + # + # @example + # rgba(#102030, 0.5) => rgba(16, 32, 48, 0.5) + # rgba(blue, 0.2) => rgba(0, 0, 255, 0.2) + # + # @param $color [Sass::Script::Value::Color] The color whose opacity will + # be changed. + # @param $alpha [Sass::Script::Value::Number] The new opacity of the + # color. Must be between 0 and 1 inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$alpha` is out of bounds or either parameter + # is the wrong type + def rgba(*args) + case args.size + when 1 + return unquoted_string("rgba(#{args.first})") if var?(args.first) + raise ArgumentError.new("wrong number of arguments (1 for 4)") + when 2 + color, alpha = args + + if var?(color) + return unquoted_string("rgba(#{color}, #{alpha})") + elsif var?(alpha) + if color.is_a?(Sass::Script::Value::Color) + return unquoted_string("rgba(#{color.red}, #{color.green}, #{color.blue}, #{alpha})") + else + return unquoted_string("rgba(#{color}, #{alpha})") + end + end + + assert_type color, :Color, :color + if special_number?(alpha) + unquoted_string("rgba(#{color.red}, #{color.green}, #{color.blue}, #{alpha})") + else + assert_type alpha, :Number, :alpha + color.with(:alpha => percentage_or_unitless(alpha, 1, "alpha")) + end + when 3 + if var?(args[0]) || var?(args[1]) || var?(args[2]) + unquoted_string("rgba(#{args.join(', ')})") + else + raise ArgumentError.new("wrong number of arguments (3 for 4)") + end + when 4 + red, green, blue, alpha = args + if special_number?(red) || special_number?(green) || + special_number?(blue) || special_number?(alpha) + unquoted_string("rgba(#{red}, #{green}, #{blue}, #{alpha})") + else + rgba(rgb(red, green, blue), alpha) + end + else + raise ArgumentError.new("wrong number of arguments (#{args.size} for 4)") + end + end + declare :rgba, [:red, :green, :blue, :alpha] + declare :rgba, [:red, :green, :blue] + declare :rgba, [:color, :alpha] + declare :rgba, [:red] + + # Creates a {Sass::Script::Value::Color Color} from hue, saturation, and + # lightness values. Uses the algorithm from the [CSS3 spec][]. + # + # [CSS3 spec]: http://www.w3.org/TR/css3-color/#hsl-color + # + # @see #hsla + # @overload hsl($hue, $saturation, $lightness) + # @param $hue [Sass::Script::Value::Number] The hue of the color. Should be + # between 0 and 360 degrees, inclusive + # @param $saturation [Sass::Script::Value::Number] The saturation of the + # color. Must be between `0%` and `100%`, inclusive + # @param $lightness [Sass::Script::Value::Number] The lightness of the + # color. Must be between `0%` and `100%`, inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$saturation` or `$lightness` are out of bounds + # or any parameter is the wrong type + def hsl(hue, saturation = nil, lightness = nil) + if saturation.nil? + return unquoted_string("hsl(#{hue})") if var?(hue) + raise ArgumentError.new("wrong number of arguments (1 for 3)") + elsif lightness.nil? + return unquoted_string("hsl(#{hue}, #{saturation})") if var?(hue) || var?(saturation) + raise ArgumentError.new("wrong number of arguments (2 for 3)") + end + + if special_number?(hue) || special_number?(saturation) || special_number?(lightness) + unquoted_string("hsl(#{hue}, #{saturation}, #{lightness})") + else + hsla(hue, saturation, lightness, number(1)) + end + end + declare :hsl, [:hue, :saturation, :lightness] + declare :hsl, [:hue, :saturation] + declare :hsl, [:hue] + + # Creates a {Sass::Script::Value::Color Color} from hue, + # saturation, lightness, and alpha values. Uses the algorithm from + # the [CSS3 spec][]. + # + # [CSS3 spec]: http://www.w3.org/TR/css3-color/#hsl-color + # + # @see #hsl + # @overload hsla($hue, $saturation, $lightness, $alpha) + # @param $hue [Sass::Script::Value::Number] The hue of the color. Should be + # between 0 and 360 degrees, inclusive + # @param $saturation [Sass::Script::Value::Number] The saturation of the + # color. Must be between `0%` and `100%`, inclusive + # @param $lightness [Sass::Script::Value::Number] The lightness of the + # color. Must be between `0%` and `100%`, inclusive + # @param $alpha [Sass::Script::Value::Number] The opacity of the color. Must + # be between 0 and 1, inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$saturation`, `$lightness`, or `$alpha` are out + # of bounds or any parameter is the wrong type + def hsla(hue, saturation = nil, lightness = nil, alpha = nil) + if saturation.nil? + return unquoted_string("hsla(#{hue})") if var?(hue) + raise ArgumentError.new("wrong number of arguments (1 for 4)") + elsif lightness.nil? + return unquoted_string("hsla(#{hue}, #{saturation})") if var?(hue) || var?(saturation) + raise ArgumentError.new("wrong number of arguments (2 for 4)") + elsif alpha.nil? + if var?(hue) || var?(saturation) || var?(lightness) + return unquoted_string("hsla(#{hue}, #{saturation}, #{lightness})") + else + raise ArgumentError.new("wrong number of arguments (2 for 4)") + end + end + + if special_number?(hue) || special_number?(saturation) || + special_number?(lightness) || special_number?(alpha) + return unquoted_string("hsla(#{hue}, #{saturation}, #{lightness}, #{alpha})") + end + assert_type hue, :Number, :hue + assert_type saturation, :Number, :saturation + assert_type lightness, :Number, :lightness + assert_type alpha, :Number, :alpha + + h = hue.value + s = saturation.value + l = lightness.value + + # Don't store the string representation for function-created colors, both + # because it's not very useful and because some functions aren't supported + # on older browsers. + Sass::Script::Value::Color.new( + :hue => h, :saturation => s, :lightness => l, + :alpha => percentage_or_unitless(alpha, 1, "alpha")) + end + declare :hsla, [:hue, :saturation, :lightness, :alpha] + declare :hsla, [:hue, :saturation, :lightness] + declare :hsla, [:hue, :saturation] + declare :hsla, [:hue] + + # Gets the red component of a color. Calculated from HSL where necessary via + # [this algorithm][hsl-to-rgb]. + # + # [hsl-to-rgb]: http://www.w3.org/TR/css3-color/#hsl-color + # + # @overload red($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The red component, between 0 and 255 + # inclusive + # @raise [ArgumentError] if `$color` isn't a color + def red(color) + assert_type color, :Color, :color + number(color.red) + end + declare :red, [:color] + + # Gets the green component of a color. Calculated from HSL where necessary + # via [this algorithm][hsl-to-rgb]. + # + # [hsl-to-rgb]: http://www.w3.org/TR/css3-color/#hsl-color + # + # @overload green($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The green component, between 0 and + # 255 inclusive + # @raise [ArgumentError] if `$color` isn't a color + def green(color) + assert_type color, :Color, :color + number(color.green) + end + declare :green, [:color] + + # Gets the blue component of a color. Calculated from HSL where necessary + # via [this algorithm][hsl-to-rgb]. + # + # [hsl-to-rgb]: http://www.w3.org/TR/css3-color/#hsl-color + # + # @overload blue($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The blue component, between 0 and + # 255 inclusive + # @raise [ArgumentError] if `$color` isn't a color + def blue(color) + assert_type color, :Color, :color + number(color.blue) + end + declare :blue, [:color] + + # Returns the hue component of a color. See [the CSS3 HSL + # specification][hsl]. Calculated from RGB where necessary via [this + # algorithm][rgb-to-hsl]. + # + # [hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # [rgb-to-hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # + # @overload hue($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The hue component, between 0deg and + # 360deg + # @raise [ArgumentError] if `$color` isn't a color + def hue(color) + assert_type color, :Color, :color + number(color.hue, "deg") + end + declare :hue, [:color] + + # Returns the saturation component of a color. See [the CSS3 HSL + # specification][hsl]. Calculated from RGB where necessary via [this + # algorithm][rgb-to-hsl]. + # + # [hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # [rgb-to-hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # + # @overload saturation($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The saturation component, between 0% + # and 100% + # @raise [ArgumentError] if `$color` isn't a color + def saturation(color) + assert_type color, :Color, :color + number(color.saturation, "%") + end + declare :saturation, [:color] + + # Returns the lightness component of a color. See [the CSS3 HSL + # specification][hsl]. Calculated from RGB where necessary via [this + # algorithm][rgb-to-hsl]. + # + # [hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # [rgb-to-hsl]: http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + # + # @overload lightness($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The lightness component, between 0% + # and 100% + # @raise [ArgumentError] if `$color` isn't a color + def lightness(color) + assert_type color, :Color, :color + number(color.lightness, "%") + end + declare :lightness, [:color] + + # Returns the alpha component (opacity) of a color. This is 1 unless + # otherwise specified. + # + # This function also supports the proprietary Microsoft `alpha(opacity=20)` + # syntax as a special case. + # + # @overload alpha($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The alpha component, between 0 and 1 + # @raise [ArgumentError] if `$color` isn't a color + def alpha(*args) + if args.all? do |a| + a.is_a?(Sass::Script::Value::String) && a.type == :identifier && + a.value =~ /^[a-zA-Z]+\s*=/ + end + # Support the proprietary MS alpha() function + return identifier("alpha(#{args.map {|a| a.to_s}.join(', ')})") + end + + raise ArgumentError.new("wrong number of arguments (#{args.size} for 1)") if args.size != 1 + + assert_type args.first, :Color, :color + number(args.first.alpha) + end + declare :alpha, [:color] + + # Returns the alpha component (opacity) of a color. This is 1 unless + # otherwise specified. + # + # @overload opacity($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Number] The alpha component, between 0 and 1 + # @raise [ArgumentError] if `$color` isn't a color + def opacity(color) + if color.is_a?(Sass::Script::Value::Number) + return identifier("opacity(#{color})") + end + assert_type color, :Color, :color + number(color.alpha) + end + declare :opacity, [:color] + + # Makes a color more opaque. Takes a color and a number between 0 and 1, and + # returns a color with the opacity increased by that amount. + # + # @see #transparentize + # @example + # opacify(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.6) + # opacify(rgba(0, 0, 17, 0.8), 0.2) => #001 + # @overload opacify($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to increase the + # opacity by, between 0 and 1 + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def opacify(color, amount) + _adjust(color, amount, :alpha, 0..1, :+) + end + declare :opacify, [:color, :amount] + + alias_method :fade_in, :opacify + declare :fade_in, [:color, :amount] + + # Makes a color more transparent. Takes a color and a number between 0 and + # 1, and returns a color with the opacity decreased by that amount. + # + # @see #opacify + # @example + # transparentize(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.4) + # transparentize(rgba(0, 0, 0, 0.8), 0.2) => rgba(0, 0, 0, 0.6) + # @overload transparentize($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to decrease the + # opacity by, between 0 and 1 + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def transparentize(color, amount) + _adjust(color, amount, :alpha, 0..1, :-) + end + declare :transparentize, [:color, :amount] + + alias_method :fade_out, :transparentize + declare :fade_out, [:color, :amount] + + # Makes a color lighter. Takes a color and a number between `0%` and `100%`, + # and returns a color with the lightness increased by that amount. + # + # @see #darken + # @example + # lighten(hsl(0, 0%, 0%), 30%) => hsl(0, 0, 30) + # lighten(#800, 20%) => #e00 + # @overload lighten($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to increase the + # lightness by, between `0%` and `100%` + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def lighten(color, amount) + _adjust(color, amount, :lightness, 0..100, :+, "%") + end + declare :lighten, [:color, :amount] + + # Makes a color darker. Takes a color and a number between 0% and 100%, and + # returns a color with the lightness decreased by that amount. + # + # @see #lighten + # @example + # darken(hsl(25, 100%, 80%), 30%) => hsl(25, 100%, 50%) + # darken(#800, 20%) => #200 + # @overload darken($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to decrease the + # lightness by, between `0%` and `100%` + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def darken(color, amount) + _adjust(color, amount, :lightness, 0..100, :-, "%") + end + declare :darken, [:color, :amount] + + # Makes a color more saturated. Takes a color and a number between 0% and + # 100%, and returns a color with the saturation increased by that amount. + # + # @see #desaturate + # @example + # saturate(hsl(120, 30%, 90%), 20%) => hsl(120, 50%, 90%) + # saturate(#855, 20%) => #9e3f3f + # @overload saturate($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to increase the + # saturation by, between `0%` and `100%` + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def saturate(color, amount = nil) + # Support the filter effects definition of saturate. + # https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html + return identifier("saturate(#{color})") if amount.nil? + _adjust(color, amount, :saturation, 0..100, :+, "%") + end + declare :saturate, [:color, :amount] + declare :saturate, [:amount] + + # Makes a color less saturated. Takes a color and a number between 0% and + # 100%, and returns a color with the saturation decreased by that value. + # + # @see #saturate + # @example + # desaturate(hsl(120, 30%, 90%), 20%) => hsl(120, 10%, 90%) + # desaturate(#855, 20%) => #726b6b + # @overload desaturate($color, $amount) + # @param $color [Sass::Script::Value::Color] + # @param $amount [Sass::Script::Value::Number] The amount to decrease the + # saturation by, between `0%` and `100%` + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$amount` is out of bounds, or either parameter + # is the wrong type + def desaturate(color, amount) + _adjust(color, amount, :saturation, 0..100, :-, "%") + end + declare :desaturate, [:color, :amount] + + # Changes the hue of a color. Takes a color and a number of degrees (usually + # between `-360deg` and `360deg`), and returns a color with the hue rotated + # along the color wheel by that amount. + # + # @example + # adjust-hue(hsl(120, 30%, 90%), 60deg) => hsl(180, 30%, 90%) + # adjust-hue(hsl(120, 30%, 90%), -60deg) => hsl(60, 30%, 90%) + # adjust-hue(#811, 45deg) => #886a11 + # @overload adjust_hue($color, $degrees) + # @param $color [Sass::Script::Value::Color] + # @param $degrees [Sass::Script::Value::Number] The number of degrees to + # rotate the hue + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if either parameter is the wrong type + def adjust_hue(color, degrees) + assert_type color, :Color, :color + assert_type degrees, :Number, :degrees + color.with(:hue => color.hue + degrees.value) + end + declare :adjust_hue, [:color, :degrees] + + # Converts a color into the format understood by IE filters. + # + # @example + # ie-hex-str(#abc) => #FFAABBCC + # ie-hex-str(#3322BB) => #FF3322BB + # ie-hex-str(rgba(0, 255, 0, 0.5)) => #8000FF00 + # @overload ie_hex_str($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::String] The IE-formatted string + # representation of the color + # @raise [ArgumentError] if `$color` isn't a color + def ie_hex_str(color) + assert_type color, :Color, :color + alpha = Sass::Util.round(color.alpha * 255).to_s(16).rjust(2, '0') + identifier("##{alpha}#{color.send(:hex_str)[1..-1]}".upcase) + end + declare :ie_hex_str, [:color] + + # Increases or decreases one or more properties of a color. This can change + # the red, green, blue, hue, saturation, value, and alpha properties. The + # properties are specified as keyword arguments, and are added to or + # subtracted from the color's current value for that property. + # + # All properties are optional. You can't specify both RGB properties + # (`$red`, `$green`, `$blue`) and HSL properties (`$hue`, `$saturation`, + # `$value`) at the same time. + # + # @example + # adjust-color(#102030, $blue: 5) => #102035 + # adjust-color(#102030, $red: -5, $blue: 5) => #0b2035 + # adjust-color(hsl(25, 100%, 80%), $lightness: -30%, $alpha: -0.4) => hsla(25, 100%, 50%, 0.6) + # @overload adjust_color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha]) + # @param $color [Sass::Script::Value::Color] + # @param $red [Sass::Script::Value::Number] The adjustment to make on the + # red component, between -255 and 255 inclusive + # @param $green [Sass::Script::Value::Number] The adjustment to make on the + # green component, between -255 and 255 inclusive + # @param $blue [Sass::Script::Value::Number] The adjustment to make on the + # blue component, between -255 and 255 inclusive + # @param $hue [Sass::Script::Value::Number] The adjustment to make on the + # hue component, in degrees + # @param $saturation [Sass::Script::Value::Number] The adjustment to make on + # the saturation component, between `-100%` and `100%` inclusive + # @param $lightness [Sass::Script::Value::Number] The adjustment to make on + # the lightness component, between `-100%` and `100%` inclusive + # @param $alpha [Sass::Script::Value::Number] The adjustment to make on the + # alpha component, between -1 and 1 inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if any parameter is the wrong type or out-of + # bounds, or if RGB properties and HSL properties are adjusted at the + # same time + def adjust_color(color, kwargs) + assert_type color, :Color, :color + with = Sass::Util.map_hash( + "red" => [-255..255, ""], + "green" => [-255..255, ""], + "blue" => [-255..255, ""], + "hue" => nil, + "saturation" => [-100..100, "%"], + "lightness" => [-100..100, "%"], + "alpha" => [-1..1, ""] + ) do |name, (range, units)| + val = kwargs.delete(name) + next unless val + assert_type val, :Number, name + Sass::Util.check_range("$#{name}: Amount", range, val, units) if range + adjusted = color.send(name) + val.value + adjusted = [0, Sass::Util.restrict(adjusted, range)].max if range + [name.to_sym, adjusted] + end + + unless kwargs.empty? + name, val = kwargs.to_a.first + raise ArgumentError.new("Unknown argument $#{name} (#{val})") + end + + color.with(with) + end + declare :adjust_color, [:color], :var_kwargs => true + + # Fluidly scales one or more properties of a color. Unlike + # \{#adjust_color adjust-color}, which changes a color's properties by fixed + # amounts, \{#scale_color scale-color} fluidly changes them based on how + # high or low they already are. That means that lightening an already-light + # color with \{#scale_color scale-color} won't change the lightness much, + # but lightening a dark color by the same amount will change it more + # dramatically. This has the benefit of making `scale-color($color, ...)` + # have a similar effect regardless of what `$color` is. + # + # For example, the lightness of a color can be anywhere between `0%` and + # `100%`. If `scale-color($color, $lightness: 40%)` is called, the resulting + # color's lightness will be 40% of the way between its original lightness + # and 100. If `scale-color($color, $lightness: -40%)` is called instead, the + # lightness will be 40% of the way between the original and 0. + # + # This can change the red, green, blue, saturation, value, and alpha + # properties. The properties are specified as keyword arguments. All + # arguments should be percentages between `0%` and `100%`. + # + # All properties are optional. You can't specify both RGB properties + # (`$red`, `$green`, `$blue`) and HSL properties (`$saturation`, `$value`) + # at the same time. + # + # @example + # scale-color(hsl(120, 70%, 80%), $lightness: 50%) => hsl(120, 70%, 90%) + # scale-color(rgb(200, 150%, 170%), $green: -40%, $blue: 70%) => rgb(200, 90, 229) + # scale-color(hsl(200, 70%, 80%), $saturation: -90%, $alpha: -30%) => hsla(200, 7%, 80%, 0.7) + # @overload scale_color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha]) + # @param $color [Sass::Script::Value::Color] + # @param $red [Sass::Script::Value::Number] + # @param $green [Sass::Script::Value::Number] + # @param $blue [Sass::Script::Value::Number] + # @param $saturation [Sass::Script::Value::Number] + # @param $lightness [Sass::Script::Value::Number] + # @param $alpha [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if any parameter is the wrong type or out-of + # bounds, or if RGB properties and HSL properties are adjusted at the + # same time + def scale_color(color, kwargs) + assert_type color, :Color, :color + with = Sass::Util.map_hash( + "red" => 255, + "green" => 255, + "blue" => 255, + "saturation" => 100, + "lightness" => 100, + "alpha" => 1 + ) do |name, max| + val = kwargs.delete(name) + next unless val + assert_type val, :Number, name + assert_unit val, '%', name + Sass::Util.check_range("$#{name}: Amount", -100..100, val, '%') + + current = color.send(name) + scale = val.value / 100.0 + diff = scale > 0 ? max - current : current + [name.to_sym, current + diff * scale] + end + + unless kwargs.empty? + name, val = kwargs.to_a.first + raise ArgumentError.new("Unknown argument $#{name} (#{val})") + end + + color.with(with) + end + declare :scale_color, [:color], :var_kwargs => true + + # Changes one or more properties of a color. This can change the red, green, + # blue, hue, saturation, value, and alpha properties. The properties are + # specified as keyword arguments, and replace the color's current value for + # that property. + # + # All properties are optional. You can't specify both RGB properties + # (`$red`, `$green`, `$blue`) and HSL properties (`$hue`, `$saturation`, + # `$value`) at the same time. + # + # @example + # change-color(#102030, $blue: 5) => #102005 + # change-color(#102030, $red: 120, $blue: 5) => #782005 + # change-color(hsl(25, 100%, 80%), $lightness: 40%, $alpha: 0.8) => hsla(25, 100%, 40%, 0.8) + # @overload change_color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha]) + # @param $color [Sass::Script::Value::Color] + # @param $red [Sass::Script::Value::Number] The new red component for the + # color, within 0 and 255 inclusive + # @param $green [Sass::Script::Value::Number] The new green component for + # the color, within 0 and 255 inclusive + # @param $blue [Sass::Script::Value::Number] The new blue component for the + # color, within 0 and 255 inclusive + # @param $hue [Sass::Script::Value::Number] The new hue component for the + # color, in degrees + # @param $saturation [Sass::Script::Value::Number] The new saturation + # component for the color, between `0%` and `100%` inclusive + # @param $lightness [Sass::Script::Value::Number] The new lightness + # component for the color, within `0%` and `100%` inclusive + # @param $alpha [Sass::Script::Value::Number] The new alpha component for + # the color, within 0 and 1 inclusive + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if any parameter is the wrong type or out-of + # bounds, or if RGB properties and HSL properties are adjusted at the + # same time + def change_color(color, kwargs) + assert_type color, :Color, :color + with = Sass::Util.map_hash( + 'red' => ['Red value', 0..255], + 'green' => ['Green value', 0..255], + 'blue' => ['Blue value', 0..255], + 'hue' => [], + 'saturation' => ['Saturation', 0..100, '%'], + 'lightness' => ['Lightness', 0..100, '%'], + 'alpha' => ['Alpha channel', 0..1] + ) do |name, (desc, range, unit)| + val = kwargs.delete(name) + next unless val + assert_type val, :Number, name + + if range + val = Sass::Util.check_range(desc, range, val, unit) + else + val = val.value + end + + [name.to_sym, val] + end + + unless kwargs.empty? + name, val = kwargs.to_a.first + raise ArgumentError.new("Unknown argument $#{name} (#{val})") + end + + color.with(with) + end + declare :change_color, [:color], :var_kwargs => true + + # Mixes two colors together. Specifically, takes the average of each of the + # RGB components, optionally weighted by the given percentage. The opacity + # of the colors is also considered when weighting the components. + # + # The weight specifies the amount of the first color that should be included + # in the returned color. The default, `50%`, means that half the first color + # and half the second color should be used. `25%` means that a quarter of + # the first color and three quarters of the second color should be used. + # + # @example + # mix(#f00, #00f) => #7f007f + # mix(#f00, #00f, 25%) => #3f00bf + # mix(rgba(255, 0, 0, 0.5), #00f) => rgba(63, 0, 191, 0.75) + # @overload mix($color1, $color2, $weight: 50%) + # @param $color1 [Sass::Script::Value::Color] + # @param $color2 [Sass::Script::Value::Color] + # @param $weight [Sass::Script::Value::Number] The relative weight of each + # color. Closer to `100%` gives more weight to `$color1`, closer to `0%` + # gives more weight to `$color2` + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$weight` is out of bounds or any parameter is + # the wrong type + def mix(color1, color2, weight = number(50)) + assert_type color1, :Color, :color1 + assert_type color2, :Color, :color2 + assert_type weight, :Number, :weight + + Sass::Util.check_range("Weight", 0..100, weight, '%') + + # This algorithm factors in both the user-provided weight (w) and the + # difference between the alpha values of the two colors (a) to decide how + # to perform the weighted average of the two RGB values. + # + # It works by first normalizing both parameters to be within [-1, 1], + # where 1 indicates "only use color1", -1 indicates "only use color2", and + # all values in between indicated a proportionately weighted average. + # + # Once we have the normalized variables w and a, we apply the formula + # (w + a)/(1 + w*a) to get the combined weight (in [-1, 1]) of color1. + # This formula has two especially nice properties: + # + # * When either w or a are -1 or 1, the combined weight is also that number + # (cases where w * a == -1 are undefined, and handled as a special case). + # + # * When a is 0, the combined weight is w, and vice versa. + # + # Finally, the weight of color1 is renormalized to be within [0, 1] + # and the weight of color2 is given by 1 minus the weight of color1. + p = (weight.value / 100.0).to_f + w = p * 2 - 1 + a = color1.alpha - color2.alpha + + w1 = ((w * a == -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0 + w2 = 1 - w1 + + rgba = color1.rgb.zip(color2.rgb).map {|v1, v2| v1 * w1 + v2 * w2} + rgba << color1.alpha * p + color2.alpha * (1 - p) + rgb_color(*rgba) + end + declare :mix, [:color1, :color2] + declare :mix, [:color1, :color2, :weight] + + # Converts a color to grayscale. This is identical to `desaturate(color, + # 100%)`. + # + # @see #desaturate + # @overload grayscale($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$color` isn't a color + def grayscale(color) + if color.is_a?(Sass::Script::Value::Number) + return identifier("grayscale(#{color})") + end + desaturate color, number(100) + end + declare :grayscale, [:color] + + # Returns the complement of a color. This is identical to `adjust-hue(color, + # 180deg)`. + # + # @see #adjust_hue #adjust-hue + # @overload complement($color) + # @param $color [Sass::Script::Value::Color] + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$color` isn't a color + def complement(color) + adjust_hue color, number(180) + end + declare :complement, [:color] + + # Returns the inverse (negative) of a color. The red, green, and blue values + # are inverted, while the opacity is left alone. + # + # @overload invert($color) + # @param $color [Sass::Script::Value::Color] + # @overload invert($color, $weight: 100%) + # @param $color [Sass::Script::Value::Color] + # @param $weight [Sass::Script::Value::Number] The relative weight of the + # color color's inverse + # @return [Sass::Script::Value::Color] + # @raise [ArgumentError] if `$color` isn't a color or `$weight` + # isn't a percentage between 0% and 100% + def invert(color, weight = number(100)) + if color.is_a?(Sass::Script::Value::Number) + return identifier("invert(#{color})") + end + + assert_type color, :Color, :color + inv = color.with( + :red => (255 - color.red), + :green => (255 - color.green), + :blue => (255 - color.blue)) + + mix(inv, color, weight) + end + declare :invert, [:color] + declare :invert, [:color, :weight] + + # Removes quotes from a string. If the string is already unquoted, this will + # return it unmodified. + # + # @see #quote + # @example + # unquote("foo") => foo + # unquote(foo) => foo + # @overload unquote($string) + # @param $string [Sass::Script::Value::String] + # @return [Sass::Script::Value::String] + # @raise [ArgumentError] if `$string` isn't a string + def unquote(string) + unless string.is_a?(Sass::Script::Value::String) + # Don't warn multiple times for the same source line. + $_sass_warned_for_unquote ||= Set.new + frame = environment.stack.frames.last + key = [frame.filename, frame.line] if frame + return string if frame && $_sass_warned_for_unquote.include?(key) + $_sass_warned_for_unquote << key if frame + + Sass::Util.sass_warn(< "foo" + # quote(foo) => "foo" + # @overload quote($string) + # @param $string [Sass::Script::Value::String] + # @return [Sass::Script::Value::String] + # @raise [ArgumentError] if `$string` isn't a string + def quote(string) + assert_type string, :String, :string + if string.type != :string + quoted_string(string.value) + else + string + end + end + declare :quote, [:string] + + # Returns the number of characters in a string. + # + # @example + # str-length("foo") => 3 + # @overload str_length($string) + # @param $string [Sass::Script::Value::String] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$string` isn't a string + def str_length(string) + assert_type string, :String, :string + number(string.value.size) + end + declare :str_length, [:string] + + # Inserts `$insert` into `$string` at `$index`. + # + # Note that unlike some languages, the first character in a Sass string is + # number 1, the second number 2, and so forth. + # + # @example + # str-insert("abcd", "X", 1) => "Xabcd" + # str-insert("abcd", "X", 4) => "abcXd" + # str-insert("abcd", "X", 5) => "abcdX" + # + # @overload str_insert($string, $insert, $index) + # @param $string [Sass::Script::Value::String] + # @param $insert [Sass::Script::Value::String] + # @param $index [Sass::Script::Value::Number] The position at which + # `$insert` will be inserted. Negative indices count from the end of + # `$string`. An index that's outside the bounds of the string will insert + # `$insert` at the front or back of the string + # @return [Sass::Script::Value::String] The result string. This will be + # quoted if and only if `$string` was quoted + # @raise [ArgumentError] if any parameter is the wrong type + def str_insert(original, insert, index) + assert_type original, :String, :string + assert_type insert, :String, :insert + assert_integer index, :index + assert_unit index, nil, :index + insertion_point = if index.to_i > 0 + [index.to_i - 1, original.value.size].min + else + [index.to_i, -original.value.size - 1].max + end + result = original.value.dup.insert(insertion_point, insert.value) + Sass::Script::Value::String.new(result, original.type) + end + declare :str_insert, [:string, :insert, :index] + + # Returns the index of the first occurrence of `$substring` in `$string`. If + # there is no such occurrence, returns `null`. + # + # Note that unlike some languages, the first character in a Sass string is + # number 1, the second number 2, and so forth. + # + # @example + # str-index(abcd, a) => 1 + # str-index(abcd, ab) => 1 + # str-index(abcd, X) => null + # str-index(abcd, c) => 3 + # + # @overload str_index($string, $substring) + # @param $string [Sass::Script::Value::String] + # @param $substring [Sass::Script::Value::String] + # @return [Sass::Script::Value::Number, Sass::Script::Value::Null] + # @raise [ArgumentError] if any parameter is the wrong type + def str_index(string, substring) + assert_type string, :String, :string + assert_type substring, :String, :substring + index = string.value.index(substring.value) + index ? number(index + 1) : null + end + declare :str_index, [:string, :substring] + + # Extracts a substring from `$string`. The substring will begin at index + # `$start-at` and ends at index `$end-at`. + # + # Note that unlike some languages, the first character in a Sass string is + # number 1, the second number 2, and so forth. + # + # @example + # str-slice("abcd", 2, 3) => "bc" + # str-slice("abcd", 2) => "bcd" + # str-slice("abcd", -3, -2) => "bc" + # str-slice("abcd", 2, -2) => "bc" + # + # @overload str_slice($string, $start-at, $end-at: -1) + # @param $start-at [Sass::Script::Value::Number] The index of the first + # character of the substring. If this is negative, it counts from the end + # of `$string` + # @param $end-at [Sass::Script::Value::Number] The index of the last + # character of the substring. If this is negative, it counts from the end + # of `$string`. Defaults to -1 + # @return [Sass::Script::Value::String] The substring. This will be quoted + # if and only if `$string` was quoted + # @raise [ArgumentError] if any parameter is the wrong type + def str_slice(string, start_at, end_at = nil) + assert_type string, :String, :string + assert_unit start_at, nil, "start-at" + + end_at = number(-1) if end_at.nil? + assert_unit end_at, nil, "end-at" + + return Sass::Script::Value::String.new("", string.type) if end_at.value == 0 + s = start_at.value > 0 ? start_at.value - 1 : start_at.value + e = end_at.value > 0 ? end_at.value - 1 : end_at.value + s = string.value.length + s if s < 0 + s = 0 if s < 0 + e = string.value.length + e if e < 0 + return Sass::Script::Value::String.new("", string.type) if e < 0 + extracted = string.value.slice(s..e) + Sass::Script::Value::String.new(extracted || "", string.type) + end + declare :str_slice, [:string, :start_at] + declare :str_slice, [:string, :start_at, :end_at] + + # Converts a string to upper case. + # + # @example + # to-upper-case(abcd) => ABCD + # + # @overload to_upper_case($string) + # @param $string [Sass::Script::Value::String] + # @return [Sass::Script::Value::String] + # @raise [ArgumentError] if `$string` isn't a string + def to_upper_case(string) + assert_type string, :String, :string + Sass::Script::Value::String.new(Sass::Util.upcase(string.value), string.type) + end + declare :to_upper_case, [:string] + + # Convert a string to lower case, + # + # @example + # to-lower-case(ABCD) => abcd + # + # @overload to_lower_case($string) + # @param $string [Sass::Script::Value::String] + # @return [Sass::Script::Value::String] + # @raise [ArgumentError] if `$string` isn't a string + def to_lower_case(string) + assert_type string, :String, :string + Sass::Script::Value::String.new(Sass::Util.downcase(string.value), string.type) + end + declare :to_lower_case, [:string] + + # Returns the type of a value. + # + # @example + # type-of(100px) => number + # type-of(asdf) => string + # type-of("asdf") => string + # type-of(true) => bool + # type-of(#fff) => color + # type-of(blue) => color + # type-of(null) => null + # type-of(a b c) => list + # type-of((a: 1, b: 2)) => map + # type-of(get-function("foo")) => function + # + # @overload type_of($value) + # @param $value [Sass::Script::Value::Base] The value to inspect + # @return [Sass::Script::Value::String] The unquoted string name of the + # value's type + def type_of(value) + value.check_deprecated_interp if value.is_a?(Sass::Script::Value::String) + identifier(value.class.name.gsub(/Sass::Script::Value::/, '').downcase) + end + declare :type_of, [:value] + + # Returns whether a feature exists in the current Sass runtime. + # + # The following features are supported: + # + # * `global-variable-shadowing` indicates that a local variable will shadow + # a global variable unless `!global` is used. + # + # * `extend-selector-pseudoclass` indicates that `@extend` will reach into + # selector pseudoclasses like `:not`. + # + # * `units-level-3` indicates full support for unit arithmetic using units + # defined in the [Values and Units Level 3][] spec. + # + # [Values and Units Level 3]: http://www.w3.org/TR/css3-values/ + # + # * `at-error` indicates that the Sass `@error` directive is supported. + # + # * `custom-property` indicates that the [Custom Properties Level 1][] spec + # is supported. This means that custom properties are parsed statically, + # with only interpolation treated as SassScript. + # + # [Custom Properties Level 1]: https://www.w3.org/TR/css-variables-1/ + # + # @example + # feature-exists(some-feature-that-exists) => true + # feature-exists(what-is-this-i-dont-know) => false + # + # @overload feature_exists($feature) + # @param $feature [Sass::Script::Value::String] The name of the feature + # @return [Sass::Script::Value::Bool] Whether the feature is supported in this version of Sass + # @raise [ArgumentError] if `$feature` isn't a string + def feature_exists(feature) + assert_type feature, :String, :feature + bool(Sass.has_feature?(feature.value)) + end + declare :feature_exists, [:feature] + + # Returns a reference to a function for later invocation with the `call()` function. + # + # If `$css` is `false`, the function reference may refer to a function + # defined in your stylesheet or built-in to the host environment. If it's + # `true` it will refer to a plain-CSS function. + # + # @example + # get-function("rgb") + # + # @function myfunc { @return "something"; } + # get-function("myfunc") + # + # @overload get_function($name, $css: false) + # @param name [Sass::Script::Value::String] The name of the function being referenced. + # @param css [Sass::Script::Value::Bool] Whether to get a plain CSS function. + # + # @return [Sass::Script::Value::Function] A function reference. + def get_function(name, kwargs = {}) + assert_type name, :String, :name + + css = if kwargs.has_key?("css") + v = kwargs.delete("css") + assert_type v, :Bool, :css + v.value + else + false + end + + if kwargs.any? + raise ArgumentError.new("Illegal keyword argument '#{kwargs.keys.first}'") + end + + if css + return Sass::Script::Value::Function.new( + Sass::Callable.new(name.value, nil, nil, nil, nil, nil, "function", :css)) + end + + callable = environment.caller.function(name.value) || + (Sass::Script::Functions.callable?(name.value.tr("-", "_")) && + Sass::Callable.new(name.value, nil, nil, nil, nil, nil, "function", :builtin)) + + if callable + Sass::Script::Value::Function.new(callable) + else + raise Sass::SyntaxError.new("Function not found: #{name}") + end + end + declare :get_function, [:name], :var_kwargs => true + + # Returns the unit(s) associated with a number. Complex units are sorted in + # alphabetical order by numerator and denominator. + # + # @example + # unit(100) => "" + # unit(100px) => "px" + # unit(3em) => "em" + # unit(10px * 5em) => "em*px" + # unit(10px * 5em / 30cm / 1rem) => "em*px/cm*rem" + # @overload unit($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::String] The unit(s) of the number, as a + # quoted string + # @raise [ArgumentError] if `$number` isn't a number + def unit(number) + assert_type number, :Number, :number + quoted_string(number.unit_str) + end + declare :unit, [:number] + + # Returns whether a number has units. + # + # @example + # unitless(100) => true + # unitless(100px) => false + # @overload unitless($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Bool] + # @raise [ArgumentError] if `$number` isn't a number + def unitless(number) + assert_type number, :Number, :number + bool(number.unitless?) + end + declare :unitless, [:number] + + # Returns whether two numbers can added, subtracted, or compared. + # + # @example + # comparable(2px, 1px) => true + # comparable(100px, 3em) => false + # comparable(10cm, 3mm) => true + # @overload comparable($number1, $number2) + # @param $number1 [Sass::Script::Value::Number] + # @param $number2 [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Bool] + # @raise [ArgumentError] if either parameter is the wrong type + def comparable(number1, number2) + assert_type number1, :Number, :number1 + assert_type number2, :Number, :number2 + bool(number1.comparable_to?(number2)) + end + declare :comparable, [:number1, :number2] + + # Converts a unitless number to a percentage. + # + # @example + # percentage(0.2) => 20% + # percentage(100px / 50px) => 200% + # @overload percentage($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$number` isn't a unitless number + def percentage(number) + unless number.is_a?(Sass::Script::Value::Number) && number.unitless? + raise ArgumentError.new("$number: #{number.inspect} is not a unitless number") + end + number(number.value * 100, '%') + end + declare :percentage, [:number] + + # Rounds a number to the nearest whole number. + # + # @example + # round(10.4px) => 10px + # round(10.6px) => 11px + # @overload round($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$number` isn't a number + def round(number) + numeric_transformation(number) {|n| Sass::Util.round(n)} + end + declare :round, [:number] + + # Rounds a number up to the next whole number. + # + # @example + # ceil(10.4px) => 11px + # ceil(10.6px) => 11px + # @overload ceil($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$number` isn't a number + def ceil(number) + numeric_transformation(number) {|n| n.ceil} + end + declare :ceil, [:number] + + # Rounds a number down to the previous whole number. + # + # @example + # floor(10.4px) => 10px + # floor(10.6px) => 10px + # @overload floor($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$number` isn't a number + def floor(number) + numeric_transformation(number) {|n| n.floor} + end + declare :floor, [:number] + + # Returns the absolute value of a number. + # + # @example + # abs(10px) => 10px + # abs(-10px) => 10px + # @overload abs($number) + # @param $number [Sass::Script::Value::Number] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if `$number` isn't a number + def abs(number) + numeric_transformation(number) {|n| n.abs} + end + declare :abs, [:number] + + # Finds the minimum of several numbers. This function takes any number of + # arguments. + # + # @example + # min(1px, 4px) => 1px + # min(5em, 3em, 4em) => 3em + # @overload min($numbers...) + # @param $numbers [[Sass::Script::Value::Number]] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if any argument isn't a number, or if not all of + # the arguments have comparable units + def min(*numbers) + numbers.each {|n| assert_type n, :Number} + numbers.inject {|min, num| min.lt(num).to_bool ? min : num} + end + declare :min, [], :var_args => :true + + # Finds the maximum of several numbers. This function takes any number of + # arguments. + # + # @example + # max(1px, 4px) => 4px + # max(5em, 3em, 4em) => 5em + # @overload max($numbers...) + # @param $numbers [[Sass::Script::Value::Number]] + # @return [Sass::Script::Value::Number] + # @raise [ArgumentError] if any argument isn't a number, or if not all of + # the arguments have comparable units + def max(*values) + values.each {|v| assert_type v, :Number} + values.inject {|max, val| max.gt(val).to_bool ? max : val} + end + declare :max, [], :var_args => :true + + # Return the length of a list. + # + # This can return the number of pairs in a map as well. + # + # @example + # length(10px) => 1 + # length(10px 20px 30px) => 3 + # length((width: 10px, height: 20px)) => 2 + # @overload length($list) + # @param $list [Sass::Script::Value::Base] + # @return [Sass::Script::Value::Number] + def length(list) + number(list.to_a.size) + end + declare :length, [:list] + + # Return a new list, based on the list provided, but with the nth + # element changed to the value given. + # + # Note that unlike some languages, the first item in a Sass list is number + # 1, the second number 2, and so forth. + # + # Negative index values address elements in reverse order, starting with the last element + # in the list. + # + # @example + # set-nth($list: 10px 20px 30px, $n: 2, $value: -20px) => 10px -20px 30px + # @overload set-nth($list, $n, $value) + # @param $list [Sass::Script::Value::Base] The list that will be copied, having the element + # at index `$n` changed. + # @param $n [Sass::Script::Value::Number] The index of the item to set. + # Negative indices count from the end of the list. + # @param $value [Sass::Script::Value::Base] The new value at index `$n`. + # @return [Sass::Script::Value::List] + # @raise [ArgumentError] if `$n` isn't an integer between 1 and the length + # of `$list` + def set_nth(list, n, value) + assert_type n, :Number, :n + Sass::Script::Value::List.assert_valid_index(list, n) + index = n.to_i > 0 ? n.to_i - 1 : n.to_i + new_list = list.to_a.dup + new_list[index] = value + list.with_contents(new_list) + end + declare :set_nth, [:list, :n, :value] + + # Gets the nth item in a list. + # + # Note that unlike some languages, the first item in a Sass list is number + # 1, the second number 2, and so forth. + # + # This can return the nth pair in a map as well. + # + # Negative index values address elements in reverse order, starting with the last element in + # the list. + # + # @example + # nth(10px 20px 30px, 1) => 10px + # nth((Helvetica, Arial, sans-serif), 3) => sans-serif + # nth((width: 10px, length: 20px), 2) => length, 20px + # @overload nth($list, $n) + # @param $list [Sass::Script::Value::Base] + # @param $n [Sass::Script::Value::Number] The index of the item to get. + # Negative indices count from the end of the list. + # @return [Sass::Script::Value::Base] + # @raise [ArgumentError] if `$n` isn't an integer between 1 and the length + # of `$list` + def nth(list, n) + assert_type n, :Number, :n + Sass::Script::Value::List.assert_valid_index(list, n) + + index = n.to_i > 0 ? n.to_i - 1 : n.to_i + list.to_a[index] + end + declare :nth, [:list, :n] + + # Joins together two lists into one. + # + # Unless `$separator` is passed, if one list is comma-separated and one is + # space-separated, the first parameter's separator is used for the resulting + # list. If both lists have fewer than two items, spaces are used for the + # resulting list. + # + # Unless `$bracketed` is passed, the resulting list is bracketed if the + # first parameter is. + # + # Like all list functions, `join()` returns a new list rather than modifying + # its arguments in place. + # + # @example + # join(10px 20px, 30px 40px) => 10px 20px 30px 40px + # join((blue, red), (#abc, #def)) => blue, red, #abc, #def + # join(10px, 20px) => 10px 20px + # join(10px, 20px, comma) => 10px, 20px + # join((blue, red), (#abc, #def), space) => blue red #abc #def + # join([10px], 20px) => [10px 20px] + # @overload join($list1, $list2, $separator: auto, $bracketed: auto) + # @param $list1 [Sass::Script::Value::Base] + # @param $list2 [Sass::Script::Value::Base] + # @param $separator [Sass::Script::Value::String] The list separator to use. + # If this is `comma` or `space`, that separator will be used. If this is + # `auto` (the default), the separator is determined as explained above. + # @param $bracketed [Sass::Script::Value::Base] Whether the resulting list + # will be bracketed. If this is `auto` (the default), the separator is + # determined as explained above. + # @return [Sass::Script::Value::List] + def join(list1, list2, + separator = identifier("auto"), bracketed = identifier("auto"), + kwargs = nil, *rest) + if separator.is_a?(Hash) + kwargs = separator + separator = identifier("auto") + elsif bracketed.is_a?(Hash) + kwargs = bracketed + bracketed = identifier("auto") + elsif rest.last.is_a?(Hash) + rest.unshift kwargs + kwargs = rest.pop + end + + unless rest.empty? + # Add 4 to rest.length because we don't want to count the kwargs hash, + # which is always passed. + raise ArgumentError.new("wrong number of arguments (#{rest.length + 4} for 2..4)") + end + + if kwargs + separator = kwargs.delete("separator") || separator + bracketed = kwargs.delete("bracketed") || bracketed + + unless kwargs.empty? + name, val = kwargs.to_a.first + raise ArgumentError.new("Unknown argument $#{name} (#{val})") + end + end + + assert_type separator, :String, :separator + unless %w(auto space comma).include?(separator.value) + raise ArgumentError.new("Separator name must be space, comma, or auto") + end + + list(list1.to_a + list2.to_a, + separator: + if separator.value == 'auto' + list1.separator || list2.separator || :space + else + separator.value.to_sym + end, + bracketed: + if bracketed.is_a?(Sass::Script::Value::String) && bracketed.value == 'auto' + list1.bracketed + else + bracketed.to_bool + end) + end + # We don't actually take variable arguments or keyword arguments, but this + # is the best way to take either `$separator` or `$bracketed` as keywords + # without complaining about the other missing. + declare :join, [:list1, :list2], :var_args => true, :var_kwargs => true + + # Appends a single value onto the end of a list. + # + # Unless the `$separator` argument is passed, if the list had only one item, + # the resulting list will be space-separated. + # + # Like all list functions, `append()` returns a new list rather than + # modifying its argument in place. + # + # @example + # append(10px 20px, 30px) => 10px 20px 30px + # append((blue, red), green) => blue, red, green + # append(10px 20px, 30px 40px) => 10px 20px (30px 40px) + # append(10px, 20px, comma) => 10px, 20px + # append((blue, red), green, space) => blue red green + # @overload append($list, $val, $separator: auto) + # @param $list [Sass::Script::Value::Base] + # @param $val [Sass::Script::Value::Base] + # @param $separator [Sass::Script::Value::String] The list separator to use. + # If this is `comma` or `space`, that separator will be used. If this is + # `auto` (the default), the separator is determined as explained above. + # @return [Sass::Script::Value::List] + def append(list, val, separator = identifier("auto")) + assert_type separator, :String, :separator + unless %w(auto space comma).include?(separator.value) + raise ArgumentError.new("Separator name must be space, comma, or auto") + end + list.with_contents(list.to_a + [val], + separator: + if separator.value == 'auto' + list.separator || :space + else + separator.value.to_sym + end) + end + declare :append, [:list, :val] + declare :append, [:list, :val, :separator] + + # Combines several lists into a single multidimensional list. The nth value + # of the resulting list is a space separated list of the source lists' nth + # values. + # + # The length of the resulting list is the length of the + # shortest list. + # + # @example + # zip(1px 1px 3px, solid dashed solid, red green blue) + # => 1px solid red, 1px dashed green, 3px solid blue + # @overload zip($lists...) + # @param $lists [[Sass::Script::Value::Base]] + # @return [Sass::Script::Value::List] + def zip(*lists) + length = nil + values = [] + lists.each do |list| + array = list.to_a + values << array.dup + length = length.nil? ? array.length : [length, array.length].min + end + values.each do |value| + value.slice!(length) + end + new_list_value = values.first.zip(*values[1..-1]) + list(new_list_value.map {|list| list(list, :space)}, :comma) + end + declare :zip, [], :var_args => true + + # Returns the position of a value within a list. If the value isn't found, + # returns `null` instead. + # + # Note that unlike some languages, the first item in a Sass list is number + # 1, the second number 2, and so forth. + # + # This can return the position of a pair in a map as well. + # + # @example + # index(1px solid red, solid) => 2 + # index(1px solid red, dashed) => null + # index((width: 10px, height: 20px), (height 20px)) => 2 + # @overload index($list, $value) + # @param $list [Sass::Script::Value::Base] + # @param $value [Sass::Script::Value::Base] + # @return [Sass::Script::Value::Number, Sass::Script::Value::Null] The + # 1-based index of `$value` in `$list`, or `null` + def index(list, value) + index = list.to_a.index {|e| e.eq(value).to_bool} + index ? number(index + 1) : null + end + declare :index, [:list, :value] + + # Returns the separator of a list. If the list doesn't have a separator due + # to having fewer than two elements, returns `space`. + # + # @example + # list-separator(1px 2px 3px) => space + # list-separator(1px, 2px, 3px) => comma + # list-separator('foo') => space + # @overload list_separator($list) + # @param $list [Sass::Script::Value::Base] + # @return [Sass::Script::Value::String] `comma` or `space` + def list_separator(list) + identifier((list.separator || :space).to_s) + end + declare :list_separator, [:list] + + # Returns whether a list uses square brackets. + # + # @example + # is-bracketed(1px 2px 3px) => false + # is-bracketed([1px, 2px, 3px]) => true + # @overload is_bracketed($list) + # @param $list [Sass::Script::Value::Base] + # @return [Sass::Script::Value::Bool] + def is_bracketed(list) + bool(list.bracketed) + end + declare :is_bracketed, [:list] + + # Returns the value in a map associated with the given key. If the map + # doesn't have such a key, returns `null`. + # + # @example + # map-get(("foo": 1, "bar": 2), "foo") => 1 + # map-get(("foo": 1, "bar": 2), "bar") => 2 + # map-get(("foo": 1, "bar": 2), "baz") => null + # @overload map_get($map, $key) + # @param $map [Sass::Script::Value::Map] + # @param $key [Sass::Script::Value::Base] + # @return [Sass::Script::Value::Base] The value indexed by `$key`, or `null` + # if the map doesn't contain the given key + # @raise [ArgumentError] if `$map` is not a map + def map_get(map, key) + assert_type map, :Map, :map + map.to_h[key] || null + end + declare :map_get, [:map, :key] + + # Merges two maps together into a new map. Keys in `$map2` will take + # precedence over keys in `$map1`. + # + # This is the best way to add new values to a map. + # + # All keys in the returned map that also appear in `$map1` will have the + # same order as in `$map1`. New keys from `$map2` will be placed at the end + # of the map. + # + # Like all map functions, `map-merge()` returns a new map rather than + # modifying its arguments in place. + # + # @example + # map-merge(("foo": 1), ("bar": 2)) => ("foo": 1, "bar": 2) + # map-merge(("foo": 1, "bar": 2), ("bar": 3)) => ("foo": 1, "bar": 3) + # @overload map_merge($map1, $map2) + # @param $map1 [Sass::Script::Value::Map] + # @param $map2 [Sass::Script::Value::Map] + # @return [Sass::Script::Value::Map] + # @raise [ArgumentError] if either parameter is not a map + def map_merge(map1, map2) + assert_type map1, :Map, :map1 + assert_type map2, :Map, :map2 + map(map1.to_h.merge(map2.to_h)) + end + declare :map_merge, [:map1, :map2] + + # Returns a new map with keys removed. + # + # Like all map functions, `map-merge()` returns a new map rather than + # modifying its arguments in place. + # + # @example + # map-remove(("foo": 1, "bar": 2), "bar") => ("foo": 1) + # map-remove(("foo": 1, "bar": 2, "baz": 3), "bar", "baz") => ("foo": 1) + # map-remove(("foo": 1, "bar": 2), "baz") => ("foo": 1, "bar": 2) + # @overload map_remove($map, $keys...) + # @param $map [Sass::Script::Value::Map] + # @param $keys [[Sass::Script::Value::Base]] + # @return [Sass::Script::Value::Map] + # @raise [ArgumentError] if `$map` is not a map + def map_remove(map, *keys) + assert_type map, :Map, :map + hash = map.to_h.dup + hash.delete_if {|key, _| keys.include?(key)} + map(hash) + end + declare :map_remove, [:map, :key], :var_args => true + + # Returns a list of all keys in a map. + # + # @example + # map-keys(("foo": 1, "bar": 2)) => "foo", "bar" + # @overload map_keys($map) + # @param $map [Map] + # @return [List] the list of keys, comma-separated + # @raise [ArgumentError] if `$map` is not a map + def map_keys(map) + assert_type map, :Map, :map + list(map.to_h.keys, :comma) + end + declare :map_keys, [:map] + + # Returns a list of all values in a map. This list may include duplicate + # values, if multiple keys have the same value. + # + # @example + # map-values(("foo": 1, "bar": 2)) => 1, 2 + # map-values(("foo": 1, "bar": 2, "baz": 1)) => 1, 2, 1 + # @overload map_values($map) + # @param $map [Map] + # @return [List] the list of values, comma-separated + # @raise [ArgumentError] if `$map` is not a map + def map_values(map) + assert_type map, :Map, :map + list(map.to_h.values, :comma) + end + declare :map_values, [:map] + + # Returns whether a map has a value associated with a given key. + # + # @example + # map-has-key(("foo": 1, "bar": 2), "foo") => true + # map-has-key(("foo": 1, "bar": 2), "baz") => false + # @overload map_has_key($map, $key) + # @param $map [Sass::Script::Value::Map] + # @param $key [Sass::Script::Value::Base] + # @return [Sass::Script::Value::Bool] + # @raise [ArgumentError] if `$map` is not a map + def map_has_key(map, key) + assert_type map, :Map, :map + bool(map.to_h.has_key?(key)) + end + declare :map_has_key, [:map, :key] + + # Returns the map of named arguments passed to a function or mixin that + # takes a variable argument list. The argument names are strings, and they + # do not contain the leading `$`. + # + # @example + # @mixin foo($args...) { + # @debug keywords($args); //=> (arg1: val, arg2: val) + # } + # + # @include foo($arg1: val, $arg2: val); + # @overload keywords($args) + # @param $args [Sass::Script::Value::ArgList] + # @return [Sass::Script::Value::Map] + # @raise [ArgumentError] if `$args` isn't a variable argument list + def keywords(args) + assert_type args, :ArgList, :args + map(Sass::Util.map_keys(args.keywords.as_stored) {|k| Sass::Script::Value::String.new(k)}) + end + declare :keywords, [:args] + + # Returns one of two values, depending on whether or not `$condition` is + # true. Just like in `@if`, all values other than `false` and `null` are + # considered to be true. + # + # @example + # if(true, 1px, 2px) => 1px + # if(false, 1px, 2px) => 2px + # @overload if($condition, $if-true, $if-false) + # @param $condition [Sass::Script::Value::Base] Whether the `$if-true` or + # `$if-false` will be returned + # @param $if-true [Sass::Script::Tree::Node] + # @param $if-false [Sass::Script::Tree::Node] + # @return [Sass::Script::Value::Base] `$if-true` or `$if-false` + def if(condition, if_true, if_false) + if condition.to_bool + perform(if_true) + else + perform(if_false) + end + end + declare :if, [:condition, :"&if_true", :"&if_false"] + + # Returns a unique CSS identifier. The identifier is returned as an unquoted + # string. The identifier returned is only guaranteed to be unique within the + # scope of a single Sass run. + # + # @overload unique_id() + # @return [Sass::Script::Value::String] + def unique_id + generator = Sass::Script::Functions.random_number_generator + Thread.current[:sass_last_unique_id] ||= generator.rand(36**8) + # avoid the temptation of trying to guess the next unique value. + value = (Thread.current[:sass_last_unique_id] += (generator.rand(10) + 1)) + # the u makes this a legal identifier if it would otherwise start with a number. + identifier("u" + value.to_s(36).rjust(8, '0')) + end + declare :unique_id, [] + + # Dynamically calls a function. This can call user-defined + # functions, built-in functions, or plain CSS functions. It will + # pass along all arguments, including keyword arguments, to the + # called function. + # + # @example + # call(rgb, 10, 100, 255) => #0a64ff + # call(scale-color, #0a64ff, $lightness: -10%) => #0058ef + # + # $fn: nth; + # call($fn, (a b c), 2) => b + # + # @overload call($function, $args...) + # @param $function [Sass::Script::Value::Function] The function to call. + def call(name, *args) + unless name.is_a?(Sass::Script::Value::String) || + name.is_a?(Sass::Script::Value::Function) + assert_type name, :Function, :function + end + if name.is_a?(Sass::Script::Value::String) + name = if function_exists(name).to_bool + get_function(name) + else + get_function(name, "css" => bool(true)) + end + Sass::Util.sass_warn(< true, :var_kwargs => true + + # This function only exists as a workaround for IE7's [`content: + # counter` bug](http://jes.st/2013/ie7s-css-breaking-content-counter-bug/). + # It works identically to any other plain-CSS function, except it + # avoids adding spaces between the argument commas. + # + # @example + # counter(item, ".") => counter(item,".") + # @overload counter($args...) + # @return [Sass::Script::Value::String] + def counter(*args) + identifier("counter(#{args.map {|a| a.to_s(options)}.join(',')})") + end + declare :counter, [], :var_args => true + + # This function only exists as a workaround for IE7's [`content: + # counter` bug](http://jes.st/2013/ie7s-css-breaking-content-counter-bug/). + # It works identically to any other plain-CSS function, except it + # avoids adding spaces between the argument commas. + # + # @example + # counters(item, ".") => counters(item,".") + # @overload counters($args...) + # @return [Sass::Script::Value::String] + def counters(*args) + identifier("counters(#{args.map {|a| a.to_s(options)}.join(',')})") + end + declare :counters, [], :var_args => true + + # Check whether a variable with the given name exists in the current + # scope or in the global scope. + # + # @example + # $a-false-value: false; + # variable-exists(a-false-value) => true + # variable-exists(a-null-value) => true + # + # variable-exists(nonexistent) => false + # + # @overload variable_exists($name) + # @param $name [Sass::Script::Value::String] The name of the variable to + # check. The name should not include the `$`. + # @return [Sass::Script::Value::Bool] Whether the variable is defined in + # the current scope. + def variable_exists(name) + assert_type name, :String, :name + bool(environment.caller.var(name.value)) + end + declare :variable_exists, [:name] + + # Check whether a variable with the given name exists in the global + # scope (at the top level of the file). + # + # @example + # $a-false-value: false; + # global-variable-exists(a-false-value) => true + # global-variable-exists(a-null-value) => true + # + # .foo { + # $some-var: false; + # @if global-variable-exists(some-var) { /* false, doesn't run */ } + # } + # + # @overload global_variable_exists($name) + # @param $name [Sass::Script::Value::String] The name of the variable to + # check. The name should not include the `$`. + # @return [Sass::Script::Value::Bool] Whether the variable is defined in + # the global scope. + def global_variable_exists(name) + assert_type name, :String, :name + bool(environment.global_env.var(name.value)) + end + declare :global_variable_exists, [:name] + + # Check whether a function with the given name exists. + # + # @example + # function-exists(lighten) => true + # + # @function myfunc { @return "something"; } + # function-exists(myfunc) => true + # + # @overload function_exists($name) + # @param name [Sass::Script::Value::String] The name of the function to + # check or a function reference. + # @return [Sass::Script::Value::Bool] Whether the function is defined. + def function_exists(name) + assert_type name, :String, :name + exists = Sass::Script::Functions.callable?(name.value.tr("-", "_")) + exists ||= environment.caller.function(name.value) + bool(exists) + end + declare :function_exists, [:name] + + # Check whether a mixin with the given name exists. + # + # @example + # mixin-exists(nonexistent) => false + # + # @mixin red-text { color: red; } + # mixin-exists(red-text) => true + # + # @overload mixin_exists($name) + # @param name [Sass::Script::Value::String] The name of the mixin to + # check. + # @return [Sass::Script::Value::Bool] Whether the mixin is defined. + def mixin_exists(name) + assert_type name, :String, :name + bool(environment.mixin(name.value)) + end + declare :mixin_exists, [:name] + + # Check whether a mixin was passed a content block. + # + # Unless `content-exists()` is called directly from a mixin, an error will be raised. + # + # @example + # @mixin needs-content { + # @if not content-exists() { + # @error "You must pass a content block!" + # } + # @content; + # } + # + # @overload content_exists() + # @return [Sass::Script::Value::Bool] Whether a content block was passed to the mixin. + def content_exists + # frames.last is the stack frame for this function, + # so we use frames[-2] to get the frame before that. + mixin_frame = environment.stack.frames[-2] + unless mixin_frame && mixin_frame.type == :mixin + raise Sass::SyntaxError.new("Cannot call content-exists() except within a mixin.") + end + bool(!environment.caller.content.nil?) + end + declare :content_exists, [] + + # Return a string containing the value as its Sass representation. + # + # @overload inspect($value) + # @param $value [Sass::Script::Value::Base] The value to inspect. + # @return [Sass::Script::Value::String] A representation of the value as + # it would be written in Sass. + def inspect(value) + value.check_deprecated_interp if value.is_a?(Sass::Script::Value::String) + unquoted_string(value.to_sass) + end + declare :inspect, [:value] + + # @overload random() + # Return a decimal between 0 and 1, inclusive of 0 but not 1. + # @return [Sass::Script::Value::Number] A decimal value. + # @overload random($limit) + # Return an integer between 1 and `$limit`, inclusive of both 1 and `$limit`. + # @param $limit [Sass::Script::Value::Number] The maximum of the random integer to be + # returned, a positive integer. + # @return [Sass::Script::Value::Number] An integer. + # @raise [ArgumentError] if the `$limit` is not 1 or greater + def random(limit = nil) + generator = Sass::Script::Functions.random_number_generator + if limit + assert_integer limit, "limit" + if limit.to_i < 1 + raise ArgumentError.new("$limit #{limit} must be greater than or equal to 1") + end + number(1 + generator.rand(limit.to_i)) + else + number(generator.rand) + end + end + declare :random, [] + declare :random, [:limit] + + # Parses a user-provided selector into a list of lists of strings + # as returned by `&`. + # + # @example + # selector-parse(".foo .bar, .baz .bang") => ('.foo' '.bar', '.baz' '.bang') + # + # @overload selector_parse($selector) + # @param $selector [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector to parse. This can be either a string, a list of + # strings, or a list of lists of strings as returned by `&`. + # @return [Sass::Script::Value::List] + # A list of lists of strings representing `$selector`. This is + # in the same format as a selector returned by `&`. + def selector_parse(selector) + parse_selector(selector, :selector).to_sass_script + end + declare :selector_parse, [:selector] + + # Return a new selector with all selectors in `$selectors` nested beneath + # one another as though they had been nested in the stylesheet as + # `$selector1 { $selector2 { ... } }`. + # + # Unlike most selector functions, `selector-nest` allows the + # parent selector `&` to be used in any selector but the first. + # + # @example + # selector-nest(".foo", ".bar", ".baz") => .foo .bar .baz + # selector-nest(".a .foo", ".b .bar") => .a .foo .b .bar + # selector-nest(".foo", "&.bar") => .foo.bar + # + # @overload selector_nest($selectors...) + # @param $selectors [[Sass::Script::Value::String, Sass::Script::Value::List]] + # The selectors to nest. At least one selector must be passed. Each of + # these can be either a string, a list of strings, or a list of lists of + # strings as returned by `&`. + # @return [Sass::Script::Value::List] + # A list of lists of strings representing the result of nesting + # `$selectors`. This is in the same format as a selector returned by + # `&`. + def selector_nest(*selectors) + if selectors.empty? + raise ArgumentError.new("$selectors: At least one selector must be passed") + end + + parsed = [parse_selector(selectors.first, :selectors)] + parsed += selectors[1..-1].map {|sel| parse_selector(sel, :selectors, true)} + parsed.inject {|result, child| child.resolve_parent_refs(result)}.to_sass_script + end + declare :selector_nest, [], :var_args => true + + # Return a new selector with all selectors in `$selectors` appended one + # another as though they had been nested in the stylesheet as `$selector1 { + # &$selector2 { ... } }`. + # + # @example + # selector-append(".foo", ".bar", ".baz") => .foo.bar.baz + # selector-append(".a .foo", ".b .bar") => "a .foo.b .bar" + # selector-append(".foo", "-suffix") => ".foo-suffix" + # + # @overload selector_append($selectors...) + # @param $selectors [[Sass::Script::Value::String, Sass::Script::Value::List]] + # The selectors to append. At least one selector must be passed. Each of + # these can be either a string, a list of strings, or a list of lists of + # strings as returned by `&`. + # @return [Sass::Script::Value::List] + # A list of lists of strings representing the result of appending + # `$selectors`. This is in the same format as a selector returned by + # `&`. + # @raise [ArgumentError] if a selector could not be appended. + def selector_append(*selectors) + if selectors.empty? + raise ArgumentError.new("$selectors: At least one selector must be passed") + end + + selectors.map {|sel| parse_selector(sel, :selectors)}.inject do |parent, child| + child.members.each do |seq| + sseq = seq.members.first + unless sseq.is_a?(Sass::Selector::SimpleSequence) + raise ArgumentError.new("Can't append \"#{seq}\" to \"#{parent}\"") + end + + base = sseq.base + case base + when Sass::Selector::Universal + raise ArgumentError.new("Can't append \"#{seq}\" to \"#{parent}\"") + when Sass::Selector::Element + unless base.namespace.nil? + raise ArgumentError.new("Can't append \"#{seq}\" to \"#{parent}\"") + end + sseq.members[0] = Sass::Selector::Parent.new(base.name) + else + sseq.members.unshift Sass::Selector::Parent.new + end + end + child.resolve_parent_refs(parent) + end.to_sass_script + end + declare :selector_append, [], :var_args => true + + # Returns a new version of `$selector` with `$extendee` extended + # with `$extender`. This works just like the result of + # + # $selector { ... } + # $extender { @extend $extendee } + # + # @example + # selector-extend(".a .b", ".b", ".foo .bar") => .a .b, .a .foo .bar, .foo .a .bar + # + # @overload selector_extend($selector, $extendee, $extender) + # @param $selector [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector within which `$extendee` is extended with + # `$extender`. This can be either a string, a list of strings, + # or a list of lists of strings as returned by `&`. + # @param $extendee [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector being extended. This can be either a string, a + # list of strings, or a list of lists of strings as returned + # by `&`. + # @param $extender [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector being injected into `$selector`. This can be + # either a string, a list of strings, or a list of lists of + # strings as returned by `&`. + # @return [Sass::Script::Value::List] + # A list of lists of strings representing the result of the + # extension. This is in the same format as a selector returned + # by `&`. + # @raise [ArgumentError] if the extension fails + def selector_extend(selector, extendee, extender) + selector = parse_selector(selector, :selector) + extendee = parse_selector(extendee, :extendee) + extender = parse_selector(extender, :extender) + + extends = Sass::Util::SubsetMap.new + begin + extender.populate_extends(extends, extendee, nil, [], true) + selector.do_extend(extends).to_sass_script + rescue Sass::SyntaxError => e + raise ArgumentError.new(e.to_s) + end + end + declare :selector_extend, [:selector, :extendee, :extender] + + # Replaces all instances of `$original` with `$replacement` in `$selector` + # + # This works by using `@extend` and throwing away the original + # selector. This means that it can be used to do very advanced + # replacements; see the examples below. + # + # @example + # selector-replace(".foo .bar", ".bar", ".baz") => ".foo .baz" + # selector-replace(".foo.bar.baz", ".foo.baz", ".qux") => ".bar.qux" + # + # @overload selector_replace($selector, $original, $replacement) + # @param $selector [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector within which `$original` is replaced with + # `$replacement`. This can be either a string, a list of + # strings, or a list of lists of strings as returned by `&`. + # @param $original [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector being replaced. This can be either a string, a + # list of strings, or a list of lists of strings as returned + # by `&`. + # @param $replacement [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector that `$original` is being replaced with. This + # can be either a string, a list of strings, or a list of + # lists of strings as returned by `&`. + # @return [Sass::Script::Value::List] + # A list of lists of strings representing the result of the + # extension. This is in the same format as a selector returned + # by `&`. + # @raise [ArgumentError] if the replacement fails + def selector_replace(selector, original, replacement) + selector = parse_selector(selector, :selector) + original = parse_selector(original, :original) + replacement = parse_selector(replacement, :replacement) + + extends = Sass::Util::SubsetMap.new + begin + replacement.populate_extends(extends, original, nil, [], true) + selector.do_extend(extends, [], true).to_sass_script + rescue Sass::SyntaxError => e + raise ArgumentError.new(e.to_s) + end + end + declare :selector_replace, [:selector, :original, :replacement] + + # Unifies two selectors into a single selector that matches only + # elements matched by both input selectors. Returns `null` if + # there is no such selector. + # + # Like the selector unification done for `@extend`, this doesn't + # guarantee that the output selector will match *all* elements + # matched by both input selectors. For example, if `.a .b` is + # unified with `.x .y`, `.a .x .b.y, .x .a .b.y` will be returned, + # but `.a.x .b.y` will not. This avoids exponential output size + # while matching all elements that are likely to exist in + # practice. + # + # @example + # selector-unify(".a", ".b") => .a.b + # selector-unify(".a .b", ".x .y") => .a .x .b.y, .x .a .b.y + # selector-unify(".a.b", ".b.c") => .a.b.c + # selector-unify("#a", "#b") => null + # + # @overload selector_unify($selector1, $selector2) + # @param $selector1 [Sass::Script::Value::String, Sass::Script::Value::List] + # The first selector to be unified. This can be either a + # string, a list of strings, or a list of lists of strings as + # returned by `&`. + # @param $selector2 [Sass::Script::Value::String, Sass::Script::Value::List] + # The second selector to be unified. This can be either a + # string, a list of strings, or a list of lists of strings as + # returned by `&`. + # @return [Sass::Script::Value::List, Sass::Script::Value::Null] + # A list of lists of strings representing the result of the + # unification, or null if no unification exists. This is in + # the same format as a selector returned by `&`. + def selector_unify(selector1, selector2) + selector1 = parse_selector(selector1, :selector1) + selector2 = parse_selector(selector2, :selector2) + return null unless (unified = selector1.unify(selector2)) + unified.to_sass_script + end + declare :selector_unify, [:selector1, :selector2] + + # Returns the [simple + # selectors](http://dev.w3.org/csswg/selectors4/#simple) that + # comprise the compound selector `$selector`. + # + # Note that `$selector` **must be** a [compound + # selector](http://dev.w3.org/csswg/selectors4/#compound). That + # means it cannot contain commas or spaces. It also means that + # unlike other selector functions, this takes only strings, not + # lists. + # + # @example + # simple-selectors(".foo.bar") => ".foo", ".bar" + # simple-selectors(".foo.bar.baz") => ".foo", ".bar", ".baz" + # + # @overload simple_selectors($selector) + # @param $selector [Sass::Script::Value::String] + # The compound selector whose simple selectors will be extracted. + # @return [Sass::Script::Value::List] + # A list of simple selectors in the compound selector. + def simple_selectors(selector) + selector = parse_compound_selector(selector, :selector) + list(selector.members.map {|simple| unquoted_string(simple.to_s)}, :comma) + end + declare :simple_selectors, [:selector] + + # Returns whether `$super` is a superselector of `$sub`. This means that + # `$super` matches all the elements that `$sub` matches, as well as possibly + # additional elements. In general, simpler selectors tend to be + # superselectors of more complex oned. + # + # @example + # is-superselector(".foo", ".foo.bar") => true + # is-superselector(".foo.bar", ".foo") => false + # is-superselector(".bar", ".foo .bar") => true + # is-superselector(".foo .bar", ".bar") => false + # + # @overload is_superselector($super, $sub) + # @param $super [Sass::Script::Value::String, Sass::Script::Value::List] + # The potential superselector. This can be either a string, a list of + # strings, or a list of lists of strings as returned by `&`. + # @param $sub [Sass::Script::Value::String, Sass::Script::Value::List] + # The potential subselector. This can be either a string, a list of + # strings, or a list of lists of strings as returned by `&`. + # @return [Sass::Script::Value::Bool] + # Whether `$selector1` is a superselector of `$selector2`. + def is_superselector(sup, sub) + sup = parse_selector(sup, :super) + sub = parse_selector(sub, :sub) + bool(sup.superselector?(sub)) + end + declare :is_superselector, [:super, :sub] + + private + + # This method implements the pattern of transforming a numeric value into + # another numeric value with the same units. + # It yields a number to a block to perform the operation and return a number + def numeric_transformation(value) + assert_type value, :Number, :value + Sass::Script::Value::Number.new( + yield(value.value), value.numerator_units, value.denominator_units) + end + + def _adjust(color, amount, attr, range, op, units = "") + assert_type color, :Color, :color + assert_type amount, :Number, :amount + Sass::Util.check_range('Amount', range, amount, units) + + color.with(attr => color.send(attr).send(op, amount.value)) + end + + def percentage_or_unitless(number, max, name) + if number.unitless? + number.value + elsif number.is_unit?("%") + max * number.value / 100.0; + else + raise ArgumentError.new( + "$#{name}: Expected #{number} to have no units or \"%\""); + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/lexer.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/lexer.rb new file mode 100644 index 0000000000..5f02ad9896 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/lexer.rb @@ -0,0 +1,518 @@ +require 'sass/scss/rx' + +module Sass + module Script + # The lexical analyzer for SassScript. + # It takes a raw string and converts it to individual tokens + # that are easier to parse. + class Lexer + include Sass::SCSS::RX + + # A struct containing information about an individual token. + # + # `type`: \[`Symbol`\] + # : The type of token. + # + # `value`: \[`Object`\] + # : The Ruby object corresponding to the value of the token. + # + # `source_range`: \[`Sass::Source::Range`\] + # : The range in the source file in which the token appeared. + # + # `pos`: \[`Integer`\] + # : The scanner position at which the SassScript token appeared. + Token = Struct.new(:type, :value, :source_range, :pos) + + # The line number of the lexer's current position. + # + # @return [Integer] + def line + return @line unless @tok + @tok.source_range.start_pos.line + end + + # The number of bytes into the current line + # of the lexer's current position (1-based). + # + # @return [Integer] + def offset + return @offset unless @tok + @tok.source_range.start_pos.offset + end + + # A hash from operator strings to the corresponding token types. + OPERATORS = { + '+' => :plus, + '-' => :minus, + '*' => :times, + '/' => :div, + '%' => :mod, + '=' => :single_eq, + ':' => :colon, + '(' => :lparen, + ')' => :rparen, + '[' => :lsquare, + ']' => :rsquare, + ',' => :comma, + 'and' => :and, + 'or' => :or, + 'not' => :not, + '==' => :eq, + '!=' => :neq, + '>=' => :gte, + '<=' => :lte, + '>' => :gt, + '<' => :lt, + '#{' => :begin_interpolation, + '}' => :end_interpolation, + ';' => :semicolon, + '{' => :lcurly, + '...' => :splat, + } + + OPERATORS_REVERSE = Sass::Util.map_hash(OPERATORS) {|k, v| [v, k]} + + TOKEN_NAMES = Sass::Util.map_hash(OPERATORS_REVERSE) {|k, v| [k, v.inspect]}.merge( + :const => "variable (e.g. $foo)", + :ident => "identifier (e.g. middle)") + + # A list of operator strings ordered with longer names first + # so that `>` and `<` don't clobber `>=` and `<=`. + OP_NAMES = OPERATORS.keys.sort_by {|o| -o.size} + + # A sub-list of {OP_NAMES} that only includes operators + # with identifier names. + IDENT_OP_NAMES = OP_NAMES.select {|k, _v| k =~ /^\w+/} + + PARSEABLE_NUMBER = /(?:(\d*\.\d+)|(\d+))(?:[eE]([+-]?\d+))?(#{UNIT})?/ + + # A hash of regular expressions that are used for tokenizing. + REGULAR_EXPRESSIONS = { + :whitespace => /\s+/, + :comment => COMMENT, + :single_line_comment => SINGLE_LINE_COMMENT, + :variable => /(\$)(#{IDENT})/, + :ident => /(#{IDENT})(\()?/, + :number => PARSEABLE_NUMBER, + :unary_minus_number => /-#{PARSEABLE_NUMBER}/, + :color => HEXCOLOR, + :id => /##{IDENT}/, + :selector => /&/, + :ident_op => /(#{Regexp.union(*IDENT_OP_NAMES.map do |s| + Regexp.new(Regexp.escape(s) + "(?!#{NMCHAR}|\Z)") + end)})/, + :op => /(#{Regexp.union(*OP_NAMES)})/, + } + + class << self + private + + def string_re(open, close) + /#{open}((?:\\.|\#(?!\{)|[^#{close}\\#])*)(#{close}|#\{)/m + end + end + + # A hash of regular expressions that are used for tokenizing strings. + # + # The key is a `[Symbol, Boolean]` pair. + # The symbol represents which style of quotation to use, + # while the boolean represents whether or not the string + # is following an interpolated segment. + STRING_REGULAR_EXPRESSIONS = { + :double => { + false => string_re('"', '"'), + true => string_re('', '"') + }, + :single => { + false => string_re("'", "'"), + true => string_re('', "'") + }, + :uri => { + false => /url\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + }, + # Defined in https://developer.mozilla.org/en/CSS/@-moz-document as a + # non-standard version of http://www.w3.org/TR/css3-conditional/ + :url_prefix => { + false => /url-prefix\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + }, + :domain => { + false => /domain\(#{W}(#{URLCHAR}*?)(#{W}\)|#\{)/, + true => /(#{URLCHAR}*?)(#{W}\)|#\{)/ + } + } + + # @param str [String, StringScanner] The source text to lex + # @param line [Integer] The 1-based line on which the SassScript appears. + # Used for error reporting and sourcemap building + # @param offset [Integer] The 1-based character (not byte) offset in the line in the source. + # Used for error reporting and sourcemap building + # @param options [{Symbol => Object}] An options hash; + # see {file:SASS_REFERENCE.md#Options the Sass options documentation} + def initialize(str, line, offset, options) + @scanner = str.is_a?(StringScanner) ? str : Sass::Util::MultibyteStringScanner.new(str) + @line = line + @offset = offset + @options = options + @interpolation_stack = [] + @prev = nil + @tok = nil + @next_tok = nil + end + + # Moves the lexer forward one token. + # + # @return [Token] The token that was moved past + def next + @tok ||= read_token + @tok, tok = nil, @tok + @prev = tok + tok + end + + # Returns whether or not there's whitespace before the next token. + # + # @return [Boolean] + def whitespace?(tok = @tok) + if tok + @scanner.string[0...tok.pos] =~ /\s\Z/ + else + @scanner.string[@scanner.pos, 1] =~ /^\s/ || + @scanner.string[@scanner.pos - 1, 1] =~ /\s\Z/ + end + end + + # Returns the given character. + # + # @return [String] + def char(pos = @scanner.pos) + @scanner.string[pos, 1] + end + + # Consumes and returns single raw character from the input stream. + # + # @return [String] + def next_char + unpeek! + scan(/./) + end + + # Returns the next token without moving the lexer forward. + # + # @return [Token] The next token + def peek + @tok ||= read_token + end + + # Rewinds the underlying StringScanner + # to before the token returned by \{#peek}. + def unpeek! + raise "[BUG] Can't unpeek before a queued token!" if @next_tok + return unless @tok + @scanner.pos = @tok.pos + @line = @tok.source_range.start_pos.line + @offset = @tok.source_range.start_pos.offset + end + + # @return [Boolean] Whether or not there's more source text to lex. + def done? + return if @next_tok + whitespace unless after_interpolation? && !@interpolation_stack.empty? + @scanner.eos? && @tok.nil? + end + + # @return [Boolean] Whether or not the last token lexed was `:end_interpolation`. + def after_interpolation? + @prev && @prev.type == :end_interpolation + end + + # Raise an error to the effect that `name` was expected in the input stream + # and wasn't found. + # + # This calls \{#unpeek!} to rewind the scanner to immediately after + # the last returned token. + # + # @param name [String] The name of the entity that was expected but not found + # @raise [Sass::SyntaxError] + def expected!(name) + unpeek! + Sass::SCSS::Parser.expected(@scanner, name, @line) + end + + # Records all non-comment text the lexer consumes within the block + # and returns it as a string. + # + # @yield A block in which text is recorded + # @return [String] + def str + old_pos = @tok ? @tok.pos : @scanner.pos + yield + new_pos = @tok ? @tok.pos : @scanner.pos + @scanner.string[old_pos...new_pos] + end + + # Runs a block, and rewinds the state of the lexer to the beginning of the + # block if it returns `nil` or `false`. + def try + old_pos = @scanner.pos + old_line = @line + old_offset = @offset + old_interpolation_stack = @interpolation_stack.dup + old_prev = @prev + old_tok = @tok + old_next_tok = @next_tok + + result = yield + return result if result + + @scanner.pos = old_pos + @line = old_line + @offset = old_offset + @interpolation_stack = old_interpolation_stack + @prev = old_prev + @tok = old_tok + @next_tok = old_next_tok + nil + end + + private + + def read_token + if (tok = @next_tok) + @next_tok = nil + return tok + end + + return if done? + start_pos = source_position + value = token + return unless value + type, val = value + Token.new(type, val, range(start_pos), @scanner.pos - @scanner.matched_size) + end + + def whitespace + nil while scan(REGULAR_EXPRESSIONS[:whitespace]) || + scan(REGULAR_EXPRESSIONS[:comment]) || + scan(REGULAR_EXPRESSIONS[:single_line_comment]) + end + + def token + if after_interpolation? + interp_type, interp_value = @interpolation_stack.pop + if interp_type == :special_fun + return special_fun_body(interp_value) + elsif interp_type.nil? + if @scanner.string[@scanner.pos - 1] == '}' && scan(REGULAR_EXPRESSIONS[:ident]) + return [@scanner[2] ? :funcall : :ident, Sass::Util.normalize_ident_escapes(@scanner[1], start: false)] + end + else + raise "[BUG]: Unknown interp_type #{interp_type}" unless interp_type == :string + return string(interp_value, true) + end + end + + variable || string(:double, false) || string(:single, false) || number || id || color || + selector || string(:uri, false) || raw(UNICODERANGE) || special_fun || special_val || + ident_op || ident || op + end + + def variable + _variable(REGULAR_EXPRESSIONS[:variable]) + end + + def _variable(rx) + return unless scan(rx) + [:const, Sass::Util.normalize_ident_escapes(@scanner[2])] + end + + def ident + return unless scan(REGULAR_EXPRESSIONS[:ident]) + [@scanner[2] ? :funcall : :ident, Sass::Util.normalize_ident_escapes(@scanner[1])] + end + + def string(re, open) + line, offset = @line, @offset + return unless scan(STRING_REGULAR_EXPRESSIONS[re][open]) + if @scanner[0] =~ /([^\\]|^)\n/ + filename = @options[:filename] + Sass::Util.sass_warn < Object}] An options hash; see + # {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # This supports an additional `:allow_extra_text` option that controls + # whether the parser throws an error when extra text is encountered + # after the parsed construct. + def initialize(str, line, offset, options = {}) + @options = options + @allow_extra_text = options.delete(:allow_extra_text) + @lexer = lexer_class.new(str, line, offset, options) + @stop_at = nil + end + + # Parses a SassScript expression within an interpolated segment (`#{}`). + # This means that it stops when it comes across an unmatched `}`, + # which signals the end of an interpolated segment, + # it returns rather than throwing an error. + # + # @param warn_for_color [Boolean] Whether raw color values passed to + # interoplation should cause a warning. + # @return [Script::Tree::Node] The root node of the parse tree + # @raise [Sass::SyntaxError] if the expression isn't valid SassScript + def parse_interpolated(warn_for_color = false) + # Start two characters back to compensate for #{ + start_pos = Sass::Source::Position.new(line, offset - 2) + expr = assert_expr :expr + assert_tok :end_interpolation + expr = Sass::Script::Tree::Interpolation.new( + nil, expr, nil, false, false, :warn_for_color => warn_for_color) + check_for_interpolation expr + expr.options = @options + node(expr, start_pos) + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses a SassScript expression. + # + # @return [Script::Tree::Node] The root node of the parse tree + # @raise [Sass::SyntaxError] if the expression isn't valid SassScript + def parse + expr = assert_expr :expr + assert_done + expr.options = @options + check_for_interpolation expr + expr + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses a SassScript expression, + # ending it when it encounters one of the given identifier tokens. + # + # @param tokens [#include?(String | Symbol)] A set of strings or symbols that delimit the expression. + # @return [Script::Tree::Node] The root node of the parse tree + # @raise [Sass::SyntaxError] if the expression isn't valid SassScript + def parse_until(tokens) + @stop_at = tokens + expr = assert_expr :expr + assert_done + expr.options = @options + check_for_interpolation expr + expr + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses the argument list for a mixin include. + # + # @return [(Array, + # {String => Script::Tree::Node}, + # Script::Tree::Node, + # Script::Tree::Node)] + # The root nodes of the positional arguments, keyword arguments, and + # splat argument(s). Keyword arguments are in a hash from names to values. + # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript + def parse_mixin_include_arglist + args, keywords = [], {} + if try_tok(:lparen) + args, keywords, splat, kwarg_splat = mixin_arglist + assert_tok(:rparen) + end + assert_done + + args.each do |a| + check_for_interpolation a + a.options = @options + end + + keywords.each do |_, v| + check_for_interpolation v + v.options = @options + end + + if splat + check_for_interpolation splat + splat.options = @options + end + + if kwarg_splat + check_for_interpolation kwarg_splat + kwarg_splat.options = @options + end + + return args, keywords, splat, kwarg_splat + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses the argument list for a mixin definition. + # + # @return [(Array, Script::Tree::Node)] + # The root nodes of the arguments, and the splat argument. + # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript + def parse_mixin_definition_arglist + args, splat = defn_arglist!(false) + assert_done + + args.each do |k, v| + check_for_interpolation k + k.options = @options + + if v + check_for_interpolation v + v.options = @options + end + end + + if splat + check_for_interpolation splat + splat.options = @options + end + + return args, splat + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses the argument list for a function definition. + # + # @return [(Array, Script::Tree::Node)] + # The root nodes of the arguments, and the splat argument. + # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript + def parse_function_definition_arglist + args, splat = defn_arglist!(true) + assert_done + + args.each do |k, v| + check_for_interpolation k + k.options = @options + + if v + check_for_interpolation v + v.options = @options + end + end + + if splat + check_for_interpolation splat + splat.options = @options + end + + return args, splat + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parse a single string value, possibly containing interpolation. + # Doesn't assert that the scanner is finished after parsing. + # + # @return [Script::Tree::Node] The root node of the parse tree. + # @raise [Sass::SyntaxError] if the string isn't valid SassScript + def parse_string + unless (peek = @lexer.peek) && + (peek.type == :string || + (peek.type == :funcall && peek.value.downcase == 'url')) + lexer.expected!("string") + end + + expr = assert_expr :funcall + check_for_interpolation expr + expr.options = @options + @lexer.unpeek! + expr + rescue Sass::SyntaxError => e + e.modify_backtrace :line => @lexer.line, :filename => @options[:filename] + raise e + end + + # Parses a SassScript expression. + # + # @overload parse(str, line, offset, filename = nil) + # @return [Script::Tree::Node] The root node of the parse tree + # @see Parser#initialize + # @see Parser#parse + def self.parse(*args) + new(*args).parse + end + + PRECEDENCE = [ + :comma, :single_eq, :space, :or, :and, + [:eq, :neq], + [:gt, :gte, :lt, :lte], + [:plus, :minus], + [:times, :div, :mod], + ] + + ASSOCIATIVE = [:plus, :times] + + class << self + # Returns an integer representing the precedence + # of the given operator. + # A lower integer indicates a looser binding. + # + # @private + def precedence_of(op) + PRECEDENCE.each_with_index do |e, i| + return i if Array(e).include?(op) + end + raise "[BUG] Unknown operator #{op.inspect}" + end + + # Returns whether or not the given operation is associative. + # + # @private + def associative?(op) + ASSOCIATIVE.include?(op) + end + + private + + # Defines a simple left-associative production. + # name is the name of the production, + # sub is the name of the production beneath it, + # and ops is a list of operators for this precedence level + def production(name, sub, *ops) + class_eval < true, :deprecation => deprecation), + (prev || str).source_range.start_pos) + interpolation(first: interp) + end + + def try_ops_after_interp(ops, name, prev = nil) + return unless @lexer.after_interpolation? + op = peek_toks(*ops) + return unless op + return if @stop_at && @stop_at.include?(op.type) + @lexer.next + + interp = try_op_before_interp(op, prev, :after_interp) + return interp if interp + + wa = @lexer.whitespace? + str = literal_node(Script::Value::String.new(Lexer::OPERATORS_REVERSE[op.type]), + op.source_range) + str.line = @lexer.line + + deprecation = + case op.type + when :comma; :potential + when :div, :single_eq; :none + when :minus; @lexer.whitespace?(op) ? :immediate : :none + else; :immediate + end + interp = node( + Script::Tree::Interpolation.new( + prev, str, assert_expr(name), false, wa, + :originally_text => true, :deprecation => deprecation), + (prev || str).source_range.start_pos) + interp + end + + def interpolation(first: nil, inner: :space) + e = first || send(inner) + while (interp = try_tok(:begin_interpolation)) + wb = @lexer.whitespace?(interp) + char_before = @lexer.char(interp.pos - 1) + mid = without_stop_at {assert_expr :expr} + assert_tok :end_interpolation + wa = @lexer.whitespace? + char_after = @lexer.char + + after = send(inner) + before_deprecation = e.is_a?(Script::Tree::Interpolation) ? e.deprecation : :none + after_deprecation = after.is_a?(Script::Tree::Interpolation) ? after.deprecation : :none + + deprecation = + if before_deprecation == :immediate || after_deprecation == :immediate || + # Warn for #{foo}$var and #{foo}(1) but not #{$foo}1. + (after && !wa && char_after =~ /[$(]/) || + # Warn for $var#{foo} and (a)#{foo} but not a#{foo}. + (e && !wb && is_unsafe_before?(e, char_before)) + :immediate + else + :potential + end + + e = node( + Script::Tree::Interpolation.new(e, mid, after, wb, wa, :deprecation => deprecation), + (e || interp).source_range.start_pos) + end + e + end + + # Returns whether `expr` is unsafe to include before an interpolation. + # + # @param expr [Node] The expression to check. + # @param char_before [String] The character immediately before the + # interpolation being checked (and presumably the last character of + # `expr`). + # @return [Boolean] + def is_unsafe_before?(expr, char_before) + return char_before == ')' if is_safe_value?(expr) + + # Otherwise, it's only safe if it was another interpolation. + !expr.is_a?(Script::Tree::Interpolation) + end + + # Returns whether `expr` is safe as the value immediately before an + # interpolation. + # + # It's safe as long as the previous expression is an identifier or number, + # or a list whose last element is also safe. + def is_safe_value?(expr) + return is_safe_value?(expr.elements.last) if expr.is_a?(Script::Tree::ListLiteral) + return false unless expr.is_a?(Script::Tree::Literal) + expr.value.is_a?(Script::Value::Number) || + (expr.value.is_a?(Script::Value::String) && expr.value.type == :identifier) + end + + def space + start_pos = source_position + e = or_expr + return unless e + arr = [e] + while (e = or_expr) + arr << e + end + if arr.size == 1 + arr.first + else + node(Sass::Script::Tree::ListLiteral.new(arr, separator: :space), start_pos) + end + end + + production :or_expr, :and_expr, :or + production :and_expr, :eq_or_neq, :and + production :eq_or_neq, :relational, :eq, :neq + production :relational, :plus_or_minus, :gt, :gte, :lt, :lte + production :plus_or_minus, :times_div_or_mod, :plus, :minus + production :times_div_or_mod, :unary_plus, :times, :div, :mod + + unary :plus, :unary_minus + unary :minus, :unary_div + unary :div, :unary_not # For strings, so /foo/bar works + unary :not, :ident + + def ident + return css_min_max unless @lexer.peek && @lexer.peek.type == :ident + return if @stop_at && @stop_at.include?(@lexer.peek.value) + + name = @lexer.next + if (color = Sass::Script::Value::Color::COLOR_NAMES[name.value.downcase]) + literal_node(Sass::Script::Value::Color.new(color, name.value), name.source_range) + elsif name.value == "true" + literal_node(Sass::Script::Value::Bool.new(true), name.source_range) + elsif name.value == "false" + literal_node(Sass::Script::Value::Bool.new(false), name.source_range) + elsif name.value == "null" + literal_node(Sass::Script::Value::Null.new, name.source_range) + else + literal_node(Sass::Script::Value::String.new(name.value, :identifier), name.source_range) + end + end + + def css_min_max + @lexer.try do + next unless tok = try_tok(:funcall) + next unless %w[min max].include?(tok.value.downcase) + next unless contents = min_max_contents + node(array_to_interpolation(["#{tok.value}(", *contents]), + tok.source_range.start_pos, source_position) + end || funcall + end + + def min_max_contents(allow_comma: true) + result = [] + loop do + if tok = try_tok(:number) + result << tok.value.to_s + elsif value = min_max_interpolation + result << value + elsif value = min_max_calc + result << value.value + elsif value = min_max_function || + min_max_parens || + nested_min_max + result.concat value + else + return + end + + if try_tok(:rparen) + result << ")" + return result + elsif tok = try_tok(:plus) || try_tok(:minus) || try_tok(:times) || try_tok(:div) + result << " #{Lexer::OPERATORS_REVERSE[tok.type]} " + elsif allow_comma && try_tok(:comma) + result << ", " + else + return + end + end + end + + def min_max_interpolation + without_stop_at do + tok = try_tok(:begin_interpolation) + return unless tok + expr = without_stop_at {assert_expr :expr} + assert_tok :end_interpolation + expr + end + end + + def min_max_function + return unless tok = peek_tok(:funcall) + return unless %w[calc env var].include?(tok.value.downcase) + @lexer.next + result = [tok.value, '(', *declaration_value, ')'] + assert_tok :rparen + result + end + + def min_max_calc + return unless tok = peek_tok(:special_fun) + return unless tok.value.value.downcase.start_with?("calc(") + @lexer.next.value + end + + def min_max_parens + return unless try_tok :lparen + return unless contents = min_max_contents(allow_comma: false) + ['(', *contents] + end + + def nested_min_max + return unless tok = peek_tok(:funcall) + return unless %w[min max].include?(tok.value.downcase) + @lexer.next + return unless contents = min_max_contents + [tok.value, '(', *contents] + end + + def declaration_value + result = [] + brackets = [] + loop do + result << @lexer.str do + until @lexer.done? || + peek_toks(:begin_interpolation, + :end_interpolation, + :lcurly, + :lparen, + :lsquare, + :rparen, + :rsquare) + @lexer.next || @lexer.next_char + end + end + + if try_tok(:begin_interpolation) + result << assert_expr(:expr) + assert_tok :end_interpolation + elsif tok = try_toks(:lcurly, :lparen, :lsquare) + brackets << case tok.type + when :lcurly; :end_interpolation + when :lparen; :rparen + when :lsquare; :rsquare + end + result << Lexer::OPERATORS_REVERSE[tok.type] + elsif brackets.empty? + return result + else + bracket = brackets.pop + assert_tok bracket + result << Lexer::OPERATORS_REVERSE[bracket] + end + end + end + + def funcall + tok = try_tok(:funcall) + return raw unless tok + args, keywords, splat, kwarg_splat = fn_arglist + assert_tok(:rparen) + node(Script::Tree::Funcall.new(tok.value, args, keywords, splat, kwarg_splat), + tok.source_range.start_pos, source_position) + end + + def defn_arglist!(must_have_parens) + if must_have_parens + assert_tok(:lparen) + else + return [], nil unless try_tok(:lparen) + end + + without_stop_at do + res = [] + splat = nil + must_have_default = false + loop do + break if peek_tok(:rparen) + c = assert_tok(:const) + var = node(Script::Tree::Variable.new(c.value), c.source_range) + if try_tok(:colon) + val = assert_expr(:space) + must_have_default = true + elsif try_tok(:splat) + splat = var + break + elsif must_have_default + raise SyntaxError.new( + "Required argument #{var.inspect} must come before any optional arguments.") + end + res << [var, val] + break unless try_tok(:comma) + end + assert_tok(:rparen) + return res, splat + end + end + + def fn_arglist + arglist(:equals, "function argument") + end + + def mixin_arglist + arglist(:interpolation, "mixin argument") + end + + def arglist(subexpr, description) + without_stop_at do + args = [] + keywords = Sass::Util::NormalizedMap.new + splat = nil + while (e = send(subexpr)) + if @lexer.peek && @lexer.peek.type == :colon + name = e + @lexer.expected!("comma") unless name.is_a?(Tree::Variable) + assert_tok(:colon) + value = assert_expr(subexpr, description) + + if keywords[name.name] + raise SyntaxError.new("Keyword argument \"#{name.to_sass}\" passed more than once") + end + + keywords[name.name] = value + else + if try_tok(:splat) + return args, keywords, splat, e if splat + splat, e = e, nil + elsif splat + raise SyntaxError.new("Only keyword arguments may follow variable arguments (...).") + elsif !keywords.empty? + raise SyntaxError.new("Positional arguments must come before keyword arguments.") + end + args << e if e + end + + return args, keywords, splat unless try_tok(:comma) + end + return args, keywords + end + end + + def raw + tok = try_tok(:raw) + return special_fun unless tok + literal_node(Script::Value::String.new(tok.value), tok.source_range) + end + + def special_fun + first = try_tok(:special_fun) + return square_list unless first + str = literal_node(first.value, first.source_range) + return str unless try_tok(:string_interpolation) + mid = without_stop_at {assert_expr :expr} + assert_tok :end_interpolation + last = assert_expr(:special_fun) + node( + Tree::Interpolation.new(str, mid, last, false, false), + first.source_range.start_pos) + end + + def square_list + start_pos = source_position + return paren unless try_tok(:lsquare) + + without_stop_at do + space_start_pos = source_position + e = interpolation(inner: :or_expr) + separator = nil + if e + elements = [e] + while (e = interpolation(inner: :or_expr)) + elements << e + end + + # If there's a comma after a space-separated list, it's actually a + # space-separated list nested in a comma-separated list. + if try_tok(:comma) + e = if elements.length == 1 + elements.first + else + node( + Sass::Script::Tree::ListLiteral.new(elements, separator: :space), + space_start_pos) + end + elements = [e] + + while (e = space) + elements << e + break unless try_tok(:comma) + end + separator = :comma + else + separator = :space if elements.length > 1 + end + else + elements = [] + end + + assert_tok(:rsquare) + end_pos = source_position + + node(Sass::Script::Tree::ListLiteral.new(elements, separator: separator, bracketed: true), + start_pos, end_pos) + end + end + + def paren + return variable unless try_tok(:lparen) + without_stop_at do + start_pos = source_position + e = map + e.force_division! if e + end_pos = source_position + assert_tok(:rparen) + e || node(Sass::Script::Tree::ListLiteral.new([]), start_pos, end_pos) + end + end + + def variable + start_pos = source_position + c = try_tok(:const) + return string unless c + node(Tree::Variable.new(*c.value), start_pos) + end + + def string + first = try_tok(:string) + return number unless first + str = literal_node(first.value, first.source_range) + return str unless try_tok(:string_interpolation) + mid = assert_expr :expr + assert_tok :end_interpolation + last = without_stop_at {assert_expr(:string)} + node(Tree::StringInterpolation.new(str, mid, last), first.source_range.start_pos) + end + + def number + tok = try_tok(:number) + return selector unless tok + num = tok.value + num.options = @options + num.original = num.to_s + literal_node(num, tok.source_range.start_pos) + end + + def selector + tok = try_tok(:selector) + return literal unless tok + node(tok.value, tok.source_range.start_pos) + end + + def literal + t = try_tok(:color) + return literal_node(t.value, t.source_range) if t + end + + # It would be possible to have unified #assert and #try methods, + # but detecting the method/token difference turns out to be quite expensive. + + EXPR_NAMES = { + :string => "string", + :default => "expression (e.g. 1px, bold)", + :mixin_arglist => "mixin argument", + :fn_arglist => "function argument", + :splat => "...", + :special_fun => '")"', + } + + def assert_expr(name, expected = nil) + e = send(name) + return e if e + @lexer.expected!(expected || EXPR_NAMES[name] || EXPR_NAMES[:default]) + end + + def assert_tok(name) + # Avoids an array allocation caused by argument globbing in assert_toks. + t = try_tok(name) + return t if t + @lexer.expected!(Lexer::TOKEN_NAMES[name] || name.to_s) + end + + def assert_toks(*names) + t = try_toks(*names) + return t if t + @lexer.expected!(names.map {|tok| Lexer::TOKEN_NAMES[tok] || tok}.join(" or ")) + end + + def peek_tok(name) + # Avoids an array allocation caused by argument globbing in the try_toks method. + peeked = @lexer.peek + peeked && name == peeked.type && peeked + end + + def peek_toks(*names) + peeked = @lexer.peek + peeked && names.include?(peeked.type) && peeked + end + + def try_tok(name) + peek_tok(name) && @lexer.next + end + + def try_toks(*names) + peek_toks(*names) && @lexer.next + end + + def assert_done + if @allow_extra_text + # If extra text is allowed, just rewind the lexer so that the + # StringScanner is pointing to the end of the parsed text. + @lexer.unpeek! + else + return if @lexer.done? + @lexer.expected!(EXPR_NAMES[:default]) + end + end + + def without_stop_at + old_stop_at = @stop_at + @stop_at = nil + yield + ensure + @stop_at = old_stop_at + end + + # @overload node(value, source_range) + # @param value [Sass::Script::Value::Base] + # @param source_range [Sass::Source::Range] + # @overload node(value, start_pos, end_pos = source_position) + # @param value [Sass::Script::Value::Base] + # @param start_pos [Sass::Source::Position] + # @param end_pos [Sass::Source::Position] + def literal_node(value, source_range_or_start_pos, end_pos = source_position) + node(Sass::Script::Tree::Literal.new(value), source_range_or_start_pos, end_pos) + end + + # @overload node(node, source_range) + # @param node [Sass::Script::Tree::Node] + # @param source_range [Sass::Source::Range] + # @overload node(node, start_pos, end_pos = source_position) + # @param node [Sass::Script::Tree::Node] + # @param start_pos [Sass::Source::Position] + # @param end_pos [Sass::Source::Position] + def node(node, source_range_or_start_pos, end_pos = source_position) + source_range = + if source_range_or_start_pos.is_a?(Sass::Source::Range) + source_range_or_start_pos + else + range(source_range_or_start_pos, end_pos) + end + + node.line = source_range.start_pos.line + node.source_range = source_range + node.filename = @options[:filename] + node + end + + # Converts an array of strings and expressions to a string interoplation + # object. + # + # @param array [Array] + # @return [Script::Tree::StringInterpolation] + def array_to_interpolation(array) + Sass::Util.merge_adjacent_strings(array).reverse.inject(nil) do |after, value| + if value.is_a?(::String) + literal = Sass::Script::Tree::Literal.new( + Sass::Script::Value::String.new(value)) + next literal unless after + Sass::Script::Tree::StringInterpolation.new(literal, after.mid, after.after) + else + Sass::Script::Tree::StringInterpolation.new( + Sass::Script::Tree::Literal.new( + Sass::Script::Value::String.new('')), + value, + after || Sass::Script::Tree::Literal.new( + Sass::Script::Value::String.new(''))) + end + end + end + + # Checks a script node for any immediately-deprecated interpolations, and + # emits warnings for them. + # + # @param node [Sass::Script::Tree::Node] + def check_for_interpolation(node) + nodes = [node] + until nodes.empty? + node = nodes.pop + unless node.is_a?(Sass::Script::Tree::Interpolation) && + node.deprecation == :immediate + nodes.concat node.children + next + end + + interpolation_deprecation(node) + end + end + + # Emits a deprecation warning for an interpolation node. + # + # @param node [Sass::Script::Tree::Node] + def interpolation_deprecation(interpolation) + return if @options[:_convert] + location = "on line #{interpolation.line}" + location << " of #{interpolation.filename}" if interpolation.filename + Sass::Util.sass_warn <] + attr_reader :args + + # The keyword arguments to the function. + # + # @return [Sass::Util::NormalizedMap] + attr_reader :keywords + + # The first splat argument for this function, if one exists. + # + # This could be a list of positional arguments, a map of keyword + # arguments, or an arglist containing both. + # + # @return [Node?] + attr_accessor :splat + + # The second splat argument for this function, if one exists. + # + # If this exists, it's always a map of keyword arguments, and + # \{#splat} is always either a list or an arglist. + # + # @return [Node?] + attr_accessor :kwarg_splat + + # @param name_or_callable [String, Sass::Callable] See \{#name} + # @param args [Array] See \{#args} + # @param keywords [Sass::Util::NormalizedMap] See \{#keywords} + # @param splat [Node] See \{#splat} + # @param kwarg_splat [Node] See \{#kwarg_splat} + def initialize(name_or_callable, args, keywords, splat, kwarg_splat) + if name_or_callable.is_a?(Sass::Callable) + @callable = name_or_callable + @name = name_or_callable.name + else + @callable = nil + @name = name_or_callable + end + @args = args + @keywords = keywords + @splat = splat + @kwarg_splat = kwarg_splat + super() + end + + # @return [String] A string representation of the function call + def inspect + args = @args.map {|a| a.inspect}.join(', ') + keywords = @keywords.as_stored.to_a.map {|k, v| "$#{k}: #{v.inspect}"}.join(', ') + if self.splat + splat = args.empty? && keywords.empty? ? "" : ", " + splat = "#{splat}#{self.splat.inspect}..." + splat = "#{splat}, #{kwarg_splat.inspect}..." if kwarg_splat + end + "#{name}(#{args}#{', ' unless args.empty? || keywords.empty?}#{keywords}#{splat})" + end + + # @see Node#to_sass + def to_sass(opts = {}) + arg_to_sass = lambda do |arg| + sass = arg.to_sass(opts) + sass = "(#{sass})" if arg.is_a?(Sass::Script::Tree::ListLiteral) && arg.separator == :comma + sass + end + + args = @args.map(&arg_to_sass) + keywords = @keywords.as_stored.to_a.map {|k, v| "$#{dasherize(k, opts)}: #{arg_to_sass[v]}"} + + if self.splat + splat = "#{arg_to_sass[self.splat]}..." + kwarg_splat = "#{arg_to_sass[self.kwarg_splat]}..." if self.kwarg_splat + end + + arglist = [args, splat, keywords, kwarg_splat].flatten.compact.join(', ') + "#{dasherize(name, opts)}(#{arglist})" + end + + # Returns the arguments to the function. + # + # @return [Array] + # @see Node#children + def children + res = @args + @keywords.values + res << @splat if @splat + res << @kwarg_splat if @kwarg_splat + res + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@args', args.map {|a| a.deep_copy}) + copied_keywords = Sass::Util::NormalizedMap.new + @keywords.as_stored.each {|k, v| copied_keywords[k] = v.deep_copy} + node.instance_variable_set('@keywords', copied_keywords) + node + end + + protected + + # Evaluates the function call. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the function call + # @raise [Sass::SyntaxError] if the function call raises an ArgumentError + def _perform(environment) + args = @args.each_with_index. + map {|a, i| perform_arg(a, environment, signature && signature.args[i])} + keywords = Sass::Util.map_hash(@keywords) do |k, v| + [k, perform_arg(v, environment, k.tr('-', '_'))] + end + splat = Sass::Tree::Visitors::Perform.perform_splat( + @splat, keywords, @kwarg_splat, environment) + + fn = @callable || environment.function(@name) + + if fn && fn.origin == :stylesheet + environment.stack.with_function(filename, line, name) do + return without_original(perform_sass_fn(fn, args, splat, environment)) + end + end + + args = construct_ruby_args(ruby_name, args, splat, environment) + + if Sass::Script::Functions.callable?(ruby_name) && (!fn || fn.origin == :builtin) + local_environment = Sass::Environment.new(environment.global_env, environment.options) + local_environment.caller = Sass::ReadOnlyEnvironment.new(environment, environment.options) + result = local_environment.stack.with_function(filename, line, name) do + opts(Sass::Script::Functions::EvaluationContext.new( + local_environment).send(ruby_name, *args)) + end + without_original(result) + else + opts(to_literal(args)) + end + rescue ArgumentError => e + reformat_argument_error(e) + end + + # Compass historically overrode this before it changed name to {Funcall#to_value}. + # We should get rid of it in the future. + def to_literal(args) + to_value(args) + end + + # This method is factored out from `_perform` so that compass can override + # it with a cross-browser implementation for functions that require vendor prefixes + # in the generated css. + def to_value(args) + Sass::Script::Value::String.new("#{name}(#{args.join(', ')})") + end + + private + + def ruby_name + @ruby_name ||= @name.tr('-', '_') + end + + def perform_arg(argument, environment, name) + return argument if signature && signature.delayed_args.include?(name) + argument.perform(environment) + end + + def signature + @signature ||= Sass::Script::Functions.signature(name.to_sym, @args.size, @keywords.size) + end + + def without_original(value) + return value unless value.is_a?(Sass::Script::Value::Number) + value = value.dup + value.original = nil + value + end + + def construct_ruby_args(name, args, splat, environment) + args += splat.to_a if splat + + # All keywords are contained in splat.keywords for consistency, + # even if there were no splats passed in. + old_keywords_accessed = splat.keywords_accessed + keywords = splat.keywords + splat.keywords_accessed = old_keywords_accessed + + unless (signature = Sass::Script::Functions.signature(name.to_sym, args.size, keywords.size)) + return args if keywords.empty? + raise Sass::SyntaxError.new("Function #{name} doesn't support keyword arguments") + end + + # If the user passes more non-keyword args than the function expects, + # but it does expect keyword args, Ruby's arg handling won't raise an error. + # Since we don't want to make functions think about this, + # we'll handle it for them here. + if signature.var_kwargs && !signature.var_args && args.size > signature.args.size + raise Sass::SyntaxError.new( + "#{args[signature.args.size].inspect} is not a keyword argument for `#{name}'") + elsif keywords.empty? + args << {} if signature.var_kwargs + return args + end + + argnames = signature.args[args.size..-1] || [] + deprecated_argnames = (signature.deprecated && signature.deprecated[args.size..-1]) || [] + args += argnames.zip(deprecated_argnames).map do |(argname, deprecated_argname)| + if keywords.has_key?(argname) + keywords.delete(argname) + elsif deprecated_argname && keywords.has_key?(deprecated_argname) + deprecated_argname = keywords.denormalize(deprecated_argname) + Sass::Util.sass_warn("DEPRECATION WARNING: The `$#{deprecated_argname}' argument for " + + "`#{@name}()' has been renamed to `$#{argname}'.") + keywords.delete(deprecated_argname) + else + raise Sass::SyntaxError.new("Function #{name} requires an argument named $#{argname}") + end + end + + if keywords.size > 0 + if signature.var_kwargs + # Don't pass a NormalizedMap to a Ruby function. + args << keywords.to_hash + else + argname = keywords.keys.sort.first + if signature.args.include?(argname) + raise Sass::SyntaxError.new( + "Function #{name} was passed argument $#{argname} both by position and by name") + else + raise Sass::SyntaxError.new( + "Function #{name} doesn't have an argument named $#{argname}") + end + end + end + + args + end + + def perform_sass_fn(function, args, splat, environment) + Sass::Tree::Visitors::Perform.perform_arguments(function, args, splat, environment) do |env| + env.caller = Sass::Environment.new(environment) + + val = catch :_sass_return do + function.tree.each {|c| Sass::Tree::Visitors::Perform.visit(c, env)} + raise Sass::SyntaxError.new("Function #{@name} finished without @return") + end + val + end + end + + def reformat_argument_error(e) + message = e.message + + # If this is a legitimate Ruby-raised argument error, re-raise it. + # Otherwise, it's an error in the user's stylesheet, so wrap it. + if Sass::Util.rbx? + # Rubinius has a different error report string than vanilla Ruby. It + # also doesn't put the actual method for which the argument error was + # thrown in the backtrace, nor does it include `send`, so we look for + # `_perform`. + if e.message =~ /^method '([^']+)': given (\d+), expected (\d+)/ + error_name, given, expected = $1, $2, $3 + raise e if error_name != ruby_name || e.backtrace[0] !~ /:in `_perform'$/ + message = "wrong number of arguments (#{given} for #{expected})" + end + elsif Sass::Util.jruby? + should_maybe_raise = + e.message =~ /^wrong number of arguments calling `[^`]+` \((\d+) for (\d+)\)/ + given, expected = $1, $2 + + if should_maybe_raise + # JRuby 1.7 includes __send__ before send and _perform. + trace = e.backtrace.dup + raise e if trace.shift !~ /:in `__send__'$/ + + # JRuby (as of 1.7.2) doesn't put the actual method + # for which the argument error was thrown in the backtrace, so we + # detect whether our send threw an argument error. + if !(trace[0] =~ /:in `send'$/ && trace[1] =~ /:in `_perform'$/) + raise e + else + # JRuby 1.7 doesn't use standard formatting for its ArgumentErrors. + message = "wrong number of arguments (#{given} for #{expected})" + end + end + elsif (md = /^wrong number of arguments \(given (\d+), expected (\d+)\)/.match(e.message)) && + e.backtrace[0] =~ /:in `#{ruby_name}'$/ + # Handle ruby 2.3 error formatting + message = "wrong number of arguments (#{md[1]} for #{md[2]})" + elsif e.message =~ /^wrong number of arguments/ && + e.backtrace[0] !~ /:in `(block in )?#{ruby_name}'$/ + raise e + end + raise Sass::SyntaxError.new("#{message} for `#{name}'") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/interpolation.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/interpolation.rb new file mode 100644 index 0000000000..c62ac4ec90 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/interpolation.rb @@ -0,0 +1,220 @@ +module Sass::Script::Tree + # A SassScript object representing `#{}` interpolation outside a string. + # + # @see StringInterpolation + class Interpolation < Node + # @return [Node] The SassScript before the interpolation + attr_reader :before + + # @return [Node] The SassScript within the interpolation + attr_reader :mid + + # @return [Node] The SassScript after the interpolation + attr_reader :after + + # @return [Boolean] Whether there was whitespace between `before` and `#{` + attr_reader :whitespace_before + + # @return [Boolean] Whether there was whitespace between `}` and `after` + attr_reader :whitespace_after + + # @return [Boolean] Whether the original format of the interpolation was + # plain text, not an interpolation. This is used when converting back to + # SassScript. + attr_reader :originally_text + + # @return [Boolean] Whether a color value passed to the interpolation should + # generate a warning. + attr_reader :warn_for_color + + # The type of interpolation deprecation for this node. + # + # This can be `:none`, indicating that the node doesn't use deprecated + # interpolation; `:immediate`, indicating that a deprecation warning should + # be emitted as soon as possible; or `:potential`, indicating that a + # deprecation warning should be emitted if the resulting string is used in a + # way that would distinguish it from a list. + # + # @return [Symbol] + attr_reader :deprecation + + # Interpolation in a property is of the form `before #{mid} after`. + # + # @param before [Node] See {Interpolation#before} + # @param mid [Node] See {Interpolation#mid} + # @param after [Node] See {Interpolation#after} + # @param wb [Boolean] See {Interpolation#whitespace_before} + # @param wa [Boolean] See {Interpolation#whitespace_after} + # @param originally_text [Boolean] See {Interpolation#originally_text} + # @param warn_for_color [Boolean] See {Interpolation#warn_for_color} + def initialize(before, mid, after, wb, wa, opts = {}) + @before = before + @mid = mid + @after = after + @whitespace_before = wb + @whitespace_after = wa + @originally_text = opts[:originally_text] || false + @warn_for_color = opts[:warn_for_color] || false + @deprecation = opts[:deprecation] || :none + end + + # @return [String] A human-readable s-expression representation of the interpolation + def inspect + "(interpolation #{@before.inspect} #{@mid.inspect} #{@after.inspect})" + end + + # @see Node#to_sass + def to_sass(opts = {}) + return to_quoted_equivalent.to_sass if deprecation == :immediate + + res = "" + res << @before.to_sass(opts) if @before + res << ' ' if @before && @whitespace_before + res << '#{' unless @originally_text + res << @mid.to_sass(opts) + res << '}' unless @originally_text + res << ' ' if @after && @whitespace_after + res << @after.to_sass(opts) if @after + res + end + + # Returns an `unquote()` expression that will evaluate to the same value as + # this interpolation. + # + # @return [Sass::Script::Tree::Node] + def to_quoted_equivalent + Funcall.new( + "unquote", + [to_string_interpolation(self)], + Sass::Util::NormalizedMap.new, + nil, + nil) + end + + # Returns the three components of the interpolation, `before`, `mid`, and `after`. + # + # @return [Array] + # @see #initialize + # @see Node#children + def children + [@before, @mid, @after].compact + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@before', @before.deep_copy) if @before + node.instance_variable_set('@mid', @mid.deep_copy) + node.instance_variable_set('@after', @after.deep_copy) if @after + node + end + + protected + + # Converts a script node into a corresponding string interpolation + # expression. + # + # @param node_or_interp [Sass::Script::Tree::Node] + # @return [Sass::Script::Tree::StringInterpolation] + def to_string_interpolation(node_or_interp) + unless node_or_interp.is_a?(Interpolation) + node = node_or_interp + return string_literal(node.value.to_s) if node.is_a?(Literal) + if node.is_a?(StringInterpolation) + return concat(string_literal(node.quote), concat(node, string_literal(node.quote))) + end + return StringInterpolation.new(string_literal(""), node, string_literal("")) + end + + interp = node_or_interp + after_string_or_interp = + if interp.after + to_string_interpolation(interp.after) + else + string_literal("") + end + if interp.after && interp.whitespace_after + after_string_or_interp = concat(string_literal(' '), after_string_or_interp) + end + + mid_string_or_interp = to_string_interpolation(interp.mid) + + before_string_or_interp = + if interp.before + to_string_interpolation(interp.before) + else + string_literal("") + end + if interp.before && interp.whitespace_before + before_string_or_interp = concat(before_string_or_interp, string_literal(' ')) + end + + concat(before_string_or_interp, concat(mid_string_or_interp, after_string_or_interp)) + end + + private + + # Evaluates the interpolation. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value::String] + # The SassScript string that is the value of the interpolation + def _perform(environment) + res = "" + res << @before.perform(environment).to_s if @before + res << " " if @before && @whitespace_before + + val = @mid.perform(environment) + if @warn_for_color && val.is_a?(Sass::Script::Value::Color) && val.name + alternative = Operation.new(Sass::Script::Value::String.new("", :string), @mid, :plus) + Sass::Util.sass_warn < :none) + res << " " if @after && @whitespace_after + res << @after.perform(environment).to_s if @after + str = Sass::Script::Value::String.new( + res, :identifier, + (to_quoted_equivalent.to_sass if deprecation == :potential)) + str.source_range = source_range + opts(str) + end + + # Concatenates two string literals or string interpolation expressions. + # + # @param string_or_interp1 [Sass::Script::Tree::Literal|Sass::Script::Tree::StringInterpolation] + # @param string_or_interp2 [Sass::Script::Tree::Literal|Sass::Script::Tree::StringInterpolation] + # @return [Sass::Script::Tree::StringInterpolation] + def concat(string_or_interp1, string_or_interp2) + if string_or_interp1.is_a?(Literal) && string_or_interp2.is_a?(Literal) + return string_literal(string_or_interp1.value.value + string_or_interp2.value.value) + end + + if string_or_interp1.is_a?(Literal) + string = string_or_interp1 + interp = string_or_interp2 + before = string_literal(string.value.value + interp.before.value.value) + return StringInterpolation.new(before, interp.mid, interp.after) + end + + StringInterpolation.new( + string_or_interp1.before, + string_or_interp1.mid, + concat(string_or_interp1.after, string_or_interp2)) + end + + # Returns a string literal with the given contents. + # + # @param string [String] + # @return string [Sass::Script::Tree::Literal] + def string_literal(string) + Literal.new(Sass::Script::Value::String.new(string, :string)) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/list_literal.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/list_literal.rb new file mode 100644 index 0000000000..9fbaad411f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/list_literal.rb @@ -0,0 +1,119 @@ +module Sass::Script::Tree + # A parse tree node representing a list literal. When resolved, this returns a + # {Sass::Tree::Value::List}. + class ListLiteral < Node + # The parse nodes for members of this list. + # + # @return [Array] + attr_reader :elements + + # The operator separating the values of the list. Either `:comma` or + # `:space`. + # + # @return [Symbol] + attr_reader :separator + + # Whether the list is surrounded by square brackets. + # + # @return [Boolean] + attr_reader :bracketed + + # Creates a new list literal. + # + # @param elements [Array] See \{#elements} + # @param separator [Symbol] See \{#separator} + # @param bracketed [Boolean] See \{#bracketed} + def initialize(elements, separator: nil, bracketed: false) + @elements = elements + @separator = separator + @bracketed = bracketed + end + + # @see Node#children + def children; elements; end + + # @see Value#to_sass + def to_sass(opts = {}) + return bracketed ? "[]" : "()" if elements.empty? + members = elements.map do |v| + if element_needs_parens?(v) + "(#{v.to_sass(opts)})" + else + v.to_sass(opts) + end + end + + if separator == :comma && members.length == 1 + return "#{bracketed ? '[' : '('}#{members.first},#{bracketed ? ']' : ')'}" + end + + contents = members.join(sep_str(nil)) + bracketed ? "[#{contents}]" : contents + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@elements', elements.map {|e| e.deep_copy}) + node + end + + def inspect + (bracketed ? '[' : '(') + + elements.map {|e| e.inspect}.join(separator == :space ? ' ' : ', ') + + (bracketed ? ']' : ')') + end + + def force_division! + # Do nothing. Lists prevent division propagation. + end + + protected + + def _perform(environment) + list = Sass::Script::Value::List.new( + elements.map {|e| e.perform(environment)}, + separator: separator, + bracketed: bracketed) + list.source_range = source_range + list.options = options + list + end + + private + + # Returns whether an element in the list should be wrapped in parentheses + # when serialized to Sass. + def element_needs_parens?(element) + if element.is_a?(ListLiteral) + return false if element.elements.length < 2 + return false if element.bracketed + return Sass::Script::Parser.precedence_of(element.separator || :space) <= + Sass::Script::Parser.precedence_of(separator || :space) + end + + return false unless separator == :space + + if element.is_a?(UnaryOperation) + return element.operator == :minus || element.operator == :plus + end + + return false unless element.is_a?(Operation) + return true unless element.operator == :div + !(is_literal_number?(element.operand1) && is_literal_number?(element.operand2)) + end + + # Returns whether a value is a number literal that shouldn't be divided. + def is_literal_number?(value) + value.is_a?(Literal) && + value.value.is_a?((Sass::Script::Value::Number)) && + !value.value.original.nil? + end + + def sep_str(opts = options) + return ' ' if separator == :space + return ',' if opts && opts[:style] == :compressed + ', ' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/literal.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/literal.rb new file mode 100644 index 0000000000..d0dd6e3edf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/literal.rb @@ -0,0 +1,49 @@ +module Sass::Script::Tree + # The parse tree node for a literal scalar value. This wraps an instance of + # {Sass::Script::Value::Base}. + # + # List literals should use {ListLiteral} instead. + class Literal < Node + # The wrapped value. + # + # @return [Sass::Script::Value::Base] + attr_reader :value + + # Creates a new literal value. + # + # @param value [Sass::Script::Value::Base] + # @see #value + def initialize(value) + @value = value + end + + # @see Node#children + def children; []; end + + # @see Node#to_sass + def to_sass(opts = {}); value.to_sass(opts); end + + # @see Node#deep_copy + def deep_copy; dup; end + + # @see Node#options= + def options=(options) + value.options = options + end + + def inspect + value.inspect + end + + def force_division! + value.original = nil if value.is_a?(Sass::Script::Value::Number) + end + + protected + + def _perform(environment) + value.source_range = source_range + value + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/map_literal.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/map_literal.rb new file mode 100644 index 0000000000..5c2e88f382 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/map_literal.rb @@ -0,0 +1,64 @@ +module Sass::Script::Tree + # A class representing a map literal. When resolved, this returns a + # {Sass::Script::Node::Map}. + class MapLiteral < Node + # The key/value pairs that make up this map node. This isn't a Hash so that + # we can detect key collisions once all the keys have been performed. + # + # @return [Array<(Node, Node)>] + attr_reader :pairs + + # Creates a new map literal. + # + # @param pairs [Array<(Node, Node)>] See \{#pairs} + def initialize(pairs) + @pairs = pairs + end + + # @see Node#children + def children + @pairs.flatten + end + + # @see Node#to_sass + def to_sass(opts = {}) + return "()" if pairs.empty? + + to_sass = lambda do |value| + if value.is_a?(ListLiteral) && value.separator == :comma + "(#{value.to_sass(opts)})" + else + value.to_sass(opts) + end + end + + "(" + pairs.map {|(k, v)| "#{to_sass[k]}: #{to_sass[v]}"}.join(', ') + ")" + end + alias_method :inspect, :to_sass + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@pairs', + pairs.map {|(k, v)| [k.deep_copy, v.deep_copy]}) + node + end + + protected + + # @see Node#_perform + def _perform(environment) + keys = Set.new + map = Sass::Script::Value::Map.new(Hash[pairs.map do |(k, v)| + k, v = k.perform(environment), v.perform(environment) + if keys.include?(k) + raise Sass::SyntaxError.new("Duplicate key #{k.inspect} in map #{to_sass}.") + end + keys << k + [k, v] + end]) + map.options = options + map + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/node.rb new file mode 100644 index 0000000000..f68dd769e8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/node.rb @@ -0,0 +1,119 @@ +module Sass::Script::Tree + # The abstract superclass for SassScript parse tree nodes. + # + # Use \{#perform} to evaluate a parse tree. + class Node + # The options hash for this node. + # + # @return [{Symbol => Object}] + attr_reader :options + + # The line of the document on which this node appeared. + # + # @return [Integer] + attr_accessor :line + + # The source range in the document on which this node appeared. + # + # @return [Sass::Source::Range] + attr_accessor :source_range + + # The file name of the document on which this node appeared. + # + # @return [String] + attr_accessor :filename + + # Sets the options hash for this node, + # as well as for all child nodes. + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # + # @param options [{Symbol => Object}] The options + def options=(options) + @options = options + children.each do |c| + if c.is_a? Hash + c.values.each {|v| v.options = options} + else + c.options = options + end + end + end + + # Evaluates the node. + # + # \{#perform} shouldn't be overridden directly; + # instead, override \{#\_perform}. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the SassScript + def perform(environment) + _perform(environment) + rescue Sass::SyntaxError => e + e.modify_backtrace(:line => line) + raise e + end + + # Returns all child nodes of this node. + # + # @return [Array] + def children + Sass::Util.abstract(self) + end + + # Returns the text of this SassScript expression. + # + # @options opts :quote [String] + # The preferred quote style for quoted strings. If `:none`, strings are + # always emitted unquoted. + # + # @return [String] + def to_sass(opts = {}) + Sass::Util.abstract(self) + end + + # Returns a deep clone of this node. + # The child nodes are cloned, but options are not. + # + # @return [Node] + def deep_copy + Sass::Util.abstract(self) + end + + # Forces any division operations with number literals in this expression to + # do real division, rather than returning strings. + def force_division! + children.each {|c| c.force_division!} + end + + protected + + # Converts underscores to dashes if the :dasherize option is set. + def dasherize(s, opts) + if opts[:dasherize] + s.tr('_', '-') + else + s + end + end + + # Evaluates this node. + # Note that all {Sass::Script::Value} objects created within this method + # should have their \{#options} attribute set, probably via \{#opts}. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the SassScript + # @see #perform + def _perform(environment) + Sass::Util.abstract(self) + end + + # Sets the \{#options} field on the given value and returns it. + # + # @param value [Sass::Script::Value] + # @return [Sass::Script::Value] + def opts(value) + value.options = options + value + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/operation.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/operation.rb new file mode 100644 index 0000000000..d38f6ccc74 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/operation.rb @@ -0,0 +1,149 @@ +module Sass::Script::Tree + # A SassScript parse node representing a binary operation, + # such as `$a + $b` or `"foo" + 1`. + class Operation < Node + @@color_arithmetic_deprecation = Sass::Deprecation.new + @@unitless_equals_deprecation = Sass::Deprecation.new + + attr_reader :operand1 + attr_reader :operand2 + attr_reader :operator + + # @param operand1 [Sass::Script::Tree::Node] The parse-tree node + # for the right-hand side of the operator + # @param operand2 [Sass::Script::Tree::Node] The parse-tree node + # for the left-hand side of the operator + # @param operator [Symbol] The operator to perform. + # This should be one of the binary operator names in {Sass::Script::Lexer::OPERATORS} + def initialize(operand1, operand2, operator) + @operand1 = operand1 + @operand2 = operand2 + @operator = operator + super() + end + + # @return [String] A human-readable s-expression representation of the operation + def inspect + "(#{@operator.inspect} #{@operand1.inspect} #{@operand2.inspect})" + end + + # @see Node#to_sass + def to_sass(opts = {}) + o1 = operand_to_sass @operand1, :left, opts + o2 = operand_to_sass @operand2, :right, opts + sep = + case @operator + when :comma; ", " + when :space; " " + else; " #{Sass::Script::Lexer::OPERATORS_REVERSE[@operator]} " + end + "#{o1}#{sep}#{o2}" + end + + # Returns the operands for this operation. + # + # @return [Array] + # @see Node#children + def children + [@operand1, @operand2] + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@operand1', @operand1.deep_copy) + node.instance_variable_set('@operand2', @operand2.deep_copy) + node + end + + protected + + # Evaluates the operation. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the operation + # @raise [Sass::SyntaxError] if the operation is undefined for the operands + def _perform(environment) + value1 = @operand1.perform(environment) + + # Special-case :and and :or to support short-circuiting. + if @operator == :and + return value1.to_bool ? @operand2.perform(environment) : value1 + elsif @operator == :or + return value1.to_bool ? value1 : @operand2.perform(environment) + end + + value2 = @operand2.perform(environment) + + if (value1.is_a?(Sass::Script::Value::Null) || value2.is_a?(Sass::Script::Value::Null)) && + @operator != :eq && @operator != :neq + raise Sass::SyntaxError.new( + "Invalid null operation: \"#{value1.inspect} #{@operator} #{value2.inspect}\".") + end + + begin + result = opts(value1.send(@operator, value2)) + rescue NoMethodError => e + raise e unless e.name.to_s == @operator.to_s + raise Sass::SyntaxError.new("Undefined operation: \"#{value1} #{@operator} #{value2}\".") + end + + warn_for_color_arithmetic(value1, value2) + warn_for_unitless_equals(value1, value2, result) + + result + end + + private + + def warn_for_color_arithmetic(value1, value2) + return unless @operator == :plus || @operator == :times || @operator == :minus || + @operator == :div || @operator == :mod + + if value1.is_a?(Sass::Script::Value::Number) + return unless value2.is_a?(Sass::Script::Value::Color) + elsif value1.is_a?(Sass::Script::Value::Color) + return unless value2.is_a?(Sass::Script::Value::Color) || value2.is_a?(Sass::Script::Value::Number) + else + return + end + + @@color_arithmetic_deprecation.warn(filename, line, < quote) + + res = "" + res << quote if quote != :none + res << _to_sass(before, opts) + res << '#{' << @mid.to_sass(opts.merge(:quote => nil)) << '}' + res << _to_sass(after, opts) + res << quote if quote != :none + res + end + + # Returns the three components of the interpolation, `before`, `mid`, and `after`. + # + # @return [Array] + # @see #initialize + # @see Node#children + def children + [@before, @mid, @after].compact + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@before', @before.deep_copy) if @before + node.instance_variable_set('@mid', @mid.deep_copy) + node.instance_variable_set('@after', @after.deep_copy) if @after + node + end + + protected + + # Evaluates the interpolation. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value::String] + # The SassScript string that is the value of the interpolation + def _perform(environment) + res = "" + before = @before.perform(environment) + res << before.value + mid = @mid.perform(environment) + res << (mid.is_a?(Sass::Script::Value::String) ? mid.value : mid.to_s(:quote => :none)) + res << @after.perform(environment).value + opts(Sass::Script::Value::String.new(res, before.type)) + end + + private + + def _to_sass(string_or_interp, opts) + result = string_or_interp.to_sass(opts) + opts[:quote] == :none ? result : result.slice(1...-1) + end + + def quote_for(string_or_interp) + if string_or_interp.is_a?(Sass::Script::Tree::Literal) + return nil if string_or_interp.value.value.empty? + return '"' if string_or_interp.value.value.include?("'") + return "'" if string_or_interp.value.value.include?('"') + return nil + end + + # Double-quotes take precedence over single quotes. + before_quote = quote_for(string_or_interp.before) + return '"' if before_quote == '"' + after_quote = quote_for(string_or_interp.after) + return '"' if after_quote == '"' + + # Returns "'" if either or both insist on single quotes, and nil + # otherwise. + before_quote || after_quote + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/unary_operation.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/unary_operation.rb new file mode 100644 index 0000000000..b32da087a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/unary_operation.rb @@ -0,0 +1,69 @@ +module Sass::Script::Tree + # A SassScript parse node representing a unary operation, + # such as `-$b` or `not true`. + # + # Currently only `-`, `/`, and `not` are unary operators. + class UnaryOperation < Node + # @return [Symbol] The operation to perform + attr_reader :operator + + # @return [Script::Node] The parse-tree node for the object of the operator + attr_reader :operand + + # @param operand [Script::Node] See \{#operand} + # @param operator [Symbol] See \{#operator} + def initialize(operand, operator) + @operand = operand + @operator = operator + super() + end + + # @return [String] A human-readable s-expression representation of the operation + def inspect + "(#{@operator.inspect} #{@operand.inspect})" + end + + # @see Node#to_sass + def to_sass(opts = {}) + operand = @operand.to_sass(opts) + if @operand.is_a?(Operation) || + (@operator == :minus && + (operand =~ Sass::SCSS::RX::IDENT) == 0) + operand = "(#{@operand.to_sass(opts)})" + end + op = Sass::Script::Lexer::OPERATORS_REVERSE[@operator] + op + (op =~ /[a-z]/ ? " " : "") + operand + end + + # Returns the operand of the operation. + # + # @return [Array] + # @see Node#children + def children + [@operand] + end + + # @see Node#deep_copy + def deep_copy + node = dup + node.instance_variable_set('@operand', @operand.deep_copy) + node + end + + protected + + # Evaluates the operation. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the operation + # @raise [Sass::SyntaxError] if the operation is undefined for the operand + def _perform(environment) + operator = "unary_#{@operator}" + value = @operand.perform(environment) + value.send(operator) + rescue NoMethodError => e + raise e unless e.name.to_s == operator.to_s + raise Sass::SyntaxError.new("Undefined unary operation: \"#{@operator} #{value}\".") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/variable.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/variable.rb new file mode 100644 index 0000000000..7e197381e3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/tree/variable.rb @@ -0,0 +1,57 @@ +module Sass::Script::Tree + # A SassScript parse node representing a variable. + class Variable < Node + # The name of the variable. + # + # @return [String] + attr_reader :name + + # The underscored name of the variable. + # + # @return [String] + attr_reader :underscored_name + + # @param name [String] See \{#name} + def initialize(name) + @name = name + @underscored_name = name.tr("-", "_") + super() + end + + # @return [String] A string representation of the variable + def inspect(opts = {}) + "$#{dasherize(name, opts)}" + end + alias_method :to_sass, :inspect + + # Returns an empty array. + # + # @return [Array] empty + # @see Node#children + def children + [] + end + + # @see Node#deep_copy + def deep_copy + dup + end + + protected + + # Evaluates the variable. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Sass::Script::Value] The SassScript object that is the value of the variable + # @raise [Sass::SyntaxError] if the variable is undefined + def _perform(environment) + val = environment.var(name) + raise Sass::SyntaxError.new("Undefined variable: \"$#{name}\".") unless val + if val.is_a?(Sass::Script::Value::Number) && val.original + val = val.dup + val.original = nil + end + val + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value.rb new file mode 100644 index 0000000000..4f35d634c8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value.rb @@ -0,0 +1,13 @@ +module Sass::Script::Value; end + +require 'sass/script/value/base' +require 'sass/script/value/string' +require 'sass/script/value/number' +require 'sass/script/value/color' +require 'sass/script/value/bool' +require 'sass/script/value/null' +require 'sass/script/value/list' +require 'sass/script/value/arg_list' +require 'sass/script/value/map' +require 'sass/script/value/callable' +require 'sass/script/value/function' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/arg_list.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/arg_list.rb new file mode 100644 index 0000000000..a68d7963c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/arg_list.rb @@ -0,0 +1,36 @@ +module Sass::Script::Value + # A SassScript object representing a variable argument list. This works just + # like a normal list, but can also contain keyword arguments. + # + # The keyword arguments attached to this list are unused except when this is + # passed as a glob argument to a function or mixin. + class ArgList < List + # Whether \{#keywords} has been accessed. If so, we assume that all keywords + # were valid for the function that created this ArgList. + # + # @return [Boolean] + attr_accessor :keywords_accessed + + # Creates a new argument list. + # + # @param value [Array] See \{List#value}. + # @param keywords [Hash, NormalizedMap] See \{#keywords} + # @param separator [String] See \{List#separator}. + def initialize(value, keywords, separator) + super(value, separator: separator) + if keywords.is_a?(Sass::Util::NormalizedMap) + @keywords = keywords + else + @keywords = Sass::Util::NormalizedMap.new(keywords) + end + end + + # The keyword arguments attached to this list. + # + # @return [NormalizedMap] + def keywords + @keywords_accessed = true + @keywords + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/base.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/base.rb new file mode 100644 index 0000000000..6596357069 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/base.rb @@ -0,0 +1,258 @@ +module Sass::Script::Value + # The abstract superclass for SassScript objects. + # + # Many of these methods, especially the ones that correspond to SassScript operations, + # are designed to be overridden by subclasses which may change the semantics somewhat. + # The operations listed here are just the defaults. + class Base + # Returns the Ruby value of the value. + # The type of this value varies based on the subclass. + # + # @return [Object] + attr_reader :value + + # The source range in the document on which this node appeared. + # + # @return [Sass::Source::Range] + attr_accessor :source_range + + # Creates a new value. + # + # @param value [Object] The object for \{#value} + def initialize(value = nil) + value.freeze unless value.nil? || value == true || value == false + @value = value + @options = nil + end + + # Sets the options hash for this node, + # as well as for all child nodes. + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # + # @param options [{Symbol => Object}] The options + attr_writer :options + + # Returns the options hash for this node. + # + # @return [{Symbol => Object}] + # @raise [Sass::SyntaxError] if the options hash hasn't been set. + # This should only happen when the value was created + # outside of the parser and \{#to\_s} was called on it + def options + return @options if @options + raise Sass::SyntaxError.new(< :none) + other.to_s(:quote => :none), type) + end + + # The SassScript `-` operation. + # + # @param other [Value] The right-hand side of the operator + # @return [Script::Value::String] A string containing both values + # separated by `"-"` + def minus(other) + Sass::Script::Value::String.new("#{self}-#{other}") + end + + # The SassScript `/` operation. + # + # @param other [Value] The right-hand side of the operator + # @return [Script::Value::String] A string containing both values + # separated by `"/"` + def div(other) + Sass::Script::Value::String.new("#{self}/#{other}") + end + + # The SassScript unary `+` operation (e.g. `+$a`). + # + # @param other [Value] The right-hand side of the operator + # @return [Script::Value::String] A string containing the value + # preceded by `"+"` + def unary_plus + Sass::Script::Value::String.new("+#{self}") + end + + # The SassScript unary `-` operation (e.g. `-$a`). + # + # @param other [Value] The right-hand side of the operator + # @return [Script::Value::String] A string containing the value + # preceded by `"-"` + def unary_minus + Sass::Script::Value::String.new("-#{self}") + end + + # The SassScript unary `/` operation (e.g. `/$a`). + # + # @param other [Value] The right-hand side of the operator + # @return [Script::Value::String] A string containing the value + # preceded by `"/"` + def unary_div + Sass::Script::Value::String.new("/#{self}") + end + + # Returns the hash code of this value. Two objects' hash codes should be + # equal if the objects are equal. + # + # @return [Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions] The hash code. + def hash + value.hash + end + + def eql?(other) + self == other + end + + # @return [String] A readable representation of the value + def inspect + value.inspect + end + + # @return [Boolean] `true` (the Ruby boolean value) + def to_bool + true + end + + # Compares this object with another. + # + # @param other [Object] The object to compare with + # @return [Boolean] Whether or not this value is equivalent to `other` + def ==(other) + eq(other).to_bool + end + + # @return [Integer] The integer value of this value + # @raise [Sass::SyntaxError] if this value isn't an integer + def to_i + raise Sass::SyntaxError.new("#{inspect} is not an integer.") + end + + # @raise [Sass::SyntaxError] if this value isn't an integer + def assert_int!; to_i; end + + # Returns the separator for this value. For non-list-like values or the + # empty list, this will be `nil`. For lists or maps, it will be `:space` or + # `:comma`. + # + # @return [Symbol] + def separator; nil; end + + # Whether the value is surrounded by square brackets. For non-list values, + # this will be `false`. + # + # @return [Boolean] + def bracketed; false; end + + # Returns the value of this value as a list. + # Single values are considered the same as single-element lists. + # + # @return [Array] This value as a list + def to_a + [self] + end + + # Returns the value of this value as a hash. Most values don't have hash + # representations, but [Map]s and empty [List]s do. + # + # @return [Hash] This value as a hash + # @raise [Sass::SyntaxError] if this value doesn't have a hash representation + def to_h + raise Sass::SyntaxError.new("#{inspect} is not a map.") + end + + # Returns the string representation of this value + # as it would be output to the CSS document. + # + # @options opts :quote [String] + # The preferred quote style for quoted strings. If `:none`, strings are + # always emitted unquoted. + # @return [String] + def to_s(opts = {}) + Sass::Util.abstract(self) + end + alias_method :to_sass, :to_s + + # Returns whether or not this object is null. + # + # @return [Boolean] `false` + def null? + false + end + + # Creates a new list containing `contents` but with the same brackets and + # separators as this object, when interpreted as a list. + # + # @param contents [Array] The contents of the new list. + # @param separator [Symbol] The separator of the new list. Defaults to \{#separator}. + # @param bracketed [Boolean] Whether the new list is bracketed. Defaults to \{#bracketed}. + # @return [Sass::Script::Value::List] + def with_contents(contents, separator: self.separator, bracketed: self.bracketed) + Sass::Script::Value::List.new(contents, separator: separator, bracketed: bracketed) + end + + protected + + # Evaluates the value. + # + # @param environment [Sass::Environment] The environment in which to evaluate the SassScript + # @return [Value] This value + def _perform(environment) + self + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/bool.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/bool.rb new file mode 100644 index 0000000000..fd1789baec --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/bool.rb @@ -0,0 +1,35 @@ +module Sass::Script::Value + # A SassScript object representing a boolean (true or false) value. + class Bool < Base + # The true value in SassScript. + # + # This is assigned before new is overridden below so that we use the default implementation. + TRUE = new(true) + + # The false value in SassScript. + # + # This is assigned before new is overridden below so that we use the default implementation. + FALSE = new(false) + + # We override object creation so that users of the core API + # will not need to know that booleans are specific constants. + # + # @param value A ruby value that will be tested for truthiness. + # @return [Bool] TRUE if value is truthy, FALSE if value is falsey + def self.new(value) + value ? TRUE : FALSE + end + + # The Ruby value of the boolean. + # + # @return [Boolean] + attr_reader :value + alias_method :to_bool, :value + + # @return [String] "true" or "false" + def to_s(opts = {}) + @value.to_s + end + alias_method :to_sass, :to_s + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/callable.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/callable.rb new file mode 100644 index 0000000000..4e10d0dcb2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/callable.rb @@ -0,0 +1,25 @@ +module Sass::Script::Value + # A SassScript object representing a null value. + class Callable < Base + # Constructs a Callable value for use in SassScript. + # + # @param callable [Sass::Callable] The callable to be used when the + # callable is called. + def initialize(callable) + super(callable) + end + + def to_s(opts = {}) + raise Sass::SyntaxError.new("#{to_sass} isn't a valid CSS value.") + end + + def inspect + to_sass + end + + # @abstract + def to_sass + Sass::Util.abstract(self) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/color.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/color.rb new file mode 100644 index 0000000000..ccd148dcf2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/color.rb @@ -0,0 +1,704 @@ +module Sass::Script::Value + # A SassScript object representing a CSS color. + # + # A color may be represented internally as RGBA, HSLA, or both. + # It's originally represented as whatever its input is; + # if it's created with RGB values, it's represented as RGBA, + # and if it's created with HSL values, it's represented as HSLA. + # Once a property is accessed that requires the other representation -- + # for example, \{#red} for an HSL color -- + # that component is calculated and cached. + # + # The alpha channel of a color is independent of its RGB or HSL representation. + # It's always stored, as 1 if nothing else is specified. + # If only the alpha channel is modified using \{#with}, + # the cached RGB and HSL values are retained. + class Color < Base + # @private + # + # Convert a ruby integer to a rgba components + # @param color [Integer] + # @return [Array] Array of 4 numbers representing r,g,b and alpha + def self.int_to_rgba(color) + rgba = (0..3).map {|n| color >> (n << 3) & 0xff}.reverse + rgba[-1] = rgba[-1] / 255.0 + rgba + end + + ALTERNATE_COLOR_NAMES = Sass::Util.map_vals( + { + 'aqua' => 0x00FFFFFF, + 'darkgrey' => 0xA9A9A9FF, + 'darkslategrey' => 0x2F4F4FFF, + 'dimgrey' => 0x696969FF, + 'fuchsia' => 0xFF00FFFF, + 'grey' => 0x808080FF, + 'lightgrey' => 0xD3D3D3FF, + 'lightslategrey' => 0x778899FF, + 'slategrey' => 0x708090FF, + }, &method(:int_to_rgba)) + + # A hash from color names to `[red, green, blue]` value arrays. + COLOR_NAMES = Sass::Util.map_vals( + { + 'aliceblue' => 0xF0F8FFFF, + 'antiquewhite' => 0xFAEBD7FF, + 'aquamarine' => 0x7FFFD4FF, + 'azure' => 0xF0FFFFFF, + 'beige' => 0xF5F5DCFF, + 'bisque' => 0xFFE4C4FF, + 'black' => 0x000000FF, + 'blanchedalmond' => 0xFFEBCDFF, + 'blue' => 0x0000FFFF, + 'blueviolet' => 0x8A2BE2FF, + 'brown' => 0xA52A2AFF, + 'burlywood' => 0xDEB887FF, + 'cadetblue' => 0x5F9EA0FF, + 'chartreuse' => 0x7FFF00FF, + 'chocolate' => 0xD2691EFF, + 'coral' => 0xFF7F50FF, + 'cornflowerblue' => 0x6495EDFF, + 'cornsilk' => 0xFFF8DCFF, + 'crimson' => 0xDC143CFF, + 'cyan' => 0x00FFFFFF, + 'darkblue' => 0x00008BFF, + 'darkcyan' => 0x008B8BFF, + 'darkgoldenrod' => 0xB8860BFF, + 'darkgray' => 0xA9A9A9FF, + 'darkgreen' => 0x006400FF, + 'darkkhaki' => 0xBDB76BFF, + 'darkmagenta' => 0x8B008BFF, + 'darkolivegreen' => 0x556B2FFF, + 'darkorange' => 0xFF8C00FF, + 'darkorchid' => 0x9932CCFF, + 'darkred' => 0x8B0000FF, + 'darksalmon' => 0xE9967AFF, + 'darkseagreen' => 0x8FBC8FFF, + 'darkslateblue' => 0x483D8BFF, + 'darkslategray' => 0x2F4F4FFF, + 'darkturquoise' => 0x00CED1FF, + 'darkviolet' => 0x9400D3FF, + 'deeppink' => 0xFF1493FF, + 'deepskyblue' => 0x00BFFFFF, + 'dimgray' => 0x696969FF, + 'dodgerblue' => 0x1E90FFFF, + 'firebrick' => 0xB22222FF, + 'floralwhite' => 0xFFFAF0FF, + 'forestgreen' => 0x228B22FF, + 'gainsboro' => 0xDCDCDCFF, + 'ghostwhite' => 0xF8F8FFFF, + 'gold' => 0xFFD700FF, + 'goldenrod' => 0xDAA520FF, + 'gray' => 0x808080FF, + 'green' => 0x008000FF, + 'greenyellow' => 0xADFF2FFF, + 'honeydew' => 0xF0FFF0FF, + 'hotpink' => 0xFF69B4FF, + 'indianred' => 0xCD5C5CFF, + 'indigo' => 0x4B0082FF, + 'ivory' => 0xFFFFF0FF, + 'khaki' => 0xF0E68CFF, + 'lavender' => 0xE6E6FAFF, + 'lavenderblush' => 0xFFF0F5FF, + 'lawngreen' => 0x7CFC00FF, + 'lemonchiffon' => 0xFFFACDFF, + 'lightblue' => 0xADD8E6FF, + 'lightcoral' => 0xF08080FF, + 'lightcyan' => 0xE0FFFFFF, + 'lightgoldenrodyellow' => 0xFAFAD2FF, + 'lightgreen' => 0x90EE90FF, + 'lightgray' => 0xD3D3D3FF, + 'lightpink' => 0xFFB6C1FF, + 'lightsalmon' => 0xFFA07AFF, + 'lightseagreen' => 0x20B2AAFF, + 'lightskyblue' => 0x87CEFAFF, + 'lightslategray' => 0x778899FF, + 'lightsteelblue' => 0xB0C4DEFF, + 'lightyellow' => 0xFFFFE0FF, + 'lime' => 0x00FF00FF, + 'limegreen' => 0x32CD32FF, + 'linen' => 0xFAF0E6FF, + 'magenta' => 0xFF00FFFF, + 'maroon' => 0x800000FF, + 'mediumaquamarine' => 0x66CDAAFF, + 'mediumblue' => 0x0000CDFF, + 'mediumorchid' => 0xBA55D3FF, + 'mediumpurple' => 0x9370DBFF, + 'mediumseagreen' => 0x3CB371FF, + 'mediumslateblue' => 0x7B68EEFF, + 'mediumspringgreen' => 0x00FA9AFF, + 'mediumturquoise' => 0x48D1CCFF, + 'mediumvioletred' => 0xC71585FF, + 'midnightblue' => 0x191970FF, + 'mintcream' => 0xF5FFFAFF, + 'mistyrose' => 0xFFE4E1FF, + 'moccasin' => 0xFFE4B5FF, + 'navajowhite' => 0xFFDEADFF, + 'navy' => 0x000080FF, + 'oldlace' => 0xFDF5E6FF, + 'olive' => 0x808000FF, + 'olivedrab' => 0x6B8E23FF, + 'orange' => 0xFFA500FF, + 'orangered' => 0xFF4500FF, + 'orchid' => 0xDA70D6FF, + 'palegoldenrod' => 0xEEE8AAFF, + 'palegreen' => 0x98FB98FF, + 'paleturquoise' => 0xAFEEEEFF, + 'palevioletred' => 0xDB7093FF, + 'papayawhip' => 0xFFEFD5FF, + 'peachpuff' => 0xFFDAB9FF, + 'peru' => 0xCD853FFF, + 'pink' => 0xFFC0CBFF, + 'plum' => 0xDDA0DDFF, + 'powderblue' => 0xB0E0E6FF, + 'purple' => 0x800080FF, + 'red' => 0xFF0000FF, + 'rebeccapurple' => 0x663399FF, + 'rosybrown' => 0xBC8F8FFF, + 'royalblue' => 0x4169E1FF, + 'saddlebrown' => 0x8B4513FF, + 'salmon' => 0xFA8072FF, + 'sandybrown' => 0xF4A460FF, + 'seagreen' => 0x2E8B57FF, + 'seashell' => 0xFFF5EEFF, + 'sienna' => 0xA0522DFF, + 'silver' => 0xC0C0C0FF, + 'skyblue' => 0x87CEEBFF, + 'slateblue' => 0x6A5ACDFF, + 'slategray' => 0x708090FF, + 'snow' => 0xFFFAFAFF, + 'springgreen' => 0x00FF7FFF, + 'steelblue' => 0x4682B4FF, + 'tan' => 0xD2B48CFF, + 'teal' => 0x008080FF, + 'thistle' => 0xD8BFD8FF, + 'tomato' => 0xFF6347FF, + 'transparent' => 0x00000000, + 'turquoise' => 0x40E0D0FF, + 'violet' => 0xEE82EEFF, + 'wheat' => 0xF5DEB3FF, + 'white' => 0xFFFFFFFF, + 'whitesmoke' => 0xF5F5F5FF, + 'yellow' => 0xFFFF00FF, + 'yellowgreen' => 0x9ACD32FF + }, &method(:int_to_rgba)) + + # A hash from `[red, green, blue, alpha]` value arrays to color names. + COLOR_NAMES_REVERSE = COLOR_NAMES.invert.freeze + + # We add the alternate color names after inverting because + # different ruby implementations and versions vary on the ordering of the result of invert. + COLOR_NAMES.update(ALTERNATE_COLOR_NAMES).freeze + + # The user's original representation of the color. + # + # @return [String] + attr_reader :representation + + # Constructs an RGB or HSL color object, + # optionally with an alpha channel. + # + # RGB values are clipped within 0 and 255. + # Saturation and lightness values are clipped within 0 and 100. + # The alpha value is clipped within 0 and 1. + # + # @raise [Sass::SyntaxError] if any color value isn't in the specified range + # + # @overload initialize(attrs) + # The attributes are specified as a hash. This hash must contain either + # `:hue`, `:saturation`, and `:lightness` keys, or `:red`, `:green`, and + # `:blue` keys. It cannot contain both HSL and RGB keys. It may also + # optionally contain an `:alpha` key, and a `:representation` key + # indicating the original representation of the color that the user wrote + # in their stylesheet. + # + # @param attrs [{Symbol => Numeric}] A hash of color attributes to values + # @raise [ArgumentError] if not enough attributes are specified, + # or both RGB and HSL attributes are specified + # + # @overload initialize(rgba, [representation]) + # The attributes are specified as an array. + # This overload only supports RGB or RGBA colors. + # + # @param rgba [Array] A three- or four-element array + # of the red, green, blue, and optionally alpha values (respectively) + # of the color + # @param representation [String] The original representation of the color + # that the user wrote in their stylesheet. + # @raise [ArgumentError] if not enough attributes are specified + def initialize(attrs, representation = nil, allow_both_rgb_and_hsl = false) + super(nil) + + if attrs.is_a?(Array) + unless (3..4).include?(attrs.size) + raise ArgumentError.new("Color.new(array) expects a three- or four-element array") + end + + red, green, blue = attrs[0...3].map {|c| Sass::Util.round(c)} + @attrs = {:red => red, :green => green, :blue => blue} + @attrs[:alpha] = attrs[3] ? attrs[3].to_f : 1 + @representation = representation + else + attrs = attrs.reject {|_k, v| v.nil?} + hsl = [:hue, :saturation, :lightness] & attrs.keys + rgb = [:red, :green, :blue] & attrs.keys + if !allow_both_rgb_and_hsl && !hsl.empty? && !rgb.empty? + raise ArgumentError.new("Color.new(hash) may not have both HSL and RGB keys specified") + elsif hsl.empty? && rgb.empty? + raise ArgumentError.new("Color.new(hash) must have either HSL or RGB keys specified") + elsif !hsl.empty? && hsl.size != 3 + raise ArgumentError.new("Color.new(hash) must have all three HSL values specified") + elsif !rgb.empty? && rgb.size != 3 + raise ArgumentError.new("Color.new(hash) must have all three RGB values specified") + end + + @attrs = attrs + @attrs[:hue] %= 360 if @attrs[:hue] + @attrs[:alpha] ||= 1 + @representation = @attrs.delete(:representation) + end + + [:red, :green, :blue].each do |k| + next if @attrs[k].nil? + @attrs[k] = Sass::Util.restrict(Sass::Util.round(@attrs[k]), 0..255) + end + + [:saturation, :lightness].each do |k| + next if @attrs[k].nil? + @attrs[k] = Sass::Util.restrict(@attrs[k], 0..100) + end + + @attrs[:alpha] = Sass::Util.restrict(@attrs[:alpha], 0..1) + end + + # Create a new color from a valid CSS hex string. + # + # The leading hash is optional. + # + # @return [Color] + def self.from_hex(hex_string, alpha = nil) + unless hex_string =~ /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i || + hex_string =~ /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i + raise ArgumentError.new("#{hex_string.inspect} is not a valid hex color.") + end + red = $1.ljust(2, $1).to_i(16) + green = $2.ljust(2, $2).to_i(16) + blue = $3.ljust(2, $3).to_i(16) + alpha = $4.ljust(2, $4).to_i(16).to_f / 0xff if $4 + + hex_string = "##{hex_string}" unless hex_string[0] == ?# + attrs = {:red => red, :green => green, :blue => blue, :representation => hex_string} + attrs[:alpha] = alpha if alpha + new(attrs) + end + + # The red component of the color. + # + # @return [Integer] + def red + hsl_to_rgb! + @attrs[:red] + end + + # The green component of the color. + # + # @return [Integer] + def green + hsl_to_rgb! + @attrs[:green] + end + + # The blue component of the color. + # + # @return [Integer] + def blue + hsl_to_rgb! + @attrs[:blue] + end + + # The hue component of the color. + # + # @return [Numeric] + def hue + rgb_to_hsl! + @attrs[:hue] + end + + # The saturation component of the color. + # + # @return [Numeric] + def saturation + rgb_to_hsl! + @attrs[:saturation] + end + + # The lightness component of the color. + # + # @return [Numeric] + def lightness + rgb_to_hsl! + @attrs[:lightness] + end + + # The alpha channel (opacity) of the color. + # This is 1 unless otherwise defined. + # + # @return [Integer] + def alpha + @attrs[:alpha].to_f + end + + # Returns whether this color object is translucent; + # that is, whether the alpha channel is non-1. + # + # @return [Boolean] + def alpha? + alpha < 1 + end + + # Returns the red, green, and blue components of the color. + # + # @return [Array] A frozen three-element array of the red, green, and blue + # values (respectively) of the color + def rgb + [red, green, blue].freeze + end + + # Returns the red, green, blue, and alpha components of the color. + # + # @return [Array] A frozen four-element array of the red, green, + # blue, and alpha values (respectively) of the color + def rgba + [red, green, blue, alpha].freeze + end + + # Returns the hue, saturation, and lightness components of the color. + # + # @return [Array] A frozen three-element array of the + # hue, saturation, and lightness values (respectively) of the color + def hsl + [hue, saturation, lightness].freeze + end + + # Returns the hue, saturation, lightness, and alpha components of the color. + # + # @return [Array] A frozen four-element array of the hue, + # saturation, lightness, and alpha values (respectively) of the color + def hsla + [hue, saturation, lightness, alpha].freeze + end + + # The SassScript `==` operation. + # **Note that this returns a {Sass::Script::Value::Bool} object, + # not a Ruby boolean**. + # + # @param other [Value] The right-hand side of the operator + # @return [Bool] True if this value is the same as the other, + # false otherwise + def eq(other) + Sass::Script::Value::Bool.new( + other.is_a?(Color) && rgb == other.rgb && alpha == other.alpha) + end + + def hash + [rgb, alpha].hash + end + + # Returns a copy of this color with one or more channels changed. + # RGB or HSL colors may be changed, but not both at once. + # + # For example: + # + # Color.new([10, 20, 30]).with(:blue => 40) + # #=> rgb(10, 40, 30) + # Color.new([126, 126, 126]).with(:red => 0, :green => 255) + # #=> rgb(0, 255, 126) + # Color.new([255, 0, 127]).with(:saturation => 60) + # #=> rgb(204, 51, 127) + # Color.new([1, 2, 3]).with(:alpha => 0.4) + # #=> rgba(1, 2, 3, 0.4) + # + # @param attrs [{Symbol => Numeric}] + # A map of channel names (`:red`, `:green`, `:blue`, + # `:hue`, `:saturation`, `:lightness`, or `:alpha`) to values + # @return [Color] The new Color object + # @raise [ArgumentError] if both RGB and HSL keys are specified + def with(attrs) + attrs = attrs.reject {|_k, v| v.nil?} + hsl = !([:hue, :saturation, :lightness] & attrs.keys).empty? + rgb = !([:red, :green, :blue] & attrs.keys).empty? + if hsl && rgb + raise ArgumentError.new("Cannot specify HSL and RGB values for a color at the same time") + end + + if hsl + [:hue, :saturation, :lightness].each {|k| attrs[k] ||= send(k)} + elsif rgb + [:red, :green, :blue].each {|k| attrs[k] ||= send(k)} + else + # If we're just changing the alpha channel, + # keep all the HSL/RGB stuff we've calculated + attrs = @attrs.merge(attrs) + end + attrs[:alpha] ||= alpha + + Color.new(attrs, nil, :allow_both_rgb_and_hsl) + end + + # The SassScript `+` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Adds the number to each of the RGB color channels. + # + # {Color} + # : Adds each of the RGB color channels together. + # + # {Value} + # : See {Value::Base#plus}. + # + # @param other [Value] The right-hand side of the operator + # @return [Color] The resulting color + # @raise [Sass::SyntaxError] if `other` is a number with units + def plus(other) + if other.is_a?(Sass::Script::Value::Number) || other.is_a?(Sass::Script::Value::Color) + piecewise(other, :+) + else + super + end + end + + # The SassScript `-` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Subtracts the number from each of the RGB color channels. + # + # {Color} + # : Subtracts each of the other color's RGB color channels from this color's. + # + # {Value} + # : See {Value::Base#minus}. + # + # @param other [Value] The right-hand side of the operator + # @return [Color] The resulting color + # @raise [Sass::SyntaxError] if `other` is a number with units + def minus(other) + if other.is_a?(Sass::Script::Value::Number) || other.is_a?(Sass::Script::Value::Color) + piecewise(other, :-) + else + super + end + end + + # The SassScript `*` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Multiplies the number by each of the RGB color channels. + # + # {Color} + # : Multiplies each of the RGB color channels together. + # + # @param other [Number, Color] The right-hand side of the operator + # @return [Color] The resulting color + # @raise [Sass::SyntaxError] if `other` is a number with units + def times(other) + if other.is_a?(Sass::Script::Value::Number) || other.is_a?(Sass::Script::Value::Color) + piecewise(other, :*) + else + raise NoMethodError.new(nil, :times) + end + end + + # The SassScript `/` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Divides each of the RGB color channels by the number. + # + # {Color} + # : Divides each of this color's RGB color channels by the other color's. + # + # {Value} + # : See {Value::Base#div}. + # + # @param other [Value] The right-hand side of the operator + # @return [Color] The resulting color + # @raise [Sass::SyntaxError] if `other` is a number with units + def div(other) + if other.is_a?(Sass::Script::Value::Number) || + other.is_a?(Sass::Script::Value::Color) + piecewise(other, :/) + else + super + end + end + + # The SassScript `%` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Takes each of the RGB color channels module the number. + # + # {Color} + # : Takes each of this color's RGB color channels modulo the other color's. + # + # @param other [Number, Color] The right-hand side of the operator + # @return [Color] The resulting color + # @raise [Sass::SyntaxError] if `other` is a number with units + def mod(other) + if other.is_a?(Sass::Script::Value::Number) || + other.is_a?(Sass::Script::Value::Color) + piecewise(other, :%) + else + raise NoMethodError.new(nil, :mod) + end + end + + # Returns a string representation of the color. + # This is usually the color's hex value, + # but if the color has a name that's used instead. + # + # @return [String] The string representation + def to_s(opts = {}) + return smallest if options[:style] == :compressed + return representation if representation + + # IE10 doesn't properly support the color name "transparent", so we emit + # generated transparent colors as rgba(0, 0, 0, 0) in favor of that. See + # #1782. + return rgba_str if Number.basically_equal?(alpha, 0) + return name if name + alpha? ? rgba_str : hex_str + end + alias_method :to_sass, :to_s + + # Returns a string representation of the color. + # + # @return [String] The hex value + def inspect + alpha? ? rgba_str : hex_str + end + + # Returns the color's name, if it has one. + # + # @return [String, nil] + def name + COLOR_NAMES_REVERSE[rgba] + end + + private + + def smallest + small_explicit_str = alpha? ? rgba_str : hex_str.gsub(/^#(.)\1(.)\2(.)\3$/, '#\1\2\3') + [representation, COLOR_NAMES_REVERSE[rgba], small_explicit_str]. + compact.min_by {|str| str.size} + end + + def rgba_str + split = options[:style] == :compressed ? ',' : ', ' + "rgba(#{rgb.join(split)}#{split}#{Number.round(alpha)})" + end + + def hex_str + red, green, blue = rgb.map {|num| num.to_s(16).rjust(2, '0')} + "##{red}#{green}#{blue}" + end + + def operation_name(operation) + case operation + when :+ + "add" + when :- + "subtract" + when :* + "multiply" + when :/ + "divide" + when :% + "modulo" + end + end + + def piecewise(other, operation) + other_num = other.is_a? Number + if other_num && !other.unitless? + raise Sass::SyntaxError.new( + "Cannot #{operation_name(operation)} a number with units (#{other}) to a color (#{self})." + ) + end + + result = [] + (0...3).each do |i| + res = rgb[i].to_f.send(operation, other_num ? other.value : other.rgb[i]) + result[i] = [[res, 255].min, 0].max + end + + if !other_num && other.alpha != alpha + raise Sass::SyntaxError.new("Alpha channels must be equal: #{self} #{operation} #{other}") + end + + with(:red => result[0], :green => result[1], :blue => result[2]) + end + + def hsl_to_rgb! + return if @attrs[:red] && @attrs[:blue] && @attrs[:green] + + h = @attrs[:hue] / 360.0 + s = @attrs[:saturation] / 100.0 + l = @attrs[:lightness] / 100.0 + + # Algorithm from the CSS3 spec: http://www.w3.org/TR/css3-color/#hsl-color. + m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s + m1 = l * 2 - m2 + @attrs[:red], @attrs[:green], @attrs[:blue] = [ + hue_to_rgb(m1, m2, h + 1.0 / 3), + hue_to_rgb(m1, m2, h), + hue_to_rgb(m1, m2, h - 1.0 / 3) + ].map {|c| Sass::Util.round(c * 0xff)} + end + + def hue_to_rgb(m1, m2, h) + h += 1 if h < 0 + h -= 1 if h > 1 + return m1 + (m2 - m1) * h * 6 if h * 6 < 1 + return m2 if h * 2 < 1 + return m1 + (m2 - m1) * (2.0 / 3 - h) * 6 if h * 3 < 2 + m1 + end + + def rgb_to_hsl! + return if @attrs[:hue] && @attrs[:saturation] && @attrs[:lightness] + r, g, b = [:red, :green, :blue].map {|k| @attrs[k] / 255.0} + + # Algorithm from http://en.wikipedia.org/wiki/HSL_and_HSV#Conversion_from_RGB_to_HSL_or_HSV + max = [r, g, b].max + min = [r, g, b].min + d = max - min + + h = + case max + when min; 0 + when r; 60 * (g - b) / d + when g; 60 * (b - r) / d + 120 + when b; 60 * (r - g) / d + 240 + end + + l = (max + min) / 2.0 + + s = + if max == min + 0 + elsif l < 0.5 + d / (2 * l) + else + d / (2 - 2 * l) + end + + @attrs[:hue] = h % 360 + @attrs[:saturation] = s * 100 + @attrs[:lightness] = l * 100 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/function.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/function.rb new file mode 100644 index 0000000000..f0f59a258a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/function.rb @@ -0,0 +1,19 @@ +module Sass::Script::Value + # A SassScript object representing a function. + class Function < Callable + # Constructs a Function value for use in SassScript. + # + # @param function [Sass::Callable] The callable to be used when the + # function is invoked. + def initialize(function) + unless function.type == "function" + raise ArgumentError.new("A callable of type function was expected.") + end + super + end + + def to_sass + %{get-function("#{value.name}")} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/helpers.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/helpers.rb new file mode 100644 index 0000000000..dcde48750e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/helpers.rb @@ -0,0 +1,298 @@ +module Sass::Script::Value + # Provides helper functions for creating sass values from within ruby methods. + # @since `3.3.0` + module Helpers + # Construct a Sass Boolean. + # + # @param value [Object] A ruby object that will be tested for truthiness. + # @return [Sass::Script::Value::Bool] whether the ruby value is truthy. + def bool(value) + Bool.new(value) + end + + # Construct a Sass Color from a hex color string. + # + # @param value [::String] A string representing a hex color. + # The leading hash ("#") is optional. + # @param alpha [::Number] The alpha channel. A number between 0 and 1. + # @return [Sass::Script::Value::Color] the color object + def hex_color(value, alpha = nil) + Color.from_hex(value, alpha) + end + + # Construct a Sass Color from hsl values. + # + # @param hue [::Number] The hue of the color in degrees. + # A non-negative number, usually less than 360. + # @param saturation [::Number] The saturation of the color. + # Must be between 0 and 100 inclusive. + # @param lightness [::Number] The lightness of the color. + # Must be between 0 and 100 inclusive. + # @param alpha [::Number] The alpha channel. A number between 0 and 1. + # + # @return [Sass::Script::Value::Color] the color object + def hsl_color(hue, saturation, lightness, alpha = nil) + attrs = {:hue => hue, :saturation => saturation, :lightness => lightness} + attrs[:alpha] = alpha if alpha + Color.new(attrs) + end + + # Construct a Sass Color from rgb values. + # + # @param red [::Number] The red component. Must be between 0 and 255 inclusive. + # @param green [::Number] The green component. Must be between 0 and 255 inclusive. + # @param blue [::Number] The blue component. Must be between 0 and 255 inclusive. + # @param alpha [::Number] The alpha channel. A number between 0 and 1. + # + # @return [Sass::Script::Value::Color] the color object + def rgb_color(red, green, blue, alpha = nil) + attrs = {:red => red, :green => green, :blue => blue} + attrs[:alpha] = alpha if alpha + Color.new(attrs) + end + + # Construct a Sass Number from a ruby number. + # + # @param number [::Number] A numeric value. + # @param unit_string [::String] A unit string of the form + # `numeral_unit1 * numeral_unit2 ... / denominator_unit1 * denominator_unit2 ...` + # this is the same format that is returned by + # {Sass::Script::Value::Number#unit_str the `unit_str` method} + # + # @see Sass::Script::Value::Number#unit_str + # + # @return [Sass::Script::Value::Number] The sass number representing the given ruby number. + def number(number, unit_string = nil) + Number.new(number, *parse_unit_string(unit_string)) + end + + # @overload list(*elements, separator:, bracketed: false) + # Create a space-separated list from the arguments given. + # @param elements [Array] Each argument will be a list element. + # @param separator [Symbol] Either :space or :comma. + # @param bracketed [Boolean] Whether the list uses square brackets. + # @return [Sass::Script::Value::List] The space separated list. + # + # @overload list(array, separator:, bracketed: false) + # Create a space-separated list from the array given. + # @param array [Array] A ruby array of Sass values + # to make into a list. + # @param separator [Symbol] Either :space or :comma. + # @param bracketed [Boolean] Whether the list uses square brackets. + # @return [Sass::Script::Value::List] The space separated list. + def list(*elements, separator: nil, bracketed: false) + # Support passing separator as the last value in elements for + # backwards-compatibility. + if separator.nil? + if elements.last.is_a?(Symbol) + separator = elements.pop + else + raise ArgumentError.new("A separator of :space or :comma must be specified.") + end + end + + if elements.size == 1 && elements.first.is_a?(Array) + elements = elements.first + end + Sass::Script::Value::List.new(elements, separator: separator, bracketed: bracketed) + end + + # Construct a Sass map. + # + # @param hash [Hash] A Ruby map to convert to a Sass map. + # @return [Sass::Script::Value::Map] The map. + def map(hash) + Map.new(hash) + end + + # Create a sass null value. + # + # @return [Sass::Script::Value::Null] + def null + Sass::Script::Value::Null.new + end + + # Create a quoted string. + # + # @param str [::String] A ruby string. + # @return [Sass::Script::Value::String] A quoted string. + def quoted_string(str) + Sass::Script::String.new(str, :string) + end + + # Create an unquoted string. + # + # @param str [::String] A ruby string. + # @return [Sass::Script::Value::String] An unquoted string. + def unquoted_string(str) + Sass::Script::String.new(str, :identifier) + end + alias_method :identifier, :unquoted_string + + # Parses a user-provided selector. + # + # @param value [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector to parse. This can be either a string, a list of + # strings, or a list of lists of strings as returned by `&`. + # @param name [Symbol, nil] + # If provided, the name of the selector argument. This is used + # for error reporting. + # @param allow_parent_ref [Boolean] + # Whether the parsed selector should allow parent references. + # @return [Sass::Selector::CommaSequence] The parsed selector. + # @throw [ArgumentError] if the parse failed for any reason. + def parse_selector(value, name = nil, allow_parent_ref = false) + str = normalize_selector(value, name) + begin + Sass::SCSS::StaticParser.new(str, nil, nil, 1, 1, allow_parent_ref).parse_selector + rescue Sass::SyntaxError => e + err = "#{value.inspect} is not a valid selector: #{e}" + err = "$#{name.to_s.tr('_', '-')}: #{err}" if name + raise ArgumentError.new(err) + end + end + + # Parses a user-provided complex selector. + # + # A complex selector can contain combinators but cannot contain commas. + # + # @param value [Sass::Script::Value::String, Sass::Script::Value::List] + # The selector to parse. This can be either a string or a list of + # strings. + # @param name [Symbol, nil] + # If provided, the name of the selector argument. This is used + # for error reporting. + # @param allow_parent_ref [Boolean] + # Whether the parsed selector should allow parent references. + # @return [Sass::Selector::Sequence] The parsed selector. + # @throw [ArgumentError] if the parse failed for any reason. + def parse_complex_selector(value, name = nil, allow_parent_ref = false) + selector = parse_selector(value, name, allow_parent_ref) + return seq if selector.members.length == 1 + + err = "#{value.inspect} is not a complex selector" + err = "$#{name.to_s.tr('_', '-')}: #{err}" if name + raise ArgumentError.new(err) + end + + # Parses a user-provided compound selector. + # + # A compound selector cannot contain combinators or commas. + # + # @param value [Sass::Script::Value::String] The selector to parse. + # @param name [Symbol, nil] + # If provided, the name of the selector argument. This is used + # for error reporting. + # @param allow_parent_ref [Boolean] + # Whether the parsed selector should allow parent references. + # @return [Sass::Selector::SimpleSequence] The parsed selector. + # @throw [ArgumentError] if the parse failed for any reason. + def parse_compound_selector(value, name = nil, allow_parent_ref = false) + assert_type value, :String, name + selector = parse_selector(value, name, allow_parent_ref) + seq = selector.members.first + sseq = seq.members.first + if selector.members.length == 1 && seq.members.length == 1 && + sseq.is_a?(Sass::Selector::SimpleSequence) + return sseq + end + + err = "#{value.inspect} is not a compound selector" + err = "$#{name.to_s.tr('_', '-')}: #{err}" if name + raise ArgumentError.new(err) + end + + # Returns true when the literal is a string containing a calc(). + # + # Use \{#special_number?} in preference to this. + # + # @param literal [Sass::Script::Value::Base] The value to check + # @return Boolean + def calc?(literal) + literal.is_a?(Sass::Script::Value::String) && literal.value =~ /calc\(/ + end + + # Returns true when the literal is a string containing a var(). + # + # @param literal [Sass::Script::Value::Base] The value to check + # @return Boolean + def var?(literal) + literal.is_a?(Sass::Script::Value::String) && literal.value =~ /var\(/ + end + + # Returns whether the literal is a special CSS value that may evaluate to a + # number, such as `calc()` or `var()`. + # + # @param literal [Sass::Script::Value::Base] The value to check + # @return Boolean + def special_number?(literal) + literal.is_a?(Sass::Script::Value::String) && literal.value =~ /(calc|var)\(/ + end + + private + + # Converts a user-provided selector into string form or throws an + # ArgumentError if it's in an invalid format. + def normalize_selector(value, name) + if (str = selector_to_str(value)) + return str + end + + err = "#{value.inspect} is not a valid selector: it must be a string,\n" + + "a list of strings, or a list of lists of strings" + err = "$#{name.to_s.tr('_', '-')}: #{err}" if name + raise ArgumentError.new(err) + end + + # Converts a user-provided selector into string form or returns + # `nil` if it's in an invalid format. + def selector_to_str(value) + return value.value if value.is_a?(Sass::Script::String) + return unless value.is_a?(Sass::Script::List) + + if value.separator == :comma + return value.to_a.map do |complex| + next complex.value if complex.is_a?(Sass::Script::String) + return unless complex.is_a?(Sass::Script::List) && complex.separator == :space + return unless (str = selector_to_str(complex)) + str + end.join(', ') + end + + value.to_a.map do |compound| + return unless compound.is_a?(Sass::Script::String) + compound.value + end.join(' ') + end + + # @private + VALID_UNIT = /#{Sass::SCSS::RX::NMSTART}#{Sass::SCSS::RX::NMCHAR}|%*/ + + # @example + # parse_unit_string("em*px/in*%") # => [["em", "px], ["in", "%"]] + # + # @param unit_string [String] A string adhering to the output of a number with complex + # units. E.g. "em*px/in*%" + # @return [Array>] A list of numerator units and a list of denominator units. + def parse_unit_string(unit_string) + denominator_units = numerator_units = Sass::Script::Value::Number::NO_UNITS + return numerator_units, denominator_units unless unit_string && unit_string.length > 0 + num_over_denominator = unit_string.split(%r{ */ *}) + unless (1..2).include?(num_over_denominator.size) + raise ArgumentError.new("Malformed unit string: #{unit_string}") + end + numerator_units = num_over_denominator[0].split(/ *\* */) + denominator_units = (num_over_denominator[1] || "").split(/ *\* */) + [[numerator_units, "numerator"], [denominator_units, "denominator"]].each do |units, name| + if unit_string =~ %r{/} && units.size == 0 + raise ArgumentError.new("Malformed unit string: #{unit_string}") + end + if units.any? {|unit| unit !~ VALID_UNIT} + raise ArgumentError.new("Malformed #{name} in unit string: #{unit_string}") + end + end + [numerator_units, denominator_units] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/list.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/list.rb new file mode 100644 index 0000000000..689fdd0e0d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/list.rb @@ -0,0 +1,134 @@ +module Sass::Script::Value + # A SassScript object representing a CSS list. + # This includes both comma-separated lists and space-separated lists. + class List < Base + # The Ruby array containing the contents of the list. + # + # @return [Array] + attr_reader :value + alias_method :to_a, :value + + # The operator separating the values of the list. + # Either `:comma` or `:space`. + # + # @return [Symbol] + attr_reader :separator + + # Whether the list is surrounded by square brackets. + # + # @return [Boolean] + attr_reader :bracketed + + # Creates a new list. + # + # @param value [Array] See \{#value} + # @param separator [Symbol] See \{#separator} + # @param bracketed [Boolean] See \{#bracketed} + def initialize(value, separator: nil, bracketed: false) + super(value) + @separator = separator + @bracketed = bracketed + end + + # @see Value#options= + def options=(options) + super + value.each {|v| v.options = options} + end + + # @see Value#eq + def eq(other) + Sass::Script::Value::Bool.new( + other.is_a?(List) && value == other.value && + separator == other.separator && bracketed == other.bracketed) + end + + def hash + @hash ||= [value, separator, bracketed].hash + end + + # @see Value#to_s + def to_s(opts = {}) + if !bracketed && value.empty? + raise Sass::SyntaxError.new("#{inspect} isn't a valid CSS value.") + end + + members = value. + reject {|e| e.is_a?(Null) || e.is_a?(List) && e.value.empty?}. + map {|e| e.to_s(opts)} + + contents = members.join(sep_str) + bracketed ? "[#{contents}]" : contents + end + + # @see Value#to_sass + def to_sass(opts = {}) + return bracketed ? "[]" : "()" if value.empty? + members = value.map do |v| + if element_needs_parens?(v) + "(#{v.to_sass(opts)})" + else + v.to_sass(opts) + end + end + + if separator == :comma && members.length == 1 + return "#{bracketed ? '[' : '('}#{members.first},#{bracketed ? ']' : ')'}" + end + + contents = members.join(sep_str(nil)) + bracketed ? "[#{contents}]" : contents + end + + # @see Value#to_h + def to_h + return {} if value.empty? + super + end + + # @see Value#inspect + def inspect + (bracketed ? '[' : '(') + + value.map {|e| e.inspect}.join(sep_str(nil)) + + (bracketed ? ']' : ')') + end + + # Asserts an index is within the list. + # + # @private + # + # @param list [Sass::Script::Value::List] The list for which the index should be checked. + # @param n [Sass::Script::Value::Number] The index being checked. + def self.assert_valid_index(list, n) + if !n.int? || n.to_i == 0 + raise ArgumentError.new("List index #{n} must be a non-zero integer") + elsif list.to_a.size == 0 + raise ArgumentError.new("List index is #{n} but list has no items") + elsif n.to_i.abs > (size = list.to_a.size) + raise ArgumentError.new( + "List index is #{n} but list is only #{size} item#{'s' if size != 1} long") + end + end + + private + + def element_needs_parens?(element) + if element.is_a?(List) + return false if element.value.length < 2 + return false if element.bracketed + precedence = Sass::Script::Parser.precedence_of(separator || :space) + return Sass::Script::Parser.precedence_of(element.separator || :space) <= precedence + end + + return false unless separator == :space + return false unless element.is_a?(Sass::Script::Tree::UnaryOperation) + element.operator == :minus || element.operator == :plus + end + + def sep_str(opts = options) + return ' ' if separator == :space + return ',' if opts && opts[:style] == :compressed + ', ' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/map.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/map.rb new file mode 100644 index 0000000000..2d1c6a3642 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/map.rb @@ -0,0 +1,70 @@ +module Sass::Script::Value + # A SassScript object representing a map from keys to values. Both keys and + # values can be any SassScript object. + class Map < Base + # The Ruby hash containing the contents of this map. + # + # @return [Hash] + attr_reader :value + alias_method :to_h, :value + + # Creates a new map. + # + # @param hash [Hash] + def initialize(hash) + super(hash) + end + + # @see Value#options= + def options=(options) + super + value.each do |k, v| + k.options = options + v.options = options + end + end + + # @see Value#separator + def separator + :comma unless value.empty? + end + + # @see Value#to_a + def to_a + value.map do |k, v| + list = List.new([k, v], separator: :space) + list.options = options + list + end + end + + # @see Value#eq + def eq(other) + Bool.new(other.is_a?(Map) && value == other.value) + end + + def hash + @hash ||= value.hash + end + + # @see Value#to_s + def to_s(opts = {}) + raise Sass::SyntaxError.new("#{inspect} isn't a valid CSS value.") + end + + def to_sass(opts = {}) + return "()" if value.empty? + + to_sass = lambda do |value| + if value.is_a?(List) && value.separator == :comma + "(#{value.to_sass(opts)})" + else + value.to_sass(opts) + end + end + + "(#{value.map {|(k, v)| "#{to_sass[k]}: #{to_sass[v]}"}.join(', ')})" + end + alias_method :inspect, :to_sass + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/null.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/null.rb new file mode 100644 index 0000000000..f6d573b7d7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/null.rb @@ -0,0 +1,44 @@ +module Sass::Script::Value + # A SassScript object representing a null value. + class Null < Base + # The null value in SassScript. + # + # This is assigned before new is overridden below so that we use the default implementation. + NULL = new(nil) + + # We override object creation so that users of the core API + # will not need to know that null is a specific constant. + # + # @private + # @return [Null] the {NULL} constant. + def self.new + NULL + end + + # @return [Boolean] `false` (the Ruby boolean value) + def to_bool + false + end + + # @return [Boolean] `true` + def null? + true + end + + # @return [String] '' (An empty string) + def to_s(opts = {}) + '' + end + + def to_sass(opts = {}) + 'null' + end + + # Returns a string representing a null value. + # + # @return [String] + def inspect + 'null' + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/number.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/number.rb new file mode 100644 index 0000000000..9c2139369f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/number.rb @@ -0,0 +1,564 @@ +module Sass::Script::Value + # A SassScript object representing a number. + # SassScript numbers can have decimal values, + # and can also have units. + # For example, `12`, `1px`, and `10.45em` + # are all valid values. + # + # Numbers can also have more complex units, such as `1px*em/in`. + # These cannot be inputted directly in Sass code at the moment. + class Number < Base + # The Ruby value of the number. + # + # @return [Numeric] + attr_reader :value + + # A list of units in the numerator of the number. + # For example, `1px*em/in*cm` would return `["px", "em"]` + # @return [Array] + attr_reader :numerator_units + + # A list of units in the denominator of the number. + # For example, `1px*em/in*cm` would return `["in", "cm"]` + # @return [Array] + attr_reader :denominator_units + + # The original representation of this number. + # For example, although the result of `1px/2px` is `0.5`, + # the value of `#original` is `"1px/2px"`. + # + # This is only non-nil when the original value should be used as the CSS value, + # as in `font: 1px/2px`. + # + # @return [Boolean, nil] + attr_accessor :original + + def self.precision + Thread.current[:sass_numeric_precision] || Thread.main[:sass_numeric_precision] || 10 + end + + # Sets the number of digits of precision + # For example, if this is `3`, + # `3.1415926` will be printed as `3.142`. + # The numeric precision is stored as a thread local for thread safety reasons. + # To set for all threads, be sure to set the precision on the main thread. + def self.precision=(digits) + Thread.current[:sass_numeric_precision] = digits.round + Thread.current[:sass_numeric_precision_factor] = nil + Thread.current[:sass_numeric_epsilon] = nil + end + + # the precision factor used in numeric output + # it is derived from the `precision` method. + def self.precision_factor + Thread.current[:sass_numeric_precision_factor] ||= 10.0**precision + end + + # Used in checking equality of floating point numbers. Any + # numbers within an `epsilon` of each other are considered functionally equal. + # The value for epsilon is one tenth of the current numeric precision. + def self.epsilon + Thread.current[:sass_numeric_epsilon] ||= 1 / (precision_factor * 10) + end + + # Used so we don't allocate two new arrays for each new number. + NO_UNITS = [] + + # @param value [Numeric] The value of the number + # @param numerator_units [::String, Array<::String>] See \{#numerator\_units} + # @param denominator_units [::String, Array<::String>] See \{#denominator\_units} + def initialize(value, numerator_units = NO_UNITS, denominator_units = NO_UNITS) + numerator_units = [numerator_units] if numerator_units.is_a?(::String) + denominator_units = [denominator_units] if denominator_units.is_a?(::String) + super(value) + @numerator_units = numerator_units + @denominator_units = denominator_units + @options = nil + normalize! + end + + # The SassScript `+` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Adds the two numbers together, converting units if possible. + # + # {Color} + # : Adds this number to each of the RGB color channels. + # + # {Value} + # : See {Value::Base#plus}. + # + # @param other [Value] The right-hand side of the operator + # @return [Value] The result of the operation + # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units + def plus(other) + if other.is_a? Number + operate(other, :+) + elsif other.is_a?(Color) + other.plus(self) + else + super + end + end + + # The SassScript binary `-` operation (e.g. `$a - $b`). + # Its functionality depends on the type of its argument: + # + # {Number} + # : Subtracts this number from the other, converting units if possible. + # + # {Value} + # : See {Value::Base#minus}. + # + # @param other [Value] The right-hand side of the operator + # @return [Value] The result of the operation + # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units + def minus(other) + if other.is_a? Number + operate(other, :-) + else + super + end + end + + # The SassScript unary `+` operation (e.g. `+$a`). + # + # @return [Number] The value of this number + def unary_plus + self + end + + # The SassScript unary `-` operation (e.g. `-$a`). + # + # @return [Number] The negative value of this number + def unary_minus + Number.new(-value, @numerator_units, @denominator_units) + end + + # The SassScript `*` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Multiplies the two numbers together, converting units appropriately. + # + # {Color} + # : Multiplies each of the RGB color channels by this number. + # + # @param other [Number, Color] The right-hand side of the operator + # @return [Number, Color] The result of the operation + # @raise [NoMethodError] if `other` is an invalid type + def times(other) + if other.is_a? Number + operate(other, :*) + elsif other.is_a? Color + other.times(self) + else + raise NoMethodError.new(nil, :times) + end + end + + # The SassScript `/` operation. + # Its functionality depends on the type of its argument: + # + # {Number} + # : Divides this number by the other, converting units appropriately. + # + # {Value} + # : See {Value::Base#div}. + # + # @param other [Value] The right-hand side of the operator + # @return [Value] The result of the operation + def div(other) + if other.is_a? Number + res = operate(other, :/) + if original && other.original + res.original = "#{original}/#{other.original}" + end + res + else + super + end + end + + # The SassScript `%` operation. + # + # @param other [Number] The right-hand side of the operator + # @return [Number] This number modulo the other + # @raise [NoMethodError] if `other` is an invalid type + # @raise [Sass::UnitConversionError] if `other` has incompatible units + def mod(other) + if other.is_a?(Number) + return Number.new(Float::NAN) if other.value == 0 + operate(other, :%) + else + raise NoMethodError.new(nil, :mod) + end + end + + # The SassScript `==` operation. + # + # @param other [Value] The right-hand side of the operator + # @return [Boolean] Whether this number is equal to the other object + def eq(other) + return Bool::FALSE unless other.is_a?(Sass::Script::Value::Number) + this = self + begin + if unitless? + this = this.coerce(other.numerator_units, other.denominator_units) + else + other = other.coerce(@numerator_units, @denominator_units) + end + rescue Sass::UnitConversionError + return Bool::FALSE + end + Bool.new(basically_equal?(this.value, other.value)) + end + + def hash + [value, numerator_units, denominator_units].hash + end + + # Hash-equality works differently than `==` equality for numbers. + # Hash-equality must be transitive, so it just compares the exact value, + # numerator units, and denominator units. + def eql?(other) + basically_equal?(value, other.value) && numerator_units == other.numerator_units && + denominator_units == other.denominator_units + end + + # The SassScript `>` operation. + # + # @param other [Number] The right-hand side of the operator + # @return [Boolean] Whether this number is greater than the other + # @raise [NoMethodError] if `other` is an invalid type + def gt(other) + raise NoMethodError.new(nil, :gt) unless other.is_a?(Number) + operate(other, :>) + end + + # The SassScript `>=` operation. + # + # @param other [Number] The right-hand side of the operator + # @return [Boolean] Whether this number is greater than or equal to the other + # @raise [NoMethodError] if `other` is an invalid type + def gte(other) + raise NoMethodError.new(nil, :gte) unless other.is_a?(Number) + operate(other, :>=) + end + + # The SassScript `<` operation. + # + # @param other [Number] The right-hand side of the operator + # @return [Boolean] Whether this number is less than the other + # @raise [NoMethodError] if `other` is an invalid type + def lt(other) + raise NoMethodError.new(nil, :lt) unless other.is_a?(Number) + operate(other, :<) + end + + # The SassScript `<=` operation. + # + # @param other [Number] The right-hand side of the operator + # @return [Boolean] Whether this number is less than or equal to the other + # @raise [NoMethodError] if `other` is an invalid type + def lte(other) + raise NoMethodError.new(nil, :lte) unless other.is_a?(Number) + operate(other, :<=) + end + + # @return [String] The CSS representation of this number + # @raise [Sass::SyntaxError] if this number has units that can't be used in CSS + # (e.g. `px*in`) + def to_s(opts = {}) + return original if original + raise Sass::SyntaxError.new("#{inspect} isn't a valid CSS value.") unless legal_units? + inspect + end + + # Returns a readable representation of this number. + # + # This representation is valid CSS (and valid SassScript) + # as long as there is only one unit. + # + # @return [String] The representation + def inspect(opts = {}) + return original if original + + value = self.class.round(self.value) + str = value.to_s + + # Ruby will occasionally print in scientific notation if the number is + # small enough. That's technically valid CSS, but it's not well-supported + # and confusing. + str = ("%0.#{self.class.precision}f" % value).gsub(/0*$/, '') if str.include?('e') + + # Sometimes numeric formatting will result in a decimal number with a trailing zero (x.0) + if str =~ /(.*)\.0$/ + str = $1 + end + + # We omit a leading zero before the decimal point in compressed mode. + if @options && options[:style] == :compressed + str.sub!(/^(-)?0\./, '\1.') + end + + unitless? ? str : "#{str}#{unit_str}" + end + alias_method :to_sass, :inspect + + # @return [Integer] The integer value of the number + # @raise [Sass::SyntaxError] if the number isn't an integer + def to_i + super unless int? + value.to_i + end + + # @return [Boolean] Whether or not this number is an integer. + def int? + basically_equal?(value % 1, 0.0) + end + + # @return [Boolean] Whether or not this number has no units. + def unitless? + @numerator_units.empty? && @denominator_units.empty? + end + + # Checks whether the number has the numerator unit specified. + # + # @example + # number = Sass::Script::Value::Number.new(10, "px") + # number.is_unit?("px") => true + # number.is_unit?(nil) => false + # + # @param unit [::String, nil] The unit the number should have or nil if the number + # should be unitless. + # @see Number#unitless? The unitless? method may be more readable. + def is_unit?(unit) + if unit + denominator_units.size == 0 && numerator_units.size == 1 && numerator_units.first == unit + else + unitless? + end + end + + # @return [Boolean] Whether or not this number has units that can be represented in CSS + # (that is, zero or one \{#numerator\_units}). + def legal_units? + (@numerator_units.empty? || @numerator_units.size == 1) && @denominator_units.empty? + end + + # Returns this number converted to other units. + # The conversion takes into account the relationship between e.g. mm and cm, + # as well as between e.g. in and cm. + # + # If this number has no units, it will simply return itself + # with the given units. + # + # An incompatible coercion, e.g. between px and cm, will raise an error. + # + # @param num_units [Array] The numerator units to coerce this number into. + # See {\#numerator\_units} + # @param den_units [Array] The denominator units to coerce this number into. + # See {\#denominator\_units} + # @return [Number] The number with the new units + # @raise [Sass::UnitConversionError] if the given units are incompatible with the number's + # current units + def coerce(num_units, den_units) + Number.new(if unitless? + value + else + value * coercion_factor(@numerator_units, num_units) / + coercion_factor(@denominator_units, den_units) + end, num_units, den_units) + end + + # @param other [Number] A number to decide if it can be compared with this number. + # @return [Boolean] Whether or not this number can be compared with the other. + def comparable_to?(other) + operate(other, :+) + true + rescue Sass::UnitConversionError + false + end + + # Returns a human readable representation of the units in this number. + # For complex units this takes the form of: + # numerator_unit1 * numerator_unit2 / denominator_unit1 * denominator_unit2 + # @return [String] a string that represents the units in this number + def unit_str + rv = @numerator_units.sort.join("*") + if @denominator_units.any? + rv << "/" + rv << @denominator_units.sort.join("*") + end + rv + end + + private + + # @private + # @see Sass::Script::Number.basically_equal? + def basically_equal?(num1, num2) + self.class.basically_equal?(num1, num2) + end + + # Checks whether two numbers are within an epsilon of each other. + # @return [Boolean] + def self.basically_equal?(num1, num2) + (num1 - num2).abs < epsilon + end + + # @private + def self.round(num) + if num.is_a?(Float) && (num.infinite? || num.nan?) + num + elsif basically_equal?(num % 1, 0.0) + num.round + else + ((num * precision_factor).round / precision_factor).to_f + end + end + + OPERATIONS = [:+, :-, :<=, :<, :>, :>=, :%] + + def operate(other, operation) + this = self + if OPERATIONS.include?(operation) + if unitless? + this = this.coerce(other.numerator_units, other.denominator_units) + else + other = other.coerce(@numerator_units, @denominator_units) + end + end + # avoid integer division + value = :/ == operation ? this.value.to_f : this.value + result = value.send(operation, other.value) + + if result.is_a?(Numeric) + Number.new(result, *compute_units(this, other, operation)) + else # Boolean op + Bool.new(result) + end + end + + def coercion_factor(from_units, to_units) + # get a list of unmatched units + from_units, to_units = sans_common_units(from_units, to_units) + + if from_units.size != to_units.size || !convertable?(from_units | to_units) + raise Sass::UnitConversionError.new( + "Incompatible units: '#{from_units.join('*')}' and '#{to_units.join('*')}'.") + end + + from_units.zip(to_units).inject(1) {|m, p| m * conversion_factor(p[0], p[1])} + end + + def compute_units(this, other, operation) + case operation + when :* + [this.numerator_units + other.numerator_units, + this.denominator_units + other.denominator_units] + when :/ + [this.numerator_units + other.denominator_units, + this.denominator_units + other.numerator_units] + else + [this.numerator_units, this.denominator_units] + end + end + + def normalize! + return if unitless? + @numerator_units, @denominator_units = + sans_common_units(@numerator_units, @denominator_units) + + @denominator_units.each_with_index do |d, i| + next unless convertable?(d) && (u = @numerator_units.find {|n| convertable?([n, d])}) + @value /= conversion_factor(d, u) + @denominator_units.delete_at(i) + @numerator_units.delete_at(@numerator_units.index(u)) + end + end + + # This is the source data for all the unit logic. It's pre-processed to make + # it efficient to figure out whether a set of units is mutually compatible + # and what the conversion ratio is between two units. + # + # These come from http://www.w3.org/TR/2012/WD-css3-values-20120308/. + relative_sizes = [ + { + 'in' => Rational(1), + 'cm' => Rational(1, 2.54), + 'pc' => Rational(1, 6), + 'mm' => Rational(1, 25.4), + 'q' => Rational(1, 101.6), + 'pt' => Rational(1, 72), + 'px' => Rational(1, 96) + }, + { + 'deg' => Rational(1, 360), + 'grad' => Rational(1, 400), + 'rad' => Rational(1, 2 * Math::PI), + 'turn' => Rational(1) + }, + { + 's' => Rational(1), + 'ms' => Rational(1, 1000) + }, + { + 'Hz' => Rational(1), + 'kHz' => Rational(1000) + }, + { + 'dpi' => Rational(1), + 'dpcm' => Rational(254, 100), + 'dppx' => Rational(96) + } + ] + + # A hash from each known unit to the set of units that it's mutually + # convertible with. + MUTUALLY_CONVERTIBLE = {} + relative_sizes.map do |values| + set = values.keys.to_set + values.keys.each {|name| MUTUALLY_CONVERTIBLE[name] = set} + end + + # A two-dimensional hash from two units to the conversion ratio between + # them. Multiply `X` by `CONVERSION_TABLE[X][Y]` to convert it to `Y`. + CONVERSION_TABLE = {} + relative_sizes.each do |values| + values.each do |(name1, value1)| + CONVERSION_TABLE[name1] ||= {} + values.each do |(name2, value2)| + value = value1 / value2 + CONVERSION_TABLE[name1][name2] = value.denominator == 1 ? value.to_i : value.to_f + end + end + end + + def conversion_factor(from_unit, to_unit) + CONVERSION_TABLE[from_unit][to_unit] + end + + def convertable?(units) + units = Array(units).to_set + return true if units.empty? + return false unless (mutually_convertible = MUTUALLY_CONVERTIBLE[units.first]) + units.subset?(mutually_convertible) + end + + def sans_common_units(units1, units2) + units2 = units2.dup + # Can't just use -, because we want px*px to coerce properly to px*mm + units1 = units1.map do |u| + j = units2.index(u) + next u unless j + units2.delete_at(j) + nil + end + units1.compact! + return units1, units2 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/string.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/string.rb new file mode 100644 index 0000000000..9c9b088f35 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/script/value/string.rb @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +module Sass::Script::Value + # A SassScript object representing a CSS string *or* a CSS identifier. + class String < Base + @@interpolation_deprecation = Sass::Deprecation.new + + # The Ruby value of the string. + # + # @return [String] + attr_reader :value + + # Whether this is a CSS string or a CSS identifier. + # The difference is that strings are written with double-quotes, + # while identifiers aren't. + # + # @return [Symbol] `:string` or `:identifier` + attr_reader :type + + def self.value(contents) + contents.gsub("\\\n", "").gsub(/\\(?:([0-9a-fA-F]{1,6})\s?|(.))/) do + next $2 if $2 + # Handle unicode escapes as per CSS Syntax Level 3 section 4.3.8. + code_point = $1.to_i(16) + if code_point == 0 || code_point > 0x10FFFF || + (code_point >= 0xD800 && code_point <= 0xDFFF) + '�' + else + [code_point].pack("U") + end + end + end + + # Returns the quoted string representation of `contents`. + # + # @options opts :quote [String] + # The preferred quote style for quoted strings. If `:none`, strings are + # always emitted unquoted. If `nil`, quoting is determined automatically. + # @options opts :sass [String] + # Whether to quote strings for Sass source, as opposed to CSS. Defaults to `false`. + def self.quote(contents, opts = {}) + quote = opts[:quote] + + # Short-circuit if there are no characters that need quoting. + unless contents =~ /[\n\\"']|\#\{/ + quote ||= '"' + return "#{quote}#{contents}#{quote}" + end + + if quote.nil? + if contents.include?('"') + if contents.include?("'") + quote = '"' + else + quote = "'" + end + else + quote = '"' + end + end + + # Replace single backslashes with multiples. + contents = contents.gsub("\\", "\\\\\\\\") + + # Escape interpolation. + contents = contents.gsub('#{', "\\\#{") if opts[:sass] + + if quote == '"' + contents = contents.gsub('"', "\\\"") + else + contents = contents.gsub("'", "\\'") + end + + contents = contents.gsub(/\n(?![a-fA-F0-9\s])/, "\\a").gsub("\n", "\\a ") + "#{quote}#{contents}#{quote}" + end + + # Creates a new string. + # + # @param value [String] See \{#value} + # @param type [Symbol] See \{#type} + # @param deprecated_interp_equivalent [String?] + # If this was created via a potentially-deprecated string interpolation, + # this is the replacement expression that should be suggested to the user. + def initialize(value, type = :identifier, deprecated_interp_equivalent = nil) + super(value) + @type = type + @deprecated_interp_equivalent = deprecated_interp_equivalent + end + + # @see Value#plus + def plus(other) + other_value = if other.is_a?(Sass::Script::Value::String) + other.value + else + other.to_s(:quote => :none) + end + Sass::Script::Value::String.new(value + other_value, type) + end + + # @see Value#to_s + def to_s(opts = {}) + return @value.gsub(/\n\s*/, ' ') if opts[:quote] == :none || @type == :identifier + String.quote(value, opts) + end + + # @see Value#to_sass + def to_sass(opts = {}) + to_s(opts.merge(:sass => true)) + end + + def separator + check_deprecated_interp + super + end + + def to_a + check_deprecated_interp + super + end + + # Prints a warning if this string was created using potentially-deprecated + # interpolation. + def check_deprecated_interp + return unless @deprecated_interp_equivalent + + @@interpolation_deprecation.warn(source_range.file, source_range.start_pos.line, <, nil] + # The interpolated identifier, or nil if none could be parsed + def parse_interp_ident + init_scanner! + interp_ident + end + + # Parses a supports clause for an @import directive + def parse_supports_clause + init_scanner! + ss + clause = supports_clause + ss + clause + end + + # Parses a media query list. + # + # @return [Sass::Media::QueryList] The parsed query list + # @raise [Sass::SyntaxError] if there's a syntax error in the query list, + # or if it doesn't take up the entire input string. + def parse_media_query_list + init_scanner! + ql = media_query_list + expected("media query list") unless ql && @scanner.eos? + ql + end + + # Parses an at-root query. + # + # @return [Array] The interpolated query. + # @raise [Sass::SyntaxError] if there's a syntax error in the query, + # or if it doesn't take up the entire input string. + def parse_at_root_query + init_scanner! + query = at_root_query + expected("@at-root query list") unless query && @scanner.eos? + query + end + + # Parses a supports query condition. + # + # @return [Sass::Supports::Condition] The parsed condition + # @raise [Sass::SyntaxError] if there's a syntax error in the condition, + # or if it doesn't take up the entire input string. + def parse_supports_condition + init_scanner! + condition = supports_condition + expected("supports condition") unless condition && @scanner.eos? + condition + end + + # Parses a custom property value. + # + # @return [Array] The interpolated value. + # @raise [Sass::SyntaxError] if there's a syntax error in the value, + # or if it doesn't take up the entire input string. + def parse_declaration_value + init_scanner! + value = declaration_value + expected('"}"') unless value && @scanner.eos? + value + end + + private + + include Sass::SCSS::RX + + def source_position + Sass::Source::Position.new(@line, @offset) + end + + def range(start_pos, end_pos = source_position) + Sass::Source::Range.new(start_pos, end_pos, @filename, @importer) + end + + def init_scanner! + @scanner = + if @template.is_a?(StringScanner) + @template + else + Sass::Util::MultibyteStringScanner.new(@template.tr("\r", "")) + end + end + + def stylesheet + node = node(Sass::Tree::RootNode.new(@scanner.string), source_position) + block_contents(node, :stylesheet) {s(node)} + end + + def s(node) + while tok(S) || tok(CDC) || tok(CDO) || (c = tok(SINGLE_LINE_COMMENT)) || (c = tok(COMMENT)) + next unless c + process_comment c, node + c = nil + end + true + end + + def ss + nil while tok(S) || tok(SINGLE_LINE_COMMENT) || tok(COMMENT) + true + end + + def ss_comments(node) + while tok(S) || (c = tok(SINGLE_LINE_COMMENT)) || (c = tok(COMMENT)) + next unless c + process_comment c, node + c = nil + end + + true + end + + def whitespace + return unless tok(S) || tok(SINGLE_LINE_COMMENT) || tok(COMMENT) + ss + end + + def process_comment(text, node) + silent = text =~ %r{\A//} + loud = !silent && text =~ %r{\A/[/*]!} + line = @line - text.count("\n") + comment_start = @scanner.pos - text.length + index_before_line = @scanner.string.rindex("\n", comment_start) || -1 + offset = comment_start - index_before_line + + if silent + value = [text.sub(%r{\A\s*//}, '/*').gsub(%r{^\s*//}, ' *') + ' */'] + else + value = Sass::Engine.parse_interp(text, line, offset, :filename => @filename) + line_before_comment = @scanner.string[index_before_line + 1...comment_start] + value.unshift(line_before_comment.gsub(/[^\s]/, ' ')) + end + + type = if silent + :silent + elsif loud + :loud + else + :normal + end + start_pos = Sass::Source::Position.new(line, offset) + comment = node(Sass::Tree::CommentNode.new(value, type), start_pos) + node << comment + end + + DIRECTIVES = Set[:mixin, :include, :function, :return, :debug, :warn, :for, + :each, :while, :if, :else, :extend, :import, :media, :charset, :content, + :_moz_document, :at_root, :error] + + PREFIXED_DIRECTIVES = Set[:supports] + + def directive + start_pos = source_position + return unless tok(/@/) + name = ident! + ss + + if (dir = special_directive(name, start_pos)) + return dir + elsif (dir = prefixed_directive(name, start_pos)) + return dir + end + + val = almost_any_value + val = val ? ["@#{name} "] + Sass::Util.strip_string_array(val) : ["@#{name}"] + directive_body(val, start_pos) + end + + def directive_body(value, start_pos) + node = Sass::Tree::DirectiveNode.new(value) + + if tok(/\{/) + node.has_children = true + block_contents(node, :directive) + tok!(/\}/) + end + + node(node, start_pos) + end + + def special_directive(name, start_pos) + sym = name.tr('-', '_').to_sym + DIRECTIVES.include?(sym) && send("#{sym}_directive", start_pos) + end + + def prefixed_directive(name, start_pos) + sym = deprefix(name).tr('-', '_').to_sym + PREFIXED_DIRECTIVES.include?(sym) && send("#{sym}_directive", name, start_pos) + end + + def mixin_directive(start_pos) + name = ident! + args, splat = sass_script(:parse_mixin_definition_arglist) + ss + block(node(Sass::Tree::MixinDefNode.new(name, args, splat), start_pos), :directive) + end + + def include_directive(start_pos) + name = ident! + args, keywords, splat, kwarg_splat = sass_script(:parse_mixin_include_arglist) + ss + include_node = node( + Sass::Tree::MixinNode.new(name, args, keywords, splat, kwarg_splat), start_pos) + if tok?(/\{/) + include_node.has_children = true + block(include_node, :directive) + else + include_node + end + end + + def content_directive(start_pos) + ss + node(Sass::Tree::ContentNode.new, start_pos) + end + + def function_directive(start_pos) + name = ident! + args, splat = sass_script(:parse_function_definition_arglist) + ss + block(node(Sass::Tree::FunctionNode.new(name, args, splat), start_pos), :function) + end + + def return_directive(start_pos) + node(Sass::Tree::ReturnNode.new(sass_script(:parse)), start_pos) + end + + def debug_directive(start_pos) + node(Sass::Tree::DebugNode.new(sass_script(:parse)), start_pos) + end + + def warn_directive(start_pos) + node(Sass::Tree::WarnNode.new(sass_script(:parse)), start_pos) + end + + def for_directive(start_pos) + tok!(/\$/) + var = ident! + ss + + tok!(/from/) + from = sass_script(:parse_until, Set["to", "through"]) + ss + + @expected = '"to" or "through"' + exclusive = (tok(/to/) || tok!(/through/)) == 'to' + to = sass_script(:parse) + ss + + block(node(Sass::Tree::ForNode.new(var, from, to, exclusive), start_pos), :directive) + end + + def each_directive(start_pos) + tok!(/\$/) + vars = [ident!] + ss + while tok(/,/) + ss + tok!(/\$/) + vars << ident! + ss + end + + tok!(/in/) + list = sass_script(:parse) + ss + + block(node(Sass::Tree::EachNode.new(vars, list), start_pos), :directive) + end + + def while_directive(start_pos) + expr = sass_script(:parse) + ss + block(node(Sass::Tree::WhileNode.new(expr), start_pos), :directive) + end + + def if_directive(start_pos) + expr = sass_script(:parse) + ss + node = block(node(Sass::Tree::IfNode.new(expr), start_pos), :directive) + pos = @scanner.pos + line = @line + ss + + else_block(node) || + begin + # Backtrack in case there are any comments we want to parse + @scanner.pos = pos + @line = line + node + end + end + + def else_block(node) + start_pos = source_position + return unless tok(/@else/) + ss + else_node = block( + node(Sass::Tree::IfNode.new((sass_script(:parse) if tok(/if/))), start_pos), + :directive) + node.add_else(else_node) + pos = @scanner.pos + line = @line + ss + + else_block(node) || + begin + # Backtrack in case there are any comments we want to parse + @scanner.pos = pos + @line = line + node + end + end + + def else_directive(start_pos) + err("Invalid CSS: @else must come after @if") + end + + def extend_directive(start_pos) + selector_start_pos = source_position + @expected = "selector" + selector = Sass::Util.strip_string_array(expr!(:almost_any_value)) + optional = tok(OPTIONAL) + ss + node(Sass::Tree::ExtendNode.new(selector, !!optional, range(selector_start_pos)), start_pos) + end + + def import_directive(start_pos) + values = [] + + loop do + values << expr!(:import_arg) + break if use_css_import? + break unless tok(/,/) + ss + end + + values + end + + def import_arg + start_pos = source_position + return unless (str = string) || (uri = tok?(/url\(/i)) + if uri + str = sass_script(:parse_string) + ss + supports = supports_clause + ss + media = media_query_list + ss + return node(Tree::CssImportNode.new(str, media.to_a, supports), start_pos) + end + ss + + supports = supports_clause + ss + media = media_query_list + if str =~ %r{^(https?:)?//} || media || supports || use_css_import? + return node( + Sass::Tree::CssImportNode.new( + Sass::Script::Value::String.quote(str), media.to_a, supports), start_pos) + end + + node(Sass::Tree::ImportNode.new(str.strip), start_pos) + end + + def use_css_import?; false; end + + def media_directive(start_pos) + block(node(Sass::Tree::MediaNode.new(expr!(:media_query_list).to_a), start_pos), :directive) + end + + # http://www.w3.org/TR/css3-mediaqueries/#syntax + def media_query_list + query = media_query + return unless query + queries = [query] + + ss + while tok(/,/) + ss; queries << expr!(:media_query) + end + ss + + Sass::Media::QueryList.new(queries) + end + + def media_query + if (ident1 = interp_ident) + ss + ident2 = interp_ident + ss + if ident2 && ident2.length == 1 && ident2[0].is_a?(String) && ident2[0].downcase == 'and' + query = Sass::Media::Query.new([], ident1, []) + else + if ident2 + query = Sass::Media::Query.new(ident1, ident2, []) + else + query = Sass::Media::Query.new([], ident1, []) + end + return query unless tok(/and/i) + ss + end + end + + if query + expr = expr!(:media_expr) + else + expr = media_expr + return unless expr + end + query ||= Sass::Media::Query.new([], [], []) + query.expressions << expr + + ss + while tok(/and/i) + ss; query.expressions << expr!(:media_expr) + end + + query + end + + def query_expr + interp = interpolation + return interp if interp + return unless tok(/\(/) + res = ['('] + ss + stop_at = Set[:single_eq, :lt, :lte, :gt, :gte] + res << sass_script(:parse_until, stop_at) + + if tok(/:/) + res << ': ' + ss + res << sass_script(:parse) + elsif comparison1 = tok(/=|[<>]=?/) + res << ' ' << comparison1 << ' ' + ss + res << sass_script(:parse_until, stop_at) + if ((comparison1 == ">" || comparison1 == ">=") && comparison2 = tok(/>=?/)) || + ((comparison1 == "<" || comparison1 == "<=") && comparison2 = tok(/<=?/)) + res << ' ' << comparison2 << ' ' + ss + res << sass_script(:parse_until, stop_at) + end + end + res << tok!(/\)/) + ss + res + end + + # Aliases allow us to use different descriptions if the same + # expression fails in different contexts. + alias_method :media_expr, :query_expr + alias_method :at_root_query, :query_expr + + def charset_directive(start_pos) + name = expr!(:string) + ss + node(Sass::Tree::CharsetNode.new(name), start_pos) + end + + # The document directive is specified in + # http://www.w3.org/TR/css3-conditional/, but Gecko allows the + # `url-prefix` and `domain` functions to omit quotation marks, contrary to + # the standard. + # + # We could parse all document directives according to Mozilla's syntax, + # but if someone's using e.g. @-webkit-document we don't want them to + # think WebKit works sans quotes. + def _moz_document_directive(start_pos) + res = ["@-moz-document "] + loop do + res << str {ss} << expr!(:moz_document_function) + if (c = tok(/,/)) + res << c + else + break + end + end + directive_body(res.flatten, start_pos) + end + + def moz_document_function + val = interp_uri || _interp_string(:url_prefix) || + _interp_string(:domain) || function(false) || interpolation + return unless val + ss + val + end + + def at_root_directive(start_pos) + if tok?(/\(/) && (expr = at_root_query) + return block(node(Sass::Tree::AtRootNode.new(expr), start_pos), :directive) + end + + at_root_node = node(Sass::Tree::AtRootNode.new, start_pos) + rule_node = ruleset + return block(at_root_node, :stylesheet) unless rule_node + at_root_node << rule_node + at_root_node + end + + def at_root_directive_list + return unless (first = ident) + arr = [first] + ss + while (e = ident) + arr << e + ss + end + arr + end + + def error_directive(start_pos) + node(Sass::Tree::ErrorNode.new(sass_script(:parse)), start_pos) + end + + # http://www.w3.org/TR/css3-conditional/ + def supports_directive(name, start_pos) + condition = expr!(:supports_condition) + node = Sass::Tree::SupportsNode.new(name, condition) + + tok!(/\{/) + node.has_children = true + block_contents(node, :directive) + tok!(/\}/) + + node(node, start_pos) + end + + def supports_clause + return unless tok(/supports\(/i) + ss + supports = import_supports_condition + ss + tok!(/\)/) + supports + end + + def supports_condition + supports_negation || supports_operator || supports_interpolation + end + + def import_supports_condition + supports_condition || supports_declaration + end + + def supports_negation + return unless tok(/not/i) + ss + Sass::Supports::Negation.new(expr!(:supports_condition_in_parens)) + end + + def supports_operator + cond = supports_condition_in_parens + return unless cond + re = /and|or/i + while (op = tok(re)) + re = /#{op}/i + ss + cond = Sass::Supports::Operator.new( + cond, expr!(:supports_condition_in_parens), op) + end + cond + end + + def supports_declaration + name = sass_script(:parse) + tok!(/:/); ss + value = sass_script(:parse) + Sass::Supports::Declaration.new(name, value) + end + + def supports_condition_in_parens + interp = supports_interpolation + return interp if interp + return unless tok(/\(/); ss + if (cond = supports_condition) + tok!(/\)/); ss + cond + else + decl = supports_declaration + tok!(/\)/); ss + decl + end + end + + def supports_interpolation + interp = interpolation + return unless interp + ss + Sass::Supports::Interpolation.new(interp) + end + + def variable + return unless tok(/\$/) + start_pos = source_position + name = ident! + ss; tok!(/:/); ss + + expr = sass_script(:parse) + while tok(/!/) + flag_name = ident! + if flag_name == 'default' + guarded ||= true + elsif flag_name == 'global' + global ||= true + else + raise Sass::SyntaxError.new("Invalid flag \"!#{flag_name}\".", :line => @line) + end + ss + end + + result = Sass::Tree::VariableNode.new(name, expr, guarded, global) + node(result, start_pos) + end + + def operator + # Many of these operators (all except / and ,) + # are disallowed by the CSS spec, + # but they're included here for compatibility + # with some proprietary MS properties + str {ss if tok(%r{[/,:.=]})} + end + + def ruleset + start_pos = source_position + return unless (rules = almost_any_value) + block( + node( + Sass::Tree::RuleNode.new(rules, range(start_pos)), start_pos), :ruleset) + end + + def block(node, context) + node.has_children = true + tok!(/\{/) + block_contents(node, context) + tok!(/\}/) + node + end + + # A block may contain declarations and/or rulesets + def block_contents(node, context) + block_given? ? yield : ss_comments(node) + node << (child = block_child(context)) + while tok(/;/) || has_children?(child) + block_given? ? yield : ss_comments(node) + node << (child = block_child(context)) + end + node + end + + def block_child(context) + return variable || directive if context == :function + return variable || directive || ruleset if context == :stylesheet + variable || directive || declaration_or_ruleset + end + + def has_children?(child_or_array) + return false unless child_or_array + return child_or_array.last.has_children if child_or_array.is_a?(Array) + child_or_array.has_children + end + + # When parsing the contents of a ruleset, it can be difficult to tell + # declarations apart from nested rulesets. Since we don't thoroughly parse + # selectors until after resolving interpolation, we can share a bunch of + # the parsing of the two, but we need to disambiguate them first. We use + # the following criteria: + # + # * If the entity doesn't start with an identifier followed by a colon, + # it's a selector. There are some additional mostly-unimportant cases + # here to support various declaration hacks. + # + # * If the colon is followed by another colon, it's a selector. + # + # * Otherwise, if the colon is followed by anything other than + # interpolation or a character that's valid as the beginning of an + # identifier, it's a declaration. + # + # * If the colon is followed by interpolation or a valid identifier, try + # parsing it as a declaration value. If this fails, backtrack and parse + # it as a selector. + # + # * If the declaration value value valid but is followed by "{", backtrack + # and parse it as a selector anyway. This ensures that ".foo:bar {" is + # always parsed as a selector and never as a property with nested + # properties beneath it. + def declaration_or_ruleset + start_pos = source_position + declaration = try_declaration + + if declaration.nil? + return unless (selector = almost_any_value) + elsif declaration.is_a?(Array) + selector = declaration + else + # Declaration should be a PropNode. + return declaration + end + + if (additional_selector = almost_any_value) + selector << additional_selector + end + + block( + node( + Sass::Tree::RuleNode.new(merge(selector), range(start_pos)), start_pos), :ruleset) + end + + # Tries to parse a declaration, and returns the value parsed so far if it + # fails. + # + # This has three possible return types. It can return `nil`, indicating + # that parsing failed completely and the scanner hasn't moved forward at + # all. It can return an Array, indicating that parsing failed after + # consuming some text (possibly containing interpolation), which is + # returned. Or it can return a PropNode, indicating that parsing + # succeeded. + def try_declaration + # This allows the "*prop: val", ":prop: val", "#prop: val", and ".prop: + # val" hacks. + name_start_pos = source_position + if (s = tok(/[:\*\.]|\#(?!\{)/)) + name = [s, str {ss}] + return name unless (ident = interp_ident) + name << ident + else + return unless (name = interp_ident) + name = Array(name) + end + + if (comment = tok(COMMENT)) + name << comment + end + name_end_pos = source_position + + mid = [str {ss}] + return name + mid unless tok(/:/) + mid << ':' + + # If this is a CSS variable, parse it as a property no matter what. + if name.first.is_a?(String) && name.first.start_with?("--") + return css_variable_declaration(name, name_start_pos, name_end_pos) + end + + return name + mid + [':'] if tok(/:/) + mid << str {ss} + post_colon_whitespace = !mid.last.empty? + could_be_selector = !post_colon_whitespace && (tok?(IDENT_START) || tok?(INTERP_START)) + + value_start_pos = source_position + value = nil + error = catch_error do + value = value! + if tok?(/\{/) + # Properties that are ambiguous with selectors can't have additional + # properties nested beneath them. + tok!(/;/) if could_be_selector + elsif !tok?(/[;{}]/) + # We want an exception if there's no valid end-of-property character + # exists, but we don't want to consume it if it does. + tok!(/[;{}]/) + end + end + + if error + rethrow error unless could_be_selector + + # If the value would be followed by a semicolon, it's definitely + # supposed to be a property, not a selector. + additional_selector = almost_any_value + rethrow error if tok?(/;/) + + return name + mid + (additional_selector || []) + end + + value_end_pos = source_position + ss + require_block = tok?(/\{/) + + node = node(Sass::Tree::PropNode.new(name.flatten.compact, [value], :new), + name_start_pos, value_end_pos) + node.name_source_range = range(name_start_pos, name_end_pos) + node.value_source_range = range(value_start_pos, value_end_pos) + + return node unless require_block + nested_properties! node + end + + def css_variable_declaration(name, name_start_pos, name_end_pos) + value_start_pos = source_position + value = declaration_value + value_end_pos = source_position + + node = node(Sass::Tree::PropNode.new(name.flatten.compact, value, :new), + name_start_pos, value_end_pos) + node.name_source_range = range(name_start_pos, name_end_pos) + node.value_source_range = range(value_start_pos, value_end_pos) + node + end + + # This production consumes values that could be a selector, an expression, + # or a combination of both. It respects strings and comments and supports + # interpolation. It will consume up to "{", "}", ";", or "!". + # + # Values consumed by this production will usually be parsed more + # thoroughly once interpolation has been resolved. + def almost_any_value + return unless (tok = almost_any_value_token) + sel = [tok] + while (tok = almost_any_value_token) + sel << tok + end + merge(sel) + end + + def almost_any_value_token + tok(%r{ + ( + \\. + | + (?!url\() + [^"'/\#!;\{\}] # " + | + # interp_uri will handle most url() calls, but not ones that take strings + url\(#{W}(?=") + | + /(?![/*]) + | + \#(?!\{) + | + !(?![a-z]) # TODO: never consume "!" when issue 1126 is fixed. + )+ + }xi) || tok(COMMENT) || tok(SINGLE_LINE_COMMENT) || interp_string || interp_uri || + interpolation(:warn_for_color) + end + + def declaration_value(top_level: true) + return unless (tok = declaration_value_token(top_level)) + value = [tok] + while (tok = declaration_value_token(top_level)) + value << tok + end + merge(value) + end + + def declaration_value_token(top_level) + # This comes, more or less, from the [token consumption algorithm][]. + # However, since we don't have to worry about the token semantics, we + # just consume everything until we come across a token with special + # semantics. + # + # [token consumption algorithm]: https://drafts.csswg.org/css-syntax-3/#consume-token. + result = tok(%r{ + ( + (?! + url\( + ) + [^()\[\]{}"'#/ \t\r\n\f#{top_level ? ";" : ""}] + | + \#(?!\{) + | + /(?!\*) + )+ + }xi) || interp_string || interp_uri || interpolation || tok(COMMENT) + return result if result + + # Fold together multiple characters of whitespace that don't include + # newlines. The value only cares about the tokenization, so this is safe + # as long as we don't delete whitespace entirely. It's important that we + # fold here rather than post-processing, since we aren't allowed to fold + # whitespace within strings and we lose that context later on. + if (ws = tok(S)) + return ws.include?("\n") ? ws.gsub(/\A[^\n]*/, '') : ' ' + end + + if tok(/\(/) + value = declaration_value(top_level: false) + tok!(/\)/) + ['(', *value, ')'] + elsif tok(/\[/) + value = declaration_value(top_level: false) + tok!(/\]/) + ['[', *value, ']'] + elsif tok(/\{/) + value = declaration_value(top_level: false) + tok!(/\}/) + ['{', *value, '}'] + end + end + + def declaration + # This allows the "*prop: val", ":prop: val", "#prop: val", and ".prop: + # val" hacks. + name_start_pos = source_position + if (s = tok(/[:\*\.]|\#(?!\{)/)) + name = [s, str {ss}, *expr!(:interp_ident)] + else + return unless (name = interp_ident) + name = Array(name) + end + + if (comment = tok(COMMENT)) + name << comment + end + name_end_pos = source_position + ss + + tok!(/:/) + ss + value_start_pos = source_position + value = value! + value_end_pos = source_position + ss + require_block = tok?(/\{/) + + node = node(Sass::Tree::PropNode.new(name.flatten.compact, [value], :new), + name_start_pos, value_end_pos) + node.name_source_range = range(name_start_pos, name_end_pos) + node.value_source_range = range(value_start_pos, value_end_pos) + + return node unless require_block + nested_properties! node + end + + def value! + if tok?(/\{/) + str = Sass::Script::Tree::Literal.new(Sass::Script::Value::String.new("")) + str.line = source_position.line + str.source_range = range(source_position) + return str + end + + start_pos = source_position + # This is a bit of a dirty trick: + # if the value is completely static, + # we don't parse it at all, and instead return a plain old string + # containing the value. + # This results in a dramatic speed increase. + if (val = tok(STATIC_VALUE)) + # If val ends with escaped whitespace, leave it be. + str = Sass::Script::Tree::Literal.new( + Sass::Script::Value::String.new( + Sass::Util.strip_except_escapes(val))) + str.line = start_pos.line + str.source_range = range(start_pos) + return str + end + sass_script(:parse) + end + + def nested_properties!(node) + @expected = 'expression (e.g. 1px, bold) or "{"' + block(node, :property) + end + + def expr(allow_var = true) + t = term(allow_var) + return unless t + res = [t, str {ss}] + + while (o = operator) && (t = term(allow_var)) + res << o << t << str {ss} + end + + res.flatten + end + + def term(allow_var) + e = tok(NUMBER) || + interp_uri || + function(allow_var) || + interp_string || + tok(UNICODERANGE) || + interp_ident || + tok(HEXCOLOR) || + (allow_var && var_expr) + return e if e + + op = tok(/[+-]/) + return unless op + @expected = "number or function" + [op, + tok(NUMBER) || function(allow_var) || (allow_var && var_expr) || expr!(:interpolation)] + end + + def function(allow_var) + name = tok(FUNCTION) + return unless name + if name == "expression(" || name == "calc(" + str, _ = Sass::Shared.balance(@scanner, ?(, ?), 1) + [name, str] + else + [name, str {ss}, expr(allow_var), tok!(/\)/)] + end + end + + def var_expr + return unless tok(/\$/) + line = @line + var = Sass::Script::Tree::Variable.new(ident!) + var.line = line + var + end + + def interpolation(warn_for_color = false) + return unless tok(INTERP_START) + sass_script(:parse_interpolated, warn_for_color) + end + + def string + return unless tok(STRING) + Sass::Script::Value::String.value(@scanner[1] || @scanner[2]) + end + + def interp_string + _interp_string(:double) || _interp_string(:single) + end + + def interp_uri + _interp_string(:uri) + end + + def _interp_string(type) + start = tok(Sass::Script::Lexer::STRING_REGULAR_EXPRESSIONS[type][false]) + return unless start + res = [start] + + mid_re = Sass::Script::Lexer::STRING_REGULAR_EXPRESSIONS[type][true] + # @scanner[2].empty? means we've started an interpolated section + while @scanner[2] == '#{' + @scanner.pos -= 2 # Don't consume the #{ + res.last.slice!(-2..-1) + res << expr!(:interpolation) << tok(mid_re) + end + res + end + + def ident + (ident = tok(IDENT)) && Sass::Util.normalize_ident_escapes(ident) + end + + def ident! + Sass::Util.normalize_ident_escapes(tok!(IDENT)) + end + + def name + (name = tok(NAME)) && Sass::Util.normalize_ident_escapes(name) + end + + def name! + Sass::Util.normalize_ident_escapes(tok!(NAME)) + end + + def interp_ident + val = ident || interpolation(:warn_for_color) || tok(IDENT_HYPHEN_INTERP) + return unless val + res = [val] + while (val = name || interpolation(:warn_for_color)) + res << val + end + res + end + + def interp_ident_or_var + id = interp_ident + return id if id + var = var_expr + return [var] if var + end + + def str + @strs.push String.new("") + yield + @strs.last + ensure + @strs.pop + end + + def str? + pos = @scanner.pos + line = @line + offset = @offset + @strs.push "" + throw_error {yield} && @strs.last + rescue Sass::SyntaxError + @scanner.pos = pos + @line = line + @offset = offset + nil + ensure + @strs.pop + end + + def node(node, start_pos, end_pos = source_position) + node.line = start_pos.line + node.source_range = range(start_pos, end_pos) + node + end + + @sass_script_parser = Sass::Script::Parser + + class << self + # @private + attr_accessor :sass_script_parser + end + + def sass_script(*args) + parser = self.class.sass_script_parser.new(@scanner, @line, @offset, + :filename => @filename, :importer => @importer, :allow_extra_text => true) + result = parser.send(*args) + unless @strs.empty? + # Convert to CSS manually so that comments are ignored. + src = result.to_sass + @strs.each {|s| s << src} + end + @line = parser.line + @offset = parser.offset + result + rescue Sass::SyntaxError => e + throw(:_sass_parser_error, true) if @throw_error + raise e + end + + def merge(arr) + arr && Sass::Util.merge_adjacent_strings([arr].flatten) + end + + EXPR_NAMES = { + :media_query => "media query (e.g. print, screen, print and screen)", + :media_query_list => "media query (e.g. print, screen, print and screen)", + :media_expr => "media expression (e.g. (min-device-width: 800px))", + :at_root_query => "@at-root query (e.g. (without: media))", + :at_root_directive_list => '* or identifier', + :declaration_value => "expression (e.g. fr, 2n+1)", + :interp_ident => "identifier", + :qualified_name => "identifier", + :expr => "expression (e.g. 1px, bold)", + :selector_comma_sequence => "selector", + :string => "string", + :import_arg => "file to import (string or url())", + :moz_document_function => "matching function (e.g. url-prefix(), domain())", + :supports_condition => "@supports condition (e.g. (display: flexbox))", + :supports_condition_in_parens => "@supports condition (e.g. (display: flexbox))", + :a_n_plus_b => "An+B expression", + :keyframes_selector_component => "from, to, or a percentage", + :keyframes_selector => "keyframes selector (e.g. 10%)" + } + + TOK_NAMES = Hash[Sass::SCSS::RX.constants.map do |c| + [Sass::SCSS::RX.const_get(c), c.downcase] + end].merge( + IDENT => "identifier", + /[;{}]/ => '";"', + /\b(without|with)\b/ => '"with" or "without"' + ) + + def tok?(rx) + @scanner.match?(rx) + end + + def expr!(name) + e = send(name) + return e if e + expected(EXPR_NAMES[name] || name.to_s) + end + + def tok!(rx) + t = tok(rx) + return t if t + name = TOK_NAMES[rx] + + unless name + # Display basic regexps as plain old strings + source = rx.source.gsub(%r{\\/}, '/') + string = rx.source.gsub(/\\(.)/, '\1') + name = source == Regexp.escape(string) ? string.inspect : rx.inspect + end + + expected(name) + end + + def expected(name) + throw(:_sass_parser_error, true) if @throw_error + self.class.expected(@scanner, @expected || name, @line) + end + + def err(msg) + throw(:_sass_parser_error, true) if @throw_error + raise Sass::SyntaxError.new(msg, :line => @line) + end + + def throw_error + old_throw_error, @throw_error = @throw_error, false + yield + ensure + @throw_error = old_throw_error + end + + def catch_error(&block) + old_throw_error, @throw_error = @throw_error, true + pos = @scanner.pos + line = @line + offset = @offset + expected = @expected + + logger = Sass::Logger::Delayed.install! + if catch(:_sass_parser_error) {yield; false} + @scanner.pos = pos + @line = line + @offset = offset + @expected = expected + {:pos => pos, :line => line, :expected => @expected, :block => block} + else + logger.flush + nil + end + ensure + logger.uninstall! if logger + @throw_error = old_throw_error + end + + def rethrow(err) + if @throw_error + throw :_sass_parser_error, err + else + @scanner = Sass::Util::MultibyteStringScanner.new(@scanner.string) + @scanner.pos = err[:pos] + @line = err[:line] + @expected = err[:expected] + err[:block].call + end + end + + # @private + def self.expected(scanner, expected, line) + pos = scanner.pos + + after = scanner.string[0...pos] + # Get rid of whitespace between pos and the last token, + # but only if there's a newline in there + after.gsub!(/\s*\n\s*$/, '') + # Also get rid of stuff before the last newline + after.gsub!(/.*\n/, '') + after = "..." + after[-15..-1] if after.size > 18 + + was = scanner.rest.dup + # Get rid of whitespace between pos and the next token, + # but only if there's a newline in there + was.gsub!(/^\s*\n\s*/, '') + # Also get rid of stuff after the next newline + was.gsub!(/\n.*/, '') + was = was[0...15] + "..." if was.size > 18 + + raise Sass::SyntaxError.new( + "Invalid CSS after \"#{after}\": expected #{expected}, was \"#{was}\"", + :line => line) + end + + # Avoid allocating lots of new strings for `#tok`. + # This is important because `#tok` is called all the time. + NEWLINE = "\n" + + def tok(rx) + res = @scanner.scan(rx) + + return unless res + + newline_count = res.count(NEWLINE) + if newline_count > 0 + @line += newline_count + @offset = res[res.rindex(NEWLINE)..-1].size + else + @offset += res.size + end + + @expected = nil + if !@strs.empty? && rx != COMMENT && rx != SINGLE_LINE_COMMENT + @strs.each {|s| s << res} + end + res + end + + # Remove a vendor prefix from `str`. + def deprefix(str) + str.gsub(/^-[a-zA-Z0-9]+-/, '') + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/rx.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/rx.rb new file mode 100644 index 0000000000..bfb3e4a898 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/rx.rb @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +module Sass + module SCSS + # A module containing regular expressions used + # for lexing tokens in an SCSS document. + # Most of these are taken from [the CSS3 spec](http://www.w3.org/TR/css3-syntax/#lexical), + # although some have been modified for various reasons. + module RX + # Takes a string and returns a CSS identifier + # that will have the value of the given string. + # + # @param str [String] The string to escape + # @return [String] The escaped string + def self.escape_ident(str) + return "" if str.empty? + return "\\#{str}" if str == '-' || str == '_' + out = "" + value = str.dup + out << value.slice!(0...1) if value =~ /^[-_]/ + if value[0...1] =~ NMSTART + out << value.slice!(0...1) + else + out << escape_char(value.slice!(0...1)) + end + out << value.gsub(/[^a-zA-Z0-9_-]/) {|c| escape_char c} + out + end + + # Escapes a single character for a CSS identifier. + # + # @param c [String] The character to escape. Should have length 1 + # @return [String] The escaped character + # @private + def self.escape_char(c) + return "\\%06x" % c.ord unless c =~ %r{[ -/:-~]} + "\\#{c}" + end + + # Creates a Regexp from a plain text string, + # escaping all significant characters. + # + # @param str [String] The text of the regexp + # @param flags [Integer] Flags for the created regular expression + # @return [Regexp] + # @private + def self.quote(str, flags = 0) + Regexp.new(Regexp.quote(str), flags) + end + + H = /[0-9a-fA-F]/ + NL = /\n|\r\n|\r|\f/ + UNICODE = /\\#{H}{1,6}[ \t\r\n\f]?/ + s = '\u{80}-\u{D7FF}\u{E000}-\u{FFFD}\u{10000}-\u{10FFFF}' + NONASCII = /[#{s}]/ + ESCAPE = /#{UNICODE}|\\[^0-9a-fA-F\r\n\f]/ + NMSTART = /[_a-zA-Z]|#{NONASCII}|#{ESCAPE}/ + NMCHAR = /[a-zA-Z0-9_-]|#{NONASCII}|#{ESCAPE}/ + STRING1 = /\"((?:[^\n\r\f\\"]|\\#{NL}|#{ESCAPE})*)\"/ + STRING2 = /\'((?:[^\n\r\f\\']|\\#{NL}|#{ESCAPE})*)\'/ + + IDENT = /-*#{NMSTART}#{NMCHAR}*/ + NAME = /#{NMCHAR}+/ + STRING = /#{STRING1}|#{STRING2}/ + URLCHAR = /[#%&*-~]|#{NONASCII}|#{ESCAPE}/ + URL = /(#{URLCHAR}*)/ + W = /[ \t\r\n\f]*/ + VARIABLE = /(\$)(#{Sass::SCSS::RX::IDENT})/ + + # This is more liberal than the spec's definition, + # but that definition didn't work well with the greediness rules + RANGE = /(?:#{H}|\?){1,6}/ + + ## + + S = /[ \t\r\n\f]+/ + + COMMENT = %r{/\*([^*]|\*+[^/*])*\**\*/} + SINGLE_LINE_COMMENT = %r{//.*(\n[ \t]*//.*)*} + + CDO = quote("") + INCLUDES = quote("~=") + DASHMATCH = quote("|=") + PREFIXMATCH = quote("^=") + SUFFIXMATCH = quote("$=") + SUBSTRINGMATCH = quote("*=") + + HASH = /##{NAME}/ + + IMPORTANT = /!#{W}important/i + + # A unit is like an IDENT, but disallows a hyphen followed by a digit. + # This allows "1px-2px" to be interpreted as subtraction rather than "1" + # with the unit "px-2px". It also allows "%". + UNIT = /-?#{NMSTART}(?:[a-zA-Z0-9_]|#{NONASCII}|#{ESCAPE}|-(?!\.?\d))*|%/ + + UNITLESS_NUMBER = /(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?\d+)?/ + NUMBER = /#{UNITLESS_NUMBER}(?:#{UNIT})?/ + PERCENTAGE = /#{UNITLESS_NUMBER}%/ + + URI = /url\(#{W}(?:#{STRING}|#{URL})#{W}\)/i + FUNCTION = /#{IDENT}\(/ + + UNICODERANGE = /u\+(?:#{H}{1,6}-#{H}{1,6}|#{RANGE})/i + + # Defined in http://www.w3.org/TR/css3-selectors/#lex + PLUS = /#{W}\+/ + GREATER = /#{W}>/ + TILDE = /#{W}~/ + NOT = quote(":not(", Regexp::IGNORECASE) + + # Defined in https://developer.mozilla.org/en/CSS/@-moz-document as a + # non-standard version of http://www.w3.org/TR/css3-conditional/ + URL_PREFIX = /url-prefix\(#{W}(?:#{STRING}|#{URL})#{W}\)/i + DOMAIN = /domain\(#{W}(?:#{STRING}|#{URL})#{W}\)/i + + # Custom + HEXCOLOR = /\#[0-9a-fA-F]+/ + INTERP_START = /#\{/ + ANY = /:(-[-\w]+-)?any\(/i + OPTIONAL = /!#{W}optional/i + IDENT_START = /-|#{NMSTART}/ + + IDENT_HYPHEN_INTERP = /-+(?=#\{)/ + STRING1_NOINTERP = /\"((?:[^\n\r\f\\"#]|#(?!\{)|#{ESCAPE})*)\"/ + STRING2_NOINTERP = /\'((?:[^\n\r\f\\'#]|#(?!\{)|#{ESCAPE})*)\'/ + STRING_NOINTERP = /#{STRING1_NOINTERP}|#{STRING2_NOINTERP}/ + + STATIC_COMPONENT = /#{IDENT}|#{STRING_NOINTERP}|#{HEXCOLOR}|[+-]?#{NUMBER}|\!important/i + STATIC_VALUE = %r(#{STATIC_COMPONENT}(\s*[\s,\/]\s*#{STATIC_COMPONENT})*(?=[;}]))i + STATIC_SELECTOR = /(#{NMCHAR}|[ \t]|[,>+*]|[:#.]#{NMSTART}){1,50}([{])/i + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/static_parser.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/static_parser.rb new file mode 100644 index 0000000000..fff9d0e92a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/scss/static_parser.rb @@ -0,0 +1,351 @@ +require 'sass/script/css_parser' + +module Sass + module SCSS + # A parser for a static SCSS tree. + # Parses with SCSS extensions, like nested rules and parent selectors, + # but without dynamic SassScript. + # This is useful for e.g. \{#parse\_selector parsing selectors} + # after resolving the interpolation. + class StaticParser < Parser + # Parses the text as a selector. + # + # @param filename [String, nil] The file in which the selector appears, + # or nil if there is no such file. + # Used for error reporting. + # @return [Selector::CommaSequence] The parsed selector + # @raise [Sass::SyntaxError] if there's a syntax error in the selector + def parse_selector + init_scanner! + seq = expr!(:selector_comma_sequence) + expected("selector") unless @scanner.eos? + seq.line = @line + seq.filename = @filename + seq + end + + # Parses a static at-root query. + # + # @return [(Symbol, Array)] The type of the query + # (`:with` or `:without`) and the values that are being filtered. + # @raise [Sass::SyntaxError] if there's a syntax error in the query, + # or if it doesn't take up the entire input string. + def parse_static_at_root_query + init_scanner! + tok!(/\(/); ss + type = tok!(/\b(without|with)\b/).to_sym; ss + tok!(/:/); ss + directives = expr!(:at_root_directive_list); ss + tok!(/\)/) + expected("@at-root query list") unless @scanner.eos? + return type, directives + end + + def parse_keyframes_selector + init_scanner! + sel = expr!(:keyframes_selector) + expected("keyframes selector") unless @scanner.eos? + sel + end + + # @see Parser#initialize + # @param allow_parent_ref [Boolean] Whether to allow the + # parent-reference selector, `&`, when parsing the document. + def initialize(str, filename, importer, line = 1, offset = 1, allow_parent_ref = true) + super(str, filename, importer, line, offset) + @allow_parent_ref = allow_parent_ref + end + + private + + def moz_document_function + val = tok(URI) || tok(URL_PREFIX) || tok(DOMAIN) || function(false) + return unless val + ss + [val] + end + + def variable; nil; end + def script_value; nil; end + def interpolation(warn_for_color = false); nil; end + def var_expr; nil; end + def interp_string; (s = tok(STRING)) && [s]; end + def interp_uri; (s = tok(URI)) && [s]; end + def interp_ident; (s = ident) && [s]; end + def use_css_import?; true; end + + def special_directive(name, start_pos) + return unless %w(media import charset -moz-document).include?(name) + super + end + + def selector_comma_sequence + sel = selector + return unless sel + selectors = [sel] + ws = '' + while tok(/,/) + ws << str {ss} + next unless (sel = selector) + selectors << sel + if ws.include?("\n") + selectors[-1] = Selector::Sequence.new(["\n"] + selectors.last.members) + end + ws = '' + end + Selector::CommaSequence.new(selectors) + end + + def selector_string + sel = selector + return unless sel + sel.to_s + end + + def selector + start_pos = source_position + # The combinator here allows the "> E" hack + val = combinator || simple_selector_sequence + return unless val + nl = str {ss}.include?("\n") + res = [] + res << val + res << "\n" if nl + + while (val = combinator || simple_selector_sequence) + res << val + res << "\n" if str {ss}.include?("\n") + end + seq = Selector::Sequence.new(res.compact) + + if seq.members.any? {|sseq| sseq.is_a?(Selector::SimpleSequence) && sseq.subject?} + location = " of #{@filename}" if @filename + Sass::Util.sass_warn < e + e.message << "\n\n\"#{sel}\" may only be used at the beginning of a compound selector." + raise e + end + end + + Selector::SimpleSequence.new(res, tok(/!/), range(start_pos)) + end + + def parent_selector + return unless @allow_parent_ref && tok(/&/) + Selector::Parent.new(name) + end + + def class_selector + return unless tok(/\./) + @expected = "class name" + Selector::Class.new(ident!) + end + + def id_selector + return unless tok(/#(?!\{)/) + @expected = "id name" + Selector::Id.new(name!) + end + + def placeholder_selector + return unless tok(/%/) + @expected = "placeholder name" + Selector::Placeholder.new(ident!) + end + + def element_name + ns, name = Sass::Util.destructure(qualified_name(:allow_star_name)) + return unless ns || name + + if name == '*' + Selector::Universal.new(ns) + else + Selector::Element.new(name, ns) + end + end + + def qualified_name(allow_star_name = false) + name = ident || tok(/\*/) || (tok?(/\|/) && "") + return unless name + return nil, name unless tok(/\|/) + + return name, ident! unless allow_star_name + @expected = "identifier or *" + return name, ident || tok!(/\*/) + end + + def attrib + return unless tok(/\[/) + ss + ns, name = attrib_name! + ss + + op = tok(/=/) || + tok(INCLUDES) || + tok(DASHMATCH) || + tok(PREFIXMATCH) || + tok(SUFFIXMATCH) || + tok(SUBSTRINGMATCH) + if op + @expected = "identifier or string" + ss + val = ident || tok!(STRING) + ss + end + flags = ident || tok(STRING) + tok!(/\]/) + + Selector::Attribute.new(name, ns, op, val, flags) + end + + def attrib_name! + if (name_or_ns = ident) + # E, E|E + if tok(/\|(?!=)/) + ns = name_or_ns + name = ident + else + name = name_or_ns + end + else + # *|E or |E + ns = tok(/\*/) || "" + tok!(/\|/) + name = ident! + end + return ns, name + end + + SELECTOR_PSEUDO_CLASSES = %w(not matches current any has host host-context).to_set + + PREFIXED_SELECTOR_PSEUDO_CLASSES = %w(nth-child nth-last-child).to_set + + SELECTOR_PSEUDO_ELEMENTS = %w(slotted).to_set + + def pseudo + s = tok(/::?/) + return unless s + @expected = "pseudoclass or pseudoelement" + name = ident! + if tok(/\(/) + ss + deprefixed = deprefix(name) + if s == ':' && SELECTOR_PSEUDO_CLASSES.include?(deprefixed) + sel = selector_comma_sequence + elsif s == ':' && PREFIXED_SELECTOR_PSEUDO_CLASSES.include?(deprefixed) + arg, sel = prefixed_selector_pseudo + elsif s == '::' && SELECTOR_PSEUDO_ELEMENTS.include?(deprefixed) + sel = selector_comma_sequence + else + arg = expr!(:declaration_value).join + end + + tok!(/\)/) + end + Selector::Pseudo.new(s == ':' ? :class : :element, name, arg, sel) + end + + def prefixed_selector_pseudo + prefix = str do + expr = str {expr!(:a_n_plus_b)} + ss + return expr, nil unless tok(/of/) + ss + end + return prefix, expr!(:selector_comma_sequence) + end + + def a_n_plus_b + if (parity = tok(/even|odd/i)) + return parity + end + + if tok(/[+-]?[0-9]+/) + ss + return true unless tok(/n/) + else + return unless tok(/[+-]?n/i) + end + ss + + return true unless tok(/[+-]/) + ss + @expected = "number" + tok!(/[0-9]+/) + true + end + + def keyframes_selector + ss + str do + return unless keyframes_selector_component + ss + while tok(/,/) + ss + expr!(:keyframes_selector_component) + ss + end + end + end + + def keyframes_selector_component + ident || tok(PERCENTAGE) + end + + @sass_script_parser = Class.new(Sass::Script::CssParser) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector.rb new file mode 100644 index 0000000000..cac8de4e72 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector.rb @@ -0,0 +1,327 @@ +require 'sass/selector/simple' +require 'sass/selector/abstract_sequence' +require 'sass/selector/comma_sequence' +require 'sass/selector/pseudo' +require 'sass/selector/sequence' +require 'sass/selector/simple_sequence' + +module Sass + # A namespace for nodes in the parse tree for selectors. + # + # {CommaSequence} is the toplevel selector, + # representing a comma-separated sequence of {Sequence}s, + # such as `foo bar, baz bang`. + # {Sequence} is the next level, + # representing {SimpleSequence}s separated by combinators (e.g. descendant or child), + # such as `foo bar` or `foo > bar baz`. + # {SimpleSequence} is a sequence of selectors that all apply to a single element, + # such as `foo.bar[attr=val]`. + # Finally, {Simple} is the superclass of the simplest selectors, + # such as `.foo` or `#bar`. + module Selector + # The base used for calculating selector specificity. The spec says this + # should be "sufficiently high"; it's extremely unlikely that any single + # selector sequence will contain 1,000 simple selectors. + SPECIFICITY_BASE = 1_000 + + # A parent-referencing selector (`&` in Sass). + # The function of this is to be replaced by the parent selector + # in the nested hierarchy. + class Parent < Simple + # The identifier following the `&`. `nil` indicates no suffix. + # + # @return [String, nil] + attr_reader :suffix + + # @param name [String, nil] See \{#suffix} + def initialize(suffix = nil) + @suffix = suffix + end + + # @see Selector#to_s + def to_s(opts = {}) + "&" + (@suffix || '') + end + + # Always raises an exception. + # + # @raise [Sass::SyntaxError] Parent selectors should be resolved before unification + # @see Selector#unify + def unify(sels) + raise Sass::SyntaxError.new("[BUG] Cannot unify parent selectors.") + end + end + + # A class selector (e.g. `.foo`). + class Class < Simple + # The class name. + # + # @return [String] + attr_reader :name + + # @param name [String] The class name + def initialize(name) + @name = name + end + + # @see Selector#to_s + def to_s(opts = {}) + "." + @name + end + + # @see AbstractSequence#specificity + def specificity + SPECIFICITY_BASE + end + end + + # An id selector (e.g. `#foo`). + class Id < Simple + # The id name. + # + # @return [String] + attr_reader :name + + # @param name [String] The id name + def initialize(name) + @name = name + end + + def unique? + true + end + + # @see Selector#to_s + def to_s(opts = {}) + "#" + @name + end + + # Returns `nil` if `sels` contains an {Id} selector + # with a different name than this one. + # + # @see Selector#unify + def unify(sels) + return if sels.any? {|sel2| sel2.is_a?(Id) && name != sel2.name} + super + end + + # @see AbstractSequence#specificity + def specificity + SPECIFICITY_BASE**2 + end + end + + # A placeholder selector (e.g. `%foo`). + # This exists to be replaced via `@extend`. + # Rulesets using this selector will not be printed, but can be extended. + # Otherwise, this acts just like a class selector. + class Placeholder < Simple + # The placeholder name. + # + # @return [String] + attr_reader :name + + # @param name [String] The placeholder name + def initialize(name) + @name = name + end + + # @see Selector#to_s + def to_s(opts = {}) + "%" + @name + end + + # @see AbstractSequence#specificity + def specificity + SPECIFICITY_BASE + end + end + + # A universal selector (`*` in CSS). + class Universal < Simple + # The selector namespace. `nil` means the default namespace, `""` means no + # namespace, `"*"` means any namespace. + # + # @return [String, nil] + attr_reader :namespace + + # @param namespace [String, nil] See \{#namespace} + def initialize(namespace) + @namespace = namespace + end + + # @see Selector#to_s + def to_s(opts = {}) + @namespace ? "#{@namespace}|*" : "*" + end + + # Unification of a universal selector is somewhat complicated, + # especially when a namespace is specified. + # If there is no namespace specified + # or any namespace is specified (namespace `"*"`), + # then `sel` is returned without change + # (unless it's empty, in which case `"*"` is required). + # + # If a namespace is specified + # but `sel` does not specify a namespace, + # then the given namespace is applied to `sel`, + # either by adding this {Universal} selector + # or applying this namespace to an existing {Element} selector. + # + # If both this selector *and* `sel` specify namespaces, + # those namespaces are unified via {Simple#unify_namespaces} + # and the unified namespace is used, if possible. + # + # @todo There are lots of cases that this documentation specifies; + # make sure we thoroughly test **all of them**. + # @todo Keep track of whether a default namespace has been declared + # and handle namespace-unspecified selectors accordingly. + # @todo If any branch of a CommaSequence ends up being just `"*"`, + # then all other branches should be eliminated + # + # @see Selector#unify + def unify(sels) + name = + case sels.first + when Universal; :universal + when Element; sels.first.name + else + return [self] + sels unless namespace.nil? || namespace == '*' + return sels unless sels.empty? + return [self] + end + + ns, accept = unify_namespaces(namespace, sels.first.namespace) + return unless accept + [name == :universal ? Universal.new(ns) : Element.new(name, ns)] + sels[1..-1] + end + + # @see AbstractSequence#specificity + def specificity + 0 + end + end + + # An element selector (e.g. `h1`). + class Element < Simple + # The element name. + # + # @return [String] + attr_reader :name + + # The selector namespace. `nil` means the default namespace, `""` means no + # namespace, `"*"` means any namespace. + # + # @return [String, nil] + attr_reader :namespace + + # @param name [String] The element name + # @param namespace [String, nil] See \{#namespace} + def initialize(name, namespace) + @name = name + @namespace = namespace + end + + # @see Selector#to_s + def to_s(opts = {}) + @namespace ? "#{@namespace}|#{@name}" : @name + end + + # Unification of an element selector is somewhat complicated, + # especially when a namespace is specified. + # First, if `sel` contains another {Element} with a different \{#name}, + # then the selectors can't be unified and `nil` is returned. + # + # Otherwise, if `sel` doesn't specify a namespace, + # or it specifies any namespace (via `"*"`), + # then it's returned with this element selector + # (e.g. `.foo` becomes `a.foo` or `svg|a.foo`). + # Similarly, if this selector doesn't specify a namespace, + # the namespace from `sel` is used. + # + # If both this selector *and* `sel` specify namespaces, + # those namespaces are unified via {Simple#unify_namespaces} + # and the unified namespace is used, if possible. + # + # @todo There are lots of cases that this documentation specifies; + # make sure we thoroughly test **all of them**. + # @todo Keep track of whether a default namespace has been declared + # and handle namespace-unspecified selectors accordingly. + # + # @see Selector#unify + def unify(sels) + case sels.first + when Universal; + when Element; return unless name == sels.first.name + else return [self] + sels + end + + ns, accept = unify_namespaces(namespace, sels.first.namespace) + return unless accept + [Element.new(name, ns)] + sels[1..-1] + end + + # @see AbstractSequence#specificity + def specificity + 1 + end + end + + # An attribute selector (e.g. `[href^="http://"]`). + class Attribute < Simple + # The attribute name. + # + # @return [Array] + attr_reader :name + + # The attribute namespace. `nil` means the default namespace, `""` means + # no namespace, `"*"` means any namespace. + # + # @return [String, nil] + attr_reader :namespace + + # The matching operator, e.g. `"="` or `"^="`. + # + # @return [String] + attr_reader :operator + + # The right-hand side of the operator. + # + # @return [String] + attr_reader :value + + # Flags for the attribute selector (e.g. `i`). + # + # @return [String] + attr_reader :flags + + # @param name [String] The attribute name + # @param namespace [String, nil] See \{#namespace} + # @param operator [String] The matching operator, e.g. `"="` or `"^="` + # @param value [String] See \{#value} + # @param flags [String] See \{#flags} + def initialize(name, namespace, operator, value, flags) + @name = name + @namespace = namespace + @operator = operator + @value = value + @flags = flags + end + + # @see Selector#to_s + def to_s(opts = {}) + res = "[" + res << @namespace << "|" if @namespace + res << @name + res << @operator << @value if @value + res << " " << @flags if @flags + res << "]" + end + + # @see AbstractSequence#specificity + def specificity + SPECIFICITY_BASE + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/abstract_sequence.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/abstract_sequence.rb new file mode 100644 index 0000000000..ad167a01bc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/abstract_sequence.rb @@ -0,0 +1,112 @@ +module Sass + module Selector + # The abstract parent class of the various selector sequence classes. + # + # All subclasses should implement a `members` method that returns an array + # of object that respond to `#line=` and `#filename=`, as well as a `to_s` + # method that returns the string representation of the selector. + class AbstractSequence + # The line of the Sass template on which this selector was declared. + # + # @return [Integer] + attr_reader :line + + # The name of the file in which this selector was declared. + # + # @return [String, nil] + attr_reader :filename + + # Sets the line of the Sass template on which this selector was declared. + # This also sets the line for all child selectors. + # + # @param line [Integer] + # @return [Integer] + def line=(line) + members.each {|m| m.line = line} + @line = line + end + + # Sets the name of the file in which this selector was declared, + # or `nil` if it was not declared in a file (e.g. on stdin). + # This also sets the filename for all child selectors. + # + # @param filename [String, nil] + # @return [String, nil] + def filename=(filename) + members.each {|m| m.filename = filename} + @filename = filename + end + + # Returns a hash code for this sequence. + # + # Subclasses should define `#_hash` rather than overriding this method, + # which automatically handles memoizing the result. + # + # @return [Integer] + def hash + @_hash ||= _hash + end + + # Checks equality between this and another object. + # + # Subclasses should define `#_eql?` rather than overriding this method, + # which handles checking class equality and hash equality. + # + # @param other [Object] The object to test equality against + # @return [Boolean] Whether or not this is equal to `other` + def eql?(other) + other.class == self.class && other.hash == hash && _eql?(other) + end + alias_method :==, :eql? + + # Whether or not this selector should be hidden due to containing a + # placeholder. + def invisible? + @invisible ||= members.any? do |m| + next m.invisible? if m.is_a?(AbstractSequence) || m.is_a?(Pseudo) + m.is_a?(Placeholder) + end + end + + # Returns the selector string. + # + # @param opts [Hash] rendering options. + # @option opts [Symbol] :style The css rendering style. + # @option placeholders [Boolean] :placeholders + # Whether to include placeholder selectors. Defaults to `true`. + # @return [String] + def to_s(opts = {}) + Sass::Util.abstract(self) + end + + # Returns the specificity of the selector. + # + # The base is given by {Sass::Selector::SPECIFICITY_BASE}. This can be a + # number or a range representing possible specificities. + # + # @return [Integer, Range] + def specificity + _specificity(members) + end + + protected + + def _specificity(arr) + min = 0 + max = 0 + arr.each do |m| + next if m.is_a?(String) + spec = m.specificity + if spec.is_a?(Range) + min += spec.begin + max += spec.end + else + min += spec + max += spec + end + end + min == max ? min : (min..max) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/comma_sequence.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/comma_sequence.rb new file mode 100644 index 0000000000..c62ea04b99 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/comma_sequence.rb @@ -0,0 +1,195 @@ +module Sass + module Selector + # A comma-separated sequence of selectors. + class CommaSequence < AbstractSequence + @@compound_extend_deprecation = Sass::Deprecation.new + + # The comma-separated selector sequences + # represented by this class. + # + # @return [Array] + attr_reader :members + + # @param seqs [Array] See \{#members} + def initialize(seqs) + @members = seqs + end + + # Resolves the {Parent} selectors within this selector + # by replacing them with the given parent selector, + # handling commas appropriately. + # + # @param super_cseq [CommaSequence] The parent selector + # @param implicit_parent [Boolean] Whether the the parent + # selector should automatically be prepended to the resolved + # selector if it contains no parent refs. + # @return [CommaSequence] This selector, with parent references resolved + # @raise [Sass::SyntaxError] If a parent selector is invalid + def resolve_parent_refs(super_cseq, implicit_parent = true) + if super_cseq.nil? + if contains_parent_ref? + raise Sass::SyntaxError.new( + "Base-level rules cannot contain the parent-selector-referencing character '&'.") + end + return self + end + + CommaSequence.new(Sass::Util.flatten_vertically(@members.map do |seq| + seq.resolve_parent_refs(super_cseq, implicit_parent).members + end)) + end + + # Returns whether there's a {Parent} selector anywhere in this sequence. + # + # @return [Boolean] + def contains_parent_ref? + @members.any? {|sel| sel.contains_parent_ref?} + end + + # Non-destrucively extends this selector with the extensions specified in a hash + # (which should come from {Sass::Tree::Visitors::Cssize}). + # + # @todo Link this to the reference documentation on `@extend` + # when such a thing exists. + # + # @param extends [Sass::Util::SubsetMap{Selector::Simple => + # Sass::Tree::Visitors::Cssize::Extend}] + # The extensions to perform on this selector + # @param parent_directives [Array] + # The directives containing this selector. + # @param replace [Boolean] + # Whether to replace the original selector entirely or include + # it in the result. + # @param seen [Set>] + # The set of simple sequences that are currently being replaced. + # @param original [Boolean] + # Whether this is the original selector being extended, as opposed to + # the result of a previous extension that's being re-extended. + # @return [CommaSequence] A copy of this selector, + # with extensions made according to `extends` + def do_extend(extends, parent_directives = [], replace = false, seen = Set.new, + original = true) + CommaSequence.new(members.map do |seq| + seq.do_extend(extends, parent_directives, replace, seen, original) + end.flatten) + end + + # Returns whether or not this selector matches all elements + # that the given selector matches (as well as possibly more). + # + # @example + # (.foo).superselector?(.foo.bar) #=> true + # (.foo).superselector?(.bar) #=> false + # @param cseq [CommaSequence] + # @return [Boolean] + def superselector?(cseq) + cseq.members.all? {|seq1| members.any? {|seq2| seq2.superselector?(seq1)}} + end + + # Populates a subset map that can then be used to extend + # selectors. This registers an extension with this selector as + # the extender and `extendee` as the extendee. + # + # @param extends [Sass::Util::SubsetMap{Selector::Simple => + # Sass::Tree::Visitors::Cssize::Extend}] + # The subset map representing the extensions to perform. + # @param extendee [CommaSequence] The selector being extended. + # @param extend_node [Sass::Tree::ExtendNode] + # The node that caused this extension. + # @param parent_directives [Array] + # The parent directives containing `extend_node`. + # @param allow_compound_target [Boolean] + # Whether `extendee` is allowed to contain compound selectors. + # @raise [Sass::SyntaxError] if this extension is invalid. + def populate_extends(extends, extendee, extend_node = nil, parent_directives = [], + allow_compound_target = false) + extendee.members.each do |seq| + if seq.members.size > 1 + raise Sass::SyntaxError.new("Can't extend #{seq}: can't extend nested selectors") + end + + sseq = seq.members.first + if !sseq.is_a?(Sass::Selector::SimpleSequence) + raise Sass::SyntaxError.new("Can't extend #{seq}: invalid selector") + elsif sseq.members.any? {|ss| ss.is_a?(Sass::Selector::Parent)} + raise Sass::SyntaxError.new("Can't extend #{seq}: can't extend parent selectors") + end + + sel = sseq.members + if !allow_compound_target && sel.length > 1 + @@compound_extend_deprecation.warn(sseq.filename, sseq.line, <] + ACTUALLY_ELEMENTS = %w(after before first-line first-letter).to_set + + # Like \{#type}, but returns the type of selector this looks like, rather + # than the type it is semantically. This only differs from type for + # selectors in \{ACTUALLY\_ELEMENTS}. + # + # @return [Symbol] + attr_reader :syntactic_type + + # The name of the selector. + # + # @return [String] + attr_reader :name + + # The argument to the selector, + # or `nil` if no argument was given. + # + # @return [String, nil] + attr_reader :arg + + # The selector argument, or `nil` if no selector exists. + # + # If this and \{#arg\} are both set, \{#arg\} is considered a non-selector + # prefix. + # + # @return [CommaSequence] + attr_reader :selector + + # @param syntactic_type [Symbol] See \{#syntactic_type} + # @param name [String] See \{#name} + # @param arg [nil, String] See \{#arg} + # @param selector [nil, CommaSequence] See \{#selector} + def initialize(syntactic_type, name, arg, selector) + @syntactic_type = syntactic_type + @name = name + @arg = arg + @selector = selector + end + + def unique? + type == :class && normalized_name == 'root' + end + + # Whether or not this selector should be hidden due to containing a + # placeholder. + def invisible? + # :not() is a special case—if you eliminate all the placeholders from + # it, it should match anything. + name != 'not' && @selector && @selector.members.all? {|s| s.invisible?} + end + + # Returns a copy of this with \{#selector} set to \{#new\_selector}. + # + # @param new_selector [CommaSequence] + # @return [Array] + def with_selector(new_selector) + result = Pseudo.new(syntactic_type, name, arg, + CommaSequence.new(new_selector.members.map do |seq| + next seq unless seq.members.length == 1 + sseq = seq.members.first + next seq unless sseq.is_a?(SimpleSequence) && sseq.members.length == 1 + sel = sseq.members.first + next seq unless sel.is_a?(Pseudo) && sel.selector + + case normalized_name + when 'not' + # In theory, if there's a nested :not its contents should be + # unified with the return value. For example, if :not(.foo) + # extends .bar, :not(.bar) should become .foo:not(.bar). However, + # this is a narrow edge case and supporting it properly would make + # this code and the code calling it a lot more complicated, so + # it's not supported for now. + next [] unless sel.normalized_name == 'matches' + sel.selector.members + when 'matches', 'any', 'current', 'nth-child', 'nth-last-child' + # As above, we could theoretically support :not within :matches, but + # doing so would require this method and its callers to handle much + # more complex cases that likely aren't worth the pain. + next [] unless sel.name == name && sel.arg == arg + sel.selector.members + when 'has', 'host', 'host-context', 'slotted' + # We can't expand nested selectors here, because each layer adds an + # additional layer of semantics. For example, `:has(:has(img))` + # doesn't match `
                ` but `:has(img)` does. + sel + else + [] + end + end.flatten)) + + # Older browsers support :not but only with a single complex selector. + # In order to support those browsers, we break up the contents of a :not + # unless it originally contained a selector list. + return [result] unless normalized_name == 'not' + return [result] if selector.members.length > 1 + result.selector.members.map do |seq| + Pseudo.new(syntactic_type, name, arg, CommaSequence.new([seq])) + end + end + + # The type of the selector. `:class` if this is a pseudoclass selector, + # `:element` if it's a pseudoelement. + # + # @return [Symbol] + def type + ACTUALLY_ELEMENTS.include?(normalized_name) ? :element : syntactic_type + end + + # Like \{#name\}, but without any vendor prefix. + # + # @return [String] + def normalized_name + @normalized_name ||= name.gsub(/^-[a-zA-Z0-9]+-/, '') + end + + # @see Selector#to_s + def to_s(opts = {}) + # :not() is a special case, because :not() should match + # everything. + return '' if name == 'not' && @selector && @selector.members.all? {|m| m.invisible?} + + res = (syntactic_type == :class ? ":" : "::") + @name + if @arg || @selector + res << "(" + res << Sass::Util.strip_except_escapes(@arg) if @arg + res << " " if @arg && @selector + res << @selector.to_s(opts) if @selector + res << ")" + end + res + end + + # Returns `nil` if this is a pseudoelement selector + # and `sels` contains a pseudoelement selector different than this one. + # + # @see SimpleSequence#unify + def unify(sels) + return if type == :element && sels.any? do |sel| + sel.is_a?(Pseudo) && sel.type == :element && + (sel.name != name || sel.arg != arg || sel.selector != selector) + end + super + end + + # Returns whether or not this selector matches all elements + # that the given selector matches (as well as possibly more). + # + # @example + # (.foo).superselector?(.foo.bar) #=> true + # (.foo).superselector?(.bar) #=> false + # @param their_sseq [SimpleSequence] + # @param parents [Array] The parent selectors of `their_sseq`, if any. + # @return [Boolean] + def superselector?(their_sseq, parents = []) + case normalized_name + when 'matches', 'any' + # :matches can be a superselector of another selector in one of two + # ways. Either its constituent selectors can be a superset of those of + # another :matches in the other selector, or any of its constituent + # selectors can individually be a superselector of the other selector. + (their_sseq.selector_pseudo_classes[normalized_name] || []).any? do |their_sel| + next false unless their_sel.is_a?(Pseudo) + next false unless their_sel.name == name + selector.superselector?(their_sel.selector) + end || selector.members.any? do |our_seq| + their_seq = Sequence.new(parents + [their_sseq]) + our_seq.superselector?(their_seq) + end + when 'has', 'host', 'host-context', 'slotted' + # Like :matches, :has (et al) can be a superselector of another + # selector if its constituent selectors are a superset of those of + # another :has in the other selector. However, the :matches other case + # doesn't work, because :has refers to nested elements. + (their_sseq.selector_pseudo_classes[normalized_name] || []).any? do |their_sel| + next false unless their_sel.is_a?(Pseudo) + next false unless their_sel.name == name + selector.superselector?(their_sel.selector) + end + when 'not' + selector.members.all? do |our_seq| + their_sseq.members.any? do |their_sel| + if their_sel.is_a?(Element) || their_sel.is_a?(Id) + # `:not(a)` is a superselector of `h1` and `:not(#foo)` is a + # superselector of `#bar`. + our_sseq = our_seq.members.last + next false unless our_sseq.is_a?(SimpleSequence) + our_sseq.members.any? do |our_sel| + our_sel.class == their_sel.class && our_sel != their_sel + end + else + next false unless their_sel.is_a?(Pseudo) + next false unless their_sel.name == name + # :not(X) is a superselector of :not(Y) exactly when Y is a + # superselector of X. + their_sel.selector.superselector?(CommaSequence.new([our_seq])) + end + end + end + when 'current' + (their_sseq.selector_pseudo_classes['current'] || []).any? do |their_current| + next false if their_current.name != name + # Explicitly don't check for nested superselector relationships + # here. :current(.foo) isn't always a superselector of + # :current(.foo.bar), since it matches the *innermost* ancestor of + # the current element that matches the selector. For example: + # + #
                + #

                + # current element + #

                + #
                + # + # Here :current(.foo) would match the p element and *not* the div + # element, whereas :current(.foo.bar) would match the div and not + # the p. + selector == their_current.selector + end + when 'nth-child', 'nth-last-child' + their_sseq.members.any? do |their_sel| + # This misses a few edge cases. For example, `:nth-child(n of X)` + # is a superselector of `X`, and `:nth-child(2n of X)` is a + # superselector of `:nth-child(4n of X)`. These seem rare enough + # not to be worth worrying about, though. + next false unless their_sel.is_a?(Pseudo) + next false unless their_sel.name == name + next false unless their_sel.arg == arg + selector.superselector?(their_sel.selector) + end + else + throw "[BUG] Unknown selector pseudo class #{name}" + end + end + + # @see AbstractSequence#specificity + def specificity + return 1 if type == :element + return SPECIFICITY_BASE unless selector + @specificity ||= + if normalized_name == 'not' + min = 0 + max = 0 + selector.members.each do |seq| + spec = seq.specificity + if spec.is_a?(Range) + min = Sass::Util.max(spec.begin, min) + max = Sass::Util.max(spec.end, max) + else + min = Sass::Util.max(spec, min) + max = Sass::Util.max(spec, max) + end + end + min == max ? max : (min..max) + else + min = 0 + max = 0 + selector.members.each do |seq| + spec = seq.specificity + if spec.is_a?(Range) + min = Sass::Util.min(spec.begin, min) + max = Sass::Util.max(spec.end, max) + else + min = Sass::Util.min(spec, min) + max = Sass::Util.max(spec, max) + end + end + min == max ? max : (min..max) + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/sequence.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/sequence.rb new file mode 100644 index 0000000000..173412a18f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/sequence.rb @@ -0,0 +1,661 @@ +module Sass + module Selector + # An operator-separated sequence of + # {SimpleSequence simple selector sequences}. + class Sequence < AbstractSequence + # Sets the line of the Sass template on which this selector was declared. + # This also sets the line for all child selectors. + # + # @param line [Integer] + # @return [Integer] + def line=(line) + members.each {|m| m.line = line if m.is_a?(SimpleSequence)} + @line = line + end + + # Sets the name of the file in which this selector was declared, + # or `nil` if it was not declared in a file (e.g. on stdin). + # This also sets the filename for all child selectors. + # + # @param filename [String, nil] + # @return [String, nil] + def filename=(filename) + members.each {|m| m.filename = filename if m.is_a?(SimpleSequence)} + filename + end + + # The array of {SimpleSequence simple selector sequences}, operators, and + # newlines. The operators are strings such as `"+"` and `">"` representing + # the corresponding CSS operators, or interpolated SassScript. Newlines + # are also newline strings; these aren't semantically relevant, but they + # do affect formatting. + # + # @return [Array>] + attr_reader :members + + # @param seqs_and_ops [Array>] + # See \{#members} + def initialize(seqs_and_ops) + @members = seqs_and_ops + end + + # Resolves the {Parent} selectors within this selector + # by replacing them with the given parent selector, + # handling commas appropriately. + # + # @param super_cseq [CommaSequence] The parent selector + # @param implicit_parent [Boolean] Whether the the parent + # selector should automatically be prepended to the resolved + # selector if it contains no parent refs. + # @return [CommaSequence] This selector, with parent references resolved + # @raise [Sass::SyntaxError] If a parent selector is invalid + def resolve_parent_refs(super_cseq, implicit_parent) + members = @members.dup + nl = (members.first == "\n" && members.shift) + contains_parent_ref = contains_parent_ref? + return CommaSequence.new([self]) if !implicit_parent && !contains_parent_ref + + unless contains_parent_ref + old_members, members = members, [] + members << nl if nl + members << SimpleSequence.new([Parent.new], false) + members += old_members + end + + CommaSequence.new(Sass::Util.paths(members.map do |sseq_or_op| + next [sseq_or_op] unless sseq_or_op.is_a?(SimpleSequence) + sseq_or_op.resolve_parent_refs(super_cseq).members + end).map do |path| + path_members = path.map do |seq_or_op| + next seq_or_op unless seq_or_op.is_a?(Sequence) + seq_or_op.members + end + if path_members.length == 2 && path_members[1][0] == "\n" + path_members[0].unshift path_members[1].shift + end + Sequence.new(path_members.flatten) + end) + end + + # Returns whether there's a {Parent} selector anywhere in this sequence. + # + # @return [Boolean] + def contains_parent_ref? + members.any? do |sseq_or_op| + next false unless sseq_or_op.is_a?(SimpleSequence) + next true if sseq_or_op.members.first.is_a?(Parent) + sseq_or_op.members.any? do |sel| + sel.is_a?(Pseudo) && sel.selector && sel.selector.contains_parent_ref? + end + end + end + + # Non-destructively extends this selector with the extensions specified in a hash + # (which should come from {Sass::Tree::Visitors::Cssize}). + # + # @param extends [Sass::Util::SubsetMap{Selector::Simple => + # Sass::Tree::Visitors::Cssize::Extend}] + # The extensions to perform on this selector + # @param parent_directives [Array] + # The directives containing this selector. + # @param replace [Boolean] + # Whether to replace the original selector entirely or include + # it in the result. + # @param seen [Set>] + # The set of simple sequences that are currently being replaced. + # @param original [Boolean] + # Whether this is the original selector being extended, as opposed to + # the result of a previous extension that's being re-extended. + # @return [Array] A list of selectors generated + # by extending this selector with `extends`. + # These correspond to a {CommaSequence}'s {CommaSequence#members members array}. + # @see CommaSequence#do_extend + def do_extend(extends, parent_directives, replace, seen, original) + extended_not_expanded = members.map do |sseq_or_op| + next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence) + extended = sseq_or_op.do_extend(extends, parent_directives, replace, seen) + + # The First Law of Extend says that the generated selector should have + # specificity greater than or equal to that of the original selector. + # In order to ensure that, we record the original selector's + # (`extended.first`) original specificity. + extended.first.add_sources!([self]) if original && !invisible? + + extended.map {|seq| seq.members} + end + weaves = Sass::Util.paths(extended_not_expanded).map {|path| weave(path)} + trim(weaves).map {|p| Sequence.new(p)} + end + + # Unifies this with another selector sequence to produce a selector + # that matches (a subset of) the intersection of the two inputs. + # + # @param other [Sequence] + # @return [CommaSequence, nil] The unified selector, or nil if unification failed. + # @raise [Sass::SyntaxError] If this selector cannot be unified. + # This will only ever occur when a dynamic selector, + # such as {Parent} or {Interpolation}, is used in unification. + # Since these selectors should be resolved + # by the time extension and unification happen, + # this exception will only ever be raised as a result of programmer error + def unify(other) + base = members.last + other_base = other.members.last + return unless base.is_a?(SimpleSequence) && other_base.is_a?(SimpleSequence) + return unless (unified = other_base.unify(base)) + + woven = weave([members[0...-1], other.members[0...-1] + [unified]]) + CommaSequence.new(woven.map {|w| Sequence.new(w)}) + end + + # Returns whether or not this selector matches all elements + # that the given selector matches (as well as possibly more). + # + # @example + # (.foo).superselector?(.foo.bar) #=> true + # (.foo).superselector?(.bar) #=> false + # @param cseq [Sequence] + # @return [Boolean] + def superselector?(seq) + _superselector?(members, seq.members) + end + + # @see AbstractSequence#to_s + def to_s(opts = {}) + @members.map {|m| m.is_a?(String) ? m : m.to_s(opts)}.join(" ").gsub(/ ?\n ?/, "\n") + end + + # Returns a string representation of the sequence. + # This is basically the selector string. + # + # @return [String] + def inspect + members.map {|m| m.inspect}.join(" ") + end + + # Add to the {SimpleSequence#sources} sets of the child simple sequences. + # This destructively modifies this sequence's members array, but not the + # child simple sequences. + # + # @param sources [Set] + def add_sources!(sources) + members.map! {|m| m.is_a?(SimpleSequence) ? m.with_more_sources(sources) : m} + end + + # Converts the subject operator "!", if it exists, into a ":has()" + # selector. + # + # @retur [Sequence] + def subjectless + pre_subject = [] + has = [] + subject = nil + members.each do |sseq_or_op| + if subject + has << sseq_or_op + elsif sseq_or_op.is_a?(String) || !sseq_or_op.subject? + pre_subject << sseq_or_op + else + subject = sseq_or_op.dup + subject.members = sseq_or_op.members.dup + subject.subject = false + has = [] + end + end + + return self unless subject + + unless has.empty? + subject.members << Pseudo.new(:class, 'has', nil, CommaSequence.new([Sequence.new(has)])) + end + Sequence.new(pre_subject + [subject]) + end + + private + + # Conceptually, this expands "parenthesized selectors". That is, if we + # have `.A .B {@extend .C}` and `.D .C {...}`, this conceptually expands + # into `.D .C, .D (.A .B)`, and this function translates `.D (.A .B)` into + # `.D .A .B, .A .D .B`. For thoroughness, `.A.D .B` would also be + # required, but including merged selectors results in exponential output + # for very little gain. + # + # @param path [Array>] + # A list of parenthesized selector groups. + # @return [Array>] A list of fully-expanded selectors. + def weave(path) + # This function works by moving through the selector path left-to-right, + # building all possible prefixes simultaneously. + prefixes = [[]] + + path.each do |current| + next if current.empty? + current = current.dup + last_current = [current.pop] + prefixes = prefixes.map do |prefix| + sub = subweave(prefix, current) + next [] unless sub + sub.map {|seqs| seqs + last_current} + end.flatten(1) + end + prefixes + end + + # This interweaves two lists of selectors, + # returning all possible orderings of them (including using unification) + # that maintain the relative ordering of the input arrays. + # + # For example, given `.foo .bar` and `.baz .bang`, + # this would return `.foo .bar .baz .bang`, `.foo .bar.baz .bang`, + # `.foo .baz .bar .bang`, `.foo .baz .bar.bang`, `.foo .baz .bang .bar`, + # and so on until `.baz .bang .foo .bar`. + # + # Semantically, for selectors A and B, this returns all selectors `AB_i` + # such that the union over all i of elements matched by `AB_i X` is + # identical to the intersection of all elements matched by `A X` and all + # elements matched by `B X`. Some `AB_i` are elided to reduce the size of + # the output. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Array>] + def subweave(seq1, seq2) + return [seq2] if seq1.empty? + return [seq1] if seq2.empty? + + seq1, seq2 = seq1.dup, seq2.dup + return unless (init = merge_initial_ops(seq1, seq2)) + return unless (fin = merge_final_ops(seq1, seq2)) + + # Make sure there's only one root selector in the output. + root1 = has_root?(seq1.first) && seq1.shift + root2 = has_root?(seq2.first) && seq2.shift + if root1 && root2 + return unless (root = root1.unify(root2)) + seq1.unshift root + seq2.unshift root + elsif root1 + seq2.unshift root1 + elsif root2 + seq1.unshift root2 + end + + seq1 = group_selectors(seq1) + seq2 = group_selectors(seq2) + lcs = Sass::Util.lcs(seq2, seq1) do |s1, s2| + next s1 if s1 == s2 + next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence) + next s2 if parent_superselector?(s1, s2) + next s1 if parent_superselector?(s2, s1) + next unless must_unify?(s1, s2) + next unless (unified = Sequence.new(s1).unify(Sequence.new(s2))) + unified.members.first.members if unified.members.length == 1 + end + + diff = [[init]] + + until lcs.empty? + diff << chunks(seq1, seq2) {|s| parent_superselector?(s.first, lcs.first)} << [lcs.shift] + seq1.shift + seq2.shift + end + diff << chunks(seq1, seq2) {|s| s.empty?} + diff += fin.map {|sel| sel.is_a?(Array) ? sel : [sel]} + diff.reject! {|c| c.empty?} + + Sass::Util.paths(diff).map {|p| p.flatten}.reject {|p| path_has_two_subjects?(p)} + end + + # Extracts initial selector combinators (`"+"`, `">"`, `"~"`, and `"\n"`) + # from two sequences and merges them together into a single array of + # selector combinators. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Array, nil] If there are no operators in the merged + # sequence, this will be the empty array. If the operators cannot be + # merged, this will be nil. + def merge_initial_ops(seq1, seq2) + ops1, ops2 = [], [] + ops1 << seq1.shift while seq1.first.is_a?(String) + ops2 << seq2.shift while seq2.first.is_a?(String) + + newline = false + newline ||= !!ops1.shift if ops1.first == "\n" + newline ||= !!ops2.shift if ops2.first == "\n" + + # If neither sequence is a subsequence of the other, they cannot be + # merged successfully + lcs = Sass::Util.lcs(ops1, ops2) + return unless lcs == ops1 || lcs == ops2 + (newline ? ["\n"] : []) + (ops1.size > ops2.size ? ops1 : ops2) + end + + # Extracts final selector combinators (`"+"`, `">"`, `"~"`) and the + # selectors to which they apply from two sequences and merges them + # together into a single array. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Array>] + # If there are no trailing combinators to be merged, this will be the + # empty array. If the trailing combinators cannot be merged, this will + # be nil. Otherwise, this will contained the merged selector. Array + # elements are [Sass::Util#paths]-style options; conceptually, an "or" + # of multiple selectors. + def merge_final_ops(seq1, seq2, res = []) + ops1, ops2 = [], [] + ops1 << seq1.pop while seq1.last.is_a?(String) + ops2 << seq2.pop while seq2.last.is_a?(String) + + # Not worth the headache of trying to preserve newlines here. The most + # important use of newlines is at the beginning of the selector to wrap + # across lines anyway. + ops1.reject! {|o| o == "\n"} + ops2.reject! {|o| o == "\n"} + + return res if ops1.empty? && ops2.empty? + if ops1.size > 1 || ops2.size > 1 + # If there are multiple operators, something hacky's going on. If one + # is a supersequence of the other, use that, otherwise give up. + lcs = Sass::Util.lcs(ops1, ops2) + return unless lcs == ops1 || lcs == ops2 + res.unshift(*(ops1.size > ops2.size ? ops1 : ops2).reverse) + return res + end + + # This code looks complicated, but it's actually just a bunch of special + # cases for interactions between different combinators. + op1, op2 = ops1.first, ops2.first + if op1 && op2 + sel1 = seq1.pop + sel2 = seq2.pop + if op1 == '~' && op2 == '~' + if sel1.superselector?(sel2) + res.unshift sel2, '~' + elsif sel2.superselector?(sel1) + res.unshift sel1, '~' + else + merged = sel1.unify(sel2) + res.unshift [ + [sel1, '~', sel2, '~'], + [sel2, '~', sel1, '~'], + ([merged, '~'] if merged) + ].compact + end + elsif (op1 == '~' && op2 == '+') || (op1 == '+' && op2 == '~') + if op1 == '~' + tilde_sel, plus_sel = sel1, sel2 + else + tilde_sel, plus_sel = sel2, sel1 + end + + if tilde_sel.superselector?(plus_sel) + res.unshift plus_sel, '+' + else + merged = plus_sel.unify(tilde_sel) + res.unshift [ + [tilde_sel, '~', plus_sel, '+'], + ([merged, '+'] if merged) + ].compact + end + elsif op1 == '>' && %w(~ +).include?(op2) + res.unshift sel2, op2 + seq1.push sel1, op1 + elsif op2 == '>' && %w(~ +).include?(op1) + res.unshift sel1, op1 + seq2.push sel2, op2 + elsif op1 == op2 + merged = sel1.unify(sel2) + return unless merged + res.unshift merged, op1 + else + # Unknown selector combinators can't be unified + return + end + return merge_final_ops(seq1, seq2, res) + elsif op1 + seq2.pop if op1 == '>' && seq2.last && seq2.last.superselector?(seq1.last) + res.unshift seq1.pop, op1 + return merge_final_ops(seq1, seq2, res) + else # op2 + seq1.pop if op2 == '>' && seq1.last && seq1.last.superselector?(seq2.last) + res.unshift seq2.pop, op2 + return merge_final_ops(seq1, seq2, res) + end + end + + # Takes initial subsequences of `seq1` and `seq2` and returns all + # orderings of those subsequences. The initial subsequences are determined + # by a block. + # + # Destructively removes the initial subsequences of `seq1` and `seq2`. + # + # For example, given `(A B C | D E)` and `(1 2 | 3 4 5)` (with `|` + # denoting the boundary of the initial subsequence), this would return + # `[(A B C 1 2), (1 2 A B C)]`. The sequences would then be `(D E)` and + # `(3 4 5)`. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @yield [a] Used to determine when to cut off the initial subsequences. + # Called repeatedly for each sequence until it returns true. + # @yieldparam a [Array] A final subsequence of one input sequence after + # cutting off some initial subsequence. + # @yieldreturn [Boolean] Whether or not to cut off the initial subsequence + # here. + # @return [Array] All possible orderings of the initial subsequences. + def chunks(seq1, seq2) + chunk1 = [] + chunk1 << seq1.shift until yield seq1 + chunk2 = [] + chunk2 << seq2.shift until yield seq2 + return [] if chunk1.empty? && chunk2.empty? + return [chunk2] if chunk1.empty? + return [chunk1] if chunk2.empty? + [chunk1 + chunk2, chunk2 + chunk1] + end + + # Groups a sequence into subsequences. The subsequences are determined by + # strings; adjacent non-string elements will be put into separate groups, + # but any element adjacent to a string will be grouped with that string. + # + # For example, `(A B "C" D E "F" G "H" "I" J)` will become `[(A) (B "C" D) + # (E "F" G "H" "I" J)]`. + # + # @param seq [Array] + # @return [Array] + def group_selectors(seq) + newseq = [] + tail = seq.dup + until tail.empty? + head = [] + begin + head << tail.shift + end while !tail.empty? && head.last.is_a?(String) || tail.first.is_a?(String) + newseq << head + end + newseq + end + + # Given two selector sequences, returns whether `seq1` is a + # superselector of `seq2`; that is, whether `seq1` matches every + # element `seq2` matches. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Boolean] + def _superselector?(seq1, seq2) + seq1 = seq1.reject {|e| e == "\n"} + seq2 = seq2.reject {|e| e == "\n"} + # Selectors with leading or trailing operators are neither + # superselectors nor subselectors. + return if seq1.last.is_a?(String) || seq2.last.is_a?(String) || + seq1.first.is_a?(String) || seq2.first.is_a?(String) + # More complex selectors are never superselectors of less complex ones + return if seq1.size > seq2.size + return seq1.first.superselector?(seq2.last, seq2[0...-1]) if seq1.size == 1 + + _, si = seq2.each_with_index.find do |e, i| + return if i == seq2.size - 1 + next if e.is_a?(String) + seq1.first.superselector?(e, seq2[0...i]) + end + return unless si + + if seq1[1].is_a?(String) + return unless seq2[si + 1].is_a?(String) + + # .foo ~ .bar is a superselector of .foo + .bar + return unless seq1[1] == "~" ? seq2[si + 1] != ">" : seq1[1] == seq2[si + 1] + + # .foo > .baz is not a superselector of .foo > .bar > .baz or .foo > + # .bar .baz, despite the fact that .baz is a superselector of .bar > + # .baz and .bar .baz. Same goes for + and ~. + return if seq1.length == 3 && seq2.length > 3 + + return _superselector?(seq1[2..-1], seq2[si + 2..-1]) + elsif seq2[si + 1].is_a?(String) + return unless seq2[si + 1] == ">" + return _superselector?(seq1[1..-1], seq2[si + 2..-1]) + else + return _superselector?(seq1[1..-1], seq2[si + 1..-1]) + end + end + + # Like \{#_superselector?}, but compares the selectors in the + # context of parent selectors, as though they shared an implicit + # base simple selector. For example, `B` is not normally a + # superselector of `B A`, since it doesn't match `A` elements. + # However, it is a parent superselector, since `B X` is a + # superselector of `B A X`. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Boolean] + def parent_superselector?(seq1, seq2) + base = Sass::Selector::SimpleSequence.new([Sass::Selector::Placeholder.new('')], + false) + _superselector?(seq1 + [base], seq2 + [base]) + end + + # Returns whether two selectors must be unified to produce a valid + # combined selector. This is true when both selectors contain the same + # unique simple selector such as an id. + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Boolean] + def must_unify?(seq1, seq2) + unique_selectors = seq1.map do |sseq| + next [] if sseq.is_a?(String) + sseq.members.select {|sel| sel.unique?} + end.flatten.to_set + + return false if unique_selectors.empty? + + seq2.any? do |sseq| + next false if sseq.is_a?(String) + sseq.members.any? do |sel| + next unless sel.unique? + unique_selectors.include?(sel) + end + end + end + + # Removes redundant selectors from between multiple lists of + # selectors. This takes a list of lists of selector sequences; + # each individual list is assumed to have no redundancy within + # itself. A selector is only removed if it's redundant with a + # selector in another list. + # + # "Redundant" here means that one selector is a superselector of + # the other. The more specific selector is removed. + # + # @param seqses [Array>>] + # @return [Array>] + def trim(seqses) + # Avoid truly horrific quadratic behavior. TODO: I think there + # may be a way to get perfect trimming without going quadratic. + return seqses.flatten(1) if seqses.size > 100 + + # Keep the results in a separate array so we can be sure we aren't + # comparing against an already-trimmed selector. This ensures that two + # identical selectors don't mutually trim one another. + result = seqses.dup + + # This is n^2 on the sequences, but only comparing between + # separate sequences should limit the quadratic behavior. + seqses.each_with_index do |seqs1, i| + result[i] = seqs1.reject do |seq1| + # The maximum specificity of the sources that caused [seq1] to be + # generated. In order for [seq1] to be removed, there must be + # another selector that's a superselector of it *and* that has + # specificity greater or equal to this. + max_spec = _sources(seq1).map do |seq| + spec = seq.specificity + spec.is_a?(Range) ? spec.max : spec + end.max || 0 + + result.any? do |seqs2| + next if seqs1.equal?(seqs2) + # Second Law of Extend: the specificity of a generated selector + # should never be less than the specificity of the extending + # selector. + # + # See https://github.com/nex3/sass/issues/324. + seqs2.any? do |seq2| + spec2 = _specificity(seq2) + spec2 = spec2.begin if spec2.is_a?(Range) + spec2 >= max_spec && _superselector?(seq2, seq1) + end + end + end + end + result.flatten(1) + end + + def _hash + members.reject {|m| m == "\n"}.hash + end + + def _eql?(other) + other.members.reject {|m| m == "\n"}.eql?(members.reject {|m| m == "\n"}) + end + + def path_has_two_subjects?(path) + subject = false + path.each do |sseq_or_op| + next unless sseq_or_op.is_a?(SimpleSequence) + next unless sseq_or_op.subject? + return true if subject + subject = true + end + false + end + + def _sources(seq) + s = Set.new + seq.map {|sseq_or_op| s.merge sseq_or_op.sources if sseq_or_op.is_a?(SimpleSequence)} + s + end + + def extended_not_expanded_to_s(extended_not_expanded) + extended_not_expanded.map do |choices| + choices = choices.map do |sel| + next sel.first.to_s if sel.size == 1 + "#{sel.join ' '}" + end + next choices.first if choices.size == 1 && !choices.include?(' ') + "(#{choices.join ', '})" + end.join ' ' + end + + def has_root?(sseq) + sseq.is_a?(SimpleSequence) && + sseq.members.any? {|sel| sel.is_a?(Pseudo) && sel.normalized_name == "root"} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple.rb new file mode 100644 index 0000000000..dff4b8a36a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple.rb @@ -0,0 +1,124 @@ +module Sass + module Selector + # The abstract superclass for simple selectors + # (that is, those that don't compose multiple selectors). + class Simple + # The line of the Sass template on which this selector was declared. + # + # @return [Integer] + attr_accessor :line + + # The name of the file in which this selector was declared, + # or `nil` if it was not declared in a file (e.g. on stdin). + # + # @return [String, nil] + attr_accessor :filename + + # Whether only one instance of this simple selector is allowed in a given + # complex selector. + # + # @return [Boolean] + def unique? + false + end + + # @see #to_s + # + # @return [String] + def inspect + to_s + end + + # Returns the selector string. + # + # @param opts [Hash] rendering options. + # @option opts [Symbol] :style The css rendering style. + # @return [String] + def to_s(opts = {}) + Sass::Util.abstract(self) + end + + # Returns a hash code for this selector object. + # + # By default, this is based on the value of \{#to\_a}, + # so if that contains information irrelevant to the identity of the selector, + # this should be overridden. + # + # @return [Integer] + def hash + @_hash ||= equality_key.hash + end + + # Checks equality between this and another object. + # + # By default, this is based on the value of \{#to\_a}, + # so if that contains information irrelevant to the identity of the selector, + # this should be overridden. + # + # @param other [Object] The object to test equality against + # @return [Boolean] Whether or not this is equal to `other` + def eql?(other) + other.class == self.class && other.hash == hash && other.equality_key == equality_key + end + alias_method :==, :eql? + + # Unifies this selector with a {SimpleSequence}'s {SimpleSequence#members members array}, + # returning another `SimpleSequence` members array + # that matches both this selector and the input selector. + # + # By default, this just appends this selector to the end of the array + # (or returns the original array if this selector already exists in it). + # + # @param sels [Array] A {SimpleSequence}'s {SimpleSequence#members members array} + # @return [Array, nil] A {SimpleSequence} {SimpleSequence#members members array} + # matching both `sels` and this selector, + # or `nil` if this is impossible (e.g. unifying `#foo` and `#bar`) + # @raise [Sass::SyntaxError] If this selector cannot be unified. + # This will only ever occur when a dynamic selector, + # such as {Parent} or {Interpolation}, is used in unification. + # Since these selectors should be resolved + # by the time extension and unification happen, + # this exception will only ever be raised as a result of programmer error + def unify(sels) + return sels.first.unify([self]) if sels.length == 1 && sels.first.is_a?(Universal) + return sels if sels.any? {|sel2| eql?(sel2)} + if !is_a?(Pseudo) || (sels.last.is_a?(Pseudo) && sels.last.type == :element) + _, i = sels.each_with_index.find {|sel, _| sel.is_a?(Pseudo)} + end + return sels + [self] unless i + sels[0...i] + [self] + sels[i..-1] + end + + protected + + # Returns the key used for testing whether selectors are equal. + # + # This is a cached version of \{#to\_s}. + # + # @return [String] + def equality_key + @equality_key ||= to_s + end + + # Unifies two namespaces, + # returning a namespace that works for both of them if possible. + # + # @param ns1 [String, nil] The first namespace. + # `nil` means none specified, e.g. `foo`. + # The empty string means no namespace specified, e.g. `|foo`. + # `"*"` means any namespace is allowed, e.g. `*|foo`. + # @param ns2 [String, nil] The second namespace. See `ns1`. + # @return [Array(String or nil, Boolean)] + # The first value is the unified namespace, or `nil` for no namespace. + # The second value is whether or not a namespace that works for both inputs + # could be found at all. + # If the second value is `false`, the first should be ignored. + def unify_namespaces(ns1, ns2) + return ns2, true if ns1 == '*' + return ns1, true if ns2 == '*' + return nil, false unless ns1 == ns2 + [ns1, true] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple_sequence.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple_sequence.rb new file mode 100644 index 0000000000..13a65d8853 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/selector/simple_sequence.rb @@ -0,0 +1,348 @@ +module Sass + module Selector + # A unseparated sequence of selectors + # that all apply to a single element. + # For example, `.foo#bar[attr=baz]` is a simple sequence + # of the selectors `.foo`, `#bar`, and `[attr=baz]`. + class SimpleSequence < AbstractSequence + # The array of individual selectors. + # + # @return [Array] + attr_accessor :members + + # The extending selectors that caused this selector sequence to be + # generated. For example: + # + # a.foo { ... } + # b.bar {@extend a} + # c.baz {@extend b} + # + # The generated selector `b.foo.bar` has `{b.bar}` as its `sources` set, + # and the generated selector `c.foo.bar.baz` has `{b.bar, c.baz}` as its + # `sources` set. + # + # This is populated during the {Sequence#do_extend} process. + # + # @return {Set} + attr_accessor :sources + + # This sequence source range. + # + # @return [Sass::Source::Range] + attr_accessor :source_range + + # @see \{#subject?} + attr_writer :subject + + # Returns the element or universal selector in this sequence, + # if it exists. + # + # @return [Element, Universal, nil] + def base + @base ||= (members.first if members.first.is_a?(Element) || members.first.is_a?(Universal)) + end + + def pseudo_elements + @pseudo_elements ||= members.select {|sel| sel.is_a?(Pseudo) && sel.type == :element} + end + + def selector_pseudo_classes + @selector_pseudo_classes ||= members. + select {|sel| sel.is_a?(Pseudo) && sel.type == :class && sel.selector}. + group_by {|sel| sel.normalized_name} + end + + # Returns the non-base, non-pseudo-element selectors in this sequence. + # + # @return [Set] + def rest + @rest ||= Set.new(members - [base] - pseudo_elements) + end + + # Whether or not this compound selector is the subject of the parent + # selector; that is, whether it is prepended with `$` and represents the + # actual element that will be selected. + # + # @return [Boolean] + def subject? + @subject + end + + # @param selectors [Array] See \{#members} + # @param subject [Boolean] See \{#subject?} + # @param source_range [Sass::Source::Range] + def initialize(selectors, subject, source_range = nil) + @members = selectors + @subject = subject + @sources = Set.new + @source_range = source_range + end + + # Resolves the {Parent} selectors within this selector + # by replacing them with the given parent selector, + # handling commas appropriately. + # + # @param super_cseq [CommaSequence] The parent selector + # @return [CommaSequence] This selector, with parent references resolved + # @raise [Sass::SyntaxError] If a parent selector is invalid + def resolve_parent_refs(super_cseq) + resolved_members = @members.map do |sel| + next sel unless sel.is_a?(Pseudo) && sel.selector + sel.with_selector(sel.selector.resolve_parent_refs(super_cseq, false)) + end.flatten + + # Parent selector only appears as the first selector in the sequence + unless (parent = resolved_members.first).is_a?(Parent) + return CommaSequence.new([Sequence.new([SimpleSequence.new(resolved_members, subject?)])]) + end + + return super_cseq if @members.size == 1 && parent.suffix.nil? + + CommaSequence.new(super_cseq.members.map do |super_seq| + members = super_seq.members.dup + newline = members.pop if members.last == "\n" + unless members.last.is_a?(SimpleSequence) + raise Sass::SyntaxError.new("Invalid parent selector for \"#{self}\": \"" + + super_seq.to_s + '"') + end + + parent_sub = members.last.members + unless parent.suffix.nil? + parent_sub = parent_sub.dup + parent_sub[-1] = parent_sub.last.dup + case parent_sub.last + when Sass::Selector::Class, Sass::Selector::Id, Sass::Selector::Placeholder + parent_sub[-1] = parent_sub.last.class.new(parent_sub.last.name + parent.suffix) + when Sass::Selector::Element + parent_sub[-1] = parent_sub.last.class.new( + parent_sub.last.name + parent.suffix, + parent_sub.last.namespace) + when Sass::Selector::Pseudo + if parent_sub.last.arg || parent_sub.last.selector + raise Sass::SyntaxError.new("Invalid parent selector for \"#{self}\": \"" + + super_seq.to_s + '"') + end + parent_sub[-1] = Sass::Selector::Pseudo.new( + parent_sub.last.type, + parent_sub.last.name + parent.suffix, + nil, nil) + else + raise Sass::SyntaxError.new("Invalid parent selector for \"#{self}\": \"" + + super_seq.to_s + '"') + end + end + + Sequence.new(members[0...-1] + + [SimpleSequence.new(parent_sub + resolved_members[1..-1], subject?)] + + [newline].compact) + end) + end + + # Non-destructively extends this selector with the extensions specified in a hash + # (which should come from {Sass::Tree::Visitors::Cssize}). + # + # @param extends [{Selector::Simple => + # Sass::Tree::Visitors::Cssize::Extend}] + # The extensions to perform on this selector + # @param parent_directives [Array] + # The directives containing this selector. + # @param seen [Set>] + # The set of simple sequences that are currently being replaced. + # @param original [Boolean] + # Whether this is the original selector being extended, as opposed to + # the result of a previous extension that's being re-extended. + # @return [Array] A list of selectors generated + # by extending this selector with `extends`. + # @see CommaSequence#do_extend + def do_extend(extends, parent_directives, replace, seen) + seen_with_pseudo_selectors = seen.dup + + modified_original = false + members = self.members.map do |sel| + next sel unless sel.is_a?(Pseudo) && sel.selector + next sel if seen.include?([sel]) + extended = sel.selector.do_extend(extends, parent_directives, replace, seen, false) + next sel if extended == sel.selector + extended.members.reject! {|seq| seq.invisible?} + + # For `:not()`, we usually want to get rid of any complex + # selectors because that will cause the selector to fail to + # parse on all browsers at time of writing. We can keep them + # if either the original selector had a complex selector, or + # the result of extending has only complex selectors, + # because either way we aren't breaking anything that isn't + # already broken. + if sel.normalized_name == 'not' && + (sel.selector.members.none? {|seq| seq.members.length > 1} && + extended.members.any? {|seq| seq.members.length == 1}) + extended.members.reject! {|seq| seq.members.length > 1} + end + + modified_original = true + result = sel.with_selector(extended) + result.each {|new_sel| seen_with_pseudo_selectors << [new_sel]} + result + end.flatten + + groups = extends[members.to_set].group_by {|ex| ex.extender}.to_a + groups.map! do |seq, group| + sels = group.map {|e| e.target}.flatten + # If A {@extend B} and C {...}, + # seq is A, sels is B, and self is C + + self_without_sel = Sass::Util.array_minus(members, sels) + group.each {|e| e.success = true} + unified = seq.members.last.unify(SimpleSequence.new(self_without_sel, subject?)) + next unless unified + group.each {|e| check_directives_match!(e, parent_directives)} + new_seq = Sequence.new(seq.members[0...-1] + [unified]) + new_seq.add_sources!(sources + [seq]) + [sels, new_seq] + end + groups.compact! + groups.map! do |sels, seq| + next [] if seen.include?(sels) + seq.do_extend( + extends, parent_directives, false, seen_with_pseudo_selectors + [sels], false) + end + groups.flatten! + + if modified_original || !replace || groups.empty? + # First Law of Extend: the result of extending a selector should + # (almost) always contain the base selector. + # + # See https://github.com/nex3/sass/issues/324. + original = Sequence.new([SimpleSequence.new(members, @subject, source_range)]) + original.add_sources! sources + groups.unshift original + end + groups.uniq! + groups + end + + # Unifies this selector with another {SimpleSequence}, returning + # another `SimpleSequence` that is a subselector of both input + # selectors. + # + # @param other [SimpleSequence] + # @return [SimpleSequence, nil] A {SimpleSequence} matching both `sels` and this selector, + # or `nil` if this is impossible (e.g. unifying `#foo` and `#bar`) + # @raise [Sass::SyntaxError] If this selector cannot be unified. + # This will only ever occur when a dynamic selector, + # such as {Parent} or {Interpolation}, is used in unification. + # Since these selectors should be resolved + # by the time extension and unification happen, + # this exception will only ever be raised as a result of programmer error + def unify(other) + sseq = members.inject(other.members) do |member, sel| + return unless member + sel.unify(member) + end + return unless sseq + SimpleSequence.new(sseq, other.subject? || subject?) + end + + # Returns whether or not this selector matches all elements + # that the given selector matches (as well as possibly more). + # + # @example + # (.foo).superselector?(.foo.bar) #=> true + # (.foo).superselector?(.bar) #=> false + # @param their_sseq [SimpleSequence] + # @param parents [Array] The parent selectors of `their_sseq`, if any. + # @return [Boolean] + def superselector?(their_sseq, parents = []) + return false unless base.nil? || base.eql?(their_sseq.base) + return false unless pseudo_elements.eql?(their_sseq.pseudo_elements) + our_spcs = selector_pseudo_classes + their_spcs = their_sseq.selector_pseudo_classes + + # Some psuedo-selectors can be subselectors of non-pseudo selectors. + # Pull those out here so we can efficiently check against them below. + their_subselector_pseudos = %w(matches any nth-child nth-last-child). + map {|name| their_spcs[name] || []}.flatten + + # If `self`'s non-pseudo simple selectors aren't a subset of `their_sseq`'s, + # it's definitely not a superselector. This also considers being matched + # by `:matches` or `:any`. + return false unless rest.all? do |our_sel| + next true if our_sel.is_a?(Pseudo) && our_sel.selector + next true if their_sseq.rest.include?(our_sel) + their_subselector_pseudos.any? do |their_pseudo| + their_pseudo.selector.members.all? do |their_seq| + next false unless their_seq.members.length == 1 + their_sseq = their_seq.members.first + next false unless their_sseq.is_a?(SimpleSequence) + their_sseq.rest.include?(our_sel) + end + end + end + + our_spcs.all? do |_name, pseudos| + pseudos.all? {|pseudo| pseudo.superselector?(their_sseq, parents)} + end + end + + # @see Simple#to_s + def to_s(opts = {}) + res = @members.map {|m| m.to_s(opts)}.join + + # :not(%foo) may resolve to the empty string, but it should match every + # selector so we replace it with "*". + res = '*' if res.empty? + + res << '!' if subject? + res + end + + # Returns a string representation of the sequence. + # This is basically the selector string. + # + # @return [String] + def inspect + res = members.map {|m| m.inspect}.join + res << '!' if subject? + res + end + + # Return a copy of this simple sequence with `sources` merged into the + # {SimpleSequence#sources} set. + # + # @param sources [Set] + # @return [SimpleSequence] + def with_more_sources(sources) + sseq = dup + sseq.members = members.dup + sseq.sources = self.sources | sources + sseq + end + + private + + def check_directives_match!(extend, parent_directives) + dirs1 = extend.directives.map {|d| d.resolved_value} + dirs2 = parent_directives.map {|d| d.resolved_value} + return if Sass::Util.subsequence?(dirs1, dirs2) + line = extend.node.line + filename = extend.node.filename + + # TODO(nweiz): this should use the Sass stack trace of the extend node, + # not the selector. + raise Sass::SyntaxError.new(< #{output.inspect}" + end + end + + # The mapping data ordered by the location in the target. + # + # @return [Array] + attr_reader :data + + def initialize + @data = [] + end + + # Adds a new mapping from one source range to another. Multiple invocations + # of this method should have each `output` range come after all previous ranges. + # + # @param input [Sass::Source::Range] + # The source range in the input document. + # @param output [Sass::Source::Range] + # The source range in the output document. + def add(input, output) + @data.push(Mapping.new(input, output)) + end + + # Shifts all output source ranges forward one or more lines. + # + # @param delta [Integer] The number of lines to shift the ranges forward. + def shift_output_lines(delta) + return if delta == 0 + @data.each do |m| + m.output.start_pos.line += delta + m.output.end_pos.line += delta + end + end + + # Shifts any output source ranges that lie on the first line forward one or + # more characters on that line. + # + # @param delta [Integer] The number of characters to shift the ranges + # forward. + def shift_output_offsets(delta) + return if delta == 0 + @data.each do |m| + break if m.output.start_pos.line > 1 + m.output.start_pos.offset += delta + m.output.end_pos.offset += delta if m.output.end_pos.line > 1 + end + end + + # Returns the standard JSON representation of the source map. + # + # If the `:css_uri` option isn't specified, the `:css_path` and + # `:sourcemap_path` options must both be specified. Any options may also be + # specified alongside the `:css_uri` option. If `:css_uri` isn't specified, + # it will be inferred from `:css_path` and `:sourcemap_path` using the + # assumption that the local file system has the same layout as the server. + # + # Regardless of which options are passed to this method, source stylesheets + # that are imported using a non-default importer will only be linked to in + # the source map if their importers implement + # \{Sass::Importers::Base#public\_url\}. + # + # @option options :css_uri [String] + # The publicly-visible URI of the CSS output file. + # @option options :css_path [String] + # The local path of the CSS output file. + # @option options :sourcemap_path [String] + # The (eventual) local path of the sourcemap file. + # @option options :type [Symbol] + # `:auto` (default), `:file`, or `:inline`. + # @return [String] The JSON string. + # @raise [ArgumentError] If neither `:css_uri` nor `:css_path` and + # `:sourcemap_path` are specified. + def to_json(options) + css_uri, css_path, sourcemap_path = + options[:css_uri], options[:css_path], options[:sourcemap_path] + unless css_uri || (css_path && sourcemap_path) + raise ArgumentError.new("Sass::Source::Map#to_json requires either " \ + "the :css_uri option or both the :css_path and :soucemap_path options.") + end + css_path &&= Sass::Util.pathname(File.absolute_path(css_path)) + sourcemap_path &&= Sass::Util.pathname(File.absolute_path(sourcemap_path)) + css_uri ||= Sass::Util.file_uri_from_path( + Sass::Util.relative_path_from(css_path, sourcemap_path.dirname)) + + result = "{\n" + write_json_field(result, "version", 3, true) + + source_uri_to_id = {} + id_to_source_uri = {} + id_to_contents = {} if options[:type] == :inline + next_source_id = 0 + line_data = [] + segment_data_for_line = [] + + # These track data necessary for the delta coding. + previous_target_line = nil + previous_target_offset = 1 + previous_source_line = 1 + previous_source_offset = 1 + previous_source_id = 0 + + @data.each do |m| + file, importer = m.input.file, m.input.importer + + next unless importer + + if options[:type] == :inline + source_uri = file + else + sourcemap_dir = sourcemap_path && sourcemap_path.dirname.to_s + sourcemap_dir = nil if options[:type] == :file + source_uri = importer.public_url(file, sourcemap_dir) + next unless source_uri + end + + current_source_id = source_uri_to_id[source_uri] + unless current_source_id + current_source_id = next_source_id + next_source_id += 1 + + source_uri_to_id[source_uri] = current_source_id + id_to_source_uri[current_source_id] = source_uri + + if options[:type] == :inline + id_to_contents[current_source_id] = + importer.find(file, {}).instance_variable_get('@template') + end + end + + [ + [m.input.start_pos, m.output.start_pos], + [m.input.end_pos, m.output.end_pos] + ].each do |source_pos, target_pos| + if previous_target_line != target_pos.line + line_data.push(segment_data_for_line.join(",")) unless segment_data_for_line.empty? + (target_pos.line - 1 - (previous_target_line || 0)).times {line_data.push("")} + previous_target_line = target_pos.line + previous_target_offset = 1 + segment_data_for_line = [] + end + + # `segment` is a data chunk for a single position mapping. + segment = "" + + # Field 1: zero-based starting offset. + segment << Sass::Util.encode_vlq(target_pos.offset - previous_target_offset) + previous_target_offset = target_pos.offset + + # Field 2: zero-based index into the "sources" list. + segment << Sass::Util.encode_vlq(current_source_id - previous_source_id) + previous_source_id = current_source_id + + # Field 3: zero-based starting line in the original source. + segment << Sass::Util.encode_vlq(source_pos.line - previous_source_line) + previous_source_line = source_pos.line + + # Field 4: zero-based starting offset in the original source. + segment << Sass::Util.encode_vlq(source_pos.offset - previous_source_offset) + previous_source_offset = source_pos.offset + + segment_data_for_line.push(segment) + + previous_target_line = target_pos.line + end + end + line_data.push(segment_data_for_line.join(",")) + write_json_field(result, "mappings", line_data.join(";")) + + source_names = [] + (0...next_source_id).each {|id| source_names.push(id_to_source_uri[id].to_s)} + write_json_field(result, "sources", source_names) + + if options[:type] == :inline + write_json_field(result, "sourcesContent", + (0...next_source_id).map {|id| id_to_contents[id]}) + end + + write_json_field(result, "names", []) + write_json_field(result, "file", css_uri) + + result << "\n}" + result + end + + private + + def write_json_field(out, name, value, is_first = false) + out << (is_first ? "" : ",\n") << + "\"" << + Sass::Util.json_escape_string(name) << + "\": " << + Sass::Util.json_value_of(value) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/position.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/position.rb new file mode 100644 index 0000000000..a62af452d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/position.rb @@ -0,0 +1,39 @@ +module Sass::Source + class Position + # The one-based line of the document associated with the position. + # + # @return [Integer] + attr_accessor :line + + # The one-based offset in the line of the document associated with the + # position. + # + # @return [Integer] + attr_accessor :offset + + # @param line [Integer] The source line + # @param offset [Integer] The source offset + def initialize(line, offset) + @line = line + @offset = offset + end + + # @return [String] A string representation of the source position. + def inspect + "#{line.inspect}:#{offset.inspect}" + end + + # @param str [String] The string to move through. + # @return [Position] The source position after proceeding forward through + # `str`. + def after(str) + newlines = str.count("\n") + Position.new(line + newlines, + if newlines == 0 + offset + str.length + else + str.length - str.rindex("\n") - 1 + end) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/range.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/range.rb new file mode 100644 index 0000000000..de687f9727 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/source/range.rb @@ -0,0 +1,41 @@ +module Sass::Source + class Range + # The starting position of the range in the document (inclusive). + # + # @return [Sass::Source::Position] + attr_accessor :start_pos + + # The ending position of the range in the document (exclusive). + # + # @return [Sass::Source::Position] + attr_accessor :end_pos + + # The file in which this source range appears. This can be nil if the file + # is unknown or not yet generated. + # + # @return [String] + attr_accessor :file + + # The importer that imported the file in which this source range appears. + # This is nil for target ranges. + # + # @return [Sass::Importers::Base] + attr_accessor :importer + + # @param start_pos [Sass::Source::Position] See \{#start_pos} + # @param end_pos [Sass::Source::Position] See \{#end_pos} + # @param file [String] See \{#file} + # @param importer [Sass::Importers::Base] See \{#importer} + def initialize(start_pos, end_pos, file, importer = nil) + @start_pos = start_pos + @end_pos = end_pos + @file = file + @importer = importer + end + + # @return [String] A string representation of the source range. + def inspect + "(#{start_pos.inspect} to #{end_pos.inspect}#{" in #{@file}" if @file})" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/stack.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/stack.rb new file mode 100644 index 0000000000..fb57a978c1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/stack.rb @@ -0,0 +1,140 @@ +module Sass + # A class representing the stack when compiling a Sass file. + class Stack + # TODO: use this to generate stack information for Sass::SyntaxErrors. + + # A single stack frame. + class Frame + # The filename of the file in which this stack frame was created. + # + # @return [String] + attr_reader :filename + + # The line number on which this stack frame was created. + # + # @return [String] + attr_reader :line + + # The type of this stack frame. This can be `:import`, `:mixin`, or + # `:base`. + # + # `:base` indicates that this is the bottom-most frame, meaning that it + # represents a single line of code rather than a nested context. The stack + # will only ever have one base frame, and it will always be the most + # deeply-nested frame. + # + # @return [Symbol?] + attr_reader :type + + # The name of the stack frame. For mixin frames, this is the mixin name; + # otherwise, it's `nil`. + # + # @return [String?] + attr_reader :name + + def initialize(filename, line, type, name = nil) + @filename = filename + @line = line + @type = type + @name = name + end + + # Whether this frame represents an import. + # + # @return [Boolean] + def is_import? + type == :import + end + + # Whether this frame represents a mixin. + # + # @return [Boolean] + def is_mixin? + type == :mixin + end + + # Whether this is the base frame. + # + # @return [Boolean] + def is_base? + type == :base + end + end + + # The stack frames. The last frame is the most deeply-nested. + # + # @return [Array] + attr_reader :frames + + def initialize + @frames = [] + end + + # Pushes a base frame onto the stack. + # + # @param filename [String] See \{Frame#filename}. + # @param line [String] See \{Frame#line}. + # @yield [] A block in which the new frame is on the stack. + def with_base(filename, line) + with_frame(filename, line, :base) {yield} + end + + # Pushes an import frame onto the stack. + # + # @param filename [String] See \{Frame#filename}. + # @param line [String] See \{Frame#line}. + # @yield [] A block in which the new frame is on the stack. + def with_import(filename, line) + with_frame(filename, line, :import) {yield} + end + + # Pushes a mixin frame onto the stack. + # + # @param filename [String] See \{Frame#filename}. + # @param line [String] See \{Frame#line}. + # @param name [String] See \{Frame#name}. + # @yield [] A block in which the new frame is on the stack. + def with_mixin(filename, line, name) + with_frame(filename, line, :mixin, name) {yield} + end + + # Pushes a function frame onto the stack. + # + # @param filename [String] See \{Frame#filename}. + # @param line [String] See \{Frame#line}. + # @param name [String] See \{Frame#name}. + # @yield [] A block in which the new frame is on the stack. + def with_function(filename, line, name) + with_frame(filename, line, :function, name) {yield} + end + + # Pushes a function frame onto the stack. + # + # @param filename [String] See \{Frame#filename}. + # @param line [String] See \{Frame#line}. + # @param name [String] See \{Frame#name}. + # @yield [] A block in which the new frame is on the stack. + def with_directive(filename, line, name) + with_frame(filename, line, :directive, name) {yield} + end + + def to_s + (frames.reverse + [nil]).each_cons(2).each_with_index. + map do |(frame, caller), i| + "#{i == 0 ? 'on' : 'from'} line #{frame.line}" + + " of #{frame.filename || 'an unknown file'}" + + (caller && caller.name ? ", in `#{caller.name}'" : "") + end.join("\n") + end + + private + + def with_frame(filename, line, type, name = nil) + @frames.pop if @frames.last && @frames.last.type == :base + @frames.push(Frame.new(filename, line, type, name)) + yield + ensure + @frames.pop unless type == :base && @frames.last && @frames.last.type != :base + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/supports.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/supports.rb new file mode 100644 index 0000000000..6869c4d62d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/supports.rb @@ -0,0 +1,225 @@ +# A namespace for the `@supports` condition parse tree. +module Sass::Supports + # The abstract superclass of all Supports conditions. + class Condition + # Runs the SassScript in the supports condition. + # + # @param environment [Sass::Environment] The environment in which to run the script. + def perform(environment); Sass::Util.abstract(self); end + + # Returns the CSS for this condition. + # + # @return [String] + def to_css; Sass::Util.abstract(self); end + + # Returns the Sass/CSS code for this condition. + # + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}). + # @return [String] + def to_src(options); Sass::Util.abstract(self); end + + # Returns a deep copy of this condition and all its children. + # + # @return [Condition] + def deep_copy; Sass::Util.abstract(self); end + + # Sets the options hash for the script nodes in the supports condition. + # + # @param options [{Symbol => Object}] The options has to set. + def options=(options); Sass::Util.abstract(self); end + end + + # An operator condition (e.g. `CONDITION1 and CONDITION2`). + class Operator < Condition + # The left-hand condition. + # + # @return [Sass::Supports::Condition] + attr_accessor :left + + # The right-hand condition. + # + # @return [Sass::Supports::Condition] + attr_accessor :right + + # The operator ("and" or "or"). + # + # @return [String] + attr_accessor :op + + def initialize(left, right, op) + @left = left + @right = right + @op = op + end + + def perform(env) + @left.perform(env) + @right.perform(env) + end + + def to_css + "#{parens @left, @left.to_css} #{op} #{parens @right, @right.to_css}" + end + + def to_src(options) + "#{parens @left, @left.to_src(options)} #{op} #{parens @right, @right.to_src(options)}" + end + + def deep_copy + copy = dup + copy.left = @left.deep_copy + copy.right = @right.deep_copy + copy + end + + def options=(options) + @left.options = options + @right.options = options + end + + private + + def parens(condition, str) + if condition.is_a?(Negation) || (condition.is_a?(Operator) && condition.op != op) + return "(#{str})" + else + return str + end + end + end + + # A negation condition (`not CONDITION`). + class Negation < Condition + # The condition being negated. + # + # @return [Sass::Supports::Condition] + attr_accessor :condition + + def initialize(condition) + @condition = condition + end + + def perform(env) + @condition.perform(env) + end + + def to_css + "not #{parens @condition.to_css}" + end + + def to_src(options) + "not #{parens @condition.to_src(options)}" + end + + def deep_copy + copy = dup + copy.condition = condition.deep_copy + copy + end + + def options=(options) + condition.options = options + end + + private + + def parens(str) + return "(#{str})" if @condition.is_a?(Negation) || @condition.is_a?(Operator) + str + end + end + + # A declaration condition (e.g. `(feature: value)`). + class Declaration < Condition + # @return [Sass::Script::Tree::Node] The feature name. + attr_accessor :name + + # @!attribute resolved_name + # The name of the feature after any SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_name + + # The feature value. + # + # @return [Sass::Script::Tree::Node] + attr_accessor :value + + # The value of the feature after any SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_value + + def initialize(name, value) + @name = name + @value = value + end + + def perform(env) + @resolved_name = name.perform(env) + @resolved_value = value.perform(env) + end + + def to_css + "(#{@resolved_name}: #{@resolved_value})" + end + + def to_src(options) + "(#{@name.to_sass(options)}: #{@value.to_sass(options)})" + end + + def deep_copy + copy = dup + copy.name = @name.deep_copy + copy.value = @value.deep_copy + copy + end + + def options=(options) + @name.options = options + @value.options = options + end + end + + # An interpolation condition (e.g. `#{$var}`). + class Interpolation < Condition + # The SassScript expression in the interpolation. + # + # @return [Sass::Script::Tree::Node] + attr_accessor :value + + # The value of the expression after it's been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_value + + def initialize(value) + @value = value + end + + def perform(env) + @resolved_value = value.perform(env).to_s(:quote => :none) + end + + def to_css + @resolved_value + end + + def to_src(options) + @value.to_sass(options) + end + + def deep_copy + copy = dup + copy.value = @value.deep_copy + copy + end + + def options=(options) + @value.options = options + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/at_root_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/at_root_node.rb new file mode 100644 index 0000000000..e44d7aaa81 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/at_root_node.rb @@ -0,0 +1,83 @@ +module Sass + module Tree + # A dynamic node representing an `@at-root` directive. + # + # An `@at-root` directive with a selector is converted to an \{AtRootNode} + # containing a \{RuleNode} at parse time. + # + # @see Sass::Tree + class AtRootNode < Node + # The query for this node (e.g. `(without: media)`), + # interspersed with {Sass::Script::Tree::Node}s representing + # `#{}`-interpolation. Any adjacent strings will be merged + # together. + # + # This will be nil if the directive didn't have a query. In this + # case, {#resolved\_type} will automatically be set to + # `:without` and {#resolved\_rule} will automatically be set to `["rule"]`. + # + # @return [Array] + attr_accessor :query + + # The resolved type of this directive. `:with` or `:without`. + # + # @return [Symbol] + attr_accessor :resolved_type + + # The resolved value of this directive -- a list of directives + # to either include or exclude. + # + # @return [Array] + attr_accessor :resolved_value + + # The number of additional tabs that the contents of this node + # should be indented. + # + # @return [Number] + attr_accessor :tabs + + # Whether the last child of this node should be considered the + # end of a group. + # + # @return [Boolean] + attr_accessor :group_end + + def initialize(query = nil) + super() + @query = Sass::Util.strip_string_array(Sass::Util.merge_adjacent_strings(query)) if query + @tabs = 0 + end + + # Returns whether or not the given directive is excluded by this + # node. `directive` may be "rule", which indicates whether + # normal CSS rules should be excluded. + # + # @param directive [String] + # @return [Boolean] + def exclude?(directive) + if resolved_type == :with + return false if resolved_value.include?('all') + !resolved_value.include?(directive) + else # resolved_type == :without + return true if resolved_value.include?('all') + resolved_value.include?(directive) + end + end + + # Returns whether the given node is excluded by this node. + # + # @param node [Sass::Tree::Node] + # @return [Boolean] + def exclude_node?(node) + return exclude?(node.name.gsub(/^@/, '')) if node.is_a?(Sass::Tree::DirectiveNode) + return exclude?('keyframes') if node.is_a?(Sass::Tree::KeyframeRuleNode) + exclude?('rule') && node.is_a?(Sass::Tree::RuleNode) + end + + # @see Node#bubbles? + def bubbles? + true + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/charset_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/charset_node.rb new file mode 100644 index 0000000000..8204d88508 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/charset_node.rb @@ -0,0 +1,22 @@ +module Sass::Tree + # A static node representing an unprocessed Sass `@charset` directive. + # + # @see Sass::Tree + class CharsetNode < Node + # The name of the charset. + # + # @return [String] + attr_accessor :name + + # @param name [String] see \{#name} + def initialize(name) + @name = name + super() + end + + # @see Node#invisible? + def invisible? + true + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/comment_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/comment_node.rb new file mode 100644 index 0000000000..1b73a1590f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/comment_node.rb @@ -0,0 +1,82 @@ +require 'sass/tree/node' + +module Sass::Tree + # A static node representing a Sass comment (silent or loud). + # + # @see Sass::Tree + class CommentNode < Node + # The text of the comment, not including `/*` and `*/`. + # Interspersed with {Sass::Script::Tree::Node}s representing `#{}`-interpolation + # if this is a loud comment. + # + # @return [Array] + attr_accessor :value + + # The text of the comment + # after any interpolated SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_value + + # The type of the comment. `:silent` means it's never output to CSS, + # `:normal` means it's output in every compile mode except `:compressed`, + # and `:loud` means it's output even in `:compressed`. + # + # @return [Symbol] + attr_accessor :type + + # @param value [Array] See \{#value} + # @param type [Symbol] See \{#type} + def initialize(value, type) + @value = Sass::Util.with_extracted_values(value) {|str| normalize_indentation str} + @type = type + super() + end + + # Compares the contents of two comments. + # + # @param other [Object] The object to compare with + # @return [Boolean] Whether or not this node and the other object + # are the same + def ==(other) + self.class == other.class && value == other.value && type == other.type + end + + # Returns `true` if this is a silent comment + # or the current style doesn't render comments. + # + # Comments starting with ! are never invisible (and the ! is removed from the output.) + # + # @return [Boolean] + def invisible? + case @type + when :loud; false + when :silent; true + else; style == :compressed + end + end + + # Returns the number of lines in the comment. + # + # @return [Integer] + def lines + @value.inject(0) do |s, e| + next s + e.count("\n") if e.is_a?(String) + next s + end + end + + private + + def normalize_indentation(str) + ind = str.split("\n").inject(str[/^[ \t]*/].split("")) do |pre, line| + line[/^[ \t]*/].split("").zip(pre).inject([]) do |arr, (a, b)| + break arr if a != b + arr << a + end + end.join + str.gsub(/^#{ind}/, '') + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/content_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/content_node.rb new file mode 100644 index 0000000000..3f6528f80f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/content_node.rb @@ -0,0 +1,9 @@ +module Sass + module Tree + # A node representing the placement within a mixin of the include statement's content. + # + # @see Sass::Tree + class ContentNode < Node + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/css_import_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/css_import_node.rb new file mode 100644 index 0000000000..d9a592693e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/css_import_node.rb @@ -0,0 +1,68 @@ +module Sass::Tree + # A node representing an `@import` rule that's importing plain CSS. + # + # @see Sass::Tree + class CssImportNode < DirectiveNode + # The URI being imported, either as a plain string or an interpolated + # script string. + # + # @return [String, Sass::Script::Tree::Node] + attr_accessor :uri + + # The text of the URI being imported after any interpolated SassScript has + # been resolved. Only set once {Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_uri + + # The supports condition for this import. + # + # @return [Sass::Supports::Condition] + attr_accessor :supports_condition + + # The media query for this rule, interspersed with + # {Sass::Script::Tree::Node}s representing `#{}`-interpolation. Any adjacent + # strings will be merged together. + # + # @return [Array] + attr_accessor :query + + # The media query for this rule, without any unresolved interpolation. + # It's only set once {Tree::Visitors::Perform} has been run. + # + # @return [Sass::Media::QueryList] + attr_accessor :resolved_query + + # @param uri [String, Sass::Script::Tree::Node] See \{#uri} + # @param query [Array] See \{#query} + # @param supports_condition [Sass::Supports::Condition] See \{#supports_condition} + def initialize(uri, query = [], supports_condition = nil) + @uri = uri + @query = query + @supports_condition = supports_condition + super('') + end + + # @param uri [String] See \{#resolved_uri} + # @return [CssImportNode] + def self.resolved(uri) + node = new(uri) + node.resolved_uri = uri + node + end + + # @see DirectiveNode#value + def value; raise NotImplementedError; end + + # @see DirectiveNode#resolved_value + def resolved_value + @resolved_value ||= + begin + str = "@import #{resolved_uri}" + str << " supports(#{supports_condition.to_css})" if supports_condition + str << " #{resolved_query.to_css}" if resolved_query + str + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/debug_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/debug_node.rb new file mode 100644 index 0000000000..5cc2842253 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/debug_node.rb @@ -0,0 +1,18 @@ +module Sass + module Tree + # A dynamic node representing a Sass `@debug` statement. + # + # @see Sass::Tree + class DebugNode < Node + # The expression to print. + # @return [Script::Tree::Node] + attr_accessor :expr + + # @param expr [Script::Tree::Node] The expression to print + def initialize(expr) + @expr = expr + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/directive_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/directive_node.rb new file mode 100644 index 0000000000..315bb7014d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/directive_node.rb @@ -0,0 +1,59 @@ +module Sass::Tree + # A static node representing an unprocessed Sass `@`-directive. + # Directives known to Sass, like `@for` and `@debug`, + # are handled by their own nodes; + # only CSS directives like `@media` and `@font-face` become {DirectiveNode}s. + # + # `@import` and `@charset` are special cases; + # they become {ImportNode}s and {CharsetNode}s, respectively. + # + # @see Sass::Tree + class DirectiveNode < Node + # The text of the directive, `@` and all, with interpolation included. + # + # @return [Array] + attr_accessor :value + + # The text of the directive after any interpolated SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_value + + # @see RuleNode#tabs + attr_accessor :tabs + + # @see RuleNode#group_end + attr_accessor :group_end + + # @param value [Array] See \{#value} + def initialize(value) + @value = value + @tabs = 0 + super() + end + + # @param value [String] See \{#resolved_value} + # @return [DirectiveNode] + def self.resolved(value) + node = new([value]) + node.resolved_value = value + node + end + + # @return [String] The name of the directive, including `@`. + def name + @name ||= value.first.gsub(/ .*$/, '') + end + + # Strips out any vendor prefixes and downcases the directive name. + # @return [String] The normalized name of the directive. + def normalized_name + @normalized_name ||= name.gsub(/^(@)(?:-[a-zA-Z0-9]+-)?/, '\1').downcase + end + + def bubbles? + has_children + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/each_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/each_node.rb new file mode 100644 index 0000000000..586cfa7f1b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/each_node.rb @@ -0,0 +1,24 @@ +require 'sass/tree/node' + +module Sass::Tree + # A dynamic node representing a Sass `@each` loop. + # + # @see Sass::Tree + class EachNode < Node + # The names of the loop variables. + # @return [Array] + attr_reader :vars + + # The parse tree for the list. + # @return [Script::Tree::Node] + attr_accessor :list + + # @param vars [Array] The names of the loop variables + # @param list [Script::Tree::Node] The parse tree for the list + def initialize(vars, list) + @vars = vars + @list = list + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/error_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/error_node.rb new file mode 100644 index 0000000000..203fd6216e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/error_node.rb @@ -0,0 +1,18 @@ +module Sass + module Tree + # A dynamic node representing a Sass `@error` statement. + # + # @see Sass::Tree + class ErrorNode < Node + # The expression to print. + # @return [Script::Tree::Node] + attr_accessor :expr + + # @param expr [Script::Tree::Node] The expression to print + def initialize(expr) + @expr = expr + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/extend_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/extend_node.rb new file mode 100644 index 0000000000..817c20ce46 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/extend_node.rb @@ -0,0 +1,43 @@ +require 'sass/tree/node' + +module Sass::Tree + # A static node representing an `@extend` directive. + # + # @see Sass::Tree + class ExtendNode < Node + # The parsed selector after interpolation has been resolved. + # Only set once {Tree::Visitors::Perform} has been run. + # + # @return [Selector::CommaSequence] + attr_accessor :resolved_selector + + # The CSS selector to extend, interspersed with {Sass::Script::Tree::Node}s + # representing `#{}`-interpolation. + # + # @return [Array] + attr_accessor :selector + + # The extended selector source range. + # + # @return [Sass::Source::Range] + attr_accessor :selector_source_range + + # Whether the `@extend` is allowed to match no selectors or not. + # + # @return [Boolean] + def optional?; @optional; end + + # @param selector [Array] + # The CSS selector to extend, + # interspersed with {Sass::Script::Tree::Node}s + # representing `#{}`-interpolation. + # @param optional [Boolean] See \{ExtendNode#optional?} + # @param selector_source_range [Sass::Source::Range] The extended selector source range. + def initialize(selector, optional, selector_source_range) + @selector = selector + @optional = optional + @selector_source_range = selector_source_range + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/for_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/for_node.rb new file mode 100644 index 0000000000..da3f655a4c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/for_node.rb @@ -0,0 +1,36 @@ +require 'sass/tree/node' + +module Sass::Tree + # A dynamic node representing a Sass `@for` loop. + # + # @see Sass::Tree + class ForNode < Node + # The name of the loop variable. + # @return [String] + attr_reader :var + + # The parse tree for the initial expression. + # @return [Script::Tree::Node] + attr_accessor :from + + # The parse tree for the final expression. + # @return [Script::Tree::Node] + attr_accessor :to + + # Whether to include `to` in the loop or stop just before. + # @return [Boolean] + attr_reader :exclusive + + # @param var [String] See \{#var} + # @param from [Script::Tree::Node] See \{#from} + # @param to [Script::Tree::Node] See \{#to} + # @param exclusive [Boolean] See \{#exclusive} + def initialize(var, from, to, exclusive) + @var = var + @from = from + @to = to + @exclusive = exclusive + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/function_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/function_node.rb new file mode 100644 index 0000000000..c2ca18ab37 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/function_node.rb @@ -0,0 +1,44 @@ +module Sass + module Tree + # A dynamic node representing a function definition. + # + # @see Sass::Tree + class FunctionNode < Node + # The name of the function. + # @return [String] + attr_reader :name + + # The arguments to the function. Each element is a tuple + # containing the variable for argument and the parse tree for + # the default value of the argument + # + # @return [Array] + attr_accessor :args + + # The splat argument for this function, if one exists. + # + # @return [Script::Tree::Node?] + attr_accessor :splat + + # Strips out any vendor prefixes. + # @return [String] The normalized name of the directive. + def normalized_name + @normalized_name ||= name.gsub(/^(?:-[a-zA-Z0-9]+-)?/, '\1') + end + + # @param name [String] The function name + # @param args [Array<(Script::Tree::Node, Script::Tree::Node)>] + # The arguments for the function. + # @param splat [Script::Tree::Node] See \{#splat} + def initialize(name, args, splat) + @name = name + @args = args + @splat = splat + super() + + return unless %w(and or not).include?(name) + raise Sass::SyntaxError.new("Invalid function name \"#{name}\".") + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/if_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/if_node.rb new file mode 100644 index 0000000000..ebfec7c392 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/if_node.rb @@ -0,0 +1,52 @@ +require 'sass/tree/node' + +module Sass::Tree + # A dynamic node representing a Sass `@if` statement. + # + # {IfNode}s are a little odd, in that they also represent `@else` and `@else if`s. + # This is done as a linked list: + # each {IfNode} has a link (\{#else}) to the next {IfNode}. + # + # @see Sass::Tree + class IfNode < Node + # The conditional expression. + # If this is nil, this is an `@else` node, not an `@else if`. + # + # @return [Script::Expr] + attr_accessor :expr + + # The next {IfNode} in the if-else list, or `nil`. + # + # @return [IfNode] + attr_accessor :else + + # @param expr [Script::Expr] See \{#expr} + def initialize(expr) + @expr = expr + @last_else = self + super() + end + + # Append an `@else` node to the end of the list. + # + # @param node [IfNode] The `@else` node to append + def add_else(node) + @last_else.else = node + @last_else = node + end + + def _dump(f) + Marshal.dump([expr, self.else, children]) + end + + def self._load(data) + expr, else_, children = Marshal.load(data) + node = IfNode.new(expr) + node.else = else_ + node.children = children + node.instance_variable_set('@last_else', + node.else ? node.else.instance_variable_get('@last_else') : node) + node + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/import_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/import_node.rb new file mode 100644 index 0000000000..955bd3929b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/import_node.rb @@ -0,0 +1,75 @@ +module Sass + module Tree + # A static node that wraps the {Sass::Tree} for an `@import`ed file. + # It doesn't have a functional purpose other than to add the `@import`ed file + # to the backtrace if an error occurs. + class ImportNode < RootNode + # The name of the imported file as it appears in the Sass document. + # + # @return [String] + attr_reader :imported_filename + + # Sets the imported file. + attr_writer :imported_file + + # @param imported_filename [String] The name of the imported file + def initialize(imported_filename) + @imported_filename = imported_filename + super(nil) + end + + def invisible?; to_s.empty?; end + + # Returns the imported file. + # + # @return [Sass::Engine] + # @raise [Sass::SyntaxError] If no file could be found to import. + def imported_file + @imported_file ||= import + end + + # Returns whether or not this import should emit a CSS @import declaration + # + # @return [Boolean] Whether or not this is a simple CSS @import declaration. + def css_import? + if @imported_filename =~ /\.css$/ + @imported_filename + elsif imported_file.is_a?(String) && imported_file =~ /\.css$/ + imported_file + end + end + + private + + def import + paths = @options[:load_paths] + + if @options[:importer] + f = @options[:importer].find_relative( + @imported_filename, @options[:filename], options_for_importer) + return f if f + end + + paths.each do |p| + f = p.find(@imported_filename, options_for_importer) + return f if f + end + + lines = ["File to import not found or unreadable: #{@imported_filename}."] + + if paths.size == 1 + lines << "Load path: #{paths.first}" + elsif !paths.empty? + lines << "Load paths:\n #{paths.join("\n ")}" + end + raise SyntaxError.new(lines.join("\n")) + rescue SyntaxError => e + raise SyntaxError.new(e.message, :line => line, :filename => @filename) + end + + def options_for_importer + @options.merge(:_from_import_node => true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/keyframe_rule_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/keyframe_rule_node.rb new file mode 100644 index 0000000000..9f75f94724 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/keyframe_rule_node.rb @@ -0,0 +1,15 @@ +module Sass::Tree + class KeyframeRuleNode < Node + # The text of the directive after any interpolated SassScript has been resolved. + # Since this is only a static node, this is the only value property. + # + # @return [String] + attr_accessor :resolved_value + + # @param resolved_value [String] See \{#resolved_value} + def initialize(resolved_value) + @resolved_value = resolved_value + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/media_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/media_node.rb new file mode 100644 index 0000000000..3178de03ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/media_node.rb @@ -0,0 +1,48 @@ +module Sass::Tree + # A static node representing a `@media` rule. + # `@media` rules behave differently from other directives + # in that when they're nested within rules, + # they bubble up to top-level. + # + # @see Sass::Tree + class MediaNode < DirectiveNode + # TODO: parse and cache the query immediately if it has no dynamic elements + + # The media query for this rule, interspersed with {Sass::Script::Tree::Node}s + # representing `#{}`-interpolation. Any adjacent strings will be merged + # together. + # + # @return [Array] + attr_accessor :query + + # The media query for this rule, without any unresolved interpolation. It's + # only set once {Tree::Visitors::Perform} has been run. + # + # @return [Sass::Media::QueryList] + attr_accessor :resolved_query + + # @param query [Array] See \{#query} + def initialize(query) + @query = query + super('') + end + + # @see DirectiveNode#value + def value; raise NotImplementedError; end + + # @see DirectiveNode#name + def name; '@media'; end + + # @see DirectiveNode#resolved_value + def resolved_value + @resolved_value ||= "@media #{resolved_query.to_css}" + end + + # True when the directive has no visible children. + # + # @return [Boolean] + def invisible? + children.all? {|c| c.invisible?} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_def_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_def_node.rb new file mode 100644 index 0000000000..9ed8bfb613 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_def_node.rb @@ -0,0 +1,38 @@ +module Sass + module Tree + # A dynamic node representing a mixin definition. + # + # @see Sass::Tree + class MixinDefNode < Node + # The mixin name. + # @return [String] + attr_reader :name + + # The arguments for the mixin. + # Each element is a tuple containing the variable for argument + # and the parse tree for the default value of the argument. + # + # @return [Array<(Script::Tree::Node, Script::Tree::Node)>] + attr_accessor :args + + # The splat argument for this mixin, if one exists. + # + # @return [Script::Tree::Node?] + attr_accessor :splat + + # Whether the mixin uses `@content`. Set during the nesting check phase. + # @return [Boolean] + attr_accessor :has_content + + # @param name [String] The mixin name + # @param args [Array<(Script::Tree::Node, Script::Tree::Node)>] See \{#args} + # @param splat [Script::Tree::Node] See \{#splat} + def initialize(name, args, splat) + @name = name + @args = args + @splat = splat + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_node.rb new file mode 100644 index 0000000000..48592c1c88 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/mixin_node.rb @@ -0,0 +1,52 @@ +require 'sass/tree/node' + +module Sass::Tree + # A static node representing a mixin include. + # When in a static tree, the sole purpose is to wrap exceptions + # to add the mixin to the backtrace. + # + # @see Sass::Tree + class MixinNode < Node + # The name of the mixin. + # @return [String] + attr_reader :name + + # The arguments to the mixin. + # @return [Array] + attr_accessor :args + + # A hash from keyword argument names to values. + # @return [Sass::Util::NormalizedMap] + attr_accessor :keywords + + # The first splat argument for this mixin, if one exists. + # + # This could be a list of positional arguments, a map of keyword + # arguments, or an arglist containing both. + # + # @return [Node?] + attr_accessor :splat + + # The second splat argument for this mixin, if one exists. + # + # If this exists, it's always a map of keyword arguments, and + # \{#splat} is always either a list or an arglist. + # + # @return [Node?] + attr_accessor :kwarg_splat + + # @param name [String] The name of the mixin + # @param args [Array] See \{#args} + # @param splat [Script::Tree::Node] See \{#splat} + # @param kwarg_splat [Script::Tree::Node] See \{#kwarg_splat} + # @param keywords [Sass::Util::NormalizedMap] See \{#keywords} + def initialize(name, args, keywords, splat, kwarg_splat) + @name = name + @args = args + @keywords = keywords + @splat = splat + @kwarg_splat = kwarg_splat + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/node.rb new file mode 100644 index 0000000000..06932f559c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/node.rb @@ -0,0 +1,240 @@ +module Sass + # A namespace for nodes in the Sass parse tree. + # + # The Sass parse tree has three states: dynamic, static Sass, and static CSS. + # + # When it's first parsed, a Sass document is in the dynamic state. + # It has nodes for mixin definitions and `@for` loops and so forth, + # in addition to nodes for CSS rules and properties. + # Nodes that only appear in this state are called **dynamic nodes**. + # + # {Tree::Visitors::Perform} creates a static Sass tree, which is + # different. It still has nodes for CSS rules and properties but it + # doesn't have any dynamic-generation-related nodes. The nodes in + # this state are in a similar structure to the Sass document: rules + # and properties are nested beneath one another, although the + # {Tree::RuleNode} selectors are already in their final state. Nodes + # that can be in this state or in the dynamic state are called + # **static nodes**; nodes that can only be in this state are called + # **solely static nodes**. + # + # {Tree::Visitors::Cssize} is then used to create a static CSS tree. + # This is like a static Sass tree, + # but the structure exactly mirrors that of the generated CSS. + # Rules and properties can't be nested beneath one another in this state. + # + # Finally, {Tree::Visitors::ToCss} can be called on a static CSS tree + # to get the actual CSS code as a string. + module Tree + # The abstract superclass of all parse-tree nodes. + class Node + include Enumerable + + def self.inherited(base) + node_name = base.name.gsub(/.*::(.*?)Node$/, '\\1').downcase + base.instance_eval <<-METHODS + # @return [Symbol] The name that is used for this node when visiting. + def node_name + :#{node_name} + end + + # @return [Symbol] The method that is used on the visitor to visit nodes of this type. + def visit_method + :visit_#{node_name} + end + + # @return [Symbol] The method name that determines if the parent is invalid. + def invalid_child_method_name + :"invalid_#{node_name}_child?" + end + + # @return [Symbol] The method name that determines if the node is an invalid parent. + def invalid_parent_method_name + :"invalid_#{node_name}_parent?" + end + METHODS + end + + # The child nodes of this node. + # + # @return [Array] + attr_reader :children + + # Whether or not this node has child nodes. + # This may be true even when \{#children} is empty, + # in which case this node has an empty block (e.g. `{}`). + # + # @return [Boolean] + attr_accessor :has_children + + # The line of the document on which this node appeared. + # + # @return [Integer] + attr_accessor :line + + # The source range in the document on which this node appeared. + # + # @return [Sass::Source::Range] + attr_accessor :source_range + + # The name of the document on which this node appeared. + # + # @return [String] + attr_writer :filename + + # The options hash for the node. + # See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # + # @return [{Symbol => Object}] + attr_reader :options + + def initialize + @children = [] + @filename = nil + @options = nil + end + + # Sets the options hash for the node and all its children. + # + # @param options [{Symbol => Object}] The options + # @see #options + def options=(options) + Sass::Tree::Visitors::SetOptions.visit(self, options) + end + + # @private + def children=(children) + self.has_children ||= !children.empty? + @children = children + end + + # The name of the document on which this node appeared. + # + # @return [String] + def filename + @filename || (@options && @options[:filename]) + end + + # Appends a child to the node. + # + # @param child [Tree::Node, Array] The child node or nodes + # @raise [Sass::SyntaxError] if `child` is invalid + def <<(child) + return if child.nil? + if child.is_a?(Array) + child.each {|c| self << c} + else + self.has_children = true + @children << child + end + end + + # Compares this node and another object (only other {Tree::Node}s will be equal). + # This does a structural comparison; + # if the contents of the nodes and all the child nodes are equivalent, + # then the nodes are as well. + # + # Only static nodes need to override this. + # + # @param other [Object] The object to compare with + # @return [Boolean] Whether or not this node and the other object + # are the same + # @see Sass::Tree + def ==(other) + self.class == other.class && other.children == children + end + + # True if \{#to\_s} will return `nil`; + # that is, if the node shouldn't be rendered. + # Should only be called in a static tree. + # + # @return [Boolean] + def invisible?; false; end + + # The output style. See {file:SASS_REFERENCE.md#Options the Sass options documentation}. + # + # @return [Symbol] + def style + @options[:style] + end + + # Computes the CSS corresponding to this static CSS tree. + # + # @return [String] The resulting CSS + # @see Sass::Tree + def css + Sass::Tree::Visitors::ToCss.new.visit(self) + end + + # Computes the CSS corresponding to this static CSS tree, along with + # the respective source map. + # + # @return [(String, Sass::Source::Map)] The resulting CSS and the source map + # @see Sass::Tree + def css_with_sourcemap + visitor = Sass::Tree::Visitors::ToCss.new(:build_source_mapping) + result = visitor.visit(self) + return result, visitor.source_mapping + end + + # Returns a representation of the node for debugging purposes. + # + # @return [String] + def inspect + return self.class.to_s unless has_children + "(#{self.class} #{children.map {|c| c.inspect}.join(' ')})" + end + + # Iterates through each node in the tree rooted at this node + # in a pre-order walk. + # + # @yield node + # @yieldparam node [Node] a node in the tree + def each + yield self + children.each {|c| c.each {|n| yield n}} + end + + # Converts a node to Sass code that will generate it. + # + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) + # @return [String] The Sass code corresponding to the node + def to_sass(options = {}) + Sass::Tree::Visitors::Convert.visit(self, options, :sass) + end + + # Converts a node to SCSS code that will generate it. + # + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) + # @return [String] The Sass code corresponding to the node + def to_scss(options = {}) + Sass::Tree::Visitors::Convert.visit(self, options, :scss) + end + + # Return a deep clone of this node. + # The child nodes are cloned, but options are not. + # + # @return [Node] + def deep_copy + Sass::Tree::Visitors::DeepCopy.visit(self) + end + + # Whether or not this node bubbles up through RuleNodes. + # + # @return [Boolean] + def bubbles? + false + end + + protected + + # @see Sass::Shared.balance + # @raise [Sass::SyntaxError] if the brackets aren't balanced + def balance(*args) + res = Sass::Shared.balance(*args) + return res if res + raise Sass::SyntaxError.new("Unbalanced brackets.", :line => line) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/prop_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/prop_node.rb new file mode 100644 index 0000000000..7ce8bdde4c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/prop_node.rb @@ -0,0 +1,162 @@ +module Sass::Tree + # A static node representing a CSS property. + # + # @see Sass::Tree + class PropNode < Node + # The name of the property, + # interspersed with {Sass::Script::Tree::Node}s + # representing `#{}`-interpolation. + # Any adjacent strings will be merged together. + # + # @return [Array] + attr_accessor :name + + # The name of the property + # after any interpolated SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_name + + # The value of the property. + # + # For most properties, this will just contain a single Node. However, for + # CSS variables, it will contain multiple strings and nodes representing + # interpolation. Any adjacent strings will be merged together. + # + # @return [Array] + attr_accessor :value + + # The value of the property + # after any interpolated SassScript has been resolved. + # Only set once \{Tree::Visitors::Perform} has been run. + # + # @return [String] + attr_accessor :resolved_value + + # How deep this property is indented + # relative to a normal property. + # This is only greater than 0 in the case that: + # + # * This node is in a CSS tree + # * The style is :nested + # * This is a child property of another property + # * The parent property has a value, and thus will be rendered + # + # @return [Integer] + attr_accessor :tabs + + # The source range in which the property name appears. + # + # @return [Sass::Source::Range] + attr_accessor :name_source_range + + # The source range in which the property value appears. + # + # @return [Sass::Source::Range] + attr_accessor :value_source_range + + # Whether this represents a CSS custom property. + # + # @return [Boolean] + def custom_property? + name.first.is_a?(String) && name.first.start_with?("--") + end + + # @param name [Array] See \{#name} + # @param value [Array] See \{#value} + # @param prop_syntax [Symbol] `:new` if this property uses `a: b`-style syntax, + # `:old` if it uses `:a b`-style syntax + def initialize(name, value, prop_syntax) + @name = Sass::Util.strip_string_array( + Sass::Util.merge_adjacent_strings(name)) + @value = Sass::Util.merge_adjacent_strings(value) + @value = Sass::Util.strip_string_array(@value) unless custom_property? + @tabs = 0 + @prop_syntax = prop_syntax + super() + end + + # Compares the names and values of two properties. + # + # @param other [Object] The object to compare with + # @return [Boolean] Whether or not this node and the other object + # are the same + def ==(other) + self.class == other.class && name == other.name && value == other.value && super + end + + # Returns a appropriate message indicating how to escape pseudo-class selectors. + # This only applies for old-style properties with no value, + # so returns the empty string if this is new-style. + # + # @return [String] The message + def pseudo_class_selector_message + if @prop_syntax == :new || + custom_property? || + !value.first.is_a?(Sass::Script::Tree::Literal) || + !value.first.value.is_a?(Sass::Script::Value::String) || + !value.first.value.value.empty? + return "" + end + + "\nIf #{declaration.dump} should be a selector, use \"\\#{declaration}\" instead." + end + + # Computes the Sass or SCSS code for the variable declaration. + # This is like \{#to\_scss} or \{#to\_sass}, + # except it doesn't print any child properties or a trailing semicolon. + # + # @param opts [{Symbol => Object}] The options hash for the tree. + # @param fmt [Symbol] `:scss` or `:sass`. + def declaration(opts = {:old => @prop_syntax == :old}, fmt = :sass) + name = self.name.map {|n| n.is_a?(String) ? n : n.to_sass(opts)}.join + value = self.value.map {|n| n.is_a?(String) ? n : n.to_sass(opts)}.join + value = "(#{value})" if value_needs_parens? + + if name[0] == ?: + raise Sass::SyntaxError.new("The \"#{name}: #{value}\"" + + " hack is not allowed in the Sass indented syntax") + end + + # The indented syntax doesn't support newlines in custom property values, + # but we can losslessly convert them to spaces instead. + value = value.tr("\n", " ") if fmt == :sass + + old = opts[:old] && fmt == :sass + "#{old ? ':' : ''}#{name}#{old ? '' : ':'}#{custom_property? ? '' : ' '}#{value}".rstrip + end + + # A property node is invisible if its value is empty. + # + # @return [Boolean] + def invisible? + !custom_property? && resolved_value.empty? + end + + private + + # Returns whether \{#value} neesd parentheses in order to be parsed + # properly as division. + def value_needs_parens? + return false if custom_property? + + root = value.first + root.is_a?(Sass::Script::Tree::Operation) && + root.operator == :div && + root.operand1.is_a?(Sass::Script::Tree::Literal) && + root.operand1.value.is_a?(Sass::Script::Value::Number) && + root.operand1.value.original.nil? && + root.operand2.is_a?(Sass::Script::Tree::Literal) && + root.operand2.value.is_a?(Sass::Script::Value::Number) && + root.operand2.value.original.nil? + end + + def check! + return unless @options[:property_syntax] && @options[:property_syntax] != @prop_syntax + raise Sass::SyntaxError.new( + "Illegal property syntax: can't use #{@prop_syntax} syntax when " + + ":property_syntax => #{@options[:property_syntax].inspect} is set.") + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/return_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/return_node.rb new file mode 100644 index 0000000000..3056406bdc --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/return_node.rb @@ -0,0 +1,19 @@ +module Sass + module Tree + # A dynamic node representing returning from a function. + # + # @see Sass::Tree + class ReturnNode < Node + # The expression to return. + # + # @return [Script::Tree::Node] + attr_accessor :expr + + # @param expr [Script::Tree::Node] The expression to return + def initialize(expr) + @expr = expr + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/root_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/root_node.rb new file mode 100644 index 0000000000..1f02cbd095 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/root_node.rb @@ -0,0 +1,44 @@ +module Sass + module Tree + # A static node that is the root node of the Sass document. + class RootNode < Node + # The Sass template from which this node was created + # + # @param template [String] + attr_reader :template + + # @param template [String] The Sass template from which this node was created + def initialize(template) + super() + @template = template + end + + # Runs the dynamic Sass code and computes the CSS for the tree. + # + # @return [String] The compiled CSS. + def render + css_tree.css + end + + # Runs the dynamic Sass code and computes the CSS for the tree, along with + # the sourcemap. + # + # @return [(String, Sass::Source::Map)] The compiled CSS, as well as + # the source map. @see #render + def render_with_sourcemap + css_tree.css_with_sourcemap + end + + private + + def css_tree + Visitors::CheckNesting.visit(self) + result = Visitors::Perform.visit(self) + Visitors::CheckNesting.visit(result) # Check again to validate mixins + result, extends = Visitors::Cssize.visit(result) + Visitors::Extend.visit(result, extends) + result + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/rule_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/rule_node.rb new file mode 100644 index 0000000000..e621939a8e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/rule_node.rb @@ -0,0 +1,153 @@ +require 'pathname' + +module Sass::Tree + # A static node representing a CSS rule. + # + # @see Sass::Tree + class RuleNode < Node + # The character used to include the parent selector + PARENT = '&' + + # The CSS selector for this rule, + # interspersed with {Sass::Script::Tree::Node}s + # representing `#{}`-interpolation. + # Any adjacent strings will be merged together. + # + # @return [Array] + attr_accessor :rule + + # The CSS selector for this rule, without any unresolved + # interpolation but with parent references still intact. It's only + # guaranteed to be set once {Tree::Visitors::Perform} has been + # run, but it may be set before then for optimization reasons. + # + # @return [Selector::CommaSequence] + attr_accessor :parsed_rules + + # The CSS selector for this rule, without any unresolved + # interpolation or parent references. It's only set once + # {Tree::Visitors::Perform} has been run. + # + # @return [Selector::CommaSequence] + attr_accessor :resolved_rules + + # How deep this rule is indented + # relative to a base-level rule. + # This is only greater than 0 in the case that: + # + # * This node is in a CSS tree + # * The style is :nested + # * This is a child rule of another rule + # * The parent rule has properties, and thus will be rendered + # + # @return [Integer] + attr_accessor :tabs + + # The entire selector source range for this rule. + # @return [Sass::Source::Range] + attr_accessor :selector_source_range + + # Whether or not this rule is the last rule in a nested group. + # This is only set in a CSS tree. + # + # @return [Boolean] + attr_accessor :group_end + + # The stack trace. + # This is only readable in a CSS tree as it is written during the perform step + # and only when the :trace_selectors option is set. + # + # @return [String] + attr_accessor :stack_trace + + # @param rule [Array, Sass::Selector::CommaSequence] + # The CSS rule, either unparsed or parsed. + # @param selector_source_range [Sass::Source::Range] + def initialize(rule, selector_source_range = nil) + if rule.is_a?(Sass::Selector::CommaSequence) + @rule = [rule.to_s] + @parsed_rules = rule + else + merged = Sass::Util.merge_adjacent_strings(rule) + @rule = Sass::Util.strip_string_array(merged) + try_to_parse_non_interpolated_rules + end + @selector_source_range = selector_source_range + @tabs = 0 + super() + end + + # If we've precached the parsed selector, set the line on it, too. + def line=(line) + @parsed_rules.line = line if @parsed_rules + super + end + + # If we've precached the parsed selector, set the filename on it, too. + def filename=(filename) + @parsed_rules.filename = filename if @parsed_rules + super + end + + # Compares the contents of two rules. + # + # @param other [Object] The object to compare with + # @return [Boolean] Whether or not this node and the other object + # are the same + def ==(other) + self.class == other.class && rule == other.rule && super + end + + # Adds another {RuleNode}'s rules to this one's. + # + # @param node [RuleNode] The other node + def add_rules(node) + @rule = Sass::Util.strip_string_array( + Sass::Util.merge_adjacent_strings(@rule + ["\n"] + node.rule)) + try_to_parse_non_interpolated_rules + end + + # @return [Boolean] Whether or not this rule is continued on the next line + def continued? + last = @rule.last + last.is_a?(String) && last[-1] == ?, + end + + # A hash that will be associated with this rule in the CSS document + # if the {file:SASS_REFERENCE.md#debug_info-option `:debug_info` option} is enabled. + # This data is used by e.g. [the FireSass Firebug + # extension](https://addons.mozilla.org/en-US/firefox/addon/103988). + # + # @return [{#to_s => #to_s}] + def debug_info + {:filename => filename && + ("file://" + URI::DEFAULT_PARSER.escape(File.expand_path(filename))), + :line => line} + end + + # A rule node is invisible if it has only placeholder selectors. + def invisible? + resolved_rules.members.all? {|seq| seq.invisible?} + end + + private + + def try_to_parse_non_interpolated_rules + @parsed_rules = nil + return unless @rule.all? {|t| t.is_a?(String)} + + # We don't use real filename/line info because we don't have it yet. + # When we get it, we'll set it on the parsed rules if possible. + parser = nil + warnings = Sass.logger.capture do + parser = Sass::SCSS::StaticParser.new( + Sass::Util.strip_except_escapes(@rule.join), nil, nil, 1) + @parsed_rules = parser.parse_selector rescue nil + end + + # If parsing produces a warning, throw away the result so we can parse + # later with the real filename info. + @parsed_rules = nil unless warnings.empty? + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/supports_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/supports_node.rb new file mode 100644 index 0000000000..1a2f04b68c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/supports_node.rb @@ -0,0 +1,38 @@ +module Sass::Tree + # A static node representing a `@supports` rule. + # + # @see Sass::Tree + class SupportsNode < DirectiveNode + # The name, which may include a browser prefix. + # + # @return [String] + attr_accessor :name + + # The supports condition. + # + # @return [Sass::Supports::Condition] + attr_accessor :condition + + # @param condition [Sass::Supports::Condition] See \{#condition} + def initialize(name, condition) + @name = name + @condition = condition + super('') + end + + # @see DirectiveNode#value + def value; raise NotImplementedError; end + + # @see DirectiveNode#resolved_value + def resolved_value + @resolved_value ||= "@#{name} #{condition.to_css}" + end + + # True when the directive has no visible children. + # + # @return [Boolean] + def invisible? + children.all? {|c| c.invisible?} + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/trace_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/trace_node.rb new file mode 100644 index 0000000000..2c71e8892b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/trace_node.rb @@ -0,0 +1,33 @@ +require 'sass/tree/node' + +module Sass::Tree + # A solely static node left over after a mixin include or @content has been performed. + # Its sole purpose is to wrap exceptions to add to the backtrace. + # + # @see Sass::Tree + class TraceNode < Node + # The name of the trace entry to add. + # + # @return [String] + attr_reader :name + + # @param name [String] The name of the trace entry to add. + def initialize(name) + @name = name + self.has_children = true + super() + end + + # Initializes this node from an existing node. + # @param name [String] The name of the trace entry to add. + # @param node [Node] The node to copy information from. + # @return [TraceNode] + def self.from_node(name, node) + trace = new(name) + trace.line = node.line + trace.filename = node.filename + trace.options = node.options + trace + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/variable_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/variable_node.rb new file mode 100644 index 0000000000..2c0ed55295 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/variable_node.rb @@ -0,0 +1,36 @@ +module Sass + module Tree + # A dynamic node representing a variable definition. + # + # @see Sass::Tree + class VariableNode < Node + # The name of the variable. + # @return [String] + attr_reader :name + + # The parse tree for the variable value. + # @return [Script::Tree::Node] + attr_accessor :expr + + # Whether this is a guarded variable assignment (`!default`). + # @return [Boolean] + attr_reader :guarded + + # Whether this is a global variable assignment (`!global`). + # @return [Boolean] + attr_reader :global + + # @param name [String] The name of the variable + # @param expr [Script::Tree::Node] See \{#expr} + # @param guarded [Boolean] See \{#guarded} + # @param global [Boolean] See \{#global} + def initialize(name, expr, guarded, global) + @name = name + @expr = expr + @guarded = guarded + @global = global + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/base.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/base.rb new file mode 100644 index 0000000000..2c8e1343bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/base.rb @@ -0,0 +1,72 @@ +# Visitors are used to traverse the Sass parse tree. +# Visitors should extend {Visitors::Base}, +# which provides a small amount of scaffolding for traversal. +module Sass::Tree::Visitors + # The abstract base class for Sass visitors. + # Visitors should extend this class, + # then implement `visit_*` methods for each node they care about + # (e.g. `visit_rule` for {RuleNode} or `visit_for` for {ForNode}). + # These methods take the node in question as argument. + # They may `yield` to visit the child nodes of the current node. + # + # *Note*: due to the unusual nature of {Sass::Tree::IfNode}, + # special care must be taken to ensure that it is properly handled. + # In particular, there is no built-in scaffolding + # for dealing with the return value of `@else` nodes. + # + # @abstract + class Base + # Runs the visitor on a tree. + # + # @param root [Tree::Node] The root node of the Sass tree. + # @return [Object] The return value of \{#visit} for the root node. + def self.visit(root) + new.send(:visit, root) + end + + protected + + # Runs the visitor on the given node. + # This can be overridden by subclasses that need to do something for each node. + # + # @param node [Tree::Node] The node to visit. + # @return [Object] The return value of the `visit_*` method for this node. + def visit(node) + if respond_to?(node.class.visit_method, true) + send(node.class.visit_method, node) {visit_children(node)} + else + visit_children(node) + end + end + + # Visit the child nodes for a given node. + # This can be overridden by subclasses that need to do something + # with the child nodes' return values. + # + # This method is run when `visit_*` methods `yield`, + # and its return value is returned from the `yield`. + # + # @param parent [Tree::Node] The parent node of the children to visit. + # @return [Array] The return values of the `visit_*` methods for the children. + def visit_children(parent) + parent.children.map {|c| visit(c)} + end + + # Returns the name of a node as used in the `visit_*` method. + # + # @param [Tree::Node] node The node. + # @return [String] The name. + def self.node_name(node) + Sass::Util.deprecated(self, "Call node.class.node_name instead.") + node.class.node_name + end + + # `yield`s, then runs the visitor on the `@else` clause if the node has one. + # This exists to ensure that the contents of the `@else` clause get visited. + def visit_if(node) + yield + visit(node.else) if node.else + node + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/check_nesting.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/check_nesting.rb new file mode 100644 index 0000000000..05541ef5a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/check_nesting.rb @@ -0,0 +1,173 @@ +# A visitor for checking that all nodes are properly nested. +class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base + protected + + def initialize + @parents = [] + @parent = nil + @current_mixin_def = nil + end + + def visit(node) + if (error = @parent && ( + try_send(@parent.class.invalid_child_method_name, @parent, node) || + try_send(node.class.invalid_parent_method_name, @parent, node))) + raise Sass::SyntaxError.new(error) + end + super + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + CONTROL_NODES = [Sass::Tree::EachNode, Sass::Tree::ForNode, Sass::Tree::IfNode, + Sass::Tree::WhileNode, Sass::Tree::TraceNode] + SCRIPT_NODES = [Sass::Tree::ImportNode] + CONTROL_NODES + def visit_children(parent) + old_parent = @parent + + # When checking a static tree, resolve at-roots to be sure they won't send + # nodes where they don't belong. + if parent.is_a?(Sass::Tree::AtRootNode) && parent.resolved_value + old_parents = @parents + @parents = @parents.reject {|p| parent.exclude_node?(p)} + @parent = @parents.reverse.each_with_index. + find {|p, i| !transparent_parent?(p, @parents[-i - 2])}.first + + begin + return super + ensure + @parents = old_parents + @parent = old_parent + end + end + + unless transparent_parent?(parent, old_parent) + @parent = parent + end + + @parents.push parent + begin + super + ensure + @parent = old_parent + @parents.pop + end + end + + def visit_root(node) + yield + rescue Sass::SyntaxError => e + e.sass_template ||= node.template + raise e + end + + def visit_import(node) + yield + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.children.first.filename) + e.add_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + def visit_mixindef(node) + @current_mixin_def, old_mixin_def = node, @current_mixin_def + yield + ensure + @current_mixin_def = old_mixin_def + end + + def invalid_content_parent?(parent, child) + if @current_mixin_def + @current_mixin_def.has_content = true + nil + else + "@content may only be used within a mixin." + end + end + + def invalid_charset_parent?(parent, child) + "@charset may only be used at the root of a document." unless parent.is_a?(Sass::Tree::RootNode) + end + + VALID_EXTEND_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::MixinDefNode, Sass::Tree::MixinNode] + def invalid_extend_parent?(parent, child) + return if is_any_of?(parent, VALID_EXTEND_PARENTS) + "Extend directives may only be used within rules." + end + + INVALID_IMPORT_PARENTS = CONTROL_NODES + + [Sass::Tree::MixinDefNode, Sass::Tree::MixinNode] + def invalid_import_parent?(parent, child) + unless (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty? + return "Import directives may not be used within control directives or mixins." + end + return if parent.is_a?(Sass::Tree::RootNode) + return "CSS import directives may only be used at the root of a document." if child.css_import? + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => child.imported_file.options[:filename]) + e.add_backtrace(:filename => child.filename, :line => child.line) + raise e + end + + def invalid_mixindef_parent?(parent, child) + return if (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty? + "Mixins may not be defined within control directives or other mixins." + end + + def invalid_function_parent?(parent, child) + return if (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty? + "Functions may not be defined within control directives or other mixins." + end + + VALID_FUNCTION_CHILDREN = [ + Sass::Tree::CommentNode, Sass::Tree::DebugNode, Sass::Tree::ReturnNode, + Sass::Tree::VariableNode, Sass::Tree::WarnNode, Sass::Tree::ErrorNode + ] + CONTROL_NODES + def invalid_function_child?(parent, child) + return if is_any_of?(child, VALID_FUNCTION_CHILDREN) + "Functions can only contain variable declarations and control directives." + end + + VALID_PROP_CHILDREN = CONTROL_NODES + [Sass::Tree::CommentNode, + Sass::Tree::PropNode, + Sass::Tree::MixinNode] + def invalid_prop_child?(parent, child) + return if is_any_of?(child, VALID_PROP_CHILDREN) + "Illegal nesting: Only properties may be nested beneath properties." + end + + VALID_PROP_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::KeyframeRuleNode, Sass::Tree::PropNode, + Sass::Tree::MixinDefNode, Sass::Tree::DirectiveNode, Sass::Tree::MixinNode] + def invalid_prop_parent?(parent, child) + return if is_any_of?(parent, VALID_PROP_PARENTS) + "Properties are only allowed within rules, directives, mixin includes, or other properties." + + child.pseudo_class_selector_message + end + + def invalid_return_parent?(parent, child) + "@return may only be used within a function." unless parent.is_a?(Sass::Tree::FunctionNode) + end + + private + + # Whether `parent` should be assigned to `@parent`. + def transparent_parent?(parent, grandparent) + is_any_of?(parent, SCRIPT_NODES) || + (parent.bubbles? && + !grandparent.is_a?(Sass::Tree::RootNode) && + !grandparent.is_a?(Sass::Tree::AtRootNode)) + end + + def is_any_of?(val, classes) + classes.each do |c| + return true if val.is_a?(c) + end + false + end + + def try_send(method, *args) + return unless respond_to?(method, true) + send(method, *args) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/convert.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/convert.rb new file mode 100644 index 0000000000..ded21a23bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/convert.rb @@ -0,0 +1,350 @@ +# A visitor for converting a Sass tree into a source string. +class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base + # Runs the visitor on a tree. + # + # @param root [Tree::Node] The root node of the Sass tree. + # @param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}). + # @param format [Symbol] `:sass` or `:scss`. + # @return [String] The Sass or SCSS source for the tree. + def self.visit(root, options, format) + new(options, format).send(:visit, root) + end + + protected + + def initialize(options, format) + @options = options + @format = format + @tabs = 0 + # 2 spaces by default + @tab_chars = @options[:indent] || " " + @is_else = false + end + + def visit_children(parent) + @tabs += 1 + return @format == :sass ? "\n" : " {}\n" if parent.children.empty? + + res = visit_rule_level(parent.children) + + if @format == :sass + "\n" + res.rstrip + "\n" + else + " {\n" + res.rstrip + "\n#{@tab_chars * (@tabs - 1)}}\n" + end + ensure + @tabs -= 1 + end + + # Ensures proper spacing between top-level nodes. + def visit_root(node) + visit_rule_level(node.children) + end + + def visit_charset(node) + "#{tab_str}@charset \"#{node.name}\"#{semi}\n" + end + + def visit_comment(node) + value = interp_to_src(node.value) + if @format == :sass + content = value.gsub(%r{\*/$}, '').rstrip + if content =~ /\A[ \t]/ + # Re-indent SCSS comments like this: + # /* foo + # bar + # baz */ + content.gsub!(/^/, ' ') + content.sub!(%r{\A([ \t]*)/\*}, '/*\1') + end + + if content.include?("\n") + content.gsub!(/\n \*/, "\n ") + spaces = content.scan(/\n( *)/).map {|s| s.first.size}.min + sep = node.type == :silent ? "\n//" : "\n *" + if spaces >= 2 + content.gsub!(/\n /, sep) + else + content.gsub!(/\n#{' ' * spaces}/, sep) + end + end + + content.gsub!(%r{\A/\*}, '//') if node.type == :silent + content.gsub!(/^/, tab_str) + content = content.rstrip + "\n" + else + spaces = (@tab_chars * [@tabs - value[/^ */].size, 0].max) + content = if node.type == :silent + value.gsub(%r{^[/ ]\*}, '//').gsub(%r{ *\*/$}, '') + else + value + end.gsub(/^/, spaces) + "\n" + end + content + end + + def visit_debug(node) + "#{tab_str}@debug #{node.expr.to_sass(@options)}#{semi}\n" + end + + def visit_error(node) + "#{tab_str}@error #{node.expr.to_sass(@options)}#{semi}\n" + end + + def visit_directive(node) + res = "#{tab_str}#{interp_to_src(node.value)}" + res.gsub!(/^@import \#\{(.*)\}([^}]*)$/, '@import \1\2') + return res + "#{semi}\n" unless node.has_children + res + yield + end + + def visit_each(node) + vars = node.vars.map {|var| "$#{dasherize(var)}"}.join(", ") + "#{tab_str}@each #{vars} in #{node.list.to_sass(@options)}#{yield}" + end + + def visit_extend(node) + "#{tab_str}@extend #{selector_to_src(node.selector).lstrip}" + + "#{' !optional' if node.optional?}#{semi}\n" + end + + def visit_for(node) + "#{tab_str}@for $#{dasherize(node.var)} from #{node.from.to_sass(@options)} " + + "#{node.exclusive ? 'to' : 'through'} #{node.to.to_sass(@options)}#{yield}" + end + + def visit_function(node) + args = node.args.map do |v, d| + d ? "#{v.to_sass(@options)}: #{d.to_sass(@options)}" : v.to_sass(@options) + end.join(", ") + if node.splat + args << ", " unless node.args.empty? + args << node.splat.to_sass(@options) << "..." + end + + "#{tab_str}@function #{dasherize(node.name)}(#{args})#{yield}" + end + + def visit_if(node) + name = + if !@is_else + "if" + elsif node.expr + "else if" + else + "else" + end + @is_else = false + str = "#{tab_str}@#{name}" + str << " #{node.expr.to_sass(@options)}" if node.expr + str << yield + @is_else = true + str << visit(node.else) if node.else + str + ensure + @is_else = false + end + + def visit_import(node) + quote = @format == :scss ? '"' : '' + "#{tab_str}@import #{quote}#{node.imported_filename}#{quote}#{semi}\n" + end + + def visit_media(node) + "#{tab_str}@media #{query_interp_to_src(node.query)}#{yield}" + end + + def visit_supports(node) + "#{tab_str}@#{node.name} #{node.condition.to_src(@options)}#{yield}" + end + + def visit_cssimport(node) + if node.uri.is_a?(Sass::Script::Tree::Node) + str = "#{tab_str}@import #{node.uri.to_sass(@options)}" + else + str = "#{tab_str}@import #{node.uri}" + end + str << " supports(#{node.supports_condition.to_src(@options)})" if node.supports_condition + str << " #{interp_to_src(node.query)}" unless node.query.empty? + "#{str}#{semi}\n" + end + + def visit_mixindef(node) + args = + if node.args.empty? && node.splat.nil? + "" + else + str = '(' + str << node.args.map do |v, d| + if d + "#{v.to_sass(@options)}: #{d.to_sass(@options)}" + else + v.to_sass(@options) + end + end.join(", ") + + if node.splat + str << ", " unless node.args.empty? + str << node.splat.to_sass(@options) << '...' + end + + str << ')' + end + + "#{tab_str}#{@format == :sass ? '=' : '@mixin '}#{dasherize(node.name)}#{args}#{yield}" + end + + def visit_mixin(node) + arg_to_sass = lambda do |arg| + sass = arg.to_sass(@options) + sass = "(#{sass})" if arg.is_a?(Sass::Script::Tree::ListLiteral) && arg.separator == :comma + sass + end + + unless node.args.empty? && node.keywords.empty? && node.splat.nil? + args = node.args.map(&arg_to_sass) + keywords = node.keywords.as_stored.to_a.map {|k, v| "$#{dasherize(k)}: #{arg_to_sass[v]}"} + + if node.splat + splat = "#{arg_to_sass[node.splat]}..." + kwarg_splat = "#{arg_to_sass[node.kwarg_splat]}..." if node.kwarg_splat + end + + arglist = "(#{[args, splat, keywords, kwarg_splat].flatten.compact.join(', ')})" + end + "#{tab_str}#{@format == :sass ? '+' : '@include '}" + + "#{dasherize(node.name)}#{arglist}#{node.has_children ? yield : semi}\n" + end + + def visit_content(node) + "#{tab_str}@content#{semi}\n" + end + + def visit_prop(node) + res = tab_str + node.declaration(@options, @format) + return res + semi + "\n" if node.children.empty? + res + yield.rstrip + semi + "\n" + end + + def visit_return(node) + "#{tab_str}@return #{node.expr.to_sass(@options)}#{semi}\n" + end + + def visit_rule(node) + rule = node.parsed_rules ? [node.parsed_rules.to_s] : node.rule + if @format == :sass + name = selector_to_sass(rule) + name = "\\" + name if name[0] == ?: + name.gsub(/^/, tab_str) + yield + elsif @format == :scss + name = selector_to_scss(rule) + res = name + yield + if node.children.last.is_a?(Sass::Tree::CommentNode) && node.children.last.type == :silent + res.slice!(-3..-1) + res << "\n" << tab_str << "}\n" + end + res + end + end + + def visit_variable(node) + "#{tab_str}$#{dasherize(node.name)}: #{node.expr.to_sass(@options)}" + + "#{' !global' if node.global}#{' !default' if node.guarded}#{semi}\n" + end + + def visit_warn(node) + "#{tab_str}@warn #{node.expr.to_sass(@options)}#{semi}\n" + end + + def visit_while(node) + "#{tab_str}@while #{node.expr.to_sass(@options)}#{yield}" + end + + def visit_atroot(node) + if node.query + "#{tab_str}@at-root #{query_interp_to_src(node.query)}#{yield}" + elsif node.children.length == 1 && node.children.first.is_a?(Sass::Tree::RuleNode) + rule = node.children.first + "#{tab_str}@at-root #{selector_to_src(rule.rule).lstrip}#{visit_children(rule)}" + else + "#{tab_str}@at-root#{yield}" + end + end + + def visit_keyframerule(node) + "#{tab_str}#{node.resolved_value}#{yield}" + end + + private + + # Visit rule-level nodes and return their conversion with appropriate + # whitespace added. + def visit_rule_level(nodes) + (nodes + [nil]).each_cons(2).map do |child, nxt| + visit(child) + + if nxt && + (child.is_a?(Sass::Tree::CommentNode) && child.line + child.lines + 1 == nxt.line) || + (child.is_a?(Sass::Tree::ImportNode) && nxt.is_a?(Sass::Tree::ImportNode) && + child.line + 1 == nxt.line) || + (child.is_a?(Sass::Tree::VariableNode) && nxt.is_a?(Sass::Tree::VariableNode) && + child.line + 1 == nxt.line) || + (child.is_a?(Sass::Tree::PropNode) && nxt.is_a?(Sass::Tree::PropNode)) || + (child.is_a?(Sass::Tree::MixinNode) && nxt.is_a?(Sass::Tree::MixinNode) && + child.line + 1 == nxt.line) + "" + else + "\n" + end + end.join.rstrip + "\n" + end + + def interp_to_src(interp) + interp.map {|r| r.is_a?(String) ? r : r.to_sass(@options)}.join + end + + # Like interp_to_src, but removes the unnecessary `#{}` around the keys and + # values in query expressions. + def query_interp_to_src(interp) + interp = interp.map do |e| + next e unless e.is_a?(Sass::Script::Tree::Literal) + next e unless e.value.is_a?(Sass::Script::Value::String) + e.value.value + end + + interp_to_src(interp) + end + + def selector_to_src(sel) + @format == :sass ? selector_to_sass(sel) : selector_to_scss(sel) + end + + def selector_to_sass(sel) + sel.map do |r| + if r.is_a?(String) + r.gsub(/(,)?([ \t]*)\n\s*/) {$1 ? "#{$1}#{$2}\n" : " "} + else + r.to_sass(@options) + end + end.join + end + + def selector_to_scss(sel) + interp_to_src(sel).gsub(/^[ \t]*/, tab_str).gsub(/[ \t]*$/, '') + end + + def semi + @format == :sass ? "" : ";" + end + + def tab_str + @tab_chars * @tabs + end + + def dasherize(s) + if @options[:dasherize] + s.tr('_', '-') + else + s + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/cssize.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/cssize.rb new file mode 100644 index 0000000000..6851286ea0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/cssize.rb @@ -0,0 +1,362 @@ +# A visitor for converting a static Sass tree into a static CSS tree. +class Sass::Tree::Visitors::Cssize < Sass::Tree::Visitors::Base + # @param root [Tree::Node] The root node of the tree to visit. + # @return [(Tree::Node, Sass::Util::SubsetMap)] The resulting tree of static nodes + # *and* the extensions defined for this tree + def self.visit(root); super; end + + protected + + # Returns the immediate parent of the current node. + # @return [Tree::Node] + def parent + @parents.last + end + + def initialize + @parents = [] + @extends = Sass::Util::SubsetMap.new + end + + # If an exception is raised, this adds proper metadata to the backtrace. + def visit(node) + super(node) + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + # Keeps track of the current parent node. + def visit_children(parent) + with_parent parent do + parent.children = visit_children_without_parent(parent) + parent + end + end + + # Like {#visit\_children}, but doesn't set {#parent}. + # + # @param node [Sass::Tree::Node] + # @return [Array] the flattened results of + # visiting all the children of `node` + def visit_children_without_parent(node) + node.children.map {|c| visit(c)}.flatten + end + + # Runs a block of code with the current parent node + # replaced with the given node. + # + # @param parent [Tree::Node] The new parent for the duration of the block. + # @yield A block in which the parent is set to `parent`. + # @return [Object] The return value of the block. + def with_parent(parent) + @parents.push parent + yield + ensure + @parents.pop + end + + # Converts the entire document to CSS. + # + # @return [(Tree::Node, Sass::Util::SubsetMap)] The resulting tree of static nodes + # *and* the extensions defined for this tree + def visit_root(node) + yield + + if parent.nil? + imports_to_move = [] + import_limit = nil + i = -1 + node.children.reject! do |n| + i += 1 + if import_limit + next false unless n.is_a?(Sass::Tree::CssImportNode) + imports_to_move << n + next true + end + + if !n.is_a?(Sass::Tree::CommentNode) && + !n.is_a?(Sass::Tree::CharsetNode) && + !n.is_a?(Sass::Tree::CssImportNode) + import_limit = i + end + + false + end + + if import_limit + node.children = node.children[0...import_limit] + imports_to_move + + node.children[import_limit..-1] + end + end + + return node, @extends + rescue Sass::SyntaxError => e + e.sass_template ||= node.template + raise e + end + + # A simple struct wrapping up information about a single `@extend` instance. A + # single {ExtendNode} can have multiple Extends if either the parent node or + # the extended selector is a comma sequence. + # + # @attr extender [Sass::Selector::Sequence] + # The selector of the CSS rule containing the `@extend`. + # @attr target [Array] The selector being `@extend`ed. + # @attr node [Sass::Tree::ExtendNode] The node that produced this extend. + # @attr directives [Array] + # The directives containing the `@extend`. + # @attr success [Boolean] + # Whether this extend successfully matched a selector. + Extend = Struct.new(:extender, :target, :node, :directives, :success) + + # Registers an extension in the `@extends` subset map. + def visit_extend(node) + parent.resolved_rules.populate_extends(@extends, node.resolved_selector, node, + @parents.select {|p| p.is_a?(Sass::Tree::DirectiveNode)}) + [] + end + + # Modifies exception backtraces to include the imported file. + def visit_import(node) + visit_children_without_parent(node) + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.children.first.filename) + e.add_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + # Asserts that all the traced children are valid in their new location. + def visit_trace(node) + visit_children_without_parent(node) + rescue Sass::SyntaxError => e + e.modify_backtrace(:mixin => node.name, :filename => node.filename, :line => node.line) + e.add_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + # Converts nested properties into flat properties + # and updates the indentation of the prop node based on the nesting level. + def visit_prop(node) + if parent.is_a?(Sass::Tree::PropNode) + node.resolved_name = "#{parent.resolved_name}-#{node.resolved_name}" + node.tabs = parent.tabs + (parent.resolved_value.empty? ? 0 : 1) if node.style == :nested + end + + yield + + result = node.children.dup + if !node.resolved_value.empty? || node.children.empty? + node.send(:check!) + result.unshift(node) + end + + result + end + + def visit_atroot(node) + # If there aren't any more directives or rules that this @at-root needs to + # exclude, we can get rid of it and just evaluate the children. + if @parents.none? {|n| node.exclude_node?(n)} + results = visit_children_without_parent(node) + results.each {|c| c.tabs += node.tabs if bubblable?(c)} + if !results.empty? && bubblable?(results.last) + results.last.group_end = node.group_end + end + return results + end + + # If this @at-root excludes the immediate parent, return it as-is so that it + # can be bubbled up by the parent node. + return Bubble.new(node) if node.exclude_node?(parent) + + # Otherwise, duplicate the current parent and move it into the @at-root + # node. As above, returning an @at-root node signals to the parent directive + # that it should be bubbled upwards. + bubble(node) + end + + # The following directives are visible and have children. This means they need + # to be able to handle bubbling up nodes such as @at-root and @media. + + # Updates the indentation of the rule node based on the nesting + # level. The selectors were resolved in {Perform}. + def visit_rule(node) + yield + + rules = node.children.select {|c| bubblable?(c)} + props = node.children.reject {|c| bubblable?(c) || c.invisible?} + + unless props.empty? + node.children = props + rules.each {|r| r.tabs += 1} if node.style == :nested + rules.unshift(node) + end + + rules = debubble(rules) + unless parent.is_a?(Sass::Tree::RuleNode) || rules.empty? || !bubblable?(rules.last) + rules.last.group_end = true + end + rules + end + + def visit_keyframerule(node) + return node unless node.has_children + + yield + + debubble(node.children, node) + end + + # Bubbles a directive up through RuleNodes. + def visit_directive(node) + return node unless node.has_children + if parent.is_a?(Sass::Tree::RuleNode) + # @keyframes shouldn't include the rule nodes, so we manually create a + # bubble that doesn't have the parent's contents for them. + return node.normalized_name == '@keyframes' ? Bubble.new(node) : bubble(node) + end + + yield + + # Since we don't know if the mere presence of an unknown directive may be + # important, we should keep an empty version around even if all the contents + # are removed via @at-root. However, if the contents are just bubbled out, + # we don't need to do so. + directive_exists = node.children.any? do |child| + next true unless child.is_a?(Bubble) + next false unless child.node.is_a?(Sass::Tree::DirectiveNode) + child.node.resolved_value == node.resolved_value + end + + # We know empty @keyframes directives do nothing. + if directive_exists || node.name == '@keyframes' + [] + else + empty_node = node.dup + empty_node.children = [] + [empty_node] + end + debubble(node.children, node) + end + + # Bubbles the `@media` directive up through RuleNodes + # and merges it with other `@media` directives. + def visit_media(node) + return bubble(node) if parent.is_a?(Sass::Tree::RuleNode) + return Bubble.new(node) if parent.is_a?(Sass::Tree::MediaNode) + + yield + + debubble(node.children, node) do |child| + next child unless child.is_a?(Sass::Tree::MediaNode) + # Copies of `node` can be bubbled, and we don't want to merge it with its + # own query. + next child if child.resolved_query == node.resolved_query + next child if child.resolved_query = child.resolved_query.merge(node.resolved_query) + end + end + + # Bubbles the `@supports` directive up through RuleNodes. + def visit_supports(node) + return node unless node.has_children + return bubble(node) if parent.is_a?(Sass::Tree::RuleNode) + + yield + + debubble(node.children, node) + end + + private + + # "Bubbles" `node` one level by copying the parent and wrapping `node`'s + # children with it. + # + # @param node [Sass::Tree::Node]. + # @return [Bubble] + def bubble(node) + new_rule = parent.dup + new_rule.children = node.children + node.children = [new_rule] + Bubble.new(node) + end + + # Pops all bubbles in `children` and intersperses the results with the other + # values. + # + # If `parent` is passed, it's copied and used as the parent node for the + # nested portions of `children`. + # + # @param children [List] + # @param parent [Sass::Tree::Node] + # @yield [node] An optional block for processing bubbled nodes. Each bubbled + # node will be passed to this block. + # @yieldparam node [Sass::Tree::Node] A bubbled node. + # @yieldreturn [Sass::Tree::Node?] A node to use in place of the bubbled node. + # This can be the node itself, or `nil` to indicate that the node should be + # omitted. + # @return [List] + def debubble(children, parent = nil) + # Keep track of the previous parent so that we don't divide `parent` + # unnecessarily if the `@at-root` doesn't produce any new nodes (e.g. + # `@at-root {@extend %foo}`). + previous_parent = nil + + Sass::Util.slice_by(children) {|c| c.is_a?(Bubble)}.map do |(is_bubble, slice)| + unless is_bubble + next slice unless parent + if previous_parent + previous_parent.children.push(*slice) + next [] + else + previous_parent = new_parent = parent.dup + new_parent.children = slice + next new_parent + end + end + + slice.map do |bubble| + next unless (node = block_given? ? yield(bubble.node) : bubble.node) + node.tabs += bubble.tabs + node.group_end = bubble.group_end + results = [visit(node)].flatten + previous_parent = nil unless results.empty? + results + end.compact + end.flatten + end + + # Returns whether or not a node can be bubbled up through the syntax tree. + # + # @param node [Sass::Tree::Node] + # @return [Boolean] + def bubblable?(node) + node.is_a?(Sass::Tree::RuleNode) || node.bubbles? + end + + # A wrapper class for a node that indicates to the parent that it should + # treat the wrapped node as a sibling rather than a child. + # + # Nodes should be wrapped before they're passed to \{Cssize.visit}. They will + # be automatically visited upon calling \{#pop}. + # + # This duck types as a [Sass::Tree::Node] for the purposes of + # tree-manipulation operations. + class Bubble + attr_accessor :node + attr_accessor :tabs + attr_accessor :group_end + + def initialize(node) + @node = node + @tabs = 0 + end + + def bubbles? + true + end + + def inspect + "(Bubble #{node.inspect})" + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/deep_copy.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/deep_copy.rb new file mode 100644 index 0000000000..85d7ba53db --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/deep_copy.rb @@ -0,0 +1,107 @@ +# A visitor for copying the full structure of a Sass tree. +class Sass::Tree::Visitors::DeepCopy < Sass::Tree::Visitors::Base + protected + + def visit(node) + super(node.dup) + end + + def visit_children(parent) + parent.children = parent.children.map {|c| visit(c)} + parent + end + + def visit_debug(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_error(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_each(node) + node.list = node.list.deep_copy + yield + end + + def visit_extend(node) + node.selector = node.selector.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + yield + end + + def visit_for(node) + node.from = node.from.deep_copy + node.to = node.to.deep_copy + yield + end + + def visit_function(node) + node.args = node.args.map {|k, v| [k.deep_copy, v && v.deep_copy]} + yield + end + + def visit_if(node) + node.expr = node.expr.deep_copy if node.expr + node.else = visit(node.else) if node.else + yield + end + + def visit_mixindef(node) + node.args = node.args.map {|k, v| [k.deep_copy, v && v.deep_copy]} + yield + end + + def visit_mixin(node) + node.args = node.args.map {|a| a.deep_copy} + node.keywords = Sass::Util::NormalizedMap.new(Hash[node.keywords.map {|k, v| [k, v.deep_copy]}]) + yield + end + + def visit_prop(node) + node.name = node.name.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + node.value = node.value.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + yield + end + + def visit_return(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_rule(node) + node.rule = node.rule.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + yield + end + + def visit_variable(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_warn(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_while(node) + node.expr = node.expr.deep_copy + yield + end + + def visit_directive(node) + node.value = node.value.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + yield + end + + def visit_media(node) + node.query = node.query.map {|c| c.is_a?(Sass::Script::Tree::Node) ? c.deep_copy : c} + yield + end + + def visit_supports(node) + node.condition = node.condition.deep_copy + yield + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/extend.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/extend.rb new file mode 100644 index 0000000000..ffc3e216d8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/extend.rb @@ -0,0 +1,64 @@ +# A visitor for performing selector inheritance on a static CSS tree. +# +# Destructively modifies the tree. +class Sass::Tree::Visitors::Extend < Sass::Tree::Visitors::Base + # Performs the given extensions on the static CSS tree based in `root`, then + # validates that all extends matched some selector. + # + # @param root [Tree::Node] The root node of the tree to visit. + # @param extends [Sass::Util::SubsetMap{Selector::Simple => + # Sass::Tree::Visitors::Cssize::Extend}] + # The extensions to perform on this tree. + # @return [Object] The return value of \{#visit} for the root node. + def self.visit(root, extends) + return if extends.empty? + new(extends).send(:visit, root) + check_extends_fired! extends + end + + protected + + def initialize(extends) + @parent_directives = [] + @extends = extends + end + + # If an exception is raised, this adds proper metadata to the backtrace. + def visit(node) + super(node) + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + # Keeps track of the current parent directives. + def visit_children(parent) + @parent_directives.push parent if parent.is_a?(Sass::Tree::DirectiveNode) + super + ensure + @parent_directives.pop if parent.is_a?(Sass::Tree::DirectiveNode) + end + + # Applies the extend to a single rule's selector. + def visit_rule(node) + node.resolved_rules = node.resolved_rules.do_extend(@extends, @parent_directives) + end + + class << self + private + + def check_extends_fired!(extends) + extends.each_value do |ex| + next if ex.success || ex.node.optional? + message = "\"#{ex.extender}\" failed to @extend \"#{ex.target.join}\"." + + # TODO(nweiz): this should use the Sass stack trace of the extend node. + raise Sass::SyntaxError.new(< ex.node.filename, :line => ex.node.line) +#{message} +The selector "#{ex.target.join}" was not found. +Use "@extend #{ex.target.join} !optional" if the extend should be able to fail. +MESSAGE + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/perform.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/perform.rb new file mode 100644 index 0000000000..c997014268 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/perform.rb @@ -0,0 +1,572 @@ +# A visitor for converting a dynamic Sass tree into a static Sass tree. +class Sass::Tree::Visitors::Perform < Sass::Tree::Visitors::Base + @@function_name_deprecation = Sass::Deprecation.new + + class << self + # @param root [Tree::Node] The root node of the tree to visit. + # @param environment [Sass::Environment] The lexical environment. + # @return [Tree::Node] The resulting tree of static nodes. + def visit(root, environment = nil) + new(environment).send(:visit, root) + end + + # @api private + def perform_arguments(callable, args, splat, environment) + desc = "#{callable.type.capitalize} #{callable.name}" + downcase_desc = "#{callable.type} #{callable.name}" + + # All keywords are contained in splat.keywords for consistency, + # even if there were no splats passed in. + old_keywords_accessed = splat.keywords_accessed + keywords = splat.keywords + splat.keywords_accessed = old_keywords_accessed + + begin + unless keywords.empty? + unknown_args = Sass::Util.array_minus(keywords.keys, + callable.args.map {|var| var.first.underscored_name}) + if callable.splat && unknown_args.include?(callable.splat.underscored_name) + raise Sass::SyntaxError.new("Argument $#{callable.splat.name} of #{downcase_desc} " + + "cannot be used as a named argument.") + elsif unknown_args.any? + description = unknown_args.length > 1 ? 'the following arguments:' : 'an argument named' + raise Sass::SyntaxError.new("#{desc} doesn't have #{description} " + + "#{unknown_args.map {|name| "$#{name}"}.join ', '}.") + end + end + rescue Sass::SyntaxError => keyword_exception + end + + # If there's no splat, raise the keyword exception immediately. The actual + # raising happens in the ensure clause at the end of this function. + return if keyword_exception && !callable.splat + + splat_sep = :comma + if splat + args += splat.to_a + splat_sep = splat.separator + end + + if args.size > callable.args.size && !callable.splat + extra_args_because_of_splat = splat && args.size - splat.to_a.size <= callable.args.size + + takes = callable.args.size + passed = args.size + message = "#{desc} takes #{takes} argument#{'s' unless takes == 1} " + + "but #{passed} #{passed == 1 ? 'was' : 'were'} passed." + raise Sass::SyntaxError.new(message) unless extra_args_because_of_splat + # TODO: when the deprecation period is over, make this an error. + Sass::Util.sass_warn("WARNING: #{message}\n" + + environment.stack.to_s.gsub(/^/m, " " * 8) + "\n" + + "This will be an error in future versions of Sass.") + end + + env = Sass::Environment.new(callable.environment) + callable.args.zip(args[0...callable.args.length]) do |(var, default), value| + if value && keywords.has_key?(var.name) + raise Sass::SyntaxError.new("#{desc} was passed argument $#{var.name} " + + "both by position and by name.") + end + + value ||= keywords.delete(var.name) + value ||= default && default.perform(env) + raise Sass::SyntaxError.new("#{desc} is missing argument #{var.inspect}.") unless value + env.set_local_var(var.name, value) + end + + if callable.splat + rest = args[callable.args.length..-1] || [] + arg_list = Sass::Script::Value::ArgList.new(rest, keywords, splat_sep) + arg_list.options = env.options + env.set_local_var(callable.splat.name, arg_list) + end + + yield env + rescue StandardError => e + ensure + # If there's a keyword exception, we don't want to throw it immediately, + # because the invalid keywords may be part of a glob argument that should be + # passed on to another function. So we only raise it if we reach the end of + # this function *and* the keywords attached to the argument list glob object + # haven't been accessed. + # + # The keyword exception takes precedence over any Sass errors, but not over + # non-Sass exceptions. + if keyword_exception && + !(arg_list && arg_list.keywords_accessed) && + (e.nil? || e.is_a?(Sass::SyntaxError)) + raise keyword_exception + elsif e + raise e + end + end + + # @api private + # @return [Sass::Script::Value::ArgList] + def perform_splat(splat, performed_keywords, kwarg_splat, environment) + args, kwargs, separator = [], nil, :comma + + if splat + splat = splat.perform(environment) + separator = splat.separator || separator + if splat.is_a?(Sass::Script::Value::ArgList) + args = splat.to_a + kwargs = splat.keywords + elsif splat.is_a?(Sass::Script::Value::Map) + kwargs = arg_hash(splat) + else + args = splat.to_a + end + end + kwargs ||= Sass::Util::NormalizedMap.new + kwargs.update(performed_keywords) + + if kwarg_splat + kwarg_splat = kwarg_splat.perform(environment) + unless kwarg_splat.is_a?(Sass::Script::Value::Map) + raise Sass::SyntaxError.new("Variable keyword arguments must be a map " + + "(was #{kwarg_splat.inspect}).") + end + kwargs.update(arg_hash(kwarg_splat)) + end + + Sass::Script::Value::ArgList.new(args, kwargs, separator) + end + + private + + def arg_hash(map) + Sass::Util.map_keys(map.to_h) do |key| + next key.value if key.is_a?(Sass::Script::Value::String) + raise Sass::SyntaxError.new("Variable keyword argument map must have string keys.\n" + + "#{key.inspect} is not a string in #{map.inspect}.") + end + end + end + + protected + + def initialize(env) + @environment = env + @in_keyframes = false + @at_root_without_rule = false + end + + # If an exception is raised, this adds proper metadata to the backtrace. + def visit(node) + return super(node.dup) unless @environment + @environment.stack.with_base(node.filename, node.line) {super(node.dup)} + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + # Keeps track of the current environment. + def visit_children(parent) + with_environment Sass::Environment.new(@environment, parent.options) do + parent.children = super.flatten + parent + end + end + + # Runs a block of code with the current environment replaced with the given one. + # + # @param env [Sass::Environment] The new environment for the duration of the block. + # @yield A block in which the environment is set to `env`. + # @return [Object] The return value of the block. + def with_environment(env) + old_env, @environment = @environment, env + yield + ensure + @environment = old_env + end + + # Sets the options on the environment if this is the top-level root. + def visit_root(node) + yield + rescue Sass::SyntaxError => e + e.sass_template ||= node.template + raise e + end + + # Removes this node from the tree if it's a silent comment. + def visit_comment(node) + return [] if node.invisible? + node.resolved_value = run_interp_no_strip(node.value) + node.resolved_value.gsub!(/\\([\\#])/, '\1') + node + end + + # Prints the expression to STDERR. + def visit_debug(node) + res = node.expr.perform(@environment) + if res.is_a?(Sass::Script::Value::String) + res = res.value + else + res = res.to_sass + end + if node.filename + Sass::Util.sass_warn "#{node.filename}:#{node.line} DEBUG: #{res}" + else + Sass::Util.sass_warn "Line #{node.line} DEBUG: #{res}" + end + [] + end + + # Throws the expression as an error. + def visit_error(node) + res = node.expr.perform(@environment) + if res.is_a?(Sass::Script::Value::String) + res = res.value + else + res = res.to_sass + end + raise Sass::SyntaxError.new(res) + end + + # Runs the child nodes once for each value in the list. + def visit_each(node) + list = node.list.perform(@environment) + + with_environment Sass::SemiGlobalEnvironment.new(@environment) do + list.to_a.map do |value| + if node.vars.length == 1 + @environment.set_local_var(node.vars.first, value) + else + node.vars.zip(value.to_a) do |(var, sub_value)| + @environment.set_local_var(var, sub_value || Sass::Script::Value::Null.new) + end + end + node.children.map {|c| visit(c)} + end.flatten + end + end + + # Runs SassScript interpolation in the selector, + # and then parses the result into a {Sass::Selector::CommaSequence}. + def visit_extend(node) + parser = Sass::SCSS::StaticParser.new(run_interp(node.selector), + node.filename, node.options[:importer], node.line) + node.resolved_selector = parser.parse_selector + node + end + + # Runs the child nodes once for each time through the loop, varying the variable each time. + def visit_for(node) + from = node.from.perform(@environment) + to = node.to.perform(@environment) + from.assert_int! + to.assert_int! + + to = to.coerce(from.numerator_units, from.denominator_units) + direction = from.to_i > to.to_i ? -1 : 1 + range = Range.new(direction * from.to_i, direction * to.to_i, node.exclusive) + + with_environment Sass::SemiGlobalEnvironment.new(@environment) do + range.map do |i| + @environment.set_local_var(node.var, + Sass::Script::Value::Number.new(direction * i, + from.numerator_units, from.denominator_units)) + node.children.map {|c| visit(c)} + end.flatten + end + end + + # Loads the function into the environment. + def visit_function(node) + env = Sass::Environment.new(@environment, node.options) + + if node.normalized_name == 'calc' || node.normalized_name == 'element' || + node.name == 'expression' || node.name == 'url' + @@function_name_deprecation.warn(node.filename, node.line, < e + e.modify_backtrace(:filename => node.imported_file.options[:filename]) + e.add_backtrace(:filename => node.filename, :line => node.line) + raise e + end + end + + # Loads a mixin into the environment. + def visit_mixindef(node) + env = Sass::Environment.new(@environment, node.options) + @environment.set_local_mixin(node.name, + Sass::Callable.new(node.name, node.args, node.splat, env, + node.children, node.has_content, "mixin", :stylesheet)) + [] + end + + # Runs a mixin. + def visit_mixin(node) + @environment.stack.with_mixin(node.filename, node.line, node.name) do + mixin = @environment.mixin(node.name) + raise Sass::SyntaxError.new("Undefined mixin '#{node.name}'.") unless mixin + + if node.has_children && !mixin.has_content + raise Sass::SyntaxError.new(%(Mixin "#{node.name}" does not accept a content block.)) + end + + args = node.args.map {|a| a.perform(@environment)} + keywords = Sass::Util.map_vals(node.keywords) {|v| v.perform(@environment)} + splat = self.class.perform_splat(node.splat, keywords, node.kwarg_splat, @environment) + + self.class.perform_arguments(mixin, args, splat, @environment) do |env| + env.caller = Sass::Environment.new(@environment) + env.content = [node.children, @environment] if node.has_children + + trace_node = Sass::Tree::TraceNode.from_node(node.name, node) + with_environment(env) {trace_node.children = mixin.tree.map {|c| visit(c)}.flatten} + trace_node + end + end + rescue Sass::SyntaxError => e + e.modify_backtrace(:mixin => node.name, :line => node.line) + e.add_backtrace(:line => node.line) + raise e + end + + def visit_content(node) + content, content_env = @environment.content + return [] unless content + @environment.stack.with_mixin(node.filename, node.line, '@content') do + trace_node = Sass::Tree::TraceNode.from_node('@content', node) + content_env = Sass::Environment.new(content_env) + content_env.caller = Sass::Environment.new(@environment) + with_environment(content_env) do + trace_node.children = content.map {|c| visit(c.dup)}.flatten + end + trace_node + end + rescue Sass::SyntaxError => e + e.modify_backtrace(:mixin => '@content', :line => node.line) + e.add_backtrace(:line => node.line) + raise e + end + + # Runs any SassScript that may be embedded in a property. + def visit_prop(node) + node.resolved_name = run_interp(node.name) + + # If the node's value is just a variable or similar, we may get a useful + # source range from evaluating it. + if node.value.length == 1 && node.value.first.is_a?(Sass::Script::Tree::Node) + result = node.value.first.perform(@environment) + node.resolved_value = result.to_s + node.value_source_range = result.source_range if result.source_range + elsif node.custom_property? + node.resolved_value = run_interp_no_strip(node.value) + else + node.resolved_value = run_interp(node.value) + end + + yield + end + + # Returns the value of the expression. + def visit_return(node) + throw :_sass_return, node.expr.perform(@environment) + end + + # Runs SassScript interpolation in the selector, + # and then parses the result into a {Sass::Selector::CommaSequence}. + def visit_rule(node) + old_at_root_without_rule = @at_root_without_rule + parser = Sass::SCSS::StaticParser.new(run_interp(node.rule), + node.filename, node.options[:importer], node.line) + if @in_keyframes + keyframe_rule_node = Sass::Tree::KeyframeRuleNode.new(parser.parse_keyframes_selector) + keyframe_rule_node.options = node.options + keyframe_rule_node.line = node.line + keyframe_rule_node.filename = node.filename + keyframe_rule_node.source_range = node.source_range + keyframe_rule_node.has_children = node.has_children + with_environment Sass::Environment.new(@environment, node.options) do + keyframe_rule_node.children = node.children.map {|c| visit(c)}.flatten + end + keyframe_rule_node + else + @at_root_without_rule = false + node.parsed_rules ||= parser.parse_selector + node.resolved_rules = node.parsed_rules.resolve_parent_refs( + @environment.selector, !old_at_root_without_rule) + node.stack_trace = @environment.stack.to_s if node.options[:trace_selectors] + with_environment Sass::Environment.new(@environment, node.options) do + @environment.selector = node.resolved_rules + node.children = node.children.map {|c| visit(c)}.flatten + end + node + end + ensure + @at_root_without_rule = old_at_root_without_rule + end + + # Sets a variable that indicates that the first level of rule nodes + # shouldn't include the parent selector by default. + def visit_atroot(node) + if node.query + parser = Sass::SCSS::StaticParser.new(run_interp(node.query), + node.filename, node.options[:importer], node.line) + node.resolved_type, node.resolved_value = parser.parse_static_at_root_query + else + node.resolved_type, node.resolved_value = :without, ['rule'] + end + + old_at_root_without_rule = @at_root_without_rule + old_in_keyframes = @in_keyframes + @at_root_without_rule = true if node.exclude?('rule') + @in_keyframes = false if node.exclude?('keyframes') + yield + ensure + @in_keyframes = old_in_keyframes + @at_root_without_rule = old_at_root_without_rule + end + + # Loads the new variable value into the environment. + def visit_variable(node) + env = @environment + env = env.global_env if node.global + if node.guarded + var = env.var(node.name) + return [] if var && !var.null? + end + + val = node.expr.perform(@environment) + if node.expr.source_range + val.source_range = node.expr.source_range + else + val.source_range = node.source_range + end + env.set_var(node.name, val) + [] + end + + # Prints the expression to STDERR with a stylesheet trace. + def visit_warn(node) + res = node.expr.perform(@environment) + res = res.value if res.is_a?(Sass::Script::Value::String) + @environment.stack.with_directive(node.filename, node.line, "@warn") do + msg = "WARNING: #{res}\n " + msg << @environment.stack.to_s.gsub("\n", "\n ") << "\n" + Sass::Util.sass_warn msg + end + [] + end + + # Runs the child nodes until the continuation expression becomes false. + def visit_while(node) + children = [] + with_environment Sass::SemiGlobalEnvironment.new(@environment) do + children += node.children.map {|c| visit(c)} while node.expr.perform(@environment).to_bool + end + children.flatten + end + + def visit_directive(node) + node.resolved_value = run_interp(node.value) + old_in_keyframes, @in_keyframes = @in_keyframes, node.normalized_name == "@keyframes" + with_environment Sass::Environment.new(@environment) do + node.children = node.children.map {|c| visit(c)}.flatten + node + end + ensure + @in_keyframes = old_in_keyframes + end + + def visit_media(node) + parser = Sass::SCSS::StaticParser.new(run_interp(node.query), + node.filename, node.options[:importer], node.line) + node.resolved_query ||= parser.parse_media_query_list + yield + end + + def visit_supports(node) + node.condition = node.condition.deep_copy + node.condition.perform(@environment) + yield + end + + def visit_cssimport(node) + node.resolved_uri = run_interp([node.uri]) + if node.query && !node.query.empty? + parser = Sass::SCSS::StaticParser.new(run_interp(node.query), + node.filename, node.options[:importer], node.line) + node.resolved_query ||= parser.parse_media_query_list + end + if node.supports_condition + node.supports_condition.perform(@environment) + end + yield + end + + private + + def run_interp_no_strip(text) + text.map do |r| + next r if r.is_a?(String) + r.perform(@environment).to_s(:quote => :none) + end.join + end + + def run_interp(text) + Sass::Util.strip_except_escapes(run_interp_no_strip(text)) + end + + def handle_import_loop!(node) + msg = "An @import loop has been found:" + files = @environment.stack.frames.select {|f| f.is_import?}.map {|f| f.filename}.compact + if node.filename == node.imported_file.options[:filename] + raise Sass::SyntaxError.new("#{msg} #{node.filename} imports itself") + end + + files << node.filename << node.imported_file.options[:filename] + msg << "\n" << files.each_cons(2).map do |m1, m2| + " #{m1} imports #{m2}" + end.join("\n") + raise Sass::SyntaxError.new(msg) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/set_options.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/set_options.rb new file mode 100644 index 0000000000..75f4a2bd6c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/set_options.rb @@ -0,0 +1,139 @@ +# A visitor for setting options on the Sass tree +class Sass::Tree::Visitors::SetOptions < Sass::Tree::Visitors::Base + # @param root [Tree::Node] The root node of the tree to visit. + # @param options [{Symbol => Object}] The options has to set. + def self.visit(root, options); new(options).send(:visit, root); end + + protected + + def initialize(options) + @options = options + end + + def visit(node) + node.instance_variable_set('@options', @options) + super + end + + def visit_comment(node) + node.value.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_debug(node) + node.expr.options = @options + yield + end + + def visit_error(node) + node.expr.options = @options + yield + end + + def visit_each(node) + node.list.options = @options + yield + end + + def visit_extend(node) + node.selector.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_for(node) + node.from.options = @options + node.to.options = @options + yield + end + + def visit_function(node) + node.args.each do |k, v| + k.options = @options + v.options = @options if v + end + node.splat.options = @options if node.splat + yield + end + + def visit_if(node) + node.expr.options = @options if node.expr + visit(node.else) if node.else + yield + end + + def visit_import(node) + # We have no good way of propagating the new options through an Engine + # instance, so we just null it out. This also lets us avoid caching an + # imported Engine along with the importing source tree. + node.imported_file = nil + yield + end + + def visit_mixindef(node) + node.args.each do |k, v| + k.options = @options + v.options = @options if v + end + node.splat.options = @options if node.splat + yield + end + + def visit_mixin(node) + node.args.each {|a| a.options = @options} + node.keywords.each {|_k, v| v.options = @options} + node.splat.options = @options if node.splat + node.kwarg_splat.options = @options if node.kwarg_splat + yield + end + + def visit_prop(node) + node.name.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + node.value.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_return(node) + node.expr.options = @options + yield + end + + def visit_rule(node) + node.rule.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_variable(node) + node.expr.options = @options + yield + end + + def visit_warn(node) + node.expr.options = @options + yield + end + + def visit_while(node) + node.expr.options = @options + yield + end + + def visit_directive(node) + node.value.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_media(node) + node.query.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} + yield + end + + def visit_cssimport(node) + node.query.each {|c| c.options = @options if c.is_a?(Sass::Script::Tree::Node)} if node.query + yield + end + + def visit_supports(node) + node.condition.options = @options + yield + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/to_css.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/to_css.rb new file mode 100644 index 0000000000..29ec285e1a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/visitors/to_css.rb @@ -0,0 +1,436 @@ +# A visitor for converting a Sass tree into CSS. +class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base + # The source mapping for the generated CSS file. This is only set if + # `build_source_mapping` is passed to the constructor and \{Sass::Engine#render} has been + # run. + attr_reader :source_mapping + + # @param build_source_mapping [Boolean] Whether to build a + # \{Sass::Source::Map} while creating the CSS output. The mapping will + # be available from \{#source\_mapping} after the visitor has completed. + def initialize(build_source_mapping = false) + @tabs = 0 + @line = 1 + @offset = 1 + @result = String.new("") + @source_mapping = build_source_mapping ? Sass::Source::Map.new : nil + @lstrip = nil + @in_directive = false + end + + # Runs the visitor on `node`. + # + # @param node [Sass::Tree::Node] The root node of the tree to convert to CSS> + # @return [String] The CSS output. + def visit(node) + super + rescue Sass::SyntaxError => e + e.modify_backtrace(:filename => node.filename, :line => node.line) + raise e + end + + protected + + def with_tabs(tabs) + old_tabs, @tabs = @tabs, tabs + yield + ensure + @tabs = old_tabs + end + + # Associate all output produced in a block with a given node. Used for source + # mapping. + def for_node(node, attr_prefix = nil) + return yield unless @source_mapping + start_pos = Sass::Source::Position.new(@line, @offset) + yield + + range_attr = attr_prefix ? :"#{attr_prefix}_source_range" : :source_range + return if node.invisible? || !node.send(range_attr) + source_range = node.send(range_attr) + target_end_pos = Sass::Source::Position.new(@line, @offset) + target_range = Sass::Source::Range.new(start_pos, target_end_pos, nil) + @source_mapping.add(source_range, target_range) + end + + def trailing_semicolon? + @result.end_with?(";") && !@result.end_with?('\;') + end + + # Move the output cursor back `chars` characters. + def erase!(chars) + return if chars == 0 + str = @result.slice!(-chars..-1) + newlines = str.count("\n") + if newlines > 0 + @line -= newlines + @offset = @result[@result.rindex("\n") || 0..-1].size + else + @offset -= chars + end + end + + # Avoid allocating lots of new strings for `#output`. This is important + # because `#output` is called all the time. + NEWLINE = "\n" + + # Add `s` to the output string and update the line and offset information + # accordingly. + def output(s) + if @lstrip + s = s.gsub(/\A\s+/, "") + @lstrip = false + end + + newlines = s.count(NEWLINE) + if newlines > 0 + @line += newlines + @offset = s[s.rindex(NEWLINE)..-1].size + else + @offset += s.size + end + + @result << s + end + + # Strip all trailing whitespace from the output string. + def rstrip! + erase! @result.length - 1 - (@result.rindex(/[^\s]/) || -1) + end + + # lstrip the first output in the given block. + def lstrip + old_lstrip = @lstrip + @lstrip = true + yield + ensure + @lstrip &&= old_lstrip + end + + # Prepend `prefix` to the output string. + def prepend!(prefix) + @result.insert 0, prefix + return unless @source_mapping + + line_delta = prefix.count("\n") + offset_delta = prefix.gsub(/.*\n/, '').size + @source_mapping.shift_output_offsets(offset_delta) + @source_mapping.shift_output_lines(line_delta) + end + + def visit_root(node) + node.children.each do |child| + next if child.invisible? + visit(child) + next if node.style == :compressed + output "\n" + next unless child.is_a?(Sass::Tree::DirectiveNode) && child.has_children && !child.bubbles? + output "\n" + end + rstrip! + if node.style == :compressed && trailing_semicolon? + erase! 1 + end + return "" if @result.empty? + + output "\n" + + unless @result.ascii_only? + if node.style == :compressed + # A byte order mark is sufficient to tell browsers that this + # file is UTF-8 encoded, and will override any other detection + # methods as per http://encoding.spec.whatwg.org/#decode-and-encode. + prepend! "\uFEFF" + else + prepend! "@charset \"UTF-8\";\n" + end + end + + @result + rescue Sass::SyntaxError => e + e.sass_template ||= node.template + raise e + end + + def visit_charset(node) + for_node(node) {output("@charset \"#{node.name}\";")} + end + + def visit_comment(node) + return if node.invisible? + spaces = (' ' * [@tabs - node.resolved_value[/^ */].size, 0].max) + output(spaces) + + content = node.resolved_value.split("\n").join("\n" + spaces) + if node.type == :silent + content.gsub!(%r{^(\s*)//(.*)$}) {"#{$1}/*#{$2} */"} + end + if (node.style == :compact || node.style == :compressed) && node.type != :loud + content.gsub!(%r{\n +(\* *(?!/))?}, ' ') + end + for_node(node) {output(content)} + end + + def visit_directive(node) + was_in_directive = @in_directive + tab_str = ' ' * @tabs + if !node.has_children || node.children.empty? + output(tab_str) + for_node(node) {output(node.resolved_value)} + if node.has_children + output("#{' ' unless node.style == :compressed}{}") + elsif node.children.empty? + output(";") + end + return + end + + @in_directive ||= !node.is_a?(Sass::Tree::MediaNode) + output(tab_str) if node.style != :compressed + for_node(node) {output(node.resolved_value)} + output(node.style == :compressed ? "{" : " {") + output(node.style == :compact ? ' ' : "\n") if node.style != :compressed + + had_children = true + first = true + node.children.each do |child| + next if child.invisible? + if node.style == :compact + if child.is_a?(Sass::Tree::PropNode) + with_tabs(first || !had_children ? 0 : @tabs + 1) do + visit(child) + output(' ') + end + else + unless had_children + erase! 1 + output "\n" + end + + if first + lstrip {with_tabs(@tabs + 1) {visit(child)}} + else + with_tabs(@tabs + 1) {visit(child)} + end + + rstrip! + output "\n" + end + had_children = child.has_children + first = false + elsif node.style == :compressed + unless had_children + output(";") unless trailing_semicolon? + end + with_tabs(0) {visit(child)} + had_children = child.has_children + else + with_tabs(@tabs + 1) {visit(child)} + output "\n" + end + end + rstrip! + if node.style == :compressed && trailing_semicolon? + erase! 1 + end + if node.style == :expanded + output("\n#{tab_str}") + elsif node.style != :compressed + output(" ") + end + output("}") + ensure + @in_directive = was_in_directive + end + + def visit_media(node) + with_tabs(@tabs + node.tabs) {visit_directive(node)} + output("\n") if node.style != :compressed && node.group_end + end + + def visit_supports(node) + visit_media(node) + end + + def visit_cssimport(node) + visit_directive(node) + end + + def visit_prop(node) + return if node.resolved_value.empty? && !node.custom_property? + tab_str = ' ' * (@tabs + node.tabs) + output(tab_str) + for_node(node, :name) {output(node.resolved_name)} + output(":") + output(" ") unless node.style == :compressed || node.custom_property? + for_node(node, :value) do + output(if node.custom_property? + format_custom_property_value(node) + else + node.resolved_value + end) + end + output(";") unless node.style == :compressed + end + + def visit_rule(node) + with_tabs(@tabs + node.tabs) do + rule_separator = node.style == :compressed ? ',' : ', ' + line_separator = + case node.style + when :nested, :expanded; "\n" + when :compressed; "" + else; " " + end + rule_indent = ' ' * @tabs + per_rule_indent, total_indent = if [:nested, :expanded].include?(node.style) + [rule_indent, ''] + else + ['', rule_indent] + end + + joined_rules = node.resolved_rules.members.map do |seq| + next if seq.invisible? + rule_part = seq.to_s(style: node.style, placeholder: false) + if node.style == :compressed + rule_part.gsub!(/([^,])\s*\n\s*/m, '\1 ') + rule_part.gsub!(/\s*([+>])\s*/m, '\1') + rule_part.gsub!(/nth([^( ]*)\(([^)]*)\)/m) do |match| + match.tr(" \t\n", "") + end + rule_part = Sass::Util.strip_except_escapes(rule_part) + end + rule_part + end.compact.join(rule_separator) + + joined_rules.lstrip! + joined_rules.gsub!(/\s*\n\s*/, "#{line_separator}#{per_rule_indent}") + + old_spaces = ' ' * @tabs + if node.style != :compressed + if node.options[:debug_info] && !@in_directive + visit(debug_info_rule(node.debug_info, node.options)) + output "\n" + elsif node.options[:trace_selectors] + output("#{old_spaces}/* ") + output(node.stack_trace.gsub("\n", "\n #{old_spaces}")) + output(" */\n") + elsif node.options[:line_comments] + output("#{old_spaces}/* line #{node.line}") + + if node.filename + relative_filename = + if node.options[:css_filename] + begin + Sass::Util.relative_path_from( + node.filename, File.dirname(node.options[:css_filename])).to_s + rescue ArgumentError + nil + end + end + relative_filename ||= node.filename + output(", #{relative_filename}") + end + + output(" */\n") + end + end + + end_props, trailer, tabs = '', '', 0 + if node.style == :compact + separator, end_props, bracket = ' ', ' ', ' { ' + trailer = "\n" if node.group_end + elsif node.style == :compressed + separator, bracket = ';', '{' + else + tabs = @tabs + 1 + separator, bracket = "\n", " {\n" + trailer = "\n" if node.group_end + end_props = (node.style == :expanded ? "\n" + old_spaces : ' ') + end + output(total_indent + per_rule_indent) + for_node(node, :selector) {output(joined_rules)} + output(bracket) + + with_tabs(tabs) do + node.children.each_with_index do |child, i| + if i > 0 + if separator.start_with?(";") && trailing_semicolon? + erase! 1 + end + output(separator) + end + visit(child) + end + end + if node.style == :compressed && trailing_semicolon? + erase! 1 + end + + output(end_props) + output("}" + trailer) + end + end + + def visit_keyframerule(node) + visit_directive(node) + end + + private + + # Reformats the value of `node` so that it's nicely indented, preserving its + # existing relative indentation. + # + # @param node [Sass::Script::Tree::PropNode] A custom property node. + # @return [String] + def format_custom_property_value(node) + value = node.resolved_value.sub(/\n[ \t\r\f\n]*\Z/, ' ') + if node.style == :compact || node.style == :compressed || !value.include?("\n") + # Folding not involving newlines was done in the parser. We can safely + # fold newlines here because tokens like strings can't contain literal + # newlines, so we know any adjacent whitespace is tokenized as whitespace. + return node.resolved_value.gsub(/[ \t\r\f]*\n[ \t\r\f\n]*/, ' ') + end + + # Find the smallest amount of indentation in the custom property and use + # that as the base indentation level. + lines = value.split("\n") + indented_lines = lines[1..-1] + min_indentation = indented_lines. + map {|line| line[/^[ \t]*/]}. + reject {|line| line.empty?}. + min_by {|line| line.length} + + # Limit the base indentation to the same indentation level as the node name + # so that if *every* line is indented relative to the property name that's + # preserved. + if node.name_source_range + base_indentation = min_indentation[0...node.name_source_range.start_pos.offset - 1] + end + + lines.first + "\n" + indented_lines.join("\n").gsub(/^#{base_indentation}/, ' ' * @tabs) + end + + def debug_info_rule(debug_info, options) + node = Sass::Tree::DirectiveNode.resolved("@media -sass-debug-info") + debug_info.map {|k, v| [k.to_s, v.to_s]}.to_a.each do |k, v| + rule = Sass::Tree::RuleNode.new([""]) + rule.resolved_rules = Sass::Selector::CommaSequence.new( + [Sass::Selector::Sequence.new( + [Sass::Selector::SimpleSequence.new( + [Sass::Selector::Element.new(k.to_s.gsub(/[^\w-]/, "\\\\\\0"), nil)], + false) + ]) + ]) + prop = Sass::Tree::PropNode.new([""], [""], :new) + prop.resolved_name = "font-family" + prop.resolved_value = Sass::SCSS::RX.escape_ident(v.to_s) + rule << prop + node << rule + end + node.options = options.merge(:debug_info => false, + :line_comments => false, + :style => :compressed) + node + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/warn_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/warn_node.rb new file mode 100644 index 0000000000..4af4789af6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/warn_node.rb @@ -0,0 +1,18 @@ +module Sass + module Tree + # A dynamic node representing a Sass `@warn` statement. + # + # @see Sass::Tree + class WarnNode < Node + # The expression to print. + # @return [Script::Tree::Node] + attr_accessor :expr + + # @param expr [Script::Tree::Node] The expression to print + def initialize(expr) + @expr = expr + super() + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/while_node.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/while_node.rb new file mode 100644 index 0000000000..93529f0f09 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/tree/while_node.rb @@ -0,0 +1,18 @@ +require 'sass/tree/node' + +module Sass::Tree + # A dynamic node representing a Sass `@while` loop. + # + # @see Sass::Tree + class WhileNode < Node + # The parse tree for the continuation expression. + # @return [Script::Tree::Node] + attr_accessor :expr + + # @param expr [Script::Tree::Node] See \{#expr} + def initialize(expr) + @expr = expr + super() + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util.rb new file mode 100644 index 0000000000..54606fdd08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util.rb @@ -0,0 +1,1137 @@ +# -*- coding: utf-8 -*- +require 'erb' +require 'set' +require 'enumerator' +require 'stringio' +require 'rbconfig' +require 'uri' +require 'thread' +require 'pathname' + +require 'sass/root' +require 'sass/util/subset_map' + +module Sass + # A module containing various useful functions. + module Util + extend self + + # An array of ints representing the Ruby version number. + # @api public + RUBY_VERSION_COMPONENTS = RUBY_VERSION.split(".").map {|s| s.to_i} + + # The Ruby engine we're running under. Defaults to `"ruby"` + # if the top-level constant is undefined. + # @api public + RUBY_ENGINE = defined?(::RUBY_ENGINE) ? ::RUBY_ENGINE : "ruby" + + # Returns the path of a file relative to the Sass root directory. + # + # @param file [String] The filename relative to the Sass root + # @return [String] The filename relative to the the working directory + def scope(file) + File.join(Sass::ROOT_DIR, file) + end + + # Maps the keys in a hash according to a block. + # + # @example + # map_keys({:foo => "bar", :baz => "bang"}) {|k| k.to_s} + # #=> {"foo" => "bar", "baz" => "bang"} + # @param hash [Hash] The hash to map + # @yield [key] A block in which the keys are transformed + # @yieldparam key [Object] The key that should be mapped + # @yieldreturn [Object] The new value for the key + # @return [Hash] The mapped hash + # @see #map_vals + # @see #map_hash + def map_keys(hash) + map_hash(hash) {|k, v| [yield(k), v]} + end + + # Maps the values in a hash according to a block. + # + # @example + # map_values({:foo => "bar", :baz => "bang"}) {|v| v.to_sym} + # #=> {:foo => :bar, :baz => :bang} + # @param hash [Hash] The hash to map + # @yield [value] A block in which the values are transformed + # @yieldparam value [Object] The value that should be mapped + # @yieldreturn [Object] The new value for the value + # @return [Hash] The mapped hash + # @see #map_keys + # @see #map_hash + def map_vals(hash) + # We don't delegate to map_hash for performance here + # because map_hash does more than is necessary. + rv = hash.class.new + hash = hash.as_stored if hash.is_a?(NormalizedMap) + hash.each do |k, v| + rv[k] = yield(v) + end + rv + end + + # Maps the key-value pairs of a hash according to a block. + # + # @example + # map_hash({:foo => "bar", :baz => "bang"}) {|k, v| [k.to_s, v.to_sym]} + # #=> {"foo" => :bar, "baz" => :bang} + # @param hash [Hash] The hash to map + # @yield [key, value] A block in which the key-value pairs are transformed + # @yieldparam [key] The hash key + # @yieldparam [value] The hash value + # @yieldreturn [(Object, Object)] The new value for the `[key, value]` pair + # @return [Hash] The mapped hash + # @see #map_keys + # @see #map_vals + def map_hash(hash) + # Copy and modify is more performant than mapping to an array and using + # to_hash on the result. + rv = hash.class.new + hash.each do |k, v| + new_key, new_value = yield(k, v) + new_key = hash.denormalize(new_key) if hash.is_a?(NormalizedMap) && new_key == k + rv[new_key] = new_value + end + rv + end + + # Computes the powerset of the given array. + # This is the set of all subsets of the array. + # + # @example + # powerset([1, 2, 3]) #=> + # Set[Set[], Set[1], Set[2], Set[3], Set[1, 2], Set[2, 3], Set[1, 3], Set[1, 2, 3]] + # @param arr [Enumerable] + # @return [Set] The subsets of `arr` + def powerset(arr) + arr.inject([Set.new].to_set) do |powerset, el| + new_powerset = Set.new + powerset.each do |subset| + new_powerset << subset + new_powerset << subset + [el] + end + new_powerset + end + end + + # Restricts a number to falling within a given range. + # Returns the number if it falls within the range, + # or the closest value in the range if it doesn't. + # + # @param value [Numeric] + # @param range [Range] + # @return [Numeric] + def restrict(value, range) + [[value, range.first].max, range.last].min + end + + # Like [Fixnum.round], but leaves rooms for slight floating-point + # differences. + # + # @param value [Numeric] + # @return [Numeric] + def round(value) + # If the number is within epsilon of X.5, round up (or down for negative + # numbers). + mod = value % 1 + mod_is_half = (mod - 0.5).abs < Script::Value::Number.epsilon + if value > 0 + !mod_is_half && mod < 0.5 ? value.floor : value.ceil + else + mod_is_half || mod < 0.5 ? value.floor : value.ceil + end + end + + # Concatenates all strings that are adjacent in an array, + # while leaving other elements as they are. + # + # @example + # merge_adjacent_strings([1, "foo", "bar", 2, "baz"]) + # #=> [1, "foobar", 2, "baz"] + # @param arr [Array] + # @return [Array] The enumerable with strings merged + def merge_adjacent_strings(arr) + # Optimize for the common case of one element + return arr if arr.size < 2 + arr.inject([]) do |a, e| + if e.is_a?(String) + if a.last.is_a?(String) + a.last << e + else + a << e.dup + end + else + a << e + end + a + end + end + + # Non-destructively replaces all occurrences of a subsequence in an array + # with another subsequence. + # + # @example + # replace_subseq([1, 2, 3, 4, 5], [2, 3], [:a, :b]) + # #=> [1, :a, :b, 4, 5] + # + # @param arr [Array] The array whose subsequences will be replaced. + # @param subseq [Array] The subsequence to find and replace. + # @param replacement [Array] The sequence that `subseq` will be replaced with. + # @return [Array] `arr` with `subseq` replaced with `replacement`. + def replace_subseq(arr, subseq, replacement) + new = [] + matched = [] + i = 0 + arr.each do |elem| + if elem != subseq[i] + new.push(*matched) + matched = [] + i = 0 + new << elem + next + end + + if i == subseq.length - 1 + matched = [] + i = 0 + new.push(*replacement) + else + matched << elem + i += 1 + end + end + new.push(*matched) + new + end + + # Intersperses a value in an enumerable, as would be done with `Array#join` + # but without concatenating the array together afterwards. + # + # @param enum [Enumerable] + # @param val + # @return [Array] + def intersperse(enum, val) + enum.inject([]) {|a, e| a << e << val}[0...-1] + end + + def slice_by(enum) + results = [] + enum.each do |value| + key = yield(value) + if !results.empty? && results.last.first == key + results.last.last << value + else + results << [key, [value]] + end + end + results + end + + # Substitutes a sub-array of one array with another sub-array. + # + # @param ary [Array] The array in which to make the substitution + # @param from [Array] The sequence of elements to replace with `to` + # @param to [Array] The sequence of elements to replace `from` with + def substitute(ary, from, to) + res = ary.dup + i = 0 + while i < res.size + if res[i...i + from.size] == from + res[i...i + from.size] = to + end + i += 1 + end + res + end + + # Destructively strips whitespace from the beginning and end of the first + # and last elements, respectively, in the array (if those elements are + # strings). Preserves CSS escapes at the end of the array. + # + # @param arr [Array] + # @return [Array] `arr` + def strip_string_array(arr) + arr.first.lstrip! if arr.first.is_a?(String) + arr[-1] = Sass::Util.rstrip_except_escapes(arr[-1]) if arr.last.is_a?(String) + arr + end + + # Normalizes identifier escapes. + # + # See https://github.com/sass/language/blob/master/accepted/identifier-escapes.md. + # + # @param ident [String] + # @return [String] + def normalize_ident_escapes(ident, start: true) + ident.gsub(/(^)?(#{Sass::SCSS::RX::ESCAPE})/) do |s| + at_start = start && $1 + char = escaped_char(s) + next char if char =~ (at_start ? Sass::SCSS::RX::NMSTART : Sass::SCSS::RX::NMCHAR) + if char =~ (at_start ? /[\x0-\x1F\x7F0-9]/ : /[\x0-\x1F\x7F]/) + "\\#{char.ord.to_s(16)} " + else + "\\#{char}" + end + end + end + + # Returns the character encoded by the given escape sequence. + # + # @param escape [String] + # @return [String] + def escaped_char(escape) + if escape =~ /^\\([0-9a-fA-F]{1,6})[ \t\r\n\f]?/ + $1.to_i(16).chr(Encoding::UTF_8) + else + escape[1] + end + end + + # Like [String#strip], but preserves escaped whitespace at the end of the + # string. + # + # @param string [String] + # @return [String] + def strip_except_escapes(string) + rstrip_except_escapes(string.lstrip) + end + + # Like [String#rstrip], but preserves escaped whitespace at the end of the + # string. + # + # @param string [String] + # @return [String] + def rstrip_except_escapes(string) + string.sub(/(?] + # @return [Array] + # + # @example + # paths([[1, 2], [3, 4], [5]]) #=> + # # [[1, 3, 5], + # # [2, 3, 5], + # # [1, 4, 5], + # # [2, 4, 5]] + def paths(arrs) + arrs.inject([[]]) do |paths, arr| + arr.map {|e| paths.map {|path| path + [e]}}.flatten(1) + end + end + + # Computes a single longest common subsequence for `x` and `y`. + # If there are more than one longest common subsequences, + # the one returned is that which starts first in `x`. + # + # @param x [Array] + # @param y [Array] + # @yield [a, b] An optional block to use in place of a check for equality + # between elements of `x` and `y`. + # @yieldreturn [Object, nil] If the two values register as equal, + # this will return the value to use in the LCS array. + # @return [Array] The LCS + def lcs(x, y, &block) + x = [nil, *x] + y = [nil, *y] + block ||= proc {|a, b| a == b && a} + lcs_backtrace(lcs_table(x, y, &block), x, y, x.size - 1, y.size - 1, &block) + end + + # Like `String.upcase`, but only ever upcases ASCII letters. + def upcase(string) + return string.upcase unless ruby2_4? + string.upcase(:ascii) + end + + # Like `String.downcase`, but only ever downcases ASCII letters. + def downcase(string) + return string.downcase unless ruby2_4? + string.downcase(:ascii) + end + + # Returns a sub-array of `minuend` containing only elements that are also in + # `subtrahend`. Ensures that the return value has the same order as + # `minuend`, even on Rubinius where that's not guaranteed by `Array#-`. + # + # @param minuend [Array] + # @param subtrahend [Array] + # @return [Array] + def array_minus(minuend, subtrahend) + return minuend - subtrahend unless rbx? + set = Set.new(minuend) - subtrahend + minuend.select {|e| set.include?(e)} + end + + # Returns the maximum of `val1` and `val2`. We use this over \{Array.max} to + # avoid unnecessary garbage collection. + def max(val1, val2) + val1 > val2 ? val1 : val2 + end + + # Returns the minimum of `val1` and `val2`. We use this over \{Array.min} to + # avoid unnecessary garbage collection. + def min(val1, val2) + val1 <= val2 ? val1 : val2 + end + + # Returns a string description of the character that caused an + # `Encoding::UndefinedConversionError`. + # + # @param e [Encoding::UndefinedConversionError] + # @return [String] + def undefined_conversion_error_char(e) + # Rubinius (as of 2.0.0.rc1) pre-quotes the error character. + return e.error_char if rbx? + # JRuby (as of 1.7.2) doesn't have an error_char field on + # Encoding::UndefinedConversionError. + return e.error_char.dump unless jruby? + e.message[/^"[^"]+"/] # " + end + + # Asserts that `value` falls within `range` (inclusive), leaving + # room for slight floating-point errors. + # + # @param name [String] The name of the value. Used in the error message. + # @param range [Range] The allowed range of values. + # @param value [Numeric, Sass::Script::Value::Number] The value to check. + # @param unit [String] The unit of the value. Used in error reporting. + # @return [Numeric] `value` adjusted to fall within range, if it + # was outside by a floating-point margin. + def check_range(name, range, value, unit = '') + grace = (-0.00001..0.00001) + str = value.to_s + value = value.value if value.is_a?(Sass::Script::Value::Number) + return value if range.include?(value) + return range.first if grace.include?(value - range.first) + return range.last if grace.include?(value - range.last) + raise ArgumentError.new( + "#{name} #{str} must be between #{range.first}#{unit} and #{range.last}#{unit}") + end + + # Returns whether or not `seq1` is a subsequence of `seq2`. That is, whether + # or not `seq2` contains every element in `seq1` in the same order (and + # possibly more elements besides). + # + # @param seq1 [Array] + # @param seq2 [Array] + # @return [Boolean] + def subsequence?(seq1, seq2) + i = j = 0 + loop do + return true if i == seq1.size + return false if j == seq2.size + i += 1 if seq1[i] == seq2[j] + j += 1 + end + end + + # Returns information about the caller of the previous method. + # + # @param entry [String] An entry in the `#caller` list, or a similarly formatted string + # @return [[String, Integer, (String, nil)]] + # An array containing the filename, line, and method name of the caller. + # The method name may be nil + def caller_info(entry = nil) + # JRuby evaluates `caller` incorrectly when it's in an actual default argument. + entry ||= caller[1] + info = entry.scan(/^((?:[A-Za-z]:)?.*?):(-?.*?)(?::.*`(.+)')?$/).first + info[1] = info[1].to_i + # This is added by Rubinius to designate a block, but we don't care about it. + info[2].sub!(/ \{\}\Z/, '') if info[2] + info + end + + # Returns whether one version string represents a more recent version than another. + # + # @param v1 [String] A version string. + # @param v2 [String] Another version string. + # @return [Boolean] + def version_gt(v1, v2) + # Construct an array to make sure the shorter version is padded with nil + Array.new([v1.length, v2.length].max).zip(v1.split("."), v2.split(".")) do |_, p1, p2| + p1 ||= "0" + p2 ||= "0" + release1 = p1 =~ /^[0-9]+$/ + release2 = p2 =~ /^[0-9]+$/ + if release1 && release2 + # Integer comparison if both are full releases + p1, p2 = p1.to_i, p2.to_i + next if p1 == p2 + return p1 > p2 + elsif !release1 && !release2 + # String comparison if both are prereleases + next if p1 == p2 + return p1 > p2 + else + # If only one is a release, that one is newer + return release1 + end + end + end + + # Returns whether one version string represents the same or a more + # recent version than another. + # + # @param v1 [String] A version string. + # @param v2 [String] Another version string. + # @return [Boolean] + def version_geq(v1, v2) + version_gt(v1, v2) || !version_gt(v2, v1) + end + + # Throws a NotImplementedError for an abstract method. + # + # @param obj [Object] `self` + # @raise [NotImplementedError] + def abstract(obj) + raise NotImplementedError.new("#{obj.class} must implement ##{caller_info[2]}") + end + + # Prints a deprecation warning for the caller method. + # + # @param obj [Object] `self` + # @param message [String] A message describing what to do instead. + def deprecated(obj, message = nil) + obj_class = obj.is_a?(Class) ? "#{obj}." : "#{obj.class}#" + full_message = "DEPRECATION WARNING: #{obj_class}#{caller_info[2]} " + + "will be removed in a future version of Sass.#{("\n" + message) if message}" + Sass::Util.sass_warn full_message + end + + # Silences all Sass warnings within a block. + # + # @yield A block in which no Sass warnings will be printed + def silence_sass_warnings + old_level, Sass.logger.log_level = Sass.logger.log_level, :error + yield + ensure + Sass.logger.log_level = old_level + end + + # The same as `Kernel#warn`, but is silenced by \{#silence\_sass\_warnings}. + # + # @param msg [String] + def sass_warn(msg) + Sass.logger.warn("#{msg}\n") + end + + ## Cross Rails Version Compatibility + + # Returns the root of the Rails application, + # if this is running in a Rails context. + # Returns `nil` if no such root is defined. + # + # @return [String, nil] + def rails_root + if defined?(::Rails.root) + return ::Rails.root.to_s if ::Rails.root + raise "ERROR: Rails.root is nil!" + end + return RAILS_ROOT.to_s if defined?(RAILS_ROOT) + nil + end + + # Returns the environment of the Rails application, + # if this is running in a Rails context. + # Returns `nil` if no such environment is defined. + # + # @return [String, nil] + def rails_env + return ::Rails.env.to_s if defined?(::Rails.env) + return RAILS_ENV.to_s if defined?(RAILS_ENV) + nil + end + + # Returns whether this environment is using ActionPack + # version 3.0.0 or greater. + # + # @return [Boolean] + def ap_geq_3? + ap_geq?("3.0.0.beta1") + end + + # Returns whether this environment is using ActionPack + # of a version greater than or equal to that specified. + # + # @param version [String] The string version number to check against. + # Should be greater than or equal to Rails 3, + # because otherwise ActionPack::VERSION isn't autoloaded + # @return [Boolean] + def ap_geq?(version) + # The ActionPack module is always loaded automatically in Rails >= 3 + return false unless defined?(ActionPack) && defined?(ActionPack::VERSION) && + defined?(ActionPack::VERSION::STRING) + + version_geq(ActionPack::VERSION::STRING, version) + end + + # Returns an ActionView::Template* class. + # In pre-3.0 versions of Rails, most of these classes + # were of the form `ActionView::TemplateFoo`, + # while afterwards they were of the form `ActionView;:Template::Foo`. + # + # @param name [#to_s] The name of the class to get. + # For example, `:Error` will return `ActionView::TemplateError` + # or `ActionView::Template::Error`. + def av_template_class(name) + return ActionView.const_get("Template#{name}") if ActionView.const_defined?("Template#{name}") + ActionView::Template.const_get(name.to_s) + end + + ## Cross-OS Compatibility + # + # These methods are cached because some of them are called quite frequently + # and even basic checks like String#== are too costly to be called repeatedly. + + # Whether or not this is running on Windows. + # + # @return [Boolean] + def windows? + return @windows if defined?(@windows) + @windows = (RbConfig::CONFIG['host_os'] =~ /mswin|windows|mingw/i) + end + + # Whether or not this is running on IronRuby. + # + # @return [Boolean] + def ironruby? + return @ironruby if defined?(@ironruby) + @ironruby = RUBY_ENGINE == "ironruby" + end + + # Whether or not this is running on Rubinius. + # + # @return [Boolean] + def rbx? + return @rbx if defined?(@rbx) + @rbx = RUBY_ENGINE == "rbx" + end + + # Whether or not this is running on JRuby. + # + # @return [Boolean] + def jruby? + return @jruby if defined?(@jruby) + @jruby = RUBY_PLATFORM =~ /java/ + end + + # Returns an array of ints representing the JRuby version number. + # + # @return [Array] + def jruby_version + @jruby_version ||= ::JRUBY_VERSION.split(".").map {|s| s.to_i} + end + + # Like `Dir.glob`, but works with backslash-separated paths on Windows. + # + # @param path [String] + def glob(path) + path = path.tr('\\', '/') if windows? + if block_given? + Dir.glob(path) {|f| yield(f)} + else + Dir.glob(path) + end + end + + # Like `Pathname.new`, but normalizes Windows paths to always use backslash + # separators. + # + # `Pathname#relative_path_from` can break if the two pathnames aren't + # consistent in their slash style. + # + # @param path [String] + # @return [Pathname] + def pathname(path) + path = path.tr("/", "\\") if windows? + Pathname.new(path) + end + + # Like `Pathname#cleanpath`, but normalizes Windows paths to always use + # backslash separators. Normally, `Pathname#cleanpath` actually does the + # reverse -- it will convert backslashes to forward slashes, which can break + # `Pathname#relative_path_from`. + # + # @param path [String, Pathname] + # @return [Pathname] + def cleanpath(path) + path = Pathname.new(path) unless path.is_a?(Pathname) + pathname(path.cleanpath.to_s) + end + + # Returns `path` with all symlinks resolved. + # + # @param path [String, Pathname] + # @return [Pathname] + def realpath(path) + path = Pathname.new(path) unless path.is_a?(Pathname) + + # Explicitly DON'T run #pathname here. We don't want to convert + # to Windows directory separators because we're comparing these + # against the paths returned by Listen, which use forward + # slashes everywhere. + begin + path.realpath + rescue SystemCallError + # If [path] doesn't actually exist, don't bail, just + # return the original. + path + end + end + + # Returns `path` relative to `from`. + # + # This is like `Pathname#relative_path_from` except it accepts both strings + # and pathnames, it handles Windows path separators correctly, and it throws + # an error rather than crashing if the paths use different encodings + # (https://github.com/ruby/ruby/pull/713). + # + # @param path [String, Pathname] + # @param from [String, Pathname] + # @return [Pathname?] + def relative_path_from(path, from) + pathname(path.to_s).relative_path_from(pathname(from.to_s)) + rescue NoMethodError => e + raise e unless e.name == :zero? + + # Work around https://github.com/ruby/ruby/pull/713. + path = path.to_s + from = from.to_s + raise ArgumentError("Incompatible path encodings: #{path.inspect} is #{path.encoding}, " + + "#{from.inspect} is #{from.encoding}") + end + + # Converts `path` to a "file:" URI. This handles Windows paths correctly. + # + # @param path [String, Pathname] + # @return [String] + def file_uri_from_path(path) + path = path.to_s if path.is_a?(Pathname) + path = path.tr('\\', '/') if windows? + path = URI::DEFAULT_PARSER.escape(path) + return path.start_with?('/') ? "file://" + path : path unless windows? + return "file:///" + path.tr("\\", "/") if path =~ %r{^[a-zA-Z]:[/\\]} + return "file:" + path.tr("\\", "/") if path =~ %r{\\\\[^\\]+\\[^\\/]+} + path.tr("\\", "/") + end + + # Retries a filesystem operation if it fails on Windows. Windows + # has weird and flaky locking rules that can cause operations to fail. + # + # @yield [] The filesystem operation. + def retry_on_windows + return yield unless windows? + + begin + yield + rescue SystemCallError + sleep 0.1 + yield + end + end + + # Prepare a value for a destructuring assignment (e.g. `a, b = + # val`). This works around a performance bug when using + # ActiveSupport, and only needs to be called when `val` is likely + # to be `nil` reasonably often. + # + # See [this bug report](http://redmine.ruby-lang.org/issues/4917). + # + # @param val [Object] + # @return [Object] + def destructure(val) + val || [] + end + + CHARSET_REGEXP = /\A@charset "([^"]+)"/ + bom = "\uFEFF" + UTF_8_BOM = bom.encode("UTF-8").force_encoding('BINARY') + UTF_16BE_BOM = bom.encode("UTF-16BE").force_encoding('BINARY') + UTF_16LE_BOM = bom.encode("UTF-16LE").force_encoding('BINARY') + + ## Cross-Ruby-Version Compatibility + + # Whether or not this is running under Ruby 2.4 or higher. + # + # @return [Boolean] + def ruby2_4? + return @ruby2_4 if defined?(@ruby2_4) + @ruby2_4 = + if RUBY_VERSION_COMPONENTS[0] == 2 + RUBY_VERSION_COMPONENTS[1] >= 4 + else + RUBY_VERSION_COMPONENTS[0] > 2 + end + end + + # Like {\#check\_encoding}, but also checks for a `@charset` declaration + # at the beginning of the file and uses that encoding if it exists. + # + # Sass follows CSS's decoding rules. + # + # @param str [String] The string of which to check the encoding + # @return [(String, Encoding)] The original string encoded as UTF-8, + # and the source encoding of the string + # @raise [Encoding::UndefinedConversionError] if the source encoding + # cannot be converted to UTF-8 + # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` + # @raise [Sass::SyntaxError] If the document declares an encoding that + # doesn't match its contents, or it doesn't declare an encoding and its + # contents are invalid in the native encoding. + def check_sass_encoding(str) + # Determine the fallback encoding following section 3.2 of CSS Syntax Level 3 and Encodings: + # http://www.w3.org/TR/2013/WD-css-syntax-3-20130919/#determine-the-fallback-encoding + # http://encoding.spec.whatwg.org/#decode + binary = str.dup.force_encoding("BINARY") + if binary.start_with?(UTF_8_BOM) + binary.slice! 0, UTF_8_BOM.length + str = binary.force_encoding('UTF-8') + elsif binary.start_with?(UTF_16BE_BOM) + binary.slice! 0, UTF_16BE_BOM.length + str = binary.force_encoding('UTF-16BE') + elsif binary.start_with?(UTF_16LE_BOM) + binary.slice! 0, UTF_16LE_BOM.length + str = binary.force_encoding('UTF-16LE') + elsif binary =~ CHARSET_REGEXP + charset = $1.force_encoding('US-ASCII') + encoding = Encoding.find(charset) + if encoding.name == 'UTF-16' || encoding.name == 'UTF-16BE' + encoding = Encoding.find('UTF-8') + end + str = binary.force_encoding(encoding) + elsif str.encoding.name == "ASCII-8BIT" + # Normally we want to fall back on believing the Ruby string + # encoding, but if that's just binary we want to make sure + # it's valid UTF-8. + str = str.force_encoding('utf-8') + end + + find_encoding_error(str) unless str.valid_encoding? + + begin + # If the string is valid, preprocess it according to section 3.3 of CSS Syntax Level 3. + return str.encode("UTF-8").gsub(/\r\n?|\f/, "\n").tr("\u0000", "�"), str.encoding + rescue EncodingError + find_encoding_error(str) + end + end + + # Destructively removes all elements from an array that match a block, and + # returns the removed elements. + # + # @param array [Array] The array from which to remove elements. + # @yield [el] Called for each element. + # @yieldparam el [*] The element to test. + # @yieldreturn [Boolean] Whether or not to extract the element. + # @return [Array] The extracted elements. + def extract!(array) + out = [] + array.reject! do |e| + next false unless yield e + out << e + true + end + out + end + + # Flattens the first level of nested arrays in `arrs`. Unlike + # `Array#flatten`, this orders the result by taking the first + # values from each array in order, then the second, and so on. + # + # @param arrs [Array] The array to flatten. + # @return [Array] The flattened array. + def flatten_vertically(arrs) + result = [] + arrs = arrs.map {|sub| sub.is_a?(Array) ? sub.dup : Array(sub)} + until arrs.empty? + arrs.reject! do |arr| + result << arr.shift + arr.empty? + end + end + result + end + + # Like `Object#inspect`, but preserves non-ASCII characters rather than + # escaping them under Ruby 1.9.2. This is necessary so that the + # precompiled Haml template can be `#encode`d into `@options[:encoding]` + # before being evaluated. + # + # @param obj {Object} + # @return {String} + def inspect_obj(obj) + return obj.inspect unless version_geq(RUBY_VERSION, "1.9.2") + return ':' + inspect_obj(obj.to_s) if obj.is_a?(Symbol) + return obj.inspect unless obj.is_a?(String) + '"' + obj.gsub(/[\x00-\x7F]+/) {|s| s.inspect[1...-1]} + '"' + end + + # Extracts the non-string vlaues from an array containing both strings and non-strings. + # These values are replaced with escape sequences. + # This can be undone using \{#inject\_values}. + # + # This is useful e.g. when we want to do string manipulation + # on an interpolated string. + # + # The precise format of the resulting string is not guaranteed. + # However, it is guaranteed that newlines and whitespace won't be affected. + # + # @param arr [Array] The array from which values are extracted. + # @return [(String, Array)] The resulting string, and an array of extracted values. + def extract_values(arr) + values = [] + mapped = arr.map do |e| + next e.gsub('{', '{{') if e.is_a?(String) + values << e + next "{#{values.count - 1}}" + end + return mapped.join, values + end + + # Undoes \{#extract\_values} by transforming a string with escape sequences + # into an array of strings and non-string values. + # + # @param str [String] The string with escape sequences. + # @param values [Array] The array of values to inject. + # @return [Array] The array of strings and values. + def inject_values(str, values) + return [str.gsub('{{', '{')] if values.empty? + # Add an extra { so that we process the tail end of the string + result = (str + '{{').scan(/(.*?)(?:(\{\{)|\{(\d+)\})/m).map do |(pre, esc, n)| + [pre, esc ? '{' : '', n ? values[n.to_i] : ''] + end.flatten(1) + result[-2] = '' # Get rid of the extra { + merge_adjacent_strings(result).reject {|s| s == ''} + end + + # Allows modifications to be performed on the string form + # of an array containing both strings and non-strings. + # + # @param arr [Array] The array from which values are extracted. + # @yield [str] A block in which string manipulation can be done to the array. + # @yieldparam str [String] The string form of `arr`. + # @yieldreturn [String] The modified string. + # @return [Array] The modified, interpolated array. + def with_extracted_values(arr) + str, vals = extract_values(arr) + str = yield str + inject_values(str, vals) + end + + # Builds a sourcemap file name given the generated CSS file name. + # + # @param css [String] The generated CSS file name. + # @return [String] The source map file name. + def sourcemap_name(css) + css + ".map" + end + + # Escapes certain characters so that the result can be used + # as the JSON string value. Returns the original string if + # no escaping is necessary. + # + # @param s [String] The string to be escaped + # @return [String] The escaped string + def json_escape_string(s) + return s if s !~ /["\\\b\f\n\r\t]/ + + result = "" + s.split("").each do |c| + case c + when '"', "\\" + result << "\\" << c + when "\n" then result << "\\n" + when "\t" then result << "\\t" + when "\r" then result << "\\r" + when "\f" then result << "\\f" + when "\b" then result << "\\b" + else + result << c + end + end + result + end + + # Converts the argument into a valid JSON value. + # + # @param v [Integer, String, Array, Boolean, nil] + # @return [String] + def json_value_of(v) + case v + when Integer + v.to_s + when String + "\"" + json_escape_string(v) + "\"" + when Array + "[" + v.map {|x| json_value_of(x)}.join(",") + "]" + when NilClass + "null" + when TrueClass + "true" + when FalseClass + "false" + else + raise ArgumentError.new("Unknown type: #{v.class.name}") + end + end + + VLQ_BASE_SHIFT = 5 + VLQ_BASE = 1 << VLQ_BASE_SHIFT + VLQ_BASE_MASK = VLQ_BASE - 1 + VLQ_CONTINUATION_BIT = VLQ_BASE + + BASE64_DIGITS = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + ['+', '/'] + BASE64_DIGIT_MAP = begin + map = {} + BASE64_DIGITS.each_with_index.map do |digit, i| + map[digit] = i + end + map + end + + # Encodes `value` as VLQ (http://en.wikipedia.org/wiki/VLQ). + # + # @param value [Integer] + # @return [String] The encoded value + def encode_vlq(value) + if value < 0 + value = ((-value) << 1) | 1 + else + value <<= 1 + end + + result = '' + begin + digit = value & VLQ_BASE_MASK + value >>= VLQ_BASE_SHIFT + if value > 0 + digit |= VLQ_CONTINUATION_BIT + end + result << BASE64_DIGITS[digit] + end while value > 0 + result + end + + ## Static Method Stuff + + # The context in which the ERB for \{#def\_static\_method} will be run. + class StaticConditionalContext + # @param set [#include?] The set of variables that are defined for this context. + def initialize(set) + @set = set + end + + # Checks whether or not a variable is defined for this context. + # + # @param name [Symbol] The name of the variable + # @return [Boolean] + def method_missing(name, *args) + super unless args.empty? && !block_given? + @set.include?(name) + end + end + + # @private + ATOMIC_WRITE_MUTEX = Mutex.new + + # This creates a temp file and yields it for writing. When the + # write is complete, the file is moved into the desired location. + # The atomicity of this operation is provided by the filesystem's + # rename operation. + # + # @param filename [String] The file to write to. + # @param perms [Integer] The permissions used for creating this file. + # Will be masked by the process umask. Defaults to readable/writeable + # by all users however the umask usually changes this to only be writable + # by the process's user. + # @yieldparam tmpfile [Tempfile] The temp file that can be written to. + # @return The value returned by the block. + def atomic_create_and_write_file(filename, perms = 0666) + require 'tempfile' + tmpfile = Tempfile.new(File.basename(filename), File.dirname(filename)) + tmpfile.binmode if tmpfile.respond_to?(:binmode) + result = yield tmpfile + tmpfile.close + ATOMIC_WRITE_MUTEX.synchronize do + begin + File.chmod(perms & ~File.umask, tmpfile.path) + rescue Errno::EPERM + # If we don't have permissions to chmod the file, don't let that crash + # the compilation. See issue 1215. + end + File.rename tmpfile.path, filename + end + result + ensure + # close and remove the tempfile if it still exists, + # presumably due to an error during write + tmpfile.close if tmpfile + tmpfile.unlink if tmpfile + end + + private + + def find_encoding_error(str) + encoding = str.encoding + cr = Regexp.quote("\r".encode(encoding).force_encoding('BINARY')) + lf = Regexp.quote("\n".encode(encoding).force_encoding('BINARY')) + ff = Regexp.quote("\f".encode(encoding).force_encoding('BINARY')) + line_break = /#{cr}#{lf}?|#{ff}|#{lf}/ + + str.force_encoding("binary").split(line_break).each_with_index do |line, i| + begin + line.encode(encoding) + rescue Encoding::UndefinedConversionError => e + raise Sass::SyntaxError.new( + "Invalid #{encoding.name} character #{undefined_conversion_error_char(e)}", + :line => i + 1) + end + end + + # We shouldn't get here, but it's possible some weird encoding stuff causes it. + return str, str.encoding + end + + # Calculates the memoization table for the Least Common Subsequence algorithm. + # Algorithm from [Wikipedia](http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Computing_the_length_of_the_LCS) + def lcs_table(x, y) + # This method does not take a block as an explicit parameter for performance reasons. + c = Array.new(x.size) {[]} + x.size.times {|i| c[i][0] = 0} + y.size.times {|j| c[0][j] = 0} + (1...x.size).each do |i| + (1...y.size).each do |j| + c[i][j] = + if yield x[i], y[j] + c[i - 1][j - 1] + 1 + else + [c[i][j - 1], c[i - 1][j]].max + end + end + end + c + end + + # Computes a single longest common subsequence for arrays x and y. + # Algorithm from [Wikipedia](http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Reading_out_an_LCS) + def lcs_backtrace(c, x, y, i, j, &block) + return [] if i == 0 || j == 0 + if (v = yield(x[i], y[j])) + return lcs_backtrace(c, x, y, i - 1, j - 1, &block) << v + end + + return lcs_backtrace(c, x, y, i, j - 1, &block) if c[i][j - 1] > c[i - 1][j] + lcs_backtrace(c, x, y, i - 1, j, &block) + end + + singleton_methods.each {|method| module_function method} + end +end + +require 'sass/util/multibyte_string_scanner' +require 'sass/util/normalized_map' diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/multibyte_string_scanner.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/multibyte_string_scanner.rb new file mode 100644 index 0000000000..27e07f093b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/multibyte_string_scanner.rb @@ -0,0 +1,151 @@ +require 'strscan' + +if Sass::Util.rbx? + # Rubinius's StringScanner class implements some of its methods in terms of + # others, which causes us to double-count bytes in some cases if we do + # straightforward inheritance. To work around this, we use a delegate class. + require 'delegate' + class Sass::Util::MultibyteStringScanner < DelegateClass(StringScanner) + def initialize(str) + super(StringScanner.new(str)) + @mb_pos = 0 + @mb_matched_size = nil + @mb_last_pos = nil + end + + def is_a?(klass) + __getobj__.is_a?(klass) || super + end + end +else + class Sass::Util::MultibyteStringScanner < StringScanner + def initialize(str) + super + @mb_pos = 0 + @mb_matched_size = nil + @mb_last_pos = nil + end + end +end + +# A wrapper of the native StringScanner class that works correctly with +# multibyte character encodings. The native class deals only in bytes, not +# characters, for methods like [#pos] and [#matched_size]. This class deals +# only in characters, instead. +class Sass::Util::MultibyteStringScanner + def self.new(str) + return StringScanner.new(str) if str.ascii_only? + super + end + + alias_method :byte_pos, :pos + alias_method :byte_matched_size, :matched_size + + def check(pattern); _match super; end + def check_until(pattern); _matched super; end + def getch; _forward _match super; end + def match?(pattern); _size check(pattern); end + def matched_size; @mb_matched_size; end + def peek(len); string[@mb_pos, len]; end + alias_method :peep, :peek + def pos; @mb_pos; end + alias_method :pointer, :pos + def rest_size; rest.size; end + def scan(pattern); _forward _match super; end + def scan_until(pattern); _forward _matched super; end + def skip(pattern); _size scan(pattern); end + def skip_until(pattern); _matched _size scan_until(pattern); end + + def get_byte + raise "MultibyteStringScanner doesn't support #get_byte." + end + + def getbyte + raise "MultibyteStringScanner doesn't support #getbyte." + end + + def pos=(n) + @mb_last_pos = nil + + # We set position kind of a lot during parsing, so we want it to be as + # efficient as possible. This is complicated by the fact that UTF-8 is a + # variable-length encoding, so it's difficult to find the byte length that + # corresponds to a given character length. + # + # Our heuristic here is to try to count the fewest possible characters. So + # if the new position is close to the current one, just count the + # characters between the two; if the new position is closer to the + # beginning of the string, just count the characters from there. + if @mb_pos - n < @mb_pos / 2 + # New position is close to old position + byte_delta = @mb_pos > n ? -string[n...@mb_pos].bytesize : string[@mb_pos...n].bytesize + super(byte_pos + byte_delta) + else + # New position is close to BOS + super(string[0...n].bytesize) + end + @mb_pos = n + end + + def reset + @mb_pos = 0 + @mb_matched_size = nil + @mb_last_pos = nil + super + end + + def scan_full(pattern, advance_pointer_p, return_string_p) + res = _match super(pattern, advance_pointer_p, true) + _forward res if advance_pointer_p + return res if return_string_p + end + + def search_full(pattern, advance_pointer_p, return_string_p) + res = super(pattern, advance_pointer_p, true) + _forward res if advance_pointer_p + _matched((res if return_string_p)) + end + + def string=(str) + @mb_pos = 0 + @mb_matched_size = nil + @mb_last_pos = nil + super + end + + def terminate + @mb_pos = string.size + @mb_matched_size = nil + @mb_last_pos = nil + super + end + alias_method :clear, :terminate + + def unscan + super + @mb_pos = @mb_last_pos + @mb_last_pos = @mb_matched_size = nil + end + + private + + def _size(str) + str && str.size + end + + def _match(str) + @mb_matched_size = str && str.size + str + end + + def _matched(res) + _match matched + res + end + + def _forward(str) + @mb_last_pos = @mb_pos + @mb_pos += str.size if str + str + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/normalized_map.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/normalized_map.rb new file mode 100644 index 0000000000..d2e3b87603 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/normalized_map.rb @@ -0,0 +1,122 @@ +require 'delegate' + +module Sass + module Util + # A hash that normalizes its string keys while still allowing you to get back + # to the original keys that were stored. If several different values normalize + # to the same value, whichever is stored last wins. + class NormalizedMap + # Create a normalized map + def initialize(map = nil) + @key_strings = {} + @map = {} + + map.each {|key, value| self[key] = value} if map + end + + # Specifies how to transform the key. + # + # This can be overridden to create other normalization behaviors. + def normalize(key) + key.tr("-", "_") + end + + # Returns the version of `key` as it was stored before + # normalization. If `key` isn't in the map, returns it as it was + # passed in. + # + # @return [String] + def denormalize(key) + @key_strings[normalize(key)] || key + end + + # @private + def []=(k, v) + normalized = normalize(k) + @map[normalized] = v + @key_strings[normalized] = k + v + end + + # @private + def [](k) + @map[normalize(k)] + end + + # @private + def has_key?(k) + @map.has_key?(normalize(k)) + end + + # @private + def delete(k) + normalized = normalize(k) + @key_strings.delete(normalized) + @map.delete(normalized) + end + + # @return [Hash] Hash with the keys as they were stored (before normalization). + def as_stored + Sass::Util.map_keys(@map) {|k| @key_strings[k]} + end + + def empty? + @map.empty? + end + + def values + @map.values + end + + def keys + @map.keys + end + + def each + @map.each {|k, v| yield(k, v)} + end + + def size + @map.size + end + + def to_hash + @map.dup + end + + def to_a + @map.to_a + end + + def map + @map.map {|k, v| yield(k, v)} + end + + def dup + d = super + d.send(:instance_variable_set, "@map", @map.dup) + d + end + + def sort_by + @map.sort_by {|k, v| yield k, v} + end + + def update(map) + map = map.as_stored if map.is_a?(NormalizedMap) + map.each {|k, v| self[k] = v} + end + + def method_missing(method, *args, &block) + if Sass.tests_running + raise ArgumentError.new("The method #{method} must be implemented explicitly") + end + @map.send(method, *args, &block) + end + + def respond_to_missing?(method, include_private = false) + @map.respond_to?(method, include_private) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/subset_map.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/subset_map.rb new file mode 100644 index 0000000000..cd401f23fd --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/subset_map.rb @@ -0,0 +1,109 @@ +require 'set' + +module Sass + module Util + # A map from sets to values. + # A value is \{#\[]= set} by providing a set (the "set-set") and a value, + # which is then recorded as corresponding to that set. + # Values are \{#\[] accessed} by providing a set (the "get-set") + # and returning all values that correspond to set-sets + # that are subsets of the get-set. + # + # SubsetMap preserves the order of values as they're inserted. + # + # @example + # ssm = SubsetMap.new + # ssm[Set[1, 2]] = "Foo" + # ssm[Set[2, 3]] = "Bar" + # ssm[Set[1, 2, 3]] = "Baz" + # + # ssm[Set[1, 2, 3]] #=> ["Foo", "Bar", "Baz"] + class SubsetMap + # Creates a new, empty SubsetMap. + def initialize + @hash = {} + @vals = [] + end + + # Whether or not this SubsetMap has any key-value pairs. + # + # @return [Boolean] + def empty? + @hash.empty? + end + + # Associates a value with a set. + # When `set` or any of its supersets is accessed, + # `value` will be among the values returned. + # + # Note that if the same `set` is passed to this method multiple times, + # all given `value`s will be associated with that `set`. + # + # This runs in `O(n)` time, where `n` is the size of `set`. + # + # @param set [#to_set] The set to use as the map key. May not be empty. + # @param value [Object] The value to associate with `set`. + # @raise [ArgumentError] If `set` is empty. + def []=(set, value) + raise ArgumentError.new("SubsetMap keys may not be empty.") if set.empty? + + index = @vals.size + @vals << value + set.each do |k| + @hash[k] ||= [] + @hash[k] << [set, set.to_set, index] + end + end + + # Returns all values associated with subsets of `set`. + # + # In the worst case, this runs in `O(m*max(n, log m))` time, + # where `n` is the size of `set` + # and `m` is the number of associations in the map. + # However, unless many keys in the map overlap with `set`, + # `m` will typically be much smaller. + # + # @param set [Set] The set to use as the map key. + # @return [Array<(Object, #to_set)>] An array of pairs, + # where the first value is the value associated with a subset of `set`, + # and the second value is that subset of `set` + # (or whatever `#to_set` object was used to set the value) + # This array is in insertion order. + # @see #[] + def get(set) + res = set.map do |k| + subsets = @hash[k] + next unless subsets + subsets.map do |subenum, subset, index| + next unless subset.subset?(set) + [index, subenum] + end + end.flatten(1) + res.compact! + res.uniq! + res.sort! + res.map! {|i, s| [@vals[i], s]} + res + end + + # Same as \{#get}, but doesn't return the subsets of the argument + # for which values were found. + # + # @param set [Set] The set to use as the map key. + # @return [Array] The array of all values + # associated with subsets of `set`, in insertion order. + # @see #get + def [](set) + get(set).map {|v, _| v} + end + + # Iterates over each value in the subset map. Ignores keys completely. If + # multiple keys have the same value, this will return them multiple times. + # + # @yield [Object] Each value in the map. + def each_value + @vals.each {|v| yield v} + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/test.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/test.rb new file mode 100644 index 0000000000..905e81f263 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/util/test.rb @@ -0,0 +1,9 @@ +module Sass + module Util + module Test + def skip(msg = nil, bt = caller) + super if defined?(super) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/version.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/version.rb new file mode 100644 index 0000000000..1a50696a0d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/lib/sass/version.rb @@ -0,0 +1,120 @@ +require 'date' +require 'sass/util' + +module Sass + # Handles Sass version-reporting. + # Sass not only reports the standard three version numbers, + # but its Git revision hash as well, + # if it was installed from Git. + module Version + # Returns a hash representing the version of Sass. + # The `:major`, `:minor`, and `:teeny` keys have their respective numbers as Integers. + # The `:name` key has the name of the version. + # The `:string` key contains a human-readable string representation of the version. + # The `:number` key is the major, minor, and teeny keys separated by periods. + # The `:date` key, which is not guaranteed to be defined, is the `DateTime` + # at which this release was cut. + # If Sass is checked out from Git, the `:rev` key will have the revision hash. + # For example: + # + # { + # :string => "2.1.0.9616393", + # :rev => "9616393b8924ef36639c7e82aa88a51a24d16949", + # :number => "2.1.0", + # :date => DateTime.parse("Apr 30 13:52:01 2009 -0700"), + # :major => 2, :minor => 1, :teeny => 0 + # } + # + # If a prerelease version of Sass is being used, + # the `:string` and `:number` fields will reflect the full version + # (e.g. `"2.2.beta.1"`), and the `:teeny` field will be `-1`. + # A `:prerelease` key will contain the name of the prerelease (e.g. `"beta"`), + # and a `:prerelease_number` key will contain the rerelease number. + # For example: + # + # { + # :string => "3.0.beta.1", + # :number => "3.0.beta.1", + # :date => DateTime.parse("Mar 31 00:38:04 2010 -0700"), + # :major => 3, :minor => 0, :teeny => -1, + # :prerelease => "beta", + # :prerelease_number => 1 + # } + # + # @return [{Symbol => String/Integer}] The version hash + def version + return @@version if defined?(@@version) + + numbers = File.read(Sass::Util.scope('VERSION')).strip.split('.'). + map {|n| n =~ /^[0-9]+$/ ? n.to_i : n} + name = File.read(Sass::Util.scope('VERSION_NAME')).strip + @@version = { + :major => numbers[0], + :minor => numbers[1], + :teeny => numbers[2], + :name => name + } + + if (date = version_date) + @@version[:date] = date + end + + if numbers[3].is_a?(String) + @@version[:teeny] = -1 + @@version[:prerelease] = numbers[3] + @@version[:prerelease_number] = numbers[4] + end + + @@version[:number] = numbers.join('.') + @@version[:string] = @@version[:number].dup + + if (rev = revision_number) + @@version[:rev] = rev + unless rev[0] == ?( + @@version[:string] << "." << rev[0...7] + end + end + + @@version + end + + private + + def revision_number + if File.exist?(Sass::Util.scope('REVISION')) + rev = File.read(Sass::Util.scope('REVISION')).strip + return rev unless rev =~ /^([a-f0-9]+|\(.*\))$/ || rev == '(unknown)' + end + + return unless File.exist?(Sass::Util.scope('.git/HEAD')) + rev = File.read(Sass::Util.scope('.git/HEAD')).strip + return rev unless rev =~ /^ref: (.*)$/ + + ref_name = $1 + ref_file = Sass::Util.scope(".git/#{ref_name}") + info_file = Sass::Util.scope(".git/info/refs") + return File.read(ref_file).strip if File.exist?(ref_file) + return unless File.exist?(info_file) + File.open(info_file) do |f| + f.each do |l| + sha, ref = l.strip.split("\t", 2) + next unless ref == ref_name + return sha + end + end + nil + end + + def version_date + return unless File.exist?(Sass::Util.scope('VERSION_DATE')) + DateTime.parse(File.read(Sass::Util.scope('VERSION_DATE')).strip) + end + end + + extend Sass::Version + + # A string representing the version of Sass. + # A more fine-grained representation is available from Sass.version. + # @api public + VERSION = version[:string] unless defined?(Sass::VERSION) +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/rails/init.rb b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/rails/init.rb new file mode 100644 index 0000000000..13d5baa306 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-3.7.3/rails/init.rb @@ -0,0 +1 @@ +Kernel.load File.join(File.dirname(__FILE__), '..', 'init.rb') diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CHANGELOG.md b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CHANGELOG.md new file mode 100644 index 0000000000..232adbd890 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CHANGELOG.md @@ -0,0 +1 @@ +# Moved to [GitHub releases](https://github.com/guard/listen/releases) page. diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CONTRIBUTING.md b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CONTRIBUTING.md new file mode 100644 index 0000000000..5a5d6de658 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/CONTRIBUTING.md @@ -0,0 +1,38 @@ +Contribute to Listen +=================== + +File an issue +------------- + +If you haven't already, first see [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) for known issues, solutions and workarounds. + +You can report bugs and feature requests to [GitHub Issues](https://github.com/guard/listen/issues). + +**Please don't ask question in the issue tracker**, instead ask them in our +[Google group](http://groups.google.com/group/guard-dev) or on `#guard` (irc.freenode.net). + +Try to figure out where the issue belongs to: Is it an issue with Listen itself or with Guard? + + +**It's most likely that your bug gets resolved faster if you provide as much information as possible!** + +The MOST useful information is debugging output from Listen (`LISTEN_GEM_DEBUGGING=1`) - see [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) for details. + + +Development +----------- + +* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/listen/master/frames). +* Source hosted at [GitHub](https://github.com/guard/listen). + +Pull requests are very welcome! Please try to follow these simple rules if applicable: + +* Please create a topic branch for every separate change you make. +* Make sure your patches are well tested. All specs run with `rake spec` must pass. +* Update the [Yard](http://yardoc.org/) documentation. +* Update the [README](https://github.com/guard/listen/blob/master/README.md). +* Update the [CHANGELOG](https://github.com/guard/listen/blob/master/CHANGELOG.md) for noteworthy changes. +* Please **do not change** the version number. + +For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on +`#guard` (irc.freenode.net). diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/LICENSE.txt b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/LICENSE.txt new file mode 100644 index 0000000000..b5f71c8b7b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Thibaud Guillaume-Gentil + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/README.md b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/README.md new file mode 100644 index 0000000000..05f0b89862 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/README.md @@ -0,0 +1,297 @@ +# This is a Fork + +This is a fork of the official version `3.0.x` branch. Sass need to support older +versions of ruby than Guard wants to support on an ongoing basis, so we are releasing +updates as needed for critical fixes and will support ruby 2.0 and +greater for as long as Sass users need it. Our blog has more information about +ths [Ruby version policy for Sass](http://blog.sass-lang.com/posts/560719). + +# Listen + +The Listen gem listens to file modifications and notifies you about the changes. + +## Features + +* OS-optimized adapters on MRI for Mac OS X 10.6+, Linux, \*BSD and Windows, [more info](#listen-adapters) below. +* Detects file modification, addition and removal. +* You can watch multiple directories. +* Regexp-patterns for ignoring paths for more accuracy and speed +* Increased change detection accuracy on OS X HFS and VFAT volumes. +* Tested on MRI Ruby environments (2.0+ only) via [Travis CI](https://travis-ci.org/guard/listen), + +## Issues / limitations + +* Limited support for symlinked directories ([#279](https://github.com/guard/listen/issues/279)): + * Symlinks are always followed ([#25](https://github.com/guard/listen/issues/25)). + * Symlinked directories pointing within a watched directory are not supported ([#273](https://github.com/guard/listen/pull/273)- see [Duplicate directory errors](https://github.com/guard/listen/wiki/Duplicate-directory-errors)). +* No directory/adapter-specific configuration options. +* Support for plugins planned for future. +* TCP functionality was removed in Listen [3.0.0](https://github.com/guard/listen/releases/tag/v3.0.0) ([#319](https://github.com/guard/listen/issues/319), [#218](https://github.com/guard/listen/issues/218)). There are plans to extract this feature to separate gems ([#258](https://github.com/guard/listen/issues/258)), until this is finished, you can use by locking the `listen` gem to version `'~> 2.10'`. +* Some filesystems won't work without polling (VM/Vagrant Shared folders, NFS, Samba, sshfs, etc.). +* Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work. +* Windows and \*BSD adapter aren't continuously and automatically tested. +* OSX adapter has some performance limitations ([#342](https://github.com/guard/listen/issues/342)). +* Ruby 1.9.3 is no longer maintained (and may not work with Listen) - it's best to upgrade to Ruby 2.2.2. + +Pull requests or help is very welcome for these. + +## Install + +The simplest way to install Listen is to use [Bundler](http://bundler.io). + +```ruby +gem 'listen', '~> 3.0' # NOTE: for TCP functionality, use '~> 2.10' for now +``` + +## Usage + +Call `Listen.to` with either a single directory or multiple directories, then define the "changes" callback in a block. + +``` ruby +listener = Listen.to('dir/to/listen', 'dir/to/listen2') do |modified, added, removed| + puts "modified absolute path: #{modified}" + puts "added absolute path: #{added}" + puts "removed absolute path: #{removed}" +end +listener.start # not blocking +sleep +``` + +### Pause / unpause / stop + +Listeners can also be easily paused/unpaused: + +``` ruby +listener = Listen.to('dir/path/to/listen') { |modified, added, removed| puts 'handle changes here...' } + +listener.start +listener.paused? # => false +listener.processing? # => true + +listener.pause # stops processing changes (but keeps on collecting them) +listener.paused? # => true +listener.processing? # => false + +listener.unpause # resumes processing changes ("start" would do the same) +listener.stop # stop both listening to changes and processing them +``` + + Note: While paused, Listen keeps on collecting changes in the background - to clear them, call "stop" + + Note: You should keep track of all started listeners and stop them properly on finish. + +### Ignore / ignore! + +Listen ignores some directories and extensions by default (See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer), you can add ignoring patterns with the `ignore` option/method or overwrite default with `ignore!` option/method. + +``` ruby +listener = Listen.to('dir/path/to/listen', ignore: /\.txt/) { |modified, added, removed| # ... } +listener.start +listener.ignore! /\.pkg/ # overwrite all patterns and only ignore pkg extension. +listener.ignore /\.rb/ # ignore rb extension in addition of pkg. +sleep +``` + +Note: `:ignore` regexp patterns are evaluated against relative paths. + +Note: Ignoring paths does not improve performance, except when Polling ([#274](https://github.com/guard/listen/issues/274)) + +### Only + +Listen catches all files (less the ignored ones) by default. If you want to only listen to a specific type of file (i.e., just `.rb` extension), you should use the `only` option/method. + +``` ruby +listener = Listen.to('dir/path/to/listen', only: /\.rb$/) { |modified, added, removed| # ... } +listener.start +listener.only /_spec\.rb$/ # overwrite all existing only patterns. +sleep +``` + +Note: `:only` regexp patterns are evaluated only against relative **file** paths. + + +## Changes callback + +Changes to the listened-to directories gets reported back to the user in a callback. +The registered callback gets invoked, when there are changes, with **three** parameters: +`modified`, `added` and `removed` paths, in that particular order. +Paths are always returned in their absolute form. + +Example: + +```ruby +listener = Listen.to('path/to/app') do |modified, added, removed| + # This block will be called when there are changes. +end +listener.start +sleep +``` + +or ... + +```ruby +# Create a callback +callback = Proc.new do |modified, added, removed| + # This proc will be called when there are changes. +end +listener = Listen.to('dir', &callback) +listener.start +sleep +``` + +## Options + +All the following options can be set through the `Listen.to` after the directory path(s) params. + +```ruby +ignore: [%r{/foo/bar}, /\.pid$/, /\.coffee$/] # Ignore a list of paths + # default: See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer + +ignore!: %r{/foo/bar} # Same as ignore options, but overwrite default ignored paths. + +only: %r{.rb$} # Only listen to specific files + # default: none + +latency: 0.5 # Set the delay (**in seconds**) between checking for changes + # default: 0.25 sec (1.0 sec for polling) + +wait_for_delay: 4 # Set the delay (**in seconds**) between calls to the callback when changes exist + # default: 0.10 sec + +force_polling: true # Force the use of the polling adapter + # default: none + +relative: false # Whether changes should be relative to current dir or not + # default: false + +polling_fallback_message: 'custom message' # Set a custom polling fallback message (or disable it with false) + # default: "Listen will be polling for changes. Learn more at https://github.com/guard/listen#listen-adapters." +``` + +## Debugging + +Setting the environment variable `LISTEN_GEM_DEBUGGING=1` sets up the INFO level logger, while `LISTEN_GEM_DEBUGGING=2` sets up the DEBUG level logger. + +You can also set `Listen.logger` to a custom logger. + + +## Listen adapters + +The Listen gem has a set of adapters to notify it when there are changes. + +There are 4 OS-specific adapters to support Darwin, Linux, \*BSD and Windows. +These adapters are fast as they use some system-calls to implement the notifying function. + +There is also a polling adapter - although it's much slower than other adapters, +it works on every platform/system and scenario (including network filesystems such as VM shared folders). + +The Darwin and Linux adapters are dependencies of the Listen gem so they work out of the box. For other adapters a specific gem will have to be added to your Gemfile, please read below. + +The Listen gem will choose the best adapter automatically, if present. If you +want to force the use of the polling adapter, use the `:force_polling` option +while initializing the listener. + +### On Windows + +If you are on Windows, it's recommended to use the [`wdm`](https://github.com/Maher4Ever/wdm) adapter instead of polling. + +Please add the following to your Gemfile: + +```ruby +gem 'wdm', '>= 0.1.0' if Gem.win_platform? +``` + +### On \*BSD + +If you are on \*BSD you can try to use the [`rb-kqueue`](https://github.com/mat813/rb-kqueue) adapter instead of polling. + +Please add the following to your Gemfile: + +```ruby +require 'rbconfig' +if RbConfig::CONFIG['target_os'] =~ /bsd|dragonfly/i + gem 'rb-kqueue', '>= 0.2' +end + +``` + +### Getting the [polling fallback message](#options)? + +Please visit the [installation section of the Listen WIKI](https://github.com/guard/listen/wiki#installation) for more information and options for potential fixes. + +### Issues and troubleshooting + +*NOTE: without providing the output after setting the `LISTEN_GEM_DEBUGGING=1` environment variable, it can be almost impossible to guess why listen is not working as expected.* + +See [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting) + +## Performance + +If Listen seems slow or unresponsive, make sure you're not using the Polling adapter (you should see a warning upon startup if you are). + +Also, if the directories you're watching contain many files, make sure you're: + +* not using Polling (ideally) +* using `:ignore` and `:only` options to avoid tracking directories you don't care about (important with Polling and on MacOS) +* running Listen with the `:latency` and `:wait_for_delay` options not too small or too big (depends on needs) +* not watching directories with log files, database files or other frequently changing files +* not using a version of Listen prior to 2.7.7 +* not getting silent crashes within Listen (see LISTEN_GEM_DEBUGGING=2) +* not running multiple instances of Listen in the background +* using a file system with atime modification disabled (ideally) +* not using a filesystem with inaccurate file modification times (ideally), e.g. HFS, VFAT +* not buffering to a slow terminal (e.g. transparency + fancy font + slow gfx card + lots of output) +* ideally not running a slow encryption stack, e.g. btrfs + ecryptfs + +When in doubt, LISTEN_GEM_DEBUGGING=2 can help discover the actual events and time they happened. + +See also [Tips and Techniques](https://github.com/guard/listen/wiki/Tips-and-Techniques). + +## Development + +* Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/listen/master/frames). +* Source hosted at [GitHub](https://github.com/guard/listen). + +Pull requests are very welcome! Please try to follow these simple rules if applicable: + +* Please create a topic branch for every separate change you make. +* Make sure your patches are well tested. All specs must pass on [Travis CI](https://travis-ci.org/guard/listen). +* Update the [Yard](http://yardoc.org/) documentation. +* Update the [README](https://github.com/guard/listen/blob/master/README.md). +* Please **do not change** the version number. + +For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on +`#guard` (irc.freenode.net). + +## Acknowledgments + +* [Michael Kessler (netzpirat)][] for having written the [initial specs](https://github.com/guard/listen/commit/1e457b13b1bb8a25d2240428ce5ed488bafbed1f). +* [Travis Tilley (ttilley)][] for this awesome work on [fssm][] & [rb-fsevent][]. +* [Nathan Weizenbaum (nex3)][] for [rb-inotify][], a thorough inotify wrapper. +* [Mathieu Arnold (mat813)][] for [rb-kqueue][], a simple kqueue wrapper. +* [Maher Sallam][] for [wdm][], windows support wouldn't exist without him. +* [Yehuda Katz (wycats)][] for [vigilo][], that has been a great source of inspiration. + +## Author + +[Thibaud Guillaume-Gentil](https://github.com/thibaudgg) ([@thibaudgg](https://twitter.com/thibaudgg)) + +## Contributors + +[https://github.com/guard/listen/graphs/contributors](https://github.com/guard/listen/graphs/contributors) + +[Thibaud Guillaume-Gentil (thibaudgg)]: https://github.com/thibaudgg +[Maher Sallam]: https://github.com/Maher4Ever +[Michael Kessler (netzpirat)]: https://github.com/netzpirat +[Travis Tilley (ttilley)]: https://github.com/ttilley +[fssm]: https://github.com/ttilley/fssm +[rb-fsevent]: https://github.com/thibaudgg/rb-fsevent +[Mathieu Arnold (mat813)]: https://github.com/mat813 +[Nathan Weizenbaum (nex3)]: https://github.com/nex3 +[rb-inotify]: https://github.com/nex3/rb-inotify +[stereobooster]: https://github.com/stereobooster +[rb-fchange]: https://github.com/stereobooster/rb-fchange +[rb-kqueue]: https://github.com/mat813/rb-kqueue +[Yehuda Katz (wycats)]: https://github.com/wycats +[vigilo]: https://github.com/wycats/vigilo +[wdm]: https://github.com/Maher4Ever/wdm diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen.rb new file mode 100644 index 0000000000..dac914fbaf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen.rb @@ -0,0 +1,55 @@ +require 'logger' +require 'sass-listen/logger' +require 'sass-listen/listener' + +require 'sass-listen/internals/thread_pool' + +# Always set up logging by default first time file is required +# +# NOTE: If you need to clear the logger completely, do so *after* +# requiring this file. If you need to set a custom logger, +# require the listen/logger file and set the logger before requiring +# this file. +SassListen.setup_default_logger_if_unset + +# Won't print anything by default because of level - unless you've set +# LISTEN_GEM_DEBUGGING or provided your own logger with a high enough level +SassListen::Logger.info "SassListen loglevel set to: #{SassListen.logger.level}" +SassListen::Logger.info "SassListen version: #{SassListen::VERSION}" + +module SassListen + class << self + # Listens to file system modifications on a either single directory or + # multiple directories. + # + # @param (see SassListen::Listener#new) + # + # @yield [modified, added, removed] the changed files + # @yieldparam [Array] modified the list of modified files + # @yieldparam [Array] added the list of added files + # @yieldparam [Array] removed the list of removed files + # + # @return [SassListen::Listener] the listener + # + def to(*args, &block) + @listeners ||= [] + Listener.new(*args, &block).tap do |listener| + @listeners << listener + end + end + + # This is used by the `listen` binary to handle Ctrl-C + # + def stop + Internals::ThreadPool.stop + @listeners ||= [] + + # TODO: should use a mutex for this + @listeners.each do |listener| + # call stop to halt the main loop + listener.stop + end + @listeners = nil + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter.rb new file mode 100644 index 0000000000..1f94971228 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter.rb @@ -0,0 +1,43 @@ +require 'sass-listen/adapter/base' +require 'sass-listen/adapter/bsd' +require 'sass-listen/adapter/darwin' +require 'sass-listen/adapter/linux' +require 'sass-listen/adapter/polling' +require 'sass-listen/adapter/windows' + +module SassListen + module Adapter + OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows] + POLLING_FALLBACK_MESSAGE = 'SassListen will be polling for changes.'\ + 'Learn more at https://github.com/guard/listen#listen-adapters.' + + def self.select(options = {}) + _log :debug, 'Adapter: considering polling ...' + return Polling if options[:force_polling] + _log :debug, 'Adapter: considering optimized backend...' + return _usable_adapter_class if _usable_adapter_class + _log :debug, 'Adapter: falling back to polling...' + _warn_polling_fallback(options) + Polling + rescue + _log :warn, format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect, + $ERROR_POSITION * "\n") + raise + end + + private + + def self._usable_adapter_class + OPTIMIZED_ADAPTERS.detect(&:usable?) + end + + def self._warn_polling_fallback(options) + msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE) + Kernel.warn "[SassListen warning]:\n #{msg}" if msg + end + + def self._log(type, message) + SassListen::Logger.send(type, message) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/base.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/base.rb new file mode 100644 index 0000000000..94a9071961 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/base.rb @@ -0,0 +1,137 @@ +require 'sass-listen/options' +require 'sass-listen/record' +require 'sass-listen/change' + +module SassListen + module Adapter + class Base + attr_reader :options + + # TODO: only used by tests + DEFAULTS = {} + + attr_reader :config + + def initialize(config) + @started = false + @config = config + + @configured = nil + + fail 'No directories to watch!' if config.directories.empty? + + defaults = self.class.const_get('DEFAULTS') + @options = SassListen::Options.new(config.adapter_options, defaults) + rescue + _log_exception 'adapter config failed: %s:%s called from: %s', caller + raise + end + + # TODO: it's a separate method as a temporary workaround for tests + def configure + if @configured + _log(:warn, 'Adapter already configured!') + return + end + + @configured = true + + @callbacks ||= {} + config.directories.each do |dir| + callback = @callbacks[dir] || lambda do |event| + _process_event(dir, event) + end + @callbacks[dir] = callback + _configure(dir, &callback) + end + + @snapshots ||= {} + # TODO: separate config per directory (some day maybe) + change_config = Change::Config.new(config.queue, config.silencer) + config.directories.each do |dir| + record = Record.new(dir) + snapshot = Change.new(change_config, record) + @snapshots[dir] = snapshot + end + end + + def started? + @started + end + + def start + configure + + if started? + _log(:warn, 'Adapter already started!') + return + end + + @started = true + + calling_stack = caller.dup + SassListen::Internals::ThreadPool.add do + begin + @snapshots.values.each do |snapshot| + _timed('Record.build()') { snapshot.record.build } + end + _run + rescue + msg = 'run() in thread failed: %s:\n'\ + ' %s\n\ncalled from:\n %s' + _log_exception(msg, calling_stack) + raise # for unit tests mostly + end + end + end + + def stop + _stop + end + + def self.usable? + const_get('OS_REGEXP') =~ RbConfig::CONFIG['target_os'] + end + + private + + def _stop + end + + def _timed(title) + start = Time.now.to_f + yield + diff = Time.now.to_f - start + SassListen::Logger.info format('%s: %.05f seconds', title, diff) + rescue + SassListen::Logger.warn "#{title} crashed: #{$ERROR_INFO.inspect}" + raise + end + + # TODO: allow backend adapters to pass specific invalidation objects + # e.g. Darwin -> DirRescan, INotify -> MoveScan, etc. + def _queue_change(type, dir, rel_path, options) + @snapshots[dir].invalidate(type, rel_path, options) + end + + def _log(*args, &block) + self.class.send(:_log, *args, &block) + end + + def _log_exception(msg, caller_stack) + formatted = format( + msg, + $ERROR_INFO, + $ERROR_POSITION * "\n", + caller_stack * "\n" + ) + + _log(:error, formatted) + end + + def self._log(*args, &block) + SassListen::Logger.send(*args, &block) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/bsd.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/bsd.rb new file mode 100644 index 0000000000..90e5f58d8d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/bsd.rb @@ -0,0 +1,106 @@ +# Listener implementation for BSD's `kqueue`. +# @see http://www.freebsd.org/cgi/man.cgi?query=kqueue +# @see https://github.com/mat813/rb-kqueue/blob/master/lib/rb-kqueue/queue.rb +# +module SassListen + module Adapter + class BSD < Base + OS_REGEXP = /bsd|dragonfly/i + + DEFAULTS = { + events: [ + :delete, + :write, + :extend, + :attrib, + :rename + # :link, :revoke + ] + } + + BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '') + Please add the following to your Gemfile to avoid polling for changes: + require 'rbconfig' + if RbConfig::CONFIG['target_os'] =~ /#{OS_REGEXP}/ + gem 'rb-kqueue', '>= 0.2' + end + EOS + + def self.usable? + return false unless super + require 'rb-kqueue' + require 'find' + true + rescue LoadError + Kernel.warn BUNDLER_DECLARE_GEM + false + end + + private + + def _configure(directory, &_callback) + @worker ||= KQueue::Queue.new + @callback = _callback + # use Record to make a snapshot of dir, so we + # can detect new files + _find(directory.to_s) { |path| _watch_file(path, @worker) } + end + + def _run + @worker.run + end + + def _process_event(dir, event) + full_path = _event_path(event) + if full_path.directory? + # Force dir content tracking to kick in, or we won't have + # names of added files + _queue_change(:dir, dir, '.', recursive: true) + elsif full_path.exist? + path = full_path.relative_path_from(dir) + _queue_change(:file, dir, path.to_s, change: _change(event.flags)) + end + + # If it is a directory, and it has a write flag, it means a + # file has been added so find out which and deal with it. + # No need to check for removed files, kqueue will forget them + # when the vfs does. + _watch_for_new_file(event) if full_path.directory? + end + + def _change(event_flags) + { modified: [:attrib, :extend], + added: [:write], + removed: [:rename, :delete] + }.each do |change, flags| + return change unless (flags & event_flags).empty? + end + nil + end + + def _event_path(event) + Pathname.new(event.watcher.path) + end + + def _watch_for_new_file(event) + queue = event.watcher.queue + _find(_event_path(event).to_s) do |file_path| + unless queue.watchers.detect { |_, v| v.path == file_path.to_s } + _watch_file(file_path, queue) + end + end + end + + def _watch_file(path, queue) + queue.watch_file(path, *options.events, &@callback) + rescue Errno::ENOENT => e + _log :warn, "kqueue: watch file failed: #{e.message}" + end + + # Quick rubocop workaround + def _find(*paths, &block) + Find.send(:find, *paths, &block) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/config.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/config.rb new file mode 100644 index 0000000000..e1c807a73f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/config.rb @@ -0,0 +1,26 @@ +require 'pathname' + +module SassListen + module Adapter + class Config + attr_reader :directories + attr_reader :silencer + attr_reader :queue + attr_reader :adapter_options + + def initialize(directories, queue, silencer, adapter_options) + # Default to current directory if no directories are supplied + directories = [Dir.pwd] if directories.to_a.empty? + + # TODO: fix (flatten, array, compact?) + @directories = directories.map do |directory| + Pathname.new(directory.to_s).realpath + end + + @silencer = silencer + @queue = queue + @adapter_options = adapter_options + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/darwin.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/darwin.rb new file mode 100644 index 0000000000..d5437263f1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/darwin.rb @@ -0,0 +1,88 @@ +require 'thread' +require 'sass-listen/internals/thread_pool' + +module SassListen + module Adapter + # Adapter implementation for Mac OS X `FSEvents`. + # + class Darwin < Base + OS_REGEXP = /darwin(?1\d+)/i + + # The default delay between checking for changes. + DEFAULTS = { latency: 0.1 } + + INCOMPATIBLE_GEM_VERSION = <<-EOS.gsub(/^ {8}/, '') + rb-fsevent > 0.9.4 no longer supports OS X 10.6 through 10.8. + + Please add the following to your Gemfile to avoid polling for changes: + require 'rbconfig' + if RbConfig::CONFIG['target_os'] =~ /darwin(1[0-3])/i + gem 'rb-fsevent', '<= 0.9.4' + end + EOS + + def self.usable? + require 'rb-fsevent' + darwin_version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version] or return false + return true if darwin_version.to_i >= 13 # darwin13 is OS X 10.9 + return true if Gem::Version.new(FSEvent::VERSION) <= Gem::Version.new('0.9.4') + Kernel.warn INCOMPATIBLE_GEM_VERSION + false + end + + private + + # NOTE: each directory gets a DIFFERENT callback! + def _configure(dir, &callback) + opts = { latency: options.latency } + + @workers ||= ::Queue.new + @workers << FSEvent.new.tap do |worker| + _log :debug, "fsevent: watching: #{dir.to_s.inspect}" + worker.watch(dir.to_s, opts, &callback) + end + end + + def _run + first = @workers.pop + + # NOTE: _run is called within a thread, so run every other + # worker in it's own thread + _run_workers_in_background(_to_array(@workers)) + _run_worker(first) + end + + def _process_event(dir, event) + _log :debug, "fsevent: processing event: #{event.inspect}" + event.each do |path| + new_path = Pathname.new(path.sub(/\/$/, '')) + _log :debug, "fsevent: #{new_path}" + # TODO: does this preserve symlinks? + rel_path = new_path.relative_path_from(dir).to_s + _queue_change(:dir, dir, rel_path, recursive: true) + end + end + + def _run_worker(worker) + _log :debug, "fsevent: running worker: #{worker.inspect}" + worker.run + rescue + _log_exception 'fsevent: running worker failed: %s:%s called from: %s', caller + end + + def _run_workers_in_background(workers) + workers.each do |worker| + # NOTE: while passing local variables to the block below is not + # thread safe, using 'worker' from the enumerator above is ok + SassListen::Internals::ThreadPool.add { _run_worker(worker) } + end + end + + def _to_array(queue) + workers = [] + workers << queue.pop until queue.empty? + workers + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/linux.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/linux.rb new file mode 100644 index 0000000000..08d0d80ea4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/linux.rb @@ -0,0 +1,108 @@ +module SassListen + module Adapter + # @see https://github.com/nex3/rb-inotify + class Linux < Base + OS_REGEXP = /linux/i + + DEFAULTS = { + events: [ + :recursive, + :attrib, + :create, + :delete, + :move, + :close_write + ], + wait_for_delay: 0.1 + } + + private + + WIKI_URL = 'https://github.com/guard/listen'\ + '/wiki/Increasing-the-amount-of-inotify-watchers' + + INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '') + FATAL: SassListen error: unable to monitor directories for changes. + Visit #{WIKI_URL} for info on how to fix this. + EOS + + def _configure(directory, &callback) + require 'rb-inotify' + @worker ||= ::INotify::Notifier.new + @worker.watch(directory.to_s, *options.events, &callback) + rescue Errno::ENOSPC + abort(INOTIFY_LIMIT_MESSAGE) + end + + def _run + Thread.current[:listen_blocking_read_thread] = true + @worker.run + Thread.current[:listen_blocking_read_thread] = false + end + + def _process_event(dir, event) + # NOTE: avoid using event.absolute_name since new API + # will need to have a custom recursion implemented + # to properly match events to configured directories + path = Pathname.new(event.watcher.path) + event.name + rel_path = path.relative_path_from(dir).to_s + + _log(:debug) { "inotify: #{rel_path} (#{event.flags.inspect})" } + + if /1|true/ =~ ENV['LISTEN_GEM_SIMULATE_FSEVENT'] + if (event.flags & [:moved_to, :moved_from]) || _dir_event?(event) + rel_path = path.dirname.relative_path_from(dir).to_s + _queue_change(:dir, dir, rel_path, {}) + else + _queue_change(:dir, dir, rel_path, {}) + end + return + end + + return if _skip_event?(event) + + cookie_params = event.cookie.zero? ? {} : { cookie: event.cookie } + + # Note: don't pass options to force rescanning the directory, so we can + # detect moving/deleting a whole tree + if _dir_event?(event) + _queue_change(:dir, dir, rel_path, cookie_params) + return + end + + params = cookie_params.merge(change: _change(event.flags)) + + _queue_change(:file, dir, rel_path, params) + end + + def _skip_event?(event) + # Event on root directory + return true if event.name == '' + # INotify reports changes to files inside directories as events + # on the directories themselves too. + # + # @see http://linux.die.net/man/7/inotify + _dir_event?(event) && (event.flags & [:close, :modify]).any? + end + + def _change(event_flags) + { modified: [:attrib, :close_write], + moved_to: [:moved_to], + moved_from: [:moved_from], + added: [:create], + removed: [:delete] }.each do |change, flags| + return change unless (flags & event_flags).empty? + end + nil + end + + def _dir_event?(event) + event.flags.include?(:isdir) + end + + def _stop + @worker && @worker.close + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/polling.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/polling.rb new file mode 100644 index 0000000000..cd6d3c97a9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/polling.rb @@ -0,0 +1,37 @@ +module SassListen + module Adapter + # Polling Adapter that works cross-platform and + # has no dependencies. This is the adapter that + # uses the most CPU processing power and has higher + # file IO than the other implementations. + # + class Polling < Base + OS_REGEXP = // # match every OS + + DEFAULTS = { latency: 1.0, wait_for_delay: 0.05 } + + private + + def _configure(_, &callback) + @polling_callbacks ||= [] + @polling_callbacks << callback + end + + def _run + loop do + start = Time.now.to_f + @polling_callbacks.each do |callback| + callback.call(nil) + nap_time = options.latency - (Time.now.to_f - start) + # TODO: warn if nap_time is negative (polling too slow) + sleep(nap_time) if nap_time > 0 + end + end + end + + def _process_event(dir, _) + _queue_change(:dir, dir, '.', recursive: true) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/windows.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/windows.rb new file mode 100644 index 0000000000..7214e19e76 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/adapter/windows.rb @@ -0,0 +1,99 @@ +module SassListen + module Adapter + # Adapter implementation for Windows `wdm`. + # + class Windows < Base + OS_REGEXP = /mswin|mingw|cygwin/i + + BUNDLER_DECLARE_GEM = <<-EOS.gsub(/^ {6}/, '') + Please add the following to your Gemfile to avoid polling for changes: + gem 'wdm', '>= 0.1.0' if Gem.win_platform? + EOS + + def self.usable? + return false unless super + require 'wdm' + true + rescue LoadError + _log :debug, format('wdm - load failed: %s:%s', $ERROR_INFO, + $ERROR_POSITION * "\n") + + Kernel.warn BUNDLER_DECLARE_GEM + false + end + + private + + def _configure(dir, &callback) + require 'wdm' + _log :debug, 'wdm - starting...' + @worker ||= WDM::Monitor.new + @worker.watch_recursively(dir.to_s, :files) do |change| + callback.call([:file, change]) + end + + @worker.watch_recursively(dir.to_s, :directories) do |change| + callback.call([:dir, change]) + end + + events = [:attributes, :last_write] + @worker.watch_recursively(dir.to_s, *events) do |change| + callback.call([:attr, change]) + end + end + + def _run + @worker.run! + end + + def _process_event(dir, event) + _log :debug, "wdm - callback: #{event.inspect}" + + type, change = event + + full_path = Pathname(change.path) + + rel_path = full_path.relative_path_from(dir).to_s + + options = { change: _change(change.type) } + + case type + when :file + _queue_change(:file, dir, rel_path, options) + when :attr + unless full_path.directory? + _queue_change(:file, dir, rel_path, options) + end + when :dir + if change.type == :removed + # TODO: check if watched dir? + _queue_change(:dir, dir, Pathname(rel_path).dirname.to_s, {}) + elsif change.type == :added + _queue_change(:dir, dir, rel_path, {}) + else + # do nothing - changed directory means either: + # - removed subdirs (handled above) + # - added subdirs (handled above) + # - removed files (handled by _file_callback) + # - added files (handled by _file_callback) + # so what's left? + end + end + rescue + details = event.inspect + _log :error, format('wdm - callback (%): %s:%s', details, $ERROR_INFO, + $ERROR_POSITION * "\n") + raise + end + + def _change(type) + { modified: [:modified, :attrib], # TODO: is attrib really passed? + added: [:added, :renamed_new_file], + removed: [:removed, :renamed_old_file] }.each do |change, types| + return change if types.include?(type) + end + nil + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/backend.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/backend.rb new file mode 100644 index 0000000000..08dd764fe8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/backend.rb @@ -0,0 +1,43 @@ +require 'sass-listen/adapter' +require 'sass-listen/adapter/base' +require 'sass-listen/adapter/config' + +require 'forwardable' + +# This class just aggregates configuration object to avoid Listener specs +# from exploding with huge test setup blocks +module SassListen + class Backend + def initialize(directories, queue, silencer, config) + adapter_select_opts = config.adapter_select_options + + adapter_class = Adapter.select(adapter_select_opts) + + # Use default from adapter if possible + @min_delay_between_events = config.min_delay_between_events + @min_delay_between_events ||= adapter_class::DEFAULTS[:wait_for_delay] + @min_delay_between_events ||= 0.1 + + adapter_opts = config.adapter_instance_options(adapter_class) + + aconfig = Adapter::Config.new(directories, queue, silencer, adapter_opts) + @adapter = adapter_class.new(aconfig) + end + + def start + adapter.start + end + + def stop + adapter.stop + end + + def min_delay_between_events + @min_delay_between_events + end + + private + + attr_reader :adapter + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/change.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/change.rb new file mode 100644 index 0000000000..6b1f07c314 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/change.rb @@ -0,0 +1,78 @@ +require 'sass-listen/file' +require 'sass-listen/directory' + +module SassListen + # TODO: rename to Snapshot + class Change + # TODO: test this class for coverage + class Config + def initialize(queue, silencer) + @queue = queue + @silencer = silencer + end + + def silenced?(path, type) + @silencer.silenced?(Pathname(path), type) + end + + def queue(*args) + @queue << args + end + end + + attr_reader :record + + def initialize(config, record) + @config = config + @record = record + end + + # Invalidate some part of the snapshot/record (dir, file, subtree, etc.) + def invalidate(type, rel_path, options) + watched_dir = Pathname.new(record.root) + + change = options[:change] + cookie = options[:cookie] + + if !cookie && config.silenced?(rel_path, type) + SassListen::Logger.debug { "(silenced): #{rel_path.inspect}" } + return + end + + path = watched_dir + rel_path + + SassListen::Logger.debug do + log_details = options[:silence] && 'recording' || change || 'unknown' + "#{log_details}: #{type}:#{path} (#{options.inspect})" + end + + if change + options = cookie ? { cookie: cookie } : {} + config.queue(type, change, watched_dir, rel_path, options) + else + if type == :dir + # NOTE: POSSIBLE RECURSION + # TODO: fix - use a queue instead + Directory.scan(self, rel_path, options) + else + change = File.change(record, rel_path) + return if !change || options[:silence] + config.queue(:file, change, watched_dir, rel_path) + end + end + rescue RuntimeError => ex + msg = format( + '%s#%s crashed %s:%s', + self.class, + __method__, + exinspect, + ex.backtrace * "\n") + SassListen::Logger.error(msg) + raise + end + + private + + attr_reader :config + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/cli.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/cli.rb new file mode 100644 index 0000000000..c56193d5d0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/cli.rb @@ -0,0 +1,65 @@ +require 'thor' +require 'sass-listen' +require 'logger' + +module SassListen + class CLI < Thor + default_task :start + + desc 'start', 'Starts SassListen' + + class_option :verbose, + type: :boolean, + default: false, + aliases: '-v', + banner: 'Verbose' + + class_option :directory, + type: :array, + default: '.', + aliases: '-d', + banner: 'The directory to listen to' + + class_option :relative, + type: :boolean, + default: false, + aliases: '-r', + banner: 'Convert paths relative to current directory' + + def start + SassListen::Forwarder.new(options).start + end + end + + class Forwarder + attr_reader :logger + def initialize(options) + @options = options + @logger = ::Logger.new(STDOUT) + @logger.level = ::Logger::INFO + @logger.formatter = proc { |_, _, _, msg| "#{msg}\n" } + end + + def start + logger.info 'Starting listen...' + directory = @options[:directory] + relative = @options[:relative] + callback = proc do |modified, added, removed| + if @options[:verbose] + logger.info "+ #{added}" unless added.empty? + logger.info "- #{removed}" unless removed.empty? + logger.info "> #{modified}" unless modified.empty? + end + end + + listener = SassListen.to( + directory, + relative: relative, + &callback) + + listener.start + + sleep 0.5 while listener.processing? + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/directory.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/directory.rb new file mode 100644 index 0000000000..b3ab70452d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/directory.rb @@ -0,0 +1,87 @@ +require 'set' + +module SassListen + # TODO: refactor (turn it into a normal object, cache the stat, etc) + class Directory + def self.scan(snapshot, rel_path, options) + record = snapshot.record + dir = Pathname.new(record.root) + previous = record.dir_entries(rel_path) + + record.add_dir(rel_path) + + # TODO: use children(with_directory: false) + path = dir + rel_path + current = Set.new(_children(path)) + + SassListen::Logger.debug do + format('%s: %s(%s): %s -> %s', + (options[:silence] ? 'Recording' : 'Scanning'), + rel_path, options.inspect, previous.inspect, current.inspect) + end + + begin + current.each do |full_path| + type = ::File.lstat(full_path.to_s).directory? ? :dir : :file + item_rel_path = full_path.relative_path_from(dir).to_s + _change(snapshot, type, item_rel_path, options) + end + rescue Errno::ENOENT + # The directory changed meanwhile, so rescan it + current = Set.new(_children(path)) + retry + end + + # TODO: this is not tested properly + previous = previous.reject { |entry, _| current.include? path + entry } + + _async_changes(snapshot, Pathname.new(rel_path), previous, options) + + rescue Errno::ENOENT, Errno::EHOSTDOWN + record.unset_path(rel_path) + _async_changes(snapshot, Pathname.new(rel_path), previous, options) + + rescue Errno::ENOTDIR + # TODO: path not tested + record.unset_path(rel_path) + _async_changes(snapshot, path, previous, options) + _change(snapshot, :file, rel_path, options) + rescue + SassListen::Logger.warn do + format('scan DIED: %s:%s', $ERROR_INFO, $ERROR_POSITION * "\n") + end + raise + end + + def self._async_changes(snapshot, path, previous, options) + fail "Not a Pathname: #{path.inspect}" unless path.respond_to?(:children) + previous.each do |entry, data| + # TODO: this is a hack with insufficient testing + type = data.key?(:mtime) ? :file : :dir + rel_path_s = (path + entry).to_s + _change(snapshot, type, rel_path_s, options) + end + end + + def self._change(snapshot, type, path, options) + return snapshot.invalidate(type, path, options) if type == :dir + + # Minor param cleanup for tests + # TODO: use a dedicated Event class + opts = options.dup + opts.delete(:recursive) + snapshot.invalidate(type, path, opts) + end + + def self._children(path) + return path.children unless RUBY_ENGINE == 'jruby' + + # JRuby inconsistency workaround, see: + # https://github.com/jruby/jruby/issues/3840 + exists = path.exist? + directory = path.directory? + return path.children unless (exists && !directory) + raise Errno::ENOTDIR, path.to_s + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/config.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/config.rb new file mode 100644 index 0000000000..9709ebef71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/config.rb @@ -0,0 +1,59 @@ +module SassListen + module Event + class Config + def initialize( + listener, + event_queue, + queue_optimizer, + wait_for_delay, + &block) + + @listener = listener + @event_queue = event_queue + @queue_optimizer = queue_optimizer + @min_delay_between_events = wait_for_delay + @block = block + end + + def sleep(*args) + Kernel.sleep(*args) + end + + def call(*args) + @block.call(*args) if @block + end + + def timestamp + Time.now.to_f + end + + def event_queue + @event_queue + end + + def callable? + @block + end + + def optimize_changes(changes) + @queue_optimizer.smoosh_changes(changes) + end + + def min_delay_between_events + @min_delay_between_events + end + + def stopped? + listener.state == :stopped + end + + def paused? + listener.state == :paused + end + + private + + attr_reader :listener + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/loop.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/loop.rb new file mode 100644 index 0000000000..c2caec2346 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/loop.rb @@ -0,0 +1,117 @@ +require 'thread' + +require 'timeout' +require 'sass-listen/event/processor' + +module SassListen + module Event + class Loop + class Error < RuntimeError + class NotStarted < Error + end + end + + def initialize(config) + @config = config + @wait_thread = nil + @state = :paused + @reasons = ::Queue.new + end + + def wakeup_on_event + return if stopped? + return unless processing? + return unless wait_thread.alive? + _wakeup(:event) + end + + def paused? + wait_thread && state == :paused + end + + def processing? + return false if stopped? + return false if paused? + state == :processing + end + + def setup + # TODO: use a Fiber instead? + q = ::Queue.new + @wait_thread = Internals::ThreadPool.add do + _wait_for_changes(q, config) + end + + SassListen::Logger.debug('Waiting for processing to start...') + Timeout.timeout(5) { q.pop } + end + + def resume + fail Error::NotStarted if stopped? + return unless wait_thread + _wakeup(:resume) + end + + def pause + # TODO: works? + # fail NotImplementedError + end + + def teardown + return unless wait_thread + if wait_thread.alive? + _wakeup(:teardown) + wait_thread.join + end + @wait_thread = nil + end + + def stopped? + !wait_thread + end + + private + + attr_reader :config + attr_reader :wait_thread + + attr_accessor :state + + def _wait_for_changes(ready_queue, config) + processor = Event::Processor.new(config, @reasons) + + _wait_until_resumed(ready_queue) + processor.loop_for(config.min_delay_between_events) + rescue StandardError => ex + _nice_error(ex) + end + + def _sleep(*args) + Kernel.sleep(*args) + end + + def _wait_until_resumed(ready_queue) + self.state = :paused + ready_queue << :ready + sleep + self.state = :processing + end + + def _nice_error(ex) + indent = "\n -- " + msg = format( + 'exception while processing events: %s Backtrace:%s%s', + ex, + indent, + ex.backtrace * indent + ) + SassListen::Logger.error(msg) + end + + def _wakeup(reason) + @reasons << reason + wait_thread.wakeup + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/processor.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/processor.rb new file mode 100644 index 0000000000..4002880957 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/processor.rb @@ -0,0 +1,122 @@ +module SassListen + module Event + class Processor + def initialize(config, reasons) + @config = config + @reasons = reasons + _reset_no_unprocessed_events + end + + # TODO: implement this properly instead of checking the state at arbitrary + # points in time + def loop_for(latency) + @latency = latency + + loop do + _wait_until_events + _wait_until_events_calm_down + _wait_until_no_longer_paused + _process_changes + end + rescue Stopped + SassListen::Logger.debug('Processing stopped') + end + + private + + class Stopped < RuntimeError + end + + def _wait_until_events_calm_down + loop do + now = _timestamp + + # Assure there's at least latency between callbacks to allow + # for accumulating changes + diff = _deadline - now + break if diff <= 0 + + # give events a bit of time to accumulate so they can be + # compressed/optimized + _sleep(:waiting_until_latency, diff) + end + end + + def _wait_until_no_longer_paused + # TODO: may not be a good idea? + _sleep(:waiting_for_unpause) while config.paused? + end + + def _check_stopped + return unless config.stopped? + + _flush_wakeup_reasons + raise Stopped + end + + def _sleep(_local_reason, *args) + _check_stopped + sleep_duration = config.sleep(*args) + _check_stopped + + _flush_wakeup_reasons do |reason| + next unless reason == :event + _remember_time_of_first_unprocessed_event unless config.paused? + end + + sleep_duration + end + + def _remember_time_of_first_unprocessed_event + @first_unprocessed_event_time ||= _timestamp + end + + def _reset_no_unprocessed_events + @first_unprocessed_event_time = nil + end + + def _deadline + @first_unprocessed_event_time + @latency + end + + def _wait_until_events + # TODO: long sleep may not be a good idea? + _sleep(:waiting_for_events) while config.event_queue.empty? + @first_unprocessed_event_time ||= _timestamp + end + + def _flush_wakeup_reasons + reasons = @reasons + until reasons.empty? + reason = reasons.pop + yield reason if block_given? + end + end + + def _timestamp + config.timestamp + end + + # for easier testing without sleep loop + def _process_changes + _reset_no_unprocessed_events + + changes = [] + changes << config.event_queue.pop until config.event_queue.empty? + + callable = config.callable? + return unless callable + + hash = config.optimize_changes(changes) + result = [hash[:modified], hash[:added], hash[:removed]] + return if result.all?(&:empty?) + + block_start = _timestamp + config.call(*result) + SassListen::Logger.debug "Callback took #{_timestamp - block_start} sec" + end + + attr_reader :config + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/queue.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/queue.rb new file mode 100644 index 0000000000..3d76367164 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/event/queue.rb @@ -0,0 +1,58 @@ +require 'thread' + +require 'forwardable' + +module SassListen + module Event + class Queue + class Config + def initialize(relative) + @relative = relative + end + + def relative? + @relative + end + end + + def initialize(config, &block) + @event_queue = ::Queue.new + @block = block + @config = config + end + + def <<(args) + type, change, dir, path, options = *args + fail "Invalid type: #{type.inspect}" unless [:dir, :file].include? type + fail "Invalid change: #{change.inspect}" unless change.is_a?(Symbol) + fail "Invalid path: #{path.inspect}" unless path.is_a?(String) + + dir = _safe_relative_from_cwd(dir) + event_queue.public_send(:<<, [type, change, dir, path, options]) + + block.call(args) if block + end + + def empty? + event_queue.empty? + end + + def pop + event_queue.pop + end + + private + + attr_reader :event_queue + attr_reader :block + attr_reader :config + + def _safe_relative_from_cwd(dir) + return dir unless config.relative? + dir.relative_path_from(Pathname.pwd) + rescue ArgumentError + dir + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/file.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/file.rb new file mode 100644 index 0000000000..9a60bd713c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/file.rb @@ -0,0 +1,80 @@ +require 'digest/md5' + +module SassListen + class File + def self.change(record, rel_path) + path = Pathname.new(record.root) + rel_path + lstat = path.lstat + + data = { mtime: lstat.mtime.to_f, mode: lstat.mode } + + record_data = record.file_data(rel_path) + + if record_data.empty? + record.update_file(rel_path, data) + return :added + end + + if data[:mode] != record_data[:mode] + record.update_file(rel_path, data) + return :modified + end + + if data[:mtime] != record_data[:mtime] + record.update_file(rel_path, data) + return :modified + end + + return if /1|true/ =~ ENV['LISTEN_GEM_DISABLE_HASHING'] + return unless self.inaccurate_mac_time?(lstat) + + # Check if change happened within 1 second (maybe it's even + # too much, e.g. 0.3-0.5 could be sufficient). + # + # With rb-fsevent, there's a (configurable) latency between + # when file was changed and when the event was triggered. + # + # If a file is saved at ???14.998, by the time the event is + # actually received by SassListen, the time could already be e.g. + # ???15.7. + # + # And since Darwin adapter uses directory scanning, the file + # mtime may be the same (e.g. file was changed at ???14.001, + # then at ???14.998, but the fstat time would be ???14.0 in + # both cases). + # + # If change happend at ???14.999997, the mtime is 14.0, so for + # an mtime=???14.0 we assume it could even be almost ???15.0 + # + # So if Time.now.to_f is ???15.999998 and stat reports mtime + # at ???14.0, then event was due to that file'd change when: + # + # ???15.999997 - ???14.999998 < 1.0s + # + # So the "2" is "1 + 1" (1s to cover rb-fsevent latency + + # 1s maximum difference between real mtime and that recorded + # in the file system) + # + return if data[:mtime].to_i + 2 <= Time.now.to_f + + md5 = Digest::MD5.file(path).digest + record.update_file(rel_path, data.merge(md5: md5)) + :modified if record_data[:md5] && md5 != record_data[:md5] + rescue SystemCallError + record.unset_path(rel_path) + :removed + rescue + SassListen::Logger.debug "lstat failed for: #{rel_path} (#{$ERROR_INFO})" + raise + end + + def self.inaccurate_mac_time?(stat) + # 'mac' means Modified/Accessed/Created + + # Since precision depends on mounted FS (e.g. you can have a FAT partiion + # mounted on Linux), check for fields with a remainder to detect this + + [stat.mtime, stat.ctime, stat.atime].map(&:usec).all?(&:zero?) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/fsm.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/fsm.rb new file mode 100644 index 0000000000..e253b76f36 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/fsm.rb @@ -0,0 +1,131 @@ +# Code copied from https://github.com/celluloid/celluloid-fsm +module SassListen + module FSM + DEFAULT_STATE = :default # Default state name unless one is explicitly set + + # Included hook to extend class methods + def self.included(klass) + klass.send :extend, ClassMethods + end + + module ClassMethods + # Obtain or set the default state + # Passing a state name sets the default state + def default_state(new_default = nil) + if new_default + @default_state = new_default.to_sym + else + defined?(@default_state) ? @default_state : DEFAULT_STATE + end + end + + # Obtain the valid states for this FSM + def states + @states ||= {} + end + + # Declare an FSM state and optionally provide a callback block to fire + # Options: + # * to: a state or array of states this state can transition to + def state(*args, &block) + if args.last.is_a? Hash + # Stringify keys :/ + options = args.pop.each_with_object({}) { |(k, v), h| h[k.to_s] = v } + else + options = {} + end + + args.each do |name| + name = name.to_sym + default_state name if options['default'] + states[name] = State.new(name, options['to'], &block) + end + end + end + + # Be kind and call super if you must redefine initialize + def initialize + @state = self.class.default_state + end + + # Obtain the current state of the FSM + attr_reader :state + + def transition(state_name) + new_state = validate_and_sanitize_new_state(state_name) + return unless new_state + transition_with_callbacks!(new_state) + end + + # Immediate state transition with no checks, or callbacks. "Dangerous!" + def transition!(state_name) + @state = state_name + end + + protected + + def validate_and_sanitize_new_state(state_name) + state_name = state_name.to_sym + + return if current_state_name == state_name + + if current_state && !current_state.valid_transition?(state_name) + valid = current_state.transitions.map(&:to_s).join(', ') + msg = "#{self.class} can't change state from '#{@state}'"\ + " to '#{state_name}', only to: #{valid}" + fail ArgumentError, msg + end + + new_state = states[state_name] + + unless new_state + return if state_name == default_state + fail ArgumentError, "invalid state for #{self.class}: #{state_name}" + end + + new_state + end + + def transition_with_callbacks!(state_name) + transition! state_name.name + state_name.call(self) + end + + def states + self.class.states + end + + def default_state + self.class.default_state + end + + def current_state + states[@state] + end + + def current_state_name + current_state && current_state.name || '' + end + + class State + attr_reader :name, :transitions + + def initialize(name, transitions = nil, &block) + @name, @block = name, block + @transitions = nil + @transitions = Array(transitions).map(&:to_sym) if transitions + end + + def call(obj) + obj.instance_eval(&@block) if @block + end + + def valid_transition?(new_state) + # All transitions are allowed unless expressly + return true unless @transitions + + @transitions.include? new_state.to_sym + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/internals/thread_pool.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/internals/thread_pool.rb new file mode 100644 index 0000000000..102b2140ef --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/internals/thread_pool.rb @@ -0,0 +1,29 @@ +module SassListen + # @private api + module Internals + module ThreadPool + def self.add(&block) + Thread.new { block.call }.tap do |th| + (@threads ||= Queue.new) << th + end + end + + def self.stop + return unless @threads ||= nil + return if @threads.empty? # return to avoid using possibly stubbed Queue + + killed = Queue.new + # You can't kill a read on a descriptor in JRuby, so let's just + # ignore running threads (listen rb-inotify waiting for disk activity + # before closing) pray threads die faster than they are created... + limit = RUBY_ENGINE == 'jruby' ? [1] : [] + + killed << @threads.pop.kill until @threads.empty? + until killed.empty? + th = killed.pop + th.join(*limit) unless th[:listen_blocking_read_thread] + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener.rb new file mode 100644 index 0000000000..6c5e2a703e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener.rb @@ -0,0 +1,132 @@ +require 'English' + +require 'sass-listen/version' + +require 'sass-listen/backend' + +require 'sass-listen/silencer' +require 'sass-listen/silencer/controller' + +require 'sass-listen/queue_optimizer' + +require 'sass-listen/fsm' + +require 'sass-listen/event/loop' +require 'sass-listen/event/queue' +require 'sass-listen/event/config' + +require 'sass-listen/listener/config' + +module SassListen + class Listener + include SassListen::FSM + + # Initializes the directories listener. + # + # @param [String] directory the directories to listen to + # @param [Hash] options the listen options (see SassListen::Listener::Options) + # + # @yield [modified, added, removed] the changed files + # @yieldparam [Array] modified the list of modified files + # @yieldparam [Array] added the list of added files + # @yieldparam [Array] removed the list of removed files + # + def initialize(*dirs, &block) + options = dirs.last.is_a?(Hash) ? dirs.pop : {} + + @config = Config.new(options) + + eq_config = Event::Queue::Config.new(@config.relative?) + queue = Event::Queue.new(eq_config) { @processor.wakeup_on_event } + + silencer = Silencer.new + rules = @config.silencer_rules + @silencer_controller = Silencer::Controller.new(silencer, rules) + + @backend = Backend.new(dirs, queue, silencer, @config) + + optimizer_config = QueueOptimizer::Config.new(@backend, silencer) + + pconfig = Event::Config.new( + self, + queue, + QueueOptimizer.new(optimizer_config), + @backend.min_delay_between_events, + &block) + + @processor = Event::Loop.new(pconfig) + + super() # FSM + end + + default_state :initializing + + state :initializing, to: [:backend_started, :stopped] + + state :backend_started, to: [:frontend_ready, :stopped] do + backend.start + end + + state :frontend_ready, to: [:processing_events, :stopped] do + processor.setup + end + + state :processing_events, to: [:paused, :stopped] do + processor.resume + end + + state :paused, to: [:processing_events, :stopped] do + processor.pause + end + + state :stopped, to: [:backend_started] do + backend.stop # should be before processor.teardown to halt events ASAP + processor.teardown + end + + # Starts processing events and starts adapters + # or resumes invoking callbacks if paused + def start + transition :backend_started if state == :initializing + transition :frontend_ready if state == :backend_started + transition :processing_events if state == :frontend_ready + transition :processing_events if state == :paused + end + + # Stops both listening for events and processing them + def stop + transition :stopped + end + + # Stops invoking callbacks (messages pile up) + def pause + transition :paused + end + + # processing means callbacks are called + def processing? + state == :processing_events + end + + def paused? + state == :paused + end + + def ignore(regexps) + @silencer_controller.append_ignores(regexps) + end + + def ignore!(regexps) + @silencer_controller.replace_with_bang_ignores(regexps) + end + + def only(regexps) + @silencer_controller.replace_with_only(regexps) + end + + private + + attr_reader :processor + attr_reader :backend + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener/config.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener/config.rb new file mode 100644 index 0000000000..a3ace4e079 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/listener/config.rb @@ -0,0 +1,45 @@ +module SassListen + class Listener + class Config + DEFAULTS = { + # Listener options + debug: false, # TODO: is this broken? + wait_for_delay: nil, # NOTE: should be provided by adapter if possible + relative: false, + + # Backend selecting options + force_polling: false, + polling_fallback_message: nil + } + + def initialize(opts) + @options = DEFAULTS.merge(opts) + @relative = @options[:relative] + @min_delay_between_events = @options[:wait_for_delay] + @silencer_rules = @options # silencer will extract what it needs + end + + def relative? + @relative + end + + def min_delay_between_events + @min_delay_between_events + end + + def silencer_rules + @silencer_rules + end + + def adapter_instance_options(klass) + valid_keys = klass.const_get('DEFAULTS').keys + Hash[@options.select { |key, _| valid_keys.include?(key) }] + end + + def adapter_select_options + valid_keys = %w(force_polling polling_fallback_message).map(&:to_sym) + Hash[@options.select { |key, _| valid_keys.include?(key) }] + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/logger.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/logger.rb new file mode 100644 index 0000000000..5abe8bdfd4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/logger.rb @@ -0,0 +1,32 @@ +module SassListen + def self.logger + @logger ||= nil + end + + def self.logger=(logger) + @logger = logger + end + + def self.setup_default_logger_if_unset + self.logger ||= ::Logger.new(STDERR).tap do |logger| + debugging = ENV['LISTEN_GEM_DEBUGGING'] + logger.level = + case debugging.to_s + when /2/ + ::Logger::DEBUG + when /true|yes|1/i + ::Logger::INFO + else + ::Logger::ERROR + end + end + end + + class Logger + [:fatal, :error, :warn, :info, :debug].each do |meth| + define_singleton_method(meth) do |*args, &block| + SassListen.logger.public_send(meth, *args, &block) if SassListen.logger + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/options.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/options.rb new file mode 100644 index 0000000000..82a332688e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/options.rb @@ -0,0 +1,23 @@ +module SassListen + class Options + def initialize(opts, defaults) + @options = {} + given_options = opts.dup + defaults.keys.each do |key| + @options[key] = given_options.delete(key) || defaults[key] + end + + return if given_options.empty? + + msg = "Unknown options: #{given_options.inspect}" + SassListen::Logger.warn msg + fail msg + end + + def method_missing(name, *_) + return @options[name] if @options.key?(name) + msg = "Bad option: #{name.inspect} (valid:#{@options.keys.inspect})" + fail NameError, msg + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/queue_optimizer.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/queue_optimizer.rb new file mode 100644 index 0000000000..650c4430af --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/queue_optimizer.rb @@ -0,0 +1,132 @@ +module SassListen + class QueueOptimizer + class Config + def initialize(adapter_class, silencer) + @adapter_class = adapter_class + @silencer = silencer + end + + def exist?(path) + Pathname(path).exist? + end + + def silenced?(path, type) + @silencer.silenced?(path, type) + end + + def debug(*args, &block) + SassListen.logger.debug(*args, &block) + end + end + + def smoosh_changes(changes) + # TODO: adapter could be nil at this point (shutdown) + cookies = changes.group_by do |_, _, _, _, options| + (options || {})[:cookie] + end + _squash_changes(_reinterpret_related_changes(cookies)) + end + + def initialize(config) + @config = config + end + + private + + attr_reader :config + + # groups changes into the expected structure expected by + # clients + def _squash_changes(changes) + # We combine here for backward compatibility + # Newer clients should receive dir and path separately + changes = changes.map { |change, dir, path| [change, dir + path] } + + actions = changes.group_by(&:last).map do |path, action_list| + [_logical_action_for(path, action_list.map(&:first)), path.to_s] + end + + config.debug("listen: raw changes: #{actions.inspect}") + + { modified: [], added: [], removed: [] }.tap do |squashed| + actions.each do |type, path| + squashed[type] << path unless type.nil? + end + config.debug("listen: final changes: #{squashed.inspect}") + end + end + + def _logical_action_for(path, actions) + actions << :added if actions.delete(:moved_to) + actions << :removed if actions.delete(:moved_from) + + modified = actions.detect { |x| x == :modified } + _calculate_add_remove_difference(actions, path, modified) + end + + def _calculate_add_remove_difference(actions, path, default_if_exists) + added = actions.count { |x| x == :added } + removed = actions.count { |x| x == :removed } + diff = added - removed + + # TODO: avoid checking if path exists and instead assume the events are + # in order (if last is :removed, it doesn't exist, etc.) + if config.exist?(path) + if diff > 0 + :added + elsif diff.zero? && added > 0 + :modified + else + default_if_exists + end + else + diff < 0 ? :removed : nil + end + end + + # remove extraneous rb-inotify events, keeping them only if it's a possible + # editor rename() call (e.g. Kate and Sublime) + def _reinterpret_related_changes(cookies) + table = { moved_to: :added, moved_from: :removed } + cookies.map do |_, changes| + data = _detect_possible_editor_save(changes) + if data + to_dir, to_file = data + [[:modified, to_dir, to_file]] + else + not_silenced = changes.reject do |type, _, _, path, _| + config.silenced?(Pathname(path), type) + end + not_silenced.map do |_, change, dir, path, _| + [table.fetch(change, change), dir, path] + end + end + end.flatten(1) + end + + def _detect_possible_editor_save(changes) + return unless changes.size == 2 + + from_type = from_change = from = nil + to_type = to_change = to_dir = to = nil + + changes.each do |data| + case data[1] + when :moved_from + from_type, from_change, _, from, _ = data + when :moved_to + to_type, to_change, to_dir, to, _ = data + else + return nil + end + end + + return unless from && to + + # Expect an ignored moved_from and non-ignored moved_to + # to qualify as an "editor modify" + return unless config.silenced?(Pathname(from), from_type) + config.silenced?(Pathname(to), to_type) ? nil : [to_dir, to] + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record.rb new file mode 100644 index 0000000000..e887511425 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record.rb @@ -0,0 +1,120 @@ +require 'thread' +require 'sass-listen/record/entry' +require 'sass-listen/record/symlink_detector' + +module SassListen + class Record + # TODO: one Record object per watched directory? + # TODO: deprecate + + attr_reader :root + def initialize(directory) + @tree = _auto_hash + @root = directory.to_s + end + + def add_dir(rel_path) + return if [nil, '', '.'].include? rel_path + @tree[rel_path] ||= {} + end + + def update_file(rel_path, data) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + _fast_update_file(dirname, basename, data) + end + + def unset_path(rel_path) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + _fast_unset_path(dirname, basename) + end + + def file_data(rel_path) + dirname, basename = Pathname(rel_path).split.map(&:to_s) + if [nil, '', '.'].include? dirname + tree[basename] ||= {} + tree[basename].dup + else + tree[dirname] ||= {} + tree[dirname][basename] ||= {} + tree[dirname][basename].dup + end + end + + def dir_entries(rel_path) + subtree = + if [nil, '', '.'].include? rel_path.to_s + tree + else + tree[rel_path.to_s] ||= _auto_hash + tree[rel_path.to_s] + end + + result = {} + subtree.each do |key, values| + # only get data for file entries + result[key] = values.key?(:mtime) ? values : {} + end + result + end + + def build + @tree = _auto_hash + # TODO: test with a file name given + # TODO: test other permissions + # TODO: test with mixed encoding + symlink_detector = SymlinkDetector.new + remaining = ::Queue.new + remaining << Entry.new(root, nil, nil) + _fast_build_dir(remaining, symlink_detector) until remaining.empty? + end + + private + + def _auto_hash + Hash.new { |h, k| h[k] = Hash.new } + end + + def tree + @tree + end + + def _fast_update_file(dirname, basename, data) + if [nil, '', '.'].include? dirname + tree[basename] = (tree[basename] || {}).merge(data) + else + tree[dirname] ||= {} + tree[dirname][basename] = (tree[dirname][basename] || {}).merge(data) + end + end + + def _fast_unset_path(dirname, basename) + # this may need to be reworked to properly remove + # entries from a tree, without adding non-existing dirs to the record + if [nil, '', '.'].include? dirname + return unless tree.key?(basename) + tree.delete(basename) + else + return unless tree.key?(dirname) + tree[dirname].delete(basename) + end + end + + def _fast_build_dir(remaining, symlink_detector) + entry = remaining.pop + children = entry.children # NOTE: children() implicitly tests if dir + symlink_detector.verify_unwatched!(entry) + children.each { |child| remaining << child } + add_dir(entry.record_dir_key) + rescue Errno::ENOTDIR + _fast_try_file(entry) + rescue SystemCallError, SymlinkDetector::Error + _fast_unset_path(entry.relative, entry.name) + end + + def _fast_try_file(entry) + _fast_update_file(entry.relative, entry.name, entry.meta) + rescue SystemCallError + _fast_unset_path(entry.relative, entry.name) + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/entry.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/entry.rb new file mode 100644 index 0000000000..18a1c4168f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/entry.rb @@ -0,0 +1,62 @@ +module SassListen + # @private api + class Record + # Represents a directory entry (dir or file) + class Entry + # file: "/home/me/watched_dir", "app/models", "foo.rb" + # dir, "/home/me/watched_dir", "." + def initialize(root, relative, name = nil) + @root, @relative, @name = root, relative, name + end + + attr_reader :root, :relative, :name + + def children + child_relative = _join + (_entries(sys_path) - %w(. ..)).map do |name| + Entry.new(@root, child_relative, name) + end + end + + def meta + lstat = ::File.lstat(sys_path) + { mtime: lstat.mtime.to_f, mode: lstat.mode } + end + + # record hash is e.g. + # if @record["/home/me/watched_dir"]["project/app/models"]["foo.rb"] + # if @record["/home/me/watched_dir"]["project/app"]["models"] + # record_dir_key is "project/app/models" + def record_dir_key + ::File.join(*[@relative, @name].compact) + end + + def sys_path + # Use full path in case someone uses chdir + ::File.join(*[@root, @relative, @name].compact) + end + + def real_path + @real_path ||= ::File.realpath(sys_path) + end + + private + + def _join + args = [@relative, @name].compact + args.empty? ? nil : ::File.join(*args) + end + + def _entries(dir) + return Dir.entries(dir) unless RUBY_ENGINE == 'jruby' + + # JRuby inconsistency workaround, see: + # https://github.com/jruby/jruby/issues/3840 + exists = ::File.exist?(dir) + directory = ::File.directory?(dir) + return Dir.entries(dir) unless (exists && !directory) + raise Errno::ENOTDIR, dir + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/symlink_detector.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/symlink_detector.rb new file mode 100644 index 0000000000..0aced230ff --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/record/symlink_detector.rb @@ -0,0 +1,39 @@ +require 'set' + +module SassListen + # @private api + class Record + class SymlinkDetector + WIKI = 'https://github.com/guard/listen/wiki/Duplicate-directory-errors' + + SYMLINK_LOOP_ERROR = <<-EOS + ** ERROR: directory is already being watched! ** + + Directory: %s + + is already being watched through: %s + + MORE INFO: #{WIKI} + EOS + + class Error < RuntimeError + end + + def initialize + @real_dirs = Set.new + end + + def verify_unwatched!(entry) + real_path = entry.real_path + @real_dirs.add?(real_path) || _fail(entry.sys_path, real_path) + end + + private + + def _fail(symlinked, real_path) + STDERR.puts format(SYMLINK_LOOP_ERROR, symlinked, real_path) + fail Error, 'Failed due to looped symlinks' + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer.rb new file mode 100644 index 0000000000..7e735faa9f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer.rb @@ -0,0 +1,97 @@ +module SassListen + class Silencer + # The default list of directories that get ignored. + DEFAULT_IGNORED_DIRECTORIES = %r{^(?: + \.git + | \.svn + | \.hg + | \.rbx + | \.bundle + | bundle + | vendor/bundle + | log + | tmp + |vendor/ruby + )(/|$)}x + + # The default list of files that get ignored. + DEFAULT_IGNORED_EXTENSIONS = /(?: + # Kate's tmp\/swp files + \..*\d+\.new + | \.kate-swp + + # Gedit tmp files + | \.goutputstream-.{6} + + # Intellij files + | ___jb_bak___ + | ___jb_old___ + + # Vim swap files and write test + | \.sw[px] + | \.swpx + | ^4913 + + # Sed temporary files - but without actual words, like 'sedatives' + | (?:^ + sed + + (?: + [a-zA-Z0-9]{0}[A-Z]{1}[a-zA-Z0-9]{5} | + [a-zA-Z0-9]{1}[A-Z]{1}[a-zA-Z0-9]{4} | + [a-zA-Z0-9]{2}[A-Z]{1}[a-zA-Z0-9]{3} | + [a-zA-Z0-9]{3}[A-Z]{1}[a-zA-Z0-9]{2} | + [a-zA-Z0-9]{4}[A-Z]{1}[a-zA-Z0-9]{1} | + [a-zA-Z0-9]{5}[A-Z]{1}[a-zA-Z0-9]{0} + ) + ) + + # other files + | \.DS_Store + | \.tmp + | ~ + )$/x + + attr_accessor :only_patterns, :ignore_patterns + + def initialize + configure({}) + end + + def configure(options) + @only_patterns = options[:only] ? Array(options[:only]) : nil + @ignore_patterns = _init_ignores(options[:ignore], options[:ignore!]) + end + + # Note: relative_path is temporarily expected to be a relative Pathname to + # make refactoring easier (ideally, it would take a string) + + # TODO: switch type and path places - and verify + def silenced?(relative_path, type) + path = relative_path.to_s + + if only_patterns && type == :file + return true unless only_patterns.any? { |pattern| path =~ pattern } + end + + ignore_patterns.any? { |pattern| path =~ pattern } + end + + private + + attr_reader :options + + def _init_ignores(ignores, overrides) + patterns = [] + unless overrides + patterns << DEFAULT_IGNORED_DIRECTORIES + patterns << DEFAULT_IGNORED_EXTENSIONS + end + + patterns << ignores + patterns << overrides + + patterns.compact.flatten + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer/controller.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer/controller.rb new file mode 100644 index 0000000000..d262ec8358 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/silencer/controller.rb @@ -0,0 +1,48 @@ +module SassListen + class Silencer + class Controller + def initialize(silencer, default_options) + @silencer = silencer + + opts = default_options + + @prev_silencer_options = {} + rules = [:only, :ignore, :ignore!].map do |option| + [option, opts[option]] if opts.key? option + end + + _reconfigure_silencer(Hash[rules.compact]) + end + + def append_ignores(*regexps) + prev_ignores = Array(@prev_silencer_options[:ignore]) + _reconfigure_silencer(ignore: [prev_ignores + regexps]) + end + + def replace_with_bang_ignores(regexps) + _reconfigure_silencer(ignore!: regexps) + end + + def replace_with_only(regexps) + _reconfigure_silencer(only: regexps) + end + + private + + def _reconfigure_silencer(extra_options) + opts = extra_options.dup + opts = opts.map do |key, value| + [key, Array(value).flatten.compact] + end + opts = Hash[opts] + + if opts.key?(:ignore) && opts[:ignore].empty? + opts.delete(:ignore) + end + + @prev_silencer_options = opts + @silencer.configure(@prev_silencer_options.dup.freeze) + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/version.rb b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/version.rb new file mode 100644 index 0000000000..05fa5d03a2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/sass-listen-4.0.0/lib/sass-listen/version.rb @@ -0,0 +1,3 @@ +module SassListen + VERSION = '4.0.0' +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/addressable-2.6.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/addressable-2.6.0.gemspec new file mode 100644 index 0000000000..423bd4f998 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/addressable-2.6.0.gemspec @@ -0,0 +1,39 @@ +# -*- encoding: utf-8 -*- +# stub: addressable 2.6.0 ruby lib + +Gem::Specification.new do |s| + s.name = "addressable".freeze + s.version = "2.6.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Bob Aman".freeze] + s.date = "2019-01-18" + s.description = "Addressable is a replacement for the URI implementation that is part of\nRuby's standard library. It more closely conforms to the relevant RFCs and\nadds support for IRIs and URI templates.\n".freeze + s.email = "bob@sporkmonger.com".freeze + s.extra_rdoc_files = ["README.md".freeze] + s.files = ["README.md".freeze] + s.homepage = "https://github.com/sporkmonger/addressable".freeze + s.licenses = ["Apache-2.0".freeze] + s.rdoc_options = ["--main".freeze, "README.md".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "URI Implementation".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_development_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) + else + s.add_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) + end + else + s.add_dependency(%q.freeze, ["< 4.0", ">= 2.0.2"]) + s.add_dependency(%q.freeze, ["< 3.0", ">= 1.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/colorator-1.1.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/colorator-1.1.0.gemspec new file mode 100644 index 0000000000..c72b492507 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/colorator-1.1.0.gemspec @@ -0,0 +1,34 @@ +# -*- encoding: utf-8 -*- +# stub: colorator 1.1.0 ruby lib + +Gem::Specification.new do |s| + s.name = "colorator".freeze + s.version = "1.1.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Parker Moore".freeze, "Brandon Mathis".freeze] + s.date = "2016-06-29" + s.email = ["parkrmoore@gmail.com".freeze, "brandon@imathis.com".freeze] + s.extra_rdoc_files = ["README.markdown".freeze, "LICENSE".freeze] + s.files = ["LICENSE".freeze, "README.markdown".freeze] + s.homepage = "https://github.com/octopress/colorator".freeze + s.licenses = ["MIT".freeze] + s.rdoc_options = ["--charset=UTF-8".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Colorize your text in the terminal.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 3.1"]) + else + s.add_dependency(%q.freeze, ["~> 3.1"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.1"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/concurrent-ruby-1.1.4.gemspec b/vendor/bundle/ruby/2.5.0/specifications/concurrent-ruby-1.1.4.gemspec new file mode 100644 index 0000000000..960f020c05 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/concurrent-ruby-1.1.4.gemspec @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- +# stub: concurrent-ruby 1.1.4 ruby lib + +Gem::Specification.new do |s| + s.name = "concurrent-ruby".freeze + s.version = "1.1.4" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Jerry D'Antonio".freeze, "Petr Chalupa".freeze, "The Ruby Concurrency Team".freeze] + s.date = "2018-12-15" + s.description = "Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.\nInspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency patterns.\n".freeze + s.email = "concurrent-ruby@googlegroups.com".freeze + s.extra_rdoc_files = ["README.md".freeze, "LICENSE.md".freeze, "CHANGELOG.md".freeze] + s.files = ["CHANGELOG.md".freeze, "LICENSE.md".freeze, "README.md".freeze] + s.homepage = "http://www.concurrent-ruby.com".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell, F#, C#, Java, and classic concurrency patterns.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/em-websocket-0.5.1.gemspec b/vendor/bundle/ruby/2.5.0/specifications/em-websocket-0.5.1.gemspec new file mode 100644 index 0000000000..877eb9afcf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/em-websocket-0.5.1.gemspec @@ -0,0 +1,35 @@ +# -*- encoding: utf-8 -*- +# stub: em-websocket 0.5.1 ruby lib + +Gem::Specification.new do |s| + s.name = "em-websocket".freeze + s.version = "0.5.1" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Ilya Grigorik".freeze, "Martyn Loughran".freeze] + s.date = "2014-04-23" + s.description = "EventMachine based WebSocket server".freeze + s.email = ["ilya@igvita.com".freeze, "me@mloughran.com".freeze] + s.homepage = "http://github.com/igrigorik/em-websocket".freeze + s.rubyforge_project = "em-websocket".freeze + s.rubygems_version = "2.7.7".freeze + s.summary = "EventMachine based WebSocket server".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, [">= 0.12.9"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.6.0"]) + else + s.add_dependency(%q.freeze, [">= 0.12.9"]) + s.add_dependency(%q.freeze, ["~> 0.6.0"]) + end + else + s.add_dependency(%q.freeze, [">= 0.12.9"]) + s.add_dependency(%q.freeze, ["~> 0.6.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/eventmachine-1.2.7.gemspec b/vendor/bundle/ruby/2.5.0/specifications/eventmachine-1.2.7.gemspec new file mode 100644 index 0000000000000000000000000000000000000000..0750de2078dffb2f9efe4b6ad012f35cbadbef5e GIT binary patch literal 3599 zcmeHJVQY6e;QinM%1FhDTpdGUm)w(|^(Ef&Xs*C=f!qIDt> z4*Wy^CFo+YfiziswYjxjytR>%OJ6U(qkp?gVeB$VQKN`aH%@nU2ACZmPjiftWfBRS zDCtYQfmp#8^JNFX_)=sDC(voe?)XcM_$NApYt)AP*v6&Q*>RsWel8M?@tiYUVP@uE z4PDf*G{}e&$9&OweFFOx@-8Gx3a-)QO2%`meu3i$5l@-{=ee+JL)rY%p|VtXADxLP z>{{va@SPSiN(}T9A(vW3k*I9(Kw&mu6%+;`kq}b3eYlgsjTSitPt!}8NQ+uToT!1D#I9jD z0i&WTv}TV@)D7hZxmGJJGQ+quNfBkQnL5$4Yb2P8lN%XO%PL#;v?@}m%M&6h;{rLg z*g+9rLRlz^ThlYBc``uA7@{=cLisSGxTUdx(g3J9ySXNn5R#XOw7@JE;2^%-g zRFgF_I}yh;MkRi(G?kwtQJ&XHj0AP2;vz+|78Yt=#GHBFEqzUndT^%zhAUv`hG>z} zRV93(` zW8<>BG^dTckQ#+jJWW;xh@v*OP_m9#RZizeuzy|Gz#Kr6sj z-^;s36ONKMOL<>;k9pN>Ha;C!&Sh)=@8^G| zpW7?_Z}0kAWth|M;rDoLZGPPCvJ#;sT}!CuE^>=2P3WaF)m|X$YQ`w1!DQqe`n5nQ zr_QYs<=*{rnRuQ}Y>ExP=7w&3_B`5#_1Yx-wl(D4HatkpbTR90RaE2Pp4F!&$;xn> z@O?4XAsOkvtjt^;Op(z$wBgdRoai<=u-IgMQad=0MAEaDrX=?kn}*QaVz-F7HU}1t z_hn!CoNwh%jZJTtBy(1%?FJ|CBjY(lr#F8ub*j^v<%b}g4#(%aK*IB$#dFrO`_Fe- z2b6(06lsZhOw~n+a literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/specifications/ffi-1.10.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/ffi-1.10.0.gemspec new file mode 100644 index 0000000000..8d5394a696 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/ffi-1.10.0.gemspec @@ -0,0 +1,49 @@ +# -*- encoding: utf-8 -*- +# stub: ffi 1.10.0 ruby lib +# stub: ext/ffi_c/extconf.rb + +Gem::Specification.new do |s| + s.name = "ffi".freeze + s.version = "1.10.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Wayne Meissner".freeze] + s.date = "2019-01-06" + s.description = "Ruby FFI library".freeze + s.email = "wmeissner@gmail.com".freeze + s.extensions = ["ext/ffi_c/extconf.rb".freeze] + s.files = ["ext/ffi_c/extconf.rb".freeze] + s.homepage = "http://wiki.github.com/ffi/ffi".freeze + s.licenses = ["BSD-3-Clause".freeze] + s.rdoc_options = ["--exclude=ext/ffi_c/.*\\.o$".freeze, "--exclude=ffi_c\\.(bundle|so)$".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 1.9".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "Ruby FFI".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 10.1"]) + s.add_development_dependency(%q.freeze, ["~> 1.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.6.2"]) + s.add_development_dependency(%q.freeze, ["~> 2.14.1"]) + s.add_development_dependency(%q.freeze, ["~> 0.2.4"]) + else + s.add_dependency(%q.freeze, ["~> 10.1"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 0.6.2"]) + s.add_dependency(%q.freeze, ["~> 2.14.1"]) + s.add_dependency(%q.freeze, ["~> 0.2.4"]) + end + else + s.add_dependency(%q.freeze, ["~> 10.1"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 0.6.2"]) + s.add_dependency(%q.freeze, ["~> 2.14.1"]) + s.add_dependency(%q.freeze, ["~> 0.2.4"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/forwardable-extended-2.6.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/forwardable-extended-2.6.0.gemspec new file mode 100644 index 0000000000..7e069d310d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/forwardable-extended-2.6.0.gemspec @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- +# stub: forwardable-extended 2.6.0 ruby lib + +Gem::Specification.new do |s| + s.name = "forwardable-extended".freeze + s.version = "2.6.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Jordon Bedwell".freeze] + s.date = "2016-04-06" + s.description = "Forwardable with hash, and instance variable extensions.".freeze + s.email = ["jordon@envygeeks.io".freeze] + s.homepage = "http://github.com/envygeeks/forwardable-extended".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Forwardable with hash, and instance variable extensions.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/http_parser.rb-0.6.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/http_parser.rb-0.6.0.gemspec new file mode 100644 index 0000000000..a0316a40f9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/http_parser.rb-0.6.0.gemspec @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +# stub: http_parser.rb 0.6.0 ruby lib +# stub: ext/ruby_http_parser/extconf.rb + +Gem::Specification.new do |s| + s.name = "http_parser.rb".freeze + s.version = "0.6.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Marc-Andre Cournoyer".freeze, "Aman Gupta".freeze] + s.date = "2013-12-11" + s.description = "Ruby bindings to http://github.com/ry/http-parser and http://github.com/a2800276/http-parser.java".freeze + s.email = ["macournoyer@gmail.com".freeze, "aman@tmm1.net".freeze] + s.extensions = ["ext/ruby_http_parser/extconf.rb".freeze] + s.files = ["ext/ruby_http_parser/extconf.rb".freeze] + s.homepage = "http://github.com/tmm1/http_parser.rb".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Simple callback-based HTTP request/response parser".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, [">= 0.7.9"]) + s.add_development_dependency(%q.freeze, [">= 2.0.1"]) + s.add_development_dependency(%q.freeze, [">= 1.4.6"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0.8.1"]) + else + s.add_dependency(%q.freeze, [">= 0.7.9"]) + s.add_dependency(%q.freeze, [">= 2.0.1"]) + s.add_dependency(%q.freeze, [">= 1.4.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0.8.1"]) + end + else + s.add_dependency(%q.freeze, [">= 0.7.9"]) + s.add_dependency(%q.freeze, [">= 2.0.1"]) + s.add_dependency(%q.freeze, [">= 1.4.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0.8.1"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/i18n-0.9.5.gemspec b/vendor/bundle/ruby/2.5.0/specifications/i18n-0.9.5.gemspec new file mode 100644 index 0000000000..46bc414019 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/i18n-0.9.5.gemspec @@ -0,0 +1,34 @@ +# -*- encoding: utf-8 -*- +# stub: i18n 0.9.5 ruby lib + +Gem::Specification.new do |s| + s.name = "i18n".freeze + s.version = "0.9.5" + + s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Sven Fuchs".freeze, "Joshua Harvey".freeze, "Matt Aimonetti".freeze, "Stephan Soller".freeze, "Saimon Moore".freeze, "Ryan Bigg".freeze] + s.date = "2018-02-13" + s.description = "New wave Internationalization support for Ruby.".freeze + s.email = "rails-i18n@googlegroups.com".freeze + s.homepage = "http://github.com/svenfuchs/i18n".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze) + s.rubyforge_project = "[none]".freeze + s.rubygems_version = "2.7.7".freeze + s.summary = "New wave Internationalization support for Ruby".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-3.8.5.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-3.8.5.gemspec new file mode 100644 index 0000000000..aaa06bf284 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-3.8.5.gemspec @@ -0,0 +1,71 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll 3.8.5 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll".freeze + s.version = "3.8.5" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Tom Preston-Werner".freeze] + s.bindir = "exe".freeze + s.date = "2018-11-04" + s.description = "Jekyll is a simple, blog aware, static site generator.".freeze + s.email = "tom@mojombo.com".freeze + s.executables = ["jekyll".freeze] + s.extra_rdoc_files = ["README.markdown".freeze, "LICENSE".freeze] + s.files = ["LICENSE".freeze, "README.markdown".freeze, "exe/jekyll".freeze] + s.homepage = "https://github.com/jekyll/jekyll".freeze + s.licenses = ["MIT".freeze] + s.rdoc_options = ["--charset=UTF-8".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.1.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "A simple, blog aware, static site generator.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 2 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 2.4"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.5"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.7"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + s.add_runtime_dependency(%q.freeze, ["~> 2.0"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.14"]) + s.add_runtime_dependency(%q.freeze, ["~> 4.0"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.3.3"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.9"]) + s.add_runtime_dependency(%q.freeze, ["< 4", ">= 1.7"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + else + s.add_dependency(%q.freeze, ["~> 2.4"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 0.5"]) + s.add_dependency(%q.freeze, ["~> 0.7"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 1.14"]) + s.add_dependency(%q.freeze, ["~> 4.0"]) + s.add_dependency(%q.freeze, ["~> 0.3.3"]) + s.add_dependency(%q.freeze, ["~> 0.9"]) + s.add_dependency(%q.freeze, ["< 4", ">= 1.7"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 2.4"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 0.5"]) + s.add_dependency(%q.freeze, ["~> 0.7"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 1.14"]) + s.add_dependency(%q.freeze, ["~> 4.0"]) + s.add_dependency(%q.freeze, ["~> 0.3.3"]) + s.add_dependency(%q.freeze, ["~> 0.9"]) + s.add_dependency(%q.freeze, ["< 4", ">= 1.7"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-archives-2.1.1.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-archives-2.1.1.gemspec new file mode 100644 index 0000000000..25e62cb3bb --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-archives-2.1.1.gemspec @@ -0,0 +1,43 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-archives 2.1.1 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-archives".freeze + s.version = "2.1.1" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Alfred Xing".freeze] + s.date = "2016-10-18" + s.description = "Automatically generate post archives by dates, tags, and categories.".freeze + s.homepage = "https://github.com/jekyll/jekyll-archives".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Post archives for Jekyll.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, [">= 2.4"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, [">= 2.4"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, [">= 2.4"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-feed-0.11.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-feed-0.11.0.gemspec new file mode 100644 index 0000000000..bfb9feb806 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-feed-0.11.0.gemspec @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-feed 0.11.0 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-feed".freeze + s.version = "0.11.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Ben Balter".freeze] + s.date = "2018-09-09" + s.email = ["ben.balter@github.com".freeze] + s.homepage = "https://github.com/jekyll/jekyll-feed".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "A Jekyll plugin to generate an Atom feed of your Jekyll posts".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 3.3"]) + s.add_development_dependency(%q.freeze, ["~> 1.15"]) + s.add_development_dependency(%q.freeze, ["~> 1.6"]) + s.add_development_dependency(%q.freeze, ["~> 12.0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.57.2"]) + s.add_development_dependency(%q.freeze, ["< 2.0", ">= 0.7"]) + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 1.6"]) + s.add_dependency(%q.freeze, ["~> 12.0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 0.57.2"]) + s.add_dependency(%q.freeze, ["< 2.0", ">= 0.7"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 1.6"]) + s.add_dependency(%q.freeze, ["~> 12.0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 0.57.2"]) + s.add_dependency(%q.freeze, ["< 2.0", ">= 0.7"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-paginate-1.1.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-paginate-1.1.0.gemspec new file mode 100644 index 0000000000..98d5a03bac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-paginate-1.1.0.gemspec @@ -0,0 +1,40 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-paginate 1.1.0 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-paginate".freeze + s.version = "1.1.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Parker Moore".freeze] + s.date = "2014-10-14" + s.email = ["parkrmoore@gmail.com".freeze] + s.homepage = "https://github.com/jekyll/jekyll-paginate".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Built-in Pagination Generator for Jekyll".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 2.0"]) + s.add_development_dependency(%q.freeze, ["~> 1.5"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) + else + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-sass-converter-1.5.2.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-sass-converter-1.5.2.gemspec new file mode 100644 index 0000000000..f47339e64d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-sass-converter-1.5.2.gemspec @@ -0,0 +1,46 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-sass-converter 1.5.2 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-sass-converter".freeze + s.version = "1.5.2" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Parker Moore".freeze] + s.date = "2018-02-03" + s.email = ["parkrmoore@gmail.com".freeze] + s.homepage = "https://github.com/jekyll/jekyll-sass-converter".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "A basic Sass converter for Jekyll.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 3.4"]) + s.add_development_dependency(%q.freeze, ["~> 1.5"]) + s.add_development_dependency(%q.freeze, [">= 2.0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["= 0.51"]) + else + s.add_dependency(%q.freeze, ["~> 3.4"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, [">= 2.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["= 0.51"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.4"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, [">= 2.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["= 0.51"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-seo-tag-2.5.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-seo-tag-2.5.0.gemspec new file mode 100644 index 0000000000..b204bcd543 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-seo-tag-2.5.0.gemspec @@ -0,0 +1,46 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-seo-tag 2.5.0 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-seo-tag".freeze + s.version = "2.5.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "allowed_push_host" => "https://rubygems.org" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["Ben Balter".freeze] + s.bindir = "exe".freeze + s.date = "2018-05-21" + s.email = ["ben.balter@github.com".freeze] + s.homepage = "https://github.com/benbalter/jekyll-seo-tag".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 3.3"]) + s.add_development_dependency(%q.freeze, ["~> 1.15"]) + s.add_development_dependency(%q.freeze, ["~> 3.7"]) + s.add_development_dependency(%q.freeze, ["~> 3.5"]) + s.add_development_dependency(%q.freeze, ["~> 0.56.0"]) + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 3.7"]) + s.add_dependency(%q.freeze, ["~> 3.5"]) + s.add_dependency(%q.freeze, ["~> 0.56.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 3.7"]) + s.add_dependency(%q.freeze, ["~> 3.5"]) + s.add_dependency(%q.freeze, ["~> 0.56.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-sitemap-1.2.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-sitemap-1.2.0.gemspec new file mode 100644 index 0000000000..d739f79adf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-sitemap-1.2.0.gemspec @@ -0,0 +1,46 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-sitemap 1.2.0 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-sitemap".freeze + s.version = "1.2.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["GitHub, Inc.".freeze] + s.date = "2018-01-25" + s.email = "support@github.com".freeze + s.homepage = "https://github.com/jekyll/jekyll-sitemap".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Automatically generate a sitemap.xml for your Jekyll site.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 3.3"]) + s.add_development_dependency(%q.freeze, ["~> 1.16"]) + s.add_development_dependency(%q.freeze, ["= 0.3.4"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) + s.add_development_dependency(%q.freeze, ["= 0.51"]) + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.16"]) + s.add_dependency(%q.freeze, ["= 0.3.4"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["= 0.51"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.16"]) + s.add_dependency(%q.freeze, ["= 0.3.4"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["= 0.51"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/jekyll-watch-2.1.2.gemspec b/vendor/bundle/ruby/2.5.0/specifications/jekyll-watch-2.1.2.gemspec new file mode 100644 index 0000000000..35b4fa27d1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/jekyll-watch-2.1.2.gemspec @@ -0,0 +1,47 @@ +# -*- encoding: utf-8 -*- +# stub: jekyll-watch 2.1.2 ruby lib + +Gem::Specification.new do |s| + s.name = "jekyll-watch".freeze + s.version = "2.1.2" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Parker Moore".freeze] + s.date = "2018-10-17" + s.email = ["parkrmoore@gmail.com".freeze] + s.homepage = "https://github.com/jekyll/jekyll-watch".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "Rebuild your Jekyll site when a file changes with the `--watch` switch.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 3.0"]) + s.add_development_dependency(%q.freeze, ["~> 1.15"]) + s.add_development_dependency(%q.freeze, ["~> 3.6"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.2"]) + else + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 0.2"]) + end + else + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 1.15"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + s.add_dependency(%q.freeze, ["~> 0.2"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/kramdown-1.17.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/kramdown-1.17.0.gemspec new file mode 100644 index 0000000000..12de780e92 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/kramdown-1.17.0.gemspec @@ -0,0 +1,66 @@ +# -*- encoding: utf-8 -*- +# stub: kramdown 1.17.0 ruby lib + +Gem::Specification.new do |s| + s.name = "kramdown".freeze + s.version = "1.17.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Thomas Leitner".freeze] + s.date = "2018-05-31" + s.description = "kramdown is yet-another-markdown-parser but fast, pure Ruby,\nusing a strict syntax definition and supporting several common extensions.\n".freeze + s.email = "t_leitner@gmx.at".freeze + s.executables = ["kramdown".freeze] + s.files = ["bin/kramdown".freeze] + s.homepage = "http://kramdown.gettalong.org".freeze + s.licenses = ["MIT".freeze] + s.rdoc_options = ["--main".freeze, "lib/kramdown/document.rb".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "kramdown is a fast, pure-Ruby Markdown-superset converter.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 5.0"]) + s.add_development_dependency(%q.freeze, ["~> 1.0.0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 1.5.1"]) + s.add_development_dependency(%q.freeze, ["~> 2.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.2.2"]) + s.add_development_dependency(%q.freeze, ["~> 1.0"]) + s.add_development_dependency(%q.freeze, ["~> 1.5"]) + s.add_development_dependency(%q.freeze, ["~> 2.7"]) + s.add_development_dependency(%q.freeze, [">= 0.9.37"]) + s.add_development_dependency(%q.freeze, ["~> 0.4.3"]) + else + s.add_dependency(%q.freeze, ["~> 5.0"]) + s.add_dependency(%q.freeze, ["~> 1.0.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 1.5.1"]) + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 0.2.2"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, ["~> 2.7"]) + s.add_dependency(%q.freeze, [">= 0.9.37"]) + s.add_dependency(%q.freeze, ["~> 0.4.3"]) + end + else + s.add_dependency(%q.freeze, ["~> 5.0"]) + s.add_dependency(%q.freeze, ["~> 1.0.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 1.5.1"]) + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 0.2.2"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 1.5"]) + s.add_dependency(%q.freeze, ["~> 2.7"]) + s.add_dependency(%q.freeze, [">= 0.9.37"]) + s.add_dependency(%q.freeze, ["~> 0.4.3"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/liquid-4.0.1.gemspec b/vendor/bundle/ruby/2.5.0/specifications/liquid-4.0.1.gemspec new file mode 100644 index 0000000000..1e9d280ad4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/liquid-4.0.1.gemspec @@ -0,0 +1,37 @@ +# -*- encoding: utf-8 -*- +# stub: liquid 4.0.1 ruby lib + +Gem::Specification.new do |s| + s.name = "liquid".freeze + s.version = "4.0.1" + + s.required_rubygems_version = Gem::Requirement.new(">= 1.3.7".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Tobias L\u00FCtke".freeze] + s.date = "2018-10-09" + s.email = ["tobi@leetsoft.com".freeze] + s.extra_rdoc_files = ["History.md".freeze, "README.md".freeze] + s.files = ["History.md".freeze, "README.md".freeze] + s.homepage = "http://www.liquidmarkup.org".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.1.0".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "A secure, non-evaling end user template engine with aesthetic markup.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 11.3"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, ["~> 11.3"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, ["~> 11.3"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/listen-3.1.5.gemspec b/vendor/bundle/ruby/2.5.0/specifications/listen-3.1.5.gemspec new file mode 100644 index 0000000000..f10950d7c9 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/listen-3.1.5.gemspec @@ -0,0 +1,44 @@ +# -*- encoding: utf-8 -*- +# stub: listen 3.1.5 ruby lib + +Gem::Specification.new do |s| + s.name = "listen".freeze + s.version = "3.1.5" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Thibaud Guillaume-Gentil".freeze] + s.date = "2016-05-18" + s.description = "The Listen gem listens to file modifications and notifies you about the changes. Works everywhere!".freeze + s.email = "thibaud@thibaud.gg".freeze + s.executables = ["listen".freeze] + s.files = ["bin/listen".freeze] + s.homepage = "https://github.com/guard/listen".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new([">= 2.2.3".freeze, "~> 2.2".freeze]) + s.rubygems_version = "2.7.7".freeze + s.summary = "Listen to file modifications".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_runtime_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.2"]) + s.add_development_dependency(%q.freeze, ["~> 1.12"]) + else + s.add_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_dependency(%q.freeze, ["~> 1.2"]) + s.add_dependency(%q.freeze, ["~> 1.12"]) + end + else + s.add_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_dependency(%q.freeze, ["~> 1.2"]) + s.add_dependency(%q.freeze, ["~> 1.12"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/mercenary-0.3.6.gemspec b/vendor/bundle/ruby/2.5.0/specifications/mercenary-0.3.6.gemspec new file mode 100644 index 0000000000..1b0872bb21 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/mercenary-0.3.6.gemspec @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +# stub: mercenary 0.3.6 ruby lib + +Gem::Specification.new do |s| + s.name = "mercenary".freeze + s.version = "0.3.6" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Tom Preston-Werner".freeze, "Parker Moore".freeze] + s.date = "2016-04-08" + s.description = "Lightweight and flexible library for writing command-line apps in Ruby.".freeze + s.email = ["tom@mojombo.com".freeze, "parkrmoore@gmail.com".freeze] + s.homepage = "https://github.com/jekyll/mercenary".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Lightweight and flexible library for writing command-line apps in Ruby.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 1.3"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) + else + s.add_dependency(%q.freeze, ["~> 1.3"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 1.3"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/pathutil-0.16.2.gemspec b/vendor/bundle/ruby/2.5.0/specifications/pathutil-0.16.2.gemspec new file mode 100644 index 0000000000..db6c0b9f03 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/pathutil-0.16.2.gemspec @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- +# stub: pathutil 0.16.2 ruby lib + +Gem::Specification.new do |s| + s.name = "pathutil".freeze + s.version = "0.16.2" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Jordon Bedwell".freeze] + s.date = "2018-10-30" + s.description = "Like Pathname but a little less insane.".freeze + s.email = ["jordon@envygeeks.io".freeze] + s.homepage = "http://github.com/envygeeks/pathutil".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Almost like Pathname but just a little less insane.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 2.6"]) + else + s.add_dependency(%q.freeze, ["~> 2.6"]) + end + else + s.add_dependency(%q.freeze, ["~> 2.6"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/public_suffix-3.0.3.gemspec b/vendor/bundle/ruby/2.5.0/specifications/public_suffix-3.0.3.gemspec new file mode 100644 index 0000000000..580f114205 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/public_suffix-3.0.3.gemspec @@ -0,0 +1,41 @@ +# -*- encoding: utf-8 -*- +# stub: public_suffix 3.0.3 ruby lib + +Gem::Specification.new do |s| + s.name = "public_suffix".freeze + s.version = "3.0.3" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Simone Carletti".freeze] + s.date = "2018-08-15" + s.description = "PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains.".freeze + s.email = ["weppos@weppos.net".freeze] + s.extra_rdoc_files = ["LICENSE.txt".freeze] + s.files = ["LICENSE.txt".freeze] + s.homepage = "https://simonecarletti.com/code/publicsuffix-ruby".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.1".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "Domain name parser based on the Public Suffix List.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/rb-fsevent-0.10.3.gemspec b/vendor/bundle/ruby/2.5.0/specifications/rb-fsevent-0.10.3.gemspec new file mode 100644 index 0000000000..dbe172bf15 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/rb-fsevent-0.10.3.gemspec @@ -0,0 +1,42 @@ +# -*- encoding: utf-8 -*- +# stub: rb-fsevent 0.10.3 ruby lib + +Gem::Specification.new do |s| + s.name = "rb-fsevent".freeze + s.version = "0.10.3" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "source_code_uri" => "https://github.com/thibaudgg/rb-fsevent" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["Thibaud Guillaume-Gentil".freeze, "Travis Tilley".freeze] + s.date = "2018-03-03" + s.description = "FSEvents API with Signals catching (without RubyCocoa)".freeze + s.email = ["thibaud@thibaud.gg".freeze, "ttilley@gmail.com".freeze] + s.homepage = "http://rubygems.org/gems/rb-fsevent".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.7".freeze + s.summary = "Very simple & usable FSEvents API".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 1.0"]) + s.add_development_dependency(%q.freeze, ["~> 3.6"]) + s.add_development_dependency(%q.freeze, ["~> 4.2"]) + s.add_development_dependency(%q.freeze, ["~> 12.0"]) + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, ["~> 4.2"]) + s.add_dependency(%q.freeze, ["~> 12.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, ["~> 4.2"]) + s.add_dependency(%q.freeze, ["~> 12.0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/rb-inotify-0.10.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/rb-inotify-0.10.0.gemspec new file mode 100644 index 0000000000..3247ae648e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/rb-inotify-0.10.0.gemspec @@ -0,0 +1,44 @@ +# -*- encoding: utf-8 -*- +# stub: rb-inotify 0.10.0 ruby lib + +Gem::Specification.new do |s| + s.name = "rb-inotify".freeze + s.version = "0.10.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Natalie Weizenbaum".freeze, "Samuel Williams".freeze] + s.date = "2018-12-15" + s.email = ["nex342@gmail.com".freeze, "samuel.williams@oriontransfer.co.nz".freeze] + s.homepage = "https://github.com/guard/rb-inotify".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "A Ruby wrapper for Linux inotify, using FFI".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + s.add_development_dependency(%q.freeze, ["~> 3.6"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 3.6"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/rouge-3.3.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/rouge-3.3.0.gemspec new file mode 100644 index 0000000000..47ecf03de2 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/rouge-3.3.0.gemspec @@ -0,0 +1,25 @@ +# -*- encoding: utf-8 -*- +# stub: rouge 3.3.0 ruby lib + +Gem::Specification.new do |s| + s.name = "rouge".freeze + s.version = "3.3.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "changelog_uri" => "https://github.com/jneen/rouge/blob/master/CHANGELOG.md", "source_code_uri" => "https://github.com/jneen/rouge" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["Jeanine Adkisson".freeze] + s.date = "2018-10-01" + s.description = "Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.".freeze + s.email = ["jneen@jneen.net".freeze] + s.executables = ["rougify".freeze] + s.files = ["bin/rougify".freeze] + s.homepage = "http://rouge.jneen.net/".freeze + s.licenses = ["MIT".freeze, "BSD-2-Clause".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze) + s.rubyforge_project = "rouge".freeze + s.rubygems_version = "2.7.7".freeze + s.summary = "A pure-ruby colorizer based on pygments".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/ruby_dep-1.5.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/ruby_dep-1.5.0.gemspec new file mode 100644 index 0000000000..450318639e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/ruby_dep-1.5.0.gemspec @@ -0,0 +1,34 @@ +# -*- encoding: utf-8 -*- +# stub: ruby_dep 1.5.0 ruby lib + +Gem::Specification.new do |s| + s.name = "ruby_dep".freeze + s.version = "1.5.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Cezary Baginski".freeze] + s.bindir = "exe".freeze + s.date = "2016-10-09" + s.description = "Creates a version constraint of supported Rubies,suitable for a gemspec file".freeze + s.email = ["cezary@chronomantic.net".freeze] + s.homepage = "https://github.com/e2/ruby_dep".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new([">= 2.2.5".freeze, "~> 2.2".freeze]) + s.rubygems_version = "2.7.7".freeze + s.summary = "Extracts supported Ruby versions from Travis file".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_development_dependency(%q.freeze, ["~> 1.12"]) + else + s.add_dependency(%q.freeze, ["~> 1.12"]) + end + else + s.add_dependency(%q.freeze, ["~> 1.12"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/safe_yaml-1.0.5.gemspec b/vendor/bundle/ruby/2.5.0/specifications/safe_yaml-1.0.5.gemspec new file mode 100644 index 0000000000..3f78080c83 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/safe_yaml-1.0.5.gemspec @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- +# stub: safe_yaml 1.0.5 ruby lib + +Gem::Specification.new do |s| + s.name = "safe_yaml".freeze + s.version = "1.0.5" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Dan Tao".freeze] + s.date = "2019-02-22" + s.description = "Parse YAML safely".freeze + s.email = "daniel.tao@gmail.com".freeze + s.executables = ["safe_yaml".freeze] + s.files = ["bin/safe_yaml".freeze] + s.homepage = "https://github.com/dtao/safe_yaml".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 1.8.7".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "SameYAML provides an alternative implementation of YAML.load suitable for accepting user input in Ruby applications.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/sass-3.7.3.gemspec b/vendor/bundle/ruby/2.5.0/specifications/sass-3.7.3.gemspec new file mode 100644 index 0000000000..bf93838b58 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/sass-3.7.3.gemspec @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +# stub: sass 3.7.3 ruby lib + +Gem::Specification.new do |s| + s.name = "sass".freeze + s.version = "3.7.3" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "source_code_uri" => "https://github.com/sass/ruby-sass" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["Natalie Weizenbaum".freeze, "Chris Eppstein".freeze, "Hampton Catlin".freeze] + s.date = "2019-01-04" + s.description = " Ruby Sass is deprecated! See https://sass-lang.com/ruby-sass for details.\n\n Sass makes CSS fun again. Sass is an extension of CSS, adding\n nested rules, variables, mixins, selector inheritance, and more.\n It's translated to well-formatted, standard CSS using the\n command line tool or a web-framework plugin.\n".freeze + s.email = "sass-lang@googlegroups.com".freeze + s.executables = ["sass".freeze, "sass-convert".freeze, "scss".freeze] + s.files = ["bin/sass".freeze, "bin/sass-convert".freeze, "bin/scss".freeze] + s.homepage = "http://sass-lang.com/".freeze + s.licenses = ["MIT".freeze] + s.post_install_message = "\nRuby Sass is deprecated and will be unmaintained as of 26 March 2019.\n\n* If you use Sass as a command-line tool, we recommend using Dart Sass, the new\n primary implementation: https://sass-lang.com/install\n\n* If you use Sass as a plug-in for a Ruby web framework, we recommend using the\n sassc gem: https://github.com/sass/sassc-ruby#readme\n\n* For more details, please refer to the Sass blog:\n http://sass.logdown.com/posts/7081811\n\n".freeze + s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze) + s.rubyforge_project = "sass".freeze + s.rubygems_version = "2.7.7".freeze + s.summary = "A powerful but elegant CSS compiler that makes CSS fun again.".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 4.0.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.8.7.6"]) + s.add_development_dependency(%q.freeze, ["~> 3.3"]) + s.add_development_dependency(%q.freeze, ["~> 1.6.0"]) + s.add_development_dependency(%q.freeze, [">= 5"]) + else + s.add_dependency(%q.freeze, ["~> 4.0.0"]) + s.add_dependency(%q.freeze, ["~> 0.8.7.6"]) + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.6.0"]) + s.add_dependency(%q.freeze, [">= 5"]) + end + else + s.add_dependency(%q.freeze, ["~> 4.0.0"]) + s.add_dependency(%q.freeze, ["~> 0.8.7.6"]) + s.add_dependency(%q.freeze, ["~> 3.3"]) + s.add_dependency(%q.freeze, ["~> 1.6.0"]) + s.add_dependency(%q.freeze, [">= 5"]) + end +end diff --git a/vendor/bundle/ruby/2.5.0/specifications/sass-listen-4.0.0.gemspec b/vendor/bundle/ruby/2.5.0/specifications/sass-listen-4.0.0.gemspec new file mode 100644 index 0000000000..d472a2cf71 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/specifications/sass-listen-4.0.0.gemspec @@ -0,0 +1,39 @@ +# -*- encoding: utf-8 -*- +# stub: sass-listen 4.0.0 ruby lib + +Gem::Specification.new do |s| + s.name = "sass-listen".freeze + s.version = "4.0.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Thibaud Guillaume-Gentil".freeze] + s.date = "2017-07-13" + s.description = "This fork of guard/listen provides a stable API for users of the ruby Sass CLI".freeze + s.email = "thibaud@thibaud.gg".freeze + s.homepage = "https://github.com/sass/listen".freeze + s.licenses = ["MIT".freeze] + s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze) + s.rubygems_version = "2.7.7".freeze + s.summary = "Fork of guard/listen".freeze + + s.installed_by_version = "2.7.7" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_runtime_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_development_dependency(%q.freeze, [">= 1.3.5"]) + else + s.add_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 1.3.5"]) + end + else + s.add_dependency(%q.freeze, [">= 0.9.4", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 0.9.7", "~> 0.9"]) + s.add_dependency(%q.freeze, [">= 1.3.5"]) + end +end From c2517125245d40bdce39ada4263f0c6245ac0c4f Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 14:42:32 -0700 Subject: [PATCH 08/43] updated readme --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 8bf8b03f95..4aab7d0758 100755 --- a/README.md +++ b/README.md @@ -2,6 +2,15 @@ Welcome to the Mother Tongues Blog repository. +## Guide + +To contribute to the site, please have a read through the purpose of the Git branches: + +- master: The `master` branch is auto generated from the `release` branch. Do **not** edit this directly, as edits will be overwritten. +- release: Push releases here, this branch will build and push to `master`. +- dev.author: Create and continue to work on new posts here. You can spin off extra branches like `dev.author-aidan` for example, but you must merge them into `dev.author` before merging to `release` and pushing a new release. +- dev.site: Make changes to the website here. Changes can be merged with `release` branch. + ### Copyright Copyright Theme (C) 2019 Sal, https://www.wowthemes.net From a9c530193554229d5aa7d06cd4997515b7b59cce Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 14:46:40 -0700 Subject: [PATCH 09/43] changed release branch to master --- .travis.yml | 6 +++--- README.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 91a1517035..f52c1ff021 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,17 +2,17 @@ language: ruby cache: bundler branches: only: - - release + - master script: - JEKYLL_ENV=production bundle install - JEKYLL_ENV=production bundle exec jekyll build --destination docs deploy: provider: pages - target-branch: master + target-branch: gh-pages email: deploy@travis-ci.org name: Deployment Bot skip-cleanup: true github-token: $GITHUB_TOKEN keep-history: true on: - branch: release \ No newline at end of file + branch: master \ No newline at end of file diff --git a/README.md b/README.md index 4aab7d0758..fc9ed337bc 100755 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ Welcome to the Mother Tongues Blog repository. To contribute to the site, please have a read through the purpose of the Git branches: -- master: The `master` branch is auto generated from the `release` branch. Do **not** edit this directly, as edits will be overwritten. -- release: Push releases here, this branch will build and push to `master`. -- dev.author: Create and continue to work on new posts here. You can spin off extra branches like `dev.author-aidan` for example, but you must merge them into `dev.author` before merging to `release` and pushing a new release. -- dev.site: Make changes to the website here. Changes can be merged with `release` branch. +- master: Changes made here will build and push to `gh-pages`. +- gh-pages: This branch is auto generated from the `master` branch. Do **not** edit this directly, as edits will be overwritten. +- dev.author: Create and continue to work on new posts here. You can spin off extra branches like `dev.author-aidan` for example, but you must merge them into `dev.author` before merging to `master` and pushing a new release. +- dev.site: Make changes to the website here. Changes can be merged with `master` branch. ### Copyright From d37e2d4e6b13861427e77b82f6f93591237745ee Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 15:52:48 -0700 Subject: [PATCH 10/43] added new contributing posts --- README.md | 16 +++++++- _includes/postbox.html | 2 + _posts/2020-03-17-become-an-author.md | 53 ++++++++++++++++++++++++++ _posts/2020-03-17-write-a-post.md | 38 ++++++++++++++++++ assets/images/01.jpg | Bin 0 -> 124739 bytes assets/images/01.svg | 1 - 6 files changed, 107 insertions(+), 3 deletions(-) create mode 100755 _posts/2020-03-17-become-an-author.md create mode 100755 _posts/2020-03-17-write-a-post.md create mode 100644 assets/images/01.jpg delete mode 100644 assets/images/01.svg diff --git a/README.md b/README.md index 8bf8b03f95..bb2c417fde 100755 --- a/README.md +++ b/README.md @@ -2,12 +2,24 @@ Welcome to the Mother Tongues Blog repository. -### Copyright +## Guide -Copyright Theme (C) 2019 Sal, https://www.wowthemes.net +To contribute to the site, please have a read through the purpose of the Git branches: + +`master`: Changes made here will build and push to `gh-pages`. + +`gh-pages`: This branch is auto generated from the `master` branch. Do **not** edit this directly, as edits will be overwritten. + +`dev.author`: Create and continue to work on new posts here. You can spin off extra branches like `dev.author-aidan` for example, but you must merge them into `dev.author` before merging to `master` and pushing a new release. + +`dev.site`: Make changes to the website here. Changes can be merged with `master` branch. + +### Copyright Copyright Blog (C) 2020 Aidan, https://aidanpine.ca +Copyright Theme (C) 2019 Sal, https://www.wowthemes.net + Posts are copyrighted by authors! ### Contribute diff --git a/_includes/postbox.html b/_includes/postbox.html index 80160e2d43..36d08b6611 100755 --- a/_includes/postbox.html +++ b/_includes/postbox.html @@ -3,6 +3,7 @@
                + {% if post.image %} + {% endif %}

                {{ post.title }} diff --git a/_posts/2020-03-17-become-an-author.md b/_posts/2020-03-17-become-an-author.md new file mode 100755 index 0000000000..4de0a06ba8 --- /dev/null +++ b/_posts/2020-03-17-become-an-author.md @@ -0,0 +1,53 @@ +--- +layout: post +title: "Become an author" +author: aidan +categories: [ Tutorial, Blog ] +tags: [ intermediate, contributing ] +image: assets/images/01.jpg +description: "Write your own articles for the Mother Tongues Blog" +featured: false +hidden: false +--- + +Do you have a tip you'd like to share? Have you pulled your hair out fixing a bug only to find out that the reason the bug exists is because many mainstream platforms don't consider less-resourced languages? The Mother Tongues blog is the place to share your tips, tricks, and tutorials for all things related to technology for less-resourced languages. + +To become an author, you'll need a [GitHub](https://github.com) account[1](#github-footnote). + +Then, follow these steps: + +1. Fork the [Mother Tongues Blog Respository](https://github.com/roedoejet/mothertongues-blog) +2. Checkout to the `dev.author` branch +3. Edit the file labelled `_config.yml`. * denotes a required value. + ```yaml + authors: + aidan: + name: Aidan + display_name: Aidan + gravatar: 7623fd3eeb0acbe1084fecc20c3093ae + email: hello@aidanpine.ca + web: https://aidanpine.ca + twitter: https://twitter.com/aidanpine + description: "Lead developer of Mother Tongues." + yourname*: + name: YourName* + display_name: YourName* + email: your@email.com* + gravatar: YourGravatarID + web: yoursite.com + twitter: https://twitter.com/yourhandle + description: "Guest Author. YourDescriptionHere" + ``` +4. Submit a [pull request](https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author) + +That's it! Start [writing your posts]({{site.baseurl}}/write-a-post). + +
                +
                +
                + +## Footnotes + +1: Any suggestions for good GitHub tutorials? Leave them in the comments below! + + diff --git a/_posts/2020-03-17-write-a-post.md b/_posts/2020-03-17-write-a-post.md new file mode 100755 index 0000000000..35044d496e --- /dev/null +++ b/_posts/2020-03-17-write-a-post.md @@ -0,0 +1,38 @@ +--- +layout: post +title: "Write a post" +author: aidan +categories: [ Tutorial, Blog ] +tags: [ intermediate, contributing ] +image: false +description: "Welcome to the Mother Tongues blog!" +featured: false +hidden: false +--- + +Here's a short tutorial on how to write your first blog post on the official Mother Tongues Blog. This tutorial assumes you've already signed up to [become an author]({{site.baseurl}}/become-an-author). + +Posts on the Mother Tongues Blog are written in [Markdown](https://en.wikipedia.org/wiki/Markdown). + +In order to write a new post, follow the following steps. + +1. In your fork of the [Mother Tongues Blog Respository](https://github.com/roedoejet/mothertongues-blog), make sure you're in the `dev.author` branch and add a new post to the `_posts` folder. Your post file name must by [slugified](https://blog.tersmitten.nl/slugify/). It must start with the date (yyyy-mm-dd) and then the blog post name, `2020-01-15-this-is-a-sample.md`. +2. Add some meta data about the post at the top: + ```markdown + --- + layout: post + title: "Become an author" + author: aidan + categories: [ Tutorial, Blog ] + tags: [ intermediate ] + image: assets/images/01.jpg + description: "Write your own articles for the Mother Tongues Blog" + featured: false + hidden: false + --- +``` +3. Write the content of your post in Markdown. +4. When you're happy with it, Submit a [pull request](https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author) + + +Thanks for contributing! \ No newline at end of file diff --git a/assets/images/01.jpg b/assets/images/01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c2f50d4d90f7f297acf5c18a535c519b5d7ac1e GIT binary patch literal 124739 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

                *FP0|BxpKr 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 j@q \ No newline at end of file From 80250511bcd1af390bca484a1cff25c98ef973b6 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 16:14:24 -0700 Subject: [PATCH 11/43] remove baseurl --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index e38d05b76f..2b6133574d 100755 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ title: "Mother Tongues Blog" description: "Smashing the lore of language technology!" logo: 'assets/images/logo_no_text.png' favicon: 'assets/images/favicon.ico' -baseurl: '/mothertongues-blog' +baseurl: '' google_analytics: 'UA-100872710-18' disqus: 'mothertongues' mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' From 8a1d55578ac949296f65baad8f4126a56353d060 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 16:20:08 -0700 Subject: [PATCH 12/43] added subdomain fixing --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f201982c51..833d179feb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ branches: script: - JEKYLL_ENV=production bundle install - JEKYLL_ENV=production bundle exec jekyll build --destination docs + - echo "blog.mothertongues.org" >> docs/CNAME deploy: provider: pages local_dir: ./docs From 43b6db45ab0774888c3676f309d879addf5676b1 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 16:23:42 -0700 Subject: [PATCH 13/43] fixed prev/next anchors --- _layouts/post.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_layouts/post.html b/_layouts/post.html index cdeda5e829..022f710e56 100755 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -123,10 +123,10 @@

                Summary

                From 0853d0973cb0424305abee59415a6b41a44498a5 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 16:31:47 -0700 Subject: [PATCH 14/43] update typos --- _posts/2020-03-17-welcome.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2020-03-17-welcome.md b/_posts/2020-03-17-welcome.md index 37f42931a0..8b09c32e3c 100755 --- a/_posts/2020-03-17-welcome.md +++ b/_posts/2020-03-17-welcome.md @@ -12,8 +12,8 @@ hidden: true Welcome to the Mother Tongues official blog! -Mother Tongues is an organization whose focus is to provide powerful tools for language revitalization. +Mother Tongues is an organization that releases free and open source tools for language revitalization. -Here you'll find small tips and tricks for developing language technology with a focus on Indigenous languages. +Here you'll find blog posts, tips, tricks and tutorials for developing language technology with a focus on Indigenous languages. Be sure to [sign up]({{ site.mailchimp-list }}) to our mailing list to keep track of new blog posts and any events. From 56aca26cfe6c8fe475e333b78f9c9c31d604df20 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 17:04:42 -0700 Subject: [PATCH 15/43] updated base url --- _config.yml | 2 +- _layouts/post.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 2b6133574d..4074d8afce 100755 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ title: "Mother Tongues Blog" description: "Smashing the lore of language technology!" logo: 'assets/images/logo_no_text.png' favicon: 'assets/images/favicon.ico' -baseurl: '' +baseurl: 'https://blog.mothertongues.org' google_analytics: 'UA-100872710-18' disqus: 'mothertongues' mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' diff --git a/_layouts/post.html b/_layouts/post.html index 022f710e56..f0ef6865db 100755 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -123,10 +123,10 @@

                Summary

                From 33a319e6b3ad3b01402f633d7df6f19a2c91ad36 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 17:05:40 -0700 Subject: [PATCH 16/43] update footer --- _layouts/default.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/_layouts/default.html b/_layouts/default.html index 3fa6a68be8..bb8acaf7cf 100755 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -156,10 +156,7 @@

                Explore
                - Copyright © {{ site.time | date: "%Y" }} {{ site.name }} -
                -
                - Mediumish Jekyll Theme by WowThemes.net + Copyright © {{ site.time | date: "%Y" }} Mother Tongues

                From 38eed92e5190012bdf6413c1e18d165b5a6deaf2 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 17:13:32 -0700 Subject: [PATCH 17/43] replaced with absolute urls --- _config.yml | 2 +- _layouts/post.html | 4 ++-- _posts/2020-03-17-become-an-author.md | 2 +- _posts/2020-03-17-write-a-post.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/_config.yml b/_config.yml index 4074d8afce..2b6133574d 100755 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ title: "Mother Tongues Blog" description: "Smashing the lore of language technology!" logo: 'assets/images/logo_no_text.png' favicon: 'assets/images/favicon.ico' -baseurl: 'https://blog.mothertongues.org' +baseurl: '' google_analytics: 'UA-100872710-18' disqus: 'mothertongues' mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' diff --git a/_layouts/post.html b/_layouts/post.html index f0ef6865db..9d6f64eebb 100755 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -123,10 +123,10 @@

                Summary

                diff --git a/_posts/2020-03-17-become-an-author.md b/_posts/2020-03-17-become-an-author.md index 4de0a06ba8..6478f18c72 100755 --- a/_posts/2020-03-17-become-an-author.md +++ b/_posts/2020-03-17-become-an-author.md @@ -40,7 +40,7 @@ Then, follow these steps: ``` 4. Submit a [pull request](https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author) -That's it! Start [writing your posts]({{site.baseurl}}/write-a-post). +That's it! Start [writing your posts]({{ "write-a-post" | absolute_url }}).

                diff --git a/_posts/2020-03-17-write-a-post.md b/_posts/2020-03-17-write-a-post.md index 35044d496e..c83c906606 100755 --- a/_posts/2020-03-17-write-a-post.md +++ b/_posts/2020-03-17-write-a-post.md @@ -10,7 +10,7 @@ featured: false hidden: false --- -Here's a short tutorial on how to write your first blog post on the official Mother Tongues Blog. This tutorial assumes you've already signed up to [become an author]({{site.baseurl}}/become-an-author). +Here's a short tutorial on how to write your first blog post on the official Mother Tongues Blog. This tutorial assumes you've already signed up to [become an author]({{ "become-an-author" | absolute_url }}). Posts on the Mother Tongues Blog are written in [Markdown](https://en.wikipedia.org/wiki/Markdown). From 811ca4e073c43d9001d87184566837cc0308e015 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 18:38:49 -0700 Subject: [PATCH 18/43] html proofer integration --- .travis.yml | 12 ++++++++++++ Gemfile | 2 ++ Gemfile.lock | 27 ++++++++++++++++++++++++++- Rakefile | 26 ++++++++++++++++++++++++++ _config.yml | 7 +++++++ _includes/disqus.html | 4 ++-- _layouts/categories.html | 2 +- _layouts/default.html | 8 ++++---- _layouts/post.html | 4 ++-- _layouts/tags.html | 2 +- 10 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 Rakefile diff --git a/.travis.yml b/.travis.yml index 833d179feb..9996c2dfcf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: ruby cache: bundler +sudo: false branches: only: - master @@ -7,6 +8,17 @@ script: - JEKYLL_ENV=production bundle install - JEKYLL_ENV=production bundle exec jekyll build --destination docs - echo "blog.mothertongues.org" >> docs/CNAME + - bundle exec rake test +cache: + directories: + - $TRAVIS_BUILD_DIR/tmp/.htmlproofer +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer +addons: + apt: + packages: + - libcurl4-openssl-dev # required to avoid SSL errors deploy: provider: pages local_dir: ./docs diff --git a/Gemfile b/Gemfile index b8073827f0..934bcf279c 100755 --- a/Gemfile +++ b/Gemfile @@ -17,4 +17,6 @@ group :jekyll_plugins do gem 'jekyll-archives' gem 'kramdown' gem 'rouge' + gem 'rake' + gem 'html-proofer' end diff --git a/Gemfile.lock b/Gemfile.lock index 52ff7c4619..c61fad32e2 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,11 +8,21 @@ GEM em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) eventmachine (1.2.7) eventmachine (1.2.7-x64-mingw32) ffi (1.10.0) ffi (1.10.0-x64-mingw32) forwardable-extended (2.6.0) + html-proofer (3.15.1) + addressable (~> 2.3) + mercenary (~> 0.3) + nokogumbo (~> 2.0) + parallel (~> 1.3) + rainbow (~> 3.0) + typhoeus (~> 1.3) + yell (~> 2.0) http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) @@ -49,9 +59,19 @@ GEM rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) mercenary (0.3.6) + mini_portile2 (2.4.0) + nokogiri (1.10.9) + mini_portile2 (~> 2.4.0) + nokogiri (1.10.9-x64-mingw32) + mini_portile2 (~> 2.4.0) + nokogumbo (2.0.2) + nokogiri (~> 1.8, >= 1.8.4) + parallel (1.19.1) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (3.0.3) + rainbow (3.0.0) + rake (13.0.1) rb-fsevent (0.10.3) rb-inotify (0.10.0) ffi (~> 1.0) @@ -63,19 +83,24 @@ GEM sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) + typhoeus (1.3.1) + ethon (>= 0.9.0) + yell (2.2.2) PLATFORMS ruby x64-mingw32 DEPENDENCIES + html-proofer jekyll-archives jekyll-feed jekyll-paginate jekyll-seo-tag jekyll-sitemap kramdown + rake rouge BUNDLED WITH - 2.0.1 + 2.1.2 diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000000..9791dfa945 --- /dev/null +++ b/Rakefile @@ -0,0 +1,26 @@ +abort('Please run this using `bundle exec rake`') unless ENV["BUNDLE_BIN_PATH"] +require 'html-proofer' + +desc "Test the website" +task :test do + sh "bundle exec jekyll build" + options = { + # :check_sri => true, + :check_external_hash => true, + :check_html => true, + :check_img_http => true, + :allow_hash_href => true, + :check_opengraph => true, + :enforce_https => true, + :cache => { + :timeframe => '6w' + } + } + begin + HTMLProofer.check_directory("./_site", options).run + rescue => msg + puts "#{msg}" + end +end + +task :default => [:test] \ No newline at end of file diff --git a/_config.yml b/_config.yml index 2b6133574d..60c70e79d1 100755 --- a/_config.yml +++ b/_config.yml @@ -4,6 +4,7 @@ title: "Mother Tongues Blog" description: "Smashing the lore of language technology!" logo: 'assets/images/logo_no_text.png' favicon: 'assets/images/favicon.ico' +url: https://blog.mothertongues.org baseurl: '' google_analytics: 'UA-100872710-18' disqus: 'mothertongues' @@ -11,6 +12,12 @@ mailchimp-list: 'https://mailchi.mp/b87b1fbde236/mothertongues' include: ["_pages"] permalink: /:title/ +# Assets +assets: + defaults: + integrity: + css: true + # Authors authors: aidan: diff --git a/_includes/disqus.html b/_includes/disqus.html index af4d8719c9..4e9bb8109b 100755 --- a/_includes/disqus.html +++ b/_includes/disqus.html @@ -9,6 +9,6 @@ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); - - comments powered by Disqus + + comments powered by Disqus diff --git a/_layouts/categories.html b/_layouts/categories.html index 75963ad94c..5cb5545ad9 100755 --- a/_layouts/categories.html +++ b/_layouts/categories.html @@ -7,7 +7,7 @@
                {% for category in site.categories %}
                -

                Category {{ category[0] }}

                +

                Category {{ category[0] }}

                {% assign pages_list = category[1] %} {% for post in pages_list %} diff --git a/_layouts/default.html b/_layouts/default.html index bb8acaf7cf..e92c935ff8 100755 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -4,7 +4,7 @@ - + {{ page.title }} | {{site.name}} @@ -72,7 +72,7 @@ {% include search-lunr.html %} @@ -138,11 +138,11 @@

                Explore {{ category | camelcase }} ({{ site.tags[category].size }}) + {{ category | camelcase }} ({{ site.tags[category].size }}) {% endfor %} {% else %} {% for category in categories_list %} - {{ category[0] | camelcase }} ({{ category[1].size }}) + {{ category[0] | camelcase }} ({{ category[1].size }}) {% endfor %} {% endif %} {% assign categories_list = nil %} diff --git a/_layouts/post.html b/_layouts/post.html index 9d6f64eebb..3b27961b19 100755 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -100,7 +100,7 @@

                Summary

                {% assign sortedCategories = page.categories | sort %} {% for category in sortedCategories %}
              11. - {{ category }} + {{ category }}
              12. {% endfor %} @@ -113,7 +113,7 @@

                Summary

                {% assign sortedTags = page.tags | sort %} {% for tag in sortedTags %}
              13. - #{{ tag }} + #{{ tag }}
              14. {% endfor %} diff --git a/_layouts/tags.html b/_layouts/tags.html index 751999617a..52953ee4c9 100755 --- a/_layouts/tags.html +++ b/_layouts/tags.html @@ -7,7 +7,7 @@
                {% for tag in site.tags %}
                -

                Tag {{ tag[0] }}

                +

                Tag {{ tag[0] }}

                {% assign pages_list = tag[1] %} {% for post in pages_list %} From 627d628ee32ad1b118f6a70c697bef141f043313 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 18:43:48 -0700 Subject: [PATCH 19/43] updated cache --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9996c2dfcf..236527c7b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,9 +9,6 @@ script: - JEKYLL_ENV=production bundle exec jekyll build --destination docs - echo "blog.mothertongues.org" >> docs/CNAME - bundle exec rake test -cache: - directories: - - $TRAVIS_BUILD_DIR/tmp/.htmlproofer env: global: - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer From 4df048cbe7c25819bce3cd51964edb156df8a6a1 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 18:46:05 -0700 Subject: [PATCH 20/43] updated bundler install --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 236527c7b2..36c6d9beef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: ruby cache: bundler sudo: false +before_install: + - gem install bundler branches: only: - master From 3f6623be4d30c56ddde52a0749701ef0ad3cf0e0 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 18:49:37 -0700 Subject: [PATCH 21/43] specific bundler version --- .travis.yml | 2 +- tmp/.htmlproofer/cache.log | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 tmp/.htmlproofer/cache.log diff --git a/.travis.yml b/.travis.yml index 36c6d9beef..81694cb56b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: ruby cache: bundler sudo: false before_install: - - gem install bundler + - gem install bundler -v 2.1.2 branches: only: - master diff --git a/tmp/.htmlproofer/cache.log b/tmp/.htmlproofer/cache.log new file mode 100644 index 0000000000..27810a48b9 --- /dev/null +++ b/tmp/.htmlproofer/cache.log @@ -0,0 +1 @@ +{"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://use.fontawesome.com/releases/v5.0.13/css/all.css":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://www.gravatar.com/avatar/7623fd3eeb0acbe1084fecc20c3093ae?s=250&d=mm&r=x":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://fonts.googleapis.com/css?family=Amatic+SC|Righteous|Merriweather:300,300i,400,400i,700,700i":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://twitter.com/intent/tweet?text=Become an author&url=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://en.wikipedia.org/wiki/Markdown":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/404.html":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/404.html"],"status":200,"message":""},"https://blog.mothertongues.org/write-a-post/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://disqus.com":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://disqus.com/?ref_noscript":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/index.html"],"status":200,"message":""},"http://mothertongues.disqus.com/count.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/assets/images/01.jpg":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/about":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/category/blog/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/category/blog/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/welcome/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/assets/images/logo_no_text.png":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/categories":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/write-a-post":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/category/tutorial/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/category/tutorial/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/become-an-author":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/tags":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/tags.html"],"status":200,"message":""},"https://aidanpine.ca":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://twitter.com/aidanpine":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://mailchi.mp/b87b1fbde236/mothertongues":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://github.com":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://www.linkedin.com/shareArticle?mini=true&url=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://facebook.com/sharer.php?u=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://github.com/roedoejet/mothertongues-blog":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.tersmitten.nl/slugify/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""}} \ No newline at end of file From 12218d7bd83309379e9432d249747b23f830db46 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Tue, 17 Mar 2020 18:50:10 -0700 Subject: [PATCH 22/43] ignore tmp --- .gitignore | 1 + tmp/.htmlproofer/cache.log | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 tmp/.htmlproofer/cache.log diff --git a/.gitignore b/.gitignore index 8312df086d..1229672d03 100755 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ _site *.swp .sass-cache *~ +tmp diff --git a/tmp/.htmlproofer/cache.log b/tmp/.htmlproofer/cache.log deleted file mode 100644 index 27810a48b9..0000000000 --- a/tmp/.htmlproofer/cache.log +++ /dev/null @@ -1 +0,0 @@ -{"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://use.fontawesome.com/releases/v5.0.13/css/all.css":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://www.gravatar.com/avatar/7623fd3eeb0acbe1084fecc20c3093ae?s=250&d=mm&r=x":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://fonts.googleapis.com/css?family=Amatic+SC|Righteous|Merriweather:300,300i,400,400i,700,700i":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://twitter.com/intent/tweet?text=Become an author&url=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://en.wikipedia.org/wiki/Markdown":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/404.html":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/404.html"],"status":200,"message":""},"https://blog.mothertongues.org/write-a-post/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://disqus.com":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://disqus.com/?ref_noscript":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/index.html"],"status":200,"message":""},"http://mothertongues.disqus.com/count.js":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/assets/images/01.jpg":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/about":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/category/blog/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/category/blog/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/welcome/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/assets/images/logo_no_text.png":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/categories":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://blog.mothertongues.org/write-a-post":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/category/tutorial/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/category/tutorial/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/become-an-author":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.mothertongues.org/tags":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/tags.html"],"status":200,"message":""},"https://aidanpine.ca":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/categories.html"],"status":200,"message":""},"https://twitter.com/aidanpine":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://mailchi.mp/b87b1fbde236/mothertongues":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/welcome/index.html"],"status":200,"message":""},"https://github.com":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://www.linkedin.com/shareArticle?mini=true&url=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://facebook.com/sharer.php?u=https://blog.mothertongues.org/become-an-author/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/become-an-author/index.html"],"status":200,"message":""},"https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://github.com/roedoejet/mothertongues-blog":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""},"https://blog.tersmitten.nl/slugify/":{"time":"2020-03-17 18:48:40 -0700","filenames":["./_site/write-a-post/index.html"],"status":200,"message":""}} \ No newline at end of file From c69d10ee226ca884f9ed136356265378e329e209 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 31 Jul 2020 15:25:49 -0700 Subject: [PATCH 23/43] docs(template): added post template --- .ruby-version | 1 + _posts/2020-03-17-write-a-post.md | 2 +- _posts/2020-07-31-post-template.md | 47 ++++++++++++++++++++++++++++++ assets/css/main.scss | 4 +++ assets/js/mediumish.js | 2 +- 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .ruby-version create mode 100644 _posts/2020-07-31-post-template.md diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000000..57cf282ebb --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.5 diff --git a/_posts/2020-03-17-write-a-post.md b/_posts/2020-03-17-write-a-post.md index c83c906606..e2af5a0924 100755 --- a/_posts/2020-03-17-write-a-post.md +++ b/_posts/2020-03-17-write-a-post.md @@ -31,7 +31,7 @@ In order to write a new post, follow the following steps. hidden: false --- ``` -3. Write the content of your post in Markdown. +3. Write the content of your post in Markdown. Please have a look at the [template]({{ "post-template" | absolute_url }}) for writing accessible posts! 4. When you're happy with it, Submit a [pull request](https://github.com/roedoejet/mothertongues-blog/pull/new/dev.author) diff --git a/_posts/2020-07-31-post-template.md b/_posts/2020-07-31-post-template.md new file mode 100644 index 0000000000..b19cf77f6f --- /dev/null +++ b/_posts/2020-07-31-post-template.md @@ -0,0 +1,47 @@ +--- +layout: post +title: "Standard post template" +author: aidan +categories: [ Tutorial, Blog ] +tags: [ basic, contributing ] +image: false +description: "How to write a basic blog post" +featured: false +hidden: false +--- + +This blog post describes what a basic template for a post on this blog should look like. Feel free to just copy past the headers into your post and replace the text! The instructions for each section are italicized, and the answers for this specific blog post are following the italicized text. + +# TL;DR + +*We reccomend having a section at the top that gives an extremely short summary of the post (ideally 2 or 3 sentences). This should be high-level, and shouldn't assume any technical knowledge.* + +This is a template of a blog post to follow when writing other blog posts - how meta! + +# Technical Assumptions + +*Your post should have a list of technical skills that you think are needed to understand the blog post. This will help the reader know if they'll be able to benefit from reading it or whether they should study up on something first.* + +- Knowledge of writing [markdown](https://www.markdowntutorial.com/) + +# Who is involved with this project? + +*Beyond the author's information which will be part of this post, there should be a list of everybody involved with the technology discussed in the post, if applicable. The list of contacts should be clear* + +- Author/Blog Maintainer: [Aidan Pine](mailto:hello@aidanpine.ca) + +# What is needed to replicate the content in the post? + +*Is the technology or tip you're describing reproducible? If so, what are the requirements? For example, is it available for any language, given 20 hours of audio data?* + +You will need to follow the steps of [becoming an author]({{ "become-an-author" | absolute_url }}) and [writing a post]({{ "write-a-post" | absolute_url }}) before using this template. + +# What are the motivations behind this project/technology/tip? + +*Was this project funded? By whom? What were the explicit goals of the technology in question, or are they left unstated?* + +[Mother Tongues](https://mothertongues.org) was created to release open-source software for language revitalization and includes tools for [dictionaries](https://docs.mothertongues.org) and [orthography converters][https://github.com/roedoejet/convertextract]. Please read the [About section]({{ "about" | absolute_url }}) for more information. + +# Main Post <-- replace title + +*Here is where the main post should go - because this is just a template, there's nothing here!* diff --git a/assets/css/main.scss b/assets/css/main.scss index a7e8b9b25a..cb78880a9d 100755 --- a/assets/css/main.scss +++ b/assets/css/main.scss @@ -8,6 +8,10 @@ display:inline; } +.card-title { + margin-top: 15px; +} + // Import partials from `sass_dir` (defaults to `_sass`) @import "syntax", diff --git a/assets/js/mediumish.js b/assets/js/mediumish.js index b01be5bc0a..c6f2d6eb9b 100755 --- a/assets/js/mediumish.js +++ b/assets/js/mediumish.js @@ -23,7 +23,7 @@ jQuery(document).ready(function($){ // alertbar later $(document).scroll(function () { var y = $(this).scrollTop(); - if (y > 280) { + if (y > 700) { $('.alertbar').fadeIn(); } else { $('.alertbar').fadeOut(); From c02791cfc106ee847388e14faddbc4b2c6020109 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 31 Jul 2020 15:42:08 -0700 Subject: [PATCH 24/43] fix(scroll): made scroll function of height and distance from top instead of just from top --- assets/js/mediumish.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/js/mediumish.js b/assets/js/mediumish.js index c6f2d6eb9b..65f7bbab5f 100755 --- a/assets/js/mediumish.js +++ b/assets/js/mediumish.js @@ -23,7 +23,8 @@ jQuery(document).ready(function($){ // alertbar later $(document).scroll(function () { var y = $(this).scrollTop(); - if (y > 700) { + var h = $(this).height(); + if ((h - y) < 550) { $('.alertbar').fadeIn(); } else { $('.alertbar').fadeOut(); From 68d50df9f46cf6713d741dbf6d64dd504b44364d Mon Sep 17 00:00:00 2001 From: Eddie Antonio Santos Date: Tue, 4 Aug 2020 19:12:45 -0600 Subject: [PATCH 25/43] Add Eddie as an author --- _config.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/_config.yml b/_config.yml index 60c70e79d1..85f69beee9 100755 --- a/_config.yml +++ b/_config.yml @@ -28,6 +28,14 @@ authors: web: https://aidanpine.ca twitter: https://twitter.com/aidanpine description: "Lead developer of Mother Tongues." + eddie: + name: Eddie + display_name: Eddie + gravatar: 7183e460abfb84d668e408c32631abd4 + email: easantos+mothertongues@ualberta.ca + web: https://eddieantonio.ca/ + twitter: https://twitter.com/_eddieantonio + description: "Software developer and Unicode nerd" # Plugins plugins: From bb9a6ca73171d47bb35c201b81d8e355315dce23 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 7 Aug 2020 11:08:20 -0700 Subject: [PATCH 26/43] fix: add little message about how to find your gravatar id --- _posts/2020-03-17-become-an-author.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2020-03-17-become-an-author.md b/_posts/2020-03-17-become-an-author.md index 6478f18c72..44e0225f32 100755 --- a/_posts/2020-03-17-become-an-author.md +++ b/_posts/2020-03-17-become-an-author.md @@ -24,7 +24,7 @@ Then, follow these steps: aidan: name: Aidan display_name: Aidan - gravatar: 7623fd3eeb0acbe1084fecc20c3093ae + gravatar: 7623fd3eeb0acbe1084fecc20c3093ae email: hello@aidanpine.ca web: https://aidanpine.ca twitter: https://twitter.com/aidanpine @@ -33,7 +33,7 @@ Then, follow these steps: name: YourName* display_name: YourName* email: your@email.com* - gravatar: YourGravatarID + gravatar: YourGravatarID # this is an md5 hash of your email that you used to sign up for https://en.gravatar.com/ you can either calculate this on the command line, or use an online generator like https://www.md5hashgenerator.com/ web: yoursite.com twitter: https://twitter.com/yourhandle description: "Guest Author. YourDescriptionHere" From 225cac4b688f92e6bf4fa986f32a2a514669ef56 Mon Sep 17 00:00:00 2001 From: DL Date: Fri, 7 Aug 2020 12:09:42 -0600 Subject: [PATCH 27/43] oui oui bonjour c'est moi --- _config.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/_config.yml b/_config.yml index 85f69beee9..cfcf337905 100755 --- a/_config.yml +++ b/_config.yml @@ -36,6 +36,14 @@ authors: web: https://eddieantonio.ca/ twitter: https://twitter.com/_eddieantonio description: "Software developer and Unicode nerd" + delaney: + name: Delaney + display_name: Delaney + gravatar: 61082587e1c6a9ad625bb21be29142d5 + email: dlothian@ualberta.ca + web: + twitter: + description: "âpihtawikosisâniskwew and ILT Developer" # Plugins plugins: From 5d5a6211bd4bba58bbd058bec87ea558a8107f5a Mon Sep 17 00:00:00 2001 From: Eddie Antonio Santos Date: Fri, 7 Aug 2020 12:46:44 -0600 Subject: [PATCH 28/43] new post: why Cree syllabics --- ...8-07-why-a-new-cree-syllabics-converter.md | 163 ++++++++++++++++++ assets/css/screen.css | 15 +- assets/images/why-cree-syllabics--header.png | Bin 0 -> 15094 bytes .../why-cree-syllabics--mayor-and-okimaw.jpg | Bin 0 -> 81373 bytes 4 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 _posts/2020-08-07-why-a-new-cree-syllabics-converter.md create mode 100644 assets/images/why-cree-syllabics--header.png create mode 100644 assets/images/why-cree-syllabics--mayor-and-okimaw.jpg diff --git a/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md new file mode 100644 index 0000000000..d84f21798d --- /dev/null +++ b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md @@ -0,0 +1,163 @@ +--- +layout: post +title: Why I made yet another Cree syllabics converter +author: eddie +categories: [ Blog ] +tags: [ basic ] +image: assets/images/why-cree-syllabics--header.png +description: "How do existing converters fall short, and how have I decided to fix it?" +featured: false +hidden: false +--- + +The Western Cree languages—**Plains Cree**, **Woods Cree**, and **Swampy Cree**—are written using two systems: one with letters borrowed from the English, in a system known as the **standard Roman orthography** (**SRO**), and **ᓀᐦᐃᔭᐏ ᒐᐦᑭᐯᐦᐃᑲᓇ** (Cree syllabics). SRO is relatively easy to type on a modern computer, but syllabics are more difficult, because of the lack of a well-established syllabics input layout. It's easier to just use a **converter** which, given Cree text in SRO, produces Cree text in syllabics. In this post, I describe my criticisms of the converters that existed prior to July 2018, and introduce [syllabics.app][]—a syllabics converter that I developed in reaction to the former converters. + +[syllabics.app]: https://syllabics.app/ + + +What are the freely available transliterators? +---------------------------------------------- + +A quick Google search will net you at least the following SRO to syllabics transliterators. + + - [The Maskwacîs Plains Cree Syllabic Converter][ocd][^1] + - [The Algonquian Linguistic Atlas Cree Syllabics Converter][ala] + - [Syllabics.net's Plains Cree Syllabics Converter][syl] + +[ocd]: http://www.creedictionary.com/converter/maskwacis.php +[ala]: https://syllabics.atlas-ling.ca/ +[syl]: http://www.syllabics.net/convert/plainscree + +However, none of these transliterators are perfect. + +[^1]: This is the same converter bundled in the [Cree Dictionary app](http://www.creedictionary.com/software/index.php). + +The issues +---------- + +### Word final "hk" + +In syllabics, a word that ends with an "hk"---or «ᐠ» in syllabics---are +supposed end with «ᕽ» instead. However, this replacement can never occur in the middle of a word. + + + +For example, the word "ê-wêpâpîhkêwêpinamâhk" (_we (and not you) are setting it swinging_), contains both a final "hk" and a "hk" cluster in the middle of the word. Its syllabic transcription is **ᐁᐍᐹᐲᐦᑫᐍᐱᐊᒫᕽ**. + +[The Algonquian Linguistic Atlas's converter][ala] and [syllabics.net's converter][syl] both handle the conversion of "hk" to «ᐠ», without erroneously converting the sequence in the middle of a word. Notably, the community of **Maskwacîs** does not follow this convention. Therefore, the [Maskwacîs Converter][ocd] produces **ᐁ ᐁᐧᐸᐱᐦᑫᐁᐧᐱᓇᒪᐦᐠ**, unlike what is expected in other Cree communities. + +### Transliterating non-Cree words + +Some transliterators attempt to convert every Latin character, even if it doesn't make sense. Take the case of "Maskêkosihk Trail"---a road that goes from Edmonton to [Enoch Cree Nation][enoch]. The City of Edmonton unveiled the street sign, and, in the process, they unveiled an embarrassment: + +
                + +
                + “Maskêkosihk trail” erroneously converted as «ᒪᐢᑫᑯᓯᐦᐠ ᐟrᐊᐃl» + Image source: CBC + +
                +
                + +Not only does the syllabics transliteration of the sign contain the "hk" +cluster as mentioned above,[^4] but it half-transliterates *the English word* "trail" into syllabics. The result is that "trail" is rendered as «ᐟrᐊᐃl», which *contains Latin characters in the transliteration!* + +In my opinion, an SRO to syllabics transliterator should refuse to transliterate words that do not have the structure of a Cree word. However, all three of the mentioned transliterators do attempt to transliterate "trail" with differing results:[^2] + +|:----------------------------|----------| +| Maskwacîs Cree Dictionary | ᐟrᐊᐃl | +| Algonquian Linguistic Atlas | ᐟᕒᐊᐃᐪ | +| Syllabics.net | ᐟᕒᐊᐃᓬ | + + +[enoch]: http://enochnation.ca/ + +[^2]: I strongly suspect the sign designer used the Maskwacîs transliterator to get this result. +[^4]: This may not be a mistake; they _could_ be using Maskwacîs's conventions, but I'm really not sure. + +### Long vowels + +Long vowels (êîôâ) are distinct from short vowels (ioa) in Cree. Long vowels are written with a dot above in syllabics. The exception is for "ê" because it is always long; as a result, some writers also drop the diacritic when writing "e" in SRO as well. It's important to differentiate between long and short vowels, because it makes distinctions between words. For example, nipiy/ᓂᐱᕀ means "water" while nîpiy/ᓃᐱᕀ means "leaf". However, there is such a thing as "plain" script, where the vowel dots are omitted, and [pointed] script where the vowels have all dots. + +Another complication is that the "standard" Roman orthography in practice has multiple conventions for writing long vowels: using a macron (◌̄) and using a circumflex (◌̂).[^3] + +How do the various converters handle long vowel diacritics? [The Maskwacîs converter][ocd] does not produce dots for long vowels at all, however it accepts both macrons and circumflexes as input. The [Algonquian Lingustic Atlas's converter][ala] not only produces dots, but supports input in either macrons or circumflexes. The [syllabics.net converter][syl] does worst of all, handling *only* macrons for long vowels. It simply spits out characters written with circumflexes. Additionally, it does not handle "ê" without an diacritics, which all other converters do. + + +[pointed]: https://en.wikipedia.org/wiki/Canadian_Aboriginal_syllabics#Pointing + +[^3]: Anecdotally, I find that most writers near Edmonton and Maskwacîs prefer circumflexes to macrons; however noted Algonquian linguist Arok Wolvengrey prefers macrons. Heck, Jean Okimāsis writes her surname with a macron! + +### Other odds and ends + +Other issues for syllabics converters include how they deal with dashes, how they deal with combining diacritics, rather than pre-composed characters, and whether they produce the correct Unicode characters for the syllabics rather than very convincing look-alikes. There's also the [sandhi orthographic rule][sandhi], but honestly, I'm not sure I fully comprehend how to apply this rule myself. + + +[sandhi]: https://crk-orthography.readthedocs.io/en/stable/glossary.html#term-sandhi + +### Summary + +Here's a breakdown of the previous issues, and whether each transliterator can handle it correctly. + +| | Word-final "hk" | Non-Cree words | Long vowels | +|:----------------------------|------------------:|-----------------:|--------------:| +| Maskwacîs Cree Dictionary | * | ❌ | ❌ | +| Algonquian Linguistic Atlas | ✅ | ❌ | ✅ | +| Syllabics.net | ✅ | ❌ | ❌ | + + +Where's the source code? +------------------------ + +The most pressing issue to me personally is that I cannot find **source code** for any of these converters! This means that if other people want to incorporate a converter into their own app without an active internet connection, **they can't**. They have to either reverse-engineer the converters online, or write their own code to do the conversion. + + +`cree-sro-syllabics`: an open-source Python and JavaScript library for syllabics conversion +------------------------------------------------------------------------------------------- + +My solution was to create a code library that is **free and open source**. It is available both for [Python][pypi] and [JavaScript][npm], and you can try it out right now! + +[pypi]: https://pypi.org/project/cree-sro-syllabics/ +[npm]: https://www.npmjs.com/package/cree-sro-syllabics + +It handles all the issues previously mentioned. Try it with the following test cases: + + - [Maskekosihk trail](https://syllabics.app/#!sro:Maskekosihk%20trail) + - [êwêpâpîhkêwêpinamahk](https://syllabics.app/#!sro:êwêpâpîhkêwêpinamahk) + - [ēwēpâpīhkēwēpinamahk](https://syllabics.app/#!sro:ēwēpâpīhkēwēpinamahk) + - [ewepapihkewepinamahk](https://syllabics.app/#!sro:ewepapihkewepinamahk) + +The source code for `cree-sro-syllabics` can be found on their respective GitHub repositories: + + * [`cree-sro-syllabics` for Python](https://github.com/eddieantonio/cree-sro-syllabics) + * [`cree-sro-syllabics` for JavaScript](https://github.com/eddieantonio/cree-sro-syllabics.js) + +But it can also be seamlessly incorporated into a Python project that uses `pip` by installing it with: + + pip install cree-sro-syllabics + +Or, you can use `npm` to install `cree-sro-syllabics` in your JavaScript project: + + npm install cree-sro-syllabics --save + +Or you can [copy-paste the `.js` file][js-source] to your project. + +[js-source]: https://raw.githubusercontent.com/eddieantonio/cree-sro-syllabics.js/master/cree-sro-syllabics.js + +Use cases +--------- + +Most folks will just use [syllabics.app][] to convert a few words or +sentences of Cree. + +However, software developers can embed the converter in clever ways in their application. For example, I've used the converter in [itwêwina — the Plains Cree dictionary](https://itwewina.dev/). Although the underlying dictionary content is written entirely in SRO, we can present all Cree text in syllabics. In addition, we support searches in syllabics by using `cree-sro-syllabics` to convert the search string to SRO first, then search our dictionary content. + + +**How can _you_ use `cree-sro-syllabics`?** + +> **Note**: This blog post has been adapted from a [post on Eddie's blog][original]. + +[original]: https://eddieantonio.ca/blog/2018/07/30/why-i-made-yet-another-cree-syllabics-converter/ + +--- diff --git a/assets/css/screen.css b/assets/css/screen.css index a598d67f4a..6c4c6ddd94 100755 --- a/assets/css/screen.css +++ b/assets/css/screen.css @@ -899,4 +899,17 @@ iframe { .lazyimg[data-srcset] { opacity: 0; transition: opacity .25s; -} \ No newline at end of file +} + +figcaption { + margin: 0.5rem; + font-size: smaller; +} +figcaption > cite::before { + content: "\A"; + white-space: pre-line; +} + +.footnotes { + font-size: smaller; +} diff --git a/assets/images/why-cree-syllabics--header.png b/assets/images/why-cree-syllabics--header.png new file mode 100644 index 0000000000000000000000000000000000000000..930568ca7e010edd8dea3a61ab5c836df3ef0cfd GIT binary patch literal 15094 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 literal 0 HcmV?d00001 diff --git a/assets/images/why-cree-syllabics--mayor-and-okimaw.jpg b/assets/images/why-cree-syllabics--mayor-and-okimaw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64faaa445683fd0986184ac2e7590d52af921d22 GIT binary patch literal 81373 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%0A3y+Co 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

                l`Z)_A5 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 literal 0 HcmV?d00001 From 242836eac27d8c638ec13514335f531e109c1876 Mon Sep 17 00:00:00 2001 From: Eddie Antonio Santos Date: Fri, 7 Aug 2020 15:17:29 -0600 Subject: [PATCH 29/43] change: note prior technical knowledge required --- ...0-08-07-why-a-new-cree-syllabics-converter.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md index d84f21798d..178a92085e 100644 --- a/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md +++ b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md @@ -15,6 +15,22 @@ The Western Cree languages—**Plains Cree**, **Woods Cree**, and **Swampy Cree* [syllabics.app]: https://syllabics.app/ +Required Technical Knowledge +---------------------------- + +For the latter part of this blog post, where I discuss using the +converter in your own project, I assume you know how to use: + + - [npm][] for installing JavaScript packages; or + - [pip][] for installing Python packages + +If you don't care about embedding my converter in your coding project, +then there's no prior technical knowledge needed! + +[npm]: https://docs.npmjs.com/downloading-and-installing-packages-locally +[pip]: https://packaging.python.org/tutorials/installing-packages/#use-pip-for-installing + + What are the freely available transliterators? ---------------------------------------------- From 25d90111e4fb7b38c1511670c9fe48193b22040f Mon Sep 17 00:00:00 2001 From: Eddie Antonio Santos Date: Fri, 7 Aug 2020 15:23:22 -0600 Subject: [PATCH 30/43] change: use more colloquial wording for technical assumptions --- _posts/2020-08-07-why-a-new-cree-syllabics-converter.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md index 178a92085e..1a4d7d4336 100644 --- a/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md +++ b/_posts/2020-08-07-why-a-new-cree-syllabics-converter.md @@ -15,8 +15,8 @@ The Western Cree languages—**Plains Cree**, **Woods Cree**, and **Swampy Cree* [syllabics.app]: https://syllabics.app/ -Required Technical Knowledge ----------------------------- +What you need to know to understand this post +--------------------------------------------- For the latter part of this blog post, where I discuss using the converter in your own project, I assume you know how to use: From 4d925bdb97c8dfec51ae78dec00410375011e43e Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 7 Aug 2020 15:10:39 -0700 Subject: [PATCH 31/43] new post: wip commit of g2p post --- _posts/2020-03-17-welcome.md | 2 ++ _posts/2020-07-31-post-template.md | 4 +-- _posts/2020-08-07-g2p.md | 48 +++++++++++++++++++++++++++++ assets/images/bonjour-g2p.png | Bin 0 -> 160565 bytes 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 _posts/2020-08-07-g2p.md create mode 100644 assets/images/bonjour-g2p.png diff --git a/_posts/2020-03-17-welcome.md b/_posts/2020-03-17-welcome.md index 8b09c32e3c..92d15fbb1c 100755 --- a/_posts/2020-03-17-welcome.md +++ b/_posts/2020-03-17-welcome.md @@ -17,3 +17,5 @@ Mother Tongues is an organization that releases free and open source tools for l Here you'll find blog posts, tips, tricks and tutorials for developing language technology with a focus on Indigenous languages. Be sure to [sign up]({{ site.mailchimp-list }}) to our mailing list to keep track of new blog posts and any events. + +If you're interested in becoming an author, and you have a [GitHub](https://github.com) account, please checkout how to [become an author]({{ "become-an-author" | absolute_url }}) and after you've signed up, learn how to [write a post]({{ "write-a-post" | absolute_url }}). diff --git a/_posts/2020-07-31-post-template.md b/_posts/2020-07-31-post-template.md index b19cf77f6f..625515f7a6 100644 --- a/_posts/2020-07-31-post-template.md +++ b/_posts/2020-07-31-post-template.md @@ -18,7 +18,7 @@ This blog post describes what a basic template for a post on this blog should lo This is a template of a blog post to follow when writing other blog posts - how meta! -# Technical Assumptions +# What you need to know to understand this post *Your post should have a list of technical skills that you think are needed to understand the blog post. This will help the reader know if they'll be able to benefit from reading it or whether they should study up on something first.* @@ -28,7 +28,7 @@ This is a template of a blog post to follow when writing other blog posts - how *Beyond the author's information which will be part of this post, there should be a list of everybody involved with the technology discussed in the post, if applicable. The list of contacts should be clear* -- Author/Blog Maintainer: [Aidan Pine](mailto:hello@aidanpine.ca) +- Author/Blog Maintainer: [Aidan Pine](aidanpine.ca) # What is needed to replicate the content in the post? diff --git a/_posts/2020-08-07-g2p.md b/_posts/2020-08-07-g2p.md new file mode 100644 index 0000000000..4edfbeb201 --- /dev/null +++ b/_posts/2020-08-07-g2p.md @@ -0,0 +1,48 @@ +--- +layout: post +title: "Getting from 'a' to 'b' with the 'g2p'" +author: aidan +categories: [] +tags: [ tutorial, explanation, tech-showcase ] +image: assets/images/bonjour-g2p.png +description: "How to get from 'a' to 'b' using the g2p library" +featured: false +hidden: true +--- + +This blog post describes the background context for a software tool called 'g2p' which is shorthand for 'Grapheme-to-Phoneme', but if you don't know those terms, don't worry, this post will explain it. Essentially, it is a tool for converting between two types of text, whether you want to convert between a [writing system and the phonetic alphabet](#use-case-1-getting-the-pronunciation-from-a-words-spelling), between two [writing systems for the same language](use-case-2-a-language-with-multiple-writing-systems), or between a legacy ['font-hacked' writing system and its current Unicode-supported version](use-case-3-converting-from-legacy-writing-systems). + +# What you need to know to understand this post + +- To understand the advanced section, you will need to know some [python](https://www.python.org/) + +# Who is involved with this project? + +- Maintainer (i.e. the person to bug with questions): [Aidan Pine](aidanpine.ca) +- Lots of [other contributors](https://github.com/roedoejet/g2p/graphs/contributors) + +# What are the motivations behind this project/technology/tip? + +There are many reasons why you might want to systematically convert between different 'letters' referred to in computer science typically as 'characters'. Here are a few use cases: + + +### Use Case #1: Getting the pronunciation from a word's spelling + +Sometimes you want to convert between a language's writing system (also known as *orthography*) and its pronunciation. "Letters" in a writing system are usually referred to as "graphemes" and their corresponding meaningful sounds are referred to as "phonemes"; hence "g2p" or "grapheme-to-phoneme". + +It gets a little more complicated than that though, because sometimes a grapheme is made of more than one character, as in "th" which can be pronounced *[unvoiced](https://www.thoughtco.com/voiced-and-voiceless-consonants-1212092#:~:text=Voiceless%20consonants%20do%20not%20use,as%20in%20%22thing%22).)* as in 'thin' or *[voiced](https://www.thoughtco.com/voiced-and-voiceless-consonants-1212092#:~:text=Voiced%20Consonants,-Your%20vocal%20cords&text=As%20you%20pronounce%20a%20letter,W%2C%20Y%2C%20and%20Z.)* as in 'that'. + +The [International Phonetic Alphabet](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet) is not so ambiguous, and writes the 'th' in 'thin' as **θ** and the 'th' in 'that' as **ð**. Knowing how to convert between the written and spoken form of a language is useful in a variety of computational tasks, but I will describe the usefulness specifically with a project called "ReadAlongs" [below](#readalongs) + +### Use Case #2: A language with multiple writing systems + +Some languages have two (or more!) different writing systems. Take Cree for example, where you can either write a word in *Standard Roman Orthography* like "ê-wêpâpîhkêwêpinamâhk" or in *Syllabics* like **ᐁᐍᐹᐲᐦᑫᐍᐱᐊᒫᕽ**. My colleague [Eddie](https:://eddieanotonio.ca) has a great blog post about a tool he created to convert between the two [here]({{ "why-a-new-cree-syllabics-converter" | absolute_url }}). + +### Use Case #3: Converting from legacy writing systems + +Some languages historically used 'font hacks' to render the characters in their writing system before they were supported standardly on computers. There's a longer discussion to be had here, but the coles' notes version is that when computers were gaining popularity, they weren't typically able to *render* (ie display) characters outside of the 128 characters supported by the [American Standard Code for Information Interchange (ASCII)](https://en.wikipedia.org/wiki/ASCII). To get around this, language communities would come up with their own custom fonts (often referred to as 'font hacks' or 'font encodings') where they would render things characters like '©' which existed in ASCII as 'ǧ' instead (example taken from the Heiltsuk Doulos font). For more information on this topic, please check out ['Seeing the Heiltsuk Orthography from Font Encoding through to Unicode'](http://aidanpine.ca/static/cv/pdfs/Pine-Turin-Convertextract-2018.pdf) or ['Applications and innovations in typeface design for North American Indigenous languages'](https://markturin.sites.olt.ubc.ca/files/2020/06/Schillo_Turin_typeface_2020.pdf). + +# How to get from 'a' to 'b' (or 'a' to 'æ') with g2p + + +...more to come... \ No newline at end of file diff --git a/assets/images/bonjour-g2p.png b/assets/images/bonjour-g2p.png new file mode 100644 index 0000000000000000000000000000000000000000..448beb34f5641c773223647e6b0949b5a2ee2e4a GIT binary patch literal 160565 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

                dXQKG{eYRS0M0lU;GoC?rW!p7L90xh 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 literal 0 HcmV?d00001 From 3d5e1b790d5590ef2f5e8588fc3ab04d865143bf Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 7 Aug 2020 15:46:06 -0700 Subject: [PATCH 32/43] feat: added applause button --- _layouts/default.html | 4 ++ _layouts/post.html | 85 +++++++++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 32 deletions(-) diff --git a/_layouts/default.html b/_layouts/default.html index e92c935ff8..53764b2ce6 100755 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -16,8 +16,12 @@ + + + + {% if jekyll.environment == 'production' %} diff --git a/_layouts/post.html b/_layouts/post.html index 3b27961b19..befb760f78 100755 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -26,13 +26,17 @@

                {% if author.avatar %} - {{ author.display_name }} + {{ author.display_name }} {% else %} - {{ author.display_name }} + {{ author.display_name }} {% endif %}
                @@ -45,7 +49,7 @@

                {{ page.title }}

                {% if site.adsense == "enabled" %} - {% include adsense-under-header.html %} + {% include adsense-under-header.html %} {% endif %} @@ -53,9 +57,14 @@

                {{ page.title }}

                {% if page.image %} {% if site.lazyimages == "enabled" %} - {{ page.title }} + {{ page.title }} {% else if page.image %} - {{ page.title }} + {{ page.title }} {% endif %} {% endif %} @@ -65,13 +74,13 @@

                {{ page.title }}

                {% if page.toc %} - {% if page.beforetoc %} -

                {{page.beforetoc}}

                - {% endif %} -
                -

                Summary

                - {% include toc.html html=content %} -
                + {% if page.beforetoc %} +

                {{page.beforetoc}}

                + {% endif %} +
                +

                Summary

                + {% include toc.html html=content %} +
                {% endif %} {{content}} @@ -86,21 +95,30 @@

                Summary

                - - - {% if page.last_modified_at %} - (Updated: ) - {% endif %} + + + {% if page.last_modified_at %} + (Updated: ) + {% endif %}

                + +
                + +
                + +
                  {% assign sortedCategories = page.categories | sort %} {% for category in sortedCategories %}
                • - {{ category }} + {{ category }}
                • {% endfor %}
                @@ -113,7 +131,8 @@

                Summary

                {% assign sortedTags = page.tags | sort %} {% for tag in sortedTags %}
              15. - #{{ tag }} + #{{ tag }}
              16. {% endfor %} @@ -122,13 +141,15 @@

                Summary

                @@ -143,13 +164,13 @@

                Summary

                {% if page.comments != false %} -
                -
                -
                - {% include disqus.html %} -
                +
                +
                +
                + {% include disqus.html %}
                +
                {% endif %} From 85f2488beaa3b517f33216c0a5de34f2ba3c4930 Mon Sep 17 00:00:00 2001 From: roedoejet Date: Fri, 7 Aug 2020 16:33:44 -0700 Subject: [PATCH 33/43] feat: added readtime --- _includes/postbox.html | 2 + _layouts/default.html | 298 ++++++++++++++++++++--------------- _layouts/post.html | 3 +- assets/js/readingtime.min.js | 10 ++ 4 files changed, 185 insertions(+), 128 deletions(-) create mode 100644 assets/js/readingtime.min.js diff --git a/_includes/postbox.html b/_includes/postbox.html index 36d08b6611..11094b61cc 100755 --- a/_includes/postbox.html +++ b/_includes/postbox.html @@ -42,6 +42,8 @@

                {{ post.excerpt | strip_html | truncatewords:30 }}

                {{ author.display_name }}
                {% endif %} +
                +
                diff --git a/_layouts/default.html b/_layouts/default.html index 53764b2ce6..a1ea84a223 100755 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,193 +1,237 @@ + - - + + + + + + {{ page.title }} | {{site.name}} - + {% seo %} -{{ page.title }} | {{site.name}} + -{% seo %} + - - - + - + - + - + - + + + {% if jekyll.environment == 'production' %} {% endif %} {% capture layout %}{% if page.layout %}layout-{{ page.layout }}{% endif %}{% endcapture %} + - - + + - -

                h-V)$9q}^1kKN9TsK@_B?IPS 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%0DrFSx;hO$ow~Mi0&*<6Fbt;%eCEsh4$F} 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%0AFq2`VWW@L#?J8?Z!I>^oA6fN4K4y)qlG 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�N<=w; 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 + + + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/.project b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/.project new file mode 100644 index 0000000000..c7766db5ac --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/.project @@ -0,0 +1,17 @@ + + + em_reactor + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactor.java b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactor.java new file mode 100644 index 0000000000..31642f3f11 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactor.java @@ -0,0 +1,613 @@ +/** + * $Id$ + * + * Author:: Francis Cianfrocca (gmail: blackhedd) + * Homepage:: http://rubyeventmachine.com + * Date:: 15 Jul 2007 + * + * See EventMachine and EventMachine::Connection for documentation and + * usage examples. + * + * + *---------------------------------------------------------------------------- + * + * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + * Gmail: blackhedd + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of either: 1) the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version; or 2) Ruby's License. + * + * See the file COPYING for complete licensing information. + * + *--------------------------------------------------------------------------- + * + * + */ + +package com.rubyeventmachine; + +import java.io.*; +import java.nio.channels.*; +import java.util.*; +import java.nio.*; +import java.net.*; +import java.util.concurrent.atomic.*; +import java.security.*; + +public class EmReactor { + public final int EM_TIMER_FIRED = 100; + public final int EM_CONNECTION_READ = 101; + public final int EM_CONNECTION_UNBOUND = 102; + public final int EM_CONNECTION_ACCEPTED = 103; + public final int EM_CONNECTION_COMPLETED = 104; + public final int EM_LOOPBREAK_SIGNAL = 105; + public final int EM_CONNECTION_NOTIFY_READABLE = 106; + public final int EM_CONNECTION_NOTIFY_WRITABLE = 107; + public final int EM_SSL_HANDSHAKE_COMPLETED = 108; + public final int EM_SSL_VERIFY = 109; + public final int EM_PROXY_TARGET_UNBOUND = 110; + public final int EM_PROXY_COMPLETED = 111; + + public final int EM_PROTO_SSLv2 = 2; + public final int EM_PROTO_SSLv3 = 4; + public final int EM_PROTO_TLSv1 = 8; + public final int EM_PROTO_TLSv1_1 = 16; + public final int EM_PROTO_TLSv1_2 = 32; + + private Selector mySelector; + private TreeMap> Timers; + private HashMap Connections; + private HashMap Acceptors; + private ArrayList NewConnections; + private ArrayList UnboundConnections; + private ArrayList DetachedConnections; + + private boolean bRunReactor; + private long BindingIndex; + private AtomicBoolean loopBreaker; + private ByteBuffer myReadBuffer; + private int timerQuantum; + + public EmReactor() { + Timers = new TreeMap>(); + Connections = new HashMap(); + Acceptors = new HashMap(); + NewConnections = new ArrayList(); + UnboundConnections = new ArrayList(); + DetachedConnections = new ArrayList(); + + BindingIndex = 0; + loopBreaker = new AtomicBoolean(); + loopBreaker.set(false); + myReadBuffer = ByteBuffer.allocate(32*1024); // don't use a direct buffer. Ruby doesn't seem to like them. + timerQuantum = 98; + } + + /** + * This is a no-op stub, intended to be overridden in user code. + */ + public void eventCallback (long sig, int eventType, ByteBuffer data, long data2) { + System.out.println ("Default callback: "+sig+" "+eventType+" "+data+" "+data2); + } + public void eventCallback (long sig, int eventType, ByteBuffer data) { + eventCallback (sig, eventType, data, 0); + } + + + public void run() { + try { + mySelector = Selector.open(); + bRunReactor = true; + } catch (IOException e) { + throw new RuntimeException ("Could not open selector", e); + } + + while (bRunReactor) { + runLoopbreaks(); + if (!bRunReactor) break; + + runTimers(); + if (!bRunReactor) break; + + removeUnboundConnections(); + checkIO(); + addNewConnections(); + processIO(); + } + + close(); + } + + void addNewConnections() { + ListIterator iter = DetachedConnections.listIterator(0); + while (iter.hasNext()) { + EventableSocketChannel ec = iter.next(); + ec.cleanup(); + } + DetachedConnections.clear(); + + ListIterator iter2 = NewConnections.listIterator(0); + while (iter2.hasNext()) { + long b = iter2.next(); + + EventableChannel ec = Connections.get(b); + if (ec != null) { + try { + ec.register(); + } catch (ClosedChannelException e) { + UnboundConnections.add (ec.getBinding()); + } + } + } + NewConnections.clear(); + } + + void removeUnboundConnections() { + ListIterator iter = UnboundConnections.listIterator(0); + while (iter.hasNext()) { + long b = iter.next(); + + EventableChannel ec = Connections.remove(b); + if (ec != null) { + eventCallback (b, EM_CONNECTION_UNBOUND, null); + ec.close(); + + EventableSocketChannel sc = (EventableSocketChannel) ec; + if (sc != null && sc.isAttached()) + DetachedConnections.add (sc); + } + } + UnboundConnections.clear(); + } + + void checkIO() { + long timeout; + + if (NewConnections.size() > 0) { + timeout = -1; + } else if (!Timers.isEmpty()) { + long now = new Date().getTime(); + long k = Timers.firstKey(); + long diff = k-now; + + if (diff <= 0) + timeout = -1; // don't wait, just poll once + else + timeout = diff; + } else { + timeout = 0; // wait indefinitely + } + + try { + if (timeout == -1) + mySelector.selectNow(); + else + mySelector.select(timeout); + } catch (IOException e) { + e.printStackTrace(); + } + } + + void processIO() { + Iterator it = mySelector.selectedKeys().iterator(); + while (it.hasNext()) { + SelectionKey k = it.next(); + it.remove(); + + if (k.isConnectable()) + isConnectable(k); + + else if (k.isAcceptable()) + isAcceptable(k); + + else { + if (k.isWritable()) + isWritable(k); + + if (k.isReadable()) + isReadable(k); + } + } + } + + void isAcceptable (SelectionKey k) { + ServerSocketChannel ss = (ServerSocketChannel) k.channel(); + SocketChannel sn; + long b; + + for (int n = 0; n < 10; n++) { + try { + sn = ss.accept(); + if (sn == null) + break; + } catch (IOException e) { + e.printStackTrace(); + k.cancel(); + + ServerSocketChannel server = Acceptors.remove(k.attachment()); + if (server != null) + try{ server.close(); } catch (IOException ex) {}; + break; + } + + try { + sn.configureBlocking(false); + } catch (IOException e) { + e.printStackTrace(); + continue; + } + + b = createBinding(); + EventableSocketChannel ec = new EventableSocketChannel (sn, b, mySelector); + Connections.put (b, ec); + NewConnections.add (b); + + eventCallback (((Long)k.attachment()).longValue(), EM_CONNECTION_ACCEPTED, null, b); + } + } + + void isReadable (SelectionKey k) { + EventableChannel ec = (EventableChannel) k.attachment(); + long b = ec.getBinding(); + + if (ec.isWatchOnly()) { + if (ec.isNotifyReadable()) + eventCallback (b, EM_CONNECTION_NOTIFY_READABLE, null); + } else { + myReadBuffer.clear(); + + try { + ec.readInboundData (myReadBuffer); + myReadBuffer.flip(); + if (myReadBuffer.limit() > 0) + eventCallback (b, EM_CONNECTION_READ, myReadBuffer); + } catch (IOException e) { + UnboundConnections.add (b); + } + } + } + + void isWritable (SelectionKey k) { + EventableChannel ec = (EventableChannel) k.attachment(); + long b = ec.getBinding(); + + if (ec.isWatchOnly()) { + if (ec.isNotifyWritable()) + eventCallback (b, EM_CONNECTION_NOTIFY_WRITABLE, null); + } + else { + try { + if (!ec.writeOutboundData()) + UnboundConnections.add (b); + } catch (IOException e) { + UnboundConnections.add (b); + } + } + } + + void isConnectable (SelectionKey k) { + EventableSocketChannel ec = (EventableSocketChannel) k.attachment(); + long b = ec.getBinding(); + + try { + if (ec.finishConnecting()) + eventCallback (b, EM_CONNECTION_COMPLETED, null); + else + UnboundConnections.add (b); + } catch (IOException e) { + UnboundConnections.add (b); + } + } + + void close() { + try { + if (mySelector != null) + mySelector.close(); + } catch (IOException e) {} + mySelector = null; + + // run down open connections and sockets. + Iterator i = Acceptors.values().iterator(); + while (i.hasNext()) { + try { + i.next().close(); + } catch (IOException e) {} + } + + // 29Sep09: We create an ArrayList of the existing connections, then iterate over + // that to call unbind on them. This is because an unbind can trigger a reconnect, + // which will add to the Connections HashMap, causing a ConcurrentModificationException. + // XXX: The correct behavior here would be to latch the various reactor methods to return + // immediately if the reactor is shutting down. + ArrayList conns = new ArrayList(); + Iterator i2 = Connections.values().iterator(); + while (i2.hasNext()) { + EventableChannel ec = i2.next(); + if (ec != null) { + conns.add (ec); + } + } + Connections.clear(); + + ListIterator i3 = conns.listIterator(0); + while (i3.hasNext()) { + EventableChannel ec = i3.next(); + eventCallback (ec.getBinding(), EM_CONNECTION_UNBOUND, null); + ec.close(); + + EventableSocketChannel sc = (EventableSocketChannel) ec; + if (sc != null && sc.isAttached()) + DetachedConnections.add (sc); + } + + ListIterator i4 = DetachedConnections.listIterator(0); + while (i4.hasNext()) { + EventableSocketChannel ec = i4.next(); + ec.cleanup(); + } + DetachedConnections.clear(); + } + + void runLoopbreaks() { + if (loopBreaker.getAndSet(false)) { + eventCallback (0, EM_LOOPBREAK_SIGNAL, null); + } + } + + public void stop() { + bRunReactor = false; + signalLoopbreak(); + } + + void runTimers() { + long now = new Date().getTime(); + while (!Timers.isEmpty()) { + long k = Timers.firstKey(); + if (k > now) + break; + + ArrayList callbacks = Timers.get(k); + Timers.remove(k); + + // Fire all timers at this timestamp + ListIterator iter = callbacks.listIterator(0); + while (iter.hasNext()) { + eventCallback (0, EM_TIMER_FIRED, null, iter.next().longValue()); + } + } + } + + public long installOneshotTimer (long milliseconds) { + long s = createBinding(); + long deadline = new Date().getTime() + milliseconds; + + if (Timers.containsKey(deadline)) { + Timers.get(deadline).add(s); + } else { + ArrayList callbacks = new ArrayList(); + callbacks.add(s); + Timers.put(deadline, callbacks); + } + + return s; + } + + public long startTcpServer (SocketAddress sa) throws EmReactorException { + try { + ServerSocketChannel server = ServerSocketChannel.open(); + server.configureBlocking(false); + server.socket().bind (sa); + long s = createBinding(); + Acceptors.put(s, server); + server.register(mySelector, SelectionKey.OP_ACCEPT, s); + return s; + } catch (IOException e) { + throw new EmReactorException ("unable to open socket acceptor: " + e.toString()); + } + } + + public long startTcpServer (String address, int port) throws EmReactorException { + return startTcpServer (new InetSocketAddress (address, port)); + } + + public void stopTcpServer (long signature) throws IOException { + ServerSocketChannel server = Acceptors.remove(signature); + if (server != null) + server.close(); + else + throw new RuntimeException ("failed to close unknown acceptor"); + } + + public long openUdpSocket (InetSocketAddress address) throws IOException { + // TODO, don't throw an exception out of here. + DatagramChannel dg = DatagramChannel.open(); + dg.configureBlocking(false); + dg.socket().bind(address); + long b = createBinding(); + EventableChannel ec = new EventableDatagramChannel (dg, b, mySelector); + dg.register(mySelector, SelectionKey.OP_READ, ec); + Connections.put(b, ec); + return b; + } + + public long openUdpSocket (String address, int port) throws IOException { + return openUdpSocket (new InetSocketAddress (address, port)); + } + + public void sendData (long sig, ByteBuffer bb) throws IOException { + Connections.get(sig).scheduleOutboundData( bb ); + } + + public void sendData (long sig, byte[] data) throws IOException { + sendData (sig, ByteBuffer.wrap(data)); + } + + public void setCommInactivityTimeout (long sig, long mills) { + Connections.get(sig).setCommInactivityTimeout (mills); + } + + public void sendDatagram (long sig, byte[] data, int length, String recipAddress, int recipPort) { + sendDatagram (sig, ByteBuffer.wrap(data), recipAddress, recipPort); + } + + public void sendDatagram (long sig, ByteBuffer bb, String recipAddress, int recipPort) { + (Connections.get(sig)).scheduleOutboundDatagram( bb, recipAddress, recipPort); + } + + public long connectTcpServer (String address, int port) { + return connectTcpServer(null, 0, address, port); + } + + public long connectTcpServer (String bindAddr, int bindPort, String address, int port) { + long b = createBinding(); + + try { + SocketChannel sc = SocketChannel.open(); + sc.configureBlocking(false); + if (bindAddr != null) + sc.socket().bind(new InetSocketAddress (bindAddr, bindPort)); + + EventableSocketChannel ec = new EventableSocketChannel (sc, b, mySelector); + + if (sc.connect (new InetSocketAddress (address, port))) { + // Connection returned immediately. Can happen with localhost connections. + // WARNING, this code is untested due to lack of available test conditions. + // Ought to be be able to come here from a localhost connection, but that + // doesn't happen on Linux. (Maybe on FreeBSD?) + // The reason for not handling this until we can test it is that we + // really need to return from this function WITHOUT triggering any EM events. + // That's because until the user code has seen the signature we generated here, + // it won't be able to properly dispatch them. The C++ EM deals with this + // by setting pending mode as a flag in ALL eventable descriptors and making + // the descriptor select for writable. Then, it can send UNBOUND and + // CONNECTION_COMPLETED on the next pass through the loop, because writable will + // fire. + throw new RuntimeException ("immediate-connect unimplemented"); + } + else { + ec.setConnectPending(); + Connections.put (b, ec); + NewConnections.add (b); + } + } catch (IOException e) { + // Can theoretically come here if a connect failure can be determined immediately. + // I don't know how to make that happen for testing purposes. + throw new RuntimeException ("immediate-connect unimplemented: " + e.toString()); + } + return b; + } + + public void closeConnection (long sig, boolean afterWriting) { + EventableChannel ec = Connections.get(sig); + if (ec != null) + if (ec.scheduleClose (afterWriting)) + UnboundConnections.add (sig); + } + + long createBinding() { + return ++BindingIndex; + } + + public void signalLoopbreak() { + loopBreaker.set(true); + if (mySelector != null) + mySelector.wakeup(); + } + + public void startTls (long sig) throws NoSuchAlgorithmException, KeyManagementException { + Connections.get(sig).startTls(); + } + + public void setTimerQuantum (int mills) { + if (mills < 5 || mills > 2500) + throw new RuntimeException ("attempt to set invalid timer-quantum value: "+mills); + timerQuantum = mills; + } + + public Object[] getPeerName (long sig) { + EventableChannel channel = Connections.get(sig); + if (channel != null) { + return Connections.get(sig).getPeerName(); + } + else { + ServerSocketChannel acceptor = Acceptors.get(sig); + return new Object[] { acceptor.socket().getLocalPort(), + acceptor.socket().getInetAddress().getHostAddress() }; + } + } + + public Object[] getSockName (long sig) { + EventableChannel channel = Connections.get(sig); + if (channel != null) { + return Connections.get(sig).getSockName(); + } + else { + ServerSocketChannel acceptor = Acceptors.get(sig); + return new Object[] { acceptor.socket().getLocalPort(), + acceptor.socket().getInetAddress().getHostAddress() }; + } + } + + public long attachChannel (SocketChannel sc, boolean watch_mode) { + long b = createBinding(); + + EventableSocketChannel ec = new EventableSocketChannel (sc, b, mySelector); + + ec.setAttached(); + if (watch_mode) + ec.setWatchOnly(); + + Connections.put (b, ec); + NewConnections.add (b); + + return b; + } + + public SocketChannel detachChannel (long sig) { + EventableSocketChannel ec = (EventableSocketChannel) Connections.get (sig); + if (ec != null) { + UnboundConnections.add (sig); + return ec.getChannel(); + } else { + return null; + } + } + + public void setNotifyReadable (long sig, boolean mode) { + ((EventableSocketChannel) Connections.get(sig)).setNotifyReadable(mode); + } + + public void setNotifyWritable (long sig, boolean mode) { + ((EventableSocketChannel) Connections.get(sig)).setNotifyWritable(mode); + } + + public boolean isNotifyReadable (long sig) { + return Connections.get(sig).isNotifyReadable(); + } + + public boolean isNotifyWritable (long sig) { + return Connections.get(sig).isNotifyWritable(); + } + + public boolean pauseConnection (long sig) { + return ((EventableSocketChannel) Connections.get(sig)).pause(); + } + + public boolean resumeConnection (long sig) { + return ((EventableSocketChannel) Connections.get(sig)).resume(); + } + + public boolean isConnectionPaused (long sig) { + return ((EventableSocketChannel) Connections.get(sig)).isPaused(); + } + + public long getOutboundDataSize (long sig) { + return Connections.get(sig).getOutboundDataSize(); + } + + public int getConnectionCount() { + return Connections.size() + Acceptors.size(); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactorException.java b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactorException.java new file mode 100644 index 0000000000..69efaa3ac4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EmReactorException.java @@ -0,0 +1,40 @@ +/** + * $Id$ + * + * Author:: Francis Cianfrocca (gmail: blackhedd) + * Homepage:: http://rubyeventmachine.com + * Date:: 15 Jul 2007 + * + * See EventMachine and EventMachine::Connection for documentation and + * usage examples. + * + * + *---------------------------------------------------------------------------- + * + * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + * Gmail: blackhedd + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of either: 1) the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version; or 2) Ruby's License. + * + * See the file COPYING for complete licensing information. + * + *--------------------------------------------------------------------------- + * + * + */ + +package com.rubyeventmachine; + +/** + * @author francis + * + */ +public class EmReactorException extends Exception { + static final long serialVersionUID = 0; + public EmReactorException (String msg) { + super (msg); + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableChannel.java b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableChannel.java new file mode 100644 index 0000000000..3d4f5fd022 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableChannel.java @@ -0,0 +1,72 @@ +/** + * $Id$ + * + * Author:: Francis Cianfrocca (gmail: blackhedd) + * Homepage:: http://rubyeventmachine.com + * Date:: 15 Jul 2007 + * + * See EventMachine and EventMachine::Connection for documentation and + * usage examples. + * + * + *---------------------------------------------------------------------------- + * + * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + * Gmail: blackhedd + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of either: 1) the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version; or 2) Ruby's License. + * + * See the file COPYING for complete licensing information. + * + *--------------------------------------------------------------------------- + * + * + */ + + +package com.rubyeventmachine; + +import java.nio.ByteBuffer; +import java.io.IOException; +import java.nio.channels.ClosedChannelException; + +public interface EventableChannel { + + public void scheduleOutboundData (ByteBuffer bb); + + public void scheduleOutboundDatagram (ByteBuffer bb, String recipAddress, int recipPort); + + public boolean scheduleClose (boolean afterWriting); + + public void startTls(); + + public long getBinding(); + + public void readInboundData (ByteBuffer dst) throws IOException; + + public void register() throws ClosedChannelException; + + /** + * This is called by the reactor after it finishes running. + * The idea is to free network resources. + */ + public void close(); + + public boolean writeOutboundData() throws IOException; + + public long getOutboundDataSize(); + + public void setCommInactivityTimeout (long seconds); + + public Object[] getPeerName(); + public Object[] getSockName(); + + public boolean isWatchOnly(); + + public boolean isNotifyReadable(); + public boolean isNotifyWritable(); + +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableDatagramChannel.java b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableDatagramChannel.java new file mode 100644 index 0000000000..df1c9fd26b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableDatagramChannel.java @@ -0,0 +1,201 @@ +/** + * $Id$ + * + * Author:: Francis Cianfrocca (gmail: blackhedd) + * Homepage:: http://rubyeventmachine.com + * Date:: 15 Jul 2007 + * + * See EventMachine and EventMachine::Connection for documentation and + * usage examples. + * + * + *---------------------------------------------------------------------------- + * + * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + * Gmail: blackhedd + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of either: 1) the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version; or 2) Ruby's License. + * + * See the file COPYING for complete licensing information. + * + *--------------------------------------------------------------------------- + * + * + */ + + +package com.rubyeventmachine; + +import java.nio.ByteBuffer; +import java.nio.channels.ClosedChannelException; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; +import java.nio.channels.DatagramChannel; +import java.util.LinkedList; +import java.io.*; +import java.net.*; + +public class EventableDatagramChannel implements EventableChannel { + + class Packet { + public ByteBuffer bb; + public SocketAddress recipient; + public Packet (ByteBuffer _bb, SocketAddress _recipient) { + bb = _bb; + recipient = _recipient; + } + } + + DatagramChannel channel; + long binding; + Selector selector; + boolean bCloseScheduled; + LinkedList outboundQ; + long outboundS; + SocketAddress returnAddress; + + + public EventableDatagramChannel (DatagramChannel dc, long _binding, Selector sel) throws ClosedChannelException { + channel = dc; + binding = _binding; + selector = sel; + bCloseScheduled = false; + outboundQ = new LinkedList(); + outboundS = 0; + + dc.register(selector, SelectionKey.OP_READ, this); + } + + public void scheduleOutboundData (ByteBuffer bb) { + try { + if ((!bCloseScheduled) && (bb.remaining() > 0)) { + outboundQ.addLast(new Packet(bb, returnAddress)); + outboundS += bb.remaining(); + channel.register(selector, SelectionKey.OP_WRITE | SelectionKey.OP_READ, this); + } + } catch (ClosedChannelException e) { + throw new RuntimeException ("no outbound data"); + } + } + + public void scheduleOutboundDatagram (ByteBuffer bb, String recipAddress, int recipPort) { + try { + if ((!bCloseScheduled) && (bb.remaining() > 0)) { + outboundQ.addLast(new Packet (bb, new InetSocketAddress (recipAddress, recipPort))); + outboundS += bb.remaining(); + channel.register(selector, SelectionKey.OP_WRITE | SelectionKey.OP_READ, this); + } + } catch (ClosedChannelException e) { + throw new RuntimeException ("no outbound data"); + } + } + + public boolean scheduleClose (boolean afterWriting) { + System.out.println ("NOT SCHEDULING CLOSE ON DATAGRAM"); + return false; + } + + public void startTls() { + throw new RuntimeException ("TLS is unimplemented on this Channel"); + } + + public long getBinding() { + return binding; + } + + public void register() throws ClosedChannelException { + // TODO + } + + /** + * Terminate with extreme prejudice. Don't assume there will be another pass through + * the reactor core. + */ + public void close() { + try { + channel.close(); + } catch (IOException e) { + } + } + + public void readInboundData (ByteBuffer dst) { + returnAddress = null; + try { + // If there is no datagram available (we're nonblocking after all), + // then channel.receive returns null. + returnAddress = channel.receive(dst); + } catch (IOException e) { + // probably a no-op. The caller will see the empty (or even partial) buffer + // and presumably do the right thing. + } + } + + public boolean writeOutboundData() { + while (!outboundQ.isEmpty()) { + Packet p = outboundQ.getFirst(); + int written = 0; + try { + // With a datagram socket, it's ok to send an empty buffer. + written = channel.send(p.bb, p.recipient); + outboundS -= written; + } + catch (IOException e) { + return false; + } + + /* Did we consume the whole outbound buffer? If yes, pop it off and + * keep looping. If no, the outbound network buffers are full, so break + * out of here. There's a flaw that affects outbound buffers that are intentionally + * empty. We can tell whether they got sent or not. So we assume they were. + * TODO: As implemented, this ALWAYS discards packets if they were at least + * partially written. This matches the behavior of the C++ EM. My judgment + * is that this is less surprising than fragmenting the data and sending multiple + * packets would be. I could be wrong, so this is subject to change. + */ + + if ((written > 0) || (p.bb.remaining() == 0)) + outboundQ.removeFirst(); + else + break; + } + + if (outboundQ.isEmpty()) { + try { + channel.register(selector, SelectionKey.OP_READ, this); + } catch (ClosedChannelException e) {} + } + + // ALWAYS drain the outbound queue before triggering a connection close. + // If anyone wants to close immediately, they're responsible for clearing + // the outbound queue. + return (bCloseScheduled && outboundQ.isEmpty()) ? false : true; + } + + public void setCommInactivityTimeout (long seconds) { + // TODO + System.out.println ("DATAGRAM: SET COMM INACTIVITY UNIMPLEMENTED " + seconds); + } + + public Object[] getPeerName () { + if (returnAddress != null) { + InetSocketAddress inetAddr = (InetSocketAddress) returnAddress; + return new Object[]{ inetAddr.getPort(), inetAddr.getHostName() }; + } else { + return null; + } + } + + public Object[] getSockName () { + DatagramSocket socket = channel.socket(); + return new Object[]{ socket.getLocalPort(), + socket.getLocalAddress().getHostAddress() }; + } + + public boolean isWatchOnly() { return false; } + public boolean isNotifyReadable() { return false; } + public boolean isNotifyWritable() { return false; } + public long getOutboundDataSize() { return outboundS; } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableSocketChannel.java b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableSocketChannel.java new file mode 100644 index 0000000000..2905ec6cfe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/java/src/com/rubyeventmachine/EventableSocketChannel.java @@ -0,0 +1,415 @@ +/** + * $Id$ + * + * Author:: Francis Cianfrocca (gmail: blackhedd) + * Homepage:: http://rubyeventmachine.com + * Date:: 15 Jul 2007 + * + * See EventMachine and EventMachine::Connection for documentation and + * usage examples. + * + * + *---------------------------------------------------------------------------- + * + * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. + * Gmail: blackhedd + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of either: 1) the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version; or 2) Ruby's License. + * + * See the file COPYING for complete licensing information. + * + *--------------------------------------------------------------------------- + * + * + */ + +/** + * + */ +package com.rubyeventmachine; + +/** + * @author francis + * + */ + +import java.nio.channels.*; +import java.nio.*; +import java.util.*; +import java.io.*; +import java.net.Socket; +import javax.net.ssl.*; +import javax.net.ssl.SSLEngineResult.*; +import java.lang.reflect.Field; + +import java.security.*; + +public class EventableSocketChannel implements EventableChannel { + Selector selector; + SelectionKey channelKey; + SocketChannel channel; + + long binding; + LinkedList outboundQ; + long outboundS; + + boolean bCloseScheduled; + boolean bConnectPending; + boolean bWatchOnly; + boolean bAttached; + boolean bNotifyReadable; + boolean bNotifyWritable; + boolean bPaused; + + SSLEngine sslEngine; + SSLContext sslContext; + + public EventableSocketChannel (SocketChannel sc, long _binding, Selector sel) { + channel = sc; + binding = _binding; + selector = sel; + bCloseScheduled = false; + bConnectPending = false; + bWatchOnly = false; + bAttached = false; + bNotifyReadable = false; + bNotifyWritable = false; + outboundQ = new LinkedList(); + outboundS = 0; + } + + public long getBinding() { + return binding; + } + + public SocketChannel getChannel() { + return channel; + } + + public void register() throws ClosedChannelException { + if (channelKey == null) { + int events = currentEvents(); + channelKey = channel.register(selector, events, this); + } + } + + /** + * Terminate with extreme prejudice. Don't assume there will be another pass through + * the reactor core. + */ + public void close() { + if (channelKey != null) { + channelKey.cancel(); + channelKey = null; + } + + if (bAttached) { + // attached channels are copies, so reset the file descriptor to prevent java from close()ing it + Field f; + FileDescriptor fd; + + try { + /* do _NOT_ clobber fdVal here, it will break epoll/kqueue on jdk6! + * channelKey.cancel() above does not occur until the next call to select + * and if fdVal is gone, we will continue to get events for this fd. + * + * instead, remove fdVal in cleanup(), which is processed via DetachedConnections, + * after UnboundConnections but before NewConnections. + */ + + f = channel.getClass().getDeclaredField("fd"); + f.setAccessible(true); + fd = (FileDescriptor) f.get(channel); + + f = fd.getClass().getDeclaredField("fd"); + f.setAccessible(true); + f.set(fd, -1); + } catch (java.lang.NoSuchFieldException e) { + e.printStackTrace(); + } catch (java.lang.IllegalAccessException e) { + e.printStackTrace(); + } + + return; + } + + try { + channel.close(); + } catch (IOException e) { + } + } + + public void cleanup() { + if (bAttached) { + Field f; + try { + f = channel.getClass().getDeclaredField("fdVal"); + f.setAccessible(true); + f.set(channel, -1); + } catch (java.lang.NoSuchFieldException e) { + e.printStackTrace(); + } catch (java.lang.IllegalAccessException e) { + e.printStackTrace(); + } + } + + channel = null; + } + + public void scheduleOutboundData (ByteBuffer bb) { + if (!bCloseScheduled && bb.remaining() > 0) { + if (sslEngine != null) { + try { + ByteBuffer b = ByteBuffer.allocate(32*1024); // TODO, preallocate this buffer. + sslEngine.wrap(bb, b); + b.flip(); + outboundQ.addLast(b); + outboundS += b.remaining(); + } catch (SSLException e) { + throw new RuntimeException ("ssl error"); + } + } + else { + outboundQ.addLast(bb); + outboundS += bb.remaining(); + } + + updateEvents(); + } + } + + public void scheduleOutboundDatagram (ByteBuffer bb, String recipAddress, int recipPort) { + throw new RuntimeException ("datagram sends not supported on this channel"); + } + + /** + * Called by the reactor when we have selected readable. + */ + public void readInboundData (ByteBuffer bb) throws IOException { + if (channel.read(bb) == -1) + throw new IOException ("eof"); + } + + public long getOutboundDataSize() { return outboundS; } + + /** + * Called by the reactor when we have selected writable. + * Return false to indicate an error that should cause the connection to close. + * TODO, VERY IMPORTANT: we're here because we selected writable, but it's always + * possible to become unwritable between the poll and when we get here. The way + * this code is written, we're depending on a nonblocking write NOT TO CONSUME + * the whole outbound buffer in this case, rather than firing an exception. + * We should somehow verify that this is indeed Java's defined behavior. + * @return + */ + public boolean writeOutboundData() throws IOException { + ByteBuffer[] bufs = new ByteBuffer[64]; + int i; + long written, toWrite; + while (!outboundQ.isEmpty()) { + i = 0; + toWrite = 0; + written = 0; + while (i < 64 && !outboundQ.isEmpty()) { + bufs[i] = outboundQ.removeFirst(); + toWrite += bufs[i].remaining(); + i++; + } + if (toWrite > 0) + written = channel.write(bufs, 0, i); + + outboundS -= written; + // Did we consume the whole outbound buffer? If yes, + // pop it off and keep looping. If no, the outbound network + // buffers are full, so break out of here. + if (written < toWrite) { + while (i > 0 && bufs[i-1].remaining() > 0) { + outboundQ.addFirst(bufs[i-1]); + i--; + } + break; + } + } + + if (outboundQ.isEmpty() && !bCloseScheduled) { + updateEvents(); + } + + // ALWAYS drain the outbound queue before triggering a connection close. + // If anyone wants to close immediately, they're responsible for clearing + // the outbound queue. + return (bCloseScheduled && outboundQ.isEmpty()) ? false : true; + } + + public void setConnectPending() { + bConnectPending = true; + updateEvents(); + } + + /** + * Called by the reactor when we have selected connectable. + * Return false to indicate an error that should cause the connection to close. + */ + public boolean finishConnecting() throws IOException { + channel.finishConnect(); + + bConnectPending = false; + updateEvents(); + return true; + } + + public boolean scheduleClose (boolean afterWriting) { + // TODO: What the hell happens here if bConnectPending is set? + if (!afterWriting) { + outboundQ.clear(); + outboundS = 0; + } + + if (outboundQ.isEmpty()) + return true; + else { + updateEvents(); + bCloseScheduled = true; + return false; + } + } + + public void startTls() { + if (sslEngine == null) { + try { + sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, null, null); // TODO, fill in the parameters. + sslEngine = sslContext.createSSLEngine(); // TODO, should use the parameterized version, to get Kerb stuff and session re-use. + sslEngine.setUseClientMode(false); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException ("unable to start TLS"); // TODO, get rid of this. + } catch (KeyManagementException e) { + throw new RuntimeException ("unable to start TLS"); // TODO, get rid of this. + } + } + System.out.println ("Starting TLS"); + } + + public ByteBuffer dispatchInboundData (ByteBuffer bb) throws SSLException { + if (sslEngine != null) { + if (true) throw new RuntimeException ("TLS currently unimplemented"); + System.setProperty("javax.net.debug", "all"); + ByteBuffer w = ByteBuffer.allocate(32*1024); // TODO, WRONG, preallocate this buffer. + SSLEngineResult res = sslEngine.unwrap(bb, w); + if (res.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { + Runnable r; + while ((r = sslEngine.getDelegatedTask()) != null) { + r.run(); + } + } + System.out.println (bb); + w.flip(); + return w; + } + else + return bb; + } + + public void setCommInactivityTimeout (long seconds) { + // TODO + System.out.println ("SOCKET: SET COMM INACTIVITY UNIMPLEMENTED " + seconds); + } + + public Object[] getPeerName () { + Socket sock = channel.socket(); + return new Object[]{ sock.getPort(), sock.getInetAddress().getHostAddress() }; + } + + public Object[] getSockName () { + Socket sock = channel.socket(); + return new Object[]{ sock.getLocalPort(), + sock.getLocalAddress().getHostAddress() }; + } + + public void setWatchOnly() { + bWatchOnly = true; + updateEvents(); + } + public boolean isWatchOnly() { return bWatchOnly; } + + public void setAttached() { + bAttached = true; + } + public boolean isAttached() { return bAttached; } + + public void setNotifyReadable (boolean mode) { + bNotifyReadable = mode; + updateEvents(); + } + public boolean isNotifyReadable() { return bNotifyReadable; } + + public void setNotifyWritable (boolean mode) { + bNotifyWritable = mode; + updateEvents(); + } + public boolean isNotifyWritable() { return bNotifyWritable; } + + public boolean pause() { + if (bWatchOnly) { + throw new RuntimeException ("cannot pause/resume 'watch only' connections, set notify readable/writable instead"); + } + boolean old = bPaused; + bPaused = true; + updateEvents(); + return !old; + } + + public boolean resume() { + if (bWatchOnly) { + throw new RuntimeException ("cannot pause/resume 'watch only' connections, set notify readable/writable instead"); + } + boolean old = bPaused; + bPaused = false; + updateEvents(); + return old; + } + + public boolean isPaused() { + return bPaused; + } + + private void updateEvents() { + if (channelKey == null) + return; + + int events = currentEvents(); + + if (channelKey.interestOps() != events) { + channelKey.interestOps(events); + } + } + + private int currentEvents() { + int events = 0; + + if (bWatchOnly) + { + if (bNotifyReadable) + events |= SelectionKey.OP_READ; + + if (bNotifyWritable) + events |= SelectionKey.OP_WRITE; + } + else if (!bPaused) + { + if (bConnectPending) + events |= SelectionKey.OP_CONNECT; + else { + events |= SelectionKey.OP_READ; + + if (!outboundQ.isEmpty()) + events |= SelectionKey.OP_WRITE; + } + } + + return events; + } +} diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/buftok.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/buftok.rb new file mode 100644 index 0000000000..caf4f77056 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/buftok.rb @@ -0,0 +1,59 @@ +# BufferedTokenizer takes a delimiter upon instantiation, or acts line-based +# by default. It allows input to be spoon-fed from some outside source which +# receives arbitrary length datagrams which may-or-may-not contain the token +# by which entities are delimited. In this respect it's ideally paired with +# something like EventMachine (http://rubyeventmachine.com/). +class BufferedTokenizer + # New BufferedTokenizers will operate on lines delimited by a delimiter, + # which is by default the global input delimiter $/ ("\n"). + # + # The input buffer is stored as an array. This is by far the most efficient + # approach given language constraints (in C a linked list would be a more + # appropriate data structure). Segments of input data are stored in a list + # which is only joined when a token is reached, substantially reducing the + # number of objects required for the operation. + def initialize(delimiter = $/) + @delimiter = delimiter + @input = [] + @tail = '' + @trim = @delimiter.length - 1 + end + + # Extract takes an arbitrary string of input data and returns an array of + # tokenized entities, provided there were any available to extract. This + # makes for easy processing of datagrams using a pattern like: + # + # tokenizer.extract(data).map { |entity| Decode(entity) }.each do ... + # + # Using -1 makes split to return "" if the token is at the end of + # the string, meaning the last element is the start of the next chunk. + def extract(data) + if @trim > 0 + tail_end = @tail.slice!(-@trim, @trim) # returns nil if string is too short + data = tail_end + data if tail_end + end + + @input << @tail + entities = data.split(@delimiter, -1) + @tail = entities.shift + + unless entities.empty? + @input << @tail + entities.unshift @input.join + @input.clear + @tail = entities.pop + end + + entities + end + + # Flush the contents of the input buffer, i.e. return the input buffer even though + # a token has not yet been encountered + def flush + @input << @tail + buffer = @input.join + @input.clear + @tail = "" # @tail.clear is slightly faster, but not supported on 1.8.7 + buffer + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/callback.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/callback.rb new file mode 100644 index 0000000000..4928febc82 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/callback.rb @@ -0,0 +1,58 @@ +module EventMachine + # Utility method for coercing arguments to an object that responds to :call. + # Accepts an object and a method name to send to, or a block, or an object + # that responds to :call. + # + # @example EventMachine.Callback used with a block. Returns that block. + # + # cb = EventMachine.Callback do |msg| + # puts(msg) + # end + # # returned object is a callable + # cb.call('hello world') + # + # + # @example EventMachine.Callback used with an object (to be more specific, class object) and a method name, returns an object that responds to #call + # + # cb = EventMachine.Callback(Object, :puts) + # # returned object is a callable that delegates to Kernel#puts (in this case Object.puts) + # cb.call('hello world') + # + # + # @example EventMachine.Callback used with an object that responds to #call. Returns the argument. + # + # cb = EventMachine.Callback(proc{ |msg| puts(msg) }) + # # returned object is a callable + # cb.call('hello world') + # + # + # @overload Callback(object, method) + # Wraps `method` invocation on `object` into an object that responds to #call that proxies all the arguments to that method + # @param [Object] Object to invoke method on + # @param [Symbol] Method name + # @return [<#call>] An object that responds to #call that takes any number of arguments and invokes method on object with those arguments + # + # @overload Callback(object) + # Returns callable object as is, without any coercion + # @param [<#call>] An object that responds to #call + # @return [<#call>] Its argument + # + # @overload Callback(&block) + # Returns block passed to it without any coercion + # @return [<#call>] Block passed to this method + # + # @raise [ArgumentError] When argument doesn't respond to #call, method name is missing or when invoked without arguments and block isn't given + # + # @return [<#call>] + def self.Callback(object = nil, method = nil, &blk) + if object && method + lambda { |*args| object.__send__ method, *args } + else + if object.respond_to? :call + object + else + blk || raise(ArgumentError) + end # if + end # if + end # self.Callback +end # EventMachine diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/channel.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/channel.rb new file mode 100644 index 0000000000..a919adff43 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/channel.rb @@ -0,0 +1,69 @@ +module EventMachine + # Provides a simple thread-safe way to transfer data between (typically) long running + # tasks in {EventMachine.defer} and event loop thread. + # + # @example + # + # channel = EventMachine::Channel.new + # sid = channel.subscribe { |msg| p [:got, msg] } + # + # channel.push('hello world') + # channel.unsubscribe(sid) + # + # + class Channel + def initialize + @subs = {} + @uid = 0 + end + + # Return the number of current subscribers. + def num_subscribers + return @subs.size + end + + # Takes any arguments suitable for EM::Callback() and returns a subscriber + # id for use when unsubscribing. + # + # @return [Integer] Subscribe identifier + # @see #unsubscribe + def subscribe(*a, &b) + name = gen_id + EM.schedule { @subs[name] = EM::Callback(*a, &b) } + + name + end + + # Removes subscriber from the list. + # + # @param [Integer] Subscriber identifier + # @see #subscribe + def unsubscribe(name) + EM.schedule { @subs.delete name } + end + + # Add items to the channel, which are pushed out to all subscribers. + def push(*items) + items = items.dup + EM.schedule { items.each { |i| @subs.values.each { |s| s.call i } } } + end + alias << push + + # Fetches one message from the channel. + def pop(*a, &b) + EM.schedule { + name = subscribe do |*args| + unsubscribe(name) + EM::Callback(*a, &b).call(*args) + end + } + end + + private + + # @private + def gen_id + @uid += 1 + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/completion.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/completion.rb new file mode 100644 index 0000000000..926535fd29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/completion.rb @@ -0,0 +1,304 @@ +# = EM::Completion +# +# A completion is a callback container for various states of completion. In +# its most basic form it has a start state and a finish state. +# +# This implementation includes some hold-back from the EM::Deferrable +# interface in order to be compatible - but it has a much cleaner +# implementation. +# +# In general it is preferred that this implementation be used as a state +# callback container than EM::DefaultDeferrable or other classes including +# EM::Deferrable. This is because it is generally more sane to keep this level +# of state in a dedicated state-back container. This generally leads to more +# malleable interfaces and software designs, as well as eradicating nasty bugs +# that result from abstraction leakage. +# +# == Basic Usage +# +# As already mentioned, the basic usage of a Completion is simply for its two +# final states, :succeeded and :failed. +# +# An asynchronous operation will complete at some future point in time, and +# users often want to react to this event. API authors will want to expose +# some common interface to react to these events. +# +# In the following example, the user wants to know when a short lived +# connection has completed its exchange with the remote server. The simple +# protocol just waits for an ack to its message. +# +# class Protocol < EM::Connection +# include EM::P::LineText2 +# +# def initialize(message, completion) +# @message, @completion = message, completion +# @completion.completion { close_connection } +# @completion.timeout(1, :timeout) +# end +# +# def post_init +# send_data(@message) +# end +# +# def receive_line(line) +# case line +# when /ACK/i +# @completion.succeed line +# when /ERR/i +# @completion.fail :error, line +# else +# @completion.fail :unknown, line +# end +# end +# +# def unbind +# @completion.fail :disconnected unless @completion.completed? +# end +# end +# +# class API +# attr_reader :host, :port +# +# def initialize(host = 'example.org', port = 8000) +# @host, @port = host, port +# end +# +# def request(message) +# completion = EM::Deferrable::Completion.new +# EM.connect(host, port, Protocol, message, completion) +# completion +# end +# end +# +# api = API.new +# completion = api.request('stuff') +# completion.callback do |line| +# puts "API responded with: #{line}" +# end +# completion.errback do |type, line| +# case type +# when :error +# puts "API error: #{line}" +# when :unknown +# puts "API returned unknown response: #{line}" +# when :disconnected +# puts "API server disconnected prematurely" +# when :timeout +# puts "API server did not respond in a timely fashion" +# end +# end +# +# == Advanced Usage +# +# This completion implementation also supports more state callbacks and +# arbitrary states (unlike the original Deferrable API). This allows for basic +# stateful process encapsulation. One might use this to setup state callbacks +# for various states in an exchange like in the basic usage example, except +# where the applicaiton could be made to react to "connected" and +# "disconnected" states additionally. +# +# class Protocol < EM::Connection +# def initialize(completion) +# @response = [] +# @completion = completion +# @completion.stateback(:disconnected) do +# @completion.succeed @response.join +# end +# end +# +# def connection_completed +# @host, @port = Socket.unpack_sockaddr_in get_peername +# @completion.change_state(:connected, @host, @port) +# send_data("GET http://example.org/ HTTP/1.0\r\n\r\n") +# end +# +# def receive_data(data) +# @response << data +# end +# +# def unbind +# @completion.change_state(:disconnected, @host, @port) +# end +# end +# +# completion = EM::Deferrable::Completion.new +# completion.stateback(:connected) do |host, port| +# puts "Connected to #{host}:#{port}" +# end +# completion.stateback(:disconnected) do |host, port| +# puts "Disconnected from #{host}:#{port}" +# end +# completion.callback do |response| +# puts response +# end +# +# EM.connect('example.org', 80, Protocol, completion) +# +# == Timeout +# +# The Completion also has a timeout. The timeout is global and is not aware of +# states apart from completion states. The timeout is only engaged if #timeout +# is called, and it will call fail if it is reached. +# +# == Completion states +# +# By default there are two completion states, :succeeded and :failed. These +# states can be modified by subclassing and overrding the #completion_states +# method. Completion states are special, in that callbacks for all completion +# states are explcitly cleared when a completion state is entered. This +# prevents errors that could arise from accidental unterminated timeouts, and +# other such user errors. +# +# == Other notes +# +# Several APIs have been carried over from EM::Deferrable for compatibility +# reasons during a transitionary period. Specifically cancel_errback and +# cancel_callback are implemented, but their usage is to be strongly +# discouraged. Due to the already complex nature of reaction systems, dynamic +# callback deletion only makes the problem much worse. It is always better to +# add correct conditionals to the callback code, or use more states, than to +# address such implementaiton issues with conditional callbacks. + +module EventMachine + + class Completion + # This is totally not used (re-implemented), it's here in case people check + # for kind_of? + include EventMachine::Deferrable + + attr_reader :state, :value + + def initialize + @state = :unknown + @callbacks = Hash.new { |h,k| h[k] = [] } + @value = [] + @timeout_timer = nil + end + + # Enter the :succeeded state, setting the result value if given. + def succeed(*args) + change_state(:succeeded, *args) + end + # The old EM method: + alias set_deferred_success succeed + + # Enter the :failed state, setting the result value if given. + def fail(*args) + change_state(:failed, *args) + end + # The old EM method: + alias set_deferred_failure fail + + # Statebacks are called when you enter (or are in) the named state. + def stateback(state, *a, &b) + # The following is quite unfortunate special casing for :completed + # statebacks, but it's a necessary evil for latent completion + # definitions. + + if :completed == state || !completed? || @state == state + @callbacks[state] << EM::Callback(*a, &b) + end + execute_callbacks + self + end + + # Callbacks are called when you enter (or are in) a :succeeded state. + def callback(*a, &b) + stateback(:succeeded, *a, &b) + end + + # Errbacks are called when you enter (or are in) a :failed state. + def errback(*a, &b) + stateback(:failed, *a, &b) + end + + # Completions are called when you enter (or are in) either a :failed or a + # :succeeded state. They are stored as a special (reserved) state called + # :completed. + def completion(*a, &b) + stateback(:completed, *a, &b) + end + + # Enter a new state, setting the result value if given. If the state is one + # of :succeeded or :failed, then :completed callbacks will also be called. + def change_state(state, *args) + @value = args + @state = state + + EM.schedule { execute_callbacks } + end + + # The old EM method: + alias set_deferred_status change_state + + # Indicates that we've reached some kind of completion state, by default + # this is :succeeded or :failed. Due to these semantics, the :completed + # state is reserved for internal use. + def completed? + completion_states.any? { |s| state == s } + end + + # Completion states simply returns a list of completion states, by default + # this is :succeeded and :failed. + def completion_states + [:succeeded, :failed] + end + + # Schedule a time which if passes before we enter a completion state, this + # deferrable will be failed with the given arguments. + def timeout(time, *args) + cancel_timeout + @timeout_timer = EM::Timer.new(time) do + fail(*args) unless completed? + end + end + + # Disable the timeout + def cancel_timeout + if @timeout_timer + @timeout_timer.cancel + @timeout_timer = nil + end + end + + # Remove an errback. N.B. Some errbacks cannot be deleted. Usage is NOT + # recommended, this is an anti-pattern. + def cancel_errback(*a, &b) + @callbacks[:failed].delete(EM::Callback(*a, &b)) + end + + # Remove a callback. N.B. Some callbacks cannot be deleted. Usage is NOT + # recommended, this is an anti-pattern. + def cancel_callback(*a, &b) + @callbacks[:succeeded].delete(EM::Callback(*a, &b)) + end + + private + # Execute all callbacks for the current state. If in a completed state, then + # call any statebacks associated with the completed state. + def execute_callbacks + execute_state_callbacks(state) + if completed? + execute_state_callbacks(:completed) + clear_dead_callbacks + cancel_timeout + end + end + + # Iterate all callbacks for a given state, and remove then call them. + def execute_state_callbacks(state) + while callback = @callbacks[state].shift + callback.call(*value) + end + end + + # If we enter a completion state, clear other completion states after all + # callback chains are completed. This means that operation specific + # callbacks can't be dual-called, which is most common user error. + def clear_dead_callbacks + completion_states.each do |state| + @callbacks[state].clear + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb new file mode 100644 index 0000000000..267aec2d0f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb @@ -0,0 +1,770 @@ +module EventMachine + class FileNotFoundException < Exception + end + + # EventMachine::Connection is a class that is instantiated + # by EventMachine's processing loop whenever a new connection + # is created. (New connections can be either initiated locally + # to a remote server or accepted locally from a remote client.) + # When a Connection object is instantiated, it mixes in + # the functionality contained in the user-defined module + # specified in calls to {EventMachine.connect} or {EventMachine.start_server}. + # User-defined handler modules may redefine any or all of the standard + # methods defined here, as well as add arbitrary additional code + # that will also be mixed in. + # + # EventMachine manages one object inherited from EventMachine::Connection + # (and containing the mixed-in user code) for every network connection + # that is active at any given time. + # The event loop will automatically call methods on EventMachine::Connection + # objects whenever specific events occur on the corresponding connections, + # as described below. + # + # This class is never instantiated by user code, and does not publish an + # initialize method. The instance methods of EventMachine::Connection + # which may be called by the event loop are: + # + # * {#post_init} + # * {#connection_completed} + # * {#receive_data} + # * {#unbind} + # * {#ssl_verify_peer} (if TLS is used) + # * {#ssl_handshake_completed} + # + # All of the other instance methods defined here are called only by user code. + # + # @see file:docs/GettingStarted.md EventMachine tutorial + class Connection + # @private + attr_accessor :signature + + # @private + alias original_method method + + # Override .new so subclasses don't have to call super and can ignore + # connection-specific arguments + # + # @private + def self.new(sig, *args) + allocate.instance_eval do + # Store signature + @signature = sig + # associate_callback_target sig + + # Call a superclass's #initialize if it has one + initialize(*args) + + # post initialize callback + post_init + + self + end + end + + # Stubbed initialize so legacy superclasses can safely call super + # + # @private + def initialize(*args) + end + + # Called by the event loop immediately after the network connection has been established, + # and before resumption of the network loop. + # This method is generally not called by user code, but is called automatically + # by the event loop. The base-class implementation is a no-op. + # This is a very good place to initialize instance variables that will + # be used throughout the lifetime of the network connection. + # + # @see #connection_completed + # @see #unbind + # @see #send_data + # @see #receive_data + def post_init + end + + # Called by the event loop whenever data has been received by the network connection. + # It is never called by user code. {#receive_data} is called with a single parameter, a String containing + # the network protocol data, which may of course be binary. You will + # generally redefine this method to perform your own processing of the incoming data. + # + # Here's a key point which is essential to understanding the event-driven + # programming model: EventMachine knows absolutely nothing about the protocol + # which your code implements. You must not make any assumptions about + # the size of the incoming data packets, or about their alignment on any + # particular intra-message or PDU boundaries (such as line breaks). + # receive_data can and will send you arbitrary chunks of data, with the + # only guarantee being that the data is presented to your code in the order + # it was collected from the network. Don't even assume that the chunks of + # data will correspond to network packets, as EventMachine can and will coalesce + # several incoming packets into one, to improve performance. The implication for your + # code is that you generally will need to implement some kind of a state machine + # in your redefined implementation of receive_data. For a better understanding + # of this, read through the examples of specific protocol handlers in EventMachine::Protocols + # + # The base-class implementation (which will be invoked only if you didn't override it in your protocol handler) + # simply prints incoming data packet size to stdout. + # + # @param [String] data Opaque incoming data. + # @note Depending on the protocol, buffer sizes and OS networking stack configuration, incoming data may or may not be "a complete message". + # It is up to this handler to detect content boundaries to determine whether all the content (for example, full HTTP request) + # has been received and can be processed. + # + # @see #post_init + # @see #connection_completed + # @see #unbind + # @see #send_data + # @see file:docs/GettingStarted.md EventMachine tutorial + def receive_data data + puts "............>>>#{data.length}" + end + + # Called by EventMachine when the SSL/TLS handshake has + # been completed, as a result of calling #start_tls to initiate SSL/TLS on the connection. + # + # This callback exists because {#post_init} and {#connection_completed} are **not** reliable + # for indicating when an SSL/TLS connection is ready to have its certificate queried for. + # + # @see #get_peer_cert + def ssl_handshake_completed + end + + # Called by EventMachine when :verify_peer => true has been passed to {#start_tls}. + # It will be called with each certificate in the certificate chain provided by the remote peer. + # + # The cert will be passed as a String in PEM format, the same as in {#get_peer_cert}. It is up to user defined + # code to perform a check on the certificates. The return value from this callback is used to accept or deny the peer. + # A return value that is not nil or false triggers acceptance. If the peer is not accepted, the connection + # will be subsequently closed. + # + # @example This server always accepts all peers + # + # module AcceptServer + # def post_init + # start_tls(:verify_peer => true) + # end + # + # def ssl_verify_peer(cert) + # true + # end + # + # def ssl_handshake_completed + # $server_handshake_completed = true + # end + # end + # + # + # @example This server never accepts any peers + # + # module DenyServer + # def post_init + # start_tls(:verify_peer => true) + # end + # + # def ssl_verify_peer(cert) + # # Do not accept the peer. This should now cause the connection to shut down + # # without the SSL handshake being completed. + # false + # end + # + # def ssl_handshake_completed + # $server_handshake_completed = true + # end + # end + # + # @see #start_tls + def ssl_verify_peer(cert) + end + + # called by the framework whenever a connection (either a server or client connection) is closed. + # The close can occur because your code intentionally closes it (using {#close_connection} and {#close_connection_after_writing}), + # because the remote peer closed the connection, or because of a network error. + # You may not assume that the network connection is still open and able to send or + # receive data when the callback to unbind is made. This is intended only to give + # you a chance to clean up associations your code may have made to the connection + # object while it was open. + # + # If you want to detect which peer has closed the connection, you can override {#close_connection} in your protocol handler + # and set an @ivar. + # + # @example Overriding Connection#close_connection to distinguish connections closed on our side + # + # class MyProtocolHandler < EventMachine::Connection + # + # # ... + # + # def close_connection(*args) + # @intentionally_closed_connection = true + # super(*args) + # end + # + # def unbind + # if @intentionally_closed_connection + # # ... + # end + # end + # + # # ... + # + # end + # + # @see #post_init + # @see #connection_completed + # @see file:docs/GettingStarted.md EventMachine tutorial + def unbind + end + + # Called by the reactor after attempting to relay incoming data to a descriptor (set as a proxy target descriptor with + # {EventMachine.enable_proxy}) that has already been closed. + # + # @see EventMachine.enable_proxy + def proxy_target_unbound + end + + # called when the reactor finished proxying all + # of the requested bytes. + def proxy_completed + end + + # EventMachine::Connection#proxy_incoming_to is called only by user code. It sets up + # a low-level proxy relay for all data inbound for this connection, to the connection given + # as the argument. This is essentially just a helper method for enable_proxy. + # + # @see EventMachine.enable_proxy + def proxy_incoming_to(conn,bufsize=0) + EventMachine::enable_proxy(self, conn, bufsize) + end + + # A helper method for {EventMachine.disable_proxy} + def stop_proxying + EventMachine::disable_proxy(self) + end + + # The number of bytes proxied to another connection. Reset to zero when + # EventMachine::Connection#proxy_incoming_to is called, and incremented whenever data is proxied. + def get_proxied_bytes + EventMachine::get_proxied_bytes(@signature) + end + + # EventMachine::Connection#close_connection is called only by user code, and never + # by the event loop. You may call this method against a connection object in any + # callback handler, whether or not the callback was made against the connection + # you want to close. close_connection schedules the connection to be closed + # at the next available opportunity within the event loop. You may not assume that + # the connection is closed when close_connection returns. In particular, the framework + # will callback the unbind method for the particular connection at a point shortly + # after you call close_connection. You may assume that the unbind callback will + # take place sometime after your call to close_connection completes. In other words, + # the unbind callback will not re-enter your code "inside" of your call to close_connection. + # However, it's not guaranteed that a future version of EventMachine will not change + # this behavior. + # + # {#close_connection} will *silently discard* any outbound data which you have + # sent to the connection using {EventMachine::Connection#send_data} but which has not + # yet been sent across the network. If you want to avoid this behavior, use + # {EventMachine::Connection#close_connection_after_writing}. + # + def close_connection after_writing = false + EventMachine::close_connection @signature, after_writing + end + + # Removes given connection from the event loop. + # The connection's socket remains open and its file descriptor number is returned. + def detach + EventMachine::detach_fd @signature + end + + def get_sock_opt level, option + EventMachine::get_sock_opt @signature, level, option + end + + def set_sock_opt level, optname, optval + EventMachine::set_sock_opt @signature, level, optname, optval + end + + # A variant of {#close_connection}. + # All of the descriptive comments given for close_connection also apply to + # close_connection_after_writing, *with one exception*: if the connection has + # outbound data sent using send_dat but which has not yet been sent across the network, + # close_connection_after_writing will schedule the connection to be closed *after* + # all of the outbound data has been safely written to the remote peer. + # + # Depending on the amount of outgoing data and the speed of the network, + # considerable time may elapse between your call to close_connection_after_writing + # and the actual closing of the socket (at which time the unbind callback will be called + # by the event loop). During this time, you *may not* call send_data to transmit + # additional data (that is, the connection is closed for further writes). In very + # rare cases, you may experience a receive_data callback after your call to {#close_connection_after_writing}, + # depending on whether incoming data was in the process of being received on the connection + # at the moment when you called {#close_connection_after_writing}. Your protocol handler must + # be prepared to properly deal with such data (probably by ignoring it). + # + # @see #close_connection + # @see #send_data + def close_connection_after_writing + close_connection true + end + + # Call this method to send data to the remote end of the network connection. It takes a single String argument, + # which may contain binary data. Data is buffered to be sent at the end of this event loop tick (cycle). + # + # When used in a method that is event handler (for example, {#post_init} or {#connection_completed}, it will send + # data to the other end of the connection that generated the event. + # You can also call {#send_data} to write to other connections. For more information see The Chat Server Example in the + # {file:docs/GettingStarted.md EventMachine tutorial}. + # + # If you want to send some data and then immediately close the connection, make sure to use {#close_connection_after_writing} + # instead of {#close_connection}. + # + # + # @param [String] data Data to send asynchronously + # + # @see file:docs/GettingStarted.md EventMachine tutorial + # @see Connection#receive_data + # @see Connection#post_init + # @see Connection#unbind + def send_data data + data = data.to_s + size = data.bytesize if data.respond_to?(:bytesize) + size ||= data.size + EventMachine::send_data @signature, data, size + end + + # Returns true if the connection is in an error state, false otherwise. + # + # In general, you can detect the occurrence of communication errors or unexpected + # disconnection by the remote peer by handing the {#unbind} method. In some cases, however, + # it's useful to check the status of the connection using {#error?} before attempting to send data. + # This function is synchronous but it will return immediately without blocking. + # + # @return [Boolean] true if the connection is in an error state, false otherwise + def error? + errno = EventMachine::report_connection_error_status(@signature) + case errno + when 0 + false + when -1 + true + else + EventMachine::ERRNOS[errno] + end + end + + # Called by the event loop when a remote TCP connection attempt completes successfully. + # You can expect to get this notification after calls to {EventMachine.connect}. Remember that EventMachine makes remote connections + # asynchronously, just as with any other kind of network event. This method + # is intended primarily to assist with network diagnostics. For normal protocol + # handling, use #post_init to perform initial work on a new connection (such as sending initial set of data). + # {Connection#post_init} will always be called. This method will only be called in case of a successful completion. + # A connection attempt which fails will result a call to {Connection#unbind} after the failure. + # + # @see Connection#post_init + # @see Connection#unbind + # @see file:docs/GettingStarted.md EventMachine tutorial + def connection_completed + end + + # Call {#start_tls} at any point to initiate TLS encryption on connected streams. + # The method is smart enough to know whether it should perform a server-side + # or a client-side handshake. An appropriate place to call {#start_tls} is in + # your redefined {#post_init} method, or in the {#connection_completed} handler for + # an outbound connection. + # + # + # @option args [String] :cert_chain_file (nil) local path of a readable file that contants a chain of X509 certificates in + # the [PEM format](http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail), + # with the most-resolved certificate at the top of the file, successive intermediate + # certs in the middle, and the root (or CA) cert at the bottom. + # + # @option args [String] :private_key_file (nil) local path of a readable file that must contain a private key in the [PEM format](http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail). + # + # @option args [Boolean] :verify_peer (false) indicates whether a server should request a certificate from a peer, to be verified by user code. + # If true, the {#ssl_verify_peer} callback on the {EventMachine::Connection} object is called with each certificate + # in the certificate chain provided by the peer. See documentation on {#ssl_verify_peer} for how to use this. + # + # @option args [Boolean] :fail_if_no_peer_cert (false) Used in conjunction with verify_peer. If set the SSL handshake will be terminated if the peer does not provide a certificate. + # + # + # @option args [String] :cipher_list ("ALL:!ADH:!LOW:!EXP:!DES-CBC3-SHA:@STRENGTH") indicates the available SSL cipher values. Default value is "ALL:!ADH:!LOW:!EXP:!DES-CBC3-SHA:@STRENGTH". Check the format of the OpenSSL cipher string at http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT. + # + # @option args [String] :ecdh_curve (nil) The curve for ECDHE ciphers. See available ciphers with 'openssl ecparam -list_curves' + # + # @option args [String] :dhparam (nil) The local path of a file containing DH parameters for EDH ciphers in [PEM format](http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail) See: 'openssl dhparam' + # + # @option args [Array] :ssl_version (TLSv1 TLSv1_1 TLSv1_2) indicates the allowed SSL/TLS versions. Possible values are: {SSLv2}, {SSLv3}, {TLSv1}, {TLSv1_1}, {TLSv1_2}. + # + # @example Using TLS with EventMachine + # + # require 'rubygems' + # require 'eventmachine' + # + # module Handler + # def post_init + # start_tls(:private_key_file => '/tmp/server.key', :cert_chain_file => '/tmp/server.crt', :verify_peer => false) + # end + # end + # + # EventMachine.run do + # EventMachine.start_server("127.0.0.1", 9999, Handler) + # end + # + # @param [Hash] args + # + # @todo support passing an encryption parameter, which can be string or Proc, to get a passphrase + # for encrypted private keys. + # @todo support passing key material via raw strings or Procs that return strings instead of + # just filenames. + # + # @see #ssl_verify_peer + def start_tls args={} + priv_key = args[:private_key_file] + cert_chain = args[:cert_chain_file] + verify_peer = args[:verify_peer] + sni_hostname = args[:sni_hostname] + cipher_list = args[:cipher_list] + ssl_version = args[:ssl_version] + ecdh_curve = args[:ecdh_curve] + dhparam = args[:dhparam] + fail_if_no_peer_cert = args[:fail_if_no_peer_cert] + + [priv_key, cert_chain].each do |file| + next if file.nil? or file.empty? + raise FileNotFoundException, + "Could not find #{file} for start_tls" unless File.exist? file + end + + protocols_bitmask = 0 + if ssl_version.nil? + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1 + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1_1 + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1_2 + else + [ssl_version].flatten.each do |p| + case p.to_s.downcase + when 'sslv2' + protocols_bitmask |= EventMachine::EM_PROTO_SSLv2 + when 'sslv3' + protocols_bitmask |= EventMachine::EM_PROTO_SSLv3 + when 'tlsv1' + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1 + when 'tlsv1_1' + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1_1 + when 'tlsv1_2' + protocols_bitmask |= EventMachine::EM_PROTO_TLSv1_2 + else + raise("Unrecognized SSL/TLS Protocol: #{p}") + end + end + end + + EventMachine::set_tls_parms(@signature, priv_key || '', cert_chain || '', verify_peer, fail_if_no_peer_cert, sni_hostname || '', cipher_list || '', ecdh_curve || '', dhparam || '', protocols_bitmask) + EventMachine::start_tls @signature + end + + # If [TLS](http://en.wikipedia.org/wiki/Transport_Layer_Security) is active on the connection, returns the remote [X509 certificate](http://en.wikipedia.org/wiki/X.509) + # as a string, in the popular [PEM format](http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail). This can then be used for arbitrary validation + # of a peer's certificate in your code. + # + # This should be called in/after the {#ssl_handshake_completed} callback, which indicates + # that SSL/TLS is active. Using this callback is important, because the certificate may not + # be available until the time it is executed. Using #post_init or #connection_completed is + # not adequate, because the SSL handshake may still be taking place. + # + # This method will return `nil` if: + # + # * EventMachine is not built with [OpenSSL](http://www.openssl.org) support + # * [TLS](http://en.wikipedia.org/wiki/Transport_Layer_Security) is not active on the connection + # * TLS handshake is not yet complete + # * Remote peer for any other reason has not presented a certificate + # + # + # @example Getting peer TLS certificate information in EventMachine + # + # module Handler + # def post_init + # puts "Starting TLS" + # start_tls + # end + # + # def ssl_handshake_completed + # puts get_peer_cert + # close_connection + # end + # + # def unbind + # EventMachine::stop_event_loop + # end + # end + # + # EventMachine.run do + # EventMachine.connect "mail.google.com", 443, Handler + # end + # + # # Will output: + # # -----BEGIN CERTIFICATE----- + # # MIIDIjCCAougAwIBAgIQbldpChBPqv+BdPg4iwgN8TANBgkqhkiG9w0BAQUFADBM + # # MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg + # # THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wODA1MDIxNjMyNTRaFw0w + # # OTA1MDIxNjMyNTRaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh + # # MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRgw + # # FgYDVQQDEw9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ + # # AoGBALlkxdh2QXegdElukCSOV2+8PKiONIS+8Tu9K7MQsYpqtLNC860zwOPQ2NLI + # # 3Zp4jwuXVTrtzGuiqf5Jioh35Ig3CqDXtLyZoypjZUQcq4mlLzHlhIQ4EhSjDmA7 + # # Ffw9y3ckSOQgdBQWNLbquHh9AbEUjmhkrYxIqKXeCnRKhv6nAgMBAAGjgecwgeQw + # # KAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMCBglghkgBhvhCBAEwNgYDVR0f + # # BC8wLTAroCmgJ4YlaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVNHQ0NBLmNy + # # bDByBggrBgEFBQcBAQRmMGQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0 + # # ZS5jb20wPgYIKwYBBQUHMAKGMmh0dHA6Ly93d3cudGhhd3RlLmNvbS9yZXBvc2l0 + # # b3J5L1RoYXd0ZV9TR0NfQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF + # # BQADgYEAsRwpLg1dgCR1gYDK185MFGukXMeQFUvhGqF8eT/CjpdvezyKVuz84gSu + # # 6ccMXgcPQZGQN/F4Xug+Q01eccJjRSVfdvR5qwpqCj+6BFl5oiKDBsveSkrmL5dz + # # s2bn7TdTSYKcLeBkjXxDLHGBqLJ6TNCJ3c4/cbbG5JhGvoema94= + # # -----END CERTIFICATE----- + # + # You can do whatever you want with the certificate String, such as load it + # as a certificate object using the OpenSSL library, and check its fields. + # + # @return [String] the remote [X509 certificate](http://en.wikipedia.org/wiki/X.509), in the popular [PEM format](http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail), + # if TLS is active on the connection + # + # @see Connection#start_tls + # @see Connection#ssl_handshake_completed + def get_peer_cert + EventMachine::get_peer_cert @signature + end + + def get_cipher_bits + EventMachine::get_cipher_bits @signature + end + + def get_cipher_name + EventMachine::get_cipher_name @signature + end + + def get_cipher_protocol + EventMachine::get_cipher_protocol @signature + end + + def get_sni_hostname + EventMachine::get_sni_hostname @signature + end + + # Sends UDP messages. + # + # This method may be called from any Connection object that refers + # to an open datagram socket (see EventMachine#open_datagram_socket). + # The method sends a UDP (datagram) packet containing the data you specify, + # to a remote peer specified by the IP address and port that you give + # as parameters to the method. + # Observe that you may send a zero-length packet (empty string). + # However, you may not send an arbitrarily-large data packet because + # your operating system will enforce a platform-specific limit on + # the size of the outbound packet. (Your kernel + # will respond in a platform-specific way if you send an overlarge + # packet: some will send a truncated packet, some will complain, and + # some will silently drop your request). + # On LANs, it's usually OK to send datagrams up to about 4000 bytes in length, + # but to be really safe, send messages smaller than the Ethernet-packet + # size (typically about 1400 bytes). Some very restrictive WANs + # will either drop or truncate packets larger than about 500 bytes. + # + # @param [String] data Data to send asynchronously + # @param [String] recipient_address IP address of the recipient + # @param [String] recipient_port Port of the recipient + def send_datagram data, recipient_address, recipient_port + data = data.to_s + size = data.bytesize if data.respond_to?(:bytesize) + size ||= data.size + EventMachine::send_datagram @signature, data, size, recipient_address, Integer(recipient_port) + end + + + # This method is used with stream-connections to obtain the identity + # of the remotely-connected peer. If a peername is available, this method + # returns a sockaddr structure. The method returns nil if no peername is available. + # You can use Socket.unpack_sockaddr_in and its variants to obtain the + # values contained in the peername structure returned from #get_peername. + # + # @example How to get peer IP address and port with EventMachine + # + # require 'socket' + # + # module Handler + # def receive_data data + # port, ip = Socket.unpack_sockaddr_in(get_peername) + # puts "got #{data.inspect} from #{ip}:#{port}" + # end + # end + def get_peername + EventMachine::get_peername @signature + end + + # Used with stream-connections to obtain the identity + # of the local side of the connection. If a local name is available, this method + # returns a sockaddr structure. The method returns nil if no local name is available. + # You can use {Socket.unpack_sockaddr_in} and its variants to obtain the + # values contained in the local-name structure returned from this method. + # + # @example + # + # require 'socket' + # + # module Handler + # def receive_data data + # port, ip = Socket.unpack_sockaddr_in(get_sockname) + # puts "got #{data.inspect}" + # end + # end + def get_sockname + EventMachine::get_sockname @signature + end + + # Returns the PID (kernel process identifier) of a subprocess + # associated with this Connection object. For use with {EventMachine.popen} + # and similar methods. Returns nil when there is no meaningful subprocess. + # + # @return [Integer] + def get_pid + EventMachine::get_subprocess_pid @signature + end + + # Returns a subprocess exit status. Only useful for {EventMachine.popen}. Call it in your + # {#unbind} handler. + # + # @return [Integer] + def get_status + EventMachine::get_subprocess_status @signature + end + + # The number of seconds since the last send/receive activity on this connection. + def get_idle_time + EventMachine::get_idle_time @signature + end + + # comm_inactivity_timeout returns the current value (float in seconds) of the inactivity-timeout + # property of network-connection and datagram-socket objects. A nonzero value + # indicates that the connection or socket will automatically be closed if no read or write + # activity takes place for at least that number of seconds. + # A zero value (the default) specifies that no automatic timeout will take place. + def comm_inactivity_timeout + EventMachine::get_comm_inactivity_timeout @signature + end + + # Allows you to set the inactivity-timeout property for + # a network connection or datagram socket. Specify a non-negative float value in seconds. + # If the value is greater than zero, the connection or socket will automatically be closed + # if no read or write activity takes place for at least that number of seconds. + # Specify a value of zero to indicate that no automatic timeout should take place. + # Zero is the default value. + def comm_inactivity_timeout= value + EventMachine::set_comm_inactivity_timeout @signature, value.to_f + end + alias set_comm_inactivity_timeout comm_inactivity_timeout= + + # The duration after which a TCP connection in the connecting state will fail. + # It is important to distinguish this value from {EventMachine::Connection#comm_inactivity_timeout}, + # which looks at how long since data was passed on an already established connection. + # The value is a float in seconds. + # + # @return [Float] The duration after which a TCP connection in the connecting state will fail, in seconds. + def pending_connect_timeout + EventMachine::get_pending_connect_timeout @signature + end + + # Sets the duration after which a TCP connection in a + # connecting state will fail. + # + # @param [Float, #to_f] value Connection timeout in seconds + def pending_connect_timeout= value + EventMachine::set_pending_connect_timeout @signature, value.to_f + end + alias set_pending_connect_timeout pending_connect_timeout= + + # Reconnect to a given host/port with the current instance + # + # @param [String] server Hostname or IP address + # @param [Integer] port Port to reconnect to + def reconnect server, port + EventMachine::reconnect server, port, self + end + + + # Like {EventMachine::Connection#send_data}, this sends data to the remote end of + # the network connection. {EventMachine::Connection#send_file_data} takes a + # filename as an argument, though, and sends the contents of the file, in one + # chunk. + # + # @param [String] filename Local path of the file to send + # + # @see #send_data + # @author Kirk Haines + def send_file_data filename + EventMachine::send_file_data @signature, filename + end + + # Open a file on the filesystem and send it to the remote peer. This returns an + # object of type {EventMachine::Deferrable}. The object's callbacks will be executed + # on the reactor main thread when the file has been completely scheduled for + # transmission to the remote peer. Its errbacks will be called in case of an error (such as file-not-found). + # This method employs various strategies to achieve the fastest possible performance, + # balanced against minimum consumption of memory. + # + # Warning: this feature has an implicit dependency on an outboard extension, + # evma_fastfilereader. You must install this extension in order to use {#stream_file_data} + # with files larger than a certain size (currently 8192 bytes). + # + # @option args [Boolean] :http_chunks (false) If true, this method will stream the file data in a format + # compatible with the HTTP chunked-transfer encoding + # + # @param [String] filename Local path of the file to stream + # @param [Hash] args Options + # + # @return [EventMachine::Deferrable] + def stream_file_data filename, args={} + EventMachine::FileStreamer.new( self, filename, args ) + end + + # Watches connection for readability. Only possible if the connection was created + # using {EventMachine.attach} and had {EventMachine.notify_readable}/{EventMachine.notify_writable} defined on the handler. + # + # @see #notify_readable? + def notify_readable= mode + EventMachine::set_notify_readable @signature, mode + end + + # @return [Boolean] true if the connection is being watched for readability. + def notify_readable? + EventMachine::is_notify_readable @signature + end + + # Watches connection for writeability. Only possible if the connection was created + # using {EventMachine.attach} and had {EventMachine.notify_readable}/{EventMachine.notify_writable} defined on the handler. + # + # @see #notify_writable? + def notify_writable= mode + EventMachine::set_notify_writable @signature, mode + end + + # Returns true if the connection is being watched for writability. + def notify_writable? + EventMachine::is_notify_writable @signature + end + + # Pause a connection so that {#send_data} and {#receive_data} events are not fired until {#resume} is called. + # @see #resume + def pause + EventMachine::pause_connection @signature + end + + # Resume a connection's {#send_data} and {#receive_data} events. + # @see #pause + def resume + EventMachine::resume_connection @signature + end + + # @return [Boolean] true if the connect was paused using {EventMachine::Connection#pause}. + # @see #pause + # @see #resume + def paused? + EventMachine::connection_paused? @signature + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable.rb new file mode 100644 index 0000000000..18a6d316ba --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable.rb @@ -0,0 +1,210 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 Jul 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Deferrable + autoload :Pool, 'em/deferrable/pool' + + # Specify a block to be executed if and when the Deferrable object receives + # a status of :succeeded. See #set_deferred_status for more information. + # + # Calling this method on a Deferrable object whose status is not yet known + # will cause the callback block to be stored on an internal list. + # If you call this method on a Deferrable whose status is :succeeded, the + # block will be executed immediately, receiving the parameters given to the + # prior #set_deferred_status call. + # + #-- + # If there is no status, add a callback to an internal list. + # If status is succeeded, execute the callback immediately. + # If status is failed, do nothing. + # + def callback &block + return unless block + @deferred_status ||= :unknown + if @deferred_status == :succeeded + block.call(*@deferred_args) + elsif @deferred_status != :failed + @callbacks ||= [] + @callbacks.unshift block # << block + end + self + end + + # Cancels an outstanding callback to &block if any. Undoes the action of #callback. + # + def cancel_callback block + @callbacks ||= [] + @callbacks.delete block + end + + # Specify a block to be executed if and when the Deferrable object receives + # a status of :failed. See #set_deferred_status for more information. + #-- + # If there is no status, add an errback to an internal list. + # If status is failed, execute the errback immediately. + # If status is succeeded, do nothing. + # + def errback &block + return unless block + @deferred_status ||= :unknown + if @deferred_status == :failed + block.call(*@deferred_args) + elsif @deferred_status != :succeeded + @errbacks ||= [] + @errbacks.unshift block # << block + end + self + end + + # Cancels an outstanding errback to &block if any. Undoes the action of #errback. + # + def cancel_errback block + @errbacks ||= [] + @errbacks.delete block + end + + # Sets the "disposition" (status) of the Deferrable object. See also the large set of + # sugarings for this method. + # Note that if you call this method without arguments, + # no arguments will be passed to the callback/errback. + # If the user has coded these with arguments, then the + # user code will throw an argument exception. + # Implementors of deferrable classes must + # document the arguments they will supply to user callbacks. + # + # OBSERVE SOMETHING VERY SPECIAL here: you may call this method even + # on the INSIDE of a callback. This is very useful when a previously-registered + # callback wants to change the parameters that will be passed to subsequently-registered + # ones. + # + # You may give either :succeeded or :failed as the status argument. + # + # If you pass :succeeded, then all of the blocks passed to the object using the #callback + # method (if any) will be executed BEFORE the #set_deferred_status method returns. All of the blocks + # passed to the object using #errback will be discarded. + # + # If you pass :failed, then all of the blocks passed to the object using the #errback + # method (if any) will be executed BEFORE the #set_deferred_status method returns. All of the blocks + # passed to the object using # callback will be discarded. + # + # If you pass any arguments to #set_deferred_status in addition to the status argument, + # they will be passed as arguments to any callbacks or errbacks that are executed. + # It's your responsibility to ensure that the argument lists specified in your callbacks and + # errbacks match the arguments given in calls to #set_deferred_status, otherwise Ruby will raise + # an ArgumentError. + # + #-- + # We're shifting callbacks off and discarding them as we execute them. + # This is valid because by definition callbacks are executed no more than + # once. It also has the magic effect of permitting recursive calls, which + # means that a callback can call #set_deferred_status and change the parameters + # that will be sent to subsequent callbacks down the chain. + # + # Changed @callbacks and @errbacks from push/shift to unshift/pop, per suggestion + # by Kirk Haines, to work around the memory leak bug that still exists in many Ruby + # versions. + # + # Changed 15Sep07: after processing callbacks or errbacks, CLEAR the other set of + # handlers. This gets us a little closer to the behavior of Twisted's "deferred," + # which only allows status to be set once. Prior to making this change, it was possible + # to "succeed" a Deferrable (triggering its callbacks), and then immediately "fail" it, + # triggering its errbacks! That is clearly undesirable, but it's just as undesirable + # to raise an exception is status is set more than once on a Deferrable. The latter + # behavior would invalidate the idiom of resetting arguments by setting status from + # within a callback or errback, but more seriously it would cause spurious errors + # if a Deferrable was timed out and then an attempt was made to succeed it. See the + # comments under the new method #timeout. + # + def set_deferred_status status, *args + cancel_timeout + @errbacks ||= nil + @callbacks ||= nil + @deferred_status = status + @deferred_args = args + case @deferred_status + when :succeeded + if @callbacks + while cb = @callbacks.pop + cb.call(*@deferred_args) + end + end + @errbacks.clear if @errbacks + when :failed + if @errbacks + while eb = @errbacks.pop + eb.call(*@deferred_args) + end + end + @callbacks.clear if @callbacks + end + end + + + # Setting a timeout on a Deferrable causes it to go into the failed state after + # the Timeout expires (passing no arguments to the object's errbacks). + # Setting the status at any time prior to a call to the expiration of the timeout + # will cause the timer to be cancelled. + def timeout seconds, *args + cancel_timeout + me = self + @deferred_timeout = EventMachine::Timer.new(seconds) {me.fail(*args)} + self + end + + # Cancels an outstanding timeout if any. Undoes the action of #timeout. + # + def cancel_timeout + @deferred_timeout ||= nil + if @deferred_timeout + @deferred_timeout.cancel + @deferred_timeout = nil + end + end + + + # Sugar for set_deferred_status(:succeeded, ...) + # + def succeed *args + set_deferred_status :succeeded, *args + end + alias set_deferred_success succeed + + # Sugar for set_deferred_status(:failed, ...) + # + def fail *args + set_deferred_status :failed, *args + end + alias set_deferred_failure fail + end + + + # DefaultDeferrable is an otherwise empty class that includes Deferrable. + # This is very useful when you just need to return a Deferrable object + # as a way of communicating deferred status to some other part of a program. + class DefaultDeferrable + include Deferrable + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable/pool.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable/pool.rb new file mode 100644 index 0000000000..3c278eeb96 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable/pool.rb @@ -0,0 +1,2 @@ +warn "EM::Deferrable::Pool is deprecated, please use EM::Pool" +EM::Deferrable::Pool = EM::Pool \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/file_watch.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/file_watch.rb new file mode 100644 index 0000000000..074ffedc06 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/file_watch.rb @@ -0,0 +1,73 @@ +module EventMachine + # Utility class that is useful for file monitoring. Supported events are + # + # * File is modified + # * File is deleted + # * File is moved + # + # @note On Mac OS X, file watching only works when kqueue is enabled + # + # @see EventMachine.watch_file + class FileWatch < Connection + # @private + Cmodified = 'modified'.freeze + # @private + Cdeleted = 'deleted'.freeze + # @private + Cmoved = 'moved'.freeze + + + # @private + def receive_data(data) + case data + when Cmodified + file_modified + when Cdeleted + file_deleted + when Cmoved + file_moved + end + end + + # Returns the path that is being monitored. + # + # @note Current implementation does not pick up on the new filename after a rename occurs. + # + # @return [String] + # @see EventMachine.watch_file + def path + @path + end + + # Will be called when the file is modified. Supposed to be redefined by subclasses. + # + # @abstract + def file_modified + end + + # Will be called when the file is deleted. Supposed to be redefined by subclasses. + # When the file is deleted, stop_watching will be called after this to make sure everything is + # cleaned up correctly. + # + # @note On Linux (with {http://en.wikipedia.org/wiki/Inotify inotify}), this method will not be called until *all* open file descriptors to + # the file have been closed. + # + # @abstract + def file_deleted + end + + # Will be called when the file is moved or renamed. Supposed to be redefined by subclasses. + # + # @abstract + def file_moved + end + + # Discontinue monitoring of the file. + # + # This involves cleaning up the underlying monitoring details with kqueue/inotify, and in turn firing {EventMachine::Connection#unbind}. + # This will be called automatically when a file is deleted. User code may call it as well. + def stop_watching + EventMachine::unwatch_filename(@signature) + end # stop_watching + end # FileWatch +end # EventMachine diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/future.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/future.rb new file mode 100644 index 0000000000..4affbf518a --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/future.rb @@ -0,0 +1,61 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 Jul 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +#-- +# This defines EventMachine::Deferrable#future, which requires +# that the rest of EventMachine::Deferrable has already been seen. +# (It's in deferrable.rb.) + +module EventMachine + module Deferrable + + # A future is a sugaring of a typical deferrable usage. + #-- + # Evaluate arg (which may be an expression or a block). + # What's the class of arg? + # If arg is an ordinary expression, then return it. + # If arg is deferrable (responds to :set_deferred_status), + # then look at the arguments. If either callback or errback + # are defined, then use them. If neither are defined, then + # use the supplied block (if any) as the callback. + # Then return arg. + def self.future arg, cb=nil, eb=nil, &blk + arg = arg.call if arg.respond_to?(:call) + + if arg.respond_to?(:set_deferred_status) + if cb || eb + arg.callback(&cb) if cb + arg.errback(&eb) if eb + else + arg.callback(&blk) if blk + end + end + + arg + end + + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/iterator.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/iterator.rb new file mode 100644 index 0000000000..a30b9dd7f7 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/iterator.rb @@ -0,0 +1,252 @@ +module EventMachine + # A simple iterator for concurrent asynchronous work. + # + # Unlike ruby's built-in iterators, the end of the current iteration cycle is signaled manually, + # instead of happening automatically after the yielded block finishes executing. For example: + # + # (0..10).each{ |num| } + # + # becomes: + # + # EM::Iterator.new(0..10).each{ |num,iter| iter.next } + # + # This is especially useful when doing asynchronous work via reactor libraries and + # functions. For example, given a sync and async http api: + # + # response = sync_http_get(url); ... + # async_http_get(url){ |response| ... } + # + # a synchronous iterator such as: + # + # responses = urls.map{ |url| sync_http_get(url) } + # ... + # puts 'all done!' + # + # could be written as: + # + # EM::Iterator.new(urls).map(proc{ |url,iter| + # async_http_get(url){ |res| + # iter.return(res) + # } + # }, proc{ |responses| + # ... + # puts 'all done!' + # }) + # + # Now, you can take advantage of the asynchronous api to issue requests in parallel. For example, + # to fetch 10 urls at a time, simply pass in a concurrency of 10: + # + # EM::Iterator.new(urls, 10).each do |url,iter| + # async_http_get(url){ iter.next } + # end + # + class Iterator + Stop = "EM::Stop" + # Create a new parallel async iterator with specified concurrency. + # + # i = EM::Iterator.new(1..100, 10) + # + # will create an iterator over the range that processes 10 items at a time. Iteration + # is started via #each, #map or #inject + # + # The list may either be an array-like object, or a proc that returns a new object + # to be processed each time it is called. If a proc is used, it must return + # EventMachine::Iterator::Stop to signal the end of the iterations. + # + def initialize(list, concurrency = 1) + raise ArgumentError, 'concurrency must be bigger than zero' unless (concurrency > 0) + if list.respond_to?(:call) + @list = nil + @list_proc = list + elsif list.respond_to?(:to_a) + @list = list.to_a.dup + @list_proc = nil + else + raise ArgumentError, 'argument must be a proc or an array' + end + @concurrency = concurrency + + @started = false + @ended = false + end + + # Change the concurrency of this iterator. Workers will automatically be spawned or destroyed + # to accomodate the new concurrency level. + # + def concurrency=(val) + old = @concurrency + @concurrency = val + + spawn_workers if val > old and @started and !@ended + end + attr_reader :concurrency + + # Iterate over a set of items using the specified block or proc. + # + # EM::Iterator.new(1..100).each do |num, iter| + # puts num + # iter.next + # end + # + # An optional second proc is invoked after the iteration is complete. + # + # EM::Iterator.new(1..100).each( + # proc{ |num,iter| iter.next }, + # proc{ puts 'all done' } + # ) + # + def each(foreach=nil, after=nil, &blk) + raise ArgumentError, 'proc or block required for iteration' unless foreach ||= blk + raise RuntimeError, 'cannot iterate over an iterator more than once' if @started or @ended + + @started = true + @pending = 0 + @workers = 0 + + all_done = proc{ + after.call if after and @ended and @pending == 0 + } + + @process_next = proc{ + # p [:process_next, :pending=, @pending, :workers=, @workers, :ended=, @ended, :concurrency=, @concurrency, :list=, @list] + unless @ended or @workers > @concurrency + item = next_item() + if item.equal?(Stop) + @ended = true + @workers -= 1 + all_done.call + else + @pending += 1 + + is_done = false + on_done = proc{ + raise RuntimeError, 'already completed this iteration' if is_done + is_done = true + + @pending -= 1 + + if @ended + all_done.call + else + EM.next_tick(@process_next) + end + } + class << on_done + alias :next :call + end + + foreach.call(item, on_done) + end + else + @workers -= 1 + end + } + + spawn_workers + + self + end + + # Collect the results of an asynchronous iteration into an array. + # + # EM::Iterator.new(%w[ pwd uptime uname date ], 2).map(proc{ |cmd,iter| + # EM.system(cmd){ |output,status| + # iter.return(output) + # } + # }, proc{ |results| + # p results + # }) + # + def map(foreach, after) + index = 0 + + inject([], proc{ |results,item,iter| + i = index + index += 1 + + is_done = false + on_done = proc{ |res| + raise RuntimeError, 'already returned a value for this iteration' if is_done + is_done = true + + results[i] = res + iter.return(results) + } + class << on_done + alias :return :call + def next + raise NoMethodError, 'must call #return on a map iterator' + end + end + + foreach.call(item, on_done) + }, proc{ |results| + after.call(results) + }) + end + + # Inject the results of an asynchronous iteration onto a given object. + # + # EM::Iterator.new(%w[ pwd uptime uname date ], 2).inject({}, proc{ |hash,cmd,iter| + # EM.system(cmd){ |output,status| + # hash[cmd] = status.exitstatus == 0 ? output.strip : nil + # iter.return(hash) + # } + # }, proc{ |results| + # p results + # }) + # + def inject(obj, foreach, after) + each(proc{ |item,iter| + is_done = false + on_done = proc{ |res| + raise RuntimeError, 'already returned a value for this iteration' if is_done + is_done = true + + obj = res + iter.next + } + class << on_done + alias :return :call + def next + raise NoMethodError, 'must call #return on an inject iterator' + end + end + + foreach.call(obj, item, on_done) + }, proc{ + after.call(obj) + }) + end + + private + + # Spawn workers to consume items from the iterator's enumerator based on the current concurrency level. + # + def spawn_workers + EM.next_tick(start_worker = proc{ + if @workers < @concurrency and !@ended + # p [:spawning_worker, :workers=, @workers, :concurrency=, @concurrency, :ended=, @ended] + @workers += 1 + @process_next.call + EM.next_tick(start_worker) + end + }) + nil + end + + # Return the next item from @list or @list_proc. + # Once items have run out, will return EM::Iterator::Stop. Procs must supply this themselves + def next_item + if @list_proc + @list_proc.call + else + @list.empty? ? Stop : @list.shift + end + end + end +end + +# TODO: pass in one object instead of two? .each{ |iter| puts iter.current; iter.next } +# TODO: support iter.pause/resume/stop/break/continue? +# TODO: create some exceptions instead of using RuntimeError diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/messages.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/messages.rb new file mode 100644 index 0000000000..9a51c390fe --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/messages.rb @@ -0,0 +1,66 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 Jul 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +=begin + +Message Routing in EventMachine. + +The goal here is to enable "routing points," objects that can send and receive +"messages," which are delimited streams of bytes. The boundaries of a message +are preserved as it passes through the reactor system. + +There will be several module methods defined in EventMachine to create route-point +objects (which will probably have a base class of EventMachine::MessageRouter +until someone suggests a better name). + +As with I/O objects, routing objects will receive events by having the router +core call methods on them. And of course user code can and will define handlers +to deal with events of interest. + +The message router base class only really needs a receive_message method. There will +be an EM module-method to send messages, in addition to the module methods to create +the various kinds of message receivers. + +The simplest kind of message receiver object can receive messages by being named +explicitly in a parameter to EM#send_message. More sophisticated receivers can define +pub-sub selectors and message-queue names. And they can also define channels for +route-points in other processes or even on other machines. + +A message is NOT a marshallable entity. Rather, it's a chunk of flat content more like +an Erlang message. Initially, all content submitted for transmission as a message will +have the to_s method called on it. Eventually, we'll be able to transmit certain structured +data types (XML and YAML documents, Structs within limits) and have them reconstructed +on the other end. + +A fundamental goal of the message-routing capability is to interoperate seamlessly with +external systems, including non-Ruby systems like ActiveMQ. We will define various protocol +handlers for things like Stomp and possibly AMQP, but these will be wrapped up and hidden +from the users of the basic routing capability. + +As with Erlang, a critical goal is for programs that are built to use message-passing to work +WITHOUT CHANGE when the code is re-based on a multi-process system. + +=end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pool.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pool.rb new file mode 100644 index 0000000000..2cb3662d08 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pool.rb @@ -0,0 +1,151 @@ +module EventMachine + # A simple async resource pool based on a resource and work queue. Resources + # are enqueued and work waits for resources to become available. + # + # @example + # require 'em-http-request' + # + # EM.run do + # pool = EM::Pool.new + # spawn = lambda { pool.add EM::HttpRequest.new('http://example.org') } + # 10.times { spawn[] } + # done, scheduled = 0, 0 + # + # check = lambda do + # done += 1 + # if done >= scheduled + # EM.stop + # end + # end + # + # pool.on_error { |conn| spawn[] } + # + # 100.times do |i| + # scheduled += 1 + # pool.perform do |conn| + # req = conn.get :path => '/', :keepalive => true + # + # req.callback do + # p [:success, conn.object_id, i, req.response.size] + # check[] + # end + # + # req.errback { check[] } + # + # req + # end + # end + # end + # + # Resources are expected to be controlled by an object responding to a + # deferrable/completion style API with callback and errback blocks. + # + class Pool + + def initialize + @resources = EM::Queue.new + @removed = [] + @contents = [] + @on_error = nil + end + + def add resource + @contents << resource + requeue resource + end + + def remove resource + @contents.delete resource + @removed << resource + end + + # Returns a list for introspection purposes only. You should *NEVER* call + # modification or work oriented methods on objects in this list. A good + # example use case is periodic statistics collection against a set of + # connection resources. + # + # @example + # pool.contents.inject(0) { |sum, connection| connection.num_bytes } + def contents + @contents.dup + end + + # Define a default catch-all for when the deferrables returned by work + # blocks enter a failed state. By default all that happens is that the + # resource is returned to the pool. If on_error is defined, this block is + # responsible for re-adding the resource to the pool if it is still usable. + # In other words, it is generally assumed that on_error blocks explicitly + # handle the rest of the lifetime of the resource. + def on_error *a, &b + @on_error = EM::Callback(*a, &b) + end + + # Perform a given #call-able object or block. The callable object will be + # called with a resource from the pool as soon as one is available, and is + # expected to return a deferrable. + # + # The deferrable will have callback and errback added such that when the + # deferrable enters a finished state, the object is returned to the pool. + # + # If on_error is defined, then objects are not automatically returned to the + # pool. + def perform(*a, &b) + work = EM::Callback(*a, &b) + + @resources.pop do |resource| + if removed? resource + @removed.delete resource + reschedule work + else + process work, resource + end + end + end + alias reschedule perform + + # A peek at the number of enqueued jobs waiting for resources + def num_waiting + @resources.num_waiting + end + + # Removed will show resources in a partial pruned state. Resources in the + # removed list may not appear in the contents list if they are currently in + # use. + def removed? resource + @removed.include? resource + end + + protected + def requeue resource + @resources.push resource + end + + def failure resource + if @on_error + @contents.delete resource + @on_error.call resource + # Prevent users from calling a leak. + @removed.delete resource + else + requeue resource + end + end + + def completion deferrable, resource + deferrable.callback { requeue resource } + deferrable.errback { failure resource } + end + + def process work, resource + deferrable = work.call resource + if deferrable.kind_of?(EM::Deferrable) + completion deferrable, resource + else + raise ArgumentError, "deferrable expected from work" + end + rescue + failure resource + raise + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/process_watch.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/process_watch.rb new file mode 100644 index 0000000000..66e894383b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/process_watch.rb @@ -0,0 +1,45 @@ +module EventMachine + + # This is subclassed from EventMachine::Connection for use with the process monitoring API. Read the + # documentation on the instance methods of this class, and for a full explanation see EventMachine.watch_process. + class ProcessWatch < Connection + # @private + Cfork = 'fork'.freeze + # @private + Cexit = 'exit'.freeze + + # @private + def receive_data(data) + case data + when Cfork + process_forked + when Cexit + process_exited + end + end + + # Returns the pid that EventMachine::watch_process was originally called with. + def pid + @pid + end + + # Should be redefined with the user's custom callback that will be fired when the prcess is forked. + # + # There is currently not an easy way to get the pid of the forked child. + def process_forked + end + + # Should be redefined with the user's custom callback that will be fired when the process exits. + # + # stop_watching is called automatically after this callback + def process_exited + end + + # Discontinue monitoring of the process. + # This will be called automatically when a process dies. User code may call it as well. + def stop_watching + EventMachine::unwatch_pid(@signature) + end + end + +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/processes.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/processes.rb new file mode 100644 index 0000000000..4bbc14f6e8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/processes.rb @@ -0,0 +1,123 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 13 Dec 07 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-08 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + + +module EventMachine + + # EM::DeferrableChildProcess is a sugaring of a common use-case + # involving EM::popen. + # Call the #open method on EM::DeferrableChildProcess, passing + # a command-string. #open immediately returns an EM::Deferrable + # object. It also schedules the forking of a child process, which + # will execute the command passed to #open. + # When the forked child terminates, the Deferrable will be signalled + # and execute its callbacks, passing the data that the child process + # wrote to stdout. + # + class DeferrableChildProcess < EventMachine::Connection + include EventMachine::Deferrable + + # @private + def initialize + super + @data = [] + end + + # Sugars a common use-case involving forked child processes. + # #open takes a String argument containing an shell command + # string (including arguments if desired). #open immediately + # returns an EventMachine::Deferrable object, without blocking. + # + # It also invokes EventMachine#popen to run the passed-in + # command in a forked child process. + # + # When the forked child terminates, the Deferrable that + # #open calls its callbacks, passing the data returned + # from the child process. + # + def self.open cmd + EventMachine.popen( cmd, DeferrableChildProcess ) + end + + # @private + def receive_data data + @data << data + end + + # @private + def unbind + succeed( @data.join ) + end + end + + # @private + class SystemCmd < EventMachine::Connection + def initialize cb + @cb = cb + @output = [] + end + def receive_data data + @output << data + end + def unbind + @cb.call @output.join(''), get_status if @cb + end + end + + # EM::system is a simple wrapper for EM::popen. It is similar to Kernel::system, but requires a + # single string argument for the command and performs no shell expansion. + # + # The block or proc passed to EM::system is called with two arguments: the output generated by the command, + # and a Process::Status that contains information about the command's execution. + # + # EM.run{ + # EM.system('ls'){ |output,status| puts output if status.exitstatus == 0 } + # } + # + # You can also supply an additional proc to send some data to the process: + # + # EM.run{ + # EM.system('sh', proc{ |process| + # process.send_data("echo hello\n") + # process.send_data("exit\n") + # }, proc{ |out,status| + # puts(out) + # }) + # } + # + # Like EventMachine.popen, EventMachine.system currently does not work on windows. + # It returns the pid of the spawned process. + def EventMachine::system cmd, *args, &cb + cb ||= args.pop if args.last.is_a? Proc + init = args.pop if args.last.is_a? Proc + + # merge remaining arguments into the command + cmd = [cmd, *args] if args.any? + + EM.get_subprocess_pid(EM.popen(cmd, SystemCmd, cb) do |c| + init[c] if init + end.signature) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols.rb new file mode 100644 index 0000000000..0c1790641c --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols.rb @@ -0,0 +1,37 @@ +module EventMachine + # This module contains various protocol implementations, including: + # - HttpClient and HttpClient2 + # - Stomp + # - Memcache + # - SmtpClient and SmtpServer + # - SASLauth and SASLauthclient + # - LineProtocol, LineAndTextProtocol and LineText2 + # - HeaderAndContentProtocol + # - Postgres3 + # - ObjectProtocol + # + # The protocol implementations live in separate files in the protocols/ subdirectory, + # but are auto-loaded when they are first referenced in your application. + # + # EventMachine::Protocols is also aliased to EM::P for easier usage. + # + module Protocols + # TODO : various autotools are completely useless with the lack of naming + # convention, we need to correct that! + autoload :TcpConnectTester, 'em/protocols/tcptest' + autoload :HttpClient, 'em/protocols/httpclient' + autoload :HttpClient2, 'em/protocols/httpclient2' + autoload :LineAndTextProtocol, 'em/protocols/line_and_text' + autoload :HeaderAndContentProtocol, 'em/protocols/header_and_content' + autoload :LineText2, 'em/protocols/linetext2' + autoload :Stomp, 'em/protocols/stomp' + autoload :SmtpClient, 'em/protocols/smtpclient' + autoload :SmtpServer, 'em/protocols/smtpserver' + autoload :SASLauth, 'em/protocols/saslauth' + autoload :Memcache, 'em/protocols/memcache' + autoload :Postgres3, 'em/protocols/postgres3' + autoload :ObjectProtocol, 'em/protocols/object_protocol' + autoload :Socks4, 'em/protocols/socks4' + autoload :LineProtocol, 'em/protocols/line_protocol' + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/header_and_content.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/header_and_content.rb new file mode 100644 index 0000000000..b5a465aaf1 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/header_and_content.rb @@ -0,0 +1,138 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 Nov 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Protocols + + # === Usage + # + # class RequestHandler < EM::P::HeaderAndContentProtocol + # def receive_request headers, content + # p [:request, headers, content] + # end + # end + # + # EM.run{ + # EM.start_server 'localhost', 80, RequestHandler + # } + # + #-- + # Originally, this subclassed LineAndTextProtocol, which in + # turn relies on BufferedTokenizer, which doesn't gracefully + # handle the transitions between lines and binary text. + # Changed 13Sep08 by FCianfrocca. + class HeaderAndContentProtocol < Connection + include LineText2 + + ContentLengthPattern = /Content-length:\s*(\d+)/i + + def initialize *args + super + init_for_request + end + + def receive_line line + case @hc_mode + when :discard_blanks + unless line == "" + @hc_mode = :headers + receive_line line + end + when :headers + if line == "" + raise "unrecognized state" unless @hc_headers.length > 0 + if respond_to?(:receive_headers) + receive_headers @hc_headers + end + # @hc_content_length will be nil, not 0, if there was no content-length header. + if @hc_content_length.to_i > 0 + set_binary_mode @hc_content_length + else + dispatch_request + end + else + @hc_headers << line + if ContentLengthPattern =~ line + # There are some attacks that rely on sending multiple content-length + # headers. This is a crude protection, but needs to become tunable. + raise "extraneous content-length header" if @hc_content_length + @hc_content_length = $1.to_i + end + if @hc_headers.length == 1 and respond_to?(:receive_first_header_line) + receive_first_header_line line + end + end + else + raise "internal error, unsupported mode" + end + end + + def receive_binary_data text + @hc_content = text + dispatch_request + end + + def dispatch_request + if respond_to?(:receive_request) + receive_request @hc_headers, @hc_content + end + init_for_request + end + private :dispatch_request + + def init_for_request + @hc_mode = :discard_blanks + @hc_headers = [] + # originally was @hc_headers ||= []; @hc_headers.clear to get a performance + # boost, but it's counterproductive because a subclassed handler will have to + # call dup to use the header array we pass in receive_headers. + + @hc_content_length = nil + @hc_content = "" + end + private :init_for_request + + # Basically a convenience method. We might create a subclass that does this + # automatically. But it's such a performance killer. + def headers_2_hash hdrs + self.class.headers_2_hash hdrs + end + + class << self + def headers_2_hash hdrs + hash = {} + hdrs.each {|h| + if /\A([^\s:]+)\s*:\s*/ =~ h + tail = $'.dup + hash[ $1.downcase.gsub(/-/,"_").intern ] = tail + end + } + hash + end + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient.rb new file mode 100644 index 0000000000..38b175ce25 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient.rb @@ -0,0 +1,300 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 July 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Protocols + + # Note: This class is deprecated and will be removed. Please use EM-HTTP-Request instead. + # + # @example + # EventMachine.run { + # http = EventMachine::Protocols::HttpClient.request( + # :host => server, + # :port => 80, + # :request => "/index.html", + # :query_string => "parm1=value1&parm2=value2" + # ) + # http.callback {|response| + # puts response[:status] + # puts response[:headers] + # puts response[:content] + # } + # } + #-- + # TODO: + # Add streaming so we can support enormous POSTs. Current max is 20meg. + # Timeout for connections that run too long or hang somewhere in the middle. + # Persistent connections (HTTP/1.1), may need a associated delegate object. + # DNS: Some way to cache DNS lookups for hostnames we connect to. Ruby's + # DNS lookups are unbelievably slow. + # HEAD requests. + # Convenience methods for requests. get, post, url, etc. + # SSL. + # Handle status codes like 304, 100, etc. + # Refactor this code so that protocol errors all get handled one way (an exception?), + # instead of sprinkling set_deferred_status :failed calls everywhere. + class HttpClient < Connection + include EventMachine::Deferrable + + MaxPostContentLength = 20 * 1024 * 1024 + + def initialize + warn "HttpClient is deprecated and will be removed. EM-Http-Request should be used instead." + @connected = false + end + + # @param args [Hash] The request arguments + # @option args [String] :host The host IP/DNS name + # @option args [Integer] :port The port to connect too + # @option args [String] :verb The request type [GET | POST | DELETE | PUT] + # @option args [String] :request The request path + # @option args [Hash] :basic_auth The basic auth credentials (:username and :password) + # @option args [String] :content The request content + # @option args [String] :contenttype The content type (e.g. text/plain) + # @option args [String] :query_string The query string + # @option args [String] :host_header The host header to set + # @option args [String] :cookie Cookies to set + def self.request( args = {} ) + args[:port] ||= 80 + EventMachine.connect( args[:host], args[:port], self ) {|c| + # According to the docs, we will get here AFTER post_init is called. + c.instance_eval {@args = args} + } + end + + def post_init + @start_time = Time.now + @data = "" + @read_state = :base + end + + # We send the request when we get a connection. + # AND, we set an instance variable to indicate we passed through here. + # That allows #unbind to know whether there was a successful connection. + # NB: This naive technique won't work when we have to support multiple + # requests on a single connection. + def connection_completed + @connected = true + send_request @args + end + + def send_request args + args[:verb] ||= args[:method] # Support :method as an alternative to :verb. + args[:verb] ||= :get # IS THIS A GOOD IDEA, to default to GET if nothing was specified? + + verb = args[:verb].to_s.upcase + unless ["GET", "POST", "PUT", "DELETE", "HEAD"].include?(verb) + set_deferred_status :failed, {:status => 0} # TODO, not signalling the error type + return # NOTE THE EARLY RETURN, we're not sending any data. + end + + request = args[:request] || "/" + unless request[0,1] == "/" + request = "/" + request + end + + qs = args[:query_string] || "" + if qs.length > 0 and qs[0,1] != '?' + qs = "?" + qs + end + + version = args[:version] || "1.1" + + # Allow an override for the host header if it's not the connect-string. + host = args[:host_header] || args[:host] || "_" + # For now, ALWAYS tuck in the port string, although we may want to omit it if it's the default. + port = args[:port].to_i != 80 ? ":#{args[:port]}" : "" + + # POST items. + postcontenttype = args[:contenttype] || "application/octet-stream" + postcontent = args[:content] || "" + raise "oversized content in HTTP POST" if postcontent.length > MaxPostContentLength + + # ESSENTIAL for the request's line-endings to be CRLF, not LF. Some servers misbehave otherwise. + # TODO: We ASSUME the caller wants to send a 1.1 request. May not be a good assumption. + req = [ + "#{verb} #{request}#{qs} HTTP/#{version}", + "Host: #{host}#{port}", + "User-agent: Ruby EventMachine", + ] + + if verb == "POST" || verb == "PUT" + req << "Content-type: #{postcontenttype}" + req << "Content-length: #{postcontent.length}" + end + + # TODO, this cookie handler assumes it's getting a single, semicolon-delimited string. + # Eventually we will want to deal intelligently with arrays and hashes. + if args[:cookie] + req << "Cookie: #{args[:cookie]}" + end + + # Allow custom HTTP headers, e.g. SOAPAction + args[:custom_headers].each do |k,v| + req << "#{k}: #{v}" + end if args[:custom_headers] + + # Basic-auth stanza contributed by Matt Murphy. + if args[:basic_auth] + basic_auth_string = ["#{args[:basic_auth][:username]}:#{args[:basic_auth][:password]}"].pack('m').strip.gsub(/\n/,'') + req << "Authorization: Basic #{basic_auth_string}" + end + + req << "" + reqstring = req.map {|l| "#{l}\r\n"}.join + send_data reqstring + + if verb == "POST" || verb == "PUT" + send_data postcontent + end + end + + + def receive_data data + while data and data.length > 0 + case @read_state + when :base + # Perform any per-request initialization here and don't consume any data. + @data = "" + @headers = [] + @content_length = nil # not zero + @content = "" + @status = nil + @chunked = false + @chunk_length = nil + @read_state = :header + @connection_close = nil + when :header + ary = data.split( /\r?\n/m, 2 ) + if ary.length == 2 + data = ary.last + if ary.first == "" + if (@content_length and @content_length > 0) || @chunked || @connection_close + @read_state = :content + else + dispatch_response + @read_state = :base + end + else + @headers << ary.first + if @headers.length == 1 + parse_response_line + elsif ary.first =~ /\Acontent-length:\s*/i + # Only take the FIRST content-length header that appears, + # which we can distinguish because @content_length is nil. + # TODO, it's actually a fatal error if there is more than one + # content-length header, because the caller is presumptively + # a bad guy. (There is an exploit that depends on multiple + # content-length headers.) + @content_length ||= $'.to_i + elsif ary.first =~ /\Aconnection:\s*close/i + @connection_close = true + elsif ary.first =~ /\Atransfer-encoding:\s*chunked/i + @chunked = true + end + end + else + @data << data + data = "" + end + when :content + if @chunked && @chunk_length + bytes_needed = @chunk_length - @chunk_read + new_data = data[0, bytes_needed] + @chunk_read += new_data.length + @content += new_data + data = data[bytes_needed..-1] || "" + if @chunk_length == @chunk_read && data[0,2] == "\r\n" + @chunk_length = nil + data = data[2..-1] + end + elsif @chunked + if (m = data.match(/\A(\S*)\r\n/m)) + data = data[m[0].length..-1] + @chunk_length = m[1].to_i(16) + @chunk_read = 0 + if @chunk_length == 0 + dispatch_response + @read_state = :base + end + end + elsif @content_length + # If there was no content-length header, we have to wait until the connection + # closes. Everything we get until that point is content. + # TODO: Must impose a content-size limit, and also must implement chunking. + # Also, must support either temporary files for large content, or calling + # a content-consumer block supplied by the user. + bytes_needed = @content_length - @content.length + @content += data[0, bytes_needed] + data = data[bytes_needed..-1] || "" + if @content_length == @content.length + dispatch_response + @read_state = :base + end + else + @content << data + data = "" + end + end + end + end + + + # We get called here when we have received an HTTP response line. + # It's an opportunity to throw an exception or trigger other exceptional + # handling. + def parse_response_line + if @headers.first =~ /\AHTTP\/1\.[01] ([\d]{3})/ + @status = $1.to_i + else + set_deferred_status :failed, { + :status => 0 # crappy way of signifying an unrecognized response. TODO, find a better way to do this. + } + close_connection + end + end + private :parse_response_line + + def dispatch_response + @read_state = :base + set_deferred_status :succeeded, { + :content => @content, + :headers => @headers, + :status => @status + } + # TODO, we close the connection for now, but this is wrong for persistent clients. + close_connection + end + + def unbind + if !@connected + set_deferred_status :failed, {:status => 0} # YECCCCH. Find a better way to signal no-connect/network error. + elsif (@read_state == :content and @content_length == nil) + dispatch_response + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient2.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient2.rb new file mode 100644 index 0000000000..0fb64e8043 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/httpclient2.rb @@ -0,0 +1,600 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 July 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Protocols + + # Note: This class is deprecated and will be removed. Please use EM-HTTP-Request instead. + # + # === Usage + # + # EM.run{ + # conn = EM::Protocols::HttpClient2.connect 'google.com', 80 + # + # req = conn.get('/') + # req.callback{ |response| + # p(response.status) + # p(response.headers) + # p(response.content) + # } + # } + class HttpClient2 < Connection + include LineText2 + + def initialize + warn "HttpClient2 is deprecated and will be removed. EM-Http-Request should be used instead." + + @authorization = nil + @closed = nil + @requests = nil + end + + # @private + class Request + include Deferrable + + attr_reader :version + attr_reader :status + attr_reader :header_lines + attr_reader :headers + attr_reader :content + attr_reader :internal_error + + def initialize conn, args + @conn = conn + @args = args + @header_lines = [] + @headers = {} + @blanks = 0 + @chunk_trailer = nil + @chunking = nil + end + + def send_request + az = @args[:authorization] and az = "Authorization: #{az}\r\n" + + r = [ + "#{@args[:verb]} #{@args[:uri]} HTTP/#{@args[:version] || "1.1"}\r\n", + "Host: #{@args[:host_header] || "_"}\r\n", + az || "", + "\r\n" + ] + @conn.send_data r.join + end + + + #-- + # + def receive_line ln + if @chunk_trailer + receive_chunk_trailer(ln) + elsif @chunking + receive_chunk_header(ln) + else + receive_header_line(ln) + end + end + + #-- + # + def receive_chunk_trailer ln + if ln.length == 0 + @conn.pop_request + succeed(self) + else + p "Received chunk trailer line" + end + end + + #-- + # Allow up to ten blank lines before we get a real response line. + # Allow no more than 100 lines in the header. + # + def receive_header_line ln + if ln.length == 0 + if @header_lines.length > 0 + process_header + else + @blanks += 1 + if @blanks > 10 + @conn.close_connection + end + end + else + @header_lines << ln + if @header_lines.length > 100 + @internal_error = :bad_header + @conn.close_connection + end + end + end + + #-- + # Cf RFC 2616 pgh 3.6.1 for the format of HTTP chunks. + # + def receive_chunk_header ln + if ln.length > 0 + chunksize = ln.to_i(16) + if chunksize > 0 + @conn.set_text_mode(ln.to_i(16)) + else + @content = @content ? @content.join : '' + @chunk_trailer = true + end + else + # We correctly come here after each chunk gets read. + # p "Got A BLANK chunk line" + end + + end + + + #-- + # We get a single chunk. Append it to the incoming content and switch back to line mode. + # + def receive_chunked_text text + # p "RECEIVED #{text.length} CHUNK" + (@content ||= []) << text + end + + + #-- + # TODO, inefficient how we're handling this. Part of it is done so as to + # make sure we don't have problems in detecting chunked-encoding, content-length, + # etc. + # + HttpResponseRE = /\AHTTP\/(1.[01]) ([\d]{3})/i + ClenRE = /\AContent-length:\s*(\d+)/i + ChunkedRE = /\ATransfer-encoding:\s*chunked/i + ColonRE = /\:\s*/ + + def process_header + unless @header_lines.first =~ HttpResponseRE + @conn.close_connection + @internal_error = :bad_request + end + @version = $1.dup + @status = $2.dup.to_i + + clen = nil + chunks = nil + @header_lines.each_with_index do |e,ix| + if ix > 0 + hdr,val = e.split(ColonRE,2) + (@headers[hdr.downcase] ||= []) << val + end + + if clen == nil and e =~ ClenRE + clen = $1.dup.to_i + end + if e =~ ChunkedRE + chunks = true + end + end + + if clen + # If the content length is zero we should not call set_text_mode, + # because a value of zero will make it wait forever, hanging the + # connection. Just return success instead, with empty content. + if clen == 0 then + @content = "" + @conn.pop_request + succeed(self) + else + @conn.set_text_mode clen + end + elsif chunks + @chunking = true + else + # Chunked transfer, multipart, or end-of-connection. + # For end-of-connection, we need to go the unbind + # method and suppress its desire to fail us. + p "NO CLEN" + p @args[:uri] + p @header_lines + @internal_error = :unsupported_clen + @conn.close_connection + end + end + private :process_header + + + def receive_text text + @chunking ? receive_chunked_text(text) : receive_sized_text(text) + end + + #-- + # At the present time, we only handle contents that have a length + # specified by the content-length header. + # + def receive_sized_text text + @content = text + @conn.pop_request + succeed(self) + end + end + + # Make a connection to a remote HTTP server. + # Can take either a pair of arguments (which will be interpreted as + # a hostname/ip-address and a port), or a hash. + # If the arguments are a hash, then supported values include: + # :host => a hostname or ip-address + # :port => a port number + # :ssl => true to enable ssl + def self.connect *args + if args.length == 2 + args = {:host=>args[0], :port=>args[1]} + else + args = args.first + end + + h,prt,ssl = args[:host], Integer(args[:port]), (args[:tls] || args[:ssl]) + conn = EM.connect( h, prt, self ) + conn.start_tls if ssl + conn.set_default_host_header( h, prt, ssl ) + conn + end + + # Get a url + # + # req = conn.get(:uri => '/') + # req.callback{|response| puts response.content } + # + def get args + if args.is_a?(String) + args = {:uri=>args} + end + args[:verb] = "GET" + request args + end + + # Post to a url + # + # req = conn.post('/data') + # req.callback{|response| puts response.content } + #-- + # XXX there's no way to supply a POST body.. wtf? + def post args + if args.is_a?(String) + args = {:uri=>args} + end + args[:verb] = "POST" + request args + end + + + #-- + # Compute and remember a string to be used as the host header in HTTP requests + # unless the user overrides it with an argument to #request. + # + # @private + def set_default_host_header host, port, ssl + if (ssl and port != 443) or (!ssl and port != 80) + @host_header = "#{host}:#{port}" + else + @host_header = host + end + end + + + # @private + def post_init + super + @connected = EM::DefaultDeferrable.new + end + + # @private + def connection_completed + super + @connected.succeed + end + + #-- + # All pending requests, if any, must fail. + # We might come here without ever passing through connection_completed + # in case we can't connect to the server. We'll also get here when the + # connection closes (either because the server closes it, or we close it + # due to detecting an internal error or security violation). + # In either case, run down all pending requests, if any, and signal failure + # on them. + # + # Set and remember a flag (@closed) so we can immediately fail any + # subsequent requests. + # + # @private + def unbind + super + @closed = true + (@requests || []).each {|r| r.fail} + end + + # @private + def request args + args[:host_header] = @host_header unless args.has_key?(:host_header) + args[:authorization] = @authorization unless args.has_key?(:authorization) + r = Request.new self, args + if @closed + r.fail + else + (@requests ||= []).unshift r + @connected.callback {r.send_request} + end + r + end + + # @private + def receive_line ln + if req = @requests.last + req.receive_line ln + else + p "??????????" + p ln + end + end + + # @private + def receive_binary_data text + @requests.last.receive_text text + end + + #-- + # Called by a Request object when it completes. + # + # @private + def pop_request + @requests.pop + end + end + + +=begin + class HttpClient2x < Connection + include LineText2 + + # TODO: Make this behave appropriate in case a #connect fails. + # Currently, this produces no errors. + + # Make a connection to a remote HTTP server. + # Can take either a pair of arguments (which will be interpreted as + # a hostname/ip-address and a port), or a hash. + # If the arguments are a hash, then supported values include: + # :host => a hostname or ip-address; + # :port => a port number + #-- + # TODO, support optional encryption arguments like :ssl + def self.connect *args + if args.length == 2 + args = {:host=>args[0], :port=>args[1]} + else + args = args.first + end + + h,prt = args[:host],Integer(args[:port]) + EM.connect( h, prt, self, h, prt ) + end + + + #-- + # Sugars a connection that makes a single request and then + # closes the connection. Matches the behavior and the arguments + # of the original implementation of class HttpClient. + # + # Intended primarily for back compatibility, but the idiom + # is probably useful so it's not deprecated. + # We return a Deferrable, as did the original implementation. + # + # Because we're improving the way we deal with errors and exceptions + # (specifically, HTTP response codes other than 2xx will trigger the + # errback rather than the callback), this may break some existing code. + # + def self.request args + c = connect args + end + + #-- + # Requests can be pipelined. When we get a request, add it to the + # front of a queue as an array. The last element of the @requests + # array is always the oldest request received. Each element of the + # @requests array is a two-element array consisting of a hash with + # the original caller's arguments, and an initially-empty Ostruct + # containing the data we retrieve from the server's response. + # Maintain the instance variable @current_response, which is the response + # of the oldest pending request. That's just to make other code a little + # easier. If the variable doesn't exist when we come here, we're + # obviously the first request being made on the connection. + # + # The reason for keeping this method private (and requiring use of the + # convenience methods #get, #post, #head, etc) is to avoid the small + # performance penalty of canonicalizing the verb. + # + def request args + d = EventMachine::DefaultDeferrable.new + + if @closed + d.fail + return d + end + + o = OpenStruct.new + o.deferrable = d + (@requests ||= []).unshift [args, o] + @current_response ||= @requests.last.last + @connected.callback { + az = args[:authorization] and az = "Authorization: #{az}\r\n" + + r = [ + "#{args[:verb]} #{args[:uri]} HTTP/#{args[:version] || "1.1"}\r\n", + "Host: #{args[:host_header] || @host_header}\r\n", + az || "", + "\r\n" + ] + p r + send_data r.join + } + o.deferrable + end + private :request + + def get args + if args.is_a?(String) + args = {:uri=>args} + end + args[:verb] = "GET" + request args + end + + def initialize host, port + super + @host_header = "#{host}:#{port}" + end + def post_init + super + @connected = EM::DefaultDeferrable.new + end + + + def connection_completed + super + @connected.succeed + end + + #-- + # Make sure to throw away any leftover incoming data if we've + # been closed due to recognizing an error. + # + # Generate an internal error if we get an unreasonable number of + # header lines. It could be malicious. + # + def receive_line ln + p ln + return if @closed + + if ln.length > 0 + (@current_response.headers ||= []).push ln + abort_connection if @current_response.headers.length > 100 + else + process_received_headers + end + end + + #-- + # We come here when we've seen all the headers for a particular request. + # What we do next depends on the response line (which should be the + # first line in the header set), and whether there is content to read. + # We may transition into a text-reading state to read content, or + # we may abort the connection, or we may go right back into parsing + # responses for the next response in the chain. + # + # We make an ASSUMPTION that the first line is an HTTP response. + # Anything else produces an error that aborts the connection. + # This may not be enough, because it may be that responses to pipelined + # requests will come with a blank-line delimiter. + # + # Any non-2xx response will be treated as a fatal error, and abort the + # connection. We will set up the status and other response parameters. + # TODO: we will want to properly support 1xx responses, which some versions + # of IIS copiously generate. + # TODO: We need to give the option of not aborting the connection with certain + # non-200 responses, in order to work with NTLM and other authentication + # schemes that work at the level of individual connections. + # + # Some error responses will get sugarings. For example, we'll return the + # Location header in the response in case of a 301/302 response. + # + # Possible dispositions here: + # 1) No content to read (either content-length is zero or it's a HEAD request); + # 2) Switch to text mode to read a specific number of bytes; + # 3) Read a chunked or multipart response; + # 4) Read till the server closes the connection. + # + # Our reponse to the client can be either to wait till all the content + # has been read and then to signal caller's deferrable, or else to signal + # it when we finish the processing the headers and then expect the caller + # to have given us a block to call as the content comes in. And of course + # the latter gets stickier with chunks and multiparts. + # + HttpResponseRE = /\AHTTP\/(1.[01]) ([\d]{3})/i + ClenRE = /\AContent-length:\s*(\d+)/i + def process_received_headers + abort_connection unless @current_response.headers.first =~ HttpResponseRE + @current_response.version = $1.dup + st = $2.dup + @current_response.status = st.to_i + abort_connection unless st[0,1] == "2" + + clen = nil + @current_response.headers.each do |e| + if clen == nil and e =~ ClenRE + clen = $1.dup.to_i + end + end + + if clen + set_text_mode clen + end + end + private :process_received_headers + + + def receive_binary_data text + @current_response.content = text + @current_response.deferrable.succeed @current_response + @requests.pop + @current_response = (@requests.last || []).last + set_line_mode + end + + + + # We've received either a server error or an internal error. + # Close the connection and abort any pending requests. + #-- + # When should we call close_connection? It will cause #unbind + # to be fired. Should the user expect to see #unbind before + # we call #receive_http_error, or the other way around? + # + # Set instance variable @closed. That's used to inhibit further + # processing of any inbound data after an error has been recognized. + # + # We shouldn't have to worry about any leftover outbound data, + # because we call close_connection (not close_connection_after_writing). + # That ensures that any pipelined requests received after an error + # DO NOT get streamed out to the server on this connection. + # Very important. TODO, write a unit-test to establish that behavior. + # + def abort_connection + close_connection + @closed = true + @current_response.deferrable.fail( @current_response ) + end + + + #------------------------ + # Below here are user-overridable methods. + + end +=end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_and_text.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_and_text.rb new file mode 100644 index 0000000000..784daf2fa3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_and_text.rb @@ -0,0 +1,125 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 November 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# +# + +module EventMachine + module Protocols + # A protocol that handles line-oriented data with interspersed binary text. + # + # This version is optimized for performance. See EventMachine::Protocols::LineText2 + # for a version which is optimized for correctness with regard to binary text blocks + # that can switch back to line mode. + class LineAndTextProtocol < Connection + MaxBinaryLength = 32*1024*1024 + + def initialize *args + super + lbp_init_line_state + end + + def receive_data data + if @lbp_mode == :lines + begin + @lpb_buffer.extract(data).each do |line| + receive_line(line.chomp) if respond_to?(:receive_line) + end + rescue + receive_error('overlength line') if respond_to?(:receive_error) + close_connection + return + end + else + if @lbp_binary_limit > 0 + wanted = @lbp_binary_limit - @lbp_binary_bytes_received + chunk = nil + if data.length > wanted + chunk = data.slice!(0...wanted) + else + chunk = data + data = "" + end + @lbp_binary_buffer[@lbp_binary_bytes_received...(@lbp_binary_bytes_received+chunk.length)] = chunk + @lbp_binary_bytes_received += chunk.length + if @lbp_binary_bytes_received == @lbp_binary_limit + receive_binary_data(@lbp_binary_buffer) if respond_to?(:receive_binary_data) + lbp_init_line_state + end + receive_data(data) if data.length > 0 + else + receive_binary_data(data) if respond_to?(:receive_binary_data) + data = "" + end + end + end + + def unbind + if @lbp_mode == :binary and @lbp_binary_limit > 0 + if respond_to?(:receive_binary_data) + receive_binary_data( @lbp_binary_buffer[0...@lbp_binary_bytes_received] ) + end + end + end + + # Set up to read the supplied number of binary bytes. + # This recycles all the data currently waiting in the line buffer, if any. + # If the limit is nil, then ALL subsequent data will be treated as binary + # data and passed to the upstream protocol handler as we receive it. + # If a limit is given, we'll hold the incoming binary data and not + # pass it upstream until we've seen it all, or until there is an unbind + # (in which case we'll pass up a partial). + # Specifying nil for the limit (the default) means there is no limit. + # Specifiyng zero for the limit will cause an immediate transition back to line mode. + # + def set_binary_mode size = nil + if @lbp_mode == :lines + if size == 0 + receive_binary_data("") if respond_to?(:receive_binary_data) + # Do no more work here. Stay in line mode and keep consuming data. + else + @lbp_binary_limit = size.to_i # (nil will be stored as zero) + if @lbp_binary_limit > 0 + raise "Overlength" if @lbp_binary_limit > MaxBinaryLength # arbitrary sanity check + @lbp_binary_buffer = "\0" * @lbp_binary_limit + @lbp_binary_bytes_received = 0 + end + + @lbp_mode = :binary + receive_data @lpb_buffer.flush + end + else + raise "invalid operation" + end + end + + #-- + # For internal use, establish protocol baseline for handling lines. + def lbp_init_line_state + @lpb_buffer = BufferedTokenizer.new("\n") + @lbp_mode = :lines + end + private :lbp_init_line_state + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_protocol.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_protocol.rb new file mode 100644 index 0000000000..dfddae8c04 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/line_protocol.rb @@ -0,0 +1,29 @@ +module EventMachine + module Protocols + # LineProtocol will parse out newline terminated strings from a receive_data stream + # + # module Server + # include EM::P::LineProtocol + # + # def receive_line(line) + # send_data("you said: #{line}") + # end + # end + # + module LineProtocol + # @private + def receive_data data + (@buf ||= '') << data + + while @buf.slice!(/(.*?)\r?\n/) + receive_line($1) + end + end + + # Invoked with lines received over the network + def receive_line(line) + # stub + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/linetext2.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/linetext2.rb new file mode 100644 index 0000000000..9fdf28bd31 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/linetext2.rb @@ -0,0 +1,179 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 November 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Protocols + # In the grand, time-honored tradition of re-inventing the wheel, we offer + # here YET ANOTHER protocol that handles line-oriented data with interspersed + # binary text. This one trades away some of the performance optimizations of + # EventMachine::Protocols::LineAndTextProtocol in order to get better correctness + # with regard to binary text blocks that can switch back to line mode. It also + # permits the line-delimiter to change in midstream. + # This was originally written to support Stomp. + module LineText2 + # TODO! We're not enforcing the limits on header lengths and text-lengths. + # When we get around to that, call #receive_error if the user defined it, otherwise + # throw exceptions. + + MaxBinaryLength = 32*1024*1024 + + #-- + # Will loop internally until there's no data left to read. + # That way the user-defined handlers we call can modify the + # handling characteristics on a per-token basis. + # + def receive_data data + return unless (data and data.length > 0) + + # Do this stuff in lieu of a constructor. + @lt2_mode ||= :lines + @lt2_delimiter ||= "\n" + @lt2_linebuffer ||= [] + + remaining_data = data + + while remaining_data.length > 0 + if @lt2_mode == :lines + delimiter_string = case @lt2_delimiter + when Regexp + remaining_data.slice(@lt2_delimiter) + else + @lt2_delimiter + end + ix = remaining_data.index(delimiter_string) if delimiter_string + if ix + @lt2_linebuffer << remaining_data[0...ix] + ln = @lt2_linebuffer.join + @lt2_linebuffer.clear + if @lt2_delimiter == "\n" + ln.chomp! + end + receive_line ln + remaining_data = remaining_data[(ix+delimiter_string.length)..-1] + else + @lt2_linebuffer << remaining_data + remaining_data = "" + end + elsif @lt2_mode == :text + if @lt2_textsize + needed = @lt2_textsize - @lt2_textpos + will_take = if remaining_data.length > needed + needed + else + remaining_data.length + end + + @lt2_textbuffer << remaining_data[0...will_take] + tail = remaining_data[will_take..-1] + + @lt2_textpos += will_take + if @lt2_textpos >= @lt2_textsize + # Reset line mode (the default behavior) BEFORE calling the + # receive_binary_data. This makes it possible for user code + # to call set_text_mode, enabling chains of text blocks + # (which can possibly be of different sizes). + set_line_mode + receive_binary_data @lt2_textbuffer.join + receive_end_of_binary_data + end + + remaining_data = tail + else + receive_binary_data remaining_data + remaining_data = "" + end + end + end + end + + # The line delimiter may be a regular expression or a string. Anything + # passed to set_delimiter other than a regular expression will be + # converted to a string. + def set_delimiter delim + @lt2_delimiter = case delim + when Regexp + delim + else + delim.to_s + end + end + + # Called internally but also exposed to user code, for the case in which + # processing of binary data creates a need to transition back to line mode. + # We support an optional parameter to "throw back" some data, which might + # be an umprocessed chunk of the transmitted binary data, or something else + # entirely. + def set_line_mode data="" + @lt2_mode = :lines + (@lt2_linebuffer ||= []).clear + receive_data data.to_s + end + + def set_text_mode size=nil + if size == 0 + set_line_mode + else + @lt2_mode = :text + (@lt2_textbuffer ||= []).clear + @lt2_textsize = size # which can be nil, signifying no limit + @lt2_textpos = 0 + end + end + + # Alias for #set_text_mode, added for back-compatibility with LineAndTextProtocol. + def set_binary_mode size=nil + set_text_mode size + end + + # In case of a dropped connection, we'll send a partial buffer to user code + # when in sized text mode. User overrides of #receive_binary_data need to + # be aware that they may get a short buffer. + def unbind + @lt2_mode ||= nil + if @lt2_mode == :text and @lt2_textpos > 0 + receive_binary_data @lt2_textbuffer.join + end + end + + # Stub. Should be subclassed by user code. + def receive_line ln + # no-op + end + + # Stub. Should be subclassed by user code. + def receive_binary_data data + # no-op + end + + # Stub. Should be subclassed by user code. + # This is called when transitioning internally from text mode + # back to line mode. Useful when client code doesn't want + # to keep track of how much data it's received. + def receive_end_of_binary_data + # no-op + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/memcache.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/memcache.rb new file mode 100644 index 0000000000..1f81aaf9d0 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/memcache.rb @@ -0,0 +1,331 @@ +module EventMachine + module Protocols + # Implements the Memcache protocol (http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt). + # Requires memcached >= 1.2.4 w/ noreply support + # + # == Usage example + # + # EM.run{ + # cache = EM::P::Memcache.connect 'localhost', 11211 + # + # cache.set :a, 'hello' + # cache.set :b, 'hi' + # cache.set :c, 'how are you?' + # cache.set :d, '' + # + # cache.get(:a){ |v| p v } + # cache.get_hash(:a, :b, :c, :d){ |v| p v } + # cache.get(:a,:b,:c,:d){ |a,b,c,d| p [a,b,c,d] } + # + # cache.get(:a,:z,:b,:y,:d){ |a,z,b,y,d| p [a,z,b,y,d] } + # + # cache.get(:missing){ |m| p [:missing=, m] } + # cache.set(:missing, 'abc'){ p :stored } + # cache.get(:missing){ |m| p [:missing=, m] } + # cache.del(:missing){ p :deleted } + # cache.get(:missing){ |m| p [:missing=, m] } + # } + # + module Memcache + include EM::Deferrable + + ## + # constants + + unless defined? Cempty + # @private + Cstored = 'STORED'.freeze + # @private + Cend = 'END'.freeze + # @private + Cdeleted = 'DELETED'.freeze + # @private + Cunknown = 'NOT_FOUND'.freeze + # @private + Cerror = 'ERROR'.freeze + + # @private + Cempty = ''.freeze + # @private + Cdelimiter = "\r\n".freeze + end + + ## + # commands + + # Get the value associated with one or multiple keys + # + # cache.get(:a){ |v| p v } + # cache.get(:a,:b,:c,:d){ |a,b,c,d| p [a,b,c,d] } + # + def get *keys + raise ArgumentError unless block_given? + + callback{ + keys = keys.map{|k| k.to_s.gsub(/\s/,'_') } + send_data "get #{keys.join(' ')}\r\n" + @get_cbs << [keys, proc{ |values| + yield *keys.map{ |k| values[k] } + }] + } + end + + # Set the value for a given key + # + # cache.set :a, 'hello' + # cache.set(:missing, 'abc'){ puts "stored the value!" } + # + def set key, val, exptime = 0, &cb + callback{ + val = val.to_s + send_cmd :set, key, 0, exptime, val.respond_to?(:bytesize) ? val.bytesize : val.size, !block_given? + send_data val + send_data Cdelimiter + @set_cbs << cb if cb + } + end + + # Gets multiple values as a hash + # + # cache.get_hash(:a, :b, :c, :d){ |h| puts h[:a] } + # + def get_hash *keys + raise ArgumentError unless block_given? + + get *keys do |*values| + yield keys.inject({}){ |hash, k| hash.update k => values[keys.index(k)] } + end + end + + # Delete the value associated with a key + # + # cache.del :a + # cache.del(:b){ puts "deleted the value!" } + # + def delete key, expires = 0, &cb + callback{ + send_data "delete #{key} #{expires}#{cb ? '' : ' noreply'}\r\n" + @del_cbs << cb if cb + } + end + alias del delete + + # Connect to a memcached server (must support NOREPLY, memcached >= 1.2.4) + def self.connect host = 'localhost', port = 11211 + EM.connect host, port, self, host, port + end + + def send_cmd cmd, key, flags = 0, exptime = 0, bytes = 0, noreply = false + send_data "#{cmd} #{key} #{flags} #{exptime} #{bytes}#{noreply ? ' noreply' : ''}\r\n" + end + private :send_cmd + + ## + # errors + + # @private + class ParserError < StandardError + end + + ## + # em hooks + + # @private + def initialize host, port = 11211 + @host, @port = host, port + end + + # @private + def connection_completed + @get_cbs = [] + @set_cbs = [] + @del_cbs = [] + + @values = {} + + @reconnecting = false + @connected = true + succeed + # set_delimiter "\r\n" + # set_line_mode + end + + #-- + # 19Feb09 Switched to a custom parser, LineText2 is recursive and can cause + # stack overflows when there is too much data. + # include EM::P::LineText2 + # @private + def receive_data data + (@buffer||='') << data + + while index = @buffer.index(Cdelimiter) + begin + line = @buffer.slice!(0,index+2) + process_cmd line + rescue ParserError + @buffer[0...0] = line + break + end + end + end + + #-- + # def receive_line line + # @private + def process_cmd line + case line.strip + when /^VALUE\s+(.+?)\s+(\d+)\s+(\d+)/ # VALUE + bytes = Integer($3) + # set_binary_mode bytes+2 + # @cur_key = $1 + if @buffer.size >= bytes + 2 + @values[$1] = @buffer.slice!(0,bytes) + @buffer.slice!(0,2) # \r\n + else + raise ParserError + end + + when Cend # END + if entry = @get_cbs.shift + keys, cb = entry + cb.call(@values) + end + @values = {} + + when Cstored # STORED + if cb = @set_cbs.shift + cb.call(true) + end + + when Cdeleted # DELETED + if cb = @del_cbs.shift + cb.call(true) + end + + when Cunknown # NOT_FOUND + if cb = @del_cbs.shift + cb.call(false) + end + + else + p [:MEMCACHE_UNKNOWN, line] + end + end + + #-- + # def receive_binary_data data + # @values[@cur_key] = data[0..-3] + # end + + # @private + def unbind + if @connected or @reconnecting + EM.add_timer(1){ reconnect @host, @port } + @connected = false + @reconnecting = true + @deferred_status = nil + else + raise 'Unable to connect to memcached server' + end + end + end + end +end + +if __FILE__ == $0 + # ruby -I ext:lib -r eventmachine -rubygems lib/protocols/memcache.rb + require 'em/spec' + + # @private + class TestConnection + include EM::P::Memcache + def send_data data + sent_data << data + end + def sent_data + @sent_data ||= '' + end + + def initialize + connection_completed + end + end + + EM.describe EM::Protocols::Memcache do + + before{ + @c = TestConnection.new + } + + should 'send get requests' do + @c.get('a'){} + @c.sent_data.should == "get a\r\n" + done + end + + should 'send set requests' do + @c.set('a', 1){} + @c.sent_data.should == "set a 0 0 1\r\n1\r\n" + done + end + + should 'use noreply on set without block' do + @c.set('a', 1) + @c.sent_data.should == "set a 0 0 1 noreply\r\n1\r\n" + done + end + + should 'send delete requests' do + @c.del('a') + @c.sent_data.should == "delete a 0 noreply\r\n" + done + end + + should 'work when get returns no values' do + @c.get('a'){ |a| + a.should.be.nil + done + } + + @c.receive_data "END\r\n" + end + + should 'invoke block on set' do + @c.set('a', 1){ + done + } + + @c.receive_data "STORED\r\n" + end + + should 'invoke block on delete' do + @c.delete('a'){ |found| + found.should.be.false + } + @c.delete('b'){ |found| + found.should.be.true + done + } + + @c.receive_data "NOT_FOUND\r\n" + @c.receive_data "DELETED\r\n" + end + + should 'parse split responses' do + @c.get('a'){ |a| + a.should == 'abc' + done + } + + @c.receive_data "VAL" + @c.receive_data "UE a 0 " + @c.receive_data "3\r\n" + @c.receive_data "ab" + @c.receive_data "c" + @c.receive_data "\r\n" + @c.receive_data "EN" + @c.receive_data "D\r\n" + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/object_protocol.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/object_protocol.rb new file mode 100644 index 0000000000..ec79cb4a66 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/object_protocol.rb @@ -0,0 +1,46 @@ +module EventMachine + module Protocols + # ObjectProtocol allows for easy communication using marshaled ruby objects + # + # module RubyServer + # include EM::P::ObjectProtocol + # + # def receive_object obj + # send_object({'you said' => obj}) + # end + # end + # + module ObjectProtocol + # By default returns Marshal, override to return JSON or YAML, or any + # other serializer/deserializer responding to #dump and #load. + def serializer + Marshal + end + + # @private + def receive_data data + (@buf ||= '') << data + + while @buf.size >= 4 + if @buf.size >= 4+(size=@buf.unpack('N').first) + @buf.slice!(0,4) + receive_object serializer.load(@buf.slice!(0,size)) + else + break + end + end + end + + # Invoked with ruby objects received over the network + def receive_object obj + # stub + end + + # Sends a ruby object over the network + def send_object obj + data = serializer.dump(obj) + send_data [data.respond_to?(:bytesize) ? data.bytesize : data.size, data].pack('Na*') + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/postgres3.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/postgres3.rb new file mode 100644 index 0000000000..7d87505c6d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/postgres3.rb @@ -0,0 +1,246 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 November 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-08 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# +# + +require 'postgres-pr/message' +require 'postgres-pr/connection' +require 'stringio' + +# @private +class StringIO + # Reads exactly +n+ bytes. + # + # If the data read is nil an EOFError is raised. + # + # If the data read is too short an IOError is raised + def readbytes(n) + str = read(n) + if str == nil + raise EOFError, "End of file reached" + end + if str.size < n + raise IOError, "data truncated" + end + str + end + alias read_exactly_n_bytes readbytes +end + + +module EventMachine + module Protocols + # PROVISIONAL IMPLEMENTATION of an evented Postgres client. + # This implements version 3 of the Postgres wire protocol, which will work + # with any Postgres version from roughly 7.4 onward. + # + # Objective: we want to access Postgres databases without requiring threads. + # Until now this has been a problem because the Postgres client implementations + # have all made use of blocking I/O calls, which is incompatible with a + # thread-free evented model. + # + # But rather than re-implement the Postgres Wire3 protocol, we're taking advantage + # of the existing postgres-pr library, which was originally written by Michael + # Neumann but (at this writing) appears to be no longer maintained. Still, it's + # in basically a production-ready state, and the wire protocol isn't that complicated + # anyway. + # + # We're tucking in a bunch of require statements that may not be present in garden-variety + # EM installations. Until we find a good way to only require these if a program + # requires postgres, this file will need to be required explicitly. + # + # We need to monkeypatch StringIO because it lacks the #readbytes method needed + # by postgres-pr. + # The StringIO monkeypatch is lifted from the standard library readbytes.rb, + # which adds method #readbytes directly to class IO. But StringIO is not a subclass of IO. + # It is modified to raise an IOError instead of TruncatedDataException since the exception is unused. + # + # We cloned the handling of postgres messages from lib/postgres-pr/connection.rb + # in the postgres-pr library, and modified it for event-handling. + # + # TODO: The password handling in dispatch_conn_message is totally incomplete. + # + # + # We return Deferrables from the user-level operations surfaced by this interface. + # Experimentally, we're using the pattern of always returning a boolean value as the + # first argument of a deferrable callback to indicate success or failure. This is + # instead of the traditional pattern of calling Deferrable#succeed or #fail, and + # requiring the user to define both a callback and an errback function. + # + # === Usage + # EM.run { + # db = EM.connect_unix_domain( "/tmp/.s.PGSQL.5432", EM::P::Postgres3 ) + # db.connect( dbname, username, psw ).callback do |status| + # if status + # db.query( "select * from some_table" ).callback do |status, result, errors| + # if status + # result.rows.each do |row| + # p row + # end + # end + # end + # end + # end + # } + class Postgres3 < EventMachine::Connection + include PostgresPR + + def initialize + @data = "" + @params = {} + end + + def connect db, user, psw=nil + d = EM::DefaultDeferrable.new + d.timeout 15 + + if @pending_query || @pending_conn + d.succeed false, "Operation already in progress" + else + @pending_conn = d + prms = {"user"=>user, "database"=>db} + @user = user + if psw + @password = psw + #prms["password"] = psw + end + send_data PostgresPR::StartupMessage.new( 3 << 16, prms ).dump + end + + d + end + + def query sql + d = EM::DefaultDeferrable.new + d.timeout 15 + + if @pending_query || @pending_conn + d.succeed false, "Operation already in progress" + else + @r = PostgresPR::Connection::Result.new + @e = [] + @pending_query = d + send_data PostgresPR::Query.dump(sql) + end + + d + end + + + def receive_data data + @data << data + while @data.length >= 5 + pktlen = @data[1...5].unpack("N").first + if @data.length >= (1 + pktlen) + pkt = @data.slice!(0...(1+pktlen)) + m = StringIO.open( pkt, "r" ) {|io| PostgresPR::Message.read( io ) } + if @pending_conn + dispatch_conn_message m + elsif @pending_query + dispatch_query_message m + else + raise "Unexpected message from database" + end + else + break # very important, break out of the while + end + end + end + + + def unbind + if o = (@pending_query || @pending_conn) + o.succeed false, "lost connection" + end + end + + # Cloned and modified from the postgres-pr. + def dispatch_conn_message msg + case msg + when AuthentificationClearTextPassword + raise ArgumentError, "no password specified" if @password.nil? + send_data PasswordMessage.new(@password).dump + + when AuthentificationCryptPassword + raise ArgumentError, "no password specified" if @password.nil? + send_data PasswordMessage.new(@password.crypt(msg.salt)).dump + + when AuthentificationMD5Password + raise ArgumentError, "no password specified" if @password.nil? + require 'digest/md5' + + m = Digest::MD5.hexdigest(@password + @user) + m = Digest::MD5.hexdigest(m + msg.salt) + m = 'md5' + m + send_data PasswordMessage.new(m).dump + + when AuthentificationKerberosV4, AuthentificationKerberosV5, AuthentificationSCMCredential + raise "unsupported authentification" + + when AuthentificationOk + when ErrorResponse + raise msg.field_values.join("\t") + when NoticeResponse + @notice_processor.call(msg) if @notice_processor + when ParameterStatus + @params[msg.key] = msg.value + when BackendKeyData + # TODO + #p msg + when ReadyForQuery + # TODO: use transaction status + pc,@pending_conn = @pending_conn,nil + pc.succeed true + else + raise "unhandled message type" + end + end + + # Cloned and modified from the postgres-pr. + def dispatch_query_message msg + case msg + when DataRow + @r.rows << msg.columns + when CommandComplete + @r.cmd_tag = msg.cmd_tag + when ReadyForQuery + pq,@pending_query = @pending_query,nil + pq.succeed true, @r, @e + when RowDescription + @r.fields = msg.fields + when CopyInResponse + when CopyOutResponse + when EmptyQueryResponse + when ErrorResponse + # TODO + @e << msg + when NoticeResponse + @notice_processor.call(msg) if @notice_processor + else + # TODO + end + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/saslauth.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/saslauth.rb new file mode 100644 index 0000000000..9cabc518e6 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/saslauth.rb @@ -0,0 +1,175 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 November 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# +# + +module EventMachine + module Protocols + + # Implements SASL authd. + # This is a very, very simple protocol that mimics the one used + # by saslauthd and pwcheck, two outboard daemons included in the + # standard SASL library distro. + # The only thing this is really suitable for is SASL PLAIN + # (user+password) authentication, but the SASL libs that are + # linked into standard servers (like imapd and sendmail) implement + # the other ones. + # + # SASL-auth is intended for reasonably fast operation inside a + # single machine, so it has no transport-security (although there + # have been multi-machine extensions incorporating transport-layer + # encryption). + # + # The standard saslauthd module generally runs privileged and does + # its work by referring to the system-account files. + # + # This feature was added to EventMachine to enable the development + # of custom authentication/authorization engines for standard servers. + # + # To use SASLauth, include it in a class that subclasses EM::Connection, + # and reimplement the validate method. + # + # The typical way to incorporate this module into an authentication + # daemon would be to set it as the handler for a UNIX-domain socket. + # The code might look like this: + # + # EM.start_unix_domain_server( "/var/run/saslauthd/mux", MyHandler ) + # File.chmod( 0777, "/var/run/saslauthd/mux") + # + # The chmod is probably needed to ensure that unprivileged clients can + # access the UNIX-domain socket. + # + # It's also a very good idea to drop superuser privileges (if any), after + # the UNIX-domain socket has been opened. + #-- + # Implementation details: assume the client can send us pipelined requests, + # and that the client will close the connection. + # + # The client sends us four values, each encoded as a two-byte length field in + # network order followed by the specified number of octets. + # The fields specify the username, password, service name (such as imap), + # and the "realm" name. We send back the barest minimum reply, a single + # field also encoded as a two-octet length in network order, followed by + # either "NO" or "OK" - simplicity itself. + # + # We enforce a maximum field size just as a sanity check. + # We do NOT automatically time out the connection. + # + # The code we use to parse out the values is ugly and probably slow. + # Improvements welcome. + # + module SASLauth + + MaxFieldSize = 128*1024 + def post_init + super + @sasl_data = "" + @sasl_values = [] + end + + def receive_data data + @sasl_data << data + while @sasl_data.length >= 2 + len = (@sasl_data[0,2].unpack("n")).first + raise "SASL Max Field Length exceeded" if len > MaxFieldSize + if @sasl_data.length >= (len + 2) + @sasl_values << @sasl_data[2,len] + @sasl_data.slice!(0...(2+len)) + if @sasl_values.length == 4 + send_data( validate(*@sasl_values) ? "\0\002OK" : "\0\002NO" ) + @sasl_values.clear + end + else + break + end + end + end + + def validate username, psw, sysname, realm + p username + p psw + p sysname + p realm + true + end + end + + # Implements the SASL authd client protocol. + # This is a very, very simple protocol that mimics the one used + # by saslauthd and pwcheck, two outboard daemons included in the + # standard SASL library distro. + # The only thing this is really suitable for is SASL PLAIN + # (user+password) authentication, but the SASL libs that are + # linked into standard servers (like imapd and sendmail) implement + # the other ones. + # + # You can use this module directly as a handler for EM Connections, + # or include it in a module or handler class of your own. + # + # First connect to a SASL server (it's probably a TCP server, or more + # likely a Unix-domain socket). Then call the #validate? method, + # passing at least a username and a password. #validate? returns + # a Deferrable which will either succeed or fail, depending + # on the status of the authentication operation. + # + module SASLauthclient + MaxFieldSize = 128*1024 + + def validate? username, psw, sysname=nil, realm=nil + + str = [username, psw, sysname, realm].map {|m| + [(m || "").length, (m || "")] + }.flatten.pack( "nA*" * 4 ) + send_data str + + d = EM::DefaultDeferrable.new + @queries.unshift d + d + end + + def post_init + @sasl_data = "" + @queries = [] + end + + def receive_data data + @sasl_data << data + + while @sasl_data.length > 2 + len = (@sasl_data[0,2].unpack("n")).first + raise "SASL Max Field Length exceeded" if len > MaxFieldSize + if @sasl_data.length >= (len + 2) + val = @sasl_data[2,len] + @sasl_data.slice!(0...(2+len)) + q = @queries.pop + (val == "NO") ? q.fail : q.succeed + else + break + end + end + end + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpclient.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpclient.rb new file mode 100644 index 0000000000..25ad17a547 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpclient.rb @@ -0,0 +1,394 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 July 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +require 'ostruct' + +module EventMachine + module Protocols + + # Simple SMTP client + # + # @example + # email = EM::Protocols::SmtpClient.send( + # :domain=>"example.com", + # :host=>'localhost', + # :port=>25, # optional, defaults 25 + # :starttls=>true, # use ssl + # :from=>"sender@example.com", + # :to=> ["to_1@example.com", "to_2@example.com"], + # :header=> {"Subject" => "This is a subject line"}, + # :body=> "This is the body of the email" + # ) + # email.callback{ + # puts 'Email sent!' + # } + # email.errback{ |e| + # puts 'Email failed!' + # } + # + # Sending generated emails (using Mail) + # + # mail = Mail.new do + # from 'alice@example.com' + # to 'bob@example.com' + # subject 'This is a test email' + # body 'Hello, world!' + # end + # + # email = EM::P::SmtpClient.send( + # :domain=>'example.com', + # :from=>mail.from.first, + # :to=>mail.to, + # :message=>mail.to_s + # ) + # + class SmtpClient < Connection + include EventMachine::Deferrable + include EventMachine::Protocols::LineText2 + + def initialize + @succeeded = nil + @responder = nil + @code = nil + @msg = nil + end + + # :host => required String + # a string containing the IP address or host name of the SMTP server to connect to. + # :port => optional + # defaults to 25. + # :domain => required String + # This is passed as the argument to the EHLO command. + # :starttls => optional Boolean + # If it evaluates true, then the client will initiate STARTTLS with + # the server, and abort the connection if the negotiation doesn't succeed. + # TODO, need to be able to pass certificate parameters with this option. + # :auth => optional Hash of auth parameters + # If not given, then no auth will be attempted. + # (In that case, the connection will be aborted if the server requires auth.) + # Specify the hash value :type to determine the auth type, along with additional parameters + # depending on the type. + # Currently only :type => :plain is supported. Pass additional parameters :username (String), + # and :password (either a String or a Proc that will be called at auth-time). + # + # @example + # :auth => {:type=>:plain, :username=>"mickey@disney.com", :password=>"mouse"} + # + # :from => required String + # Specifies the sender of the message. Will be passed as the argument + # to the MAIL FROM. Do NOT enclose the argument in angle-bracket (<>) characters. + # The connection will abort if the server rejects the value. + # :to => required String or Array of Strings + # The recipient(s) of the message. Do NOT enclose + # any of the values in angle-brackets (<>) characters. It's NOT a fatal error if one or more + # recipients are rejected by the server. (Of course, if ALL of them are, the server will most + # likely trigger an error when we try to send data.) An array of codes containing the status + # of each requested recipient is available after the call completes. TODO, we should define + # an overridable stub that will be called on rejection of a recipient or a sender, giving + # user code the chance to try again or abort the connection. + # + # One of either :message, :content, or :header and :body is required: + # + # :message => String + # A valid RFC2822 Internet Message. + # :content => String + # Raw data which MUST be in correct SMTP body format, with escaped leading dots and a trailing + # dot line. + # :header => String or Hash of values to be transmitted in the header of the message. + # The hash keys are the names of the headers (do NOT append a trailing colon), and the values + # are strings containing the header values. TODO, support Arrays of header values, which would + # cause us to send that specific header line more than once. + # + # @example + # :header => {"Subject" => "Bogus", "CC" => "myboss@example.com"} + # + # :body => Optional String or Array of Strings, defaults blank. + # This will be passed as the body of the email message. + # TODO, this needs to be significantly beefed up. As currently written, this requires the caller + # to properly format the input into CRLF-delimited lines of 7-bit characters in the standard + # SMTP transmission format. We need to be able to automatically convert binary data, and add + # correct line-breaks to text data. + # + # :verbose => Optional. + # If true, will cause a lot of information (including the server-side of the + # conversation) to be dumped to $>. + # + def self.send args={} + args[:port] ||= 25 + args[:body] ||= "" + +=begin + (I don't think it's possible for EM#connect to throw an exception under normal + circumstances, so this original code is stubbed out. A connect-failure will result + in the #unbind method being called without calling #connection_completed.) + begin + EventMachine.connect( args[:host], args[:port], self) {|c| + # According to the EM docs, we will get here AFTER post_init is called. + c.args = args + c.set_comm_inactivity_timeout 60 + } + rescue + # We'll get here on a connect error. This code mimics the effect + # of a call to invoke_internal_error. Would be great to DRY this up. + # (Actually, it may be that we never get here, if EM#connect catches + # its errors internally.) + d = EM::DefaultDeferrable.new + d.set_deferred_status(:failed, {:error=>[:connect, 500, "unable to connect to server"]}) + d + end +=end + EventMachine.connect( args[:host], args[:port], self) {|c| + # According to the EM docs, we will get here AFTER post_init is called. + c.args = args + c.set_comm_inactivity_timeout 60 + } + end + + attr_writer :args + + # @private + def post_init + @return_values = OpenStruct.new + @return_values.start_time = Time.now + end + + # @private + def connection_completed + @responder = :receive_signon + @msg = [] + end + + # We can get here in a variety of ways, all of them being failures unless + # the @succeeded flag is set. If a protocol success was recorded, then don't + # set a deferred success because the caller will already have done it + # (no need to wait until the connection closes to invoke the callbacks). + # + # @private + def unbind + unless @succeeded + @return_values.elapsed_time = Time.now - @return_values.start_time + @return_values.responder = @responder + @return_values.code = @code + @return_values.message = @msg + set_deferred_status(:failed, @return_values) + end + end + + # @private + def receive_line ln + $>.puts ln if @args[:verbose] + @range = ln[0...1].to_i + @code = ln[0...3].to_i + @msg << ln[4..-1] + unless ln[3...4] == '-' + $>.puts @responder if @args[:verbose] + send @responder + @msg.clear + end + end + + private + + # We encountered an error from the server and will close the connection. + # Use the error and message the server returned. + # + def invoke_error + @return_values.elapsed_time = Time.now - @return_values.start_time + @return_values.responder = @responder + @return_values.code = @code + @return_values.message = @msg + set_deferred_status :failed, @return_values + send_data "QUIT\r\n" + close_connection_after_writing + end + + # We encountered an error on our side of the protocol and will close the connection. + # Use an extra-protocol error code (900) and use the message from the caller. + # + def invoke_internal_error msg = "???" + @return_values.elapsed_time = Time.now - @return_values.start_time + @return_values.responder = @responder + @return_values.code = 900 + @return_values.message = msg + set_deferred_status :failed, @return_values + send_data "QUIT\r\n" + close_connection_after_writing + end + + def send_ehlo + send_data "EHLO #{@args[:domain]}\r\n" + end + + def receive_signon + return invoke_error unless @range == 2 + send_ehlo + @responder = :receive_ehlo_response + end + def receive_ehlo_response + return invoke_error unless @range == 2 + @server_caps = @msg + invoke_starttls + end + + def invoke_starttls + if @args[:starttls] + # It would be more sociable to first ask if @server_caps contains + # the string "STARTTLS" before we invoke it, but hey, life's too short. + send_data "STARTTLS\r\n" + @responder = :receive_starttls_response + else + invoke_auth + end + end + def receive_starttls_response + return invoke_error unless @range == 2 + start_tls + invoke_ehlo_over_tls + end + + def invoke_ehlo_over_tls + send_ehlo + @responder = :receive_ehlo_over_tls_response + end + def receive_ehlo_over_tls_response + return invoke_error unless @range == 2 + invoke_auth + end + + # Perform an authentication. If the caller didn't request one, then fall through + # to the mail-from state. + def invoke_auth + if @args[:auth] + if @args[:auth][:type] == :plain + psw = @args[:auth][:password] + if psw.respond_to?(:call) + psw = psw.call + end + #str = Base64::encode64("\0#{@args[:auth][:username]}\0#{psw}").chomp + str = ["\0#{@args[:auth][:username]}\0#{psw}"].pack("m").gsub(/\n/, '') + send_data "AUTH PLAIN #{str}\r\n" + @responder = :receive_auth_response + else + return invoke_internal_error("unsupported auth type") + end + else + invoke_mail_from + end + end + def receive_auth_response + return invoke_error unless @range == 2 + invoke_mail_from + end + + def invoke_mail_from + send_data "MAIL FROM: <#{@args[:from]}>\r\n" + @responder = :receive_mail_from_response + end + def receive_mail_from_response + return invoke_error unless @range == 2 + invoke_rcpt_to + end + + def invoke_rcpt_to + @rcpt_responses ||= [] + l = @rcpt_responses.length + to = @args[:to].is_a?(Array) ? @args[:to] : [@args[:to].to_s] + if l < to.length + send_data "RCPT TO: <#{to[l]}>\r\n" + @responder = :receive_rcpt_to_response + else + e = @rcpt_responses.select {|rr| rr.last == 2} + if e and e.length > 0 + invoke_data + else + invoke_error + end + end + end + def receive_rcpt_to_response + @rcpt_responses << [@code, @msg, @range] + invoke_rcpt_to + end + + def escape_leading_dots(s) + s.gsub(/^\./, '..') + end + + def invoke_data + send_data "DATA\r\n" + @responder = :receive_data_response + end + def receive_data_response + return invoke_error unless @range == 3 + + # The data to send can be given in either @args[:message], @args[:content], or the + # combination of @args[:header] and @args[:body]. + # + # - @args[:message] (String) MUST be a valid RFC2822 Internet Message + # + # - @args[:content] (String) MUST be in correct SMTP body format, with escaped + # leading dots and a trailing dot line + # + # - @args[:header] (Hash or String) + # - @args[:body] (Array or String) + if @args[:message] + send_data escape_leading_dots(@args[:message].to_s) + send_data "\r\n.\r\n" + elsif @args[:content] + send_data @args[:content].to_s + else + # The header can be a hash or an array. + if @args[:header].is_a?(Hash) + (@args[:header] || {}).each {|k,v| send_data escape_leading_dots("#{k}: #{v}\r\n") } + else + send_data escape_leading_dots(@args[:header].to_s) + end + send_data "\r\n" + + if @args[:body].is_a?(Array) + @args[:body].each {|e| send_data escape_leading_dots(e)} + else + send_data escape_leading_dots(@args[:body].to_s) + end + + send_data "\r\n.\r\n" + end + + @responder = :receive_message_response + end + def receive_message_response + return invoke_error unless @range == 2 + send_data "QUIT\r\n" + close_connection_after_writing + @succeeded = true + @return_values.elapsed_time = Time.now - @return_values.start_time + @return_values.responder = @responder + @return_values.code = @code + @return_values.message = @msg + set_deferred_status :succeeded, @return_values + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpserver.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpserver.rb new file mode 100644 index 0000000000..e0f1f05d94 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/smtpserver.rb @@ -0,0 +1,666 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 July 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + module Protocols + + # This is a protocol handler for the server side of SMTP. + # It's NOT a complete SMTP server obeying all the semantics of servers conforming to + # RFC2821. Rather, it uses overridable method stubs to communicate protocol states + # and data to user code. User code is responsible for doing the right things with the + # data in order to get complete and correct SMTP server behavior. + # + # Simple SMTP server example: + # + # class EmailServer < EM::P::SmtpServer + # def receive_plain_auth(user, pass) + # true + # end + # + # def get_server_domain + # "mock.smtp.server.local" + # end + # + # def get_server_greeting + # "mock smtp server greets you with impunity" + # end + # + # def receive_sender(sender) + # current.sender = sender + # true + # end + # + # def receive_recipient(recipient) + # current.recipient = recipient + # true + # end + # + # def receive_message + # current.received = true + # current.completed_at = Time.now + # + # p [:received_email, current] + # @current = OpenStruct.new + # true + # end + # + # def receive_ehlo_domain(domain) + # @ehlo_domain = domain + # true + # end + # + # def receive_data_command + # current.data = "" + # true + # end + # + # def receive_data_chunk(data) + # current.data << data.join("\n") + # true + # end + # + # def receive_transaction + # if @ehlo_domain + # current.ehlo_domain = @ehlo_domain + # @ehlo_domain = nil + # end + # true + # end + # + # def current + # @current ||= OpenStruct.new + # end + # + # def self.start(host = 'localhost', port = 1025) + # require 'ostruct' + # @server = EM.start_server host, port, self + # end + # + # def self.stop + # if @server + # EM.stop_server @server + # @server = nil + # end + # end + # + # def self.running? + # !!@server + # end + # end + # + # EM.run{ EmailServer.start } + # + #-- + # Useful paragraphs in RFC-2821: + # 4.3.2: Concise list of command-reply sequences, in essence a text representation + # of the command state-machine. + # + # STARTTLS is defined in RFC2487. + # Observe that there are important rules governing whether a publicly-referenced server + # (meaning one whose Internet address appears in public MX records) may require the + # non-optional use of TLS. + # Non-optional TLS does not apply to EHLO, NOOP, QUIT or STARTTLS. + class SmtpServer < EventMachine::Connection + include Protocols::LineText2 + + HeloRegex = /\AHELO\s*/i + EhloRegex = /\AEHLO\s*/i + QuitRegex = /\AQUIT/i + MailFromRegex = /\AMAIL FROM:\s*/i + RcptToRegex = /\ARCPT TO:\s*/i + DataRegex = /\ADATA/i + NoopRegex = /\ANOOP/i + RsetRegex = /\ARSET/i + VrfyRegex = /\AVRFY\s+/i + ExpnRegex = /\AEXPN\s+/i + HelpRegex = /\AHELP/i + StarttlsRegex = /\ASTARTTLS/i + AuthRegex = /\AAUTH\s+/i + + + # Class variable containing default parameters that can be overridden + # in application code. + # Individual objects of this class will make an instance-local copy of + # the class variable, so that they can be reconfigured on a per-instance + # basis. + # + # Chunksize is the number of data lines we'll buffer before + # sending them to the application. TODO, make this user-configurable. + # + @@parms = { + :chunksize => 4000, + :verbose => false + } + def self.parms= parms={} + @@parms.merge!(parms) + end + + + + def initialize *args + super + @parms = @@parms + init_protocol_state + end + + def parms= parms={} + @parms.merge!(parms) + end + + # In SMTP, the server talks first. But by a (perhaps flawed) axiom in EM, + # #post_init will execute BEFORE the block passed to #start_server, for any + # given accepted connection. Since in this class we'll probably be getting + # a lot of initialization parameters, we want the guts of post_init to + # run AFTER the application has initialized the connection object. So we + # use a spawn to schedule the post_init to run later. + # It's a little weird, I admit. A reasonable alternative would be to set + # parameters as a class variable and to do that before accepting any connections. + # + # OBSOLETE, now we have @@parms. But the spawn is nice to keep as an illustration. + # + def post_init + #send_data "220 #{get_server_greeting}\r\n" (ORIGINAL) + #(EM.spawn {|x| x.send_data "220 #{x.get_server_greeting}\r\n"}).notify(self) + (EM.spawn {|x| x.send_server_greeting}).notify(self) + end + + def send_server_greeting + send_data "220 #{get_server_greeting}\r\n" + end + + def receive_line ln + @@parms[:verbose] and $>.puts ">>> #{ln}" + + return process_data_line(ln) if @state.include?(:data) + return process_auth_line(ln) if @state.include?(:auth_incomplete) + + case ln + when EhloRegex + process_ehlo $'.dup + when HeloRegex + process_helo $'.dup + when MailFromRegex + process_mail_from $'.dup + when RcptToRegex + process_rcpt_to $'.dup + when DataRegex + process_data + when RsetRegex + process_rset + when VrfyRegex + process_vrfy + when ExpnRegex + process_expn + when HelpRegex + process_help + when NoopRegex + process_noop + when QuitRegex + process_quit + when StarttlsRegex + process_starttls + when AuthRegex + process_auth $'.dup + else + process_unknown + end + end + + # TODO - implement this properly, the implementation is a stub! + def process_help + send_data "250 Ok, but unimplemented\r\n" + end + + # RFC2821, 3.5.3 Meaning of VRFY or EXPN Success Response: + # A server MUST NOT return a 250 code in response to a VRFY or EXPN + # command unless it has actually verified the address. In particular, + # a server MUST NOT return 250 if all it has done is to verify that the + # syntax given is valid. In that case, 502 (Command not implemented) + # or 500 (Syntax error, command unrecognized) SHOULD be returned. + # + # TODO - implement this properly, the implementation is a stub! + def process_vrfy + send_data "502 Command not implemented\r\n" + end + # TODO - implement this properly, the implementation is a stub! + def process_expn + send_data "502 Command not implemented\r\n" + end + + #-- + # This is called at several points to restore the protocol state + # to a pre-transaction state. In essence, we "forget" having seen + # any valid command except EHLO and STARTTLS. + # We also have to callback user code, in case they're keeping track + # of senders, recipients, and whatnot. + # + # We try to follow the convention of avoiding the verb "receive" for + # internal method names except receive_line (which we inherit), and + # using only receive_xxx for user-overridable stubs. + # + # init_protocol_state is called when we initialize the connection as + # well as during reset_protocol_state. It does NOT call the user + # override method. This enables us to promise the users that they + # won't see the overridable fire except after EHLO and RSET, and + # after a message has been received. Although the latter may be wrong. + # The standard may allow multiple DATA segments with the same set of + # senders and recipients. + # + def reset_protocol_state + init_protocol_state + s,@state = @state,[] + @state << :starttls if s.include?(:starttls) + @state << :ehlo if s.include?(:ehlo) + receive_transaction + end + def init_protocol_state + @state ||= [] + end + + + #-- + # EHLO/HELO is always legal, per the standard. On success + # it always clears buffers and initiates a mail "transaction." + # Which means that a MAIL FROM must follow. + # + # Per the standard, an EHLO/HELO or a RSET "initiates" an email + # transaction. Thereafter, MAIL FROM must be received before + # RCPT TO, before DATA. Not sure what this specific ordering + # achieves semantically, but it does make it easier to + # implement. We also support user-specified requirements for + # STARTTLS and AUTH. We make it impossible to proceed to MAIL FROM + # without fulfilling tls and/or auth, if the user specified either + # or both as required. We need to check the extension standard + # for auth to see if a credential is discarded after a RSET along + # with all the rest of the state. We'll behave as if it is. + # Now clearly, we can't discard tls after its been negotiated + # without dropping the connection, so that flag doesn't get cleared. + # + def process_ehlo domain + if receive_ehlo_domain domain + send_data "250-#{get_server_domain}\r\n" + if @@parms[:starttls] + send_data "250-STARTTLS\r\n" + end + if @@parms[:auth] + send_data "250-AUTH PLAIN\r\n" + end + send_data "250-NO-SOLICITING\r\n" + # TODO, size needs to be configurable. + send_data "250 SIZE 20000000\r\n" + reset_protocol_state + @state << :ehlo + else + send_data "550 Requested action not taken\r\n" + end + end + + def process_helo domain + if receive_ehlo_domain domain.dup + send_data "250 #{get_server_domain}\r\n" + reset_protocol_state + @state << :ehlo + else + send_data "550 Requested action not taken\r\n" + end + end + + def process_quit + send_data "221 Ok\r\n" + close_connection_after_writing + end + + def process_noop + send_data "250 Ok\r\n" + end + + def process_unknown + send_data "500 Unknown command\r\n" + end + + #-- + # So far, only AUTH PLAIN is supported but we should do at least LOGIN as well. + # TODO, support clients that send AUTH PLAIN with no parameter, expecting a 3xx + # response and a continuation of the auth conversation. + # + def process_auth str + if @state.include?(:auth) + send_data "503 auth already issued\r\n" + elsif str =~ /\APLAIN\s?/i + if $'.length == 0 + # we got a partial response, so let the client know to send the rest + @state << :auth_incomplete + send_data("334 \r\n") + else + # we got the initial response, so go ahead & process it + process_auth_line($') + end + #elsif str =~ /\ALOGIN\s+/i + else + send_data "504 auth mechanism not available\r\n" + end + end + + def process_auth_line(line) + plain = line.unpack("m").first + _,user,psw = plain.split("\000") + + succeeded = proc { + send_data "235 authentication ok\r\n" + @state << :auth + } + failed = proc { + send_data "535 invalid authentication\r\n" + } + auth = receive_plain_auth user,psw + + if auth.respond_to?(:callback) + auth.callback(&succeeded) + auth.errback(&failed) + else + (auth ? succeeded : failed).call + end + + @state.delete :auth_incomplete + end + + #-- + # Unusually, we can deal with a Deferrable returned from the user application. + # This was added to deal with a special case in a particular application, but + # it would be a nice idea to add it to the other user-code callbacks. + # + def process_data + unless @state.include?(:rcpt) + send_data "503 Operation sequence error\r\n" + else + succeeded = proc { + send_data "354 Send it\r\n" + @state << :data + @databuffer = [] + } + failed = proc { + send_data "550 Operation failed\r\n" + } + + d = receive_data_command + + if d.respond_to?(:callback) + d.callback(&succeeded) + d.errback(&failed) + else + (d ? succeeded : failed).call + end + end + end + + def process_rset + reset_protocol_state + receive_reset + send_data "250 Ok\r\n" + end + + def unbind + connection_ended + end + + #-- + # STARTTLS may not be issued before EHLO, or unless the user has chosen + # to support it. + # + # If :starttls_options is present and :starttls is set in the parms + # pass the options in :starttls_options to start_tls. Do this if you want to use + # your own certificate + # e.g. {:cert_chain_file => "/etc/ssl/cert.pem", :private_key_file => "/etc/ssl/private/cert.key"} + + def process_starttls + if @@parms[:starttls] + if @state.include?(:starttls) + send_data "503 TLS Already negotiated\r\n" + elsif ! @state.include?(:ehlo) + send_data "503 EHLO required before STARTTLS\r\n" + else + send_data "220 Start TLS negotiation\r\n" + start_tls(@@parms[:starttls_options] || {}) + @state << :starttls + end + else + process_unknown + end + end + + + #-- + # Requiring TLS is touchy, cf RFC2784. + # Requiring AUTH seems to be much more reasonable. + # We don't currently support any notion of deriving an authentication from the TLS + # negotiation, although that would certainly be reasonable. + # We DON'T allow MAIL FROM to be given twice. + # We DON'T enforce all the various rules for validating the sender or + # the reverse-path (like whether it should be null), and notifying the reverse + # path in case of delivery problems. All of that is left to the calling application. + # + def process_mail_from sender + if (@@parms[:starttls]==:required and !@state.include?(:starttls)) + send_data "550 This server requires STARTTLS before MAIL FROM\r\n" + elsif (@@parms[:auth]==:required and !@state.include?(:auth)) + send_data "550 This server requires authentication before MAIL FROM\r\n" + elsif @state.include?(:mail_from) + send_data "503 MAIL already given\r\n" + else + unless receive_sender sender + send_data "550 sender is unacceptable\r\n" + else + send_data "250 Ok\r\n" + @state << :mail_from + end + end + end + + #-- + # Since we require :mail_from to have been seen before we process RCPT TO, + # we don't need to repeat the tests for TLS and AUTH. + # Note that we don't remember or do anything else with the recipients. + # All of that is on the user code. + # TODO: we should enforce user-definable limits on the total number of + # recipients per transaction. + # We might want to make sure that a given recipient is only seen once, but + # for now we'll let that be the user's problem. + # + # User-written code can return a deferrable from receive_recipient. + # + def process_rcpt_to rcpt + unless @state.include?(:mail_from) + send_data "503 MAIL is required before RCPT\r\n" + else + succeeded = proc { + send_data "250 Ok\r\n" + @state << :rcpt unless @state.include?(:rcpt) + } + failed = proc { + send_data "550 recipient is unacceptable\r\n" + } + + d = receive_recipient rcpt + + if d.respond_to?(:set_deferred_status) + d.callback(&succeeded) + d.errback(&failed) + else + (d ? succeeded : failed).call + end + +=begin + unless receive_recipient rcpt + send_data "550 recipient is unacceptable\r\n" + else + send_data "250 Ok\r\n" + @state << :rcpt unless @state.include?(:rcpt) + end +=end + end + end + + + # Send the incoming data to the application one chunk at a time, rather than + # one line at a time. That lets the application be a little more flexible about + # storing to disk, etc. + # Since we clear the chunk array every time we submit it, the caller needs to be + # aware to do things like dup it if he wants to keep it around across calls. + # + # Resets the transaction upon disposition of the incoming message. + # RFC5321 says this about the MAIL FROM command: + # "This command tells the SMTP-receiver that a new mail transaction is + # starting and to reset all its state tables and buffers, including any + # recipients or mail data." + # + # Equivalent behaviour is implemented by resetting after a completed transaction. + # + # User-written code can return a Deferrable as a response from receive_message. + # + def process_data_line ln + if ln == "." + if @databuffer.length > 0 + receive_data_chunk @databuffer + @databuffer.clear + end + + + succeeded = proc { + send_data "250 Message accepted\r\n" + reset_protocol_state + } + failed = proc { + send_data "550 Message rejected\r\n" + reset_protocol_state + } + d = receive_message + + if d.respond_to?(:set_deferred_status) + d.callback(&succeeded) + d.errback(&failed) + else + (d ? succeeded : failed).call + end + + @state.delete :data + else + # slice off leading . if any + ln.slice!(0...1) if ln[0] == ?. + @databuffer << ln + if @databuffer.length > @@parms[:chunksize] + receive_data_chunk @databuffer + @databuffer.clear + end + end + end + + + #------------------------------------------ + # Everything from here on can be overridden in user code. + + # The greeting returned in the initial connection message to the client. + def get_server_greeting + "EventMachine SMTP Server" + end + # The domain name returned in the first line of the response to a + # successful EHLO or HELO command. + def get_server_domain + "Ok EventMachine SMTP Server" + end + + # A false response from this user-overridable method will cause a + # 550 error to be returned to the remote client. + # + def receive_ehlo_domain domain + true + end + + # Return true or false to indicate that the authentication is acceptable. + def receive_plain_auth user, password + true + end + + # Receives the argument of the MAIL FROM command. Return false to + # indicate to the remote client that the sender is not accepted. + # This can only be successfully called once per transaction. + # + def receive_sender sender + true + end + + # Receives the argument of a RCPT TO command. Can be given multiple + # times per transaction. Return false to reject the recipient. + # + def receive_recipient rcpt + true + end + + # Sent when the remote peer issues the RSET command. + # Since RSET is not allowed to fail (according to the protocol), + # we ignore any return value from user overrides of this method. + # + def receive_reset + end + + # Sent when the remote peer has ended the connection. + # + def connection_ended + end + + # Called when the remote peer sends the DATA command. + # Returning false will cause us to send a 550 error to the peer. + # This can be useful for dealing with problems that arise from processing + # the whole set of sender and recipients. + # + def receive_data_command + true + end + + # Sent when data from the remote peer is available. The size can be controlled + # by setting the :chunksize parameter. This call can be made multiple times. + # The goal is to strike a balance between sending the data to the application one + # line at a time, and holding all of a very large message in memory. + # + def receive_data_chunk data + @smtps_msg_size ||= 0 + @smtps_msg_size += data.join.length + STDERR.write "<#{@smtps_msg_size}>" + end + + # Sent after a message has been completely received. User code + # must return true or false to indicate whether the message has + # been accepted for delivery. + def receive_message + @@parms[:verbose] and $>.puts "Received complete message" + true + end + + # This is called when the protocol state is reset. It happens + # when the remote client calls EHLO/HELO or RSET. + def receive_transaction + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/socks4.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/socks4.rb new file mode 100644 index 0000000000..132f32099e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/socks4.rb @@ -0,0 +1,66 @@ +module EventMachine + module Protocols + # Basic SOCKS v4 client implementation + # + # Use as you would any regular connection: + # + # class MyConn < EM::P::Socks4 + # def post_init + # send_data("sup") + # end + # + # def receive_data(data) + # send_data("you said: #{data}") + # end + # end + # + # EM.connect socks_host, socks_port, MyConn, host, port + # + class Socks4 < Connection + def initialize(host, port) + @host = Socket.gethostbyname(host).last + @port = port + @socks_error_code = nil + @buffer = '' + setup_methods + end + + def setup_methods + class << self + def post_init; socks_post_init; end + def receive_data(*a); socks_receive_data(*a); end + end + end + + def restore_methods + class << self + remove_method :post_init + remove_method :receive_data + end + end + + def socks_post_init + header = [4, 1, @port, @host, 0].flatten.pack("CCnA4C") + send_data(header) + end + + def socks_receive_data(data) + @buffer << data + return if @buffer.size < 8 + + header_resp = @buffer.slice! 0, 8 + _, r = header_resp.unpack("cc") + if r != 90 + @socks_error_code = r + close_connection + return + end + + restore_methods + + post_init + receive_data(@buffer) unless @buffer.empty? + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/stomp.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/stomp.rb new file mode 100644 index 0000000000..ca6f078edf --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/stomp.rb @@ -0,0 +1,205 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 15 November 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# +# + +module EventMachine + module Protocols + + # Implements Stomp (http://docs.codehaus.org/display/STOMP/Protocol). + # + # == Usage example + # + # module StompClient + # include EM::Protocols::Stomp + # + # def connection_completed + # connect :login => 'guest', :passcode => 'guest' + # end + # + # def receive_msg msg + # if msg.command == "CONNECTED" + # subscribe '/some/topic' + # else + # p ['got a message', msg] + # puts msg.body + # end + # end + # end + # + # EM.run{ + # EM.connect 'localhost', 61613, StompClient + # } + # + module Stomp + include LineText2 + + class Message + # The command associated with the message, usually 'CONNECTED' or 'MESSAGE' + attr_accessor :command + # Hash containing headers such as destination and message-id + attr_accessor :header + alias :headers :header + # Body of the message + attr_accessor :body + + # @private + def initialize + @header = {} + @state = :precommand + @content_length = nil + end + # @private + def consume_line line + if @state == :precommand + unless line =~ /\A\s*\Z/ + @command = line + @state = :headers + end + elsif @state == :headers + if line == "" + if @content_length + yield( [:sized_text, @content_length+1] ) + else + @state = :body + yield( [:unsized_text] ) + end + elsif line =~ /\A([^:]+):(.+)\Z/ + k = $1.dup.strip + v = $2.dup.strip + @header[k] = v + if k == "content-length" + @content_length = v.to_i + end + else + # This is a protocol error. How to signal it? + end + elsif @state == :body + @body = line + yield( [:dispatch] ) + end + end + end + + # @private + def send_frame verb, headers={}, body="" + body = body.to_s + ary = [verb, "\n"] + body_bytesize = body.bytesize if body.respond_to? :bytesize + body_bytesize ||= body.size + headers.each {|k,v| ary << "#{k}:#{v}\n" } + ary << "content-length: #{body_bytesize}\n" + ary << "content-type: text/plain; charset=UTF-8\n" unless headers.has_key? 'content-type' + ary << "\n" + ary << body + ary << "\0" + send_data ary.join + end + + # @private + def receive_line line + @stomp_initialized || init_message_reader + @stomp_message.consume_line(line) {|outcome| + if outcome.first == :sized_text + set_text_mode outcome[1] + elsif outcome.first == :unsized_text + set_delimiter "\0" + elsif outcome.first == :dispatch + receive_msg(@stomp_message) if respond_to?(:receive_msg) + init_message_reader + end + } + end + + # @private + def receive_binary_data data + @stomp_message.body = data[0..-2] + receive_msg(@stomp_message) if respond_to?(:receive_msg) + init_message_reader + end + + # @private + def init_message_reader + @stomp_initialized = true + set_delimiter "\n" + set_line_mode + @stomp_message = Message.new + end + + # Invoked with an incoming Stomp::Message received from the STOMP server + def receive_msg msg + # stub, overwrite this in your handler + end + + # CONNECT command, for authentication + # + # connect :login => 'guest', :passcode => 'guest' + # + def connect parms={} + send_frame "CONNECT", parms + end + + # SEND command, for publishing messages to a topic + # + # send '/topic/name', 'some message here' + # + def send destination, body, parms={} + send_frame "SEND", parms.merge( :destination=>destination ), body.to_s + end + + # SUBSCRIBE command, for subscribing to topics + # + # subscribe '/topic/name', false + # + def subscribe dest, ack=false + send_frame "SUBSCRIBE", {:destination=>dest, :ack=>(ack ? "client" : "auto")} + end + + # ACK command, for acknowledging receipt of messages + # + # module StompClient + # include EM::P::Stomp + # + # def connection_completed + # connect :login => 'guest', :passcode => 'guest' + # # subscribe with ack mode + # subscribe '/some/topic', true + # end + # + # def receive_msg msg + # if msg.command == "MESSAGE" + # ack msg.headers['message-id'] + # puts msg.body + # end + # end + # end + # + def ack msgid + send_frame "ACK", 'message-id'=> msgid + end + + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/tcptest.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/tcptest.rb new file mode 100644 index 0000000000..318789303e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols/tcptest.rb @@ -0,0 +1,54 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 16 July 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# +# + +module EventMachine + module Protocols + + # @private + class TcpConnectTester < Connection + include EventMachine::Deferrable + + def self.test( host, port ) + EventMachine.connect( host, port, self ) + end + + def post_init + @start_time = Time.now + end + + def connection_completed + @completed = true + set_deferred_status :succeeded, (Time.now - @start_time) + close_connection + end + + def unbind + set_deferred_status :failed, (Time.now - @start_time) unless @completed + end + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pure_ruby.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pure_ruby.rb new file mode 100644 index 0000000000..94fd17548f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/pure_ruby.rb @@ -0,0 +1,1284 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 8 Apr 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#------------------------------------------------------------------- +# +# + +# TODO List: +# TCP-connects currently assume non-blocking connect is available- need to +# degrade automatically on versions of Ruby prior to June 2006. +# + +require 'singleton' +require 'forwardable' +require 'socket' +require 'fcntl' +require 'set' +require 'openssl' + +module EventMachine + # @private + class Error < Exception; end + # @private + class UnknownTimerFired < RuntimeError; end + # @private + class Unsupported < RuntimeError; end + # @private + class ConnectionError < RuntimeError; end + # @private + class ConnectionNotBound < RuntimeError; end + + # Older versions of Ruby may not provide the SSLErrorWaitReadable + # OpenSSL class. Create an error class to act as a "proxy". + if defined?(OpenSSL::SSL::SSLErrorWaitReadable) + SSLConnectionWaitReadable = OpenSSL::SSL::SSLErrorWaitReadable + else + SSLConnectionWaitReadable = IO::WaitReadable + end + + # Older versions of Ruby may not provide the SSLErrorWaitWritable + # OpenSSL class. Create an error class to act as a "proxy". + if defined?(OpenSSL::SSL::SSLErrorWaitWritable) + SSLConnectionWaitWritable = OpenSSL::SSL::SSLErrorWaitWritable + else + SSLConnectionWaitWritable = IO::WaitWritable + end +end + +module EventMachine + class CertificateCreator + attr_reader :cert, :key + + def initialize + @key = OpenSSL::PKey::RSA.new(1024) + public_key = @key.public_key + subject = "/C=EventMachine/O=EventMachine/OU=EventMachine/CN=EventMachine" + @cert = OpenSSL::X509::Certificate.new + @cert.subject = @cert.issuer = OpenSSL::X509::Name.parse(subject) + @cert.not_before = Time.now + @cert.not_after = Time.now + 365 * 24 * 60 * 60 + @cert.public_key = public_key + @cert.serial = 0x0 + @cert.version = 2 + factory = OpenSSL::X509::ExtensionFactory.new + factory.subject_certificate = @cert + factory.issuer_certificate = @cert + @cert.extensions = [ + factory.create_extension("basicConstraints","CA:TRUE", true), + factory.create_extension("subjectKeyIdentifier", "hash") + ] + @cert.add_extension factory.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always") + @cert.sign(@key, OpenSSL::Digest::SHA1.new) + end + end + + # @private + DefaultCertificate = CertificateCreator.new + + # @private + DefaultDHKey1024 = OpenSSL::PKey::DH.new <<-_end_of_pem_ +-----BEGIN DH PARAMETERS----- +MIGHAoGBAJ0lOVy0VIr/JebWn0zDwY2h+rqITFOpdNr6ugsgvkDXuucdcChhYExJ +AV/ZD2AWPbrTqV76mGRgJg4EddgT1zG0jq3rnFdMj2XzkBYx3BVvfR0Arnby0RHR +T4h7KZ/2zmjvV+eF8kBUHBJAojUlzxKj4QeO2x20FP9X5xmNUXeDAgEC +-----END DH PARAMETERS----- + _end_of_pem_ + + # @private + DefaultDHKey2048 = OpenSSL::PKey::DH.new <<-_end_of_pem_ +-----BEGIN DH PARAMETERS----- +MIIBCAKCAQEA7E6kBrYiyvmKAMzQ7i8WvwVk9Y/+f8S7sCTN712KkK3cqd1jhJDY +JbrYeNV3kUIKhPxWHhObHKpD1R84UpL+s2b55+iMd6GmL7OYmNIT/FccKhTcveab +VBmZT86BZKYyf45hUF9FOuUM9xPzuK3Vd8oJQvfYMCd7LPC0taAEljQLR4Edf8E6 +YoaOffgTf5qxiwkjnlVZQc3whgnEt9FpVMvQ9eknyeGB5KHfayAc3+hUAvI3/Cr3 +1bNveX5wInh5GDx1FGhKBZ+s1H+aedudCm7sCgRwv8lKWYGiHzObSma8A86KG+MD +7Lo5JquQ3DlBodj3IDyPrxIv96lvRPFtAwIBAg== +-----END DH PARAMETERS----- + _end_of_pem_ +end + +# @private +module EventMachine + class << self + # This is mostly useful for automated tests. + # Return a distinctive symbol so the caller knows whether he's dealing + # with an extension or with a pure-Ruby library. + # @private + def library_type + :pure_ruby + end + + # @private + def initialize_event_machine + Reactor.instance.initialize_for_run + end + + # Changed 04Oct06: intervals from the caller are now in milliseconds, but our native-ruby + # processor still wants them in seconds. + # @private + def add_oneshot_timer interval + Reactor.instance.install_oneshot_timer(interval / 1000) + end + + # @private + def run_machine + Reactor.instance.run + end + + # @private + def release_machine + end + + + def stopping? + return Reactor.instance.stop_scheduled + end + + # @private + def stop + Reactor.instance.stop + end + + # @private + def connect_server host, port + bind_connect_server nil, nil, host, port + end + + # @private + def bind_connect_server bind_addr, bind_port, host, port + EvmaTCPClient.connect(bind_addr, bind_port, host, port).uuid + end + + # @private + def send_data target, data, datalength + selectable = Reactor.instance.get_selectable( target ) or raise "unknown send_data target" + selectable.send_data data + end + + # @private + def close_connection target, after_writing + selectable = Reactor.instance.get_selectable( target ) + selectable.schedule_close after_writing if selectable + end + + # @private + def start_tcp_server host, port + (s = EvmaTCPServer.start_server host, port) or raise "no acceptor" + s.uuid + end + + # @private + def stop_tcp_server sig + s = Reactor.instance.get_selectable(sig) + s.schedule_close + end + + # @private + def start_unix_server chain + (s = EvmaUNIXServer.start_server chain) or raise "no acceptor" + s.uuid + end + + # @private + def connect_unix_server chain + EvmaUNIXClient.connect(chain).uuid + end + + # @private + def signal_loopbreak + Reactor.instance.signal_loopbreak + end + + # @private + def get_peername sig + selectable = Reactor.instance.get_selectable( sig ) or raise "unknown get_peername target" + selectable.get_peername + end + + # @private + def get_sockname sig + selectable = Reactor.instance.get_selectable( sig ) or raise "unknown get_sockname target" + selectable.get_sockname + end + + # @private + def open_udp_socket host, port + EvmaUDPSocket.create(host, port).uuid + end + + # This is currently only for UDP! + # We need to make it work with unix-domain sockets as well. + # @private + def send_datagram target, data, datalength, host, port + selectable = Reactor.instance.get_selectable( target ) or raise "unknown send_data target" + selectable.send_datagram data, Socket::pack_sockaddr_in(port, host) + end + + + # Sets reactor quantum in milliseconds. The underlying Reactor function wants a (possibly + # fractional) number of seconds. + # @private + def set_timer_quantum interval + Reactor.instance.set_timer_quantum(( 1.0 * interval) / 1000.0) + end + + # This method is a harmless no-op in the pure-Ruby implementation. This is intended to ensure + # that user code behaves properly across different EM implementations. + # @private + def epoll + end + + # @private + def ssl? + true + end + + def tls_parm_set?(parm) + !(parm.nil? || parm.empty?) + end + + # This method takes a series of positional arguments for specifying such + # things as private keys and certificate chains. It's expected that the + # parameter list will grow as we add more supported features. ALL of these + # parameters are optional, and can be specified as empty or nil strings. + # @private + def set_tls_parms signature, priv_key, cert_chain, verify_peer, fail_if_no_peer_cert, sni_hostname, cipher_list, ecdh_curve, dhparam, protocols_bitmask + bitmask = protocols_bitmask + ssl_options = OpenSSL::SSL::OP_ALL + ssl_options |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2) && EM_PROTO_SSLv2 & bitmask == 0 + ssl_options |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3) && EM_PROTO_SSLv3 & bitmask == 0 + ssl_options |= OpenSSL::SSL::OP_NO_TLSv1 if defined?(OpenSSL::SSL::OP_NO_TLSv1) && EM_PROTO_TLSv1 & bitmask == 0 + ssl_options |= OpenSSL::SSL::OP_NO_TLSv1_1 if defined?(OpenSSL::SSL::OP_NO_TLSv1_1) && EM_PROTO_TLSv1_1 & bitmask == 0 + ssl_options |= OpenSSL::SSL::OP_NO_TLSv1_2 if defined?(OpenSSL::SSL::OP_NO_TLSv1_2) && EM_PROTO_TLSv1_2 & bitmask == 0 + @tls_parms ||= {} + @tls_parms[signature] = { + :verify_peer => verify_peer, + :fail_if_no_peer_cert => fail_if_no_peer_cert, + :ssl_options => ssl_options + } + @tls_parms[signature][:priv_key] = File.read(priv_key) if tls_parm_set?(priv_key) + @tls_parms[signature][:cert_chain] = File.read(cert_chain) if tls_parm_set?(cert_chain) + @tls_parms[signature][:sni_hostname] = sni_hostname if tls_parm_set?(sni_hostname) + @tls_parms[signature][:cipher_list] = cipher_list.gsub(/,\s*/, ':') if tls_parm_set?(cipher_list) + @tls_parms[signature][:dhparam] = File.read(dhparam) if tls_parm_set?(dhparam) + @tls_parms[signature][:ecdh_curve] = ecdh_curve if tls_parm_set?(ecdh_curve) + end + + def start_tls signature + selectable = Reactor.instance.get_selectable(signature) or raise "unknown io selectable for start_tls" + tls_parms = @tls_parms[signature] + ctx = OpenSSL::SSL::SSLContext.new + ctx.options = tls_parms[:ssl_options] + ctx.cert = DefaultCertificate.cert + ctx.key = DefaultCertificate.key + ctx.cert_store = OpenSSL::X509::Store.new + ctx.cert_store.set_default_paths + ctx.cert = OpenSSL::X509::Certificate.new(tls_parms[:cert_chain]) if tls_parms[:cert_chain] + ctx.key = OpenSSL::PKey::RSA.new(tls_parms[:priv_key]) if tls_parms[:priv_key] + verify_mode = OpenSSL::SSL::VERIFY_NONE + if tls_parms[:verify_peer] + verify_mode |= OpenSSL::SSL::VERIFY_PEER + end + if tls_parms[:fail_if_no_peer_cert] + verify_mode |= OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT + end + ctx.verify_mode = verify_mode + ctx.servername_cb = Proc.new do |_, server_name| + tls_parms[:server_name] = server_name + nil + end + ctx.ciphers = tls_parms[:cipher_list] if tls_parms[:cipher_list] + if selectable.is_server + ctx.tmp_dh_callback = Proc.new do |_, _, key_length| + if tls_parms[:dhparam] + OpenSSL::PKey::DH.new(tls_parms[:dhparam]) + else + case key_length + when 1024 then DefaultDHKey1024 + when 2048 then DefaultDHKey2048 + else + nil + end + end + end + if tls_parms[:ecdh_curve] && ctx.respond_to?(:tmp_ecdh_callback) + ctx.tmp_ecdh_callback = Proc.new do + OpenSSL::PKey::EC.new(tls_parms[:ecdh_curve]) + end + end + end + ssl_io = OpenSSL::SSL::SSLSocket.new(selectable, ctx) + ssl_io.sync_close = true + if tls_parms[:sni_hostname] + ssl_io.hostname = tls_parms[:sni_hostname] if ssl_io.respond_to?(:hostname=) + end + begin + selectable.is_server ? ssl_io.accept_nonblock : ssl_io.connect_nonblock + rescue; end + selectable.io = ssl_io + end + + def get_peer_cert signature + selectable = Reactor.instance.get_selectable(signature) or raise "unknown get_peer_cert target" + if selectable.io.respond_to?(:peer_cert) && selectable.io.peer_cert + selectable.io.peer_cert.to_pem + else + nil + end + end + + def get_cipher_name signature + selectable = Reactor.instance.get_selectable(signature) or raise "unknown get_cipher_name target" + selectable.io.respond_to?(:cipher) ? selectable.io.cipher[0] : nil + end + + def get_cipher_protocol signature + selectable = Reactor.instance.get_selectable(signature) or raise "unknown get_cipher_protocol target" + selectable.io.respond_to?(:cipher) ? selectable.io.cipher[1] : nil + end + + def get_cipher_bits signature + selectable = Reactor.instance.get_selectable(signature) or raise "unknown get_cipher_bits target" + selectable.io.respond_to?(:cipher) ? selectable.io.cipher[2] : nil + end + + def get_sni_hostname signature + @tls_parms ||= {} + if @tls_parms[signature] + @tls_parms[signature][:server_name] + else + nil + end + end + + # This method is a no-op in the pure-Ruby implementation. We simply return Ruby's built-in + # per-process file-descriptor limit. + # @private + def set_rlimit_nofile n + 1024 + end + + # This method is a harmless no-op in pure Ruby, which doesn't have a built-in limit + # on the number of available timers. + # @private + def set_max_timer_count n + end + + # @private + def get_sock_opt signature, level, optname + selectable = Reactor.instance.get_selectable( signature ) or raise "unknown get_sock_opt target" + selectable.getsockopt level, optname + end + + # @private + def set_sock_opt signature, level, optname, optval + selectable = Reactor.instance.get_selectable( signature ) or raise "unknown set_sock_opt target" + selectable.setsockopt level, optname, optval + end + + # @private + def send_file_data sig, filename + sz = File.size(filename) + raise "file too large" if sz > 32*1024 + data = + begin + File.read filename + rescue + "" + end + send_data sig, data, data.length + end + + # @private + def get_outbound_data_size sig + r = Reactor.instance.get_selectable( sig ) or raise "unknown get_outbound_data_size target" + r.get_outbound_data_size + end + + # @private + def read_keyboard + EvmaKeyboard.open.uuid + end + + # @private + def set_comm_inactivity_timeout sig, tm + r = Reactor.instance.get_selectable( sig ) or raise "unknown set_comm_inactivity_timeout target" + r.set_inactivity_timeout tm + end + + # @private + def set_pending_connect_timeout sig, tm + # Needs to be implemented. Currently a no-op stub to allow + # certain software to operate with the EM pure-ruby. + end + + # @private + def report_connection_error_status signature + get_sock_opt(signature, Socket::SOL_SOCKET, Socket::SO_ERROR).int + end + end +end + +module EventMachine + # @private + class Connection + # @private + def get_outbound_data_size + EventMachine::get_outbound_data_size @signature + end + end +end + +module EventMachine + + # Factored out so we can substitute other implementations + # here if desired, such as the one in ActiveRBAC. + # @private + module UuidGenerator + def self.generate + @ix ||= 0 + @ix += 1 + end + end +end + + +module EventMachine + # @private + TimerFired = 100 + # @private + ConnectionData = 101 + # @private + ConnectionUnbound = 102 + # @private + ConnectionAccepted = 103 + # @private + ConnectionCompleted = 104 + # @private + LoopbreakSignalled = 105 + # @private + ConnectionNotifyReadable = 106 + # @private + ConnectionNotifyWritable = 107 + # @private + SslHandshakeCompleted = 108 + # @private + SslVerify = 109 + # @private + EM_PROTO_SSLv2 = 2 + # @private + EM_PROTO_SSLv3 = 4 + # @private + EM_PROTO_TLSv1 = 8 + # @private + EM_PROTO_TLSv1_1 = 16 + # @private + EM_PROTO_TLSv1_2 = 32 +end + +module EventMachine + # @private + class Reactor + include Singleton + + HeartbeatInterval = 2 + + attr_reader :current_loop_time, :stop_scheduled + + def initialize + initialize_for_run + end + + def install_oneshot_timer interval + uuid = UuidGenerator::generate + #@timers << [Time.now + interval, uuid] + #@timers.sort! {|a,b| a.first <=> b.first} + @timers.add([Time.now + interval, uuid]) + uuid + end + + # Called before run, this is a good place to clear out arrays + # with cruft that may be left over from a previous run. + # @private + def initialize_for_run + @running = false + @stop_scheduled = false + @selectables ||= {}; @selectables.clear + @timers = SortedSet.new # [] + set_timer_quantum(0.1) + @current_loop_time = Time.now + @next_heartbeat = @current_loop_time + HeartbeatInterval + end + + def add_selectable io + @selectables[io.uuid] = io + end + + def get_selectable uuid + @selectables[uuid] + end + + def run + raise Error.new( "already running" ) if @running + @running = true + + begin + open_loopbreaker + + loop { + @current_loop_time = Time.now + + break if @stop_scheduled + run_timers + break if @stop_scheduled + crank_selectables + break if @stop_scheduled + run_heartbeats + } + ensure + close_loopbreaker + @selectables.each {|k, io| io.close} + @selectables.clear + + @running = false + end + + end + + def run_timers + @timers.each {|t| + if t.first <= @current_loop_time + @timers.delete t + EventMachine::event_callback "", TimerFired, t.last + else + break + end + } + #while @timers.length > 0 and @timers.first.first <= now + # t = @timers.shift + # EventMachine::event_callback "", TimerFired, t.last + #end + end + + def run_heartbeats + if @next_heartbeat <= @current_loop_time + @next_heartbeat = @current_loop_time + HeartbeatInterval + @selectables.each {|k,io| io.heartbeat} + end + end + + def crank_selectables + #$stderr.write 'R' + + readers = @selectables.values.select {|io| io.select_for_reading?} + writers = @selectables.values.select {|io| io.select_for_writing?} + + s = select( readers, writers, nil, @timer_quantum) + + s and s[1] and s[1].each {|w| w.eventable_write } + s and s[0] and s[0].each {|r| r.eventable_read } + + @selectables.delete_if {|k,io| + if io.close_scheduled? + io.close + begin + EventMachine::event_callback io.uuid, ConnectionUnbound, nil + rescue ConnectionNotBound; end + true + end + } + end + + # #stop + def stop + raise Error.new( "not running") unless @running + @stop_scheduled = true + end + + def open_loopbreaker + # Can't use an IO.pipe because they can't be set nonselectable in Windows. + # Pick a random localhost UDP port. + #@loopbreak_writer.close if @loopbreak_writer + #rd,@loopbreak_writer = IO.pipe + @loopbreak_reader = UDPSocket.new + @loopbreak_writer = UDPSocket.new + bound = false + 100.times { + @loopbreak_port = rand(10000) + 40000 + begin + @loopbreak_reader.bind "127.0.0.1", @loopbreak_port + bound = true + break + rescue + end + } + raise "Unable to bind Loopbreaker" unless bound + LoopbreakReader.new(@loopbreak_reader) + end + + def close_loopbreaker + @loopbreak_writer.close + @loopbreak_writer = nil + end + + def signal_loopbreak + begin + @loopbreak_writer.send('+',0,"127.0.0.1",@loopbreak_port) if @loopbreak_writer + rescue IOError; end + end + + def set_timer_quantum interval_in_seconds + @timer_quantum = interval_in_seconds + end + + end + +end + +# @private +class IO + extend Forwardable + def_delegator :@my_selectable, :close_scheduled? + def_delegator :@my_selectable, :select_for_reading? + def_delegator :@my_selectable, :select_for_writing? + def_delegator :@my_selectable, :eventable_read + def_delegator :@my_selectable, :eventable_write + def_delegator :@my_selectable, :uuid + def_delegator :@my_selectable, :is_server + def_delegator :@my_selectable, :is_server= + def_delegator :@my_selectable, :send_data + def_delegator :@my_selectable, :schedule_close + def_delegator :@my_selectable, :get_peername + def_delegator :@my_selectable, :get_sockname + def_delegator :@my_selectable, :send_datagram + def_delegator :@my_selectable, :get_outbound_data_size + def_delegator :@my_selectable, :set_inactivity_timeout + def_delegator :@my_selectable, :heartbeat + def_delegator :@my_selectable, :io + def_delegator :@my_selectable, :io= +end + +module EventMachine + # @private + class Selectable + + attr_accessor :io, :is_server + attr_reader :uuid + + def initialize io + @io = io + @uuid = UuidGenerator.generate + @is_server = false + @last_activity = Reactor.instance.current_loop_time + + if defined?(Fcntl::F_GETFL) + m = @io.fcntl(Fcntl::F_GETFL, 0) + @io.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK | m) + else + # Windows doesn't define F_GETFL. + # It's not very reliable about setting descriptors nonblocking either. + begin + s = Socket.for_fd(@io.fileno) + s.fcntl( Fcntl::F_SETFL, Fcntl::O_NONBLOCK ) + rescue Errno::EINVAL, Errno::EBADF + warn "Serious error: unable to set descriptor non-blocking" + end + end + # TODO, should set CLOEXEC on Unix? + + @close_scheduled = false + @close_requested = false + + se = self; @io.instance_eval { @my_selectable = se } + Reactor.instance.add_selectable @io + end + + def close_scheduled? + @close_scheduled + end + + def select_for_reading? + false + end + + def select_for_writing? + false + end + + def get_peername + nil + end + + def get_sockname + nil + end + + def set_inactivity_timeout tm + @inactivity_timeout = tm + end + + def heartbeat + end + + def schedule_close(after_writing=false) + if after_writing + @close_requested = true + else + @close_scheduled = true + end + end + end + +end + +module EventMachine + # @private + class StreamObject < Selectable + def initialize io + super io + @outbound_q = [] + end + + # If we have to close, or a close-after-writing has been requested, + # then don't read any more data. + def select_for_reading? + true unless (@close_scheduled || @close_requested) + end + + # If we have to close, don't select for writing. + # Otherwise, see if the protocol is ready to close. + # If not, see if he has data to send. + # If a close-after-writing has been requested and the outbound queue + # is empty, convert the status to close_scheduled. + def select_for_writing? + unless @close_scheduled + if @outbound_q.empty? + @close_scheduled = true if @close_requested + false + else + true + end + end + end + + # Proper nonblocking I/O was added to Ruby 1.8.4 in May 2006. + # If we have it, then we can read multiple times safely to improve + # performance. + # The last-activity clock ASSUMES that we only come here when we + # have selected readable. + # TODO, coalesce multiple reads into a single event. + # TODO, do the function check somewhere else and cache it. + def eventable_read + @last_activity = Reactor.instance.current_loop_time + begin + if io.respond_to?(:read_nonblock) + 10.times { + data = io.read_nonblock(4096) + EventMachine::event_callback uuid, ConnectionData, data + } + else + data = io.sysread(4096) + EventMachine::event_callback uuid, ConnectionData, data + end + rescue Errno::EAGAIN, Errno::EWOULDBLOCK, SSLConnectionWaitReadable + # no-op + rescue Errno::ECONNRESET, Errno::ECONNREFUSED, EOFError, Errno::EPIPE, OpenSSL::SSL::SSLError + @close_scheduled = true + EventMachine::event_callback uuid, ConnectionUnbound, nil + end + + end + + # Provisional implementation. Will be re-implemented in subclasses. + # TODO: Complete this implementation. As it stands, this only writes + # a single packet per cycle. Highly inefficient, but required unless + # we're running on a Ruby with proper nonblocking I/O (Ruby 1.8.4 + # built from sources from May 25, 2006 or newer). + # We need to improve the loop so it writes multiple times, however + # not more than a certain number of bytes per cycle, otherwise + # one busy connection could hog output buffers and slow down other + # connections. Also we should coalesce small writes. + # URGENT TODO: Coalesce small writes. They are a performance killer. + # The last-activity recorder ASSUMES we'll only come here if we've + # selected writable. + def eventable_write + # coalesce the outbound array here, perhaps + @last_activity = Reactor.instance.current_loop_time + while data = @outbound_q.shift do + begin + data = data.to_s + w = if io.respond_to?(:write_nonblock) + io.write_nonblock data + else + io.syswrite data + end + + if w < data.length + @outbound_q.unshift data[w..-1] + break + end + rescue Errno::EAGAIN, SSLConnectionWaitReadable, SSLConnectionWaitWritable + @outbound_q.unshift data + break + rescue EOFError, Errno::ECONNRESET, Errno::ECONNREFUSED, Errno::EPIPE, OpenSSL::SSL::SSLError + @close_scheduled = true + @outbound_q.clear + end + end + + end + + # #send_data + def send_data data + # TODO, coalesce here perhaps by being smarter about appending to @outbound_q.last? + unless @close_scheduled or @close_requested or !data or data.length <= 0 + @outbound_q << data.to_s + end + end + + # #get_peername + # This is defined in the normal way on connected stream objects. + # Return an object that is suitable for passing to Socket#unpack_sockaddr_in or variants. + # We could also use a convenience method that did the unpacking automatically. + def get_peername + io.getpeername + end + + # #get_sockname + # This is defined in the normal way on connected stream objects. + # Return an object that is suitable for passing to Socket#unpack_sockaddr_in or variants. + # We could also use a convenience method that did the unpacking automatically. + def get_sockname + io.getsockname + end + + # #get_outbound_data_size + def get_outbound_data_size + @outbound_q.inject(0) {|memo,obj| memo += (obj || "").length} + end + + def heartbeat + if @inactivity_timeout and @inactivity_timeout > 0 and (@last_activity + @inactivity_timeout) < Reactor.instance.current_loop_time + schedule_close true + end + end + end + + +end + + +#-------------------------------------------------------------- + + + +module EventMachine + # @private + class EvmaTCPClient < StreamObject + + def self.connect bind_addr, bind_port, host, port + sd = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 ) + sd.bind( Socket.pack_sockaddr_in( bind_port, bind_addr )) if bind_addr + + begin + # TODO, this assumes a current Ruby snapshot. + # We need to degrade to a nonblocking connect otherwise. + sd.connect_nonblock( Socket.pack_sockaddr_in( port, host )) + rescue Errno::ECONNREFUSED, Errno::EINPROGRESS + end + EvmaTCPClient.new sd + end + + def initialize io + super + @pending = true + @handshake_complete = false + end + + def ready? + if RUBY_PLATFORM =~ /linux/ + io.getsockopt(Socket::SOL_TCP, Socket::TCP_INFO).unpack("i").first == 1 # TCP_ESTABLISHED + else + io.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).unpack("i").first == 0 # NO ERROR + end + end + + def handshake_complete? + if !@handshake_complete && io.respond_to?(:state) + if io.state =~ /^SSLOK/ + @handshake_complete = true + EventMachine::event_callback uuid, SslHandshakeCompleted, "" + EventMachine::event_callback uuid, SslVerify, io.peer_cert.to_pem if io.peer_cert + end + else + @handshake_complete = true + end + @handshake_complete + end + + def pending? + handshake_complete? + if @pending + if ready? + @pending = false + EventMachine::event_callback uuid, ConnectionCompleted, "" + end + end + @pending + end + + def select_for_writing? + pending? + super + end + + def select_for_reading? + pending? + super + end + end +end + + + +module EventMachine + # @private + class EvmaKeyboard < StreamObject + + def self.open + EvmaKeyboard.new STDIN + end + + + def initialize io + super + end + + + def select_for_writing? + false + end + + def select_for_reading? + true + end + + + end +end + + + +module EventMachine + # @private + class EvmaUNIXClient < StreamObject + + def self.connect chain + sd = Socket.new( Socket::AF_LOCAL, Socket::SOCK_STREAM, 0 ) + begin + # TODO, this assumes a current Ruby snapshot. + # We need to degrade to a nonblocking connect otherwise. + sd.connect_nonblock( Socket.pack_sockaddr_un( chain )) + rescue Errno::EINPROGRESS + end + EvmaUNIXClient.new sd + end + + + def initialize io + super + @pending = true + end + + + def select_for_writing? + @pending ? true : super + end + + def select_for_reading? + @pending ? false : super + end + + def eventable_write + if @pending + @pending = false + if 0 == io.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).unpack("i").first + EventMachine::event_callback uuid, ConnectionCompleted, "" + end + else + super + end + end + + + + end +end + + +#-------------------------------------------------------------- + +module EventMachine + # @private + class EvmaTCPServer < Selectable + + # TODO, refactor and unify with EvmaUNIXServer. + + class << self + # Versions of ruby 1.8.4 later than May 26 2006 will work properly + # with an object of type TCPServer. Prior versions won't so we + # play it safe and just build a socket. + # + def start_server host, port + sd = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 ) + sd.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true ) + sd.bind( Socket.pack_sockaddr_in( port, host )) + sd.listen( 50 ) # 5 is what you see in all the books. Ain't enough. + EvmaTCPServer.new sd + end + end + + def initialize io + super io + end + + + def select_for_reading? + true + end + + #-- + # accept_nonblock returns an array consisting of the accepted + # socket and a sockaddr_in which names the peer. + # Don't accept more than 10 at a time. + def eventable_read + begin + 10.times { + descriptor,peername = io.accept_nonblock + sd = EvmaTCPClient.new descriptor + sd.is_server = true + EventMachine::event_callback uuid, ConnectionAccepted, sd.uuid + } + rescue Errno::EWOULDBLOCK, Errno::EAGAIN + end + end + + #-- + # + def schedule_close + @close_scheduled = true + end + + end +end + + +#-------------------------------------------------------------- + +module EventMachine + # @private + class EvmaUNIXServer < Selectable + + # TODO, refactor and unify with EvmaTCPServer. + + class << self + # Versions of ruby 1.8.4 later than May 26 2006 will work properly + # with an object of type TCPServer. Prior versions won't so we + # play it safe and just build a socket. + # + def start_server chain + sd = Socket.new( Socket::AF_LOCAL, Socket::SOCK_STREAM, 0 ) + sd.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true ) + sd.bind( Socket.pack_sockaddr_un( chain )) + sd.listen( 50 ) # 5 is what you see in all the books. Ain't enough. + EvmaUNIXServer.new sd + end + end + + def initialize io + super io + end + + + def select_for_reading? + true + end + + #-- + # accept_nonblock returns an array consisting of the accepted + # socket and a sockaddr_in which names the peer. + # Don't accept more than 10 at a time. + def eventable_read + begin + 10.times { + descriptor,peername = io.accept_nonblock + sd = StreamObject.new descriptor + EventMachine::event_callback uuid, ConnectionAccepted, sd.uuid + } + rescue Errno::EWOULDBLOCK, Errno::EAGAIN + end + end + + #-- + # + def schedule_close + @close_scheduled = true + end + + end +end + + + +#-------------------------------------------------------------- + +module EventMachine + # @private + class LoopbreakReader < Selectable + + def select_for_reading? + true + end + + def eventable_read + io.sysread(128) + EventMachine::event_callback "", LoopbreakSignalled, "" + end + + end +end + + + +# @private +module EventMachine + # @private + class DatagramObject < Selectable + def initialize io + super io + @outbound_q = [] + end + + # #send_datagram + def send_datagram data, target + # TODO, coalesce here perhaps by being smarter about appending to @outbound_q.last? + unless @close_scheduled or @close_requested + @outbound_q << [data.to_s, target] + end + end + + # #select_for_writing? + def select_for_writing? + unless @close_scheduled + if @outbound_q.empty? + @close_scheduled = true if @close_requested + false + else + true + end + end + end + + # #select_for_reading? + def select_for_reading? + true + end + + # #get_outbound_data_size + def get_outbound_data_size + @outbound_q.inject(0) {|memo,obj| memo += (obj || "").length} + end + + + end + + +end + + +module EventMachine + # @private + class EvmaUDPSocket < DatagramObject + + class << self + def create host, port + sd = Socket.new( Socket::AF_INET, Socket::SOCK_DGRAM, 0 ) + sd.bind Socket::pack_sockaddr_in( port, host ) + EvmaUDPSocket.new sd + end + end + + # #eventable_write + # This really belongs in DatagramObject, but there is some UDP-specific stuff. + def eventable_write + 40.times { + break if @outbound_q.empty? + begin + data,target = @outbound_q.first + + # This damn better be nonblocking. + io.send data.to_s, 0, target + + @outbound_q.shift + rescue Errno::EAGAIN + # It's not been observed in testing that we ever get here. + # True to the definition, packets will be accepted and quietly dropped + # if the system is under pressure. + break + rescue EOFError, Errno::ECONNRESET + @close_scheduled = true + @outbound_q.clear + end + } + end + + # Proper nonblocking I/O was added to Ruby 1.8.4 in May 2006. + # If we have it, then we can read multiple times safely to improve + # performance. + def eventable_read + begin + if io.respond_to?(:recvfrom_nonblock) + 40.times { + data,@return_address = io.recvfrom_nonblock(16384) + EventMachine::event_callback uuid, ConnectionData, data + @return_address = nil + } + else + raise "unimplemented datagram-read operation on this Ruby" + end + rescue Errno::EAGAIN + # no-op + rescue Errno::ECONNRESET, EOFError + @close_scheduled = true + EventMachine::event_callback uuid, ConnectionUnbound, nil + end + end + + def send_data data + send_datagram data, @return_address + end + end +end + +# load base EM api on top, now that we have the underlying pure ruby +# implementation defined +require 'eventmachine' diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/queue.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/queue.rb new file mode 100644 index 0000000000..9096ed029b --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/queue.rb @@ -0,0 +1,80 @@ +module EventMachine + # A cross thread, reactor scheduled, linear queue. + # + # This class provides a simple queue abstraction on top of the reactor + # scheduler. It services two primary purposes: + # + # * API sugar for stateful protocols + # * Pushing processing onto the reactor thread + # + # @example + # + # q = EM::Queue.new + # q.push('one', 'two', 'three') + # 3.times do + # q.pop { |msg| puts(msg) } + # end + # + class Queue + def initialize + @sink = [] + @drain = [] + @popq = [] + end + + # Pop items off the queue, running the block on the reactor thread. The pop + # will not happen immediately, but at some point in the future, either in + # the next tick, if the queue has data, or when the queue is populated. + # + # @return [NilClass] nil + def pop(*a, &b) + cb = EM::Callback(*a, &b) + EM.schedule do + if @drain.empty? + @drain = @sink + @sink = [] + end + if @drain.empty? + @popq << cb + else + cb.call @drain.shift + end + end + nil # Always returns nil + end + + # Push items onto the queue in the reactor thread. The items will not appear + # in the queue immediately, but will be scheduled for addition during the + # next reactor tick. + def push(*items) + EM.schedule do + @sink.push(*items) + unless @popq.empty? + @drain = @sink + @sink = [] + @popq.shift.call @drain.shift until @drain.empty? || @popq.empty? + end + end + end + alias :<< :push + + # @return [Boolean] + # @note This is a peek, it's not thread safe, and may only tend toward accuracy. + def empty? + @drain.empty? && @sink.empty? + end + + # @return [Integer] Queue size + # @note This is a peek, it's not thread safe, and may only tend toward accuracy. + def size + @drain.size + @sink.size + end + + # @return [Integer] Waiting size + # @note This is a peek at the number of jobs that are currently waiting on the Queue + def num_waiting + @popq.size + end + + end # Queue +end # EventMachine diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/resolver.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/resolver.rb new file mode 100644 index 0000000000..1d2d7aa027 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/resolver.rb @@ -0,0 +1,232 @@ +module EventMachine + module DNS + class Resolver + + def self.windows? + if RUBY_PLATFORM =~ /mswin32|cygwin|mingw|bccwin/ + require 'win32/resolv' + true + else + false + end + end + + HOSTS_FILE = windows? ? Win32::Resolv.get_hosts_path : '/etc/hosts' + + @hosts = nil + @nameservers = nil + @socket = nil + + def self.resolve(hostname) + Request.new(socket, hostname) + end + + def self.socket + if @socket && @socket.error? + @socket = Socket.open + else + @socket ||= Socket.open + end + end + + def self.nameservers=(ns) + @nameservers = ns + end + + def self.nameservers + return @nameservers if @nameservers + + if windows? + _, ns = Win32::Resolv.get_resolv_info + return @nameservers = ns || [] + end + + @nameservers = [] + IO.readlines('/etc/resolv.conf').each do |line| + if line =~ /^nameserver (.+)$/ + @nameservers << $1.split(/\s+/).first + end + end + + @nameservers + rescue + @nameservers = [] + end + + def self.nameserver + nameservers.shuffle.first + end + + def self.hosts + return @hosts if @hosts + + @hosts = {} + IO.readlines(HOSTS_FILE).each do |line| + next if line =~ /^#/ + addr, host = line.split(/\s+/) + + next unless addr && host + @hosts[host] ||= [] + @hosts[host] << addr + end + + @hosts + rescue + @hosts = {} + end + end + + class RequestIdAlreadyUsed < RuntimeError; end + + class Socket < EventMachine::Connection + def self.open + EventMachine::open_datagram_socket('0.0.0.0', 0, self) + end + + def initialize + @nameserver = nil + end + + def post_init + @requests = {} + end + + def start_timer + @timer ||= EM.add_periodic_timer(0.1, &method(:tick)) + end + + def stop_timer + EM.cancel_timer(@timer) + @timer = nil + end + + def unbind + end + + def tick + @requests.each do |id,req| + req.tick + end + end + + def register_request(id, req) + if @requests.has_key?(id) + raise RequestIdAlreadyUsed + else + @requests[id] = req + end + + start_timer + end + + def deregister_request(id, req) + @requests.delete(id) + stop_timer if @requests.length == 0 + end + + def send_packet(pkt) + send_datagram(pkt, nameserver, 53) + end + + def nameserver=(ns) + @nameserver = ns + end + + def nameserver + @nameserver || Resolver.nameserver + end + + # Decodes the packet, looks for the request and passes the + # response over to the requester + def receive_data(data) + msg = nil + begin + msg = Resolv::DNS::Message.decode data + rescue + else + req = @requests[msg.id] + if req + @requests.delete(msg.id) + stop_timer if @requests.length == 0 + req.receive_answer(msg) + end + end + end + end + + class Request + include Deferrable + attr_accessor :retry_interval, :max_tries + + def initialize(socket, hostname) + @socket = socket + @hostname = hostname + @tries = 0 + @last_send = Time.at(0) + @retry_interval = 3 + @max_tries = 5 + + if addrs = Resolver.hosts[hostname] + succeed addrs + else + EM.next_tick { tick } + end + end + + def tick + # Break early if nothing to do + return if @last_send + @retry_interval > Time.now + if @tries < @max_tries + send + else + @socket.deregister_request(@id, self) + fail 'retries exceeded' + end + end + + def receive_answer(msg) + addrs = [] + msg.each_answer do |name,ttl,data| + if data.kind_of?(Resolv::DNS::Resource::IN::A) || + data.kind_of?(Resolv::DNS::Resource::IN::AAAA) + addrs << data.address.to_s + end + end + + if addrs.empty? + fail "rcode=#{msg.rcode}" + else + succeed addrs + end + end + + private + + def send + @tries += 1 + @last_send = Time.now + @socket.send_packet(packet.encode) + end + + def id + begin + @id = rand(65535) + @socket.register_request(@id, self) + rescue RequestIdAlreadyUsed + retry + end unless defined?(@id) + + @id + end + + def packet + msg = Resolv::DNS::Message.new + msg.id = id + msg.rd = 1 + msg.add_question @hostname, Resolv::DNS::Resource::IN::A + msg + end + + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/spawnable.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/spawnable.rb new file mode 100644 index 0000000000..35c087d068 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/spawnable.rb @@ -0,0 +1,84 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 25 Aug 2007 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +module EventMachine + # Support for Erlang-style processes. + # + class SpawnedProcess + # Send a message to the spawned process + def notify *x + me = self + EM.next_tick { + # A notification executes in the context of this + # SpawnedProcess object. That makes self and notify + # work as one would expect. + # + y = me.call(*x) + if y and y.respond_to?(:pull_out_yield_block) + a,b = y.pull_out_yield_block + set_receiver a + self.notify if b + end + } + end + alias_method :resume, :notify + alias_method :run, :notify # for formulations like (EM.spawn {xxx}).run + + def set_receiver blk + (class << self ; self ; end).class_eval do + remove_method :call if method_defined? :call + define_method :call, blk + end + end + + end + + # @private + class YieldBlockFromSpawnedProcess + def initialize block, notify + @block = [block,notify] + end + def pull_out_yield_block + @block + end + end + + # Spawn an erlang-style process + def self.spawn &block + s = SpawnedProcess.new + s.set_receiver block + s + end + + # @private + def self.yield &block + return YieldBlockFromSpawnedProcess.new( block, false ) + end + + # @private + def self.yield_and_notify &block + return YieldBlockFromSpawnedProcess.new( block, true ) + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/streamer.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/streamer.rb new file mode 100644 index 0000000000..cf49c88367 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/streamer.rb @@ -0,0 +1,118 @@ +module EventMachine + # Streams a file over a given connection. Streaming begins once the object is + # instantiated. Typically FileStreamer instances are not reused. + # + # Streaming uses buffering for files larger than 16K and uses so-called fast file reader (a C++ extension) + # if available (it is part of eventmachine gem itself). + # + # @example + # + # module FileSender + # def post_init + # streamer = EventMachine::FileStreamer.new(self, '/tmp/bigfile.tar') + # streamer.callback{ + # # file was sent successfully + # close_connection_after_writing + # } + # end + # end + # + # + # @author Francis Cianfrocca + class FileStreamer + include Deferrable + + # Use mapped streamer for files bigger than 16k + MappingThreshold = 16384 + # Wait until next tick to send more data when 50k is still in the outgoing buffer + BackpressureLevel = 50000 + # Send 16k chunks at a time + ChunkSize = 16384 + + # @param [EventMachine::Connection] connection + # @param [String] filename File path + # + # @option args [Boolean] :http_chunks (false) Use HTTP 1.1 style chunked-encoding semantics. + def initialize connection, filename, args = {} + @connection = connection + @http_chunks = args[:http_chunks] + + if File.exist?(filename) + @size = File.size(filename) + if @size <= MappingThreshold + stream_without_mapping filename + else + stream_with_mapping filename + end + else + fail "file not found" + end + end + + # @private + def stream_without_mapping filename + if @http_chunks + @connection.send_data "#{@size.to_s(16)}\r\n" + @connection.send_file_data filename + @connection.send_data "\r\n0\r\n\r\n" + else + @connection.send_file_data filename + end + succeed + end + private :stream_without_mapping + + # @private + def stream_with_mapping filename + ensure_mapping_extension_is_present + + @position = 0 + @mapping = EventMachine::FastFileReader::Mapper.new filename + stream_one_chunk + end + private :stream_with_mapping + + # Used internally to stream one chunk at a time over multiple reactor ticks + # @private + def stream_one_chunk + loop { + if @position < @size + if @connection.get_outbound_data_size > BackpressureLevel + EventMachine::next_tick {stream_one_chunk} + break + else + len = @size - @position + len = ChunkSize if (len > ChunkSize) + + @connection.send_data( "#{len.to_s(16)}\r\n" ) if @http_chunks + @connection.send_data( @mapping.get_chunk( @position, len )) + @connection.send_data("\r\n") if @http_chunks + + @position += len + end + else + @connection.send_data "0\r\n\r\n" if @http_chunks + @mapping.close + succeed + break + end + } + end + + # + # We use an outboard extension class to get memory-mapped files. + # It's outboard to avoid polluting the core distro, but that means + # there's a "hidden" dependency on it. The first time we get here in + # any run, try to load up the dependency extension. User code will see + # a LoadError if it's not available, but code that doesn't require + # mapped files will work fine without it. This is a somewhat difficult + # compromise between usability and proper modularization. + # + # @private + def ensure_mapping_extension_is_present + @@fastfilereader ||= (require 'fastfilereaderext') + end + private :ensure_mapping_extension_is_present + + end # FileStreamer +end # EventMachine diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/threaded_resource.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/threaded_resource.rb new file mode 100644 index 0000000000..87704d5f59 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/threaded_resource.rb @@ -0,0 +1,90 @@ +module EventMachine + # = EventMachine::ThreadedResource + # + # A threaded resource is a "quick and dirty" wrapper around the concept of + # wiring up synchronous code into a standard EM::Pool. This is useful to keep + # interfaces coherent and provide a simple approach at "making an interface + # async-ish". + # + # General usage is to wrap libraries that do not support EventMachine, or to + # have a specific number of dedicated high-cpu worker resources. + # + # == Basic Usage example + # + # This example requires the cassandra gem. The cassandra gem contains an + # EventMachine interface, but it's sadly Fiber based and thus only works on + # 1.9. It also requires (potentially) complex stack switching logic to reach + # completion of nested operations. By contrast this approach provides a block + # in which normal synchronous code can occur, but makes no attempt to wire the + # IO into EventMachines C++ IO implementations, instead relying on the reactor + # pattern in rb_thread_select. + # + # cassandra_dispatcher = ThreadedResource.new do + # Cassandra.new('allthethings', '127.0.0.1:9160') + # end + # + # pool = EM::Pool.new + # + # pool.add cassandra_dispatcher + # + # # If we don't care about the result: + # pool.perform do |dispatcher| + # # The following block executes inside a dedicated thread, and should not + # # access EventMachine things: + # dispatcher.dispatch do |cassandra| + # cassandra.insert(:Things, '10', 'stuff' => 'things') + # end + # end + # + # # Example where we care about the result: + # pool.perform do |dispatcher| + # # The dispatch block is executed in the resources thread. + # completion = dispatcher.dispatch do |cassandra| + # cassandra.get(:Things, '10', 'stuff') + # end + # + # # This block will be yielded on the EM thread: + # completion.callback do |result| + # EM.do_something_with(result) + # end + # + # completion + # end + class ThreadedResource + + # The block should return the resource that will be yielded in a dispatch. + def initialize + @resource = yield + + @running = true + @queue = ::Queue.new + @thread = Thread.new do + @queue.pop.call while @running + end + end + + # Called on the EM thread, generally in a perform block to return a + # completion for the work. + def dispatch + completion = EM::Completion.new + @queue << lambda do + begin + result = yield @resource + completion.succeed result + rescue => e + completion.fail e + end + end + completion + end + + # Kill the internal thread. should only be used to cleanup - generally + # only required for tests. + def shutdown + @running = false + @queue << lambda {} + @thread.join + end + + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/tick_loop.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/tick_loop.rb new file mode 100644 index 0000000000..a95d51614d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/tick_loop.rb @@ -0,0 +1,85 @@ +module EventMachine + # Creates and immediately starts an EventMachine::TickLoop + def self.tick_loop(*a, &b) + TickLoop.new(*a, &b).start + end + + # A TickLoop is useful when one needs to distribute amounts of work + # throughout ticks in order to maintain response times. It is also useful for + # simple repeated checks and metrics. + # @example + # # Here we run through an array one item per tick until it is empty, + # # printing each element. + # # When the array is empty, we return :stop from the callback, and the + # # loop will terminate. + # # When the loop terminates, the on_stop callbacks will be called. + # EM.run do + # array = (1..100).to_a + # + # tickloop = EM.tick_loop do + # if array.empty? + # :stop + # else + # puts array.shift + # end + # end + # + # tickloop.on_stop { EM.stop } + # end + # + class TickLoop + + # Arguments: A callback (EM::Callback) to call each tick. If the call + # returns +:stop+ then the loop will be stopped. Any other value is + # ignored. + def initialize(*a, &b) + @work = EM::Callback(*a, &b) + @stops = [] + @stopped = true + end + + # Arguments: A callback (EM::Callback) to call once on the next stop (or + # immediately if already stopped). + def on_stop(*a, &b) + if @stopped + EM::Callback(*a, &b).call + else + @stops << EM::Callback(*a, &b) + end + end + + # Stop the tick loop immediately, and call it's on_stop callbacks. + def stop + @stopped = true + until @stops.empty? + @stops.shift.call + end + end + + # Query if the loop is stopped. + def stopped? + @stopped + end + + # Start the tick loop, will raise argument error if the loop is already + # running. + def start + raise ArgumentError, "double start" unless @stopped + @stopped = false + schedule + end + + private + def schedule + EM.next_tick do + next if @stopped + if @work.call == :stop + stop + else + schedule + end + end + self + end + end +end \ No newline at end of file diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/timers.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/timers.rb new file mode 100644 index 0000000000..41cd9595b8 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/timers.rb @@ -0,0 +1,61 @@ +module EventMachine + # Creates a one-time timer + # + # timer = EventMachine::Timer.new(5) do + # # this will never fire because we cancel it + # end + # timer.cancel + # + class Timer + # Create a new timer that fires after a given number of seconds + def initialize interval, callback=nil, &block + @signature = EventMachine::add_timer(interval, callback || block) + end + + # Cancel the timer + def cancel + EventMachine.send :cancel_timer, @signature + end + end + + # Creates a periodic timer + # + # @example + # n = 0 + # timer = EventMachine::PeriodicTimer.new(5) do + # puts "the time is #{Time.now}" + # timer.cancel if (n+=1) > 5 + # end + # + class PeriodicTimer + # Create a new periodic timer that executes every interval seconds + def initialize interval, callback=nil, &block + @interval = interval + @code = callback || block + @cancelled = false + @work = method(:fire) + schedule + end + + # Cancel the periodic timer + def cancel + @cancelled = true + end + + # Fire the timer every interval seconds + attr_accessor :interval + + # @private + def schedule + EventMachine::add_timer @interval, @work + end + + # @private + def fire + unless @cancelled + @code.call + schedule + end + end + end +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/version.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/version.rb new file mode 100644 index 0000000000..ffc4310334 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/em/version.rb @@ -0,0 +1,3 @@ +module EventMachine + VERSION = "1.2.7" +end diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb new file mode 100644 index 0000000000..0873747690 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb @@ -0,0 +1,1601 @@ +if defined?(EventMachine.library_type) and EventMachine.library_type == :pure_ruby + # assume 'em/pure_ruby' was loaded already +elsif RUBY_PLATFORM =~ /java/ + require 'java' + require 'jeventmachine' +else + begin + require 'rubyeventmachine' + rescue LoadError + warn "Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'" + raise + end +end + +require 'em/version' +require 'em/pool' +require 'em/deferrable' +require 'em/future' +require 'em/streamer' +require 'em/spawnable' +require 'em/processes' +require 'em/iterator' +require 'em/buftok' +require 'em/timers' +require 'em/protocols' +require 'em/connection' +require 'em/callback' +require 'em/queue' +require 'em/channel' +require 'em/file_watch' +require 'em/process_watch' +require 'em/tick_loop' +require 'em/resolver' +require 'em/completion' +require 'em/threaded_resource' + +require 'shellwords' +require 'thread' +require 'resolv' + +# Top-level EventMachine namespace. If you are looking for EventMachine examples, see {file:docs/GettingStarted.md EventMachine tutorial}. +# +# ## Key methods ## +# ### Starting and stopping the event loop ### +# +# * {EventMachine.run} +# * {EventMachine.stop_event_loop} +# +# ### Implementing clients ### +# +# * {EventMachine.connect} +# +# ### Implementing servers ### +# +# * {EventMachine.start_server} +# +# ### Working with timers ### +# +# * {EventMachine.add_timer} +# * {EventMachine.add_periodic_timer} +# * {EventMachine.cancel_timer} +# +# ### Working with blocking tasks ### +# +# * {EventMachine.defer} +# * {EventMachine.next_tick} +# +# ### Efficient proxying ### +# +# * {EventMachine.enable_proxy} +# * {EventMachine.disable_proxy} +module EventMachine + class << self + # Exposed to allow joining on the thread, when run in a multithreaded + # environment. Performing other actions on the thread has undefined + # semantics (read: a dangerous endevor). + # + # @return [Thread] + attr_reader :reactor_thread + end + @next_tick_mutex = Mutex.new + @reactor_running = false + @next_tick_queue = [] + @tails = [] + @threadpool = @threadqueue = @resultqueue = nil + @all_threads_spawned = false + + # System errnos + # @private + ERRNOS = Errno::constants.grep(/^E/).inject(Hash.new(:unknown)) { |hash, name| + errno = Errno.__send__(:const_get, name) + hash[errno::Errno] = errno + hash + } + + # Initializes and runs an event loop. This method only returns if code inside the block passed to this method + # calls {EventMachine.stop_event_loop}. The block is executed after initializing its internal event loop but *before* running the loop, + # therefore this block is the right place to call any code that needs event loop to run, for example, {EventMachine.start_server}, + # {EventMachine.connect} or similar methods of libraries that use EventMachine under the hood + # (like `EventMachine::HttpRequest.new` or `AMQP.start`). + # + # Programs that are run for long periods of time (e.g. servers) usually start event loop by calling {EventMachine.run}, and let it + # run "forever". It's also possible to use {EventMachine.run} to make a single client-connection to a remote server, + # process the data flow from that single connection, and then call {EventMachine.stop_event_loop} to stop, in other words, + # to run event loop for a short period of time (necessary to complete some operation) and then shut it down. + # + # Once event loop is running, it is perfectly possible to start multiple servers and clients simultaneously: content-aware + # proxies like [Proxymachine](https://github.com/mojombo/proxymachine) do just that. + # + # ## Using EventMachine with Ruby on Rails and other Web application frameworks ## + # + # Standalone applications often run event loop on the main thread, thus blocking for their entire lifespan. In case of Web applications, + # if you are running an EventMachine-based app server such as [Thin](http://code.macournoyer.com/thin/) or [Goliath](https://github.com/postrank-labs/goliath/), + # they start event loop for you. Servers like Unicorn, Apache Passenger or Mongrel occupy main Ruby thread to serve HTTP(S) requests. This means + # that calling {EventMachine.run} on the same thread is not an option (it will result in Web server never binding to the socket). + # In that case, start event loop in a separate thread as demonstrated below. + # + # + # @example Starting EventMachine event loop in the current thread to run the "Hello, world"-like Echo server example + # + # #!/usr/bin/env ruby + # + # require 'rubygems' # or use Bundler.setup + # require 'eventmachine' + # + # class EchoServer < EM::Connection + # def receive_data(data) + # send_data(data) + # end + # end + # + # EventMachine.run do + # EventMachine.start_server("0.0.0.0", 10000, EchoServer) + # end + # + # + # @example Starting EventMachine event loop in a separate thread + # + # # doesn't block current thread, can be used with Ruby on Rails, Sinatra, Merb, Rack + # # and any other application server that occupies main Ruby thread. + # Thread.new { EventMachine.run } + # + # + # @note This method blocks calling thread. If you need to start EventMachine event loop from a Web app + # running on a non event-driven server (Unicorn, Apache Passenger, Mongrel), do it in a separate thread like demonstrated + # in one of the examples. + # @see file:docs/GettingStarted.md Getting started with EventMachine + # @see EventMachine.stop_event_loop + def self.run blk=nil, tail=nil, &block + # Obsoleted the use_threads mechanism. + # 25Nov06: Added the begin/ensure block. We need to be sure that release_machine + # gets called even if an exception gets thrown within any of the user code + # that the event loop runs. The best way to see this is to run a unit + # test with two functions, each of which calls {EventMachine.run} and each of + # which throws something inside of #run. Without the ensure, the second test + # will start without release_machine being called and will immediately throw + + # + if @reactor_running and @reactor_pid != Process.pid + # Reactor was started in a different parent, meaning we have forked. + # Clean up reactor state so a new reactor boots up in this child. + stop_event_loop + release_machine + cleanup_machine + @reactor_running = false + end + + tail and @tails.unshift(tail) + + if reactor_running? + (b = blk || block) and b.call # next_tick(b) + else + @conns = {} + @acceptors = {} + @timers = {} + @wrapped_exception = nil + @next_tick_queue ||= [] + @tails ||= [] + begin + initialize_event_machine + @reactor_pid = Process.pid + @reactor_thread = Thread.current + @reactor_running = true + + (b = blk || block) and add_timer(0, b) + if @next_tick_queue && !@next_tick_queue.empty? + add_timer(0) { signal_loopbreak } + end + + # Rubinius needs to come back into "Ruby space" for GC to work, + # so we'll crank the machine here. + if defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx" + while run_machine_once; end + else + run_machine + end + + ensure + until @tails.empty? + @tails.pop.call + end + + release_machine + cleanup_machine + @reactor_running = false + @reactor_thread = nil + end + + raise @wrapped_exception if @wrapped_exception + end + end + + # Sugars a common use case. Will pass the given block to #run, but will terminate + # the reactor loop and exit the function as soon as the code in the block completes. + # (Normally, {EventMachine.run} keeps running indefinitely, even after the block supplied to it + # finishes running, until user code calls {EventMachine.stop}) + # + def self.run_block &block + pr = proc { + block.call + EventMachine::stop + } + run(&pr) + end + + # @return [Boolean] true if the calling thread is the same thread as the reactor. + def self.reactor_thread? + Thread.current == @reactor_thread + end + + # Runs the given callback on the reactor thread, or immediately if called + # from the reactor thread. Accepts the same arguments as {EventMachine::Callback} + def self.schedule(*a, &b) + cb = Callback(*a, &b) + if reactor_running? && reactor_thread? + cb.call + else + next_tick { cb.call } + end + end + + # Forks a new process, properly stops the reactor and then calls {EventMachine.run} inside of it again, passing your block. + def self.fork_reactor &block + # This implementation is subject to change, especially if we clean up the relationship + # of EM#run to @reactor_running. + # Original patch by Aman Gupta. + # + Kernel.fork do + if reactor_running? + stop_event_loop + release_machine + cleanup_machine + @reactor_running = false + @reactor_thread = nil + end + run block + end + end + + # Clean up Ruby space following a release_machine + def self.cleanup_machine + if @threadpool && !@threadpool.empty? + # Tell the threads to stop + @threadpool.each { |t| t.exit } + # Join the threads or bump the stragglers one more time + @threadpool.each { |t| t.join 0.01 || t.exit } + end + @threadpool = nil + @threadqueue = nil + @resultqueue = nil + @all_threads_spawned = false + @next_tick_queue = [] + end + + # Adds a block to call as the reactor is shutting down. + # + # These callbacks are called in the _reverse_ order to which they are added. + # + # @example Scheduling operations to be run when EventMachine event loop is stopped + # + # EventMachine.run do + # EventMachine.add_shutdown_hook { puts "b" } + # EventMachine.add_shutdown_hook { puts "a" } + # EventMachine.stop + # end + # + # # Outputs: + # # a + # # b + # + def self.add_shutdown_hook &block + @tails << block + end + + # Adds a one-shot timer to the event loop. + # Call it with one or two parameters. The first parameters is a delay-time + # expressed in *seconds* (not milliseconds). The second parameter, if + # present, must be an object that responds to :call. If 2nd parameter is not given, then you + # can also simply pass a block to the method call. + # + # This method may be called from the block passed to {EventMachine.run} + # or from any callback method. It schedules execution of the proc or block + # passed to it, after the passage of an interval of time equal to + # *at least* the number of seconds specified in the first parameter to + # the call. + # + # {EventMachine.add_timer} is a non-blocking method. Callbacks can and will + # be called during the interval of time that the timer is in effect. + # There is no built-in limit to the number of timers that can be outstanding at + # any given time. + # + # @example Setting a one-shot timer with EventMachine + # + # EventMachine.run { + # puts "Starting the run now: #{Time.now}" + # EventMachine.add_timer 5, proc { puts "Executing timer event: #{Time.now}" } + # EventMachine.add_timer(10) { puts "Executing timer event: #{Time.now}" } + # } + # + # @param [Integer] delay Delay in seconds + # @see EventMachine::Timer + # @see EventMachine.add_periodic_timer + def self.add_timer *args, &block + interval = args.shift + code = args.shift || block + if code + # check too many timers! + s = add_oneshot_timer((interval.to_f * 1000).to_i) + @timers[s] = code + s + end + end + + # Adds a periodic timer to the event loop. + # It takes the same parameters as the one-shot timer method, {EventMachine.add_timer}. + # This method schedules execution of the given block repeatedly, at intervals + # of time *at least* as great as the number of seconds given in the first + # parameter to the call. + # + # @example Write a dollar-sign to stderr every five seconds, without blocking + # + # EventMachine.run { + # EventMachine.add_periodic_timer( 5 ) { $stderr.write "$" } + # } + # + # @param [Integer] delay Delay in seconds + # + # @see EventMachine::PeriodicTimer + # @see EventMachine.add_timer + # + def self.add_periodic_timer *args, &block + interval = args.shift + code = args.shift || block + + EventMachine::PeriodicTimer.new(interval, code) + end + + + # Cancel a timer (can be a callback or an {EventMachine::Timer} instance). + # + # @param [#cancel, #call] timer_or_sig A timer to cancel + # @see EventMachine::Timer#cancel + def self.cancel_timer timer_or_sig + if timer_or_sig.respond_to? :cancel + timer_or_sig.cancel + else + @timers[timer_or_sig] = false if @timers.has_key?(timer_or_sig) + end + end + + + # Causes the processing loop to stop executing, which will cause all open connections and accepting servers + # to be run down and closed. Connection termination callbacks added using {EventMachine.add_shutdown_hook} + # will be called as part of running this method. + # + # When all of this processing is complete, the call to {EventMachine.run} which started the processing loop + # will return and program flow will resume from the statement following {EventMachine.run} call. + # + # @example Stopping a running EventMachine event loop + # + # require 'rubygems' + # require 'eventmachine' + # + # module Redmond + # def post_init + # puts "We're sending a dumb HTTP request to the remote peer." + # send_data "GET / HTTP/1.1\r\nHost: www.microsoft.com\r\n\r\n" + # end + # + # def receive_data data + # puts "We received #{data.length} bytes from the remote peer." + # puts "We're going to stop the event loop now." + # EventMachine::stop_event_loop + # end + # + # def unbind + # puts "A connection has terminated." + # end + # end + # + # puts "We're starting the event loop now." + # EventMachine.run { + # EventMachine.connect "www.microsoft.com", 80, Redmond + # } + # puts "The event loop has stopped." + # + # # This program will produce approximately the following output: + # # + # # We're starting the event loop now. + # # We're sending a dumb HTTP request to the remote peer. + # # We received 1440 bytes from the remote peer. + # # We're going to stop the event loop now. + # # A connection has terminated. + # # The event loop has stopped. + # + # + def self.stop_event_loop + EventMachine::stop + end + + # Initiates a TCP server (socket acceptor) on the specified IP address and port. + # + # The IP address must be valid on the machine where the program + # runs, and the process must be privileged enough to listen + # on the specified port (on Unix-like systems, superuser privileges + # are usually required to listen on any port lower than 1024). + # Only one listener may be running on any given address/port + # combination. start_server will fail if the given address and port + # are already listening on the machine, either because of a prior call + # to {.start_server} or some unrelated process running on the machine. + # If {.start_server} succeeds, the new network listener becomes active + # immediately and starts accepting connections from remote peers, + # and these connections generate callback events that are processed + # by the code specified in the handler parameter to {.start_server}. + # + # The optional handler which is passed to this method is the key + # to EventMachine's ability to handle particular network protocols. + # The handler parameter passed to start_server must be a Ruby Module + # that you must define. When the network server that is started by + # start_server accepts a new connection, it instantiates a new + # object of an anonymous class that is inherited from {EventMachine::Connection}, + # *into which your handler module have been included*. Arguments passed into start_server + # after the class name are passed into the constructor during the instantiation. + # + # Your handler module may override any of the methods in {EventMachine::Connection}, + # such as {EventMachine::Connection#receive_data}, in order to implement the specific behavior + # of the network protocol. + # + # Callbacks invoked in response to network events *always* take place + # within the execution context of the object derived from {EventMachine::Connection} + # extended by your handler module. There is one object per connection, and + # all of the callbacks invoked for a particular connection take the form + # of instance methods called against the corresponding {EventMachine::Connection} + # object. Therefore, you are free to define whatever instance variables you + # wish, in order to contain the per-connection state required by the network protocol you are + # implementing. + # + # {EventMachine.start_server} is usually called inside the block passed to {EventMachine.run}, + # but it can be called from any EventMachine callback. {EventMachine.start_server} will fail + # unless the EventMachine event loop is currently running (which is why + # it's often called in the block suppled to {EventMachine.run}). + # + # You may call start_server any number of times to start up network + # listeners on different address/port combinations. The servers will + # all run simultaneously. More interestingly, each individual call to start_server + # can specify a different handler module and thus implement a different + # network protocol from all the others. + # + # @example + # + # require 'rubygems' + # require 'eventmachine' + # + # # Here is an example of a server that counts lines of input from the remote + # # peer and sends back the total number of lines received, after each line. + # # Try the example with more than one client connection opened via telnet, + # # and you will see that the line count increments independently on each + # # of the client connections. Also very important to note, is that the + # # handler for the receive_data function, which our handler redefines, may + # # not assume that the data it receives observes any kind of message boundaries. + # # Also, to use this example, be sure to change the server and port parameters + # # to the start_server call to values appropriate for your environment. + # module LineCounter + # MaxLinesPerConnection = 10 + # + # def post_init + # puts "Received a new connection" + # @data_received = "" + # @line_count = 0 + # end + # + # def receive_data data + # @data_received << data + # while @data_received.slice!( /^[^\n]*[\n]/m ) + # @line_count += 1 + # send_data "received #{@line_count} lines so far\r\n" + # @line_count == MaxLinesPerConnection and close_connection_after_writing + # end + # end + # end + # + # EventMachine.run { + # host, port = "192.168.0.100", 8090 + # EventMachine.start_server host, port, LineCounter + # puts "Now accepting connections on address #{host}, port #{port}..." + # EventMachine.add_periodic_timer(10) { $stderr.write "*" } + # } + # + # @param [String] server Host to bind to. + # @param [Integer] port Port to bind to. + # @param [Module, Class] handler A module or class that implements connection callbacks + # + # @note Don't forget that in order to bind to ports < 1024 on Linux, *BSD and Mac OS X your process must have superuser privileges. + # + # @see file:docs/GettingStarted.md EventMachine tutorial + # @see EventMachine.stop_server + def self.start_server server, port=nil, handler=nil, *args, &block + begin + port = Integer(port) + rescue ArgumentError, TypeError + # there was no port, so server must be a unix domain socket + # the port argument is actually the handler, and the handler is one of the args + args.unshift handler if handler + handler = port + port = nil + end if port + + klass = klass_from_handler(Connection, handler, *args) + + s = if port + start_tcp_server server, port + else + start_unix_server server + end + @acceptors[s] = [klass,args,block] + s + end + + # Attach to an existing socket's file descriptor. The socket may have been + # started with {EventMachine.start_server}. + def self.attach_server sock, handler=nil, *args, &block + klass = klass_from_handler(Connection, handler, *args) + sd = sock.respond_to?(:fileno) ? sock.fileno : sock + s = attach_sd(sd) + @acceptors[s] = [klass,args,block,sock] + s + end + + # Stop a TCP server socket that was started with {EventMachine.start_server}. + # @see EventMachine.start_server + def self.stop_server signature + EventMachine::stop_tcp_server signature + end + + # Start a Unix-domain server. + # + # Note that this is an alias for {EventMachine.start_server}, which can be used to start both + # TCP and Unix-domain servers. + # + # @see EventMachine.start_server + def self.start_unix_domain_server filename, *args, &block + start_server filename, *args, &block + end + + # Initiates a TCP connection to a remote server and sets up event handling for the connection. + # {EventMachine.connect} requires event loop to be running (see {EventMachine.run}). + # + # {EventMachine.connect} takes the IP address (or hostname) and + # port of the remote server you want to connect to. + # It also takes an optional handler (a module or a subclass of {EventMachine::Connection}) which you must define, that + # contains the callbacks that will be invoked by the event loop on behalf of the connection. + # + # Learn more about connection lifecycle callbacks in the {file:docs/GettingStarted.md EventMachine tutorial} and + # {file:docs/ConnectionLifecycleCallbacks.md Connection lifecycle guide}. + # + # + # @example + # + # # Here's a program which connects to a web server, sends a naive + # # request, parses the HTTP header of the response, and then + # # (antisocially) ends the event loop, which automatically drops the connection + # # (and incidentally calls the connection's unbind method). + # module DumbHttpClient + # def post_init + # send_data "GET / HTTP/1.1\r\nHost: _\r\n\r\n" + # @data = "" + # @parsed = false + # end + # + # def receive_data data + # @data << data + # if !@parsed and @data =~ /[\n][\r]*[\n]/m + # @parsed = true + # puts "RECEIVED HTTP HEADER:" + # $`.each {|line| puts ">>> #{line}" } + # + # puts "Now we'll terminate the loop, which will also close the connection" + # EventMachine::stop_event_loop + # end + # end + # + # def unbind + # puts "A connection has terminated" + # end + # end + # + # EventMachine.run { + # EventMachine.connect "www.bayshorenetworks.com", 80, DumbHttpClient + # } + # puts "The event loop has ended" + # + # + # @example Defining protocol handler as a class + # + # class MyProtocolHandler < EventMachine::Connection + # def initialize *args + # super + # # whatever else you want to do here + # end + # + # # ... + # end + # + # + # @param [String] server Host to connect to + # @param [Integer] port Port to connect to + # @param [Module, Class] handler A module or class that implements connection lifecycle callbacks + # + # @see EventMachine.start_server + # @see file:docs/GettingStarted.md EventMachine tutorial + def self.connect server, port=nil, handler=nil, *args, &blk + # EventMachine::connect initiates a TCP connection to a remote + # server and sets up event-handling for the connection. + # It internally creates an object that should not be handled + # by the caller. HOWEVER, it's often convenient to get the + # object to set up interfacing to other objects in the system. + # We return the newly-created anonymous-class object to the caller. + # It's expected that a considerable amount of code will depend + # on this behavior, so don't change it. + # + # Ok, added support for a user-defined block, 13Apr06. + # This leads us to an interesting choice because of the + # presence of the post_init call, which happens in the + # initialize method of the new object. We call the user's + # block and pass the new object to it. This is a great + # way to do protocol-specific initiation. It happens + # AFTER post_init has been called on the object, which I + # certainly hope is the right choice. + # Don't change this lightly, because accepted connections + # are different from connected ones and we don't want + # to have them behave differently with respect to post_init + # if at all possible. + + bind_connect nil, nil, server, port, handler, *args, &blk + end + + # This method is like {EventMachine.connect}, but allows for a local address/port + # to bind the connection to. + # + # @see EventMachine.connect + def self.bind_connect bind_addr, bind_port, server, port=nil, handler=nil, *args + begin + port = Integer(port) + rescue ArgumentError, TypeError + # there was no port, so server must be a unix domain socket + # the port argument is actually the handler, and the handler is one of the args + args.unshift handler if handler + handler = port + port = nil + end if port + + klass = klass_from_handler(Connection, handler, *args) + + s = if port + if bind_addr + bind_connect_server bind_addr, bind_port.to_i, server, port + else + connect_server server, port + end + else + connect_unix_server server + end + + c = klass.new s, *args + @conns[s] = c + block_given? and yield c + c + end + + # {EventMachine.watch} registers a given file descriptor or IO object with the eventloop. The + # file descriptor will not be modified (it will remain blocking or non-blocking). + # + # The eventloop can be used to process readable and writable events on the file descriptor, using + # {EventMachine::Connection#notify_readable=} and {EventMachine::Connection#notify_writable=} + # + # {EventMachine::Connection#notify_readable?} and {EventMachine::Connection#notify_writable?} can be used + # to check what events are enabled on the connection. + # + # To detach the file descriptor, use {EventMachine::Connection#detach} + # + # @example + # + # module SimpleHttpClient + # def notify_readable + # header = @io.readline + # + # if header == "\r\n" + # # detach returns the file descriptor number (fd == @io.fileno) + # fd = detach + # end + # rescue EOFError + # detach + # end + # + # def unbind + # EM.next_tick do + # # socket is detached from the eventloop, but still open + # data = @io.read + # end + # end + # end + # + # EventMachine.run { + # sock = TCPSocket.new('site.com', 80) + # sock.write("GET / HTTP/1.0\r\n\r\n") + # conn = EventMachine.watch(sock, SimpleHttpClient) + # conn.notify_readable = true + # } + # + # @author Riham Aldakkak (eSpace Technologies) + def EventMachine::watch io, handler=nil, *args, &blk + attach_io io, true, handler, *args, &blk + end + + # Attaches an IO object or file descriptor to the eventloop as a regular connection. + # The file descriptor will be set as non-blocking, and EventMachine will process + # receive_data and send_data events on it as it would for any other connection. + # + # To watch a fd instead, use {EventMachine.watch}, which will not alter the state of the socket + # and fire notify_readable and notify_writable events instead. + def EventMachine::attach io, handler=nil, *args, &blk + attach_io io, false, handler, *args, &blk + end + + # @private + def EventMachine::attach_io io, watch_mode, handler=nil, *args + klass = klass_from_handler(Connection, handler, *args) + + if !watch_mode and klass.public_instance_methods.any?{|m| [:notify_readable, :notify_writable].include? m.to_sym } + raise ArgumentError, "notify_readable/writable with EM.attach is not supported. Use EM.watch(io){ |c| c.notify_readable = true }" + end + + if io.respond_to?(:fileno) + # getDescriptorByFileno deprecated in JRuby 1.7.x, removed in JRuby 9000 + if defined?(JRuby) && JRuby.runtime.respond_to?(:getDescriptorByFileno) + fd = JRuby.runtime.getDescriptorByFileno(io.fileno).getChannel + else + fd = io.fileno + end + else + fd = io + end + + s = attach_fd fd, watch_mode + c = klass.new s, *args + + c.instance_variable_set(:@io, io) + c.instance_variable_set(:@watch_mode, watch_mode) + c.instance_variable_set(:@fd, fd) + + @conns[s] = c + block_given? and yield c + c + end + + + # Connect to a given host/port and re-use the provided {EventMachine::Connection} instance. + # Consider also {EventMachine::Connection#reconnect}. + # + # @see EventMachine::Connection#reconnect + def self.reconnect server, port, handler + # Observe, the test for already-connected FAILS if we call a reconnect inside post_init, + # because we haven't set up the connection in @conns by that point. + # RESIST THE TEMPTATION to "fix" this problem by redefining the behavior of post_init. + # + # Changed 22Nov06: if called on an already-connected handler, just return the + # handler and do nothing more. Originally this condition raised an exception. + # We may want to change it yet again and call the block, if any. + + raise "invalid handler" unless handler.respond_to?(:connection_completed) + #raise "still connected" if @conns.has_key?(handler.signature) + return handler if @conns.has_key?(handler.signature) + + s = if port + connect_server server, port + else + connect_unix_server server + end + handler.signature = s + @conns[s] = handler + block_given? and yield handler + handler + end + + + # Make a connection to a Unix-domain socket. This method is simply an alias for {.connect}, + # which can connect to both TCP and Unix-domain sockets. Make sure that your process has sufficient + # permissions to open the socket it is given. + # + # @param [String] socketname Unix domain socket (local fully-qualified path) you want to connect to. + # + # @note UNIX sockets, as the name suggests, are not available on Microsoft Windows. + def self.connect_unix_domain socketname, *args, &blk + connect socketname, *args, &blk + end + + + # Used for UDP-based protocols. Its usage is similar to that of {EventMachine.start_server}. + # + # This method will create a new UDP (datagram) socket and + # bind it to the address and port that you specify. + # The normal callbacks (see {EventMachine.start_server}) will + # be called as events of interest occur on the newly-created + # socket, but there are some differences in how they behave. + # + # {Connection#receive_data} will be called when a datagram packet + # is received on the socket, but unlike TCP sockets, the message + # boundaries of the received data will be respected. In other words, + # if the remote peer sent you a datagram of a particular size, + # you may rely on {Connection#receive_data} to give you the + # exact data in the packet, with the original data length. + # Also observe that Connection#receive_data may be called with a + # *zero-length* data payload, since empty datagrams are permitted in UDP. + # + # {Connection#send_data} is available with UDP packets as with TCP, + # but there is an important difference. Because UDP communications + # are *connectionless*, there is no implicit recipient for the packets you + # send. Ordinarily you must specify the recipient for each packet you send. + # However, EventMachine provides for the typical pattern of receiving a UDP datagram + # from a remote peer, performing some operation, and then sending + # one or more packets in response to the same remote peer. + # To support this model easily, just use {Connection#send_data} + # in the code that you supply for {Connection#receive_data}. + # + # EventMachine will provide an implicit return address for any messages sent to + # {Connection#send_data} within the context of a {Connection#receive_data} callback, + # and your response will automatically go to the correct remote peer. + # + # Observe that the port number that you supply to {EventMachine.open_datagram_socket} + # may be zero. In this case, EventMachine will create a UDP socket + # that is bound to an [ephemeral port](http://en.wikipedia.org/wiki/Ephemeral_port). + # This is not appropriate for servers that must publish a well-known + # port to which remote peers may send datagrams. But it can be useful + # for clients that send datagrams to other servers. + # If you do this, you will receive any responses from the remote + # servers through the normal {Connection#receive_data} callback. + # Observe that you will probably have issues with firewalls blocking + # the ephemeral port numbers, so this technique is most appropriate for LANs. + # + # If you wish to send datagrams to arbitrary remote peers (not + # necessarily ones that have sent data to which you are responding), + # then see {Connection#send_datagram}. + # + # DO NOT call send_data from a datagram socket outside of a {Connection#receive_data} method. Use {Connection#send_datagram}. + # If you do use {Connection#send_data} outside of a {Connection#receive_data} method, you'll get a confusing error + # because there is no "peer," as #send_data requires (inside of {EventMachine::Connection#receive_data}, + # {EventMachine::Connection#send_data} "fakes" the peer as described above). + # + # @param [String] address IP address + # @param [String] port Port + # @param [Class, Module] handler A class or a module that implements connection lifecycle callbacks. + def self.open_datagram_socket address, port, handler=nil, *args + # Replaced the implementation on 01Oct06. Thanks to Tobias Gustafsson for pointing + # out that this originally did not take a class but only a module. + + + klass = klass_from_handler(Connection, handler, *args) + s = open_udp_socket address, port.to_i + c = klass.new s, *args + @conns[s] = c + block_given? and yield c + c + end + + + # For advanced users. This function sets the default timer granularity, which by default is + # slightly smaller than 100 milliseconds. Call this function to set a higher or lower granularity. + # The function affects the behavior of {EventMachine.add_timer} and {EventMachine.add_periodic_timer}. + # Most applications will not need to call this function. + # + # Avoid setting the quantum to very low values because that may reduce performance under some extreme conditions. + # We recommend that you not use values lower than 10. + # + # This method only can be used if event loop is running. + # + # @param [Integer] mills New timer granularity, in milliseconds + # + # @see EventMachine.add_timer + # @see EventMachine.add_periodic_timer + # @see EventMachine::Timer + # @see EventMachine.run + def self.set_quantum mills + set_timer_quantum mills.to_i + end + + # Sets the maximum number of timers and periodic timers that may be outstanding at any + # given time. You only need to call {.set_max_timers} if you need more than the default + # number of timers, which on most platforms is 1000. + # + # @note This method has to be used *before* event loop is started. + # + # @param [Integer] ct Maximum number of timers that may be outstanding at any given time + # + # @see EventMachine.add_timer + # @see EventMachine.add_periodic_timer + # @see EventMachine::Timer + def self.set_max_timers ct + set_max_timer_count ct + end + + # Gets the current maximum number of allowed timers + # + # @return [Integer] Maximum number of timers that may be outstanding at any given time + def self.get_max_timers + get_max_timer_count + end + + # Returns the total number of connections (file descriptors) currently held by the reactor. + # Note that a tick must pass after the 'initiation' of a connection for this number to increment. + # It's usually accurate, but don't rely on the exact precision of this number unless you really know EM internals. + # + # @example + # + # EventMachine.run { + # EventMachine.connect("rubyeventmachine.com", 80) + # # count will be 0 in this case, because connection is not + # # established yet + # count = EventMachine.connection_count + # } + # + # + # @example + # + # EventMachine.run { + # EventMachine.connect("rubyeventmachine.com", 80) + # + # EventMachine.next_tick { + # # In this example, count will be 1 since the connection has been established in + # # the next loop of the reactor. + # count = EventMachine.connection_count + # } + # } + # + # @return [Integer] Number of connections currently held by the reactor. + def self.connection_count + self.get_connection_count + end + + # The is the responder for the loopback-signalled event. + # It can be fired either by code running on a separate thread ({EventMachine.defer}) or on + # the main thread ({EventMachine.next_tick}). + # It will often happen that a next_tick handler will reschedule itself. We + # consume a copy of the tick queue so that tick events scheduled by tick events + # have to wait for the next pass through the reactor core. + # + # @private + def self.run_deferred_callbacks + until (@resultqueue ||= []).empty? + result,cback = @resultqueue.pop + cback.call result if cback + end + + # Capture the size at the start of this tick... + size = @next_tick_mutex.synchronize { @next_tick_queue.size } + size.times do |i| + callback = @next_tick_mutex.synchronize { @next_tick_queue.shift } + begin + callback.call + rescue + exception_raised = true + raise + ensure + # This is a little nasty. The problem is, if an exception occurs during + # the callback, then we need to send a signal to the reactor to actually + # do some work during the next_tick. The only mechanism we have from the + # ruby side is next_tick itself, although ideally, we'd just drop a byte + # on the loopback descriptor. + next_tick {} if exception_raised + end + end + end + + + # EventMachine.defer is used for integrating blocking operations into EventMachine's control flow. + # The action of {.defer} is to take the block specified in the first parameter (the "operation") + # and schedule it for asynchronous execution on an internal thread pool maintained by EventMachine. + # When the operation completes, it will pass the result computed by the block (if any) back to the + # EventMachine reactor. Then, EventMachine calls the block specified in the second parameter to + # {.defer} (the "callback"), as part of its normal event handling loop. The result computed by the + # operation block is passed as a parameter to the callback. You may omit the callback parameter if + # you don't need to execute any code after the operation completes. If the operation raises an + # unhandled exception, the exception will be passed to the third parameter to {.defer} (the + # "errback"), as part of its normal event handling loop. If no errback is provided, the exception + # will be allowed to blow through to the main thread immediately. + # + # ## Caveats ## + # + # Note carefully that the code in your deferred operation will be executed on a separate + # thread from the main EventMachine processing and all other Ruby threads that may exist in + # your program. Also, multiple deferred operations may be running at once! Therefore, you + # are responsible for ensuring that your operation code is threadsafe. + # + # Don't write a deferred operation that will block forever. If so, the current implementation will + # not detect the problem, and the thread will never be returned to the pool. EventMachine limits + # the number of threads in its pool, so if you do this enough times, your subsequent deferred + # operations won't get a chance to run. + # + # The threads within the EventMachine's thread pool have abort_on_exception set to true. As a result, + # if an unhandled exception is raised by the deferred operation and an errback is not provided, it + # will blow through to the main thread immediately. If the main thread is within an indiscriminate + # rescue block at that time, the exception could be handled improperly by the main thread. + # + # @example + # + # operation = proc { + # # perform a long-running operation here, such as a database query. + # "result" # as usual, the last expression evaluated in the block will be the return value. + # } + # callback = proc {|result| + # # do something with result here, such as send it back to a network client. + # } + # errback = proc {|error| + # # do something with error here, such as re-raising or logging. + # } + # + # EventMachine.defer(operation, callback, errback) + # + # @param [#call] op An operation you want to offload to EventMachine thread pool + # @param [#call] callback A callback that will be run on the event loop thread after `operation` finishes. + # @param [#call] errback An errback that will be run on the event loop thread after `operation` raises an exception. + # + # @see EventMachine.threadpool_size + def self.defer op = nil, callback = nil, errback = nil, &blk + # OBSERVE that #next_tick hacks into this mechanism, so don't make any changes here + # without syncing there. + # + # Running with $VERBOSE set to true gives a warning unless all ivars are defined when + # they appear in rvalues. But we DON'T ever want to initialize @threadqueue unless we + # need it, because the Ruby threads are so heavyweight. We end up with this bizarre + # way of initializing @threadqueue because EventMachine is a Module, not a Class, and + # has no constructor. + + unless @threadpool + @threadpool = [] + @threadqueue = ::Queue.new + @resultqueue = ::Queue.new + spawn_threadpool + end + + @threadqueue << [op||blk,callback,errback] + end + + + # @private + def self.spawn_threadpool + until @threadpool.size == @threadpool_size.to_i + thread = Thread.new do + Thread.current.abort_on_exception = true + while true + begin + op, cback, eback = *@threadqueue.pop + rescue ThreadError + $stderr.puts $!.message + break # Ruby 2.0 may fail at Queue.pop + end + begin + result = op.call + @resultqueue << [result, cback] + rescue Exception => error + raise error unless eback + @resultqueue << [error, eback] + end + signal_loopbreak + end + end + @threadpool << thread + end + @all_threads_spawned = true + end + + ## + # Returns +true+ if all deferred actions are done executing and their + # callbacks have been fired. + # + def self.defers_finished? + return false if @threadpool and !@all_threads_spawned + return false if @threadqueue and not @threadqueue.empty? + return false if @resultqueue and not @resultqueue.empty? + return false if @threadpool and @threadqueue.num_waiting != @threadpool.size + return true + end + + class << self + # @private + attr_reader :threadpool + + # Size of the EventMachine.defer threadpool (defaults to 20) + # @return [Number] + attr_accessor :threadpool_size + EventMachine.threadpool_size = 20 + end + + # Schedules a proc for execution immediately after the next "turn" through the reactor + # core. An advanced technique, this can be useful for improving memory management and/or + # application responsiveness, especially when scheduling large amounts of data for + # writing to a network connection. + # + # This method takes either a single argument (which must be a callable object) or a block. + # + # @param [#call] pr A callable object to run + def self.next_tick pr=nil, &block + # This works by adding to the @resultqueue that's used for #defer. + # The general idea is that next_tick is used when we want to give the reactor a chance + # to let other operations run, either to balance the load out more evenly, or to let + # outbound network buffers drain, or both. So we probably do NOT want to block, and + # we probably do NOT want to be spinning any threads. A program that uses next_tick + # but not #defer shouldn't suffer the penalty of having Ruby threads running. They're + # extremely expensive even if they're just sleeping. + + raise ArgumentError, "no proc or block given" unless ((pr && pr.respond_to?(:call)) or block) + @next_tick_mutex.synchronize do + @next_tick_queue << ( pr || block ) + end + signal_loopbreak if reactor_running? + end + + # A wrapper over the setuid system call. Particularly useful when opening a network + # server on a privileged port because you can use this call to drop privileges + # after opening the port. Also very useful after a call to {.set_descriptor_table_size}, + # which generally requires that you start your process with root privileges. + # + # This method is intended for use in enforcing security requirements, consequently + # it will throw a fatal error and end your program if it fails. + # + # @param [String] username The effective name of the user whose privilege-level your process should attain. + # + # @note This method has no effective implementation on Windows or in the pure-Ruby + # implementation of EventMachine + def self.set_effective_user username + EventMachine::setuid_string username + end + + + # Sets the maximum number of file or socket descriptors that your process may open. + # If you call this method with no arguments, it will simply return + # the current size of the descriptor table without attempting to change it. + # + # The new limit on open descriptors **only** applies to sockets and other descriptors + # that belong to EventMachine. It has **no effect** on the number of descriptors + # you can create in ordinary Ruby code. + # + # Not available on all platforms. Increasing the number of descriptors beyond its + # default limit usually requires superuser privileges. (See {.set_effective_user} + # for a way to drop superuser privileges while your program is running.) + # + # @param [Integer] n_descriptors The maximum number of file or socket descriptors that your process may open + # @return [Integer] The new descriptor table size. + def self.set_descriptor_table_size n_descriptors=nil + EventMachine::set_rlimit_nofile n_descriptors + end + + + + # Runs an external process. + # + # @example + # + # module RubyCounter + # def post_init + # # count up to 5 + # send_data "5\n" + # end + # def receive_data data + # puts "ruby sent me: #{data}" + # end + # def unbind + # puts "ruby died with exit status: #{get_status.exitstatus}" + # end + # end + # + # EventMachine.run { + # EventMachine.popen("ruby -e' $stdout.sync = true; gets.to_i.times{ |i| puts i+1; sleep 1 } '", RubyCounter) + # } + # + # @note This method is not supported on Microsoft Windows + # @see EventMachine::DeferrableChildProcess + # @see EventMachine.system + def self.popen cmd, handler=nil, *args + # At this moment, it's only available on Unix. + # Perhaps misnamed since the underlying function uses socketpair and is full-duplex. + + klass = klass_from_handler(Connection, handler, *args) + w = case cmd + when Array + cmd + when String + Shellwords::shellwords( cmd ) + end + w.unshift( w.first ) if w.first + s = invoke_popen( w ) + c = klass.new s, *args + @conns[s] = c + yield(c) if block_given? + c + end + + + # Tells you whether the EventMachine reactor loop is currently running. + # + # Useful when writing libraries that want to run event-driven code, but may + # be running in programs that are already event-driven. In such cases, if {EventMachine.reactor_running?} + # returns false, your code can invoke {EventMachine.run} and run your application code inside + # the block passed to that method. If this method returns true, just + # execute your event-aware code. + # + # @return [Boolean] true if the EventMachine reactor loop is currently running + def self.reactor_running? + @reactor_running && Process.pid == @reactor_pid + end + + + # (Experimental) + # + # @private + def self.open_keyboard handler=nil, *args + klass = klass_from_handler(Connection, handler, *args) + + s = read_keyboard + c = klass.new s, *args + @conns[s] = c + block_given? and yield c + c + end + + # EventMachine's file monitoring API. Currently supported are the following events + # on individual files, using inotify on Linux systems, and kqueue for *BSD and Mac OS X: + # + # * File modified (written to) + # * File moved/renamed + # * File deleted + # + # EventMachine::watch_file takes a filename and a handler Module containing your custom callback methods. + # This will setup the low level monitoring on the specified file, and create a new EventMachine::FileWatch + # object with your Module mixed in. FileWatch is a subclass of {EventMachine::Connection}, so callbacks on this object + # work in the familiar way. The callbacks that will be fired by EventMachine are: + # + # * file_modified + # * file_moved + # * file_deleted + # + # You can access the filename being monitored from within this object using {FileWatch#path}. + # + # When a file is deleted, {FileWatch#stop_watching} will be called after your file_deleted callback, + # to clean up the underlying monitoring and remove EventMachine's reference to the now-useless {FileWatch} instance. + # This will in turn call unbind, if you wish to use it. + # + # The corresponding system-level Errno will be raised when attempting to monitor non-existent files, + # files with wrong permissions, or if an error occurs dealing with inotify/kqueue. + # + # @example + # + # # Before running this example, make sure we have a file to monitor: + # # $ echo "bar" > /tmp/foo + # + # module Handler + # def file_modified + # puts "#{path} modified" + # end + # + # def file_moved + # puts "#{path} moved" + # end + # + # def file_deleted + # puts "#{path} deleted" + # end + # + # def unbind + # puts "#{path} monitoring ceased" + # end + # end + # + # # for efficient file watching, use kqueue on Mac OS X + # EventMachine.kqueue = true if EventMachine.kqueue? + # + # EventMachine.run { + # EventMachine.watch_file("/tmp/foo", Handler) + # } + # + # # $ echo "baz" >> /tmp/foo => "/tmp/foo modified" + # # $ mv /tmp/foo /tmp/oof => "/tmp/foo moved" + # # $ rm /tmp/oof => "/tmp/foo deleted" + # + # @note The ability to pick up on the new filename after a rename is not yet supported. + # Calling #path will always return the filename you originally used. + # + # @param [String] filename Local path to the file to watch. + # @param [Class, Module] handler A class or module that implements event handlers associated with the file. + def self.watch_file(filename, handler=nil, *args) + klass = klass_from_handler(FileWatch, handler, *args) + + s = EM::watch_filename(filename) + c = klass.new s, *args + # we have to set the path like this because of how Connection.new works + c.instance_variable_set("@path", filename) + @conns[s] = c + block_given? and yield c + c + end + + # EventMachine's process monitoring API. On Mac OS X and *BSD this method is implemented using kqueue. + # + # @example + # + # module ProcessWatcher + # def process_exited + # put 'the forked child died!' + # end + # end + # + # pid = fork{ sleep } + # + # EventMachine.run { + # EventMachine.watch_process(pid, ProcessWatcher) + # EventMachine.add_timer(1){ Process.kill('TERM', pid) } + # } + # + # @param [Integer] pid PID of the process to watch. + # @param [Class, Module] handler A class or module that implements event handlers associated with the file. + def self.watch_process(pid, handler=nil, *args) + pid = pid.to_i + + klass = klass_from_handler(ProcessWatch, handler, *args) + + s = EM::watch_pid(pid) + c = klass.new s, *args + # we have to set the path like this because of how Connection.new works + c.instance_variable_set("@pid", pid) + @conns[s] = c + block_given? and yield c + c + end + + # Catch-all for errors raised during event loop callbacks. + # + # @example + # + # EventMachine.error_handler{ |e| + # puts "Error raised during event loop: #{e.message}" + # } + # + # @param [#call] cb Global catch-all errback + def self.error_handler cb = nil, &blk + if cb or blk + @error_handler = cb || blk + elsif instance_variable_defined? :@error_handler + remove_instance_variable :@error_handler + end + end + + # This method allows for direct writing of incoming data back out to another descriptor, at the C++ level in the reactor. + # This is very efficient and especially useful for proxies where high performance is required. Propogating data from a server response + # all the way up to Ruby, and then back down to the reactor to be sent back to the client, is often unnecessary and + # incurs a significant performance decrease. + # + # The two arguments are instance of {EventMachine::Connection} subclasses, 'from' and 'to'. 'from' is the connection whose inbound data you want + # relayed back out. 'to' is the connection to write it to. + # + # Once you call this method, the 'from' connection will no longer get receive_data callbacks from the reactor, + # except in the case that 'to' connection has already closed when attempting to write to it. You can see + # in the example, that proxy_target_unbound will be called when this occurs. After that, further incoming + # data will be passed into receive_data as normal. + # + # Note also that this feature supports different types of descriptors: TCP, UDP, and pipes. You can relay + # data from one kind to another, for example, feed a pipe from a UDP stream. + # + # @example + # + # module ProxyConnection + # def initialize(client, request) + # @client, @request = client, request + # end + # + # def post_init + # EM::enable_proxy(self, @client) + # end + # + # def connection_completed + # send_data @request + # end + # + # def proxy_target_unbound + # close_connection + # end + # + # def unbind + # @client.close_connection_after_writing + # end + # end + # + # module ProxyServer + # def receive_data(data) + # (@buf ||= "") << data + # if @buf =~ /\r\n\r\n/ # all http headers received + # EventMachine.connect("10.0.0.15", 80, ProxyConnection, self, data) + # end + # end + # end + # + # EventMachine.run { + # EventMachine.start_server("127.0.0.1", 8080, ProxyServer) + # } + # + # @param [EventMachine::Connection] from Source of data to be proxies/streamed. + # @param [EventMachine::Connection] to Destination of data to be proxies/streamed. + # @param [Integer] bufsize Buffer size to use + # @param [Integer] length Maximum number of bytes to proxy. + # + # @see EventMachine.disable_proxy + def self.enable_proxy(from, to, bufsize=0, length=0) + EM::start_proxy(from.signature, to.signature, bufsize, length) + end + + # Takes just one argument, a {Connection} that has proxying enabled via {EventMachine.enable_proxy}. + # Calling this method will remove that functionality and your connection will begin receiving + # data via {Connection#receive_data} again. + # + # @param [EventMachine::Connection] from Source of data that is being proxied + # @see EventMachine.enable_proxy + def self.disable_proxy(from) + EM::stop_proxy(from.signature) + end + + # Retrieve the heartbeat interval. This is how often EventMachine will check for dead connections + # that have had an inactivity timeout set via {Connection#set_comm_inactivity_timeout}. + # Default is 2 seconds. + # + # @return [Integer] Heartbeat interval, in seconds + def self.heartbeat_interval + EM::get_heartbeat_interval + end + + # Set the heartbeat interval. This is how often EventMachine will check for dead connections + # that have had an inactivity timeout set via {Connection#set_comm_inactivity_timeout}. + # Takes a Numeric number of seconds. Default is 2. + # + # @param [Integer] time Heartbeat interval, in seconds + def self.heartbeat_interval=(time) + EM::set_heartbeat_interval time.to_f + end + + # @private + def self.event_callback conn_binding, opcode, data + # + # Changed 27Dec07: Eliminated the hookable error handling. + # No one was using it, and it degraded performance significantly. + # It's in original_event_callback, which is dead code. + # + # Changed 25Jul08: Added a partial solution to the problem of exceptions + # raised in user-written event-handlers. If such exceptions are not caught, + # we must cause the reactor to stop, and then re-raise the exception. + # Otherwise, the reactor doesn't stop and it's left on the call stack. + # This is partial because we only added it to #unbind, where it's critical + # (to keep unbind handlers from being re-entered when a stopping reactor + # runs down open connections). It should go on the other calls to user + # code, but the performance impact may be too large. + # + if opcode == ConnectionUnbound + if c = @conns.delete( conn_binding ) + begin + if c.original_method(:unbind).arity != 0 + c.unbind(data == 0 ? nil : EventMachine::ERRNOS[data]) + else + c.unbind + end + # If this is an attached (but not watched) connection, close the underlying io object. + if c.instance_variable_defined?(:@io) and !c.instance_variable_get(:@watch_mode) + io = c.instance_variable_get(:@io) + begin + io.close + rescue Errno::EBADF, IOError + end + end + # As noted above, unbind absolutely must not raise an exception or the reactor will crash. + # If there is no EM.error_handler, or if the error_handler retrows, then stop the reactor, + # stash the exception in $wrapped_exception, and the exception will be raised after the + # reactor is cleaned up (see the last line of self.run). + rescue Exception => error + if instance_variable_defined? :@error_handler + begin + @error_handler.call error + # No need to stop unless error_handler rethrows + rescue Exception => error + @wrapped_exception = error + stop + end + else + @wrapped_exception = error + stop + end + end + elsif c = @acceptors.delete( conn_binding ) + # no-op + else + if $! # Bubble user generated errors. + @wrapped_exception = $! + stop + else + raise ConnectionNotBound, "received ConnectionUnbound for an unknown signature: #{conn_binding}" + end + end + elsif opcode == ConnectionAccepted + accep,args,blk = @acceptors[conn_binding] + raise NoHandlerForAcceptedConnection unless accep + c = accep.new data, *args + @conns[data] = c + blk and blk.call(c) + c # (needed?) + ## + # The remaining code is a fallback for the pure ruby and java reactors. + # In the C++ reactor, these events are handled in the C event_callback() in rubymain.cpp + elsif opcode == ConnectionCompleted + c = @conns[conn_binding] or raise ConnectionNotBound, "received ConnectionCompleted for unknown signature: #{conn_binding}" + c.connection_completed + elsif opcode == SslHandshakeCompleted + c = @conns[conn_binding] or raise ConnectionNotBound, "received SslHandshakeCompleted for unknown signature: #{conn_binding}" + c.ssl_handshake_completed + elsif opcode == SslVerify + c = @conns[conn_binding] or raise ConnectionNotBound, "received SslVerify for unknown signature: #{conn_binding}" + c.close_connection if c.ssl_verify_peer(data) == false + elsif opcode == TimerFired + t = @timers.delete( data ) + return if t == false # timer cancelled + t or raise UnknownTimerFired, "timer data: #{data}" + t.call + elsif opcode == ConnectionData + c = @conns[conn_binding] or raise ConnectionNotBound, "received data #{data} for unknown signature: #{conn_binding}" + c.receive_data data + elsif opcode == LoopbreakSignalled + run_deferred_callbacks + elsif opcode == ConnectionNotifyReadable + c = @conns[conn_binding] or raise ConnectionNotBound + c.notify_readable + elsif opcode == ConnectionNotifyWritable + c = @conns[conn_binding] or raise ConnectionNotBound + c.notify_writable + end + end + + # + # + # @private + def self._open_file_for_writing filename, handler=nil + klass = klass_from_handler(Connection, handler) + + s = _write_file filename + c = klass.new s + @conns[s] = c + block_given? and yield c + c + end + + # @private + def self.klass_from_handler(klass = Connection, handler = nil, *args) + klass = if handler and handler.is_a?(Class) + raise ArgumentError, "must provide module or subclass of #{klass.name}" unless klass >= handler + handler + elsif handler + if defined?(handler::EM_CONNECTION_CLASS) + handler::EM_CONNECTION_CLASS + else + handler::const_set(:EM_CONNECTION_CLASS, Class.new(klass) {include handler}) + end + else + klass + end + + arity = klass.instance_method(:initialize).arity + expected = arity >= 0 ? arity : -(arity + 1) + if (arity >= 0 and args.size != expected) or (arity < 0 and args.size < expected) + raise ArgumentError, "wrong number of arguments for #{klass}#initialize (#{args.size} for #{expected})" + end + + klass + end +end # module EventMachine + +# Alias for {EventMachine} +EM = EventMachine +# Alias for {EventMachine::Protocols} +EM::P = EventMachine::Protocols diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/fastfilereaderext.so b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/fastfilereaderext.so new file mode 100755 index 0000000000000000000000000000000000000000..ee0d568796932902d9b6c996016fd48796cc788c GIT binary patch literal 108872 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/jeventmachine.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/jeventmachine.rb new file mode 100644 index 0000000000..21a267d70f --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/jeventmachine.rb @@ -0,0 +1,316 @@ +#-- +# +# Author:: Francis Cianfrocca (gmail: blackhedd) +# Homepage:: http://rubyeventmachine.com +# Date:: 8 Apr 2006 +# +# See EventMachine and EventMachine::Connection for documentation and +# usage examples. +# +#---------------------------------------------------------------------------- +# +# Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +# Gmail: blackhedd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: 1) the GNU General Public License +# as published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version; or 2) Ruby's License. +# +# See the file COPYING for complete licensing information. +# +#--------------------------------------------------------------------------- +# +# + +# This module provides "glue" for the Java version of the EventMachine reactor core. +# For C++ EventMachines, the analogous functionality is found in ext/rubymain.cpp, +# which is a garden-variety Ruby-extension glue module. + +require 'java' +require 'rubyeventmachine' +require 'socket' + +java_import java.io.FileDescriptor +java_import java.nio.channels.SocketChannel +java_import java.lang.reflect.Field + +module JavaFields + def set_field(key, value) + field = getClass.getDeclaredField(key) + field.setAccessible(true) + if field.getType.toString == 'int' + field.setInt(self, value) + else + field.set(self, value) + end + end + + def get_field(key) + field = getClass.getDeclaredField(key) + field.setAccessible(true) + field.get(self) + end +end + +FileDescriptor.send :include, JavaFields +SocketChannel.send :include, JavaFields + +module EventMachine + # TODO: These event numbers are defined in way too many places. + # DRY them up. + # @private + TimerFired = 100 + # @private + ConnectionData = 101 + # @private + ConnectionUnbound = 102 + # @private + ConnectionAccepted = 103 + # @private + ConnectionCompleted = 104 + # @private + LoopbreakSignalled = 105 + # @private + ConnectionNotifyReadable = 106 + # @private + ConnectionNotifyWritable = 107 + # @private + SslHandshakeCompleted = 108 + # @private + SslVerify = 109 + + # @private + EM_PROTO_SSLv2 = 2 + # @private + EM_PROTO_SSLv3 = 4 + # @private + EM_PROTO_TLSv1 = 8 + # @private + EM_PROTO_TLSv1_1 = 16 + # @private + EM_PROTO_TLSv1_2 = 32 + + # Exceptions that are defined in rubymain.cpp + class ConnectionError < RuntimeError; end + class ConnectionNotBound < RuntimeError; end + class UnknownTimerFired < RuntimeError; end + class Unsupported < RuntimeError; end + + # This thunk class used to be called EM, but that caused conflicts with + # the alias "EM" for module EventMachine. (FC, 20Jun08) + class JEM < com.rubyeventmachine.EmReactor + def eventCallback a1, a2, a3, a4 + s = String.from_java_bytes(a3.array[a3.position...a3.limit]) if a3 + EventMachine::event_callback a1, a2, s || a4 + nil + end + end + # class Connection < com.rubyeventmachine.Connection + # def associate_callback_target sig + # # No-op for the time being. + # end + # end + def self.initialize_event_machine + @em = JEM.new + end + def self.release_machine + @em = nil + end + def self.add_oneshot_timer interval + @em.installOneshotTimer interval + end + def self.run_machine + @em.run + end + def self.stop + @em.stop + end + def self.start_tcp_server server, port + @em.startTcpServer server, port + end + def self.stop_tcp_server sig + @em.stopTcpServer sig + end + def self.start_unix_server filename + # TEMPORARILY unsupported until someone figures out how to do it. + raise "unsupported on this platform" + end + def self.send_data sig, data, length + @em.sendData sig, data.to_java_bytes + rescue java.lang.NullPointerException + 0 + end + def self.send_datagram sig, data, length, address, port + @em.sendDatagram sig, data.to_java_bytes, length, address, port + end + def self.connect_server server, port + bind_connect_server nil, nil, server, port + end + def self.bind_connect_server bind_addr, bind_port, server, port + @em.connectTcpServer bind_addr, bind_port.to_i, server, port + end + def self.close_connection sig, after_writing + @em.closeConnection sig, after_writing + end + def self.set_comm_inactivity_timeout sig, interval + @em.setCommInactivityTimeout sig, interval + end + def self.set_pending_connect_timeout sig, val + end + def self.set_heartbeat_interval val + end + def self.start_tls sig + @em.startTls sig + end + def self.ssl? + false + end + def self.signal_loopbreak + @em.signalLoopbreak + end + def self.set_timer_quantum q + @em.setTimerQuantum q + end + def self.epoll + # Epoll is a no-op for Java. + # The latest Java versions run epoll when possible in NIO. + end + def self.epoll= val + end + def self.kqueue + end + def self.kqueue= val + end + def self.epoll? + false + end + def self.kqueue? + false + end + def self.set_rlimit_nofile n_descriptors + # Currently a no-op for Java. + end + def self.open_udp_socket server, port + @em.openUdpSocket server, port + end + def self.invoke_popen cmd + # TEMPORARILY unsupported until someone figures out how to do it. + raise "unsupported on this platform" + end + def self.read_keyboard + # TEMPORARILY unsupported until someone figures out how to do it. + raise "temporarily unsupported on this platform" + end + def self.set_max_timer_count num + # harmless no-op in Java. There's no built-in timer limit. + @max_timer_count = num + end + def self.get_max_timer_count + # harmless no-op in Java. There's no built-in timer limit. + @max_timer_count || 100_000 + end + def self.library_type + :java + end + def self.get_peername sig + if peer = @em.getPeerName(sig) + Socket.pack_sockaddr_in(*peer) + end + end + def self.get_sockname sig + if sockName = @em.getSockName(sig) + Socket.pack_sockaddr_in(*sockName) + end + end + # @private + def self.attach_fd fileno, watch_mode + # 3Aug09: We could pass in the actual SocketChannel, but then it would be modified (set as non-blocking), and + # we would need some logic to make sure detach_fd below didn't clobber it. For now, we just always make a new + # SocketChannel for the underlying file descriptor + # if fileno.java_kind_of? SocketChannel + # ch = fileno + # ch.configureBlocking(false) + # fileno = nil + # elsif fileno.java_kind_of? java.nio.channels.Channel + + if fileno.java_kind_of? java.nio.channels.Channel + field = fileno.getClass.getDeclaredField('fdVal') + field.setAccessible(true) + fileno = field.get(fileno) + else + raise ArgumentError, 'attach_fd requires Java Channel or POSIX fileno' unless fileno.is_a? Integer + end + + if fileno == 0 + raise "can't open STDIN as selectable in Java =(" + elsif fileno.is_a? Integer + # 8Aug09: The following code is specific to the sun jvm's SocketChannelImpl. Is there a cross-platform + # way of implementing this? If so, also remember to update EventableSocketChannel#close and #cleanup + fd = FileDescriptor.new + fd.set_field 'fd', fileno + + ch = SocketChannel.open + ch.configureBlocking(false) + ch.kill + ch.set_field 'fd', fd + ch.set_field 'fdVal', fileno + ch.set_field 'state', ch.get_field('ST_CONNECTED') + end + + @em.attachChannel(ch,watch_mode) + end + def self.detach_fd sig + if ch = @em.detachChannel(sig) + ch.get_field 'fdVal' + end + end + + def self.set_notify_readable sig, mode + @em.setNotifyReadable(sig, mode) + end + def self.set_notify_writable sig, mode + @em.setNotifyWritable(sig, mode) + end + + def self.is_notify_readable sig + @em.isNotifyReadable(sig) + end + def self.is_notify_writable sig + @em.isNotifyWritable(sig) + end + def self.get_connection_count + @em.getConnectionCount + end + + def self.pause_connection(sig) + @em.pauseConnection(sig) + end + def self.resume_connection(sig) + @em.resumeConnection(sig) + end + def self.connection_paused?(sig) + @em.isConnectionPaused(sig) + end + def self._get_outbound_data_size(sig) + @em.getOutboundDataSize(sig) + end + + + def self.set_tls_parms(sig, params) + end + def self.start_tls(sig) + end + def self.send_file_data(sig, filename) + end + + class Connection + def associate_callback_target sig + # No-op for the time being + end + def get_outbound_data_size + EM._get_outbound_data_size @signature + end + end +end + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so new file mode 100755 index 0000000000000000000000000000000000000000..42336a00a021789d85a96dcc44a6718094995a3d GIT binary patch literal 896568 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%0Ao@X7m=h^6QwDGs$HvZ$Zv1g=B zz0Eq;y8b`5(etB?o*Wx~A?dLir#_>H99HfAyp5juHtq6v8-A-z{lwbDlNg)+b-ZLGEb(6D1TDMcS&+4Qf^ zZRQ&XZR+7?>R(p%cBzg2TATjH@YpxgLm5QT%Mp zm-V4%m&Qp(+p~$n(CvvFgGMPmdHf)d4pYx>#sB-$L(5p$+`J2k(K z>VKFq&}iX@M|7N|`7&v*{zhY!k~j0c<4mO|Z>-|KRv*R;DQ|zn!4F>P(AyJ?hoyf} zz7H#&`yn62XDL0dTNKaF_4v5+9Bt>tif{@`&ktz>2ixDl4}9rx%D?nHaEPjh&~n97 zbI5T-{I=4Q+pzA0X4g z&*=HMOY3RYdPeJf_sjT2^`;+i^RrPteyRN-bdn-&P_)sc>oX8lpVO$baQ({zb&_>z z`AssfApMUkJy&V{ZmJNL51pw9n$F2_v-G3>Mr%|({9>4@&ywd`Xk z`OJEj_QTdOijPqr#y+x#+a)2YU53cKrN80&KnZeu;bX1#&sKggO~)$vm!3mQJnwHf zvlRc9=3k$n{LQgP@ipqhcuni?&=q{W=KUus`DR_8)U0xBr++yPwDeGd{A`;Kt}d>( z=3@$9q4|^Cif`#3DFS5iX}@hsR0>SL?XTO#tJ`I`Qe%8EOzD@+ z4#XYO`5w7I@viq3!TUA%a5=TSj#uP1a=c3l*?!lBO8#!G=L&64c%ri3ls{L?H(sCw z&A4%w)*l@Y_xD!i-5C`Rr^ach4dwQ{Vc0PCRszFYTqO&jxd zc{|=y3Qo``PB~xc*{$o@srg5zD1NJ{U+241$Da^ymZ0MkRcvFn_UG_G#XIFJ?MI-S z4)zCERKLs6{W?!~2pV?fxQ!f`>$&j;rAMnbZqa`0(0;4k#8{>CmCZ7wVVTzRAO(EM zw@m4w@FK^;F-m{fr+D6%z{g(7SH>^ikU>X|=Ko0T!uEuJt@v^s$l54wuzc$>#hdXt z%c#hc^BpJ?9B@_BKJ zuhaH~b-!qeiZjzG9&)};-G7~0egaL*n9tL3fV!I;eavxIPbiLPezY=C^Yw-m;x8J%2Xi$?e*& z0@|;x)%vfbdggqMR}zIWQD~4^FM;Og%4h>-cQe&)d4cI|r%y z&(`u4vw3_u)p+Jpm9M6a*T`V5pHQrlAFn=)!Zgk6c$Ka%c!nlUEFaJt!HTpz54&vt zR&Bpi%m1wBjot($$ny+79@FJ@Ma8jt9XA|$9=KGA8y}5S_27-FfA3Ibk4snN%UXVz zZWpI+7qfou)AeKM`f+Occ9Ivr)f@RtKlxe5Lx=WTaz8l+l4D3c==+EUT@QV9ziZTS z=`t<9nEZ$3o70qFmX`lf`+2i&U(v+}lj>@-1^M4(s^oMkO zSfw-mp86g8gG|#cXwv=B5p{nN)a~Wc?PZqt z{L_{G#;Eb=M4EU=`|5GW92Z8J@#I{U;lH#!8|i+E<-=OP9_EcI-R^E}XT(qRxD(a` zl-chl>iKq4R6pIJ%NvS{hc~6Ed^>c%Gv~JxwBNQkl%1z)JI~Vb)6ntLoX7T&_%_gJ z<_(r~P&ks~8a=;qYJa2ZmE#_2FD|ca=p^Pb&1dR-0~f1&_3&@>(thiW(lhcr?YEUm zUf&)VV`%=s{@D`c=buwUNW0W4dET?i$7_0=_38}Gc}1+Q=g{w!{M+ioxL(^6()vw* zcz`Zs{ms*qV3ksDY|-PIGs+*P4O4cuYCUFs-k|*_T&47w^>&H2Gjx;UO@DaYCaxaV z<6~HlkIS?@XQe4SLs9W|_+({|>ouj{uRe^)+MW(=k2zo3tLvdDs-9oh{o1u%DbQia zxRWL%;^$HE;WgdA+}i)mdZ;%0X_VhyaiP-V`dsP1Qa6ByF64IiYX3Lm+j6u1tCjpe zbUl2b`4(L+vp(1Bc-6c>${>{Wy6e1RW3PjK^sEUD|#chUDl^ z<&}7)@0-kc)h=;tpwXz`voZV8OB6R)-lNAaa~y9VZM<$1*5j;8>kpr;>@?;nds;O= z{T#(Rb^oGaLXLUoD!%bDC9j*`2-(EpY~8ONQSEN%_|q6w|10!3+jOGRzf|X2HCp8x zecw8NylTfLJrJ4WQ9ZRguh%(v6E_{EA9DQ-HU=1P>v@-)q<>~6YyGQLzD|8&iH@u0 zW_;dj&PR%F_YPfeX59XgGLX2T-%w2&(L&be+R#iK*v3O zl%nyveM3?0yHwXt_&jBg*^UFWKQ}H`{1@uO*skXZ4n0q!YLR1rjt>F79$TaNhjg52 z*6m`(?OGb|xc);8O7V|c{s~shZ4n0`1QP4RhpJTmRsYBMhM z*Yz0~uJpgC?Z039bBpdTxtd?D%i9#S&i@Z;IPvE~rRQvI=WgBZj*}HXLF<`0N|h@R zRiA&>{oPoj-H$r{tcYWpe@xF;TR&2SSwA0Ze~W(Zuu{jR zR;~DIZ6~ikak(1%Dm_lk5ALn&U-Rjj|JQKEw@z2`LCxQ%?KBsbs2b&{q=_`^k6!P+ z@&v_)^}Nxk<$LM*ZAg#rOEf=xm>So%KA$LzIj(Kj_i-(!D0>>T{JRwQcpP*_&GUQc z@u(xp|Hte5qYmBg=9>BH_6kLf3vcN9Y0?w$0xh3zGhS5Ed9DYqUawxH<*(HB=G5zH z<(jXVt=3(m?~BtfRC+=mtMcBb1JiR-Uh1cMK0w_~j?4ADD-bpQPN%rb_PAn{o>}U{ z*g+Est~Vp<{&$UT_wWTu@OiC&r&Gxvd8uo=oJr#m$BnQaXQ`RwxL&uHQ@2->=AAUb zkos{e{Y$hx&BGMmoT7*^dc0VYqU+%X#m8zr3n(thIQWXO0mfgp)Xv|;bg^|adLy6f41m2KyEL`cRDWR z4Oa5zJneKnF62ek+p9W$wnoLz@2LZFzKyzEWQH7{X#Jr3w3=OI$s(N1jG&>7g(p$6b0HY5qX*PVMItPt*1c zQ@rWtm+Nt}DQceim@bz?-#3}_&uZ9ZfZF0*ByF3M%l?xK^bxVv{QTGc&m-k7{ z521FJIMz$)p|B>$G~JFJle_AFg!(Vb8~YUhiTW@m>3$v1af!m99IKtmPN$BmrkyK> zDLy*h-b)i3E?2AW*Ud_eaklP{0X_dAwQ>y9aln1LGNf4Zhnz}JV^qEyMkroh4ky{( z+WsHNV9vMkK}DRe8(?CZ@*j89bB8`Ut{T5k@_AH`eEg)_%Xy>XP5+;&+a;{y@N6Y+ zjH7wqr#GFZtk*75@=;B)vvK&wA`-SE|DE>oT4|DYVJamoX^`ThrgZ)BPxVe?^sEZ^?@)*QpeE+5VP+Dqk~RT|HUp zZ+czvH){KfM=E*8Ol_z7Fp{*MJl($99gRzD;#>6vx?SE^3e0ipVj6$Byk0#H>gkp7 zw2tTWr#qxxOx~g6UY?%En(gv|?x$fLZ-1xj^Kl)2Iu@t`ou>JEJ+Eld>s{u$)-mcA zY>!jdvzhPTbbGm@+T~sCKjEl)zFzl><`b0t={nzBDmd4Flb+YPH6N$>ke+WW)%-(r zIm<`yy9n#?I{JP#mkbvF)Zj!*o4I z@5fkrw#v74jwcj9m6>sSHW7hNA)b2bkxb(O{)hov!b3D=$(wDU!!{=LCURmL* z4(3+{eLlliTv}0T_%avH^A-84{7Xx#gZ`?8^JbJ)R`?g@7nJ$cIqNgN!n%A`kY851 ziUjA>`m(i#8D;s^)&6S3w`6{@E4{R$h*kN5Q)c^v3ksI`3xgTu(dU$0X~oj?{G}Ou zGAEeo%P#N*tNi}V@|@s=Kz?ae=G<~GD$K|UCcAt&{xVXTTpi5JncyR8LYcq1I@upT^MP-p+Bq+P0GH-3PNi$P2m|J);W=RAoiJ0aqtthPW zm-{P%-nm_PR_-gHOyz=<&I_vi1^H$96@`9Zab=aVi_Pj3h+LVSLk-lm24^OVNnL7n zrb}@-!SUt!fy}No)U`GuwV0Fa%gD&k1*EF}udmd0{O>hV$`op)rT!pQXtkewv!t{l z=&PwHy|Tvd3shE9v!-;mTw!HJHA#}M<_9aQqz$vFNYQOmE8B7UYzlwVQgi!^?LO`GSqeA4XPLkpMt3QLyzit|g$ zqWxfoa?LK*%;;>B(#mS_y$P8Wr9nGh`I2;EDnngqkTO}A6Xoj*Goy)%DN`R^RhM5- zTAQ3anZ9#x_XSr5{M2~GmC}2Yr)1Ppr{I1+(_dX!RT`j%N}fmoz*|*WSL!cHUm5gQ zYiG8SP0g(K=GRpFi%7;_QC(Bz_xV|4d43_ehTo{FDOl;Nt_W0-pA;Ka1wMavO+~P@ z+@DcZRawPERemY;K7Va_KABY-ER`_jD=RIi%CA}}6*@s|oToJUxT3tXYRgN#a|_Ee zQoWUBW&SE3)ykrZ71Y2K+^TEJsXP0Y*46m}{;KLqj(owDzFL>crHbMZb@)gYl66&0 zg-_e;tE66UmGNXUeF2^0qO!Sgjg|O#5;sN3w}Sa)Wu)3)T~ZnJaSc>iU6ec}Q;9B6 zk_%ao!mwmW{i%XNs4rOQqs~`rqhaCMOmo8~(WkqK{P?uDb zuI|^&x4tBKa*jVZUvkLS8D!}4cV@k!s#JPhH~oJM-?R4S`f7m%u; zY~@UmI#p3qPJy73+`qc8#9vfX=GP}E1XFnN1q%bm^N5Kmk}fO^bb5p7S4x5SR8eJl zekn~~Y@IYEMJZyxnkmAa`jnyCyQ+`pT{+}kO1d)OukaP+2lJO!<(K=aD+`zVE!`(M zbpc7v)Pgx8C;bD|EcdT0sLZdj%s4rPub-yncxszolM=QWwm;YzqGzyNq)JPd(g5!(tE>zZ zPzYLXdHv)Zk;)>WbQYp9RS)9Igz|EleB>7fOKW+iz@u|zjjnx;|Am#u5nv4z6nJWB zI%h-!dy&;hmokA0yZizqnJ%-1qDP&5&d9Fgc876Lq$ zSvs*xjaPh!P2yfXjIj0OHxf@((5~kDe2E8KT@*FTbQEB?obJ?W;B-}4X?ZEnaCrE# z%$B_&TcqZTkm(IF5U5#J_o2e)E3V_7PE$JSZ$*5EL|-XjS5#70EzA${cp?)KZKi#Us+f!WB zm>yF!Q%hnu{7>~zJ$2Vp+-Xl?O;r`$8cC>x)z*w{#{7fnBFuGTpLm&WUnEe;m^% zsax#hNF-0rmdTp<8F>fI&yFWODYIG+f_m^Wg?YS|LA`V8HYL)qxNFALJIS z49INX=F0IG`>SZB#%v9~Z>HH4-D69WTU5!vagr$((PRRIhv=eDqNT+AqOP|LJ|90Z zppVC=Mw$jnxA2*O+PqUnAt5K zZIu*He=nwIPF=0D@ucqahg9;a^h&yuiTF(C+`>kQ)#Rd6jn&zItEhACVWp_^tc@bO zsY$0YI|&1J!S4)lJ!ipf@Ey+#ltRi~Q?630|+E3BxL073adaa(Wr-!muQ&QV1plD*L z$9fednQ!hTiq4>iD+Tl<4xS9z<}r~7EU$=Y0U>8iy$F$MakUU`q zJ#eb(97E~R?|)S(k*CR4SDBBMtvsRg$+*QNM(W3ckK|@`PCvu8@XF4-x{rvGRd+g) zlf@}BBP;*y%*yJlYIlpVK9Zf)Rc19>hlfax)~7j3>oaDaHfPOJT1;jlSy}~H)pq9U zdFRyJ%+Bf>vxHXXA`yYtbb^(lKB{L-npaswv$6lSQ&0dYsjMk0nn`zA=G~R0_b2m` z!+d{T=Msud59Ps}CQ)U4w`|_nNeqa3h|Tw2+|kW7`^a6OmGF2|O2vi(`xd2J8~qUA z--{-9TWzuSga71yqMM9WFrd8`v;7q`Z7$5LP!Cv2s{{P_sPm5B!qvY%kzsI5pe&iVf$4iS?5}A2*zgi-!MGrpyCDwI&{A;XT z5zA+N4@u?Y8yGg-t}jZ))>j{|M(nS!3R}m|XTV3KKP~Jy@HqAj#ptg)wS|}8^7d*YK!>sU%8pRY73vV z(@f7qEu`&2#&NRjKGxf1X?4p$io4IwOZBc6-gPAwb)SY&9^J2_=#>+kSmdV%Ntrg& z9@-|MA6|I#m-=OgC+}oTo z6wq@cn%7qr9>+sccwcEnQFi_cGe@o|HQbfU#mDL8Q+zY^_^6&5(DpjIo!|>PZ+bg# z?B%Ri-2`=>pEM)Cf`&nR1u5Q|ptp>+!>H?NFP6PUR2tJFa{!N&rmIz?6tbk-O3~VB zRtgWzow*(_Q!}1Y2G*T7>iJG26Y`FN|GTxHoXPy~XR2R~$XYDPIvhy20P(o%zG zt}Cd~d0Iga@ENN|W zqphTK<-xt)e`=NIWFP0Yu(XWtqGaNtVp()mCDR6N+L_AR0<<=&j}^4GEIZw+Y5j*b zPSUPU**G94xWXtT^K*Qxx9-KB?9+FNtX!F3Gxbu+3uTdMKCd$ILpToIw7-`(O{*q~ z3{71H%-!`}SaBS689nS*J+rHT2Zlth0@%?n|rfuAmL+H5Jl_SUdS9 z$1L9GZSXRA1XwxF#I&k%-w_|9D6JEDDUUsGb)!Q*$ifP>tyxk%=#g|z`_cgTDEt4?i zuU^HG@ANVbPt}h9G7d>tx-DHLt3+L0oqP`K|9@uKMD>c0nm1Z{v+8g)0Tt6D&(|i^ zQiP$mP;9c-<)+{`kG2cRGd`Z5&ZkFeODk&R(Hu=oD=MpKR@wPVi9oFAW7@WM{DjCQ<_%%GQ>^p44{TQ~Xc!eS-9s3wqN@S}j*fEb%Ai?KA-msV6X-@l?Wi%6SxcIy9G=Q5p&T9b=~-ugdN z{J-?NRJRz}bzgX?Vb*I^xmm5$hTQ}e7g$^<*#v)*@N;iUZFyZg4EWDCh|>#i0ukvXfC0y|qH)o!IQ z@?fBQ|AN~!tL%=yB4~Ss^)fEUR}1qZj|*(hTP`=K8;$Pe5vQ=qg)1(V*AKENh{>do zR9qZkx}Mf^yU5v8Pd@E6Tx!0%7U3t-HV4`}?xj09wWBd|hTbF#sFP|1z|7g~HW5Ly z;W`Q3TAg>Jky8`?v-J-w=>#t=kjR}T*Gx`CmDCd=>PTH<_VIR&MvGcKYwxDdb{A;0 zw&QNL>ZaD*j$ysEv~8HTSK{f^JgxQ?X7%O z4Vju!P%1UR)uAn~URkX+iYdkXf=Hxh_|CGjn0KbLf|7h%6wR;l%PX={xkY|@WuIQo zqm#7sR7lmy(@1*fv|y#b%L}#zzC!h~K8qI08`rvFNH;y3OJQDV^OaZf8-GBkcY^6n zEP9tTT1-kS`@Y}|J=v)gqqIiJP(SveY&*AO`M5d6p{+KIsaNLtRs62I$tJ8Q$)~jo zwuRpQRW(vjQ(6|JCrkm_dbffeB`N1lp&eZG6oeO5VbO?I5`Z>xaLu*X`i8DPmJ?4M3{tvFl zMXaWm1pHDes$PD{UA{{nkUtb4ts$=~$_chodWC%9ld600H@=8BAD~l3v_(3pye1;_ zj7+a5BU>($*DF~Ea8hMa90ddRxrkQP8$^=gO6LQT|4HApctAq4UvuB8WNmgg?gr#Y z!tr+uBaBt-lGD;F(MFm6nAKKYQWGqyT%ih9$h+3$BJmWKiJb4E!JK=Ww&@#3dalqV zQc;MZJGpLDPG^}|pc8SAq|t6{b>-NUu@h-2qk!TtqvWx!u`b4{lXam2Y6X`$5usjR zc<#9jC&?9&Z%Yeli?v*8`26&!Kc5CM%77h_-n;eD6DMO_NoBcz9BsRWA=<0zVVd58Ag=BGjem&(ldR@ zW5n-2;uX6RIZ$0%n{$psp1@$ucFNnp__nt;yO8txzh~cZ0d|&#; z`ubDizp2D|@EMgC|1KV1ul`lq`Cpdcf9a3B(Wm;GVCu@AlJ7t|&lb@iZK7*qiR-1m zbI!d)hECCEU-{mLI3?fPpg*WZvMkp}u2GgSqsqiOS*!Z&M{@j)^J1F}DIH62p7clD zvP9^7TE9 zxrF)P@=n(II|-}vJ-VDfQJ-gdRUfgD`bc^P|c z6mR^b0`&6h;+9hwhB@y?%>J#|rhSo2MP>sk*c-l*mI z&-6{BWd7Ywm;SrY(Y*OPThYAvcf+H3^LK-y`9{e18$PLzCgAZWCwANLNnj_+hu%=- zn^zWiY^DSU!ER=U2@bSQhf!BYkSE}fU4ex+*p?s1J@3!H+Hhd$rJL*3I z8~X21NAvF8s-C0yFtiuy*$VkS&KK!pr~bWOrjTy~ zdytOnJCV-=JCSbzJ4b+>Vek{=9WQjY zJMu2DA9*j>k9+{^N8SN(2Kn7!=Vjo}2`_ZogM2F3gM2R7gM1y>gM0$mgM0|;6ZuxK zQ~%_g^gJiniM$)^L_QDfL_P#|BJTt{k>3b*BEJvp)IZrEb|!(H$a}y}#MQx{@YF4%*79oU2XPOu00T(AfE7O)3-2iWro)Q=0sLFDtmPUJ&iC-P0u zzR0(L{mAEm{mAbI`;kvT`>|i6{lJ%?{lITT`+?t%_5;5g?FYUD?FYUU?FZfo_UoTy zl2&ko{m2Kve&id$e&n0Me&k!he&hpSKl1y)e&pRS4@5o*%5@Qx*8}B3z7EQT{8lIz z@;jki$nS%4AzugOLOu-TLf!@TmxKKwuoL+vuoL+(*n@ls>_I*i^3^|KpyC768}b{$ z9^|)!J;?8ddPBYq>_mPe*ok}x)En|n@CW4GP_Azw&NPDk$Tx%i$hU(1$ajGK$Tx!h z$R7dwk@tX|17Q5!3U(sD6YNBOAJ~cf5wH{atzake#;cvC-QAzC-QM%C-U3DPUIb6C-Qk<=S5&= z2>KoJ&0s(BtzbX$9biB54zM5jX0RXm1h60Z0NDQu^sn8p{)2oS$o~W58}JVTzY%!- z6E>1dBk-4k{8r%g(yhoh0Y3`lw*$Wz_-5d%f!_^r2Kg3{{~G0izXteL;Qs{tKH%R3 zz76<3;3plx>z|B~@*V;HRFF5ouRehGiUa-#@DAW#1$z>JKMK4P_&)-l1biFl_X7V0 z$mapy0rDllZw2`P@GZdC0UrCbYXV;Xw3Enh2mU(H-weF|DL|3m z34Aihw*dbIly^7q2SC0R_!(g5KHz@^@&?3>g&-dX{Hu^}3-G6bo;K*$$nOUE0?^+I z{CU9d1D=0N&OE}vmtwxaJAv;2ek$-sfd2w`C&WoN@JYaXfe!=!74SQu9*}PX`8+6B z2k@hTKLUI%=r!1FVvkAa|0D7FjpAUQz@K*!x0)8ggnF{>% zAfE^PCBT;euYamc>~zBTtA7Gs_*CE%Azu&hUqU^2fxi;+%>{l6@Fl?C3VZt3XdH@aAv3@n!pf&ja}|@MD4R0RA4}7XaS@@fP_KkUt6J1HdN%UkCg= zsE0P-ZvgounD-t6J{5TVQ=U>T5AYv@ychU6z~=&=0DKAX1;7V@4+38Y{50U3q2A2j zjAcVxf$sqMeZZT)y~*-n;Lm}2I|96u1V+0X_@#w*voXklzRV6TpXoe+u|E;9G$20RDO4cj|pL zYzp#6K>j6=-wyKk0iV#CD5wwp3+`h$f$stGNxc&;P!2myaC=-CMT2H+ckp8)o6 z1^y0@ZvsBf%#=R215X>)B1bduX`p{6@MA!K3-I)lypdx!@U($1a2lZ$Z-Vt*CQ-_c{5QEw+Zi1Hjg;q?*uy?z^6m~BmjRi z$UA|b1M*40n|rc2Zx`?@K~F01Hv#Vkemdy)0B`>0IqUZVuYaPKX(Jc-&xKL{2Z=+X(z{(7zRU`U&gE(FFV{5tjTP z_ypjafu9KZ?gai+kZ%D#736mVKNRF!fp>%b`+zrpBbqM@1HT0Hw*gN-B^^0Bfd4qc z8paXelObPYZ=y)C|IY*caloGh@($pi1^EQvF9CTc@P|P@3HVmvUBC|nJ*mL|2ISqq zfgF8TgUF?*x7n@GZdi06TXBj}wAc;G3bI_W_>)dcwe; z4f(bKp9Fjd@GpS=Bfy^n^2S@Lw%Gqi10M(cxxhPs9|L>>@FT%~C-85Bd=l{g1l|Qa z-p{52{|?BzfjVQuN zJt5#{0KXCVnZP#!KNs|G1^#ZZrwRBiz;6fs8Q`0N&wzY)0>265TY#Sh^1Fe*1>{?S z$91!Pz|RIfVc_*EHFCBM_`iYv4&XCE&k^8py~ubcQKUHjp9%FD2mE`W#{v8t;1htK z3%nEfEZ~!Xp9j1P_}*YoD)93`-VOW$;61>Hpnkl-e+_&t@Pi@WJm9^czXbSyfSv&G z7lC{o@T)*R1pHj!Hv*pxdK!Vx0e&m+4zRxo_=O<99r%5aZ!_?VKz=9i7X#k{{JD_t zZr~S#d@Jy|!0!Y865zwY{~GLU1O6P~JAhvTdX4};2JAH6O%y5i|4TtW4){2bcL0AG z$R_}QIq**4KLk6IfNuqP7x4Fid@Ar)fV>-cAMhUF^MLmPkMB?A0-q1^dBFFCdME+D z0OSL}pAGVLz)y#Ag@7*tJsW}d1K$YzZqTz8_)N&R3HV~rvmJO`_ihG$Dah{xz6AId z;7ftu4SX2vYz6*2;P(OlF6apZzYO>`;Fkm60sP5O4@ZFi6!JCxnkZMZ|1SXfIN(nM z-T^$mhmrvNn_!O<_%h&=fG-E$1$+hYslX?JJ#OGDLEZ!WXTW=be;Mi_7x)u^&jUUH zdP;!*3FHI7pALK-@cNZb(G~)}ACzk&@Kum+Bk;!&1@GZbkhJ1Gee--epz<&b#KHwh!J`8*i>}&(R2KWx(Yk@xk{9B;k*q10$?Eiy- zj{|-H@DAWtfc^yFmx8<#_yF)pz>fyr1$-UoPX&G@@NVFJ&@LX}uL5~5@RLD47x=3| zJ`eb7fG+|5UtoU#_-lc$Lmu>mfWHp-jlhS1Zv=id@LPfZ9P(`fegyE_fnNi9nt?wB zO%&A_Ju9|QI82L48n_W*wr@Lu2>fzJiL z4eZPV{$`Lb0e(Hm2Y`OC{%z3H2>h)ezZLjj0N(`s2~cm_f&V?| zZwCH0(6bZxbdYZW{&tYx4g3U@) z{&&DP1OGMfJAvO0d<*b{pj~zYzX0l|75LwSo_)aY1wIV?4&d8>&x3qBfL{dp9sxcd zTIO9|yhz__d(t z2=GUMH}rlU_W#+y#{vH&=yw4B6v!t4KNNT;@P7e4Nx(l1ybJgu(31-MTOjWS{#oEX zz+VA+yujnW`dr|5fu20z*MOc9;GYBe0PrsWUkCh)z=wb@1N|F;e+}dtf!__hXYChp zo`zoMeLc+ZtZxbSY8!tlZGu|+d>k4_^2a8okjSx-6X@Ugv)uHJv8?E{hmX-Qax`PM zq`g&eB4h5c?Ja_bGVZ~+S@2-SJsCF%?#H+n<3_=;jC(T<2|oH2VRpCnfZ)T7;~3`& zKFGK)W3S)?jQcTm3x1#R35;EW_cHF!*eQ4q;{l8vf_E_<$k-741mk$d9X}H>@?pjf z#$mxb7!P9HDtH^?!Hio3-^q9g<7UBI7@x?vN$@7dCoygmyoT|~j6;G~F+PQHKyVe~ z1jc!SmocWsqw)(bV9Z-c+TDVeFg}g3OK>*h(-}Jj&tZH9V~5~$#%D4%1W#pr7UPbe zxcn)Mos7eRM>8JAxK(f><3z?Sf`>95&bV3dV8$aDHwo^?cqHRS!Lf`-F%Ahn`X%AB z83zO(W}L)0Pw+v;=P>pPKEQZ1W4GY<8K2A8C3r96F^rvp_b@(>u|x1K#$y>9f}dbK zj&aAor2QGY7>5P#V4TdjRq!^(DU4eL-^qA9<7UBI7*Al_BzP0!iHsWsuVFliaY*ng z#*-Nb1XnRmWt=B?8RIF8y@CrE^CQxBx8Nm=&u8osoXz+G#!kU=7*AvD5S-5VLdJ&R zsf?#H?)XvKpRt>9Snz1ZX^dM1Co)cF+#+}=;~9*b1rKIClW~*aevC61HwunrJd1Hi z@X;>_&t@DDe3-F^ah~9Vj58T~1s`BMhp}7m`;6x@b_w3gIE%4U@E*qV7&`>-VmzO* zA@~W#3mA7CmG)=sWgHf~gYiX-TLo`poXxmJ@STiv7&i;v!gwL$Cc&E+FJjy%cn#x= z8HWU~V!W7fKyVe~T*i5VmodJCu~%>bV}6v=?iRd+@uiGig0mT4#@H!%4&%!iI|QdQ zzJjqKcq(Hb5KFJ&AMe3&s0K<#;g4>B%g>=k@~@iNA4!S6F(&e$b*FXJ-CPQiN^mos(< z-o?0ru_5>g#+8gaj!6464loW2-of}v#;t<4F|K0VBKS_m)r^}3Z($r{+$4At;~K_| zg4ZyvWgHT`it!4@0l`&_>lo(=UdDJOW3S)>#;X{+1utQI6=Rp+Y{pkJb_$-u_!`Cz z!Rd^zWo!tZ%J@3Q9p6j)GY&Bh3m(mQHRD#niHz4UZV^0`@mj{sf(J8R$GAywKgR1B zHwunryn%5@@X>>WuV)+(e3=L|}@ePcfg7+}q z%-A7#7vmcl8-kx;d=ul2@1*@1H!=u z#P}DC8wIand>iAC;8l!oXB-e*#ds^@Ji*Ht-@(``xPbAUjNO8lF#aWDm*8y1zhdkZ zJcsdJj2(j08Q;y=5ImLfuNimzQ`(<#6XUSp(Twk5+$uPc@ixXSf`>Bx4dZ6PgBjn; zxJht7#=m9UC^(k!?-+*!A8jXmALD@F!;H5x&J%o)@$VUX1s`C%gRxui`;7m<*d=%` zx=w+OzI@gt0z z1#e;eDB~upBV=PS25nnI8X30#*Z`h3NB#$1Y@`0C5)eB z>=K;K_%Do|g6A-Pim^j*I^(Aq8-k}YeuiRf zbBvn>4`%#4<0irV7{9={QE)8d7a4~HA8jN2661j2!;E(`&J%o)@ym?8f)6m>!`LnO zea5dab_w3g_*KSE!Fw3L#@Hcv7vt9%8-kx;{08HW!_xkYTN#H1?_m5U<5t1j81H4= zBKS_mZ!vBbyoK@GjGF{+V*C!{M!{5KO{haXUj01uXGj3y?C-@-acE(=8 z2N)k@>=yh!<3o&Hg7-51g0WNZ9>!lXb_m|Z_$$VS;3pV=&A6jO+MjU;>??)X~TpRo}`I4pQH z;~2)Rf)g3XGHww(lyMKn&4LFr?#Z}Ga6iVq7&i)zW!#%_Nbu3m2=`$e5PX<%9OFE} z2O0Ne>=k@~aX-dx!S6FZfw4>QUdH_yI|c7yJbwi5<11-@#tz0| z!8;i9BZKx}6wtEE^Fy(^-Hwo^?cqHRS z!Lf`-F%Ahn`YGYF83zO(W}L)0Pw+v;=P>pPKEQZ1W4GY<8K2A8C3r96F^rvp_b@(> zu|x1K#$y>9f}dbKj&a8q(*BHHjKhL=FivLNDtH^?6vi!r?_@llakJnpjQJ5?dz0Wz zjQQ1}_C~>L81okP_K@IJjCrd_dq8j%V}5n0Jx}m5##0!31s5=$%GfP<3FGq_y98%5 zzJRe)@Epd|7&`=~Gro|qA$Tfd-h$TNaY)*qv72#N@My+qj9UdKGEQgQB6uj{8H}3+ z4`w`*ag*SFj58QF3XWwwi*ZQs(Z3U(%{U(R29fEf;u3&5keu8l&jH^li*E^YZx~QUcH1XnSxW1J^=8RM0Vy@CrE zuVU;Lyo51tDQkBL&SrcyW2fLbjIUwr5S-5VTE>Rpsf@2<-0``zKjRSNu;9^*S2J!E zoXB_$;}*d~8LwsBEO;>Eb&Q(?_hY=Caiic^#v2%i1Rp&>_X#&5Rv_cQL+^u_5>g#y2tU_>9Xx_?=-!apSR( zOZ4YK`K0-g9BB&|<=z?-Rd{7e|O$`|>eQ z{ZF3y?=$QFari;c_iuVOUvkW|_Q!Zn{pllWPxaJ)mb}+f|8?6rv<&U3&oD^i2>Nu8 zNQ|c;!>EZ%+jQcHjgCX4_=DgHp8A)v>Ob?;zxVCEBH6Hr^3I5Rk#-?_8pwts&v<1~ za8TPUy0i0ap5~)4+jb|7^7P=xap~o0mp#|`|G@rIT1Ng~wtoZNnUVd!&LI2Wr%}4o zey^vYm-lUYsI~c|HzWh<&J?ibs#{+IYRr(=cuITT(Eh0eAWQ%OAy6JOd(RKqk6e{4P}Mg(TX zy)-M1UDfl_EQkJNKP6|Gl|aeK4*}apl7jfNW)i!3+9hUwO|%|H>ISL&9{x!3J73Py zC5Oq6iW^Cu7X-vUUauqhk5%?-lze|vewQi#W1E)e^*WM&NXcg_`48nR>EB|?ziP_! zdL7BHR`Q8T{y|f|z?8qsln>K-7Rg_v!+QQ%v~^Q@&Zr4^#5Hl)TrJk2U3g zZc?Q&+Bz$&$CLtK*?Wa%5O8}OFw6Qz4&91=bR&+ z`cFM;j|{9mi9CH4UrLW}`(A!5TrBN%`E&e~ws>s(S?jn_x&6+O>nHMk8D0M~U;pgS zJv{Xto@d*pdtzSny!mr5fs~!2mGxK3)b-K&Let*+Y#9A4(b=B0)B3d1w?(8c*q@5A z?L%_B59yIXn}@>W6&O5w36O)tB_AU7WUvLW8H_yj$L2>slN+6skQ9H5|0#*Nvj^?`fDF z=c)fTYqLM@&|orJ*Kfn6l-mcv6FpOAIIF&?U65J-H&4T*9Fl9k@NCYA%bfCj{H-ln zQ~U`vN$XmI6v4l4Tl^_CJe~8rl%cy|hVFtH)CDt~9E#H}PrKqd@|T9W)HXS!@8z2K zL&F*~>tFRWWHRI|)0``)yqRRd%QfGq{sYxh4+EU;k0tPV!_={YP2#-(}Xn&^DSzJsC?5wZ%*5DNl--H|5iscOq7? zhmq!lLtEINrHD26wh!mFY}`pTWpEv}_Z3Xl_+#5-)>Hq{rR`7CjJm6TO11NdnMy7F z22K648b&%^A7*qJKa+U;EF0mV_RDNoID$sNXJaxq2S-qQ4EQBo!$ll?XuQ}}|E?}{ zFy3?i9A_=nPd3%h-kNVRH`6HSnet+=pXdDf&iJ*wX78y#m{tF|r#_36zBF@00(Y6V zI5u}ZjlC}hOUaYs*EbTYuWnVtcSiD;tQbNSSf8HFi>Nx^4UX}gKg(G) ziYFOtu9{?I)fXqlujj`MU^Dl>&D?(VU-PsGs{9vptD&p>&)j*hknS<1HMr!L=Du&+QATYIWs3(l(76tF!XRzO=wtn{JL|xG70hPc(D(za>lRY<@BtEx`cV_kHxRMiNL&uN&;U7 z%jY%t>C4}P^W)D75l<(ABZ&AeI7-FI%!XPD5ns2R_%ZoT!xfIK`tRFHXr4~-CbNEj zO*oUBhRDy`augZtMFHv1`Bv`+TJL$_o$_=r8$cD82YGV4ETzfxRp<_M>! zA(vX}rMABM>;O;wWyIF+YfsZ66q%IBXB;yq3W^BXx39gw7NK6CM4m$t(z~zyue7~H zW~Qb{6N*rO+1I{JizJyM*PsaXqkZk=EE4G!X;-BAp6hJTVl|(oVzPC^sbhE=suQ?+ z-u{R)UrvU6)RrVlzx31}stL<1xKlx6+TyIu*TpHH$gKaF`c?fuDOx3DP5C)~9Y2-H zY8ah$eucAoepbWMgv=@b$f^%#)gK6srg?qaN2ECG{1U3OUGW=uN!qivF2Q(`+m%fB z#Am!f=^e5@!HlhJz4W`e zg&ZVKuDveFp!RB5LG2vtnL<5y0{auyQ~Ww!ZSpjv&@e~i&kW*P;@9#VNq{7vq7fAlltcloVN_UA!HfLA-&fr| zGXYok_s{18-P2WF$GhLFSJjXsMOu#Nb^^yr8^vB<-pA9T(ndte@f)toG;dA~?>rZ* z#lO{1c7SDM3sCGgf3@p<<|$`1pNN|ShYW8S)-W%cjZ(ko)I?rHbyq*T>IW^G-DvOP|-%uUJiT3jB`FKEwa=_ED!IA1<-~M8gjZ2=C8nMF?|SJb+6&!?Teb|M%rNUX`Ny{L zc9;5!wy&m}@PHw`QIq~oBhd|e`7<<7(E_{9YTGglMpWtxc)~w+a-hBGb>6Sk@6YA? zs44MN*vH2>|dZ56KHn(m2AIE+IQq%P2hC6jBl+0aIDN9S9eaz zSx4z#0=z;1&=~4af<6YKkH|Bdh>6s%Svj102^!O={0>s}p!4yuzjV95r34F%`IFJn z9q0(%7NI5GUz8+(!c;3i1Jr7z-l{wCx}BKl#O3eezzw%?1*J*uny@|k!!MZf%}`*Ml>@-aC-Rcrx3O7cDT*GDSEkcB*8 zOY#1eJ)Vy_Rm_6pd5!*#m3xibWLn&K9zMu;7T7OyJOTZ37x(3Nz>#b@aXgtoh+w+) zc!Wd-*$wtagD2<)Kf*-={3g3W_>)xkE%zv!lRS%SR##H2fT>(~OM81YO$6B9JGC;q za<{$HTDQ0RPuqLeZtr}wH%qtI$8B#j#RDeXh2yjCX=ZEvGT%V8;K`oFWee~dBehvy z#9+dBF{2I9t+DZk2kh<%a-}>e<4CR48#Z-Lq6^7+RyvHl9hF4Wr>Vb7wE=@sO*l*Q zZ)C$~AVbJw;m0d`fWCXNqR5AnP`4y971Pq}`Vv}GN1|9tlcaRR7QXNF_fV|A2q$a} z*!)RifBy#6(BB$hI^(a=6<@O}MqWh+_IOI!;UW>NlplAZ3dZxHTRw^9Wp4RoDd+lu z9`DsG9))5V?=UI-9>Uz6?@(6Aci-RS?-UKU7&#Zy?a3b>pouNvt9||smRaS5* z`ctPTCrNbA{L%anmO~MI*~j2v(L%n!?zsRxAEkT#5Esn=H^zGIjBd4*E`b)az3|9V zRB+@)iPOLBpF8-Qjoxi~>4r|J%s$|>G2Q;?^y!r{-K*SAQ*@_+PM~T?mTxIlFn2hs z28pcX%9by+{*xau{uz4i9+6DfjB~Bc1X^ z&|miW|H<}~bo=T#0t|rS_-|ezfXa2pzXdO`@E9$gF#b!XwtVUGb8C4=|Ef8k0TVkGrXb@U=?Sbp#lodXzn?AV&4oTQaJJ z7@US`kv*yrML9JEp%%pB5eB%gCTCsf=Io5*LimiOeiKasrG69b8~A~q(5K(Jq||d? zt!)cpM4>fZW43dFOpSJC!s7$*GYbpas)mCg{s~7Le*N`Gf5gScKg1LY$yW~kiAV?k zIW<6jTs+LiPfxZ#(r!O3uKmxJ3ncD$+wXT^`!q+L_Wyvswvm35?Dn72B&zYR+s}2| z-vTk&YWy^0o%a7={0rFrA`T7kG2+_qsN4S-7Y(0T2ewa@@+a+I%=Yu`_LWTxq~Euy z1U^Bx{Syvsf6z!02_z(}Qya^R z5vzbdt7h6Ab+S7;2NT(|OeXRo`qO~A#O~-s!%Bl!rmg&zi$|0|`^MyPNsjYF+gAzw zjj;P`YxnnxrX56et;~?_ufN;hm-I?7u~z+!{O|oy9{&y@)Y6qx+aq#nfw&>NG``Rx z_0JgH-FjT~^rqY0og{K*EBK}5lJT}-0msFW{}M-l(a^t>gD${XKyY=DQ- zF5^7AYW5hO(`rigc&L+%Jkv(S9*bNxjv?VgK?(WDw_(YFv_#RI>UfSdNd+Jpfgr{d} z2`R$(L4u5F-aeEhluQLWI_G9{bTAyD+3XiLd^aJt5=^I26b|e0r z6ikhLv96_M7+B+OP9&WBeP@h90t5>_h}mC}lC=r%N8UkUTzip;jS0VP_+7^VRT3aF zqFc~qNrb=c@=IAR_6wkzWwQX~`8RK1FjnrR=v?pI(SJ-xBc6 z{VfSic<$m>4S)EJY-(A^`DJ`+?!w}b+D$z=y3v>SQJ}9HSP$&(va+(-^1 zFvyw8%^q`0Gvk{u#`aDTe2jRYthIfsz_sBD%*ZNv;L|yZsr~gJrC=?ESsP+n#=Sjn}B%iM9Af zWA7LIzgDGSbvjO-{m=C${G{3tFxcL0?la6K(wj90o=CkqZ%s>!*c$@3O0D<4$+G5T z#D$X!nXVLSX$kzzj|I~d!~CKu1tVTb*?}d}6#h_MfJ(4X=cVLP@nyjJ8N&L(BZ)vv zm^~*UXDQmGHbN3<{RcsoQ&Wt!60gQY5*NEp<)R9FHF)ZiAXW@(76xC7sQSw5(L_PZ zN1nwYqK%A*hU4RHkaSoayQJZej;Lug9LheC*^*{o(|K*UAWME)56ViM308dYH#{-S z%dlejU$*jLz*XN}w8^cr6q(0!mmBwBP2;h1*X4TdR%`uXKofB794RfYp zn3sGldYsLQ*s)AOF&P8fcEex##ltAI~RQ&*vNxf=15! zV#djQ#)zzpN6tO4-Z7s&FUoxGh0$ytqF!nxO-h(YFapUCR?`K*F@hxz^R>^!GI?AIquPlMv6!sVS?b0gx2z zfx2t}O?74qfoweB@{4E`4yvUQ*7Cv{Do2_HWhleAkOh|C*XWnJ^Ldz5o2+@e@l@*R z_pCwrG$zk17S9vr!R?KFEu4AsF91s32f-7KhI~VsYRDg9W1r|SlDxClD)3_^~fA2H6u#k1RV~-grhZmI1X2Va) z@9lxM1!euSlY-Y8DC@?ez~4ysZ>%Ie-8&yG7~$n*xcJN(!;Iwoq)c!h7Nm&H2mh`yVVYvpSFJaVg* z`Oq`M=>48W&K)WqEjrn$h~;>(5IP8FM_J+48aCRb2D2iCmZn$nPuD|DI$=d~@4@UD zwVL9Ei6p;(4$%F*PfPcHj6ypW-%}_uP+jLK=k`~_g2A2n$ZvRRmDTV;UZbai8~0%! z=KI6BwLkF%*r~#!Wn?>l-fm9?&jK(S2H89}Nb?->!j{^Q~ zX^h;Aa@7c6x~AG5xVOMs`LV>>*Th;ajASJJ6V{i-DMXEkaw;b)bH`Hxwc7wZ*1HPS z;kNj=Zn5eZx5X*37E{n-^hHkp z%rs+}cj~CXc<+SChH3EEgvnC^6UHIBB}sz@)_>6|U(DjR26cw$C5L8(V6ULkvocpa zDR8=q;DU5Ii||C!4Q`i{TQJR#fY^T5HKI<$>riUZj~)E}mHAhpMV*b>YW~N?<}bZL z92kl7ug}k##*oy1fx)QJqsLASO!*@ibQiNK0R|(;saEE)CjR7WFFhSN|Nl1ks!o&Upaj^dkwu-8>IbId-;qg$=ID(2fmyge4yv{$y&&{k3*?{|4FfK1>Ie2pZW!1{ zel-ltx39JYwWVdlKrKnliBs`rY0~LA$wot{jCJvcTN)tzs}C*UC1Air@Rajp4#TP# zLEUB!L?Wl$HVhnz=Xg>w#xO(kc?*of-m#5>;8cj)5q98B1dz|%uBsQ4(sJ)k2WTiW z>r_~X8ZvX2I$0tI{j+_DT>JCBhI>0qRBPsI3xRtp_Y#1E^-dFKPtwgUT0#=orDo!h z>J5xbPyXQ&(33nK1<9Mha7|#GVU?!ktOH+6#?zK!FVboaXznk6AV8pY zxrafc64F!Lj2<59!0W5{5YrtwAOCN1?XAskt3_4|2fIdw>JV zhMs7W1acYht?f5LUY)A@FNu5yo=l8K0gRm=1sDlGvu)&206rm}r{CA{hLXt32fQDT zkFrPHh7h7t$#}~~ZEVv0MS;s;bL4iHdLCv5Y%}d|Nq-Ll7=%&e+ynZHB}!--*p5E^ z)?ErP^4pP4>#nr|{|Ci7(i8KW^?q}$(S6A#7Ij-I;n9#vHfozwvAZb6NZt)fs$n7Q z!ET=zwJmtI&r|*x9_4%+z1bO`VJf_XvPP`+kSw~Y8-ttnjBtoPtC80L$+Q@8Q^OKB3C}Ct=a1>F4S0^K=O#qJ8rBPhwm&=)+m*hV(NW^)vq8jl zY3gvif`{B^w4Cp$Unn#krsKj$WNEd`MmtV0f#N2*o|O+W(Kq$;119>Yety72EA;aN zCVIVoe!xU8)z3L#q9XU;6Fm;HNYAnh>L<)HgAG6edh9S)Immx|10z`&(Q~4-#8dO*i?XBBi5h{7>D%#J>{3cjKpfy zR6|Q!p9w}0lE9J#fo&{zsA#CAMXz4-@&WqYcKb*b=Dhi=XjK#H7jbpUhl%TDC||dI zsFULNyt4WtEKVUBGqhWy^JFL%rON*e<8wtjygAhTIC_Q+ztFeIp7P5xA^A{oq5^a|n}EaZ3?TEjZ4ulrpN!cqJV zu{~n|FzvaslJaS(L!!oBEXf`m>Hctr4UOVcq8*kkQ| zRxoL3xG23~8P|gfJwHOyYSlBJH6$X`~-`+Nsy7B`Ywf9S#og$Mk zF<0M#9Eer5{WXCfWrh(RhK*zoYVm>F@U6|5C!oiQHV}R0yc+z9yn?nwp8`s-$%d2p z!yRUVWMJpd$I2XBAYQ5lwM8fAy(GmWbnygT{2GhBEcWW+JY76k7tdz#i7ZY=ai!SL zy*-Nur6UfUhU<~Iwu{A&83z`<-50T{$7;y=66dAvX8uN;eWnd%#J9W0IX~1H^Pg{N z0mKo~6Q77}ATi8_t61%u)l;CwXam;^+d%u4p>e#~Qb|RIR}X{h6zl;*x|Az{-v-`- z={i-FJ%{PTS~26Bb>yBkuoTA4jE!_9-j4aJ_DoYaQ^uRIe?*pAF-?^YagWY2^2@&s zrodB7wns|+V8GlC<)SI8f?F>95sl%W%}US0~oJ zz;>I|-KY%TAFF$D>+7--aI#RvvBhQ8TueaAzXs1MTh6tCq~IxVqr@Jfv$7xLig>-1 zZ_rmcGqUwnmtTNKSlB4aVx~Fhbb|Zo1(Iy*DER0{j{zG``#g4#vT1Dt=hwg*A z8vO>9dP4OaB^>71ep^q4Y>IPMgkAnbQbHLk!%=$=I|`v~?h#kK`-7r7@)~C@(SF$9 zFtvt3edxp4^Yc`2%bWn{MmNaVA9M?}WwvqA)=uImg0_Y9nG+Ue*OMi!%$}8kw)c4f z+Mb1R<*;4?ShpPF4r@AG z9h;icFs#TJiWYlpZj`4dhG$dBlVDm>$wV>yKqU-+l0RMeA&>uH@WZYtPT|Sl*uEx= zbHplm4aNZ2E0df>UtHvzb9MMj3Zq}R_`>`W{BzfKfK(df1sXl&*^m(+QFyxf*k9p8 z9EiJ!w+Z49-Dc2brTl1Xa4Y2?>{r>@QYq>pdEzjm+r+*Brf4{6O^#e*w7usJP9hd< z*Z%sfeCkMS_TfB-G)Wb)P#BQ6*j4LjyB$MfRDe$R$|uqzt8Ihlmu~43E;6YA}YqdeEO9lz8HiW{xj1*xd zqM8qpq$kD{z$Xl5+h$0i>BxX}noaNA1CRzwB_#(|>87fd^Jp7=gUg+wrSsV2{w!tGHgcLQgane9J-V9$^u)3>cW~Oy)vfCQ@er%r3tJn2m>GRL?&R zZu|j4miQ2PHusy|7*SkYvOHVifzE2lWh^5I1i%sw$g91KpR|@8-wQ;yvHV&yLt>N)K;3o1?l|CL1kHK_sG(4K1&YXGL>wg#* z;4%4jfrp1+!F<1tgPSW$zXWmGvh?z&*kqIHBypz%ctD1h{mQSbGkNAL^}ALT`&b`7CLyvHBR zx>xlbX59wAXu$Fhw>5Gjw`*g!jj>zGTmGSLv)srnshod!`W!B4_@@q|O119gZ9S@f)Nf$%*T|lj$yvQ zZVgkMcT};XCA~zC+}n(@h7g&Je;C+4eaDWxtP&0lI*XYQC;I z6_AV`KbS zPxOl3h@L8TgT(R8rUJxWlmWH}cl`(4T9`Kp@0Sn9`vuS{8Oumhe)AWmYtO|j7;RYX zDW8FIyzvU2z#@4aw{Jjd;PyGDt)=O;D9G}pf~6_=-)y2nBJk8507-QtZq+qlYM#C` zmCKdb-e0G@u)utE6BAN@L^WbNTAm&8i_`F zq1hAAth9Bzye@48Pqy0$X6iQTQHD0i@@OL^G?bq3&Dfqt%c&VpkpwQFeH0MVFs-kd3!89ZO(Yw|Xipd*@;REf?K&C9 zX8_a_zmUdq&-{^>0lZX=0m{`*Oj+fM#0Hb>QpZDEQg~kjroes$t~X_yjiKGi`F-oB z9iLzR6AwK2NaU*Ya zAa;WIEI~Ur%!~l#?H~)#W;D%=gud91yQ1>#fk)+wQ5sI6FMh?-$UK2!A<5Q4^}0$x zLT)3BONw82KH>j)2=G7F60xb_PxPSNj70Bq-ihuQSE*TxtQ46Gwsp=|JRsj!yqz4+ z;)R4#z2vMXt0};Wxe1{E^W@T}KwAL&)5NZ}bEb);6ThsjsKR)6I+s?HmHEJ}qSw#H zY>0Xf?TOQf|JKG%D(c(H{U%5b(#QFzEXGd4`qm%%vy2b)OqgGix(gyOacbB%a*$X- z!vfR`=dOiNuqSuFNNkzhX=0+pPj19QHk-L@u1xM9oFgXJ8$eJ)Vfq{}xvr>hPwvr& zQI5%tCB$gS(UZ%czl7wfmln6GpYM}8C6PuzDu4dWtoZd={5~$S1O=_~q2r8Uxb4VF zWCmgnv`o1MQAr9>SIbo5-TH$;W7&h~Kb(713>x!95eYOpiZKxnjlqwhx|R7tnLxu& zpa2@#=t`X@RM0ANay;tW(75X%nW?&*lW&uPD#X!ZX=o;VJ)-h8{v~e!T(*Gf?a|y{PH8v{7e!lnk^xxe~H$C(-xVf~TyZ zijC*TN(pNxH&&%%c%gmio(mf*HhAtl7Vc%-+6yd>^zd~cCY&)=l(T`Rd@Yt^%ys_o z72T43dq0Q{@teDS=KEM_N%eKZR`z{da~aa6@W&+o=u+&|!8v?f5DwL+`$CcAq2_*n zo4(iotKE-9)^&3hAvx7o`(3JU z@5bnT^dE;}nB`Le6*z2a%Kb1f%=!Y@8Xw)oe9FFs=I&b6si@*7bJbGJ3=w`qX(?QY zrHIfh11YA|i9FeA$Ox`3RFD|UH+U*8!PPhVW5WuqMFpdFM~aa*90&B7p8)u;;*npk zD~r{IQ@n=4xzEC}gI%*`42z7#%VLKap;cJemsRPa?l))e_UFAoj3MpMQ@)EmgzD0V z=Kbg?5AkW<4o~?LxM7+|q4~3s*UmHVc-G>&qpUm7{=|@KP>Ct1yo8P2M&8@O`(c4{ zj>;q#TKCGR!-J9RU@whdl4gW&*FM0#tY{AlTpC3k!(QdyI!8xzpk!tlyT&~b5rxc45%dpHYWI+j9k!HP&t`KrKT z+@=IxEi`BKVcP?sJfcrPPnIngkIPfB6=T)zS8~)GS6P%iyM1H|hUMB-*i|9#%WOd3-G%fk+M{~)_f+OAs|~x((o+C zugK2dTUz+IrBQxI8(~%CHY*O${DiKe`MZkz!Ljw-Dj?b(943%K5=G#G(GQMO-5pg)CBfuu&X-i`q9zTVS zjJ|HeAF>N8dLSXliuMT`!P;X2Nvb1Q6z4VeBbnja3&M<1N*qqgWSez}M7)AYuN*I( zFx9HT*q#aF!aEIxj z6*QKDWBY*CC@xip5M|5n;Y)TqZt!CVbeOGV{&6oVV45eh9V(dw`$!_gOK8tnshdif zpw|oGJ$l7D`e3#>@H`GRPuE|I`mO8!kv>+%v}AyYnV8{4coE^OW?Xcx^=)jBxz?)# zm-DclaOQT2{A%#`P_x=B0?QSaA-782F_!yqUO`L~%e@Z)K*H0#u(;#}-fKUyfX6OK$WR18D7 zCG_~GCfl!#qgr`X;?KyB#c7n67LyQZfbB!QINUptXmzFlKDA>|^Po=HYoopa*)tG( zmN_s3gA2R0=cy2{VD1`rp;h8))nlHH#!f;CX|LOfw9I6DoGKQY-UZUTcD^IG z%pGbcy72SJMA-!Jme8(j0=Ssa64SR1`!#nVNnwu2p3LTe@WxyWotpsuE-;hmR!@P) zF7*r^sZpdE`+elE>L&W53BUO*-+S#&01apS)kXi45U<9f5~S3JJVymN|8cN`cER8` z(}?CNp|zMcw5-H!u#4AI{w5w6;aSOQ2`zdqRbg`jroLH%?+vO3lAt~%3r|wA3wTU+ zMKj;9?r+2eXUnD`>eL>$kc0{|Mkdor{=kXW>4wD}GKeY}W^cp13DykFFnKZgQEGKp zf9+Do3Ecdm3fs$;XZt8)Bip49f}hBzH^h2Si=?G6rHHq)F&>eicS z#D8#PzYdUpL!Dz~4xKJ2`3@I?wjOxU^3VvcScGm6U{?ibI&xtPFw+1e#Pz96v=Pot z{@U$xF{se)a|pm4z1`I~K$q@#Iy=@oHxxLCa_?2aJ~U3W5j!_@|FI0Tx!?4K#5r(Z zZh3ZBJm=aBVqyHw7?0Y<(pHxvo8iSGAQ?SJ;vSOMSVgIYV3~RY>;nwn$ zN>S4x+>4NmfJ3`vB#~uUIz5r2D-T^ z6>{V&!Fq=lVj!HGu8T8SJekD}C{{;d0IpKY1qY+%5!>;CX52Qyg~GTC;`Ee8Rz2nj zDmnEAp^~+@kV+PbTDN_52d@vas>W+Ng%9w$iS=wt0{ULg*PHuIFJj_=UDgTMdVq!OYi>iY;oN@`JsRkD3dIZ1|3;aU5Gc49qz9n?dx`+Pc&Y|^_ju$u zKtF|5HP9cHDK@FmtVf`$<1n^A^zZxT!wI!!#vh;nu;3xjh1(B~dIwY1cDjxs4Vo&* zkhNkt+dO``SbbYYkGCNvkE@c<7UX9k&PEspMM$1ofF{9kB2}9TlIt`IPX@Z|AZsuc zi@U)!f+4)_a)hU19bcWhhNIS8VaKqO?9`XQJC1{Z&nnmvj_dFa@bH@WiDlKYVCJbn z0tn)i{E>|1cXz!LK0u!$q##tx0efo8e%%({X{6_iWj{o-^ddk#ayjY&?*&%d(7x$` zHKBcn2dYE+QUX=<3_$#cgM6bex$@fP_=p#;sX1uCrH&`c(M>paRxDXUCu{2HAXY&umP`{qludH8q24*FA~9Y-9S|xeg+MrW^XI$_ z_y!JbRUYCj>TZy0CAf75&hQz|q$&7j?ni-&HpO=HdMX|S7!C7R9E*`wJsn0ku? zhxzU|UnjG3E{B2Uz^0pAGU4g_V^s-qyRW)(wXLVFd{x1dCxCAf0E=q$2#?4<)2GBV znf+>Po9PBJl9hSpBmwY8xKQT32pU!m0?^ewne#=P-F~2vXX*DbYmKA3Q0T`eH}GBx zc^`v)m-VzP6ncz{wv$7DT+Ti)n@Wr#K7 zsSwO1o_X)sGq%)}OiJ3r5+ITN>!(dbbR=8vUoXTWB9eD*Ya>iLn_-leO6bO<$ba_Z zQ6mwd5Tu z^W^JM*DTCQmn4ML12%0LSNx#c*mwR6a@j!T27^sR(_rb$xGFM!KUp_4OCaVy6 zf;RJNJVH1TE4cKI?x0k|xum^70)62{_~D9sX$^KgzdpqaDEYHT!o1~IDux;68`)*( z8oB$;xL{N52=l&d$`d=T>_;L}zG2>+Z5W~NdKL0uQjBjBDqvpIFEp|tC8Q(SsV^DYKzRba0?fzh;_kveS^PVet zg~?CSRBsqK5=Ir{pZW_5Fm%y#do>CO!|d8eQ=tza9j!Oy%mC1RAEEo;nb2H|@TQ}= zRxbrLwnR5Fem&9%FJ~Di)m|;0V>dNlm4GsA8FoeXNOd#N017+xQw~~$*kDR7ZQnPE z#c(qkb2rPkuOR$0ufJA^_K5MCXul#&ggbaXLo4Cj=1+JTz)RH&;C%HU$T+UgG~H)s zh#I@kjY69uI47b{ZQtu&9h2lDFYuRze~=@gW_c$2wTFY)>;(;wCtSAxNH{#T(J=dG<2>B1 zpuHZbjV5l+?j@hP;AfZV@0~4V2N7)^K33@GJzOaCo&ioA|B#6uns!wS8kco`^)#>_*K7SO>9uK-+v|Od zs_9<4q1WhqkYh86I-Gm)$Gi;SrRrvqqtG8jh8~tfV7&#yA~K&Pfr7xMh$Cqem>wUF zZiyLp;7jC@9~bwe5}E@l2l~uDpSyK^te?5IA@xb?->vHlOUJ#_y8Qq5ckA};rFK!X z%=6a2A%5(9-9PKE^?Ysw=Qqp{{K3j*6+9ejWBi2 zHK1L4KkIr()7azyFO(mNa)!0-I_i1R#n>I!2q_#n9O^jsMrGtzkX`)mXsh2Z1QW|2 zZuQ%0^?O$0Z^s^lP;^4S5Fk?^nXuw*N?Cx7&G_PoS&a7bvHWJI;0=US!aHVhK7@yzS1pd!IPk~x zuF|P&l=FwD9^wy=PaYCZIg0_Vc`s>!=PCb)H{nS~9byQDLa%kgb`HJ~-~y9$2^U4eV{@)M#o{vQ4X>GVq$;L{xubny+?88^1Zd ztIs-gNO)4ueRyVI>{&*tUP#2^jhvK%897h#C7Z~xpZw_JgPs0xpAYTV|AMKgo}**iV<8x)Nhdpa-81pLa`3z-8bOhaet@PK(}S`%?vP31Q>_ zsp7|xF3M0LQX)@a6r-Vo5XMCbgmEF?=ug5(nXXq-i?JXKQ53$Ys}a5&%l9*}ayhVX zxHMU9Kn-)Cu@u26IkZ%dpYc(D_}X;P55MYVo|<4kVVwvG$@XqJG|O-G{;1ZXC2SeT zcX|NAWb;8J@^#-PH3SAGml3g8 zq#>OS0|7=DmITyYrRWGx{np>2&uIQB@GQPGX?}6KYWRl0I>qi zn1C%-|C(xN9R}LMu6vPCi2MGHmAZcdP9b*vqfpD3rDFggkAI&zU>l35wPWpBsc$FL zuh2Qzo(oa^Rl6j%z&N%pX^e))v}72{50*6*g6j(7=teQz0N^^63^KM8 z-@l@Toe(_CxRFmXgC%0O9diXPhyZ*CWu*?IF=khG7l5||RrWIE-yx%DO?4JW6xLMy zelt5BKlht7j5Chb%CqUz+fn$*a3FC)8wlA`ehu!`#!1p-1FBHI)TyyRH+58Bt2ABB z2NzJ@-;Jt_`LQK8nB%Dk^6}g?>`;47v~!SvLjMb{JH-s_>o8Z)Z<&H-!v%*1Ao(hrLQ^F= z5@2dI>FY?2mDT_TuG__(S478GYIuMx0Jbbik1P?94SC^N3}jA)#MZy9N(YIY+ zBVGMNXdt&cg88I|$lT!f)~ew|fjYl|(uaGzBaUlJ7fy?=R!@NfD0wY@0~}I5cl=to zbGS{4{5&ykJ)&O3YjR}!cwL{vtWFVn{_22%E~Mgu*PCWkxyMgW=#!m)z6YqrmiwR2 zGxqL8=3rZ++uMXK2iad@FF0=Dm|!YLxmq2Dp}G2khQIn6BSJ#K2n7e^Espy8jch3D&-*ptFM>mw_c6Z8TQ6VbRnKGAek9+SIP=0cwOtoyP#e zD&2G-T;O+Pu^b?{6DIiHwA+w-eyN}JEhBv>%K80hzqxv-mCv7n3?G`9 z`5k`Z1GD&Ewpb2GndJAQZ}3hlB1z~^P4oNFo3N*$->|NTm;#l-Bcf;7_I%#RuKd_( zgX%pQQ_I^F{5AsiaqUBXojUrj7(IXySh-FVT7!Ctsw8xMJPPEq-!XXq`T29tUx$tn z0!*V6NH~A+G*_+36c&g8)I|jOzvTG|JIpWq8iKTcQB2na%@ZYths?e;`qyQXHn{~4APL&@$uTVY^kDU&N9azC|gdQofLeIgmj6KS3Bb|p4L*erO)C|ZryqU z>|>njf{zEmA^YwqV?w>i9#k;jmbHaSyvDvjQr0D4?hmkk`E79@opl)Nby|RkE7H)5 zoC{LpxFW|2&E+TA_SHewfm&NsHIBLQ_JE_m+jg;E?kg)f&+z8I(sr{w#?FIJS}X|zjd zHuldPW3_n>n{Af@FwdoUD(HtjmlYh2C}DdnBLzm|pobLkyRH0uCO_bOilXC?HL;3s z1LWZjU8pm|xjV6%42!=B%eYl{(J(w6w6FPA_W8U6`B4N_wYohBs%6+Pv>rsZE%ZLk zfS9T5sYv0(+$E$~JW9L&csI*xW3SDYVYql7?Xt~uJU?52EzglF6?{^ibqzp?Jo94$ zH-z>b7Q6=|p5Dlz=JwSiF2<$mMvizEpbmNIDaXi>)&=84n#WBRZ&Y*?pxQU3YW~ql zNlS;Vrg=*H1{NfDljGASU<}k%dmuR?r?8E1hqk(}ci(2013tl}s+4_s&=-o;`!bZ5 zbTKbgV_Cc#2vq%m>A3SC#6S7N{mY^1seoH@pc~C>u9wA`*){kHGkZ5K5VX8iUFs;%2xP{4Mb_*LDzk=^Y?LA)6>$jOsLoIug*asjfrZP! zWCh_l$z-XaTs{0wy$(vkYXwlwS)f8L_6KiOS6)SKJj_!88y0&#i?B|OzVMkQH-48O zSAw3HOc7H`eFpT#`@h6bRT2zTthlD*VpZo;5}EPFYI$}VN?=%DEqW5sN$|u`l1zTh z3S_oUz-)44m0H(ynGkDRbJwudlGSQ7tz?{+iuGP6XNo5nTh-&yUjjmy)R@WHTNNy` zR>+9LQ`6KL;6lTCRGwDwXwd^(r#E??rcTH6 z2#k?9drrUsN>Pss%vKOOhJ-we^VNFP6`eSpPyY~3IHDS*8cw?)iZz^i4aTRXdFBlD zLp+>{HJsYWoD#W&A77L>xHvfSfVvx9I9`m= zCBo5D4yvG>!Y+h=;Lh<&w4pyN`iu=<{X1Qb{*K9qIMjN|2eTpDL&%aiCiHh}BCGu;B)ma42rt=Fi$zb0j2Dz=s|dg-AKsHs~NyqLt`17 zXP?)dl6@J02<4it77OELWE;zhr(8dF{FIqqdESseOqYYrOdgIWS+u98Ok*WG6k>SoN&%YKMpt9m*eSt) zH!ubL8od~cnKX8Epes^;jlRaRZarX^j~z7~zw%MjJ8kULDboV@Wf*X##XOL}N;;L9 zV?FDPq5;s7P<@XL64iH}p@S92GB5#(UI>{HS+JiZ9A|*g_VAg_uKD2zRzNCEO@fIL z8H-o={zU+NWCVYNJG@>`kmvSY#mj*GxKw>YB{+*RCEVdYU3{D_ZelUNtfa2c#X(*C zORc=UYzd0D@a+M*_%dC*MHfHBVv0<45{lJ?ap=LFwiDDCIEG`C$jDMQ0zF$s_~=|J zca2v2x7T(R{RKCDN?&Xm<0g_KSmX2P;ZC~_Ykp%dpwaLv*0R#0M{2)R+8@y*#D32Q+6f9ErSA3Pq3n_e;|++aL#Wgfa5 zPz@Cs*hCKIK(5gU8I8K+3N$98$1^NgVXW%h_-8VHuR4v-Fmb61n6PHL%D_{@+$3MN zK)j?LV@!@*26?9M{J2xi#HYEsbtj(!w(c{#lRD>_+rjI2LL%J)o+Od3=YOB!KbeAl zpHNk|qhj=7$N!|hABrubOp95MkFTDnRub(8=EWfWC~zc$?BUcpR)N{*DcmI1S5D2c zLji8a#q&XzdyE%=SF9yvK81?re<1r-a+?Bu7caSP0p`u@uQVNd<*4hxZOEOj3!ZB5 zyB$_>y070cGtb2`9cTyfM{ocGSRHcbf0%Aa|I^1TeUJPt?Mb<$S?ucj+Si4pHZRbqTt?+v=YUJ&lc{=`^HZalO49>=EWXqV$#&1R)eEISo z$?l5g@qKTA?PW?P3(>N?ozqvK$G}qh$9*NDH_=<*d9c2^D;Z%U6qtOvaXjc}Gh%s6 zkA7`9=qgm6&G1BWWELpUj^4c^_O1>@o7>clSX_o={^>1ZT{hk9-G(PRZSk`>A4RK- zcIXQ#V`71*jP~bimBDzc8ec>Y+A++x5>97T~IA!ZM#65{@v#_6VP&sD^jiJ zB@x8k^5h+4I0E&*BZ;8WA4`Var5_z_5ry2aSiF z!Y+k+QG-l-siR@jy;!)Ie&cj#)dRv}%SHu8kLU6SG;UheSO&wE zO%G0`4))3##~%d3<|gPRNeO+KlHbbo!&3L@W)1wB5e5ad(GL{0)T%at&g^522 z`!#Lf!FK$ErC<$`t3UiKnZlp9EpUpB*XdsHPhcb`aJj8uuO^x1HDfNpCc}D@Jca#0 z>A0x-h@^%JKH{I>d|H|{pYFv<4HYC}{@IymPKVK@5CRKGx#8T;m+>;-0)!K)dN9w+ z3&N&;#8JX_7)&oS!s%&7Q*ngitTy7zSaD&@RXoqP_Lnw1B!GFYhIJkUq%1~w%DMSH ze16Mvx{*Ae2%*-Y;a4~fe>l62Posvz&jmK5Jmu7NG(*xTX%A(F@vt<)s{oxgOIiOc zM5LltX@K-TH0Th1+p-*rWvqsZA<-Y+hHfcds z2f7|)ox3gRcJ3NBWphm-;|mP%h8TbQ22D6&w-%zAVYfqYqXvObxgeq@4~@fEDlvw$ zjL<(4G=*z>f;gk)aSP@{hhcW%%*PPEabOJd05C4U(1CHgODLoem}`QbP?u4nyk#0a|FhV`e}Js3S?;QMHfyj6TIf0C3uxa&yF?P5sgNlS7V7RoPQ}~ zl>7Rdob3Q!s;;1<_=$K&{<1EwQ2#^CHo-3-8iNIjQiLhU9Q z$;9km#phmPMMqO%dRtdz1bc*j1slcT>rLVlI5IbDEIkfsPe&MGMLZX*Xj!^|5VpcZ zJlyAfC}x&CzT>=(OAkDo9BUCh{QZ&w2)Wl_^*nkEjPP>Q!wXnImy7l=oiX7{B>;LLQW-;&F6`Q&KQ48EW() z!b|;%Ab`~uq~<9<75(8eE}rs}*l~=J6{r$KmIsHxAu`R#onU5bMt&MB9b@EExA2!N zIJUnUw+lfY}^A0pKSw zQjt-+@b@$!=pcErTX)W@9q+i!l;e3{($7 zSw>1Rj_5+6uY+t$b|gh$1}%AbDX_HFMKbx%imL_FFFOuLEmbEd}gmFdJt9<}y+@y}vlX_dw)kLO$@Kc!-O@o_3 z#I5l0JekSLY6jjk-1ueoxT@uvf97SeP#V0Rmd2!oEF-R8`MH zJd=}#0V0UUs|P_~(7B`ICNZ2ehoN6#kUZ7cA<`LF&EMX{TajR|P~jvJ*JmO+G6$R` zliA7(CbJl`)_yN)r>IkO3nteK^F5NlwU!=nD=~|TGnz=3~Q4`xX8D=Dp737C|GGb zI;viT|I~QQ$$C8>FNw2(jGH?3!yrO|no~`{YZ353i`oV3#KABfQ=wkXLS4YHGdLaf z3B%hy5g0O2W+EMhL>N+@fgpbFBQSg@S2O4|09&oUfKA28hIhf9kPSsIb8!0jTP+*f z0C6%FWeV;bC4YFV>)lWi(Ga+`ttf!pJ6=H}I2!O(aO<6zt$H6bL$RWE3+G<1i`%mJ zb{4V`+1szg;nf6&=mt&flf;`|$=X`zP)8E2M=cwI0w) zu+I^TIu39Wv4E8#efDv~pp3Heli>FABTO^18U}R*8UY_19XO~f4y*1ZKN|)ayfzFP zAwSJQ2!agCN0kw%GE$y33@WwD#-nVi5uP_6zZ>L#U144&ulU2qI2P#3B3{Dtmh#dt z?>Suf*B}pghnj2krIDBLJbDtSS%Y8v!|f)0$J^%Et%}|5j@|By-BQr;53fRW*6o0f~9=S$WD6Q3ZXt)fwb{_`H z?OTeM%B#VaXWJTL3I*jbl&VY-UcyPo3n#rW9+gGVg1aD=IaJ5$8c)Wt(-Gv*teMny z*79bwMCT$^jgtqj*YH7j`K!37ZQvBNQ>h=7@lm5Znm*D9&l;w-i58p=TX~jO-3CEU zIW-xAku-?gqtPVN9wUf^A7p))T_i|WqM6y7KLt|p`P^VvEaYK79G}9uXs>gq%uSvO z=5IrM@qIm8m~_4HqWSx>4tORRUSjfsn-F-)sTqgZQ!l*&InErE0@bDrLM*gzA|ss0 zovg!q*p`rtnH;i=oB7n&n2vp>U^V(nQscmNkc$Q88YGlrLS{qNWWI$gh9MAA6*YzC z*TE~)LI4P7{*2ZKzTP0Ly0ehBD=@WM^%ASTNu;T2BL;w|f$_g zW08n+GM1vq%B(*_MCP@9L7GNmWP)(pWvO&3(c?_;D2zAu62 zt^5_eo>+iAce3RUV21yNMW?SBkclG+m=Vx81ArpF7IO3wFDsrI_uWiDI{1e)nUtrh^Hf5J{RN9q>blT>%v#0){gC zVTSph#Xs`?Jlx9yvD%?Io=NP3h3l>mt4f>DSVvCtRD2`dY3oX&f~1-g3!#$c(+=Hs z9uNEj_Vo_*BEshZ(sC85Sp6jQg~9m4qtjKx`50kE4fc)uvHdgMQ$CTfz)JQ>sOx6x z!{qbKJCr5x$35j|^RA+XC-+szF^mX|G5w26N1V)tcqd3(&MhK{GDn^+RF>S6RJKcf zO8ZSbvrg>pppmy@h1(c7FCpJx4I#~_#`>46j7j8eWnc=&EFZ${YgCUzPO*2)SgdiC zrj0YFaz(!(KYjGH2~+FykC{gMOH5eFH{-x%!K>4OL-y+-ztls9d?81UA)g{chV;;x z#0~r@V`6a79t3tE!1>1cOv2r?m)Tk5V{j`rAsjOwBL(atb@&aVA>%Qi<|3k6XV?yx z+a}c!O$)t+JB-3UckuKn&+;|VPG5=Aep3>Fh$g>==}(4+Mm^*mf2ua(7$X172CM-wlP*b( z!Eo_uj>9qOzoSEVQyn;eAUk>+>0fi#Ry^C>k2Ql|RHx%b)n2CmrDVkd0_qNdqNuqe z3y7D2X%PUiMcpg-5babdytPZ!z=#5TU^^58JbP60xzcgRoNpOQX$zdZC#@;5G_?Pv zJ(>rkg`H#+Nc1&oTt1Ni`Myg%j9Z^IDLbtM+YI^j4Z+LTs*TOiL(pkrzFZ7Hgv9@h zpN9tg7yK|S3g*%xTx1e1egx=uL2~>>{H%d}0sQ14h0y*SGuE4hGD=6_JbCQ|?h-f9 z#N!ycx}PJ%^8hquWGaYn#z|yN8_zldf5fKw9p%A(pe&M0bZsZN!X2&`rpxX9gz(T@!7rp!3Tw>Z7=P##1P zJO`-W2E35OaWaEzapLe>4L>$T_!V3kTjz*=C~_Hd=nD*B&6D;g0tRAr+IHx76iec`F zdVoJMbOt1)AtZFT5$eA>DflhW*jYo60U&L&dn#@MrMW>MelOTCzYq**%lb259P@5q z7-b|l8|Jg2WlqXp@~#uv8xTtSH%A=bt1qj zJRijL*=BpZDNVG&O-_xR>Km9Ar*mFFr?gt3DMeF2A|Y4ZJ5DzU{g6_hf9OQLxQDVV zz%2=D^ru4pi)oNxMxR6lW@XOF7A@!PqOFB}2q17QWpD^M7984EhiS{OCgGWYBd0~Z zDgq0p+4M9u9H^HyTm9+%ZfY_yl|-e6tOUJnomIp+rnQiyo_r(N^~9;rtF zulW2ytQMHRix7joou<}HU2Z9$@O+=c*P*G82o?xWpbi_dA;hHVbM2;YL(^IwI{73J zVwV;RNaQ@>81`1zmZKwHE>+UTo4+4+t?$4pQWc%!9 zJ95@jUeW$zof-z3@R=`aXla3YI^g2~FtU0-^qJrw8dlrR#E=l_dNG^6vf6$Y@EPv# z5>7t$nYH+ImJnT)B(`x;i=Tq>qA?BO2Ovx&Iw#BfS!?)9&H?+K)&*#pw5VA5hj-1Wt%|LgsK;X>V(93bky_6 z{BQFZ0r8>d@!r{N3FIyF7`B?fWFEPgM+7aibF$G`yUUkAPjZ4tWE=`kPpvGqRLp7JPuBUKaG$wv54ctf|hvzZ0iYViJB6`mF zej?jT*d`k%Ws3xD2Xjg?IY0UyYOc^0E&FA*Wq*wpyQ0->mqZH1kcSgzq`{|yAwQ)) zKV#a#%=inb{~Xz=>2+3rKFa*;B%#;Yoix2(3Ufof+KVjXcNdOu&Z~NnkO^mg4qkWS z!|+)l!?xu(L^gr^t9>mQ@BeW-FZROO+j(aW;#S_kjrKNPq%bFJ;r&|8gi4SP)_|iA ze*`1LnVUEr5#9+eRl8^*6_fPo25J{IoA#8p$`V{uihgx17$&yaHCmal$u&9`JVF&y zE6miSOaK)Od%mbzNBuc&Pe)1=R z3a9lB?K>ohm82$>DI&f}T`wY|Nd^0WmKTRcqG}1g=MuNy29=+~+@c@Y@*cnEqnl{0 z{>}ciord#WLHTejeu&?%rSmnPoewG$)d;P~T?f=B=H56i$L^n;8Z4!^r1&%5bml zq|mb}sQwU(Y!A(+w!m;hwy2Z;$wT1bPK`rt9xK-dz(F1eX+3^7(xYrRw5G3Xqb8X| z4D>JlldkCHWuaD*x(QMqGr%&6j%896j_~Du6exyhvd;JBfj$a6kJO3MGGM=|=Y%|% z8QFgG3+(sv!kvaHL;lzl;=&|TZ#jWndY6RewBXfi5^cE+&K0zQ zb7J-@loMoP3(wDI!VLDgX#uLkdw46B@Q?FhrU9guEohrDZuTADa1P{M>-JdBdF#OT ztmXNjQFT8!)RJX6bvtgO$Ghw0RtTa5vZTqH>Qy~4ZEOf6$dZEFU8#+T{BUWY6oe6K zVT8UAzYR;G{16K`&=~;VEo`()Jx9h&4EYCziu4XdiSU<8ow$(ybp28d2V;l)cN2k$ zA^*?iksb2iO(kg|oSGY=r=7b(9t9N03j~t6S$~>FS=seYQO8!f)OB-BJwH$d;AKxr{XBkgX;jr zsl?vI-a+GZ-8nc>iIYV>Xq6ZUjJ)l-zl)}ey^ka~?E8kW3><+i>Xh@c zkvs@F|6QO{LEdHFImZ=PgHoPfg}A(@;tt^Or!{H8tAARP5|lI*V_>a~E9MmMFFi7t(ve z`-n#J{m<@h{r;d7***h*UFxOjdM_NT9@|tep9*)Y?=b=FK+wR4OOzsuZ$W<3miUQt zg&@zrMN^RH_ds7lp3k`rkl&78)W_gl%4|KVqYT}bSXv_ zuYYUs`%m=m?Wpo+`ga2LFDS~^zqG#{{rf8J)e)lE{zqlIh^@qwt+q4b^(~u@>DzX+ zAZ>j+4M3)<9YLl0hx)d!NRdC)x5+>j^zA0}Ci*rLjl25xDY08StQVl?et)On=T*Y~ zO2R((bX(ur@{sWV19`ZXMgLVEmZGtP%fmZ4#Dt6>PsL&2x`WBXlTSn4gUZ8h9D&Hg zt7t`t6^kV51bNu?FUmtl)Y4Db{szGqAD>B(hgtuRySD+4syZJ3HzAQIkc}E@ zP}EhU4T2UlX#t5Ouz`&Pj1nsrG=^-DXh_mzmzRo)O;EQ>e2t1OK8ZYDLqESrdS(1B=3*UHTkB=Kdyb{>Y1w0Rxk)x$xc7+hN0i*Gf|P9@G>b<@2g3_Cmh!e3r?E`QWKc zkJ;7v)>?|bObVVHtNq)otD$gjZ{VDwrZt&sB{}|_H#$C3@w{x9Ntn9G=Ck$`?;;0$JZk94IR~JFV%Cf^Y0#W~|vdpzo#P4VoT>e#Igfd49_WZ9%uX`@RwVkpaIaeQwVm)tb)UIv}WG63zzGQd{kFnnjm@oj%x zN>QD>h*~>7+sATJkdZM?$HJ*|l}zz4#p0n-hi%qUZPW<+h+8{D zsd^0LL9rGR)<{BeYre3<1T;hNwa(W&Kkodn^Zw3{I^XO3p!4m{yE?aYKGgYIEOyg* zdN{do0A^y}m-+?5Iuj5YB@cnFD{>}{^`cZL#C@sDF@A^tl$pFa|DNS;%#vOjPX40* z3AoI?KHj_3IkX+c`9eu7p|y!6nXpa+OLt>)Jcg4I=f`6*+>Npg>B!}AH*&iJC#Y+= z6^P3!2!33X!__=|5tupa=E>o!_}LxEw$EJ_hUba@v%EBaVYoD{u<05m9W`0j*I05< zh=nEY>l#7@S=4@m*9b{)6$$2KS+8q?oz`CrHIQ5wdcSjdVfYe~TuqYdEbB2%vfH}e zPLfi{w7dojFJiU96PL8nPCCO*I>5&Vg%}#Q=th#H&xlK3Vy7SGOwZcDmX2Lmouudb zSBEH>cKW^I-dG}6{>(YHbUbRO=d0I_^j-8^YEge;wUT&6kB!9t9evh4; z`&$OHvbm*Wn9ZFVTOG;ou#;Cixicx+($V*Qf=}nH;X*M|)t3Z9kKxWiYhBDJBjr z49}$%c3NHrajCNC@CNCgi{GR1gWC&vof70{R=q)r*=+56N-Rr8pNnJI_d9PBgTw}{ zi8dDd+1Bw}>__^JhfBI>z*cLBO^ulhi+7qNBa-A0XA-rN{&o_&q2cneIQ=-oc$=n^ zf>^{cNhBVKCQ)1Xlbs|hlH?v|5^c~qlH@=Q8aMxp^B4cOwP(q(vG#mY#(|#gdA~vS zXwRk?*3q8xY;5oCd67*$NPGU$nWXpjJkps&JNka@xl0^(q{(}4&sUvE{{PgTZO6sh z)516I*Pd?}WRLcICWdvi=Yux3_x23g)PuC=EN7D5+jG1#N$>6HaVF`#J%7OQMw|S< zY|qdSMNI_cx-xtXD>1mn3F=D^nJh2ae&5+&&LxDWvvmHR-0wGD?)NLjWq~94d%+!( zNB!V#URyNks*Iv=Fw4DI-eQw^&2DkPp?%^v$I#Dwtp#adn9IyzY@XxcIZK{#BfNaH z%Ms_z5*~Kj7h$IU-8zu_0WVgW z0;Pq_FE5XUJQ7w-GXaiXQ_y0)G#Clx(&~?`#|RDCE6C#Y%!J9KSg9n`iFM~IjWWL!sH>liW0t+_h}P-p#(msZI=^6cM z$ES*9Y^BwATjPXrXbgN{JeeK2v<|kln4K*`9t8TgS$jbqxpuqbGNplkO?Udgv=Zs@ z%pE!((RL{cJ+H5_66A2l#0KJ!qHt1X$2@YyZm{Pn9ryKz3yND4hWwilGI)PsXd?#; z>?`DWUof_Q+DrfVB~2QRbdLchzBc{iNV>L^NB7tn?H=67w=FPT_|h-(#Qa0s?0)gL zLGq;i;!aU@Z~fvTbZM8vHeKhf#N+gbM>>~wore>07 z)W5IkkTW%%pGmvGUrv*J)q}syEqG*Sfs;?*DB&^HlRxUsg?teQCZC)7g5dD!LJyw- zI(EHa69XbW2Jk?%dO z4GkRQU{!DYrF1g8E%~mw*s~7O2l>8F$0LmGj`6$WW$efCtnF)JsN`J~#jASk2T(}s z#0(pHY-nPh$lHEmP^}Y3+O#}{ybx%=1PCm)Nom6GIZ0sEh)b5>h>tqxH)48zmV1gM zhh?y)aLQe!?lPx=8Y^ z+n(%8*aRsHQih@uHo0$ie$t5*CfPy>OwcW!Hv?zuj`7!4+fjPfB*WLr8Z}K>AphzD zG0lkIklU*Xq_8)>gA+QEZ;^|`GLOg9p*7**bkx;)lpu!05e z@^NA!Gdfly z)>L_v)wdpR|D;6@+Ig%D^k6$Yy=9H%?wk+jyIfD1B)l*A^$PoR0kR;Zz6`{PBYjEg zI~}F3*nq0dpt~?KC=>}zeQK2brqO{EZ?hcblJF;J}f#MX*#A{ zZ4!-V{|~-Dl^|05U;X{5QtHk$^}}mnBiImpVLjh&|v%;K>@jK91K~_o}0^BFhKY28~F_-eElK;xRgu= zs#;(8)@c%%554mSL66!rk5BbRKQY)_yx3Pql(2r|w)$(2D>yiOr_B6Dti{tE#-U5Q zeN6n(y(#p3XS>5+M$bn#?3h**zR4nIQTX~zfc;!(IQcmEbDnRbB;r8L(0^{>7so9h z7hpz_A~}G^w>0)K{Bn$1hhiCqclpBqTr0`An}kJ#b=^t6ggx#?SqvEQMd!kZeMsM0 zw;kFhAE)0LC9oEFiYhXP{))m4BBy;0je;jLDIa>9%7h4VQqUnnArV1g z!t=7iuO|`WCq=A2%woxEW~e~r_v;TVqW_}@!jdCmAU>-0k~WIlDi*(80| zEnL(2$7;u!3Llg15YjQ)+8j;P-&EV*`haD8PO_XQJl?c<94b8g!ehCNP;OH{Qn(vA z?rAgpM{@5Bo0MT-voHMgauQ1e@^*KFSQV!q)o$$A;donbk@(?$20lA}(5%+2G7>Vn z{6+$ZxG~keI9IwzL(4SNOX;KZu&T%qdRJdEL=U1A@HV5&BT#zEAQ6MPfya7N0!%ai z2v(QPX|2>y&@NsAEtOybsW=TU#Xfx~jk?70GR?q8 zomPiNnsQvf6_9(}rExAH@6qJKRA2u1DScf2eB39ELpeah~OXUgt1>kYtfyS>`ZmrU2pT4c)K1dm-Z< zLbt622{-jIq1(2bC#exg5wx{o7yrtiJ^M4$0vduwx=B14foxx~5#mgD5<}`=j*y2J ztUqaBwbS~p56^b%-q?@damth0$e&ejXS;%IoquBNHU7r2o_Ot!*?DnZyfJech!JZW zu1RO@eQ+{DGo0G~oI$uKe5cfzQ9x?K2+Keq6)g%sw-yi?Y{U1O`syt(a-g%=7h?PU z_(i0_vN!3?UmJ^tJg?qY=3&u60NQuHA@4?JVvQe=qww0jGG@E4-^>F6c;V37#VlB4 zF$>RR-*f!j6UoDun>qD)j+_LL@27m4?2{#Cb;X;dAC>d%(()i%$K2+~D)Dw-u3`MR zc#CjS=8&&^eS$7u`RjZ@(qo;0iE|Od&;r)KnZqnCOlT2zb)@wz22mKkM=Civ{LETF zVbeq+f6i0wQ@_J&eBq{zO1@nbRv5AqH;LXRhxJHb$5*n(bhCWrym1qA$b3Fa&_M5L z{D=p+L$a8qFqV+5Qxl~9*IQrxu#c~3xo`YV$|A9Bww;mtH_R{oH!`5fCy@RfI4 z)1`~aL9teM<6EeruzYJ_Q}*dH{)FDOF2?s2h8K(Mg=gspSNIsCd~M_d;fi7!K2Hm9 zZSwqG-q59cTJ!dj5czM{4DyMSrU8H1%_)r50<&}xE*{Q>aPGxlkc?U7NZ(n>hjn^5 zAKM7O{P1ECk+Cr~f6+5bg%x$>-@@=!40_b{a0HY)Fs>8ZCe{-Bi^f{+#X=_D5;Kj& zTY4+CR|-qY%zxGeMcS-j2ycDiVTwl=W@ARaOplw+nw+q;<2OGzLs-$t?$>?mK4;v1y<>&Ybe=}E*!{XJo)2e; z&u^G~X_9_yh4sB>#5%1mqiBZ}Ob$Dn-`C`0o~u^E-ZmfMd|Ey*i={~Jh{1%^x;i%Q z6|ZXguiRW;@4kIq!=8Tb+n;aT>~3tqjvDqPxf`G6hfIUN#e?gq3-QDv=cbMYkT6-1 zhK1yi4q6 z@$0sUxEtR_Lq(w{1?>$j-vek}w3mP7uVXdD!lq}I^IKyKJs)Qck&)d9XAU3meU&SO zc~0nZ0l5!eMEW1dWL=VoLwuNysgq%u77w>x>fVQc&S{ji=DgZ8^^|%x>ogh0n4|Je zL*#|V-)O8e@M+6~5#`M2@Svm5tZZFciX@bAaT_DE#839o&ig4^eDoE%wjgJqng-mY z^5uL~sbZcfV!k9|{!_Ya(|}q-UT?_v3%Om$OAYxvLtbIX4**twD&z%_WByv_KmTF= z;|skhgDq=A`&~?J&0_q<7#BZFe%VDb-?0A&Pb?)QSQBM@7N5}KZoEetOh2D0Bg|wS zOv2kGrHPjFLto$$hLMrwrcs;RjZz~r2L=>{JfYdVk*6mTO*C)E*H_l=|0Q|9mh*x2 zh$^;7UuQD!jC5kh-g#}054@w)xyiIH8=zm}^Jv?&O|2^?H83fNyec1Wx1ZMRv%-}yakJ3KI%O_b2_1YOkn7h!X> z^8enel|Sq^(aK+=3o2Uq5(c4;edNK;9=ePaO*zvQMx$A_|I_^mJ)) z^U}s9p<~iZHAcjwJ2!Xkj!pg4&-MJiddJXj_c_;_J0{UZVtLGda_B92<-@VW!$R4) zKK7ni$ec(l{Hkxre|+nHVD|Sy!Z}SPCnNnBHqH0UJ&&nZ;kx!dtI?Q?k9QX|epBT3 zel)o$v!$rdNkyYRbzk?rP@2w5iN8Fw@sFVC$3C`Zt!cDZ$1Na;`?+3P-ehx+-^hEP zDUPp)>)xxpFu({QqZbCoZjBUfEtRe=!9Rm&QAjSxhsvxjBG0ExzOqCnrcA!c37j@$ zS(V^{X`*qd?!}8G3!jqyg1)SulD;BEMC0?(98{B+fmv~ld_de&*yJ6y2NW7Y3g@TA z=^;J#&$a4siYqVhpv++8Ti~Br)9LG-cgE};-{u3=Q7y|e`?zo{)>u0KTPw4p816}# z9Xj?O^mEXTXS21Cv-o=t->bqAKa>y{?Awg=t=8u6F{h=7%*$h5SAtmw7s7mrphK;l z@5?+)mbNcrgc_6J8?;sv@7~m~Jw39HGL`R_HSFW1`>*rd&8^mHI#sM^k_Ss zRW6~sQHpbY+9}^A^xIRumAikce2G6zKC~E>?=@O5BHwz|yf&IsJ`_h_760Ze8-`L} zuWvKnD8O|dZ==}7YgeaWO2OkK&XPSth{aa?&xW)d&59+A-bme`{; z$u9RF);bsCAo|e8id$^53p`8PjN22oS%0R*S*Vz#cd+*?k!uCDKQ^?a$s*Sx#G;>V zv$i89_XUWFR%rgfT0y_4XtrvoiaZ~xwF#{7g>zH)VD^>bHp}_=PgBk(=L#nxYf@7M z>qaGMjdCVT(NYW{2%*C-U9gj14to@PMW0qXZdBUZdXKRsYJe%m0DJU5Yd1Wijdt{R z&OWW}Bd>7iZiY3$Xw%9ehjwLEeJ|yEyY_J|-ui+dFp^F>mFcgo`1}L(r-=MXCja|b z`2P9tlz_+K8G0$dM`hA z{SKafA?Kaq_=~?0z1aK@RG${cMYY>VeeNfp(Z|Cv68pz8QF$%mwKb-)EHPj4NlZYj zM+oT|a9NKDoMgsaz3Ayn>m!M}aM8Y{(=~pO?Q&WFWdG0>kpV*czui*9q@A`(I7|HP z7B?(o?8|s^(mDE=X}_;E?rrUSRlG>NKXCF}gCC0HcjW>2-T%}04MsU}{DvNY-_#%F zmnrq#A?;VbNvkK{)ksEHN9YH-Z9DB}^RdsL*!$gSJ;%?yZ#J-C&ugQE*_`~_ZPiO7 zvC$n`|BQ^=fnw`g#tgJ-Ex_K{E|v{vo?ce|A2K(pCz(v0hsfw4K`n1J`@+MmL83xA z1@(gU?2dhezn@vBVDcJK69=U0`^N0!=;iTgy8h{C4@B|lRJ*lfwv3lgqrm;gi>N=H zL0U&!-)!|WnXU2h1gAf>+gttd3|xI&{+DH}qMqa93C{f1ZWmFPYn#B)DhiQjf`s{qG<;`ocp2_(lqc0hFLg-%XT5V>_*T(4O}04S@nXqCSU0^|kzeVlRu=UNcdy#U^b^R86)KOLgfBEfHW~s>s-slMyZD9~%BJ4(a@W$%_f^Zv0&IpwZrX>jYF}Jo4MTqb21J z?^(XMSCK)Scq1yK6g0S0%t9@QdY)+{xL1~3xL~>%p!GacB@qA1Nu+3e`B&RV{MoMY zY4If<9;tB#1ulw|mu1S!SZ`I+B=P=O@9PP@CdZ&Sm?@!ume?ET^t~Jl{G&7zrE~h_ z1#5(sy;BC2>ufwzlNYQ)dVy_&Ba96ege(>TLZ4fI#8q({;RtG*Kz_wng=gb#aul>3v~W2uZ$G9{z=vrWO@ zvWP_U-zjq#EjU{X&g)@+snYBb`@0W~8T-5N6I1$6w7(2fJ{}AK{{Dv6ylaLE@Uy4@ zfB#ZzE~AwRnXFsPh{d;#;(FPDh|QV#iyaoM!YJT=f#Lp^;r`_0NcApI?({EZ9?rS_ zbEF98ehRSe(yTduFsL^Kgp$_?3c(q|) z%5&n?BD_PGcj3m3B}=KTt|zz~m-AC% zo(x{D##1+ZoWPBt!8ulz#6Y2)4WA_N;kY^0ASs#)h=HTBG+}T0ZfYJS>979q!gheO{P3U%cQ@`=M6+;Bh<@HgvOmh6|I9$@P@Y ztqjc#V=~hV+)s4#dX$W&--ytVDP7#^XFS>-^IYRGFUbFOL1>RUW0r5SWP?oNx8c?@ zF;h-fs7=Rh${GJ@egCn@-Z2(+h`nkc=*`Tq>ZOy*%dFy0mou3$>D3^U;9x?#^izIXudhCN3FGlVB)J9+Bm5$b)dPo;-QOjs0l$(KeVTV0|qpU^z*47X*<2o7J`&(jhE;39jonU8N=2}l!a-B z6=&M3aGjOP-X*UMw>ErsJl~&b$~}cB#cIUbEjK;U8okZA9%UOo!+7{YW(UXjY+>G_ z;e77?m59hVq*Kd(VYVw}O7kzWqw0p#nANvV_K$@5jC^r9hGjfa8q?MC&R>GISr2wJ> zW7_L)c9bFI{~$qQQ-Jcrxlh5`njt#EWcz>FEcur;)2|b>B84sSS$V!&L@j3wh(MV zYY3k&B`k^9S3Lgf#~kjS})bxBkCKS&Yb zoT(qh^!ga}?f5Q!zn^_WQlQ7r?SxiHQnisv`+L0HS2@aim<(1?w7jEDd3_w^jTKIR zh%Yam-?0vU7YV<;GMU!Kdr3&)oJT&4$-k5S)-n2E{GJir+4g#<@LL(>_dCO{-ofu) z;rBVG4IJ}Br+o9uBD|gw+CVNP_#PII>2Bm)56#JX z`*unV=oyDRGHkO_P!pHFb>2y&BhPyzQ)olSNU>U;E&F+k+QT+$i~T&`e%@$5??E$? z{z;xY?$-uXeh)89*j>hn@Ny+_mYeO;kHq5>&>zD+N-1)gm`?}3GNj09ET+~)06 zwkapKNVM=dGlM?uiVqn4pP5zj=9(c{s-N784C$*$LVA}ho4`l?rOy`{lPPZ`z`Rsa zhI968>#2f0nMXJ>@FuB6dD8EF3D0+bWUog$?ZbV2 zx$v{??JmT%#xQL(_Pf~l$B#dV+3znHp*t#R)dSd@`}#f(eucts2d>cY%Q5`I4u0Fv zKnI7q55Nz9`9>d+&kPN>kW>1(0Kx%}y~-lTKkpD#YOniDGKkB3UW_Z8Q{pJDR*L&e zuYM>&%Q1dP%CWL-xwWs93f1(L9gLQ+{m=VOA=G1v9H~-*j}oHslGFb)j>riwdpsn) zgGjuPWeEQPq zeYN9Tdhr4I$-A%-`Q9O?wJ^%>1tEoV#yj}c2)~C9#!oN9v+ElYe#2~jY6o?~(%3;e zff(H1f6wDE#;6?}B2LD3o1<(mbnAN*K8%On;*0yF3GH$ZmvUE0=U2V_Af#~4Bua|J zDGw4pc6^98V}8f@Co<44>;zUwsOzDMFRcJpG+~<4TQ2( z;M;dampP}(BtPPM=X{`~4-9GE1R;s*y};oA<;05@&jlYh-)3P-mLI}7-@gNQIk>;t z4U_P(Uq8 zppP`@stEe!RAH9fWtdEkpqmZ)O@lr?g1*?GpD<{51bvD@-)YdhwotP8xSa!(_k4ri z96>)R=!V=Ud6uHjgY0f>5M(%cStQX^lXsZOdsPHI*q{d(^d%AWCmbS!)tB-dP97UU zKWfmg8MG&Yo@daH8+1YhEho`na*IKKBnz}si$e{%&Y;&DbdXiD+yw>PXDCxMD@V;P z`2is|<@!b_qmksWUe>{xrP`cJNlg?_3EPA)^Brl}V~<=%mT>MX!o4XcSqJarC$y|1 zt+O@Fk)!H5^B(7zg!H_;>+|CuJq7$!-q ze;C@Qs-J;<4eba+yUWmCGPKT5HQ&R^+Pccn9yPRccSLF8_&L96$Tu1CB<4SBvHR~qtnQOUCm`65I9?jz0J6(t{P$fFJUN<+SUJQb7S-TM4pt@km8yv)+v z+lN9<7V^u6y!TD9=Ycqf?+7_b%0AbS7a8(>#>)OBWMw|wkjo7DMAP0ohD4YjZph;d`Qz;>`Bouo z?yt0C<(_27&4&DGl>CMvCmC{uVLnUBR;{fvvd0NI zQ7SgqkRLSUrH1^gDEUG|zQK@38S*e8tK=gMxzdo|{Xm&}qU1q_e2yVsX~^kO@^_}^ z4>jb$hI~kr{GK8AH{@sDSLWa5N6KDf$X}Rs@~aK`<1BRw%MER_p(P%ntvN$XMO*V) zL;jl~pLDpArwCbVHPeu9Gh}(g4O6)-TJU&74j6Kd41P^HZ&9$xooUGS`u(qE{A$X% zESfvnkbh}%Up7F=&qi~9`nL9gqYQcWR;~1-QF5yx?|Iz=*MZ-@r{rT`jwgJ?(6$=d zRi{=qc|;+%8}bH2ej87UIsP$9o@>Yt8uG@sRIXd1b?216e7wvzu4C66@Z zN<%)!WN7OQZGKdon+^FECFlI|EcW(Z zbm2puGy~ZJgP%$I)h`Qvxjp_F{6&I)Rq!_$e4)Wl75r<0uQm7)20umcn*~43;0GD} zIf8#f@OcKGVDJTke^c;T2H)|jR6l2e;NKQ}n!#^2_=$plNAP>hfb^8XE1&lSzun;P zGx%RgdJQ=?8hps$PZvD>-eo;*@V_XhXpyS}EzoBmz zde^@r@~sy-k)6xx76S++Zxs47QF^n`Q-!|G&>t82by0dnl>VHdFBST^QTo}@^6xeD zMMBSr(tjrOzFL1npDpwccSYpu{3Z0mgkEas#X|o}l-?qAt>0LsZ=eb}l4LeXu#aUz zSN_LG>BkEF6zFmgWjFiOBT=AZ@2W9VzLlZ-)Uwm;;=w-uK7(aAzRSc$^9RPa(=WEq!&{TI4O%<@Vb)j8o;CN=zbvYMzVj*TFPr(*@VT6z zWOf>ys^_4rOmRzcR%(MaYNPzzX>D#*l%?YZ8|2~S3;(7)dfhM=Q&>6MbjhodMBhE0 zgzZ~rOBhAg>!k1Ky3+rv`tL;O|GNI#2K(3lC6P?)zlmS_*Z*~)Z`1l~y{Z2OMOlMn zkTCWCUsL~~(fYq4BvXI%Zk;V2TI!D;V)fTkNRGzWt!e9Z^4bSkFSn1ny~ZN3eAF%U zJm)ewKYpS)`N8hFY%!V_AcC{a_G0Ayhf#0p*7DqUd_&%xKVp`9=i0A)?o(g*%6&=l zd`1X)CqRz+TW6wx&Q*FIR@W2QMZZb+FD%K!yGd+(`wq1v^V+Z6)7ExAV=a0OablX9 zVs(q^v^>0yOIQR8dRnoFkQIdY6c9fc)D(Ms&#~LI-7fLEa zS<(AL#ZLZ1KY1vxM?YB#f^CZMA>Xuk+>Ni$O?~SuH=E$O-Sj!up8LCRx-P+duxB0A zrfJ=B-O0>t=_%EDZ*tvAR&|Id{I~wJ#C#R{Bt_+9glisNOlq7nht!=i;x<=i#P-J z=kPz)QPS|HGYsSPVByh1@gie?@gCY4&M~}JF$*%h&J$iu13$nWcHU-YanchQjoJP7_S|d(w?d8Fv;`+7KASOm9ea-q- z`j1oY`KsE8+<#DccUmXfa$hcu7tS4Ou zoXKPNFs@m$aQWXGxvY9IjJPJ@g(ka6sC>j*4Wd?jc914%#8gFxt=4Qb+xfP2LVUf7 z%|LXwy3}prh#yzG-N}VLqKa+S&C*`s+>6$0i%86DT4aklBCXjANM}8%HoDVtQL}^D zSKu6Jk8|i}@fA5KS`mla&5GLAqDVcKqv_5q#;;g9AE3P+vkGOXakke+b%2rfdRNM$ zN7X6(%vvq28P2`?d978&$&p$m#%i?_)3QEN=eyH7m3E73FXD@X+1u}=IWr>vI2{(WRemAzYk#8Nm(w~i z`DMSFYg?t6xX`uNkuv|AwF!X>3pek{|E48jGVguNDBQd^@0%AA0)F4-9~eRdRc8Dw z3U%lQX}LdIEyX!(nm$%+8c{#gZrY7=NLB_K72fQr1y{)H27N(D0UU`7E|a$U2AR!R z9c&g${8TNhwX?~ZA>P2**zbw;3L zA`M~vM_toSE0;!(+dtyG8zS51-S&HtKfhr+u3Qft_si&ssyL2%}un->sqY ze0%g+`#%=b`2=cs@HtV#!0RMbXv(?#M25Nk;)P@Syudhx>(u9N6Q^+ZGbBKxXDZxg zT`9ed{S9T6a|%3+Q&^8Xw4ROip+{&k>yPR=cUqrPMbrLbcyEi#>*?qkJ~EmNUSRDJ z&uZ&xFAXA_fzOZlh8H5f6x&BtzIaug+KZ}!$J?IJlxrRNG)j0_$ERr+MdxM{Pla=D zeO8t7TN$I9axORlrR)|57*mSvDSvC?b5Y85C|Q(poI<|WEJhg4ov5sG4u^+P%A@K@ z)y(duBG!%SYn28Q>g!Yt5sc!-2a58}fwd7&51;W{>V z)4Fd>OAwuJqvu^NmBarsl-h%0p8JUx*iUTWof~;c&FsI2lkogpInd8K6n0U4%Y94S zBQ9|M`Bo!=gXOan@wkf($Rq zoDU#VhGYVI6q>vB$dFB~7L8T!Bjq8}M(M!riz+(`ILCTU)1K zE^PJQ_$hle+=`w;eebrJ`NBb$H4C#6`abA|4c9#k6M}pP5&@&ek>bzZglInwo>B#561S5&$*D5y9E2!d4RRq;QG5N)KjMjEDYaJv1yd}=|yub6$ zR*H@|G19? zO*tDtv-P;gVui>C|7eIKy;NNH3bRgC%fk=8@#3@(k|K%`4QEQ7C3cFhORqAE&pnJQTH zCPm^p-!UtNZyJAWJ%e>byNSE;O^(-e3^A28<4Iw7EF#sMh!|zY$Kss1G>D?*bdmAo zm;Fs8F!!UWCPM3YffQT9=U`XXEQ*s0xcCr9s}<6~bDQ;VdPYYfB}zX)8-@3JR2%PL zr)Z;2Rrygz6My`0z+#w+Kt7hi=lmF=nfC`|51d@Nv2GRMBk?_)*cCUng(1e%T7%> zhna%=Nx?Iv;E?EAJQIr@!wIKuLBMBQMK?`+%ZsqU7v{nX>-_(<<+HYkIYhs3cuq{L zv52L&OgPyc-8;KJQFfs?cHe9KtF_!kx9#BGNQ6hS!mu0R0#xGJucdX@M#Qt8d^{rA z*>S8MkFol*utHE7Rzz8LN~=XHdvT2A`NDFZu*6ZM>HS`; z4$68WClEC$R`@|B|^Sd z$oD~(_v6idnBT*lcVYfx{Q(c!u%}O;aM6`%n9h|M!Rgj@RGM210wd&^py*R9h?hn} z>jjgXw@hqoq_qhpu>}2n0$0{gZ?F<27}+rXa8^~W%&^Y1*&a7ytsSK-!lXEFgqe5V zkFzxWSJK)q;D1OjUA%Syce84lb*4;syPsIQdrRk2swtv40;FrQ#QSGR4>v3CCo`_# za&BKsRFon*3dp)eQ_itEHOQR_SS{;y)-o)_`8`}Gzavn7U>LU&%UnIBBVUK20iVk{ zK~v5f8c*kD2&b2Y)A?d+O#@ywQQFy13d1wc-&YURHi+L$ny{ zQTk88;%`FhuO15%^MN8OB!ed`N8nek{l5Enm+R_VMyxGp{6fbV_u`+^quozz+Wl_F zvGU8vqoweHUh7I)5?jLh+;^_+d=U)~A+V(Z&R4U}y$`T@w`h1X_F@f2g1Gh+tHw6^ zcFd&b&APegectGvmy)hwVTOPiR%QTTwbPrKgf!iHoLm_E%(_MWwO+#0YPG|S0U{~> z7J*U_lQMIKvTlm0kI`XlJB2TsqG+Z~r` z|63pT{S|J%_#|@2YLT(G?+Zh3$!Ei~=E+Ac^+?>GwqfGoF7FK!kMQ1b?vc@OUhlTG zL;BWrwoyAgyo2)5tuiU}LyoxciBEF0!1=TZCT~g$sC9`delk z#ofUy>w|~)bx-?EQK&w}`n%4zTdhaLH%c@xo(TM8X~(;4$}Le!mb-C>6dfKf2-kC7U8Zcf4`29#kt4pb?uGNBE01sm2Z?W!mtrfn zOpo*%SyRk&ExPhZ^;Zm?gYNXW27S};>Ar>yeXUHwPRSH}S-n}1s*6K>2KSdwI&puS z=@LCSN_^Nq6Q{%qy32A&*nu=1GcYU+`O=f96SqpLJ?DM_SbdHtAcb~>oNvgN8}eg9 zo+#vw$CP}cAx|>o>xJwU@=HPvt*4Q!Um&FnHWO71S8bGes*GQqA4TVbvR`L0u zvEHxq{a=YRa^G_*C81Lp6X<2@QTmAC<0`BDa$|OBfJaxw+=}YJoU-!SmDLrV>Y4yw z=BW%+mQ_{$uEIasb8@|;k-xZfWmVj$?Oza|wqov_veH=Y(yGdtb!Bx6Om^}^Ehk%` zqBK}tIlt6jGpDSwy0pHcZf-@L@P}SkQCm|NC@rt4uC6E#RMu3NR@Bwi)Roo;$^tubuds0bKYlwyC0%1%75EFiU_4XVrL*qRJh z$FL@&d9JOrGer_a5!#RkYQrc|5M6v1GMqI`ULTR|-_s z+mEQ5htk@zx;Zw=SbYWNS5apxLQv(EwX;FatPD8P*~pkK94Wa^KTuO%Q)LPgLVa~* z>Fk>NKrDG#d3i-Gg!(Ev8vQ-mjpZqpOf%CkJus0w`w>5)YE2o#+a4myHl{+mb19|1 z^0Ml(s?w^On%bGTqAMJ#!F$w|{x(=v9SGWOQ7cvv6BOSvlWyuaU9ukkXy*=yp3%Yl z1rY?T<#?8#l@+y7aLuYJyR6=GcCKf*OFrYKPF}yJ;E#36 zdcWs{TuIU6?0emw4FW?A_auE@6; zYCMSNk+$|o)9SzyPm}H#qn$AG!n(>pMSdVqF{d_A;m@Ci8pcc4cU7w%wXB+2kt|*m zJZIJr7x|_Co?BhDKr0q$JdgB6*VOu|aW(T@b;{&~nddW>^;VK7kKFZ@% zODBsb<|$Yn@Kgt@s&vRyKc}f(u97<1T6~>afcz-)%na5q@L(qBz%_Mh(JxAhrfR;r zV0E>4#+qtRV0LA_CuX!RS2-&5Osxo%RMi(tm-Wo7m{n6(;Ss##nJQ)n(Jr>Pa;q7i zjSF_PrZ)2&D7`l}y2Ww>~4 zFjM7fM#cG+2vi;L7^lU!#9z!>&0vEDO?_gzRjaP1!K&b1Ult!LlmP+!}`7LL;L$+L=d>7GtM_9Pkf^R&mL{xgYY?M3&iQK_j(*ugIcZ*LgHKEsz0%!x}vVK zys%ow@rW}1O9Pu(Q=@))f}i22Vtz$=ma*$dhZ-@em%<}N;D}MZG^&Gs#_--M9ZN7` zczu@b4O+dFpE`$}49vx*a^dVdSdt zpLX`diojHjvWX4$4Xk3e%kQ!$6TP9 z)XF^OG&2Wfbdou!MjsxA;XqA|Ix`heC!h>km&uqQL4Zf*1n^MbuH&Ob2GN;vY&?rRVA%e|Wp zO9vHmH0G?RouwhqIp*aX1RFUQp}E2yXw4}(FNxHwuI zKjvcn#{T?KW!TokNH2>Q4n-3c)l|)`@QBSSkYB{aW2meJ`Hb@aQ%F1!iJ90n6^;&SC}IzYdnaxYGY)*WG%IB?!^u4TJyz{9}j=knD zovgkoHk$mG`Yp}(`=?aQ`ziTkYxh^oFbTSxb%|4q{U8(N%5q7$pXz01c7|YQz z0Qn1}i@FXkr+Sz&B0Ihd{;EWmLIMS%4dRI&WJP8M3Ka@{ zG9KZzFAL0OlIEFHF{h?ZR*v}&{ACqYjH(e%2CDvKRiOyd=+P7EYN`WHW5n<(%jyD3=l0@dVdsrVSO$@>q!;J9ex~Ml}h3 zXxhjEs!s7);{zp1m6@a+PzZ_+ZZGc3=+CH$Dab5W8X}Th(%B)1KNn#|slQ?tX;>_bVC(I0gY|%_Dpy&+Raa47Q90La47g-DRk+p9CTd}2YEG?$ z#(u>U(GpIZ)mB}LDm5!m?7ryy$7PVQOtFS>a1tGwtr%DAXMwbv<9SL=V4N(Cx-KwE zQzcKRq#j`EgS8SD@w?EhMopDPSXGZ>v#3H=B_o>`E>VTOv|TEZGD|3>^j569-o@zC zW9Nb)O;);Ni~k1U+^G-)(}i1?gjceLC$)-f7DOJMIj{=dA}F=(BL2Z%Z4!xOnkj}; zYUAeF%UZ6=`UonTEQX4v(gn1LK+>tqTACAMiwBX_d!}Rlu`ZEL+Ap@Q9NBt^?pT!D zYr$fIF5Tb=`q>`Q`51+i`AZ}Hl_#^AWUJgITMI6G`>r&wpteHG>$zPeb?%8%tyRtm zRt3tc*^R4bfm_%8%?6j`s6QArHUlM&m|KHQn?-nSKB<{$Ln)<_E@YOt<>^41fl}gu zXsScwcp}yBo^PX~*k#z$R2bhSadU6pK^#gfr+ z@e$`othgsZh9fm^7R-GSHxpwG_SfoUTm_R$i_br|uPttlu8kq{7dBznS=j4y_Bjb%HOB|aN%@9Vv z^e~v!Rs1%HO12V}ZJ|YFQEX)XXwNNc~xw^`yAor1h<=mK6-x zs;x!jxBb6g1|yHz3W1djoVp+p8MdNhkQt&}t|>Lrf($zoYU&~e6Kii5KHx{U-c4E}}YG=`8{8T9O6AYLA zADK882Lr`bL=3tXTE72k_5NJr^G~b@I2Kdm7P|M(su;6=7!_cAS#>;*sGn7;R`c+jTR5Y2lWl}L}&lKR955v*mT8PF{_NxgjE4Q zet>f+2c0~jGirrdOM6QDI-h=0Jr6E@4=R<3*1$iTo%OOgqdnsa&n;zbOZp8eL~T>7mhxmU|R9$6TAgePa8jO{F$ds_2rMwn_6;y!IX(5J|l5` zeU*mONGZM#2QMM9=+{-D`={DFBay?*;4GQ$WdUV*KoSgb)sk1n82zDB9GxI)LNhV6 z)4|*|;tXe-xm+W8)Xs`H3CHv~>xKa?*W(=P%KrVn?iKv@-@UK9{b12bYUv|8ZY;wbmu((l{Xot?^U5`Tgpuo+kd|MvU$b*}_w{&`<_JL$R} zKtAZ%5AN%31GaF|FFTEoF8^g;_d?(*;7VW@umzaTVY#iqY+x6#1ekuf%O&SZi-0Y_ zDqzyeecjE#0B{ws4cG=u=Qvmw&<{*Mf_%ViU>C3i=;i2J0N4y{1}1TGZ4EFJ*aj>C z?ga*bgO4N~a15{o=m)j~7Xp(wi?Db^-msMoy$I0cLV^at&}5upQ{j^(xi1HdkzeC@mcAmjvQ0#^aY09!cT*9i1-Y_Cn|z%F3= zvy?0L2^<4#1eO3-0jq%Rz$CF3;9y`9=P#EXOFrN#pq$5i1=t8|2d)C{1-1jz=^yDF z)*c3I1Qr3?fD3`yoSbh4`hhEf&A={s=8*C*jwWYwir)`R;(Y!xU>mRvxPlia`g^D^ zZ-9D%tAI0rUBCdagqKa009OE4$}=w)>;-1?f}8gQ;H%V2;J+vz=zWcL00w|tfi1wj zz*U>k2XC*m084=BufreceS`J}`hhLLM&MT93gBK~7jPISLetyOH_-bw>41J>`u$fF;1B_u&Wh0@nb$fL((BfO>M4)C=?i)3>2FU^8$fF#ALJ0apS0bJRWkW9kL; zx5Eb*_yqYmYv1@OdIPQi?f|v}lQ=8v??4V<_73y~417U4U?Xsc(7(if7-i)9J~MzN zz=c3Ruo)Ntt^|5_AqO!1-`EFd@cqDS;EMlHe_-QoRY3U;_A5X?upJlx?gcgi(~m)qz+u1@Kre6=a0aji7yz~bmjK&=D}Y_VHNd0+ zlnYD;?f_;2lLk{ha4^sd%m$VKi-3Nh9~b~G1U3Sjfz7~`z!kt2;40u&U<;jGfCZ%?FmjKg&RlrPOBQP6SB=!aL0|US=?4S|YpLTBsW{MpEAXako=!c1nZP2T7w89;02cxSz-C}0 zaHT-r7itG)4?>RNln*QcwgKf`-F9Fju;ggU2L^yGK<_cM(+K1S`hlwkg9oV?m~rtcmB21K0c#JaEjf(0?|3fc{@%m%x^h zls^*sDB1zoHU_>x?^wzgn2&x(QJ)FO2W*>2I{-_3v@5W=5WS2h|2gOn*iuA&f$5WJ zCt%mP$aNNSOoa|y1zZAb12&IAjtfW!TyY`#$R$586IgN){XpP!>I-a}fu4c>OQ^@$ zz;fil4jO^Yz!mZ=^`1q&fNhu252*KwO3DQWt{^|KtBP`{S93Ldkt3;=dIFp4s5g99 z0Jj2LfL*|LVES0}P>;O=O9J$7U?Z>@dNXjP}!#8Jo$jx z!1mvhAJ}{YcrWR~vDF2OuvQp z1ZD%9fhE9|zyPoX*bLkXTmkF?wgCH2qIFzHt81Xu!`0c-{?1g-)$1G|8$fZ4Yp z7cc_g~0T?usfmu59I+@0K0&hcawe+`UcJb zdY6$7xC*!in0XI+0Rew0N1JhmRFX4CRyAtN7 zB^=YgZ_3RH&_Oe7x^4*U>rNZQkJPjYsTt?E`^`&Pub|B-hRuffkXE;a3@#Br$^H})Bq>S;_^ssk7RtFq_!Xw6-6;H;gx``Ra$T2PlsdfOki>5J>5>c76zTRkkC#DuBo_knt^_|%7s$TK={k-5O?5CfC zeu+f~Ac)vw_`e;wJk)c7=nbtliQbk-J+2eIH6(jeFYS|+V01(kjpFnBMe=7-pW)5> zy3dTy?{(%+4E4zF)$D2?e)4Z>+Sh%BFr1W{mN-2%MeJrF_$|z1lLc@83BFmb$Pwheu#)7-FDwPi7zf`Ja8=X8=V0Sy+kS$AHfQ@3Ha4HeNpe zHM|F2?5zs?$OvBL|4r21vY{`r>Enc7tes+do|-zmI5n#%)e~(bt#1qYiVwh7>e_D8 zM+o0oUC&MRT$q|MUbUxu`X{+uv*9z-PS=o#DW()@LyG+J&9*0@Ul>O>iWhnj^gYlC zOYHWU8?B$#A9}{!`?|G$TL0g|e@Z`8t>rI)?t^}y{41f)K1lvopf82a@P|`MO~W!$ z3i?e@8KnFj&^I1{o(a7_hPVg%Wp@5V9}K+xCh+e$#+r@4%O+hO>r=-|I_zO8B}o1v z@ILUT3qGdj;#5y@YQ}_^o&%&SCY{Gl*N_;q1Cg`YrXLrjPmAhN%2{R84_1!Y=T_29 zin{-j+3Hr*pA zyIlmo1iX)YPQ3720lpYK!@JGTE{~2g15^w2o1wogbo6PDvjx43vr|$pP5hr;$CpCt z*~{=N<#RcZEA5Z0uLyswk6r$FQ(rIiV(2ly5U&qE^qUWozY+STgV0w<`S%{U{1z!6 zdT;uXc5avQpn?^n<+vs@~W>we^HS2h@68e1T9-%wzrUm?>9(eH+TfyG| zJ}l`?yOqFjQa`Mle+BE3@i6Hymuna4mJ34DO+nO|W?Y@n&!3tm5|}^Xn@##l?~CJG ztoHBVD|MJbx{aiJNU}!xUI1TjYKpHPnopaQnsO0_7b`&Qt(kmztjG7}U(%tkvgx?7 z=%3(U0Y8#_S%NK2O%ovacJRgEd#2wD-q#C09o0zr&h#SJFz~|P!*5fcc)u+prO->F z^jJR;IjW$~hn^~Q`%mzV;A_Dj9zg;HzsyeWl*0>tm7Tu79go>@F#X+*gMH!$&q>{M zZDQgBhiSyLh^ z|9-h!25c^Ct;9zz2FCfAK43D_RWU(f-eG}1-_>|e()af6d(N)ITwP@08clJ z{t3Prd|EI3SAtLJ1>XYR1-_>~w}RipdU{WJy1?%O-?M%DyO|GyXE=@ii9DI$w}X%P zKp_f#4EQa*@Gk+ssTV%7zqqlN^o`)xg6}EMGVo7=?^&-^;2-aW&nw^`>V;1`_~pIe z_kv&A3qBpsDgM1@eTRXc2EL~}Uhu`>r-@?hKhe(&@JqpKzjNRN;2-Y=zXZID7egg2 z{jrq(D1LVZ`0d~?7d*ZwQARPwO!C~P%hmat0UDJCy>5pw_Z47@K}1zaxKIfAGr>kWb`TfgD1g$nT_JPdUn>VieH-h2IMJtvvugk)s9r z_Rsfq_mpERcniFTG%jEKJai1GVPv=gzQY)Jl71MWc4)UlY;AC2>hM0NCH4pc&HCw> zpV6QG-n)K^;6KBrccO2xal6kH^)fG=n3~t;S=N8C`rg-nMGq_Cm%(`v)MwjOY`s>> zd&Q>TBm-%zyx#k0ai3eMRWAjaiIM1a@KKC+oG&?>-!5iB=VImA{FHMji@-l1_&6J? zj!y3;_DlSK*n1c7xT>ms{LD;FXwy={y$E8sm1?1#$*rmIVQ!OKlXh}x+6HuTn=8fT4j<+tgAlj$P7DDar!#xiXG%n&BAsrjDE4>Z) zBB(kekb5{&;A^9vWaywQrr0T@Z9CAx6M$go5<8LLJUdg_Jkg7%MgF(2pGen3C%vd% zFnNW?Hy^QZhggWU9(O~}roIioQu^bRWf}brAzm+{^-?noCszNUvRnNK2yOmDy4@1J zkb6Wi2mBV`eKuV5vab5jj->9x9{Y~P{FMGvk@yzyKMDTD z-#aq%sPNBR=sd@vD~U6uNssU6&O=G>5$+`9W}S}l`~l{<=*Jp~M$_!m>RW z#D}pg$fCNFfKBW^D^sK4ezTqwPB3Y6}}byf%|Xg zO664lcBcD3NZ*U}yhOT07W7BTy%pt3`dg*k?=NxcPcKeJk{wzxPtBJnk?)>IaGy-_ zeG&Om=ZoLB6{?-N#bfjdeuYA^JT1*pZn> zB;TU6b|n22jCij1g^YGcxhFwy-0B5;b0sRC?C{EYEyySL&3544;WDu| zPrbvr50Yotbqfx`W!>%A3p@?g{ctPf#`YbVSugdu6>`-$RvepMd!6r^tSe3L2bcOc z<=`N`Y~H1?is~c!FZbDYJaJ^^e5udmtJVi+>fYxaYg0Q<$NzAERfF-J4|$H`o7%Qg z@AZzdIKEQ9%c1x3H`9J3^*deH&v{=HTCmsS+X;OYZx3UbIIB@}QyP3R{*!yKcl;WD zfyg`jc2&pJvm)6d_=1p<95@x*l>8^*zbEtH9}Q*3_g(s#LtHj-&R*&b+f-DXe0)UyHOT)9k8N1uBmDEv*5zAmlEgy%*8)8e`7hvm z)=i63$APhqkXVr9C}0$&KdwQ(9lt*^^WU<+7}NRKC&_tRyD~L1~lY^uhHFG~R8MqP;*lx!A{r zSx$yt)uQgf^d7tnyiX!u3GyA|!4JgKQu`k4SDM({^&;C3Fm!ux?c-s%Igh~oN94iW zmUWHqTCex6%w(wqVxsu3A9^JFOSO(YwJ23D67dJo>uxabe-`~O^-%LhykmU=C30IcAoIjjrqQBN76UxrG zO9kD%GFz@?JpnH&(@aahUyP1hclgN6O;TQR+*0kG-+NX1s7bqTMfuanw-Don8E`AV~AX8tDiT#{KH_9Gs- zIgpo#AK~&R@;xc#&6$}Q5WBrl=gY7+%5FEqZWp3(XS*%WA^DGmpDX2Gm{z{phczyk z_ITm0B+D=4R%DYs=PF&)bOaI6=WQ&@ET}g~_uH`7c7b_Icw} zCb*OzDbFjlA2%~o#(eZ+aK1;sdhLQ;9#PCR|3HU$q}-FBXR%z|&qn^Nj=a>em0pWp zG^REeb4})XJ@PF)VP>Wd-?OTb5A&Mm1&CqeZjQ88MW?_E9?|C#@c%~i;e7BX=Vdb1 znAGXj3wC9Bf9$B#db}Toya!K0fB7Kq6fKW!Px?l6@SlC>*_|Ux-ISm6G(tzyr_Ri5 zMIE(YAfr2{L3SSEr(|K1nYVCe24O{}wTc8R`Rj(@I3KNiUNe;mP+ zq`n}Q@B55cgP_tFeSRX(b?v}&S;_rH@;pQI_F>4AbmiBsfxP5eqx5zqs)Ko!oTeCc z8L!77_t5DxGc&I~Ueycs&+$#6Vh)y7>5$BOdA@84&xgHtwtl(Y)-Nh5s@Ihppnv<% z#B*fGpS2U4`q$8olThw0D7UXYegED9T=Y3F5B4()@`kj$S#%QSG|P9Fa~lx}(H|*q zK90biDVoW+FLEyM{lGB|6CdHf82E$mD@2X0kKir9r-9qgzAkIDHh^HiRbTvr0W zgYzmwhm&i?Yl^SFf_7Yu^4=%?U!>cS+IO;vye`#VAX+BlkcCcfe|P$L3VsIgK0FtB z48B_*!3%*;;yFue?ns*8@_gsjz*F}df_DS=LylcfF9*KZhKrvg&xgh!=b!j4W0A3+ zQ+q17wFtLv%XD(o!Y}&xB;?$){kopJU&UTJO<%Zr=ymuSl(X;>XMI6aj3-f!q<>h(_eNb# z>fXb5x~woz{Djw~{gS64cW?E~%oo!2EV)-m)w7WAB4<;ntJ;EkbVG0R-Ze9GyZE6O z>3U@7ZZdXJyBnzD?&ivwnN6~O9zhh;Y3!AMD+}>Mjw3JQ_&5y8 zbX%rA%X71vYclP4)^g|@@NDF@J|gD~;C(h+^q~-VJMjM!X6QqQ70kj<$=8DP38bTE zRQf7dPs!I0{A%EC@!e}u(;-)$8W4H60-r>_lPM3Erd534Tflb!UoSX@{Yr1$f;0DLlEo#aUS>XBZ9^dS)}_w?jG zIQ;-AryuD%kp6Q?SM`-;0gr2lVb<=tYVQr;3*k9zY;#rr;c+pA-vzu6xbjocjt1iL zoOcZPd73{@qIlA8PXfOhI6MR;N1mb)`~~2Xz*GBE@cAoHKL`GEfloQ`Ukv;X2mTh| zyMWJ^a`_SY{p3GUFw|f4Lh!4|Z^v%|eh=iN;?mFZ-1;GvT05^0yxADMYoxEZ78*TYEv#VqO1A^k<9V_T*A1%Xky>ZLxa z{TE?>jpzQ|(l0>z!dcSmk-iw|PW3B9Dg8*VLHfI;MA)`e+YR>uG0waS>xn0Zd(`~B z75QSwS1$Q5-j|`?HS=&XjmahTz8~pRv!p+b^u4pBXI%^-4Kp+79wi?;+eE)ez0XB@ z9?~C>^klucclLX4O7$riQIdLHhJ5!RpOYR+`sGOfg-g2V=`Bcq5$UP=FZefr8>`ao ztJs%^fzJWnf$vHCf~~H#Ne6re{(Av@A@GS9@h`9R%Hu1#;?mxeVAx|wm%rL*Z*Sd# z={er+)CTJrB691IuMh8uxD?-IoH`-3ZXWC#dfyPuTJ<;# zg9%7h?Fauojmh%|$tLA|1NeT(X%YZ-7K)=Er$MYm+VnWm^FlK-UzhZxF9J@+OX?6! zTMJJF5ftpa!2ySXJ0X#O5)^m}`MV@P+JTrEZ2ZvNOKfWdW zm>)|8;PX2oCkx}dYiMTXCHa0}L8>e~6g9_tX<`Rht>&fZ^F)mNKY4ZjZt#aT&CI+F z{hM`P8ozY!sub~Re|ZD=ONVD>{vrIggCBi6i@%JUELV8E``u$Q(p+ihbCCPY$c(<1 zHJ(uqED+r2!gUvZ(dVnwQ?0slVXzbK7g`UTz~`Qhsc|6Snk8)JRWxAUjhNA&AS@V^NDbEF?n1b($})VaZaYe7C^3*#m~L%yVLN|t0G80CmPYN>#I z2LGw}Zhg+c7kNL;Gr-k4uI^*wOb`|aO0De8HAr8$)qVeW7t{YKLT&a&!V`N_>rTf; z`uS<(n_T(Y_Q5USuPnp-K|MZ?jenMSu}OV(+A}sRIF#l4sq?1MGMB1-{gs%nc%M&L z>W_8hO0Re_+K|im%KLh1kba+}+uA1)>%@Tq9wFs6m%9eNE4F;K`_^>;(E2%~(rPOhTvfo7yE`z*vS7pWl z!s0+~P5R z<1rra==K47)MHF}%>VTmKT2Y_nR=VYJm@hVC3fLCka3;Y{Ik!v$tyy?=Qa0ujmM>| zmsH^&@|j=v8DH@UjKWS1ZMxBG{Mdu^Cp?$n>uth{g!ykV3yo#?Uao)V{?6-rFw6Ks z7JlBIt+5l&25mFH>oFqcjUMA#cJbNY^O&FV84r8RKYNWAJf-mBz2+@G6`ExyfXT;Xd_rJlU-1BUT+kGaEZe8*#g z>!6Y(?Kuqvf6ilW^BH?Q=4XAL8>D-7`pi3hp5OS)r+mrw(wnIFqCcKgf&KI6B{lUIz&U5|0` z8efocebQq-?lt~^A@Um6dxNSM&fka!=8S87=51NV4xjnOEMr>g@;jgT*(~EvKJze? zRz?#laDL!kjMvAr%xTlOCCj|gG#-$Y51HlCz zDda=_Kj=07#3^~|SEN5MxL0F}d(8b_<6oZZ(Z6Wrsf(tNba%Enm1DeojQP*G#;tQ+ z(MgMXa&ck7W8zThM_zN6&-jhk{D;r@tJi$VXM9+??T|H&4~YC5yygpD<8xl~VXyH+ zjuvY3jK}yNkNL94IAGQ0X3w?gSv2f3rm-i>d?Cwt-ZD{7h@j^^=8t^FOXwn>@kQy6 z`@QD(ea26`=1o51+br|!=OpDSpH%O9^tsQt$5(9_-_0_AnMwj$}b9q#u8)@6?~d!1>IdW*LuggwML$gDAzz9`koT<7zJgU@v;jU-^tH zAj$4f89Jl4DGIn+@ZSKJ$sWGUQnIvdr6aj9X0eyE(=KGR%*g4WG|8 z{*PF^4;^EEHph7S81o-@-5>so!sTFK$Y}9DK_MbMQ99__EjB?lXSoyK7 zGJc=UHV*m_ak;@X@69%TXqs0+*=f&n>!0@M#lbMX!X7>O-6-h4J?53@KlGRvtCt=` zE8!)t=*eSV<6$OTw)Ls!CLj0#|N#)nfOPgYtexBDZUv`&N;_Uc#QjGa$tN<`I3A&;4xqH z8lU%?KY<-)yU)4PcZX-<7~}KO@rOfynkV<-&~}gKHy-mTkMR#_0rGw$FV8h?hn05P z2c|uq4|>fHd!-bW?{bxf{`-*U1eh<;4bR8Cu%bU!-i$I#5O1_l#&KuX4SBxmF?Wma zqD2@bR@zw?to7W4mCs{* z@9DQ$X_+z~WLoZ;2!?x`*Zi2*_$=FV7t@Zv@SC2eJ)S$f=GVMfH$EA5_Vf^oW^XB7>=jNL?9cS#2 zA>VbZdE;@$eaD)gI?gyCz{|&)*BobTTVNhoV0>o5nTGM`0`qgn8NXa$e&#si!^eRG z;!nR6G$M;5RP`fRIXy3W@Z&1Z&(rcs;h7ABXToy=zQJ!qN%GH|pErBp%^rB2J&-q} z1+>4S>0VOf-}<+ow4HR4bei-KY2Fddzn@h9dh_2md*IC;c(VuI?149X;LRR*vj^Vn zfj4{L{~tZzVKYsH4dr9~KFRi5{>DXW`f}UvYTNHt+wXS%mMa7D*~Z^EwN#%w_G@~q zCdT6{5KPABH2z-vy|dM~)A<|wdi6n2U41q)9T8{skvn$s!JlIq5-KMG^0D^gb87VO zY)y>G1^NpD2H5|L&gY0DW~)DYb$xU#vFSfg!*ZS{pJOyJth43C>aaA4Pi)r= zRz2@PY*0RPHA$3rgx56vpVA3mJ z`!#ZyH2Z(`?^8$@krtCyk+zcdkdBdVBi&BAlXN%f9@2fJ2T2c;WD(4NvlX(Nqb1gNVk!0C*4W9n{*H9KGK7vhe@-4&+D(4NvlX(Nqb1gNVk!0C*4W9n{*H9KGK7v zhe@;l!175KkrtCyk+zcdkdBdVBi&BAlXN%f9@2fJ2T2c;W!&vA}uDZB5ft@Asr*#M!KDJC+Tj|J*4|c50V}x z&HfY1CtXBZOjs@M!Jo3JLyi+-K2X+_mLhXJxrSYEXyZdL|RN*McPW*Lpnyf zjdVNdPSV|^dr0?@9wa?Xn*AKhCtXBZOjs@M!Jo3JLyi+-K2X+_mLhXJxrSY zXO>U8h_slrinNuqhjff|8|ik^ous=-_mJ)*JxF?(H2W_spL7vvF=-WPD`^ku80j|B z?W8+Nca!cR-A8(m^e}1m^DLiq5os}L6=^GJ59t``Hqz~+J4ttw?jhYrdXV%mY4#zO zPr8V-n6!$tm9&R+jC336cG8`syGi$u?jt=&dYCl(uPmQ*5os}L6=^GJ59t``Hqz~+ zJ4ttw?jhYrdXV%mY4+b(KItOTV$v$oR?;5QG16_M+evql?k3$sx{vfA>0#3Bzq5SO zMWn@~Riv$?J)~o#+eo*Q?j+q!x`%Wh=|R%Nq}ea9e9}dv#iUiFt)xAqW2DN2fioI<*Yw3xJtw3W1nbc}Qx>2}hc zq`OJ?knSTrNP3tw`$e{&bP;JWX%%TJX%Fcb={C~sq&rD>lkOqiM|zO-FlqL`SU%|@ z(qhso(pJ(Q(lOF)q}xe%lI|wmL%NStmxdcZPo8akRWt|xPHpofunXl=9;~iimDki< zmKSQOZ7pjF=B*5_S1CCSwY3%N%4*BY%2t;5Hda=wU*Fd?UffmP)Y(_w+T6EtpmXiO z@-?j^!J+cOH9h{WioTMvbxRsn_BCuCZ>?P0np4}`J+g5yK3LGzT(_YqKG54*S5v#v z-yiE-R<*vSv3y0r>b_X_ie+tql33-y&{$7Z)r!H&&Z;VZykJFN-LjmrP0d@Y$_uKa zt)Zc+ss=RV9@@HUZBggCjg7UH zWsPO!Ib}oDW%XqxD|&0Ix`vC(Ys-g9Ru%Qs7j&$uiM6fUP*z(JukILIvaw}NY;<#T zv}4P_imtLqOU-Cm>sZOU-i$0IWfsV?doZ@9mx{C%k zZHTNb9$34vdQ;2bnl&qmH>~T3l>}?Yi_4ezyVk56**Lzrc%Y_kY)L%W(2&2pu%vDM z@=pJj^8VhO@xqmry?vckWgCNKTl4!$LK~Xvs*8&1$2SeEi}nSYRZVT#+K&(@qwD* z_@;G@b!AlrOG+B+#^bH|BTaR&lF|IFt&xJ|wUL@YS6$BLb&;Aa8(Ow*YRfP27xWBn zSd||gZ5!LVYIynJ5PE6Z%Gi=v)!3T0HEW8N`K$ATv68Jr{h>7*L~z;ijX9f}y6ZP? zt=(L(F0!g|!}#Dpeg9zBmi3{gu_c>2f(2C#u{ER1xAw$G+sX%9E9wTv)@@z0IaDwf z>Rs8=zqPs}r@OakU39Fnsb{2h$t?uCcM8yQ_Dwue-IfH(oRp*tBtAWK&~b$!Ohh z-HPV!E%mh>ZH={E|COVrPjFSG^R!Z_dfHV4n_6nCYAZ195>u|SxTT_^EU>b-Y#dXs zx3;cq)j;9eWi4ArmW(WEDDziWG;gYIuI((SYz&r{H?ApbsIA`A&^R()(YU@cr?s)M zIyhd}x@K#zsiCZ-x-76JSW(_k+cMBvP+QeM)-^D)IoMJbD(_v@T3*)GQV}fb@7_}0 z)>%+D+|aasJg2H`eI95B93``rvrHs&k+_ z2E4y(pntS&Yp}bae55)@N-W#lu%@%1yuWi`RbTz!Du3JBs(1&4bypOPwykU2yt1-v zpuBhEroN5Q>J{Vu@`}db+Um8fqiy;9qd9GBTeozqEgEdB$;dcf)7Q1Cp>qBBs+O`q zLrd5AstsjZ*9x|walBze?YLk$3fxdpzG*|SzM*WR>VxvWhKknKhLpDV+S(o*uN+rR ztH}wD_pNSQ*VVgr?TRfOTZ3yG${Te@_BE_pQ_$4Eer;d~P4d?dpz|t&YZ}UHb^7Lp z`XDpY=Qr4+^yP>5Dt!-Odv|)X7(bkO4ZSEbf>s?>Ba;U8~r*Eul zRaxW4@~XambYe;``^z&k)>ik}^&+PXicwZry{fFTqCDDo^!7VP4EXD@-#KEyUyuDp z6Uxem3Tw-QTQMIROU7%U->psl)#c^ugH@rru~2uQs%xOTWN2B-KuO8)l2selhiWS- zHa67O^hk&2)HF8)d%L^Fd%K&U-;=<6Xgq%FV0C)-ErM^=}->FYvGMN4G|+YWu5uyK4J3`g1CKiu+p1 zMwZtUG^`yTFV64o9&0M;_b)G7+ta+YIaE|%JWx5(IksteaG-HyAhf!2ytBAsNi@F$ zD{5tZ$%dTK@#O^rh3jjpYyEBG`RlsNW6{;s8#m|I6cw-B(osB6R~K1Uv~G1%Tco=$ zfPq}Tbz{^Yh}W#|?Anqv#Tlm7sII7ZXWrs9ouh;C(Y&Iig-iVx7LTf5f%gZBm--8r z1_E!_33>VcK(W8rzarr~xqXpm4IWIoSP3?t;Z2-lBtU%e;eXcoMLM2kSmzw+xM^7D z1?hOUVVyIi*9s5%e{oQBe7<(P@dB%R5-zhnK#(X?2qw}Wz z>obl`oDZer3yl3dH%iBkGj4g0Hx*LfeMYXaxZeps-uM=-p4vY?;{^O&gLHpbczni* zhIRgwn#YHy3@04-iRA`u9%!)~Q-* z?WJATX__5>YdXMRJ_A>09X>t-ck3NKJ|oWom2%H=!87YFj6UO>41SqDS;k*^YcQD% zjl%589GBC8d!cV3+r2>P8NnxQ_)_BbdxVurezKpfY22*vOg-63IoAC~{8XQ9_}Am0 zZ@&ia)UMkU|67dQgSwCAC@FZ?0;tsAx;MFzxP;X`##@Yq$jErj%??0mr&01Tk!>-b?RTk=u+h_FeZXtg}j~k zr-@HjX#9NQKcO7Uo_v?MyxUmn>Ce;he?)u@@sN7CgnnLMlH^^8N*{<{M*athA0obz z_$$CY#sVX+8ei}^mH2r+jZar<+^YX&z(xMl#kxMFHkv7 zKVP#Ooy4c>wVYz&yDWZ|TR{9}i=T3=elDG>mRm_&{z#3g zr>*{_2qX!gN}LtNF|O-B$e%qI|JS`8GW{%|%agfQuaK z{*>-AlL2FSN;j2&(U7hoh7~)u`p4OZhib{xtn1 z%f3BLJoam?|CT;1gnZTilw>x3{av)~=_ppgOhd zamtx|R@W0|O??g!pCXRwrapfqzRQN6dMxWh+?sbQfQvqa{&2R+54BgHCh{Bd$9nJ) zKR`ZR#Pf*5(^8*t;-xnHL&V#OpG^KQ5T78vp7?{r_Y==2{%7KOcuZ417QehkL;87w zxW!*We46+W<+Kp@|3%CBIq?zT(hqw%E>=H$nEbhTHcvj5U6R+JNV%oNPobPW#M_Bm zdh#3Mlf*4gG3z)jXBTm+f8IfSuZ_Q&_#qpA7x7$P=(6O$pSYhm)I)vnD44E4@e_&P zMZDdH-$Q)DhVLalMZAu34iY~^+_IA|6ZijB_ovm~Q*(8FLd30cd^_<;8(uY00zE*^^UG(EVWGB?0p3V7d9gWj>bJ?9yuDJ8bx6#24D|0m_e2 z{>7C4LGriT_-`ctF7nfDHFgo-|DvwvrIfRWcK$DuyF>BA zuV~ZwV%Fy-@|XTw*WX$&te<@*;x1lf6>N&3GqWVyp8xAo1FI(H*EN)iN|dC-NgHB_+!K$ zw3X|@22<)eZNm$Q-($lg#CO^78;Rdx!+%74%7(v8e1{Fc5RQ}7XVQj;iC=BQKTdqY zhW~*0W*hzw;xQY(7=~BM?X%&R5^uNR*AZW5!@oy7WW!$|USq@0e~T`+)P}baFR|g* z5}&k<@8^iGv*Gswmw6Ogtml!uBVIl~C2pLrad~%|eEvp!?|B+Ohj`BET23zU-J0Dv zleqs}&A*Shyrx{rZ9hljdxJDoawwDk=M&hd-uLw%f~XOJ|`k1 zD)`jP`nR>ux(vANr=~B{{F})Cu)rWrSwp~L-@!rx-tV;kRp5#MFQkB6hH_LY=x z?fX^|pSo0+yNu;tNxYr-*~IT7o=4nTNB%~9Ki8KF$^UlrkF?i%Zra|T)3*LB1;5%? zQvUUnBmM2P@B6Ca&o%C`#oNED@XR=^h;x$j5cmxvGtU28B_}f;{w(o3I4;&c=$N-j z{WIh6xeCWP{@&_IDG%?5A%2fd&I*OYIPFd6Uk%*SB`rb!+vkE`2mCDKWMjvVw46L^ zUMPOd$6O7prLc#HPaUgq{8XQ(70w?ieY##aN)m|{PuYDPl)fjQ_J}c<@^=+S+G~R zO&YM;m3@w`|MbB4^oI@Z#e)LNASmvX1s&j=5yPp9HX9D@sH9`X0P$hn666SV*39>h$ z-EWqDejB(d_m8^b)_i%EazdwQ+$z^Zz(n}{w)wRJxKq2D6pnMK%e0(F*gsbipLm}J z)ZgYrUGE^CyG7$aWc?2SSM}t$_=ul`fRET2aZ!{1Xb-JgNVFmh$iUUb_5yD5w1+T7aC#$mam@QrabKyVOVi*nre$n)A`>tMd^6 zSNI89j%5$!Z{_78s`p)+-L6pl6q-WT0+)Vx##YZ^%HMCZGglHnbgwS=z3hkET;%U{ z!Jnd>TyDfKVx3OG0xj*DdaD*}ty5*h{lC)qKgoX?aH;=`Kh*tftrv0Pr4JJ)|A#3j z)~Drg`8ReG$4lW9XFJE`PYP$|6yiakTl8wu)ci$Ey9l^7Mk(yZrR1ODJk4g}#}q%- zotw3s2+O^jcc3v$^NszhG^6E* zUroG}>s^l)W86$Uv{3WkLHt|9cg@v!9`Q$rPkc<{bc+qo1yY~PbJb_k)Ckv>eNh-A;V}g&Ifo z)aQG^MW3yEFUJ!9DR7a$i|f%b#Q&}2@J9-fm)Qybv`@>o^lA%mWq&Tx_$AEq1%;;w z;MYf$oJ{;rF8oI*f12|JZn^p#i;axbCzt(0GhhUOOMUjT|E>8_Pdr4wE01!v09WhU zL$rIk8OC*rpG+y_%P#nLfJ=S$ZqNd(@%jsKW_ovsh z#f5*1!r}k_OqY8c+x1Z;XMxd9|Kt=_;Z}>E{!f7T*MUpBLX=|?|Gkofb@0c!K9)c5 z66NGB)dj91zx+);kuyPm<^byx2JX}kTV3!^C>(MowSX^h;O}+ef7Av4BXHF&n}2nB zzH@z+x#0B*hyABR+QjyD5YP4KdY(Xhl(_$s8h?oWa2N4iGn(-|#HWc*{agdnl=B#I zyFMRLIGIvNUV(0JY)H$Q&wkqkT=dFsvu__Eeh+6>l4t={(%Rim< z|0VGl?fHCW__vFk(_oNgT>SJu=a9b|xYV=V=AWzqF7rKhIori@-%os+_x-FoU$1bh z)=Bzh^6xrL3us}|9^g`+QeL>U>|PNZ7%A7F0|hgsKF!2;(av8$L$FEVWJ)1B$iM$H zy4=69{tvkDA6Kl)ov`^2=Kz;_=Kfd<7^R%|5%=5Hk=vAW|h`2$&VlMFr@rmoT9BW)YZs8|t-0J@?6W{f?#s?|qeueW# z3OV3{9|OnCDl3KEI2*Y1+oa8Zu2TG1A6M>@V0~g>(J2+WQF?`FFeEkGkOhp!^v7 z^HNs!{1wji&v(HuQ8?zs*L3|qrisx3T;|b2#)}qG{)CI1Z&OZbix$9T!1x{T<5N45 z-;aN%b3M;;!B@KA{Vwq9rx*h+kg>xkv|UPC-DuKE9)_T+2CV>>lI%Ay`q zcxJhOB)@&XY+mda*<>Hm)8G#9ynW-XzhQ`B<|azrn zx770x<5B-4eu={QBZbJ{_Okjg1vYwJ@R$q!A>h&vdA5GINAV*rK|6mA3whc_&MPkX z{CDYg8H{6Ca*BxWAJ+X~?O%Fe_r93kGB1LPMNNMZl@N!p7NI|JVh|S){=kHCMWE|zXiDT+g|QN zt$w?mawe|vD9O5Yi2J$7d5Ln2Uub@7f3dt=*FVOCO)GBDqwvi7Pq^TBxZvLhF7+>^ ze`Wbg&nbTBzs+y|H}MH}WU;QUvA9Cl^U!e`u+KPe#q&- zWuES}#aD~SpJ($A>l99*DP+I}zs3ds9Oc{hUtf3Oe~|oB`Ce6Om}URbgG|he_`eBU%{#_puh-2mYO6Fp^{AF} z9r0fSm-90QDA@2XR#`B5)R^j}SLe5yJ$1%_5_m&VZov-DTGfyLMnb%Xa!&GNu zEAYG&xz^X~C}%37<@|{A{Q=^;*j~cMABpehL89fioAtWf{q(ymy}A&%*nzyDmT%Re zQ{h%Ek~B^^lMiYBTQo6#Lpk_6MT(ijZ2W_GjB#C7*LZ7#E_Z*C=C{UWd6~05TtxoZ zeVYF&O^kOFx7)En;9{@xZ2sgG#3yX~>rYe8F6zTODF2(5{0a?N=cIol-abd;o7qL# z2&gJM{3VTZ`8Spjw?AJNB0l{A&3~;X#&rr$_Ph1%yDs?eUGT${-_C#~uU{BTRxj3>xt@N7!%tqM<=n}J4Y=@M;evn41^*UsX>V@7mT%d;KM_VbD4|9}hs zB<1_>(DKVz&uJI_KaoF|``LF>eva}J_#=hnx!_9_j&+djI*WO#UHF^Hk3To4IRBQV zGhE@qzXNzK{LBY=ztO7FXI%L2rThu5gIlR5&kzs2SC?z8Ukh5D$7`{|=i`AM&2RO8 zC2{+6d>dTkjFG?eTrJ14t6u;vXjA4*iJ2t=>)2n<>Zth~|%IV!S{(6FW3;fc<>-I$iD|)|0SN4P4fX zcH6$=GT>I7lcgHQC~(|DQ+THQF7n414|zXX#$5P62wd8`pK+uwu>OxwPCMhGr&7-EfXn=~ z-}`#jMgBi2XBXoY$577OE@eOSd_Rx)yMS9`K}eCc3P*g>cHeauar=4w_gv&01TO8J z;(;WI@g4*Qoyz^D!f~Eu^FJRaKFR&v0#?=o!z<%8$%O^mWc8V^aQ;Xkr;^|9pD!bB zzxPrHT#c8_Zj6(^{d7Hm?`0WR6QA&Eyny3-3-Q<~8ptF6*A$*oL4JJ*xRhJU@oMJ0 ztA3Ajzcnfx{9I=(d(}tWV0_prcZ~QU#y`th?zO;GxwNa6obM|B%zFOT1-}>$nA7++ zyWo8;_>C_3*In>Ofy;h*KjU~OvC0Qs`2V4B#C5-_$7L(|Pi%Ltf1$#mZ)-LGa~$6e z;L>k-?6+*n`6zI)+kHPcTOm|y<2K+<{qumrA)o$gp2~&m_r!Bg)&=$we@fx}kwT6r z9P2Ob+g_%f)uHQoh;}uP_$9z)9_3PhtohZTa5ANkUh>=HKUV^G^6RcAe;(sM*1qNe z;L>mHtdG@ie<6SF0*@;7OqTs`;(O~feu*Z=+dFmr+im-%YK5m%oL`%OOSu!adHrD* z{?AcR1brM-J??fp0LQd|Eo>els~ZqxFA#BwhszJI<3EPLB);q3oY z*%99ZF6D-7vJC80)@kmI#J8Pc1(S0fjils7V;a^+Y<8k6AzVYIaGJ! zi;DDv z`)LS2tFsvo63^qh-$ec=fIIciGm4)~Da4D4DgVm0-Yp}(_X1rY&65$b__;qi&(y-k z6rLiOUvB}PmkAqpy6}IO^4qzOxR&jGig@U28nF8372wiuyLb;Ihh^n#)bqF9W|vBU zTRNOtt+firI<-{Gx6Tnh1l+0qpCiBh{Pf2z@}D68t}-pZUK8UmaIrI`0~%m=;(dR5 zT=p)}_$#bzjfFFC`y%mP;zmgG=V$4J8!g1U7PPpJsMUhRT^(UMR9+|vKA6E`@ov0YN1$A}+VtSdru zX1wGg|80Z1{;@92e?Hf{kisc6h4cWIaop9f`F&Pe*Km9!KHAf>w95#G>nfVU^|j3{ z;jqyi8IJTuN8*v;aC{)#)ju>C839N4P`I~$sI#L#+#Mep9tn4hZZ^7x24ek@c%*yj z@}d=m&P?H+=wLM5F+AL{B^()y4{tGghC2o#;qK9afi1|A@+%C^cp7WCt!-7nUmhLo z?&$1~gyVsNis48{JR(SRus1jsEEpUeFv8XKtINyk!{L$9&TwtG6RDBmrCqU@5pHXa z*O!FD(IJtIpY?(K;27%B(9zWw9gGN492)BHj||(TbPaSw2PtG#pro=R-qDMiS4Kv< zhNCg`L7=cX(jV!HR}BrX9gfB$!Lgk>qMBIMftuX;~kxTC=L6rFQiy41mhEymoLX9_`uk+B2a zbktdOk#u>ocxi1sG(5C98tJYY9vTRSn!^LB4G#DNk~!aBF*G=cZix;JrsOV2^p$RV zYEDrd*Nn4wa*=C&S2V|mVp88N>Ejac`;n(DkdNk6byxHcMK(veqO%Q!!_XITz+JPs z^kG4BS6`%iv_FD!MbYE0rX;L-dG%;q*BldY);Z%W=2eHvRr6Ma ztAz*5~^hIyR%#Bk>Mp;aj2ukzp)9NGWKJ4vh8#j|`2D zXf>;VMvGC0x)!Edby+CFO{0Us7%cnh!7iBQ*;L)0cX_yBs2jFdWmj^8AxE2dG(rod zLb}h6zDD_jSTgfFy1R!XBO@|&(P*e-WTSGPQW=S39j~f<{i5>o!?o}bqFB7QMr6q@mnAzgd{li?QWj@@ zqMb*h8%5fyY3YhJM~25xsEqJY2*}UZ0@e&hH&+gc-;$Jb6k-A;;j-@TRgv-kST_P| z2FGP}sfzYTf=AN=6fJ%MogOvkj#jZ)bST>GUb4-w4QRubj&AIvxocZh66)xU)Wa7p zg2yu$4~8%Iw-3C};aES<4E~!aAMPbi2fQ?oM9Q3hhe2a@HS1u(At(5Yx+lmbjbzw;g$D-Y= zOF>2&*7Er1h)xa^4tIvT;Fe=gBB&Bqs2kZA=@^c8Vta?`p?AkR`Y96WQk+A&>f$1m zeKgw5{f^F65YSRbQoM$6hw@I@!K#OaO|`|9O;wS?20AvY4jWDtkxvo!L{&NVx(wKG zc++SH{>%kOEr4eAM>~f*hA{|RV$>`shtjD2aKE*0RP`(d4#iU61Iy##VQf7+Mk3(> zy^qy6dP3SFIaM_^iV+#rW;tb;P-pC%WqS`HBixmA>kJs)SjXr{q#M&lA*d7_kI{jM z{)ysMI)?}B(UGv;u7=046PAsmQyNxOwU1{S`!pk?DpERCG@q%-tcg@wOcs`;T~#b0Vdfn=G<`FJc|qu4-KPRQ`8eJ)m@UDj@EFg3JrEEQvghN75J6* zAjHu(G!hp#E!jFr=~7#VFy={osB4HCEd!X6n9OBM=)`871#xI&5vWlY_9DrqqW)-B zyx-!)aEqp(_r#STAHd4PJV=m=X?kTiU0$)f8e z!2$Tq*xV|`50Fz#tO8I4TIQrF3={<$!jUzDBcm}HoJhCg6kUhGKLZFqBDnJ`og2#XteT4$uBy@al{OWZccQ`(ipmIsYD&>MOiwO*QS(ZKqtwL zy52Rr%BQRj)j_sq`lFIoNTVte_B<$RW-DuiiWw05paw9lf{I(rqDrzxlB0tPcXwmB zA|ri67@&VBy5J|SB?kNQ^hzGLw*`VBF3t!W6i&AnE$w*XqGQB9O;Tg$6yXIVbTiX z6hJ%KLeRQ=7{0D=6^rId)`e6?o{kR8?e&7Q~Kk|X2ANqidy`0Oa1xN3J z1j+ZyOs^fpMj+bVoVLxvvO=qtSkskNmL*$Ge=<{P?v-;S{*to3%GB$^WvzwNL|9>1 z8ssO=JHnk?;t|WgLfIVPM(h9c#>1%XF>6YMlscC8WKs;qB~93^2Y#U8C9I zs;07rU>JYWR}M+lk+t=`dexe6u!amZl}&OKJu;*`4{S#&*Df87^ehdBdpB=}i!nSh zGzgP|*vA;md*%97_~X45$kEbJLE%=0ww78Pofcr1B#yD(5G9U@S65Xv2V24|W##q3 zu+iLHulBx?($dwT;41kUSn6NuR|)+?*tF>Vl0K3hv2%snT3Q1oP*1h5NycA|$k;%~ zt8860kHc=>fY*a4QFy3FoFAFqPDQM!vEnX4b(Z6Nj1~w$&6?poi>(Q!96oG7&!K69 zLkK%y9>L2jEv>GvEw2dYFU?W!sU?jb0C_XA=>7Vh+pL&aUR(SDu4sf{bv zCXOOt-oVk)Y!5p-WefP_q)u;jmCiKB^H+qMI&pa-62U~mZX81bA7eOz+b|u7nskO> zC2)X2mcgO!NEjC|BF&K09A=Z&tqT{ZkV8gDz7jW5bl+sEZD0ka9nM1&C*aM9LF=A{ z0|ecGk~lRY->*;U$~(G~#snuSMhHHYilKByhr*RL*z=^%Is#p#C* zvlytvY+_~fPFNouyD6BMyAU0&baSU>Zx3|Ap+}sni)%hkHwm1^E#utUk*Tmz4mgr_ z+xc`_WzD=tG)qTeiqtw?MsVtH+#SLp^lP>W=mTCvLB~3;Bd``~nH`Lbqd?TeNxdBV z1Az=g%H*hD#l+Oy4T|sVxZow`n|&z|D~js}D!aN`V3~MKGAocPAz33FQ9%|73Ps{} zlhsn|tOa^LSX%^a1st2=Pd&y|&VwuwFsI?93#)b>cJ1pK8s2EHisLPweB7vtSKt(= zHgO0fErz3@yUe-vfdYNy0&cEM3rugds-(|B9%~{A-b|+EX*_MBD=7|Fja)9Q=t9$% zvRAtVU<`H)4vq9jBC(9_X^s~Rbi`^0LaBEQo8yK3IMS*ekV|s-5$lK!*RCAEt(#yl zSQ$XeWj(h}ZY17n9|||qcodDof*YzD(~;C*iN2s1cC_??Lb;AHoHPb#jpM|@^y-Oj z&KFNmAA{Mu1IuIj*hmf>s&R#J5~_45qz@;tvy=nOq%H-Uny`UJdD`_I3HM+G(iahB znXM^d?V8mf<9eRlt&|lp97k`A8FI1&o15xeqNAJRiG{Z|niwq@rj%QwK`hUH-dqZd z#A}-i!+`WCN7X0;2;yQ4DvD(rHyhRcp_JuZWkJ1=fIF7)zTu&9tnl4o*qouRF;*(M z!n;hN<(PN~S0d0U7u&>V3U+F%kQQgq5W3y%Kvy%QoZUE0i@>Yg8B%$i#?2`6pS)^^{Yn??dy^`PDH#FK0e^rh)bid0)Oxu0K65zUWx=+0{ zA0byY5V&ft?r)`A3G6-)j!VZ>eTI!cv8|=hLD9rTa`KR{ zINHX^h*}3M13FZgtZkt&I@li_bXeP+D(p7kqKYh(P+RNZhMZhFvMLqdYZAiPKp%N)9m+<dFMz`#NmD{HAi%zc8m53&WbFNO|d6v(`6X+WI^yJB0CLn2WYk;&bSlUN7koMjuJR$6OS zV;IL$P&s;5^Cnq-p|)PUTZ8zZb&Qwx=!RY47?y`&**N)K1qsym^bW3X@4D49;@~{}1mT3Pf zb$=eQbZy%cxwK}4M|3bC+|`$2>m+27SR1iLQE`yuZ9FM3b?tI?eK8-K<150oDvlrD zQY)^!<^QSg@bhId&+Y+&L$xn+2$S0$7vrH6*6MTF%gGHMo;x^nzui&?R#?9EklgTX zPTUbjeGr^VIKat>R2aKK?aaD_rZVDEDGOq%AO6O5Zjtt_wRIGgc3i%!u!|hbKuxd% z!NmkTr-fTtxV4E85+3YQqu{h&1e~IRF1j3mQ>AZfN4nvKqe3o>1+D68g0=6}kwiCU zIFE4^bzD8zzeS6+4`#j}&R=4;Rx6hh5F$le6KZa|GA4CP*oU->$Z8sk6=Pu8u1e52 z3FCG3N98(~OBhdX!%9T6rz7fMcbo>Pq;^CFc<}_Ad%xue!WDgyu8lR;JiHaCjZ$r>CfKA*vy)MlIn*WFU5BPBgC=s>fBm?(ZD$j`bBZ=tYL|Jq0S&~0 z8cXs)t=WqswAxAeR^xXAku4b`rxH8g$`nb)yfG8O@({j%a3WgaWn?S8UY2gBS z6xERPnpa(5;krA;Uqt_8!gY<}t`z2!Ry8LrvpL%($||U56OtWZ)l!;fHxpR0BXQhm zZdOMp@<50a7aurju0*5~^^$-jF1Ka2&cSO|J`?VYjrHJR&h#8=gw(N?ggNDMBkxtB z3UY>$9)HvIN)H4o;qqYRSZ2`8aqEy+AzeHYrww@GL@&K;arhiOKH1wK=$hVAnI%q6 zqcpTOqoIzM%T)6n{La~TB`7uXut$kX3&B~AZNgUyINTD@1CTx_0mny*gwuJMn>8pb zEk@rtLKW8;`%>D`IT&uKdoTsgwj$1}$x5j-od!h`7j6@_d3=TN7FKa06UlVU<3|Z2%SNRUPbbL>nkV^FsP|Q@LDjnr$st zS}3MZZ}IHrE@99utC)EHV3u~^5F-8AdErfTKp^vWirqbcLXN1=LV845pUFtfK3&sP zC2@Ew$3*FOr`;==7X49c9HJVVQ$r+)3l1s4Sap%!SY2L+^UeH0u{h~9R0?cUwxd$_ zKvCK7z)JOulf;qbaY09C8g~(}y_2iZ>0N;eBzLw6&$95f#Wj%G*@6U?L!)$%7kZ^0 zc7RUdVG4vrur$T72TWE2cf_ovG!d_L*$+XPxdj+d4;O@cMhDf)1!UYD+Z}KUHz(R@ z1rHon6s#PX;X0)__Gdz@#n!>cNO9Ina8q7-RVG*WXe>Y3{)FDh#I-#)L_c$DWOxWo z?CuX)kr?`ZszU0rBCj{Aj>z1VI_-ue?wuJTfdD+aA&0V&cr>aa%Q$?M8!@)`RwP{) z`q?BJOcL?cPo3kbxZKrl77%B@zcI1QFFx>gO<8*C|OzCg&wH8+m_6I`dB7_J71X| zPQgP}p~SYK_Voqpaj&I8`Ln#$f;XbbCDtfx3+|BHEW4C3t;@aBozNoQ`*rVVbm^S9jzncU}o~Q%V_Z4TVE)p)LjazoP3;Ab)s$01J6J|e%Xc;pSmld_c;a zO_!nSiA6T4nSIvfQn`YvLS0V%83=^e#IV^!nAkc>cI>Gl?e#idKC#_nO`GG%=*r48 zJaJVo-JUD0%UmZ_pgN&-Tq@+SM2_-Rvm91o2S>MV3@^0TjEr06(Ui+gQM`mH%laIaAzofmBY4bq z7$G{j2%PFV+Bz!W*Pfv4p%8Zp>A;hd-AaAMmQqE#q}Ti+9mCop$?>A>&^r2ihcL1F z2IRqVcpjN9quP&YPm8C_;aD7-zT`>s(ts>V*5*N7VwGAtFAlgcYu(Yb-js#dm&D!l zJwjX4Qs4CAE)=&pwOLa;aM=c+!e}BcMfKS3h`UxSWjC`*uHJJpI(X+v|3=Q|9X9<^ z(S%w$@7I!>i}btt3Cms>!eO_1KTY~oVsU}(ZoRd|Q&D4kqG-9TQ*ojSN5+~Fs-?Cd zHbx1rN0>d1?Ibw4W5#_Y93i>wn8jqdj!#B)OJMwXGKWY+O2p?sxK}8bFrcjnwxa_2 z+MT+bBYlXS(`)Iy481A{vVZ=Ar+D2;O3H6_DZg_A)-kLV35P(xcE;TrSo2eP%6J*0woJ~~fJC??em$&kyssl}-<^XqY4wt^A^qGNeBP11 z(ReqWGf!_HDu^p`a=lkIB(15|Yw+}(l^3{l-~ltmXE$j@G!QLA$z%H{W(FP}Qf~$7 zO18{o;=gK?Wi4+ZU@Q)lOIjoyYpwn?3bdT*jS&D?q=M)i}wbC z>Mdt7ClarhGd4#1GY{V1xQL2%?*cmKq@eEay;IyyZMN+$`*Y7}*!!`Zll5RO1PhNRQ^nY5$1Zvkm=NE|?`odj?Vq4Be z@*ycX`ORpM!&oLN;G{FJWla>BPJ5Be3FJ_^^ZW8r{9V}d5m+weB@e^*#f|k;-&lIs zWg^Ngbs8=1>~N7KvB){>=OwtSt_<2oJGsfLT9#eD-Wc^~~dVR2nW1~=BztVd3Xc*W6(iX2%H zIk~!|v{QxuMM1FEBRu7}*GufXGow4NUaEGhtck=@m0Id|O(=y-aV=#CIosro7b&lS zQx4sT9HH3fnfoATtU#6y2j8fHM%Urha9y}BlrRx#uU{g}aH;-9UsK#p{fMdR1gE85 z!d2q^$~jZ|QY>B`gyJnT#-(CGyU_C>=f8t?9SI*qBrCC!#r z=d~ztNSt)h)2*$Z!*W$gYnE(tN2o8_3rYC)=^0&@zvSb~U~$}JD)XOEcICxmwb55! zGA}QS6o(TSYY!BuU9FBIWCl3*feNuYKdz})DJLHyqmNa6`6R`N+HyLVW{+5Ps;jY1 z+b0I2WNnqe{vdWPE~a_*7ASpp^iLe^ygWmR9UelM6>tLNp^KD@da4SUv%u!CIxir~ z3y>@7iQtJ|V;yzCUE^);Xxd3zikZ*&Ll*7|ka(K{bq=OM+$r0p-L3Nj%bgCrT(mOt zn9f}-<$=n$w<-R_J)Cs;GWps5C2~J+I3ZvcDz9Roxr{rnM~%h_+aN)&%c) zkw0qEk~p=oZC|W4lIuS9Hz@;Wgc0bMH%#f*9AIgvsKARI{8qTd@!4$4aO+EScH52k zo7gO;i<>T!H2END6E9EeyXG$JF7J?VQv$~g$kBUqa<@Rg_a)dgkm<-JEU5c6;8fjl zh!0qgBuR`W8M{e&UL@ryQR{JghXpCIk#jK9X_iAq(Rvs^ zpjC#zW-+YlBqHv3`a7myKkm3I3CMeCh@ zg11PD$7NU4L~}+`UUw@lM%QW;4ApCJ=DUDhr|Rr~oh03Myq?zsIoJ-l31!7slbe5O zj9i@@g@NczMB&_`sG@j$*J{cob$jrjn14*d`MeX2L{*$NEz*4FQB2cHJ&$CcD>p!; z0TFm~awS4L77R0DubTSwyoxkByC%*$BAV(H3`$$zY=$(D@i#9LT{@cfLJPa1!4Vz6 zVT9f$h2=o+=GYN+paF#wr$(?tN!lHotZc1y!Rt_uE>bYj7aZ@Sh;NeT2h@% z?Hn9+zm<3YWpn(uh5egW{kt>$+kNSOpJcvw(EqKR`tEX*?@N0BO9%Zg2KIm29{zUY zzd-;0s4@S=5%Yia`~PP2zoY;4ApX{1{o}p*KaLOo_C)*7Ui^<2=KmfB|7~~vZl8b5 zX#d05^nYEv|ApZH-)GamjrG4Zg#S&pe{nzDfAIGoo`HW2TL0+AzOSXU*8W#U((m5; z52N2-4Y{`Sx6%9iJx6V0CyW33>-=A;g8zG#`fsP4|8}RszgkDW?fHLKhriC=uHRaf zf9A#iTXFQadH*Nl|90{Dx0jgwqYnF@e}I_&nGXMZbo_t38}T1sBCd`Jg>_aed1C6oO;88iF3cG-qzpc%DMuIWZ^J zc*hawFN6xi*+?`$JK2pFC3-g0Y&IjReP*g^LoCCbyEAo?-*Ihuu@Obii$B6jaj&#d zKDBHBF9Daty2LW%yGB{hlsp(W0h7BMt+}HGUT6l~_u)i&?kA2y$+(N2DQx*GtOm{j z&aR*Q75)^yY0^Dy5j2M4=p`=`!iET36Hn@2OQ3SO0pa$yJ8@enHmZzyuhRS4$lWGu z+}yd!z8QTjcCK^*WeI;gPq)+h5yofg$5WElK385PchxTcSSzl5hKMq+RTbiD6Y6TS z{N2^0f^)p|N&3P%{niP`?S!Waqp)Qq+Xdsc721J%m#(;?1uKQ}@C5jh{>)vk;QX;qF<8gd_Mx zd}Dz9u^HL`pWP{OrB_j~m93jPFE8{?e~;L&9<b1>~ik$NZlo0QvyzpCR#|uuDdO zCzwZq(B0SNorY_cglN=$oP>W{%qF-HhbVYQnrwkHU@oB!*=+dFpLrp(LcG9&ylEw5 z6w6waoqBvAC_-{IKk~?`-;aJx-D!y3KXpwVWo2%pW@e^Z*2%2kuu6lccgw_+W5_Q{ zN6GcyDk@3VhEwnuj?NEd+Q#M_4K^#fBzW7!6ISbVpl8h4&PIpnkZCi~QKK*eLOdahbiLrz)QW6kF}cUz2NHDh)%fA!vIRW9U(0eRWX!gjnmJd*>H z;PkMJ@7UZLNxjNqOa($UMDQOR($Nr-qtJZrBbnkDw}&gm++&r^+{3~ttXwE5ypKkT zb+=F2*6Xv5YO_4iCtQ_*_Tl^A^L_^Vo)eB{y0LIiD&!IdZ-S%{Xzb-&%+k&VQ&`A% zB2L5h;G>V%O=Zi~+3tK{(y<%d4N&P7jgO3ADIsP&oCV?Otk#o}cARI(cgL)ng6pal zj35~NgJ0sLDs^LGJ2IS{6#K6!0B7ETLz?7_Xlj4sQ$O85Uwf z9bT%6!IND^pO-mKKtSF>Myo5hVuLU@;K(E&raLX`z!a`Uy5S`x|b!^(d zegkz?q>4v)D3ikGQ5JG+-5<8Q=QStTuS3W}OCP?<-%m$KVz3J|PeLG^CP!?`)esp% zZ#18@9J(sn@4{F{JXzR?NIw$MisY`49-5*j{1KX2dLbyum@jm5Rth6D&Xo7I*Ok|Z zOurW5C{9(#f4)F@63xm&FeDN;cnm+*{NdPum4 zMX&yjXoi819+46f{t^l4DW8`-9FQAN5*qSh7upj_p+N+lsYXHoizz1VF{WP15`{^x z-g^u|u**)EM=aSMFZt|;U_aE9i;8sK>65(<9(tc)y&|UH%hZOE87HH9?!U7NMz}klHl?nvGdSzU> z0veqcM$wxG*Yf2Z;S{nrm4jRUIgxK>-Zeh1G%In3dPYjK{0ND2-#dZFblRwF89{;k zw?vxAgdjQ4xpWx7i)c4Ql{+7|q9u{wEgp&>!)sF$GQhm~y$pa30ZC;B;Q&jRH$Xp& zaJ#B_YO!aNvQ5;PFE%qez44l0qCNV2FBEZxH(WhLljktvu%~0O#PZnBa?#c}eiBRw z)$-r)0w;T3jiq^vv5B)h%A^p1zA5u=MaYC?wq=2$p^Y@Xtj)%n05rh!`n+rkwI_yvo`-`e}>_&s^dY z9f^_)K?f^Z;=sVJVCgr)a1og^c;u<%UQzjCy+^ z5EJaXMS(1X?dMOyGcH(~Gzwy%ON(FZg7?Rhz^`B5%Q!0pJiChVve12fnm7DcQ7(FZ z3^8@f$~ZyeNe+>t&$w*emr&*={wbBG-~4ak{qk;WuMiF?Sfm9f@eO0$h&VfFM>QJ! zds`?&*e&TH99TJ#mbPvoDWD5gBB@M6q*1%&)$B8I*?`(vxiZKqRsy?e9@JZKpqK6_ z%rwzL7a0Bm0CsrMFMS69xSc>Vtz}Z{-Zsp{1#PcO6oN1IG@Mg1OJrhvzc5fO;i_?1oI}129S@BN`wcM8rF>c~MrwrrS_*<9^5? z7}e?ud_9^lunR^BOpxPARJC$&D1|YIdSwco8p|fN!azCZN-C~4Z=(#|xUgvCky6@n zszt`2S0ywXCX?%@2E-;d3xz}^(3Qo#O3DOJC+yuS{CRt&?` zk%~l~@Ffl}cIBKvYPH5PdrjB^3&TKjgNAq-A^0oFmfAh`#}!$LI>yr)eX{JP5(yE( z?K@R(hWslD;Vl!v6{SCXX?3q)_SiBl&MtxtHYRyL+3OHDs4nzXo-*@2mpUkXzDZPLZ!mW zpN#c7yWFnxh=*()E8!_6nkRVS%e#P9^zn}&wb~ti!y}7@ z;YvX{;|R!oqkBZd38D1ZUx~86<$TxUN69Q(^1RJiD-;AvoO;$HI%RHNEcK|S{UMZ4 z$3IXf-bMvRS+~fAFWCdskjE#EA4b);*dx}{!5gS!-jY_CY$($c39rg`WvV>+3w>nQ z5qYvHEX!}zWQw~z@;wj*b#rsiWxa58#63_-Sor3x4)*MgTxaIb6vQzCi9>5uPUhrT z?GA*&?C4K@7@8VW%Pr~9BwPg9wTmziVIlHVdyP?E{F#W_DMR$K4?qkD9F%f^4{~*W zN4WiFM=iu?xKX4-d!w$VP;q99(69!vr$6NxtpYK^@xmHTTs$`nGoK84Vh;!o@<|V{ zZK)i5VH!Ul5KV9bYpEA+v|ncNrwKPX4V)|NxMy|DhnRF-yO5j>o&EqMDvbqbEmjCw z5IZWNrNdx&3bk3(faT~a-ka;I_4aJ&UbRKk>xx9D}o6uLNhLq5^v=BS3E1b0?sTD4SKuo-1u2a=p1 zbF8dOG#I!+;qQ{LH$Nr~Q22_t6L4y@#ypCRMRb`a3L;~FzPYV4>5Q}!CGutIX{$lrl9yzyfU z!>~OKgFJG53-MI`XOnNIfF_F+v)wPfz>o+SScQ6V*-J&9;zB3O97ga&G%V~QpR8P5 zv+6J--X?s-Vx7y8COO9m{G)Pn1}4HMKz?eN!%g}Ww;nymQ&PVU zmlv{JT(~?LE&=~HF0(~LsczdiTEx?ZpRM}#h!8(}z|-_+BkoGvHdMrQ z!#w0Gmo=vWnqjYXrWnQRr}HvqdDwNXQoTnmy|2n2xgsWr7e^Mhs;rXglFwC%CZKbO zyzG^i*%l6l>~Ys9S%0{#B^#5^3og)3kJ==So)BgTzj#&Of-#6z##TkV*#`J}yWoZO z^S0)=om%?e0$wRHK<4_}!zV8rEkENhAFi5Dkc<&r{am6ilKd%Lg#*e_(3FKe2feFc z2xMX`*CMVj0GWiZ^wT8MyTTQQKLfC^l!Z8-{WrUYs7NtWJadakUg~qJ*Gu8zhGkugIVfqZ3z9l zR*kb1)jE<2R4QGl8Kf|q^OUZ>O5*u2(WFfGn6lAw*)YPW7HucEKX?KaRO;8-+*_gC zB6Ke;dz6$uc{NASHwb%ragJb-lnw)!gEdWNTGlWf7TU5N?-ip> z#6PHppEO{B&+VuHQr63^f)6rX_#oJ>J5<%(1p2fd&U-~;a_euRuQ!|!*JDDoNxp4= zAYCZJ!)$eZ%doporEv_S3l`SnDS~rD)i+iMeruz-|6ja_C zH7v5oiQWhVxUk5U_j#H;~!DQchD@S@hA zsG5SOIVapc;0;uM8K0MMknI49MM|SsQ9UkHYzHthg62en7e%n7{s)I&!@7{5=~Drc zRKmM%1PMGXL7G!eIcywL)h_zWDT~@Bf)l*1FmR2=(2boS7CsA-6RIxiHyAB;J1WAm zQyB0Nu%aiXqo;6C2xqwqf50W4f&}o=oHg4_V!v;GaWTHF!0(M=(7nuIr%L#Xu~`~j z-Hr{Y>UhvjC9YQ~h5xw1K%p}M(*npqYA?--X0M4OwF+it9aS2w;&gE9fFkea#UFOZ zavw2IY#&N`=e;E>$lVIvW!&AWMCL3DOXqBm0Q>Vouo3Hh&9}id-%?LK-6acgs}Y`D zvm)F!A4cO@7^}`|mS08iHF#e9bUBDKHH^fum&QWkrvjqYujQl<@eDx{E7awnyAHo` ziTaSH$nHpv)X+E3Mutwyn3p5|+6~diRR-I>ZkDhsG^Wo-NP6D4`pO*uYNRJ<3%DD$ ziKcD~xI65)&^53|$8#LR-Ai9ft~P$DA-GH;3w5w}(G6WqNLRr7XiqeKOUA+Tj+27W z%b$f=f9QhF+|q{j1`|yFxEM_tGlhB!-&g|$WH;7xDyTO`L{0Z6UrP$X;1iey%x#kd zRQkUQ+k*c|I0={nnP>u7np@PY^3q1a@wJjFi9&@!+R*-#7eMOp!4)pK<+XC+vLrNE z9O@nB%9fP?Y=OCVN!?o0-QVOd!Re{paa*O>cQ+Wj;l(4Jr|hZ4;8H;qUKxPSnL<20 z)3IvKYAn3n1dechX3@V7}xVGYT+65$t1Z z$V|}8atO;E-iVeJ@H25KYGmCn$6x{C@|U&uKc@Z4tDPDiJCU}9c&JU1U89zd;PwEE_aW zU$w#3F=ZJ|F=;7o1KD?`)n_0SxjnJ6gCeu&Ir(}3j_*?zACrc#x(aiC_5_^}LN3Q! z9}}I4a9O^vL_SRP&v!v@RggdGrfm{9T0>Tkjl;SL4Z+tkDiqHh~Fo^SDHhhhtEwXe;GiSSkuxSk8OrkFC`Tw z`i;@U0PAeb$zanwixFm}zDjKV=b9alw65t%e3r{15{7hm32M;8OyjYdJq%z0YpAho zbA;=o_APjG+CxuT(5HD2DU(>)N<}Y;b}MGw{im30g@EkC^mfFZ*`m=lM}mj36g7ZZ zHTiNB>Cregna%Ds0D)Eb+Co0|iYg(p&_6>&wn}O2vbCa~b|}nEW_<^;1m%H<{L6)( zO_Y(R3t{_VIwJ#iJv>S8W6EISUibz3q!fwJrEFlMh?CK%aUglZbzkNiKu5)f?^Kiz zV@5=(^T-Wkk-$Leccv>$j(nX`&;{%Y68=*nUppy6JD}-A&ZRH;8Io}#$3XyyTF0+n zXMb=*bB^~nX3A{PVBIz+qh*8(QyF$w(qi#jMhKidLsd9UENVv`1&ljiKU6{js%`lv}=kPi5< z>`$+g0E8`OZ{-2JkvOm>=Ft*=X-y-pg&8(hPm_4p;Y(5He%VXfJRO#{OIj-0Sl{G}e0Kc36XPTikNN7%h1E*nJo z)dVea^S;3DoB|2!49xzHuzx-DH348f7IH7id9Ro*Y#2KQyd`Rh;K5naxL=%^+Tbk9 zgXf_r=mk7-$0By8{W`QLBEdjc*!C!I{F)?BtDcfT z65*AsR_OM&l`Ti>Yyc_8H7AG#B&WU-zkmET1ex9(%rJ`0zXceVw0&(N>|?MUUk~{k zD2^uJ66dFDoY-!oFu3Ehd@iO238Gt-lI*C3xHv`#ZdxKT3irElPpK~6Qn*4p_Hcr~Z7fotbF$rA9? z;iARM`IRD&^z1$WnV~^+HAAdaNqR!)YD5Av%gJCLI!HMl(5hY`nHj>9O6Qd2rz^m_ zw7~EexJ2GRADO@MrEhF~&}e!`;2QO}Iu{8!7X>&--J(DWXqJKnrPV>Byaf>W5#VxOZtXeuI+<+gyI?(?5WuE>L?qA zM+^W{`JO=mFb(wi%Y|UA3!wT9Rq{?^^-+x*hRrEU8Y1)NO?R+`gX@P$I}4KY%}#^9PnW_w@2%OIxH+RK6$mF2VdES7LeDezSVem511 z+FndBQ!H{&qniGqr8L0kYc~yqX(W`98Q={KK)?#7C$3Zk^mXrmiN(8?k4;va84{km z*9UntYEG1E+O@`^n)Iu0E4aGm761#*%1UQgp(K#XeqGEi}2=Xq- zQTOB~n<@yn>FZu03nNAo9gTf0gQN>Nj5v#g>A2FFAtCBv?pa z7`yfOC?ki)W+NDB@%4i0;ZSDhwdnKpyyB7V#;Sy@_4-Mr2VN72CbriVf`s!pLdcX^ z$UrNj>`Rjp+Z$l%{b|fuG6>tZGmz-{A$ZGHTc^WD@PfUfO$QpgT8kqTgj zbTQy3x}H%<=}2)@U?bFI7uHPh42Z*Y#HvCNSa)E7^W?Q-Ni1|iqw7O(k})m0oaFHO zi;qrxHV%_ImgF22$6_)fI3q8AusYn0XOKzCgXejW=5*iT50rH(u)nk#fAnj|xgKdx zrX@tvmWXb$D1#+GUQV0ATtx<*4k?l0!_C z6f5>FOS~NJ}jo|JEOM8yR zIxxk>XAuRWmtxGR00qsk@IazdWobyiYb`bLPWJ5LsF9pwQI7w_=8{CGxFVkXk&ID* zN~Qt_SaTxk6LEsN&}5;gCZ_!KC}6v~K=Ld;Y+Q9ZU|9#MFL^;%ivZE%LD`4Q4-lFS zp_6&yG|`m46&l6C2Oqm+)gmlk2KR9{KgibJ(n6m0>W~1iW)Q2k_(V~OE8-;rU2G_JOu>8@P$cqehUD|gG*QkzjYW`VI%Kt<%Spn0 zDc&_9E(^crQy#OyiIs9T>tyrp&$!A&D|!OIFt;Zxq!cVXqL4L5je6a8$t48FnT~-N z6aee`$M(oQ0hKgP{SROYIgo?YSV80vRe0CQOZ)}KJ$iX$6SIOHCQ_iZ1gnWM#p(eN zJBKAvzdT;_g+TQRaTSE1`votQ@1C$UpZUGF?P=&eUBV zNyoat=gaqJhN1*Nb^M_`U9~FwS0gQKxr`!<^o0#_)s1aK|49Y%r zLFit>O(~pugh?*TfSihEmXYvdLaY^5!FLoz71MjscNeS}GWk-|4@QVFe2&WsU()=p)K*A&2z=Y8J*GxH@Kq(2e1Oq|ra0)qa{l zDofqpTjzwWfqect4N_|H#cd3(#SvL@&WKGHUMHNz?Lqk1vahY+?Bw+9m#QM>KUX_|BH9=?rq5=#}%f`L+uK$ zg5gffO#cZ}fRC$=HGH<~Nbc&iyYzW5FRXN{HQOQ;MCi^xJj*)Q26X`)ufYyG2t8-ck?&dTu3=&Aycx%KuSblz*6 zn6pVWSWG$Iol_Pe1ahbuf6Z*8G6F*c|HiJsk{#BJs-1-DXtaer>I2~QEjzCFa(HHI zKELwLqL8#H8vV!eug>v!f(G&_?*i0-OR%&M^{jfV zEwlMsDHF*wrW7HDlk%!-b$FK#(XRkZpR(`)>EpQ(lJi#pGjwULGl^4Kw|Fkt+_R(P zGt)Ckk$B*06CeO=5hS zVg-;BnTvXbo`uz4rQ6ZwrHa?z{3>4Gzs5msvfwGz9NV^)RJo%+H1fg>O3UBBIRm-Lwl8V47djRuCfW`1(jQshGl}6h!Kv7n@ad-l7&{ z3-H5vmk8k!Bqu2uSqMC z?P*4Yt01KFbsb&mevZewB<%CGfies|=S%ev9_V2mFA%-J*hytT#}nYUd&p&(A(FrY zP#rS8c)mdi0x}J6H~;}S(JSUMC)sUg5>K-Fc*gr^E+={gyk80^&L>Fer+P_Q$Vc#X5BWrE z*xwce{KHeLY|ZhxXc7~>&QEwL9H@KSCy5$a@8=jPs#(u60@Sl)Y4csHj$QU*)jV2> zhVa7IEE@Us{3i0*0frAjM*O6+D=OPClviK%%w4UIbE7uZ(kssa^2@odj~No>lbM^a zX6>h0_*7vjDx4wf`7ujqZRV4HK^W@B3e9ttgkl+WDw?fr&ybn>NvwP|r*cz>^ zE;S^q`*fxSi}@x8r2&$ULoITavnL_80m4@&H9CtKQjh#_kq26H_5o#2P#A)>`>q0t z#pu>9k1`&N;NWD{9IODUgJB6GAA9l@Vh=$GBf>rABLyJ!S^j)P`0Xge-y(A-DX&V zUDUcbEL z*@}IAqDj3ML~D=?Ou40haSYJDDtP}IsCHXpbh7;|leLYkaz7A%zFXG0mq+0>H}y2% z&-}5(U^jZd>)84%aNp(FY7{Yk61E;(V>>JDAy;N3j)|qMLeG-*qL9n-OXnU+-UZjr zN?i=L-k9)Go)`xQot!iMM_9qHuX?B{qxI_9I8cSQM~eeuSScV8HJzxwOuR=Co2^jm z!k;KYc4m2rm=dL&JUl3Sh!`D_EpHSuF)oU8$vcQa67{eN<~r*VOykCjz!Api{(0ow zNKc>p+xglj{3N?8g_2<@;y`*{h*BbI_68WUz2y5H38vH^`Zw#0h8T7*HAuPlM==e2 zRKcIEyeM`$U3d;&Y!up{#B>Bu7W>Qk+-XTX1@lu>!g|Z`v~oRjpPj-&yfiOZ^6F_O zdxy8zLjI-=@pG2hQWd#&g+u%THD?t>S-TI0&9r?61JKsQy1ksTJE8)7vsxr5te=Tj)XQJk=4)ZC4%Pt%R3{YrhO+a?p@VE zDlKnmC!iCo(0g2|otT?XCu8KqB5<)b zmt~DSu89+ugUaefznaQnJuUQdL9D3(zy5HQFp2sTDnpn?5ZtauLoSi-V-wU3a#!3y z!_`{1~!P(|yF#wSd>u z&;0cGYFM4|?Vhf2Bu^Y1jj*Q(oY9b%G7;*MVS|PWaEM4|Z4V7dh zGbz;@{WZPdK!HkrTtbD-kzP%gkg;xoN;{8^;!fck1?5eJh}FR7dCUP0QS zc(eyl-f&t}5Z)GU>i=St6n2{q5a zBGhn1S9I|=vKpH5*thi)iV&u~=>sf6EobDN8x+pJ2yej4uw_mbipf7413lI#h)!u9 zJW2YI+!`lUJu>n?kz;m4db4{HoQ*!nS7tZ_z2%~4!Ia<%7wTsLz-hT*sH%Nb9mzK< z97EUzUo;F(MNPSS84~vhVI0YP_0@wH&0h3QJx-y;)lCX%_xZ0;hgChU3blEFw%)l*s z4f-iJ%_3P`6i72}RNGG?1$PF<77tv0D_e@(e4^t2$Pd-V?saehS`25^8QOIxb5zEX z=rx{L?KVHN!yvvYRa>^kL>z*_H0w*245sJwWH&tI#F0DSne_-Y+=rm$$Y=kk1eBxc`L*~KJ zSx=haQd}m@r0>=R&f24Lp`BkFXieC=!+c=SwW^0Hw`eyiZ(WUTz2J}NEB}HBmY(*b zlhVV4KX56jS|rVb{T3NFWMSYPdLw-3q4fajjFY66{H|ziRS0QuG6sJ)NaSj zVj;G*b-6i2U4!Ou4*6&u{(+acd!uHG)Qx5SD@S3+7L6pO2Ysm*pXpX`@m`1B1Dv?R zYVgg_8$wz7?CfeV85;J*=uL`hrNr>$g#ajwz}rnvaj*W(zEbAmrXt&834}BOyo@45 z2JcTEr-$7d6IU>^g;Rz+w?CdK1yj6vl?jcciUe{|(en#P36EZHF>o`fKgh}P8o=9kba z+@8oPmSmV*A3?ZMCwPMcZ2nNO#2L}QR5gS*rHVC)!h3!frp|H6kJ42Nhz^-=OjzV$ z^7Od)W$~O8!gD}AG$d}vw38e>!$fTld5{2_cEb~?M5UUrmrvk`GsCTt$US!mF^xqR zxnsk(`E%7C)ze1tRhoT?o{nP2661kkK%YbDr1NgZla!dploZ}%uC1GN-VAhL%^5P$ z@Jb1*vw#Jx^u%Y)p2VY4Dax66-U}H|*ATO3xXs0GX#Q8^?vpd*l@QXf5@e@0{UdM+ z_OZc3ULT35=8=u)QqR!NDP@3LlY(l;_MFv&y?EOSdAp(1(9nh`lQ4^EJwsBPVBZke z!Ske+)P>}?lj^=D|DkWf%?O^^^JOQycZC1d`HH;f${e+Ig!KWK-0tTjKHjY&;x>|d zI(T_1*fwOYhm}axO>%Io&e3@=L{?5y4FAh))URSDuu0@mRwn_Sgp&aCDBZXQmlA zd}(F`s3WZmq6rkQ)KN9;CsbKu)15`)e7?#*Hpd;1dOvAhKb$dQ9VqF^$H+(TN}43Z z3i9QK;TwZ>=8U8_iq|DFE1#5{{;fJG0%6$X9K4cl#`&0#q^^|or%dZ3#Qy_G1745{ zs$IsATbZs_(;6uTQ4N_eN2xI35-Y;cyTFUzfwe-RLEkIKEp@4_%u;XX{x4em$1EA0`dF zF4lbyMRH>i?;>p7I}S<-WnUaB*UH9m&r;V(CS`NmG_pM{d>s+s~PZQj07N#4*Yg+k^doC4|__lruYOg63T{Ewn* zpZq^Lc+~zvrINU1qtQteIazm-#7c)jrMH(|C4RvP72=-7rQ#^!3MlY@DD*RnD3r(q zlzyKuDe-YD7c#h(P)Kgf7i8VZHB&UcJxw_VP}sj{C$Q^~+po$OK^B&dn@XgbrIkve zjLI6GniMeoMDN|5YbT~l_Ej;Xi3UY{GZ3%QOSkM$?Ejc zzv2h|BYqeKWgUw~>gQM9xY~x|A-lwPjv|Js-=i8e38nlPWs>b<|D=xY=Z?}jD#W`@ zUXPAq!;mRNQPUYxHOQ0~T|m@Pf=M3#-AyweRHOjv!J;RGAn8Q{omh_? zxXmZf`qUg$;E6$MiEz3#GfNq^RRvu}+p}6d7|kGf!vQW}>>qULJ|!l)G-QXVsU1Dz z?Kvr-ARx3PZX)U7q5dgqgj$SyoCdGr<;xPLth}v>K9lvUCEc0`7SIj6kJXad zhUF>xGcqLG*3;1}Cs#?OB$ln@iod-P!5tW5!y$^5io2qHM(anx)P#J+=&+i~>?Hk= z!?#h_Ec>egn@SrIVpH_x0$eS^i7#<2ndN8+_C!`$%v2fM_(0c%-I_QO+{vSnTTd=K%??BU6u1erx%-@4E=JG?8*vRaZPo#&MRwDlREj7vFx%vya}> zB#Vx)WhceH?Xb5c+Wu}P-U-p1q^XPP8;?X}n73-My3@X+nB2nIU^2GbrYb#sC1CGV*cj4is~tE!nf(#*_R#*6qHhTO)Rnm6`k$ zJ0`d3Z(67Af3u36yAw}IBfV&82&7@Eh$rd9A=S4q zX>F3eSgjb)0J9zkB z?%;JsZz0VcqOuc4Gz7t|#wH45Uy$1Gso!R6;LQUO=J00~PC%Iq+akMA7?lTLbc=V% zibeM)3Y}$!kY)CZqE8T&HD$He&`dJA3%(Da!aT10N}%O_yqsBb|Gy8rN^-#(5}kc;;d`_7;c=It}X~F z-3r5;w)W=jN;X%0U8poYasE?OsO_Cystt9K{jeqlY`<#uRg#TA5nhzx;`lq&Q1q^I zDxs(vZ}x|ws6PxWv?)iS+N_3jL&1vbSVB>&vS|`SAp%i%MuKTL9Sv+-6 z;8qAuxD-c>sHSfHpUn7n9FVPq%m`NJ(-Z-{HlM3~OtHO$44WeteDfVgSWQQ5I_yj^ z17^MXp>a7s8L7EX3c|!Wa`yE8G9Tdh*&KI>Gp*oVkvZ9`<}34qb$+(Brdr}!FOiev zP`yKAV8v}|8z&CQ^;U)tw?e%FG4+{fA2C5?IkQ>Xgq&3R7N}b8HFnPO+Zr|7)Y-+K zLxGbUI6-_ga+9axN;IA777b+lG@ETZrE7!n4Q|6R*5G6?K|G!6`+sNzJlamnObq)_YGup{z*RPw(?){S>##{gZu4bS214ngVG`I2LQ z+a!pn5QK6uAi;T4B+VIO$SIC9iXE{b`@49>&S=Fm-gKAu>dt%$)s+7>icV1&D&R^q+8Ffh0;tYUSX#3;bPnW+%DQVU z70B;d9Oq{Wb4+%q(Fh=gC7JNT*0h!G^u^rdJqcx^RoQM4Ub6rnsa6Y!<1SG)Xrv#x zo($vzRpCgGG_{1`zueyiOzs-ImO|)MgM>Px++0ZufW4IZrc^gmN-boA zsdP~Qdn)2$g(Qa23{Xpv5YH$xby~dfBDFA9*GopXrM^8bmSq%+{~fIctu#@_-2~yeure)mS#7xi_R0K=U`=H5O+OU!SA5+U)bo0{J3i~}1 z`)*glEo>XF305#{YhU(lXi7S;3{vnEtyHn$j*^Y=`o!-=+EHjWe7?(xRY*X_T-BY1Fl7d<&xO>S|~%5 z8kC~o0I9ZDKZS%+12&e+`#wELry6NekfttI5B;feVD7nR?H8EcRTp+M)Azl?=;xs_ zB(FT(gwEZ0UnGbOt!!hGl!T&XpD;wT{dH6Hp!UM7q_R%aeP(d$RXm)sbH5Qbd^TZ8 zpr3`o&KynvH7@$;C1gOwOqk6&FF0t%c>8G^#@QeHaNE!QtLvkcPj4(IXB^AW^Op9r zeS=fVB)&Z{uZhO?mRunHKmfT-TS0Kf=*5o13h6}eQrI<<_XrsK$iaWXEO&E@nN8gA=~;no+?E*X=Fc~tjDtn7G-!J`}s zX}oX*>X2!p3~r;P$?i%=ws1R}j6nMrFPxr^O!h`QGO(wKL!AXH*h}v~e=x6Yod!a{ z9{&b5ReMS>xQG4i9enJHj_cp z{B^k9f;j^o<+#25vV)DSJ=r7iUDAsZthC1Vc0pg{b|N&amgQiN`3Jj;CkdE!#ojiL z2)oOjChTTwch6emDfp(?-u8wvb~|eTV6j4cINSUIEUf0OC8XsbgnpWB?=sDNN;#hz zv|kW$4LD|GE-#}rdS8(QM>gG|<4!=$+&*O6a{xWsH@J&5sNvC@5-x*oe*>XU!>v0$ zKpG*0{_jJ}|H+7|n?Z+an)y#qrgrH~nIw&<@j+s|@g@9MrBcmu=>82AYS#hunKJ15 zL1%-0`2T}4yj~jpZzxCQ)RjC!8jPXeEe!4n_`i%%G1&B~B1@waQidOQL+E=epfa}AS@t`BMnBB{OaM<9S?a$`U{xIWw`dDi#!dbl1A88DEuYMO}YQh zlY27!w|ai=Y|2dmzQ07IF(=)8_kaH8R{pfuiZ}l49zmKJbDRJ%nX##U~c@2jc)&47n*q%+YDL1 zq(|9lVHQX3g#)7>K`BOnkHOjyZR40o`lA=sYDOwuZcno3`(XmT|NEDENa2KhxtF>X zyp;J*AQtPM!R9DUYiu9JHr)o&cK3FdeYX#3oGWG9u`rGw_9}>>$&>fkwh@NQ-;^;w z>}&C|5#Ju~qnzz5XQ_X(rmkU(U%YqOZ}r+cFkJ2Jf1+%0zWj-fe`CNJ3iixc?}95# z6~EKPBYnd2+2B6k+wX*B>-mfD27G+`OZV-F^-nTDa}?YgTgw+%bIm_7sK)*fx3m>L z!pZjEcqA5)=h4=V68mKDFPQ$0sy_Qx6CJ;XPb*ij9{pWlT0njL`|{8T&PZ&j*LOux zan*D8j2nMZ^tY&-k9Ycbq|O!nbKxL=v5&)){g%0S-!&o?oD$>B|0OHE?dsP_{F`RK zFU&Bl_P4?#JA?4QDR*qObAM^Ry|1pm8Ms`vV-$*d{bryo#?XD{FUHZe?KPgik6U^n zd>R2+AFtS8bBJ76r}^nycp&6&84bEw@E&c$5Xi*-wg-??eD=T_TcH^z`H)uxOBwnb z+d?n5bd4b*^ehwH)m}hd->hZUT32B`^f$XFKn|dfwztsm>yY1#R$M$o@EsX%pTYAP z{6BPkV{|1^*JjeOZQHgxR>!tGwr$(Cla6iMPRF+G%cf@iEndjVFcGei8c_V)+mQvCw9iOEw1Yax44-dPTS6anQ`pruT< zT7LBZ%r~eVeEb&~gw(bDyz-_1MmaXnWjm(K{#2xZ?9L}tv}pW(qcq?j)v>v z82nGj0{bjc2U##K_EB9!+CH#%`sL01^)vsW1FEX*GK8bU0f&lU)aydw09;hHK$uWH z>zm)rB~<@9f+`aV-*pRv=r^Emb3lJXaquGeX7;~Hf05g062QEvw#z2FBNkiF!T|6(5pv)$#we-wCuGy zLgjA|mF{$tYsdH!R6>GnbarW$GwvRwq=G#c85SiSxyM$qS;crqX;efd{F zCDIv6I`(hi0QFO}jlZgDW0kTJ#p4_m@=NrW{uAk6urFWnU_kZMFknuM#6z7oj<*2@ zNNEF(zJYV?e~PCL3<)S=$BWbtf;I60sp!T#Qo73mHDTInQv%Gm*2wX5e?F%Sh6wQV zpE}g}CzgU&zFM^Af#c(Fy7MR0ZU)!>IeH1n&g9LN)ZJ{W+_N+~CZDlH#6O>=cIlm# z$?=$ zLrb3YVgq$05XN_fI!g@uV&gz#67Nxnu?_yo>h5M*Mxqz{FJ;6?bNg!jn9;>X&|>3R z{&*PoYQxw74+qg!h2n3kzXwb%HbQ4{Hh62m+k|5y=qj){gB8%f3hXG=vo zwtw{TDlmCC$nK|Qw!mAlb_M_~`3b~Uqk83b89}3XbVM#ey87qg z%FpvZY>J&6et>lso*lzKF+8YO2Lb>a0{H6kpIW}(`#&{T&YkXmYIGnQGyhNvfu5fY zj>)e$p9GQimqmO5V z*;Kl>N+331$K|{vch`b)#1yH6a!lXRLh!%mdR&10fni7e^h4KlmX z0IS^Kz5GB+9mYx^`Qw5c*R^DKsQ;xSOu-t!=tPLB#b@h;pj8w7M}BZ2^TX?_GJ~(n zk>vtMsZ=U}HPwA8-=V-v36De#y8Y?i(^zR?)*&uNf(e)^QT)xk`szbvu@NI0#(r*J zTE?^mCX<<J{6DGU13r|VBS`|1!(^((%Q=#j_aC5q6M zxu#@cnUs9RBVtY1MCbPVUG)X>3KV7Wwkxo6vwFCoDkZT!|swDE^uNwjC3=`i9Hz>N}+WR8MG#BtSJ+aVh$j{^HN@1tr3hl z#P_OJ0;!`<)eW4wj0b}rv}ba^{!jp!Sy#R2wQ4)mm8^rb=SGU}RVQThZsa`*MuHY> z_pi8tCIN=BFISZ}Dgk@9DZFu6%o~?%o23eFYk1x(cbT}gYWEVd-dU4pV14X$i+p~q zrjN-+h(`@V%gVp0nPQ4;-t!j)qdT03*YLHt9rx^bsy6XHLf|Jw;sx=3`>t_*S(JdI z#jZXgMVkOtfT>%{Y;z*ff@eUys-SbqR%9OmrPkXe>=wGDzAgC50%gKhXy0Gu*i&z; zEU~?kXBJL*x{_zpS;6Eqe!sq+a`*)ZW;a+-Si_ssN7;D(v_5A*>2Q)5xirD}4$UI! zLMW3u5K-v;PNEbajrSrRRMCrzA}`PWq+|e&OgbSm|Do=xSr(W@Gu_pYf8{ zjaur={fj3}vp%aB#|sYVDsMWKB01kwPIeohhTrV*RN+FbSVYX3&^5i4 zk997ow%nNicJMYtZv;6|#GP+U=90oP|xw z)@#shuowWhJ8TgNP5AAaUW)*OpyaRqeB}_$Fi#gg5C>(AEtJjX`URigImI%1mrinE zxZF};RX>V5*a9Vzn4c&))aNBFY{~4EHcFcqiqeLs^RsJmDX~mfxA#}vQj>YYU&4m= zI>&z1nf7SYSF!z2Squ%b%vbVYRnT4Z7SSyU!v#*yF9y(3%fHfBg|$OP<%yzCiU*cV z?&I?DU9fW9no&S**XOV)kryi0K-4(&^=iHeHf-M)U}9>RG7HL2LWMN2dC2t`Sm)7G z#t|1o$MbXix@EdD#@nCX+-oA16@eFQ#gdp~Z?lwXpNJ<7-aU$JCIWv<_384_kQW}v ze329u@`JjYWFX?Z`;&i3{ULm>8rQg^>x(9b!y|G~#WZZC(0v~^mNEv}0 zjl_ija<=2BNHL`msjIj5P87W3tm`6;UrL_ZfX^ztipzx)r+Zb|ibUnW?vqA6NUDcS zXXVH)x))8rE;Ic*?RWX?Q6k^`br&q3Kt6D%@N~A3l0=KgLBX-I9l}F)adje#w>|l< z&V=EpEUa~wd_B)mmiNkEC#B~|#HR3OAKeT*N^jb|B|i7CpI;xD2kEx0juU1nlNtx3 z{grnu&8KrxMcZnEhvcS8bhJ~OvwuR&&o}4P*Mh)B6 z|8^^bw8dgA2QN9g0#y&F&UoY68Evbv@*ZEYUhrrfTrpot*B@Oy)zgHxk8TFGpA4{1 zc_(<{ud})`SZPkPPi=CrWs=i1n_nr_p7Q2bkpeHMHId*YoGX?KI~?cM7_70n`Wq~8 z75QHE-_f2Vitn3T?LpM*FYr-Xj>XfiJ|IbSUPz%^L2DgvWv0Vb>7Q>TPu1t6S!H_? z>3{hg&rSd+QZoP9=WaS7cdc!6@bD)87$Z#hwvS-5h4 z2EEK_nXKh`n9|zfSUA&le|C7bVD;Cg8Mrecj$QY0A=#^qxRhl}8o9)`=8o0!j=$z@ zYV2GJS!zijyTb?7-is_=o6$;~R1Gb@#}6rvR?Tinu?1~Nao@NreS0Ih249?a+NM66 zbjJanxwi)Igt}4Glg948Ywky`^lDKsnptNLU{yaq|KY~7L&y4UIIj5#VV>wAoydZr=EB(~w5+RBp{7Aby=HE<5@bbpOTAm;$`iXegPg@65oU*_ff0pW<7c4G z)(1Xl>cX$=((s2zamk}$Q}bG$3<5HN2O~#NMP>m_4+lw*Z`K6vZMu;>l6M~6aMaf& z6HnNbuMjyz@(_wtP=Tmyf{A!k0ou6hU9CqSfeKOq*#g=6&z6MjyRHjY)~A;Ih*7y6 ziFjX*$LtT0?$X&l-@poDfp8MCulqQ{bQ156Zz2I|fnXBhk1EN`5A1qNZkvxDm}NGy z>9({3TL|XdhvPlnZ!ksrZH9XX`x;-YB`co_D~b4G8FE;R*Cyk8?TuLhP?2WZlF>DC z;p;5=J4cgeZLf?xXYrMd8?wLTucFLV$fYycc?AwnjO#fiy72;K%~as&e+CqwyvF7^u;z5#wct)4wK?Cg-kIfi zB%Nelm9#JM`|Z0tP!0N$$xHXrK3zzMJ(GMkb}+^Y_(I=8jJ~WvY9k?G2E|Imi6#wU7W)%)%1_FxNMeD~! zNs(L9_G+|>RS11g2)oH5HnTQ!C|{1f$$_Al-TLB3*&o<_rUb1;Y=qxS2mH99%@8=0 z%c&fYHfvcG)wh)gi)}2tQU=_(l~Ha(!atEZQ(?sN#E4Ni zR)8s}%w(qsiZsV0R5O5mpiil!XnLE%J;mU_R5o~H)-1(jz@mHHjVkhBbLT;BoNk_J zyn%BI*2X1Nz(M%I`J0lMd!LEz)fY0elev+ms|)XH}tXb;I zm`rNtee2wbu|neI9bRL5`$*F5GqfV@^%+>BkR^R+NvsF+x|UR9{rUz&U5?r2^0 zOBg!jWEd*l45yqrOTs1xRI3VvMJoophgdw2V#SH3ljJhciPTGY#f`Is3%gzKZo$m> z^>_!)fn-9!wC*+dbmhi7oDFt>@3>^0e88f~EX&=@&fTAtn0E%b=y%!yieLXj$_S#; z^r-%LIqG1pv5ZpdVXAt14(tqSC!y(9qS(_>mT6t`v2!FJ8NU&kE(``bG#0Wri2YPv zH!v4$-F6+bVSjlR6J$D8b~-s*Nl_jW?AR3lCLzj7pHp;bX?)>f!)jVZR6LM|eZEM1 z)H!J+jkc_?=JF<~rcJ)Uj|_%y0cr1;dAOsFs*M}rbdx266CQM~5XikcAc?Q=j1V4I zRU;|Cb55M0IS-YCX-W3qQJITej>jHQ+xkE{Hylwz+My;)YQ{5j!wwTx*(Or{O2cWr zajAd{xW~=(9JzXucz-(lD71sF<(xK@o%Hle4}E?!*Kd=MLJh8afz12%+o})SK{_x?J5D4Cb9VnS z$$A^Aw);x{eL+Gi60eqd`!SibXluj_XBv0(ZMl=a(*a-7LsGe&3h^com$PYR^%pkY z_mjNiI(yghBV01CZU(I8kfB$!+xf=N#;T|j58Hrw;+x>83As^Yc?af154z#QnxbG> z$)cCTeiVoDQZz&JE*locSEv8L5_j&yb*VIr{@S3_7U99ZZX$UH@FeCHNpUPVG@+1h zdSJr=w#~QiGc0KplRnAk$op-}rlp9$m^%5m9jZK?g`mfs`#5=pe$0dy(9=mR}jqNQjtgqloV6^X8+7m+Z;MgD3K3OH( z3yrGu8_;E~C{T8Ib8LPQz9e0#33>`IjCp&uWr!Qol-e+5oXFhrU1oE`k;6CK*}3|4!mM_sQ5pWwSU4{gRApFl)V66d-)cWD7^6I88RS|BPI4H`$Zfp zuAwZ>Ltld^Yv+1B%9VwqUV$lZq^)uy>425Ba@TRm{HF54mA8jN`@;KE2PAKgvhf%Y z00WH1P~i0)4DAX+Jx!KqRXVNNiYb4KLi)wbEWIoHbBI8G%0#dN4uGFnXHB>TR`w!^ zd@B{l^rg;3ik;rJm@z$nk%uJG{kK*Eu=gj4893Y`R|*&fHK82>Rie* zu(Aj}5||Wuu6n??>4%KaDoqz)5+Vlg=S(6xQC)R)(k|JWej>aM;#D6>e;};!OQ@4; zvL#q1G)2u3@}rtLamto77`^xemIwD%>x6-=?48fh5aRF-?0*j7*Pl=^cY7hlg=O4^ zNoy0IHJ_IWy5y0%M}ktWU3xGjOh)7^eQC6p!2=%b_(FK;fc_jTd~V#%j{Q8M)YT`- zk2gc`tem2(vR3zqVMl5!SrEOHPWu-B>)I=7-+4WAwP`;R0O>|a2>ldOpjZT{u3!aO zMo0}=<_G4f#@f6Z-6dKW&L@VV6){()kcg>e6&{|ER>BlMyju9RZR+Ck3@`DuO^}Pw z0a$(XewybxDLZ{Lb8LCmiXQo(c{Ix$)dzkLw3#OgT|s3{H0KFtVjwz)s4kEoxmg>8 zpv~D#N=2j^Dnz|R0GHMybL`JP*?3wxd^_qwO^k2r*`ga=0|!it2Htt)ueNTgAw1O##n*7CF4LQCpV$fxy7(Xs!8&>PZN6|(U z^*DVct&UJ}z(IA}cpT7}OWdv8#6;D=Z{Xdjt{Iah~$BHn3}-fq$ktZKvqP=%7bLxEYQA3C4V0hcypR@W0`T2)$zkeJ#}4UvoGHZ zEF$|*Zb}FrJRQ3{I7e}vJZYW>u;_hYk06!FwrKyr?1o|fNRS2g8+WHkh~5+i)Abcv5aTK; zXGJq#URls4-La50R}~eQRLfj}>8!~)5-kefWH}6$uOM)DbaYJX#Ej+sP$sob6;42D zA}wqrU4Vz=%x7RqzLxk9vbV8=JIFM6YJ(7LUStvoIu z^dN+^rK)zAR6QOmf0&l?G*cEi6aOR?+K9kewCSifhWmW(-|T@Pxk(wX>=u-=$VZBX zN|ewZTQonK>M}u8Zh-_Z*_K3=zIe{6pQ?9*;q&9NhT<_jXAy>!&A;4~TMY{28{0+kDY3@Zh=haJMpYvEvMDM#3cc`9BJf*HBuYVmWm zFC=I8U_+4NOy2-eT&YjXukd4D#rIZXQ^H3jiD-Asa-Dg_^ZaO82VSs^p*n_{%s_Dy zyqqYpvOg3HYzcJ%yIh1fP#&cGzK#-P+=@jGLNiLWet`E~0T^x$C^=Fjv3n)FIOXZ} zP&1Pk5>rVsZuKp3R$8IP+Y1R@MHK5=y@Ap!CU8ag14=Uwls4nNlnJ^ggqt){5^SNmWQn9z z4Do|ilu1&$zIpP7ED5WJaf51_$Y>9w@Gx#oN_7Xj>8naryJXNk(yU}kX{jLKdQ@b- zYgnPi#D${F&JV`bP;Qw@vPTAlNi=`~OnfeA$~tf$bBG_*2_;>&kQ6zQtgWa1=vI;~ zA*K*sytW)iC-{&HCnC7^3b`?kiC^^c8W8eHQefFR@0u_}<|p#?<^2x5-742{oF8xb zldqD9nXkelQ`wkTFV>QTS%`4IU^tH5rMQh*Ws1G1RCo_tq<<$YEUqQ*tR*iqJ|#!_ z26Z-*3+k8XI%clD9_m7#W?Wv}XGGy{Wiz(@$DSOR(#oM-n>s;ZsY+Aua zzMMs$DWVpYjL40r1;>tYqLwLTOq{;rOV?5BQ~-=)b=ZzAPEwAM^TCD+9@lfP6V3!t zVCFolZVufhoz{l|GG?WQK6}eg&ho6>{pr7>b1`lTKKFoHi2P%(jHQLqId3{~qetB2 zM^=Xebjx3xXPzl;6|k>h9&}1QBX_j?NgLJY%~9ve6~VJ6WGjc>CyFO|69?+~6PVuE zT*HE?hw$yRbmbGh`znkT$?!0vax22&3lFQKk1r@txy}+VbtyMLrXT~mmyws*Cvi^p zrT1K=ICvvlHWoP>l_Bh{_k&tF*zCR2Q=xMYx{hoyJ@DcfZI^(AH!=~APY)Tt=LRnq zhQOd+mz3A#n;CU2F= zPD#`%Ih}tNYh71xvzwDh-D0m`hN2XsdEj6ZtgwD*thhzB%Znx1#uN9bZoy<2CH(TVLI}8b?ex!uZBS_5^V_e(?rE1Ez z?YSsunz!@rwm(?XIK76RJD|0*Qk$MQ$Se#Mw&`|EV72o)&5|`~OX}R+95j#37MBIl zPdMpVF+1H#A-1=U&6OCkkU$cpgVX&`j)E!suS+j(7PhYFkWBV)UQ=mYO(-xrhiFNQpGt=sY0+VDTu z!^36qupCEh^Tjbb@<)o6g<`AQ@%b)7@F#E|Ff|loJJa1z*>?3z{$P+oh7uUIxGQNFCHd_?_&|12|#B(%P(FpRGTn~5luyZxi@sK7=;=cZah8u6!bN5eg> z%%m7>MoJJOK6#m!hGR5Sb!238d|Oj>_)G)pmZ^SkYk5?Pf`Ei(Y3)qo^jt|(^-l4Y z^J<($ffUp6@z=&O%UrT)|DpnpzH74oRG&M0@PSP7bwZ0a1uG&%RZA0^=FD7^?seW{ zeDiSaeO}O;;hI{JPYMq6Yzv*G^MTl z@y}L(gfBN}Fw0r<@aAkO?o<%_T*JD2UAQBAZ>2a7c-mYywYto%By#@lIvt?0pnn?6s(dPy;amPMj z7rJ;x=114=(1F5s2ycJ*BY|}QZ}0Cbp(Lee5RGSSr}=AlNc|FWaDDfhrC*}~fKUhz zsfY1`GwC3=7>5_24A>9nPk|_Pqr-lg-PpMX|2;h1RPj-EN|LeuwfB=m3XTH0r-2_h z&jV}S4@{npH$b$Th54R_KeWZQm#~3X+#pj^hiT=OrT$51VvRuae6*Za-_d&n>dBIE zg~MVB6?8w^m`19^77j@p-gXc|%1njhP>i^?d3sZ1Bj5rFh{y`uoRwF#wnB07FCH%X zqX*a8KfHDhY(zDt>nk2|z+pdrX&Ddu7>omp<4Vt4czD+CnkJ)xex&6U!) zds;u19a%Xsh<$neYbR8&-{DKpR;hlTJm~6p>llNyv9T(lgN7-)BikI7+C~RSbCQ<0 zKH8zb#*|D+6`CD1 zVb%ys@6v%)f0#NWf!0CGI&hPkFH7w#XJi-94U*qD^oV}Ndoh)iLTTR@3@}hU5ey%| z(${j3&Gx`yab$X??vU2+E~4N4dg<-$G+T)bFWepwX`2nY=lf;c3j9)UkWmsgia69G z(&am@($9@Zbx5mF9P1zjhUXFA60&`lNAeuye9{21*ujza7O zj->^5PM{KkY8d5kGwtoiFvLmE`IRBI|0|KGipzk3s0xa!VxE+`n4ODxbnZSRY;R2m zr>y861axr@1>GMN7bE`7vaa1eN>s@LbyM?ER`5 zu=PQ?L02(umZ^IwI!Vm@h0aO7�(utKjS+y{rb5baz0j7&)mB@RYT0$~TqD{Tvfq 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

                sbkcp*iqe~=D1g! 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.cpp new file mode 100644 index 0000000000..305f9cbd60 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.cpp @@ -0,0 +1,1515 @@ +/***************************************************************************** + +$Id$ + +File: rubymain.cpp +Date: 06Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#include "project.h" +#include "eventmachine.h" +#include + +#ifndef RFLOAT_VALUE +#define RFLOAT_VALUE(arg) RFLOAT(arg)->value +#endif + +/* Adapted from NUM2BSIG / BSIG2NUM in ext/fiddle/conversions.h, + * we'll call it a BSIG for Binding Signature here. */ +#if SIZEOF_VOIDP == SIZEOF_LONG +# define BSIG2NUM(x) (ULONG2NUM((unsigned long)(x))) +# define NUM2BSIG(x) (NUM2ULONG(x)) +# ifdef OS_WIN32 +# define PRIFBSIG "I32u" +# else +# define PRIFBSIG "lu" +# endif +#else +# define BSIG2NUM(x) (ULL2NUM((unsigned long long)(x))) +# define NUM2BSIG(x) (NUM2ULL(x)) +# ifdef OS_WIN32 +# define PRIFBSIG "I64u" +# else +# define PRIFBSIG "llu" +# endif +#endif + +/******* +Statics +*******/ + +static VALUE EmModule; +static VALUE EmConnection; +static VALUE EmConnsHash; +static VALUE EmTimersHash; + +static VALUE EM_eConnectionError; +static VALUE EM_eUnknownTimerFired; +static VALUE EM_eConnectionNotBound; +static VALUE EM_eUnsupported; +static VALUE EM_eInvalidSignature; + +static VALUE Intern_at_signature; +static VALUE Intern_at_timers; +static VALUE Intern_at_conns; +static VALUE Intern_at_error_handler; +static VALUE Intern_event_callback; +static VALUE Intern_run_deferred_callbacks; +static VALUE Intern_delete; +static VALUE Intern_call; +static VALUE Intern_at; +static VALUE Intern_receive_data; +static VALUE Intern_ssl_handshake_completed; +static VALUE Intern_ssl_verify_peer; +static VALUE Intern_notify_readable; +static VALUE Intern_notify_writable; +static VALUE Intern_proxy_target_unbound; +static VALUE Intern_proxy_completed; +static VALUE Intern_connection_completed; + +static VALUE rb_cProcStatus; + +struct em_event { + uintptr_t signature; + int event; + const char *data_str; + unsigned long data_num; +}; + +static inline VALUE ensure_conn(const uintptr_t signature) +{ + VALUE conn = rb_hash_aref (EmConnsHash, BSIG2NUM (signature)); + if (conn == Qnil) + rb_raise (EM_eConnectionNotBound, "unknown connection: %" PRIFBSIG, signature); + return conn; +} + + +/**************** +t_event_callback +****************/ + +static inline void event_callback (struct em_event* e) +{ + const uintptr_t signature = e->signature; + int event = e->event; + const char *data_str = e->data_str; + const unsigned long data_num = e->data_num; + + switch (event) { + case EM_CONNECTION_READ: + { + VALUE conn = rb_hash_aref (EmConnsHash, BSIG2NUM (signature)); + if (conn == Qnil) + rb_raise (EM_eConnectionNotBound, "received %lu bytes of data for unknown signature: %" PRIFBSIG, data_num, signature); + rb_funcall (conn, Intern_receive_data, 1, rb_str_new (data_str, data_num)); + return; + } + case EM_CONNECTION_ACCEPTED: + { + rb_funcall (EmModule, Intern_event_callback, 3, BSIG2NUM(signature), INT2FIX(event), ULONG2NUM(data_num)); + return; + } + case EM_CONNECTION_UNBOUND: + { + rb_funcall (EmModule, Intern_event_callback, 3, BSIG2NUM(signature), INT2FIX(event), ULONG2NUM(data_num)); + return; + } + case EM_CONNECTION_COMPLETED: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_connection_completed, 0); + return; + } + case EM_CONNECTION_NOTIFY_READABLE: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_notify_readable, 0); + return; + } + case EM_CONNECTION_NOTIFY_WRITABLE: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_notify_writable, 0); + return; + } + case EM_LOOPBREAK_SIGNAL: + { + rb_funcall (EmModule, Intern_run_deferred_callbacks, 0); + return; + } + case EM_TIMER_FIRED: + { + VALUE timer = rb_funcall (EmTimersHash, Intern_delete, 1, ULONG2NUM (data_num)); + if (timer == Qnil) { + rb_raise (EM_eUnknownTimerFired, "no such timer: %lu", data_num); + } else if (timer == Qfalse) { + /* Timer Canceled */ + } else { + rb_funcall (timer, Intern_call, 0); + } + return; + } + #ifdef WITH_SSL + case EM_SSL_HANDSHAKE_COMPLETED: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_ssl_handshake_completed, 0); + return; + } + case EM_SSL_VERIFY: + { + VALUE conn = ensure_conn(signature); + VALUE should_accept = rb_funcall (conn, Intern_ssl_verify_peer, 1, rb_str_new(data_str, data_num)); + if (RTEST(should_accept)) + evma_accept_ssl_peer (signature); + return; + } + #endif + case EM_PROXY_TARGET_UNBOUND: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_proxy_target_unbound, 0); + return; + } + case EM_PROXY_COMPLETED: + { + VALUE conn = ensure_conn(signature); + rb_funcall (conn, Intern_proxy_completed, 0); + return; + } + } +} + +/******************* +event_error_handler +*******************/ + +static void event_error_handler(VALUE self UNUSED, VALUE err) +{ + VALUE error_handler = rb_ivar_get(EmModule, Intern_at_error_handler); + rb_funcall (error_handler, Intern_call, 1, err); +} + +/********************** +event_callback_wrapper +**********************/ + +static void event_callback_wrapper (const uintptr_t signature, int event, const char *data_str, const unsigned long data_num) +{ + struct em_event e; + e.signature = signature; + e.event = event; + e.data_str = data_str; + e.data_num = data_num; + + if (!rb_ivar_defined(EmModule, Intern_at_error_handler)) + event_callback(&e); + else + rb_rescue((VALUE (*)(ANYARGS))event_callback, (VALUE)&e, (VALUE (*)(ANYARGS))event_error_handler, Qnil); +} + +/************************** +t_initialize_event_machine +**************************/ + +static VALUE t_initialize_event_machine (VALUE self UNUSED) +{ + EmConnsHash = rb_ivar_get (EmModule, Intern_at_conns); + EmTimersHash = rb_ivar_get (EmModule, Intern_at_timers); + assert(EmConnsHash != Qnil); + assert(EmTimersHash != Qnil); + evma_initialize_library ((EMCallback)event_callback_wrapper); + return Qnil; +} + + +/****************** +t_run_machine_once +******************/ + +static VALUE t_run_machine_once (VALUE self UNUSED) +{ + return evma_run_machine_once () ? Qtrue : Qfalse; +} + + +/************* +t_run_machine +*************/ + +static VALUE t_run_machine (VALUE self UNUSED) +{ + evma_run_machine(); + return Qnil; +} + + +/******************* +t_add_oneshot_timer +*******************/ + +static VALUE t_add_oneshot_timer (VALUE self UNUSED, VALUE interval) +{ + const uintptr_t f = evma_install_oneshot_timer (FIX2LONG (interval)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "ran out of timers; use #set_max_timers to increase limit"); + return BSIG2NUM (f); +} + + +/************** +t_start_server +**************/ + +static VALUE t_start_server (VALUE self UNUSED, VALUE server, VALUE port) +{ + const uintptr_t f = evma_create_tcp_server (StringValueCStr(server), FIX2INT(port)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no acceptor (port is in use or requires root privileges)"); + return BSIG2NUM (f); +} + +/************* +t_stop_server +*************/ + +static VALUE t_stop_server (VALUE self UNUSED, VALUE signature) +{ + evma_stop_tcp_server (NUM2BSIG (signature)); + return Qnil; +} + + +/******************* +t_start_unix_server +*******************/ + +static VALUE t_start_unix_server (VALUE self UNUSED, VALUE filename) +{ + const uintptr_t f = evma_create_unix_domain_server (StringValueCStr(filename)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no unix-domain acceptor"); + return BSIG2NUM (f); +} + +/******************** +t_attach_sd +********************/ + +static VALUE t_attach_sd(VALUE self UNUSED, VALUE sd) +{ + const uintptr_t f = evma_attach_sd(FIX2INT(sd)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no socket descriptor acceptor"); + return BSIG2NUM (f); +} + + +/*********** +t_send_data +***********/ + +static VALUE t_send_data (VALUE self UNUSED, VALUE signature, VALUE data, VALUE data_length) +{ + int b = evma_send_data_to_connection (NUM2BSIG (signature), StringValuePtr (data), FIX2INT (data_length)); + return INT2NUM (b); +} + + +/*********** +t_start_tls +***********/ + +static VALUE t_start_tls (VALUE self UNUSED, VALUE signature) +{ + evma_start_tls (NUM2BSIG (signature)); + return Qnil; +} + +/*************** +t_set_tls_parms +***************/ + +static VALUE t_set_tls_parms (VALUE self UNUSED, VALUE signature, VALUE privkeyfile, VALUE certchainfile, VALUE verify_peer, VALUE fail_if_no_peer_cert, VALUE snihostname, VALUE cipherlist, VALUE ecdh_curve, VALUE dhparam, VALUE ssl_version) +{ + /* set_tls_parms takes a series of positional arguments for specifying such things + * as private keys and certificate chains. + * It's expected that the parameter list will grow as we add more supported features. + * ALL of these parameters are optional, and can be specified as empty or NULL strings. + */ + evma_set_tls_parms (NUM2BSIG (signature), StringValueCStr (privkeyfile), StringValueCStr (certchainfile), (verify_peer == Qtrue ? 1 : 0), (fail_if_no_peer_cert == Qtrue ? 1 : 0), StringValueCStr (snihostname), StringValueCStr (cipherlist), StringValueCStr (ecdh_curve), StringValueCStr (dhparam), NUM2INT (ssl_version)); + return Qnil; +} + +/*************** +t_get_peer_cert +***************/ + +#ifdef WITH_SSL +static VALUE t_get_peer_cert (VALUE self UNUSED, VALUE signature) +{ + VALUE ret = Qnil; + + X509 *cert = NULL; + BUF_MEM *buf; + BIO *out; + + cert = evma_get_peer_cert (NUM2BSIG (signature)); + + if (cert != NULL) { + out = BIO_new(BIO_s_mem()); + PEM_write_bio_X509(out, cert); + BIO_get_mem_ptr(out, &buf); + ret = rb_str_new(buf->data, buf->length); + X509_free(cert); + BIO_free(out); + } + + return ret; +} +#else +static VALUE t_get_peer_cert (VALUE self UNUSED, VALUE signature UNUSED) +{ + return Qnil; +} +#endif + +/*************** +t_get_cipher_bits +***************/ + +#ifdef WITH_SSL +static VALUE t_get_cipher_bits (VALUE self UNUSED, VALUE signature) +{ + int bits = evma_get_cipher_bits (NUM2BSIG (signature)); + if (bits == -1) + return Qnil; + return INT2NUM (bits); +} +#else +static VALUE t_get_cipher_bits (VALUE self UNUSED, VALUE signature UNUSED) +{ + return Qnil; +} +#endif + +/*************** +t_get_cipher_name +***************/ + +#ifdef WITH_SSL +static VALUE t_get_cipher_name (VALUE self UNUSED, VALUE signature) +{ + const char *protocol = evma_get_cipher_name (NUM2BSIG (signature)); + if (protocol) + return rb_str_new2 (protocol); + + return Qnil; +} +#else +static VALUE t_get_cipher_name (VALUE self UNUSED, VALUE signature UNUSED) +{ + return Qnil; +} +#endif + +/*************** +t_get_cipher_protocol +***************/ + +#ifdef WITH_SSL +static VALUE t_get_cipher_protocol (VALUE self UNUSED, VALUE signature) +{ + const char *cipher = evma_get_cipher_protocol (NUM2BSIG (signature)); + if (cipher) + return rb_str_new2 (cipher); + + return Qnil; +} +#else +static VALUE t_get_cipher_protocol (VALUE self UNUSED, VALUE signature UNUSED) +{ + return Qnil; +} +#endif + +/*************** +t_get_sni_hostname +***************/ + +#ifdef WITH_SSL +static VALUE t_get_sni_hostname (VALUE self UNUSED, VALUE signature) +{ + const char *sni_hostname = evma_get_sni_hostname (NUM2BSIG (signature)); + if (sni_hostname) + return rb_str_new2 (sni_hostname); + + return Qnil; +} +#else +static VALUE t_get_sni_hostname (VALUE self UNUSED, VALUE signature UNUSED) +{ + return Qnil; +} +#endif + +/************** +t_get_peername +**************/ + +static VALUE t_get_peername (VALUE self UNUSED, VALUE signature) +{ + char buf[1024]; + socklen_t len = sizeof buf; + try { + if (evma_get_peername (NUM2BSIG (signature), (struct sockaddr*)buf, &len)) { + return rb_str_new (buf, len); + } + } catch (std::runtime_error e) { + rb_raise (rb_eRuntimeError, "%s", e.what()); + } + + return Qnil; +} + +/************** +t_get_sockname +**************/ + +static VALUE t_get_sockname (VALUE self UNUSED, VALUE signature) +{ + char buf[1024]; + socklen_t len = sizeof buf; + try { + if (evma_get_sockname (NUM2BSIG (signature), (struct sockaddr*)buf, &len)) { + return rb_str_new (buf, len); + } + } catch (std::runtime_error e) { + rb_raise (rb_eRuntimeError, "%s", e.what()); + } + + return Qnil; +} + +/******************** +t_get_subprocess_pid +********************/ + +static VALUE t_get_subprocess_pid (VALUE self UNUSED, VALUE signature) +{ + pid_t pid; + if (evma_get_subprocess_pid (NUM2BSIG (signature), &pid)) { + return INT2NUM (pid); + } + + return Qnil; +} + +/*********************** +t_get_subprocess_status +***********************/ + +static VALUE t_get_subprocess_status (VALUE self UNUSED, VALUE signature) +{ + VALUE proc_status = Qnil; + + int status; + pid_t pid; + + if (evma_get_subprocess_status (NUM2BSIG (signature), &status)) { + if (evma_get_subprocess_pid (NUM2BSIG (signature), &pid)) { + proc_status = rb_obj_alloc(rb_cProcStatus); + + /* MRI Ruby uses hidden instance vars */ + rb_iv_set(proc_status, "status", INT2FIX(status)); + rb_iv_set(proc_status, "pid", INT2FIX(pid)); + +#ifdef RUBINIUS + /* Rubinius uses standard instance vars */ + rb_iv_set(proc_status, "@pid", INT2FIX(pid)); + if (WIFEXITED(status)) { + rb_iv_set(proc_status, "@status", INT2FIX(WEXITSTATUS(status))); + } else if (WIFSIGNALED(status)) { + rb_iv_set(proc_status, "@termsig", INT2FIX(WTERMSIG(status))); + } else if (WIFSTOPPED(status)) { + rb_iv_set(proc_status, "@stopsig", INT2FIX(WSTOPSIG(status))); + } +#endif + } + } + + return proc_status; +} + +/********************** +t_get_connection_count +**********************/ + +static VALUE t_get_connection_count (VALUE self UNUSED) +{ + return INT2NUM(evma_get_connection_count()); +} + +/***************************** +t_get_comm_inactivity_timeout +*****************************/ + +static VALUE t_get_comm_inactivity_timeout (VALUE self UNUSED, VALUE signature) +{ + return rb_float_new(evma_get_comm_inactivity_timeout(NUM2BSIG (signature))); +} + +/***************************** +t_set_comm_inactivity_timeout +*****************************/ + +static VALUE t_set_comm_inactivity_timeout (VALUE self UNUSED, VALUE signature, VALUE timeout) +{ + float ti = RFLOAT_VALUE(timeout); + if (evma_set_comm_inactivity_timeout(NUM2BSIG(signature), ti)) { + return Qtrue; + } + return Qfalse; +} + +/***************************** +t_get_pending_connect_timeout +*****************************/ + +static VALUE t_get_pending_connect_timeout (VALUE self UNUSED, VALUE signature) +{ + return rb_float_new(evma_get_pending_connect_timeout(NUM2BSIG (signature))); +} + +/***************************** +t_set_pending_connect_timeout +*****************************/ + +static VALUE t_set_pending_connect_timeout (VALUE self UNUSED, VALUE signature, VALUE timeout) +{ + float ti = RFLOAT_VALUE(timeout); + if (evma_set_pending_connect_timeout(NUM2BSIG(signature), ti)) { + return Qtrue; + } + return Qfalse; +} + +/*************** +t_send_datagram +***************/ + +static VALUE t_send_datagram (VALUE self UNUSED, VALUE signature, VALUE data, VALUE data_length, VALUE address, VALUE port) +{ + int b = evma_send_datagram (NUM2BSIG (signature), StringValuePtr (data), FIX2INT (data_length), StringValueCStr(address), FIX2INT(port)); + if (b < 0) + rb_raise (EM_eConnectionError, "%s", "error in sending datagram"); // FIXME: this could be more specific. + return INT2NUM (b); +} + + +/****************** +t_close_connection +******************/ + +static VALUE t_close_connection (VALUE self UNUSED, VALUE signature, VALUE after_writing) +{ + evma_close_connection (NUM2BSIG (signature), ((after_writing == Qtrue) ? 1 : 0)); + return Qnil; +} + +/******************************** +t_report_connection_error_status +********************************/ + +static VALUE t_report_connection_error_status (VALUE self UNUSED, VALUE signature) +{ + int b = evma_report_connection_error_status (NUM2BSIG (signature)); + return INT2NUM (b); +} + + + +/**************** +t_connect_server +****************/ + +static VALUE t_connect_server (VALUE self UNUSED, VALUE server, VALUE port) +{ + // Avoid FIX2INT in this case, because it doesn't deal with type errors properly. + // Specifically, if the value of port comes in as a string rather than an integer, + // NUM2INT will throw a type error, but FIX2INT will generate garbage. + + try { + const uintptr_t f = evma_connect_to_server (NULL, 0, StringValueCStr(server), NUM2INT(port)); + if (!f) + rb_raise (EM_eConnectionError, "%s", "no connection"); + return BSIG2NUM (f); + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + +/********************* +t_bind_connect_server +*********************/ + +static VALUE t_bind_connect_server (VALUE self UNUSED, VALUE bind_addr, VALUE bind_port, VALUE server, VALUE port) +{ + // Avoid FIX2INT in this case, because it doesn't deal with type errors properly. + // Specifically, if the value of port comes in as a string rather than an integer, + // NUM2INT will throw a type error, but FIX2INT will generate garbage. + + try { + const uintptr_t f = evma_connect_to_server (StringValueCStr(bind_addr), NUM2INT(bind_port), StringValueCStr(server), NUM2INT(port)); + if (!f) + rb_raise (EM_eConnectionError, "%s", "no connection"); + return BSIG2NUM (f); + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + +/********************* +t_connect_unix_server +*********************/ + +static VALUE t_connect_unix_server (VALUE self UNUSED, VALUE serversocket) +{ + const uintptr_t f = evma_connect_to_unix_server (StringValueCStr(serversocket)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no connection"); + return BSIG2NUM (f); +} + +/*********** +t_attach_fd +***********/ + +static VALUE t_attach_fd (VALUE self UNUSED, VALUE file_descriptor, VALUE watch_mode) +{ + const uintptr_t f = evma_attach_fd (NUM2INT(file_descriptor), watch_mode == Qtrue); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no connection"); + return BSIG2NUM (f); +} + +/*********** +t_detach_fd +***********/ + +static VALUE t_detach_fd (VALUE self UNUSED, VALUE signature) +{ + return INT2NUM(evma_detach_fd (NUM2BSIG (signature))); +} + +/********************* +t_get_file_descriptor +*********************/ +static VALUE t_get_file_descriptor (VALUE self UNUSED, VALUE signature) +{ + return INT2NUM(evma_get_file_descriptor (NUM2BSIG (signature))); +} + +/************** +t_get_sock_opt +**************/ + +static VALUE t_get_sock_opt (VALUE self UNUSED, VALUE signature, VALUE lev, VALUE optname) +{ + int fd = evma_get_file_descriptor (NUM2BSIG (signature)); + int level = NUM2INT(lev), option = NUM2INT(optname); + socklen_t len = 128; + char buf[128]; + + if (getsockopt(fd, level, option, buf, &len) < 0) + rb_sys_fail("getsockopt"); + + return rb_str_new(buf, len); +} + +/************** +t_set_sock_opt +**************/ + +static VALUE t_set_sock_opt (VALUE self UNUSED, VALUE signature, VALUE lev, VALUE optname, VALUE optval) +{ + int fd = evma_get_file_descriptor (NUM2BSIG (signature)); + int level = NUM2INT(lev), option = NUM2INT(optname); + int i; + const void *v; + socklen_t len; + + switch (TYPE(optval)) { + case T_FIXNUM: + i = FIX2INT(optval); + goto numval; + case T_FALSE: + i = 0; + goto numval; + case T_TRUE: + i = 1; + numval: + v = (void*)&i; len = sizeof(i); + break; + default: + StringValue(optval); + v = RSTRING_PTR(optval); + len = RSTRING_LENINT(optval); + break; + } + + + if (setsockopt(fd, level, option, (char *)v, len) < 0) + rb_sys_fail("setsockopt"); + + return INT2FIX(0); +} + +/******************** +t_is_notify_readable +********************/ + +static VALUE t_is_notify_readable (VALUE self UNUSED, VALUE signature) +{ + return evma_is_notify_readable(NUM2BSIG (signature)) ? Qtrue : Qfalse; +} + +/********************* +t_set_notify_readable +*********************/ + +static VALUE t_set_notify_readable (VALUE self UNUSED, VALUE signature, VALUE mode) +{ + evma_set_notify_readable(NUM2BSIG(signature), mode == Qtrue); + return Qnil; +} + +/******************** +t_is_notify_readable +********************/ + +static VALUE t_is_notify_writable (VALUE self UNUSED, VALUE signature) +{ + return evma_is_notify_writable(NUM2BSIG (signature)) ? Qtrue : Qfalse; +} + +/********************* +t_set_notify_writable +*********************/ + +static VALUE t_set_notify_writable (VALUE self UNUSED, VALUE signature, VALUE mode) +{ + evma_set_notify_writable(NUM2BSIG (signature), mode == Qtrue); + return Qnil; +} + +/******* +t_pause +*******/ + +static VALUE t_pause (VALUE self UNUSED, VALUE signature) +{ + return evma_pause(NUM2BSIG (signature)) ? Qtrue : Qfalse; +} + +/******** +t_resume +********/ + +static VALUE t_resume (VALUE self UNUSED, VALUE signature) +{ + return evma_resume(NUM2BSIG (signature)) ? Qtrue : Qfalse; +} + +/********** +t_paused_p +**********/ + +static VALUE t_paused_p (VALUE self UNUSED, VALUE signature) +{ + return evma_is_paused(NUM2BSIG (signature)) ? Qtrue : Qfalse; +} + +/********************* +t_num_close_scheduled +*********************/ + +static VALUE t_num_close_scheduled (VALUE self UNUSED) +{ + return INT2FIX(evma_num_close_scheduled()); +} + +/***************** +t_open_udp_socket +*****************/ + +static VALUE t_open_udp_socket (VALUE self UNUSED, VALUE server, VALUE port) +{ + const uintptr_t f = evma_open_datagram_socket (StringValueCStr(server), FIX2INT(port)); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no datagram socket"); + return BSIG2NUM(f); +} + + + +/***************** +t_release_machine +*****************/ + +static VALUE t_release_machine (VALUE self UNUSED) +{ + evma_release_library(); + return Qnil; +} + + +/****** +t_stop +******/ + +static VALUE t_stop (VALUE self UNUSED) +{ + evma_stop_machine(); + return Qnil; +} + +/****************** +t_signal_loopbreak +******************/ + +static VALUE t_signal_loopbreak (VALUE self UNUSED) +{ + evma_signal_loopbreak(); + return Qnil; +} + +/************** +t_library_type +**************/ + +static VALUE t_library_type (VALUE self UNUSED) +{ + return rb_eval_string (":extension"); +} + + + +/******************* +t_set_timer_quantum +*******************/ + +static VALUE t_set_timer_quantum (VALUE self UNUSED, VALUE interval) +{ + evma_set_timer_quantum (FIX2INT (interval)); + return Qnil; +} + +/******************** +t_get_max_timer_count +********************/ + +static VALUE t_get_max_timer_count (VALUE self UNUSED) +{ + return INT2FIX (evma_get_max_timer_count()); +} + +/******************** +t_set_max_timer_count +********************/ + +static VALUE t_set_max_timer_count (VALUE self UNUSED, VALUE ct) +{ + evma_set_max_timer_count (FIX2INT (ct)); + return Qnil; +} + +/******************** +t_get/set_simultaneous_accept_count +********************/ + +static VALUE t_get_simultaneous_accept_count (VALUE self UNUSED) +{ + return INT2FIX (evma_get_simultaneous_accept_count()); +} + +static VALUE t_set_simultaneous_accept_count (VALUE self UNUSED, VALUE ct) +{ + evma_set_simultaneous_accept_count (FIX2INT (ct)); + return Qnil; +} + +/*************** +t_setuid_string +***************/ + +static VALUE t_setuid_string (VALUE self UNUSED, VALUE username) +{ + evma_setuid_string (StringValueCStr (username)); + return Qnil; +} + + + +/************** +t_invoke_popen +**************/ + +static VALUE t_invoke_popen (VALUE self UNUSED, VALUE cmd) +{ + #ifdef OS_WIN32 + rb_raise (EM_eUnsupported, "popen is not available on this platform"); + #endif + + int len = RARRAY_LEN(cmd); + if (len >= 2048) + rb_raise (rb_eRuntimeError, "%s", "too many arguments to popen"); + char *strings [2048]; + for (int i=0; i < len; i++) { + VALUE ix = INT2FIX (i); + VALUE s = rb_ary_aref (1, &ix, cmd); + strings[i] = StringValueCStr (s); + } + strings[len] = NULL; + + uintptr_t f = 0; + try { + f = evma_popen (strings); + } catch (std::runtime_error e) { + rb_raise (rb_eRuntimeError, "%s", e.what()); + } + if (!f) { + char *err = strerror (errno); + char buf[100]; + memset (buf, 0, sizeof(buf)); + snprintf (buf, sizeof(buf)-1, "no popen: %s", (err?err:"???")); + rb_raise (rb_eRuntimeError, "%s", buf); + } + return BSIG2NUM (f); +} + + +/*************** +t_read_keyboard +***************/ + +static VALUE t_read_keyboard (VALUE self UNUSED) +{ + const uintptr_t f = evma_open_keyboard(); + if (!f) + rb_raise (rb_eRuntimeError, "%s", "no keyboard reader"); + return BSIG2NUM (f); +} + + +/**************** +t_watch_filename +****************/ + +static VALUE t_watch_filename (VALUE self UNUSED, VALUE fname) +{ + try { + return BSIG2NUM(evma_watch_filename(StringValueCStr(fname))); + } catch (std::runtime_error e) { + rb_raise (EM_eUnsupported, "%s", e.what()); + } + return Qnil; +} + + +/****************** +t_unwatch_filename +******************/ + +static VALUE t_unwatch_filename (VALUE self UNUSED, VALUE sig) +{ + try { + evma_unwatch_filename(NUM2BSIG (sig)); + } catch (std::runtime_error e) { + rb_raise (EM_eInvalidSignature, "%s", e.what()); + } + + return Qnil; +} + + +/*********** +t_watch_pid +***********/ + +static VALUE t_watch_pid (VALUE self UNUSED, VALUE pid) +{ + try { + return BSIG2NUM(evma_watch_pid(NUM2INT(pid))); + } catch (std::runtime_error e) { + rb_raise (EM_eUnsupported, "%s", e.what()); + } + return Qnil; +} + + +/************* +t_unwatch_pid +*************/ + +static VALUE t_unwatch_pid (VALUE self UNUSED, VALUE sig) +{ + evma_unwatch_pid(NUM2BSIG (sig)); + return Qnil; +} + + +/********** +t__epoll_p +**********/ + +static VALUE t__epoll_p (VALUE self UNUSED) +{ + #ifdef HAVE_EPOLL + return Qtrue; + #else + return Qfalse; + #endif +} + +/******** +t__epoll +********/ + +static VALUE t__epoll (VALUE self UNUSED) +{ + if (t__epoll_p(self) == Qfalse) + return Qfalse; + + evma_set_epoll (1); + return Qtrue; +} + +/*********** +t__epoll_set +***********/ + +static VALUE t__epoll_set (VALUE self, VALUE val) +{ + if (t__epoll_p(self) == Qfalse && val == Qtrue) + rb_raise (EM_eUnsupported, "%s", "epoll is not supported on this platform"); + + evma_set_epoll (val == Qtrue ? 1 : 0); + return val; +} + + +/*********** +t__kqueue_p +***********/ + +static VALUE t__kqueue_p (VALUE self UNUSED) +{ + #ifdef HAVE_KQUEUE + return Qtrue; + #else + return Qfalse; + #endif +} + +/********* +t__kqueue +*********/ + +static VALUE t__kqueue (VALUE self UNUSED) +{ + if (t__kqueue_p(self) == Qfalse) + return Qfalse; + + evma_set_kqueue (1); + return Qtrue; +} + +/************* +t__kqueue_set +*************/ + +static VALUE t__kqueue_set (VALUE self, VALUE val) +{ + if (t__kqueue_p(self) == Qfalse && val == Qtrue) + rb_raise (EM_eUnsupported, "%s", "kqueue is not supported on this platform"); + + evma_set_kqueue (val == Qtrue ? 1 : 0); + return val; +} + + +/******** +t__ssl_p +********/ + +static VALUE t__ssl_p (VALUE self UNUSED) +{ + #ifdef WITH_SSL + return Qtrue; + #else + return Qfalse; + #endif +} + +/******** +t_stopping +********/ + +static VALUE t_stopping () +{ + if (evma_stopping()) { + return Qtrue; + } else { + return Qfalse; + } +} + + +/**************** +t_send_file_data +****************/ + +static VALUE t_send_file_data (VALUE self UNUSED, VALUE signature, VALUE filename) +{ + + /* The current implementation of evma_send_file_data_to_connection enforces a strict + * upper limit on the file size it will transmit (currently 32K). The function returns + * zero on success, -1 if the requested file exceeds its size limit, and a positive + * number for other errors. + * TODO: Positive return values are actually errno's, which is probably the wrong way to + * do this. For one thing it's ugly. For another, we can't be sure zero is never a real errno. + */ + + int b = evma_send_file_data_to_connection (NUM2BSIG (signature), StringValueCStr(filename)); + if (b == -1) + rb_raise(rb_eRuntimeError, "%s", "File too large. send_file_data() supports files under 32k."); + if (b > 0) { + char *err = strerror (b); + char buf[1024]; + memset (buf, 0, sizeof(buf)); + snprintf (buf, sizeof(buf)-1, ": %s %s", StringValueCStr(filename),(err?err:"???")); + + rb_raise (rb_eIOError, "%s", buf); + } + + return INT2NUM (0); +} + + +/******************* +t_set_rlimit_nofile +*******************/ + +static VALUE t_set_rlimit_nofile (VALUE self UNUSED, VALUE arg) +{ + arg = (NIL_P(arg)) ? -1 : NUM2INT (arg); + return INT2NUM (evma_set_rlimit_nofile (arg)); +} + +/*************************** +conn_get_outbound_data_size +***************************/ + +static VALUE conn_get_outbound_data_size (VALUE self) +{ + VALUE sig = rb_ivar_get (self, Intern_at_signature); + return INT2NUM (evma_get_outbound_data_size (NUM2BSIG (sig))); +} + + +/****************************** +conn_associate_callback_target +******************************/ + +static VALUE conn_associate_callback_target (VALUE self UNUSED, VALUE sig UNUSED) +{ + // No-op for the time being. + return Qnil; +} + + +/*************** +t_get_loop_time +****************/ + +static VALUE t_get_loop_time (VALUE self UNUSED) +{ + uint64_t current_time = evma_get_current_loop_time(); + if (current_time == 0) { + return Qnil; + } + + // Generally the industry has moved to 64-bit time_t, this is just in case we're 32-bit time_t. + if (sizeof(time_t) < 8 && current_time > INT_MAX) { + return rb_funcall(rb_cTime, Intern_at, 2, INT2NUM(current_time / 1000000), INT2NUM(current_time % 1000000)); + } else { + return rb_time_new(current_time / 1000000, current_time % 1000000); + } +} + + +/************* +t_start_proxy +**************/ + +static VALUE t_start_proxy (VALUE self UNUSED, VALUE from, VALUE to, VALUE bufsize, VALUE length) +{ + try { + evma_start_proxy(NUM2BSIG (from), NUM2BSIG (to), NUM2ULONG(bufsize), NUM2ULONG(length)); + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + + +/************ +t_stop_proxy +*************/ + +static VALUE t_stop_proxy (VALUE self UNUSED, VALUE from) +{ + try{ + evma_stop_proxy(NUM2BSIG (from)); + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + +/*************** +t_proxied_bytes +****************/ + +static VALUE t_proxied_bytes (VALUE self UNUSED, VALUE from) +{ + try{ + return BSIG2NUM(evma_proxied_bytes(NUM2BSIG (from))); + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + +/*************** +t_get_idle_time +****************/ + +static VALUE t_get_idle_time (VALUE self UNUSED, VALUE from) +{ + try{ + uint64_t current_time = evma_get_current_loop_time(); + uint64_t time = evma_get_last_activity_time(NUM2BSIG (from)); + if (current_time != 0 && time != 0) { + if (time >= current_time) + return BSIG2NUM(0); + else { + uint64_t diff = current_time - time; + float seconds = diff / (1000.0*1000.0); + return rb_float_new(seconds); + } + return Qnil; + } + } catch (std::runtime_error e) { + rb_raise (EM_eConnectionError, "%s", e.what()); + } + return Qnil; +} + +/************************ +t_get_heartbeat_interval +*************************/ + +static VALUE t_get_heartbeat_interval (VALUE self UNUSED) +{ + return rb_float_new(evma_get_heartbeat_interval()); +} + + +/************************ +t_set_heartbeat_interval +*************************/ + +static VALUE t_set_heartbeat_interval (VALUE self UNUSED, VALUE interval) +{ + float iv = RFLOAT_VALUE(interval); + if (evma_set_heartbeat_interval(iv)) + return Qtrue; + return Qfalse; +} + + +/********************* +Init_rubyeventmachine +*********************/ + +extern "C" void Init_rubyeventmachine() +{ + // Lookup Process::Status for get_subprocess_status + VALUE rb_mProcess = rb_const_get(rb_cObject, rb_intern("Process")); + rb_cProcStatus = rb_const_get(rb_mProcess, rb_intern("Status")); + + // Tuck away some symbol values so we don't have to look 'em up every time we need 'em. + Intern_at_signature = rb_intern ("@signature"); + Intern_at_timers = rb_intern ("@timers"); + Intern_at_conns = rb_intern ("@conns"); + Intern_at_error_handler = rb_intern("@error_handler"); + + Intern_event_callback = rb_intern ("event_callback"); + Intern_run_deferred_callbacks = rb_intern ("run_deferred_callbacks"); + Intern_delete = rb_intern ("delete"); + Intern_call = rb_intern ("call"); + Intern_at = rb_intern("at"); + Intern_receive_data = rb_intern ("receive_data"); + Intern_ssl_handshake_completed = rb_intern ("ssl_handshake_completed"); + Intern_ssl_verify_peer = rb_intern ("ssl_verify_peer"); + Intern_notify_readable = rb_intern ("notify_readable"); + Intern_notify_writable = rb_intern ("notify_writable"); + Intern_proxy_target_unbound = rb_intern ("proxy_target_unbound"); + Intern_proxy_completed = rb_intern ("proxy_completed"); + Intern_connection_completed = rb_intern ("connection_completed"); + + // INCOMPLETE, we need to define class Connections inside module EventMachine + // run_machine and run_machine_without_threads are now identical. + // Must deprecate the without_threads variant. + EmModule = rb_define_module ("EventMachine"); + EmConnection = rb_define_class_under (EmModule, "Connection", rb_cObject); + + rb_define_class_under (EmModule, "NoHandlerForAcceptedConnection", rb_eRuntimeError); + EM_eConnectionError = rb_define_class_under (EmModule, "ConnectionError", rb_eRuntimeError); + EM_eConnectionNotBound = rb_define_class_under (EmModule, "ConnectionNotBound", rb_eRuntimeError); + EM_eUnknownTimerFired = rb_define_class_under (EmModule, "UnknownTimerFired", rb_eRuntimeError); + EM_eUnsupported = rb_define_class_under (EmModule, "Unsupported", rb_eRuntimeError); + EM_eInvalidSignature = rb_define_class_under (EmModule, "InvalidSignature", rb_eRuntimeError); + + rb_define_module_function (EmModule, "initialize_event_machine", (VALUE(*)(...))t_initialize_event_machine, 0); + rb_define_module_function (EmModule, "run_machine_once", (VALUE(*)(...))t_run_machine_once, 0); + rb_define_module_function (EmModule, "run_machine", (VALUE(*)(...))t_run_machine, 0); + rb_define_module_function (EmModule, "run_machine_without_threads", (VALUE(*)(...))t_run_machine, 0); + rb_define_module_function (EmModule, "add_oneshot_timer", (VALUE(*)(...))t_add_oneshot_timer, 1); + rb_define_module_function (EmModule, "start_tcp_server", (VALUE(*)(...))t_start_server, 2); + rb_define_module_function (EmModule, "stop_tcp_server", (VALUE(*)(...))t_stop_server, 1); + rb_define_module_function (EmModule, "start_unix_server", (VALUE(*)(...))t_start_unix_server, 1); + rb_define_module_function (EmModule, "attach_sd", (VALUE(*)(...))t_attach_sd, 1); + rb_define_module_function (EmModule, "set_tls_parms", (VALUE(*)(...))t_set_tls_parms, 10); + rb_define_module_function (EmModule, "start_tls", (VALUE(*)(...))t_start_tls, 1); + rb_define_module_function (EmModule, "get_peer_cert", (VALUE(*)(...))t_get_peer_cert, 1); + rb_define_module_function (EmModule, "get_cipher_bits", (VALUE(*)(...))t_get_cipher_bits, 1); + rb_define_module_function (EmModule, "get_cipher_name", (VALUE(*)(...))t_get_cipher_name, 1); + rb_define_module_function (EmModule, "get_cipher_protocol", (VALUE(*)(...))t_get_cipher_protocol, 1); + rb_define_module_function (EmModule, "get_sni_hostname", (VALUE(*)(...))t_get_sni_hostname, 1); + rb_define_module_function (EmModule, "send_data", (VALUE(*)(...))t_send_data, 3); + rb_define_module_function (EmModule, "send_datagram", (VALUE(*)(...))t_send_datagram, 5); + rb_define_module_function (EmModule, "close_connection", (VALUE(*)(...))t_close_connection, 2); + rb_define_module_function (EmModule, "report_connection_error_status", (VALUE(*)(...))t_report_connection_error_status, 1); + rb_define_module_function (EmModule, "connect_server", (VALUE(*)(...))t_connect_server, 2); + rb_define_module_function (EmModule, "bind_connect_server", (VALUE(*)(...))t_bind_connect_server, 4); + rb_define_module_function (EmModule, "connect_unix_server", (VALUE(*)(...))t_connect_unix_server, 1); + + rb_define_module_function (EmModule, "attach_fd", (VALUE (*)(...))t_attach_fd, 2); + rb_define_module_function (EmModule, "detach_fd", (VALUE (*)(...))t_detach_fd, 1); + rb_define_module_function (EmModule, "get_file_descriptor", (VALUE (*)(...))t_get_file_descriptor, 1); + rb_define_module_function (EmModule, "get_sock_opt", (VALUE (*)(...))t_get_sock_opt, 3); + rb_define_module_function (EmModule, "set_sock_opt", (VALUE (*)(...))t_set_sock_opt, 4); + rb_define_module_function (EmModule, "set_notify_readable", (VALUE (*)(...))t_set_notify_readable, 2); + rb_define_module_function (EmModule, "set_notify_writable", (VALUE (*)(...))t_set_notify_writable, 2); + rb_define_module_function (EmModule, "is_notify_readable", (VALUE (*)(...))t_is_notify_readable, 1); + rb_define_module_function (EmModule, "is_notify_writable", (VALUE (*)(...))t_is_notify_writable, 1); + + rb_define_module_function (EmModule, "pause_connection", (VALUE (*)(...))t_pause, 1); + rb_define_module_function (EmModule, "resume_connection", (VALUE (*)(...))t_resume, 1); + rb_define_module_function (EmModule, "connection_paused?", (VALUE (*)(...))t_paused_p, 1); + rb_define_module_function (EmModule, "num_close_scheduled", (VALUE (*)(...))t_num_close_scheduled, 0); + + rb_define_module_function (EmModule, "start_proxy", (VALUE (*)(...))t_start_proxy, 4); + rb_define_module_function (EmModule, "stop_proxy", (VALUE (*)(...))t_stop_proxy, 1); + rb_define_module_function (EmModule, "get_proxied_bytes", (VALUE (*)(...))t_proxied_bytes, 1); + + rb_define_module_function (EmModule, "watch_filename", (VALUE (*)(...))t_watch_filename, 1); + rb_define_module_function (EmModule, "unwatch_filename", (VALUE (*)(...))t_unwatch_filename, 1); + + rb_define_module_function (EmModule, "watch_pid", (VALUE (*)(...))t_watch_pid, 1); + rb_define_module_function (EmModule, "unwatch_pid", (VALUE (*)(...))t_unwatch_pid, 1); + + rb_define_module_function (EmModule, "current_time", (VALUE(*)(...))t_get_loop_time, 0); + + rb_define_module_function (EmModule, "open_udp_socket", (VALUE(*)(...))t_open_udp_socket, 2); + rb_define_module_function (EmModule, "read_keyboard", (VALUE(*)(...))t_read_keyboard, 0); + rb_define_module_function (EmModule, "release_machine", (VALUE(*)(...))t_release_machine, 0); + rb_define_module_function (EmModule, "stop", (VALUE(*)(...))t_stop, 0); + rb_define_module_function (EmModule, "signal_loopbreak", (VALUE(*)(...))t_signal_loopbreak, 0); + rb_define_module_function (EmModule, "library_type", (VALUE(*)(...))t_library_type, 0); + rb_define_module_function (EmModule, "set_timer_quantum", (VALUE(*)(...))t_set_timer_quantum, 1); + rb_define_module_function (EmModule, "get_max_timer_count", (VALUE(*)(...))t_get_max_timer_count, 0); + rb_define_module_function (EmModule, "set_max_timer_count", (VALUE(*)(...))t_set_max_timer_count, 1); + rb_define_module_function (EmModule, "get_simultaneous_accept_count", (VALUE(*)(...))t_get_simultaneous_accept_count, 0); + rb_define_module_function (EmModule, "set_simultaneous_accept_count", (VALUE(*)(...))t_set_simultaneous_accept_count, 1); + rb_define_module_function (EmModule, "setuid_string", (VALUE(*)(...))t_setuid_string, 1); + rb_define_module_function (EmModule, "invoke_popen", (VALUE(*)(...))t_invoke_popen, 1); + rb_define_module_function (EmModule, "send_file_data", (VALUE(*)(...))t_send_file_data, 2); + rb_define_module_function (EmModule, "get_heartbeat_interval", (VALUE(*)(...))t_get_heartbeat_interval, 0); + rb_define_module_function (EmModule, "set_heartbeat_interval", (VALUE(*)(...))t_set_heartbeat_interval, 1); + rb_define_module_function (EmModule, "get_idle_time", (VALUE(*)(...))t_get_idle_time, 1); + + rb_define_module_function (EmModule, "get_peername", (VALUE(*)(...))t_get_peername, 1); + rb_define_module_function (EmModule, "get_sockname", (VALUE(*)(...))t_get_sockname, 1); + rb_define_module_function (EmModule, "get_subprocess_pid", (VALUE(*)(...))t_get_subprocess_pid, 1); + rb_define_module_function (EmModule, "get_subprocess_status", (VALUE(*)(...))t_get_subprocess_status, 1); + rb_define_module_function (EmModule, "get_comm_inactivity_timeout", (VALUE(*)(...))t_get_comm_inactivity_timeout, 1); + rb_define_module_function (EmModule, "set_comm_inactivity_timeout", (VALUE(*)(...))t_set_comm_inactivity_timeout, 2); + rb_define_module_function (EmModule, "get_pending_connect_timeout", (VALUE(*)(...))t_get_pending_connect_timeout, 1); + rb_define_module_function (EmModule, "set_pending_connect_timeout", (VALUE(*)(...))t_set_pending_connect_timeout, 2); + rb_define_module_function (EmModule, "set_rlimit_nofile", (VALUE(*)(...))t_set_rlimit_nofile, 1); + rb_define_module_function (EmModule, "get_connection_count", (VALUE(*)(...))t_get_connection_count, 0); + + rb_define_module_function (EmModule, "epoll", (VALUE(*)(...))t__epoll, 0); + rb_define_module_function (EmModule, "epoll=", (VALUE(*)(...))t__epoll_set, 1); + rb_define_module_function (EmModule, "epoll?", (VALUE(*)(...))t__epoll_p, 0); + + rb_define_module_function (EmModule, "kqueue", (VALUE(*)(...))t__kqueue, 0); + rb_define_module_function (EmModule, "kqueue=", (VALUE(*)(...))t__kqueue_set, 1); + rb_define_module_function (EmModule, "kqueue?", (VALUE(*)(...))t__kqueue_p, 0); + + rb_define_module_function (EmModule, "ssl?", (VALUE(*)(...))t__ssl_p, 0); + rb_define_module_function(EmModule, "stopping?",(VALUE(*)(...))t_stopping, 0); + + rb_define_method (EmConnection, "get_outbound_data_size", (VALUE(*)(...))conn_get_outbound_data_size, 0); + rb_define_method (EmConnection, "associate_callback_target", (VALUE(*)(...))conn_associate_callback_target, 1); + + // Connection states + rb_define_const (EmModule, "TimerFired", INT2NUM(EM_TIMER_FIRED )); + rb_define_const (EmModule, "ConnectionData", INT2NUM(EM_CONNECTION_READ )); + rb_define_const (EmModule, "ConnectionUnbound", INT2NUM(EM_CONNECTION_UNBOUND )); + rb_define_const (EmModule, "ConnectionAccepted", INT2NUM(EM_CONNECTION_ACCEPTED )); + rb_define_const (EmModule, "ConnectionCompleted", INT2NUM(EM_CONNECTION_COMPLETED )); + rb_define_const (EmModule, "LoopbreakSignalled", INT2NUM(EM_LOOPBREAK_SIGNAL )); + rb_define_const (EmModule, "ConnectionNotifyReadable", INT2NUM(EM_CONNECTION_NOTIFY_READABLE)); + rb_define_const (EmModule, "ConnectionNotifyWritable", INT2NUM(EM_CONNECTION_NOTIFY_WRITABLE)); + rb_define_const (EmModule, "SslHandshakeCompleted", INT2NUM(EM_SSL_HANDSHAKE_COMPLETED )); + rb_define_const (EmModule, "SslVerify", INT2NUM(EM_SSL_VERIFY )); + // EM_PROXY_TARGET_UNBOUND = 110, + // EM_PROXY_COMPLETED = 111 + + // SSL Protocols + rb_define_const (EmModule, "EM_PROTO_SSLv2", INT2NUM(EM_PROTO_SSLv2 )); + rb_define_const (EmModule, "EM_PROTO_SSLv3", INT2NUM(EM_PROTO_SSLv3 )); + rb_define_const (EmModule, "EM_PROTO_TLSv1", INT2NUM(EM_PROTO_TLSv1 )); + rb_define_const (EmModule, "EM_PROTO_TLSv1_1", INT2NUM(EM_PROTO_TLSv1_1)); + rb_define_const (EmModule, "EM_PROTO_TLSv1_2", INT2NUM(EM_PROTO_TLSv1_2)); +} + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/rubymain.o new file mode 100644 index 0000000000000000000000000000000000000000..0a0460212aa3889d7f57e1c511d21992f67e89d4 GIT binary patch literal 1537088 zcmeD^34D~r_20Lf4a*@3gd+&ZA_)oM5D+9>k|5xMAXkFiAtV7JkU+BGP`L~U5fLID zsKKM!YQ0-)J?eo1Qm-mnk7||L)(Ya$dZKON|Bm@)zGF7o1nu?D{&eTfoA=(lYu?Ov zY*;sX{1~5U8rH`&&Nfuf!b1B1GtCE6!M z`;=&(7VTcq?icL=(LN{I7exD#XkQlXLD9Y@+Sf(MEf_+AgB)D%x(MO%-jLXnTmZr)YbN_6*VX6YZIz9VpsC zq8%*Sp`slw+7Y777VSBr9WB~(MLSls=ZSWLXeWwxvS_D@HdnM4h<1i(XNh)>X!Asy zFWLgp7KwJDXp2R=ShPz;TPoV+qAeF~g=klbcC~0P7VR3*t`qGB(N>CflV~@Kwo0^H zMY~P3+eKR~+MS}kMzq(7_IlCYDB9hky;-!kiuN|q{#dkki1w$Vy<4>RiuQid{!FwF ziuNJVJ}lZtMf)q!J|WttMEkU8_lkDEXb*_?Inll#+LuK8vS<&A_BGMIF4{Lm`#aIT zBieUGdq}kJi}o*~Jq&HXJ$n-dylVff4zg8r3?RESve-UXZ=1vx2k;cYps&7*IiC!}8FILz#?Ws8LS2(A8#*os~#>}UrQu$5s*>*`vFkBT$;gx3D_ec=!M%PD~U--eI!$k%3V!hf|_P>&U z8#!Gpoh+q~LraJKZ1u^GhasI>+l7ew^VB;7e);C5?{z#UT=gvaKm5&y;io@p9WH(* zYh(hX)tliS&vHySzrla7UT}T1f%QS*RZvU>gRs5hSUfjC<8 zxa*C`zyG)VQ~SLWuKcb|!qt04l-gCj=ZF(l4A{rWe=uZUBd{;*I9Yz1|7CvImzs>* z2clkT^6C4eKUsUSb8^E~FI!bRT$N)LA*@MbtM-vSu;GTQ_D8z$o;#}QkKw9M*-$9a z;a#)n{4ghbHu%>nz~Fe?AZY!INcFPf1WPrN00goe0-bG*sraFgmz?{p&Hw-D@=~O| z1+S2KmEWC+1i)9VO|;yWr)cNvoG%cMsbFKGd;iS(`dKq!nb=J_7xO|Ai@MH637KO2ec9A zfWsBtK<&g?6lZzaSI6~mtbf<4mv2u>DU+THO zNI2i$a9r;>P~j@76s$odU7$dk5DxB!R2~aP28Oo{@7K(_OA*Ax!Yw+y?Gy^OC^39( z^Vo-gV_Di^9HL=dDRtei5$88ZK{(RFE?LosSgQ_Hy~k64!v;7V)=8FxQPw&4z|mJk zUe1E_r^^}QhVvLYzw&tSDXeOE>cUH#iVk8Dp2B{mA_k6rAmq{c@Ecy;ufeWz3m9kH z{WhlT0tDSpNZ5#D^2}3psPa!{cGbR$r94U1XO$nAReMDjN1% z`~g7+0URtESg<4eg6wG%s$RyjhBXcEWn_l8KAy4z=&-OsbsL`&8V_4s*4GEjgiViI z{8jtI+a6EZVs){z9y(*Ip5-Z_+O3jR5IW1OIykoS1l&G@^8psbP&V8}gRQx8SW27G z3BNp%aP=O!o5C>6Zk1J0F(-1x%*~!Qy6PAeW4L{j4*!S3TXRyx;jVJubUOZ^tFq^0 z&&|%0^^=sV+J9sOxC8T5)YD{E8X^EC`oPg!e!Ja3X5Fl`;WYPoZ}=Mc;qqBxArhx{#yyh`{UTB54Q|&3nz}RI#Bsx zm!r3NQl12<{YfN#<;Uq;FMz9qF761A-?}g{ytOpB@}t7a@0zb%W>v_7xazR^^ojSw zkATMbffLl;gw4YtT2QV!!u2CuaHuhGPw*vhPk8YDgw1bZkhYELZ8{Ix;i~r^gEJqb zq?Pk{J-HPUO`fC^Hub^@;B>&Ly?2Lg4xIm=cxc=ff%)w>1EJz4Y|KDT-X{7z*Y8zu z9JvA`KMF>at|;fn(dGORhrDu*OaUiA{k6#fQzwudt*MwT>gY@=<{&lX_r`dTrJLhZ zh_txRV4DZ@#YYWVyP*UnY;1#at3Fj%dX5X1@l~HmJ&s&q<(E@_F3H!&^<@#)%hG|@ zs^3RKB*^VoeB`LrGhyT9IEBWq-~AJ8R@a}7jUEF@Q9SZnprZBe)O$_z`A&^8-{sEv zobozHm-jplY4jgbo4hB`clvz2D2lv~{^9V4UB8w2T3M6>JyBdtIS~FSR?LKr8(<>X z9@xJT=!pG-5O8<(=ykY0<$d~Rk7Q!j+WK!%KCl3wKeEczKL(z$=#Sh+0hIEN{Oa#G zq3k1ni0JuzaO7@M$T2?2rZCbU0}-sObrCJ{{v&zWI2`;B0TB4#g{z_sy)9T|y$pw| zhNa*=eCyJKL+_}caCwSn2)Gy=pCWcxINl9|tCVX#1Jkz+U;7<;;4hB`K?|YjsFX}w zxqF4nU09U61v{V|!i=3##&0bIxm%Z{Bv&3TtUT6yB^*civa}%X(y;l=i9c%VL;=dv z=i4TIeLPZ(bxo~5d%h)X_D7dDFp9hmQRP9sd@V}7ggrVW?y`(Z39+lFWPWIs%x5sU zG|TTUZ5=Xc9?d>MYb8%#FQpPxF)clggkc7GUb5GJsLOAtx(W2QLD&$}#fG?Yk!~}j z$v_Xt@KNGicjP@ETA5p)h73ra=JkJZuT zwT&Y0TUfG#vxuA;uE+Nm&&wj{?;daXihRcotMJMQn&-E^psT+uguov`t-1oUTTS~OdS zipfR6-ycSbRY+l7ck*ol>rM+E#s(O)c=4Gg-R!aA?A+HyG?GN{lbo5P$2!HjSiY}8p=R6epWtzTEb8~1Q@BNP z&WAPwrx+NxnVyt#*ORavHs_vyBHYlQ#l4@z^5YFF1jTx1ij z@!B-Ceje3m{>>pZw??&HwGR)r4Qn)i`#mLGGkkIF!<}j$e&XF)g|Ah^{ho8Bim!F8 z(d^br4Qtd+Nvw5vAZ~tKuynaF4fn6;!wYfKi9WpO_q7`R?K^VVWAqx^%GN~sxLUd% z)=O&o=rcy16^NS?ln)+PPnNU2$uCvcxv5 zS%#ndwpQ+zwQs@O6}Kmcrq(jnUXAG-lCCyikJ$0ANrgRQiM1Efr`6i^um)-oJGPdw zPhO3#&eLj4V~;b4lo`z5iP!}8(+B(o_7(?tT~Tm!{`zC-+=2`aq5TtL)PfKX=UE-mTvO=Qv!`IQ8G*99K(U*f-BPu1+mtyr**<3Y=5^mw$8U zhrib21AyRv!Z{8bvUB{hI>skD$362WJI9;2<-h+|hkoh|FZ8?1Ic}5xthfL=vIt15 z{IJQFk-PFo8DI^zBJ*>D?fTMj;G<_GT9d+=xB z6K7)_IkvmzPKmPvBtX`5WyQZz0)&PmiX_SK>w13vI8ug*SZy zFQUPFnehJj>5l{QAC)<%#tkr?@z$QVNDxPckssG)Y45H&`z>dwTew zjW41K}b!3Q?%&W!K0BwwvaI_pThoPnTh>qT(`Y37d`rA1qe1&-U6wc@2ctP>W0zkl9iq=!_gwfB7$1MH!9KezU z)K-8#in@R+zq5(~JfDO5BO=?NV!#i1j`E8x(Mp5ueMhbj@Oa<7KJc}mA*6}*8r);x zCj8L5kZIs&1D>KgmIk~#g-_n$WfJz+(S4Bb;xYPf*{UBlofqt=&7Mexd>hH3H?8uD z_KtNeVsPN-%l{I+xz$Y?Vk^7pGPl+{?0Adoij3F&Zo7Vn zvZ=uv46sQNE9%X4bRjnZns`S!3p4%xQZI9g7RKn zakW*cA(M}8`&R_p@%#whcLSBh`)+;Rt24Xu4^YbKrQ;SU73Cr+Ka?*!<2#UOR56d> zDz6eRexvK0Z-38qF7MHDRjB2iu<3eS)0O-BiWk~M-Q5a{g4a7ubo3h8m+SwR@*ziC zT2Fkebo(>+q>6&DUw`!Ab&HAjCYC(6D=YuVo~+3A`U)NfKGW}O>jx3=%0$@dstk>* zD!PbDXsZ`Tf2#JUgFKB@-fDBo4^t^I3WhOBo)YXDsMCIVBtKG7ZY(PzdiWHTU z7nhb8spZCq5hIKtq11Bt&nPJkEiPI;zcjzBFjQ8QUszOzsKWe6{=%~SrJ?fDg2hD< zL=}{lloS<2P()E#S!r3QxFl3wR8m-6vQUyE9dm>Vi^>biikC%zFu$On2mu_eC@Egm zyRdX=K5$EXS;hR-i0MS(t zEHoM#GB|Hheo5gH@K4c-qLN5nLH?2@^YaT98)X$Gd4)v_fTpNWV#|%fq9sL>#2=xkzmo0++ z{Nf0YihfD{(jxmf1RzpcP`ZS0=i%QEQM1<=_WPkuSF<3i!V)5kRLXsVkWiso~LGH{eF1JvUOrcbM z=2tlFDl00lSgNxW$_fMks0&9JB^68a*dyfyi;4;>mf*^u2vcfva2cc+!6GPzr8j?d zq^R6jnID0$qQT_xiV_!syI2#gA%qJmVD-YH#&j}Dmlc)dRTM%paq&Y7^QD za}-K!P>6+cwG?K~hYe;$aRmGZ?t(Q>Iz$`esc8q2i^I+bmg4TD9V=T>ytEk88ofYz zsnsXETePecN;iEE=VpYlczH!pMUiNRi*^LoZTNyjSO)WrAaS5Pm1A1&5W|a#jQn!& zO>uq%@?Y#7qI4TMm>gV7&yhu76oy81b47Vqm~7ftVR0zbIdUr*Z>1tt;w89-6dBZV z*jJ`l+lqVO0&9PnTD~L9e}wl##pNNWP9eDkg-T08 zkwt)Awj@8YptNkMAUDQ9s6k+9XbEnZeL^AUGDz=X$tVwDR+PhG1&%|ZGy5;@Ln1&0 z>&OyH$L$WMhI0&5tq>e@%8Hg(z;;+3Dk}wbmX$#wFDY7BRNljyzbwBb1Zfc}UBIW1 z@}b1q4eP61_+)Z%NdZ(55KCDq`S}P@i07FQRXY@g2Z|7w3EJ|>M;>GNlw%m@mtqj% z{$Jis%O0OQI)nvDe}YIS0_k3OEXy}E;b&{n z59n~R=f9((%sFvm2QzWlq-#y{T{G}U)A-7S+p%z)5 z3Rmk3(y%X%n;_jG^_NEqjYMM(JmDd9{M&)}wTRtEj2s#Qd9jNHCM$oN6MXDsJVJ5HP>7~&9zIZxo$NzyKbiD`hC>g@BuY9Cc+Kg z_&`lhYHrG==9c-?+`5*UA6-w)?N3p2$02I&ih~zc;sf`jP;=i1Y95$L&Ck|T^Ya_1 zdGHt1{Ngv%Jam|vU;5zbTYTW*XQ+APEovS;M$KdG;mKuu;8$l+^LRcrPh3LHQ@g2o z`VnfLd5fC8C#c!i1zymJ59~jinrCyUIS`@d*E^|s?&s7ze~_9N4pZ~u32I*I3{P(3 z1HTzY&C4^Xd1W;;O#(r4H?>X8r>Jda{smf!U6Z~+40-&%q4*sfI1JWGeDJK|By0v% zLc`~BhES$j8)+EWtKpV*cgO7 z1m0`<^i5hJlHGt5f{4M&0(XOzO=tMb00as`4BYv?Hy|Jk&-V?4P(c_0KL?*h8z%ma z?J)e``WR3d_`lI~E)RWcp<84041<0x+4LN9C=8o)-=gUlGXxWvW;>j(ePL07(R3`M zd`vK&dvWa-6@jNGaxchZIowO+-gNGT+LsnYjHa`=m&Idw+*_Ya>doh#VRCnY==!*O zq3FhOcd6(Gxw}ks6S-S1x*_ha6kRdxMcjRWl~}{QaZI|NdvPXv0UJ z7nc}Kf5n|(dpv$OeUf{^y-#y5#Ol6eVq%)@=NBzBn!aLwfRh;Qp2tbxddg_}8l%ki za1J+`zQH}85#MY|QxFi}Z0d2yl=x;jRI;1R?n20-!PG38N=@-1Xecu$LuPis$l<5| zThyG2-*Mya04W7Gh6BTFP%rLU+(ZNcck14ppF50#-t) z!y+XiPwAjQt%M#xDJ9&cB&-293M&+-mCzB^w$TL@0Y3-}E>+wL)N*6377D!8@^1^E z@PrW2@^f+y!{1y4bu-BDF@zHt{ube6hQC8N#PHt{PG|TZ2=`_9p9p6%d>rAdt_FNs z8YXta+%c&$i90^(Oy^FVc_FNvdEALNmqBL{cY-EryNo+6s1xB%OY>$3<|^*AHYWht zdhR5dZNPDta;J^C0;E-PC)vCVI$OBY)w~M??BGrh^Ko#{F79Md=N9htq|Tk(=|!Cf zxYNgc5_lfr&KacJ9`5uruYh^>@vfPWg$u#QrzXnDPBeUR zAjmLI57KVj>MhLCZis1BWTL>7VC$*a?Et<=jcYv(x2W!jXgwW=8JvxyJYVY^l?tur zybmOCMjECq{-3@a`hLS_!ukVDTmbGxutBZoz79jAL+c9%0jbYNdbLAo89`hY?NCBb zWNf|J#F~PKzg{#OV?XvGb_Zhd3)nD0X)I~I`Ab0I|Gnr7*(|EZ0rtf~S+m4{M}qJe z*$c;*j^{}9Bj>k>r7tnj2|%<%TBbVRhg5j-Bwm}6Ni!&>cpBv)l+s(UttB=*qI$?q`8E>a z7YO(RH0`96q_;^*GdNwa6oTv%qF9#ocUBQe-Oe=q7%)6q(-1Qxb*9Pjq|LHPtldpp z$W3?#=NQ<>l1U^U%zL41_7y3T#75zJ8_K)A=rxXv;3_LoTK|HC<5}KK#Zrcnc6i8l zX~&}2<~<|?F9DQ>w(+C|Bm}Pwc$~Cg*2jr;re-MV5pp^fzh3l3?i2yWwQ&ZfLDJWl z-!~u;B|18XM_T^`lM*jFlu}}3FOJ}KhwZ^JOI zlS2rBzj12jebF2Mm`9uhJk*)&dkcpsYB*sp62Rkcn&>qApQoi+&}P_%Y_;?EChj13 z#pxzH1Mo)c185XpiP~mClu&RRtqiYj90!qOv_5Clr)tl$4g?G+$z?aXrbaIvOxDE`~HOA=sUb>W^GZR(Vs?}n$|F0 zO)FyzX8yz)#fxkYGyTyRl8qPNHfEMRLdwSTu;OM%aS(rFJ_2L-KaW#x#z1T3YK7(O52$qY|IcnZT)5T43#4#GJMPeVAD;W-FTV|XsY7ciWU@N|X? z5T3zs5yCSWUWo84hD#8h&2TBgbGYENy#$rU`zRD1+VhPw4fwQOcO_smf_TS;g3vA< z*C~UQxPlqnsK8B%;0Zj|5kdRZhd>U2$sr`j2!05N0qrn;89|)B9WM5aAYP#nU55dP zVDPava9NQNJQcp%T@8G+7CYRJg76xU_h-CB6eI8AhK-knJc8GdV&rXv@k)`6WI=Z$ zD_-m{vK?O7w38N{I!G#V>O~Ul*mVyuk$Rmv;pv`^&WRnbe+%S8I`vcJHeb9lvj6uL< zw7ixN@GWcbf`tUO+>M}sZ^BELAme|8LJ~pZV8CSr@gjf@*LVp++94JvA#9C>O=6ux zr;YpoP?_)m);R4PrSoZ{K0&w86sL`*DHtAua2tltO$OFvcHU`W6it5YGWG8OvIU`U z2E%U)h&*&mi4T2?FmLCf@78n$PWT@QX-i2If^tw0%gj~aGzDIu!08H{p}?66oTb3o z3Y??BxeClv;5-H9D{#I73(yo+a^aU?EE%32di&h=;MejJBlHd)CydM`78uMdfd`|Z z-yeqw5fJ8eW_Y!DrH4 zhtbBwzU+E7by^H5ftxj5M^Gn`yxcX5I&Fm9)pvm?To9sv(PPg3#m`&wF6uhU#9LlN z%8HGyqe+M{WXcqy>lhQQ4GuZq=z1=Jp&{o3NtocwAtil{uH($vpywo3U;^>Z6BDlK z2{MIYbIc9U85Zn1&zuRsa8#@7d~*ZvGF)i>gzUw4KDy4O3sPeUJl!+8=FwGia7e*? zqid0w3EWm5t-As`oRFtacmm)Miaq^&+R_=Gh_x%22@mCr(5J-L@d#*=6PVMz_oVlnP)Wg4>P|xX9?X<1>Wd24}aO-vPukce@nh zD&R_l<4B8c8xiJJ*KHGCNppU5yR13D$xL(2Z_xmTuSNQFhOf&2n!duNo7aMd6w?u- z!bX=Xwn3L1up?#jg>Vxsb6I|&kwS-LRwIQD$#I#>jFc;ffuLaKLL+56Laai{4lJas zLP|B_S%s9V5M~upcA`3cNu89de*^f;%;iSPwMdbbd7+VV9YSFq--WAw62sRc-*kp= zK$>|B--!4{4A;znb{WIFd#A%~7=~{`*K84HZ>s>?$j)#|#isx>%?et946pi0n&sk@ z)%yV!_O0=QOkv+zqzN(oI)sIN>uvUJz`$oR&Bip~%`!%enwo8N+5WAi!N3lGK-Avl>6zKg+})sF$*EtX=n=%In>)MwqqhehtFx z_3qc9r{|Fc-FKm7%NVB2k1%{AMu{WPy$0d+jNgs$7KVR>p4h?gZJWS?T@2rj@GT-@ zJ1++7$rH=E=k|p=)l4%@MXdYu#UL}t_?ZYNGCUjMWQOM=9AbFhEdZx8T<}|f`!ZZ~ z1mH}D7b2X+a535#W_U5`Jc;3zr-Po;8NO%|!1Ea15CM3R(Eo;^pz~k@K98ieG-trA z>8{vGOE3rG6$y6|&8@(~TU}Z!a}g9*-rdq#)8>-QWJ%QN#GN*DH#o$dwkF0TojdL6 z+>yzhWa?ybrvqKRhPiVpb$Am?>qwpHJkp6e^SIO5ECF>EapyF1C}_QmJ6+6d=&a&S z$Q%!y_1x)dUI3jfLrMyawA0Nw0Po;|bh7|DyN2XftTNIv%yQ^FARKjLA^3&@otU=0 z3Sck@{Ip{l%r4;SvmhuzL4Whr7JYi!gYQcEUwqX=(m#ZO1x^tO}7BLkfM$3{8(PvkiJ zdkdjYiISL}Vs3@bkn+VwdaAh+lr`{wBR!20Ajo9PdW<$_1D=L@j4?amQGz>Ra~yOy zpL&d?MB#kuG0v7xJ@qW zkIB@@;*lxD!|0^9uNFzWJd55xBwb4a_mH- z$EWBVG}h=b(7XW#vrvm(^o7yn`@;lbjqHVAAON|@zms}onmMOiz8XxL3dapGv91Wm z4K>SwN;qzqc@=b$Nw*%u&3m9De04UBr1QuK^A#8o?#VJgfR1oaHg$x1Mw-pQfG}S* zEd`=p^o5i2-H41JK7YvwqMmeVg|jmeRv?RLwKa_TC>g-G3rEm$)Q3luNANib(EQxu zMm32BkZ)LwaiF1%5xX#aC8>23h&Tf0nEMEm2wj>FGq28AoDM`8K~yLsh-)Sdzm@=! zuJTMHYXeFlh3QKuj1=UJTb#q#1xa|E&j@aY4%LxR=q|kc2*H>Uy35L@7XZ}`lZkR6 zIn>k)q`+D$f?5@7W@2S9hQQmmMyNSePR@l8KSxVsqeG{duYeTz4+NiSb_RZ0_`G^U zZG4lUMhpvv+W7_okd5mm)ZT}2qho(4+4mk?TQS^$h#5ZBhsBQJj=tFv?&O;<;m$rR zKumL*4@)z{U3?J6CX};SfobI~| z;B0vD&j|Il>EFi&pW%A|Xn0wL+S1KL(dp|u0~{8FNWBJLfUA7^{wpkYxb7!-6n#&m z@0s*nMBmHk`(pa8rtiz>yN14hPTx<^_pj-@70kmy>gPKhV8}RYGY*Bi`tcG6!wn1B zZ)FFbyE1}!>dgq^bq2*XBls1NW(4D5`)P-lO&LMl95~6+4&k*5bRmlmSz=lNDkF%u zn&9>{@!~ZlrEU=nab{z3_QHhgC2>HGr&4&L1yn@79m(Zge3Cl(JLct{Z#dfP&_hmFssEE>cb_eE+P1?tYw zv}3hDvl#I>k2QP@hv`eXSMRCgK-rFkzhH6WRT9l>t5QPcrZAKdJQKd# z;pHi%Nn+|HGXQ}XHfwM?xSL|6u0=?kXHwT?!uVNh;0yonMb4tyR|#E^hwK?aybjC= z76MEr-ixG2(2F8VUHk$Xl${aWZc*aZi%lraAtXO)(co1LOCyg&{jz7#yB0HE2DzE_ z?mQJJNqfBFAr??{f`!COB9=qeD?d!a<%0KzdI>+z2g;1#jqu$LFHPCcX}k6VA_Oil z(ym8Pz&9X_MduDE4M7^d@fJYA<2u+i#8SQ=504=lyx&^Nzb7KRkt2v+JT=22deI`n z^J+#APoYG#DDCryCD9jH$c5A|5f1VUU*V}zoJhY$naPa*hFBRshWPYM`1OX7_H77Y zzEny34mW{JrujRV9^Ouhj+iUrY07AJ_)5YqYDB)38ghRy8(X)X8AQxWCZVl_`rW4t%dm;m?k5* zm%ayw5bgorqN1J)YyzADU`B8(jHThej28uT3`jx_=#bVKH5-ZSa`?`=9lm-YH!nUq zHjywQ^<9AQh_Ry#-*kjV!v97b79QVqW|Lmx?M8kXu}w1^1@dNBZtW-<|2Z3kN&VH{Jgy(3gVko8d<%iq1?L2pa7WXLHxj{pr2oAGt>t z86kLQ06u$~u;W;{_KdVfO-u#OEZ^h)eZV^`+4rRXE&$F+_C4jVMoiH6jK3HFI=A@t z`tgv;@IKawj$gh#G+@wGhwo`Wo}Pkq-RRrzKNr{&1=F+sv!Ry_zg9AQ2WU=V)DwP; z4%|;IH+;YL4z&u$;N18@Ll1R`B#Z(7UE!l_rZIC~9Cpm7VeDKa76|4vFXGXoa+DEc z@F!zpP*7$vWz)Wv97e!p8%}*bUX%ET!r)ld7a&?7K)Nl@I=7BTz5Evd%a|30uXQ|? zEY|sRN)2&_zrHVn(pBUKoYUWg)D{AiCuBe}syZ7`{Pt zp);=7@QG_-p5;mMshQEwGM^DVixZUf%pEqZ?^HZ@nrB(QAT01q zlRWn#4+rHw8~c5V{XV4?VS)W}$^J_l&%=u6;dnVEVWlaL+vuNA^iMRG^n?Z5GlIA) z(YAOHrlZss{r90i1;5rA;tim7ND{->R9X#Z!eqQAKMG*t+hMLAzUDzZ;`k>5<(PZ} zx~R9PEK7NhSt_M4!pK2t>*E)IS+fJMx%1%5%oPH*uz>rd07e)&NNRoJrGSGd;8qqe z4YB5%B*06VI0)Y9u~C@0)8VI?7QLBcF#C%Rb~^K*)S5eieFm{BikT$fHA>PtxD3 z=%+a7;cAaQW=(pgWrw1eM`s1qm+~G}@(_RVb1hHv7wJQc(Z(?L97g(vdAm;)($8fTW$$Lusi4N_p9n7pb27IioqHy=U>P_~&3w%;N=`PAG+4~5l zpD#=_zE--7bm&5}0hL+v%ORF7ih^~C-X~9vs>PF|ecM5-RJCqT-U;L$Px|i$4LOen zJG57x90^BI)>cut`(95D_2K<`sh;$m(~}7>z0Q-z>0o2IxKsdU&0(pFqF`NAzX1OX zgK79)NP=sC>O!w-rtg{Ps>$T*2&%meba`eDNKv_$raacd;j!1HmK%m!9#a&orRoH^I6-mQJvbajxcf7UR~Y7)fK|ezqF9WMvJSAJ4ny6oquot&0B+2fxzuNy)D$NKe&u==p$7 z&wJH8H#z1}dLEbaC<>|Pql*7(2fxyDVV31jMZs}XeTSkmfWhO?{c55r$3!h;;2x3_ zDT;++)Hn$IAk?ct_U*;I$yRJPtDHB%JQ%rwP6 z&cUyC{hsGomMIFhRQ0`CaTtXGfX-E;+rT;OSN0JN-HSni!@Zp{CD_ zGJTIxmi3B)r&oRN^h5j|fv+y>&r{QCcvn>ODEVqTuPH_r2=$_1_s?9l6L#L7nG-PA)P$ z;=o0SJWnBkz=;*tF^byPjIq3?C|K?2eXrV`{dpiKiWjBY7lT&ofi9}rNZ?faRe97z zM`uWHw}HD6tfr!H_q}TV))x37QM6$MYP`rheZ^lge^`kiX} zOQK94f*bWbouY8}XTsfK{#`OU&8y5>Uu%$3moIKs%9J^jQHlSiR7O#-GST~9bt1l7 zqpKq`=x$Kw8K8@rK}g`tpiz#CGAqbt&2w-gnblMj_3fjN$M9QrS|5)w*T5{&$8vdU z?;GH0^jaVX+u*1^MO|z>3^v`z1HS6%YLV{~wypq{$-YZu((ZRy3_B`)%$g!NUa*CV z!rd=KTJr$CEQp{tPzTI$AV=C{In;1oBEJH<%|`+F`8{;Rg8Eq$-OTeW-4q4uruwYg zgSF`Pp!t^=bUPA7x7|^6+bwld6s()-vu-!nqT9{pr68v+zkL-&x62*6!95ZBm^Hn| zTYgg%tefhyZdcTjr&pM#ft&B*2EpY7VaR~cRRs#EAGV1-QD4)#uW z=*UWQCUkmCpw$RVOOzBjngyd%9HYTqTuX`-pAegKKfgAD8-w5_r>*`Y+Dsld;4xJ&8Ap^m{UNJnH0vK$Kjhi z_~8onU>qvxuYP6aEPTh z6Nruqd^uJtf3p*Qhm-Tn>3BqtM(IN0e2#&0rGf=wE~(I;VJ_Lh#Hm%LJM*0KXJ00jW*rZ2+3wmVGgKwjToAJs|DOEfU-vg z;59AZ{{T9{GEMqhZ`x@vPcF_wrd8lXxi|@QCu=OlX=ArkCLbP92f<8yK%MN&%85LH zw`-;7ruQK+U6~p=__mGp2?@Zgc@o$nQ(>s$T=>cz3SaTx;rGo_iY`;_S>=!n`9L4D zW?nA%4<+GeHcH1&8P0_tugf3ybwd`t%cT==RSX3>Tov|P(`~_4sWQfW1@t6$xt$J8^q(>bRVwL9DE(i`V|>`r-KFY{dr(^YXOv zuou(hWsvV)lY_}ze7DW|sM34_P7AY#h@shIEMSTN%H|5dYj+3pJmihh?ni+(7w2KS zaiUzD1iHG?jMFy21Gpewg_$_wuG0Jw4>(HmXj&1XG~=6m)<^BaAItj1-e6JW<`3L}NZ}A)XJf%a&k2}j_KHu zJ5e!+eGwFbnA=$EGwWg3tZ+vet|V@xr}_RAa16eHd?VlX%fWYQt&gRHS(6Nk&i=a? zn%zWHmf1-HDC;7CS?Fi`2i~Z?8(rT);4P6x1(>xPke=d&Ij-5Z_xj#OIr^-VQZEIm zpOaL|`Bj!GD^PdbrB|Ttc&lIq>JGqU>k{M{$0f*M!D-e!0H(vrg6l9vF%SR5iLLK7 zdtcm-&}CY)uZ9u5*)YJLE5QzNY4ncce(a}$z^vJjXX&LVSWnfTx1#}jE6 z-97Yr>pkC#Kwg2~lA*)|c@lb7t&=i1K|G1}o-Yp6AsLbsWylWk$sXSQmvh|!bi;rf z=8|`T@CbniiRoyuBE>sBIfB%FCiw}7C}+HFnab(t%9}2Xs)2~!-&`jGJi~EkrM<}! zHfwH$HO>K36#wacZ)oS4ch8Hq5O%`|hPOHt?+TMQqvo0Kqnug~yfU76QuvmI`>K;w z@DSe$+=_9oPITgXSook5pKal7`GRt0GTvYPz&a-b{K+A<>XCJ7KYI|;11{9#s&82r z51AFH-m&iLI6R-O1N4lz>Rs#N#T&K0gH7-?T>n!bW=!e)3k^Wfts*$^!s`6kQ4ZcP z5eev;esF)4vqMq1`&zF4w>&9mx1^Toq~-dj12fv{LB$7jCtL599oXTb=| znc_}ST%Y!j`K50e%K5p4pM}3~v42dz|30L6UEnXq!Lmc5Cu_x1kSn&jg_TNMw&C~!uwiQy8yNMf1U*q(9#AJ~d04RGy z^rVyAF_r^b@1X)@*>B@rZEr@AIYQ*hJOId97Yd9lOn69I z2ei0O`KcOcCDmqoa^cpD{*eVP1xXymMqIMxmZj&ybDpwGEVVWZwIWvm;I(^o51_8y z?zNs;v|2I<=Qh6(R@n0}fv!qaK8I7pTqPc>Q=vMm#2do+$ol}4eJpy?iS7*I1bG>4 zI3C4@s%?|0KeSxGQb%Pej>B63d9m#es0~?|q$tJ^S>^2;& z(*~J&*0F1(eFB+O*67I|%A{)=bSPWD91_`aDC>ZjdL7D+qkU1s8ud_y6~OikxuXd2 zT%7-hIh8Fg1JSjd$_~KP(G9`K$=D7O+Mb0XV?33$1=?5(8#~9bZ_6?h%dxBtXj{K4 zzI~uw?Z$i0b8Ek?l}Q_Vyy9c)=%lgQ#b(rZ5_NIry$l zg&Z-oZ7OozHt6h?PyseXJ$t=WFB_gj>Zt1%3{=~g>q=SL(4e!|YiL8%vsX2Y#vX@D zk^1CpsPEZ}()W*$<1w7K<^oyl#!N)&`WPe2QV&sC$v>w-{C7+Kx%J{7Bj!IU`Sa?z4!-M_DlZ!dhz$S;xGB<*NcCcWxwPvs2Bgag1;xM0=B=fUi>30`z3!-gZS^3 z{0kbye^l}>tQY?%%l=N5JrJXxR2XiF5dq+J{@L#Yv-b_pE(*T&sA9C&Lh@4Y$?F z;8N+g^<@ZbsHf3q)t6ymeHnJum*KfO8P0UN^}9M5209sfURsxzT*)`PP6k)tw$;ht zn&HVh83s6Q_^eI_mr9|^dKx{sP6pQum)4iz!8#dSk^Xa?3@$IV-B?ef$JCc$Wt|Kz zFWp&RhTqkfq1mRojCQFsw7v{W>SSxT?Mk zd+W>aWt|MJIHYc_%V<|!npP)+YlhABWq72%3`gqAaO#%2jCR>@UY!iC> zCxc6+Kh>9^&9=IXcBwSFP6n4sE9%Q|M|~J(z}4;;3Qh5C3?w8v|CH`vXkf;Ezv3o>Zc`o(@8Wnmmu3PHkcL( zwtYm$thoy$UTP-7O;-EI{3uXqb_e8%6U$D8#@r~`t4IagBLg*gxqI?WCjKBt{4nCE z|#Ovm%!G zY>@h}h8~}}zd?BWojf(iQN?4aYE;7rD1x# zS_;7@II?pGN}PrUn{P!4(8oKi04WL%km_@Q-gX7(omv9)uK5<|7E6F`fcY^%f6xag z35GoZN*Bm-o4YVTS&G;Zpy?WV4A4r#>jQL!;*suj2IwJ}@llo#EkFk~LZStzt9+n_ z@#-R$q*?Q;Ypeh%3J#F!!_9ZYICQo3Y%V2W{XNP;957R5-@BAj1KWTv>TfyJi@W=z z_zWqI#rKqd<5qf#{+6}u;UB}4ou@G;^|5*V0$9&a){PJ~PR;MB-1dFnnteA$3_UhHt;l`g1LRrhj+|(Ohvp@V^cg)2|jif3D>( z{&RpYra#y6JJ3+Z%kj5c@Ncwi0Wq9gsC=-%@x(#d;CYEk_ruqZ{BNUDwZ4QvYqc8e zqN?Y|bdRgvV{<4bd@~sLBzzZvbSL~EMJ%I&2|rOok7kq*UZ3!libuN4S@u2v^?oX- zz!pj6T?lFT$9FJ-{I_MA81$RU4*)^GsVopX(`k+$^ZrI;g;}%t25Y4#ih1-W*;U{B zBeSk?rPo6Uv_Iy}hY|29{XR|V9pyL7UE^*-IaVkox%02ROc&bbfvyn)xa z*MvF&d?JwUXa+!(2)!ekodw=bkI@`PczrY{D;{ZpvwZ!{zBareoQC$9Egcd1rHs(~ zH(C)=6#PevRo}bgw2C_hYRMf(Dn`FIUMhscKTgk|M_~^1Y-_D&`@^Vbot!I>c2D8) zAWsoHJiAgukDk4j@OsbQt$3sXPS5@`7SEn=>=Lg?&*tp5JgX>X;Hatk-oN(XiLQ!xaRNotjVBq|lqXxoLRT5wh^lVeDXSaYPk7suaq}#I(DPo6bU((Q{XFn#q z-m@mCrOkcm=dQ7M_G?GI?k3Nkm;T7|tfFAgs{Xu4sbQ+Fd)VFg2IAYeLtuqm5%Lfy z{@N96zEIkAY;A9?g$;h1sOLJbR<0FMxHi`zS;!LL2!e-m{GI0% zJdR6_Xw`DJ<4+ijGr=?PF>BiV*h(cu!MV}!K8DyBbvs-Qz~#;D{4X^E#(T!Q-8c0% z$QA7wZ#0a63n|T{by5Bd$?d-DfZF>9396(F+dmZ*<(znj?^)DEU(sadA^TcmV&daSs1+ zV~A7CIkA*e2P_sq2XGta$4+g2T*Z?)uUzgBNOyibrHCE*@ur3z^W$s6>+_>Is3j_4 z%=vK{{j&iULIYfsXszVObA&2XbBXmgmx6$2tX6qX7H? zkfU_S(K_T9CvpNg`CLS@Ys1cQMvm1X$LWyg>5$`f$O$^+`8wo89dfc0xrNdd|H0=f zb8@^rV=g!EgFb%N!)Mi2^HI?~apJ_fE6i3+crfbd|nG0=11vaAF z?L_l!MEN#&cD2;PhMl9t^crf@+Sj3pjjF;1M-+!|u+KKI+%|BXePEf5sMH3R*x;o$ zc!^Dr->$}D8&R1J9%zHNDCSAlyqk=58ndfjL1 zqz&@h$gZ)gGSN0=*ai=saZOVb^3}8ryJ_f2((vn?O0!}=2fb<3G+7Wz8 zZbS_`C0VACVV#9Y@D&?&+8Mx$8gx;FaJ{d{GC|3%N)hayo&fQKzX+$yGmMlZlN{K* zq$N(9+Fo?A(_Kk}e}~*O$CB^TyMpCsfSev89fI(Wd7)&~rl<1f*dz{8FZ8ux^iGCE z?}JX@aNw|EoFVCfo$336K|$6DmFTA^O2A;I=`WEGRttHi6i%`XV?cM9a^N7E{;ak_ z{Xtd&8b&7AM@c+33EeYTdNP0$4-umfS{xmk1P(`)hY1%E(QxHq!#G>XGmH^1j}Q(o z7_>D}WVRA%7$a@TPqNMtp`gyFI0%GV7^C}eZh$f&N{BH5nRxKexkCpt2SyDeEPVs~ zq2>c=Q7tj;jq6f?K|^yV|jqqAu?7@1RbscE!=QMjK1Ak?~kl-PNf1KyWh zJrZQkvrPpo`4%1gOIXZ(&BzWYpujdMuoVh-p@zU#Wb4A{0#peNv{YKiVuh?lmV3uK z-Bc{>1V5wD3oSB-s}>7|1k0qWoTKN5CH*0y$zep_=PWndAY78#cfIrkn$Lsc91iCRLhbB|sZZRuom(WODrR z9)NNRSKG}N1_H~NErh||0NQA(pnoo<<>dsGwCn^6V5*1c_`Itto8y9EbznbF4y8EUvDF&36q`}kWcx6rXqC84@ zNgAxdzn(D`n=xEDo^Y9l$2ne4Om?GC)?|+?H4=)#=s4D_*NtEX!J>mnW4@B1nxnhp~z+{L$R3jcqJRp^2?W z)_+LOdGz`pbw(6-|I1gZ-o5U+;xjTm+k>WvYYqo`PS187n=lQPTT|@{^Axg}1bMi; zb7`}+K{1Ri4)MlUt$KemKog66w{q_ONhI9&XC)jC7P%F3_fJAmPo0a+t0ytz_ve~M zRjow$cZ8$CacnT7rUYtGo{YAfWVI*ZERXCcvb-mZmB2sO)Nob%na#ic$OIDW|uY{ zz5A6-5`m@>DSMD_~ zM42F(`!jN^F?rmsz%yK9;gVj_+%t=|Eyr-@%;Q+NH8fq$B>i5oYJ)CxqLpb+ebN)UT@>?^t!ZvfO};iL=mVSZvg&`tK+WF*?KR#aL{NIgWZl@1&ZmEc_b=&X3=y z{`E>H3VzjLcnRG!+K_lI2sBh)K|g3p$8g?>GnyH3o_*7;r*4OI)5Nsu8k|M3csC}8 z$0EpUT7&iWWWVlBkSLe?F}yM2$#YyFvAoe5iyQuH{ppS0|BShsRi>|rF%x>7=OHx^tFRq-N*Q(z!H& zH#s~>27C|bRMsIilu=ana>qKgS7psro##Fsy&5^)b17yTC&BF1#B%{?8hLIiT%q1; zLe0fv%)IUy;DW@Bigr=!p>rcZR?v&9aHH^b6CIrf=cRKC16he)oOVtfod)NX=apZb z?8Ry4)X`~hUU^>m)gdpgLWA?tx%o836Wr(#6(gBf`uABCW31L1U2*L+sH`KScOyB8 z2P2-!-gvaphShr((Vl@kyN-q`)}xK4qBs10q;`Ywit{d*NnVuaoTNQXHIUIeoyMmP zM0sUw908ns-QIPRkexy=HkBHO|nW8YUQL!FVHJP1CT|t~m>TUxGb{&F@EW1785rxW}u{zg1<=IumPC!4O!d#;SXAy-lMfn{n@i{KhS4;v5NK4?pxhe8 z5DtwL4azIn6Cf{%=fn|%;MlUGA(A!O(x|fA1Gc^0p%t6o=TS1SB*%QzyGTp;<5!EpL#AzG$=2Z=c1(XG@zXHgH`kx_Q=@IIG(L6 z293i-)Fy*g`ZgvUqv^whkLrgizr%<#RcqBq0q5>JlD z8P)e3U+X5+V>LV6NfNr})opc}Sv6%wi}F~jq0&$3S;9IpxAxks@uY~GOD9?L!m;02 zXL{;@j@K<;>%TgynBNE%dZu%Wj%|8RqPxXtHS|P46FaY<|E?X{lN(XW=l6Pu(JTrN z>i>gdWA^nA=?u8%>ixlqcS28qG)u;t~xKHXEA9vn<&2u^zKTU)2&vZR}swu z^EfC<(TH))HC&umTTklf9@~TEG5u~*$LpQav*Mz7L$?UE>ER{xP8!RG7}GK1KURCM z&01$QXk*f*{=a7}X^qk?oEQncZu{O+MN-#%`kr8a>eHfkqEBdZ5t*jUH(9K%)m5J<#ZZMh`T4pwR=39%%GHqX!y2(CC3i z4>Wq9(F2VhX!Jm%2O2%l=z&HLGH%z~ACV_GO zHW`6-gzOL(IGup*@l5qc{{RNk26FqE?<@vx@DCy&j=uvZ=uII1W`Cx?*tA!{6hj=2;>oe+E8nvVHPl40BL6jx{(g)BLcmMC(fUq6-Z%Rz~8Gi$?&Hnh?%?7 zNLscK-D4yJOm$`}d+%ZMoIqQW>Hj7^De$D9U>ikTT%12`6zl5mK3XUZ3XBm-rJWlX zO!Ey32T}=0AIto4{^8>o@}GTP;543P#3=%mHD2%yogk#2e!gQ~fA++{FlHJ#i6MV> z6HD|tlLPcpm4D<#?Uu4tJe`=watF7G;asG})fi|SWsRAG8w`{df7w1n&7WpCO@3FuN(?YQb zdMx7H_xC9lZtB`XnBMh5CXR~>3?QxIZxN2~wOG)mED3~YD9+z^smQy-!4ifbEzT?z zN#h@|%$j+*P$|wouq==+xSx+Nwd(3Xf6s_e^VRqYHNHa3p1M-VOl#)v-+>+3 zl^3leuKx6CkfEzU$JIg|raj*LqB#FMZ7vqbIRD1DODs6fe>`rDoHBi_(Bmgf)>+6n z|EcTEKqeaCAGW~^3?)3OkNlM(9Zv3?@r*l z%I^FB2l0NBv`y0dl3y}uwwXyLX_K@`ny%@RnaRGj=`a2Lx}6yGLxD9`}qCG$HVjde(t^B zh41&?bI-Zw-p|$3_OAmuh)Y7$6Cf4-EDcKW? zHBVU>qZRuNX)*e#V$V*=iD9+A`@=ty8>7nL&3Vr*yC^31mA^7E+4&^FtN8NY_<@NH zWAVhZ-nfLfjZKSjYUr+*{21+w-nKL*_6^SK#Xgj-&lUUYPepH&v2iiW^k+tChCURx8Hre*mu2|Z|u$bAo?}lRT%v$v6(S%;pJHP*pwA9u`xw4 z0bl6U;=9qxiML_FseFa8*;7hl#=pB#=k;d9ere(>ez1%=vG36*n5wKYMAh}4 zRnPu3?|!R3xbt1y-KNU*dS9=Ie#^VtZRNz*|HyCf)CZj}e{^cBK9g#I*!QiTc*X-& zdeJp8?%Pd`{q;2yYsEXNqu((0^J|?jAtw6onHu{W@8^q(eg8VW_O6)qdPeNtm<>Ps z^Yf8UxhqWH)Qx&da3*5E?%7C9Ok^{4B2O86#isFJ-~+YKe$LH$!#}EviG5eW#5bxR z?DG{9YuVB%TgIRG!TK1jIq&!&ulT^$yT5nC-T#fxt^rN@82nB8@h5)b4{e+HyMC)# z-{{?ncDp{s#IF$ivHbxbnP}Pkn{7V47S)jcnsj zi~Ujb+fR-C2_HB1q39Qj{miR_x7w?{eXri^HJTs%vQ2;ey}N|i4?Y&L_NTr!K5juw zNA#Z>dmys!?guM;`F>4}Eq?idm`Jm2hk*pZ1pWZTOh)JuHCed*6U6j*YCyI)0Dj9Lv3AB_pv zJYL=v6I&c}OfQ!jb6k(|V@~MNySnuj{0%{Y+860DCp9BBE2c*aKji#4cN?7%yBJ_% z#h>P^tIl`md{1BOjR`()-_xHufB4kczvzpZ_@;km&X-Qb1fQ_yeClWBJn=4l{ZBs< zJZ?*T%>9bK_|A#fbf!BW>0ABJzOl1V>_=W3{ddG}n>r8^e9YeE6BC~!_EV>0f=6xI zl`x zMKL!fK1^}U%^3Q7u@8(gG4`P;!E5Z}JaB7bvA5pVydS=HYHWPWoo6fPIWc1s%jCqw zO$mOS)y2N?+21Ypf%(r) zoH8}`fwU=V6~(6WwAfENTZ}$z>^n22#KtU`qPF3iGAG{SEq8x*Ra>9SnsT>F;mf6r zT^W--Wug;b60>j$t;MOar7<}ZFHjcqUM(?|jsx8xT2)i;-b?XiwxfHgeCZo_=^J?I z8+hp(cwX2< zFbKnN1xDZ]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

                -hUXz{OADI}F)jch}o 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�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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.cpp new file mode 100644 index 0000000000..a3a234006d --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.cpp @@ -0,0 +1,107 @@ +/***************************************************************************** + +$Id$ + +File: page.cpp +Date: 30Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +#include "project.h" + + +/****************** +PageList::PageList +******************/ + +PageList::PageList() +{ +} + + +/******************* +PageList::~PageList +*******************/ + +PageList::~PageList() +{ + while (HasPages()) + PopFront(); +} + + +/*************** +PageList::Front +***************/ + +void PageList::Front (const char **page, int *length) +{ + assert (page && length); + + if (HasPages()) { + Page p = Pages.front(); + *page = p.Buffer; + *length = p.Size; + } + else { + *page = NULL; + *length = 0; + } +} + + +/****************** +PageList::PopFront +******************/ + +void PageList::PopFront() +{ + if (HasPages()) { + Page p = Pages.front(); + Pages.pop_front(); + if (p.Buffer) + free ((void*)p.Buffer); + } +} + + +/****************** +PageList::HasPages +******************/ + +bool PageList::HasPages() +{ + return (Pages.size() > 0) ? true : false; +} + + +/************** +PageList::Push +**************/ + +void PageList::Push (const char *buf, int size) +{ + if (buf && (size > 0)) { + char *copy = (char*) malloc (size); + if (!copy) + throw std::runtime_error ("no memory in pagelist"); + memcpy (copy, buf, size); + Pages.push_back (Page (copy, size)); + } +} + + + + + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.h new file mode 100644 index 0000000000..969fc91690 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.h @@ -0,0 +1,51 @@ +/***************************************************************************** + +$Id$ + +File: page.h +Date: 30Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +#ifndef __PageManager__H_ +#define __PageManager__H_ + + +/************** +class PageList +**************/ + +class PageList +{ + struct Page { + Page (const char *b, size_t s): Buffer(b), Size(s) {} + const char *Buffer; + size_t Size; + }; + + public: + PageList(); + virtual ~PageList(); + + void Push (const char*, int); + bool HasPages(); + void Front (const char**, int*); + void PopFront(); + + private: + std::deque Pages; +}; + + +#endif // __PageManager__H_ diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/page.o new file mode 100644 index 0000000000000000000000000000000000000000..73c7f5a47126047498ed7c3eea670a904e1035d3 GIT binary patch literal 1367776 zcmeEv2bdMb^6&JSGl#Q_q(xUyvL_kZ8}oNuSAx~jUmySh5g%-J*h z4;c_K#<7=idO1PNQXS{Y=6m~*0>KKLZz5ktSoR0Hf25mnR>hDR45JF`DXgz>AB7DR zHdNS1VH1VT6gF4bLSZX~Z4|asxWB>!6&|Fplfr`)c2(F-VGo6eDLhDOoWijR$0sc&5U|3YRKeu5g9Ia)lKND;2I(c!9#z3fCySSm7lK*D1VA;S~z6 zQh1HR>lAKKxKZIv3U5((o5DL3Zc=!+!h03oukb;I4=dcP@DYVu6>d|wUE$vqKB@3& zh0iE_PT>m*UsCvr!hb4!UExlJZz_CS;kydoSNNgAj}?BZaJRzG6n>%bD}~=E{7&Hy z3V%}gi^4q$O$7bfRp=?Kp)gBfO@*}-)=^kbVSR=BC~Tmxp~6NAn<#9iu(`q(3R@{` zqp+RA{S_Xl@F0bq6dtUwtHN#ydni0i;o%Br*MP9jS6p4c#Fc@ z6yBk5lft_d-mCC_g%2uxSm9=ck0{)#aGS#I3jeO~Nrg``)03l?SZ(dC#6biKXveYmaWAd>NH!%N}a^=Z~GLE95H7=V)^rl@|WiH8dUysqWmjSzHH0f+{AX5 z#kTk7&^c~wpX0aIX?BF;45~PyWp1LPZlaf3`o}xxe0)%kU8m(1Q~nF7EZfjzL_7W8A}tNw=lDJ-GYZSm zt;`)%zKzu#kg9Iq%*v#CL)1OE=%{b`o5!g^3Y?%lrFKhq4V#pxh_-6WhAKazWuns- zYUf1xoR;x9 zV@UajTox*1Axj<6vhCy1h~`kSfJjTX)=l(ybB>2hD>${2s1VPkv`V#t)MkNf`KP{s z?=M?F{gl%0S=Y)mI+=#1O5;6d%u~jD&bU7skJcIIM2JkwjfI@go;@bJMXfU9JZOkY zv3)l(@~-i|k2qIFJQ`R35$WJKvrar|a)*htW(ktlx^>>klV_YXXNogpX5RG4(`TMq znm2Vu9t)j3b@m+6+vnImqu9p>m46*_^O=c6MI9OksG&Yew0j~^{)&tf?Y1YD?lGqw zCu1AxTi%~WR_aOA#B~Q%bZI$=EJdkkSewU;gmy8~NB!RKV%@2Wk;sUGz|;Gj&}ZCM z?jN(;N~WK4jzcPEMTS&PF@r0kha`GDT4%*ARAd@?>MVPak;;>EB8mHGeC4ZIqQ|y6 zE3(O8iOQb4iH)WkM9oc=Ahkok^K6+Dj9SZyfgjfQ`@&cfE;X2`*t=#cPncNe-JiYOnYWY z6Q`E7coj+_v*%25nmGGWmy}tk&T9uX&?I^Bf$a#VF5@`yc*#Zru{Mn;tRa+{OmN~7 zoXlYv-Ruup^M^W4HgmH}2y<%EE!Slf3NveIeeP+T`;ai1n&YL5Nf*#Fn5wCdna`=~F(E!~4}~U&xhUePoW0_+nH;ar`s>O$MEuCE zv{XSEhUb%|4DiCqtP%LgSpj}*QGkywq@*fSH2+W^KkiGikJ69-j&Wo)X)Ni7sTOgO zc#C-t-B}k{Qz>@|b9p29qR*AeimS!XVlEq&w`jZ_%et6r2F2ia8Fk}0@XGxvDnoRrK(uHpn&ALTfUh`Wp>f+A&|%}H5; zm*l*xMtv{iN{4c|gT?+v?8mH#TH`)u@bdN@%Lpgi!Q5|%Q7&Wa_gd_*S~GX52*N*z(_#j7uF}%7#31CC}C( z(t=poPbVngTwp-(4-$UAD*4@oKhft0)Za(FD^X&)x%GQ#9pXqtVA)tqiP$ZgzTq(!n0742P# zHPmNI4J8O{1?gi%dLl{APM3D}lk&_L8FMxXoM(j`9x$EwSzuj5+^>9C@^MHOlhkR+ zk}}F8_h%tgK>}C$LcZUG)itG#OXK6+B(=p#VqR!07Hcj1yQ#g*KZ*aImB|*XK&C?= z^9%9gHEeyk0uE$)1TxKue}FF|!vtg|iVVAx=}-K@Rz_7!6E-`pnMAA-X3IFxWb%wj zPMps}97j?wC04ng8tnN&>Z^%$gP$6C^O)&4ayI%1v9|lE!RA8{$C=A{zeTJMQc_{n zu@?JmafPgLaD|JAd_A*ds^h#cK*L|Y5FO@05_mjGNGp&{W1AM?P2#`LGExEL(HMFB zNMtW7oQL*E9`>nn`w=hC@>O$3Ve$BBdJwBOvqPrg*?{H)w)<#eO|)!`pD^Drk?FxQ z3y8mhW&Bz?O-`KS#3u)8t|0b}$!bL8j6lny#C|$i3v#+eWTZ2EK>RO!nNVlACy>d` zrbPkWC{3s{Yz|~P5Wj~n6Y2~v2QtSHf2=PP%Im{G<}~70B*_E=jhgzaK>AveyvvvN z#~BsGvQ?`2Gzq<$B&ag=XgY8lk@(ZjBFhzOc}Nuaqe6sl+cK+&PZ@9)cm z>NzctIf3}IlVsBBIX{p-mn7Hw(y8^V2n6pYp)E;*TF>=?%s+|$u`iR_g?N4>JN!xl z^=Z`#WAJE%@`Y-A5X~HFx&uhEr!OrkL)9J-2#zG7ndyRQbsrlfIh({UOHPt%fLVd` zJtX;fy0lt>=Ta^5nFz-E+KnQ50YF@;t%>sq+uio zx!>YI`bCobcLwRy8eAMCsZoa-hVD?yO9q@oYjATQ-IXMVW{^&;!TUjyDI~rmLy}qu`B+|1v(7MEG_- zhOuMu3*$89B4-`Sq4}7EzV;tJl zW-zgaC$qCIlW~?yWJ-v2rez1)D(Q+^luA)1(rZcb249-}JS@0A5PXD$p7RA$Ep=Cr z|0g8$qc6zq6xR4aps{|A+wKiPZApL3;J1y)xH|2Eg{J>(xp-Ltk(mz zt4Zh@Uof?x-vt^UBB7^z!PJ883N*e?LO=R~84J1(tp;_?Sie5ipKjFOm)16F8wmC! zp&`CtYC*dNf|E&Tt}mEc(4T^Wo<~C0_=0}cVT+Co)ILO#Po+z1L8kLIZul)PjB^8vC)K#*@%2 zUyyAVZp=8X$sIY2Fy$n4p)bfaQu7RxT=~Gl+(P_EeHmX_XaSHlE|7kmB!8?zS_%;= zN!BSry81L2H>Eo;f|jH#km*MJA-+sd5;m|(pC3q1Cdo6akVYZIU|G+zHP(^f?Q}Qe z2ccFtLLF61e zhnv-DUgx#$1oHPPSVLm@dsQ?RPm4+F6bm+)v*FrpDN(O^8~E9 zQNTr81YG=-fVE!=xTL{APJU^30qZ6TSieZX`GnNpQLiodw)@ ztbm(O7jWw;0k_{G;Eopr+__u8rW%7d-CfNE+5NnA1JlL%`PY0v;<9ukr{{|L82> z$w3018ZY4KMFMtQCg7O|1w8v2ffjqk&94HpOx{r(&o%=Iw&a#GwMGEe9^*;8_P83< zz_DF&{HUaf`!Puz4UaNR?UN2<5{uG#I0yT5gmCu9KhwDa4KdWUKV_!@x{G^kYoUJ0 z;Vep-eG!!+dp!kCP65T+Og_cQ{+79Xq_B!5m^CT>gu&e{iI|hIsj?)zdhy&CG$OAyK+iSDjkwS`^gE&G;96{)j z>X{umUPjkECse?h|E^{MtE=#mgPUlL9Vt*!y{n%&WVvOLoGfb!hTG?MD(#Z=e&jlH`1N8jij6|!a4!02P|11jL{|A10VG}nl3L|b#G>F`hL{6Qw;1jvrrU}1`bW;~ zrVlkMX=+WN+lg}~J2{&`Qcd?E7VS25hLiIkBJplB=aLEkhM1c75ybM4$g2otlIg~e6LMZgEaK$XKjvj}ll=N4o)l0h3zPcC?~>T$ z*f8cz$rCWOD*-#Ay_82I+Kq=(>*)xUG@>1Kj8C69Ccr0+V;qAKMzLX}W)$67rxPb> z6e}U>T+7K`7_c#ll@sei%Z5AmaOg5LirqtW8HDRi{ecWXe>D9LryzBldyNEz%jG3M zWNBN$CC#aVC4GpTse(ep{X@U<878;9V>{tiY2((*&&IKSb%kG zB<@|AbnIdY*6}29U(TfCD;8k;?I!N`$r5PYpIM?NIo`f>!wk}}J;xQ!lAb0W%Ptf2 zE*>hJ9Cnyqj17zY!`#${o{7mjIg!&MkrPOlOsR3F01_=Dkp``370un!>BF>08=+{V zZA2UnoOY3xBwH7e_7dqxn>I>wK!m{qq<#w*cLNm*kLM$ug!3X%-?W_UTLN}(VSh!e zUw!r_X4hneeAT2ZMPYbCjWmm}H6mSEBJ#fBIvYfGn1c(5meYyS^%eF!skaq=-f)-G zl&_gW7Dmc93|m3fd|qR2JX<6B9Qce0f_+Jw*N?Q|2n!SzELnw#yL?&NDvMEWmOOjMRzfMo(>qWdlmJgGm z4o3?ANv`_@;!m+MI2(u@Eo^R?$YNrxV762dsgDu%2~?WMmBhL}g*{5x!zv}Qg@lCvX5eq}y6Ei4hT6rSEkni8*r&*vmzbKW3|BK=6s5{8^3 zLpB~mwh}`&2}7EP9c23EPE$Os(3ENksY3&n|u;I&=-G~ zb%I|z%2}Jf#5>CJ(Fgi7BYHfCACtV9Ozc@!Bs-*HFjOoj-Ws3pmq`6}p$Ks`%&jDJ z7YlyI#Xx5{OW3`c{WP&&uzHkzp0I~7dl#|3^i#`=CXtJS)HU1FB86_)73?d6)a{AY zk=dcVHwwF$l@B7;P(L+_cBin%FnbEIW~8KkFi5?ESd}TM9}7}nPpq3$Qhz3FHkR2& ztS3|0UkB{>i1mrjM&otxxOL1PBG;i+WXKoT0n~Q=MMz%vXiGvJSTI!kk;3M;`OQFL z9h0O-RZJ3@&MY&H_@`MF;&f@4?7=2l|g&m!#lP$43#f?S>> z_P>&~pfN5BO8X7*f3j+{pw|T|_NG&T{pb$Y^_C#@!NlspZ0Ubcet(eq7-Eg~Q^VR% z3foL4@;sYTI-Ocz7x*#7UFHPd`+4U))PeD;j{X)cytSg(lI_D&bOAE z&7^SdE1{w$9W&(74daSXYFB(tBt>Npk~|_wS`GPeATyTu)01Q*Z!P(E$aV<{RQf_Z zUML?+d~-GNZm@i?qNmC99C?_?PgqvCMoVgN)gwEJx7+6jm61k?J`W{)U{i~3RGUXa z&Ey;K^NDw0CVmcPuD--eSiUCB2Wu>mC#JCSpmiRRD=iBx5|mGTDmq=1u(2c8ljJ?g z(xHN`L~c)#z+1^efl5^QaG3!j-;k7dkgc+`GzV(;FJQd=NZ_D!A?()R);~h>2$C9_ zB&nLBacPE0#G9GShlBo;*;2t3#9oz2EGw>sQQRQQaHz5=MNbpZ5-jWRb=yK@4 zn0OnK_}M%RJ2_k(e@&Ff#*sA<^=&=O%(XU5MRSRL9%=Klo!eFP3X1~6u7Z8WD-x`DDE zs&$i@PLbNo(F*Wx-RAJ(gMJP#Go7_KwO`?IDRDN?oh|Z`31fqpCnmAk4L2W3)R=Z#jhFUsHRdpu<{`jjyuPZ?WrqJ3ND zy9aP_^4$a3Eo3oj+(Un+^W?om>*37BNu=95cwpofu-_@YPw>FV?aMBKP&sGRw9XPrQavsV(y zp<ATp6fM9WxWPiGM>VfHi<$?hE#W;)B6#l*kBm*He0sM(#u zGMvzCB$?Y-j!UGqUCdmwm8dTyYhYWc%yNO=?1lcsp3*{=m!nC$_Ef!=bAkKT5IkKSJ5qjwxi zs0?1YcXML?!0lSPv*%KN+5Ev8o+jts$K0(xhvmZT&CK4J#8$PBGKUp?%Ut>X0{LxY z2FL4A$-!vNq}=Tswqv3cf&;Zv?lb(51yy_Y6)L$5h+<7Kh`cHxXB6><&qerSx4x{a z;foQOA#n!Q@L!SUG{j-=-*9K7TM&68asWrDi%_Dsq%)hFD91bK&Pt3RD&}dmPD|w#4edY{?wT zF*L|meFKSgjAi2t7&4v=AEII!@lUZbTE4x6Eh^3-)*8zWtEeY3QiofKe?QA`9kORq zxmC|TK{n45f2Xe}B-1d+>s#U*YLqlRO#(gp5x*77aE-%xH4pUkBL1LEdRmDLH-wo$ z{3%u@SS5*@^keh;ZgO?cz)g4*)T2^z6Q0R^H{pk=8hIn~4RiKmHP%g@r@UU}{5n$Z z$!@Zn$lqHQmJ4AwxrSJ#-eJ`B>CWoO$-#!3+|KNd#5yE}4L9k_l^sf~k<6CNks59y zAAHUrR;gu&+Zb*lDpnDHt(8e~6H##ou^zJQunM?|)Zr!Kzr`|KhwO`}+(~XC+5ABK zC>dNz8kT{ZNM22d-E^reJ zuMN7rM?yM4Z}ErX!vZwp0L|}q_(ObadUT;0?j*Vn@d27qgN$vq3{wIPN7DLFH3Vp8 z4ZMM|8u&@8mSJe1AwV-~;5ShGrNqGA8J7~gfY;?i!H59w!z*f~_YI!f>QW*`eQ+M8zxrhd~mC7vV(wNS~KRiiBcLQv&9Bx;%aqhTv1$K(OIXBOux3%=q+dKN`9eWWP zn*B#p23OOay_Bn4N?3UIf5hjoT$sI?1fAED*x}iq6@ATIdHf!l{W)H%z%oL!e;X!B zAvmyAdnQ3-o&B%Mv)dsyfY$w)se!;|E5NR))p&?7=YoPzN@ODS5tBD#3EA6QbMmu$ zU03~(XVE)$6B;tyh61WT-P!GV=)04!u;G66IV=}uZze%!Z^{7)nH@G9D>{(5^0+@_ zIF1kS86m@s_jPeeFrdAbN0{9T)S$_4FN!;E(pG@COSb>=KHP2v9MWR@Z;bJ#l9rcb zj(MCidy4L?y*Mv$(0|_|>Zg{IofELpfA%U8gYx0SGAdBQu;_OR_6z;$0 zu}FVn5A#K?4@9K@ik2zFp2s3w!tB#XB)$KhOZ@e|3?~!8aR23m<}Q+XfaSPEN&R;R zQQt_`z_v>2zh4snmn0eVU-8ZycCs9vv~qY+#v`_~-$fkqS&R52&lC7y9?t%1qc83} zLSMXS^rh?s-L;6E|m7WmJMcLe?mktvA84VQKnB6~?>4kEQpQ*x|%h~$_n zNvsT!`erT}g4>3)?QNbQZA%f!HLp_SY($!ycBJ5ZMB14+DOih0dx>0$$o>+!0g(eF zayud&Og5#t50QhUY+DfNWZs~B9>Y-3xPbTNN5je<7b>?2`J*-mP)AG$JgPVs2#K0F zjMsIJ25V?shM1b&fVMPBtRy(NDUdUd>KuOMEFxvyyWNJvt&K&tYwa zarVI+)-aM2Hd|pD6V5N4V?hY&t_V}#Whw`pjItA6UYW@nKplwgYzbJcm8wJ3qoW>c zhN2%u5x>5k%{<6~RoCT|LzpUoW^@b@a#$8pM@LwS-*}g_p+e@3k*4Lh;K5=oqcqtf zNye|nr}K78nYLJ-b1WCP*;hhErmMt*cCiF+CbHR|vN=kISVK6ZW{DKPVh=;4h(hRO zDdd4H!~rQdm_UxNCGR!SGS=53SU5vg3tc}+5&8A~G-Dc<8;oD+7ZwuaHIdBu4S$qS z)P~J;wwQ_E{YM*wdAXvJKM2TX-Jzz-L#6hjAtbPFHb<#?k6A})c9$sUZwOMQq&j(r zN$L3Gf|Sxh73#c2l<=nqK?y_rykb$p-z0!9r9je$B~Sb6t}(RmEScYorW+Q18_ zvZJXgPTsfd-@92z9G#5=PP6OTDfwfEpis)$${hawA(fN2mX+`)5oy}?aJ%qV5}`Dx zLXpd?GyFt;17u<&0zKYJLvmdqKW} zam+By&t-gX&?_0oY}5Qa#v6malJPv?t9WC9nWy<`cGZsb+60vi<FG< z0}UAFj*fer9mM`+cv|7_UQ)%xS(|O=D)RR*pjK2E%DxdV*Ugul(-=$Yu4Lm^O=2+8iqpa z>@W>!ZNoSCaF@CvH~7F55SQ;jB11FpHYbq?-|1q~X$5@b`U>svX{vgJ&3e7)~ajZh~2QyxPyoNBI0Dcq?yTgDV&G>NO!x%pX z_%V!+0A9#=A@EU*j|4uJ@ln7}VEkC%Co(=7_(aCX0H4fw5%7~3KMwc|#*YU+lku?_ zobnfNq50DuX*{gvk7MiRpIM8jg>n7}NLF7h+VVICbSd|5pv!!;WgZI@#`{ycAQJf$76l%!F;ze=(cqoVW6Gd?*6vinj7KQvnFtRADLsVXN7RLG4^orsi z5?&PN&&-SB{F7ouN@tlI9b0p;v$OdS410380FKsm25&R-3{WKeVyC*`v*5OWq#&2rd29;I{Qt-F;HPa2_h z56)BZLm7`!nG1E>vfM`NdD|k%8ePVy;+OLV2L9aWYF1H~R8$bHFwR>6 zSzGf)M9j$4WfT$Wzb&;sQ8}epr_Hf!sG>L@Adce#jIPndqrEe42c;x+Ycv}}aVbfS z=4@-l^LZGIkLNTs@;FS8SQe)X7M$ELL_Lw&vv}iRpywcdOCdgi$$Xg=B(#c?myuBR zS^l0CuLPUxiFLDOI};^ID+#%%W*Y_1T6UJ$Sk3^;SYKN<$|f>g701YShP~13 zMMck{TMB_av*{=@t%-VwS1w<5ud1TT#9@mNuu zk1h)}lGF}*G3l_%tCF`O%e=$%P@79uWe#gBq&To|$#d}fhiv%x>^IPYI zaej5RD9*1n7sWdfw=m8oE{gN(phaP=<#2{Yl5LR?3gdhV zP!#7AnnDd%=~$e{QhR@IEyUD8FC zh)BsOnwH#=#Fm8FUxv^kqB=P|m*w!6nkD@CsCym}r?K+vriQ--wK#u+dh)n&Gnmeg z#hns2O5zWbIFaes(pt-b2H~?A=RPRngiArDv(C1QIpoc}`wk_PH%+ACZ5K1qDdx{o z+|P;S(R42cWrRfLIgvHlyadSMuS0V9+mvE{JGmCiuny*x0K>bEt7RS#T&X3{Q^SQSvn)sCAq~;qnX0J zmE!kVCL>M`e=SpyqECNvzq|xL??H%qO%C)vs)*JkBLk8Jt21@Nr_`b#z>>isL4htlHOdx zF9W%^ki>7i_d{(=O*7W87~!Q(}3nW1?zZL9mqv$hqOSu_wa`-jfVtxzOYzs+V%#TpqlZkjH-F}XO!2WadNT8CKS6Trd5rG{3p01c*_i#6n#G_V< z+c}$KP7c54QOsWuyDw4v6Dz?DEoH4Yn`urCKj|;#F5~_}@g_8hOF0;k(#KEUNK8o* zKRKVMbRbGeknT&ej@y-py=^-76Q`Iz3v-Vm+Od|-oy#finMd@=M4M^pTra1X&!pXj zL_6QoeFXL8bK+t?F?O#ZiHE~dVs3Z(5>kN!;*!@3NbX~jky7X0rzm;leH(~H)ER`{ zNvM;<$MMDdD9Qbq66`xB)E=r>p8N2VBBz9(!MJ@%Minc{in+B_u{@s<&oAcBEZmWl zV479T2zl=;^5n?yR$PM3+?4!%hFL_sTf>4FRNj$~qJY0E_{>>cg~c|x>d~I<+yJW`(rD@C2@-RU0w4Xp{7Wyj!wZZUb}UO)-ajQ^S)_A zw4RpE$jnn_IcA`Igz4n)qNSK$^l^t0YpRuF-&B(Z@AZ`MOD*mil2MZ?$|mJ^S=6NR z!b=XnaZ=2`$LQWb3GTFtd9HGb`GMjcT7jjr<2uD-n-l$5q7~EKj41NmoG4^U z_B0Bd9R8RTGX#Hk<1QlN*>sB-BTf!~235=-M7irIeq9o?m_IvpHxcb|OK07oQfIXx zfftDuIbP|3`%M$)k%==hO}@07&BcsNkMNgP&K&+GF48jM)~BScZE_z$ujFs-iuoH7 zw+Bh|vr_ON{z}FjPP9p3dQiF&e$UfgNKCO0PvhAfb8`3%fD(S0)4e0imA2fwhy_Dv zw!FJpvM(*G+-I#gpNNaheiz9Sy@X%GtdDtCn(Rz2FxFXg2@c$Xw1Y z>vhSsn12Pwy^&NrQ?;7-W?v1^Z27gDV*a6TcPFL$kZwO`r-Xkf#Ql|MRFm0sOk{ZN z5{`FtCA0?Sgx1Wosjz4bKX(u{_vw%(^{D|J2NAV># z5hG3xKaDTu*8to#6u-?fbsaLpaVG|k{Y#ehCb?%x2BXN`iqbHDcW5-`kKf#PNou#% zhB1&ok~2RMt=+g#H^G4WY-sQWj&AZi#@=FnLg{v+bbV}EMw}de7+K6uLES=%&#+7$ z9mJR1iNRCPl7|aOZY9ZR@fGFbhh{1MR?oefq#m={v^UdKFe%i7i_wEi8XrvZ|0Y@g z^<+`+z0Nd3Cpg~gUlHo$@LS6g6kkuh-i?i?fsk%#LhkZT@wKgp-jrx=~ZG4)cSN{M)*B}S&V&iUDPCY;lW!M#O>-?Vm0 z5?re4V|%frkH9j+ zBSCG`aad_o1XkiVzugJdQadrEHXV0L_$6@n8d6nN>+J}cF&%eKl{K~3#f8LJ(gw1@+-&1SMo@;oA`Ws;*V5<$jnyUgZA8RZDO{!0(>?wWdfb;@CZ9) zHX)+)bS{P&Oj1$+Q_P$C5K8~_heww&B(U15;;tjMk8BKe+nXZ%Uc1;ka<7ao!0*?Q zh7W|Ct4PO9Ru8YdoO!G^eAO|Cne{t}^AT05lvD9_M%(cM{lGMSj``ey`I=vMyg)yQ z%yvt;*YmaDdmbx7SL9=J+9XOH8xP__-UQeyPmxH6$gw1}h&Kby{ICQI5Vuq~B0ZnY z7``H(n9>PKD`gY%btVU8W`;(~%o#p*mSPJp3>7t-<>`vt9$7k>ipwJ?U!^xG!atmj z%Ze^B_Y!ZZ;bGfemKQlGvdqjQM(j&rl`d7G$SK8?lqV{_O6#hQ(x@V5GP%q&*64zlQZ>9B=}#IK z@f0Ys^LbhgUy(79MfVeJ(PI>pn-wYS+H`|Gb&U1Xbo>JyG zL2Q0fY&pfKw!H5NUy*H*^<3L+N-yQ@ja=!Xk4Ls=7G1~-V|!&O64@NNn4O;2#e9{1 zY>}Oc1P)=-EHU2@Z>iypr@bsMGJ_mqJ29+7>{OxB=M`CQ)?`SRd;c=Sn^~LeUYqP@ zMFNYhEJLOhNfy0>Y9Ss&Lt!AB$-3cYx}0=LDjr?VHGC3muR|0u>*G^s!$LRz>M@Pb zG|rfjB+SRb_L`xHS>KfeC()31o-fR-l@c=@`FJ=Smy=>5oG<)2lrGDK1ib<%G>+vc zDU0~43~esEVsq&@%gu|Uth}DdQ`B@V<&z!0mYQiJfpO?58oAsn(M0yIrn-s3UJez1s zXLp3p&@yKlZ$i?x=8Nz$v!Oed8%gE#fz%OqSD=Y2h2fuqwY zfLzNA^W53-E0!8QDX^F2NA`^^lj8ywSvW8xk)@*1Hj#gpP#!1Pj?2d%d>8u+k_uhP{PS)oYaC^k)*xl(!a!!F0kBOgS3 zS6jrchKVigSRyt)vWR^u*`Laj{E6jq?_b2OwCH!-h{urd+~SWRmqw~JuUPp^^NQus zyi&^33SXtaGpE=zx%Zdylp;ye=99p|R+d4Ay*%8&1xhxpUYHqb` zEhiX)E-zE+LaKk-0Agorv%U|do);cKF7ijU@gc<*`&4#C&d&XcRv1n(|B8Tn7D=wB zTgEg#Pmu8>(l;)@UQo=x6ku*7e)cJ;GSRbKmJxZv`8l?1qM~QJ{QCjG&k5n@x_goQ zOfW8!#K5l-1|1Cioi=6eV9Kc(w|s{E^PD(-Y%RW)8n&6eMrcNn0rZcG9rmYFA2L792Q$KF*8tBoylc!%-1&;41kg?uJuFFTV*FL%eEN=1D~d8Myd zp#|X$8Yhch<>r#%(>G^lG8g-?`QhytlW8kf$~!T>{B2ly(l(4)x%ZUv4veo-*?lo$ zH(-JDPbi}Xp)#;HMo)7NZW&rsXLse))Ea#D5x%0=x<7KcFH(BxITl%@$b3Fj3SZu< zrgW&%O8Z%)nA} zOr=0mR1(Tp(5<(XX}7k^%#?X8F7nho8{BHmYgRtfXlHqUWVEws{^)48Fx*bfZ6#K_ z&&>VJwpwb!jb+pQc7rW7;TH4Lq_tYm->gi~giB4h4J|*t9W&{uPNOd1kurQmFLpQb zAks_erJXI(T9NsDco@FCb0Vc9t#c2u$l;32=kv<&<((8+^efR8eaXQG6sQws+Z22P z8os;}B8xV#@H!4w1}QeFU@)s~E3*mH4g;dMxG!?e($5Xjm;Sf98N^8Q!tlX~J@<*e zVy>sdzEVCs;VWnhE3wpsk5ep_j#NtdNQEysR#~2OtYXDzkm92izDnhEg^=GnU|Gm7 zGT3V$MWSz-H@KYqLIYo=wU1TARm4fR#M>s5C35&zm5TW%y4;2|9UVlsKPA&s9eNvM zm&Zg$1kW}6(wV&$8enF9AxV5e<4f}Kz$IqF++xR!<pv z)k`zwq}HXRF;CAFOB+~(kA>wrqb65AbeT!7agux`m$KFPTG-5*o+A4SiDs`aya!pj zvu&S*MGjYFxd}J0O_%%dZ?$b`aOXvftmICM6DV{qxRScy8C})Ov=sD3?&)-zQ94A) zi$)Vt$`A4QTJTw@;7o{bH{H)5^q+%5CRmyLU$TgpzC5Er~6Q;DCDl2Vjk$n`A zA)(yxbJ6e>f4TH;N-EuC5q|Q?m!{#zui-1cwe(~wdb&mUp(|gKW}R6!ec>y9T~iWVG>FKhy)19J;r9gXWvvpwwv^uwv<#ZRCH?_BN%of&6IB_BAl*cthUTXLy4SQLkc(X_;zn{U^a>MV2*vl{9 zU8R3law)$j!q;-cucz3{m%P7pwv{Zm$Ra;UpA1Q8fx<7l@Krj|BBK=vCNAFX$dz2v zy_ISv3|>@aO|4MXHMOgy`0v)#m#ltGZIVA)(_n$Uvy9#hp!%s3gw9q!A8+9s%Acv69^Cloy7o#7AF|BIXuj$rqRC{ED zdZuoJOZqmT>AZ(=Hftfr|?vkXOQ+ekD*k(xDa)T^HqjWu=#)$dNrm>RX{i8Bi! z8t-6wHw0lu?Vb%M)n~m~9tn48NJk%x&~KDMXh!WW4OxUf|J&DB(wTJDikh0F&t_e_ zEpZzYy-ow7TWZ}PV|oKTi1cpQxn@twE2p*ORlk-NbnhS!dP)>7=Ainvp!@n{Z$|Ba z+#pQ0vbo7bu4ltAiIX#Nzc7)D2AecWB~MgF<1k}T{UAjXVQ^zf;Q~feKSj+MwF7dq zgUD=b?mQq($tcYab=ZEnM9q);XbV9-rnan4iC|><<)j|kEc7m2I1f~;jb9$h*4DOd z2Z!31Xj>@*DcKhN$>k-~}DT3uv-CNRSwP)FlWV zEp}p8MWH(TUh8!hpFUVU!y8n;H+dU<2@oz0tVM5(sdJDNmxBH^uK2JdVj1?nZbX!d zu_jCGo+e2p>=CXL`@o@oo_-6_7r0_7={v9=J+h>higS}4&dtE3?G@CA712K?(4L{y zEAX>YLZ6^O+&%k-qg=IqK~3qq0KW*nOVJNwgbN#XzyU#CTo(G3PFog^CX$n(IRj(3?%8lgZ97=dHtl5i3G5P1UHA(NV z`Z_4gsLjO~Zp-=sC0NJ+;Bd0@<>Z>`uAJfe0X zPouXiAi)D>(7z{!lMNwV0c+AeYJ|yLVT=OB9n8S`c{MTmoaBjq9+RgKDl-7vWh&Eo zgy2XCQgEH8DV?lEZ(V8%iA)cdVi0A(;xjrpoEIHY*QBX!7PY)~9QyG%jYtlsat@rG zE!S*y5>Y)zxt`_D4P1zRg*?cZv+W{-?dct8BjbgDn2c0H3*qab%u{fqmG zNU7&^svn`L?~EqIKE{k}FuLX#DfRpifqLY@_q3{DJHRS}#_; ziaF{xEV-I^BO5U1!lW88WsMeaP2YxGnTxcH%(_@{Wv%7>)mK>SB{oj(!tqO`JVE)^ ziG8^q>jMj|Vk2EfRcBW~<+bfECv~0b^Z#nSLdALE8h90kovSQ`ybzSDg~BmjvG78) z3pqGvd#zwIYB#27=sJtj+;qLgsUbI5obtWF;^Z6~O)v)X@-T?apyBPNP@F4FA5SJz zNL$)v@Hu^$Zk!R}DC1Fw9$Q_JO0BkFYC_kU8&A{bI`keyx?~1oj7!rZT{u1Q|6Vp3 z%F;cpcBw)Ur(>E-CR%E`|4a6aIGr*SFP)ZJJVRf8rd%0FDH8O<0H>ulaYkZ#%Idaz zRi2d57poFZ%|7D%eoOzM4E~UCYH2cBEF&>BWrjA&K&nQnjJah=C+--_(2xJKTv7`{ zR?AIu*HocuWJP-Z2#aSLf2W4K9pLfg(Os+{*u=ERkY22v0TWY(H7Fe3?gjFYGrD5Sm-&U zG8xx%MrI~wl(xz&%s6IeB-#`fQcusbcvY}kid<(_daGyfbIPz|RT)`2W%&EfQO#0S zLsQ0)?9X16X7C|fT?;eTsH%0q9}>1XSont${~=+UgN6T9V&kMu6IQQ<8HP>EvM_@P ztr6x`XJEA|ER5g-DH|1-!F!VU6#1`=kZHd5WI6L6P2)(KHn^u2Ip%zsO3E1j-znYy zPOcf7G1V&768itzu~RLQsj)K1{An(kp+jaEd^1R8p3_r{njv8Z^_g{L5KLE}wx-PB zEv!C$nVE6X`@2Kvf40ZvFIxz55& zIag0ED19VD>HkM`q?X^{$KS%_>XE`J7|$@FR*#gfh#tTvUj{!A7ba#Ph1rZ(HCt6h zPfee3(9TFqO_{;Ht4B&#l(wzQVARx9RaNkh(o^+jItQ#SEmhZl=43UT*-to`&uh}Q zwN=Vi$w)6_hEX?-l$z>49XUPc6sLQmv~i#ca%!#_{3}(2rrh71PDv&;Sz5d*H%b-E z(8Q@C8IR>M><=@_r7FuX(WQ!HYMWGj zw;I+=8xT_sP9t>sBaBp`4BaL3;_QDvVWtuGPb}5%t^|#fHXo;EU)^IKYMLif)279% z*?t+8nQ5+(xk)q3pntw#YPB*9POd|5#iz=p#xo2b8GM&i-H@g#gB;g0{qQ(F&$Je= zh7)ASE?sfj>{(4Cq!lP#b=uiny2$Tpi8}Po`tJ@xnWZvQGqihV!PL@boboaftCccU zsCtE{Mzd$*=hIn#n&Eznms+3tGTXrt81#Aw$ut6IzGwDJ8mZBIb zie)(HN>!HOFfvu7TKWCIP;mO6A^ICv$$Qt!?C-m1&Ft6ywxagC5*z;u{$+u`Ebx~F z{<6Sd7Wm5o|9cjQVm7BY$@vWk<2nZj8g=(M(A!st4QqP&g0!v!sdwBCK-wGx_*n%1 z8q2-Z?S#|_y*>2ZGpSwSc6PH51}z$m$!`Kh-S^!tUNh$7|M^ATHeGE-hghVWB5k^R zEksq@9v=NB1Eq<&Z4dQYg0`1?Kr@u2CH|*h)Z?#a9JkG3$kc7u69}XZZW@l=YYzAJ zVezQ@T`bT0n=5!oB1)OH>4mbot$S;ssQ}qps5YM0gA=(u+j*@7Xz!zH5Y%sIx@f_Bq!2Lt$9A1^(fh zd!ZSQ%vv1d)tACGz`t4ZYX^3IbLdrP*&qLZ&3a=lxNa+Jk#_i>Z0>0MKelLWa;Svv ze#dHF`-BYl&_A)NR>P{R3pT-5A?UMcN74)r0T59gb5oHFve@ z&D%ma8uhwJsbcu7I_e&9yvnv5>*Wb6>UKOq{qCdqIAG)!2ai{$al6EA&beBosM|Hm zYpbdM5j)Xl<{mHsWux@_Pt;;QADa~LCu{DlidAQu`fle|uzz!OS~a*b|~ri4vpkvgkC6N8MkeC;M5pov!7$zQznojJo^H^tyBT-JY|&!=xha z;iqWb-Cn2qR%kR^tztSId3 zJ%}Osp@?2q6Os6}a{CDGPsy(X;2y@-D7019E@oso-;Yv^+` z*fe?x#V)lOK`^R?T^m_v*naDi6fAX*vS!Y^3>>$;79py$TdPp>+Ig-02~{F?~2k z4g5*$W)piDvk#K&iQmFa(D7EkoVRI)hu?18)~l^awZ)FQ(mL8zkvlkHr#p>0Pm4{O zF!wHM@w@51$M=DIwH&B`HotA;gYQ$W+vR>WDGjX;s5aXSUN5OZZ@ZS6&rvPa=?@wY zKOarq<{{&De>f>Wca8a*@ni+#dYg@RnrNE0KP+G~Kx~)0MKjI~w|~@oPd*BCzw;iU zuJJ&PM=AVUjjhHTE#-)9L)F|f!r4dNg($AuJgm$;vXR$B%FygF&8&{{y}Cl*JAD#x zI~^926{ngF#l6;S3s=>BDfT!O?7AA;mFnJ5;|UXcT)HB)R+;&`Wh^%Tu;>!=q(zsS zr;HuVlWL;Xt29qr{-H_yaH*p1TC>CG%B)wCnA=YmpQ>-YdB%8sq|W`41qVE9H5?JP zUDO@)91839O=@NLgy)ss=LK7vZ8cuBN_r=2Kk_BxEs|`@%*#gC3;C}Y5B;RZ%f`LI zys8RUntv*GrFl)U)~{K^;1t!J+k&T(%UZ-Aspq;ST+Z3{Z_9pm*CnIn>|G~!)fZ4x7? zRMXzeEadiX8m@}FE&9Ikj*x5y*rK?J4~$nJw7ym6@Obn?n?*s@QdgUgtW=864gA=S zV(vBO6N9CWd$=uxTK78hsqc!Gg$lS=*4kxlbycn1b^uxUps)7oTK~2J*VOvV=nkad zbH!{!Ut8-7D|TJ2FBR47=Y3_oQ^XRplj`W<2eaIB&7CGTkOi!^1z+076p z-2+xcyv9H~o~;^ChY{rwZK5eYM&G?#;;ZgCR!I~+M{S4H_fgl^6Pv|0Oqt2TNEWVLu6vmQdd5!~cQtCJUul!Wj~lN_d8Zva|HcWI^vO2f)9| z@SZ}9|Mxm&^%lU}0Pg_c5x=(^v5RHr<*fzS1@Jk**8txG{0vYg+tk={0p0}ws{mF5 zTm*12z*>N-0G{`UGL+pCQHUQiKa5uoi0FMA{19(P2>}|x}0r&vm zLx7J31l|_OA2)6oeI6q=Z!aPGuRPPi)(M9_9{t)ldBX?^<(x(Pue=TJ$#-+!1mTL; zdg1=NKcmv=YfW^|wy(I#~+_a!4 z^T`j&V@oE~+aY%cz?}e_0PX^~2jE@-k_bxZm$FEq?C!9)@oEc2Hi|g9^6CjCM?#F^ z@}vhF5$r*5ST1@$K~7%){0y*E3LZHtI(;hrC)*X#=_k%}yz@|-3ji(zxESD40K9GG zU5VH=0M`R-1h@_0PJp`s?gMxb;BNqr06Ye;9pE1TPXjy)@B+Zg0RIH|7r>hU?*P0H z@DaeL0RIN~0^nz*zw00Ota%1Xu;I24F3~I)KXot^&9gU<1I7 z0Ji|#4sbufLjaor9tGG2@C3k<06PF)1b78tC&0S^9{}tE_zd7nfNuc42lxr#SAfNG zKIbh1SOIVjKqbKW0ILBm0=NWVJ-`(JHvrrOa4Wza0CxdA0Prxt7J$bA{toaIz%u~P z1H1(AD!}UiZveap@FBn_0J{M`2lxu$TYw(`eg@bButfIy-g1Dm0V)7i0;~a83vd;{ zwE!CcZUndm;C6sb0QUgg5AYDcqX0PW_MSlONq`*y&jGv$@Cv|AfVTkN1^58qV}M-% zp8SzE6#(Y|R06C9 zxD4QGfDHgQ0o(?#3E*CU2LUz%Yz6oSz|#QF0lWzC3czasI|1GTco*OUfR6!o0elAV z4ZsfoKLhLmSc1X30^kCGH2`Y?)&X1&aFqZVrR5yX%abuZpF^R_qvM#Y$Z>oeJHql} zBIUKQahzP~YQ4Qrm6ujLdGiIU{8%UEd7XWUK1@U0CY{Z6|u(vwgEg2 zupK~`ZGT7X9{|q_i2WNetirtHRoHo$ZdU@F4}hham%KF7S$+*fE&@p25n$OC!@4W> zIz-+Q5X1T@rh5P^{$uNdIeDuW? zvsiz@2S_+j!i0o_Bs@|=$uBlUaCr<7lbuy;s8CRj;eyM$Ehg)>nC!b^@*P}klyHxg zaEyecCwiphx1YjuuHh=0xvCo7kCda0=Emy*8Ct=VTnoE2SG+-SsX_^Xse+kiH zu+f!HQkC)X4@>ZH(!+8Y=Eb@^EWLgXM0;)S{-HrFDzPLg=*gOn)e z;Zn|C684s`K*Bx}_LZ=ogfduo;&^yM<%#2Y;&`4oo+pmy!O_L>aEkAV<9XtEo;aSA z=~9g3>jVhp7c3|@d7PtAQOYd&#xP!pI|vmnDLjcwkM@eBzS6JN@uYWqCkXvy38zaa=LFtN!DmT$iiD?1 zI9oy)%S1ccBWz!>>F?MrY_WqyV;2d#N_dEbI9Za}46h#HlnIXs@f160SNdnUwK%Ts zZe>iAdScI%=2^nSkP)s^xT8wVL=KiYk!vUMs!Ci{7p$W5i7vD{+IOPZZ<2&EKI=)0 zr)L^x%S0y0q|jj(iedbcMu|z$W6~%wX_S~WN=zCh)`K&^LL+vV;5|7Mz37_yf5NFl zqicJ4%=e^EirC%~7h#Uup*b|0hAb`;7^-A=ieWwz4~~_HCh<|s1foBEY{(Nij0))U zX~TY%eOr1ORzZ56neMglSFFCoDC(nCwRJx!&k+(%<}fx*aP+)zpOZOI&ra`B`vkYLh#zqknPD@LC<&!r7W^a@T4#3)P*tSIN@R%!#FZt zDDXe2jVCJuZ>rEyv+07TjVw|cjO%EZmMkZ2j%8ofb3#MWh;~F9VY-9O`v@0y7QfL6 z4ZUfwaF3D@RzUrw=29l~{6BXb`Y)zbZ6CCWtlW}XrmAs%oYZiMI=F)*a}%TPbZ_@IlAu+QjT z0viR<3{Pn#b$~6xo{1Sw`-&bZYA4YtS!Y=7D|e#gcL6*ApgRzK#PA%5dcgP+V*dnq z3qTLQHq&@UW8F3YJ(_w+Vp8-T!p0CG9P?N6j^;hrRUgv=pc z9ecl?Uqnn0a2;8b>$bELOL*d%crQ+^hmM7HDC{NGn&>!c9- z3blcRxe~%%^8{}$VZMZLyq1E){V=(=5lZ!^6f_A2E!3&AXpl1D^?0qNG?qSY3!Csz zkx%y{X+%#9>=lR%JWCo8FMK7f>_h8#vBeRRMppU~hfBecU_DG7$hq8z_&ET2V1F)R zl>p}f;2((Ud!Zgy2=pIxCHZQA3jy@uo*w(_B)1m4O91dcM?Ky3;CYi>OXCTXr>kc? zQ}XaI$-`5mlt&5r_~>s?y#+uIE|TZZC&1I8A>)|v3Pf~h&?gZ)L3|V71AvbJ(3`z4 z5c>*1A69&aSeXo|-Vy*k1<{94dhVeI9{LbUk2v&s)8$B){JcpYH0epljS#sVKp%PN zgC>2*@hW)wkOOBTo<3oEUwGm!_o2vGa0n&bS7Q=S9w0$Klx()_!Y@4MU zc_=dmr(q&_jD%QajS_q`hf*dCG01zK@RB=A(pKNQ4E9c*-mU^MdB>^iL+u_q18OhP z?r|&9X)n=dtvWky0#7H&yAjjY*2SjIoDYJh=Yh!wftbTRY-YVDA(=eK>eKv}!PEZq zFT~ykcn3hA=IR4JJtWkQ^gTp=0MH(k{D?RC1Q16&Uh<<_?K(+MWj*v6`+V>=^b2$y zX+X>)meFei}VhrV&j)#9}bU)f6Gi>)v1GM!PF{cki7Pma)d{K zV0DoE2={Z;`)dJ`7N*AJEB!R2QN{s@qrS~TwMHMqn1F`D7=Ya`yRB|P@!X7!X5~t(+Htsj6$o*7^Tnr;k3tz z%<&SAl@M+`PVn&(o+#l22`5T8Ny5nz7E5@Ngi|C$7bp>YnuI4yI9) zPnB@CgmWZB_c=}Q(~*@k_`?eyEOo>!b0w>M z39*(GR}^0I(4D+N(T$dlw%WauN87C^xjtygIOskNk!Jv&1Hd5R>Ha2pE%OFM&cb+? z^kR&s4`KA_i#~R_6Ovd)NUcEdq{cA`Ye*QEFiXO032SmFX&{lt`?Fqq!0YgM%Uutv zFkCc|ax|3?Lr0$AEhR*Ig$I!I;URrs!0^&lG{_*6w5|^i#TX8Ii)4X>eI-oq?&#v^ z-00Tm(CEtO#OS`qiU#S#V%csImu;X9>ivZ>fJ2dJBXRM{42R%<)*y&_A0~PAln}M= zC3x5deT0&3iGhZ=^ zh$Rmq*MfK*fUX9U4?=XabTdSLYf*RyM1E^+sKeB~kj%JJ)UiuSbP@U{h;ISt zBJ@4PJ`fH>>+^10KNj)1AsT`ycJQ=Spl$8fMku? zr5$r6UY(H^qi7$|7#<;IG|%wl7V`r}Ik>=cD97^v`u^N2h`kD+Z_~Yo*y{jq0K5&L z@7BGC*oOe00O%`ryAazApfB8ghS=u-`ug3MhRQqR~@YHGXwnNDLFt)_ESxeN-S<_;}7h1yaYTQkE<$n+TAJdI^?Xi3*X(qR#Y*$DFx zW*`h0;pNp4B9Fz?5W%r4#2!!Mo9C8wc6{p~$ChHA{>=}S?} z<>+8%iK~lZm;ob4AIT)#jFL#?F#13mmFXwa10+0BLL3+1Z~%oV5;`g-mGQ8!fMcMa z&lDLr#%YX8etQcQxrQ4uPv~&m^zjbO)LCQ>kx&{-UkZUM_Z5173E|3v1cyVz(5M4; zMPr0JR>JWThU*hHD;yp5!4he%$V;uf(*-|6Lb$$;TT3zUpi%5;-MJvH1Xu;24?fl+ zwhrKO0A14S@U;O%U54pGUC(QEwAX{$j00BE(Sfu_y6a*g8s3AAle&$UFzm*mHWyub zdXRj8o3u<8F?~9rA6@84tBwEJL~kQW+C)P1-R6SB zsnCNlCSof6bJywUDsVP*81!nm97a-f9&|)>A@pZV=i{Zc6C{KyVzhvn;gINB>1%dO zo^Z%{q5%%MK=7pLbO~H&8Gw4{3dHnCxdO3D0QFU!V=n?xef3hrbjDSey%Izn`_*%G z3P_%R)q!>5)xD+qu|8=~KUUAx1xm(E!ehwxaeyZPbgI=YgRV@T1@C!)F2w#1d-nl0$(7fKdKYdFIoSpS#=fuygMkf18_cy?f(Zr; z7i^rhqtQq^tTYlcqg^ddqsckvoO8}O=bUrSIp^r^^Zup%YIRh6(ylO%%{sw0BUsvuaJ-}l;#dAb^MQiJL;VQ05oPdjqp|dC8q8YH*B`w=1 zsP|cAtUr|7@m8jq7R?>e7p>S*INvM_5kKDOrxw53=&rWfEb$xOptK2F5M8WxDDA>t zM3dw}rMOJHq-C<=+U<(IZxsi5m8+h99XD|scX1yN@fc6>9MR9K^*5%USacL^ucT&I z>8#Wh-BGxXyb{Ni(TQ}RS>h;jsM2sm&(b*b9BbrwOhg=yPF0$Y=wKE-%iC1`3?zT#C^xaXZ3mk-3qFdVlBL`y$hGQhgU@RsedbdqcnuZyOzHW1r z<{`SgEmB&FxRNM(zO6Pgt}9xvv=N&T7aMI?io^Nn4(AG_N*vC|aeVOr{)Fch58%%k z8GYp9I6e;GD%m$=v3EVX&|C+-B6_w7?ntMgn8eb7BL?Sun;>EX}0fAbE!&v^+DNBrfDhOsRa=Syj*o?W+&8oTp2ERMZ; zCwr4_i2ZmEr9OzNXYAGc8yWlY*nvl#GxppQ%@Q@xIF61Zy4a5wE20ZLA&z2W2OcMY z%g*)24!n3;H_kA`?tHsN#}52}Qt=FK?72^x7Q5{1`M}s^UpHs$xo;}PF8jVx?71H* zJwoiqpD4v1xOk;Oqz~w8R4LYf3%$WB+3OBs?;QK%;w3u^?2}>-9QEed1IMm+jaiDj z-Z=YN+>;(R=SiH#S=gbbAIVRoRq(AAmSZSDsjnnY+X;^pV zu3O)A0QN?j$6=USZ{342b>9xYgs9E>71Um0gYT_9xxx3PVLAp)FWft`ZL-B^kp9Rw zrD57CRK6uW{?;`7wlw_qH2jV<{LVD|t~C7aH2j`4{99@0Bzb>>xIwE!; z<0Qm;wn3F2PRsm}H2g#w{=+o<(KP(A+AzJV_r3?O>973NMAr}pUGKN`{8W1NpH9Qi zq@fcmwx>Ur#{7I5{z4l5VjBLFH2kM&=#0QGr^mLrzmgum_jvYK)A-M(;jg9PuczT} zq~UL-p{?_8rN_3>zmp#SZW^YQJ}&S2{WQiQU-?hqPtu(KCJh}5{%LybN8x;g!$RAA z2Z#ST&0`->_ek6i=fyO&Q5wFKhJH#fr^j{A&D7mn_*prx;b5}vkIOk5Kdw55lxeN9 zZl+H^{i3XO=`(APKCLvDwbKUTuiN+T8~0uNmf!CaYmz=gpIht;izk!Eemu=F4)xei zPBCZkus3#)*(2Pt9b`0$t+UKHavb~(=_M7EQ4O5Lq=-7hVz9%(*b_b1Za@7YI1sFc;9K3j_P z_iD>^{eE04?;BUU{-9gpukZG??$+W9={>)9EBi(o|L1A=W*YwYH2fcF_&?Jy){D2T zx2+K8k_#(-rJZTk|4OdX^G=dZ7jwo5z4%GQMO$%#W`*@VDvNREqQ^I;m!!{oB~DUI zGBQp!#0iDfM#kBKwMy#{=MFZcQd%?qFfI12H2iWJ`c3!*imx_~UgEGN&O$m+Nz1ai zva$Jrw5%UW!?ek1P-h)aa~HS3aoiF|_71AkZ0QHnz-h)b!ltOs-am~^>w4w0>F=o% z{6TvBM`>t(|L@Xcd-wmC9)B(kUrEDwThR~@2W21j9Bb@>;t(y4&0=RW!zwTfb1)BO zd!X3M#9`PLPuPZi*pKY-*J0D*bZT6k5ocA47iq*HTAX7oG#gaTTFN<`#|2zOoPWKn zbOl#Yc4!ypW{bOtyPo%f5BuUQ?lVu1U2^dn^ythHr*_-;)wM-jV%c6vuiZ*VrQ&s$ zA9)l;C3{(X@tAeES5~ZD)c-&>a<-zGcanu^?X6_@#f2;GD{&?|E;fx5(sL|jF6JRl zPZy7ovn@?=#9VA}DsCB72r6+RyLeDtXp^eM+3k&9M4aT_tQ6bCij(RW zlrG{D;uQN8r8v`mO({;e-%yJ4?zfcU^!pv9I17JIDNe>eP>OT%kCYzc37+B^o3iPQFN?4jc9eLJN%iQhpf&gFMfiXCGYr8u+SO({E`4ctUDro?rM(WY|Ow0npamIq4F(DFzr+FPC|MYGE@ zrRQi_t+Q8;7v4rIM3YP#rD&OHrxXn|9h9P-rjt@!Ga0QmU5)I9Xv68D6iqq3lzJob z3i~ScLv-MdMxTL34nnaBD3T3_nHJT?5lYc6G)ieSimgPEfjHi@Vw=$urD&ttpcGA2o0Ou(YKu}dTy0Z|_NyIA(TufADO$7kC`F^zKBZ{eI-nFyT!)mR zrR#{&QN)F-$CXatB%&4Uw9*-zMYM^XSBj>wi%QW#c3CMJ%C0I!d)alRXg0g46s>2s zm7)>tu2Qt6-B*exwTDX4vi4Xh8rYsHJ;QSpuYzsmm_8cca+eTRir2(Oi(K*2*oe7w zg>0ppWkxey52a|WiwMkUwCiJ9wB7YniYB~>$BdS|L8e86-Vmi|*Nf=P;YLO)Uj%7t z?5m76Z4Aa@9L8e;CL$s?Co4@s1aMAMnvRI$oT)SmqOB@(l;&a{=3@aO#&eO3Ztw)4`ZdBTYhz8xFv=tE)x?O1pc48NHBeF#ID(yog ziylxqh(kDxBZ%A+DEA`B9yhi(f~w6>ma4Uh``pNO2ZKGts|61ViZPW48~#{#v@{1Cn`-s zguqTwnu>^oovt(k5fD2|X*MD*cCOMq%*O&OL?p^CR$79{mtCf`9FaD=QfU=dV-40K z0%_MPZ9v4+Zc^He2&>(yv<(qmyF+OwBFJ{P(jG*t?LMXbh>+WZN{0}Uw?~wYA_8!a zE1keeoWg0G!C9Qcd0fCnM1JmNr7MUu-D^tM5!t#om2M%DcJCQ$z>WXfNxZfU1J<$uj z(Fc(T+)t@LA|H65(jW}R5DdjI495sWuJ9DtgfQg6%;>k)=5P8JYl%^xn ziDxR!LSz-sQJRZLE}pNn0Fh(7NNF)5)p)7WGAzdmtV9GKuU1-vh(TVbv>p+PyisWr zA|iQ<(pE%Z@^+;ii1_4PO1lwZ%6paeA)=KJC>_Kh9L5nu`tmWQp=Nn2laSOL`2NC*wPw74$;2|F2F`nQlp5ZxKezV^n zTA?-Cpe@>=JvyKxI-xVVpewqeJ9?ledZ9P^pfCENKL%hR24OIUU?_%RI7VP3MqxC@ zU@XRAJSJcwCSfwBU@E3zI%Z%dW??qwU@pq8c3WhY#aM!+Scc_Tft6T=)mVeIScmo4 zfQ{IM&Desi*oN(J9bRRp(k|@A9_+1WMLV=d2XsUy zbVe6+MK^Ru5A;MY^hO`_ML+b%01QMSM7T1<$e|d9;TVCD7=_UogRvNg@tA;#n1sog zf~lB>>6n3;h+zELN^=k~`SXC^KgSJZT5cfXlpwtm@Cxp&QT@d$0=%&;iJsUZ5Q8unLlAdf z7^XBFBQO$iSBB9_V=xxu5O-{tpfnMa5VvudqBIrL5chVNp)?b-5I207qcj)u5O;xC zptKN+5VwX{qO=st5ci8%p|ldK5I2!nqqG+5upS$*5plbT%}QGkH=o$1v>iJTccj>* zv>S1MioHtv5O=FMpmY#%?~21pM-X?iIHq(QabJs*N~aKaxj3VA7IDvu^GX*Gcfh!$ zbQy6!jH^o55O>G8p>z|sa2t0JH_*7JbRQ28chz{L^cZoEji*Y_5O>^Y>3ZF_5%=F{ zt<(l>(GKm=0Ugl^ao>(EN?p+n-O&SaYmZ(^z0n78zmI-O{SkNn7^pM|aW9Y|N<$HM z1{tn20`3!18KpEDV=xxuFdh>y5tA?(Q!o|NFdZ{66SFWIb1)b4FdqxB5R0%FORyBn zupBF}605KpYp@pUupS$*5u30XTd)<|upK+F6T7e*d$1S#upb9-5QlIWM{pF!a2zLa z5~pw)XK)tha2^+M5tncoS8x^Aa2+>r6Sr_1cW@W?a32rw5RdQ}Pw*7a@Ek2&Ao@01 zp*7l|E!v?yI-nyup)xVVK??*FZN+S4&WdT;V_QiD30McPT(X?;WWMDhF~a$VK_!$Bt~I0#$YVQVLT>aA|_!nreG?j zVLE1DCT3wa=3p-7VLldMAr@gVmS8ECVL4V{C01cI)?h8xVLdirBQ{|(wqPr^VLNtU zCw5^s_FymeVLuMwAP(U$j^HSc;W$pMCT`(2 z?%*!&;XWSVAs*o|p5Q5-;W=8SE9Wb3qZL}C4cej|+M@$Hq7yo!3%a5kx}yhrq8ECj z5Bj1X`eOhFVh{#n2!>)9hGPUqViZPW48~#{#$y5|ViG1}3Z`Njreg+XVism&4(4JW z=3@aCVi6W&36^3RmSY80Vii_n4c1~E)?))UViPuF3$|h#wqpl&Vi$H}5B6do_TvB! z;t&qw2#(?yj^hMQ;uKEf49?;l&f@|u;u0?73a;WBuHy!7;udb>4({R}?&AR-;t?L> z37+B^o};C%NpGVSTB8lxq8-|!13ID;I-?7^q8qxS2YR9xdZQ2eq96KW00v?Z24e_@ zVi<;F1V&;MMq>=dVjRX}0w!V-CSwYwVj8An24-RwW@8TKVjkvW0TyBr7GnvPVi}fW z1y*7eR$~p;Vjb3F12$q4He(C6VjH$&2X)9hGPUqViZPW48~#{ z#$y5|ViG1}3Z`Njreg+XVism&4(4JW=3@aCVi6W&36^3RmSY80Vii_n4c1~E)?))U zViPuF3$|h#wqpl&Vi$H}5B6do_TvB!;t&qw2#(?yj^hMQ;uKEf49?;l&f@|u;u0?7 z3a;WBuHy!7;udb>4({R}?&AR-;t?L>37+B^o};CH|8JueTB8lxq8-|!13ID;I-?7^ zqX&AT7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV#$y5|ViG1}3Z`Njreg+XVism& z4(4JW=3@aCVi6W&36^68R$>)aV-40}12$m`wqXZ$VGs7<01n{@j^PAO;SA2<0xsbS zuHgo5;STQM0UqHAo}s0V;jPdH?a%?8&;{Ml1HI4({V)K7Fa*Oe0;4bn<1hh}Fa^^v z1G6v(^RNJmumsDn0;{kF>#zZvum#(&1G}&X`)~kfKKRwZs>uY=!M?sgTCmG0T_ru7=mFKfsq)6(HMiV7>5a% zh)I}?shEzLn1$JxgSnW8`B;cWSd1lDh80+a)mVeIScmo4fKAwpE!c|f*oocPgT2^? z{WySwIE*7Wieor|Q#gaOIEVANfQz_9~{5B6d|4&pG5 z;3$saI8NXsPU8&D;v6pE60RgZR_!2D(Mj}2(rWZ$Y53!5_#e_R_1I7Itio7VA4LkxYw52yO~W_R(CcfK9>0}_a!)?8|FKB{^@s@g z2(tmoLIH|t0L2)958LrSdi)pr_!m3(*P~Z|wjY17=YDkA&-T?X>!e@omS60MU+j7x z-Q=TVeC&Xcm8r9JwxM<@2O9_sbzj2_+3>)-FZ*u^~hmd9SR9{tCQ9mk_rcytGk ze&EpoJbHddm+$E79lfUY%xn;yDgW>4|M-7SkH=IKaWwH0X`la-X;{dm%}2C#v$Klb zb|L$$fxU1&f(I)jQvgSL6?N+$&C{z$b)||Fx)dUq=96>w+1ebbtfuy_(lh=b4gV+& z)vx52s!ho${al*bC=Fju!zO9?Y8t+thH63e2`+4)>R7iL=TEB4`NOFKSLem2Fu+t! zZ=>>S>5tZ}g#ODk=C{(YZdKIV{Jk{ZoBh}6@gJt4H~z=zae4Jp%-ee_mY++{ZJ35H zrr}Fz*ftmUH5pi(?lm;Sl;)W;{1LCsDaAV9_jD*W( z!DU0>vgvPgEVCHV(S=C)-6+p8dTwru`dHhAp=AH`)e);c>jD<0EzH?nwW*W1WG=!^cy=BN!Z zZ7AZ%Fap%dlGDl}(N}iDcO*vTO!fHhe6bI+l$a%jS&D6dzR#7|SM$Wh2G1Sz_4`v21!+Ha0Aq z7q-*uECz*T6T-65VA)KtY#3NJ1*|Oot1S1cEbuFv^p%bH%4U0IL%p(TUfCG0Y<^cZ zxGS63m5u7kW^`r4xw5HT**LCj4p%mSE1SHPjoiv+ZDm8YvgumcSgmZHRyIg0o1m4A z&dO$HWy7+vDOuTgtZXh;HV`YDgq4lJ%4T0>L$9)FSJ{}WY`#@C*eaW7m5s8>W>{sz ztFoz8*|@4~PE|IbDw|A|jikzEQDsA@vguRV*r{yZR5oZTn=qA)mda*IWy7ShDN@<^ zsBCUjHZUri6qSvL%4S1lL!q*1P}vx$Z2nU=_$izCR2KDAmhlwfPT5qaY@Ac%IAsHz zBDrb7H>b08Wm!#SAx&lJOl7f5WqC|xK}?ar6wyoB%%yDDQZ{8N8?ThjRmuh`l_e>a zMJSbJCuKvEvS~@#n51kzQZ^VVn}{@6oJ=tasVoC28-A2cJ<7%%Wpj?Q0Y_!YM%hTC zvMi&r5Tk5*Q8u)jvxUk+ zg|cZv*%+a0eo!_zD4Q6RjS9+U1ZBg4vZ+AXIG}6}P&NQ4oBWfF{K;nhWJ7+k=|0(5 zpKP8_HpnNN;FFE+$!7Ls!+NqQJ=u7kY%WhWkSCkOla1iXX76M}cd}_a*_fSdzD`-N zPFbQ(HcBU(p_2{I$)@IH<8rb&IoW`mY%)$+Bu-ftPFV;}S^7;j_NFZFrYz{DEa9ds z+NLbirYy{+EXAfQzNRdrGeKqi|UlZ}kYX2oPfVzTKl*;trt9!xd}CYu10jef~yzPv4Zq8Rp) zO?k=2yJT}+vVktyB$sT2OE$YD8`_dhYstp6Wb;|F!7SNCmTVMDHiIP_zLHH{$;Pc@ zb5^neE7@d~Y@|vyOQkGCC7Yg-jZMksrDTIrvI!~KXq0RwN;V87n}U*!Kgs5vWCKsK zNhjHelWew0S*S@_nn_uVNm+hLS#U{NVo6z4Nm)iogp-t|l9a`fl;x0=1(1{_kCa7@ zlx2;Sg^Xm=MY6FXWqBfHK_X=dB4yDbWtkymVIgHHA=!A4vRsg|K#;N|kg^DnZ1zVs z^dp=0k&XGt=6hs=J+g@&WligOSa@ z$Od0z6ECt+7uk%9Y`8@>)gl{bk$cpny#pH_1Mn-_eRi*2Q9E+Pu z#W;(*Mn(dMB+tTrS^#6i;hag{EMzeMhr%GrJjg1 zjNVGcP>lXYMmEMkrNM}ZjG;=!q>Pb9MqtKhrLl9R$MvBH%rRj(;jhRZt zOpUolMzqF!rGM30+BMzF_i zrMrlHkNZl+n2*OsM%u?yrRRvykGKDJ+I|+ZKiV1@5g_fAIwF!lIx7_eLAo1R%mv8? zg7hArTL9!?a>b$Q>h#VIf~* zN=WO!lUC>m3u&uV78VjIAzjT`3=4^rkY1)mSV$kGe#mBqWWz#+c|wGRWK%-Mo23{Q z@-?P}%(Ki03t6C)4GSrzgsd=UgoPASLe`pA3=7$4WMqbvg@x=iXErQkpJ@>mazLpb znIXlnkW-$Q4GTGM+C@ZW$YmwbA(d-N*Kq^4a2t1U7x(c15Ag_3@D$JR9B+TG%`aM` z4cehSI-nCeqYJvCJ9?ledZ7>cq8|oeAO>LwhGG~-U?fIi48~#{CSW2aVG5>V8fIW7 zW?>HIVjdP?Ar@f?mSP!JU?o;z4c1~EHee$*VGFim8+KqPc3}_pVLuMwAP(aQj^Y?j z;3Q7rG|u82&f@|u;R>$e8gAewZs88@;vVkfAs*uip5hr=eqUNY-$pC6Mq9K)dvri2 zbVe6+LwEE*FZ4zq^h19Pz#t695Ddd`jKC<2#u$vlcuc?~OvV&U!*tBREX>9n%)@*v zz#=Th5-h`VtiUR)#u}`{dThWZY{nLB#dhq#PVB}W?8SZ@z(E|w5gf&FoWMz(#u=Q& zd0fCnT*eh##dX}kP29pA+{HaSz(YL3V?4z(JjdIA*VYuR(H8B{9v#sMozWHD&>cO| z3%$`7{m>r+F$jY(6vHqaBQXl2F&5)69uqMMlQ9+3FdZ{73$rm7^DrL^u?UN?6w9z2 zE3pczu?Fj~9viR;o3RDkupK+F3%jug`>-Dea0rKS1jle3CvXar3%79x_i!H%@Cc9b1kdmsEx+ITiPmU?c4&_d=!DMbf^O)J9_WSM=!1Ufj{z8j z!5D&J7>*Gbh0z#;aTt#Yn1sogf~lB}8JLM#n1i{Phxu5DMOcibScc_TiB(vQHCTuB z*nmygj4jxP?bv}`*o{5dhy6H!LpY2hIELdmfm1k*GdPFyxPVKzj4QZ?>$rhixQ#ow zhx>SdM|g}Uc!uX_`2$u{v_>1WLwj^UCv-*^bVGOaKri%0AM`_i48R}^#t;m{aE!nx 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 z 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

              PMx(`&$312!6^IRO5AfLs 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 z -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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/eventmachine.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/eventmachine.h new file mode 100644 index 0000000000..5100e20d7e --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/eventmachine.h @@ -0,0 +1,143 @@ +/***************************************************************************** + +$Id$ + +File: eventmachine.h +Date: 15Apr06 + +Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. +Gmail: blackhedd + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + +#ifndef __EVMA_EventMachine__H_ +#define __EVMA_EventMachine__H_ + +#if __cplusplus +extern "C" { +#endif + + enum { // Event names + EM_TIMER_FIRED = 100, + EM_CONNECTION_READ = 101, + EM_CONNECTION_UNBOUND = 102, + EM_CONNECTION_ACCEPTED = 103, + EM_CONNECTION_COMPLETED = 104, + EM_LOOPBREAK_SIGNAL = 105, + EM_CONNECTION_NOTIFY_READABLE = 106, + EM_CONNECTION_NOTIFY_WRITABLE = 107, + EM_SSL_HANDSHAKE_COMPLETED = 108, + EM_SSL_VERIFY = 109, + EM_PROXY_TARGET_UNBOUND = 110, + EM_PROXY_COMPLETED = 111 + }; + + enum { // SSL/TLS Protocols + EM_PROTO_SSLv2 = 2, + EM_PROTO_SSLv3 = 4, + EM_PROTO_TLSv1 = 8, + EM_PROTO_TLSv1_1 = 16, + EM_PROTO_TLSv1_2 = 32 + }; + + void evma_initialize_library (EMCallback); + bool evma_run_machine_once(); + void evma_run_machine(); + void evma_release_library(); + const uintptr_t evma_install_oneshot_timer (uint64_t milliseconds); + const uintptr_t evma_connect_to_server (const char *bind_addr, int bind_port, const char *server, int port); + const uintptr_t evma_connect_to_unix_server (const char *server); + + const uintptr_t evma_attach_fd (int file_descriptor, int watch_mode); + int evma_detach_fd (const uintptr_t binding); + int evma_get_file_descriptor (const uintptr_t binding); + int evma_is_notify_readable (const uintptr_t binding); + void evma_set_notify_readable (const uintptr_t binding, int mode); + int evma_is_notify_writable (const uintptr_t binding); + void evma_set_notify_writable (const uintptr_t binding, int mode); + + int evma_pause(const uintptr_t binding); + int evma_is_paused(const uintptr_t binding); + int evma_resume(const uintptr_t binding); + + int evma_num_close_scheduled(); + + void evma_stop_tcp_server (const uintptr_t binding); + const uintptr_t evma_create_tcp_server (const char *address, int port); + const uintptr_t evma_create_unix_domain_server (const char *filename); + const uintptr_t evma_attach_sd (int sd); + const uintptr_t evma_open_datagram_socket (const char *server, int port); + const uintptr_t evma_open_keyboard(); + void evma_set_tls_parms (const uintptr_t binding, const char *privatekey_filename, const char *certchain_filenane, int verify_peer, int fail_if_no_peer_cert, const char *sni_hostname, const char *cipherlist, const char *ecdh_curve, const char *dhparam, int protocols); + void evma_start_tls (const uintptr_t binding); + + #ifdef WITH_SSL + X509 *evma_get_peer_cert (const uintptr_t binding); + int evma_get_cipher_bits (const uintptr_t binding); + const char *evma_get_cipher_name (const uintptr_t binding); + const char *evma_get_cipher_protocol (const uintptr_t binding); + const char *evma_get_sni_hostname (const uintptr_t binding); + void evma_accept_ssl_peer (const uintptr_t binding); + #endif + + int evma_get_peername (const uintptr_t binding, struct sockaddr*, socklen_t*); + int evma_get_sockname (const uintptr_t binding, struct sockaddr*, socklen_t*); + int evma_get_subprocess_pid (const uintptr_t binding, pid_t*); + int evma_get_subprocess_status (const uintptr_t binding, int*); + int evma_get_connection_count(); + int evma_send_data_to_connection (const uintptr_t binding, const char *data, int data_length); + int evma_send_datagram (const uintptr_t binding, const char *data, int data_length, const char *address, int port); + float evma_get_comm_inactivity_timeout (const uintptr_t binding); + int evma_set_comm_inactivity_timeout (const uintptr_t binding, float value); + float evma_get_pending_connect_timeout (const uintptr_t binding); + int evma_set_pending_connect_timeout (const uintptr_t binding, float value); + int evma_get_outbound_data_size (const uintptr_t binding); + uint64_t evma_get_last_activity_time (const uintptr_t binding); + int evma_send_file_data_to_connection (const uintptr_t binding, const char *filename); + + void evma_close_connection (const uintptr_t binding, int after_writing); + int evma_report_connection_error_status (const uintptr_t binding); + void evma_signal_loopbreak(); + void evma_set_timer_quantum (int); + int evma_get_max_timer_count(); + void evma_set_max_timer_count (int); + int evma_get_simultaneous_accept_count(); + void evma_set_simultaneous_accept_count (int); + void evma_setuid_string (const char *username); + void evma_stop_machine(); + bool evma_stopping(); + float evma_get_heartbeat_interval(); + int evma_set_heartbeat_interval(float); + + const uintptr_t evma_popen (char * const*cmd_strings); + + const uintptr_t evma_watch_filename (const char *fname); + void evma_unwatch_filename (const uintptr_t binding); + + const uintptr_t evma_watch_pid (int); + void evma_unwatch_pid (const uintptr_t binding); + + void evma_start_proxy(const uintptr_t from, const uintptr_t to, const unsigned long bufsize, const unsigned long length); + void evma_stop_proxy(const uintptr_t from); + unsigned long evma_proxied_bytes(const uintptr_t from); + + int evma_set_rlimit_nofile (int n_files); + + void evma_set_epoll (int use); + void evma_set_kqueue (int use); + + uint64_t evma_get_current_loop_time(); +#if __cplusplus +} +#endif + + +#endif // __EventMachine__H_ + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/extconf.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/extconf.rb new file mode 100644 index 0000000000..676b4c4262 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/extconf.rb @@ -0,0 +1,270 @@ +require 'fileutils' +require 'mkmf' + +# Eager check devs tools +have_devel? if respond_to?(:have_devel?) + +def check_libs libs = [], fatal = false + libs.all? { |lib| have_library(lib) || (abort("could not find library: #{lib}") if fatal) } +end + +def check_heads heads = [], fatal = false + heads.all? { |head| have_header(head) || (abort("could not find header: #{head}") if fatal)} +end + +def add_define(name) + $defs.push("-D#{name}") +end + +## +# OpenSSL: + +# override append_library, so it actually appends (instead of prepending) +# this fixes issues with linking ssl, since libcrypto depends on symbols in libssl +def append_library(libs, lib) + libs + " " + format(LIBARG, lib) +end + +SSL_HEADS = %w(openssl/ssl.h openssl/err.h) +SSL_LIBS = %w(crypto ssl) +# OpenSSL 1.1.0 and above for Windows use the Unix library names +# OpenSSL 0.9.8 and 1.0.x for Windows use the *eay32 library names +SSL_LIBS_WIN = RUBY_PLATFORM =~ /mswin|mingw|bccwin/ ? %w(ssleay32 libeay32) : [] + +def dir_config_wrapper(pretty_name, name, idefault=nil, ldefault=nil) + inc, lib = dir_config(name, idefault, ldefault) + if inc && lib + # TODO: Remove when 2.0.0 is the minimum supported version + # Ruby versions not incorporating the mkmf fix at + # https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/39717 + # do not properly search for lib directories, and must be corrected + unless lib && lib[-3, 3] == 'lib' + @libdir_basename = 'lib' + inc, lib = dir_config(name, idefault, ldefault) + end + unless idefault && ldefault + abort "-----\nCannot find #{pretty_name} include path #{inc}\n-----" unless inc && inc.split(File::PATH_SEPARATOR).any? { |dir| File.directory?(dir) } + abort "-----\nCannot find #{pretty_name} library path #{lib}\n-----" unless lib && lib.split(File::PATH_SEPARATOR).any? { |dir| File.directory?(dir) } + warn "-----\nUsing #{pretty_name} in path #{File.dirname inc}\n-----" + end + true + end +end + +def dir_config_search(pretty_name, name, paths, &b) + paths.each do |p| + if dir_config_wrapper('OpenSSL', 'ssl', p + '/include', p + '/lib') && yield + warn "-----\nFound #{pretty_name} in path #{p}\n-----" + return true + end + end + false +end + +def pkg_config_wrapper(pretty_name, name) + cflags, ldflags, libs = pkg_config(name) + unless [cflags, ldflags, libs].any?(&:nil?) || [cflags, ldflags, libs].any?(&:empty?) + warn "-----\nUsing #{pretty_name} from pkg-config #{cflags} && #{ldflags} && #{libs}\n-----" + true + end +end + +if ENV['CROSS_COMPILING'] + openssl_version = ENV.fetch("OPENSSL_VERSION", "1.0.2e") + openssl_dir = File.expand_path("~/.rake-compiler/builds/openssl-#{openssl_version}/") + if File.exist?(openssl_dir) + FileUtils.mkdir_p Dir.pwd+"/openssl/" + FileUtils.cp Dir[openssl_dir+"/include/openssl/*.h"], Dir.pwd+"/openssl/", :verbose => true + FileUtils.cp Dir[openssl_dir+"/lib*.a"], Dir.pwd, :verbose => true + $INCFLAGS << " -I#{Dir.pwd}" # for the openssl headers + add_define "WITH_SSL" + else + STDERR.puts + STDERR.puts "**************************************************************************************" + STDERR.puts "**** Cross-compiled OpenSSL not found" + STDERR.puts "**** Run: hg clone http://bitbucket.org/ged/ruby-pg && cd ruby-pg && rake openssl_libs" + STDERR.puts "**************************************************************************************" + STDERR.puts + end +elsif dir_config_wrapper('OpenSSL', 'ssl') + # If the user has provided a --with-ssl-dir argument, we must respect it or fail. + add_define 'WITH_SSL' if (check_libs(SSL_LIBS) || check_libs(SSL_LIBS_WIN)) && check_heads(SSL_HEADS) +elsif pkg_config_wrapper('OpenSSL', 'openssl') + # If we can detect OpenSSL by pkg-config, use it as the next-best option + add_define 'WITH_SSL' if (check_libs(SSL_LIBS) || check_libs(SSL_LIBS_WIN)) && check_heads(SSL_HEADS) +elsif (check_libs(SSL_LIBS) || check_libs(SSL_LIBS_WIN)) && check_heads(SSL_HEADS) + # If we don't even need any options to find a usable OpenSSL, go with it + add_define 'WITH_SSL' +elsif dir_config_search('OpenSSL', 'ssl', ['/usr/local', '/opt/local', '/usr/local/opt/openssl']) do + (check_libs(SSL_LIBS) || check_libs(SSL_LIBS_WIN)) && check_heads(SSL_HEADS) + end + # Finally, look for OpenSSL in alternate locations including MacPorts and HomeBrew + add_define 'WITH_SSL' +end + +add_define 'BUILD_FOR_RUBY' + +# Ruby features: + +have_var('rb_trap_immediate', ['ruby.h', 'rubysig.h']) +have_func('rb_thread_blocking_region') +have_func('rb_thread_call_without_gvl', 'ruby/thread.h') +have_func('rb_thread_fd_select') +have_type('rb_fdset_t', 'ruby/intern.h') +have_func('rb_wait_for_single_fd') +have_func('rb_enable_interrupt') +have_func('rb_time_new') + +# System features: + +add_define('HAVE_INOTIFY') if inotify = have_func('inotify_init', 'sys/inotify.h') +add_define('HAVE_OLD_INOTIFY') if !inotify && have_macro('__NR_inotify_init', 'sys/syscall.h') +have_func('writev', 'sys/uio.h') +have_func('pipe2', 'unistd.h') +have_func('accept4', 'sys/socket.h') +have_const('SOCK_CLOEXEC', 'sys/socket.h') + +# Minor platform details between *nix and Windows: + +if RUBY_PLATFORM =~ /(mswin|mingw|bccwin)/ + GNU_CHAIN = ENV['CROSS_COMPILING'] || $1 == 'mingw' + OS_WIN32 = true + add_define "OS_WIN32" +else + GNU_CHAIN = true + OS_UNIX = true + add_define 'OS_UNIX' + + add_define "HAVE_KQUEUE" if have_header("sys/event.h") && have_header("sys/queue.h") +end + +# Adjust number of file descriptors (FD) on Windows + +if RbConfig::CONFIG["host_os"] =~ /mingw/ + found = RbConfig::CONFIG.values_at("CFLAGS", "CPPFLAGS"). + any? { |v| v.include?("FD_SETSIZE") } + + add_define "FD_SETSIZE=32767" unless found +end + +# Main platform invariances: + +case RUBY_PLATFORM +when /mswin32/, /mingw32/, /bccwin32/ + check_heads(%w[windows.h winsock.h], true) + check_libs(%w[kernel32 rpcrt4 gdi32], true) + + if GNU_CHAIN + CONFIG['LDSHAREDXX'] = "$(CXX) -shared -static-libgcc -static-libstdc++" + else + $defs.push "-EHs" + $defs.push "-GR" + end + + # Newer versions of Ruby already define _WIN32_WINNT, which is needed + # to get access to newer POSIX networking functions (e.g. getaddrinfo) + add_define '_WIN32_WINNT=0x0501' unless have_func('getaddrinfo') + +when /solaris/ + add_define 'OS_SOLARIS8' + check_libs(%w[nsl socket], true) + + # If Ruby was compiled for 32-bits, then select() can only handle 1024 fds + # There is an alternate function, select_large_fdset, that supports more. + have_func('select_large_fdset', 'sys/select.h') + + if CONFIG['CC'] == 'cc' && ( + `cc -flags 2>&1` =~ /Sun/ || # detect SUNWspro compiler + `cc -V 2>&1` =~ /Sun/ # detect Solaris Studio compiler + ) + # SUN CHAIN + add_define 'CC_SUNWspro' + $preload = ["\nCXX = CC"] # hack a CXX= line into the makefile + $CFLAGS = CONFIG['CFLAGS'] = "-KPIC" + CONFIG['CCDLFLAGS'] = "-KPIC" + CONFIG['LDSHARED'] = "$(CXX) -G -KPIC -lCstd" + CONFIG['LDSHAREDXX'] = "$(CXX) -G -KPIC -lCstd" + else + # GNU CHAIN + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + end + +when /openbsd/ + # OpenBSD branch contributed by Guillaume Sellier. + + # on Unix we need a g++ link, not gcc. On OpenBSD, linking against libstdc++ have to be explicitly done for shared libs + CONFIG['LDSHARED'] = "$(CXX) -shared -lstdc++ -fPIC" + CONFIG['LDSHAREDXX'] = "$(CXX) -shared -lstdc++ -fPIC" + +when /darwin/ + add_define 'OS_DARWIN' + + # on Unix we need a g++ link, not gcc. + # Ff line contributed by Daniel Harple. + CONFIG['LDSHARED'] = "$(CXX) " + CONFIG['LDSHARED'].split[1..-1].join(' ') + +when /linux/ + add_define 'HAVE_EPOLL' if have_func('epoll_create', 'sys/epoll.h') + + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + +when /aix/ + CONFIG['LDSHARED'] = "$(CXX) -Wl,-bstatic -Wl,-bdynamic -Wl,-G -Wl,-brtl" + +when /cygwin/ + # For rubies built with Cygwin, CXX may be set to CC, which is just + # a wrapper for gcc. + # This will compile, but it will not link to the C++ std library. + # Explicitly set CXX to use g++. + CONFIG['CXX'] = "g++" + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + +else + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" +end + +# Platform-specific time functions +if have_func('clock_gettime') + # clock_gettime is POSIX, but the monotonic clocks are not + have_const('CLOCK_MONOTONIC_RAW', 'time.h') # Linux + have_const('CLOCK_MONOTONIC', 'time.h') # Linux, Solaris, BSDs +else + have_func('gethrtime') # Older Solaris and HP-UX +end + +# Hack so that try_link will test with a C++ compiler instead of a C compiler +TRY_LINK.sub!('$(CC)', '$(CXX)') + +# This is our wishlist. We use whichever flags work on the host. +# In the future, add -Werror to make sure all warnings are resolved. +# deprecated-declarations are used in OS X OpenSSL +# ignored-qualifiers are used by the Bindings (would-be void *) +# unused-result because GCC 4.6 no longer silences (void) ignore_this(function) +# address because on Windows, rb_fd_select checks if &fds is non-NULL, which it cannot be +%w( + -Wall + -Wextra + -Wno-deprecated-declarations + -Wno-ignored-qualifiers + -Wno-unused-result + -Wno-address +).select do |flag| + try_link('int main() {return 0;}', flag) +end.each do |flag| + CONFIG['CXXFLAGS'] << ' ' << flag +end +puts "CXXFLAGS=#{CONFIG['CXXFLAGS']}" + +# Solaris C++ compiler doesn't have make_pair() +add_define 'HAVE_MAKE_PAIR' if try_link(< + using namespace std; + int main(){ pair tuple = make_pair(1,2); } +SRC +TRY_LINK.sub!('$(CXX)', '$(CC)') + +create_makefile "rubyeventmachine" diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/.sitearchdir.time b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/.sitearchdir.time new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/Makefile b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/Makefile new file mode 100644 index 0000000000..ca612ae652 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/Makefile @@ -0,0 +1,263 @@ + +SHELL = /bin/sh + +# V=0 quiet, V=1 verbose. other values don't work. +V = 0 +Q1 = $(V:1=) +Q = $(Q1:0=@) +ECHO1 = $(V:1=@ :) +ECHO = $(ECHO1:0=@ echo) +NULLCMD = : + +#### Start of system configuration section. #### + +srcdir = . +topdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0 +hdrdir = $(topdir) +arch_hdrdir = /home/travis/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-linux +PATH_SEPARATOR = : +VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby +prefix = $(DESTDIR)/home/travis/.rvm/rubies/ruby-2.5.3 +rubysitearchprefix = $(rubylibprefix)/$(sitearch) +rubyarchprefix = $(rubylibprefix)/$(arch) +rubylibprefix = $(libdir)/$(RUBY_BASE_NAME) +exec_prefix = $(prefix) +vendorarchhdrdir = $(vendorhdrdir)/$(sitearch) +sitearchhdrdir = $(sitehdrdir)/$(sitearch) +rubyarchhdrdir = $(rubyhdrdir)/$(arch) +vendorhdrdir = $(rubyhdrdir)/vendor_ruby +sitehdrdir = $(rubyhdrdir)/site_ruby +rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME) +vendorarchdir = $(vendorlibdir)/$(sitearch) +vendorlibdir = $(vendordir)/$(ruby_version) +vendordir = $(rubylibprefix)/vendor_ruby +sitearchdir = $(DESTDIR)./.gem.20200317-4716-1j9cgri +sitelibdir = $(DESTDIR)./.gem.20200317-4716-1j9cgri +sitedir = $(rubylibprefix)/site_ruby +rubyarchdir = $(rubylibdir)/$(arch) +rubylibdir = $(rubylibprefix)/$(ruby_version) +sitearchincludedir = $(includedir)/$(sitearch) +archincludedir = $(includedir)/$(arch) +sitearchlibdir = $(libdir)/$(sitearch) +archlibdir = $(libdir)/$(arch) +ridir = $(datarootdir)/$(RI_BASE_NAME) +mandir = $(datarootdir)/man +localedir = $(datarootdir)/locale +libdir = $(exec_prefix)/lib +psdir = $(docdir) +pdfdir = $(docdir) +dvidir = $(docdir) +htmldir = $(docdir) +infodir = $(datarootdir)/info +docdir = $(datarootdir)/doc/$(PACKAGE) +oldincludedir = $(DESTDIR)/usr/include +includedir = $(prefix)/include +localstatedir = $(prefix)/var +sharedstatedir = $(prefix)/com +sysconfdir = $(DESTDIR)/etc +datadir = $(datarootdir) +datarootdir = $(prefix)/share +libexecdir = $(exec_prefix)/libexec +sbindir = $(exec_prefix)/sbin +bindir = $(exec_prefix)/bin +archdir = $(rubyarchdir) + + +CC = gcc +CXX = g++ +LIBRUBY = $(LIBRUBY_SO) +LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a +LIBRUBYARG_SHARED = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME) +LIBRUBYARG_STATIC = -Wl,-rpath,'$${ORIGIN}/../lib' -Wl,-rpath,'$${ORIGIN}/../lib' -l$(RUBY_SO_NAME)-static +empty = +OUTFLAG = -o $(empty) +COUTFLAG = -o $(empty) +CSRCFLAG = $(empty) + +RUBY_EXTCONF_H = +cflags = $(optflags) $(debugflags) $(warnflags) +cxxflags = $(optflags) $(debugflags) $(warnflags) +optflags = -O3 +debugflags = -ggdb3 +warnflags = -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized +CCDLFLAGS = -fPIC +CFLAGS = $(CCDLFLAGS) $(cflags) -fPIC $(ARCH_FLAG) +INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir) +DEFS = +CPPFLAGS = -DBUILD_FOR_RUBY -DOS_UNIX $(DEFS) $(cppflags) +CXXFLAGS = $(CCDLFLAGS) $(cxxflags) $(ARCH_FLAG) +ldflags = -L. -fstack-protector -rdynamic -Wl,-export-dynamic +dldflags = -Wl,--compress-debug-sections=zlib +ARCH_FLAG = +DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG) +LDSHARED = $(CXX) -shared +LDSHAREDXX = $(CXX) -shared +AR = ar +EXEEXT = + +RUBY_INSTALL_NAME = $(RUBY_BASE_NAME) +RUBY_SO_NAME = ruby +RUBYW_INSTALL_NAME = +RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version) +RUBYW_BASE_NAME = rubyw +RUBY_BASE_NAME = ruby + +arch = x86_64-linux +sitearch = $(arch) +ruby_version = 2.5.0 +ruby = $(bindir)/$(RUBY_BASE_NAME) +RUBY = $(ruby) +ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h + +RM = rm -f +RM_RF = $(RUBY) -run -e rm -- -rf +RMDIRS = rmdir --ignore-fail-on-non-empty -p +MAKEDIRS = /bin/mkdir -p +INSTALL = /usr/bin/install +INSTALL_PROG = $(INSTALL) -m 0755 +INSTALL_DATA = $(INSTALL) -m 644 +COPY = cp +TOUCH = exit > + +#### End of system configuration section. #### + +preload = +libpath = . $(libdir) +LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir) +DEFFILE = + +CLEANFILES = mkmf.log +DISTCLEANFILES = +DISTCLEANDIRS = + +extout = +extout_prefix = +target_prefix = +LOCAL_LIBS = +LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lcrypt -lm -lc +ORIG_SRCS = mapper.cpp rubymain.cpp +SRCS = $(ORIG_SRCS) +OBJS = mapper.o rubymain.o +HDRS = $(srcdir)/mapper.h +LOCAL_HDRS = +TARGET = fastfilereaderext +TARGET_NAME = fastfilereaderext +TARGET_ENTRY = Init_$(TARGET_NAME) +DLLIB = $(TARGET).so +EXTSTATIC = +STATIC_LIB = + +TIMESTAMP_DIR = . +BINDIR = $(bindir) +RUBYCOMMONDIR = $(sitedir)$(target_prefix) +RUBYLIBDIR = $(sitelibdir)$(target_prefix) +RUBYARCHDIR = $(sitearchdir)$(target_prefix) +HDRDIR = $(rubyhdrdir)/ruby$(target_prefix) +ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix) +TARGET_SO_DIR = +TARGET_SO = $(TARGET_SO_DIR)$(DLLIB) +CLEANLIBS = $(TARGET_SO) +CLEANOBJS = *.o *.bak + +all: $(DLLIB) +static: $(STATIC_LIB) +.PHONY: all install static install-so install-rb +.PHONY: clean clean-so clean-static clean-rb + +clean-static:: +clean-rb-default:: +clean-rb:: +clean-so:: +clean: clean-so clean-static clean-rb-default clean-rb + -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time + +distclean-rb-default:: +distclean-rb:: +distclean-so:: +distclean-static:: +distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb + -$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log + -$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES) + -$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true + +realclean: distclean +install: install-so install-rb + +install-so: $(DLLIB) $(TIMESTAMP_DIR)/.sitearchdir.time + $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR) +clean-static:: + -$(Q)$(RM) $(STATIC_LIB) +install-rb: pre-install-rb do-install-rb install-rb-default +install-rb-default: pre-install-rb-default do-install-rb-default +pre-install-rb: Makefile +pre-install-rb-default: Makefile +do-install-rb: +do-install-rb-default: +pre-install-rb-default: + @$(NULLCMD) +$(TIMESTAMP_DIR)/.sitearchdir.time: + $(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR) + $(Q) $(TOUCH) $@ + +site-install: site-install-so site-install-rb +site-install-so: install-so +site-install-rb: install-rb + +.SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S + +.cc.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cc.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.mm.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.mm.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cxx.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cxx.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.cpp.o: + $(ECHO) compiling $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.cpp.S: + $(ECHO) translating $(<) + $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.c.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.c.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +.m.o: + $(ECHO) compiling $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$< + +.m.S: + $(ECHO) translating $(<) + $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$< + +$(TARGET_SO): $(OBJS) Makefile + $(ECHO) linking shared-object $(DLLIB) + -$(Q)$(RM) $(@) + $(Q) $(LDSHAREDXX) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS) + + + +$(OBJS): $(HDRS) $(ruby_headers) diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/extconf.rb b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/extconf.rb new file mode 100644 index 0000000000..e4d64e4a29 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/extconf.rb @@ -0,0 +1,109 @@ +require 'mkmf' + +def check_libs libs = [], fatal = false + libs.all? { |lib| have_library(lib) || (abort("could not find library: #{lib}") if fatal) } +end + +def check_heads heads = [], fatal = false + heads.all? { |head| have_header(head) || (abort("could not find header: #{head}") if fatal)} +end + +def add_define(name) + $defs.push("-D#{name}") +end + +# Eager check devs tools +have_devel? if respond_to?(:have_devel?) + +add_define 'BUILD_FOR_RUBY' + +# Minor platform details between *nix and Windows: + +if RUBY_PLATFORM =~ /(mswin|mingw|bccwin)/ + GNU_CHAIN = ENV['CROSS_COMPILING'] || $1 == 'mingw' + OS_WIN32 = true + add_define "OS_WIN32" +else + GNU_CHAIN = true + OS_UNIX = true + add_define 'OS_UNIX' +end + +# Adjust number of file descriptors (FD) on Windows + +if RbConfig::CONFIG["host_os"] =~ /mingw/ + found = RbConfig::CONFIG.values_at("CFLAGS", "CPPFLAGS"). + any? { |v| v.include?("FD_SETSIZE") } + + add_define "FD_SETSIZE=32767" unless found +end + +# Main platform invariances: + +case RUBY_PLATFORM +when /mswin32/, /mingw32/, /bccwin32/ + check_heads(%w[windows.h winsock.h], true) + check_libs(%w[kernel32 rpcrt4 gdi32], true) + + if GNU_CHAIN + CONFIG['LDSHAREDXX'] = "$(CXX) -shared -static-libgcc -static-libstdc++" + else + $defs.push "-EHs" + $defs.push "-GR" + end + +when /solaris/ + add_define 'OS_SOLARIS8' + check_libs(%w[nsl socket], true) + + if CONFIG['CC'] == 'cc' && ( + `cc -flags 2>&1` =~ /Sun/ || # detect SUNWspro compiler + `cc -V 2>&1` =~ /Sun/ # detect Solaris Studio compiler + ) + # SUN CHAIN + add_define 'CC_SUNWspro' + $preload = ["\nCXX = CC"] # hack a CXX= line into the makefile + $CFLAGS = CONFIG['CFLAGS'] = "-KPIC" + CONFIG['CCDLFLAGS'] = "-KPIC" + CONFIG['LDSHARED'] = "$(CXX) -G -KPIC -lCstd" + CONFIG['LDSHAREDXX'] = "$(CXX) -G -KPIC -lCstd" + else + # GNU CHAIN + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + end + +when /openbsd/ + # OpenBSD branch contributed by Guillaume Sellier. + + # on Unix we need a g++ link, not gcc. On OpenBSD, linking against libstdc++ have to be explicitly done for shared libs + CONFIG['LDSHARED'] = "$(CXX) -shared -lstdc++ -fPIC" + CONFIG['LDSHAREDXX'] = "$(CXX) -shared -lstdc++ -fPIC" + +when /darwin/ + # on Unix we need a g++ link, not gcc. + # Ff line contributed by Daniel Harple. + CONFIG['LDSHARED'] = "$(CXX) " + CONFIG['LDSHARED'].split[1..-1].join(' ') + +when /linux/ + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + +when /aix/ + CONFIG['LDSHARED'] = "$(CXX) -Wl,-bstatic -Wl,-bdynamic -Wl,-G -Wl,-brtl" + +when /cygwin/ + # For rubies built with Cygwin, CXX may be set to CC, which is just + # a wrapper for gcc. + # This will compile, but it will not link to the C++ std library. + # Explicitly set CXX to use g++. + CONFIG['CXX'] = "g++" + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" + +else + # on Unix we need a g++ link, not gcc. + CONFIG['LDSHARED'] = "$(CXX) -shared" +end + +create_makefile "fastfilereaderext" diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/fastfilereaderext.so b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/fastfilereaderext.so new file mode 100755 index 0000000000000000000000000000000000000000..ee0d568796932902d9b6c996016fd48796cc788c GIT binary patch literal 108872 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.cpp b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.cpp new file mode 100644 index 0000000000..f226f2d5e3 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.cpp @@ -0,0 +1,214 @@ +/***************************************************************************** + +$Id: mapper.cpp 4527 2007-07-04 10:21:34Z francis $ + +File: mapper.cpp +Date: 02Jul07 + +Copyright (C) 2007 by Francis Cianfrocca. All Rights Reserved. +Gmail: garbagecat10 + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +////////////////////////////////////////////////////////////////////// +// UNIX implementation +////////////////////////////////////////////////////////////////////// + + +#ifdef OS_UNIX + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "mapper.h" + +/****************** +Mapper_t::Mapper_t +******************/ + +Mapper_t::Mapper_t (const std::string &filename) +{ + /* We ASSUME we can open the file. + * (More precisely, we assume someone else checked before we got here.) + */ + + Fd = open (filename.c_str(), O_RDONLY); + if (Fd < 0) + throw std::runtime_error (strerror (errno)); + + struct stat st; + if (fstat (Fd, &st)) + throw std::runtime_error (strerror (errno)); + FileSize = st.st_size; + + #ifdef OS_WIN32 + MapPoint = (char*) mmap (0, FileSize, PROT_READ, MAP_SHARED, Fd, 0); + #else + MapPoint = (const char*) mmap (0, FileSize, PROT_READ, MAP_SHARED, Fd, 0); + #endif + if (MapPoint == MAP_FAILED) + throw std::runtime_error (strerror (errno)); +} + + +/******************* +Mapper_t::~Mapper_t +*******************/ + +Mapper_t::~Mapper_t() +{ + Close(); +} + + +/*************** +Mapper_t::Close +***************/ + +void Mapper_t::Close() +{ + // Can be called multiple times. + // Calls to GetChunk are invalid after a call to Close. + if (MapPoint) { + #ifdef CC_SUNWspro + // TODO: The void * cast works fine on Solaris 11, but + // I don't know at what point that changed from older Solaris. + munmap ((char*)MapPoint, FileSize); + #else + munmap ((void*)MapPoint, FileSize); + #endif + MapPoint = NULL; + } + if (Fd >= 0) { + close (Fd); + Fd = -1; + } +} + +/****************** +Mapper_t::GetChunk +******************/ + +const char *Mapper_t::GetChunk (unsigned start) +{ + return MapPoint + start; +} + + + +#endif // OS_UNIX + + +////////////////////////////////////////////////////////////////////// +// WINDOWS implementation +////////////////////////////////////////////////////////////////////// + +#ifdef OS_WIN32 + +#include + +#include +#include +#include + +#include "mapper.h" + +/****************** +Mapper_t::Mapper_t +******************/ + +Mapper_t::Mapper_t (const std::string &filename) +{ + /* We ASSUME we can open the file. + * (More precisely, we assume someone else checked before we got here.) + */ + + hFile = INVALID_HANDLE_VALUE; + hMapping = NULL; + MapPoint = NULL; + FileSize = 0; + + hFile = CreateFile (filename.c_str(), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + if (hFile == INVALID_HANDLE_VALUE) + throw std::runtime_error ("File not found"); + + BY_HANDLE_FILE_INFORMATION i; + if (GetFileInformationByHandle (hFile, &i)) + FileSize = i.nFileSizeLow; + + hMapping = CreateFileMapping (hFile, NULL, PAGE_READWRITE, 0, 0, NULL); + if (!hMapping) + throw std::runtime_error ("File not mapped"); + + #ifdef OS_WIN32 + MapPoint = (char*) MapViewOfFile (hMapping, FILE_MAP_WRITE, 0, 0, 0); + #else + MapPoint = (const char*) MapViewOfFile (hMapping, FILE_MAP_WRITE, 0, 0, 0); + #endif + if (!MapPoint) + throw std::runtime_error ("Mappoint not read"); +} + + +/******************* +Mapper_t::~Mapper_t +*******************/ + +Mapper_t::~Mapper_t() +{ + Close(); +} + +/*************** +Mapper_t::Close +***************/ + +void Mapper_t::Close() +{ + // Can be called multiple times. + // Calls to GetChunk are invalid after a call to Close. + if (MapPoint) { + UnmapViewOfFile (MapPoint); + MapPoint = NULL; + } + if (hMapping != NULL) { + CloseHandle (hMapping); + hMapping = NULL; + } + if (hFile != INVALID_HANDLE_VALUE) { + CloseHandle (hFile); + hFile = INVALID_HANDLE_VALUE; + } +} + + +/****************** +Mapper_t::GetChunk +******************/ + +const char *Mapper_t::GetChunk (unsigned start) +{ + return MapPoint + start; +} + + + +#endif // OS_WINDOWS diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.h b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.h new file mode 100644 index 0000000000..3db0eeade4 --- /dev/null +++ b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.h @@ -0,0 +1,59 @@ +/***************************************************************************** + +$Id: mapper.h 4529 2007-07-04 11:32:22Z francis $ + +File: mapper.h +Date: 02Jul07 + +Copyright (C) 2007 by Francis Cianfrocca. All Rights Reserved. +Gmail: garbagecat10 + +This program is free software; you can redistribute it and/or modify +it under the terms of either: 1) the GNU General Public License +as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version; or 2) Ruby's License. + +See the file COPYING for complete licensing information. + +*****************************************************************************/ + + +#ifndef __Mapper__H_ +#define __Mapper__H_ + + +/************** +class Mapper_t +**************/ + +class Mapper_t +{ + public: + Mapper_t (const std::string&); + virtual ~Mapper_t(); + + const char *GetChunk (unsigned); + void Close(); + size_t GetFileSize() {return FileSize;} + + private: + size_t FileSize; + + #ifdef OS_UNIX + private: + int Fd; + const char *MapPoint; + #endif // OS_UNIX + + #ifdef OS_WIN32 + private: + HANDLE hFile; + HANDLE hMapping; + char *MapPoint; + #endif // OS_WIN32 + +}; + + +#endif // __Mapper__H_ + diff --git a/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.o b/vendor/bundle/ruby/2.5.0/gems/eventmachine-1.2.7/ext/fastfilereader/mapper.o new file mode 100644 index 0000000000000000000000000000000000000000..17e91044ddc8845aea43f656bc6d04ee645c6db6 GIT binary patch literal 257088 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

              +
              Homepage
              github.com/sporkmonger/addressable
              +
              Author
              Bob Aman
              +
              Copyright
              Copyright © Bob Aman
              +
              License
              Apache 2.0
              +

              sbkcp*iqe~=D1g! zw<&k%R^9Vd>E#|;>PDm8jAYF{v~hNuS-+D_`>t--f-%J0_U-Gv+N9{+UvhtgyZ5#6 z{RHP;Eo8{KD)>&?9N{^XbEO2wD6F!p|2Y>|q~p5lHNnA?du_&NELJI1!uAC{rt(j) z-YOB=T(0pqa9#pRVY1Nv+FjKS$}CvFWC8-qVUNx>3i)AEQM7Eb*L0R$xvwQ@$Y=(0zULGho(F zts#cV^^eScNY@JKN!F5>szc3?e<_jj+tqK+3GVuAPNvg8#0R3PuH0VI;o4e|F86up z5Y@8k0})L&RXv?Nwy#n?ktrBAINc38twtkL#iCBtUOaCicnn8yq(0QVM#2(Uz0~cG*(tJDf|>VL-><)m3K6&$e!rel$vi8KJyHhZ?tH1rEc@^o{F{U4lMjc2 zLZ(M7(Yxrm^{@RUbBmhV;j7B-_6$oHIuL%-C7ySL#?S`S8d(Z?m11onn$bN%=8V_{ z!=d;53Uum4yTbec{Mn>N!+KDE@S6mUUBQJ8-mupalJ&Vp+3vh9S=&qDBeJQIzusTf z%3@3@;$G2IMC4GC&D^-9wtZ|Nhs<%1gC{h0K6aNZMP~d-%KW8Zm^CoBrb5D_*Zz_} z7UP}e*@-_{2C!1PkS4v^rJzim2f3%E@a%h=1f{;xOvbx{=2JCm=RZ|CnQ#xD1p*!o zhSdtfD#wqW+`m5UHBX#>JtUJ(-6F`3@|gR`;AU9=&h%^d*=R-6m#Lj!U322bu~rm0 zgZkbHHo`e-tOk#tI;pwS>9(lKhzfjBy1Mu>Fk28mu+)nY;VLeH7l*mW>CsO3m6$MD zrtGVnC8TVG93>G}Z%LL$II~}IN^tR=b~DK?EdLTCA`bj4P!G4bIymmSydCFCTItOV zPdL9H86FeG)1YfQW03r^0qtrB!T17tll};H4H!>J%vrF^rHFSamg#ewJnO)k{kN;# zL>B|ziyAwMG_${nX(WU?cIgJY`hFC}1i6XzKggQI?C^J~q_L-F*KjnJn4dqOeVi73 zz3`3KFY71vnH9H=S3dq`U|o@+XwbJE7SUI~hsi8s0?V0MFawP|h%eGd3LyHupWUwC z{4@=Y{Jz}yYSA&Ra*AN{tb~M}J3+2QY+xCzJ*ekg3^P-B*NOPh4VA@7QhaJUN7SyX zM)NhQeo3oI-{r{#3w?@%sIEWNJ8DGfqKfKrjEkYKc1v}*ZaRBdWUyS;E$%(kh+xnA zGUWWd-i3{dXSfD?QGS%kll<$Lm2o=05vLNJ$}8=kQsq&8B8yLl6%+%U*>*?MM^&zR z<=>?5sLaTs-+vz2jq#)4){J?zGDen$d8_?EPBsLyuX1v9n6(#0gIm83y;h;PP<)=E z+f49*hw)M1-=gxGL%Z;2Oq>ZOMT!+Q2_WpI>~|q61|urI_E=xfcwf1X;7Gre_?(vY z^7NS*M&SbcG?%YLcNx}ywaG~o_n(g#6MiI z_y>n4=>0ShuNh7-nW_4*s>6;G0a0=x7dl7_Xu~ z&%Yw&@gam)+M>2M@6pQOWW>+*M?KLe(a*l)QO`0DgcmG9pM4AQ?{*09HwXQta|o}P zqW&t{9xQ2&Rvi3LkJ$tC!Syz1uFpg(hu$OoiM9(yYOCUVWzg(gg%qQfXt%7kuDBL2 zcNn$Bq#@T#i{HsY4W|d9&L6|IQ)LR`3761^Hl0Cf57{zN#pBlR0Qxm@Y} zMB%zLhstsrXxdGMVPZi^aLCG=g(tX)mhmqR4ippR3{{*iV7@ zDs_fgQwLBDE=LO#!#q!E%Z+sHCy=(K>u@Z9!lcFslSAg}jC3iZ9vU0zI=1RYVW&Vk zm2|0Vnh7Ia=QYbI>|z>AlwIRV$#)vp7gYs<u=2*# z7gWoxKY6>gJb94)FsIg!vzrI$=`33xMq|DIrxOqUbmHNkPCU{&A&b~s9sT@di@Q^S zk=)V}D~vZTNiT3bFE^W}a018t%ZXg8Y!b&ik(0UBLMHboDNL8ewJuHP=n}24lW*y1 z4(~OVe&+I7t~7>u{G>vweLnyA22-b%lR13&P)b~)H6)kv(%Ug-f7)C2r@iHW+ROXX z-UfaVOL7b6-c-vTeqbB5aDazU3-Smru%N_qyzm9pa-VO)dG&ygyGrGr@J5nqdCEUE zrG}pK!e895+WOuWM%=MoyI3Qglji}d#$$X0kyL6POYxA(<%p)nSbJ)-=78_CQR1GF zh%TErm!x>}bX%fq5nZ2ZZoMm+T5GeDUb^gXyaJ6asjo_$XK+_D?BCDRA@k_V5#`Va zeJFR>amXygvmvu&Ff$zHqgk^TD%O~Bdm@;?#zESd$gZrVF3e=*!L>H9I~^%+6YC9` zcnf>7l{&eHeJG@-z3iXL^mB>HRI2$Vn*zc3F-r@ia<7=lCd&K7&TOH?&#X;0J^f;R z@ic)4xD&|?{_`LuF5n-q0+w-OM`}HvSB9vuiQkH(yj}b?PMkA54KmqTuIQ-q1>A+y z8+n@#Ye2Q!;Q%8bg55-rLZj!321K*}~L+D~m1_vm8uCw0B(SB1zo zh_f9ieWTd>okp-ptc57ISq$qyKU>AHg+#JVtl!T56f%himn`;lFI8B4buyJGab+EK zp=1dx_EOE;5qas+5fm>|YaaEYY~|wgKFTRURGVpoYm{zw;y2Y`UW9|pV&^);ig+QK zxlonwL`lfrKLp3dPgf@G(;M+IO83q^jQCikd;5V#a*8r(Bldt2^#l{Btei@nn57gQ zr^LC+^h@-!K#8t~b*|V#1Y4@;b@a1b8C{(^v_eUapr>`pPEzRPM&Zxjv=^iEk0 zwd$i%@;*_1QH<%JmEV*)AvCa`N|--AjgVGRl$S2q0QwmtdmN>_@v?b8YGIN*zl0K} z%HbGvmfVg(XUp2VsD;_`++Hd^Pae&rr-icpRGgsl;9(kOu3QU=G*4crL{BSazs^+W z8d-J)6<99^LFU*Y`%a^ByXBhmG|YW+V*~m*C?|KNT8>CpOzUx(*o>Y|$z7RL%UStx zKDeY@VoFsPNZT>=bX)pXpvoS~Ujfv!C(_{rm3t-okEL>ja>X7h_g;oxrNmEiVjxj| zm2Y2Bv)^SS59-S=Ip!PvjMQaSp$=x~+~cXvvAT2P>1l#)!U>#`x^8%J({xVnz$|q( zHK@Q$U564xGDlarA(712S@olGi*$A$=qFz%Ur`5F>85R_X4mR+22-;ebf!*Je6wzO zB2~6imljWXdvqPLh;qMf^>KPSs*B5{F`Upv{GgxHx>p0id37nL>F1&@v=}veMOWb? zHG550w4V}h>e8Sx+|dn%4Dv|#07CauU6<3;i5I&482fA8*Rz!OR(G;Kwf;f(1sd{a zU7t-i8ab{c7Jw zc>U^^7DTyN-Rn=|%T*Vap)usC&-W9_O7-~zdRn6v$04y^b%OM;Nj<-SezvM@p!)An zH$sottqw||st>A%z#5LI!!J?s6msNbqm z@!P7sBT?Q{e^iB#r2Yea_KCWpA{BV9+T>v|sG(P=K%u&)0INVf3qf+D{`qDi*`j~k zmGXAzFPxx;_UYYTQ)LJBJ}yLgM1SlG)}X#wbD}(@w=$#l&g!?IXZQ58uTX&}`tLW1 zPPp9!t-gZ>Q^>F@f%Yq6wECcU8c#+rCsq`V0xbt_WhWRr+eRLgXeEC|pG zOj`b+pCu-~>?aOokd!CvKRm&!UEIn@nj=Ro^oyl|gwA zP3A*}cw!>l=;^sh)Nb$^lO34dLX*X3!3j*dPoke9lZy`2-VYPUSycSDNd&n6sA50s z(TFA%>x`MmEcW#ZC1w|k3L?tc#janVym`g4KTxv^i#b6&UtH{1qCpzBcEkH|C}ByV zBdjr6YT(0s5}tx9UZhzFzmIrr66pLUwx%}x-4_{J-o<{m6%e@AqLn>tKnDfP_wEx)+{e0D(a(O?Kb*#J zfW7LjKqgx{h{_#ei|})po%%>E9$`yvQA0=BF+3e(bt)J`Y-@cCyO{MsohRAY+tl(! z#vo$7VWz&22e`8fQBLB`Y>gm=6>Ce0Q+Vz5RM}MCc?tbY500?hUH0^iz?Zi=<9~Jps-$|j&kce5Es%l=sT8r z72O1s4gXn1>5X2}ThYa|SVEMslS!Y|HFjG^NEbUS|jE}~3m3!R{u zJ!)&w2eq|&h}<^wklSwlAgZDLvQJcV(xs2|8j}6!o#;}E1rmM7jZG=+Wc!f%ocb`C z;+_4wP;M7>1J%=Y^9X1myd9P8?m!ZVu1AN}6!tu5OzFLROsVGHhZCTM4343cK94$4 z*w=LfwbDNk;lR=xDI8>haByCI>eY}J$EeglgGmw74K3e=$`1QAg2LgaGbtRwo)f3l zjbuE6MmdUAz@XAuKaA=%>rQeVts)Ovpt?e~^MFD2vS0Fn_LmG%$tpxl4~Lk+#1$KKtdAV1El4u$Z0GQKg`W{M&xd!MpHfyh;?{oFPs!_r`{oTffl%L|b3sta5 zPR}+hdJ8v51vWTrv~BT!?k>wtbEz)t;&*9B*?bJ4=4@}Apme(~yXe!&6i zl7lH^v>E&cIT8>lR{_9D9UvyszIUaj;#hs+9?T|jq|aw6uPKeD0J^hLh4FfYN=!Q;23En+>RV5ld=JIXUdq zcLwFy2N?Dec2<>8j(4>O-)AT4Xv%RSPNC)O0ARH|wk?_Zl+QYqVNi}EfViz>iMu%t z#yyJ+efGN7jdq2vzA`N`zr|AwSVE<15W2mV-Y_ig7Qek{CR@I2PyK4uX)*PuwK=Ud z+2->>s=V!LNWk4*f1`N!!9`TE$EIpT*^^DAvb}CXJLqi=3^1+b9!lx6ybJZE-^1w! zPGBiLs7A;A`IPF^1(=j;%stH8I51AP^)G)A+Wp~g+V@e3&A~2h^BfcD6=66m7$e(h^KhX9P~2u zyg9{dl`KVN!&XhEF#H1q)`;PbSk`XPf9gDLNUcYH2m6ou*$B(JmM4v^-lta7O8q2A zII*$7pPH=2+G-Zi&oGPSDng5}-(Hr=I3xknsZb-@FbD3_ZebOS4xzfeFEP@ve6kl( z%f6=2Un-Z}X{f{1w-1HwFAp~?`q0|In`;#ZN)~1nPPF0W_E5Rnq282ICu26X68U>B zQAW+3f?lrirLca#D&J~;49#fLjop-&Z1~e18iy<>d}+qN%hR_w}Mr84D=V(vmBiZvxZDjV1QN&Stpg-xsJp;nX|&ze&e z%{+kUG}rZ@uthpaB(jyq7O*jAXvS^tuB3RPNhL(^|vG!Ex{;47-F-LwoU zm6(DPzWt@P6n6N47L$*r5=~0o@>E;LTM*Sdxxp6Mr9w-CNKqy2jLxv{{_HrJu;;sK z*mttS^~b7V_x;&-ax1%Vo2uN(Xa408Ruixitv>@Lx49Zap=}gwW_I1NqRJn5L-T0w zM8}A9__PM+!}lXZ6FEGTX1S{+(8ul@965A}9v?JCL2Y4JFHY^2Q9Um67ZPPc1*qsP zbiovF)g9J`Hmt2N_DTfM!*Q(QbdF8ZW~Ts4o&k(FpN)U4vDUTVEE`!7%qE*zDLUEZ zPUb#_K?AA1NP&rA(q!m`>{Sm9VC)u6lvh|LqdKp%_H>}hd#u9&2JmZiTPmm323 zXp5npsDjoOFm@%C%B1u{wlB=Ei+k>xP9sfw?QGx%b|=Bf9RBKSI``$Ur29nWQZu#o ztu~aZI*d4`F6g>99o@kjmeOG!(y<%8$C@&Y%7lIlr_-p`R!>R~b1F+=xEVBoh@f+{ z5^C3Y1^q-nnP?)7(kULb^dxQ4y50)aQ1302n)-KuwKwoZO7!P&!+Hvg1F9P26h?gs zU0q;!lR?W>8d!Yre5&tpnbZM>WYa#FOY7|!5Fm=+q~Mj@ghTqpVOXVNHJakUo^>D! z*iIvws3fr5Mj>BtV2!Gc1=Pq928~5QHcXp&8^8k= zePFP(e7l!wvS|WQ(4p}vjp4(BD7OE}y6b_y0GykDdAwU1YOjPbdG&RrLQ@f$Mo>Zz< z5^$ifjiHntz88XT?QtJz{89P<3hRa)rc%+*jH$(j3pX0(qP7vXR{g(>SK7^nxzBxv zEu~g^c^7Y@WgRL}y)KN`O)GFip7l$gcd%%HJPXL1+i&0r28492}vI{+23K8LZbSRn9(+3fUiqMXBu0OZYO z>%c_kvG%a(E@ieD=Q1`2#=Sgte7+_e!rer-&z?jsli)KZtI02Rvb^>bACbkEz z3A>rnP7fHP16)M*Gj>q}E_ACk{^@s72mYA?^Y(EzA6_jd*)2so6T*#kI1}~`<2Vy) z_oaaqu(ogXI2wWy1S}CH!7y(#FPIkZvgFN__k?{vL5a`UM=*dwW(z#%9b3Vu_y<<~ zHHWd{BG%j&cIy~Djo@L^05S66Pc&PUy)Xg%VMIcgoXVAt8sJg*S_0`{T{MW}A1uxJ ze9cu#T*zx3(dnC7s@Z!LtmeKu>Oj5jQX1PZ;R@wewE{Z`Tmj$_Jl#lOm+XmAusy2PqNlaYkGep+qz{mW^|bo* z;Er#{tJo~naExqbvmknIVeuHpc4mA=6E>?tVcp5(Fcl!-p|yZn*%i3G9AH-1jt5yi zFy3RV5$rH0*!?8x(kV8WI1cgH;lMX8u+&>RSo13bJiE$9!U|l#-XDYghFt}Fyw66} z7qI50(&~~A*;crxykZ&9{@*YYe;qc`J`Ck6n}}ss#N2VRjNpZKu*vaFIMzq=>A=os z^7c5iXYuJ%8BDbfI1J|T41m$|`E~elEaVF?^SRu9f@YOXSG7G82+yT_UKOun9Z$eP zzn-7^`4`jJ2Y}w~!a52ow|0OKX+IiRjOPN%4PVt6{OU6t%c3RRl3G4#M`7EHLTa#c ztCDbn@cc|E{gy*P8PXSvZFn{|?MS9+MWa{?XR14$4ew@*Be)5PtaRG`0<+3wf0ZhF z57*5#6RE=;fn(~nn?WwKeb9%7QDF@HYJvyAQWWwC2Bw^{zjO^JbFBYc39nr`rw%X4d3h3VWReK0dC+^4mJtj!@zO;(t+*xr~HEF z%lG~iR-O-cfGUOXKB;;F2urnZ@b?PrrckM%Q(!s4gKkpU>Sf^H8Pfh2<<@9rh7)E~ zZ_GyWVw^KJqoF~T><@gS82pMN7VQH=p9hP59Y<(Lk&Z2ZZ@@P>QA)2_|Vc2s9u*Cj;LZV~kF#7bSEb=VGuU%)VUPbSTP zhgR}c?Cg|TU}GKc-JVU(p_p~z{2*3@Z>@yc0t9=8Z1@vnNOsRj)SL(xn+)k7`aBy+x(?Pu{eXy-7 z(G2+lgzBGIctH)_4c<5GRW79uuh(1iIVzh9BPVMH2ZB-TcMAo(&hMKMw2J^pPZL-@ zPdx;m&rm`qv0Z?9C$s)=MV-PdV5OYO+~IaLjmaWKv>mu?#= zbbEN+aE2^lk5}n&bU(^ga0HJ|&=izfv@S`}Djh9w+B$hlY;R?c#A&Tf3@vMyYlp5G7R(8j(!m&q?hQZsIm1d;p>pR~8dSy$EE^WUODye%F=Uw$@Z&0A z1AGKznRpm^@35{Fsr4~@;5u03_?*Q8!iagQW`x;wR)O_p)HwJ@@z_ID*+#x*oq!mz z;_u1GtHaq)&f810x}Si8)e~U1#>rQ1@P3 zE(dabT{of+US5{Mkfr-5tZ^ESC80*JTh$s1n|FBEkJ#=9W1uBwEroD2F%sb5*LoCh zAV@`%4bARSO3ceC)MDc|0F0Uxz&IVh6;9pF{MS=T^Q7K}L%!N%xc>&7gQ2wg=SqOr zvO5AMT{_O7g;o64j(XviG>7`@eisnAN1s4wHJx7qLbBGt++|=DJ`s?zeVf4f)UW$Q z=reU7S_MppHNA4G9ko>DDqO0oPHcliuxXYC@&bwtj;{o^QZI_qLx%2wIM@n`L(O^( zpvjB_)2TJ|608=*FViT)ubKi-S$qe;?)G(5Pu(7Hovyd!I#Jed4F}r>17NU^zS)2% z8_sx5G>w`9rjKzXaaYE=l>?wMmvloJw`>FEDWMDwy9@VdT=9qD&6A+D)gmX2!j@@} zU0O$C+qG$H4sKl*tF&EzxF>h$xC6TRw)y~HzXkyUTiFlb*SOU7mU} zPi=mBY4g)to1Zjoe)?$h(^s3He%k!>*XCz{){}wSsE5>o`aJY~9m*ZHV>k6-_?hKK zusB%2%RPrNz&eXr@>|W~Q0k!Oj@K&}5q|B z3MIuD12Tj5c!qgmtDI#CXzv1J z{WPm`TWd`sny}Uw@@6!A#|qfW9rSdKt)8Tvc~h~NZm=cr`@G4VUN8uuow~z`h|Pz3 zevc(OYC>pEB^54(6^9!^x2w9;aJ*OYhf?lkHjZlbDLM>Ae|Q1pg3Jsk_wle%R4a8C zR*oZZA*dcu6$oZSKntOFlECddVI&c4vavOf!e={bYbecZy+!azZcuM47Wc4VN{I=W zLG+E+x=>1!SR6j_tM60)n>86g=`CV$__Ue@JgeiR>Xe&$8Inksg$;?mTYX!qp@%Kp z5qb@bB$~8;mg=!WiosnwkBzLZVxjDV*tdd>z(lTOR{=?`W?iABtYO~=!efU`hsksu zTadu8P>yB8wTrbig(C**k;bq>uHppW!tCL#yp6Sm`}cM>27X&RS;|lWskIXjp}lO~ zWFstw#}|#T3XWK5{7h+Sgg1Q`=l5xLKa}GY7q!=3@%~91{OnA)4jT9J722z624L|X zGoD7}p0Y?d%RFPeA9d*kQ}0uIFWF-FE?wn)peVfLKdu|3#w^id5S$0Za~%6K#N)d} zmMxs%gfmY(g{$#W(S02-2C*IMaJ}#X0=z{udqF?D#YI<2JS?&b>F0yU1_%EwN{lsz zN8MBC6Jr&JML~OW1PTaGZ)=aRsM=8+d(m#ulP!90u_*q2e4W+wEO5 z><*;}_bDzaws8Bps@#CjMS&7kNI%z29JwHVD}N+%f;JO`r?jzNMxeS^w3Gq?SQVXcB6-#V4{6(T z4}|S^k}6I-T2DK=`?S*Z`4DG`t(cm`vH7N@0hwo>F%r9O4iurWzua*iLih*}GhG<%v#$dl%b%j^WVVcG?Js?!|QN&^-jVffKB2oWP;`+QA4C zW(bUwXIX1F3Y=rJDj24(YwQOq)9t|*aKyOnICc)NfH>a~N<(j7IK=h!!gYp$Zz|F# zhdswAMle&{&=|=E?lXcIZeCpnG5ln@gx_#PMFEiC298si%*R!O1#it!fsojEsX$25 zfiW&+eXxOZS@A@P`LBuTUd4`Q>oIFz7i+WD-%C5dGB+FH-B{-8F?pi19w*nk?E;hc zz*dLJd$m=M$@^^$PgPd0$Qa!09sC~mvXd>1!Og0D*K8M+T@=ikFK(C}V=HX6Sqo^c z;fVWSEE+Fnoi?l_i%iWjqS?Xh|JuQ%v-d6)js26a2PZ6e_-D!J(&dmd^phb6!6-Od z-h&7~M&2p?7fJH?hbEk<0ec0{g#@^Y zU!L>V?q?5QN$Yf2UF44|=K+p{SggY(OO)aUXNtVDzl5-%KrZ^A4$uOiI#XBAPVi2@r zHfz{mQhjjo$+%${cc2@kH1S+YxlKQOz)@W%gX(Ry41#{^Q_#xWxY<*BTXVdZE(+Fc zS92WvW7z3~h9Ni}s0$lK0^DH2jNsVP{9suM+xCA10U*Z5;4NgK!d2Vx7bd()ha$iW zZVGe(o9Tct(*t3WJZ21eximOxLJTy+miF*=NiGX0ztiyR6i+=J3KWayVxNZs`|epD zE;M}_<7!|3WxjtwpZCzTEN(x9f$$InBD+vr0Ckuhh=scn76aG)N2rW@G(ZqfO9w1p zD{MD^Jv@7>E}ld2pfkk*U$v?Xqf-6}fFq$mjOtX!L0xw(Oo{d8Lx+o=j#DqD(=KCN zWB@o4?+Wd$#SJXEHfGQ-65Sh9N^)^rKI=61K4$1mHEN~nAtXAZQhH030< z)vwnm%I#n54do8#WJ{$6KMSDrp#xw68o~Ag=SXMskAu;$@-`f3UHcZAiDXC#4s76f zcMaK{10RKKcKxzu>d0rtIK=|;G-UT7YzK?kkrx{KSOeHLkC8$GG0dlwG0v@9V+16w zy&>9xbr4$PW_A$Z;x_hTu6AI>o!3tLrfxc%_E}FD4y>=6{yLAw9>Q!!Y=k7ytR^6+ zLbyuQbi!q*(5g)-w_Qy*UnMpGXHDsYqow0QZ@@N3N>RMCe>KBqy21{?$aa-ELpUm6 zw(tvjsNs?%CjWb?&F80}NiX0p;JLPt_XKZW#2ezg*vSX31(M8z;QhOsH-q=@UjB76 zQSRfla0&SckGz3{m0yE@-7&uI_g@#3rZ~~;3io60W&$Ct(7OrM;#3xHelGVm>tL>f zm#=%dzVr?%U3w2Mp55?f@Tmca)~_QxiURy?Ag52+4mmw>5Tyi#Lu#&`t%Hi%{tK2| zA?{&>CH18Ah-)};>U#m*i=O+4$~H<~NTp(XfG5V?fq!t*Kxh>SCG&8ee)FRiTiUIJ zXI42_4%*&uCd$O+xc}Or2qH`J5qN2L+=5%(sXcJ6bjcbCL~LLl(e&Vut$H=aee1Lk zIR5v&-j`_lpTj5yeg#@LI28KNKcj$Z4Vwp};0SgJHo#GAxwYm|k`tiA>a=V_WyZ4e z(VA7S&mCi+TA>9RvU~~KYbxuT!NFr!z#uu3h2x6eY}Oo}JagH@A(~BMF!<;~_84~( za@g?o+Sxx2=8s%<-Ii-Cpg=P}G&#V*e^+#4SitVID2VYc1W>zyHNvPjvH2eXAF+#o zvbM3oql~a}pJ5m6W&vZdBG|;wnw(M}_Z$wgez*g1nE51Ya*7(KmpC~BaY--%)C$!>?=@b3_T(pDC`5q zYeB?itA?mh`Fft!%z1Ho2CbrVv>u4{5Ni&bgkPu;fa^k_mhV|-;PxMxFMLlvvuQWH#^l7$RocEc{!c;hM($aZiI%$@%Wh>09xC!%{>&zjR3PDUS0!dPq@OwB!&(L{b96BXuwoi~;TMS}kM+1&dIqq= zQjr8vZkc!khlo7!3cG5Bc!>)*tHkxmek8rJiBEsP7@Jxg&Cb*Yo0kg|1u?rW(-iV`c%X=^C!@vHcu!K?Mi@3I#o{GfP zw^Z48(R2cX!?EurYG{PA7*>^Z#q$Pq2F19C3hlcOK0+~Gnf#pEo1|R8?Z~OhMVJON z6(^VmXDfdA8pAxLGfaH*m6H%?7AYmFQPqo;TX3StRTPM{%aqx;$DOa#m<*IeIfV-` ztCjdKRA8<05rWrxr4BB^Z&X^s8)vgJY%{gKRap%y%XVeperj*0GTINYn9{sCwv5v1 z3m|>P3!OitG{L4kqS)f9_%UTMu(A`19T3G+%I@2M^pyvZly^=U4_*C&@&v|{OUg_f z+gFrVI7SPU6}XObT?qmkxv9j%>UKvth_m3HV)IE;;LG*Z6!@pGeLYc17aHS^9494? z^!RRB9148MdrfoC1@iJ%Y2?PBtKWkm?V}>#=l5AD)fr}3#TvW#o5E&l`gq!2D*jtp zX{zbt58+3cE>i|#=g6h;#!$pl@bQfCGNzRgH1I9B-Z@!HfC5wH_*5#8DQlL4uY;V9 zjgT#)@GXd0vH*syIr0{6s?U@5v#6m3a(^?RqVi2A>e3SF7-0}Uw;I=mgX1>i{u%VM z-FUhic7d@G>|y7PXB8Sm6w6O=uC;r$f|AP@TL2^Ck5vYJ-NOObsVXg;M=#8?8*Omu z^*RWu#8o&M`!B|Q!797prW`m8hQR7uzff4SY(pv)W&?-t+S%2q-pJFqO;mRY1`$*L zABg_?6e=6v@E*}OSJo?VYb${2b&?bq+5WCQIFJzlG zX#hqcd|30C3G}dh)tzFf6&4rt$A183&L`{)yn&yx zd2rx;#x4RAeZg`jGO+B;xVu%zx-HU!bLYY{`yGq#rhsL;!42vQyEI$l+*$ZaLJ`}I zyPDtFeE2GUXBO~G`oSWx(zE#)Xb3ZTQjQTAaaJD{ca26om*B^KO%?6ZF>aqO>@H?o|RS)jGbFapa>mJhl4)B3wV#JH~Q!U&19ys*w z;9kG=keiF&z$EkWx8aDvt3d%h%x}L2l*-EvlVH7*@J)uR{LV>ZaMCfIjKN9Ul%>48 zydA#tbD#I}rm7$Es-&$FL#+hU{!@Oqfm&jlc?b`?KM~?MMGs$HBhFrhRJl%Aen9&BGW^|UV3WKOD_$1Nz;Ir zz8db*PlH|hYpBaW4RjgDG%aF0)3k^Q3|fQ+oS4;jQ;l@y-$(}0S#+Oha5ms|@sbo< zC;~D7EJ>FHlexMV5~Q&Wgdu%WD&?Ad#s_kWjfE0Xyf4iEB{pEDOLjj=VX2Kk+e(kb z;L4-}m?)cHnd0Saf!~=nz`0=-4F@3eq#n?{>pK#SteAqr{Ny zRLbr&?91i50j;%v3wxHsa32oU29xC2C>RRPU6^8>TVQHkyjL5}DcwGt8tTb=u(MWM zMigbr0Cp+29G?g<-Mycv&9;E?Mg?5RFZ?ALZIE#m8jq zV#9DE)`EMu{b~S94(-gS9~IhsrFtAI0ca(gm;u^bO8qDVYryyhn?6iVUP1}+$ys3vxOXFfre3`*SnJ@$&*J@^FOO(yO;JYO) z;(x<|rX;Smv@&~1@zxy@sJ1pUfDE_w1K8GX5DaXIy8&*sZwWhMhgNWsOmYD9mF$3Z zld=Q%raK-R3M`{G)==tDD70N(;Ei{^4=1~BS#TQb9s!S}9+zRi?pYZ|qFz5BclKEp z3OqKcB*pu$hV^dX#2SWGWituJfvP1g{@FV^=aaxv>KtebhhThT?av)L3)man?&EV3 z?*2Id;flj0qEh}p;F?qMIWI3?SWmspzCrz7Kc8yxeF%Ng?=qN<|6n%-?;Vcrm8~8F zYAZ6M+^TyO%B}Ve8b;u1xQzw<#Ala+YofO5jqzETkk>%7YB=DcQ_XVl*bGeo3#!F{ zz=T`F>{HtXsBUCUxc;Z?#>am;#=(x)DI}Z1)Rw@#I>%#wc2V$=q9x1}-w#^K?nG-k z?WY3Gq`EcI7^-dYA)3Lg9qg?6EOn4(Fl+io0iT>;rx{o;*HHn0zGZr-y#sJLW*rmF zH8WVPZ5lR{VWb0tys%I+jn-SKF~~wE6%6th4xU5oBNXJr?9og}ge)9@_)%6CH{^b^ zckrQ|#}l#0=5sT6N-yB9aN*41CE!oJn4ib7wv0D~{eC%b6)fP*7P&@3=WG1+uW!|O zYzg~+@91bZi~r|Nu?#HAp@xEj<{6;I;*s!lFO>n|v24k5RHxY)$l#XSE>PSiXdDfo ze0Dm;D-3TBM~W}F`Bc#uH#R(aub~>e4lc*GuK+txz`pf(&3<6lA(eUpskS~$W&7`~ zLQ8DO`bY{h*j%6oqgnhOV_cqGGB+Q<}Q9{3O0la*+4TGmKliwIuDdThitK-@7V* zt_=U*S5{mUoLxOSm!QcQ?9fm{2~)R1{AFDrFOOk|;J7k@EyAVYb7Isz!;s3=fRV@I z-?w4+4BNx$%^d@P`~PcRtee9BMth~w;eX5vxI!*naGm@=U$U%Q>b8M1%C*?LCR(|Y z|CaMUjk^lI1uz-=&4yhgAp9hUBOV;61Lq9*dz1D#Y`%_%mVqnS*#VX>1qU;i+PE+3 zdJf;OsaPKD-^~P?s{2?h29H_L>MD8r6Q!p+K3V8hzOKYA*nS4{M?j#0Q-Q(vySg5t zd(CCA*fcEjmFOCk!pCZ27FknDtVbF6d+db=d0caFfF|9bC^wD5cLZ8bnLuUREPy9c z+Z@P2?JVG@owyfQI@^E3{_PM5Kaiv}_=G2)0O*>Mw-E^FG+Z$6v}z8;Q=?O06e)=h zvvt{h1#o;(6IfU0!xOao^s6{!Lw8bcuWl77?49w9%JyrWNWB_b|1R}s*s~z2VYpW> zj&-32=sA*^0Nx+P#^6IK=`0l}N(QTnTWF)%dAOU6VVfZ@jb#-&YeG*AxM_`NYJs+p ziUDVy$g*I6ox~pDke|%b1jCm2GTa!LQPy+~R$T$-*8O}&YfV^mfx0qL+<^1$G_k3& zW(wcZN(D$!1UYP_kZ=K9B}(F>Mq9)wKskp*9)$11VhyfT9TCpOqPSvF(pvRAc!sm1zq)+d}ws2{ShA!_};}iRQU*yT38?7745A zBIO-E$8|z!;A$YVc5kL?QqC?z*68?`H&s|r2uNZ2h`&+`;BIwu;tba>RZ27 z8t^*C4A>rlP{1aR%mE6>d~px+Gnkij{8OGopOqX5S9 zV4UA$d5xaNzTEEbff^?6Y|(_~Xst4dQfgi@#S3 z4lmr|n+6`=g{#K`ZV_h;opr0R32ZiR!K-t4#tcom7-Rv^fCs^;Whu`BV4KU6T{Mxy z0|xKqyv8Vimi!@H*YbH3y0n6KfEVscJ_ZusDjtgO3$5l729`B^84k0xd_yIe33#cV zM$mk#0f*bbv%t|e@+Y{Ay@@Bo6?8Kn=%EKLJsAS=R(=95#oKsP51>7KCa|_0ye7Wo zxs$g8_uIw4PBezb99PN+8guE6Mld+d!a1^!Pl4FDpYMmC$^pJ}geDLSTn>{65s%OMD$HKbLtqNXl2Z5t!;#-rP)D-)VU!JL90D}io2cPj^sN&CgGE}!0ydFNf`;xoG0Vw1<%#4Aw zpFu-!c#~!-0QU~?WqZquHPCSP_fV;t0MfoF!&2(^%*;+`*k8$^wkf7W06P&J@@2 z{$`1h_*&^~5r+?0%@Lz;n`y3y3F9yY%pOEf^M#toU=cWv8z>7!AD|A4#5$;eIpPic z%omH}dEf}bNhmNAG{tF}E4Bh%SSDgWQ74v*2Ke?@o@n%q3gin{+&o($Uc()IrO1Z% zyGnS$5WiZic2;3YxBw)2tvCj?Wu54SFZZn%58?E=LHxpZ88(U$%QW-CH`rGjcNQHI4|oOg-d{(ip=r(Hbs7$A#5g6()#(vHB2&B#4Br<48?1hmJ3A9Nbo<=9s|2BzHHYl9xd)*|A}|d>TZcN%=K;26e#T- zF$)UZUE!FenL!2vFSsvi!6o2g{6^ZH@Vpy{7O z3*=9sKsf#-_OyjcDrV!(`UvH74ays-s7@iDH<08MyN%SB4az8d?`ESi9rp}2DP?fJY*s=ck!pyT(ne7Yy zrC+#UE2A{$`tvJAnc}A&!j(*N6c_2BbDDYZ7uZ)4{cR{%y2?MY)cC2R2y0{Eb zzmkoMXIGRd=GcEq1RU22l;&`Oy{5E@0RFFBgE!0#rOXD+(iI15)-9!KSMWdOF)rBM zQC1~_|0!12bTEIdh2nHyap|vF!FGgE)en_v_yX%AB?m~^W2HZwRGuiCU_gATq~e1!Py#ZalQOZx@@N|8CtCbf?E&PS25Y&`a#GP8{i4zCLW zGy|I{g{30#GLDUET(@3+!vgC1V6!T40~NI43J+$cE{f^NFJ9wy-v+ZrC#qh)1a zEMsJDOBhJys!#AYke311jF$`XUCascIh@%h%9ps1Gf8gk0{K%;!acSra?uyapK>D< zn`yGfP6=yWAKdTDlBEOnFxtI}qB>{Dqj15_mfPWcGE=U71^y>Hz7_a9=6L{8b7U{L zSkIL&;I1%FhTyx;^QFcA$JlxQRaw7(-22?;-us;MsVuY1$}HPu<6~u|l~$JRJxv>0 zYW1-#qM|77fublwkRjqi#eo|YHz+DD6h%Ae1D1LOwPIA@Aq}RuGe4+ zmnf}ymid&_Hj494+QFDLN$SDbm@Ksi1W1u?16E0u()alHoF?5MQh!SKZDjpPH)4J= zUAhVlF+)1c8J;PHgBq5b-C&4hOCrtV45?&qU zH`TNLr2S=_e^To&{2%kAN-Fp~={TkPe5wC^tUu{}8tsLWMsboaZ2>r6B#nn$yIAU{ zF&2}a!z^>DbP@2PK$-`-y-YgJ5PP}w6NlRhsjD8u@blgGSbtIuoA_$!`Q{9Dr1v=n z3#ANjjkVJE059vL@pyEtm+t+||7DT%_zVSW(An^vH%jSXj+>N!{FCw+;Fm~IaSC3dt+B`4A-&m^>5&xwY9pLQyWy#{OS*l9|G3@K zOL#7oNe@$C?UA0Lhutf^pDANLIvBCfeyQ_2{+mA_IUDHzq&ArT9+cu1!rzbzpiNas zUGx2W9+p1mmq(=hUmD?7+I^h=EJvj-FZ$0}CGDjWsFq|7(__+2_j3M8vv8ZJk?zGq z_Jni*OWu>xqs>I@O~wBHbDoyIBhKKA)OVSP+3C5h{s(eSIs=ioR=SmViSyDOX^j0O z9rXU9^yzc~Bh+7q`oFv+eUA3@veaZE=bzNCx&KFBm9qJGu1P;b6|9&3e8PX~>(Xx^ zvr+PIXqEcO_dLk?C;yn}zj}W;QXylYItXj2f$|HlQGd#Z;ZhEgpWjRWCm%xT6f5Wb z)(CUeLO!#h@))+}IJqhC&M^6=D(X+U8Klz@^7m-fN6HzOzijAN$BCzAc=Op_}h<)q8Ufg7gF7GsGF z*}jeSCr<#h&65AZ);e3hgq!CKIS2Fi9QiN!_%r1jC;NBFl~-X6I!o@4ujy<#NH;M@ zF2y!yuG|ZS_dIzHcwL_SWg_RF9EMY{Kt9%z8L4~?#%I1fwOqnc_DL*E7t2Z5+Afjb zzB7owZ2rgoJ1dYkZH0#+-$+@%T)xEYeuexP=6EaRAWm1Sv%eP%=gmvv?j;yWn z2Z*7!$-_ANi{(Gr`AXzh=lH+eF8_i}+YUK>F8!Yz#EfC59O@`xayuKCZMWQ>kF`v` z_8600c_zEmUO5WM#XdRXKlFccmuUat2jtT|=>Oy6{2L$`>F*gOoPdvkX>7Q^Ch7BLPWB16sAPgYB`BjIg-%jBL4=vCWaEaAsN4^8b&7HoH{Gd9V|DzET|s+P!W&ic&DSx8T z%~N(mlb)}F1KY#( z%DW8Si818FN%zj*AC@K*uQ6~a($78wQ~IJ{+F{$X-1#ATWJeBw@j&FBDqINJmvq`t6UDS z{*V2N`Su0mHQ6)zdWckL&$ST5$eG|l{U8jLWh+nL70yyPa*HBRE$Rc z1CA=cLfxrS+5n?fE4MKqKBnZb)Q&4b)bBOQ=WIbIlm&G2CzYq*w4PFyGuAwP#TT??vtI?n%{na;6MGa7YW)?J1 z-4AUtM!htO^`|P$S$}E}*VI@wl@Z1ebqI5Yp{feV6{mJ$UNcNReJk~+`T-Ko5$bJ| z{0EFw-};UIPfcJLKU%$;ao!j;8}9X3^>;4Jaq29@tmDxlET^a@cqNc;N zpQd`C(rIc8g4}e~Cj4o-dJ4f@hWgh3Sbyp)2oPCne@3U->XxP8pXzg6!0y!vkP~OB z5<;_FwG$?-v(!P5+h(gjl~aGJE*j;zYADbDQ?BP!GX0TBbgWanN%0BE#Di>P75IR;r(I zm9J8-Kuub$4tSUTPpu*WtWbS>4)v${4;A1#wf$iFKXn?W)`+@VW+_#F z;0xcWJ`LM;m#V@a*sW&pv6iXNg0t^Y`_kF$RXZ@3+NUdx=u0P)|TkIjo+1%fIIl^$utcm1;aN+EKL)#NjG6nQ2wEsv*Zdrrt)i zeO&E^D!4}NO#N~~ohkZXwpf+s}=bttZjB}7yg8pf+_H`TZ z7p>V;>Q5~RTw|#A#%20H?U${rKW$l*f7@{F3*P()?H#Jaky;-@&qisHZPcII(i^Ei zwXfq@e_HlH)}QuxgVUGR8&|G)?M9MiCTJ0gy@}fEa6S{Xj^LP+v>s5UCTlI=T_kET zXQ@B6baCcBb}OhX2c4tqID>S=z=1FEQ)YZ>cs2Fs?v5gl+FKZ7{9na%~R~+X}5CSz{};d*~)sY5#Ceuhx#fu4294 z?i2byO&!eo)2@J!uhV8f>fg3rJ43Nor2WcFaf23v-StLoG}3@gS|1DxHfwX}Ft=zg zKy2Hp{mr~%n|1-}PqEeqN@0l>gYVOJZP9)7e_ApWuu^UQvz&igV{ANjX+Hr=?$(-7 z36yEm;P3CzGFLMH)5hKI-?mR{k8*Io)|2t@0WI%O@E5I)()OU13aoWVdjQ9^3N4k= z;jlIzuahI%H$aG$T8Bx@|Fl|o$5q<4JN<`OYgb8+IHvW6Gj&|MfsmXU&BM*^g!W~D z|C}eaR&4&KwDY&H{QC*~;jBOHvxD@1T0TylSGC7r0$tPU*zW7KJ2{K5YeO3|f6(XM?EmPeKg2vW zS}%o=+Fwu8s6X|4OX&afY%cE@z1#)=)Kl8A{`5a7PGa?MNf;cWf5y~(sNM;?z&QOC zavz52O|g*}uGgTl8=<#G_Aye=1wI|6zkf69PrnIJW{f_*HT9?dTqXF6KI&1{pZ+b! zV7&eV9-R~P7XAF&ChAe0>HqYh-B^G61`-t~>m?ZFChAf64NTEf&yIAg{L^m)Mq8?HVTUfz??)oO zOmBe}cDdf|4E>*;Pn^w4JqJa?D!nOQ39I!k+x&m6(N93iEYzzpd|sm`gck?Xk z^^-^@i}Vk{VmIgygM4k&PZ7tsNf)RYHtSm}z+d#P>_l7jC*a3z)2ld^iuJpDQh(}4 z>CU$68B>`5>DlN`OZDNHW9-x~!eid0AEl7kt^d`N`Ga1?pmC3G;RUu=zZsv8eR_Z- z!ToyfTFyWH4K9sxeOZG4oCo!9@Am)NLwXFx*%f*hY<>>wZ@^(WqW?%mR;gbF*Ep)@ zAwsXxf6Nw0!1w`wkYoB%^q$A{4{(XC(VqvfIia_JNPbfP1KX`r`uG2^{`AXxSbzEk zl!<5cw=OXM(_{YjpR-oq4`Oy+PbEk1g1!zl=S95+C3cfSbxS*SbDKWN*m^X#+_(KhZ+Us-NhO2VP81RSdT@@aAOGG6C;d! zIa5a(J7G?aG9D!>W3;hsCF{@V3HflW@vssk@8d&&g7L;Z44mSP;k!8hjBk0sL}Mbh zI|;@kn6OVW?nFyC*=UTkD$%&5JL}Il4C`vD5r--{$!LQeMzZk+P97=7Fqkl@Mja)` zG~?w*{ijYd-XJR@-FOM)WV+Ee*1t=JF%SB5rtt|P&nzR0#x~pd8Cuc|V;qv?9OEcf zE;EgVfN{CTT3X9l##1;v%r;bzuQ|rU_)yL@&Hz))GY<0#dB$*zYUUg5P+zyhl*eGK-yTr)GYHF$R8)~)!V+;0W%Z$oF^nXSLjIb3(+!5BF z@w4o|-Bm^$oQ2iKlbE}$F`fcNEi{sdVq0r`-QRz*b;dUsmaR9^&_fm(6W{QEY%p4I zg={pY)5L5tUPMH<+1T(m^FQMO;Qg(}5~!Zrj2?I-7aK>glP)pV;B>v+D8yc6hw)Dt z^`|im(dSO%4dQHe8NXuNzuV{zNwdrtTgCj(XmJ(%#dsKQ^giPqMjQK$Iop{(7*9e^ zD>v?fId;(4@(cZ+(U*x|g&}j|9X7h*5Ou^@wSx1{=$OFzGwPUORvB4vYO0OwhV#$3 zhbYYBhD|?KV_c)GIAI)|3jSgoeT@FkxClY`v~e_+^=B-E8gp<|W#fJ>lq<#sL|<2pxO4P>hKDb9y-@{% zeBDSM%>2)M`&QPU`6|>6T7Gsv6!yaV*3ZZ+jnT=s! ztoa*rpdsdHNHIgrB>LMpvzn>;FtZxDTH*jlnw@Zu7-eQNT^()iV`@3Z ztb_bM)=XebHqN|2s_1w#fZ{#g9GlJhGuKR~{xtUo{ktTX-#+I*%OrCrlEKMlJ$&s% zb0gHKDP{+(^QM|@`Bsw5c}S#^&55u3|4K3MrG-j0Z+2LJW^YVB)6C0c8>E}BW9~iO z{4Y^O8RmGFcBc6NI^-;KHCTGK`4+OP8Rq}K^!texclm}%Zb^^|MAqJw{$tqCxm zZ59H_&M_YuMiHS!i~JJdkgyG--=W4HeR2 zb4a28%O&P<+)0+2zj7=Un0*P1TV|eSi(PL1J{$gvxgWfBr8yDb<5lL5kXTon2@tH- zn4RAO|1>{Nr~WkKFjZS;zSt7_L%vi|D1cxZ43Q}?=x@yj`^Rtk5BM`*_`1*xp^aR>7e;!KmWEvW*z*x z3Uko!{^Jgt)4TbtSIi0y$l{teYT5T2%WBzWwiIduK^J!?5HD)>? zz9-B_xz0|SyJ4fAGS8wrJ#8)*{7>SH*^)!!tohDi|8eKcJdgEfW-&fIZ_b1SaKT*m z3iyke38Y?UHe=p+$;^QYdfEI7-s2V1fl+tWym2G-r#Tc#c)hs^p6PY-AsiT^tZ{6k z{jC1D&qrH#5Y^Y;${)%4voeS*7-;Qam=R+wLU}#NY6*33uoayP{$jmW>OXvlm41@- zXWa^kA!E`U9tP)t=qpjX0{yoQ7OVBBewc-&I zkFyp~BE@d7{+>NqK_x6kXOND`^AxrxgviFwwe?2)rrQTeKKc ztr}cpldKvjtI1XkZm=mV-%fknTMGFSt7O=8CG}rrJ2^} z&-?$%vI;Ok%C^!OHO#Qqp?%7+)*vaLX-#?Af0kV9V{V&eeL^8I+bTm^Gsn6}fb(4I zc4!UrtfQ=)JZmyMx%t-8!{DD*XNIKfQNHKL&9RuXm}E3DQ#!C$Pu*vnU0m57#BTb(KB)>zm0`U|c5xiHsS zHy|EdXEjC_z215ru(8P6j(Bo|6}5`_gB1VbgVb$S zA{_i;YdC`86044|uI<(&eDro$&vLGmS~6jWJFR)-+wHPUTEyK}GZ<%O))bi5d#nlM zqwKW?FkIhf^@Y~3-C09} zI`%8p-rK=ntU8R_u362XSJqqABvD?seqwMGWlu+}*v~#N*}rGBeU=!;{`L?MkOB6O za54tkBT3SUu^(U>ILLk$!PsCs7Rg+!JrGmTA$Ff+`ae5r5dELMk6e#ob{%rH;r3A| zIV0?62^1J*C)itnS|-`KOnN8VP4%#>;u zFf5&Bzlgy@nq7&{ce?!+F~QUAd=_Pfy`!W5ESdH>)@GLdJjZ9Y-DETPi(O8{b&j0| zm0+eVVnLp3XJ9`$%f61`>}-1m-e7a=fAA%kYk$m?d!D@?_$|*qDf`bk-@X+F!veb% z@vaN)=GU12*@ess7THfi3tMbw5UaJsK9%FYv!(V1EH?}68sNTV_M<3OmfPohGJmiO z5W=mrcR(gxWv3kA{Ih#n;4k){XZ>Fm+IxQTUv{ni6Q9yLJC(qY^>!B&+eP*sLOwRw zvw{0I+S;G2KYJAfmd*C-pp08=mrR?j_Je=Z|Jm#5mWu6LFk>#UyMVB6x1WH>zr!vf z$Gp^jfzM^9efFULW0!pkxZ-a68+_}^?AuTx@3H^ld*5q6Lg2+ddnn!De*1A;G7s3N zNUSKgH=`9gXm`e2=#U+Rpi^Nllxit+jj$_ z9kXZR%X-{?Z#Mm(-IA;Ig#89wxRZ7{0V=2L5D^QfZ4ENp8N0I%{$k$u;i=osmYMkO%Hc?ZeI zXlEr->@m)0bWmfRFCpZOb8<;D81K9XG8FH8ixcAnCzF$8qBEW^Ai>EX`(%=%GhCSL zY{SAX(b;%`_2=xq0{-dPI9?<`>(8k} zc{1HO1v;7Gq*JkEI&(lkvK$99v215EcEU59KLCAmoLd$DWoJ6wDK&E)8?1SjlYlSC zZ0G!V<`2%#%zfuNCy~R>b6)Q2zrj4G1Apy&X99|<1uqpug}J%Wc@Zx0Cg&0x;AUq(yW1A$ znO6P-wmNZ4X|_3!!rUx&TH_X6;;fti{^|S*)VafX9B<50Cjl$|olft`{=;`U~qwBUX2bBftw_d5kZEeD)MGnxN6XV7FGbbjS;IOM!QJWhpE zin-%q=Nbk?N1VsV{H%0xSWZWs{E^h3&UCCqtDP|z$Q*OlB4Ru4?53ouaViM9Kj935 zSa8zWOK*6}SviaK=X}mzd&YU6k@8um!)E_k&N<(acTwv+hnDEP)1SZgg7Xo=j*HG6 znDf>-nX3N=FFEZ9M7it?#o6JC(+BgMt4*Zd?xch_ZVu37(9M!KlqE= zo3M)U?)H_;-`#m+IZSYSqB5T7{!MqN#4n zKK{Rw+$7M~WVZm7NQ(O-Uuvp*KSbzhZW=X8n)?oiV!Hc0rsUJzA1PQf+|Gb_nXX1r zljZgxF(BKmN%5b0hT8%=pd5E5lir!`>306(a^1Cn%(L9TvAUS;p5qgo9aw+v z`;uR+6}Z*VahJJ&fc`9Z{~?THg&U7PV5PeqcFHREU6=Le?k8+zjhhStQs_#IE7!Vn z$x~YA{tun$dN&I0U6K0*_MjWwH;Jd*=tjQ-|HW;IRAsZ5h zoMTSA-EQRkbNAspbk@zpsOX$~4;gf|ZiI2yd3OZg-vzfBOtp*dM}@3E_gxgJm)x%~ zL%Hn!iih46_kZ}hTy+y+`&@G$VDwh+{x#me?YcXr9Q?%_fPZyA?;44Q(Ozm2_>0#L zSN#FrImQVCy_Ov8FHnDM z1^GG>ywMz(lf0&wwoLYxazQ70pY~_Pc{c!APW1|J!oGQ5opQZv0IXlPkpE4GQcNjdR*t^P5aJ%=q>EBlBHHO`{%WK;eAjBJi zr`uldO@bx&duK8^bG$7$O&s#dfA$}6*jrD`My0n7zG9WPi^}nsSHg^_#+x*T7Rq~? zT%Ob3qZpH&^^&?$t$9CpqD}J7W9LxkbpWZk?DY=&Pkq(v!dxiX+sL;yC>EEjDWNY(n@S4Z4y2b7`VGVPX`z7!fxknyFnrDk#e&6V zg*qZbnh|oCpw0~4`LzGbS)u%~G!>ye9sPgJ3q@nDH$U{P1AZO4e?G*C&?(T0C80a3 zY1KnXIIb-ZEqlTLYgdLo|AnbgXwh8%sS87gKBEo^6%dkB6dDLnzA;pSzxC!&HiP1= zp^fk^ibMTA1YHh|!ThK+^fsjBU7@mjZBKl&_mehRE1I@)gKF$lH6Dm+C);q$~IP+pE=nHiW}< z{sT6K_rNmQ6uyW}z?N|BrdDwbH*! zWw_uD`oHj72o$Tri%GSp4lhPSeJq?=1n?4`4LEipT+YDoWcV4(T2F=7VCjD*+^;E6 zXV_-2c|PnihPV)J!{vQ3+=ceIE_@epub0BJ>AWw8x8gc>C0wEVw_OY8FmA37&%`tJ zdiYQJzo^I~q;*C|9%I@vAkq=QG$wK$($ApCC4v|RN811DKRh;4I>NupkVq?rAVVYR zkecEm+X1VFN1AZejfhx)Tq7d~a77*!d5ynzOr!()s&SE41oy;822+Dgh$O;nh$wWq;MH0SHv%0{F5v4D8?aEBdG+?B}LvwPMaM0k;t)>NIE05X_3}sexygf zLH?N$=?M2VGqQvBKPz(RD=yPWCP~0EBKMMQm=kd*Rc1zh?&sfgR^%_d(q~78an#L; z+=w`OZsZ~}hP=oT*q{p{A3*WVkNl0j=c341`o_hPHxrw$dE(+kHW~n|1jQ;2&>_hM53`K*$`<3Q*>kG^0VL? zk$xNe+crnC=ytb6p5Mb>7a55cV{zmYr1vF}MUdIHM_LiRu_ID&Bb8jFj2MgEkrp)I zdm>4kD|;gkF{j)YIfHNM{z#$f-{nB$Ak@V2NXLQ9t|K3j#aj`%vmHb0$a9$b9*JDV zrM@!q^y8ovkpUbU$0C;B%v$jpp%7Lpj;*j_hQyGMQDAM@>;l&17WG~ zIZl8D!WAZq%Y^L!*2{&b7%;977B|q#g=t`TtAq#e0a-2dz~o|$a07z(Lg5)y9&3d= zQy8xZxd_+S3;Wnpi-b5FU^fW;QTJ>V%1J!hBpfEmeY4;|!P+9+i{;=}VL5i7+k_99 zFck~m5S~#Yq_T{*3j=6Sb_iK4#!}(GSmNvyo&jjvC9K0{YPZmynP-{sIoszR;S$}> zUg05{)_ub1c`EY$3Xp*VLJs9bxiA^K(}O}E_#}sf$GE;Kgjg=D!@^q(vMYtBnX()e zK1QukC3HnLUo8wJrsah2E2FbhLgC*6qWuRtfEEekpn04ZiWxzV3`F&j5xgh!9gYrk zLa{z3@FioJNr5$(qbCN6rYb1byW_I9EHH$*=JG%dSn-O$`*d?F14lvaRt4?>{azhN zK?t%Ya1Mb}VW0^$)Y?EHrT)6W28P`010S%mivqa-kQ)M-7;~efU^Rv z-qw&a=VAEUPt3vFxWBlJAgh7mI4pN##OY922aD|<;V2fHBh^a{WJh~PyTC8^Fn(h`Y)d0SZg;p#=mR(CI~iP`GSay z4wbq7e>=Xu>t7?G+uBeq-+tELGvqt!CI7V_Y(;bWP?#<7;gRqAw?6tCXyN1k4G`6aFD-&cM|q&>u}^sbj;o*PrBV&ax$AG1Ol>^}Ub!)cwE=4$meskXr|DIj1bM$pH zyZXQR_8tm}@1AF*(W42g;>UluR(l@kY-0%1EKL2?Y?P%Y6 zhH6nlI%QQqAi0!U{(SACo3HT6hSj)-l31BuwLkPq6JBFFcI%Tf9)uxP5{!5C|?o zcnMC?B%v|h-&2I^0BgxYSG>VfgqMJtQibj4wx$VpZ{+k6-UR@hA-n;wog?fe6FOJ; z>sb+F=kFo9&lQ?aP}t236xD^oq&pgRvpq0Z*9pT`;RtjbG9yP*tu$x-p5Y_Q{ z;XfKZwV(rST@uFNym?LNL^9%ap%Sd9f8Y=*<^h4bDSZb9nxKD-3EWPk#-PAF;Lb6D zwlpi_0y9uG#s}UfJ}DvaaJt5pGlhRm4z#05O$>A+mTyYn5CI!g1C5c;rv={P?@JHN zAz^cRUb72FP{il^aVCy53dP_j7t11e|n704Q?;$>8@)5LtD z3DU&2h$+*>c`#n5iy6?kGQ?#3D>Frzel$xQb49@^pvx_M;bI!wLyq_-`kk5Lc|xXg z#Sb{)W{C<`2D8O~7)Q?$HzMSoD>mT*n)hiP)0F(xu|1U5seNz7+b)#2y}9wAh4c;Y#rq(z8~HWu#ZE7N0=+yGFE- zCKQSt5Dl&s%Q;`yi7n&7ro?O@l_K#8n9du-N#sIq6d!<(x=GxO|Na&+9-I2D;%k)C z+r(HrA&SMfN3pMqZ*xuT5dX*4xKnJ=jSEvO1vB3xu4u=}C~hURV4t{rN&w;ilkWli zipB91FXB+j&4c0*ikCy;73g$_#S;iSkBT26g{Tr^ND4Y8_9goDxcCV4s1u@!Y~iH% z(QOK<{=shwsQRM_4m=}%OL-p&#|FRIKZE{NlC1imE30|Q?c&wbel$$ldKoAqM9 z&Kxe{<~wAx`l}w45a~x@PTN1YSEXGK9=}UPq+fuW)8Jq|e9hS4N0bq9!R2t_hXvn9 zJ25gCLv+Ka;3X{KrUW}-Fqj-%hmQbxI{4sAgWF^#1i>17epdz)ex#`izJe%ub?_Zfx;4R< zF(NJuW-~8e9~6-hYzX#h!2N^AV25uChWRr$2X}}K2js0(t6PI3-wYrzFQnku5$r+A z(9Yl(gqCH&k2p8>1t;OGy+4@$1YcwDO#-jVgGJO%2ZJ%J#){zE%=Hfkn-qcy23t&` zD+-RGOg$NFL;Za^_zCFO*@xHyvU9@N;-wL&UpEve|^d+a&(r0{xKiI zSFWtU=a?l2A=J#43)!>g$R!Q_H}bM<75(E%rjvQ{bkOekauL}`3*-xML>9_PNSpKJ z)j%+y_7=Zx#{1xiN{qiNgzXNh#_|oNaI^jhJ<=cTt56SHtgZRoCJo&@& zC+8&;kL{2pR?3Bq=y>JhWUf`o|KR#uE&mL!^qBlMHo(W_N-XSZETzwgk@XCTln4Y!c#|WW2 zm*hyH4G$P43`_Mdie$lhKluMK9`rZ*m!|yN<@9m^zI)qK{15TxbM(W%rHGk z|0|mIueV>D-{BBHzv+p8YqD25v65en!`!jc4Jed4@8IltXBp;>??2C&@1sOo=}!kS zYyaXpjr-Rwx}&bYqY(S92pUlLmiP$$v=+mt-cLa+`TrOf$}g@Y+U4CD^ttani}c|A zei$o%&<*?Zk2*3i{p9w_e?RIr%jvnE9i;v1;`V%iH}Jwzn71!ZXL8dn9WeT(kNH$z zo{Q`GDlc31Nm+S zMcsSbQR#p1BB#ZN$D2`D4(j6H|C5tg?|k|>Q`ygQu_689HbOtYYysl?RUXN7T^gZA z{AN3<&aU}LX1g8ZRQ+x(1M}~jLuvWpVTP#P8^f#q@d&1gKP_VJ+cS!CsP|A@V}9O= zO~o(!kj4CZKN%!_k{+kj+?nV9{`Z%tyZ$`LU;5Vytm*!)XWG~IcU-xm1Owh-(caRp$*q>AEH@@2<5o73>AKYYcWhX!_hWen7F#3 z-i(7EHd6S*mMA;FWU@9!cpZwsSmFL!CIW&*gk-$10wi;S&=Ug2MB#R%9SMR+fj?Oo zy}Y59F6-OSOF#1=wTy6q1j=M#KCMTJaD=H;sxZBRahot1*<-r!ht7aaXiiU+DMV4A zW(mE)_GSoWuxfII2XMfjDRe{%J4+ZorJ+tOKC9x9*Oig|JYgVI(>&qZ4eX^t4FuqY z!bafYd|^Hq&m!T%T-YPR#|&YX3RfUw6$l@w4SoFx;%8S1H9Z6x`nQ=DtQIP8ZY&fY zBsg%LFbL*TkzdV&^a)Q4Zzy_;iEH01EMfk*MF_*2+bVQ};!!MUh>%N!TCBXc3*XQJ zmI`;F*4rtZX_!I_f1`vh6Yd<`P!LZd_ z!d#4F4+}+VLr4BdFi1zf2WN*W;Sc1|$Apd&6f5CwC?z$*KzIWu1r@U3DWUFr5pTVh z0A9}uVWQm632))7QY+kychUtR3|;7=&<2)7oshs{xGa>spkkx<=1K`0y%w}>^}u!iG91QknfzpPY^6;29DvtJu48)YMmX3!oVB2H>?fJ#%X+A;FdN((1GLr)+%iX)U~2^3Jky)aC6{UY`8W3=JD-Ik-$xssbup>xx;4j#BrGbNdAiDy!xRUG+JOp*HEHDD`-QK__>{$B( z)yQb}2a>T?Ef35Aj5-)7A=2PbAc%hEaNsAc!RLOyC_v`DX(%e?x7c<$wkV=6^6%F9asD0oDax ziw=Us^k!UoIdC^k=heVPpw?@FjWjg%f$@xaqQoP7@BPGM?6lEhpFh|!#g~}<3>5F@ z(1{U01Vb4tw&%83aSAf-A>t#9qvFH|uoWLBF2oUixHy(9ijm?-@bgjP_g%R##c8mm z$BJ!`MT`?`*>}f_Ww`rH5Z~o^nJ7Mrtz?2&jHmEqaVdU%iQ=1d+Ec_kC|i<52Or90 zaTB{~iufQQebdC>$dXMHcYY|+=q*CUpCLA<_{kIxQe|a{o%S`Nwd(`DI!9~?zhS0W zjWyUT@nvYlv&G-ws?8A(Qc=tk^9FKZiUQT(eDQV)g@xiM^a=Ums}0G&;$&EKOT_so zaF>cbL1qfX&*5k+_sbP3OfiYXhm~R$m;P$820rK-aV@Sng<@MQan^|?2tC$|H({Py zBzoN%8ny#4d^U+Wq@-^a7qo0d!?v!0MIb&1!K7HM&S+@ZKK@(6x2-J+FgwLAyw6>t z%SgLS>@&WhZ(EFFbg%f0$%QF4#>V7;*a-e&xp)tS!y$1IYOe}$4Y>PZF$q`PN^u=+ z%282<%T*=bP9n=OQKnisE^clxMHFSY2q(qQ-~pc!mxFem7QdrRI4eez^>t2cjFP=p ze63+NBHm1aaZ!whYgi}NU~_d@TnngnMa&}%_^S8{m|MMgH%5Ke#RnQ3FM@LkuZRvV zA!fIK@Mb=`0l`ER+XI6YFboC-JL0}LI9N`MS8Ol}Y1PnRfc`Qr_#~+^!-7*_7>o#h z#gJ)auzjpVYj+BxsWHI;bm3!z^MEB+%o zF-K1fE(b7~5^Rm5z|>$o^8MssBCbv;!B?aP)Uq5;lxe|M$;@nnb7^R%2XjH@GlJb{ z8#04KNlnQPHbI&?BiNZ2$_b7_%#j=H1BrQ7u-&PKjxvU#ZEo-`C>QgBWvE{Bg2SmB z=Le%+Qmp0&*JA{_D5xVLS{xjI1GAA}3Erdy!KZQTS{A%W6}LQiEdbaMEZPyE z_xuBr_Uho%KY|wrKYg5SG-$KX*98lR@mL>RhA^Qh_$RK08-v9YxLSiViC)?qtihdP zOYoLsT&=-1R1n3%Ke3oC2{r+)*&cin4pC`PhGD)lcnN{Qu3!`Pkln!ys1tjFQ#UXp z4lV;X*%z#(Cfpw!%W+*ET)&{9J)Mnw|4^`qJ*y(v42s8*;Nk)BT7s42R~!v?#LBTM z_!Y*u$AU{Si##5j#x7hFyqC)3MDQR1_H4*F9w_9hF=$K%}DK1P{di~N^lO}(beEPSOA4M=?dq{Flhl(iV;#N zw~dtQnMRJ1euxKBljdQ#H&*Hai*=loh{|@nbZWnVBbkoYdZJ`}02V6sV=y;K>V|zr zqI4M9>J;e@AlRwWYDC@1(kv1lQluvlP^3yP!k0{wT6`wqI`;Pez|y4U7!_qoTM0?b zlD=b6W=n4~p~;b+m`tB99YQXWD+LAzFc_OjB={VuJ$9ROrHKHYdD1Ds)A^D{1l9uS zTjDqJrFaxii=&1=71TEX$;U&{tPTv20x{r8`lfu9BXEvA;&T z6%*+~sS?TGD z2c;%3-VRB*xVu(JPs<`MU_Ss$R7!Kuq#l(j2(qb`enlI6OnTs`hW*zWa-3_VN!U4^ zl-|Qt`;@d5hv?JN-K6QAk(yzJbWU20uSBhM1rf-3=`}j+3sNtxmpbWHpwvs!7CNuX zlEIw&s?r8ZruEDW#%#SL@T^A|O z$IGd(dnd?oaKk6cU$5dal{wk6Ch({#@?Ds&&XWat&^&o3O2zr|BRJ75ly8F=mM?d#Z9txG1N~ege;Hznm6xDBDUhGp zp@B8Ex|NZf{3ZsXE9F5TxU1#iH!=m4zd6&M(c)+n$x${YS> zZGgNW(~;Db%0Uq0UGj@a4R_0>L;;q` zalgs{N!2ie_Q_x2$FyHA0Xiy|k2AzRD0k(oIwZHn4D7Hxm@VOmoJI>@DgT9OZk2qo zp;DDYyt8BSaw1-9~-y7kJl@CegjC|X1&_TJ9l!aP30gmZ;`Ca(m z7vv6*qw3^s&8Sr6V^DN1%R}JBUzP8m$-XA{M5a(L7tk<9DSx7s=%=)R$`GwQG*iR$ zDivR)fy#KA&=}?WzOW>e#_SrgiVnkWh|)e=!shCB%>RZd@z9}$E6;(|k5p~~mmQ^i zK_NI=iKaFktIVK;8>c*jndx|C0Fc@Qr3G1G6O~cOhZB?zSRqYTzQ6)2Q8|R3bBgjG z%oviC2xxM$GJ{c6in0(Vf@w-LlkqgA0R3;e@(dt$hT^q#N8aK0~6 zIuc>EM46AN`cmZ%ra1+Q+=!8}(uX*X6-s-KrIpG#7RhR57eO>@lws(b3zfD61+7!e z#zEYtI;C@cDzBk!+o)VZc)v-xA7Ap#N@XVvzo}eo`?e|1!>KD)s*lh@DaY8lb|`fm zpQXxaMv1$W>G;;{R{o1IS(&nc({QhH3RlW~%7-}L?N=VA<||ho#IyCF^89TQo>EJu zQmHBv@D@6voc^9eUs2%`Rw+|S=BQRiKPTcM^#a!AHOg`PC{8HZz~m>Dmk=qPRvyNT z{fyF#c#N~k4FdxhMr~*t#4xHG=;sBcB}ZhP(ilI3OG-=fx-TmqU8T2IR;SVYE6Q%F|f23z*qBwL81pc=c)KA`{eJoJSMY zL^hTLwHlS}Wc2`1K(4=DNd1Xwe|n24>Sur}Q`G{DD3aA0a^_Ri=~g2=o<5=Uo2F(! zZ%J1#^=68vj%>)&QMV&#$Wr^Ev6!K@hqsfX-iaadO!XFu#93-**iCcPSpZ9O)gND{ zlTtUqhMTW$W0bK_?MC0fNDV_kT&(7UJ1v{b#XY4) z4M8S9q22|p>7?2MpZ?S87AC@H)aLKW7%DvhkX5UG%x899eH>}{1@!?|$3^uyYST;V z=U)b}Q0j!9^NKnb2F+Eq3ISTZ+5wi?b@e!jhEZBe1a|$j=R1p-Cf&d^b%6HRb~=4+ zI$EVcT3f!&!CEbn`B?3F=;K4R#`qG%Y3V<3eQJYIlaA0b(ZP(=mUm^+qjh3+jL~{g zagNn)h8;Ri`vw(iyf%xW&IBz)c{fq3XvSPw%bUviu5|{WP1Mq8Kc;G5z!XW+uD_t* zffRv#lA>Lw|C^@04xKwq>%xJVuI(e^H$zKY#r~<88rP@Rn}%wJ)&nY1j`k+(*O}T| zj6-K>fAQ(g*6t>db&mEO6UBL26;{7_+D8O{%-51(GcMF-B8SP>ex|Zoq_zD-z}aXv zl$)hmm{y@cdlHuJGHoIjvn#Yj@bi_Lh6&s%Z7*)stF@kFb`)xVmvWhE?=u`-r#(m% z^?J?VVA!C&%VxDv8_mdMllCcel`Y!Mw3b`7EW#kSY2V?RQ=&b{J-2HM$j9BGZA2Eh zQ(Mw7Hqx>H<92J$;4M_9W#QSnS1YIW+NYH3QuB^7k%ib+ExNYD-wYb=uwNpDt@H@Ibnv-N>GNRqKLJ z)iv#9W(wD}&S+Vq^u^F+`{@B}L8En(>UV(dK@lIQw}zS$qrZc_%V7Np7FVo(5N*Z~ zy(8+fIQ_m5MX8>*jZIZQMa42w??#0?O1}eVmC^c8rnh7CAkE}B{UL%#$LoI{rFYVs z6Ma2V|Ay$s1U-Ux%OqXGr!i5V(x6|{V^~~M_17qIlJ&G~Q1LZ|C(2;9rmU%=cVOHU*&Dq9aD49d}O1#g|H*TC1w)zfIXXY2J?*3Z#jh1xn- zU&hvzr=NM7i&lReUf=?K2SJ7T`c{-~i}cUnx-HhP01q$K-(cQRpg+YCxlDK28CK|7 z1P!m$(kEeFwMKsd-`PUF4D+hB`d0dt^?C%;k0QOYklsmO1-89OKLcL3S?`de z;`NgaA9R~8qGu`Av&a`M(WA+t+M%yOKv=3@1z_K){|P~6x2_NwQKt7odb>x@1F6}k zw?KEgUpMeMI-qwXiQ}Li+QOl)-$E~1p{HG9Z`FGf2vDhCz%uQqt}(8!*0YXqt?b z@3W~ITaW^!8XlhP(~M6(KZ{k%qO=R-3M}+8hzoR78`x&&Pt5R*A+}~meaa%Z=wa_zoKV`8+F( z-OL{j8yeK|BSr{@Wu@`e6cwYJ{`5!HMj_7G$Be#^t&bazu@Fueg&@`^jSQCBDdPdy zOQ(${aP-d_r3|;v8Dr>nYmJS#lAJd>5$kc$_=3o~I%6M`?MueDa4Ihw7GvY9#wZlO z*Nm@l3#>QJ;n#58n1?d5pLv?tl4!G@eXzfo3(04I*@dq-#(b6Z*+J$GaK*vqabza3 z=HtY@4>en1tQu!F8OpHK^gt_yo8y_5k2Ig+IY*iOH?g;xP3JHyHD3lz8)r_!XllH< z1mD?sa|xy`6U}>Y%1h1d?m8XuP6kw%?>8ezq!Am;Wr<6Ou~O=4&Tvivj{(! zIp#hP>$zql^a6QiOH}Uj&9<0VEii`+k+7PnW1nASE`=ht*sLb8V5ymlG@!sd#sEL;-foi)uW5t4#3QC3f& zxzW}PI`%PEBN7D0S<8{Jjkmr)GaYYrBQa~Dbr15Q1gjgWrb*V9Fl-a8|5Bb$u~ZJ| zsa6bztjShmYK9c+L*8|&^%~QbG|OS?oNf&`!QN^$rV7fme)=JZO-m_6&ur@-jL>qd zMTGdyw0eM)=2|167|pi2!z-R+eT|XUT#FeRvu&Ad}}G3n?+Ve zTM;XkP3&Mxt@qH+6j=EU>4;VpAIJ);)z>QKD_>C8t+Li~-mbBJ$H1b{D!@`@tyRvD zb-m>d05`SXp!nKgO@x}h$=Zc2(`M@^&bC{u_OLRxS-&tYDYn)TIa^}I;?}vtiUpi5 zwdO+!*=eo9j%&B&VM$eH2~>c4tlu%E*=PNM(eQq&C35ToRuz8c2d&Axr9;+w0x~MB zGq|`NwhSi3l~yi+a7V50Hc_cs&EO>;vwkG9<+xRY!BLI1irY?FP2qcND&yP(gC+66g>!?QD?lT)Pgr@@%^aoP{~|P=up%?OTC_ z=GixQ>jiqo9s#gls4Pn z0eNk)8~>tUN3soqPO%;0Gb^!A&kSHkQjVocsl5y~#ZG%HW*WQfzI-dY?OG17J$48F z_PurlXYhS?vr#GrB<+AY%k53z3E;I6fV+H z*>YYZyhesW8aZzN_*f9Hkq}?i3A+y@`cw8U7{RCQHh}ME?9q4#oV7*f_O-T*W5Rj+ zBcxRq>@E;=>g<-}C|$CAXSZG0M3GgXz&ubF2i$I4{D380RF=&W(2_k#HaHJb}N}1gDI}oZ#FhhCmg)>cy*kbLghnjQxk>|4;u z)+D+t=W%Eo+0JAPyK|g55JYD>_4Giw&MIbZvz#9MDRZ31&~wgpHhvJq0^}zcta(mX zfaC?vBv90a&Rz=SeCKDlIE$U+S! zW<52|gRq59IG4a}PC6y0xP+aFWOAKxo?dg^DvrX1RhTM^~8jSDn)^LasSwIR9LCdQx0Qx$$&${oH8y6VYzB{xAdF4`31w zbhBtCW85ydc@1(4>B?i>Y!ZovxOb1`5_Tu@-41ihAO;V2XX8LW!p-Jm9qGQp88F&C z!(Thb{R_R;Soc;QKF*DSA|3BO2>WJ&dw|_$qT2$2SAx5f(7ws;GIrWTH;?>~DQ@Ei zxrDoufm*U#$#<0E&f?rmbuZz;InDhqRHbzHC>{yZ-6dI|TW$iJ>P&Y4Wns445$tJ( z`z0k~j=KtAex`dG-N`KXC;o=n?xltyt9vKrRrA~#P^P-HjlnRc>o2hSl!-up5rKO|kl|ahE{#JmGFf%W~4~4w!n{{WytY z*4+TD_^i8ufkmy`X$-}zI}4wc3vLPldv$Iu_HCEk9S9FDyUS4gUUkP1QE|E{h0V>j9x!xuilJH`ev(DQ(xV!ZD{G+UmC&OFvT&n7;^%Oijw&Rc`4 z(=aa?RmgBJjrMV*x1Q=crRiio#j2tHJI&fM@=%rYl44zju(erYOc3FhRf9RU=7Un8kbQecu~w==6N?^ z+L`Bd8VXS0^}>RDp?3!EPrmm(J>DX(`DnISZyUk9to+^{n!0$V)ip z#dPv-JMJAr30>ngr`JB=J%vQ*loyB4=(N|I(ajle93D?+y|vgC*LpUm=y}fuLB8NU zc)$OEi(WtYrkA|7WXfFj-hqUE#cKrmdd+*DD2;mWcZ%oh-dDiGQK24K_e6){h(G8b z`T%b4fKYRy>IQ~fd<+MLiV%(r4hgKB*wAoHz=wq10Yd0O@)h$! zrC2u24>cp+enF@NNm+jA8S3jrp_Bhd*m(!mbpC(b^PF?XIkz)+?{rs}ZdF}c9ZG3S zRjXR1O0}wH2dzku*doM8tRy5hiJ4)>CSt{k6)T9?gb=^`I$!_){t-#;&0WuVp3mp~ zet+I?969r%>LSp|kGf4ExFYIW?Z}svQOSs?Rz)3vd0idV7UFMhR55?0FzT(gEa9jS zp&RR?@`yFw7*#J!l@QgEk=V^q{Sn!3iTa3EZ(Ed#7PTm<6$ktFsAuZ1lB3T5WWti; z&yA6%v@7aaRDrvrE)b2rC+ZpwXnUjn1rpj9^&z;_{wN!G`GKf6z~oA!?5NZaMLhwm zbvWug)3!&VOe7~Ai+YD4&a$XEc;Ot6Y5;+EB5E4G8Kr z?Z2W|9AJN+!eyYnEpPH5yUMW?Z$HPl`e6HH(54~wUz5NR>|f#SJk0((bk_*`OAJwr zv=4)r9%bJP7@la)WCAtG{v#71W9*-{Q!xZ7V*WMR-WnoxynWq^tYmv4*xE$4~ zdws6WN%q#vqEEJeXQSS=$ANfGwRc4Bk!FANmI+^wqo@Ki?2Z0nLEGyC4`?M z#R`xwd$Zwe#`cDc2raYcVO+A@K7pyaJbNZC^ZE7!0@@1f{e}tbLGlnht+Eee-h8#) zKN0}UUXSSMwf3=~KkMxKn0#DsKh2f1!CpCuve&*AXSmJw=2UW9>?f)2x7tIr)!Xbx z2s7MnA4?yw!#;ozg`IW}y!|fwD;#{g?M_xtiM=I6)n0ovm)bu2WJJsR?Wb{VJZS$N z2)NY#DiP<0?0X5^I&4qD4e_Y`gC}X(>{FV+h}qj<;(pxz;4b!L`}4per|ioZWISz; z;hitHmjWf7wQpmuJ7*tCC0=2l3#E15{sNcw1^b@t$irT=PlS!QWUo((%oY2~z#CWX z6LICbW}m`#aozqH%dN`(JIu&U`we4Hw!0co_S#>gGrePPjkQ~i-Qt(HgiIxqGRD#7 zc`Gg=U|7;@U(Hf#fdk}5l;;0a7PAS z;3FK{xB^Bx&hUmLI=*63YqVo?Z`fSNam)_JIG!LHDA{ox&|;jUB(@fwAr>akCph9j z0a6@QBtoY;Rxw02$r1Mo#F*pc6qc~#8ASYPj%+3~G8{W5QRq5O5u%>yI0Ay4LR!g^urD2X1g2$3r#8F$_LnvEyUl zq9u+FB(p7bl+)uab9Cm~%ypc{Z$Hn`0|%yjNAD_$OGq}urYjvUk^H#I@d4Hcs~z`o z;;nW324h?3IE++&oueZf*7c5;aTeI<_|hMF*iDWXA^JBvx`VfFb^Jr#(>6yv4#grz z9R{VhJKn_kb%*05&E!speHyvza~uOPD|5^_V8twCDl_>f9baI=c*-&5tH`6D zcJxLKbH*_Q>yWdK-|_i4=a>}>o9oEuca@Ic;PEav<`dI!(Qz1irOS?MoXl4ob(u%F z>X?bR<(lI)WSKV{zmfP^<#=-Ic*$g1Du~T5Io2^1SLYevo*H03C?DWEDUj8p?4bU9FIm~n6nCR z(&5fAl>8%|&47JIIb)DwB{~BTK%<>&`P~@jZX967I<538$<8GxyvIB3V5$?GZ;_oj z(fJVES*mj+<1dq(j{$K{cK*ir>{Mqwny6{cMku7xod4qWn&Di`jxyajzB4$3Gsq5| z<@^QL{+Z6}L|xBvCL=PM^|mUlXrBQo0UTuv@WiPKMAzSr3a-^+c@`zOLUI2SS|aM0NnH-S>; zZ}f(ToDU-jIPAQ}yL8mK`&i_GjyW6i5tljDJisyM7qDI@omcBd9`=;;dxn}%J0GIc zFL$<@L9`qd&MKOp^UmFfg({sTj3Zxk2Jq>>lvTD=3K|c zeBIds%Jqh`J|QMIohej@)y_J|cyBvX86>&m{017Z##su2730doOt`=6N5&vxU3ajn zigPvR>=@|!u?n?;>p^lr;$45iA0@b&JqzRDdKu@?p{{}GDu=la8@6Gti-=7|x;BII zk8-_(pmMaU4U?KluGbh?8smBpnO(ALJ}&y>TtBgmj(5FB|1i;2#2`Y7E6CJasw*Ad zce3k0TvMmGiqJ?*bD<6P;hHKFI$o(>13mDMIa&@B5ndM4N zjl3bVT@4v{p5xk#!O=WdF7B@LU8She7P#6HCX?-I2)mQxa-s%Zz|YSmqkSce$?5*cJ0!Z-ZdvySk%nT;Ynwr+=j@ivoF-OXB~##`PlS-&)rLs4NRz zOW{7(yOwj*ZE&?_2ixdc!ffqk*ZST_WL!BM$y;5$81~ubI*4({cGql17K&ZBIe~V# z8nB=3a_JGC^6;-U4?)arLL#&K0f5?X^s5w zh^sC(Jx5*j8QMAK8jqdmahC-npcAg?jIEt?jUaXXwChp!ta4Xd3W+l=fzslfYZ--0 zg)0Rv`MgWJOn2t00>Z!O>V(AUk}HaJcG>j-9LiPK$kl+iu0Gu(cew8Ai>SWJ)qpXp zo37=U9^Z1+-UjjD+Q2y99ajZ4ZH;Rs>8f{Kx6mx~cQ+=tBG%m#;dPw*XkAJGcO`hw zAou5-@A2+Law`VAH*!o2ad)R(9qKM&YJRwTAu8t)?qQH^Bi*lKNtNi1-w5*Mz8@#E zBzIS1X3M>Rp_XL#3M6sk+%1s#OmHVbWlnS#Fs7Q~{@B10+>0+p?l;-Jj4YZd?*GUt zo95Q$L~fbp?nR1Wy1SpkHtJrAoMnc45;~7e_d5(o&2%?J{Wi#*bKM&- zh@0nLGm2&EzJqn$Lif9X_Sx=6$P;qh)l7&kb}!~IUE=-%ntG`_jbnbf`}YDwG47?% z7kTd0A?j9l9PP&nx0{b~rQ4Rn+3&6_j@)65`^mD%9oD*U(|s1Yn<58X?><19$Od;m zW;8dtcftQ{c0a{Fzs3ClR#Q4g4Lb;MC3g?;?81d?x;HoIZ~Os z;bRbE?s5cjC){r_xN^!ZnBh3>*5TF4-KSPSjJf~fU_a-MA`z^@J&f4HN_VGr$PC=K z-H{(&bg#l@?y|cQi~K9@HjI&7b^9-n5n;5bhJTycP>BU+U~o(?Fa;yvGSzXZ>-6j4Jw zozW)`^<3UbrRrJyBJ0!RXAF0wCzW1wl&2hwdbDRVv4BaQne=~SJiCC@lRZBopdRPh zfC>M2Pa1xN6FuAM_)Kk=Mb#PB2Ovg*J96PMkJPa-Z6+V&rl4UmV3G|>X7S+19r{x+`0)Q>ro&tS9q3i zGOzS(Gej|-4NSSN@#GLyu+}pYuYy9)S(=0Op2kQ>Hh7jYrM%H&fzsOSY1x8h>gh>1 z`Bu+#=;k6%4GU$vrxJs>Voxj?FFQTcIfQq4>M>8U+w(8zNQo!;|rnFmEt>S>86=CEfplTk-JW%M#fJ!@$I$~>PlwQ<~2*oxiMQy+r)lt&}< z^t7k`ey}c&8`aKP&tDtaO+Ecc&#Uk}06J3X>BMJr!L#CaBBfNc- z$Sp^DLzvi(^8NvJI@)`TIPxU#^IY0vynh*;l=n0IamRUIqy8N4{hT0=iQXcF$tm8o zShb~kA7E)r_Wpv2))enCJXEK8XOdK(=Cz}uN%y|UlFINdCy985cMx9nncm6Rg=cx! zFfugD`wydHv%R;V+UI!NWk+r~&->`RkuUSTU$M_G@HW8~G~4?z+JhW#4O6a*ywT7z zOS}%GHA}s}!!0fIPA2^@*V_&I;5_e9@*wiPOJOuucqak0uJoR!%3I}a4YIe!dkd^& zt+$X5wb1(uCL8O$v8>1q-shPw-so*WRkGRp5Jm77?^Oakw|ckZ`cvfnmm_PtcPggb z#oknC@txj|Y}C8FuP_e1+j|mk9Z#`jQr`N-V{*AGVd9*X~(_end3X*t&2+bly@#Fq0`<6NRBA?-bDOy);o&s z`keO_j_V5V7&??n@8>9QFL)newCSSP!=8NE>t}zt;Ztgq|#$kUDUWs$2nz&8P5 z$ROW#)M4?yDNxY~z8?Ymhxi(z5FYC5gjM1&-~F_!BYe4(KO=qnS>B_3kJ65h_T?c0 zPx7rLt#*v>o7Y&MzHJB##`$Jp^gZ5}!45sqm(OH(im%s@$PZI}lWdV6PWFwWE12T* zL$6KswZrl}&9@R+d%ABw!^#=Hcq6UdH=EKu(`N^p$?}!baLn@g*U6PP#0x2_P%z}Imp)u?X}#rjg;2t+E&eBJmobA6R$ zf9LtOGXIe8i(7-Dz;{1Jt}A_wKs;CZ-k_ph;~NX4u+~>e{Zied&9RM^0LZzAN$e>4-}N&Yn6r7`|3U0jf;O~HL=A!=<kyir(_c0|oFz|B$QkOs*REP71{8> zJ|vAJ0|o3^qXJimJxmM?MguuIAea*#6G)|+85?-{MC5nLfilJp#|1i|dYlk=3>C)2 zfC~XePMw_Mub|KJ74_tffm)UXPLm+8Ea1bwYnp#9a1x;8Q@L6M>gkNA7nj@VFy# z%hQ23ASKEJt!dfL1itu})f)H`g?B|@KiY%yfeYo}rh%{VhPfEX2R*+ONW^;na=C}D=jO0rm#vXU zA0Bi+i)tWPcnCl$xYz<<8jQjZY;>>;C(EQ@Eu1XJ1pmGsxnFY7`T?DOu&it34&#HH z5+mPD2)4n;J|#E{9YktyN*=UT@FRAjDZwd#V^f1pNY81(pN-t6;2_}dj9?ryh0}vg zh)Kx|mf)+G72J=P>&)O0EVE|^U#6;@6C8$%_uOC+>c08GKdI{$1V6^BZ(;CB20n9w zW2gWZ1-ouw(FR||2Wx4tbT=hHa6U}^@?bR3V_t9${?GZrZ?JJJ2(~~0wlY{3@!YCl z8mg<+!Ir>bYlGk7SWp=JDh_c=Fdi464M7L!>&Dif_?a;&jqtl4O9eMU17Bbf9Xt#8f?cH#KmAYI=)N6{XlG2f{SS!t_GW< z`nVQ+6KmER!Jp6`R0T)k_sA6E~ED7oHp?dUj38CR@VOK*Vkoyk}O~N5)SZF7t?(opoi;*WW zGV~2@DWgIYn5;<*-C)i;DYTo+jxnLPh_)Xa+Cvwa9BPUte|+c{Ow}iZHlTZ&81m(^ zOhXqSawdgZVPrZv^cyA-Q$j5?mT9O5V$!tG51hW~p$b9}GeV271DPIr;$Hx%kQT)`YiIhd7)R&MQ%Ai^f?1W3q$YW9hM!M#mmeI znGVxXg#`0lOF~VeS*@XmxnP%t>Z3bc9$JB*IWIH=tC0NAe<+9wLIq5Zt_b~$C&{W% z^~}f}R)-$JXm?F$!aTOvPzAutx=<`A)%wsH%BGE>8RH^9+!Ts}XWBnGE1g?^{!x)OR1 zKZvU#fj!){&^xCicfTHL564#(>U=$NlbazE(Q3Cs!wDs<4$Y(ezY}WsLF9Kep(o*z z?}n@Z?ES;>BIW)AHF(-f*{-g*WMxF>8PNFhWB4# zZw*f&*L_6zJhS*C!{6Q&9|GJt;Y`5WdErJ4A~%^IPGK%&LD&bYkR5&l zi?p0@3H{Nc@KxHtCE+It2U!~4%B8j}JO)vAZnzRNuDtMAMhNo5oz@@%2)ARVcV)N; zB5qZ<9n{pCa4w3Twc#4DyuxscTA%>oqp0aOgqtD7+8B-_<7IRB48`S^@Y_t2Z4Ezz z;ZITcBDp`?!(UJc7Kh_N=uSKy?wFI+-s?f!6E zEU^!UX9De%hC87+I~2~ND?bumjw9vK@Mh8vkA=TQQguB1ABoo|!pW%jPli{(lAaEq zM|xQvUI@B%Cj0@<^IZ5H+)FCLDiGB9@O$(K7s6ivQeF(_(4bxl$6?lfC0vbzz}4_# z#*nUszeewNBfR_|C{=hRQ~Ni=n;ZI(x`;sO zNzrR^LHVNx5)VE#y4yO={^&Ea(5ghAqH)NGZbGEc^yr+ik>6!Tmoa;s75y0gJu{U6P;;X%AfuljeLp4Dg6Khn950L>O!Jx(J#K5{uPlmA=?aP(y$lQB zrO|&-5-*GHim}`B=pd8pdC@1@NB&BF^mmw%uZWH#6m(^D7KRS1qrap_SQEYJ8Yq9X z8HS@UIu2Lj_0ik$VAv47yhr4_jnRJ&k38(AXdSE1EzvfbgRRkKa-z0HpLi+qT~YK7 zGz7)b`GidDh#t&q-x-}<7Wv(-=p0V%J<&ljS4yIHV%@qoy3I{cs_0c5O9!IAA<6w< zbP?j?(&(O4I)|e39%p?s1@twfz66pfRWZM<*~yY^3p!pQ+4Hv`9kj`&}D$jJDU9Z*FhGKds}l7; zUV7wSf2=}m+9QZ0vv&_1^Zs6y9QpfwuYN6YY+Vd)8YjHyZ3c-S8GINbZY>j-1iuZm zGgdUu11S}S#Db)XS61IM^!0XtCJKyWDm45#o6n=p9PM5d$~^D@wJEHkc?7hcWg`WwgpHJ@6)jIxPK>2$pf?a$%ApzBe#F(YZhr#Rl@%s)BH@+NLyxp z_9OnS^G{bxE%S?eBCV47)nKGCH@~(e(zuxGz1=wS^Ea>_!nW%_9 z9OsWb>L(6U-S!t zdm-sE{!2*2Lrc-CKC&EX@Z;~JDtfvMr|;)lfwt9|a5M6^UU>zdxVkZHDeta;!hU}_ zfps6ghe6sW;_=A8jrU|lo?lZtnvgGAffKe!V&`i$E%BbEa%djxeDr&L@5RQr|6oGa zbAw{Q>%?LqaGR?#bmLW}mih4jV8s&+h}x_@tI@qrt-&|QTtAwCKBrM3$6k~5g!6sg z1#g??6PZ73c^QEIn^QP+b-6*iIY3P6aL@nwt@i&$-tcz^vsB-+M_Om|CoPQ(j?2!- zgMM0te4+8=&emGyrs>4Xe|aDn`DogH&24`CEb_0p-A!)O{zBwmbH_$Z>2`YaPUOS= zrGM?n&pTH}s%CSS82;a_S)>s%_i~aF+uIx|xXpjsm_+$&+Y^!h_i4dq6**!ej};^S zqm%6~-s&FtO{|!5*;v*MpN)JsNL(~T10u0SjH%}1#5pGTtXYwM? zV3LU8yUF6Mk@r66|Ib_6lp`kbek>9ju;X1WDl;Ru%oQKUMP6v081eeO%%2Iu%FN9~ z@goEIDWV(f`&>~)RkuX^N1*yrk;OpiGLbmQ!e8o0!eFj&A=%0kAG1g0i|YQhum?Uj zOu-(w8=vh;@hQ58Rbm)d+iKC3CTWeB%;dmYVMRh!C|06vSSKd2U#=H--?fsL@jH`A z8%0hghnZ}Q{na2@ip0Eyk0!8+D`LYvYFgD- z!H~W)f}?!1jUBeY97|gB3iB<f1z157^DomIAiaB+Etk zzA=_HY;|KTQD`udEinvhjI+1^5XW1N(nC(LRDhdIv^;`WSc>H%a=j*7z6Q>iV!4kD zhpCoh1XE74duG5Iz{bM3R%x;N{_;p`~RX`6n|L<8F zpPgQ9@CWRD5Df888|uZsHekK+_iYe}e_A*rf2~h_E}y>lW2pY`dmsh>b%MI-cOK8F z81X9d!2}TtC^lGp!@?dSHbNc`7aggnMu<`px<-mWh(j7BhG0RID24!|j21l^=tvUr zU`J!b@2u0YVh@0IvN#K~I8MBD);QOr>rL z7Jm{1Gex{!Ti}}B6}?lMc#?t5bn!C$Plh=A4-JtpW6C;1cp+Xh#k<&RWQjNFj^~K) zp~~lq0M}uOxW%5gSB&85+9&Q%Lhl!gLFURtD?}#c;xlahE(#w}CD+6ql$WFA`=rW^ zmM@bFog^<%UXPIxAfNq!&QTSEah>5*owGNuQooXKY+HN%gjb@2D78~7tsy_$x zO}&q}*n{eAbdiVEqd$PRsSk649aG;Y{OGva2SLawH7dX=P;W#IZ_^odv&V#$>}m{K z&#OIYA}iHjyMwT)U0guF>UgaCZm6%nY{u{PFcPyNrr+x#3^1*JTE(~ZE>Sb1O|wau z8e>|bQxKRMQT0wRJqxTc(PSkXIn`A6eB{ei({(Ipr%b2Gw@d^GJVS|VX?`J(Z~){E*r#d(|&AbOH8SA zEtsUPo@2osHAvx9YPydYuS2E>46_uILic~d)Rht9Q>Nz`emZSxMIhN((@t9ZO4AWO zql=~s5Js0wf8a8F)in49Ewf2tX>rT+B(7`Krc7Yd8dDp^W}vlF5S#OD2r#B}+#r z{kxV)T{#Y|OK6#gThC%)v(!2oyXG=$8prPm>kITpr>uRL8!NYt#tP%C^^te@W7b)? zdQ@814pDGoV$Y{(H4L(*X-&Ui zuhSkw?USUg#X6^?ZOiljMDzZJ|tWFoYcJ>tuL;Xi?l8Xz!q!$Xv3Fiy+F8^ zYHwohxJ>JVsl;;aXA&rLwR%+Xd0HGMRry*P5v>K9n;DZ8+F>%fR%%;F9bKh0#mQ#1 zHVeLYjaGdCvQzsm6SPRn0Qz00{RmFCUi%&4`v$EHieaM`L-xleEe@`9v!?R7Z_&;% z6}wf7#wKc;b_YnS#d$#A>1x(LztXz$WC zm1wOIjqlYyi>igsTKG8*2JLSw4G(AniTpt=4{dd+)&dXbL)wJzAn~=@K$SH!cJ%o*dQF+A1b=%eB5Ri)XaC456LX z))7x~PTP-kq(YkjQhi>Vxq~I8T?5Ftpmj!ieo>oBPV6PECq|l=wQY=4Q=?4> zqQ0v=h}0-XUrk;_fBg(*VX?ZO4?IpUp-mj1A6^AIrK`B{4AOg)M}8QuuOmo0LC-;> zGFUe+L=m8mVcKn|UYj8IVfq&Q4u1^wzc`?i z^jUZejL~oM%*N>_xmL#OK}L5b=sRGWC+czu0IU8(F;|>kj#cg?eT=gf7H*?)DVn0+ zd5$YiUkX1mO`l1&1_f>WBVuf{-bhJFnLmP~ybjaQc5FtHZCZZB3r z!|IKg1fQ*c3vxV1HxXnvSGUhIWAC;d$K3h)tBt_8^lwptF4RLP#cLSy=)%#Jd z9@6VF7IIim!d3i;ewBmosGdf`=rR3y1Vm-Jh1&hN?xPMlp%-ANaZ+E+nD8k*$Vm2S zy*AKxxxN@7!WlgUozz+V4&>E2y&j-Zg+2~M{k%SevDQj`Cn;wa^rkNMa(!xZjtRYl za{02p@~(ob+&UWdt9s!e7z(}PLV>y5_b?kb^nJV`ReC?{)^6%qJc(QSw=C~!J%=fe z+j?)F{2l!%PV^c*zAaarz6yji#h z@!V^;V8`2X3|QEW$>r0@r)`yEV3|)IO6IpJ3y%C$B^#Ka~06jp$ zzq8g;&{^lKch4FJ>J0YY^VY}Mlq#)VC_*k-`%+q5whqs}2UxZJ4b!$C`;bT6t{(!B z_7B5t{EAV( zPU?^0xXE=J1KZTygs!khOX`!JyXjGST}J@eyB^2OpT9AII#G;-`%e+GCqVItC4E&I zn=g%Ab&>v~0fY=DB5bQrAjOMCW3=D9MJn9*K5>Ocx>Wpt{`rU)isLRjTp+8!z_aCN1G#MF{+&=RGM|s9M4n_-?3HG0?)S;eXJB6BY(%vO zWc8XV; z;*px5#Nb9fSP6mu4^iq-Ne@-NL*qP5Sx#QSaHTdeJtLGM6dog$pN1=B+nCVvBq~#o zIE+@RNvugy?&r82qa5Hf8msiVUSpF%;#r~_h*eyWUWD^{J%=QmIth@fMT>Lt>2xa!)$t5wGU z_l;Di0=$e?AH)N1ocg8LLb%Dlh_KVu>zG+jSFa&wo}r$>nKw(V&CK^q_0D~ej_L*A z{MqW^<#0P{9klIp)i*Fcny0oeHxX{~`(TA|lk7hzIMq+vTgWka22Y7)YW)Fpz-j_U z^SSC#8n-;PBX3r|y6qDxMzs?OTx-=W(+z0uC&XkM)Xfm|l_nqAx0g+~fv&1dNl1?~ z%%>R4o^3Y6+hvA0s@H!>77&H5}#;xua~ z;&Ich_cI5QVeOBacDi+QGYcEyJCjgkST})~T(ds1imTZA7!LC{tj9sOs;oa!x7@T2 zN3eOz`W5<FwVR}E4$%hT>pWa* zfPgYl```$msMeONBUyV9bN=z#pN2=H_MyENrp@zsN|UtuX-0$c5mtC<+WQD#Gc+51 z<Z zuzk%W@JO46re&0E2%K7?tu3Y0Xj?0|$0XYgpo=lK#Sp_|Z7G2E$+jn8dB)iWtd4v) z-u4DG;{@A$Hi(I~hDZ2_ZDW|{NVV;ywU}hv1d}}3_6hd!Q*574q&~L&$2iC|+d|ev zn(bE{pwn$1q7ulk?V|giZkvc}+6>zbtU5AnFLT{y*_LDUIn&mF@u*q03B0h`wgFr+ zb8IPZ(UIC_!S~IxmD1kMx7A^GZGo)>bDSJo`;jWXvTu{$w%9iCE4D*h2XsJ7ZD&sc zYuNhIC@!}>M#q+G`w9#<&(@DtG~c!Z$w+}MiHmE6t@vq)*=z-aeyeP$Z<{fj?ZdeI z8rvL@&b2myG^xp=^Je2?*T;F_5!ePvV92-yxDfPj|m6bf%uPY zwN2#lw%G=O1Qyw5(*kX`MH4AkZ0iemx5M@)MdeQ0m6b?vY~Nmw{LS6AA3eYhE~ z+9(Xm&e{5~_f**KC#d7RP5B$V#?}^|{(|jgly+i%($e|3*4{OL!?u&t(-n8?~?Dq#q2x9O#g zDoo1`oVxa!K5a#%Xp$Ip{!=m>!+9H0nfkWSKcB^4$eX zF>$X~En~twq~&2aI$IPqqGZSYXvaGF$o0)0tO_4Oqy6*?NLu(~A zRdcO_5Ev}CehLGXYxVOo^Q<=!b>~~VzzY;uZ!kW(!nzA1@|D)-7;;}_UG$PdT*3%m zW~729(t52`XRj`_F8Q0~Yt3L#f4x;>R%L^=C$R?`t)m!u*knD9(0{Y_b6ABf)*SQ! zTdhBUJ8ZLV!m^;q`l_*ftu5*Kimf}Tymwe#jM?q9&SfTQmvsa}_}$h=SdDwEpL|7S zXnmUGmAzIg@cTY%rqR$@bD8KlU`@vT@}Tu+)={bTDmJNytUmJK4qLmDyL7}llp^q` zH4!zq^%2Y3rbc1_1Xi!*ge>L2}Q| zTDOAgoU?8O$*izeFQ=iiHYY%*(mISc`GWNwoH#F9M}Z$)vhIp9FgiO2=@sh(uUa{k zpJA81W_95za^1R@YUPG?48=f|wG6iJrgc2`yJdYAFX3wI&PK+m{4@f>JJuN9)*9;` zqE_!(_YhMPqqQJCw7)hV<#nuPA|pCZyUEPn0PO{ExPe+UZ}K4R1>muGZ60Vsg4Q3{ zX|NW>88$@gPRQ?2tpKa0VVaNrbGT+P5}38S=&(m>^GPopr8OnNC{ZgQ%4D>*9iS;m zv-Jgu*50Pv7^`Koz>>ALRH@^%pWVRI+6i3SCuqAt$tG%Fb~9>%g-nB{YQKJElm^dn zwole3yhf3$ZGX&wF#r7@gju`9LcLHFFd)q1q!edpCouS)uJvGJoT2^N*?=&cG2WG> zWf~!4+5#G|S=v?tf@W(Mixg@J_fK#*T2&2zidIa9$$afWg0UB9?{G#h)RrLJ&epuh zNOQCfpk#}*_PEI`)(Y`fTcR~4G-|0PLkbY)zZiKg*KTK0bZT{pSI*NOK?0VqjUr~D zKx@ZL;tDN9#`j8X7r}a~v_D~MS8J*0yVhurJZC_d1KC##we?^b>okqtd%fnqXh4|d z@pRMLZo0!Q+6h|At=b)koo(7`YLFuB5eVz;S`2P##oBu2;CE~cZ zc58F76WOCJLD^BFjRO+it4#;d+NY(U?%c24kH6mmZ85FYK`jbdXQ?&4f$k%;HJyeI&G}w3mrMKdt=-1z)a> z#vtsBmbbzJXxRrhQY5>VwA~*Vpyho? zlCNl6yBnb8P3+pQXO~gp-}gbG{_{SBc%N8s`Ttr{diU$b z&}NLV4KX7XiBG!s+}^rc&jdl)7&38=m;v6gP^j!?i$rR%iRk8N?z&VYFyNFcekwL2 z%Ba)ageYSaxMG3$64hd%m`fPhX0a7IVW)T;Nx@;!geJX0G^0tsC|*E)cvZYRQIK1l zTuk9AuR8=Xj6$-v66A4M$MM?MIz zwn&a3-D|OYvop=1ET8~bDjy(abh&K8A)hDP8n0cpSY&*h13|uSC?j8`B3GK?0X#tc ziD0`?>P+-wiE2FBh0*Gpq@pCLfeS##>M|0G#;P9^$B?Xc!qRY@I)PqxyxIX*zzOPj zoKPmJiC9Ocs5g-tq^cvBJDQ~SV!&y#`W-;z6m=`%L{rr|I;S!vzpXeBP}$V>6b<7+JB*L)YG8gOVnnJ<}Ovc5!kUz z{Vq?X*}ehq0Fu>7e^Pg-eZL0fQlBRicaypTV1BcD9&BKX`uKkq0!3e9 zjA)yBmy@wbUDSg@SuJ8(ai>~NPQfm%8%)z;L1d(;<)!{V#?_>AsVtJfM7@0b#U z;%!Js%>nf(w!ed_f}vZfYQgR6kh&Rj+{5ZK*iRf$@18d3-(&cm9aB4yzEh@lC!OuM zI)Vb=ggTPr@}&9!*Y_#)V?tO@t2bdI%GKv^3_PR0*9e?aZA8AoIdvJIN`+bpTXtSO z0*F+pI)Ldfs9iY7FRD@4YF<)5;e5TU&W@usRafD`c2(WfluAS0gI@c(`Z9AzH`I-6 zH&tp^oLX0(_xS<( z-ftaPIJ9rePX6l}rZlFBomhXRi{l5lM#KjQiZjJ#5)89MGS}-&@hCXMEa8Q)oh^!( z%bz1Qfw#^VkAk)@5E<+N3&l<#;H9FR%4E6t1WjR{n1<7Ff#^V3_6m{8RMtV3DR zc&fqxObhWQ8z}eS+c{X;QI!st{)ecbh9IOFTI}sIX#v!Wd=#hZUGhQd)7>)4$k3IOczce? zC=~f+vh&k)gK`pf6({769q9(8G9G?J?jf7~v>am`?sDKtx%5%Hsa`1+iopxAw9LS1-vH&fBuk3G$XuwiDw+2L z1+*+C59pR$0Si$rlZku0Emt$Dbw_&0d#{oE2pqmE^HCbcC&*8QUrWjIZ@+E{GpLV63k54c1@xQIO4x#ETfiED?2b09Zv5x})WyqokG) zcbFULFO%_17$$#V>~fUcf>tC^?qu|SwET3v0j1Yv9)F7bh$eHYoWqROG3hAFA7ljPay{4DsxD3{XN|ZiiJy|kq2di67Sz?@;9ul8s%Znu2&XG+KKh2dp zsqE*;LZr9zWi2kW1#;s73I{o#w9aff2eC(vd=p!}Me>&(3P))IHib)MRxc`FxgHP6 zTzMbjgglwRgh{^qw25(|I&sZfA=9wTSSi&7W(uT^RQ;=EeJ;N>(n0sNR^G=LWT8Aa z%*qOGi#@`6`Pnw3T&nJ`{_p+&_Ge;@+YCX7^8HjGs2^7Y;s?R!&l;M~yGLG|ftE{3e-zJ+Pku8>kIj(ld$&B~y zmUnpld*oYS!~5mkDmr5M4Tj_gx zc7L)hy4h3m7DHyILVM4_sp;=?WNh@wJx77P@H^u}9+7XXq9Xdq z!D7It#?i4D*n6%x&K0*oEaimTB<^QUdW+}{W3XME;o0mEo-N2i#1Lrr67e2d=lx<0 zBwwjWeiIH$sOY$kh|CWt9K>)B2K~EW|_<^ zL1iOHkw20z|DbeQA-gbXyiyimv9U^?XI5>s%s2(i!?o8tZ3Q9xL#{9!?9j^ znj6>ar~eu4O;bFLHp#=cjrJxj-8gYBV86drF3vMfoF{h~C(c2_2DVF`%(7yci4Jmy zY=rD+r+jaV;QVPtB<*gw({3#K>61;ch83t=_sTL1Pxr}(ICu`o0#Jd2@{FO%l6|{S zs>#`0Pe)|87QEH+q0fv9q6#ddOfI6DJ1+ZSMs-5|$_aN;dMKGs$$>b|mdm?|#<_Lp zeuGMUkZF{2^4D~OQM`=LPNjVPB`YV@ISeH)$peg6UzS}#FRsXh%Lc#r27vx^xpP;NF$1X+L%Rx6ud5yuM zDN1e7-D%3-nFga+2p=|GDMxgesaPpKXDWYSRzF+mf;45WazDfJ^OZQ5x@<**s#&Id zMgnWDGUrjSbLDx?sC?yPUPFPB4w<(?*$=(7TDkVoJ$1kwajGd`jQ9dla-N97oS;Z7 zVgzWr(Ab=Ih(l;#cZ$)d%XW)j@CVx?TH)1FA_jqU?iIZ_CHITfTnq<<>4-shSFo)d z78B{xkBMm}G5hs?UgbFqc0oCc@;M6Pvhuh3H7i*Ll&J z1GrM$Vv$`C8H2$dgo%CVl2}5$c3J$zcH(2(LRL^%s?QD)TX>V*Sh_})B-jPA(wQJ<$AI$8fAH2y;l$lJK z_g7vA2Z>dZ=s4n(Wn|9`P|^Wr2P*Bc&>W6*u-7`Q zce3)DVzAep=D=_&pBrK-1lZAb~h7VwpV*MLXKzW>gXNvL{ZVgkF zCXBjFQ@m5b{*;eFR@0Tc%yQ3ARx@~!sjTN3%u=@Pu&_p-z)WJ=;n_o@eeH5%^vOL-J^6R>}z zM4_85Rfp519#U%)CUsc7bIoXSr=f;EpuJ2rbx@o4Gw8pToNi!|50g)QSo5#6fJM%0 zC&41i5ojFKIv^h_)2{H|9M=x~tARy!M{s*m+YMrSN?XFX?P+aVf`LU2X4?9Umdmw! zRueSi=d`~n3@oy0mw`ndY)iYMwc+r-pjj9vzNn2ym~%<9B5t~@b;7Fsiq`FW=wj_E z`mbwRTdc6JYZDQ!-_Y(pYhaNNA_}{yy|W(mh4vjNaJ5zeqIp|;H-Q~M3j%}GXuUat z?rM_eGe*Bn$IxFdz#2DJpNMifPS2Wa2q+tqi8)YDJ;)BApXJ((*DrF*A$oVzXG8VT zL|_fmSFo84*Be5WkI)kXCM1&q4A@8MHj2$eU8K^5>sKIill11@D9!Z4D9py{6#(eT zdR|{}FFgr-dc0l-DZm6htEmYA`rnZ^-Jhta7eE`?sOnntV=Pdon z$L~$Le)a)dY_kej-On!rhkWq|SmBpn;N0B29p1++(g0b%60kZgTk+<7U7vy0RyTi) z{QFG~9t7X^!WE%)Jec@*UN*osok$G({sg7V5BDK>Y1@pa(yjuJuJ#i_!hY(?`_FxYj@sg=}JwsGuN-7pK7v5`>qqkHKOC zOyv-IeDJ7LyYOubdG3h)v z#9nO5`^!|ES>olV-x=_6*-%nTF~0W;xAlbX3i-9x0X`$i&zsYf!NtkS$*_q-C!Z*P=+w!%*wE zT+Z-HrQFBt@g)_jQC+{7M+2U)$QWlG+ zX|VHi>g69yg0N^u1d}Ib)&QL_EfKMdFnXMoB#w z+l6BB?kvD@as3jg`2TLX`+vXN^S{R{`QM-3`@e_X_rFKjFIoa}926I5-%7=GlzoTA zcIvw$qB*44QL*!16uYzD#h^QOr zE=0{aD|NPGk)*&j!+>8B%^->|i{sE|SHhVz+-otfEt^5;yx9IBes0 z4037$5}0byfeYrg_=g7Kj&S0LQzJ~>pn1gG8x8*Ibx7U*(g{@?D-T0)4UnBFP6tYR zl$F`yZwSkbm%HG^5~K}R^TDzY{$fMqLu~y+t!q@zvOY!hSm|$UV8Wg74;?4n=(xwrCY*W`WTRHbE;t;+k`#H8 z0hm;|Cky6W&TVD@htB{+O_d)$WB`Z1VFQpRpF_!%F6;en0EelqjNS7EtgB~8Gvsro zTt@kuB@<(fE!D)?F-vxS5$Z_30Yf%dehun8Pqq#lxWX9x%ofN39Df$dbc|K9ULQ{ z&deV93M%Tu@^OoSYMnyje_o!z!njgC(%0Bso@7>VtvZQivret^x4{{`2sg4p73k+S zs*h7PZ&H7nY-}>$7>1ncQBcpVss{`B?dlfpw?l1>zt};w9(~I(bsqY_6Y5JG=%>^q zCXLJ0nW%lvs{2sFpI6to1eDB&ZyH>Tf-m3|wI_zg*HrU%E40gayTPyw2N#Sr?O`lp zfT=-4gD`m+=a50BYAC~a(`Z}?5=;~DlpSJff;xDp>8)=KisX?$Xr)XKhBc=A8h;VF zNs8%f&bw681$_3?Op*dD%k(&H!F? z%1x_@AFME41vjZQO*3THrq^BpEHvFny4Jh`ET+HN&1D#C{t%f#oOvXssRPW@o7Q4JFO5+0cylbzGr@e49)Ga;OAPvk zn5PjpnrOaAvzBBY$lf#7d;)#eIP+ng;3t@OKtZIK4^UD~Hm^oeHq|^DS~tyn9bc3T zbGvLV5_4Pp>$A*lS#`6_Gay0dn6IK-oM%1=&$G~c93W}2IhE|1<>ped<@3zFDI*HZ zYcZK$X>MrykJG7@&P^RGOZs*bh+9w zB&Ye>CtVC7iWRhOmG&|u_8M(HU2mb*0eSX%Z5t-EqjWRFlZpD5+;6o0JXKGoewBtR zOYee$s7CkWGkjM+iJ&XS_6Wv>{cS^;!yjO)WGa84ttCRRLAG^3#__gS2ss*Tiv`{r zV(UfL*p>S-U%5AQ@s=b@>;nzlqG16X(ubp2b)WXW75O8L|8zxe-ef-o*Jn3yU~3wL zi)}WKw6M>8U^HKJrd;{5H-+<8Mwd{`+(iI`vgT+`ww8ce)`ZI`FV%x7b1V{=bk)=P9>Zdzl_5(^4Akg z%=~t!H--F1$hm%R$QISLDQEj1mvJ%b_Bmxw_gs7A_C0Qqsnl}{J#?>ku(#~pgPFd+ zK12H7XARA9-{Sd^|My!$j~XjBp@AD9^hriFo({4wRIFlDaD<4ZY#b%lB8C|wPGH41 zR(u4toGhAQEjmv4py|eo17s&m5RDPfP86?UC!Zox>H8;(@n9Z@#S3`p9T5cx6pxBm zsg;k3`$0C#L^H_b<6;$J!V@Bz1#(g>MmBItq(4-PQ$FRgiBtYX(iP8$Nrwzj?Vpb& zhkfokLrQX`qsC$XBPoKFq5&Qk7epc6yqCmsSiZ|*92eXbF>s5*ng0vfxYxw5_Zeq? zGc;5;L?zW%mGF}-cT?Q|KS4?_5-F?27S8V5VmVpScf=jWhHAvO9~)=>mtgZTvLShO z{pHIPim~!ZW>(^4e`JmWWYb{6~pWEbtPAWhw-o7>1ok zlDLVd${6uFb8TaV2ZkzH>;|D7Cjt!Qj2F)$u9_%z(q^WJH}OJF6;|xkCW#fB48rON zuW^d_ljMqNqC07iY2q$Wce?n7gET{Qw{VP$&|6m6?WAObqS(?9{!e_<9|eeb9`B)9 z;%8hRW{bh#`*XxXG-UHcT|~h1MeOsnAh`!FqdO4i9#SY>x8rlRR7B_ivsM& zc8FusfT2WvBK>xYNp1tqt%S%c5m7>+=sZkf>^?CT4fuW$M3i+vJb-=ULD7xXRVp@~ zHL+BWL5Lm^jd068Dv};oSgOzCT2v-#31g|&CE5L?Xs#NS=rZI$r$s#TaOGkf_0SoS z$rW-|Y~sVYB)UnX+T1bPSb%jv1+R)pj6+@%haXc}fJ+NhR^Hqc1Kiz6mh>$#C*N3k zYep%oyd~6h17tgVBL>Q3B!q)x(+?(Y7Z*KHCS-u?W(e`IrA=gyq- zoaa18wu5%BZAdEq_LE~;+0O53@ScJ44@yWx%C8sLHso56ufei5j`0vF$vYY*_X6Y% zmtUW8Vl_UBa$+@>o?%;!he_ueBTExN94EI!OP?v%1Oz79_E208xe3^Loh-~?xlz_7 z^tV~gXlD|_xf{)klTQdooRFtze5Yjxs9tB~erbEl*KZ^sq|z4C{IX1nu*DTwV51#e zoI=%r>v9@u?l)u&ypx;qF7NM_90qgow!HI=?PX7a_@{uUaXsRZ zz0?abar&r-;5U6$(kHg@xCvpx{%SvB%>z_RWElpkeRyq=>QRyqXf|`G$23^I#7P;V z?m+<=szzd|4O8u#Fn*{^J@v1gq z-3h8Hwe=>d^Axe2tU6MrY>LVNv^-5+gB&znJ|60`&qh-C?0GPT# zMRTx?Y6}tSO{xuu*=F^w7cWjtdlZ6dMK^}KZ7M)o_;!`W#wpZO$WJ@f!n7Om=FJnmO7NXt5)Zj<_PP$h(Cdq|}u9q6#yIvy}w%|LAX zs44}8@wn=b!*oL3f@F6}btL`hv?>XHeO6@wl|QGyY8-4;9*pgRdW)vZMYVdY#2EkH zr;mAAF>zew31gGn&E3CsCst^?+ZmK~z-?vn*TV1?v)ddF1U9}L@ z_MR$NLNC0p1`}?0pe#x(JXF)sntiO6L&bfncG@IbRS)#&m6~_UfsjTN&i5O244?n4 zDv6=~PEFXS|Gigx2*h@AEbYc;=$P3t1|%6J9#AKJl2`#kHbo3CZx3({DAq7dd`m^W z>EboAkTXRj*3m5ShJJF67|KUGS2QPP7bS|Lb2VR_r~NJzi_hCEkHU1G%S8!frdNob z=*F%TW67LZB_bHTR*NjF@rXnQm?LXNHZr@`i5tWx){6{8t~UrbQPGVe3fFm)NX1j! zEJ{vS42%WHYu_fe!z|t|O8p~A<`~9TE)p`*>=Hfj5%!A37*qSiar6bE#h~^!SD+RA zs{`U)d)!X3%Eqt6MnVcl#i_giS7JA6Sto=S$LO?}Ki*>0GYp$Kuxr1`0GEy!%T+Og z(E1G#z1p_0LeTwvC=$YMdm`Q;NZnOl0#fcF`}~xE0mlQMt)Hw}$sS@dLp+U?SK%fM zlE?DeFvZxF_7GDV3g>WnFBPVYEJu49DMxa*qhu3mZH|>I;7N>^gCG@8kn@mbohWBE z6F?F9-8K|ah%C=3GBw!#R5=EDt(mf{EjcffB?tvsNKE5gAiZ08f3h+I)js)%5X}LZ z524`0vN@GPj>+<^ZQjd#LX2l*8xV=}@*X=}lH<{hy(-&5_q!oiEjAcpCOx!=n4)y@ z_hmlleh*|J)Z8A*&9m(|y@Dh1Og=(B_JxcBKzuEKr>@&Od7I&j|Usmj>a-0enZN zj7j7`pEf>e4d!Sx!8SN=nAESnU^D{&zG$39?DCRP4iM*Y!Z;FiFHIBoRxo7y$_qcB~f*$|CXpipDL!;q4Y!M?Z zn#V7URfH^G8a*f%`^rd#i}KpI0m0&pk&dtGo$Sopp zh4y4NhEv|dY=JU#PqP47`Mpd(Kx=PvCHhu<%|=%V)S0sogzRr-wx!O^S!9Y2G}i+R z4l+f1K3KDq9icM=Js7~vq6C|UnW-R&j5Kfb!1pkFqXs+L>;@z>#{2@@ZLC?B_A<^) zjN3il+yF#6!EA(UI?-H+jW*SESF|G&uO8cxiLMAP&M@<$)-ux^OODYjb1(JTW}Elu zBj=dyCfc!xvly83&FMRw#3H8h1Q(hq7?u~AofVDN+(DPV#C(e6{8Fqp)|G7lj~ve_KHMS}Vjqzv75b9Xj7wD1afo}K2cDt2gL z1k`}tW_A3|y=D&BMElJA)W(W7C(*I&H?I(!K47LRXJde2sjGUePTzfOM^L_G9S=rPn$C_eb1Qfb~^|kRD`*A&P+%hvJ2)Oy2^{@Bv`(eOfLb* z%jV@=3BVPj(R8?G)*+I0-P};uh8I&aXx=ovs4Cnt7a@py$9##d_+4`>0>k&rl&HVm zH)~C$BQx(2`g&|;K?386xrbb+r{)g;M9<7=)O~qrHYREAmH8Vvw6D$8BXNw)TtLTf z%?DUC@658uuD>^<0XVv-5x9F@RrqqKBdcq6f!VHS0u0P`xU=)sAE-VqP*rMT zR;VZ{GcQup2HI9<2dcmIme>`f)gp2j539kHh&-Ztph9#~ zEkgw7v?>lbeOBpD33Kx@Id|vP8sNSQDiY<3iz*vD*-Pp^;lj&mA3ADR)K!3st7^nC zTCy65CdYM^gVehl|7>~lpDk~x-f)#}tJR}ytMfj**1Kx(lNi*m<}oDLYJG`Y|*wNv1J3@4!Ib5bA56ah^udl1S{`A1X~tl*&hP~~o9Ggry>AST4u_5x+< zI62{5F%X@HUV&GZCEDMQ`Uu*uti?Ok|4&gA?z7>^c%xc@isPvt-@N~9CnTh z$y>wb;96}9OMnf$J**#>xFc*6koeB9^>6`qg&ijKWOrDrC&X04meS|!4GSVHx-V=h zbswX{(ib8o7jYK7r@L->aZX*W(D9w^Itznhu4^)twW3`2iE_?&RjA9L=5n^z=UeQW zh~K-^HJ?JC%UzezGF{uT40gm~Au!prHaUh6smPO{E*9EfRy z>rdMJCf8alzs;^%s32`|)rYdW)s>zObDQfcEQjr`Pa$~haGj=S-sSoOd~CO?IC+$N zT#*jF`(D>QkfwdE#Mt=JuKjq4`&}u5df@?AI2PkUS3jg*4!M3OVePQ1Dn{NB*MXwI za;{-i);i`&PSxe(uAZdmpKz5WPy3|nIIZB6Yc)y>r(Ip4@tk%2gg<%SRf8O*3$7Kg z;4iw)Q{?TEYakrK%dVp&UR-hYqzdF!SIRSb-8ENtm{ZqX?U35K;hI1~>P^=WOt4$7 z5(v@VcAcf_-5pnPhzECFS?DG1x$5wa?z@`95PIO+OvvV;%WundxJn_8@YuBnS@R7eq0jfywFgOuSFTeCt-p5tiHzYJR|VScTi3$;V8*TvKrruJr!(lI zba7wB^6TpE0GXkiJ3n#{-Q7t^;g4`{Lw2}_J3mo~p6*OU4|};Stb^X}3P81e+`nL< z_I01Zedy<&fot5~9ff@C0QXAhTLay7i-I$|cT?_QkUM*6eTKpAzoBRianGfm@Gy5h zWYmVcGZ6$H;Z6lTZM6Fl^&iH#tCCnZ);$(4f1LXlLWASo6{+?#!JQon+C+CFcoLJ` zd(n}Z>@LPvHO1X5tKMX)yF9|i)7%>&4o-Kkfh9b{J*ox6raOw_X|vn~Aid6ZN7@xa z-04U*n(OY4ip@OtuOO&V?piQR=ewIHr{{BLM=*b(dl%j1B6lxJLoRl|oT1OK#N8CZ zsHN_N6b4%6-a)GRa`#>M?JL}Cz#mq+zeNdmm3tqwmDTQDjrAGUxW55LTI>E1-+Y~W z77AwT-Qjf78{D;Fd2e*@P7285-io&GR(F5OE^T)|!QtEKHjwMs?G8bweXsjhXim}Y z#;9u@aJL{0?U1_`B@mCeHx4TeaMvmKR*Ju#aeuv8?|#nxkPzkt_us&B zm)t*Kk6&>w_k+Z^=M$v5;dYXVam$^!j^5#p+et#kJ$H&z`d|;-Q|{_(dE~C#2y%lv z0{NO}?u3xiU$~24=e~01p<2)zcNMh%-noau+UVlBhIJO!WT4#nT2C#i;;i>%gI2rI^Rhb~pl2I} zQ@469!G_rGnE`jLf06@5^-&fiDU}xnLXsh52Q5kRJte=FB{|0HUzy|w(oa?;IfNS2 z>LlZ!U9L@%lKAWTB)>s#+n6K_k>t%uZbF9Hnk00nzLp(HQc{v|SCU51Jm-4<0;8Sh zjX?b-%3Gc!y7}Ix$X+k-rUJ}g=sgA0zR24NO^U_dAE@uN#G8oEVyU+Uk(OoNm4GVC zy-V>IS9rfiesrbx4AQx)yf-nPR(qF|F}2299;NlQ-d)51*Lio+ZLjwp&8q)x@NOiy zy3xCmnDr)aM<^1Ty{Et>ws>#A2ioeL_%{xbHwPiK?cPWjGCRD_TH&dC*WwKB@_tHj z;@#d>D7WtMPDTQ2ulFZd*)Or1EAfjbG$FOCru8@8&!V6W$HH zoFm@#FxifJcY)#`^L|El#&K^kzWx*59*lS=y+?81PkEb>V|dy-9DL}E_ccl(XT6JI zQl9fRr55OUZ))7|3*KL8-WR>uNIJjdt&TX$Wp72mkt^OOJc+B`GXy!Vc}ISY!RdAP z!*%kmxsJi<-2{o|mbV+d#%=Em*gc3cK-zl_Gwq2th}ZJeE3qe@c?Xe?@Z6gbr1yn)=2OCsULp0mSKfDMg1z=i zbOzsegLcND_X@G@ci!DZH{N^8+C@uzWwF7!`d$*X>*kw~Q2*=hTTS+Ggl{2v_dR@x zp`7&eMME?1dh?-RP9vA$nn(vI`3hMqp&mmf8W3BF$%=o_2pONg59B;Rw&flu~5vT6IiOqa2& ze5VNwPxG}xetWuaK!3g83}3lR7+Ai~iAT-yr9>BZwr|}na6#WJlqTl-a`2Ak`MN@) ziSo6^f1B^yKqz5>?-co33w`%M1{V1`fSWD$g^;kf#P>JD*-~F`;`YmYnZrTDd@l&l zt?-FgdTymJIaTjg`TA0SdbO`6$j2Jr&4GAqzM+7H>wM>s!&~pGOi|7azHWH`8+})O z`h1&wukmO$`(^+FZ1I%^oZRYbPeHG3zRH9kw)_6-t>Ly#qp_MO3_*zbFa_{;&{rwBwJ^d$x=IpiCKNp;wlk>V;x zd~43>O^*7W(AORFy-lM39rsnY1w4GBy58ZWuL`N%r+kG8pr7`o0@yp_n-6Aq*0%%` z^_(vyNpRJwe} zts_$$VWZ)Js{ff#J8usUiZ{jij2Z%z5w*P=e~o`8eaHzEZ6H^`fdZCz4CP; z3GB5m6(OBBzU5yN_V?|n54zzKs3N`h9Zk!)>2E?Y$gcj+4crfZ@y2*>{^`TlVv3CRWwo-x8B?fd3^`8$b}ht0m)pO0jwHU8x!DzEk5!Y5hh|CX+Dy+3&Z&}e@%2AhrkABW-*`8_zq zoBbU~OyA;v-V=|=pC0DrHh+6Us@we$GhrzB3lYHD>A#wv5zoI28uM;{P6BOv{PT!3 z?Dc<=jSPx$xIah~+&hUt0Ae~3WhX}=E-`i$Q~@8qoCN%iD&{;jq2QO^6{ zqX2usUzFI`MgMnYp)L5MAq8Ice}e+y75{BY(p>fDCgJXy|92el>;77#bKme^M6l1^QDFYk1%kLpa&#f1yEf*)5hIhFYXS--QA^Vad&qp?p)m6U5mR@97=I_FLH7F zdB1<=JSUmWW+gK@Ihjdz$u@3+a{Nv(A@=ElS=p``c5X{VXePuJQ9z=t9&$VM1aIn) zQI(+_Omp!9>!(452ZS?ljQfeRNE)TVr#1Zow@((ZqilXN@F|dpS%f@@5CSYau->r< z2NagJ0Xw8^9i%F$%5KI+JQ}BxL0HEPJdoIt5zO%2A>8fXb|m~dLL?oZGZ6Wu;YL=n3ifKB85>ReZkb^3*61MQhV`3M| z`b~2#ri1432J|3M(SNQI(8A_4F(u?QU93a$?&w^?EmoF&ULw7P0S4Xam-juA# zr0eq{aX~MBV-Uo=^EV6RB`DetP6D>5bS#o}l{1NA*-e*LsWB(o^sXC00CV;5T$;uO9ByV=j zWx^j4EPi?m1AA=ZhYa5t1%r%CU7B>)U_?jmF%;rDca4W`CzIQqH~{h!DGtt6VZkHb z@DceW#3X`lbFgEL#Y%J@XpQ6mqCQB-`-olRoYG^49MX|-)2*a=^7HaQ^XAiuvUu~T zhm;qfDIk`SX9xN;&=whT1S9vuTEfUnpLXaB*cWU!hjg719YYZoZGYp|-X+4ZY=9rs zP#r*Fr8|aIHfCUk0|cElvOX2T;5js~!_Dp);qZ-74Jb9pq`?%+aeP2GC$0AhJWb;H z2QdT(y6wCo)}5fj;JpzddAhTbWrEoT=QhqR!2tW`^lW17c7M_ z7{Qj0tgh)~jmClv;0ge!SFogf=x<@svNRzrWT$xuX{8ZD#D4K)&eZK0(bSe9-_O}T zpfQ)@<^>38l`wE)vF_nqkZ>YsFW5CQxB^9pNSWDmxLhBW38!%D497`Ud~ zZWyk%keunv;S>_}Vso2^q15IqW4N$#vM8=pj=b`&6OJ&c#Nc11akmzpu1x^3pJ8I; zy$$*YgJ61OqejKGSg6&!WU=kC+d52Fg%Vv-zeX%|7^sUVyOj?oss zbjMSl66%GQthN71fNnG;35~uh3CCAgpA5-EDyP(LOec|u@g-+Gk?2R5)mNCSV7vr& z@a~BiQt)&M{(|U96A0ja^b^WqR5dxi4fpb}zg@`r9-2=*_warRR}VWD${W*7FlEd- zIlrb8Ao@ilKzaC>)<*!_zvB5$VXBR4CG@xFyIcyn&$VvJTYP_~wzR~1t+rD18vji^ z(eDYgjU8b!9(_Og~e|W)b z4j3ksr_e+l#q10a38|QTlJM^ zfyW=eo^E{>nF+(`EPTv5BJ#DPG?0uX_t-F&KV5}V znx98YMuqVTMK4L4i1p$f@0xkkE4s;N31(?(lER?*?UqHs?PXbbZ6L&o><)}CwBvpS zC9&9Y(gi@F^}ui^x%A}GH5M=SEvPs{6;Id(D^n((GsV2A$y6hZ(&_YYrW~zFTpH6( z)(e4ZTO#at7Ye_=D9M01*5Z0sHpcE_=*@4M0CBEInteDb>JGVSTgN*xAH(f>q=^qA zT3+ZYH6Z;-iO2T^(|_Ks-<=(jw@KZp!bD^Q%?;p6D{a)_`0lsIMN29}JCZ%1^A(;@ zt{2@>cNWT(m67;{cAkA+V+Co$Q|S&JyC0Dcj?7L&x5Sr-z3e{X=xEKOBTlsGxny{`&gA5bNYZJBns9rDV<* zI?-?4TT&S_|=x>*E(|C$Y`>>p_tGyx;~6hA8H!RmhyT2UP=o2-Ay#D2J1zQrCuN5yhKjjOHK1t z{jxz9(~Pt?VCU~~Rd1}E>h@xZj8@#JKM38Xwd9*|t*%#f%VdywU>AH?9bc)6PnB;B zjUh`)PS=a9^)d2CFxqm%=D!#HIES4D|MZmMl+n$s^TTa!>gTfGBn2qK0_35qZns)J z%RpS&3&)3?6O%g|Gu#%Q$Vjb8SXMxQ4@qsgo`0&YWy)-aHq8}DeOCe-ZhaSW)YG{x!>ieOK57RjD zhDWow?g>Yi)GH?O<1iQ28?iV@mGpv}Pt_RKES*<0em0ANC`7(ny5OaL)3ItmHGG1pk>ymM0dTMYmwr zJe|X!ZqH%KK3vL6ZcBAdctc0Ge>dDF0Vt9fEo^PMgUj#=s(|ngC~QXw2~6}Fzx%;> zMMI83LqMk9s1aM}_lG@^P}r#>Lqx?n>?!IXHMNM<>_M}Lv0%)GExn1?Rst$o$yQQb z;M$!WL&B!VONuuexrp8;kWf<3s9kXnDyU_8k1KZ`=LYvSU2nu!MtFU=n0B3XVsi5e zO>yV$5=$67{~tzfg;Tp8Xbf+QqDmFqte!`EjSGk%?h%P&S%`J|%_Rheo#eO@Qvj_&OKE@TX)BP8eO6 zlhhPHX0W##y1}Mv5v9cL-5wU|bFh=j=S5LF*e@qpuR!uCCa&1l>0<1L%erVjtfVgL zmttjS13#`&E+G3g?=}|aNsMFEm0M_=Bm(>2f00T8w_PU0^t+G4M4iE}CK%7hs1jTX znGq&qvg6oAWNCw@iMBlGh^kFt_R5;?lda|CQQgA0hQ;B}VkJ}xFKP!=p697};%#rb zP$zv`k%?}{jwAXjB>#qUm{4k}slZqb4k*Q74G#4LMje{abm}(Ed2eIM4+y*Ti{6qF zTg%;4KAY3^aU0-ytl@6&6O*50UM99rRbGBOmKd+=N+ap*gL`=wFiPVItHr~>;87Aj z{<3Gn&09e`t)Xsc$rAfUOkIt}M#TIN&6ki&9i5(t?z>Oqj|qdP{^CRQ>vy(WGIRa0 ziTzmfeKRZ;uibbc+P%hbFs*bKjz9( zW%#!Ox9%K=>?hvM2lc0ndIer&1Inu~LM!^2koXJUx2`r$62HT83zL7RC-mcv>&=Pa zPDGCnFel+|KtS4Y_Re5r#%$D-HbF&~P97*X9HmY6Tan|iQ;7*MnEQ5zYc|1ui~W0x z5wybT0%vbhYbWpC;qJn!a_X~+%V8XHA#zz9$1Z$JnSDSbP&3^`FqO{KL_ir;>%!lX z+4j3jnFy}KK)lZ_qFb@XzdTkd&psVX=KLZ}kIt?|8mAm}m0?*u$TnXeS_+e?dVlF6 z9h>&dM?`B1B7k0gK7uHTseqg)4e?q&e*7x{0!b<_8jBFMZ=#aBeyn^ z)FThMcmPxYy+Om??D)1(dv2;;;)oE9Bc`GN3lOZ_Afao1tB-c}4q87+eCJj_jcOdX zliZh#++DM5KfdnwbINunGocGAx0z4Un8SpQLBH}LyG`;&n)vC`)ws;?%fAVl9nj+e z#7o|56YSI}>@88H3u-C!z*C~1NbFvtAHv&6F+Lggs@*~VP?c0sRZ1LTomAuFW^BCxOnS5`tu zfBuT|-m#HO1K~-aq~L?ec+W2-W&AKjS6Z@p!5kfd0aHYv>;k9}%*@RiBINkI7Fpnb z=ukZS!@ZrDm8_uFa31`|)EN zba%289{#PCW_Ek0Agx3mC9_zqfN~o1OqDiP(dmx+NBDg~+DbQjc$P$-b(p()Q}^HB zZa|Obq~#E(S6C99xQ$OL&G4L3=Ji8AxA~17t~T1x^>{)0l__}5)Se_Ubh(ZIl=m=V z#S!Qs#$H%F(Eji}Ozs6P7lzHnJwTzz50}kf7XqooRJAn-WbVRe<(wtssN5K-CfM_J zCBn%!W{kG_0ezK$U`1^I2I@72nb=N`mV)?5fWWi%Q*%+B|?-(~%mH(W2j&Owdst9(zy3fzpjM08oy zL!2Fyr65vx$DZ$m+bm{BVYpNjp$g`4%)g*{oM@7IaIYAo46c|F&)6t=2}6Zp^CGxk zMTdLnSew`;#D#xSO*|`*mn2wCYO%e~X&US?Lm8K2v}gnDusRywxTC7(!nk8N%k7Fw z%oPdq@I|*94Sq>_8Ab5GZ?viZ+Dm$fRMKDg(U?Qj;J*hEN2=?EXND3va)L^PRbOG{ zEmH$IA;@SWQo~OlJvb&norXC+j{`fufm!qpxjy;?lN!gdM;x-NlL*kfb0sGhbHSBB z<_X3f$w=pVSRfF-Xre`JIjZ7`NDWkEr13oKd_pE)L2k?prfeHgFzNCfrsr=H6)-<( zr};su_$K03=ITp}qrQHXxDw0xtZlYxriW7eY?K$(>TXX-%|UjDYjPZq77NAw<6UpQ zh}u|_E%DpKqsj3s7nEyvn>~&nEDtf+BqhoKV>=XdTRF(Rkt`!z)-5 z7^#mV$9yW*MD>ViM?;5Tf6ekeG&*#(??uBgxtOT1J%_&l{;%msnfwcxg|ol{qVKQYI+ z*ON2hi8z-WF}~jQ)C56@4Zwv3p$X*&RozwTC@cu#=7BvA=XKdr^YdcFSDB$u|BBsUQ)?RY!N<=6 zta#Nyp(86}61Ug}AfMJs1ThUyooQ2huEJ+FIdh8#rIP~owq;}O(fY1OwE=Xer`%LA z--M1cB;X!8QOIb$7E;A2fGWJc2s5#i&Wuaxh>F23D+e~ZSGyDaW|Q<-eb2O5UvBsL z@|MctMASRqN+XmF4cL{QnCVd5b`wiIH&%gMu(nJK@$Xl@D)fSEAO&>1TuCAZe*VoU z=C=kKyb+Y(Li}m6zY6SIX)dIsl}4nBY?Nesm7~5wpVr|WD74e#H#oG@ClYnP6-;4z z&lvZK-=FMEvB6fwC`iJO$tmcvnq%UiDA$?THqfNg38vw5Svax=rgR-rf~DIBPb6lW z7AmIqbR{L{;nl^WNRVgWCQ1?(VlA&Z){sQ3o0#QF{xeo6ffyz$Cc$<> zCHx>`+n(Z?-wC1!%Aq6JyUVS#rcSt%913>>mfNlw7%AGMIN%)bU^<{jq35sBmpw-U zV>T8gSD6WB8-0Jd2_$arQCi%w8Ncq(4A0zfAc2X)St~8xc;mu6lF5kH3y*5XazIz%BvPUWzdr zICKp@3-rZ(vCdt8a&+$!{42lq2Hv%^+~_uL?>a8CE4k2dc3FqL`3|(x1ggL(sD2sV7X`VuxWeE<8CO)WT!muoC zX2OBS|D6`O7FoxPohcKbPhIt7@&aTq;d^@4bS8{E&svF0xo~d`@j6jt`>Eyk&oOU*rG`aF*_nK7|0@NPd@K&UZ%!{@eUb24YP`zcB`Y4 zGW*sV11Wv4P9M70MLC|yWWCaUoGOsCE1B&^g>T+D zfHDx=Gmu=Gob^THA-w)U?W%a?j)6CRYHYcQQR62!`!?q~j=KkYgCxViqd$vf;`scC zHfqtv-;5XF$;EeHXp3WF${Sd`4lBNpxO@@22>enq4kj*wn=mFels=_?Sj?cc9rpbJ zBZUvexr93N~X5)h0!dYU?kVaVIMxQ$CW1S_O z4GF7Rowo4`$36Qv=_x4hW-2^sL-qS8d)2S)38I#%m#Mg>uh`+xqHXkBoZ2QW6PKjs&kb$^)&#mL_weMKF8GSdycKX;br6m@r@mUK$i3LY{HIYr%YO@s9 z(2Qvef7{+&Y9=6`Gixz2WC@zm+tl;jj)+|3*W2(kE z)Ns^m6D=^*f#f>rXj{VXUi4f#_6z@4%NttW6^W|1YArtKUHLAq zE3$@9kQBZ~V=7)1)E0}FIY`PSM0sEb$LYeK$ie#c&8B!tNzms}R~KLEkIlkq!k$?I zB?PyCDT@!Xkz0np$$cF=DzS1kF(IS7q(>qXP8RCoFJaf2^A*EjWTTVOh8yWKCCeuB zAVTGhnAwa`$Q$DeB9|!WdEhg1q#)(AwBDnC&rQEcp~&@~ke@hpx236!;0{1PfH|f{z*BJL z`zcY*{|8efd$$Hc*|e;grfI=7M;0TD95D@@eM-QRSPpL1Q;7Pash@XP$;>TYa@8Tx zm4jr^oyz5=D|2{qN%8SLucm%`|^#@q$BweBM{3)_?n_EpF zeJ8VoFS3fr1vErc%%HID#q-q{Q3p<~hSP747df?Cb}Zs zasqRODy)@ra4V%A1~Wr-BUo}{X!ukkdzEtImuFP+9NOlfRZ==5gi2*4LoFmPi=}V1>%|BQu%7tbAmF_m#W2zPdT+>6T3HS^!KQxC$^yK$pqWK57y(uz*5=uEy-%`!)1tzV>l>Vs04Yz zjgOUt-pkx)WjTGC$;NG%`K63uYLTPvIt<jNeHcL=4ZUx>wS zPbB`mf}zmR2W|5T&i{y3pH%=cHCZ=fAcy3$^Q&UN74k+Y{lUVec>jh0w~e+!d%tRU&*Q&n=XQ!L8=a}sEaIZc7-U{KVY zQn;F6#ga0a8-y#o6W!(CkL!JnMOODer#d+zlL zCruciT6%?d&;;E$KqJ>Tl=EHkQ;*04ucJ!PSdg~Yhqh+lt-G%Q3VZi06gi`6){~u) zgKoxhXicT-TuqyhvbQd*#Wckm#{*KL0?2^%4(hEllUNo9prI=_B4S7cF~B+DbjXpYRl#7T zxDfAp`=xjH5Z~$L0{A6M$SQpkwDUMdCug_t&a`rcf1B3w#{sIhBw}ZAI;?SoHDOWD z8En*)YVvuy*TP3$22uz}1J137OzyJx9HUbaFVS}K6b8slo_P7W@Fd6`+r9dhQ6L>c z=r}dq#9}P6cv40Ox1W#`yvv@Vs^FVP!1dlFGJuyN8`!_%aAF`Lv6-=v7go^Q<1!f& zYUF$`GxX>}dFmsR%i=)YG-Pp~=7XpuhL^87g;^Ce&E@kx&o z58p}C5@}%CB=^t7-we6X%By7_G$nIEUTvR@g~Om zpD-f1G7jO8Tw2}3est}p3*g|WKZ%ANS%epS;2u69h(?UWdxHTOh(lmm&v-s2>Xz-D zd9u+)oDR0)($Br3MIJoHkjd%!iN>VQ^j1$#5QsV_=M%O1))Vmwt%0WZ+XY_nrzZ+m zu5Xeifxn6w>Dpe2^GPe+`V*5Jb_$Bg?S{qUQ)I4)JT@Y*U4~Uj9zQGg4=mfUS)k+*SrBNA-XA+m?aO-c@V=_xL$rT zpUj|ca+JRDJBlBVCbN%Fcxhfr-2;}lIT0kk200LTQ&RJgyy4-!3G#<6Z)0i7I!FJc zZp`23nL*ufd25MYtX){c4VhP4vKpLo&DNLB{(;% zb0iH%3+BmxZLO6N*wavbvNZobIt~4a^jcC>CI)NK%R@>KarBLL?(h^~uqU&eCH=YK zo3|Vay7EORO#AFtPkcHSpPfAk5qb!H7#6wpi^6^x{1Y#;F0U-_HRULb6! zMpo<`9aEWo5c?0sc!Dt*Jdwpi+6)v*3%XPc1vZG=Ry8cc(}`5}tog;OJo#;jZ`41X zAATzn^LM85FL?0iSQ_wG#O0r2Pb15UCM$x*6vkU6JreL&*S?-6JaSEte3hBp38opP zf8_n^YKkpR4tY^=qu_Hj-pcYmYE{F6g%qneVOQ24;(9~N5|QA9h00yT&-G}{TXllW zKPSnCmjY@P)g~Rc$#d^tX`sMAR>EI&*Y`C@tRBlH(F&l+wou9&oj*Fo;TM#`cC%Sol{f(Iqaz~Xm%n7fiJ7OQJ=S_M-tdmyk~MCbp9eXYd}UTr8VAODd-@ecQUI@NHWU@Dm|a$Mr~UD&0J zr9aXhG&|kdPegO;jd#f=2lETXOz_`hR86d6xAKSYRURdG3zGb;&j3rK)b4oBKB+5e zRQKEsvFXP9rfqZntkaUvb*W6iM?dv5@o7c2c{qH(zRR2aWF4O80Hua^cme2#_2xly z8r_Kx>Nv+{BbNC@O)$?v8!K!4Zwe?H<%y`L(sDBgqtic49O-UaLgr6=G~xrSEaP*h z9tk(Bd;95TJiF%%O=RYT4ikt11A0yPE64Wu@ddZUt2qd>o`+S|T(GFf>1w1 zj>M?03Ts}{i8;QhmIhK|hUoStplhH6P(8M_Hf9_j+M^vQ`%E&A+8F(H7)_Ufk-}>O z8olB5I{t)@EzNlHkJ~yJ0ddnCST3?pi0Z=#q2KC%VAS6;|FU7lv+D6Dd&bn&+3mk3D z8Y}Nm1jUBx`KBvQ0?f%b)&|VnH;&S9rQjGoy#IaFN#idno;#~B3IVcF6$w{(&*357 zyDF@JjU7YCzWJiV)HjD_^}K?=Tf7EBF5xs z<|Fzxp<`<~-!oJ*pZj^6rn&B{sP-RFT16rxiZyNH8$*U28C8la6;c({!U40uG$|VHF30N`^si* z8*@=zdILKUGedeTP%-u&GZ`8ii>6!pKVGLLH8uo{n5F-`7p!7wpC+s(&s`YbvA#r0 zPZh6lN>6W%UlVgQWBwF$h##)vGsoHM$>-uPc5@xAK`no;u_m4I-?EdAzJ+$>r~Z&^ zW|thU%NSzbW6pvZ99o`Ab5x|v@0Ij>2+s`Xa{ePAruJ;_3NHRz@DA~7j<6<^v%b!K z+a(lYcl9@?aFKSHGstKrs}|-yrck^e>{g)OmA_LDj;o(4X;?JOJ_YmG$~cD4@8!g8 zyvlv1G4;evMYOBVCP0ua?y?abv<+SRL^xIzB**S8SNnDF;|!}`)A4V{VvGF4Sbji_Fv6GXO7Xxl2y%Sf=Fs1mG?Z_e}mCDBy#Qdpm+uTOoO{* zw6=+WozZ+{rLv(-{7kGeLLgKUpk>68a=oHKD@6IT8?XNT)OWP{w;6$g%Iw@`enn>r z95Abtub`b@ucd_k zl}Hon)w_=VR;>U*GqVat_3V~Zp*f( z$p!^TuT1hgvDN(6ed#_C196D13C9~=Y=gmB9A8N%iAnmFiCz5CIw4{((sgzT!s{EU z8Ox~bRNr0O%`bdxV`ho`oh#Eva>6^*DEShLPcd}wkx4?;51XDaW<8^uim2^ zV8d#Ni4fh>iRzLb#$RC+%0; zVa+E3+mT&Z5A8mt(r+G7W2F}vTFj)2kb8~@#w0lCPG`WV-)Iv`k(w%|%F*vC=}J*U z0*%ck-=McqD3#wur`Ob*J;(`0PG9buU*!xTHcXF_=WU-r&B|}dyDa6jF?#PadR$(U7DnsdF z1)Qs3ruMPUmUas2a#^U}m1dbDd&yttFJw2Pz-bjZf+?)mhm4U~P)zyNQNES4<5CDy z%73H((=n6ilFyH=S|;G@F|x97+x#zW_PuhQhyQRmN>ssQa(SYG49=W}*6bdh7Kd$JY>jod`9j{xLX6 z>xoA4CfQijgnEv!;ycSvj!}olZK;4BC%6u?{8Shb#@pZW>ptl;J@6RXj=#`NDHEiE z-?St|Sh%`(CjvjpQu}4jRCaZ=s-dJt(QLzinCr76Xj{5Xa&g>&#Up>nq2y zA?S303T$+bpEduPi(PKu_rwlLomi%Em;SKGiYG#3iVzymERK|Wf2y0)`y3{qP*=qk zV)Bg?Qf0&LEz6q2%&)$tUpwPw$NqkbavncBt}kXT{1LIW`HekYc(rf3;_c z<`iW1GOTsvmczS0AiPqWau3}smA0_Nt)R`cLT`vs-6zN`&&_8V_9XU9;Dg+=>KdV3 z%gyKB1nM+BUEP!NdCiJbFsxeqp6p_8u5mVg{HZUZljEr*iWnb!<^?` zA)m(;y4peN;ajx7d5h`9Q+JWveMMQXUUB<+^e^1hiV_5Fz7kZGk|v=FKw#`O{gR%R z4nF&;Z+cBtw9sTFsI|1JvZz>Sem%`i7y462=fzgD<_6 zHB0(p$MH4OS<6O}xyB5=-?wpc-zmD(4b6~KcM1FQ#xZQnkhLxETcx5YmkfOKQ#hHV zE$T{w-d|;L0yyq$&1%ifYHJ~qzn>v0;b@4~d+^2{G&=SsY>htM>DfZ9^Kl{c0m49c z)u!$<6NpvSHPP^1$EF!fy2{XcxQlU&l2cdo?wus}*rnC=NkRk_|JK)XQbPbuf$HY_ zZBksXSIyKKr_^T-i{pzTrCEeUhKilxS}8v)kuc+G?iEU2m8e#AbPUZ&E8QvAg*`n- zghn}z2H(>tx;C{fuot^5ZS4*%m#Q*Dx{zLK8GHuE6NY`vS;lXBQW?vCsB}gB6{2~3 z5YJx{*njBI&c1+6HLHEFMl!qz(Y9w%-qP@ns5zD$VdUPw`g?nHj+v>`LcN;P5S5<``je2uJuW~%auO*!lUPeb7&Lb6&-%AAg=k!pid}I(B&b51GHkSUwbNMb`%1mHyC>gpcTdGuz%#a1*Z*G=*v}@@hzuTtw zd*Xa=x6n2SmGk_37tW?Ur`I5>6vimF;x3Ff;|3+OM!VxyH6YE22m|MmIUU!&=XOVI zwfZyp$C?P2a%EK4`wGrV*a}cQABSPLs>@ zeV8K_lm6O3a+9Biq`qysfS6!NSQKvti{7bQEI9BU8TH~%7_!g= zB(lO{gp9}cK=0qwr<*<>1#L(rzi>`N2*f2W(skP#@&uWv5f7ESWQF53)I)cHf?LaB z9T~rdK<@7|9=yH4ciLC>bx8&6rJ%tF$vn(Iq3%J}=W#vXqfZCrZt%}FTwWhc`C%zq zgz^&EQd1u}>I5w+5oVvUH$Rb#Q%zXTS(f6_Dr=J^GySUq??n+=dM-YjBg#9GRA@rn7yCYVPxdET*nMDBlKcIXY0Ndt>V-ORG|I;B{X9q1I* zAY@uiMSkVhHo1-}Fs8OiPq4H^SgJ=|qfGDAPyH)gZZhoeKwi(F9m~zXSGKquhEUB5 z24<%3Lg%o8#uu0jVeX4R+*E2_md`&6G5TUa_0F2ZKS1yn^%>P+k`~F84tz^*mH)2N zOyittFl|xih60K&S@-=Ti&*rlS(>vv+Tz^KLDfc*jrW7&JO})y&K5YVop>lbh*y5T$s(pxi1lm>mE)-uJn*-jtv(BlGaEv+Yhd8n8UuUyPe&lzY zz7agPBG|?WrUqsQKJu3tZ}~`6Tkhr5K`Vy%P;XVsrD4N;K#|E+~JM3U%N!J zNmwxpyY0Eak}5P9%o@?s>Xjn0YhPhXnP*f8?4*yd(PIyDpuK#AvsEb$RALROt?{4Q zWP3oEydiEwf8BlV+xPpvh<2$!F#A{NU9qOM=>DINZJ$aDDv#JbZS%CxJ5`T zx0!&)Tns%!=Z0U6EQkC@^j;bh;p_J*881H@I-7@yn}2vW*?ulxkD|a8^TxJBDc+{I zg!ZZbsxFDs@p|#?amt#zax9~6vEUi(!IgU8bBO|#dzqAfe2 zww^`PDy_3vMG<4NyKettuQE5RnBoOget8=dzOpmD}t9oia;rU>4;s&^h7~)*}_MTs=!AfgPBHd zxx32(O&$)t=7fz8`&+C^d}QW{FsOtkt!Gi(`> zB3raPKXhI<-yCEH{^irH*1eb)(sRyzG^tWONc}pU%+mc1N>*~sxZ!qClt5Wp?4j4d z*Hq+ga&fkGShXcEZ(cYs+k364TC7NXF%LlhMAw`xik8A=|0qX)x^tFAhhAwrsfHSD|vboX=OUe6pm~&mbnwcMiWi zQuL4hhj>~mH@tmjr`k$j5L{apspnIzYx!|(6W7${KBigojZhKW^H(Wmnxt@@pDwg;m$cT;-R_pHsmEE}w!7w?`sSDsl! z7JgFGPQTOyUTzoqS#d}@*z%>NI~;YSI4Yoz)_ot;9i8~aoBHbD@?I5OAC_8zs8{Mo zQM2TK-zl7&A*FnyMe??hkH_Rc%x}zeImu-@>|2PT*jN5j3^XtuwxmADFVSPB80GRk?ZFJ~cUd6vQ>a<2UQd|^n&|1MvawJZC4 z?6HvlCbMk3m$;z%RFRlp#|5OEzQ|8zjHj7jY*QuQOCcsBC8Rmh-$CEk-!T3bu};mm z37n!|{ag9MTOOCP#KOqNj+8`SlijKpC$eG75gc+qxX=RX4a)Ixh}3ZTr`{9ArlH%z zW2W;yGSxbJJp))sn%>twjgS>bN}nLilgy_$h4Wu}W>hZR?vyiM=fjqk>)dK&Y)fJ` zy0jxp`S;@oUkR^CipEFhtGoEOqv-jC2@^*)<=DiD^k2lIE$}BdLhF5^K>Ef4>0a$Q z3Pv2z6D1C)f&kJ-BL-TqHy&EB>XZBACJtS9KTs5yMG^#PF%bo>H5QDuH5NoLe6ikv zgDMCSecIzLPEACB-)=;KK3~G#y$Yng{N{=WVCN{_KcRiT#X<`b_=5>*FrFl`;(*{r zg8|zkL4dq3oti`^i2^tvDKEp}!1jg4&tQ?!5m8dIM!3j3NHF$~ zFYFqEjSusHnW_1KnYnx++JnCO6BmsA{;TaW5G>*PtL+6A%uI?1jQ!?|cPbE^w0RFK zL7?#|!s9)6)#T=DNTLE$qQZpfM~X;RP3M8vPbXtJJRs9LkHG3NX<_P-LXtqg(158| z+!yqF^q0haiff988Fgidw{d*PfY32mVV99HA(yc+p(ER4Pf?#oaYL(7{8j=pMEu;%hkXLztAyh zA+9&n+s2!~1fYalIVI)QGXbmL{FsV)-Fz5h<=omWF1t!Rrl#J zOh&^08JGw(a2_AKLLDE=(>|aO5V}n~>PrCje0~KuvqmLw#JfzTG?I+$74<@YN za3E3Xxj&R2Rt&Vzp5ym26~_N*rzL{)lNf^)ni+*4IsWRL|5e_g8Wb84T{{b*Jhh{J ziGh7;$Ak6LkA@Ut9)lqH{=u@de+Ij=ugiGt4EhB38`fX{M0{!o!1_r9Liue(LJAcL zLkKyHf|JaXfRjjmSx^3D{hPGLd$aZqMF2%4tl!3$ti6Bw0&f&M`yNEs=)_;7s4r4J znb5T}H_B6FpQhi={*SMgPqB%uPu%Mp(l6o%-jmmtArgT|egZFGega?aJ$xWOdEJ6P zc@e<+3A~c*>_2}QHX_|WHp#O?vGwew(rkXDd`bAz;}HD%lrm@nu* zynW&23m;#2{z4q8FDNEN@Wub<|Ksy>2yiUi4}jb=0(yQGpO_DkZ*UKIAmN6w9iA0a z8KR5Ed&mp6ZzvD6g~#C|1Ark@W8n2?sG!ta;Pj@ao5o)p7$+KBY_t*4s*vO;P(PFy zBGsY@9GROKe2<)J<6O+wr5gAiPmPqSB9pmtF%u|J4V4R_k*zMFZC{R|=LezJsUBG` zdZ2JpOViQJhU-iZL-UN|<@+YwWJ}hHDRSc&js>vAyLpT+PEa?|hY}9tMG-eQ)Kqs? zH&?8{P#|qxFg7g$1Rx0dKnVJP3ocyD7q@BtQs(gian2Q!%oPjInS#xklFpf;6^|Je zNaI&a#fkyXFa*QF1j7+P*YY5|(G%4_@PZDIK1gk%sN8eKls znm0|70O}$LzKH-kzZ%wy#<2d^rSfZ;5(9qI165cSjQNWItwn&hBESM=ytDZkRl%~Z zegKF51wi!xFkl1QKgLM-RAGZk(#-jkQ9LlF9}e^;@SCD}(iXYiZLwMYevNJlOHvG3 z-M|V*5~J{>O%x17A{I)6d(y5N7-J6y9`gB_VfbNDKhla`IAd0iA*cZfZ$*JJ?5HG( zWA~JRY8?RwvukbfoyIg9p(SfhlJiUfE~|sa#BtMPO5k*oKr0kivbD!SW9n~HJv{HH zD1lZE?+en~m5RhMr8t2sF@Y=*0gsLva%Z$Jmu_T&ye`UufiR?~eU!j(G~g@b`qno( zK(>s)8NuGoPig=v!CvE7&13%*1vm8X;zaWQ_(qci_NcrCuvYGc6b_uxMTo{t11mQ6 ze;NZ!#|2OZ1>VBFt$al1rguGRegCxIyjS}I{K|_<`N}K4ec$^i9;%c$ppy9S<*)sWGU74F^>90N zeis@3A5KC1YS{mYJ_zQ2d)T-!iR4!bZQnQJ@vQh0!e7O3b&Yrx3FFxfb#*O&71_8O zPu9BOJh2o1hwRELv!ghrj@VLvn7E$RvwLFWCJS+kj9P5VIjvi~+rejy_ZFoC056X8 z&ubI3+d7Y1+qY z*iBO@sID;u51`HgAgFj^iuy4F(>OJI@`??(X)4q;2H^n=y8y(j2;#^;j*~u)8~yia zs~J7YK=>*E;bI*snS2>JR!qI|eBHu)+`xT^%t2O&cUG>dA}QWAKfRyqr%la64|OGv z8ndQMF|)_Ax~ENREdb~3ixfHqWBnsOrP7cZJ{pidSTH_VkUrluPUhiG=J8I@9f1JF znj*!a`QpqV!1UKY+)n^g5CC2Ts1*yS4FX8k5FBFrq$Hmt!hx(P=7uQ#ueCFeYU2F* zcvxiL7X=|h*paP(s00!X5KRIon+t9z3?L{VU_c01*<=$l2_S-^qCpJQ4Mf4E7K`l! zMNJUbY6~V}K&mW(pH^$%iIeHEoL}Gb{_)Ns^S#gVx%WPkd1gDnh-}M6;<=7UbQwKC z)}GO8TOqHy0C;T3>M8*2HON6KWM2zuI#P9Fj*U#J zER$-MMBU? z2$~7SYK?G8%&_6>M4-nXu#Fs^Dt*wqRyUYFSyBd+^yO=h31q%Ks@MhRr^tF+wjEr|*d zaILvuIhB2?z%A}NKEoB1L;)q1Kma>r1>3aPa{nSpREst2-1;VJk|ogrG&O&iqT;)FyRfY{pMBSXxpjtX?l0w^Y3#8* z0qz$)iC7*4Kk6>oZNY$Ny0`c>G=babzFFq|+!g(87X3q>O@Y@g+u{Fnk-2(Jzo(GH zRu6kI(HQ=st+dq-2-vZowjJ(?IqR0&as#w_xLe2jCb+BsR?-C2b;pIeazuOkZL3@p|C1!&Y)&(@S5^!k< z-!`asg}Ql%zn^3!p+jujulHd%0SNSS=VVDZS$QGPtnU*piH-a9a%u+Hp$tC>cRXV6r2E~_eZYPf<#%IAhgiK|&y)3t?HcJf z>hD*$MHIg5@Uscy%+62Ackn-S3H-jz+&A4haG&?XPmztE=iWE{?YE52?Xu3eE6IOs z9R1}#o!Ra!KiG@EdAoB#=YfHq_|0nqTWAZG4TydDv~)hLG6Fgr25ks~qH?GCDW+$Q z&mm``X}f1`Q;?uUQg}!Y9{#;L1|^N^v7X00Jl8Z}+rNrjRhZ*Y;HkG{0HlVIS8N~k3|a^MvYz~wFx?dy2_bQ= z(aCQern^cXilh0kSpd|Q42UU!m_c$d$PTf4S4VyBS$_%Cx?rpPD7>r%bY{SNbnp)b zEl2u^&B3qh44)8xenv!2CG7Pv_lE3W*WJD6S=s>3UkGnHKpZyQ)#o@IHP~L^%DhR8 zO*sl065-ekw$8l99+wlKrax_K0W@EKTB{QNj<+-_l|pMq{><*%IF^C$+O8UA z_9^BW?(#9Ddfl@`R zJq%6=gXb3cUN*{1R>{n^&)ftC!C6&oydA!!nK@=R^2GiW*lCUbqgZRbrzoHOQPUUL zD$NeNrlQKswr7rM7O_izY!nX-+Vd|RY67jAz#s0kHY5eXb8Fcu)+0Xj{&bE03Ho5g zvia|GDx1V<$NDFH7_hM`J~Y7hdW7%oUl_3AO5bBzV`l9kBR)a>6W*rTtJn1p9qgab zY3kYW4gN0;27J+aB-?$H@4$#P{?$Qd_C97d0e?SG&fBCk@!HNJZ^Ld9XVZP#*ZXD^ zGp~1>0#`!t-*{yQn;YNhSS7 zU7xzecxA{{h4icaxWKDhOhyZ*wIF@|kAdeRJSf!q((C5MIeGM9>)&4V?WlukalraG zV4i>^F>lJr3mLYCs)i>t>q{-^M?x1(y|3)Ez2gnt?D-QO8Y!Bz;{WLtW zs2*MtGd$sT1m0belNUOST*wTk3%wyLr+(W%cTyndoW{~ligf7vmm=|4ygyWwB@O=x zAYVUJ424m25i-&;X2ZE20HQY1EE;K5WLC$e3Wri2 z%}<3Kkq`V{0O0chd;xIOjO?pIKG(UOxgiSnjId~Tm?Du^;G4wyUcB2y8N2rBfXJ(qM;gwkfk|$+!KI5XxelI$ z_H7WsHqL)U^)0tD-y~}*-oLaqLj-%Bm4ZamJ)3qIzvA}VTe);pL325rgAoC18Je2O z$h)eZG6eH$IhSILUfOD|hmG2g*)`1x7O1TZSX@<{Y@_*fti58jO0nJ30Kwcs&RJD! zQJTSVCMQKg_(kQ~pxp?;rPqIjxn6tVF3!=CqA@SLYBjXUoXHuj@XxFA&$7^o2y_D9Dpe&u+VsV$w;bo(+Tlnb9?rjR z@MM|fu=1phCOr^GUpR-bwA3#0I5}TZ9oKqK4>#eAo6y8vv3Knqa8$Cptwy=}$&}H& zXo}%=cFt$yVu9ghdfv~m{`M=nG0B>xnbAz#8(Gz2M!pCybjbBCWU2np!28zgp?F&a zv?ckWc->m)y@xEZL7nwps~EW90+8K9t40=PNkvZpavm~YUH*C*1Zkh14uX6sP+}v^ zx)EOV<+glOi9D)8eu+G1C|J`GN@W!kTWmZRmjIPS+P-59Bk)Ii{>{Q6l3|X7>WppK0hdPVtf!qL` zpgA_emx_U-1;Azs*K2LK{BTnVUMoNtVsx7aAWBx zv2HPBW?Hf`TUpt~COU~Q%ouF0-2KrW@4%e*ug zKOMvG@_ttr{HrJQJ-9R%R-R$+8^iDSeis#jyr_1idvJ%tp;NBF9q);#RV&@=t4M3< zlTqeRXg@#Y!p;uR!x+hs!(>#Cq^(u}UU?*GU$qdLjsq+Nq{Uay*evNGy-dE#n=1f~ zxo|@3pJ~BUPXdP97F~FApn90g81@u+Kq-fFl9%*>rAa{Dp11@diFBLvyq}ace>gn) zFnq52*zP6u@N%Ve4@f<5xDEDzevJe4Z<3xP&lMim_K9N_LmO*ybiDeI7o>p4V}Osn zq*#-juBmblGDVWk5r7;9P|6<{8zuqJ{NWS#PjgHojfW@d?pO~Xe`rH~eh3&%zjd&b zHRkaUJbsaN>$BVFQ0-{=r_ff~8a}Ma?CP@5ZBWha`u(Z+ltFHTRvU7i{FK)ftKYd5 zvgk&BX`TGMiX8Oh0!@44j1PDLcCntxKKN9;=q3;y3tj93Ue}RrrV^mX+CKviEeCk} zP5^5x2gGanr5jsm`wG7+z3)#x>3*8kaK-2$&uf5JRm58TY2oP5jlR*L-4y+gpKCp2 z?~%7mCV$+R@wxePZQ)56TK$ImVcSFTlGf?>_%TDJnfLSBV5_bAyE){~XWQVtb>#j9 zBHOgp^&_`{g*In07S@v!JahXJX6kyzJP$nufs1fnFQ8pUp6ik8x^*ThYU>PNY5Kjm zolh(Np4IgYgY2apJvzi04abkBXG+S?@86tx>AdK5!EdH6d)AD#a*9Y3MQ;fy2C0Wt z)vqjeea$c&No2*_w>A; zQ~*Y`Q(PO%IQ|Hsr>5w+13u2j(r&r0pe$JM!Aw)#e2)5+%|rn{jpL_XHRb7hya950 zMcDn+SMVZ@V=_YcPq%-Bz&|1xf2;39*E~Hh2iMo2tEFVV5516AR9RG1xlO&EqUXiM z#~BgJ4u;-?sd;I`F~XAWUXrp)=EYNKsNo$FQR+E0n|ETF3u35;~9wMJ#GpuzfkgsNUbd!c{aDK(q# zG^lHh%g%@>ac)HdUtQ`W_$ElRl2kc3r`19ZxT+&!Jw(IHZ zZ^w||&dC?)?((=`yOipX(YEBrn^Zu%UJ%nmEvYUiy*2rCVso??*YOF}d4X}cSBQjB zCot@x9d;}%`xoEO&9;sbdR%kGtiNbYjVubZaY zjE>C-`7`^YQN*%{l$8>E5A|2wdO>co%{zn$ahOy(B3Sm6+S*OMMG{b#+8G<3KjILf z?qIXd*7~6b_ppay&ZgLoKq)OV-sW{vc}IlZq+vCE4X5mrM6#V~Gp~%g)WPVAfgLv# zvFwdL=-5qOF)q)$X*X$4mmJNbQ;|DlqZV~T;f1QsuA^utpS(DFlf;?;Pxa=eXnMdKF-+vOUrLEFyApBkaXG07i7GP#ZOMwy*p;+1^&f>TNLxmHa*P~MSZT>joICOw zM`Vqd?%Q@E1~WbzStlU1NT;1~G0Yg8dwk-Sgp8P!_$`TXh!d=Ycn85P@!4Q}8gmPh zadJHBY)ec=MobRs1GBe-2q7 zM-OemG@FQ)<#FYGFy0KU#!(QJ`^I<;I@*BgIz<_+#o-j`VMUz0`LD0?-^xLoFuko9 zFqS_S2h%l3_s?JP9tTk#(=bIqxf?a)gXNF*!r|f&0~?#XF25FS!IW=@ma+I4kBvVS zX_oT=Xg8eGHPpZ~-ySW?c{wwi&qnIxDavz`FZ{tT^0&@Mi+``>vA$k*A%(Ab;UL|y>U1LMG@0)k@DC4;0Lq=rr0%u%@;jK}uFLZt5N{4d-?`3v_@5IcUzS^0wTn7&8qzUFa4l*b8CzD{xc z{R00NUI~G}<{O`*eB*PJx0*Ep2$&;Zwoba6!AS~ z)nojkS@rT<niU`86y0!k|H2QopnQ8XHZqi$&3pU{UmYet ztKx93CMbukXY)({h5sQA+f%$)_yDt_6I tX6+(h9K2WTzm!PSp93QDeGS{p*m+4lJ^ovKA0k?NNPdF;YMCAXe*oRbjb#7; literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/ffi_c.so b/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/ffi-1.10.0/ffi_c.so new file mode 100755 index 0000000000000000000000000000000000000000..69cffd152099f5c3728aa2a7c0b8dc17552a2b85 GIT binary patch literal 438656 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 z

              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 ?3?G#=n4%?Q$j&xvB%tw5ei*>*6PEB& zmGDC*FxSwfg9{9|1WIsu?6OE$_Bi969idWd^2}u+Qc!N+h zUIp_!{PQyWT47S;1YS8KRb7hjLNv3<8gl<;h1d~S z?0B9i63n1amBAx34{yz!7b(Lbi@lZlQAnGrlPXu)I)t9?##s&Dr_&?L{LalDk14TX zJ9&at&4T<4E#L)n9{_O) zEj~a5@{wGei3;o?r#wN6Pf95)dB+|H(kNYTFD;;jbBTbcR(2MS13Dc&r zP}B{RehH{h)U_fy!cf@L57VYkLB0hRpgK1#&p%t5di0hVm|BUu^g7H{0>5+?#glNk z%HCtKm}74`s0^0~y?o?NdqE$#NB=?Hud9AFp(55%1Qif=Kesd~qs@v^pXAH^BUukU z6(L)Q5$1{_10&VEz|e!hO-_w_XDX63XrfAh%>rTByU%BN0b{Y-A}P3+tR9nRfwcG< z&t>teo6KdUODH#nks_RQL4#tAZU1{d{}g7FArHd~Jw0)nsXhCL2mKGa^<5p=9;8%8 z3^W5MDq4J%fDb%npVFari3wH<5+*Ws1(7oy`L>2cTcaD9&9HduMK;X#gphd_%r-`W z*0HDREpb`#9{HQCanvZ=r7XSja@Kc&;^Hz8D(|!rR=ixh$`ezx3U<}YNsFOshpab#-{$6O;NK<_+G2DPM-AsnQ%SU=^g#X3~K1+8UD{{ock=z z(`^sc%t6DH&Ub6G%-;G;Q@Z>qn&!l*Gx=5J(y8>|tQ2bJz@DnA1As2y#6MgS4;7;f z?x?$)4AQ`1n`=fH`KX#O&DEm}_2|218OWyiqY9>{wqu$^%_&pj>mV-0NpC9a|8m+P zhf&<(#_J9<1k~plOp?YF7c}gjH-LW#4O>HRVModF8*4r_17)NBs#}-SCq%-=o@=9g z@5%hDBhv4yfGD&s+$nQKxeE|q9yQ);`2!^VXW=B&d z8W7T>6GvvnR^?FB=@^A(!bx=ss8h4lGt7zal>Q{I{_@RvUC1u6j~om13yMXZvIe`f zO3x-!9mZAK|A~Bj7>9quhqd{mAHDFhKxpiNT6zbRY4!sl2nn3T>wqio?wt69cUE?QPP?S!kcC|geTJC@Mi*^L>d z4V=(xQ=7n{I3_c!FUqwB>7#%!=hGByO4`+A+k{Y$UDkqWHus;il`QMxu}Ss>r8ijk}J z_@8Nt%wjP~W@V~7+Gqq}fpULDhPoaA#K2(1J@_J?o<(aKBDvIpH3v1?!xe&y`qn$o zmZD7i+E!rYuhthXd~_b>RekGv=hU2xDs0x4oW&F%n@zMOjy_|&s^1cIP?-tCpbZIc zzu-Hj*bkXaoq);N(w6t&PpQw2fe>K}-_Xmy0kR4hUp66o)eBiNGVKPSPJu(0$Zp1Y z4C;J4O2wPNwv%a>pyW5+Dk|3gy&}rFHZ;og=+H9So80(qhu4O3isdR+9&F(=>eSfk znePQ6V7y9wmdZb+mhRPM&mY-o+Nhk))oW;o3wEg^tN{+BUFG_p_z`YKfvTV2W$)V0 z4DD9)mOpB&dw+fWvNZdep%wZlQlGIfi;vmMv3!3i$BxSX;Z{K9HK*8p1pO-w5m$jM z23pJa(?CdZIg+Zq-%S1_kwu9z7MRx9sB zI0bzyFq$Gf6b=%S%r>5tX1@dYZ>eKl)6ePwXb%ZyIIqDYApC3o2 zC5cH)t#!iR%7s23tF=4=@}Ws;3-Aa#lg6%!g}JEfv-Fxk(w)9hYPx8|x>PR{<^j;o zv$ny%FGi8l+woqTf+m&0Hj*iH=trgQW|rnei_|f5yt?S}gV|LnDTOJsj&^AOyNNUz z(y3-B4Ey8gaK2?*B$kYEdOG4GP?VOA*eZ9345P?F(n7xZ0o6NUM2Cj>@+Y$^gCw4M z?&9xPxQ^GBAI#i?HVZ~aB>~@4ctp&CTp6Fgzt0G+KKc}J?)u%S; z?@##F^KzPejsJoB-okg+Wa^juY0u1iSl|)0`FyK8EkJyHWhcQ;= zRau)@&5?aZpg#N+mB*P5rN@X*E7(^lgcRw8oFKVo=dwXyb3jjMg3#uJCq34cPMrPo z0lf--Qvx1^UvYsGLY|p{6+)iLf#;?V9If65P#vYz326GD;fom9c=i=)!kg0b?2YoV zL?7tQ3|(w0PpN-rY)d?=U|#K!MQbaKP8}{aq;U0MlHJF()!FCAwbS^JO{-7Ax(;Mn zq3+*ODva6{l3rz_c(dO0)l#(0t~3nc!gzX40A$y~#f)rj%iv?H1U%yuBV&^PKtffI zZ`3fgfSOutqrA{r|Ktwwofe*=hvt&eSa)s$Yo-_8JG`1z1nCil6`h>I6?Za54y2>t zXOQ%1*txYS{$o-k$wCh8grZ2$rWLZPebZkflHa8}R*p{a^CSG%hGnm-HzD#~i^OCk zT0kg$d`q?FFKB474HfZ^@;8Z{YqMjAsx2{afSNW)>_B>C8>!b^D}_O89`lqPx>@c= zHpNc8SWZ9?M`O>W-{_&|IMyesqxn#odfFT1Jldgtz&c4?i`+q9ShE#D3SCiNWZ%Hc zqNox2Jg@`R9o{hOlrf~IY7|^QMdx~8mstRzIMXI!h&|mTn_`W6P*ABxwzis${96gQ zf;FGo#LXgerFc9bi)4#>ZKs}@s^rTi<)h)as)<_hA^C9RM9OBDWRp0IGg!0*ps>#B}^M6GOZKp!;+Q26Uwqv5Sf;Y^5Dwc zZNVu_h<{6V3@avO%8iwD{M`|cb*Gy;73>xjJ48gZA9|?V2VFhm-0y!i@;buLvcLZB zgPQL`HNMH#>F?VxKw5bHpoOBG65?*cAiK%lt%lI~#O@OgL;kd=Zo@*jH?>I#FSe{< zxh_(j`#=@wSV%~8hO7C{5NoP-9{?n8&G$LNC<0i5L#FR?cd2&+AxLPsy7$N zA-#Egk7V+f?z*sKG^$i|Z`0vd!iu1#Ch^DfB+}~%zDz#~ z6@pRL-y7LM)R87))Dh&&fR{-XUYU}IbmkUcCzx4ph`Cn6Pm|JqAy6S3)*=`(fI&^6 zl=%8EsE`g>kqePW8lfE+p*n-2QXI?)Ys?=Srd zfrxC$MSc%zh!Ee0!WD$T1*Y{reLL-21c=XL)+&II4xl8CbFm5mix<`t)^?=~0f#kM zPJ%PVYGM{2|NgJ8Vqt=-blyMC|IeSe2{mMGz0wIz1qK;H);@8@SLGLjBbW~J7y|cm zL{Ym!t3U@i!xQ@LLZLv;UPE{U8X@NJAvQ&f5Vu@X!H-vv;R5eWvV9*YD8mt6*-V?$ ztw0MmF_pfneh<_!Ura$8yeRU5>*baq;NVU?c3a7Un2QUsDY-@tdW0hESBF4`m_th; zi`78L$qWHmu7WEZG@+V<)KVefP*=#pr*sct(|fPWQQ9SxQ+I~=`a_OiZUJ%@OmYCP zbx6QrjkFX20Ada+gtoi|Gsu~oK&d(m64Z=Fcr+>ZdwYtCjmtDbYDoQxA5n}5>%>KLCew;I^e9#p>JhQ{Vu+i$iMeVS@rwY z65ZWTtx$(H;RyF52m+rb_1!}tL620W`tskvgYQU$+Y$&t&UBS8ysRui&1{6}lXwU@ z^#~89BEMJfR?ea>K?`E;TC`KJh&;H-Eb_(A_Rod~5a7S3LFYgGzr9D!b&k0^3MX0^ zsqj38*G>qS4LoQ0pg~!yAwF*_LQ0mQNUzOEfKzsaXajTK6v1lf&$M=l0Ff*p~-)Za8Gto~` z&zwdrU(MQ#9m5(oyku-mBGx23wtNUSVyDMRj(XH+vFFN*R!O?wr+DVIj!4SV@(N32jfxrK>io^X$td$k zIViDk^PUSE;CveTi(CJjNI)^be}iWW}ZF%9U9679vN?v4(g!qkn3$=`Ol zGh!y;Y%>|%T3VYj8b#CvI#^g0?^NBk&R|^J&TT}!JvU==?uDv<+}-aOe}%G()Voce$qnjW(8z8%4Zm1e*(k9j{Wzf8r)z^dkQ+lI@XR}Z|ml8@zK!aHbOQr zWLg*D0)My2P8r3>rpdNk#K<ZT1pigrxGAlE+>6j*I zs*wnMOhI^fOd}bXr}7BjoENE!5AZgSi9hKQX{UCmnb{6t^Ko+gomnWj{%fP=u7)tEnWP!Fx0B>oVNO;a^ zm$Yddv(7V>vAJiEjO>|!tIE_nf#?ls&^NRZKYzu-s6jQ&K&-TvHp7HzFYTp+sC~4S z&g%BzO$VCYv{RikcVN_Jz$fFhoNp_E<7(Ro>LhUnstuoIBsK1k3NDngE3308t1544 zC6%zU>Wq>quaxRDr7G*4vZ}DGsw2KC>yXOohPbLMimK^H1=X~;>Ly1RFKn^0a!lc@ zMT1pcWhH2g2rXlI>k!J47HBye0@K!^#44Ov)eD1?>q25xahyu7P03{qu_`*dlB=rD zTMUfGuEoHVBe0q~PJ`E*2J<@lsMiw3OHGUsBx+CI@_j)%tX41cOfpS(IsEB-pBv7} zBF`-6_YfTv)AKxlFDC(TNK&Bez+A!D;0!AVa7Z-aq{A>c9T}xAIqY~jy4bkcU<1bx zXi*~8=7V7hwrR0WAgvN;@gjpvY+_>(1EA8_(4aLbkuLz#9h|~wOn9IpP>dULZ=rco z96_@45Qa(FA|+QJ>Lv%H>Uf(aSDlP}20EQ8 z1t0HG3zsqA6_(1HkZUJ{2QAQ`Zi-F}(Y6uJWqOBcn7VeBz@RlI>@KN;jDoF{BZf{~ z@jjF{9+!1#Wf=f&Ryg&3A$rILvSOigEEQP*UKX#-Cf5R?Q$LQ1LP`T)Ak-GV(o|{J>t+foV3}*0w9opTgm1IjmZD&c!Yu5tmRg4zF9bMQ`|sJyim) zThK*s{D{3z!6&|fdtv+r#E66NfxH}qD#ss-2a5Pv6ofJ>V??|`#lMiW2l*q8l)L5- zD~o^~bx;_JH1VQ4<4t_P&_fxgAzln2tKoz-fz(1+RT;SR5Y$@`O%lfaFZPG8#7w?e z{Lti6B{uq3UR&^_vX)I~^Rr2nKc|z&yiA5RPSUf8wKWfRwvn~5q-||!8(Wha6`94o zqP=i+3O5iZ{dTtH1WM)GbOEQ)l9xufxpfQGh%|-7n(R{1oLETR))H5RgpBJ#M)FXR z^GXsj9Y=&1K*9#}_#iJYi~9KZ-_NB#%6aqtm*J{SHQN5yIj{>7ObFeIYgCZg>=|3i z!VDO2rE<#*5fQ_*Et-XSJ2ZnRsqwlwihNnr=ZHIAP32<7BzQ+f3WTHwjV%&`1Zt@< z>NDJc#y29c&B-h?a%~LUqQf?c(9O!EqjJS4+`FY4m>EXqR`jN5p(~q6N@o-jxz&WO zd7&%s7)s~{RJss`E{GwEMi9l(gfVoA3|%Ng=S?y!j_Dmeno_uVCk}Gy?6Xk$h3!n8 z&dOo%hJL!C;;DFgu=(;{4zPLB=LfBQoyrAb3j-0h2Ar`fJnUzc^A5zBr#3NCqUDzRTiP@>g*_t-?85)!-gvUBo$2u*AL7 z6k=IJf{MYhM94V|bdYl~M!sLvy=U+}au9RrQicqbZX^o}qd z>x-Q(qVA{a!p7$$wDyX{)c(zh3O?&xQ(@;|gSB_6Ew;n_{Oe|MxO*TmzH_2hl^NG@ zw&DHS`GAX$uzUyVabhr_=VH^E&e6uD-xlno)AodFfY>+HO6C(AqgX+W=Tys!=SU-^ zM_zY=eM~1tbRZj-dZ3LX-PXRiI-I=6_;c1haP1RMZT{k`QBpAv{vwvL$v1L(CY}RP z5VH$AKCE<{1&z4AfJJcmTM(Uh!QAt30Z?; zQPqq#<@&< zQ=7u4PJbcRbOnek57xVPi5T`)l5V#mse~hrbOC{^DULJX3LDXpC1{EZu0FTU*}rR4 zY~_q3S)=U7;<8;?z$9jw6LNHgi>iKvd(meo@k1=WE#1HLyvZ6fCGxC8IB`L(sI%tV zO_CwD3=N5tKmv)IkmDZB-H9+|j zF4pA(a*Vnv`oT#c`?*3M#&_hJnFg7kZR;uRXDF3gMFD6QLI2(LNS*KUu_aM%AM-of zG*Rvk=hB6DQ`Hl2q7pwA_J_AhWNUBDBi{zR3m{=vC;e&tV8 zs$4Byxm2=pz2NWZI!2cD%;<=0Xc{(C&!DhfP9>wV0_$#ysbkeVGRY8nJy0Nv9l+sN za`x#veN$YsrCgBU$7+hSy2Rl8gQ8R-ZeLRobHuO|zb?TaNc1f-`H+k4HxAb z)yToQK`t7*(& zi{C1GyvV84YXVF=7sCIfk(%R^?Bi{6X& zHcEAQR1*evfPJD^Q-ab0&mDHMLahsrX&DSx#U|wV#=KAnDx}|0B6H-IfJziEoTM`b zRmGsLU}}kULtfc1=9#1dqV$H

            W4GEPx`d4j=~Qc_$l1HS~MCd=HZEQY8f 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�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νmb=ME{`i}dzE7{AP zj{NbU`M@8w45PmE#ucyCRl0H4^ww<>Tlv0O*S?5HtoxhB2FiAp-fU$C zN_I$kR>`5Ch!!RWrB~y!8?b68OZb^Q=rPsoo-Nc! zCead>2au8rTFA_7va3Ae50?5BRCZHCRXTo2xLAW!f}X9)*C&8>Xr`Phh-&4UcR{Qs z)$6Q0i@H9eYs}piA8XM7wUbo%Bj|<;o#=@1uX^2a%sJsd{ULHV_k)CVJ}%MCg0 zZhXb-Kh5H9`+a=dO>bIml7m=la<$#`ztM|Pr?4C0xE-X=jBorh``^~*@wT&@Zfj1- z2`pq|(w|GV_rncOCltyeH&3nsIEhWDPbEt-J#)et20@2($;QYG#^`C<#_A?Evob9yDpadLLx7Co(|ji+VJ9w##uPgJxlu*vVz+=e#ir9wCBCd)U9 zU*4l zH}Q?se|;k?k*gzeTv%b|FbutLWJJBj18K&%FLhwta$=1P8x{0K&NV-qc+?Nk5cL`z zzo{3vO2Z#41 z`^Exv7c^WgeywO}8Rf9{7DH1tR7Z3C-gd2f!c02VNqYI4Ry$*-p$17uq#|WDSE{wK zl>zY%C@40D{4T9Hwwh~^M z^v=~Ne%44H<>jzh&osLg#m{8iD1Iv?)vbP?dbJ`K=%gA7D%`v8C6)`ny<24xa9Kab zK(A*lsBxqymousUPWQ<52HYcvd7>TJ7J#d<VVsP`cRHt8HY_hnRPm#f%sTnIoWc7NRqNgr*K`aAWj_us_+lk?h}Vji z0hWg#gg8SduCR&%zA`R74PQ`svlvr3c7{`-0pX}7GI~PiQ;7egKa2)I{x7A2{4AOO zX(cnVzw)vAoc_@yb4%y`etmlrx`kTsu1n=;=yY!U^M}pvyMLecc5B~e#0w>z+iL0D z|4HAF(>|I17UpA+kd^3{X`bHA!UMiTHr z@RWNjZuG8#jQt>uQa4!3#MO;DK~;9WtDMED z&xa3B--WAjL_k4W!uxUhJPZ{;=_{c--)7&38K=lELyh!yw055b3titgKWuGoW?y`n zeE@Oohpo>yyAgl_d`{*2Qc+Hq`RE+JF#tWN-nl-on0+sTGFy7Hyc(Z0lRI@WNzXcb zuxlke`thbm?gBY9sgP2p4e^Ys7pHTBQ1U}6sICn*-;pMgSFzjW7}5JJRU2?e43JxM zHQ|0kqQ$Vx0Q%BOUwr=s3J3!ofeCo4lvIV&E@z8TVW>$=_q{spYM3H7i8>kz&d_Sl z0J1c@XK*E3)acEU>n;wCq7H@QPr$#fJp(Ox+h-cBSEveS;AJS z{IVvLk)83CW_207B{4Q5r?LPi z*ddJuI8I2C2z#)ah+~oMEH%&9z)S&&PrxxXH{T!J)?YEs_TpAJocP;uAupQ4Ss*w+ zjGvz_Cr61ltK*Un^}Lu0ymUB}^bSIhb$RNdApFdzqZH&7RgJ*5L@_N;#?8wZbRCKU z131)ovjl*iVRTQ)P(C`-dP+1+f$fCQ)0o>6WdPjXfiGri!mNAmTP z$I;h)L;f&|b0#(A%Q{H1Y`k!D;dU|(xfZxtu(XLeQviwJ+s<+RYJAYra!}I2y$eG3 z62FZhTC1UE4eZ*Dml2k>gcJ)MCG_mZ?*S*f@dB|Ow!go*8Br0Q%G?t3wcJ^LaT9ng z8sKbxBZ4h{^!zp$TXL~s*;YW=#0{ff^<5|1=kpOT0wWNtjPtWuB}c7YW^Q|vM*|L5 zXO4i~yu0z0nT4bm{!NyCwiEyDth3u_Ha9l1W1|?}xaB9f@&&CaFd{8Xn_v5qVNmlT zSg=tTL)48#QB_~QK#=qh$e=q8@u!vZRLW7w0ZExw^oTO>xzx=KZ$b>Kb?2Ns<)(VK z)hE{5>0>j&Lh&YgEYd)dbPnW0ptOQUG1jsKf3Brv!5`!4TdZ{JL(&AlFOvP}38$-_MF$J%_Gnhs5i$Z@b;jnYE!tg%su)P)>EKAELuL73n zSG#Ze$mhRitcYZwEbqc|hyWe@f`E;(%W1~QTryRf35AiOu9MggM5wNr*_akYSR*t{ z1fX3fSr+WCCe>MCYso~DqytSz(}(wjyIRy`VG*23Al7L>;wSKl6@4gOqE%mAUWeZC zZD=059yyc}n}sgY8jDtk7!QLhK5whCwgOm~rDF7Km`5U%@|01irXN zgYI>ywQa`*2=vN&?92tX#M}`knPa2tuCa#8np4mzRwCYd9N4wQto)!zAJVXUyDSqR zcEkt-txD1gLN=N#-B5f8wX6JEk|-LWTZ;oDR1EPu+lBgGsgK zNydaShfI{ca21&Cg|FD2*Y6e{w?q&#;AGPjr= zy;$X8hhTV0luq)i1Ou3dJisWy3!UI|Y+bO>kP3-P^Tj-^l-%If!lbwgn?kn>*Op)Y zZhcV{NQ%x>e_yqKqO6I)UJPzzo9Htkc4P}m0+qakFzLEo!_DT__6Y31gwyBz1;82= zCT@<-Gy_m_VO$gM3mX0B1ko`Uw^M-`jg}1~1e|a;+tKn7B}?Y7tF|K2Lkh9*+}d|b zhyAD|+2V3>VXB{4+$z$QkvT|sA3$~r0IYwAh*=Jtt6LbJQ5lAmv%qS%8sJOm97xKA zq^Fz~$r==I9ZgAJ@CJ`?YOUJS#J;eB05V`UAlA?ata+jtA(?#fZ#VMtffduEjdnkK z?bb&fzYT{lUIs|La2kFsJnjkpE8fD&7B_Dq6srfr3N$hoTVK4b)C#;K2&vJx~R2Wd)g?* z)6BJ0f%sIq(s$Qer&S!e(~t{NzK_pL(F}0Stcvp*A2Kie;jjoFxs@_1&z#ne>va}{^Pa>!+4XRMxF@<>T~Vrpik^xnL9E@c?~6AQ~@QaxX0P`t2mZs`f>)(log z?PGLm&6D~%>}OQV9vb;}wTil3m!^BUHryvQC9iETdMvyYW@KiXfL6P%!ItBwEA%rg z^$7_A#^Yk>26!XQVv^HQ$`2rT0Q- z{bYrC89vm`+evN@V0)9|f|AlL=8J{yrDdbf`ut~Ke#2r0ZVsL{vsws~H8}gSiN|6< z&3l4=X8`Y}p{0GePsi_5xoaB16s?a|;{L^fl#FA&UQ{~?)+$wDt!*zQ!Ya)kBM?U! z9Hjr1d1Z^U#XO|&+0#@|FrQL$L+K9@+%`5kxO*k5YVDW4<}9*#(4=8APkVr7-VZgn zk)m+gebA}98=4ps%5!%~4GLafBdK>ANw%I}v?5>2S)*F#iq}wC=2k28e7Xjd*He1# zJ5CV1O~ruE>>T&ld*b7kUd+8j54c0rBIz7EJ1_dO8;yt?Zr^Nt|Fn19%^JwYrDl99 z_2Tqyt!%V)#;*^$dN>AIEfQC>g=(h$n+BgQ>Z~-U78FK&`*)x;=Jj*jwL0U*c|kL=~~F+#PKUu}}X!}0mBu1gWg(3Z=OR#|#^9q_4qmStj zNDiacdnp+K8xOd(ddg^_eyO>HOttEf53%CuG1HjG1IO`1GcXjT> zOQcCs&Q_XvE*82$;6XW~tP04Pmq#4m+ktc6PAtiF?P5wp0EKq&8l+Qk8Ycv?=x zu0ltixpP73L5WVdR$sW!H)SqWfDy_HV8X&g+_ZtF%w#^Jo@BtFa|p?OFL#f=-k0P) zLOPT}fFU1^^9H=2Fa(g_Bmx!mWJwOQ&lMGtBWO!%5%CMT6G_by5~3;JRth37?5RqT zoueES6OrQBj1*w1)UBr$ESQHh)`KWmPYFfn`>C@IQT@?9GWPSj7@c=5Y@QDms zjWekph!NJ&2Doz}URhi!V+wC*PiW)J+MMVDT*f?LT6`fFqBV6vq7o8JWARIuT6~-U zehtVg2Tn}V5Lnd!81ZWbe{lY>_5wbm@`3g!l472a+~X>ImA#rvTb*OuncETESvt*g zdkDsd^X8En^D7x%%9fL(eYdi{Ie2k`9)!OhY(3Gflh+bl)I(x&J-;+LDL4qep?f>G z2&T0i0YaccTtkW7H5K{6-OGM;*7=9~W?h_RxK?ntS?GOd9lyGZx`vcRSI9B|&kEY6 z04CMgcslp&ahar?$fWqocnOvXL{3P3&Bbz?cq)*ve%#~0Ga^r=p5|tQE>B;DdR@L) zrv%1ZSV#jtOc^J4oN^ZD^6p9-14#)dZZTqUAw3>+ymUubfc(5Smn1f)#B2#Q;J6}* zvM0=DZckN{?8##WZRN;WQ>-eW5LGqwMW!_+lP+gF^vn5%KrKSW0*=UXQM*tYs}JHbMPUfVQ@PF}IO|elj5KWw2@G}K zgxyOtLb?FC5a4(|9l4=r7&Iz(IMzj{QG7^tSS+w)%OQ3bbz-V1Q3U_>@vGgJFQ2(- z_UY7*wxfbfuW`1-UpKzD+x0Nw_ibN)d+_|^n?`;-_$1Q%!;Sjb(5#f?jJYQw^=i4@ zMR&=|N;B@y0v{pYPo`)~_s7%pV?9tC zz!=e%8y~7I^)&U}23dnId=@d|m&O;|wT;{P0yr@L&rId!PCVyDLOv}HgY0W5_L?je5l#F+jmsMy2I-}u z32F`5fHCQ*c`bsZs+Cq!LJ^38UQhC|@?OHTrU4K%J)QT1(uhFy6B>)r~#&;za{>lU5-f3{7Tcmr};%OXe|BaH>mS4UynjKz_D>uG^UxW4GZ*gbYDXCzqV!oJWx4E+# z6gD!_31`^C${@Z<8A8xAz5G)oibRzK!#fH2V)Opw<{!RXb+h_o8h58p{xbXD^yZ}B ztWADv!Y+)_yPFZ2eB}ZtZutIqA1smO+b(RzjoSOGUVs`;a!%`T{MjBy0~d z{JodtJct|kGV8qT{ze(cqIT2i%yyQp__Q%;M*4JtAa8jwp$u!XO*t{cFFVK55x9^a zWE~S;UJiB1E4BQ2s!_-zBSE$D$w7UKmWrR|3*4dg)jihsF?!jF5?I)Idu(2gHbyn`|MQa0aWC7|VbtK@Za4et%j{U= zT441EUwq*|e}LaO%`uaPb-?^RlC}^w${OyLGPTKFQ@89t z9lJh2vq-80TVY@+@cazF$fp!8>xwlWMpVJ|xZB^9}e(g?6SM)`ri zUqpNeThUu5*)6KjBl>)ubq`FX(%Nb4Yud!DDv$+P&9x+ zT$t^!j+ta%6D+{|4(lhUyIb4m`^QJdWIGs?k1~z%a6#bfvFfj*i zfwJ5Qm)N!TUyeYU}f z6S))f)ylj&IDQF=;7?7-?+nvesTQ3nxSMc$YW<+1k1IP%BApc1{QK`(e5`&O-y9}kUUrYZ?xfcML|AeRnG=&_=1ejGHt{JY}bniqc$kk;mEZOVrPY)x5b(Vc7vw1*iyTIA;xEB^*GSid>jdbK;{ z^YCM9qaxtg>g-bh6apQPE=+p@HdlEe{?naFkC2%r*%(tCw{rh}2pF_Z4wPn&43`Ma(|*!^&sJcgmlfp8#gC`sK~e}}+BNIK48c+Y`qB~HZ*~rvx`B%ndf5*=} zl2M0Nu3_HiW0P0^QQ4rc017&I@a zj5$jjsb(+2dn?c)-Cc)*Z^iGMG?TU#s-d8YqK_C!yo&}j_-opI8R{r}8?}G5v-?&u zEU4xKC5FuyDvcW9SU^DxcL53PfzAON8nGRwM{9}jK{!uqAvTSN&*cFQ~MR$ z;?(s}xBC2f;}?zoE9A=+bp>x(KD4(*-Cs=iGjxe#6aWs5B5xH`B+gJwqlh^So!U1+ z0wVoYn$1^7Z?>CFf^l^ZyQ|NhHkD}{!=^yI=U8f<$Fo|rU;TOEx1ZfT!rN#Q+JhDK zE*&?p1S$}3*+#(r(EI4TOt0vi$mKtPegul6(k3TOc?FVPpJGcMepTwWgrmUY--)pQ0s(!68P_ zc#2c;tf=_+R2<4be-3@An$PriYx3Pu^k~yACI6y7{+>Tx^FLmZ@>sO71|^PY)$Au& z@QGgNJ1(wXTf=qD;BJOrIyHE~>Y5hr@2iKA;$I&^W( z)f$2xZ*KV!H5`6|X9y=i+!05MBlA56mM~)lflps`I~3yBD(opmZsj@}XB4X&qJ|^v zL5B5}cD<9%Cd+|q6osZlxji1lxeg6C4^RnJc zfw1$r&%@rs67f2e(17gmKO!bT6)VtY<*hp2yc6N?#8TB!-6=e(|89?Jdr}kow#PKq z^Kqfz$VJm1A=JOwKRAa?wYPURy_ZyRr;|ZLON|BJgsCbiI?rd07Ejf;xT806ukgtF zi4LH~)1@^!Z=U8$;d%SL4KBj+=8&{UBvRbf$cKpShx+it`m>+`5asa%pem7&9a$ZEIh&$F#qHS_cJ!2o-XpSqHJ&K)aP4GIJT{bC#syi@H z99?6QCPnx$8Vnv|3fzJCkfZZ)!q8%oXt_4bSdvBCylYLtDGe-robx@>;<~0+6sUqCG63rLb6wi!xzs4jEHZ~k1Ep0T8 zWXtAzC+yP@?FJ@oR7_zuZIM53;#+emDG)v>=k!7WiUX%dlfe?vNh{45;E#}TOiDoQ zz1tnwTzzymN3MY;UzmigWO$PXWPmZFk{!lHndmIfYUynD_sdBPm5vj8lS;(LG$3FQ zJ?n~d4$*CwTJkpfu?v;Q{pd8kNJis~ zE*3F$5#5SBI5pF>Lzg*H+v_AAN*DsB-{|zxo9sb!uz$Aou)d0LK^!@7b91u{0~~Ze zP}BhBpU)omx>;ObeT?x7k4L7_<*RYO$5?YTdkim&2$*i}#P0)#@_~UNDbK5OmZSij zHsZS^ux@5DyW)>;?zGqeZ_L@gD^=|`U#Ys;#2aOS1|o-Ybcw9Oe!ZMvP$AkGn0_bY ztlLf`8jmnmYAPuCA217|6r)f+%B<^|9MBCg`U zW{n|rR zHoCbNG(l|=l`WBO6@zS!D}rtmHDn-F$u^Gn+!@ZIpd~?-@zC%}^u=W~9~{$FqORTU zn^*-r3z*l#Q^Rj#+74qAT9HLpT^Mmpp;5eUp)DiP`*@!~9DtVtHL5>Zuq$50bup z>(4_4_3O)|T{Rr0PZPuNP!uSHAu$~M;*XHt*gF^TNu<)7n|=h0cJe9i()6mmQI=Og z@)8{Tm#tQff@zw~i%GXP?hcv`?aH2yUFc$K%;?Z`G_rAnd`xBT zLe}Im_7!KokfPjZhqYlXbGgyfKE)GAZ#Iu}1XH)<*Ooyksueu(@Yg8vr@>=l(MK(jD)*tN3ws z!@h3yQs6V4wte(b{w4G&-)QM((T#^2ux9`cwo=D~z&xsdcp`t^RE7HSo8R3>&)#gv z+$QW&Y`mInBOJSA%76Vv00BWX9igiNhG(`|-((+1^aQvt$+1}|F_(BvA@SmJe7N;$f1BKs*=xA!VhOx6%i|SM6ud*WVd?LTrBMo4B{B{QZAUw4V%X6x&yR3@`6kv*YZT7R*kF2N*-gR;N}v=yWe9d^NnjpwLG# z3Ru!pSUykYLDb^fghOHT?%fU(n@WuGKbkMC@n}upoJ=W-GGWZwu;?>eXv-9;p|qpy-3W|UK=<&`^C<8Ii@cIj z2|B?*(Y4?$x|khrGs?l??h)4Jc(~tWzHEfovbo1go__%Rp-miA<+^KkGFIgt=W2;c zswyJK;s`{)$|+U3y$}_KN``%-s!Y%rIh1q6n2sRh&^iH(5iU<5_klRdxCA1Q;;KdT zQYE*{Kz^aa>N3c_OzR~*)iPCprHxw#=(;c_2D!NXth;ry02J+_mbRiYm*;oj} z>ZBsYkJl}YV>e%H7VsQOzK(CdqC(`eMCWJz0QK39?Lrva#|IoqJo#Wg>7y@^uTK}_ z3kNGl>-s`jxS%-kPt$8uc)-lNOsChd71K*CqOTSVwoZq#MUf6xv&h(ZyBCI#%V))q$zSMPCGrWFyAI*PF{i=KkD^#j#sZq?YW$QUlw18%X#Y-eF zd&z+Kbe_Fw&$amcd| zvCV*RsguoNZ<09(ZkX9>X-8*&`$!rjf^zlLrxJ^2p)Vtm*)btRAVn;$7I|B^RYcr5 z+9pvI(*ywB44p}t08E)GYGJZxyjVK^-rSp#*jGeKNDc0u3x1)txvxa4@*}SpcO4H_ zpB@*c1QN-J%V%7tTQ8gNnUOSlL(+a6T7&F=SBfo$KI#-*C&)G~Aj6IMmh*mVK4xWJ zMYNBCosIKLoE^Aq`x-?R^BeG74Nidkb~7i88~MfTM=14G4qHrZKvlMsX$0kPJe~!A z)69`7=l;- zL~W!n562>$(Zf5uG!xOF6-A_M!nO=Ki{A~YhAuOWEme8~-6i_V8IO~`=om}^YI~q@ zBF)cbEH18Qr+$8_Q$j7h z!K`%|ON1s-FU1o%2z$ztfaGgMhD=$1IE}63!6=p(%j5EB?c4*o^&kn~J)OWKKWXHc zJ(J<_(hJEK=}^kV$l@fFan<{{+os|LVK!s7FF*m!&P-#Qxfj%utfqrREG$wMIRG{K za!mU}7zsfV3|I8LtRDRC5k>;Ay||r5zaizA*g)&C1OjN65pm;wvc##ZIcvF4NHNpb zw_}s4Pp%VL0_-+VmH*zY!-V$3*ox7)Vt;g;= zn|8D4z?ir+ocg`uzd?mc2*dRtOm4(ZrWCp8Nk{8}!i#jvGG*BclY9@PIYs~1F%os{Pb97eiDK&Cn4+SqUVAOA#|37?eg%^Kl@=20tK&cM-1r8UHYojtXesMYe!$)_8-FM_p0FjLbP!SX44r`rZnq_xaa_!j&D*GaV*&cglQB4<%x-!5j)jgTfIiLu;%u|d5cLDiA2k-fsR z*$KFA5bxF19bx)Q?#o`>?PubwLt2z&mW7H_O-av>7o`$RNI$sDOrT#*2G#-SoI7b# zCOH(sX@*FccZ1%w*@IfotVq#%<$lpwA0^SW7 z$wpCbiA17sJQOLx3q9?iY6o+s`nryHRxPj&lcVfwobw;&Nz{k=K4v^_D+R z0Gb5sp<8w5tbZ^U-D;g1FqbsBFI8KUPQs2&I=bFd^ZA7*3 zUMx}VYdpKAG$-X{W^w;I!xcTOvQBf9j-wUM;L@5v6@=Iu(UacFi(YU&cz zMqLjPXCr#_s2d2LPEa&rU+#NjG${Jq%H906F`^+M&?c2_==uo+;>jb$mI123SH4}H zo*={}%ZkphiD^3Jik$xaQ4PjIu)|2yoO`#LB_L#6Gn$;kE*d@-4hPGY7Jd;L{(>Qp zZQCCMbMMVUcI_FJsN8ef#x|*gE})-FIWGYOsV<*@47J2jwv-$unggemT-=V1n@HB^ zLRA3RkN!*?jXH>XP4gr?o`UiNJf?n&>b3I!M<1=G;!s1~30Ab3l@wKa^4WboASSn| zusVntBB6=N-RFYFt4cnbbvgz|GJR%Gy=kX!>A`x(qxDV)<)yD%UgC~cZ}ZD;%mM~bx{qzLlMkJt6aVCC!6OP5w+}y^3(VMqraxuNWM1Z8 zNdMsdQdB8t63#39KWMiHo7St8#=TU|1wMUiDw6HcR3mPAI~k2?(F0f;lZ%D3g>FWF zYt(y_p9c?W3f~MZM%4oG^xqrb4l#ZnbAe+bL|);t zCRqFcDbFaHR)F{oA~np|0j6Dum8S+WsZ`l>BM@NG@^?Oc?bH3Tzqos7Qv2%XqOg$4%lWE!iFeV42=>&nQJzX~Q9s_DX1ulMe8eLQ z0LNC+>97WQY*!oO}!X=3;8yr#L8v$O8ca<~egJnN?kCnafLONwil(CiFqO%SAMEKUn>8f;a^l}dD zIU;T8j$a)}V^J}KlZf(FyUxFLlW4D2Uk40~ek}u@rI)Y$yI4n&Z>|4_RP$E*9=PAo zzd%rE>0BzpCB$RNE})N^Xqp3-j$JW$vv1vHy*A0ecCTpAvZE`4do@t%-V;DV_;9S&l>6IcJ9u|d{poU825}XP*GVx&+-^U5IfSZF2^Qvs~7fI60AH`G^&tSdO|sG z@#NzI0}53ak5WdE-rc$ zRF42F2pfq?(2s&X?7s+K?6miSm^|x}-j|1a58H+}h#2GatS$|EU zdj|_h33cE+YoXHBPch1jFflvSeny0MgIRAmax+UgkvP}FiR?+Mv+#}xqeS3n7S*q9 zG(3cJ8$5&=OVc5&Q0vO9kU%vKA~c<2Y-r5OW4)4aC<6o=#@V?@$K$k*M6&8=lU~G( zwj*>JRl3W`a!otv5j9pxtsHQma`fS$eai$2yc>SQxxrV8ETamX4}%GaJY6K8K~fbs zHeWss4{&pOTlVz!ggGgJ%IDSt>#aA;na{`RCp8G7C#t8F$|-?1oSx7T`c`|txmeVnRWNFC`MN8w#;A|z6FW|G zslQm+=2}j5s|Ag6%lYE( z?y_%nv;Ip(=G0D6xrQ#MIyE=xQ|JAuox0kAsNwebb{*t4EexJ2$>HruAly{8>snw( zkJ6wI)BCYq&&fR0qME&JUtEE?sH+~GdM`ifU-bOlL3;TZjLvbRwbM7L{Tw>=fsQ@RRO%SL z*2YeJwXOneutdu}r&=(rWO$m+(XT0{!TI}De0ZOqaHssqHJ4rvN>?KjlPoNNx-|@C z;+)qQR&K7<5%8#acy_Y2y?dq>!n;aCPlF2t-^3KN-n0A{9dT>MXeslBJmUZ=i<6>T zHo%s1b%c{$^pU|{_N(7U?Vh~7K=}SU_mZk3w-2ciD&+UrUtY7R1JPrcI)SRAGbT>; zKtpk46F%^~LRff|^F3*t+lv+6C4nHJCE=wiLt6-Z8>bAX@I%Lc$21)BnCIfYuzDN(7LcG=&+xV&Lc+%*xYsJl34fq)zGhbXppqH_e-XZB_Ehz zqtGW@14cr}9?8eHjiHbEDOLX-`6vjcvQ=N>wziVbDnFuO7BgHL&dz2-cv&P zJ+E&4^~O}E?bBq+W_6@Q8+MeiPhmmy1aOvN*$zf0jWC=7%jY91;KM5I$QZ3B+0_WG zZqz4c=@|va+=#44mC7d7pgT~(_enCOTOPTF=m6ikG`!K6(#B~@kEsgmhw12x%}7{_ zV~Ezh#Fkp3aX#NH1exNDY*pPi9P)-AK@suvi1J8y3bQXmY?_dD#4(fzv^VWsAgB~v%Fvdd_z z4#ALE+?*1KczuO?!k|L=JA=2wk`Ww;Sj6RSGoq>0p6QWw&~!V3U;VD|s)dJVg4fRA zukSELT-@zhy&@8ft|+}uMpPFshXk*;ojp* zvnGWT<_bzjm#BzQj%1WF1Pqp@uCMYOi_fuSFE-w~Dyqb%eDgL-E|=;0#(z{$O0bXW z8+uFi#eJhbZ)DA47@2NE=NvT!ffnH!8Qvvmu8B_kFiM6ArBy<0v7K<*4D0-1vL6v> zbC!!&S~TD1R6&*%V4vV;=2zHq^y@UKAdoN$pH~O8OdJ@-7?=Hm{x$4qy5Y`d5Q!%*=!C8#d~iV`?&CIF%p6o zRQ29Q2iS|5pl2A(<#nv>IwpHQ*DuGyc6fG|6 z5b>3{83t|&)c9jtPVIv{#g={a-b}+lM`D=K(@>Er3|I~f_&p2kK{q{HJ+6)vtm^eE ziqa$>`eMAUnx_@pEmx>9izR%kjrKB$Hc%EcJirGaW2A#|_i}#+fcMTufQ5?MWCclgEl~4yMD!&;*Fi}*7wZ-kGzU?QMc}fTXuW&KZ%*ej1I{S~Q&YO_m|Er@JhIZR)oST&1q(eV#zC{3$0_^P zuE09h=pPPQAab{|+`?p(zd${ysy>?zyBf!(_=y>+4t7WR$K=?Arl3SMAd1SYCTK-o z90cqL+zKpsGe@`TN=*+%h*vGPr2Rq-P=nr=>6X^|O zp-AGHpyWImjly<)fsICy7uv>##5r#a^++}jrCO*+*p)?IuI8n@EHkqp{nEKu9N290@B??M3YX!c| zK6-Mv8PrN4Fpw@*s^KKiO-VL3k^|D5#JHd$LTMf&Sgh_K9^L9d7%N@07>(I*t=y!& z_qUvs^Q>h?#>1+XBCmwrX@xWY-Z$Tr9fCsvNg0$Me?ui0EEGyGHY|Lm;ewMvn7bi7 zw`LnIUL|9r3emlB7z%Q_i@u212*rXSgc9#<4w%I>$T$sfPT?paT>#ZMln~FY69VWjG zpB-I`8yb;?#K9&z5sUiX0j`(`r&;kvgkNZvILq&-m(80>tJf+2oT+(4#Y?4^Ah8 zJFtj4F@+KCd2iM|j0F+@U5Y-|($bgu;diO8VQl;(zw^7N0dy~laxa8)@lkMCk z8peURXlT-{&?f?E0hbp|ew;1m0&m}A-E~oZLHHxodLsdnEvD*00g3Wiapi0dODato zgZka;5MMeHfw~Rfu`tGi=S76otwNv4#*u(Oj7h@gT2($~Oq zWp59Kz51E8h4C$GoWdzIvNQ!(q?lkhNRQ51a&{pbKWE-*gPKh{c;NF36c?3Va;IgP zcTq9{D0qZFVo5cZ&a8;5|{(0&p@SOj0oYPAsjA>rBRKJIJ20=?%j( zRe^FjaSbGcq75iJ$Y?i;eu4W%o3kk2JM%}S6c2SN)nVj$tKne}+a2GapIT-d)%=8- z;;lB!F)(zp7-?5EldQ7%ls8M*ALf^Eo^+XWUoy7e_^a?o zrIIPk&P_{+ROqu3|4petr?%*c=p4vFtJ`l3cP`l8Ysxab8MYD0Mg)&vG!C>0Yv+Wzihw5|S(3VJwj} zZr{h|Cfl~6Op2k?%vg(aC1yr<63j3)(zEJ@9v)|%^|H`f((o>X-J-%+FMH`l+@oQ- z_5LJFZz1X@`k5QQ?jb@=C;f}0-3FmrgI?(aMmZ)9e9R@4QAGoV>fZJTHJ8>{Xy}n4 z4|{XlAHXlg-S;H6P>2>etDm5m$+)dsVcHnC9XW(4=t^+%h8CRI5`9tnHn(5t{$}Xo zOwk^-HL0zK1dUSRXkhQFvLRt=-7~gELuWKFxSHmTI+j!F1Q$);(NW&6{-JEs@XXA67sgbGK`qq$Ujdsj*B&uxER*H9s)H%vKM=WiMzeqv4DSO-N zzZ=_Ozd8K|2cgZJGN~kIDJD4g*eB!sE)4CIn7io?S4! z0W8P|!U}vu>EW?o+TV$eE)bQ+T?%C5li#F>gk9m84Yh+0k3)If4vhnrIq!?4tHL}1 zbS11}K!>?RLHUDL8qS8*02O|ibA_^Jp7Tod9{Sep8QAXyp{dAWhlOkz`@>ogMc`GO zJ54pnn#G(zi2V^~a|k-B@MrVyIkz2d()1!rd&!tW44spJcN*ii2u~)VVgHa0=K-6+ zD;+Yv!r;uE$Us7JlnE*ySxnOuh6)rLePwHB=8}7;dZrxU&4dyEQ#n-dCKuhH^B1|p zxILA>5COrt@jOD+`gHgId$W6nhQz28z!pnC3f;3Q-46S=OFYjgg(H)$y=047k8r*N z(y;5IpxV9~%QuG_xpNjctxg$FpG}~XS&d*}$SywS`&NS_=dlbds}wC&SHN3f=0`DZ zQQg5M9y%hacF~#C!_s=pl`oaJ!D?&kA{E^zQ#Izesao(aV5YIvX>2(Uv8xSk!APty z2mFqwCs*YD6)W;cV5b^52NmaJPQjXOt!8>qL#74Cr`R%b8SWyV;VJdcRzTer{ui3NBfTRF z#y8zCto&mAtJd7g@{+;Y<;-X(=aOF}+AnDj*-N!x+U%~#)e&3(X!@SR+=hRC3s?2f z!d%hCQO7!8WDx;Ep^=+VxzIw<)z@5s^3t4Q&8t@nE)vW)#kzcM{lp70=}l{BiD@8r zAz)qV@6<~%M01m#kx*)SE(5RTh*eRWjB`monuqRYS~B(Nw%~P@TMd!M-R9m@hg+Ep zkS{UAgs@~kQ9Yck(s=5j(hF`Qmf`a{fe@d^L#sP z#SoC$*m7baVGP460=(u=U^2m&4bg>d-2G$s7>4mosm(F~i##BZwJhVUF=H6I&!Y2{q1xX+Mnj&`TZ zZ^u8X$XcG?k!L6#=hP@FlZ`h_bS8Q4uncTw-UMZGWWozY2c^R<%7f?M@^D@+==ZgC zebPM`VW>PD+oWa<(!mlZ5mozCq7%uDlL${J5r1sr&q#DD@B?SMhN*LzS)Ikfe&`=9 zemrH+6wJ*9X##8$#wJWP&a5Rn79OrZ`xWz5O{MfK+OVN5%S&TuFQm{34>^;#QPV1+ zuH9uEp z%t5SkO0bb!JE)RDSCE*ou2Iz! z18j)vP-@u7#dS~TL5{suwaie=ffi&hm$9Hx&OBrqg%w{Gc972GDSBUBcVU z7H>~#QTv$-Aks>IupVEs>Z6P(JQF>G5gCBjImWRy8YeM^^^_Jj{RYQQG za^R*g^sFpScvv&_6nu80a-Z=88Ou-IDXHR7k#q_ATdaEadQ@^uq{HQCm%tQh;+I@#{)5Sfh`zvZyttSY?rfv1hA``o_U z(K1sW3Rg`)x704wq3aIG$~a8)fGFFy8VO4~Pxv~h2D#b@yJ3*5LXMON2=H%-980wr z0h^_mLVd?R*-@&ecq{eQ?6FsYDxOQb-(r31 zK_?2PD_FgcIRvl15%=zn;kD#oi)WwrQ;vI6OJ07r7+hs%z60rczG)75!Ynx4J%YpE zxfoEm)Wn`}0rKJ0u!z(gVx#b>THV@`1~>5CSl;TBzGA{T2NDH#TR>QTltP|i@a6z2;uGFFe~7}1$Oit4z)Q`!@Fso#4%!!LeV%PH zY&e@wf`$I37g1Tp`rS+-3H327q1ci$1dV5~^GvyHn2ym7(QRAY=;*9F;4m0md=yhJ zyVu%XkgkVuD#$8od<$ZSh-CMhzd#sxtbOBM_Q1G@0B>|3K+01FOaW_&xqoDa?_r!T zrm0a?1O&j#Q^T%f{C6L?xq;Ot0Y?vdSyl66^6)xQxY8m@a<+GJ#mG{2Tr;V8IMcYQ zVwh%G_oA1$YSjv;7z^W!VClhmZRI#zaCfpgqtj-HVNK@m2fE!8fK7 zyPIDfeW2|Z*Ywy=bs{QaI1I#L2FM?(*cGfyJkc~Ck z^KPf(uCfWP@O1FK#0nG{Zn|8Xfih+QULnh3^B%5#uSM`4=5oO!vWM+_h6zA;5629? z;(6E`Cm?Udasfi+u9D)Iu0n*SX^ZwW6V0q?oOJRk&itz746X4FN~PB=?-O^v&8uH} zcLh2RU=MIX>ck!uz_y zctSKCnAypG+%O;853?)E3wU7=b1meD%sugHDoa~*gPEP(TR0?w?3F?_(=+Of#!IFf zTA);D)YJqOvAknzGQA2uj7OvR*0wL`X?$U1J{_jC4Y(+O&r2$5^hV&VX2Kt$`0{du zjvpxE&{kjpU#UsKk`&@vbP#=u5WSU%u+f@rpu(OeHw5SlSbHFVVmb@Pnc zLsgVnOIb#d3RFg@4Yv!qLIBOxSi#T6UAnY%4dWdQBKi$zF}b{&(Rl_?;ngov70vl$ z$51cmzNgWurWPXu4M`119*mE{qVP_XkCc^y?BK|WzKZG}8rBHjTe7KJ%?LH02)naL zyvX2=YCeD>mF}y@ZM^lMhTClfHzfF@t3>=`ircRjHztpL(C7QQ6AJb@{QOZcEatG? zU)+ou!Oj0nb1(%}=Hk_GFpd)$t(Z}X%x-H3d7(1Fh%&w$sQ_R^U9ysiLVZL09b+II zwp0X)Zz33CC^S5_w{@afOTIFK2+R`cR$J!~SzZuzQ*j6ww*r8}DKQun>QSi~RU}g1 zo?`88su^Ay{zcbptSD}4IeBJbmf@qwViM)WW?vw8@QZ;!ZyU5bXQgTpOMr}1f>URd zuAa$L>z{r!Qz&eUj7kbTaDq^1c5w}2kaDEv?el#G_!2p$U2{Gdl-A2TKI05Mo`3*` zoER*GgEVX??{uKgo2Jtg)zdPC!rL*`+-Huf1cUd53ZF|Fjv6WXUe#HxPKA^Xgnad3 zE!VTExk3)HDB^l2k@YP*A(ihWCifq*is|7R?+P7zUN74&?o}d zn+w}5;_My^ESQ5J5^U~}R!<=;4X9P6^xX}~DP-##s6#Ej$kNe8##oS;IogGqW<7n6 zICm#Y^jGDeDXtZmv|(rW<(pUj4!UnRigFhA`%L1-ReTNX;X_R5o5_c(7#`ZBcS^p< zFR`Tn;Zq@j`iowE3s(AhF)er%6{^gN*V0r}t*_X8C-YpDN>@};23iBraB{l3!4zfD z+n|?Exyc$%E_$HT8jWwdbG=FCdEd+CxxiYA%{rOC-7>Pm%Q%C!;@)LC0!5(D8X>av z(1)(_JX(43RMd<YU#(D&yOi<8 zxnVeKVf#7~HVsM^=%xreXmDBKy$6^;DLC5y1hHpe^I_s#P}B%}>L&yfi?OOC8SA;W zBVWx;A~SdrQjOoRg8)^+R^MJFU&3-~W z|`nd!u;WcgOiI!?GGmPl8x(e zNCl=*gg`TCig1Zuyx>miD^gb&1^m@F-o2>L20PucC{u=I7Q--I)FSN?23-Y>^S^aN zjg3fyd1ideh#t|nd*A~$J?LnWAk)-k--I#gYmE!cIh6x7@NDRt-n8+FPk|mApnf#^;eQYm90-VuU-}yJ^?raJ%PA*wQ2yQ2Eqo`exyW4RNYZuWAq6!Xy z2t&5rDk(BRm`BU(O=Jx(ky#V}UdyKikT5q2E_1>wxP0tPS*VWc<@4vX7C=)a@jE4T z%@d0=Z#+&ZeR?Gd=<^N~>JMZd3iUoPuABuG=kCu4NP5gXSAZujl0c9GQdvWeOL{ zyuh8|2n5zb0b*opoNE(aYILFCSox&Q`AKZU#|fmXF1B$5!!!xwt}}0PONLVqpZm|I z@k^*9*ST^QGB=485}3xnw7_Qh5bHtk!V4%@}hPKrrA2W0m zG#-x1Z7@tLP_gCm(589mCvw$(1*&i{FuD{pSG4wvN5!e+i;?dvPT-QQz)V99c!G9U z2zE2fXDTQa$9(a$K>k+y0y<+?iOjirnWU%H8B-CwW`w=#{DhRz9Tc{a{5nl7Iy~OQ zqjo;Y0s|ewf_4g!4hwRqcK9SH8IV6;-hoMhWO5n-MVUkBj8;wmn(shI%L@g|SDI{Y zXp_xRoMQf~DGQ$;%*R}Ii-m&Ph?`EMqmRB*a2O&zUz}x#p~>$hb%S1cV7WyLuOs_9 zej?%=!!Sto9X}^=;X-t*WHJn24QD1Q4ykf;8dY`*VK@s2rap^A$tpztb&U0hB+l5+ zd6+K?2-#8YK6BDjo_=!6P&Cva|8mDmz+AcrG&Q+3n5`@fbyns-GPIIm$3F`>6Gv8^65ukc=#;*5sv3UiWoMY8+I<)v@i7B!FZt<;re`n zT`07BVtc3Wc|p?^tr0o@iYW~{uolIV-bZ(R+w!h&mB+G0D1`@2XD;w=P`r>ci}I@6 z;04`PHcis9|(SIAa_xgtp{P6I7>Mn zsrTNMKF+gRErTmD51ItO&3l#Eo*T0jP!19c2>le3_w<||h@go{FDYlg0sk3tT^#Y^?6 zFg(`+gSen*XFdF=m)gb@&l5?Uivl(uqX|HLY1%UFU_&|zV18~;n;q*`6q;bdgno_G z?i571(KQfQoJEZ#>-gjxkL-%@fR5G{osW zbbr`SFg*QX)MV0Ws?26QIP65l6MMqn$lnz?&>zbAq_5{rwJ%C{CD(2ILsqc zfrood+`s4rcN{fY!`E0G4N=Lvl-eC5RrFC+>?L5!S>cwYpX)N<*knkx9%%S}~WfmehoA&z=<+(bWy{iD6(1vua)tueV?cL$wRs>dJm zReHY8RD?#Wxt*$-Y-M60RC$|#D9rq8$7y*d73KyzVfSlB)AB8ivy5>??$8pQVXZ(# z0T?z`)x)(I7DK@)dK-=__#4rBb1>;&V0<7xfju-yya{bx#RJ$1ye}&L7hIYb%}%f9 za%Z4xm!^8_!3ali9-17_bNKaHk3NZXlf#rYHr6J`X+>pduX&oV#~J!Y@>lm`62+lt z&m{HY<5;Kj3VzQDa&(Msk`8t5OGuuMi0qpT7DmP*w%fN7{{GSa`To`c150DBlm29! ze2|J&XfS=DP;J5(;W<;f`RUv|Biv?D@;RHxXj9NWmhv>}+BqZTDyZt`!2!M9@gtvkNuJqLvKE)g!Kh(p6He+q#H zhg{?kOXx_#3X^dwQfVyI&4KBm!Xu5An5YUeQ|1oMY7nU~VqgGUtE3(;NHr0y=S3Lz zT|v`2<78m!D#%r8qoN#ND9k!K*437zZ4}!v1=s{^$ICtD-Ov?hJ`7Cr`U|8EidAMR zDU2bmFnLwWDUZzy*ef}jJdXGuM2|0`Vj{F!_2;78!gUow;mI>C>A;ra<=uS?>eZ22 z+LDDWT~Z@zz&wxATf8Z192(0AeElka4D=NzoS>beyxmzwwu4Ue-b?|W#rzT~x<#=MfY)l2XM@71L zR_kZs3R7(o{LiO1E+#_PQ>c2{aiI?A$3IBo(Ne3I;_njL&M8jOz9kD;Exg0 zX3&Ky5!*>Tw8=A@!XJAi*77l>>7D)ANxidA_ll+|&gRMZo&7PdXkjk1yrM%rYPwgn=z5G~ zr!>7gUS9lhPvRL@KN z{kP9fu_rmI-ZD8PJr_*I6rbo%aB(SjD=2cLCJUi;q%JnN{Q*Z1<$SHpa-Pp|=<4$+ zV=i=NR^6Gu>&_#|oI}>fyTm8SjPa9tZdU|Nt;$!NyFIn9`6&*1?t7^J%X=SqyMNjU zW;)0#3L+QyJ5tZx*}%tX4*30Sh6BFZ{{M3C^f~;}qb=tg6&)U*?ry_>QD-t}aT1X- zzjSirdNt{`lOB0(A#evdVIo>c9JN4DP5Z`I3w^ju-Ro%b;UrR&iG2vdF+!*gT5vkr z4oLD4izMC!!4gQKJM6JXnDL?{2oU#KA0fugH~kdkZ$Y*sUog4%Oxnv)<#-e&*U5kq zv6&MGea8qf^9FM;OtJ~#x(Z1Xj)?%`i*Qf4vAT7q+>J*$yy`e>kzZfnJiCY+r+_Zv`#cWcGHQ;-Zn@FSTX4f%Tp#A&0vm$CD|9jMlwM87NuJr7vhwv9%-5rQ3+QCYY5z+0mF=&&CN#9&?`FjHfbhm%nM3 zXfntsNui^mY&rTVolsgLOmsvfO<8>=tt(kwqHEfm1S31*%r+6h<5&bD+rQ@a*3r@N zdGq{q|FDLGxT-o z`0On#OY8Uy(Tpf1MiyOnM`Pv`$Uk6;79xus+=ZvZtJ|#G;*1QICUB!J;bgbXZmzIv zbi|;|7Ni<>KBwP6nBMG$0g=+lxC%Wm6Ui{WI7h&?(|(^*#Vkb3%wX>zE3e^3;N%|t zB>F3C+uo#|2&z(+FqrXV$PTlxFe#kcz``&#g>Z>rvM$o=WZhWo4P23>>ohwAhPw^_ zVUcq?#l4IiF|Q_LG>;fRUxo}8R)Sr+N^fY}AkZ^SI7XoKl6U}pnhY_Q<|w^{6Axjg zIG2^}!PeX6$?@?)bN2{{0FJvxy{=#HAMGE$Ic!>jAy==c@^lS$Wuv~b_6FIwgjV6f zOVKrH)*Pm3Z$nIC(PBConTOdw!X|&AyJ{(D=YbA(vK_%o=g1o^qJ6;{<5l{yXfeAO z(Um*DUI=pXiKRv7UT~gj`9Ug^y%=Q+i|I?;ZP;%>KD!@?;iiKF*oVCe-AlbYkF$65 zyQ-H*asrcL63(0^n0|G@ArjG}==898g2EK%Os#uY#`Lwir*tM|owz7ktTML?T|^!~ zMo{wvJCSixQ{cn6AubHGS$jgL98?nhoy3z-MotH6;=RzIK%n3o$gMk3p2@qz;LF?r>( zE0~jaFh^H0NDiZgnG^2X^jeWG%s9NH6x0W^dl4MnrK1&gN3$>Gc+1o2K>`mk{G@~8 z8?p`JOvF3dBVgkryVcTco0~XH`Wze^?6XChH~N=&Kpq8;d=9R8_Q# zb?51pw!%(ghRdbYg@M2I?R-&8!mP;A`Ts1u?!u`yy5*~bA6Ay1Ew2Jco8W<>`{3{0`z!_12``s($~C-23k~()Y!6uA zlyDkBG&E@!OnM@f+_Efc%+`JiRbu8t?7}si<`|+$B4RAfO7igRDhB$*wk3_Y>mWL$ zCm)8rZmY||W-jK7#=2}vzT~JCliCrbG2C0MV|L&)1;O2wKI?*b)9u{S@!f&Blu^so z79IF#&*_t3KCp%siK=?(EJ1QsJpBoQT%J1pC!`)L2`uf3senZxF zfK-E&wS=_ZX5#3_L;2ODf3O*hYU)t#r<6m4R2b|>(l?pT(*fr)8N%L=Xiwmclo6D_u1bu%Qx2`}Vhi{_Yegenh%LEp7#6o$Bc~Ua9 z<%c-!aG;{@(4pWCVwI?BP-;k%=$#h|eZ#4Ys^XMifWpA3cj!v3syW)A1B7gNC-ne1 zdcF#q$q)8mYj|6etH)&+JTt}2=(iV>E-07-lY1ps6LDAOF_O<`kaE5oIO{oE4$j7i zd9j%kv!}jB76RXF!RBdv9pQ%hdVQ5x$jV$SM1}5RB3tx)=NlGKblXV_b{Y}5YOp~^ z>E9>4Xypkg5bIB#t=CuQY7k}Qn`k^42!G$(KRr8do*kc_lXKt^3CZ5hJvl#ZzS%!I zN9kyMJ4`rZ4klC?kCtBGVN4uH?~uQzS3p=vua61ha>q+M8M8jfdY{TQj8x?m)PdNV zjHXaT_*;WEntr0gNdgkw2nio4;zu~~ub6~?OnV*F*!7$vpgRuuWgU8F6+VxYs4d7;j$L*ra| z^7MPZW#X5kq(>612q)em9850K4E`R(@0J6RXLySygi#8zCurpG{lV7u_i)y3ADtgG zU+YSa5}wUYH|e$2N{-?|>uQNGn2`m5{M-^YoMW?YRKc(YK!`jpN7!{bj1NH9i25vh_+Y^F&&foV@2lBV8MI?3D1xB0nq7z_@DW7%yblkm;Eyu{$9 z4txt}`?fFkL_I3>FB!qADmAz(4;+KU z6<%|UYr+#k%s+fSx6>qpwp4Hlh%8V6$(dcw#}yu*a4PqJ^%3`E>n&a?Fo7aTbjeg8 z;*V&lz+h9yJ3P)z8!G0Zq1h}YQn5u&2>cw|vL~fM?eWf>f-Pi@?Wh8D#U}8q+XsRk z5i?qTvfQYu4KTo?YJfrzohv*+tu*T=WY9t(_L^^`3)(`T(~~zZ5B9g4LOMU5qObbt zS&iPwLj>R{_*&kgso>4&uH2N>lxg<(=zRaxo8vcU1zY_b$T`|w2F^Yhz}XZ%A7AiK z-wi-f>&DB#K3)_GLi=pHM0tOZE|bJ#4l={djr$e5&^adebonVUxt*jHMNcA-71mbP z8{b5YZ@&3v7LyZ$$6(Uy@qw8$t81MA82ed5sX&F3h&e>;+rVYVs7PQOACTSieyc;d z(#Fwke3hm&cx5&qE#o1d6lXu3HBYuqw+@@HAByygHxk0ctla$&9z3Q?!sV-nI*($q ze7P)rveJ50w!Oc|KU%>O_&S_;DR6`zx_GaKdXdwg z@rPdAbu;LOj6}F|&^$Ta-P?cr5G#b8+IrVxlhO@*x36eXQHv=iM$<|@ILPRYC+kl@ zMsMJzdp3uRju#%1eZpFXXr(XG$)FvNZkK?Q_VEx?Ev||za|^9R^=IpiuR%`77N5>x z?}8QuV6lcQew6U73O>KMjb1PReK|VlPJ%Cgo^WX2V3&5qS$rHW{+Y~U(8Ixbxvbw0yyeX_n$yct}Y>ZzJo<;?mF3& z`f>J-ttzaTwPI4oZs34IvWz=6*E?HS6ST!(cRfxRfi^sW%0?7cY$nFZPp|(@v+34u zB|4uZmPJ2Zf3mXvhZPX=~y{32P6;wwJvwYDI{JJt|D{1a{Jn z(qF@G#by zNBifR+cB%lCZpk~oAE8D7_F4J3(WZ%Z&g!mOku+~`~B1+apuwbTk&o~M{|Dh9jtuP zOP0rzWO>l5T1%F*M){5X*D!8BbRHzog2GefygTWz3585&*sCbxxW!YG9nFiU7h|8>ywp)i|X)Z2v znk<2=Eq1969Z=-+LCMrx1r7G_$B;!gK(m3^+2=D!tc-gk^$?qUuCZN9lDG zt)XgBf3m)^IwwUjEwI@;V-6_2#JjUDIe94FV&~ul)EzX6qb0m@L;rpUr^7h;5NEV0 z3b~5u^ONN@lFX>j4eaxiwe=^Bx%zB2vE@MFnOQ9FKxH@m%U=534$S-V;qK1z8{iX% zhEMG5R(1DQNfg)`j-r*PXltb_BJAE;QTM9q%N6@22odnvN_~B;KIO}tHACze$%i4E zuRz>{(Q$rl@A9)RAE0**pTWo&N!?pQ`&>3giRAKjBi}|kV6Px^3rc=))Sk7NxXU)^ z4<3PdEVp3K0=ctw+`9%MvPYvJ$j0N0liXjTo2F2^V+rokr3EB!n#XVTeikBxrv%}I zO%J?73B;4+rbyN-mRH;YHJsgk4RwMwSRmRhtJ4<<%_A_yJV=DRVy5|3l)-U*h0LSf z?a+NG;j|6(olhUF$jovbkK&7mR9r4c+9b^vfD1}@7I}%x&OJ;1s8coByYVaYj0gas zdtKMh&^cvA<~K8QTftQ&*FI&}If0hrONv?+QwA-JwUk@K6<1aFrP=YM(=lj4H{R8H z%If3R(b>M$zm*cqOZRSg{T(`>#iQ2May%ZRHNvf&UAO3KGN3fppL|ogZp&$QlU%0$ z`8*PKH%yV;cVo7vq;2Qr8n;>m-ZdZ&&Ec21&y7L3MZ%xbf0nP@ig&Y?wT7{64AT*g z`JA@4IZsirAIH!+`|Uc+`QQ>gRq!H8tcN7QAeXp~VTFavEhSK&@zdOX}zwBwfURSF@4E3_r0;&=pM);9q~4aLAu4J$CLIgfkmC|zdAYCIs(=YgG1$ z^D5p4tk6oY%)Qbt=}x(q!U@hII!JVvj~*>GmRH^i4KGKPee!CJNl>8MK!*HG$$ZvR zUToz0PhpjOKRH_u=6FL;ie5mojt#B%+CyqV05eJHo>@sU={!MUuW{w z!-rLBtc~}sUB(VJ@2pvUgbq|)aj9l6YUzt9fg*ymgf-AavFi;1X{Y2Zkph1ruL&CA zaB>0C))lGP?QSN1=QWVo;dv_=;D<1z$LJ52knl3>I%s6mN6EcQ%E1t4cr0^9t>0Y1 z$?gpaCaeR}12oL4BPfnpN{#*#FUq(g{GyW@?cB<$89RcXqqjIKV3sBZbfQQeU}$6L z7F%9rS15s9$gP4n<>9rR8XB5VFJSkwe1LkFL5kL6U~)Qty&Ih!@16g+b-EkvpG7C9 z$3N`v?C!wYZk@q{hYxGfkNfAZkKdd}Q08>&==`VXcrV&I`YHN;|7Zt6%TG>s&*+-! z_%zx-JUQ6kg~$6x+XruU_K#jgFX7XpkSO!GzrIJOVA_77{(&eq}9E9}iF zjRihArION{A7Ag%Bd8qCe!j57nZTR6Q~0$813Nv(IiOE}+&|kTqTD*&Kf`I*J3WR* za30~KW2y%}J=*1paE|@OfFk(&o3mZ7M?1S)2TE2?}E9u!-?2&0UyGdgTC)xF1;WWd3m~mPx0I35d{d!<5em=Sh%;~b!+|J!aWQUxrd?1e_eV8vS~J4 zxR;H)_d4+8y9zyDS*z+|D{H{8p%jSZ+2y_7s0Ix@fl)mc=ZsOB_N@&9{VH5|5@qkk zg0R!MHf#omNH6Hs*%;+?(MYX!KngjCwPcdU&?6FUL1mUYvCGg6>@!yR*JoAp?3sPG zv}PZE;~u(_jkhV+ec*Q+lsk_Ik>M=A3&nFiW3&%s{Ii|60BmeVgK!($U z$#%WQ@7DAZ)bYtPzt}S>_Km^ZXg2pwe`xOQoa}Emn^>|9C7~KDRHvd1s1hlmM=u)k zhOsR48}|a8V(;-vd!4pQsabJa8FMoxLjrQ))u6H5Go9!0RJ{Swvo#rye#T>L)V+tW zRP?mrKYhwiSG=byGW1m*g}K>8iGogUraIa=_F|83FyQS~w+*`I!aY1}jhUU|1T!9` z$xc8v9+ny42NM}~OCOS*?stU z>|36gR)1)C&tGA4bXzT;?u$Wk4}T&kiRFV8sym8)!stB;fI|DZ$N7lM(G2{x?sGYQ zh^!B2;@H<`_UfSE(>D&c9Tx!@ZChv6@SEY+bsq`?8)(CjTt9?qBp^9}`vC|~8 zYet-;CjP)!QI4LNCp^JN@`T9-k0`@2{|YA?QtChZL#C7`H6oOIocb#`s+X671AXCt zfc}pnPU|m!g8si!U#qVL`v23f8*5+m|NlJwpNPg+|F=uk|6HN3qi7Emd#ir#k^2rS z())wfG97EV&z?oV0ou{)cr2x~X<<)%PWI$@;joVm+Tp+08NS#V{-3imU?pN|_;=VD z@Was5Fx}8V-P}Gt`RR23)$4Qo{`K*}4kFaeVS&h*AMpE6u|W9d2QnjkngxRE#0vgA z3q)vE@E%}{L?6UrG&i^x*|-hoH9gEJSKZ76Okc2;5*zcXapg?WafEd)x{|~ZSe0}rShHcc9SOBkj0L3e3MJ~a{JLB5h-O;Py=asMhjs;bEqs1u*rS2X_3%?M3d z=Rck7HqXva-)x_Q-40rX)N(=n_0#l$id-su{bT^?M&p7f4#4-QM28@s@3l zQdQEVzlg{v#6!JjK?sZne3{a9`M`0wc-!E49QRMn9Ppa^) z(@W#=Vzsg;3(Z3{lPQxR#pTsU{D*Z!u0J;|_K8>R$H)POTi}IXqvxg-7(lgP1@JMo zoWXhBx(cV&pDyy3bgR05bpCAJO@!J+YBJo@>SBdHi3%s=VwA-1>~BTwy$Ra$wykPW zKZiEo{E;@X!;PnRA7ta{^cL@x57BGx4r83VNeMo&t+2%z{rxL-MTH;p#I(6tL``?< zk&nzHFu7GJmR;gtyim(6%=K43V`Uxtt&jnY`7pAyLFs1>_$8cFnnr~xziC!HSt^c zu0kg(9!mC1;`H*sz(=_Irm)h;Sl3O`?xn`Yf`UKs-su`G-*&e7i0h|uOY`&`2fm@E z4GSHAPZNP>D%wYo6M1$AVNR9BsvN@M`3pJ)&?53U@3DDmNT#NK^53|!)Kq1$GpI7G z3U=1(kvG9L%d^Apf;Wq79t)o?^5M+uK2jqDDj$lRZ-Lt_rHhptNtbjmW zM{f=eD0{_%N$x!d3HmaFwkvLm_*Mz&PT{gzLiIl!*%_iaT5#tQi!~SBYNXn=+>`Ew zOy**b9zDUZ##dCeNE7)2&yL$MHQg!DzXw)m5?<bWD^haB3gOAlaq4??LnTH$YX-9VsW$QEJ9)lphzC^j7LA?#J^(7sT5SEX=cccrZeQhDBXrt zt!+D!|6^0RYeOxNCX3gL}0-?O&2XSnR=+@e?0vq+T`6Rq{|db zgeqjo)QChFePlgGv1D8WUJX)P%u zZ-|P7?J|*==K-oRTAZl^j9L*mWrSG`c`Jtx4KeTU%_Ki&x%@^)&d`@pTDu^Vt&J@aU_Z;*QX;H={ML-j51jk6${~6pr(ob-*q{-nyw@%o&*s{l6I(-T1`*E6IKj0d&G=F?$gCJ%)D`riQaJz zB^W=ZXr%O=uq)n_rlC6trN6oPz%zsnn31*TWCE^htU3mr&)nXT&DK~bXzVBsc?V9{ z)Io>LDs+4|QlvQ(#Zj!;$wBvDHBn_$AGf0)iGbVB$Vknq9Z2$6FFe@-xpZ?O4RY~u^ zG7`_!KD!?7S@><~)EaLsG*%U6G*3+k-Uvo#U5>tCd7;yl@n9fJ zjS+S`rb=naeqZB=1RKEb`4AX!7M2gr&tAJ5Mc-BaR(Gx&4?x>nj~tnm(X?vdASQP;{^HA96;VEKb7F|+uO6`Bez z+rYAyoUW6ftl*RShi9!$3$JOBM?`p_yd%ncD*BtLWmRfPTrD_% zWwpRNs^)9ImNna#XSy#hUVs!?-Qd#`D!J-LS6#0sx{@chE6;RSq!M8lwiewJUCUFh z<(pRP83veaG`+HiA+!WKEB;af({5zY8KAKRunGC$AmW9DP`?C?% zw?Qn2BcwOU5T3V8E+@g|bnEcs_+bA?(50P#Zd9)86ob(~1+6@2w>o?Z{H;;_dGPbN z+d?Az+Y0^;=YbptG&wL~^h;OqUV317Ly1Z4FaL}GO!NO?&%EWUe{uZJ+Dapc|5>Rw zR#(6H|NN);|12(T!++xcV~D082&l1A;05IW@jpQ@o+b7k%6a&lv)d?p=T8`d(}Y_h z(?Rc_FCIQ$Jbb=*_A^`a zLE{{3AH)PO{y>`V8XFAzP28gSK7+qniI{81$;f~nEkCd_p_~NK8RJ_zTx-o?v*;6t zymfZCfW|9)rO%o?B#&+R z`CyCRo8NbK_qN^~m`_aUg^#A@joe)AP{tvJlEjj77JXU_8aBCoaD4XW6m!&gkB_#_ z_kY-Jo^Jiv+&bBh>Lp4tn*Qw75nq}-GqxdIax{)nZ*fvtM%S$bl6h2lwzy{ECJL&4 z@<*zE!d3Hx%D;d4^5_2r`M(=KUHgmy03`pfmC66BU)NVxLjV7#PoI2||Nlq$|FanX ztVRz0^f&zsx_~dz-^)q=D`+Koo!s;g`xjvk<58QE2Y`THSiI3F#u(V&db;){5a5fN z@I_7dq9**$4FvF>U8HF*r~&<<{f{5uIo~9|tL3W)B-L(3PeG(pD8=T^c7G5ZoB$gI zE`jV%?(~yR2eIz15xR-IiMqseotF)KwtsN4x+33o#}B%(1-bwFDe zh|UUJ_(9xm57!>BOld@ZzIi%1KZSzLW;_-K)ofNO*j8m{pFBr#P=^B5-xs9p&QLl2 zU=9?98ZeFulqv{QgL-gZRv)4ixnlv=yN!D7&NAMcKF-FSf|O-#^xQR6Acyb4}zl=afFKTMXZ>1q&NI$*FL@H!$Gv3y@?JY{!T7$Q4Z zEr>4wd)@ZpTkH#?V!}LIcfHA=`+>1a)nyz$Y<33&<1S_LY7^BE{si`lT7tiu@K5%S zXTNMvaJS4V&h|5$Z;X<#ei!C$Kn8RaKA5$FT z1t(mT&(S)7B04)Xz24huif?tWpCmoxRVOB=y(V>`V(5q6CyZwwKPm85_8Ss+I6qw} zJ1!EHia$xo*E`2=K&UDH+(s5n`Tk&9193|H} zA6U5+am!(L(7Y>xOw6rE4;!!Wd9c_S^8PZ*Q;QtO`{PSxcQLld4N1fo#lT=2etz6L ztYcx_D$?wZl^@JeyIt$44a`pg%<0Mg%XE!W3K@Fq!&!)w@oj|uy=Vs*xdSNS zlamT8M{+bRNH_>h*AK`0JDf6b913Q9ibxgg^j>l9?@YR!=p7MxB|Z#(H;r!kt&m%Z zre)(yUO>^>4cj{G{FsnRz?nH|h}3zMnMU!Am6(>4xWtf8XfV1LWw!(P0fz=8!iRCU zBdAe41Uif2eu2ZT#>4lBJHHGebrDk;Eo?)TxU%ey&V=b;D44}3B`?zqYpx9;2 z0SkSjU36@-1;=<%h%ClYp}EM0Zm~A2;#tS3y_EKy=gF8O%-vcLIDBeB(v4ttOV|}j zI}sxc=4w)qdB)@_F>;uyqE85Tyq%>U1XUlw7^%T_*TGoWv^d-`n-Yca2hz65jx5C& zBn3Qo0RhrMKyvX$YRHc^CF%^M_RvI9v(}CJFLYwsfDZoFVg!UAR#lv_i4-m?YE}cY z)2TQGMiqtSS{7H#f{9L;lt6|&lc1leIh85BYLNlfBEz+)XJL~e^lC}5VD z-^ORSoTy@alP+O~C%Z50-rdBp^o_p%jy^>L36YE}bh8k4 z;EAyf@qUf*!jQf9$-~hZTVta{mb5i8;3RzaQB$4%@qRFTgc4`tSv({rUvB^V*m_R89Odty);DQGPKm)QoNO&LVr!_#&s}b(j5_jT^|Ka(?N?f6m z?R0MZ3bF(kb`u~;BIuc$ zMFS|g-fr5>k&k7?3V-s5(V4`JlzoOvY+^wyp=akPvo4H3fB{ePJdDXt0LqeIKpsv~ z9%N3g_pWTm`crivOST_8U}si^kE7jD3p`@qE=cq35;QHioB50q;LM_&E=2Y1GE}wC z@glqu?98IPE=2Y1GE|RgO9}c%)8|DhgBw^*Wj@)XSCD=0^<27=Y^6*aVZ}n0TBsW1 z#*O=gT7Yn3;wEuse#(Q_Qaaw3T&V}UGtHH)Le)(02`mqF+3&N9iIf-^EC`6gr>b$} zuBr>M9I1+uFp7FaQT<%dY$b2rdb_n|&TF`CU@qsm&4y8}6b+#*KYQ)Dk72&30lJ0YX_I>4Yx1QsSOJ$&fu2REb0#nWxy3;r3~%E-`QC>zJi@c2WH(e3W!2s zn@cJ|+l7@8{JxH|tZEexhO8GqW3M{{sAXPj3{A;mDPHPiBH295EPJ6qgjcyG0t%hM z`XdaL{;s%O6J2B}Vz8I8HD?Uc4YW#@sF(Y(RP&GImqZ3mT!cBIFooVRWVZuUeSJ` zS2hkB^?|~wp;M9=5rb5b!agDE4XR;BCv2kfT)hgorKeC!nhej-YU4bipvCkiZ45lv zsOL(y!>^l^XMKXkkQkH-or5l)&q0*MOKdgMUNVl4hcM{_*)m>~;T;W%TkEml(*ii{EZMDSjVreI%=Ms$w!%dJ81ID3e zr4_fu^nh1XS!hu-!_36WC&pAXacX%Y8$4M1AMb!vn2S(R;Cxl z+F5_AWUG=<^>D{hJ(RrHglF5k=+i`nG@{4?3{+f@5xTzjt+JY-ih}v_``1*t{?r~9 z)D`sIPg^FZ>_eG}Cxc9qO0BA+2>5Gv;gL6p)URhkl#4~UaMT3TSm*!s5z$jnouw@>H9BVFVZDci*Et_RR*2YO$ zI4J;ct<3UFoB~kqOLwN346cf1F~!xF=uO`=?Z(|{bY#o*XI>93-g~#JD*F0 zasNAtx!WItm4fcisi0HBp&W80S4jmFBxk48m(b}+OJA+JQ+_F2SZng~7R$TeL!k$M z;m|paWA>G9&t+1B5WC9*GU%%LJ)Nicx}}R$s>8^HPslFt{AKrhC=Q+Li^N1-5L8r3 z-A4NTZ%0L2;Xkx*5df|j|DoP))*t!!Z}mryR`?Gq{5OgJ*187%+y3@?r(Ih?JFK7` zR?rSBXonR7+yV%23q!Uof!lVg;BEN2Q3WFSwsJ5ST{30?uH(1(97oTf_!@O7qtufV z8M%#*Xgzc2rp2J&u&zG`^qY^I)@+mR{53zrxjQCn(v{aawihpAkQ<-aPZH;O+j~g2 zGMhKRP5j~`x$zu5KHA&af4;xd`vKPF_U`_U$M)X8fbkw=fw9~>*gZCL$f&Saz;AzE z`QHYI`Caj!TbX95?10z5Yhs_h}!R?Nd|dj*6CBM{c&OAv&o zn{YdTo%q=}d4EwA-yeyC_#|CP|10T#CH=3Y|34bo4K~@k2w`-WjFVD{9hS^KQoMB) zogF9f4#9H3SIR;X+5`iXv5g+=KxYGGpdfX+3WSOo( z8rxlOHS7W+KAl~{^tX|HB)EcX!!d<{(#9I8jqz|OjR^;%jN5LS1p^NI{zYZ;`^nomQzf12KXmwT0aOrB4%M_evXujOT-K?$@X@=(UbbRVPM`&3hUh^M!q4B8LT& ziVi(qn)7Ru8ay73&o7e_Dng&ZmNOQ(KmLqCFH-5ZLV_|J6R_@aZ?>K0+5JUPWmx;y zc%;bP6V4=Qz^wA%Hi~lo2QH7>42M8Jp`(Tt z|HN?bQ9P|p&eE!wwmRbBL$sBKBr+YMz_h1``l<4?tD;pEa6aqO(@7OGHA>ON_=AY> zpOF6q(@)0zE1=ZxN7F_}Fy7T*RHvMnu}S7j{BznxljRYR*+L5z1x|Q5v2orsD32$a zM;fB^49WZmmAnH+n|8uuOaMM)!q%3Z*r?|fYcvYWHFL|g3d^-~%War)&9*Anjo@sx zc!XK3zFPd@S1W%rn7@^qza7lKk(4YXmoyqN}Aj8aS z8=swhD%TFuS#O43dKlMpq8m}8r9xSupS#dNlT)^;&UASpMd|w?ufHxgmX&W*H{^%tq&K4jWXL&T zsX}CjOoh%;UFvLJDYhTyV*SO74efHtLgi!^p|(o;vY}VT#iTZzMH5&r6I@W;Dz9Mm z{gM36Cz_Sel?lyu)vS4Q0zz^+u@@9UKkM>-D$Se`cO@Ug2ucKKsNm&EfUo#>xUd$R&*03|VVv&3yu-h|{cxkAQEDfetV zQDF+`w!&NbjL^r^(<$ws1gJ;3j}G48jdDEv00#mIHYDpf89{cTyx*`@?l&U6x;PnQ zeEIS4lCPPAi-bFnj*4~Fr8&Dg)47+s8+)6mx21<>5zipBIaYJs3^+}LMs`Bk)5BXC zxb4cJ#_w{h&mPlu>`%aM&irdMO$BmJ*p)QuTuaxlrO|Mzd7L-TkpNHhx?R!ZOhrwu zs8P?<)N*R-_zTBxX|ror)X7xTw%e&I*_gNRaoF^x;VjhPxOLre>pSBHvV`KS?+hFY z8Q0o6RFnGd&{0KQzaktvyCyYwt!CcfwF86KcL$HElB3smN6)TH&+ELMa-)+SzJ74{ z`pXXAFfe}HyMY00blee4oDl?BTrrn8BZxw}-=s{xcKuGUMlf+lkSgl>72yclHK`Ho zwDU%=8yLaF9YLx}j$q=Bpk0^hpvRrOv(DX9I+?oKc4HSBLVedxM*WGa3RvLco^jB3 z@9x=T^RV)I`z6~)Mdj`qOqd6vyVj*Y8=Xoi+aa{Do<=wzdd1P+~vXfh~eK}<0Vh_<#t39t|Grwf3xMVxO z}rm%~0mD&<7n(xBDv@!bm}D9II(BLau1+(g;Ya+DoY zqc_MZHimsiu@R8K3v?Z-@RGU?SqW~0T9VJzf5`iBq4vWSG}JuH(}zU0VSJJd3HT=w z4HR9VAyPk5Q^-PUr=nYoeGJIUOwO$rD8c5vsnxADe2damaTB{nFLw*osasB7g&=^R z-ENIqz{{<&f7?|K=hvCsVx3&6r-caDZ02LP%KFQ|C1u(T-#F~=_Jw0=YXrNF%9lhv z`Yu)IkBlmq1U_Cxb=?&t*z(7QDsemgW8bmobxu2{bDYLHQ&nHQ`McHH@WngSmw0GP z^0IG`l<6FO?Uo6RU?q=pM$EZ&>uMfrYE8Eq6#8XKD_Bp*n*pIax2{Ha3_o7Tp*C&Y zxc#x7vj!Jl339Oe&S0CVjS1e|zQ)>7ebINvTiw-VN+Vp4eOC{Tcso1deRst5O4maC` z&9iFLF`^H^7t#bo-I96qf@y+j-RQf?=`3W_}0@kjB*(rk%-toSXeJ z)aMMhweS!f=VqrzssQm$d(qs-xw!)qi;a;NB`qgCbF-oHedd^c72SBmRJ z<%Qc%mhf0nbi%gNq58FKWta$9Ip>x1r*FvCIj^jq`@yo(KiVrd#Uhl!I$BSppS?alD7tNcq$aCo~nm1>C=h6-5U3_&1 z3FoctFy$rIws$dHc5U1DrsdYQBZV)ywq0p%-rBx5I1{X!?~7h<@8Ef_hxk(F(-0lF zdp#o+L^bHRr1s+Q?K)cs-o0D>ZZaL8qr1w=QTPk`fBY1Ghte z+iWy8IvM}pdTZtX@z?YJa3@a459BfVfjpAlAf7u2lGquJaerVyUqy*hUTeC_jpP5~ zMI{-*-|>lf1D`G@;@h9$$9LzW%i4H){uImo!)40$0a^b?jom=Rx9?Bz@9*AEhPC$- zxS(D(kITge4_-EJ}eom+!HvLP{lOdL5 zWTi6pFb0f}6eL-RIz!qdLU9Kouq21lGF(z&lfra3hGJy|3^K9eD`I?ldI`H_quC|5 zWez|x9x3D-jAf#kVaI0LOO=ZT`cc=SNW$0@xW0T#QqcI~Vmxxcr?WnYM)-|n+B;H$ zEg!z>{bT!w?cVF{fA*kfE2R=cxss`gJ_s2GHXA=w!oD(suY!z6PnW?~$;I@i2Tl(- zzGUOe8-)J#213d|MQUQOz7BiqEF3toTn4fgvHp}iyes0@T-5S~FwQM-X4xPF6BcWf z12u-Pp6k9ULQppd!!VqOV=FGeBt{Dxv<$&ngtL)mvI0XTEL4}6yp0)Z7=e6(dos+# zt3(EJb_m!QtEL^nHrNqq?daSJkr|^z=n$rQGR(%k$!r==r}35WVw&3d#2Wlz!kA)+ zXPPr6tg9FHVKxa(5uC06eD!+wxc6-T#opoW{`R3WZ|WR>zzXodVF+du{1ZRqN8OxF z3c?J$4Tc#ofjHM>{0Ip{5A;xKTC0?y*-#~U%oib1zYWI}up(&AufdHUKz$V$XoQaL z-rCx5xDsm>V1}5$A@|X@72H@s1OUI0_hswWpTZ<7>c8cehPyUY#V-FADEGnsi$gt2 zaHrFO2kdEHL9FA@cN^E3EYFZjZzd~HJ#pt~_ee$)nZ0K?4LE_|)SAsO$T)%d%lPNl znfQeh!`o8LqPWEk)gR@eNprhfV4!BiNLO2*9+^=0+%_B;y&UzXj&wXMfLEn>}v)*yK{Y zE!|0t&Jw-kXI`M23Yp65r+G{{9knD=Dk#s=J%!&E?kPX>0zFm8R9;WbW6J5NC7Ci2 zc{I7RAycCym)w^YZh$4P&pU08pKHoFwpfG2Iac=C8c^pjSiv|6#f`S3hm`9TiW7MJ zetbFXi}x{UhCU>CWhL!SjDBorIp1PsJ1r=3%r^36KkOgqz5ye^XKng4feATf!di(VYB^;^qgpQyo9w+Kh zF{e)OXbC6a))h{{rK-Z@=y>fiP}{fPqRo#IThu(s(mBqn`Z%}hW2<}zIAgv5CwJ62tTgMC_Zw^yq7(Y*a?#e84G!UJO;~M@(RcgENl7ye394t6&dKuhLm^ zA^Kz3eNi-@OvfJveZ*Ul`o?vw?9{LA^n_7EBHza!IIQyk_F)+_SOy5jDnCx)f(X|| z%%#Ep1(URU2gVE%2#t$%v?J}NT#Ir3)Bz0dSE`e9-2?=zO zG76(4L`WFZc$5z1!w-zYdn81_ji@M%FK6QmTzIJ9tkJbZhbPu6kdS3Ui_d}9apI05 z`ghJP#EChoZ*zD6%WzcYmf=PFq$qPQPO(+aK2| zs;dL)Wz;I`9-+}U(PtGQ>+@R0ihFBUp1H45n-t?LZ-6`oR4K|-#S1f~>LJY*Mw@a2 zO=V|+IwLXz7K*8DrnVnk+fTtL+cI#M9b%h@$ogIoWZUU_E7rDC)Qz_7COPr8O>+eQ zB||{d7k1vth7EV(hF4URA{8eb{&hcRQmTy1g8Pfc0i&d;+MmeC#;z(rj<9T!42Eoy za$_jF+HloaJ{h*p;{hyWg0C8Ia9(vpfUuof=L2R3@;x%Vs za2t{RK4;AUKZ5twOBfF`iGfkMUpneE9hQQwKw2l3yYzfgjpv>NQHzI2CV_)Au6;Ubre1q5pOR zG2h5orPX{rAMbZ%tF^M#`V-k|DMKwXH~R9nS{XwvLeI{aYQ5eAO3K3wP76w*(58LYr#gvc$oqes}P|AjHQX>q@$PQY0psSa0ktI$qhzKCm zC4H7$6K%p|o+jCBiS3tW7n3bNG5$ce2YC^uIzHeBt_FThyvNN62b6=4Ku%dlVLn8* zL#`+duQ3T}9(;|Uy4F}`MW|NHW~Te|Q;c$L-+tDlg$BPcV5MA=uc+!GL`e^xh_-d{ zftKpr*2^oTaI1ATe}WtSy{E%-z)M7eaU*X`P4Fv zX>_j98dJ*>%~`r8%bGBMs>sUYktBwBR3}~bknd9jf%bbp`P^=_US~<8Xp_)s*slerAf~P(7I3D+i zx(CMqh~~^(NDT)0dRQ7t1`M6?VLh2iq;S$s(cC~le|54f|E`B_!0IWAN^wZ6C-wp4 zQ(NH4PVN|HLT5yUZ=YaXrpT$&ex=hVmtK@165U)9Y*67)@v`2mh0=^8{OlP{Q8pfd z-p;T+uYPI55_nK7=+VH7qfvFT@|q?y%Bcuwro>qSo;?2d@egIGVy#Fi#20BR{s*aJ zRXtq|{0pi0?`bGRIJGbL{^mXu@#=B-LMf2C75`DgFJu9@rM~Frxme4oya4yl?DfaF z=!sUw=D@4;$3%vmK>HW&^VlsB_xn@W3)sx|qkI~LYyCz1GhRm$wVdfBkWV{s1RTCS zI3U?n4rF-&VZGuCs?@rvZk_$+XsxWumfq!P-DFEj`CYIo$=`Y6lR-slkDrJ;?Xk5e^os(ICr7eYYoE?&f?pz)s zK1kKs==7#N+z&)|-56BaQj^7jrrb1?b&uRP0wDc{!?Z!NnU&|x6C=CafThpsjCOZV zZNQ~A zYryS42b_%%WnBj2d$axe#on9V_kNH*{oOC{y>?GJ8YU=)!eSv*A^CP-@3Z~E6xPr1 z3I)EgxEf!=T!ueRQ67JrQeMb~CNoLguie!a_j2bKFQg3)iJQh&GZi;#^7iq|5>muZ zuB@p4L$QO@{3>5Cm$aVZ_W+eM8C_m*`IA9O$?I6{^ZnPyZ+bBC2+dx9Mq%Cj!T`&d z$9&n{d%pelKowLaAo;VZ#ds>%p`5j8Ocd3f1en$@k6yuSlQ9XJZ712Yn}NcA6uwcu z{Fh#(A8s-JbH4ny@o1yz$A50LR`@@ELHiG$GhqXeu>Hr%q+=z-t%SIh5celE>Bt0B zULu|{#n}0N8_xKb+dJQ*7y#u_tkYTLd&|Q(y`UnbvV`6EU;p}-^cfkBQw}+wjxQ1u zaUQ1FHx~k}d1XK!$>+}D_RGEUr;7NbKfyeB{crq4;gyCu%N;S5;XV>{3w*<$x%aI~r0{M3djM z1sY+bq=6L^7wR2Op?p1}e^2X-$W5aFbfzHaU%{>~9~3EJ8@AR{6EXUyAvTh^#;ure zltkOZ*)hFT)6saTw(rXIYKrC^_`89>+vax@e|PD(65;W43qLoS^qndOqIBl=e*ziI zgbOw`VH=UsnMLXJVltqFdlcsPG~(htwuFLGCe=>a)C3sMyed@lb@<^-++kUNlNsPH zi&VI+3+y%GnJlkh4&tn^46dy4zW6{jo=qYv4EF0LhYGhG5%54osI2%rF@9;;C_TE5 zn{CsXOtWQZ+K;X1`(YK%j6~>tNbv*<4PS7o3Rq<{4)Ju7{O1?qDwzy8rkV;%hB@~M z8;+|VMAJ5mkBifMGD?UoOk(O1q81}4@r;``BgCAKBU6KubJMPn-y=~XFzCy<94NS3 zn+aWsTR;Ag(|y{6&QsZ-^2vBYdjkF4kbgJj-!1-|_7(UWHX1b@f4Z2^RIE8WRS&ja zGi7V^(tz4g+MC@yt(q;l9?Dl*=Kj~|{`}?a|2wUED{KG1(*OTe?f*%>#wk>Ar~7l+ z-s9=oup;F^T3hD z@A*|_XQ=@}EEcX()U(jRY}fe`c15Vtk``ezeu#gZ3`TvIWlBofk=00&CLILKhs5yd zj4NTWPDyuJa|uz-T0`LO6EKHxJX~!92T?|A2>$L$Gtv?(-?n(mVo7?fF;~_XvgFES zV{3+-+>SAsPh1Awa|X&HaFd%Ea2xAwTo%_f;9e^&+0QvP+)Ep2 zt0J=Z*%g}*=<;l~GxJ;;hAd#qZI1Jb`0Y0rDx+Lp+#1{nl=tt8J618ekW{4oiQlAv zA-J|Q3FJk&i5mU;*?zO>_Y$_=0W(-x6m9pZvxIBL=@?@N%&N&!LmARYQ)$bBBM$_U z%}C~&84F`HE%c;}TuX^47x-g2Q&M3JrpVSc&2nZA9Z)KsPig|#+T z3fO6XcC0ghwGp8L4Up)Id5#sz0$tiE%chVw#V>Lt{UYC_$Zw+ji$;i|1xWlzhK&8M z>!I>X$Ti>Jtv?%;*UtX)-t&X)7sq%zi=sv#VV6>xffTawjG}g^5bfMiH;^RbhD300 z&n8M}q^K3DkEdxP>a=qcn^B_~s+4vXXvIb+C$Z6qHX6;P?4%d4k`~LEN#DAWbp58L z&q(9c*75Q6PYdu)H@y;B>zxtUo%zCzNdP3ViI~kKu17Fz)Ze&hXnQ3F~K7|<@ z0rWnuwYj-SEfyS}&mvK2X=N<`ZWmD{o9THJA9)nJMHF{Ek`79&KUh|_&&$|@=hjYn z=FivyGj)Fh@`)ilP&puCqHN{SuLNo~1vYaeTfdL)X{j-n(*wn-BjS3Xi3K2Xg~Vm9 z+wvEfGjSHFL;<4ZuNBI)6zp0dt?t%*bK9Z?wy0Br29GKR9&9M_}#c{X)fFIxh&$)IlQF) zfIaBuHJlu0i%92E;3=4U>-yq%F34#wpVCsg$2^szhLuz6)LN6cKw{VzXvWKPfyt2? zNkS=5mZhK^1z|astoQ%y#!}`5tLW3_$A!w82OBw%+GXWdd2HN3bFP|co{JKg0SB~D z*t9y=fdyPsh(&tU;ee0a9Ki`J;rdP~ofz8_Cf z)1y0THjNn}<5RQ#=ya=OgIAQjT)3U!WMGE2!j!XxIu)YdPR<_BRpH)5dApR_mh`q+ zjcrlmyA_GG7k&po z&8~DGO48mhGz4Wx#$JK=-Mam^eEiE#|E}BsR~F=}0IsV5uFD5-{cm&({KGu?NM{rD;I+ z6obCJ7{b;$UC2&#B{;4G$Cco?5*(Km9DjFb#Asn}M8_R*`?$9Q1dfjP-tNBYy*e_6 zPbf5j-1!Ek<4(B}MYU5_uTN)a+~nkY_5Atq-kb6?Ij@e-&MKT0{*@-PNPcwkgLnqD zZhHkFL+|t~4wl$E+;#W>k%+nAXQeRDMLZVr6Rz48h+VUMl^bUH^S6gPWwgy6#TQ9M z^u)b;LjCl)&1Sc9$}pJ9*^)grBU8q6WF!a9yyWV4%32&U62w{5E|qdJZgn6(bxTEb-nyGIRjb+;bQ|GrlQ{#@RB4C zNubqemVt*#^=opl{Ec1p94mKSZI^SZnkPvdwfWx^3{z^)VF-`*chCsxr*!Ieo+eqz zDBLf1pgS%<^?HP2Xuj|7_F$uXy|>$gRrz}R^}kUoFBuY|cX~OU!Xe&+<71lidmvs< zRcQ0POsX*?!%ni)*n+bl(uzPVj9`?`R?k5?(V<(*r z()c7V;nZosz21w1SI@Q&u4?gdnq|@3k zXN#g#&aL$Y@#HI6aB$z*$4FqQ1uJ zt6ZzUWt~TL=4M;YUD?2h8;6A!bRMN<1y%uhdM@ELYFMf(mKrW0-&IuTB8`qL(r;3c zn>dPMd5}r=HpMFzH7`y(UAQTM5Sz{fh+A+uP-aES@fe9ZQQ2$GdZw8RM4I)`l!k;> zUP3!Bp%Y9nE2)})&*Y3Yl5&wYp7>2$l@ z26oqPzggc&%uq?C=!~jQ@ib8!dCRJAzN@bDxzjGb%w8+oi#KPnzW|F5oZg(rwc$&1 z-gY^cYv(3xf4Uyq51bQwUP~mOx)~d8Gk9}t6z-=%2IKidFKO$lJE5wZlH^J83X+*M ztw$a$Xk=GX`Z$LYX4Q1MSvrVLkhkA~gm;qN*+h5!X`@qRlgdVC{b{TDC)n+PSMCe` zCyk{VMQn%u!sEBdKE~anJMXd8d3wLJD$CL=scf6J1HQ~gQr`onc{v)A7+Z>_vy|mg zBi%>jR-Y?E*Vgl7?;PRWvIohL&+Qylv4D(j7bq6fLAqX6P){c)lhgUm0&~~;w@I;< z>iSX=b=Jo1&m&rAdHb8l*w<)Sj<6k|1k9uI31=v1ETSp zYd)`M)w&jLfr49T6H9>%X$r3S3mOlFp*2}$k1XrpMVW=Qhe#>~s+)R!tWMkQZN%6=`pd0bbg3@nU zUp6g06<6eu+6+wa|3>L4XGng__(6sG%aWJ^bUfiFEd4kFiZ1{;@=dV}WEs{Li$ZqB zWh5fI+%4-bbHyUP@ETgpxRQ-lvQbbry2i~Tv?6krptHQ}lMrUy-of);&zdmsNlqiI zHlgJe)nM;TYA+7ouCoK!-MiKACe!ix$pD!BgMg@4|NV*Vzq?-$|E<~Dc$CF|TiO47 zDf^$2Sj(Esw8YE7xIc~0#Sigt7$cJCw-@l`yYVC$ouvKRczXU6N@C$#GLKoixp~am zZJEcc-Hv(8+O3$!tlgG*%vynY3?$92=Rr1~N#b$VR5fKnBfPc=y5MrVuM~ji)9~aaiplp3Rbr2`@ts zTRsf>jGl}W>G|`00ei#rir*zuSSf?k_u@20G~?kQJ{eviF`TOx69%Fozg)3Xll8nB z4X?y2*yf%c@6t&~Sbi*3LyEp~Ziz8eI5oiBqMTkrRfyuZrrl4zNyYJ1`U4TFz+$)@ z_OWtJ#Q^r2bvgT(#6Q!TL`v(h%0}ywA;B(xDQ-XbVEX^T9(6v(LK?Xl!LZ|RfDQaK zlM4(93DNC7+c_p&Lb?1uK$~dq<6iP_)#7s02ZE~Zv+4MP2|-tq^?9q-5#tdo+&*Fv z9&SOglDX~ z2b18EJ2-{C{&avFIFh2ViS@(022B*_$qc&&XyJY~9bcZmSB;Wr*HzrDCHbC@o;7#?_34HfGYu$IvadSQn`3_eK{(bdSW<@GaCp%Uy}?d& z-~qRCao@@f@$I*wUde@j;|%yB#~XP;443VreYNHP7a*lpB{{-EamNjIne12ih^zJ* z0INvOM|_02pfOgM4a^~DNtsHZBl{K?r|p7ZsibfJ!XT=p0tD4RIew}FPF)B%hJSlV z39yXfLQEM>nFa7vB~XZyVn^lWbX-yr=TkgK7gtyamot5|Ni#7%(@?yDgVsIO%z2eU(_{d5gOp?^G8kitfsZpojLx-ATcARTPE&R6 zVa>^>_*8~2hLb2Z#$I&K8*(SJIlrQo1hO06A6fu2v!aN}3bE9|4Tb3&hd!#MVPX<1 zbXB>McqK;)kH*TO)_w@FhM9O;R2^Z_cwvxX+vHfqbbl5gf|&3eFz$n?#I;fVpvc{~ zVxnG(MzBy};|6IRZjW*=*Ha$HwbNdQ$s(teGonma z5$54~8U`Wu_c{x~htpuqGPr9lvl__Qf{qNJ7vBK6SmV&VUv!jhI-(dNyGJjuj?k6h=;r!cdD*7>KnPW7uZG z2ItJc8rzF950Tg`y|M?etP!$u(6NMq$I4)1nOdLW)o7ZWT@I@(*x}9HoHeM*f=m7o zRflvQoZz7cn;zU&K^Ro{gZSTgq;6*{1gYg*BS$Z&0;EwoJ23Xa&m=0SeJ#eQQ5Xy< zxYO91T=pcOt%ilDCvfmT^wFV>P!&#h&jh(=EdkQJ!XnOKI|hz#4NWVvnZw4*ix%B; zaXxvhmSxKgd)0f+h7OTF($fLRH!p!Yi~iH13QxNT}JXJE>ia(uKG0Yl5UMt^x?$)Nc%) z`uDm4qk@+7L909P>JGfR1K;Ql918Sd_AuUP<;IWEfrUw%17@lxTO3kt|-Z; z_wi*q%iL1V5^50Dn za22d7*B4R`IVwuD4yZ<7Pn(cisXtxaCcmpgmKJem@Cp_|#DT<)L~+O{|C7?{I;M&-#(+lB|_H zrM5U#m*cm8Olfn9VJ7NBxKo3WVC^OhJUu2 z_{@Qy>grQleu00=FLeUrymWH47!vb1mRO!=3}4Is2I6D#4Qzg7RuZ4#`=sM@fFJMvjZJDd{#owAoM>0@4zf{-PKQ$`wf$}VX`n}Ol3=~h2iCJ0 zG04mj>vH}!O`*Di4?No6A=HJ)>9Tv1;mm?$a1(7zRvHis8`ZI;Q-(hp0+!im5Fbru z1BtvyX2x|)p){(dws~IEdGZYVda7W89JS|(a>_D2pe6^Fp|RJkFW0G`b%LH0<))jU zCr7#MCUkW|M<%EVtH(tSCIh*SK8$}(Jm^}4DZ%}NL240GR?Vl;_#+!cXv-=#m{Kzf zdh!Bt`;(!rSBYc35znk~iBsQc#|5vY?%mL9q8S0TshwsP5GK)%gK(>-qkfe9hgK_; zevEVDgf~$t(m0EaBOyc`7X)zGJC;YJ8KXS z+P<^7?0x+DTZUfe&75^UbT?nQF9w%;GjF+Pw(u;K$D4r-5hwnQw*n+$Z3Xr^tgUC3 zY+yIAUcGO)DOi+3dxMpnw?$Z4{vL`Fi8qjmCQu z1RJfAez|{Gj;kjXw3Cc0;#*NZsZ_-O2>h{0KWq{FrpPDc=0eY93n8Dd_B?|-V^oor zy>%Y?Nu)(&-^ady>%ipRTOnmI%O{y&dBe1 z^azKBcQ7Eo&PaXFQc>M6R&@Ggk1N$+lo|jFMFOiEhr?@@TRmSxlveDm4d?|p@h;mUh zL;WHLOztN~OE?kA){wf*R0^H8jHoOofjYhD^t-_;FP=h`-a9W@u03EH)?h-vT*9aVK!DXdM-sC7JJyN z(|N&eQYAk-r<8;h!FvXdt%LW80S(HQAqf7nk`MW5|BJ%{5eTNdYVCcJ7`D*%?W6q~ ztbC0MjOj>h{i*gX9g`}9?r0hTa15B~0}vb&+A3c-R4Eyk zmN0I|YFyMcA{Fn)!@k77C3?<9&grmRG#1r!a{yVQ5FSfJ=1mtk9@1pu37$kb*DM%o z3b~Y*&Qr6JT@-m+IBuyvAWW2l2NTIrM9jNI*Y21!gNz_8Eor0*n7%2z>yVoTv_bBc86^(A z)AYzyc02@G{>MiB-4;67HtLXvyOH)33A_u79k-)UFY%_?V`7`a(DXMb&Ia4#W=37b zNvE?h@^FB`F$%J-N%(y+1YTq$I5*v@{Crm@!aW_1awXLR_>l_c8rFb#d%cs(!4P_%cx$p<=f{3o)2_d(!kuAjft>9}GApblnlAM449oK3GKF1p z2y3-}MORr^K^R<$CeAXb1O^DgEGY>~umm1~4@988SV#nloMHq|^NNFyP%-$zMu4>7 z24w8A$fn=}0$?7q-FlbK?PvRR%?(Ul$m~wvwaR_%HLgd^$z}Pv6DxsK*?PjEw0+mr zAv(`6FwoOF5B8cV4CFOo|_O_8Zv`%G8iZW&Xo^m ztf;P(qR>>@Qo~QEA`|_SR0ryZqOqlP6b4Qt%A$!xAuy5XT38|sC88t~>NNt=qqVKo z2Z`8z{i3)1dT$#a)yQrXPKX2+C>2XMP6aJ|caTQh%d>iiOObUD;=`{8VEZ zDJnR0%RIzpycIAC$+K$Uu?KxT70$AjEg6JViNc5~3yKEr6N#E_ERvY{qoD0i(C05ybI=k@ujR&4( zdNeYaR?aJrxrtloBgOVVw*vq&5C5YB|Mu`d+RaBR`=7sx{mro za-os{uIaVA+K75#7!>_qAs&iw^IaPn1?B2|XcRlO7#gMe=fp;7cNarODgBAs^-%)$TYY_v9f`|ozUvy%V*Quf~@|M8T$j_5}R-yB2mmDslu`)*V0TgiR@C34?w zi+vd=l7*2-q@UdP+aL|R+}`;f1qLXOlAz8i4f7tx=>-*`_XSz7*MnBS2ASyD-a!v0 z-Sho_^?D{g=c~h=?Kh2bToor3`K!slygc$N?1K01i4&5TP>9sK4!-f64L*_7gg&3J zkcROIa6+Kun%3d=%f0d^RaFC@(gOTd#ixpDhF|iNl7v(WOxf4}#uWB7)j78WIhX3+ zRq?e_VQ=Y=o3_}?{k3=S-0Go&K!~I82hhvW<;7dIO@FU?ouv?kuO`?*HPiyVbjQv()}qX5_Kb z4cSdjhjfUmNvr*3CF3vm-fX|sQ1*&8u}#)jDEY52dGTru?7aLbAXfJpyV zC=tl;0X`>I2Vt;>*k<81Tm?7KTt3U0 zDTi$EjFWWC#BgfUscKS%Q`LkF@PMODbT^~35&girHY2hpQHiZh%ZgHEYD0;^xqNF- zIX51zmCY?nr_DQ6Tcqgpxmod$s=XQjnid3?7It1)UB3&e6H`ILY0&f#!u*K=Rs zAadJ@OWtVcLqmONaQR^@gJ($D%X5E1#Zao;qJ3*lHTQy z_IF^Hk8nt*Lahcq6`bDR4(TA8k+14>iDz`tYEs{?V{Lw$(pc_^}56!QaFb zbs?elxUa-#gJ}v^GKw{VQ=wv}`~%qa{6W{t@ps!I%rs$^9X>U0@j2YvLUZ+Avn_B4 z;@LOo7k3)NMF}^6;W$R0iVp3u;*)5zTLrzSbN|2s_4-D>#>+8LS2DIFq#o(JChJJY zS{PNdP#yx;+z^+xbluR7158Ld@ZtPNVlc5jDrgh8{jhwT4XdUmo}_D=QqjCi&BWWp zIiaRR8E#Su*}(#1Y~v!zmhI~5vTfb|PIB(eP1c^tPG++I?X1i(<}=K*;vYDA zI?T25D?P2Z>bAB>xd2rp!Z0UU3hSlGnb4PG<5AbNyv0m&z>GtBq18FoZLnR9+9RtE zyehZ%g=TQL&cpb1ImmXder{o36=6ME0T$;ac+0BRKA{C~>U80rINUiR>lM#R#=$CWiK?8`p zEHyaVZL?}>^o3_io!}rMeCi^)QDbL{H_;ExE3M_{ST0GoKr{H9Au3fTSu~s=WNob4 zr&Y=2PGwfoxur8JBgx(%e>gy3UBJdW1IFwhr=Zr+b)R(|Iax?2l|YZnk%6fLwf=~g zULF8+kOd?=&U)NWY){ItozPwdhLnTEK?i{c^~cgyJg8M|IA0X{ni57r*le~6SaQ+A zjYD6JuThu667jf8&})wl`_@)@TXngHuH;P~#xJ+3H?=1ffn{fxu;$T*F@0pEOC1Sb1z&(C38{Ks zk0l74uMIP0)ZFPIu8m<*oUcuJ4imDuk}z#nueUZK?5eHXA7@cHlSHq8BnuogIrBID z-PE7?s8`@oqpg?BV7muA=XREuaZ*jKk`XBHNYWZ+DH3aYOz*}cus8YOqH%9FO0#C&d_!A0?Z5mCp1Jxm#{@{(gM-<_fB&NZ zCH{jiY+Kgt{``2~{B%M(I_4xI4fI1aOz^9XexIh~e>#=%4QIA_zZ&p;)?e~z+=KM;nUhNumJ}8J@offCux5P**aq^jmhKnqU)u)RS=yVRDxYB4p$q_T8E1m-jY)QxOIZlv z|1kqJRT+QzLdxeikK-G1qVgZeN8(W{Ego#Rch&?Dj4$ji3%tQ^KfRN(w^@u{I+vt5wgO&WXH7& z^(iy9vJ@g-Psef9^OkTmO#9X86B3V;ub*Ix=4Dq|Bd1qR}yTSckBBaIsRNl?Fj2x`Tm-gRm9V zD1`lk4?=KvmLAB@yp=p-2f0TAYmW|gri}tls0Xbh`>jlA>_w;-O=8N|gM^Fjo)wm) zG6(Gyp@~f}5In36@)2E97^>7rTd~Txj3yhw!wm5LkWg<)t%Eyo%v@!zh#p*_ z1}HN1gD;Tp^Z>B+`pN8m!GJf~^fN)jb^o0foj%@X7){CE_bW-8I4UbqBN@`x_ps$I z0uow|n)q9znNCVKYtBS~`h4BhHM+o)+c(+hM~bIO0+{cJe?XNdOCa7@KR6-HM2wgO zcl|cZ9gzw9C;S@M=dLXS>kk@tJR!_7j5mNY4XDM+qAnm}X7gdsMXa*E%^e9Aaow|| zJX{vU5ZsaEXbnh)A8LOoiQfQAA9+SV54m_B^dyCMn(36dXrQh`M{hsEy}KPU5Vct` zzsz#B%<2;21e+8yl%pa@FmQw^C9$y-)mH{Y1B3r^9*}&po-UtEPc8L0PJ2e&0&4e& zte8}&X>A|vj!8eT61*s|*TAo|72lmWvNH9of47+=Q)}ER8OU7uGa&@ercfx?$Rx^t z05&3d!M^m15CKdl(eB^;W+O+6*@~OYaxQH=$X_L%P0{smzi^W}$c#N8 zz`iyWZ54T#LIO#?VE``M@r@$=)m6@OG-{j(HUnnH;H0||l+n(9=)Pqh2X5OG?$(#+ z+V>Wsl3<+0154ja5T9XYoqSMM;ZqpaZ*+g;r;G(&`1y8a>PyoP|4*}F>6(rg5 zg|h8aiqtlePwKx~rhIe=V-~T*nc7tcq{zOrpTl<^S3B7(G&M!a!kt+yTo?jwG(~*D zS}3=+}&;V5=O3y8kU3ZP*56Mv+fS8-M-5VrqMPxJU|8VfzsKtc7ndsol>g_$RHw zUyzzxjo?@6^L+V|jgVKk5lG6H$4X0AM84YZvww17H0UtdXUx+8ZS4VHwJb=BNaG-? zPHbEmBp97E{J31W39ec;v}<&uZW>FXNnEz=+y3x!*!369 z$qe%i?v9Kg4{aT#bZp##(#>>x33T;a2WS;b^)YO%2mwj#TGD(*Z?b<}d2zT>-8!1a zcf377y|Z?8e8Pe!92<)O?-hh5l5P;n?{+K#5EgPT;zDL8R7?_g0P39Y| z_v7;R>r(cE1HXen`hws39X)He7YV(8&+WbTd)@EZ{RWzC{&85|!uqtB==(Qa5PuDz z`Sm+>z8(2pU3f2m<~BbL7<3DTnh&rP8zq=qYhqR8!pbNS?%Z$}DQ{&wMIzmJspRSm zliW?Nm02-y$WAU$X1Zl8R_D#xeiw844BlaKtV zj)Z!O*3?psOCI|%*XABmfggD^={DWO;vsD;`LWQfq@~yaP^HnaEnQ}9a(XO5r*R}U z`;KP#pwlGnb>m=u#9wU&!5E$Agp=`Q^z4ywH9X)<`^u}c4d+HF`C4i1xSs#W{yB@b#w zz>qqHvxH@6Tl0@S0Sb36?G1CA)MHkBw#H5!Qe%2tJgeSt1eznlu~ba!oay6i|6<9l zceX->|KB`CKR_Leqx{h(+eK~-W^$CoKIt0*2XXL)N|K!-g-rH4L_Vc0Pck#>40jzt zgt^8|Y_12|654sjo~5_x1O%B#*~+phJ}?%^FUC!&0jFzMcc@DPtL*ElW%53aRWHvv z*u!ov_9>P{Wxv3)!r6HufEdO&kqFY}+C;e!O2&ZOu;1Kz;^)Zt59MQ5h zcL?_tuka362)7-13(sjW_?K8r8`|CJ)Z_Q0E8_VoVXa&z+TRqf%gYecY}h0O8G^nI z1T<@x!Zw47Top^Fv59~7_!v5UiNH|f_ub`fR<{25aEpu36&V!qZePF7d)vu&Pn!E! z{w0)QQ2?XRnDfJ{0Mxxe`6+S@%0xVOU9u=1&+6G<-8|hG$L0kz{k*UT1_hCq`@^ez z&&pf*c<;%ikrGE=uco@segLU&_CY?!(HU*(y>NO7c){SS`0h$G`D!nX_1W`ssdA}d zCAhL#3#Vb_9QSRt={rO6$3Z*^-g9bLHMz)&50e)ZLRS82DYR^-@%nx(k{zl|pdOfh9LNb@-K%x)Vdi*Cl5a!aD8eOW)rY@mOCPXC|_#mn&sk8&fj%>u(anO=J5V=05t$sPyz@ndB^gMX~bySF>_Z|&sV zTF150Z_qEkQHf!kSY`pxYtRoVY|MSrubzFLcI~{RF%YG;woWGem11Caq$@cJ)*`Pw zm;{0w2O2R73JgbI{u|E;9sae?g6tgu)T`JjAM9K-i1*<)3~RIZA}!@LO*@k}W>c_M(Ug&LpQK0v=VtU^s1gIBxb6unO;<$1%k@z=^1 zURQKIOEextmt5%tfKYDIk4W66PC6h6CmEnp?Dg?NB;mZKL98?TBT)VGZU1bL{HUH_ zK=)Dap7*s@?A^U^chJ8|VE5l*wfJj2-2Yoj92F!{$F&l0>7^O5|1_Ep7m%1#^Isi1 z7{}}BTqRh@->IrOW3%1d8)so=Cc!~uZu*yfOwY)KLW9$s8oMzyW@~2hyat@f26YCz z`aV4ayZ1*l9qXuce{^35cEM4hAg{Q_Kf1g~Pl$A(=?%=IpWVb`LV@80!Jv1nM?th& zSqNEJ(uVVtx+A`4N5HcgAw6+-c5wIkVt4i#{!tl}W$LvqPes_DYLY%JWZXAY$Ce zPa3T(C8rO01cyhyYK=e=^0}TF471dFG*nz(HgshF(2uZV6IefgfuwZHdHb=cH0ghFA%4y*>PIX4a!XS5($S9YBDf|U0O>^^k#HF-FsZad1?QUJ0i6?1lzI;;_gtRq4fHS@WcpwSN(59z0SvwFm** z3`&(vojj(9fmqf=LkuB!o}w;q#h4dbWNsr;4+*6VPG~@q8paDgYPCM313@=ceq(I= zvB*XEx6)IK{hpNNUy`nV6bWNpxg%`dtjHgbT31++PVY!lZ?%ZAzMMWS*7yi_c-Ggr z^hq(F&Euy4Rl7zkUKK-af8a>WE)8c!JOEacMq2tJAgGbFeK!<=R{v-FNEeOC!Pb_m zhM1iDi;E=F&uoDImj&fr?Th5so}_zXc!cRc6G9XYX_?}iJde&UNR}fC|AD}1JkSr< zwhbqdA%l=HOEQ(pXH4E~dhV z2t3UAn?Roeqi(TKS_%&p*6c&S4YZQ=f;r7d$M!cuN`j)*F0C)+ewhN9F^gnmG8D*M z5lFTHf>L1a{h3NnQegHzXP%Zt+naI+>hH*#e?g7ezVBk;Cgs95SJbp7+&U!{noshH zQT^{wTNzSLb6;7R@b!+|lo8zdpA2PlPicRKpmfGo01?xy@g*dM zpulL^o4FGuZlMaA<|nzd^-WA2s_|_mtn4p)S8!vHKW6!C7LZ?D;9$8nofT_DDL})V z=%fdKkP z&Qrb>f)>?TRajG1K~Vv^6X2zNcYCsTgP;b~Ut|jKU$|+VGR`{KgWU2Ila-POG@TTK zj61RW#;#oNSglS}upH-n;gHk{!ZAJP30WEFdmDsU&->3#QdL~J!yv)=1#}o_eYi>- z1E@r)IcC(qB1P>PlM3>^>sCgdA=`wQi7K{p*~#yn@-_$^({Y2qOQQs z-3K2`)732A;Gd-$J(R8L{B7_#dbjzDV>~rV4}%Gm6jrm;#rM!$r5za)qZP{6+;4;^ z0){)O+bou|xwt0h$TfXM?z^KCoH`Jn_UuiRPh{e)GdjeDzEK@r8~6;|`uS?>2XGY( zst#-mz8cbIVC=v^hWu}EG4!WQa^U?H{(*&hfKVs)!(V5dUHB~&3>(ZsoNaBqu|IHO zEMp3XAyjCH+Y9i1E<0xZb6#_%J500cPLawFEy@axL^ev)i&@UHVClZm7cMfYQYI>|aKILWSK)jy7#C^W>3byl_kuGQTt`quN!gi+#_GODbgbPY5sDatK=p>-U)5 zxp~}0Uf0gKG6ihXAGZ<<(; zAa{_sO~^7Y;brR01#xjpmsvC@B7R=;oddKEg0mUV>x3Exz$t2RkIcC!=%o?dQNb%| zRw4gr+yoRi50;nA{Uh0~!5aVGq&|b;Z+?{3mt+wDncC2hUh|_J%*-s>rIn0_%B(qF ze#QHnT75s59AghgO3-I9cYTPur)Q-x=uar1?eRe>AVdABSlbpe^&+o+1oN<{K?N+Z z5o#GK=}CRwg&E*=KXRs;w=C_a;=a;?ww}n^)>FC!wPy^YDtCWx1A!14)6@0nH>k#b zw|C5+J@b%xZIX#^`3g;i`KsY-R9=n8Cq??o?|?XXWS6+gG}Yp2eP0R`mRt|ac9B&} zlL`}^xCO)AW)%2bjbj)XR3I7Ku6R=Q4x(dn=vI2|P(LiP!Oz0jRZR72`?$Y~+#I`l z_BNdTab4oh+CIzkI~LZi7K3C7dvf!tfk6N2#{RgZQW8i!&aIoJnOlj_y$k6%u#5zf zModmV6q!OG=e>%Po(|xvWTfdC8a_V_>9-wu0+0M`x8yP98Z!7#?6? zZjb5?a3*>BrBJqS|U?oR+8o&iW9 z#jMsNoi6;y&wBY?*{S!DZf>|AT8n*J8UIUE<%P~^s`czgiYXywF4)jPN(=SULCbBF ztwFpT9oiGvNm7vdR=l}1Xh7l!N#%jb1BlnvsLBT^QDb!JCFhFuj%E+R#<5jgO^ zD$61qm1fBJy^=XC0adNbbK_5Bhss{koSFCo&XmTUvubhLCMg9+sk9!3Q&(TzA^%E> z!%A(+yF6d*J2QyQXbPfw6h1$y#JtmA5nj9zKg7csF^hy1nKI(HgqV^;*QXiQL=1ec z1oOC|=>w_nWfZX=^7=xo>&OS*%uYdLcXm02etmjezD-q_N4IBQ2{#?ob#uQ}czwLS z34F`8$JDWSL(nFh3*c?GQ zkL9L%Ci}gEGAz|7^d~1%kK0-l*L(%teZnk;J!mi6&ZmvdIZDEMFaxk-c#!e@n4%o2 z>ZF@w?dLvkLPra-Z^s*db&HUd4b;_bbxN6sQm*tQF;Xcqi7=nco8`ChbRRUo0|G7W z11=wd(ut_^njx*>EV5RlwUN58g~})g&c#NO6=*M?+6y-klwH}EQO!5T2%+f?$&zEt zNPW_B$3XlNjOPb;&FSR#=!B9rwz*(?qw!8Mb0gHlf9 zk_>{xMDO8F$Ea3xJt_Q>`tF43%;(t zKOVuQ=5cla#G!wJFXj%6I0{897tMI=Uw#FEeURuv`^S%T^JJy$y5lMi67F)8)41)<(p-3Z7;JOjydNbC|giE$d zholR9!1ysE0ETrGN{YY}89KZa!-g8YB#F3$Ley5Q`X6g^87icDyk396`;82xQU9#9 zo}h)lsMv15;>o%ndA8Y=GNe~mKN_6H{AegB@sf^Blry0hwT;;cC)Gvx6?~SP(V(!f z@@Et|XL)B-E0~_ObA+f}X#9vIER^N?cT{w9B0PT8O_6gk{VKh-FTOda0IZ`uaw^2? zH?n1glG=f`7=aRsOBcOK+S1zH2G&?cE2_lQNBG0b#N3*Y3I`U3>h&3isEu}nLn~j% zT%+<*e0dujbT30PmqSd00CLVLiBNlPjv$Cc%?m;#us0FXa=18@1n|EUB!sh(oVXd~ z?r%JDQ_^_^s|C|%5lw3dj-ZRm#h`jj$EpAXxHC9AFkt-MikPCmj3BBe6{eh zdDX>go7=aw#B&>j%cx51f7ABDeB$a!>VkSLdhxkT&*wf{jg{sfn(S;V>_S6bKBx62 zjTQ#=*VU_sV032Pm$-fIrMopOJQ_aE0(UB^Ag>eKgvYkTK<0?khD~?&d|M)E@C~pb zT_#Z$xS-xno98qJk&&NM2oy5qQ)*?udLJ4!<9>Nj&Iu%Am`=k|-HJaf!dD#0s(w^d zQZ|l5Vj<&+OF0WJ%sKPJ9~tXB^E!vaB=WROCL-kfE~$Q6gK?t+WC|x%oJmQA3(w_D zeqTsmCeq=(Db@T7L5?x96V}|iPk}PMBGUw}9o*wl)%B@3}f}Uw}Tf}as!u`dp=Ic!kCD8RND=J;$cc-$}8~C zl}1zR ziZFO!iPzEtgP==%aGpud<`dS4Z;&41%WcNSQhvRec7l#JOWJ()jA`L97<365R+j&x z1LP~}{mfAkZt!Q}7Zc0*llQ^hnN{@#D$wk0K>I)#wW7dPiyLrxweUq_v!#NNor^cM z2ZVrjRdEmG{R4MZx2*&p{dL8kGBt+vR#ytMj=n3uvIWXr%bv$lk1X+K!)mATN$V;y zdmE%-rL)s|LZE#kcP{5XYpP$1kNvSrkezyJUme=^yA5zZzn29V=J!Ul3NP0xdLLP}#Eu`Z;=_ru|1uklDPf8m~ z^)@`#BBbJaLynr2ktY)MT4*OsD8on4xl!ej774MVu~;xv7m(MXMdpbFQoLPNLiE$G z@8MU$?LJk#-h`QTa8L*55M~(8ai&0s9=K{vI%ttf=iWa7Fgg*BVa&Eo8vIJ zU*dy3(ljXB8moJvUiB9mh|K;JGbt$zkhse97UMYm@SiL9U=LM^U@|XuPfyYiNMQhM z^O`o0tff*7+gzOWx+)|*l|{sHJ^ar45uy?M3b#7*)*k;^0OYh|iWbWMB5h3l#n!yW z*3!oSV{XJQX&EYTJA*f)I~3U+anraB8^h4z>qhD| z0PjiCtG3T++FDu7oU0m3sI&3j1kaIY6G9R}?GsrW%17}zG{xIKa3+X;$7L`9C~2q> z&Y!Sumy9$s`AI$95X5dS{F`op@r$oX|6^qs1aFy<`L_RxAuhmtl$Z)MzN#)eNJM6m z#a}BI^22Dwg@lpYi)w^)80!n=2=*HG2)ny9ZnSCgP@WJVre`iV4U)?RddjYDV5%Uu zy$8KG@5_}f+XB40-pHzsS4a&*#Fha+Y{r9r;Y_L8JGY$D=revkbCle)S$e971zQll<4KTX`FVepFO`BJLG^E; zJ>zWwaw-iA1mj}A)o&0&#QPaL_Dbpw0-tAW^+V8X9zsa`{X<9uOV0Q_Klne>H%wLD z-LD5X+hp*6-Kh-b9bVFUy6|k`y)qkbXMHj{AD~af-xU^>btv zQ8>Bb4R8JH?2USrDmy&o`@OS4kUfjYPqartGiQi&Hl~!Z-s;%%)0IIx_?i-kgZVHe z+CGX7$!iD+9d~}a51_WBg1v#+d4JmtCL3Mut`gUvIyc+73c5zKiYq)IMbwsF#E?1E z30Y$ajfp*^+7Plgzr+W=!`a@!bWkxsU1mGshDepI!`c+zschKj*RWntv-J@&g zbq&w3D`dAE&+agK3f9@5WznKtWn8s5kT?bC-~)V2m9JtU^^qifG^0TwdqI`EyCQ*W;+4MU5r0=o4+^ZBdGel#e+ z#r6~aWaITqPu3m|sc%1XkDK394Qs0oYHQtHNk``+OzyZopg^vg2joZ3y!P6aDu*&{ zCZWwajpK@Ct;DkKO=(_myjFXo-DIWuHDCTyVbyGH_owbo0Ov}+dVlQ4c2(zTmiqg| zfb9F^e^7r10aaWmQ6QVN5g=I@e_VRC>f1q>`1Wpj0B4wBc@F?8njwb2OJ|&9NJt(j zo75F2|Mx5k@i_=oQAqUit_O%~9A2$4JnugCtu3H^-S`9lukCza4P(a%3RNq#qlIJl z+b}ASzWx@?lD2Lvow0jAUgZ(U>p#*T8|L5+$MxFvd*6ERt|MdDr>K*#8`unIuV+Rc z0wG^1P}b!9f}DcIq*&A)*BjpR>%A#6-Y~jPVIi_1UBGWXq_rb%2A(&_ips^}ymJIP zgksJOYjGu#1lI|x8OKU_o+$04B_6IpQMnMsZo4KPMcy(dMUYOsM^%4-qsb_`+f=aP z6~;}AU)Te5KeX!iRONQ{mJ7e)M#Cg;tf6+%Bu633{^}=Drha6+O31vH!P=cHm#ppa z9V`PxR@)=pL(eQHL(4p1)5>SiWM`mU{&CfIr@qPUpjS?LdU5&7ydvv)$th6bk;GT~ z4^So}6~(ZpIO63xf~p{#r2T}Z9)_@ii7760sw>2jKqA9iZ5dj<%q`$pq{Pa}_HwCV zwG9`{*9R=gv#)SymwZa8A&qD=)x>&_J-B&``aS-Npv|Yg{YQ${jC*j(ffWar;`DX& zn*)`T0zdacvLVFMDxCQvBO)5GZ_6ko5=66rPB>{afS(3o+`@{PQ|NyKE7IzXwlHhm z2sFcceFdH9H9c+WP5*fk0aUmHOSHbVIaOJb@adA@L(A2^c=A9qW5Q7{pRbdpBDI+A z%`IlwH5To#=hk~k}-9xIEXe$`a;QHEJ^ys$sQe>n+U%>%7s;|_&dWK#hqH7 z3>pSvs3{>~*y$fBEX1bh?WYZfC&5*ETcTE+|7PyW_eosHA}a>xX&ju-`o1+A{EgQ8 zD#(7L^$ZQR%?cb=bX-8WWTM^gQyJw|ar~6`T|>mzEF*%b*3MrjtCG_`s-F8;L*`!! zBZqx-eV3A{ze7Yl{#HNF-)ixl?^{TI)*1wsijA62tYzCS$JLR=V+$BSR=%C9VvCf} z5!_N4*6L1MQls@!jTT1NaEsS7W-i0ioE7X&urI`%C0^;*({A*x5bNiuKUbXc1>kPW z!hxg%TR%%-tGnBQBx8NG{9x^u5;tBJ!mp17N5h!#>sM^~{BZxU@V;>ofdNqgfY_di zh^U__DXB~#sre-IudO11m|6s%y_dZHUH{H;1==Dr09yC0o5zdW%|`#;09yU37%Wx_ zZE1p;B)XCIw}=L=lM5I8US2|2@Q9Jl z`;+&bY?YRGFEjUd+{bG@J}VSGu_a@Xr6lxFVIsZcVHWWL-0NO1+&3H2#k+|;VLKal zFMgI^YgTWj^;%l0IYnto89m9`wR~N}(rm3FMJBY`#nVVSN~)-y8s|T(r=!kAU&r zoE^FjQUlzPIyA9VLAJLydNdj9Ra*N;l{^~kKF`#2=Z-J)pK!jO-S3~vUMn9QjwVXq zzNCJTahb4|Y}oD%UDEMP%BI6p{Lw{{jmhccNq|hETqKj2a~Bn0HfMY9dljT0(4JL_ zPX01Pnl@3;=ohqFsJ1uH_^*Ma?Xl`vkz|`$Pgq1Dk(+5UMY>?flz^Yx7XiZKi}II6 zh~A&p=-r>8us!?Dn*jgrgOBW&{<)*C_y9#?5g+oG`|vqW{O@aTM|^C$_npE$o!2b~ z&fS+&KTvs`_s$qbps~It2rfbJ4Wz0dySx|nIiKv4-kFEp*!-9454So0QBdh}u#gaM zogkgmR@76sN!hWGrl|Bt__#y*@;?uP5xOq8+k=qq&ApSn+gtS)CXk6=%hUq9=B-K^XQ7~c)uNrE$O*f z&!RPd8ED9NQ01XHGM{F1W=^By-o8Vpy0n{u5I-~#ail09lZsQSfoo+T$+dZ8yB(lesSG-#7K zdf)$UkF^6LU2S@_WPPbg^lrdS@YztK8y{sK-EuTnN=0qujt|qfR zr}mejTD0m)>gTFSh2QlY*&gy5VMpHRu&5Hr z1YjRHmF1;wzj8k>SHjwOXd4Q&;_l50HGQgd7?e6SJdj#?^7RWut>+KR;IKGD;<_`E zH%K)2+px|<;lW{MegpKBI&v(>6j=dCg-}gl8bjPxhHdZ39qcLCGaG)uZyUX5vn^iW z#|u4B9MPm;I%vmgOo%Nf)-1#)kY&BdI4J0*3D`o~^4h(EsuqwfkrUU3`3|Up4u@bUB=6l^b{qKll=QC3Zo~@`HvJOAK5RYQKa(*7x#?a26E%H)hCI@%7R$ zhNumF+GGge6|c5Uuc?OQ^W~gDUdlQ!VG2K8jG)vg?0Fj!FL$AC*%iP|L;QJYs|8vu z7e~hbNQ&4mLL@p*#?@61ehl$9)1L!Oe&+s53vMg|u7)@)1RZs&O`mO`wHa>%^=`Uv zv^xdOktfLI9m;q8?^AJbst?uG7U#6@FZHTWwtW2@rGO_}Y^9{HCOV<@Ul6u0Qhb3l zg9y+z^rdQ9WJpwU=fh@ZZbBj8V9w4J-O zs30{Igfg;&(z?yrzzg$&=9$1lL)|7nQA65uf`oI-T6OvF6 z8voxaBx_QSogyanrpk)fvQ$)mvbV`~{e^USnYNv- z2z*n6^GI1Zqq9y_=g>`x5WGQ2!=+q(&*kD->>du-RAb}TQI|F}-zxsF>NaKN*Is?? zW4pzH=hG^G+mBk<8tz{LyY*QA+BrgLGL~j`VeT5vx%D_z>M)K=dp;fQ7r?>wPVPnUyNudzbwPUMK|Q|iK`$1lu@lE@6(ZAc*pit zc&8JvjgM?QS>I;&j|J-RsnvC2@7UG-_qL(K=kgJkiL>i;T(_3hxdQ0QH&Bnd^8B#U zv5>2bG}|Fgz0oZX@+o3=)`L=iCS&AwN!OnUQDXu7Qc}ftpZO;wQaP%@1HWblk!Zcqxgna(iUT6V-RsQWw`gHLSx zZw^Te#QY?5t@{YXLqv;?|4qHQzKkqq&&wh^bt?*F2uzjmSFDXzx%3v6#;KIi2uC4c z%9h5cUN%!W$7vW}5JmNYR`ZvJ@|?goHQNVpGkLOtCx3@;py{d{DbN3&3=_R)3*iqp z^lJEpFTTq~pzwhbNbDH^gJx9HtuhMw#B(^0=G`k;h&6U5g3=p79rEVa4_>EmtJJxK(}mg#LB22%mNHxW7GbGY0_a~mwuy*s2kc~thL{GplO;=W#~psrD;NwV-zjw z!T(pa{-^5yPu2dfB6kh2ZXwA#3DK* z$%zV^4)OxWu#}%DaG~Tm z!ZEIlCB)V(cinznHBpDhd)xylapl4vCi4ckb3Y2>8}Rg=RW3P{gYJ_jhUf0yqh9a3 zUJUjOfOA$8H4(zoA6;mDqSHSP<012*r?U`HccY=QBeSszrV<>0*UxAn+=VGl0Wofh zji0sO5Oqd~AUMsXriB%v{g$DL4^|8Nnx>ji6u#yp{AdiamZEgimaACc6{j*eTTr}# zE<5%m)nemH-(V4=mY;P==40(dLHXRLAlLLazV_4w3HYe@*4DNo-qaf}#VgZtHCzn; zBR`;ppu!LZZc+S)5cTTQd1L)#i!_UZACkhDUnYqOVqQ@;^bG!SppqsSEoNeuCiE%8 z?zaKK2wPgiU#SU0WN)qCsj04My}Eb`iB`^?X_A|{!38}GW|9f6gwn|2Q*hSGrhrKQ z2aWXp+`t78KivvgjDI|wB&Dt+=UioU{a;uR)JSRRcB9PL0a5GHX423 zA5kj}z6Ob@6&z`i$YXUYEni8-YW4ccq^9p#%u39st=bcPnd^X}Jz3k+g|6BZ=9!o@ zw&r{sSOkhrF_B?3k|_kM$pUg|!|&jL|jE^@hO!~~w zL-pncSE6SZm_o4hP?W}5ZA!e`rt0e}WhUr^GygV!nFLGrRP`{`2)Qs?q-$WmVJR`^ zK0)b+gijdS`?;d8rp?Ewj2a3gfY|cOX_16#?n^oKPnLs+(UO?+qsY&2aSjb z-{6P)pdg!_{~(RJRNE`0+z-KZb=DYgOpB5T;<1q-HKAayAj8__zgy>5x{(5>Y-}W; zMF`mZeqH{y`D$$M?q3RiyMYt;v)~8^gXAEn`r-!i>@o$b4Pzo%*GP1lQcR<1ij^Ha z`-VZi=SGKPF8^m6U2;dclEt46{{ek zeO1g2$M-6%;xXrDwdfM?UCW0jwk30g4Z0+@?otqB0aa;98;(ItZo$v$#K+{?KqUI(DJa8op?d1<7eQ!DCHsSaTE0A ztGBRGa-yI7Tg63ntrjs8xs*uHZ*s=H$?dS`EG=hgl|v zan7cluxt7wo=vM6kPOa7?|34I&T8Fd)#^J)(KZRvISFEu44(f%9(;8_f7A=1W=1yi zX^@>iH~8~&>2d$F0PEYI`tq}|{`&L!`57?1djHdS_x%5z&8>0U%65b(ZMCk}ZiHdr z>ML!MdUKLIZrJDMEZ)*2F%IEOvnbAw@jB+#(kn)+EQSLNOJB-yf@(iE+@pU_W*>Ll zgvL0@S+xmVJ$9NxtOR{NHZQP@t_AO+JVVpmyl%xGtoOt#6p@dq1T4Ao<`}mgGf4!@ zp7j!if6-bD_NUIqnHLe0!e04;3CrCzgJ^^~II|QVHW#T0 zW95cjn4ez;7P5m1ToxY_hHDJGQ$^(dvXMl`Ub>Ge2N+nzRJ3fFSYgxQ z)U5Z{k9F(-&Fu%*c&ljrr4YY;DP>qz zapGog96RmE)@Inl9qH5FdE|SdAHHoA`JOUbhv$qM_iqj?I&fseY%-f+$kcDguIH-hm4xhM@rT&s^2IrsuTWErk;2dgu zXP<58xn;!!H{xT`%U}&R=KE8Cr z02W~h9`50h=OtYZ2*(Ci@La8vV$mwszdDYN$X^z)9_F5wa@9`ko2JwG3x0>TSBGEz zBz!cNK_7hF(z(s$t~U0>w#=$DRyRzqtB`6N8K*-+9*5Hu%SGH#f`cuHCOyFj+QAOw zmy86vqYdT&o)u_^^JL3!8ukDZ6iPb<@iF;L|Cr0HmR`&aHmQ$>7$@Bs=HFFDWW}BD zVQ{?nTSZB%Rn%~FO^U^lX$XDoQI`#dBCDI=5Skg`t0s=oky9Z6PtR0g{$saTUdbZb zkij0hDHz-%QVTT_77lP@j5We<B>{zv znuSn-lVD@ay3{Dzwbd55=6vFGK#H zE%u^CNwumojYzF+nfaod;Il}%w$*l^sWj~>_A57UFZt>S+Fc#Z78Ui9o?)HR*2zX~ zun0XJ8}|Ad7yr8VREh^aF(ApnI<-PNJhT+FeIn(sq&oH}E-L0I?taXflACO@GCwf~ z-HTV?-9UmMp%(GYpF?-Rgcqd-MW=j zLk=6>%MPM!e#1#!sa;VS@a)!Bk;W1PGTf~cNVQNgkYcH7C~e9lkEs?$3yXUNVAfw@CNm~9vnaYFUnrlU_r4|y z+M^l>qE=OAx`Gjx6bEZ>M3LT7_>lhtW9{6~emT>*l5RRYtuc?M>7|_)MsMPu=fz^Tr@mCV9DbWsVECBxl z3ox($fynM-*Z|%H4N5lNXKCGC(4m@WvCd56(g&d~kg*jFx;n=&7X8$*qiu#d=`S;> zrMX*ft$Soy>q4=WGXG26>VDrF*4KtX+sUQbM#@8)h8e3y7GaN+ z9hvM1FJ1YOwk1moNE15^ndzE<8>uxO$s^QG~DP{s!)6jf)yD(Ng49@xWLF_ob) zOHQqSsRG39nYIXGwJ8Eja`(nf`8C<3v0r?nD7VrBejko$H0&iKyG805VV>05F(8sN zD}r)Abl$2_+R%@fN>`2gu15XkjjlOIft(}%2HQQ#FO0F@r8U>1tTopoY0dRWS#vq} zyPw^`ky7sz85e4Jy4Lh6lW-=E9=Z}xs1eHr!7#`j_YNcMkWk^Ntz<+p>3{a>fq zYH#fSK0o_E-ZD7@z@UNBNBG?oVrROzm`y*3moaMfE7L#RaAGG(qRX?%2XRh1bQ^QO zjk({aX6~nK{m5eN_c!;;+4^Bk%dGv@G3ukSWbFEGWz>fiS$2K5HR?-y^m!Qd$tO%Z zcx!JDCbOJcp3MXH025l^q%}y807!A7%tTLoqqMC^u>UA-h;0~oCQ2-3_>}QQM1D6h zA)o~KTKifCYQ@whmmiGq|_ja*Q0?;tx7#^11!{F zK7!#ujNGoy4KSBx!^rjno!_KJ$mYt(Z|nRJ^S|IJG9ZGqn=Ptg%6e}&)O=K5Il#-= zJ5hqk)Ah=i+~jJq5NB7TQ4}jU0PE<=2@Fx&0x!LVYK+0UdK4PW7|zw1S`?ZHZLh}) zu4Kbz)FmSu1K^KnT8hgvyPQ)DGg=RXgiM@svb>9<{_ul9pCVUt%KRmX`=Vs;RVqU7 zQ|jf(2sF$SGa2HXQu__%lTRj*(y^UHQHJa!d}#_YX(4-Tw$fVsG%4NhskJhvR-QfC zF&Gc71U?)M$5aEXO5^=V{*+6D%eh*E4nG&A5lXB=VGi~jwGI{mOiCGd6#!OXZ}85C zmM`c15^01_Sv4F1@wF)jsn3H<@{LeS+htkBHV>CQ(Pd^G!!C#N%}S+p(2O#Z20gF& z>TxS3F#<{|viPfB%V4<;llZyte|WnM{_CUje}20YHnaR+(DFC@-{;5w(U!5gbP-=fU)@)^Z~=BHGs-U zK}!k3Vn7PWmCmLEi%Q24UGx(;2N7+3BIAdol4sh#{w*=|^|0sfX5*oFVzpjDR4JZF zgE9SNK^zqFQPuK)pfydbUrnXOC))UopP5-)`4g)4ot48)K=Ry5#(ogbD+^hfSpQ&l z1;3w*#xp#tTrqr&h^g%p7lvi9Vo0VT5G3@y!a(#Z#ztyiQ&Z2MXFY_ob=H5Rsne5+ z97a`D%N51CHTT0nVvs)?WP;`5*=yTy)@gAHC{%S zgZYOFR^zGt?TKGaXij|kG>Z%LX=JRGrVw_J3X~N_;!k0>GuYQ62&>}n@LOyPa-`aO zarEOW&haS4n!; z08|glLb(dvQ;6aN8{7 zNJ032Xd>{2LX~F3MV4qmqNfThGT%4Z+YBgl^w=aa$tqQC8PE7+=cKUIROQKNTBTNT zjmlP!tO@pn+VI(OnVctl%VblZ@Kwj_WOW`d6q+Xz-C_z&`7@Qm1tBrLEa89HOD^XY zD8v&iDIyB|8nzhF5DTC*fJpC4;1cXEs)7qCO%^i#fD+S)83OX~G@C{$nk)&KaY=WjRKdn4S_3~q z7yWd{25Z@0+q_v}o4mdtUQsgh7OC53(~sE%uvwiM!ZZP;&DXFa zd0d7AHX?A1fWb3nInmvI><3WKj}g1bNmv3tPV6d>SrqdL3KYoG&h;3rXi%XW%3NOn zgU>sktlG)Ag7$8PZdI*689=h=_4>(WuO})Gun!MtHEbyP0gflY(=I~+ye7`6Cw$tn zA;!p>YJ@K9tf*oDm#&EbsZ52~uW z$LS(yL}9tTk##fHk`ZzA0h9Qd?r2|C*_I9h0f$8KJITVBF9Qh~{4)?aBl;zYxfO$N zVK(Zyut)J!Y&{8|3E9$N|ARz%*=Gls_vsMfR55TNbL>H z0XCkAG4Ma>WWx6x4<|1fy(~YCf7YB2(4uaRr-(1%g@h`gbsDy45x%#Jno7s@c*e2cj+~qD#6E!6>Q@QGCnY8CBuWR zsHEen1f6afJRr`%^xf>Oyq+0%tIpc|*ZR25LMjz~Appfyr5Ze8UBsSTP%phZv>~mF zNd8Z{da1eqDGDfIqs2oY-!M?G==SqD*Mt7#_?InFbN2j;wfhYFG`R$N1(hn01oOn> z#=oXwGOSMoX%bX0wMt1dN@G<5Ond;G_qKQtKM)n!V6|#c&?zfjPFZP5Ov8kTib3c- zQ9VqFW_e>j!P_8BRg55vRk4b|ToTfff7IVOWq=?;Cyu_b}{R(z}qmq7Fa285x!^BX;-euZ7=!rqctJ{)JTV zNVA$;z29$e^{AVXt2aa-=y;~umP}4-MViVW;!^(IJP%mtYHFpLjzaWjx5(rU@Bgd^ zQ@{9_@n0IvcF?xp|AR)@Zf@THKbQCaC$(MpC*S|ombsY{_-j_UVkOI~SUS2Tnu#tN z(hb62g$wboll%HSh?eDxfR3O>h!<|zz%LINZ{PJ(Ay=U5WxSGKiIKzxa=wgrrQ6g@q z?vJhS9v+>(f%6Luo5`*1A0NSn-6Q)>Q2|cm4=|*3(tp$OED7#e|Fe+(3xZZV8~?B4Z|J|@jsD|> zhdXnQS0$aQoyj7K`{EVs195P`2sB5{HO2Qp7XkFkxIe!b50Z_^-k*j*lS)N*qtTc& zV>0cwG@9zjXHKTw*l^FL(uzqmI+-h}wACaUP4WsVZ6%3@l`Nyuib*t954Z=-O5Cv$ zZJ|R@REdGTb`p&M51|s}cd&2IX0x|4mR`b6_z`f3@3SboBr`^!MEZ$xQOJlbeXYd< zCgsimG#=^aP^w}!l}L=G)bs{78>#b_O1rNkhUTKtP(FdPS4qDu?bM96P%0jBJ@M@7 z{6e5%4vSzfp~YboXT{)-`exW$ZB&Sr^+~Ayt{;#4rW4S7)3vyxP-lWq%Gdo5JToVT z2$;_>4f=|LgmsO9uxv`!7Z47Ko6yhwSzJy9fU=(RIO@}L^MwxG#$HBQg&^ivex>~? z-)ZssQd2E$>97?XhV_QW>jqf#Ix?OhL<2fQL;8^v0T%o|gwOJlW{18<@8^KH$BW4a zH5<5FtZT>a_6-S0WO(OI?3qdFB(kxab#;WPx{mItNwW;F5nPKi$A5)#i3$S zWt!we@=mG^RGw5tp;{N~WQm+&mrl{hu`C@e*7 z0;@maR~qAmhW1%ZY9>~#T#c$4HYlI!KAgVEVmzM^H5bY*L56zn=W@+}LIvr~qb_(W zq)P4yj4S&JhH9uADuqFor`zg=D$gwbR5YvN3-SM&1&V~X(ZfgeBcNoHk*PmI=w@aN z>nc&mUk*^O6&WV?;}{Vq3U1&`r{TW1u(bSzzMPHEf%zsx57m#x3w2x#r^{H&nT+L_ zLG+~8bQUqiHRRBhN~K7>-Sq)s@bSih%k8T7e>yYk8409n{;4*;$XN`O^$R&|O+ciD zF}AEbR^w`MF&++CY%JuUvziz;G60Ydh+ljm@;Ck4piXlGqkyy`pdmgNeN#!-0!R<9hSEvq>pr@q z&CEoLbu0JFCDJ`39t;2Clw>L5~EhZ{C`b1Mg7m^s{HY&W-Y5QdRML4(ebrJ70j!-fTVn<~8qOGDXJ>1|CWc;`LO z?#i2unM@`O-SN~|!aW>A(>g_dDMtBCUAyFGVgHqRQL=maq1Zjxhx2vv!_MKGJ-!Nv zs$i9q)Y9$jgCg=JFW}NfVVTJe*Tq_1boUYuBr!ob)eKIu_aBi+8BP8i-RNah_j4-y zZk>Ihs9k1K)U|jp!fPJ}f&B%7o=ASyQRBfTDwsmwzBOS;6O^b)dd=jSNDLwnSKMgCKd= z=UHxOwQT{}4)AQfnq8}kq*Q{Z1-2bh<(NjCsAkJa!+M0=D9@3}qw7mlZ@6qM0mZ*! zI_jj<+ni6!48xp3iC`3YM27+$C#Sbis&q~%Rej1zhJA!A8R(LP z;_afqfh;Q<>av6??Xt~aY1ytW3(Ju$+YXD$rWb<3!3y&zMeQ%RpeGz#&#vn?X<3%D z(HN7OqTCOLvZ8690SnDwEP|vrG?J62WFB*k7={>@`?w#&sPPN19Rnby2=~v7(m<<@ z#y;V@pI=?e0ZBO^c3d5*|0GXE2p$zARBHGheD=KFkuK8n?57S=|b*Yj9($`7oX%(rwN#WQ81< zfqQjnZJF|geHrf~2Q4}G9O00m8g8onZ}DC^7HuUT<|y%*@nk!0Ij9tclIWRbr$fdx zi}lzpC&!hx%8us@(TrKEae!IhU3n}hB4>GY+T)9HB`aRm zA%bTy0}M}}R-d+(^hxgif?koHzbv1xE8DAlU1q<+T)+HAreo?T74(KI2UICX z71$p~6=o;exoK{^Zw&FP@5=`J&&m(4NVV|01NG_fNRdO6tK>o+s=-B+)Ojo7W8mI< zXkZeFty-uKg?fb78YwUE*=Yuo^tVL6!WYp_9fM>-!=87u36TBJK;^**dodJ^%Hu}$ znV@fD@wo9oY?BR7g;D=gF|MLf4?haCLAI-+IhM2Feg}h$Pss)5a{a&G$NnP>!mRyA zv(wn<|NXxDf70iz)T>E0dVm`}z>OZ@Mi1~0(gVDqfkmbOKt^#4o9n?bD$S5P7ZmO* zr9sn9jmc_K=7RI_0lmH?@N0m=kT(gz0@Qe#ETaCf{yO@K98Uq{iIxqLw;|9ABzGDOr;s15DY8R)8rh2P5JR_$?@2ph`Q3?%5@y3`1X;eC~PZY!NX> z?6(2CpaVq=7=)7W@q+waO(xQXUI~TyC5%FZ|7w09+p&Yv3QSKH*QL0R@qH*n4}KlZ z(QS|Z3e91VAP$O(waC&Dp;noVtJ!k4Ds|On0=qz@W=e)FcG~!bi;E zFKC03(`cs$w{)gbg$RBw$Ne?6?1oi%CN(c{yKF}!l3ODil8AZ~0DM>~rGcj?HN=`I z70Md%q;M@_C`4JX(Ny3jts$hMXHf@^XLIx{=~6IP8bJ2oEE6O;PFiI?R@#1A@hJ12 zlWM5zphVX+5V^$kwWW6eeQoRgL0>x*`-#3=8_my7D9UK{YnK zo5~m}855{#G-t>-62<~y`xs%EI@q`RYwTyrHTJXJ{Xhj-!p#XdiB2SkT*{tkBjggD zdsey3DexrXm#fRUU}eG)d11U-EYuS13i-w*4W^`p8ATS-3pzku zYW0A%(XH`HWno++J&$ya%p2lejI^iL%=VjVIg7<(NT}*80vgY#Mh2vNZ75BWZ68v< zZ^d{rfkH7-*Hi^8$v$fwb!yG*OV2WMOAmJh*MVGx%h(WBC`m;QseY>IkkJ0?tDx4WC{!(2JT0282j4Ul z)Q&Em7AXj5Jh>%<>mi;r_8nqWJN}%tVAe_(Ei|p-aMTpl=08QZzy!rfaOI9>y{g|`gnqzw#&9=NhN5Uk!- z89ztewyz4!z5l~n>J(T9n4{r%z-$~MS&U>d)bzemSSJO2a~3gr96JuDK756trLx9S zX$J${Wub?dF7{K*SJ~QJ2!E$7)@o9&N!ey|PGnCbFg7nO*UOiC( z1#SCSXJu@@oYrNlf2$e`W5dbNVCyvXCfih2*IYMN92V{d%_&Rin-5KeXS?Cp?8a^~ zxLY)+B1jZUsR9Y-)YvQAsA8oR$8YK9zj@)PXbYhIBYPiRhnjG`l1}R&~D1 zR!3wI1lj@O>zvPRIiRV|nS-PWiPm5i50i_1reTVY}@(rB#8kCf|X*5*ostBGl^t6gZB zH;lTrNViB{!}bNt_WsY^=5C&F#4Y70q$^^O>RpY!Gq=4q+_NiUJ1~G-uV|XvwavJ+ zToSKdMNK6fqJ*u@fo8+-cA01+8S6$i_55!+S?OgdZJK4#BtwWj^qbhVNuznoC zn?=9N#JS=U4&j@{Y=SX+#RwC!M%fcrzG2fJ+b{^)y@r*Go1a;Pv?VN($f1wBhE=P!(Hf_6#$5_r36hw); zNn$hLgI zwvQHQ%^r0+Q5=A6QfDi1iooV!7%q&tR-at|3W+{G@2WU#GA+RO_rfr2hWv@iyj!{_ za1(U4vx4Ouo)xK$9T!Ny1z37P((Y(w>+TqV?J|At%KCj@)-S93C8mmuO12P^TlRgU2EXC#VkhmQ)k9=2 z{QRQ%GAv+`JK$S*X-=6~CgV%I8x1uk%jtPPNw?@tTp}4xkX2(D2<1~wI4YH{lfq@S zu+lUiPMh!0oQMuVeefOvYli=ucRTqTF@K2Kf(5E;!|R!TRB{ zJ#&uGX0uW;CRO~KDF0RUf9}Wpf0g}L*k}e>`~RTP-st~)mij--;y>O-3usAX$c-A% zMh$4A2DDKF`s3ArJ_&CH%bXSbH3CrHo9}}^I@ILSK#?e&vLSe5ogVM)9_%0N_I`k~ zwDaO%H`B`AKcK1}fWYMK9lkhCm&&An^)&p~=I1Z1|9@}pA6C)-t#**}{}A|{4gLT5 z(f_<>HU8>4%>;Q)$o^3 zP)^z0E>_{g{BT<la9aO^Y9=vpF|>IO`8x z>T7su;QGn|(K~aKpPs8aA>?=GG=Z$V%>=gTHdEMy+f3=Aak5I`mGI<4H&5?0x^^x- zkB9db4v1}}S??he2Uo4jDEhZtzFdfzzJ7p%x#;tyQOHs^af(`+5?I^vP_M zqUL1O6>M%gg0p@V_fUnUr&^Z!@iG*X5m(4;lg00_dYXj?)wG=yI+b9#yc z%$@J?d6V;vdv)QQaayk}Pa+kaf+x>jcb|;^?UiRoG4|TynX3i%uEOb(IDu9f)_6+~ zoy^j+NZs((L8$*z;Q!|Rd$j&u#s7sJ-*0C4zjiBVZTP>>*Zx~FeZJV40y_h2*Gu5W zrl#r(Lo~YL1kl5G{RNQ8(*b+DkXdc9k1U*KH1;tzv5c-wu=(1Wa2y+8AfNoYXZ_Z|Jp1{Wbg6u&N6P3Kx%LP0hBjK-egiIDgxbbaZNE^=>PBOM9M{i!e=)F0vyn_Q-6&M_bqmflB@2Y6u z2Z=H=*#E1jFUIr4_Xn?lNZr}}AAY+KKt1Xw34XyjdD%NXgv}_nbk2*tZ{NJ^9l~xo zgo$dTwT&jj>k87T=uZs@|El;GOrt`FDk`f$Cj>$>6gygIK;-c3C5 zzFx0a5yAe4bj=_Q&F_pwt3u8^2HJa6d0%}deuMw6FR0~4RY!0fPbpv$YIm_V7im1B z(4dmq=qy;>OGV53RXi69W#h`acBdFTE|qLZw|%U5mj;K*DvNWdTwrA*3lc8wG%Vb! z8Tni5%ZN*f-4J1KqUTY8nJ$PfTzBLF5u;|RFim)w!~j0W%SJ^TM`I^4Jfe%4_0&I* z+jK6*^&o$|%y+uf^@CY~>GyLQx2b)I)(({5sNwDgKm8t1v*aoRN3rJWVogV}aCNcJ zQLMGPSj$nYy}DT2QLMANSSMQyCceA6Soc{b?4%9J8l1S95ynI3skk4}bE>r=VaYjM zD^Q{62&7MTdO$f0f!t)0MjCocXO=n$9nmgK@#Go6=ZeTHDrkO@8g@YRe3G!78YqLkgyOWP#}#$5MP2c z+l3$v>Ki&w6qo(@EgZ$4?QsRU>Q9bU%Q>}uK%ei%XdQWatZ7IVaiLHnm2+X!8Ml>4vUIwiQ&8t^W(AAkmP%2Bq^K0^*g<~Jd0vO zI4mmTI;;n@`V`t{2ZlitK8ICm*Xpu!T1Ihrh#X;yezy;KUgFN7DxdbbpnOXesq5XA zPABn-+Aok?xr8_RbczzvMEMhwK%tB*U^xy0jYw@g^Q~M1K)CiAKlfWeB z*B{*t;9{J~s4M&pcBr%+JR_M%{GqJZ@-pfJXDR(}Qy`X$8IB|ZhCYp0nF`H$zn}ns zw!eljE#&?f=T#{_H8}Pm3NL^Tn_p4%nfSxvLQ++;tZ!T_Ug4YYx}W5uQ=`3_>~7Ul zK8E>nR`}BZ;bzejYG##blO-22d?$%3G%;zK^h;0IMg(Ska(Txdz24i#5Tw+G#+G#b zGZv$jF?`~qfeW>+)|}2ql0e7A`C!03#@&k{McJkCXpXH?RVb*E>#JQS=oRkG`^`Yd zwJ-D&W>{&EOYn@dgKXe(Bg-(upZBEOFrBI5srQuMC#xbvUZ}xmv5%?c{SeM#Z!rJx zEae*}5gUpz5952{!Q*6GdoX%D_xPcSKeBIg_reAr~Nmti0|+9Jnht+2hU@s zs;RF_9F_4{Tt3RO*6)Q5!VEVmGFmse{h^wrKb4%lIa_F!{)5hV9X919bc%E;SGme= zf`Eg^8LpCfbLtt32Y>+$QuF4L(-xg7eY2#}H#ezNnWV4PRq1$Y&A#etS9SJg)uPpU z$!+RhDlk+pslC~Ry@_w*c=Bbh9$(>UrA;rlq}gHBDGWTd-u1=+>6`}D@^ZIks@2R$~WAe zH&|t3odbKFTQq6LB3mmrT)A@Aatv>_91q7MRKP#p>3w(n<{#PBIXrsx(q5rMROUBn zXFEK5ju%m~G}%)rl_M_?tV)pRaW6Y&GRut|lsbFK?bt*1{8Z{pkdzN4gRzMIebt|E zXF^F8*h894BiV69xzvm6={l=eT+cF9z=#id8ZuVIE)gZEY6zrnEK-2wqa_v(VkUb> zv-g{#lMFXSnTdT0bCY8D_p}_lnAw()azhaC}g{4V>L@JVeDFqUx{a95`bT zkIzt+m-la?$VS_qT2hLP5L<*0iB|*mXTA-%PkQ?x;&jTyDXgEU@FspLnpN?o2q96? zrnIE&Zs~DYm5!GFV>Ixu>ElNC{k8zKYWob;b38?VAHU%wsxnwY5XED{Sl(#O2DsNW zXU62y#(DyK8MdE6u`{Pf_UrORLbE}{Hn7JR;)C*r|0eswo^mV)jKA`X!NNT>B`&F3 zMd_|5=TNc03l;#QN5vJ4z#_gW8=$fGO-a6A$%i4n|NTm5md1LC@nzTr4{Sq<4U5dC zCj)|A_CFvaPCBZQ#OgP{Xe2r>z~-uJ>=1&a=!h^Ev8NE{)8iWKFg zDtK5m9?Q~i*2(;lB`xTb2+ksK`E7$)kCf*pB34jfW5(_&D|b5A5es_I+mUB|vkx*J zFM4xm8@?PAziPj<@`8+&swO>DQ62gj!YT~J%hU9&7aFNS8>xRgiS)coBUOW|Mxsi4 z79E<+juYfzs3jt*(uUa?EIw#NF&v6ZH0!?L$HqBI8qh}`jCsy+g~lpS+6r$Ij^m0K ze6)~~FRh%cwO%tmFAZlL=5e!k+z&?wFSg4|J(Ic5nxx50Hyj!tRz8%+X~FiY7JW$Dw{oYUprRYxo;6x}|8WRsPeE#+4F3a~-ZDmQw5IY#90AmNKC8;$}w!>lEfS?{DMmpnwNld;Ogxji075zr^;5AYTY6M0j zM9`U}+_zT?Jhf)cXXA54skDk#dOL`OyP25U(5}ET-hDtcCCka-0hN2 z<*afQlW!&C<<4CkN;~|$Dr|aqHF*0$T)}*tMT0&*h{+vrH68!^DpLA)*Z3l}kZNAD ztC%Z9r==S2Xl&tdXzM!E$2+OFK^G06oX4yf^m0$Na-ew+I!=e!)UI?tR@F3VRt}rW zU`Ys65{3D$Pw3s63T1sxBW}NEAJqH0zb>G5nxZS-ww>$#S|KYx7X(FM()xM|8B zP2mqw64J|bN>G??r9HFro^}&Fn(AX|AGG}YhpU0Ij164aj#2-e(8OU;@SkaaUY#Ezk~aN(4`udsMYk%YQEvB$1VA)BTtMv0;4galIW>lf&=S$RxO)m8zOV|ocDo9<<$9UNeXHkOZc8G6futSpc zC`a$-(O}`E|C9^EG0K$;hE4j$exiIp3hOy5<>M4i%Q<~c6H*VFvJOBgKLtM%k*%$= zkPVP{Npb=tpiC_NGwJcz@%qK`i3NLal<{@?@22ZNf9dBl)yJTVQ(k!hAEfhemrHDo zSGn(aFyD<0lF;Uy*wNyGZe3dtWjLObmwtgCyPW54=%1}1r2xLbX>R;Xee7pSJ*k># zO!?y`w;sTm9PQ)O(8+>1%=oZNU+c2(bdKjZT!N4J0_T20D|iDdc*9!jvFXj~Hz?Bq zaG|8lW(m>OBQJMc@|Ne2E4)eN3M-_6RtM$ou{*fNvru}0A0E6yVFMk2*G5QU!k&m{ zr|fNql(59%czX5T%e>4>d1H!S$5UO5>X8rcedJ;nGukt$G*_0EvVzQ;e~L4tJ0C?0 zE5)ju;8>i_JQJ5oZ7^|-N&=_@p|sT|A7tSK?QpexesC4XN<~bEKvqN+$6uDWpQX}T z(C_q7X8mUn{eVSE*l45aUgn~wEH2i%NwGi|Yu}_;Qy1&3S?o70ySnQ}HXdD;9T@jU zKLu2-wHDDb09PEbo_$Vky?VS1!<#NcQy2Rk=JU?)S{eBX@bp<3N<{8|p4osBzWkzUQyL`bumb19%ka8?vg}^n;v8 z81gq(CB}rw>>An%?I@qmNfT#FZPZWsS z)*W_h)u`I506MDxH2#5$&=NPm5CRl+luP(+HbRL3I^sAX^XOl$lErxRLE&(+iD3MV zH@*wUmTYRVV7%B6EKk!xC>BhBED@|*qN7Uqb_x9q%()FS7p}?@EHgS7K@1jn7#Wc- zdQL#8d5JdyhT38d8Z&?(fcoev^GH_(zTrJqT7fVE!WgABkVRl%i{Do6E-OS*(Zl9a z2`1m`4ZPQZ+>0f@n6C7;cs#`0+Y#q)weZvRL_+#;lZgyVCpmRuaz`9Hj%1qb*A^`c zuBNmdH911&E+ov9Fo~teFZV9d5p0`@JQ37VS7r!UmQ);+ccL?5q~?E%hVs22_lhGW zllmbCm;9CiY^2;d6S797t{&>a+awh%Sth&Gezz z6*vZ;3zi0sQJPSFX^l&b&d83K3?WEFc^3DlfOQte%OJZ|GR4&BEBSc07Ds3k{Z79K z=~u%X^K1oLV6Z#04~hd&u!qc18fUWH0z9b`>1 zpY+e7NiN7t<9)Mz)@qJMGJeW%hOUrQ1=NdY^w6q~8_tqhODIFC41$K=*lO!;U@y3i zKu(4c15hnSHZl!P>Yy>ullty)Orr^^BAwK9aUIpPb$7bZou=+isJi2C$!cC67xaYU z*i^KZU-lG}pMyYiAp4W6fz!0^X)?*k^&ea@v5L5}kEt(i_+Pp2bakrv` zvZneKK9vtf!vWjp|7-fM#RDVpv7bvF6X@dvg=daDEaA*dK1>JZ_vvi@F~7<$+wu?j z9LNNkVsrx&-t<$%g>ZmQ*v;8^h+0imT?a=d#m5eXXmaT2PN(=@j&b2RZW`yfyX+j_ z(?Pzslk7OkjbH#3orSWZ1g|GL%UD$-9gz&IJQS{T-0(xc8}RB}E|NJeM#F>M+fb`R zZOpt#<{T?;KhTf#|1Dm3i>lv_49(|u-L70{~#nM9z6d7;~HiW98gRK z{uApWKmizVT?Ckkws-4rdq%vy9BnS!+Bnnyv-tmK|Bv?+{cE-VfA}x!|G(30Zu~!f zF8&{%)OO+D8u7n?hA4Ch$v<`xe`~9aE*+a9<0cYW^5VE)#JXS1=l%M|LF2|j0r*JoRtF z$8Ffc&xkElJRxy5zdu`;;|Z~*WnAGp%pZ*e?qv3}sD%*MA9~>SY>>jkfxR$Juc(9F6{^{ZLp`-feO@IRiO2K8UKWVnoNq@cfkJpd%?1@L1ZOz`{ zqy2CFveh7Dqw@;*!)ni?S!o~mioNH+q3yzHI`vL>kZ(EWzo*CC!`{o2=OK<^x`;oN zOUdH8^f;b#u&Kuhz8N8+gS4h69>+ekyt{wk`zkq^V{%g_2fVJQ=-J0~kvdCtvGu^w z2{z8{k8suWrwaodFf+Onx4elXEYNg;cDk}Z=qG7O7+XUYmDXAfdQ;6Uy4j}Pm~+0I-Av|c6T-q>!YcV5 z3{@^1uVqM)+$+TlR^!{MZaJr5|w<585Jkq2ZB@yNBo_a;U)>r#a!fY2fR z5^W6z*DyL}iH(STdK6?jz}2&!VHF>qQOgm%OX0<;0sIOc>8c$Jh_lBT5} z_b)YQz`mlY#h|1kdNy&Ly~i<}oyl-k!imFTX2hCH+FA_p^c0nSH+6hEoY<^bh!qK;EXq#h8J$xlMiU>I`-j7X=3 zkxG9sn8ic6Dj82Wb>3H(vxE&x5!+5aNPSefC*cH1$Nq93A3h?dIb@8A$Lq}d>T7Rm zSx@jNJduKSVZKX;kA`F##z+a4kD|c9AgX4qU3ax)>XNS*BU+j@pDn2wVT-E9fQwe$ z!?TH9^F>k31nH`mZ6z}GlJ%-tGnyfm9;5MTwqgnDs+z1QGBr;onQE`8+QVGElS%PB zw8KoT$z`$#oNMM-QQsqFC9^SE-qoHZ$8kbBo^6Rgz z!T7D!gZX%)4_A-gwS!tT`f$C`UtbrGzH`ID|FN^xT0L7W$85D}wpvDX+stIehBeGM z8g46D7R{ji;8S92n@+~x|K9J5v$MfqIE>gCVmdUQr~G92H=J$%rnBwecD8-@Y`0g> zcH1%A9h&X-eav>7XS?4&I}<$DqtWfq(VuX6I;)qb<5-?9El=k@mZyWugNrj52wt4? z^WO=<{t4H!yLvqhf{m-p1ns`{N_Mveuj6nicpWb;KGDnK^I3WKdh3Nl&IrGFW>j>^ z7lp(e14}ZW%}t2`@-2SKwuF>&X|mLD6H3+V#1>&;qo9&MG0Rmtdsku;9TaR(4EuWY ze!P%EuV^|%k=UM}l`A@o;&2D;azG(ABUEMz$~X^*5wc@o*&a#cM4?2EMSr=*a?(HV zGN=oJ5oXAi|;G(CsY zGaHFriufxIrs!6gp8@x1dr4@cp2mAdGy5AoxW-&k~5?Y2^l+Z8G zM8N^AI~bVICp%F64I#j<#*@xBWehc3x|#+PPX12j;}&1$-_ ze7jXH+tW`;$w-Q{;{XG+{1i7EaI}B6Dh!NmQ)}INP(e+Q8ui>(J4f72f+m$z)+^<1yzXoc*221yAkl(Mt4fkuX?tTqw3cO&y-fm(8 z-mZaJyxVl`yZhR+A7Oh2a(f2%u|4fw0!zHnh1=-=rTTwTqw2qY2mL?46E?H@e|}@5 z|MwZ{|H)m0USU~xuZiYcp*R8lVm6syh~0~;>ACo7(Z5Rm{mn2s8~3O6S$zJrlq?iz z{IOc!Mx}3~(zj9RyML9wlRc;j2K0Jw_q$g|het2}xl!%=T~zxPaQVWYN%St7NDV(l zmHi2I@$8X!=wZs1yJd8M2moh^LN!@s#Wz|Jq<#oY=(eqPw|xgmoUL~!9D+EZ1#$I5 z;uW{cDnp6lID@1_8`Zl%O!ZFWRPThPddI8O+_qOw>E4N)?w$5w`>74q&;A5SdN#}f{HJn_lt<6TELQpgi7g*@R>$P+GwJn;!AGkhyOKrB~3RGMeaSW@k)9~P_j8KB#1==P=HtlO7XeYT`(4otFAxlb05 z%6)0o7e!SA)CaNEoE z{Dji;TO#>^@|Fsq=4SF*fWp$DDy%N68<_G(S@l4%LOrm4xKHW{_o^RQtpAsnI6BnK z@=`~$ij3ef*v=^dZr`64U`F^z;;Nvr?UX_W{d{4ybYvcQ zd*AhF696N*^YYaD1`3~}GjJ%KQ|zlBvSMHT@Ft3V5_+T9cN@h%Ipy0piy8eq$RhQ; z`r$IgK9y?~l!|?7iB~I1(Obqkic*9)YYP0{6#L|R23P!NQS6g%F*P~3-(Rs$J~PM; z+=pVH+>_g7xnG0aeht)q4VLcLAirOO8}8R&-TfNW6!?89_Q{Kn>-}66`{XTMlY_ZO z#Xh+cRw(wl^}jHD;(YLBe|#@0V9WKtntrR@$?AW#8=Z~**XO7IMH|ND{0+!8_`S8t z1)S;HZP<^m$5W{8?1T6}vx}+tZWd49zJsmLx?Z?Pk9WmRl0=thlMmt?UwSrbU>h~C zjT+d-v)k{Z{)IdroY{ugP#=BIS04i}P#>FKQ+*7*PY~)eBG|!@_gO0-}Zdnw%_r5-MZiPeBHjk<@ve? zLBk7l4}ez>(lNuJbq|837w8@Yp%>^L1T8PnJqX%fpnDK>yg>IL=z4+fL9pcox(CgM z*VH{|`d(A@V3e-KC|!$Dx)!5!Ek@~DjMB9jrE4)t*J6~e#VB2ik+~Klb1g>ZT8zxK z7@2D^GS^~cuEoe)i;=k&BXccA=30z+El5T|ktpkyD$kwN6;;vy^XB_wb_8CT0+&z~ z_&cq*^1dqGLkI8@6c30Tc!1Kh*}$dJxO4E2ibG2=;~!orD2gXi+0Y75%SwuNTB@F? z%NXj3RY$s>q^i}SCq~6jV0My))N6!Y_niA0htIi#aG;;d&cyBKDu{C2c|O7*=iTS& zIcaLA@To!wul4L+Bd7+*UP&iWfcsZKHrMN+I(qRb^MXecBV!x^qw!B&p8VP_f zYJS^HKoMn^5@ZTK5-vsNWUR%L}O42RWxhRPOw$wuh4GS`0D#Ssg%H~u&Bd0hRw7(NnAlZ`TDS{pj*&N5c|a zpKzvX6`w~DbgMEwkm*4ty(!cEOnNBO8)-U^95Y*-xs@r?=HzZBxx>kwOmdf#+pY$- zIIoo{0&_;`VK!ZkIy-1zjyiC);j5wR%<^HtOF-d@Gsor(w(&$C7xS3HG4q%|q|;$& z1)6${>R>c{J{VBrqJ#+Ju!7HoJucFtB2~&noN-tg&9hmI3F!nk8?q1kykX+m)%k_O zRb^MrJiwF4RLQiF^-u+bhe8Iv!EPg6H%XB$Pc&n4p;7teg0Vd3Y~fp2m~MLIs>i?P?)A#c;B$3`Fz_5JcQ!dqWW34&w2?x|&H#(7QYtH%ZCY>Xb}Mv2{8L3z46 zw>eA+9@qa)uX37Jyg~mY*ZDPH=jmmA&DXgf7zwoYT{D4R9QAd6O*^Z*>Na1PxB2y_ zb(?$I?Mh6-vyXn6U;k>~=J*})lldL*^X{MFI>*5@aa!>{57lLgsUfEZc4~`Ln|5lO zQ$wA~cLHX0IICqB=yGb?PTk_vj-BcwXNT8%c;DB$-*#W?lmD?z{kGVDaKZ*9@)1jUg`REvf<%> zzUM>7L;Q?^*7jb#sF>GtRU4exl9uz?ZG|njl(#Gqx!gwTLgn2mX;jw}sUUQB=?r|^ zdM<0bg`|cj+99lw8CiJ^C)*+$PFqWA!=UR^da7zCu_r6bC72|i&m^C}l;rdO7zxgn zB>Avyxq==kn2@Q%AQq!>G#S=YDM?o36WmVZ)BFR8#7|7*BNc}go!B+kLJ@EqA<*w3 z1j0MV=Nrbq5$E{Hp_CPEe5qwBZm&oVNo}zoUCGGsyaig zi+djRf4N!Y!aR$Z_Z{y<*p*kKk!0fZOYKSTWbfsxqY@ql#!H9e>04msq;g@U-Kqkr zivaB=?M9^^W&?^FbU<{#SoZhW$mKL>Q_9NJodcy`95@m#=#JJG-x;mQI(4vG*-$V{!p2 zuyfkSu%M4YaUaiC_c2`E$AQ&HE?{koQtxVdJ)REh@vQgL$3Tlp4|E9}C?#ULdu5JUtWhc{ zK-=bkt#hREb2EjKCI?3LgI`Y`r1_@Ffmugdna{w6uK%-QI|QQ&#}Yv`N}V_Svetc8 zY@uKcC-l?)Y6}Gm!qrD>WXbr~$S7g&Ka|P5*b{rx!Hj%HRCxRGuKTiEwVE1~)K)dr zhFzT@=HBd(KK-$8!n>dw&%_bwMvDf6I`*jAL9oG4w>-DMIIYH-=W>IkTI#gHc3cHj zVomQ`RWemm=T31E*&mPJBWjNnbXH^CUB-CmPz5c`^>n6CZ9BWnjpfS>TgO^0Q%l_J z4vd=LF^ne{xt4xzx${cvMvE!t&#bA+Ft)+riPhCklwPYJsS9zx3PoX51QC z-II%xZnUPq*3Oh|_@YARGSf!1qK$?H9=O^_#{t8rb-%3T1~OdUNU-HXaCRe2-AEG} z@q;gGL6~V}u%eZ&YxCHxgu0awTWNn;YX;Rj>^V4Ry!X-yhAtG7S|(U4I>`4i=st6d z$%#SK@s}7RaA1%?W00U2g9I)N65I-d__x3yipl-sF-Tyr+ZznB!63f}25CwR68vEp zByffB6$o2+LXjaHM`(n;AnlF^*^%G}_ig*Hz;8C&8~d-%(*7&mFvWIY&D&aorIl}Nz&18u z8ym2V4cNv8Y-0nqu>o6U1E$>PTtpMVmFcsI33EOx0CSp+-O?N^y}*@O*x_!y-bU@* z`eGms@$*lwcYpTiljEr*eGFRrp-2u2yKO%d85!n7QJS1S6s2h^ABs}Y_1@6Us&jAX zMrFB#+h}3~xp%ER%+JKx)p#l5!VsD2OUK5lXVOB0KtZ?F#WNx$v*xyB#u|J1|LA^*-GW zbv`X-qI3MV&S6*7X-*?lIj9~CR5H+W`^P650NPXlef1imGlQ@pGo=Uq;gukzhFZXS zNi@8-<9VvZV8$K5P!gyg_%@1^V>x4UV5jvID5d-<93<&qAGZ_56~GToYhOu859)LZ zyby#RWOfc^1Tw?VW;A6+kj)5XMl+kyk{Mw(qb)O9*^G|NXlFCJGNY5t*peCDYzA&K z%Gt{0sImLG!TWmjx#9b2{C<$?7U4>=;zNoK6z+)O)FRR$$Nd~00ywkbEJ`T*dKSM` zTjo4sclJQ@BT{4(f)3nc$w(|<=gwz@!&uRTPCigPX_x_0u#oXJRC(=Dojk20>gh`% zD;%e>U}Y5;7TnJ3)WiBdh_cerrj@n0vY^|&L1m+Y%G$DLfvoJ(R5Vv^_Lp7hq;13A zBPGOk+O4=rQw_{*l65(+mLwr25;ay-+z}WCGEQRAKbx3ffYje&r5Er|v9zRr6ZHod zx=w;t^>8GH*&NUPq8}UA1|oi{Uo`;S`c;DYW*_^BDVm>Lu=dJkuFLY?MNFhs&sLRboR7LLqtmDnYE`IcCi9x2X9QWJlWp;-nO%!?1l$-KXS z#v=43Fpj1JF#(>%yx2%oB5-9tdJ6Csj^y=lBRZ?ESdCDvj zDQqCk$H|4GZVLOr)t>#Tr?GR(o}R8%8=(E0m$M4P?^3<&E?)#g=PDoUxYir!0bN5&q`LDhMA~-&R{_LIHu0P5iXI*va z4XgKYS-oq?>IESZ?4c%1uO+L8>3%l7#pyvdz0K*V@~p+`T}xIELBed&E~mG$>06xM z&Zhef&gf(_97f5+IW1-7;OO5wC+BzCHnVoEm^H}xl$fvQ;R+;>!yARmi*R>X*7qFb$$o?unU`b)O53XVBb>VJ6RbG_-T{ zyP=)D>gmviUW=v7Hjw2iGgZ3MZe!iQc}D!)pAm!2Gh%b|jQA&bMof85Vi;zob@*TY zk+4vwM_T2d35yxkX5DKFKsOiGMi_c;!qDI^APjA8grT3OFcfYXAs>@I&NcHH%Q{zI zG8E^^bt@4U#vL7LSeC^bUmAa9UmB&4Z3pl0Y7jYXlFd0FKocWo))J86 zmlDT+EC(N-glYc9Rl~>Mpbn$?Pho?u^dIqwZ_tnG2|!T-pN&U=<@W!{W&Pq~$A9%3 z&1RU3{~9zl_Wz%u{XcG)oZY{_wbd0bBftxB^g;YjL~^r@0sqE;e`CPEG2s8h4fvJZ zVdwOFb-lkhIKl4zuqRknP)?zCd#C^W{@bI&-m9JO_e`5-iV8A_XCzwei%I`1k}i%} zuvF^xPG7&+HRMXWy~CYv_YS#|QVIV&e7K#F)Hr~?eDdT=Ejq(?UlU%7qDwl&{mFIz zLxM+#rFBV!{!@;RcV%zXaFJEtIeA%`%+700kHQ6a3jnv=YYJ2v<~xl2ACYMlE-4p|J%D9%&w-3zllC;wvwVFVhmD? zR8LXXx&fxx=UI*fmxeZmDAAn|7Mi-=+0PinEQw*tblw+KqQ!uM&O`7 zrMm-PjK+&+n95&fFcaua8tcGep@ZwQXbMxbFuN*_4|day1L&al{qE75SFcO_!@l|d z1(nq2SII@fr0BC!K3isq2X&N*Jb0FeV9go5hk|Mrrm-!Z7rW}817$p(T_uh@eusJ- zyUOvq5#)Jc<#Fs+^Zh!T;3svAnFZ>-MkLt#24{X!3!fD<==+WqQB#RqY@B^_K3ib3 zy4`HEhA#xU&8pAjLn^+c!s3|6V(I#Pq6+{7h~T-x`MBsmyTuaG;{rjbdL~8dSTLc8 z_sj`RXBbXu;S?i(Iz#H>0#2qpHEC6{q$*m18};O$3h8D#=e#H!_rkM$F&htxildbG zjlx3J8?Ly>UKY9RbUxAxZI5NPKlU0lhp%Rc$cJ>3jDe_(GuT{%`$FLJPA)y5^k>ez zrp|Nchr)n$gR~5g&<)ZyKw55)jsensrZg5g32ENR7%n&31D*gfn;!(Vt`g48-)NTp z_9SHeY@(<8$pUWv;Q!;5Qfk;XhQ`Z8cZa;GV4Hj+atjNOSD^YQ+;;iQGtn4nOtYk2 zo|-)B)yw$sAlFA>PR$ab0h!z{N#UX!?;|3HpKs#T};Jyvv~UU-58h|iD7bp6#K?+ ztnv=Jksog4ha36fMt=CI$PZ2Lh`?2H>af!5&F6!5*y~j_fXRV) zlVO^lWb%{6wU;a`fU6wD6@pw@Fz@p~?+NNXjU8jsiRGhbMA_L>5crNA((o9x*BVsTf)j2nW+#1PQ zWI_uPFoZRScI32nT7?x{opU>oJDO?@=n4=@G0FR@5}=y_u!g9Bwh#z1@SWmGsze?w zuq~;F+{*>?JET_z#J1Z~le~m}n&YmVli3s~S9)!MWN`)L$V6*edu3+D`GtVwP(a~u z>`Am_ky_k36sj3|8S9wAer1~kHL`w^Mjyq`_NA!^7P85CS4)NL&g8Y@|tm^w^Txm?`A9$5krgMHO-ocgiS4ESx zV#!*eWX)Kzb|_ghmh95#)H3`nZ+A1EHg-)~{kUSw5>ha+fybCYZf7{^$PidDXfXus zWQ-dDEg+-=4meZTZTNEmry(&Niu7FJY|&fC^;JJj4ZW;NO0^dTN zFQt1QH6egc=#`XW)$YDNNlPwhnb(YwOI^Ebd|YdGnx3#QjL7_`fVC1l%z{4^*#l~V zxANdYel0Y3I}hG;fO8ODS*DXO6E10@n+I<#0pH4lx0itX4KEAc$%B^<!&VTbI61&q(6p-A(YbYs2)dy1Ki%x~^Nkx?BFbO<&zc zCeXCd=y8{BwCNjw>%+!K*RSW)4?Xp3IrXca`qep;2y323sij>xl!?}nv8ry9{q2m& z+Z087I*t_j^1@vJY)~?Zy69BXGYK6tX95b9yZoK${bt`2f;yLs7+Z!x2=kzUaud92 z)B}#-gwBIpDIv>`ako30+~{`%Qcj@bn(yf(L|L!p8)TNSObtDigJjmd1S+e$hWWv~ zE5Qb`j#C7`ivl_70y)U(m>(~AU8Cf4oFoI3pk9ur#skW_C-^!kTh~dYhSy2ZQU*ia zM(`AFq%CwlgsTAFsE506VDZjAoE)9DkB-mYqL8OE1gN^mfFuHD#0Bv98*zkO|M|24 z49DRrIt{iNOKn1B5#aatNmQu11&tC|q)u!%gGM-Ot04!q5lrv#UrHiw8r@qGl}dZ- z6X+0_A&hv{xj9#GhOi-B7~$K?gR|2T?>X2fWS6y~MwY{pVb#RkK<9X4qIf#EimoJ3 z@`@!n^f^j|(WMiE@eL!(lboES$xE4L7e|D1tilf(9U`q9Py#{}*v1jch2imNIDEo) zTnlwE6WcfM)~PD)dx0CgDmm%}u5VR$fxBDPUEt!@^amR(aBHj17r3%j-39JzRd<2Q zn(FEuEV#sTcx`p7b%4u< z88BOL22gKR(a)sNE_dUBOcdsUc0&uaL=;3*OF)bX{fXtxZGx6ENB15pB;<&}LAqfw3TMTO! z{e#;g5^Bc0>X_&!nE^e)-!}0fdRW^*kLN<0ktc`-VyQQ_j3rI(=ud!pyeLUfg0q z#!D>EVqBM~yco+RDlfrri5817TPzSDKC7kVVZoYuh1V(tn^tTRt;pSlZ~~C-tQ0#jN&n#J2Wti;xYv`CnUn3>`|nr8VFI?D*e&Kak&&N` z5)KN(ccx^i7^VU=GbFYbWsSHrpguO3;$55uD_LBwhrQjQz-$@@y{Q%(Qf#e2bOZM- zcVnKOdZ{iyiZ~C*7_bl`9?vc=%PJi44>Gh9Drtmee?)c)z;^&^Gw9z0(Pa=#2E*|M zc?itddO|#Md|>kyIT7ag0=Jd~y2oNYYGm`pDJeA3r=We^runNbX+YVLhJ{xs;}xf#u1O=#b+3Qx*a zsoCzqk21=zP$szwBB)^~kgV@J3|k5oDAIuJz4eBHNr$AcwCWgAq=cbTik!le1=sEN z+1`(5rFJ{IY_pWIJMIAI*o}In(HMw-cb)7I;ZlJ8(`_d=SIPQt@F{91vk4lItiZ6; zkdO&a_`>0T!QcN?;UFL)1V|{NsL4Xu8o~=6aQA9_bp@atjQZpFifw%MM$`C)V}ww@ z)D~FBLdz2!#EeYQGUI|EmXq#afKfsIxAH_3njY(R)5W5IWQPF3=YR?Uk`w>Ka7337 ztFRwA5T#u0jk<^#PmGVE8P}ubxY1`0r3)%nLB)16S7(evb&$>_LmOI-E>}F?MC1f# z>x3LTL5B8l_D(2f%KJxzP|%x1{Jx>KWzcd$Cm@h)fuPlt8)ea}8#BQItcKwd04&wa z=!z?dUaSBL0-NyE1Ps!{zBMO=f*Giw<%?2aLB(MTDmGXKP<7p1FSQ5SlExcr-n19J zxg0o~1P;d=@L(S-+o7Y3vULFHY%dK03)~!nG<{Y`kk~=8u+UV@6 z>n=q%hQX$tPxR6d%9KfG!9qs{lPVDs(R zTEFrdeIp9}Hs7yK()QYSFdT>D4K(h}PJl+jQb7U8gi9XYpgr6kWP%L0!W9sDVah}# zgPs&b`Ug`Cse%{nU}Oey7V2^{=&ek1gMV4jHcDZon69^Xxc4qStCb}U)-e;?;Nk*! z1jDX`%#mTLP1t&;!8$bE#~+>tVWTNjqZ=6anye}*KskSWjrD_~%{w^w*d!FgQZ#oFJRT-tpyAD zLj?R1DHx(yYqKYVZjjtuosUrkKRc&WChS_F>9$_Ymxr$oPup+z4&MuDmp3A~T6?m* zL3P0QyN4h4+R(_=x4|xMpWm=BzCAI}eoBTroCxmJXoqG{wz6*J8{Fi5AO?Vm)3XmR zovYM<`7j&k|H6sqKz=v}bi2I^|6$$)?55^4l#l#Xt@;ekzG9F06b?H#^fnleKZ;-$ z$Qv^g{R=W!J?5*C*QGQHKoARs!Y@=91aE<}Mo$5j+hL=BaZG@J1^<#=yw|BR=+9~g z#)~inMsuzHtoa<^f@^`gJo@mCuFBn$H`;}T`dNmB#xvX_P~q>=W8@ZteYYNb_uY5+;*U@VB3_ANeef=( zyd5%F1>7~y;9|PV#QsHrTzaH5pv#f`j&$r7eFkocH9QRa?qMJwf}~I|>JfX=pM*8w zW$|A<$J*N6H+QXEJ_#%2T4Ws8-`{C15WOp;Pwiht9Jsi2j*pl4Z}zDzT*Tw+q;R`2 zd*ka-;rpyZeCIP<7@{akQeTcO^w4LT+S`6&xB(YF>V@7c7J{iIhYs+77ucs|g<~(H z#H{edl_fsGBJr|yUbriM?Xs1|(JOIx>+J{^I@@E9T+BqIXc#5#XyYBJ+EUI~m9+9d zKO>)XghKB-eALF$!iz0y7D_%;$Vxq={j9-wX^U_nEzhu`+J+L5=HnQO^ho;CW=H2g5 zB(0HC)z`I%z^T4Dulib0HL5q}SFah>x8_%`8`Ycht8W_Bx93-H7}e1r<0)&oqy?*8dp%HZ=5*~^UTs(_yLLUlcFnH6nP0nZ z*KXw3-n46P<=1Z5wVV01x9r;6`L&yNZQKSqwYQzxVQ%fPV%M(b*ADI4wfx#uV>h1O zAtM+OmkZ$(L&@MjPt~>Am*P3Hsvlz>Lessr6o;Ym8CpDHnCL=Tr~?+YP{R^YEY!It zjhHpUCXV2q?In8dXZGB{p3Ozd@vj;d^b4J<#Wlh=+y}fGG0F7=2zX%-1sP0*_X?(b zBqxVRUSjY@?M!9JIB^}Ak{G&hO`B%14)hzF%~iKn z3rnrdm9>4*Rr?rYeq0Yw4T(2{w3ANEn;bUBAsj)HwcrqyHcni6s~MZ}P}N``*b0Nm@W#RuAXRc&I7872d&Z~-y&jW@5zCYb zb97kf2eDeVr*(~e3-NVUKz#hq>}o>sSf?_~!yczJ-9rScpeH=dA2~WT+@crk<$u{p zM5Ku5GtjdkLM!CJDD6X*eHCwE-Yls0ES4z@co%wyM*Thq{T|`2x)x7iwwxCosZggB zpL!4{Q@P-R>&7?^%Ab<{@~j;jdk#IhFqt; z@drR$)9!O~C({{ncuo{>i#ivU+~QkJd=qXB3(e{@J$U0D28X*kIp;IFAO>UxR|&;d z4itO|G%P6iTlJPGa7S~W@DLr514AEC_ zJo-CENcg{*Kz^`+F$v(?c|rpq^&p_iAnElvAs+`#J5Fk+Ud6UUt!$t21a6{>~IKXNd#vY_7;m$9b~ zkN<+1py{zkLmOzI+1QK&Om-CUQVpnMgKfatgnUf(!H#IQL$8S`ff?vz$3kbVO5h{U zEQ6(4jnvUmyKhmP0=Jz~eCp}KE>5pH>|l(&Mm|*R0p0OGaqahE80J21^{Iike?I9L zUI@ps5G4e9X~KpBY|9SHpt$2}^h+Fli|JlQ$p8hAdSL0D4sS~Q9*)Od z5nT!%qohVst4QG;qO0JFEEn~PqRPvb!^$Wb?Q&^vzj0sv?b3qQo&Qm~>U!Yg0I zwGq7XOVV|7Z4JG5i-7^xG`gCM<4!z)C&vWd<2*S&UDN9^>%8RiMF*;2OCAjU&OmqK zguU%V(03uA5xd6r7S54g&^n`y8(~OFU&Y~rGMbL?1uh%Xip^59z!lcmKbcEvt{ela z82ei4Xh0=S)2(ir;J%rxI=% zYE;zIPbq(gk`pVzUc7P$fD7fTa)l~LH(*C)YdHe5^`YSoyu3FsbQEsE>8w{OP6zuZ zyYKeIY6Wdos|j;(L^;B-9S>$q@#UdPpW zUdPp6!|S+~?dDrE)3>+$x!aBHY*Cq#OGk{YfJ7&J7H-pn{vkZ1AKouHV;|dIu!T_N znbH=p9^wi2E?X+2(QH`apWFCLQkvj?H&q;PqpATmSLRv&A~5JCg6U7&!W=rs%9&J4 zq!c{w4udKzP*{3$82(o>Ie)Suf7p@L!jP}wBw(&1EM0bh8_0uc*!ky8doqnTWM?93 z2rDA5|2e}5m!;u&>23rc!GSO-3??d~aC=}?fl?_qS)}V_F(;35?`GJewQHmK9?()z zF;ggZ-y329n{Myi=9sbjw?gcw6A*b`@F*tV@d=mux6cR6@$FzTo#ecxG zA>F%=kstpdtcI1)j{gvDZNfi~@gIJ7@gHcz*g+p&VbF)L796~Mw_?ceQZ>S0cQm~m zk8XlDaTJZ_)cwoNFbduQHyTZ+c~vXT;3Vn=Z#z?pB9U8ltHcd*<4}-H+Ky=vZf`e( zHxU36M>oM=B2oufF)8-PafBC$a?L$Jde}$d@MC<6$M_VF@hKkTQ+%EH6fz;$6G{m7 z#QxCkk_<5YU9baKK+mtYC@DsxGhxNn{vHqltGq(?j-(_fnD=GmG))pGb&iMe2(V)2UGjMJ&p3l(jkI!9OI^^<1I%-bV)2Ocmf!%+5I2g@7 zH|oJE_TM7L5Dh?5^^%+9lUa$mNAd3$Q?d@k8%3tlBPq~-e1hH95*thtr@*HJ7F|#FLglAZ6!zq%LDHSp5 zUPk@F=ctG2m4bJ>KfT;*e>j5u|Jqx1I-X(-U8m~uvuDUCW0W4gWb}V4%&_#GwCF1; zcq78?;(+-J+Ucun{ZTPk#h;6I$(qQcWq(}j_`V8Z2_hm0gaLVffZp4uKb?M0Q9qK- zjc|!l#^VVaM4{tU97O+^L3I%Tg4v*svM=YHRdMYZnLqCay|~k#Qnym^PKYHV;iw~H z-imI>A_1CTMOWkahOZz>PJvdz-Du-{23%Uqkeb2#tqds%Who)>0r%xo?gZ1KT*rfH zgm&r_Y_~2n_=dd4C=-V09c8#gK)EY4Xx=;A|5U|kmB?nIBOnX}glKmF zT*3Gv8b#w-qO9kq<8g^Q;dnS#1K2|VeFu37rfPv5q8a9yOxxV;Uz>kxLAjEc;y%H& zGc80E{!qp*l+Lgvzwjo2kNktK8q0!M6d=h9R&lFtyrAp?!BZ#4$-C3DB2vprk>+4` zW5C(st+hA8oyJR{bD==}LC?2tWr5v;AK&fm1P2M4%MhDGx4@(W+zzgcu>YZ?i$D_L zHn{qeKpY-Jn#3OkR8OAaeInfg$|cNThs`&`IqWG*l>E}3y0R|)n$Z{ zRxs(QeaNDowK$Am#H~iHg)wUbFh+kCPb7;l$L#15xQJ~bS}DXv8<2Q*2CTr|(Q9A@ z+HKK|AXbV@DSsBj#|4w{it!^NOHJ20r&|C@F@16&B z6ijidlU0f8RW@oWniHqAE*m__68}?di4HklNTBoZEk2uOYBoW7KF`pI9v$Y7vsADA#ZEXWxXI|vQ5k8zznuas7rvr1*Qdr8cxz9 zF{Hte+1$tsr=+ULiKq$5ABs-PH6-2bUT4~I3s8RuP%X-&>3JBes-$_0pV^4+XE9tL z2gqUBj7|mXws4PWwpSzlVyw_iC^LRfq1}u1Ws#nNL@^fJh3HZ$QV?rkBqB9}<~2Yh zsmUAFElxyz1@N(p*{G#)kGJvhUvRrViqQY9<^L*!`9sP7!?3=UivJvjjmP-UzfbwU z+A#DGw1w<`Nx4rJ9|r$3z8nQ_$MNXnr$I9HR^mv~jgl7LZ*x59IiaKpGN53AFrPD{ z+95B7IZNcr@liJaD4Tzj%|FWKzn*OVJCe=6usKGiMS#2d6&8`AN)Yy?B^;x!^1WYdy5m7*;nb(rG*TP&QScPkI>h7 z#T}`Vb&{dUu*{K=YHB|jWWNEN2;hKf$kCU*eaIYRD97jw6Vp#rO9;7hfCbLG>?Qg< z=}>T7ycXCOPegE#!am}S)O{r9_v@X!9< z$==bcJ*!^5xbme%N}65Hkqmo?4GnQPUQD&uy7#*4peby#q}An2@4rf4VM~>!;ls{VMsko`&=$)5Y*RJ0SJnMTW~OO zmx!7_AW>D)d0;q!5Oy#~%V2sV!seNwM9CLXq?gYNKbjMLlou0Mjbi~_)6$h?lmDFX zz?lI@=Y$D$OO7USZOzdB$XnXr!`?{8$LGY)z@uZ;>VVQtXnD83SXM2K3?mY|ANb(t z(!QnHO~;dOd4s9^v6IYu#jo-;kpb>r-q=NcxkwjR~$?ND_74 zp+?A0XQC#-YyvM!*asb?)z53kJ*g@>d9grlq zSkDjEp{qT*zK*BNp~nhEyftEN;vs?zN={v~=VGO>U==AElfz&TynwY21{)hC+->XY z@DFX-^>tgBp8zJim%-}l8dNK?O+|5~@H1(&5Bf6qIc$~UF4?2@cgb_H-qdvNW zqufgfw$Mx_?hH3b`8k=zaLCLY*@));0ADU85hoQc^kgz7#|+NJM2mUV0nk)POPQ;Q zRv{B6^h^IZ0LXemx$Ozlw}XA^V+~ka<4o{~dU3Q{ScewXAXwk|DP573yo!F(+L~k| zn{l9~dUS(=`9KmOsj!8j&qfn#NTq<+JC5cg$+7s=n4b7zoI-0uoA37`)jW@*&PUju z1z-F^ACmQ@@(@^F3@@$@H6KF?&+S=_eOMZd1S!*;Lk*28P$ z>C>D`1_6Q7|EE9wiFrzjL>qnXMrJ5=o;%6#@Edcs@;;f;15wyMP=MO02)8?)(v6Ny zC|-VWK9~xjAzuvQ*e<;-$k-~-JIvZ9sZw+Q$tCu5Vx7mFF4DWhgj{S8J(6`SR@29# z_}9wc9`I-cS!YAoN#$;gyu+f*q82(ZR6G07%tuoAAC9DNjH0DUjHFk-*p@r)=Tq_7 zM?EEvtIr5?7&yU@V@oBT7M&thcjR9GfbV$Bty51n=E4 z?Nb#RC2D<(D_|<7=+LT!c0JfC2G4?~b>CwEJ?(m--!_CzSmi+%Z7I;4GHtcbX=t!z+b?yy1 zj2H?Q51@=JTN3F>*oFd+rLaCYkH;S)Oot?#Xs$a#O6OHOBmk)jg)xr(L0s){tt`bC z!p{|(bS62zHm2~Y(h3rT#t;661Q$)~Tfx8;JZVr!AZ|5lIl`%lDVGX@OxD4;w6icU zLBBtkZHw#6QxgQ)k7%m6%1F{YXLehoU6%04>Mu<7XP#^M9e>iNTl*Yhyl6KT4pB*d zuqSOe#7TRS9l+PO4K!!S9dc~1=arJ!9Jg9=9uqTX6D?>hu@R6g4P?%Clrbn{N$f6I zt!NttVs^%(s3=LAbp9ccXi`_hwVUD|SAz95-z2&zs!n)9c z!d6yLh+SQj&Y?my9xl7hac~ZI{Nj1;GdeYdXG3co!N+Dxa6A4d%gopaJb8&CK~VW&*n*`PgJgvAIV#gtU@jdp6o2(p6$(p6lpa5gDA#(Qroy zsaz8!=fGFS9|bGV7Z%+2{efvDr#L&oncF%Dy=E}|=2}yP?ata#CRL(oVYVl}W=)y> zwO~NV^%EV3&BJM*M8MueKKYo|si7<61BF~oXCzFe`SLxFtUOl4H?b2b-e)WMp~5W6 z=#W2HP^Cn(E<|L5b8bZhT^mWFUwM=m?$?r+(CMq1^iEw5!kTzODa{V?-;59-U}2-l zBut}3j`V|EZhWs&4h!5xBkWQHrG4gAaDNLhy;#`0M8-8X+u4f z-rAf+%3^7aB)6`0k0IYR#Jfwq&MANf`PmzHlO*u_l#&s%qZ)Z`Y~F)z)}SU<|Ce9H zr{^f+!@b3vkRjOhe-%KQ3T!$hMVs_v!cB3>E3;tCO#pmANz0)VM5OW&7zhI%ydt5= z^jlzmFlj6>44AaV+`J~nD<9zQ5#LSGWmAYQB?Zrs5Yr~HqC%LOKY1Qh921GSuwhU7 zRwD>eggJLtTV6=HHbG7xiGLB3Cn+OLk4ybYhc^N77OKs#Yx-hZpY1VGlbnV-cYn z*r)?P!nL4|qj1zTdTL+{B6y=y9|^ymea+AaHqCFfIc;RSb8!K@88C$OgibsX7p->? z5Be0dV8-?`co_Ni7ti*)sv;CU0(fYC@`LyQctD50C!3@q+>;zmtS|>9C~nEuMX9}b zTT+-n_pJBGi_-d%Kaj7GiZ>zzUV)|7ux54SM4TODbW&>+O39)EmeYSsn0i6Ax z>`yyEQv^4BJ?4zTy&f$jx`e=nnsx?5`RXW3jq&2tSw;)_VI221cvFd6bT&eS;|s;| zE6_$d2Cepx*UsSce-drYo9;yMka;JbDHg`M#FyzL&-TbT{9palKAyaJCvVZ1%G|~q zFE1~YGC{P98EWYpC6-+IZ1rPfjb%KJwwCrk!CjcH5ssy>Y4o z;#Uccme-W@zI08>Oe!*mchbQ}6)`Z0)c`mJ!&j7vRAG@mm0unZBNe7H18#IFw}8&0 zTDO9DZiiXmq7jqw6s6mSl3@y`)spEfUJ72p|IxI|N;_zvLOBPWnQa?&8rT``ujosI_%ymckEYic zhhvipM6A}oA!Jgf;ts;@y_2}EMmxpq;?Xm~RP4XcnjU%wt44>09}6^DMQ#=dF!0+0 zXpY1}8S)l0I+PG%zr0T-v5-X~Te;(418v?!ym3Md^6D9o!mg>^=j?KtcmOx-WYruF z`c8zQE^*W-pw{YY4yda<9LWrqEuzm!3!)H4Y@T%AB%Qa6)}poCn8M3|mCbpzazjAN z@mQ?Qidy*VK@ut057F|#GB`Bwp##8(%*Yc)21h8uBnhcQJz3cizeOp=D2ZDjZ<*+A6Ygvx;{8B(*;9tbmf@|^e*gYe(RjzDmO=z{&tFMHAO%yTf6s5Ux4*y}O?H8)&Yx&%nqOG# zhNBBT5k|K_Tdi|}Z!IXA2SMI?Dj?Kr+jbf>Pq{e3=>z=z@xkkzWri_nffA@Ins_2Y z)eE*va7U#;C(VG_AB|aS#z8#Mpv**x0jlI_&(w9~kI;r*NW{WPZcK$uP!?$`#;xp+ zf7PFu%{XA6x{F)FA36~c0x3qGr22o2J(>Bk7(v>e1ECDiBWi^wr>$OU|9!W|#=`nR}qfq!2Mwv=2*F!cpn2PBpH=vM_sA#58hm@Jbz;Vg2 zJ{07%xq)PNLpWh&x~;$P?<+}@pFRZ!+52hurxU}1}$3xL~OMGLv41TLTpug25 z$e|q5>oJo#lH?1lM+1Ba1m{3c1r4NC=@aEOUMXWy=VB}xI+W``I28iXv)7rvVxOWN zup&99!N&J*6NAT{%XhPzw&`MxjJG;w3oJwRVV2=G&e_zD*!4z5*YEnFovu00 zQs9XNvB2Ij+@f=8FXG*6+HGKZG9A{8)y|2x& z!gYx#-`G{CeGlWOx=F(zo}bDD#lrQQY+PF!0v&-`$S##EQ$2=IKnqODa5|U_>8_KP zm0W(Qw$PMLxM0J*6wp9M?!@PTj!CL@XV0Z_&zJrv9e5vO%I+Tg=)_ko5s#M<{*`Rb zbHTF7BYIe^zIx*obrT>-N&QIQmd}&OpcV?4oI({)T@i+ z(6ry~3n$Y|S)==Nle!uMO6jZzRO~kF+#SP^L>(ZJE>mRK)CbZ|m}zCw?2kn5HSBl) zXw?dNTr9S7Bx1aKQ-Fv~eHU1=z$pbD1+f8|BVjWlVN`t8zkJoihK~p4w{>8|4e&tw zR8jtW*`$V%8(g@vqmC<=H+oEe7 zLwY*y0+%2fF~sCVeei8hWY8FsQIwYRvekx8xq$(_fms)ZEMg@%K{n}fp=bSZZVr#k z+#S2xDvMq2%H=ZL&N5K{TPt73e^$zeWm7%eWsLjJ?eH~nIV_yC0rv=0_%`8fUcSX( zoQfqdQn9%Cu8j2p$`rgr`Ug8TY}{pf|1u)v!H`1ctral(B-|2rd5Kx_GP5Xe)v&g9 z_bpy4mrue9vE|00{WnU}^4IS8YBCr`ap@c_C*!|8rfK=@r)kk=yS%c3ck(hRve$yF z6xnM*R*G!NHH*~D@*nx{t+HdA#>5yPka9C4ryy7fN?HQ9Iei}w2ct+b8C(?$u{!e- z!5Z-s`5dF?d9zY5y~;Dpa#8RqQ%9#GncCT*_3C!NQVBO@<@4@vgAQz^RA1}HTkDtxG+3{E4x7R1VOZoY*j-nK zAXn$bFgFmRGz3V!h6d>{+%cgFL$kpaH;A^I=a}VJf;D8OAP%dg$|^J|YHm|LPmE5Q z1|n((BBmMV?olk>tk#gv~#VTgv#?y>IeQ5-DliLx_(p0X5{^$vI4 zag|=)j)U!HHLZKLQT86%9*+XiD7TQFOr8d#lQk$qLA*4N2_wAv2{vO(%vxN$B zx7=#8aO2wFmf9C061peXeZiONUVl`?9g5V?NFvb=6d$KVW%vnO4vt5|8`}j>xbHIP z)@znwEwPy4WcS_sr^-!CB||) zB^hfz*9^|k54_xc-QIn9;1z=S6bU|_MrY_{mPY@c=4!l5%@RBf^C%0l6XqsdVmlZZ zR{Vvr)$D}Ct#qT*QsymY3dxou;oWnmjWNY2WaC5M|p5HVa>XT>kIQKkt>Dv z%va%MtgVo@85YE;Fmq8bnE2kKL!=HD8o#09QWR=FopRb~;aeVVcYy7-$o1#0q z$wCs~acmi!0&|YRyMv>)qJKfHYQ|@A{ietO2YyeM+6aq; zb1CYZjo_-G*(`evp$l;`1w>75Vz81`H{1+JLn@-iAufNltvLi0fqtVuDuRDe00 zPf7Pr(olB@B#;5T|V56N|f$eO^bPPx)QzDM% za*V+w39J0DCFU{2}Y zB4PmFW-Ia@B0d`l>Samj1CVOiNU|x9b|c5 zmlx#f^7Ar-xIQNykOfnc(P1DDrsF@t7H-lr9k!wE5U^tG-IV))RP?@yJLirlMi5AC z@=OWF9kMOqzP=<@1}}a9z@OXFbc@dREs!~vyqTSFk7bx}^Zv#t7)CB0q+;vAmT764 zU9D!?9LuH4wmz1*m;6bdZU<>&F-WURLrU3D{7F)72WeeFnw`|kY)(6P8K8Z}-S!Sz z(8L?zT__b5-K+KxPA)1p2@l5PkifC?oA9JGZxew&W0c~0b3@Vgf~GR|*!kwdO!7(36=t!CP$kRzebIF$LPreiLcK3FHCI#0{hTWj4TE zd-3#P;Z$8&nY!FWT}n*g$=2n=XAUBN6DhcIGHGSSJ}IP5F>XIi1I^@GRtD3>@UwjG ztW&>((+9)B$-A;k&}biVHc!H#$_F`c{Gc#K!u1#2xZ$bAjz9wSo#fSBLN3S)g?8N`y)-Y^6yW>nUF9irr@9s*Nfat9};^HfdXF!RK*#K zZuB<0lc#2GVrQT8jljn`(68Iz#LR7#g%%&qY4T%o8i+#FejA#B9njqU0wI{AT33OhosK_T|pde*`*+9k>fD!k}O zp8`2>qh(-6Nll1gwTGIb$&lkuML~IZ4m?OHAm&QCfsllySj=q{Vk3UBWH&TdNjL7@ zBc-H7n34*3H?Wh8*>q`h>}6Fj;(-n=5C5#9(2sbgQXtKCg@v}(PHDH92xIv=LQGs| z5mir!28idIz^i+Vn@~B-h*B++P|B$#h1^mt44#}VDm8UOB}*H`EWBT>r}0Qb z<9NP#E-GoCGuvNl!dbKYgZ>kJo<5_&o(%`*@WZnt?mnBKo!O*I1;fE;_PJ3ncmHtf zKb5djY1Hd~sPG@>-_5NWl!di=Sg(hb+E)07N;Rxjs(%P7fA|W2W*8bDKmj5g4Rh+v zD|aXNJNX0jV&i`PtOy;n+A#2bc{QHg#N>Rs`l=XID{x~SynMIfv7S!V41?VfJg`PL z!J9aWMhmw2%MILJ@5cRpG@UNeq|(GNmcd)hy>~F`F4SbJ#0~cWuHbaspI#$(u|J-T zdUT&J(o?q>gxlNA;0;__{TLpUe~E}CAw~InJbv$Ap?*5TFtz(q!E}H+j((>bakVJE z8YBr84A{2q{3f`FJE*D#;)2j&5YS5u4_BfK9gqo>B*8eJ=cq;#+AuR14e}UrO5|UV zB;)RYoGyFgF3D;|pw9tDXIvFZvA_RaBI4U`i!@j-f>)@>@1~H15x&t40fXtpgDzu> z9hLdR+?ketdtjcS<(l$0xzTyZ46&d+_<- z=+)te*9S*$f|tm$#{qgA@0Pz}nJ~}wsKY@Yv(8Zqg%Wzd69S3{g z!|%cATTYw-wLic#PJ)+v0Ld;s%&1?O$E(BLgLkFi_3pdfHweuM%>|mAP)z~N4{!JA z6NU}6I2}5R=%`EKfVC9 zRH;t7T6(a*-Tj`Q-{NWB{vOr~HX(}e7JSU>pz$*FisUET$oBEmiswgcBDQ~f@cQ-M zkv91vp{l$@na@PoA(>+REWH@<%hO;L+Y{!3Ujp^BHHWa;EEc8Uk&6A1+fDdHH1lRF zr;Zr~yqS}qDyRRjvFHG@COQvFNuIQ)Fs;*9fa-TK?|mDn^ceGDjc19Dq71h#5WlIR ze4myaoBU`9+r>77o7yo>bHjY*1s3JLgXe*aVk=pFjIK}ve*Hd{KDrUf--#%V`G z5oLTjo_2<9IT!}OG>i=*6yi^{@E=NrZWW5Wfi!V|2>SzEMRva&YEg_l5B1Q0DR?S- zC>lXGWf#yXyk9WFh?)?bJoPgiH?En=e=T7#@W3_2cM~J)&($ngxz~OLmqL5*a32Av zYN*UcFEIRlYD_cOSgJwjZ6M`@h&L4#v!Hf{(FK%A4ZfIFONGzOu{*68Ubf2w(l;_G zW<}E%6se7g9(^J8mx_%)DBUtVzV>2nt)zA-ZBasArUcfT0D(1d!ZEC;Sx`e9mdqx| zJ(bO7^c0cU*npjJ$ov!&zu_r_5o;&FXkQ4!{6D9!PO=U0(x+hz-zK@`8j(CPls0IXE%J^GI6ID z+%LcV7}5_A+}KENH7~aDy#?)Eo-kTEEGK4i!M{N)jb$dm%rXYZGOkFE?TgX6SV(0R z7TDfwScmW3_owiVU(oh18>d`}ZJqoGl^MiR;Y4ktJF4|U*r~}j_@H&V;eTb|)l_qA zofU^P@C70*nv0o=!D&YOv_rlw_?qK@tHxVS6Vz!}VU`HFy z;*^#eDPx0a1E{6qM?0V4Yo<}{;wHEr8{!<(;^t14z4Ri%SDOzXe08aXT#8C$XypS_ zEq{k#uU^pWzIJsv8x<$^D+WEao(d}NX?DQVG>1kc)e8RVAid}V#zIWy8*Z7^&k10< zk=bg_JLx{-k**5hf^f44nEF@c^ZtEABh}IyuW;EAf4Lgwx5go4Tl6#{4sS`U9BiVw*;(Rrpy`?0@q@D3@_otU|u^fFk z-Ftnf4W@s2++bg4gL!GY2l&*Ds=8ldgQBF`3ONbXNvsP=kA(=19Y|#+y{dXRgKr{|B{clYp^C-;f?CFAkkUo<}R zfKoKROj`y)%bk$$9HQ7Uh-KA0O^jIu{$SUV9B@Q8k!Ffp8TBO}ZPXVmwc+&7!9J93 zpF99X5FrP~*{~%ZY~)B)@V745<<(Smciq03#<1DuK5 zy0#jSd#yY}>lM`qe%r{f>&krL%kE&Oa&Kne>)EZm>@Xb)4HLO+=Jg>M?sT(8elx*P z%MD%bnQ-^SWcU4(b*wD#lRS(m1jy6*>M{bb$a^-@5L zlQ34u)0~V(me!14mTLxX*VjGK2^AvvMvAR;2uI^<^;*$S6afLBv+^f(o9SROBk@W$ zZn->RjP}IuA%~?VT=zISwy-*32j_S zVIfyDXBh&0RrQ=X!P_Y5^ew`QC7x}sNHKOZlqTP0N^+k*Wo)YDFx)sbF`<2GUSHn? z>0MJO^tqeEvo{Posod?6vo#DuR7Yi+yEo?V3%V9Ew?=wfEV0NL%2sJ*082-l zYR<~_e=jTdGZ6(2>j~G#*%{m!dq=Mic8}U^I`<02eU4f!V?#LSpO3p$y^>R1k&B%D zkq;VAa2e=QE#?ELtr~uV+tD>H$>9jTnu$rukVK(mVw;iZ?>-}v`?3tlvbvWs1Mte^ zC-bKkSz}0HOQB$hT11mC0gDw1DvTnr$nwa4vXJ0f`4R2Vw{&kTF4dn^5(k@*&<>SR ztCnI8SWo8V5DIxzq+s9N22Jm09Fv0o4)2?1qfg^nUD3Jd>*ns+klUc3g7Ix^u-n2P z`KhH?7GrZg#TY~;xAOD-fcM42)QH8CBcvCur{{4;o^C$zFBA;OMD^^8wctTW&qPR1 zk81ToSn0_gJWGa%@-NpnCi%@h8y90Tv*g>g7 z*1*b`rR$>G7Y?7w`$5QLIlh|4D|)D_PP&XT8E8a*FDYsQKT;P(yDBY%Sq)S4V!e`; zFCGRnTk8SjN_N#O)`F(2-SX^po)n7`ICji)YaTi%xR-mdqok2wgy0);7RAmeh&W#~ zNmO(QF1ZPZQGdFDxv-?YQNc+?&gRSHG({~K#`WhkE3=Z`Fa|oQwuN-FiHkj4`{#@{ zO@wlvE_qCW6@D<|ivOTY;-rkzWHM1yi$!=aCbKD2X=U5g`8r7Ecc2XWGC)Wc0wJe| zBv}XsvN_CvVKBD`pMm3Pey@qA*SlF+n!)P4^T1ufLs6ZSgip)47ub9G{HQ0hd?rKc zSP4o3f!>qZL{kRzG;4h4%E0SIVU*$F)67WyuXbO(-816#H?va~NU`U2jH=d>pj@B% z7c&#U;sO7i(ODXpPJZx2r8a0i2~-+{u=PY;s3NC9uu9;-{0GGne_&|oi=FFWseytg zm^}gi9qf9S=rLO8W&FjwM8?OnGwhFCH9?ZHT8?Org|aFsdi7#&=M-!adSna zqWP;%xYeyx!e$H80#$Yj!(Jf_OV$2H<$N`)77HZBw=zvd+f8gy!4_1#S_*yDt4{7F ztWJrWphdx~SaXstVMWZiRG?ZI8wx-RcM9cy%sRb-G>B^BPBSW0Wd)HwNer~T9yv-VHGU;ck;=6#chBpGmM{; z%GQP2YqYk}R$?}Og5&qErG7^TxD&9JjG1`amXxKkj;e3%F9X9)-_?12qgAr6e{Bry zPsrm>#WOdLmd}oP1&^{r$eeg+64+HQow_xZ%A!%;xNdG#H{khY(Zi+C;0*(P!Em0A zCTZI-)`G42GHZ~_MIxR?P0lxqCYPRVQPcz9CGmz_H%`4_<(qd*EUcs$HmW%zhR-}h z;C!LH7)+wF%o7&LX%W~-EhH%rZui3|{x%Vjxp4)pm6cQ?8M7u@MAA|RM$~3B)3NCd z;;1_vQqE&Nf~likAfblPhyok9YS{BWO*@uKjjyR^^(Bu;RA>tL(F$9clQrVDn&~vi zi>aqQis@fBZN;J*>-$M-ku9+ICt(0uK#461YEkFL(w?8O;#NR3mIfj}8O5!Ds4opf zP8jt?!=)!v|ELe_&zg~<;*KhZ2?^fPQKJp*1Bb4k63%b0f3Ooe+@l`CV+)$CoG553 zP^GAtj!Q%>w6=o$-Qn8**ty`4(0U$3R`6oRkj`iXbaqLyWL<+EhHwdEDnj_yp-UKr zciN6}+W8n^3LtD~r&fbIhc0KbI1O~NBPxETI0$Sgn25M@qvKA#mzrO1@%jB4I*D)QDYNe) zEKdu{v$FA+67!sU2<7L#EJY>)ltkTknaHT+35Nmj0AcB2ZjsO6L4#O$_R<4i& zk+0Ca%nN2bd*j5VH-etB*a_8#w4;I^j(O7K+4N#8jEUji!ES{uu9;>BaM0ALAEt}v zZ{XbYi!R+=vxwY^S@W7J-2z@pJ+89VB<6FwlL+;4BEm1@Ch$GLg`4aC;4{{`G6Lyj z<(_eJ)7&cc%3O+@&xc!=L~03AwBEBIa{@j16ELjZEdzr@`Q`X}@k|UE4_^C?{>RiC zeNMCe_wub=FvM=(SH)xE9WuoHS^$Knf>Leh@TJPiFnfjI~aZLbf@fgFS%H517#Ou zQf9_m!eP|qWed;o3IAQNS_?O7Xa@r=KO`c83vz*{Kb?Nhadm`BO^xA;HyQ+Hf0bg% zt+)SPkY%G@bvs>;d03}j6Y8z#5JDGYerKR9njH;%=d-OZ-8Y?f!PRj*#eoFFT9=m&~kPmk%o>Cq1l z2(3_VrJ`I|?>pL>q!WcVps%8lNRF_bSC;~8V2@7RjFL2JC~|9M%#hA9r|ldDlwI6A zj*)JJVG_AUpuX3d%#P)xn-FjdG%`%kjKpRBWTz}@WZ?vudHtt z+w{ujP*k6{A>I5pi|xsDXv3x2IpOc@hLCSzP$DwB%=5vCpzHpL-JcJW6{Wr9F?*o=0iVzeTps(fy|Tr012&^(o!T zJi*+8hAQ<&NDG=)`M#(8H<;bidTwW@_9QI*qGVs$i9NCO-z2Z6jDJn~aU%m?Ny=rA zMzXX9$nO}fLjtzq?hx5TZ1NfiZ$!)sI+YQ%+314u0boV;K4hcnB{P{(%1772UN+HsFbIAb#f=Y{<% zS!vxaAtwvy+sNUx1zoV)3tXnHHq1`Ap=*TF`nuUNefd|&%|rS=mCP{FrG=AZR{iNB z%_Jm3csGCXR)NrGocDcfI0Ml#C2(U>7O~X)E z_PZidp;6}?a(EKg)hLJfqKeHf*;r8~7!bK&@b#p;;mpiPD=PC5JK0I!p|U~&Abc1- z6ZhNx`z*Y{VGR{j#?=V#GE4w8o(9oBW&>!9hk)KDl)uOAM{IoPtOS2mX?YJ(q$pm1 z^Z^riL{iPhJK!eyUL6Q=dQ?%rOHu$Wg_i|OB(ubm;w|q#8#3=$H>*5w%c~5 zXI~QG-+bE8`^pV!j)h#Hb>LmTD>`%;QtbbS6aZ7kpB|;QQ#sQYu ze_&pFIOrT|F0K%pq?@Vt3@>a`ycg*+Aa0w}>8#(kfYG_jK1R_*#Ptr;GfiUq0kWua zw0i6W?Mrl+L*@fTZCyO)vSB|z$9q;5+0f0i1+) z!bx_9+@){Azi zwP)Ad)<{APe`O`rfIDbJsXoS|;SDBMi>6`$Q2;ld#gzFa>dvNvPZ3^$uon*cj2t4P zm*~J6jqqYaoQcNt70D$_^bmLY^=l+s6N_`+-sU{!3obGWp{MSF$V?bG#cIBJbW zor|$tOZ$2}pxf&PZ&tIU#9y&b(e6AFCQH=U8H9pJ&?snQ( zl(CO(3`IMf;Xuq@#2Uezp&QaRtxK6AR^wVJt`|%2!)7UNpk;!Hv9eW)oAiCV6o-|f z+C|n9>0cy4T531^{2-L>!lC{Pg&ct0@x6zN$9{uBPi%b2DUNdhCFfa zJ3YgJeKui^#!jdzm!2N-sFDn>I-dtuz$9qla*WJVER07xBay>oHtJcah~=X}uTn~G z<;j+9W^7G6NMhiF6dsI7Iby6ulScpk(m>bmI}P+5=wz5jC&Q)u0-XfV@h#Fn8?#t2 z_cOOkZOW`cZR6a#q>hf4OdP#L+GwLIbG7`^$*+-ene=)+X}w?{T2if>@7w19Mo!qys zo>a?Lasf+vYBJ87ohz8Yuit;7;GDd^^};WK!4H1L?7nq7yD!fDAyWI^ z^DyZ|zfCjG?;TPJyP0#1gtP8_Q@EE5y13}yr;-Z`IeBl;BPoLWNDIDBTHX3rO@mv% z*EG1a#pdV0749UtX>jLez+EEw?Y-r_U7PU-{TN;w&QF5-z-ezU<|dE5P1@T9)7u*H zOH9q&!bxqzdrNAoJ`h|wHZOw0+$fIwtr&`^0Ni^p#AIga#sKZ~+B%q`M1D3D`fxz| z4Y1ONtX01eXlOl#Cn2$%pE2Y_lN~vv?##*%tb@Qi<}7~Pds6T!h3Ic36K_V+UE^H2 z2Wx)9T@hn2{QxnB)9DG8%ePA@3#@Fr{$#s$eqJND$}B4hZ`LaIWwIM9yKT!&e5J5485Ff#jAf15dVt@(VlY`k_A3x*eF z0-IkWaj)LPcHZ6xO4++mQrvVtUzH>Gg_$u|=~)-dk9&KKtDVixqjwc3fwkwWPxa6f z24+fVkfEVX5e7<+dM|3*+~m5Z5>C*X7dEl+Ds$6h$qG_xWJ5!G$h;j&=5<;$qk!2WutjZCF;95<2=+cYXbKUp~J&uKzM7rfc$k!U5|6t zXK7MtBofzaF&vtNXE?m&1t#MfoevO*DVgidvl~F1OVfc2qXDnQ0Jf7x17351gFZoz z{3ISN)g?A0%N{tI-EoYmK==WH11k{W#3Ph=4o5-qaWEk`N7KPj$Xv+0FV!v;pL%uG zTwT4G&ia^pPOp#pI^-mI=@t62n00~2jbx5C-g;JS_|$Vos!6kQUdBl$J7C^(iYsS7 zbnJId-hE^%bBl{*KKu_%OnLtn6Ur7NFT16c7BYu63cBdtA6DK-gL!d?xK+)QAkr2s z;N8u_d`yuM&rGALvQMgz`v|wI8q@pEoL-hZ$J*Cc+rHUWicf5*Ltd^+D>Qt7!i5Y{ zg*U25X8D-7^0$__a+!pco@ilCwn|?LxZ7rc%SZs1%24S|N12sjkk#sU$uqfVqDv<& zQOXc-?;7d!{@DC7% zK{_`jfm1VTPkrFjxpK2oIj5AGqVn+ipX>rvDOKyMFhJ34v?&^e4Q$j+HNtG1%~Y#~ zf@|A`t2>QTaBVpWHWiwnZbp*KW@eI1+!8J9K;@0h=wjPU=jaJ5jPVmWRi}1W-A5`$ z)SoGta^vtO+jMems#Kdzk!tg6WPAjmUv?6~EDPD;)nq(GvOO4m8h=DjR0n;mOCtpj zTOpKa+g*-_y~Ir1CcR-qTk?h3?Nf@x={P3$A}c)-U8Y^sg$0u_aQ0|Wf++5=_oSi8 zV*4}ojyBVG2q$53M~$Xap>Li|Eb~}Xuw6=rl#~+}PDwhb3mf27PptGKI$_IM6(&q zuFm;ws#3S;!`2xBTid(g$F%8^o9^?%+b3p$i(%r~U7B~bP(L7d!og_M;RRB9+*s>G z(g6!@ohfvm91N9;gf=Zo3<*ciM&l8?o6?qu7xIIPErrY-laa~;vtqa%&re3mwfD`C z&B7aUHk{hBO!BlvW=T6Ls;qVxNPxR?U3N{)p2kW}n$tht#sPPJ+S7|zYT!l}+TRvF zFPZ}NSI9srCY0%cnNBt;G<(9!qjN)M*SO>qDFP+jaK#C=EJxtL!wnab3hs1UC(e|D zkP-ZI1_8=+w8xa@AJFGyIvc^buwnai6DQHzQrLs1Xf%blUQGsQSgKs`y7&mEX2iN6 zS*7+ckg!CRJ|?(tfjEAbY3MSYOf|R-*>$%8n zs4*noDv*YMzo>|kYe(x|bKiqgyx3>32LdXPkdW}`noB~gHv zf#U_K$i;;~c(&8258)RI;TN%mgbV%KlIO$=xQ1ry1C==o`nMxYiDk)#=~QwdT&^$-T@0JZqLF(R+;vVyd5I+ zNw~$_tuv6Cu793Vfu)kiTF%qwH-TZNc4mkvt_Q z$pLbFlBR2ScH7NjbGEnMDY~0m;LQpZl%by%DOOY3Rz`7md^H(HpIt|B%hn;84W>ws zUA=BH1Aeo^Y?RQ};_E{wYx&1UDaPa}^fRe$`A1gXQcINgh&K%^%7B)AfKg^5$Qx;<&YClzG1Dr$`))rOPL0pHo zYy3Sl|d9D~q zO7A5_DZOnL%TLNcyo|b?nP6koTOZAwOi_X1XMpc&;lv_?(6I#II#SU%rg>0JG0Q#0 z+JZgzgOE$Wfj>tPF%E`mKL%F4^3zF8$)1=%;~>5|Jf9FjP-btSvor|2cR!(T5yIDz zHFOs6e@5|GMplX*}Z zTi4QZc?r{F64n3o{2y`yKV1Hgu-0g}`9DJV?=kcY=4_9 z9d?QiO0{vjEFIh@c95N=dZti!t0o07*820It_rnMo zXJPd(GkBP!T zyI!y=l93dV=~W-wGUrI6-fkE1Jt>prp<+3m#zf%C_##EYL(f?4*SoNBj#5J!!@cgr zKxmd9&#o#4O1Cfyask~v_|b)uVk`?Nq4*Xk;Wc%((eCLxBb};guc7`>o)dKKmi4@~ zMDj590hcxDT_p3Q{4C5w_YY3kXpXWJ__qaNK$?{v{8$n{GWyhSd;7Z|4rNzPRcV>G zGG{X^KZsp!jYHnX!W%(H?lEHzO<9s z1TQ7(M|4jzrcU=G#UxO#>j@mv^TBX1wcL`8h)gB>lZ>3?d=}{-eP4awjJQK3p~7+( zpg|$jWDKkG0dRAj;WbA8P9l1KW5g;%QHcd$NZjDg7KO->@ntN`42C@q#z}#DMQni) zDN-gLAlhQcBFJfk6y(?A7|_jceh(5zipQp7NvDr0BD6f_H3J?(uZf9rYK&@^k}++{ zhNIXU0E*pH;%Jt5c2KH2DMElt>&+2n4GuGM{@(arAR(X1_gbmJc?%ypGI>%UKBf49+i%(HYQlr>~+9Fjd0^40i47mxt|l zz)QDZAG~R|QM?yc8lFzvU~0EG0=^Yk=mgZNDfRakdEvHFeB5iq55J!{juT61lVC~K zRqzR|ui6=#NfeelYyxA!BwB-&61IFP-=*Qc7_0dDql)I+l_gQ3gdN%El5=mwrr%D~H~ zoFYKvsMcSj&l7s*0!gs*=wZ+AVLUe9fW=O!QfZ7IA_+>T$FE{|sj@xVc?86TeG$pJ z5_oozWG$xJ_}~VDwj$L|NDY~xVD3b4;gTsKT^B1b(b<^{yt#E6RF3NjEKLlr5=w~$ zvtOfE^Z(7RCIPALqzYjXGy!Zf@RqQL#>M&Lsy1-JVTJJBf<==K*k}Iw^a083;ogr} zy%1Q0#C(D6p2~{Us)$=byuf}M&m>}mrr|sue~d;B9<7Jf5k+lPMxz^S)rLIv1{lPx5w{}-xLa26ZAC{6qH+LLF#L0PSM}6R^-jseuXt*hPaKY4mCR2 zefR!YyQd+ACJx19f(;(npn)!-@ib5mNGcEV2CnlB!b9g*t=7#;i-JOkS50kbiF~fur$JZ9t_bswJ(3be7juN1ehOVOJ zblhzfNS%Fl{K_d~U&A)VyK{S0?rqOjzO+&g?+4MtE?g0 z)oPFWpWk2pcgp?lQ~gwG!T)qV&d!7XiSWFA48Hq6{PoXq)B{eS+#O%NU`vTq!=^`B zBa|_Xdax^=vBUhOP2K?<;xfLXZ#@3 zEou3Cp?o=j7uQHf9Ts9lD7hGp&xgJO^ah51y6j{hPcg+XbC3@2>9*ZjDd1}`Dg1X_ zEd~D_hwyh9xR~;WTl3GC9j+^@X4f17DCihBJH>jg7%fH2kN zNu$*{Yk9glMK#K-RgwcUHaRd+xC2-xA#0$AUc4eg8w~Y0SW`T?J+wq_hEgE6f;_^i zpk7f0B0nH{sdj|brva2$Kbmo!P-km_jH8XuJr@!|6^#xREb`nrW#WO1(o%$&Q5gWDNlr29gaJ_fb&+36YWpx1|H{0)o3?w ztTxx0MVwqy&bBTJw%meEQP6M;8lqs+C^+wL6z~Z4MV&2Cr|vdxih`P3uq_IzZb4WP zC7~_}cUD{!P~L5K>IfEqTSc(?&{;o}qlD%#R8*Bkl~j>LUbvkqlIRPYsUnHMa4S_L zQ5ZH-MG|x2W~xZyF07}DB=*8usz~Fnnl6+02-EloB|^e9LPCiV10hwhChs~QBlnc> zLWbgC(S|{?#0^Lz##sh+8cg2*S65MQKt8`5v~o6rcZSRWH%mw>H%OH41HP}|^v6}5 z0BAs$zaWOMAs~uCK6B{aFoWz3^QazBgc3gol}WnklJ6Y(N+^ze;e1-ao1=UvLfdhp zHZ|hX3YPZ9qbOa5mq+=qKXFRL?aZ{ShMp{LN@(HEyW;7XopMehayxb+say+PCqCG? zjY-&PPUW;AGAS2-kRh#qI)mXS4-+AXR^|^aYoCu&} znNP~Br%C!@C<$f8gDtBY&$G*Tb)gEZfDa_}H7Zm}a1+5_@K3W;ho98bsqE|7+pqN= zGIbK#{Gg4~Z?{dGyLOwz=k0dU$Dpc5Z5ghXsQl*W!v=>QU3q?lK{lt)YbdM zry9_abFKKel6xsiNplc*N|#m>*v;o?3hc^rlm$*@pT5AZVyFz9Nx51B>0RJa9t1(n zKd~GI0`w%=PX{8u79sGWK3kRG0fpydE_FG7t;_z!mf$Z2yoiwKtE_YkS-oW_8hmqe zc%dnL^EiP*a_AHU<9aq(uuEh0k+g-@QQ&KjBJ6DE(}C&brYjM zDPC4#!!S`gJ==Ztm;IC7cY8r~t7;UWUHj?o_iUo2zH)*wRk&`wa_TYy!kn2T-l@pM z=DxXb!SXXAW2@AR*!C-TMmh3wB^mcvccHu`EEWpiSP_LyEz|J&pQ1UvYr`s8aerf^ z8FvNYDA5+Qg{AcHIG50p)C=Ct6&T~2;CL3x_^2r3L#2q$0o^g9uSg`8u^GjIU_M4x zr${^$mk)UnG`t^>O9zIT;n-im;y_bR++DH%%W0rD^vbNO2~>8lAJXU;kxmm9?>pPX ze%J%*oQJ*fMamqEPYo%-teV<6R`uymO)1aRpSFdd#rTAB<4xH=PGE?__SwV@X-mI4 zlOWmPmRMOy&%a@AJg#CZjPgv@zSt?+*by>frK@4Vq87li_>i=PYM(8P({EH1L;7sMax|`6MvZ9*da9@) zi#Ah5Te7H;Dr(B2tyIyrENZ5TNP9$O+vzfek1&mpP-7&Gl2G9!)JU1LEm@O;E25PX zD0mm!vneSsbUUvr5z83W9i59vbBQfN)0l7;w^w>Y4tk3q)SQ9ve)CHx{_( zH)N-RJ1!7*5%?6s?kI3`1s+B88`Uv-ML@nm5I9u?hEYRl2S=hCiys7p!c+hovZj^T zFLu5e!_pzww}%TMFs_l|Tth zu}qP}IXgwv@8b*Z6Wq@UDH8e3hCG<;Cpf1FF!2p^Md1+3>SI}J-egvBsKKG(HR}rj9{O`>kh9O6OZ+Zqf>T@>$Yn7 z!Kd_%FU&S-_LG3FI2-D(4vtI(JnZ*=6Y%Kh$&0|mHL9wHQct6jb%4^;)BqGiH+Mgs z|1)<#ImKJQ@_ssf;Q0WXmYh=!qHlV7b8t*A=xm@a^MP`T8(Bz}AnbfibkCbwK0R`Z z8^7}Y;XuOq1U7%IoZ|X#;6Tiq(C_NT;84DT;i~=W6#Dcx2997Re-+k5x`+P;km2#; z&E_)rd)3|I;(N_|pI(jQi0piPqnb{@*%x=#b3^AXDC^?LMrbGFXy;MGFXU6o1cisjtXOAHqt^sdKo4`rDAoYd)I&}5cu&fztO z3=zyIDzjk$y!n#ppg*9%35RGe5sTifc=nhTURR|aFu4=keAdgX$hWgiq0rP!cENGW zG4=sA*TI+*e4tY(caD8Eque(-zYS*;Eid*!57vXN;2VyREEFbx0x}p~1SIYwcF@0Q z=fkOd*!RZQqla3>1$P~Sp!q|Bd^3O6Ccr}6Ae+^018fr8vV~2x3x#>}QZ|CFDsm%7 ztvlCJFx8n~vAUSOU?puYnC?HTcU!ZW*41B(b&^|F_B-nObcJO#_URt-mG?8H&~nxIp88pu{0x{fl=-=vp`5uJOqKpZb1}5~p86@p z{zCK3o9%q{zSb5urEd69JN&2}UQ#>!sMh@*t96_6l({4B{M&ec=nwJ+?j%=+TL?-)tULM1iYJA`ik2>{y1Dd< zE3oD#KY6~pG9_T(uV=*EZ@|TzW2y$F%G!y71YMIIRj3{vuKija1p(JU_uvGQeb8($ zq-O^Tsxj)X3PYnFWr>hAudr-cS@5k=PE1lcXrnL6zzOvJB8vIdk&H#MRC>Q)KGhnI zi$8>wV3kBkOsDEaol_KbH;(w-c|DFl z`kqEY3B8QPD>bS6ny@}B$KsWmZkF?8!B6yrh9DN#K;O0J7A=OYhDtn4l=j)iwR*b&QP;XW}_O2O5tVqlLO!8-GnEHFS zOI^y6^m-sIn@UvuJ`72jIG6-onwIkaG|+#PWvSPe)Ur198A{MzuGg2>08%5g*6>=A zs;dIXLR!o0vnRU~AQ|?bUQ#WsH4Ml&lsVg;WSbw|FN89!h9AVH)8C*Un@LN5Pz+{_L-fyqjmXQx|w`xnKp)HKyu8-V5_X5vw>zR4SLU31>!b zm-Qel2gjpGcywXMH{kZ9-85ts{o&yjjg57 z+9(I7gU`PL*!ZBlJ=j|Sb_7qdUjgvuUEpq(gFQ~`cpJF0u0Hh$aOY!yiBh=PIp$Ml z$OZuWriG0k>nYq>sSxvQ zOO`Ywd9){ac>51h=bzqrj5+onm8~t;{-aWoM= zBGT5a*w!Ae$l7Bo*hlVH84~Q17?w>U4o2Na>yJn4k4Ni|N9&J&&)i?x<{xPz57)*6 zW0t23JoLvD2dk0h^NElgL@AR@$i6F?Uj3=fR$lIF`N9^RM(N zCiW9Y0-Sugl>?DLvLN&I?x5fEdnF>1mp_%!x%^#x72iW=aB{aTZO9-OmeXCp; zSjogyQZwXWOo`}t#^)^$zLN2|?ZH?wKAW&eJYOPQo{^{J0bDXZH$9+B#^=ZbykvYf zkdnj=wh;MI{Hmd@Zy?=r0K6CnvAy%k-JrEdBAjXuyk@OB4<)k`)TZxYuZ~Hmn9GV$XDsD z;E&{{6UUCR-_-GBA{%Y1ukt`MN~nX+Op^yBr4gS_lS{ZRB`Hb)vxLvc?s*(Cw4>hW0cZ0A#Aqc4OpUM+FElE9GhEnedC#_%h+Sg3~mc)(kyq zjcgk7-b@;c4nK@1N&gB%1JH2LrgB;@M1TzKQyI~G)NZRaOy!)>S}1U$d?cSG^&K_u zG$nG{88iv9XP}yl0GBlzH40|?Hl!|?r-A6>&FSrniFDMMQ-Rd)7BLapB|tZ8bhX=O zgRXdZ9p6lq*X$IXY{_13c(WmGIXfH59_uWj3Qn*3eKtcBCV>MC6Crc~R4>R;H^Fpp zIT<1g{C^P~?m8XJ$YznMP|+!*F{7?CRv>bslaO`+nTK+3lP#E(&H@)jiIwjf2l70^_5Cqk6MV9bnaB%d04xS%&_g+4&TY5zb0)olx4D_~2xnYz~pH<%0 zoT62#8rWlhoL+*sbasJNAPDXR#DIi65eB#;27fV!f&CDlpM#i8T0C@UKuI6LO8SE{ z$};8dpfo!;BlQmcdNtKGC0$ho2{mLzwg$YnMzOcLvtW(I?rF9BcbS9HaGtfvEZxN| zi17$sKRZ79@!(Abp;BxREBhEgFJx&XgFs94SX+W4)S?HFZ+a`PL%zCiE2N(Bd44Zae6 zrc!^4^UtbTj;aP*rLzkRw$qQQb9WL=j3!(#-lg z)TGMqW|~=l6qu7|cf?%oij(r#)0N;~<&u+aC!0;R0qN`O+@*Jzh6+l$3thqSNWBxA zA5PGC0LKuTxs1*!L>`BtfjbKvP3Ra2%fYoyWerny9qbRte+VNCsp~AP6ENQ?$O=M- zq!1Fhj$^zkut_IYVMh16;Yfih;2t?WscSzMKbn1mx3uY)wD{;PhLG4GxgOj?^eyB=hvVTIX5$$g{j>~FqG^?2WkC+P1}44Q->BK z!pPzkUTR7^O>V{{^d!N(5wO@a9^Rv6$7o(X zu{Q@W*Mdn2fO58kqs~8l`tsoE-m3#12Fd|~h2?yOJ>U$l?Aur zlN8}^oGj0O+%3N|6)yWAA;6XQTcJjPzi5)h35CE~iX7DuK^J&o$XT{#7|ot*=-3Ba z3QlMsSOklwcbIh0llbuRVPr}o39$0B3%m>fN1Pf9qiaRt(>ogv%QsLyYIst-N7ao2!6hnbggyu= zeEcY+k(CVr!w8zEUW;JbK((kmB){Qu4v$`*yz1gE1=$6YA5!x19;f<+ zC-^|MQCL4L^azXYs+9D+%RUT{PQR#6BkGvhFZGFL8a~m#x_Wve6!IS`-G12nnLYAk z6zHGfUb08LQ_&qaj-#xaTn{$lkrK{aKVzJlQF4|{r*V42#|=(aMfWYkEeqs5UCJZ# z70aWNoszc++!796b${49>Fz&=d+Nb2lu`6e^or;0k#~Uz+otDSYFQ{_ z#go3y&}Q^qyl!*rD!6nlw*6F(M2GVCU@5x+m%r83*uG*gh2e6pxKF_zE)qvaAVuZ* zH^AF&u+rZ+=lDL^>#?eqrKt=9Ejf#(Wv~r6w}J;ul2wi@CdsoR56`N;kJ2~)UDVo; zqCu|ep>GQUsc>_$!F6{(m=spc+s7rQ?vh%{y^&ro;A^7~fxWe!gPQ#-pIU*20~#;JDGc#aV zP0+=6CgHzR=en$x{*~v4D~D@|nkDctk{8mNeU)-4mqdamNBe@Y8zPk2_?C<+&Ydn~ ztB{0hNRqY)rP*UaJy=H-uST332Zqs#<^706XG3x}t0<6^9jWzp0;{jrB%xDt)J&r$ zDwqF=8bvj9<;&?kO`tV`LOI;J2i&=opDX0g>ykN-3uaz+j>9|>^UgMMY9#ah>FtwzEC{}lgJjofR>0V!v= zGOq3T45Slj3d!Vr1y^TPye2y*Mk%(IGq&?&CQTNEj*&;GwuN2=k&P$NtIWQ`>kn6E zG%19DuQEd8e0l$UE;XWFul!?8h@1$V?3HKL7wrF)#@F3=GPoo2k9qbVtte`__8<6p zW&iQT*?%a)@wtF)*EpW9$ADw+YIZSBcY+_$90EkyAJh0Wcm+vUli=YW@W*%OqpSKj zJ%7Bi_gL9`tn58j_8ym5XOuDQEVUCDap3qZQApxe8FaKvPfGttVJkBL+f`m@#ybh5(GsA)E}n6^Z8g zHP>6qJ45Q_D(L!9#-`P5&&J)!EREANz6m^cYFy_v_)!yAnl-xK+fO>~!_92sn|_?k ze?NcuJrSt^S@n=kjaLO9GvLr&t5#s-&}y*mYR6D7M@psBG>QM9-+XO`ZEvHLe5+O? zt5tR1HSz!{w{m*ZjJ&;}adR^X8_>?Ers!Zbm`rs!M9m0hYci24cr*@p5`~6+8F7G^CZhqDJrC{N@ot$EY7hEr! zRpWZuDVg*B#Dh@u#oBnn2Y=;BoTn9ME;L9IOSS7z2u90GwHJ$?y)y!6xbW%>X^!R8DS@f*A)rFrV|<^X5!xHCLMpa!Dw>D zvFORJbevwsAn9@?Q~TO}1%0KNP&XTa*sL7mfW?lcL!lu7rhS1G;U)eQZ8PGl+4vGI z#u31oFF(X}&6)MG<;q%rR3$>GN=7Y%7-TuMWaR9wDbFn=Q8EeJNeDS|+z@}**GTGy)sOipe>;Sv1jmuOzt ziCa@q^S`T@6Ns}V{$8uf>9TK@c%igrNxlcIoehoR>Sd^^np5}8%t6c#R-%)*j#z&M zDx~OiRXO=O13u{(*d^{`p?<6~dcqGyZug)f@w#chCzj^CTFF^5-mS6^S5_)+JLrO* zbn&ps|Ip-!lt(#_T-J+QRrb6jU)kWd2U#+adAN1^ud04t;)a#wish6b)t2KO$mPVX_#HCP-v%Ba9C{d9aOnXfSV+F<6v zOtq$PU4Z5}$$6sp(rqry>c?S|Y&mr~$~DT&dv(ohDCkSxqic1}VrN$Sxw+D-SGiC9 z{x_JOy}{(Wc>$#NzgFJ+U$fn6w%zx?Xme}z{`cj*{}IXfT)#JipMclK$uRhFbTj=6 z0YESR;NQMGP0~M-VRBPXdRLG0&0(mPy-_bsu7iKa$e@8!KfD&deRnpkFJ4h6IGH8= z;Q2Q%lQ<0?PRDR_Nu%%1FXO?G!AK$B_tMSgr=u4q!Lw%cZM#J;N%Uy+^5|rL<7ae{ zNDvk1P)5%>Lhj#>&yv+kNT?4B`KlHv4i5%LAN)) zLP$I5s19@9Jv=^m79jGxmG*q^RUk7bLvLMZg6pfR8F}iWVp^>xzCYW0i5`kU$8eqh zkrhb@Q6$oS+WQ5m3$=xnNGSy>+`VeGTt@vXS^*2+REp3;NOx~%Wq#?Doud=S=vDk{ z=QqnHUp&Ney0GgeHPYz~8{}I-j1UoTv@sc?iwQI++Q;~Ya}<>!2{gT$O*rmu2cjH9cH(SS6odB zM<-ZOg_P@Xz2<)(KXTOTl`-j5zrJmXGRr<)SR8N5sVM4sO z^x^J3OGaWOMr;Yx02uk$3*Gt~Lv2;X%qgEq5n=!&8R&+}B<{WNx6T6_G1vB1DNBN2 z4J*Sp-$&4h(1Xx>nvutP92yxRCI-LJ>rmAaT&Z(`GjOL^EuaC*0Z9FeVG>MZc}Lss zM7a5rK}tLW`D_XT&^00?C&S)Uc>Rb5feF{h;~az$_InIw zFdI+gT4k$56xBz;-wkq3!2cIv2Xt|spI@85Y1TKox@69W2KMkfq)nZ#JgJ!#guc|o zjLUx!{HY38C;m%>lt9`u>p^#1gO>2K+E}84jo-wZp_x(8Lfx1vboklLWFQ`b{k1F8 z8Q+;yo$X#^wyNg`YRv5?4BY(|%5S??U4xOV2^p=w9^;Fr7S&z2O4 z;kYxzHbFDH%Cl3_g^F`f)FCQ-tOOBgNM)3#-#SVi8%F-BF0feJU*%6M@aL~`r#8R# z@=^pLGetU6=*=X~B`Xe$Q7b>{88u`B!W7W(yK>nbhVlwSwr7TzWZ6=&o*J_Q<8R>5 zD0ys5$#qmX7Z1lXMhNc3v#U#kKaukEGEVWX*Ntc6OAi;)ERt2Nq-7O5MF>pt&8i{9 zC}9P_E2;OC&j>)3U8~?rb_d0;Dyib-ldQk=iCcP^!s5l>X*+B$)3{xJPH|YpX0&k% zcl|%F@UlF^+cTXS95n)sG&VqPMR&fQ)M}slme5Vt4@{=)%oSApFgPcMZgM{^6hRZQ@37u-0Wiks(D z-V{tBxEbZl1hLQ^i(^7_m3#Mso#5W1{yjPY=(@D=818-cd9c3zTNU#)?p4+})UKGn zYIWDcgm(>RTUSK)_l_m*JLw)z&SL$O$mpZ21<5|(je1U#$G?kJ-%e zxzuE-y;z9j@_j$<;icXP9zilJ8?wP68j~6g&e}BTCuuS|vjHS>#N6V0 zHgQShmv7>Csg3>>RDhS5!hkvEuFKx*`%_f46etW%Sx@HN5uuoQ z&v38O_E~|Whx|hQCajXo?6O921FB}8CUfhHYRa8}XK+0*EAn$q=c-=L%%^i*eW-4z z@XgZGc{B-`uIhZ5v6~%wXE>B|Z>)eqsCv)tU9(}JWn4d-Rt?cU(=m5@)q)2`{|pU= zp}3VdXSk~85S^&(HdB&0aS%=EO_EYfOmV(UYxK0c!7C$`OBCqJP~4$bkc>KI&`5*) z*(MW3Wt5y}u*>jWcz_{J*!q&Jl}y}^G5I@~y^_I90S!-)Iq2cu$8dK8(4$c?&E4>~}6B%v_ z)yMSg-3uxl>DqXH<5*4ZiL<68^E*FuwB?)V@fUXvxwn@0KZy!zyv11*XnW8Pb|86r zJoiWnOgq&Nd@gzVm)&||ULVMJ&`gIFh2HVm^}e&WI@10zN7}q|Y9T_tgOh5Rc8s&i zIF3SJ-$9Vq-L*#{Yshpq6SIbp+>>D)E?0$(Q*`z{kkyC|fd72VHv&B==^mlr#3 z-k|j#1%o~wUk5{AZ9^F)oCG)|VH~M;;esLIdkJ3lr7srIIjZznFcM6}WBU}Wp^7Z) zq*XP-bnhBYURZWX|1QggsVXd#$ZcDC>!Ddx0@=y+E}6~-moXZXl1n!o7b2?rTU)6i zBA*i`0D8WmHD;Pzvazip=;BF1CmH?t7WM#Yz@m;kB&0o8dft_>CJhI(hmV40@UNf| zXnm<>(}t-T*8+mC<({??G+{!d#ah*}t-=ZFTJgX|v}U2g6j&)JSY<=^dJhE67R{=S zQ^lz#uV?hk+7&ZeA?%g!Si+He4%#XUbZLgGz%!7vWUzumgu9R+ zzRA>BT_@Bn9`tC>JRM6+YKi%$aI4v-PJ~M>+sB2V9~Bu_(+a_6h?iv}1hqpcG(G74 zr|kds?4EHPe2l2yX52$5sfdbjnY(+K1`~K0zwOd@B%jBR^qSZL8T9Hbk=~9(%0fqv zab(dM2_>ko&5#wiVFp7O9!|P>E}vh;WVSAcX8<1H48j^DF`5$LhPu2uyD%jwJ#HL$6xrMVFMMJbRjf1&bNT-ncw-Eq{5G-nse;g+6O z)I^_N5&jAC-?Dl-C6)`fmT`K6+!(Gby_h)jOoFQ*ma)3a%2`61d&|yq;nptpE4~^` z&Vm`@7{j)zC-q>~2p(=Ici(w-(Yp3f)E+jP&1R=bwL?G9pg3$-W+7LlzT!5Yc4gR?b_@is!Pd^DcenOc~sFCH5>X_J$J$B%<%Bsa4p zIHY;v8@qNodOI6_&MG~})tNGN=@F< zas)$*Y4rZXw_y&~PgYIBL>sRibo9&GK$c_1Ay|u$IZ?VBOn)aWnA!OxM${^eARwz@ zll2c1xwVbe|1Rms4qdB6Jt+Xr>qa-z~2ZJ?h?Wu~2$vmre#10wS zBg;pt#(|xcnleZ^rsKuW&ySv1#x{#mhhLubNMBMR_`lu%pV18K7a!99ztL(no3{Ud z)M&MvEC2s5#s7b8V;}w}{Qo7%V9?D**mC{;*^Qaah;7G5-r02Wpa}c;9zs z>=}bPlW=-9B42N^1{eqUaD#lFoPDr!z)(*IL&Uq|E3(Zhd%^c2P7K@t(0H3Jtaw&2 zQ#^}De4o7>(?xm)g!OFirvsRuOHw+>o+qQLONB7S(x|O%0=cuMl286~^0WR+j4I5e zM46PPPLaB*T3IDMIXK*VeJtCP4WZLFcWl>;wWXIw#;_+6e`25^(o3NXMY!ZH5xc<( z_7z&mj_M99?(QEQ!VDiAKRMBa<=$9!-A_y}yLMOd5Zx3}|8I}~ zHNBa>sh@oC_+Mdjb2AhFtF^VclK)rnzdl|3uT_Yz)dgjBL0Mf;zKjrG_B{l}Z!5?b z3;vndUlhv=4uB_IIvx(_>0vr%D~{`gWML8G8|fM5c#6QA$*9Iw zrpD_`jn~fbs9+-#w5&e~rVWl9*)emftIPlvYkg2;lZar;9p_)c2*ah{7oua}JM z!r!h@%;~IEpH!;TfYan$MllnQ1S3lGBu(Ppuj!j+6#OfQf}Nn@e#b}2ZhunaUsAHU zeJ3NfTUHs?YaqWrU<^&o6l*@QxN zgst}KXKYoG&d^p=ngNJ5|DDhk6j|x{SiZi(Mfz%j9+%@34pRgwH$t@`C!{Y4-Ky~g zs;nLd%{SPoe3w1r2Vl9RHQbeP?{~BkBh`R@%%v(tZE>Tf12&1%pGKCX-%Pv8f(xV` zey0REAf{8BDpm32Br&i>+>ELLf|UoCxgd3ENWM3^fs+y@<1~SD*0GY4Po^jp^|(f9 zvyXrWD07@&zz{`U6A)06^i7g!P4TF~OyAdIfi)n;%flsJs|+Y;Ie{d)XZ<(`!(L?rfO0c*rO4|;_}x1sv9-dMvdmHwpaWDBiqVP3Y#$`<8iYg*ZwdD&W4wpL!Y zO)J}GUbeQCt(})`%gVN;vzZq6B6r|SUx#wTEE0Lhx>e@TmpRPI9QiUwIhmWj%*~w4 zEnntVPUcNt=FObUZC~bgPUbCN<}ICBnscBzjkI+5Jsze^)avsI8vm!3)yoDj0kqa= zd>e;B1!(+RAmA$TeKX#q-VG;_2A&`Bte%nVM;DfIyM#A7>q1KBs^%sx+TTr8#XO2%6M&^Se!AWL8t3kSoKto>dEZmkSA%iNx`*u4?1$?4 zlw5?AOjF1K#I~RMwtblQEkd`woNvILn|a@W8MpGj0q@<+`v$DGo%anm>z4kO$CGSE zH1#kdoBL#PL@Gy=lcT9}G;?yaRE}0oj!l(gGbcw||??3;X_n!vv4*0pH_4RvC%?FxH{tgJGz2FCg&N>>g+;IX#xq6FPy~TVv0hxhU3+u~|1q*f?te#2 z#M5Bze{(8QJzuP%I~v;Jz%xFK8I^XA)Uu;^SiiVe&h1@rz-nnVXLEb^QI=3Vt-b#e z2A^gLp-Vr-ZwHrGml&e{6z(=K$4_6poNA~B%QcD=CBVo^H><&e;D6wsT#}NsDQRJ$dH)E+dGMAu*7UCU%f`ngPE(ggY9s>#8XtnXAm=d* z3#TPx@+PzGQO_qSf#v?X`J4YEYI}a&_IzY}Rav}+fJ?i!)3)pNh#f`i%u1%`!J3W; zBVDNlgs|~nUci*{UsQhcL#YzIb(~&3F+{1AbPA zxfijrYOu-2fABjs{1B;pah)M#67C1MnO$Eb80r$!FeK5SC&I&ss-b3k>iKvH@QEHy zoC@_UCnA`>B|mt;Lr}<1jo%32#ZC-=W3?AX+kBKMAcrndpkOo8?1VLZz7YoS9S6rr z`Fe{73Yw+i;1BUEKThH5I>GxJ$Nc-2oi54ER1Q>zNvBiOMi@tTh;YXjd_jj!R|pf7 zJ1Wi{w(ab#opK4CO#QPgK*utXEA0%sgNXu`NbIfV9-BOLp zc;Mxdi@5-6{hUZs##%I%_RSy$2BK|8XgSd}SFW1dsxa>ou?h0Ft2`xMir8cSgfqg8 z^i~f(eZ>L9qp@HF`5oZ{X~+9* z|M^cZjt_n*=qHzkp3{+n_G7%zUfnEi4L@gGAVb zoEgL|6v0^rM1;RK;XK0IdAmheT%r*0rDjM8f+aj4>-6zv2UunecEf|g*g zw`|;34qjq}_!w+#)B-3k1Ec({O_2i@#^4eS->VX(aQXcRV~_zFoq&o$wj%LZUf;}} zAj2VB5}|IgS}ut$I&62>dXr~kHoOD{7ciIRJ&}s5j?8VEYnMU8txtldLzn(W8Pr=` z=b<~1({&{z>Uef3t z4^guzco)(Z2uPEJ&AgM1Pg2C*G0HqRoJ@{6o;1;Wj zl9CCP@=o&i?~M9jw1xMm%n?_UhoFpf?_8Wwpqa!2yf~NS4n#o*ACzZk39t0sgvCT* zPsQV|ocNoRx*m_dnJHLw(x;DZL>>47n*4c{ z7-SJ71H31SQ`?9ppw5!KQ@oUWgzKdsG5nGF5U>#%tHDyb@pacN{LuXBlmyy|3g{}b zS5vZ4Uep61c;Tz+_Bae-!-&v7cgr( z5WUz{nb#FFT?VDM(nLf_J5d^JlX^k~JnRaQM+@4!T6d93twk-cqR7)9*0U4GW)xvE z*Cs-4+I3v{#Dfz3lYO;wOaLAP(afT)$k(oEB7{y@e|n zjo@%2a)<&o{7(1%M;lHwo9WTpcAqr`BHMr>H6 zzSxU`&&GsKKwjD3KvCsydPZnSTG%kw6vlQ@4y>@}xVk|Xj`l8<5P_c*#tGZmq1j{| zP4HxtSd2kE1v);9F(R$nuI#}vy3ysa4Tf_HF2||x;v^7;O~YZLG62z%bbcV%GGq@) z8&)r?HA4)!xSG0LVsxY2W#N?K>6pYgcBCY&ixqKTg~w~ffuP9nO_Wel1xCPgiI4?Z z{#vbY-Rpsl$WIJMzj3MXu3Th22qo7$9*q8=6&NMg;w!nX3b7F{2^!K$POoHplpoFq zW#RxW=n&NOwJZIXNE5?t9wIXm#*l(?)h3?KuKImh|Acko73binidedsLClAli4Ui$ zI(8;Psu#VLb{71pZ+_|PoDLLh(WMeoIrJ z9lfrR@X5bAHJe}qVA+a!_859I@9Dyf3eT2J7ns`*bt`tOQz%3=O<%I@PafFHe3nS7i3tB(%i0F`gNxC>m^D{m95iw*j}P_r~K<> z%9DP&9;5=vdXkg(=gT?`9kPOK^pCdAALAnA@z2D{Yk_ zuc<#u`;wz}@GBj%I&gc)?N;89@5>wZT$M$h!lL*>pXCI44RH5We{K9$TQqC?wtI)UoX0JjZmqCx>Z}0kfx}B-!zNsHscruoq z4ixqCXGN<8SXUlB_4RQIzR*3#nZ^Y}8+)p^WL zs05sJh-E?1JF|NCuX6S7v~R_cB3rE2>l$#l<^w6Nqo3n&IJ-!%w3c(xcb`(h6YK)- zK{#l$BN`5+l=qO%t0SK6`RI3M(W$UxNM;+hG7b-D`4S;vGJ}fDT|-i@1$HJTVMAKc z`UaPC0_Qgro9;VcsYpd>-%Khb5!M3d(%xpV>ZiSvA2qT-f22?a7%s`u@&xaXHE1b} zs1j__1vVh9L$>|y`FP1Lcr{Btozi0cvZm&LnMPIEG+!jcNs%q zyX#+&M%A%vFXzm6;A&V)rNyzubZ!G*j1n`dOjJpFz8G4}oPy&wyqP@Zkola#b(rwr zZS^lO#0TbQXS*5+6Ap6yLF~}>Bw8hR!}gUK4)D$^6l(fLZ{Fbyb%+N7DG<=F)#?Iw z?wb2FkK`?`)XeTxICF8|&eHyKeQ1+vN9PjCE4i20g`Xcf4f{J$G3xr1f^*qhx()q^ z!k;aIFLXs;+-^k}tO!dLT%7gwT$7a^obi1rXh~~b1JY(?*7A=uYe^Fj(@r_4pM3eB zrGrH55J?EbSer;LWV4b(PN8F?@

          v)WP?m(Y1 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 literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/em-websocket-0.5.1.gem b/vendor/bundle/ruby/2.5.0/cache/em-websocket-0.5.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..e5975825b2203387fdf779f66302b620333bd2ff GIT binary patch literal 31744 zcmeEtQ;;PVO?`OXjADdATg{-Qm zjHo!3ktfUE+|}63*wvW9(i`M|moWVkHa0ep|ET}Tf32C>IaxuNSy)-vIXPL_nOQ)X zm|5A_SwM)H{&yYdf8N*4#nssP-;q45%+2loXT^VM|F87_!?yo4?!PSmf3-^#4Gkjm zq^Sx9ex+$|yTOF~eQmgRBr7=NK3}v3|C8Q!6!Hp^-maE8#?H`=KJ`%Ad4;KYr#s1T zo*Zyhk1%c|O}xw>=NzZNvt`bOzdmDzQlpRJ7bx`sXVmSVBr2B1Mw$uh;MCvS5{S?v zTqf2CX1^7r2K@$g-2In$qM4I?CWD9U=S+kF?AY&($vUZgRgx4(ge%Uq%vCsPG?Fve z5lyjk_7+C*grdY>q8O;%m}&)xKa2QE=3DMIqJ++gWnjb^a|Lvn=SH!83dd%%;73N9 zPu`A3?lRN9=AuZT2*Km1ldp+t_6m%voN%7*9RqD83X+|LOzFe(@05^hZj8xqX6K6Q z;P3dke7UKiELJhb&YLi1=2pD|-MglhGa2D(Xjto=VNh9!VW(shXrCszhkB@&Cs#C2ZD!bVE2i%s(S>b^L zT>v+Js+N9TWdAY){P;8-L`3$!lu0$!$+5`~6IVN)CT z)D&NB!Kv~yDe)h?0|qqz&g?K8r`=%2W&}X$?cxwaHp}ueTL`xnJ5ua)8y|#xI^1Y6}xfwMV2xHT87F^MNBvH7oBr@EdQ;b)J{S zdE(9dSKN4H*mgC3Om(gF_fMrE6PaLSJFs}}C`Q^(PYX8+aN^Nnz&me#Re;{=V?~SU zgp_QyvX$cv=GZs0;2JNLPr!l8*FuqZe|?3gz!ig!r%-BRE{?!%jMS4x)>CREo%csy zg(*y|he(z)4+qk;2}^c#=nlU`zbcF@8uoJf#da3z!<6*%m&dfnG2iu%t&V7N>wFJh z`v-?Rk05r_haPR)J;N@yBG`N|4)eR2lm{`BuEbqv%H<$($PWSWfl$t$SYXCTNY04= zj{w4d$Nql^_3dk)?lpj8v^)%LVP$BK>Un?mW* zJJQ@|9NsHk!773=bt%;!PHh#3rH{wM?xY#|lhrH<7e}?s9zlk$OZm9Z$P>AsxsQ2& zI|2XCnLS&muPxnM`H;{DMT0>3!L;Vdhy_L=l$UTIA8m3o5?elK6s^$cQk)cVFrSLl5i@$g zWpDZfWy$O4UFmQ(+LRI902|VnJSZdmT{%Sm+NW@Mr)$7BPs?EQHQHmlM5kwJ#NiS! zB#l24?!p<8dT8;}P?tAvF3cvTzn6{vkr- z#S?Z*7)^^Dp7MA@k}XISDeM?3S}7K!Jti0>+3eJY&x(c66<7Y%pOFYDNSmb+rV#=p zvk!G`unaKohjoV%y9yXj2$|u|`l3*{RklH7E<}1h_9sO^mQ_WHZ z(HTHqTm`O-Adbvb!tB627_|=4FyFIefVp#*C1_7DP84)Alq=h@MZ&ie&N*8KJZ4IR z6H*{dR(sM|n`nT(kY=3gSarn9M!XD?^}wd+ZePIH822TM<0E0dI2xx%3ZA!!MwkJ) z)MJ?RvVg}l8>$U`eHb71)|f6qO#t08?(p1y6HVZUWX(W9Ju^@}OqaM8wId>eZ9 zj8GXh6Oy4MQySKw_Ek?$?Fd(L?uRC(()x(<%qghc`DJHnzCc_TnFn)ZuQK`T=B#Hc?m~4Y8VjPRJWM(#ctp(9(xE!v z6C#-b1h&$9by@oeh!A8n?vHqSAM{vHW*qP?fMO7{$jI03JKD>yeNg2LxrkoowlEY4 z)GjiI0Vq}ZI?e|X(zI3fKo3H1DN<5Tyvbdp1g30M#m})*@(8)nISGWWw?lkT z6ew#Gsz{j?V%lnn4t+7TFwogE3Ni77+1=Y*5Vq4Tq8#WOJB9Qpsltfo$dg!5CATvC z+*^kbtX~p+86cHl#75(lG`aZ|!+0#E)@buKIrI zeKVTd$yPmqur|0A_J5OMycRmrX{wsBgU-2;)Zr!a#>sMd7ug3M-kcEG zLP;bP{6fvI1nC-Z;nFb*m#wG3WR0W;Lrm0ocoU_v%zmqcyoEQi5)uN#WoJSO&{*x# z>)Y7hW$w&N1Kw^^#$d%K|8TEZaD3->*MP&;vcfE z6|!lHFs49XmvEw{86L3g5%7FM;+K-_gq-aa%Y&Y0sTtOy``I@O3MUCW?(H4UfFCwX zn#~Q+=fcZFR{7D(dMJDjLb88tm8M%L^jNF`ZE5!P`lC(2^X_jbk|hpmKYpt$`3-Ag zixE`yehwOW?m;fm5MO{l+l^fc-(wrOTvVGqwvhupd+Z-V$%eUWhLb%shX7BIx${$t zbqUs~4b%?!Ly^VwU9KQ9en>!{{2F9DJ=TCOZ|S&fB3gMqDH1p&JeQxTuG86%R| z{M<;vr!$byB)M2amBSy{^z3kXd{946R-~2Lxkb*{>VDm$pPMdbLW7CZI1*Jg1S!P;xbjF z=Alst^w@lMW9J`IJZJ2+j(&$^qIK!=w@TpC)alYe@Z#2$8Tfy}JHsTWKwFr@V(+rC zeR|;)7K0iA5W)h)(He|hx6p0I$-j%FLPQXp96E=2eMP|2+0ed5MfM=8Fu~ zv#6{)LaU&6D~14JU-}0;bYyR5OfT7EG^p z2lX_#^#H@FdiKkGP$`^~I>D$!#MrIj{1dRkgS;b4!a*s?W`CdARqG~)0g~-Toi&TS z0*l3!LCXz6#IFP5#~mubvP?16C=tI$0@d>%Ni9fOcHFdOAf zpO0Fbr{%RPB1=5>M{oF$u%`i*j3s>##LpKbD$s});U8>w0hwPYc*nw$;CJtHvZ&BS zs0IUHwF#*6GT3cp=>b(BMt^wsOeh7wM4t}djPmvZ6f1+#(xX>9evZqBe?yVG z2{|M1ZP;IP*qY!+D3;DqCB7*bFIg6Kd{GNn!-Va?FdGIyYbt=)pLgXU;&bUaME@{B z=E#VS^<7pcnXN)WgzPC|>vP-V9*K1bOX)7UC18oxO2b`iN3Bm1Fl0ca@^dYC#5T*E zha}U6J(kR@x@RQ()xM9?RT=$YlutQe1E`MkzDGpdFOWmfOGc%x3;HblAyYt`1ess2 zt_6U};{n9ldv@PTbcc%s(y;|>=f_{pV?Rt7x!d)02K3xkxCTmza6PJ2G!+h74MwR| zBaXOW90@r!rUO=EE=GEnZ1pi{P3j>j6TL8t#))hHyeHL_B}QR-eyeiC<=5F@4mJhO zr(Hgt6Q{0-SI(`MN8eigNdJC8BdWts!3F(!SHu7T7%a7Nlz$(D#A02=Vq)OC1R(!qk<7lG#`WNkr~J2Z4jP!*{`Rx!U*ZZYrT;ti9YE7H)3+^iyu6ioz~ zE9!dr^*7HH*K1{##M$kN!_J{l3(m(IyGvgG;DP@|px_&HwX;TE@|z61%nc2`v~0y4 z%ZUl16E9(3eyR_I&_=8rwf%<_DPg1yI`Ue=0}&WV*go42rury{niw%OjnqN2oQD+e z)T}UbJ{Sdld^nqQJ2jyk)^bevDpCs35Mmr3lo->hy0oy@*biSxba4M4uc9?U1JK{2 zYznqnyt8{yq%UUiwp3GxhdfMyNu2&T7hHrPdwK{rhvOhr@< z&_;^X!-6Q$85{>Ox4jCGs%h^X3L+50+9QaR>3a2y^h$-F+En2&OF?9hewwQm+TSkE zesxnl=e)Bae1)-l`wz>1D zeAeTKty4F=?3HM@f@o;{<2}H&G6VQTi%f@5B|!$9z~n2vhzEyJ@MmkT&V>g-i9?h` zd}#@+Xbg)&CP%BIRK@*MXkGc9V*|qRE0ZRT@bimtX-gauf=7v0D8#z1ks4-+t#=v%a388ycv2Sm8-K35Y zTr04N%?FFI7nphOkVH8{1kQi!Wkc?LNa_4e3g$C`6h(xihU8HW8FxEf3pONLbfwZi z|FQAsAC#y$4_Jdj9ik8_wQ`Jhw9YSu21cm2Hj~Ny$&81J7@EFC`bC`C!~xNH$aZV#{br-;h}$n@@YBF60`+ zcyY!<2uq0&?h`mdpgW_JCuYWaM#e%jEV95;->}rUh-pTCiWSZZ9!}A5GUQCCVmc5c zKZ7KI(mSDLIp4UGT5z?twJ5!zAmwjB;#$paa~v+MbuK7CGoK$)>>^JLNi@s!z5c< z^!xsJya^u3o~Bl#tafoV5Cff-9@NECwlYyqwss-c`dwkR>d+$Ea|KZ-Ic&505J%2} zK<x<4NYNA;|g z-;=79U!EgCClR4TT4Y?7ILkX~&26dF58k}+A|ge*V;uX z>xA@6h}V;P$0*Cg`=-z^-<>x;ww6%zSc%&$M!ZnjGoD$HuBU*09(gcQA6&Yk)&>K~ zuKa91)qo{dW{^Vy*;L8UDKCuN>~Gg|z??op7o&9?9^tRUNSYzYauD)b0La1cAv1~L`fnOE zd>)7T(hZVw{XA$Q+B1q?h}ak!FnQ1dR_)q_3wR1h?}uq}Vpv;g|DgjQwZI&f7`x$q zOfWSYeC)M)8d#f#2?fD^X>o&h{F5!o;g5pw(wS93p8MB4Qg=wM`%A04GIK@WAH{qr4f~GGF*n2{(#6lV@0@X4OR=n;!9j zm3+i-QX>wcx)4$CTklIc+lTz#EMXrRCQ8|y%zmqC2;I=dC^%AyWiiafUxls}FVUs! z7V|WW!iXxc@WX`fOfPLn3{I(d5%qG z$}gnnV6YDgjf!#{ognOE|6t;6p<7aeB$`One}`CYh8J-wr%EU_RAmq+*@)4SuIiiw zwWd{E3XLQFvgk#W$o=Vh$?}P+x@5$$c<<1X)P18;c`{0_atEn(9RU^Lm2eWtD+}OD z)sNuUZTYC~XvB+m9fx3(EPixkqfprv6=n;<9!QBOjS&zeJ$O(IA~20!qmQzMV#Gqp z24q5IEGXjJ0)BUF!A$GQ*#35*`P_|Dn&f}|3BnM9a2V@SXZ6n+Kx(FHR|Dv63wZuL z#agiaXU*5w6|m{=(q1ifR0H%-VG=URnJb`Tp5wf<7lpc|FaH1G3U`6 zH}QfrT}5H0(1tF!BXxvjl8fdi-CPxeia?J)JXVmV&~kSp_-w_;PLAJCdtkUD-Um?r zccb#_FX56PnKKf99C*Lyk{-__?pdaJ1UbrqRlxQDN##X++!V)c&Nhel((H#!`J)XH zArfTV?we5n^fT@sUMqT0X)=jxBrA|*@jF~ITPG!l_`eDV5!@7c36HGk(;QDu{opW2 z6OQH2o8lF$q7BGhJ#Mxi%g8;#39v9s6!#d(!L=ynfcAu?Upkd{X z^at>1{R;q`L3jhQIj}!YWdyoXhglW_@wrC(BTBK6`+2j#9l69b!)(@^0x-Bk5P0wf ze4kgS28`vCeoRRI($(=Er+}wp#=g`wDJy^~@{GXmB%?XBoN*|XgGio=f=i#r8e>R6 zH~oG-T>5Un>QPDIzFqK)3#gpMHW-%_O84`5MWQ`o*hfP*Yh4sx<9SYiFGlnu6;3#i z4}4ex7oh%7y7Jo}2*xPg{yGy|F0j;l_<>!=eNN} zb7gs^R&p7%=?9!pDPStqdF;pld8$y8-T98w(M=+r_eL8%R62vB;Xnv3hV!p0-YFSC z>|eY>AWif8&sYDJ%q=$H$`wZk-n)O&r(xK*X23XWeoKVXP|P$vzzvjFLTdbixfW{h-Nu7&i-Bd>Rec#$+tKeuw&k zl{!E=Pw`b0%5`{AuH$;3r1t6+eu?nUhYv0Sc87p=rkpSK?fPH!yt?J)?Tx;v$u8%s ztvT3(Uk@?GSm9x-mmLu|UJvE-diR9imP;vuB`cj0Z@rg6`ZBM+mks~U=R>?LDXPDK zRb~x8_GBu|C-PCnY%envfPdwUAqc-jR@FJOv~yK;v2;Qn?qx)xT8DDYm8NP^Dyaa(ENgw&I*q$8afQbr>XP(eJXRi z`w~rPSu=n;V3{>p?rc^m@M~Hj69|=WBnougcY#X#WU#yBJyq~YgYG3*M%zg-Q{K`b zGt9A>+LeFAE7(`>Hnzq@-VerubrhNN3HT8gJZB=q4AS`uBk1e-ZKp@C3VyV%Sf1(9 zFdd=SZq{Vu<$#rY&}Ez_AE)p+)|y%Ii2FKg7+hBxX0?<&&~QEjK+P09V3rnXry8FL z-eEVUFVvhX7sP`q-T%Y113eH9q^c}dHEW-P?`Nz$QhoeL|3T&vM0ElZH+oe_yei;2 z;NuE;1==BqlZDoTJo^hK|kj6H2K5dCSvdhHrXUWw#5>` zNZp-S{l^jus9Gj>DrWwv_)#ay7^6pX5`v4R?o}bL>l|Hr{@*EsjF)Le^R|KEZ>YTi z)8UT}kLEp4%@G|BS&wEfL%+MP+~b?>5a?PJV6G&P^Yb6Y^z9N5L{TAMK@JwR4B2dLh|jJdf8*j9ym&51lw+RlLOCs7;oT1_+kQ&wwW zKrI=&^L~z}rm^$5VR7#+>A#`AqmwhQt1=UR8%!yCIPgG!u1j>s|7)N8Vj})`N)*{& z1f+vq12>THp9T&UDAcz$a{@Wu6eV$zBHe%AWx@kq91(wGI@TJ0cNjkc5d^H?d+0f* z-2Q-9?)yJwT7N0_Z0*bf@!sTu?@UY#Erc>h6_Z+pq;L)gBx8svh8zhZ)z}_rM;0U{ zN=m#+=@Mf7pjFyX!^K+M5_#cWgGb}Ie^W@x48BHH5LAu4a8-hzx5NgL zpxRrD)rGzc3Y9=e(ay_D5?08x62JLtWL2yk8nglMCG-8g z)As$~zxI`@z}W%($oc{z+yHYX{s3P9o>Z{FrC<_$cmk8#dNb26U6&)nhfl@jvv#T8 z`-h&bGs}J8btA`%e|Ov0OuHDF(pgS2>k66b(gch+6Jh`rp=?v_`m6)~gZqmJb1gV4 z#hw;7dN2;7s03dGe0}e6-g#Vj(o0ir`m7Zk3g5?=z;GKR6p3ubrsAYQy-Yi#m((iz zs&zqa*doyd&x<@6!IJdK?qY^C)yq<00qkL>iDEXsOca&E9Gfb8kQ_px4E}qoohb2~ zjmX03D)G6u1|kDu*WqeBy7<8#<-BBza+Rxzv(l`Sk)i5`4|M=qtW`(Q5@`4Sanj3~ z0(I$n6a#iS7u3j~S5IR%5ymzwYeo5|-n(lJS7A7ZhX&`VHf!$`2QP=*vNr^%HUy{% zJVXu7$&WDmZs`q{L2xL!6iWC8^9u9Wkb}WlrFna4%@zDj^+0jImkO4!G;UsuC0X(_ zo5P=H@g)ZMwc+c!cV}pEtMSlggSAD}f;0@3B8%}l zu*a2NQJW;b>Ms}>^KypvD}d0V2xFMat0&D&W&n>--R-`QtvYzBm%b8Iazy)sT7dp| zB%k*=?6NL^ma{Ev;Dy@ocYUT*YMeDQ^8223k;?V*RCG?cYo{aJ`j~sJUt&$5dEa^O61Qg5a2JdM=acOjy1OCt9^*d$<+CcBvgYVvXVIGy$>I7S^iPkJuP#MAb^PUKs& z`Sox`l95pG@8P&mh?>+__JL?@ogh0V~mSKd9sj_DHEnFXe<{n1xd8PcOs3YnccZSnE9LvEo2GnS1RB2q(S3W>Vr znzShnHd}78r|M3XexO!b(-RRV(s54fB+$~ zkLYvS$P~m~f#;IZvXiR?wdKDTx?j6^I$tZvVSIue2{Ua&)Cr1-T{K-!jh)>?UQeWf z$|E{WivpzadbnYl;8J!9GKzaL$h2(lf8`s~G`c?L0zH-lfhrV+nkp>9+#$z<4)4+-YA zZv>Ubsbm@p@4L>1<2O>ci7d8h7_<@>?A`v5(j~^LDr^~(o1v=9HK{eAvi@RwAn!3u z+>T(4K1Oa%F6T`+S$kFQa>Obli7mRv#7UFR**sPmO*=_TWkwC8OKfcKPm;Gu2dGug zdrO{Rjr)mZXZqG1H0HSH9ITiod&X>AS%s1(k*G3QH;Q2>)ty0`eWIlV$uPv3%k|T2 z=oB?(8snrd*EOTh5mYA|pS3D@K5)b_RUa^xd6HeO!PLXy%PRGW|YK>J%CNCrOkz-M&+wbL6LYS!? zrQOd#R*jKh=Wb)tPQ(3kCTo0S?)PY+xACQ9p|}_%kLO=oJ)W07d-?-=90{Fi53+`x zFv&vU68LHDVuPZgx+JvYlpE|L?!X&(<;bLq0yP?CrmRQ0{0%}%8DVxpbK|+j?IAT< z*VtMR#ql3v-~z4p5)D2_b7jipdUh6UJU`hu;Hj2F+J!gRE-YOj7j4WTi<~j5*m3i# zt98j&87;EA;>{qZjzqiaW-8n+O$ZaCVdhOTC=acex$kM93eCyW-nS=PU%2tp*W>h3 zAD9Zp+Fd@L?Nbh@>*V*Xj0GvJaok)c=2;C2ZfaQ4EI&Bz*>&t-?6CIjXzOymm`{uh zCgv6U>y8E$=wwlt$?>WVcGKl;BlqeONgimF2MeYRN4wY$faNv63=6?uWq>#C!@!P~ zhBn|E;N8D8hg%h%B%_4}dZfB47GRKWk_L;$ovS&i#o$8vew-wZPj9MQl~Z?j{vGr6 zcYsch2vqADxMjos(e*Dsj`N>)EFqvPaShe{FKm!j3ZsZIf5>BmxKNVwalfodvG(|a z&>e8OJTL%Zab2i#X+B!|^?>#F&*&gP+B`KV(s)xA2kkYh9PJ>UP&B%q+QUI05CBd{ z|0Q_4LF9iJ$V(ovgF&Ap072d+1Sh|MV~iUgY}GW5p}vct-A?I;J~fa!n2x&+Ka~q4 zi=|7;roX$y)^a|?8aNfLoFnm^3{owWV@gAebq|-nj%v~U>A35^9sGvwzRbQY*SW?V zR)`^cEY?-EGPlV;0xd1NMOUZ&IT14^R;A$s1^KMWQ2zTO;A->8Y?@+&EYv;#6+jmn zEfDKWd3&-Y5uHkU5mYGl+re2X(;>0vVpDD1UVEb;!VRU+;37lFLN`z6&m^m%#Dp(4fbC;Q1L5}8jkB+KQxyk%NvZpY!(h2H&hOUofl z%n>odYcu@ov_@ZxKJ-rVElGVA!;ucet?bou$8uLU*i%Wq;Z9oHxgk`aC{W9KEjMvl zjYIm~u#sM!xwmO;1A@_Om_NUf0TR8YXG;;3MGp}J7KJ1fG6SYl07m)E{anT{c?jQ4 z&AF(ACn1iMi?xfWg4mKL3S?ud>t0XxSb=r<%v5v1t-&0QPXlVXZz6n#3Gq}o#eZ1^ z+iZE2OmSy5m)_Iv)YUQjs15s3#pa3PUX3sVq4s-=El4A^fc4KzTXYO#SzSBxt~aF4 zb0*e3lgG80O$jtsg-25ujBzlf(3OIC3B=|hA9jZ-c;4w~7F_qF#!jM_6h8+tGihn$ zQDU*oM~#8oG0&&YQ#Z_sOtHbLh5c4H{kJoBp%zH7nd@0!@kbSX{^c2+17aBGyv>!?YM)^t8_i$tD#J35(9#*yZ5?1eR5g+l z+T%>^T-fB?pTr&^QWv_J0-&E>(5)jEQ7IDDCagAav? zx7=p}FgRAjAP;@mF%Rodkf+$})q}0Fcti_*=Wd>OMoH(~bjC2v6`i**Z&khGkXj`S zejsjQw0~_aUER=G8*X;}sf zyYTP)T_3k1m&B&N%-!yx$p%2znE${f*Ek^A!RY?Ee%ug{>lR~qs0BaMKFsRI{8n?S ztxa8ZhmiXf)rOth%LOQn6%@siKqxJxbJ~4=_+6hyQACP*>53QLH;DO0BsXC9RaqX&yc&G?wQ;DT_|}4BAf~nn*-ejSqzNjSypR&K44TH=K2gip z?k_$gaGw@kpq!4r`RAW^FKMvc5^V=&``K~s-@#e@FCn<2%YFH~Arkn+f9kL8yqAS0 z;JoF@4Ms4i$gkJ|b`~*Z2BHz3;|C38F0E}>tcpzIg;b34jhxj_CpB`pa2{1U<2Tge zg?s8i`zTeAp^&qP>H{NN>IS(&X`<43Fw6vbP5>RYyYQ3(NnW~*BfJ4XG-VfdpD}z96 zg4eMyeEkSrU6&?23ONs4$8l8L$P0qq5j*oV~oF?|9u-EZ+8+h$p zEP2beevhLu-8@LFrJ+;cWWE}V4GVUT!woAJgPnA5{%V>ToQbp!N9SsrXSOan zwKl`(dHzCK^QVQs*iK?GELUa`ZOjQxY8kR&`qMbgxXxao?<+bRJ;tM|oTx`r0HSKW z14-VQ;rc97)3zK_Q|mK7j^-r5)#33IkoOC(12}hM_R#a9oAp7oll$#o>Ob@iwJoax_MnKeB z!Bvtc&squIPXHQl@(^#%jOsI_ikC+Zd6_Ay)Gj0N(?Pi)*Hk=aa~dg{w!HtZ6U zLZR#Fm8!q_a^Zg}OR(WAziQNu2GWx4?qgiKvq6;bgt@|w{5NP=q+?MeEppz36Q};&MvM)4WmdC+K%e-G_4P zRN6CUU3M<)n8RiJvJ!*jzg_Jq4%C-ohG2(3osKH&(%L%>4AKBNv}!08rnpS*FTqsS z(sFITF&Bmg0bOoSyWI8UVZ`h(5U4PxGP)Gho$WJyX`(MLE+bAX^p6C~EDo&j&BfMa zstzM4abH%4VWv27O9UraU5>QyNGilN+zN$H&B>vf(+Xlv5UU>TVUmnX(9H5m4Y4z3 zT32c=Fz;7uA(l93hJG&Yu8+r6Yji91>_ym>#jC~kH7T@qV-*Zdp+)jU+U&cQs@)`` ztD*(|6P!p&!9?-6Y*`sczl&7QaaFiw3qq1qa)SatEz`-Rln}?*p8zu!+4zwoH9>@b zSKoE_`?Mek5g#LE#!amV4^BEpY6PQAuwhF$VK5V-xbcsIg|~~|`yc7gY~^t|0kI3p z3C%lvLW2UYL}GU>Ew?xB^!zksY0GNjBhyZeT#E?53+V4Z+_%PE>c!TQgza*QaJoP{ z@01?IXID1d+#zFWQd-MJA`58Qxg*_J_Kt2g)ZY%^IE>uWhsb|tV9qFsVF#wLb{?mq zMyh*@j@wNJZaOh??5+y#cg2J(WNCX%HZ$RKDy!4&MWk8T1_P8vHg#JG^yS#XGuRu$ zxFUUH?Qx}954+CNvBA#a@oJ(Ag)Bj3yoVm*Snj0o)AEPeW!rQ#6E!3#A=Ky1?Yl$( zVO-Q`>?dipL&#ne8YEB=<3BKgg|FzosB;3+J6M-FH4pj6&58fQWzXcJF_11tMxPBtm8dxE|#Pf1qtkaxP2$wCcF~jnJIMU*ZN#7=OqK!9xlG=K|i0Wb;JawhXq`o+)U}9_za(#H zeBr+1X~IR2k{nfI&E-p)9$b7kRRA#xKm{qDx_9*gaykm1A;K8BpUW z$h@oh!Ad2_RK8N5>3X>m5B-`X7KSKGW?CRrg(Z8^#Qn<`&OG5#q?FvDyrS-11(ktb z!DtcQP4aVX9otcFT$}-_C?kQBq;JtPo91#R7L1gFwo?B-on;-T7!nf`aaA7#kUQnK z_1o#(1Xpr~0*(%)rM>R3(ny#RHSSIR#cq3LU9;}Ym-41DRi|Gsf}{tq(YBew_m(e}~Pvj*Jh z|L(c|0B%ja0mIjUygy%n(-uJgkq`fupEtmNgZ4N7bl*U-8=%I?zY+QG9Y=3q3(r4- zKyn+%+l99Y%*m1ezPYgj-k@Iq8y5x@7;{-J4;?;p0Q)z(>p;#j;D!78zv(Fgxn97T z5|}S`D-mEKo3M{l@{X&!`!qq&^;A`|FhBMFZC^ug#u;3Ld7wo`g7fcZzXOpqtNiSOQk6?E4w% zt)yk9d?qdXnc;a{f`=Oty1MJN27n9yIV9@yh~g8xib5Z}&pG6c_2>3^siA?5|t z_r@x%Jm4wnD-*I1RD9E-6gb3P++G{a8j;qK#IN!ED^VJ6s>c^(+#VzK*NNot@NsYx zpeTkR0mc@hs`LlW6Yb9co)Le6j>3)BNOtG9`fAo1DI>xFA+=Gh$7z@#VSCRFMOtVb zS_R9YiL@oRqH0!%Ofo8#=c=y-1y!cvXRFRzor-FQ)1!3E;z1Ye@TJ`IK5jZz$TxF5 za~Lm$Eo?B-HHz3o+#!H)8g%f>hDA)BMe_!epr5^$Usn;wnT&gnqksQaZncg z+Z-+F41y%p#@<}nmSYApjgCSGV!C7FvF!e1REPb4d|_+H0S$3vj=Vc`7H?S-J9+R7 zL|i;XboBh=SX^QdC<4bdWx{l8z}$4<28QNj!YHsUlUg|92}iRcZtGTnvBJ zvDQSwdTu@Rjc@OobN%@JZ2$ulxEEsY3)NW!(c5bwB4Q}&D(w5LrKE2i?q9zHmqO@) zqdI5Dr!s2PW4T<>wuoxpgwW^2E`x*_TE_*^1jg)_Z#%yKNOa`R zhhA7OKzDV3)>obx_7#`U9xeQ~YC5g3QywH?v{krD)RrVI61B9!e;>c{&}^Mer{-n5 zrLr&d?8zb<*0_ezce#i#qKvqpzFL9?B`S#FUQ>qZmdpw7Ujj9UiZFLs#SFH#YW@zz zk!SAasCO#6wa-!mUXm&yPW+4N_gLKZ9R8Tl;qRA_S43ae^40FNuJi~{%R}Qm&jqjF zevDL~){t+1vWN0*0b!CV46O|ejJ(SWX*kxqn{BbAtyyR}kB{W(N_-K&Vs48s*YNEz z*42#(2HUVUP$bN(2zX`S{u)$lbd)=+{NV(^X!jJ9XSEhnDS5$VNh6XFK{PJ16~UF! z8UVdHPQ(gRn7cPLCWvfR#wb10t zu)#+kw-@8NN26s!_6+E*GX((d0M3E5raE`5)0AA|s5)-8 zSG=R;#X1?F@zV3C(QpPjn^J7N-_$>wF z6S{~KPvd~~Fm2)(MkT67TkMH9bZI)8Zu2JpYN1gRDG2v2(etg3wvMp?ym$c776)c+ zE&oe!`S>QXZm;1!F?S_+qH;^%&=D&{i|ZefbqQ;w8ZT8=!vz0aX?+ufG0VgxZPdFm zsqN}|QqBdT68=$e0%746rzn@1h%9c5CZ3)e|4u!{cA=fIm=_>oQ;VK9m7h2iibneu z#FqEp+Iy$iOr!o?xHhJm8dKZ0-A--WwmG$J+qP}ncBh*1X`kIU`I0Z$2m5UQvk%_0 z`)uXDvR1Oz^}8TR_U}o93Jy)D>`R}ly&e*>Gb&^hLt#XYc`gR{8|m|}KFy~-DzIwF z&ivfpS_Ie!2Nb}6dFc2Y=;uXbHW%7s+y|E%JnCmXtMO)xmfwcG%%o)#MVICG5c#aM zVtkcJiTc+9*9s4Zqec0-sUYj~kK|gLd%#Ao?+#t7?BQL4NSoO6Ar!TM+At!Nu-MV0 zeD_O1bx)Q@;hqR%-Z8z>%*w^{^oLFP4b9TF`fYIVjj+Dm*qev(6vBao91JDe3;?C~JV%rjOXQ3UT%&DMr+uXeQhtjO` zq*Z^=WAg-VEjK)v=)%vEw(z%77qvo@v3nJq@bCDpPbJBJ#=S4 zKm`}P7xjcL;DD8TV&GhG+;5NqUFvVg`WdlhTRwh%{^r1+Gd6&ZGLG>*oh9ypU(kk6 z?XZa+mv=CbE2}F#x@s9FFtZ6CCOWUjCpYR$AO7+Y?$z2Zmm*df5vV}&uO~^btH&Lz zRx}^5t{+r+trPp9TzkN`bJdEIz(uNiTWhh`xnjwoRWMp>m`;Ok zZ|`b<{q?(R!^-yC=N`|fUvjq3nk#tHq>F3{!EPAgcVQ^-wWxP=e|jDsCEVw2;H$`d4yOw_@8s1c zrN&ZWdBZ?{wgUx_$nh%~Xu_{df$N12VbO+YOl-zVBWvscZP1U7U^Z7^jh0oqZ7kAi zdPg*Fjy_TvTzcfP`_to(k)Fx(+z|UENGBR*o-E*npx^grh%zTii8tzretjW-WpTfl z2-Q=kGB!0M|Ai*q+*_*^yBLiTKjY5;OdKv{7p>Tz&NMUiZ_l~^uKcT^@U2B1I^C^_ zJTvGKsJy#&6zvrBj0?vpjmA~2dXUU-jeg=b@GDyc!D{W~-8 zn1RvV=6@^w+X5H!J>rR00cgIq=-99cpW4OF%$QHS&COm6b##{U0j?GDX`cLV{OT<8 zfH!JQO%p(OlDw-4pgPtjvQ(w~Coxmh5}vj3O?*=X`k5?w9DP&cO$eJLMRnuQ5C3Mo z)#)EYJ)NI$Sh3;G-KkR*>S_Q(Sz+VeK1yA3%Q#ePf*g;c7aulZGK?{WqwF?Vw4a3m z=}Do0zuBsP&?YmP|D!$k?OiE;5cVt>18eHnx$vw}EES!lLxUahk2F5=;>;^(UQQrxm2cKx_pWug=!l1tQ`5c+WT>I6qN^Xe|Hj~f6*6VsG(2oQT6YV7yL@&a{B9^OLU~GIW$d(J~Ni%2w-co z^HgrZ9Mp=+7t8HF>{GQQ_kaO`=FaUBkzH#0t{rE+9GB4vSiB^nHRmB0r{vX%t5-@Y zLPvfcb!Kc2b82kmES3dq%$~`q*;@n+6SZM-Jvx`4ERDx1W+|D*rCn1>_e$(BzX*r3 z@0m2cjV)8@dR7j#bn-h+^Z4n^;g&x2V#T^i;lENDRMvbOKnSn=nc+il6Y_H8&Ds1c*< zT=AV5XGO`RNs|Wk>OrqAK8#!ymEAy|oBC%HB#_si51^iBG#aimyFj*O5!kPqy>OBFIq-(EgCGZ2VOPv16lN zWq8Jl>za%EOerm))DKv)j_2P$r!1ROPd6I4x`Ml(-JCW>Y^-+)C{r+Hd4GiQ@2sU= zDq5p9u3r&(oD=F7UTt;g{w>nn(=bQMQBOO#gDGf$@Vj?-k@tLwbYMbDB1%uIuF_O# z#hIrTb-h12IPOV=&gFIQ_GHW;6=;ZvgG%~4TV;xnr&${jH*d|zVWS6l-l(fPFnwUZ zPt=@#@b1yD?`70Qe_6{YTu8Zuz`wc*vP-^&eM36w4aG#oym#%0z%lK%-y1c;)b;i*1FL$p)nkGyzIiZtZ<#T^XyEkL5>f zi*VQJEDR(#h;DZ=a@=%d_9Yg0y{QG>+1Kk#ciKm8HPYv&#zKr(JNQG0Y}kM_;2`sD z*)ugwMEnPo^}lEb(A&}o^S0zv;NvUPf>jQaEC^ajqZB`M(5FD0%(02Q_0i+S6xKD7 z;fVO_`{A563cNYF&Z3}Q0uywQ7+ua;Trz&%R(Q)-1t)$P2Ix7F${rvk*kUJ4-Vbh7 zqk?yjFApbjq9c|z*V<@FoCG`iA2_F($N=y|sJkK0{tOtg|Ky@g?6BkMxo!j$yhbaV zP{Pp{Jx1eKRH2;!a?f;qQAIP#V9isVs79XU0w=#z?xR}zCSl1c3M{CuK@VQ6w$rl~{#wLI! z_}RcIPGT&OD0nuj&IqBxG6Nh}Lo@gh1@@U`A1&Q+3j+~$4d0Vf&Y@fky?~E$c?8*N zw}8L+%ZIcD%)Whc|5Y+IVc^)DZeo?w` z;)xi07G-xSBJ6=(g>5)cvMlsrb?nDy9^>iL7Q9d&BQ1!JIts`#hEwkYe>Oz z*JnSdj)egg6*~Cr*dHIv4-G0RFq&RU_)uYIO#)VFh5$3SyY-@iCld2EBq6X;sa@ve zc*K6j_QO(aS-M11dUJBP!^NUdUKFb{O&9O2#4Py;-`y~FahqAJzP~*k0ftstWs3`{z?!K-hwWj zPcOPKY))@4i2gx56k6^SB3n{}itCTW$KnD-IAod+N5<2Itdyf~f#13YW?<=YHeQuK-0FX2( zS>e}IdOd|3o0Z%Ej6wp%JK``qMm%O>oIGXpC-sI&#+%j+z5JFEI~&YdImbCsj^t?Rlh7nnqy3$hyphWRr0wS9WbbQ-*VI{Kf2<0!UJ>ofh*_)ehG|CH)06mM z-%NNEg%|gQGzXDHhZ-Tw-)_9hV^5~M-KR7ltwcm#;kPLv%#4%t!vlESr| z$s>>1LCKd}mV4NRYYElb8vsI$XR}W-txghnNNS;EQbS;lM+p9=O&k>VKv8UcY$;XYr9Nm>u^qY0K3rgXkRmXU+-ebMLH) z0gkCB0#PI63I|gl*rXVsb7d|G)t0FvNIT-nRw}#X$S@F8dV9LE?SBiLRomRTcwfr} zA9w8LxW~vT56Ef!vK%qsJ7W$Z?en8XIX4+%1(q zz8S9tf+tv$9e<=uTym3IcZ3Z<+xN7l9$n~o(7 zqV}V8ZQ}^-KKEG&1$wdKT&u3>!Skt4?i4IC`x1*IOO_%BD zeUduTK^a_&lV@SBL|X^&pOl-In1@bt=uIu;so6!#E6*RX5&{AeD!A*=<7ym2N0yy~Nfg)`MJFAGz%q-@;@SMI>Z1xP^ z6X-xAb6N7*mq>KSXM=q;$w;sf5|q~Wj6JyO-rLcepPwy0bi(Z9RYG+Jw-Fy6oMaV7 zYGl*cn`=l5hz{)*%FMkSF6E5CR@wc6{&SD5_a*|~%PxBwwl;$^wMa6_q)|GZYSQ+z zOo$V^j5rk|onHBc@;d6tHKE03@}v-6SQ89li*3msE^z7WFpZOj`F-AW9B0Hrne9~} z+64;=%~$t`M|{{{Skp&I|2NKJ^LR`LP8F=ff3eS3xC@==K^AW^;u9t9hQZi?Iw5;c5c9yrU&RLgcf$uzf5jArG zz|RAI;_?DNa{L6GzuGw72zwJA`@SDR!1ObJ0pBl7?>jQj)xV{;&VPfm`3kWpte{YK zYHIZd-xxY#p15ZHk;jGUdhWO%)BJtE=KXz7zy5Ch1>QgY?aKqaR1Nh3-mb;!%e2?) z`KVTlfsh-yexO@JYgExKdNbR1Z6N~(d!DkfK1Xx;5gX&Uehwmp;Ooe7jxH}Jd>=Ua z)EqgG5B3^}P<;+DW_|I<)HP-O3~GB*92@&)qc@+0+EN!;z?a9`uez}X-E~Pre;gz!Z6mj)gJ>`?%TX+2=SE5hhadQrLoBX0S!PGf*t*10Rs*iPT>Zt1kw zu4#i#9&#e*E|{h)R7cyTbKA*2VzvLtZKCpV3ER=3_KnIR+6ilII@1mGPmO$KBewC=3vyJSfvVm7w3ppMAn*Qu?{^uTm%Cdu+8r7 zOTTGL=FDIG)8G7?;`#SFC&nG9W?qE$YJ3Tyl@p`1pP2&2v-fD*y_(h?n`X!BxG$8d zW-g2eX&4TQj#?)a8dHUZeA3joSYeuB+*PQF4EeskK+xwtG6Q>s#PyM_1pm16i zNs+H_PL)7cDVa{WMhQF6j9eEU!l%a24CHk&$Zy|}{S^TIh$Hl8kvkMj-dXplP(@4v zUL|9BgNjDc!GJqET(~mf`ov1VyqQt`*v<5}S=9Z|n50N;FFyxt&`Ux;pEh+mi{5ot zOk^P179rJ^Ui_ZkfvXUQWlL)UXD{-X{~7tGzt^W5`I;f5}&k3?KdM1w}O-f zVvi^0FE>suOoc(dClcPf=qCDtQBg-O7+&KR1>P!fIl2hBib;K`Y0X)tQwbY)6}_ao zf#VzWx8n9FPLSJ?F&=|6?s;{++Ya6!fDh2T`%((d>)!pz04Q|Uz>Gkv&$@i9Iw*_- z5FxkFokU9D7Bw6tXEByvlzbsm6ED~LcoOE{xOTx$ArNZ^Pjy87sL!6XLOb9e*+Rf7 zV|;cAY1)3x@0`tjUAhpGX;wYvIr3T_*jnW1TDOw3lv;yxC_h}hsvu@+x36 zbo!vrrDmw;GB}4ItE2%W86;pBi zt5Ff|O}_>ZsSXtgorH~6Oh47gt#-Cq3tZNmca0 zqP~S8pmx9lU-?4)0l9Q?-x@n+DAR2#)=b|{pZt9L6*(3q`S14?YcQi>mGVKr`fWdx zYJIHg%jUI>xJ{{v!L}=VKH$X08P=|hm`E~jC+Eu`fb04o+WXU_9r(V|r0-vA3f`*i z-pK?N)Fqg(gwY^97aQnHsU8sRKj1AiS^!#pS&Cqh&heHuYRmL3a2bS_BXJHhrPg*& zt*VK#yuOb!_n@~fN>;mSUzPi8xhKJ02U1P4Vi6L-Anh%^iXwXd~y)CDkmF0~v@cpZ%LTWO&?qV%k`=jP!#*~Bc;T5Fj1!4#%7yIzfS^Mu8e z*TYrxA$Jc_1Tu4H&pkY);lO1`&MPS^;4B-dicv4ld^wNiuL<4F3(S^Nl{X|;f-PKB zFv$>I1g7VQc5PbSuzR;@f4VtC@1SVsn3efzi}Tc^ti2#AL~HXCBs%VlmynC(O^>Dv z#mwTj&>e#W7m>D1CZcc~5&8-zUY0TQFlXNm5DQx)5!iInsV5@`UNV$IfWA@>o%W-S z*kF5v8B`>b;kl0J2jCpSfm16E6UjFj6`=@}@RgQ>p$Yz9_ z5fNO>+X@;IBPl>JMt{x+^J&>e5I&23xYcymjxxuW;Pov3f)k0NJPmrL)naXTwbv4Q!qrKMYFu=eG9RENmahqwjbMORw&10$%}}sO zxGdc;>?T95O|q8Gx>d@G1Wm74Xslts4BFF^`&Jj(Q9fO}vKiTL3~9C~kO^(@9Ri5w zJ!EEHu9T<~25X@TsMBLe0e0-z*gp90%)jS>{KC09At?7wghb)Edn&QHxPi zg-aXc0#Axj^f#XH{b)MY6Rr^iKKl=U-=4PGvr4cfws+7zr`e8!@LR1^S<6$aqZ?*N z_&+?aG;}&Wrqw$!?q*m(G9Cq7iFCH!_UN907H!@ak9|E&_rP{XAabNjq7H~;_V*P{ zwtbA=iZE^H-mN9vGOr1e*#>40L^DSqVvDwx$x!SHJE|?Uk~r=`KUs>kcQ5f?rlG-Kf`EA? zhEafd;!gS+S-V_l#8>ug%v5e-hB}eA0U!SRje!UWPS?3W{j9qYDm7}wF9lB9EZ2p= zK16g>e)C^ziqAx5J%ag9dt0MQ`5N!TDoY|~O3W~?0QORs=lvUKGZNGQb|)AaLA zRloxShUz#1>2h5eF$79IeQ&w=trn(bgo$5FV0!P5ae7?CD{4;CE$s*iYyH#!wjj?g zD9HUYY6?U+JI?2;4Nh6Ysf^o6Pi%?Qb95)uPqG?422U+QrwhEkJdC=#N{4AC;$3vw zy4gFG=HLOcqsR?wR_z|~<}`lm&_=Hifz$Wu#(-*K`H_eLxK!r3oMc%+yF>XR<#$o* zTs+9B@Bid1+=>5-8|mhJLq?22u?3WKM{n(Qq^@%TnfOOCRQtd`nLh?Z+3LuZ*wTlg zh&-&+c!1wHKs1-d`@!Wi_+`T}0yFI6jt+j7D@~e~_2h=HYwn(Z6eTzW-)Wvp8l=RC zR>$kb^5{|UQ>(HbM<)8`q-)M}ymZRIfjwO79=DeS&aE+f$o123oW;{wv2sGjxlC+l ztZ!bFKYbzR28o(=N0vRJDKR9tS75dPwOKT_lF}Nag9Y80TLkez>P{m*Y?=+L2oHf> zgM|wLttejZ6|XxBLgf#_8>fE#2e|9j6%{#NHH(@WGraPFd#XNB(LGls| zGw>vajYJdgU1O{u;9nq>NHC)Z$RZw`-K0w1(Z8RYnK63Bh2*VDx(*7VTkCBx!b;i1xyK|;@G{^Dg-!`R!jB}H zD@Jazky14osQiF{iX(wD_Ylxb>24!*t*33;&ig6%T1q=|pmA{-AA z!W#!qLLp(=S`+5kO7oye-YHDo+zNIeNLFAmcL!!L_a89y3%tpcdz1d#(}OT!!H%#D zY$04?zjfGy)E=EkVCZ>*3{GIaMP|o^3~XT4L=q0@5O2X2Y*|;)F*xIdtJWsBif-J9 z$G+iJNX!i0EjX&y69(E9CCPtU9+=O~`VHpVWQ!=z=Gx`j%nbI1@8CFZI=uN|w;NJt zP>7!8ByKWv9cd0zEneQ$1LDLim8`>+KuRWIL+~D+}-g76T>jg>SLU$YD1q>X_ZqYJ&-A&M+|w45}6U?4cpWb zOBn8Rl{d30j0rJD;O#}lWfSr4@_!RwNV1Fl<}pc+B7LC$n*9SC&p0x3YQiIQimsmM z7R$p7{#hlAlWE%4c7k*A#UP5vPAtQf;B~R$1!lAN<%LNrkzY=S!@e4 zY|GoZ^-y-rlHO-+=;tN#Bz8(U0V1SJ9o4NvRG&GMgAF=2 zUMUduxe;^&DI1iG?-rZ%PZFLLJ)v)Eo}q7UWDDcy zUF8aM(4XGw6s1RXfwPaL@gi#HdE#gt&1_8R8+1$7bMx5G#%^<%+rI8#gM;#TIlJM0 zT@Ahv@Lt{MeX-7!h^_fnxAis{e?F`8uI|k7ul`HiS%2H@Eq(OONzi{0+UqR{)|;Fs zc3o5P@_AQl&U*Es51vBt!nOP4Dtt`!V4~PNitSCUHe$WoG0}(ml#Cem-Smk^$k1#I4$cWR^zC;)Hpx2pM zYNGTPED0>v748VKLXCDqI%-&cQeP@7rX|&p;i!=ylxb69+pT)?^w{Cf#`~1}f)hq; z3F6FSOfMhTURkz(KpvFyILG$rd46clG$B}+5|NNowJTL?YLzui1=~sqY<6PrxU9{3 z21**e=(ItP!vW*I6(NaCrRqYq=We~~GUeKh zr$tWZeJ)nUK1fGIQA7oFC!o~NJwLZMrG)w|phB|$SoqKLbK-u^_o18}uYomPEO@}n zd2$OWZT{udERvBk8qVG3XMPQoIhHqT`w`;VpEEh8?3u7$Bv^jby|6K^Q#Mb`=K9<4 zB3#*8iPgb`o!|P-SU}7BN%raH09iBWJ(}tmF%MhP`TT^{QGiJJ?q|GfTgR4kk5ag2 z|1q{q#<6FBDmD8JBMrtr6D!G?o|L__RRUwD(mM{N77U#?;$uK6y(8>;iJAxB58}I2 z!QWj9+sEva;Pg9{xscpWQbBGnUxx%JJ$L?GXxJ2bPFta^yXg- zrDnNA0uY86b(#MLPbOXP@&mJYG(DP|Pn--Vp!*dZGN4s@0imU4yN+PY!V6|gXA*8c zP-g}XE@fq9Nc+Q%krh>dpPq(C15A?cI=7y8T>=^HTYP0ym2*2Nqs1}ueyDw)q`83* zoG5p)-Rqb@Nal(qkzlc-w$D7#SHpQHJ07|+Wi$crqL%@;u8r=UZCm#d<^9dLpr)JH zC1>u#vo++8*E1pJ5a?pW!&^mX!PC%AM>5wBggn3-?WYU(+l9Wj+?m_w>NDMYYnEN} zy}G+wcfWSu^y(~5RQc^pxdVf;#tz}Z;8@?sBez0f1g>{RVVpdpLIa+Q6LOXOT5I`R z4tJa-Ma2i^Towm`tf1(=7k)78?A_|$hI*OME2yw0xFyCZh$79}b$e(VJ+ymyk!7*^ z=!9SoK+yQX6y`^rdLGUizxY0+$}|5iqy_gefJdgS8s!4TMLo%Xu9|8SoITABl6Q^?vHi{qdod%B;(!taCuU}K} z4m0zab{`JIwS@*5q(mkEOh%|s{;(_>PaG|*;m9T_Ae^LiVX`6WPpsj28AJqG%U*8j=$EbuDWY94j*i`lOJIfH5kH7(z#*s<`&-YQ#i@2O`j;4Wd!S-}b~LS9obvE>*P^EaiwetfieiUx$271oM%%Ig<@7&g3+M z>a9#Pmm|~{zq2oI?c$a#KFk>msCaT|*TWoy83qI#$HToBk~~Iu zezQ9}&P!R6fuj#C8!gshGjQ?=XWE3H+DW^JF zR_L^3srhp~K%K1~zbLE2kur(Il_r1j#7ek5F9ErKhsENy3%!82N*H1{{j)FJYIJgj zlt+O%NW-BphU(4=U3_*O<*f)Fe$-ia5U6AV0*4-Z|JuXMZxf-u%lZleeGh?Msj*j= z#3kW^Y;E|vC@G3M=9v(Q$){Dh!2mI8!7)yvdz@T@$LTF0O2k{G~60%=P1}o_IKnBq29H0emP(x*rZB zF(-HDlg?(v8>urDmUokLN5>>3SVL1lFo|B7usPbe#p8w#d*0u}M(QrEw|9ktALsG$-lHGmF(k|U;vjwyWLu1#9r+U^1TApwAa|O?FBh-6`t}zZ)L~FF zHn~YM`Y1k)gf_&ae-&}hlQ?UCf%6Cfn{h*+>jhW1#x7K-w}a;3gs17~?Z%L=Gya;Y z=xhq?0H5!b&E5rbT8OPm9X-Mc9X6LZirVHR7ov)W{uk&b?y#aGY6EJh!yQiPG5S`0 zz*|4vffK8tV5LzU1h4ps&wk?YhWXUfAz#6^6NqAi=sABQmAPhW!Zl1X7GBNL+6gko bn{i?x=>G)R|6Sw12>cg;|03}J5CZ=T&|v8u literal 0 HcmV?d00001 diff --git a/vendor/bundle/ruby/2.5.0/cache/eventmachine-1.2.7.gem b/vendor/bundle/ruby/2.5.0/cache/eventmachine-1.2.7.gem new file mode 100644 index 0000000000000000000000000000000000000000..708d366b8f4b2cb9549442aa4f67d06c4ab04aa0 GIT binary patch literal 247296 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